aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Voss <mail@thomasvoss.com> 2024-02-13 13:02:28 +0100
committerThomas Voss <mail@thomasvoss.com> 2024-02-13 13:11:47 +0100
commit79e6af86ca526d5fb56af6f6ca3da713e3a5e9f9 (patch)
tree752f1c26d1f122dcf58374ac78db109c9578be45
Genesis commit
-rw-r--r--.gitignore15
-rw-r--r--LICENSE14
-rw-r--r--README.md6
-rw-r--r--cbs.h953
-rw-r--r--make.c270
-rw-r--r--src/NOTES7
-rw-r--r--src/c8asm/assembler.c74
-rw-r--r--src/c8asm/assembler.h10
-rw-r--r--src/c8asm/common.h16
-rw-r--r--src/c8asm/grammar.ebnf46
-rw-r--r--src/c8asm/instr.gperf33
-rw-r--r--src/c8asm/lexer.c204
-rw-r--r--src/c8asm/lexer.h28
-rw-r--r--src/c8asm/lookup.h190
-rw-r--r--src/c8asm/main.c109
-rw-r--r--src/c8asm/parser.c627
-rw-r--r--src/c8asm/parser.h122
-rw-r--r--src/common/cerr.c73
-rw-r--r--src/common/cerr.h19
-rw-r--r--vendor/da/da.h121
-rw-r--r--vendor/librune/.gitignore12
-rw-r--r--vendor/librune/LICENSE14
-rw-r--r--vendor/librune/README.md60
-rw-r--r--vendor/librune/cbs.h954
-rw-r--r--vendor/librune/data/GraphemeBreakTest.txt1187
-rw-r--r--vendor/librune/data/emoji-data.txt1320
-rwxr-xr-xvendor/librune/gen/gbrk114
-rwxr-xr-xvendor/librune/gen/mkfile37
-rwxr-xr-xvendor/librune/gen/rtype-dt98
-rwxr-xr-xvendor/librune/gen/rtype-equideo64
-rwxr-xr-xvendor/librune/gen/rtype-gc107
-rwxr-xr-xvendor/librune/gen/rtype-jg69
-rwxr-xr-xvendor/librune/gen/rtype-jt97
-rwxr-xr-xvendor/librune/gen/rtype-nt97
-rwxr-xr-xvendor/librune/gen/rtype-nv68
-rwxr-xr-xvendor/librune/gen/rtype-prop155
-rw-r--r--vendor/librune/gen/rtype-prop.awk72
-rwxr-xr-xvendor/librune/gen/rtype-vo100
-rw-r--r--vendor/librune/include/builder.h35
-rw-r--r--vendor/librune/include/gbrk.h10
-rw-r--r--vendor/librune/include/internal/common.h29
-rw-r--r--vendor/librune/include/internal/gbrk_lookup.h1568
-rw-r--r--vendor/librune/include/internal/qmacros.h25
-rw-r--r--vendor/librune/include/internal/rtype/dt.h878
-rw-r--r--vendor/librune/include/internal/rtype/equideo.h365
-rw-r--r--vendor/librune/include/internal/rtype/gc.h3296
-rw-r--r--vendor/librune/include/internal/rtype/jg.h230
-rw-r--r--vendor/librune/include/internal/rtype/jt.h560
-rw-r--r--vendor/librune/include/internal/rtype/lookup-func.h58
-rw-r--r--vendor/librune/include/internal/rtype/nt.h300
-rw-r--r--vendor/librune/include/internal/rtype/nv.h1941
-rw-r--r--vendor/librune/include/internal/rtype/vo.h232
-rw-r--r--vendor/librune/include/internal/types.h19
-rw-r--r--vendor/librune/include/mbstring.h41
-rw-r--r--vendor/librune/include/rtype.h289
-rw-r--r--vendor/librune/include/rune.h34
-rw-r--r--vendor/librune/lib/builder/u8strfit.c11
-rw-r--r--vendor/librune/lib/builder/u8strfree.c9
-rw-r--r--vendor/librune/lib/builder/u8strgrow.c41
-rw-r--r--vendor/librune/lib/builder/u8strinit.c18
-rw-r--r--vendor/librune/lib/builder/u8strpushr.c13
-rw-r--r--vendor/librune/lib/builder/u8strpushstr.c17
-rw-r--r--vendor/librune/lib/builder/u8strpushu8.c16
-rw-r--r--vendor/librune/lib/gbrk/u8glen.c13
-rw-r--r--vendor/librune/lib/gbrk/u8gnext.c147
-rw-r--r--vendor/librune/lib/mbstring/rtou8.c38
-rw-r--r--vendor/librune/lib/mbstring/u8bspn.c22
-rw-r--r--vendor/librune/lib/mbstring/u8cbspn.c20
-rw-r--r--vendor/librune/lib/mbstring/u8chk.c21
-rw-r--r--vendor/librune/lib/mbstring/u8chkr.c9
-rw-r--r--vendor/librune/lib/mbstring/u8chr.c97
-rw-r--r--vendor/librune/lib/mbstring/u8cspn.c20
-rw-r--r--vendor/librune/lib/mbstring/u8len.c13
-rw-r--r--vendor/librune/lib/mbstring/u8next.c15
-rw-r--r--vendor/librune/lib/mbstring/u8prev.c39
-rw-r--r--vendor/librune/lib/mbstring/u8rchr.c87
-rw-r--r--vendor/librune/lib/mbstring/u8rlen.c20
-rw-r--r--vendor/librune/lib/mbstring/u8set.c24
-rw-r--r--vendor/librune/lib/mbstring/u8spn.c22
-rw-r--r--vendor/librune/lib/mbstring/u8tor.c31
-rw-r--r--vendor/librune/lib/mbstring/u8tor_uc.c26
-rw-r--r--vendor/librune/lib/mbstring/u8wdth.c13
-rw-r--r--vendor/librune/lib/rtype/riscntrl.c7
-rw-r--r--vendor/librune/lib/rtype/risdigit.c7
-rw-r--r--vendor/librune/lib/rtype/risgraph.c7
-rw-r--r--vendor/librune/lib/rtype/risletter.c7
-rw-r--r--vendor/librune/lib/rtype/rislower.c7
-rw-r--r--vendor/librune/lib/rtype/rismark.c7
-rw-r--r--vendor/librune/lib/rtype/risnumber.c7
-rw-r--r--vendor/librune/lib/rtype/rispunct.c7
-rw-r--r--vendor/librune/lib/rtype/risspace.c16
-rw-r--r--vendor/librune/lib/rtype/rissymbol.c7
-rw-r--r--vendor/librune/lib/rtype/ristitle.c7
-rw-r--r--vendor/librune/lib/rtype/risupper.c7
-rw-r--r--vendor/librune/lib/rtype/rprop_get_dt.c16
-rw-r--r--vendor/librune/lib/rtype/rprop_get_equideo.c17
-rw-r--r--vendor/librune/lib/rtype/rprop_get_gc.c16
-rw-r--r--vendor/librune/lib/rtype/rprop_get_jg.c16
-rw-r--r--vendor/librune/lib/rtype/rprop_get_jt.c16
-rw-r--r--vendor/librune/lib/rtype/rprop_get_nt.c16
-rw-r--r--vendor/librune/lib/rtype/rprop_get_nv.c17
-rw-r--r--vendor/librune/lib/rtype/rprop_get_vo.c16
-rw-r--r--vendor/librune/lib/rtype/rprop_is_ahex.c17
-rw-r--r--vendor/librune/lib/rtype/rprop_is_alpha.c767
-rw-r--r--vendor/librune/lib/rtype/rprop_is_bidi_c.c29
-rw-r--r--vendor/librune/lib/rtype/rprop_is_bidi_m.c148
-rw-r--r--vendor/librune/lib/rtype/rprop_is_cased.c191
-rw-r--r--vendor/librune/lib/rtype/rprop_is_ci.c471
-rw-r--r--vendor/librune/lib/rtype/rprop_is_cwcf.c656
-rw-r--r--vendor/librune/lib/rtype/rprop_is_cwcm.c165
-rw-r--r--vendor/librune/lib/rtype/rprop_is_cwkcf.c873
-rw-r--r--vendor/librune/lib/rtype/rprop_is_cwl.c643
-rw-r--r--vendor/librune/lib/rtype/rprop_is_cwt.c660
-rw-r--r--vendor/librune/lib/rtype/rprop_is_cwu.c661
-rw-r--r--vendor/librune/lib/rtype/rprop_is_dash.c57
-rw-r--r--vendor/librune/lib/rtype/rprop_is_dep.c33
-rw-r--r--vendor/librune/lib/rtype/rprop_is_di.c51
-rw-r--r--vendor/librune/lib/rtype/rprop_is_dia.c229
-rw-r--r--vendor/librune/lib/rtype/rprop_is_ebase.c65
-rw-r--r--vendor/librune/lib/rtype/rprop_is_ecomp.c44
-rw-r--r--vendor/librune/lib/rtype/rprop_is_emod.c26
-rw-r--r--vendor/librune/lib/rtype/rprop_is_emoji.c185
-rw-r--r--vendor/librune/lib/rtype/rprop_is_epres.c106
-rw-r--r--vendor/librune/lib/rtype/rprop_is_ext.c67
-rw-r--r--vendor/librune/lib/rtype/rprop_is_extpic.c112
-rw-r--r--vendor/librune/lib/rtype/rprop_is_gr_base.c909
-rw-r--r--vendor/librune/lib/rtype/rprop_is_gr_ext.c388
-rw-r--r--vendor/librune/lib/rtype/rprop_is_hex.c40
-rw-r--r--vendor/librune/lib/rtype/rprop_is_id_compat_math_continue.c52
-rw-r--r--vendor/librune/lib/rtype/rprop_is_id_compat_math_start.c38
-rw-r--r--vendor/librune/lib/rtype/rprop_is_idbo.c28
-rw-r--r--vendor/librune/lib/rtype/rprop_is_idc.c803
-rw-r--r--vendor/librune/lib/rtype/rprop_is_ideo.c46
-rw-r--r--vendor/librune/lib/rtype/rprop_is_ids.c694
-rw-r--r--vendor/librune/lib/rtype/rprop_is_idst.c8
-rw-r--r--vendor/librune/lib/rtype/rprop_is_idsu.c8
-rw-r--r--vendor/librune/lib/rtype/rprop_is_incb.c225
-rw-r--r--vendor/librune/lib/rtype/rprop_is_join_c.c8
-rw-r--r--vendor/librune/lib/rtype/rprop_is_loe.c32
-rw-r--r--vendor/librune/lib/rtype/rprop_is_lower.c705
-rw-r--r--vendor/librune/lib/rtype/rprop_is_math.c172
-rw-r--r--vendor/librune/lib/rtype/rprop_is_nchar.c10
-rw-r--r--vendor/librune/lib/rtype/rprop_is_pat_syn.c62
-rw-r--r--vendor/librune/lib/rtype/rprop_is_pat_ws.c25
-rw-r--r--vendor/librune/lib/rtype/rprop_is_pcm.c32
-rw-r--r--vendor/librune/lib/rtype/rprop_is_qmark.c47
-rw-r--r--vendor/librune/lib/rtype/rprop_is_radical.c28
-rw-r--r--vendor/librune/lib/rtype/rprop_is_ri.c8
-rw-r--r--vendor/librune/lib/rtype/rprop_is_sd.c68
-rw-r--r--vendor/librune/lib/rtype/rprop_is_sterm.c115
-rw-r--r--vendor/librune/lib/rtype/rprop_is_term.c142
-rw-r--r--vendor/librune/lib/rtype/rprop_is_uideo.c42
-rw-r--r--vendor/librune/lib/rtype/rprop_is_upper.c685
-rw-r--r--vendor/librune/lib/rtype/rprop_is_vs.c29
-rw-r--r--vendor/librune/lib/rtype/rprop_is_wspace.c44
-rw-r--r--vendor/librune/lib/rtype/rprop_is_xidc.c810
-rw-r--r--vendor/librune/lib/rtype/rprop_is_xids.c701
-rw-r--r--vendor/librune/make.c159
-rw-r--r--vendor/librune/man/Lb-desc.tmac1
-rw-r--r--vendor/librune/man/rtou8.31
-rw-r--r--vendor/librune/man/u8glen.362
-rw-r--r--vendor/librune/man/u8gnext.369
-rw-r--r--vendor/librune/man/u8len.370
-rw-r--r--vendor/librune/man/u8next.3107
-rw-r--r--vendor/librune/man/u8prev.31
-rw-r--r--vendor/librune/man/u8set.3103
-rw-r--r--vendor/librune/man/u8tor.390
-rw-r--r--vendor/librune/man/u8tor_uc.31
-rw-r--r--vendor/librune/man/u8wdth.369
-rw-r--r--vendor/librune/test/gbrk.c85
-rwxr-xr-xvendor/librune/test/tests39
171 files changed, 32614 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..239b64f
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,15 @@
+# Autogenerated
+.cache/
+compile_commands.json
+
+# Configs
+.clangd
+
+# Test Files
+test.s
+
+# Compilation Output
+c8asm
+!src/*
+make
+*.o
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..129da11
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,14 @@
+BSD Zero Clause License
+
+Copyright © 2024 Thomas Voss
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED ‘AS IS’ AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..8677a49
--- /dev/null
+++ b/README.md
@@ -0,0 +1,6 @@
+# Ahoy — The CHIP-8 Emulator and -Toolchain
+
+
+### Where does the name come from?
+
+The ‘Chips Ahoy!’ cookies.
diff --git a/cbs.h b/cbs.h
new file mode 100644
index 0000000..3fc854d
--- /dev/null
+++ b/cbs.h
@@ -0,0 +1,953 @@
+/* Single-header library to help write build scripts in C. This library is
+ POSIX compliant, so it should work on all respectible UNIX-like systems.
+
+ You can find the CBS git repository at https://git.sr.ht/~mango/cbs and you
+ can include this in your project with the following command:
+
+ $ wget 'https://git.sr.ht/~mango/cbs/blob/master/cbs.h'
+
+ This library is licensed under the 0-Clause BSD license, and as such you may
+ do whatever you want to it, however you want to it, whenever you want. You
+ are encouraged in fact to modify this library to suit your specific usecase.
+
+ All functions and macros are documented. You can figure out the API pretty
+ easily by just reading the comments in this file.
+
+ In many cases you may want to be able to execute commands on multiple threads
+ to speed up compilation, such as the -j option when using Make. Functions
+ for creating and using thread pools will be made available if the CBS_PTHREAD
+ macro is defined before including this file. Do note that on POSIX platforms
+ it will require linking to the pthreads library when bootstrapping the build
+ script.
+
+ This file does not support C89. Fuck C89, that shit is ancient. Move on.
+
+ IMPORTANT NOTE: Any identifiers prefixed with an underscore (e.g. ‘_rebuild’)
+ are meant for internal use only and you should not touch them unless you know
+ what you’re doing.
+
+ IMPORTANT NOTE: All the functions and macros in this library will terminate
+ the program on error. If this is undesired behavior, feel free to edit the
+ functions to return errors.
+
+ IMPORTANT NOTE: This library is built with the assumption that the source
+ file for your build script and your build script are in the SAME DIRECTORY.
+
+ There are a few exceptions to the above rule, and they are documented.
+
+ This library does not aim to ever support Windows */
+
+#ifndef C_BUILD_SYSTEM_H
+#define C_BUILD_SYSTEM_H
+
+#ifdef __GNUC__
+# pragma GCC diagnostic push
+# pragma GCC diagnostic ignored "-Wunused-function"
+# pragma GCC diagnostic ignored "-Wparentheses"
+#endif
+
+/* Assert that the user is building for a supported platform. The only portable
+ way to check for POSIX is to validate that unistd.h exists. This is only
+ possible without compiler extensions in C23 (although some compilers support
+ it as an extension in earlier editions), so people compiling for pre-C23
+ might not get this error if on a bad platform, and may end up being a bit
+ confused.
+
+ It’s just a maybe though, this is nothing more than a sanity check for the
+ users sake. */
+#if defined(__has_include) && !__has_include(<unistd.h>)
+# error "Non-POSIX platform detected"
+#endif
+
+#ifdef __APPLE__
+# define st_mtim st_mtimespec
+#endif
+
+#include <sys/stat.h>
+#include <sys/wait.h>
+
+#include <errno.h>
+#include <libgen.h>
+#include <limits.h>
+#ifdef CBS_PTHREAD
+# include <pthread.h>
+#endif
+#include <stdarg.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <wordexp.h>
+
+/* C23 changed a lot so we want to check for it */
+#if __STDC_VERSION__ >= 202000
+# define CBS_IS_C23 1
+#endif
+
+/* Some C23 compat. In C23 booleans are actual keywords, and the noreturn
+ attribute is different. */
+#if CBS_IS_C23
+# define noreturn [[noreturn]]
+#else
+# include <stdbool.h>
+# include <stddef.h>
+# include <stdnoreturn.h>
+# define nullptr NULL
+#endif
+
+/* Give helpful diagnostics when people use die() incorrectly on GCC. C23
+ introduced C++ attribute syntax, so we need a check for that too. */
+#ifdef __GNUC__
+# if CBS_IS_C23
+# define ATTR_FMT [[gnu::format(printf, 1, 2)]]
+# else
+# define ATTR_FMT __attribute__((format(printf, 1, 2)))
+# endif
+#else
+# define ATTR_FMT
+#endif
+
+/* Clang defines this attribute, and while it does nothing it does serve as
+ good documentation. */
+#ifndef _Nullable
+# define _Nullable
+#endif
+
+/* Convert the given variadic arguments to a string array */
+#define _vtoa(...) ((char *[]){__VA_ARGS__})
+
+/* Internal global versions of argc and argv, so our functions and macros can
+ access them from anywhere. */
+static int _cbs_argc;
+static char **_cbs_argv;
+
+/* A vector of strings used to accumulate output of functions such as pcquery().
+ The array of strings buf has length len, and is not null-terminated. You
+ should always zero-initialize variables of this type. */
+struct strv {
+ char **buf;
+ size_t len;
+};
+
+/* Free and zero a string vector. Because this function zeros the structure, it
+ is safe to reuse the vector after this function is called. */
+static void strvfree(struct strv *);
+
+/* A wrapper function around realloc(). It behaves exactly the same except
+ instead of taking a buffer size as an argument, it takes a count n of
+ elements, and a size m of each element. This allows it to properly check for
+ overflow, and errors if overflow would occur. */
+static void *bufalloc(void *_Nullable, size_t n, size_t m);
+
+/* Error reporting functions. The die() function takes the same arguments as
+ printf() and prints the corresponding string to stderr. It also prefixes the
+ string with the command name followed by a colon, and suffixes the string
+ with a colon and the error string returned from strerror().
+
+ If you want to print just the error message and no custom text, NULL may be
+ passed to die(). NULL should not be passed to diex().
+
+ diex() is the same as die() but does not print a strerror() error string. */
+ATTR_FMT noreturn static void die(const char *_Nullable, ...);
+ATTR_FMT noreturn static void diex(const char *, ...);
+
+/* Initializes some data required for this header to work properly. This should
+ be the first thing called in main() with argc and argv passed. It also
+ chdir()s into the directory where the build script is located. */
+static void cbsinit(int, char **);
+
+/* Get the number of items in the array a */
+#define lengthof(a) (sizeof(a) / sizeof(*(a)))
+
+/* Struct representing a CLI command that various functions act on. You should
+ always zero-initialize variables of this type before use.
+
+ After executing a command, you can reuse the already allocated buffer this
+ command holds by calling cmdclr(). When you’re really done with an object of
+ this type, remember to call free() on ._argv.
+
+ The ._argv field is a NULL-terminated list of command arguments of length
+ ._len. You may safely read from both of these fields but they should NOT be
+ modified without use of cmdadd() and cmdaddv(). */
+typedef struct {
+ char *dst;
+ char **_argv;
+ size_t _len, _cap;
+} cmd_t;
+
+/* Returns whether or not a binary of the given name exists in the users
+ environment as defined by $PATH. */
+static bool binexists(const char *);
+
+/* cmdadd() adds the variadic string arguments to the given command.
+ Alternatively, the cmdaddv() function adds the n strings pointed to by p to
+ the given command. */
+static void cmdaddv(cmd_t *, char **p, size_t n);
+#define cmdadd(cmd, ...) \
+ cmdaddv(cmd, _vtoa(__VA_ARGS__), lengthof(_vtoa(__VA_ARGS__)))
+
+/* Clear (but not free) the command c. Useful for reusing the same command
+ struct to minimize allocations. */
+static void cmdclr(cmd_t *c);
+
+/* The cmdexec() function executes the given command and waits for it to
+ terminate, returning its exit code. The cmdexeca() function executes the
+ given command and returns immediately, returning its process ID.
+
+ The cmdexecb() function is like cmdexec() except it writes the given commands
+ standard output to the character buffer pointed to by p. It also stores the
+ size of the output in *n. The character buffer p is null-terminated. If the
+ given command produces no output to the standard output, p will be set to
+ NULL.
+
+ cmdexec() and cmdexecb() have the same return values as cmdwait(). */
+static int cmdexec(cmd_t);
+static pid_t cmdexeca(cmd_t);
+static int cmdexecb(cmd_t, char **p, size_t *n);
+
+/* Wait for the process with the given PID to terminate, and return its exit
+ status. If the process was terminated by a signal 256 is returned. */
+static int cmdwait(pid_t);
+
+/* Write a representation of the given command to the given file stream. This
+ can be used to mimick the echoing behavior of make(1). The cmdput() function
+ is a nice convenience function so you can avoid writing ‘stdout’ all the
+ time. */
+static void cmdput(cmd_t);
+static void cmdputf(FILE *, cmd_t);
+
+/* Expand the environment variable s using /bin/sh expansion rules and append
+ the results in the given string vector. If the environment variable is NULL
+ or empty, then store the strings specified by the array p of length n.
+
+ env_or_default() is the same as env_or_defaultv() but you provide p as
+ variadic arguments.
+
+ If the pointer p is null, then no default value is appended to the given
+ string vector when the environment variable is not present. */
+static void env_or_defaultv(struct strv *, const char *s, char *_Nullable *p,
+ size_t n);
+#define env_or_default(sv, s, ...) \
+ env_or_defaultv((sv), (s), _vtoa(__VA_ARGS__), lengthof(_vtoa(__VA_ARGS__)))
+
+/* Returns if a file exists at the given path. A return value of false may also
+ mean you don’t have the proper file access permissions, which will also set
+ errno. */
+static bool fexists(const char *);
+
+/* Compare the modification dates of the two named files.
+
+ A return value >0 means the LHS is newer than the RHS.
+ A return value <0 means the LHS is older than the RHS.
+ A return value of 0 means the LHS and RHS have the same modification date.
+
+ The fmdnewer() and fmdolder() functions are wrappers around fmdcmp() that
+ return true when the LHS is newer or older than the RHS respectively. */
+static int fmdcmp(const char *, const char *);
+static bool fmdolder(const char *, const char *);
+static bool fmdnewer(const char *, const char *);
+
+/* Report if any of n files specified by p render the file base outdated. If
+ the file base does not exist, this function returns true. You will typically
+ call this with a compiled program as base, and C source files as p. The
+ macro foutdated() is a wrapper around foutdatedv() that allows you to specify
+ the sources to base as variadic arguments instead of as an array. */
+static bool foutdatedv(const char *base, const char **p, size_t n);
+#define foutdated(s, ...) \
+ foutdatedv(s, (const char **)_vtoa(__VA_ARGS__), \
+ lengthof(_vtoa(__VA_ARGS__)))
+
+/* Rebuild the build script if it has been modified, and execute the newly built
+ script. You should call the rebuild() macro at the very beginning of main(),
+ but right after cbsinit(). You probably don’t want to call _rebuild()
+ directly.
+
+ NOTE: This function/macro REQUIRES that the source for the build script and
+ the compiled build script are in the SAME DIRECTORY. */
+static void _rebuild(char *);
+#define rebuild() _rebuild(__FILE__)
+
+/* Get the number of available CPUs, or -1 on error. This function also returns
+ -1 if the _SC_NPROCESSORS_ONLN flag to sysconf(3) is not available. In that
+ case, errno will not be set. */
+static int nproc(void);
+
+/* Append the arguments returned by an invokation of pkg-config for the library
+ lib to the given string vector. The flags argument is one-or-more of the
+ flags in the pkg_config_flags enum bitwise-ORed together.
+
+ If PKGC_CFLAGS is specified, call pkg-config with ‘--cflags’.
+ If PKGC_LIBS is specified, call pkg-config with ‘--libs’.
+
+ This function returns true on success and false if pkg-config is not found on
+ the system. To check for pkg-configs existance, you can use the binexists()
+ function. */
+static bool pcquery(struct strv *, char *lib, int flags);
+enum pkg_config_flags {
+ PKGC_LIBS = 1 << 0,
+ PKGC_CFLAGS = 1 << 1,
+};
+
+#ifdef CBS_PTHREAD
+
+/* A tfunc_t represents a function to be executed by a threads in a thread pool.
+ It takes an argument in the form of a void * and returns nothing. */
+typedef void (*tfunc_t)(void *);
+
+/* A tfunc_free_t represents a function which frees the argument passed to a
+ tfunc_t function. */
+typedef void (*tfree_func_t)(void *);
+
+/* A thread pool job queue. Meant for internal-use only. */
+struct _tjob {
+ void *arg;
+ tfunc_t fn;
+ tfree_func_t free;
+ struct _tjob *next;
+};
+
+/* A basic thread pool. None of its fields should really be touched. */
+typedef struct {
+ bool _stop;
+ size_t _tcnt, _left;
+ pthread_t *_thrds;
+ pthread_cond_t _cnd;
+ pthread_mutex_t _mtx;
+ struct _tjob *_head, *_tail;
+} tpool_t;
+
+/* Initialize and destroy a thread pool. The tpinit() function initializes the
+ given thread pool and creates n threads ready to execute work. The tpfree()
+ function should be called after a thread pool has been used to release all
+ resources used by the thread pool. */
+static void tpinit(tpool_t *, size_t n);
+static void tpfree(tpool_t *);
+
+/* Wait for all jobs on the given thread pool to be executed. Note that this
+ function does not destroy the threads or free any resources — those are tasks
+ for the tpfree() function. */
+static void tpwait(tpool_t *);
+
+/* Enqueue and dequeue jobs to the thread pools job queue. The tpenq() function
+ is threadsafe while the _tpdeq() function is not (so don’t use it). When
+ calling the tpenq() function, the function fn will be queued to be executed
+ by a thread in the thread pool with the argument arg. If the given argument
+ needs to be deallocated after the job completes, you can pass the free
+ argument which will be called with the given argument after use. If free is
+ NULL, it will be ignored.
+
+ The free() function is a valid argument to the free parameter. */
+static void tpenq(tpool_t *, tfunc_t fn, void *arg,
+ tfree_func_t _Nullable free);
+static struct _tjob *_tpdeq(tpool_t *);
+
+#endif /* CBS_PTHREAD */
+
+/* BEGIN DEFINITIONS */
+
+void
+strvfree(struct strv *v)
+{
+ free(v->buf);
+ memset(v, 0, sizeof(*v));
+}
+
+void *
+bufalloc(void *p, size_t n, size_t m)
+{
+ if (n && SIZE_MAX / n < m) {
+ errno = EOVERFLOW;
+ die(__func__);
+ }
+
+ if (!(p = realloc(p, n * m)))
+ die(__func__);
+ return p;
+}
+
+void
+die(const char *fmt, ...)
+{
+ int e = errno;
+ va_list ap;
+
+ va_start(ap, fmt);
+ flockfile(stderr);
+ fprintf(stderr, "%s: ", *_cbs_argv);
+ if (fmt) {
+ vfprintf(stderr, fmt, ap);
+ fprintf(stderr, ": ");
+ }
+ fprintf(stderr, "%s\n", strerror(e));
+ exit(EXIT_FAILURE);
+}
+
+void
+diex(const char *fmt, ...)
+{
+ va_list ap;
+
+ va_start(ap, fmt);
+ flockfile(stderr);
+ fprintf(stderr, "%s: ", *_cbs_argv);
+ vfprintf(stderr, fmt, ap);
+ fputc('\n', stderr);
+ exit(EXIT_FAILURE);
+}
+
+void
+cbsinit(int argc, char **argv)
+{
+ char *s;
+
+ _cbs_argc = argc;
+ _cbs_argv = bufalloc(nullptr, argc, sizeof(char *));
+ for (int i = 0; i < argc; i++) {
+ if (!(_cbs_argv[i] = strdup(argv[i]))) {
+ /* We might not have set _cbs_argv[0] yet, so we can’t use die() */
+ fprintf(stderr, "%s: strdup: %s\n", *argv, strerror(errno));
+ exit(EXIT_FAILURE);
+ }
+ }
+
+ /* Cd to dirname(argv[0]). We can’t use dirname(3) because it may modify
+ the source string. */
+ if (s = strrchr(_cbs_argv[0], '/')) {
+ s[0] = '\0';
+ if (chdir(_cbs_argv[0]) == -1)
+ die("chdir: %s", s);
+ s[0] = '/';
+ }
+}
+
+static size_t
+_next_powerof2(size_t x)
+{
+#if defined(__has_builtin) && __has_builtin(__builtin_clzl)
+ x = x <= 1 ? 1 : 1 << (64 - __builtin_clzl(x - 1));
+#else
+ if (x) {
+ x--;
+ x |= x >> 1;
+ x |= x >> 2;
+ x |= x >> 4;
+ x |= x >> 8;
+ if (sizeof(size_t) >= 4)
+ x |= x >> 16;
+ if (sizeof(size_t) >= 8)
+ x |= x >> 32;
+ }
+ x++;
+#endif
+
+ return x;
+}
+
+bool
+binexists(const char *name)
+{
+ char *p, *path;
+
+ if (!(path = getenv("PATH")))
+ diex("PATH environment variable not found");
+
+ if (!(path = strdup(path)))
+ die("strdup");
+ p = strtok(path, ":");
+ while (p) {
+ char buf[PATH_MAX];
+ snprintf(buf, sizeof(buf), "%s/%s", p, name);
+ if (fexists(buf)) {
+ free(path);
+ return true;
+ }
+
+ p = strtok(nullptr, ":");
+ }
+
+ free(path);
+ return false;
+}
+
+void
+cmdaddv(cmd_t *cmd, char **xs, size_t n)
+{
+ if (cmd->_len + n >= cmd->_cap) {
+ cmd->_cap = _next_powerof2(cmd->_len + n) + 2;
+ cmd->_argv = bufalloc(cmd->_argv, cmd->_cap, sizeof(char *));
+ }
+
+ memcpy(cmd->_argv + cmd->_len, xs, n * sizeof(*xs));
+ cmd->_len += n;
+ cmd->_argv[cmd->_len] = nullptr;
+}
+
+void
+cmdclr(cmd_t *c)
+{
+ c->_len = 0;
+ *c->_argv = nullptr;
+}
+
+int
+cmdexec(cmd_t c)
+{
+ return cmdwait(cmdexeca(c));
+}
+
+pid_t
+cmdexeca(cmd_t c)
+{
+ pid_t pid;
+
+ switch (pid = fork()) {
+ case -1:
+ die("fork");
+ case 0:
+ execvp(*c._argv, c._argv);
+ die("execvp: %s", *c._argv);
+ }
+
+ return pid;
+}
+
+int
+cmdexecb(cmd_t c, char **p, size_t *n)
+{
+ enum {
+ FD_R,
+ FD_W,
+ };
+ pid_t pid;
+ int fds[2];
+ char *buf;
+ size_t len, blksize;
+ struct stat sb;
+
+ if (pipe(fds) == -1)
+ die("pipe");
+
+ switch (pid = fork()) {
+ case -1:
+ die("fork");
+ case 0:
+ close(fds[FD_R]);
+ if (dup2(fds[FD_W], STDOUT_FILENO) == -1)
+ die("dup2");
+ execvp(*c._argv, c._argv);
+ die("execvp: %s", *c._argv);
+ }
+
+ close(fds[FD_W]);
+
+ buf = nullptr;
+ len = 0;
+
+ blksize = fstat(fds[FD_R], &sb) == -1 ? BUFSIZ : sb.st_blksize;
+ for (;;) {
+ /* This can maybe somewhere somehow break some system. I do not care */
+ char tmp[blksize];
+ ssize_t nr;
+
+ if ((nr = read(fds[FD_R], tmp, blksize)) == -1)
+ die("read");
+ if (!nr)
+ break;
+ buf = bufalloc(buf, len + nr + 1, sizeof(char));
+ memcpy(buf + len, tmp, nr);
+ len += nr;
+ }
+
+ close(fds[FD_R]);
+ if (buf)
+ buf[len] = 0;
+ *p = buf;
+ *n = len;
+ return cmdwait(pid);
+}
+
+int
+cmdwait(pid_t pid)
+{
+ for (;;) {
+ int ws;
+ if (waitpid(pid, &ws, 0) == -1)
+ die("waitpid");
+
+ if (WIFEXITED(ws))
+ return WEXITSTATUS(ws);
+
+ if (WIFSIGNALED(ws))
+ return 256;
+ }
+}
+
+/* import shlex
+
+ s = '#define SHELL_SAFE "'
+ for c in map(chr, range(128)):
+ if not shlex._find_unsafe(c):
+ s += c
+ print(s + '"') */
+#define SHELL_SAFE \
+ "%+,-./0123456789:=@ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz"
+
+void
+cmdput(cmd_t c)
+{
+ cmdputf(stdout, c);
+}
+
+void
+cmdputf(FILE *stream, cmd_t cmd)
+{
+ flockfile(stream);
+ for (size_t i = 0; i < cmd._len; i++) {
+ bool safe = true;
+ char *p, *q;
+
+ p = q = cmd._argv[i];
+ for (; *q; q++) {
+ if (!strchr(SHELL_SAFE, *q)) {
+ safe = false;
+ break;
+ }
+ }
+
+ if (safe)
+ fputs(p, stream);
+ else {
+ putc('\'', stream);
+ for (q = p; *q; q++) {
+ if (*q == '\'')
+ fputs("'\"'\"'", stream);
+ else
+ putc(*q, stream);
+ }
+ putc('\'', stream);
+ }
+
+ putc(i == cmd._len - 1 ? '\n' : ' ', stream);
+ }
+ funlockfile(stream);
+}
+
+void
+env_or_defaultv(struct strv *sv, const char *s, char **p, size_t n)
+{
+ wordexp_t we;
+ const char *ev;
+
+ if ((ev = getenv(s)) && *ev) {
+ switch (wordexp(ev, &we, WRDE_NOCMD)) {
+ case WRDE_BADCHAR:
+ case WRDE_BADVAL:
+ case WRDE_SYNTAX:
+ errno = EINVAL;
+ die("wordexp");
+ case WRDE_NOSPACE:
+ errno = ENOMEM;
+ die("wordexp");
+ }
+
+ p = we.we_wordv;
+ n = we.we_wordc;
+ } else if (!n || !*p)
+ return;
+
+ sv->buf = bufalloc(sv->buf, sv->len + n, sizeof(*sv->buf));
+ for (size_t i = 0; i < n; i++) {
+ if (!(sv->buf[sv->len + i] = strdup(p[i])))
+ die("strdup");
+ }
+ sv->len += n;
+
+ if (ev && *ev)
+ wordfree(&we);
+}
+
+bool
+fexists(const char *f)
+{
+ return !access(f, F_OK);
+}
+
+int
+fmdcmp(const char *lhs, const char *rhs)
+{
+ struct stat sbl, sbr;
+
+ if (stat(lhs, &sbl) == -1)
+ die("%s", lhs);
+ if (stat(rhs, &sbr) == -1)
+ die("%s", rhs);
+
+ return sbl.st_mtim.tv_sec == sbr.st_mtim.tv_sec
+ ? sbl.st_mtim.tv_nsec - sbr.st_mtim.tv_nsec
+ : sbl.st_mtim.tv_sec - sbr.st_mtim.tv_sec;
+}
+
+bool
+fmdnewer(const char *lhs, const char *rhs)
+{
+ return fmdcmp(lhs, rhs) > 0;
+}
+
+bool
+fmdolder(const char *lhs, const char *rhs)
+{
+ return fmdcmp(lhs, rhs) < 0;
+}
+
+bool
+foutdatedv(const char *src, const char **deps, size_t n)
+{
+ if (!fexists(src))
+ return true;
+ for (size_t i = 0; i < n; i++) {
+ if (fmdolder(src, deps[i]))
+ return true;
+ }
+ return false;
+}
+
+void
+_rebuild(char *src)
+{
+ char *bbn, *sbn, *argv0;
+ cmd_t cmd = {0};
+
+ /* We assume that the compiled binary and the source file are in the same
+ directory. */
+ if (sbn = strrchr(src, '/'))
+ sbn++;
+ else
+ sbn = src;
+ if (bbn = strrchr(*_cbs_argv, '/'))
+ bbn++;
+ else
+ bbn = src;
+
+ if (!foutdated(bbn, sbn))
+ return;
+
+ cmdadd(&cmd, "cc", "-std=c2x");
+#ifdef CBS_PTHREAD
+ cmdadd(&cmd, "-lpthread");
+#endif
+ cmdadd(&cmd, "-o", bbn, sbn);
+ cmdput(cmd);
+ if (cmdexec(cmd))
+ diex("Compilation of build script failed");
+
+ cmdclr(&cmd);
+
+ argv0 = bufalloc(nullptr, strlen(bbn) + 3, 1);
+ *_cbs_argv = argv0;
+
+ *argv0++ = '.';
+ *argv0++ = '/';
+ strcpy(argv0, bbn);
+
+ cmdaddv(&cmd, _cbs_argv, _cbs_argc);
+ execvp(*cmd._argv, cmd._argv);
+ die("execvp: %s", *cmd._argv);
+}
+
+int
+nproc(void)
+{
+#ifdef _SC_NPROCESSORS_ONLN
+ return (int)sysconf(_SC_NPROCESSORS_ONLN);
+#else
+ errno = 0;
+ return -1;
+#endif
+}
+
+bool
+pcquery(struct strv *vec, char *lib, int flags)
+{
+ int ec;
+ char *p;
+ size_t n;
+ cmd_t c = {0};
+ wordexp_t we;
+
+ p = nullptr;
+
+ cmdadd(&c, "pkg-config");
+ if (flags & PKGC_LIBS)
+ cmdadd(&c, "--libs");
+ if (flags & PKGC_CFLAGS)
+ cmdadd(&c, "--cflags");
+ cmdadd(&c, lib);
+
+ if ((ec = cmdexecb(c, &p, &n))) {
+ if (errno == ENOENT) {
+ free(c._argv);
+ return false;
+ }
+ diex("pkg-config terminated with exit-code %d", ec);
+ }
+
+ if (!p)
+ return true;
+
+ /* Remove trailing newline */
+ p[n - 1] = 0;
+
+ switch (wordexp(p, &we, WRDE_NOCMD)) {
+ case WRDE_BADCHAR:
+ case WRDE_BADVAL:
+ case WRDE_SYNTAX:
+ errno = EINVAL;
+ die("wordexp");
+ case WRDE_NOSPACE:
+ errno = ENOMEM;
+ die("wordexp");
+ }
+
+ vec->buf = bufalloc(vec->buf, vec->len + we.we_wordc, sizeof(char *));
+ for (size_t i = 0; i < we.we_wordc; i++) {
+ char *p = strdup(we.we_wordv[i]);
+ if (!p)
+ die(__func__);
+ vec->buf[vec->len++] = p;
+ }
+
+ wordfree(&we);
+ free(p);
+ return true;
+}
+
+#ifdef CBS_PTHREAD
+
+static void *
+_tpwork(void *arg)
+{
+ tpool_t *tp = arg;
+
+ while (!tp->_stop) {
+ struct _tjob *j;
+
+ pthread_mutex_lock(&tp->_mtx);
+ while (!tp->_stop && !tp->_head)
+ pthread_cond_wait(&tp->_cnd, &tp->_mtx);
+ if (tp->_stop) {
+ pthread_mutex_unlock(&tp->_mtx);
+ break;
+ }
+
+ j = _tpdeq(tp);
+ pthread_mutex_unlock(&tp->_mtx);
+
+ j->fn(j->arg);
+ if (j->free)
+ j->free(j->arg);
+ free(j);
+
+ pthread_mutex_lock(&tp->_mtx);
+ tp->_left--;
+ pthread_cond_broadcast(&tp->_cnd);
+ pthread_mutex_unlock(&tp->_mtx);
+ }
+
+ return nullptr;
+}
+
+void
+tpinit(tpool_t *tp, size_t n)
+{
+ tp->_tcnt = n;
+ tp->_stop = false;
+ tp->_left = 0;
+ tp->_head = tp->_tail = nullptr;
+ tp->_thrds = bufalloc(nullptr, n, sizeof(pthread_t));
+ pthread_cond_init(&tp->_cnd, nullptr);
+ pthread_mutex_init(&tp->_mtx, nullptr);
+
+ for (size_t i = 0; i < n; i++)
+ pthread_create(tp->_thrds + i, nullptr, _tpwork, tp);
+}
+
+void
+tpfree(tpool_t *tp)
+{
+ tp->_stop = true;
+
+ pthread_mutex_lock(&tp->_mtx);
+ pthread_cond_broadcast(&tp->_cnd);
+ pthread_mutex_unlock(&tp->_mtx);
+
+ for (size_t i = 0; i < tp->_tcnt; i++)
+ pthread_join(tp->_thrds[i], nullptr);
+
+ free(tp->_thrds);
+ while (tp->_head) {
+ struct _tjob *j = _tpdeq(tp);
+ if (j->free)
+ j->free(j->arg);
+ free(j);
+ }
+
+ pthread_cond_destroy(&tp->_cnd);
+ pthread_mutex_destroy(&tp->_mtx);
+}
+
+struct _tjob *
+_tpdeq(tpool_t *tp)
+{
+ struct _tjob *j = tp->_head;
+
+ if (j) {
+ tp->_head = tp->_head->next;
+ if (!tp->_head)
+ tp->_tail = nullptr;
+ }
+
+ return j;
+}
+
+void
+tpenq(tpool_t *tp, tfunc_t fn, void *arg, tfree_func_t free)
+{
+ struct _tjob *j = bufalloc(nullptr, 1, sizeof(struct _tjob));
+ *j = (struct _tjob){
+ .fn = fn,
+ .arg = arg,
+ .free = free,
+ };
+
+ pthread_mutex_lock(&tp->_mtx);
+ if (tp->_tail)
+ tp->_tail->next = j;
+ if (!tp->_head)
+ tp->_head = j;
+ tp->_tail = j;
+ tp->_left++;
+ pthread_cond_signal(&tp->_cnd);
+ pthread_mutex_unlock(&tp->_mtx);
+}
+
+void
+tpwait(tpool_t *tp)
+{
+ pthread_mutex_lock(&tp->_mtx);
+ while (!tp->_stop && tp->_left)
+ pthread_cond_wait(&tp->_cnd, &tp->_mtx);
+ pthread_mutex_unlock(&tp->_mtx);
+}
+
+#endif /* CBS_PTHREAD */
+
+#ifdef __GNUC__
+# pragma GCC diagnostic pop
+#endif
+
+#ifdef __APPLE__
+# undef st_mtim
+#endif
+
+#endif /* !C_BUILD_SYSTEM_H */
diff --git a/make.c b/make.c
new file mode 100644
index 0000000..bcb61a9
--- /dev/null
+++ b/make.c
@@ -0,0 +1,270 @@
+#define _GNU_SOURCE
+#include <ctype.h>
+#include <err.h>
+#include <errno.h>
+#include <getopt.h>
+#include <glob.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "cbs.h"
+
+#define WARN \
+ "-Wall", "-Wextra", "-Wpedantic", "-Werror", \
+ "-Wno-attributes", /* GNU attributes in headers */ \
+ "-Wno-parentheses", /* if (x = foo()) */ \
+ "-Wno-pointer-sign" /* char ↔ char8_t */
+
+#define CC "cc"
+#define CFLAGS WARN, "-std=c2x"
+#define CFLAGS_DBG CFLAGS, "-Og", "-ggdb3"
+#ifdef __APPLE__
+# define CFLAGS_RLS CFLAGS, "-O3"
+#else
+# define CFLAGS_RLS CFLAGS, "-O3", "-march=native", "-mtune=native"
+#endif
+
+#define streq(x, y) (!strcmp(x, y))
+
+#define FLAGMSK(f) ((uint64_t)1 << ((f) - ((f) < 'a' ? 'A' : 'G')))
+#define FLAGSET(f) (flags & FLAGMSK(f))
+
+#define _CMDPRC(c, f) \
+ do { \
+ int ec; \
+ f(c); \
+ if ((ec = cmdexec(c)) != EXIT_SUCCESS) \
+ diex("%s terminated with exit-code %d", *c._argv, ec); \
+ cmdclr(&c); \
+ } while (0)
+#define CMDPRC(c) _CMDPRC(c, cmdput)
+#define CMDPRC2(c) _CMDPRC(c, cmdput)
+
+static void build_c8asm(void);
+static void build_common(void);
+static void build_librune(void);
+static int globerr(const char *, int);
+static void cmdput2(cmd_t);
+
+static uint64_t flags;
+static const char *argv0;
+
+static void
+usage(void)
+{
+ fprintf(stderr, "Usage: %s [-flr]\n", argv0);
+ exit(EXIT_FAILURE);
+}
+
+int
+main(int argc, char **argv)
+{
+ int opt;
+ const struct option longopts[] = {
+ {"force", no_argument, nullptr, 'f'},
+ {"lto", no_argument, nullptr, 'l'},
+ {"release", no_argument, nullptr, 'r'},
+ {nullptr, no_argument, nullptr, 0 },
+ };
+
+ cbsinit(argc, argv);
+ rebuild();
+ argv0 = *argv;
+
+ while ((opt = getopt_long(argc, argv, "flr", longopts, nullptr)) != -1) {
+ switch (opt) {
+ case '?':
+ usage();
+ default:
+ flags |= FLAGMSK(opt);
+ }
+ }
+
+ argc -= optind;
+ argv += optind;
+
+ if (argc == 0) {
+ build_common();
+ build_c8asm();
+ } else if (streq(*argv, "clean")) {
+ cmd_t c = {0};
+ cmdadd(&c, "find", ".", "-type", "f", "(", "-name", "*.[ao]", "-or",
+ "-name", "c8asm", "-or", "-path", "./src/c8asm/lookup.h", ")",
+ "-delete");
+ CMDPRC(c);
+ } else {
+ warnx("invalid subcommand -- '%s'", *argv);
+ usage();
+ }
+
+ return EXIT_SUCCESS;
+}
+
+void
+build_common(void)
+{
+ glob_t g;
+ char **objs;
+ cmd_t c = {0};
+ struct strv sv = {0};
+
+ if (glob("src/common/*.c", 0, globerr, &g))
+ die("glob");
+
+ objs = bufalloc(nullptr, g.gl_pathc, sizeof(*objs));
+ for (size_t i = 0; i < g.gl_pathc; i++) {
+ char *s = strdup(g.gl_pathv[i]);
+ if (!s)
+ die("strdup");
+ s[strlen(s) - 1] = 'o';
+ objs[i] = s;
+ }
+
+ env_or_default(&sv, "CC", CC);
+ if (FLAGSET('r'))
+ env_or_default(&sv, "CFLAGS", CFLAGS_RLS);
+ else
+ env_or_default(&sv, "CFLAGS", CFLAGS_DBG);
+
+ for (size_t i = 0; i < g.gl_pathc; i++) {
+ if (!FLAGSET('f') && !foutdated(objs[i], g.gl_pathv[i]))
+ continue;
+
+ c.dst = objs[i];
+ cmdaddv(&c, sv.buf, sv.len);
+ if (FLAGSET('l'))
+ cmdadd(&c, "-flto");
+ cmdadd(&c, "-c", g.gl_pathv[i], "-o", objs[i]);
+ CMDPRC2(c);
+ }
+
+ globfree(&g);
+ strvfree(&sv);
+ for (size_t i = 0; i < g.gl_pathc; i++)
+ free(objs[i]);
+}
+
+void
+build_c8asm(void)
+{
+ glob_t g;
+ char **objs;
+ cmd_t c = {0};
+ struct strv sv = {0};
+
+ if (!binexists("gperf"))
+ diex("gperf is required to build c8asm");
+
+ build_librune();
+
+ if (FLAGSET('f')
+ || foutdated("src/c8asm/lookup.h", "src/c8asm/instr.gperf"))
+ {
+ c.dst = "src/c8asm/lookup.h";
+ cmdadd(&c, "gperf", "src/c8asm/instr.gperf", "--output-file", c.dst);
+ CMDPRC2(c);
+ }
+
+ if (glob("src/c8asm/*.c", 0, globerr, &g))
+ die("glob");
+
+ objs = bufalloc(nullptr, g.gl_pathc, sizeof(*objs));
+ for (size_t i = 0; i < g.gl_pathc; i++) {
+ char *s = strdup(g.gl_pathv[i]);
+ if (!s)
+ die("strdup");
+ s[strlen(s) - 1] = 'o';
+ objs[i] = s;
+ }
+
+ env_or_default(&sv, "CC", CC);
+ if (FLAGSET('r'))
+ env_or_default(&sv, "CFLAGS", CFLAGS_RLS);
+ else
+ env_or_default(&sv, "CFLAGS", CFLAGS_DBG);
+
+ for (size_t i = 0; i < g.gl_pathc; i++) {
+ if (!FLAGSET('f') && !foutdated(objs[i], g.gl_pathv[i]))
+ continue;
+
+ c.dst = objs[i];
+ cmdaddv(&c, sv.buf, sv.len);
+ if (FLAGSET('l'))
+ cmdadd(&c, "-flto");
+ cmdadd(&c, "-Isrc/common", "-Ivendor/da", "-Ivendor/librune/include");
+ cmdadd(&c, "-c", g.gl_pathv[i], "-o", objs[i]);
+ CMDPRC2(c);
+ }
+
+ if (!FLAGSET('f') && !foutdatedv("c8asm", (const char **)objs, g.gl_pathc))
+ goto out;
+
+ strvfree(&sv);
+ env_or_default(&sv, "CC", CC);
+ env_or_default(&sv, "LDFLAGS", nullptr);
+
+ c.dst = "c8asm";
+ cmdaddv(&c, sv.buf, sv.len);
+ if (FLAGSET('l'))
+ cmdadd(&c, "-flto");
+ cmdadd(&c, "-o", "c8asm");
+ cmdaddv(&c, objs, g.gl_pathc);
+ cmdadd(&c, "src/common/cerr.o", "vendor/librune/librune.a");
+ CMDPRC2(c);
+
+out:
+ globfree(&g);
+ strvfree(&sv);
+ for (size_t i = 0; i < g.gl_pathc; i++)
+ free(objs[i]);
+}
+
+void
+build_librune(void)
+{
+ cmd_t c = {0};
+ struct strv sv = {0};
+
+ env_or_default(&sv, "CC", CC);
+
+ if (FLAGSET('f')
+ || foutdated("vendor/librune/make", "vendor/librune/make.c"))
+ {
+ c.dst = "vendor/librune/make";
+ cmdaddv(&c, sv.buf, sv.len);
+ cmdadd(&c, "-lpthread", "-o", c.dst, "vendor/librune/make.c");
+ CMDPRC2(c);
+ }
+
+ if (FLAGSET('f') || !fexists("vendor/librune/librune.a")) {
+ cmdadd(&c, "vendor/librune/make");
+ if (FLAGSET('f'))
+ cmdadd(&c, "-f");
+ if (FLAGSET('r'))
+ cmdadd(&c, "-r");
+ if (FLAGSET('l'))
+ cmdadd(&c, "-l");
+ CMDPRC(c);
+ }
+}
+
+int
+globerr(const char *s, int e)
+{
+ errno = e;
+ die("glob: %s", s);
+}
+
+void
+cmdput2(cmd_t c)
+{
+ const char *p;
+
+ flockfile(stderr);
+ for (p = *c._argv; *p; p++)
+ fputc(toupper(*p), stderr);
+ fprintf(stderr, "\t%s\n", c.dst);
+ funlockfile(stderr);
+}
diff --git a/src/NOTES b/src/NOTES
new file mode 100644
index 0000000..d155ab1
--- /dev/null
+++ b/src/NOTES
@@ -0,0 +1,7 @@
+The shl and shr instructions are often documented to take both a Vx and a
+Vy argument. It’s a bit unclear what the behaviour here is meant to be.
+The original CHIP-8 implementation shifted Vy by 1 and stored the result
+in Vx. Some GitHub projects shift the value in Vx by the value in Vy.
+Ahoy takes the approach of SCHIP where Vx is shifted by 1 and Vy is
+ignored. The Ahoy assembler does not recognize a second Vy argument to
+either instruction.
diff --git a/src/c8asm/assembler.c b/src/c8asm/assembler.c
new file mode 100644
index 0000000..0d02555
--- /dev/null
+++ b/src/c8asm/assembler.c
@@ -0,0 +1,74 @@
+#include <stddef.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <string.h>
+
+#include <da.h>
+#include <mbstring.h>
+
+#include "assembler.h"
+#include "cerr.h"
+#include "common.h"
+#include "parser.h"
+
+/* TODO: Remove */
+#ifndef unreachable
+# define unreachable() __builtin_unreachable()
+#endif
+
+#define E_LEXISTS "label ‘%.*s’ has already been declared"
+
+struct label {
+ uint16_t addr;
+ struct u8view sv;
+};
+
+struct labels {
+ struct label *buf;
+ size_t len, cap;
+};
+
+static bool u8eq(struct u8view, struct u8view);
+static void pushlabel(struct labels *, struct label);
+
+static size_t i;
+
+bool
+u8eq(struct u8view x, struct u8view y)
+{
+ return x.len == y.len && memcmp(x.p, y.p, x.len) == 0;
+}
+
+void
+pushlabel(struct labels *dst, struct label lbl)
+{
+ da_foreach (dst, stored) {
+ if (u8eq(stored->sv, lbl.sv)) {
+ die_with_off(filename, lbl.sv.p - baseptr, E_LEXISTS,
+ U8_PRI_ARGS(lbl.sv));
+ }
+ }
+
+ dapush(dst, lbl);
+}
+
+void
+assemble([[maybe_unused]] FILE *stream, struct ast ast)
+{
+ static struct labels locals, globals;
+
+ da_foreach (&ast, node) {
+ if (node->kind == D_LABEL) {
+ struct label lbl = {
+ .addr = i,
+ .sv = node->name,
+ };
+ pushlabel(node->name.p[0] == '.' ? &locals : &globals, lbl);
+ } else if (node->kind == D_INSTR)
+ i += node->instr.kind == I_DB ? node->instr.len : 2;
+ else
+ unreachable();
+ }
+
+ locals.len = 0;
+}
diff --git a/src/c8asm/assembler.h b/src/c8asm/assembler.h
new file mode 100644
index 0000000..7b37a53
--- /dev/null
+++ b/src/c8asm/assembler.h
@@ -0,0 +1,10 @@
+#ifndef AHOY_C8ASM_ASSEMBLER_H
+#define AHOY_C8ASM_ASSEMBLER_H
+
+#include <stdio.h>
+
+#include "parser.h"
+
+void assemble(FILE *, struct ast);
+
+#endif /* !AHOY_C8ASM_ASSEMBLER_H */
diff --git a/src/c8asm/common.h b/src/c8asm/common.h
new file mode 100644
index 0000000..4f905b3
--- /dev/null
+++ b/src/c8asm/common.h
@@ -0,0 +1,16 @@
+#ifndef AHOY_C8ASM_COMMON_H
+#define AHOY_C8ASM_COMMON_H
+
+#include <mbstring.h>
+
+#define MIN(x, y) ((x) < (y) ? (x) : (y))
+#define MAX(x, y) ((x) > (y) ? (x) : (y))
+
+#define lengthof(a) (sizeof(a) / sizeof(*(a)))
+#define streq(x, y) (!strcmp(x, y))
+
+extern size_t filesize;
+extern const char *filename;
+extern const char8_t *baseptr;
+
+#endif /* !AHOY_C8ASM_COMMON_H */
diff --git a/src/c8asm/grammar.ebnf b/src/c8asm/grammar.ebnf
new file mode 100644
index 0000000..59ba9fc
--- /dev/null
+++ b/src/c8asm/grammar.ebnf
@@ -0,0 +1,46 @@
+program = {line};
+line = {label}, [operation], EOL;
+label = IDENT, ':';
+
+operation = add | and | bcd | call
+ | cls | drw | hex | jp
+ | ld | or | ret | rnd
+ | rstr | se | shl | shr
+ | sknp | skp | sne | stor
+ | sub | subn | sys | xor
+ | db;
+
+add = "add", ((vreg, vreg) | (vreg, BYTE) | ("i", vreg));
+and = "and", vreg, vreg;
+bcd = "bcd", vreg;
+call = "call", addr;
+cls = "cls";
+drw = "drw", vreg, vreg, NIBBL;
+hex = "hex", vreg;
+jp = "jp", ["v0"], addr;
+ld = "ld", ((vreg, (vreg | BYTE | "dt" | "k"))
+ | ("i", addr)
+ | ("dt", vreg)
+ | ("st", vreg));
+or = "or", vreg, vreg;
+ret = "ret";
+rnd = "rnd", vreg, BYTE;
+rstr = "rstr", vreg;
+se = "se", vreg, (vreg | BYTE);
+shl = "shl", vreg;
+shr = "shr", vreg;
+sknp = "sknp", vreg;
+skp = "skp", vreg;
+sne = "sne", vreg, (vreg | BYTE);
+stor = "stor", vreg;
+sub = "sub", vreg, vreg;
+subn = "subn", vreg, vreg;
+sys = "sys", addr;
+xor = "xor", vreg, vreg;
+db = "db", {(BYTE | STRING)};
+
+addr = ADDR | IDENT;
+vreg = "v0" | "v1" | "v2" | "v3"
+ | "v4" | "v5" | "v6" | "v7"
+ | "v8" | "v9" | "va" | "vb"
+ | "vc" | "vd" | "ve" | "vf";
diff --git a/src/c8asm/instr.gperf b/src/c8asm/instr.gperf
new file mode 100644
index 0000000..fac4e57
--- /dev/null
+++ b/src/c8asm/instr.gperf
@@ -0,0 +1,33 @@
+%compare-lengths
+%define initializer-suffix ,nullptr
+%define lookup-function-name oplookup
+%includes
+%readonly-tables
+%struct-type
+struct opf_pair { char *name; void (*pfn)(void); };
+%%
+add, parseop_add
+and, parseop_and
+bcd, parseop_bcd
+call, parseop_call
+cls, parseop_cls
+db, parseop_db
+drw, parseop_drw
+hex, parseop_hex
+jp, parseop_jp
+ld, parseop_ld
+or, parseop_or
+ret, parseop_ret
+rnd, parseop_rnd
+rstr, parseop_rstr
+se, parseop_se
+shl, parseop_shl
+shr, parseop_shr
+sknp, parseop_sknp
+skp, parseop_skp
+sne, parseop_sne
+stor, parseop_stor
+sub, parseop_sub
+subn, parseop_subn
+sys, parseop_sys
+xor, parseop_xor
diff --git a/src/c8asm/lexer.c b/src/c8asm/lexer.c
new file mode 100644
index 0000000..effc32e
--- /dev/null
+++ b/src/c8asm/lexer.c
@@ -0,0 +1,204 @@
+#include <da.h>
+#include <mbstring.h>
+#include <rtype.h>
+
+#include "cerr.h"
+#include "common.h"
+#include "lexer.h"
+
+#define ISDIGIT(n) ((n) >= '0' && (n) <= '9')
+#define U8MOV(sv, n) ((sv)->p += (n), (sv)->len -= (n))
+
+#define E_BASE "integer with invalid base specifier ‘%.*s’"
+#define E_EXTRA "unknown extraneous character ‘%.*s’"
+#define E_IDENTCHAR "illegal character in identifier ‘%.*s’"
+#define E_IDENTLOST "local label missing identifier"
+#define E_IDENTSCHAR "illegal first character in identifier ‘%.*s’"
+#define E_UNTERMINATED "unterminated string literal ‘%.*s%.*s’"
+#define E_UTF8 "invalid UTF-8 byte near ‘%02X’"
+
+#define EOLS U"\n\v\f\r\x85\u2028\u2029"
+#define NUMCHARS U"'0123456789abcdefABCDEF"
+
+static void lexline(struct tokens *, struct u8view *);
+static bool skipws(struct u8view *);
+
+const char *
+tokrepr(tokkind k)
+{
+ return (const char *[]){
+ [T_COLON] = "colon", [T_EOL] = "end of line",
+ [T_IDENT] = "identifier", [T_NUMBER] = "number",
+ [T_STRING] = "string",
+ }[k];
+}
+
+struct tokens
+lexfile(struct u8view sv)
+{
+ const char8_t *s;
+ struct tokens toks;
+
+ if (s = u8chk(sv.p, sv.len))
+ die_with_off(filename, s - sv.p, E_UTF8, *s);
+
+ dainit(&toks, 256);
+
+ while (sv.len) {
+ size_t len = u8cbspn(sv.p, sv.len, EOLS, lengthof(EOLS) - 1);
+ struct u8view line = {
+ .p = sv.p,
+ .len = len,
+ };
+
+ lexline(&toks, &line);
+
+ /* Skip trailing EOL */
+ if (sv.len > len)
+ len += u8rlen(sv.p + len);
+
+ U8MOV(&sv, len);
+ }
+
+ return toks;
+}
+
+void
+lexline(struct tokens *toks, struct u8view *sv)
+{
+#define die_with_off(...) \
+ die_with_off(filename, sv->p - baseptr - w, __VA_ARGS__);
+
+ struct token tok;
+
+ for (;;) {
+ int w;
+ rune ch;
+
+ if (!skipws(sv))
+ goto end;
+
+ tok.sv.p = sv->p;
+ tok.sv.len = w = u8next(&ch, &sv->p, &sv->len);
+
+ if (ISDIGIT(ch)) {
+ size_t off, m = 10;
+
+ tok.kind = T_NUMBER;
+ tok.base = 10;
+
+ if (ch == '0') {
+ w = u8next(&ch, &sv->p, &sv->len);
+ if (!w || rprop_is_pat_ws(ch)) {
+ sv->p -= w;
+ sv->len += w;
+ goto out;
+ }
+ tok.sv.len++;
+
+ switch (ch) {
+ case 'b':
+ tok.base = m = 2;
+ break;
+ case 'o':
+ tok.base = m = 8;
+ break;
+ case 'd':
+ /* Implicitly base-10 already */
+ break;
+ case 'x':
+ /* m = 22 because A–F can be both upper- or lowercase */
+ tok.base = 16;
+ m = 22;
+ break;
+ default:
+ if (!ISDIGIT(ch))
+ die_with_off(E_BASE, w, sv->p - w);
+ }
+ }
+
+out:
+ /* +1 to support the digit separator */
+ tok.sv.len += off = u8bspn(sv->p, sv->len, NUMCHARS, m + 1);
+ U8MOV(sv, off);
+ } else if (ch == '.' || ch == '_' || rprop_is_xids(ch)) {
+ tok.kind = T_IDENT;
+ if (ch == '.') {
+ if (!sv->len)
+ die_with_off(E_IDENTLOST);
+
+ tok.sv.len += w = u8next(&ch, &sv->p, &sv->len);
+ if (rprop_is_pat_ws(ch))
+ die_with_off(E_IDENTLOST);
+ if (ch != '_' && !rprop_is_xids(ch)) {
+ die_with_off(E_IDENTSCHAR, w, sv->p - w);
+ }
+ }
+
+ while (w = u8next(&ch, &sv->p, &sv->len)) {
+ if (ch == ':' || rprop_is_pat_ws(ch)) {
+ U8MOV(sv, -w);
+ break;
+ }
+ if (!rprop_is_xidc(ch))
+ die_with_off(E_IDENTCHAR, w, sv->p - w);
+
+ tok.sv.len += w;
+ }
+ } else if (ch == '"') {
+ tok.kind = T_STRING;
+ while (w = u8next(&ch, &sv->p, &sv->len)) {
+ tok.sv.len += w;
+ if (ch == '"')
+ goto found;
+ }
+ die_with_off(E_UNTERMINATED, (int)MIN(tok.sv.len, 20), tok.sv.p,
+ tok.sv.len > 20 ? (int)lengthof(u8"…") - 1 : 0, u8"…");
+found:
+ } else if (ch == ':') {
+ tok.kind = T_COLON;
+ } else if (ch == ';') {
+ goto end;
+ } else {
+ die_with_off(E_EXTRA, w, sv->p - w);
+ }
+
+ /* The colon is the only token that isn’t whitespace separated */
+ if (ch != ':' && sv->len) {
+ w = u8next(&ch, &sv->p, &sv->len);
+ if (!w || !rprop_is_pat_ws(ch))
+ die_with_off(E_EXTRA, w, sv->p - w);
+ }
+
+ dapush(toks, tok);
+ }
+
+end:;
+ tok = (struct token){
+ .kind = T_EOL,
+ .sv.p = sv->p,
+ .sv.len = 0,
+ };
+ dapush(toks, tok);
+
+#undef die_with_off
+}
+
+bool
+skipws(struct u8view *sv)
+{
+ rune ch;
+
+ if (!sv->len)
+ return false;
+
+ for (int w = u8tor_uc(&ch, sv->p); rprop_is_pat_ws(ch);
+ w = u8tor_uc(&ch, sv->p))
+ {
+ U8MOV(sv, w);
+ if (!sv->len)
+ return false;
+ }
+
+ return true;
+}
diff --git a/src/c8asm/lexer.h b/src/c8asm/lexer.h
new file mode 100644
index 0000000..ef20cef
--- /dev/null
+++ b/src/c8asm/lexer.h
@@ -0,0 +1,28 @@
+#ifndef AHOY_C8ASM_LEXER_H
+#define AHOY_C8ASM_LEXER_H
+
+#include <mbstring.h>
+
+typedef enum [[clang::flag_enum]] {
+ T_COLON = 1 << 0,
+ T_EOL = 1 << 1,
+ T_IDENT = 1 << 2,
+ T_NUMBER = 1 << 3,
+ T_STRING = 1 << 4,
+} tokkind;
+
+struct token {
+ tokkind kind;
+ struct u8view sv;
+ int base; /* For number literals */
+};
+
+struct tokens {
+ struct token *buf;
+ size_t len, cap;
+};
+
+const char *tokrepr(tokkind);
+struct tokens lexfile(struct u8view);
+
+#endif /* !AHOY_C8ASM_LEXER_H */
diff --git a/src/c8asm/lookup.h b/src/c8asm/lookup.h
new file mode 100644
index 0000000..26bc141
--- /dev/null
+++ b/src/c8asm/lookup.h
@@ -0,0 +1,190 @@
+/* ANSI-C code produced by gperf version 3.1 */
+/* Command-line: gperf --output-file src/c8asm/lookup.h src/c8asm/instr.gperf */
+/* Computed positions: -k'1-3' */
+
+#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
+ && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
+ && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
+ && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
+ && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
+ && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
+ && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
+ && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
+ && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
+ && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
+ && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
+ && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
+ && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
+ && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
+ && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
+ && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
+ && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
+ && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
+ && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
+ && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
+ && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
+ && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
+ && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
+/* The character set is not based on ISO-646. */
+#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gperf@gnu.org>."
+#endif
+
+#line 7 "src/c8asm/instr.gperf"
+struct opf_pair { char *name; void (*pfn)(void); };
+#include <string.h>
+
+#define TOTAL_KEYWORDS 25
+#define MIN_WORD_LENGTH 2
+#define MAX_WORD_LENGTH 4
+#define MIN_HASH_VALUE 2
+#define MAX_HASH_VALUE 49
+/* maximum key range = 48, duplicates = 0 */
+
+#ifdef __GNUC__
+__inline
+#else
+#ifdef __cplusplus
+inline
+#endif
+#endif
+static unsigned int
+hash (register const char *str, register size_t len)
+{
+ static const unsigned char asso_values[] =
+ {
+ 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 5, 15, 15,
+ 10, 0, 50, 50, 10, 50, 0, 5, 20, 50,
+ 5, 5, 18, 50, 0, 0, 0, 30, 50, 8,
+ 3, 3, 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50
+ };
+ register unsigned int hval = len;
+
+ switch (hval)
+ {
+ default:
+ hval += asso_values[(unsigned char)str[2]];
+ /*FALLTHROUGH*/
+ case 2:
+ hval += asso_values[(unsigned char)str[1]];
+ /*FALLTHROUGH*/
+ case 1:
+ hval += asso_values[(unsigned char)str[0]];
+ break;
+ }
+ return hval;
+}
+
+const struct opf_pair *
+oplookup (register const char *str, register size_t len)
+{
+ static const unsigned char lengthtable[] =
+ {
+ 0, 0, 2, 3, 4, 0, 3, 2, 3, 4, 0, 3, 0, 3,
+ 4, 0, 3, 0, 3, 0, 2, 3, 0, 3, 0, 0, 3, 2,
+ 3, 0, 0, 0, 2, 3, 0, 0, 0, 0, 3, 0, 0, 0,
+ 0, 3, 4, 0, 0, 0, 3, 4
+ };
+ static const struct opf_pair wordlist[] =
+ {
+ {"",nullptr}, {"",nullptr},
+#line 23 "src/c8asm/instr.gperf"
+ {"se", parseop_se},
+#line 20 "src/c8asm/instr.gperf"
+ {"ret", parseop_ret},
+#line 22 "src/c8asm/instr.gperf"
+ {"rstr", parseop_rstr},
+ {"",nullptr},
+#line 32 "src/c8asm/instr.gperf"
+ {"sys", parseop_sys},
+#line 19 "src/c8asm/instr.gperf"
+ {"or", parseop_or},
+#line 28 "src/c8asm/instr.gperf"
+ {"sne", parseop_sne},
+#line 29 "src/c8asm/instr.gperf"
+ {"stor", parseop_stor},
+ {"",nullptr},
+#line 33 "src/c8asm/instr.gperf"
+ {"xor", parseop_xor},
+ {"",nullptr},
+#line 25 "src/c8asm/instr.gperf"
+ {"shr", parseop_shr},
+#line 26 "src/c8asm/instr.gperf"
+ {"sknp", parseop_sknp},
+ {"",nullptr},
+#line 16 "src/c8asm/instr.gperf"
+ {"hex", parseop_hex},
+ {"",nullptr},
+#line 21 "src/c8asm/instr.gperf"
+ {"rnd", parseop_rnd},
+ {"",nullptr},
+#line 17 "src/c8asm/instr.gperf"
+ {"jp", parseop_jp},
+#line 15 "src/c8asm/instr.gperf"
+ {"drw", parseop_drw},
+ {"",nullptr},
+#line 10 "src/c8asm/instr.gperf"
+ {"and", parseop_and},
+ {"",nullptr}, {"",nullptr},
+#line 27 "src/c8asm/instr.gperf"
+ {"skp", parseop_skp},
+#line 14 "src/c8asm/instr.gperf"
+ {"db", parseop_db},
+#line 9 "src/c8asm/instr.gperf"
+ {"add", parseop_add},
+ {"",nullptr}, {"",nullptr}, {"",nullptr},
+#line 18 "src/c8asm/instr.gperf"
+ {"ld", parseop_ld},
+#line 24 "src/c8asm/instr.gperf"
+ {"shl", parseop_shl},
+ {"",nullptr}, {"",nullptr}, {"",nullptr}, {"",nullptr},
+#line 13 "src/c8asm/instr.gperf"
+ {"cls", parseop_cls},
+ {"",nullptr}, {"",nullptr}, {"",nullptr}, {"",nullptr},
+#line 11 "src/c8asm/instr.gperf"
+ {"bcd", parseop_bcd},
+#line 12 "src/c8asm/instr.gperf"
+ {"call", parseop_call},
+ {"",nullptr}, {"",nullptr}, {"",nullptr},
+#line 30 "src/c8asm/instr.gperf"
+ {"sub", parseop_sub},
+#line 31 "src/c8asm/instr.gperf"
+ {"subn", parseop_subn}
+ };
+
+ if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
+ {
+ register unsigned int key = hash (str, len);
+
+ if (key <= MAX_HASH_VALUE)
+ if (len == lengthtable[key])
+ {
+ register const char *s = wordlist[key].name;
+
+ if (*str == *s && !memcmp (str + 1, s + 1, len - 1))
+ return &wordlist[key];
+ }
+ }
+ return 0;
+}
diff --git a/src/c8asm/main.c b/src/c8asm/main.c
new file mode 100644
index 0000000..edc595b
--- /dev/null
+++ b/src/c8asm/main.c
@@ -0,0 +1,109 @@
+#include <sys/stat.h>
+
+#include <fcntl.h>
+#include <getopt.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#include <builder.h>
+#include <da.h>
+
+#include "assembler.h"
+#include "cerr.h"
+#include "common.h"
+#include "lexer.h"
+#include "parser.h"
+
+static void asmfile(int, const char *);
+
+size_t filesize;
+const char *filename;
+const char8_t *baseptr;
+
+int
+main(int argc, char **argv)
+{
+ int opt;
+ const struct option longopts[] = {
+ {"help", no_argument, nullptr, 'h'},
+ {nullptr, no_argument, nullptr, 0 },
+ };
+
+ cerrinit(*argv);
+ while ((opt = getopt_long(argc, argv, "h", longopts, nullptr)) != -1) {
+ switch (opt) {
+ case 'h':
+ execlp("man", "man", "1", argv[0], nullptr);
+ die("execlp: man 1 %s", argv[0]);
+ default:
+ fprintf(stderr, "Usage: %s [file ...]\n", argv[0]);
+ exit(EXIT_FAILURE);
+ }
+ }
+
+ argc -= optind;
+ argv += optind;
+
+ if (!argc)
+ asmfile(STDIN_FILENO, "-");
+ for (int i = 0; i < argc; i++) {
+ if (streq("-", argv[i]))
+ asmfile(STDIN_FILENO, "-");
+ else {
+ int fd;
+ if ((fd = open(argv[i], O_RDONLY)) == -1)
+ die("open: %s", argv[i]);
+ asmfile(fd, argv[i]);
+ close(fd);
+ }
+ }
+
+ return EXIT_SUCCESS;
+}
+
+void
+asmfile(int fd, const char *fn)
+{
+ char *buf;
+ size_t blksize;
+ ssize_t nr;
+ struct ast ast;
+ struct stat st;
+ struct u8str sb;
+ struct tokens toks;
+
+ filename = fn;
+
+ if (fstat(fd, &st) == -1)
+ die("fstat: %s", filename);
+ blksize = MAX(st.st_blksize, BUFSIZ);
+ if (!(buf = malloc(blksize)))
+ die("malloc");
+
+ /* Load the contents of the file into sb */
+ u8strinit(&sb, S_ISREG(st.st_mode) ? (size_t)st.st_size : blksize);
+ while ((nr = read(fd, buf, blksize)) > 0) {
+ struct u8view v = {
+ .p = buf,
+ .len = nr,
+ };
+ if (!u8strpush(&sb, v))
+ die("u8strpush");
+ }
+ if (nr == -1)
+ die("read: %s", filename);
+
+ free(buf);
+ filesize = sb.len;
+ baseptr = u8strfit(&sb)->p;
+ assemble(stdout, ast = parsefile(toks = lexfile(u8strtou8(sb))));
+
+ da_foreach (&ast, node) {
+ if (node->kind == D_INSTR && node->instr.kind == I_DB)
+ free(node->instr.buf);
+ }
+
+ free(toks.buf);
+ u8strfree(sb);
+}
diff --git a/src/c8asm/parser.c b/src/c8asm/parser.c
new file mode 100644
index 0000000..b746bea
--- /dev/null
+++ b/src/c8asm/parser.c
@@ -0,0 +1,627 @@
+#include <stddef.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <string.h>
+
+#include <da.h>
+
+#include "cerr.h"
+#include "common.h"
+#include "lexer.h"
+#include "parser.h"
+
+/* TODO: Remove */
+#ifndef unreachable
+# define unreachable() __builtin_unreachable()
+#endif
+
+#define E_BADLABEL "identifier ‘%.*s’ cannot be used as a label"
+#define E_EARLY "expected %s but input ended prematurely"
+#define E_EXPECTED2 "expected %s but got %s"
+#define E_EXPECTED "expected %s but got %s ‘%.*s’"
+#define E_INSTR "got unknown instruction ‘%.*s’"
+#define E_TOOLARGE "expected %s but got out-of-range integer ‘%.*s’"
+
+#define die_with_off(P, ...) die_with_off(filename, (P)-baseptr, __VA_ARGS__)
+#define memeq(X, Y, N) (!memcmp(X, Y, N))
+
+enum numsize {
+ NS_NIBBLE = 0xF,
+ NS_BYTE = 0xFF,
+ NS_ADDR = 0xFFF,
+};
+
+enum regtype {
+ RT_NONE,
+ RT_DT,
+ RT_I,
+ RT_K,
+ RT_ST,
+ RT_VX,
+};
+
+static bool parselabel(void);
+static void parseline(void);
+static void parseop(void);
+static struct raw_addr parseaddr(struct token);
+static struct token reqnext(const char *, tokkind);
+
+static uint16_t hexval(char);
+static uint16_t parsenum(struct token, enum numsize);
+static enum regtype regtype(struct u8view);
+
+static void parseop_add(void), parseop_and(void), parseop_bcd(void),
+ parseop_call(void), parseop_cls(void), parseop_db(void), parseop_drw(void),
+ parseop_hex(void), parseop_jp(void), parseop_ld(void), parseop_or(void),
+ parseop_ret(void), parseop_rnd(void), parseop_rstr(void), parseop_se(void),
+ parseop_shl(void), parseop_shr(void), parseop_sknp(void), parseop_skp(void),
+ parseop_sne(void), parseop_stor(void), parseop_sub(void),
+ parseop_subn(void), parseop_sys(void), parseop_xor(void);
+#include "lookup.h"
+
+static size_t i;
+static struct ast ast;
+static struct tokens *tokens;
+
+struct ast
+parsefile(struct tokens toks)
+{
+ ast.len = i = 0;
+ tokens = &toks;
+
+ while (i < toks.len)
+ parseline();
+
+ /* We can safely not do this, but GCC disagrees. This gets GCC to not
+ complain about dangling pointers. */
+ tokens = nullptr;
+
+ return ast;
+}
+
+void
+parseline(void)
+{
+ while (parselabel())
+ ;
+ parseop();
+ reqnext("end of line", T_EOL);
+}
+
+bool
+parselabel(void)
+{
+ if (tokens->len - i >= 2 && tokens->buf[i].kind == T_IDENT
+ && tokens->buf[i + 1].kind == T_COLON)
+ {
+ struct dir lbl = {
+ .kind = D_LABEL,
+ .name = tokens->buf[i].sv,
+ };
+ if (regtype(lbl.name) != RT_NONE)
+ die_with_off(lbl.name.p, E_BADLABEL, U8_PRI_ARGS(lbl.name));
+ dapush(&ast, lbl);
+ i += 2;
+ return true;
+ }
+
+ return false;
+}
+
+void
+parseop(void)
+{
+ const struct opf_pair *op;
+ struct token tok = reqnext("instruction or end of line", T_IDENT | T_EOL);
+
+ if (tok.kind == T_EOL) {
+ i--;
+ return;
+ }
+
+ if (!(op = oplookup(tok.sv.p, tok.sv.len)))
+ die_with_off(tok.sv.p, E_INSTR, U8_PRI_ARGS(tok.sv));
+ op->pfn();
+}
+
+struct raw_addr
+parseaddr(struct token tok)
+{
+ if (tok.kind == T_NUMBER)
+ return (struct raw_addr){.val = parsenum(tok, NS_ADDR)};
+ if (tok.kind == T_STRING) {
+ if (regtype(tok.sv) != RT_NONE)
+ die_with_off(tok.sv.p, E_BADLABEL, U8_PRI_ARGS(tok.sv));
+ return (struct raw_addr){.label = true, .sv = tok.sv};
+ }
+ unreachable();
+}
+
+enum regtype
+regtype(struct u8view v)
+{
+ if (v.len == 0 || v.len > 2)
+ return RT_NONE;
+ if (v.len == 1)
+ return v.p[0] == 'i' ? RT_I : v.p[0] == 'k' ? RT_K : RT_NONE;
+ if (memeq(v.p, "dt", 2))
+ return RT_DT;
+ if (memeq(v.p, "st", 2))
+ return RT_ST;
+ return v.p[0] == 'v'
+ && ((v.p[1] >= '0' && v.p[1] <= '9')
+ || (v.p[1] >= 'a' && v.p[1] <= 'f'))
+ ? RT_VX
+ : RT_NONE;
+}
+
+uint16_t
+hexval(char ch)
+{
+ return ch >= '0' && ch <= '9' ? ch - '0'
+ : ch >= 'a' && ch <= 'f' ? ch - 'a' + 10
+ : (unreachable(), 0);
+}
+
+uint16_t
+parsenum(struct token tok, enum numsize size)
+{
+ char ch;
+ uint16_t acc, cutoff, cutlim;
+ struct u8view v = tok.sv;
+
+ acc = 0;
+ cutoff = size;
+ cutlim = cutoff % tok.base;
+ cutoff /= tok.base;
+
+ if (v.len >= 2 && v.p[0] == '0' && v.p[1] > '9') {
+ v.p += 2;
+ v.len -= 2;
+ }
+
+ for (ch = *v.p; v.len; v.p++, v.len--, ch = *v.p) {
+ if (ch == '\'')
+ continue;
+ else if (ch >= '0' && ch <= '9')
+ ch -= '0';
+ else if (ch >= 'a' && ch <= 'f')
+ ch -= 'a' - 10;
+ else if (ch >= 'A' && ch <= 'F')
+ ch -= 'A' - 10;
+ else
+ unreachable();
+
+ if (acc > cutoff || (acc == cutoff && ch > cutlim)) {
+ const char *s = size == NS_NIBBLE ? "nibble"
+ : size == NS_BYTE ? "byte"
+ : size == NS_ADDR ? "address"
+ : (unreachable(), nullptr);
+ die_with_off(tok.sv.p, E_TOOLARGE, s, U8_PRI_ARGS(tok.sv));
+ }
+
+ acc *= tok.base;
+ acc += ch;
+ }
+
+ return acc;
+}
+
+struct token
+reqnext(const char *want, tokkind msk)
+{
+ struct token t;
+ if (i >= tokens->len)
+ die_with_off(baseptr + filesize - 1, E_EARLY, want);
+
+ if ((t = tokens->buf[i++]).kind & msk)
+ return t;
+ if (t.kind == T_EOL)
+ die_with_off(t.sv.p, E_EXPECTED2, want, tokrepr(t.kind));
+ die_with_off(t.sv.p, E_EXPECTED, want, tokrepr(t.kind), U8_PRI_ARGS(t.sv));
+}
+
+#define I(...) ((struct dir){.kind = D_INSTR, .instr = (__VA_ARGS__)})
+
+/* Common implementations of instructions that always take 1 or 2 v-registers */
+#define ONE_VREG(T) \
+ do { \
+ struct instr ins = {.kind = (T)}; \
+ struct token tok = reqnext("v-register", T_IDENT); \
+ if (regtype(tok.sv) & ~RT_VX) { \
+ die_with_off(tok.sv.p, E_EXPECTED, "v-register", \
+ tokrepr(tok.kind), U8_PRI_ARGS(tok.sv)); \
+ } \
+ ins.args[ins.len++].val = hexval(tok.sv.p[1]); \
+ dapush(&ast, I(ins)); \
+ } while (false)
+#define TWO_VREG(T) \
+ do { \
+ struct instr ins = {.kind = (T)}; \
+ struct token lhs = reqnext("v-register", T_IDENT); \
+ struct token rhs = reqnext("v-register", T_IDENT); \
+ if (regtype(lhs.sv) & ~RT_VX) { \
+ die_with_off(lhs.sv.p, E_EXPECTED, "v-register", \
+ tokrepr(lhs.kind), U8_PRI_ARGS(lhs.sv)); \
+ } \
+ if (regtype(rhs.sv) & ~RT_VX) { \
+ die_with_off(rhs.sv.p, E_EXPECTED, "v-register", \
+ tokrepr(rhs.kind), U8_PRI_ARGS(rhs.sv)); \
+ } \
+ ins.args[ins.len++].val = hexval(lhs.sv.p[1]); \
+ ins.args[ins.len++].val = hexval(rhs.sv.p[1]); \
+ dapush(&ast, I(ins)); \
+ } while (false)
+
+void
+parseop_add(void)
+{
+ enum regtype rt;
+ struct instr ins = {};
+ struct token tok = reqnext("v- or i-register", T_IDENT);
+
+ switch (rt = regtype(tok.sv)) {
+ case RT_VX:
+ ins.args[ins.len++].val = hexval(tok.sv.p[1]);
+ tok = reqnext("byte or v-register", T_IDENT | T_NUMBER);
+
+ if (tok.kind == T_NUMBER) {
+ ins.kind = I_ADD_VX_B;
+ ins.args[ins.len++].val = parsenum(tok, NS_BYTE);
+ } else if (regtype(tok.sv) != RT_VX) {
+ die_with_off(tok.sv.p, E_EXPECTED, "v-register", tokrepr(tok.kind),
+ U8_PRI_ARGS(tok.sv));
+ } else {
+ ins.kind = I_ADD_VX_VY;
+ ins.args[ins.len++].val = hexval(tok.sv.p[1]);
+ }
+ break;
+ case RT_I:
+ ins.kind = I_ADD_I_VX;
+ tok = reqnext("v-register", T_IDENT);
+ if (regtype(tok.sv) != RT_VX) {
+ die_with_off(tok.sv.p, E_EXPECTED, "v-register", tokrepr(tok.kind),
+ U8_PRI_ARGS(tok.sv));
+ }
+ ins.args[ins.len++].val = hexval(tok.sv.p[1]);
+ break;
+ default:
+ die_with_off(tok.sv.p, E_EXPECTED, "v- or i-register",
+ tokrepr(tok.kind), U8_PRI_ARGS(tok.sv));
+ }
+
+ dapush(&ast, I(ins));
+}
+
+void
+parseop_and(void)
+{
+ TWO_VREG(I_AND);
+}
+
+void
+parseop_bcd(void)
+{
+ ONE_VREG(I_BCD);
+}
+
+void
+parseop_call(void)
+{
+ struct instr ins = {.kind = I_CALL};
+ struct token tok = reqnext("address", T_IDENT | T_NUMBER);
+ ins.args[ins.len++] = parseaddr(tok);
+ dapush(&ast, I(ins));
+}
+
+void
+parseop_cls(void)
+{
+ dapush(&ast, I((struct instr){.kind = I_CLS}));
+}
+
+void
+parseop_db(void)
+{
+ struct instr ins = {.kind = I_DB};
+ do {
+ struct token tok = reqnext("byte or string", T_NUMBER | T_STRING);
+ switch (tok.kind) {
+ case T_NUMBER:
+ dapush(&ins, parsenum(tok, NS_BYTE));
+ break;
+ case T_STRING:
+ for (size_t i = 1; i < tok.sv.len - 1; i++)
+ dapush(&ins, tok.sv.p[i]);
+ break;
+ default:
+ unreachable();
+ }
+ } while (i < tokens->len && tokens->buf[i].kind != T_EOL);
+
+ dapush(&ast, I(ins));
+}
+
+void
+parseop_drw(void)
+{
+ struct instr ins = {.kind = I_DRW};
+ struct token op1, op2, op3;
+
+ op1 = reqnext("v-register", T_IDENT);
+ op2 = reqnext("v-register", T_IDENT);
+ op3 = reqnext("nibble", T_NUMBER);
+
+ if (regtype(op1.sv) != RT_VX) {
+ die_with_off(op1.sv.p, E_EXPECTED, "v-register", tokrepr(op1.kind),
+ U8_PRI_ARGS(op1.sv));
+ }
+ if (regtype(op2.sv) != RT_VX) {
+ die_with_off(op2.sv.p, E_EXPECTED, "v-register", tokrepr(op2.kind),
+ U8_PRI_ARGS(op2.sv));
+ }
+
+ ins.args[ins.len++].val = hexval(op1.sv.p[1]);
+ ins.args[ins.len++].val = hexval(op2.sv.p[1]);
+ ins.args[ins.len++].val = parsenum(op3, NS_NIBBLE);
+ dapush(&ast, I(ins));
+}
+
+void
+parseop_hex(void)
+{
+ ONE_VREG(I_HEX);
+}
+
+void
+parseop_jp(void)
+{
+ enum regtype rt;
+ struct instr ins = {};
+ struct token op = reqnext("v0-register or address", T_IDENT | T_NUMBER);
+
+ if (op.kind == T_IDENT)
+ rt = regtype(op.sv);
+ if (op.kind == T_NUMBER || (op.kind == T_IDENT && rt == RT_NONE)) {
+ ins.kind = I_JP_ADDR;
+ ins.args[ins.len++] = parseaddr(op);
+ } else if (op.kind == T_IDENT) {
+ ins.kind = I_JP_V0_ADDR;
+ if (op.sv.len != 2 || !memeq(op.sv.p, "v0", 2)) {
+ die_with_off(op.sv.p, E_EXPECTED, "v0-register or address",
+ tokrepr(op.kind), U8_PRI_ARGS(op.sv));
+ }
+ ins.args[ins.len++] = parseaddr(reqnext("address", T_NUMBER | T_IDENT));
+ } else
+ unreachable();
+
+ dapush(&ast, I(ins));
+}
+
+void
+parseop_ld(void)
+{
+ enum regtype rt;
+ struct instr ins = {};
+ struct token op = reqnext("v-, i-, dt-, or st-register", T_IDENT);
+
+ switch (rt = regtype(op.sv)) {
+ case RT_DT:
+ case RT_ST:
+ ins.kind = rt == RT_DT ? I_LD_DT : I_LD_ST;
+ op = reqnext("v-register", T_IDENT);
+ if (regtype(op.sv) != RT_VX) {
+ die_with_off(op.sv.p, E_EXPECTED, "v-register", tokrepr(op.kind),
+ U8_PRI_ARGS(op.sv));
+ }
+ ins.args[ins.len++].val = hexval(op.sv.p[1]);
+ break;
+
+ case RT_I:
+ ins.kind = I_LD_I;
+ ins.args[ins.len++] = parseaddr(reqnext("address", T_NUMBER | T_IDENT));
+ break;
+
+ case RT_VX:
+ ins.args[ins.len++].val = hexval(op.sv.p[1]);
+ op = reqnext("v-, k-, or dt-register, or byte", T_IDENT | T_NUMBER);
+
+ switch (op.kind) {
+ case T_IDENT:
+ switch (rt = regtype(op.sv)) {
+ case RT_DT:
+ ins.kind = I_LD_VX_DT;
+ break;
+ case RT_K:
+ ins.kind = I_LD_VX_K;
+ break;
+ case RT_VX:
+ ins.kind = I_LD_VX_VY;
+ ins.args[ins.len++].val = hexval(op.sv.p[1]);
+ break;
+ default:
+ die_with_off(op.sv.p, E_EXPECTED,
+ "v-, k-, or dt-register, or byte",
+ tokrepr(op.kind), U8_PRI_ARGS(op.sv));
+ }
+
+ break;
+ case T_NUMBER:
+ ins.kind = I_LD_VX_BYTE;
+ ins.args[ins.len++].val = parsenum(op, NS_BYTE);
+ break;
+ default:
+ unreachable();
+ }
+ break;
+
+ default:
+ die_with_off(op.sv.p, E_EXPECTED, "v-, i-, dt-, or st-register",
+ tokrepr(op.kind), U8_PRI_ARGS(op.sv));
+ }
+
+ dapush(&ast, I(ins));
+}
+
+void
+parseop_or(void)
+{
+ TWO_VREG(I_OR);
+}
+
+void
+parseop_ret(void)
+{
+ dapush(&ast, I((struct instr){.kind = I_RET}));
+}
+
+void
+parseop_rnd(void)
+{
+ struct instr ins = {.kind = I_RND};
+ struct token op1, op2;
+
+ op1 = reqnext("v-register", T_IDENT);
+ op2 = reqnext("byte", T_NUMBER);
+
+ if (regtype(op1.sv) != RT_VX) {
+ die_with_off(op1.sv.p, E_EXPECTED, "v-register", tokrepr(op1.kind),
+ U8_PRI_ARGS(op1.sv));
+ }
+
+ ins.args[ins.len++].val = hexval(op1.sv.p[1]);
+ ins.args[ins.len++].val = parsenum(op2, NS_BYTE);
+ dapush(&ast, I(ins));
+}
+
+void
+parseop_rstr(void)
+{
+ ONE_VREG(I_RSTR);
+}
+
+void
+parseop_se(void)
+{
+ struct instr ins = {};
+ struct token op1, op2;
+
+ op1 = reqnext("v-register", T_IDENT);
+ op2 = reqnext("byte or v-register", T_IDENT | T_NUMBER);
+
+ if (regtype(op1.sv) != RT_VX) {
+ die_with_off(op1.sv.p, E_EXPECTED, "v-register", tokrepr(op1.kind),
+ U8_PRI_ARGS(op1.sv));
+ }
+ ins.args[ins.len++].val = hexval(op1.sv.p[1]);
+
+ switch (op2.kind) {
+ case T_IDENT:
+ if (regtype(op2.sv) != RT_VX) {
+ die_with_off(op2.sv.p, E_EXPECTED, "v-register", tokrepr(op2.kind),
+ U8_PRI_ARGS(op2.sv));
+ }
+ ins.kind = I_SE_VX_VY;
+ ins.args[ins.len++].val = hexval(op2.sv.p[1]);
+ break;
+ case T_NUMBER:
+ ins.kind = I_SE_VX_B;
+ ins.args[ins.len++].val = parsenum(op2, NS_BYTE);
+ break;
+ default:
+ unreachable();
+ }
+
+ dapush(&ast, I(ins));
+}
+
+void
+parseop_shl(void)
+{
+ ONE_VREG(I_SHL);
+}
+
+void
+parseop_shr(void)
+{
+ ONE_VREG(I_SHR);
+}
+
+void
+parseop_sknp(void)
+{
+ ONE_VREG(I_SKNP);
+}
+
+void
+parseop_skp(void)
+{
+ ONE_VREG(I_SKP);
+}
+
+void
+parseop_sne(void)
+{
+ struct instr ins = {};
+ struct token op1, op2;
+
+ op1 = reqnext("v-register", T_IDENT);
+ op2 = reqnext("byte or v-register", T_IDENT | T_NUMBER);
+
+ if (regtype(op1.sv) != RT_VX) {
+ die_with_off(op1.sv.p, E_EXPECTED, "v-register", tokrepr(op1.kind),
+ U8_PRI_ARGS(op1.sv));
+ }
+ ins.args[ins.len++].val = hexval(op1.sv.p[1]);
+
+ switch (op2.kind) {
+ case T_IDENT:
+ if (regtype(op2.sv) != RT_VX) {
+ die_with_off(op2.sv.p, E_EXPECTED, "v-register", tokrepr(op2.kind),
+ U8_PRI_ARGS(op2.sv));
+ }
+ ins.kind = I_SNE_VX_VY;
+ ins.args[ins.len++].val = hexval(op2.sv.p[1]);
+ break;
+ case T_NUMBER:
+ ins.kind = I_SNE_VX_B;
+ ins.args[ins.len++].val = parsenum(op2, NS_BYTE);
+ break;
+ default:
+ unreachable();
+ }
+
+ dapush(&ast, I(ins));
+}
+
+void
+parseop_stor(void)
+{
+ ONE_VREG(I_STOR);
+}
+
+void
+parseop_sub(void)
+{
+ TWO_VREG(I_SUB);
+}
+
+void
+parseop_subn(void)
+{
+ TWO_VREG(I_SUBN);
+}
+
+void
+parseop_sys(void)
+{
+ struct instr ins = {.kind = I_SYS};
+ ins.args[ins.len++] = parseaddr(reqnext("address", T_NUMBER | T_IDENT));
+ dapush(&ast, I(ins));
+}
+
+void
+parseop_xor(void)
+{
+ TWO_VREG(I_XOR);
+}
diff --git a/src/c8asm/parser.h b/src/c8asm/parser.h
new file mode 100644
index 0000000..392b003
--- /dev/null
+++ b/src/c8asm/parser.h
@@ -0,0 +1,122 @@
+#ifndef AHOY_C8ASM_PARSER_H
+#define AHOY_C8ASM_PARSER_H
+
+#include <stddef.h>
+#include <stdint.h>
+
+#include <mbstring.h>
+
+struct tokens;
+
+typedef enum {
+ I_ADD_I_VX,
+ I_ADD_VX_B,
+ I_ADD_VX_VY,
+ I_AND,
+ I_BCD,
+ I_CALL,
+ I_CLS,
+ I_DB,
+ I_DRW,
+ I_HEX,
+ I_JP_ADDR,
+ I_JP_V0_ADDR,
+ I_LD_DT,
+ I_LD_I,
+ I_LD_ST,
+ I_LD_VX_BYTE,
+ I_LD_VX_DT,
+ I_LD_VX_K,
+ I_LD_VX_VY,
+ I_OR,
+ I_RET,
+ I_RND,
+ I_RSTR,
+ I_SE_VX_B,
+ I_SE_VX_VY,
+ I_SHL,
+ I_SHR,
+ I_SKNP,
+ I_SKP,
+ I_SNE_VX_B,
+ I_SNE_VX_VY,
+ I_STOR,
+ I_SUB,
+ I_SUBN,
+ I_SYS,
+ I_XOR,
+} instrkind;
+
+typedef enum {
+ R_V0,
+ R_V1,
+ R_V2,
+ R_V3,
+ R_V4,
+ R_V5,
+ R_V6,
+ R_V7,
+ R_V8,
+ R_V9,
+ R_VA,
+ R_VB,
+ R_VC,
+ R_VD,
+ R_VE,
+ R_VF,
+ R_I,
+ R_K,
+ R_DT,
+ R_ST,
+} reg;
+
+typedef enum {
+ D_INSTR,
+ D_LABEL,
+} dirkind;
+
+/* Arguments can always be represented by a uint16_t, however the parser is not
+ responsible for assigning addresses to labels. As a result an arg at this
+ stage can be either a uint16_t or the name of a label. */
+struct raw_addr {
+ bool label;
+ union {
+ uint16_t val;
+ struct u8view sv;
+ };
+};
+
+struct instr {
+ instrkind kind;
+
+ /* The most arguments any instruction can take is 3, so it’s more efficient
+ to just store the arguments in a fixed-size array. The only exception is
+ the ‘db’ instruction which takes a variable-number of arguments, so in
+ that case we use a dynamic array. */
+ union {
+ struct raw_addr args[3];
+ struct {
+ uint8_t *buf;
+ size_t cap;
+ };
+ };
+
+ size_t len;
+};
+
+struct dir {
+ dirkind kind;
+ union {
+ struct u8view name;
+ struct instr instr;
+ };
+};
+
+struct ast {
+ struct dir *buf;
+ size_t len, cap;
+};
+
+struct ast parsefile(struct tokens);
+
+#endif /* !AHOY_C8ASM_PARSER_H */
diff --git a/src/common/cerr.c b/src/common/cerr.c
new file mode 100644
index 0000000..0032795
--- /dev/null
+++ b/src/common/cerr.c
@@ -0,0 +1,73 @@
+#include <errno.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "cerr.h"
+
+#define SGR_BOLD "\33[1m"
+#define SGR_DONE "\33[0m"
+
+static bool color;
+static const char *progname;
+
+void
+cerrinit(const char *s)
+{
+ const char *p = strrchr(s, '/');
+ progname = p ? p + 1 : s;
+
+ if (isatty(STDOUT_FILENO)) {
+ const char *ev = getenv("NO_COLOR");
+ if (!ev || !*ev)
+ color = true;
+ }
+}
+
+void
+die(const char *fmt, ...)
+{
+ va_list ap;
+ int e = errno;
+
+ va_start(ap, fmt);
+ fprintf(stderr, "%s%s:%s ", color ? SGR_BOLD : "", progname,
+ color ? SGR_DONE : "");
+ vfprintf(stderr, fmt, ap);
+ fprintf(stderr, ": %s\n", strerror(e));
+ va_end(ap);
+
+ exit(EXIT_FAILURE);
+}
+
+void
+diex(const char *fmt, ...)
+{
+ va_list ap;
+
+ va_start(ap, fmt);
+ fprintf(stderr, "%s%s:%s ", color ? SGR_BOLD : "", progname,
+ color ? SGR_DONE : "");
+ vfprintf(stderr, fmt, ap);
+ fputc('\n', stderr);
+ va_end(ap);
+
+ exit(EXIT_FAILURE);
+}
+
+void
+die_with_off(const char *file, size_t off, const char *fmt, ...)
+{
+ va_list ap;
+
+ va_start(ap, fmt);
+ fprintf(stderr, "%s%s:%s:%zu:%s ", color ? SGR_BOLD : "", progname, file,
+ off, color ? SGR_DONE : "");
+ vfprintf(stderr, fmt, ap);
+ fputc('\n', stderr);
+ va_end(ap);
+
+ exit(EXIT_FAILURE);
+}
diff --git a/src/common/cerr.h b/src/common/cerr.h
new file mode 100644
index 0000000..de58b1d
--- /dev/null
+++ b/src/common/cerr.h
@@ -0,0 +1,19 @@
+#ifndef AHOY_COMMON_CERR_H
+#define AHOY_COMMON_CERR_H
+
+#include <stddef.h>
+
+/* clang-format off */
+
+[[gnu::nonnull]] void cerrinit(const char *);
+
+[[noreturn, gnu::nonnull, gnu::format(printf, 1, 2)]]
+void die(const char *, ...);
+
+[[noreturn, gnu::nonnull, gnu::format(printf, 1, 2)]]
+void diex(const char *, ...);
+
+[[noreturn, gnu::nonnull, gnu::format(printf, 3, 4)]]
+void die_with_off(const char *, size_t, const char *, ...);
+
+#endif /* !AHOY_COMMON_CERR_H */
diff --git a/vendor/da/da.h b/vendor/da/da.h
new file mode 100644
index 0000000..8891971
--- /dev/null
+++ b/vendor/da/da.h
@@ -0,0 +1,121 @@
+/*
+ * Simple & stupid dynamic array single-header implementation. You can use the
+ * macros defined in this file with any structure that has the following fields:
+ *
+ * struct dyn_array {
+ * T *buf // Array of items
+ * N len // Length of array
+ * N cap // Capacity of array
+ * }
+ *
+ * The type ‘T’ is whatever type you want to store. The type ‘N’ is any numeric
+ * type — most likely ‘size_t’ — but it could be sized as well.
+ *
+ * The daremove() macro also doesn’t bother with shrinking your array when the
+ * length is far lower than the capacity. If you care about that, do it
+ * yourself.
+ *
+ * Remember to call free() on your dynamic arrays ‘buf’ field after use.
+ *
+ *
+ * Macro Overview
+ * ――――――――――――――
+ * The argument ‘a’ to all of the below macros is a pointer to the dynamic array
+ * structure.
+ *
+ * dainit(a, n) Initialize the array with a capacity of ‘n’ items.
+ * dapush(a, x) Append the item ‘x’ to the array
+ * daremove(a, x) Remove the item at index ‘x’ from the array
+ * da_remove_range(a, x, y) Remove the items between the range [x, y)
+ * da_foreach(a, p) Iterate the pointer ‘p’ over each element of the
+ * array. The type of ‘p’ is inferred.
+ *
+ * The ‘dapush()’ macro will double the arrays capacity when it gets full. If
+ * you would like your arrays to grow with a different scale, edit this file.
+ *
+ *
+ * Example
+ * ―――――――
+ *
+ * struct {
+ * int *buf;
+ * size_t len, cap;
+ * } nums;
+ *
+ * // Initialize nums with capacity == 4
+ * dainit(&nums, 4);
+ *
+ * // Append 69, 1337, and 420 to nums
+ * dapush(&nums, 69);
+ * dapush(&nums, 1337);
+ * dapush(&nums, 420);
+ *
+ * da_foreach (&nums, n) {
+ * int x = *n << 1;
+ * printf("n = %d; n² = %d\n", *n, x);
+ * }
+ *
+ * // Remove 1337 and 420 from nums
+ * da_remove_range(&nums, 1, 3);
+ *
+ * // Remove 69 from nums
+ * daremove(&nums, 0);
+ */
+
+#ifndef MANGO_DA_H
+#define MANGO_DA_H
+
+#include <err.h>
+#include <errno.h>
+#include <stddef.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <string.h>
+
+#if __STDC_VERSION__ >= 202311L
+# define DA_NULL nullptr
+#else
+# define DA_NULL NULL
+#endif
+
+#define DA_ALLOC(p, n) \
+ do { \
+ if ((n) && SIZE_MAX / (n) < sizeof(*(p))) { \
+ errno = EOVERFLOW; \
+ err(EXIT_FAILURE, "realloc"); \
+ } \
+ if (!((p) = realloc((p), (n) * sizeof(*(p))))) \
+ err(EXIT_FAILURE, "realloc"); \
+ } while (0)
+
+#define dainit(a, n) \
+ do { \
+ (a)->buf = DA_NULL; \
+ (a)->cap = (n); \
+ (a)->len = 0; \
+ if (n) \
+ DA_ALLOC((a)->buf, (a)->cap); \
+ } while (0)
+
+#define dapush(a, x) \
+ do { \
+ if ((a)->len >= (a)->cap) { \
+ (a)->cap = (a)->cap ? (a)->cap * 2 : 1; \
+ DA_ALLOC((a)->buf, (a)->cap); \
+ } \
+ (a)->buf[(a)->len++] = (x); \
+ } while (0)
+
+#define daremove(a, i) da_remove_range((a), (i), (i) + 1)
+
+#define da_remove_range(a, i, j) \
+ do { \
+ memmove((a)->buf + (i), (a)->buf + (j), \
+ ((a)->len - (j)) * sizeof(*(a)->buf)); \
+ (a)->len -= j - i; \
+ } while (0)
+
+#define da_foreach(a, p) \
+ for (typeof((a)->buf) p = (a)->buf; (size_t)(p - (a)->buf) < (a)->len; p++)
+
+#endif /* !MANGO_DA_H */
diff --git a/vendor/librune/.gitignore b/vendor/librune/.gitignore
new file mode 100644
index 0000000..457da10
--- /dev/null
+++ b/vendor/librune/.gitignore
@@ -0,0 +1,12 @@
+.cache/
+test/gbrk
+*.[ao]
+a.out
+compile_commands.json
+failures
+main
+make
+main.c
+Makefile
+NOTE-TO-SELF
+test.c
diff --git a/vendor/librune/LICENSE b/vendor/librune/LICENSE
new file mode 100644
index 0000000..b946725
--- /dev/null
+++ b/vendor/librune/LICENSE
@@ -0,0 +1,14 @@
+BSD Zero Clause License
+
+Copyright © 2024 Thomas Voss
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
diff --git a/vendor/librune/README.md b/vendor/librune/README.md
new file mode 100644
index 0000000..9beb827
--- /dev/null
+++ b/vendor/librune/README.md
@@ -0,0 +1,60 @@
+# librune — easy Unicode in a post-ASCII world
+
+Librune is a C library that aims to make interacting with Unicode and
+UTF-8 easy in C. There are no plans at the moment to support UTF-16 or
+-32, but they may be supported if such a usecase ever comes up.
+
+This library requires C23.
+
+
+## Terminology
+
+This library uses the term ‘rune’ to refer to a single Unicode-codepoint,
+and defines a `rune` datatype which is an unsigned integer type which
+represents a rune (shocker).
+
+
+## Headers
+
+This library contains the following headers:
+
+- `builder.h` — string building functions
+- `gbrk.h` — grapheme-iteration functions
+- `mbstring.h` — multibyte-string encoding, decoding, iteration, etc.
+- `rtype.h` — rune categorization à la `ctype.h`
+- `rune.h` — rune-constants, -macros, and -functions
+
+
+## Compilation
+
+This library comes with a build script in the form of `make.c`. To build
+the library all you need is a C compiler. The build script will build a
+static library called ‘librune.a’.
+
+```sh
+# Make sure to link with pthread
+cc -lpthread -o make make.c
+./make
+```
+
+If you want to build the library in release-mode (optimizations enabled),
+simply pass the `-r` flag to the build script:
+
+```sh
+./make -r
+```
+
+You can also pass the `-l` flag to enable link-time optimizations:
+
+```sh
+./make -lr
+```
+
+
+## Installation
+
+There is no ‘intended’ way in which this library should be installed,
+used, and distributed. This library is primarily written for myself, and
+I prefer to vendor it in my projects. You may choose to install it as a
+shared and/or static library. You’re an engineer aren’t you? Figure it
+out.
diff --git a/vendor/librune/cbs.h b/vendor/librune/cbs.h
new file mode 100644
index 0000000..5ae257f
--- /dev/null
+++ b/vendor/librune/cbs.h
@@ -0,0 +1,954 @@
+/* Single-header library to help write build scripts in C. This library is
+ POSIX compliant, so it should work on all respectible UNIX-like systems.
+
+ You can find the CBS git repository at https://git.sr.ht/~mango/cbs and you
+ can include this in your project with the following command:
+
+ $ wget 'https://git.sr.ht/~mango/cbs/blob/master/cbs.h'
+
+ This library is licensed under the 0-Clause BSD license, and as such you may
+ do whatever you want to it, however you want to it, whenever you want. You
+ are encouraged in fact to modify this library to suit your specific usecase.
+
+ All functions and macros are documented. You can figure out the API pretty
+ easily by just reading the comments in this file.
+
+ In many cases you may want to be able to execute commands on multiple threads
+ to speed up compilation, such as the -j option when using Make. Functions
+ for creating and using thread pools will be made available if the CBS_PTHREAD
+ macro is defined before including this file. Do note that on POSIX platforms
+ it will require linking to the pthreads library when bootstrapping the build
+ script.
+
+ This file does not support C89. Fuck C89, that shit is ancient. Move on.
+
+ IMPORTANT NOTE: Any identifiers prefixed with an underscore (e.g. ‘_rebuild’)
+ are meant for internal use only and you should not touch them unless you know
+ what you’re doing.
+
+ IMPORTANT NOTE: All the functions and macros in this library will terminate
+ the program on error. If this is undesired behavior, feel free to edit the
+ functions to return errors.
+
+ IMPORTANT NOTE: This library is built with the assumption that the source
+ file for your build script and your build script are in the SAME DIRECTORY.
+
+ There are a few exceptions to the above rule, and they are documented.
+
+ This library does not aim to ever support Windows */
+
+#ifndef C_BUILD_SYSTEM_H
+#define C_BUILD_SYSTEM_H
+
+#ifdef __GNUC__
+# pragma GCC diagnostic push
+# pragma GCC diagnostic ignored "-Wunused-function"
+# pragma GCC diagnostic ignored "-Wparentheses"
+#endif
+
+/* Assert that the user is building for a supported platform. The only portable
+ way to check for POSIX is to validate that unistd.h exists. This is only
+ possible without compiler extensions in C23 (although some compilers support
+ it as an extension in earlier editions), so people compiling for pre-C23
+ might not get this error if on a bad platform, and may end up being a bit
+ confused.
+
+ It’s just a maybe though, this is nothing more than a sanity check for the
+ users sake. */
+#if defined(__has_include) && !__has_include(<unistd.h>)
+# error "Non-POSIX platform detected"
+#endif
+
+#ifdef __APPLE__
+# define st_mtim st_mtimespec
+#endif
+
+#include <sys/stat.h>
+#include <sys/wait.h>
+
+#include <errno.h>
+#include <libgen.h>
+#include <limits.h>
+#ifdef CBS_PTHREAD
+# include <pthread.h>
+#endif
+#include <stdarg.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <wordexp.h>
+
+/* C23 changed a lot so we want to check for it */
+#if __STDC_VERSION__ >= 202000
+# define CBS_IS_C23 1
+#endif
+
+/* Some C23 compat. In C23 booleans are actual keywords, and the noreturn
+ attribute is different. */
+#if CBS_IS_C23
+# define noreturn [[noreturn]]
+#else
+# include <stdbool.h>
+# include <stddef.h>
+# include <stdnoreturn.h>
+# define nullptr NULL
+#endif
+
+/* Give helpful diagnostics when people use die() incorrectly on GCC. C23
+ introduced C++ attribute syntax, so we need a check for that too. */
+#ifdef __GNUC__
+# if CBS_IS_C23
+# define ATTR_FMT [[gnu::format(printf, 1, 2)]]
+# else
+# define ATTR_FMT __attribute__((format(printf, 1, 2)))
+# endif
+#else
+# define ATTR_FMT
+#endif
+
+/* Clang defines this attribute, and while it does nothing it does serve as
+ good documentation. */
+#ifndef _Nullable
+# define _Nullable
+#endif
+
+/* Convert the given variadic arguments to a string array */
+#define _vtoa(...) ((char *[]){__VA_ARGS__})
+
+/* Internal global versions of argc and argv, so our functions and macros can
+ access them from anywhere. */
+static int _cbs_argc;
+static char **_cbs_argv;
+
+/* A vector of strings used to accumulate output of functions such as pcquery().
+ The array of strings buf has length len, and is not null-terminated. You
+ should always zero-initialize variables of this type. */
+struct strv {
+ char **buf;
+ size_t len;
+};
+
+/* Free and zero a string vector. Because this function zeros the structure, it
+ is safe to reuse the vector after this function is called. */
+static void strvfree(struct strv *);
+
+/* A wrapper function around realloc(). It behaves exactly the same except
+ instead of taking a buffer size as an argument, it takes a count n of
+ elements, and a size m of each element. This allows it to properly check for
+ overflow, and errors if overflow would occur. */
+static void *bufalloc(void *_Nullable, size_t n, size_t m);
+
+/* Error reporting functions. The die() function takes the same arguments as
+ printf() and prints the corresponding string to stderr. It also prefixes the
+ string with the command name followed by a colon, and suffixes the string
+ with a colon and the error string returned from strerror().
+
+ If you want to print just the error message and no custom text, NULL may be
+ passed to die(). NULL should not be passed to diex().
+
+ diex() is the same as die() but does not print a strerror() error string. */
+ATTR_FMT noreturn static void die(const char *_Nullable, ...);
+ATTR_FMT noreturn static void diex(const char *, ...);
+
+/* Initializes some data required for this header to work properly. This should
+ be the first thing called in main() with argc and argv passed. It also
+ chdir()s into the directory where the build script is located. */
+static void cbsinit(int, char **);
+
+/* Get the number of items in the array a */
+#define lengthof(a) (sizeof(a) / sizeof(*(a)))
+
+/* Struct representing a CLI command that various functions act on. You should
+ always zero-initialize variables of this type before use.
+
+ After executing a command, you can reuse the already allocated buffer this
+ command holds by calling cmdclr(). When you’re really done with an object of
+ this type, remember to call free() on ._argv.
+
+ The ._argv field is a NULL-terminated list of command arguments of length
+ ._len. You may safely read from both of these fields but they should NOT be
+ modified without use of cmdadd() and cmdaddv(). */
+typedef struct {
+ char *dst;
+ char **_argv;
+ size_t _len, _cap;
+} cmd_t;
+
+/* Returns whether or not a binary of the given name exists in the users
+ environment as defined by $PATH. */
+static bool binexists(const char *);
+
+/* cmdadd() adds the variadic string arguments to the given command.
+ Alternatively, the cmdaddv() function adds the n strings pointed to by p to
+ the given command. */
+static void cmdaddv(cmd_t *, char **p, size_t n);
+#define cmdadd(cmd, ...) \
+ cmdaddv(cmd, _vtoa(__VA_ARGS__), lengthof(_vtoa(__VA_ARGS__)))
+
+/* Clear (but not free) the command c. Useful for reusing the same command
+ struct to minimize allocations. */
+static void cmdclr(cmd_t *c);
+
+/* The cmdexec() function executes the given command and waits for it to
+ terminate, returning its exit code. The cmdexeca() function executes the
+ given command and returns immediately, returning its process ID.
+
+ The cmdexecb() function is like cmdexec() except it writes the given commands
+ standard output to the character buffer pointed to by p. It also stores the
+ size of the output in *n. The character buffer p is null-terminated. If the
+ given command produces no output to the standard output, p will be set to
+ NULL.
+
+ cmdexec() and cmdexecb() have the same return values as cmdwait(). */
+static int cmdexec(cmd_t);
+static pid_t cmdexeca(cmd_t);
+static int cmdexecb(cmd_t, char **p, size_t *n);
+
+/* Wait for the process with the given PID to terminate, and return its exit
+ status. If the process was terminated by a signal 256 is returned. */
+static int cmdwait(pid_t);
+
+/* Write a representation of the given command to the given file stream. This
+ can be used to mimick the echoing behavior of make(1). The cmdput() function
+ is a nice convenience function so you can avoid writing ‘stdout’ all the
+ time. */
+static void cmdput(cmd_t);
+static void cmdputf(FILE *, cmd_t);
+
+/* Expand the environment variable s using /bin/sh expansion rules and append
+ the results in the given string vector. If the environment variable is NULL
+ or empty, then store the strings specified by the array p of length n.
+
+ env_or_default() is the same as env_or_defaultv() but you provide p as
+ variadic arguments.
+
+ If the pointer p is null, then no default value is appended to the given
+ string vector when the environment variable is not present. */
+static void env_or_defaultv(struct strv *, const char *s, char *_Nullable *p,
+ size_t n);
+#define env_or_default(sv, s, ...) \
+ env_or_defaultv((sv), (s), _vtoa(__VA_ARGS__), lengthof(_vtoa(__VA_ARGS__)))
+
+/* Returns if a file exists at the given path. A return value of false may also
+ mean you don’t have the proper file access permissions, which will also set
+ errno. */
+static bool fexists(const char *);
+
+/* Compare the modification dates of the two named files.
+
+ A return value >0 means the LHS is newer than the RHS.
+ A return value <0 means the LHS is older than the RHS.
+ A return value of 0 means the LHS and RHS have the same modification date.
+
+ The fmdnewer() and fmdolder() functions are wrappers around fmdcmp() that
+ return true when the LHS is newer or older than the RHS respectively. */
+static int fmdcmp(const char *, const char *);
+static bool fmdolder(const char *, const char *);
+static bool fmdnewer(const char *, const char *);
+
+/* Report if any of n files specified by p render the file base outdated. If
+ the file base does not exist, this function returns true. You will typically
+ call this with a compiled program as base, and C source files as p. The
+ macro foutdated() is a wrapper around foutdatedv() that allows you to specify
+ the sources to base as variadic arguments instead of as an array. */
+static bool foutdatedv(const char *base, const char **p, size_t n);
+#define foutdated(s, ...) \
+ foutdatedv(s, (const char **)_vtoa(__VA_ARGS__), \
+ lengthof(_vtoa(__VA_ARGS__)))
+
+/* Rebuild the build script if it has been modified, and execute the newly built
+ script. You should call the rebuild() macro at the very beginning of main(),
+ but right after cbsinit(). You probably don’t want to call _rebuild()
+ directly.
+
+ NOTE: This function/macro REQUIRES that the source for the build script and
+ the compiled build script are in the SAME DIRECTORY. */
+static void _rebuild(char *);
+#define rebuild() _rebuild(__FILE__)
+
+/* Get the number of available CPUs, or -1 on error. This function also returns
+ -1 if the _SC_NPROCESSORS_ONLN flag to sysconf(3) is not available. In that
+ case, errno will not be set. */
+static int nproc(void);
+
+/* Append the arguments returned by an invokation of pkg-config for the library
+ lib to the given string vector. The flags argument is one-or-more of the
+ flags in the pkg_config_flags enum bitwise-ORed together.
+
+ If PKGC_CFLAGS is specified, call pkg-config with ‘--cflags’.
+ If PKGC_LIBS is specified, call pkg-config with ‘--libs’.
+
+ This function returns true on success and false if pkg-config is not found on
+ the system. To check for pkg-configs existance, you can use the binexists()
+ function. */
+static bool pcquery(struct strv *, char *lib, int flags);
+enum pkg_config_flags {
+ PKGC_LIBS = 1 << 0,
+ PKGC_CFLAGS = 1 << 1,
+};
+
+#ifdef CBS_PTHREAD
+
+/* A tfunc_t represents a function to be executed by a threads in a thread pool.
+ It takes an argument in the form of a void * and returns nothing. */
+typedef void (*tfunc_t)(void *);
+
+/* A tfunc_free_t represents a function which frees the argument passed to a
+ tfunc_t function. */
+typedef void (*tfree_func_t)(void *);
+
+/* A thread pool job queue. Meant for internal-use only. */
+struct _tjob {
+ void *arg;
+ tfunc_t fn;
+ tfree_func_t free;
+ struct _tjob *next;
+};
+
+/* A basic thread pool. None of its fields should really be touched. */
+typedef struct {
+ bool _stop;
+ size_t _tcnt, _left;
+ pthread_t *_thrds;
+ pthread_cond_t _cnd;
+ pthread_mutex_t _mtx;
+ struct _tjob *_head, *_tail;
+} tpool_t;
+
+/* Initialize and destroy a thread pool. The tpinit() function initializes the
+ given thread pool and creates n threads ready to execute work. The tpfree()
+ function should be called after a thread pool has been used to release all
+ resources used by the thread pool. */
+static void tpinit(tpool_t *, size_t n);
+static void tpfree(tpool_t *);
+
+/* Wait for all jobs on the given thread pool to be executed. Note that this
+ function does not destroy the threads or free any resources — those are tasks
+ for the tpfree() function. */
+static void tpwait(tpool_t *);
+
+/* Enqueue and dequeue jobs to the thread pools job queue. The tpenq() function
+ is threadsafe while the _tpdeq() function is not (so don’t use it). When
+ calling the tpenq() function, the function fn will be queued to be executed
+ by a thread in the thread pool with the argument arg. If the given argument
+ needs to be deallocated after the job completes, you can pass the free
+ argument which will be called with the given argument after use. If free is
+ NULL, it will be ignored.
+
+ The free() function is a valid argument to the free parameter. */
+static void tpenq(tpool_t *, tfunc_t fn, void *arg,
+ tfree_func_t _Nullable free);
+static struct _tjob *_tpdeq(tpool_t *);
+
+#endif /* CBS_PTHREAD */
+
+/* BEGIN DEFINITIONS */
+
+void
+strvfree(struct strv *v)
+{
+ free(v->buf);
+ memset(v, 0, sizeof(*v));
+}
+
+void *
+bufalloc(void *p, size_t n, size_t m)
+{
+ if (n && SIZE_MAX / n < m) {
+ errno = EOVERFLOW;
+ die(__func__);
+ }
+
+ if (!(p = realloc(p, n * m)))
+ die(__func__);
+ return p;
+}
+
+void
+die(const char *fmt, ...)
+{
+ int e = errno;
+ va_list ap;
+
+ va_start(ap, fmt);
+ flockfile(stderr);
+ fprintf(stderr, "%s: ", *_cbs_argv);
+ if (fmt) {
+ vfprintf(stderr, fmt, ap);
+ fprintf(stderr, ": ");
+ }
+ fprintf(stderr, "%s\n", strerror(e));
+ exit(EXIT_FAILURE);
+}
+
+void
+diex(const char *fmt, ...)
+{
+ va_list ap;
+
+ va_start(ap, fmt);
+ flockfile(stderr);
+ fprintf(stderr, "%s: ", *_cbs_argv);
+ vfprintf(stderr, fmt, ap);
+ fputc('\n', stderr);
+ exit(EXIT_FAILURE);
+}
+
+void
+cbsinit(int argc, char **argv)
+{
+ char *s;
+
+ _cbs_argc = argc;
+ _cbs_argv = bufalloc(nullptr, argc, sizeof(char *));
+ for (int i = 0; i < argc; i++) {
+ if (!(_cbs_argv[i] = strdup(argv[i]))) {
+ /* We might not have set _cbs_argv[0] yet, so we can’t use die() */
+ fprintf(stderr, "%s: strdup: %s\n", *argv, strerror(errno));
+ exit(EXIT_FAILURE);
+ }
+ }
+
+ /* Cd to dirname(argv[0]). We can’t use dirname(3) because it may modify
+ the source string. */
+ if (s = strrchr(_cbs_argv[0], '/')) {
+ s[0] = '\0';
+ if (chdir(_cbs_argv[0]) == -1)
+ die("chdir: %s", s);
+ s[0] = '/';
+ }
+}
+
+static size_t
+_next_powerof2(size_t x)
+{
+#if defined(__has_builtin) && __has_builtin(__builtin_clzl)
+ x = x <= 1 ? 1 : 1 << (64 - __builtin_clzl(x - 1));
+#else
+ if (x) {
+ x--;
+ x |= x >> 1;
+ x |= x >> 2;
+ x |= x >> 4;
+ x |= x >> 8;
+ if (sizeof(size_t) >= 4)
+ x |= x >> 16;
+ if (sizeof(size_t) >= 8)
+ x |= x >> 32;
+ }
+ x++;
+#endif
+
+ return x;
+}
+
+bool
+binexists(const char *name)
+{
+ char *p, *path;
+
+ if (!(path = getenv("PATH")))
+ diex("PATH environment variable not found");
+
+ if (!(path = strdup(path)))
+ die("strdup");
+ p = strtok(path, ":");
+ while (p) {
+ char buf[PATH_MAX];
+ snprintf(buf, sizeof(buf), "%s/%s", p, name);
+ if (fexists(buf)) {
+ free(path);
+ return true;
+ }
+
+ p = strtok(nullptr, ":");
+ }
+
+ free(path);
+ return false;
+}
+
+void
+cmdaddv(cmd_t *cmd, char **xs, size_t n)
+{
+ if (cmd->_len + n >= cmd->_cap) {
+ cmd->_cap = _next_powerof2(cmd->_len + n) + 2;
+ cmd->_argv = bufalloc(cmd->_argv, cmd->_cap, sizeof(char *));
+ }
+
+ memcpy(cmd->_argv + cmd->_len, xs, n * sizeof(*xs));
+ cmd->_len += n;
+ cmd->_argv[cmd->_len] = nullptr;
+}
+
+void
+cmdclr(cmd_t *c)
+{
+ c->_len = 0;
+ *c->_argv = nullptr;
+}
+
+int
+cmdexec(cmd_t c)
+{
+ return cmdwait(cmdexeca(c));
+}
+
+pid_t
+cmdexeca(cmd_t c)
+{
+ pid_t pid;
+
+ switch (pid = fork()) {
+ case -1:
+ die("fork");
+ case 0:
+ execvp(*c._argv, c._argv);
+ die("execvp: %s", *c._argv);
+ }
+
+ return pid;
+}
+
+int
+cmdexecb(cmd_t c, char **p, size_t *n)
+{
+ enum {
+ FD_R,
+ FD_W,
+ };
+ pid_t pid;
+ int fds[2];
+ char *buf;
+ size_t len, blksize;
+ struct stat sb;
+
+ if (pipe(fds) == -1)
+ die("pipe");
+
+ switch (pid = fork()) {
+ case -1:
+ die("fork");
+ case 0:
+ close(fds[FD_R]);
+ if (dup2(fds[FD_W], STDOUT_FILENO) == -1)
+ die("dup2");
+ execvp(*c._argv, c._argv);
+ die("execvp: %s", *c._argv);
+ }
+
+ close(fds[FD_W]);
+
+ buf = nullptr;
+ len = 0;
+
+ blksize = fstat(fds[FD_R], &sb) == -1 ? BUFSIZ : sb.st_blksize;
+ for (;;) {
+ /* This can maybe somewhere somehow break some system. I do not care */
+ char tmp[blksize];
+ ssize_t nr;
+
+ if ((nr = read(fds[FD_R], tmp, blksize)) == -1)
+ die("read");
+ if (!nr)
+ break;
+ buf = bufalloc(buf, len + nr + 1, sizeof(char));
+ memcpy(buf + len, tmp, nr);
+ len += nr;
+ }
+
+ close(fds[FD_R]);
+ if (buf)
+ buf[len] = 0;
+ *p = buf;
+ *n = len;
+ return cmdwait(pid);
+}
+
+int
+cmdwait(pid_t pid)
+{
+ for (;;) {
+ int ws;
+ if (waitpid(pid, &ws, 0) == -1)
+ die("waitpid");
+
+ if (WIFEXITED(ws))
+ return WEXITSTATUS(ws);
+
+ if (WIFSIGNALED(ws))
+ return 256;
+ }
+}
+
+/* import shlex
+
+ s = '#define SHELL_SAFE "'
+ for c in map(chr, range(128)):
+ if not shlex._find_unsafe(c):
+ s += c
+ print(s + '"') */
+#define SHELL_SAFE \
+ "%+,-./0123456789:=@ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz"
+
+void
+cmdput(cmd_t c)
+{
+ cmdputf(stdout, c);
+}
+
+void
+cmdputf(FILE *stream, cmd_t cmd)
+{
+ flockfile(stream);
+ for (size_t i = 0; i < cmd._len; i++) {
+ bool safe = true;
+ char *p, *q;
+
+ p = q = cmd._argv[i];
+ for (; *q; q++) {
+ if (!strchr(SHELL_SAFE, *q)) {
+ safe = false;
+ break;
+ }
+ }
+
+ if (safe)
+ fputs(p, stream);
+ else {
+ putc('\'', stream);
+ for (q = p; *q; q++) {
+ if (*q == '\'')
+ fputs("'\"'\"'", stream);
+ else
+ putc(*q, stream);
+ }
+ putc('\'', stream);
+ }
+
+ putc(i == cmd._len - 1 ? '\n' : ' ', stream);
+ }
+ funlockfile(stream);
+}
+
+void
+env_or_defaultv(struct strv *sv, const char *s, char **p, size_t n)
+{
+ wordexp_t we;
+ const char *ev;
+
+ if ((ev = getenv(s)) && *ev) {
+ switch (wordexp(ev, &we, WRDE_NOCMD)) {
+ case WRDE_BADCHAR:
+ case WRDE_BADVAL:
+ case WRDE_SYNTAX:
+ errno = EINVAL;
+ die("wordexp");
+ case WRDE_NOSPACE:
+ errno = ENOMEM;
+ die("wordexp");
+ }
+
+ p = we.we_wordv;
+ n = we.we_wordc;
+ } else if (!p)
+ return;
+
+ sv->buf = bufalloc(sv->buf, sv->len + n, sizeof(*sv->buf));
+ for (size_t i = 0; i < n; i++) {
+ if (!(sv->buf[sv->len + i] = strdup(p[i])))
+ die("strdup");
+ }
+ sv->len += n;
+
+ if (ev && *ev)
+ wordfree(&we);
+}
+
+bool
+fexists(const char *f)
+{
+ return !access(f, F_OK);
+}
+
+int
+fmdcmp(const char *lhs, const char *rhs)
+{
+ struct stat sbl, sbr;
+
+ if (stat(lhs, &sbl) == -1)
+ die("%s", lhs);
+ if (stat(rhs, &sbr) == -1)
+ die("%s", rhs);
+
+ return sbl.st_mtim.tv_sec == sbr.st_mtim.tv_sec
+ ? sbl.st_mtim.tv_nsec - sbr.st_mtim.tv_nsec
+ : sbl.st_mtim.tv_sec - sbr.st_mtim.tv_sec;
+}
+
+bool
+fmdnewer(const char *lhs, const char *rhs)
+{
+ return fmdcmp(lhs, rhs) > 0;
+}
+
+bool
+fmdolder(const char *lhs, const char *rhs)
+{
+ return fmdcmp(lhs, rhs) < 0;
+}
+
+bool
+foutdatedv(const char *src, const char **deps, size_t n)
+{
+ if (!fexists(src))
+ return true;
+ for (size_t i = 0; i < n; i++) {
+ if (fmdolder(src, deps[i]))
+ return true;
+ }
+ return false;
+}
+
+void
+_rebuild(char *src)
+{
+ char *bbn, *sbn, *argv0;
+ cmd_t cmd = {0};
+ size_t bufsiz;
+
+ /* We assume that the compiled binary and the source file are in the same
+ directory. */
+ if (sbn = strrchr(src, '/'))
+ sbn++;
+ else
+ sbn = src;
+ if (bbn = strrchr(*_cbs_argv, '/'))
+ bbn++;
+ else
+ bbn = src;
+
+ if (!foutdated(bbn, sbn))
+ return;
+
+ cmdadd(&cmd, "cc");
+#ifdef CBS_PTHREAD
+ cmdadd(&cmd, "-lpthread");
+#endif
+ cmdadd(&cmd, "-o", bbn, sbn);
+ cmdput(cmd);
+ if (cmdexec(cmd))
+ diex("Compilation of build script failed");
+
+ cmdclr(&cmd);
+
+ argv0 = bufalloc(nullptr, strlen(bbn) + 3, 1);
+ *_cbs_argv = argv0;
+
+ *argv0++ = '.';
+ *argv0++ = '/';
+ strcpy(argv0, bbn);
+
+ cmdaddv(&cmd, _cbs_argv, _cbs_argc);
+ execvp(*cmd._argv, cmd._argv);
+ die("execvp: %s", *cmd._argv);
+}
+
+int
+nproc(void)
+{
+#ifdef _SC_NPROCESSORS_ONLN
+ return (int)sysconf(_SC_NPROCESSORS_ONLN);
+#else
+ errno = 0;
+ return -1;
+#endif
+}
+
+bool
+pcquery(struct strv *vec, char *lib, int flags)
+{
+ int ec;
+ char *p;
+ size_t n;
+ cmd_t c = {0};
+ wordexp_t we;
+
+ p = nullptr;
+
+ cmdadd(&c, "pkg-config");
+ if (flags & PKGC_LIBS)
+ cmdadd(&c, "--libs");
+ if (flags & PKGC_CFLAGS)
+ cmdadd(&c, "--cflags");
+ cmdadd(&c, lib);
+
+ if ((ec = cmdexecb(c, &p, &n))) {
+ if (errno == ENOENT) {
+ free(c._argv);
+ return false;
+ }
+ diex("pkg-config terminated with exit-code %d", ec);
+ }
+
+ if (!p)
+ return true;
+
+ /* Remove trailing newline */
+ p[n - 1] = 0;
+
+ switch (wordexp(p, &we, WRDE_NOCMD)) {
+ case WRDE_BADCHAR:
+ case WRDE_BADVAL:
+ case WRDE_SYNTAX:
+ errno = EINVAL;
+ die("wordexp");
+ case WRDE_NOSPACE:
+ errno = ENOMEM;
+ die("wordexp");
+ }
+
+ vec->buf = bufalloc(vec->buf, vec->len + we.we_wordc, sizeof(char *));
+ for (size_t i = 0; i < we.we_wordc; i++) {
+ char *p = strdup(we.we_wordv[i]);
+ if (!p)
+ die(__func__);
+ vec->buf[vec->len++] = p;
+ }
+
+ wordfree(&we);
+ free(p);
+ return true;
+}
+
+#ifdef CBS_PTHREAD
+
+static void *
+_tpwork(void *arg)
+{
+ tpool_t *tp = arg;
+
+ while (!tp->_stop) {
+ struct _tjob *j;
+
+ pthread_mutex_lock(&tp->_mtx);
+ while (!tp->_stop && !tp->_head)
+ pthread_cond_wait(&tp->_cnd, &tp->_mtx);
+ if (tp->_stop) {
+ pthread_mutex_unlock(&tp->_mtx);
+ break;
+ }
+
+ j = _tpdeq(tp);
+ pthread_mutex_unlock(&tp->_mtx);
+
+ j->fn(j->arg);
+ if (j->free)
+ j->free(j->arg);
+ free(j);
+
+ pthread_mutex_lock(&tp->_mtx);
+ tp->_left--;
+ pthread_cond_broadcast(&tp->_cnd);
+ pthread_mutex_unlock(&tp->_mtx);
+ }
+
+ return nullptr;
+}
+
+void
+tpinit(tpool_t *tp, size_t n)
+{
+ tp->_tcnt = n;
+ tp->_stop = false;
+ tp->_left = 0;
+ tp->_head = tp->_tail = nullptr;
+ tp->_thrds = bufalloc(nullptr, n, sizeof(pthread_t));
+ pthread_cond_init(&tp->_cnd, nullptr);
+ pthread_mutex_init(&tp->_mtx, nullptr);
+
+ for (size_t i = 0; i < n; i++)
+ pthread_create(tp->_thrds + i, nullptr, _tpwork, tp);
+}
+
+void
+tpfree(tpool_t *tp)
+{
+ tp->_stop = true;
+
+ pthread_mutex_lock(&tp->_mtx);
+ pthread_cond_broadcast(&tp->_cnd);
+ pthread_mutex_unlock(&tp->_mtx);
+
+ for (size_t i = 0; i < tp->_tcnt; i++)
+ pthread_join(tp->_thrds[i], nullptr);
+
+ free(tp->_thrds);
+ while (tp->_head) {
+ struct _tjob *j = _tpdeq(tp);
+ if (j->free)
+ j->free(j->arg);
+ free(j);
+ }
+
+ pthread_cond_destroy(&tp->_cnd);
+ pthread_mutex_destroy(&tp->_mtx);
+}
+
+struct _tjob *
+_tpdeq(tpool_t *tp)
+{
+ struct _tjob *j = tp->_head;
+
+ if (j) {
+ tp->_head = tp->_head->next;
+ if (!tp->_head)
+ tp->_tail = nullptr;
+ }
+
+ return j;
+}
+
+void
+tpenq(tpool_t *tp, tfunc_t fn, void *arg, tfree_func_t free)
+{
+ struct _tjob *j = bufalloc(nullptr, 1, sizeof(struct _tjob));
+ *j = (struct _tjob){
+ .fn = fn,
+ .arg = arg,
+ .free = free,
+ };
+
+ pthread_mutex_lock(&tp->_mtx);
+ if (tp->_tail)
+ tp->_tail->next = j;
+ if (!tp->_head)
+ tp->_head = j;
+ tp->_tail = j;
+ tp->_left++;
+ pthread_cond_signal(&tp->_cnd);
+ pthread_mutex_unlock(&tp->_mtx);
+}
+
+void
+tpwait(tpool_t *tp)
+{
+ pthread_mutex_lock(&tp->_mtx);
+ while (!tp->_stop && tp->_left)
+ pthread_cond_wait(&tp->_cnd, &tp->_mtx);
+ pthread_mutex_unlock(&tp->_mtx);
+}
+
+#endif /* CBS_PTHREAD */
+
+#ifdef __GNUC__
+# pragma GCC diagnostic pop
+#endif
+
+#ifdef __APPLE__
+# undef st_mtim
+#endif
+
+#endif /* !C_BUILD_SYSTEM_H */
diff --git a/vendor/librune/data/GraphemeBreakTest.txt b/vendor/librune/data/GraphemeBreakTest.txt
new file mode 100644
index 0000000..aeaa01a
--- /dev/null
+++ b/vendor/librune/data/GraphemeBreakTest.txt
@@ -0,0 +1,1187 @@
+0020÷0020
+0020×0308÷0020
+0020÷000D
+0020×0308÷000D
+0020÷000A
+0020×0308÷000A
+0020÷0001
+0020×0308÷0001
+0020×034F
+0020×0308×034F
+0020÷1F1E6
+0020×0308÷1F1E6
+0020÷0600
+0020×0308÷0600
+0020×0A03
+0020×0308×0A03
+0020÷1100
+0020×0308÷1100
+0020÷1160
+0020×0308÷1160
+0020÷11A8
+0020×0308÷11A8
+0020÷AC00
+0020×0308÷AC00
+0020÷AC01
+0020×0308÷AC01
+0020×0900
+0020×0308×0900
+0020×0903
+0020×0308×0903
+0020÷0904
+0020×0308÷0904
+0020÷0D4E
+0020×0308÷0D4E
+0020÷0915
+0020×0308÷0915
+0020÷231A
+0020×0308÷231A
+0020×0300
+0020×0308×0300
+0020×093C
+0020×0308×093C
+0020×094D
+0020×0308×094D
+0020×200D
+0020×0308×200D
+0020÷0378
+0020×0308÷0378
+000D÷0020
+000D÷0308÷0020
+000D÷000D
+000D÷0308÷000D
+000D×000A
+000D÷0308÷000A
+000D÷0001
+000D÷0308÷0001
+000D÷034F
+000D÷0308×034F
+000D÷1F1E6
+000D÷0308÷1F1E6
+000D÷0600
+000D÷0308÷0600
+000D÷0A03
+000D÷0308×0A03
+000D÷1100
+000D÷0308÷1100
+000D÷1160
+000D÷0308÷1160
+000D÷11A8
+000D÷0308÷11A8
+000D÷AC00
+000D÷0308÷AC00
+000D÷AC01
+000D÷0308÷AC01
+000D÷0900
+000D÷0308×0900
+000D÷0903
+000D÷0308×0903
+000D÷0904
+000D÷0308÷0904
+000D÷0D4E
+000D÷0308÷0D4E
+000D÷0915
+000D÷0308÷0915
+000D÷231A
+000D÷0308÷231A
+000D÷0300
+000D÷0308×0300
+000D÷093C
+000D÷0308×093C
+000D÷094D
+000D÷0308×094D
+000D÷200D
+000D÷0308×200D
+000D÷0378
+000D÷0308÷0378
+000A÷0020
+000A÷0308÷0020
+000A÷000D
+000A÷0308÷000D
+000A÷000A
+000A÷0308÷000A
+000A÷0001
+000A÷0308÷0001
+000A÷034F
+000A÷0308×034F
+000A÷1F1E6
+000A÷0308÷1F1E6
+000A÷0600
+000A÷0308÷0600
+000A÷0A03
+000A÷0308×0A03
+000A÷1100
+000A÷0308÷1100
+000A÷1160
+000A÷0308÷1160
+000A÷11A8
+000A÷0308÷11A8
+000A÷AC00
+000A÷0308÷AC00
+000A÷AC01
+000A÷0308÷AC01
+000A÷0900
+000A÷0308×0900
+000A÷0903
+000A÷0308×0903
+000A÷0904
+000A÷0308÷0904
+000A÷0D4E
+000A÷0308÷0D4E
+000A÷0915
+000A÷0308÷0915
+000A÷231A
+000A÷0308÷231A
+000A÷0300
+000A÷0308×0300
+000A÷093C
+000A÷0308×093C
+000A÷094D
+000A÷0308×094D
+000A÷200D
+000A÷0308×200D
+000A÷0378
+000A÷0308÷0378
+0001÷0020
+0001÷0308÷0020
+0001÷000D
+0001÷0308÷000D
+0001÷000A
+0001÷0308÷000A
+0001÷0001
+0001÷0308÷0001
+0001÷034F
+0001÷0308×034F
+0001÷1F1E6
+0001÷0308÷1F1E6
+0001÷0600
+0001÷0308÷0600
+0001÷0A03
+0001÷0308×0A03
+0001÷1100
+0001÷0308÷1100
+0001÷1160
+0001÷0308÷1160
+0001÷11A8
+0001÷0308÷11A8
+0001÷AC00
+0001÷0308÷AC00
+0001÷AC01
+0001÷0308÷AC01
+0001÷0900
+0001÷0308×0900
+0001÷0903
+0001÷0308×0903
+0001÷0904
+0001÷0308÷0904
+0001÷0D4E
+0001÷0308÷0D4E
+0001÷0915
+0001÷0308÷0915
+0001÷231A
+0001÷0308÷231A
+0001÷0300
+0001÷0308×0300
+0001÷093C
+0001÷0308×093C
+0001÷094D
+0001÷0308×094D
+0001÷200D
+0001÷0308×200D
+0001÷0378
+0001÷0308÷0378
+034F÷0020
+034F×0308÷0020
+034F÷000D
+034F×0308÷000D
+034F÷000A
+034F×0308÷000A
+034F÷0001
+034F×0308÷0001
+034F×034F
+034F×0308×034F
+034F÷1F1E6
+034F×0308÷1F1E6
+034F÷0600
+034F×0308÷0600
+034F×0A03
+034F×0308×0A03
+034F÷1100
+034F×0308÷1100
+034F÷1160
+034F×0308÷1160
+034F÷11A8
+034F×0308÷11A8
+034F÷AC00
+034F×0308÷AC00
+034F÷AC01
+034F×0308÷AC01
+034F×0900
+034F×0308×0900
+034F×0903
+034F×0308×0903
+034F÷0904
+034F×0308÷0904
+034F÷0D4E
+034F×0308÷0D4E
+034F÷0915
+034F×0308÷0915
+034F÷231A
+034F×0308÷231A
+034F×0300
+034F×0308×0300
+034F×093C
+034F×0308×093C
+034F×094D
+034F×0308×094D
+034F×200D
+034F×0308×200D
+034F÷0378
+034F×0308÷0378
+1F1E6÷0020
+1F1E6×0308÷0020
+1F1E6÷000D
+1F1E6×0308÷000D
+1F1E6÷000A
+1F1E6×0308÷000A
+1F1E6÷0001
+1F1E6×0308÷0001
+1F1E6×034F
+1F1E6×0308×034F
+1F1E6×1F1E6
+1F1E6×0308÷1F1E6
+1F1E6÷0600
+1F1E6×0308÷0600
+1F1E6×0A03
+1F1E6×0308×0A03
+1F1E6÷1100
+1F1E6×0308÷1100
+1F1E6÷1160
+1F1E6×0308÷1160
+1F1E6÷11A8
+1F1E6×0308÷11A8
+1F1E6÷AC00
+1F1E6×0308÷AC00
+1F1E6÷AC01
+1F1E6×0308÷AC01
+1F1E6×0900
+1F1E6×0308×0900
+1F1E6×0903
+1F1E6×0308×0903
+1F1E6÷0904
+1F1E6×0308÷0904
+1F1E6÷0D4E
+1F1E6×0308÷0D4E
+1F1E6÷0915
+1F1E6×0308÷0915
+1F1E6÷231A
+1F1E6×0308÷231A
+1F1E6×0300
+1F1E6×0308×0300
+1F1E6×093C
+1F1E6×0308×093C
+1F1E6×094D
+1F1E6×0308×094D
+1F1E6×200D
+1F1E6×0308×200D
+1F1E6÷0378
+1F1E6×0308÷0378
+0600×0020
+0600×0308÷0020
+0600÷000D
+0600×0308÷000D
+0600÷000A
+0600×0308÷000A
+0600÷0001
+0600×0308÷0001
+0600×034F
+0600×0308×034F
+0600×1F1E6
+0600×0308÷1F1E6
+0600×0600
+0600×0308÷0600
+0600×0A03
+0600×0308×0A03
+0600×1100
+0600×0308÷1100
+0600×1160
+0600×0308÷1160
+0600×11A8
+0600×0308÷11A8
+0600×AC00
+0600×0308÷AC00
+0600×AC01
+0600×0308÷AC01
+0600×0900
+0600×0308×0900
+0600×0903
+0600×0308×0903
+0600×0904
+0600×0308÷0904
+0600×0D4E
+0600×0308÷0D4E
+0600×0915
+0600×0308÷0915
+0600×231A
+0600×0308÷231A
+0600×0300
+0600×0308×0300
+0600×093C
+0600×0308×093C
+0600×094D
+0600×0308×094D
+0600×200D
+0600×0308×200D
+0600×0378
+0600×0308÷0378
+0A03÷0020
+0A03×0308÷0020
+0A03÷000D
+0A03×0308÷000D
+0A03÷000A
+0A03×0308÷000A
+0A03÷0001
+0A03×0308÷0001
+0A03×034F
+0A03×0308×034F
+0A03÷1F1E6
+0A03×0308÷1F1E6
+0A03÷0600
+0A03×0308÷0600
+0A03×0A03
+0A03×0308×0A03
+0A03÷1100
+0A03×0308÷1100
+0A03÷1160
+0A03×0308÷1160
+0A03÷11A8
+0A03×0308÷11A8
+0A03÷AC00
+0A03×0308÷AC00
+0A03÷AC01
+0A03×0308÷AC01
+0A03×0900
+0A03×0308×0900
+0A03×0903
+0A03×0308×0903
+0A03÷0904
+0A03×0308÷0904
+0A03÷0D4E
+0A03×0308÷0D4E
+0A03÷0915
+0A03×0308÷0915
+0A03÷231A
+0A03×0308÷231A
+0A03×0300
+0A03×0308×0300
+0A03×093C
+0A03×0308×093C
+0A03×094D
+0A03×0308×094D
+0A03×200D
+0A03×0308×200D
+0A03÷0378
+0A03×0308÷0378
+1100÷0020
+1100×0308÷0020
+1100÷000D
+1100×0308÷000D
+1100÷000A
+1100×0308÷000A
+1100÷0001
+1100×0308÷0001
+1100×034F
+1100×0308×034F
+1100÷1F1E6
+1100×0308÷1F1E6
+1100÷0600
+1100×0308÷0600
+1100×0A03
+1100×0308×0A03
+1100×1100
+1100×0308÷1100
+1100×1160
+1100×0308÷1160
+1100÷11A8
+1100×0308÷11A8
+1100×AC00
+1100×0308÷AC00
+1100×AC01
+1100×0308÷AC01
+1100×0900
+1100×0308×0900
+1100×0903
+1100×0308×0903
+1100÷0904
+1100×0308÷0904
+1100÷0D4E
+1100×0308÷0D4E
+1100÷0915
+1100×0308÷0915
+1100÷231A
+1100×0308÷231A
+1100×0300
+1100×0308×0300
+1100×093C
+1100×0308×093C
+1100×094D
+1100×0308×094D
+1100×200D
+1100×0308×200D
+1100÷0378
+1100×0308÷0378
+1160÷0020
+1160×0308÷0020
+1160÷000D
+1160×0308÷000D
+1160÷000A
+1160×0308÷000A
+1160÷0001
+1160×0308÷0001
+1160×034F
+1160×0308×034F
+1160÷1F1E6
+1160×0308÷1F1E6
+1160÷0600
+1160×0308÷0600
+1160×0A03
+1160×0308×0A03
+1160÷1100
+1160×0308÷1100
+1160×1160
+1160×0308÷1160
+1160×11A8
+1160×0308÷11A8
+1160÷AC00
+1160×0308÷AC00
+1160÷AC01
+1160×0308÷AC01
+1160×0900
+1160×0308×0900
+1160×0903
+1160×0308×0903
+1160÷0904
+1160×0308÷0904
+1160÷0D4E
+1160×0308÷0D4E
+1160÷0915
+1160×0308÷0915
+1160÷231A
+1160×0308÷231A
+1160×0300
+1160×0308×0300
+1160×093C
+1160×0308×093C
+1160×094D
+1160×0308×094D
+1160×200D
+1160×0308×200D
+1160÷0378
+1160×0308÷0378
+11A8÷0020
+11A8×0308÷0020
+11A8÷000D
+11A8×0308÷000D
+11A8÷000A
+11A8×0308÷000A
+11A8÷0001
+11A8×0308÷0001
+11A8×034F
+11A8×0308×034F
+11A8÷1F1E6
+11A8×0308÷1F1E6
+11A8÷0600
+11A8×0308÷0600
+11A8×0A03
+11A8×0308×0A03
+11A8÷1100
+11A8×0308÷1100
+11A8÷1160
+11A8×0308÷1160
+11A8×11A8
+11A8×0308÷11A8
+11A8÷AC00
+11A8×0308÷AC00
+11A8÷AC01
+11A8×0308÷AC01
+11A8×0900
+11A8×0308×0900
+11A8×0903
+11A8×0308×0903
+11A8÷0904
+11A8×0308÷0904
+11A8÷0D4E
+11A8×0308÷0D4E
+11A8÷0915
+11A8×0308÷0915
+11A8÷231A
+11A8×0308÷231A
+11A8×0300
+11A8×0308×0300
+11A8×093C
+11A8×0308×093C
+11A8×094D
+11A8×0308×094D
+11A8×200D
+11A8×0308×200D
+11A8÷0378
+11A8×0308÷0378
+AC00÷0020
+AC00×0308÷0020
+AC00÷000D
+AC00×0308÷000D
+AC00÷000A
+AC00×0308÷000A
+AC00÷0001
+AC00×0308÷0001
+AC00×034F
+AC00×0308×034F
+AC00÷1F1E6
+AC00×0308÷1F1E6
+AC00÷0600
+AC00×0308÷0600
+AC00×0A03
+AC00×0308×0A03
+AC00÷1100
+AC00×0308÷1100
+AC00×1160
+AC00×0308÷1160
+AC00×11A8
+AC00×0308÷11A8
+AC00÷AC00
+AC00×0308÷AC00
+AC00÷AC01
+AC00×0308÷AC01
+AC00×0900
+AC00×0308×0900
+AC00×0903
+AC00×0308×0903
+AC00÷0904
+AC00×0308÷0904
+AC00÷0D4E
+AC00×0308÷0D4E
+AC00÷0915
+AC00×0308÷0915
+AC00÷231A
+AC00×0308÷231A
+AC00×0300
+AC00×0308×0300
+AC00×093C
+AC00×0308×093C
+AC00×094D
+AC00×0308×094D
+AC00×200D
+AC00×0308×200D
+AC00÷0378
+AC00×0308÷0378
+AC01÷0020
+AC01×0308÷0020
+AC01÷000D
+AC01×0308÷000D
+AC01÷000A
+AC01×0308÷000A
+AC01÷0001
+AC01×0308÷0001
+AC01×034F
+AC01×0308×034F
+AC01÷1F1E6
+AC01×0308÷1F1E6
+AC01÷0600
+AC01×0308÷0600
+AC01×0A03
+AC01×0308×0A03
+AC01÷1100
+AC01×0308÷1100
+AC01÷1160
+AC01×0308÷1160
+AC01×11A8
+AC01×0308÷11A8
+AC01÷AC00
+AC01×0308÷AC00
+AC01÷AC01
+AC01×0308÷AC01
+AC01×0900
+AC01×0308×0900
+AC01×0903
+AC01×0308×0903
+AC01÷0904
+AC01×0308÷0904
+AC01÷0D4E
+AC01×0308÷0D4E
+AC01÷0915
+AC01×0308÷0915
+AC01÷231A
+AC01×0308÷231A
+AC01×0300
+AC01×0308×0300
+AC01×093C
+AC01×0308×093C
+AC01×094D
+AC01×0308×094D
+AC01×200D
+AC01×0308×200D
+AC01÷0378
+AC01×0308÷0378
+0900÷0020
+0900×0308÷0020
+0900÷000D
+0900×0308÷000D
+0900÷000A
+0900×0308÷000A
+0900÷0001
+0900×0308÷0001
+0900×034F
+0900×0308×034F
+0900÷1F1E6
+0900×0308÷1F1E6
+0900÷0600
+0900×0308÷0600
+0900×0A03
+0900×0308×0A03
+0900÷1100
+0900×0308÷1100
+0900÷1160
+0900×0308÷1160
+0900÷11A8
+0900×0308÷11A8
+0900÷AC00
+0900×0308÷AC00
+0900÷AC01
+0900×0308÷AC01
+0900×0900
+0900×0308×0900
+0900×0903
+0900×0308×0903
+0900÷0904
+0900×0308÷0904
+0900÷0D4E
+0900×0308÷0D4E
+0900÷0915
+0900×0308÷0915
+0900÷231A
+0900×0308÷231A
+0900×0300
+0900×0308×0300
+0900×093C
+0900×0308×093C
+0900×094D
+0900×0308×094D
+0900×200D
+0900×0308×200D
+0900÷0378
+0900×0308÷0378
+0903÷0020
+0903×0308÷0020
+0903÷000D
+0903×0308÷000D
+0903÷000A
+0903×0308÷000A
+0903÷0001
+0903×0308÷0001
+0903×034F
+0903×0308×034F
+0903÷1F1E6
+0903×0308÷1F1E6
+0903÷0600
+0903×0308÷0600
+0903×0A03
+0903×0308×0A03
+0903÷1100
+0903×0308÷1100
+0903÷1160
+0903×0308÷1160
+0903÷11A8
+0903×0308÷11A8
+0903÷AC00
+0903×0308÷AC00
+0903÷AC01
+0903×0308÷AC01
+0903×0900
+0903×0308×0900
+0903×0903
+0903×0308×0903
+0903÷0904
+0903×0308÷0904
+0903÷0D4E
+0903×0308÷0D4E
+0903÷0915
+0903×0308÷0915
+0903÷231A
+0903×0308÷231A
+0903×0300
+0903×0308×0300
+0903×093C
+0903×0308×093C
+0903×094D
+0903×0308×094D
+0903×200D
+0903×0308×200D
+0903÷0378
+0903×0308÷0378
+0904÷0020
+0904×0308÷0020
+0904÷000D
+0904×0308÷000D
+0904÷000A
+0904×0308÷000A
+0904÷0001
+0904×0308÷0001
+0904×034F
+0904×0308×034F
+0904÷1F1E6
+0904×0308÷1F1E6
+0904÷0600
+0904×0308÷0600
+0904×0A03
+0904×0308×0A03
+0904÷1100
+0904×0308÷1100
+0904÷1160
+0904×0308÷1160
+0904÷11A8
+0904×0308÷11A8
+0904÷AC00
+0904×0308÷AC00
+0904÷AC01
+0904×0308÷AC01
+0904×0900
+0904×0308×0900
+0904×0903
+0904×0308×0903
+0904÷0904
+0904×0308÷0904
+0904÷0D4E
+0904×0308÷0D4E
+0904÷0915
+0904×0308÷0915
+0904÷231A
+0904×0308÷231A
+0904×0300
+0904×0308×0300
+0904×093C
+0904×0308×093C
+0904×094D
+0904×0308×094D
+0904×200D
+0904×0308×200D
+0904÷0378
+0904×0308÷0378
+0D4E×0020
+0D4E×0308÷0020
+0D4E÷000D
+0D4E×0308÷000D
+0D4E÷000A
+0D4E×0308÷000A
+0D4E÷0001
+0D4E×0308÷0001
+0D4E×034F
+0D4E×0308×034F
+0D4E×1F1E6
+0D4E×0308÷1F1E6
+0D4E×0600
+0D4E×0308÷0600
+0D4E×0A03
+0D4E×0308×0A03
+0D4E×1100
+0D4E×0308÷1100
+0D4E×1160
+0D4E×0308÷1160
+0D4E×11A8
+0D4E×0308÷11A8
+0D4E×AC00
+0D4E×0308÷AC00
+0D4E×AC01
+0D4E×0308÷AC01
+0D4E×0900
+0D4E×0308×0900
+0D4E×0903
+0D4E×0308×0903
+0D4E×0904
+0D4E×0308÷0904
+0D4E×0D4E
+0D4E×0308÷0D4E
+0D4E×0915
+0D4E×0308÷0915
+0D4E×231A
+0D4E×0308÷231A
+0D4E×0300
+0D4E×0308×0300
+0D4E×093C
+0D4E×0308×093C
+0D4E×094D
+0D4E×0308×094D
+0D4E×200D
+0D4E×0308×200D
+0D4E×0378
+0D4E×0308÷0378
+0915÷0020
+0915×0308÷0020
+0915÷000D
+0915×0308÷000D
+0915÷000A
+0915×0308÷000A
+0915÷0001
+0915×0308÷0001
+0915×034F
+0915×0308×034F
+0915÷1F1E6
+0915×0308÷1F1E6
+0915÷0600
+0915×0308÷0600
+0915×0A03
+0915×0308×0A03
+0915÷1100
+0915×0308÷1100
+0915÷1160
+0915×0308÷1160
+0915÷11A8
+0915×0308÷11A8
+0915÷AC00
+0915×0308÷AC00
+0915÷AC01
+0915×0308÷AC01
+0915×0900
+0915×0308×0900
+0915×0903
+0915×0308×0903
+0915÷0904
+0915×0308÷0904
+0915÷0D4E
+0915×0308÷0D4E
+0915÷0915
+0915×0308÷0915
+0915÷231A
+0915×0308÷231A
+0915×0300
+0915×0308×0300
+0915×093C
+0915×0308×093C
+0915×094D
+0915×0308×094D
+0915×200D
+0915×0308×200D
+0915÷0378
+0915×0308÷0378
+231A÷0020
+231A×0308÷0020
+231A÷000D
+231A×0308÷000D
+231A÷000A
+231A×0308÷000A
+231A÷0001
+231A×0308÷0001
+231A×034F
+231A×0308×034F
+231A÷1F1E6
+231A×0308÷1F1E6
+231A÷0600
+231A×0308÷0600
+231A×0A03
+231A×0308×0A03
+231A÷1100
+231A×0308÷1100
+231A÷1160
+231A×0308÷1160
+231A÷11A8
+231A×0308÷11A8
+231A÷AC00
+231A×0308÷AC00
+231A÷AC01
+231A×0308÷AC01
+231A×0900
+231A×0308×0900
+231A×0903
+231A×0308×0903
+231A÷0904
+231A×0308÷0904
+231A÷0D4E
+231A×0308÷0D4E
+231A÷0915
+231A×0308÷0915
+231A÷231A
+231A×0308÷231A
+231A×0300
+231A×0308×0300
+231A×093C
+231A×0308×093C
+231A×094D
+231A×0308×094D
+231A×200D
+231A×0308×200D
+231A÷0378
+231A×0308÷0378
+0300÷0020
+0300×0308÷0020
+0300÷000D
+0300×0308÷000D
+0300÷000A
+0300×0308÷000A
+0300÷0001
+0300×0308÷0001
+0300×034F
+0300×0308×034F
+0300÷1F1E6
+0300×0308÷1F1E6
+0300÷0600
+0300×0308÷0600
+0300×0A03
+0300×0308×0A03
+0300÷1100
+0300×0308÷1100
+0300÷1160
+0300×0308÷1160
+0300÷11A8
+0300×0308÷11A8
+0300÷AC00
+0300×0308÷AC00
+0300÷AC01
+0300×0308÷AC01
+0300×0900
+0300×0308×0900
+0300×0903
+0300×0308×0903
+0300÷0904
+0300×0308÷0904
+0300÷0D4E
+0300×0308÷0D4E
+0300÷0915
+0300×0308÷0915
+0300÷231A
+0300×0308÷231A
+0300×0300
+0300×0308×0300
+0300×093C
+0300×0308×093C
+0300×094D
+0300×0308×094D
+0300×200D
+0300×0308×200D
+0300÷0378
+0300×0308÷0378
+093C÷0020
+093C×0308÷0020
+093C÷000D
+093C×0308÷000D
+093C÷000A
+093C×0308÷000A
+093C÷0001
+093C×0308÷0001
+093C×034F
+093C×0308×034F
+093C÷1F1E6
+093C×0308÷1F1E6
+093C÷0600
+093C×0308÷0600
+093C×0A03
+093C×0308×0A03
+093C÷1100
+093C×0308÷1100
+093C÷1160
+093C×0308÷1160
+093C÷11A8
+093C×0308÷11A8
+093C÷AC00
+093C×0308÷AC00
+093C÷AC01
+093C×0308÷AC01
+093C×0900
+093C×0308×0900
+093C×0903
+093C×0308×0903
+093C÷0904
+093C×0308÷0904
+093C÷0D4E
+093C×0308÷0D4E
+093C÷0915
+093C×0308÷0915
+093C÷231A
+093C×0308÷231A
+093C×0300
+093C×0308×0300
+093C×093C
+093C×0308×093C
+093C×094D
+093C×0308×094D
+093C×200D
+093C×0308×200D
+093C÷0378
+093C×0308÷0378
+094D÷0020
+094D×0308÷0020
+094D÷000D
+094D×0308÷000D
+094D÷000A
+094D×0308÷000A
+094D÷0001
+094D×0308÷0001
+094D×034F
+094D×0308×034F
+094D÷1F1E6
+094D×0308÷1F1E6
+094D÷0600
+094D×0308÷0600
+094D×0A03
+094D×0308×0A03
+094D÷1100
+094D×0308÷1100
+094D÷1160
+094D×0308÷1160
+094D÷11A8
+094D×0308÷11A8
+094D÷AC00
+094D×0308÷AC00
+094D÷AC01
+094D×0308÷AC01
+094D×0900
+094D×0308×0900
+094D×0903
+094D×0308×0903
+094D÷0904
+094D×0308÷0904
+094D÷0D4E
+094D×0308÷0D4E
+094D÷0915
+094D×0308÷0915
+094D÷231A
+094D×0308÷231A
+094D×0300
+094D×0308×0300
+094D×093C
+094D×0308×093C
+094D×094D
+094D×0308×094D
+094D×200D
+094D×0308×200D
+094D÷0378
+094D×0308÷0378
+200D÷0020
+200D×0308÷0020
+200D÷000D
+200D×0308÷000D
+200D÷000A
+200D×0308÷000A
+200D÷0001
+200D×0308÷0001
+200D×034F
+200D×0308×034F
+200D÷1F1E6
+200D×0308÷1F1E6
+200D÷0600
+200D×0308÷0600
+200D×0A03
+200D×0308×0A03
+200D÷1100
+200D×0308÷1100
+200D÷1160
+200D×0308÷1160
+200D÷11A8
+200D×0308÷11A8
+200D÷AC00
+200D×0308÷AC00
+200D÷AC01
+200D×0308÷AC01
+200D×0900
+200D×0308×0900
+200D×0903
+200D×0308×0903
+200D÷0904
+200D×0308÷0904
+200D÷0D4E
+200D×0308÷0D4E
+200D÷0915
+200D×0308÷0915
+200D÷231A
+200D×0308÷231A
+200D×0300
+200D×0308×0300
+200D×093C
+200D×0308×093C
+200D×094D
+200D×0308×094D
+200D×200D
+200D×0308×200D
+200D÷0378
+200D×0308÷0378
+0378÷0020
+0378×0308÷0020
+0378÷000D
+0378×0308÷000D
+0378÷000A
+0378×0308÷000A
+0378÷0001
+0378×0308÷0001
+0378×034F
+0378×0308×034F
+0378÷1F1E6
+0378×0308÷1F1E6
+0378÷0600
+0378×0308÷0600
+0378×0A03
+0378×0308×0A03
+0378÷1100
+0378×0308÷1100
+0378÷1160
+0378×0308÷1160
+0378÷11A8
+0378×0308÷11A8
+0378÷AC00
+0378×0308÷AC00
+0378÷AC01
+0378×0308÷AC01
+0378×0900
+0378×0308×0900
+0378×0903
+0378×0308×0903
+0378÷0904
+0378×0308÷0904
+0378÷0D4E
+0378×0308÷0D4E
+0378÷0915
+0378×0308÷0915
+0378÷231A
+0378×0308÷231A
+0378×0300
+0378×0308×0300
+0378×093C
+0378×0308×093C
+0378×094D
+0378×0308×094D
+0378×200D
+0378×0308×200D
+0378÷0378
+0378×0308÷0378
+000D×000A÷0061÷000A÷0308
+0061×0308
+0020×200D÷0646
+0646×200D÷0020
+1100×1100
+AC00×11A8÷1100
+AC01×11A8÷1100
+1F1E6×1F1E7÷1F1E8÷0062
+0061÷1F1E6×1F1E7÷1F1E8÷0062
+0061÷1F1E6×1F1E7×200D÷1F1E8÷0062
+0061÷1F1E6×200D÷1F1E7×1F1E8÷0062
+0061÷1F1E6×1F1E7÷1F1E8×1F1E9÷0062
+0061×200D
+0061×0308÷0062
+0061×0903÷0062
+0061÷0600×0062
+1F476×1F3FF÷1F476
+0061×1F3FF÷1F476
+0061×1F3FF÷1F476×200D×1F6D1
+1F476×1F3FF×0308×200D×1F476×1F3FF
+1F6D1×200D×1F6D1
+0061×200D÷1F6D1
+2701×200D×2701
+0061×200D÷2701
+0915÷0924
+0915×094D×0924
+0915×094D×094D×0924
+0915×094D×200D×0924
+0915×093C×200D×094D×0924
+0915×093C×094D×200D×0924
+0915×094D×0924×094D×092F
+0915×094D÷0061
+0061×094D÷0924
+003F×094D÷0924
+0915×094D×094D×0924
diff --git a/vendor/librune/data/emoji-data.txt b/vendor/librune/data/emoji-data.txt
new file mode 100644
index 0000000..0ba10e9
--- /dev/null
+++ b/vendor/librune/data/emoji-data.txt
@@ -0,0 +1,1320 @@
+# emoji-data.txt
+# Date: 2023-02-01, 02:22:54 GMT
+# © 2023 Unicode®, Inc.
+# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
+# For terms of use, see https://www.unicode.org/terms_of_use.html
+#
+# Emoji Data for UTS #51
+# Used with Emoji Version 15.1 and subsequent minor revisions (if any)
+#
+# For documentation and usage, see https://www.unicode.org/reports/tr51
+#
+# Format:
+# <codepoint(s)> ; <property> # <comments>
+# Note: there is no guarantee as to the structure of whitespace or comments
+#
+# Characters and sequences are listed in code point order. Users should be shown a more natural order.
+# See the CLDR collation order for Emoji.
+
+
+# ================================================
+
+# All omitted code points have Emoji=No
+
+0023 ; Emoji # E0.0 [1] (#️) hash sign
+002A ; Emoji # E0.0 [1] (*️) asterisk
+0030..0039 ; Emoji # E0.0 [10] (0️..9️) digit zero..digit nine
+00A9 ; Emoji # E0.6 [1] (©️) copyright
+00AE ; Emoji # E0.6 [1] (®️) registered
+203C ; Emoji # E0.6 [1] (‼️) double exclamation mark
+2049 ; Emoji # E0.6 [1] (⁉️) exclamation question mark
+2122 ; Emoji # E0.6 [1] (™️) trade mark
+2139 ; Emoji # E0.6 [1] (ℹ️) information
+2194..2199 ; Emoji # E0.6 [6] (↔️..↙️) left-right arrow..down-left arrow
+21A9..21AA ; Emoji # E0.6 [2] (↩️..↪️) right arrow curving left..left arrow curving right
+231A..231B ; Emoji # E0.6 [2] (⌚..⌛) watch..hourglass done
+2328 ; Emoji # E1.0 [1] (⌨️) keyboard
+23CF ; Emoji # E1.0 [1] (⏏️) eject button
+23E9..23EC ; Emoji # E0.6 [4] (⏩..⏬) fast-forward button..fast down button
+23ED..23EE ; Emoji # E0.7 [2] (⏭️..⏮️) next track button..last track button
+23EF ; Emoji # E1.0 [1] (⏯️) play or pause button
+23F0 ; Emoji # E0.6 [1] (⏰) alarm clock
+23F1..23F2 ; Emoji # E1.0 [2] (⏱️..⏲️) stopwatch..timer clock
+23F3 ; Emoji # E0.6 [1] (⏳) hourglass not done
+23F8..23FA ; Emoji # E0.7 [3] (⏸️..⏺️) pause button..record button
+24C2 ; Emoji # E0.6 [1] (Ⓜ️) circled M
+25AA..25AB ; Emoji # E0.6 [2] (▪️..▫️) black small square..white small square
+25B6 ; Emoji # E0.6 [1] (▶️) play button
+25C0 ; Emoji # E0.6 [1] (◀️) reverse button
+25FB..25FE ; Emoji # E0.6 [4] (◻️..◾) white medium square..black medium-small square
+2600..2601 ; Emoji # E0.6 [2] (☀️..☁️) sun..cloud
+2602..2603 ; Emoji # E0.7 [2] (☂️..☃️) umbrella..snowman
+2604 ; Emoji # E1.0 [1] (☄️) comet
+260E ; Emoji # E0.6 [1] (☎️) telephone
+2611 ; Emoji # E0.6 [1] (☑️) check box with check
+2614..2615 ; Emoji # E0.6 [2] (☔..☕) umbrella with rain drops..hot beverage
+2618 ; Emoji # E1.0 [1] (☘️) shamrock
+261D ; Emoji # E0.6 [1] (☝️) index pointing up
+2620 ; Emoji # E1.0 [1] (☠️) skull and crossbones
+2622..2623 ; Emoji # E1.0 [2] (☢️..☣️) radioactive..biohazard
+2626 ; Emoji # E1.0 [1] (☦️) orthodox cross
+262A ; Emoji # E0.7 [1] (☪️) star and crescent
+262E ; Emoji # E1.0 [1] (☮️) peace symbol
+262F ; Emoji # E0.7 [1] (☯️) yin yang
+2638..2639 ; Emoji # E0.7 [2] (☸️..☹️) wheel of dharma..frowning face
+263A ; Emoji # E0.6 [1] (☺️) smiling face
+2640 ; Emoji # E4.0 [1] (♀️) female sign
+2642 ; Emoji # E4.0 [1] (♂️) male sign
+2648..2653 ; Emoji # E0.6 [12] (♈..♓) Aries..Pisces
+265F ; Emoji # E11.0 [1] (♟️) chess pawn
+2660 ; Emoji # E0.6 [1] (♠️) spade suit
+2663 ; Emoji # E0.6 [1] (♣️) club suit
+2665..2666 ; Emoji # E0.6 [2] (♥️..♦️) heart suit..diamond suit
+2668 ; Emoji # E0.6 [1] (♨️) hot springs
+267B ; Emoji # E0.6 [1] (♻️) recycling symbol
+267E ; Emoji # E11.0 [1] (♾️) infinity
+267F ; Emoji # E0.6 [1] (♿) wheelchair symbol
+2692 ; Emoji # E1.0 [1] (⚒️) hammer and pick
+2693 ; Emoji # E0.6 [1] (⚓) anchor
+2694 ; Emoji # E1.0 [1] (⚔️) crossed swords
+2695 ; Emoji # E4.0 [1] (⚕️) medical symbol
+2696..2697 ; Emoji # E1.0 [2] (⚖️..⚗️) balance scale..alembic
+2699 ; Emoji # E1.0 [1] (⚙️) gear
+269B..269C ; Emoji # E1.0 [2] (⚛️..⚜️) atom symbol..fleur-de-lis
+26A0..26A1 ; Emoji # E0.6 [2] (⚠️..⚡) warning..high voltage
+26A7 ; Emoji # E13.0 [1] (⚧️) transgender symbol
+26AA..26AB ; Emoji # E0.6 [2] (⚪..⚫) white circle..black circle
+26B0..26B1 ; Emoji # E1.0 [2] (⚰️..⚱️) coffin..funeral urn
+26BD..26BE ; Emoji # E0.6 [2] (⚽..⚾) soccer ball..baseball
+26C4..26C5 ; Emoji # E0.6 [2] (⛄..⛅) snowman without snow..sun behind cloud
+26C8 ; Emoji # E0.7 [1] (⛈️) cloud with lightning and rain
+26CE ; Emoji # E0.6 [1] (⛎) Ophiuchus
+26CF ; Emoji # E0.7 [1] (⛏️) pick
+26D1 ; Emoji # E0.7 [1] (⛑️) rescue worker’s helmet
+26D3 ; Emoji # E0.7 [1] (⛓️) chains
+26D4 ; Emoji # E0.6 [1] (⛔) no entry
+26E9 ; Emoji # E0.7 [1] (⛩️) shinto shrine
+26EA ; Emoji # E0.6 [1] (⛪) church
+26F0..26F1 ; Emoji # E0.7 [2] (⛰️..⛱️) mountain..umbrella on ground
+26F2..26F3 ; Emoji # E0.6 [2] (⛲..⛳) fountain..flag in hole
+26F4 ; Emoji # E0.7 [1] (⛴️) ferry
+26F5 ; Emoji # E0.6 [1] (⛵) sailboat
+26F7..26F9 ; Emoji # E0.7 [3] (⛷️..⛹️) skier..person bouncing ball
+26FA ; Emoji # E0.6 [1] (⛺) tent
+26FD ; Emoji # E0.6 [1] (⛽) fuel pump
+2702 ; Emoji # E0.6 [1] (✂️) scissors
+2705 ; Emoji # E0.6 [1] (✅) check mark button
+2708..270C ; Emoji # E0.6 [5] (✈️..✌️) airplane..victory hand
+270D ; Emoji # E0.7 [1] (✍️) writing hand
+270F ; Emoji # E0.6 [1] (✏️) pencil
+2712 ; Emoji # E0.6 [1] (✒️) black nib
+2714 ; Emoji # E0.6 [1] (✔️) check mark
+2716 ; Emoji # E0.6 [1] (✖️) multiply
+271D ; Emoji # E0.7 [1] (✝️) latin cross
+2721 ; Emoji # E0.7 [1] (✡️) star of David
+2728 ; Emoji # E0.6 [1] (✨) sparkles
+2733..2734 ; Emoji # E0.6 [2] (✳️..✴️) eight-spoked asterisk..eight-pointed star
+2744 ; Emoji # E0.6 [1] (❄️) snowflake
+2747 ; Emoji # E0.6 [1] (❇️) sparkle
+274C ; Emoji # E0.6 [1] (❌) cross mark
+274E ; Emoji # E0.6 [1] (❎) cross mark button
+2753..2755 ; Emoji # E0.6 [3] (❓..❕) red question mark..white exclamation mark
+2757 ; Emoji # E0.6 [1] (❗) red exclamation mark
+2763 ; Emoji # E1.0 [1] (❣️) heart exclamation
+2764 ; Emoji # E0.6 [1] (❤️) red heart
+2795..2797 ; Emoji # E0.6 [3] (➕..➗) plus..divide
+27A1 ; Emoji # E0.6 [1] (➡️) right arrow
+27B0 ; Emoji # E0.6 [1] (➰) curly loop
+27BF ; Emoji # E1.0 [1] (➿) double curly loop
+2934..2935 ; Emoji # E0.6 [2] (⤴️..⤵️) right arrow curving up..right arrow curving down
+2B05..2B07 ; Emoji # E0.6 [3] (⬅️..⬇️) left arrow..down arrow
+2B1B..2B1C ; Emoji # E0.6 [2] (⬛..⬜) black large square..white large square
+2B50 ; Emoji # E0.6 [1] (⭐) star
+2B55 ; Emoji # E0.6 [1] (⭕) hollow red circle
+3030 ; Emoji # E0.6 [1] (〰️) wavy dash
+303D ; Emoji # E0.6 [1] (〽️) part alternation mark
+3297 ; Emoji # E0.6 [1] (㊗️) Japanese “congratulations” button
+3299 ; Emoji # E0.6 [1] (㊙️) Japanese “secret” button
+1F004 ; Emoji # E0.6 [1] (🀄) mahjong red dragon
+1F0CF ; Emoji # E0.6 [1] (🃏) joker
+1F170..1F171 ; Emoji # E0.6 [2] (🅰️..🅱️) A button (blood type)..B button (blood type)
+1F17E..1F17F ; Emoji # E0.6 [2] (🅾️..🅿️) O button (blood type)..P button
+1F18E ; Emoji # E0.6 [1] (🆎) AB button (blood type)
+1F191..1F19A ; Emoji # E0.6 [10] (🆑..🆚) CL button..VS button
+1F1E6..1F1FF ; Emoji # E0.0 [26] (🇦..🇿) regional indicator symbol letter a..regional indicator symbol letter z
+1F201..1F202 ; Emoji # E0.6 [2] (🈁..🈂️) Japanese “here” button..Japanese “service charge” button
+1F21A ; Emoji # E0.6 [1] (🈚) Japanese “free of charge” button
+1F22F ; Emoji # E0.6 [1] (🈯) Japanese “reserved” button
+1F232..1F23A ; Emoji # E0.6 [9] (🈲..🈺) Japanese “prohibited” button..Japanese “open for business” button
+1F250..1F251 ; Emoji # E0.6 [2] (🉐..🉑) Japanese “bargain” button..Japanese “acceptable” button
+1F300..1F30C ; Emoji # E0.6 [13] (🌀..🌌) cyclone..milky way
+1F30D..1F30E ; Emoji # E0.7 [2] (🌍..🌎) globe showing Europe-Africa..globe showing Americas
+1F30F ; Emoji # E0.6 [1] (🌏) globe showing Asia-Australia
+1F310 ; Emoji # E1.0 [1] (🌐) globe with meridians
+1F311 ; Emoji # E0.6 [1] (🌑) new moon
+1F312 ; Emoji # E1.0 [1] (🌒) waxing crescent moon
+1F313..1F315 ; Emoji # E0.6 [3] (🌓..🌕) first quarter moon..full moon
+1F316..1F318 ; Emoji # E1.0 [3] (🌖..🌘) waning gibbous moon..waning crescent moon
+1F319 ; Emoji # E0.6 [1] (🌙) crescent moon
+1F31A ; Emoji # E1.0 [1] (🌚) new moon face
+1F31B ; Emoji # E0.6 [1] (🌛) first quarter moon face
+1F31C ; Emoji # E0.7 [1] (🌜) last quarter moon face
+1F31D..1F31E ; Emoji # E1.0 [2] (🌝..🌞) full moon face..sun with face
+1F31F..1F320 ; Emoji # E0.6 [2] (🌟..🌠) glowing star..shooting star
+1F321 ; Emoji # E0.7 [1] (🌡️) thermometer
+1F324..1F32C ; Emoji # E0.7 [9] (🌤️..🌬️) sun behind small cloud..wind face
+1F32D..1F32F ; Emoji # E1.0 [3] (🌭..🌯) hot dog..burrito
+1F330..1F331 ; Emoji # E0.6 [2] (🌰..🌱) chestnut..seedling
+1F332..1F333 ; Emoji # E1.0 [2] (🌲..🌳) evergreen tree..deciduous tree
+1F334..1F335 ; Emoji # E0.6 [2] (🌴..🌵) palm tree..cactus
+1F336 ; Emoji # E0.7 [1] (🌶️) hot pepper
+1F337..1F34A ; Emoji # E0.6 [20] (🌷..🍊) tulip..tangerine
+1F34B ; Emoji # E1.0 [1] (🍋) lemon
+1F34C..1F34F ; Emoji # E0.6 [4] (🍌..🍏) banana..green apple
+1F350 ; Emoji # E1.0 [1] (🍐) pear
+1F351..1F37B ; Emoji # E0.6 [43] (🍑..🍻) peach..clinking beer mugs
+1F37C ; Emoji # E1.0 [1] (🍼) baby bottle
+1F37D ; Emoji # E0.7 [1] (🍽️) fork and knife with plate
+1F37E..1F37F ; Emoji # E1.0 [2] (🍾..🍿) bottle with popping cork..popcorn
+1F380..1F393 ; Emoji # E0.6 [20] (🎀..🎓) ribbon..graduation cap
+1F396..1F397 ; Emoji # E0.7 [2] (🎖️..🎗️) military medal..reminder ribbon
+1F399..1F39B ; Emoji # E0.7 [3] (🎙️..🎛️) studio microphone..control knobs
+1F39E..1F39F ; Emoji # E0.7 [2] (🎞️..🎟️) film frames..admission tickets
+1F3A0..1F3C4 ; Emoji # E0.6 [37] (🎠..🏄) carousel horse..person surfing
+1F3C5 ; Emoji # E1.0 [1] (🏅) sports medal
+1F3C6 ; Emoji # E0.6 [1] (🏆) trophy
+1F3C7 ; Emoji # E1.0 [1] (🏇) horse racing
+1F3C8 ; Emoji # E0.6 [1] (🏈) american football
+1F3C9 ; Emoji # E1.0 [1] (🏉) rugby football
+1F3CA ; Emoji # E0.6 [1] (🏊) person swimming
+1F3CB..1F3CE ; Emoji # E0.7 [4] (🏋️..🏎️) person lifting weights..racing car
+1F3CF..1F3D3 ; Emoji # E1.0 [5] (🏏..🏓) cricket game..ping pong
+1F3D4..1F3DF ; Emoji # E0.7 [12] (🏔️..🏟️) snow-capped mountain..stadium
+1F3E0..1F3E3 ; Emoji # E0.6 [4] (🏠..🏣) house..Japanese post office
+1F3E4 ; Emoji # E1.0 [1] (🏤) post office
+1F3E5..1F3F0 ; Emoji # E0.6 [12] (🏥..🏰) hospital..castle
+1F3F3 ; Emoji # E0.7 [1] (🏳️) white flag
+1F3F4 ; Emoji # E1.0 [1] (🏴) black flag
+1F3F5 ; Emoji # E0.7 [1] (🏵️) rosette
+1F3F7 ; Emoji # E0.7 [1] (🏷️) label
+1F3F8..1F407 ; Emoji # E1.0 [16] (🏸..🐇) badminton..rabbit
+1F408 ; Emoji # E0.7 [1] (🐈) cat
+1F409..1F40B ; Emoji # E1.0 [3] (🐉..🐋) dragon..whale
+1F40C..1F40E ; Emoji # E0.6 [3] (🐌..🐎) snail..horse
+1F40F..1F410 ; Emoji # E1.0 [2] (🐏..🐐) ram..goat
+1F411..1F412 ; Emoji # E0.6 [2] (🐑..🐒) ewe..monkey
+1F413 ; Emoji # E1.0 [1] (🐓) rooster
+1F414 ; Emoji # E0.6 [1] (🐔) chicken
+1F415 ; Emoji # E0.7 [1] (🐕) dog
+1F416 ; Emoji # E1.0 [1] (🐖) pig
+1F417..1F429 ; Emoji # E0.6 [19] (🐗..🐩) boar..poodle
+1F42A ; Emoji # E1.0 [1] (🐪) camel
+1F42B..1F43E ; Emoji # E0.6 [20] (🐫..🐾) two-hump camel..paw prints
+1F43F ; Emoji # E0.7 [1] (🐿️) chipmunk
+1F440 ; Emoji # E0.6 [1] (👀) eyes
+1F441 ; Emoji # E0.7 [1] (👁️) eye
+1F442..1F464 ; Emoji # E0.6 [35] (👂..👤) ear..bust in silhouette
+1F465 ; Emoji # E1.0 [1] (👥) busts in silhouette
+1F466..1F46B ; Emoji # E0.6 [6] (👦..👫) boy..woman and man holding hands
+1F46C..1F46D ; Emoji # E1.0 [2] (👬..👭) men holding hands..women holding hands
+1F46E..1F4AC ; Emoji # E0.6 [63] (👮..💬) police officer..speech balloon
+1F4AD ; Emoji # E1.0 [1] (💭) thought balloon
+1F4AE..1F4B5 ; Emoji # E0.6 [8] (💮..💵) white flower..dollar banknote
+1F4B6..1F4B7 ; Emoji # E1.0 [2] (💶..💷) euro banknote..pound banknote
+1F4B8..1F4EB ; Emoji # E0.6 [52] (💸..📫) money with wings..closed mailbox with raised flag
+1F4EC..1F4ED ; Emoji # E0.7 [2] (📬..📭) open mailbox with raised flag..open mailbox with lowered flag
+1F4EE ; Emoji # E0.6 [1] (📮) postbox
+1F4EF ; Emoji # E1.0 [1] (📯) postal horn
+1F4F0..1F4F4 ; Emoji # E0.6 [5] (📰..📴) newspaper..mobile phone off
+1F4F5 ; Emoji # E1.0 [1] (📵) no mobile phones
+1F4F6..1F4F7 ; Emoji # E0.6 [2] (📶..📷) antenna bars..camera
+1F4F8 ; Emoji # E1.0 [1] (📸) camera with flash
+1F4F9..1F4FC ; Emoji # E0.6 [4] (📹..📼) video camera..videocassette
+1F4FD ; Emoji # E0.7 [1] (📽️) film projector
+1F4FF..1F502 ; Emoji # E1.0 [4] (📿..🔂) prayer beads..repeat single button
+1F503 ; Emoji # E0.6 [1] (🔃) clockwise vertical arrows
+1F504..1F507 ; Emoji # E1.0 [4] (🔄..🔇) counterclockwise arrows button..muted speaker
+1F508 ; Emoji # E0.7 [1] (🔈) speaker low volume
+1F509 ; Emoji # E1.0 [1] (🔉) speaker medium volume
+1F50A..1F514 ; Emoji # E0.6 [11] (🔊..🔔) speaker high volume..bell
+1F515 ; Emoji # E1.0 [1] (🔕) bell with slash
+1F516..1F52B ; Emoji # E0.6 [22] (🔖..🔫) bookmark..water pistol
+1F52C..1F52D ; Emoji # E1.0 [2] (🔬..🔭) microscope..telescope
+1F52E..1F53D ; Emoji # E0.6 [16] (🔮..🔽) crystal ball..downwards button
+1F549..1F54A ; Emoji # E0.7 [2] (🕉️..🕊️) om..dove
+1F54B..1F54E ; Emoji # E1.0 [4] (🕋..🕎) kaaba..menorah
+1F550..1F55B ; Emoji # E0.6 [12] (🕐..🕛) one o’clock..twelve o’clock
+1F55C..1F567 ; Emoji # E0.7 [12] (🕜..🕧) one-thirty..twelve-thirty
+1F56F..1F570 ; Emoji # E0.7 [2] (🕯️..🕰️) candle..mantelpiece clock
+1F573..1F579 ; Emoji # E0.7 [7] (🕳️..🕹️) hole..joystick
+1F57A ; Emoji # E3.0 [1] (🕺) man dancing
+1F587 ; Emoji # E0.7 [1] (🖇️) linked paperclips
+1F58A..1F58D ; Emoji # E0.7 [4] (🖊️..🖍️) pen..crayon
+1F590 ; Emoji # E0.7 [1] (🖐️) hand with fingers splayed
+1F595..1F596 ; Emoji # E1.0 [2] (🖕..🖖) middle finger..vulcan salute
+1F5A4 ; Emoji # E3.0 [1] (🖤) black heart
+1F5A5 ; Emoji # E0.7 [1] (🖥️) desktop computer
+1F5A8 ; Emoji # E0.7 [1] (🖨️) printer
+1F5B1..1F5B2 ; Emoji # E0.7 [2] (🖱️..🖲️) computer mouse..trackball
+1F5BC ; Emoji # E0.7 [1] (🖼️) framed picture
+1F5C2..1F5C4 ; Emoji # E0.7 [3] (🗂️..🗄️) card index dividers..file cabinet
+1F5D1..1F5D3 ; Emoji # E0.7 [3] (🗑️..🗓️) wastebasket..spiral calendar
+1F5DC..1F5DE ; Emoji # E0.7 [3] (🗜️..🗞️) clamp..rolled-up newspaper
+1F5E1 ; Emoji # E0.7 [1] (🗡️) dagger
+1F5E3 ; Emoji # E0.7 [1] (🗣️) speaking head
+1F5E8 ; Emoji # E2.0 [1] (🗨️) left speech bubble
+1F5EF ; Emoji # E0.7 [1] (🗯️) right anger bubble
+1F5F3 ; Emoji # E0.7 [1] (🗳️) ballot box with ballot
+1F5FA ; Emoji # E0.7 [1] (🗺️) world map
+1F5FB..1F5FF ; Emoji # E0.6 [5] (🗻..🗿) mount fuji..moai
+1F600 ; Emoji # E1.0 [1] (😀) grinning face
+1F601..1F606 ; Emoji # E0.6 [6] (😁..😆) beaming face with smiling eyes..grinning squinting face
+1F607..1F608 ; Emoji # E1.0 [2] (😇..😈) smiling face with halo..smiling face with horns
+1F609..1F60D ; Emoji # E0.6 [5] (😉..😍) winking face..smiling face with heart-eyes
+1F60E ; Emoji # E1.0 [1] (😎) smiling face with sunglasses
+1F60F ; Emoji # E0.6 [1] (😏) smirking face
+1F610 ; Emoji # E0.7 [1] (😐) neutral face
+1F611 ; Emoji # E1.0 [1] (😑) expressionless face
+1F612..1F614 ; Emoji # E0.6 [3] (😒..😔) unamused face..pensive face
+1F615 ; Emoji # E1.0 [1] (😕) confused face
+1F616 ; Emoji # E0.6 [1] (😖) confounded face
+1F617 ; Emoji # E1.0 [1] (😗) kissing face
+1F618 ; Emoji # E0.6 [1] (😘) face blowing a kiss
+1F619 ; Emoji # E1.0 [1] (😙) kissing face with smiling eyes
+1F61A ; Emoji # E0.6 [1] (😚) kissing face with closed eyes
+1F61B ; Emoji # E1.0 [1] (😛) face with tongue
+1F61C..1F61E ; Emoji # E0.6 [3] (😜..😞) winking face with tongue..disappointed face
+1F61F ; Emoji # E1.0 [1] (😟) worried face
+1F620..1F625 ; Emoji # E0.6 [6] (😠..😥) angry face..sad but relieved face
+1F626..1F627 ; Emoji # E1.0 [2] (😦..😧) frowning face with open mouth..anguished face
+1F628..1F62B ; Emoji # E0.6 [4] (😨..😫) fearful face..tired face
+1F62C ; Emoji # E1.0 [1] (😬) grimacing face
+1F62D ; Emoji # E0.6 [1] (😭) loudly crying face
+1F62E..1F62F ; Emoji # E1.0 [2] (😮..😯) face with open mouth..hushed face
+1F630..1F633 ; Emoji # E0.6 [4] (😰..😳) anxious face with sweat..flushed face
+1F634 ; Emoji # E1.0 [1] (😴) sleeping face
+1F635 ; Emoji # E0.6 [1] (😵) face with crossed-out eyes
+1F636 ; Emoji # E1.0 [1] (😶) face without mouth
+1F637..1F640 ; Emoji # E0.6 [10] (😷..🙀) face with medical mask..weary cat
+1F641..1F644 ; Emoji # E1.0 [4] (🙁..🙄) slightly frowning face..face with rolling eyes
+1F645..1F64F ; Emoji # E0.6 [11] (🙅..🙏) person gesturing NO..folded hands
+1F680 ; Emoji # E0.6 [1] (🚀) rocket
+1F681..1F682 ; Emoji # E1.0 [2] (🚁..🚂) helicopter..locomotive
+1F683..1F685 ; Emoji # E0.6 [3] (🚃..🚅) railway car..bullet train
+1F686 ; Emoji # E1.0 [1] (🚆) train
+1F687 ; Emoji # E0.6 [1] (🚇) metro
+1F688 ; Emoji # E1.0 [1] (🚈) light rail
+1F689 ; Emoji # E0.6 [1] (🚉) station
+1F68A..1F68B ; Emoji # E1.0 [2] (🚊..🚋) tram..tram car
+1F68C ; Emoji # E0.6 [1] (🚌) bus
+1F68D ; Emoji # E0.7 [1] (🚍) oncoming bus
+1F68E ; Emoji # E1.0 [1] (🚎) trolleybus
+1F68F ; Emoji # E0.6 [1] (🚏) bus stop
+1F690 ; Emoji # E1.0 [1] (🚐) minibus
+1F691..1F693 ; Emoji # E0.6 [3] (🚑..🚓) ambulance..police car
+1F694 ; Emoji # E0.7 [1] (🚔) oncoming police car
+1F695 ; Emoji # E0.6 [1] (🚕) taxi
+1F696 ; Emoji # E1.0 [1] (🚖) oncoming taxi
+1F697 ; Emoji # E0.6 [1] (🚗) automobile
+1F698 ; Emoji # E0.7 [1] (🚘) oncoming automobile
+1F699..1F69A ; Emoji # E0.6 [2] (🚙..🚚) sport utility vehicle..delivery truck
+1F69B..1F6A1 ; Emoji # E1.0 [7] (🚛..🚡) articulated lorry..aerial tramway
+1F6A2 ; Emoji # E0.6 [1] (🚢) ship
+1F6A3 ; Emoji # E1.0 [1] (🚣) person rowing boat
+1F6A4..1F6A5 ; Emoji # E0.6 [2] (🚤..🚥) speedboat..horizontal traffic light
+1F6A6 ; Emoji # E1.0 [1] (🚦) vertical traffic light
+1F6A7..1F6AD ; Emoji # E0.6 [7] (🚧..🚭) construction..no smoking
+1F6AE..1F6B1 ; Emoji # E1.0 [4] (🚮..🚱) litter in bin sign..non-potable water
+1F6B2 ; Emoji # E0.6 [1] (🚲) bicycle
+1F6B3..1F6B5 ; Emoji # E1.0 [3] (🚳..🚵) no bicycles..person mountain biking
+1F6B6 ; Emoji # E0.6 [1] (🚶) person walking
+1F6B7..1F6B8 ; Emoji # E1.0 [2] (🚷..🚸) no pedestrians..children crossing
+1F6B9..1F6BE ; Emoji # E0.6 [6] (🚹..🚾) men’s room..water closet
+1F6BF ; Emoji # E1.0 [1] (🚿) shower
+1F6C0 ; Emoji # E0.6 [1] (🛀) person taking bath
+1F6C1..1F6C5 ; Emoji # E1.0 [5] (🛁..🛅) bathtub..left luggage
+1F6CB ; Emoji # E0.7 [1] (🛋️) couch and lamp
+1F6CC ; Emoji # E1.0 [1] (🛌) person in bed
+1F6CD..1F6CF ; Emoji # E0.7 [3] (🛍️..🛏️) shopping bags..bed
+1F6D0 ; Emoji # E1.0 [1] (🛐) place of worship
+1F6D1..1F6D2 ; Emoji # E3.0 [2] (🛑..🛒) stop sign..shopping cart
+1F6D5 ; Emoji # E12.0 [1] (🛕) hindu temple
+1F6D6..1F6D7 ; Emoji # E13.0 [2] (🛖..🛗) hut..elevator
+1F6DC ; Emoji # E15.0 [1] (🛜) wireless
+1F6DD..1F6DF ; Emoji # E14.0 [3] (🛝..🛟) playground slide..ring buoy
+1F6E0..1F6E5 ; Emoji # E0.7 [6] (🛠️..🛥️) hammer and wrench..motor boat
+1F6E9 ; Emoji # E0.7 [1] (🛩️) small airplane
+1F6EB..1F6EC ; Emoji # E1.0 [2] (🛫..🛬) airplane departure..airplane arrival
+1F6F0 ; Emoji # E0.7 [1] (🛰️) satellite
+1F6F3 ; Emoji # E0.7 [1] (🛳️) passenger ship
+1F6F4..1F6F6 ; Emoji # E3.0 [3] (🛴..🛶) kick scooter..canoe
+1F6F7..1F6F8 ; Emoji # E5.0 [2] (🛷..🛸) sled..flying saucer
+1F6F9 ; Emoji # E11.0 [1] (🛹) skateboard
+1F6FA ; Emoji # E12.0 [1] (🛺) auto rickshaw
+1F6FB..1F6FC ; Emoji # E13.0 [2] (🛻..🛼) pickup truck..roller skate
+1F7E0..1F7EB ; Emoji # E12.0 [12] (🟠..🟫) orange circle..brown square
+1F7F0 ; Emoji # E14.0 [1] (🟰) heavy equals sign
+1F90C ; Emoji # E13.0 [1] (🤌) pinched fingers
+1F90D..1F90F ; Emoji # E12.0 [3] (🤍..🤏) white heart..pinching hand
+1F910..1F918 ; Emoji # E1.0 [9] (🤐..🤘) zipper-mouth face..sign of the horns
+1F919..1F91E ; Emoji # E3.0 [6] (🤙..🤞) call me hand..crossed fingers
+1F91F ; Emoji # E5.0 [1] (🤟) love-you gesture
+1F920..1F927 ; Emoji # E3.0 [8] (🤠..🤧) cowboy hat face..sneezing face
+1F928..1F92F ; Emoji # E5.0 [8] (🤨..🤯) face with raised eyebrow..exploding head
+1F930 ; Emoji # E3.0 [1] (🤰) pregnant woman
+1F931..1F932 ; Emoji # E5.0 [2] (🤱..🤲) breast-feeding..palms up together
+1F933..1F93A ; Emoji # E3.0 [8] (🤳..🤺) selfie..person fencing
+1F93C..1F93E ; Emoji # E3.0 [3] (🤼..🤾) people wrestling..person playing handball
+1F93F ; Emoji # E12.0 [1] (🤿) diving mask
+1F940..1F945 ; Emoji # E3.0 [6] (🥀..🥅) wilted flower..goal net
+1F947..1F94B ; Emoji # E3.0 [5] (🥇..🥋) 1st place medal..martial arts uniform
+1F94C ; Emoji # E5.0 [1] (🥌) curling stone
+1F94D..1F94F ; Emoji # E11.0 [3] (🥍..🥏) lacrosse..flying disc
+1F950..1F95E ; Emoji # E3.0 [15] (🥐..🥞) croissant..pancakes
+1F95F..1F96B ; Emoji # E5.0 [13] (🥟..🥫) dumpling..canned food
+1F96C..1F970 ; Emoji # E11.0 [5] (🥬..🥰) leafy green..smiling face with hearts
+1F971 ; Emoji # E12.0 [1] (🥱) yawning face
+1F972 ; Emoji # E13.0 [1] (🥲) smiling face with tear
+1F973..1F976 ; Emoji # E11.0 [4] (🥳..🥶) partying face..cold face
+1F977..1F978 ; Emoji # E13.0 [2] (🥷..🥸) ninja..disguised face
+1F979 ; Emoji # E14.0 [1] (🥹) face holding back tears
+1F97A ; Emoji # E11.0 [1] (🥺) pleading face
+1F97B ; Emoji # E12.0 [1] (🥻) sari
+1F97C..1F97F ; Emoji # E11.0 [4] (🥼..🥿) lab coat..flat shoe
+1F980..1F984 ; Emoji # E1.0 [5] (🦀..🦄) crab..unicorn
+1F985..1F991 ; Emoji # E3.0 [13] (🦅..🦑) eagle..squid
+1F992..1F997 ; Emoji # E5.0 [6] (🦒..🦗) giraffe..cricket
+1F998..1F9A2 ; Emoji # E11.0 [11] (🦘..🦢) kangaroo..swan
+1F9A3..1F9A4 ; Emoji # E13.0 [2] (🦣..🦤) mammoth..dodo
+1F9A5..1F9AA ; Emoji # E12.0 [6] (🦥..🦪) sloth..oyster
+1F9AB..1F9AD ; Emoji # E13.0 [3] (🦫..🦭) beaver..seal
+1F9AE..1F9AF ; Emoji # E12.0 [2] (🦮..🦯) guide dog..white cane
+1F9B0..1F9B9 ; Emoji # E11.0 [10] (🦰..🦹) red hair..supervillain
+1F9BA..1F9BF ; Emoji # E12.0 [6] (🦺..🦿) safety vest..mechanical leg
+1F9C0 ; Emoji # E1.0 [1] (🧀) cheese wedge
+1F9C1..1F9C2 ; Emoji # E11.0 [2] (🧁..🧂) cupcake..salt
+1F9C3..1F9CA ; Emoji # E12.0 [8] (🧃..🧊) beverage box..ice
+1F9CB ; Emoji # E13.0 [1] (🧋) bubble tea
+1F9CC ; Emoji # E14.0 [1] (🧌) troll
+1F9CD..1F9CF ; Emoji # E12.0 [3] (🧍..🧏) person standing..deaf person
+1F9D0..1F9E6 ; Emoji # E5.0 [23] (🧐..🧦) face with monocle..socks
+1F9E7..1F9FF ; Emoji # E11.0 [25] (🧧..🧿) red envelope..nazar amulet
+1FA70..1FA73 ; Emoji # E12.0 [4] (🩰..🩳) ballet shoes..shorts
+1FA74 ; Emoji # E13.0 [1] (🩴) thong sandal
+1FA75..1FA77 ; Emoji # E15.0 [3] (🩵..🩷) light blue heart..pink heart
+1FA78..1FA7A ; Emoji # E12.0 [3] (🩸..🩺) drop of blood..stethoscope
+1FA7B..1FA7C ; Emoji # E14.0 [2] (🩻..🩼) x-ray..crutch
+1FA80..1FA82 ; Emoji # E12.0 [3] (🪀..🪂) yo-yo..parachute
+1FA83..1FA86 ; Emoji # E13.0 [4] (🪃..🪆) boomerang..nesting dolls
+1FA87..1FA88 ; Emoji # E15.0 [2] (🪇..🪈) maracas..flute
+1FA90..1FA95 ; Emoji # E12.0 [6] (🪐..🪕) ringed planet..banjo
+1FA96..1FAA8 ; Emoji # E13.0 [19] (🪖..🪨) military helmet..rock
+1FAA9..1FAAC ; Emoji # E14.0 [4] (🪩..🪬) mirror ball..hamsa
+1FAAD..1FAAF ; Emoji # E15.0 [3] (🪭..🪯) folding hand fan..khanda
+1FAB0..1FAB6 ; Emoji # E13.0 [7] (🪰..🪶) fly..feather
+1FAB7..1FABA ; Emoji # E14.0 [4] (🪷..🪺) lotus..nest with eggs
+1FABB..1FABD ; Emoji # E15.0 [3] (🪻..🪽) hyacinth..wing
+1FABF ; Emoji # E15.0 [1] (🪿) goose
+1FAC0..1FAC2 ; Emoji # E13.0 [3] (🫀..🫂) anatomical heart..people hugging
+1FAC3..1FAC5 ; Emoji # E14.0 [3] (🫃..🫅) pregnant man..person with crown
+1FACE..1FACF ; Emoji # E15.0 [2] (🫎..🫏) moose..donkey
+1FAD0..1FAD6 ; Emoji # E13.0 [7] (🫐..🫖) blueberries..teapot
+1FAD7..1FAD9 ; Emoji # E14.0 [3] (🫗..🫙) pouring liquid..jar
+1FADA..1FADB ; Emoji # E15.0 [2] (🫚..🫛) ginger root..pea pod
+1FAE0..1FAE7 ; Emoji # E14.0 [8] (🫠..🫧) melting face..bubbles
+1FAE8 ; Emoji # E15.0 [1] (🫨) shaking face
+1FAF0..1FAF6 ; Emoji # E14.0 [7] (🫰..🫶) hand with index finger and thumb crossed..heart hands
+1FAF7..1FAF8 ; Emoji # E15.0 [2] (🫷..🫸) leftwards pushing hand..rightwards pushing hand
+
+# Total elements: 1424
+
+# ================================================
+
+# All omitted code points have Emoji_Presentation=No
+
+231A..231B ; Emoji_Presentation # E0.6 [2] (⌚..⌛) watch..hourglass done
+23E9..23EC ; Emoji_Presentation # E0.6 [4] (⏩..⏬) fast-forward button..fast down button
+23F0 ; Emoji_Presentation # E0.6 [1] (⏰) alarm clock
+23F3 ; Emoji_Presentation # E0.6 [1] (⏳) hourglass not done
+25FD..25FE ; Emoji_Presentation # E0.6 [2] (◽..◾) white medium-small square..black medium-small square
+2614..2615 ; Emoji_Presentation # E0.6 [2] (☔..☕) umbrella with rain drops..hot beverage
+2648..2653 ; Emoji_Presentation # E0.6 [12] (♈..♓) Aries..Pisces
+267F ; Emoji_Presentation # E0.6 [1] (♿) wheelchair symbol
+2693 ; Emoji_Presentation # E0.6 [1] (⚓) anchor
+26A1 ; Emoji_Presentation # E0.6 [1] (⚡) high voltage
+26AA..26AB ; Emoji_Presentation # E0.6 [2] (⚪..⚫) white circle..black circle
+26BD..26BE ; Emoji_Presentation # E0.6 [2] (⚽..⚾) soccer ball..baseball
+26C4..26C5 ; Emoji_Presentation # E0.6 [2] (⛄..⛅) snowman without snow..sun behind cloud
+26CE ; Emoji_Presentation # E0.6 [1] (⛎) Ophiuchus
+26D4 ; Emoji_Presentation # E0.6 [1] (⛔) no entry
+26EA ; Emoji_Presentation # E0.6 [1] (⛪) church
+26F2..26F3 ; Emoji_Presentation # E0.6 [2] (⛲..⛳) fountain..flag in hole
+26F5 ; Emoji_Presentation # E0.6 [1] (⛵) sailboat
+26FA ; Emoji_Presentation # E0.6 [1] (⛺) tent
+26FD ; Emoji_Presentation # E0.6 [1] (⛽) fuel pump
+2705 ; Emoji_Presentation # E0.6 [1] (✅) check mark button
+270A..270B ; Emoji_Presentation # E0.6 [2] (✊..✋) raised fist..raised hand
+2728 ; Emoji_Presentation # E0.6 [1] (✨) sparkles
+274C ; Emoji_Presentation # E0.6 [1] (❌) cross mark
+274E ; Emoji_Presentation # E0.6 [1] (❎) cross mark button
+2753..2755 ; Emoji_Presentation # E0.6 [3] (❓..❕) red question mark..white exclamation mark
+2757 ; Emoji_Presentation # E0.6 [1] (❗) red exclamation mark
+2795..2797 ; Emoji_Presentation # E0.6 [3] (➕..➗) plus..divide
+27B0 ; Emoji_Presentation # E0.6 [1] (➰) curly loop
+27BF ; Emoji_Presentation # E1.0 [1] (➿) double curly loop
+2B1B..2B1C ; Emoji_Presentation # E0.6 [2] (⬛..⬜) black large square..white large square
+2B50 ; Emoji_Presentation # E0.6 [1] (⭐) star
+2B55 ; Emoji_Presentation # E0.6 [1] (⭕) hollow red circle
+1F004 ; Emoji_Presentation # E0.6 [1] (🀄) mahjong red dragon
+1F0CF ; Emoji_Presentation # E0.6 [1] (🃏) joker
+1F18E ; Emoji_Presentation # E0.6 [1] (🆎) AB button (blood type)
+1F191..1F19A ; Emoji_Presentation # E0.6 [10] (🆑..🆚) CL button..VS button
+1F1E6..1F1FF ; Emoji_Presentation # E0.0 [26] (🇦..🇿) regional indicator symbol letter a..regional indicator symbol letter z
+1F201 ; Emoji_Presentation # E0.6 [1] (🈁) Japanese “here” button
+1F21A ; Emoji_Presentation # E0.6 [1] (🈚) Japanese “free of charge” button
+1F22F ; Emoji_Presentation # E0.6 [1] (🈯) Japanese “reserved” button
+1F232..1F236 ; Emoji_Presentation # E0.6 [5] (🈲..🈶) Japanese “prohibited” button..Japanese “not free of charge” button
+1F238..1F23A ; Emoji_Presentation # E0.6 [3] (🈸..🈺) Japanese “application” button..Japanese “open for business” button
+1F250..1F251 ; Emoji_Presentation # E0.6 [2] (🉐..🉑) Japanese “bargain” button..Japanese “acceptable” button
+1F300..1F30C ; Emoji_Presentation # E0.6 [13] (🌀..🌌) cyclone..milky way
+1F30D..1F30E ; Emoji_Presentation # E0.7 [2] (🌍..🌎) globe showing Europe-Africa..globe showing Americas
+1F30F ; Emoji_Presentation # E0.6 [1] (🌏) globe showing Asia-Australia
+1F310 ; Emoji_Presentation # E1.0 [1] (🌐) globe with meridians
+1F311 ; Emoji_Presentation # E0.6 [1] (🌑) new moon
+1F312 ; Emoji_Presentation # E1.0 [1] (🌒) waxing crescent moon
+1F313..1F315 ; Emoji_Presentation # E0.6 [3] (🌓..🌕) first quarter moon..full moon
+1F316..1F318 ; Emoji_Presentation # E1.0 [3] (🌖..🌘) waning gibbous moon..waning crescent moon
+1F319 ; Emoji_Presentation # E0.6 [1] (🌙) crescent moon
+1F31A ; Emoji_Presentation # E1.0 [1] (🌚) new moon face
+1F31B ; Emoji_Presentation # E0.6 [1] (🌛) first quarter moon face
+1F31C ; Emoji_Presentation # E0.7 [1] (🌜) last quarter moon face
+1F31D..1F31E ; Emoji_Presentation # E1.0 [2] (🌝..🌞) full moon face..sun with face
+1F31F..1F320 ; Emoji_Presentation # E0.6 [2] (🌟..🌠) glowing star..shooting star
+1F32D..1F32F ; Emoji_Presentation # E1.0 [3] (🌭..🌯) hot dog..burrito
+1F330..1F331 ; Emoji_Presentation # E0.6 [2] (🌰..🌱) chestnut..seedling
+1F332..1F333 ; Emoji_Presentation # E1.0 [2] (🌲..🌳) evergreen tree..deciduous tree
+1F334..1F335 ; Emoji_Presentation # E0.6 [2] (🌴..🌵) palm tree..cactus
+1F337..1F34A ; Emoji_Presentation # E0.6 [20] (🌷..🍊) tulip..tangerine
+1F34B ; Emoji_Presentation # E1.0 [1] (🍋) lemon
+1F34C..1F34F ; Emoji_Presentation # E0.6 [4] (🍌..🍏) banana..green apple
+1F350 ; Emoji_Presentation # E1.0 [1] (🍐) pear
+1F351..1F37B ; Emoji_Presentation # E0.6 [43] (🍑..🍻) peach..clinking beer mugs
+1F37C ; Emoji_Presentation # E1.0 [1] (🍼) baby bottle
+1F37E..1F37F ; Emoji_Presentation # E1.0 [2] (🍾..🍿) bottle with popping cork..popcorn
+1F380..1F393 ; Emoji_Presentation # E0.6 [20] (🎀..🎓) ribbon..graduation cap
+1F3A0..1F3C4 ; Emoji_Presentation # E0.6 [37] (🎠..🏄) carousel horse..person surfing
+1F3C5 ; Emoji_Presentation # E1.0 [1] (🏅) sports medal
+1F3C6 ; Emoji_Presentation # E0.6 [1] (🏆) trophy
+1F3C7 ; Emoji_Presentation # E1.0 [1] (🏇) horse racing
+1F3C8 ; Emoji_Presentation # E0.6 [1] (🏈) american football
+1F3C9 ; Emoji_Presentation # E1.0 [1] (🏉) rugby football
+1F3CA ; Emoji_Presentation # E0.6 [1] (🏊) person swimming
+1F3CF..1F3D3 ; Emoji_Presentation # E1.0 [5] (🏏..🏓) cricket game..ping pong
+1F3E0..1F3E3 ; Emoji_Presentation # E0.6 [4] (🏠..🏣) house..Japanese post office
+1F3E4 ; Emoji_Presentation # E1.0 [1] (🏤) post office
+1F3E5..1F3F0 ; Emoji_Presentation # E0.6 [12] (🏥..🏰) hospital..castle
+1F3F4 ; Emoji_Presentation # E1.0 [1] (🏴) black flag
+1F3F8..1F407 ; Emoji_Presentation # E1.0 [16] (🏸..🐇) badminton..rabbit
+1F408 ; Emoji_Presentation # E0.7 [1] (🐈) cat
+1F409..1F40B ; Emoji_Presentation # E1.0 [3] (🐉..🐋) dragon..whale
+1F40C..1F40E ; Emoji_Presentation # E0.6 [3] (🐌..🐎) snail..horse
+1F40F..1F410 ; Emoji_Presentation # E1.0 [2] (🐏..🐐) ram..goat
+1F411..1F412 ; Emoji_Presentation # E0.6 [2] (🐑..🐒) ewe..monkey
+1F413 ; Emoji_Presentation # E1.0 [1] (🐓) rooster
+1F414 ; Emoji_Presentation # E0.6 [1] (🐔) chicken
+1F415 ; Emoji_Presentation # E0.7 [1] (🐕) dog
+1F416 ; Emoji_Presentation # E1.0 [1] (🐖) pig
+1F417..1F429 ; Emoji_Presentation # E0.6 [19] (🐗..🐩) boar..poodle
+1F42A ; Emoji_Presentation # E1.0 [1] (🐪) camel
+1F42B..1F43E ; Emoji_Presentation # E0.6 [20] (🐫..🐾) two-hump camel..paw prints
+1F440 ; Emoji_Presentation # E0.6 [1] (👀) eyes
+1F442..1F464 ; Emoji_Presentation # E0.6 [35] (👂..👤) ear..bust in silhouette
+1F465 ; Emoji_Presentation # E1.0 [1] (👥) busts in silhouette
+1F466..1F46B ; Emoji_Presentation # E0.6 [6] (👦..👫) boy..woman and man holding hands
+1F46C..1F46D ; Emoji_Presentation # E1.0 [2] (👬..👭) men holding hands..women holding hands
+1F46E..1F4AC ; Emoji_Presentation # E0.6 [63] (👮..💬) police officer..speech balloon
+1F4AD ; Emoji_Presentation # E1.0 [1] (💭) thought balloon
+1F4AE..1F4B5 ; Emoji_Presentation # E0.6 [8] (💮..💵) white flower..dollar banknote
+1F4B6..1F4B7 ; Emoji_Presentation # E1.0 [2] (💶..💷) euro banknote..pound banknote
+1F4B8..1F4EB ; Emoji_Presentation # E0.6 [52] (💸..📫) money with wings..closed mailbox with raised flag
+1F4EC..1F4ED ; Emoji_Presentation # E0.7 [2] (📬..📭) open mailbox with raised flag..open mailbox with lowered flag
+1F4EE ; Emoji_Presentation # E0.6 [1] (📮) postbox
+1F4EF ; Emoji_Presentation # E1.0 [1] (📯) postal horn
+1F4F0..1F4F4 ; Emoji_Presentation # E0.6 [5] (📰..📴) newspaper..mobile phone off
+1F4F5 ; Emoji_Presentation # E1.0 [1] (📵) no mobile phones
+1F4F6..1F4F7 ; Emoji_Presentation # E0.6 [2] (📶..📷) antenna bars..camera
+1F4F8 ; Emoji_Presentation # E1.0 [1] (📸) camera with flash
+1F4F9..1F4FC ; Emoji_Presentation # E0.6 [4] (📹..📼) video camera..videocassette
+1F4FF..1F502 ; Emoji_Presentation # E1.0 [4] (📿..🔂) prayer beads..repeat single button
+1F503 ; Emoji_Presentation # E0.6 [1] (🔃) clockwise vertical arrows
+1F504..1F507 ; Emoji_Presentation # E1.0 [4] (🔄..🔇) counterclockwise arrows button..muted speaker
+1F508 ; Emoji_Presentation # E0.7 [1] (🔈) speaker low volume
+1F509 ; Emoji_Presentation # E1.0 [1] (🔉) speaker medium volume
+1F50A..1F514 ; Emoji_Presentation # E0.6 [11] (🔊..🔔) speaker high volume..bell
+1F515 ; Emoji_Presentation # E1.0 [1] (🔕) bell with slash
+1F516..1F52B ; Emoji_Presentation # E0.6 [22] (🔖..🔫) bookmark..water pistol
+1F52C..1F52D ; Emoji_Presentation # E1.0 [2] (🔬..🔭) microscope..telescope
+1F52E..1F53D ; Emoji_Presentation # E0.6 [16] (🔮..🔽) crystal ball..downwards button
+1F54B..1F54E ; Emoji_Presentation # E1.0 [4] (🕋..🕎) kaaba..menorah
+1F550..1F55B ; Emoji_Presentation # E0.6 [12] (🕐..🕛) one o’clock..twelve o’clock
+1F55C..1F567 ; Emoji_Presentation # E0.7 [12] (🕜..🕧) one-thirty..twelve-thirty
+1F57A ; Emoji_Presentation # E3.0 [1] (🕺) man dancing
+1F595..1F596 ; Emoji_Presentation # E1.0 [2] (🖕..🖖) middle finger..vulcan salute
+1F5A4 ; Emoji_Presentation # E3.0 [1] (🖤) black heart
+1F5FB..1F5FF ; Emoji_Presentation # E0.6 [5] (🗻..🗿) mount fuji..moai
+1F600 ; Emoji_Presentation # E1.0 [1] (😀) grinning face
+1F601..1F606 ; Emoji_Presentation # E0.6 [6] (😁..😆) beaming face with smiling eyes..grinning squinting face
+1F607..1F608 ; Emoji_Presentation # E1.0 [2] (😇..😈) smiling face with halo..smiling face with horns
+1F609..1F60D ; Emoji_Presentation # E0.6 [5] (😉..😍) winking face..smiling face with heart-eyes
+1F60E ; Emoji_Presentation # E1.0 [1] (😎) smiling face with sunglasses
+1F60F ; Emoji_Presentation # E0.6 [1] (😏) smirking face
+1F610 ; Emoji_Presentation # E0.7 [1] (😐) neutral face
+1F611 ; Emoji_Presentation # E1.0 [1] (😑) expressionless face
+1F612..1F614 ; Emoji_Presentation # E0.6 [3] (😒..😔) unamused face..pensive face
+1F615 ; Emoji_Presentation # E1.0 [1] (😕) confused face
+1F616 ; Emoji_Presentation # E0.6 [1] (😖) confounded face
+1F617 ; Emoji_Presentation # E1.0 [1] (😗) kissing face
+1F618 ; Emoji_Presentation # E0.6 [1] (😘) face blowing a kiss
+1F619 ; Emoji_Presentation # E1.0 [1] (😙) kissing face with smiling eyes
+1F61A ; Emoji_Presentation # E0.6 [1] (😚) kissing face with closed eyes
+1F61B ; Emoji_Presentation # E1.0 [1] (😛) face with tongue
+1F61C..1F61E ; Emoji_Presentation # E0.6 [3] (😜..😞) winking face with tongue..disappointed face
+1F61F ; Emoji_Presentation # E1.0 [1] (😟) worried face
+1F620..1F625 ; Emoji_Presentation # E0.6 [6] (😠..😥) angry face..sad but relieved face
+1F626..1F627 ; Emoji_Presentation # E1.0 [2] (😦..😧) frowning face with open mouth..anguished face
+1F628..1F62B ; Emoji_Presentation # E0.6 [4] (😨..😫) fearful face..tired face
+1F62C ; Emoji_Presentation # E1.0 [1] (😬) grimacing face
+1F62D ; Emoji_Presentation # E0.6 [1] (😭) loudly crying face
+1F62E..1F62F ; Emoji_Presentation # E1.0 [2] (😮..😯) face with open mouth..hushed face
+1F630..1F633 ; Emoji_Presentation # E0.6 [4] (😰..😳) anxious face with sweat..flushed face
+1F634 ; Emoji_Presentation # E1.0 [1] (😴) sleeping face
+1F635 ; Emoji_Presentation # E0.6 [1] (😵) face with crossed-out eyes
+1F636 ; Emoji_Presentation # E1.0 [1] (😶) face without mouth
+1F637..1F640 ; Emoji_Presentation # E0.6 [10] (😷..🙀) face with medical mask..weary cat
+1F641..1F644 ; Emoji_Presentation # E1.0 [4] (🙁..🙄) slightly frowning face..face with rolling eyes
+1F645..1F64F ; Emoji_Presentation # E0.6 [11] (🙅..🙏) person gesturing NO..folded hands
+1F680 ; Emoji_Presentation # E0.6 [1] (🚀) rocket
+1F681..1F682 ; Emoji_Presentation # E1.0 [2] (🚁..🚂) helicopter..locomotive
+1F683..1F685 ; Emoji_Presentation # E0.6 [3] (🚃..🚅) railway car..bullet train
+1F686 ; Emoji_Presentation # E1.0 [1] (🚆) train
+1F687 ; Emoji_Presentation # E0.6 [1] (🚇) metro
+1F688 ; Emoji_Presentation # E1.0 [1] (🚈) light rail
+1F689 ; Emoji_Presentation # E0.6 [1] (🚉) station
+1F68A..1F68B ; Emoji_Presentation # E1.0 [2] (🚊..🚋) tram..tram car
+1F68C ; Emoji_Presentation # E0.6 [1] (🚌) bus
+1F68D ; Emoji_Presentation # E0.7 [1] (🚍) oncoming bus
+1F68E ; Emoji_Presentation # E1.0 [1] (🚎) trolleybus
+1F68F ; Emoji_Presentation # E0.6 [1] (🚏) bus stop
+1F690 ; Emoji_Presentation # E1.0 [1] (🚐) minibus
+1F691..1F693 ; Emoji_Presentation # E0.6 [3] (🚑..🚓) ambulance..police car
+1F694 ; Emoji_Presentation # E0.7 [1] (🚔) oncoming police car
+1F695 ; Emoji_Presentation # E0.6 [1] (🚕) taxi
+1F696 ; Emoji_Presentation # E1.0 [1] (🚖) oncoming taxi
+1F697 ; Emoji_Presentation # E0.6 [1] (🚗) automobile
+1F698 ; Emoji_Presentation # E0.7 [1] (🚘) oncoming automobile
+1F699..1F69A ; Emoji_Presentation # E0.6 [2] (🚙..🚚) sport utility vehicle..delivery truck
+1F69B..1F6A1 ; Emoji_Presentation # E1.0 [7] (🚛..🚡) articulated lorry..aerial tramway
+1F6A2 ; Emoji_Presentation # E0.6 [1] (🚢) ship
+1F6A3 ; Emoji_Presentation # E1.0 [1] (🚣) person rowing boat
+1F6A4..1F6A5 ; Emoji_Presentation # E0.6 [2] (🚤..🚥) speedboat..horizontal traffic light
+1F6A6 ; Emoji_Presentation # E1.0 [1] (🚦) vertical traffic light
+1F6A7..1F6AD ; Emoji_Presentation # E0.6 [7] (🚧..🚭) construction..no smoking
+1F6AE..1F6B1 ; Emoji_Presentation # E1.0 [4] (🚮..🚱) litter in bin sign..non-potable water
+1F6B2 ; Emoji_Presentation # E0.6 [1] (🚲) bicycle
+1F6B3..1F6B5 ; Emoji_Presentation # E1.0 [3] (🚳..🚵) no bicycles..person mountain biking
+1F6B6 ; Emoji_Presentation # E0.6 [1] (🚶) person walking
+1F6B7..1F6B8 ; Emoji_Presentation # E1.0 [2] (🚷..🚸) no pedestrians..children crossing
+1F6B9..1F6BE ; Emoji_Presentation # E0.6 [6] (🚹..🚾) men’s room..water closet
+1F6BF ; Emoji_Presentation # E1.0 [1] (🚿) shower
+1F6C0 ; Emoji_Presentation # E0.6 [1] (🛀) person taking bath
+1F6C1..1F6C5 ; Emoji_Presentation # E1.0 [5] (🛁..🛅) bathtub..left luggage
+1F6CC ; Emoji_Presentation # E1.0 [1] (🛌) person in bed
+1F6D0 ; Emoji_Presentation # E1.0 [1] (🛐) place of worship
+1F6D1..1F6D2 ; Emoji_Presentation # E3.0 [2] (🛑..🛒) stop sign..shopping cart
+1F6D5 ; Emoji_Presentation # E12.0 [1] (🛕) hindu temple
+1F6D6..1F6D7 ; Emoji_Presentation # E13.0 [2] (🛖..🛗) hut..elevator
+1F6DC ; Emoji_Presentation # E15.0 [1] (🛜) wireless
+1F6DD..1F6DF ; Emoji_Presentation # E14.0 [3] (🛝..🛟) playground slide..ring buoy
+1F6EB..1F6EC ; Emoji_Presentation # E1.0 [2] (🛫..🛬) airplane departure..airplane arrival
+1F6F4..1F6F6 ; Emoji_Presentation # E3.0 [3] (🛴..🛶) kick scooter..canoe
+1F6F7..1F6F8 ; Emoji_Presentation # E5.0 [2] (🛷..🛸) sled..flying saucer
+1F6F9 ; Emoji_Presentation # E11.0 [1] (🛹) skateboard
+1F6FA ; Emoji_Presentation # E12.0 [1] (🛺) auto rickshaw
+1F6FB..1F6FC ; Emoji_Presentation # E13.0 [2] (🛻..🛼) pickup truck..roller skate
+1F7E0..1F7EB ; Emoji_Presentation # E12.0 [12] (🟠..🟫) orange circle..brown square
+1F7F0 ; Emoji_Presentation # E14.0 [1] (🟰) heavy equals sign
+1F90C ; Emoji_Presentation # E13.0 [1] (🤌) pinched fingers
+1F90D..1F90F ; Emoji_Presentation # E12.0 [3] (🤍..🤏) white heart..pinching hand
+1F910..1F918 ; Emoji_Presentation # E1.0 [9] (🤐..🤘) zipper-mouth face..sign of the horns
+1F919..1F91E ; Emoji_Presentation # E3.0 [6] (🤙..🤞) call me hand..crossed fingers
+1F91F ; Emoji_Presentation # E5.0 [1] (🤟) love-you gesture
+1F920..1F927 ; Emoji_Presentation # E3.0 [8] (🤠..🤧) cowboy hat face..sneezing face
+1F928..1F92F ; Emoji_Presentation # E5.0 [8] (🤨..🤯) face with raised eyebrow..exploding head
+1F930 ; Emoji_Presentation # E3.0 [1] (🤰) pregnant woman
+1F931..1F932 ; Emoji_Presentation # E5.0 [2] (🤱..🤲) breast-feeding..palms up together
+1F933..1F93A ; Emoji_Presentation # E3.0 [8] (🤳..🤺) selfie..person fencing
+1F93C..1F93E ; Emoji_Presentation # E3.0 [3] (🤼..🤾) people wrestling..person playing handball
+1F93F ; Emoji_Presentation # E12.0 [1] (🤿) diving mask
+1F940..1F945 ; Emoji_Presentation # E3.0 [6] (🥀..🥅) wilted flower..goal net
+1F947..1F94B ; Emoji_Presentation # E3.0 [5] (🥇..🥋) 1st place medal..martial arts uniform
+1F94C ; Emoji_Presentation # E5.0 [1] (🥌) curling stone
+1F94D..1F94F ; Emoji_Presentation # E11.0 [3] (🥍..🥏) lacrosse..flying disc
+1F950..1F95E ; Emoji_Presentation # E3.0 [15] (🥐..🥞) croissant..pancakes
+1F95F..1F96B ; Emoji_Presentation # E5.0 [13] (🥟..🥫) dumpling..canned food
+1F96C..1F970 ; Emoji_Presentation # E11.0 [5] (🥬..🥰) leafy green..smiling face with hearts
+1F971 ; Emoji_Presentation # E12.0 [1] (🥱) yawning face
+1F972 ; Emoji_Presentation # E13.0 [1] (🥲) smiling face with tear
+1F973..1F976 ; Emoji_Presentation # E11.0 [4] (🥳..🥶) partying face..cold face
+1F977..1F978 ; Emoji_Presentation # E13.0 [2] (🥷..🥸) ninja..disguised face
+1F979 ; Emoji_Presentation # E14.0 [1] (🥹) face holding back tears
+1F97A ; Emoji_Presentation # E11.0 [1] (🥺) pleading face
+1F97B ; Emoji_Presentation # E12.0 [1] (🥻) sari
+1F97C..1F97F ; Emoji_Presentation # E11.0 [4] (🥼..🥿) lab coat..flat shoe
+1F980..1F984 ; Emoji_Presentation # E1.0 [5] (🦀..🦄) crab..unicorn
+1F985..1F991 ; Emoji_Presentation # E3.0 [13] (🦅..🦑) eagle..squid
+1F992..1F997 ; Emoji_Presentation # E5.0 [6] (🦒..🦗) giraffe..cricket
+1F998..1F9A2 ; Emoji_Presentation # E11.0 [11] (🦘..🦢) kangaroo..swan
+1F9A3..1F9A4 ; Emoji_Presentation # E13.0 [2] (🦣..🦤) mammoth..dodo
+1F9A5..1F9AA ; Emoji_Presentation # E12.0 [6] (🦥..🦪) sloth..oyster
+1F9AB..1F9AD ; Emoji_Presentation # E13.0 [3] (🦫..🦭) beaver..seal
+1F9AE..1F9AF ; Emoji_Presentation # E12.0 [2] (🦮..🦯) guide dog..white cane
+1F9B0..1F9B9 ; Emoji_Presentation # E11.0 [10] (🦰..🦹) red hair..supervillain
+1F9BA..1F9BF ; Emoji_Presentation # E12.0 [6] (🦺..🦿) safety vest..mechanical leg
+1F9C0 ; Emoji_Presentation # E1.0 [1] (🧀) cheese wedge
+1F9C1..1F9C2 ; Emoji_Presentation # E11.0 [2] (🧁..🧂) cupcake..salt
+1F9C3..1F9CA ; Emoji_Presentation # E12.0 [8] (🧃..🧊) beverage box..ice
+1F9CB ; Emoji_Presentation # E13.0 [1] (🧋) bubble tea
+1F9CC ; Emoji_Presentation # E14.0 [1] (🧌) troll
+1F9CD..1F9CF ; Emoji_Presentation # E12.0 [3] (🧍..🧏) person standing..deaf person
+1F9D0..1F9E6 ; Emoji_Presentation # E5.0 [23] (🧐..🧦) face with monocle..socks
+1F9E7..1F9FF ; Emoji_Presentation # E11.0 [25] (🧧..🧿) red envelope..nazar amulet
+1FA70..1FA73 ; Emoji_Presentation # E12.0 [4] (🩰..🩳) ballet shoes..shorts
+1FA74 ; Emoji_Presentation # E13.0 [1] (🩴) thong sandal
+1FA75..1FA77 ; Emoji_Presentation # E15.0 [3] (🩵..🩷) light blue heart..pink heart
+1FA78..1FA7A ; Emoji_Presentation # E12.0 [3] (🩸..🩺) drop of blood..stethoscope
+1FA7B..1FA7C ; Emoji_Presentation # E14.0 [2] (🩻..🩼) x-ray..crutch
+1FA80..1FA82 ; Emoji_Presentation # E12.0 [3] (🪀..🪂) yo-yo..parachute
+1FA83..1FA86 ; Emoji_Presentation # E13.0 [4] (🪃..🪆) boomerang..nesting dolls
+1FA87..1FA88 ; Emoji_Presentation # E15.0 [2] (🪇..🪈) maracas..flute
+1FA90..1FA95 ; Emoji_Presentation # E12.0 [6] (🪐..🪕) ringed planet..banjo
+1FA96..1FAA8 ; Emoji_Presentation # E13.0 [19] (🪖..🪨) military helmet..rock
+1FAA9..1FAAC ; Emoji_Presentation # E14.0 [4] (🪩..🪬) mirror ball..hamsa
+1FAAD..1FAAF ; Emoji_Presentation # E15.0 [3] (🪭..🪯) folding hand fan..khanda
+1FAB0..1FAB6 ; Emoji_Presentation # E13.0 [7] (🪰..🪶) fly..feather
+1FAB7..1FABA ; Emoji_Presentation # E14.0 [4] (🪷..🪺) lotus..nest with eggs
+1FABB..1FABD ; Emoji_Presentation # E15.0 [3] (🪻..🪽) hyacinth..wing
+1FABF ; Emoji_Presentation # E15.0 [1] (🪿) goose
+1FAC0..1FAC2 ; Emoji_Presentation # E13.0 [3] (🫀..🫂) anatomical heart..people hugging
+1FAC3..1FAC5 ; Emoji_Presentation # E14.0 [3] (🫃..🫅) pregnant man..person with crown
+1FACE..1FACF ; Emoji_Presentation # E15.0 [2] (🫎..🫏) moose..donkey
+1FAD0..1FAD6 ; Emoji_Presentation # E13.0 [7] (🫐..🫖) blueberries..teapot
+1FAD7..1FAD9 ; Emoji_Presentation # E14.0 [3] (🫗..🫙) pouring liquid..jar
+1FADA..1FADB ; Emoji_Presentation # E15.0 [2] (🫚..🫛) ginger root..pea pod
+1FAE0..1FAE7 ; Emoji_Presentation # E14.0 [8] (🫠..🫧) melting face..bubbles
+1FAE8 ; Emoji_Presentation # E15.0 [1] (🫨) shaking face
+1FAF0..1FAF6 ; Emoji_Presentation # E14.0 [7] (🫰..🫶) hand with index finger and thumb crossed..heart hands
+1FAF7..1FAF8 ; Emoji_Presentation # E15.0 [2] (🫷..🫸) leftwards pushing hand..rightwards pushing hand
+
+# Total elements: 1205
+
+# ================================================
+
+# All omitted code points have Emoji_Modifier=No
+
+1F3FB..1F3FF ; Emoji_Modifier # E1.0 [5] (🏻..🏿) light skin tone..dark skin tone
+
+# Total elements: 5
+
+# ================================================
+
+# All omitted code points have Emoji_Modifier_Base=No
+
+261D ; Emoji_Modifier_Base # E0.6 [1] (☝️) index pointing up
+26F9 ; Emoji_Modifier_Base # E0.7 [1] (⛹️) person bouncing ball
+270A..270C ; Emoji_Modifier_Base # E0.6 [3] (✊..✌️) raised fist..victory hand
+270D ; Emoji_Modifier_Base # E0.7 [1] (✍️) writing hand
+1F385 ; Emoji_Modifier_Base # E0.6 [1] (🎅) Santa Claus
+1F3C2..1F3C4 ; Emoji_Modifier_Base # E0.6 [3] (🏂..🏄) snowboarder..person surfing
+1F3C7 ; Emoji_Modifier_Base # E1.0 [1] (🏇) horse racing
+1F3CA ; Emoji_Modifier_Base # E0.6 [1] (🏊) person swimming
+1F3CB..1F3CC ; Emoji_Modifier_Base # E0.7 [2] (🏋️..🏌️) person lifting weights..person golfing
+1F442..1F443 ; Emoji_Modifier_Base # E0.6 [2] (👂..👃) ear..nose
+1F446..1F450 ; Emoji_Modifier_Base # E0.6 [11] (👆..👐) backhand index pointing up..open hands
+1F466..1F46B ; Emoji_Modifier_Base # E0.6 [6] (👦..👫) boy..woman and man holding hands
+1F46C..1F46D ; Emoji_Modifier_Base # E1.0 [2] (👬..👭) men holding hands..women holding hands
+1F46E..1F478 ; Emoji_Modifier_Base # E0.6 [11] (👮..👸) police officer..princess
+1F47C ; Emoji_Modifier_Base # E0.6 [1] (👼) baby angel
+1F481..1F483 ; Emoji_Modifier_Base # E0.6 [3] (💁..💃) person tipping hand..woman dancing
+1F485..1F487 ; Emoji_Modifier_Base # E0.6 [3] (💅..💇) nail polish..person getting haircut
+1F48F ; Emoji_Modifier_Base # E0.6 [1] (💏) kiss
+1F491 ; Emoji_Modifier_Base # E0.6 [1] (💑) couple with heart
+1F4AA ; Emoji_Modifier_Base # E0.6 [1] (💪) flexed biceps
+1F574..1F575 ; Emoji_Modifier_Base # E0.7 [2] (🕴️..🕵️) person in suit levitating..detective
+1F57A ; Emoji_Modifier_Base # E3.0 [1] (🕺) man dancing
+1F590 ; Emoji_Modifier_Base # E0.7 [1] (🖐️) hand with fingers splayed
+1F595..1F596 ; Emoji_Modifier_Base # E1.0 [2] (🖕..🖖) middle finger..vulcan salute
+1F645..1F647 ; Emoji_Modifier_Base # E0.6 [3] (🙅..🙇) person gesturing NO..person bowing
+1F64B..1F64F ; Emoji_Modifier_Base # E0.6 [5] (🙋..🙏) person raising hand..folded hands
+1F6A3 ; Emoji_Modifier_Base # E1.0 [1] (🚣) person rowing boat
+1F6B4..1F6B5 ; Emoji_Modifier_Base # E1.0 [2] (🚴..🚵) person biking..person mountain biking
+1F6B6 ; Emoji_Modifier_Base # E0.6 [1] (🚶) person walking
+1F6C0 ; Emoji_Modifier_Base # E0.6 [1] (🛀) person taking bath
+1F6CC ; Emoji_Modifier_Base # E1.0 [1] (🛌) person in bed
+1F90C ; Emoji_Modifier_Base # E13.0 [1] (🤌) pinched fingers
+1F90F ; Emoji_Modifier_Base # E12.0 [1] (🤏) pinching hand
+1F918 ; Emoji_Modifier_Base # E1.0 [1] (🤘) sign of the horns
+1F919..1F91E ; Emoji_Modifier_Base # E3.0 [6] (🤙..🤞) call me hand..crossed fingers
+1F91F ; Emoji_Modifier_Base # E5.0 [1] (🤟) love-you gesture
+1F926 ; Emoji_Modifier_Base # E3.0 [1] (🤦) person facepalming
+1F930 ; Emoji_Modifier_Base # E3.0 [1] (🤰) pregnant woman
+1F931..1F932 ; Emoji_Modifier_Base # E5.0 [2] (🤱..🤲) breast-feeding..palms up together
+1F933..1F939 ; Emoji_Modifier_Base # E3.0 [7] (🤳..🤹) selfie..person juggling
+1F93C..1F93E ; Emoji_Modifier_Base # E3.0 [3] (🤼..🤾) people wrestling..person playing handball
+1F977 ; Emoji_Modifier_Base # E13.0 [1] (🥷) ninja
+1F9B5..1F9B6 ; Emoji_Modifier_Base # E11.0 [2] (🦵..🦶) leg..foot
+1F9B8..1F9B9 ; Emoji_Modifier_Base # E11.0 [2] (🦸..🦹) superhero..supervillain
+1F9BB ; Emoji_Modifier_Base # E12.0 [1] (🦻) ear with hearing aid
+1F9CD..1F9CF ; Emoji_Modifier_Base # E12.0 [3] (🧍..🧏) person standing..deaf person
+1F9D1..1F9DD ; Emoji_Modifier_Base # E5.0 [13] (🧑..🧝) person..elf
+1FAC3..1FAC5 ; Emoji_Modifier_Base # E14.0 [3] (🫃..🫅) pregnant man..person with crown
+1FAF0..1FAF6 ; Emoji_Modifier_Base # E14.0 [7] (🫰..🫶) hand with index finger and thumb crossed..heart hands
+1FAF7..1FAF8 ; Emoji_Modifier_Base # E15.0 [2] (🫷..🫸) leftwards pushing hand..rightwards pushing hand
+
+# Total elements: 134
+
+# ================================================
+
+# All omitted code points have Emoji_Component=No
+
+0023 ; Emoji_Component # E0.0 [1] (#️) hash sign
+002A ; Emoji_Component # E0.0 [1] (*️) asterisk
+0030..0039 ; Emoji_Component # E0.0 [10] (0️..9️) digit zero..digit nine
+200D ; Emoji_Component # E0.0 [1] (‍) zero width joiner
+20E3 ; Emoji_Component # E0.0 [1] (⃣) combining enclosing keycap
+FE0F ; Emoji_Component # E0.0 [1] () VARIATION SELECTOR-16
+1F1E6..1F1FF ; Emoji_Component # E0.0 [26] (🇦..🇿) regional indicator symbol letter a..regional indicator symbol letter z
+1F3FB..1F3FF ; Emoji_Component # E1.0 [5] (🏻..🏿) light skin tone..dark skin tone
+1F9B0..1F9B3 ; Emoji_Component # E11.0 [4] (🦰..🦳) red hair..white hair
+E0020..E007F ; Emoji_Component # E0.0 [96] (󠀠..󠁿) tag space..cancel tag
+
+# Total elements: 146
+
+# ================================================
+
+# All omitted code points have Extended_Pictographic=No
+
+00A9 ; Extended_Pictographic# E0.6 [1] (©️) copyright
+00AE ; Extended_Pictographic# E0.6 [1] (®️) registered
+203C ; Extended_Pictographic# E0.6 [1] (‼️) double exclamation mark
+2049 ; Extended_Pictographic# E0.6 [1] (⁉️) exclamation question mark
+2122 ; Extended_Pictographic# E0.6 [1] (™️) trade mark
+2139 ; Extended_Pictographic# E0.6 [1] (ℹ️) information
+2194..2199 ; Extended_Pictographic# E0.6 [6] (↔️..↙️) left-right arrow..down-left arrow
+21A9..21AA ; Extended_Pictographic# E0.6 [2] (↩️..↪️) right arrow curving left..left arrow curving right
+231A..231B ; Extended_Pictographic# E0.6 [2] (⌚..⌛) watch..hourglass done
+2328 ; Extended_Pictographic# E1.0 [1] (⌨️) keyboard
+2388 ; Extended_Pictographic# E0.0 [1] (⎈) HELM SYMBOL
+23CF ; Extended_Pictographic# E1.0 [1] (⏏️) eject button
+23E9..23EC ; Extended_Pictographic# E0.6 [4] (⏩..⏬) fast-forward button..fast down button
+23ED..23EE ; Extended_Pictographic# E0.7 [2] (⏭️..⏮️) next track button..last track button
+23EF ; Extended_Pictographic# E1.0 [1] (⏯️) play or pause button
+23F0 ; Extended_Pictographic# E0.6 [1] (⏰) alarm clock
+23F1..23F2 ; Extended_Pictographic# E1.0 [2] (⏱️..⏲️) stopwatch..timer clock
+23F3 ; Extended_Pictographic# E0.6 [1] (⏳) hourglass not done
+23F8..23FA ; Extended_Pictographic# E0.7 [3] (⏸️..⏺️) pause button..record button
+24C2 ; Extended_Pictographic# E0.6 [1] (Ⓜ️) circled M
+25AA..25AB ; Extended_Pictographic# E0.6 [2] (▪️..▫️) black small square..white small square
+25B6 ; Extended_Pictographic# E0.6 [1] (▶️) play button
+25C0 ; Extended_Pictographic# E0.6 [1] (◀️) reverse button
+25FB..25FE ; Extended_Pictographic# E0.6 [4] (◻️..◾) white medium square..black medium-small square
+2600..2601 ; Extended_Pictographic# E0.6 [2] (☀️..☁️) sun..cloud
+2602..2603 ; Extended_Pictographic# E0.7 [2] (☂️..☃️) umbrella..snowman
+2604 ; Extended_Pictographic# E1.0 [1] (☄️) comet
+2605 ; Extended_Pictographic# E0.0 [1] (★) BLACK STAR
+2607..260D ; Extended_Pictographic# E0.0 [7] (☇..☍) LIGHTNING..OPPOSITION
+260E ; Extended_Pictographic# E0.6 [1] (☎️) telephone
+260F..2610 ; Extended_Pictographic# E0.0 [2] (☏..☐) WHITE TELEPHONE..BALLOT BOX
+2611 ; Extended_Pictographic# E0.6 [1] (☑️) check box with check
+2612 ; Extended_Pictographic# E0.0 [1] (☒) BALLOT BOX WITH X
+2614..2615 ; Extended_Pictographic# E0.6 [2] (☔..☕) umbrella with rain drops..hot beverage
+2616..2617 ; Extended_Pictographic# E0.0 [2] (☖..☗) WHITE SHOGI PIECE..BLACK SHOGI PIECE
+2618 ; Extended_Pictographic# E1.0 [1] (☘️) shamrock
+2619..261C ; Extended_Pictographic# E0.0 [4] (☙..☜) REVERSED ROTATED FLORAL HEART BULLET..WHITE LEFT POINTING INDEX
+261D ; Extended_Pictographic# E0.6 [1] (☝️) index pointing up
+261E..261F ; Extended_Pictographic# E0.0 [2] (☞..☟) WHITE RIGHT POINTING INDEX..WHITE DOWN POINTING INDEX
+2620 ; Extended_Pictographic# E1.0 [1] (☠️) skull and crossbones
+2621 ; Extended_Pictographic# E0.0 [1] (☡) CAUTION SIGN
+2622..2623 ; Extended_Pictographic# E1.0 [2] (☢️..☣️) radioactive..biohazard
+2624..2625 ; Extended_Pictographic# E0.0 [2] (☤..☥) CADUCEUS..ANKH
+2626 ; Extended_Pictographic# E1.0 [1] (☦️) orthodox cross
+2627..2629 ; Extended_Pictographic# E0.0 [3] (☧..☩) CHI RHO..CROSS OF JERUSALEM
+262A ; Extended_Pictographic# E0.7 [1] (☪️) star and crescent
+262B..262D ; Extended_Pictographic# E0.0 [3] (☫..☭) FARSI SYMBOL..HAMMER AND SICKLE
+262E ; Extended_Pictographic# E1.0 [1] (☮️) peace symbol
+262F ; Extended_Pictographic# E0.7 [1] (☯️) yin yang
+2630..2637 ; Extended_Pictographic# E0.0 [8] (☰..☷) TRIGRAM FOR HEAVEN..TRIGRAM FOR EARTH
+2638..2639 ; Extended_Pictographic# E0.7 [2] (☸️..☹️) wheel of dharma..frowning face
+263A ; Extended_Pictographic# E0.6 [1] (☺️) smiling face
+263B..263F ; Extended_Pictographic# E0.0 [5] (☻..☿) BLACK SMILING FACE..MERCURY
+2640 ; Extended_Pictographic# E4.0 [1] (♀️) female sign
+2641 ; Extended_Pictographic# E0.0 [1] (♁) EARTH
+2642 ; Extended_Pictographic# E4.0 [1] (♂️) male sign
+2643..2647 ; Extended_Pictographic# E0.0 [5] (♃..♇) JUPITER..PLUTO
+2648..2653 ; Extended_Pictographic# E0.6 [12] (♈..♓) Aries..Pisces
+2654..265E ; Extended_Pictographic# E0.0 [11] (♔..♞) WHITE CHESS KING..BLACK CHESS KNIGHT
+265F ; Extended_Pictographic# E11.0 [1] (♟️) chess pawn
+2660 ; Extended_Pictographic# E0.6 [1] (♠️) spade suit
+2661..2662 ; Extended_Pictographic# E0.0 [2] (♡..♢) WHITE HEART SUIT..WHITE DIAMOND SUIT
+2663 ; Extended_Pictographic# E0.6 [1] (♣️) club suit
+2664 ; Extended_Pictographic# E0.0 [1] (♤) WHITE SPADE SUIT
+2665..2666 ; Extended_Pictographic# E0.6 [2] (♥️..♦️) heart suit..diamond suit
+2667 ; Extended_Pictographic# E0.0 [1] (♧) WHITE CLUB SUIT
+2668 ; Extended_Pictographic# E0.6 [1] (♨️) hot springs
+2669..267A ; Extended_Pictographic# E0.0 [18] (♩..♺) QUARTER NOTE..RECYCLING SYMBOL FOR GENERIC MATERIALS
+267B ; Extended_Pictographic# E0.6 [1] (♻️) recycling symbol
+267C..267D ; Extended_Pictographic# E0.0 [2] (♼..♽) RECYCLED PAPER SYMBOL..PARTIALLY-RECYCLED PAPER SYMBOL
+267E ; Extended_Pictographic# E11.0 [1] (♾️) infinity
+267F ; Extended_Pictographic# E0.6 [1] (♿) wheelchair symbol
+2680..2685 ; Extended_Pictographic# E0.0 [6] (⚀..⚅) DIE FACE-1..DIE FACE-6
+2690..2691 ; Extended_Pictographic# E0.0 [2] (⚐..⚑) WHITE FLAG..BLACK FLAG
+2692 ; Extended_Pictographic# E1.0 [1] (⚒️) hammer and pick
+2693 ; Extended_Pictographic# E0.6 [1] (⚓) anchor
+2694 ; Extended_Pictographic# E1.0 [1] (⚔️) crossed swords
+2695 ; Extended_Pictographic# E4.0 [1] (⚕️) medical symbol
+2696..2697 ; Extended_Pictographic# E1.0 [2] (⚖️..⚗️) balance scale..alembic
+2698 ; Extended_Pictographic# E0.0 [1] (⚘) FLOWER
+2699 ; Extended_Pictographic# E1.0 [1] (⚙️) gear
+269A ; Extended_Pictographic# E0.0 [1] (⚚) STAFF OF HERMES
+269B..269C ; Extended_Pictographic# E1.0 [2] (⚛️..⚜️) atom symbol..fleur-de-lis
+269D..269F ; Extended_Pictographic# E0.0 [3] (⚝..⚟) OUTLINED WHITE STAR..THREE LINES CONVERGING LEFT
+26A0..26A1 ; Extended_Pictographic# E0.6 [2] (⚠️..⚡) warning..high voltage
+26A2..26A6 ; Extended_Pictographic# E0.0 [5] (⚢..⚦) DOUBLED FEMALE SIGN..MALE WITH STROKE SIGN
+26A7 ; Extended_Pictographic# E13.0 [1] (⚧️) transgender symbol
+26A8..26A9 ; Extended_Pictographic# E0.0 [2] (⚨..⚩) VERTICAL MALE WITH STROKE SIGN..HORIZONTAL MALE WITH STROKE SIGN
+26AA..26AB ; Extended_Pictographic# E0.6 [2] (⚪..⚫) white circle..black circle
+26AC..26AF ; Extended_Pictographic# E0.0 [4] (⚬..⚯) MEDIUM SMALL WHITE CIRCLE..UNMARRIED PARTNERSHIP SYMBOL
+26B0..26B1 ; Extended_Pictographic# E1.0 [2] (⚰️..⚱️) coffin..funeral urn
+26B2..26BC ; Extended_Pictographic# E0.0 [11] (⚲..⚼) NEUTER..SESQUIQUADRATE
+26BD..26BE ; Extended_Pictographic# E0.6 [2] (⚽..⚾) soccer ball..baseball
+26BF..26C3 ; Extended_Pictographic# E0.0 [5] (⚿..⛃) SQUARED KEY..BLACK DRAUGHTS KING
+26C4..26C5 ; Extended_Pictographic# E0.6 [2] (⛄..⛅) snowman without snow..sun behind cloud
+26C6..26C7 ; Extended_Pictographic# E0.0 [2] (⛆..⛇) RAIN..BLACK SNOWMAN
+26C8 ; Extended_Pictographic# E0.7 [1] (⛈️) cloud with lightning and rain
+26C9..26CD ; Extended_Pictographic# E0.0 [5] (⛉..⛍) TURNED WHITE SHOGI PIECE..DISABLED CAR
+26CE ; Extended_Pictographic# E0.6 [1] (⛎) Ophiuchus
+26CF ; Extended_Pictographic# E0.7 [1] (⛏️) pick
+26D0 ; Extended_Pictographic# E0.0 [1] (⛐) CAR SLIDING
+26D1 ; Extended_Pictographic# E0.7 [1] (⛑️) rescue worker’s helmet
+26D2 ; Extended_Pictographic# E0.0 [1] (⛒) CIRCLED CROSSING LANES
+26D3 ; Extended_Pictographic# E0.7 [1] (⛓️) chains
+26D4 ; Extended_Pictographic# E0.6 [1] (⛔) no entry
+26D5..26E8 ; Extended_Pictographic# E0.0 [20] (⛕..⛨) ALTERNATE ONE-WAY LEFT WAY TRAFFIC..BLACK CROSS ON SHIELD
+26E9 ; Extended_Pictographic# E0.7 [1] (⛩️) shinto shrine
+26EA ; Extended_Pictographic# E0.6 [1] (⛪) church
+26EB..26EF ; Extended_Pictographic# E0.0 [5] (⛫..⛯) CASTLE..MAP SYMBOL FOR LIGHTHOUSE
+26F0..26F1 ; Extended_Pictographic# E0.7 [2] (⛰️..⛱️) mountain..umbrella on ground
+26F2..26F3 ; Extended_Pictographic# E0.6 [2] (⛲..⛳) fountain..flag in hole
+26F4 ; Extended_Pictographic# E0.7 [1] (⛴️) ferry
+26F5 ; Extended_Pictographic# E0.6 [1] (⛵) sailboat
+26F6 ; Extended_Pictographic# E0.0 [1] (⛶) SQUARE FOUR CORNERS
+26F7..26F9 ; Extended_Pictographic# E0.7 [3] (⛷️..⛹️) skier..person bouncing ball
+26FA ; Extended_Pictographic# E0.6 [1] (⛺) tent
+26FB..26FC ; Extended_Pictographic# E0.0 [2] (⛻..⛼) JAPANESE BANK SYMBOL..HEADSTONE GRAVEYARD SYMBOL
+26FD ; Extended_Pictographic# E0.6 [1] (⛽) fuel pump
+26FE..2701 ; Extended_Pictographic# E0.0 [4] (⛾..✁) CUP ON BLACK SQUARE..UPPER BLADE SCISSORS
+2702 ; Extended_Pictographic# E0.6 [1] (✂️) scissors
+2703..2704 ; Extended_Pictographic# E0.0 [2] (✃..✄) LOWER BLADE SCISSORS..WHITE SCISSORS
+2705 ; Extended_Pictographic# E0.6 [1] (✅) check mark button
+2708..270C ; Extended_Pictographic# E0.6 [5] (✈️..✌️) airplane..victory hand
+270D ; Extended_Pictographic# E0.7 [1] (✍️) writing hand
+270E ; Extended_Pictographic# E0.0 [1] (✎) LOWER RIGHT PENCIL
+270F ; Extended_Pictographic# E0.6 [1] (✏️) pencil
+2710..2711 ; Extended_Pictographic# E0.0 [2] (✐..✑) UPPER RIGHT PENCIL..WHITE NIB
+2712 ; Extended_Pictographic# E0.6 [1] (✒️) black nib
+2714 ; Extended_Pictographic# E0.6 [1] (✔️) check mark
+2716 ; Extended_Pictographic# E0.6 [1] (✖️) multiply
+271D ; Extended_Pictographic# E0.7 [1] (✝️) latin cross
+2721 ; Extended_Pictographic# E0.7 [1] (✡️) star of David
+2728 ; Extended_Pictographic# E0.6 [1] (✨) sparkles
+2733..2734 ; Extended_Pictographic# E0.6 [2] (✳️..✴️) eight-spoked asterisk..eight-pointed star
+2744 ; Extended_Pictographic# E0.6 [1] (❄️) snowflake
+2747 ; Extended_Pictographic# E0.6 [1] (❇️) sparkle
+274C ; Extended_Pictographic# E0.6 [1] (❌) cross mark
+274E ; Extended_Pictographic# E0.6 [1] (❎) cross mark button
+2753..2755 ; Extended_Pictographic# E0.6 [3] (❓..❕) red question mark..white exclamation mark
+2757 ; Extended_Pictographic# E0.6 [1] (❗) red exclamation mark
+2763 ; Extended_Pictographic# E1.0 [1] (❣️) heart exclamation
+2764 ; Extended_Pictographic# E0.6 [1] (❤️) red heart
+2765..2767 ; Extended_Pictographic# E0.0 [3] (❥..❧) ROTATED HEAVY BLACK HEART BULLET..ROTATED FLORAL HEART BULLET
+2795..2797 ; Extended_Pictographic# E0.6 [3] (➕..➗) plus..divide
+27A1 ; Extended_Pictographic# E0.6 [1] (➡️) right arrow
+27B0 ; Extended_Pictographic# E0.6 [1] (➰) curly loop
+27BF ; Extended_Pictographic# E1.0 [1] (➿) double curly loop
+2934..2935 ; Extended_Pictographic# E0.6 [2] (⤴️..⤵️) right arrow curving up..right arrow curving down
+2B05..2B07 ; Extended_Pictographic# E0.6 [3] (⬅️..⬇️) left arrow..down arrow
+2B1B..2B1C ; Extended_Pictographic# E0.6 [2] (⬛..⬜) black large square..white large square
+2B50 ; Extended_Pictographic# E0.6 [1] (⭐) star
+2B55 ; Extended_Pictographic# E0.6 [1] (⭕) hollow red circle
+3030 ; Extended_Pictographic# E0.6 [1] (〰️) wavy dash
+303D ; Extended_Pictographic# E0.6 [1] (〽️) part alternation mark
+3297 ; Extended_Pictographic# E0.6 [1] (㊗️) Japanese “congratulations” button
+3299 ; Extended_Pictographic# E0.6 [1] (㊙️) Japanese “secret” button
+1F000..1F003 ; Extended_Pictographic# E0.0 [4] (🀀..🀃) MAHJONG TILE EAST WIND..MAHJONG TILE NORTH WIND
+1F004 ; Extended_Pictographic# E0.6 [1] (🀄) mahjong red dragon
+1F005..1F0CE ; Extended_Pictographic# E0.0 [202] (🀅..🃎) MAHJONG TILE GREEN DRAGON..PLAYING CARD KING OF DIAMONDS
+1F0CF ; Extended_Pictographic# E0.6 [1] (🃏) joker
+1F0D0..1F0FF ; Extended_Pictographic# E0.0 [48] (🃐..🃿) <reserved-1F0D0>..<reserved-1F0FF>
+1F10D..1F10F ; Extended_Pictographic# E0.0 [3] (🄍..🄏) CIRCLED ZERO WITH SLASH..CIRCLED DOLLAR SIGN WITH OVERLAID BACKSLASH
+1F12F ; Extended_Pictographic# E0.0 [1] (🄯) COPYLEFT SYMBOL
+1F16C..1F16F ; Extended_Pictographic# E0.0 [4] (🅬..🅯) RAISED MR SIGN..CIRCLED HUMAN FIGURE
+1F170..1F171 ; Extended_Pictographic# E0.6 [2] (🅰️..🅱️) A button (blood type)..B button (blood type)
+1F17E..1F17F ; Extended_Pictographic# E0.6 [2] (🅾️..🅿️) O button (blood type)..P button
+1F18E ; Extended_Pictographic# E0.6 [1] (🆎) AB button (blood type)
+1F191..1F19A ; Extended_Pictographic# E0.6 [10] (🆑..🆚) CL button..VS button
+1F1AD..1F1E5 ; Extended_Pictographic# E0.0 [57] (🆭..🇥) MASK WORK SYMBOL..<reserved-1F1E5>
+1F201..1F202 ; Extended_Pictographic# E0.6 [2] (🈁..🈂️) Japanese “here” button..Japanese “service charge” button
+1F203..1F20F ; Extended_Pictographic# E0.0 [13] (🈃..🈏) <reserved-1F203>..<reserved-1F20F>
+1F21A ; Extended_Pictographic# E0.6 [1] (🈚) Japanese “free of charge” button
+1F22F ; Extended_Pictographic# E0.6 [1] (🈯) Japanese “reserved” button
+1F232..1F23A ; Extended_Pictographic# E0.6 [9] (🈲..🈺) Japanese “prohibited” button..Japanese “open for business” button
+1F23C..1F23F ; Extended_Pictographic# E0.0 [4] (🈼..🈿) <reserved-1F23C>..<reserved-1F23F>
+1F249..1F24F ; Extended_Pictographic# E0.0 [7] (🉉..🉏) <reserved-1F249>..<reserved-1F24F>
+1F250..1F251 ; Extended_Pictographic# E0.6 [2] (🉐..🉑) Japanese “bargain” button..Japanese “acceptable” button
+1F252..1F2FF ; Extended_Pictographic# E0.0 [174] (🉒..🋿) <reserved-1F252>..<reserved-1F2FF>
+1F300..1F30C ; Extended_Pictographic# E0.6 [13] (🌀..🌌) cyclone..milky way
+1F30D..1F30E ; Extended_Pictographic# E0.7 [2] (🌍..🌎) globe showing Europe-Africa..globe showing Americas
+1F30F ; Extended_Pictographic# E0.6 [1] (🌏) globe showing Asia-Australia
+1F310 ; Extended_Pictographic# E1.0 [1] (🌐) globe with meridians
+1F311 ; Extended_Pictographic# E0.6 [1] (🌑) new moon
+1F312 ; Extended_Pictographic# E1.0 [1] (🌒) waxing crescent moon
+1F313..1F315 ; Extended_Pictographic# E0.6 [3] (🌓..🌕) first quarter moon..full moon
+1F316..1F318 ; Extended_Pictographic# E1.0 [3] (🌖..🌘) waning gibbous moon..waning crescent moon
+1F319 ; Extended_Pictographic# E0.6 [1] (🌙) crescent moon
+1F31A ; Extended_Pictographic# E1.0 [1] (🌚) new moon face
+1F31B ; Extended_Pictographic# E0.6 [1] (🌛) first quarter moon face
+1F31C ; Extended_Pictographic# E0.7 [1] (🌜) last quarter moon face
+1F31D..1F31E ; Extended_Pictographic# E1.0 [2] (🌝..🌞) full moon face..sun with face
+1F31F..1F320 ; Extended_Pictographic# E0.6 [2] (🌟..🌠) glowing star..shooting star
+1F321 ; Extended_Pictographic# E0.7 [1] (🌡️) thermometer
+1F322..1F323 ; Extended_Pictographic# E0.0 [2] (🌢..🌣) BLACK DROPLET..WHITE SUN
+1F324..1F32C ; Extended_Pictographic# E0.7 [9] (🌤️..🌬️) sun behind small cloud..wind face
+1F32D..1F32F ; Extended_Pictographic# E1.0 [3] (🌭..🌯) hot dog..burrito
+1F330..1F331 ; Extended_Pictographic# E0.6 [2] (🌰..🌱) chestnut..seedling
+1F332..1F333 ; Extended_Pictographic# E1.0 [2] (🌲..🌳) evergreen tree..deciduous tree
+1F334..1F335 ; Extended_Pictographic# E0.6 [2] (🌴..🌵) palm tree..cactus
+1F336 ; Extended_Pictographic# E0.7 [1] (🌶️) hot pepper
+1F337..1F34A ; Extended_Pictographic# E0.6 [20] (🌷..🍊) tulip..tangerine
+1F34B ; Extended_Pictographic# E1.0 [1] (🍋) lemon
+1F34C..1F34F ; Extended_Pictographic# E0.6 [4] (🍌..🍏) banana..green apple
+1F350 ; Extended_Pictographic# E1.0 [1] (🍐) pear
+1F351..1F37B ; Extended_Pictographic# E0.6 [43] (🍑..🍻) peach..clinking beer mugs
+1F37C ; Extended_Pictographic# E1.0 [1] (🍼) baby bottle
+1F37D ; Extended_Pictographic# E0.7 [1] (🍽️) fork and knife with plate
+1F37E..1F37F ; Extended_Pictographic# E1.0 [2] (🍾..🍿) bottle with popping cork..popcorn
+1F380..1F393 ; Extended_Pictographic# E0.6 [20] (🎀..🎓) ribbon..graduation cap
+1F394..1F395 ; Extended_Pictographic# E0.0 [2] (🎔..🎕) HEART WITH TIP ON THE LEFT..BOUQUET OF FLOWERS
+1F396..1F397 ; Extended_Pictographic# E0.7 [2] (🎖️..🎗️) military medal..reminder ribbon
+1F398 ; Extended_Pictographic# E0.0 [1] (🎘) MUSICAL KEYBOARD WITH JACKS
+1F399..1F39B ; Extended_Pictographic# E0.7 [3] (🎙️..🎛️) studio microphone..control knobs
+1F39C..1F39D ; Extended_Pictographic# E0.0 [2] (🎜..🎝) BEAMED ASCENDING MUSICAL NOTES..BEAMED DESCENDING MUSICAL NOTES
+1F39E..1F39F ; Extended_Pictographic# E0.7 [2] (🎞️..🎟️) film frames..admission tickets
+1F3A0..1F3C4 ; Extended_Pictographic# E0.6 [37] (🎠..🏄) carousel horse..person surfing
+1F3C5 ; Extended_Pictographic# E1.0 [1] (🏅) sports medal
+1F3C6 ; Extended_Pictographic# E0.6 [1] (🏆) trophy
+1F3C7 ; Extended_Pictographic# E1.0 [1] (🏇) horse racing
+1F3C8 ; Extended_Pictographic# E0.6 [1] (🏈) american football
+1F3C9 ; Extended_Pictographic# E1.0 [1] (🏉) rugby football
+1F3CA ; Extended_Pictographic# E0.6 [1] (🏊) person swimming
+1F3CB..1F3CE ; Extended_Pictographic# E0.7 [4] (🏋️..🏎️) person lifting weights..racing car
+1F3CF..1F3D3 ; Extended_Pictographic# E1.0 [5] (🏏..🏓) cricket game..ping pong
+1F3D4..1F3DF ; Extended_Pictographic# E0.7 [12] (🏔️..🏟️) snow-capped mountain..stadium
+1F3E0..1F3E3 ; Extended_Pictographic# E0.6 [4] (🏠..🏣) house..Japanese post office
+1F3E4 ; Extended_Pictographic# E1.0 [1] (🏤) post office
+1F3E5..1F3F0 ; Extended_Pictographic# E0.6 [12] (🏥..🏰) hospital..castle
+1F3F1..1F3F2 ; Extended_Pictographic# E0.0 [2] (🏱..🏲) WHITE PENNANT..BLACK PENNANT
+1F3F3 ; Extended_Pictographic# E0.7 [1] (🏳️) white flag
+1F3F4 ; Extended_Pictographic# E1.0 [1] (🏴) black flag
+1F3F5 ; Extended_Pictographic# E0.7 [1] (🏵️) rosette
+1F3F6 ; Extended_Pictographic# E0.0 [1] (🏶) BLACK ROSETTE
+1F3F7 ; Extended_Pictographic# E0.7 [1] (🏷️) label
+1F3F8..1F3FA ; Extended_Pictographic# E1.0 [3] (🏸..🏺) badminton..amphora
+1F400..1F407 ; Extended_Pictographic# E1.0 [8] (🐀..🐇) rat..rabbit
+1F408 ; Extended_Pictographic# E0.7 [1] (🐈) cat
+1F409..1F40B ; Extended_Pictographic# E1.0 [3] (🐉..🐋) dragon..whale
+1F40C..1F40E ; Extended_Pictographic# E0.6 [3] (🐌..🐎) snail..horse
+1F40F..1F410 ; Extended_Pictographic# E1.0 [2] (🐏..🐐) ram..goat
+1F411..1F412 ; Extended_Pictographic# E0.6 [2] (🐑..🐒) ewe..monkey
+1F413 ; Extended_Pictographic# E1.0 [1] (🐓) rooster
+1F414 ; Extended_Pictographic# E0.6 [1] (🐔) chicken
+1F415 ; Extended_Pictographic# E0.7 [1] (🐕) dog
+1F416 ; Extended_Pictographic# E1.0 [1] (🐖) pig
+1F417..1F429 ; Extended_Pictographic# E0.6 [19] (🐗..🐩) boar..poodle
+1F42A ; Extended_Pictographic# E1.0 [1] (🐪) camel
+1F42B..1F43E ; Extended_Pictographic# E0.6 [20] (🐫..🐾) two-hump camel..paw prints
+1F43F ; Extended_Pictographic# E0.7 [1] (🐿️) chipmunk
+1F440 ; Extended_Pictographic# E0.6 [1] (👀) eyes
+1F441 ; Extended_Pictographic# E0.7 [1] (👁️) eye
+1F442..1F464 ; Extended_Pictographic# E0.6 [35] (👂..👤) ear..bust in silhouette
+1F465 ; Extended_Pictographic# E1.0 [1] (👥) busts in silhouette
+1F466..1F46B ; Extended_Pictographic# E0.6 [6] (👦..👫) boy..woman and man holding hands
+1F46C..1F46D ; Extended_Pictographic# E1.0 [2] (👬..👭) men holding hands..women holding hands
+1F46E..1F4AC ; Extended_Pictographic# E0.6 [63] (👮..💬) police officer..speech balloon
+1F4AD ; Extended_Pictographic# E1.0 [1] (💭) thought balloon
+1F4AE..1F4B5 ; Extended_Pictographic# E0.6 [8] (💮..💵) white flower..dollar banknote
+1F4B6..1F4B7 ; Extended_Pictographic# E1.0 [2] (💶..💷) euro banknote..pound banknote
+1F4B8..1F4EB ; Extended_Pictographic# E0.6 [52] (💸..📫) money with wings..closed mailbox with raised flag
+1F4EC..1F4ED ; Extended_Pictographic# E0.7 [2] (📬..📭) open mailbox with raised flag..open mailbox with lowered flag
+1F4EE ; Extended_Pictographic# E0.6 [1] (📮) postbox
+1F4EF ; Extended_Pictographic# E1.0 [1] (📯) postal horn
+1F4F0..1F4F4 ; Extended_Pictographic# E0.6 [5] (📰..📴) newspaper..mobile phone off
+1F4F5 ; Extended_Pictographic# E1.0 [1] (📵) no mobile phones
+1F4F6..1F4F7 ; Extended_Pictographic# E0.6 [2] (📶..📷) antenna bars..camera
+1F4F8 ; Extended_Pictographic# E1.0 [1] (📸) camera with flash
+1F4F9..1F4FC ; Extended_Pictographic# E0.6 [4] (📹..📼) video camera..videocassette
+1F4FD ; Extended_Pictographic# E0.7 [1] (📽️) film projector
+1F4FE ; Extended_Pictographic# E0.0 [1] (📾) PORTABLE STEREO
+1F4FF..1F502 ; Extended_Pictographic# E1.0 [4] (📿..🔂) prayer beads..repeat single button
+1F503 ; Extended_Pictographic# E0.6 [1] (🔃) clockwise vertical arrows
+1F504..1F507 ; Extended_Pictographic# E1.0 [4] (🔄..🔇) counterclockwise arrows button..muted speaker
+1F508 ; Extended_Pictographic# E0.7 [1] (🔈) speaker low volume
+1F509 ; Extended_Pictographic# E1.0 [1] (🔉) speaker medium volume
+1F50A..1F514 ; Extended_Pictographic# E0.6 [11] (🔊..🔔) speaker high volume..bell
+1F515 ; Extended_Pictographic# E1.0 [1] (🔕) bell with slash
+1F516..1F52B ; Extended_Pictographic# E0.6 [22] (🔖..🔫) bookmark..water pistol
+1F52C..1F52D ; Extended_Pictographic# E1.0 [2] (🔬..🔭) microscope..telescope
+1F52E..1F53D ; Extended_Pictographic# E0.6 [16] (🔮..🔽) crystal ball..downwards button
+1F546..1F548 ; Extended_Pictographic# E0.0 [3] (🕆..🕈) WHITE LATIN CROSS..CELTIC CROSS
+1F549..1F54A ; Extended_Pictographic# E0.7 [2] (🕉️..🕊️) om..dove
+1F54B..1F54E ; Extended_Pictographic# E1.0 [4] (🕋..🕎) kaaba..menorah
+1F54F ; Extended_Pictographic# E0.0 [1] (🕏) BOWL OF HYGIEIA
+1F550..1F55B ; Extended_Pictographic# E0.6 [12] (🕐..🕛) one o’clock..twelve o’clock
+1F55C..1F567 ; Extended_Pictographic# E0.7 [12] (🕜..🕧) one-thirty..twelve-thirty
+1F568..1F56E ; Extended_Pictographic# E0.0 [7] (🕨..🕮) RIGHT SPEAKER..BOOK
+1F56F..1F570 ; Extended_Pictographic# E0.7 [2] (🕯️..🕰️) candle..mantelpiece clock
+1F571..1F572 ; Extended_Pictographic# E0.0 [2] (🕱..🕲) BLACK SKULL AND CROSSBONES..NO PIRACY
+1F573..1F579 ; Extended_Pictographic# E0.7 [7] (🕳️..🕹️) hole..joystick
+1F57A ; Extended_Pictographic# E3.0 [1] (🕺) man dancing
+1F57B..1F586 ; Extended_Pictographic# E0.0 [12] (🕻..🖆) LEFT HAND TELEPHONE RECEIVER..PEN OVER STAMPED ENVELOPE
+1F587 ; Extended_Pictographic# E0.7 [1] (🖇️) linked paperclips
+1F588..1F589 ; Extended_Pictographic# E0.0 [2] (🖈..🖉) BLACK PUSHPIN..LOWER LEFT PENCIL
+1F58A..1F58D ; Extended_Pictographic# E0.7 [4] (🖊️..🖍️) pen..crayon
+1F58E..1F58F ; Extended_Pictographic# E0.0 [2] (🖎..🖏) LEFT WRITING HAND..TURNED OK HAND SIGN
+1F590 ; Extended_Pictographic# E0.7 [1] (🖐️) hand with fingers splayed
+1F591..1F594 ; Extended_Pictographic# E0.0 [4] (🖑..🖔) REVERSED RAISED HAND WITH FINGERS SPLAYED..REVERSED VICTORY HAND
+1F595..1F596 ; Extended_Pictographic# E1.0 [2] (🖕..🖖) middle finger..vulcan salute
+1F597..1F5A3 ; Extended_Pictographic# E0.0 [13] (🖗..🖣) WHITE DOWN POINTING LEFT HAND INDEX..BLACK DOWN POINTING BACKHAND INDEX
+1F5A4 ; Extended_Pictographic# E3.0 [1] (🖤) black heart
+1F5A5 ; Extended_Pictographic# E0.7 [1] (🖥️) desktop computer
+1F5A6..1F5A7 ; Extended_Pictographic# E0.0 [2] (🖦..🖧) KEYBOARD AND MOUSE..THREE NETWORKED COMPUTERS
+1F5A8 ; Extended_Pictographic# E0.7 [1] (🖨️) printer
+1F5A9..1F5B0 ; Extended_Pictographic# E0.0 [8] (🖩..🖰) POCKET CALCULATOR..TWO BUTTON MOUSE
+1F5B1..1F5B2 ; Extended_Pictographic# E0.7 [2] (🖱️..🖲️) computer mouse..trackball
+1F5B3..1F5BB ; Extended_Pictographic# E0.0 [9] (🖳..🖻) OLD PERSONAL COMPUTER..DOCUMENT WITH PICTURE
+1F5BC ; Extended_Pictographic# E0.7 [1] (🖼️) framed picture
+1F5BD..1F5C1 ; Extended_Pictographic# E0.0 [5] (🖽..🗁) FRAME WITH TILES..OPEN FOLDER
+1F5C2..1F5C4 ; Extended_Pictographic# E0.7 [3] (🗂️..🗄️) card index dividers..file cabinet
+1F5C5..1F5D0 ; Extended_Pictographic# E0.0 [12] (🗅..🗐) EMPTY NOTE..PAGES
+1F5D1..1F5D3 ; Extended_Pictographic# E0.7 [3] (🗑️..🗓️) wastebasket..spiral calendar
+1F5D4..1F5DB ; Extended_Pictographic# E0.0 [8] (🗔..🗛) DESKTOP WINDOW..DECREASE FONT SIZE SYMBOL
+1F5DC..1F5DE ; Extended_Pictographic# E0.7 [3] (🗜️..🗞️) clamp..rolled-up newspaper
+1F5DF..1F5E0 ; Extended_Pictographic# E0.0 [2] (🗟..🗠) PAGE WITH CIRCLED TEXT..STOCK CHART
+1F5E1 ; Extended_Pictographic# E0.7 [1] (🗡️) dagger
+1F5E2 ; Extended_Pictographic# E0.0 [1] (🗢) LIPS
+1F5E3 ; Extended_Pictographic# E0.7 [1] (🗣️) speaking head
+1F5E4..1F5E7 ; Extended_Pictographic# E0.0 [4] (🗤..🗧) THREE RAYS ABOVE..THREE RAYS RIGHT
+1F5E8 ; Extended_Pictographic# E2.0 [1] (🗨️) left speech bubble
+1F5E9..1F5EE ; Extended_Pictographic# E0.0 [6] (🗩..🗮) RIGHT SPEECH BUBBLE..LEFT ANGER BUBBLE
+1F5EF ; Extended_Pictographic# E0.7 [1] (🗯️) right anger bubble
+1F5F0..1F5F2 ; Extended_Pictographic# E0.0 [3] (🗰..🗲) MOOD BUBBLE..LIGHTNING MOOD
+1F5F3 ; Extended_Pictographic# E0.7 [1] (🗳️) ballot box with ballot
+1F5F4..1F5F9 ; Extended_Pictographic# E0.0 [6] (🗴..🗹) BALLOT SCRIPT X..BALLOT BOX WITH BOLD CHECK
+1F5FA ; Extended_Pictographic# E0.7 [1] (🗺️) world map
+1F5FB..1F5FF ; Extended_Pictographic# E0.6 [5] (🗻..🗿) mount fuji..moai
+1F600 ; Extended_Pictographic# E1.0 [1] (😀) grinning face
+1F601..1F606 ; Extended_Pictographic# E0.6 [6] (😁..😆) beaming face with smiling eyes..grinning squinting face
+1F607..1F608 ; Extended_Pictographic# E1.0 [2] (😇..😈) smiling face with halo..smiling face with horns
+1F609..1F60D ; Extended_Pictographic# E0.6 [5] (😉..😍) winking face..smiling face with heart-eyes
+1F60E ; Extended_Pictographic# E1.0 [1] (😎) smiling face with sunglasses
+1F60F ; Extended_Pictographic# E0.6 [1] (😏) smirking face
+1F610 ; Extended_Pictographic# E0.7 [1] (😐) neutral face
+1F611 ; Extended_Pictographic# E1.0 [1] (😑) expressionless face
+1F612..1F614 ; Extended_Pictographic# E0.6 [3] (😒..😔) unamused face..pensive face
+1F615 ; Extended_Pictographic# E1.0 [1] (😕) confused face
+1F616 ; Extended_Pictographic# E0.6 [1] (😖) confounded face
+1F617 ; Extended_Pictographic# E1.0 [1] (😗) kissing face
+1F618 ; Extended_Pictographic# E0.6 [1] (😘) face blowing a kiss
+1F619 ; Extended_Pictographic# E1.0 [1] (😙) kissing face with smiling eyes
+1F61A ; Extended_Pictographic# E0.6 [1] (😚) kissing face with closed eyes
+1F61B ; Extended_Pictographic# E1.0 [1] (😛) face with tongue
+1F61C..1F61E ; Extended_Pictographic# E0.6 [3] (😜..😞) winking face with tongue..disappointed face
+1F61F ; Extended_Pictographic# E1.0 [1] (😟) worried face
+1F620..1F625 ; Extended_Pictographic# E0.6 [6] (😠..😥) angry face..sad but relieved face
+1F626..1F627 ; Extended_Pictographic# E1.0 [2] (😦..😧) frowning face with open mouth..anguished face
+1F628..1F62B ; Extended_Pictographic# E0.6 [4] (😨..😫) fearful face..tired face
+1F62C ; Extended_Pictographic# E1.0 [1] (😬) grimacing face
+1F62D ; Extended_Pictographic# E0.6 [1] (😭) loudly crying face
+1F62E..1F62F ; Extended_Pictographic# E1.0 [2] (😮..😯) face with open mouth..hushed face
+1F630..1F633 ; Extended_Pictographic# E0.6 [4] (😰..😳) anxious face with sweat..flushed face
+1F634 ; Extended_Pictographic# E1.0 [1] (😴) sleeping face
+1F635 ; Extended_Pictographic# E0.6 [1] (😵) face with crossed-out eyes
+1F636 ; Extended_Pictographic# E1.0 [1] (😶) face without mouth
+1F637..1F640 ; Extended_Pictographic# E0.6 [10] (😷..🙀) face with medical mask..weary cat
+1F641..1F644 ; Extended_Pictographic# E1.0 [4] (🙁..🙄) slightly frowning face..face with rolling eyes
+1F645..1F64F ; Extended_Pictographic# E0.6 [11] (🙅..🙏) person gesturing NO..folded hands
+1F680 ; Extended_Pictographic# E0.6 [1] (🚀) rocket
+1F681..1F682 ; Extended_Pictographic# E1.0 [2] (🚁..🚂) helicopter..locomotive
+1F683..1F685 ; Extended_Pictographic# E0.6 [3] (🚃..🚅) railway car..bullet train
+1F686 ; Extended_Pictographic# E1.0 [1] (🚆) train
+1F687 ; Extended_Pictographic# E0.6 [1] (🚇) metro
+1F688 ; Extended_Pictographic# E1.0 [1] (🚈) light rail
+1F689 ; Extended_Pictographic# E0.6 [1] (🚉) station
+1F68A..1F68B ; Extended_Pictographic# E1.0 [2] (🚊..🚋) tram..tram car
+1F68C ; Extended_Pictographic# E0.6 [1] (🚌) bus
+1F68D ; Extended_Pictographic# E0.7 [1] (🚍) oncoming bus
+1F68E ; Extended_Pictographic# E1.0 [1] (🚎) trolleybus
+1F68F ; Extended_Pictographic# E0.6 [1] (🚏) bus stop
+1F690 ; Extended_Pictographic# E1.0 [1] (🚐) minibus
+1F691..1F693 ; Extended_Pictographic# E0.6 [3] (🚑..🚓) ambulance..police car
+1F694 ; Extended_Pictographic# E0.7 [1] (🚔) oncoming police car
+1F695 ; Extended_Pictographic# E0.6 [1] (🚕) taxi
+1F696 ; Extended_Pictographic# E1.0 [1] (🚖) oncoming taxi
+1F697 ; Extended_Pictographic# E0.6 [1] (🚗) automobile
+1F698 ; Extended_Pictographic# E0.7 [1] (🚘) oncoming automobile
+1F699..1F69A ; Extended_Pictographic# E0.6 [2] (🚙..🚚) sport utility vehicle..delivery truck
+1F69B..1F6A1 ; Extended_Pictographic# E1.0 [7] (🚛..🚡) articulated lorry..aerial tramway
+1F6A2 ; Extended_Pictographic# E0.6 [1] (🚢) ship
+1F6A3 ; Extended_Pictographic# E1.0 [1] (🚣) person rowing boat
+1F6A4..1F6A5 ; Extended_Pictographic# E0.6 [2] (🚤..🚥) speedboat..horizontal traffic light
+1F6A6 ; Extended_Pictographic# E1.0 [1] (🚦) vertical traffic light
+1F6A7..1F6AD ; Extended_Pictographic# E0.6 [7] (🚧..🚭) construction..no smoking
+1F6AE..1F6B1 ; Extended_Pictographic# E1.0 [4] (🚮..🚱) litter in bin sign..non-potable water
+1F6B2 ; Extended_Pictographic# E0.6 [1] (🚲) bicycle
+1F6B3..1F6B5 ; Extended_Pictographic# E1.0 [3] (🚳..🚵) no bicycles..person mountain biking
+1F6B6 ; Extended_Pictographic# E0.6 [1] (🚶) person walking
+1F6B7..1F6B8 ; Extended_Pictographic# E1.0 [2] (🚷..🚸) no pedestrians..children crossing
+1F6B9..1F6BE ; Extended_Pictographic# E0.6 [6] (🚹..🚾) men’s room..water closet
+1F6BF ; Extended_Pictographic# E1.0 [1] (🚿) shower
+1F6C0 ; Extended_Pictographic# E0.6 [1] (🛀) person taking bath
+1F6C1..1F6C5 ; Extended_Pictographic# E1.0 [5] (🛁..🛅) bathtub..left luggage
+1F6C6..1F6CA ; Extended_Pictographic# E0.0 [5] (🛆..🛊) TRIANGLE WITH ROUNDED CORNERS..GIRLS SYMBOL
+1F6CB ; Extended_Pictographic# E0.7 [1] (🛋️) couch and lamp
+1F6CC ; Extended_Pictographic# E1.0 [1] (🛌) person in bed
+1F6CD..1F6CF ; Extended_Pictographic# E0.7 [3] (🛍️..🛏️) shopping bags..bed
+1F6D0 ; Extended_Pictographic# E1.0 [1] (🛐) place of worship
+1F6D1..1F6D2 ; Extended_Pictographic# E3.0 [2] (🛑..🛒) stop sign..shopping cart
+1F6D3..1F6D4 ; Extended_Pictographic# E0.0 [2] (🛓..🛔) STUPA..PAGODA
+1F6D5 ; Extended_Pictographic# E12.0 [1] (🛕) hindu temple
+1F6D6..1F6D7 ; Extended_Pictographic# E13.0 [2] (🛖..🛗) hut..elevator
+1F6D8..1F6DB ; Extended_Pictographic# E0.0 [4] (🛘..🛛) <reserved-1F6D8>..<reserved-1F6DB>
+1F6DC ; Extended_Pictographic# E15.0 [1] (🛜) wireless
+1F6DD..1F6DF ; Extended_Pictographic# E14.0 [3] (🛝..🛟) playground slide..ring buoy
+1F6E0..1F6E5 ; Extended_Pictographic# E0.7 [6] (🛠️..🛥️) hammer and wrench..motor boat
+1F6E6..1F6E8 ; Extended_Pictographic# E0.0 [3] (🛦..🛨) UP-POINTING MILITARY AIRPLANE..UP-POINTING SMALL AIRPLANE
+1F6E9 ; Extended_Pictographic# E0.7 [1] (🛩️) small airplane
+1F6EA ; Extended_Pictographic# E0.0 [1] (🛪) NORTHEAST-POINTING AIRPLANE
+1F6EB..1F6EC ; Extended_Pictographic# E1.0 [2] (🛫..🛬) airplane departure..airplane arrival
+1F6ED..1F6EF ; Extended_Pictographic# E0.0 [3] (🛭..🛯) <reserved-1F6ED>..<reserved-1F6EF>
+1F6F0 ; Extended_Pictographic# E0.7 [1] (🛰️) satellite
+1F6F1..1F6F2 ; Extended_Pictographic# E0.0 [2] (🛱..🛲) ONCOMING FIRE ENGINE..DIESEL LOCOMOTIVE
+1F6F3 ; Extended_Pictographic# E0.7 [1] (🛳️) passenger ship
+1F6F4..1F6F6 ; Extended_Pictographic# E3.0 [3] (🛴..🛶) kick scooter..canoe
+1F6F7..1F6F8 ; Extended_Pictographic# E5.0 [2] (🛷..🛸) sled..flying saucer
+1F6F9 ; Extended_Pictographic# E11.0 [1] (🛹) skateboard
+1F6FA ; Extended_Pictographic# E12.0 [1] (🛺) auto rickshaw
+1F6FB..1F6FC ; Extended_Pictographic# E13.0 [2] (🛻..🛼) pickup truck..roller skate
+1F6FD..1F6FF ; Extended_Pictographic# E0.0 [3] (🛽..🛿) <reserved-1F6FD>..<reserved-1F6FF>
+1F774..1F77F ; Extended_Pictographic# E0.0 [12] (🝴..🝿) LOT OF FORTUNE..ORCUS
+1F7D5..1F7DF ; Extended_Pictographic# E0.0 [11] (🟕..🟟) CIRCLED TRIANGLE..<reserved-1F7DF>
+1F7E0..1F7EB ; Extended_Pictographic# E12.0 [12] (🟠..🟫) orange circle..brown square
+1F7EC..1F7EF ; Extended_Pictographic# E0.0 [4] (🟬..🟯) <reserved-1F7EC>..<reserved-1F7EF>
+1F7F0 ; Extended_Pictographic# E14.0 [1] (🟰) heavy equals sign
+1F7F1..1F7FF ; Extended_Pictographic# E0.0 [15] (🟱..🟿) <reserved-1F7F1>..<reserved-1F7FF>
+1F80C..1F80F ; Extended_Pictographic# E0.0 [4] (🠌..🠏) <reserved-1F80C>..<reserved-1F80F>
+1F848..1F84F ; Extended_Pictographic# E0.0 [8] (🡈..🡏) <reserved-1F848>..<reserved-1F84F>
+1F85A..1F85F ; Extended_Pictographic# E0.0 [6] (🡚..🡟) <reserved-1F85A>..<reserved-1F85F>
+1F888..1F88F ; Extended_Pictographic# E0.0 [8] (🢈..🢏) <reserved-1F888>..<reserved-1F88F>
+1F8AE..1F8FF ; Extended_Pictographic# E0.0 [82] (🢮..🣿) <reserved-1F8AE>..<reserved-1F8FF>
+1F90C ; Extended_Pictographic# E13.0 [1] (🤌) pinched fingers
+1F90D..1F90F ; Extended_Pictographic# E12.0 [3] (🤍..🤏) white heart..pinching hand
+1F910..1F918 ; Extended_Pictographic# E1.0 [9] (🤐..🤘) zipper-mouth face..sign of the horns
+1F919..1F91E ; Extended_Pictographic# E3.0 [6] (🤙..🤞) call me hand..crossed fingers
+1F91F ; Extended_Pictographic# E5.0 [1] (🤟) love-you gesture
+1F920..1F927 ; Extended_Pictographic# E3.0 [8] (🤠..🤧) cowboy hat face..sneezing face
+1F928..1F92F ; Extended_Pictographic# E5.0 [8] (🤨..🤯) face with raised eyebrow..exploding head
+1F930 ; Extended_Pictographic# E3.0 [1] (🤰) pregnant woman
+1F931..1F932 ; Extended_Pictographic# E5.0 [2] (🤱..🤲) breast-feeding..palms up together
+1F933..1F93A ; Extended_Pictographic# E3.0 [8] (🤳..🤺) selfie..person fencing
+1F93C..1F93E ; Extended_Pictographic# E3.0 [3] (🤼..🤾) people wrestling..person playing handball
+1F93F ; Extended_Pictographic# E12.0 [1] (🤿) diving mask
+1F940..1F945 ; Extended_Pictographic# E3.0 [6] (🥀..🥅) wilted flower..goal net
+1F947..1F94B ; Extended_Pictographic# E3.0 [5] (🥇..🥋) 1st place medal..martial arts uniform
+1F94C ; Extended_Pictographic# E5.0 [1] (🥌) curling stone
+1F94D..1F94F ; Extended_Pictographic# E11.0 [3] (🥍..🥏) lacrosse..flying disc
+1F950..1F95E ; Extended_Pictographic# E3.0 [15] (🥐..🥞) croissant..pancakes
+1F95F..1F96B ; Extended_Pictographic# E5.0 [13] (🥟..🥫) dumpling..canned food
+1F96C..1F970 ; Extended_Pictographic# E11.0 [5] (🥬..🥰) leafy green..smiling face with hearts
+1F971 ; Extended_Pictographic# E12.0 [1] (🥱) yawning face
+1F972 ; Extended_Pictographic# E13.0 [1] (🥲) smiling face with tear
+1F973..1F976 ; Extended_Pictographic# E11.0 [4] (🥳..🥶) partying face..cold face
+1F977..1F978 ; Extended_Pictographic# E13.0 [2] (🥷..🥸) ninja..disguised face
+1F979 ; Extended_Pictographic# E14.0 [1] (🥹) face holding back tears
+1F97A ; Extended_Pictographic# E11.0 [1] (🥺) pleading face
+1F97B ; Extended_Pictographic# E12.0 [1] (🥻) sari
+1F97C..1F97F ; Extended_Pictographic# E11.0 [4] (🥼..🥿) lab coat..flat shoe
+1F980..1F984 ; Extended_Pictographic# E1.0 [5] (🦀..🦄) crab..unicorn
+1F985..1F991 ; Extended_Pictographic# E3.0 [13] (🦅..🦑) eagle..squid
+1F992..1F997 ; Extended_Pictographic# E5.0 [6] (🦒..🦗) giraffe..cricket
+1F998..1F9A2 ; Extended_Pictographic# E11.0 [11] (🦘..🦢) kangaroo..swan
+1F9A3..1F9A4 ; Extended_Pictographic# E13.0 [2] (🦣..🦤) mammoth..dodo
+1F9A5..1F9AA ; Extended_Pictographic# E12.0 [6] (🦥..🦪) sloth..oyster
+1F9AB..1F9AD ; Extended_Pictographic# E13.0 [3] (🦫..🦭) beaver..seal
+1F9AE..1F9AF ; Extended_Pictographic# E12.0 [2] (🦮..🦯) guide dog..white cane
+1F9B0..1F9B9 ; Extended_Pictographic# E11.0 [10] (🦰..🦹) red hair..supervillain
+1F9BA..1F9BF ; Extended_Pictographic# E12.0 [6] (🦺..🦿) safety vest..mechanical leg
+1F9C0 ; Extended_Pictographic# E1.0 [1] (🧀) cheese wedge
+1F9C1..1F9C2 ; Extended_Pictographic# E11.0 [2] (🧁..🧂) cupcake..salt
+1F9C3..1F9CA ; Extended_Pictographic# E12.0 [8] (🧃..🧊) beverage box..ice
+1F9CB ; Extended_Pictographic# E13.0 [1] (🧋) bubble tea
+1F9CC ; Extended_Pictographic# E14.0 [1] (🧌) troll
+1F9CD..1F9CF ; Extended_Pictographic# E12.0 [3] (🧍..🧏) person standing..deaf person
+1F9D0..1F9E6 ; Extended_Pictographic# E5.0 [23] (🧐..🧦) face with monocle..socks
+1F9E7..1F9FF ; Extended_Pictographic# E11.0 [25] (🧧..🧿) red envelope..nazar amulet
+1FA00..1FA6F ; Extended_Pictographic# E0.0 [112] (🨀..🩯) NEUTRAL CHESS KING..<reserved-1FA6F>
+1FA70..1FA73 ; Extended_Pictographic# E12.0 [4] (🩰..🩳) ballet shoes..shorts
+1FA74 ; Extended_Pictographic# E13.0 [1] (🩴) thong sandal
+1FA75..1FA77 ; Extended_Pictographic# E15.0 [3] (🩵..🩷) light blue heart..pink heart
+1FA78..1FA7A ; Extended_Pictographic# E12.0 [3] (🩸..🩺) drop of blood..stethoscope
+1FA7B..1FA7C ; Extended_Pictographic# E14.0 [2] (🩻..🩼) x-ray..crutch
+1FA7D..1FA7F ; Extended_Pictographic# E0.0 [3] (🩽..🩿) <reserved-1FA7D>..<reserved-1FA7F>
+1FA80..1FA82 ; Extended_Pictographic# E12.0 [3] (🪀..🪂) yo-yo..parachute
+1FA83..1FA86 ; Extended_Pictographic# E13.0 [4] (🪃..🪆) boomerang..nesting dolls
+1FA87..1FA88 ; Extended_Pictographic# E15.0 [2] (🪇..🪈) maracas..flute
+1FA89..1FA8F ; Extended_Pictographic# E0.0 [7] (🪉..🪏) <reserved-1FA89>..<reserved-1FA8F>
+1FA90..1FA95 ; Extended_Pictographic# E12.0 [6] (🪐..🪕) ringed planet..banjo
+1FA96..1FAA8 ; Extended_Pictographic# E13.0 [19] (🪖..🪨) military helmet..rock
+1FAA9..1FAAC ; Extended_Pictographic# E14.0 [4] (🪩..🪬) mirror ball..hamsa
+1FAAD..1FAAF ; Extended_Pictographic# E15.0 [3] (🪭..🪯) folding hand fan..khanda
+1FAB0..1FAB6 ; Extended_Pictographic# E13.0 [7] (🪰..🪶) fly..feather
+1FAB7..1FABA ; Extended_Pictographic# E14.0 [4] (🪷..🪺) lotus..nest with eggs
+1FABB..1FABD ; Extended_Pictographic# E15.0 [3] (🪻..🪽) hyacinth..wing
+1FABE ; Extended_Pictographic# E0.0 [1] (🪾) <reserved-1FABE>
+1FABF ; Extended_Pictographic# E15.0 [1] (🪿) goose
+1FAC0..1FAC2 ; Extended_Pictographic# E13.0 [3] (🫀..🫂) anatomical heart..people hugging
+1FAC3..1FAC5 ; Extended_Pictographic# E14.0 [3] (🫃..🫅) pregnant man..person with crown
+1FAC6..1FACD ; Extended_Pictographic# E0.0 [8] (🫆..🫍) <reserved-1FAC6>..<reserved-1FACD>
+1FACE..1FACF ; Extended_Pictographic# E15.0 [2] (🫎..🫏) moose..donkey
+1FAD0..1FAD6 ; Extended_Pictographic# E13.0 [7] (🫐..🫖) blueberries..teapot
+1FAD7..1FAD9 ; Extended_Pictographic# E14.0 [3] (🫗..🫙) pouring liquid..jar
+1FADA..1FADB ; Extended_Pictographic# E15.0 [2] (🫚..🫛) ginger root..pea pod
+1FADC..1FADF ; Extended_Pictographic# E0.0 [4] (🫜..🫟) <reserved-1FADC>..<reserved-1FADF>
+1FAE0..1FAE7 ; Extended_Pictographic# E14.0 [8] (🫠..🫧) melting face..bubbles
+1FAE8 ; Extended_Pictographic# E15.0 [1] (🫨) shaking face
+1FAE9..1FAEF ; Extended_Pictographic# E0.0 [7] (🫩..🫯) <reserved-1FAE9>..<reserved-1FAEF>
+1FAF0..1FAF6 ; Extended_Pictographic# E14.0 [7] (🫰..🫶) hand with index finger and thumb crossed..heart hands
+1FAF7..1FAF8 ; Extended_Pictographic# E15.0 [2] (🫷..🫸) leftwards pushing hand..rightwards pushing hand
+1FAF9..1FAFF ; Extended_Pictographic# E0.0 [7] (🫹..🫿) <reserved-1FAF9>..<reserved-1FAFF>
+1FC00..1FFFD ; Extended_Pictographic# E0.0[1022] (🰀..🿽) <reserved-1FC00>..<reserved-1FFFD>
+
+# Total elements: 3537
+
+#EOF
diff --git a/vendor/librune/gen/gbrk b/vendor/librune/gen/gbrk
new file mode 100755
index 0000000..577c2c9
--- /dev/null
+++ b/vendor/librune/gen/gbrk
@@ -0,0 +1,114 @@
+#!/bin/sh
+
+cache()
+{
+ name="/tmp/librune/gbrk/$(basename "$1")"
+ if test ! -f "$name"
+ then
+ mkdir -p /tmp/librune/gbrk
+ wget -q "$1" -O "$name"
+ fi
+}
+
+set -e
+cd "${0%/*}/.."
+exec >include/internal/gbrk_lookup.h
+
+readonly URL1='https://www.unicode.org/Public/UCD/latest/ucd/auxiliary/GraphemeBreakProperty.txt'
+readonly URL2='https://www.unicode.org/Public/UCD/latest/ucd/emoji/emoji-data.txt'
+readonly URL3='https://www.unicode.org/Public/UCD/latest/ucd/DerivedCoreProperties.txt'
+
+cache "$URL1" &
+cache "$URL2" &
+cache "$URL3" &
+wait
+
+cat <<C
+/* This file is autogenerated by gen/gbrk; DO NOT EDIT. */
+
+#ifndef RUNE_INTERNAL_GBRK_LOOKUP_H
+#define RUNE_INTERNAL_GBRK_LOOKUP_H
+
+/* IWYU pragma: private */
+/* clang-format off */
+
+#include "types.h"
+
+typedef enum {
+ GBP_OTHER = 0,
+
+ GBP_CTRL = 1 << 0, /* Control */
+ GBP_EXT = 1 << 1, /* Extend */
+ GBP_PIC = 1 << 2, /* Extended_Pictographic */
+ GBP_PREP = 1 << 3, /* Prepend */
+ GBP_RI = 1 << 4, /* Regional_Indicator */
+ GBP_SM = 1 << 5, /* SpacingMark */
+ GBP_ZWJ = 1 << 6, /* ZWJ */
+
+ GBP_HNGL_L = 1 << 7, /* Hangul L */
+ GBP_HNGL_LV = 1 << 8, /* Hangul LV */
+ GBP_HNGL_LVT = 1 << 9, /* Hangul LVT */
+ GBP_HNGL_T = 1 << 10, /* Hangul T */
+ GBP_HNGL_V = 1 << 11, /* Hangul V */
+
+ GBP_INDC_CNSNT = 1 << 12, /* Indic Consonant */
+ GBP_INDC_EXT = 1 << 13, /* Indic Extend */
+ GBP_INDC_LNK = 1 << 14, /* Indic Linker */
+} gbrk_prop;
+
+static const struct {
+ rune lo, hi;
+ gbrk_prop val;
+} gbrk_prop_tbl[] = {
+C
+
+gawk '
+BEGIN {
+ FS = "( *#.*| +; +)"
+ map["Control"] = "CTRL"
+ map["Extend"] = "EXT"
+ map["Extended_Pictographic"] = "PIC"
+ map["Prepend"] = "PREP"
+ map["Regional_Indicator"] = "RI"
+ map["SpacingMark"] = "SM"
+ map["ZWJ"] = "ZWJ"
+
+ map["L"] = "HNGL_L"
+ map["LV"] = "HNGL_LV"
+ map["LVT"] = "HNGL_LVT"
+ map["T"] = "HNGL_T"
+ map["V"] = "HNGL_V"
+
+ map["InCB; Consonant"] = "INDC_CNSNT"
+ map["InCB; Extend"] = "INDC_EXT"
+ map["InCB; Linker"] = "INDC_LNK"
+}
+
+map[$2] {
+ n = split($1, a, /\.\./)
+ lo = strtonum("0X" a[1])
+ hi = strtonum("0X" a[n])
+
+ for (i = lo; i <= hi; i++) {
+ s = "GBP_" map[$2]
+ props[i] = props[i] ? props[i] " | " s : s
+ }
+}
+
+END {
+ for (i = 0; i <= 0x10FFFF; i++) {
+ if (!props[i])
+ continue
+ lo = i
+ while (props[lo] == props[i + 1])
+ i++
+ printf "\t{0x%06X, 0x%06X, %s},\n", lo, i, props[lo]
+ }
+}
+' /tmp/librune/gbrk/* | sort
+
+cat <<C
+};
+
+#endif /* !RUNE_INTERNAL_GBRK_LOOKUP_H */
+C
diff --git a/vendor/librune/gen/mkfile b/vendor/librune/gen/mkfile
new file mode 100755
index 0000000..a55b08a
--- /dev/null
+++ b/vendor/librune/gen/mkfile
@@ -0,0 +1,37 @@
+#!/bin/sh
+
+set -e
+cd "${0%/*}/.."
+exec >Makefile
+
+cat <<make
+.POSIX:
+
+CC = cc
+CFLAGS = -Wall -Wextra -Wpedantic -g -ggdb3 -fanalyzer -Iinclude
+
+make
+
+printf 'objs = \\\n'
+find lib -name '*.c' | sort | sed '
+ s/c$/o/
+ s/.*/\t& \\/
+ $s/ \\$//
+'
+
+cat <<make
+
+all: \$(objs)
+
+make
+
+find lib -name '*.c' | sort | sed -E 's/(.*)c$/\1o: \1c/'
+
+cat <<make
+
+clean:
+ find lib -name '*.o' -delete
+
+ls:
+ @echo "alias ls='ls --color=auto -I \"*.o\" -I \"compile_commands.json\"'" >&2
+make
diff --git a/vendor/librune/gen/rtype-dt b/vendor/librune/gen/rtype-dt
new file mode 100755
index 0000000..927b54f
--- /dev/null
+++ b/vendor/librune/gen/rtype-dt
@@ -0,0 +1,98 @@
+#!/bin/sh
+
+cache()
+{
+ name="/tmp/librune/rtype/$(basename "$1")"
+ if test ! -f "$name"
+ then
+ mkdir -p /tmp/librune/rtype
+ wget -q "$1" -O "$name"
+ fi
+}
+
+set -e
+cd "${0%/*}/.."
+exec >include/internal/rtype/dt.h
+
+readonly URL='https://www.unicode.org/Public/UCD/latest/ucd/extracted/DerivedDecompositionType.txt'
+cache "$URL"
+
+cat <<C
+/* This file is autogenerated by gen/rtype-dt; DO NOT EDIT. */
+
+#ifndef RUNE_INTERNAL_RTYPE_DT_H
+#define RUNE_INTERNAL_RTYPE_DT_H
+
+/* IWYU pragma: private */
+/* clang-format off */
+
+#include "../types.h"
+#include "../../rtype.h"
+#include "../../rune.h"
+
+static const rprop_dt_bf rtype_dt_lat1_tbl[] = {
+C
+
+gawk '
+BEGIN {
+ FS = "( *#.*| +; +)"
+}
+
+/^[^#]/ {
+ n = split($1, a, /\.\./)
+ lo = strtonum("0X" a[1])
+ hi = strtonum("0X" a[n])
+
+ for (i = lo; i <= hi; i++)
+ props[i] = $2
+}
+
+END {
+ for (i = 0; i <= 0xFF; i++)
+ printf "%12s,\n", "DT_" (props[i] ? toupper(props[i]) : "NONE")
+}
+' /tmp/librune/rtype/DerivedDecompositionType.txt \
+| paste -d' ' - - - - \
+| sed 's/^/\t/'
+
+cat <<C
+};
+
+static const struct {
+ rune lo, hi;
+ rprop_dt_bf val;
+} rtype_dt_tbl[] = {
+C
+
+gawk '
+BEGIN {
+ FS = "( *#.*| +; +)"
+}
+
+/^[^#]/ {
+ n = split($1, a, /\.\./)
+ lo = strtonum("0X" a[1])
+ hi = strtonum("0X" a[n])
+
+ for (i = lo; i <= hi; i++)
+ props[i] = $2
+}
+
+END {
+ for (i = 0; i <= 0x10FFFF; i++) {
+ if (!props[i])
+ continue
+ lo = i
+ while (props[lo] == props[i + 1])
+ i++
+ printf("\t{RUNE_C(0x%06X), RUNE_C(0x%06X), DT_%s},\n",
+ lo, i, toupper(props[lo]))
+ }
+}
+' /tmp/librune/rtype/DerivedDecompositionType.txt | sort
+
+cat <<C
+};
+
+#endif /* !RUNE_INTERNAL_RTYPE_DT_H */
+C
diff --git a/vendor/librune/gen/rtype-equideo b/vendor/librune/gen/rtype-equideo
new file mode 100755
index 0000000..794e239
--- /dev/null
+++ b/vendor/librune/gen/rtype-equideo
@@ -0,0 +1,64 @@
+#!/bin/sh
+
+cache()
+{
+ name="/tmp/librune/rtype/$(basename "$1")"
+ if test ! -f "$name"
+ then
+ mkdir -p /tmp/librune/rtype
+ wget -q "$1" -O "$name"
+ fi
+}
+
+set -e
+cd "${0%/*}/.."
+exec >include/internal/rtype/equideo.h
+
+readonly URL='https://www.unicode.org/Public/UCD/latest/ucd/EquivalentUnifiedIdeograph.txt'
+cache "$URL"
+
+cat <<C
+/* This file is autogenerated by gen/rtype-equideo; DO NOT EDIT. */
+
+#ifndef RUNE_INTERNAL_RTYPE_EQUIDEO_H
+#define RUNE_INTERNAL_RTYPE_EQUIDEO_H
+
+/* IWYU pragma: private */
+/* clang-format off */
+
+#include "../types.h"
+#include "../../rune.h"
+
+static const struct {
+ rune key, val;
+} rtype_equideo_tbl[] = {
+C
+
+gawk '
+BEGIN {
+ FS = "( *#.*| +; +)"
+}
+
+/^[^#]/ {
+ n = split($1, a, /\.\./)
+ lo = strtonum("0X" a[1])
+ hi = strtonum("0X" a[n])
+
+ for (i = lo; i <= hi; i++)
+ props[i] = strtonum("0X" $2)
+}
+
+END {
+ for (i = 0; i <= 0x10FFFF; i++) {
+ if (!props[i])
+ continue
+ printf "\t{RUNE_C(0x%06X), RUNE_C(0x%06X)},\n", i, props[i]
+ }
+}
+' /tmp/librune/rtype/EquivalentUnifiedIdeograph.txt | sort
+
+cat <<C
+};
+
+#endif /* !RUNE_INTERNAL_RTYPE_EQUIDEO_H */
+C
diff --git a/vendor/librune/gen/rtype-gc b/vendor/librune/gen/rtype-gc
new file mode 100755
index 0000000..33d1662
--- /dev/null
+++ b/vendor/librune/gen/rtype-gc
@@ -0,0 +1,107 @@
+#!/bin/sh
+
+cache()
+{
+ name="/tmp/librune/rtype/$(basename "$1")"
+ if test ! -f "$name"
+ then
+ mkdir -p /tmp/librune/rtype
+ wget -q "$1" -O "$name"
+ fi
+}
+
+set -e
+cd "${0%/*}/.."
+exec >include/internal/rtype/gc.h
+
+readonly URL='https://www.unicode.org/Public/UCD/latest/ucd/UnicodeData.txt'
+cache "$URL"
+
+cat <<C
+/* This file is autogenerated by gen/rtype-gc; DO NOT EDIT. */
+
+#ifndef RUNE_INTERNAL_RTYPE_GC_H
+#define RUNE_INTERNAL_RTYPE_GC_H
+
+/* IWYU pragma: private */
+/* clang-format off */
+
+#include "../types.h"
+#include "../../rtype.h"
+#include "../../rune.h"
+
+static const rprop_gc_bf rtype_gc_lat1_tbl[] = {
+C
+
+gawk '
+BEGIN {
+ FS = ";"
+}
+
+{
+ s = "GC_" toupper($3)
+ lo = strtonum("0X" $1)
+
+ if ($2 ~ /First/) {
+ getline
+ hi = strtonum("0X" $1)
+ } else
+ hi = lo
+
+ for (i = lo; i <= hi; i++)
+ props[i] = s
+}
+
+END {
+ for (i = 0; i <= 0xFF; i++)
+ print props[i] ","
+}
+' /tmp/librune/rtype/UnicodeData.txt \
+| paste -d' ' - - - - - - - - \
+| sed 's/^/\t/'
+
+cat <<C
+};
+
+static const struct {
+ rune lo, hi;
+ rprop_gc_bf val;
+} rtype_gc_tbl[] = {
+C
+
+gawk '
+BEGIN {
+ FS = ";"
+}
+
+{
+ s = "GC_" toupper($3)
+ lo = strtonum("0X" $1)
+
+ if ($2 ~ /First/) {
+ getline
+ hi = strtonum("0X" $1)
+ } else
+ hi = lo
+
+ for (i = lo; i <= hi; i++)
+ props[i] = s
+}
+
+END {
+ for (i = 0x100; i <= 0x10FFFF; i++) {
+ if (!props[i])
+ continue
+ lo = i
+ while (props[lo] == props[i + 1])
+ i++
+ printf "\t{RUNE_C(0x%06X), RUNE_C(0x%06X), %s},\n", lo, i, props[lo]
+ }
+}
+' /tmp/librune/rtype/UnicodeData.txt | sort
+
+cat <<C
+};
+
+#endif /* !RUNE_INTERNAL_RTYPE_GC_H */
+C
diff --git a/vendor/librune/gen/rtype-jg b/vendor/librune/gen/rtype-jg
new file mode 100755
index 0000000..6576437
--- /dev/null
+++ b/vendor/librune/gen/rtype-jg
@@ -0,0 +1,69 @@
+#!/bin/sh
+
+cache()
+{
+ name="/tmp/librune/rtype/$(basename "$1")"
+ if test ! -f "$name"
+ then
+ mkdir -p /tmp/librune/rtype
+ wget -q "$1" -O "$name"
+ fi
+}
+
+set -e
+cd "${0%/*}/.."
+exec >include/internal/rtype/jg.h
+
+readonly URL='https://www.unicode.org/Public/UCD/latest/ucd/extracted/DerivedJoiningGroup.txt'
+cache "$URL"
+
+cat <<C
+/* This file is autogenerated by gen/rtype-jg; DO NOT EDIT. */
+
+#ifndef RUNE_INTERNAL_RTYPE_JG_H
+#define RUNE_INTERNAL_RTYPE_JG_H
+
+/* IWYU pragma: private */
+/* clang-format off */
+
+#include "../types.h"
+#include "../../rtype.h"
+#include "../../rune.h"
+
+static const struct {
+ rune lo, hi;
+ rprop_jg_bf val;
+} rtype_jg_tbl[] = {
+C
+
+gawk '
+BEGIN {
+ FS = "( *#.*| +; +)"
+}
+
+/^[^#]/ {
+ n = split($1, a, /\.\./)
+ lo = strtonum("0X" a[1])
+ hi = strtonum("0X" a[n])
+
+ for (i = lo; i <= hi; i++)
+ props[i] = toupper($2)
+}
+
+END {
+ for (i = 0; i <= 0x10FFFF; i++) {
+ if (!props[i])
+ continue
+ lo = i
+ while (props[lo] == props[i + 1])
+ i++
+ printf "\t{RUNE_C(0x%06X), RUNE_C(0x%06X), JG_%s},\n", lo, i, props[lo]
+ }
+}
+' /tmp/librune/rtype/DerivedJoiningGroup.txt | sort
+
+cat <<C
+};
+
+#endif /* !RUNE_INTERNAL_RTYPE_JG_H */
+C
diff --git a/vendor/librune/gen/rtype-jt b/vendor/librune/gen/rtype-jt
new file mode 100755
index 0000000..81185ec
--- /dev/null
+++ b/vendor/librune/gen/rtype-jt
@@ -0,0 +1,97 @@
+#!/bin/sh
+
+cache()
+{
+ name="/tmp/librune/rtype/$(basename "$1")"
+ if test ! -f "$name"
+ then
+ mkdir -p /tmp/librune/rtype
+ wget -q "$1" -O "$name"
+ fi
+}
+
+set -e
+cd "${0%/*}/.."
+exec >include/internal/rtype/jt.h
+
+readonly URL='https://www.unicode.org/Public/UCD/latest/ucd/extracted/DerivedJoiningType.txt'
+cache "$URL"
+
+cat <<C
+/* This file is autogenerated by gen/rtype-jt; DO NOT EDIT. */
+
+#ifndef RUNE_INTERNAL_RTYPE_JT_H
+#define RUNE_INTERNAL_RTYPE_JT_H
+
+/* IWYU pragma: private */
+/* clang-format off */
+
+#include "../types.h"
+#include "../../rtype.h"
+#include "../../rune.h"
+
+static const rprop_jt_bf rtype_jt_lat1_tbl[] = {
+C
+
+gawk '
+BEGIN {
+ FS = "( *#.*| +; +)"
+}
+
+$2 ~ /[UCDRLT]/ {
+ n = split($1, a, /\.\./)
+ lo = strtonum("0X" a[1])
+ hi = strtonum("0X" a[n])
+
+ for (i = lo; i <= hi; i++)
+ props[i] = $2
+}
+
+END {
+ for (i = 0; i <= 0xFF; i++)
+ printf "JT_%s,\n", props[i] ? props[i] : "U"
+}
+' /tmp/librune/rtype/DerivedJoiningType.txt \
+| paste -d' ' - - - - - - - - \
+| sed 's/^/\t/'
+
+cat <<C
+};
+
+static const struct {
+ rune lo, hi;
+ rprop_jt_bf val;
+} rtype_jt_tbl[] = {
+C
+
+gawk '
+BEGIN {
+ FS = "( *#.*| +; +)"
+}
+
+$2 ~ /[UCDRLT]/ {
+ n = split($1, a, /\.\./)
+ lo = strtonum("0X" a[1])
+ hi = strtonum("0X" a[n])
+
+ for (i = lo; i <= hi; i++)
+ props[i] = $2
+}
+
+END {
+ for (i = 0; i <= 0x10FFFF; i++) {
+ if (!props[i])
+ continue
+ lo = i
+ while (props[lo] == props[i + 1])
+ i++
+ printf "\t{RUNE_C(0x%06X), RUNE_C(0x%06X), JT_%s},\n", lo, i, props[lo]
+ }
+}
+' /tmp/librune/rtype/DerivedJoiningType.txt | sort
+
+cat <<C
+};
+
+#endif /* !RUNE_INTERNAL_RTYPE_JT_H */
+C
diff --git a/vendor/librune/gen/rtype-nt b/vendor/librune/gen/rtype-nt
new file mode 100755
index 0000000..7dc149f
--- /dev/null
+++ b/vendor/librune/gen/rtype-nt
@@ -0,0 +1,97 @@
+#!/bin/sh
+
+cache()
+{
+ name="/tmp/librune/rtype/$(basename "$1")"
+ if test ! -f "$name"
+ then
+ mkdir -p /tmp/librune/rtype
+ wget -q "$1" -O "$name"
+ fi
+}
+
+set -e
+cd "${0%/*}/.."
+exec >include/internal/rtype/nt.h
+
+readonly URL='https://www.unicode.org/Public/UCD/latest/ucd/extracted/DerivedNumericType.txt'
+cache "$URL"
+
+cat <<C
+/* This file is autogenerated by gen/rtype-nt; DO NOT EDIT. */
+
+#ifndef RUNE_INTERNAL_RTYPE_NT_H
+#define RUNE_INTERNAL_RTYPE_NT_H
+
+/* IWYU pragma: private */
+/* clang-format off */
+
+#include "../types.h"
+#include "../../rtype.h"
+#include "../../rune.h"
+
+static const rprop_nt_bf rtype_nt_lat1_tbl[] = {
+C
+
+gawk '
+BEGIN {
+ FS = "( *#.*| +; +)"
+}
+
+/^[^#]/ {
+ n = split($1, a, /\.\./)
+ lo = strtonum("0X" a[1])
+ hi = strtonum("0X" a[n])
+
+ for (i = lo; i <= hi; i++)
+ props[i] = toupper($2)
+}
+
+END {
+ for (i = 0; i <= 0xFF; i++)
+ printf "%10s,\n", "NT_" (props[i] ? props[i] : "NONE")
+}
+' /tmp/librune/rtype/DerivedNumericType.txt \
+| paste -d' ' - - - - - - - - \
+| sed 's/^/\t/'
+
+cat <<C
+};
+
+static const struct {
+ rune lo, hi;
+ rprop_nt_bf val;
+} rtype_nt_tbl[] = {
+C
+
+gawk '
+BEGIN {
+ FS = "( *#.*| +; +)"
+}
+
+/^[^#]/ {
+ n = split($1, a, /\.\./)
+ lo = strtonum("0X" a[1])
+ hi = strtonum("0X" a[n])
+
+ for (i = lo; i <= hi; i++)
+ props[i] = toupper($2)
+}
+
+END {
+ for (i = 0; i <= 0x10FFFF; i++) {
+ if (!props[i])
+ continue
+ lo = i
+ while (props[lo] == props[i + 1])
+ i++
+ printf "\t{RUNE_C(0x%06X), RUNE_C(0x%06X), NT_%s},\n", lo, i, props[lo]
+ }
+}
+' /tmp/librune/rtype/DerivedNumericType.txt | sort
+
+cat <<C
+};
+
+#endif /* !RUNE_INTERNAL_RTYPE_NT_H */
+C
diff --git a/vendor/librune/gen/rtype-nv b/vendor/librune/gen/rtype-nv
new file mode 100755
index 0000000..f5dd9d4
--- /dev/null
+++ b/vendor/librune/gen/rtype-nv
@@ -0,0 +1,68 @@
+#!/bin/sh
+
+cache()
+{
+ name="/tmp/librune/rtype/$(basename "$1")"
+ if test ! -f "$name"
+ then
+ mkdir -p /tmp/librune/rtype
+ wget -q "$1" -O "$name"
+ fi
+}
+
+set -e
+cd "${0%/*}/.."
+exec >include/internal/rtype/nv.h
+
+readonly URL='https://www.unicode.org/Public/UCD/latest/ucd/extracted/DerivedNumericValues.txt'
+cache "$URL"
+
+cat <<C
+/* This file is autogenerated by gen/rtype-nv; DO NOT EDIT. */
+
+#ifndef RUNE_INTERNAL_RTYPE_NV_H
+#define RUNE_INTERNAL_RTYPE_NV_H
+
+/* IWYU pragma: private */
+/* clang-format off */
+
+#include "../types.h"
+#include "../../rtype.h"
+#include "../../rune.h"
+
+static const struct {
+ rune key;
+ double val;
+} rtype_nv_tbl[] = {
+C
+
+gawk '
+BEGIN {
+ FS = "( *#.*| +; +)"
+}
+
+/^[^#]/ {
+ n = split($1, a, /\.\./)
+ lo = strtonum("0X" a[1])
+ hi = strtonum("0X" a[n])
+
+ for (i = lo; i <= hi; i++) {
+ gsub(/^; /, "", $3)
+ props[i] = "(double)" $3
+ }
+}
+
+END {
+ for (i = 0; i <= 0x10FFFF; i++) {
+ if (!props[i])
+ continue
+ printf "\t{RUNE_C(0x%06X), %s},\n", i, props[i]
+ }
+}
+' /tmp/librune/rtype/DerivedNumericValues.txt | sort
+
+cat <<C
+};
+
+#endif /* !RUNE_INTERNAL_RTYPE_NV_H */
+C
diff --git a/vendor/librune/gen/rtype-prop b/vendor/librune/gen/rtype-prop
new file mode 100755
index 0000000..759a07d
--- /dev/null
+++ b/vendor/librune/gen/rtype-prop
@@ -0,0 +1,155 @@
+#!/bin/sh
+
+cache()
+{
+ name="/tmp/librune/rtype/$(basename "$1")"
+ if test ! -f "$name"
+ then
+ mkdir -p /tmp/librune/rtype
+ wget -q "$1" -O "$name"
+ fi
+}
+
+cd "${0%/*}/.."
+
+readonly URL1='https://www.unicode.org/Public/UCD/latest/ucd/PropList.txt'
+readonly URL2='https://www.unicode.org/Public/UCD/latest/ucd/DerivedCoreProperties.txt'
+readonly URL3='https://www.unicode.org/Public/UCD/latest/ucd/emoji/emoji-data.txt'
+readonly URL4='https://www.unicode.org/Public/UCD/latest/ucd/DerivedNormalizationProps.txt'
+readonly URL5='https://www.unicode.org/Public/UCD/latest/ucd/extracted/DerivedBinaryProperties.txt'
+
+cache "$URL1" &
+cache "$URL2" &
+cache "$URL3" &
+cache "$URL4" &
+cache "$URL5" &
+wait
+
+props1='
+bidi_c=Bidi_Control
+dash=Dash
+dep=Deprecated
+dia=Diacritic
+ext=Extender
+hex=Hex_Digit
+idbo=IDS_Binary_Operator
+id_compat_math_continue=ID_Compat_Math_Continue
+id_compat_math_start=ID_Compat_Math_Start
+ideo=Ideographic
+loe=Logical_Order_Exception
+pat_syn=Pattern_Syntax
+pcm=Prepended_Concatenation_Mark
+qmark=Quotation_Mark
+radical=Radical
+sd=Soft_Dotted
+sterm=Sentence_Terminal
+term=Terminal_Punctuation
+uideo=Unified_Ideograph
+vs=Variation_Selector
+wspace=White_Space
+'
+
+props2='
+alpha=Alphabetic
+cased=Cased
+ci=Case_Ignorable
+cwcf=Changes_When_Casefolded
+cwcm=Changes_When_Casemapped
+cwl=Changes_When_Lowercased
+cwt=Changes_When_Titlecased
+cwu=Changes_When_Uppercased
+di=Default_Ignorable_Code_Point
+gr_base=Grapheme_Base
+gr_ext=Grapheme_Extend
+idc=ID_Continue
+ids=ID_Start
+incb=Indic_Conjunct_Break
+lower=Lowercase
+math=Math
+upper=Uppercase
+xidc=XID_Continue
+xids=XID_Start
+'
+
+props3='
+ebase=Emoji_Modifier_Base
+ecomp=Emoji_Component
+emod=Emoji_Modifier
+emoji=Emoji
+epres=Emoji_Presentation
+extpic=Extended_Pictographic
+'
+
+props4='
+cwkcf=Changes_When_NFKC_Casefolded
+'
+
+props5='
+bidi_m=Bidi_Mirrored
+'
+
+manual='
+ahex=ASCII_Hex_Digit
+idst=IDS_Trinary_Operator
+idsu=IDS_Unary_Operator
+join_c=Join_Control
+nchar=Noncharacter_Code_Point
+pat_ws=Pattern_White_Space
+ri=Regional_Indicator
+'
+
+gen()
+{
+ local p=${1%%=*}
+ gawk -M -v prop=${1#*=} -v word=$2 -v short=$p \
+ -f gen/rtype-prop.awk /tmp/librune/rtype/$3 \
+ >lib/rtype/rprop_${2}_${p}.c
+ printf 'DONE rprop_%s_%s()\n' $2 $p >&2
+}
+
+for prop in $props1
+do
+ gen $prop is PropList.txt &
+done
+
+for prop in $props2
+do
+ gen $prop is DerivedCoreProperties.txt &
+done
+
+for prop in $props3
+do
+ gen $prop is emoji-data.txt &
+done
+
+for prop in $props4
+do
+ gen $prop is DerivedNormalizationProps.txt &
+done
+
+for prop in $props5
+do
+ gen $prop is DerivedBinaryProperties.txt &
+done
+
+printf '[[unsequenced]] bool rprop_is_%s(rune);\n' \
+ $(printf '%s\n' $props1 $props2 $props3 $props4 $props5 | cut -d= -f1) \
+| gawk '
+ /PROP PREDICATES END/ { no = 0 }
+ FILENAME != "-" && !no { print }
+ FILENAME == "-" { funcs[++i] = $0 }
+
+ /PROP PREDICATES START/ {
+ no = 1
+ asort(funcs)
+ for (i = 1; i <= length(funcs); i++)
+ print funcs[i]
+ }
+' - include/rtype.h | sponge include/rtype.h
+
+wait
+for prop in $manual
+do
+ shrt=${prop%%=*}
+ printf 'Function rprop_is_%s() implemented manually\n' $shrt >&2
+done
diff --git a/vendor/librune/gen/rtype-prop.awk b/vendor/librune/gen/rtype-prop.awk
new file mode 100644
index 0000000..138b3ab
--- /dev/null
+++ b/vendor/librune/gen/rtype-prop.awk
@@ -0,0 +1,72 @@
+BEGIN {
+ FS = "( *#.*| +; +)"
+
+ print "/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */"
+ print ""
+ print "#include \"rtype.h\""
+ print "#include \"rune.h\""
+ print ""
+ print "#include \"internal/common.h\""
+ print ""
+ print "/* clang-format off */"
+ print ""
+}
+
+$2 == prop || (prop == "Indic_Conjunct_Break" && $2 ~ /InCB;/) {
+ n = split($1, a, /\.\./)
+ lo = strtonum("0x" a[1])
+ hi = strtonum("0x" a[n])
+
+ for (i = lo; i <= hi; i++)
+ xs[i] = 1
+}
+
+END {
+ if (word == "is") {
+ for (i = 0; i <= 0xFF; i++) {
+ if (xs[i])
+ mask = or(mask, lshift(1, i))
+ }
+ }
+ if (mask > 0) {
+ print "#if BIT_LOOKUP"
+ print "static const unsigned _BitInt(LATIN1_MAX + 1) mask ="
+ printf "\t0x%064Xuwb;\n", mask
+ print "#endif"
+ print ""
+ }
+
+ print "static const struct {"
+ print "\trune lo, hi;"
+ print "} lookup_tbl[] = {"
+
+ for (i = 0; i <= 0x10FFFF; i++) {
+ if (!xs[i])
+ continue
+ lo = i
+ while (xs[i + 1])
+ i++
+ printf "\t{RUNE_C(0x%06X), RUNE_C(0x%06X)},\n", lo, i
+ }
+
+ print "};"
+ print ""
+ print "#define TYPE bool"
+ print "#define TABLE lookup_tbl"
+ print "#define DEFAULT false"
+ print "#define HAS_VALUE 0"
+ print "#include \"internal/rtype/lookup-func.h\""
+ print ""
+ print "bool"
+ printf "rprop_%s_%s(rune ch)\n", word, short
+ print "{"
+ if (mask > 0) {
+ print "\treturn"
+ print "#if BIT_LOOKUP"
+ print "\t\tch <= LATIN1_MAX ? (mask & (1 << ch)) :"
+ print "#endif"
+ print "\t\tlookup(ch);"
+ } else
+ print "\treturn lookup(ch);"
+ print "}"
+}
diff --git a/vendor/librune/gen/rtype-vo b/vendor/librune/gen/rtype-vo
new file mode 100755
index 0000000..7c2f65f
--- /dev/null
+++ b/vendor/librune/gen/rtype-vo
@@ -0,0 +1,100 @@
+#!/bin/sh
+
+cache()
+{
+ name="/tmp/librune/rtype/$(basename "$1")"
+ if test ! -f "$name"
+ then
+ mkdir -p /tmp/librune/rtype
+ wget -q "$1" -O "$name"
+ fi
+}
+
+set -e
+cd "${0%/*}/.."
+exec >include/internal/rtype/vo.h
+
+readonly URL='https://www.unicode.org/Public/UCD/latest/ucd/VerticalOrientation.txt'
+cache "$URL"
+
+cat <<C
+/* This file is autogenerated by gen/rtype-vo; DO NOT EDIT. */
+
+#ifndef RUNE_INTERNAL_RTYPE_VO_H
+#define RUNE_INTERNAL_RTYPE_VO_H
+
+/* IWYU pragma: private */
+/* clang-format off */
+
+#include "../types.h"
+#include "../../rtype.h"
+#include "../../rune.h"
+
+static const rprop_vo_bf rtype_vo_lat1_tbl[] = {
+C
+
+gawk '
+BEGIN {
+ FS = "( *#.*| +; +)"
+}
+
+/^[^#]/ {
+ n = split($1, a, /\.\./)
+ lo = strtonum("0X" a[1])
+ hi = strtonum("0X" a[n])
+
+ for (i = lo; i <= hi; i++)
+ props[i] = $2
+}
+
+END {
+ for (i = 0; i <= 0xFF; i++)
+ printf "%5s,\n", "VO_" (props[i] ? toupper(props[i]) : "R")
+}
+' /tmp/librune/rtype/VerticalOrientation.txt \
+| paste -d' ' - - - - - - - - \
+| sed 's/^/\t/'
+
+cat <<C
+};
+
+/* This lookup table omits VO_R entries. As VO_R is the default value, we can
+ remove them from the lookup table for a dramatic decrease in size. */
+static const struct {
+ rune lo, hi;
+ rprop_vo_bf val;
+} rtype_vo_tbl[] = {
+C
+
+gawk '
+BEGIN {
+ FS = "( *#.*| +; +)"
+}
+
+/^[^#]/ {
+ n = split($1, a, /\.\./)
+ lo = strtonum("0X" a[1])
+ hi = strtonum("0X" a[n])
+
+ for (i = lo; i <= hi; i++)
+ props[i] = $2
+}
+
+END {
+ for (i = 0; i <= 0x10FFFF; i++) {
+ if (!props[i])
+ continue
+ lo = i
+ while (props[lo] == props[i + 1])
+ i++
+ if ((p = toupper(props[lo])) != "R")
+ printf "\t{RUNE_C(0x%06X), RUNE_C(0x%06X), VO_%s},\n", lo, i, p
+ }
+}
+' /tmp/librune/rtype/VerticalOrientation.txt | sort
+
+cat <<C
+};
+
+#endif /* !RUNE_INTERNAL_RTYPE_VO_H */
+C
diff --git a/vendor/librune/include/builder.h b/vendor/librune/include/builder.h
new file mode 100644
index 0000000..403d77b
--- /dev/null
+++ b/vendor/librune/include/builder.h
@@ -0,0 +1,35 @@
+#ifndef RUNE_BUILDER_H
+#define RUNE_BUILDER_H
+
+#define _RUNE_NEEDS_U8VIEW 1
+#include "internal/types.h" /* IWYU pragma: export */
+
+struct u8str {
+ char8_t *p;
+ size_t len, cap;
+};
+
+struct u8str *u8strinit(struct u8str *, size_t);
+struct u8str *u8strgrow(struct u8str *, size_t);
+struct u8str *u8strfit(struct u8str *);
+void u8strfree(struct u8str);
+
+struct u8str *u8strpushr(struct u8str *, rune);
+struct u8str *u8strpushstr(struct u8str *, const char *);
+struct u8str *u8strpushu8(struct u8str *, struct u8view);
+
+[[gnu::always_inline]] static inline struct u8view
+u8strtou8(struct u8str s)
+{
+ return (struct u8view){s.p, s.len};
+}
+
+#define u8strpush(b, x) \
+ _Generic((x), \
+ char: u8strpushr, \
+ int: u8strpushr, \
+ rune: u8strpushr, \
+ char *: u8strpushstr, \
+ struct u8view: u8strpushu8)((b), (x))
+
+#endif /* !RUNE_BUILDER_H */
diff --git a/vendor/librune/include/gbrk.h b/vendor/librune/include/gbrk.h
new file mode 100644
index 0000000..7cdb31c
--- /dev/null
+++ b/vendor/librune/include/gbrk.h
@@ -0,0 +1,10 @@
+#ifndef RUNE_GBRK_H
+#define RUNE_GBRK_H
+
+#define _RUNE_NEEDS_U8VIEW 1
+#include "internal/types.h" /* IWYU pragma: export */
+
+size_t u8glen(const char8_t *, size_t);
+size_t u8gnext(struct u8view *, const char8_t **, size_t *);
+
+#endif /* !RUNE_GBRK_H */
diff --git a/vendor/librune/include/internal/common.h b/vendor/librune/include/internal/common.h
new file mode 100644
index 0000000..a05f33c
--- /dev/null
+++ b/vendor/librune/include/internal/common.h
@@ -0,0 +1,29 @@
+#ifndef RUNE_INTERNAL_COMMON_H
+#define RUNE_INTERNAL_COMMON_H
+
+/* IWYU pragma: private */
+
+#include <limits.h>
+
+#define lengthof(a) (sizeof(a) / sizeof(*(a)))
+
+#define U1(x) (((x)&0x80) == 0x00)
+#define U2(x) (((x)&0xE0) == 0xC0)
+#define U3(x) (((x)&0xF0) == 0xE0)
+#define U4(x) (((x)&0xF8) == 0xF0)
+#define UC(x) (((x)&0xC0) == 0x80)
+
+/* Maximum value of a 1–4-byte long UTF-8 sequence */
+#include "rune.h"
+#define _1B_MAX RUNE_C(0x00007F)
+#define _2B_MAX RUNE_C(0x0007FF)
+#define _3B_MAX RUNE_C(0x00FFFF)
+#define _4B_MAX RUNE_C(0x10FFFF)
+
+#define LATIN1_MAX 0xFF
+
+#if BITINT_MAXWIDTH >= LATIN1_MAX + 1
+# define BIT_LOOKUP 1
+#endif
+
+#endif /* !RUNE_INTERNAL_COMMON_H */
diff --git a/vendor/librune/include/internal/gbrk_lookup.h b/vendor/librune/include/internal/gbrk_lookup.h
new file mode 100644
index 0000000..634aa83
--- /dev/null
+++ b/vendor/librune/include/internal/gbrk_lookup.h
@@ -0,0 +1,1568 @@
+/* This file is autogenerated by gen/gbrk; DO NOT EDIT. */
+
+#ifndef RUNE_INTERNAL_GBRK_LOOKUP_H
+#define RUNE_INTERNAL_GBRK_LOOKUP_H
+
+/* IWYU pragma: private */
+/* clang-format off */
+
+#include "types.h"
+
+typedef enum {
+ GBP_OTHER = 0,
+
+ GBP_CTRL = 1 << 0, /* Control */
+ GBP_EXT = 1 << 1, /* Extend */
+ GBP_PIC = 1 << 2, /* Extended_Pictographic */
+ GBP_PREP = 1 << 3, /* Prepend */
+ GBP_RI = 1 << 4, /* Regional_Indicator */
+ GBP_SM = 1 << 5, /* SpacingMark */
+ GBP_ZWJ = 1 << 6, /* ZWJ */
+
+ GBP_HNGL_L = 1 << 7, /* Hangul L */
+ GBP_HNGL_LV = 1 << 8, /* Hangul LV */
+ GBP_HNGL_LVT = 1 << 9, /* Hangul LVT */
+ GBP_HNGL_T = 1 << 10, /* Hangul T */
+ GBP_HNGL_V = 1 << 11, /* Hangul V */
+
+ GBP_INDC_CNSNT = 1 << 12, /* Indic Consonant */
+ GBP_INDC_EXT = 1 << 13, /* Indic Extend */
+ GBP_INDC_LNK = 1 << 14, /* Indic Linker */
+} gbrk_prop;
+
+static const struct {
+ rune lo, hi;
+ gbrk_prop val;
+} gbrk_prop_tbl[] = {
+ {0x000000, 0x000009, GBP_CTRL},
+ {0x00000B, 0x00000C, GBP_CTRL},
+ {0x00000E, 0x00001F, GBP_CTRL},
+ {0x00007F, 0x00009F, GBP_CTRL},
+ {0x0000A9, 0x0000A9, GBP_PIC},
+ {0x0000AD, 0x0000AD, GBP_CTRL},
+ {0x0000AE, 0x0000AE, GBP_PIC},
+ {0x000300, 0x00034E, GBP_INDC_EXT | GBP_EXT},
+ {0x00034F, 0x00034F, GBP_EXT},
+ {0x000350, 0x00036F, GBP_INDC_EXT | GBP_EXT},
+ {0x000483, 0x000487, GBP_INDC_EXT | GBP_EXT},
+ {0x000488, 0x000489, GBP_EXT},
+ {0x000591, 0x0005BD, GBP_INDC_EXT | GBP_EXT},
+ {0x0005BF, 0x0005BF, GBP_INDC_EXT | GBP_EXT},
+ {0x0005C1, 0x0005C2, GBP_INDC_EXT | GBP_EXT},
+ {0x0005C4, 0x0005C5, GBP_INDC_EXT | GBP_EXT},
+ {0x0005C7, 0x0005C7, GBP_INDC_EXT | GBP_EXT},
+ {0x000600, 0x000605, GBP_PREP},
+ {0x000610, 0x00061A, GBP_INDC_EXT | GBP_EXT},
+ {0x00061C, 0x00061C, GBP_CTRL},
+ {0x00064B, 0x00065F, GBP_INDC_EXT | GBP_EXT},
+ {0x000670, 0x000670, GBP_INDC_EXT | GBP_EXT},
+ {0x0006D6, 0x0006DC, GBP_INDC_EXT | GBP_EXT},
+ {0x0006DD, 0x0006DD, GBP_PREP},
+ {0x0006DF, 0x0006E4, GBP_INDC_EXT | GBP_EXT},
+ {0x0006E7, 0x0006E8, GBP_INDC_EXT | GBP_EXT},
+ {0x0006EA, 0x0006ED, GBP_INDC_EXT | GBP_EXT},
+ {0x00070F, 0x00070F, GBP_PREP},
+ {0x000711, 0x000711, GBP_INDC_EXT | GBP_EXT},
+ {0x000730, 0x00074A, GBP_INDC_EXT | GBP_EXT},
+ {0x0007A6, 0x0007B0, GBP_EXT},
+ {0x0007EB, 0x0007F3, GBP_INDC_EXT | GBP_EXT},
+ {0x0007FD, 0x0007FD, GBP_INDC_EXT | GBP_EXT},
+ {0x000816, 0x000819, GBP_INDC_EXT | GBP_EXT},
+ {0x00081B, 0x000823, GBP_INDC_EXT | GBP_EXT},
+ {0x000825, 0x000827, GBP_INDC_EXT | GBP_EXT},
+ {0x000829, 0x00082D, GBP_INDC_EXT | GBP_EXT},
+ {0x000859, 0x00085B, GBP_INDC_EXT | GBP_EXT},
+ {0x000890, 0x000891, GBP_PREP},
+ {0x000898, 0x00089F, GBP_INDC_EXT | GBP_EXT},
+ {0x0008CA, 0x0008E1, GBP_INDC_EXT | GBP_EXT},
+ {0x0008E2, 0x0008E2, GBP_PREP},
+ {0x0008E3, 0x0008FF, GBP_INDC_EXT | GBP_EXT},
+ {0x000900, 0x000902, GBP_EXT},
+ {0x000903, 0x000903, GBP_SM},
+ {0x000915, 0x000939, GBP_INDC_CNSNT},
+ {0x00093A, 0x00093A, GBP_EXT},
+ {0x00093B, 0x00093B, GBP_SM},
+ {0x00093C, 0x00093C, GBP_INDC_EXT | GBP_EXT},
+ {0x00093E, 0x000940, GBP_SM},
+ {0x000941, 0x000948, GBP_EXT},
+ {0x000949, 0x00094C, GBP_SM},
+ {0x00094D, 0x00094D, GBP_INDC_LNK | GBP_EXT},
+ {0x00094E, 0x00094F, GBP_SM},
+ {0x000951, 0x000954, GBP_INDC_EXT | GBP_EXT},
+ {0x000955, 0x000957, GBP_EXT},
+ {0x000958, 0x00095F, GBP_INDC_CNSNT},
+ {0x000962, 0x000963, GBP_EXT},
+ {0x000978, 0x00097F, GBP_INDC_CNSNT},
+ {0x000981, 0x000981, GBP_EXT},
+ {0x000982, 0x000983, GBP_SM},
+ {0x000995, 0x0009A8, GBP_INDC_CNSNT},
+ {0x0009AA, 0x0009B0, GBP_INDC_CNSNT},
+ {0x0009B2, 0x0009B2, GBP_INDC_CNSNT},
+ {0x0009B6, 0x0009B9, GBP_INDC_CNSNT},
+ {0x0009BC, 0x0009BC, GBP_INDC_EXT | GBP_EXT},
+ {0x0009BE, 0x0009BE, GBP_EXT},
+ {0x0009BF, 0x0009C0, GBP_SM},
+ {0x0009C1, 0x0009C4, GBP_EXT},
+ {0x0009C7, 0x0009C8, GBP_SM},
+ {0x0009CB, 0x0009CC, GBP_SM},
+ {0x0009CD, 0x0009CD, GBP_INDC_LNK | GBP_EXT},
+ {0x0009D7, 0x0009D7, GBP_EXT},
+ {0x0009DC, 0x0009DD, GBP_INDC_CNSNT},
+ {0x0009DF, 0x0009DF, GBP_INDC_CNSNT},
+ {0x0009E2, 0x0009E3, GBP_EXT},
+ {0x0009F0, 0x0009F1, GBP_INDC_CNSNT},
+ {0x0009FE, 0x0009FE, GBP_INDC_EXT | GBP_EXT},
+ {0x000A01, 0x000A02, GBP_EXT},
+ {0x000A03, 0x000A03, GBP_SM},
+ {0x000A3C, 0x000A3C, GBP_INDC_EXT | GBP_EXT},
+ {0x000A3E, 0x000A40, GBP_SM},
+ {0x000A41, 0x000A42, GBP_EXT},
+ {0x000A47, 0x000A48, GBP_EXT},
+ {0x000A4B, 0x000A4D, GBP_EXT},
+ {0x000A51, 0x000A51, GBP_EXT},
+ {0x000A70, 0x000A71, GBP_EXT},
+ {0x000A75, 0x000A75, GBP_EXT},
+ {0x000A81, 0x000A82, GBP_EXT},
+ {0x000A83, 0x000A83, GBP_SM},
+ {0x000A95, 0x000AA8, GBP_INDC_CNSNT},
+ {0x000AAA, 0x000AB0, GBP_INDC_CNSNT},
+ {0x000AB2, 0x000AB3, GBP_INDC_CNSNT},
+ {0x000AB5, 0x000AB9, GBP_INDC_CNSNT},
+ {0x000ABC, 0x000ABC, GBP_INDC_EXT | GBP_EXT},
+ {0x000ABE, 0x000AC0, GBP_SM},
+ {0x000AC1, 0x000AC5, GBP_EXT},
+ {0x000AC7, 0x000AC8, GBP_EXT},
+ {0x000AC9, 0x000AC9, GBP_SM},
+ {0x000ACB, 0x000ACC, GBP_SM},
+ {0x000ACD, 0x000ACD, GBP_INDC_LNK | GBP_EXT},
+ {0x000AE2, 0x000AE3, GBP_EXT},
+ {0x000AF9, 0x000AF9, GBP_INDC_CNSNT},
+ {0x000AFA, 0x000AFF, GBP_EXT},
+ {0x000B01, 0x000B01, GBP_EXT},
+ {0x000B02, 0x000B03, GBP_SM},
+ {0x000B15, 0x000B28, GBP_INDC_CNSNT},
+ {0x000B2A, 0x000B30, GBP_INDC_CNSNT},
+ {0x000B32, 0x000B33, GBP_INDC_CNSNT},
+ {0x000B35, 0x000B39, GBP_INDC_CNSNT},
+ {0x000B3C, 0x000B3C, GBP_INDC_EXT | GBP_EXT},
+ {0x000B3E, 0x000B3F, GBP_EXT},
+ {0x000B40, 0x000B40, GBP_SM},
+ {0x000B41, 0x000B44, GBP_EXT},
+ {0x000B47, 0x000B48, GBP_SM},
+ {0x000B4B, 0x000B4C, GBP_SM},
+ {0x000B4D, 0x000B4D, GBP_INDC_LNK | GBP_EXT},
+ {0x000B55, 0x000B57, GBP_EXT},
+ {0x000B5C, 0x000B5D, GBP_INDC_CNSNT},
+ {0x000B5F, 0x000B5F, GBP_INDC_CNSNT},
+ {0x000B62, 0x000B63, GBP_EXT},
+ {0x000B71, 0x000B71, GBP_INDC_CNSNT},
+ {0x000B82, 0x000B82, GBP_EXT},
+ {0x000BBE, 0x000BBE, GBP_EXT},
+ {0x000BBF, 0x000BBF, GBP_SM},
+ {0x000BC0, 0x000BC0, GBP_EXT},
+ {0x000BC1, 0x000BC2, GBP_SM},
+ {0x000BC6, 0x000BC8, GBP_SM},
+ {0x000BCA, 0x000BCC, GBP_SM},
+ {0x000BCD, 0x000BCD, GBP_EXT},
+ {0x000BD7, 0x000BD7, GBP_EXT},
+ {0x000C00, 0x000C00, GBP_EXT},
+ {0x000C01, 0x000C03, GBP_SM},
+ {0x000C04, 0x000C04, GBP_EXT},
+ {0x000C15, 0x000C28, GBP_INDC_CNSNT},
+ {0x000C2A, 0x000C39, GBP_INDC_CNSNT},
+ {0x000C3C, 0x000C3C, GBP_INDC_EXT | GBP_EXT},
+ {0x000C3E, 0x000C40, GBP_EXT},
+ {0x000C41, 0x000C44, GBP_SM},
+ {0x000C46, 0x000C48, GBP_EXT},
+ {0x000C4A, 0x000C4C, GBP_EXT},
+ {0x000C4D, 0x000C4D, GBP_INDC_LNK | GBP_EXT},
+ {0x000C55, 0x000C56, GBP_INDC_EXT | GBP_EXT},
+ {0x000C58, 0x000C5A, GBP_INDC_CNSNT},
+ {0x000C62, 0x000C63, GBP_EXT},
+ {0x000C81, 0x000C81, GBP_EXT},
+ {0x000C82, 0x000C83, GBP_SM},
+ {0x000CBC, 0x000CBC, GBP_INDC_EXT | GBP_EXT},
+ {0x000CBE, 0x000CBE, GBP_SM},
+ {0x000CBF, 0x000CBF, GBP_EXT},
+ {0x000CC0, 0x000CC1, GBP_SM},
+ {0x000CC2, 0x000CC2, GBP_EXT},
+ {0x000CC3, 0x000CC4, GBP_SM},
+ {0x000CC6, 0x000CC6, GBP_EXT},
+ {0x000CC7, 0x000CC8, GBP_SM},
+ {0x000CCA, 0x000CCB, GBP_SM},
+ {0x000CCC, 0x000CCD, GBP_EXT},
+ {0x000CD5, 0x000CD6, GBP_EXT},
+ {0x000CE2, 0x000CE3, GBP_EXT},
+ {0x000CF3, 0x000CF3, GBP_SM},
+ {0x000D00, 0x000D01, GBP_EXT},
+ {0x000D02, 0x000D03, GBP_SM},
+ {0x000D15, 0x000D3A, GBP_INDC_CNSNT},
+ {0x000D3B, 0x000D3C, GBP_INDC_EXT | GBP_EXT},
+ {0x000D3E, 0x000D3E, GBP_EXT},
+ {0x000D3F, 0x000D40, GBP_SM},
+ {0x000D41, 0x000D44, GBP_EXT},
+ {0x000D46, 0x000D48, GBP_SM},
+ {0x000D4A, 0x000D4C, GBP_SM},
+ {0x000D4D, 0x000D4D, GBP_INDC_LNK | GBP_EXT},
+ {0x000D4E, 0x000D4E, GBP_PREP},
+ {0x000D57, 0x000D57, GBP_EXT},
+ {0x000D62, 0x000D63, GBP_EXT},
+ {0x000D81, 0x000D81, GBP_EXT},
+ {0x000D82, 0x000D83, GBP_SM},
+ {0x000DCA, 0x000DCA, GBP_EXT},
+ {0x000DCF, 0x000DCF, GBP_EXT},
+ {0x000DD0, 0x000DD1, GBP_SM},
+ {0x000DD2, 0x000DD4, GBP_EXT},
+ {0x000DD6, 0x000DD6, GBP_EXT},
+ {0x000DD8, 0x000DDE, GBP_SM},
+ {0x000DDF, 0x000DDF, GBP_EXT},
+ {0x000DF2, 0x000DF3, GBP_SM},
+ {0x000E31, 0x000E31, GBP_EXT},
+ {0x000E33, 0x000E33, GBP_SM},
+ {0x000E34, 0x000E37, GBP_EXT},
+ {0x000E38, 0x000E3A, GBP_INDC_EXT | GBP_EXT},
+ {0x000E47, 0x000E47, GBP_EXT},
+ {0x000E48, 0x000E4B, GBP_INDC_EXT | GBP_EXT},
+ {0x000E4C, 0x000E4E, GBP_EXT},
+ {0x000EB1, 0x000EB1, GBP_EXT},
+ {0x000EB3, 0x000EB3, GBP_SM},
+ {0x000EB4, 0x000EB7, GBP_EXT},
+ {0x000EB8, 0x000EBA, GBP_INDC_EXT | GBP_EXT},
+ {0x000EBB, 0x000EBC, GBP_EXT},
+ {0x000EC8, 0x000ECB, GBP_INDC_EXT | GBP_EXT},
+ {0x000ECC, 0x000ECE, GBP_EXT},
+ {0x000F18, 0x000F19, GBP_INDC_EXT | GBP_EXT},
+ {0x000F35, 0x000F35, GBP_INDC_EXT | GBP_EXT},
+ {0x000F37, 0x000F37, GBP_INDC_EXT | GBP_EXT},
+ {0x000F39, 0x000F39, GBP_INDC_EXT | GBP_EXT},
+ {0x000F3E, 0x000F3F, GBP_SM},
+ {0x000F71, 0x000F72, GBP_INDC_EXT | GBP_EXT},
+ {0x000F73, 0x000F73, GBP_EXT},
+ {0x000F74, 0x000F74, GBP_INDC_EXT | GBP_EXT},
+ {0x000F75, 0x000F79, GBP_EXT},
+ {0x000F7A, 0x000F7D, GBP_INDC_EXT | GBP_EXT},
+ {0x000F7E, 0x000F7E, GBP_EXT},
+ {0x000F7F, 0x000F7F, GBP_SM},
+ {0x000F80, 0x000F80, GBP_INDC_EXT | GBP_EXT},
+ {0x000F81, 0x000F81, GBP_EXT},
+ {0x000F82, 0x000F84, GBP_INDC_EXT | GBP_EXT},
+ {0x000F86, 0x000F87, GBP_INDC_EXT | GBP_EXT},
+ {0x000F8D, 0x000F97, GBP_EXT},
+ {0x000F99, 0x000FBC, GBP_EXT},
+ {0x000FC6, 0x000FC6, GBP_INDC_EXT | GBP_EXT},
+ {0x00102D, 0x001030, GBP_EXT},
+ {0x001031, 0x001031, GBP_SM},
+ {0x001032, 0x001036, GBP_EXT},
+ {0x001037, 0x001037, GBP_INDC_EXT | GBP_EXT},
+ {0x001039, 0x00103A, GBP_INDC_EXT | GBP_EXT},
+ {0x00103B, 0x00103C, GBP_SM},
+ {0x00103D, 0x00103E, GBP_EXT},
+ {0x001056, 0x001057, GBP_SM},
+ {0x001058, 0x001059, GBP_EXT},
+ {0x00105E, 0x001060, GBP_EXT},
+ {0x001071, 0x001074, GBP_EXT},
+ {0x001082, 0x001082, GBP_EXT},
+ {0x001084, 0x001084, GBP_SM},
+ {0x001085, 0x001086, GBP_EXT},
+ {0x00108D, 0x00108D, GBP_INDC_EXT | GBP_EXT},
+ {0x00109D, 0x00109D, GBP_EXT},
+ {0x001100, 0x00115F, GBP_HNGL_L},
+ {0x001160, 0x0011A7, GBP_HNGL_V},
+ {0x0011A8, 0x0011FF, GBP_HNGL_T},
+ {0x00135D, 0x00135F, GBP_INDC_EXT | GBP_EXT},
+ {0x001712, 0x001713, GBP_EXT},
+ {0x001714, 0x001714, GBP_INDC_EXT | GBP_EXT},
+ {0x001715, 0x001715, GBP_SM},
+ {0x001732, 0x001733, GBP_EXT},
+ {0x001734, 0x001734, GBP_SM},
+ {0x001752, 0x001753, GBP_EXT},
+ {0x001772, 0x001773, GBP_EXT},
+ {0x0017B4, 0x0017B5, GBP_EXT},
+ {0x0017B6, 0x0017B6, GBP_SM},
+ {0x0017B7, 0x0017BD, GBP_EXT},
+ {0x0017BE, 0x0017C5, GBP_SM},
+ {0x0017C6, 0x0017C6, GBP_EXT},
+ {0x0017C7, 0x0017C8, GBP_SM},
+ {0x0017C9, 0x0017D1, GBP_EXT},
+ {0x0017D2, 0x0017D2, GBP_INDC_EXT | GBP_EXT},
+ {0x0017D3, 0x0017D3, GBP_EXT},
+ {0x0017DD, 0x0017DD, GBP_INDC_EXT | GBP_EXT},
+ {0x00180B, 0x00180D, GBP_EXT},
+ {0x00180E, 0x00180E, GBP_CTRL},
+ {0x00180F, 0x00180F, GBP_EXT},
+ {0x001885, 0x001886, GBP_EXT},
+ {0x0018A9, 0x0018A9, GBP_INDC_EXT | GBP_EXT},
+ {0x001920, 0x001922, GBP_EXT},
+ {0x001923, 0x001926, GBP_SM},
+ {0x001927, 0x001928, GBP_EXT},
+ {0x001929, 0x00192B, GBP_SM},
+ {0x001930, 0x001931, GBP_SM},
+ {0x001932, 0x001932, GBP_EXT},
+ {0x001933, 0x001938, GBP_SM},
+ {0x001939, 0x00193B, GBP_INDC_EXT | GBP_EXT},
+ {0x001A17, 0x001A18, GBP_INDC_EXT | GBP_EXT},
+ {0x001A19, 0x001A1A, GBP_SM},
+ {0x001A1B, 0x001A1B, GBP_EXT},
+ {0x001A55, 0x001A55, GBP_SM},
+ {0x001A56, 0x001A56, GBP_EXT},
+ {0x001A57, 0x001A57, GBP_SM},
+ {0x001A58, 0x001A5E, GBP_EXT},
+ {0x001A60, 0x001A60, GBP_INDC_EXT | GBP_EXT},
+ {0x001A62, 0x001A62, GBP_EXT},
+ {0x001A65, 0x001A6C, GBP_EXT},
+ {0x001A6D, 0x001A72, GBP_SM},
+ {0x001A73, 0x001A74, GBP_EXT},
+ {0x001A75, 0x001A7C, GBP_INDC_EXT | GBP_EXT},
+ {0x001A7F, 0x001A7F, GBP_INDC_EXT | GBP_EXT},
+ {0x001AB0, 0x001ABD, GBP_INDC_EXT | GBP_EXT},
+ {0x001ABE, 0x001ABE, GBP_EXT},
+ {0x001ABF, 0x001ACE, GBP_INDC_EXT | GBP_EXT},
+ {0x001B00, 0x001B03, GBP_EXT},
+ {0x001B04, 0x001B04, GBP_SM},
+ {0x001B34, 0x001B34, GBP_INDC_EXT | GBP_EXT},
+ {0x001B35, 0x001B3A, GBP_EXT},
+ {0x001B3B, 0x001B3B, GBP_SM},
+ {0x001B3C, 0x001B3C, GBP_EXT},
+ {0x001B3D, 0x001B41, GBP_SM},
+ {0x001B42, 0x001B42, GBP_EXT},
+ {0x001B43, 0x001B44, GBP_SM},
+ {0x001B6B, 0x001B73, GBP_INDC_EXT | GBP_EXT},
+ {0x001B80, 0x001B81, GBP_EXT},
+ {0x001B82, 0x001B82, GBP_SM},
+ {0x001BA1, 0x001BA1, GBP_SM},
+ {0x001BA2, 0x001BA5, GBP_EXT},
+ {0x001BA6, 0x001BA7, GBP_SM},
+ {0x001BA8, 0x001BA9, GBP_EXT},
+ {0x001BAA, 0x001BAA, GBP_SM},
+ {0x001BAB, 0x001BAB, GBP_INDC_EXT | GBP_EXT},
+ {0x001BAC, 0x001BAD, GBP_EXT},
+ {0x001BE6, 0x001BE6, GBP_INDC_EXT | GBP_EXT},
+ {0x001BE7, 0x001BE7, GBP_SM},
+ {0x001BE8, 0x001BE9, GBP_EXT},
+ {0x001BEA, 0x001BEC, GBP_SM},
+ {0x001BED, 0x001BED, GBP_EXT},
+ {0x001BEE, 0x001BEE, GBP_SM},
+ {0x001BEF, 0x001BF1, GBP_EXT},
+ {0x001BF2, 0x001BF3, GBP_SM},
+ {0x001C24, 0x001C2B, GBP_SM},
+ {0x001C2C, 0x001C33, GBP_EXT},
+ {0x001C34, 0x001C35, GBP_SM},
+ {0x001C36, 0x001C36, GBP_EXT},
+ {0x001C37, 0x001C37, GBP_INDC_EXT | GBP_EXT},
+ {0x001CD0, 0x001CD2, GBP_INDC_EXT | GBP_EXT},
+ {0x001CD4, 0x001CE0, GBP_INDC_EXT | GBP_EXT},
+ {0x001CE1, 0x001CE1, GBP_SM},
+ {0x001CE2, 0x001CE8, GBP_INDC_EXT | GBP_EXT},
+ {0x001CED, 0x001CED, GBP_INDC_EXT | GBP_EXT},
+ {0x001CF4, 0x001CF4, GBP_INDC_EXT | GBP_EXT},
+ {0x001CF7, 0x001CF7, GBP_SM},
+ {0x001CF8, 0x001CF9, GBP_INDC_EXT | GBP_EXT},
+ {0x001DC0, 0x001DFF, GBP_INDC_EXT | GBP_EXT},
+ {0x00200B, 0x00200B, GBP_CTRL},
+ {0x00200C, 0x00200C, GBP_EXT},
+ {0x00200D, 0x00200D, GBP_INDC_EXT | GBP_ZWJ},
+ {0x00200E, 0x00200F, GBP_CTRL},
+ {0x002028, 0x00202E, GBP_CTRL},
+ {0x00203C, 0x00203C, GBP_PIC},
+ {0x002049, 0x002049, GBP_PIC},
+ {0x002060, 0x00206F, GBP_CTRL},
+ {0x0020D0, 0x0020DC, GBP_INDC_EXT | GBP_EXT},
+ {0x0020DD, 0x0020E0, GBP_EXT},
+ {0x0020E1, 0x0020E1, GBP_INDC_EXT | GBP_EXT},
+ {0x0020E2, 0x0020E4, GBP_EXT},
+ {0x0020E5, 0x0020F0, GBP_INDC_EXT | GBP_EXT},
+ {0x002122, 0x002122, GBP_PIC},
+ {0x002139, 0x002139, GBP_PIC},
+ {0x002194, 0x002199, GBP_PIC},
+ {0x0021A9, 0x0021AA, GBP_PIC},
+ {0x00231A, 0x00231B, GBP_PIC},
+ {0x002328, 0x002328, GBP_PIC},
+ {0x002388, 0x002388, GBP_PIC},
+ {0x0023CF, 0x0023CF, GBP_PIC},
+ {0x0023E9, 0x0023F3, GBP_PIC},
+ {0x0023F8, 0x0023FA, GBP_PIC},
+ {0x0024C2, 0x0024C2, GBP_PIC},
+ {0x0025AA, 0x0025AB, GBP_PIC},
+ {0x0025B6, 0x0025B6, GBP_PIC},
+ {0x0025C0, 0x0025C0, GBP_PIC},
+ {0x0025FB, 0x0025FE, GBP_PIC},
+ {0x002600, 0x002605, GBP_PIC},
+ {0x002607, 0x002612, GBP_PIC},
+ {0x002614, 0x002685, GBP_PIC},
+ {0x002690, 0x002705, GBP_PIC},
+ {0x002708, 0x002712, GBP_PIC},
+ {0x002714, 0x002714, GBP_PIC},
+ {0x002716, 0x002716, GBP_PIC},
+ {0x00271D, 0x00271D, GBP_PIC},
+ {0x002721, 0x002721, GBP_PIC},
+ {0x002728, 0x002728, GBP_PIC},
+ {0x002733, 0x002734, GBP_PIC},
+ {0x002744, 0x002744, GBP_PIC},
+ {0x002747, 0x002747, GBP_PIC},
+ {0x00274C, 0x00274C, GBP_PIC},
+ {0x00274E, 0x00274E, GBP_PIC},
+ {0x002753, 0x002755, GBP_PIC},
+ {0x002757, 0x002757, GBP_PIC},
+ {0x002763, 0x002767, GBP_PIC},
+ {0x002795, 0x002797, GBP_PIC},
+ {0x0027A1, 0x0027A1, GBP_PIC},
+ {0x0027B0, 0x0027B0, GBP_PIC},
+ {0x0027BF, 0x0027BF, GBP_PIC},
+ {0x002934, 0x002935, GBP_PIC},
+ {0x002B05, 0x002B07, GBP_PIC},
+ {0x002B1B, 0x002B1C, GBP_PIC},
+ {0x002B50, 0x002B50, GBP_PIC},
+ {0x002B55, 0x002B55, GBP_PIC},
+ {0x002CEF, 0x002CF1, GBP_INDC_EXT | GBP_EXT},
+ {0x002D7F, 0x002D7F, GBP_INDC_EXT | GBP_EXT},
+ {0x002DE0, 0x002DFF, GBP_INDC_EXT | GBP_EXT},
+ {0x00302A, 0x00302F, GBP_INDC_EXT | GBP_EXT},
+ {0x003030, 0x003030, GBP_PIC},
+ {0x00303D, 0x00303D, GBP_PIC},
+ {0x003099, 0x00309A, GBP_INDC_EXT | GBP_EXT},
+ {0x003297, 0x003297, GBP_PIC},
+ {0x003299, 0x003299, GBP_PIC},
+ {0x00A66F, 0x00A66F, GBP_INDC_EXT | GBP_EXT},
+ {0x00A670, 0x00A672, GBP_EXT},
+ {0x00A674, 0x00A67D, GBP_INDC_EXT | GBP_EXT},
+ {0x00A69E, 0x00A69F, GBP_INDC_EXT | GBP_EXT},
+ {0x00A6F0, 0x00A6F1, GBP_INDC_EXT | GBP_EXT},
+ {0x00A802, 0x00A802, GBP_EXT},
+ {0x00A806, 0x00A806, GBP_EXT},
+ {0x00A80B, 0x00A80B, GBP_EXT},
+ {0x00A823, 0x00A824, GBP_SM},
+ {0x00A825, 0x00A826, GBP_EXT},
+ {0x00A827, 0x00A827, GBP_SM},
+ {0x00A82C, 0x00A82C, GBP_INDC_EXT | GBP_EXT},
+ {0x00A880, 0x00A881, GBP_SM},
+ {0x00A8B4, 0x00A8C3, GBP_SM},
+ {0x00A8C4, 0x00A8C5, GBP_EXT},
+ {0x00A8E0, 0x00A8F1, GBP_INDC_EXT | GBP_EXT},
+ {0x00A8FF, 0x00A8FF, GBP_EXT},
+ {0x00A926, 0x00A92A, GBP_EXT},
+ {0x00A92B, 0x00A92D, GBP_INDC_EXT | GBP_EXT},
+ {0x00A947, 0x00A951, GBP_EXT},
+ {0x00A952, 0x00A953, GBP_SM},
+ {0x00A960, 0x00A97C, GBP_HNGL_L},
+ {0x00A980, 0x00A982, GBP_EXT},
+ {0x00A983, 0x00A983, GBP_SM},
+ {0x00A9B3, 0x00A9B3, GBP_INDC_EXT | GBP_EXT},
+ {0x00A9B4, 0x00A9B5, GBP_SM},
+ {0x00A9B6, 0x00A9B9, GBP_EXT},
+ {0x00A9BA, 0x00A9BB, GBP_SM},
+ {0x00A9BC, 0x00A9BD, GBP_EXT},
+ {0x00A9BE, 0x00A9C0, GBP_SM},
+ {0x00A9E5, 0x00A9E5, GBP_EXT},
+ {0x00AA29, 0x00AA2E, GBP_EXT},
+ {0x00AA2F, 0x00AA30, GBP_SM},
+ {0x00AA31, 0x00AA32, GBP_EXT},
+ {0x00AA33, 0x00AA34, GBP_SM},
+ {0x00AA35, 0x00AA36, GBP_EXT},
+ {0x00AA43, 0x00AA43, GBP_EXT},
+ {0x00AA4C, 0x00AA4C, GBP_EXT},
+ {0x00AA4D, 0x00AA4D, GBP_SM},
+ {0x00AA7C, 0x00AA7C, GBP_EXT},
+ {0x00AAB0, 0x00AAB0, GBP_INDC_EXT | GBP_EXT},
+ {0x00AAB2, 0x00AAB4, GBP_INDC_EXT | GBP_EXT},
+ {0x00AAB7, 0x00AAB8, GBP_INDC_EXT | GBP_EXT},
+ {0x00AABE, 0x00AABF, GBP_INDC_EXT | GBP_EXT},
+ {0x00AAC1, 0x00AAC1, GBP_INDC_EXT | GBP_EXT},
+ {0x00AAEB, 0x00AAEB, GBP_SM},
+ {0x00AAEC, 0x00AAED, GBP_EXT},
+ {0x00AAEE, 0x00AAEF, GBP_SM},
+ {0x00AAF5, 0x00AAF5, GBP_SM},
+ {0x00AAF6, 0x00AAF6, GBP_INDC_EXT | GBP_EXT},
+ {0x00ABE3, 0x00ABE4, GBP_SM},
+ {0x00ABE5, 0x00ABE5, GBP_EXT},
+ {0x00ABE6, 0x00ABE7, GBP_SM},
+ {0x00ABE8, 0x00ABE8, GBP_EXT},
+ {0x00ABE9, 0x00ABEA, GBP_SM},
+ {0x00ABEC, 0x00ABEC, GBP_SM},
+ {0x00ABED, 0x00ABED, GBP_INDC_EXT | GBP_EXT},
+ {0x00AC00, 0x00AC00, GBP_HNGL_LV},
+ {0x00AC01, 0x00AC1B, GBP_HNGL_LVT},
+ {0x00AC1C, 0x00AC1C, GBP_HNGL_LV},
+ {0x00AC1D, 0x00AC37, GBP_HNGL_LVT},
+ {0x00AC38, 0x00AC38, GBP_HNGL_LV},
+ {0x00AC39, 0x00AC53, GBP_HNGL_LVT},
+ {0x00AC54, 0x00AC54, GBP_HNGL_LV},
+ {0x00AC55, 0x00AC6F, GBP_HNGL_LVT},
+ {0x00AC70, 0x00AC70, GBP_HNGL_LV},
+ {0x00AC71, 0x00AC8B, GBP_HNGL_LVT},
+ {0x00AC8C, 0x00AC8C, GBP_HNGL_LV},
+ {0x00AC8D, 0x00ACA7, GBP_HNGL_LVT},
+ {0x00ACA8, 0x00ACA8, GBP_HNGL_LV},
+ {0x00ACA9, 0x00ACC3, GBP_HNGL_LVT},
+ {0x00ACC4, 0x00ACC4, GBP_HNGL_LV},
+ {0x00ACC5, 0x00ACDF, GBP_HNGL_LVT},
+ {0x00ACE0, 0x00ACE0, GBP_HNGL_LV},
+ {0x00ACE1, 0x00ACFB, GBP_HNGL_LVT},
+ {0x00ACFC, 0x00ACFC, GBP_HNGL_LV},
+ {0x00ACFD, 0x00AD17, GBP_HNGL_LVT},
+ {0x00AD18, 0x00AD18, GBP_HNGL_LV},
+ {0x00AD19, 0x00AD33, GBP_HNGL_LVT},
+ {0x00AD34, 0x00AD34, GBP_HNGL_LV},
+ {0x00AD35, 0x00AD4F, GBP_HNGL_LVT},
+ {0x00AD50, 0x00AD50, GBP_HNGL_LV},
+ {0x00AD51, 0x00AD6B, GBP_HNGL_LVT},
+ {0x00AD6C, 0x00AD6C, GBP_HNGL_LV},
+ {0x00AD6D, 0x00AD87, GBP_HNGL_LVT},
+ {0x00AD88, 0x00AD88, GBP_HNGL_LV},
+ {0x00AD89, 0x00ADA3, GBP_HNGL_LVT},
+ {0x00ADA4, 0x00ADA4, GBP_HNGL_LV},
+ {0x00ADA5, 0x00ADBF, GBP_HNGL_LVT},
+ {0x00ADC0, 0x00ADC0, GBP_HNGL_LV},
+ {0x00ADC1, 0x00ADDB, GBP_HNGL_LVT},
+ {0x00ADDC, 0x00ADDC, GBP_HNGL_LV},
+ {0x00ADDD, 0x00ADF7, GBP_HNGL_LVT},
+ {0x00ADF8, 0x00ADF8, GBP_HNGL_LV},
+ {0x00ADF9, 0x00AE13, GBP_HNGL_LVT},
+ {0x00AE14, 0x00AE14, GBP_HNGL_LV},
+ {0x00AE15, 0x00AE2F, GBP_HNGL_LVT},
+ {0x00AE30, 0x00AE30, GBP_HNGL_LV},
+ {0x00AE31, 0x00AE4B, GBP_HNGL_LVT},
+ {0x00AE4C, 0x00AE4C, GBP_HNGL_LV},
+ {0x00AE4D, 0x00AE67, GBP_HNGL_LVT},
+ {0x00AE68, 0x00AE68, GBP_HNGL_LV},
+ {0x00AE69, 0x00AE83, GBP_HNGL_LVT},
+ {0x00AE84, 0x00AE84, GBP_HNGL_LV},
+ {0x00AE85, 0x00AE9F, GBP_HNGL_LVT},
+ {0x00AEA0, 0x00AEA0, GBP_HNGL_LV},
+ {0x00AEA1, 0x00AEBB, GBP_HNGL_LVT},
+ {0x00AEBC, 0x00AEBC, GBP_HNGL_LV},
+ {0x00AEBD, 0x00AED7, GBP_HNGL_LVT},
+ {0x00AED8, 0x00AED8, GBP_HNGL_LV},
+ {0x00AED9, 0x00AEF3, GBP_HNGL_LVT},
+ {0x00AEF4, 0x00AEF4, GBP_HNGL_LV},
+ {0x00AEF5, 0x00AF0F, GBP_HNGL_LVT},
+ {0x00AF10, 0x00AF10, GBP_HNGL_LV},
+ {0x00AF11, 0x00AF2B, GBP_HNGL_LVT},
+ {0x00AF2C, 0x00AF2C, GBP_HNGL_LV},
+ {0x00AF2D, 0x00AF47, GBP_HNGL_LVT},
+ {0x00AF48, 0x00AF48, GBP_HNGL_LV},
+ {0x00AF49, 0x00AF63, GBP_HNGL_LVT},
+ {0x00AF64, 0x00AF64, GBP_HNGL_LV},
+ {0x00AF65, 0x00AF7F, GBP_HNGL_LVT},
+ {0x00AF80, 0x00AF80, GBP_HNGL_LV},
+ {0x00AF81, 0x00AF9B, GBP_HNGL_LVT},
+ {0x00AF9C, 0x00AF9C, GBP_HNGL_LV},
+ {0x00AF9D, 0x00AFB7, GBP_HNGL_LVT},
+ {0x00AFB8, 0x00AFB8, GBP_HNGL_LV},
+ {0x00AFB9, 0x00AFD3, GBP_HNGL_LVT},
+ {0x00AFD4, 0x00AFD4, GBP_HNGL_LV},
+ {0x00AFD5, 0x00AFEF, GBP_HNGL_LVT},
+ {0x00AFF0, 0x00AFF0, GBP_HNGL_LV},
+ {0x00AFF1, 0x00B00B, GBP_HNGL_LVT},
+ {0x00B00C, 0x00B00C, GBP_HNGL_LV},
+ {0x00B00D, 0x00B027, GBP_HNGL_LVT},
+ {0x00B028, 0x00B028, GBP_HNGL_LV},
+ {0x00B029, 0x00B043, GBP_HNGL_LVT},
+ {0x00B044, 0x00B044, GBP_HNGL_LV},
+ {0x00B045, 0x00B05F, GBP_HNGL_LVT},
+ {0x00B060, 0x00B060, GBP_HNGL_LV},
+ {0x00B061, 0x00B07B, GBP_HNGL_LVT},
+ {0x00B07C, 0x00B07C, GBP_HNGL_LV},
+ {0x00B07D, 0x00B097, GBP_HNGL_LVT},
+ {0x00B098, 0x00B098, GBP_HNGL_LV},
+ {0x00B099, 0x00B0B3, GBP_HNGL_LVT},
+ {0x00B0B4, 0x00B0B4, GBP_HNGL_LV},
+ {0x00B0B5, 0x00B0CF, GBP_HNGL_LVT},
+ {0x00B0D0, 0x00B0D0, GBP_HNGL_LV},
+ {0x00B0D1, 0x00B0EB, GBP_HNGL_LVT},
+ {0x00B0EC, 0x00B0EC, GBP_HNGL_LV},
+ {0x00B0ED, 0x00B107, GBP_HNGL_LVT},
+ {0x00B108, 0x00B108, GBP_HNGL_LV},
+ {0x00B109, 0x00B123, GBP_HNGL_LVT},
+ {0x00B124, 0x00B124, GBP_HNGL_LV},
+ {0x00B125, 0x00B13F, GBP_HNGL_LVT},
+ {0x00B140, 0x00B140, GBP_HNGL_LV},
+ {0x00B141, 0x00B15B, GBP_HNGL_LVT},
+ {0x00B15C, 0x00B15C, GBP_HNGL_LV},
+ {0x00B15D, 0x00B177, GBP_HNGL_LVT},
+ {0x00B178, 0x00B178, GBP_HNGL_LV},
+ {0x00B179, 0x00B193, GBP_HNGL_LVT},
+ {0x00B194, 0x00B194, GBP_HNGL_LV},
+ {0x00B195, 0x00B1AF, GBP_HNGL_LVT},
+ {0x00B1B0, 0x00B1B0, GBP_HNGL_LV},
+ {0x00B1B1, 0x00B1CB, GBP_HNGL_LVT},
+ {0x00B1CC, 0x00B1CC, GBP_HNGL_LV},
+ {0x00B1CD, 0x00B1E7, GBP_HNGL_LVT},
+ {0x00B1E8, 0x00B1E8, GBP_HNGL_LV},
+ {0x00B1E9, 0x00B203, GBP_HNGL_LVT},
+ {0x00B204, 0x00B204, GBP_HNGL_LV},
+ {0x00B205, 0x00B21F, GBP_HNGL_LVT},
+ {0x00B220, 0x00B220, GBP_HNGL_LV},
+ {0x00B221, 0x00B23B, GBP_HNGL_LVT},
+ {0x00B23C, 0x00B23C, GBP_HNGL_LV},
+ {0x00B23D, 0x00B257, GBP_HNGL_LVT},
+ {0x00B258, 0x00B258, GBP_HNGL_LV},
+ {0x00B259, 0x00B273, GBP_HNGL_LVT},
+ {0x00B274, 0x00B274, GBP_HNGL_LV},
+ {0x00B275, 0x00B28F, GBP_HNGL_LVT},
+ {0x00B290, 0x00B290, GBP_HNGL_LV},
+ {0x00B291, 0x00B2AB, GBP_HNGL_LVT},
+ {0x00B2AC, 0x00B2AC, GBP_HNGL_LV},
+ {0x00B2AD, 0x00B2C7, GBP_HNGL_LVT},
+ {0x00B2C8, 0x00B2C8, GBP_HNGL_LV},
+ {0x00B2C9, 0x00B2E3, GBP_HNGL_LVT},
+ {0x00B2E4, 0x00B2E4, GBP_HNGL_LV},
+ {0x00B2E5, 0x00B2FF, GBP_HNGL_LVT},
+ {0x00B300, 0x00B300, GBP_HNGL_LV},
+ {0x00B301, 0x00B31B, GBP_HNGL_LVT},
+ {0x00B31C, 0x00B31C, GBP_HNGL_LV},
+ {0x00B31D, 0x00B337, GBP_HNGL_LVT},
+ {0x00B338, 0x00B338, GBP_HNGL_LV},
+ {0x00B339, 0x00B353, GBP_HNGL_LVT},
+ {0x00B354, 0x00B354, GBP_HNGL_LV},
+ {0x00B355, 0x00B36F, GBP_HNGL_LVT},
+ {0x00B370, 0x00B370, GBP_HNGL_LV},
+ {0x00B371, 0x00B38B, GBP_HNGL_LVT},
+ {0x00B38C, 0x00B38C, GBP_HNGL_LV},
+ {0x00B38D, 0x00B3A7, GBP_HNGL_LVT},
+ {0x00B3A8, 0x00B3A8, GBP_HNGL_LV},
+ {0x00B3A9, 0x00B3C3, GBP_HNGL_LVT},
+ {0x00B3C4, 0x00B3C4, GBP_HNGL_LV},
+ {0x00B3C5, 0x00B3DF, GBP_HNGL_LVT},
+ {0x00B3E0, 0x00B3E0, GBP_HNGL_LV},
+ {0x00B3E1, 0x00B3FB, GBP_HNGL_LVT},
+ {0x00B3FC, 0x00B3FC, GBP_HNGL_LV},
+ {0x00B3FD, 0x00B417, GBP_HNGL_LVT},
+ {0x00B418, 0x00B418, GBP_HNGL_LV},
+ {0x00B419, 0x00B433, GBP_HNGL_LVT},
+ {0x00B434, 0x00B434, GBP_HNGL_LV},
+ {0x00B435, 0x00B44F, GBP_HNGL_LVT},
+ {0x00B450, 0x00B450, GBP_HNGL_LV},
+ {0x00B451, 0x00B46B, GBP_HNGL_LVT},
+ {0x00B46C, 0x00B46C, GBP_HNGL_LV},
+ {0x00B46D, 0x00B487, GBP_HNGL_LVT},
+ {0x00B488, 0x00B488, GBP_HNGL_LV},
+ {0x00B489, 0x00B4A3, GBP_HNGL_LVT},
+ {0x00B4A4, 0x00B4A4, GBP_HNGL_LV},
+ {0x00B4A5, 0x00B4BF, GBP_HNGL_LVT},
+ {0x00B4C0, 0x00B4C0, GBP_HNGL_LV},
+ {0x00B4C1, 0x00B4DB, GBP_HNGL_LVT},
+ {0x00B4DC, 0x00B4DC, GBP_HNGL_LV},
+ {0x00B4DD, 0x00B4F7, GBP_HNGL_LVT},
+ {0x00B4F8, 0x00B4F8, GBP_HNGL_LV},
+ {0x00B4F9, 0x00B513, GBP_HNGL_LVT},
+ {0x00B514, 0x00B514, GBP_HNGL_LV},
+ {0x00B515, 0x00B52F, GBP_HNGL_LVT},
+ {0x00B530, 0x00B530, GBP_HNGL_LV},
+ {0x00B531, 0x00B54B, GBP_HNGL_LVT},
+ {0x00B54C, 0x00B54C, GBP_HNGL_LV},
+ {0x00B54D, 0x00B567, GBP_HNGL_LVT},
+ {0x00B568, 0x00B568, GBP_HNGL_LV},
+ {0x00B569, 0x00B583, GBP_HNGL_LVT},
+ {0x00B584, 0x00B584, GBP_HNGL_LV},
+ {0x00B585, 0x00B59F, GBP_HNGL_LVT},
+ {0x00B5A0, 0x00B5A0, GBP_HNGL_LV},
+ {0x00B5A1, 0x00B5BB, GBP_HNGL_LVT},
+ {0x00B5BC, 0x00B5BC, GBP_HNGL_LV},
+ {0x00B5BD, 0x00B5D7, GBP_HNGL_LVT},
+ {0x00B5D8, 0x00B5D8, GBP_HNGL_LV},
+ {0x00B5D9, 0x00B5F3, GBP_HNGL_LVT},
+ {0x00B5F4, 0x00B5F4, GBP_HNGL_LV},
+ {0x00B5F5, 0x00B60F, GBP_HNGL_LVT},
+ {0x00B610, 0x00B610, GBP_HNGL_LV},
+ {0x00B611, 0x00B62B, GBP_HNGL_LVT},
+ {0x00B62C, 0x00B62C, GBP_HNGL_LV},
+ {0x00B62D, 0x00B647, GBP_HNGL_LVT},
+ {0x00B648, 0x00B648, GBP_HNGL_LV},
+ {0x00B649, 0x00B663, GBP_HNGL_LVT},
+ {0x00B664, 0x00B664, GBP_HNGL_LV},
+ {0x00B665, 0x00B67F, GBP_HNGL_LVT},
+ {0x00B680, 0x00B680, GBP_HNGL_LV},
+ {0x00B681, 0x00B69B, GBP_HNGL_LVT},
+ {0x00B69C, 0x00B69C, GBP_HNGL_LV},
+ {0x00B69D, 0x00B6B7, GBP_HNGL_LVT},
+ {0x00B6B8, 0x00B6B8, GBP_HNGL_LV},
+ {0x00B6B9, 0x00B6D3, GBP_HNGL_LVT},
+ {0x00B6D4, 0x00B6D4, GBP_HNGL_LV},
+ {0x00B6D5, 0x00B6EF, GBP_HNGL_LVT},
+ {0x00B6F0, 0x00B6F0, GBP_HNGL_LV},
+ {0x00B6F1, 0x00B70B, GBP_HNGL_LVT},
+ {0x00B70C, 0x00B70C, GBP_HNGL_LV},
+ {0x00B70D, 0x00B727, GBP_HNGL_LVT},
+ {0x00B728, 0x00B728, GBP_HNGL_LV},
+ {0x00B729, 0x00B743, GBP_HNGL_LVT},
+ {0x00B744, 0x00B744, GBP_HNGL_LV},
+ {0x00B745, 0x00B75F, GBP_HNGL_LVT},
+ {0x00B760, 0x00B760, GBP_HNGL_LV},
+ {0x00B761, 0x00B77B, GBP_HNGL_LVT},
+ {0x00B77C, 0x00B77C, GBP_HNGL_LV},
+ {0x00B77D, 0x00B797, GBP_HNGL_LVT},
+ {0x00B798, 0x00B798, GBP_HNGL_LV},
+ {0x00B799, 0x00B7B3, GBP_HNGL_LVT},
+ {0x00B7B4, 0x00B7B4, GBP_HNGL_LV},
+ {0x00B7B5, 0x00B7CF, GBP_HNGL_LVT},
+ {0x00B7D0, 0x00B7D0, GBP_HNGL_LV},
+ {0x00B7D1, 0x00B7EB, GBP_HNGL_LVT},
+ {0x00B7EC, 0x00B7EC, GBP_HNGL_LV},
+ {0x00B7ED, 0x00B807, GBP_HNGL_LVT},
+ {0x00B808, 0x00B808, GBP_HNGL_LV},
+ {0x00B809, 0x00B823, GBP_HNGL_LVT},
+ {0x00B824, 0x00B824, GBP_HNGL_LV},
+ {0x00B825, 0x00B83F, GBP_HNGL_LVT},
+ {0x00B840, 0x00B840, GBP_HNGL_LV},
+ {0x00B841, 0x00B85B, GBP_HNGL_LVT},
+ {0x00B85C, 0x00B85C, GBP_HNGL_LV},
+ {0x00B85D, 0x00B877, GBP_HNGL_LVT},
+ {0x00B878, 0x00B878, GBP_HNGL_LV},
+ {0x00B879, 0x00B893, GBP_HNGL_LVT},
+ {0x00B894, 0x00B894, GBP_HNGL_LV},
+ {0x00B895, 0x00B8AF, GBP_HNGL_LVT},
+ {0x00B8B0, 0x00B8B0, GBP_HNGL_LV},
+ {0x00B8B1, 0x00B8CB, GBP_HNGL_LVT},
+ {0x00B8CC, 0x00B8CC, GBP_HNGL_LV},
+ {0x00B8CD, 0x00B8E7, GBP_HNGL_LVT},
+ {0x00B8E8, 0x00B8E8, GBP_HNGL_LV},
+ {0x00B8E9, 0x00B903, GBP_HNGL_LVT},
+ {0x00B904, 0x00B904, GBP_HNGL_LV},
+ {0x00B905, 0x00B91F, GBP_HNGL_LVT},
+ {0x00B920, 0x00B920, GBP_HNGL_LV},
+ {0x00B921, 0x00B93B, GBP_HNGL_LVT},
+ {0x00B93C, 0x00B93C, GBP_HNGL_LV},
+ {0x00B93D, 0x00B957, GBP_HNGL_LVT},
+ {0x00B958, 0x00B958, GBP_HNGL_LV},
+ {0x00B959, 0x00B973, GBP_HNGL_LVT},
+ {0x00B974, 0x00B974, GBP_HNGL_LV},
+ {0x00B975, 0x00B98F, GBP_HNGL_LVT},
+ {0x00B990, 0x00B990, GBP_HNGL_LV},
+ {0x00B991, 0x00B9AB, GBP_HNGL_LVT},
+ {0x00B9AC, 0x00B9AC, GBP_HNGL_LV},
+ {0x00B9AD, 0x00B9C7, GBP_HNGL_LVT},
+ {0x00B9C8, 0x00B9C8, GBP_HNGL_LV},
+ {0x00B9C9, 0x00B9E3, GBP_HNGL_LVT},
+ {0x00B9E4, 0x00B9E4, GBP_HNGL_LV},
+ {0x00B9E5, 0x00B9FF, GBP_HNGL_LVT},
+ {0x00BA00, 0x00BA00, GBP_HNGL_LV},
+ {0x00BA01, 0x00BA1B, GBP_HNGL_LVT},
+ {0x00BA1C, 0x00BA1C, GBP_HNGL_LV},
+ {0x00BA1D, 0x00BA37, GBP_HNGL_LVT},
+ {0x00BA38, 0x00BA38, GBP_HNGL_LV},
+ {0x00BA39, 0x00BA53, GBP_HNGL_LVT},
+ {0x00BA54, 0x00BA54, GBP_HNGL_LV},
+ {0x00BA55, 0x00BA6F, GBP_HNGL_LVT},
+ {0x00BA70, 0x00BA70, GBP_HNGL_LV},
+ {0x00BA71, 0x00BA8B, GBP_HNGL_LVT},
+ {0x00BA8C, 0x00BA8C, GBP_HNGL_LV},
+ {0x00BA8D, 0x00BAA7, GBP_HNGL_LVT},
+ {0x00BAA8, 0x00BAA8, GBP_HNGL_LV},
+ {0x00BAA9, 0x00BAC3, GBP_HNGL_LVT},
+ {0x00BAC4, 0x00BAC4, GBP_HNGL_LV},
+ {0x00BAC5, 0x00BADF, GBP_HNGL_LVT},
+ {0x00BAE0, 0x00BAE0, GBP_HNGL_LV},
+ {0x00BAE1, 0x00BAFB, GBP_HNGL_LVT},
+ {0x00BAFC, 0x00BAFC, GBP_HNGL_LV},
+ {0x00BAFD, 0x00BB17, GBP_HNGL_LVT},
+ {0x00BB18, 0x00BB18, GBP_HNGL_LV},
+ {0x00BB19, 0x00BB33, GBP_HNGL_LVT},
+ {0x00BB34, 0x00BB34, GBP_HNGL_LV},
+ {0x00BB35, 0x00BB4F, GBP_HNGL_LVT},
+ {0x00BB50, 0x00BB50, GBP_HNGL_LV},
+ {0x00BB51, 0x00BB6B, GBP_HNGL_LVT},
+ {0x00BB6C, 0x00BB6C, GBP_HNGL_LV},
+ {0x00BB6D, 0x00BB87, GBP_HNGL_LVT},
+ {0x00BB88, 0x00BB88, GBP_HNGL_LV},
+ {0x00BB89, 0x00BBA3, GBP_HNGL_LVT},
+ {0x00BBA4, 0x00BBA4, GBP_HNGL_LV},
+ {0x00BBA5, 0x00BBBF, GBP_HNGL_LVT},
+ {0x00BBC0, 0x00BBC0, GBP_HNGL_LV},
+ {0x00BBC1, 0x00BBDB, GBP_HNGL_LVT},
+ {0x00BBDC, 0x00BBDC, GBP_HNGL_LV},
+ {0x00BBDD, 0x00BBF7, GBP_HNGL_LVT},
+ {0x00BBF8, 0x00BBF8, GBP_HNGL_LV},
+ {0x00BBF9, 0x00BC13, GBP_HNGL_LVT},
+ {0x00BC14, 0x00BC14, GBP_HNGL_LV},
+ {0x00BC15, 0x00BC2F, GBP_HNGL_LVT},
+ {0x00BC30, 0x00BC30, GBP_HNGL_LV},
+ {0x00BC31, 0x00BC4B, GBP_HNGL_LVT},
+ {0x00BC4C, 0x00BC4C, GBP_HNGL_LV},
+ {0x00BC4D, 0x00BC67, GBP_HNGL_LVT},
+ {0x00BC68, 0x00BC68, GBP_HNGL_LV},
+ {0x00BC69, 0x00BC83, GBP_HNGL_LVT},
+ {0x00BC84, 0x00BC84, GBP_HNGL_LV},
+ {0x00BC85, 0x00BC9F, GBP_HNGL_LVT},
+ {0x00BCA0, 0x00BCA0, GBP_HNGL_LV},
+ {0x00BCA1, 0x00BCBB, GBP_HNGL_LVT},
+ {0x00BCBC, 0x00BCBC, GBP_HNGL_LV},
+ {0x00BCBD, 0x00BCD7, GBP_HNGL_LVT},
+ {0x00BCD8, 0x00BCD8, GBP_HNGL_LV},
+ {0x00BCD9, 0x00BCF3, GBP_HNGL_LVT},
+ {0x00BCF4, 0x00BCF4, GBP_HNGL_LV},
+ {0x00BCF5, 0x00BD0F, GBP_HNGL_LVT},
+ {0x00BD10, 0x00BD10, GBP_HNGL_LV},
+ {0x00BD11, 0x00BD2B, GBP_HNGL_LVT},
+ {0x00BD2C, 0x00BD2C, GBP_HNGL_LV},
+ {0x00BD2D, 0x00BD47, GBP_HNGL_LVT},
+ {0x00BD48, 0x00BD48, GBP_HNGL_LV},
+ {0x00BD49, 0x00BD63, GBP_HNGL_LVT},
+ {0x00BD64, 0x00BD64, GBP_HNGL_LV},
+ {0x00BD65, 0x00BD7F, GBP_HNGL_LVT},
+ {0x00BD80, 0x00BD80, GBP_HNGL_LV},
+ {0x00BD81, 0x00BD9B, GBP_HNGL_LVT},
+ {0x00BD9C, 0x00BD9C, GBP_HNGL_LV},
+ {0x00BD9D, 0x00BDB7, GBP_HNGL_LVT},
+ {0x00BDB8, 0x00BDB8, GBP_HNGL_LV},
+ {0x00BDB9, 0x00BDD3, GBP_HNGL_LVT},
+ {0x00BDD4, 0x00BDD4, GBP_HNGL_LV},
+ {0x00BDD5, 0x00BDEF, GBP_HNGL_LVT},
+ {0x00BDF0, 0x00BDF0, GBP_HNGL_LV},
+ {0x00BDF1, 0x00BE0B, GBP_HNGL_LVT},
+ {0x00BE0C, 0x00BE0C, GBP_HNGL_LV},
+ {0x00BE0D, 0x00BE27, GBP_HNGL_LVT},
+ {0x00BE28, 0x00BE28, GBP_HNGL_LV},
+ {0x00BE29, 0x00BE43, GBP_HNGL_LVT},
+ {0x00BE44, 0x00BE44, GBP_HNGL_LV},
+ {0x00BE45, 0x00BE5F, GBP_HNGL_LVT},
+ {0x00BE60, 0x00BE60, GBP_HNGL_LV},
+ {0x00BE61, 0x00BE7B, GBP_HNGL_LVT},
+ {0x00BE7C, 0x00BE7C, GBP_HNGL_LV},
+ {0x00BE7D, 0x00BE97, GBP_HNGL_LVT},
+ {0x00BE98, 0x00BE98, GBP_HNGL_LV},
+ {0x00BE99, 0x00BEB3, GBP_HNGL_LVT},
+ {0x00BEB4, 0x00BEB4, GBP_HNGL_LV},
+ {0x00BEB5, 0x00BECF, GBP_HNGL_LVT},
+ {0x00BED0, 0x00BED0, GBP_HNGL_LV},
+ {0x00BED1, 0x00BEEB, GBP_HNGL_LVT},
+ {0x00BEEC, 0x00BEEC, GBP_HNGL_LV},
+ {0x00BEED, 0x00BF07, GBP_HNGL_LVT},
+ {0x00BF08, 0x00BF08, GBP_HNGL_LV},
+ {0x00BF09, 0x00BF23, GBP_HNGL_LVT},
+ {0x00BF24, 0x00BF24, GBP_HNGL_LV},
+ {0x00BF25, 0x00BF3F, GBP_HNGL_LVT},
+ {0x00BF40, 0x00BF40, GBP_HNGL_LV},
+ {0x00BF41, 0x00BF5B, GBP_HNGL_LVT},
+ {0x00BF5C, 0x00BF5C, GBP_HNGL_LV},
+ {0x00BF5D, 0x00BF77, GBP_HNGL_LVT},
+ {0x00BF78, 0x00BF78, GBP_HNGL_LV},
+ {0x00BF79, 0x00BF93, GBP_HNGL_LVT},
+ {0x00BF94, 0x00BF94, GBP_HNGL_LV},
+ {0x00BF95, 0x00BFAF, GBP_HNGL_LVT},
+ {0x00BFB0, 0x00BFB0, GBP_HNGL_LV},
+ {0x00BFB1, 0x00BFCB, GBP_HNGL_LVT},
+ {0x00BFCC, 0x00BFCC, GBP_HNGL_LV},
+ {0x00BFCD, 0x00BFE7, GBP_HNGL_LVT},
+ {0x00BFE8, 0x00BFE8, GBP_HNGL_LV},
+ {0x00BFE9, 0x00C003, GBP_HNGL_LVT},
+ {0x00C004, 0x00C004, GBP_HNGL_LV},
+ {0x00C005, 0x00C01F, GBP_HNGL_LVT},
+ {0x00C020, 0x00C020, GBP_HNGL_LV},
+ {0x00C021, 0x00C03B, GBP_HNGL_LVT},
+ {0x00C03C, 0x00C03C, GBP_HNGL_LV},
+ {0x00C03D, 0x00C057, GBP_HNGL_LVT},
+ {0x00C058, 0x00C058, GBP_HNGL_LV},
+ {0x00C059, 0x00C073, GBP_HNGL_LVT},
+ {0x00C074, 0x00C074, GBP_HNGL_LV},
+ {0x00C075, 0x00C08F, GBP_HNGL_LVT},
+ {0x00C090, 0x00C090, GBP_HNGL_LV},
+ {0x00C091, 0x00C0AB, GBP_HNGL_LVT},
+ {0x00C0AC, 0x00C0AC, GBP_HNGL_LV},
+ {0x00C0AD, 0x00C0C7, GBP_HNGL_LVT},
+ {0x00C0C8, 0x00C0C8, GBP_HNGL_LV},
+ {0x00C0C9, 0x00C0E3, GBP_HNGL_LVT},
+ {0x00C0E4, 0x00C0E4, GBP_HNGL_LV},
+ {0x00C0E5, 0x00C0FF, GBP_HNGL_LVT},
+ {0x00C100, 0x00C100, GBP_HNGL_LV},
+ {0x00C101, 0x00C11B, GBP_HNGL_LVT},
+ {0x00C11C, 0x00C11C, GBP_HNGL_LV},
+ {0x00C11D, 0x00C137, GBP_HNGL_LVT},
+ {0x00C138, 0x00C138, GBP_HNGL_LV},
+ {0x00C139, 0x00C153, GBP_HNGL_LVT},
+ {0x00C154, 0x00C154, GBP_HNGL_LV},
+ {0x00C155, 0x00C16F, GBP_HNGL_LVT},
+ {0x00C170, 0x00C170, GBP_HNGL_LV},
+ {0x00C171, 0x00C18B, GBP_HNGL_LVT},
+ {0x00C18C, 0x00C18C, GBP_HNGL_LV},
+ {0x00C18D, 0x00C1A7, GBP_HNGL_LVT},
+ {0x00C1A8, 0x00C1A8, GBP_HNGL_LV},
+ {0x00C1A9, 0x00C1C3, GBP_HNGL_LVT},
+ {0x00C1C4, 0x00C1C4, GBP_HNGL_LV},
+ {0x00C1C5, 0x00C1DF, GBP_HNGL_LVT},
+ {0x00C1E0, 0x00C1E0, GBP_HNGL_LV},
+ {0x00C1E1, 0x00C1FB, GBP_HNGL_LVT},
+ {0x00C1FC, 0x00C1FC, GBP_HNGL_LV},
+ {0x00C1FD, 0x00C217, GBP_HNGL_LVT},
+ {0x00C218, 0x00C218, GBP_HNGL_LV},
+ {0x00C219, 0x00C233, GBP_HNGL_LVT},
+ {0x00C234, 0x00C234, GBP_HNGL_LV},
+ {0x00C235, 0x00C24F, GBP_HNGL_LVT},
+ {0x00C250, 0x00C250, GBP_HNGL_LV},
+ {0x00C251, 0x00C26B, GBP_HNGL_LVT},
+ {0x00C26C, 0x00C26C, GBP_HNGL_LV},
+ {0x00C26D, 0x00C287, GBP_HNGL_LVT},
+ {0x00C288, 0x00C288, GBP_HNGL_LV},
+ {0x00C289, 0x00C2A3, GBP_HNGL_LVT},
+ {0x00C2A4, 0x00C2A4, GBP_HNGL_LV},
+ {0x00C2A5, 0x00C2BF, GBP_HNGL_LVT},
+ {0x00C2C0, 0x00C2C0, GBP_HNGL_LV},
+ {0x00C2C1, 0x00C2DB, GBP_HNGL_LVT},
+ {0x00C2DC, 0x00C2DC, GBP_HNGL_LV},
+ {0x00C2DD, 0x00C2F7, GBP_HNGL_LVT},
+ {0x00C2F8, 0x00C2F8, GBP_HNGL_LV},
+ {0x00C2F9, 0x00C313, GBP_HNGL_LVT},
+ {0x00C314, 0x00C314, GBP_HNGL_LV},
+ {0x00C315, 0x00C32F, GBP_HNGL_LVT},
+ {0x00C330, 0x00C330, GBP_HNGL_LV},
+ {0x00C331, 0x00C34B, GBP_HNGL_LVT},
+ {0x00C34C, 0x00C34C, GBP_HNGL_LV},
+ {0x00C34D, 0x00C367, GBP_HNGL_LVT},
+ {0x00C368, 0x00C368, GBP_HNGL_LV},
+ {0x00C369, 0x00C383, GBP_HNGL_LVT},
+ {0x00C384, 0x00C384, GBP_HNGL_LV},
+ {0x00C385, 0x00C39F, GBP_HNGL_LVT},
+ {0x00C3A0, 0x00C3A0, GBP_HNGL_LV},
+ {0x00C3A1, 0x00C3BB, GBP_HNGL_LVT},
+ {0x00C3BC, 0x00C3BC, GBP_HNGL_LV},
+ {0x00C3BD, 0x00C3D7, GBP_HNGL_LVT},
+ {0x00C3D8, 0x00C3D8, GBP_HNGL_LV},
+ {0x00C3D9, 0x00C3F3, GBP_HNGL_LVT},
+ {0x00C3F4, 0x00C3F4, GBP_HNGL_LV},
+ {0x00C3F5, 0x00C40F, GBP_HNGL_LVT},
+ {0x00C410, 0x00C410, GBP_HNGL_LV},
+ {0x00C411, 0x00C42B, GBP_HNGL_LVT},
+ {0x00C42C, 0x00C42C, GBP_HNGL_LV},
+ {0x00C42D, 0x00C447, GBP_HNGL_LVT},
+ {0x00C448, 0x00C448, GBP_HNGL_LV},
+ {0x00C449, 0x00C463, GBP_HNGL_LVT},
+ {0x00C464, 0x00C464, GBP_HNGL_LV},
+ {0x00C465, 0x00C47F, GBP_HNGL_LVT},
+ {0x00C480, 0x00C480, GBP_HNGL_LV},
+ {0x00C481, 0x00C49B, GBP_HNGL_LVT},
+ {0x00C49C, 0x00C49C, GBP_HNGL_LV},
+ {0x00C49D, 0x00C4B7, GBP_HNGL_LVT},
+ {0x00C4B8, 0x00C4B8, GBP_HNGL_LV},
+ {0x00C4B9, 0x00C4D3, GBP_HNGL_LVT},
+ {0x00C4D4, 0x00C4D4, GBP_HNGL_LV},
+ {0x00C4D5, 0x00C4EF, GBP_HNGL_LVT},
+ {0x00C4F0, 0x00C4F0, GBP_HNGL_LV},
+ {0x00C4F1, 0x00C50B, GBP_HNGL_LVT},
+ {0x00C50C, 0x00C50C, GBP_HNGL_LV},
+ {0x00C50D, 0x00C527, GBP_HNGL_LVT},
+ {0x00C528, 0x00C528, GBP_HNGL_LV},
+ {0x00C529, 0x00C543, GBP_HNGL_LVT},
+ {0x00C544, 0x00C544, GBP_HNGL_LV},
+ {0x00C545, 0x00C55F, GBP_HNGL_LVT},
+ {0x00C560, 0x00C560, GBP_HNGL_LV},
+ {0x00C561, 0x00C57B, GBP_HNGL_LVT},
+ {0x00C57C, 0x00C57C, GBP_HNGL_LV},
+ {0x00C57D, 0x00C597, GBP_HNGL_LVT},
+ {0x00C598, 0x00C598, GBP_HNGL_LV},
+ {0x00C599, 0x00C5B3, GBP_HNGL_LVT},
+ {0x00C5B4, 0x00C5B4, GBP_HNGL_LV},
+ {0x00C5B5, 0x00C5CF, GBP_HNGL_LVT},
+ {0x00C5D0, 0x00C5D0, GBP_HNGL_LV},
+ {0x00C5D1, 0x00C5EB, GBP_HNGL_LVT},
+ {0x00C5EC, 0x00C5EC, GBP_HNGL_LV},
+ {0x00C5ED, 0x00C607, GBP_HNGL_LVT},
+ {0x00C608, 0x00C608, GBP_HNGL_LV},
+ {0x00C609, 0x00C623, GBP_HNGL_LVT},
+ {0x00C624, 0x00C624, GBP_HNGL_LV},
+ {0x00C625, 0x00C63F, GBP_HNGL_LVT},
+ {0x00C640, 0x00C640, GBP_HNGL_LV},
+ {0x00C641, 0x00C65B, GBP_HNGL_LVT},
+ {0x00C65C, 0x00C65C, GBP_HNGL_LV},
+ {0x00C65D, 0x00C677, GBP_HNGL_LVT},
+ {0x00C678, 0x00C678, GBP_HNGL_LV},
+ {0x00C679, 0x00C693, GBP_HNGL_LVT},
+ {0x00C694, 0x00C694, GBP_HNGL_LV},
+ {0x00C695, 0x00C6AF, GBP_HNGL_LVT},
+ {0x00C6B0, 0x00C6B0, GBP_HNGL_LV},
+ {0x00C6B1, 0x00C6CB, GBP_HNGL_LVT},
+ {0x00C6CC, 0x00C6CC, GBP_HNGL_LV},
+ {0x00C6CD, 0x00C6E7, GBP_HNGL_LVT},
+ {0x00C6E8, 0x00C6E8, GBP_HNGL_LV},
+ {0x00C6E9, 0x00C703, GBP_HNGL_LVT},
+ {0x00C704, 0x00C704, GBP_HNGL_LV},
+ {0x00C705, 0x00C71F, GBP_HNGL_LVT},
+ {0x00C720, 0x00C720, GBP_HNGL_LV},
+ {0x00C721, 0x00C73B, GBP_HNGL_LVT},
+ {0x00C73C, 0x00C73C, GBP_HNGL_LV},
+ {0x00C73D, 0x00C757, GBP_HNGL_LVT},
+ {0x00C758, 0x00C758, GBP_HNGL_LV},
+ {0x00C759, 0x00C773, GBP_HNGL_LVT},
+ {0x00C774, 0x00C774, GBP_HNGL_LV},
+ {0x00C775, 0x00C78F, GBP_HNGL_LVT},
+ {0x00C790, 0x00C790, GBP_HNGL_LV},
+ {0x00C791, 0x00C7AB, GBP_HNGL_LVT},
+ {0x00C7AC, 0x00C7AC, GBP_HNGL_LV},
+ {0x00C7AD, 0x00C7C7, GBP_HNGL_LVT},
+ {0x00C7C8, 0x00C7C8, GBP_HNGL_LV},
+ {0x00C7C9, 0x00C7E3, GBP_HNGL_LVT},
+ {0x00C7E4, 0x00C7E4, GBP_HNGL_LV},
+ {0x00C7E5, 0x00C7FF, GBP_HNGL_LVT},
+ {0x00C800, 0x00C800, GBP_HNGL_LV},
+ {0x00C801, 0x00C81B, GBP_HNGL_LVT},
+ {0x00C81C, 0x00C81C, GBP_HNGL_LV},
+ {0x00C81D, 0x00C837, GBP_HNGL_LVT},
+ {0x00C838, 0x00C838, GBP_HNGL_LV},
+ {0x00C839, 0x00C853, GBP_HNGL_LVT},
+ {0x00C854, 0x00C854, GBP_HNGL_LV},
+ {0x00C855, 0x00C86F, GBP_HNGL_LVT},
+ {0x00C870, 0x00C870, GBP_HNGL_LV},
+ {0x00C871, 0x00C88B, GBP_HNGL_LVT},
+ {0x00C88C, 0x00C88C, GBP_HNGL_LV},
+ {0x00C88D, 0x00C8A7, GBP_HNGL_LVT},
+ {0x00C8A8, 0x00C8A8, GBP_HNGL_LV},
+ {0x00C8A9, 0x00C8C3, GBP_HNGL_LVT},
+ {0x00C8C4, 0x00C8C4, GBP_HNGL_LV},
+ {0x00C8C5, 0x00C8DF, GBP_HNGL_LVT},
+ {0x00C8E0, 0x00C8E0, GBP_HNGL_LV},
+ {0x00C8E1, 0x00C8FB, GBP_HNGL_LVT},
+ {0x00C8FC, 0x00C8FC, GBP_HNGL_LV},
+ {0x00C8FD, 0x00C917, GBP_HNGL_LVT},
+ {0x00C918, 0x00C918, GBP_HNGL_LV},
+ {0x00C919, 0x00C933, GBP_HNGL_LVT},
+ {0x00C934, 0x00C934, GBP_HNGL_LV},
+ {0x00C935, 0x00C94F, GBP_HNGL_LVT},
+ {0x00C950, 0x00C950, GBP_HNGL_LV},
+ {0x00C951, 0x00C96B, GBP_HNGL_LVT},
+ {0x00C96C, 0x00C96C, GBP_HNGL_LV},
+ {0x00C96D, 0x00C987, GBP_HNGL_LVT},
+ {0x00C988, 0x00C988, GBP_HNGL_LV},
+ {0x00C989, 0x00C9A3, GBP_HNGL_LVT},
+ {0x00C9A4, 0x00C9A4, GBP_HNGL_LV},
+ {0x00C9A5, 0x00C9BF, GBP_HNGL_LVT},
+ {0x00C9C0, 0x00C9C0, GBP_HNGL_LV},
+ {0x00C9C1, 0x00C9DB, GBP_HNGL_LVT},
+ {0x00C9DC, 0x00C9DC, GBP_HNGL_LV},
+ {0x00C9DD, 0x00C9F7, GBP_HNGL_LVT},
+ {0x00C9F8, 0x00C9F8, GBP_HNGL_LV},
+ {0x00C9F9, 0x00CA13, GBP_HNGL_LVT},
+ {0x00CA14, 0x00CA14, GBP_HNGL_LV},
+ {0x00CA15, 0x00CA2F, GBP_HNGL_LVT},
+ {0x00CA30, 0x00CA30, GBP_HNGL_LV},
+ {0x00CA31, 0x00CA4B, GBP_HNGL_LVT},
+ {0x00CA4C, 0x00CA4C, GBP_HNGL_LV},
+ {0x00CA4D, 0x00CA67, GBP_HNGL_LVT},
+ {0x00CA68, 0x00CA68, GBP_HNGL_LV},
+ {0x00CA69, 0x00CA83, GBP_HNGL_LVT},
+ {0x00CA84, 0x00CA84, GBP_HNGL_LV},
+ {0x00CA85, 0x00CA9F, GBP_HNGL_LVT},
+ {0x00CAA0, 0x00CAA0, GBP_HNGL_LV},
+ {0x00CAA1, 0x00CABB, GBP_HNGL_LVT},
+ {0x00CABC, 0x00CABC, GBP_HNGL_LV},
+ {0x00CABD, 0x00CAD7, GBP_HNGL_LVT},
+ {0x00CAD8, 0x00CAD8, GBP_HNGL_LV},
+ {0x00CAD9, 0x00CAF3, GBP_HNGL_LVT},
+ {0x00CAF4, 0x00CAF4, GBP_HNGL_LV},
+ {0x00CAF5, 0x00CB0F, GBP_HNGL_LVT},
+ {0x00CB10, 0x00CB10, GBP_HNGL_LV},
+ {0x00CB11, 0x00CB2B, GBP_HNGL_LVT},
+ {0x00CB2C, 0x00CB2C, GBP_HNGL_LV},
+ {0x00CB2D, 0x00CB47, GBP_HNGL_LVT},
+ {0x00CB48, 0x00CB48, GBP_HNGL_LV},
+ {0x00CB49, 0x00CB63, GBP_HNGL_LVT},
+ {0x00CB64, 0x00CB64, GBP_HNGL_LV},
+ {0x00CB65, 0x00CB7F, GBP_HNGL_LVT},
+ {0x00CB80, 0x00CB80, GBP_HNGL_LV},
+ {0x00CB81, 0x00CB9B, GBP_HNGL_LVT},
+ {0x00CB9C, 0x00CB9C, GBP_HNGL_LV},
+ {0x00CB9D, 0x00CBB7, GBP_HNGL_LVT},
+ {0x00CBB8, 0x00CBB8, GBP_HNGL_LV},
+ {0x00CBB9, 0x00CBD3, GBP_HNGL_LVT},
+ {0x00CBD4, 0x00CBD4, GBP_HNGL_LV},
+ {0x00CBD5, 0x00CBEF, GBP_HNGL_LVT},
+ {0x00CBF0, 0x00CBF0, GBP_HNGL_LV},
+ {0x00CBF1, 0x00CC0B, GBP_HNGL_LVT},
+ {0x00CC0C, 0x00CC0C, GBP_HNGL_LV},
+ {0x00CC0D, 0x00CC27, GBP_HNGL_LVT},
+ {0x00CC28, 0x00CC28, GBP_HNGL_LV},
+ {0x00CC29, 0x00CC43, GBP_HNGL_LVT},
+ {0x00CC44, 0x00CC44, GBP_HNGL_LV},
+ {0x00CC45, 0x00CC5F, GBP_HNGL_LVT},
+ {0x00CC60, 0x00CC60, GBP_HNGL_LV},
+ {0x00CC61, 0x00CC7B, GBP_HNGL_LVT},
+ {0x00CC7C, 0x00CC7C, GBP_HNGL_LV},
+ {0x00CC7D, 0x00CC97, GBP_HNGL_LVT},
+ {0x00CC98, 0x00CC98, GBP_HNGL_LV},
+ {0x00CC99, 0x00CCB3, GBP_HNGL_LVT},
+ {0x00CCB4, 0x00CCB4, GBP_HNGL_LV},
+ {0x00CCB5, 0x00CCCF, GBP_HNGL_LVT},
+ {0x00CCD0, 0x00CCD0, GBP_HNGL_LV},
+ {0x00CCD1, 0x00CCEB, GBP_HNGL_LVT},
+ {0x00CCEC, 0x00CCEC, GBP_HNGL_LV},
+ {0x00CCED, 0x00CD07, GBP_HNGL_LVT},
+ {0x00CD08, 0x00CD08, GBP_HNGL_LV},
+ {0x00CD09, 0x00CD23, GBP_HNGL_LVT},
+ {0x00CD24, 0x00CD24, GBP_HNGL_LV},
+ {0x00CD25, 0x00CD3F, GBP_HNGL_LVT},
+ {0x00CD40, 0x00CD40, GBP_HNGL_LV},
+ {0x00CD41, 0x00CD5B, GBP_HNGL_LVT},
+ {0x00CD5C, 0x00CD5C, GBP_HNGL_LV},
+ {0x00CD5D, 0x00CD77, GBP_HNGL_LVT},
+ {0x00CD78, 0x00CD78, GBP_HNGL_LV},
+ {0x00CD79, 0x00CD93, GBP_HNGL_LVT},
+ {0x00CD94, 0x00CD94, GBP_HNGL_LV},
+ {0x00CD95, 0x00CDAF, GBP_HNGL_LVT},
+ {0x00CDB0, 0x00CDB0, GBP_HNGL_LV},
+ {0x00CDB1, 0x00CDCB, GBP_HNGL_LVT},
+ {0x00CDCC, 0x00CDCC, GBP_HNGL_LV},
+ {0x00CDCD, 0x00CDE7, GBP_HNGL_LVT},
+ {0x00CDE8, 0x00CDE8, GBP_HNGL_LV},
+ {0x00CDE9, 0x00CE03, GBP_HNGL_LVT},
+ {0x00CE04, 0x00CE04, GBP_HNGL_LV},
+ {0x00CE05, 0x00CE1F, GBP_HNGL_LVT},
+ {0x00CE20, 0x00CE20, GBP_HNGL_LV},
+ {0x00CE21, 0x00CE3B, GBP_HNGL_LVT},
+ {0x00CE3C, 0x00CE3C, GBP_HNGL_LV},
+ {0x00CE3D, 0x00CE57, GBP_HNGL_LVT},
+ {0x00CE58, 0x00CE58, GBP_HNGL_LV},
+ {0x00CE59, 0x00CE73, GBP_HNGL_LVT},
+ {0x00CE74, 0x00CE74, GBP_HNGL_LV},
+ {0x00CE75, 0x00CE8F, GBP_HNGL_LVT},
+ {0x00CE90, 0x00CE90, GBP_HNGL_LV},
+ {0x00CE91, 0x00CEAB, GBP_HNGL_LVT},
+ {0x00CEAC, 0x00CEAC, GBP_HNGL_LV},
+ {0x00CEAD, 0x00CEC7, GBP_HNGL_LVT},
+ {0x00CEC8, 0x00CEC8, GBP_HNGL_LV},
+ {0x00CEC9, 0x00CEE3, GBP_HNGL_LVT},
+ {0x00CEE4, 0x00CEE4, GBP_HNGL_LV},
+ {0x00CEE5, 0x00CEFF, GBP_HNGL_LVT},
+ {0x00CF00, 0x00CF00, GBP_HNGL_LV},
+ {0x00CF01, 0x00CF1B, GBP_HNGL_LVT},
+ {0x00CF1C, 0x00CF1C, GBP_HNGL_LV},
+ {0x00CF1D, 0x00CF37, GBP_HNGL_LVT},
+ {0x00CF38, 0x00CF38, GBP_HNGL_LV},
+ {0x00CF39, 0x00CF53, GBP_HNGL_LVT},
+ {0x00CF54, 0x00CF54, GBP_HNGL_LV},
+ {0x00CF55, 0x00CF6F, GBP_HNGL_LVT},
+ {0x00CF70, 0x00CF70, GBP_HNGL_LV},
+ {0x00CF71, 0x00CF8B, GBP_HNGL_LVT},
+ {0x00CF8C, 0x00CF8C, GBP_HNGL_LV},
+ {0x00CF8D, 0x00CFA7, GBP_HNGL_LVT},
+ {0x00CFA8, 0x00CFA8, GBP_HNGL_LV},
+ {0x00CFA9, 0x00CFC3, GBP_HNGL_LVT},
+ {0x00CFC4, 0x00CFC4, GBP_HNGL_LV},
+ {0x00CFC5, 0x00CFDF, GBP_HNGL_LVT},
+ {0x00CFE0, 0x00CFE0, GBP_HNGL_LV},
+ {0x00CFE1, 0x00CFFB, GBP_HNGL_LVT},
+ {0x00CFFC, 0x00CFFC, GBP_HNGL_LV},
+ {0x00CFFD, 0x00D017, GBP_HNGL_LVT},
+ {0x00D018, 0x00D018, GBP_HNGL_LV},
+ {0x00D019, 0x00D033, GBP_HNGL_LVT},
+ {0x00D034, 0x00D034, GBP_HNGL_LV},
+ {0x00D035, 0x00D04F, GBP_HNGL_LVT},
+ {0x00D050, 0x00D050, GBP_HNGL_LV},
+ {0x00D051, 0x00D06B, GBP_HNGL_LVT},
+ {0x00D06C, 0x00D06C, GBP_HNGL_LV},
+ {0x00D06D, 0x00D087, GBP_HNGL_LVT},
+ {0x00D088, 0x00D088, GBP_HNGL_LV},
+ {0x00D089, 0x00D0A3, GBP_HNGL_LVT},
+ {0x00D0A4, 0x00D0A4, GBP_HNGL_LV},
+ {0x00D0A5, 0x00D0BF, GBP_HNGL_LVT},
+ {0x00D0C0, 0x00D0C0, GBP_HNGL_LV},
+ {0x00D0C1, 0x00D0DB, GBP_HNGL_LVT},
+ {0x00D0DC, 0x00D0DC, GBP_HNGL_LV},
+ {0x00D0DD, 0x00D0F7, GBP_HNGL_LVT},
+ {0x00D0F8, 0x00D0F8, GBP_HNGL_LV},
+ {0x00D0F9, 0x00D113, GBP_HNGL_LVT},
+ {0x00D114, 0x00D114, GBP_HNGL_LV},
+ {0x00D115, 0x00D12F, GBP_HNGL_LVT},
+ {0x00D130, 0x00D130, GBP_HNGL_LV},
+ {0x00D131, 0x00D14B, GBP_HNGL_LVT},
+ {0x00D14C, 0x00D14C, GBP_HNGL_LV},
+ {0x00D14D, 0x00D167, GBP_HNGL_LVT},
+ {0x00D168, 0x00D168, GBP_HNGL_LV},
+ {0x00D169, 0x00D183, GBP_HNGL_LVT},
+ {0x00D184, 0x00D184, GBP_HNGL_LV},
+ {0x00D185, 0x00D19F, GBP_HNGL_LVT},
+ {0x00D1A0, 0x00D1A0, GBP_HNGL_LV},
+ {0x00D1A1, 0x00D1BB, GBP_HNGL_LVT},
+ {0x00D1BC, 0x00D1BC, GBP_HNGL_LV},
+ {0x00D1BD, 0x00D1D7, GBP_HNGL_LVT},
+ {0x00D1D8, 0x00D1D8, GBP_HNGL_LV},
+ {0x00D1D9, 0x00D1F3, GBP_HNGL_LVT},
+ {0x00D1F4, 0x00D1F4, GBP_HNGL_LV},
+ {0x00D1F5, 0x00D20F, GBP_HNGL_LVT},
+ {0x00D210, 0x00D210, GBP_HNGL_LV},
+ {0x00D211, 0x00D22B, GBP_HNGL_LVT},
+ {0x00D22C, 0x00D22C, GBP_HNGL_LV},
+ {0x00D22D, 0x00D247, GBP_HNGL_LVT},
+ {0x00D248, 0x00D248, GBP_HNGL_LV},
+ {0x00D249, 0x00D263, GBP_HNGL_LVT},
+ {0x00D264, 0x00D264, GBP_HNGL_LV},
+ {0x00D265, 0x00D27F, GBP_HNGL_LVT},
+ {0x00D280, 0x00D280, GBP_HNGL_LV},
+ {0x00D281, 0x00D29B, GBP_HNGL_LVT},
+ {0x00D29C, 0x00D29C, GBP_HNGL_LV},
+ {0x00D29D, 0x00D2B7, GBP_HNGL_LVT},
+ {0x00D2B8, 0x00D2B8, GBP_HNGL_LV},
+ {0x00D2B9, 0x00D2D3, GBP_HNGL_LVT},
+ {0x00D2D4, 0x00D2D4, GBP_HNGL_LV},
+ {0x00D2D5, 0x00D2EF, GBP_HNGL_LVT},
+ {0x00D2F0, 0x00D2F0, GBP_HNGL_LV},
+ {0x00D2F1, 0x00D30B, GBP_HNGL_LVT},
+ {0x00D30C, 0x00D30C, GBP_HNGL_LV},
+ {0x00D30D, 0x00D327, GBP_HNGL_LVT},
+ {0x00D328, 0x00D328, GBP_HNGL_LV},
+ {0x00D329, 0x00D343, GBP_HNGL_LVT},
+ {0x00D344, 0x00D344, GBP_HNGL_LV},
+ {0x00D345, 0x00D35F, GBP_HNGL_LVT},
+ {0x00D360, 0x00D360, GBP_HNGL_LV},
+ {0x00D361, 0x00D37B, GBP_HNGL_LVT},
+ {0x00D37C, 0x00D37C, GBP_HNGL_LV},
+ {0x00D37D, 0x00D397, GBP_HNGL_LVT},
+ {0x00D398, 0x00D398, GBP_HNGL_LV},
+ {0x00D399, 0x00D3B3, GBP_HNGL_LVT},
+ {0x00D3B4, 0x00D3B4, GBP_HNGL_LV},
+ {0x00D3B5, 0x00D3CF, GBP_HNGL_LVT},
+ {0x00D3D0, 0x00D3D0, GBP_HNGL_LV},
+ {0x00D3D1, 0x00D3EB, GBP_HNGL_LVT},
+ {0x00D3EC, 0x00D3EC, GBP_HNGL_LV},
+ {0x00D3ED, 0x00D407, GBP_HNGL_LVT},
+ {0x00D408, 0x00D408, GBP_HNGL_LV},
+ {0x00D409, 0x00D423, GBP_HNGL_LVT},
+ {0x00D424, 0x00D424, GBP_HNGL_LV},
+ {0x00D425, 0x00D43F, GBP_HNGL_LVT},
+ {0x00D440, 0x00D440, GBP_HNGL_LV},
+ {0x00D441, 0x00D45B, GBP_HNGL_LVT},
+ {0x00D45C, 0x00D45C, GBP_HNGL_LV},
+ {0x00D45D, 0x00D477, GBP_HNGL_LVT},
+ {0x00D478, 0x00D478, GBP_HNGL_LV},
+ {0x00D479, 0x00D493, GBP_HNGL_LVT},
+ {0x00D494, 0x00D494, GBP_HNGL_LV},
+ {0x00D495, 0x00D4AF, GBP_HNGL_LVT},
+ {0x00D4B0, 0x00D4B0, GBP_HNGL_LV},
+ {0x00D4B1, 0x00D4CB, GBP_HNGL_LVT},
+ {0x00D4CC, 0x00D4CC, GBP_HNGL_LV},
+ {0x00D4CD, 0x00D4E7, GBP_HNGL_LVT},
+ {0x00D4E8, 0x00D4E8, GBP_HNGL_LV},
+ {0x00D4E9, 0x00D503, GBP_HNGL_LVT},
+ {0x00D504, 0x00D504, GBP_HNGL_LV},
+ {0x00D505, 0x00D51F, GBP_HNGL_LVT},
+ {0x00D520, 0x00D520, GBP_HNGL_LV},
+ {0x00D521, 0x00D53B, GBP_HNGL_LVT},
+ {0x00D53C, 0x00D53C, GBP_HNGL_LV},
+ {0x00D53D, 0x00D557, GBP_HNGL_LVT},
+ {0x00D558, 0x00D558, GBP_HNGL_LV},
+ {0x00D559, 0x00D573, GBP_HNGL_LVT},
+ {0x00D574, 0x00D574, GBP_HNGL_LV},
+ {0x00D575, 0x00D58F, GBP_HNGL_LVT},
+ {0x00D590, 0x00D590, GBP_HNGL_LV},
+ {0x00D591, 0x00D5AB, GBP_HNGL_LVT},
+ {0x00D5AC, 0x00D5AC, GBP_HNGL_LV},
+ {0x00D5AD, 0x00D5C7, GBP_HNGL_LVT},
+ {0x00D5C8, 0x00D5C8, GBP_HNGL_LV},
+ {0x00D5C9, 0x00D5E3, GBP_HNGL_LVT},
+ {0x00D5E4, 0x00D5E4, GBP_HNGL_LV},
+ {0x00D5E5, 0x00D5FF, GBP_HNGL_LVT},
+ {0x00D600, 0x00D600, GBP_HNGL_LV},
+ {0x00D601, 0x00D61B, GBP_HNGL_LVT},
+ {0x00D61C, 0x00D61C, GBP_HNGL_LV},
+ {0x00D61D, 0x00D637, GBP_HNGL_LVT},
+ {0x00D638, 0x00D638, GBP_HNGL_LV},
+ {0x00D639, 0x00D653, GBP_HNGL_LVT},
+ {0x00D654, 0x00D654, GBP_HNGL_LV},
+ {0x00D655, 0x00D66F, GBP_HNGL_LVT},
+ {0x00D670, 0x00D670, GBP_HNGL_LV},
+ {0x00D671, 0x00D68B, GBP_HNGL_LVT},
+ {0x00D68C, 0x00D68C, GBP_HNGL_LV},
+ {0x00D68D, 0x00D6A7, GBP_HNGL_LVT},
+ {0x00D6A8, 0x00D6A8, GBP_HNGL_LV},
+ {0x00D6A9, 0x00D6C3, GBP_HNGL_LVT},
+ {0x00D6C4, 0x00D6C4, GBP_HNGL_LV},
+ {0x00D6C5, 0x00D6DF, GBP_HNGL_LVT},
+ {0x00D6E0, 0x00D6E0, GBP_HNGL_LV},
+ {0x00D6E1, 0x00D6FB, GBP_HNGL_LVT},
+ {0x00D6FC, 0x00D6FC, GBP_HNGL_LV},
+ {0x00D6FD, 0x00D717, GBP_HNGL_LVT},
+ {0x00D718, 0x00D718, GBP_HNGL_LV},
+ {0x00D719, 0x00D733, GBP_HNGL_LVT},
+ {0x00D734, 0x00D734, GBP_HNGL_LV},
+ {0x00D735, 0x00D74F, GBP_HNGL_LVT},
+ {0x00D750, 0x00D750, GBP_HNGL_LV},
+ {0x00D751, 0x00D76B, GBP_HNGL_LVT},
+ {0x00D76C, 0x00D76C, GBP_HNGL_LV},
+ {0x00D76D, 0x00D787, GBP_HNGL_LVT},
+ {0x00D788, 0x00D788, GBP_HNGL_LV},
+ {0x00D789, 0x00D7A3, GBP_HNGL_LVT},
+ {0x00D7B0, 0x00D7C6, GBP_HNGL_V},
+ {0x00D7CB, 0x00D7FB, GBP_HNGL_T},
+ {0x00FB1E, 0x00FB1E, GBP_INDC_EXT | GBP_EXT},
+ {0x00FE00, 0x00FE0F, GBP_EXT},
+ {0x00FE20, 0x00FE2F, GBP_INDC_EXT | GBP_EXT},
+ {0x00FEFF, 0x00FEFF, GBP_CTRL},
+ {0x00FF9E, 0x00FF9F, GBP_EXT},
+ {0x00FFF0, 0x00FFFB, GBP_CTRL},
+ {0x0101FD, 0x0101FD, GBP_INDC_EXT | GBP_EXT},
+ {0x0102E0, 0x0102E0, GBP_INDC_EXT | GBP_EXT},
+ {0x010376, 0x01037A, GBP_INDC_EXT | GBP_EXT},
+ {0x010A01, 0x010A03, GBP_EXT},
+ {0x010A05, 0x010A06, GBP_EXT},
+ {0x010A0C, 0x010A0C, GBP_EXT},
+ {0x010A0D, 0x010A0D, GBP_INDC_EXT | GBP_EXT},
+ {0x010A0E, 0x010A0E, GBP_EXT},
+ {0x010A0F, 0x010A0F, GBP_INDC_EXT | GBP_EXT},
+ {0x010A38, 0x010A3A, GBP_INDC_EXT | GBP_EXT},
+ {0x010A3F, 0x010A3F, GBP_INDC_EXT | GBP_EXT},
+ {0x010AE5, 0x010AE6, GBP_INDC_EXT | GBP_EXT},
+ {0x010D24, 0x010D27, GBP_INDC_EXT | GBP_EXT},
+ {0x010EAB, 0x010EAC, GBP_INDC_EXT | GBP_EXT},
+ {0x010EFD, 0x010EFF, GBP_INDC_EXT | GBP_EXT},
+ {0x010F46, 0x010F50, GBP_INDC_EXT | GBP_EXT},
+ {0x010F82, 0x010F85, GBP_INDC_EXT | GBP_EXT},
+ {0x011000, 0x011000, GBP_SM},
+ {0x011001, 0x011001, GBP_EXT},
+ {0x011002, 0x011002, GBP_SM},
+ {0x011038, 0x011046, GBP_EXT},
+ {0x011070, 0x011070, GBP_INDC_EXT | GBP_EXT},
+ {0x011073, 0x011074, GBP_EXT},
+ {0x01107F, 0x01107F, GBP_INDC_EXT | GBP_EXT},
+ {0x011080, 0x011081, GBP_EXT},
+ {0x011082, 0x011082, GBP_SM},
+ {0x0110B0, 0x0110B2, GBP_SM},
+ {0x0110B3, 0x0110B6, GBP_EXT},
+ {0x0110B7, 0x0110B8, GBP_SM},
+ {0x0110B9, 0x0110B9, GBP_EXT},
+ {0x0110BA, 0x0110BA, GBP_INDC_EXT | GBP_EXT},
+ {0x0110BD, 0x0110BD, GBP_PREP},
+ {0x0110C2, 0x0110C2, GBP_EXT},
+ {0x0110CD, 0x0110CD, GBP_PREP},
+ {0x011100, 0x011102, GBP_INDC_EXT | GBP_EXT},
+ {0x011127, 0x01112B, GBP_EXT},
+ {0x01112C, 0x01112C, GBP_SM},
+ {0x01112D, 0x011132, GBP_EXT},
+ {0x011133, 0x011134, GBP_INDC_EXT | GBP_EXT},
+ {0x011145, 0x011146, GBP_SM},
+ {0x011173, 0x011173, GBP_INDC_EXT | GBP_EXT},
+ {0x011180, 0x011181, GBP_EXT},
+ {0x011182, 0x011182, GBP_SM},
+ {0x0111B3, 0x0111B5, GBP_SM},
+ {0x0111B6, 0x0111BE, GBP_EXT},
+ {0x0111BF, 0x0111C0, GBP_SM},
+ {0x0111C2, 0x0111C3, GBP_PREP},
+ {0x0111C9, 0x0111C9, GBP_EXT},
+ {0x0111CA, 0x0111CA, GBP_INDC_EXT | GBP_EXT},
+ {0x0111CB, 0x0111CC, GBP_EXT},
+ {0x0111CE, 0x0111CE, GBP_SM},
+ {0x0111CF, 0x0111CF, GBP_EXT},
+ {0x01122C, 0x01122E, GBP_SM},
+ {0x01122F, 0x011231, GBP_EXT},
+ {0x011232, 0x011233, GBP_SM},
+ {0x011234, 0x011234, GBP_EXT},
+ {0x011235, 0x011235, GBP_SM},
+ {0x011236, 0x011236, GBP_INDC_EXT | GBP_EXT},
+ {0x011237, 0x011237, GBP_EXT},
+ {0x01123E, 0x01123E, GBP_EXT},
+ {0x011241, 0x011241, GBP_EXT},
+ {0x0112DF, 0x0112DF, GBP_EXT},
+ {0x0112E0, 0x0112E2, GBP_SM},
+ {0x0112E3, 0x0112E8, GBP_EXT},
+ {0x0112E9, 0x0112EA, GBP_INDC_EXT | GBP_EXT},
+ {0x011300, 0x011301, GBP_EXT},
+ {0x011302, 0x011303, GBP_SM},
+ {0x01133B, 0x01133C, GBP_INDC_EXT | GBP_EXT},
+ {0x01133E, 0x01133E, GBP_EXT},
+ {0x01133F, 0x01133F, GBP_SM},
+ {0x011340, 0x011340, GBP_EXT},
+ {0x011341, 0x011344, GBP_SM},
+ {0x011347, 0x011348, GBP_SM},
+ {0x01134B, 0x01134D, GBP_SM},
+ {0x011357, 0x011357, GBP_EXT},
+ {0x011362, 0x011363, GBP_SM},
+ {0x011366, 0x01136C, GBP_INDC_EXT | GBP_EXT},
+ {0x011370, 0x011374, GBP_INDC_EXT | GBP_EXT},
+ {0x011435, 0x011437, GBP_SM},
+ {0x011438, 0x01143F, GBP_EXT},
+ {0x011440, 0x011441, GBP_SM},
+ {0x011442, 0x011444, GBP_EXT},
+ {0x011445, 0x011445, GBP_SM},
+ {0x011446, 0x011446, GBP_INDC_EXT | GBP_EXT},
+ {0x01145E, 0x01145E, GBP_INDC_EXT | GBP_EXT},
+ {0x0114B0, 0x0114B0, GBP_EXT},
+ {0x0114B1, 0x0114B2, GBP_SM},
+ {0x0114B3, 0x0114B8, GBP_EXT},
+ {0x0114B9, 0x0114B9, GBP_SM},
+ {0x0114BA, 0x0114BA, GBP_EXT},
+ {0x0114BB, 0x0114BC, GBP_SM},
+ {0x0114BD, 0x0114BD, GBP_EXT},
+ {0x0114BE, 0x0114BE, GBP_SM},
+ {0x0114BF, 0x0114C0, GBP_EXT},
+ {0x0114C1, 0x0114C1, GBP_SM},
+ {0x0114C2, 0x0114C2, GBP_EXT},
+ {0x0114C3, 0x0114C3, GBP_INDC_EXT | GBP_EXT},
+ {0x0115AF, 0x0115AF, GBP_EXT},
+ {0x0115B0, 0x0115B1, GBP_SM},
+ {0x0115B2, 0x0115B5, GBP_EXT},
+ {0x0115B8, 0x0115BB, GBP_SM},
+ {0x0115BC, 0x0115BD, GBP_EXT},
+ {0x0115BE, 0x0115BE, GBP_SM},
+ {0x0115BF, 0x0115BF, GBP_EXT},
+ {0x0115C0, 0x0115C0, GBP_INDC_EXT | GBP_EXT},
+ {0x0115DC, 0x0115DD, GBP_EXT},
+ {0x011630, 0x011632, GBP_SM},
+ {0x011633, 0x01163A, GBP_EXT},
+ {0x01163B, 0x01163C, GBP_SM},
+ {0x01163D, 0x01163D, GBP_EXT},
+ {0x01163E, 0x01163E, GBP_SM},
+ {0x01163F, 0x011640, GBP_EXT},
+ {0x0116AB, 0x0116AB, GBP_EXT},
+ {0x0116AC, 0x0116AC, GBP_SM},
+ {0x0116AD, 0x0116AD, GBP_EXT},
+ {0x0116AE, 0x0116AF, GBP_SM},
+ {0x0116B0, 0x0116B5, GBP_EXT},
+ {0x0116B6, 0x0116B6, GBP_SM},
+ {0x0116B7, 0x0116B7, GBP_INDC_EXT | GBP_EXT},
+ {0x01171D, 0x01171F, GBP_EXT},
+ {0x011722, 0x011725, GBP_EXT},
+ {0x011726, 0x011726, GBP_SM},
+ {0x011727, 0x01172A, GBP_EXT},
+ {0x01172B, 0x01172B, GBP_INDC_EXT | GBP_EXT},
+ {0x01182C, 0x01182E, GBP_SM},
+ {0x01182F, 0x011837, GBP_EXT},
+ {0x011838, 0x011838, GBP_SM},
+ {0x011839, 0x011839, GBP_EXT},
+ {0x01183A, 0x01183A, GBP_INDC_EXT | GBP_EXT},
+ {0x011930, 0x011930, GBP_EXT},
+ {0x011931, 0x011935, GBP_SM},
+ {0x011937, 0x011938, GBP_SM},
+ {0x01193B, 0x01193C, GBP_EXT},
+ {0x01193D, 0x01193D, GBP_SM},
+ {0x01193E, 0x01193E, GBP_INDC_EXT | GBP_EXT},
+ {0x01193F, 0x01193F, GBP_PREP},
+ {0x011940, 0x011940, GBP_SM},
+ {0x011941, 0x011941, GBP_PREP},
+ {0x011942, 0x011942, GBP_SM},
+ {0x011943, 0x011943, GBP_INDC_EXT | GBP_EXT},
+ {0x0119D1, 0x0119D3, GBP_SM},
+ {0x0119D4, 0x0119D7, GBP_EXT},
+ {0x0119DA, 0x0119DB, GBP_EXT},
+ {0x0119DC, 0x0119DF, GBP_SM},
+ {0x0119E0, 0x0119E0, GBP_EXT},
+ {0x0119E4, 0x0119E4, GBP_SM},
+ {0x011A01, 0x011A0A, GBP_EXT},
+ {0x011A33, 0x011A33, GBP_EXT},
+ {0x011A34, 0x011A34, GBP_INDC_EXT | GBP_EXT},
+ {0x011A35, 0x011A38, GBP_EXT},
+ {0x011A39, 0x011A39, GBP_SM},
+ {0x011A3A, 0x011A3A, GBP_PREP},
+ {0x011A3B, 0x011A3E, GBP_EXT},
+ {0x011A47, 0x011A47, GBP_INDC_EXT | GBP_EXT},
+ {0x011A51, 0x011A56, GBP_EXT},
+ {0x011A57, 0x011A58, GBP_SM},
+ {0x011A59, 0x011A5B, GBP_EXT},
+ {0x011A84, 0x011A89, GBP_PREP},
+ {0x011A8A, 0x011A96, GBP_EXT},
+ {0x011A97, 0x011A97, GBP_SM},
+ {0x011A98, 0x011A98, GBP_EXT},
+ {0x011A99, 0x011A99, GBP_INDC_EXT | GBP_EXT},
+ {0x011C2F, 0x011C2F, GBP_SM},
+ {0x011C30, 0x011C36, GBP_EXT},
+ {0x011C38, 0x011C3D, GBP_EXT},
+ {0x011C3E, 0x011C3E, GBP_SM},
+ {0x011C3F, 0x011C3F, GBP_EXT},
+ {0x011C92, 0x011CA7, GBP_EXT},
+ {0x011CA9, 0x011CA9, GBP_SM},
+ {0x011CAA, 0x011CB0, GBP_EXT},
+ {0x011CB1, 0x011CB1, GBP_SM},
+ {0x011CB2, 0x011CB3, GBP_EXT},
+ {0x011CB4, 0x011CB4, GBP_SM},
+ {0x011CB5, 0x011CB6, GBP_EXT},
+ {0x011D31, 0x011D36, GBP_EXT},
+ {0x011D3A, 0x011D3A, GBP_EXT},
+ {0x011D3C, 0x011D3D, GBP_EXT},
+ {0x011D3F, 0x011D41, GBP_EXT},
+ {0x011D42, 0x011D42, GBP_INDC_EXT | GBP_EXT},
+ {0x011D43, 0x011D43, GBP_EXT},
+ {0x011D44, 0x011D45, GBP_INDC_EXT | GBP_EXT},
+ {0x011D46, 0x011D46, GBP_PREP},
+ {0x011D47, 0x011D47, GBP_EXT},
+ {0x011D8A, 0x011D8E, GBP_SM},
+ {0x011D90, 0x011D91, GBP_EXT},
+ {0x011D93, 0x011D94, GBP_SM},
+ {0x011D95, 0x011D95, GBP_EXT},
+ {0x011D96, 0x011D96, GBP_SM},
+ {0x011D97, 0x011D97, GBP_INDC_EXT | GBP_EXT},
+ {0x011EF3, 0x011EF4, GBP_EXT},
+ {0x011EF5, 0x011EF6, GBP_SM},
+ {0x011F00, 0x011F01, GBP_EXT},
+ {0x011F02, 0x011F02, GBP_PREP},
+ {0x011F03, 0x011F03, GBP_SM},
+ {0x011F34, 0x011F35, GBP_SM},
+ {0x011F36, 0x011F3A, GBP_EXT},
+ {0x011F3E, 0x011F3F, GBP_SM},
+ {0x011F40, 0x011F40, GBP_EXT},
+ {0x011F41, 0x011F41, GBP_SM},
+ {0x011F42, 0x011F42, GBP_INDC_EXT | GBP_EXT},
+ {0x013430, 0x01343F, GBP_CTRL},
+ {0x013440, 0x013440, GBP_EXT},
+ {0x013447, 0x013455, GBP_EXT},
+ {0x016AF0, 0x016AF4, GBP_INDC_EXT | GBP_EXT},
+ {0x016B30, 0x016B36, GBP_INDC_EXT | GBP_EXT},
+ {0x016F4F, 0x016F4F, GBP_EXT},
+ {0x016F51, 0x016F87, GBP_SM},
+ {0x016F8F, 0x016F92, GBP_EXT},
+ {0x016FE4, 0x016FE4, GBP_EXT},
+ {0x016FF0, 0x016FF1, GBP_SM},
+ {0x01BC9D, 0x01BC9D, GBP_EXT},
+ {0x01BC9E, 0x01BC9E, GBP_INDC_EXT | GBP_EXT},
+ {0x01BCA0, 0x01BCA3, GBP_CTRL},
+ {0x01CF00, 0x01CF2D, GBP_EXT},
+ {0x01CF30, 0x01CF46, GBP_EXT},
+ {0x01D165, 0x01D165, GBP_INDC_EXT | GBP_EXT},
+ {0x01D166, 0x01D166, GBP_SM},
+ {0x01D167, 0x01D169, GBP_INDC_EXT | GBP_EXT},
+ {0x01D16D, 0x01D16D, GBP_SM},
+ {0x01D16E, 0x01D172, GBP_INDC_EXT | GBP_EXT},
+ {0x01D173, 0x01D17A, GBP_CTRL},
+ {0x01D17B, 0x01D182, GBP_INDC_EXT | GBP_EXT},
+ {0x01D185, 0x01D18B, GBP_INDC_EXT | GBP_EXT},
+ {0x01D1AA, 0x01D1AD, GBP_INDC_EXT | GBP_EXT},
+ {0x01D242, 0x01D244, GBP_INDC_EXT | GBP_EXT},
+ {0x01DA00, 0x01DA36, GBP_EXT},
+ {0x01DA3B, 0x01DA6C, GBP_EXT},
+ {0x01DA75, 0x01DA75, GBP_EXT},
+ {0x01DA84, 0x01DA84, GBP_EXT},
+ {0x01DA9B, 0x01DA9F, GBP_EXT},
+ {0x01DAA1, 0x01DAAF, GBP_EXT},
+ {0x01E000, 0x01E006, GBP_INDC_EXT | GBP_EXT},
+ {0x01E008, 0x01E018, GBP_INDC_EXT | GBP_EXT},
+ {0x01E01B, 0x01E021, GBP_INDC_EXT | GBP_EXT},
+ {0x01E023, 0x01E024, GBP_INDC_EXT | GBP_EXT},
+ {0x01E026, 0x01E02A, GBP_INDC_EXT | GBP_EXT},
+ {0x01E08F, 0x01E08F, GBP_INDC_EXT | GBP_EXT},
+ {0x01E130, 0x01E136, GBP_INDC_EXT | GBP_EXT},
+ {0x01E2AE, 0x01E2AE, GBP_INDC_EXT | GBP_EXT},
+ {0x01E2EC, 0x01E2EF, GBP_INDC_EXT | GBP_EXT},
+ {0x01E4EC, 0x01E4EF, GBP_INDC_EXT | GBP_EXT},
+ {0x01E8D0, 0x01E8D6, GBP_INDC_EXT | GBP_EXT},
+ {0x01E944, 0x01E94A, GBP_INDC_EXT | GBP_EXT},
+ {0x01F000, 0x01F0FF, GBP_PIC},
+ {0x01F10D, 0x01F10F, GBP_PIC},
+ {0x01F12F, 0x01F12F, GBP_PIC},
+ {0x01F16C, 0x01F171, GBP_PIC},
+ {0x01F17E, 0x01F17F, GBP_PIC},
+ {0x01F18E, 0x01F18E, GBP_PIC},
+ {0x01F191, 0x01F19A, GBP_PIC},
+ {0x01F1AD, 0x01F1E5, GBP_PIC},
+ {0x01F1E6, 0x01F1FF, GBP_RI},
+ {0x01F201, 0x01F20F, GBP_PIC},
+ {0x01F21A, 0x01F21A, GBP_PIC},
+ {0x01F22F, 0x01F22F, GBP_PIC},
+ {0x01F232, 0x01F23A, GBP_PIC},
+ {0x01F23C, 0x01F23F, GBP_PIC},
+ {0x01F249, 0x01F3FA, GBP_PIC},
+ {0x01F3FB, 0x01F3FF, GBP_EXT},
+ {0x01F400, 0x01F53D, GBP_PIC},
+ {0x01F546, 0x01F64F, GBP_PIC},
+ {0x01F680, 0x01F6FF, GBP_PIC},
+ {0x01F774, 0x01F77F, GBP_PIC},
+ {0x01F7D5, 0x01F7FF, GBP_PIC},
+ {0x01F80C, 0x01F80F, GBP_PIC},
+ {0x01F848, 0x01F84F, GBP_PIC},
+ {0x01F85A, 0x01F85F, GBP_PIC},
+ {0x01F888, 0x01F88F, GBP_PIC},
+ {0x01F8AE, 0x01F8FF, GBP_PIC},
+ {0x01F90C, 0x01F93A, GBP_PIC},
+ {0x01F93C, 0x01F945, GBP_PIC},
+ {0x01F947, 0x01FAFF, GBP_PIC},
+ {0x01FC00, 0x01FFFD, GBP_PIC},
+ {0x0E0000, 0x0E001F, GBP_CTRL},
+ {0x0E0020, 0x0E007F, GBP_EXT},
+ {0x0E0080, 0x0E00FF, GBP_CTRL},
+ {0x0E0100, 0x0E01EF, GBP_EXT},
+ {0x0E01F0, 0x0E0FFF, GBP_CTRL},
+};
+
+#endif /* !RUNE_INTERNAL_GBRK_LOOKUP_H */
diff --git a/vendor/librune/include/internal/qmacros.h b/vendor/librune/include/internal/qmacros.h
new file mode 100644
index 0000000..5369c48
--- /dev/null
+++ b/vendor/librune/include/internal/qmacros.h
@@ -0,0 +1,25 @@
+#ifndef RUNE_INTERNAL_QMACROS_H
+#define RUNE_INTERNAL_QMACROS_H
+
+/* Macros for qualifier-preserving functions. These are wrappers around some
+ functions declared above which will return a const-qualified pointer if the
+ input string is const-qualified, and a non-const-qualified pointer otherwise.
+
+ The macros are taken from the N3020 proposal for C23. */
+
+/* clang-format off */
+#define _RUNE_PTR_IS_CONST(P) \
+ _Generic(1 ? (P) : (void *)(P), \
+ const void *: 1, \
+ default: 0)
+#define _RUNE_STATIC_IF(P, T, E) \
+ _Generic(&(char[!!(P) + 1]){0}, \
+ char(*)[2]: T, \
+ char(*)[1]: E)
+#define _RUNE_Q_PTR(F, S, ...) \
+ _RUNE_STATIC_IF(_RUNE_PTR_IS_CONST((S)), \
+ (const char8_t *)(F)(__VA_ARGS__), \
+ ( char8_t *)(F)(__VA_ARGS__))
+/* clang-format on */
+
+#endif /* !RUNE_INTERNAL_QMACROS_H */
diff --git a/vendor/librune/include/internal/rtype/dt.h b/vendor/librune/include/internal/rtype/dt.h
new file mode 100644
index 0000000..6e82c63
--- /dev/null
+++ b/vendor/librune/include/internal/rtype/dt.h
@@ -0,0 +1,878 @@
+/* This file is autogenerated by gen/rtype-dt; DO NOT EDIT. */
+
+#ifndef RUNE_INTERNAL_RTYPE_DT_H
+#define RUNE_INTERNAL_RTYPE_DT_H
+
+/* IWYU pragma: private */
+/* clang-format off */
+
+#include "../types.h"
+#include "../../rtype.h"
+#include "../../rune.h"
+
+static const rprop_dt_bf rtype_dt_lat1_tbl[] = {
+ DT_NONE, DT_NONE, DT_NONE, DT_NONE,
+ DT_NONE, DT_NONE, DT_NONE, DT_NONE,
+ DT_NONE, DT_NONE, DT_NONE, DT_NONE,
+ DT_NONE, DT_NONE, DT_NONE, DT_NONE,
+ DT_NONE, DT_NONE, DT_NONE, DT_NONE,
+ DT_NONE, DT_NONE, DT_NONE, DT_NONE,
+ DT_NONE, DT_NONE, DT_NONE, DT_NONE,
+ DT_NONE, DT_NONE, DT_NONE, DT_NONE,
+ DT_NONE, DT_NONE, DT_NONE, DT_NONE,
+ DT_NONE, DT_NONE, DT_NONE, DT_NONE,
+ DT_NONE, DT_NONE, DT_NONE, DT_NONE,
+ DT_NONE, DT_NONE, DT_NONE, DT_NONE,
+ DT_NONE, DT_NONE, DT_NONE, DT_NONE,
+ DT_NONE, DT_NONE, DT_NONE, DT_NONE,
+ DT_NONE, DT_NONE, DT_NONE, DT_NONE,
+ DT_NONE, DT_NONE, DT_NONE, DT_NONE,
+ DT_NONE, DT_NONE, DT_NONE, DT_NONE,
+ DT_NONE, DT_NONE, DT_NONE, DT_NONE,
+ DT_NONE, DT_NONE, DT_NONE, DT_NONE,
+ DT_NONE, DT_NONE, DT_NONE, DT_NONE,
+ DT_NONE, DT_NONE, DT_NONE, DT_NONE,
+ DT_NONE, DT_NONE, DT_NONE, DT_NONE,
+ DT_NONE, DT_NONE, DT_NONE, DT_NONE,
+ DT_NONE, DT_NONE, DT_NONE, DT_NONE,
+ DT_NONE, DT_NONE, DT_NONE, DT_NONE,
+ DT_NONE, DT_NONE, DT_NONE, DT_NONE,
+ DT_NONE, DT_NONE, DT_NONE, DT_NONE,
+ DT_NONE, DT_NONE, DT_NONE, DT_NONE,
+ DT_NONE, DT_NONE, DT_NONE, DT_NONE,
+ DT_NONE, DT_NONE, DT_NONE, DT_NONE,
+ DT_NONE, DT_NONE, DT_NONE, DT_NONE,
+ DT_NONE, DT_NONE, DT_NONE, DT_NONE,
+ DT_NONE, DT_NONE, DT_NONE, DT_NONE,
+ DT_NONE, DT_NONE, DT_NONE, DT_NONE,
+ DT_NONE, DT_NONE, DT_NONE, DT_NONE,
+ DT_NONE, DT_NONE, DT_NONE, DT_NONE,
+ DT_NONE, DT_NONE, DT_NONE, DT_NONE,
+ DT_NONE, DT_NONE, DT_NONE, DT_NONE,
+ DT_NONE, DT_NONE, DT_NONE, DT_NONE,
+ DT_NONE, DT_NONE, DT_NONE, DT_NONE,
+ DT_NOBREAK, DT_NONE, DT_NONE, DT_NONE,
+ DT_NONE, DT_NONE, DT_NONE, DT_NONE,
+ DT_COMPAT, DT_NONE, DT_SUPER, DT_NONE,
+ DT_NONE, DT_NONE, DT_NONE, DT_COMPAT,
+ DT_NONE, DT_NONE, DT_SUPER, DT_SUPER,
+ DT_COMPAT, DT_COMPAT, DT_NONE, DT_NONE,
+ DT_COMPAT, DT_SUPER, DT_SUPER, DT_NONE,
+ DT_FRACTION, DT_FRACTION, DT_FRACTION, DT_NONE,
+ DT_CANONICAL, DT_CANONICAL, DT_CANONICAL, DT_CANONICAL,
+ DT_CANONICAL, DT_CANONICAL, DT_NONE, DT_CANONICAL,
+ DT_CANONICAL, DT_CANONICAL, DT_CANONICAL, DT_CANONICAL,
+ DT_CANONICAL, DT_CANONICAL, DT_CANONICAL, DT_CANONICAL,
+ DT_NONE, DT_CANONICAL, DT_CANONICAL, DT_CANONICAL,
+ DT_CANONICAL, DT_CANONICAL, DT_CANONICAL, DT_NONE,
+ DT_NONE, DT_CANONICAL, DT_CANONICAL, DT_CANONICAL,
+ DT_CANONICAL, DT_CANONICAL, DT_NONE, DT_NONE,
+ DT_CANONICAL, DT_CANONICAL, DT_CANONICAL, DT_CANONICAL,
+ DT_CANONICAL, DT_CANONICAL, DT_NONE, DT_CANONICAL,
+ DT_CANONICAL, DT_CANONICAL, DT_CANONICAL, DT_CANONICAL,
+ DT_CANONICAL, DT_CANONICAL, DT_CANONICAL, DT_CANONICAL,
+ DT_NONE, DT_CANONICAL, DT_CANONICAL, DT_CANONICAL,
+ DT_CANONICAL, DT_CANONICAL, DT_CANONICAL, DT_NONE,
+ DT_NONE, DT_CANONICAL, DT_CANONICAL, DT_CANONICAL,
+ DT_CANONICAL, DT_CANONICAL, DT_NONE, DT_CANONICAL,
+};
+
+static const struct {
+ rune lo, hi;
+ rprop_dt_bf val;
+} rtype_dt_tbl[] = {
+ {RUNE_C(0x0000A0), RUNE_C(0x0000A0), DT_NOBREAK},
+ {RUNE_C(0x0000A8), RUNE_C(0x0000A8), DT_COMPAT},
+ {RUNE_C(0x0000AA), RUNE_C(0x0000AA), DT_SUPER},
+ {RUNE_C(0x0000AF), RUNE_C(0x0000AF), DT_COMPAT},
+ {RUNE_C(0x0000B2), RUNE_C(0x0000B3), DT_SUPER},
+ {RUNE_C(0x0000B4), RUNE_C(0x0000B5), DT_COMPAT},
+ {RUNE_C(0x0000B8), RUNE_C(0x0000B8), DT_COMPAT},
+ {RUNE_C(0x0000B9), RUNE_C(0x0000BA), DT_SUPER},
+ {RUNE_C(0x0000BC), RUNE_C(0x0000BE), DT_FRACTION},
+ {RUNE_C(0x0000C0), RUNE_C(0x0000C5), DT_CANONICAL},
+ {RUNE_C(0x0000C7), RUNE_C(0x0000CF), DT_CANONICAL},
+ {RUNE_C(0x0000D1), RUNE_C(0x0000D6), DT_CANONICAL},
+ {RUNE_C(0x0000D9), RUNE_C(0x0000DD), DT_CANONICAL},
+ {RUNE_C(0x0000E0), RUNE_C(0x0000E5), DT_CANONICAL},
+ {RUNE_C(0x0000E7), RUNE_C(0x0000EF), DT_CANONICAL},
+ {RUNE_C(0x0000F1), RUNE_C(0x0000F6), DT_CANONICAL},
+ {RUNE_C(0x0000F9), RUNE_C(0x0000FD), DT_CANONICAL},
+ {RUNE_C(0x0000FF), RUNE_C(0x00010F), DT_CANONICAL},
+ {RUNE_C(0x000112), RUNE_C(0x000125), DT_CANONICAL},
+ {RUNE_C(0x000128), RUNE_C(0x000130), DT_CANONICAL},
+ {RUNE_C(0x000132), RUNE_C(0x000133), DT_COMPAT},
+ {RUNE_C(0x000134), RUNE_C(0x000137), DT_CANONICAL},
+ {RUNE_C(0x000139), RUNE_C(0x00013E), DT_CANONICAL},
+ {RUNE_C(0x00013F), RUNE_C(0x000140), DT_COMPAT},
+ {RUNE_C(0x000143), RUNE_C(0x000148), DT_CANONICAL},
+ {RUNE_C(0x000149), RUNE_C(0x000149), DT_COMPAT},
+ {RUNE_C(0x00014C), RUNE_C(0x000151), DT_CANONICAL},
+ {RUNE_C(0x000154), RUNE_C(0x000165), DT_CANONICAL},
+ {RUNE_C(0x000168), RUNE_C(0x00017E), DT_CANONICAL},
+ {RUNE_C(0x00017F), RUNE_C(0x00017F), DT_COMPAT},
+ {RUNE_C(0x0001A0), RUNE_C(0x0001A1), DT_CANONICAL},
+ {RUNE_C(0x0001AF), RUNE_C(0x0001B0), DT_CANONICAL},
+ {RUNE_C(0x0001C4), RUNE_C(0x0001CC), DT_COMPAT},
+ {RUNE_C(0x0001CD), RUNE_C(0x0001DC), DT_CANONICAL},
+ {RUNE_C(0x0001DE), RUNE_C(0x0001E3), DT_CANONICAL},
+ {RUNE_C(0x0001E6), RUNE_C(0x0001F0), DT_CANONICAL},
+ {RUNE_C(0x0001F1), RUNE_C(0x0001F3), DT_COMPAT},
+ {RUNE_C(0x0001F4), RUNE_C(0x0001F5), DT_CANONICAL},
+ {RUNE_C(0x0001F8), RUNE_C(0x00021B), DT_CANONICAL},
+ {RUNE_C(0x00021E), RUNE_C(0x00021F), DT_CANONICAL},
+ {RUNE_C(0x000226), RUNE_C(0x000233), DT_CANONICAL},
+ {RUNE_C(0x0002B0), RUNE_C(0x0002B8), DT_SUPER},
+ {RUNE_C(0x0002D8), RUNE_C(0x0002DD), DT_COMPAT},
+ {RUNE_C(0x0002E0), RUNE_C(0x0002E4), DT_SUPER},
+ {RUNE_C(0x000340), RUNE_C(0x000341), DT_CANONICAL},
+ {RUNE_C(0x000343), RUNE_C(0x000344), DT_CANONICAL},
+ {RUNE_C(0x000374), RUNE_C(0x000374), DT_CANONICAL},
+ {RUNE_C(0x00037A), RUNE_C(0x00037A), DT_COMPAT},
+ {RUNE_C(0x00037E), RUNE_C(0x00037E), DT_CANONICAL},
+ {RUNE_C(0x000384), RUNE_C(0x000384), DT_COMPAT},
+ {RUNE_C(0x000385), RUNE_C(0x00038A), DT_CANONICAL},
+ {RUNE_C(0x00038C), RUNE_C(0x00038C), DT_CANONICAL},
+ {RUNE_C(0x00038E), RUNE_C(0x000390), DT_CANONICAL},
+ {RUNE_C(0x0003AA), RUNE_C(0x0003B0), DT_CANONICAL},
+ {RUNE_C(0x0003CA), RUNE_C(0x0003CE), DT_CANONICAL},
+ {RUNE_C(0x0003D0), RUNE_C(0x0003D2), DT_COMPAT},
+ {RUNE_C(0x0003D3), RUNE_C(0x0003D4), DT_CANONICAL},
+ {RUNE_C(0x0003D5), RUNE_C(0x0003D6), DT_COMPAT},
+ {RUNE_C(0x0003F0), RUNE_C(0x0003F2), DT_COMPAT},
+ {RUNE_C(0x0003F4), RUNE_C(0x0003F5), DT_COMPAT},
+ {RUNE_C(0x0003F9), RUNE_C(0x0003F9), DT_COMPAT},
+ {RUNE_C(0x000400), RUNE_C(0x000401), DT_CANONICAL},
+ {RUNE_C(0x000403), RUNE_C(0x000403), DT_CANONICAL},
+ {RUNE_C(0x000407), RUNE_C(0x000407), DT_CANONICAL},
+ {RUNE_C(0x00040C), RUNE_C(0x00040E), DT_CANONICAL},
+ {RUNE_C(0x000419), RUNE_C(0x000419), DT_CANONICAL},
+ {RUNE_C(0x000439), RUNE_C(0x000439), DT_CANONICAL},
+ {RUNE_C(0x000450), RUNE_C(0x000451), DT_CANONICAL},
+ {RUNE_C(0x000453), RUNE_C(0x000453), DT_CANONICAL},
+ {RUNE_C(0x000457), RUNE_C(0x000457), DT_CANONICAL},
+ {RUNE_C(0x00045C), RUNE_C(0x00045E), DT_CANONICAL},
+ {RUNE_C(0x000476), RUNE_C(0x000477), DT_CANONICAL},
+ {RUNE_C(0x0004C1), RUNE_C(0x0004C2), DT_CANONICAL},
+ {RUNE_C(0x0004D0), RUNE_C(0x0004D3), DT_CANONICAL},
+ {RUNE_C(0x0004D6), RUNE_C(0x0004D7), DT_CANONICAL},
+ {RUNE_C(0x0004DA), RUNE_C(0x0004DF), DT_CANONICAL},
+ {RUNE_C(0x0004E2), RUNE_C(0x0004E7), DT_CANONICAL},
+ {RUNE_C(0x0004EA), RUNE_C(0x0004F5), DT_CANONICAL},
+ {RUNE_C(0x0004F8), RUNE_C(0x0004F9), DT_CANONICAL},
+ {RUNE_C(0x000587), RUNE_C(0x000587), DT_COMPAT},
+ {RUNE_C(0x000622), RUNE_C(0x000626), DT_CANONICAL},
+ {RUNE_C(0x000675), RUNE_C(0x000678), DT_COMPAT},
+ {RUNE_C(0x0006C0), RUNE_C(0x0006C0), DT_CANONICAL},
+ {RUNE_C(0x0006C2), RUNE_C(0x0006C2), DT_CANONICAL},
+ {RUNE_C(0x0006D3), RUNE_C(0x0006D3), DT_CANONICAL},
+ {RUNE_C(0x000929), RUNE_C(0x000929), DT_CANONICAL},
+ {RUNE_C(0x000931), RUNE_C(0x000931), DT_CANONICAL},
+ {RUNE_C(0x000934), RUNE_C(0x000934), DT_CANONICAL},
+ {RUNE_C(0x000958), RUNE_C(0x00095F), DT_CANONICAL},
+ {RUNE_C(0x0009CB), RUNE_C(0x0009CC), DT_CANONICAL},
+ {RUNE_C(0x0009DC), RUNE_C(0x0009DD), DT_CANONICAL},
+ {RUNE_C(0x0009DF), RUNE_C(0x0009DF), DT_CANONICAL},
+ {RUNE_C(0x000A33), RUNE_C(0x000A33), DT_CANONICAL},
+ {RUNE_C(0x000A36), RUNE_C(0x000A36), DT_CANONICAL},
+ {RUNE_C(0x000A59), RUNE_C(0x000A5B), DT_CANONICAL},
+ {RUNE_C(0x000A5E), RUNE_C(0x000A5E), DT_CANONICAL},
+ {RUNE_C(0x000B48), RUNE_C(0x000B48), DT_CANONICAL},
+ {RUNE_C(0x000B4B), RUNE_C(0x000B4C), DT_CANONICAL},
+ {RUNE_C(0x000B5C), RUNE_C(0x000B5D), DT_CANONICAL},
+ {RUNE_C(0x000B94), RUNE_C(0x000B94), DT_CANONICAL},
+ {RUNE_C(0x000BCA), RUNE_C(0x000BCC), DT_CANONICAL},
+ {RUNE_C(0x000C48), RUNE_C(0x000C48), DT_CANONICAL},
+ {RUNE_C(0x000CC0), RUNE_C(0x000CC0), DT_CANONICAL},
+ {RUNE_C(0x000CC7), RUNE_C(0x000CC8), DT_CANONICAL},
+ {RUNE_C(0x000CCA), RUNE_C(0x000CCB), DT_CANONICAL},
+ {RUNE_C(0x000D4A), RUNE_C(0x000D4C), DT_CANONICAL},
+ {RUNE_C(0x000DDA), RUNE_C(0x000DDA), DT_CANONICAL},
+ {RUNE_C(0x000DDC), RUNE_C(0x000DDE), DT_CANONICAL},
+ {RUNE_C(0x000E33), RUNE_C(0x000E33), DT_COMPAT},
+ {RUNE_C(0x000EB3), RUNE_C(0x000EB3), DT_COMPAT},
+ {RUNE_C(0x000EDC), RUNE_C(0x000EDD), DT_COMPAT},
+ {RUNE_C(0x000F0C), RUNE_C(0x000F0C), DT_NOBREAK},
+ {RUNE_C(0x000F43), RUNE_C(0x000F43), DT_CANONICAL},
+ {RUNE_C(0x000F4D), RUNE_C(0x000F4D), DT_CANONICAL},
+ {RUNE_C(0x000F52), RUNE_C(0x000F52), DT_CANONICAL},
+ {RUNE_C(0x000F57), RUNE_C(0x000F57), DT_CANONICAL},
+ {RUNE_C(0x000F5C), RUNE_C(0x000F5C), DT_CANONICAL},
+ {RUNE_C(0x000F69), RUNE_C(0x000F69), DT_CANONICAL},
+ {RUNE_C(0x000F73), RUNE_C(0x000F73), DT_CANONICAL},
+ {RUNE_C(0x000F75), RUNE_C(0x000F76), DT_CANONICAL},
+ {RUNE_C(0x000F77), RUNE_C(0x000F77), DT_COMPAT},
+ {RUNE_C(0x000F78), RUNE_C(0x000F78), DT_CANONICAL},
+ {RUNE_C(0x000F79), RUNE_C(0x000F79), DT_COMPAT},
+ {RUNE_C(0x000F81), RUNE_C(0x000F81), DT_CANONICAL},
+ {RUNE_C(0x000F93), RUNE_C(0x000F93), DT_CANONICAL},
+ {RUNE_C(0x000F9D), RUNE_C(0x000F9D), DT_CANONICAL},
+ {RUNE_C(0x000FA2), RUNE_C(0x000FA2), DT_CANONICAL},
+ {RUNE_C(0x000FA7), RUNE_C(0x000FA7), DT_CANONICAL},
+ {RUNE_C(0x000FAC), RUNE_C(0x000FAC), DT_CANONICAL},
+ {RUNE_C(0x000FB9), RUNE_C(0x000FB9), DT_CANONICAL},
+ {RUNE_C(0x001026), RUNE_C(0x001026), DT_CANONICAL},
+ {RUNE_C(0x0010FC), RUNE_C(0x0010FC), DT_SUPER},
+ {RUNE_C(0x001B06), RUNE_C(0x001B06), DT_CANONICAL},
+ {RUNE_C(0x001B08), RUNE_C(0x001B08), DT_CANONICAL},
+ {RUNE_C(0x001B0A), RUNE_C(0x001B0A), DT_CANONICAL},
+ {RUNE_C(0x001B0C), RUNE_C(0x001B0C), DT_CANONICAL},
+ {RUNE_C(0x001B0E), RUNE_C(0x001B0E), DT_CANONICAL},
+ {RUNE_C(0x001B12), RUNE_C(0x001B12), DT_CANONICAL},
+ {RUNE_C(0x001B3B), RUNE_C(0x001B3B), DT_CANONICAL},
+ {RUNE_C(0x001B3D), RUNE_C(0x001B3D), DT_CANONICAL},
+ {RUNE_C(0x001B40), RUNE_C(0x001B41), DT_CANONICAL},
+ {RUNE_C(0x001B43), RUNE_C(0x001B43), DT_CANONICAL},
+ {RUNE_C(0x001D2C), RUNE_C(0x001D2E), DT_SUPER},
+ {RUNE_C(0x001D30), RUNE_C(0x001D3A), DT_SUPER},
+ {RUNE_C(0x001D3C), RUNE_C(0x001D4D), DT_SUPER},
+ {RUNE_C(0x001D4F), RUNE_C(0x001D61), DT_SUPER},
+ {RUNE_C(0x001D62), RUNE_C(0x001D6A), DT_SUB},
+ {RUNE_C(0x001D78), RUNE_C(0x001D78), DT_SUPER},
+ {RUNE_C(0x001D9B), RUNE_C(0x001DBF), DT_SUPER},
+ {RUNE_C(0x001E00), RUNE_C(0x001E99), DT_CANONICAL},
+ {RUNE_C(0x001E9A), RUNE_C(0x001E9A), DT_COMPAT},
+ {RUNE_C(0x001E9B), RUNE_C(0x001E9B), DT_CANONICAL},
+ {RUNE_C(0x001EA0), RUNE_C(0x001EF9), DT_CANONICAL},
+ {RUNE_C(0x001F00), RUNE_C(0x001F15), DT_CANONICAL},
+ {RUNE_C(0x001F18), RUNE_C(0x001F1D), DT_CANONICAL},
+ {RUNE_C(0x001F20), RUNE_C(0x001F45), DT_CANONICAL},
+ {RUNE_C(0x001F48), RUNE_C(0x001F4D), DT_CANONICAL},
+ {RUNE_C(0x001F50), RUNE_C(0x001F57), DT_CANONICAL},
+ {RUNE_C(0x001F59), RUNE_C(0x001F59), DT_CANONICAL},
+ {RUNE_C(0x001F5B), RUNE_C(0x001F5B), DT_CANONICAL},
+ {RUNE_C(0x001F5D), RUNE_C(0x001F5D), DT_CANONICAL},
+ {RUNE_C(0x001F5F), RUNE_C(0x001F7D), DT_CANONICAL},
+ {RUNE_C(0x001F80), RUNE_C(0x001FB4), DT_CANONICAL},
+ {RUNE_C(0x001FB6), RUNE_C(0x001FBC), DT_CANONICAL},
+ {RUNE_C(0x001FBD), RUNE_C(0x001FBD), DT_COMPAT},
+ {RUNE_C(0x001FBE), RUNE_C(0x001FBE), DT_CANONICAL},
+ {RUNE_C(0x001FBF), RUNE_C(0x001FC0), DT_COMPAT},
+ {RUNE_C(0x001FC1), RUNE_C(0x001FC4), DT_CANONICAL},
+ {RUNE_C(0x001FC6), RUNE_C(0x001FD3), DT_CANONICAL},
+ {RUNE_C(0x001FD6), RUNE_C(0x001FDB), DT_CANONICAL},
+ {RUNE_C(0x001FDD), RUNE_C(0x001FEF), DT_CANONICAL},
+ {RUNE_C(0x001FF2), RUNE_C(0x001FF4), DT_CANONICAL},
+ {RUNE_C(0x001FF6), RUNE_C(0x001FFD), DT_CANONICAL},
+ {RUNE_C(0x001FFE), RUNE_C(0x001FFE), DT_COMPAT},
+ {RUNE_C(0x002000), RUNE_C(0x002001), DT_CANONICAL},
+ {RUNE_C(0x002002), RUNE_C(0x002006), DT_COMPAT},
+ {RUNE_C(0x002007), RUNE_C(0x002007), DT_NOBREAK},
+ {RUNE_C(0x002008), RUNE_C(0x00200A), DT_COMPAT},
+ {RUNE_C(0x002011), RUNE_C(0x002011), DT_NOBREAK},
+ {RUNE_C(0x002017), RUNE_C(0x002017), DT_COMPAT},
+ {RUNE_C(0x002024), RUNE_C(0x002026), DT_COMPAT},
+ {RUNE_C(0x00202F), RUNE_C(0x00202F), DT_NOBREAK},
+ {RUNE_C(0x002033), RUNE_C(0x002034), DT_COMPAT},
+ {RUNE_C(0x002036), RUNE_C(0x002037), DT_COMPAT},
+ {RUNE_C(0x00203C), RUNE_C(0x00203C), DT_COMPAT},
+ {RUNE_C(0x00203E), RUNE_C(0x00203E), DT_COMPAT},
+ {RUNE_C(0x002047), RUNE_C(0x002049), DT_COMPAT},
+ {RUNE_C(0x002057), RUNE_C(0x002057), DT_COMPAT},
+ {RUNE_C(0x00205F), RUNE_C(0x00205F), DT_COMPAT},
+ {RUNE_C(0x002070), RUNE_C(0x002071), DT_SUPER},
+ {RUNE_C(0x002074), RUNE_C(0x00207F), DT_SUPER},
+ {RUNE_C(0x002080), RUNE_C(0x00208E), DT_SUB},
+ {RUNE_C(0x002090), RUNE_C(0x00209C), DT_SUB},
+ {RUNE_C(0x0020A8), RUNE_C(0x0020A8), DT_COMPAT},
+ {RUNE_C(0x002100), RUNE_C(0x002101), DT_COMPAT},
+ {RUNE_C(0x002102), RUNE_C(0x002102), DT_FONT},
+ {RUNE_C(0x002103), RUNE_C(0x002103), DT_COMPAT},
+ {RUNE_C(0x002105), RUNE_C(0x002107), DT_COMPAT},
+ {RUNE_C(0x002109), RUNE_C(0x002109), DT_COMPAT},
+ {RUNE_C(0x00210A), RUNE_C(0x002113), DT_FONT},
+ {RUNE_C(0x002115), RUNE_C(0x002115), DT_FONT},
+ {RUNE_C(0x002116), RUNE_C(0x002116), DT_COMPAT},
+ {RUNE_C(0x002119), RUNE_C(0x00211D), DT_FONT},
+ {RUNE_C(0x002120), RUNE_C(0x002120), DT_SUPER},
+ {RUNE_C(0x002121), RUNE_C(0x002121), DT_COMPAT},
+ {RUNE_C(0x002122), RUNE_C(0x002122), DT_SUPER},
+ {RUNE_C(0x002124), RUNE_C(0x002124), DT_FONT},
+ {RUNE_C(0x002126), RUNE_C(0x002126), DT_CANONICAL},
+ {RUNE_C(0x002128), RUNE_C(0x002128), DT_FONT},
+ {RUNE_C(0x00212A), RUNE_C(0x00212B), DT_CANONICAL},
+ {RUNE_C(0x00212C), RUNE_C(0x00212D), DT_FONT},
+ {RUNE_C(0x00212F), RUNE_C(0x002131), DT_FONT},
+ {RUNE_C(0x002133), RUNE_C(0x002134), DT_FONT},
+ {RUNE_C(0x002135), RUNE_C(0x002138), DT_COMPAT},
+ {RUNE_C(0x002139), RUNE_C(0x002139), DT_FONT},
+ {RUNE_C(0x00213B), RUNE_C(0x00213B), DT_COMPAT},
+ {RUNE_C(0x00213C), RUNE_C(0x002140), DT_FONT},
+ {RUNE_C(0x002145), RUNE_C(0x002149), DT_FONT},
+ {RUNE_C(0x002150), RUNE_C(0x00215F), DT_FRACTION},
+ {RUNE_C(0x002160), RUNE_C(0x00217F), DT_COMPAT},
+ {RUNE_C(0x002189), RUNE_C(0x002189), DT_FRACTION},
+ {RUNE_C(0x00219A), RUNE_C(0x00219B), DT_CANONICAL},
+ {RUNE_C(0x0021AE), RUNE_C(0x0021AE), DT_CANONICAL},
+ {RUNE_C(0x0021CD), RUNE_C(0x0021CF), DT_CANONICAL},
+ {RUNE_C(0x002204), RUNE_C(0x002204), DT_CANONICAL},
+ {RUNE_C(0x002209), RUNE_C(0x002209), DT_CANONICAL},
+ {RUNE_C(0x00220C), RUNE_C(0x00220C), DT_CANONICAL},
+ {RUNE_C(0x002224), RUNE_C(0x002224), DT_CANONICAL},
+ {RUNE_C(0x002226), RUNE_C(0x002226), DT_CANONICAL},
+ {RUNE_C(0x00222C), RUNE_C(0x00222D), DT_COMPAT},
+ {RUNE_C(0x00222F), RUNE_C(0x002230), DT_COMPAT},
+ {RUNE_C(0x002241), RUNE_C(0x002241), DT_CANONICAL},
+ {RUNE_C(0x002244), RUNE_C(0x002244), DT_CANONICAL},
+ {RUNE_C(0x002247), RUNE_C(0x002247), DT_CANONICAL},
+ {RUNE_C(0x002249), RUNE_C(0x002249), DT_CANONICAL},
+ {RUNE_C(0x002260), RUNE_C(0x002260), DT_CANONICAL},
+ {RUNE_C(0x002262), RUNE_C(0x002262), DT_CANONICAL},
+ {RUNE_C(0x00226D), RUNE_C(0x002271), DT_CANONICAL},
+ {RUNE_C(0x002274), RUNE_C(0x002275), DT_CANONICAL},
+ {RUNE_C(0x002278), RUNE_C(0x002279), DT_CANONICAL},
+ {RUNE_C(0x002280), RUNE_C(0x002281), DT_CANONICAL},
+ {RUNE_C(0x002284), RUNE_C(0x002285), DT_CANONICAL},
+ {RUNE_C(0x002288), RUNE_C(0x002289), DT_CANONICAL},
+ {RUNE_C(0x0022AC), RUNE_C(0x0022AF), DT_CANONICAL},
+ {RUNE_C(0x0022E0), RUNE_C(0x0022E3), DT_CANONICAL},
+ {RUNE_C(0x0022EA), RUNE_C(0x0022ED), DT_CANONICAL},
+ {RUNE_C(0x002329), RUNE_C(0x00232A), DT_CANONICAL},
+ {RUNE_C(0x002460), RUNE_C(0x002473), DT_CIRCLE},
+ {RUNE_C(0x002474), RUNE_C(0x0024B5), DT_COMPAT},
+ {RUNE_C(0x0024B6), RUNE_C(0x0024EA), DT_CIRCLE},
+ {RUNE_C(0x002A0C), RUNE_C(0x002A0C), DT_COMPAT},
+ {RUNE_C(0x002A74), RUNE_C(0x002A76), DT_COMPAT},
+ {RUNE_C(0x002ADC), RUNE_C(0x002ADC), DT_CANONICAL},
+ {RUNE_C(0x002C7C), RUNE_C(0x002C7C), DT_SUB},
+ {RUNE_C(0x002C7D), RUNE_C(0x002C7D), DT_SUPER},
+ {RUNE_C(0x002D6F), RUNE_C(0x002D6F), DT_SUPER},
+ {RUNE_C(0x002E9F), RUNE_C(0x002E9F), DT_COMPAT},
+ {RUNE_C(0x002EF3), RUNE_C(0x002EF3), DT_COMPAT},
+ {RUNE_C(0x002F00), RUNE_C(0x002FD5), DT_COMPAT},
+ {RUNE_C(0x003000), RUNE_C(0x003000), DT_WIDE},
+ {RUNE_C(0x003036), RUNE_C(0x003036), DT_COMPAT},
+ {RUNE_C(0x003038), RUNE_C(0x00303A), DT_COMPAT},
+ {RUNE_C(0x00304C), RUNE_C(0x00304C), DT_CANONICAL},
+ {RUNE_C(0x00304E), RUNE_C(0x00304E), DT_CANONICAL},
+ {RUNE_C(0x003050), RUNE_C(0x003050), DT_CANONICAL},
+ {RUNE_C(0x003052), RUNE_C(0x003052), DT_CANONICAL},
+ {RUNE_C(0x003054), RUNE_C(0x003054), DT_CANONICAL},
+ {RUNE_C(0x003056), RUNE_C(0x003056), DT_CANONICAL},
+ {RUNE_C(0x003058), RUNE_C(0x003058), DT_CANONICAL},
+ {RUNE_C(0x00305A), RUNE_C(0x00305A), DT_CANONICAL},
+ {RUNE_C(0x00305C), RUNE_C(0x00305C), DT_CANONICAL},
+ {RUNE_C(0x00305E), RUNE_C(0x00305E), DT_CANONICAL},
+ {RUNE_C(0x003060), RUNE_C(0x003060), DT_CANONICAL},
+ {RUNE_C(0x003062), RUNE_C(0x003062), DT_CANONICAL},
+ {RUNE_C(0x003065), RUNE_C(0x003065), DT_CANONICAL},
+ {RUNE_C(0x003067), RUNE_C(0x003067), DT_CANONICAL},
+ {RUNE_C(0x003069), RUNE_C(0x003069), DT_CANONICAL},
+ {RUNE_C(0x003070), RUNE_C(0x003071), DT_CANONICAL},
+ {RUNE_C(0x003073), RUNE_C(0x003074), DT_CANONICAL},
+ {RUNE_C(0x003076), RUNE_C(0x003077), DT_CANONICAL},
+ {RUNE_C(0x003079), RUNE_C(0x00307A), DT_CANONICAL},
+ {RUNE_C(0x00307C), RUNE_C(0x00307D), DT_CANONICAL},
+ {RUNE_C(0x003094), RUNE_C(0x003094), DT_CANONICAL},
+ {RUNE_C(0x00309B), RUNE_C(0x00309C), DT_COMPAT},
+ {RUNE_C(0x00309E), RUNE_C(0x00309E), DT_CANONICAL},
+ {RUNE_C(0x00309F), RUNE_C(0x00309F), DT_VERTICAL},
+ {RUNE_C(0x0030AC), RUNE_C(0x0030AC), DT_CANONICAL},
+ {RUNE_C(0x0030AE), RUNE_C(0x0030AE), DT_CANONICAL},
+ {RUNE_C(0x0030B0), RUNE_C(0x0030B0), DT_CANONICAL},
+ {RUNE_C(0x0030B2), RUNE_C(0x0030B2), DT_CANONICAL},
+ {RUNE_C(0x0030B4), RUNE_C(0x0030B4), DT_CANONICAL},
+ {RUNE_C(0x0030B6), RUNE_C(0x0030B6), DT_CANONICAL},
+ {RUNE_C(0x0030B8), RUNE_C(0x0030B8), DT_CANONICAL},
+ {RUNE_C(0x0030BA), RUNE_C(0x0030BA), DT_CANONICAL},
+ {RUNE_C(0x0030BC), RUNE_C(0x0030BC), DT_CANONICAL},
+ {RUNE_C(0x0030BE), RUNE_C(0x0030BE), DT_CANONICAL},
+ {RUNE_C(0x0030C0), RUNE_C(0x0030C0), DT_CANONICAL},
+ {RUNE_C(0x0030C2), RUNE_C(0x0030C2), DT_CANONICAL},
+ {RUNE_C(0x0030C5), RUNE_C(0x0030C5), DT_CANONICAL},
+ {RUNE_C(0x0030C7), RUNE_C(0x0030C7), DT_CANONICAL},
+ {RUNE_C(0x0030C9), RUNE_C(0x0030C9), DT_CANONICAL},
+ {RUNE_C(0x0030D0), RUNE_C(0x0030D1), DT_CANONICAL},
+ {RUNE_C(0x0030D3), RUNE_C(0x0030D4), DT_CANONICAL},
+ {RUNE_C(0x0030D6), RUNE_C(0x0030D7), DT_CANONICAL},
+ {RUNE_C(0x0030D9), RUNE_C(0x0030DA), DT_CANONICAL},
+ {RUNE_C(0x0030DC), RUNE_C(0x0030DD), DT_CANONICAL},
+ {RUNE_C(0x0030F4), RUNE_C(0x0030F4), DT_CANONICAL},
+ {RUNE_C(0x0030F7), RUNE_C(0x0030FA), DT_CANONICAL},
+ {RUNE_C(0x0030FE), RUNE_C(0x0030FE), DT_CANONICAL},
+ {RUNE_C(0x0030FF), RUNE_C(0x0030FF), DT_VERTICAL},
+ {RUNE_C(0x003131), RUNE_C(0x00318E), DT_COMPAT},
+ {RUNE_C(0x003192), RUNE_C(0x00319F), DT_SUPER},
+ {RUNE_C(0x003200), RUNE_C(0x00321E), DT_COMPAT},
+ {RUNE_C(0x003220), RUNE_C(0x003243), DT_COMPAT},
+ {RUNE_C(0x003244), RUNE_C(0x003247), DT_CIRCLE},
+ {RUNE_C(0x003250), RUNE_C(0x003250), DT_SQUARE},
+ {RUNE_C(0x003251), RUNE_C(0x00327E), DT_CIRCLE},
+ {RUNE_C(0x003280), RUNE_C(0x0032BF), DT_CIRCLE},
+ {RUNE_C(0x0032C0), RUNE_C(0x0032CB), DT_COMPAT},
+ {RUNE_C(0x0032CC), RUNE_C(0x0032CF), DT_SQUARE},
+ {RUNE_C(0x0032D0), RUNE_C(0x0032FE), DT_CIRCLE},
+ {RUNE_C(0x0032FF), RUNE_C(0x003357), DT_SQUARE},
+ {RUNE_C(0x003358), RUNE_C(0x003370), DT_COMPAT},
+ {RUNE_C(0x003371), RUNE_C(0x0033DF), DT_SQUARE},
+ {RUNE_C(0x0033E0), RUNE_C(0x0033FE), DT_COMPAT},
+ {RUNE_C(0x0033FF), RUNE_C(0x0033FF), DT_SQUARE},
+ {RUNE_C(0x00A69C), RUNE_C(0x00A69D), DT_SUPER},
+ {RUNE_C(0x00A770), RUNE_C(0x00A770), DT_SUPER},
+ {RUNE_C(0x00A7F2), RUNE_C(0x00A7F4), DT_SUPER},
+ {RUNE_C(0x00A7F8), RUNE_C(0x00A7F9), DT_SUPER},
+ {RUNE_C(0x00AB5C), RUNE_C(0x00AB5F), DT_SUPER},
+ {RUNE_C(0x00AB69), RUNE_C(0x00AB69), DT_SUPER},
+ {RUNE_C(0x00AC00), RUNE_C(0x00D7A3), DT_CANONICAL},
+ {RUNE_C(0x00F900), RUNE_C(0x00FA0D), DT_CANONICAL},
+ {RUNE_C(0x00FA10), RUNE_C(0x00FA10), DT_CANONICAL},
+ {RUNE_C(0x00FA12), RUNE_C(0x00FA12), DT_CANONICAL},
+ {RUNE_C(0x00FA15), RUNE_C(0x00FA1E), DT_CANONICAL},
+ {RUNE_C(0x00FA20), RUNE_C(0x00FA20), DT_CANONICAL},
+ {RUNE_C(0x00FA22), RUNE_C(0x00FA22), DT_CANONICAL},
+ {RUNE_C(0x00FA25), RUNE_C(0x00FA26), DT_CANONICAL},
+ {RUNE_C(0x00FA2A), RUNE_C(0x00FA6D), DT_CANONICAL},
+ {RUNE_C(0x00FA70), RUNE_C(0x00FAD9), DT_CANONICAL},
+ {RUNE_C(0x00FB00), RUNE_C(0x00FB06), DT_COMPAT},
+ {RUNE_C(0x00FB13), RUNE_C(0x00FB17), DT_COMPAT},
+ {RUNE_C(0x00FB1D), RUNE_C(0x00FB1D), DT_CANONICAL},
+ {RUNE_C(0x00FB1F), RUNE_C(0x00FB1F), DT_CANONICAL},
+ {RUNE_C(0x00FB20), RUNE_C(0x00FB29), DT_FONT},
+ {RUNE_C(0x00FB2A), RUNE_C(0x00FB36), DT_CANONICAL},
+ {RUNE_C(0x00FB38), RUNE_C(0x00FB3C), DT_CANONICAL},
+ {RUNE_C(0x00FB3E), RUNE_C(0x00FB3E), DT_CANONICAL},
+ {RUNE_C(0x00FB40), RUNE_C(0x00FB41), DT_CANONICAL},
+ {RUNE_C(0x00FB43), RUNE_C(0x00FB44), DT_CANONICAL},
+ {RUNE_C(0x00FB46), RUNE_C(0x00FB4E), DT_CANONICAL},
+ {RUNE_C(0x00FB4F), RUNE_C(0x00FB4F), DT_COMPAT},
+ {RUNE_C(0x00FB50), RUNE_C(0x00FB50), DT_ISOLATED},
+ {RUNE_C(0x00FB51), RUNE_C(0x00FB51), DT_FINAL},
+ {RUNE_C(0x00FB52), RUNE_C(0x00FB52), DT_ISOLATED},
+ {RUNE_C(0x00FB53), RUNE_C(0x00FB53), DT_FINAL},
+ {RUNE_C(0x00FB54), RUNE_C(0x00FB54), DT_INITIAL},
+ {RUNE_C(0x00FB55), RUNE_C(0x00FB55), DT_MEDIAL},
+ {RUNE_C(0x00FB56), RUNE_C(0x00FB56), DT_ISOLATED},
+ {RUNE_C(0x00FB57), RUNE_C(0x00FB57), DT_FINAL},
+ {RUNE_C(0x00FB58), RUNE_C(0x00FB58), DT_INITIAL},
+ {RUNE_C(0x00FB59), RUNE_C(0x00FB59), DT_MEDIAL},
+ {RUNE_C(0x00FB5A), RUNE_C(0x00FB5A), DT_ISOLATED},
+ {RUNE_C(0x00FB5B), RUNE_C(0x00FB5B), DT_FINAL},
+ {RUNE_C(0x00FB5C), RUNE_C(0x00FB5C), DT_INITIAL},
+ {RUNE_C(0x00FB5D), RUNE_C(0x00FB5D), DT_MEDIAL},
+ {RUNE_C(0x00FB5E), RUNE_C(0x00FB5E), DT_ISOLATED},
+ {RUNE_C(0x00FB5F), RUNE_C(0x00FB5F), DT_FINAL},
+ {RUNE_C(0x00FB60), RUNE_C(0x00FB60), DT_INITIAL},
+ {RUNE_C(0x00FB61), RUNE_C(0x00FB61), DT_MEDIAL},
+ {RUNE_C(0x00FB62), RUNE_C(0x00FB62), DT_ISOLATED},
+ {RUNE_C(0x00FB63), RUNE_C(0x00FB63), DT_FINAL},
+ {RUNE_C(0x00FB64), RUNE_C(0x00FB64), DT_INITIAL},
+ {RUNE_C(0x00FB65), RUNE_C(0x00FB65), DT_MEDIAL},
+ {RUNE_C(0x00FB66), RUNE_C(0x00FB66), DT_ISOLATED},
+ {RUNE_C(0x00FB67), RUNE_C(0x00FB67), DT_FINAL},
+ {RUNE_C(0x00FB68), RUNE_C(0x00FB68), DT_INITIAL},
+ {RUNE_C(0x00FB69), RUNE_C(0x00FB69), DT_MEDIAL},
+ {RUNE_C(0x00FB6A), RUNE_C(0x00FB6A), DT_ISOLATED},
+ {RUNE_C(0x00FB6B), RUNE_C(0x00FB6B), DT_FINAL},
+ {RUNE_C(0x00FB6C), RUNE_C(0x00FB6C), DT_INITIAL},
+ {RUNE_C(0x00FB6D), RUNE_C(0x00FB6D), DT_MEDIAL},
+ {RUNE_C(0x00FB6E), RUNE_C(0x00FB6E), DT_ISOLATED},
+ {RUNE_C(0x00FB6F), RUNE_C(0x00FB6F), DT_FINAL},
+ {RUNE_C(0x00FB70), RUNE_C(0x00FB70), DT_INITIAL},
+ {RUNE_C(0x00FB71), RUNE_C(0x00FB71), DT_MEDIAL},
+ {RUNE_C(0x00FB72), RUNE_C(0x00FB72), DT_ISOLATED},
+ {RUNE_C(0x00FB73), RUNE_C(0x00FB73), DT_FINAL},
+ {RUNE_C(0x00FB74), RUNE_C(0x00FB74), DT_INITIAL},
+ {RUNE_C(0x00FB75), RUNE_C(0x00FB75), DT_MEDIAL},
+ {RUNE_C(0x00FB76), RUNE_C(0x00FB76), DT_ISOLATED},
+ {RUNE_C(0x00FB77), RUNE_C(0x00FB77), DT_FINAL},
+ {RUNE_C(0x00FB78), RUNE_C(0x00FB78), DT_INITIAL},
+ {RUNE_C(0x00FB79), RUNE_C(0x00FB79), DT_MEDIAL},
+ {RUNE_C(0x00FB7A), RUNE_C(0x00FB7A), DT_ISOLATED},
+ {RUNE_C(0x00FB7B), RUNE_C(0x00FB7B), DT_FINAL},
+ {RUNE_C(0x00FB7C), RUNE_C(0x00FB7C), DT_INITIAL},
+ {RUNE_C(0x00FB7D), RUNE_C(0x00FB7D), DT_MEDIAL},
+ {RUNE_C(0x00FB7E), RUNE_C(0x00FB7E), DT_ISOLATED},
+ {RUNE_C(0x00FB7F), RUNE_C(0x00FB7F), DT_FINAL},
+ {RUNE_C(0x00FB80), RUNE_C(0x00FB80), DT_INITIAL},
+ {RUNE_C(0x00FB81), RUNE_C(0x00FB81), DT_MEDIAL},
+ {RUNE_C(0x00FB82), RUNE_C(0x00FB82), DT_ISOLATED},
+ {RUNE_C(0x00FB83), RUNE_C(0x00FB83), DT_FINAL},
+ {RUNE_C(0x00FB84), RUNE_C(0x00FB84), DT_ISOLATED},
+ {RUNE_C(0x00FB85), RUNE_C(0x00FB85), DT_FINAL},
+ {RUNE_C(0x00FB86), RUNE_C(0x00FB86), DT_ISOLATED},
+ {RUNE_C(0x00FB87), RUNE_C(0x00FB87), DT_FINAL},
+ {RUNE_C(0x00FB88), RUNE_C(0x00FB88), DT_ISOLATED},
+ {RUNE_C(0x00FB89), RUNE_C(0x00FB89), DT_FINAL},
+ {RUNE_C(0x00FB8A), RUNE_C(0x00FB8A), DT_ISOLATED},
+ {RUNE_C(0x00FB8B), RUNE_C(0x00FB8B), DT_FINAL},
+ {RUNE_C(0x00FB8C), RUNE_C(0x00FB8C), DT_ISOLATED},
+ {RUNE_C(0x00FB8D), RUNE_C(0x00FB8D), DT_FINAL},
+ {RUNE_C(0x00FB8E), RUNE_C(0x00FB8E), DT_ISOLATED},
+ {RUNE_C(0x00FB8F), RUNE_C(0x00FB8F), DT_FINAL},
+ {RUNE_C(0x00FB90), RUNE_C(0x00FB90), DT_INITIAL},
+ {RUNE_C(0x00FB91), RUNE_C(0x00FB91), DT_MEDIAL},
+ {RUNE_C(0x00FB92), RUNE_C(0x00FB92), DT_ISOLATED},
+ {RUNE_C(0x00FB93), RUNE_C(0x00FB93), DT_FINAL},
+ {RUNE_C(0x00FB94), RUNE_C(0x00FB94), DT_INITIAL},
+ {RUNE_C(0x00FB95), RUNE_C(0x00FB95), DT_MEDIAL},
+ {RUNE_C(0x00FB96), RUNE_C(0x00FB96), DT_ISOLATED},
+ {RUNE_C(0x00FB97), RUNE_C(0x00FB97), DT_FINAL},
+ {RUNE_C(0x00FB98), RUNE_C(0x00FB98), DT_INITIAL},
+ {RUNE_C(0x00FB99), RUNE_C(0x00FB99), DT_MEDIAL},
+ {RUNE_C(0x00FB9A), RUNE_C(0x00FB9A), DT_ISOLATED},
+ {RUNE_C(0x00FB9B), RUNE_C(0x00FB9B), DT_FINAL},
+ {RUNE_C(0x00FB9C), RUNE_C(0x00FB9C), DT_INITIAL},
+ {RUNE_C(0x00FB9D), RUNE_C(0x00FB9D), DT_MEDIAL},
+ {RUNE_C(0x00FB9E), RUNE_C(0x00FB9E), DT_ISOLATED},
+ {RUNE_C(0x00FB9F), RUNE_C(0x00FB9F), DT_FINAL},
+ {RUNE_C(0x00FBA0), RUNE_C(0x00FBA0), DT_ISOLATED},
+ {RUNE_C(0x00FBA1), RUNE_C(0x00FBA1), DT_FINAL},
+ {RUNE_C(0x00FBA2), RUNE_C(0x00FBA2), DT_INITIAL},
+ {RUNE_C(0x00FBA3), RUNE_C(0x00FBA3), DT_MEDIAL},
+ {RUNE_C(0x00FBA4), RUNE_C(0x00FBA4), DT_ISOLATED},
+ {RUNE_C(0x00FBA5), RUNE_C(0x00FBA5), DT_FINAL},
+ {RUNE_C(0x00FBA6), RUNE_C(0x00FBA6), DT_ISOLATED},
+ {RUNE_C(0x00FBA7), RUNE_C(0x00FBA7), DT_FINAL},
+ {RUNE_C(0x00FBA8), RUNE_C(0x00FBA8), DT_INITIAL},
+ {RUNE_C(0x00FBA9), RUNE_C(0x00FBA9), DT_MEDIAL},
+ {RUNE_C(0x00FBAA), RUNE_C(0x00FBAA), DT_ISOLATED},
+ {RUNE_C(0x00FBAB), RUNE_C(0x00FBAB), DT_FINAL},
+ {RUNE_C(0x00FBAC), RUNE_C(0x00FBAC), DT_INITIAL},
+ {RUNE_C(0x00FBAD), RUNE_C(0x00FBAD), DT_MEDIAL},
+ {RUNE_C(0x00FBAE), RUNE_C(0x00FBAE), DT_ISOLATED},
+ {RUNE_C(0x00FBAF), RUNE_C(0x00FBAF), DT_FINAL},
+ {RUNE_C(0x00FBB0), RUNE_C(0x00FBB0), DT_ISOLATED},
+ {RUNE_C(0x00FBB1), RUNE_C(0x00FBB1), DT_FINAL},
+ {RUNE_C(0x00FBD3), RUNE_C(0x00FBD3), DT_ISOLATED},
+ {RUNE_C(0x00FBD4), RUNE_C(0x00FBD4), DT_FINAL},
+ {RUNE_C(0x00FBD5), RUNE_C(0x00FBD5), DT_INITIAL},
+ {RUNE_C(0x00FBD6), RUNE_C(0x00FBD6), DT_MEDIAL},
+ {RUNE_C(0x00FBD7), RUNE_C(0x00FBD7), DT_ISOLATED},
+ {RUNE_C(0x00FBD8), RUNE_C(0x00FBD8), DT_FINAL},
+ {RUNE_C(0x00FBD9), RUNE_C(0x00FBD9), DT_ISOLATED},
+ {RUNE_C(0x00FBDA), RUNE_C(0x00FBDA), DT_FINAL},
+ {RUNE_C(0x00FBDB), RUNE_C(0x00FBDB), DT_ISOLATED},
+ {RUNE_C(0x00FBDC), RUNE_C(0x00FBDC), DT_FINAL},
+ {RUNE_C(0x00FBDD), RUNE_C(0x00FBDE), DT_ISOLATED},
+ {RUNE_C(0x00FBDF), RUNE_C(0x00FBDF), DT_FINAL},
+ {RUNE_C(0x00FBE0), RUNE_C(0x00FBE0), DT_ISOLATED},
+ {RUNE_C(0x00FBE1), RUNE_C(0x00FBE1), DT_FINAL},
+ {RUNE_C(0x00FBE2), RUNE_C(0x00FBE2), DT_ISOLATED},
+ {RUNE_C(0x00FBE3), RUNE_C(0x00FBE3), DT_FINAL},
+ {RUNE_C(0x00FBE4), RUNE_C(0x00FBE4), DT_ISOLATED},
+ {RUNE_C(0x00FBE5), RUNE_C(0x00FBE5), DT_FINAL},
+ {RUNE_C(0x00FBE6), RUNE_C(0x00FBE6), DT_INITIAL},
+ {RUNE_C(0x00FBE7), RUNE_C(0x00FBE7), DT_MEDIAL},
+ {RUNE_C(0x00FBE8), RUNE_C(0x00FBE8), DT_INITIAL},
+ {RUNE_C(0x00FBE9), RUNE_C(0x00FBE9), DT_MEDIAL},
+ {RUNE_C(0x00FBEA), RUNE_C(0x00FBEA), DT_ISOLATED},
+ {RUNE_C(0x00FBEB), RUNE_C(0x00FBEB), DT_FINAL},
+ {RUNE_C(0x00FBEC), RUNE_C(0x00FBEC), DT_ISOLATED},
+ {RUNE_C(0x00FBED), RUNE_C(0x00FBED), DT_FINAL},
+ {RUNE_C(0x00FBEE), RUNE_C(0x00FBEE), DT_ISOLATED},
+ {RUNE_C(0x00FBEF), RUNE_C(0x00FBEF), DT_FINAL},
+ {RUNE_C(0x00FBF0), RUNE_C(0x00FBF0), DT_ISOLATED},
+ {RUNE_C(0x00FBF1), RUNE_C(0x00FBF1), DT_FINAL},
+ {RUNE_C(0x00FBF2), RUNE_C(0x00FBF2), DT_ISOLATED},
+ {RUNE_C(0x00FBF3), RUNE_C(0x00FBF3), DT_FINAL},
+ {RUNE_C(0x00FBF4), RUNE_C(0x00FBF4), DT_ISOLATED},
+ {RUNE_C(0x00FBF5), RUNE_C(0x00FBF5), DT_FINAL},
+ {RUNE_C(0x00FBF6), RUNE_C(0x00FBF6), DT_ISOLATED},
+ {RUNE_C(0x00FBF7), RUNE_C(0x00FBF7), DT_FINAL},
+ {RUNE_C(0x00FBF8), RUNE_C(0x00FBF8), DT_INITIAL},
+ {RUNE_C(0x00FBF9), RUNE_C(0x00FBF9), DT_ISOLATED},
+ {RUNE_C(0x00FBFA), RUNE_C(0x00FBFA), DT_FINAL},
+ {RUNE_C(0x00FBFB), RUNE_C(0x00FBFB), DT_INITIAL},
+ {RUNE_C(0x00FBFC), RUNE_C(0x00FBFC), DT_ISOLATED},
+ {RUNE_C(0x00FBFD), RUNE_C(0x00FBFD), DT_FINAL},
+ {RUNE_C(0x00FBFE), RUNE_C(0x00FBFE), DT_INITIAL},
+ {RUNE_C(0x00FBFF), RUNE_C(0x00FBFF), DT_MEDIAL},
+ {RUNE_C(0x00FC00), RUNE_C(0x00FC63), DT_ISOLATED},
+ {RUNE_C(0x00FC64), RUNE_C(0x00FC96), DT_FINAL},
+ {RUNE_C(0x00FC97), RUNE_C(0x00FCDE), DT_INITIAL},
+ {RUNE_C(0x00FCDF), RUNE_C(0x00FCF4), DT_MEDIAL},
+ {RUNE_C(0x00FCF5), RUNE_C(0x00FD10), DT_ISOLATED},
+ {RUNE_C(0x00FD11), RUNE_C(0x00FD2C), DT_FINAL},
+ {RUNE_C(0x00FD2D), RUNE_C(0x00FD33), DT_INITIAL},
+ {RUNE_C(0x00FD34), RUNE_C(0x00FD3B), DT_MEDIAL},
+ {RUNE_C(0x00FD3C), RUNE_C(0x00FD3C), DT_FINAL},
+ {RUNE_C(0x00FD3D), RUNE_C(0x00FD3D), DT_ISOLATED},
+ {RUNE_C(0x00FD50), RUNE_C(0x00FD50), DT_INITIAL},
+ {RUNE_C(0x00FD51), RUNE_C(0x00FD51), DT_FINAL},
+ {RUNE_C(0x00FD52), RUNE_C(0x00FD57), DT_INITIAL},
+ {RUNE_C(0x00FD58), RUNE_C(0x00FD58), DT_FINAL},
+ {RUNE_C(0x00FD59), RUNE_C(0x00FD59), DT_INITIAL},
+ {RUNE_C(0x00FD5A), RUNE_C(0x00FD5B), DT_FINAL},
+ {RUNE_C(0x00FD5C), RUNE_C(0x00FD5D), DT_INITIAL},
+ {RUNE_C(0x00FD5E), RUNE_C(0x00FD5F), DT_FINAL},
+ {RUNE_C(0x00FD60), RUNE_C(0x00FD61), DT_INITIAL},
+ {RUNE_C(0x00FD62), RUNE_C(0x00FD62), DT_FINAL},
+ {RUNE_C(0x00FD63), RUNE_C(0x00FD63), DT_INITIAL},
+ {RUNE_C(0x00FD64), RUNE_C(0x00FD64), DT_FINAL},
+ {RUNE_C(0x00FD65), RUNE_C(0x00FD65), DT_INITIAL},
+ {RUNE_C(0x00FD66), RUNE_C(0x00FD67), DT_FINAL},
+ {RUNE_C(0x00FD68), RUNE_C(0x00FD68), DT_INITIAL},
+ {RUNE_C(0x00FD69), RUNE_C(0x00FD6A), DT_FINAL},
+ {RUNE_C(0x00FD6B), RUNE_C(0x00FD6B), DT_INITIAL},
+ {RUNE_C(0x00FD6C), RUNE_C(0x00FD6C), DT_FINAL},
+ {RUNE_C(0x00FD6D), RUNE_C(0x00FD6D), DT_INITIAL},
+ {RUNE_C(0x00FD6E), RUNE_C(0x00FD6F), DT_FINAL},
+ {RUNE_C(0x00FD70), RUNE_C(0x00FD70), DT_INITIAL},
+ {RUNE_C(0x00FD71), RUNE_C(0x00FD71), DT_FINAL},
+ {RUNE_C(0x00FD72), RUNE_C(0x00FD73), DT_INITIAL},
+ {RUNE_C(0x00FD74), RUNE_C(0x00FD76), DT_FINAL},
+ {RUNE_C(0x00FD77), RUNE_C(0x00FD77), DT_INITIAL},
+ {RUNE_C(0x00FD78), RUNE_C(0x00FD7C), DT_FINAL},
+ {RUNE_C(0x00FD7D), RUNE_C(0x00FD7D), DT_INITIAL},
+ {RUNE_C(0x00FD7E), RUNE_C(0x00FD82), DT_FINAL},
+ {RUNE_C(0x00FD83), RUNE_C(0x00FD83), DT_INITIAL},
+ {RUNE_C(0x00FD84), RUNE_C(0x00FD85), DT_FINAL},
+ {RUNE_C(0x00FD86), RUNE_C(0x00FD86), DT_INITIAL},
+ {RUNE_C(0x00FD87), RUNE_C(0x00FD87), DT_FINAL},
+ {RUNE_C(0x00FD88), RUNE_C(0x00FD8A), DT_INITIAL},
+ {RUNE_C(0x00FD8B), RUNE_C(0x00FD8B), DT_FINAL},
+ {RUNE_C(0x00FD8C), RUNE_C(0x00FD8F), DT_INITIAL},
+ {RUNE_C(0x00FD92), RUNE_C(0x00FD95), DT_INITIAL},
+ {RUNE_C(0x00FD96), RUNE_C(0x00FD97), DT_FINAL},
+ {RUNE_C(0x00FD98), RUNE_C(0x00FD98), DT_INITIAL},
+ {RUNE_C(0x00FD99), RUNE_C(0x00FD9C), DT_FINAL},
+ {RUNE_C(0x00FD9D), RUNE_C(0x00FD9D), DT_INITIAL},
+ {RUNE_C(0x00FD9E), RUNE_C(0x00FDB3), DT_FINAL},
+ {RUNE_C(0x00FDB4), RUNE_C(0x00FDB5), DT_INITIAL},
+ {RUNE_C(0x00FDB6), RUNE_C(0x00FDB7), DT_FINAL},
+ {RUNE_C(0x00FDB8), RUNE_C(0x00FDB8), DT_INITIAL},
+ {RUNE_C(0x00FDB9), RUNE_C(0x00FDB9), DT_FINAL},
+ {RUNE_C(0x00FDBA), RUNE_C(0x00FDBA), DT_INITIAL},
+ {RUNE_C(0x00FDBB), RUNE_C(0x00FDC2), DT_FINAL},
+ {RUNE_C(0x00FDC3), RUNE_C(0x00FDC5), DT_INITIAL},
+ {RUNE_C(0x00FDC6), RUNE_C(0x00FDC7), DT_FINAL},
+ {RUNE_C(0x00FDF0), RUNE_C(0x00FDFC), DT_ISOLATED},
+ {RUNE_C(0x00FE10), RUNE_C(0x00FE19), DT_VERTICAL},
+ {RUNE_C(0x00FE30), RUNE_C(0x00FE44), DT_VERTICAL},
+ {RUNE_C(0x00FE47), RUNE_C(0x00FE48), DT_VERTICAL},
+ {RUNE_C(0x00FE49), RUNE_C(0x00FE4F), DT_COMPAT},
+ {RUNE_C(0x00FE50), RUNE_C(0x00FE52), DT_SMALL},
+ {RUNE_C(0x00FE54), RUNE_C(0x00FE66), DT_SMALL},
+ {RUNE_C(0x00FE68), RUNE_C(0x00FE6B), DT_SMALL},
+ {RUNE_C(0x00FE70), RUNE_C(0x00FE70), DT_ISOLATED},
+ {RUNE_C(0x00FE71), RUNE_C(0x00FE71), DT_MEDIAL},
+ {RUNE_C(0x00FE72), RUNE_C(0x00FE72), DT_ISOLATED},
+ {RUNE_C(0x00FE74), RUNE_C(0x00FE74), DT_ISOLATED},
+ {RUNE_C(0x00FE76), RUNE_C(0x00FE76), DT_ISOLATED},
+ {RUNE_C(0x00FE77), RUNE_C(0x00FE77), DT_MEDIAL},
+ {RUNE_C(0x00FE78), RUNE_C(0x00FE78), DT_ISOLATED},
+ {RUNE_C(0x00FE79), RUNE_C(0x00FE79), DT_MEDIAL},
+ {RUNE_C(0x00FE7A), RUNE_C(0x00FE7A), DT_ISOLATED},
+ {RUNE_C(0x00FE7B), RUNE_C(0x00FE7B), DT_MEDIAL},
+ {RUNE_C(0x00FE7C), RUNE_C(0x00FE7C), DT_ISOLATED},
+ {RUNE_C(0x00FE7D), RUNE_C(0x00FE7D), DT_MEDIAL},
+ {RUNE_C(0x00FE7E), RUNE_C(0x00FE7E), DT_ISOLATED},
+ {RUNE_C(0x00FE7F), RUNE_C(0x00FE7F), DT_MEDIAL},
+ {RUNE_C(0x00FE80), RUNE_C(0x00FE81), DT_ISOLATED},
+ {RUNE_C(0x00FE82), RUNE_C(0x00FE82), DT_FINAL},
+ {RUNE_C(0x00FE83), RUNE_C(0x00FE83), DT_ISOLATED},
+ {RUNE_C(0x00FE84), RUNE_C(0x00FE84), DT_FINAL},
+ {RUNE_C(0x00FE85), RUNE_C(0x00FE85), DT_ISOLATED},
+ {RUNE_C(0x00FE86), RUNE_C(0x00FE86), DT_FINAL},
+ {RUNE_C(0x00FE87), RUNE_C(0x00FE87), DT_ISOLATED},
+ {RUNE_C(0x00FE88), RUNE_C(0x00FE88), DT_FINAL},
+ {RUNE_C(0x00FE89), RUNE_C(0x00FE89), DT_ISOLATED},
+ {RUNE_C(0x00FE8A), RUNE_C(0x00FE8A), DT_FINAL},
+ {RUNE_C(0x00FE8B), RUNE_C(0x00FE8B), DT_INITIAL},
+ {RUNE_C(0x00FE8C), RUNE_C(0x00FE8C), DT_MEDIAL},
+ {RUNE_C(0x00FE8D), RUNE_C(0x00FE8D), DT_ISOLATED},
+ {RUNE_C(0x00FE8E), RUNE_C(0x00FE8E), DT_FINAL},
+ {RUNE_C(0x00FE8F), RUNE_C(0x00FE8F), DT_ISOLATED},
+ {RUNE_C(0x00FE90), RUNE_C(0x00FE90), DT_FINAL},
+ {RUNE_C(0x00FE91), RUNE_C(0x00FE91), DT_INITIAL},
+ {RUNE_C(0x00FE92), RUNE_C(0x00FE92), DT_MEDIAL},
+ {RUNE_C(0x00FE93), RUNE_C(0x00FE93), DT_ISOLATED},
+ {RUNE_C(0x00FE94), RUNE_C(0x00FE94), DT_FINAL},
+ {RUNE_C(0x00FE95), RUNE_C(0x00FE95), DT_ISOLATED},
+ {RUNE_C(0x00FE96), RUNE_C(0x00FE96), DT_FINAL},
+ {RUNE_C(0x00FE97), RUNE_C(0x00FE97), DT_INITIAL},
+ {RUNE_C(0x00FE98), RUNE_C(0x00FE98), DT_MEDIAL},
+ {RUNE_C(0x00FE99), RUNE_C(0x00FE99), DT_ISOLATED},
+ {RUNE_C(0x00FE9A), RUNE_C(0x00FE9A), DT_FINAL},
+ {RUNE_C(0x00FE9B), RUNE_C(0x00FE9B), DT_INITIAL},
+ {RUNE_C(0x00FE9C), RUNE_C(0x00FE9C), DT_MEDIAL},
+ {RUNE_C(0x00FE9D), RUNE_C(0x00FE9D), DT_ISOLATED},
+ {RUNE_C(0x00FE9E), RUNE_C(0x00FE9E), DT_FINAL},
+ {RUNE_C(0x00FE9F), RUNE_C(0x00FE9F), DT_INITIAL},
+ {RUNE_C(0x00FEA0), RUNE_C(0x00FEA0), DT_MEDIAL},
+ {RUNE_C(0x00FEA1), RUNE_C(0x00FEA1), DT_ISOLATED},
+ {RUNE_C(0x00FEA2), RUNE_C(0x00FEA2), DT_FINAL},
+ {RUNE_C(0x00FEA3), RUNE_C(0x00FEA3), DT_INITIAL},
+ {RUNE_C(0x00FEA4), RUNE_C(0x00FEA4), DT_MEDIAL},
+ {RUNE_C(0x00FEA5), RUNE_C(0x00FEA5), DT_ISOLATED},
+ {RUNE_C(0x00FEA6), RUNE_C(0x00FEA6), DT_FINAL},
+ {RUNE_C(0x00FEA7), RUNE_C(0x00FEA7), DT_INITIAL},
+ {RUNE_C(0x00FEA8), RUNE_C(0x00FEA8), DT_MEDIAL},
+ {RUNE_C(0x00FEA9), RUNE_C(0x00FEA9), DT_ISOLATED},
+ {RUNE_C(0x00FEAA), RUNE_C(0x00FEAA), DT_FINAL},
+ {RUNE_C(0x00FEAB), RUNE_C(0x00FEAB), DT_ISOLATED},
+ {RUNE_C(0x00FEAC), RUNE_C(0x00FEAC), DT_FINAL},
+ {RUNE_C(0x00FEAD), RUNE_C(0x00FEAD), DT_ISOLATED},
+ {RUNE_C(0x00FEAE), RUNE_C(0x00FEAE), DT_FINAL},
+ {RUNE_C(0x00FEAF), RUNE_C(0x00FEAF), DT_ISOLATED},
+ {RUNE_C(0x00FEB0), RUNE_C(0x00FEB0), DT_FINAL},
+ {RUNE_C(0x00FEB1), RUNE_C(0x00FEB1), DT_ISOLATED},
+ {RUNE_C(0x00FEB2), RUNE_C(0x00FEB2), DT_FINAL},
+ {RUNE_C(0x00FEB3), RUNE_C(0x00FEB3), DT_INITIAL},
+ {RUNE_C(0x00FEB4), RUNE_C(0x00FEB4), DT_MEDIAL},
+ {RUNE_C(0x00FEB5), RUNE_C(0x00FEB5), DT_ISOLATED},
+ {RUNE_C(0x00FEB6), RUNE_C(0x00FEB6), DT_FINAL},
+ {RUNE_C(0x00FEB7), RUNE_C(0x00FEB7), DT_INITIAL},
+ {RUNE_C(0x00FEB8), RUNE_C(0x00FEB8), DT_MEDIAL},
+ {RUNE_C(0x00FEB9), RUNE_C(0x00FEB9), DT_ISOLATED},
+ {RUNE_C(0x00FEBA), RUNE_C(0x00FEBA), DT_FINAL},
+ {RUNE_C(0x00FEBB), RUNE_C(0x00FEBB), DT_INITIAL},
+ {RUNE_C(0x00FEBC), RUNE_C(0x00FEBC), DT_MEDIAL},
+ {RUNE_C(0x00FEBD), RUNE_C(0x00FEBD), DT_ISOLATED},
+ {RUNE_C(0x00FEBE), RUNE_C(0x00FEBE), DT_FINAL},
+ {RUNE_C(0x00FEBF), RUNE_C(0x00FEBF), DT_INITIAL},
+ {RUNE_C(0x00FEC0), RUNE_C(0x00FEC0), DT_MEDIAL},
+ {RUNE_C(0x00FEC1), RUNE_C(0x00FEC1), DT_ISOLATED},
+ {RUNE_C(0x00FEC2), RUNE_C(0x00FEC2), DT_FINAL},
+ {RUNE_C(0x00FEC3), RUNE_C(0x00FEC3), DT_INITIAL},
+ {RUNE_C(0x00FEC4), RUNE_C(0x00FEC4), DT_MEDIAL},
+ {RUNE_C(0x00FEC5), RUNE_C(0x00FEC5), DT_ISOLATED},
+ {RUNE_C(0x00FEC6), RUNE_C(0x00FEC6), DT_FINAL},
+ {RUNE_C(0x00FEC7), RUNE_C(0x00FEC7), DT_INITIAL},
+ {RUNE_C(0x00FEC8), RUNE_C(0x00FEC8), DT_MEDIAL},
+ {RUNE_C(0x00FEC9), RUNE_C(0x00FEC9), DT_ISOLATED},
+ {RUNE_C(0x00FECA), RUNE_C(0x00FECA), DT_FINAL},
+ {RUNE_C(0x00FECB), RUNE_C(0x00FECB), DT_INITIAL},
+ {RUNE_C(0x00FECC), RUNE_C(0x00FECC), DT_MEDIAL},
+ {RUNE_C(0x00FECD), RUNE_C(0x00FECD), DT_ISOLATED},
+ {RUNE_C(0x00FECE), RUNE_C(0x00FECE), DT_FINAL},
+ {RUNE_C(0x00FECF), RUNE_C(0x00FECF), DT_INITIAL},
+ {RUNE_C(0x00FED0), RUNE_C(0x00FED0), DT_MEDIAL},
+ {RUNE_C(0x00FED1), RUNE_C(0x00FED1), DT_ISOLATED},
+ {RUNE_C(0x00FED2), RUNE_C(0x00FED2), DT_FINAL},
+ {RUNE_C(0x00FED3), RUNE_C(0x00FED3), DT_INITIAL},
+ {RUNE_C(0x00FED4), RUNE_C(0x00FED4), DT_MEDIAL},
+ {RUNE_C(0x00FED5), RUNE_C(0x00FED5), DT_ISOLATED},
+ {RUNE_C(0x00FED6), RUNE_C(0x00FED6), DT_FINAL},
+ {RUNE_C(0x00FED7), RUNE_C(0x00FED7), DT_INITIAL},
+ {RUNE_C(0x00FED8), RUNE_C(0x00FED8), DT_MEDIAL},
+ {RUNE_C(0x00FED9), RUNE_C(0x00FED9), DT_ISOLATED},
+ {RUNE_C(0x00FEDA), RUNE_C(0x00FEDA), DT_FINAL},
+ {RUNE_C(0x00FEDB), RUNE_C(0x00FEDB), DT_INITIAL},
+ {RUNE_C(0x00FEDC), RUNE_C(0x00FEDC), DT_MEDIAL},
+ {RUNE_C(0x00FEDD), RUNE_C(0x00FEDD), DT_ISOLATED},
+ {RUNE_C(0x00FEDE), RUNE_C(0x00FEDE), DT_FINAL},
+ {RUNE_C(0x00FEDF), RUNE_C(0x00FEDF), DT_INITIAL},
+ {RUNE_C(0x00FEE0), RUNE_C(0x00FEE0), DT_MEDIAL},
+ {RUNE_C(0x00FEE1), RUNE_C(0x00FEE1), DT_ISOLATED},
+ {RUNE_C(0x00FEE2), RUNE_C(0x00FEE2), DT_FINAL},
+ {RUNE_C(0x00FEE3), RUNE_C(0x00FEE3), DT_INITIAL},
+ {RUNE_C(0x00FEE4), RUNE_C(0x00FEE4), DT_MEDIAL},
+ {RUNE_C(0x00FEE5), RUNE_C(0x00FEE5), DT_ISOLATED},
+ {RUNE_C(0x00FEE6), RUNE_C(0x00FEE6), DT_FINAL},
+ {RUNE_C(0x00FEE7), RUNE_C(0x00FEE7), DT_INITIAL},
+ {RUNE_C(0x00FEE8), RUNE_C(0x00FEE8), DT_MEDIAL},
+ {RUNE_C(0x00FEE9), RUNE_C(0x00FEE9), DT_ISOLATED},
+ {RUNE_C(0x00FEEA), RUNE_C(0x00FEEA), DT_FINAL},
+ {RUNE_C(0x00FEEB), RUNE_C(0x00FEEB), DT_INITIAL},
+ {RUNE_C(0x00FEEC), RUNE_C(0x00FEEC), DT_MEDIAL},
+ {RUNE_C(0x00FEED), RUNE_C(0x00FEED), DT_ISOLATED},
+ {RUNE_C(0x00FEEE), RUNE_C(0x00FEEE), DT_FINAL},
+ {RUNE_C(0x00FEEF), RUNE_C(0x00FEEF), DT_ISOLATED},
+ {RUNE_C(0x00FEF0), RUNE_C(0x00FEF0), DT_FINAL},
+ {RUNE_C(0x00FEF1), RUNE_C(0x00FEF1), DT_ISOLATED},
+ {RUNE_C(0x00FEF2), RUNE_C(0x00FEF2), DT_FINAL},
+ {RUNE_C(0x00FEF3), RUNE_C(0x00FEF3), DT_INITIAL},
+ {RUNE_C(0x00FEF4), RUNE_C(0x00FEF4), DT_MEDIAL},
+ {RUNE_C(0x00FEF5), RUNE_C(0x00FEF5), DT_ISOLATED},
+ {RUNE_C(0x00FEF6), RUNE_C(0x00FEF6), DT_FINAL},
+ {RUNE_C(0x00FEF7), RUNE_C(0x00FEF7), DT_ISOLATED},
+ {RUNE_C(0x00FEF8), RUNE_C(0x00FEF8), DT_FINAL},
+ {RUNE_C(0x00FEF9), RUNE_C(0x00FEF9), DT_ISOLATED},
+ {RUNE_C(0x00FEFA), RUNE_C(0x00FEFA), DT_FINAL},
+ {RUNE_C(0x00FEFB), RUNE_C(0x00FEFB), DT_ISOLATED},
+ {RUNE_C(0x00FEFC), RUNE_C(0x00FEFC), DT_FINAL},
+ {RUNE_C(0x00FF01), RUNE_C(0x00FF60), DT_WIDE},
+ {RUNE_C(0x00FF61), RUNE_C(0x00FFBE), DT_NARROW},
+ {RUNE_C(0x00FFC2), RUNE_C(0x00FFC7), DT_NARROW},
+ {RUNE_C(0x00FFCA), RUNE_C(0x00FFCF), DT_NARROW},
+ {RUNE_C(0x00FFD2), RUNE_C(0x00FFD7), DT_NARROW},
+ {RUNE_C(0x00FFDA), RUNE_C(0x00FFDC), DT_NARROW},
+ {RUNE_C(0x00FFE0), RUNE_C(0x00FFE6), DT_WIDE},
+ {RUNE_C(0x00FFE8), RUNE_C(0x00FFEE), DT_NARROW},
+ {RUNE_C(0x010781), RUNE_C(0x010785), DT_SUPER},
+ {RUNE_C(0x010787), RUNE_C(0x0107B0), DT_SUPER},
+ {RUNE_C(0x0107B2), RUNE_C(0x0107BA), DT_SUPER},
+ {RUNE_C(0x01109A), RUNE_C(0x01109A), DT_CANONICAL},
+ {RUNE_C(0x01109C), RUNE_C(0x01109C), DT_CANONICAL},
+ {RUNE_C(0x0110AB), RUNE_C(0x0110AB), DT_CANONICAL},
+ {RUNE_C(0x01112E), RUNE_C(0x01112F), DT_CANONICAL},
+ {RUNE_C(0x01134B), RUNE_C(0x01134C), DT_CANONICAL},
+ {RUNE_C(0x0114BB), RUNE_C(0x0114BC), DT_CANONICAL},
+ {RUNE_C(0x0114BE), RUNE_C(0x0114BE), DT_CANONICAL},
+ {RUNE_C(0x0115BA), RUNE_C(0x0115BB), DT_CANONICAL},
+ {RUNE_C(0x011938), RUNE_C(0x011938), DT_CANONICAL},
+ {RUNE_C(0x01D15E), RUNE_C(0x01D164), DT_CANONICAL},
+ {RUNE_C(0x01D1BB), RUNE_C(0x01D1C0), DT_CANONICAL},
+ {RUNE_C(0x01D400), RUNE_C(0x01D454), DT_FONT},
+ {RUNE_C(0x01D456), RUNE_C(0x01D49C), DT_FONT},
+ {RUNE_C(0x01D49E), RUNE_C(0x01D49F), DT_FONT},
+ {RUNE_C(0x01D4A2), RUNE_C(0x01D4A2), DT_FONT},
+ {RUNE_C(0x01D4A5), RUNE_C(0x01D4A6), DT_FONT},
+ {RUNE_C(0x01D4A9), RUNE_C(0x01D4AC), DT_FONT},
+ {RUNE_C(0x01D4AE), RUNE_C(0x01D4B9), DT_FONT},
+ {RUNE_C(0x01D4BB), RUNE_C(0x01D4BB), DT_FONT},
+ {RUNE_C(0x01D4BD), RUNE_C(0x01D4C3), DT_FONT},
+ {RUNE_C(0x01D4C5), RUNE_C(0x01D505), DT_FONT},
+ {RUNE_C(0x01D507), RUNE_C(0x01D50A), DT_FONT},
+ {RUNE_C(0x01D50D), RUNE_C(0x01D514), DT_FONT},
+ {RUNE_C(0x01D516), RUNE_C(0x01D51C), DT_FONT},
+ {RUNE_C(0x01D51E), RUNE_C(0x01D539), DT_FONT},
+ {RUNE_C(0x01D53B), RUNE_C(0x01D53E), DT_FONT},
+ {RUNE_C(0x01D540), RUNE_C(0x01D544), DT_FONT},
+ {RUNE_C(0x01D546), RUNE_C(0x01D546), DT_FONT},
+ {RUNE_C(0x01D54A), RUNE_C(0x01D550), DT_FONT},
+ {RUNE_C(0x01D552), RUNE_C(0x01D6A5), DT_FONT},
+ {RUNE_C(0x01D6A8), RUNE_C(0x01D7CB), DT_FONT},
+ {RUNE_C(0x01D7CE), RUNE_C(0x01D7FF), DT_FONT},
+ {RUNE_C(0x01E030), RUNE_C(0x01E050), DT_SUPER},
+ {RUNE_C(0x01E051), RUNE_C(0x01E06A), DT_SUB},
+ {RUNE_C(0x01E06B), RUNE_C(0x01E06D), DT_SUPER},
+ {RUNE_C(0x01EE00), RUNE_C(0x01EE03), DT_FONT},
+ {RUNE_C(0x01EE05), RUNE_C(0x01EE1F), DT_FONT},
+ {RUNE_C(0x01EE21), RUNE_C(0x01EE22), DT_FONT},
+ {RUNE_C(0x01EE24), RUNE_C(0x01EE24), DT_FONT},
+ {RUNE_C(0x01EE27), RUNE_C(0x01EE27), DT_FONT},
+ {RUNE_C(0x01EE29), RUNE_C(0x01EE32), DT_FONT},
+ {RUNE_C(0x01EE34), RUNE_C(0x01EE37), DT_FONT},
+ {RUNE_C(0x01EE39), RUNE_C(0x01EE39), DT_FONT},
+ {RUNE_C(0x01EE3B), RUNE_C(0x01EE3B), DT_FONT},
+ {RUNE_C(0x01EE42), RUNE_C(0x01EE42), DT_FONT},
+ {RUNE_C(0x01EE47), RUNE_C(0x01EE47), DT_FONT},
+ {RUNE_C(0x01EE49), RUNE_C(0x01EE49), DT_FONT},
+ {RUNE_C(0x01EE4B), RUNE_C(0x01EE4B), DT_FONT},
+ {RUNE_C(0x01EE4D), RUNE_C(0x01EE4F), DT_FONT},
+ {RUNE_C(0x01EE51), RUNE_C(0x01EE52), DT_FONT},
+ {RUNE_C(0x01EE54), RUNE_C(0x01EE54), DT_FONT},
+ {RUNE_C(0x01EE57), RUNE_C(0x01EE57), DT_FONT},
+ {RUNE_C(0x01EE59), RUNE_C(0x01EE59), DT_FONT},
+ {RUNE_C(0x01EE5B), RUNE_C(0x01EE5B), DT_FONT},
+ {RUNE_C(0x01EE5D), RUNE_C(0x01EE5D), DT_FONT},
+ {RUNE_C(0x01EE5F), RUNE_C(0x01EE5F), DT_FONT},
+ {RUNE_C(0x01EE61), RUNE_C(0x01EE62), DT_FONT},
+ {RUNE_C(0x01EE64), RUNE_C(0x01EE64), DT_FONT},
+ {RUNE_C(0x01EE67), RUNE_C(0x01EE6A), DT_FONT},
+ {RUNE_C(0x01EE6C), RUNE_C(0x01EE72), DT_FONT},
+ {RUNE_C(0x01EE74), RUNE_C(0x01EE77), DT_FONT},
+ {RUNE_C(0x01EE79), RUNE_C(0x01EE7C), DT_FONT},
+ {RUNE_C(0x01EE7E), RUNE_C(0x01EE7E), DT_FONT},
+ {RUNE_C(0x01EE80), RUNE_C(0x01EE89), DT_FONT},
+ {RUNE_C(0x01EE8B), RUNE_C(0x01EE9B), DT_FONT},
+ {RUNE_C(0x01EEA1), RUNE_C(0x01EEA3), DT_FONT},
+ {RUNE_C(0x01EEA5), RUNE_C(0x01EEA9), DT_FONT},
+ {RUNE_C(0x01EEAB), RUNE_C(0x01EEBB), DT_FONT},
+ {RUNE_C(0x01F100), RUNE_C(0x01F10A), DT_COMPAT},
+ {RUNE_C(0x01F110), RUNE_C(0x01F12A), DT_COMPAT},
+ {RUNE_C(0x01F12B), RUNE_C(0x01F12E), DT_CIRCLE},
+ {RUNE_C(0x01F130), RUNE_C(0x01F14F), DT_SQUARE},
+ {RUNE_C(0x01F16A), RUNE_C(0x01F16C), DT_SUPER},
+ {RUNE_C(0x01F190), RUNE_C(0x01F190), DT_SQUARE},
+ {RUNE_C(0x01F200), RUNE_C(0x01F202), DT_SQUARE},
+ {RUNE_C(0x01F210), RUNE_C(0x01F23B), DT_SQUARE},
+ {RUNE_C(0x01F240), RUNE_C(0x01F248), DT_COMPAT},
+ {RUNE_C(0x01F250), RUNE_C(0x01F251), DT_CIRCLE},
+ {RUNE_C(0x01FBF0), RUNE_C(0x01FBF9), DT_FONT},
+ {RUNE_C(0x02F800), RUNE_C(0x02FA1D), DT_CANONICAL},
+};
+
+#endif /* !RUNE_INTERNAL_RTYPE_DT_H */
diff --git a/vendor/librune/include/internal/rtype/equideo.h b/vendor/librune/include/internal/rtype/equideo.h
new file mode 100644
index 0000000..5fdc039
--- /dev/null
+++ b/vendor/librune/include/internal/rtype/equideo.h
@@ -0,0 +1,365 @@
+/* This file is autogenerated by gen/rtype-equideo; DO NOT EDIT. */
+
+#ifndef RUNE_INTERNAL_RTYPE_EQUIDEO_H
+#define RUNE_INTERNAL_RTYPE_EQUIDEO_H
+
+/* IWYU pragma: private */
+/* clang-format off */
+
+#include "../types.h"
+#include "../../rune.h"
+
+static const struct {
+ rune key, val;
+} rtype_equideo_tbl[] = {
+ {RUNE_C(0x002E81), RUNE_C(0x005382)},
+ {RUNE_C(0x002E82), RUNE_C(0x004E5B)},
+ {RUNE_C(0x002E83), RUNE_C(0x004E5A)},
+ {RUNE_C(0x002E84), RUNE_C(0x004E59)},
+ {RUNE_C(0x002E85), RUNE_C(0x004EBB)},
+ {RUNE_C(0x002E86), RUNE_C(0x005182)},
+ {RUNE_C(0x002E87), RUNE_C(0x020628)},
+ {RUNE_C(0x002E88), RUNE_C(0x005200)},
+ {RUNE_C(0x002E89), RUNE_C(0x005202)},
+ {RUNE_C(0x002E8A), RUNE_C(0x00535C)},
+ {RUNE_C(0x002E8B), RUNE_C(0x00353E)},
+ {RUNE_C(0x002E8C), RUNE_C(0x005C0F)},
+ {RUNE_C(0x002E8D), RUNE_C(0x005C0F)},
+ {RUNE_C(0x002E8E), RUNE_C(0x005140)},
+ {RUNE_C(0x002E8F), RUNE_C(0x005C23)},
+ {RUNE_C(0x002E90), RUNE_C(0x005C22)},
+ {RUNE_C(0x002E91), RUNE_C(0x021BC2)},
+ {RUNE_C(0x002E92), RUNE_C(0x005DF3)},
+ {RUNE_C(0x002E93), RUNE_C(0x005E7A)},
+ {RUNE_C(0x002E94), RUNE_C(0x005F51)},
+ {RUNE_C(0x002E95), RUNE_C(0x02B739)},
+ {RUNE_C(0x002E96), RUNE_C(0x005FC4)},
+ {RUNE_C(0x002E97), RUNE_C(0x005FC3)},
+ {RUNE_C(0x002E98), RUNE_C(0x00624C)},
+ {RUNE_C(0x002E99), RUNE_C(0x006535)},
+ {RUNE_C(0x002E9B), RUNE_C(0x0065E1)},
+ {RUNE_C(0x002E9C), RUNE_C(0x0065E5)},
+ {RUNE_C(0x002E9D), RUNE_C(0x006708)},
+ {RUNE_C(0x002E9E), RUNE_C(0x006B7A)},
+ {RUNE_C(0x002E9F), RUNE_C(0x006BCD)},
+ {RUNE_C(0x002EA0), RUNE_C(0x006C11)},
+ {RUNE_C(0x002EA1), RUNE_C(0x006C35)},
+ {RUNE_C(0x002EA2), RUNE_C(0x006C3A)},
+ {RUNE_C(0x002EA3), RUNE_C(0x00706C)},
+ {RUNE_C(0x002EA4), RUNE_C(0x00722B)},
+ {RUNE_C(0x002EA5), RUNE_C(0x00722B)},
+ {RUNE_C(0x002EA6), RUNE_C(0x004E2C)},
+ {RUNE_C(0x002EA7), RUNE_C(0x00725B)},
+ {RUNE_C(0x002EA8), RUNE_C(0x0072AD)},
+ {RUNE_C(0x002EA9), RUNE_C(0x00738B)},
+ {RUNE_C(0x002EAA), RUNE_C(0x024D14)},
+ {RUNE_C(0x002EAB), RUNE_C(0x0076EE)},
+ {RUNE_C(0x002EAC), RUNE_C(0x00793A)},
+ {RUNE_C(0x002EAD), RUNE_C(0x00793B)},
+ {RUNE_C(0x002EAE), RUNE_C(0x025AD7)},
+ {RUNE_C(0x002EAF), RUNE_C(0x007CF9)},
+ {RUNE_C(0x002EB0), RUNE_C(0x007E9F)},
+ {RUNE_C(0x002EB1), RUNE_C(0x007F53)},
+ {RUNE_C(0x002EB2), RUNE_C(0x007F52)},
+ {RUNE_C(0x002EB3), RUNE_C(0x0034C1)},
+ {RUNE_C(0x002EB4), RUNE_C(0x005197)},
+ {RUNE_C(0x002EB5), RUNE_C(0x02626B)},
+ {RUNE_C(0x002EB6), RUNE_C(0x007F8A)},
+ {RUNE_C(0x002EB7), RUNE_C(0x02634C)},
+ {RUNE_C(0x002EB8), RUNE_C(0x02634B)},
+ {RUNE_C(0x002EB9), RUNE_C(0x008002)},
+ {RUNE_C(0x002EBA), RUNE_C(0x008080)},
+ {RUNE_C(0x002EBB), RUNE_C(0x00807F)},
+ {RUNE_C(0x002EBC), RUNE_C(0x008089)},
+ {RUNE_C(0x002EBD), RUNE_C(0x026951)},
+ {RUNE_C(0x002EBE), RUNE_C(0x008279)},
+ {RUNE_C(0x002EBF), RUNE_C(0x008279)},
+ {RUNE_C(0x002EC0), RUNE_C(0x008279)},
+ {RUNE_C(0x002EC1), RUNE_C(0x00864E)},
+ {RUNE_C(0x002EC2), RUNE_C(0x008864)},
+ {RUNE_C(0x002EC3), RUNE_C(0x008980)},
+ {RUNE_C(0x002EC4), RUNE_C(0x00897F)},
+ {RUNE_C(0x002EC5), RUNE_C(0x0089C1)},
+ {RUNE_C(0x002EC6), RUNE_C(0x0089D2)},
+ {RUNE_C(0x002EC7), RUNE_C(0x0278B2)},
+ {RUNE_C(0x002EC8), RUNE_C(0x008BA0)},
+ {RUNE_C(0x002EC9), RUNE_C(0x008D1D)},
+ {RUNE_C(0x002ECA), RUNE_C(0x027FB7)},
+ {RUNE_C(0x002ECB), RUNE_C(0x008F66)},
+ {RUNE_C(0x002ECC), RUNE_C(0x008FB6)},
+ {RUNE_C(0x002ECD), RUNE_C(0x008FB6)},
+ {RUNE_C(0x002ECE), RUNE_C(0x008FB6)},
+ {RUNE_C(0x002ECF), RUNE_C(0x009091)},
+ {RUNE_C(0x002ED0), RUNE_C(0x009485)},
+ {RUNE_C(0x002ED1), RUNE_C(0x009577)},
+ {RUNE_C(0x002ED2), RUNE_C(0x009578)},
+ {RUNE_C(0x002ED3), RUNE_C(0x00957F)},
+ {RUNE_C(0x002ED4), RUNE_C(0x0095E8)},
+ {RUNE_C(0x002ED5), RUNE_C(0x028E0F)},
+ {RUNE_C(0x002ED6), RUNE_C(0x00961D)},
+ {RUNE_C(0x002ED7), RUNE_C(0x0096E8)},
+ {RUNE_C(0x002ED8), RUNE_C(0x009752)},
+ {RUNE_C(0x002ED9), RUNE_C(0x0097E6)},
+ {RUNE_C(0x002EDA), RUNE_C(0x009875)},
+ {RUNE_C(0x002EDB), RUNE_C(0x0098CE)},
+ {RUNE_C(0x002EDC), RUNE_C(0x0098DE)},
+ {RUNE_C(0x002EDD), RUNE_C(0x0098DF)},
+ {RUNE_C(0x002EDE), RUNE_C(0x02967F)},
+ {RUNE_C(0x002EDF), RUNE_C(0x0098E0)},
+ {RUNE_C(0x002EE0), RUNE_C(0x009963)},
+ {RUNE_C(0x002EE1), RUNE_C(0x029810)},
+ {RUNE_C(0x002EE2), RUNE_C(0x009A6C)},
+ {RUNE_C(0x002EE3), RUNE_C(0x009AA8)},
+ {RUNE_C(0x002EE4), RUNE_C(0x009B3C)},
+ {RUNE_C(0x002EE5), RUNE_C(0x009C7C)},
+ {RUNE_C(0x002EE6), RUNE_C(0x009E1F)},
+ {RUNE_C(0x002EE7), RUNE_C(0x005364)},
+ {RUNE_C(0x002EE8), RUNE_C(0x009EA6)},
+ {RUNE_C(0x002EE9), RUNE_C(0x009EC4)},
+ {RUNE_C(0x002EEA), RUNE_C(0x009EFE)},
+ {RUNE_C(0x002EEB), RUNE_C(0x006589)},
+ {RUNE_C(0x002EEC), RUNE_C(0x009F50)},
+ {RUNE_C(0x002EED), RUNE_C(0x006B6F)},
+ {RUNE_C(0x002EEE), RUNE_C(0x009F7F)},
+ {RUNE_C(0x002EEF), RUNE_C(0x007ADC)},
+ {RUNE_C(0x002EF0), RUNE_C(0x009F99)},
+ {RUNE_C(0x002EF1), RUNE_C(0x009F9C)},
+ {RUNE_C(0x002EF2), RUNE_C(0x004E80)},
+ {RUNE_C(0x002EF3), RUNE_C(0x009F9F)},
+ {RUNE_C(0x002F00), RUNE_C(0x004E00)},
+ {RUNE_C(0x002F01), RUNE_C(0x004E28)},
+ {RUNE_C(0x002F02), RUNE_C(0x004E36)},
+ {RUNE_C(0x002F03), RUNE_C(0x004E3F)},
+ {RUNE_C(0x002F04), RUNE_C(0x004E59)},
+ {RUNE_C(0x002F05), RUNE_C(0x004E85)},
+ {RUNE_C(0x002F06), RUNE_C(0x004E8C)},
+ {RUNE_C(0x002F07), RUNE_C(0x004EA0)},
+ {RUNE_C(0x002F08), RUNE_C(0x004EBA)},
+ {RUNE_C(0x002F09), RUNE_C(0x00513F)},
+ {RUNE_C(0x002F0A), RUNE_C(0x005165)},
+ {RUNE_C(0x002F0B), RUNE_C(0x00516B)},
+ {RUNE_C(0x002F0C), RUNE_C(0x005182)},
+ {RUNE_C(0x002F0D), RUNE_C(0x005196)},
+ {RUNE_C(0x002F0E), RUNE_C(0x0051AB)},
+ {RUNE_C(0x002F0F), RUNE_C(0x0051E0)},
+ {RUNE_C(0x002F10), RUNE_C(0x0051F5)},
+ {RUNE_C(0x002F11), RUNE_C(0x005200)},
+ {RUNE_C(0x002F12), RUNE_C(0x00529B)},
+ {RUNE_C(0x002F13), RUNE_C(0x0052F9)},
+ {RUNE_C(0x002F14), RUNE_C(0x005315)},
+ {RUNE_C(0x002F15), RUNE_C(0x00531A)},
+ {RUNE_C(0x002F16), RUNE_C(0x005338)},
+ {RUNE_C(0x002F17), RUNE_C(0x005341)},
+ {RUNE_C(0x002F18), RUNE_C(0x00535C)},
+ {RUNE_C(0x002F19), RUNE_C(0x005369)},
+ {RUNE_C(0x002F1A), RUNE_C(0x005382)},
+ {RUNE_C(0x002F1B), RUNE_C(0x0053B6)},
+ {RUNE_C(0x002F1C), RUNE_C(0x0053C8)},
+ {RUNE_C(0x002F1D), RUNE_C(0x0053E3)},
+ {RUNE_C(0x002F1E), RUNE_C(0x0056D7)},
+ {RUNE_C(0x002F1F), RUNE_C(0x00571F)},
+ {RUNE_C(0x002F20), RUNE_C(0x0058EB)},
+ {RUNE_C(0x002F21), RUNE_C(0x005902)},
+ {RUNE_C(0x002F22), RUNE_C(0x00590A)},
+ {RUNE_C(0x002F23), RUNE_C(0x005915)},
+ {RUNE_C(0x002F24), RUNE_C(0x005927)},
+ {RUNE_C(0x002F25), RUNE_C(0x005973)},
+ {RUNE_C(0x002F26), RUNE_C(0x005B50)},
+ {RUNE_C(0x002F27), RUNE_C(0x005B80)},
+ {RUNE_C(0x002F28), RUNE_C(0x005BF8)},
+ {RUNE_C(0x002F29), RUNE_C(0x005C0F)},
+ {RUNE_C(0x002F2A), RUNE_C(0x005C22)},
+ {RUNE_C(0x002F2B), RUNE_C(0x005C38)},
+ {RUNE_C(0x002F2C), RUNE_C(0x005C6E)},
+ {RUNE_C(0x002F2D), RUNE_C(0x005C71)},
+ {RUNE_C(0x002F2E), RUNE_C(0x005DDB)},
+ {RUNE_C(0x002F2F), RUNE_C(0x005DE5)},
+ {RUNE_C(0x002F30), RUNE_C(0x005DF1)},
+ {RUNE_C(0x002F31), RUNE_C(0x005DFE)},
+ {RUNE_C(0x002F32), RUNE_C(0x005E72)},
+ {RUNE_C(0x002F33), RUNE_C(0x005E7A)},
+ {RUNE_C(0x002F34), RUNE_C(0x005E7F)},
+ {RUNE_C(0x002F35), RUNE_C(0x005EF4)},
+ {RUNE_C(0x002F36), RUNE_C(0x005EFE)},
+ {RUNE_C(0x002F37), RUNE_C(0x005F0B)},
+ {RUNE_C(0x002F38), RUNE_C(0x005F13)},
+ {RUNE_C(0x002F39), RUNE_C(0x005F50)},
+ {RUNE_C(0x002F3A), RUNE_C(0x005F61)},
+ {RUNE_C(0x002F3B), RUNE_C(0x005F73)},
+ {RUNE_C(0x002F3C), RUNE_C(0x005FC3)},
+ {RUNE_C(0x002F3D), RUNE_C(0x006208)},
+ {RUNE_C(0x002F3E), RUNE_C(0x006236)},
+ {RUNE_C(0x002F3F), RUNE_C(0x00624B)},
+ {RUNE_C(0x002F40), RUNE_C(0x00652F)},
+ {RUNE_C(0x002F41), RUNE_C(0x006534)},
+ {RUNE_C(0x002F42), RUNE_C(0x006587)},
+ {RUNE_C(0x002F43), RUNE_C(0x006597)},
+ {RUNE_C(0x002F44), RUNE_C(0x0065A4)},
+ {RUNE_C(0x002F45), RUNE_C(0x0065B9)},
+ {RUNE_C(0x002F46), RUNE_C(0x0065E0)},
+ {RUNE_C(0x002F47), RUNE_C(0x0065E5)},
+ {RUNE_C(0x002F48), RUNE_C(0x0066F0)},
+ {RUNE_C(0x002F49), RUNE_C(0x006708)},
+ {RUNE_C(0x002F4A), RUNE_C(0x006728)},
+ {RUNE_C(0x002F4B), RUNE_C(0x006B20)},
+ {RUNE_C(0x002F4C), RUNE_C(0x006B62)},
+ {RUNE_C(0x002F4D), RUNE_C(0x006B79)},
+ {RUNE_C(0x002F4E), RUNE_C(0x006BB3)},
+ {RUNE_C(0x002F4F), RUNE_C(0x006BCB)},
+ {RUNE_C(0x002F50), RUNE_C(0x006BD4)},
+ {RUNE_C(0x002F51), RUNE_C(0x006BDB)},
+ {RUNE_C(0x002F52), RUNE_C(0x006C0F)},
+ {RUNE_C(0x002F53), RUNE_C(0x006C14)},
+ {RUNE_C(0x002F54), RUNE_C(0x006C34)},
+ {RUNE_C(0x002F55), RUNE_C(0x00706B)},
+ {RUNE_C(0x002F56), RUNE_C(0x00722A)},
+ {RUNE_C(0x002F57), RUNE_C(0x007236)},
+ {RUNE_C(0x002F58), RUNE_C(0x00723B)},
+ {RUNE_C(0x002F59), RUNE_C(0x00723F)},
+ {RUNE_C(0x002F5A), RUNE_C(0x007247)},
+ {RUNE_C(0x002F5B), RUNE_C(0x007259)},
+ {RUNE_C(0x002F5C), RUNE_C(0x00725B)},
+ {RUNE_C(0x002F5D), RUNE_C(0x0072AC)},
+ {RUNE_C(0x002F5E), RUNE_C(0x007384)},
+ {RUNE_C(0x002F5F), RUNE_C(0x007389)},
+ {RUNE_C(0x002F60), RUNE_C(0x0074DC)},
+ {RUNE_C(0x002F61), RUNE_C(0x0074E6)},
+ {RUNE_C(0x002F62), RUNE_C(0x007518)},
+ {RUNE_C(0x002F63), RUNE_C(0x00751F)},
+ {RUNE_C(0x002F64), RUNE_C(0x007528)},
+ {RUNE_C(0x002F65), RUNE_C(0x007530)},
+ {RUNE_C(0x002F66), RUNE_C(0x00758B)},
+ {RUNE_C(0x002F67), RUNE_C(0x007592)},
+ {RUNE_C(0x002F68), RUNE_C(0x007676)},
+ {RUNE_C(0x002F69), RUNE_C(0x00767D)},
+ {RUNE_C(0x002F6A), RUNE_C(0x0076AE)},
+ {RUNE_C(0x002F6B), RUNE_C(0x0076BF)},
+ {RUNE_C(0x002F6C), RUNE_C(0x0076EE)},
+ {RUNE_C(0x002F6D), RUNE_C(0x0077DB)},
+ {RUNE_C(0x002F6E), RUNE_C(0x0077E2)},
+ {RUNE_C(0x002F6F), RUNE_C(0x0077F3)},
+ {RUNE_C(0x002F70), RUNE_C(0x00793A)},
+ {RUNE_C(0x002F71), RUNE_C(0x0079B8)},
+ {RUNE_C(0x002F72), RUNE_C(0x0079BE)},
+ {RUNE_C(0x002F73), RUNE_C(0x007A74)},
+ {RUNE_C(0x002F74), RUNE_C(0x007ACB)},
+ {RUNE_C(0x002F75), RUNE_C(0x007AF9)},
+ {RUNE_C(0x002F76), RUNE_C(0x007C73)},
+ {RUNE_C(0x002F77), RUNE_C(0x007CF8)},
+ {RUNE_C(0x002F78), RUNE_C(0x007F36)},
+ {RUNE_C(0x002F79), RUNE_C(0x007F51)},
+ {RUNE_C(0x002F7A), RUNE_C(0x007F8A)},
+ {RUNE_C(0x002F7B), RUNE_C(0x007FBD)},
+ {RUNE_C(0x002F7C), RUNE_C(0x008001)},
+ {RUNE_C(0x002F7D), RUNE_C(0x00800C)},
+ {RUNE_C(0x002F7E), RUNE_C(0x008012)},
+ {RUNE_C(0x002F7F), RUNE_C(0x008033)},
+ {RUNE_C(0x002F80), RUNE_C(0x00807F)},
+ {RUNE_C(0x002F81), RUNE_C(0x008089)},
+ {RUNE_C(0x002F82), RUNE_C(0x0081E3)},
+ {RUNE_C(0x002F83), RUNE_C(0x0081EA)},
+ {RUNE_C(0x002F84), RUNE_C(0x0081F3)},
+ {RUNE_C(0x002F85), RUNE_C(0x0081FC)},
+ {RUNE_C(0x002F86), RUNE_C(0x00820C)},
+ {RUNE_C(0x002F87), RUNE_C(0x00821B)},
+ {RUNE_C(0x002F88), RUNE_C(0x00821F)},
+ {RUNE_C(0x002F89), RUNE_C(0x00826E)},
+ {RUNE_C(0x002F8A), RUNE_C(0x008272)},
+ {RUNE_C(0x002F8B), RUNE_C(0x008278)},
+ {RUNE_C(0x002F8C), RUNE_C(0x00864D)},
+ {RUNE_C(0x002F8D), RUNE_C(0x00866B)},
+ {RUNE_C(0x002F8E), RUNE_C(0x008840)},
+ {RUNE_C(0x002F8F), RUNE_C(0x00884C)},
+ {RUNE_C(0x002F90), RUNE_C(0x008863)},
+ {RUNE_C(0x002F91), RUNE_C(0x00897E)},
+ {RUNE_C(0x002F92), RUNE_C(0x00898B)},
+ {RUNE_C(0x002F93), RUNE_C(0x0089D2)},
+ {RUNE_C(0x002F94), RUNE_C(0x008A00)},
+ {RUNE_C(0x002F95), RUNE_C(0x008C37)},
+ {RUNE_C(0x002F96), RUNE_C(0x008C46)},
+ {RUNE_C(0x002F97), RUNE_C(0x008C55)},
+ {RUNE_C(0x002F98), RUNE_C(0x008C78)},
+ {RUNE_C(0x002F99), RUNE_C(0x008C9D)},
+ {RUNE_C(0x002F9A), RUNE_C(0x008D64)},
+ {RUNE_C(0x002F9B), RUNE_C(0x008D70)},
+ {RUNE_C(0x002F9C), RUNE_C(0x008DB3)},
+ {RUNE_C(0x002F9D), RUNE_C(0x008EAB)},
+ {RUNE_C(0x002F9E), RUNE_C(0x008ECA)},
+ {RUNE_C(0x002F9F), RUNE_C(0x008F9B)},
+ {RUNE_C(0x002FA0), RUNE_C(0x008FB0)},
+ {RUNE_C(0x002FA1), RUNE_C(0x008FB5)},
+ {RUNE_C(0x002FA2), RUNE_C(0x009091)},
+ {RUNE_C(0x002FA3), RUNE_C(0x009149)},
+ {RUNE_C(0x002FA4), RUNE_C(0x0091C6)},
+ {RUNE_C(0x002FA5), RUNE_C(0x0091CC)},
+ {RUNE_C(0x002FA6), RUNE_C(0x0091D1)},
+ {RUNE_C(0x002FA7), RUNE_C(0x009577)},
+ {RUNE_C(0x002FA8), RUNE_C(0x009580)},
+ {RUNE_C(0x002FA9), RUNE_C(0x00961C)},
+ {RUNE_C(0x002FAA), RUNE_C(0x0096B6)},
+ {RUNE_C(0x002FAB), RUNE_C(0x0096B9)},
+ {RUNE_C(0x002FAC), RUNE_C(0x0096E8)},
+ {RUNE_C(0x002FAD), RUNE_C(0x009751)},
+ {RUNE_C(0x002FAE), RUNE_C(0x00975E)},
+ {RUNE_C(0x002FAF), RUNE_C(0x009762)},
+ {RUNE_C(0x002FB0), RUNE_C(0x009769)},
+ {RUNE_C(0x002FB1), RUNE_C(0x0097CB)},
+ {RUNE_C(0x002FB2), RUNE_C(0x0097ED)},
+ {RUNE_C(0x002FB3), RUNE_C(0x0097F3)},
+ {RUNE_C(0x002FB4), RUNE_C(0x009801)},
+ {RUNE_C(0x002FB5), RUNE_C(0x0098A8)},
+ {RUNE_C(0x002FB6), RUNE_C(0x0098DB)},
+ {RUNE_C(0x002FB7), RUNE_C(0x0098DF)},
+ {RUNE_C(0x002FB8), RUNE_C(0x009996)},
+ {RUNE_C(0x002FB9), RUNE_C(0x009999)},
+ {RUNE_C(0x002FBA), RUNE_C(0x0099AC)},
+ {RUNE_C(0x002FBB), RUNE_C(0x009AA8)},
+ {RUNE_C(0x002FBC), RUNE_C(0x009AD8)},
+ {RUNE_C(0x002FBD), RUNE_C(0x009ADF)},
+ {RUNE_C(0x002FBE), RUNE_C(0x009B25)},
+ {RUNE_C(0x002FBF), RUNE_C(0x009B2F)},
+ {RUNE_C(0x002FC0), RUNE_C(0x009B32)},
+ {RUNE_C(0x002FC1), RUNE_C(0x009B3C)},
+ {RUNE_C(0x002FC2), RUNE_C(0x009B5A)},
+ {RUNE_C(0x002FC3), RUNE_C(0x009CE5)},
+ {RUNE_C(0x002FC4), RUNE_C(0x009E75)},
+ {RUNE_C(0x002FC5), RUNE_C(0x009E7F)},
+ {RUNE_C(0x002FC6), RUNE_C(0x009EA5)},
+ {RUNE_C(0x002FC7), RUNE_C(0x009EBB)},
+ {RUNE_C(0x002FC8), RUNE_C(0x009EC3)},
+ {RUNE_C(0x002FC9), RUNE_C(0x009ECD)},
+ {RUNE_C(0x002FCA), RUNE_C(0x009ED1)},
+ {RUNE_C(0x002FCB), RUNE_C(0x009EF9)},
+ {RUNE_C(0x002FCC), RUNE_C(0x009EFD)},
+ {RUNE_C(0x002FCD), RUNE_C(0x009F0E)},
+ {RUNE_C(0x002FCE), RUNE_C(0x009F13)},
+ {RUNE_C(0x002FCF), RUNE_C(0x009F20)},
+ {RUNE_C(0x002FD0), RUNE_C(0x009F3B)},
+ {RUNE_C(0x002FD1), RUNE_C(0x009F4A)},
+ {RUNE_C(0x002FD2), RUNE_C(0x009F52)},
+ {RUNE_C(0x002FD3), RUNE_C(0x009F8D)},
+ {RUNE_C(0x002FD4), RUNE_C(0x009F9C)},
+ {RUNE_C(0x002FD5), RUNE_C(0x009FA0)},
+ {RUNE_C(0x0031C6), RUNE_C(0x0200CC)},
+ {RUNE_C(0x0031CF), RUNE_C(0x004E40)},
+ {RUNE_C(0x0031D0), RUNE_C(0x004E00)},
+ {RUNE_C(0x0031D1), RUNE_C(0x004E28)},
+ {RUNE_C(0x0031D2), RUNE_C(0x004E3F)},
+ {RUNE_C(0x0031D3), RUNE_C(0x004E3F)},
+ {RUNE_C(0x0031D4), RUNE_C(0x004E36)},
+ {RUNE_C(0x0031D5), RUNE_C(0x0200CD)},
+ {RUNE_C(0x0031D6), RUNE_C(0x004E5B)},
+ {RUNE_C(0x0031D7), RUNE_C(0x0200CA)},
+ {RUNE_C(0x0031D8), RUNE_C(0x0200CE)},
+ {RUNE_C(0x0031D9), RUNE_C(0x02010C)},
+ {RUNE_C(0x0031DA), RUNE_C(0x004E85)},
+ {RUNE_C(0x0031DB), RUNE_C(0x021FE8)},
+ {RUNE_C(0x0031DC), RUNE_C(0x0200CB)},
+ {RUNE_C(0x0031DD), RUNE_C(0x004E40)},
+ {RUNE_C(0x0031DE), RUNE_C(0x0200D1)},
+ {RUNE_C(0x0031DF), RUNE_C(0x004E5A)},
+ {RUNE_C(0x0031E0), RUNE_C(0x004E59)},
+ {RUNE_C(0x0031E1), RUNE_C(0x02010E)},
+};
+
+#endif /* !RUNE_INTERNAL_RTYPE_EQUIDEO_H */
diff --git a/vendor/librune/include/internal/rtype/gc.h b/vendor/librune/include/internal/rtype/gc.h
new file mode 100644
index 0000000..73856ba
--- /dev/null
+++ b/vendor/librune/include/internal/rtype/gc.h
@@ -0,0 +1,3296 @@
+/* This file is autogenerated by gen/rtype-gc; DO NOT EDIT. */
+
+#ifndef RUNE_INTERNAL_RTYPE_GC_H
+#define RUNE_INTERNAL_RTYPE_GC_H
+
+/* IWYU pragma: private */
+/* clang-format off */
+
+#include "../types.h"
+#include "../../rtype.h"
+#include "../../rune.h"
+
+static const rprop_gc_bf rtype_gc_lat1_tbl[] = {
+ GC_CC, GC_CC, GC_CC, GC_CC, GC_CC, GC_CC, GC_CC, GC_CC,
+ GC_CC, GC_CC, GC_CC, GC_CC, GC_CC, GC_CC, GC_CC, GC_CC,
+ GC_CC, GC_CC, GC_CC, GC_CC, GC_CC, GC_CC, GC_CC, GC_CC,
+ GC_CC, GC_CC, GC_CC, GC_CC, GC_CC, GC_CC, GC_CC, GC_CC,
+ GC_ZS, GC_PO, GC_PO, GC_PO, GC_SC, GC_PO, GC_PO, GC_PO,
+ GC_PS, GC_PE, GC_PO, GC_SM, GC_PO, GC_PD, GC_PO, GC_PO,
+ GC_ND, GC_ND, GC_ND, GC_ND, GC_ND, GC_ND, GC_ND, GC_ND,
+ GC_ND, GC_ND, GC_PO, GC_PO, GC_SM, GC_SM, GC_SM, GC_PO,
+ GC_PO, GC_LU, GC_LU, GC_LU, GC_LU, GC_LU, GC_LU, GC_LU,
+ GC_LU, GC_LU, GC_LU, GC_LU, GC_LU, GC_LU, GC_LU, GC_LU,
+ GC_LU, GC_LU, GC_LU, GC_LU, GC_LU, GC_LU, GC_LU, GC_LU,
+ GC_LU, GC_LU, GC_LU, GC_PS, GC_PO, GC_PE, GC_SK, GC_PC,
+ GC_SK, GC_LL, GC_LL, GC_LL, GC_LL, GC_LL, GC_LL, GC_LL,
+ GC_LL, GC_LL, GC_LL, GC_LL, GC_LL, GC_LL, GC_LL, GC_LL,
+ GC_LL, GC_LL, GC_LL, GC_LL, GC_LL, GC_LL, GC_LL, GC_LL,
+ GC_LL, GC_LL, GC_LL, GC_PS, GC_SM, GC_PE, GC_SM, GC_CC,
+ GC_CC, GC_CC, GC_CC, GC_CC, GC_CC, GC_CC, GC_CC, GC_CC,
+ GC_CC, GC_CC, GC_CC, GC_CC, GC_CC, GC_CC, GC_CC, GC_CC,
+ GC_CC, GC_CC, GC_CC, GC_CC, GC_CC, GC_CC, GC_CC, GC_CC,
+ GC_CC, GC_CC, GC_CC, GC_CC, GC_CC, GC_CC, GC_CC, GC_CC,
+ GC_ZS, GC_PO, GC_SC, GC_SC, GC_SC, GC_SC, GC_SO, GC_PO,
+ GC_SK, GC_SO, GC_LO, GC_PI, GC_SM, GC_CF, GC_SO, GC_SK,
+ GC_SO, GC_SM, GC_NO, GC_NO, GC_SK, GC_LL, GC_PO, GC_PO,
+ GC_SK, GC_NO, GC_LO, GC_PF, GC_NO, GC_NO, GC_NO, GC_PO,
+ GC_LU, GC_LU, GC_LU, GC_LU, GC_LU, GC_LU, GC_LU, GC_LU,
+ GC_LU, GC_LU, GC_LU, GC_LU, GC_LU, GC_LU, GC_LU, GC_LU,
+ GC_LU, GC_LU, GC_LU, GC_LU, GC_LU, GC_LU, GC_LU, GC_SM,
+ GC_LU, GC_LU, GC_LU, GC_LU, GC_LU, GC_LU, GC_LU, GC_LL,
+ GC_LL, GC_LL, GC_LL, GC_LL, GC_LL, GC_LL, GC_LL, GC_LL,
+ GC_LL, GC_LL, GC_LL, GC_LL, GC_LL, GC_LL, GC_LL, GC_LL,
+ GC_LL, GC_LL, GC_LL, GC_LL, GC_LL, GC_LL, GC_LL, GC_SM,
+ GC_LL, GC_LL, GC_LL, GC_LL, GC_LL, GC_LL, GC_LL, GC_LL,
+};
+
+static const struct {
+ rune lo, hi;
+ rprop_gc_bf val;
+} rtype_gc_tbl[] = {
+ {RUNE_C(0x000100), RUNE_C(0x000100), GC_LU},
+ {RUNE_C(0x000101), RUNE_C(0x000101), GC_LL},
+ {RUNE_C(0x000102), RUNE_C(0x000102), GC_LU},
+ {RUNE_C(0x000103), RUNE_C(0x000103), GC_LL},
+ {RUNE_C(0x000104), RUNE_C(0x000104), GC_LU},
+ {RUNE_C(0x000105), RUNE_C(0x000105), GC_LL},
+ {RUNE_C(0x000106), RUNE_C(0x000106), GC_LU},
+ {RUNE_C(0x000107), RUNE_C(0x000107), GC_LL},
+ {RUNE_C(0x000108), RUNE_C(0x000108), GC_LU},
+ {RUNE_C(0x000109), RUNE_C(0x000109), GC_LL},
+ {RUNE_C(0x00010A), RUNE_C(0x00010A), GC_LU},
+ {RUNE_C(0x00010B), RUNE_C(0x00010B), GC_LL},
+ {RUNE_C(0x00010C), RUNE_C(0x00010C), GC_LU},
+ {RUNE_C(0x00010D), RUNE_C(0x00010D), GC_LL},
+ {RUNE_C(0x00010E), RUNE_C(0x00010E), GC_LU},
+ {RUNE_C(0x00010F), RUNE_C(0x00010F), GC_LL},
+ {RUNE_C(0x000110), RUNE_C(0x000110), GC_LU},
+ {RUNE_C(0x000111), RUNE_C(0x000111), GC_LL},
+ {RUNE_C(0x000112), RUNE_C(0x000112), GC_LU},
+ {RUNE_C(0x000113), RUNE_C(0x000113), GC_LL},
+ {RUNE_C(0x000114), RUNE_C(0x000114), GC_LU},
+ {RUNE_C(0x000115), RUNE_C(0x000115), GC_LL},
+ {RUNE_C(0x000116), RUNE_C(0x000116), GC_LU},
+ {RUNE_C(0x000117), RUNE_C(0x000117), GC_LL},
+ {RUNE_C(0x000118), RUNE_C(0x000118), GC_LU},
+ {RUNE_C(0x000119), RUNE_C(0x000119), GC_LL},
+ {RUNE_C(0x00011A), RUNE_C(0x00011A), GC_LU},
+ {RUNE_C(0x00011B), RUNE_C(0x00011B), GC_LL},
+ {RUNE_C(0x00011C), RUNE_C(0x00011C), GC_LU},
+ {RUNE_C(0x00011D), RUNE_C(0x00011D), GC_LL},
+ {RUNE_C(0x00011E), RUNE_C(0x00011E), GC_LU},
+ {RUNE_C(0x00011F), RUNE_C(0x00011F), GC_LL},
+ {RUNE_C(0x000120), RUNE_C(0x000120), GC_LU},
+ {RUNE_C(0x000121), RUNE_C(0x000121), GC_LL},
+ {RUNE_C(0x000122), RUNE_C(0x000122), GC_LU},
+ {RUNE_C(0x000123), RUNE_C(0x000123), GC_LL},
+ {RUNE_C(0x000124), RUNE_C(0x000124), GC_LU},
+ {RUNE_C(0x000125), RUNE_C(0x000125), GC_LL},
+ {RUNE_C(0x000126), RUNE_C(0x000126), GC_LU},
+ {RUNE_C(0x000127), RUNE_C(0x000127), GC_LL},
+ {RUNE_C(0x000128), RUNE_C(0x000128), GC_LU},
+ {RUNE_C(0x000129), RUNE_C(0x000129), GC_LL},
+ {RUNE_C(0x00012A), RUNE_C(0x00012A), GC_LU},
+ {RUNE_C(0x00012B), RUNE_C(0x00012B), GC_LL},
+ {RUNE_C(0x00012C), RUNE_C(0x00012C), GC_LU},
+ {RUNE_C(0x00012D), RUNE_C(0x00012D), GC_LL},
+ {RUNE_C(0x00012E), RUNE_C(0x00012E), GC_LU},
+ {RUNE_C(0x00012F), RUNE_C(0x00012F), GC_LL},
+ {RUNE_C(0x000130), RUNE_C(0x000130), GC_LU},
+ {RUNE_C(0x000131), RUNE_C(0x000131), GC_LL},
+ {RUNE_C(0x000132), RUNE_C(0x000132), GC_LU},
+ {RUNE_C(0x000133), RUNE_C(0x000133), GC_LL},
+ {RUNE_C(0x000134), RUNE_C(0x000134), GC_LU},
+ {RUNE_C(0x000135), RUNE_C(0x000135), GC_LL},
+ {RUNE_C(0x000136), RUNE_C(0x000136), GC_LU},
+ {RUNE_C(0x000137), RUNE_C(0x000138), GC_LL},
+ {RUNE_C(0x000139), RUNE_C(0x000139), GC_LU},
+ {RUNE_C(0x00013A), RUNE_C(0x00013A), GC_LL},
+ {RUNE_C(0x00013B), RUNE_C(0x00013B), GC_LU},
+ {RUNE_C(0x00013C), RUNE_C(0x00013C), GC_LL},
+ {RUNE_C(0x00013D), RUNE_C(0x00013D), GC_LU},
+ {RUNE_C(0x00013E), RUNE_C(0x00013E), GC_LL},
+ {RUNE_C(0x00013F), RUNE_C(0x00013F), GC_LU},
+ {RUNE_C(0x000140), RUNE_C(0x000140), GC_LL},
+ {RUNE_C(0x000141), RUNE_C(0x000141), GC_LU},
+ {RUNE_C(0x000142), RUNE_C(0x000142), GC_LL},
+ {RUNE_C(0x000143), RUNE_C(0x000143), GC_LU},
+ {RUNE_C(0x000144), RUNE_C(0x000144), GC_LL},
+ {RUNE_C(0x000145), RUNE_C(0x000145), GC_LU},
+ {RUNE_C(0x000146), RUNE_C(0x000146), GC_LL},
+ {RUNE_C(0x000147), RUNE_C(0x000147), GC_LU},
+ {RUNE_C(0x000148), RUNE_C(0x000149), GC_LL},
+ {RUNE_C(0x00014A), RUNE_C(0x00014A), GC_LU},
+ {RUNE_C(0x00014B), RUNE_C(0x00014B), GC_LL},
+ {RUNE_C(0x00014C), RUNE_C(0x00014C), GC_LU},
+ {RUNE_C(0x00014D), RUNE_C(0x00014D), GC_LL},
+ {RUNE_C(0x00014E), RUNE_C(0x00014E), GC_LU},
+ {RUNE_C(0x00014F), RUNE_C(0x00014F), GC_LL},
+ {RUNE_C(0x000150), RUNE_C(0x000150), GC_LU},
+ {RUNE_C(0x000151), RUNE_C(0x000151), GC_LL},
+ {RUNE_C(0x000152), RUNE_C(0x000152), GC_LU},
+ {RUNE_C(0x000153), RUNE_C(0x000153), GC_LL},
+ {RUNE_C(0x000154), RUNE_C(0x000154), GC_LU},
+ {RUNE_C(0x000155), RUNE_C(0x000155), GC_LL},
+ {RUNE_C(0x000156), RUNE_C(0x000156), GC_LU},
+ {RUNE_C(0x000157), RUNE_C(0x000157), GC_LL},
+ {RUNE_C(0x000158), RUNE_C(0x000158), GC_LU},
+ {RUNE_C(0x000159), RUNE_C(0x000159), GC_LL},
+ {RUNE_C(0x00015A), RUNE_C(0x00015A), GC_LU},
+ {RUNE_C(0x00015B), RUNE_C(0x00015B), GC_LL},
+ {RUNE_C(0x00015C), RUNE_C(0x00015C), GC_LU},
+ {RUNE_C(0x00015D), RUNE_C(0x00015D), GC_LL},
+ {RUNE_C(0x00015E), RUNE_C(0x00015E), GC_LU},
+ {RUNE_C(0x00015F), RUNE_C(0x00015F), GC_LL},
+ {RUNE_C(0x000160), RUNE_C(0x000160), GC_LU},
+ {RUNE_C(0x000161), RUNE_C(0x000161), GC_LL},
+ {RUNE_C(0x000162), RUNE_C(0x000162), GC_LU},
+ {RUNE_C(0x000163), RUNE_C(0x000163), GC_LL},
+ {RUNE_C(0x000164), RUNE_C(0x000164), GC_LU},
+ {RUNE_C(0x000165), RUNE_C(0x000165), GC_LL},
+ {RUNE_C(0x000166), RUNE_C(0x000166), GC_LU},
+ {RUNE_C(0x000167), RUNE_C(0x000167), GC_LL},
+ {RUNE_C(0x000168), RUNE_C(0x000168), GC_LU},
+ {RUNE_C(0x000169), RUNE_C(0x000169), GC_LL},
+ {RUNE_C(0x00016A), RUNE_C(0x00016A), GC_LU},
+ {RUNE_C(0x00016B), RUNE_C(0x00016B), GC_LL},
+ {RUNE_C(0x00016C), RUNE_C(0x00016C), GC_LU},
+ {RUNE_C(0x00016D), RUNE_C(0x00016D), GC_LL},
+ {RUNE_C(0x00016E), RUNE_C(0x00016E), GC_LU},
+ {RUNE_C(0x00016F), RUNE_C(0x00016F), GC_LL},
+ {RUNE_C(0x000170), RUNE_C(0x000170), GC_LU},
+ {RUNE_C(0x000171), RUNE_C(0x000171), GC_LL},
+ {RUNE_C(0x000172), RUNE_C(0x000172), GC_LU},
+ {RUNE_C(0x000173), RUNE_C(0x000173), GC_LL},
+ {RUNE_C(0x000174), RUNE_C(0x000174), GC_LU},
+ {RUNE_C(0x000175), RUNE_C(0x000175), GC_LL},
+ {RUNE_C(0x000176), RUNE_C(0x000176), GC_LU},
+ {RUNE_C(0x000177), RUNE_C(0x000177), GC_LL},
+ {RUNE_C(0x000178), RUNE_C(0x000179), GC_LU},
+ {RUNE_C(0x00017A), RUNE_C(0x00017A), GC_LL},
+ {RUNE_C(0x00017B), RUNE_C(0x00017B), GC_LU},
+ {RUNE_C(0x00017C), RUNE_C(0x00017C), GC_LL},
+ {RUNE_C(0x00017D), RUNE_C(0x00017D), GC_LU},
+ {RUNE_C(0x00017E), RUNE_C(0x000180), GC_LL},
+ {RUNE_C(0x000181), RUNE_C(0x000182), GC_LU},
+ {RUNE_C(0x000183), RUNE_C(0x000183), GC_LL},
+ {RUNE_C(0x000184), RUNE_C(0x000184), GC_LU},
+ {RUNE_C(0x000185), RUNE_C(0x000185), GC_LL},
+ {RUNE_C(0x000186), RUNE_C(0x000187), GC_LU},
+ {RUNE_C(0x000188), RUNE_C(0x000188), GC_LL},
+ {RUNE_C(0x000189), RUNE_C(0x00018B), GC_LU},
+ {RUNE_C(0x00018C), RUNE_C(0x00018D), GC_LL},
+ {RUNE_C(0x00018E), RUNE_C(0x000191), GC_LU},
+ {RUNE_C(0x000192), RUNE_C(0x000192), GC_LL},
+ {RUNE_C(0x000193), RUNE_C(0x000194), GC_LU},
+ {RUNE_C(0x000195), RUNE_C(0x000195), GC_LL},
+ {RUNE_C(0x000196), RUNE_C(0x000198), GC_LU},
+ {RUNE_C(0x000199), RUNE_C(0x00019B), GC_LL},
+ {RUNE_C(0x00019C), RUNE_C(0x00019D), GC_LU},
+ {RUNE_C(0x00019E), RUNE_C(0x00019E), GC_LL},
+ {RUNE_C(0x00019F), RUNE_C(0x0001A0), GC_LU},
+ {RUNE_C(0x0001A1), RUNE_C(0x0001A1), GC_LL},
+ {RUNE_C(0x0001A2), RUNE_C(0x0001A2), GC_LU},
+ {RUNE_C(0x0001A3), RUNE_C(0x0001A3), GC_LL},
+ {RUNE_C(0x0001A4), RUNE_C(0x0001A4), GC_LU},
+ {RUNE_C(0x0001A5), RUNE_C(0x0001A5), GC_LL},
+ {RUNE_C(0x0001A6), RUNE_C(0x0001A7), GC_LU},
+ {RUNE_C(0x0001A8), RUNE_C(0x0001A8), GC_LL},
+ {RUNE_C(0x0001A9), RUNE_C(0x0001A9), GC_LU},
+ {RUNE_C(0x0001AA), RUNE_C(0x0001AB), GC_LL},
+ {RUNE_C(0x0001AC), RUNE_C(0x0001AC), GC_LU},
+ {RUNE_C(0x0001AD), RUNE_C(0x0001AD), GC_LL},
+ {RUNE_C(0x0001AE), RUNE_C(0x0001AF), GC_LU},
+ {RUNE_C(0x0001B0), RUNE_C(0x0001B0), GC_LL},
+ {RUNE_C(0x0001B1), RUNE_C(0x0001B3), GC_LU},
+ {RUNE_C(0x0001B4), RUNE_C(0x0001B4), GC_LL},
+ {RUNE_C(0x0001B5), RUNE_C(0x0001B5), GC_LU},
+ {RUNE_C(0x0001B6), RUNE_C(0x0001B6), GC_LL},
+ {RUNE_C(0x0001B7), RUNE_C(0x0001B8), GC_LU},
+ {RUNE_C(0x0001B9), RUNE_C(0x0001BA), GC_LL},
+ {RUNE_C(0x0001BB), RUNE_C(0x0001BB), GC_LO},
+ {RUNE_C(0x0001BC), RUNE_C(0x0001BC), GC_LU},
+ {RUNE_C(0x0001BD), RUNE_C(0x0001BF), GC_LL},
+ {RUNE_C(0x0001C0), RUNE_C(0x0001C3), GC_LO},
+ {RUNE_C(0x0001C4), RUNE_C(0x0001C4), GC_LU},
+ {RUNE_C(0x0001C5), RUNE_C(0x0001C5), GC_LT},
+ {RUNE_C(0x0001C6), RUNE_C(0x0001C6), GC_LL},
+ {RUNE_C(0x0001C7), RUNE_C(0x0001C7), GC_LU},
+ {RUNE_C(0x0001C8), RUNE_C(0x0001C8), GC_LT},
+ {RUNE_C(0x0001C9), RUNE_C(0x0001C9), GC_LL},
+ {RUNE_C(0x0001CA), RUNE_C(0x0001CA), GC_LU},
+ {RUNE_C(0x0001CB), RUNE_C(0x0001CB), GC_LT},
+ {RUNE_C(0x0001CC), RUNE_C(0x0001CC), GC_LL},
+ {RUNE_C(0x0001CD), RUNE_C(0x0001CD), GC_LU},
+ {RUNE_C(0x0001CE), RUNE_C(0x0001CE), GC_LL},
+ {RUNE_C(0x0001CF), RUNE_C(0x0001CF), GC_LU},
+ {RUNE_C(0x0001D0), RUNE_C(0x0001D0), GC_LL},
+ {RUNE_C(0x0001D1), RUNE_C(0x0001D1), GC_LU},
+ {RUNE_C(0x0001D2), RUNE_C(0x0001D2), GC_LL},
+ {RUNE_C(0x0001D3), RUNE_C(0x0001D3), GC_LU},
+ {RUNE_C(0x0001D4), RUNE_C(0x0001D4), GC_LL},
+ {RUNE_C(0x0001D5), RUNE_C(0x0001D5), GC_LU},
+ {RUNE_C(0x0001D6), RUNE_C(0x0001D6), GC_LL},
+ {RUNE_C(0x0001D7), RUNE_C(0x0001D7), GC_LU},
+ {RUNE_C(0x0001D8), RUNE_C(0x0001D8), GC_LL},
+ {RUNE_C(0x0001D9), RUNE_C(0x0001D9), GC_LU},
+ {RUNE_C(0x0001DA), RUNE_C(0x0001DA), GC_LL},
+ {RUNE_C(0x0001DB), RUNE_C(0x0001DB), GC_LU},
+ {RUNE_C(0x0001DC), RUNE_C(0x0001DD), GC_LL},
+ {RUNE_C(0x0001DE), RUNE_C(0x0001DE), GC_LU},
+ {RUNE_C(0x0001DF), RUNE_C(0x0001DF), GC_LL},
+ {RUNE_C(0x0001E0), RUNE_C(0x0001E0), GC_LU},
+ {RUNE_C(0x0001E1), RUNE_C(0x0001E1), GC_LL},
+ {RUNE_C(0x0001E2), RUNE_C(0x0001E2), GC_LU},
+ {RUNE_C(0x0001E3), RUNE_C(0x0001E3), GC_LL},
+ {RUNE_C(0x0001E4), RUNE_C(0x0001E4), GC_LU},
+ {RUNE_C(0x0001E5), RUNE_C(0x0001E5), GC_LL},
+ {RUNE_C(0x0001E6), RUNE_C(0x0001E6), GC_LU},
+ {RUNE_C(0x0001E7), RUNE_C(0x0001E7), GC_LL},
+ {RUNE_C(0x0001E8), RUNE_C(0x0001E8), GC_LU},
+ {RUNE_C(0x0001E9), RUNE_C(0x0001E9), GC_LL},
+ {RUNE_C(0x0001EA), RUNE_C(0x0001EA), GC_LU},
+ {RUNE_C(0x0001EB), RUNE_C(0x0001EB), GC_LL},
+ {RUNE_C(0x0001EC), RUNE_C(0x0001EC), GC_LU},
+ {RUNE_C(0x0001ED), RUNE_C(0x0001ED), GC_LL},
+ {RUNE_C(0x0001EE), RUNE_C(0x0001EE), GC_LU},
+ {RUNE_C(0x0001EF), RUNE_C(0x0001F0), GC_LL},
+ {RUNE_C(0x0001F1), RUNE_C(0x0001F1), GC_LU},
+ {RUNE_C(0x0001F2), RUNE_C(0x0001F2), GC_LT},
+ {RUNE_C(0x0001F3), RUNE_C(0x0001F3), GC_LL},
+ {RUNE_C(0x0001F4), RUNE_C(0x0001F4), GC_LU},
+ {RUNE_C(0x0001F5), RUNE_C(0x0001F5), GC_LL},
+ {RUNE_C(0x0001F6), RUNE_C(0x0001F8), GC_LU},
+ {RUNE_C(0x0001F9), RUNE_C(0x0001F9), GC_LL},
+ {RUNE_C(0x0001FA), RUNE_C(0x0001FA), GC_LU},
+ {RUNE_C(0x0001FB), RUNE_C(0x0001FB), GC_LL},
+ {RUNE_C(0x0001FC), RUNE_C(0x0001FC), GC_LU},
+ {RUNE_C(0x0001FD), RUNE_C(0x0001FD), GC_LL},
+ {RUNE_C(0x0001FE), RUNE_C(0x0001FE), GC_LU},
+ {RUNE_C(0x0001FF), RUNE_C(0x0001FF), GC_LL},
+ {RUNE_C(0x000200), RUNE_C(0x000200), GC_LU},
+ {RUNE_C(0x000201), RUNE_C(0x000201), GC_LL},
+ {RUNE_C(0x000202), RUNE_C(0x000202), GC_LU},
+ {RUNE_C(0x000203), RUNE_C(0x000203), GC_LL},
+ {RUNE_C(0x000204), RUNE_C(0x000204), GC_LU},
+ {RUNE_C(0x000205), RUNE_C(0x000205), GC_LL},
+ {RUNE_C(0x000206), RUNE_C(0x000206), GC_LU},
+ {RUNE_C(0x000207), RUNE_C(0x000207), GC_LL},
+ {RUNE_C(0x000208), RUNE_C(0x000208), GC_LU},
+ {RUNE_C(0x000209), RUNE_C(0x000209), GC_LL},
+ {RUNE_C(0x00020A), RUNE_C(0x00020A), GC_LU},
+ {RUNE_C(0x00020B), RUNE_C(0x00020B), GC_LL},
+ {RUNE_C(0x00020C), RUNE_C(0x00020C), GC_LU},
+ {RUNE_C(0x00020D), RUNE_C(0x00020D), GC_LL},
+ {RUNE_C(0x00020E), RUNE_C(0x00020E), GC_LU},
+ {RUNE_C(0x00020F), RUNE_C(0x00020F), GC_LL},
+ {RUNE_C(0x000210), RUNE_C(0x000210), GC_LU},
+ {RUNE_C(0x000211), RUNE_C(0x000211), GC_LL},
+ {RUNE_C(0x000212), RUNE_C(0x000212), GC_LU},
+ {RUNE_C(0x000213), RUNE_C(0x000213), GC_LL},
+ {RUNE_C(0x000214), RUNE_C(0x000214), GC_LU},
+ {RUNE_C(0x000215), RUNE_C(0x000215), GC_LL},
+ {RUNE_C(0x000216), RUNE_C(0x000216), GC_LU},
+ {RUNE_C(0x000217), RUNE_C(0x000217), GC_LL},
+ {RUNE_C(0x000218), RUNE_C(0x000218), GC_LU},
+ {RUNE_C(0x000219), RUNE_C(0x000219), GC_LL},
+ {RUNE_C(0x00021A), RUNE_C(0x00021A), GC_LU},
+ {RUNE_C(0x00021B), RUNE_C(0x00021B), GC_LL},
+ {RUNE_C(0x00021C), RUNE_C(0x00021C), GC_LU},
+ {RUNE_C(0x00021D), RUNE_C(0x00021D), GC_LL},
+ {RUNE_C(0x00021E), RUNE_C(0x00021E), GC_LU},
+ {RUNE_C(0x00021F), RUNE_C(0x00021F), GC_LL},
+ {RUNE_C(0x000220), RUNE_C(0x000220), GC_LU},
+ {RUNE_C(0x000221), RUNE_C(0x000221), GC_LL},
+ {RUNE_C(0x000222), RUNE_C(0x000222), GC_LU},
+ {RUNE_C(0x000223), RUNE_C(0x000223), GC_LL},
+ {RUNE_C(0x000224), RUNE_C(0x000224), GC_LU},
+ {RUNE_C(0x000225), RUNE_C(0x000225), GC_LL},
+ {RUNE_C(0x000226), RUNE_C(0x000226), GC_LU},
+ {RUNE_C(0x000227), RUNE_C(0x000227), GC_LL},
+ {RUNE_C(0x000228), RUNE_C(0x000228), GC_LU},
+ {RUNE_C(0x000229), RUNE_C(0x000229), GC_LL},
+ {RUNE_C(0x00022A), RUNE_C(0x00022A), GC_LU},
+ {RUNE_C(0x00022B), RUNE_C(0x00022B), GC_LL},
+ {RUNE_C(0x00022C), RUNE_C(0x00022C), GC_LU},
+ {RUNE_C(0x00022D), RUNE_C(0x00022D), GC_LL},
+ {RUNE_C(0x00022E), RUNE_C(0x00022E), GC_LU},
+ {RUNE_C(0x00022F), RUNE_C(0x00022F), GC_LL},
+ {RUNE_C(0x000230), RUNE_C(0x000230), GC_LU},
+ {RUNE_C(0x000231), RUNE_C(0x000231), GC_LL},
+ {RUNE_C(0x000232), RUNE_C(0x000232), GC_LU},
+ {RUNE_C(0x000233), RUNE_C(0x000239), GC_LL},
+ {RUNE_C(0x00023A), RUNE_C(0x00023B), GC_LU},
+ {RUNE_C(0x00023C), RUNE_C(0x00023C), GC_LL},
+ {RUNE_C(0x00023D), RUNE_C(0x00023E), GC_LU},
+ {RUNE_C(0x00023F), RUNE_C(0x000240), GC_LL},
+ {RUNE_C(0x000241), RUNE_C(0x000241), GC_LU},
+ {RUNE_C(0x000242), RUNE_C(0x000242), GC_LL},
+ {RUNE_C(0x000243), RUNE_C(0x000246), GC_LU},
+ {RUNE_C(0x000247), RUNE_C(0x000247), GC_LL},
+ {RUNE_C(0x000248), RUNE_C(0x000248), GC_LU},
+ {RUNE_C(0x000249), RUNE_C(0x000249), GC_LL},
+ {RUNE_C(0x00024A), RUNE_C(0x00024A), GC_LU},
+ {RUNE_C(0x00024B), RUNE_C(0x00024B), GC_LL},
+ {RUNE_C(0x00024C), RUNE_C(0x00024C), GC_LU},
+ {RUNE_C(0x00024D), RUNE_C(0x00024D), GC_LL},
+ {RUNE_C(0x00024E), RUNE_C(0x00024E), GC_LU},
+ {RUNE_C(0x00024F), RUNE_C(0x000293), GC_LL},
+ {RUNE_C(0x000294), RUNE_C(0x000294), GC_LO},
+ {RUNE_C(0x000295), RUNE_C(0x0002AF), GC_LL},
+ {RUNE_C(0x0002B0), RUNE_C(0x0002C1), GC_LM},
+ {RUNE_C(0x0002C2), RUNE_C(0x0002C5), GC_SK},
+ {RUNE_C(0x0002C6), RUNE_C(0x0002D1), GC_LM},
+ {RUNE_C(0x0002D2), RUNE_C(0x0002DF), GC_SK},
+ {RUNE_C(0x0002E0), RUNE_C(0x0002E4), GC_LM},
+ {RUNE_C(0x0002E5), RUNE_C(0x0002EB), GC_SK},
+ {RUNE_C(0x0002EC), RUNE_C(0x0002EC), GC_LM},
+ {RUNE_C(0x0002ED), RUNE_C(0x0002ED), GC_SK},
+ {RUNE_C(0x0002EE), RUNE_C(0x0002EE), GC_LM},
+ {RUNE_C(0x0002EF), RUNE_C(0x0002FF), GC_SK},
+ {RUNE_C(0x000300), RUNE_C(0x00036F), GC_MN},
+ {RUNE_C(0x000370), RUNE_C(0x000370), GC_LU},
+ {RUNE_C(0x000371), RUNE_C(0x000371), GC_LL},
+ {RUNE_C(0x000372), RUNE_C(0x000372), GC_LU},
+ {RUNE_C(0x000373), RUNE_C(0x000373), GC_LL},
+ {RUNE_C(0x000374), RUNE_C(0x000374), GC_LM},
+ {RUNE_C(0x000375), RUNE_C(0x000375), GC_SK},
+ {RUNE_C(0x000376), RUNE_C(0x000376), GC_LU},
+ {RUNE_C(0x000377), RUNE_C(0x000377), GC_LL},
+ {RUNE_C(0x00037A), RUNE_C(0x00037A), GC_LM},
+ {RUNE_C(0x00037B), RUNE_C(0x00037D), GC_LL},
+ {RUNE_C(0x00037E), RUNE_C(0x00037E), GC_PO},
+ {RUNE_C(0x00037F), RUNE_C(0x00037F), GC_LU},
+ {RUNE_C(0x000384), RUNE_C(0x000385), GC_SK},
+ {RUNE_C(0x000386), RUNE_C(0x000386), GC_LU},
+ {RUNE_C(0x000387), RUNE_C(0x000387), GC_PO},
+ {RUNE_C(0x000388), RUNE_C(0x00038A), GC_LU},
+ {RUNE_C(0x00038C), RUNE_C(0x00038C), GC_LU},
+ {RUNE_C(0x00038E), RUNE_C(0x00038F), GC_LU},
+ {RUNE_C(0x000390), RUNE_C(0x000390), GC_LL},
+ {RUNE_C(0x000391), RUNE_C(0x0003A1), GC_LU},
+ {RUNE_C(0x0003A3), RUNE_C(0x0003AB), GC_LU},
+ {RUNE_C(0x0003AC), RUNE_C(0x0003CE), GC_LL},
+ {RUNE_C(0x0003CF), RUNE_C(0x0003CF), GC_LU},
+ {RUNE_C(0x0003D0), RUNE_C(0x0003D1), GC_LL},
+ {RUNE_C(0x0003D2), RUNE_C(0x0003D4), GC_LU},
+ {RUNE_C(0x0003D5), RUNE_C(0x0003D7), GC_LL},
+ {RUNE_C(0x0003D8), RUNE_C(0x0003D8), GC_LU},
+ {RUNE_C(0x0003D9), RUNE_C(0x0003D9), GC_LL},
+ {RUNE_C(0x0003DA), RUNE_C(0x0003DA), GC_LU},
+ {RUNE_C(0x0003DB), RUNE_C(0x0003DB), GC_LL},
+ {RUNE_C(0x0003DC), RUNE_C(0x0003DC), GC_LU},
+ {RUNE_C(0x0003DD), RUNE_C(0x0003DD), GC_LL},
+ {RUNE_C(0x0003DE), RUNE_C(0x0003DE), GC_LU},
+ {RUNE_C(0x0003DF), RUNE_C(0x0003DF), GC_LL},
+ {RUNE_C(0x0003E0), RUNE_C(0x0003E0), GC_LU},
+ {RUNE_C(0x0003E1), RUNE_C(0x0003E1), GC_LL},
+ {RUNE_C(0x0003E2), RUNE_C(0x0003E2), GC_LU},
+ {RUNE_C(0x0003E3), RUNE_C(0x0003E3), GC_LL},
+ {RUNE_C(0x0003E4), RUNE_C(0x0003E4), GC_LU},
+ {RUNE_C(0x0003E5), RUNE_C(0x0003E5), GC_LL},
+ {RUNE_C(0x0003E6), RUNE_C(0x0003E6), GC_LU},
+ {RUNE_C(0x0003E7), RUNE_C(0x0003E7), GC_LL},
+ {RUNE_C(0x0003E8), RUNE_C(0x0003E8), GC_LU},
+ {RUNE_C(0x0003E9), RUNE_C(0x0003E9), GC_LL},
+ {RUNE_C(0x0003EA), RUNE_C(0x0003EA), GC_LU},
+ {RUNE_C(0x0003EB), RUNE_C(0x0003EB), GC_LL},
+ {RUNE_C(0x0003EC), RUNE_C(0x0003EC), GC_LU},
+ {RUNE_C(0x0003ED), RUNE_C(0x0003ED), GC_LL},
+ {RUNE_C(0x0003EE), RUNE_C(0x0003EE), GC_LU},
+ {RUNE_C(0x0003EF), RUNE_C(0x0003F3), GC_LL},
+ {RUNE_C(0x0003F4), RUNE_C(0x0003F4), GC_LU},
+ {RUNE_C(0x0003F5), RUNE_C(0x0003F5), GC_LL},
+ {RUNE_C(0x0003F6), RUNE_C(0x0003F6), GC_SM},
+ {RUNE_C(0x0003F7), RUNE_C(0x0003F7), GC_LU},
+ {RUNE_C(0x0003F8), RUNE_C(0x0003F8), GC_LL},
+ {RUNE_C(0x0003F9), RUNE_C(0x0003FA), GC_LU},
+ {RUNE_C(0x0003FB), RUNE_C(0x0003FC), GC_LL},
+ {RUNE_C(0x0003FD), RUNE_C(0x00042F), GC_LU},
+ {RUNE_C(0x000430), RUNE_C(0x00045F), GC_LL},
+ {RUNE_C(0x000460), RUNE_C(0x000460), GC_LU},
+ {RUNE_C(0x000461), RUNE_C(0x000461), GC_LL},
+ {RUNE_C(0x000462), RUNE_C(0x000462), GC_LU},
+ {RUNE_C(0x000463), RUNE_C(0x000463), GC_LL},
+ {RUNE_C(0x000464), RUNE_C(0x000464), GC_LU},
+ {RUNE_C(0x000465), RUNE_C(0x000465), GC_LL},
+ {RUNE_C(0x000466), RUNE_C(0x000466), GC_LU},
+ {RUNE_C(0x000467), RUNE_C(0x000467), GC_LL},
+ {RUNE_C(0x000468), RUNE_C(0x000468), GC_LU},
+ {RUNE_C(0x000469), RUNE_C(0x000469), GC_LL},
+ {RUNE_C(0x00046A), RUNE_C(0x00046A), GC_LU},
+ {RUNE_C(0x00046B), RUNE_C(0x00046B), GC_LL},
+ {RUNE_C(0x00046C), RUNE_C(0x00046C), GC_LU},
+ {RUNE_C(0x00046D), RUNE_C(0x00046D), GC_LL},
+ {RUNE_C(0x00046E), RUNE_C(0x00046E), GC_LU},
+ {RUNE_C(0x00046F), RUNE_C(0x00046F), GC_LL},
+ {RUNE_C(0x000470), RUNE_C(0x000470), GC_LU},
+ {RUNE_C(0x000471), RUNE_C(0x000471), GC_LL},
+ {RUNE_C(0x000472), RUNE_C(0x000472), GC_LU},
+ {RUNE_C(0x000473), RUNE_C(0x000473), GC_LL},
+ {RUNE_C(0x000474), RUNE_C(0x000474), GC_LU},
+ {RUNE_C(0x000475), RUNE_C(0x000475), GC_LL},
+ {RUNE_C(0x000476), RUNE_C(0x000476), GC_LU},
+ {RUNE_C(0x000477), RUNE_C(0x000477), GC_LL},
+ {RUNE_C(0x000478), RUNE_C(0x000478), GC_LU},
+ {RUNE_C(0x000479), RUNE_C(0x000479), GC_LL},
+ {RUNE_C(0x00047A), RUNE_C(0x00047A), GC_LU},
+ {RUNE_C(0x00047B), RUNE_C(0x00047B), GC_LL},
+ {RUNE_C(0x00047C), RUNE_C(0x00047C), GC_LU},
+ {RUNE_C(0x00047D), RUNE_C(0x00047D), GC_LL},
+ {RUNE_C(0x00047E), RUNE_C(0x00047E), GC_LU},
+ {RUNE_C(0x00047F), RUNE_C(0x00047F), GC_LL},
+ {RUNE_C(0x000480), RUNE_C(0x000480), GC_LU},
+ {RUNE_C(0x000481), RUNE_C(0x000481), GC_LL},
+ {RUNE_C(0x000482), RUNE_C(0x000482), GC_SO},
+ {RUNE_C(0x000483), RUNE_C(0x000487), GC_MN},
+ {RUNE_C(0x000488), RUNE_C(0x000489), GC_ME},
+ {RUNE_C(0x00048A), RUNE_C(0x00048A), GC_LU},
+ {RUNE_C(0x00048B), RUNE_C(0x00048B), GC_LL},
+ {RUNE_C(0x00048C), RUNE_C(0x00048C), GC_LU},
+ {RUNE_C(0x00048D), RUNE_C(0x00048D), GC_LL},
+ {RUNE_C(0x00048E), RUNE_C(0x00048E), GC_LU},
+ {RUNE_C(0x00048F), RUNE_C(0x00048F), GC_LL},
+ {RUNE_C(0x000490), RUNE_C(0x000490), GC_LU},
+ {RUNE_C(0x000491), RUNE_C(0x000491), GC_LL},
+ {RUNE_C(0x000492), RUNE_C(0x000492), GC_LU},
+ {RUNE_C(0x000493), RUNE_C(0x000493), GC_LL},
+ {RUNE_C(0x000494), RUNE_C(0x000494), GC_LU},
+ {RUNE_C(0x000495), RUNE_C(0x000495), GC_LL},
+ {RUNE_C(0x000496), RUNE_C(0x000496), GC_LU},
+ {RUNE_C(0x000497), RUNE_C(0x000497), GC_LL},
+ {RUNE_C(0x000498), RUNE_C(0x000498), GC_LU},
+ {RUNE_C(0x000499), RUNE_C(0x000499), GC_LL},
+ {RUNE_C(0x00049A), RUNE_C(0x00049A), GC_LU},
+ {RUNE_C(0x00049B), RUNE_C(0x00049B), GC_LL},
+ {RUNE_C(0x00049C), RUNE_C(0x00049C), GC_LU},
+ {RUNE_C(0x00049D), RUNE_C(0x00049D), GC_LL},
+ {RUNE_C(0x00049E), RUNE_C(0x00049E), GC_LU},
+ {RUNE_C(0x00049F), RUNE_C(0x00049F), GC_LL},
+ {RUNE_C(0x0004A0), RUNE_C(0x0004A0), GC_LU},
+ {RUNE_C(0x0004A1), RUNE_C(0x0004A1), GC_LL},
+ {RUNE_C(0x0004A2), RUNE_C(0x0004A2), GC_LU},
+ {RUNE_C(0x0004A3), RUNE_C(0x0004A3), GC_LL},
+ {RUNE_C(0x0004A4), RUNE_C(0x0004A4), GC_LU},
+ {RUNE_C(0x0004A5), RUNE_C(0x0004A5), GC_LL},
+ {RUNE_C(0x0004A6), RUNE_C(0x0004A6), GC_LU},
+ {RUNE_C(0x0004A7), RUNE_C(0x0004A7), GC_LL},
+ {RUNE_C(0x0004A8), RUNE_C(0x0004A8), GC_LU},
+ {RUNE_C(0x0004A9), RUNE_C(0x0004A9), GC_LL},
+ {RUNE_C(0x0004AA), RUNE_C(0x0004AA), GC_LU},
+ {RUNE_C(0x0004AB), RUNE_C(0x0004AB), GC_LL},
+ {RUNE_C(0x0004AC), RUNE_C(0x0004AC), GC_LU},
+ {RUNE_C(0x0004AD), RUNE_C(0x0004AD), GC_LL},
+ {RUNE_C(0x0004AE), RUNE_C(0x0004AE), GC_LU},
+ {RUNE_C(0x0004AF), RUNE_C(0x0004AF), GC_LL},
+ {RUNE_C(0x0004B0), RUNE_C(0x0004B0), GC_LU},
+ {RUNE_C(0x0004B1), RUNE_C(0x0004B1), GC_LL},
+ {RUNE_C(0x0004B2), RUNE_C(0x0004B2), GC_LU},
+ {RUNE_C(0x0004B3), RUNE_C(0x0004B3), GC_LL},
+ {RUNE_C(0x0004B4), RUNE_C(0x0004B4), GC_LU},
+ {RUNE_C(0x0004B5), RUNE_C(0x0004B5), GC_LL},
+ {RUNE_C(0x0004B6), RUNE_C(0x0004B6), GC_LU},
+ {RUNE_C(0x0004B7), RUNE_C(0x0004B7), GC_LL},
+ {RUNE_C(0x0004B8), RUNE_C(0x0004B8), GC_LU},
+ {RUNE_C(0x0004B9), RUNE_C(0x0004B9), GC_LL},
+ {RUNE_C(0x0004BA), RUNE_C(0x0004BA), GC_LU},
+ {RUNE_C(0x0004BB), RUNE_C(0x0004BB), GC_LL},
+ {RUNE_C(0x0004BC), RUNE_C(0x0004BC), GC_LU},
+ {RUNE_C(0x0004BD), RUNE_C(0x0004BD), GC_LL},
+ {RUNE_C(0x0004BE), RUNE_C(0x0004BE), GC_LU},
+ {RUNE_C(0x0004BF), RUNE_C(0x0004BF), GC_LL},
+ {RUNE_C(0x0004C0), RUNE_C(0x0004C1), GC_LU},
+ {RUNE_C(0x0004C2), RUNE_C(0x0004C2), GC_LL},
+ {RUNE_C(0x0004C3), RUNE_C(0x0004C3), GC_LU},
+ {RUNE_C(0x0004C4), RUNE_C(0x0004C4), GC_LL},
+ {RUNE_C(0x0004C5), RUNE_C(0x0004C5), GC_LU},
+ {RUNE_C(0x0004C6), RUNE_C(0x0004C6), GC_LL},
+ {RUNE_C(0x0004C7), RUNE_C(0x0004C7), GC_LU},
+ {RUNE_C(0x0004C8), RUNE_C(0x0004C8), GC_LL},
+ {RUNE_C(0x0004C9), RUNE_C(0x0004C9), GC_LU},
+ {RUNE_C(0x0004CA), RUNE_C(0x0004CA), GC_LL},
+ {RUNE_C(0x0004CB), RUNE_C(0x0004CB), GC_LU},
+ {RUNE_C(0x0004CC), RUNE_C(0x0004CC), GC_LL},
+ {RUNE_C(0x0004CD), RUNE_C(0x0004CD), GC_LU},
+ {RUNE_C(0x0004CE), RUNE_C(0x0004CF), GC_LL},
+ {RUNE_C(0x0004D0), RUNE_C(0x0004D0), GC_LU},
+ {RUNE_C(0x0004D1), RUNE_C(0x0004D1), GC_LL},
+ {RUNE_C(0x0004D2), RUNE_C(0x0004D2), GC_LU},
+ {RUNE_C(0x0004D3), RUNE_C(0x0004D3), GC_LL},
+ {RUNE_C(0x0004D4), RUNE_C(0x0004D4), GC_LU},
+ {RUNE_C(0x0004D5), RUNE_C(0x0004D5), GC_LL},
+ {RUNE_C(0x0004D6), RUNE_C(0x0004D6), GC_LU},
+ {RUNE_C(0x0004D7), RUNE_C(0x0004D7), GC_LL},
+ {RUNE_C(0x0004D8), RUNE_C(0x0004D8), GC_LU},
+ {RUNE_C(0x0004D9), RUNE_C(0x0004D9), GC_LL},
+ {RUNE_C(0x0004DA), RUNE_C(0x0004DA), GC_LU},
+ {RUNE_C(0x0004DB), RUNE_C(0x0004DB), GC_LL},
+ {RUNE_C(0x0004DC), RUNE_C(0x0004DC), GC_LU},
+ {RUNE_C(0x0004DD), RUNE_C(0x0004DD), GC_LL},
+ {RUNE_C(0x0004DE), RUNE_C(0x0004DE), GC_LU},
+ {RUNE_C(0x0004DF), RUNE_C(0x0004DF), GC_LL},
+ {RUNE_C(0x0004E0), RUNE_C(0x0004E0), GC_LU},
+ {RUNE_C(0x0004E1), RUNE_C(0x0004E1), GC_LL},
+ {RUNE_C(0x0004E2), RUNE_C(0x0004E2), GC_LU},
+ {RUNE_C(0x0004E3), RUNE_C(0x0004E3), GC_LL},
+ {RUNE_C(0x0004E4), RUNE_C(0x0004E4), GC_LU},
+ {RUNE_C(0x0004E5), RUNE_C(0x0004E5), GC_LL},
+ {RUNE_C(0x0004E6), RUNE_C(0x0004E6), GC_LU},
+ {RUNE_C(0x0004E7), RUNE_C(0x0004E7), GC_LL},
+ {RUNE_C(0x0004E8), RUNE_C(0x0004E8), GC_LU},
+ {RUNE_C(0x0004E9), RUNE_C(0x0004E9), GC_LL},
+ {RUNE_C(0x0004EA), RUNE_C(0x0004EA), GC_LU},
+ {RUNE_C(0x0004EB), RUNE_C(0x0004EB), GC_LL},
+ {RUNE_C(0x0004EC), RUNE_C(0x0004EC), GC_LU},
+ {RUNE_C(0x0004ED), RUNE_C(0x0004ED), GC_LL},
+ {RUNE_C(0x0004EE), RUNE_C(0x0004EE), GC_LU},
+ {RUNE_C(0x0004EF), RUNE_C(0x0004EF), GC_LL},
+ {RUNE_C(0x0004F0), RUNE_C(0x0004F0), GC_LU},
+ {RUNE_C(0x0004F1), RUNE_C(0x0004F1), GC_LL},
+ {RUNE_C(0x0004F2), RUNE_C(0x0004F2), GC_LU},
+ {RUNE_C(0x0004F3), RUNE_C(0x0004F3), GC_LL},
+ {RUNE_C(0x0004F4), RUNE_C(0x0004F4), GC_LU},
+ {RUNE_C(0x0004F5), RUNE_C(0x0004F5), GC_LL},
+ {RUNE_C(0x0004F6), RUNE_C(0x0004F6), GC_LU},
+ {RUNE_C(0x0004F7), RUNE_C(0x0004F7), GC_LL},
+ {RUNE_C(0x0004F8), RUNE_C(0x0004F8), GC_LU},
+ {RUNE_C(0x0004F9), RUNE_C(0x0004F9), GC_LL},
+ {RUNE_C(0x0004FA), RUNE_C(0x0004FA), GC_LU},
+ {RUNE_C(0x0004FB), RUNE_C(0x0004FB), GC_LL},
+ {RUNE_C(0x0004FC), RUNE_C(0x0004FC), GC_LU},
+ {RUNE_C(0x0004FD), RUNE_C(0x0004FD), GC_LL},
+ {RUNE_C(0x0004FE), RUNE_C(0x0004FE), GC_LU},
+ {RUNE_C(0x0004FF), RUNE_C(0x0004FF), GC_LL},
+ {RUNE_C(0x000500), RUNE_C(0x000500), GC_LU},
+ {RUNE_C(0x000501), RUNE_C(0x000501), GC_LL},
+ {RUNE_C(0x000502), RUNE_C(0x000502), GC_LU},
+ {RUNE_C(0x000503), RUNE_C(0x000503), GC_LL},
+ {RUNE_C(0x000504), RUNE_C(0x000504), GC_LU},
+ {RUNE_C(0x000505), RUNE_C(0x000505), GC_LL},
+ {RUNE_C(0x000506), RUNE_C(0x000506), GC_LU},
+ {RUNE_C(0x000507), RUNE_C(0x000507), GC_LL},
+ {RUNE_C(0x000508), RUNE_C(0x000508), GC_LU},
+ {RUNE_C(0x000509), RUNE_C(0x000509), GC_LL},
+ {RUNE_C(0x00050A), RUNE_C(0x00050A), GC_LU},
+ {RUNE_C(0x00050B), RUNE_C(0x00050B), GC_LL},
+ {RUNE_C(0x00050C), RUNE_C(0x00050C), GC_LU},
+ {RUNE_C(0x00050D), RUNE_C(0x00050D), GC_LL},
+ {RUNE_C(0x00050E), RUNE_C(0x00050E), GC_LU},
+ {RUNE_C(0x00050F), RUNE_C(0x00050F), GC_LL},
+ {RUNE_C(0x000510), RUNE_C(0x000510), GC_LU},
+ {RUNE_C(0x000511), RUNE_C(0x000511), GC_LL},
+ {RUNE_C(0x000512), RUNE_C(0x000512), GC_LU},
+ {RUNE_C(0x000513), RUNE_C(0x000513), GC_LL},
+ {RUNE_C(0x000514), RUNE_C(0x000514), GC_LU},
+ {RUNE_C(0x000515), RUNE_C(0x000515), GC_LL},
+ {RUNE_C(0x000516), RUNE_C(0x000516), GC_LU},
+ {RUNE_C(0x000517), RUNE_C(0x000517), GC_LL},
+ {RUNE_C(0x000518), RUNE_C(0x000518), GC_LU},
+ {RUNE_C(0x000519), RUNE_C(0x000519), GC_LL},
+ {RUNE_C(0x00051A), RUNE_C(0x00051A), GC_LU},
+ {RUNE_C(0x00051B), RUNE_C(0x00051B), GC_LL},
+ {RUNE_C(0x00051C), RUNE_C(0x00051C), GC_LU},
+ {RUNE_C(0x00051D), RUNE_C(0x00051D), GC_LL},
+ {RUNE_C(0x00051E), RUNE_C(0x00051E), GC_LU},
+ {RUNE_C(0x00051F), RUNE_C(0x00051F), GC_LL},
+ {RUNE_C(0x000520), RUNE_C(0x000520), GC_LU},
+ {RUNE_C(0x000521), RUNE_C(0x000521), GC_LL},
+ {RUNE_C(0x000522), RUNE_C(0x000522), GC_LU},
+ {RUNE_C(0x000523), RUNE_C(0x000523), GC_LL},
+ {RUNE_C(0x000524), RUNE_C(0x000524), GC_LU},
+ {RUNE_C(0x000525), RUNE_C(0x000525), GC_LL},
+ {RUNE_C(0x000526), RUNE_C(0x000526), GC_LU},
+ {RUNE_C(0x000527), RUNE_C(0x000527), GC_LL},
+ {RUNE_C(0x000528), RUNE_C(0x000528), GC_LU},
+ {RUNE_C(0x000529), RUNE_C(0x000529), GC_LL},
+ {RUNE_C(0x00052A), RUNE_C(0x00052A), GC_LU},
+ {RUNE_C(0x00052B), RUNE_C(0x00052B), GC_LL},
+ {RUNE_C(0x00052C), RUNE_C(0x00052C), GC_LU},
+ {RUNE_C(0x00052D), RUNE_C(0x00052D), GC_LL},
+ {RUNE_C(0x00052E), RUNE_C(0x00052E), GC_LU},
+ {RUNE_C(0x00052F), RUNE_C(0x00052F), GC_LL},
+ {RUNE_C(0x000531), RUNE_C(0x000556), GC_LU},
+ {RUNE_C(0x000559), RUNE_C(0x000559), GC_LM},
+ {RUNE_C(0x00055A), RUNE_C(0x00055F), GC_PO},
+ {RUNE_C(0x000560), RUNE_C(0x000588), GC_LL},
+ {RUNE_C(0x000589), RUNE_C(0x000589), GC_PO},
+ {RUNE_C(0x00058A), RUNE_C(0x00058A), GC_PD},
+ {RUNE_C(0x00058D), RUNE_C(0x00058E), GC_SO},
+ {RUNE_C(0x00058F), RUNE_C(0x00058F), GC_SC},
+ {RUNE_C(0x000591), RUNE_C(0x0005BD), GC_MN},
+ {RUNE_C(0x0005BE), RUNE_C(0x0005BE), GC_PD},
+ {RUNE_C(0x0005BF), RUNE_C(0x0005BF), GC_MN},
+ {RUNE_C(0x0005C0), RUNE_C(0x0005C0), GC_PO},
+ {RUNE_C(0x0005C1), RUNE_C(0x0005C2), GC_MN},
+ {RUNE_C(0x0005C3), RUNE_C(0x0005C3), GC_PO},
+ {RUNE_C(0x0005C4), RUNE_C(0x0005C5), GC_MN},
+ {RUNE_C(0x0005C6), RUNE_C(0x0005C6), GC_PO},
+ {RUNE_C(0x0005C7), RUNE_C(0x0005C7), GC_MN},
+ {RUNE_C(0x0005D0), RUNE_C(0x0005EA), GC_LO},
+ {RUNE_C(0x0005EF), RUNE_C(0x0005F2), GC_LO},
+ {RUNE_C(0x0005F3), RUNE_C(0x0005F4), GC_PO},
+ {RUNE_C(0x000600), RUNE_C(0x000605), GC_CF},
+ {RUNE_C(0x000606), RUNE_C(0x000608), GC_SM},
+ {RUNE_C(0x000609), RUNE_C(0x00060A), GC_PO},
+ {RUNE_C(0x00060B), RUNE_C(0x00060B), GC_SC},
+ {RUNE_C(0x00060C), RUNE_C(0x00060D), GC_PO},
+ {RUNE_C(0x00060E), RUNE_C(0x00060F), GC_SO},
+ {RUNE_C(0x000610), RUNE_C(0x00061A), GC_MN},
+ {RUNE_C(0x00061B), RUNE_C(0x00061B), GC_PO},
+ {RUNE_C(0x00061C), RUNE_C(0x00061C), GC_CF},
+ {RUNE_C(0x00061D), RUNE_C(0x00061F), GC_PO},
+ {RUNE_C(0x000620), RUNE_C(0x00063F), GC_LO},
+ {RUNE_C(0x000640), RUNE_C(0x000640), GC_LM},
+ {RUNE_C(0x000641), RUNE_C(0x00064A), GC_LO},
+ {RUNE_C(0x00064B), RUNE_C(0x00065F), GC_MN},
+ {RUNE_C(0x000660), RUNE_C(0x000669), GC_ND},
+ {RUNE_C(0x00066A), RUNE_C(0x00066D), GC_PO},
+ {RUNE_C(0x00066E), RUNE_C(0x00066F), GC_LO},
+ {RUNE_C(0x000670), RUNE_C(0x000670), GC_MN},
+ {RUNE_C(0x000671), RUNE_C(0x0006D3), GC_LO},
+ {RUNE_C(0x0006D4), RUNE_C(0x0006D4), GC_PO},
+ {RUNE_C(0x0006D5), RUNE_C(0x0006D5), GC_LO},
+ {RUNE_C(0x0006D6), RUNE_C(0x0006DC), GC_MN},
+ {RUNE_C(0x0006DD), RUNE_C(0x0006DD), GC_CF},
+ {RUNE_C(0x0006DE), RUNE_C(0x0006DE), GC_SO},
+ {RUNE_C(0x0006DF), RUNE_C(0x0006E4), GC_MN},
+ {RUNE_C(0x0006E5), RUNE_C(0x0006E6), GC_LM},
+ {RUNE_C(0x0006E7), RUNE_C(0x0006E8), GC_MN},
+ {RUNE_C(0x0006E9), RUNE_C(0x0006E9), GC_SO},
+ {RUNE_C(0x0006EA), RUNE_C(0x0006ED), GC_MN},
+ {RUNE_C(0x0006EE), RUNE_C(0x0006EF), GC_LO},
+ {RUNE_C(0x0006F0), RUNE_C(0x0006F9), GC_ND},
+ {RUNE_C(0x0006FA), RUNE_C(0x0006FC), GC_LO},
+ {RUNE_C(0x0006FD), RUNE_C(0x0006FE), GC_SO},
+ {RUNE_C(0x0006FF), RUNE_C(0x0006FF), GC_LO},
+ {RUNE_C(0x000700), RUNE_C(0x00070D), GC_PO},
+ {RUNE_C(0x00070F), RUNE_C(0x00070F), GC_CF},
+ {RUNE_C(0x000710), RUNE_C(0x000710), GC_LO},
+ {RUNE_C(0x000711), RUNE_C(0x000711), GC_MN},
+ {RUNE_C(0x000712), RUNE_C(0x00072F), GC_LO},
+ {RUNE_C(0x000730), RUNE_C(0x00074A), GC_MN},
+ {RUNE_C(0x00074D), RUNE_C(0x0007A5), GC_LO},
+ {RUNE_C(0x0007A6), RUNE_C(0x0007B0), GC_MN},
+ {RUNE_C(0x0007B1), RUNE_C(0x0007B1), GC_LO},
+ {RUNE_C(0x0007C0), RUNE_C(0x0007C9), GC_ND},
+ {RUNE_C(0x0007CA), RUNE_C(0x0007EA), GC_LO},
+ {RUNE_C(0x0007EB), RUNE_C(0x0007F3), GC_MN},
+ {RUNE_C(0x0007F4), RUNE_C(0x0007F5), GC_LM},
+ {RUNE_C(0x0007F6), RUNE_C(0x0007F6), GC_SO},
+ {RUNE_C(0x0007F7), RUNE_C(0x0007F9), GC_PO},
+ {RUNE_C(0x0007FA), RUNE_C(0x0007FA), GC_LM},
+ {RUNE_C(0x0007FD), RUNE_C(0x0007FD), GC_MN},
+ {RUNE_C(0x0007FE), RUNE_C(0x0007FF), GC_SC},
+ {RUNE_C(0x000800), RUNE_C(0x000815), GC_LO},
+ {RUNE_C(0x000816), RUNE_C(0x000819), GC_MN},
+ {RUNE_C(0x00081A), RUNE_C(0x00081A), GC_LM},
+ {RUNE_C(0x00081B), RUNE_C(0x000823), GC_MN},
+ {RUNE_C(0x000824), RUNE_C(0x000824), GC_LM},
+ {RUNE_C(0x000825), RUNE_C(0x000827), GC_MN},
+ {RUNE_C(0x000828), RUNE_C(0x000828), GC_LM},
+ {RUNE_C(0x000829), RUNE_C(0x00082D), GC_MN},
+ {RUNE_C(0x000830), RUNE_C(0x00083E), GC_PO},
+ {RUNE_C(0x000840), RUNE_C(0x000858), GC_LO},
+ {RUNE_C(0x000859), RUNE_C(0x00085B), GC_MN},
+ {RUNE_C(0x00085E), RUNE_C(0x00085E), GC_PO},
+ {RUNE_C(0x000860), RUNE_C(0x00086A), GC_LO},
+ {RUNE_C(0x000870), RUNE_C(0x000887), GC_LO},
+ {RUNE_C(0x000888), RUNE_C(0x000888), GC_SK},
+ {RUNE_C(0x000889), RUNE_C(0x00088E), GC_LO},
+ {RUNE_C(0x000890), RUNE_C(0x000891), GC_CF},
+ {RUNE_C(0x000898), RUNE_C(0x00089F), GC_MN},
+ {RUNE_C(0x0008A0), RUNE_C(0x0008C8), GC_LO},
+ {RUNE_C(0x0008C9), RUNE_C(0x0008C9), GC_LM},
+ {RUNE_C(0x0008CA), RUNE_C(0x0008E1), GC_MN},
+ {RUNE_C(0x0008E2), RUNE_C(0x0008E2), GC_CF},
+ {RUNE_C(0x0008E3), RUNE_C(0x000902), GC_MN},
+ {RUNE_C(0x000903), RUNE_C(0x000903), GC_MC},
+ {RUNE_C(0x000904), RUNE_C(0x000939), GC_LO},
+ {RUNE_C(0x00093A), RUNE_C(0x00093A), GC_MN},
+ {RUNE_C(0x00093B), RUNE_C(0x00093B), GC_MC},
+ {RUNE_C(0x00093C), RUNE_C(0x00093C), GC_MN},
+ {RUNE_C(0x00093D), RUNE_C(0x00093D), GC_LO},
+ {RUNE_C(0x00093E), RUNE_C(0x000940), GC_MC},
+ {RUNE_C(0x000941), RUNE_C(0x000948), GC_MN},
+ {RUNE_C(0x000949), RUNE_C(0x00094C), GC_MC},
+ {RUNE_C(0x00094D), RUNE_C(0x00094D), GC_MN},
+ {RUNE_C(0x00094E), RUNE_C(0x00094F), GC_MC},
+ {RUNE_C(0x000950), RUNE_C(0x000950), GC_LO},
+ {RUNE_C(0x000951), RUNE_C(0x000957), GC_MN},
+ {RUNE_C(0x000958), RUNE_C(0x000961), GC_LO},
+ {RUNE_C(0x000962), RUNE_C(0x000963), GC_MN},
+ {RUNE_C(0x000964), RUNE_C(0x000965), GC_PO},
+ {RUNE_C(0x000966), RUNE_C(0x00096F), GC_ND},
+ {RUNE_C(0x000970), RUNE_C(0x000970), GC_PO},
+ {RUNE_C(0x000971), RUNE_C(0x000971), GC_LM},
+ {RUNE_C(0x000972), RUNE_C(0x000980), GC_LO},
+ {RUNE_C(0x000981), RUNE_C(0x000981), GC_MN},
+ {RUNE_C(0x000982), RUNE_C(0x000983), GC_MC},
+ {RUNE_C(0x000985), RUNE_C(0x00098C), GC_LO},
+ {RUNE_C(0x00098F), RUNE_C(0x000990), GC_LO},
+ {RUNE_C(0x000993), RUNE_C(0x0009A8), GC_LO},
+ {RUNE_C(0x0009AA), RUNE_C(0x0009B0), GC_LO},
+ {RUNE_C(0x0009B2), RUNE_C(0x0009B2), GC_LO},
+ {RUNE_C(0x0009B6), RUNE_C(0x0009B9), GC_LO},
+ {RUNE_C(0x0009BC), RUNE_C(0x0009BC), GC_MN},
+ {RUNE_C(0x0009BD), RUNE_C(0x0009BD), GC_LO},
+ {RUNE_C(0x0009BE), RUNE_C(0x0009C0), GC_MC},
+ {RUNE_C(0x0009C1), RUNE_C(0x0009C4), GC_MN},
+ {RUNE_C(0x0009C7), RUNE_C(0x0009C8), GC_MC},
+ {RUNE_C(0x0009CB), RUNE_C(0x0009CC), GC_MC},
+ {RUNE_C(0x0009CD), RUNE_C(0x0009CD), GC_MN},
+ {RUNE_C(0x0009CE), RUNE_C(0x0009CE), GC_LO},
+ {RUNE_C(0x0009D7), RUNE_C(0x0009D7), GC_MC},
+ {RUNE_C(0x0009DC), RUNE_C(0x0009DD), GC_LO},
+ {RUNE_C(0x0009DF), RUNE_C(0x0009E1), GC_LO},
+ {RUNE_C(0x0009E2), RUNE_C(0x0009E3), GC_MN},
+ {RUNE_C(0x0009E6), RUNE_C(0x0009EF), GC_ND},
+ {RUNE_C(0x0009F0), RUNE_C(0x0009F1), GC_LO},
+ {RUNE_C(0x0009F2), RUNE_C(0x0009F3), GC_SC},
+ {RUNE_C(0x0009F4), RUNE_C(0x0009F9), GC_NO},
+ {RUNE_C(0x0009FA), RUNE_C(0x0009FA), GC_SO},
+ {RUNE_C(0x0009FB), RUNE_C(0x0009FB), GC_SC},
+ {RUNE_C(0x0009FC), RUNE_C(0x0009FC), GC_LO},
+ {RUNE_C(0x0009FD), RUNE_C(0x0009FD), GC_PO},
+ {RUNE_C(0x0009FE), RUNE_C(0x0009FE), GC_MN},
+ {RUNE_C(0x000A01), RUNE_C(0x000A02), GC_MN},
+ {RUNE_C(0x000A03), RUNE_C(0x000A03), GC_MC},
+ {RUNE_C(0x000A05), RUNE_C(0x000A0A), GC_LO},
+ {RUNE_C(0x000A0F), RUNE_C(0x000A10), GC_LO},
+ {RUNE_C(0x000A13), RUNE_C(0x000A28), GC_LO},
+ {RUNE_C(0x000A2A), RUNE_C(0x000A30), GC_LO},
+ {RUNE_C(0x000A32), RUNE_C(0x000A33), GC_LO},
+ {RUNE_C(0x000A35), RUNE_C(0x000A36), GC_LO},
+ {RUNE_C(0x000A38), RUNE_C(0x000A39), GC_LO},
+ {RUNE_C(0x000A3C), RUNE_C(0x000A3C), GC_MN},
+ {RUNE_C(0x000A3E), RUNE_C(0x000A40), GC_MC},
+ {RUNE_C(0x000A41), RUNE_C(0x000A42), GC_MN},
+ {RUNE_C(0x000A47), RUNE_C(0x000A48), GC_MN},
+ {RUNE_C(0x000A4B), RUNE_C(0x000A4D), GC_MN},
+ {RUNE_C(0x000A51), RUNE_C(0x000A51), GC_MN},
+ {RUNE_C(0x000A59), RUNE_C(0x000A5C), GC_LO},
+ {RUNE_C(0x000A5E), RUNE_C(0x000A5E), GC_LO},
+ {RUNE_C(0x000A66), RUNE_C(0x000A6F), GC_ND},
+ {RUNE_C(0x000A70), RUNE_C(0x000A71), GC_MN},
+ {RUNE_C(0x000A72), RUNE_C(0x000A74), GC_LO},
+ {RUNE_C(0x000A75), RUNE_C(0x000A75), GC_MN},
+ {RUNE_C(0x000A76), RUNE_C(0x000A76), GC_PO},
+ {RUNE_C(0x000A81), RUNE_C(0x000A82), GC_MN},
+ {RUNE_C(0x000A83), RUNE_C(0x000A83), GC_MC},
+ {RUNE_C(0x000A85), RUNE_C(0x000A8D), GC_LO},
+ {RUNE_C(0x000A8F), RUNE_C(0x000A91), GC_LO},
+ {RUNE_C(0x000A93), RUNE_C(0x000AA8), GC_LO},
+ {RUNE_C(0x000AAA), RUNE_C(0x000AB0), GC_LO},
+ {RUNE_C(0x000AB2), RUNE_C(0x000AB3), GC_LO},
+ {RUNE_C(0x000AB5), RUNE_C(0x000AB9), GC_LO},
+ {RUNE_C(0x000ABC), RUNE_C(0x000ABC), GC_MN},
+ {RUNE_C(0x000ABD), RUNE_C(0x000ABD), GC_LO},
+ {RUNE_C(0x000ABE), RUNE_C(0x000AC0), GC_MC},
+ {RUNE_C(0x000AC1), RUNE_C(0x000AC5), GC_MN},
+ {RUNE_C(0x000AC7), RUNE_C(0x000AC8), GC_MN},
+ {RUNE_C(0x000AC9), RUNE_C(0x000AC9), GC_MC},
+ {RUNE_C(0x000ACB), RUNE_C(0x000ACC), GC_MC},
+ {RUNE_C(0x000ACD), RUNE_C(0x000ACD), GC_MN},
+ {RUNE_C(0x000AD0), RUNE_C(0x000AD0), GC_LO},
+ {RUNE_C(0x000AE0), RUNE_C(0x000AE1), GC_LO},
+ {RUNE_C(0x000AE2), RUNE_C(0x000AE3), GC_MN},
+ {RUNE_C(0x000AE6), RUNE_C(0x000AEF), GC_ND},
+ {RUNE_C(0x000AF0), RUNE_C(0x000AF0), GC_PO},
+ {RUNE_C(0x000AF1), RUNE_C(0x000AF1), GC_SC},
+ {RUNE_C(0x000AF9), RUNE_C(0x000AF9), GC_LO},
+ {RUNE_C(0x000AFA), RUNE_C(0x000AFF), GC_MN},
+ {RUNE_C(0x000B01), RUNE_C(0x000B01), GC_MN},
+ {RUNE_C(0x000B02), RUNE_C(0x000B03), GC_MC},
+ {RUNE_C(0x000B05), RUNE_C(0x000B0C), GC_LO},
+ {RUNE_C(0x000B0F), RUNE_C(0x000B10), GC_LO},
+ {RUNE_C(0x000B13), RUNE_C(0x000B28), GC_LO},
+ {RUNE_C(0x000B2A), RUNE_C(0x000B30), GC_LO},
+ {RUNE_C(0x000B32), RUNE_C(0x000B33), GC_LO},
+ {RUNE_C(0x000B35), RUNE_C(0x000B39), GC_LO},
+ {RUNE_C(0x000B3C), RUNE_C(0x000B3C), GC_MN},
+ {RUNE_C(0x000B3D), RUNE_C(0x000B3D), GC_LO},
+ {RUNE_C(0x000B3E), RUNE_C(0x000B3E), GC_MC},
+ {RUNE_C(0x000B3F), RUNE_C(0x000B3F), GC_MN},
+ {RUNE_C(0x000B40), RUNE_C(0x000B40), GC_MC},
+ {RUNE_C(0x000B41), RUNE_C(0x000B44), GC_MN},
+ {RUNE_C(0x000B47), RUNE_C(0x000B48), GC_MC},
+ {RUNE_C(0x000B4B), RUNE_C(0x000B4C), GC_MC},
+ {RUNE_C(0x000B4D), RUNE_C(0x000B4D), GC_MN},
+ {RUNE_C(0x000B55), RUNE_C(0x000B56), GC_MN},
+ {RUNE_C(0x000B57), RUNE_C(0x000B57), GC_MC},
+ {RUNE_C(0x000B5C), RUNE_C(0x000B5D), GC_LO},
+ {RUNE_C(0x000B5F), RUNE_C(0x000B61), GC_LO},
+ {RUNE_C(0x000B62), RUNE_C(0x000B63), GC_MN},
+ {RUNE_C(0x000B66), RUNE_C(0x000B6F), GC_ND},
+ {RUNE_C(0x000B70), RUNE_C(0x000B70), GC_SO},
+ {RUNE_C(0x000B71), RUNE_C(0x000B71), GC_LO},
+ {RUNE_C(0x000B72), RUNE_C(0x000B77), GC_NO},
+ {RUNE_C(0x000B82), RUNE_C(0x000B82), GC_MN},
+ {RUNE_C(0x000B83), RUNE_C(0x000B83), GC_LO},
+ {RUNE_C(0x000B85), RUNE_C(0x000B8A), GC_LO},
+ {RUNE_C(0x000B8E), RUNE_C(0x000B90), GC_LO},
+ {RUNE_C(0x000B92), RUNE_C(0x000B95), GC_LO},
+ {RUNE_C(0x000B99), RUNE_C(0x000B9A), GC_LO},
+ {RUNE_C(0x000B9C), RUNE_C(0x000B9C), GC_LO},
+ {RUNE_C(0x000B9E), RUNE_C(0x000B9F), GC_LO},
+ {RUNE_C(0x000BA3), RUNE_C(0x000BA4), GC_LO},
+ {RUNE_C(0x000BA8), RUNE_C(0x000BAA), GC_LO},
+ {RUNE_C(0x000BAE), RUNE_C(0x000BB9), GC_LO},
+ {RUNE_C(0x000BBE), RUNE_C(0x000BBF), GC_MC},
+ {RUNE_C(0x000BC0), RUNE_C(0x000BC0), GC_MN},
+ {RUNE_C(0x000BC1), RUNE_C(0x000BC2), GC_MC},
+ {RUNE_C(0x000BC6), RUNE_C(0x000BC8), GC_MC},
+ {RUNE_C(0x000BCA), RUNE_C(0x000BCC), GC_MC},
+ {RUNE_C(0x000BCD), RUNE_C(0x000BCD), GC_MN},
+ {RUNE_C(0x000BD0), RUNE_C(0x000BD0), GC_LO},
+ {RUNE_C(0x000BD7), RUNE_C(0x000BD7), GC_MC},
+ {RUNE_C(0x000BE6), RUNE_C(0x000BEF), GC_ND},
+ {RUNE_C(0x000BF0), RUNE_C(0x000BF2), GC_NO},
+ {RUNE_C(0x000BF3), RUNE_C(0x000BF8), GC_SO},
+ {RUNE_C(0x000BF9), RUNE_C(0x000BF9), GC_SC},
+ {RUNE_C(0x000BFA), RUNE_C(0x000BFA), GC_SO},
+ {RUNE_C(0x000C00), RUNE_C(0x000C00), GC_MN},
+ {RUNE_C(0x000C01), RUNE_C(0x000C03), GC_MC},
+ {RUNE_C(0x000C04), RUNE_C(0x000C04), GC_MN},
+ {RUNE_C(0x000C05), RUNE_C(0x000C0C), GC_LO},
+ {RUNE_C(0x000C0E), RUNE_C(0x000C10), GC_LO},
+ {RUNE_C(0x000C12), RUNE_C(0x000C28), GC_LO},
+ {RUNE_C(0x000C2A), RUNE_C(0x000C39), GC_LO},
+ {RUNE_C(0x000C3C), RUNE_C(0x000C3C), GC_MN},
+ {RUNE_C(0x000C3D), RUNE_C(0x000C3D), GC_LO},
+ {RUNE_C(0x000C3E), RUNE_C(0x000C40), GC_MN},
+ {RUNE_C(0x000C41), RUNE_C(0x000C44), GC_MC},
+ {RUNE_C(0x000C46), RUNE_C(0x000C48), GC_MN},
+ {RUNE_C(0x000C4A), RUNE_C(0x000C4D), GC_MN},
+ {RUNE_C(0x000C55), RUNE_C(0x000C56), GC_MN},
+ {RUNE_C(0x000C58), RUNE_C(0x000C5A), GC_LO},
+ {RUNE_C(0x000C5D), RUNE_C(0x000C5D), GC_LO},
+ {RUNE_C(0x000C60), RUNE_C(0x000C61), GC_LO},
+ {RUNE_C(0x000C62), RUNE_C(0x000C63), GC_MN},
+ {RUNE_C(0x000C66), RUNE_C(0x000C6F), GC_ND},
+ {RUNE_C(0x000C77), RUNE_C(0x000C77), GC_PO},
+ {RUNE_C(0x000C78), RUNE_C(0x000C7E), GC_NO},
+ {RUNE_C(0x000C7F), RUNE_C(0x000C7F), GC_SO},
+ {RUNE_C(0x000C80), RUNE_C(0x000C80), GC_LO},
+ {RUNE_C(0x000C81), RUNE_C(0x000C81), GC_MN},
+ {RUNE_C(0x000C82), RUNE_C(0x000C83), GC_MC},
+ {RUNE_C(0x000C84), RUNE_C(0x000C84), GC_PO},
+ {RUNE_C(0x000C85), RUNE_C(0x000C8C), GC_LO},
+ {RUNE_C(0x000C8E), RUNE_C(0x000C90), GC_LO},
+ {RUNE_C(0x000C92), RUNE_C(0x000CA8), GC_LO},
+ {RUNE_C(0x000CAA), RUNE_C(0x000CB3), GC_LO},
+ {RUNE_C(0x000CB5), RUNE_C(0x000CB9), GC_LO},
+ {RUNE_C(0x000CBC), RUNE_C(0x000CBC), GC_MN},
+ {RUNE_C(0x000CBD), RUNE_C(0x000CBD), GC_LO},
+ {RUNE_C(0x000CBE), RUNE_C(0x000CBE), GC_MC},
+ {RUNE_C(0x000CBF), RUNE_C(0x000CBF), GC_MN},
+ {RUNE_C(0x000CC0), RUNE_C(0x000CC4), GC_MC},
+ {RUNE_C(0x000CC6), RUNE_C(0x000CC6), GC_MN},
+ {RUNE_C(0x000CC7), RUNE_C(0x000CC8), GC_MC},
+ {RUNE_C(0x000CCA), RUNE_C(0x000CCB), GC_MC},
+ {RUNE_C(0x000CCC), RUNE_C(0x000CCD), GC_MN},
+ {RUNE_C(0x000CD5), RUNE_C(0x000CD6), GC_MC},
+ {RUNE_C(0x000CDD), RUNE_C(0x000CDE), GC_LO},
+ {RUNE_C(0x000CE0), RUNE_C(0x000CE1), GC_LO},
+ {RUNE_C(0x000CE2), RUNE_C(0x000CE3), GC_MN},
+ {RUNE_C(0x000CE6), RUNE_C(0x000CEF), GC_ND},
+ {RUNE_C(0x000CF1), RUNE_C(0x000CF2), GC_LO},
+ {RUNE_C(0x000CF3), RUNE_C(0x000CF3), GC_MC},
+ {RUNE_C(0x000D00), RUNE_C(0x000D01), GC_MN},
+ {RUNE_C(0x000D02), RUNE_C(0x000D03), GC_MC},
+ {RUNE_C(0x000D04), RUNE_C(0x000D0C), GC_LO},
+ {RUNE_C(0x000D0E), RUNE_C(0x000D10), GC_LO},
+ {RUNE_C(0x000D12), RUNE_C(0x000D3A), GC_LO},
+ {RUNE_C(0x000D3B), RUNE_C(0x000D3C), GC_MN},
+ {RUNE_C(0x000D3D), RUNE_C(0x000D3D), GC_LO},
+ {RUNE_C(0x000D3E), RUNE_C(0x000D40), GC_MC},
+ {RUNE_C(0x000D41), RUNE_C(0x000D44), GC_MN},
+ {RUNE_C(0x000D46), RUNE_C(0x000D48), GC_MC},
+ {RUNE_C(0x000D4A), RUNE_C(0x000D4C), GC_MC},
+ {RUNE_C(0x000D4D), RUNE_C(0x000D4D), GC_MN},
+ {RUNE_C(0x000D4E), RUNE_C(0x000D4E), GC_LO},
+ {RUNE_C(0x000D4F), RUNE_C(0x000D4F), GC_SO},
+ {RUNE_C(0x000D54), RUNE_C(0x000D56), GC_LO},
+ {RUNE_C(0x000D57), RUNE_C(0x000D57), GC_MC},
+ {RUNE_C(0x000D58), RUNE_C(0x000D5E), GC_NO},
+ {RUNE_C(0x000D5F), RUNE_C(0x000D61), GC_LO},
+ {RUNE_C(0x000D62), RUNE_C(0x000D63), GC_MN},
+ {RUNE_C(0x000D66), RUNE_C(0x000D6F), GC_ND},
+ {RUNE_C(0x000D70), RUNE_C(0x000D78), GC_NO},
+ {RUNE_C(0x000D79), RUNE_C(0x000D79), GC_SO},
+ {RUNE_C(0x000D7A), RUNE_C(0x000D7F), GC_LO},
+ {RUNE_C(0x000D81), RUNE_C(0x000D81), GC_MN},
+ {RUNE_C(0x000D82), RUNE_C(0x000D83), GC_MC},
+ {RUNE_C(0x000D85), RUNE_C(0x000D96), GC_LO},
+ {RUNE_C(0x000D9A), RUNE_C(0x000DB1), GC_LO},
+ {RUNE_C(0x000DB3), RUNE_C(0x000DBB), GC_LO},
+ {RUNE_C(0x000DBD), RUNE_C(0x000DBD), GC_LO},
+ {RUNE_C(0x000DC0), RUNE_C(0x000DC6), GC_LO},
+ {RUNE_C(0x000DCA), RUNE_C(0x000DCA), GC_MN},
+ {RUNE_C(0x000DCF), RUNE_C(0x000DD1), GC_MC},
+ {RUNE_C(0x000DD2), RUNE_C(0x000DD4), GC_MN},
+ {RUNE_C(0x000DD6), RUNE_C(0x000DD6), GC_MN},
+ {RUNE_C(0x000DD8), RUNE_C(0x000DDF), GC_MC},
+ {RUNE_C(0x000DE6), RUNE_C(0x000DEF), GC_ND},
+ {RUNE_C(0x000DF2), RUNE_C(0x000DF3), GC_MC},
+ {RUNE_C(0x000DF4), RUNE_C(0x000DF4), GC_PO},
+ {RUNE_C(0x000E01), RUNE_C(0x000E30), GC_LO},
+ {RUNE_C(0x000E31), RUNE_C(0x000E31), GC_MN},
+ {RUNE_C(0x000E32), RUNE_C(0x000E33), GC_LO},
+ {RUNE_C(0x000E34), RUNE_C(0x000E3A), GC_MN},
+ {RUNE_C(0x000E3F), RUNE_C(0x000E3F), GC_SC},
+ {RUNE_C(0x000E40), RUNE_C(0x000E45), GC_LO},
+ {RUNE_C(0x000E46), RUNE_C(0x000E46), GC_LM},
+ {RUNE_C(0x000E47), RUNE_C(0x000E4E), GC_MN},
+ {RUNE_C(0x000E4F), RUNE_C(0x000E4F), GC_PO},
+ {RUNE_C(0x000E50), RUNE_C(0x000E59), GC_ND},
+ {RUNE_C(0x000E5A), RUNE_C(0x000E5B), GC_PO},
+ {RUNE_C(0x000E81), RUNE_C(0x000E82), GC_LO},
+ {RUNE_C(0x000E84), RUNE_C(0x000E84), GC_LO},
+ {RUNE_C(0x000E86), RUNE_C(0x000E8A), GC_LO},
+ {RUNE_C(0x000E8C), RUNE_C(0x000EA3), GC_LO},
+ {RUNE_C(0x000EA5), RUNE_C(0x000EA5), GC_LO},
+ {RUNE_C(0x000EA7), RUNE_C(0x000EB0), GC_LO},
+ {RUNE_C(0x000EB1), RUNE_C(0x000EB1), GC_MN},
+ {RUNE_C(0x000EB2), RUNE_C(0x000EB3), GC_LO},
+ {RUNE_C(0x000EB4), RUNE_C(0x000EBC), GC_MN},
+ {RUNE_C(0x000EBD), RUNE_C(0x000EBD), GC_LO},
+ {RUNE_C(0x000EC0), RUNE_C(0x000EC4), GC_LO},
+ {RUNE_C(0x000EC6), RUNE_C(0x000EC6), GC_LM},
+ {RUNE_C(0x000EC8), RUNE_C(0x000ECE), GC_MN},
+ {RUNE_C(0x000ED0), RUNE_C(0x000ED9), GC_ND},
+ {RUNE_C(0x000EDC), RUNE_C(0x000EDF), GC_LO},
+ {RUNE_C(0x000F00), RUNE_C(0x000F00), GC_LO},
+ {RUNE_C(0x000F01), RUNE_C(0x000F03), GC_SO},
+ {RUNE_C(0x000F04), RUNE_C(0x000F12), GC_PO},
+ {RUNE_C(0x000F13), RUNE_C(0x000F13), GC_SO},
+ {RUNE_C(0x000F14), RUNE_C(0x000F14), GC_PO},
+ {RUNE_C(0x000F15), RUNE_C(0x000F17), GC_SO},
+ {RUNE_C(0x000F18), RUNE_C(0x000F19), GC_MN},
+ {RUNE_C(0x000F1A), RUNE_C(0x000F1F), GC_SO},
+ {RUNE_C(0x000F20), RUNE_C(0x000F29), GC_ND},
+ {RUNE_C(0x000F2A), RUNE_C(0x000F33), GC_NO},
+ {RUNE_C(0x000F34), RUNE_C(0x000F34), GC_SO},
+ {RUNE_C(0x000F35), RUNE_C(0x000F35), GC_MN},
+ {RUNE_C(0x000F36), RUNE_C(0x000F36), GC_SO},
+ {RUNE_C(0x000F37), RUNE_C(0x000F37), GC_MN},
+ {RUNE_C(0x000F38), RUNE_C(0x000F38), GC_SO},
+ {RUNE_C(0x000F39), RUNE_C(0x000F39), GC_MN},
+ {RUNE_C(0x000F3A), RUNE_C(0x000F3A), GC_PS},
+ {RUNE_C(0x000F3B), RUNE_C(0x000F3B), GC_PE},
+ {RUNE_C(0x000F3C), RUNE_C(0x000F3C), GC_PS},
+ {RUNE_C(0x000F3D), RUNE_C(0x000F3D), GC_PE},
+ {RUNE_C(0x000F3E), RUNE_C(0x000F3F), GC_MC},
+ {RUNE_C(0x000F40), RUNE_C(0x000F47), GC_LO},
+ {RUNE_C(0x000F49), RUNE_C(0x000F6C), GC_LO},
+ {RUNE_C(0x000F71), RUNE_C(0x000F7E), GC_MN},
+ {RUNE_C(0x000F7F), RUNE_C(0x000F7F), GC_MC},
+ {RUNE_C(0x000F80), RUNE_C(0x000F84), GC_MN},
+ {RUNE_C(0x000F85), RUNE_C(0x000F85), GC_PO},
+ {RUNE_C(0x000F86), RUNE_C(0x000F87), GC_MN},
+ {RUNE_C(0x000F88), RUNE_C(0x000F8C), GC_LO},
+ {RUNE_C(0x000F8D), RUNE_C(0x000F97), GC_MN},
+ {RUNE_C(0x000F99), RUNE_C(0x000FBC), GC_MN},
+ {RUNE_C(0x000FBE), RUNE_C(0x000FC5), GC_SO},
+ {RUNE_C(0x000FC6), RUNE_C(0x000FC6), GC_MN},
+ {RUNE_C(0x000FC7), RUNE_C(0x000FCC), GC_SO},
+ {RUNE_C(0x000FCE), RUNE_C(0x000FCF), GC_SO},
+ {RUNE_C(0x000FD0), RUNE_C(0x000FD4), GC_PO},
+ {RUNE_C(0x000FD5), RUNE_C(0x000FD8), GC_SO},
+ {RUNE_C(0x000FD9), RUNE_C(0x000FDA), GC_PO},
+ {RUNE_C(0x001000), RUNE_C(0x00102A), GC_LO},
+ {RUNE_C(0x00102B), RUNE_C(0x00102C), GC_MC},
+ {RUNE_C(0x00102D), RUNE_C(0x001030), GC_MN},
+ {RUNE_C(0x001031), RUNE_C(0x001031), GC_MC},
+ {RUNE_C(0x001032), RUNE_C(0x001037), GC_MN},
+ {RUNE_C(0x001038), RUNE_C(0x001038), GC_MC},
+ {RUNE_C(0x001039), RUNE_C(0x00103A), GC_MN},
+ {RUNE_C(0x00103B), RUNE_C(0x00103C), GC_MC},
+ {RUNE_C(0x00103D), RUNE_C(0x00103E), GC_MN},
+ {RUNE_C(0x00103F), RUNE_C(0x00103F), GC_LO},
+ {RUNE_C(0x001040), RUNE_C(0x001049), GC_ND},
+ {RUNE_C(0x00104A), RUNE_C(0x00104F), GC_PO},
+ {RUNE_C(0x001050), RUNE_C(0x001055), GC_LO},
+ {RUNE_C(0x001056), RUNE_C(0x001057), GC_MC},
+ {RUNE_C(0x001058), RUNE_C(0x001059), GC_MN},
+ {RUNE_C(0x00105A), RUNE_C(0x00105D), GC_LO},
+ {RUNE_C(0x00105E), RUNE_C(0x001060), GC_MN},
+ {RUNE_C(0x001061), RUNE_C(0x001061), GC_LO},
+ {RUNE_C(0x001062), RUNE_C(0x001064), GC_MC},
+ {RUNE_C(0x001065), RUNE_C(0x001066), GC_LO},
+ {RUNE_C(0x001067), RUNE_C(0x00106D), GC_MC},
+ {RUNE_C(0x00106E), RUNE_C(0x001070), GC_LO},
+ {RUNE_C(0x001071), RUNE_C(0x001074), GC_MN},
+ {RUNE_C(0x001075), RUNE_C(0x001081), GC_LO},
+ {RUNE_C(0x001082), RUNE_C(0x001082), GC_MN},
+ {RUNE_C(0x001083), RUNE_C(0x001084), GC_MC},
+ {RUNE_C(0x001085), RUNE_C(0x001086), GC_MN},
+ {RUNE_C(0x001087), RUNE_C(0x00108C), GC_MC},
+ {RUNE_C(0x00108D), RUNE_C(0x00108D), GC_MN},
+ {RUNE_C(0x00108E), RUNE_C(0x00108E), GC_LO},
+ {RUNE_C(0x00108F), RUNE_C(0x00108F), GC_MC},
+ {RUNE_C(0x001090), RUNE_C(0x001099), GC_ND},
+ {RUNE_C(0x00109A), RUNE_C(0x00109C), GC_MC},
+ {RUNE_C(0x00109D), RUNE_C(0x00109D), GC_MN},
+ {RUNE_C(0x00109E), RUNE_C(0x00109F), GC_SO},
+ {RUNE_C(0x0010A0), RUNE_C(0x0010C5), GC_LU},
+ {RUNE_C(0x0010C7), RUNE_C(0x0010C7), GC_LU},
+ {RUNE_C(0x0010CD), RUNE_C(0x0010CD), GC_LU},
+ {RUNE_C(0x0010D0), RUNE_C(0x0010FA), GC_LL},
+ {RUNE_C(0x0010FB), RUNE_C(0x0010FB), GC_PO},
+ {RUNE_C(0x0010FC), RUNE_C(0x0010FC), GC_LM},
+ {RUNE_C(0x0010FD), RUNE_C(0x0010FF), GC_LL},
+ {RUNE_C(0x001100), RUNE_C(0x001248), GC_LO},
+ {RUNE_C(0x00124A), RUNE_C(0x00124D), GC_LO},
+ {RUNE_C(0x001250), RUNE_C(0x001256), GC_LO},
+ {RUNE_C(0x001258), RUNE_C(0x001258), GC_LO},
+ {RUNE_C(0x00125A), RUNE_C(0x00125D), GC_LO},
+ {RUNE_C(0x001260), RUNE_C(0x001288), GC_LO},
+ {RUNE_C(0x00128A), RUNE_C(0x00128D), GC_LO},
+ {RUNE_C(0x001290), RUNE_C(0x0012B0), GC_LO},
+ {RUNE_C(0x0012B2), RUNE_C(0x0012B5), GC_LO},
+ {RUNE_C(0x0012B8), RUNE_C(0x0012BE), GC_LO},
+ {RUNE_C(0x0012C0), RUNE_C(0x0012C0), GC_LO},
+ {RUNE_C(0x0012C2), RUNE_C(0x0012C5), GC_LO},
+ {RUNE_C(0x0012C8), RUNE_C(0x0012D6), GC_LO},
+ {RUNE_C(0x0012D8), RUNE_C(0x001310), GC_LO},
+ {RUNE_C(0x001312), RUNE_C(0x001315), GC_LO},
+ {RUNE_C(0x001318), RUNE_C(0x00135A), GC_LO},
+ {RUNE_C(0x00135D), RUNE_C(0x00135F), GC_MN},
+ {RUNE_C(0x001360), RUNE_C(0x001368), GC_PO},
+ {RUNE_C(0x001369), RUNE_C(0x00137C), GC_NO},
+ {RUNE_C(0x001380), RUNE_C(0x00138F), GC_LO},
+ {RUNE_C(0x001390), RUNE_C(0x001399), GC_SO},
+ {RUNE_C(0x0013A0), RUNE_C(0x0013F5), GC_LU},
+ {RUNE_C(0x0013F8), RUNE_C(0x0013FD), GC_LL},
+ {RUNE_C(0x001400), RUNE_C(0x001400), GC_PD},
+ {RUNE_C(0x001401), RUNE_C(0x00166C), GC_LO},
+ {RUNE_C(0x00166D), RUNE_C(0x00166D), GC_SO},
+ {RUNE_C(0x00166E), RUNE_C(0x00166E), GC_PO},
+ {RUNE_C(0x00166F), RUNE_C(0x00167F), GC_LO},
+ {RUNE_C(0x001680), RUNE_C(0x001680), GC_ZS},
+ {RUNE_C(0x001681), RUNE_C(0x00169A), GC_LO},
+ {RUNE_C(0x00169B), RUNE_C(0x00169B), GC_PS},
+ {RUNE_C(0x00169C), RUNE_C(0x00169C), GC_PE},
+ {RUNE_C(0x0016A0), RUNE_C(0x0016EA), GC_LO},
+ {RUNE_C(0x0016EB), RUNE_C(0x0016ED), GC_PO},
+ {RUNE_C(0x0016EE), RUNE_C(0x0016F0), GC_NL},
+ {RUNE_C(0x0016F1), RUNE_C(0x0016F8), GC_LO},
+ {RUNE_C(0x001700), RUNE_C(0x001711), GC_LO},
+ {RUNE_C(0x001712), RUNE_C(0x001714), GC_MN},
+ {RUNE_C(0x001715), RUNE_C(0x001715), GC_MC},
+ {RUNE_C(0x00171F), RUNE_C(0x001731), GC_LO},
+ {RUNE_C(0x001732), RUNE_C(0x001733), GC_MN},
+ {RUNE_C(0x001734), RUNE_C(0x001734), GC_MC},
+ {RUNE_C(0x001735), RUNE_C(0x001736), GC_PO},
+ {RUNE_C(0x001740), RUNE_C(0x001751), GC_LO},
+ {RUNE_C(0x001752), RUNE_C(0x001753), GC_MN},
+ {RUNE_C(0x001760), RUNE_C(0x00176C), GC_LO},
+ {RUNE_C(0x00176E), RUNE_C(0x001770), GC_LO},
+ {RUNE_C(0x001772), RUNE_C(0x001773), GC_MN},
+ {RUNE_C(0x001780), RUNE_C(0x0017B3), GC_LO},
+ {RUNE_C(0x0017B4), RUNE_C(0x0017B5), GC_MN},
+ {RUNE_C(0x0017B6), RUNE_C(0x0017B6), GC_MC},
+ {RUNE_C(0x0017B7), RUNE_C(0x0017BD), GC_MN},
+ {RUNE_C(0x0017BE), RUNE_C(0x0017C5), GC_MC},
+ {RUNE_C(0x0017C6), RUNE_C(0x0017C6), GC_MN},
+ {RUNE_C(0x0017C7), RUNE_C(0x0017C8), GC_MC},
+ {RUNE_C(0x0017C9), RUNE_C(0x0017D3), GC_MN},
+ {RUNE_C(0x0017D4), RUNE_C(0x0017D6), GC_PO},
+ {RUNE_C(0x0017D7), RUNE_C(0x0017D7), GC_LM},
+ {RUNE_C(0x0017D8), RUNE_C(0x0017DA), GC_PO},
+ {RUNE_C(0x0017DB), RUNE_C(0x0017DB), GC_SC},
+ {RUNE_C(0x0017DC), RUNE_C(0x0017DC), GC_LO},
+ {RUNE_C(0x0017DD), RUNE_C(0x0017DD), GC_MN},
+ {RUNE_C(0x0017E0), RUNE_C(0x0017E9), GC_ND},
+ {RUNE_C(0x0017F0), RUNE_C(0x0017F9), GC_NO},
+ {RUNE_C(0x001800), RUNE_C(0x001805), GC_PO},
+ {RUNE_C(0x001806), RUNE_C(0x001806), GC_PD},
+ {RUNE_C(0x001807), RUNE_C(0x00180A), GC_PO},
+ {RUNE_C(0x00180B), RUNE_C(0x00180D), GC_MN},
+ {RUNE_C(0x00180E), RUNE_C(0x00180E), GC_CF},
+ {RUNE_C(0x00180F), RUNE_C(0x00180F), GC_MN},
+ {RUNE_C(0x001810), RUNE_C(0x001819), GC_ND},
+ {RUNE_C(0x001820), RUNE_C(0x001842), GC_LO},
+ {RUNE_C(0x001843), RUNE_C(0x001843), GC_LM},
+ {RUNE_C(0x001844), RUNE_C(0x001878), GC_LO},
+ {RUNE_C(0x001880), RUNE_C(0x001884), GC_LO},
+ {RUNE_C(0x001885), RUNE_C(0x001886), GC_MN},
+ {RUNE_C(0x001887), RUNE_C(0x0018A8), GC_LO},
+ {RUNE_C(0x0018A9), RUNE_C(0x0018A9), GC_MN},
+ {RUNE_C(0x0018AA), RUNE_C(0x0018AA), GC_LO},
+ {RUNE_C(0x0018B0), RUNE_C(0x0018F5), GC_LO},
+ {RUNE_C(0x001900), RUNE_C(0x00191E), GC_LO},
+ {RUNE_C(0x001920), RUNE_C(0x001922), GC_MN},
+ {RUNE_C(0x001923), RUNE_C(0x001926), GC_MC},
+ {RUNE_C(0x001927), RUNE_C(0x001928), GC_MN},
+ {RUNE_C(0x001929), RUNE_C(0x00192B), GC_MC},
+ {RUNE_C(0x001930), RUNE_C(0x001931), GC_MC},
+ {RUNE_C(0x001932), RUNE_C(0x001932), GC_MN},
+ {RUNE_C(0x001933), RUNE_C(0x001938), GC_MC},
+ {RUNE_C(0x001939), RUNE_C(0x00193B), GC_MN},
+ {RUNE_C(0x001940), RUNE_C(0x001940), GC_SO},
+ {RUNE_C(0x001944), RUNE_C(0x001945), GC_PO},
+ {RUNE_C(0x001946), RUNE_C(0x00194F), GC_ND},
+ {RUNE_C(0x001950), RUNE_C(0x00196D), GC_LO},
+ {RUNE_C(0x001970), RUNE_C(0x001974), GC_LO},
+ {RUNE_C(0x001980), RUNE_C(0x0019AB), GC_LO},
+ {RUNE_C(0x0019B0), RUNE_C(0x0019C9), GC_LO},
+ {RUNE_C(0x0019D0), RUNE_C(0x0019D9), GC_ND},
+ {RUNE_C(0x0019DA), RUNE_C(0x0019DA), GC_NO},
+ {RUNE_C(0x0019DE), RUNE_C(0x0019FF), GC_SO},
+ {RUNE_C(0x001A00), RUNE_C(0x001A16), GC_LO},
+ {RUNE_C(0x001A17), RUNE_C(0x001A18), GC_MN},
+ {RUNE_C(0x001A19), RUNE_C(0x001A1A), GC_MC},
+ {RUNE_C(0x001A1B), RUNE_C(0x001A1B), GC_MN},
+ {RUNE_C(0x001A1E), RUNE_C(0x001A1F), GC_PO},
+ {RUNE_C(0x001A20), RUNE_C(0x001A54), GC_LO},
+ {RUNE_C(0x001A55), RUNE_C(0x001A55), GC_MC},
+ {RUNE_C(0x001A56), RUNE_C(0x001A56), GC_MN},
+ {RUNE_C(0x001A57), RUNE_C(0x001A57), GC_MC},
+ {RUNE_C(0x001A58), RUNE_C(0x001A5E), GC_MN},
+ {RUNE_C(0x001A60), RUNE_C(0x001A60), GC_MN},
+ {RUNE_C(0x001A61), RUNE_C(0x001A61), GC_MC},
+ {RUNE_C(0x001A62), RUNE_C(0x001A62), GC_MN},
+ {RUNE_C(0x001A63), RUNE_C(0x001A64), GC_MC},
+ {RUNE_C(0x001A65), RUNE_C(0x001A6C), GC_MN},
+ {RUNE_C(0x001A6D), RUNE_C(0x001A72), GC_MC},
+ {RUNE_C(0x001A73), RUNE_C(0x001A7C), GC_MN},
+ {RUNE_C(0x001A7F), RUNE_C(0x001A7F), GC_MN},
+ {RUNE_C(0x001A80), RUNE_C(0x001A89), GC_ND},
+ {RUNE_C(0x001A90), RUNE_C(0x001A99), GC_ND},
+ {RUNE_C(0x001AA0), RUNE_C(0x001AA6), GC_PO},
+ {RUNE_C(0x001AA7), RUNE_C(0x001AA7), GC_LM},
+ {RUNE_C(0x001AA8), RUNE_C(0x001AAD), GC_PO},
+ {RUNE_C(0x001AB0), RUNE_C(0x001ABD), GC_MN},
+ {RUNE_C(0x001ABE), RUNE_C(0x001ABE), GC_ME},
+ {RUNE_C(0x001ABF), RUNE_C(0x001ACE), GC_MN},
+ {RUNE_C(0x001B00), RUNE_C(0x001B03), GC_MN},
+ {RUNE_C(0x001B04), RUNE_C(0x001B04), GC_MC},
+ {RUNE_C(0x001B05), RUNE_C(0x001B33), GC_LO},
+ {RUNE_C(0x001B34), RUNE_C(0x001B34), GC_MN},
+ {RUNE_C(0x001B35), RUNE_C(0x001B35), GC_MC},
+ {RUNE_C(0x001B36), RUNE_C(0x001B3A), GC_MN},
+ {RUNE_C(0x001B3B), RUNE_C(0x001B3B), GC_MC},
+ {RUNE_C(0x001B3C), RUNE_C(0x001B3C), GC_MN},
+ {RUNE_C(0x001B3D), RUNE_C(0x001B41), GC_MC},
+ {RUNE_C(0x001B42), RUNE_C(0x001B42), GC_MN},
+ {RUNE_C(0x001B43), RUNE_C(0x001B44), GC_MC},
+ {RUNE_C(0x001B45), RUNE_C(0x001B4C), GC_LO},
+ {RUNE_C(0x001B50), RUNE_C(0x001B59), GC_ND},
+ {RUNE_C(0x001B5A), RUNE_C(0x001B60), GC_PO},
+ {RUNE_C(0x001B61), RUNE_C(0x001B6A), GC_SO},
+ {RUNE_C(0x001B6B), RUNE_C(0x001B73), GC_MN},
+ {RUNE_C(0x001B74), RUNE_C(0x001B7C), GC_SO},
+ {RUNE_C(0x001B7D), RUNE_C(0x001B7E), GC_PO},
+ {RUNE_C(0x001B80), RUNE_C(0x001B81), GC_MN},
+ {RUNE_C(0x001B82), RUNE_C(0x001B82), GC_MC},
+ {RUNE_C(0x001B83), RUNE_C(0x001BA0), GC_LO},
+ {RUNE_C(0x001BA1), RUNE_C(0x001BA1), GC_MC},
+ {RUNE_C(0x001BA2), RUNE_C(0x001BA5), GC_MN},
+ {RUNE_C(0x001BA6), RUNE_C(0x001BA7), GC_MC},
+ {RUNE_C(0x001BA8), RUNE_C(0x001BA9), GC_MN},
+ {RUNE_C(0x001BAA), RUNE_C(0x001BAA), GC_MC},
+ {RUNE_C(0x001BAB), RUNE_C(0x001BAD), GC_MN},
+ {RUNE_C(0x001BAE), RUNE_C(0x001BAF), GC_LO},
+ {RUNE_C(0x001BB0), RUNE_C(0x001BB9), GC_ND},
+ {RUNE_C(0x001BBA), RUNE_C(0x001BE5), GC_LO},
+ {RUNE_C(0x001BE6), RUNE_C(0x001BE6), GC_MN},
+ {RUNE_C(0x001BE7), RUNE_C(0x001BE7), GC_MC},
+ {RUNE_C(0x001BE8), RUNE_C(0x001BE9), GC_MN},
+ {RUNE_C(0x001BEA), RUNE_C(0x001BEC), GC_MC},
+ {RUNE_C(0x001BED), RUNE_C(0x001BED), GC_MN},
+ {RUNE_C(0x001BEE), RUNE_C(0x001BEE), GC_MC},
+ {RUNE_C(0x001BEF), RUNE_C(0x001BF1), GC_MN},
+ {RUNE_C(0x001BF2), RUNE_C(0x001BF3), GC_MC},
+ {RUNE_C(0x001BFC), RUNE_C(0x001BFF), GC_PO},
+ {RUNE_C(0x001C00), RUNE_C(0x001C23), GC_LO},
+ {RUNE_C(0x001C24), RUNE_C(0x001C2B), GC_MC},
+ {RUNE_C(0x001C2C), RUNE_C(0x001C33), GC_MN},
+ {RUNE_C(0x001C34), RUNE_C(0x001C35), GC_MC},
+ {RUNE_C(0x001C36), RUNE_C(0x001C37), GC_MN},
+ {RUNE_C(0x001C3B), RUNE_C(0x001C3F), GC_PO},
+ {RUNE_C(0x001C40), RUNE_C(0x001C49), GC_ND},
+ {RUNE_C(0x001C4D), RUNE_C(0x001C4F), GC_LO},
+ {RUNE_C(0x001C50), RUNE_C(0x001C59), GC_ND},
+ {RUNE_C(0x001C5A), RUNE_C(0x001C77), GC_LO},
+ {RUNE_C(0x001C78), RUNE_C(0x001C7D), GC_LM},
+ {RUNE_C(0x001C7E), RUNE_C(0x001C7F), GC_PO},
+ {RUNE_C(0x001C80), RUNE_C(0x001C88), GC_LL},
+ {RUNE_C(0x001C90), RUNE_C(0x001CBA), GC_LU},
+ {RUNE_C(0x001CBD), RUNE_C(0x001CBF), GC_LU},
+ {RUNE_C(0x001CC0), RUNE_C(0x001CC7), GC_PO},
+ {RUNE_C(0x001CD0), RUNE_C(0x001CD2), GC_MN},
+ {RUNE_C(0x001CD3), RUNE_C(0x001CD3), GC_PO},
+ {RUNE_C(0x001CD4), RUNE_C(0x001CE0), GC_MN},
+ {RUNE_C(0x001CE1), RUNE_C(0x001CE1), GC_MC},
+ {RUNE_C(0x001CE2), RUNE_C(0x001CE8), GC_MN},
+ {RUNE_C(0x001CE9), RUNE_C(0x001CEC), GC_LO},
+ {RUNE_C(0x001CED), RUNE_C(0x001CED), GC_MN},
+ {RUNE_C(0x001CEE), RUNE_C(0x001CF3), GC_LO},
+ {RUNE_C(0x001CF4), RUNE_C(0x001CF4), GC_MN},
+ {RUNE_C(0x001CF5), RUNE_C(0x001CF6), GC_LO},
+ {RUNE_C(0x001CF7), RUNE_C(0x001CF7), GC_MC},
+ {RUNE_C(0x001CF8), RUNE_C(0x001CF9), GC_MN},
+ {RUNE_C(0x001CFA), RUNE_C(0x001CFA), GC_LO},
+ {RUNE_C(0x001D00), RUNE_C(0x001D2B), GC_LL},
+ {RUNE_C(0x001D2C), RUNE_C(0x001D6A), GC_LM},
+ {RUNE_C(0x001D6B), RUNE_C(0x001D77), GC_LL},
+ {RUNE_C(0x001D78), RUNE_C(0x001D78), GC_LM},
+ {RUNE_C(0x001D79), RUNE_C(0x001D9A), GC_LL},
+ {RUNE_C(0x001D9B), RUNE_C(0x001DBF), GC_LM},
+ {RUNE_C(0x001DC0), RUNE_C(0x001DFF), GC_MN},
+ {RUNE_C(0x001E00), RUNE_C(0x001E00), GC_LU},
+ {RUNE_C(0x001E01), RUNE_C(0x001E01), GC_LL},
+ {RUNE_C(0x001E02), RUNE_C(0x001E02), GC_LU},
+ {RUNE_C(0x001E03), RUNE_C(0x001E03), GC_LL},
+ {RUNE_C(0x001E04), RUNE_C(0x001E04), GC_LU},
+ {RUNE_C(0x001E05), RUNE_C(0x001E05), GC_LL},
+ {RUNE_C(0x001E06), RUNE_C(0x001E06), GC_LU},
+ {RUNE_C(0x001E07), RUNE_C(0x001E07), GC_LL},
+ {RUNE_C(0x001E08), RUNE_C(0x001E08), GC_LU},
+ {RUNE_C(0x001E09), RUNE_C(0x001E09), GC_LL},
+ {RUNE_C(0x001E0A), RUNE_C(0x001E0A), GC_LU},
+ {RUNE_C(0x001E0B), RUNE_C(0x001E0B), GC_LL},
+ {RUNE_C(0x001E0C), RUNE_C(0x001E0C), GC_LU},
+ {RUNE_C(0x001E0D), RUNE_C(0x001E0D), GC_LL},
+ {RUNE_C(0x001E0E), RUNE_C(0x001E0E), GC_LU},
+ {RUNE_C(0x001E0F), RUNE_C(0x001E0F), GC_LL},
+ {RUNE_C(0x001E10), RUNE_C(0x001E10), GC_LU},
+ {RUNE_C(0x001E11), RUNE_C(0x001E11), GC_LL},
+ {RUNE_C(0x001E12), RUNE_C(0x001E12), GC_LU},
+ {RUNE_C(0x001E13), RUNE_C(0x001E13), GC_LL},
+ {RUNE_C(0x001E14), RUNE_C(0x001E14), GC_LU},
+ {RUNE_C(0x001E15), RUNE_C(0x001E15), GC_LL},
+ {RUNE_C(0x001E16), RUNE_C(0x001E16), GC_LU},
+ {RUNE_C(0x001E17), RUNE_C(0x001E17), GC_LL},
+ {RUNE_C(0x001E18), RUNE_C(0x001E18), GC_LU},
+ {RUNE_C(0x001E19), RUNE_C(0x001E19), GC_LL},
+ {RUNE_C(0x001E1A), RUNE_C(0x001E1A), GC_LU},
+ {RUNE_C(0x001E1B), RUNE_C(0x001E1B), GC_LL},
+ {RUNE_C(0x001E1C), RUNE_C(0x001E1C), GC_LU},
+ {RUNE_C(0x001E1D), RUNE_C(0x001E1D), GC_LL},
+ {RUNE_C(0x001E1E), RUNE_C(0x001E1E), GC_LU},
+ {RUNE_C(0x001E1F), RUNE_C(0x001E1F), GC_LL},
+ {RUNE_C(0x001E20), RUNE_C(0x001E20), GC_LU},
+ {RUNE_C(0x001E21), RUNE_C(0x001E21), GC_LL},
+ {RUNE_C(0x001E22), RUNE_C(0x001E22), GC_LU},
+ {RUNE_C(0x001E23), RUNE_C(0x001E23), GC_LL},
+ {RUNE_C(0x001E24), RUNE_C(0x001E24), GC_LU},
+ {RUNE_C(0x001E25), RUNE_C(0x001E25), GC_LL},
+ {RUNE_C(0x001E26), RUNE_C(0x001E26), GC_LU},
+ {RUNE_C(0x001E27), RUNE_C(0x001E27), GC_LL},
+ {RUNE_C(0x001E28), RUNE_C(0x001E28), GC_LU},
+ {RUNE_C(0x001E29), RUNE_C(0x001E29), GC_LL},
+ {RUNE_C(0x001E2A), RUNE_C(0x001E2A), GC_LU},
+ {RUNE_C(0x001E2B), RUNE_C(0x001E2B), GC_LL},
+ {RUNE_C(0x001E2C), RUNE_C(0x001E2C), GC_LU},
+ {RUNE_C(0x001E2D), RUNE_C(0x001E2D), GC_LL},
+ {RUNE_C(0x001E2E), RUNE_C(0x001E2E), GC_LU},
+ {RUNE_C(0x001E2F), RUNE_C(0x001E2F), GC_LL},
+ {RUNE_C(0x001E30), RUNE_C(0x001E30), GC_LU},
+ {RUNE_C(0x001E31), RUNE_C(0x001E31), GC_LL},
+ {RUNE_C(0x001E32), RUNE_C(0x001E32), GC_LU},
+ {RUNE_C(0x001E33), RUNE_C(0x001E33), GC_LL},
+ {RUNE_C(0x001E34), RUNE_C(0x001E34), GC_LU},
+ {RUNE_C(0x001E35), RUNE_C(0x001E35), GC_LL},
+ {RUNE_C(0x001E36), RUNE_C(0x001E36), GC_LU},
+ {RUNE_C(0x001E37), RUNE_C(0x001E37), GC_LL},
+ {RUNE_C(0x001E38), RUNE_C(0x001E38), GC_LU},
+ {RUNE_C(0x001E39), RUNE_C(0x001E39), GC_LL},
+ {RUNE_C(0x001E3A), RUNE_C(0x001E3A), GC_LU},
+ {RUNE_C(0x001E3B), RUNE_C(0x001E3B), GC_LL},
+ {RUNE_C(0x001E3C), RUNE_C(0x001E3C), GC_LU},
+ {RUNE_C(0x001E3D), RUNE_C(0x001E3D), GC_LL},
+ {RUNE_C(0x001E3E), RUNE_C(0x001E3E), GC_LU},
+ {RUNE_C(0x001E3F), RUNE_C(0x001E3F), GC_LL},
+ {RUNE_C(0x001E40), RUNE_C(0x001E40), GC_LU},
+ {RUNE_C(0x001E41), RUNE_C(0x001E41), GC_LL},
+ {RUNE_C(0x001E42), RUNE_C(0x001E42), GC_LU},
+ {RUNE_C(0x001E43), RUNE_C(0x001E43), GC_LL},
+ {RUNE_C(0x001E44), RUNE_C(0x001E44), GC_LU},
+ {RUNE_C(0x001E45), RUNE_C(0x001E45), GC_LL},
+ {RUNE_C(0x001E46), RUNE_C(0x001E46), GC_LU},
+ {RUNE_C(0x001E47), RUNE_C(0x001E47), GC_LL},
+ {RUNE_C(0x001E48), RUNE_C(0x001E48), GC_LU},
+ {RUNE_C(0x001E49), RUNE_C(0x001E49), GC_LL},
+ {RUNE_C(0x001E4A), RUNE_C(0x001E4A), GC_LU},
+ {RUNE_C(0x001E4B), RUNE_C(0x001E4B), GC_LL},
+ {RUNE_C(0x001E4C), RUNE_C(0x001E4C), GC_LU},
+ {RUNE_C(0x001E4D), RUNE_C(0x001E4D), GC_LL},
+ {RUNE_C(0x001E4E), RUNE_C(0x001E4E), GC_LU},
+ {RUNE_C(0x001E4F), RUNE_C(0x001E4F), GC_LL},
+ {RUNE_C(0x001E50), RUNE_C(0x001E50), GC_LU},
+ {RUNE_C(0x001E51), RUNE_C(0x001E51), GC_LL},
+ {RUNE_C(0x001E52), RUNE_C(0x001E52), GC_LU},
+ {RUNE_C(0x001E53), RUNE_C(0x001E53), GC_LL},
+ {RUNE_C(0x001E54), RUNE_C(0x001E54), GC_LU},
+ {RUNE_C(0x001E55), RUNE_C(0x001E55), GC_LL},
+ {RUNE_C(0x001E56), RUNE_C(0x001E56), GC_LU},
+ {RUNE_C(0x001E57), RUNE_C(0x001E57), GC_LL},
+ {RUNE_C(0x001E58), RUNE_C(0x001E58), GC_LU},
+ {RUNE_C(0x001E59), RUNE_C(0x001E59), GC_LL},
+ {RUNE_C(0x001E5A), RUNE_C(0x001E5A), GC_LU},
+ {RUNE_C(0x001E5B), RUNE_C(0x001E5B), GC_LL},
+ {RUNE_C(0x001E5C), RUNE_C(0x001E5C), GC_LU},
+ {RUNE_C(0x001E5D), RUNE_C(0x001E5D), GC_LL},
+ {RUNE_C(0x001E5E), RUNE_C(0x001E5E), GC_LU},
+ {RUNE_C(0x001E5F), RUNE_C(0x001E5F), GC_LL},
+ {RUNE_C(0x001E60), RUNE_C(0x001E60), GC_LU},
+ {RUNE_C(0x001E61), RUNE_C(0x001E61), GC_LL},
+ {RUNE_C(0x001E62), RUNE_C(0x001E62), GC_LU},
+ {RUNE_C(0x001E63), RUNE_C(0x001E63), GC_LL},
+ {RUNE_C(0x001E64), RUNE_C(0x001E64), GC_LU},
+ {RUNE_C(0x001E65), RUNE_C(0x001E65), GC_LL},
+ {RUNE_C(0x001E66), RUNE_C(0x001E66), GC_LU},
+ {RUNE_C(0x001E67), RUNE_C(0x001E67), GC_LL},
+ {RUNE_C(0x001E68), RUNE_C(0x001E68), GC_LU},
+ {RUNE_C(0x001E69), RUNE_C(0x001E69), GC_LL},
+ {RUNE_C(0x001E6A), RUNE_C(0x001E6A), GC_LU},
+ {RUNE_C(0x001E6B), RUNE_C(0x001E6B), GC_LL},
+ {RUNE_C(0x001E6C), RUNE_C(0x001E6C), GC_LU},
+ {RUNE_C(0x001E6D), RUNE_C(0x001E6D), GC_LL},
+ {RUNE_C(0x001E6E), RUNE_C(0x001E6E), GC_LU},
+ {RUNE_C(0x001E6F), RUNE_C(0x001E6F), GC_LL},
+ {RUNE_C(0x001E70), RUNE_C(0x001E70), GC_LU},
+ {RUNE_C(0x001E71), RUNE_C(0x001E71), GC_LL},
+ {RUNE_C(0x001E72), RUNE_C(0x001E72), GC_LU},
+ {RUNE_C(0x001E73), RUNE_C(0x001E73), GC_LL},
+ {RUNE_C(0x001E74), RUNE_C(0x001E74), GC_LU},
+ {RUNE_C(0x001E75), RUNE_C(0x001E75), GC_LL},
+ {RUNE_C(0x001E76), RUNE_C(0x001E76), GC_LU},
+ {RUNE_C(0x001E77), RUNE_C(0x001E77), GC_LL},
+ {RUNE_C(0x001E78), RUNE_C(0x001E78), GC_LU},
+ {RUNE_C(0x001E79), RUNE_C(0x001E79), GC_LL},
+ {RUNE_C(0x001E7A), RUNE_C(0x001E7A), GC_LU},
+ {RUNE_C(0x001E7B), RUNE_C(0x001E7B), GC_LL},
+ {RUNE_C(0x001E7C), RUNE_C(0x001E7C), GC_LU},
+ {RUNE_C(0x001E7D), RUNE_C(0x001E7D), GC_LL},
+ {RUNE_C(0x001E7E), RUNE_C(0x001E7E), GC_LU},
+ {RUNE_C(0x001E7F), RUNE_C(0x001E7F), GC_LL},
+ {RUNE_C(0x001E80), RUNE_C(0x001E80), GC_LU},
+ {RUNE_C(0x001E81), RUNE_C(0x001E81), GC_LL},
+ {RUNE_C(0x001E82), RUNE_C(0x001E82), GC_LU},
+ {RUNE_C(0x001E83), RUNE_C(0x001E83), GC_LL},
+ {RUNE_C(0x001E84), RUNE_C(0x001E84), GC_LU},
+ {RUNE_C(0x001E85), RUNE_C(0x001E85), GC_LL},
+ {RUNE_C(0x001E86), RUNE_C(0x001E86), GC_LU},
+ {RUNE_C(0x001E87), RUNE_C(0x001E87), GC_LL},
+ {RUNE_C(0x001E88), RUNE_C(0x001E88), GC_LU},
+ {RUNE_C(0x001E89), RUNE_C(0x001E89), GC_LL},
+ {RUNE_C(0x001E8A), RUNE_C(0x001E8A), GC_LU},
+ {RUNE_C(0x001E8B), RUNE_C(0x001E8B), GC_LL},
+ {RUNE_C(0x001E8C), RUNE_C(0x001E8C), GC_LU},
+ {RUNE_C(0x001E8D), RUNE_C(0x001E8D), GC_LL},
+ {RUNE_C(0x001E8E), RUNE_C(0x001E8E), GC_LU},
+ {RUNE_C(0x001E8F), RUNE_C(0x001E8F), GC_LL},
+ {RUNE_C(0x001E90), RUNE_C(0x001E90), GC_LU},
+ {RUNE_C(0x001E91), RUNE_C(0x001E91), GC_LL},
+ {RUNE_C(0x001E92), RUNE_C(0x001E92), GC_LU},
+ {RUNE_C(0x001E93), RUNE_C(0x001E93), GC_LL},
+ {RUNE_C(0x001E94), RUNE_C(0x001E94), GC_LU},
+ {RUNE_C(0x001E95), RUNE_C(0x001E9D), GC_LL},
+ {RUNE_C(0x001E9E), RUNE_C(0x001E9E), GC_LU},
+ {RUNE_C(0x001E9F), RUNE_C(0x001E9F), GC_LL},
+ {RUNE_C(0x001EA0), RUNE_C(0x001EA0), GC_LU},
+ {RUNE_C(0x001EA1), RUNE_C(0x001EA1), GC_LL},
+ {RUNE_C(0x001EA2), RUNE_C(0x001EA2), GC_LU},
+ {RUNE_C(0x001EA3), RUNE_C(0x001EA3), GC_LL},
+ {RUNE_C(0x001EA4), RUNE_C(0x001EA4), GC_LU},
+ {RUNE_C(0x001EA5), RUNE_C(0x001EA5), GC_LL},
+ {RUNE_C(0x001EA6), RUNE_C(0x001EA6), GC_LU},
+ {RUNE_C(0x001EA7), RUNE_C(0x001EA7), GC_LL},
+ {RUNE_C(0x001EA8), RUNE_C(0x001EA8), GC_LU},
+ {RUNE_C(0x001EA9), RUNE_C(0x001EA9), GC_LL},
+ {RUNE_C(0x001EAA), RUNE_C(0x001EAA), GC_LU},
+ {RUNE_C(0x001EAB), RUNE_C(0x001EAB), GC_LL},
+ {RUNE_C(0x001EAC), RUNE_C(0x001EAC), GC_LU},
+ {RUNE_C(0x001EAD), RUNE_C(0x001EAD), GC_LL},
+ {RUNE_C(0x001EAE), RUNE_C(0x001EAE), GC_LU},
+ {RUNE_C(0x001EAF), RUNE_C(0x001EAF), GC_LL},
+ {RUNE_C(0x001EB0), RUNE_C(0x001EB0), GC_LU},
+ {RUNE_C(0x001EB1), RUNE_C(0x001EB1), GC_LL},
+ {RUNE_C(0x001EB2), RUNE_C(0x001EB2), GC_LU},
+ {RUNE_C(0x001EB3), RUNE_C(0x001EB3), GC_LL},
+ {RUNE_C(0x001EB4), RUNE_C(0x001EB4), GC_LU},
+ {RUNE_C(0x001EB5), RUNE_C(0x001EB5), GC_LL},
+ {RUNE_C(0x001EB6), RUNE_C(0x001EB6), GC_LU},
+ {RUNE_C(0x001EB7), RUNE_C(0x001EB7), GC_LL},
+ {RUNE_C(0x001EB8), RUNE_C(0x001EB8), GC_LU},
+ {RUNE_C(0x001EB9), RUNE_C(0x001EB9), GC_LL},
+ {RUNE_C(0x001EBA), RUNE_C(0x001EBA), GC_LU},
+ {RUNE_C(0x001EBB), RUNE_C(0x001EBB), GC_LL},
+ {RUNE_C(0x001EBC), RUNE_C(0x001EBC), GC_LU},
+ {RUNE_C(0x001EBD), RUNE_C(0x001EBD), GC_LL},
+ {RUNE_C(0x001EBE), RUNE_C(0x001EBE), GC_LU},
+ {RUNE_C(0x001EBF), RUNE_C(0x001EBF), GC_LL},
+ {RUNE_C(0x001EC0), RUNE_C(0x001EC0), GC_LU},
+ {RUNE_C(0x001EC1), RUNE_C(0x001EC1), GC_LL},
+ {RUNE_C(0x001EC2), RUNE_C(0x001EC2), GC_LU},
+ {RUNE_C(0x001EC3), RUNE_C(0x001EC3), GC_LL},
+ {RUNE_C(0x001EC4), RUNE_C(0x001EC4), GC_LU},
+ {RUNE_C(0x001EC5), RUNE_C(0x001EC5), GC_LL},
+ {RUNE_C(0x001EC6), RUNE_C(0x001EC6), GC_LU},
+ {RUNE_C(0x001EC7), RUNE_C(0x001EC7), GC_LL},
+ {RUNE_C(0x001EC8), RUNE_C(0x001EC8), GC_LU},
+ {RUNE_C(0x001EC9), RUNE_C(0x001EC9), GC_LL},
+ {RUNE_C(0x001ECA), RUNE_C(0x001ECA), GC_LU},
+ {RUNE_C(0x001ECB), RUNE_C(0x001ECB), GC_LL},
+ {RUNE_C(0x001ECC), RUNE_C(0x001ECC), GC_LU},
+ {RUNE_C(0x001ECD), RUNE_C(0x001ECD), GC_LL},
+ {RUNE_C(0x001ECE), RUNE_C(0x001ECE), GC_LU},
+ {RUNE_C(0x001ECF), RUNE_C(0x001ECF), GC_LL},
+ {RUNE_C(0x001ED0), RUNE_C(0x001ED0), GC_LU},
+ {RUNE_C(0x001ED1), RUNE_C(0x001ED1), GC_LL},
+ {RUNE_C(0x001ED2), RUNE_C(0x001ED2), GC_LU},
+ {RUNE_C(0x001ED3), RUNE_C(0x001ED3), GC_LL},
+ {RUNE_C(0x001ED4), RUNE_C(0x001ED4), GC_LU},
+ {RUNE_C(0x001ED5), RUNE_C(0x001ED5), GC_LL},
+ {RUNE_C(0x001ED6), RUNE_C(0x001ED6), GC_LU},
+ {RUNE_C(0x001ED7), RUNE_C(0x001ED7), GC_LL},
+ {RUNE_C(0x001ED8), RUNE_C(0x001ED8), GC_LU},
+ {RUNE_C(0x001ED9), RUNE_C(0x001ED9), GC_LL},
+ {RUNE_C(0x001EDA), RUNE_C(0x001EDA), GC_LU},
+ {RUNE_C(0x001EDB), RUNE_C(0x001EDB), GC_LL},
+ {RUNE_C(0x001EDC), RUNE_C(0x001EDC), GC_LU},
+ {RUNE_C(0x001EDD), RUNE_C(0x001EDD), GC_LL},
+ {RUNE_C(0x001EDE), RUNE_C(0x001EDE), GC_LU},
+ {RUNE_C(0x001EDF), RUNE_C(0x001EDF), GC_LL},
+ {RUNE_C(0x001EE0), RUNE_C(0x001EE0), GC_LU},
+ {RUNE_C(0x001EE1), RUNE_C(0x001EE1), GC_LL},
+ {RUNE_C(0x001EE2), RUNE_C(0x001EE2), GC_LU},
+ {RUNE_C(0x001EE3), RUNE_C(0x001EE3), GC_LL},
+ {RUNE_C(0x001EE4), RUNE_C(0x001EE4), GC_LU},
+ {RUNE_C(0x001EE5), RUNE_C(0x001EE5), GC_LL},
+ {RUNE_C(0x001EE6), RUNE_C(0x001EE6), GC_LU},
+ {RUNE_C(0x001EE7), RUNE_C(0x001EE7), GC_LL},
+ {RUNE_C(0x001EE8), RUNE_C(0x001EE8), GC_LU},
+ {RUNE_C(0x001EE9), RUNE_C(0x001EE9), GC_LL},
+ {RUNE_C(0x001EEA), RUNE_C(0x001EEA), GC_LU},
+ {RUNE_C(0x001EEB), RUNE_C(0x001EEB), GC_LL},
+ {RUNE_C(0x001EEC), RUNE_C(0x001EEC), GC_LU},
+ {RUNE_C(0x001EED), RUNE_C(0x001EED), GC_LL},
+ {RUNE_C(0x001EEE), RUNE_C(0x001EEE), GC_LU},
+ {RUNE_C(0x001EEF), RUNE_C(0x001EEF), GC_LL},
+ {RUNE_C(0x001EF0), RUNE_C(0x001EF0), GC_LU},
+ {RUNE_C(0x001EF1), RUNE_C(0x001EF1), GC_LL},
+ {RUNE_C(0x001EF2), RUNE_C(0x001EF2), GC_LU},
+ {RUNE_C(0x001EF3), RUNE_C(0x001EF3), GC_LL},
+ {RUNE_C(0x001EF4), RUNE_C(0x001EF4), GC_LU},
+ {RUNE_C(0x001EF5), RUNE_C(0x001EF5), GC_LL},
+ {RUNE_C(0x001EF6), RUNE_C(0x001EF6), GC_LU},
+ {RUNE_C(0x001EF7), RUNE_C(0x001EF7), GC_LL},
+ {RUNE_C(0x001EF8), RUNE_C(0x001EF8), GC_LU},
+ {RUNE_C(0x001EF9), RUNE_C(0x001EF9), GC_LL},
+ {RUNE_C(0x001EFA), RUNE_C(0x001EFA), GC_LU},
+ {RUNE_C(0x001EFB), RUNE_C(0x001EFB), GC_LL},
+ {RUNE_C(0x001EFC), RUNE_C(0x001EFC), GC_LU},
+ {RUNE_C(0x001EFD), RUNE_C(0x001EFD), GC_LL},
+ {RUNE_C(0x001EFE), RUNE_C(0x001EFE), GC_LU},
+ {RUNE_C(0x001EFF), RUNE_C(0x001F07), GC_LL},
+ {RUNE_C(0x001F08), RUNE_C(0x001F0F), GC_LU},
+ {RUNE_C(0x001F10), RUNE_C(0x001F15), GC_LL},
+ {RUNE_C(0x001F18), RUNE_C(0x001F1D), GC_LU},
+ {RUNE_C(0x001F20), RUNE_C(0x001F27), GC_LL},
+ {RUNE_C(0x001F28), RUNE_C(0x001F2F), GC_LU},
+ {RUNE_C(0x001F30), RUNE_C(0x001F37), GC_LL},
+ {RUNE_C(0x001F38), RUNE_C(0x001F3F), GC_LU},
+ {RUNE_C(0x001F40), RUNE_C(0x001F45), GC_LL},
+ {RUNE_C(0x001F48), RUNE_C(0x001F4D), GC_LU},
+ {RUNE_C(0x001F50), RUNE_C(0x001F57), GC_LL},
+ {RUNE_C(0x001F59), RUNE_C(0x001F59), GC_LU},
+ {RUNE_C(0x001F5B), RUNE_C(0x001F5B), GC_LU},
+ {RUNE_C(0x001F5D), RUNE_C(0x001F5D), GC_LU},
+ {RUNE_C(0x001F5F), RUNE_C(0x001F5F), GC_LU},
+ {RUNE_C(0x001F60), RUNE_C(0x001F67), GC_LL},
+ {RUNE_C(0x001F68), RUNE_C(0x001F6F), GC_LU},
+ {RUNE_C(0x001F70), RUNE_C(0x001F7D), GC_LL},
+ {RUNE_C(0x001F80), RUNE_C(0x001F87), GC_LL},
+ {RUNE_C(0x001F88), RUNE_C(0x001F8F), GC_LT},
+ {RUNE_C(0x001F90), RUNE_C(0x001F97), GC_LL},
+ {RUNE_C(0x001F98), RUNE_C(0x001F9F), GC_LT},
+ {RUNE_C(0x001FA0), RUNE_C(0x001FA7), GC_LL},
+ {RUNE_C(0x001FA8), RUNE_C(0x001FAF), GC_LT},
+ {RUNE_C(0x001FB0), RUNE_C(0x001FB4), GC_LL},
+ {RUNE_C(0x001FB6), RUNE_C(0x001FB7), GC_LL},
+ {RUNE_C(0x001FB8), RUNE_C(0x001FBB), GC_LU},
+ {RUNE_C(0x001FBC), RUNE_C(0x001FBC), GC_LT},
+ {RUNE_C(0x001FBD), RUNE_C(0x001FBD), GC_SK},
+ {RUNE_C(0x001FBE), RUNE_C(0x001FBE), GC_LL},
+ {RUNE_C(0x001FBF), RUNE_C(0x001FC1), GC_SK},
+ {RUNE_C(0x001FC2), RUNE_C(0x001FC4), GC_LL},
+ {RUNE_C(0x001FC6), RUNE_C(0x001FC7), GC_LL},
+ {RUNE_C(0x001FC8), RUNE_C(0x001FCB), GC_LU},
+ {RUNE_C(0x001FCC), RUNE_C(0x001FCC), GC_LT},
+ {RUNE_C(0x001FCD), RUNE_C(0x001FCF), GC_SK},
+ {RUNE_C(0x001FD0), RUNE_C(0x001FD3), GC_LL},
+ {RUNE_C(0x001FD6), RUNE_C(0x001FD7), GC_LL},
+ {RUNE_C(0x001FD8), RUNE_C(0x001FDB), GC_LU},
+ {RUNE_C(0x001FDD), RUNE_C(0x001FDF), GC_SK},
+ {RUNE_C(0x001FE0), RUNE_C(0x001FE7), GC_LL},
+ {RUNE_C(0x001FE8), RUNE_C(0x001FEC), GC_LU},
+ {RUNE_C(0x001FED), RUNE_C(0x001FEF), GC_SK},
+ {RUNE_C(0x001FF2), RUNE_C(0x001FF4), GC_LL},
+ {RUNE_C(0x001FF6), RUNE_C(0x001FF7), GC_LL},
+ {RUNE_C(0x001FF8), RUNE_C(0x001FFB), GC_LU},
+ {RUNE_C(0x001FFC), RUNE_C(0x001FFC), GC_LT},
+ {RUNE_C(0x001FFD), RUNE_C(0x001FFE), GC_SK},
+ {RUNE_C(0x002000), RUNE_C(0x00200A), GC_ZS},
+ {RUNE_C(0x00200B), RUNE_C(0x00200F), GC_CF},
+ {RUNE_C(0x002010), RUNE_C(0x002015), GC_PD},
+ {RUNE_C(0x002016), RUNE_C(0x002017), GC_PO},
+ {RUNE_C(0x002018), RUNE_C(0x002018), GC_PI},
+ {RUNE_C(0x002019), RUNE_C(0x002019), GC_PF},
+ {RUNE_C(0x00201A), RUNE_C(0x00201A), GC_PS},
+ {RUNE_C(0x00201B), RUNE_C(0x00201C), GC_PI},
+ {RUNE_C(0x00201D), RUNE_C(0x00201D), GC_PF},
+ {RUNE_C(0x00201E), RUNE_C(0x00201E), GC_PS},
+ {RUNE_C(0x00201F), RUNE_C(0x00201F), GC_PI},
+ {RUNE_C(0x002020), RUNE_C(0x002027), GC_PO},
+ {RUNE_C(0x002028), RUNE_C(0x002028), GC_ZL},
+ {RUNE_C(0x002029), RUNE_C(0x002029), GC_ZP},
+ {RUNE_C(0x00202A), RUNE_C(0x00202E), GC_CF},
+ {RUNE_C(0x00202F), RUNE_C(0x00202F), GC_ZS},
+ {RUNE_C(0x002030), RUNE_C(0x002038), GC_PO},
+ {RUNE_C(0x002039), RUNE_C(0x002039), GC_PI},
+ {RUNE_C(0x00203A), RUNE_C(0x00203A), GC_PF},
+ {RUNE_C(0x00203B), RUNE_C(0x00203E), GC_PO},
+ {RUNE_C(0x00203F), RUNE_C(0x002040), GC_PC},
+ {RUNE_C(0x002041), RUNE_C(0x002043), GC_PO},
+ {RUNE_C(0x002044), RUNE_C(0x002044), GC_SM},
+ {RUNE_C(0x002045), RUNE_C(0x002045), GC_PS},
+ {RUNE_C(0x002046), RUNE_C(0x002046), GC_PE},
+ {RUNE_C(0x002047), RUNE_C(0x002051), GC_PO},
+ {RUNE_C(0x002052), RUNE_C(0x002052), GC_SM},
+ {RUNE_C(0x002053), RUNE_C(0x002053), GC_PO},
+ {RUNE_C(0x002054), RUNE_C(0x002054), GC_PC},
+ {RUNE_C(0x002055), RUNE_C(0x00205E), GC_PO},
+ {RUNE_C(0x00205F), RUNE_C(0x00205F), GC_ZS},
+ {RUNE_C(0x002060), RUNE_C(0x002064), GC_CF},
+ {RUNE_C(0x002066), RUNE_C(0x00206F), GC_CF},
+ {RUNE_C(0x002070), RUNE_C(0x002070), GC_NO},
+ {RUNE_C(0x002071), RUNE_C(0x002071), GC_LM},
+ {RUNE_C(0x002074), RUNE_C(0x002079), GC_NO},
+ {RUNE_C(0x00207A), RUNE_C(0x00207C), GC_SM},
+ {RUNE_C(0x00207D), RUNE_C(0x00207D), GC_PS},
+ {RUNE_C(0x00207E), RUNE_C(0x00207E), GC_PE},
+ {RUNE_C(0x00207F), RUNE_C(0x00207F), GC_LM},
+ {RUNE_C(0x002080), RUNE_C(0x002089), GC_NO},
+ {RUNE_C(0x00208A), RUNE_C(0x00208C), GC_SM},
+ {RUNE_C(0x00208D), RUNE_C(0x00208D), GC_PS},
+ {RUNE_C(0x00208E), RUNE_C(0x00208E), GC_PE},
+ {RUNE_C(0x002090), RUNE_C(0x00209C), GC_LM},
+ {RUNE_C(0x0020A0), RUNE_C(0x0020C0), GC_SC},
+ {RUNE_C(0x0020D0), RUNE_C(0x0020DC), GC_MN},
+ {RUNE_C(0x0020DD), RUNE_C(0x0020E0), GC_ME},
+ {RUNE_C(0x0020E1), RUNE_C(0x0020E1), GC_MN},
+ {RUNE_C(0x0020E2), RUNE_C(0x0020E4), GC_ME},
+ {RUNE_C(0x0020E5), RUNE_C(0x0020F0), GC_MN},
+ {RUNE_C(0x002100), RUNE_C(0x002101), GC_SO},
+ {RUNE_C(0x002102), RUNE_C(0x002102), GC_LU},
+ {RUNE_C(0x002103), RUNE_C(0x002106), GC_SO},
+ {RUNE_C(0x002107), RUNE_C(0x002107), GC_LU},
+ {RUNE_C(0x002108), RUNE_C(0x002109), GC_SO},
+ {RUNE_C(0x00210A), RUNE_C(0x00210A), GC_LL},
+ {RUNE_C(0x00210B), RUNE_C(0x00210D), GC_LU},
+ {RUNE_C(0x00210E), RUNE_C(0x00210F), GC_LL},
+ {RUNE_C(0x002110), RUNE_C(0x002112), GC_LU},
+ {RUNE_C(0x002113), RUNE_C(0x002113), GC_LL},
+ {RUNE_C(0x002114), RUNE_C(0x002114), GC_SO},
+ {RUNE_C(0x002115), RUNE_C(0x002115), GC_LU},
+ {RUNE_C(0x002116), RUNE_C(0x002117), GC_SO},
+ {RUNE_C(0x002118), RUNE_C(0x002118), GC_SM},
+ {RUNE_C(0x002119), RUNE_C(0x00211D), GC_LU},
+ {RUNE_C(0x00211E), RUNE_C(0x002123), GC_SO},
+ {RUNE_C(0x002124), RUNE_C(0x002124), GC_LU},
+ {RUNE_C(0x002125), RUNE_C(0x002125), GC_SO},
+ {RUNE_C(0x002126), RUNE_C(0x002126), GC_LU},
+ {RUNE_C(0x002127), RUNE_C(0x002127), GC_SO},
+ {RUNE_C(0x002128), RUNE_C(0x002128), GC_LU},
+ {RUNE_C(0x002129), RUNE_C(0x002129), GC_SO},
+ {RUNE_C(0x00212A), RUNE_C(0x00212D), GC_LU},
+ {RUNE_C(0x00212E), RUNE_C(0x00212E), GC_SO},
+ {RUNE_C(0x00212F), RUNE_C(0x00212F), GC_LL},
+ {RUNE_C(0x002130), RUNE_C(0x002133), GC_LU},
+ {RUNE_C(0x002134), RUNE_C(0x002134), GC_LL},
+ {RUNE_C(0x002135), RUNE_C(0x002138), GC_LO},
+ {RUNE_C(0x002139), RUNE_C(0x002139), GC_LL},
+ {RUNE_C(0x00213A), RUNE_C(0x00213B), GC_SO},
+ {RUNE_C(0x00213C), RUNE_C(0x00213D), GC_LL},
+ {RUNE_C(0x00213E), RUNE_C(0x00213F), GC_LU},
+ {RUNE_C(0x002140), RUNE_C(0x002144), GC_SM},
+ {RUNE_C(0x002145), RUNE_C(0x002145), GC_LU},
+ {RUNE_C(0x002146), RUNE_C(0x002149), GC_LL},
+ {RUNE_C(0x00214A), RUNE_C(0x00214A), GC_SO},
+ {RUNE_C(0x00214B), RUNE_C(0x00214B), GC_SM},
+ {RUNE_C(0x00214C), RUNE_C(0x00214D), GC_SO},
+ {RUNE_C(0x00214E), RUNE_C(0x00214E), GC_LL},
+ {RUNE_C(0x00214F), RUNE_C(0x00214F), GC_SO},
+ {RUNE_C(0x002150), RUNE_C(0x00215F), GC_NO},
+ {RUNE_C(0x002160), RUNE_C(0x002182), GC_NL},
+ {RUNE_C(0x002183), RUNE_C(0x002183), GC_LU},
+ {RUNE_C(0x002184), RUNE_C(0x002184), GC_LL},
+ {RUNE_C(0x002185), RUNE_C(0x002188), GC_NL},
+ {RUNE_C(0x002189), RUNE_C(0x002189), GC_NO},
+ {RUNE_C(0x00218A), RUNE_C(0x00218B), GC_SO},
+ {RUNE_C(0x002190), RUNE_C(0x002194), GC_SM},
+ {RUNE_C(0x002195), RUNE_C(0x002199), GC_SO},
+ {RUNE_C(0x00219A), RUNE_C(0x00219B), GC_SM},
+ {RUNE_C(0x00219C), RUNE_C(0x00219F), GC_SO},
+ {RUNE_C(0x0021A0), RUNE_C(0x0021A0), GC_SM},
+ {RUNE_C(0x0021A1), RUNE_C(0x0021A2), GC_SO},
+ {RUNE_C(0x0021A3), RUNE_C(0x0021A3), GC_SM},
+ {RUNE_C(0x0021A4), RUNE_C(0x0021A5), GC_SO},
+ {RUNE_C(0x0021A6), RUNE_C(0x0021A6), GC_SM},
+ {RUNE_C(0x0021A7), RUNE_C(0x0021AD), GC_SO},
+ {RUNE_C(0x0021AE), RUNE_C(0x0021AE), GC_SM},
+ {RUNE_C(0x0021AF), RUNE_C(0x0021CD), GC_SO},
+ {RUNE_C(0x0021CE), RUNE_C(0x0021CF), GC_SM},
+ {RUNE_C(0x0021D0), RUNE_C(0x0021D1), GC_SO},
+ {RUNE_C(0x0021D2), RUNE_C(0x0021D2), GC_SM},
+ {RUNE_C(0x0021D3), RUNE_C(0x0021D3), GC_SO},
+ {RUNE_C(0x0021D4), RUNE_C(0x0021D4), GC_SM},
+ {RUNE_C(0x0021D5), RUNE_C(0x0021F3), GC_SO},
+ {RUNE_C(0x0021F4), RUNE_C(0x0022FF), GC_SM},
+ {RUNE_C(0x002300), RUNE_C(0x002307), GC_SO},
+ {RUNE_C(0x002308), RUNE_C(0x002308), GC_PS},
+ {RUNE_C(0x002309), RUNE_C(0x002309), GC_PE},
+ {RUNE_C(0x00230A), RUNE_C(0x00230A), GC_PS},
+ {RUNE_C(0x00230B), RUNE_C(0x00230B), GC_PE},
+ {RUNE_C(0x00230C), RUNE_C(0x00231F), GC_SO},
+ {RUNE_C(0x002320), RUNE_C(0x002321), GC_SM},
+ {RUNE_C(0x002322), RUNE_C(0x002328), GC_SO},
+ {RUNE_C(0x002329), RUNE_C(0x002329), GC_PS},
+ {RUNE_C(0x00232A), RUNE_C(0x00232A), GC_PE},
+ {RUNE_C(0x00232B), RUNE_C(0x00237B), GC_SO},
+ {RUNE_C(0x00237C), RUNE_C(0x00237C), GC_SM},
+ {RUNE_C(0x00237D), RUNE_C(0x00239A), GC_SO},
+ {RUNE_C(0x00239B), RUNE_C(0x0023B3), GC_SM},
+ {RUNE_C(0x0023B4), RUNE_C(0x0023DB), GC_SO},
+ {RUNE_C(0x0023DC), RUNE_C(0x0023E1), GC_SM},
+ {RUNE_C(0x0023E2), RUNE_C(0x002426), GC_SO},
+ {RUNE_C(0x002440), RUNE_C(0x00244A), GC_SO},
+ {RUNE_C(0x002460), RUNE_C(0x00249B), GC_NO},
+ {RUNE_C(0x00249C), RUNE_C(0x0024E9), GC_SO},
+ {RUNE_C(0x0024EA), RUNE_C(0x0024FF), GC_NO},
+ {RUNE_C(0x002500), RUNE_C(0x0025B6), GC_SO},
+ {RUNE_C(0x0025B7), RUNE_C(0x0025B7), GC_SM},
+ {RUNE_C(0x0025B8), RUNE_C(0x0025C0), GC_SO},
+ {RUNE_C(0x0025C1), RUNE_C(0x0025C1), GC_SM},
+ {RUNE_C(0x0025C2), RUNE_C(0x0025F7), GC_SO},
+ {RUNE_C(0x0025F8), RUNE_C(0x0025FF), GC_SM},
+ {RUNE_C(0x002600), RUNE_C(0x00266E), GC_SO},
+ {RUNE_C(0x00266F), RUNE_C(0x00266F), GC_SM},
+ {RUNE_C(0x002670), RUNE_C(0x002767), GC_SO},
+ {RUNE_C(0x002768), RUNE_C(0x002768), GC_PS},
+ {RUNE_C(0x002769), RUNE_C(0x002769), GC_PE},
+ {RUNE_C(0x00276A), RUNE_C(0x00276A), GC_PS},
+ {RUNE_C(0x00276B), RUNE_C(0x00276B), GC_PE},
+ {RUNE_C(0x00276C), RUNE_C(0x00276C), GC_PS},
+ {RUNE_C(0x00276D), RUNE_C(0x00276D), GC_PE},
+ {RUNE_C(0x00276E), RUNE_C(0x00276E), GC_PS},
+ {RUNE_C(0x00276F), RUNE_C(0x00276F), GC_PE},
+ {RUNE_C(0x002770), RUNE_C(0x002770), GC_PS},
+ {RUNE_C(0x002771), RUNE_C(0x002771), GC_PE},
+ {RUNE_C(0x002772), RUNE_C(0x002772), GC_PS},
+ {RUNE_C(0x002773), RUNE_C(0x002773), GC_PE},
+ {RUNE_C(0x002774), RUNE_C(0x002774), GC_PS},
+ {RUNE_C(0x002775), RUNE_C(0x002775), GC_PE},
+ {RUNE_C(0x002776), RUNE_C(0x002793), GC_NO},
+ {RUNE_C(0x002794), RUNE_C(0x0027BF), GC_SO},
+ {RUNE_C(0x0027C0), RUNE_C(0x0027C4), GC_SM},
+ {RUNE_C(0x0027C5), RUNE_C(0x0027C5), GC_PS},
+ {RUNE_C(0x0027C6), RUNE_C(0x0027C6), GC_PE},
+ {RUNE_C(0x0027C7), RUNE_C(0x0027E5), GC_SM},
+ {RUNE_C(0x0027E6), RUNE_C(0x0027E6), GC_PS},
+ {RUNE_C(0x0027E7), RUNE_C(0x0027E7), GC_PE},
+ {RUNE_C(0x0027E8), RUNE_C(0x0027E8), GC_PS},
+ {RUNE_C(0x0027E9), RUNE_C(0x0027E9), GC_PE},
+ {RUNE_C(0x0027EA), RUNE_C(0x0027EA), GC_PS},
+ {RUNE_C(0x0027EB), RUNE_C(0x0027EB), GC_PE},
+ {RUNE_C(0x0027EC), RUNE_C(0x0027EC), GC_PS},
+ {RUNE_C(0x0027ED), RUNE_C(0x0027ED), GC_PE},
+ {RUNE_C(0x0027EE), RUNE_C(0x0027EE), GC_PS},
+ {RUNE_C(0x0027EF), RUNE_C(0x0027EF), GC_PE},
+ {RUNE_C(0x0027F0), RUNE_C(0x0027FF), GC_SM},
+ {RUNE_C(0x002800), RUNE_C(0x0028FF), GC_SO},
+ {RUNE_C(0x002900), RUNE_C(0x002982), GC_SM},
+ {RUNE_C(0x002983), RUNE_C(0x002983), GC_PS},
+ {RUNE_C(0x002984), RUNE_C(0x002984), GC_PE},
+ {RUNE_C(0x002985), RUNE_C(0x002985), GC_PS},
+ {RUNE_C(0x002986), RUNE_C(0x002986), GC_PE},
+ {RUNE_C(0x002987), RUNE_C(0x002987), GC_PS},
+ {RUNE_C(0x002988), RUNE_C(0x002988), GC_PE},
+ {RUNE_C(0x002989), RUNE_C(0x002989), GC_PS},
+ {RUNE_C(0x00298A), RUNE_C(0x00298A), GC_PE},
+ {RUNE_C(0x00298B), RUNE_C(0x00298B), GC_PS},
+ {RUNE_C(0x00298C), RUNE_C(0x00298C), GC_PE},
+ {RUNE_C(0x00298D), RUNE_C(0x00298D), GC_PS},
+ {RUNE_C(0x00298E), RUNE_C(0x00298E), GC_PE},
+ {RUNE_C(0x00298F), RUNE_C(0x00298F), GC_PS},
+ {RUNE_C(0x002990), RUNE_C(0x002990), GC_PE},
+ {RUNE_C(0x002991), RUNE_C(0x002991), GC_PS},
+ {RUNE_C(0x002992), RUNE_C(0x002992), GC_PE},
+ {RUNE_C(0x002993), RUNE_C(0x002993), GC_PS},
+ {RUNE_C(0x002994), RUNE_C(0x002994), GC_PE},
+ {RUNE_C(0x002995), RUNE_C(0x002995), GC_PS},
+ {RUNE_C(0x002996), RUNE_C(0x002996), GC_PE},
+ {RUNE_C(0x002997), RUNE_C(0x002997), GC_PS},
+ {RUNE_C(0x002998), RUNE_C(0x002998), GC_PE},
+ {RUNE_C(0x002999), RUNE_C(0x0029D7), GC_SM},
+ {RUNE_C(0x0029D8), RUNE_C(0x0029D8), GC_PS},
+ {RUNE_C(0x0029D9), RUNE_C(0x0029D9), GC_PE},
+ {RUNE_C(0x0029DA), RUNE_C(0x0029DA), GC_PS},
+ {RUNE_C(0x0029DB), RUNE_C(0x0029DB), GC_PE},
+ {RUNE_C(0x0029DC), RUNE_C(0x0029FB), GC_SM},
+ {RUNE_C(0x0029FC), RUNE_C(0x0029FC), GC_PS},
+ {RUNE_C(0x0029FD), RUNE_C(0x0029FD), GC_PE},
+ {RUNE_C(0x0029FE), RUNE_C(0x002AFF), GC_SM},
+ {RUNE_C(0x002B00), RUNE_C(0x002B2F), GC_SO},
+ {RUNE_C(0x002B30), RUNE_C(0x002B44), GC_SM},
+ {RUNE_C(0x002B45), RUNE_C(0x002B46), GC_SO},
+ {RUNE_C(0x002B47), RUNE_C(0x002B4C), GC_SM},
+ {RUNE_C(0x002B4D), RUNE_C(0x002B73), GC_SO},
+ {RUNE_C(0x002B76), RUNE_C(0x002B95), GC_SO},
+ {RUNE_C(0x002B97), RUNE_C(0x002BFF), GC_SO},
+ {RUNE_C(0x002C00), RUNE_C(0x002C2F), GC_LU},
+ {RUNE_C(0x002C30), RUNE_C(0x002C5F), GC_LL},
+ {RUNE_C(0x002C60), RUNE_C(0x002C60), GC_LU},
+ {RUNE_C(0x002C61), RUNE_C(0x002C61), GC_LL},
+ {RUNE_C(0x002C62), RUNE_C(0x002C64), GC_LU},
+ {RUNE_C(0x002C65), RUNE_C(0x002C66), GC_LL},
+ {RUNE_C(0x002C67), RUNE_C(0x002C67), GC_LU},
+ {RUNE_C(0x002C68), RUNE_C(0x002C68), GC_LL},
+ {RUNE_C(0x002C69), RUNE_C(0x002C69), GC_LU},
+ {RUNE_C(0x002C6A), RUNE_C(0x002C6A), GC_LL},
+ {RUNE_C(0x002C6B), RUNE_C(0x002C6B), GC_LU},
+ {RUNE_C(0x002C6C), RUNE_C(0x002C6C), GC_LL},
+ {RUNE_C(0x002C6D), RUNE_C(0x002C70), GC_LU},
+ {RUNE_C(0x002C71), RUNE_C(0x002C71), GC_LL},
+ {RUNE_C(0x002C72), RUNE_C(0x002C72), GC_LU},
+ {RUNE_C(0x002C73), RUNE_C(0x002C74), GC_LL},
+ {RUNE_C(0x002C75), RUNE_C(0x002C75), GC_LU},
+ {RUNE_C(0x002C76), RUNE_C(0x002C7B), GC_LL},
+ {RUNE_C(0x002C7C), RUNE_C(0x002C7D), GC_LM},
+ {RUNE_C(0x002C7E), RUNE_C(0x002C80), GC_LU},
+ {RUNE_C(0x002C81), RUNE_C(0x002C81), GC_LL},
+ {RUNE_C(0x002C82), RUNE_C(0x002C82), GC_LU},
+ {RUNE_C(0x002C83), RUNE_C(0x002C83), GC_LL},
+ {RUNE_C(0x002C84), RUNE_C(0x002C84), GC_LU},
+ {RUNE_C(0x002C85), RUNE_C(0x002C85), GC_LL},
+ {RUNE_C(0x002C86), RUNE_C(0x002C86), GC_LU},
+ {RUNE_C(0x002C87), RUNE_C(0x002C87), GC_LL},
+ {RUNE_C(0x002C88), RUNE_C(0x002C88), GC_LU},
+ {RUNE_C(0x002C89), RUNE_C(0x002C89), GC_LL},
+ {RUNE_C(0x002C8A), RUNE_C(0x002C8A), GC_LU},
+ {RUNE_C(0x002C8B), RUNE_C(0x002C8B), GC_LL},
+ {RUNE_C(0x002C8C), RUNE_C(0x002C8C), GC_LU},
+ {RUNE_C(0x002C8D), RUNE_C(0x002C8D), GC_LL},
+ {RUNE_C(0x002C8E), RUNE_C(0x002C8E), GC_LU},
+ {RUNE_C(0x002C8F), RUNE_C(0x002C8F), GC_LL},
+ {RUNE_C(0x002C90), RUNE_C(0x002C90), GC_LU},
+ {RUNE_C(0x002C91), RUNE_C(0x002C91), GC_LL},
+ {RUNE_C(0x002C92), RUNE_C(0x002C92), GC_LU},
+ {RUNE_C(0x002C93), RUNE_C(0x002C93), GC_LL},
+ {RUNE_C(0x002C94), RUNE_C(0x002C94), GC_LU},
+ {RUNE_C(0x002C95), RUNE_C(0x002C95), GC_LL},
+ {RUNE_C(0x002C96), RUNE_C(0x002C96), GC_LU},
+ {RUNE_C(0x002C97), RUNE_C(0x002C97), GC_LL},
+ {RUNE_C(0x002C98), RUNE_C(0x002C98), GC_LU},
+ {RUNE_C(0x002C99), RUNE_C(0x002C99), GC_LL},
+ {RUNE_C(0x002C9A), RUNE_C(0x002C9A), GC_LU},
+ {RUNE_C(0x002C9B), RUNE_C(0x002C9B), GC_LL},
+ {RUNE_C(0x002C9C), RUNE_C(0x002C9C), GC_LU},
+ {RUNE_C(0x002C9D), RUNE_C(0x002C9D), GC_LL},
+ {RUNE_C(0x002C9E), RUNE_C(0x002C9E), GC_LU},
+ {RUNE_C(0x002C9F), RUNE_C(0x002C9F), GC_LL},
+ {RUNE_C(0x002CA0), RUNE_C(0x002CA0), GC_LU},
+ {RUNE_C(0x002CA1), RUNE_C(0x002CA1), GC_LL},
+ {RUNE_C(0x002CA2), RUNE_C(0x002CA2), GC_LU},
+ {RUNE_C(0x002CA3), RUNE_C(0x002CA3), GC_LL},
+ {RUNE_C(0x002CA4), RUNE_C(0x002CA4), GC_LU},
+ {RUNE_C(0x002CA5), RUNE_C(0x002CA5), GC_LL},
+ {RUNE_C(0x002CA6), RUNE_C(0x002CA6), GC_LU},
+ {RUNE_C(0x002CA7), RUNE_C(0x002CA7), GC_LL},
+ {RUNE_C(0x002CA8), RUNE_C(0x002CA8), GC_LU},
+ {RUNE_C(0x002CA9), RUNE_C(0x002CA9), GC_LL},
+ {RUNE_C(0x002CAA), RUNE_C(0x002CAA), GC_LU},
+ {RUNE_C(0x002CAB), RUNE_C(0x002CAB), GC_LL},
+ {RUNE_C(0x002CAC), RUNE_C(0x002CAC), GC_LU},
+ {RUNE_C(0x002CAD), RUNE_C(0x002CAD), GC_LL},
+ {RUNE_C(0x002CAE), RUNE_C(0x002CAE), GC_LU},
+ {RUNE_C(0x002CAF), RUNE_C(0x002CAF), GC_LL},
+ {RUNE_C(0x002CB0), RUNE_C(0x002CB0), GC_LU},
+ {RUNE_C(0x002CB1), RUNE_C(0x002CB1), GC_LL},
+ {RUNE_C(0x002CB2), RUNE_C(0x002CB2), GC_LU},
+ {RUNE_C(0x002CB3), RUNE_C(0x002CB3), GC_LL},
+ {RUNE_C(0x002CB4), RUNE_C(0x002CB4), GC_LU},
+ {RUNE_C(0x002CB5), RUNE_C(0x002CB5), GC_LL},
+ {RUNE_C(0x002CB6), RUNE_C(0x002CB6), GC_LU},
+ {RUNE_C(0x002CB7), RUNE_C(0x002CB7), GC_LL},
+ {RUNE_C(0x002CB8), RUNE_C(0x002CB8), GC_LU},
+ {RUNE_C(0x002CB9), RUNE_C(0x002CB9), GC_LL},
+ {RUNE_C(0x002CBA), RUNE_C(0x002CBA), GC_LU},
+ {RUNE_C(0x002CBB), RUNE_C(0x002CBB), GC_LL},
+ {RUNE_C(0x002CBC), RUNE_C(0x002CBC), GC_LU},
+ {RUNE_C(0x002CBD), RUNE_C(0x002CBD), GC_LL},
+ {RUNE_C(0x002CBE), RUNE_C(0x002CBE), GC_LU},
+ {RUNE_C(0x002CBF), RUNE_C(0x002CBF), GC_LL},
+ {RUNE_C(0x002CC0), RUNE_C(0x002CC0), GC_LU},
+ {RUNE_C(0x002CC1), RUNE_C(0x002CC1), GC_LL},
+ {RUNE_C(0x002CC2), RUNE_C(0x002CC2), GC_LU},
+ {RUNE_C(0x002CC3), RUNE_C(0x002CC3), GC_LL},
+ {RUNE_C(0x002CC4), RUNE_C(0x002CC4), GC_LU},
+ {RUNE_C(0x002CC5), RUNE_C(0x002CC5), GC_LL},
+ {RUNE_C(0x002CC6), RUNE_C(0x002CC6), GC_LU},
+ {RUNE_C(0x002CC7), RUNE_C(0x002CC7), GC_LL},
+ {RUNE_C(0x002CC8), RUNE_C(0x002CC8), GC_LU},
+ {RUNE_C(0x002CC9), RUNE_C(0x002CC9), GC_LL},
+ {RUNE_C(0x002CCA), RUNE_C(0x002CCA), GC_LU},
+ {RUNE_C(0x002CCB), RUNE_C(0x002CCB), GC_LL},
+ {RUNE_C(0x002CCC), RUNE_C(0x002CCC), GC_LU},
+ {RUNE_C(0x002CCD), RUNE_C(0x002CCD), GC_LL},
+ {RUNE_C(0x002CCE), RUNE_C(0x002CCE), GC_LU},
+ {RUNE_C(0x002CCF), RUNE_C(0x002CCF), GC_LL},
+ {RUNE_C(0x002CD0), RUNE_C(0x002CD0), GC_LU},
+ {RUNE_C(0x002CD1), RUNE_C(0x002CD1), GC_LL},
+ {RUNE_C(0x002CD2), RUNE_C(0x002CD2), GC_LU},
+ {RUNE_C(0x002CD3), RUNE_C(0x002CD3), GC_LL},
+ {RUNE_C(0x002CD4), RUNE_C(0x002CD4), GC_LU},
+ {RUNE_C(0x002CD5), RUNE_C(0x002CD5), GC_LL},
+ {RUNE_C(0x002CD6), RUNE_C(0x002CD6), GC_LU},
+ {RUNE_C(0x002CD7), RUNE_C(0x002CD7), GC_LL},
+ {RUNE_C(0x002CD8), RUNE_C(0x002CD8), GC_LU},
+ {RUNE_C(0x002CD9), RUNE_C(0x002CD9), GC_LL},
+ {RUNE_C(0x002CDA), RUNE_C(0x002CDA), GC_LU},
+ {RUNE_C(0x002CDB), RUNE_C(0x002CDB), GC_LL},
+ {RUNE_C(0x002CDC), RUNE_C(0x002CDC), GC_LU},
+ {RUNE_C(0x002CDD), RUNE_C(0x002CDD), GC_LL},
+ {RUNE_C(0x002CDE), RUNE_C(0x002CDE), GC_LU},
+ {RUNE_C(0x002CDF), RUNE_C(0x002CDF), GC_LL},
+ {RUNE_C(0x002CE0), RUNE_C(0x002CE0), GC_LU},
+ {RUNE_C(0x002CE1), RUNE_C(0x002CE1), GC_LL},
+ {RUNE_C(0x002CE2), RUNE_C(0x002CE2), GC_LU},
+ {RUNE_C(0x002CE3), RUNE_C(0x002CE4), GC_LL},
+ {RUNE_C(0x002CE5), RUNE_C(0x002CEA), GC_SO},
+ {RUNE_C(0x002CEB), RUNE_C(0x002CEB), GC_LU},
+ {RUNE_C(0x002CEC), RUNE_C(0x002CEC), GC_LL},
+ {RUNE_C(0x002CED), RUNE_C(0x002CED), GC_LU},
+ {RUNE_C(0x002CEE), RUNE_C(0x002CEE), GC_LL},
+ {RUNE_C(0x002CEF), RUNE_C(0x002CF1), GC_MN},
+ {RUNE_C(0x002CF2), RUNE_C(0x002CF2), GC_LU},
+ {RUNE_C(0x002CF3), RUNE_C(0x002CF3), GC_LL},
+ {RUNE_C(0x002CF9), RUNE_C(0x002CFC), GC_PO},
+ {RUNE_C(0x002CFD), RUNE_C(0x002CFD), GC_NO},
+ {RUNE_C(0x002CFE), RUNE_C(0x002CFF), GC_PO},
+ {RUNE_C(0x002D00), RUNE_C(0x002D25), GC_LL},
+ {RUNE_C(0x002D27), RUNE_C(0x002D27), GC_LL},
+ {RUNE_C(0x002D2D), RUNE_C(0x002D2D), GC_LL},
+ {RUNE_C(0x002D30), RUNE_C(0x002D67), GC_LO},
+ {RUNE_C(0x002D6F), RUNE_C(0x002D6F), GC_LM},
+ {RUNE_C(0x002D70), RUNE_C(0x002D70), GC_PO},
+ {RUNE_C(0x002D7F), RUNE_C(0x002D7F), GC_MN},
+ {RUNE_C(0x002D80), RUNE_C(0x002D96), GC_LO},
+ {RUNE_C(0x002DA0), RUNE_C(0x002DA6), GC_LO},
+ {RUNE_C(0x002DA8), RUNE_C(0x002DAE), GC_LO},
+ {RUNE_C(0x002DB0), RUNE_C(0x002DB6), GC_LO},
+ {RUNE_C(0x002DB8), RUNE_C(0x002DBE), GC_LO},
+ {RUNE_C(0x002DC0), RUNE_C(0x002DC6), GC_LO},
+ {RUNE_C(0x002DC8), RUNE_C(0x002DCE), GC_LO},
+ {RUNE_C(0x002DD0), RUNE_C(0x002DD6), GC_LO},
+ {RUNE_C(0x002DD8), RUNE_C(0x002DDE), GC_LO},
+ {RUNE_C(0x002DE0), RUNE_C(0x002DFF), GC_MN},
+ {RUNE_C(0x002E00), RUNE_C(0x002E01), GC_PO},
+ {RUNE_C(0x002E02), RUNE_C(0x002E02), GC_PI},
+ {RUNE_C(0x002E03), RUNE_C(0x002E03), GC_PF},
+ {RUNE_C(0x002E04), RUNE_C(0x002E04), GC_PI},
+ {RUNE_C(0x002E05), RUNE_C(0x002E05), GC_PF},
+ {RUNE_C(0x002E06), RUNE_C(0x002E08), GC_PO},
+ {RUNE_C(0x002E09), RUNE_C(0x002E09), GC_PI},
+ {RUNE_C(0x002E0A), RUNE_C(0x002E0A), GC_PF},
+ {RUNE_C(0x002E0B), RUNE_C(0x002E0B), GC_PO},
+ {RUNE_C(0x002E0C), RUNE_C(0x002E0C), GC_PI},
+ {RUNE_C(0x002E0D), RUNE_C(0x002E0D), GC_PF},
+ {RUNE_C(0x002E0E), RUNE_C(0x002E16), GC_PO},
+ {RUNE_C(0x002E17), RUNE_C(0x002E17), GC_PD},
+ {RUNE_C(0x002E18), RUNE_C(0x002E19), GC_PO},
+ {RUNE_C(0x002E1A), RUNE_C(0x002E1A), GC_PD},
+ {RUNE_C(0x002E1B), RUNE_C(0x002E1B), GC_PO},
+ {RUNE_C(0x002E1C), RUNE_C(0x002E1C), GC_PI},
+ {RUNE_C(0x002E1D), RUNE_C(0x002E1D), GC_PF},
+ {RUNE_C(0x002E1E), RUNE_C(0x002E1F), GC_PO},
+ {RUNE_C(0x002E20), RUNE_C(0x002E20), GC_PI},
+ {RUNE_C(0x002E21), RUNE_C(0x002E21), GC_PF},
+ {RUNE_C(0x002E22), RUNE_C(0x002E22), GC_PS},
+ {RUNE_C(0x002E23), RUNE_C(0x002E23), GC_PE},
+ {RUNE_C(0x002E24), RUNE_C(0x002E24), GC_PS},
+ {RUNE_C(0x002E25), RUNE_C(0x002E25), GC_PE},
+ {RUNE_C(0x002E26), RUNE_C(0x002E26), GC_PS},
+ {RUNE_C(0x002E27), RUNE_C(0x002E27), GC_PE},
+ {RUNE_C(0x002E28), RUNE_C(0x002E28), GC_PS},
+ {RUNE_C(0x002E29), RUNE_C(0x002E29), GC_PE},
+ {RUNE_C(0x002E2A), RUNE_C(0x002E2E), GC_PO},
+ {RUNE_C(0x002E2F), RUNE_C(0x002E2F), GC_LM},
+ {RUNE_C(0x002E30), RUNE_C(0x002E39), GC_PO},
+ {RUNE_C(0x002E3A), RUNE_C(0x002E3B), GC_PD},
+ {RUNE_C(0x002E3C), RUNE_C(0x002E3F), GC_PO},
+ {RUNE_C(0x002E40), RUNE_C(0x002E40), GC_PD},
+ {RUNE_C(0x002E41), RUNE_C(0x002E41), GC_PO},
+ {RUNE_C(0x002E42), RUNE_C(0x002E42), GC_PS},
+ {RUNE_C(0x002E43), RUNE_C(0x002E4F), GC_PO},
+ {RUNE_C(0x002E50), RUNE_C(0x002E51), GC_SO},
+ {RUNE_C(0x002E52), RUNE_C(0x002E54), GC_PO},
+ {RUNE_C(0x002E55), RUNE_C(0x002E55), GC_PS},
+ {RUNE_C(0x002E56), RUNE_C(0x002E56), GC_PE},
+ {RUNE_C(0x002E57), RUNE_C(0x002E57), GC_PS},
+ {RUNE_C(0x002E58), RUNE_C(0x002E58), GC_PE},
+ {RUNE_C(0x002E59), RUNE_C(0x002E59), GC_PS},
+ {RUNE_C(0x002E5A), RUNE_C(0x002E5A), GC_PE},
+ {RUNE_C(0x002E5B), RUNE_C(0x002E5B), GC_PS},
+ {RUNE_C(0x002E5C), RUNE_C(0x002E5C), GC_PE},
+ {RUNE_C(0x002E5D), RUNE_C(0x002E5D), GC_PD},
+ {RUNE_C(0x002E80), RUNE_C(0x002E99), GC_SO},
+ {RUNE_C(0x002E9B), RUNE_C(0x002EF3), GC_SO},
+ {RUNE_C(0x002F00), RUNE_C(0x002FD5), GC_SO},
+ {RUNE_C(0x002FF0), RUNE_C(0x002FFF), GC_SO},
+ {RUNE_C(0x003000), RUNE_C(0x003000), GC_ZS},
+ {RUNE_C(0x003001), RUNE_C(0x003003), GC_PO},
+ {RUNE_C(0x003004), RUNE_C(0x003004), GC_SO},
+ {RUNE_C(0x003005), RUNE_C(0x003005), GC_LM},
+ {RUNE_C(0x003006), RUNE_C(0x003006), GC_LO},
+ {RUNE_C(0x003007), RUNE_C(0x003007), GC_NL},
+ {RUNE_C(0x003008), RUNE_C(0x003008), GC_PS},
+ {RUNE_C(0x003009), RUNE_C(0x003009), GC_PE},
+ {RUNE_C(0x00300A), RUNE_C(0x00300A), GC_PS},
+ {RUNE_C(0x00300B), RUNE_C(0x00300B), GC_PE},
+ {RUNE_C(0x00300C), RUNE_C(0x00300C), GC_PS},
+ {RUNE_C(0x00300D), RUNE_C(0x00300D), GC_PE},
+ {RUNE_C(0x00300E), RUNE_C(0x00300E), GC_PS},
+ {RUNE_C(0x00300F), RUNE_C(0x00300F), GC_PE},
+ {RUNE_C(0x003010), RUNE_C(0x003010), GC_PS},
+ {RUNE_C(0x003011), RUNE_C(0x003011), GC_PE},
+ {RUNE_C(0x003012), RUNE_C(0x003013), GC_SO},
+ {RUNE_C(0x003014), RUNE_C(0x003014), GC_PS},
+ {RUNE_C(0x003015), RUNE_C(0x003015), GC_PE},
+ {RUNE_C(0x003016), RUNE_C(0x003016), GC_PS},
+ {RUNE_C(0x003017), RUNE_C(0x003017), GC_PE},
+ {RUNE_C(0x003018), RUNE_C(0x003018), GC_PS},
+ {RUNE_C(0x003019), RUNE_C(0x003019), GC_PE},
+ {RUNE_C(0x00301A), RUNE_C(0x00301A), GC_PS},
+ {RUNE_C(0x00301B), RUNE_C(0x00301B), GC_PE},
+ {RUNE_C(0x00301C), RUNE_C(0x00301C), GC_PD},
+ {RUNE_C(0x00301D), RUNE_C(0x00301D), GC_PS},
+ {RUNE_C(0x00301E), RUNE_C(0x00301F), GC_PE},
+ {RUNE_C(0x003020), RUNE_C(0x003020), GC_SO},
+ {RUNE_C(0x003021), RUNE_C(0x003029), GC_NL},
+ {RUNE_C(0x00302A), RUNE_C(0x00302D), GC_MN},
+ {RUNE_C(0x00302E), RUNE_C(0x00302F), GC_MC},
+ {RUNE_C(0x003030), RUNE_C(0x003030), GC_PD},
+ {RUNE_C(0x003031), RUNE_C(0x003035), GC_LM},
+ {RUNE_C(0x003036), RUNE_C(0x003037), GC_SO},
+ {RUNE_C(0x003038), RUNE_C(0x00303A), GC_NL},
+ {RUNE_C(0x00303B), RUNE_C(0x00303B), GC_LM},
+ {RUNE_C(0x00303C), RUNE_C(0x00303C), GC_LO},
+ {RUNE_C(0x00303D), RUNE_C(0x00303D), GC_PO},
+ {RUNE_C(0x00303E), RUNE_C(0x00303F), GC_SO},
+ {RUNE_C(0x003041), RUNE_C(0x003096), GC_LO},
+ {RUNE_C(0x003099), RUNE_C(0x00309A), GC_MN},
+ {RUNE_C(0x00309B), RUNE_C(0x00309C), GC_SK},
+ {RUNE_C(0x00309D), RUNE_C(0x00309E), GC_LM},
+ {RUNE_C(0x00309F), RUNE_C(0x00309F), GC_LO},
+ {RUNE_C(0x0030A0), RUNE_C(0x0030A0), GC_PD},
+ {RUNE_C(0x0030A1), RUNE_C(0x0030FA), GC_LO},
+ {RUNE_C(0x0030FB), RUNE_C(0x0030FB), GC_PO},
+ {RUNE_C(0x0030FC), RUNE_C(0x0030FE), GC_LM},
+ {RUNE_C(0x0030FF), RUNE_C(0x0030FF), GC_LO},
+ {RUNE_C(0x003105), RUNE_C(0x00312F), GC_LO},
+ {RUNE_C(0x003131), RUNE_C(0x00318E), GC_LO},
+ {RUNE_C(0x003190), RUNE_C(0x003191), GC_SO},
+ {RUNE_C(0x003192), RUNE_C(0x003195), GC_NO},
+ {RUNE_C(0x003196), RUNE_C(0x00319F), GC_SO},
+ {RUNE_C(0x0031A0), RUNE_C(0x0031BF), GC_LO},
+ {RUNE_C(0x0031C0), RUNE_C(0x0031E3), GC_SO},
+ {RUNE_C(0x0031EF), RUNE_C(0x0031EF), GC_SO},
+ {RUNE_C(0x0031F0), RUNE_C(0x0031FF), GC_LO},
+ {RUNE_C(0x003200), RUNE_C(0x00321E), GC_SO},
+ {RUNE_C(0x003220), RUNE_C(0x003229), GC_NO},
+ {RUNE_C(0x00322A), RUNE_C(0x003247), GC_SO},
+ {RUNE_C(0x003248), RUNE_C(0x00324F), GC_NO},
+ {RUNE_C(0x003250), RUNE_C(0x003250), GC_SO},
+ {RUNE_C(0x003251), RUNE_C(0x00325F), GC_NO},
+ {RUNE_C(0x003260), RUNE_C(0x00327F), GC_SO},
+ {RUNE_C(0x003280), RUNE_C(0x003289), GC_NO},
+ {RUNE_C(0x00328A), RUNE_C(0x0032B0), GC_SO},
+ {RUNE_C(0x0032B1), RUNE_C(0x0032BF), GC_NO},
+ {RUNE_C(0x0032C0), RUNE_C(0x0033FF), GC_SO},
+ {RUNE_C(0x003400), RUNE_C(0x004DBF), GC_LO},
+ {RUNE_C(0x004DC0), RUNE_C(0x004DFF), GC_SO},
+ {RUNE_C(0x004E00), RUNE_C(0x00A014), GC_LO},
+ {RUNE_C(0x00A015), RUNE_C(0x00A015), GC_LM},
+ {RUNE_C(0x00A016), RUNE_C(0x00A48C), GC_LO},
+ {RUNE_C(0x00A490), RUNE_C(0x00A4C6), GC_SO},
+ {RUNE_C(0x00A4D0), RUNE_C(0x00A4F7), GC_LO},
+ {RUNE_C(0x00A4F8), RUNE_C(0x00A4FD), GC_LM},
+ {RUNE_C(0x00A4FE), RUNE_C(0x00A4FF), GC_PO},
+ {RUNE_C(0x00A500), RUNE_C(0x00A60B), GC_LO},
+ {RUNE_C(0x00A60C), RUNE_C(0x00A60C), GC_LM},
+ {RUNE_C(0x00A60D), RUNE_C(0x00A60F), GC_PO},
+ {RUNE_C(0x00A610), RUNE_C(0x00A61F), GC_LO},
+ {RUNE_C(0x00A620), RUNE_C(0x00A629), GC_ND},
+ {RUNE_C(0x00A62A), RUNE_C(0x00A62B), GC_LO},
+ {RUNE_C(0x00A640), RUNE_C(0x00A640), GC_LU},
+ {RUNE_C(0x00A641), RUNE_C(0x00A641), GC_LL},
+ {RUNE_C(0x00A642), RUNE_C(0x00A642), GC_LU},
+ {RUNE_C(0x00A643), RUNE_C(0x00A643), GC_LL},
+ {RUNE_C(0x00A644), RUNE_C(0x00A644), GC_LU},
+ {RUNE_C(0x00A645), RUNE_C(0x00A645), GC_LL},
+ {RUNE_C(0x00A646), RUNE_C(0x00A646), GC_LU},
+ {RUNE_C(0x00A647), RUNE_C(0x00A647), GC_LL},
+ {RUNE_C(0x00A648), RUNE_C(0x00A648), GC_LU},
+ {RUNE_C(0x00A649), RUNE_C(0x00A649), GC_LL},
+ {RUNE_C(0x00A64A), RUNE_C(0x00A64A), GC_LU},
+ {RUNE_C(0x00A64B), RUNE_C(0x00A64B), GC_LL},
+ {RUNE_C(0x00A64C), RUNE_C(0x00A64C), GC_LU},
+ {RUNE_C(0x00A64D), RUNE_C(0x00A64D), GC_LL},
+ {RUNE_C(0x00A64E), RUNE_C(0x00A64E), GC_LU},
+ {RUNE_C(0x00A64F), RUNE_C(0x00A64F), GC_LL},
+ {RUNE_C(0x00A650), RUNE_C(0x00A650), GC_LU},
+ {RUNE_C(0x00A651), RUNE_C(0x00A651), GC_LL},
+ {RUNE_C(0x00A652), RUNE_C(0x00A652), GC_LU},
+ {RUNE_C(0x00A653), RUNE_C(0x00A653), GC_LL},
+ {RUNE_C(0x00A654), RUNE_C(0x00A654), GC_LU},
+ {RUNE_C(0x00A655), RUNE_C(0x00A655), GC_LL},
+ {RUNE_C(0x00A656), RUNE_C(0x00A656), GC_LU},
+ {RUNE_C(0x00A657), RUNE_C(0x00A657), GC_LL},
+ {RUNE_C(0x00A658), RUNE_C(0x00A658), GC_LU},
+ {RUNE_C(0x00A659), RUNE_C(0x00A659), GC_LL},
+ {RUNE_C(0x00A65A), RUNE_C(0x00A65A), GC_LU},
+ {RUNE_C(0x00A65B), RUNE_C(0x00A65B), GC_LL},
+ {RUNE_C(0x00A65C), RUNE_C(0x00A65C), GC_LU},
+ {RUNE_C(0x00A65D), RUNE_C(0x00A65D), GC_LL},
+ {RUNE_C(0x00A65E), RUNE_C(0x00A65E), GC_LU},
+ {RUNE_C(0x00A65F), RUNE_C(0x00A65F), GC_LL},
+ {RUNE_C(0x00A660), RUNE_C(0x00A660), GC_LU},
+ {RUNE_C(0x00A661), RUNE_C(0x00A661), GC_LL},
+ {RUNE_C(0x00A662), RUNE_C(0x00A662), GC_LU},
+ {RUNE_C(0x00A663), RUNE_C(0x00A663), GC_LL},
+ {RUNE_C(0x00A664), RUNE_C(0x00A664), GC_LU},
+ {RUNE_C(0x00A665), RUNE_C(0x00A665), GC_LL},
+ {RUNE_C(0x00A666), RUNE_C(0x00A666), GC_LU},
+ {RUNE_C(0x00A667), RUNE_C(0x00A667), GC_LL},
+ {RUNE_C(0x00A668), RUNE_C(0x00A668), GC_LU},
+ {RUNE_C(0x00A669), RUNE_C(0x00A669), GC_LL},
+ {RUNE_C(0x00A66A), RUNE_C(0x00A66A), GC_LU},
+ {RUNE_C(0x00A66B), RUNE_C(0x00A66B), GC_LL},
+ {RUNE_C(0x00A66C), RUNE_C(0x00A66C), GC_LU},
+ {RUNE_C(0x00A66D), RUNE_C(0x00A66D), GC_LL},
+ {RUNE_C(0x00A66E), RUNE_C(0x00A66E), GC_LO},
+ {RUNE_C(0x00A66F), RUNE_C(0x00A66F), GC_MN},
+ {RUNE_C(0x00A670), RUNE_C(0x00A672), GC_ME},
+ {RUNE_C(0x00A673), RUNE_C(0x00A673), GC_PO},
+ {RUNE_C(0x00A674), RUNE_C(0x00A67D), GC_MN},
+ {RUNE_C(0x00A67E), RUNE_C(0x00A67E), GC_PO},
+ {RUNE_C(0x00A67F), RUNE_C(0x00A67F), GC_LM},
+ {RUNE_C(0x00A680), RUNE_C(0x00A680), GC_LU},
+ {RUNE_C(0x00A681), RUNE_C(0x00A681), GC_LL},
+ {RUNE_C(0x00A682), RUNE_C(0x00A682), GC_LU},
+ {RUNE_C(0x00A683), RUNE_C(0x00A683), GC_LL},
+ {RUNE_C(0x00A684), RUNE_C(0x00A684), GC_LU},
+ {RUNE_C(0x00A685), RUNE_C(0x00A685), GC_LL},
+ {RUNE_C(0x00A686), RUNE_C(0x00A686), GC_LU},
+ {RUNE_C(0x00A687), RUNE_C(0x00A687), GC_LL},
+ {RUNE_C(0x00A688), RUNE_C(0x00A688), GC_LU},
+ {RUNE_C(0x00A689), RUNE_C(0x00A689), GC_LL},
+ {RUNE_C(0x00A68A), RUNE_C(0x00A68A), GC_LU},
+ {RUNE_C(0x00A68B), RUNE_C(0x00A68B), GC_LL},
+ {RUNE_C(0x00A68C), RUNE_C(0x00A68C), GC_LU},
+ {RUNE_C(0x00A68D), RUNE_C(0x00A68D), GC_LL},
+ {RUNE_C(0x00A68E), RUNE_C(0x00A68E), GC_LU},
+ {RUNE_C(0x00A68F), RUNE_C(0x00A68F), GC_LL},
+ {RUNE_C(0x00A690), RUNE_C(0x00A690), GC_LU},
+ {RUNE_C(0x00A691), RUNE_C(0x00A691), GC_LL},
+ {RUNE_C(0x00A692), RUNE_C(0x00A692), GC_LU},
+ {RUNE_C(0x00A693), RUNE_C(0x00A693), GC_LL},
+ {RUNE_C(0x00A694), RUNE_C(0x00A694), GC_LU},
+ {RUNE_C(0x00A695), RUNE_C(0x00A695), GC_LL},
+ {RUNE_C(0x00A696), RUNE_C(0x00A696), GC_LU},
+ {RUNE_C(0x00A697), RUNE_C(0x00A697), GC_LL},
+ {RUNE_C(0x00A698), RUNE_C(0x00A698), GC_LU},
+ {RUNE_C(0x00A699), RUNE_C(0x00A699), GC_LL},
+ {RUNE_C(0x00A69A), RUNE_C(0x00A69A), GC_LU},
+ {RUNE_C(0x00A69B), RUNE_C(0x00A69B), GC_LL},
+ {RUNE_C(0x00A69C), RUNE_C(0x00A69D), GC_LM},
+ {RUNE_C(0x00A69E), RUNE_C(0x00A69F), GC_MN},
+ {RUNE_C(0x00A6A0), RUNE_C(0x00A6E5), GC_LO},
+ {RUNE_C(0x00A6E6), RUNE_C(0x00A6EF), GC_NL},
+ {RUNE_C(0x00A6F0), RUNE_C(0x00A6F1), GC_MN},
+ {RUNE_C(0x00A6F2), RUNE_C(0x00A6F7), GC_PO},
+ {RUNE_C(0x00A700), RUNE_C(0x00A716), GC_SK},
+ {RUNE_C(0x00A717), RUNE_C(0x00A71F), GC_LM},
+ {RUNE_C(0x00A720), RUNE_C(0x00A721), GC_SK},
+ {RUNE_C(0x00A722), RUNE_C(0x00A722), GC_LU},
+ {RUNE_C(0x00A723), RUNE_C(0x00A723), GC_LL},
+ {RUNE_C(0x00A724), RUNE_C(0x00A724), GC_LU},
+ {RUNE_C(0x00A725), RUNE_C(0x00A725), GC_LL},
+ {RUNE_C(0x00A726), RUNE_C(0x00A726), GC_LU},
+ {RUNE_C(0x00A727), RUNE_C(0x00A727), GC_LL},
+ {RUNE_C(0x00A728), RUNE_C(0x00A728), GC_LU},
+ {RUNE_C(0x00A729), RUNE_C(0x00A729), GC_LL},
+ {RUNE_C(0x00A72A), RUNE_C(0x00A72A), GC_LU},
+ {RUNE_C(0x00A72B), RUNE_C(0x00A72B), GC_LL},
+ {RUNE_C(0x00A72C), RUNE_C(0x00A72C), GC_LU},
+ {RUNE_C(0x00A72D), RUNE_C(0x00A72D), GC_LL},
+ {RUNE_C(0x00A72E), RUNE_C(0x00A72E), GC_LU},
+ {RUNE_C(0x00A72F), RUNE_C(0x00A731), GC_LL},
+ {RUNE_C(0x00A732), RUNE_C(0x00A732), GC_LU},
+ {RUNE_C(0x00A733), RUNE_C(0x00A733), GC_LL},
+ {RUNE_C(0x00A734), RUNE_C(0x00A734), GC_LU},
+ {RUNE_C(0x00A735), RUNE_C(0x00A735), GC_LL},
+ {RUNE_C(0x00A736), RUNE_C(0x00A736), GC_LU},
+ {RUNE_C(0x00A737), RUNE_C(0x00A737), GC_LL},
+ {RUNE_C(0x00A738), RUNE_C(0x00A738), GC_LU},
+ {RUNE_C(0x00A739), RUNE_C(0x00A739), GC_LL},
+ {RUNE_C(0x00A73A), RUNE_C(0x00A73A), GC_LU},
+ {RUNE_C(0x00A73B), RUNE_C(0x00A73B), GC_LL},
+ {RUNE_C(0x00A73C), RUNE_C(0x00A73C), GC_LU},
+ {RUNE_C(0x00A73D), RUNE_C(0x00A73D), GC_LL},
+ {RUNE_C(0x00A73E), RUNE_C(0x00A73E), GC_LU},
+ {RUNE_C(0x00A73F), RUNE_C(0x00A73F), GC_LL},
+ {RUNE_C(0x00A740), RUNE_C(0x00A740), GC_LU},
+ {RUNE_C(0x00A741), RUNE_C(0x00A741), GC_LL},
+ {RUNE_C(0x00A742), RUNE_C(0x00A742), GC_LU},
+ {RUNE_C(0x00A743), RUNE_C(0x00A743), GC_LL},
+ {RUNE_C(0x00A744), RUNE_C(0x00A744), GC_LU},
+ {RUNE_C(0x00A745), RUNE_C(0x00A745), GC_LL},
+ {RUNE_C(0x00A746), RUNE_C(0x00A746), GC_LU},
+ {RUNE_C(0x00A747), RUNE_C(0x00A747), GC_LL},
+ {RUNE_C(0x00A748), RUNE_C(0x00A748), GC_LU},
+ {RUNE_C(0x00A749), RUNE_C(0x00A749), GC_LL},
+ {RUNE_C(0x00A74A), RUNE_C(0x00A74A), GC_LU},
+ {RUNE_C(0x00A74B), RUNE_C(0x00A74B), GC_LL},
+ {RUNE_C(0x00A74C), RUNE_C(0x00A74C), GC_LU},
+ {RUNE_C(0x00A74D), RUNE_C(0x00A74D), GC_LL},
+ {RUNE_C(0x00A74E), RUNE_C(0x00A74E), GC_LU},
+ {RUNE_C(0x00A74F), RUNE_C(0x00A74F), GC_LL},
+ {RUNE_C(0x00A750), RUNE_C(0x00A750), GC_LU},
+ {RUNE_C(0x00A751), RUNE_C(0x00A751), GC_LL},
+ {RUNE_C(0x00A752), RUNE_C(0x00A752), GC_LU},
+ {RUNE_C(0x00A753), RUNE_C(0x00A753), GC_LL},
+ {RUNE_C(0x00A754), RUNE_C(0x00A754), GC_LU},
+ {RUNE_C(0x00A755), RUNE_C(0x00A755), GC_LL},
+ {RUNE_C(0x00A756), RUNE_C(0x00A756), GC_LU},
+ {RUNE_C(0x00A757), RUNE_C(0x00A757), GC_LL},
+ {RUNE_C(0x00A758), RUNE_C(0x00A758), GC_LU},
+ {RUNE_C(0x00A759), RUNE_C(0x00A759), GC_LL},
+ {RUNE_C(0x00A75A), RUNE_C(0x00A75A), GC_LU},
+ {RUNE_C(0x00A75B), RUNE_C(0x00A75B), GC_LL},
+ {RUNE_C(0x00A75C), RUNE_C(0x00A75C), GC_LU},
+ {RUNE_C(0x00A75D), RUNE_C(0x00A75D), GC_LL},
+ {RUNE_C(0x00A75E), RUNE_C(0x00A75E), GC_LU},
+ {RUNE_C(0x00A75F), RUNE_C(0x00A75F), GC_LL},
+ {RUNE_C(0x00A760), RUNE_C(0x00A760), GC_LU},
+ {RUNE_C(0x00A761), RUNE_C(0x00A761), GC_LL},
+ {RUNE_C(0x00A762), RUNE_C(0x00A762), GC_LU},
+ {RUNE_C(0x00A763), RUNE_C(0x00A763), GC_LL},
+ {RUNE_C(0x00A764), RUNE_C(0x00A764), GC_LU},
+ {RUNE_C(0x00A765), RUNE_C(0x00A765), GC_LL},
+ {RUNE_C(0x00A766), RUNE_C(0x00A766), GC_LU},
+ {RUNE_C(0x00A767), RUNE_C(0x00A767), GC_LL},
+ {RUNE_C(0x00A768), RUNE_C(0x00A768), GC_LU},
+ {RUNE_C(0x00A769), RUNE_C(0x00A769), GC_LL},
+ {RUNE_C(0x00A76A), RUNE_C(0x00A76A), GC_LU},
+ {RUNE_C(0x00A76B), RUNE_C(0x00A76B), GC_LL},
+ {RUNE_C(0x00A76C), RUNE_C(0x00A76C), GC_LU},
+ {RUNE_C(0x00A76D), RUNE_C(0x00A76D), GC_LL},
+ {RUNE_C(0x00A76E), RUNE_C(0x00A76E), GC_LU},
+ {RUNE_C(0x00A76F), RUNE_C(0x00A76F), GC_LL},
+ {RUNE_C(0x00A770), RUNE_C(0x00A770), GC_LM},
+ {RUNE_C(0x00A771), RUNE_C(0x00A778), GC_LL},
+ {RUNE_C(0x00A779), RUNE_C(0x00A779), GC_LU},
+ {RUNE_C(0x00A77A), RUNE_C(0x00A77A), GC_LL},
+ {RUNE_C(0x00A77B), RUNE_C(0x00A77B), GC_LU},
+ {RUNE_C(0x00A77C), RUNE_C(0x00A77C), GC_LL},
+ {RUNE_C(0x00A77D), RUNE_C(0x00A77E), GC_LU},
+ {RUNE_C(0x00A77F), RUNE_C(0x00A77F), GC_LL},
+ {RUNE_C(0x00A780), RUNE_C(0x00A780), GC_LU},
+ {RUNE_C(0x00A781), RUNE_C(0x00A781), GC_LL},
+ {RUNE_C(0x00A782), RUNE_C(0x00A782), GC_LU},
+ {RUNE_C(0x00A783), RUNE_C(0x00A783), GC_LL},
+ {RUNE_C(0x00A784), RUNE_C(0x00A784), GC_LU},
+ {RUNE_C(0x00A785), RUNE_C(0x00A785), GC_LL},
+ {RUNE_C(0x00A786), RUNE_C(0x00A786), GC_LU},
+ {RUNE_C(0x00A787), RUNE_C(0x00A787), GC_LL},
+ {RUNE_C(0x00A788), RUNE_C(0x00A788), GC_LM},
+ {RUNE_C(0x00A789), RUNE_C(0x00A78A), GC_SK},
+ {RUNE_C(0x00A78B), RUNE_C(0x00A78B), GC_LU},
+ {RUNE_C(0x00A78C), RUNE_C(0x00A78C), GC_LL},
+ {RUNE_C(0x00A78D), RUNE_C(0x00A78D), GC_LU},
+ {RUNE_C(0x00A78E), RUNE_C(0x00A78E), GC_LL},
+ {RUNE_C(0x00A78F), RUNE_C(0x00A78F), GC_LO},
+ {RUNE_C(0x00A790), RUNE_C(0x00A790), GC_LU},
+ {RUNE_C(0x00A791), RUNE_C(0x00A791), GC_LL},
+ {RUNE_C(0x00A792), RUNE_C(0x00A792), GC_LU},
+ {RUNE_C(0x00A793), RUNE_C(0x00A795), GC_LL},
+ {RUNE_C(0x00A796), RUNE_C(0x00A796), GC_LU},
+ {RUNE_C(0x00A797), RUNE_C(0x00A797), GC_LL},
+ {RUNE_C(0x00A798), RUNE_C(0x00A798), GC_LU},
+ {RUNE_C(0x00A799), RUNE_C(0x00A799), GC_LL},
+ {RUNE_C(0x00A79A), RUNE_C(0x00A79A), GC_LU},
+ {RUNE_C(0x00A79B), RUNE_C(0x00A79B), GC_LL},
+ {RUNE_C(0x00A79C), RUNE_C(0x00A79C), GC_LU},
+ {RUNE_C(0x00A79D), RUNE_C(0x00A79D), GC_LL},
+ {RUNE_C(0x00A79E), RUNE_C(0x00A79E), GC_LU},
+ {RUNE_C(0x00A79F), RUNE_C(0x00A79F), GC_LL},
+ {RUNE_C(0x00A7A0), RUNE_C(0x00A7A0), GC_LU},
+ {RUNE_C(0x00A7A1), RUNE_C(0x00A7A1), GC_LL},
+ {RUNE_C(0x00A7A2), RUNE_C(0x00A7A2), GC_LU},
+ {RUNE_C(0x00A7A3), RUNE_C(0x00A7A3), GC_LL},
+ {RUNE_C(0x00A7A4), RUNE_C(0x00A7A4), GC_LU},
+ {RUNE_C(0x00A7A5), RUNE_C(0x00A7A5), GC_LL},
+ {RUNE_C(0x00A7A6), RUNE_C(0x00A7A6), GC_LU},
+ {RUNE_C(0x00A7A7), RUNE_C(0x00A7A7), GC_LL},
+ {RUNE_C(0x00A7A8), RUNE_C(0x00A7A8), GC_LU},
+ {RUNE_C(0x00A7A9), RUNE_C(0x00A7A9), GC_LL},
+ {RUNE_C(0x00A7AA), RUNE_C(0x00A7AE), GC_LU},
+ {RUNE_C(0x00A7AF), RUNE_C(0x00A7AF), GC_LL},
+ {RUNE_C(0x00A7B0), RUNE_C(0x00A7B4), GC_LU},
+ {RUNE_C(0x00A7B5), RUNE_C(0x00A7B5), GC_LL},
+ {RUNE_C(0x00A7B6), RUNE_C(0x00A7B6), GC_LU},
+ {RUNE_C(0x00A7B7), RUNE_C(0x00A7B7), GC_LL},
+ {RUNE_C(0x00A7B8), RUNE_C(0x00A7B8), GC_LU},
+ {RUNE_C(0x00A7B9), RUNE_C(0x00A7B9), GC_LL},
+ {RUNE_C(0x00A7BA), RUNE_C(0x00A7BA), GC_LU},
+ {RUNE_C(0x00A7BB), RUNE_C(0x00A7BB), GC_LL},
+ {RUNE_C(0x00A7BC), RUNE_C(0x00A7BC), GC_LU},
+ {RUNE_C(0x00A7BD), RUNE_C(0x00A7BD), GC_LL},
+ {RUNE_C(0x00A7BE), RUNE_C(0x00A7BE), GC_LU},
+ {RUNE_C(0x00A7BF), RUNE_C(0x00A7BF), GC_LL},
+ {RUNE_C(0x00A7C0), RUNE_C(0x00A7C0), GC_LU},
+ {RUNE_C(0x00A7C1), RUNE_C(0x00A7C1), GC_LL},
+ {RUNE_C(0x00A7C2), RUNE_C(0x00A7C2), GC_LU},
+ {RUNE_C(0x00A7C3), RUNE_C(0x00A7C3), GC_LL},
+ {RUNE_C(0x00A7C4), RUNE_C(0x00A7C7), GC_LU},
+ {RUNE_C(0x00A7C8), RUNE_C(0x00A7C8), GC_LL},
+ {RUNE_C(0x00A7C9), RUNE_C(0x00A7C9), GC_LU},
+ {RUNE_C(0x00A7CA), RUNE_C(0x00A7CA), GC_LL},
+ {RUNE_C(0x00A7D0), RUNE_C(0x00A7D0), GC_LU},
+ {RUNE_C(0x00A7D1), RUNE_C(0x00A7D1), GC_LL},
+ {RUNE_C(0x00A7D3), RUNE_C(0x00A7D3), GC_LL},
+ {RUNE_C(0x00A7D5), RUNE_C(0x00A7D5), GC_LL},
+ {RUNE_C(0x00A7D6), RUNE_C(0x00A7D6), GC_LU},
+ {RUNE_C(0x00A7D7), RUNE_C(0x00A7D7), GC_LL},
+ {RUNE_C(0x00A7D8), RUNE_C(0x00A7D8), GC_LU},
+ {RUNE_C(0x00A7D9), RUNE_C(0x00A7D9), GC_LL},
+ {RUNE_C(0x00A7F2), RUNE_C(0x00A7F4), GC_LM},
+ {RUNE_C(0x00A7F5), RUNE_C(0x00A7F5), GC_LU},
+ {RUNE_C(0x00A7F6), RUNE_C(0x00A7F6), GC_LL},
+ {RUNE_C(0x00A7F7), RUNE_C(0x00A7F7), GC_LO},
+ {RUNE_C(0x00A7F8), RUNE_C(0x00A7F9), GC_LM},
+ {RUNE_C(0x00A7FA), RUNE_C(0x00A7FA), GC_LL},
+ {RUNE_C(0x00A7FB), RUNE_C(0x00A801), GC_LO},
+ {RUNE_C(0x00A802), RUNE_C(0x00A802), GC_MN},
+ {RUNE_C(0x00A803), RUNE_C(0x00A805), GC_LO},
+ {RUNE_C(0x00A806), RUNE_C(0x00A806), GC_MN},
+ {RUNE_C(0x00A807), RUNE_C(0x00A80A), GC_LO},
+ {RUNE_C(0x00A80B), RUNE_C(0x00A80B), GC_MN},
+ {RUNE_C(0x00A80C), RUNE_C(0x00A822), GC_LO},
+ {RUNE_C(0x00A823), RUNE_C(0x00A824), GC_MC},
+ {RUNE_C(0x00A825), RUNE_C(0x00A826), GC_MN},
+ {RUNE_C(0x00A827), RUNE_C(0x00A827), GC_MC},
+ {RUNE_C(0x00A828), RUNE_C(0x00A82B), GC_SO},
+ {RUNE_C(0x00A82C), RUNE_C(0x00A82C), GC_MN},
+ {RUNE_C(0x00A830), RUNE_C(0x00A835), GC_NO},
+ {RUNE_C(0x00A836), RUNE_C(0x00A837), GC_SO},
+ {RUNE_C(0x00A838), RUNE_C(0x00A838), GC_SC},
+ {RUNE_C(0x00A839), RUNE_C(0x00A839), GC_SO},
+ {RUNE_C(0x00A840), RUNE_C(0x00A873), GC_LO},
+ {RUNE_C(0x00A874), RUNE_C(0x00A877), GC_PO},
+ {RUNE_C(0x00A880), RUNE_C(0x00A881), GC_MC},
+ {RUNE_C(0x00A882), RUNE_C(0x00A8B3), GC_LO},
+ {RUNE_C(0x00A8B4), RUNE_C(0x00A8C3), GC_MC},
+ {RUNE_C(0x00A8C4), RUNE_C(0x00A8C5), GC_MN},
+ {RUNE_C(0x00A8CE), RUNE_C(0x00A8CF), GC_PO},
+ {RUNE_C(0x00A8D0), RUNE_C(0x00A8D9), GC_ND},
+ {RUNE_C(0x00A8E0), RUNE_C(0x00A8F1), GC_MN},
+ {RUNE_C(0x00A8F2), RUNE_C(0x00A8F7), GC_LO},
+ {RUNE_C(0x00A8F8), RUNE_C(0x00A8FA), GC_PO},
+ {RUNE_C(0x00A8FB), RUNE_C(0x00A8FB), GC_LO},
+ {RUNE_C(0x00A8FC), RUNE_C(0x00A8FC), GC_PO},
+ {RUNE_C(0x00A8FD), RUNE_C(0x00A8FE), GC_LO},
+ {RUNE_C(0x00A8FF), RUNE_C(0x00A8FF), GC_MN},
+ {RUNE_C(0x00A900), RUNE_C(0x00A909), GC_ND},
+ {RUNE_C(0x00A90A), RUNE_C(0x00A925), GC_LO},
+ {RUNE_C(0x00A926), RUNE_C(0x00A92D), GC_MN},
+ {RUNE_C(0x00A92E), RUNE_C(0x00A92F), GC_PO},
+ {RUNE_C(0x00A930), RUNE_C(0x00A946), GC_LO},
+ {RUNE_C(0x00A947), RUNE_C(0x00A951), GC_MN},
+ {RUNE_C(0x00A952), RUNE_C(0x00A953), GC_MC},
+ {RUNE_C(0x00A95F), RUNE_C(0x00A95F), GC_PO},
+ {RUNE_C(0x00A960), RUNE_C(0x00A97C), GC_LO},
+ {RUNE_C(0x00A980), RUNE_C(0x00A982), GC_MN},
+ {RUNE_C(0x00A983), RUNE_C(0x00A983), GC_MC},
+ {RUNE_C(0x00A984), RUNE_C(0x00A9B2), GC_LO},
+ {RUNE_C(0x00A9B3), RUNE_C(0x00A9B3), GC_MN},
+ {RUNE_C(0x00A9B4), RUNE_C(0x00A9B5), GC_MC},
+ {RUNE_C(0x00A9B6), RUNE_C(0x00A9B9), GC_MN},
+ {RUNE_C(0x00A9BA), RUNE_C(0x00A9BB), GC_MC},
+ {RUNE_C(0x00A9BC), RUNE_C(0x00A9BD), GC_MN},
+ {RUNE_C(0x00A9BE), RUNE_C(0x00A9C0), GC_MC},
+ {RUNE_C(0x00A9C1), RUNE_C(0x00A9CD), GC_PO},
+ {RUNE_C(0x00A9CF), RUNE_C(0x00A9CF), GC_LM},
+ {RUNE_C(0x00A9D0), RUNE_C(0x00A9D9), GC_ND},
+ {RUNE_C(0x00A9DE), RUNE_C(0x00A9DF), GC_PO},
+ {RUNE_C(0x00A9E0), RUNE_C(0x00A9E4), GC_LO},
+ {RUNE_C(0x00A9E5), RUNE_C(0x00A9E5), GC_MN},
+ {RUNE_C(0x00A9E6), RUNE_C(0x00A9E6), GC_LM},
+ {RUNE_C(0x00A9E7), RUNE_C(0x00A9EF), GC_LO},
+ {RUNE_C(0x00A9F0), RUNE_C(0x00A9F9), GC_ND},
+ {RUNE_C(0x00A9FA), RUNE_C(0x00A9FE), GC_LO},
+ {RUNE_C(0x00AA00), RUNE_C(0x00AA28), GC_LO},
+ {RUNE_C(0x00AA29), RUNE_C(0x00AA2E), GC_MN},
+ {RUNE_C(0x00AA2F), RUNE_C(0x00AA30), GC_MC},
+ {RUNE_C(0x00AA31), RUNE_C(0x00AA32), GC_MN},
+ {RUNE_C(0x00AA33), RUNE_C(0x00AA34), GC_MC},
+ {RUNE_C(0x00AA35), RUNE_C(0x00AA36), GC_MN},
+ {RUNE_C(0x00AA40), RUNE_C(0x00AA42), GC_LO},
+ {RUNE_C(0x00AA43), RUNE_C(0x00AA43), GC_MN},
+ {RUNE_C(0x00AA44), RUNE_C(0x00AA4B), GC_LO},
+ {RUNE_C(0x00AA4C), RUNE_C(0x00AA4C), GC_MN},
+ {RUNE_C(0x00AA4D), RUNE_C(0x00AA4D), GC_MC},
+ {RUNE_C(0x00AA50), RUNE_C(0x00AA59), GC_ND},
+ {RUNE_C(0x00AA5C), RUNE_C(0x00AA5F), GC_PO},
+ {RUNE_C(0x00AA60), RUNE_C(0x00AA6F), GC_LO},
+ {RUNE_C(0x00AA70), RUNE_C(0x00AA70), GC_LM},
+ {RUNE_C(0x00AA71), RUNE_C(0x00AA76), GC_LO},
+ {RUNE_C(0x00AA77), RUNE_C(0x00AA79), GC_SO},
+ {RUNE_C(0x00AA7A), RUNE_C(0x00AA7A), GC_LO},
+ {RUNE_C(0x00AA7B), RUNE_C(0x00AA7B), GC_MC},
+ {RUNE_C(0x00AA7C), RUNE_C(0x00AA7C), GC_MN},
+ {RUNE_C(0x00AA7D), RUNE_C(0x00AA7D), GC_MC},
+ {RUNE_C(0x00AA7E), RUNE_C(0x00AAAF), GC_LO},
+ {RUNE_C(0x00AAB0), RUNE_C(0x00AAB0), GC_MN},
+ {RUNE_C(0x00AAB1), RUNE_C(0x00AAB1), GC_LO},
+ {RUNE_C(0x00AAB2), RUNE_C(0x00AAB4), GC_MN},
+ {RUNE_C(0x00AAB5), RUNE_C(0x00AAB6), GC_LO},
+ {RUNE_C(0x00AAB7), RUNE_C(0x00AAB8), GC_MN},
+ {RUNE_C(0x00AAB9), RUNE_C(0x00AABD), GC_LO},
+ {RUNE_C(0x00AABE), RUNE_C(0x00AABF), GC_MN},
+ {RUNE_C(0x00AAC0), RUNE_C(0x00AAC0), GC_LO},
+ {RUNE_C(0x00AAC1), RUNE_C(0x00AAC1), GC_MN},
+ {RUNE_C(0x00AAC2), RUNE_C(0x00AAC2), GC_LO},
+ {RUNE_C(0x00AADB), RUNE_C(0x00AADC), GC_LO},
+ {RUNE_C(0x00AADD), RUNE_C(0x00AADD), GC_LM},
+ {RUNE_C(0x00AADE), RUNE_C(0x00AADF), GC_PO},
+ {RUNE_C(0x00AAE0), RUNE_C(0x00AAEA), GC_LO},
+ {RUNE_C(0x00AAEB), RUNE_C(0x00AAEB), GC_MC},
+ {RUNE_C(0x00AAEC), RUNE_C(0x00AAED), GC_MN},
+ {RUNE_C(0x00AAEE), RUNE_C(0x00AAEF), GC_MC},
+ {RUNE_C(0x00AAF0), RUNE_C(0x00AAF1), GC_PO},
+ {RUNE_C(0x00AAF2), RUNE_C(0x00AAF2), GC_LO},
+ {RUNE_C(0x00AAF3), RUNE_C(0x00AAF4), GC_LM},
+ {RUNE_C(0x00AAF5), RUNE_C(0x00AAF5), GC_MC},
+ {RUNE_C(0x00AAF6), RUNE_C(0x00AAF6), GC_MN},
+ {RUNE_C(0x00AB01), RUNE_C(0x00AB06), GC_LO},
+ {RUNE_C(0x00AB09), RUNE_C(0x00AB0E), GC_LO},
+ {RUNE_C(0x00AB11), RUNE_C(0x00AB16), GC_LO},
+ {RUNE_C(0x00AB20), RUNE_C(0x00AB26), GC_LO},
+ {RUNE_C(0x00AB28), RUNE_C(0x00AB2E), GC_LO},
+ {RUNE_C(0x00AB30), RUNE_C(0x00AB5A), GC_LL},
+ {RUNE_C(0x00AB5B), RUNE_C(0x00AB5B), GC_SK},
+ {RUNE_C(0x00AB5C), RUNE_C(0x00AB5F), GC_LM},
+ {RUNE_C(0x00AB60), RUNE_C(0x00AB68), GC_LL},
+ {RUNE_C(0x00AB69), RUNE_C(0x00AB69), GC_LM},
+ {RUNE_C(0x00AB6A), RUNE_C(0x00AB6B), GC_SK},
+ {RUNE_C(0x00AB70), RUNE_C(0x00ABBF), GC_LL},
+ {RUNE_C(0x00ABC0), RUNE_C(0x00ABE2), GC_LO},
+ {RUNE_C(0x00ABE3), RUNE_C(0x00ABE4), GC_MC},
+ {RUNE_C(0x00ABE5), RUNE_C(0x00ABE5), GC_MN},
+ {RUNE_C(0x00ABE6), RUNE_C(0x00ABE7), GC_MC},
+ {RUNE_C(0x00ABE8), RUNE_C(0x00ABE8), GC_MN},
+ {RUNE_C(0x00ABE9), RUNE_C(0x00ABEA), GC_MC},
+ {RUNE_C(0x00ABEB), RUNE_C(0x00ABEB), GC_PO},
+ {RUNE_C(0x00ABEC), RUNE_C(0x00ABEC), GC_MC},
+ {RUNE_C(0x00ABED), RUNE_C(0x00ABED), GC_MN},
+ {RUNE_C(0x00ABF0), RUNE_C(0x00ABF9), GC_ND},
+ {RUNE_C(0x00AC00), RUNE_C(0x00D7A3), GC_LO},
+ {RUNE_C(0x00D7B0), RUNE_C(0x00D7C6), GC_LO},
+ {RUNE_C(0x00D7CB), RUNE_C(0x00D7FB), GC_LO},
+ {RUNE_C(0x00D800), RUNE_C(0x00DFFF), GC_CS},
+ {RUNE_C(0x00E000), RUNE_C(0x00F8FF), GC_CO},
+ {RUNE_C(0x00F900), RUNE_C(0x00FA6D), GC_LO},
+ {RUNE_C(0x00FA70), RUNE_C(0x00FAD9), GC_LO},
+ {RUNE_C(0x00FB00), RUNE_C(0x00FB06), GC_LL},
+ {RUNE_C(0x00FB13), RUNE_C(0x00FB17), GC_LL},
+ {RUNE_C(0x00FB1D), RUNE_C(0x00FB1D), GC_LO},
+ {RUNE_C(0x00FB1E), RUNE_C(0x00FB1E), GC_MN},
+ {RUNE_C(0x00FB1F), RUNE_C(0x00FB28), GC_LO},
+ {RUNE_C(0x00FB29), RUNE_C(0x00FB29), GC_SM},
+ {RUNE_C(0x00FB2A), RUNE_C(0x00FB36), GC_LO},
+ {RUNE_C(0x00FB38), RUNE_C(0x00FB3C), GC_LO},
+ {RUNE_C(0x00FB3E), RUNE_C(0x00FB3E), GC_LO},
+ {RUNE_C(0x00FB40), RUNE_C(0x00FB41), GC_LO},
+ {RUNE_C(0x00FB43), RUNE_C(0x00FB44), GC_LO},
+ {RUNE_C(0x00FB46), RUNE_C(0x00FBB1), GC_LO},
+ {RUNE_C(0x00FBB2), RUNE_C(0x00FBC2), GC_SK},
+ {RUNE_C(0x00FBD3), RUNE_C(0x00FD3D), GC_LO},
+ {RUNE_C(0x00FD3E), RUNE_C(0x00FD3E), GC_PE},
+ {RUNE_C(0x00FD3F), RUNE_C(0x00FD3F), GC_PS},
+ {RUNE_C(0x00FD40), RUNE_C(0x00FD4F), GC_SO},
+ {RUNE_C(0x00FD50), RUNE_C(0x00FD8F), GC_LO},
+ {RUNE_C(0x00FD92), RUNE_C(0x00FDC7), GC_LO},
+ {RUNE_C(0x00FDCF), RUNE_C(0x00FDCF), GC_SO},
+ {RUNE_C(0x00FDF0), RUNE_C(0x00FDFB), GC_LO},
+ {RUNE_C(0x00FDFC), RUNE_C(0x00FDFC), GC_SC},
+ {RUNE_C(0x00FDFD), RUNE_C(0x00FDFF), GC_SO},
+ {RUNE_C(0x00FE00), RUNE_C(0x00FE0F), GC_MN},
+ {RUNE_C(0x00FE10), RUNE_C(0x00FE16), GC_PO},
+ {RUNE_C(0x00FE17), RUNE_C(0x00FE17), GC_PS},
+ {RUNE_C(0x00FE18), RUNE_C(0x00FE18), GC_PE},
+ {RUNE_C(0x00FE19), RUNE_C(0x00FE19), GC_PO},
+ {RUNE_C(0x00FE20), RUNE_C(0x00FE2F), GC_MN},
+ {RUNE_C(0x00FE30), RUNE_C(0x00FE30), GC_PO},
+ {RUNE_C(0x00FE31), RUNE_C(0x00FE32), GC_PD},
+ {RUNE_C(0x00FE33), RUNE_C(0x00FE34), GC_PC},
+ {RUNE_C(0x00FE35), RUNE_C(0x00FE35), GC_PS},
+ {RUNE_C(0x00FE36), RUNE_C(0x00FE36), GC_PE},
+ {RUNE_C(0x00FE37), RUNE_C(0x00FE37), GC_PS},
+ {RUNE_C(0x00FE38), RUNE_C(0x00FE38), GC_PE},
+ {RUNE_C(0x00FE39), RUNE_C(0x00FE39), GC_PS},
+ {RUNE_C(0x00FE3A), RUNE_C(0x00FE3A), GC_PE},
+ {RUNE_C(0x00FE3B), RUNE_C(0x00FE3B), GC_PS},
+ {RUNE_C(0x00FE3C), RUNE_C(0x00FE3C), GC_PE},
+ {RUNE_C(0x00FE3D), RUNE_C(0x00FE3D), GC_PS},
+ {RUNE_C(0x00FE3E), RUNE_C(0x00FE3E), GC_PE},
+ {RUNE_C(0x00FE3F), RUNE_C(0x00FE3F), GC_PS},
+ {RUNE_C(0x00FE40), RUNE_C(0x00FE40), GC_PE},
+ {RUNE_C(0x00FE41), RUNE_C(0x00FE41), GC_PS},
+ {RUNE_C(0x00FE42), RUNE_C(0x00FE42), GC_PE},
+ {RUNE_C(0x00FE43), RUNE_C(0x00FE43), GC_PS},
+ {RUNE_C(0x00FE44), RUNE_C(0x00FE44), GC_PE},
+ {RUNE_C(0x00FE45), RUNE_C(0x00FE46), GC_PO},
+ {RUNE_C(0x00FE47), RUNE_C(0x00FE47), GC_PS},
+ {RUNE_C(0x00FE48), RUNE_C(0x00FE48), GC_PE},
+ {RUNE_C(0x00FE49), RUNE_C(0x00FE4C), GC_PO},
+ {RUNE_C(0x00FE4D), RUNE_C(0x00FE4F), GC_PC},
+ {RUNE_C(0x00FE50), RUNE_C(0x00FE52), GC_PO},
+ {RUNE_C(0x00FE54), RUNE_C(0x00FE57), GC_PO},
+ {RUNE_C(0x00FE58), RUNE_C(0x00FE58), GC_PD},
+ {RUNE_C(0x00FE59), RUNE_C(0x00FE59), GC_PS},
+ {RUNE_C(0x00FE5A), RUNE_C(0x00FE5A), GC_PE},
+ {RUNE_C(0x00FE5B), RUNE_C(0x00FE5B), GC_PS},
+ {RUNE_C(0x00FE5C), RUNE_C(0x00FE5C), GC_PE},
+ {RUNE_C(0x00FE5D), RUNE_C(0x00FE5D), GC_PS},
+ {RUNE_C(0x00FE5E), RUNE_C(0x00FE5E), GC_PE},
+ {RUNE_C(0x00FE5F), RUNE_C(0x00FE61), GC_PO},
+ {RUNE_C(0x00FE62), RUNE_C(0x00FE62), GC_SM},
+ {RUNE_C(0x00FE63), RUNE_C(0x00FE63), GC_PD},
+ {RUNE_C(0x00FE64), RUNE_C(0x00FE66), GC_SM},
+ {RUNE_C(0x00FE68), RUNE_C(0x00FE68), GC_PO},
+ {RUNE_C(0x00FE69), RUNE_C(0x00FE69), GC_SC},
+ {RUNE_C(0x00FE6A), RUNE_C(0x00FE6B), GC_PO},
+ {RUNE_C(0x00FE70), RUNE_C(0x00FE74), GC_LO},
+ {RUNE_C(0x00FE76), RUNE_C(0x00FEFC), GC_LO},
+ {RUNE_C(0x00FEFF), RUNE_C(0x00FEFF), GC_CF},
+ {RUNE_C(0x00FF01), RUNE_C(0x00FF03), GC_PO},
+ {RUNE_C(0x00FF04), RUNE_C(0x00FF04), GC_SC},
+ {RUNE_C(0x00FF05), RUNE_C(0x00FF07), GC_PO},
+ {RUNE_C(0x00FF08), RUNE_C(0x00FF08), GC_PS},
+ {RUNE_C(0x00FF09), RUNE_C(0x00FF09), GC_PE},
+ {RUNE_C(0x00FF0A), RUNE_C(0x00FF0A), GC_PO},
+ {RUNE_C(0x00FF0B), RUNE_C(0x00FF0B), GC_SM},
+ {RUNE_C(0x00FF0C), RUNE_C(0x00FF0C), GC_PO},
+ {RUNE_C(0x00FF0D), RUNE_C(0x00FF0D), GC_PD},
+ {RUNE_C(0x00FF0E), RUNE_C(0x00FF0F), GC_PO},
+ {RUNE_C(0x00FF10), RUNE_C(0x00FF19), GC_ND},
+ {RUNE_C(0x00FF1A), RUNE_C(0x00FF1B), GC_PO},
+ {RUNE_C(0x00FF1C), RUNE_C(0x00FF1E), GC_SM},
+ {RUNE_C(0x00FF1F), RUNE_C(0x00FF20), GC_PO},
+ {RUNE_C(0x00FF21), RUNE_C(0x00FF3A), GC_LU},
+ {RUNE_C(0x00FF3B), RUNE_C(0x00FF3B), GC_PS},
+ {RUNE_C(0x00FF3C), RUNE_C(0x00FF3C), GC_PO},
+ {RUNE_C(0x00FF3D), RUNE_C(0x00FF3D), GC_PE},
+ {RUNE_C(0x00FF3E), RUNE_C(0x00FF3E), GC_SK},
+ {RUNE_C(0x00FF3F), RUNE_C(0x00FF3F), GC_PC},
+ {RUNE_C(0x00FF40), RUNE_C(0x00FF40), GC_SK},
+ {RUNE_C(0x00FF41), RUNE_C(0x00FF5A), GC_LL},
+ {RUNE_C(0x00FF5B), RUNE_C(0x00FF5B), GC_PS},
+ {RUNE_C(0x00FF5C), RUNE_C(0x00FF5C), GC_SM},
+ {RUNE_C(0x00FF5D), RUNE_C(0x00FF5D), GC_PE},
+ {RUNE_C(0x00FF5E), RUNE_C(0x00FF5E), GC_SM},
+ {RUNE_C(0x00FF5F), RUNE_C(0x00FF5F), GC_PS},
+ {RUNE_C(0x00FF60), RUNE_C(0x00FF60), GC_PE},
+ {RUNE_C(0x00FF61), RUNE_C(0x00FF61), GC_PO},
+ {RUNE_C(0x00FF62), RUNE_C(0x00FF62), GC_PS},
+ {RUNE_C(0x00FF63), RUNE_C(0x00FF63), GC_PE},
+ {RUNE_C(0x00FF64), RUNE_C(0x00FF65), GC_PO},
+ {RUNE_C(0x00FF66), RUNE_C(0x00FF6F), GC_LO},
+ {RUNE_C(0x00FF70), RUNE_C(0x00FF70), GC_LM},
+ {RUNE_C(0x00FF71), RUNE_C(0x00FF9D), GC_LO},
+ {RUNE_C(0x00FF9E), RUNE_C(0x00FF9F), GC_LM},
+ {RUNE_C(0x00FFA0), RUNE_C(0x00FFBE), GC_LO},
+ {RUNE_C(0x00FFC2), RUNE_C(0x00FFC7), GC_LO},
+ {RUNE_C(0x00FFCA), RUNE_C(0x00FFCF), GC_LO},
+ {RUNE_C(0x00FFD2), RUNE_C(0x00FFD7), GC_LO},
+ {RUNE_C(0x00FFDA), RUNE_C(0x00FFDC), GC_LO},
+ {RUNE_C(0x00FFE0), RUNE_C(0x00FFE1), GC_SC},
+ {RUNE_C(0x00FFE2), RUNE_C(0x00FFE2), GC_SM},
+ {RUNE_C(0x00FFE3), RUNE_C(0x00FFE3), GC_SK},
+ {RUNE_C(0x00FFE4), RUNE_C(0x00FFE4), GC_SO},
+ {RUNE_C(0x00FFE5), RUNE_C(0x00FFE6), GC_SC},
+ {RUNE_C(0x00FFE8), RUNE_C(0x00FFE8), GC_SO},
+ {RUNE_C(0x00FFE9), RUNE_C(0x00FFEC), GC_SM},
+ {RUNE_C(0x00FFED), RUNE_C(0x00FFEE), GC_SO},
+ {RUNE_C(0x00FFF9), RUNE_C(0x00FFFB), GC_CF},
+ {RUNE_C(0x00FFFC), RUNE_C(0x00FFFD), GC_SO},
+ {RUNE_C(0x010000), RUNE_C(0x01000B), GC_LO},
+ {RUNE_C(0x01000D), RUNE_C(0x010026), GC_LO},
+ {RUNE_C(0x010028), RUNE_C(0x01003A), GC_LO},
+ {RUNE_C(0x01003C), RUNE_C(0x01003D), GC_LO},
+ {RUNE_C(0x01003F), RUNE_C(0x01004D), GC_LO},
+ {RUNE_C(0x010050), RUNE_C(0x01005D), GC_LO},
+ {RUNE_C(0x010080), RUNE_C(0x0100FA), GC_LO},
+ {RUNE_C(0x010100), RUNE_C(0x010102), GC_PO},
+ {RUNE_C(0x010107), RUNE_C(0x010133), GC_NO},
+ {RUNE_C(0x010137), RUNE_C(0x01013F), GC_SO},
+ {RUNE_C(0x010140), RUNE_C(0x010174), GC_NL},
+ {RUNE_C(0x010175), RUNE_C(0x010178), GC_NO},
+ {RUNE_C(0x010179), RUNE_C(0x010189), GC_SO},
+ {RUNE_C(0x01018A), RUNE_C(0x01018B), GC_NO},
+ {RUNE_C(0x01018C), RUNE_C(0x01018E), GC_SO},
+ {RUNE_C(0x010190), RUNE_C(0x01019C), GC_SO},
+ {RUNE_C(0x0101A0), RUNE_C(0x0101A0), GC_SO},
+ {RUNE_C(0x0101D0), RUNE_C(0x0101FC), GC_SO},
+ {RUNE_C(0x0101FD), RUNE_C(0x0101FD), GC_MN},
+ {RUNE_C(0x010280), RUNE_C(0x01029C), GC_LO},
+ {RUNE_C(0x0102A0), RUNE_C(0x0102D0), GC_LO},
+ {RUNE_C(0x0102E0), RUNE_C(0x0102E0), GC_MN},
+ {RUNE_C(0x0102E1), RUNE_C(0x0102FB), GC_NO},
+ {RUNE_C(0x010300), RUNE_C(0x01031F), GC_LO},
+ {RUNE_C(0x010320), RUNE_C(0x010323), GC_NO},
+ {RUNE_C(0x01032D), RUNE_C(0x010340), GC_LO},
+ {RUNE_C(0x010341), RUNE_C(0x010341), GC_NL},
+ {RUNE_C(0x010342), RUNE_C(0x010349), GC_LO},
+ {RUNE_C(0x01034A), RUNE_C(0x01034A), GC_NL},
+ {RUNE_C(0x010350), RUNE_C(0x010375), GC_LO},
+ {RUNE_C(0x010376), RUNE_C(0x01037A), GC_MN},
+ {RUNE_C(0x010380), RUNE_C(0x01039D), GC_LO},
+ {RUNE_C(0x01039F), RUNE_C(0x01039F), GC_PO},
+ {RUNE_C(0x0103A0), RUNE_C(0x0103C3), GC_LO},
+ {RUNE_C(0x0103C8), RUNE_C(0x0103CF), GC_LO},
+ {RUNE_C(0x0103D0), RUNE_C(0x0103D0), GC_PO},
+ {RUNE_C(0x0103D1), RUNE_C(0x0103D5), GC_NL},
+ {RUNE_C(0x010400), RUNE_C(0x010427), GC_LU},
+ {RUNE_C(0x010428), RUNE_C(0x01044F), GC_LL},
+ {RUNE_C(0x010450), RUNE_C(0x01049D), GC_LO},
+ {RUNE_C(0x0104A0), RUNE_C(0x0104A9), GC_ND},
+ {RUNE_C(0x0104B0), RUNE_C(0x0104D3), GC_LU},
+ {RUNE_C(0x0104D8), RUNE_C(0x0104FB), GC_LL},
+ {RUNE_C(0x010500), RUNE_C(0x010527), GC_LO},
+ {RUNE_C(0x010530), RUNE_C(0x010563), GC_LO},
+ {RUNE_C(0x01056F), RUNE_C(0x01056F), GC_PO},
+ {RUNE_C(0x010570), RUNE_C(0x01057A), GC_LU},
+ {RUNE_C(0x01057C), RUNE_C(0x01058A), GC_LU},
+ {RUNE_C(0x01058C), RUNE_C(0x010592), GC_LU},
+ {RUNE_C(0x010594), RUNE_C(0x010595), GC_LU},
+ {RUNE_C(0x010597), RUNE_C(0x0105A1), GC_LL},
+ {RUNE_C(0x0105A3), RUNE_C(0x0105B1), GC_LL},
+ {RUNE_C(0x0105B3), RUNE_C(0x0105B9), GC_LL},
+ {RUNE_C(0x0105BB), RUNE_C(0x0105BC), GC_LL},
+ {RUNE_C(0x010600), RUNE_C(0x010736), GC_LO},
+ {RUNE_C(0x010740), RUNE_C(0x010755), GC_LO},
+ {RUNE_C(0x010760), RUNE_C(0x010767), GC_LO},
+ {RUNE_C(0x010780), RUNE_C(0x010785), GC_LM},
+ {RUNE_C(0x010787), RUNE_C(0x0107B0), GC_LM},
+ {RUNE_C(0x0107B2), RUNE_C(0x0107BA), GC_LM},
+ {RUNE_C(0x010800), RUNE_C(0x010805), GC_LO},
+ {RUNE_C(0x010808), RUNE_C(0x010808), GC_LO},
+ {RUNE_C(0x01080A), RUNE_C(0x010835), GC_LO},
+ {RUNE_C(0x010837), RUNE_C(0x010838), GC_LO},
+ {RUNE_C(0x01083C), RUNE_C(0x01083C), GC_LO},
+ {RUNE_C(0x01083F), RUNE_C(0x010855), GC_LO},
+ {RUNE_C(0x010857), RUNE_C(0x010857), GC_PO},
+ {RUNE_C(0x010858), RUNE_C(0x01085F), GC_NO},
+ {RUNE_C(0x010860), RUNE_C(0x010876), GC_LO},
+ {RUNE_C(0x010877), RUNE_C(0x010878), GC_SO},
+ {RUNE_C(0x010879), RUNE_C(0x01087F), GC_NO},
+ {RUNE_C(0x010880), RUNE_C(0x01089E), GC_LO},
+ {RUNE_C(0x0108A7), RUNE_C(0x0108AF), GC_NO},
+ {RUNE_C(0x0108E0), RUNE_C(0x0108F2), GC_LO},
+ {RUNE_C(0x0108F4), RUNE_C(0x0108F5), GC_LO},
+ {RUNE_C(0x0108FB), RUNE_C(0x0108FF), GC_NO},
+ {RUNE_C(0x010900), RUNE_C(0x010915), GC_LO},
+ {RUNE_C(0x010916), RUNE_C(0x01091B), GC_NO},
+ {RUNE_C(0x01091F), RUNE_C(0x01091F), GC_PO},
+ {RUNE_C(0x010920), RUNE_C(0x010939), GC_LO},
+ {RUNE_C(0x01093F), RUNE_C(0x01093F), GC_PO},
+ {RUNE_C(0x010980), RUNE_C(0x0109B7), GC_LO},
+ {RUNE_C(0x0109BC), RUNE_C(0x0109BD), GC_NO},
+ {RUNE_C(0x0109BE), RUNE_C(0x0109BF), GC_LO},
+ {RUNE_C(0x0109C0), RUNE_C(0x0109CF), GC_NO},
+ {RUNE_C(0x0109D2), RUNE_C(0x0109FF), GC_NO},
+ {RUNE_C(0x010A00), RUNE_C(0x010A00), GC_LO},
+ {RUNE_C(0x010A01), RUNE_C(0x010A03), GC_MN},
+ {RUNE_C(0x010A05), RUNE_C(0x010A06), GC_MN},
+ {RUNE_C(0x010A0C), RUNE_C(0x010A0F), GC_MN},
+ {RUNE_C(0x010A10), RUNE_C(0x010A13), GC_LO},
+ {RUNE_C(0x010A15), RUNE_C(0x010A17), GC_LO},
+ {RUNE_C(0x010A19), RUNE_C(0x010A35), GC_LO},
+ {RUNE_C(0x010A38), RUNE_C(0x010A3A), GC_MN},
+ {RUNE_C(0x010A3F), RUNE_C(0x010A3F), GC_MN},
+ {RUNE_C(0x010A40), RUNE_C(0x010A48), GC_NO},
+ {RUNE_C(0x010A50), RUNE_C(0x010A58), GC_PO},
+ {RUNE_C(0x010A60), RUNE_C(0x010A7C), GC_LO},
+ {RUNE_C(0x010A7D), RUNE_C(0x010A7E), GC_NO},
+ {RUNE_C(0x010A7F), RUNE_C(0x010A7F), GC_PO},
+ {RUNE_C(0x010A80), RUNE_C(0x010A9C), GC_LO},
+ {RUNE_C(0x010A9D), RUNE_C(0x010A9F), GC_NO},
+ {RUNE_C(0x010AC0), RUNE_C(0x010AC7), GC_LO},
+ {RUNE_C(0x010AC8), RUNE_C(0x010AC8), GC_SO},
+ {RUNE_C(0x010AC9), RUNE_C(0x010AE4), GC_LO},
+ {RUNE_C(0x010AE5), RUNE_C(0x010AE6), GC_MN},
+ {RUNE_C(0x010AEB), RUNE_C(0x010AEF), GC_NO},
+ {RUNE_C(0x010AF0), RUNE_C(0x010AF6), GC_PO},
+ {RUNE_C(0x010B00), RUNE_C(0x010B35), GC_LO},
+ {RUNE_C(0x010B39), RUNE_C(0x010B3F), GC_PO},
+ {RUNE_C(0x010B40), RUNE_C(0x010B55), GC_LO},
+ {RUNE_C(0x010B58), RUNE_C(0x010B5F), GC_NO},
+ {RUNE_C(0x010B60), RUNE_C(0x010B72), GC_LO},
+ {RUNE_C(0x010B78), RUNE_C(0x010B7F), GC_NO},
+ {RUNE_C(0x010B80), RUNE_C(0x010B91), GC_LO},
+ {RUNE_C(0x010B99), RUNE_C(0x010B9C), GC_PO},
+ {RUNE_C(0x010BA9), RUNE_C(0x010BAF), GC_NO},
+ {RUNE_C(0x010C00), RUNE_C(0x010C48), GC_LO},
+ {RUNE_C(0x010C80), RUNE_C(0x010CB2), GC_LU},
+ {RUNE_C(0x010CC0), RUNE_C(0x010CF2), GC_LL},
+ {RUNE_C(0x010CFA), RUNE_C(0x010CFF), GC_NO},
+ {RUNE_C(0x010D00), RUNE_C(0x010D23), GC_LO},
+ {RUNE_C(0x010D24), RUNE_C(0x010D27), GC_MN},
+ {RUNE_C(0x010D30), RUNE_C(0x010D39), GC_ND},
+ {RUNE_C(0x010E60), RUNE_C(0x010E7E), GC_NO},
+ {RUNE_C(0x010E80), RUNE_C(0x010EA9), GC_LO},
+ {RUNE_C(0x010EAB), RUNE_C(0x010EAC), GC_MN},
+ {RUNE_C(0x010EAD), RUNE_C(0x010EAD), GC_PD},
+ {RUNE_C(0x010EB0), RUNE_C(0x010EB1), GC_LO},
+ {RUNE_C(0x010EFD), RUNE_C(0x010EFF), GC_MN},
+ {RUNE_C(0x010F00), RUNE_C(0x010F1C), GC_LO},
+ {RUNE_C(0x010F1D), RUNE_C(0x010F26), GC_NO},
+ {RUNE_C(0x010F27), RUNE_C(0x010F27), GC_LO},
+ {RUNE_C(0x010F30), RUNE_C(0x010F45), GC_LO},
+ {RUNE_C(0x010F46), RUNE_C(0x010F50), GC_MN},
+ {RUNE_C(0x010F51), RUNE_C(0x010F54), GC_NO},
+ {RUNE_C(0x010F55), RUNE_C(0x010F59), GC_PO},
+ {RUNE_C(0x010F70), RUNE_C(0x010F81), GC_LO},
+ {RUNE_C(0x010F82), RUNE_C(0x010F85), GC_MN},
+ {RUNE_C(0x010F86), RUNE_C(0x010F89), GC_PO},
+ {RUNE_C(0x010FB0), RUNE_C(0x010FC4), GC_LO},
+ {RUNE_C(0x010FC5), RUNE_C(0x010FCB), GC_NO},
+ {RUNE_C(0x010FE0), RUNE_C(0x010FF6), GC_LO},
+ {RUNE_C(0x011000), RUNE_C(0x011000), GC_MC},
+ {RUNE_C(0x011001), RUNE_C(0x011001), GC_MN},
+ {RUNE_C(0x011002), RUNE_C(0x011002), GC_MC},
+ {RUNE_C(0x011003), RUNE_C(0x011037), GC_LO},
+ {RUNE_C(0x011038), RUNE_C(0x011046), GC_MN},
+ {RUNE_C(0x011047), RUNE_C(0x01104D), GC_PO},
+ {RUNE_C(0x011052), RUNE_C(0x011065), GC_NO},
+ {RUNE_C(0x011066), RUNE_C(0x01106F), GC_ND},
+ {RUNE_C(0x011070), RUNE_C(0x011070), GC_MN},
+ {RUNE_C(0x011071), RUNE_C(0x011072), GC_LO},
+ {RUNE_C(0x011073), RUNE_C(0x011074), GC_MN},
+ {RUNE_C(0x011075), RUNE_C(0x011075), GC_LO},
+ {RUNE_C(0x01107F), RUNE_C(0x011081), GC_MN},
+ {RUNE_C(0x011082), RUNE_C(0x011082), GC_MC},
+ {RUNE_C(0x011083), RUNE_C(0x0110AF), GC_LO},
+ {RUNE_C(0x0110B0), RUNE_C(0x0110B2), GC_MC},
+ {RUNE_C(0x0110B3), RUNE_C(0x0110B6), GC_MN},
+ {RUNE_C(0x0110B7), RUNE_C(0x0110B8), GC_MC},
+ {RUNE_C(0x0110B9), RUNE_C(0x0110BA), GC_MN},
+ {RUNE_C(0x0110BB), RUNE_C(0x0110BC), GC_PO},
+ {RUNE_C(0x0110BD), RUNE_C(0x0110BD), GC_CF},
+ {RUNE_C(0x0110BE), RUNE_C(0x0110C1), GC_PO},
+ {RUNE_C(0x0110C2), RUNE_C(0x0110C2), GC_MN},
+ {RUNE_C(0x0110CD), RUNE_C(0x0110CD), GC_CF},
+ {RUNE_C(0x0110D0), RUNE_C(0x0110E8), GC_LO},
+ {RUNE_C(0x0110F0), RUNE_C(0x0110F9), GC_ND},
+ {RUNE_C(0x011100), RUNE_C(0x011102), GC_MN},
+ {RUNE_C(0x011103), RUNE_C(0x011126), GC_LO},
+ {RUNE_C(0x011127), RUNE_C(0x01112B), GC_MN},
+ {RUNE_C(0x01112C), RUNE_C(0x01112C), GC_MC},
+ {RUNE_C(0x01112D), RUNE_C(0x011134), GC_MN},
+ {RUNE_C(0x011136), RUNE_C(0x01113F), GC_ND},
+ {RUNE_C(0x011140), RUNE_C(0x011143), GC_PO},
+ {RUNE_C(0x011144), RUNE_C(0x011144), GC_LO},
+ {RUNE_C(0x011145), RUNE_C(0x011146), GC_MC},
+ {RUNE_C(0x011147), RUNE_C(0x011147), GC_LO},
+ {RUNE_C(0x011150), RUNE_C(0x011172), GC_LO},
+ {RUNE_C(0x011173), RUNE_C(0x011173), GC_MN},
+ {RUNE_C(0x011174), RUNE_C(0x011175), GC_PO},
+ {RUNE_C(0x011176), RUNE_C(0x011176), GC_LO},
+ {RUNE_C(0x011180), RUNE_C(0x011181), GC_MN},
+ {RUNE_C(0x011182), RUNE_C(0x011182), GC_MC},
+ {RUNE_C(0x011183), RUNE_C(0x0111B2), GC_LO},
+ {RUNE_C(0x0111B3), RUNE_C(0x0111B5), GC_MC},
+ {RUNE_C(0x0111B6), RUNE_C(0x0111BE), GC_MN},
+ {RUNE_C(0x0111BF), RUNE_C(0x0111C0), GC_MC},
+ {RUNE_C(0x0111C1), RUNE_C(0x0111C4), GC_LO},
+ {RUNE_C(0x0111C5), RUNE_C(0x0111C8), GC_PO},
+ {RUNE_C(0x0111C9), RUNE_C(0x0111CC), GC_MN},
+ {RUNE_C(0x0111CD), RUNE_C(0x0111CD), GC_PO},
+ {RUNE_C(0x0111CE), RUNE_C(0x0111CE), GC_MC},
+ {RUNE_C(0x0111CF), RUNE_C(0x0111CF), GC_MN},
+ {RUNE_C(0x0111D0), RUNE_C(0x0111D9), GC_ND},
+ {RUNE_C(0x0111DA), RUNE_C(0x0111DA), GC_LO},
+ {RUNE_C(0x0111DB), RUNE_C(0x0111DB), GC_PO},
+ {RUNE_C(0x0111DC), RUNE_C(0x0111DC), GC_LO},
+ {RUNE_C(0x0111DD), RUNE_C(0x0111DF), GC_PO},
+ {RUNE_C(0x0111E1), RUNE_C(0x0111F4), GC_NO},
+ {RUNE_C(0x011200), RUNE_C(0x011211), GC_LO},
+ {RUNE_C(0x011213), RUNE_C(0x01122B), GC_LO},
+ {RUNE_C(0x01122C), RUNE_C(0x01122E), GC_MC},
+ {RUNE_C(0x01122F), RUNE_C(0x011231), GC_MN},
+ {RUNE_C(0x011232), RUNE_C(0x011233), GC_MC},
+ {RUNE_C(0x011234), RUNE_C(0x011234), GC_MN},
+ {RUNE_C(0x011235), RUNE_C(0x011235), GC_MC},
+ {RUNE_C(0x011236), RUNE_C(0x011237), GC_MN},
+ {RUNE_C(0x011238), RUNE_C(0x01123D), GC_PO},
+ {RUNE_C(0x01123E), RUNE_C(0x01123E), GC_MN},
+ {RUNE_C(0x01123F), RUNE_C(0x011240), GC_LO},
+ {RUNE_C(0x011241), RUNE_C(0x011241), GC_MN},
+ {RUNE_C(0x011280), RUNE_C(0x011286), GC_LO},
+ {RUNE_C(0x011288), RUNE_C(0x011288), GC_LO},
+ {RUNE_C(0x01128A), RUNE_C(0x01128D), GC_LO},
+ {RUNE_C(0x01128F), RUNE_C(0x01129D), GC_LO},
+ {RUNE_C(0x01129F), RUNE_C(0x0112A8), GC_LO},
+ {RUNE_C(0x0112A9), RUNE_C(0x0112A9), GC_PO},
+ {RUNE_C(0x0112B0), RUNE_C(0x0112DE), GC_LO},
+ {RUNE_C(0x0112DF), RUNE_C(0x0112DF), GC_MN},
+ {RUNE_C(0x0112E0), RUNE_C(0x0112E2), GC_MC},
+ {RUNE_C(0x0112E3), RUNE_C(0x0112EA), GC_MN},
+ {RUNE_C(0x0112F0), RUNE_C(0x0112F9), GC_ND},
+ {RUNE_C(0x011300), RUNE_C(0x011301), GC_MN},
+ {RUNE_C(0x011302), RUNE_C(0x011303), GC_MC},
+ {RUNE_C(0x011305), RUNE_C(0x01130C), GC_LO},
+ {RUNE_C(0x01130F), RUNE_C(0x011310), GC_LO},
+ {RUNE_C(0x011313), RUNE_C(0x011328), GC_LO},
+ {RUNE_C(0x01132A), RUNE_C(0x011330), GC_LO},
+ {RUNE_C(0x011332), RUNE_C(0x011333), GC_LO},
+ {RUNE_C(0x011335), RUNE_C(0x011339), GC_LO},
+ {RUNE_C(0x01133B), RUNE_C(0x01133C), GC_MN},
+ {RUNE_C(0x01133D), RUNE_C(0x01133D), GC_LO},
+ {RUNE_C(0x01133E), RUNE_C(0x01133F), GC_MC},
+ {RUNE_C(0x011340), RUNE_C(0x011340), GC_MN},
+ {RUNE_C(0x011341), RUNE_C(0x011344), GC_MC},
+ {RUNE_C(0x011347), RUNE_C(0x011348), GC_MC},
+ {RUNE_C(0x01134B), RUNE_C(0x01134D), GC_MC},
+ {RUNE_C(0x011350), RUNE_C(0x011350), GC_LO},
+ {RUNE_C(0x011357), RUNE_C(0x011357), GC_MC},
+ {RUNE_C(0x01135D), RUNE_C(0x011361), GC_LO},
+ {RUNE_C(0x011362), RUNE_C(0x011363), GC_MC},
+ {RUNE_C(0x011366), RUNE_C(0x01136C), GC_MN},
+ {RUNE_C(0x011370), RUNE_C(0x011374), GC_MN},
+ {RUNE_C(0x011400), RUNE_C(0x011434), GC_LO},
+ {RUNE_C(0x011435), RUNE_C(0x011437), GC_MC},
+ {RUNE_C(0x011438), RUNE_C(0x01143F), GC_MN},
+ {RUNE_C(0x011440), RUNE_C(0x011441), GC_MC},
+ {RUNE_C(0x011442), RUNE_C(0x011444), GC_MN},
+ {RUNE_C(0x011445), RUNE_C(0x011445), GC_MC},
+ {RUNE_C(0x011446), RUNE_C(0x011446), GC_MN},
+ {RUNE_C(0x011447), RUNE_C(0x01144A), GC_LO},
+ {RUNE_C(0x01144B), RUNE_C(0x01144F), GC_PO},
+ {RUNE_C(0x011450), RUNE_C(0x011459), GC_ND},
+ {RUNE_C(0x01145A), RUNE_C(0x01145B), GC_PO},
+ {RUNE_C(0x01145D), RUNE_C(0x01145D), GC_PO},
+ {RUNE_C(0x01145E), RUNE_C(0x01145E), GC_MN},
+ {RUNE_C(0x01145F), RUNE_C(0x011461), GC_LO},
+ {RUNE_C(0x011480), RUNE_C(0x0114AF), GC_LO},
+ {RUNE_C(0x0114B0), RUNE_C(0x0114B2), GC_MC},
+ {RUNE_C(0x0114B3), RUNE_C(0x0114B8), GC_MN},
+ {RUNE_C(0x0114B9), RUNE_C(0x0114B9), GC_MC},
+ {RUNE_C(0x0114BA), RUNE_C(0x0114BA), GC_MN},
+ {RUNE_C(0x0114BB), RUNE_C(0x0114BE), GC_MC},
+ {RUNE_C(0x0114BF), RUNE_C(0x0114C0), GC_MN},
+ {RUNE_C(0x0114C1), RUNE_C(0x0114C1), GC_MC},
+ {RUNE_C(0x0114C2), RUNE_C(0x0114C3), GC_MN},
+ {RUNE_C(0x0114C4), RUNE_C(0x0114C5), GC_LO},
+ {RUNE_C(0x0114C6), RUNE_C(0x0114C6), GC_PO},
+ {RUNE_C(0x0114C7), RUNE_C(0x0114C7), GC_LO},
+ {RUNE_C(0x0114D0), RUNE_C(0x0114D9), GC_ND},
+ {RUNE_C(0x011580), RUNE_C(0x0115AE), GC_LO},
+ {RUNE_C(0x0115AF), RUNE_C(0x0115B1), GC_MC},
+ {RUNE_C(0x0115B2), RUNE_C(0x0115B5), GC_MN},
+ {RUNE_C(0x0115B8), RUNE_C(0x0115BB), GC_MC},
+ {RUNE_C(0x0115BC), RUNE_C(0x0115BD), GC_MN},
+ {RUNE_C(0x0115BE), RUNE_C(0x0115BE), GC_MC},
+ {RUNE_C(0x0115BF), RUNE_C(0x0115C0), GC_MN},
+ {RUNE_C(0x0115C1), RUNE_C(0x0115D7), GC_PO},
+ {RUNE_C(0x0115D8), RUNE_C(0x0115DB), GC_LO},
+ {RUNE_C(0x0115DC), RUNE_C(0x0115DD), GC_MN},
+ {RUNE_C(0x011600), RUNE_C(0x01162F), GC_LO},
+ {RUNE_C(0x011630), RUNE_C(0x011632), GC_MC},
+ {RUNE_C(0x011633), RUNE_C(0x01163A), GC_MN},
+ {RUNE_C(0x01163B), RUNE_C(0x01163C), GC_MC},
+ {RUNE_C(0x01163D), RUNE_C(0x01163D), GC_MN},
+ {RUNE_C(0x01163E), RUNE_C(0x01163E), GC_MC},
+ {RUNE_C(0x01163F), RUNE_C(0x011640), GC_MN},
+ {RUNE_C(0x011641), RUNE_C(0x011643), GC_PO},
+ {RUNE_C(0x011644), RUNE_C(0x011644), GC_LO},
+ {RUNE_C(0x011650), RUNE_C(0x011659), GC_ND},
+ {RUNE_C(0x011660), RUNE_C(0x01166C), GC_PO},
+ {RUNE_C(0x011680), RUNE_C(0x0116AA), GC_LO},
+ {RUNE_C(0x0116AB), RUNE_C(0x0116AB), GC_MN},
+ {RUNE_C(0x0116AC), RUNE_C(0x0116AC), GC_MC},
+ {RUNE_C(0x0116AD), RUNE_C(0x0116AD), GC_MN},
+ {RUNE_C(0x0116AE), RUNE_C(0x0116AF), GC_MC},
+ {RUNE_C(0x0116B0), RUNE_C(0x0116B5), GC_MN},
+ {RUNE_C(0x0116B6), RUNE_C(0x0116B6), GC_MC},
+ {RUNE_C(0x0116B7), RUNE_C(0x0116B7), GC_MN},
+ {RUNE_C(0x0116B8), RUNE_C(0x0116B8), GC_LO},
+ {RUNE_C(0x0116B9), RUNE_C(0x0116B9), GC_PO},
+ {RUNE_C(0x0116C0), RUNE_C(0x0116C9), GC_ND},
+ {RUNE_C(0x011700), RUNE_C(0x01171A), GC_LO},
+ {RUNE_C(0x01171D), RUNE_C(0x01171F), GC_MN},
+ {RUNE_C(0x011720), RUNE_C(0x011721), GC_MC},
+ {RUNE_C(0x011722), RUNE_C(0x011725), GC_MN},
+ {RUNE_C(0x011726), RUNE_C(0x011726), GC_MC},
+ {RUNE_C(0x011727), RUNE_C(0x01172B), GC_MN},
+ {RUNE_C(0x011730), RUNE_C(0x011739), GC_ND},
+ {RUNE_C(0x01173A), RUNE_C(0x01173B), GC_NO},
+ {RUNE_C(0x01173C), RUNE_C(0x01173E), GC_PO},
+ {RUNE_C(0x01173F), RUNE_C(0x01173F), GC_SO},
+ {RUNE_C(0x011740), RUNE_C(0x011746), GC_LO},
+ {RUNE_C(0x011800), RUNE_C(0x01182B), GC_LO},
+ {RUNE_C(0x01182C), RUNE_C(0x01182E), GC_MC},
+ {RUNE_C(0x01182F), RUNE_C(0x011837), GC_MN},
+ {RUNE_C(0x011838), RUNE_C(0x011838), GC_MC},
+ {RUNE_C(0x011839), RUNE_C(0x01183A), GC_MN},
+ {RUNE_C(0x01183B), RUNE_C(0x01183B), GC_PO},
+ {RUNE_C(0x0118A0), RUNE_C(0x0118BF), GC_LU},
+ {RUNE_C(0x0118C0), RUNE_C(0x0118DF), GC_LL},
+ {RUNE_C(0x0118E0), RUNE_C(0x0118E9), GC_ND},
+ {RUNE_C(0x0118EA), RUNE_C(0x0118F2), GC_NO},
+ {RUNE_C(0x0118FF), RUNE_C(0x011906), GC_LO},
+ {RUNE_C(0x011909), RUNE_C(0x011909), GC_LO},
+ {RUNE_C(0x01190C), RUNE_C(0x011913), GC_LO},
+ {RUNE_C(0x011915), RUNE_C(0x011916), GC_LO},
+ {RUNE_C(0x011918), RUNE_C(0x01192F), GC_LO},
+ {RUNE_C(0x011930), RUNE_C(0x011935), GC_MC},
+ {RUNE_C(0x011937), RUNE_C(0x011938), GC_MC},
+ {RUNE_C(0x01193B), RUNE_C(0x01193C), GC_MN},
+ {RUNE_C(0x01193D), RUNE_C(0x01193D), GC_MC},
+ {RUNE_C(0x01193E), RUNE_C(0x01193E), GC_MN},
+ {RUNE_C(0x01193F), RUNE_C(0x01193F), GC_LO},
+ {RUNE_C(0x011940), RUNE_C(0x011940), GC_MC},
+ {RUNE_C(0x011941), RUNE_C(0x011941), GC_LO},
+ {RUNE_C(0x011942), RUNE_C(0x011942), GC_MC},
+ {RUNE_C(0x011943), RUNE_C(0x011943), GC_MN},
+ {RUNE_C(0x011944), RUNE_C(0x011946), GC_PO},
+ {RUNE_C(0x011950), RUNE_C(0x011959), GC_ND},
+ {RUNE_C(0x0119A0), RUNE_C(0x0119A7), GC_LO},
+ {RUNE_C(0x0119AA), RUNE_C(0x0119D0), GC_LO},
+ {RUNE_C(0x0119D1), RUNE_C(0x0119D3), GC_MC},
+ {RUNE_C(0x0119D4), RUNE_C(0x0119D7), GC_MN},
+ {RUNE_C(0x0119DA), RUNE_C(0x0119DB), GC_MN},
+ {RUNE_C(0x0119DC), RUNE_C(0x0119DF), GC_MC},
+ {RUNE_C(0x0119E0), RUNE_C(0x0119E0), GC_MN},
+ {RUNE_C(0x0119E1), RUNE_C(0x0119E1), GC_LO},
+ {RUNE_C(0x0119E2), RUNE_C(0x0119E2), GC_PO},
+ {RUNE_C(0x0119E3), RUNE_C(0x0119E3), GC_LO},
+ {RUNE_C(0x0119E4), RUNE_C(0x0119E4), GC_MC},
+ {RUNE_C(0x011A00), RUNE_C(0x011A00), GC_LO},
+ {RUNE_C(0x011A01), RUNE_C(0x011A0A), GC_MN},
+ {RUNE_C(0x011A0B), RUNE_C(0x011A32), GC_LO},
+ {RUNE_C(0x011A33), RUNE_C(0x011A38), GC_MN},
+ {RUNE_C(0x011A39), RUNE_C(0x011A39), GC_MC},
+ {RUNE_C(0x011A3A), RUNE_C(0x011A3A), GC_LO},
+ {RUNE_C(0x011A3B), RUNE_C(0x011A3E), GC_MN},
+ {RUNE_C(0x011A3F), RUNE_C(0x011A46), GC_PO},
+ {RUNE_C(0x011A47), RUNE_C(0x011A47), GC_MN},
+ {RUNE_C(0x011A50), RUNE_C(0x011A50), GC_LO},
+ {RUNE_C(0x011A51), RUNE_C(0x011A56), GC_MN},
+ {RUNE_C(0x011A57), RUNE_C(0x011A58), GC_MC},
+ {RUNE_C(0x011A59), RUNE_C(0x011A5B), GC_MN},
+ {RUNE_C(0x011A5C), RUNE_C(0x011A89), GC_LO},
+ {RUNE_C(0x011A8A), RUNE_C(0x011A96), GC_MN},
+ {RUNE_C(0x011A97), RUNE_C(0x011A97), GC_MC},
+ {RUNE_C(0x011A98), RUNE_C(0x011A99), GC_MN},
+ {RUNE_C(0x011A9A), RUNE_C(0x011A9C), GC_PO},
+ {RUNE_C(0x011A9D), RUNE_C(0x011A9D), GC_LO},
+ {RUNE_C(0x011A9E), RUNE_C(0x011AA2), GC_PO},
+ {RUNE_C(0x011AB0), RUNE_C(0x011AF8), GC_LO},
+ {RUNE_C(0x011B00), RUNE_C(0x011B09), GC_PO},
+ {RUNE_C(0x011C00), RUNE_C(0x011C08), GC_LO},
+ {RUNE_C(0x011C0A), RUNE_C(0x011C2E), GC_LO},
+ {RUNE_C(0x011C2F), RUNE_C(0x011C2F), GC_MC},
+ {RUNE_C(0x011C30), RUNE_C(0x011C36), GC_MN},
+ {RUNE_C(0x011C38), RUNE_C(0x011C3D), GC_MN},
+ {RUNE_C(0x011C3E), RUNE_C(0x011C3E), GC_MC},
+ {RUNE_C(0x011C3F), RUNE_C(0x011C3F), GC_MN},
+ {RUNE_C(0x011C40), RUNE_C(0x011C40), GC_LO},
+ {RUNE_C(0x011C41), RUNE_C(0x011C45), GC_PO},
+ {RUNE_C(0x011C50), RUNE_C(0x011C59), GC_ND},
+ {RUNE_C(0x011C5A), RUNE_C(0x011C6C), GC_NO},
+ {RUNE_C(0x011C70), RUNE_C(0x011C71), GC_PO},
+ {RUNE_C(0x011C72), RUNE_C(0x011C8F), GC_LO},
+ {RUNE_C(0x011C92), RUNE_C(0x011CA7), GC_MN},
+ {RUNE_C(0x011CA9), RUNE_C(0x011CA9), GC_MC},
+ {RUNE_C(0x011CAA), RUNE_C(0x011CB0), GC_MN},
+ {RUNE_C(0x011CB1), RUNE_C(0x011CB1), GC_MC},
+ {RUNE_C(0x011CB2), RUNE_C(0x011CB3), GC_MN},
+ {RUNE_C(0x011CB4), RUNE_C(0x011CB4), GC_MC},
+ {RUNE_C(0x011CB5), RUNE_C(0x011CB6), GC_MN},
+ {RUNE_C(0x011D00), RUNE_C(0x011D06), GC_LO},
+ {RUNE_C(0x011D08), RUNE_C(0x011D09), GC_LO},
+ {RUNE_C(0x011D0B), RUNE_C(0x011D30), GC_LO},
+ {RUNE_C(0x011D31), RUNE_C(0x011D36), GC_MN},
+ {RUNE_C(0x011D3A), RUNE_C(0x011D3A), GC_MN},
+ {RUNE_C(0x011D3C), RUNE_C(0x011D3D), GC_MN},
+ {RUNE_C(0x011D3F), RUNE_C(0x011D45), GC_MN},
+ {RUNE_C(0x011D46), RUNE_C(0x011D46), GC_LO},
+ {RUNE_C(0x011D47), RUNE_C(0x011D47), GC_MN},
+ {RUNE_C(0x011D50), RUNE_C(0x011D59), GC_ND},
+ {RUNE_C(0x011D60), RUNE_C(0x011D65), GC_LO},
+ {RUNE_C(0x011D67), RUNE_C(0x011D68), GC_LO},
+ {RUNE_C(0x011D6A), RUNE_C(0x011D89), GC_LO},
+ {RUNE_C(0x011D8A), RUNE_C(0x011D8E), GC_MC},
+ {RUNE_C(0x011D90), RUNE_C(0x011D91), GC_MN},
+ {RUNE_C(0x011D93), RUNE_C(0x011D94), GC_MC},
+ {RUNE_C(0x011D95), RUNE_C(0x011D95), GC_MN},
+ {RUNE_C(0x011D96), RUNE_C(0x011D96), GC_MC},
+ {RUNE_C(0x011D97), RUNE_C(0x011D97), GC_MN},
+ {RUNE_C(0x011D98), RUNE_C(0x011D98), GC_LO},
+ {RUNE_C(0x011DA0), RUNE_C(0x011DA9), GC_ND},
+ {RUNE_C(0x011EE0), RUNE_C(0x011EF2), GC_LO},
+ {RUNE_C(0x011EF3), RUNE_C(0x011EF4), GC_MN},
+ {RUNE_C(0x011EF5), RUNE_C(0x011EF6), GC_MC},
+ {RUNE_C(0x011EF7), RUNE_C(0x011EF8), GC_PO},
+ {RUNE_C(0x011F00), RUNE_C(0x011F01), GC_MN},
+ {RUNE_C(0x011F02), RUNE_C(0x011F02), GC_LO},
+ {RUNE_C(0x011F03), RUNE_C(0x011F03), GC_MC},
+ {RUNE_C(0x011F04), RUNE_C(0x011F10), GC_LO},
+ {RUNE_C(0x011F12), RUNE_C(0x011F33), GC_LO},
+ {RUNE_C(0x011F34), RUNE_C(0x011F35), GC_MC},
+ {RUNE_C(0x011F36), RUNE_C(0x011F3A), GC_MN},
+ {RUNE_C(0x011F3E), RUNE_C(0x011F3F), GC_MC},
+ {RUNE_C(0x011F40), RUNE_C(0x011F40), GC_MN},
+ {RUNE_C(0x011F41), RUNE_C(0x011F41), GC_MC},
+ {RUNE_C(0x011F42), RUNE_C(0x011F42), GC_MN},
+ {RUNE_C(0x011F43), RUNE_C(0x011F4F), GC_PO},
+ {RUNE_C(0x011F50), RUNE_C(0x011F59), GC_ND},
+ {RUNE_C(0x011FB0), RUNE_C(0x011FB0), GC_LO},
+ {RUNE_C(0x011FC0), RUNE_C(0x011FD4), GC_NO},
+ {RUNE_C(0x011FD5), RUNE_C(0x011FDC), GC_SO},
+ {RUNE_C(0x011FDD), RUNE_C(0x011FE0), GC_SC},
+ {RUNE_C(0x011FE1), RUNE_C(0x011FF1), GC_SO},
+ {RUNE_C(0x011FFF), RUNE_C(0x011FFF), GC_PO},
+ {RUNE_C(0x012000), RUNE_C(0x012399), GC_LO},
+ {RUNE_C(0x012400), RUNE_C(0x01246E), GC_NL},
+ {RUNE_C(0x012470), RUNE_C(0x012474), GC_PO},
+ {RUNE_C(0x012480), RUNE_C(0x012543), GC_LO},
+ {RUNE_C(0x012F90), RUNE_C(0x012FF0), GC_LO},
+ {RUNE_C(0x012FF1), RUNE_C(0x012FF2), GC_PO},
+ {RUNE_C(0x013000), RUNE_C(0x01342F), GC_LO},
+ {RUNE_C(0x013430), RUNE_C(0x01343F), GC_CF},
+ {RUNE_C(0x013440), RUNE_C(0x013440), GC_MN},
+ {RUNE_C(0x013441), RUNE_C(0x013446), GC_LO},
+ {RUNE_C(0x013447), RUNE_C(0x013455), GC_MN},
+ {RUNE_C(0x014400), RUNE_C(0x014646), GC_LO},
+ {RUNE_C(0x016800), RUNE_C(0x016A38), GC_LO},
+ {RUNE_C(0x016A40), RUNE_C(0x016A5E), GC_LO},
+ {RUNE_C(0x016A60), RUNE_C(0x016A69), GC_ND},
+ {RUNE_C(0x016A6E), RUNE_C(0x016A6F), GC_PO},
+ {RUNE_C(0x016A70), RUNE_C(0x016ABE), GC_LO},
+ {RUNE_C(0x016AC0), RUNE_C(0x016AC9), GC_ND},
+ {RUNE_C(0x016AD0), RUNE_C(0x016AED), GC_LO},
+ {RUNE_C(0x016AF0), RUNE_C(0x016AF4), GC_MN},
+ {RUNE_C(0x016AF5), RUNE_C(0x016AF5), GC_PO},
+ {RUNE_C(0x016B00), RUNE_C(0x016B2F), GC_LO},
+ {RUNE_C(0x016B30), RUNE_C(0x016B36), GC_MN},
+ {RUNE_C(0x016B37), RUNE_C(0x016B3B), GC_PO},
+ {RUNE_C(0x016B3C), RUNE_C(0x016B3F), GC_SO},
+ {RUNE_C(0x016B40), RUNE_C(0x016B43), GC_LM},
+ {RUNE_C(0x016B44), RUNE_C(0x016B44), GC_PO},
+ {RUNE_C(0x016B45), RUNE_C(0x016B45), GC_SO},
+ {RUNE_C(0x016B50), RUNE_C(0x016B59), GC_ND},
+ {RUNE_C(0x016B5B), RUNE_C(0x016B61), GC_NO},
+ {RUNE_C(0x016B63), RUNE_C(0x016B77), GC_LO},
+ {RUNE_C(0x016B7D), RUNE_C(0x016B8F), GC_LO},
+ {RUNE_C(0x016E40), RUNE_C(0x016E5F), GC_LU},
+ {RUNE_C(0x016E60), RUNE_C(0x016E7F), GC_LL},
+ {RUNE_C(0x016E80), RUNE_C(0x016E96), GC_NO},
+ {RUNE_C(0x016E97), RUNE_C(0x016E9A), GC_PO},
+ {RUNE_C(0x016F00), RUNE_C(0x016F4A), GC_LO},
+ {RUNE_C(0x016F4F), RUNE_C(0x016F4F), GC_MN},
+ {RUNE_C(0x016F50), RUNE_C(0x016F50), GC_LO},
+ {RUNE_C(0x016F51), RUNE_C(0x016F87), GC_MC},
+ {RUNE_C(0x016F8F), RUNE_C(0x016F92), GC_MN},
+ {RUNE_C(0x016F93), RUNE_C(0x016F9F), GC_LM},
+ {RUNE_C(0x016FE0), RUNE_C(0x016FE1), GC_LM},
+ {RUNE_C(0x016FE2), RUNE_C(0x016FE2), GC_PO},
+ {RUNE_C(0x016FE3), RUNE_C(0x016FE3), GC_LM},
+ {RUNE_C(0x016FE4), RUNE_C(0x016FE4), GC_MN},
+ {RUNE_C(0x016FF0), RUNE_C(0x016FF1), GC_MC},
+ {RUNE_C(0x017000), RUNE_C(0x0187F7), GC_LO},
+ {RUNE_C(0x018800), RUNE_C(0x018CD5), GC_LO},
+ {RUNE_C(0x018D00), RUNE_C(0x018D08), GC_LO},
+ {RUNE_C(0x01AFF0), RUNE_C(0x01AFF3), GC_LM},
+ {RUNE_C(0x01AFF5), RUNE_C(0x01AFFB), GC_LM},
+ {RUNE_C(0x01AFFD), RUNE_C(0x01AFFE), GC_LM},
+ {RUNE_C(0x01B000), RUNE_C(0x01B122), GC_LO},
+ {RUNE_C(0x01B132), RUNE_C(0x01B132), GC_LO},
+ {RUNE_C(0x01B150), RUNE_C(0x01B152), GC_LO},
+ {RUNE_C(0x01B155), RUNE_C(0x01B155), GC_LO},
+ {RUNE_C(0x01B164), RUNE_C(0x01B167), GC_LO},
+ {RUNE_C(0x01B170), RUNE_C(0x01B2FB), GC_LO},
+ {RUNE_C(0x01BC00), RUNE_C(0x01BC6A), GC_LO},
+ {RUNE_C(0x01BC70), RUNE_C(0x01BC7C), GC_LO},
+ {RUNE_C(0x01BC80), RUNE_C(0x01BC88), GC_LO},
+ {RUNE_C(0x01BC90), RUNE_C(0x01BC99), GC_LO},
+ {RUNE_C(0x01BC9C), RUNE_C(0x01BC9C), GC_SO},
+ {RUNE_C(0x01BC9D), RUNE_C(0x01BC9E), GC_MN},
+ {RUNE_C(0x01BC9F), RUNE_C(0x01BC9F), GC_PO},
+ {RUNE_C(0x01BCA0), RUNE_C(0x01BCA3), GC_CF},
+ {RUNE_C(0x01CF00), RUNE_C(0x01CF2D), GC_MN},
+ {RUNE_C(0x01CF30), RUNE_C(0x01CF46), GC_MN},
+ {RUNE_C(0x01CF50), RUNE_C(0x01CFC3), GC_SO},
+ {RUNE_C(0x01D000), RUNE_C(0x01D0F5), GC_SO},
+ {RUNE_C(0x01D100), RUNE_C(0x01D126), GC_SO},
+ {RUNE_C(0x01D129), RUNE_C(0x01D164), GC_SO},
+ {RUNE_C(0x01D165), RUNE_C(0x01D166), GC_MC},
+ {RUNE_C(0x01D167), RUNE_C(0x01D169), GC_MN},
+ {RUNE_C(0x01D16A), RUNE_C(0x01D16C), GC_SO},
+ {RUNE_C(0x01D16D), RUNE_C(0x01D172), GC_MC},
+ {RUNE_C(0x01D173), RUNE_C(0x01D17A), GC_CF},
+ {RUNE_C(0x01D17B), RUNE_C(0x01D182), GC_MN},
+ {RUNE_C(0x01D183), RUNE_C(0x01D184), GC_SO},
+ {RUNE_C(0x01D185), RUNE_C(0x01D18B), GC_MN},
+ {RUNE_C(0x01D18C), RUNE_C(0x01D1A9), GC_SO},
+ {RUNE_C(0x01D1AA), RUNE_C(0x01D1AD), GC_MN},
+ {RUNE_C(0x01D1AE), RUNE_C(0x01D1EA), GC_SO},
+ {RUNE_C(0x01D200), RUNE_C(0x01D241), GC_SO},
+ {RUNE_C(0x01D242), RUNE_C(0x01D244), GC_MN},
+ {RUNE_C(0x01D245), RUNE_C(0x01D245), GC_SO},
+ {RUNE_C(0x01D2C0), RUNE_C(0x01D2D3), GC_NO},
+ {RUNE_C(0x01D2E0), RUNE_C(0x01D2F3), GC_NO},
+ {RUNE_C(0x01D300), RUNE_C(0x01D356), GC_SO},
+ {RUNE_C(0x01D360), RUNE_C(0x01D378), GC_NO},
+ {RUNE_C(0x01D400), RUNE_C(0x01D419), GC_LU},
+ {RUNE_C(0x01D41A), RUNE_C(0x01D433), GC_LL},
+ {RUNE_C(0x01D434), RUNE_C(0x01D44D), GC_LU},
+ {RUNE_C(0x01D44E), RUNE_C(0x01D454), GC_LL},
+ {RUNE_C(0x01D456), RUNE_C(0x01D467), GC_LL},
+ {RUNE_C(0x01D468), RUNE_C(0x01D481), GC_LU},
+ {RUNE_C(0x01D482), RUNE_C(0x01D49B), GC_LL},
+ {RUNE_C(0x01D49C), RUNE_C(0x01D49C), GC_LU},
+ {RUNE_C(0x01D49E), RUNE_C(0x01D49F), GC_LU},
+ {RUNE_C(0x01D4A2), RUNE_C(0x01D4A2), GC_LU},
+ {RUNE_C(0x01D4A5), RUNE_C(0x01D4A6), GC_LU},
+ {RUNE_C(0x01D4A9), RUNE_C(0x01D4AC), GC_LU},
+ {RUNE_C(0x01D4AE), RUNE_C(0x01D4B5), GC_LU},
+ {RUNE_C(0x01D4B6), RUNE_C(0x01D4B9), GC_LL},
+ {RUNE_C(0x01D4BB), RUNE_C(0x01D4BB), GC_LL},
+ {RUNE_C(0x01D4BD), RUNE_C(0x01D4C3), GC_LL},
+ {RUNE_C(0x01D4C5), RUNE_C(0x01D4CF), GC_LL},
+ {RUNE_C(0x01D4D0), RUNE_C(0x01D4E9), GC_LU},
+ {RUNE_C(0x01D4EA), RUNE_C(0x01D503), GC_LL},
+ {RUNE_C(0x01D504), RUNE_C(0x01D505), GC_LU},
+ {RUNE_C(0x01D507), RUNE_C(0x01D50A), GC_LU},
+ {RUNE_C(0x01D50D), RUNE_C(0x01D514), GC_LU},
+ {RUNE_C(0x01D516), RUNE_C(0x01D51C), GC_LU},
+ {RUNE_C(0x01D51E), RUNE_C(0x01D537), GC_LL},
+ {RUNE_C(0x01D538), RUNE_C(0x01D539), GC_LU},
+ {RUNE_C(0x01D53B), RUNE_C(0x01D53E), GC_LU},
+ {RUNE_C(0x01D540), RUNE_C(0x01D544), GC_LU},
+ {RUNE_C(0x01D546), RUNE_C(0x01D546), GC_LU},
+ {RUNE_C(0x01D54A), RUNE_C(0x01D550), GC_LU},
+ {RUNE_C(0x01D552), RUNE_C(0x01D56B), GC_LL},
+ {RUNE_C(0x01D56C), RUNE_C(0x01D585), GC_LU},
+ {RUNE_C(0x01D586), RUNE_C(0x01D59F), GC_LL},
+ {RUNE_C(0x01D5A0), RUNE_C(0x01D5B9), GC_LU},
+ {RUNE_C(0x01D5BA), RUNE_C(0x01D5D3), GC_LL},
+ {RUNE_C(0x01D5D4), RUNE_C(0x01D5ED), GC_LU},
+ {RUNE_C(0x01D5EE), RUNE_C(0x01D607), GC_LL},
+ {RUNE_C(0x01D608), RUNE_C(0x01D621), GC_LU},
+ {RUNE_C(0x01D622), RUNE_C(0x01D63B), GC_LL},
+ {RUNE_C(0x01D63C), RUNE_C(0x01D655), GC_LU},
+ {RUNE_C(0x01D656), RUNE_C(0x01D66F), GC_LL},
+ {RUNE_C(0x01D670), RUNE_C(0x01D689), GC_LU},
+ {RUNE_C(0x01D68A), RUNE_C(0x01D6A5), GC_LL},
+ {RUNE_C(0x01D6A8), RUNE_C(0x01D6C0), GC_LU},
+ {RUNE_C(0x01D6C1), RUNE_C(0x01D6C1), GC_SM},
+ {RUNE_C(0x01D6C2), RUNE_C(0x01D6DA), GC_LL},
+ {RUNE_C(0x01D6DB), RUNE_C(0x01D6DB), GC_SM},
+ {RUNE_C(0x01D6DC), RUNE_C(0x01D6E1), GC_LL},
+ {RUNE_C(0x01D6E2), RUNE_C(0x01D6FA), GC_LU},
+ {RUNE_C(0x01D6FB), RUNE_C(0x01D6FB), GC_SM},
+ {RUNE_C(0x01D6FC), RUNE_C(0x01D714), GC_LL},
+ {RUNE_C(0x01D715), RUNE_C(0x01D715), GC_SM},
+ {RUNE_C(0x01D716), RUNE_C(0x01D71B), GC_LL},
+ {RUNE_C(0x01D71C), RUNE_C(0x01D734), GC_LU},
+ {RUNE_C(0x01D735), RUNE_C(0x01D735), GC_SM},
+ {RUNE_C(0x01D736), RUNE_C(0x01D74E), GC_LL},
+ {RUNE_C(0x01D74F), RUNE_C(0x01D74F), GC_SM},
+ {RUNE_C(0x01D750), RUNE_C(0x01D755), GC_LL},
+ {RUNE_C(0x01D756), RUNE_C(0x01D76E), GC_LU},
+ {RUNE_C(0x01D76F), RUNE_C(0x01D76F), GC_SM},
+ {RUNE_C(0x01D770), RUNE_C(0x01D788), GC_LL},
+ {RUNE_C(0x01D789), RUNE_C(0x01D789), GC_SM},
+ {RUNE_C(0x01D78A), RUNE_C(0x01D78F), GC_LL},
+ {RUNE_C(0x01D790), RUNE_C(0x01D7A8), GC_LU},
+ {RUNE_C(0x01D7A9), RUNE_C(0x01D7A9), GC_SM},
+ {RUNE_C(0x01D7AA), RUNE_C(0x01D7C2), GC_LL},
+ {RUNE_C(0x01D7C3), RUNE_C(0x01D7C3), GC_SM},
+ {RUNE_C(0x01D7C4), RUNE_C(0x01D7C9), GC_LL},
+ {RUNE_C(0x01D7CA), RUNE_C(0x01D7CA), GC_LU},
+ {RUNE_C(0x01D7CB), RUNE_C(0x01D7CB), GC_LL},
+ {RUNE_C(0x01D7CE), RUNE_C(0x01D7FF), GC_ND},
+ {RUNE_C(0x01D800), RUNE_C(0x01D9FF), GC_SO},
+ {RUNE_C(0x01DA00), RUNE_C(0x01DA36), GC_MN},
+ {RUNE_C(0x01DA37), RUNE_C(0x01DA3A), GC_SO},
+ {RUNE_C(0x01DA3B), RUNE_C(0x01DA6C), GC_MN},
+ {RUNE_C(0x01DA6D), RUNE_C(0x01DA74), GC_SO},
+ {RUNE_C(0x01DA75), RUNE_C(0x01DA75), GC_MN},
+ {RUNE_C(0x01DA76), RUNE_C(0x01DA83), GC_SO},
+ {RUNE_C(0x01DA84), RUNE_C(0x01DA84), GC_MN},
+ {RUNE_C(0x01DA85), RUNE_C(0x01DA86), GC_SO},
+ {RUNE_C(0x01DA87), RUNE_C(0x01DA8B), GC_PO},
+ {RUNE_C(0x01DA9B), RUNE_C(0x01DA9F), GC_MN},
+ {RUNE_C(0x01DAA1), RUNE_C(0x01DAAF), GC_MN},
+ {RUNE_C(0x01DF00), RUNE_C(0x01DF09), GC_LL},
+ {RUNE_C(0x01DF0A), RUNE_C(0x01DF0A), GC_LO},
+ {RUNE_C(0x01DF0B), RUNE_C(0x01DF1E), GC_LL},
+ {RUNE_C(0x01DF25), RUNE_C(0x01DF2A), GC_LL},
+ {RUNE_C(0x01E000), RUNE_C(0x01E006), GC_MN},
+ {RUNE_C(0x01E008), RUNE_C(0x01E018), GC_MN},
+ {RUNE_C(0x01E01B), RUNE_C(0x01E021), GC_MN},
+ {RUNE_C(0x01E023), RUNE_C(0x01E024), GC_MN},
+ {RUNE_C(0x01E026), RUNE_C(0x01E02A), GC_MN},
+ {RUNE_C(0x01E030), RUNE_C(0x01E06D), GC_LM},
+ {RUNE_C(0x01E08F), RUNE_C(0x01E08F), GC_MN},
+ {RUNE_C(0x01E100), RUNE_C(0x01E12C), GC_LO},
+ {RUNE_C(0x01E130), RUNE_C(0x01E136), GC_MN},
+ {RUNE_C(0x01E137), RUNE_C(0x01E13D), GC_LM},
+ {RUNE_C(0x01E140), RUNE_C(0x01E149), GC_ND},
+ {RUNE_C(0x01E14E), RUNE_C(0x01E14E), GC_LO},
+ {RUNE_C(0x01E14F), RUNE_C(0x01E14F), GC_SO},
+ {RUNE_C(0x01E290), RUNE_C(0x01E2AD), GC_LO},
+ {RUNE_C(0x01E2AE), RUNE_C(0x01E2AE), GC_MN},
+ {RUNE_C(0x01E2C0), RUNE_C(0x01E2EB), GC_LO},
+ {RUNE_C(0x01E2EC), RUNE_C(0x01E2EF), GC_MN},
+ {RUNE_C(0x01E2F0), RUNE_C(0x01E2F9), GC_ND},
+ {RUNE_C(0x01E2FF), RUNE_C(0x01E2FF), GC_SC},
+ {RUNE_C(0x01E4D0), RUNE_C(0x01E4EA), GC_LO},
+ {RUNE_C(0x01E4EB), RUNE_C(0x01E4EB), GC_LM},
+ {RUNE_C(0x01E4EC), RUNE_C(0x01E4EF), GC_MN},
+ {RUNE_C(0x01E4F0), RUNE_C(0x01E4F9), GC_ND},
+ {RUNE_C(0x01E7E0), RUNE_C(0x01E7E6), GC_LO},
+ {RUNE_C(0x01E7E8), RUNE_C(0x01E7EB), GC_LO},
+ {RUNE_C(0x01E7ED), RUNE_C(0x01E7EE), GC_LO},
+ {RUNE_C(0x01E7F0), RUNE_C(0x01E7FE), GC_LO},
+ {RUNE_C(0x01E800), RUNE_C(0x01E8C4), GC_LO},
+ {RUNE_C(0x01E8C7), RUNE_C(0x01E8CF), GC_NO},
+ {RUNE_C(0x01E8D0), RUNE_C(0x01E8D6), GC_MN},
+ {RUNE_C(0x01E900), RUNE_C(0x01E921), GC_LU},
+ {RUNE_C(0x01E922), RUNE_C(0x01E943), GC_LL},
+ {RUNE_C(0x01E944), RUNE_C(0x01E94A), GC_MN},
+ {RUNE_C(0x01E94B), RUNE_C(0x01E94B), GC_LM},
+ {RUNE_C(0x01E950), RUNE_C(0x01E959), GC_ND},
+ {RUNE_C(0x01E95E), RUNE_C(0x01E95F), GC_PO},
+ {RUNE_C(0x01EC71), RUNE_C(0x01ECAB), GC_NO},
+ {RUNE_C(0x01ECAC), RUNE_C(0x01ECAC), GC_SO},
+ {RUNE_C(0x01ECAD), RUNE_C(0x01ECAF), GC_NO},
+ {RUNE_C(0x01ECB0), RUNE_C(0x01ECB0), GC_SC},
+ {RUNE_C(0x01ECB1), RUNE_C(0x01ECB4), GC_NO},
+ {RUNE_C(0x01ED01), RUNE_C(0x01ED2D), GC_NO},
+ {RUNE_C(0x01ED2E), RUNE_C(0x01ED2E), GC_SO},
+ {RUNE_C(0x01ED2F), RUNE_C(0x01ED3D), GC_NO},
+ {RUNE_C(0x01EE00), RUNE_C(0x01EE03), GC_LO},
+ {RUNE_C(0x01EE05), RUNE_C(0x01EE1F), GC_LO},
+ {RUNE_C(0x01EE21), RUNE_C(0x01EE22), GC_LO},
+ {RUNE_C(0x01EE24), RUNE_C(0x01EE24), GC_LO},
+ {RUNE_C(0x01EE27), RUNE_C(0x01EE27), GC_LO},
+ {RUNE_C(0x01EE29), RUNE_C(0x01EE32), GC_LO},
+ {RUNE_C(0x01EE34), RUNE_C(0x01EE37), GC_LO},
+ {RUNE_C(0x01EE39), RUNE_C(0x01EE39), GC_LO},
+ {RUNE_C(0x01EE3B), RUNE_C(0x01EE3B), GC_LO},
+ {RUNE_C(0x01EE42), RUNE_C(0x01EE42), GC_LO},
+ {RUNE_C(0x01EE47), RUNE_C(0x01EE47), GC_LO},
+ {RUNE_C(0x01EE49), RUNE_C(0x01EE49), GC_LO},
+ {RUNE_C(0x01EE4B), RUNE_C(0x01EE4B), GC_LO},
+ {RUNE_C(0x01EE4D), RUNE_C(0x01EE4F), GC_LO},
+ {RUNE_C(0x01EE51), RUNE_C(0x01EE52), GC_LO},
+ {RUNE_C(0x01EE54), RUNE_C(0x01EE54), GC_LO},
+ {RUNE_C(0x01EE57), RUNE_C(0x01EE57), GC_LO},
+ {RUNE_C(0x01EE59), RUNE_C(0x01EE59), GC_LO},
+ {RUNE_C(0x01EE5B), RUNE_C(0x01EE5B), GC_LO},
+ {RUNE_C(0x01EE5D), RUNE_C(0x01EE5D), GC_LO},
+ {RUNE_C(0x01EE5F), RUNE_C(0x01EE5F), GC_LO},
+ {RUNE_C(0x01EE61), RUNE_C(0x01EE62), GC_LO},
+ {RUNE_C(0x01EE64), RUNE_C(0x01EE64), GC_LO},
+ {RUNE_C(0x01EE67), RUNE_C(0x01EE6A), GC_LO},
+ {RUNE_C(0x01EE6C), RUNE_C(0x01EE72), GC_LO},
+ {RUNE_C(0x01EE74), RUNE_C(0x01EE77), GC_LO},
+ {RUNE_C(0x01EE79), RUNE_C(0x01EE7C), GC_LO},
+ {RUNE_C(0x01EE7E), RUNE_C(0x01EE7E), GC_LO},
+ {RUNE_C(0x01EE80), RUNE_C(0x01EE89), GC_LO},
+ {RUNE_C(0x01EE8B), RUNE_C(0x01EE9B), GC_LO},
+ {RUNE_C(0x01EEA1), RUNE_C(0x01EEA3), GC_LO},
+ {RUNE_C(0x01EEA5), RUNE_C(0x01EEA9), GC_LO},
+ {RUNE_C(0x01EEAB), RUNE_C(0x01EEBB), GC_LO},
+ {RUNE_C(0x01EEF0), RUNE_C(0x01EEF1), GC_SM},
+ {RUNE_C(0x01F000), RUNE_C(0x01F02B), GC_SO},
+ {RUNE_C(0x01F030), RUNE_C(0x01F093), GC_SO},
+ {RUNE_C(0x01F0A0), RUNE_C(0x01F0AE), GC_SO},
+ {RUNE_C(0x01F0B1), RUNE_C(0x01F0BF), GC_SO},
+ {RUNE_C(0x01F0C1), RUNE_C(0x01F0CF), GC_SO},
+ {RUNE_C(0x01F0D1), RUNE_C(0x01F0F5), GC_SO},
+ {RUNE_C(0x01F100), RUNE_C(0x01F10C), GC_NO},
+ {RUNE_C(0x01F10D), RUNE_C(0x01F1AD), GC_SO},
+ {RUNE_C(0x01F1E6), RUNE_C(0x01F202), GC_SO},
+ {RUNE_C(0x01F210), RUNE_C(0x01F23B), GC_SO},
+ {RUNE_C(0x01F240), RUNE_C(0x01F248), GC_SO},
+ {RUNE_C(0x01F250), RUNE_C(0x01F251), GC_SO},
+ {RUNE_C(0x01F260), RUNE_C(0x01F265), GC_SO},
+ {RUNE_C(0x01F300), RUNE_C(0x01F3FA), GC_SO},
+ {RUNE_C(0x01F3FB), RUNE_C(0x01F3FF), GC_SK},
+ {RUNE_C(0x01F400), RUNE_C(0x01F6D7), GC_SO},
+ {RUNE_C(0x01F6DC), RUNE_C(0x01F6EC), GC_SO},
+ {RUNE_C(0x01F6F0), RUNE_C(0x01F6FC), GC_SO},
+ {RUNE_C(0x01F700), RUNE_C(0x01F776), GC_SO},
+ {RUNE_C(0x01F77B), RUNE_C(0x01F7D9), GC_SO},
+ {RUNE_C(0x01F7E0), RUNE_C(0x01F7EB), GC_SO},
+ {RUNE_C(0x01F7F0), RUNE_C(0x01F7F0), GC_SO},
+ {RUNE_C(0x01F800), RUNE_C(0x01F80B), GC_SO},
+ {RUNE_C(0x01F810), RUNE_C(0x01F847), GC_SO},
+ {RUNE_C(0x01F850), RUNE_C(0x01F859), GC_SO},
+ {RUNE_C(0x01F860), RUNE_C(0x01F887), GC_SO},
+ {RUNE_C(0x01F890), RUNE_C(0x01F8AD), GC_SO},
+ {RUNE_C(0x01F8B0), RUNE_C(0x01F8B1), GC_SO},
+ {RUNE_C(0x01F900), RUNE_C(0x01FA53), GC_SO},
+ {RUNE_C(0x01FA60), RUNE_C(0x01FA6D), GC_SO},
+ {RUNE_C(0x01FA70), RUNE_C(0x01FA7C), GC_SO},
+ {RUNE_C(0x01FA80), RUNE_C(0x01FA88), GC_SO},
+ {RUNE_C(0x01FA90), RUNE_C(0x01FABD), GC_SO},
+ {RUNE_C(0x01FABF), RUNE_C(0x01FAC5), GC_SO},
+ {RUNE_C(0x01FACE), RUNE_C(0x01FADB), GC_SO},
+ {RUNE_C(0x01FAE0), RUNE_C(0x01FAE8), GC_SO},
+ {RUNE_C(0x01FAF0), RUNE_C(0x01FAF8), GC_SO},
+ {RUNE_C(0x01FB00), RUNE_C(0x01FB92), GC_SO},
+ {RUNE_C(0x01FB94), RUNE_C(0x01FBCA), GC_SO},
+ {RUNE_C(0x01FBF0), RUNE_C(0x01FBF9), GC_ND},
+ {RUNE_C(0x020000), RUNE_C(0x02A6DF), GC_LO},
+ {RUNE_C(0x02A700), RUNE_C(0x02B739), GC_LO},
+ {RUNE_C(0x02B740), RUNE_C(0x02B81D), GC_LO},
+ {RUNE_C(0x02B820), RUNE_C(0x02CEA1), GC_LO},
+ {RUNE_C(0x02CEB0), RUNE_C(0x02EBE0), GC_LO},
+ {RUNE_C(0x02EBF0), RUNE_C(0x02EE5D), GC_LO},
+ {RUNE_C(0x02F800), RUNE_C(0x02FA1D), GC_LO},
+ {RUNE_C(0x030000), RUNE_C(0x03134A), GC_LO},
+ {RUNE_C(0x031350), RUNE_C(0x0323AF), GC_LO},
+ {RUNE_C(0x0E0001), RUNE_C(0x0E0001), GC_CF},
+ {RUNE_C(0x0E0020), RUNE_C(0x0E007F), GC_CF},
+ {RUNE_C(0x0E0100), RUNE_C(0x0E01EF), GC_MN},
+ {RUNE_C(0x0F0000), RUNE_C(0x0FFFFD), GC_CO},
+ {RUNE_C(0x100000), RUNE_C(0x10FFFD), GC_CO},
+};
+
+#endif /* !RUNE_INTERNAL_RTYPE_GC_H */
diff --git a/vendor/librune/include/internal/rtype/jg.h b/vendor/librune/include/internal/rtype/jg.h
new file mode 100644
index 0000000..90f273b
--- /dev/null
+++ b/vendor/librune/include/internal/rtype/jg.h
@@ -0,0 +1,230 @@
+/* This file is autogenerated by gen/rtype-jg; DO NOT EDIT. */
+
+#ifndef RUNE_INTERNAL_RTYPE_JG_H
+#define RUNE_INTERNAL_RTYPE_JG_H
+
+/* IWYU pragma: private */
+/* clang-format off */
+
+#include "../types.h"
+#include "../../rtype.h"
+#include "../../rune.h"
+
+static const struct {
+ rune lo, hi;
+ rprop_jg_bf val;
+} rtype_jg_tbl[] = {
+ {RUNE_C(0x000620), RUNE_C(0x000620), JG_YEH},
+ {RUNE_C(0x000622), RUNE_C(0x000623), JG_ALEF},
+ {RUNE_C(0x000624), RUNE_C(0x000624), JG_WAW},
+ {RUNE_C(0x000625), RUNE_C(0x000625), JG_ALEF},
+ {RUNE_C(0x000626), RUNE_C(0x000626), JG_YEH},
+ {RUNE_C(0x000627), RUNE_C(0x000627), JG_ALEF},
+ {RUNE_C(0x000628), RUNE_C(0x000628), JG_BEH},
+ {RUNE_C(0x000629), RUNE_C(0x000629), JG_TEH_MARBUTA},
+ {RUNE_C(0x00062A), RUNE_C(0x00062B), JG_BEH},
+ {RUNE_C(0x00062C), RUNE_C(0x00062E), JG_HAH},
+ {RUNE_C(0x00062F), RUNE_C(0x000630), JG_DAL},
+ {RUNE_C(0x000631), RUNE_C(0x000632), JG_REH},
+ {RUNE_C(0x000633), RUNE_C(0x000634), JG_SEEN},
+ {RUNE_C(0x000635), RUNE_C(0x000636), JG_SAD},
+ {RUNE_C(0x000637), RUNE_C(0x000638), JG_TAH},
+ {RUNE_C(0x000639), RUNE_C(0x00063A), JG_AIN},
+ {RUNE_C(0x00063B), RUNE_C(0x00063C), JG_GAF},
+ {RUNE_C(0x00063D), RUNE_C(0x00063F), JG_FARSI_YEH},
+ {RUNE_C(0x000641), RUNE_C(0x000641), JG_FEH},
+ {RUNE_C(0x000642), RUNE_C(0x000642), JG_QAF},
+ {RUNE_C(0x000643), RUNE_C(0x000643), JG_KAF},
+ {RUNE_C(0x000644), RUNE_C(0x000644), JG_LAM},
+ {RUNE_C(0x000645), RUNE_C(0x000645), JG_MEEM},
+ {RUNE_C(0x000646), RUNE_C(0x000646), JG_NOON},
+ {RUNE_C(0x000647), RUNE_C(0x000647), JG_HEH},
+ {RUNE_C(0x000648), RUNE_C(0x000648), JG_WAW},
+ {RUNE_C(0x000649), RUNE_C(0x00064A), JG_YEH},
+ {RUNE_C(0x00066E), RUNE_C(0x00066E), JG_BEH},
+ {RUNE_C(0x00066F), RUNE_C(0x00066F), JG_QAF},
+ {RUNE_C(0x000671), RUNE_C(0x000673), JG_ALEF},
+ {RUNE_C(0x000675), RUNE_C(0x000675), JG_ALEF},
+ {RUNE_C(0x000676), RUNE_C(0x000677), JG_WAW},
+ {RUNE_C(0x000678), RUNE_C(0x000678), JG_YEH},
+ {RUNE_C(0x000679), RUNE_C(0x000680), JG_BEH},
+ {RUNE_C(0x000681), RUNE_C(0x000687), JG_HAH},
+ {RUNE_C(0x000688), RUNE_C(0x000690), JG_DAL},
+ {RUNE_C(0x000691), RUNE_C(0x000699), JG_REH},
+ {RUNE_C(0x00069A), RUNE_C(0x00069C), JG_SEEN},
+ {RUNE_C(0x00069D), RUNE_C(0x00069E), JG_SAD},
+ {RUNE_C(0x00069F), RUNE_C(0x00069F), JG_TAH},
+ {RUNE_C(0x0006A0), RUNE_C(0x0006A0), JG_AIN},
+ {RUNE_C(0x0006A1), RUNE_C(0x0006A6), JG_FEH},
+ {RUNE_C(0x0006A7), RUNE_C(0x0006A8), JG_QAF},
+ {RUNE_C(0x0006A9), RUNE_C(0x0006A9), JG_GAF},
+ {RUNE_C(0x0006AA), RUNE_C(0x0006AA), JG_SWASH_KAF},
+ {RUNE_C(0x0006AB), RUNE_C(0x0006AB), JG_GAF},
+ {RUNE_C(0x0006AC), RUNE_C(0x0006AE), JG_KAF},
+ {RUNE_C(0x0006AF), RUNE_C(0x0006B4), JG_GAF},
+ {RUNE_C(0x0006B5), RUNE_C(0x0006B8), JG_LAM},
+ {RUNE_C(0x0006B9), RUNE_C(0x0006BC), JG_NOON},
+ {RUNE_C(0x0006BD), RUNE_C(0x0006BD), JG_NYA},
+ {RUNE_C(0x0006BE), RUNE_C(0x0006BE), JG_KNOTTED_HEH},
+ {RUNE_C(0x0006BF), RUNE_C(0x0006BF), JG_HAH},
+ {RUNE_C(0x0006C0), RUNE_C(0x0006C0), JG_TEH_MARBUTA},
+ {RUNE_C(0x0006C1), RUNE_C(0x0006C2), JG_HEH_GOAL},
+ {RUNE_C(0x0006C3), RUNE_C(0x0006C3), JG_TEH_MARBUTA_GOAL},
+ {RUNE_C(0x0006C4), RUNE_C(0x0006CB), JG_WAW},
+ {RUNE_C(0x0006CC), RUNE_C(0x0006CC), JG_FARSI_YEH},
+ {RUNE_C(0x0006CD), RUNE_C(0x0006CD), JG_YEH_WITH_TAIL},
+ {RUNE_C(0x0006CE), RUNE_C(0x0006CE), JG_FARSI_YEH},
+ {RUNE_C(0x0006CF), RUNE_C(0x0006CF), JG_WAW},
+ {RUNE_C(0x0006D0), RUNE_C(0x0006D1), JG_YEH},
+ {RUNE_C(0x0006D2), RUNE_C(0x0006D3), JG_YEH_BARREE},
+ {RUNE_C(0x0006D5), RUNE_C(0x0006D5), JG_TEH_MARBUTA},
+ {RUNE_C(0x0006EE), RUNE_C(0x0006EE), JG_DAL},
+ {RUNE_C(0x0006EF), RUNE_C(0x0006EF), JG_REH},
+ {RUNE_C(0x0006FA), RUNE_C(0x0006FA), JG_SEEN},
+ {RUNE_C(0x0006FB), RUNE_C(0x0006FB), JG_SAD},
+ {RUNE_C(0x0006FC), RUNE_C(0x0006FC), JG_AIN},
+ {RUNE_C(0x0006FF), RUNE_C(0x0006FF), JG_KNOTTED_HEH},
+ {RUNE_C(0x000710), RUNE_C(0x000710), JG_ALAPH},
+ {RUNE_C(0x000712), RUNE_C(0x000712), JG_BETH},
+ {RUNE_C(0x000713), RUNE_C(0x000714), JG_GAMAL},
+ {RUNE_C(0x000715), RUNE_C(0x000716), JG_DALATH_RISH},
+ {RUNE_C(0x000717), RUNE_C(0x000717), JG_HE},
+ {RUNE_C(0x000718), RUNE_C(0x000718), JG_SYRIAC_WAW},
+ {RUNE_C(0x000719), RUNE_C(0x000719), JG_ZAIN},
+ {RUNE_C(0x00071A), RUNE_C(0x00071A), JG_HETH},
+ {RUNE_C(0x00071B), RUNE_C(0x00071C), JG_TETH},
+ {RUNE_C(0x00071D), RUNE_C(0x00071D), JG_YUDH},
+ {RUNE_C(0x00071E), RUNE_C(0x00071E), JG_YUDH_HE},
+ {RUNE_C(0x00071F), RUNE_C(0x00071F), JG_KAPH},
+ {RUNE_C(0x000720), RUNE_C(0x000720), JG_LAMADH},
+ {RUNE_C(0x000721), RUNE_C(0x000721), JG_MIM},
+ {RUNE_C(0x000722), RUNE_C(0x000722), JG_NUN},
+ {RUNE_C(0x000723), RUNE_C(0x000723), JG_SEMKATH},
+ {RUNE_C(0x000724), RUNE_C(0x000724), JG_FINAL_SEMKATH},
+ {RUNE_C(0x000725), RUNE_C(0x000725), JG_E},
+ {RUNE_C(0x000726), RUNE_C(0x000726), JG_PE},
+ {RUNE_C(0x000727), RUNE_C(0x000727), JG_REVERSED_PE},
+ {RUNE_C(0x000728), RUNE_C(0x000728), JG_SADHE},
+ {RUNE_C(0x000729), RUNE_C(0x000729), JG_QAPH},
+ {RUNE_C(0x00072A), RUNE_C(0x00072A), JG_DALATH_RISH},
+ {RUNE_C(0x00072B), RUNE_C(0x00072B), JG_SHIN},
+ {RUNE_C(0x00072C), RUNE_C(0x00072C), JG_TAW},
+ {RUNE_C(0x00072D), RUNE_C(0x00072D), JG_BETH},
+ {RUNE_C(0x00072E), RUNE_C(0x00072E), JG_GAMAL},
+ {RUNE_C(0x00072F), RUNE_C(0x00072F), JG_DALATH_RISH},
+ {RUNE_C(0x00074D), RUNE_C(0x00074D), JG_ZHAIN},
+ {RUNE_C(0x00074E), RUNE_C(0x00074E), JG_KHAPH},
+ {RUNE_C(0x00074F), RUNE_C(0x00074F), JG_FE},
+ {RUNE_C(0x000750), RUNE_C(0x000756), JG_BEH},
+ {RUNE_C(0x000757), RUNE_C(0x000758), JG_HAH},
+ {RUNE_C(0x000759), RUNE_C(0x00075A), JG_DAL},
+ {RUNE_C(0x00075B), RUNE_C(0x00075B), JG_REH},
+ {RUNE_C(0x00075C), RUNE_C(0x00075C), JG_SEEN},
+ {RUNE_C(0x00075D), RUNE_C(0x00075F), JG_AIN},
+ {RUNE_C(0x000760), RUNE_C(0x000761), JG_FEH},
+ {RUNE_C(0x000762), RUNE_C(0x000764), JG_GAF},
+ {RUNE_C(0x000765), RUNE_C(0x000766), JG_MEEM},
+ {RUNE_C(0x000767), RUNE_C(0x000769), JG_NOON},
+ {RUNE_C(0x00076A), RUNE_C(0x00076A), JG_LAM},
+ {RUNE_C(0x00076B), RUNE_C(0x00076C), JG_REH},
+ {RUNE_C(0x00076D), RUNE_C(0x00076D), JG_SEEN},
+ {RUNE_C(0x00076E), RUNE_C(0x00076F), JG_HAH},
+ {RUNE_C(0x000770), RUNE_C(0x000770), JG_SEEN},
+ {RUNE_C(0x000771), RUNE_C(0x000771), JG_REH},
+ {RUNE_C(0x000772), RUNE_C(0x000772), JG_HAH},
+ {RUNE_C(0x000773), RUNE_C(0x000774), JG_ALEF},
+ {RUNE_C(0x000775), RUNE_C(0x000776), JG_FARSI_YEH},
+ {RUNE_C(0x000777), RUNE_C(0x000777), JG_YEH},
+ {RUNE_C(0x000778), RUNE_C(0x000779), JG_WAW},
+ {RUNE_C(0x00077A), RUNE_C(0x00077B), JG_BURUSHASKI_YEH_BARREE},
+ {RUNE_C(0x00077C), RUNE_C(0x00077C), JG_HAH},
+ {RUNE_C(0x00077D), RUNE_C(0x00077E), JG_SEEN},
+ {RUNE_C(0x00077F), RUNE_C(0x00077F), JG_KAF},
+ {RUNE_C(0x000860), RUNE_C(0x000860), JG_MALAYALAM_NGA},
+ {RUNE_C(0x000861), RUNE_C(0x000861), JG_MALAYALAM_JA},
+ {RUNE_C(0x000862), RUNE_C(0x000862), JG_MALAYALAM_NYA},
+ {RUNE_C(0x000863), RUNE_C(0x000863), JG_MALAYALAM_TTA},
+ {RUNE_C(0x000864), RUNE_C(0x000864), JG_MALAYALAM_NNA},
+ {RUNE_C(0x000865), RUNE_C(0x000865), JG_MALAYALAM_NNNA},
+ {RUNE_C(0x000866), RUNE_C(0x000866), JG_MALAYALAM_BHA},
+ {RUNE_C(0x000867), RUNE_C(0x000867), JG_MALAYALAM_RA},
+ {RUNE_C(0x000868), RUNE_C(0x000868), JG_MALAYALAM_LLA},
+ {RUNE_C(0x000869), RUNE_C(0x000869), JG_MALAYALAM_LLLA},
+ {RUNE_C(0x00086A), RUNE_C(0x00086A), JG_MALAYALAM_SSA},
+ {RUNE_C(0x000870), RUNE_C(0x000882), JG_ALEF},
+ {RUNE_C(0x000886), RUNE_C(0x000886), JG_THIN_YEH},
+ {RUNE_C(0x000889), RUNE_C(0x000889), JG_NOON},
+ {RUNE_C(0x00088A), RUNE_C(0x00088A), JG_HAH},
+ {RUNE_C(0x00088B), RUNE_C(0x00088C), JG_TAH},
+ {RUNE_C(0x00088D), RUNE_C(0x00088D), JG_GAF},
+ {RUNE_C(0x00088E), RUNE_C(0x00088E), JG_VERTICAL_TAIL},
+ {RUNE_C(0x0008A0), RUNE_C(0x0008A1), JG_BEH},
+ {RUNE_C(0x0008A2), RUNE_C(0x0008A2), JG_HAH},
+ {RUNE_C(0x0008A3), RUNE_C(0x0008A3), JG_TAH},
+ {RUNE_C(0x0008A4), RUNE_C(0x0008A4), JG_FEH},
+ {RUNE_C(0x0008A5), RUNE_C(0x0008A5), JG_QAF},
+ {RUNE_C(0x0008A6), RUNE_C(0x0008A6), JG_LAM},
+ {RUNE_C(0x0008A7), RUNE_C(0x0008A7), JG_MEEM},
+ {RUNE_C(0x0008A8), RUNE_C(0x0008A9), JG_YEH},
+ {RUNE_C(0x0008AA), RUNE_C(0x0008AA), JG_REH},
+ {RUNE_C(0x0008AB), RUNE_C(0x0008AB), JG_WAW},
+ {RUNE_C(0x0008AC), RUNE_C(0x0008AC), JG_ROHINGYA_YEH},
+ {RUNE_C(0x0008AE), RUNE_C(0x0008AE), JG_DAL},
+ {RUNE_C(0x0008AF), RUNE_C(0x0008AF), JG_SAD},
+ {RUNE_C(0x0008B0), RUNE_C(0x0008B0), JG_GAF},
+ {RUNE_C(0x0008B1), RUNE_C(0x0008B1), JG_STRAIGHT_WAW},
+ {RUNE_C(0x0008B2), RUNE_C(0x0008B2), JG_REH},
+ {RUNE_C(0x0008B3), RUNE_C(0x0008B3), JG_AIN},
+ {RUNE_C(0x0008B4), RUNE_C(0x0008B4), JG_KAF},
+ {RUNE_C(0x0008B5), RUNE_C(0x0008B5), JG_QAF},
+ {RUNE_C(0x0008B6), RUNE_C(0x0008B8), JG_BEH},
+ {RUNE_C(0x0008B9), RUNE_C(0x0008B9), JG_REH},
+ {RUNE_C(0x0008BA), RUNE_C(0x0008BA), JG_YEH},
+ {RUNE_C(0x0008BB), RUNE_C(0x0008BB), JG_AFRICAN_FEH},
+ {RUNE_C(0x0008BC), RUNE_C(0x0008BC), JG_AFRICAN_QAF},
+ {RUNE_C(0x0008BD), RUNE_C(0x0008BD), JG_AFRICAN_NOON},
+ {RUNE_C(0x0008BE), RUNE_C(0x0008C0), JG_BEH},
+ {RUNE_C(0x0008C1), RUNE_C(0x0008C1), JG_HAH},
+ {RUNE_C(0x0008C2), RUNE_C(0x0008C2), JG_GAF},
+ {RUNE_C(0x0008C3), RUNE_C(0x0008C3), JG_AIN},
+ {RUNE_C(0x0008C4), RUNE_C(0x0008C4), JG_AFRICAN_QAF},
+ {RUNE_C(0x0008C5), RUNE_C(0x0008C6), JG_HAH},
+ {RUNE_C(0x0008C7), RUNE_C(0x0008C7), JG_LAM},
+ {RUNE_C(0x0008C8), RUNE_C(0x0008C8), JG_GAF},
+ {RUNE_C(0x010AC0), RUNE_C(0x010AC0), JG_MANICHAEAN_ALEPH},
+ {RUNE_C(0x010AC1), RUNE_C(0x010AC2), JG_MANICHAEAN_BETH},
+ {RUNE_C(0x010AC3), RUNE_C(0x010AC4), JG_MANICHAEAN_GIMEL},
+ {RUNE_C(0x010AC5), RUNE_C(0x010AC5), JG_MANICHAEAN_DALETH},
+ {RUNE_C(0x010AC7), RUNE_C(0x010AC7), JG_MANICHAEAN_WAW},
+ {RUNE_C(0x010AC9), RUNE_C(0x010ACA), JG_MANICHAEAN_ZAYIN},
+ {RUNE_C(0x010ACD), RUNE_C(0x010ACD), JG_MANICHAEAN_HETH},
+ {RUNE_C(0x010ACE), RUNE_C(0x010ACE), JG_MANICHAEAN_TETH},
+ {RUNE_C(0x010ACF), RUNE_C(0x010ACF), JG_MANICHAEAN_YODH},
+ {RUNE_C(0x010AD0), RUNE_C(0x010AD2), JG_MANICHAEAN_KAPH},
+ {RUNE_C(0x010AD3), RUNE_C(0x010AD3), JG_MANICHAEAN_LAMEDH},
+ {RUNE_C(0x010AD4), RUNE_C(0x010AD4), JG_MANICHAEAN_DHAMEDH},
+ {RUNE_C(0x010AD5), RUNE_C(0x010AD5), JG_MANICHAEAN_THAMEDH},
+ {RUNE_C(0x010AD6), RUNE_C(0x010AD6), JG_MANICHAEAN_MEM},
+ {RUNE_C(0x010AD7), RUNE_C(0x010AD7), JG_MANICHAEAN_NUN},
+ {RUNE_C(0x010AD8), RUNE_C(0x010AD8), JG_MANICHAEAN_SAMEKH},
+ {RUNE_C(0x010AD9), RUNE_C(0x010ADA), JG_MANICHAEAN_AYIN},
+ {RUNE_C(0x010ADB), RUNE_C(0x010ADC), JG_MANICHAEAN_PE},
+ {RUNE_C(0x010ADD), RUNE_C(0x010ADD), JG_MANICHAEAN_SADHE},
+ {RUNE_C(0x010ADE), RUNE_C(0x010AE0), JG_MANICHAEAN_QOPH},
+ {RUNE_C(0x010AE1), RUNE_C(0x010AE1), JG_MANICHAEAN_RESH},
+ {RUNE_C(0x010AE4), RUNE_C(0x010AE4), JG_MANICHAEAN_TAW},
+ {RUNE_C(0x010AEB), RUNE_C(0x010AEB), JG_MANICHAEAN_ONE},
+ {RUNE_C(0x010AEC), RUNE_C(0x010AEC), JG_MANICHAEAN_FIVE},
+ {RUNE_C(0x010AED), RUNE_C(0x010AED), JG_MANICHAEAN_TEN},
+ {RUNE_C(0x010AEE), RUNE_C(0x010AEE), JG_MANICHAEAN_TWENTY},
+ {RUNE_C(0x010AEF), RUNE_C(0x010AEF), JG_MANICHAEAN_HUNDRED},
+ {RUNE_C(0x010D02), RUNE_C(0x010D02), JG_HANIFI_ROHINGYA_PA},
+ {RUNE_C(0x010D09), RUNE_C(0x010D09), JG_HANIFI_ROHINGYA_PA},
+ {RUNE_C(0x010D19), RUNE_C(0x010D19), JG_HANIFI_ROHINGYA_KINNA_YA},
+ {RUNE_C(0x010D1C), RUNE_C(0x010D1C), JG_HANIFI_ROHINGYA_PA},
+ {RUNE_C(0x010D1E), RUNE_C(0x010D1E), JG_HANIFI_ROHINGYA_KINNA_YA},
+ {RUNE_C(0x010D20), RUNE_C(0x010D20), JG_HANIFI_ROHINGYA_KINNA_YA},
+ {RUNE_C(0x010D23), RUNE_C(0x010D23), JG_HANIFI_ROHINGYA_KINNA_YA},
+};
+
+#endif /* !RUNE_INTERNAL_RTYPE_JG_H */
diff --git a/vendor/librune/include/internal/rtype/jt.h b/vendor/librune/include/internal/rtype/jt.h
new file mode 100644
index 0000000..bebcaa4
--- /dev/null
+++ b/vendor/librune/include/internal/rtype/jt.h
@@ -0,0 +1,560 @@
+/* This file is autogenerated by gen/rtype-jt; DO NOT EDIT. */
+
+#ifndef RUNE_INTERNAL_RTYPE_JT_H
+#define RUNE_INTERNAL_RTYPE_JT_H
+
+/* IWYU pragma: private */
+/* clang-format off */
+
+#include "../types.h"
+#include "../../rtype.h"
+#include "../../rune.h"
+
+static const rprop_jt_bf rtype_jt_lat1_tbl[] = {
+ JT_U, JT_U, JT_U, JT_U, JT_U, JT_U, JT_U, JT_U,
+ JT_U, JT_U, JT_U, JT_U, JT_U, JT_U, JT_U, JT_U,
+ JT_U, JT_U, JT_U, JT_U, JT_U, JT_U, JT_U, JT_U,
+ JT_U, JT_U, JT_U, JT_U, JT_U, JT_U, JT_U, JT_U,
+ JT_U, JT_U, JT_U, JT_U, JT_U, JT_U, JT_U, JT_U,
+ JT_U, JT_U, JT_U, JT_U, JT_U, JT_U, JT_U, JT_U,
+ JT_U, JT_U, JT_U, JT_U, JT_U, JT_U, JT_U, JT_U,
+ JT_U, JT_U, JT_U, JT_U, JT_U, JT_U, JT_U, JT_U,
+ JT_U, JT_U, JT_U, JT_U, JT_U, JT_U, JT_U, JT_U,
+ JT_U, JT_U, JT_U, JT_U, JT_U, JT_U, JT_U, JT_U,
+ JT_U, JT_U, JT_U, JT_U, JT_U, JT_U, JT_U, JT_U,
+ JT_U, JT_U, JT_U, JT_U, JT_U, JT_U, JT_U, JT_U,
+ JT_U, JT_U, JT_U, JT_U, JT_U, JT_U, JT_U, JT_U,
+ JT_U, JT_U, JT_U, JT_U, JT_U, JT_U, JT_U, JT_U,
+ JT_U, JT_U, JT_U, JT_U, JT_U, JT_U, JT_U, JT_U,
+ JT_U, JT_U, JT_U, JT_U, JT_U, JT_U, JT_U, JT_U,
+ JT_U, JT_U, JT_U, JT_U, JT_U, JT_U, JT_U, JT_U,
+ JT_U, JT_U, JT_U, JT_U, JT_U, JT_U, JT_U, JT_U,
+ JT_U, JT_U, JT_U, JT_U, JT_U, JT_U, JT_U, JT_U,
+ JT_U, JT_U, JT_U, JT_U, JT_U, JT_U, JT_U, JT_U,
+ JT_U, JT_U, JT_U, JT_U, JT_U, JT_U, JT_U, JT_U,
+ JT_U, JT_U, JT_U, JT_U, JT_U, JT_T, JT_U, JT_U,
+ JT_U, JT_U, JT_U, JT_U, JT_U, JT_U, JT_U, JT_U,
+ JT_U, JT_U, JT_U, JT_U, JT_U, JT_U, JT_U, JT_U,
+ JT_U, JT_U, JT_U, JT_U, JT_U, JT_U, JT_U, JT_U,
+ JT_U, JT_U, JT_U, JT_U, JT_U, JT_U, JT_U, JT_U,
+ JT_U, JT_U, JT_U, JT_U, JT_U, JT_U, JT_U, JT_U,
+ JT_U, JT_U, JT_U, JT_U, JT_U, JT_U, JT_U, JT_U,
+ JT_U, JT_U, JT_U, JT_U, JT_U, JT_U, JT_U, JT_U,
+ JT_U, JT_U, JT_U, JT_U, JT_U, JT_U, JT_U, JT_U,
+ JT_U, JT_U, JT_U, JT_U, JT_U, JT_U, JT_U, JT_U,
+ JT_U, JT_U, JT_U, JT_U, JT_U, JT_U, JT_U, JT_U,
+};
+
+static const struct {
+ rune lo, hi;
+ rprop_jt_bf val;
+} rtype_jt_tbl[] = {
+ {RUNE_C(0x0000AD), RUNE_C(0x0000AD), JT_T},
+ {RUNE_C(0x000300), RUNE_C(0x00036F), JT_T},
+ {RUNE_C(0x000483), RUNE_C(0x000489), JT_T},
+ {RUNE_C(0x000591), RUNE_C(0x0005BD), JT_T},
+ {RUNE_C(0x0005BF), RUNE_C(0x0005BF), JT_T},
+ {RUNE_C(0x0005C1), RUNE_C(0x0005C2), JT_T},
+ {RUNE_C(0x0005C4), RUNE_C(0x0005C5), JT_T},
+ {RUNE_C(0x0005C7), RUNE_C(0x0005C7), JT_T},
+ {RUNE_C(0x000610), RUNE_C(0x00061A), JT_T},
+ {RUNE_C(0x00061C), RUNE_C(0x00061C), JT_T},
+ {RUNE_C(0x000620), RUNE_C(0x000620), JT_D},
+ {RUNE_C(0x000622), RUNE_C(0x000625), JT_R},
+ {RUNE_C(0x000626), RUNE_C(0x000626), JT_D},
+ {RUNE_C(0x000627), RUNE_C(0x000627), JT_R},
+ {RUNE_C(0x000628), RUNE_C(0x000628), JT_D},
+ {RUNE_C(0x000629), RUNE_C(0x000629), JT_R},
+ {RUNE_C(0x00062A), RUNE_C(0x00062E), JT_D},
+ {RUNE_C(0x00062F), RUNE_C(0x000632), JT_R},
+ {RUNE_C(0x000633), RUNE_C(0x00063F), JT_D},
+ {RUNE_C(0x000640), RUNE_C(0x000640), JT_C},
+ {RUNE_C(0x000641), RUNE_C(0x000647), JT_D},
+ {RUNE_C(0x000648), RUNE_C(0x000648), JT_R},
+ {RUNE_C(0x000649), RUNE_C(0x00064A), JT_D},
+ {RUNE_C(0x00064B), RUNE_C(0x00065F), JT_T},
+ {RUNE_C(0x00066E), RUNE_C(0x00066F), JT_D},
+ {RUNE_C(0x000670), RUNE_C(0x000670), JT_T},
+ {RUNE_C(0x000671), RUNE_C(0x000673), JT_R},
+ {RUNE_C(0x000675), RUNE_C(0x000677), JT_R},
+ {RUNE_C(0x000678), RUNE_C(0x000687), JT_D},
+ {RUNE_C(0x000688), RUNE_C(0x000699), JT_R},
+ {RUNE_C(0x00069A), RUNE_C(0x0006BF), JT_D},
+ {RUNE_C(0x0006C0), RUNE_C(0x0006C0), JT_R},
+ {RUNE_C(0x0006C1), RUNE_C(0x0006C2), JT_D},
+ {RUNE_C(0x0006C3), RUNE_C(0x0006CB), JT_R},
+ {RUNE_C(0x0006CC), RUNE_C(0x0006CC), JT_D},
+ {RUNE_C(0x0006CD), RUNE_C(0x0006CD), JT_R},
+ {RUNE_C(0x0006CE), RUNE_C(0x0006CE), JT_D},
+ {RUNE_C(0x0006CF), RUNE_C(0x0006CF), JT_R},
+ {RUNE_C(0x0006D0), RUNE_C(0x0006D1), JT_D},
+ {RUNE_C(0x0006D2), RUNE_C(0x0006D3), JT_R},
+ {RUNE_C(0x0006D5), RUNE_C(0x0006D5), JT_R},
+ {RUNE_C(0x0006D6), RUNE_C(0x0006DC), JT_T},
+ {RUNE_C(0x0006DF), RUNE_C(0x0006E4), JT_T},
+ {RUNE_C(0x0006E7), RUNE_C(0x0006E8), JT_T},
+ {RUNE_C(0x0006EA), RUNE_C(0x0006ED), JT_T},
+ {RUNE_C(0x0006EE), RUNE_C(0x0006EF), JT_R},
+ {RUNE_C(0x0006FA), RUNE_C(0x0006FC), JT_D},
+ {RUNE_C(0x0006FF), RUNE_C(0x0006FF), JT_D},
+ {RUNE_C(0x00070F), RUNE_C(0x00070F), JT_T},
+ {RUNE_C(0x000710), RUNE_C(0x000710), JT_R},
+ {RUNE_C(0x000711), RUNE_C(0x000711), JT_T},
+ {RUNE_C(0x000712), RUNE_C(0x000714), JT_D},
+ {RUNE_C(0x000715), RUNE_C(0x000719), JT_R},
+ {RUNE_C(0x00071A), RUNE_C(0x00071D), JT_D},
+ {RUNE_C(0x00071E), RUNE_C(0x00071E), JT_R},
+ {RUNE_C(0x00071F), RUNE_C(0x000727), JT_D},
+ {RUNE_C(0x000728), RUNE_C(0x000728), JT_R},
+ {RUNE_C(0x000729), RUNE_C(0x000729), JT_D},
+ {RUNE_C(0x00072A), RUNE_C(0x00072A), JT_R},
+ {RUNE_C(0x00072B), RUNE_C(0x00072B), JT_D},
+ {RUNE_C(0x00072C), RUNE_C(0x00072C), JT_R},
+ {RUNE_C(0x00072D), RUNE_C(0x00072E), JT_D},
+ {RUNE_C(0x00072F), RUNE_C(0x00072F), JT_R},
+ {RUNE_C(0x000730), RUNE_C(0x00074A), JT_T},
+ {RUNE_C(0x00074D), RUNE_C(0x00074D), JT_R},
+ {RUNE_C(0x00074E), RUNE_C(0x000758), JT_D},
+ {RUNE_C(0x000759), RUNE_C(0x00075B), JT_R},
+ {RUNE_C(0x00075C), RUNE_C(0x00076A), JT_D},
+ {RUNE_C(0x00076B), RUNE_C(0x00076C), JT_R},
+ {RUNE_C(0x00076D), RUNE_C(0x000770), JT_D},
+ {RUNE_C(0x000771), RUNE_C(0x000771), JT_R},
+ {RUNE_C(0x000772), RUNE_C(0x000772), JT_D},
+ {RUNE_C(0x000773), RUNE_C(0x000774), JT_R},
+ {RUNE_C(0x000775), RUNE_C(0x000777), JT_D},
+ {RUNE_C(0x000778), RUNE_C(0x000779), JT_R},
+ {RUNE_C(0x00077A), RUNE_C(0x00077F), JT_D},
+ {RUNE_C(0x0007A6), RUNE_C(0x0007B0), JT_T},
+ {RUNE_C(0x0007CA), RUNE_C(0x0007EA), JT_D},
+ {RUNE_C(0x0007EB), RUNE_C(0x0007F3), JT_T},
+ {RUNE_C(0x0007FA), RUNE_C(0x0007FA), JT_C},
+ {RUNE_C(0x0007FD), RUNE_C(0x0007FD), JT_T},
+ {RUNE_C(0x000816), RUNE_C(0x000819), JT_T},
+ {RUNE_C(0x00081B), RUNE_C(0x000823), JT_T},
+ {RUNE_C(0x000825), RUNE_C(0x000827), JT_T},
+ {RUNE_C(0x000829), RUNE_C(0x00082D), JT_T},
+ {RUNE_C(0x000840), RUNE_C(0x000840), JT_R},
+ {RUNE_C(0x000841), RUNE_C(0x000845), JT_D},
+ {RUNE_C(0x000846), RUNE_C(0x000847), JT_R},
+ {RUNE_C(0x000848), RUNE_C(0x000848), JT_D},
+ {RUNE_C(0x000849), RUNE_C(0x000849), JT_R},
+ {RUNE_C(0x00084A), RUNE_C(0x000853), JT_D},
+ {RUNE_C(0x000854), RUNE_C(0x000854), JT_R},
+ {RUNE_C(0x000855), RUNE_C(0x000855), JT_D},
+ {RUNE_C(0x000856), RUNE_C(0x000858), JT_R},
+ {RUNE_C(0x000859), RUNE_C(0x00085B), JT_T},
+ {RUNE_C(0x000860), RUNE_C(0x000860), JT_D},
+ {RUNE_C(0x000862), RUNE_C(0x000865), JT_D},
+ {RUNE_C(0x000867), RUNE_C(0x000867), JT_R},
+ {RUNE_C(0x000868), RUNE_C(0x000868), JT_D},
+ {RUNE_C(0x000869), RUNE_C(0x00086A), JT_R},
+ {RUNE_C(0x000870), RUNE_C(0x000882), JT_R},
+ {RUNE_C(0x000883), RUNE_C(0x000885), JT_C},
+ {RUNE_C(0x000886), RUNE_C(0x000886), JT_D},
+ {RUNE_C(0x000889), RUNE_C(0x00088D), JT_D},
+ {RUNE_C(0x00088E), RUNE_C(0x00088E), JT_R},
+ {RUNE_C(0x000898), RUNE_C(0x00089F), JT_T},
+ {RUNE_C(0x0008A0), RUNE_C(0x0008A9), JT_D},
+ {RUNE_C(0x0008AA), RUNE_C(0x0008AC), JT_R},
+ {RUNE_C(0x0008AE), RUNE_C(0x0008AE), JT_R},
+ {RUNE_C(0x0008AF), RUNE_C(0x0008B0), JT_D},
+ {RUNE_C(0x0008B1), RUNE_C(0x0008B2), JT_R},
+ {RUNE_C(0x0008B3), RUNE_C(0x0008B8), JT_D},
+ {RUNE_C(0x0008B9), RUNE_C(0x0008B9), JT_R},
+ {RUNE_C(0x0008BA), RUNE_C(0x0008C8), JT_D},
+ {RUNE_C(0x0008CA), RUNE_C(0x0008E1), JT_T},
+ {RUNE_C(0x0008E3), RUNE_C(0x000902), JT_T},
+ {RUNE_C(0x00093A), RUNE_C(0x00093A), JT_T},
+ {RUNE_C(0x00093C), RUNE_C(0x00093C), JT_T},
+ {RUNE_C(0x000941), RUNE_C(0x000948), JT_T},
+ {RUNE_C(0x00094D), RUNE_C(0x00094D), JT_T},
+ {RUNE_C(0x000951), RUNE_C(0x000957), JT_T},
+ {RUNE_C(0x000962), RUNE_C(0x000963), JT_T},
+ {RUNE_C(0x000981), RUNE_C(0x000981), JT_T},
+ {RUNE_C(0x0009BC), RUNE_C(0x0009BC), JT_T},
+ {RUNE_C(0x0009C1), RUNE_C(0x0009C4), JT_T},
+ {RUNE_C(0x0009CD), RUNE_C(0x0009CD), JT_T},
+ {RUNE_C(0x0009E2), RUNE_C(0x0009E3), JT_T},
+ {RUNE_C(0x0009FE), RUNE_C(0x0009FE), JT_T},
+ {RUNE_C(0x000A01), RUNE_C(0x000A02), JT_T},
+ {RUNE_C(0x000A3C), RUNE_C(0x000A3C), JT_T},
+ {RUNE_C(0x000A41), RUNE_C(0x000A42), JT_T},
+ {RUNE_C(0x000A47), RUNE_C(0x000A48), JT_T},
+ {RUNE_C(0x000A4B), RUNE_C(0x000A4D), JT_T},
+ {RUNE_C(0x000A51), RUNE_C(0x000A51), JT_T},
+ {RUNE_C(0x000A70), RUNE_C(0x000A71), JT_T},
+ {RUNE_C(0x000A75), RUNE_C(0x000A75), JT_T},
+ {RUNE_C(0x000A81), RUNE_C(0x000A82), JT_T},
+ {RUNE_C(0x000ABC), RUNE_C(0x000ABC), JT_T},
+ {RUNE_C(0x000AC1), RUNE_C(0x000AC5), JT_T},
+ {RUNE_C(0x000AC7), RUNE_C(0x000AC8), JT_T},
+ {RUNE_C(0x000ACD), RUNE_C(0x000ACD), JT_T},
+ {RUNE_C(0x000AE2), RUNE_C(0x000AE3), JT_T},
+ {RUNE_C(0x000AFA), RUNE_C(0x000AFF), JT_T},
+ {RUNE_C(0x000B01), RUNE_C(0x000B01), JT_T},
+ {RUNE_C(0x000B3C), RUNE_C(0x000B3C), JT_T},
+ {RUNE_C(0x000B3F), RUNE_C(0x000B3F), JT_T},
+ {RUNE_C(0x000B41), RUNE_C(0x000B44), JT_T},
+ {RUNE_C(0x000B4D), RUNE_C(0x000B4D), JT_T},
+ {RUNE_C(0x000B55), RUNE_C(0x000B56), JT_T},
+ {RUNE_C(0x000B62), RUNE_C(0x000B63), JT_T},
+ {RUNE_C(0x000B82), RUNE_C(0x000B82), JT_T},
+ {RUNE_C(0x000BC0), RUNE_C(0x000BC0), JT_T},
+ {RUNE_C(0x000BCD), RUNE_C(0x000BCD), JT_T},
+ {RUNE_C(0x000C00), RUNE_C(0x000C00), JT_T},
+ {RUNE_C(0x000C04), RUNE_C(0x000C04), JT_T},
+ {RUNE_C(0x000C3C), RUNE_C(0x000C3C), JT_T},
+ {RUNE_C(0x000C3E), RUNE_C(0x000C40), JT_T},
+ {RUNE_C(0x000C46), RUNE_C(0x000C48), JT_T},
+ {RUNE_C(0x000C4A), RUNE_C(0x000C4D), JT_T},
+ {RUNE_C(0x000C55), RUNE_C(0x000C56), JT_T},
+ {RUNE_C(0x000C62), RUNE_C(0x000C63), JT_T},
+ {RUNE_C(0x000C81), RUNE_C(0x000C81), JT_T},
+ {RUNE_C(0x000CBC), RUNE_C(0x000CBC), JT_T},
+ {RUNE_C(0x000CBF), RUNE_C(0x000CBF), JT_T},
+ {RUNE_C(0x000CC6), RUNE_C(0x000CC6), JT_T},
+ {RUNE_C(0x000CCC), RUNE_C(0x000CCD), JT_T},
+ {RUNE_C(0x000CE2), RUNE_C(0x000CE3), JT_T},
+ {RUNE_C(0x000D00), RUNE_C(0x000D01), JT_T},
+ {RUNE_C(0x000D3B), RUNE_C(0x000D3C), JT_T},
+ {RUNE_C(0x000D41), RUNE_C(0x000D44), JT_T},
+ {RUNE_C(0x000D4D), RUNE_C(0x000D4D), JT_T},
+ {RUNE_C(0x000D62), RUNE_C(0x000D63), JT_T},
+ {RUNE_C(0x000D81), RUNE_C(0x000D81), JT_T},
+ {RUNE_C(0x000DCA), RUNE_C(0x000DCA), JT_T},
+ {RUNE_C(0x000DD2), RUNE_C(0x000DD4), JT_T},
+ {RUNE_C(0x000DD6), RUNE_C(0x000DD6), JT_T},
+ {RUNE_C(0x000E31), RUNE_C(0x000E31), JT_T},
+ {RUNE_C(0x000E34), RUNE_C(0x000E3A), JT_T},
+ {RUNE_C(0x000E47), RUNE_C(0x000E4E), JT_T},
+ {RUNE_C(0x000EB1), RUNE_C(0x000EB1), JT_T},
+ {RUNE_C(0x000EB4), RUNE_C(0x000EBC), JT_T},
+ {RUNE_C(0x000EC8), RUNE_C(0x000ECE), JT_T},
+ {RUNE_C(0x000F18), RUNE_C(0x000F19), JT_T},
+ {RUNE_C(0x000F35), RUNE_C(0x000F35), JT_T},
+ {RUNE_C(0x000F37), RUNE_C(0x000F37), JT_T},
+ {RUNE_C(0x000F39), RUNE_C(0x000F39), JT_T},
+ {RUNE_C(0x000F71), RUNE_C(0x000F7E), JT_T},
+ {RUNE_C(0x000F80), RUNE_C(0x000F84), JT_T},
+ {RUNE_C(0x000F86), RUNE_C(0x000F87), JT_T},
+ {RUNE_C(0x000F8D), RUNE_C(0x000F97), JT_T},
+ {RUNE_C(0x000F99), RUNE_C(0x000FBC), JT_T},
+ {RUNE_C(0x000FC6), RUNE_C(0x000FC6), JT_T},
+ {RUNE_C(0x00102D), RUNE_C(0x001030), JT_T},
+ {RUNE_C(0x001032), RUNE_C(0x001037), JT_T},
+ {RUNE_C(0x001039), RUNE_C(0x00103A), JT_T},
+ {RUNE_C(0x00103D), RUNE_C(0x00103E), JT_T},
+ {RUNE_C(0x001058), RUNE_C(0x001059), JT_T},
+ {RUNE_C(0x00105E), RUNE_C(0x001060), JT_T},
+ {RUNE_C(0x001071), RUNE_C(0x001074), JT_T},
+ {RUNE_C(0x001082), RUNE_C(0x001082), JT_T},
+ {RUNE_C(0x001085), RUNE_C(0x001086), JT_T},
+ {RUNE_C(0x00108D), RUNE_C(0x00108D), JT_T},
+ {RUNE_C(0x00109D), RUNE_C(0x00109D), JT_T},
+ {RUNE_C(0x00135D), RUNE_C(0x00135F), JT_T},
+ {RUNE_C(0x001712), RUNE_C(0x001714), JT_T},
+ {RUNE_C(0x001732), RUNE_C(0x001733), JT_T},
+ {RUNE_C(0x001752), RUNE_C(0x001753), JT_T},
+ {RUNE_C(0x001772), RUNE_C(0x001773), JT_T},
+ {RUNE_C(0x0017B4), RUNE_C(0x0017B5), JT_T},
+ {RUNE_C(0x0017B7), RUNE_C(0x0017BD), JT_T},
+ {RUNE_C(0x0017C6), RUNE_C(0x0017C6), JT_T},
+ {RUNE_C(0x0017C9), RUNE_C(0x0017D3), JT_T},
+ {RUNE_C(0x0017DD), RUNE_C(0x0017DD), JT_T},
+ {RUNE_C(0x001807), RUNE_C(0x001807), JT_D},
+ {RUNE_C(0x00180A), RUNE_C(0x00180A), JT_C},
+ {RUNE_C(0x00180B), RUNE_C(0x00180D), JT_T},
+ {RUNE_C(0x00180F), RUNE_C(0x00180F), JT_T},
+ {RUNE_C(0x001820), RUNE_C(0x001878), JT_D},
+ {RUNE_C(0x001885), RUNE_C(0x001886), JT_T},
+ {RUNE_C(0x001887), RUNE_C(0x0018A8), JT_D},
+ {RUNE_C(0x0018A9), RUNE_C(0x0018A9), JT_T},
+ {RUNE_C(0x0018AA), RUNE_C(0x0018AA), JT_D},
+ {RUNE_C(0x001920), RUNE_C(0x001922), JT_T},
+ {RUNE_C(0x001927), RUNE_C(0x001928), JT_T},
+ {RUNE_C(0x001932), RUNE_C(0x001932), JT_T},
+ {RUNE_C(0x001939), RUNE_C(0x00193B), JT_T},
+ {RUNE_C(0x001A17), RUNE_C(0x001A18), JT_T},
+ {RUNE_C(0x001A1B), RUNE_C(0x001A1B), JT_T},
+ {RUNE_C(0x001A56), RUNE_C(0x001A56), JT_T},
+ {RUNE_C(0x001A58), RUNE_C(0x001A5E), JT_T},
+ {RUNE_C(0x001A60), RUNE_C(0x001A60), JT_T},
+ {RUNE_C(0x001A62), RUNE_C(0x001A62), JT_T},
+ {RUNE_C(0x001A65), RUNE_C(0x001A6C), JT_T},
+ {RUNE_C(0x001A73), RUNE_C(0x001A7C), JT_T},
+ {RUNE_C(0x001A7F), RUNE_C(0x001A7F), JT_T},
+ {RUNE_C(0x001AB0), RUNE_C(0x001ACE), JT_T},
+ {RUNE_C(0x001B00), RUNE_C(0x001B03), JT_T},
+ {RUNE_C(0x001B34), RUNE_C(0x001B34), JT_T},
+ {RUNE_C(0x001B36), RUNE_C(0x001B3A), JT_T},
+ {RUNE_C(0x001B3C), RUNE_C(0x001B3C), JT_T},
+ {RUNE_C(0x001B42), RUNE_C(0x001B42), JT_T},
+ {RUNE_C(0x001B6B), RUNE_C(0x001B73), JT_T},
+ {RUNE_C(0x001B80), RUNE_C(0x001B81), JT_T},
+ {RUNE_C(0x001BA2), RUNE_C(0x001BA5), JT_T},
+ {RUNE_C(0x001BA8), RUNE_C(0x001BA9), JT_T},
+ {RUNE_C(0x001BAB), RUNE_C(0x001BAD), JT_T},
+ {RUNE_C(0x001BE6), RUNE_C(0x001BE6), JT_T},
+ {RUNE_C(0x001BE8), RUNE_C(0x001BE9), JT_T},
+ {RUNE_C(0x001BED), RUNE_C(0x001BED), JT_T},
+ {RUNE_C(0x001BEF), RUNE_C(0x001BF1), JT_T},
+ {RUNE_C(0x001C2C), RUNE_C(0x001C33), JT_T},
+ {RUNE_C(0x001C36), RUNE_C(0x001C37), JT_T},
+ {RUNE_C(0x001CD0), RUNE_C(0x001CD2), JT_T},
+ {RUNE_C(0x001CD4), RUNE_C(0x001CE0), JT_T},
+ {RUNE_C(0x001CE2), RUNE_C(0x001CE8), JT_T},
+ {RUNE_C(0x001CED), RUNE_C(0x001CED), JT_T},
+ {RUNE_C(0x001CF4), RUNE_C(0x001CF4), JT_T},
+ {RUNE_C(0x001CF8), RUNE_C(0x001CF9), JT_T},
+ {RUNE_C(0x001DC0), RUNE_C(0x001DFF), JT_T},
+ {RUNE_C(0x00200B), RUNE_C(0x00200B), JT_T},
+ {RUNE_C(0x00200D), RUNE_C(0x00200D), JT_C},
+ {RUNE_C(0x00200E), RUNE_C(0x00200F), JT_T},
+ {RUNE_C(0x00202A), RUNE_C(0x00202E), JT_T},
+ {RUNE_C(0x002060), RUNE_C(0x002064), JT_T},
+ {RUNE_C(0x00206A), RUNE_C(0x00206F), JT_T},
+ {RUNE_C(0x0020D0), RUNE_C(0x0020F0), JT_T},
+ {RUNE_C(0x002CEF), RUNE_C(0x002CF1), JT_T},
+ {RUNE_C(0x002D7F), RUNE_C(0x002D7F), JT_T},
+ {RUNE_C(0x002DE0), RUNE_C(0x002DFF), JT_T},
+ {RUNE_C(0x00302A), RUNE_C(0x00302D), JT_T},
+ {RUNE_C(0x003099), RUNE_C(0x00309A), JT_T},
+ {RUNE_C(0x00A66F), RUNE_C(0x00A672), JT_T},
+ {RUNE_C(0x00A674), RUNE_C(0x00A67D), JT_T},
+ {RUNE_C(0x00A69E), RUNE_C(0x00A69F), JT_T},
+ {RUNE_C(0x00A6F0), RUNE_C(0x00A6F1), JT_T},
+ {RUNE_C(0x00A802), RUNE_C(0x00A802), JT_T},
+ {RUNE_C(0x00A806), RUNE_C(0x00A806), JT_T},
+ {RUNE_C(0x00A80B), RUNE_C(0x00A80B), JT_T},
+ {RUNE_C(0x00A825), RUNE_C(0x00A826), JT_T},
+ {RUNE_C(0x00A82C), RUNE_C(0x00A82C), JT_T},
+ {RUNE_C(0x00A840), RUNE_C(0x00A871), JT_D},
+ {RUNE_C(0x00A872), RUNE_C(0x00A872), JT_L},
+ {RUNE_C(0x00A8C4), RUNE_C(0x00A8C5), JT_T},
+ {RUNE_C(0x00A8E0), RUNE_C(0x00A8F1), JT_T},
+ {RUNE_C(0x00A8FF), RUNE_C(0x00A8FF), JT_T},
+ {RUNE_C(0x00A926), RUNE_C(0x00A92D), JT_T},
+ {RUNE_C(0x00A947), RUNE_C(0x00A951), JT_T},
+ {RUNE_C(0x00A980), RUNE_C(0x00A982), JT_T},
+ {RUNE_C(0x00A9B3), RUNE_C(0x00A9B3), JT_T},
+ {RUNE_C(0x00A9B6), RUNE_C(0x00A9B9), JT_T},
+ {RUNE_C(0x00A9BC), RUNE_C(0x00A9BD), JT_T},
+ {RUNE_C(0x00A9E5), RUNE_C(0x00A9E5), JT_T},
+ {RUNE_C(0x00AA29), RUNE_C(0x00AA2E), JT_T},
+ {RUNE_C(0x00AA31), RUNE_C(0x00AA32), JT_T},
+ {RUNE_C(0x00AA35), RUNE_C(0x00AA36), JT_T},
+ {RUNE_C(0x00AA43), RUNE_C(0x00AA43), JT_T},
+ {RUNE_C(0x00AA4C), RUNE_C(0x00AA4C), JT_T},
+ {RUNE_C(0x00AA7C), RUNE_C(0x00AA7C), JT_T},
+ {RUNE_C(0x00AAB0), RUNE_C(0x00AAB0), JT_T},
+ {RUNE_C(0x00AAB2), RUNE_C(0x00AAB4), JT_T},
+ {RUNE_C(0x00AAB7), RUNE_C(0x00AAB8), JT_T},
+ {RUNE_C(0x00AABE), RUNE_C(0x00AABF), JT_T},
+ {RUNE_C(0x00AAC1), RUNE_C(0x00AAC1), JT_T},
+ {RUNE_C(0x00AAEC), RUNE_C(0x00AAED), JT_T},
+ {RUNE_C(0x00AAF6), RUNE_C(0x00AAF6), JT_T},
+ {RUNE_C(0x00ABE5), RUNE_C(0x00ABE5), JT_T},
+ {RUNE_C(0x00ABE8), RUNE_C(0x00ABE8), JT_T},
+ {RUNE_C(0x00ABED), RUNE_C(0x00ABED), JT_T},
+ {RUNE_C(0x00FB1E), RUNE_C(0x00FB1E), JT_T},
+ {RUNE_C(0x00FE00), RUNE_C(0x00FE0F), JT_T},
+ {RUNE_C(0x00FE20), RUNE_C(0x00FE2F), JT_T},
+ {RUNE_C(0x00FEFF), RUNE_C(0x00FEFF), JT_T},
+ {RUNE_C(0x00FFF9), RUNE_C(0x00FFFB), JT_T},
+ {RUNE_C(0x0101FD), RUNE_C(0x0101FD), JT_T},
+ {RUNE_C(0x0102E0), RUNE_C(0x0102E0), JT_T},
+ {RUNE_C(0x010376), RUNE_C(0x01037A), JT_T},
+ {RUNE_C(0x010A01), RUNE_C(0x010A03), JT_T},
+ {RUNE_C(0x010A05), RUNE_C(0x010A06), JT_T},
+ {RUNE_C(0x010A0C), RUNE_C(0x010A0F), JT_T},
+ {RUNE_C(0x010A38), RUNE_C(0x010A3A), JT_T},
+ {RUNE_C(0x010A3F), RUNE_C(0x010A3F), JT_T},
+ {RUNE_C(0x010AC0), RUNE_C(0x010AC4), JT_D},
+ {RUNE_C(0x010AC5), RUNE_C(0x010AC5), JT_R},
+ {RUNE_C(0x010AC7), RUNE_C(0x010AC7), JT_R},
+ {RUNE_C(0x010AC9), RUNE_C(0x010ACA), JT_R},
+ {RUNE_C(0x010ACD), RUNE_C(0x010ACD), JT_L},
+ {RUNE_C(0x010ACE), RUNE_C(0x010AD2), JT_R},
+ {RUNE_C(0x010AD3), RUNE_C(0x010AD6), JT_D},
+ {RUNE_C(0x010AD7), RUNE_C(0x010AD7), JT_L},
+ {RUNE_C(0x010AD8), RUNE_C(0x010ADC), JT_D},
+ {RUNE_C(0x010ADD), RUNE_C(0x010ADD), JT_R},
+ {RUNE_C(0x010ADE), RUNE_C(0x010AE0), JT_D},
+ {RUNE_C(0x010AE1), RUNE_C(0x010AE1), JT_R},
+ {RUNE_C(0x010AE4), RUNE_C(0x010AE4), JT_R},
+ {RUNE_C(0x010AE5), RUNE_C(0x010AE6), JT_T},
+ {RUNE_C(0x010AEB), RUNE_C(0x010AEE), JT_D},
+ {RUNE_C(0x010AEF), RUNE_C(0x010AEF), JT_R},
+ {RUNE_C(0x010B80), RUNE_C(0x010B80), JT_D},
+ {RUNE_C(0x010B81), RUNE_C(0x010B81), JT_R},
+ {RUNE_C(0x010B82), RUNE_C(0x010B82), JT_D},
+ {RUNE_C(0x010B83), RUNE_C(0x010B85), JT_R},
+ {RUNE_C(0x010B86), RUNE_C(0x010B88), JT_D},
+ {RUNE_C(0x010B89), RUNE_C(0x010B89), JT_R},
+ {RUNE_C(0x010B8A), RUNE_C(0x010B8B), JT_D},
+ {RUNE_C(0x010B8C), RUNE_C(0x010B8C), JT_R},
+ {RUNE_C(0x010B8D), RUNE_C(0x010B8D), JT_D},
+ {RUNE_C(0x010B8E), RUNE_C(0x010B8F), JT_R},
+ {RUNE_C(0x010B90), RUNE_C(0x010B90), JT_D},
+ {RUNE_C(0x010B91), RUNE_C(0x010B91), JT_R},
+ {RUNE_C(0x010BA9), RUNE_C(0x010BAC), JT_R},
+ {RUNE_C(0x010BAD), RUNE_C(0x010BAE), JT_D},
+ {RUNE_C(0x010D00), RUNE_C(0x010D00), JT_L},
+ {RUNE_C(0x010D01), RUNE_C(0x010D21), JT_D},
+ {RUNE_C(0x010D22), RUNE_C(0x010D22), JT_R},
+ {RUNE_C(0x010D23), RUNE_C(0x010D23), JT_D},
+ {RUNE_C(0x010D24), RUNE_C(0x010D27), JT_T},
+ {RUNE_C(0x010EAB), RUNE_C(0x010EAC), JT_T},
+ {RUNE_C(0x010EFD), RUNE_C(0x010EFF), JT_T},
+ {RUNE_C(0x010F30), RUNE_C(0x010F32), JT_D},
+ {RUNE_C(0x010F33), RUNE_C(0x010F33), JT_R},
+ {RUNE_C(0x010F34), RUNE_C(0x010F44), JT_D},
+ {RUNE_C(0x010F46), RUNE_C(0x010F50), JT_T},
+ {RUNE_C(0x010F51), RUNE_C(0x010F53), JT_D},
+ {RUNE_C(0x010F54), RUNE_C(0x010F54), JT_R},
+ {RUNE_C(0x010F70), RUNE_C(0x010F73), JT_D},
+ {RUNE_C(0x010F74), RUNE_C(0x010F75), JT_R},
+ {RUNE_C(0x010F76), RUNE_C(0x010F81), JT_D},
+ {RUNE_C(0x010F82), RUNE_C(0x010F85), JT_T},
+ {RUNE_C(0x010FB0), RUNE_C(0x010FB0), JT_D},
+ {RUNE_C(0x010FB2), RUNE_C(0x010FB3), JT_D},
+ {RUNE_C(0x010FB4), RUNE_C(0x010FB6), JT_R},
+ {RUNE_C(0x010FB8), RUNE_C(0x010FB8), JT_D},
+ {RUNE_C(0x010FB9), RUNE_C(0x010FBA), JT_R},
+ {RUNE_C(0x010FBB), RUNE_C(0x010FBC), JT_D},
+ {RUNE_C(0x010FBD), RUNE_C(0x010FBD), JT_R},
+ {RUNE_C(0x010FBE), RUNE_C(0x010FBF), JT_D},
+ {RUNE_C(0x010FC1), RUNE_C(0x010FC1), JT_D},
+ {RUNE_C(0x010FC2), RUNE_C(0x010FC3), JT_R},
+ {RUNE_C(0x010FC4), RUNE_C(0x010FC4), JT_D},
+ {RUNE_C(0x010FC9), RUNE_C(0x010FC9), JT_R},
+ {RUNE_C(0x010FCA), RUNE_C(0x010FCA), JT_D},
+ {RUNE_C(0x010FCB), RUNE_C(0x010FCB), JT_L},
+ {RUNE_C(0x011001), RUNE_C(0x011001), JT_T},
+ {RUNE_C(0x011038), RUNE_C(0x011046), JT_T},
+ {RUNE_C(0x011070), RUNE_C(0x011070), JT_T},
+ {RUNE_C(0x011073), RUNE_C(0x011074), JT_T},
+ {RUNE_C(0x01107F), RUNE_C(0x011081), JT_T},
+ {RUNE_C(0x0110B3), RUNE_C(0x0110B6), JT_T},
+ {RUNE_C(0x0110B9), RUNE_C(0x0110BA), JT_T},
+ {RUNE_C(0x0110C2), RUNE_C(0x0110C2), JT_T},
+ {RUNE_C(0x011100), RUNE_C(0x011102), JT_T},
+ {RUNE_C(0x011127), RUNE_C(0x01112B), JT_T},
+ {RUNE_C(0x01112D), RUNE_C(0x011134), JT_T},
+ {RUNE_C(0x011173), RUNE_C(0x011173), JT_T},
+ {RUNE_C(0x011180), RUNE_C(0x011181), JT_T},
+ {RUNE_C(0x0111B6), RUNE_C(0x0111BE), JT_T},
+ {RUNE_C(0x0111C9), RUNE_C(0x0111CC), JT_T},
+ {RUNE_C(0x0111CF), RUNE_C(0x0111CF), JT_T},
+ {RUNE_C(0x01122F), RUNE_C(0x011231), JT_T},
+ {RUNE_C(0x011234), RUNE_C(0x011234), JT_T},
+ {RUNE_C(0x011236), RUNE_C(0x011237), JT_T},
+ {RUNE_C(0x01123E), RUNE_C(0x01123E), JT_T},
+ {RUNE_C(0x011241), RUNE_C(0x011241), JT_T},
+ {RUNE_C(0x0112DF), RUNE_C(0x0112DF), JT_T},
+ {RUNE_C(0x0112E3), RUNE_C(0x0112EA), JT_T},
+ {RUNE_C(0x011300), RUNE_C(0x011301), JT_T},
+ {RUNE_C(0x01133B), RUNE_C(0x01133C), JT_T},
+ {RUNE_C(0x011340), RUNE_C(0x011340), JT_T},
+ {RUNE_C(0x011366), RUNE_C(0x01136C), JT_T},
+ {RUNE_C(0x011370), RUNE_C(0x011374), JT_T},
+ {RUNE_C(0x011438), RUNE_C(0x01143F), JT_T},
+ {RUNE_C(0x011442), RUNE_C(0x011444), JT_T},
+ {RUNE_C(0x011446), RUNE_C(0x011446), JT_T},
+ {RUNE_C(0x01145E), RUNE_C(0x01145E), JT_T},
+ {RUNE_C(0x0114B3), RUNE_C(0x0114B8), JT_T},
+ {RUNE_C(0x0114BA), RUNE_C(0x0114BA), JT_T},
+ {RUNE_C(0x0114BF), RUNE_C(0x0114C0), JT_T},
+ {RUNE_C(0x0114C2), RUNE_C(0x0114C3), JT_T},
+ {RUNE_C(0x0115B2), RUNE_C(0x0115B5), JT_T},
+ {RUNE_C(0x0115BC), RUNE_C(0x0115BD), JT_T},
+ {RUNE_C(0x0115BF), RUNE_C(0x0115C0), JT_T},
+ {RUNE_C(0x0115DC), RUNE_C(0x0115DD), JT_T},
+ {RUNE_C(0x011633), RUNE_C(0x01163A), JT_T},
+ {RUNE_C(0x01163D), RUNE_C(0x01163D), JT_T},
+ {RUNE_C(0x01163F), RUNE_C(0x011640), JT_T},
+ {RUNE_C(0x0116AB), RUNE_C(0x0116AB), JT_T},
+ {RUNE_C(0x0116AD), RUNE_C(0x0116AD), JT_T},
+ {RUNE_C(0x0116B0), RUNE_C(0x0116B5), JT_T},
+ {RUNE_C(0x0116B7), RUNE_C(0x0116B7), JT_T},
+ {RUNE_C(0x01171D), RUNE_C(0x01171F), JT_T},
+ {RUNE_C(0x011722), RUNE_C(0x011725), JT_T},
+ {RUNE_C(0x011727), RUNE_C(0x01172B), JT_T},
+ {RUNE_C(0x01182F), RUNE_C(0x011837), JT_T},
+ {RUNE_C(0x011839), RUNE_C(0x01183A), JT_T},
+ {RUNE_C(0x01193B), RUNE_C(0x01193C), JT_T},
+ {RUNE_C(0x01193E), RUNE_C(0x01193E), JT_T},
+ {RUNE_C(0x011943), RUNE_C(0x011943), JT_T},
+ {RUNE_C(0x0119D4), RUNE_C(0x0119D7), JT_T},
+ {RUNE_C(0x0119DA), RUNE_C(0x0119DB), JT_T},
+ {RUNE_C(0x0119E0), RUNE_C(0x0119E0), JT_T},
+ {RUNE_C(0x011A01), RUNE_C(0x011A0A), JT_T},
+ {RUNE_C(0x011A33), RUNE_C(0x011A38), JT_T},
+ {RUNE_C(0x011A3B), RUNE_C(0x011A3E), JT_T},
+ {RUNE_C(0x011A47), RUNE_C(0x011A47), JT_T},
+ {RUNE_C(0x011A51), RUNE_C(0x011A56), JT_T},
+ {RUNE_C(0x011A59), RUNE_C(0x011A5B), JT_T},
+ {RUNE_C(0x011A8A), RUNE_C(0x011A96), JT_T},
+ {RUNE_C(0x011A98), RUNE_C(0x011A99), JT_T},
+ {RUNE_C(0x011C30), RUNE_C(0x011C36), JT_T},
+ {RUNE_C(0x011C38), RUNE_C(0x011C3D), JT_T},
+ {RUNE_C(0x011C3F), RUNE_C(0x011C3F), JT_T},
+ {RUNE_C(0x011C92), RUNE_C(0x011CA7), JT_T},
+ {RUNE_C(0x011CAA), RUNE_C(0x011CB0), JT_T},
+ {RUNE_C(0x011CB2), RUNE_C(0x011CB3), JT_T},
+ {RUNE_C(0x011CB5), RUNE_C(0x011CB6), JT_T},
+ {RUNE_C(0x011D31), RUNE_C(0x011D36), JT_T},
+ {RUNE_C(0x011D3A), RUNE_C(0x011D3A), JT_T},
+ {RUNE_C(0x011D3C), RUNE_C(0x011D3D), JT_T},
+ {RUNE_C(0x011D3F), RUNE_C(0x011D45), JT_T},
+ {RUNE_C(0x011D47), RUNE_C(0x011D47), JT_T},
+ {RUNE_C(0x011D90), RUNE_C(0x011D91), JT_T},
+ {RUNE_C(0x011D95), RUNE_C(0x011D95), JT_T},
+ {RUNE_C(0x011D97), RUNE_C(0x011D97), JT_T},
+ {RUNE_C(0x011EF3), RUNE_C(0x011EF4), JT_T},
+ {RUNE_C(0x011F00), RUNE_C(0x011F01), JT_T},
+ {RUNE_C(0x011F36), RUNE_C(0x011F3A), JT_T},
+ {RUNE_C(0x011F40), RUNE_C(0x011F40), JT_T},
+ {RUNE_C(0x011F42), RUNE_C(0x011F42), JT_T},
+ {RUNE_C(0x013430), RUNE_C(0x013440), JT_T},
+ {RUNE_C(0x013447), RUNE_C(0x013455), JT_T},
+ {RUNE_C(0x016AF0), RUNE_C(0x016AF4), JT_T},
+ {RUNE_C(0x016B30), RUNE_C(0x016B36), JT_T},
+ {RUNE_C(0x016F4F), RUNE_C(0x016F4F), JT_T},
+ {RUNE_C(0x016F8F), RUNE_C(0x016F92), JT_T},
+ {RUNE_C(0x016FE4), RUNE_C(0x016FE4), JT_T},
+ {RUNE_C(0x01BC9D), RUNE_C(0x01BC9E), JT_T},
+ {RUNE_C(0x01BCA0), RUNE_C(0x01BCA3), JT_T},
+ {RUNE_C(0x01CF00), RUNE_C(0x01CF2D), JT_T},
+ {RUNE_C(0x01CF30), RUNE_C(0x01CF46), JT_T},
+ {RUNE_C(0x01D167), RUNE_C(0x01D169), JT_T},
+ {RUNE_C(0x01D173), RUNE_C(0x01D182), JT_T},
+ {RUNE_C(0x01D185), RUNE_C(0x01D18B), JT_T},
+ {RUNE_C(0x01D1AA), RUNE_C(0x01D1AD), JT_T},
+ {RUNE_C(0x01D242), RUNE_C(0x01D244), JT_T},
+ {RUNE_C(0x01DA00), RUNE_C(0x01DA36), JT_T},
+ {RUNE_C(0x01DA3B), RUNE_C(0x01DA6C), JT_T},
+ {RUNE_C(0x01DA75), RUNE_C(0x01DA75), JT_T},
+ {RUNE_C(0x01DA84), RUNE_C(0x01DA84), JT_T},
+ {RUNE_C(0x01DA9B), RUNE_C(0x01DA9F), JT_T},
+ {RUNE_C(0x01DAA1), RUNE_C(0x01DAAF), JT_T},
+ {RUNE_C(0x01E000), RUNE_C(0x01E006), JT_T},
+ {RUNE_C(0x01E008), RUNE_C(0x01E018), JT_T},
+ {RUNE_C(0x01E01B), RUNE_C(0x01E021), JT_T},
+ {RUNE_C(0x01E023), RUNE_C(0x01E024), JT_T},
+ {RUNE_C(0x01E026), RUNE_C(0x01E02A), JT_T},
+ {RUNE_C(0x01E08F), RUNE_C(0x01E08F), JT_T},
+ {RUNE_C(0x01E130), RUNE_C(0x01E136), JT_T},
+ {RUNE_C(0x01E2AE), RUNE_C(0x01E2AE), JT_T},
+ {RUNE_C(0x01E2EC), RUNE_C(0x01E2EF), JT_T},
+ {RUNE_C(0x01E4EC), RUNE_C(0x01E4EF), JT_T},
+ {RUNE_C(0x01E8D0), RUNE_C(0x01E8D6), JT_T},
+ {RUNE_C(0x01E900), RUNE_C(0x01E943), JT_D},
+ {RUNE_C(0x01E944), RUNE_C(0x01E94B), JT_T},
+ {RUNE_C(0x0E0001), RUNE_C(0x0E0001), JT_T},
+ {RUNE_C(0x0E0020), RUNE_C(0x0E007F), JT_T},
+ {RUNE_C(0x0E0100), RUNE_C(0x0E01EF), JT_T},
+};
+
+#endif /* !RUNE_INTERNAL_RTYPE_JT_H */
diff --git a/vendor/librune/include/internal/rtype/lookup-func.h b/vendor/librune/include/internal/rtype/lookup-func.h
new file mode 100644
index 0000000..66f9c93
--- /dev/null
+++ b/vendor/librune/include/internal/rtype/lookup-func.h
@@ -0,0 +1,58 @@
+#include <stddef.h>
+
+#include "internal/common.h"
+
+#ifndef TYPE
+# error "TYPE if not defined"
+#endif
+#ifndef DEFAULT
+# error "DEFAULT is not defined"
+#endif
+#ifndef TABLE
+# error "TABLE is not defined"
+#endif
+#ifndef HAS_VALUE
+# error "HAS_VALUE is not defined"
+#endif
+#ifndef RANGE
+# define RANGE 1
+#endif
+
+#if RANGE
+# define LO lo
+# define HI hi
+#else
+# define LO key
+# define HI key
+#endif
+
+[[gnu::always_inline]] static TYPE
+lookup(rune ch)
+{
+ ptrdiff_t lo, hi;
+
+#ifdef LATIN1_TABLE
+ if (ch <= LATIN1_MAX)
+ return LATIN1_TABLE[ch];
+#endif
+
+ lo = 0;
+ hi = lengthof(TABLE) - 1;
+
+ while (lo <= hi) {
+ ptrdiff_t i = (lo + hi) / 2;
+
+ if (ch < TABLE[i].LO)
+ hi = i - 1;
+ else if (ch > TABLE[i].HI)
+ lo = i + 1;
+ else
+#if HAS_VALUE
+ return TABLE[i].val;
+#else
+ return true;
+#endif
+ }
+
+ return DEFAULT;
+}
diff --git a/vendor/librune/include/internal/rtype/nt.h b/vendor/librune/include/internal/rtype/nt.h
new file mode 100644
index 0000000..d72d31e
--- /dev/null
+++ b/vendor/librune/include/internal/rtype/nt.h
@@ -0,0 +1,300 @@
+/* This file is autogenerated by gen/rtype-nt; DO NOT EDIT. */
+
+#ifndef RUNE_INTERNAL_RTYPE_NT_H
+#define RUNE_INTERNAL_RTYPE_NT_H
+
+/* IWYU pragma: private */
+/* clang-format off */
+
+#include "../types.h"
+#include "../../rtype.h"
+#include "../../rune.h"
+
+static const rprop_nt_bf rtype_nt_lat1_tbl[] = {
+ NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE,
+ NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE,
+ NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE,
+ NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE,
+ NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE,
+ NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE,
+ NT_DECIMAL, NT_DECIMAL, NT_DECIMAL, NT_DECIMAL, NT_DECIMAL, NT_DECIMAL, NT_DECIMAL, NT_DECIMAL,
+ NT_DECIMAL, NT_DECIMAL, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE,
+ NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE,
+ NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE,
+ NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE,
+ NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE,
+ NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE,
+ NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE,
+ NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE,
+ NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE,
+ NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE,
+ NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE,
+ NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE,
+ NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE,
+ NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE,
+ NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE,
+ NT_NONE, NT_NONE, NT_DIGIT, NT_DIGIT, NT_NONE, NT_NONE, NT_NONE, NT_NONE,
+ NT_NONE, NT_DIGIT, NT_NONE, NT_NONE, NT_NUMERIC, NT_NUMERIC, NT_NUMERIC, NT_NONE,
+ NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE,
+ NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE,
+ NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE,
+ NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE,
+ NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE,
+ NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE,
+ NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE,
+ NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE, NT_NONE,
+};
+
+static const struct {
+ rune lo, hi;
+ rprop_nt_bf val;
+} rtype_nt_tbl[] = {
+ {RUNE_C(0x000030), RUNE_C(0x000039), NT_DECIMAL},
+ {RUNE_C(0x0000B2), RUNE_C(0x0000B3), NT_DIGIT},
+ {RUNE_C(0x0000B9), RUNE_C(0x0000B9), NT_DIGIT},
+ {RUNE_C(0x0000BC), RUNE_C(0x0000BE), NT_NUMERIC},
+ {RUNE_C(0x000660), RUNE_C(0x000669), NT_DECIMAL},
+ {RUNE_C(0x0006F0), RUNE_C(0x0006F9), NT_DECIMAL},
+ {RUNE_C(0x0007C0), RUNE_C(0x0007C9), NT_DECIMAL},
+ {RUNE_C(0x000966), RUNE_C(0x00096F), NT_DECIMAL},
+ {RUNE_C(0x0009E6), RUNE_C(0x0009EF), NT_DECIMAL},
+ {RUNE_C(0x0009F4), RUNE_C(0x0009F9), NT_NUMERIC},
+ {RUNE_C(0x000A66), RUNE_C(0x000A6F), NT_DECIMAL},
+ {RUNE_C(0x000AE6), RUNE_C(0x000AEF), NT_DECIMAL},
+ {RUNE_C(0x000B66), RUNE_C(0x000B6F), NT_DECIMAL},
+ {RUNE_C(0x000B72), RUNE_C(0x000B77), NT_NUMERIC},
+ {RUNE_C(0x000BE6), RUNE_C(0x000BEF), NT_DECIMAL},
+ {RUNE_C(0x000BF0), RUNE_C(0x000BF2), NT_NUMERIC},
+ {RUNE_C(0x000C66), RUNE_C(0x000C6F), NT_DECIMAL},
+ {RUNE_C(0x000C78), RUNE_C(0x000C7E), NT_NUMERIC},
+ {RUNE_C(0x000CE6), RUNE_C(0x000CEF), NT_DECIMAL},
+ {RUNE_C(0x000D58), RUNE_C(0x000D5E), NT_NUMERIC},
+ {RUNE_C(0x000D66), RUNE_C(0x000D6F), NT_DECIMAL},
+ {RUNE_C(0x000D70), RUNE_C(0x000D78), NT_NUMERIC},
+ {RUNE_C(0x000DE6), RUNE_C(0x000DEF), NT_DECIMAL},
+ {RUNE_C(0x000E50), RUNE_C(0x000E59), NT_DECIMAL},
+ {RUNE_C(0x000ED0), RUNE_C(0x000ED9), NT_DECIMAL},
+ {RUNE_C(0x000F20), RUNE_C(0x000F29), NT_DECIMAL},
+ {RUNE_C(0x000F2A), RUNE_C(0x000F33), NT_NUMERIC},
+ {RUNE_C(0x001040), RUNE_C(0x001049), NT_DECIMAL},
+ {RUNE_C(0x001090), RUNE_C(0x001099), NT_DECIMAL},
+ {RUNE_C(0x001369), RUNE_C(0x001371), NT_DIGIT},
+ {RUNE_C(0x001372), RUNE_C(0x00137C), NT_NUMERIC},
+ {RUNE_C(0x0016EE), RUNE_C(0x0016F0), NT_NUMERIC},
+ {RUNE_C(0x0017E0), RUNE_C(0x0017E9), NT_DECIMAL},
+ {RUNE_C(0x0017F0), RUNE_C(0x0017F9), NT_NUMERIC},
+ {RUNE_C(0x001810), RUNE_C(0x001819), NT_DECIMAL},
+ {RUNE_C(0x001946), RUNE_C(0x00194F), NT_DECIMAL},
+ {RUNE_C(0x0019D0), RUNE_C(0x0019D9), NT_DECIMAL},
+ {RUNE_C(0x0019DA), RUNE_C(0x0019DA), NT_DIGIT},
+ {RUNE_C(0x001A80), RUNE_C(0x001A89), NT_DECIMAL},
+ {RUNE_C(0x001A90), RUNE_C(0x001A99), NT_DECIMAL},
+ {RUNE_C(0x001B50), RUNE_C(0x001B59), NT_DECIMAL},
+ {RUNE_C(0x001BB0), RUNE_C(0x001BB9), NT_DECIMAL},
+ {RUNE_C(0x001C40), RUNE_C(0x001C49), NT_DECIMAL},
+ {RUNE_C(0x001C50), RUNE_C(0x001C59), NT_DECIMAL},
+ {RUNE_C(0x002070), RUNE_C(0x002070), NT_DIGIT},
+ {RUNE_C(0x002074), RUNE_C(0x002079), NT_DIGIT},
+ {RUNE_C(0x002080), RUNE_C(0x002089), NT_DIGIT},
+ {RUNE_C(0x002150), RUNE_C(0x002182), NT_NUMERIC},
+ {RUNE_C(0x002185), RUNE_C(0x002189), NT_NUMERIC},
+ {RUNE_C(0x002460), RUNE_C(0x002468), NT_DIGIT},
+ {RUNE_C(0x002469), RUNE_C(0x002473), NT_NUMERIC},
+ {RUNE_C(0x002474), RUNE_C(0x00247C), NT_DIGIT},
+ {RUNE_C(0x00247D), RUNE_C(0x002487), NT_NUMERIC},
+ {RUNE_C(0x002488), RUNE_C(0x002490), NT_DIGIT},
+ {RUNE_C(0x002491), RUNE_C(0x00249B), NT_NUMERIC},
+ {RUNE_C(0x0024EA), RUNE_C(0x0024EA), NT_DIGIT},
+ {RUNE_C(0x0024EB), RUNE_C(0x0024F4), NT_NUMERIC},
+ {RUNE_C(0x0024F5), RUNE_C(0x0024FD), NT_DIGIT},
+ {RUNE_C(0x0024FE), RUNE_C(0x0024FE), NT_NUMERIC},
+ {RUNE_C(0x0024FF), RUNE_C(0x0024FF), NT_DIGIT},
+ {RUNE_C(0x002776), RUNE_C(0x00277E), NT_DIGIT},
+ {RUNE_C(0x00277F), RUNE_C(0x00277F), NT_NUMERIC},
+ {RUNE_C(0x002780), RUNE_C(0x002788), NT_DIGIT},
+ {RUNE_C(0x002789), RUNE_C(0x002789), NT_NUMERIC},
+ {RUNE_C(0x00278A), RUNE_C(0x002792), NT_DIGIT},
+ {RUNE_C(0x002793), RUNE_C(0x002793), NT_NUMERIC},
+ {RUNE_C(0x002CFD), RUNE_C(0x002CFD), NT_NUMERIC},
+ {RUNE_C(0x003007), RUNE_C(0x003007), NT_NUMERIC},
+ {RUNE_C(0x003021), RUNE_C(0x003029), NT_NUMERIC},
+ {RUNE_C(0x003038), RUNE_C(0x00303A), NT_NUMERIC},
+ {RUNE_C(0x003192), RUNE_C(0x003195), NT_NUMERIC},
+ {RUNE_C(0x003220), RUNE_C(0x003229), NT_NUMERIC},
+ {RUNE_C(0x003248), RUNE_C(0x00324F), NT_NUMERIC},
+ {RUNE_C(0x003251), RUNE_C(0x00325F), NT_NUMERIC},
+ {RUNE_C(0x003280), RUNE_C(0x003289), NT_NUMERIC},
+ {RUNE_C(0x0032B1), RUNE_C(0x0032BF), NT_NUMERIC},
+ {RUNE_C(0x003405), RUNE_C(0x003405), NT_NUMERIC},
+ {RUNE_C(0x003483), RUNE_C(0x003483), NT_NUMERIC},
+ {RUNE_C(0x00382A), RUNE_C(0x00382A), NT_NUMERIC},
+ {RUNE_C(0x003B4D), RUNE_C(0x003B4D), NT_NUMERIC},
+ {RUNE_C(0x004E00), RUNE_C(0x004E00), NT_NUMERIC},
+ {RUNE_C(0x004E03), RUNE_C(0x004E03), NT_NUMERIC},
+ {RUNE_C(0x004E07), RUNE_C(0x004E07), NT_NUMERIC},
+ {RUNE_C(0x004E09), RUNE_C(0x004E09), NT_NUMERIC},
+ {RUNE_C(0x004E24), RUNE_C(0x004E24), NT_NUMERIC},
+ {RUNE_C(0x004E5D), RUNE_C(0x004E5D), NT_NUMERIC},
+ {RUNE_C(0x004E8C), RUNE_C(0x004E8C), NT_NUMERIC},
+ {RUNE_C(0x004E94), RUNE_C(0x004E94), NT_NUMERIC},
+ {RUNE_C(0x004E96), RUNE_C(0x004E96), NT_NUMERIC},
+ {RUNE_C(0x004EAC), RUNE_C(0x004EAC), NT_NUMERIC},
+ {RUNE_C(0x004EBF), RUNE_C(0x004EC0), NT_NUMERIC},
+ {RUNE_C(0x004EDF), RUNE_C(0x004EDF), NT_NUMERIC},
+ {RUNE_C(0x004EE8), RUNE_C(0x004EE8), NT_NUMERIC},
+ {RUNE_C(0x004F0D), RUNE_C(0x004F0D), NT_NUMERIC},
+ {RUNE_C(0x004F70), RUNE_C(0x004F70), NT_NUMERIC},
+ {RUNE_C(0x004FE9), RUNE_C(0x004FE9), NT_NUMERIC},
+ {RUNE_C(0x005006), RUNE_C(0x005006), NT_NUMERIC},
+ {RUNE_C(0x005104), RUNE_C(0x005104), NT_NUMERIC},
+ {RUNE_C(0x005146), RUNE_C(0x005146), NT_NUMERIC},
+ {RUNE_C(0x005169), RUNE_C(0x005169), NT_NUMERIC},
+ {RUNE_C(0x00516B), RUNE_C(0x00516B), NT_NUMERIC},
+ {RUNE_C(0x00516D), RUNE_C(0x00516D), NT_NUMERIC},
+ {RUNE_C(0x005341), RUNE_C(0x005341), NT_NUMERIC},
+ {RUNE_C(0x005343), RUNE_C(0x005345), NT_NUMERIC},
+ {RUNE_C(0x00534C), RUNE_C(0x00534C), NT_NUMERIC},
+ {RUNE_C(0x0053C1), RUNE_C(0x0053C4), NT_NUMERIC},
+ {RUNE_C(0x0056DB), RUNE_C(0x0056DB), NT_NUMERIC},
+ {RUNE_C(0x0058F1), RUNE_C(0x0058F1), NT_NUMERIC},
+ {RUNE_C(0x0058F9), RUNE_C(0x0058F9), NT_NUMERIC},
+ {RUNE_C(0x005E7A), RUNE_C(0x005E7A), NT_NUMERIC},
+ {RUNE_C(0x005EFE), RUNE_C(0x005EFF), NT_NUMERIC},
+ {RUNE_C(0x005F0C), RUNE_C(0x005F0E), NT_NUMERIC},
+ {RUNE_C(0x005F10), RUNE_C(0x005F10), NT_NUMERIC},
+ {RUNE_C(0x0062D0), RUNE_C(0x0062D0), NT_NUMERIC},
+ {RUNE_C(0x0062FE), RUNE_C(0x0062FE), NT_NUMERIC},
+ {RUNE_C(0x00634C), RUNE_C(0x00634C), NT_NUMERIC},
+ {RUNE_C(0x0067D2), RUNE_C(0x0067D2), NT_NUMERIC},
+ {RUNE_C(0x006D1E), RUNE_C(0x006D1E), NT_NUMERIC},
+ {RUNE_C(0x006F06), RUNE_C(0x006F06), NT_NUMERIC},
+ {RUNE_C(0x007396), RUNE_C(0x007396), NT_NUMERIC},
+ {RUNE_C(0x00767E), RUNE_C(0x00767E), NT_NUMERIC},
+ {RUNE_C(0x007695), RUNE_C(0x007695), NT_NUMERIC},
+ {RUNE_C(0x0079ED), RUNE_C(0x0079ED), NT_NUMERIC},
+ {RUNE_C(0x008086), RUNE_C(0x008086), NT_NUMERIC},
+ {RUNE_C(0x00842C), RUNE_C(0x00842C), NT_NUMERIC},
+ {RUNE_C(0x008CAE), RUNE_C(0x008CAE), NT_NUMERIC},
+ {RUNE_C(0x008CB3), RUNE_C(0x008CB3), NT_NUMERIC},
+ {RUNE_C(0x008D30), RUNE_C(0x008D30), NT_NUMERIC},
+ {RUNE_C(0x00920E), RUNE_C(0x00920E), NT_NUMERIC},
+ {RUNE_C(0x0094A9), RUNE_C(0x0094A9), NT_NUMERIC},
+ {RUNE_C(0x009621), RUNE_C(0x009621), NT_NUMERIC},
+ {RUNE_C(0x009646), RUNE_C(0x009646), NT_NUMERIC},
+ {RUNE_C(0x00964C), RUNE_C(0x00964C), NT_NUMERIC},
+ {RUNE_C(0x009678), RUNE_C(0x009678), NT_NUMERIC},
+ {RUNE_C(0x0096F6), RUNE_C(0x0096F6), NT_NUMERIC},
+ {RUNE_C(0x00A620), RUNE_C(0x00A629), NT_DECIMAL},
+ {RUNE_C(0x00A6E6), RUNE_C(0x00A6EF), NT_NUMERIC},
+ {RUNE_C(0x00A830), RUNE_C(0x00A835), NT_NUMERIC},
+ {RUNE_C(0x00A8D0), RUNE_C(0x00A8D9), NT_DECIMAL},
+ {RUNE_C(0x00A900), RUNE_C(0x00A909), NT_DECIMAL},
+ {RUNE_C(0x00A9D0), RUNE_C(0x00A9D9), NT_DECIMAL},
+ {RUNE_C(0x00A9F0), RUNE_C(0x00A9F9), NT_DECIMAL},
+ {RUNE_C(0x00AA50), RUNE_C(0x00AA59), NT_DECIMAL},
+ {RUNE_C(0x00ABF0), RUNE_C(0x00ABF9), NT_DECIMAL},
+ {RUNE_C(0x00F96B), RUNE_C(0x00F96B), NT_NUMERIC},
+ {RUNE_C(0x00F973), RUNE_C(0x00F973), NT_NUMERIC},
+ {RUNE_C(0x00F978), RUNE_C(0x00F978), NT_NUMERIC},
+ {RUNE_C(0x00F9B2), RUNE_C(0x00F9B2), NT_NUMERIC},
+ {RUNE_C(0x00F9D1), RUNE_C(0x00F9D1), NT_NUMERIC},
+ {RUNE_C(0x00F9D3), RUNE_C(0x00F9D3), NT_NUMERIC},
+ {RUNE_C(0x00F9FD), RUNE_C(0x00F9FD), NT_NUMERIC},
+ {RUNE_C(0x00FF10), RUNE_C(0x00FF19), NT_DECIMAL},
+ {RUNE_C(0x010107), RUNE_C(0x010133), NT_NUMERIC},
+ {RUNE_C(0x010140), RUNE_C(0x010178), NT_NUMERIC},
+ {RUNE_C(0x01018A), RUNE_C(0x01018B), NT_NUMERIC},
+ {RUNE_C(0x0102E1), RUNE_C(0x0102FB), NT_NUMERIC},
+ {RUNE_C(0x010320), RUNE_C(0x010323), NT_NUMERIC},
+ {RUNE_C(0x010341), RUNE_C(0x010341), NT_NUMERIC},
+ {RUNE_C(0x01034A), RUNE_C(0x01034A), NT_NUMERIC},
+ {RUNE_C(0x0103D1), RUNE_C(0x0103D5), NT_NUMERIC},
+ {RUNE_C(0x0104A0), RUNE_C(0x0104A9), NT_DECIMAL},
+ {RUNE_C(0x010858), RUNE_C(0x01085F), NT_NUMERIC},
+ {RUNE_C(0x010879), RUNE_C(0x01087F), NT_NUMERIC},
+ {RUNE_C(0x0108A7), RUNE_C(0x0108AF), NT_NUMERIC},
+ {RUNE_C(0x0108FB), RUNE_C(0x0108FF), NT_NUMERIC},
+ {RUNE_C(0x010916), RUNE_C(0x01091B), NT_NUMERIC},
+ {RUNE_C(0x0109BC), RUNE_C(0x0109BD), NT_NUMERIC},
+ {RUNE_C(0x0109C0), RUNE_C(0x0109CF), NT_NUMERIC},
+ {RUNE_C(0x0109D2), RUNE_C(0x0109FF), NT_NUMERIC},
+ {RUNE_C(0x010A40), RUNE_C(0x010A43), NT_DIGIT},
+ {RUNE_C(0x010A44), RUNE_C(0x010A48), NT_NUMERIC},
+ {RUNE_C(0x010A7D), RUNE_C(0x010A7E), NT_NUMERIC},
+ {RUNE_C(0x010A9D), RUNE_C(0x010A9F), NT_NUMERIC},
+ {RUNE_C(0x010AEB), RUNE_C(0x010AEF), NT_NUMERIC},
+ {RUNE_C(0x010B58), RUNE_C(0x010B5F), NT_NUMERIC},
+ {RUNE_C(0x010B78), RUNE_C(0x010B7F), NT_NUMERIC},
+ {RUNE_C(0x010BA9), RUNE_C(0x010BAF), NT_NUMERIC},
+ {RUNE_C(0x010CFA), RUNE_C(0x010CFF), NT_NUMERIC},
+ {RUNE_C(0x010D30), RUNE_C(0x010D39), NT_DECIMAL},
+ {RUNE_C(0x010E60), RUNE_C(0x010E68), NT_DIGIT},
+ {RUNE_C(0x010E69), RUNE_C(0x010E7E), NT_NUMERIC},
+ {RUNE_C(0x010F1D), RUNE_C(0x010F26), NT_NUMERIC},
+ {RUNE_C(0x010F51), RUNE_C(0x010F54), NT_NUMERIC},
+ {RUNE_C(0x010FC5), RUNE_C(0x010FCB), NT_NUMERIC},
+ {RUNE_C(0x011052), RUNE_C(0x01105A), NT_DIGIT},
+ {RUNE_C(0x01105B), RUNE_C(0x011065), NT_NUMERIC},
+ {RUNE_C(0x011066), RUNE_C(0x01106F), NT_DECIMAL},
+ {RUNE_C(0x0110F0), RUNE_C(0x0110F9), NT_DECIMAL},
+ {RUNE_C(0x011136), RUNE_C(0x01113F), NT_DECIMAL},
+ {RUNE_C(0x0111D0), RUNE_C(0x0111D9), NT_DECIMAL},
+ {RUNE_C(0x0111E1), RUNE_C(0x0111F4), NT_NUMERIC},
+ {RUNE_C(0x0112F0), RUNE_C(0x0112F9), NT_DECIMAL},
+ {RUNE_C(0x011450), RUNE_C(0x011459), NT_DECIMAL},
+ {RUNE_C(0x0114D0), RUNE_C(0x0114D9), NT_DECIMAL},
+ {RUNE_C(0x011650), RUNE_C(0x011659), NT_DECIMAL},
+ {RUNE_C(0x0116C0), RUNE_C(0x0116C9), NT_DECIMAL},
+ {RUNE_C(0x011730), RUNE_C(0x011739), NT_DECIMAL},
+ {RUNE_C(0x01173A), RUNE_C(0x01173B), NT_NUMERIC},
+ {RUNE_C(0x0118E0), RUNE_C(0x0118E9), NT_DECIMAL},
+ {RUNE_C(0x0118EA), RUNE_C(0x0118F2), NT_NUMERIC},
+ {RUNE_C(0x011950), RUNE_C(0x011959), NT_DECIMAL},
+ {RUNE_C(0x011C50), RUNE_C(0x011C59), NT_DECIMAL},
+ {RUNE_C(0x011C5A), RUNE_C(0x011C6C), NT_NUMERIC},
+ {RUNE_C(0x011D50), RUNE_C(0x011D59), NT_DECIMAL},
+ {RUNE_C(0x011DA0), RUNE_C(0x011DA9), NT_DECIMAL},
+ {RUNE_C(0x011F50), RUNE_C(0x011F59), NT_DECIMAL},
+ {RUNE_C(0x011FC0), RUNE_C(0x011FD4), NT_NUMERIC},
+ {RUNE_C(0x012400), RUNE_C(0x01246E), NT_NUMERIC},
+ {RUNE_C(0x016A60), RUNE_C(0x016A69), NT_DECIMAL},
+ {RUNE_C(0x016AC0), RUNE_C(0x016AC9), NT_DECIMAL},
+ {RUNE_C(0x016B50), RUNE_C(0x016B59), NT_DECIMAL},
+ {RUNE_C(0x016B5B), RUNE_C(0x016B61), NT_NUMERIC},
+ {RUNE_C(0x016E80), RUNE_C(0x016E96), NT_NUMERIC},
+ {RUNE_C(0x01D2C0), RUNE_C(0x01D2D3), NT_NUMERIC},
+ {RUNE_C(0x01D2E0), RUNE_C(0x01D2F3), NT_NUMERIC},
+ {RUNE_C(0x01D360), RUNE_C(0x01D378), NT_NUMERIC},
+ {RUNE_C(0x01D7CE), RUNE_C(0x01D7FF), NT_DECIMAL},
+ {RUNE_C(0x01E140), RUNE_C(0x01E149), NT_DECIMAL},
+ {RUNE_C(0x01E2F0), RUNE_C(0x01E2F9), NT_DECIMAL},
+ {RUNE_C(0x01E4F0), RUNE_C(0x01E4F9), NT_DECIMAL},
+ {RUNE_C(0x01E8C7), RUNE_C(0x01E8CF), NT_NUMERIC},
+ {RUNE_C(0x01E950), RUNE_C(0x01E959), NT_DECIMAL},
+ {RUNE_C(0x01EC71), RUNE_C(0x01ECAB), NT_NUMERIC},
+ {RUNE_C(0x01ECAD), RUNE_C(0x01ECAF), NT_NUMERIC},
+ {RUNE_C(0x01ECB1), RUNE_C(0x01ECB4), NT_NUMERIC},
+ {RUNE_C(0x01ED01), RUNE_C(0x01ED2D), NT_NUMERIC},
+ {RUNE_C(0x01ED2F), RUNE_C(0x01ED3D), NT_NUMERIC},
+ {RUNE_C(0x01F100), RUNE_C(0x01F10A), NT_DIGIT},
+ {RUNE_C(0x01F10B), RUNE_C(0x01F10C), NT_NUMERIC},
+ {RUNE_C(0x01FBF0), RUNE_C(0x01FBF9), NT_DECIMAL},
+ {RUNE_C(0x020001), RUNE_C(0x020001), NT_NUMERIC},
+ {RUNE_C(0x020064), RUNE_C(0x020064), NT_NUMERIC},
+ {RUNE_C(0x0200E2), RUNE_C(0x0200E2), NT_NUMERIC},
+ {RUNE_C(0x020121), RUNE_C(0x020121), NT_NUMERIC},
+ {RUNE_C(0x02092A), RUNE_C(0x02092A), NT_NUMERIC},
+ {RUNE_C(0x020983), RUNE_C(0x020983), NT_NUMERIC},
+ {RUNE_C(0x02098C), RUNE_C(0x02098C), NT_NUMERIC},
+ {RUNE_C(0x02099C), RUNE_C(0x02099C), NT_NUMERIC},
+ {RUNE_C(0x020AEA), RUNE_C(0x020AEA), NT_NUMERIC},
+ {RUNE_C(0x020AFD), RUNE_C(0x020AFD), NT_NUMERIC},
+ {RUNE_C(0x020B19), RUNE_C(0x020B19), NT_NUMERIC},
+ {RUNE_C(0x022390), RUNE_C(0x022390), NT_NUMERIC},
+ {RUNE_C(0x022998), RUNE_C(0x022998), NT_NUMERIC},
+ {RUNE_C(0x023B1B), RUNE_C(0x023B1B), NT_NUMERIC},
+ {RUNE_C(0x02626D), RUNE_C(0x02626D), NT_NUMERIC},
+ {RUNE_C(0x02F890), RUNE_C(0x02F890), NT_NUMERIC},
+};
+
+#endif /* !RUNE_INTERNAL_RTYPE_NT_H */
diff --git a/vendor/librune/include/internal/rtype/nv.h b/vendor/librune/include/internal/rtype/nv.h
new file mode 100644
index 0000000..1eb88fb
--- /dev/null
+++ b/vendor/librune/include/internal/rtype/nv.h
@@ -0,0 +1,1941 @@
+/* This file is autogenerated by gen/rtype-nv; DO NOT EDIT. */
+
+#ifndef RUNE_INTERNAL_RTYPE_NV_H
+#define RUNE_INTERNAL_RTYPE_NV_H
+
+/* IWYU pragma: private */
+/* clang-format off */
+
+#include "../types.h"
+#include "../../rtype.h"
+#include "../../rune.h"
+
+static const struct {
+ rune key;
+ double val;
+} rtype_nv_tbl[] = {
+ {RUNE_C(0x000030), (double)0},
+ {RUNE_C(0x000031), (double)1},
+ {RUNE_C(0x000032), (double)2},
+ {RUNE_C(0x000033), (double)3},
+ {RUNE_C(0x000034), (double)4},
+ {RUNE_C(0x000035), (double)5},
+ {RUNE_C(0x000036), (double)6},
+ {RUNE_C(0x000037), (double)7},
+ {RUNE_C(0x000038), (double)8},
+ {RUNE_C(0x000039), (double)9},
+ {RUNE_C(0x0000B2), (double)2},
+ {RUNE_C(0x0000B3), (double)3},
+ {RUNE_C(0x0000B9), (double)1},
+ {RUNE_C(0x0000BC), (double)1/4},
+ {RUNE_C(0x0000BD), (double)1/2},
+ {RUNE_C(0x0000BE), (double)3/4},
+ {RUNE_C(0x000660), (double)0},
+ {RUNE_C(0x000661), (double)1},
+ {RUNE_C(0x000662), (double)2},
+ {RUNE_C(0x000663), (double)3},
+ {RUNE_C(0x000664), (double)4},
+ {RUNE_C(0x000665), (double)5},
+ {RUNE_C(0x000666), (double)6},
+ {RUNE_C(0x000667), (double)7},
+ {RUNE_C(0x000668), (double)8},
+ {RUNE_C(0x000669), (double)9},
+ {RUNE_C(0x0006F0), (double)0},
+ {RUNE_C(0x0006F1), (double)1},
+ {RUNE_C(0x0006F2), (double)2},
+ {RUNE_C(0x0006F3), (double)3},
+ {RUNE_C(0x0006F4), (double)4},
+ {RUNE_C(0x0006F5), (double)5},
+ {RUNE_C(0x0006F6), (double)6},
+ {RUNE_C(0x0006F7), (double)7},
+ {RUNE_C(0x0006F8), (double)8},
+ {RUNE_C(0x0006F9), (double)9},
+ {RUNE_C(0x0007C0), (double)0},
+ {RUNE_C(0x0007C1), (double)1},
+ {RUNE_C(0x0007C2), (double)2},
+ {RUNE_C(0x0007C3), (double)3},
+ {RUNE_C(0x0007C4), (double)4},
+ {RUNE_C(0x0007C5), (double)5},
+ {RUNE_C(0x0007C6), (double)6},
+ {RUNE_C(0x0007C7), (double)7},
+ {RUNE_C(0x0007C8), (double)8},
+ {RUNE_C(0x0007C9), (double)9},
+ {RUNE_C(0x000966), (double)0},
+ {RUNE_C(0x000967), (double)1},
+ {RUNE_C(0x000968), (double)2},
+ {RUNE_C(0x000969), (double)3},
+ {RUNE_C(0x00096A), (double)4},
+ {RUNE_C(0x00096B), (double)5},
+ {RUNE_C(0x00096C), (double)6},
+ {RUNE_C(0x00096D), (double)7},
+ {RUNE_C(0x00096E), (double)8},
+ {RUNE_C(0x00096F), (double)9},
+ {RUNE_C(0x0009E6), (double)0},
+ {RUNE_C(0x0009E7), (double)1},
+ {RUNE_C(0x0009E8), (double)2},
+ {RUNE_C(0x0009E9), (double)3},
+ {RUNE_C(0x0009EA), (double)4},
+ {RUNE_C(0x0009EB), (double)5},
+ {RUNE_C(0x0009EC), (double)6},
+ {RUNE_C(0x0009ED), (double)7},
+ {RUNE_C(0x0009EE), (double)8},
+ {RUNE_C(0x0009EF), (double)9},
+ {RUNE_C(0x0009F4), (double)1/16},
+ {RUNE_C(0x0009F5), (double)1/8},
+ {RUNE_C(0x0009F6), (double)3/16},
+ {RUNE_C(0x0009F7), (double)1/4},
+ {RUNE_C(0x0009F8), (double)3/4},
+ {RUNE_C(0x0009F9), (double)16},
+ {RUNE_C(0x000A66), (double)0},
+ {RUNE_C(0x000A67), (double)1},
+ {RUNE_C(0x000A68), (double)2},
+ {RUNE_C(0x000A69), (double)3},
+ {RUNE_C(0x000A6A), (double)4},
+ {RUNE_C(0x000A6B), (double)5},
+ {RUNE_C(0x000A6C), (double)6},
+ {RUNE_C(0x000A6D), (double)7},
+ {RUNE_C(0x000A6E), (double)8},
+ {RUNE_C(0x000A6F), (double)9},
+ {RUNE_C(0x000AE6), (double)0},
+ {RUNE_C(0x000AE7), (double)1},
+ {RUNE_C(0x000AE8), (double)2},
+ {RUNE_C(0x000AE9), (double)3},
+ {RUNE_C(0x000AEA), (double)4},
+ {RUNE_C(0x000AEB), (double)5},
+ {RUNE_C(0x000AEC), (double)6},
+ {RUNE_C(0x000AED), (double)7},
+ {RUNE_C(0x000AEE), (double)8},
+ {RUNE_C(0x000AEF), (double)9},
+ {RUNE_C(0x000B66), (double)0},
+ {RUNE_C(0x000B67), (double)1},
+ {RUNE_C(0x000B68), (double)2},
+ {RUNE_C(0x000B69), (double)3},
+ {RUNE_C(0x000B6A), (double)4},
+ {RUNE_C(0x000B6B), (double)5},
+ {RUNE_C(0x000B6C), (double)6},
+ {RUNE_C(0x000B6D), (double)7},
+ {RUNE_C(0x000B6E), (double)8},
+ {RUNE_C(0x000B6F), (double)9},
+ {RUNE_C(0x000B72), (double)1/4},
+ {RUNE_C(0x000B73), (double)1/2},
+ {RUNE_C(0x000B74), (double)3/4},
+ {RUNE_C(0x000B75), (double)1/16},
+ {RUNE_C(0x000B76), (double)1/8},
+ {RUNE_C(0x000B77), (double)3/16},
+ {RUNE_C(0x000BE6), (double)0},
+ {RUNE_C(0x000BE7), (double)1},
+ {RUNE_C(0x000BE8), (double)2},
+ {RUNE_C(0x000BE9), (double)3},
+ {RUNE_C(0x000BEA), (double)4},
+ {RUNE_C(0x000BEB), (double)5},
+ {RUNE_C(0x000BEC), (double)6},
+ {RUNE_C(0x000BED), (double)7},
+ {RUNE_C(0x000BEE), (double)8},
+ {RUNE_C(0x000BEF), (double)9},
+ {RUNE_C(0x000BF0), (double)10},
+ {RUNE_C(0x000BF1), (double)100},
+ {RUNE_C(0x000BF2), (double)1000},
+ {RUNE_C(0x000C66), (double)0},
+ {RUNE_C(0x000C67), (double)1},
+ {RUNE_C(0x000C68), (double)2},
+ {RUNE_C(0x000C69), (double)3},
+ {RUNE_C(0x000C6A), (double)4},
+ {RUNE_C(0x000C6B), (double)5},
+ {RUNE_C(0x000C6C), (double)6},
+ {RUNE_C(0x000C6D), (double)7},
+ {RUNE_C(0x000C6E), (double)8},
+ {RUNE_C(0x000C6F), (double)9},
+ {RUNE_C(0x000C78), (double)0},
+ {RUNE_C(0x000C79), (double)1},
+ {RUNE_C(0x000C7A), (double)2},
+ {RUNE_C(0x000C7B), (double)3},
+ {RUNE_C(0x000C7C), (double)1},
+ {RUNE_C(0x000C7D), (double)2},
+ {RUNE_C(0x000C7E), (double)3},
+ {RUNE_C(0x000CE6), (double)0},
+ {RUNE_C(0x000CE7), (double)1},
+ {RUNE_C(0x000CE8), (double)2},
+ {RUNE_C(0x000CE9), (double)3},
+ {RUNE_C(0x000CEA), (double)4},
+ {RUNE_C(0x000CEB), (double)5},
+ {RUNE_C(0x000CEC), (double)6},
+ {RUNE_C(0x000CED), (double)7},
+ {RUNE_C(0x000CEE), (double)8},
+ {RUNE_C(0x000CEF), (double)9},
+ {RUNE_C(0x000D58), (double)1/160},
+ {RUNE_C(0x000D59), (double)1/40},
+ {RUNE_C(0x000D5A), (double)3/80},
+ {RUNE_C(0x000D5B), (double)1/20},
+ {RUNE_C(0x000D5C), (double)1/10},
+ {RUNE_C(0x000D5D), (double)3/20},
+ {RUNE_C(0x000D5E), (double)1/5},
+ {RUNE_C(0x000D66), (double)0},
+ {RUNE_C(0x000D67), (double)1},
+ {RUNE_C(0x000D68), (double)2},
+ {RUNE_C(0x000D69), (double)3},
+ {RUNE_C(0x000D6A), (double)4},
+ {RUNE_C(0x000D6B), (double)5},
+ {RUNE_C(0x000D6C), (double)6},
+ {RUNE_C(0x000D6D), (double)7},
+ {RUNE_C(0x000D6E), (double)8},
+ {RUNE_C(0x000D6F), (double)9},
+ {RUNE_C(0x000D70), (double)10},
+ {RUNE_C(0x000D71), (double)100},
+ {RUNE_C(0x000D72), (double)1000},
+ {RUNE_C(0x000D73), (double)1/4},
+ {RUNE_C(0x000D74), (double)1/2},
+ {RUNE_C(0x000D75), (double)3/4},
+ {RUNE_C(0x000D76), (double)1/16},
+ {RUNE_C(0x000D77), (double)1/8},
+ {RUNE_C(0x000D78), (double)3/16},
+ {RUNE_C(0x000DE6), (double)0},
+ {RUNE_C(0x000DE7), (double)1},
+ {RUNE_C(0x000DE8), (double)2},
+ {RUNE_C(0x000DE9), (double)3},
+ {RUNE_C(0x000DEA), (double)4},
+ {RUNE_C(0x000DEB), (double)5},
+ {RUNE_C(0x000DEC), (double)6},
+ {RUNE_C(0x000DED), (double)7},
+ {RUNE_C(0x000DEE), (double)8},
+ {RUNE_C(0x000DEF), (double)9},
+ {RUNE_C(0x000E50), (double)0},
+ {RUNE_C(0x000E51), (double)1},
+ {RUNE_C(0x000E52), (double)2},
+ {RUNE_C(0x000E53), (double)3},
+ {RUNE_C(0x000E54), (double)4},
+ {RUNE_C(0x000E55), (double)5},
+ {RUNE_C(0x000E56), (double)6},
+ {RUNE_C(0x000E57), (double)7},
+ {RUNE_C(0x000E58), (double)8},
+ {RUNE_C(0x000E59), (double)9},
+ {RUNE_C(0x000ED0), (double)0},
+ {RUNE_C(0x000ED1), (double)1},
+ {RUNE_C(0x000ED2), (double)2},
+ {RUNE_C(0x000ED3), (double)3},
+ {RUNE_C(0x000ED4), (double)4},
+ {RUNE_C(0x000ED5), (double)5},
+ {RUNE_C(0x000ED6), (double)6},
+ {RUNE_C(0x000ED7), (double)7},
+ {RUNE_C(0x000ED8), (double)8},
+ {RUNE_C(0x000ED9), (double)9},
+ {RUNE_C(0x000F20), (double)0},
+ {RUNE_C(0x000F21), (double)1},
+ {RUNE_C(0x000F22), (double)2},
+ {RUNE_C(0x000F23), (double)3},
+ {RUNE_C(0x000F24), (double)4},
+ {RUNE_C(0x000F25), (double)5},
+ {RUNE_C(0x000F26), (double)6},
+ {RUNE_C(0x000F27), (double)7},
+ {RUNE_C(0x000F28), (double)8},
+ {RUNE_C(0x000F29), (double)9},
+ {RUNE_C(0x000F2A), (double)1/2},
+ {RUNE_C(0x000F2B), (double)3/2},
+ {RUNE_C(0x000F2C), (double)5/2},
+ {RUNE_C(0x000F2D), (double)7/2},
+ {RUNE_C(0x000F2E), (double)9/2},
+ {RUNE_C(0x000F2F), (double)11/2},
+ {RUNE_C(0x000F30), (double)13/2},
+ {RUNE_C(0x000F31), (double)15/2},
+ {RUNE_C(0x000F32), (double)17/2},
+ {RUNE_C(0x000F33), (double)-1/2},
+ {RUNE_C(0x001040), (double)0},
+ {RUNE_C(0x001041), (double)1},
+ {RUNE_C(0x001042), (double)2},
+ {RUNE_C(0x001043), (double)3},
+ {RUNE_C(0x001044), (double)4},
+ {RUNE_C(0x001045), (double)5},
+ {RUNE_C(0x001046), (double)6},
+ {RUNE_C(0x001047), (double)7},
+ {RUNE_C(0x001048), (double)8},
+ {RUNE_C(0x001049), (double)9},
+ {RUNE_C(0x001090), (double)0},
+ {RUNE_C(0x001091), (double)1},
+ {RUNE_C(0x001092), (double)2},
+ {RUNE_C(0x001093), (double)3},
+ {RUNE_C(0x001094), (double)4},
+ {RUNE_C(0x001095), (double)5},
+ {RUNE_C(0x001096), (double)6},
+ {RUNE_C(0x001097), (double)7},
+ {RUNE_C(0x001098), (double)8},
+ {RUNE_C(0x001099), (double)9},
+ {RUNE_C(0x001369), (double)1},
+ {RUNE_C(0x00136A), (double)2},
+ {RUNE_C(0x00136B), (double)3},
+ {RUNE_C(0x00136C), (double)4},
+ {RUNE_C(0x00136D), (double)5},
+ {RUNE_C(0x00136E), (double)6},
+ {RUNE_C(0x00136F), (double)7},
+ {RUNE_C(0x001370), (double)8},
+ {RUNE_C(0x001371), (double)9},
+ {RUNE_C(0x001372), (double)10},
+ {RUNE_C(0x001373), (double)20},
+ {RUNE_C(0x001374), (double)30},
+ {RUNE_C(0x001375), (double)40},
+ {RUNE_C(0x001376), (double)50},
+ {RUNE_C(0x001377), (double)60},
+ {RUNE_C(0x001378), (double)70},
+ {RUNE_C(0x001379), (double)80},
+ {RUNE_C(0x00137A), (double)90},
+ {RUNE_C(0x00137B), (double)100},
+ {RUNE_C(0x00137C), (double)10000},
+ {RUNE_C(0x0016EE), (double)17},
+ {RUNE_C(0x0016EF), (double)18},
+ {RUNE_C(0x0016F0), (double)19},
+ {RUNE_C(0x0017E0), (double)0},
+ {RUNE_C(0x0017E1), (double)1},
+ {RUNE_C(0x0017E2), (double)2},
+ {RUNE_C(0x0017E3), (double)3},
+ {RUNE_C(0x0017E4), (double)4},
+ {RUNE_C(0x0017E5), (double)5},
+ {RUNE_C(0x0017E6), (double)6},
+ {RUNE_C(0x0017E7), (double)7},
+ {RUNE_C(0x0017E8), (double)8},
+ {RUNE_C(0x0017E9), (double)9},
+ {RUNE_C(0x0017F0), (double)0},
+ {RUNE_C(0x0017F1), (double)1},
+ {RUNE_C(0x0017F2), (double)2},
+ {RUNE_C(0x0017F3), (double)3},
+ {RUNE_C(0x0017F4), (double)4},
+ {RUNE_C(0x0017F5), (double)5},
+ {RUNE_C(0x0017F6), (double)6},
+ {RUNE_C(0x0017F7), (double)7},
+ {RUNE_C(0x0017F8), (double)8},
+ {RUNE_C(0x0017F9), (double)9},
+ {RUNE_C(0x001810), (double)0},
+ {RUNE_C(0x001811), (double)1},
+ {RUNE_C(0x001812), (double)2},
+ {RUNE_C(0x001813), (double)3},
+ {RUNE_C(0x001814), (double)4},
+ {RUNE_C(0x001815), (double)5},
+ {RUNE_C(0x001816), (double)6},
+ {RUNE_C(0x001817), (double)7},
+ {RUNE_C(0x001818), (double)8},
+ {RUNE_C(0x001819), (double)9},
+ {RUNE_C(0x001946), (double)0},
+ {RUNE_C(0x001947), (double)1},
+ {RUNE_C(0x001948), (double)2},
+ {RUNE_C(0x001949), (double)3},
+ {RUNE_C(0x00194A), (double)4},
+ {RUNE_C(0x00194B), (double)5},
+ {RUNE_C(0x00194C), (double)6},
+ {RUNE_C(0x00194D), (double)7},
+ {RUNE_C(0x00194E), (double)8},
+ {RUNE_C(0x00194F), (double)9},
+ {RUNE_C(0x0019D0), (double)0},
+ {RUNE_C(0x0019D1), (double)1},
+ {RUNE_C(0x0019D2), (double)2},
+ {RUNE_C(0x0019D3), (double)3},
+ {RUNE_C(0x0019D4), (double)4},
+ {RUNE_C(0x0019D5), (double)5},
+ {RUNE_C(0x0019D6), (double)6},
+ {RUNE_C(0x0019D7), (double)7},
+ {RUNE_C(0x0019D8), (double)8},
+ {RUNE_C(0x0019D9), (double)9},
+ {RUNE_C(0x0019DA), (double)1},
+ {RUNE_C(0x001A80), (double)0},
+ {RUNE_C(0x001A81), (double)1},
+ {RUNE_C(0x001A82), (double)2},
+ {RUNE_C(0x001A83), (double)3},
+ {RUNE_C(0x001A84), (double)4},
+ {RUNE_C(0x001A85), (double)5},
+ {RUNE_C(0x001A86), (double)6},
+ {RUNE_C(0x001A87), (double)7},
+ {RUNE_C(0x001A88), (double)8},
+ {RUNE_C(0x001A89), (double)9},
+ {RUNE_C(0x001A90), (double)0},
+ {RUNE_C(0x001A91), (double)1},
+ {RUNE_C(0x001A92), (double)2},
+ {RUNE_C(0x001A93), (double)3},
+ {RUNE_C(0x001A94), (double)4},
+ {RUNE_C(0x001A95), (double)5},
+ {RUNE_C(0x001A96), (double)6},
+ {RUNE_C(0x001A97), (double)7},
+ {RUNE_C(0x001A98), (double)8},
+ {RUNE_C(0x001A99), (double)9},
+ {RUNE_C(0x001B50), (double)0},
+ {RUNE_C(0x001B51), (double)1},
+ {RUNE_C(0x001B52), (double)2},
+ {RUNE_C(0x001B53), (double)3},
+ {RUNE_C(0x001B54), (double)4},
+ {RUNE_C(0x001B55), (double)5},
+ {RUNE_C(0x001B56), (double)6},
+ {RUNE_C(0x001B57), (double)7},
+ {RUNE_C(0x001B58), (double)8},
+ {RUNE_C(0x001B59), (double)9},
+ {RUNE_C(0x001BB0), (double)0},
+ {RUNE_C(0x001BB1), (double)1},
+ {RUNE_C(0x001BB2), (double)2},
+ {RUNE_C(0x001BB3), (double)3},
+ {RUNE_C(0x001BB4), (double)4},
+ {RUNE_C(0x001BB5), (double)5},
+ {RUNE_C(0x001BB6), (double)6},
+ {RUNE_C(0x001BB7), (double)7},
+ {RUNE_C(0x001BB8), (double)8},
+ {RUNE_C(0x001BB9), (double)9},
+ {RUNE_C(0x001C40), (double)0},
+ {RUNE_C(0x001C41), (double)1},
+ {RUNE_C(0x001C42), (double)2},
+ {RUNE_C(0x001C43), (double)3},
+ {RUNE_C(0x001C44), (double)4},
+ {RUNE_C(0x001C45), (double)5},
+ {RUNE_C(0x001C46), (double)6},
+ {RUNE_C(0x001C47), (double)7},
+ {RUNE_C(0x001C48), (double)8},
+ {RUNE_C(0x001C49), (double)9},
+ {RUNE_C(0x001C50), (double)0},
+ {RUNE_C(0x001C51), (double)1},
+ {RUNE_C(0x001C52), (double)2},
+ {RUNE_C(0x001C53), (double)3},
+ {RUNE_C(0x001C54), (double)4},
+ {RUNE_C(0x001C55), (double)5},
+ {RUNE_C(0x001C56), (double)6},
+ {RUNE_C(0x001C57), (double)7},
+ {RUNE_C(0x001C58), (double)8},
+ {RUNE_C(0x001C59), (double)9},
+ {RUNE_C(0x002070), (double)0},
+ {RUNE_C(0x002074), (double)4},
+ {RUNE_C(0x002075), (double)5},
+ {RUNE_C(0x002076), (double)6},
+ {RUNE_C(0x002077), (double)7},
+ {RUNE_C(0x002078), (double)8},
+ {RUNE_C(0x002079), (double)9},
+ {RUNE_C(0x002080), (double)0},
+ {RUNE_C(0x002081), (double)1},
+ {RUNE_C(0x002082), (double)2},
+ {RUNE_C(0x002083), (double)3},
+ {RUNE_C(0x002084), (double)4},
+ {RUNE_C(0x002085), (double)5},
+ {RUNE_C(0x002086), (double)6},
+ {RUNE_C(0x002087), (double)7},
+ {RUNE_C(0x002088), (double)8},
+ {RUNE_C(0x002089), (double)9},
+ {RUNE_C(0x002150), (double)1/7},
+ {RUNE_C(0x002151), (double)1/9},
+ {RUNE_C(0x002152), (double)1/10},
+ {RUNE_C(0x002153), (double)1/3},
+ {RUNE_C(0x002154), (double)2/3},
+ {RUNE_C(0x002155), (double)1/5},
+ {RUNE_C(0x002156), (double)2/5},
+ {RUNE_C(0x002157), (double)3/5},
+ {RUNE_C(0x002158), (double)4/5},
+ {RUNE_C(0x002159), (double)1/6},
+ {RUNE_C(0x00215A), (double)5/6},
+ {RUNE_C(0x00215B), (double)1/8},
+ {RUNE_C(0x00215C), (double)3/8},
+ {RUNE_C(0x00215D), (double)5/8},
+ {RUNE_C(0x00215E), (double)7/8},
+ {RUNE_C(0x00215F), (double)1},
+ {RUNE_C(0x002160), (double)1},
+ {RUNE_C(0x002161), (double)2},
+ {RUNE_C(0x002162), (double)3},
+ {RUNE_C(0x002163), (double)4},
+ {RUNE_C(0x002164), (double)5},
+ {RUNE_C(0x002165), (double)6},
+ {RUNE_C(0x002166), (double)7},
+ {RUNE_C(0x002167), (double)8},
+ {RUNE_C(0x002168), (double)9},
+ {RUNE_C(0x002169), (double)10},
+ {RUNE_C(0x00216A), (double)11},
+ {RUNE_C(0x00216B), (double)12},
+ {RUNE_C(0x00216C), (double)50},
+ {RUNE_C(0x00216D), (double)100},
+ {RUNE_C(0x00216E), (double)500},
+ {RUNE_C(0x00216F), (double)1000},
+ {RUNE_C(0x002170), (double)1},
+ {RUNE_C(0x002171), (double)2},
+ {RUNE_C(0x002172), (double)3},
+ {RUNE_C(0x002173), (double)4},
+ {RUNE_C(0x002174), (double)5},
+ {RUNE_C(0x002175), (double)6},
+ {RUNE_C(0x002176), (double)7},
+ {RUNE_C(0x002177), (double)8},
+ {RUNE_C(0x002178), (double)9},
+ {RUNE_C(0x002179), (double)10},
+ {RUNE_C(0x00217A), (double)11},
+ {RUNE_C(0x00217B), (double)12},
+ {RUNE_C(0x00217C), (double)50},
+ {RUNE_C(0x00217D), (double)100},
+ {RUNE_C(0x00217E), (double)500},
+ {RUNE_C(0x00217F), (double)1000},
+ {RUNE_C(0x002180), (double)1000},
+ {RUNE_C(0x002181), (double)5000},
+ {RUNE_C(0x002182), (double)10000},
+ {RUNE_C(0x002185), (double)6},
+ {RUNE_C(0x002186), (double)50},
+ {RUNE_C(0x002187), (double)50000},
+ {RUNE_C(0x002188), (double)100000},
+ {RUNE_C(0x002189), (double)0},
+ {RUNE_C(0x002460), (double)1},
+ {RUNE_C(0x002461), (double)2},
+ {RUNE_C(0x002462), (double)3},
+ {RUNE_C(0x002463), (double)4},
+ {RUNE_C(0x002464), (double)5},
+ {RUNE_C(0x002465), (double)6},
+ {RUNE_C(0x002466), (double)7},
+ {RUNE_C(0x002467), (double)8},
+ {RUNE_C(0x002468), (double)9},
+ {RUNE_C(0x002469), (double)10},
+ {RUNE_C(0x00246A), (double)11},
+ {RUNE_C(0x00246B), (double)12},
+ {RUNE_C(0x00246C), (double)13},
+ {RUNE_C(0x00246D), (double)14},
+ {RUNE_C(0x00246E), (double)15},
+ {RUNE_C(0x00246F), (double)16},
+ {RUNE_C(0x002470), (double)17},
+ {RUNE_C(0x002471), (double)18},
+ {RUNE_C(0x002472), (double)19},
+ {RUNE_C(0x002473), (double)20},
+ {RUNE_C(0x002474), (double)1},
+ {RUNE_C(0x002475), (double)2},
+ {RUNE_C(0x002476), (double)3},
+ {RUNE_C(0x002477), (double)4},
+ {RUNE_C(0x002478), (double)5},
+ {RUNE_C(0x002479), (double)6},
+ {RUNE_C(0x00247A), (double)7},
+ {RUNE_C(0x00247B), (double)8},
+ {RUNE_C(0x00247C), (double)9},
+ {RUNE_C(0x00247D), (double)10},
+ {RUNE_C(0x00247E), (double)11},
+ {RUNE_C(0x00247F), (double)12},
+ {RUNE_C(0x002480), (double)13},
+ {RUNE_C(0x002481), (double)14},
+ {RUNE_C(0x002482), (double)15},
+ {RUNE_C(0x002483), (double)16},
+ {RUNE_C(0x002484), (double)17},
+ {RUNE_C(0x002485), (double)18},
+ {RUNE_C(0x002486), (double)19},
+ {RUNE_C(0x002487), (double)20},
+ {RUNE_C(0x002488), (double)1},
+ {RUNE_C(0x002489), (double)2},
+ {RUNE_C(0x00248A), (double)3},
+ {RUNE_C(0x00248B), (double)4},
+ {RUNE_C(0x00248C), (double)5},
+ {RUNE_C(0x00248D), (double)6},
+ {RUNE_C(0x00248E), (double)7},
+ {RUNE_C(0x00248F), (double)8},
+ {RUNE_C(0x002490), (double)9},
+ {RUNE_C(0x002491), (double)10},
+ {RUNE_C(0x002492), (double)11},
+ {RUNE_C(0x002493), (double)12},
+ {RUNE_C(0x002494), (double)13},
+ {RUNE_C(0x002495), (double)14},
+ {RUNE_C(0x002496), (double)15},
+ {RUNE_C(0x002497), (double)16},
+ {RUNE_C(0x002498), (double)17},
+ {RUNE_C(0x002499), (double)18},
+ {RUNE_C(0x00249A), (double)19},
+ {RUNE_C(0x00249B), (double)20},
+ {RUNE_C(0x0024EA), (double)0},
+ {RUNE_C(0x0024EB), (double)11},
+ {RUNE_C(0x0024EC), (double)12},
+ {RUNE_C(0x0024ED), (double)13},
+ {RUNE_C(0x0024EE), (double)14},
+ {RUNE_C(0x0024EF), (double)15},
+ {RUNE_C(0x0024F0), (double)16},
+ {RUNE_C(0x0024F1), (double)17},
+ {RUNE_C(0x0024F2), (double)18},
+ {RUNE_C(0x0024F3), (double)19},
+ {RUNE_C(0x0024F4), (double)20},
+ {RUNE_C(0x0024F5), (double)1},
+ {RUNE_C(0x0024F6), (double)2},
+ {RUNE_C(0x0024F7), (double)3},
+ {RUNE_C(0x0024F8), (double)4},
+ {RUNE_C(0x0024F9), (double)5},
+ {RUNE_C(0x0024FA), (double)6},
+ {RUNE_C(0x0024FB), (double)7},
+ {RUNE_C(0x0024FC), (double)8},
+ {RUNE_C(0x0024FD), (double)9},
+ {RUNE_C(0x0024FE), (double)10},
+ {RUNE_C(0x0024FF), (double)0},
+ {RUNE_C(0x002776), (double)1},
+ {RUNE_C(0x002777), (double)2},
+ {RUNE_C(0x002778), (double)3},
+ {RUNE_C(0x002779), (double)4},
+ {RUNE_C(0x00277A), (double)5},
+ {RUNE_C(0x00277B), (double)6},
+ {RUNE_C(0x00277C), (double)7},
+ {RUNE_C(0x00277D), (double)8},
+ {RUNE_C(0x00277E), (double)9},
+ {RUNE_C(0x00277F), (double)10},
+ {RUNE_C(0x002780), (double)1},
+ {RUNE_C(0x002781), (double)2},
+ {RUNE_C(0x002782), (double)3},
+ {RUNE_C(0x002783), (double)4},
+ {RUNE_C(0x002784), (double)5},
+ {RUNE_C(0x002785), (double)6},
+ {RUNE_C(0x002786), (double)7},
+ {RUNE_C(0x002787), (double)8},
+ {RUNE_C(0x002788), (double)9},
+ {RUNE_C(0x002789), (double)10},
+ {RUNE_C(0x00278A), (double)1},
+ {RUNE_C(0x00278B), (double)2},
+ {RUNE_C(0x00278C), (double)3},
+ {RUNE_C(0x00278D), (double)4},
+ {RUNE_C(0x00278E), (double)5},
+ {RUNE_C(0x00278F), (double)6},
+ {RUNE_C(0x002790), (double)7},
+ {RUNE_C(0x002791), (double)8},
+ {RUNE_C(0x002792), (double)9},
+ {RUNE_C(0x002793), (double)10},
+ {RUNE_C(0x002CFD), (double)1/2},
+ {RUNE_C(0x003007), (double)0},
+ {RUNE_C(0x003021), (double)1},
+ {RUNE_C(0x003022), (double)2},
+ {RUNE_C(0x003023), (double)3},
+ {RUNE_C(0x003024), (double)4},
+ {RUNE_C(0x003025), (double)5},
+ {RUNE_C(0x003026), (double)6},
+ {RUNE_C(0x003027), (double)7},
+ {RUNE_C(0x003028), (double)8},
+ {RUNE_C(0x003029), (double)9},
+ {RUNE_C(0x003038), (double)10},
+ {RUNE_C(0x003039), (double)20},
+ {RUNE_C(0x00303A), (double)30},
+ {RUNE_C(0x003192), (double)1},
+ {RUNE_C(0x003193), (double)2},
+ {RUNE_C(0x003194), (double)3},
+ {RUNE_C(0x003195), (double)4},
+ {RUNE_C(0x003220), (double)1},
+ {RUNE_C(0x003221), (double)2},
+ {RUNE_C(0x003222), (double)3},
+ {RUNE_C(0x003223), (double)4},
+ {RUNE_C(0x003224), (double)5},
+ {RUNE_C(0x003225), (double)6},
+ {RUNE_C(0x003226), (double)7},
+ {RUNE_C(0x003227), (double)8},
+ {RUNE_C(0x003228), (double)9},
+ {RUNE_C(0x003229), (double)10},
+ {RUNE_C(0x003248), (double)10},
+ {RUNE_C(0x003249), (double)20},
+ {RUNE_C(0x00324A), (double)30},
+ {RUNE_C(0x00324B), (double)40},
+ {RUNE_C(0x00324C), (double)50},
+ {RUNE_C(0x00324D), (double)60},
+ {RUNE_C(0x00324E), (double)70},
+ {RUNE_C(0x00324F), (double)80},
+ {RUNE_C(0x003251), (double)21},
+ {RUNE_C(0x003252), (double)22},
+ {RUNE_C(0x003253), (double)23},
+ {RUNE_C(0x003254), (double)24},
+ {RUNE_C(0x003255), (double)25},
+ {RUNE_C(0x003256), (double)26},
+ {RUNE_C(0x003257), (double)27},
+ {RUNE_C(0x003258), (double)28},
+ {RUNE_C(0x003259), (double)29},
+ {RUNE_C(0x00325A), (double)30},
+ {RUNE_C(0x00325B), (double)31},
+ {RUNE_C(0x00325C), (double)32},
+ {RUNE_C(0x00325D), (double)33},
+ {RUNE_C(0x00325E), (double)34},
+ {RUNE_C(0x00325F), (double)35},
+ {RUNE_C(0x003280), (double)1},
+ {RUNE_C(0x003281), (double)2},
+ {RUNE_C(0x003282), (double)3},
+ {RUNE_C(0x003283), (double)4},
+ {RUNE_C(0x003284), (double)5},
+ {RUNE_C(0x003285), (double)6},
+ {RUNE_C(0x003286), (double)7},
+ {RUNE_C(0x003287), (double)8},
+ {RUNE_C(0x003288), (double)9},
+ {RUNE_C(0x003289), (double)10},
+ {RUNE_C(0x0032B1), (double)36},
+ {RUNE_C(0x0032B2), (double)37},
+ {RUNE_C(0x0032B3), (double)38},
+ {RUNE_C(0x0032B4), (double)39},
+ {RUNE_C(0x0032B5), (double)40},
+ {RUNE_C(0x0032B6), (double)41},
+ {RUNE_C(0x0032B7), (double)42},
+ {RUNE_C(0x0032B8), (double)43},
+ {RUNE_C(0x0032B9), (double)44},
+ {RUNE_C(0x0032BA), (double)45},
+ {RUNE_C(0x0032BB), (double)46},
+ {RUNE_C(0x0032BC), (double)47},
+ {RUNE_C(0x0032BD), (double)48},
+ {RUNE_C(0x0032BE), (double)49},
+ {RUNE_C(0x0032BF), (double)50},
+ {RUNE_C(0x003405), (double)5},
+ {RUNE_C(0x003483), (double)2},
+ {RUNE_C(0x00382A), (double)5},
+ {RUNE_C(0x003B4D), (double)7},
+ {RUNE_C(0x004E00), (double)1},
+ {RUNE_C(0x004E03), (double)7},
+ {RUNE_C(0x004E07), (double)10000},
+ {RUNE_C(0x004E09), (double)3},
+ {RUNE_C(0x004E24), (double)2},
+ {RUNE_C(0x004E5D), (double)9},
+ {RUNE_C(0x004E8C), (double)2},
+ {RUNE_C(0x004E94), (double)5},
+ {RUNE_C(0x004E96), (double)4},
+ {RUNE_C(0x004EAC), (double)10000000000000000},
+ {RUNE_C(0x004EBF), (double)100000000},
+ {RUNE_C(0x004EC0), (double)10},
+ {RUNE_C(0x004EDF), (double)1000},
+ {RUNE_C(0x004EE8), (double)3},
+ {RUNE_C(0x004F0D), (double)5},
+ {RUNE_C(0x004F70), (double)100},
+ {RUNE_C(0x004FE9), (double)2},
+ {RUNE_C(0x005006), (double)2},
+ {RUNE_C(0x005104), (double)100000000},
+ {RUNE_C(0x005146), (double)1000000},
+ {RUNE_C(0x005169), (double)2},
+ {RUNE_C(0x00516B), (double)8},
+ {RUNE_C(0x00516D), (double)6},
+ {RUNE_C(0x005341), (double)10},
+ {RUNE_C(0x005343), (double)1000},
+ {RUNE_C(0x005344), (double)20},
+ {RUNE_C(0x005345), (double)30},
+ {RUNE_C(0x00534C), (double)40},
+ {RUNE_C(0x0053C1), (double)3},
+ {RUNE_C(0x0053C2), (double)3},
+ {RUNE_C(0x0053C3), (double)3},
+ {RUNE_C(0x0053C4), (double)3},
+ {RUNE_C(0x0056DB), (double)4},
+ {RUNE_C(0x0058F1), (double)1},
+ {RUNE_C(0x0058F9), (double)1},
+ {RUNE_C(0x005E7A), (double)1},
+ {RUNE_C(0x005EFE), (double)9},
+ {RUNE_C(0x005EFF), (double)20},
+ {RUNE_C(0x005F0C), (double)1},
+ {RUNE_C(0x005F0D), (double)2},
+ {RUNE_C(0x005F0E), (double)3},
+ {RUNE_C(0x005F10), (double)2},
+ {RUNE_C(0x0062D0), (double)7},
+ {RUNE_C(0x0062FE), (double)10},
+ {RUNE_C(0x00634C), (double)8},
+ {RUNE_C(0x0067D2), (double)7},
+ {RUNE_C(0x006D1E), (double)0},
+ {RUNE_C(0x006F06), (double)7},
+ {RUNE_C(0x007396), (double)9},
+ {RUNE_C(0x00767E), (double)100},
+ {RUNE_C(0x007695), (double)200},
+ {RUNE_C(0x0079ED), (double)1000000000},
+ {RUNE_C(0x008086), (double)4},
+ {RUNE_C(0x00842C), (double)10000},
+ {RUNE_C(0x008CAE), (double)2},
+ {RUNE_C(0x008CB3), (double)2},
+ {RUNE_C(0x008D30), (double)2},
+ {RUNE_C(0x00920E), (double)9},
+ {RUNE_C(0x0094A9), (double)9},
+ {RUNE_C(0x009621), (double)1000},
+ {RUNE_C(0x009646), (double)6},
+ {RUNE_C(0x00964C), (double)100},
+ {RUNE_C(0x009678), (double)6},
+ {RUNE_C(0x0096F6), (double)0},
+ {RUNE_C(0x00A620), (double)0},
+ {RUNE_C(0x00A621), (double)1},
+ {RUNE_C(0x00A622), (double)2},
+ {RUNE_C(0x00A623), (double)3},
+ {RUNE_C(0x00A624), (double)4},
+ {RUNE_C(0x00A625), (double)5},
+ {RUNE_C(0x00A626), (double)6},
+ {RUNE_C(0x00A627), (double)7},
+ {RUNE_C(0x00A628), (double)8},
+ {RUNE_C(0x00A629), (double)9},
+ {RUNE_C(0x00A6E6), (double)1},
+ {RUNE_C(0x00A6E7), (double)2},
+ {RUNE_C(0x00A6E8), (double)3},
+ {RUNE_C(0x00A6E9), (double)4},
+ {RUNE_C(0x00A6EA), (double)5},
+ {RUNE_C(0x00A6EB), (double)6},
+ {RUNE_C(0x00A6EC), (double)7},
+ {RUNE_C(0x00A6ED), (double)8},
+ {RUNE_C(0x00A6EE), (double)9},
+ {RUNE_C(0x00A6EF), (double)0},
+ {RUNE_C(0x00A830), (double)1/4},
+ {RUNE_C(0x00A831), (double)1/2},
+ {RUNE_C(0x00A832), (double)3/4},
+ {RUNE_C(0x00A833), (double)1/16},
+ {RUNE_C(0x00A834), (double)1/8},
+ {RUNE_C(0x00A835), (double)3/16},
+ {RUNE_C(0x00A8D0), (double)0},
+ {RUNE_C(0x00A8D1), (double)1},
+ {RUNE_C(0x00A8D2), (double)2},
+ {RUNE_C(0x00A8D3), (double)3},
+ {RUNE_C(0x00A8D4), (double)4},
+ {RUNE_C(0x00A8D5), (double)5},
+ {RUNE_C(0x00A8D6), (double)6},
+ {RUNE_C(0x00A8D7), (double)7},
+ {RUNE_C(0x00A8D8), (double)8},
+ {RUNE_C(0x00A8D9), (double)9},
+ {RUNE_C(0x00A900), (double)0},
+ {RUNE_C(0x00A901), (double)1},
+ {RUNE_C(0x00A902), (double)2},
+ {RUNE_C(0x00A903), (double)3},
+ {RUNE_C(0x00A904), (double)4},
+ {RUNE_C(0x00A905), (double)5},
+ {RUNE_C(0x00A906), (double)6},
+ {RUNE_C(0x00A907), (double)7},
+ {RUNE_C(0x00A908), (double)8},
+ {RUNE_C(0x00A909), (double)9},
+ {RUNE_C(0x00A9D0), (double)0},
+ {RUNE_C(0x00A9D1), (double)1},
+ {RUNE_C(0x00A9D2), (double)2},
+ {RUNE_C(0x00A9D3), (double)3},
+ {RUNE_C(0x00A9D4), (double)4},
+ {RUNE_C(0x00A9D5), (double)5},
+ {RUNE_C(0x00A9D6), (double)6},
+ {RUNE_C(0x00A9D7), (double)7},
+ {RUNE_C(0x00A9D8), (double)8},
+ {RUNE_C(0x00A9D9), (double)9},
+ {RUNE_C(0x00A9F0), (double)0},
+ {RUNE_C(0x00A9F1), (double)1},
+ {RUNE_C(0x00A9F2), (double)2},
+ {RUNE_C(0x00A9F3), (double)3},
+ {RUNE_C(0x00A9F4), (double)4},
+ {RUNE_C(0x00A9F5), (double)5},
+ {RUNE_C(0x00A9F6), (double)6},
+ {RUNE_C(0x00A9F7), (double)7},
+ {RUNE_C(0x00A9F8), (double)8},
+ {RUNE_C(0x00A9F9), (double)9},
+ {RUNE_C(0x00AA50), (double)0},
+ {RUNE_C(0x00AA51), (double)1},
+ {RUNE_C(0x00AA52), (double)2},
+ {RUNE_C(0x00AA53), (double)3},
+ {RUNE_C(0x00AA54), (double)4},
+ {RUNE_C(0x00AA55), (double)5},
+ {RUNE_C(0x00AA56), (double)6},
+ {RUNE_C(0x00AA57), (double)7},
+ {RUNE_C(0x00AA58), (double)8},
+ {RUNE_C(0x00AA59), (double)9},
+ {RUNE_C(0x00ABF0), (double)0},
+ {RUNE_C(0x00ABF1), (double)1},
+ {RUNE_C(0x00ABF2), (double)2},
+ {RUNE_C(0x00ABF3), (double)3},
+ {RUNE_C(0x00ABF4), (double)4},
+ {RUNE_C(0x00ABF5), (double)5},
+ {RUNE_C(0x00ABF6), (double)6},
+ {RUNE_C(0x00ABF7), (double)7},
+ {RUNE_C(0x00ABF8), (double)8},
+ {RUNE_C(0x00ABF9), (double)9},
+ {RUNE_C(0x00F96B), (double)3},
+ {RUNE_C(0x00F973), (double)10},
+ {RUNE_C(0x00F978), (double)2},
+ {RUNE_C(0x00F9B2), (double)0},
+ {RUNE_C(0x00F9D1), (double)6},
+ {RUNE_C(0x00F9D3), (double)6},
+ {RUNE_C(0x00F9FD), (double)10},
+ {RUNE_C(0x00FF10), (double)0},
+ {RUNE_C(0x00FF11), (double)1},
+ {RUNE_C(0x00FF12), (double)2},
+ {RUNE_C(0x00FF13), (double)3},
+ {RUNE_C(0x00FF14), (double)4},
+ {RUNE_C(0x00FF15), (double)5},
+ {RUNE_C(0x00FF16), (double)6},
+ {RUNE_C(0x00FF17), (double)7},
+ {RUNE_C(0x00FF18), (double)8},
+ {RUNE_C(0x00FF19), (double)9},
+ {RUNE_C(0x010107), (double)1},
+ {RUNE_C(0x010108), (double)2},
+ {RUNE_C(0x010109), (double)3},
+ {RUNE_C(0x01010A), (double)4},
+ {RUNE_C(0x01010B), (double)5},
+ {RUNE_C(0x01010C), (double)6},
+ {RUNE_C(0x01010D), (double)7},
+ {RUNE_C(0x01010E), (double)8},
+ {RUNE_C(0x01010F), (double)9},
+ {RUNE_C(0x010110), (double)10},
+ {RUNE_C(0x010111), (double)20},
+ {RUNE_C(0x010112), (double)30},
+ {RUNE_C(0x010113), (double)40},
+ {RUNE_C(0x010114), (double)50},
+ {RUNE_C(0x010115), (double)60},
+ {RUNE_C(0x010116), (double)70},
+ {RUNE_C(0x010117), (double)80},
+ {RUNE_C(0x010118), (double)90},
+ {RUNE_C(0x010119), (double)100},
+ {RUNE_C(0x01011A), (double)200},
+ {RUNE_C(0x01011B), (double)300},
+ {RUNE_C(0x01011C), (double)400},
+ {RUNE_C(0x01011D), (double)500},
+ {RUNE_C(0x01011E), (double)600},
+ {RUNE_C(0x01011F), (double)700},
+ {RUNE_C(0x010120), (double)800},
+ {RUNE_C(0x010121), (double)900},
+ {RUNE_C(0x010122), (double)1000},
+ {RUNE_C(0x010123), (double)2000},
+ {RUNE_C(0x010124), (double)3000},
+ {RUNE_C(0x010125), (double)4000},
+ {RUNE_C(0x010126), (double)5000},
+ {RUNE_C(0x010127), (double)6000},
+ {RUNE_C(0x010128), (double)7000},
+ {RUNE_C(0x010129), (double)8000},
+ {RUNE_C(0x01012A), (double)9000},
+ {RUNE_C(0x01012B), (double)10000},
+ {RUNE_C(0x01012C), (double)20000},
+ {RUNE_C(0x01012D), (double)30000},
+ {RUNE_C(0x01012E), (double)40000},
+ {RUNE_C(0x01012F), (double)50000},
+ {RUNE_C(0x010130), (double)60000},
+ {RUNE_C(0x010131), (double)70000},
+ {RUNE_C(0x010132), (double)80000},
+ {RUNE_C(0x010133), (double)90000},
+ {RUNE_C(0x010140), (double)1/4},
+ {RUNE_C(0x010141), (double)1/2},
+ {RUNE_C(0x010142), (double)1},
+ {RUNE_C(0x010143), (double)5},
+ {RUNE_C(0x010144), (double)50},
+ {RUNE_C(0x010145), (double)500},
+ {RUNE_C(0x010146), (double)5000},
+ {RUNE_C(0x010147), (double)50000},
+ {RUNE_C(0x010148), (double)5},
+ {RUNE_C(0x010149), (double)10},
+ {RUNE_C(0x01014A), (double)50},
+ {RUNE_C(0x01014B), (double)100},
+ {RUNE_C(0x01014C), (double)500},
+ {RUNE_C(0x01014D), (double)1000},
+ {RUNE_C(0x01014E), (double)5000},
+ {RUNE_C(0x01014F), (double)5},
+ {RUNE_C(0x010150), (double)10},
+ {RUNE_C(0x010151), (double)50},
+ {RUNE_C(0x010152), (double)100},
+ {RUNE_C(0x010153), (double)500},
+ {RUNE_C(0x010154), (double)1000},
+ {RUNE_C(0x010155), (double)10000},
+ {RUNE_C(0x010156), (double)50000},
+ {RUNE_C(0x010157), (double)10},
+ {RUNE_C(0x010158), (double)1},
+ {RUNE_C(0x010159), (double)1},
+ {RUNE_C(0x01015A), (double)1},
+ {RUNE_C(0x01015B), (double)2},
+ {RUNE_C(0x01015C), (double)2},
+ {RUNE_C(0x01015D), (double)2},
+ {RUNE_C(0x01015E), (double)2},
+ {RUNE_C(0x01015F), (double)5},
+ {RUNE_C(0x010160), (double)10},
+ {RUNE_C(0x010161), (double)10},
+ {RUNE_C(0x010162), (double)10},
+ {RUNE_C(0x010163), (double)10},
+ {RUNE_C(0x010164), (double)10},
+ {RUNE_C(0x010165), (double)30},
+ {RUNE_C(0x010166), (double)50},
+ {RUNE_C(0x010167), (double)50},
+ {RUNE_C(0x010168), (double)50},
+ {RUNE_C(0x010169), (double)50},
+ {RUNE_C(0x01016A), (double)100},
+ {RUNE_C(0x01016B), (double)300},
+ {RUNE_C(0x01016C), (double)500},
+ {RUNE_C(0x01016D), (double)500},
+ {RUNE_C(0x01016E), (double)500},
+ {RUNE_C(0x01016F), (double)500},
+ {RUNE_C(0x010170), (double)500},
+ {RUNE_C(0x010171), (double)1000},
+ {RUNE_C(0x010172), (double)5000},
+ {RUNE_C(0x010173), (double)5},
+ {RUNE_C(0x010174), (double)50},
+ {RUNE_C(0x010175), (double)1/2},
+ {RUNE_C(0x010176), (double)1/2},
+ {RUNE_C(0x010177), (double)2/3},
+ {RUNE_C(0x010178), (double)3/4},
+ {RUNE_C(0x01018A), (double)0},
+ {RUNE_C(0x01018B), (double)1/4},
+ {RUNE_C(0x0102E1), (double)1},
+ {RUNE_C(0x0102E2), (double)2},
+ {RUNE_C(0x0102E3), (double)3},
+ {RUNE_C(0x0102E4), (double)4},
+ {RUNE_C(0x0102E5), (double)5},
+ {RUNE_C(0x0102E6), (double)6},
+ {RUNE_C(0x0102E7), (double)7},
+ {RUNE_C(0x0102E8), (double)8},
+ {RUNE_C(0x0102E9), (double)9},
+ {RUNE_C(0x0102EA), (double)10},
+ {RUNE_C(0x0102EB), (double)20},
+ {RUNE_C(0x0102EC), (double)30},
+ {RUNE_C(0x0102ED), (double)40},
+ {RUNE_C(0x0102EE), (double)50},
+ {RUNE_C(0x0102EF), (double)60},
+ {RUNE_C(0x0102F0), (double)70},
+ {RUNE_C(0x0102F1), (double)80},
+ {RUNE_C(0x0102F2), (double)90},
+ {RUNE_C(0x0102F3), (double)100},
+ {RUNE_C(0x0102F4), (double)200},
+ {RUNE_C(0x0102F5), (double)300},
+ {RUNE_C(0x0102F6), (double)400},
+ {RUNE_C(0x0102F7), (double)500},
+ {RUNE_C(0x0102F8), (double)600},
+ {RUNE_C(0x0102F9), (double)700},
+ {RUNE_C(0x0102FA), (double)800},
+ {RUNE_C(0x0102FB), (double)900},
+ {RUNE_C(0x010320), (double)1},
+ {RUNE_C(0x010321), (double)5},
+ {RUNE_C(0x010322), (double)10},
+ {RUNE_C(0x010323), (double)50},
+ {RUNE_C(0x010341), (double)90},
+ {RUNE_C(0x01034A), (double)900},
+ {RUNE_C(0x0103D1), (double)1},
+ {RUNE_C(0x0103D2), (double)2},
+ {RUNE_C(0x0103D3), (double)10},
+ {RUNE_C(0x0103D4), (double)20},
+ {RUNE_C(0x0103D5), (double)100},
+ {RUNE_C(0x0104A0), (double)0},
+ {RUNE_C(0x0104A1), (double)1},
+ {RUNE_C(0x0104A2), (double)2},
+ {RUNE_C(0x0104A3), (double)3},
+ {RUNE_C(0x0104A4), (double)4},
+ {RUNE_C(0x0104A5), (double)5},
+ {RUNE_C(0x0104A6), (double)6},
+ {RUNE_C(0x0104A7), (double)7},
+ {RUNE_C(0x0104A8), (double)8},
+ {RUNE_C(0x0104A9), (double)9},
+ {RUNE_C(0x010858), (double)1},
+ {RUNE_C(0x010859), (double)2},
+ {RUNE_C(0x01085A), (double)3},
+ {RUNE_C(0x01085B), (double)10},
+ {RUNE_C(0x01085C), (double)20},
+ {RUNE_C(0x01085D), (double)100},
+ {RUNE_C(0x01085E), (double)1000},
+ {RUNE_C(0x01085F), (double)10000},
+ {RUNE_C(0x010879), (double)1},
+ {RUNE_C(0x01087A), (double)2},
+ {RUNE_C(0x01087B), (double)3},
+ {RUNE_C(0x01087C), (double)4},
+ {RUNE_C(0x01087D), (double)5},
+ {RUNE_C(0x01087E), (double)10},
+ {RUNE_C(0x01087F), (double)20},
+ {RUNE_C(0x0108A7), (double)1},
+ {RUNE_C(0x0108A8), (double)2},
+ {RUNE_C(0x0108A9), (double)3},
+ {RUNE_C(0x0108AA), (double)4},
+ {RUNE_C(0x0108AB), (double)4},
+ {RUNE_C(0x0108AC), (double)5},
+ {RUNE_C(0x0108AD), (double)10},
+ {RUNE_C(0x0108AE), (double)20},
+ {RUNE_C(0x0108AF), (double)100},
+ {RUNE_C(0x0108FB), (double)1},
+ {RUNE_C(0x0108FC), (double)5},
+ {RUNE_C(0x0108FD), (double)10},
+ {RUNE_C(0x0108FE), (double)20},
+ {RUNE_C(0x0108FF), (double)100},
+ {RUNE_C(0x010916), (double)1},
+ {RUNE_C(0x010917), (double)10},
+ {RUNE_C(0x010918), (double)20},
+ {RUNE_C(0x010919), (double)100},
+ {RUNE_C(0x01091A), (double)2},
+ {RUNE_C(0x01091B), (double)3},
+ {RUNE_C(0x0109BC), (double)11/12},
+ {RUNE_C(0x0109BD), (double)1/2},
+ {RUNE_C(0x0109C0), (double)1},
+ {RUNE_C(0x0109C1), (double)2},
+ {RUNE_C(0x0109C2), (double)3},
+ {RUNE_C(0x0109C3), (double)4},
+ {RUNE_C(0x0109C4), (double)5},
+ {RUNE_C(0x0109C5), (double)6},
+ {RUNE_C(0x0109C6), (double)7},
+ {RUNE_C(0x0109C7), (double)8},
+ {RUNE_C(0x0109C8), (double)9},
+ {RUNE_C(0x0109C9), (double)10},
+ {RUNE_C(0x0109CA), (double)20},
+ {RUNE_C(0x0109CB), (double)30},
+ {RUNE_C(0x0109CC), (double)40},
+ {RUNE_C(0x0109CD), (double)50},
+ {RUNE_C(0x0109CE), (double)60},
+ {RUNE_C(0x0109CF), (double)70},
+ {RUNE_C(0x0109D2), (double)100},
+ {RUNE_C(0x0109D3), (double)200},
+ {RUNE_C(0x0109D4), (double)300},
+ {RUNE_C(0x0109D5), (double)400},
+ {RUNE_C(0x0109D6), (double)500},
+ {RUNE_C(0x0109D7), (double)600},
+ {RUNE_C(0x0109D8), (double)700},
+ {RUNE_C(0x0109D9), (double)800},
+ {RUNE_C(0x0109DA), (double)900},
+ {RUNE_C(0x0109DB), (double)1000},
+ {RUNE_C(0x0109DC), (double)2000},
+ {RUNE_C(0x0109DD), (double)3000},
+ {RUNE_C(0x0109DE), (double)4000},
+ {RUNE_C(0x0109DF), (double)5000},
+ {RUNE_C(0x0109E0), (double)6000},
+ {RUNE_C(0x0109E1), (double)7000},
+ {RUNE_C(0x0109E2), (double)8000},
+ {RUNE_C(0x0109E3), (double)9000},
+ {RUNE_C(0x0109E4), (double)10000},
+ {RUNE_C(0x0109E5), (double)20000},
+ {RUNE_C(0x0109E6), (double)30000},
+ {RUNE_C(0x0109E7), (double)40000},
+ {RUNE_C(0x0109E8), (double)50000},
+ {RUNE_C(0x0109E9), (double)60000},
+ {RUNE_C(0x0109EA), (double)70000},
+ {RUNE_C(0x0109EB), (double)80000},
+ {RUNE_C(0x0109EC), (double)90000},
+ {RUNE_C(0x0109ED), (double)100000},
+ {RUNE_C(0x0109EE), (double)200000},
+ {RUNE_C(0x0109EF), (double)300000},
+ {RUNE_C(0x0109F0), (double)400000},
+ {RUNE_C(0x0109F1), (double)500000},
+ {RUNE_C(0x0109F2), (double)600000},
+ {RUNE_C(0x0109F3), (double)700000},
+ {RUNE_C(0x0109F4), (double)800000},
+ {RUNE_C(0x0109F5), (double)900000},
+ {RUNE_C(0x0109F6), (double)1/12},
+ {RUNE_C(0x0109F7), (double)1/6},
+ {RUNE_C(0x0109F8), (double)1/4},
+ {RUNE_C(0x0109F9), (double)1/3},
+ {RUNE_C(0x0109FA), (double)5/12},
+ {RUNE_C(0x0109FB), (double)1/2},
+ {RUNE_C(0x0109FC), (double)7/12},
+ {RUNE_C(0x0109FD), (double)2/3},
+ {RUNE_C(0x0109FE), (double)3/4},
+ {RUNE_C(0x0109FF), (double)5/6},
+ {RUNE_C(0x010A40), (double)1},
+ {RUNE_C(0x010A41), (double)2},
+ {RUNE_C(0x010A42), (double)3},
+ {RUNE_C(0x010A43), (double)4},
+ {RUNE_C(0x010A44), (double)10},
+ {RUNE_C(0x010A45), (double)20},
+ {RUNE_C(0x010A46), (double)100},
+ {RUNE_C(0x010A47), (double)1000},
+ {RUNE_C(0x010A48), (double)1/2},
+ {RUNE_C(0x010A7D), (double)1},
+ {RUNE_C(0x010A7E), (double)50},
+ {RUNE_C(0x010A9D), (double)1},
+ {RUNE_C(0x010A9E), (double)10},
+ {RUNE_C(0x010A9F), (double)20},
+ {RUNE_C(0x010AEB), (double)1},
+ {RUNE_C(0x010AEC), (double)5},
+ {RUNE_C(0x010AED), (double)10},
+ {RUNE_C(0x010AEE), (double)20},
+ {RUNE_C(0x010AEF), (double)100},
+ {RUNE_C(0x010B58), (double)1},
+ {RUNE_C(0x010B59), (double)2},
+ {RUNE_C(0x010B5A), (double)3},
+ {RUNE_C(0x010B5B), (double)4},
+ {RUNE_C(0x010B5C), (double)10},
+ {RUNE_C(0x010B5D), (double)20},
+ {RUNE_C(0x010B5E), (double)100},
+ {RUNE_C(0x010B5F), (double)1000},
+ {RUNE_C(0x010B78), (double)1},
+ {RUNE_C(0x010B79), (double)2},
+ {RUNE_C(0x010B7A), (double)3},
+ {RUNE_C(0x010B7B), (double)4},
+ {RUNE_C(0x010B7C), (double)10},
+ {RUNE_C(0x010B7D), (double)20},
+ {RUNE_C(0x010B7E), (double)100},
+ {RUNE_C(0x010B7F), (double)1000},
+ {RUNE_C(0x010BA9), (double)1},
+ {RUNE_C(0x010BAA), (double)2},
+ {RUNE_C(0x010BAB), (double)3},
+ {RUNE_C(0x010BAC), (double)4},
+ {RUNE_C(0x010BAD), (double)10},
+ {RUNE_C(0x010BAE), (double)20},
+ {RUNE_C(0x010BAF), (double)100},
+ {RUNE_C(0x010CFA), (double)1},
+ {RUNE_C(0x010CFB), (double)5},
+ {RUNE_C(0x010CFC), (double)10},
+ {RUNE_C(0x010CFD), (double)50},
+ {RUNE_C(0x010CFE), (double)100},
+ {RUNE_C(0x010CFF), (double)1000},
+ {RUNE_C(0x010D30), (double)0},
+ {RUNE_C(0x010D31), (double)1},
+ {RUNE_C(0x010D32), (double)2},
+ {RUNE_C(0x010D33), (double)3},
+ {RUNE_C(0x010D34), (double)4},
+ {RUNE_C(0x010D35), (double)5},
+ {RUNE_C(0x010D36), (double)6},
+ {RUNE_C(0x010D37), (double)7},
+ {RUNE_C(0x010D38), (double)8},
+ {RUNE_C(0x010D39), (double)9},
+ {RUNE_C(0x010E60), (double)1},
+ {RUNE_C(0x010E61), (double)2},
+ {RUNE_C(0x010E62), (double)3},
+ {RUNE_C(0x010E63), (double)4},
+ {RUNE_C(0x010E64), (double)5},
+ {RUNE_C(0x010E65), (double)6},
+ {RUNE_C(0x010E66), (double)7},
+ {RUNE_C(0x010E67), (double)8},
+ {RUNE_C(0x010E68), (double)9},
+ {RUNE_C(0x010E69), (double)10},
+ {RUNE_C(0x010E6A), (double)20},
+ {RUNE_C(0x010E6B), (double)30},
+ {RUNE_C(0x010E6C), (double)40},
+ {RUNE_C(0x010E6D), (double)50},
+ {RUNE_C(0x010E6E), (double)60},
+ {RUNE_C(0x010E6F), (double)70},
+ {RUNE_C(0x010E70), (double)80},
+ {RUNE_C(0x010E71), (double)90},
+ {RUNE_C(0x010E72), (double)100},
+ {RUNE_C(0x010E73), (double)200},
+ {RUNE_C(0x010E74), (double)300},
+ {RUNE_C(0x010E75), (double)400},
+ {RUNE_C(0x010E76), (double)500},
+ {RUNE_C(0x010E77), (double)600},
+ {RUNE_C(0x010E78), (double)700},
+ {RUNE_C(0x010E79), (double)800},
+ {RUNE_C(0x010E7A), (double)900},
+ {RUNE_C(0x010E7B), (double)1/2},
+ {RUNE_C(0x010E7C), (double)1/4},
+ {RUNE_C(0x010E7D), (double)1/3},
+ {RUNE_C(0x010E7E), (double)2/3},
+ {RUNE_C(0x010F1D), (double)1},
+ {RUNE_C(0x010F1E), (double)2},
+ {RUNE_C(0x010F1F), (double)3},
+ {RUNE_C(0x010F20), (double)4},
+ {RUNE_C(0x010F21), (double)5},
+ {RUNE_C(0x010F22), (double)10},
+ {RUNE_C(0x010F23), (double)20},
+ {RUNE_C(0x010F24), (double)30},
+ {RUNE_C(0x010F25), (double)100},
+ {RUNE_C(0x010F26), (double)1/2},
+ {RUNE_C(0x010F51), (double)1},
+ {RUNE_C(0x010F52), (double)10},
+ {RUNE_C(0x010F53), (double)20},
+ {RUNE_C(0x010F54), (double)100},
+ {RUNE_C(0x010FC5), (double)1},
+ {RUNE_C(0x010FC6), (double)2},
+ {RUNE_C(0x010FC7), (double)3},
+ {RUNE_C(0x010FC8), (double)4},
+ {RUNE_C(0x010FC9), (double)10},
+ {RUNE_C(0x010FCA), (double)20},
+ {RUNE_C(0x010FCB), (double)100},
+ {RUNE_C(0x011052), (double)1},
+ {RUNE_C(0x011053), (double)2},
+ {RUNE_C(0x011054), (double)3},
+ {RUNE_C(0x011055), (double)4},
+ {RUNE_C(0x011056), (double)5},
+ {RUNE_C(0x011057), (double)6},
+ {RUNE_C(0x011058), (double)7},
+ {RUNE_C(0x011059), (double)8},
+ {RUNE_C(0x01105A), (double)9},
+ {RUNE_C(0x01105B), (double)10},
+ {RUNE_C(0x01105C), (double)20},
+ {RUNE_C(0x01105D), (double)30},
+ {RUNE_C(0x01105E), (double)40},
+ {RUNE_C(0x01105F), (double)50},
+ {RUNE_C(0x011060), (double)60},
+ {RUNE_C(0x011061), (double)70},
+ {RUNE_C(0x011062), (double)80},
+ {RUNE_C(0x011063), (double)90},
+ {RUNE_C(0x011064), (double)100},
+ {RUNE_C(0x011065), (double)1000},
+ {RUNE_C(0x011066), (double)0},
+ {RUNE_C(0x011067), (double)1},
+ {RUNE_C(0x011068), (double)2},
+ {RUNE_C(0x011069), (double)3},
+ {RUNE_C(0x01106A), (double)4},
+ {RUNE_C(0x01106B), (double)5},
+ {RUNE_C(0x01106C), (double)6},
+ {RUNE_C(0x01106D), (double)7},
+ {RUNE_C(0x01106E), (double)8},
+ {RUNE_C(0x01106F), (double)9},
+ {RUNE_C(0x0110F0), (double)0},
+ {RUNE_C(0x0110F1), (double)1},
+ {RUNE_C(0x0110F2), (double)2},
+ {RUNE_C(0x0110F3), (double)3},
+ {RUNE_C(0x0110F4), (double)4},
+ {RUNE_C(0x0110F5), (double)5},
+ {RUNE_C(0x0110F6), (double)6},
+ {RUNE_C(0x0110F7), (double)7},
+ {RUNE_C(0x0110F8), (double)8},
+ {RUNE_C(0x0110F9), (double)9},
+ {RUNE_C(0x011136), (double)0},
+ {RUNE_C(0x011137), (double)1},
+ {RUNE_C(0x011138), (double)2},
+ {RUNE_C(0x011139), (double)3},
+ {RUNE_C(0x01113A), (double)4},
+ {RUNE_C(0x01113B), (double)5},
+ {RUNE_C(0x01113C), (double)6},
+ {RUNE_C(0x01113D), (double)7},
+ {RUNE_C(0x01113E), (double)8},
+ {RUNE_C(0x01113F), (double)9},
+ {RUNE_C(0x0111D0), (double)0},
+ {RUNE_C(0x0111D1), (double)1},
+ {RUNE_C(0x0111D2), (double)2},
+ {RUNE_C(0x0111D3), (double)3},
+ {RUNE_C(0x0111D4), (double)4},
+ {RUNE_C(0x0111D5), (double)5},
+ {RUNE_C(0x0111D6), (double)6},
+ {RUNE_C(0x0111D7), (double)7},
+ {RUNE_C(0x0111D8), (double)8},
+ {RUNE_C(0x0111D9), (double)9},
+ {RUNE_C(0x0111E1), (double)1},
+ {RUNE_C(0x0111E2), (double)2},
+ {RUNE_C(0x0111E3), (double)3},
+ {RUNE_C(0x0111E4), (double)4},
+ {RUNE_C(0x0111E5), (double)5},
+ {RUNE_C(0x0111E6), (double)6},
+ {RUNE_C(0x0111E7), (double)7},
+ {RUNE_C(0x0111E8), (double)8},
+ {RUNE_C(0x0111E9), (double)9},
+ {RUNE_C(0x0111EA), (double)10},
+ {RUNE_C(0x0111EB), (double)20},
+ {RUNE_C(0x0111EC), (double)30},
+ {RUNE_C(0x0111ED), (double)40},
+ {RUNE_C(0x0111EE), (double)50},
+ {RUNE_C(0x0111EF), (double)60},
+ {RUNE_C(0x0111F0), (double)70},
+ {RUNE_C(0x0111F1), (double)80},
+ {RUNE_C(0x0111F2), (double)90},
+ {RUNE_C(0x0111F3), (double)100},
+ {RUNE_C(0x0111F4), (double)1000},
+ {RUNE_C(0x0112F0), (double)0},
+ {RUNE_C(0x0112F1), (double)1},
+ {RUNE_C(0x0112F2), (double)2},
+ {RUNE_C(0x0112F3), (double)3},
+ {RUNE_C(0x0112F4), (double)4},
+ {RUNE_C(0x0112F5), (double)5},
+ {RUNE_C(0x0112F6), (double)6},
+ {RUNE_C(0x0112F7), (double)7},
+ {RUNE_C(0x0112F8), (double)8},
+ {RUNE_C(0x0112F9), (double)9},
+ {RUNE_C(0x011450), (double)0},
+ {RUNE_C(0x011451), (double)1},
+ {RUNE_C(0x011452), (double)2},
+ {RUNE_C(0x011453), (double)3},
+ {RUNE_C(0x011454), (double)4},
+ {RUNE_C(0x011455), (double)5},
+ {RUNE_C(0x011456), (double)6},
+ {RUNE_C(0x011457), (double)7},
+ {RUNE_C(0x011458), (double)8},
+ {RUNE_C(0x011459), (double)9},
+ {RUNE_C(0x0114D0), (double)0},
+ {RUNE_C(0x0114D1), (double)1},
+ {RUNE_C(0x0114D2), (double)2},
+ {RUNE_C(0x0114D3), (double)3},
+ {RUNE_C(0x0114D4), (double)4},
+ {RUNE_C(0x0114D5), (double)5},
+ {RUNE_C(0x0114D6), (double)6},
+ {RUNE_C(0x0114D7), (double)7},
+ {RUNE_C(0x0114D8), (double)8},
+ {RUNE_C(0x0114D9), (double)9},
+ {RUNE_C(0x011650), (double)0},
+ {RUNE_C(0x011651), (double)1},
+ {RUNE_C(0x011652), (double)2},
+ {RUNE_C(0x011653), (double)3},
+ {RUNE_C(0x011654), (double)4},
+ {RUNE_C(0x011655), (double)5},
+ {RUNE_C(0x011656), (double)6},
+ {RUNE_C(0x011657), (double)7},
+ {RUNE_C(0x011658), (double)8},
+ {RUNE_C(0x011659), (double)9},
+ {RUNE_C(0x0116C0), (double)0},
+ {RUNE_C(0x0116C1), (double)1},
+ {RUNE_C(0x0116C2), (double)2},
+ {RUNE_C(0x0116C3), (double)3},
+ {RUNE_C(0x0116C4), (double)4},
+ {RUNE_C(0x0116C5), (double)5},
+ {RUNE_C(0x0116C6), (double)6},
+ {RUNE_C(0x0116C7), (double)7},
+ {RUNE_C(0x0116C8), (double)8},
+ {RUNE_C(0x0116C9), (double)9},
+ {RUNE_C(0x011730), (double)0},
+ {RUNE_C(0x011731), (double)1},
+ {RUNE_C(0x011732), (double)2},
+ {RUNE_C(0x011733), (double)3},
+ {RUNE_C(0x011734), (double)4},
+ {RUNE_C(0x011735), (double)5},
+ {RUNE_C(0x011736), (double)6},
+ {RUNE_C(0x011737), (double)7},
+ {RUNE_C(0x011738), (double)8},
+ {RUNE_C(0x011739), (double)9},
+ {RUNE_C(0x01173A), (double)10},
+ {RUNE_C(0x01173B), (double)20},
+ {RUNE_C(0x0118E0), (double)0},
+ {RUNE_C(0x0118E1), (double)1},
+ {RUNE_C(0x0118E2), (double)2},
+ {RUNE_C(0x0118E3), (double)3},
+ {RUNE_C(0x0118E4), (double)4},
+ {RUNE_C(0x0118E5), (double)5},
+ {RUNE_C(0x0118E6), (double)6},
+ {RUNE_C(0x0118E7), (double)7},
+ {RUNE_C(0x0118E8), (double)8},
+ {RUNE_C(0x0118E9), (double)9},
+ {RUNE_C(0x0118EA), (double)10},
+ {RUNE_C(0x0118EB), (double)20},
+ {RUNE_C(0x0118EC), (double)30},
+ {RUNE_C(0x0118ED), (double)40},
+ {RUNE_C(0x0118EE), (double)50},
+ {RUNE_C(0x0118EF), (double)60},
+ {RUNE_C(0x0118F0), (double)70},
+ {RUNE_C(0x0118F1), (double)80},
+ {RUNE_C(0x0118F2), (double)90},
+ {RUNE_C(0x011950), (double)0},
+ {RUNE_C(0x011951), (double)1},
+ {RUNE_C(0x011952), (double)2},
+ {RUNE_C(0x011953), (double)3},
+ {RUNE_C(0x011954), (double)4},
+ {RUNE_C(0x011955), (double)5},
+ {RUNE_C(0x011956), (double)6},
+ {RUNE_C(0x011957), (double)7},
+ {RUNE_C(0x011958), (double)8},
+ {RUNE_C(0x011959), (double)9},
+ {RUNE_C(0x011C50), (double)0},
+ {RUNE_C(0x011C51), (double)1},
+ {RUNE_C(0x011C52), (double)2},
+ {RUNE_C(0x011C53), (double)3},
+ {RUNE_C(0x011C54), (double)4},
+ {RUNE_C(0x011C55), (double)5},
+ {RUNE_C(0x011C56), (double)6},
+ {RUNE_C(0x011C57), (double)7},
+ {RUNE_C(0x011C58), (double)8},
+ {RUNE_C(0x011C59), (double)9},
+ {RUNE_C(0x011C5A), (double)1},
+ {RUNE_C(0x011C5B), (double)2},
+ {RUNE_C(0x011C5C), (double)3},
+ {RUNE_C(0x011C5D), (double)4},
+ {RUNE_C(0x011C5E), (double)5},
+ {RUNE_C(0x011C5F), (double)6},
+ {RUNE_C(0x011C60), (double)7},
+ {RUNE_C(0x011C61), (double)8},
+ {RUNE_C(0x011C62), (double)9},
+ {RUNE_C(0x011C63), (double)10},
+ {RUNE_C(0x011C64), (double)20},
+ {RUNE_C(0x011C65), (double)30},
+ {RUNE_C(0x011C66), (double)40},
+ {RUNE_C(0x011C67), (double)50},
+ {RUNE_C(0x011C68), (double)60},
+ {RUNE_C(0x011C69), (double)70},
+ {RUNE_C(0x011C6A), (double)80},
+ {RUNE_C(0x011C6B), (double)90},
+ {RUNE_C(0x011C6C), (double)100},
+ {RUNE_C(0x011D50), (double)0},
+ {RUNE_C(0x011D51), (double)1},
+ {RUNE_C(0x011D52), (double)2},
+ {RUNE_C(0x011D53), (double)3},
+ {RUNE_C(0x011D54), (double)4},
+ {RUNE_C(0x011D55), (double)5},
+ {RUNE_C(0x011D56), (double)6},
+ {RUNE_C(0x011D57), (double)7},
+ {RUNE_C(0x011D58), (double)8},
+ {RUNE_C(0x011D59), (double)9},
+ {RUNE_C(0x011DA0), (double)0},
+ {RUNE_C(0x011DA1), (double)1},
+ {RUNE_C(0x011DA2), (double)2},
+ {RUNE_C(0x011DA3), (double)3},
+ {RUNE_C(0x011DA4), (double)4},
+ {RUNE_C(0x011DA5), (double)5},
+ {RUNE_C(0x011DA6), (double)6},
+ {RUNE_C(0x011DA7), (double)7},
+ {RUNE_C(0x011DA8), (double)8},
+ {RUNE_C(0x011DA9), (double)9},
+ {RUNE_C(0x011F50), (double)0},
+ {RUNE_C(0x011F51), (double)1},
+ {RUNE_C(0x011F52), (double)2},
+ {RUNE_C(0x011F53), (double)3},
+ {RUNE_C(0x011F54), (double)4},
+ {RUNE_C(0x011F55), (double)5},
+ {RUNE_C(0x011F56), (double)6},
+ {RUNE_C(0x011F57), (double)7},
+ {RUNE_C(0x011F58), (double)8},
+ {RUNE_C(0x011F59), (double)9},
+ {RUNE_C(0x011FC0), (double)1/320},
+ {RUNE_C(0x011FC1), (double)1/160},
+ {RUNE_C(0x011FC2), (double)1/80},
+ {RUNE_C(0x011FC3), (double)1/64},
+ {RUNE_C(0x011FC4), (double)1/40},
+ {RUNE_C(0x011FC5), (double)1/32},
+ {RUNE_C(0x011FC6), (double)3/80},
+ {RUNE_C(0x011FC7), (double)3/64},
+ {RUNE_C(0x011FC8), (double)1/20},
+ {RUNE_C(0x011FC9), (double)1/16},
+ {RUNE_C(0x011FCA), (double)1/16},
+ {RUNE_C(0x011FCB), (double)1/10},
+ {RUNE_C(0x011FCC), (double)1/8},
+ {RUNE_C(0x011FCD), (double)3/20},
+ {RUNE_C(0x011FCE), (double)3/16},
+ {RUNE_C(0x011FCF), (double)1/5},
+ {RUNE_C(0x011FD0), (double)1/4},
+ {RUNE_C(0x011FD1), (double)1/2},
+ {RUNE_C(0x011FD2), (double)1/2},
+ {RUNE_C(0x011FD3), (double)3/4},
+ {RUNE_C(0x011FD4), (double)1/320},
+ {RUNE_C(0x012400), (double)2},
+ {RUNE_C(0x012401), (double)3},
+ {RUNE_C(0x012402), (double)4},
+ {RUNE_C(0x012403), (double)5},
+ {RUNE_C(0x012404), (double)6},
+ {RUNE_C(0x012405), (double)7},
+ {RUNE_C(0x012406), (double)8},
+ {RUNE_C(0x012407), (double)9},
+ {RUNE_C(0x012408), (double)3},
+ {RUNE_C(0x012409), (double)4},
+ {RUNE_C(0x01240A), (double)5},
+ {RUNE_C(0x01240B), (double)6},
+ {RUNE_C(0x01240C), (double)7},
+ {RUNE_C(0x01240D), (double)8},
+ {RUNE_C(0x01240E), (double)9},
+ {RUNE_C(0x01240F), (double)4},
+ {RUNE_C(0x012410), (double)5},
+ {RUNE_C(0x012411), (double)6},
+ {RUNE_C(0x012412), (double)7},
+ {RUNE_C(0x012413), (double)8},
+ {RUNE_C(0x012414), (double)9},
+ {RUNE_C(0x012415), (double)1},
+ {RUNE_C(0x012416), (double)2},
+ {RUNE_C(0x012417), (double)3},
+ {RUNE_C(0x012418), (double)4},
+ {RUNE_C(0x012419), (double)5},
+ {RUNE_C(0x01241A), (double)6},
+ {RUNE_C(0x01241B), (double)7},
+ {RUNE_C(0x01241C), (double)8},
+ {RUNE_C(0x01241D), (double)9},
+ {RUNE_C(0x01241E), (double)1},
+ {RUNE_C(0x01241F), (double)2},
+ {RUNE_C(0x012420), (double)3},
+ {RUNE_C(0x012421), (double)4},
+ {RUNE_C(0x012422), (double)5},
+ {RUNE_C(0x012423), (double)2},
+ {RUNE_C(0x012424), (double)3},
+ {RUNE_C(0x012425), (double)3},
+ {RUNE_C(0x012426), (double)4},
+ {RUNE_C(0x012427), (double)5},
+ {RUNE_C(0x012428), (double)6},
+ {RUNE_C(0x012429), (double)7},
+ {RUNE_C(0x01242A), (double)8},
+ {RUNE_C(0x01242B), (double)9},
+ {RUNE_C(0x01242C), (double)1},
+ {RUNE_C(0x01242D), (double)2},
+ {RUNE_C(0x01242E), (double)3},
+ {RUNE_C(0x01242F), (double)3},
+ {RUNE_C(0x012430), (double)4},
+ {RUNE_C(0x012431), (double)5},
+ {RUNE_C(0x012432), (double)216000},
+ {RUNE_C(0x012433), (double)432000},
+ {RUNE_C(0x012434), (double)1},
+ {RUNE_C(0x012435), (double)2},
+ {RUNE_C(0x012436), (double)3},
+ {RUNE_C(0x012437), (double)3},
+ {RUNE_C(0x012438), (double)4},
+ {RUNE_C(0x012439), (double)5},
+ {RUNE_C(0x01243A), (double)3},
+ {RUNE_C(0x01243B), (double)3},
+ {RUNE_C(0x01243C), (double)4},
+ {RUNE_C(0x01243D), (double)4},
+ {RUNE_C(0x01243E), (double)4},
+ {RUNE_C(0x01243F), (double)4},
+ {RUNE_C(0x012440), (double)6},
+ {RUNE_C(0x012441), (double)7},
+ {RUNE_C(0x012442), (double)7},
+ {RUNE_C(0x012443), (double)7},
+ {RUNE_C(0x012444), (double)8},
+ {RUNE_C(0x012445), (double)8},
+ {RUNE_C(0x012446), (double)9},
+ {RUNE_C(0x012447), (double)9},
+ {RUNE_C(0x012448), (double)9},
+ {RUNE_C(0x012449), (double)9},
+ {RUNE_C(0x01244A), (double)2},
+ {RUNE_C(0x01244B), (double)3},
+ {RUNE_C(0x01244C), (double)4},
+ {RUNE_C(0x01244D), (double)5},
+ {RUNE_C(0x01244E), (double)6},
+ {RUNE_C(0x01244F), (double)1},
+ {RUNE_C(0x012450), (double)2},
+ {RUNE_C(0x012451), (double)3},
+ {RUNE_C(0x012452), (double)4},
+ {RUNE_C(0x012453), (double)4},
+ {RUNE_C(0x012454), (double)5},
+ {RUNE_C(0x012455), (double)5},
+ {RUNE_C(0x012456), (double)2},
+ {RUNE_C(0x012457), (double)3},
+ {RUNE_C(0x012458), (double)1},
+ {RUNE_C(0x012459), (double)2},
+ {RUNE_C(0x01245A), (double)1/3},
+ {RUNE_C(0x01245B), (double)2/3},
+ {RUNE_C(0x01245C), (double)5/6},
+ {RUNE_C(0x01245D), (double)1/3},
+ {RUNE_C(0x01245E), (double)2/3},
+ {RUNE_C(0x01245F), (double)1/8},
+ {RUNE_C(0x012460), (double)1/4},
+ {RUNE_C(0x012461), (double)1/6},
+ {RUNE_C(0x012462), (double)1/4},
+ {RUNE_C(0x012463), (double)1/4},
+ {RUNE_C(0x012464), (double)1/2},
+ {RUNE_C(0x012465), (double)1/3},
+ {RUNE_C(0x012466), (double)2/3},
+ {RUNE_C(0x012467), (double)40},
+ {RUNE_C(0x012468), (double)50},
+ {RUNE_C(0x012469), (double)4},
+ {RUNE_C(0x01246A), (double)5},
+ {RUNE_C(0x01246B), (double)6},
+ {RUNE_C(0x01246C), (double)7},
+ {RUNE_C(0x01246D), (double)8},
+ {RUNE_C(0x01246E), (double)9},
+ {RUNE_C(0x016A60), (double)0},
+ {RUNE_C(0x016A61), (double)1},
+ {RUNE_C(0x016A62), (double)2},
+ {RUNE_C(0x016A63), (double)3},
+ {RUNE_C(0x016A64), (double)4},
+ {RUNE_C(0x016A65), (double)5},
+ {RUNE_C(0x016A66), (double)6},
+ {RUNE_C(0x016A67), (double)7},
+ {RUNE_C(0x016A68), (double)8},
+ {RUNE_C(0x016A69), (double)9},
+ {RUNE_C(0x016AC0), (double)0},
+ {RUNE_C(0x016AC1), (double)1},
+ {RUNE_C(0x016AC2), (double)2},
+ {RUNE_C(0x016AC3), (double)3},
+ {RUNE_C(0x016AC4), (double)4},
+ {RUNE_C(0x016AC5), (double)5},
+ {RUNE_C(0x016AC6), (double)6},
+ {RUNE_C(0x016AC7), (double)7},
+ {RUNE_C(0x016AC8), (double)8},
+ {RUNE_C(0x016AC9), (double)9},
+ {RUNE_C(0x016B50), (double)0},
+ {RUNE_C(0x016B51), (double)1},
+ {RUNE_C(0x016B52), (double)2},
+ {RUNE_C(0x016B53), (double)3},
+ {RUNE_C(0x016B54), (double)4},
+ {RUNE_C(0x016B55), (double)5},
+ {RUNE_C(0x016B56), (double)6},
+ {RUNE_C(0x016B57), (double)7},
+ {RUNE_C(0x016B58), (double)8},
+ {RUNE_C(0x016B59), (double)9},
+ {RUNE_C(0x016B5B), (double)10},
+ {RUNE_C(0x016B5C), (double)100},
+ {RUNE_C(0x016B5D), (double)10000},
+ {RUNE_C(0x016B5E), (double)1000000},
+ {RUNE_C(0x016B5F), (double)100000000},
+ {RUNE_C(0x016B60), (double)10000000000},
+ {RUNE_C(0x016B61), (double)1000000000000},
+ {RUNE_C(0x016E80), (double)0},
+ {RUNE_C(0x016E81), (double)1},
+ {RUNE_C(0x016E82), (double)2},
+ {RUNE_C(0x016E83), (double)3},
+ {RUNE_C(0x016E84), (double)4},
+ {RUNE_C(0x016E85), (double)5},
+ {RUNE_C(0x016E86), (double)6},
+ {RUNE_C(0x016E87), (double)7},
+ {RUNE_C(0x016E88), (double)8},
+ {RUNE_C(0x016E89), (double)9},
+ {RUNE_C(0x016E8A), (double)10},
+ {RUNE_C(0x016E8B), (double)11},
+ {RUNE_C(0x016E8C), (double)12},
+ {RUNE_C(0x016E8D), (double)13},
+ {RUNE_C(0x016E8E), (double)14},
+ {RUNE_C(0x016E8F), (double)15},
+ {RUNE_C(0x016E90), (double)16},
+ {RUNE_C(0x016E91), (double)17},
+ {RUNE_C(0x016E92), (double)18},
+ {RUNE_C(0x016E93), (double)19},
+ {RUNE_C(0x016E94), (double)1},
+ {RUNE_C(0x016E95), (double)2},
+ {RUNE_C(0x016E96), (double)3},
+ {RUNE_C(0x01D2C0), (double)0},
+ {RUNE_C(0x01D2C1), (double)1},
+ {RUNE_C(0x01D2C2), (double)2},
+ {RUNE_C(0x01D2C3), (double)3},
+ {RUNE_C(0x01D2C4), (double)4},
+ {RUNE_C(0x01D2C5), (double)5},
+ {RUNE_C(0x01D2C6), (double)6},
+ {RUNE_C(0x01D2C7), (double)7},
+ {RUNE_C(0x01D2C8), (double)8},
+ {RUNE_C(0x01D2C9), (double)9},
+ {RUNE_C(0x01D2CA), (double)10},
+ {RUNE_C(0x01D2CB), (double)11},
+ {RUNE_C(0x01D2CC), (double)12},
+ {RUNE_C(0x01D2CD), (double)13},
+ {RUNE_C(0x01D2CE), (double)14},
+ {RUNE_C(0x01D2CF), (double)15},
+ {RUNE_C(0x01D2D0), (double)16},
+ {RUNE_C(0x01D2D1), (double)17},
+ {RUNE_C(0x01D2D2), (double)18},
+ {RUNE_C(0x01D2D3), (double)19},
+ {RUNE_C(0x01D2E0), (double)0},
+ {RUNE_C(0x01D2E1), (double)1},
+ {RUNE_C(0x01D2E2), (double)2},
+ {RUNE_C(0x01D2E3), (double)3},
+ {RUNE_C(0x01D2E4), (double)4},
+ {RUNE_C(0x01D2E5), (double)5},
+ {RUNE_C(0x01D2E6), (double)6},
+ {RUNE_C(0x01D2E7), (double)7},
+ {RUNE_C(0x01D2E8), (double)8},
+ {RUNE_C(0x01D2E9), (double)9},
+ {RUNE_C(0x01D2EA), (double)10},
+ {RUNE_C(0x01D2EB), (double)11},
+ {RUNE_C(0x01D2EC), (double)12},
+ {RUNE_C(0x01D2ED), (double)13},
+ {RUNE_C(0x01D2EE), (double)14},
+ {RUNE_C(0x01D2EF), (double)15},
+ {RUNE_C(0x01D2F0), (double)16},
+ {RUNE_C(0x01D2F1), (double)17},
+ {RUNE_C(0x01D2F2), (double)18},
+ {RUNE_C(0x01D2F3), (double)19},
+ {RUNE_C(0x01D360), (double)1},
+ {RUNE_C(0x01D361), (double)2},
+ {RUNE_C(0x01D362), (double)3},
+ {RUNE_C(0x01D363), (double)4},
+ {RUNE_C(0x01D364), (double)5},
+ {RUNE_C(0x01D365), (double)6},
+ {RUNE_C(0x01D366), (double)7},
+ {RUNE_C(0x01D367), (double)8},
+ {RUNE_C(0x01D368), (double)9},
+ {RUNE_C(0x01D369), (double)10},
+ {RUNE_C(0x01D36A), (double)20},
+ {RUNE_C(0x01D36B), (double)30},
+ {RUNE_C(0x01D36C), (double)40},
+ {RUNE_C(0x01D36D), (double)50},
+ {RUNE_C(0x01D36E), (double)60},
+ {RUNE_C(0x01D36F), (double)70},
+ {RUNE_C(0x01D370), (double)80},
+ {RUNE_C(0x01D371), (double)90},
+ {RUNE_C(0x01D372), (double)1},
+ {RUNE_C(0x01D373), (double)2},
+ {RUNE_C(0x01D374), (double)3},
+ {RUNE_C(0x01D375), (double)4},
+ {RUNE_C(0x01D376), (double)5},
+ {RUNE_C(0x01D377), (double)1},
+ {RUNE_C(0x01D378), (double)5},
+ {RUNE_C(0x01D7CE), (double)0},
+ {RUNE_C(0x01D7CF), (double)1},
+ {RUNE_C(0x01D7D0), (double)2},
+ {RUNE_C(0x01D7D1), (double)3},
+ {RUNE_C(0x01D7D2), (double)4},
+ {RUNE_C(0x01D7D3), (double)5},
+ {RUNE_C(0x01D7D4), (double)6},
+ {RUNE_C(0x01D7D5), (double)7},
+ {RUNE_C(0x01D7D6), (double)8},
+ {RUNE_C(0x01D7D7), (double)9},
+ {RUNE_C(0x01D7D8), (double)0},
+ {RUNE_C(0x01D7D9), (double)1},
+ {RUNE_C(0x01D7DA), (double)2},
+ {RUNE_C(0x01D7DB), (double)3},
+ {RUNE_C(0x01D7DC), (double)4},
+ {RUNE_C(0x01D7DD), (double)5},
+ {RUNE_C(0x01D7DE), (double)6},
+ {RUNE_C(0x01D7DF), (double)7},
+ {RUNE_C(0x01D7E0), (double)8},
+ {RUNE_C(0x01D7E1), (double)9},
+ {RUNE_C(0x01D7E2), (double)0},
+ {RUNE_C(0x01D7E3), (double)1},
+ {RUNE_C(0x01D7E4), (double)2},
+ {RUNE_C(0x01D7E5), (double)3},
+ {RUNE_C(0x01D7E6), (double)4},
+ {RUNE_C(0x01D7E7), (double)5},
+ {RUNE_C(0x01D7E8), (double)6},
+ {RUNE_C(0x01D7E9), (double)7},
+ {RUNE_C(0x01D7EA), (double)8},
+ {RUNE_C(0x01D7EB), (double)9},
+ {RUNE_C(0x01D7EC), (double)0},
+ {RUNE_C(0x01D7ED), (double)1},
+ {RUNE_C(0x01D7EE), (double)2},
+ {RUNE_C(0x01D7EF), (double)3},
+ {RUNE_C(0x01D7F0), (double)4},
+ {RUNE_C(0x01D7F1), (double)5},
+ {RUNE_C(0x01D7F2), (double)6},
+ {RUNE_C(0x01D7F3), (double)7},
+ {RUNE_C(0x01D7F4), (double)8},
+ {RUNE_C(0x01D7F5), (double)9},
+ {RUNE_C(0x01D7F6), (double)0},
+ {RUNE_C(0x01D7F7), (double)1},
+ {RUNE_C(0x01D7F8), (double)2},
+ {RUNE_C(0x01D7F9), (double)3},
+ {RUNE_C(0x01D7FA), (double)4},
+ {RUNE_C(0x01D7FB), (double)5},
+ {RUNE_C(0x01D7FC), (double)6},
+ {RUNE_C(0x01D7FD), (double)7},
+ {RUNE_C(0x01D7FE), (double)8},
+ {RUNE_C(0x01D7FF), (double)9},
+ {RUNE_C(0x01E140), (double)0},
+ {RUNE_C(0x01E141), (double)1},
+ {RUNE_C(0x01E142), (double)2},
+ {RUNE_C(0x01E143), (double)3},
+ {RUNE_C(0x01E144), (double)4},
+ {RUNE_C(0x01E145), (double)5},
+ {RUNE_C(0x01E146), (double)6},
+ {RUNE_C(0x01E147), (double)7},
+ {RUNE_C(0x01E148), (double)8},
+ {RUNE_C(0x01E149), (double)9},
+ {RUNE_C(0x01E2F0), (double)0},
+ {RUNE_C(0x01E2F1), (double)1},
+ {RUNE_C(0x01E2F2), (double)2},
+ {RUNE_C(0x01E2F3), (double)3},
+ {RUNE_C(0x01E2F4), (double)4},
+ {RUNE_C(0x01E2F5), (double)5},
+ {RUNE_C(0x01E2F6), (double)6},
+ {RUNE_C(0x01E2F7), (double)7},
+ {RUNE_C(0x01E2F8), (double)8},
+ {RUNE_C(0x01E2F9), (double)9},
+ {RUNE_C(0x01E4F0), (double)0},
+ {RUNE_C(0x01E4F1), (double)1},
+ {RUNE_C(0x01E4F2), (double)2},
+ {RUNE_C(0x01E4F3), (double)3},
+ {RUNE_C(0x01E4F4), (double)4},
+ {RUNE_C(0x01E4F5), (double)5},
+ {RUNE_C(0x01E4F6), (double)6},
+ {RUNE_C(0x01E4F7), (double)7},
+ {RUNE_C(0x01E4F8), (double)8},
+ {RUNE_C(0x01E4F9), (double)9},
+ {RUNE_C(0x01E8C7), (double)1},
+ {RUNE_C(0x01E8C8), (double)2},
+ {RUNE_C(0x01E8C9), (double)3},
+ {RUNE_C(0x01E8CA), (double)4},
+ {RUNE_C(0x01E8CB), (double)5},
+ {RUNE_C(0x01E8CC), (double)6},
+ {RUNE_C(0x01E8CD), (double)7},
+ {RUNE_C(0x01E8CE), (double)8},
+ {RUNE_C(0x01E8CF), (double)9},
+ {RUNE_C(0x01E950), (double)0},
+ {RUNE_C(0x01E951), (double)1},
+ {RUNE_C(0x01E952), (double)2},
+ {RUNE_C(0x01E953), (double)3},
+ {RUNE_C(0x01E954), (double)4},
+ {RUNE_C(0x01E955), (double)5},
+ {RUNE_C(0x01E956), (double)6},
+ {RUNE_C(0x01E957), (double)7},
+ {RUNE_C(0x01E958), (double)8},
+ {RUNE_C(0x01E959), (double)9},
+ {RUNE_C(0x01EC71), (double)1},
+ {RUNE_C(0x01EC72), (double)2},
+ {RUNE_C(0x01EC73), (double)3},
+ {RUNE_C(0x01EC74), (double)4},
+ {RUNE_C(0x01EC75), (double)5},
+ {RUNE_C(0x01EC76), (double)6},
+ {RUNE_C(0x01EC77), (double)7},
+ {RUNE_C(0x01EC78), (double)8},
+ {RUNE_C(0x01EC79), (double)9},
+ {RUNE_C(0x01EC7A), (double)10},
+ {RUNE_C(0x01EC7B), (double)20},
+ {RUNE_C(0x01EC7C), (double)30},
+ {RUNE_C(0x01EC7D), (double)40},
+ {RUNE_C(0x01EC7E), (double)50},
+ {RUNE_C(0x01EC7F), (double)60},
+ {RUNE_C(0x01EC80), (double)70},
+ {RUNE_C(0x01EC81), (double)80},
+ {RUNE_C(0x01EC82), (double)90},
+ {RUNE_C(0x01EC83), (double)100},
+ {RUNE_C(0x01EC84), (double)200},
+ {RUNE_C(0x01EC85), (double)300},
+ {RUNE_C(0x01EC86), (double)400},
+ {RUNE_C(0x01EC87), (double)500},
+ {RUNE_C(0x01EC88), (double)600},
+ {RUNE_C(0x01EC89), (double)700},
+ {RUNE_C(0x01EC8A), (double)800},
+ {RUNE_C(0x01EC8B), (double)900},
+ {RUNE_C(0x01EC8C), (double)1000},
+ {RUNE_C(0x01EC8D), (double)2000},
+ {RUNE_C(0x01EC8E), (double)3000},
+ {RUNE_C(0x01EC8F), (double)4000},
+ {RUNE_C(0x01EC90), (double)5000},
+ {RUNE_C(0x01EC91), (double)6000},
+ {RUNE_C(0x01EC92), (double)7000},
+ {RUNE_C(0x01EC93), (double)8000},
+ {RUNE_C(0x01EC94), (double)9000},
+ {RUNE_C(0x01EC95), (double)10000},
+ {RUNE_C(0x01EC96), (double)20000},
+ {RUNE_C(0x01EC97), (double)30000},
+ {RUNE_C(0x01EC98), (double)40000},
+ {RUNE_C(0x01EC99), (double)50000},
+ {RUNE_C(0x01EC9A), (double)60000},
+ {RUNE_C(0x01EC9B), (double)70000},
+ {RUNE_C(0x01EC9C), (double)80000},
+ {RUNE_C(0x01EC9D), (double)90000},
+ {RUNE_C(0x01EC9E), (double)100000},
+ {RUNE_C(0x01EC9F), (double)200000},
+ {RUNE_C(0x01ECA0), (double)100000},
+ {RUNE_C(0x01ECA1), (double)10000000},
+ {RUNE_C(0x01ECA2), (double)20000000},
+ {RUNE_C(0x01ECA3), (double)1},
+ {RUNE_C(0x01ECA4), (double)2},
+ {RUNE_C(0x01ECA5), (double)3},
+ {RUNE_C(0x01ECA6), (double)4},
+ {RUNE_C(0x01ECA7), (double)5},
+ {RUNE_C(0x01ECA8), (double)6},
+ {RUNE_C(0x01ECA9), (double)7},
+ {RUNE_C(0x01ECAA), (double)8},
+ {RUNE_C(0x01ECAB), (double)9},
+ {RUNE_C(0x01ECAD), (double)1/4},
+ {RUNE_C(0x01ECAE), (double)1/2},
+ {RUNE_C(0x01ECAF), (double)3/4},
+ {RUNE_C(0x01ECB1), (double)1},
+ {RUNE_C(0x01ECB2), (double)2},
+ {RUNE_C(0x01ECB3), (double)10000},
+ {RUNE_C(0x01ECB4), (double)100000},
+ {RUNE_C(0x01ED01), (double)1},
+ {RUNE_C(0x01ED02), (double)2},
+ {RUNE_C(0x01ED03), (double)3},
+ {RUNE_C(0x01ED04), (double)4},
+ {RUNE_C(0x01ED05), (double)5},
+ {RUNE_C(0x01ED06), (double)6},
+ {RUNE_C(0x01ED07), (double)7},
+ {RUNE_C(0x01ED08), (double)8},
+ {RUNE_C(0x01ED09), (double)9},
+ {RUNE_C(0x01ED0A), (double)10},
+ {RUNE_C(0x01ED0B), (double)20},
+ {RUNE_C(0x01ED0C), (double)30},
+ {RUNE_C(0x01ED0D), (double)40},
+ {RUNE_C(0x01ED0E), (double)50},
+ {RUNE_C(0x01ED0F), (double)60},
+ {RUNE_C(0x01ED10), (double)70},
+ {RUNE_C(0x01ED11), (double)80},
+ {RUNE_C(0x01ED12), (double)90},
+ {RUNE_C(0x01ED13), (double)100},
+ {RUNE_C(0x01ED14), (double)200},
+ {RUNE_C(0x01ED15), (double)300},
+ {RUNE_C(0x01ED16), (double)400},
+ {RUNE_C(0x01ED17), (double)500},
+ {RUNE_C(0x01ED18), (double)600},
+ {RUNE_C(0x01ED19), (double)700},
+ {RUNE_C(0x01ED1A), (double)800},
+ {RUNE_C(0x01ED1B), (double)900},
+ {RUNE_C(0x01ED1C), (double)1000},
+ {RUNE_C(0x01ED1D), (double)2000},
+ {RUNE_C(0x01ED1E), (double)3000},
+ {RUNE_C(0x01ED1F), (double)4000},
+ {RUNE_C(0x01ED20), (double)5000},
+ {RUNE_C(0x01ED21), (double)6000},
+ {RUNE_C(0x01ED22), (double)7000},
+ {RUNE_C(0x01ED23), (double)8000},
+ {RUNE_C(0x01ED24), (double)9000},
+ {RUNE_C(0x01ED25), (double)10000},
+ {RUNE_C(0x01ED26), (double)20000},
+ {RUNE_C(0x01ED27), (double)30000},
+ {RUNE_C(0x01ED28), (double)40000},
+ {RUNE_C(0x01ED29), (double)50000},
+ {RUNE_C(0x01ED2A), (double)60000},
+ {RUNE_C(0x01ED2B), (double)70000},
+ {RUNE_C(0x01ED2C), (double)80000},
+ {RUNE_C(0x01ED2D), (double)90000},
+ {RUNE_C(0x01ED2F), (double)2},
+ {RUNE_C(0x01ED30), (double)3},
+ {RUNE_C(0x01ED31), (double)4},
+ {RUNE_C(0x01ED32), (double)5},
+ {RUNE_C(0x01ED33), (double)6},
+ {RUNE_C(0x01ED34), (double)7},
+ {RUNE_C(0x01ED35), (double)8},
+ {RUNE_C(0x01ED36), (double)9},
+ {RUNE_C(0x01ED37), (double)10},
+ {RUNE_C(0x01ED38), (double)400},
+ {RUNE_C(0x01ED39), (double)600},
+ {RUNE_C(0x01ED3A), (double)2000},
+ {RUNE_C(0x01ED3B), (double)10000},
+ {RUNE_C(0x01ED3C), (double)1/2},
+ {RUNE_C(0x01ED3D), (double)1/6},
+ {RUNE_C(0x01F100), (double)0},
+ {RUNE_C(0x01F101), (double)0},
+ {RUNE_C(0x01F102), (double)1},
+ {RUNE_C(0x01F103), (double)2},
+ {RUNE_C(0x01F104), (double)3},
+ {RUNE_C(0x01F105), (double)4},
+ {RUNE_C(0x01F106), (double)5},
+ {RUNE_C(0x01F107), (double)6},
+ {RUNE_C(0x01F108), (double)7},
+ {RUNE_C(0x01F109), (double)8},
+ {RUNE_C(0x01F10A), (double)9},
+ {RUNE_C(0x01F10B), (double)0},
+ {RUNE_C(0x01F10C), (double)0},
+ {RUNE_C(0x01FBF0), (double)0},
+ {RUNE_C(0x01FBF1), (double)1},
+ {RUNE_C(0x01FBF2), (double)2},
+ {RUNE_C(0x01FBF3), (double)3},
+ {RUNE_C(0x01FBF4), (double)4},
+ {RUNE_C(0x01FBF5), (double)5},
+ {RUNE_C(0x01FBF6), (double)6},
+ {RUNE_C(0x01FBF7), (double)7},
+ {RUNE_C(0x01FBF8), (double)8},
+ {RUNE_C(0x01FBF9), (double)9},
+ {RUNE_C(0x020001), (double)7},
+ {RUNE_C(0x020064), (double)4},
+ {RUNE_C(0x0200E2), (double)4},
+ {RUNE_C(0x020121), (double)5},
+ {RUNE_C(0x02092A), (double)1},
+ {RUNE_C(0x020983), (double)30},
+ {RUNE_C(0x02098C), (double)40},
+ {RUNE_C(0x02099C), (double)40},
+ {RUNE_C(0x020AEA), (double)6},
+ {RUNE_C(0x020AFD), (double)3},
+ {RUNE_C(0x020B19), (double)3},
+ {RUNE_C(0x022390), (double)2},
+ {RUNE_C(0x022998), (double)3},
+ {RUNE_C(0x023B1B), (double)3},
+ {RUNE_C(0x02626D), (double)4},
+ {RUNE_C(0x02F890), (double)9},
+};
+
+#endif /* !RUNE_INTERNAL_RTYPE_NV_H */
diff --git a/vendor/librune/include/internal/rtype/vo.h b/vendor/librune/include/internal/rtype/vo.h
new file mode 100644
index 0000000..8cb30c8
--- /dev/null
+++ b/vendor/librune/include/internal/rtype/vo.h
@@ -0,0 +1,232 @@
+/* This file is autogenerated by gen/rtype-vo; DO NOT EDIT. */
+
+#ifndef RUNE_INTERNAL_RTYPE_VO_H
+#define RUNE_INTERNAL_RTYPE_VO_H
+
+/* IWYU pragma: private */
+/* clang-format off */
+
+#include "../types.h"
+#include "../../rtype.h"
+#include "../../rune.h"
+
+static const rprop_vo_bf rtype_vo_lat1_tbl[] = {
+ VO_R, VO_R, VO_R, VO_R, VO_R, VO_R, VO_R, VO_R,
+ VO_R, VO_R, VO_R, VO_R, VO_R, VO_R, VO_R, VO_R,
+ VO_R, VO_R, VO_R, VO_R, VO_R, VO_R, VO_R, VO_R,
+ VO_R, VO_R, VO_R, VO_R, VO_R, VO_R, VO_R, VO_R,
+ VO_R, VO_R, VO_R, VO_R, VO_R, VO_R, VO_R, VO_R,
+ VO_R, VO_R, VO_R, VO_R, VO_R, VO_R, VO_R, VO_R,
+ VO_R, VO_R, VO_R, VO_R, VO_R, VO_R, VO_R, VO_R,
+ VO_R, VO_R, VO_R, VO_R, VO_R, VO_R, VO_R, VO_R,
+ VO_R, VO_R, VO_R, VO_R, VO_R, VO_R, VO_R, VO_R,
+ VO_R, VO_R, VO_R, VO_R, VO_R, VO_R, VO_R, VO_R,
+ VO_R, VO_R, VO_R, VO_R, VO_R, VO_R, VO_R, VO_R,
+ VO_R, VO_R, VO_R, VO_R, VO_R, VO_R, VO_R, VO_R,
+ VO_R, VO_R, VO_R, VO_R, VO_R, VO_R, VO_R, VO_R,
+ VO_R, VO_R, VO_R, VO_R, VO_R, VO_R, VO_R, VO_R,
+ VO_R, VO_R, VO_R, VO_R, VO_R, VO_R, VO_R, VO_R,
+ VO_R, VO_R, VO_R, VO_R, VO_R, VO_R, VO_R, VO_R,
+ VO_R, VO_R, VO_R, VO_R, VO_R, VO_R, VO_R, VO_R,
+ VO_R, VO_R, VO_R, VO_R, VO_R, VO_R, VO_R, VO_R,
+ VO_R, VO_R, VO_R, VO_R, VO_R, VO_R, VO_R, VO_R,
+ VO_R, VO_R, VO_R, VO_R, VO_R, VO_R, VO_R, VO_R,
+ VO_R, VO_R, VO_R, VO_R, VO_R, VO_R, VO_R, VO_U,
+ VO_R, VO_U, VO_R, VO_R, VO_R, VO_R, VO_U, VO_R,
+ VO_R, VO_U, VO_R, VO_R, VO_R, VO_R, VO_R, VO_R,
+ VO_R, VO_R, VO_R, VO_R, VO_U, VO_U, VO_U, VO_R,
+ VO_R, VO_R, VO_R, VO_R, VO_R, VO_R, VO_R, VO_R,
+ VO_R, VO_R, VO_R, VO_R, VO_R, VO_R, VO_R, VO_R,
+ VO_R, VO_R, VO_R, VO_R, VO_R, VO_R, VO_R, VO_U,
+ VO_R, VO_R, VO_R, VO_R, VO_R, VO_R, VO_R, VO_R,
+ VO_R, VO_R, VO_R, VO_R, VO_R, VO_R, VO_R, VO_R,
+ VO_R, VO_R, VO_R, VO_R, VO_R, VO_R, VO_R, VO_R,
+ VO_R, VO_R, VO_R, VO_R, VO_R, VO_R, VO_R, VO_U,
+ VO_R, VO_R, VO_R, VO_R, VO_R, VO_R, VO_R, VO_R,
+};
+
+/* This lookup table omits VO_R entries. As VO_R is the default value, we can
+ remove them from the lookup table for a dramatic decrease in size. */
+static const struct {
+ rune lo, hi;
+ rprop_vo_bf val;
+} rtype_vo_tbl[] = {
+ {RUNE_C(0x0000A7), RUNE_C(0x0000A7), VO_U},
+ {RUNE_C(0x0000A9), RUNE_C(0x0000A9), VO_U},
+ {RUNE_C(0x0000AE), RUNE_C(0x0000AE), VO_U},
+ {RUNE_C(0x0000B1), RUNE_C(0x0000B1), VO_U},
+ {RUNE_C(0x0000BC), RUNE_C(0x0000BE), VO_U},
+ {RUNE_C(0x0000D7), RUNE_C(0x0000D7), VO_U},
+ {RUNE_C(0x0000F7), RUNE_C(0x0000F7), VO_U},
+ {RUNE_C(0x0002EA), RUNE_C(0x0002EB), VO_U},
+ {RUNE_C(0x001100), RUNE_C(0x0011FF), VO_U},
+ {RUNE_C(0x001401), RUNE_C(0x00167F), VO_U},
+ {RUNE_C(0x0018B0), RUNE_C(0x0018FF), VO_U},
+ {RUNE_C(0x002016), RUNE_C(0x002016), VO_U},
+ {RUNE_C(0x002020), RUNE_C(0x002021), VO_U},
+ {RUNE_C(0x002030), RUNE_C(0x002031), VO_U},
+ {RUNE_C(0x00203B), RUNE_C(0x00203C), VO_U},
+ {RUNE_C(0x002042), RUNE_C(0x002042), VO_U},
+ {RUNE_C(0x002047), RUNE_C(0x002049), VO_U},
+ {RUNE_C(0x002051), RUNE_C(0x002051), VO_U},
+ {RUNE_C(0x002065), RUNE_C(0x002065), VO_U},
+ {RUNE_C(0x0020DD), RUNE_C(0x0020E0), VO_U},
+ {RUNE_C(0x0020E2), RUNE_C(0x0020E4), VO_U},
+ {RUNE_C(0x002100), RUNE_C(0x002101), VO_U},
+ {RUNE_C(0x002103), RUNE_C(0x002109), VO_U},
+ {RUNE_C(0x00210F), RUNE_C(0x00210F), VO_U},
+ {RUNE_C(0x002113), RUNE_C(0x002114), VO_U},
+ {RUNE_C(0x002116), RUNE_C(0x002117), VO_U},
+ {RUNE_C(0x00211E), RUNE_C(0x002123), VO_U},
+ {RUNE_C(0x002125), RUNE_C(0x002125), VO_U},
+ {RUNE_C(0x002127), RUNE_C(0x002127), VO_U},
+ {RUNE_C(0x002129), RUNE_C(0x002129), VO_U},
+ {RUNE_C(0x00212E), RUNE_C(0x00212E), VO_U},
+ {RUNE_C(0x002135), RUNE_C(0x00213F), VO_U},
+ {RUNE_C(0x002145), RUNE_C(0x00214A), VO_U},
+ {RUNE_C(0x00214C), RUNE_C(0x00214D), VO_U},
+ {RUNE_C(0x00214F), RUNE_C(0x002189), VO_U},
+ {RUNE_C(0x00218C), RUNE_C(0x00218F), VO_U},
+ {RUNE_C(0x00221E), RUNE_C(0x00221E), VO_U},
+ {RUNE_C(0x002234), RUNE_C(0x002235), VO_U},
+ {RUNE_C(0x002300), RUNE_C(0x002307), VO_U},
+ {RUNE_C(0x00230C), RUNE_C(0x00231F), VO_U},
+ {RUNE_C(0x002324), RUNE_C(0x002328), VO_U},
+ {RUNE_C(0x002329), RUNE_C(0x00232A), VO_TR},
+ {RUNE_C(0x00232B), RUNE_C(0x00232B), VO_U},
+ {RUNE_C(0x00237D), RUNE_C(0x00239A), VO_U},
+ {RUNE_C(0x0023BE), RUNE_C(0x0023CD), VO_U},
+ {RUNE_C(0x0023CF), RUNE_C(0x0023CF), VO_U},
+ {RUNE_C(0x0023D1), RUNE_C(0x0023DB), VO_U},
+ {RUNE_C(0x0023E2), RUNE_C(0x002422), VO_U},
+ {RUNE_C(0x002424), RUNE_C(0x0024FF), VO_U},
+ {RUNE_C(0x0025A0), RUNE_C(0x002619), VO_U},
+ {RUNE_C(0x002620), RUNE_C(0x002767), VO_U},
+ {RUNE_C(0x002776), RUNE_C(0x002793), VO_U},
+ {RUNE_C(0x002B12), RUNE_C(0x002B2F), VO_U},
+ {RUNE_C(0x002B50), RUNE_C(0x002B59), VO_U},
+ {RUNE_C(0x002B97), RUNE_C(0x002B97), VO_U},
+ {RUNE_C(0x002BB8), RUNE_C(0x002BD1), VO_U},
+ {RUNE_C(0x002BD3), RUNE_C(0x002BEB), VO_U},
+ {RUNE_C(0x002BF0), RUNE_C(0x002BFF), VO_U},
+ {RUNE_C(0x002E50), RUNE_C(0x002E51), VO_U},
+ {RUNE_C(0x002E80), RUNE_C(0x003000), VO_U},
+ {RUNE_C(0x003001), RUNE_C(0x003002), VO_TU},
+ {RUNE_C(0x003003), RUNE_C(0x003007), VO_U},
+ {RUNE_C(0x003008), RUNE_C(0x003011), VO_TR},
+ {RUNE_C(0x003012), RUNE_C(0x003013), VO_U},
+ {RUNE_C(0x003014), RUNE_C(0x00301F), VO_TR},
+ {RUNE_C(0x003020), RUNE_C(0x00302F), VO_U},
+ {RUNE_C(0x003030), RUNE_C(0x003030), VO_TR},
+ {RUNE_C(0x003031), RUNE_C(0x003040), VO_U},
+ {RUNE_C(0x003041), RUNE_C(0x003041), VO_TU},
+ {RUNE_C(0x003042), RUNE_C(0x003042), VO_U},
+ {RUNE_C(0x003043), RUNE_C(0x003043), VO_TU},
+ {RUNE_C(0x003044), RUNE_C(0x003044), VO_U},
+ {RUNE_C(0x003045), RUNE_C(0x003045), VO_TU},
+ {RUNE_C(0x003046), RUNE_C(0x003046), VO_U},
+ {RUNE_C(0x003047), RUNE_C(0x003047), VO_TU},
+ {RUNE_C(0x003048), RUNE_C(0x003048), VO_U},
+ {RUNE_C(0x003049), RUNE_C(0x003049), VO_TU},
+ {RUNE_C(0x00304A), RUNE_C(0x003062), VO_U},
+ {RUNE_C(0x003063), RUNE_C(0x003063), VO_TU},
+ {RUNE_C(0x003064), RUNE_C(0x003082), VO_U},
+ {RUNE_C(0x003083), RUNE_C(0x003083), VO_TU},
+ {RUNE_C(0x003084), RUNE_C(0x003084), VO_U},
+ {RUNE_C(0x003085), RUNE_C(0x003085), VO_TU},
+ {RUNE_C(0x003086), RUNE_C(0x003086), VO_U},
+ {RUNE_C(0x003087), RUNE_C(0x003087), VO_TU},
+ {RUNE_C(0x003088), RUNE_C(0x00308D), VO_U},
+ {RUNE_C(0x00308E), RUNE_C(0x00308E), VO_TU},
+ {RUNE_C(0x00308F), RUNE_C(0x003094), VO_U},
+ {RUNE_C(0x003095), RUNE_C(0x003096), VO_TU},
+ {RUNE_C(0x003097), RUNE_C(0x00309A), VO_U},
+ {RUNE_C(0x00309B), RUNE_C(0x00309C), VO_TU},
+ {RUNE_C(0x00309D), RUNE_C(0x00309F), VO_U},
+ {RUNE_C(0x0030A0), RUNE_C(0x0030A0), VO_TR},
+ {RUNE_C(0x0030A1), RUNE_C(0x0030A1), VO_TU},
+ {RUNE_C(0x0030A2), RUNE_C(0x0030A2), VO_U},
+ {RUNE_C(0x0030A3), RUNE_C(0x0030A3), VO_TU},
+ {RUNE_C(0x0030A4), RUNE_C(0x0030A4), VO_U},
+ {RUNE_C(0x0030A5), RUNE_C(0x0030A5), VO_TU},
+ {RUNE_C(0x0030A6), RUNE_C(0x0030A6), VO_U},
+ {RUNE_C(0x0030A7), RUNE_C(0x0030A7), VO_TU},
+ {RUNE_C(0x0030A8), RUNE_C(0x0030A8), VO_U},
+ {RUNE_C(0x0030A9), RUNE_C(0x0030A9), VO_TU},
+ {RUNE_C(0x0030AA), RUNE_C(0x0030C2), VO_U},
+ {RUNE_C(0x0030C3), RUNE_C(0x0030C3), VO_TU},
+ {RUNE_C(0x0030C4), RUNE_C(0x0030E2), VO_U},
+ {RUNE_C(0x0030E3), RUNE_C(0x0030E3), VO_TU},
+ {RUNE_C(0x0030E4), RUNE_C(0x0030E4), VO_U},
+ {RUNE_C(0x0030E5), RUNE_C(0x0030E5), VO_TU},
+ {RUNE_C(0x0030E6), RUNE_C(0x0030E6), VO_U},
+ {RUNE_C(0x0030E7), RUNE_C(0x0030E7), VO_TU},
+ {RUNE_C(0x0030E8), RUNE_C(0x0030ED), VO_U},
+ {RUNE_C(0x0030EE), RUNE_C(0x0030EE), VO_TU},
+ {RUNE_C(0x0030EF), RUNE_C(0x0030F4), VO_U},
+ {RUNE_C(0x0030F5), RUNE_C(0x0030F6), VO_TU},
+ {RUNE_C(0x0030F7), RUNE_C(0x0030FB), VO_U},
+ {RUNE_C(0x0030FC), RUNE_C(0x0030FC), VO_TR},
+ {RUNE_C(0x0030FD), RUNE_C(0x003126), VO_U},
+ {RUNE_C(0x003127), RUNE_C(0x003127), VO_TU},
+ {RUNE_C(0x003128), RUNE_C(0x0031EF), VO_U},
+ {RUNE_C(0x0031F0), RUNE_C(0x0031FF), VO_TU},
+ {RUNE_C(0x003200), RUNE_C(0x0032FE), VO_U},
+ {RUNE_C(0x0032FF), RUNE_C(0x003357), VO_TU},
+ {RUNE_C(0x003358), RUNE_C(0x00337A), VO_U},
+ {RUNE_C(0x00337B), RUNE_C(0x00337F), VO_TU},
+ {RUNE_C(0x003380), RUNE_C(0x00A4CF), VO_U},
+ {RUNE_C(0x00A960), RUNE_C(0x00A97F), VO_U},
+ {RUNE_C(0x00AC00), RUNE_C(0x00D7FF), VO_U},
+ {RUNE_C(0x00E000), RUNE_C(0x00FAFF), VO_U},
+ {RUNE_C(0x00FE10), RUNE_C(0x00FE1F), VO_U},
+ {RUNE_C(0x00FE30), RUNE_C(0x00FE48), VO_U},
+ {RUNE_C(0x00FE50), RUNE_C(0x00FE52), VO_TU},
+ {RUNE_C(0x00FE53), RUNE_C(0x00FE57), VO_U},
+ {RUNE_C(0x00FE59), RUNE_C(0x00FE5E), VO_TR},
+ {RUNE_C(0x00FE5F), RUNE_C(0x00FE62), VO_U},
+ {RUNE_C(0x00FE67), RUNE_C(0x00FE6F), VO_U},
+ {RUNE_C(0x00FF01), RUNE_C(0x00FF01), VO_TU},
+ {RUNE_C(0x00FF02), RUNE_C(0x00FF07), VO_U},
+ {RUNE_C(0x00FF08), RUNE_C(0x00FF09), VO_TR},
+ {RUNE_C(0x00FF0A), RUNE_C(0x00FF0B), VO_U},
+ {RUNE_C(0x00FF0C), RUNE_C(0x00FF0C), VO_TU},
+ {RUNE_C(0x00FF0E), RUNE_C(0x00FF0E), VO_TU},
+ {RUNE_C(0x00FF0F), RUNE_C(0x00FF19), VO_U},
+ {RUNE_C(0x00FF1A), RUNE_C(0x00FF1B), VO_TR},
+ {RUNE_C(0x00FF1F), RUNE_C(0x00FF1F), VO_TU},
+ {RUNE_C(0x00FF20), RUNE_C(0x00FF3A), VO_U},
+ {RUNE_C(0x00FF3B), RUNE_C(0x00FF3B), VO_TR},
+ {RUNE_C(0x00FF3C), RUNE_C(0x00FF3C), VO_U},
+ {RUNE_C(0x00FF3D), RUNE_C(0x00FF3D), VO_TR},
+ {RUNE_C(0x00FF3E), RUNE_C(0x00FF3E), VO_U},
+ {RUNE_C(0x00FF3F), RUNE_C(0x00FF3F), VO_TR},
+ {RUNE_C(0x00FF40), RUNE_C(0x00FF5A), VO_U},
+ {RUNE_C(0x00FF5B), RUNE_C(0x00FF60), VO_TR},
+ {RUNE_C(0x00FFE0), RUNE_C(0x00FFE2), VO_U},
+ {RUNE_C(0x00FFE3), RUNE_C(0x00FFE3), VO_TR},
+ {RUNE_C(0x00FFE4), RUNE_C(0x00FFE7), VO_U},
+ {RUNE_C(0x00FFF0), RUNE_C(0x00FFF8), VO_U},
+ {RUNE_C(0x00FFFC), RUNE_C(0x00FFFD), VO_U},
+ {RUNE_C(0x010980), RUNE_C(0x01099F), VO_U},
+ {RUNE_C(0x011580), RUNE_C(0x0115FF), VO_U},
+ {RUNE_C(0x011A00), RUNE_C(0x011ABF), VO_U},
+ {RUNE_C(0x013000), RUNE_C(0x01345F), VO_U},
+ {RUNE_C(0x014400), RUNE_C(0x01467F), VO_U},
+ {RUNE_C(0x016FE0), RUNE_C(0x018D7F), VO_U},
+ {RUNE_C(0x01AFF0), RUNE_C(0x01B2FF), VO_U},
+ {RUNE_C(0x01CF00), RUNE_C(0x01CFCF), VO_U},
+ {RUNE_C(0x01D000), RUNE_C(0x01D1FF), VO_U},
+ {RUNE_C(0x01D2E0), RUNE_C(0x01D37F), VO_U},
+ {RUNE_C(0x01D800), RUNE_C(0x01DAAF), VO_U},
+ {RUNE_C(0x01F000), RUNE_C(0x01F1FF), VO_U},
+ {RUNE_C(0x01F200), RUNE_C(0x01F201), VO_TU},
+ {RUNE_C(0x01F202), RUNE_C(0x01F7FF), VO_U},
+ {RUNE_C(0x01F900), RUNE_C(0x01FAFF), VO_U},
+ {RUNE_C(0x020000), RUNE_C(0x02FFFD), VO_U},
+ {RUNE_C(0x030000), RUNE_C(0x03FFFD), VO_U},
+ {RUNE_C(0x0F0000), RUNE_C(0x0FFFFD), VO_U},
+ {RUNE_C(0x100000), RUNE_C(0x10FFFD), VO_U},
+};
+
+#endif /* !RUNE_INTERNAL_RTYPE_VO_H */
diff --git a/vendor/librune/include/internal/types.h b/vendor/librune/include/internal/types.h
new file mode 100644
index 0000000..bc1bb9b
--- /dev/null
+++ b/vendor/librune/include/internal/types.h
@@ -0,0 +1,19 @@
+/* IWYU pragma: private */
+
+#include <stddef.h> /* IWYU pragma: export */
+#include <stdint.h>
+
+typedef unsigned char char8_t;
+typedef uint_least32_t rune;
+
+#if _RUNE_NEEDS_U8VIEW && !_RUNE_HAS_U8VIEW
+struct u8view {
+ const char8_t *p;
+ size_t len;
+};
+
+# define PRIsU8 ".*s"
+# define U8_PRI_ARGS(sv) ((int)(sv).len), ((sv).p)
+
+# define _RUNE_HAS_U8VIEW 1
+#endif
diff --git a/vendor/librune/include/mbstring.h b/vendor/librune/include/mbstring.h
new file mode 100644
index 0000000..c1336a8
--- /dev/null
+++ b/vendor/librune/include/mbstring.h
@@ -0,0 +1,41 @@
+#ifndef RUNE_MBSTRING_H
+#define RUNE_MBSTRING_H
+
+#include "internal/qmacros.h"
+#define _RUNE_NEEDS_U8VIEW 1
+#include "internal/types.h" /* IWYU pragma: export */
+
+#define U8_LEN_MAX (4)
+
+int u8tor(rune *, const char8_t *);
+int u8tor_uc(rune *, const char8_t *);
+
+int rtou8(char8_t *, rune, size_t);
+size_t u8set(char8_t *, rune, size_t);
+
+char8_t *u8chk(const char8_t *, size_t);
+[[unsequenced]] bool u8chkr(rune);
+
+[[unsequenced]] int u8wdth(rune);
+
+int u8rlen(const char8_t *);
+size_t u8len(const char8_t *, size_t);
+
+int u8next(rune *, const char8_t **, size_t *);
+int u8prev(rune *, const char8_t **, const char8_t *);
+
+char8_t *u8chr(const char8_t *, rune, size_t);
+char8_t *u8rchr(const char8_t *, rune, size_t);
+
+size_t u8spn(const char8_t *, size_t, const rune *, size_t);
+size_t u8bspn(const char8_t *, size_t, const rune *, size_t);
+size_t u8cspn(const char8_t *, size_t, const rune *, size_t);
+size_t u8cbspn(const char8_t *, size_t, const rune *, size_t);
+
+#if !_RUNE_NO_MACRO_WRAPPER
+# define u8chk(s, n) _RUNE_Q_PTR(u8chk, (s), (s), (n))
+# define u8chr(s, ch, n) _RUNE_Q_PTR(u8chr, (s), (s), (ch), (n))
+# define u8rchr(s, ch, n) _RUNE_Q_PTR(u8rchr, (s), (s), (ch), (n))
+#endif
+
+#endif /* !RUNE_MBSTRING_H */
diff --git a/vendor/librune/include/rtype.h b/vendor/librune/include/rtype.h
new file mode 100644
index 0000000..337a327
--- /dev/null
+++ b/vendor/librune/include/rtype.h
@@ -0,0 +1,289 @@
+#ifndef RUNE_RTYPE_H
+#define RUNE_RTYPE_H
+
+#include <stdint.h>
+
+#include "internal/types.h"
+
+typedef uint_fast32_t rprop_gc_bf;
+#define GC_CN ((rprop_gc_bf)1 << 0) /* Not Assigned */
+#define GC_CC ((rprop_gc_bf)1 << 1) /* Control */
+#define GC_CF ((rprop_gc_bf)1 << 2) /* Format */
+#define GC_CO ((rprop_gc_bf)1 << 3) /* Private Use */
+#define GC_CS ((rprop_gc_bf)1 << 4) /* Surrogate */
+#define GC_LL ((rprop_gc_bf)1 << 5) /* Lowercase Letter */
+#define GC_LM ((rprop_gc_bf)1 << 6) /* Modifier Letter */
+#define GC_LO ((rprop_gc_bf)1 << 7) /* Other Letter */
+#define GC_LT ((rprop_gc_bf)1 << 8) /* Titlecase Letter */
+#define GC_LU ((rprop_gc_bf)1 << 9) /* Uppercase Letter */
+#define GC_MC ((rprop_gc_bf)1 << 10) /* Spacing Mark */
+#define GC_ME ((rprop_gc_bf)1 << 11) /* Enclosing Mark */
+#define GC_MN ((rprop_gc_bf)1 << 12) /* Nonspacing Mark */
+#define GC_ND ((rprop_gc_bf)1 << 13) /* Decimal Number */
+#define GC_NL ((rprop_gc_bf)1 << 14) /* Letter Number */
+#define GC_NO ((rprop_gc_bf)1 << 15) /* Other Number */
+#define GC_PC ((rprop_gc_bf)1 << 16) /* Connector Punctuation */
+#define GC_PD ((rprop_gc_bf)1 << 17) /* Dash Punctuation */
+#define GC_PE ((rprop_gc_bf)1 << 18) /* Close Punctuation */
+#define GC_PF ((rprop_gc_bf)1 << 19) /* Final Punctuation */
+#define GC_PI ((rprop_gc_bf)1 << 20) /* Initial Punctuation */
+#define GC_PO ((rprop_gc_bf)1 << 21) /* Other Punctuation */
+#define GC_PS ((rprop_gc_bf)1 << 22) /* Open Punctuation */
+#define GC_SC ((rprop_gc_bf)1 << 23) /* Currency Symbol */
+#define GC_SK ((rprop_gc_bf)1 << 24) /* Modifier Symbol */
+#define GC_SM ((rprop_gc_bf)1 << 25) /* Math Symbol */
+#define GC_SO ((rprop_gc_bf)1 << 26) /* Other Symbol */
+#define GC_ZL ((rprop_gc_bf)1 << 27) /* Line Separator */
+#define GC_ZP ((rprop_gc_bf)1 << 28) /* Paragraph Separator */
+#define GC_ZS ((rprop_gc_bf)1 << 29) /* Space Separator */
+#define GC_C (GC_CC | GC_CF | GC_CN | GC_CO | GC_CS) /* Other */
+#define GC_LC (GC_LU | GC_LL | GC_LT) /* Cased Letter */
+#define GC_L (GC_LL | GC_LM | GC_LO | GC_LT | GC_LU) /* Letter */
+#define GC_M (GC_MC | GC_ME | GC_MN) /* Mark */
+#define GC_N (GC_ND | GC_NL | GC_NO) /* Number */
+#define GC_S (GC_SC | GC_SK | GC_SM | GC_SO) /* Symbol */
+#define GC_Z (GC_ZL | GC_ZP | GC_ZS) /* Separator */
+#define GC_P \
+ (GC_PC | GC_PD | GC_PE | GC_PF | GC_PI | GC_PO | GC_PS) /* Punctuation */
+
+typedef unsigned int rprop_jt_bf;
+#define JT_U ((rprop_jt_bf)1 << 0) /* Non Joining */
+#define JT_C ((rprop_jt_bf)1 << 1) /* Join Causing */
+#define JT_D ((rprop_jt_bf)1 << 2) /* Dual Joining */
+#define JT_R ((rprop_jt_bf)1 << 4) /* Right Joining */
+#define JT_L ((rprop_jt_bf)1 << 3) /* Left Joining */
+#define JT_T ((rprop_jt_bf)1 << 5) /* Transparent */
+
+typedef unsigned int rprop_nt_bf;
+#define NT_NONE ((rprop_nt_bf)1 << 0)
+#define NT_DECIMAL ((rprop_nt_bf)1 << 1)
+#define NT_DIGIT ((rprop_nt_bf)1 << 2)
+#define NT_NUMERIC ((rprop_nt_bf)1 << 3)
+
+typedef uint_fast32_t rprop_dt_bf;
+#define DT_NONE ((rprop_dt_bf)1 << 0)
+#define DT_CANONICAL ((rprop_dt_bf)1 << 1)
+#define DT_CIRCLE ((rprop_dt_bf)1 << 2)
+#define DT_COMPAT ((rprop_dt_bf)1 << 3)
+#define DT_FINAL ((rprop_dt_bf)1 << 4)
+#define DT_FONT ((rprop_dt_bf)1 << 5)
+#define DT_FRACTION ((rprop_dt_bf)1 << 6)
+#define DT_INITIAL ((rprop_dt_bf)1 << 7)
+#define DT_ISOLATED ((rprop_dt_bf)1 << 8)
+#define DT_MEDIAL ((rprop_dt_bf)1 << 9)
+#define DT_NARROW ((rprop_dt_bf)1 << 10)
+#define DT_NOBREAK ((rprop_dt_bf)1 << 11)
+#define DT_SMALL ((rprop_dt_bf)1 << 12)
+#define DT_SQUARE ((rprop_dt_bf)1 << 13)
+#define DT_SUB ((rprop_dt_bf)1 << 14)
+#define DT_SUPER ((rprop_dt_bf)1 << 15)
+#define DT_VERTICAL ((rprop_dt_bf)1 << 16)
+#define DT_WIDE ((rprop_dt_bf)1 << 17)
+
+/* GCC at the time of writing doesn’t properly support _BitInt */
+#ifdef __SIZEOF_INT128__
+__extension__ typedef unsigned __int128 rprop_jg_bf;
+#elif BITINT_MAXWIDTH >= 128
+typedef unsigned _BitInt(128) rprop_jg_bf;
+#elif BITINT_MAXWIDTH >= 103
+/* Highly unlikely this is ever needed, but who knows. Powers of 2 generate
+ more efficient code so prefer 128. */
+typedef unsigned _BitInt(103) rprop_jg_bf;
+#else
+# error "_BitInt types of width >=103 not supported"
+#endif
+
+#define JG_NONE ((rprop_jg_bf)1 << 0)
+#define JG_AFRICAN_FEH ((rprop_jg_bf)1 << 1)
+#define JG_AFRICAN_NOON ((rprop_jg_bf)1 << 2)
+#define JG_AFRICAN_QAF ((rprop_jg_bf)1 << 3)
+#define JG_AIN ((rprop_jg_bf)1 << 4)
+#define JG_ALAPH ((rprop_jg_bf)1 << 5)
+#define JG_ALEF ((rprop_jg_bf)1 << 6)
+#define JG_BEH ((rprop_jg_bf)1 << 7)
+#define JG_BETH ((rprop_jg_bf)1 << 8)
+#define JG_BURUSHASKI_YEH_BARREE ((rprop_jg_bf)1 << 9)
+#define JG_DAL ((rprop_jg_bf)1 << 10)
+#define JG_DALATH_RISH ((rprop_jg_bf)1 << 11)
+#define JG_E ((rprop_jg_bf)1 << 12)
+#define JG_FARSI_YEH ((rprop_jg_bf)1 << 13)
+#define JG_FE ((rprop_jg_bf)1 << 14)
+#define JG_FEH ((rprop_jg_bf)1 << 15)
+#define JG_FINAL_SEMKATH ((rprop_jg_bf)1 << 16)
+#define JG_GAF ((rprop_jg_bf)1 << 17)
+#define JG_GAMAL ((rprop_jg_bf)1 << 18)
+#define JG_HAH ((rprop_jg_bf)1 << 19)
+#define JG_HANIFI_ROHINGYA_KINNA_YA ((rprop_jg_bf)1 << 20)
+#define JG_HANIFI_ROHINGYA_PA ((rprop_jg_bf)1 << 21)
+#define JG_HE ((rprop_jg_bf)1 << 22)
+#define JG_HEH ((rprop_jg_bf)1 << 23)
+#define JG_HEH_GOAL ((rprop_jg_bf)1 << 24)
+#define JG_HETH ((rprop_jg_bf)1 << 25)
+#define JG_KAF ((rprop_jg_bf)1 << 26)
+#define JG_KAPH ((rprop_jg_bf)1 << 27)
+#define JG_KHAPH ((rprop_jg_bf)1 << 28)
+#define JG_KNOTTED_HEH ((rprop_jg_bf)1 << 29)
+#define JG_LAM ((rprop_jg_bf)1 << 30)
+#define JG_LAMADH ((rprop_jg_bf)1 << 31)
+#define JG_MALAYALAM_BHA ((rprop_jg_bf)1 << 32)
+#define JG_MALAYALAM_JA ((rprop_jg_bf)1 << 33)
+#define JG_MALAYALAM_LLA ((rprop_jg_bf)1 << 34)
+#define JG_MALAYALAM_LLLA ((rprop_jg_bf)1 << 35)
+#define JG_MALAYALAM_NGA ((rprop_jg_bf)1 << 36)
+#define JG_MALAYALAM_NNA ((rprop_jg_bf)1 << 37)
+#define JG_MALAYALAM_NNNA ((rprop_jg_bf)1 << 38)
+#define JG_MALAYALAM_NYA ((rprop_jg_bf)1 << 39)
+#define JG_MALAYALAM_RA ((rprop_jg_bf)1 << 40)
+#define JG_MALAYALAM_SSA ((rprop_jg_bf)1 << 41)
+#define JG_MALAYALAM_TTA ((rprop_jg_bf)1 << 42)
+#define JG_MANICHAEAN_ALEPH ((rprop_jg_bf)1 << 43)
+#define JG_MANICHAEAN_AYIN ((rprop_jg_bf)1 << 44)
+#define JG_MANICHAEAN_BETH ((rprop_jg_bf)1 << 45)
+#define JG_MANICHAEAN_DALETH ((rprop_jg_bf)1 << 46)
+#define JG_MANICHAEAN_DHAMEDH ((rprop_jg_bf)1 << 47)
+#define JG_MANICHAEAN_FIVE ((rprop_jg_bf)1 << 48)
+#define JG_MANICHAEAN_GIMEL ((rprop_jg_bf)1 << 49)
+#define JG_MANICHAEAN_HETH ((rprop_jg_bf)1 << 50)
+#define JG_MANICHAEAN_HUNDRED ((rprop_jg_bf)1 << 51)
+#define JG_MANICHAEAN_KAPH ((rprop_jg_bf)1 << 52)
+#define JG_MANICHAEAN_LAMEDH ((rprop_jg_bf)1 << 53)
+#define JG_MANICHAEAN_MEM ((rprop_jg_bf)1 << 54)
+#define JG_MANICHAEAN_NUN ((rprop_jg_bf)1 << 55)
+#define JG_MANICHAEAN_ONE ((rprop_jg_bf)1 << 56)
+#define JG_MANICHAEAN_PE ((rprop_jg_bf)1 << 57)
+#define JG_MANICHAEAN_QOPH ((rprop_jg_bf)1 << 58)
+#define JG_MANICHAEAN_RESH ((rprop_jg_bf)1 << 59)
+#define JG_MANICHAEAN_SADHE ((rprop_jg_bf)1 << 60)
+#define JG_MANICHAEAN_SAMEKH ((rprop_jg_bf)1 << 61)
+#define JG_MANICHAEAN_TAW ((rprop_jg_bf)1 << 62)
+#define JG_MANICHAEAN_TEN ((rprop_jg_bf)1 << 63)
+#define JG_MANICHAEAN_TETH ((rprop_jg_bf)1 << 64)
+#define JG_MANICHAEAN_THAMEDH ((rprop_jg_bf)1 << 65)
+#define JG_MANICHAEAN_TWENTY ((rprop_jg_bf)1 << 66)
+#define JG_MANICHAEAN_WAW ((rprop_jg_bf)1 << 67)
+#define JG_MANICHAEAN_YODH ((rprop_jg_bf)1 << 68)
+#define JG_MANICHAEAN_ZAYIN ((rprop_jg_bf)1 << 69)
+#define JG_MEEM ((rprop_jg_bf)1 << 70)
+#define JG_MIM ((rprop_jg_bf)1 << 71)
+#define JG_NOON ((rprop_jg_bf)1 << 72)
+#define JG_NUN ((rprop_jg_bf)1 << 73)
+#define JG_NYA ((rprop_jg_bf)1 << 74)
+#define JG_PE ((rprop_jg_bf)1 << 75)
+#define JG_QAF ((rprop_jg_bf)1 << 76)
+#define JG_QAPH ((rprop_jg_bf)1 << 77)
+#define JG_REH ((rprop_jg_bf)1 << 78)
+#define JG_REVERSED_PE ((rprop_jg_bf)1 << 79)
+#define JG_ROHINGYA_YEH ((rprop_jg_bf)1 << 80)
+#define JG_SAD ((rprop_jg_bf)1 << 81)
+#define JG_SADHE ((rprop_jg_bf)1 << 82)
+#define JG_SEEN ((rprop_jg_bf)1 << 83)
+#define JG_SEMKATH ((rprop_jg_bf)1 << 84)
+#define JG_SHIN ((rprop_jg_bf)1 << 85)
+#define JG_STRAIGHT_WAW ((rprop_jg_bf)1 << 86)
+#define JG_SWASH_KAF ((rprop_jg_bf)1 << 87)
+#define JG_SYRIAC_WAW ((rprop_jg_bf)1 << 88)
+#define JG_TAH ((rprop_jg_bf)1 << 89)
+#define JG_TAW ((rprop_jg_bf)1 << 90)
+#define JG_TEH_MARBUTA ((rprop_jg_bf)1 << 91)
+#define JG_TEH_MARBUTA_GOAL ((rprop_jg_bf)1 << 92)
+#define JG_TETH ((rprop_jg_bf)1 << 93)
+#define JG_THIN_YEH ((rprop_jg_bf)1 << 94)
+#define JG_VERTICAL_TAIL ((rprop_jg_bf)1 << 95)
+#define JG_WAW ((rprop_jg_bf)1 << 96)
+#define JG_YEH ((rprop_jg_bf)1 << 97)
+#define JG_YEH_BARREE ((rprop_jg_bf)1 << 98)
+#define JG_YEH_WITH_TAIL ((rprop_jg_bf)1 << 99)
+#define JG_YUDH ((rprop_jg_bf)1 << 100)
+#define JG_YUDH_HE ((rprop_jg_bf)1 << 101)
+#define JG_ZAIN ((rprop_jg_bf)1 << 102)
+#define JG_ZHAIN ((rprop_jg_bf)1 << 103)
+
+typedef unsigned int rprop_vo_bf;
+#define VO_U ((rprop_vo_bf)1 << 0) /* Upright */
+#define VO_R ((rprop_vo_bf)1 << 1) /* Rotated */
+#define VO_TU ((rprop_vo_bf)1 << 2) /* Transformed ∨ Upright */
+#define VO_TR ((rprop_vo_bf)1 << 3) /* Transformed ∨ Rotated */
+
+[[unsequenced]] bool riscntrl(rune);
+[[unsequenced]] bool risdigit(rune);
+[[unsequenced]] bool risgraph(rune);
+[[unsequenced]] bool rislower(rune);
+[[unsequenced]] bool rismark(rune);
+[[unsequenced]] bool risnumber(rune);
+[[unsequenced]] bool rispunct(rune);
+[[unsequenced]] bool risspace(rune);
+[[unsequenced]] bool rissymbol(rune);
+[[unsequenced]] bool ristitle(rune);
+[[unsequenced]] bool risupper(rune);
+
+[[unsequenced]] rprop_dt_bf rprop_get_dt(rune);
+[[unsequenced]] rprop_gc_bf rprop_get_gc(rune);
+[[unsequenced]] rprop_jg_bf rprop_get_jg(rune);
+[[unsequenced]] rprop_jt_bf rprop_get_jt(rune);
+[[unsequenced]] rprop_nt_bf rprop_get_nt(rune);
+[[unsequenced]] rprop_vo_bf rprop_get_vo(rune);
+
+[[unsequenced]] double rprop_get_nv(rune);
+[[unsequenced]] rune rprop_get_equideo(rune);
+
+/* Non-autogenerated rprop_is_*() functions */
+[[unsequenced]] bool rprop_is_ahex(rune);
+[[unsequenced]] bool rprop_is_idst(rune);
+[[unsequenced]] bool rprop_is_idsu(rune);
+[[unsequenced]] bool rprop_is_join_c(rune);
+[[unsequenced]] bool rprop_is_nchar(rune);
+[[unsequenced]] bool rprop_is_pat_ws(rune);
+[[unsequenced]] bool rprop_is_ri(rune);
+
+/* PROP PREDICATES START */
+[[unsequenced]] bool rprop_is_alpha(rune);
+[[unsequenced]] bool rprop_is_bidi_c(rune);
+[[unsequenced]] bool rprop_is_bidi_m(rune);
+[[unsequenced]] bool rprop_is_cased(rune);
+[[unsequenced]] bool rprop_is_ci(rune);
+[[unsequenced]] bool rprop_is_cwcf(rune);
+[[unsequenced]] bool rprop_is_cwcm(rune);
+[[unsequenced]] bool rprop_is_cwkcf(rune);
+[[unsequenced]] bool rprop_is_cwl(rune);
+[[unsequenced]] bool rprop_is_cwt(rune);
+[[unsequenced]] bool rprop_is_cwu(rune);
+[[unsequenced]] bool rprop_is_dash(rune);
+[[unsequenced]] bool rprop_is_dep(rune);
+[[unsequenced]] bool rprop_is_di(rune);
+[[unsequenced]] bool rprop_is_dia(rune);
+[[unsequenced]] bool rprop_is_ebase(rune);
+[[unsequenced]] bool rprop_is_ecomp(rune);
+[[unsequenced]] bool rprop_is_emod(rune);
+[[unsequenced]] bool rprop_is_emoji(rune);
+[[unsequenced]] bool rprop_is_epres(rune);
+[[unsequenced]] bool rprop_is_ext(rune);
+[[unsequenced]] bool rprop_is_extpic(rune);
+[[unsequenced]] bool rprop_is_gr_base(rune);
+[[unsequenced]] bool rprop_is_gr_ext(rune);
+[[unsequenced]] bool rprop_is_hex(rune);
+[[unsequenced]] bool rprop_is_id_compat_math_continue(rune);
+[[unsequenced]] bool rprop_is_id_compat_math_start(rune);
+[[unsequenced]] bool rprop_is_idbo(rune);
+[[unsequenced]] bool rprop_is_idc(rune);
+[[unsequenced]] bool rprop_is_ideo(rune);
+[[unsequenced]] bool rprop_is_ids(rune);
+[[unsequenced]] bool rprop_is_incb(rune);
+[[unsequenced]] bool rprop_is_loe(rune);
+[[unsequenced]] bool rprop_is_lower(rune);
+[[unsequenced]] bool rprop_is_math(rune);
+[[unsequenced]] bool rprop_is_pat_syn(rune);
+[[unsequenced]] bool rprop_is_pcm(rune);
+[[unsequenced]] bool rprop_is_qmark(rune);
+[[unsequenced]] bool rprop_is_radical(rune);
+[[unsequenced]] bool rprop_is_sd(rune);
+[[unsequenced]] bool rprop_is_sterm(rune);
+[[unsequenced]] bool rprop_is_term(rune);
+[[unsequenced]] bool rprop_is_uideo(rune);
+[[unsequenced]] bool rprop_is_upper(rune);
+[[unsequenced]] bool rprop_is_vs(rune);
+[[unsequenced]] bool rprop_is_wspace(rune);
+[[unsequenced]] bool rprop_is_xidc(rune);
+[[unsequenced]] bool rprop_is_xids(rune);
+/* PROP PREDICATES END */
+
+#endif
diff --git a/vendor/librune/include/rune.h b/vendor/librune/include/rune.h
new file mode 100644
index 0000000..23c3b7c
--- /dev/null
+++ b/vendor/librune/include/rune.h
@@ -0,0 +1,34 @@
+#ifndef RUNE_RUNE_H
+#define RUNE_RUNE_H
+
+#include <inttypes.h>
+
+#include "internal/types.h" /* IWYU pragma: export */
+
+#define _RUNE_PRIDEF(c) PRI##c##LEAST32
+#define _RUNE_SCNDEF(c) SCN##c##LEAST32
+
+#ifdef PRIBLEAST32
+# define PRIBRUNE _RUNE_PRIDEF(B)
+#endif
+#define PRIbRUNE _RUNE_PRIDEF(b)
+#define PRIdRUNE _RUNE_PRIDEF(d)
+#define PRIiRUNE _RUNE_PRIDEF(i)
+#define PRIoRUNE _RUNE_PRIDEF(o)
+#define PRIuRUNE _RUNE_PRIDEF(u)
+#define PRIxRUNE _RUNE_PRIDEF(x)
+#define PRIXRUNE _RUNE_PRIDEF(X)
+
+#define SCNbRUNE _RUNE_SCNDEF(b)
+#define SCNdRUNE _RUNE_SCNDEF(d)
+#define SCNiRUNE _RUNE_SCNDEF(i)
+#define SCNuRUNE _RUNE_SCNDEF(u)
+#define SCNoRUNE _RUNE_SCNDEF(o)
+#define SCNxRUNE _RUNE_SCNDEF(x)
+
+#define RUNE_C(x) UINT32_C(x)
+
+#define RUNE_ERROR ((rune)0xFFFD)
+#define RUNE_MAX ((rune)RUNE_C(0x10FFFF))
+
+#endif /* !RUNE_RUNE_H */
diff --git a/vendor/librune/lib/builder/u8strfit.c b/vendor/librune/lib/builder/u8strfit.c
new file mode 100644
index 0000000..d0f0ecb
--- /dev/null
+++ b/vendor/librune/lib/builder/u8strfit.c
@@ -0,0 +1,11 @@
+#include <stdlib.h>
+
+#include "builder.h"
+
+#include "internal/common.h"
+
+struct u8str *
+u8strfit(struct u8str *b)
+{
+ return (b->p = realloc(b->p, b->len)) ? b : nullptr;
+}
diff --git a/vendor/librune/lib/builder/u8strfree.c b/vendor/librune/lib/builder/u8strfree.c
new file mode 100644
index 0000000..506c71b
--- /dev/null
+++ b/vendor/librune/lib/builder/u8strfree.c
@@ -0,0 +1,9 @@
+#include <stdlib.h>
+
+#include "builder.h"
+
+void
+u8strfree(struct u8str b)
+{
+ free(b.p);
+}
diff --git a/vendor/librune/lib/builder/u8strgrow.c b/vendor/librune/lib/builder/u8strgrow.c
new file mode 100644
index 0000000..022b216
--- /dev/null
+++ b/vendor/librune/lib/builder/u8strgrow.c
@@ -0,0 +1,41 @@
+#include <stdlib.h>
+
+#include "builder.h"
+
+#include "internal/common.h"
+
+static size_t nextpow2(size_t);
+
+struct u8str *
+u8strgrow(struct u8str *b, size_t n)
+{
+ if (n > b->cap) {
+ b->cap = nextpow2(n);
+ if (!(b->p = realloc(b->p, b->cap)))
+ return nullptr;
+ }
+ return b;
+}
+
+size_t
+nextpow2(size_t x)
+{
+#if defined(__has_builtin) && __has_builtin(__builtin_clzl)
+ x = x <= 1 ? 1 : 1 << (64 - __builtin_clzl(x - 1));
+#else
+ if (x) {
+ x--;
+ x |= x >> 1;
+ x |= x >> 2;
+ x |= x >> 4;
+ x |= x >> 8;
+ if (sizeof(size_t) >= 4)
+ x |= x >> 16;
+ if (sizeof(size_t) >= 8)
+ x |= x >> 32;
+ }
+ x++;
+#endif
+
+ return x;
+}
diff --git a/vendor/librune/lib/builder/u8strinit.c b/vendor/librune/lib/builder/u8strinit.c
new file mode 100644
index 0000000..29947e8
--- /dev/null
+++ b/vendor/librune/lib/builder/u8strinit.c
@@ -0,0 +1,18 @@
+#include <stdlib.h>
+
+#include "builder.h"
+
+#include "internal/common.h"
+
+struct u8str *
+u8strinit(struct u8str *b, size_t n)
+{
+ if (n) {
+ if (!(b->p = malloc(n)))
+ return nullptr;
+ } else
+ b->p = nullptr;
+ b->len = 0;
+ b->cap = n;
+ return b;
+}
diff --git a/vendor/librune/lib/builder/u8strpushr.c b/vendor/librune/lib/builder/u8strpushr.c
new file mode 100644
index 0000000..3fe31f2
--- /dev/null
+++ b/vendor/librune/lib/builder/u8strpushr.c
@@ -0,0 +1,13 @@
+#include "builder.h"
+#include "mbstring.h"
+
+#include "internal/common.h"
+
+struct u8str *
+u8strpushr(struct u8str *b, rune ch)
+{
+ if (!u8strgrow(b, b->len + u8wdth(ch)))
+ return nullptr;
+ b->len += rtou8(b->p + b->len, ch, b->cap - b->len);
+ return b;
+}
diff --git a/vendor/librune/lib/builder/u8strpushstr.c b/vendor/librune/lib/builder/u8strpushstr.c
new file mode 100644
index 0000000..8329c81
--- /dev/null
+++ b/vendor/librune/lib/builder/u8strpushstr.c
@@ -0,0 +1,17 @@
+#include <string.h>
+
+#include "builder.h"
+#include "mbstring.h"
+
+#include "internal/common.h"
+
+struct u8str *
+u8strpushstr(struct u8str *b, const char *s)
+{
+ size_t n = strlen(s);
+ if (!u8strgrow(b, b->len + n))
+ return nullptr;
+ memcpy(b->p + b->len, s, n);
+ b->len += n;
+ return b;
+}
diff --git a/vendor/librune/lib/builder/u8strpushu8.c b/vendor/librune/lib/builder/u8strpushu8.c
new file mode 100644
index 0000000..2ef2563
--- /dev/null
+++ b/vendor/librune/lib/builder/u8strpushu8.c
@@ -0,0 +1,16 @@
+#include <string.h>
+
+#include "builder.h"
+#include "mbstring.h"
+
+#include "internal/common.h"
+
+struct u8str *
+u8strpushu8(struct u8str *b, struct u8view v)
+{
+ if (!u8strgrow(b, b->len + v.len))
+ return nullptr;
+ memcpy(b->p + b->len, v.p, v.len);
+ b->len += v.len;
+ return b;
+}
diff --git a/vendor/librune/lib/gbrk/u8glen.c b/vendor/librune/lib/gbrk/u8glen.c
new file mode 100644
index 0000000..13cac7e
--- /dev/null
+++ b/vendor/librune/lib/gbrk/u8glen.c
@@ -0,0 +1,13 @@
+#include "gbrk.h"
+
+size_t
+u8glen(const char8_t *s, size_t n)
+{
+ size_t m = 0;
+ struct u8view unused;
+
+ while (u8gnext(&unused, &s, &n))
+ m++;
+
+ return m;
+}
diff --git a/vendor/librune/lib/gbrk/u8gnext.c b/vendor/librune/lib/gbrk/u8gnext.c
new file mode 100644
index 0000000..e2bce54
--- /dev/null
+++ b/vendor/librune/lib/gbrk/u8gnext.c
@@ -0,0 +1,147 @@
+#include <stddef.h>
+
+#include "gbrk.h"
+#include "mbstring.h"
+
+#include "internal/common.h"
+#include "internal/gbrk_lookup.h"
+
+struct gbrk_state {
+ enum {
+ GB9C_NONE,
+ GB9C_CNSNT,
+ GB9C_LNK,
+ } gb9c;
+ bool gb11 : 1;
+ bool gb12 : 1;
+};
+
+static bool u8isgbrk(rune, rune, struct gbrk_state *);
+
+#define DEFAULT GBP_OTHER
+#define HAS_VALUE 1
+#define TABLE gbrk_prop_tbl
+#define TYPE gbrk_prop
+#include "internal/rtype/lookup-func.h"
+
+size_t
+u8gnext(struct u8view *g, const char8_t **s, size_t *n)
+{
+ int m;
+ rune ch1;
+ const char8_t *p;
+ struct gbrk_state gs = {0};
+
+ if (*n == 0)
+ return 0;
+
+ g->p = p = *s;
+ p += u8tor_uc(&ch1, p);
+
+ for (;;) {
+ rune ch2;
+
+ if ((size_t)(p - *s) >= *n)
+ ch2 = 0;
+ else
+ m = u8tor_uc(&ch2, p);
+ if (u8isgbrk(ch1, ch2, &gs)) {
+ *n -= g->len = p - *s;
+ *s = p;
+ return g->len;
+ }
+
+ ch1 = ch2;
+ p += m;
+ }
+}
+
+bool
+u8isgbrk(rune a, rune b, struct gbrk_state *gs)
+{
+ gbrk_prop ap, bp;
+
+ /* GB1 & GB2 */
+ if (!a || !b)
+ goto do_break;
+
+ /* GB3 & ASCII fast-track */
+ if ((a | b) < 0x300) {
+ if (a == '\r' && b == '\n')
+ return false;
+ goto do_break;
+ }
+
+ /* GB4 */
+ if (a == '\r' || a == '\n' || ((ap = lookup(a)) & GBP_CTRL))
+ goto do_break;
+
+ /* GB5 */
+ if (b == '\r' || b == '\n' || ((bp = lookup(b)) & GBP_CTRL))
+ goto do_break;
+
+ /* Setting flags for GB9c */
+ if (ap & GBP_INDC_CNSNT)
+ gs->gb9c = GB9C_CNSNT;
+ else if ((ap & GBP_INDC_LNK) && gs->gb9c == GB9C_CNSNT)
+ gs->gb9c = GB9C_LNK;
+
+ /* GB6 */
+ if ((ap & GBP_HNGL_L)
+ && (bp & (GBP_HNGL_L | GBP_HNGL_V | GBP_HNGL_LV | GBP_HNGL_LVT)))
+ {
+ return false;
+ }
+
+ /* GB7 */
+ if ((ap & (GBP_HNGL_LV | GBP_HNGL_V)) && (bp & (GBP_HNGL_V | GBP_HNGL_T)))
+ return false;
+
+ /* GB8 */
+ if ((ap & (GBP_HNGL_LVT | GBP_HNGL_T)) && (bp & GBP_HNGL_T))
+ return false;
+
+ /* GB9 */
+ if (bp & (GBP_EXT | GBP_ZWJ)) {
+ if (ap & GBP_PIC)
+ gs->gb11 = true;
+ return false;
+ }
+
+ /* GB9a */
+ if (bp & GBP_SM)
+ return false;
+
+ /* GB9b */
+ if (ap & GBP_PREP)
+ return false;
+
+ /* GB9c */
+ if ((ap & (GBP_INDC_EXT | GBP_INDC_LNK)) && (bp & GBP_INDC_CNSNT)
+ && gs->gb9c == GB9C_LNK)
+ {
+ return false;
+ }
+
+ /* GB11 */
+ if (gs->gb11) {
+ if ((ap & GBP_EXT) && (bp & (GBP_EXT | GBP_ZWJ)))
+ return false;
+ if ((ap & GBP_ZWJ) && (bp & GBP_PIC))
+ return false;
+ }
+
+ /* GB12 & GB13 */
+ if (ap & GBP_RI) {
+ if (gs->gb12 || !(bp & GBP_RI))
+ goto do_break;
+ gs->gb12 = true;
+ return false;
+ }
+
+ /* GB999 */
+do_break:
+ gs->gb9c = GB9C_NONE;
+ gs->gb11 = gs->gb12 = false;
+ return true;
+}
diff --git a/vendor/librune/lib/mbstring/rtou8.c b/vendor/librune/lib/mbstring/rtou8.c
new file mode 100644
index 0000000..1028e7e
--- /dev/null
+++ b/vendor/librune/lib/mbstring/rtou8.c
@@ -0,0 +1,38 @@
+#include <stddef.h>
+
+#include "mbstring.h"
+
+#include "internal/common.h"
+
+int
+rtou8(char8_t *s, rune ch, size_t n)
+{
+ if (ch <= _1B_MAX) {
+ if (n >= 1)
+ s[0] = ch;
+ return 1;
+ } else if (ch <= _2B_MAX) {
+ if (n >= 2) {
+ s[0] = (ch >> 6) | 0xC0;
+ s[1] = (ch & 0x3F) | 0x80;
+ }
+ return 2;
+ } else if (ch <= _3B_MAX) {
+ if (n >= 3) {
+ s[0] = (ch >> 12) | 0xE0;
+ s[1] = ((ch >> 6) & 0x3F) | 0x80;
+ s[2] = (ch & 0x3F) | 0x80;
+ }
+ return 3;
+ } else if (ch <= _4B_MAX) {
+ if (n >= 4) {
+ s[0] = (ch >> 18) | 0xF0;
+ s[1] = ((ch >> 12) & 0x3F) | 0x80;
+ s[2] = ((ch >> 6) & 0x3F) | 0x80;
+ s[3] = (ch & 0x3F) | 0x80;
+ }
+ return 4;
+ }
+
+ unreachable();
+}
diff --git a/vendor/librune/lib/mbstring/u8bspn.c b/vendor/librune/lib/mbstring/u8bspn.c
new file mode 100644
index 0000000..40964a7
--- /dev/null
+++ b/vendor/librune/lib/mbstring/u8bspn.c
@@ -0,0 +1,22 @@
+#include "mbstring.h"
+
+size_t
+u8bspn(const char8_t *s, size_t n, const rune *p, size_t m)
+{
+ rune ch;
+ size_t k = 0;
+
+ while (u8next(&ch, &s, &n)) {
+ for (size_t i = 0; i < m; i++) {
+ if (p[i] == ch) {
+ k += u8wdth(ch);
+ goto found;
+ }
+ }
+
+ break;
+found:;
+ }
+
+ return k;
+}
diff --git a/vendor/librune/lib/mbstring/u8cbspn.c b/vendor/librune/lib/mbstring/u8cbspn.c
new file mode 100644
index 0000000..9566de4
--- /dev/null
+++ b/vendor/librune/lib/mbstring/u8cbspn.c
@@ -0,0 +1,20 @@
+#include "mbstring.h"
+
+size_t
+u8cbspn(const char8_t *s, size_t n, const rune *p, size_t m)
+{
+ rune ch;
+ size_t k = 0;
+
+ while (u8next(&ch, &s, &n)) {
+ for (size_t i = 0; i < m; i++) {
+ if (p[i] == ch)
+ goto found;
+ }
+
+ k += u8wdth(ch);
+ }
+
+found:
+ return k;
+}
diff --git a/vendor/librune/lib/mbstring/u8chk.c b/vendor/librune/lib/mbstring/u8chk.c
new file mode 100644
index 0000000..e2d5b1e
--- /dev/null
+++ b/vendor/librune/lib/mbstring/u8chk.c
@@ -0,0 +1,21 @@
+#include "rune.h"
+#define _RUNE_NO_MACRO_WRAPPER 1
+#include "mbstring.h"
+
+#include "internal/common.h"
+
+char8_t *
+u8chk(const char8_t *s, size_t n)
+{
+ while (n) {
+ rune ch;
+ int m = u8tor(&ch, s);
+
+ if (ch == RUNE_ERROR)
+ return (char8_t *)s;
+ n -= m;
+ s += m;
+ }
+
+ return nullptr;
+}
diff --git a/vendor/librune/lib/mbstring/u8chkr.c b/vendor/librune/lib/mbstring/u8chkr.c
new file mode 100644
index 0000000..2457dda
--- /dev/null
+++ b/vendor/librune/lib/mbstring/u8chkr.c
@@ -0,0 +1,9 @@
+#include "mbstring.h"
+#include "rune.h"
+
+bool
+u8chkr(rune ch)
+{
+ return !((ch >= 0xD800 && ch <= 0xDFFF) || ch == 0xFFFE || ch == 0xFFFF
+ || ch > RUNE_MAX);
+}
diff --git a/vendor/librune/lib/mbstring/u8chr.c b/vendor/librune/lib/mbstring/u8chr.c
new file mode 100644
index 0000000..008b7d7
--- /dev/null
+++ b/vendor/librune/lib/mbstring/u8chr.c
@@ -0,0 +1,97 @@
+#include <stddef.h>
+#include <stdint.h>
+#include <string.h>
+
+#define _RUNE_NO_MACRO_WRAPPER 1
+#include "mbstring.h"
+
+/* NOTE: The memmem*() functions were taken directly from the memmem()
+ implementation on OpenBSD. As a result, these functions are licensed under
+ OpenBSDs 2-Clause BSD License instead of this libraries 0-Clause BSD License.
+
+ The license for these functions is as follows:
+
+ Copyright © 2005–2020 Rich Felker, et al.
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ “Software”), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+
+static char8_t *
+memmem2(const char8_t *h, size_t k, const char8_t *n)
+{
+ uint16_t hw, nw;
+ hw = h[0] << 8 | h[1];
+ nw = n[0] << 8 | n[1];
+
+ for (h += 2, k -= 2; k; k--, hw = hw << 8 | *h++) {
+ if (hw == nw)
+ return (char8_t *)h - 2;
+ }
+ return hw == nw ? (char8_t *)h - 2 : nullptr;
+}
+
+static char8_t *
+memmem3(const char8_t *h, size_t k, const char8_t *n)
+{
+ uint32_t hw, nw;
+ hw = h[0] << 24 | h[1] << 16 | h[2] << 8;
+ nw = n[0] << 24 | n[1] << 16 | n[2] << 8;
+
+ for (h += 3, k -= 3; k; k--, hw = (hw | *h++) << 8) {
+ if (hw == nw)
+ return (char8_t *)h - 3;
+ }
+ return hw == nw ? (char8_t *)h - 3 : nullptr;
+}
+
+static char8_t *
+memmem4(const char8_t *h, size_t k, const char8_t *n)
+{
+ uint32_t hw, nw;
+ hw = h[0] << 24 | h[1] << 16 | h[2] << 8 | h[3];
+ nw = n[0] << 24 | n[1] << 16 | n[2] << 8 | n[3];
+
+ for (h += 4, k -= 4; k; k--, hw = hw << 8 | *h++) {
+ if (hw == nw)
+ return (char8_t *)h - 4;
+ }
+ return hw == nw ? (char8_t *)h - 4 : nullptr;
+}
+
+char8_t *
+u8chr(const char8_t *s, rune ch, size_t n)
+{
+ char8_t buf[U8_LEN_MAX];
+ int m = rtou8(buf, ch, sizeof(buf));
+
+ if (n < (size_t)m)
+ return nullptr;
+ switch (m) {
+ case 1:
+ return memchr(s, ch, n);
+ case 2:
+ return memmem2(s, n, buf);
+ case 3:
+ return memmem3(s, n, buf);
+ case 4:
+ return memmem4(s, n, buf);
+ }
+
+ unreachable();
+}
diff --git a/vendor/librune/lib/mbstring/u8cspn.c b/vendor/librune/lib/mbstring/u8cspn.c
new file mode 100644
index 0000000..259095a
--- /dev/null
+++ b/vendor/librune/lib/mbstring/u8cspn.c
@@ -0,0 +1,20 @@
+#include "mbstring.h"
+
+size_t
+u8cspn(const char8_t *s, size_t n, const rune *p, size_t m)
+{
+ rune ch;
+ size_t k = 0;
+
+ while (u8next(&ch, &s, &n)) {
+ for (size_t i = 0; i < m; i++) {
+ if (p[i] == ch)
+ goto found;
+ }
+
+ k++;
+ }
+
+found:
+ return k;
+}
diff --git a/vendor/librune/lib/mbstring/u8len.c b/vendor/librune/lib/mbstring/u8len.c
new file mode 100644
index 0000000..14539e8
--- /dev/null
+++ b/vendor/librune/lib/mbstring/u8len.c
@@ -0,0 +1,13 @@
+#include "mbstring.h"
+
+size_t
+u8len(const char8_t *s, size_t n)
+{
+ rune unused;
+ size_t m = 0;
+
+ while (u8next(&unused, &s, &n))
+ m++;
+
+ return m;
+}
diff --git a/vendor/librune/lib/mbstring/u8next.c b/vendor/librune/lib/mbstring/u8next.c
new file mode 100644
index 0000000..4c391f8
--- /dev/null
+++ b/vendor/librune/lib/mbstring/u8next.c
@@ -0,0 +1,15 @@
+#include "mbstring.h"
+
+int
+u8next(rune *ch, const char8_t **s, size_t *n)
+{
+ int m = 0;
+
+ if (*n) {
+ m = u8tor_uc(ch, *s);
+ *n -= m;
+ *s += m;
+ }
+
+ return m;
+}
diff --git a/vendor/librune/lib/mbstring/u8prev.c b/vendor/librune/lib/mbstring/u8prev.c
new file mode 100644
index 0000000..a7b0189
--- /dev/null
+++ b/vendor/librune/lib/mbstring/u8prev.c
@@ -0,0 +1,39 @@
+#include "mbstring.h"
+#include "rune.h"
+
+#include "internal/common.h"
+
+int
+u8prev(rune *ch, const char8_t **p, const char8_t *start)
+{
+ int off;
+ bool match = true;
+ const char8_t *s = *p;
+ ptrdiff_t d = s - start;
+
+ if (d <= 0) {
+ return 0;
+ } else if (U1(s[-1])) {
+ *ch = s[-1];
+ off = 1;
+ } else if (d > 1 && UC(s[-1]) && U2(s[-2])) {
+ *ch = ((s[-2] & 0x1F) << 6) | (s[-1] & 0x3F);
+ off = 2;
+ } else if (d > 2 && UC(s[-1]) && UC(s[-2]) && U3(s[-3])) {
+ *ch = ((s[-3] & 0x0F) << 12) | ((s[-2] & 0x3F) << 6) | (s[-1] & 0x3F);
+ off = 3;
+ } else if (d > 3 && UC(s[-1]) && UC(s[-2]) && UC(s[-3]) && U4(s[-4])) {
+ *ch = ((s[-4] & 0x07) << 18) | ((s[-3] & 0x3F) << 12)
+ | ((s[-2] & 0x3F) << 6) | (s[-1] & 0x3F);
+ off = 4;
+ } else
+ match = false;
+
+ if (!(match && u8chkr(*ch))) {
+ *ch = RUNE_ERROR;
+ off = 1;
+ }
+
+ *p -= off;
+ return off;
+}
diff --git a/vendor/librune/lib/mbstring/u8rchr.c b/vendor/librune/lib/mbstring/u8rchr.c
new file mode 100644
index 0000000..b92c323
--- /dev/null
+++ b/vendor/librune/lib/mbstring/u8rchr.c
@@ -0,0 +1,87 @@
+#include <stddef.h>
+#include <stdint.h>
+
+#define _RUNE_NO_MACRO_WRAPPER 1
+#include "mbstring.h"
+
+static char8_t *
+memrchr1(const char8_t *s, size_t k, const char8_t *n)
+{
+ for (const char8_t *p = s + k - 1; k-- > 0; p--) {
+ if (*p == *n)
+ return (char8_t *)p;
+ }
+ return nullptr;
+}
+
+static char8_t *
+memrchr2(const char8_t *h, size_t k, const char8_t *n)
+{
+ uint16_t hw, nw;
+ const char8_t *H = h + k - 1;
+ hw = H[-1] << 8 | H[-0];
+ nw = n[+0] << 8 | n[+1];
+
+ for (H -= 2, k -= 2; k; k--, hw = hw >> 8 | (*H-- << 8)) {
+ if (hw == nw)
+ return (char8_t *)H + 1;
+ }
+
+ return hw == nw ? (char8_t *)H + 1 : nullptr;
+}
+
+static char8_t *
+memrchr3(const char8_t *h, size_t k, const char8_t *n)
+{
+ uint32_t hw, nw;
+ const char8_t *H = h + k - 1;
+ hw = H[-2] << 24 | H[-1] << 16 | H[-0] << 8;
+ nw = n[+0] << 24 | n[+1] << 16 | n[+2] << 8;
+
+ for (H -= 3, k -= 3; k;
+ k--, hw = (hw >> 8 | (*H-- << 24)) & UINT32_C(0xFFFFFF00))
+ {
+ if (hw == nw)
+ return (char8_t *)H + 1;
+ }
+
+ return hw == nw ? (char8_t *)H + 1 : nullptr;
+}
+
+static char8_t *
+memrchr4(const char8_t *h, size_t k, const char8_t *n)
+{
+ uint32_t hw, nw;
+ const char8_t *H = h + k - 1;
+ hw = H[-3] << 24 | H[-2] << 16 | H[-1] << 8 | H[-0];
+ nw = n[+0] << 24 | n[+1] << 16 | n[+2] << 8 | n[+3];
+
+ for (H -= 4, k -= 4; k; k--, hw = hw >> 8 | (*H-- << 24)) {
+ if (hw == nw)
+ return (char8_t *)H + 1;
+ }
+
+ return hw == nw ? (char8_t *)H + 1 : nullptr;
+}
+
+char8_t *
+u8rchr(const char8_t *s, rune ch, size_t n)
+{
+ char8_t buf[U8_LEN_MAX];
+ int m = rtou8(buf, ch, sizeof(buf));
+
+ if (n < (size_t)m)
+ return nullptr;
+ switch (m) {
+ case 1:
+ return (char8_t *)memrchr1(s, n, buf);
+ case 2:
+ return (char8_t *)memrchr2(s, n, buf);
+ case 3:
+ return (char8_t *)memrchr3(s, n, buf);
+ case 4:
+ return (char8_t *)memrchr4(s, n, buf);
+ }
+
+ unreachable();
+}
diff --git a/vendor/librune/lib/mbstring/u8rlen.c b/vendor/librune/lib/mbstring/u8rlen.c
new file mode 100644
index 0000000..ac579c7
--- /dev/null
+++ b/vendor/librune/lib/mbstring/u8rlen.c
@@ -0,0 +1,20 @@
+#include <stddef.h>
+
+#include "mbstring.h"
+
+#include "internal/common.h"
+
+int
+u8rlen(const char8_t *s)
+{
+ if (U1(*s))
+ return 1;
+ else if (U2(*s))
+ return 2;
+ else if (U3(*s))
+ return 3;
+ else if (U4(*s))
+ return 4;
+
+ unreachable();
+}
diff --git a/vendor/librune/lib/mbstring/u8set.c b/vendor/librune/lib/mbstring/u8set.c
new file mode 100644
index 0000000..84cf943
--- /dev/null
+++ b/vendor/librune/lib/mbstring/u8set.c
@@ -0,0 +1,24 @@
+#include <string.h>
+
+#include "mbstring.h"
+
+#include "internal/common.h"
+
+size_t
+u8set(char8_t *s, rune ch, size_t n)
+{
+ int m;
+ char8_t buf[U8_LEN_MAX];
+
+ if (n == 0)
+ return 0;
+ if (ch <= _1B_MAX) {
+ memset(s, ch, n);
+ return n;
+ }
+ m = rtou8(buf, ch, sizeof(buf));
+ for (size_t i = 0; i < n; i += m)
+ memcpy(s + i, buf, m);
+
+ return n - n % m;
+}
diff --git a/vendor/librune/lib/mbstring/u8spn.c b/vendor/librune/lib/mbstring/u8spn.c
new file mode 100644
index 0000000..5f49b0e
--- /dev/null
+++ b/vendor/librune/lib/mbstring/u8spn.c
@@ -0,0 +1,22 @@
+#include "mbstring.h"
+
+size_t
+u8spn(const char8_t *s, size_t n, const rune *p, size_t m)
+{
+ rune ch;
+ size_t k = 0;
+
+ while (u8next(&ch, &s, &n)) {
+ for (size_t i = 0; i < m; i++) {
+ if (p[i] == ch) {
+ k++;
+ goto found;
+ }
+ }
+
+ break;
+found:;
+ }
+
+ return k;
+}
diff --git a/vendor/librune/lib/mbstring/u8tor.c b/vendor/librune/lib/mbstring/u8tor.c
new file mode 100644
index 0000000..6f657d9
--- /dev/null
+++ b/vendor/librune/lib/mbstring/u8tor.c
@@ -0,0 +1,31 @@
+#include "mbstring.h"
+#include "rune.h"
+
+#include "internal/common.h"
+
+int
+u8tor(rune *ch, const char8_t *s)
+{
+ int n = 0;
+
+ if (U1(s[0])) {
+ *ch = s[0];
+ n = 1;
+ } else if (U2(s[0]) && UC(s[1])) {
+ *ch = ((s[0] & 0x1F) << 6) | (s[1] & 0x3F);
+ n = 2;
+ } else if (U3(s[0]) && UC(s[1]) && UC(s[2])) {
+ *ch = ((s[0] & 0x0F) << 12) | ((s[1] & 0x3F) << 6) | (s[2] & 0x3F);
+ n = 3;
+ } else if (U4(s[0]) && UC(s[1]) && UC(s[2]) && UC(s[3])) {
+ *ch = ((s[0] & 0x07) << 18) | ((s[1] & 0x3F) << 12)
+ | ((s[2] & 0x3F) << 6) | (s[3] & 0x3F);
+ n = 4;
+ }
+
+ if (n && u8chkr(*ch))
+ return n;
+
+ *ch = RUNE_ERROR;
+ return 1;
+}
diff --git a/vendor/librune/lib/mbstring/u8tor_uc.c b/vendor/librune/lib/mbstring/u8tor_uc.c
new file mode 100644
index 0000000..da9b206
--- /dev/null
+++ b/vendor/librune/lib/mbstring/u8tor_uc.c
@@ -0,0 +1,26 @@
+#include <stddef.h>
+
+#include "mbstring.h"
+
+#include "internal/common.h"
+
+int
+u8tor_uc(rune *ch, const char8_t *s)
+{
+ if (U1(s[0])) {
+ *ch = s[0];
+ return 1;
+ } else if (U2(s[0])) {
+ *ch = ((s[0] & 0x1F) << 6) | (s[1] & 0x3F);
+ return 2;
+ } else if (U3(s[0])) {
+ *ch = ((s[0] & 0x0F) << 12) | ((s[1] & 0x3F) << 6) | (s[2] & 0x3F);
+ return 3;
+ } else if (U4(s[0])) {
+ *ch = ((s[0] & 0x07) << 18) | ((s[1] & 0x3F) << 12)
+ | ((s[2] & 0x3F) << 6) | (s[3] & 0x3F);
+ return 4;
+ }
+
+ unreachable();
+}
diff --git a/vendor/librune/lib/mbstring/u8wdth.c b/vendor/librune/lib/mbstring/u8wdth.c
new file mode 100644
index 0000000..65fa702
--- /dev/null
+++ b/vendor/librune/lib/mbstring/u8wdth.c
@@ -0,0 +1,13 @@
+#include "mbstring.h"
+
+#include "internal/common.h"
+
+int
+u8wdth(rune ch)
+{
+ return ch <= _1B_MAX ? 1
+ : ch <= _2B_MAX ? 2
+ : ch <= _3B_MAX ? 3
+ : ch <= _4B_MAX ? 4
+ : 0;
+}
diff --git a/vendor/librune/lib/rtype/riscntrl.c b/vendor/librune/lib/rtype/riscntrl.c
new file mode 100644
index 0000000..74cacdd
--- /dev/null
+++ b/vendor/librune/lib/rtype/riscntrl.c
@@ -0,0 +1,7 @@
+#include "rtype.h"
+
+bool
+riscntrl(rune ch)
+{
+ return rprop_get_gc(ch) & GC_CC;
+}
diff --git a/vendor/librune/lib/rtype/risdigit.c b/vendor/librune/lib/rtype/risdigit.c
new file mode 100644
index 0000000..dc5d42c
--- /dev/null
+++ b/vendor/librune/lib/rtype/risdigit.c
@@ -0,0 +1,7 @@
+#include "rtype.h"
+
+bool
+risdigit(rune ch)
+{
+ return rprop_get_gc(ch) & GC_ND;
+}
diff --git a/vendor/librune/lib/rtype/risgraph.c b/vendor/librune/lib/rtype/risgraph.c
new file mode 100644
index 0000000..cf764de
--- /dev/null
+++ b/vendor/librune/lib/rtype/risgraph.c
@@ -0,0 +1,7 @@
+#include "rtype.h"
+
+bool
+risgraph(rune ch)
+{
+ return rprop_get_gc(ch) & (GC_L | GC_M | GC_N | GC_P | GC_ZS);
+}
diff --git a/vendor/librune/lib/rtype/risletter.c b/vendor/librune/lib/rtype/risletter.c
new file mode 100644
index 0000000..43ff749
--- /dev/null
+++ b/vendor/librune/lib/rtype/risletter.c
@@ -0,0 +1,7 @@
+#include "rtype.h"
+
+bool
+risletter(rune ch)
+{
+ return rprop_get_gc(ch) & GC_L;
+}
diff --git a/vendor/librune/lib/rtype/rislower.c b/vendor/librune/lib/rtype/rislower.c
new file mode 100644
index 0000000..2e6fc39
--- /dev/null
+++ b/vendor/librune/lib/rtype/rislower.c
@@ -0,0 +1,7 @@
+#include "rtype.h"
+
+bool
+rislower(rune ch)
+{
+ return rprop_get_gc(ch) & GC_LL;
+}
diff --git a/vendor/librune/lib/rtype/rismark.c b/vendor/librune/lib/rtype/rismark.c
new file mode 100644
index 0000000..972323f
--- /dev/null
+++ b/vendor/librune/lib/rtype/rismark.c
@@ -0,0 +1,7 @@
+#include "rtype.h"
+
+bool
+rismark(rune ch)
+{
+ return rprop_get_gc(ch) & GC_M;
+}
diff --git a/vendor/librune/lib/rtype/risnumber.c b/vendor/librune/lib/rtype/risnumber.c
new file mode 100644
index 0000000..83bebd9
--- /dev/null
+++ b/vendor/librune/lib/rtype/risnumber.c
@@ -0,0 +1,7 @@
+#include "rtype.h"
+
+bool
+risnumber(rune ch)
+{
+ return rprop_get_gc(ch) & GC_N;
+}
diff --git a/vendor/librune/lib/rtype/rispunct.c b/vendor/librune/lib/rtype/rispunct.c
new file mode 100644
index 0000000..d01de21
--- /dev/null
+++ b/vendor/librune/lib/rtype/rispunct.c
@@ -0,0 +1,7 @@
+#include "rtype.h"
+
+bool
+rispunct(rune ch)
+{
+ return rprop_get_gc(ch) & GC_P;
+}
diff --git a/vendor/librune/lib/rtype/risspace.c b/vendor/librune/lib/rtype/risspace.c
new file mode 100644
index 0000000..9d98363
--- /dev/null
+++ b/vendor/librune/lib/rtype/risspace.c
@@ -0,0 +1,16 @@
+#include "rtype.h"
+
+#include "internal/common.h"
+
+static constexpr bool latin1_space_tbl[LATIN1_MAX + 1] = {
+ ['\t'] = true, ['\n'] = true, ['\v'] = true, ['\f'] = true,
+ ['\r'] = true, [' '] = true, [0x85] = true, [0xA0] = true,
+};
+
+bool
+risspace(rune ch)
+{
+ if (ch <= LATIN1_MAX)
+ return latin1_space_tbl[ch];
+ return rprop_get_gc(ch) & GC_Z;
+}
diff --git a/vendor/librune/lib/rtype/rissymbol.c b/vendor/librune/lib/rtype/rissymbol.c
new file mode 100644
index 0000000..e9fbc6d
--- /dev/null
+++ b/vendor/librune/lib/rtype/rissymbol.c
@@ -0,0 +1,7 @@
+#include "rtype.h"
+
+bool
+rissymbol(rune ch)
+{
+ return rprop_get_gc(ch) & GC_S;
+}
diff --git a/vendor/librune/lib/rtype/ristitle.c b/vendor/librune/lib/rtype/ristitle.c
new file mode 100644
index 0000000..548f686
--- /dev/null
+++ b/vendor/librune/lib/rtype/ristitle.c
@@ -0,0 +1,7 @@
+#include "rtype.h"
+
+bool
+ristitle(rune ch)
+{
+ return rprop_get_gc(ch) & GC_LT;
+}
diff --git a/vendor/librune/lib/rtype/risupper.c b/vendor/librune/lib/rtype/risupper.c
new file mode 100644
index 0000000..447050f
--- /dev/null
+++ b/vendor/librune/lib/rtype/risupper.c
@@ -0,0 +1,7 @@
+#include "rtype.h"
+
+bool
+risupper(rune ch)
+{
+ return rprop_get_gc(ch) & GC_LU;
+}
diff --git a/vendor/librune/lib/rtype/rprop_get_dt.c b/vendor/librune/lib/rtype/rprop_get_dt.c
new file mode 100644
index 0000000..47c0237
--- /dev/null
+++ b/vendor/librune/lib/rtype/rprop_get_dt.c
@@ -0,0 +1,16 @@
+#include "rtype.h"
+
+#include "internal/rtype/dt.h"
+
+#define DEFAULT DT_NONE
+#define HAS_VALUE 1
+#define LATIN1_TABLE rtype_dt_lat1_tbl
+#define TABLE rtype_dt_tbl
+#define TYPE rprop_dt_bf
+#include "internal/rtype/lookup-func.h"
+
+rprop_dt_bf
+rprop_get_dt(rune ch)
+{
+ return lookup(ch);
+}
diff --git a/vendor/librune/lib/rtype/rprop_get_equideo.c b/vendor/librune/lib/rtype/rprop_get_equideo.c
new file mode 100644
index 0000000..98701c7
--- /dev/null
+++ b/vendor/librune/lib/rtype/rprop_get_equideo.c
@@ -0,0 +1,17 @@
+#include "rtype.h"
+#include "rune.h"
+
+#include "internal/rtype/equideo.h"
+
+#define DEFAULT RUNE_ERROR
+#define HAS_VALUE 1
+#define TABLE rtype_equideo_tbl
+#define TYPE rune
+#define RANGE 0
+#include "internal/rtype/lookup-func.h"
+
+rune
+rprop_get_equideo(rune ch)
+{
+ return ch < RUNE_C(0x2E81) ? RUNE_ERROR : lookup(ch);
+}
diff --git a/vendor/librune/lib/rtype/rprop_get_gc.c b/vendor/librune/lib/rtype/rprop_get_gc.c
new file mode 100644
index 0000000..0d07c2d
--- /dev/null
+++ b/vendor/librune/lib/rtype/rprop_get_gc.c
@@ -0,0 +1,16 @@
+#include "rtype.h"
+
+#include "internal/rtype/gc.h"
+
+#define DEFAULT GC_CN
+#define HAS_VALUE 1
+#define LATIN1_TABLE rtype_gc_lat1_tbl
+#define TABLE rtype_gc_tbl
+#define TYPE rprop_gc_bf
+#include "internal/rtype/lookup-func.h"
+
+rprop_gc_bf
+rprop_get_gc(rune ch)
+{
+ return lookup(ch);
+}
diff --git a/vendor/librune/lib/rtype/rprop_get_jg.c b/vendor/librune/lib/rtype/rprop_get_jg.c
new file mode 100644
index 0000000..e1f3880
--- /dev/null
+++ b/vendor/librune/lib/rtype/rprop_get_jg.c
@@ -0,0 +1,16 @@
+#include "rtype.h"
+
+#include "internal/common.h"
+#include "internal/rtype/jg.h"
+
+#define DEFAULT JG_NONE
+#define HAS_VALUE 1
+#define TABLE rtype_jg_tbl
+#define TYPE rprop_jg_bf
+#include "internal/rtype/lookup-func.h"
+
+rprop_jg_bf
+rprop_get_jg(rune ch)
+{
+ return ch <= LATIN1_MAX ? false : lookup(ch);
+}
diff --git a/vendor/librune/lib/rtype/rprop_get_jt.c b/vendor/librune/lib/rtype/rprop_get_jt.c
new file mode 100644
index 0000000..9ba9622
--- /dev/null
+++ b/vendor/librune/lib/rtype/rprop_get_jt.c
@@ -0,0 +1,16 @@
+#include "rtype.h"
+
+#include "internal/rtype/jt.h"
+
+#define DEFAULT JT_U
+#define HAS_VALUE 1
+#define LATIN1_TABLE rtype_jt_lat1_tbl
+#define TABLE rtype_jt_tbl
+#define TYPE rprop_jt_bf
+#include "internal/rtype/lookup-func.h"
+
+rprop_jt_bf
+rprop_get_jt(rune ch)
+{
+ return lookup(ch);
+}
diff --git a/vendor/librune/lib/rtype/rprop_get_nt.c b/vendor/librune/lib/rtype/rprop_get_nt.c
new file mode 100644
index 0000000..3e50dfa
--- /dev/null
+++ b/vendor/librune/lib/rtype/rprop_get_nt.c
@@ -0,0 +1,16 @@
+#include "rtype.h"
+
+#include "internal/rtype/nt.h"
+
+#define DEFAULT NT_NONE
+#define HAS_VALUE 1
+#define LATIN1_TABLE rtype_nt_lat1_tbl
+#define TABLE rtype_nt_tbl
+#define TYPE rprop_nt_bf
+#include "internal/rtype/lookup-func.h"
+
+rprop_nt_bf
+rprop_get_nt(rune ch)
+{
+ return lookup(ch);
+}
diff --git a/vendor/librune/lib/rtype/rprop_get_nv.c b/vendor/librune/lib/rtype/rprop_get_nv.c
new file mode 100644
index 0000000..9ee93d9
--- /dev/null
+++ b/vendor/librune/lib/rtype/rprop_get_nv.c
@@ -0,0 +1,17 @@
+#include "rtype.h"
+#include "rune.h"
+
+#include "internal/rtype/nv.h"
+
+#define DEFAULT (0.0 / 0.0) /* NAN */
+#define HAS_VALUE 1
+#define TABLE rtype_nv_tbl
+#define TYPE double
+#define RANGE 0
+#include "internal/rtype/lookup-func.h"
+
+double
+rprop_get_nv(rune ch)
+{
+ return lookup(ch);
+}
diff --git a/vendor/librune/lib/rtype/rprop_get_vo.c b/vendor/librune/lib/rtype/rprop_get_vo.c
new file mode 100644
index 0000000..7008e11
--- /dev/null
+++ b/vendor/librune/lib/rtype/rprop_get_vo.c
@@ -0,0 +1,16 @@
+#include "rtype.h"
+
+#include "internal/rtype/vo.h"
+
+#define DEFAULT VO_R
+#define HAS_VALUE 1
+#define LATIN1_TABLE rtype_vo_lat1_tbl
+#define TABLE rtype_vo_tbl
+#define TYPE rprop_vo_bf
+#include "internal/rtype/lookup-func.h"
+
+rprop_vo_bf
+rprop_get_vo(rune ch)
+{
+ return lookup(ch);
+}
diff --git a/vendor/librune/lib/rtype/rprop_is_ahex.c b/vendor/librune/lib/rtype/rprop_is_ahex.c
new file mode 100644
index 0000000..c2670a9
--- /dev/null
+++ b/vendor/librune/lib/rtype/rprop_is_ahex.c
@@ -0,0 +1,17 @@
+#include "rtype.h"
+
+#include "internal/common.h"
+
+static const bool lookup[] = {
+ [0x30] = true, [0x31] = true, [0x32] = true, [0x33] = true, [0x34] = true,
+ [0x35] = true, [0x36] = true, [0x37] = true, [0x38] = true, [0x39] = true,
+ [0x41] = true, [0x42] = true, [0x43] = true, [0x44] = true, [0x45] = true,
+ [0x46] = true, [0x61] = true, [0x62] = true, [0x63] = true, [0x64] = true,
+ [0x65] = true, [0x66] = true,
+};
+
+bool
+rprop_is_ahex(rune ch)
+{
+ return ch <= lengthof(lookup) ? lookup[ch] : false;
+}
diff --git a/vendor/librune/lib/rtype/rprop_is_alpha.c b/vendor/librune/lib/rtype/rprop_is_alpha.c
new file mode 100644
index 0000000..9b126c3
--- /dev/null
+++ b/vendor/librune/lib/rtype/rprop_is_alpha.c
@@ -0,0 +1,767 @@
+/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */
+
+#include "rtype.h"
+#include "rune.h"
+
+#include "internal/common.h"
+
+/* clang-format off */
+
+#if BIT_LOOKUP
+static const unsigned _BitInt(LATIN1_MAX + 1) mask =
+ 0xFF7FFFFFFF7FFFFF042004000000000007FFFFFE07FFFFFE0000000000000000uwb;
+#endif
+
+static const struct {
+ rune lo, hi;
+} lookup_tbl[] = {
+ {RUNE_C(0x000041), RUNE_C(0x00005A)},
+ {RUNE_C(0x000061), RUNE_C(0x00007A)},
+ {RUNE_C(0x0000AA), RUNE_C(0x0000AA)},
+ {RUNE_C(0x0000B5), RUNE_C(0x0000B5)},
+ {RUNE_C(0x0000BA), RUNE_C(0x0000BA)},
+ {RUNE_C(0x0000C0), RUNE_C(0x0000D6)},
+ {RUNE_C(0x0000D8), RUNE_C(0x0000F6)},
+ {RUNE_C(0x0000F8), 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)},
+};
+
+#define TYPE bool
+#define TABLE lookup_tbl
+#define DEFAULT false
+#define HAS_VALUE 0
+#include "internal/rtype/lookup-func.h"
+
+bool
+rprop_is_alpha(rune ch)
+{
+ return
+#if BIT_LOOKUP
+ ch <= LATIN1_MAX ? (mask & (1 << ch)) :
+#endif
+ lookup(ch);
+}
diff --git a/vendor/librune/lib/rtype/rprop_is_bidi_c.c b/vendor/librune/lib/rtype/rprop_is_bidi_c.c
new file mode 100644
index 0000000..93203c3
--- /dev/null
+++ b/vendor/librune/lib/rtype/rprop_is_bidi_c.c
@@ -0,0 +1,29 @@
+/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */
+
+#include "rtype.h"
+#include "rune.h"
+
+#include "internal/common.h"
+
+/* clang-format off */
+
+static const struct {
+ rune lo, hi;
+} lookup_tbl[] = {
+ {RUNE_C(0x00061C), RUNE_C(0x00061C)},
+ {RUNE_C(0x00200E), RUNE_C(0x00200F)},
+ {RUNE_C(0x00202A), RUNE_C(0x00202E)},
+ {RUNE_C(0x002066), RUNE_C(0x002069)},
+};
+
+#define TYPE bool
+#define TABLE lookup_tbl
+#define DEFAULT false
+#define HAS_VALUE 0
+#include "internal/rtype/lookup-func.h"
+
+bool
+rprop_is_bidi_c(rune ch)
+{
+ return lookup(ch);
+}
diff --git a/vendor/librune/lib/rtype/rprop_is_bidi_m.c b/vendor/librune/lib/rtype/rprop_is_bidi_m.c
new file mode 100644
index 0000000..8475e03
--- /dev/null
+++ b/vendor/librune/lib/rtype/rprop_is_bidi_m.c
@@ -0,0 +1,148 @@
+/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */
+
+#include "rtype.h"
+#include "rune.h"
+
+#include "internal/common.h"
+
+/* clang-format off */
+
+#if BIT_LOOKUP
+static const unsigned _BitInt(LATIN1_MAX + 1) mask =
+ 0x0000000000000000080008000000000028000000280000005000030000000000uwb;
+#endif
+
+static const struct {
+ rune lo, hi;
+} lookup_tbl[] = {
+ {RUNE_C(0x000028), RUNE_C(0x000029)},
+ {RUNE_C(0x00003C), RUNE_C(0x00003C)},
+ {RUNE_C(0x00003E), RUNE_C(0x00003E)},
+ {RUNE_C(0x00005B), RUNE_C(0x00005B)},
+ {RUNE_C(0x00005D), RUNE_C(0x00005D)},
+ {RUNE_C(0x00007B), RUNE_C(0x00007B)},
+ {RUNE_C(0x00007D), RUNE_C(0x00007D)},
+ {RUNE_C(0x0000AB), RUNE_C(0x0000AB)},
+ {RUNE_C(0x0000BB), RUNE_C(0x0000BB)},
+ {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)},
+};
+
+#define TYPE bool
+#define TABLE lookup_tbl
+#define DEFAULT false
+#define HAS_VALUE 0
+#include "internal/rtype/lookup-func.h"
+
+bool
+rprop_is_bidi_m(rune ch)
+{
+ return
+#if BIT_LOOKUP
+ ch <= LATIN1_MAX ? (mask & (1 << ch)) :
+#endif
+ lookup(ch);
+}
diff --git a/vendor/librune/lib/rtype/rprop_is_cased.c b/vendor/librune/lib/rtype/rprop_is_cased.c
new file mode 100644
index 0000000..51df17c
--- /dev/null
+++ b/vendor/librune/lib/rtype/rprop_is_cased.c
@@ -0,0 +1,191 @@
+/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */
+
+#include "rtype.h"
+#include "rune.h"
+
+#include "internal/common.h"
+
+/* clang-format off */
+
+#if BIT_LOOKUP
+static const unsigned _BitInt(LATIN1_MAX + 1) mask =
+ 0xFF7FFFFFFF7FFFFF042004000000000007FFFFFE07FFFFFE0000000000000000uwb;
+#endif
+
+static const struct {
+ rune lo, hi;
+} lookup_tbl[] = {
+ {RUNE_C(0x000041), RUNE_C(0x00005A)},
+ {RUNE_C(0x000061), RUNE_C(0x00007A)},
+ {RUNE_C(0x0000AA), RUNE_C(0x0000AA)},
+ {RUNE_C(0x0000B5), RUNE_C(0x0000B5)},
+ {RUNE_C(0x0000BA), RUNE_C(0x0000BA)},
+ {RUNE_C(0x0000C0), RUNE_C(0x0000D6)},
+ {RUNE_C(0x0000D8), RUNE_C(0x0000F6)},
+ {RUNE_C(0x0000F8), 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)},
+};
+
+#define TYPE bool
+#define TABLE lookup_tbl
+#define DEFAULT false
+#define HAS_VALUE 0
+#include "internal/rtype/lookup-func.h"
+
+bool
+rprop_is_cased(rune ch)
+{
+ return
+#if BIT_LOOKUP
+ ch <= LATIN1_MAX ? (mask & (1 << ch)) :
+#endif
+ lookup(ch);
+}
diff --git a/vendor/librune/lib/rtype/rprop_is_ci.c b/vendor/librune/lib/rtype/rprop_is_ci.c
new file mode 100644
index 0000000..0409344
--- /dev/null
+++ b/vendor/librune/lib/rtype/rprop_is_ci.c
@@ -0,0 +1,471 @@
+/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */
+
+#include "rtype.h"
+#include "rune.h"
+
+#include "internal/common.h"
+
+/* clang-format off */
+
+#if BIT_LOOKUP
+static const unsigned _BitInt(LATIN1_MAX + 1) mask =
+ 0x00000000000000000190A1000000000000000001400000000400408000000000uwb;
+#endif
+
+static const struct {
+ rune lo, hi;
+} lookup_tbl[] = {
+ {RUNE_C(0x000027), RUNE_C(0x000027)},
+ {RUNE_C(0x00002E), RUNE_C(0x00002E)},
+ {RUNE_C(0x00003A), RUNE_C(0x00003A)},
+ {RUNE_C(0x00005E), RUNE_C(0x00005E)},
+ {RUNE_C(0x000060), RUNE_C(0x000060)},
+ {RUNE_C(0x0000A8), RUNE_C(0x0000A8)},
+ {RUNE_C(0x0000AD), RUNE_C(0x0000AD)},
+ {RUNE_C(0x0000AF), RUNE_C(0x0000AF)},
+ {RUNE_C(0x0000B4), RUNE_C(0x0000B4)},
+ {RUNE_C(0x0000B7), RUNE_C(0x0000B8)},
+ {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)},
+};
+
+#define TYPE bool
+#define TABLE lookup_tbl
+#define DEFAULT false
+#define HAS_VALUE 0
+#include "internal/rtype/lookup-func.h"
+
+bool
+rprop_is_ci(rune ch)
+{
+ return
+#if BIT_LOOKUP
+ ch <= LATIN1_MAX ? (mask & (1 << ch)) :
+#endif
+ lookup(ch);
+}
diff --git a/vendor/librune/lib/rtype/rprop_is_cwcf.c b/vendor/librune/lib/rtype/rprop_is_cwcf.c
new file mode 100644
index 0000000..e8456cc
--- /dev/null
+++ b/vendor/librune/lib/rtype/rprop_is_cwcf.c
@@ -0,0 +1,656 @@
+/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */
+
+#include "rtype.h"
+#include "rune.h"
+
+#include "internal/common.h"
+
+/* clang-format off */
+
+#if BIT_LOOKUP
+static const unsigned _BitInt(LATIN1_MAX + 1) mask =
+ 0x00000000FF7FFFFF00200000000000000000000007FFFFFE0000000000000000uwb;
+#endif
+
+static const struct {
+ rune lo, hi;
+} lookup_tbl[] = {
+ {RUNE_C(0x000041), RUNE_C(0x00005A)},
+ {RUNE_C(0x0000B5), RUNE_C(0x0000B5)},
+ {RUNE_C(0x0000C0), RUNE_C(0x0000D6)},
+ {RUNE_C(0x0000D8), RUNE_C(0x0000DF)},
+ {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)},
+};
+
+#define TYPE bool
+#define TABLE lookup_tbl
+#define DEFAULT false
+#define HAS_VALUE 0
+#include "internal/rtype/lookup-func.h"
+
+bool
+rprop_is_cwcf(rune ch)
+{
+ return
+#if BIT_LOOKUP
+ ch <= LATIN1_MAX ? (mask & (1 << ch)) :
+#endif
+ lookup(ch);
+}
diff --git a/vendor/librune/lib/rtype/rprop_is_cwcm.c b/vendor/librune/lib/rtype/rprop_is_cwcm.c
new file mode 100644
index 0000000..014b6c9
--- /dev/null
+++ b/vendor/librune/lib/rtype/rprop_is_cwcm.c
@@ -0,0 +1,165 @@
+/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */
+
+#include "rtype.h"
+#include "rune.h"
+
+#include "internal/common.h"
+
+/* clang-format off */
+
+#if BIT_LOOKUP
+static const unsigned _BitInt(LATIN1_MAX + 1) mask =
+ 0xFF7FFFFFFF7FFFFF002000000000000007FFFFFE07FFFFFE0000000000000000uwb;
+#endif
+
+static const struct {
+ rune lo, hi;
+} lookup_tbl[] = {
+ {RUNE_C(0x000041), RUNE_C(0x00005A)},
+ {RUNE_C(0x000061), RUNE_C(0x00007A)},
+ {RUNE_C(0x0000B5), RUNE_C(0x0000B5)},
+ {RUNE_C(0x0000C0), RUNE_C(0x0000D6)},
+ {RUNE_C(0x0000D8), RUNE_C(0x0000F6)},
+ {RUNE_C(0x0000F8), 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)},
+};
+
+#define TYPE bool
+#define TABLE lookup_tbl
+#define DEFAULT false
+#define HAS_VALUE 0
+#include "internal/rtype/lookup-func.h"
+
+bool
+rprop_is_cwcm(rune ch)
+{
+ return
+#if BIT_LOOKUP
+ ch <= LATIN1_MAX ? (mask & (1 << ch)) :
+#endif
+ lookup(ch);
+}
diff --git a/vendor/librune/lib/rtype/rprop_is_cwkcf.c b/vendor/librune/lib/rtype/rprop_is_cwkcf.c
new file mode 100644
index 0000000..81f45b4
--- /dev/null
+++ b/vendor/librune/lib/rtype/rprop_is_cwkcf.c
@@ -0,0 +1,873 @@
+/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */
+
+#include "rtype.h"
+#include "rune.h"
+
+#include "internal/common.h"
+
+/* clang-format off */
+
+#if BIT_LOOKUP
+static const unsigned _BitInt(LATIN1_MAX + 1) mask =
+ 0x00000000FF7FFFFF773CA501000000000000000007FFFFFE0000000000000000uwb;
+#endif
+
+static const struct {
+ rune lo, hi;
+} lookup_tbl[] = {
+ {RUNE_C(0x000041), RUNE_C(0x00005A)},
+ {RUNE_C(0x0000A0), RUNE_C(0x0000A0)},
+ {RUNE_C(0x0000A8), RUNE_C(0x0000A8)},
+ {RUNE_C(0x0000AA), RUNE_C(0x0000AA)},
+ {RUNE_C(0x0000AD), RUNE_C(0x0000AD)},
+ {RUNE_C(0x0000AF), RUNE_C(0x0000AF)},
+ {RUNE_C(0x0000B2), RUNE_C(0x0000B5)},
+ {RUNE_C(0x0000B8), RUNE_C(0x0000BA)},
+ {RUNE_C(0x0000BC), RUNE_C(0x0000BE)},
+ {RUNE_C(0x0000C0), RUNE_C(0x0000D6)},
+ {RUNE_C(0x0000D8), RUNE_C(0x0000DF)},
+ {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)},
+};
+
+#define TYPE bool
+#define TABLE lookup_tbl
+#define DEFAULT false
+#define HAS_VALUE 0
+#include "internal/rtype/lookup-func.h"
+
+bool
+rprop_is_cwkcf(rune ch)
+{
+ return
+#if BIT_LOOKUP
+ ch <= LATIN1_MAX ? (mask & (1 << ch)) :
+#endif
+ lookup(ch);
+}
diff --git a/vendor/librune/lib/rtype/rprop_is_cwl.c b/vendor/librune/lib/rtype/rprop_is_cwl.c
new file mode 100644
index 0000000..69ca252
--- /dev/null
+++ b/vendor/librune/lib/rtype/rprop_is_cwl.c
@@ -0,0 +1,643 @@
+/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */
+
+#include "rtype.h"
+#include "rune.h"
+
+#include "internal/common.h"
+
+/* clang-format off */
+
+#if BIT_LOOKUP
+static const unsigned _BitInt(LATIN1_MAX + 1) mask =
+ 0x000000007F7FFFFF00000000000000000000000007FFFFFE0000000000000000uwb;
+#endif
+
+static const struct {
+ rune lo, hi;
+} lookup_tbl[] = {
+ {RUNE_C(0x000041), RUNE_C(0x00005A)},
+ {RUNE_C(0x0000C0), RUNE_C(0x0000D6)},
+ {RUNE_C(0x0000D8), RUNE_C(0x0000DE)},
+ {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)},
+};
+
+#define TYPE bool
+#define TABLE lookup_tbl
+#define DEFAULT false
+#define HAS_VALUE 0
+#include "internal/rtype/lookup-func.h"
+
+bool
+rprop_is_cwl(rune ch)
+{
+ return
+#if BIT_LOOKUP
+ ch <= LATIN1_MAX ? (mask & (1 << ch)) :
+#endif
+ lookup(ch);
+}
diff --git a/vendor/librune/lib/rtype/rprop_is_cwt.c b/vendor/librune/lib/rtype/rprop_is_cwt.c
new file mode 100644
index 0000000..f206d0d
--- /dev/null
+++ b/vendor/librune/lib/rtype/rprop_is_cwt.c
@@ -0,0 +1,660 @@
+/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */
+
+#include "rtype.h"
+#include "rune.h"
+
+#include "internal/common.h"
+
+/* clang-format off */
+
+#if BIT_LOOKUP
+static const unsigned _BitInt(LATIN1_MAX + 1) mask =
+ 0xFF7FFFFF80000000002000000000000007FFFFFE000000000000000000000000uwb;
+#endif
+
+static const struct {
+ rune lo, hi;
+} lookup_tbl[] = {
+ {RUNE_C(0x000061), RUNE_C(0x00007A)},
+ {RUNE_C(0x0000B5), RUNE_C(0x0000B5)},
+ {RUNE_C(0x0000DF), RUNE_C(0x0000F6)},
+ {RUNE_C(0x0000F8), RUNE_C(0x0000FF)},
+ {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)},
+};
+
+#define TYPE bool
+#define TABLE lookup_tbl
+#define DEFAULT false
+#define HAS_VALUE 0
+#include "internal/rtype/lookup-func.h"
+
+bool
+rprop_is_cwt(rune ch)
+{
+ return
+#if BIT_LOOKUP
+ ch <= LATIN1_MAX ? (mask & (1 << ch)) :
+#endif
+ lookup(ch);
+}
diff --git a/vendor/librune/lib/rtype/rprop_is_cwu.c b/vendor/librune/lib/rtype/rprop_is_cwu.c
new file mode 100644
index 0000000..bb300ea
--- /dev/null
+++ b/vendor/librune/lib/rtype/rprop_is_cwu.c
@@ -0,0 +1,661 @@
+/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */
+
+#include "rtype.h"
+#include "rune.h"
+
+#include "internal/common.h"
+
+/* clang-format off */
+
+#if BIT_LOOKUP
+static const unsigned _BitInt(LATIN1_MAX + 1) mask =
+ 0xFF7FFFFF80000000002000000000000007FFFFFE000000000000000000000000uwb;
+#endif
+
+static const struct {
+ rune lo, hi;
+} lookup_tbl[] = {
+ {RUNE_C(0x000061), RUNE_C(0x00007A)},
+ {RUNE_C(0x0000B5), RUNE_C(0x0000B5)},
+ {RUNE_C(0x0000DF), RUNE_C(0x0000F6)},
+ {RUNE_C(0x0000F8), RUNE_C(0x0000FF)},
+ {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)},
+};
+
+#define TYPE bool
+#define TABLE lookup_tbl
+#define DEFAULT false
+#define HAS_VALUE 0
+#include "internal/rtype/lookup-func.h"
+
+bool
+rprop_is_cwu(rune ch)
+{
+ return
+#if BIT_LOOKUP
+ ch <= LATIN1_MAX ? (mask & (1 << ch)) :
+#endif
+ lookup(ch);
+}
diff --git a/vendor/librune/lib/rtype/rprop_is_dash.c b/vendor/librune/lib/rtype/rprop_is_dash.c
new file mode 100644
index 0000000..8d54c71
--- /dev/null
+++ b/vendor/librune/lib/rtype/rprop_is_dash.c
@@ -0,0 +1,57 @@
+/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */
+
+#include "rtype.h"
+#include "rune.h"
+
+#include "internal/common.h"
+
+/* clang-format off */
+
+#if BIT_LOOKUP
+static const unsigned _BitInt(LATIN1_MAX + 1) mask =
+ 0x0000000000000000000000000000000000000000000000000000200000000000uwb;
+#endif
+
+static const struct {
+ rune lo, hi;
+} lookup_tbl[] = {
+ {RUNE_C(0x00002D), RUNE_C(0x00002D)},
+ {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)},
+};
+
+#define TYPE bool
+#define TABLE lookup_tbl
+#define DEFAULT false
+#define HAS_VALUE 0
+#include "internal/rtype/lookup-func.h"
+
+bool
+rprop_is_dash(rune ch)
+{
+ return
+#if BIT_LOOKUP
+ ch <= LATIN1_MAX ? (mask & (1 << ch)) :
+#endif
+ lookup(ch);
+}
diff --git a/vendor/librune/lib/rtype/rprop_is_dep.c b/vendor/librune/lib/rtype/rprop_is_dep.c
new file mode 100644
index 0000000..085d074
--- /dev/null
+++ b/vendor/librune/lib/rtype/rprop_is_dep.c
@@ -0,0 +1,33 @@
+/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */
+
+#include "rtype.h"
+#include "rune.h"
+
+#include "internal/common.h"
+
+/* clang-format off */
+
+static const struct {
+ rune lo, hi;
+} lookup_tbl[] = {
+ {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)},
+};
+
+#define TYPE bool
+#define TABLE lookup_tbl
+#define DEFAULT false
+#define HAS_VALUE 0
+#include "internal/rtype/lookup-func.h"
+
+bool
+rprop_is_dep(rune ch)
+{
+ return lookup(ch);
+}
diff --git a/vendor/librune/lib/rtype/rprop_is_di.c b/vendor/librune/lib/rtype/rprop_is_di.c
new file mode 100644
index 0000000..2924e9b
--- /dev/null
+++ b/vendor/librune/lib/rtype/rprop_is_di.c
@@ -0,0 +1,51 @@
+/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */
+
+#include "rtype.h"
+#include "rune.h"
+
+#include "internal/common.h"
+
+/* clang-format off */
+
+#if BIT_LOOKUP
+static const unsigned _BitInt(LATIN1_MAX + 1) mask =
+ 0x0000000000000000000020000000000000000000000000000000000000000000uwb;
+#endif
+
+static const struct {
+ rune lo, hi;
+} lookup_tbl[] = {
+ {RUNE_C(0x0000AD), RUNE_C(0x0000AD)},
+ {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)},
+};
+
+#define TYPE bool
+#define TABLE lookup_tbl
+#define DEFAULT false
+#define HAS_VALUE 0
+#include "internal/rtype/lookup-func.h"
+
+bool
+rprop_is_di(rune ch)
+{
+ return
+#if BIT_LOOKUP
+ ch <= LATIN1_MAX ? (mask & (1 << ch)) :
+#endif
+ lookup(ch);
+}
diff --git a/vendor/librune/lib/rtype/rprop_is_dia.c b/vendor/librune/lib/rtype/rprop_is_dia.c
new file mode 100644
index 0000000..28bf280
--- /dev/null
+++ b/vendor/librune/lib/rtype/rprop_is_dia.c
@@ -0,0 +1,229 @@
+/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */
+
+#include "rtype.h"
+#include "rune.h"
+
+#include "internal/common.h"
+
+/* clang-format off */
+
+#if BIT_LOOKUP
+static const unsigned _BitInt(LATIN1_MAX + 1) mask =
+ 0x0000000000000000019081000000000000000001400000000000000000000000uwb;
+#endif
+
+static const struct {
+ rune lo, hi;
+} lookup_tbl[] = {
+ {RUNE_C(0x00005E), RUNE_C(0x00005E)},
+ {RUNE_C(0x000060), RUNE_C(0x000060)},
+ {RUNE_C(0x0000A8), RUNE_C(0x0000A8)},
+ {RUNE_C(0x0000AF), RUNE_C(0x0000AF)},
+ {RUNE_C(0x0000B4), RUNE_C(0x0000B4)},
+ {RUNE_C(0x0000B7), RUNE_C(0x0000B8)},
+ {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)},
+};
+
+#define TYPE bool
+#define TABLE lookup_tbl
+#define DEFAULT false
+#define HAS_VALUE 0
+#include "internal/rtype/lookup-func.h"
+
+bool
+rprop_is_dia(rune ch)
+{
+ return
+#if BIT_LOOKUP
+ ch <= LATIN1_MAX ? (mask & (1 << ch)) :
+#endif
+ lookup(ch);
+}
diff --git a/vendor/librune/lib/rtype/rprop_is_ebase.c b/vendor/librune/lib/rtype/rprop_is_ebase.c
new file mode 100644
index 0000000..aaf5014
--- /dev/null
+++ b/vendor/librune/lib/rtype/rprop_is_ebase.c
@@ -0,0 +1,65 @@
+/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */
+
+#include "rtype.h"
+#include "rune.h"
+
+#include "internal/common.h"
+
+/* clang-format off */
+
+static const struct {
+ rune lo, hi;
+} lookup_tbl[] = {
+ {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)},
+};
+
+#define TYPE bool
+#define TABLE lookup_tbl
+#define DEFAULT false
+#define HAS_VALUE 0
+#include "internal/rtype/lookup-func.h"
+
+bool
+rprop_is_ebase(rune ch)
+{
+ return lookup(ch);
+}
diff --git a/vendor/librune/lib/rtype/rprop_is_ecomp.c b/vendor/librune/lib/rtype/rprop_is_ecomp.c
new file mode 100644
index 0000000..330ef78
--- /dev/null
+++ b/vendor/librune/lib/rtype/rprop_is_ecomp.c
@@ -0,0 +1,44 @@
+/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */
+
+#include "rtype.h"
+#include "rune.h"
+
+#include "internal/common.h"
+
+/* clang-format off */
+
+#if BIT_LOOKUP
+static const unsigned _BitInt(LATIN1_MAX + 1) mask =
+ 0x00000000000000000000000000000000000000000000000003FF040800000000uwb;
+#endif
+
+static const struct {
+ rune lo, hi;
+} lookup_tbl[] = {
+ {RUNE_C(0x000023), RUNE_C(0x000023)},
+ {RUNE_C(0x00002A), RUNE_C(0x00002A)},
+ {RUNE_C(0x000030), RUNE_C(0x000039)},
+ {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)},
+};
+
+#define TYPE bool
+#define TABLE lookup_tbl
+#define DEFAULT false
+#define HAS_VALUE 0
+#include "internal/rtype/lookup-func.h"
+
+bool
+rprop_is_ecomp(rune ch)
+{
+ return
+#if BIT_LOOKUP
+ ch <= LATIN1_MAX ? (mask & (1 << ch)) :
+#endif
+ lookup(ch);
+}
diff --git a/vendor/librune/lib/rtype/rprop_is_emod.c b/vendor/librune/lib/rtype/rprop_is_emod.c
new file mode 100644
index 0000000..52ab5c8
--- /dev/null
+++ b/vendor/librune/lib/rtype/rprop_is_emod.c
@@ -0,0 +1,26 @@
+/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */
+
+#include "rtype.h"
+#include "rune.h"
+
+#include "internal/common.h"
+
+/* clang-format off */
+
+static const struct {
+ rune lo, hi;
+} lookup_tbl[] = {
+ {RUNE_C(0x01F3FB), RUNE_C(0x01F3FF)},
+};
+
+#define TYPE bool
+#define TABLE lookup_tbl
+#define DEFAULT false
+#define HAS_VALUE 0
+#include "internal/rtype/lookup-func.h"
+
+bool
+rprop_is_emod(rune ch)
+{
+ return lookup(ch);
+}
diff --git a/vendor/librune/lib/rtype/rprop_is_emoji.c b/vendor/librune/lib/rtype/rprop_is_emoji.c
new file mode 100644
index 0000000..c28d57b
--- /dev/null
+++ b/vendor/librune/lib/rtype/rprop_is_emoji.c
@@ -0,0 +1,185 @@
+/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */
+
+#include "rtype.h"
+#include "rune.h"
+
+#include "internal/common.h"
+
+/* clang-format off */
+
+#if BIT_LOOKUP
+static const unsigned _BitInt(LATIN1_MAX + 1) mask =
+ 0x00000000000000000000420000000000000000000000000003FF040800000000uwb;
+#endif
+
+static const struct {
+ rune lo, hi;
+} lookup_tbl[] = {
+ {RUNE_C(0x000023), RUNE_C(0x000023)},
+ {RUNE_C(0x00002A), RUNE_C(0x00002A)},
+ {RUNE_C(0x000030), RUNE_C(0x000039)},
+ {RUNE_C(0x0000A9), RUNE_C(0x0000A9)},
+ {RUNE_C(0x0000AE), RUNE_C(0x0000AE)},
+ {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)},
+};
+
+#define TYPE bool
+#define TABLE lookup_tbl
+#define DEFAULT false
+#define HAS_VALUE 0
+#include "internal/rtype/lookup-func.h"
+
+bool
+rprop_is_emoji(rune ch)
+{
+ return
+#if BIT_LOOKUP
+ ch <= LATIN1_MAX ? (mask & (1 << ch)) :
+#endif
+ lookup(ch);
+}
diff --git a/vendor/librune/lib/rtype/rprop_is_epres.c b/vendor/librune/lib/rtype/rprop_is_epres.c
new file mode 100644
index 0000000..9de53d6
--- /dev/null
+++ b/vendor/librune/lib/rtype/rprop_is_epres.c
@@ -0,0 +1,106 @@
+/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */
+
+#include "rtype.h"
+#include "rune.h"
+
+#include "internal/common.h"
+
+/* clang-format off */
+
+static const struct {
+ rune lo, hi;
+} lookup_tbl[] = {
+ {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)},
+};
+
+#define TYPE bool
+#define TABLE lookup_tbl
+#define DEFAULT false
+#define HAS_VALUE 0
+#include "internal/rtype/lookup-func.h"
+
+bool
+rprop_is_epres(rune ch)
+{
+ return lookup(ch);
+}
diff --git a/vendor/librune/lib/rtype/rprop_is_ext.c b/vendor/librune/lib/rtype/rprop_is_ext.c
new file mode 100644
index 0000000..850cde4
--- /dev/null
+++ b/vendor/librune/lib/rtype/rprop_is_ext.c
@@ -0,0 +1,67 @@
+/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */
+
+#include "rtype.h"
+#include "rune.h"
+
+#include "internal/common.h"
+
+/* clang-format off */
+
+#if BIT_LOOKUP
+static const unsigned _BitInt(LATIN1_MAX + 1) mask =
+ 0x0000000000000000008000000000000000000000000000000000000000000000uwb;
+#endif
+
+static const struct {
+ rune lo, hi;
+} lookup_tbl[] = {
+ {RUNE_C(0x0000B7), RUNE_C(0x0000B7)},
+ {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)},
+};
+
+#define TYPE bool
+#define TABLE lookup_tbl
+#define DEFAULT false
+#define HAS_VALUE 0
+#include "internal/rtype/lookup-func.h"
+
+bool
+rprop_is_ext(rune ch)
+{
+ return
+#if BIT_LOOKUP
+ ch <= LATIN1_MAX ? (mask & (1 << ch)) :
+#endif
+ lookup(ch);
+}
diff --git a/vendor/librune/lib/rtype/rprop_is_extpic.c b/vendor/librune/lib/rtype/rprop_is_extpic.c
new file mode 100644
index 0000000..69d2990
--- /dev/null
+++ b/vendor/librune/lib/rtype/rprop_is_extpic.c
@@ -0,0 +1,112 @@
+/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */
+
+#include "rtype.h"
+#include "rune.h"
+
+#include "internal/common.h"
+
+/* clang-format off */
+
+#if BIT_LOOKUP
+static const unsigned _BitInt(LATIN1_MAX + 1) mask =
+ 0x0000000000000000000042000000000000000000000000000000000000000000uwb;
+#endif
+
+static const struct {
+ rune lo, hi;
+} lookup_tbl[] = {
+ {RUNE_C(0x0000A9), RUNE_C(0x0000A9)},
+ {RUNE_C(0x0000AE), RUNE_C(0x0000AE)},
+ {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)},
+};
+
+#define TYPE bool
+#define TABLE lookup_tbl
+#define DEFAULT false
+#define HAS_VALUE 0
+#include "internal/rtype/lookup-func.h"
+
+bool
+rprop_is_extpic(rune ch)
+{
+ return
+#if BIT_LOOKUP
+ ch <= LATIN1_MAX ? (mask & (1 << ch)) :
+#endif
+ lookup(ch);
+}
diff --git a/vendor/librune/lib/rtype/rprop_is_gr_base.c b/vendor/librune/lib/rtype/rprop_is_gr_base.c
new file mode 100644
index 0000000..07a4c80
--- /dev/null
+++ b/vendor/librune/lib/rtype/rprop_is_gr_base.c
@@ -0,0 +1,909 @@
+/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */
+
+#include "rtype.h"
+#include "rune.h"
+
+#include "internal/common.h"
+
+/* clang-format off */
+
+#if BIT_LOOKUP
+static const unsigned _BitInt(LATIN1_MAX + 1) mask =
+ 0xFFFFFFFFFFFFFFFFFFFFDFFF000000007FFFFFFFFFFFFFFFFFFFFFFF00000000uwb;
+#endif
+
+static const struct {
+ rune lo, hi;
+} lookup_tbl[] = {
+ {RUNE_C(0x000020), RUNE_C(0x00007E)},
+ {RUNE_C(0x0000A0), RUNE_C(0x0000AC)},
+ {RUNE_C(0x0000AE), 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)},
+};
+
+#define TYPE bool
+#define TABLE lookup_tbl
+#define DEFAULT false
+#define HAS_VALUE 0
+#include "internal/rtype/lookup-func.h"
+
+bool
+rprop_is_gr_base(rune ch)
+{
+ return
+#if BIT_LOOKUP
+ ch <= LATIN1_MAX ? (mask & (1 << ch)) :
+#endif
+ lookup(ch);
+}
diff --git a/vendor/librune/lib/rtype/rprop_is_gr_ext.c b/vendor/librune/lib/rtype/rprop_is_gr_ext.c
new file mode 100644
index 0000000..351cf4d
--- /dev/null
+++ b/vendor/librune/lib/rtype/rprop_is_gr_ext.c
@@ -0,0 +1,388 @@
+/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */
+
+#include "rtype.h"
+#include "rune.h"
+
+#include "internal/common.h"
+
+/* clang-format off */
+
+static const struct {
+ rune lo, hi;
+} lookup_tbl[] = {
+ {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)},
+};
+
+#define TYPE bool
+#define TABLE lookup_tbl
+#define DEFAULT false
+#define HAS_VALUE 0
+#include "internal/rtype/lookup-func.h"
+
+bool
+rprop_is_gr_ext(rune ch)
+{
+ return lookup(ch);
+}
diff --git a/vendor/librune/lib/rtype/rprop_is_hex.c b/vendor/librune/lib/rtype/rprop_is_hex.c
new file mode 100644
index 0000000..8d26415
--- /dev/null
+++ b/vendor/librune/lib/rtype/rprop_is_hex.c
@@ -0,0 +1,40 @@
+/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */
+
+#include "rtype.h"
+#include "rune.h"
+
+#include "internal/common.h"
+
+/* clang-format off */
+
+#if BIT_LOOKUP
+static const unsigned _BitInt(LATIN1_MAX + 1) mask =
+ 0x000000000000000000000000000000000000007E0000007E03FF000000000000uwb;
+#endif
+
+static const struct {
+ rune lo, hi;
+} lookup_tbl[] = {
+ {RUNE_C(0x000030), RUNE_C(0x000039)},
+ {RUNE_C(0x000041), RUNE_C(0x000046)},
+ {RUNE_C(0x000061), RUNE_C(0x000066)},
+ {RUNE_C(0x00FF10), RUNE_C(0x00FF19)},
+ {RUNE_C(0x00FF21), RUNE_C(0x00FF26)},
+ {RUNE_C(0x00FF41), RUNE_C(0x00FF46)},
+};
+
+#define TYPE bool
+#define TABLE lookup_tbl
+#define DEFAULT false
+#define HAS_VALUE 0
+#include "internal/rtype/lookup-func.h"
+
+bool
+rprop_is_hex(rune ch)
+{
+ return
+#if BIT_LOOKUP
+ ch <= LATIN1_MAX ? (mask & (1 << ch)) :
+#endif
+ lookup(ch);
+}
diff --git a/vendor/librune/lib/rtype/rprop_is_id_compat_math_continue.c b/vendor/librune/lib/rtype/rprop_is_id_compat_math_continue.c
new file mode 100644
index 0000000..43e9786
--- /dev/null
+++ b/vendor/librune/lib/rtype/rprop_is_id_compat_math_continue.c
@@ -0,0 +1,52 @@
+/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */
+
+#include "rtype.h"
+#include "rune.h"
+
+#include "internal/common.h"
+
+/* clang-format off */
+
+#if BIT_LOOKUP
+static const unsigned _BitInt(LATIN1_MAX + 1) mask =
+ 0x0000000000000000020C00000000000000000000000000000000000000000000uwb;
+#endif
+
+static const struct {
+ rune lo, hi;
+} lookup_tbl[] = {
+ {RUNE_C(0x0000B2), RUNE_C(0x0000B3)},
+ {RUNE_C(0x0000B9), RUNE_C(0x0000B9)},
+ {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)},
+};
+
+#define TYPE bool
+#define TABLE lookup_tbl
+#define DEFAULT false
+#define HAS_VALUE 0
+#include "internal/rtype/lookup-func.h"
+
+bool
+rprop_is_id_compat_math_continue(rune ch)
+{
+ return
+#if BIT_LOOKUP
+ ch <= LATIN1_MAX ? (mask & (1 << ch)) :
+#endif
+ lookup(ch);
+}
diff --git a/vendor/librune/lib/rtype/rprop_is_id_compat_math_start.c b/vendor/librune/lib/rtype/rprop_is_id_compat_math_start.c
new file mode 100644
index 0000000..458f99b
--- /dev/null
+++ b/vendor/librune/lib/rtype/rprop_is_id_compat_math_start.c
@@ -0,0 +1,38 @@
+/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */
+
+#include "rtype.h"
+#include "rune.h"
+
+#include "internal/common.h"
+
+/* clang-format off */
+
+static const struct {
+ rune lo, hi;
+} lookup_tbl[] = {
+ {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)},
+};
+
+#define TYPE bool
+#define TABLE lookup_tbl
+#define DEFAULT false
+#define HAS_VALUE 0
+#include "internal/rtype/lookup-func.h"
+
+bool
+rprop_is_id_compat_math_start(rune ch)
+{
+ return lookup(ch);
+}
diff --git a/vendor/librune/lib/rtype/rprop_is_idbo.c b/vendor/librune/lib/rtype/rprop_is_idbo.c
new file mode 100644
index 0000000..3a4c3f4
--- /dev/null
+++ b/vendor/librune/lib/rtype/rprop_is_idbo.c
@@ -0,0 +1,28 @@
+/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */
+
+#include "rtype.h"
+#include "rune.h"
+
+#include "internal/common.h"
+
+/* clang-format off */
+
+static const struct {
+ rune lo, hi;
+} lookup_tbl[] = {
+ {RUNE_C(0x002FF0), RUNE_C(0x002FF1)},
+ {RUNE_C(0x002FF4), RUNE_C(0x002FFD)},
+ {RUNE_C(0x0031EF), RUNE_C(0x0031EF)},
+};
+
+#define TYPE bool
+#define TABLE lookup_tbl
+#define DEFAULT false
+#define HAS_VALUE 0
+#include "internal/rtype/lookup-func.h"
+
+bool
+rprop_is_idbo(rune ch)
+{
+ return lookup(ch);
+}
diff --git a/vendor/librune/lib/rtype/rprop_is_idc.c b/vendor/librune/lib/rtype/rprop_is_idc.c
new file mode 100644
index 0000000..1a8eeba
--- /dev/null
+++ b/vendor/librune/lib/rtype/rprop_is_idc.c
@@ -0,0 +1,803 @@
+/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */
+
+#include "rtype.h"
+#include "rune.h"
+
+#include "internal/common.h"
+
+/* clang-format off */
+
+#if BIT_LOOKUP
+static const unsigned _BitInt(LATIN1_MAX + 1) mask =
+ 0xFF7FFFFFFF7FFFFF04A004000000000007FFFFFE87FFFFFE03FF000000000000uwb;
+#endif
+
+static const struct {
+ rune lo, hi;
+} lookup_tbl[] = {
+ {RUNE_C(0x000030), RUNE_C(0x000039)},
+ {RUNE_C(0x000041), RUNE_C(0x00005A)},
+ {RUNE_C(0x00005F), RUNE_C(0x00005F)},
+ {RUNE_C(0x000061), RUNE_C(0x00007A)},
+ {RUNE_C(0x0000AA), RUNE_C(0x0000AA)},
+ {RUNE_C(0x0000B5), RUNE_C(0x0000B5)},
+ {RUNE_C(0x0000B7), RUNE_C(0x0000B7)},
+ {RUNE_C(0x0000BA), RUNE_C(0x0000BA)},
+ {RUNE_C(0x0000C0), RUNE_C(0x0000D6)},
+ {RUNE_C(0x0000D8), RUNE_C(0x0000F6)},
+ {RUNE_C(0x0000F8), 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)},
+};
+
+#define TYPE bool
+#define TABLE lookup_tbl
+#define DEFAULT false
+#define HAS_VALUE 0
+#include "internal/rtype/lookup-func.h"
+
+bool
+rprop_is_idc(rune ch)
+{
+ return
+#if BIT_LOOKUP
+ ch <= LATIN1_MAX ? (mask & (1 << ch)) :
+#endif
+ lookup(ch);
+}
diff --git a/vendor/librune/lib/rtype/rprop_is_ideo.c b/vendor/librune/lib/rtype/rprop_is_ideo.c
new file mode 100644
index 0000000..bda0552
--- /dev/null
+++ b/vendor/librune/lib/rtype/rprop_is_ideo.c
@@ -0,0 +1,46 @@
+/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */
+
+#include "rtype.h"
+#include "rune.h"
+
+#include "internal/common.h"
+
+/* clang-format off */
+
+static const struct {
+ rune lo, hi;
+} lookup_tbl[] = {
+ {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)},
+};
+
+#define TYPE bool
+#define TABLE lookup_tbl
+#define DEFAULT false
+#define HAS_VALUE 0
+#include "internal/rtype/lookup-func.h"
+
+bool
+rprop_is_ideo(rune ch)
+{
+ return lookup(ch);
+}
diff --git a/vendor/librune/lib/rtype/rprop_is_ids.c b/vendor/librune/lib/rtype/rprop_is_ids.c
new file mode 100644
index 0000000..5c30308
--- /dev/null
+++ b/vendor/librune/lib/rtype/rprop_is_ids.c
@@ -0,0 +1,694 @@
+/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */
+
+#include "rtype.h"
+#include "rune.h"
+
+#include "internal/common.h"
+
+/* clang-format off */
+
+#if BIT_LOOKUP
+static const unsigned _BitInt(LATIN1_MAX + 1) mask =
+ 0xFF7FFFFFFF7FFFFF042004000000000007FFFFFE07FFFFFE0000000000000000uwb;
+#endif
+
+static const struct {
+ rune lo, hi;
+} lookup_tbl[] = {
+ {RUNE_C(0x000041), RUNE_C(0x00005A)},
+ {RUNE_C(0x000061), RUNE_C(0x00007A)},
+ {RUNE_C(0x0000AA), RUNE_C(0x0000AA)},
+ {RUNE_C(0x0000B5), RUNE_C(0x0000B5)},
+ {RUNE_C(0x0000BA), RUNE_C(0x0000BA)},
+ {RUNE_C(0x0000C0), RUNE_C(0x0000D6)},
+ {RUNE_C(0x0000D8), RUNE_C(0x0000F6)},
+ {RUNE_C(0x0000F8), 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)},
+};
+
+#define TYPE bool
+#define TABLE lookup_tbl
+#define DEFAULT false
+#define HAS_VALUE 0
+#include "internal/rtype/lookup-func.h"
+
+bool
+rprop_is_ids(rune ch)
+{
+ return
+#if BIT_LOOKUP
+ ch <= LATIN1_MAX ? (mask & (1 << ch)) :
+#endif
+ lookup(ch);
+}
diff --git a/vendor/librune/lib/rtype/rprop_is_idst.c b/vendor/librune/lib/rtype/rprop_is_idst.c
new file mode 100644
index 0000000..1228d3f
--- /dev/null
+++ b/vendor/librune/lib/rtype/rprop_is_idst.c
@@ -0,0 +1,8 @@
+#include "rtype.h"
+#include "rune.h"
+
+bool
+rprop_is_idst(rune ch)
+{
+ return ch == RUNE_C(0x2FF2) || ch == RUNE_C(0x2FF3);
+}
diff --git a/vendor/librune/lib/rtype/rprop_is_idsu.c b/vendor/librune/lib/rtype/rprop_is_idsu.c
new file mode 100644
index 0000000..db454d9
--- /dev/null
+++ b/vendor/librune/lib/rtype/rprop_is_idsu.c
@@ -0,0 +1,8 @@
+#include "rtype.h"
+#include "rune.h"
+
+bool
+rprop_is_idsu(rune ch)
+{
+ return ch == RUNE_C(0x2FFE) || ch == RUNE_C(0x2FFF);
+}
diff --git a/vendor/librune/lib/rtype/rprop_is_incb.c b/vendor/librune/lib/rtype/rprop_is_incb.c
new file mode 100644
index 0000000..93e3b6e
--- /dev/null
+++ b/vendor/librune/lib/rtype/rprop_is_incb.c
@@ -0,0 +1,225 @@
+/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */
+
+#include "rtype.h"
+#include "rune.h"
+
+#include "internal/common.h"
+
+/* clang-format off */
+
+static const struct {
+ rune lo, hi;
+} lookup_tbl[] = {
+ {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)},
+};
+
+#define TYPE bool
+#define TABLE lookup_tbl
+#define DEFAULT false
+#define HAS_VALUE 0
+#include "internal/rtype/lookup-func.h"
+
+bool
+rprop_is_incb(rune ch)
+{
+ return lookup(ch);
+}
diff --git a/vendor/librune/lib/rtype/rprop_is_join_c.c b/vendor/librune/lib/rtype/rprop_is_join_c.c
new file mode 100644
index 0000000..1b811a8
--- /dev/null
+++ b/vendor/librune/lib/rtype/rprop_is_join_c.c
@@ -0,0 +1,8 @@
+#include "rtype.h"
+#include "rune.h"
+
+bool
+rprop_is_join_c(rune ch)
+{
+ return ch == RUNE_C(0x200C) || ch == RUNE_C(0x200D);
+}
diff --git a/vendor/librune/lib/rtype/rprop_is_loe.c b/vendor/librune/lib/rtype/rprop_is_loe.c
new file mode 100644
index 0000000..41549a6
--- /dev/null
+++ b/vendor/librune/lib/rtype/rprop_is_loe.c
@@ -0,0 +1,32 @@
+/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */
+
+#include "rtype.h"
+#include "rune.h"
+
+#include "internal/common.h"
+
+/* clang-format off */
+
+static const struct {
+ rune lo, hi;
+} lookup_tbl[] = {
+ {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)},
+};
+
+#define TYPE bool
+#define TABLE lookup_tbl
+#define DEFAULT false
+#define HAS_VALUE 0
+#include "internal/rtype/lookup-func.h"
+
+bool
+rprop_is_loe(rune ch)
+{
+ return lookup(ch);
+}
diff --git a/vendor/librune/lib/rtype/rprop_is_lower.c b/vendor/librune/lib/rtype/rprop_is_lower.c
new file mode 100644
index 0000000..cc21422
--- /dev/null
+++ b/vendor/librune/lib/rtype/rprop_is_lower.c
@@ -0,0 +1,705 @@
+/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */
+
+#include "rtype.h"
+#include "rune.h"
+
+#include "internal/common.h"
+
+/* clang-format off */
+
+#if BIT_LOOKUP
+static const unsigned _BitInt(LATIN1_MAX + 1) mask =
+ 0xFF7FFFFF80000000042004000000000007FFFFFE000000000000000000000000uwb;
+#endif
+
+static const struct {
+ rune lo, hi;
+} lookup_tbl[] = {
+ {RUNE_C(0x000061), RUNE_C(0x00007A)},
+ {RUNE_C(0x0000AA), RUNE_C(0x0000AA)},
+ {RUNE_C(0x0000B5), RUNE_C(0x0000B5)},
+ {RUNE_C(0x0000BA), RUNE_C(0x0000BA)},
+ {RUNE_C(0x0000DF), RUNE_C(0x0000F6)},
+ {RUNE_C(0x0000F8), RUNE_C(0x0000FF)},
+ {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)},
+};
+
+#define TYPE bool
+#define TABLE lookup_tbl
+#define DEFAULT false
+#define HAS_VALUE 0
+#include "internal/rtype/lookup-func.h"
+
+bool
+rprop_is_lower(rune ch)
+{
+ return
+#if BIT_LOOKUP
+ ch <= LATIN1_MAX ? (mask & (1 << ch)) :
+#endif
+ lookup(ch);
+}
diff --git a/vendor/librune/lib/rtype/rprop_is_math.c b/vendor/librune/lib/rtype/rprop_is_math.c
new file mode 100644
index 0000000..a1e502e
--- /dev/null
+++ b/vendor/librune/lib/rtype/rprop_is_math.c
@@ -0,0 +1,172 @@
+/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */
+
+#include "rtype.h"
+#include "rune.h"
+
+#include "internal/common.h"
+
+/* clang-format off */
+
+#if BIT_LOOKUP
+static const unsigned _BitInt(LATIN1_MAX + 1) mask =
+ 0x0080000000800000000210000000000050000000400000007000080000000000uwb;
+#endif
+
+static const struct {
+ rune lo, hi;
+} lookup_tbl[] = {
+ {RUNE_C(0x00002B), RUNE_C(0x00002B)},
+ {RUNE_C(0x00003C), RUNE_C(0x00003E)},
+ {RUNE_C(0x00005E), RUNE_C(0x00005E)},
+ {RUNE_C(0x00007C), RUNE_C(0x00007C)},
+ {RUNE_C(0x00007E), RUNE_C(0x00007E)},
+ {RUNE_C(0x0000AC), RUNE_C(0x0000AC)},
+ {RUNE_C(0x0000B1), RUNE_C(0x0000B1)},
+ {RUNE_C(0x0000D7), RUNE_C(0x0000D7)},
+ {RUNE_C(0x0000F7), RUNE_C(0x0000F7)},
+ {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)},
+};
+
+#define TYPE bool
+#define TABLE lookup_tbl
+#define DEFAULT false
+#define HAS_VALUE 0
+#include "internal/rtype/lookup-func.h"
+
+bool
+rprop_is_math(rune ch)
+{
+ return
+#if BIT_LOOKUP
+ ch <= LATIN1_MAX ? (mask & (1 << ch)) :
+#endif
+ lookup(ch);
+}
diff --git a/vendor/librune/lib/rtype/rprop_is_nchar.c b/vendor/librune/lib/rtype/rprop_is_nchar.c
new file mode 100644
index 0000000..3a6b324
--- /dev/null
+++ b/vendor/librune/lib/rtype/rprop_is_nchar.c
@@ -0,0 +1,10 @@
+#include "rtype.h"
+#include "rune.h"
+
+bool
+rprop_is_nchar(rune ch)
+{
+ return (ch >= RUNE_C(0xFDD0) && ch <= RUNE_C(0xFDEF))
+ || ((ch & RUNE_C(0xFFFE)) == RUNE_C(0xFFFE)
+ && (ch & RUNE_C(0xFF0000)) <= RUNE_C(0x0F0000));
+}
diff --git a/vendor/librune/lib/rtype/rprop_is_pat_syn.c b/vendor/librune/lib/rtype/rprop_is_pat_syn.c
new file mode 100644
index 0000000..37f7383
--- /dev/null
+++ b/vendor/librune/lib/rtype/rprop_is_pat_syn.c
@@ -0,0 +1,62 @@
+/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */
+
+#include "rtype.h"
+#include "rune.h"
+
+#include "internal/common.h"
+
+/* clang-format off */
+
+#if BIT_LOOKUP
+static const unsigned _BitInt(LATIN1_MAX + 1) mask =
+ 0x008000000080000088435AFE000000007800000178000001FC00FFFE00000000uwb;
+#endif
+
+static const struct {
+ rune lo, hi;
+} lookup_tbl[] = {
+ {RUNE_C(0x000021), RUNE_C(0x00002F)},
+ {RUNE_C(0x00003A), RUNE_C(0x000040)},
+ {RUNE_C(0x00005B), RUNE_C(0x00005E)},
+ {RUNE_C(0x000060), RUNE_C(0x000060)},
+ {RUNE_C(0x00007B), RUNE_C(0x00007E)},
+ {RUNE_C(0x0000A1), RUNE_C(0x0000A7)},
+ {RUNE_C(0x0000A9), RUNE_C(0x0000A9)},
+ {RUNE_C(0x0000AB), RUNE_C(0x0000AC)},
+ {RUNE_C(0x0000AE), RUNE_C(0x0000AE)},
+ {RUNE_C(0x0000B0), RUNE_C(0x0000B1)},
+ {RUNE_C(0x0000B6), RUNE_C(0x0000B6)},
+ {RUNE_C(0x0000BB), RUNE_C(0x0000BB)},
+ {RUNE_C(0x0000BF), RUNE_C(0x0000BF)},
+ {RUNE_C(0x0000D7), RUNE_C(0x0000D7)},
+ {RUNE_C(0x0000F7), RUNE_C(0x0000F7)},
+ {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)},
+};
+
+#define TYPE bool
+#define TABLE lookup_tbl
+#define DEFAULT false
+#define HAS_VALUE 0
+#include "internal/rtype/lookup-func.h"
+
+bool
+rprop_is_pat_syn(rune ch)
+{
+ return
+#if BIT_LOOKUP
+ ch <= LATIN1_MAX ? (mask & (1 << ch)) :
+#endif
+ lookup(ch);
+}
diff --git a/vendor/librune/lib/rtype/rprop_is_pat_ws.c b/vendor/librune/lib/rtype/rprop_is_pat_ws.c
new file mode 100644
index 0000000..836d0e9
--- /dev/null
+++ b/vendor/librune/lib/rtype/rprop_is_pat_ws.c
@@ -0,0 +1,25 @@
+#include <assert.h>
+
+#include "rtype.h"
+#include "rune.h"
+
+#include "internal/common.h"
+
+static const rune patws[] = {
+ RUNE_C(0x0009), RUNE_C(0x000A), RUNE_C(0x000B), RUNE_C(0x000C),
+ RUNE_C(0x000D), RUNE_C(0x0020), RUNE_C(0x0085), RUNE_C(0x200E),
+ RUNE_C(0x200F), RUNE_C(0x2028), RUNE_C(0x2029),
+};
+
+static_assert(lengthof(patws) == 11, "Unroll pragma needs updating");
+
+bool
+rprop_is_pat_ws(rune ch)
+{
+#pragma GCC unroll 11
+ for (size_t i = 0; i < lengthof(patws); i++) {
+ if (patws[i] == ch)
+ return true;
+ }
+ return false;
+}
diff --git a/vendor/librune/lib/rtype/rprop_is_pcm.c b/vendor/librune/lib/rtype/rprop_is_pcm.c
new file mode 100644
index 0000000..9d4d714
--- /dev/null
+++ b/vendor/librune/lib/rtype/rprop_is_pcm.c
@@ -0,0 +1,32 @@
+/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */
+
+#include "rtype.h"
+#include "rune.h"
+
+#include "internal/common.h"
+
+/* clang-format off */
+
+static const struct {
+ rune lo, hi;
+} lookup_tbl[] = {
+ {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)},
+};
+
+#define TYPE bool
+#define TABLE lookup_tbl
+#define DEFAULT false
+#define HAS_VALUE 0
+#include "internal/rtype/lookup-func.h"
+
+bool
+rprop_is_pcm(rune ch)
+{
+ return lookup(ch);
+}
diff --git a/vendor/librune/lib/rtype/rprop_is_qmark.c b/vendor/librune/lib/rtype/rprop_is_qmark.c
new file mode 100644
index 0000000..fbe7835
--- /dev/null
+++ b/vendor/librune/lib/rtype/rprop_is_qmark.c
@@ -0,0 +1,47 @@
+/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */
+
+#include "rtype.h"
+#include "rune.h"
+
+#include "internal/common.h"
+
+/* clang-format off */
+
+#if BIT_LOOKUP
+static const unsigned _BitInt(LATIN1_MAX + 1) mask =
+ 0x0000000000000000080008000000000000000000000000000000008400000000uwb;
+#endif
+
+static const struct {
+ rune lo, hi;
+} lookup_tbl[] = {
+ {RUNE_C(0x000022), RUNE_C(0x000022)},
+ {RUNE_C(0x000027), RUNE_C(0x000027)},
+ {RUNE_C(0x0000AB), RUNE_C(0x0000AB)},
+ {RUNE_C(0x0000BB), RUNE_C(0x0000BB)},
+ {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)},
+};
+
+#define TYPE bool
+#define TABLE lookup_tbl
+#define DEFAULT false
+#define HAS_VALUE 0
+#include "internal/rtype/lookup-func.h"
+
+bool
+rprop_is_qmark(rune ch)
+{
+ return
+#if BIT_LOOKUP
+ ch <= LATIN1_MAX ? (mask & (1 << ch)) :
+#endif
+ lookup(ch);
+}
diff --git a/vendor/librune/lib/rtype/rprop_is_radical.c b/vendor/librune/lib/rtype/rprop_is_radical.c
new file mode 100644
index 0000000..6e1367b
--- /dev/null
+++ b/vendor/librune/lib/rtype/rprop_is_radical.c
@@ -0,0 +1,28 @@
+/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */
+
+#include "rtype.h"
+#include "rune.h"
+
+#include "internal/common.h"
+
+/* clang-format off */
+
+static const struct {
+ rune lo, hi;
+} lookup_tbl[] = {
+ {RUNE_C(0x002E80), RUNE_C(0x002E99)},
+ {RUNE_C(0x002E9B), RUNE_C(0x002EF3)},
+ {RUNE_C(0x002F00), RUNE_C(0x002FD5)},
+};
+
+#define TYPE bool
+#define TABLE lookup_tbl
+#define DEFAULT false
+#define HAS_VALUE 0
+#include "internal/rtype/lookup-func.h"
+
+bool
+rprop_is_radical(rune ch)
+{
+ return lookup(ch);
+}
diff --git a/vendor/librune/lib/rtype/rprop_is_ri.c b/vendor/librune/lib/rtype/rprop_is_ri.c
new file mode 100644
index 0000000..d757a38
--- /dev/null
+++ b/vendor/librune/lib/rtype/rprop_is_ri.c
@@ -0,0 +1,8 @@
+#include "rtype.h"
+#include "rune.h"
+
+bool
+rprop_is_ri(rune ch)
+{
+ return ch >= RUNE_C(0x1F1E6) && ch <= RUNE_C(0x1F1FF);
+}
diff --git a/vendor/librune/lib/rtype/rprop_is_sd.c b/vendor/librune/lib/rtype/rprop_is_sd.c
new file mode 100644
index 0000000..5a7be69
--- /dev/null
+++ b/vendor/librune/lib/rtype/rprop_is_sd.c
@@ -0,0 +1,68 @@
+/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */
+
+#include "rtype.h"
+#include "rune.h"
+
+#include "internal/common.h"
+
+/* clang-format off */
+
+#if BIT_LOOKUP
+static const unsigned _BitInt(LATIN1_MAX + 1) mask =
+ 0x0000000000000000000000000000000000000600000000000000000000000000uwb;
+#endif
+
+static const struct {
+ rune lo, hi;
+} lookup_tbl[] = {
+ {RUNE_C(0x000069), RUNE_C(0x00006A)},
+ {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)},
+};
+
+#define TYPE bool
+#define TABLE lookup_tbl
+#define DEFAULT false
+#define HAS_VALUE 0
+#include "internal/rtype/lookup-func.h"
+
+bool
+rprop_is_sd(rune ch)
+{
+ return
+#if BIT_LOOKUP
+ ch <= LATIN1_MAX ? (mask & (1 << ch)) :
+#endif
+ lookup(ch);
+}
diff --git a/vendor/librune/lib/rtype/rprop_is_sterm.c b/vendor/librune/lib/rtype/rprop_is_sterm.c
new file mode 100644
index 0000000..7128647
--- /dev/null
+++ b/vendor/librune/lib/rtype/rprop_is_sterm.c
@@ -0,0 +1,115 @@
+/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */
+
+#include "rtype.h"
+#include "rune.h"
+
+#include "internal/common.h"
+
+/* clang-format off */
+
+#if BIT_LOOKUP
+static const unsigned _BitInt(LATIN1_MAX + 1) mask =
+ 0x0000000000000000000000000000000000000000000000008000400200000000uwb;
+#endif
+
+static const struct {
+ rune lo, hi;
+} lookup_tbl[] = {
+ {RUNE_C(0x000021), RUNE_C(0x000021)},
+ {RUNE_C(0x00002E), RUNE_C(0x00002E)},
+ {RUNE_C(0x00003F), RUNE_C(0x00003F)},
+ {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)},
+};
+
+#define TYPE bool
+#define TABLE lookup_tbl
+#define DEFAULT false
+#define HAS_VALUE 0
+#include "internal/rtype/lookup-func.h"
+
+bool
+rprop_is_sterm(rune ch)
+{
+ return
+#if BIT_LOOKUP
+ ch <= LATIN1_MAX ? (mask & (1 << ch)) :
+#endif
+ lookup(ch);
+}
diff --git a/vendor/librune/lib/rtype/rprop_is_term.c b/vendor/librune/lib/rtype/rprop_is_term.c
new file mode 100644
index 0000000..f821276
--- /dev/null
+++ b/vendor/librune/lib/rtype/rprop_is_term.c
@@ -0,0 +1,142 @@
+/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */
+
+#include "rtype.h"
+#include "rune.h"
+
+#include "internal/common.h"
+
+/* clang-format off */
+
+#if BIT_LOOKUP
+static const unsigned _BitInt(LATIN1_MAX + 1) mask =
+ 0x0000000000000000000000000000000000000000000000008C00500200000000uwb;
+#endif
+
+static const struct {
+ rune lo, hi;
+} lookup_tbl[] = {
+ {RUNE_C(0x000021), RUNE_C(0x000021)},
+ {RUNE_C(0x00002C), RUNE_C(0x00002C)},
+ {RUNE_C(0x00002E), RUNE_C(0x00002E)},
+ {RUNE_C(0x00003A), RUNE_C(0x00003B)},
+ {RUNE_C(0x00003F), RUNE_C(0x00003F)},
+ {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)},
+};
+
+#define TYPE bool
+#define TABLE lookup_tbl
+#define DEFAULT false
+#define HAS_VALUE 0
+#include "internal/rtype/lookup-func.h"
+
+bool
+rprop_is_term(rune ch)
+{
+ return
+#if BIT_LOOKUP
+ ch <= LATIN1_MAX ? (mask & (1 << ch)) :
+#endif
+ lookup(ch);
+}
diff --git a/vendor/librune/lib/rtype/rprop_is_uideo.c b/vendor/librune/lib/rtype/rprop_is_uideo.c
new file mode 100644
index 0000000..3fc72fd
--- /dev/null
+++ b/vendor/librune/lib/rtype/rprop_is_uideo.c
@@ -0,0 +1,42 @@
+/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */
+
+#include "rtype.h"
+#include "rune.h"
+
+#include "internal/common.h"
+
+/* clang-format off */
+
+static const struct {
+ rune lo, hi;
+} lookup_tbl[] = {
+ {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)},
+};
+
+#define TYPE bool
+#define TABLE lookup_tbl
+#define DEFAULT false
+#define HAS_VALUE 0
+#include "internal/rtype/lookup-func.h"
+
+bool
+rprop_is_uideo(rune ch)
+{
+ return lookup(ch);
+}
diff --git a/vendor/librune/lib/rtype/rprop_is_upper.c b/vendor/librune/lib/rtype/rprop_is_upper.c
new file mode 100644
index 0000000..8437582
--- /dev/null
+++ b/vendor/librune/lib/rtype/rprop_is_upper.c
@@ -0,0 +1,685 @@
+/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */
+
+#include "rtype.h"
+#include "rune.h"
+
+#include "internal/common.h"
+
+/* clang-format off */
+
+#if BIT_LOOKUP
+static const unsigned _BitInt(LATIN1_MAX + 1) mask =
+ 0x000000007F7FFFFF00000000000000000000000007FFFFFE0000000000000000uwb;
+#endif
+
+static const struct {
+ rune lo, hi;
+} lookup_tbl[] = {
+ {RUNE_C(0x000041), RUNE_C(0x00005A)},
+ {RUNE_C(0x0000C0), RUNE_C(0x0000D6)},
+ {RUNE_C(0x0000D8), RUNE_C(0x0000DE)},
+ {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)},
+};
+
+#define TYPE bool
+#define TABLE lookup_tbl
+#define DEFAULT false
+#define HAS_VALUE 0
+#include "internal/rtype/lookup-func.h"
+
+bool
+rprop_is_upper(rune ch)
+{
+ return
+#if BIT_LOOKUP
+ ch <= LATIN1_MAX ? (mask & (1 << ch)) :
+#endif
+ lookup(ch);
+}
diff --git a/vendor/librune/lib/rtype/rprop_is_vs.c b/vendor/librune/lib/rtype/rprop_is_vs.c
new file mode 100644
index 0000000..6c52eaf
--- /dev/null
+++ b/vendor/librune/lib/rtype/rprop_is_vs.c
@@ -0,0 +1,29 @@
+/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */
+
+#include "rtype.h"
+#include "rune.h"
+
+#include "internal/common.h"
+
+/* clang-format off */
+
+static const struct {
+ rune lo, hi;
+} lookup_tbl[] = {
+ {RUNE_C(0x00180B), RUNE_C(0x00180D)},
+ {RUNE_C(0x00180F), RUNE_C(0x00180F)},
+ {RUNE_C(0x00FE00), RUNE_C(0x00FE0F)},
+ {RUNE_C(0x0E0100), RUNE_C(0x0E01EF)},
+};
+
+#define TYPE bool
+#define TABLE lookup_tbl
+#define DEFAULT false
+#define HAS_VALUE 0
+#include "internal/rtype/lookup-func.h"
+
+bool
+rprop_is_vs(rune ch)
+{
+ return lookup(ch);
+}
diff --git a/vendor/librune/lib/rtype/rprop_is_wspace.c b/vendor/librune/lib/rtype/rprop_is_wspace.c
new file mode 100644
index 0000000..0a3ea40
--- /dev/null
+++ b/vendor/librune/lib/rtype/rprop_is_wspace.c
@@ -0,0 +1,44 @@
+/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */
+
+#include "rtype.h"
+#include "rune.h"
+
+#include "internal/common.h"
+
+/* clang-format off */
+
+#if BIT_LOOKUP
+static const unsigned _BitInt(LATIN1_MAX + 1) mask =
+ 0x0000000000000000000000010000002000000000000000000000000100003E00uwb;
+#endif
+
+static const struct {
+ rune lo, hi;
+} lookup_tbl[] = {
+ {RUNE_C(0x000009), RUNE_C(0x00000D)},
+ {RUNE_C(0x000020), RUNE_C(0x000020)},
+ {RUNE_C(0x000085), RUNE_C(0x000085)},
+ {RUNE_C(0x0000A0), RUNE_C(0x0000A0)},
+ {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)},
+};
+
+#define TYPE bool
+#define TABLE lookup_tbl
+#define DEFAULT false
+#define HAS_VALUE 0
+#include "internal/rtype/lookup-func.h"
+
+bool
+rprop_is_wspace(rune ch)
+{
+ return
+#if BIT_LOOKUP
+ ch <= LATIN1_MAX ? (mask & (1 << ch)) :
+#endif
+ lookup(ch);
+}
diff --git a/vendor/librune/lib/rtype/rprop_is_xidc.c b/vendor/librune/lib/rtype/rprop_is_xidc.c
new file mode 100644
index 0000000..1e6e48b
--- /dev/null
+++ b/vendor/librune/lib/rtype/rprop_is_xidc.c
@@ -0,0 +1,810 @@
+/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */
+
+#include "rtype.h"
+#include "rune.h"
+
+#include "internal/common.h"
+
+/* clang-format off */
+
+#if BIT_LOOKUP
+static const unsigned _BitInt(LATIN1_MAX + 1) mask =
+ 0xFF7FFFFFFF7FFFFF04A004000000000007FFFFFE87FFFFFE03FF000000000000uwb;
+#endif
+
+static const struct {
+ rune lo, hi;
+} lookup_tbl[] = {
+ {RUNE_C(0x000030), RUNE_C(0x000039)},
+ {RUNE_C(0x000041), RUNE_C(0x00005A)},
+ {RUNE_C(0x00005F), RUNE_C(0x00005F)},
+ {RUNE_C(0x000061), RUNE_C(0x00007A)},
+ {RUNE_C(0x0000AA), RUNE_C(0x0000AA)},
+ {RUNE_C(0x0000B5), RUNE_C(0x0000B5)},
+ {RUNE_C(0x0000B7), RUNE_C(0x0000B7)},
+ {RUNE_C(0x0000BA), RUNE_C(0x0000BA)},
+ {RUNE_C(0x0000C0), RUNE_C(0x0000D6)},
+ {RUNE_C(0x0000D8), RUNE_C(0x0000F6)},
+ {RUNE_C(0x0000F8), 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)},
+};
+
+#define TYPE bool
+#define TABLE lookup_tbl
+#define DEFAULT false
+#define HAS_VALUE 0
+#include "internal/rtype/lookup-func.h"
+
+bool
+rprop_is_xidc(rune ch)
+{
+ return
+#if BIT_LOOKUP
+ ch <= LATIN1_MAX ? (mask & (1 << ch)) :
+#endif
+ lookup(ch);
+}
diff --git a/vendor/librune/lib/rtype/rprop_is_xids.c b/vendor/librune/lib/rtype/rprop_is_xids.c
new file mode 100644
index 0000000..4c41959
--- /dev/null
+++ b/vendor/librune/lib/rtype/rprop_is_xids.c
@@ -0,0 +1,701 @@
+/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */
+
+#include "rtype.h"
+#include "rune.h"
+
+#include "internal/common.h"
+
+/* clang-format off */
+
+#if BIT_LOOKUP
+static const unsigned _BitInt(LATIN1_MAX + 1) mask =
+ 0xFF7FFFFFFF7FFFFF042004000000000007FFFFFE07FFFFFE0000000000000000uwb;
+#endif
+
+static const struct {
+ rune lo, hi;
+} lookup_tbl[] = {
+ {RUNE_C(0x000041), RUNE_C(0x00005A)},
+ {RUNE_C(0x000061), RUNE_C(0x00007A)},
+ {RUNE_C(0x0000AA), RUNE_C(0x0000AA)},
+ {RUNE_C(0x0000B5), RUNE_C(0x0000B5)},
+ {RUNE_C(0x0000BA), RUNE_C(0x0000BA)},
+ {RUNE_C(0x0000C0), RUNE_C(0x0000D6)},
+ {RUNE_C(0x0000D8), RUNE_C(0x0000F6)},
+ {RUNE_C(0x0000F8), 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)},
+};
+
+#define TYPE bool
+#define TABLE lookup_tbl
+#define DEFAULT false
+#define HAS_VALUE 0
+#include "internal/rtype/lookup-func.h"
+
+bool
+rprop_is_xids(rune ch)
+{
+ return
+#if BIT_LOOKUP
+ ch <= LATIN1_MAX ? (mask & (1 << ch)) :
+#endif
+ lookup(ch);
+}
diff --git a/vendor/librune/make.c b/vendor/librune/make.c
new file mode 100644
index 0000000..6f59825
--- /dev/null
+++ b/vendor/librune/make.c
@@ -0,0 +1,159 @@
+#define _GNU_SOURCE
+#include <ctype.h>
+#include <errno.h>
+#include <glob.h>
+#include <libgen.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#define CBS_PTHREAD
+#include "cbs.h"
+
+#define CC "cc"
+#define WARNINGS "-Wall", "-Wextra", "-Wpedantic", "-Werror", "-Wno-attributes"
+#define CFLAGS_ALL WARNINGS, "-pipe", "-std=c2x"
+#define CFLAGS_DBG CFLAGS_ALL, "-g", "-ggdb3", "-Og"
+#ifdef __APPLE__
+# define CFLAGS_RLS CFLAGS_ALL, "-O3"
+#else
+# define CFLAGS_RLS CFLAGS_ALL, "-O3", "-march=native", "-mtune=native"
+#endif
+
+#define _CMDPRC(C, F) \
+ do { \
+ int ec; \
+ F(C); \
+ if ((ec = cmdexec(C)) != EXIT_SUCCESS) \
+ diex("%s terminated with exit-code %d", *(C)._argv, ec); \
+ cmdclr(&(C)); \
+ } while (0)
+#define CMDPRC(C) _CMDPRC(C, cmdput)
+#define CMDPRC2(C) _CMDPRC(C, cmdput)
+
+#define streq(a, b) (!strcmp(a, b))
+
+#define flagset(o) (flags & (1 << ((o) - 'a')))
+
+static void work(void *);
+static int globerr(const char *, int);
+static void cmdput2(cmd_t);
+
+static uint32_t flags;
+
+int
+main(int argc, char **argv)
+{
+ int opt;
+
+ cbsinit(argc, argv);
+ rebuild();
+
+ while ((opt = getopt(argc, argv, "flr")) != -1) {
+ switch (opt) {
+ case '?':
+ fprintf(stderr, "Usage: %s [-flr]\n", *argv);
+ exit(EXIT_FAILURE);
+ default:
+ flags |= 1 << (opt - 'a');
+ }
+ }
+
+ argc -= optind;
+ argv += optind;
+
+ if (argc >= 1) {
+ if (streq(*argv, "clean")) {
+ cmd_t c = {0};
+ cmdadd(&c, "find", ".", "-name", "*.[ao]", "-delete");
+ CMDPRC(c);
+ } else {
+ diex("invalid subcommand -- '%s'", *argv);
+ exit(EXIT_FAILURE);
+ }
+ } else {
+ cmd_t c = {0};
+ size_t n;
+ glob_t g;
+ tpool_t tp;
+
+ if (glob("lib/*/*.c", 0, globerr, &g))
+ die("glob");
+
+ if ((n = nproc()) == -1) {
+ if (errno)
+ die("nproc");
+ n = 8;
+ }
+
+ tpinit(&tp, n);
+ for (size_t i = 0; i < g.gl_pathc; i++)
+ tpenq(&tp, work, g.gl_pathv[i], NULL);
+ tpwait(&tp);
+ tpfree(&tp);
+
+ for (size_t i = 0; i < g.gl_pathc; i++)
+ g.gl_pathv[i][strlen(g.gl_pathv[i]) - 1] = 'o';
+
+ if (flagset('f')
+ || foutdatedv("librune.a", (const char **)g.gl_pathv, g.gl_pathc))
+ {
+ c.dst = "librune.a";
+ cmdadd(&c, "ar", "rcs", "librune.a");
+ cmdaddv(&c, g.gl_pathv, g.gl_pathc);
+ CMDPRC2(c);
+ }
+
+ globfree(&g);
+ }
+
+ return EXIT_SUCCESS;
+}
+
+void
+work(void *p)
+{
+ cmd_t c = {0};
+ char *src = p;
+ struct strv sv = {0};
+
+ if (!(c.dst = strdup(src)))
+ die("strdup");
+ c.dst[strlen(c.dst) - 1] = 'o';
+
+ if (flagset('f') || foutdated(c.dst, src)) {
+ env_or_default(&sv, "CC", CC);
+ if (flagset('r'))
+ env_or_default(&sv, "CFLAGS", CFLAGS_RLS);
+ else
+ env_or_default(&sv, "CFLAGS", CFLAGS_DBG);
+ cmdaddv(&c, sv.buf, sv.len);
+ if (flagset('l'))
+ cmdadd(&c, "-flto");
+ cmdadd(&c, "-Iinclude", "-fPIC", "-o", c.dst, "-c", src);
+ CMDPRC2(c);
+ }
+
+ free(c.dst);
+}
+
+int
+globerr(const char *s, int e)
+{
+ errno = e;
+ die("glob: %s", s);
+}
+
+void
+cmdput2(cmd_t c)
+{
+ const char *p;
+
+ flockfile(stderr);
+ for (p = *c._argv; *p; p++)
+ fputc(toupper(*p), stderr);
+ fprintf(stderr, "\t%s\n", c.dst);
+ funlockfile(stderr);
+}
diff --git a/vendor/librune/man/Lb-desc.tmac b/vendor/librune/man/Lb-desc.tmac
new file mode 100644
index 0000000..1ec8f8f
--- /dev/null
+++ b/vendor/librune/man/Lb-desc.tmac
@@ -0,0 +1 @@
+.ds doc-str-Lb-librune Unicode- and UTF-8 Library (librune, \-lrune)
diff --git a/vendor/librune/man/rtou8.3 b/vendor/librune/man/rtou8.3
new file mode 100644
index 0000000..a83d3e8
--- /dev/null
+++ b/vendor/librune/man/rtou8.3
@@ -0,0 +1 @@
+.so u8set.3
diff --git a/vendor/librune/man/u8glen.3 b/vendor/librune/man/u8glen.3
new file mode 100644
index 0000000..dfe0283
--- /dev/null
+++ b/vendor/librune/man/u8glen.3
@@ -0,0 +1,62 @@
+.Dd January 15 2024
+.Dt U8GLEN 3
+.Os
+.Sh NAME
+.Nm u8glen
+.Nd count Unicode graphemes
+.Sh LIBRARY
+.Lb librune
+.Sh SYNOPSIS
+.In gbrk.h
+.Ft size_t
+.Fn u8glen "const char8_t *s" "size_t n"
+.Sh DESCRIPTION
+The
+.Fn u8glen
+function returns the number of UTF-8 encoded Unicode graphemes in the
+buffer
+.Fa s
+of length
+.Fa n
+bytes.
+.Pp
+This function assumes that
+.Fa s
+contains only valid UTF-8.
+.Sh RETURN VALUES
+The
+.Fn u8glen
+function returns the number of graphemes in the buffer
+.Fa s .
+.Sh EXAMPLES
+The following call to
+.Fn u8glen
+will return 6 while the call to
+.Fn u8len
+will return 7 as a result of user-preceived characters such as
+.Sq е́
+taking up multiple codepoints.
+.Bd -literal -offset indent
+char8_t s[] = u8\(dqПриве́т\(dq;
+size_t cplen, glen;
+
+cplen = u8len(s, sizeof(s) - 1);
+glen = u8glen(s, sizeof(s) - 1);
+.Ed
+.Sh SEE ALSO
+.Xr u8len 3 ,
+.Xr u8wdth 3 ,
+.Xr unicode 7 ,
+.Xr utf\-8 7
+.Sh STANDARDS
+.Rs
+.%A F. Yergeau
+.%D November 2003
+.%R RFC 3629
+.%T UTF-8, a transformation format of ISO 10646
+.Re
+.Pp
+.Lk https://www.unicode.org/versions/Unicode15.1.0/ \
+"The Unicode\(rg Standard Version 15.1.0"
+.Sh AUTHORS
+.An Thomas Voss Aq Mt mail@thomasvoss.com
diff --git a/vendor/librune/man/u8gnext.3 b/vendor/librune/man/u8gnext.3
new file mode 100644
index 0000000..e50c250
--- /dev/null
+++ b/vendor/librune/man/u8gnext.3
@@ -0,0 +1,69 @@
+.Dd January 27 2024
+.Dt U8GNEXT 3
+.Os
+.Sh NAME
+.Nm u8gnext ,
+.Nd iterate over Unicode codepoints
+.Sh LIBRARY
+.Lb librune
+.Sh SYNOPSIS
+.In gbrk.h
+.Ft size_t
+.Fn u8gnext "struct u8view *v" "const char8_t **s" "size_t *n"
+.Sh DESCRIPTION
+The
+.Fn u8gnext
+function stores a view of the first grapheme in the buffer
+.Fa s
+of length
+.Fa n
+in the structure pointed to by
+.Fa v .
+It then updates
+.Fa s
+to point to the next grapheme in the buffer and also updates
+.Fa n
+accordingly.
+.Pp
+The
+.Vt "struct u8view"
+type is described in the
+.Xr u8view 3
+manual.
+.Sh RETURN VALUES
+The
+.Fn u8gnext
+function returns the length of the grapheme iterated over in bytes,
+or 0 at the end of iteration.
+.Sh EXAMPLES
+The following calls to
+.Fn u8gnext
+iterate over and print all the graphemes in
+.Va s .
+.Bd -literal -offset indent
+#define STRING u8"नमस्कार विश्व"
+
+struct u8view v;
+const char8_t *s = STRING;
+size_t n = sizeof(STRING) - 1;
+
+while (u8gnext(&v, &s, &n))
+ printf("‘%.*s’\en", (int)g.len, g.p);
+.Ed
+.Sh SEE ALSO
+.Xr u8next 3 ,
+.Xr u8view 3 ,
+.Xr unicode 7 ,
+.Xr utf\-8 7
+.Sh STANDARDS
+.Rs
+.%A F. Yergeau
+.%D November 2003
+.%R RFC 3629
+.%T UTF-8, a transformation format of ISO 10646
+.Re
+.Pp
+.Lk https://www.unicode.org/versions/Unicode15.1.0/ \
+"The Unicode\(rg Standard Version 15.1.0"
+.Sh AUTHORS
+.An Thomas Voss Aq Mt mail@thomasvoss.com
diff --git a/vendor/librune/man/u8len.3 b/vendor/librune/man/u8len.3
new file mode 100644
index 0000000..1391986
--- /dev/null
+++ b/vendor/librune/man/u8len.3
@@ -0,0 +1,70 @@
+.Dd January 15 2024
+.Dt U8LEN 3
+.Os
+.Sh NAME
+.Nm u8len
+.Nd count Unicode codepoints
+.Sh LIBRARY
+.Lb librune
+.Sh SYNOPSIS
+.In mbstring.h
+.Ft size_t
+.Fn u8len "const char8_t *s" "size_t n"
+.Sh DESCRIPTION
+The
+.Fn u8len
+function returns the number of UTF-8 encoded Unicode codepoints in the
+buffer
+.Fa s
+of length
+.Fa n
+bytes.
+.Pp
+This function assumes that
+.Fa s
+contains only valid UTF-8.
+.Sh RETURN VALUES
+The
+.Fn u8len
+function returns the number of codepoints in the buffer
+.Fa s .
+.Sh EXAMPLES
+The following call to
+.Fn u8len
+will return 17 while the call to
+.Fn strlen
+will return 22 as a result of use of multibyte-characters in
+.Fa s .
+.Bd -literal -offset indent
+char8_t s[] = u8\(dq„Der Große Duden“\(dq;
+size_t blen, cplen;
+
+blen = strlen((char *)s);
+cplen = u8len(s, sizeof(s) - 1);
+.Ed
+.Sh SEE ALSO
+.Xr u8glen 3 ,
+.Xr u8wdth 3 ,
+.Xr unicode 7 ,
+.Xr utf\-8 7
+.Sh STANDARDS
+.Rs
+.%A F. Yergeau
+.%D November 2003
+.%R RFC 3629
+.%T UTF-8, a transformation format of ISO 10646
+.Re
+.Sh AUTHORS
+.An Thomas Voss Aq Mt mail@thomasvoss.com
+.Sh CAVEATS
+The return value of
+.Fn u8len
+does not necessarily represent the number of human-preceived characters
+in the given buffer;
+multiple codepoints may combine to form one human-preceived character
+that spans a single column.
+To count user-preceived codepoints
+.Pq also known as graphemes ,
+you may want to use the
+.Xr u8glen 3
+function.
diff --git a/vendor/librune/man/u8next.3 b/vendor/librune/man/u8next.3
new file mode 100644
index 0000000..ee9852d
--- /dev/null
+++ b/vendor/librune/man/u8next.3
@@ -0,0 +1,107 @@
+.Dd January 27 2024
+.Dt U8NEXT 3
+.Os
+.Sh NAME
+.Nm u8next ,
+.Nm u8prev
+.Nd iterate over Unicode codepoints
+.Sh LIBRARY
+.Lb librune
+.Sh SYNOPSIS
+.In mbstring.h
+.Ft int
+.Fn u8next "rune *ch" "const char8_t **s" "size_t *n"
+.Ft int
+.Fn u8prev "rune *ch" "const char8_t **s" "const char8_t *start"
+.Sh DESCRIPTION
+The
+.Fn u8next
+function decodes the first rune in the UTF-8 encoded string pointed to by
+.Fa s
+of length
+.Fa n
+and stores the result in
+.Fa ch .
+It then updates
+.Fa s
+to point to the next codepoint in the buffer and updates the length
+.Fa n
+accordingly.
+.Pp
+The
+.Fn u8prev
+function takes a pointer
+.Fa start
+which points to the start of the string instead of a length,
+and updates
+.Fa s
+to point to the previous codepoint in the buffer.
+The rune
+.Fa ch
+is set to UTF-8 codepoint pointed to by
+.Fa s
+after iteration.
+.Pp
+Both of these functions assume the input is valid UTF-8.
+.Sh RETURN VALUES
+The
+.Fn u8next
+and
+.Fn u8prev
+functions return the length of the UTF-8-encoded rune iterated over in
+bytes,
+or 0 at the end of iteration.
+.Sh EXAMPLES
+The following calls to
+.Fn u8next
+iterate over and print all the codepoints in
+.Va s .
+.Bd -literal -offset indent
+#include <rune.h> /* For PRIXRUNE; see rune(3) */
+
+#define STRING u8"Ta’ Ħaġrat"
+
+int w;
+rune ch;
+const char8_t *s = STRING;
+size_t n = sizeof(STRING) - 1;
+
+while (w = u8next(&ch, &s, &n))
+ printf("U+%04" PRIXRUNE ": ‘%.*s’\en", ch, w, s - w);
+.Ed
+.Pp
+The following example is the same as the previous,
+but it uses the
+.Fn u8prev
+function to iterate backwards.
+.Bd -literal -offset indent
+#include <rune.h> /* For PRIXRUNE; see rune(3) */
+
+#define STRING u8"Ta’ Ħaġrat"
+
+int w;
+rune ch;
+const char8_t *s, *start;
+size_t n = sizeof(STRING) - 1;
+
+start = STRING;
+s = start + n;
+
+while (w = u8prev(&ch, &s, start))
+ printf("U+%04" PRIXRUNE ": ‘%.*s’\en", ch, w, s);
+.Ed
+.Sh SEE ALSO
+.Xr rune 3 ,
+.Xr u8gnext 3 ,
+.Xr u8tor 3 ,
+.Xr unicode 7 ,
+.Xr utf\-8 7
+.Sh STANDARDS
+.Rs
+.%A F. Yergeau
+.%D November 2003
+.%R RFC 3629
+.%T UTF-8, a transformation format of ISO 10646
+.Re
+.Sh AUTHORS
+.An Thomas Voss Aq Mt mail@thomasvoss.com
diff --git a/vendor/librune/man/u8prev.3 b/vendor/librune/man/u8prev.3
new file mode 100644
index 0000000..cf1364e
--- /dev/null
+++ b/vendor/librune/man/u8prev.3
@@ -0,0 +1 @@
+.so u8next
diff --git a/vendor/librune/man/u8set.3 b/vendor/librune/man/u8set.3
new file mode 100644
index 0000000..17d9fdb
--- /dev/null
+++ b/vendor/librune/man/u8set.3
@@ -0,0 +1,103 @@
+.Dd January 27 2024
+.Dt U8SET 3
+.Os
+.Sh NAME
+.Nm rtou8 ,
+.Nm u8set
+.Nd encode a rune to UTF-8
+.Sh LIBRARY
+.Lb librune
+.Sh SYNOPSIS
+.In mbstring.h
+.Ft int
+.Fn rtou8 "char8_t *s" "rune ch" "size_t n"
+.Ft size_t
+.Fn u8set "char8_t *s" "rune ch" "size_t n"
+.Sh DESCRIPTION
+The
+.Fn rtou8
+function writes the rune
+.Fa ch
+to the UTF-8 encoded buffer
+.Fa s
+of length
+.Fa n ,
+returning the number of bytes required to UTF-8 encode
+.Fa ch .
+.Pp
+The
+.Fn u8set
+function fills the buffer
+.Fa s
+of length
+.Fa n
+with the constant rune
+.Fa ch .
+It is similar to the
+.Fn rtou8
+function,
+but writes more than 1 rune if the given buffer has the capacity.
+Unlike
+.Fn rtou8 ,
+this function returns the number of bytes that were successfully written
+to
+.Fa s .
+If
+.Fa n
+is a multiple of
+.Fn u8wdth ch
+the return value will be equal to
+.Fa n ,
+however in the case that
+.Fa n
+is not a multiple then
+.Fa s
+is filled as much as possible,
+and a count shorter than
+.Fa n
+is returned.
+.Pp
+Both of these functions assume the input is valid UTF-8.
+.Sh RETURN VALUES
+The
+.Fn rtou8
+function returns the number of bytes required to write
+.Fa ch
+to the buffer
+.Fa s .
+.Pp
+The
+.Fn u8set
+function returns the number of bytes written to the buffer
+.Fa s .
+.Sh EXAMPLES
+The following calls to
+.Fn rtou8
+and
+.Fn u8set
+fill a buffer with box-drawing characters to create a top-row of a box.
+.Bd -literal -offset indent
+#define SCREEN_WIDTH 80
+
+int bdr_wdth = u8wdth(U'─'); /* box-drawing rune width */
+size_t bufsiz = SCREEN_WIDTH * bdr_wdth;
+char8_t *s = malloc(bufsiz);
+
+rtou8(s, U'┌', bdr_wdth);
+u8set(s + bdr_wdth, U'─', bufsiz - bdr_wdth * 2);
+rtou8(s + bufsiz - bdr_wdth, U'┐', bdr_wdth);
+.Ed
+.Sh SEE ALSO
+.Xr u8tor 3 ,
+.Xr u8tor_uc 3 ,
+.Xr unicode 7 ,
+.Xr utf\-8 7
+.Sh STANDARDS
+.Rs
+.%A F. Yergeau
+.%D November 2003
+.%R RFC 3629
+.%T UTF-8, a transformation format of ISO 10646
+.Re
+.Sh AUTHORS
+.An Thomas Voss Aq Mt mail@thomasvoss.com
diff --git a/vendor/librune/man/u8tor.3 b/vendor/librune/man/u8tor.3
new file mode 100644
index 0000000..e6524bd
--- /dev/null
+++ b/vendor/librune/man/u8tor.3
@@ -0,0 +1,90 @@
+.Dd January 18 2024
+.Dt U8TOR 3
+.Os
+.Sh NAME
+.Nm u8tor ,
+.Nm u8tor_uc
+.Nd decode UTF-8 into a rune
+.Sh LIBRARY
+.Lb librune
+.Sh SYNOPSIS
+.In mbstring.h
+.Ft int
+.Fn u8tor "rune *ch" "const char8_t *s"
+.Ft int
+.Fn u8tor_uc "rune *ch" "const char8_t *s"
+.Sh DESCRIPTION
+The
+.Fn u8tor
+and
+.Fn u8tor_uc
+functions decode the first rune in the UTF-8 buffer
+.Fa s ,
+storing the result in the rune pointed to by
+.Fa ch .
+Both functions return the number of bytes which compose the decoded
+UTF-8.
+.Pp
+The two functions are nearly identical,
+however
+.Fn u8tor_uc
+performs fewer range checks than
+.Fn u8tor
+allowing it to process data more efficiently.
+When provided with invalid UTF-8 however,
+.Fn u8tor_uc
+engages in undefined-behavior.
+The
+.Fn u8tor
+function on the other hand handles invalid UTF-8 by storing
+.Dv RUNE_ERROR
+in
+.Fa ch
+and returning 1.
+.Sh RETURN VALUES
+The
+.Fn u8tor
+and
+.Fn u8tor_uc
+functions return the number of bytes from
+.Fa s
+decoded into
+.Fa ch .
+.Pp
+The
+.Fn u8tor
+function returns 1 on invalid UTF-8.
+.Sh EXAMPLES
+The following call to
+.Fn u8tor
+attempts to decode the first UTF-8 codepoint in
+.Va buf .
+.Bd -literal -offset indent
+/* Implementation of read_codepoint() omitted */
+
+int w;
+rune ch;
+char8_t *buf = read_codepoint(stdin);
+
+w = u8tor(&ch, buf);
+if (ch == RUNE_ERROR) {
+ fputs("Got invalid UTF-8 codepoint", stderr);
+ exit(EXIT_FAILURE);
+}
+printf("Got rune ‘%.*s’\en", w, buf);
+.Ed
+.Sh SEE ALSO
+.Xr rtou8 3 ,
+.Xr u8chk 3 ,
+.Xr u8next 3 ,
+.Xr unicode 7 ,
+.Xr utf\-8 7
+.Sh STANDARDS
+.Rs
+.%A F. Yergeau
+.%D November 2003
+.%R RFC 3629
+.%T UTF-8, a transformation format of ISO 10646
+.Re
+.Sh AUTHORS
+.An Thomas Voss Aq Mt mail@thomasvoss.com
diff --git a/vendor/librune/man/u8tor_uc.3 b/vendor/librune/man/u8tor_uc.3
new file mode 100644
index 0000000..1527e52
--- /dev/null
+++ b/vendor/librune/man/u8tor_uc.3
@@ -0,0 +1 @@
+.so u8tor.3
diff --git a/vendor/librune/man/u8wdth.3 b/vendor/librune/man/u8wdth.3
new file mode 100644
index 0000000..42f3a0d
--- /dev/null
+++ b/vendor/librune/man/u8wdth.3
@@ -0,0 +1,69 @@
+.Dd January 16 2024
+.Dt U8WDTH 3
+.Os
+.Sh NAME
+.Nm u8wdth
+.Nd Unicode codepoint width
+.Sh LIBRARY
+.Lb librune
+.Sh SYNOPSIS
+.In mbstring.h
+.Ft int
+.Fn u8wdth "rune ch"
+.Sh DESCRIPTION
+The
+.Fn u8wdth
+function returns the number of bytes that would be occupied by the
+Unicode-codepoint
+.Fa ch
+if it was encoded as UTF-8.
+If
+.Fa ch
+is greater than
+.Dv RUNE_MAX ,
+a width of 0 is returned.
+.Pp
+If the exact UTF-8 encoded size of a codepoint is not relevant and you
+simply wish to allocate a buffer capable of holding a given number of
+UTF-8 codepoints,
+the
+.Dv U8_LEN_MAX
+macro may be preferable.
+.Pp
+This function treats invalid codepoints smaller than
+.Dv RUNE_MAX
+such as UTF-16 surrogates as valid.
+.Sh RETURN VALUES
+The
+.Fn u8wdth
+function returns the number of bytes required to UTF-8 encode the
+codepoint
+.Fa ch .
+.Sh EXAMPLES
+The following example allocates a buffer which is exactly large enough to
+hold the given UTF-32 string once it is converted to UTF-8.
+.Bd -literal -offset indent
+#define lengthof(a) (sizeof(a) / sizeof(*(a)))
+
+size_t bufsiz = 0;
+char8_t *buf;
+char32_t s[] = U\(dqIJsselmeer\(dq; /* ‘IJ’ takes 2 bytes */
+
+for (size_t i = 0; i < lengthof(s) - 1; i++)
+ bufsiz += u8wdth(s[i]);
+buf = malloc(bufsiz);
+.Ed
+.Sh SEE ALSO
+.Xr u8glen 3 ,
+.Xr u8len 3 ,
+.Xr unicode 7 ,
+.Xr utf-8 7
+.Sh STANDARDS
+.Rs
+.%A F. Yergeau
+.%D November 2003
+.%R RFC 3629
+.%T UTF-8, a transformation format of ISO 10646
+.Re
+.Sh AUTHORS
+.An Thomas Voss Aq Mt mail@thomasvoss.com
diff --git a/vendor/librune/test/gbrk.c b/vendor/librune/test/gbrk.c
new file mode 100644
index 0000000..bfac3a3
--- /dev/null
+++ b/vendor/librune/test/gbrk.c
@@ -0,0 +1,85 @@
+#define _POSIX_C_SOURCE 200809L
+#include <err.h>
+#include <locale.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <gbrk.h>
+#include <mbstring.h>
+#include <rune.h>
+
+#define die(...) err(EXIT_FAILURE, __VA_ARGS__)
+
+static void test(char *);
+
+int
+main(int argc, char **argv)
+{
+ char *line = NULL;
+ size_t n;
+ ssize_t nr;
+ FILE *fp;
+
+ setlocale(LC_ALL, "");
+
+ if (argc != 2) {
+ fprintf(stderr, "%s: file\n", *argv);
+ exit(EXIT_FAILURE);
+ }
+
+ if (!(fp = fopen(argv[1], "r")))
+ die("fopen");
+
+ while ((nr = getline(&line, &n, fp)) > 0) {
+ line[nr - 1] = 0;
+ test(line);
+ }
+
+ if (nr == -1 && ferror(fp))
+ die("getline");
+
+ fclose(fp);
+ free(line);
+ return EXIT_SUCCESS;
+}
+
+void
+test(char *raw)
+{
+ int n;
+ rune ch;
+ char8_t *p, *buf;
+ const char8_t *s;
+ size_t bufsiz = 4096;
+ struct u8view graph;
+
+ if (!(buf = malloc(bufsiz)))
+ die("malloc");
+
+ p = buf;
+ while (sscanf(raw, "%" SCNxRUNE "%n", &ch, &n)) {
+ rune sep;
+ p += rtou8(p, ch, bufsiz - (p - buf));
+ raw += n;
+ raw += u8tor(&sep, (char8_t *)raw);
+ if (!sep)
+ break;
+ }
+ *p = 0;
+
+ s = buf;
+ while (u8gnext(&graph, &s, &bufsiz) && *graph.p) {
+ rune ch;
+ const char8_t *p;
+
+ while (u8next(&ch, &graph.p, &graph.len) && ch) {
+ printf("%04" PRIXRUNE "%s", ch, graph.len > 0 ? "×" : "");
+ p = graph.p;
+ }
+ if (bufsiz && *p)
+ fputs("÷", stdout);
+ }
+
+ putchar('\n');
+ free(buf);
+}
diff --git a/vendor/librune/test/tests b/vendor/librune/test/tests
new file mode 100755
index 0000000..5affe3a
--- /dev/null
+++ b/vendor/librune/test/tests
@@ -0,0 +1,39 @@
+#!/bin/sh
+
+report()
+{
+ case $1 in
+ 0) printf 'All tests passed\n' >&2 ;;
+ 1) printf '1 test failed\n' >&2 ;;
+ *) printf '%d tests failed\n' $1 >&2
+ esac
+}
+
+readonly src=../data/GraphemeBreakTest.txt
+
+set -e
+cd "${0%/*}"
+find ../lib -name '*.c' -exec \
+ cc -std=c2x -Wno-attributes -I../include -o gbrk gbrk.c {} +
+trap 'rm -f gbrk' EXIT
+
+n=$(
+ ./gbrk $src \
+ | diff -y --suppress-common-lines $src - \
+ | tee failures \
+ | wc -l
+)
+test $n -eq 0 && rm failures
+
+if test -t 2
+then
+ case $n in
+ 0) printf '\033[0;32m' ;;
+ *) printf '\033[0;31m'
+ esac
+
+ report $n
+ printf '\033[0m' >&2
+else
+ report $n
+fi