diff options
author | Thomas Voss <mail@thomasvoss.com> | 2024-10-30 01:51:14 +0100 |
---|---|---|
committer | Thomas Voss <mail@thomasvoss.com> | 2024-10-30 01:51:14 +0100 |
commit | 042e43247f396a9000fead59d9bff87bf12806d6 (patch) | |
tree | e902784464cbe9ce3c5114d513b016523e7e4b29 | |
parent | 170b8a92434233241c990c3e9432786de3262bcd (diff) |
Completely revamp the grab source code
Some of the (many) few changes are:
- Multithreading for significantly faster performance
- The -p/--predicate flag
- Byte offsets as the default
- No customizable colors (maybe this will come back later)
- Newer edition of mlib (formerly librune)
135 files changed, 1601 insertions, 24582 deletions
diff --git a/.dir-locals.el b/.dir-locals.el new file mode 100644 index 0000000..c4cfc41 --- /dev/null +++ b/.dir-locals.el @@ -0,0 +1 @@ +((nil . ((compile-command . "./make")))) diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..4f601fb --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "vendor/mlib"] + path = vendor/mlib + url = git://git.thomasvoss.com/mlib @@ -1,744 +1,489 @@ -/* 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. - - There are a few exceptions to the above rule, and they are documented. - - This library does not aim to ever support Windows */ +/* + * BSD Zero Clause License + * + * Copyright © 2023–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. + */ #ifndef C_BUILD_SYSTEM_H #define C_BUILD_SYSTEM_H -#ifdef __GNUC__ -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-function" -#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 - +#define _GNU_SOURCE #include <sys/stat.h> #include <sys/wait.h> +#include <assert.h> #include <errno.h> -#include <libgen.h> #include <limits.h> -#ifdef CBS_PTHREAD +#ifndef CBS_NO_THREADS # include <pthread.h> #endif -#include <stdarg.h> -#include <stdint.h> +#include <stdbool.h> +#include <stddef.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 <stdnoreturn.h> -#endif +#define _vtoxs(...) ((char *[]){__VA_ARGS__}) -/* 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 +#define lengthof(xs) (sizeof(xs) / sizeof(*(xs))) -/* 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 { +struct strs { char **buf; - size_t len; + size_t len, cap; }; -/* 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 *, ...); +enum pkg_config_flags { + PC_CFLAGS = 1 << 0, + PC_LIBS = 1 << 1, + PC_SHARED = 1 << 2, + PC_STATIC = 1 << 3, +}; -/* Initializes some data required for this header to work properly. This should - be the first thing called in main() with argc and argv passed. */ static void cbsinit(int, char **); +static void rebuild(const char *); /* Always call via macro wrapper */ +#define rebuild() rebuild(__FILE__) + +static void strsfree(struct strs *); +static void strszero(struct strs *); +static void strspush(struct strs *, char **, size_t); +static void strspushenv(struct strs *, const char *, char **, size_t); +#define strspushl(xs, ...) \ + strspush((xs), _vtoxs(__VA_ARGS__), lengthof(_vtoxs(__VA_ARGS__))) +#define strspushenvl(xs, ev, ...) \ + strspushenv((xs), (ev), _vtoxs(__VA_ARGS__), lengthof(_vtoxs(__VA_ARGS__))) -/* Get the number of items in the array a */ -#define lengthof(a) (sizeof(a) / sizeof(*(a))) +static bool fexists(const char *); +static int fmdcmp(const char *, const char *); +static bool fmdolder(const char *, const char *); +static bool fmdnewer(const char *, const char *); +static bool foutdated(const char *, char **, size_t); +#define foutdatedl(s, ...) \ + foutdated((s), _vtoxs(__VA_ARGS__), lengthof(_vtoxs(__VA_ARGS__))) + +static int cmdexec(struct strs); +static pid_t cmdexec_async(struct strs); +static int cmdexec_read(struct strs, char **, size_t *); +static int cmdwait(pid_t); +static void cmdput(struct strs); +static void cmdfput(FILE *, struct strs); + +static char *swpext(const char *, const char *); +static bool pcquery(struct strs *, const char *, int); +static bool binexists(const char *); +static int nproc(void); + +#ifndef CBS_NO_THREADS +typedef void tjob(void *); +typedef void tjob_free(void *); + +struct _tqueue { + void *arg; + tjob *fn; + tjob_free *free; + struct _tqueue *next; +}; -/* Struct representing a CLI command that various functions act on. You should - always zero-initialize variables of this type before use. +typedef struct { + bool stop; + size_t tcnt, left; + pthread_t *thrds; + pthread_cond_t cnd; + pthread_mutex_t mtx; + struct _tqueue *head, *tail; +} tpool; + +static void tpinit(tpool *, size_t); +static void tpfree(tpool *); +static void tpwait(tpool *); +static void tpenq(tpool *, tjob *, void *, tjob_free *); +#endif /* !CBS_NO_THREADS */ + +static int _cbs_argc; +static char **_cbs_argv; - 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. +/* Implementation */ - 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 **_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 *); +#ifdef __GNUC__ +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wunused-function" +#endif -/* Compare the modification dates of the two named files. +#ifdef __APPLE__ +# define st_mtim st_mtimespec +#endif - 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. +void +cbsinit(int argc, char **argv) +{ + _cbs_argc = argc; + _cbs_argv = malloc(sizeof(char *) * (argc + 1)); + assert(_cbs_argv != NULL); + for (int i = 0; i < argc; i++) { + _cbs_argv[i] = strdup(argv[i]); + assert(_cbs_argv[i] != NULL); + } + _cbs_argv[argc] = NULL; - 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 *); + char *s = strrchr(_cbs_argv[0], '/'); + if (s != NULL) { + s[0] = 0; + assert(chdir(_cbs_argv[0]) != -1); + s[0] = '/'; + } +} -/* 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. */ -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, -}; +void +(rebuild)(const char *path) +{ + char *src, *dst; -#ifdef CBS_PTHREAD + if ((src = strrchr(path, '/')) != NULL) + src++; + else + src = (char *)path; -/* 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 *); + if ((dst = strrchr(*_cbs_argv, '/')) != NULL) + dst++; + else + dst = *_cbs_argv; -/* A tfunc_free_t represents a function which frees the argument passed to a - tfunc_t function. */ -typedef void (*tfree_func_t)(void *); + if (!foutdatedl(dst, src)) + return; -/* A thread pool job queue. Meant for internal-use only. */ -struct _tjob { - void *arg; - tfunc_t fn; - tfree_func_t free; - struct _tjob *next; -}; + struct strs xs = {0}; + strspushenvl(&xs, "CC", "cc"); +#if __STDC_VERSION__ >= 202000L + strspushl(&xs, "-std=c23"); +#endif +#ifndef CBS_NO_THREADS + strspushl(&xs, "-lpthread"); +#endif + strspushl(&xs, "-o", dst, src); + cmdput(xs); + assert(cmdexec(xs) == EXIT_SUCCESS); -/* 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 */ + execvp(*_cbs_argv, _cbs_argv); + assert(!"failed to execute process"); +} void -strvfree(struct strv *v) +strsfree(struct strs *xs) { - free(v->buf); - *v = (struct strv){0}; + free(xs->buf); + xs->buf = NULL; + xs->len = xs->cap = 0; } -void * -bufalloc(void *p, size_t n, size_t m) +void +strszero(struct strs *xs) { - if (n && SIZE_MAX / n < m) { - errno = EOVERFLOW; - die(__func__); - } - - if (!(p = realloc(p, n * m))) - die(__func__); - return p; + xs->len = 0; + if (xs->cap > 0) + xs->buf[0] = NULL; } void -die(const char *fmt, ...) +strspush(struct strs *xs, char **ys, size_t n) { - int e = errno; - va_list ap; + if (n == 0) + return; - va_start(ap, fmt); - flockfile(stderr); - fprintf(stderr, "%s: ", *_cbs_argv); - if (fmt) { - vfprintf(stderr, fmt, ap); - fprintf(stderr, ": "); + if (xs->len + n >= xs->cap) { + xs->cap = (xs->len + n) * 2; + xs->buf = realloc(xs->buf, sizeof(char *) * (xs->cap + 1)); + assert(xs->buf != NULL); } - fprintf(stderr, "%s\n", strerror(e)); - exit(EXIT_FAILURE); + memcpy(xs->buf + xs->len, ys, n * sizeof(char *)); + xs->len += n; + + assert(xs->len <= xs->cap); + xs->buf[xs->len] = NULL; } void -diex(const char *fmt, ...) +strspushenv(struct strs *xs, const char *ev, char **ys, size_t n) { - va_list ap; + /* NOTE: Do your best to NOT modify any pushed envvar! */ + char *p = getenv(ev); + if (p == NULL || *p == 0) { + strspush(xs, ys, n); + return; + } - va_start(ap, fmt); - flockfile(stderr); - fprintf(stderr, "%s: ", *_cbs_argv); - vfprintf(stderr, fmt, ap); - fputc('\n', stderr); - exit(EXIT_FAILURE); -} + wordexp_t we; + assert(wordexp(p, &we, WRDE_NOCMD) == 0); -void -cbsinit(int argc, char **argv) -{ - _cbs_argc = argc; - _cbs_argv = bufalloc(NULL, 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); - } + /* TODO: Memory leak! */ + for (size_t i = 0; i < we.we_wordc; i++) { + char *w = strdup(we.we_wordv[i]); + assert(w != NULL); + strspushl(xs, w); } + + wordfree(&we); } -static size_t -_next_powerof2(size_t n) +bool +fexists(const char *f) { - if (n && !(n & (n - 1))) - return n; - - n--; - for (size_t i = 1; i < sizeof(size_t); i <<= 1) - n |= n >> i; - return n + 1; + return !access(f, F_OK); } -bool -binexists(const char *name) +int +fmdcmp(const char *lhs, const char *rhs) { - char *p, *path; + int errnol, errnor; + struct stat sbl, sbr; - if (!(path = getenv("PATH"))) - diex("PATH environment variable not found"); + stat(lhs, &sbl); errnol = errno; errno = 0; + stat(rhs, &sbr); errnor = errno; - 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; - } + assert(errnol == 0 || errnol == ENOENT); + assert(errnor == 0 || errnor == ENOENT); - p = strtok(NULL, ":"); - } + if (errnol == ENOENT && errnor == ENOENT) + return 0; + if (errnol == ENOENT) + return -1; + if (errnor == ENOENT) + return +1; - free(path); - return false; + 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; } -void -cmdaddv(cmd_t *cmd, char **xs, size_t n) +bool +fmdnewer(const char *lhs, const char *rhs) { - if (cmd->_len + n >= cmd->_cap) { - cmd->_cap = _next_powerof2(cmd->_len + n) + 2; - cmd->_argv = bufalloc(cmd->_argv, cmd->_cap, sizeof(char *)); - } + return fmdcmp(lhs, rhs) > 0; +} - memcpy(cmd->_argv + cmd->_len, xs, n * sizeof(*xs)); - cmd->_len += n; - cmd->_argv[cmd->_len] = NULL; +bool +fmdolder(const char *lhs, const char *rhs) +{ + return fmdcmp(lhs, rhs) < 0; } -void -cmdclr(cmd_t *c) +bool +foutdated(const char *src, char **deps, size_t n) { - c->_len = 0; - *c->_argv = NULL; + for (size_t i = 0; i < n; i++) { + if (fmdolder(src, deps[i])) + return true; + } + return false; } int -cmdexec(cmd_t c) +cmdexec(struct strs xs) { - return cmdwait(cmdexeca(c)); + flockfile(stderr); + int ret = cmdwait(cmdexec_async(xs)); + funlockfile(stderr); + return ret; } pid_t -cmdexeca(cmd_t c) +cmdexec_async(struct strs xs) { - pid_t pid; - - switch (pid = fork()) { - case -1: - die("fork"); - case 0: - execvp(*c._argv, c._argv); - die("execvp: %s", *c._argv); + pid_t pid = fork(); + assert(pid != -1); + if (pid == 0) { + execvp(xs.buf[0], xs.buf); + assert(!"failed to execute process"); } - return pid; } int -cmdexecb(cmd_t c, char **p, size_t *n) +cmdexec_read(struct strs xs, char **p, size_t *n) { enum { - FD_R, - FD_W, + R, + 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); + assert(pipe(fds) != -1); + + pid_t pid = fork(); + assert(pid != -1); + + if (pid == 0) { + close(fds[R]); + close(STDOUT_FILENO); + assert(dup2(fds[W], STDOUT_FILENO) != -1); + execvp(xs.buf[0], xs.buf); + assert(!"failed to execute process"); } - close(fds[FD_W]); + close(fds[W]); - buf = NULL; - len = 0; + struct stat sb; + assert(fstat(fds[R], &sb) != -1); + + *p = NULL, *n = 0; + char *buf = malloc(sb.st_blksize); + assert(buf != NULL); - 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) + if ((nr = read(fds[R], buf, sb.st_blksize)) == 0) break; - buf = bufalloc(buf, len + nr + 1, sizeof(char)); - memcpy(buf + len, tmp, nr); - len += nr; + assert(nr != -1); + + *p = realloc(*p, *n + nr + 1); + assert(*p != NULL); + + memcpy(*p + *n, buf, nr); + *n += nr; } - close(fds[FD_R]); - if (buf) - buf[len] = 0; - *p = buf; - *n = len; + close(fds[R]); + free(buf); + 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; - } + int ws; + assert(waitpid(pid, &ws, 0) != -1); + if (WIFEXITED(ws)) + return WEXITSTATUS(ws); + return WIFEXITED(ws) ? WEXITSTATUS(ws) : 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 \ +/* + * 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) +cmdput(struct strs xs) { - cmdputf(stdout, c); + cmdfput(stdout, xs); } void -cmdputf(FILE *stream, cmd_t cmd) +cmdfput(FILE *fp, struct strs xs) { - flockfile(stream); - for (size_t i = 0; i < cmd._len; i++) { + flockfile(fp); + for (size_t i = 0; i < xs.len; i++) { bool safe = true; - char *p, *q; + const char *p = xs.buf[i]; - p = q = cmd._argv[i]; - for (; *q; q++) { - if (!strchr(SHELL_SAFE, *q)) { + for (const char *q = p; *q; q++) { + if (!strchr(_SHELL_SAFE, *q)) { safe = false; break; } } if (safe) - fputs(p, stream); + fputs(p, fp); else { - putc('\'', stream); - for (q = p; *q; q++) { + putc('\'', fp); + for (const char *q = p; *q; q++) { if (*q == '\'') - fputs("'\"'\"'", stream); + fputs("'\"'\"'", fp); else - putc(*q, stream); + putc(*q, fp); } - putc('\'', stream); + putc('\'', fp); } - putc(i == cmd._len - 1 ? '\n' : ' ', stream); + putc(i == xs.len - 1 ? '\n' : ' ', fp); } - funlockfile(stream); + funlockfile(fp); } -void -env_or_defaultv(struct strv *sv, const char *s, char **p, size_t n) +bool +pcquery(struct strs *xs, const char *lib, int flags) { - 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; + struct strs ys = {0}; + + strspushl(&ys, "pkg-config", "--silence-errors"); + if (flags & PC_CFLAGS) + strspushl(&ys, "--cflags"); + if (flags & PC_LIBS) + strspushl(&ys, "--libs"); + if (flags & PC_SHARED) + strspushl(&ys, "--shared"); + if (flags & PC_STATIC) + strspushl(&ys, "--static"); + strspushl(&ys, (char *)lib); - 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; + char *buf; + size_t bufsz; + int ec = cmdexec_read(ys, &buf, &bufsz); + strsfree(&ys); + if (ec != EXIT_SUCCESS) + return false; - if (ev && *ev) - wordfree(&we); -} + /* Remove trailing newline */ + buf[bufsz - 1] = 0; -bool -fexists(const char *f) -{ - return !access(f, F_OK); -} + wordexp_t we; + assert(wordexp(buf, &we, WRDE_NOCMD) == 0); -int -fmdcmp(const char *lhs, const char *rhs) -{ - struct stat sbl, sbr; + char **words = malloc(sizeof(char *) * we.we_wordc); + assert(words != NULL); - if (stat(lhs, &sbl) == -1) - die("%s", lhs); - if (stat(rhs, &sbr) == -1) - die("%s", rhs); + /* TODO: Memory leak! */ + for (size_t i = 0; i < we.we_wordc; i++) + assert((words[i] = strdup(we.we_wordv[i])) != NULL); - 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; + strspush(xs, words, we.we_wordc); + wordfree(&we); + free(words); + free(buf); + return true; } bool -fmdnewer(const char *lhs, const char *rhs) +binexists(const char *s) { - return fmdcmp(lhs, rhs) > 0; -} + const char *path = getenv("PATH"); + assert(path != NULL); -bool -fmdolder(const char *lhs, const char *rhs) -{ - return fmdcmp(lhs, rhs) < 0; -} + char *p = strdup(path), *it; + assert(p != NULL); -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])) + for (it = strtok(p, ":"); it != NULL; it = strtok(NULL, ":")) { + static char buf[PATH_MAX]; + memset(buf, 0, sizeof(buf)); + snprintf(buf, sizeof(buf), "%s/%s", it, s); + if (fexists(buf)) { + free(p); return true; + } } - return false; -} - -static char * -_getcwd(void) -{ - char *buf = NULL; - size_t n = 0; - - for (;;) { - n += PATH_MAX; - buf = bufalloc(buf, n, sizeof(char)); - if (getcwd(buf, n)) - break; - if (errno != ERANGE) - die("getcwd"); - } - - return buf; -} - -void -_rebuild(char *src) -{ - char *cwd, *cpy1, *cpy2, *dn, *bn; - cmd_t cmd = {0}; - - cwd = _getcwd(); - if (!(cpy1 = strdup(*_cbs_argv))) - die("strdup"); - if (!(cpy2 = strdup(*_cbs_argv))) - die("strdup"); - dn = dirname(cpy1); - bn = basename(cpy2); - - if (chdir(dn) == -1) - die("chdir: %s", dn); - if (!foutdated(bn, src)) { - if (chdir(cwd) == -1) - die("chdir: %s", cwd); - free(cpy1); - free(cpy2); - free(cwd); - return; - } - - cmdadd(&cmd, "cc", "-std=c2x"); -#ifdef CBS_PTHREAD - cmdadd(&cmd, "-lpthread"); -#endif - cmdadd(&cmd, "-o", bn, src); - cmdput(cmd); - if (cmdexec(cmd)) - diex("Compilation of build script failed"); - - cmdclr(&cmd); - if (chdir(cwd) == -1) - die("chdir: %s", cwd); - - cmdaddv(&cmd, _cbs_argv, _cbs_argc); - execvp(*cmd._argv, cmd._argv); - die("execvp: %s", *cmd._argv); + free(p); + return false; } int @@ -752,181 +497,141 @@ nproc(void) #endif } -bool -pcquery(struct strv *vec, char *lib, int flags) +char * +swpext(const char *file, const char *ext) { - int ec; - char *p; - size_t n; - cmd_t c = {0}; - wordexp_t we; - - p = NULL; - - 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); + const char *p = strrchr(file, '.'); + if (p == NULL) { + p = strdup(file); + assert(p != NULL); + return (char *)p; } - if (!p) - return true; + size_t noextlen = p - file; + char *s = malloc(noextlen + strlen(ext) + 2); + assert(s != NULL); + sprintf(s, "%.*s.%s", (int)noextlen, file, ext); + return s; +} - /* 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"); - } +#ifndef CBS_NO_THREADS +static struct _tqueue * +_tpdeq(tpool *tp) +{ + struct _tqueue *q = tp->head; - 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; + if (q != NULL) { + tp->head = tp->head->next; + if (!tp->head) + tp->tail = NULL; } - wordfree(&we); - free(p); - return true; + return q; } -#ifdef CBS_PTHREAD - static void * _tpwork(void *arg) { - tpool_t *tp = arg; + tpool *tp = arg; - while (!tp->_stop) { - struct _tjob *j; + while (!tp->stop) { + struct _tqueue *q; - 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); + 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); + q = _tpdeq(tp); + pthread_mutex_unlock(&tp->mtx); - j->fn(j->arg); - if (j->free) - j->free(j->arg); - free(j); + q->fn(q->arg); + if (q->free) + q->free(q->arg); + free(q); - pthread_mutex_lock(&tp->_mtx); - tp->_left--; - pthread_cond_broadcast(&tp->_cnd); - pthread_mutex_unlock(&tp->_mtx); + pthread_mutex_lock(&tp->mtx); + tp->left--; + pthread_cond_broadcast(&tp->cnd); + pthread_mutex_unlock(&tp->mtx); } return NULL; } void -tpinit(tpool_t *tp, size_t n) +tpinit(tpool *tp, size_t n) { - tp->_tcnt = n; - tp->_stop = false; - tp->_left = 0; - tp->_head = tp->_tail = NULL; - tp->_thrds = bufalloc(NULL, n, sizeof(pthread_t)); - pthread_cond_init(&tp->_cnd, NULL); - pthread_mutex_init(&tp->_mtx, NULL); - + tp->tcnt = n; + tp->stop = false; + tp->left = 0; + tp->head = tp->tail = NULL; + tp->thrds = malloc(sizeof(pthread_t) * n); + assert(tp->thrds != NULL); + pthread_cond_init(&tp->cnd, NULL); + pthread_mutex_init(&tp->mtx, NULL); for (size_t i = 0; i < n; i++) - pthread_create(tp->_thrds + i, NULL, _tpwork, tp); + assert(pthread_create(tp->thrds + i, NULL, _tpwork, tp) == 0); } void -tpfree(tpool_t *tp) +tpfree(tpool *tp) { - tp->_stop = true; + tp->stop = true; - pthread_mutex_lock(&tp->_mtx); - pthread_cond_broadcast(&tp->_cnd); - pthread_mutex_unlock(&tp->_mtx); + 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], NULL); + for (size_t i = 0; i < tp->tcnt; i++) + pthread_join(tp->thrds[i], NULL); - free(tp->_thrds); - while (tp->_head) { - struct _tjob *j = _tpdeq(tp); - if (j->free) - j->free(j->arg); - free(j); + free(tp->thrds); + while (tp->head != NULL) { + struct _tqueue *q = _tpdeq(tp); + if (q->free) + q->free(q->arg); + free(q); } - pthread_cond_destroy(&tp->_cnd); - pthread_mutex_destroy(&tp->_mtx); + pthread_cond_destroy(&tp->cnd); + pthread_mutex_destroy(&tp->mtx); } -struct _tjob * -_tpdeq(tpool_t *tp) +void +tpwait(tpool *tp) { - struct _tjob *j = tp->_head; - - if (j) { - tp->_head = tp->_head->next; - if (!tp->_head) - tp->_tail = NULL; - } - - return j; + pthread_mutex_lock(&tp->mtx); + while (!tp->stop && tp->left) + pthread_cond_wait(&tp->cnd, &tp->mtx); + pthread_mutex_unlock(&tp->mtx); } void -tpenq(tpool_t *tp, tfunc_t fn, void *arg, tfree_func_t free) +tpenq(tpool *tp, tjob *fn, void *arg, tjob_free *free) { - struct _tjob *j = bufalloc(NULL, 1, sizeof(struct _tjob)); - *j = (struct _tjob){ - .fn = fn, - .arg = arg, + struct _tqueue *q = malloc(sizeof(*q)); + assert(q != NULL); + *q = (struct _tqueue){ + .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); + pthread_mutex_lock(&tp->mtx); + if (tp->tail) + tp->tail->next = q; + if (!tp->head) + tp->head = q; + tp->tail = q; + 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 */ +#endif /* !CBS_NO_THREADS */ #ifdef __GNUC__ # pragma GCC diagnostic pop @@ -1,185 +1,197 @@ -#if __STDC_VERSION__ < 202000L -# error "C23 is required to build" -#endif - #define _GNU_SOURCE #include <errno.h> -#include <getopt.h> -#include <limits.h> +#include <glob.h> +#include <langinfo.h> +#include <libgen.h> +#include <locale.h> +#include <stdarg.h> #include <stdint.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> +#if __has_include(<features.h>) +# include <features.h> +#endif + #include "cbs.h" -#define CC "cc" -#define WARNINGS \ - "-Wall", "-Wextra", "-Wpedantic", "-Werror", "-Wno-parentheses", \ - "-Wno-pointer-sign", "-Wno-attributes" -#define CFLAGS_ALL WARNINGS, "-pipe", "-std=c2x" -#define CFLAGS_DBG CFLAGS_ALL, "-DGRAB_DEBUG", "-Og", "-g", "-ggdb3" -#ifdef __APPLE__ -# define CFLAGS_RLS CFLAGS_ALL, "-O3" +#define flagset(o) (flags & UINT32_C(1)<<(o)-'a') + +[[noreturn, gnu::format(printf, 1, 2)]] +static void err(const char *, ...); +static void build_mlib(void); + +static uint32_t flags; +static const char *argv0; + +static char *cflags_req[] = { + "-Wall", + "-Wextra", + "-Wpedantic", + "-Wvla", + "-Wno-attributes", + "-Wno-empty-body", /* Annoying when debugging */ + "-Wno-pointer-sign", + "-Wno-parentheses", + "-Ivendor/mlib/include", + "-pipe", + "-std=c23", +#ifdef __GLIBC__ + "-D_GNU_SOURCE", +#endif + "-DPCRE2_CODE_UNIT_WIDTH=8", +}; + +static char *cflags_dbg[] = { + "-DDEBUG=1", + "-fsanitize=address,undefined", +#if __GNUC__ && __APPLE__ + "-ggdb2", #else -# define CFLAGS_RLS CFLAGS_ALL, "-O3", "-march=native", "-mtune=native" + "-ggdb3", #endif -#define PREFIX "/usr/local" - -#define streq(a, b) (!strcmp(a, b)) -#define CMDPRC(c) \ - do { \ - int ec; \ - cmdput(c); \ - if ((ec = cmdexec(c)) != EXIT_SUCCESS) \ - diex("%s terminated with exit-code %d", *c._argv, ec); \ - cmdclr(&c); \ - } while (0) + "-O0", +}; -#define FLAGMSK(f) ((uint64_t)1 << ((f) - ((f) < 'a' ? 'A' : 'G'))) -#define FLAGSET(f) (flags & FLAGMSK(f)) - -static char *mkoutpath(const char *); - -static uint64_t flags; +static char *cflags_rls[] = { + "-DNDEBUG=1", + "-flto", +#ifdef __APPLE__ + "-mcpu=native", +#else + "-march=native", + "-mtune=native", +#endif + "-O3", +}; int main(int argc, char **argv) { - int opt; - cmd_t c = {0}; - struct option longopts[] = { - {"force", no_argument, nullptr, 'f'}, - {"lto", no_argument, nullptr, 'l'}, - {"no-pcre", no_argument, nullptr, 'P'}, - {"release", no_argument, nullptr, 'r'}, - {nullptr, 0, nullptr, 0 }, - }; - cbsinit(argc, argv); rebuild(); + setlocale(LC_ALL, ""); + + argv0 = basename(argv[0]); - while ((opt = getopt_long(argc, argv, "flPr", longopts, nullptr)) != -1) { + int opt; + while ((opt = getopt(argc, argv, "mr")) != -1) { switch (opt) { case '?': - fputs("Usage: make [-flPd]\n", stderr); +usage: + fprintf(stderr, + "Usage: %s [-mr]\n" + " %s clean | distclean\n", + *argv, *argv); exit(EXIT_FAILURE); default: - flags |= FLAGMSK(opt); + flags |= UINT32_C(1) << opt-'a'; } } argc -= optind; argv += optind; - if (argc > 0) { - if (streq(*argv, "clean")) { - cmdadd(&c, "find", ".", "-name", "grab", "-or", "-name", "git-grab", - "-or", "-name", "*.[ao]", "-delete"); - CMDPRC(c); - } else if (streq(*argv, "install")) { - char *bin, *man; - bin = mkoutpath("/bin"); - man = mkoutpath("/share/man/man1"); - cmdadd(&c, "mkdir", "-p", bin, man); - CMDPRC(c); - if (binexists("strip")) { - cmdadd(&c, "strip", "--strip-all", "grab", "git-grab"); - CMDPRC(c); + if (argc > 1) + goto usage; + + if (argc == 1) { + struct strs cmd = {}; + if (strcmp(argv[0], "clean") == 0) { + strspushl(&cmd, "rm", "-f", "grab", "git-grab"); + } else if (strcmp(argv[0], "distclean") == 0) { + strspushl(&cmd, "rm", "-f", "grab", "git-grab", "make"); + if (fexists("vendor/mlib/make")) { + cmdput(cmd); + if (cmdexec(cmd) != EXIT_SUCCESS) + exit(EXIT_FAILURE); + strszero(&cmd); + strspushl(&cmd, "vendor/mlib/make", "clean"); } - cmdadd(&c, "cp", "grab", "git-grab", bin); - CMDPRC(c); - cmdadd(&c, "cp", "man/grab.1", "man/git-grab.1", man); - CMDPRC(c); - } - } else { - cmd_t c = {0}; - struct strv sv = {0}; - - if (FLAGSET('f') - || foutdated("vendor/librune/make", "vendor/librune/make.c")) - { - cmdadd(&c, CC, "-lpthread", "-o", "vendor/librune/make", - "vendor/librune/make.c"); - CMDPRC(c); + } else { + err(strcmp(nl_langinfo(CODESET), "UTF-8") == 0 + ? "invalid subcommand — ‘%s’" + : "invalid subcommand -- `%s'", + argv[0]); } - 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); - } + cmdput(cmd); + return cmdexec(cmd); + } - if (FLAGSET('f') - || foutdated("./grab", "src/grab.c", "src/da.h", - "vendor/librune/librune.a")) - { - 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 (int i = 0; i < 2; i++) { - char buf[] = "-DGIT_GRAB=X"; - buf[sizeof(buf) - 2] = i + '0'; - - cmdaddv(&c, sv.buf, sv.len); - if (FLAGSET('l')) - cmdadd(&c, "-flto"); -#ifdef __GLIBC__ - cmdadd(&c, "-D_POSIX_C_SOURCE=200809L"); -#endif - cmdadd(&c, "-Ivendor/librune/include", buf); - if (!FLAGSET('P')) { - struct strv pc = {0}; - cmdadd(&c, "-DGRAB_DO_PCRE=1"); - if (pcquery(&pc, "libpcre2-posix", PKGC_CFLAGS | PKGC_LIBS)) - cmdaddv(&c, pc.buf, pc.len); - else - cmdadd(&c, "-lpcre2-posix"); - strvfree(&pc); - } - cmdadd(&c, "-o", i == 0 ? "grab" : "git-grab", "src/grab.c", - "vendor/librune/librune.a"); - CMDPRC(c); - } + build_mlib(); + + glob_t g; + if (glob("src/*.c", 0, nullptr, &g)) + err("glob:"); + + struct strs cmd = {}; + for (char ch = '0'; ch <= '1'; ch++) { + strspushenvl(&cmd, "CC", "cc"); + strspush(&cmd, cflags_req, lengthof(cflags_req)); + if (flagset('r')) + strspushenv(&cmd, "CFLAGS", cflags_rls, lengthof(cflags_rls)); + else + strspushenv(&cmd, "CFLAGS", cflags_dbg, lengthof(cflags_dbg)); + + char buf[] = "-DGIT_GRAB=X"; + buf[sizeof(buf) - 2] = ch; + strspushl(&cmd, buf); + + if (!pcquery(&cmd, "libpcre2-8", PC_CFLAGS | PC_LIBS)) + strspushl(&cmd, "-lpcre2-8"); + + strspushl(&cmd, "-o", ch == '0' ? "grab" : "git-grab"); + strspush(&cmd, g.gl_pathv, g.gl_pathc); + strspushl(&cmd, "vendor/mlib/libmlib.a"); + cmdput(cmd); + if (cmdexec(cmd) != EXIT_SUCCESS) + exit(EXIT_FAILURE); - strvfree(&sv); - } + strszero(&cmd); } return EXIT_SUCCESS; } -char * -mkoutpath(const char *s) +void +build_mlib(void) { - char *p, *buf; - - buf = bufalloc(NULL, PATH_MAX, sizeof(char)); - buf[0] = 0; - - if (p = getenv("DESTDIR"), p && *p) { - if (strlcat(buf, p, PATH_MAX) >= PATH_MAX) - goto toolong; + struct strs cmd = {}; + if (flagset('m') || !fexists("vendor/mlib/make")) { + strspushenvl(&cmd, "CC", "cc"); + strspushl(&cmd, "-std=c23", "-o", "vendor/mlib/make", "vendor/mlib/make.c"); + cmdput(cmd); + if (cmdexec(cmd) != EXIT_SUCCESS) + exit(EXIT_FAILURE); + strszero(&cmd); } + strspushl(&cmd, "./vendor/mlib/make"); + if (flagset('m')) + strspushl(&cmd, "-f"); + if (flagset('r')) + strspushl(&cmd, "-r"); + cmdput(cmd); + if (cmdexec(cmd) != EXIT_SUCCESS) + exit(EXIT_FAILURE); + strsfree(&cmd); +} - p = getenv("PREFIX"); - if (strlcat(buf, p && *p ? p : PREFIX, PATH_MAX) >= PATH_MAX) - goto toolong; - if (strlcat(buf, s, PATH_MAX) >= PATH_MAX) - goto toolong; - - return buf; - -toolong: - errno = ENAMETOOLONG; - die(__func__); +void +err(const char *fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + int save = errno; + flockfile(stderr); + fprintf(stderr, "%s: ", argv0); + vfprintf(stderr, fmt, ap); + if (fmt[strlen(fmt) - 1] == ':') + fprintf(stderr, " %s", strerror(save)); + fputc('\n', stderr); + funlockfile(stderr); + va_end(ap); + exit(EXIT_FAILURE); } diff --git a/src/da.h b/src/da.h deleted file mode 100644 index 8891971..0000000 --- a/src/da.h +++ /dev/null @@ -1,121 +0,0 @@ -/* - * 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/src/exitcodes.h b/src/exitcodes.h new file mode 100644 index 0000000..00b455c --- /dev/null +++ b/src/exitcodes.h @@ -0,0 +1,9 @@ +#ifndef GRAB_EXITCODES_H +#define GRAB_EXITCODES_H + +/* These values should never be changed! Scripts may depend on them. */ +constexpr int EXIT_NOMATCH = 1; +constexpr int EXIT_WARNING = 2; +constexpr int EXIT_FATAL = 3; + +#endif /* !GRAB_EXITCODES_H */ diff --git a/src/flags.h b/src/flags.h new file mode 100644 index 0000000..a4a4709 --- /dev/null +++ b/src/flags.h @@ -0,0 +1,23 @@ +#ifndef GRAB2_FLAGS_H +#define GRAB2_FLAGS_H + +typedef struct { + bool c : 1; + bool i : 1; + bool l : 1; + bool p : 1; + bool s : 1; + bool U : 1; + bool z : 1; + +#if !GIT_GRAB + bool do_header : 1; +#endif +} flags_t; + +#if !MAIN_C +extern +#endif +flags_t flags; + +#endif /* !GRAB2_FLAGS_H */ diff --git a/src/grab.c b/src/grab.c deleted file mode 100644 index bf26a79..0000000 --- a/src/grab.c +++ /dev/null @@ -1,859 +0,0 @@ -#include <err.h> -#include <getopt.h> -#include <libgen.h> -#include <limits.h> -#include <locale.h> -#include <stddef.h> -#include <stdint.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <unistd.h> - -#if GRAB_DO_PCRE -# include <pcre2posix.h> -#else -# include <regex.h> -# ifndef REG_DOTALL -# define REG_DOTALL 0 -# endif -# define REG_UCP 0 -# define REG_UTF 0 -# ifndef REG_STARTEND -# error "REG_STARTEND not defined" -# endif -#endif - -#include <gbrk.h> -#include <rune.h> -#include <utf8.h> - -#include "da.h" - -#define MIN(a, b) ((a) < (b) ? (a) : (b)) -#define MAX(a, b) ((a) > (b) ? (a) : (b)) - -#define FLAGMSK(f) ((uint64_t)1 << ((f) - ((f) < 'a' ? 'A' : 'G'))) -#define FLAGSET(f) (flags & FLAGMSK(f)) - -#define lengthof(a) (sizeof(a) / sizeof(*(a))) - -#define die(...) err(3, __VA_ARGS__) -#define diex(...) errx(3, __VA_ARGS__) -#define warn(...) \ - do { \ - warn(__VA_ARGS__); \ - rv = 3; \ - } while (0) -#define warnx(...) \ - do { \ - warnx(__VA_ARGS__); \ - rv = 3; \ - } while (0) - -#define streq(a, b) (!strcmp(a, b)) -#define memeq(a, b, n) (!memcmp(a, b, n)) - -#define DEFCOL_FN "35" -#define DEFCOL_HL "01;31" -#define DEFCOL_LN "32" -#define DEFCOL_SE "36" - -struct matches { - struct sv *buf; - size_t len, cap; -}; - -struct op { - char c; - regex_t pat; -#ifdef GRAB_DEBUG - bool alloced; -#endif -}; - -struct ops { - struct op *buf; - size_t len, cap; -}; - -struct sv { - char8_t *p; - size_t len; -}; - -typedef unsigned char uchar; -typedef void cmd_func(struct sv, struct matches *, struct ops, size_t, - const char *); -typedef void put_func(struct sv, struct matches *, const char *); - -static cmd_func cmdg, cmdh, cmdH, cmdx, cmdX; -static put_func putm, putm_nc; - -#if GIT_GRAB -static FILE *getfstream(int n, char *v[n]); -#endif -static void grab(struct ops, FILE *, const char *); -static struct ops comppat(char8_t *); -static regex_t mkregex(char8_t *, size_t); -static bool islbrk(struct u8view); -static bool sgrvalid(const char *); -static bool xisspace(char); -static int svposcmp(const void *, const void *); -static char *env_or_default(const char *, const char *); - -static int filecnt, rv; -static bool got_match; -static uint64_t flags = FLAGMSK('f') * GIT_GRAB; -static put_func *putf; - -static struct { - const char8_t *p, *bp; - size_t col, row; -} pos; - -static cmd_func *op_table[UCHAR_MAX] = { - ['g'] = cmdg, ['G'] = cmdg, ['h'] = cmdh, - ['H'] = cmdH, ['x'] = cmdx, ['X'] = cmdX, -}; - -[[noreturn]] static void -usage(const char *s) -{ - fprintf(stderr, -#if GIT_GRAB - "Usage: %s [-s | -z] [-bcinU] pattern [glob ...]\n" -#else - "Usage: %s [-s | -z] [-bcfinU] pattern [file ...]\n" -#endif - " %s -h\n", - s, s); - exit(EXIT_FAILURE); -} - -int -main(int argc, char **argv) -{ - int opt; - struct ops ops; - struct option longopts[] = { - {"byte-offset", no_argument, nullptr, 'b'}, - {"color", no_argument, nullptr, 'c'}, -#if GIT_GRAB - {"filenames", no_argument, nullptr, 'f'}, -#endif - {"help", no_argument, nullptr, 'h'}, - {"ignore-case", no_argument, nullptr, 'i'}, - {"newline", no_argument, nullptr, 'n'}, - {"strip-newline", no_argument, nullptr, 's'}, - {"no-unicode", no_argument, nullptr, 'U'}, - {"zero", no_argument, nullptr, 'z'}, - {nullptr, 0, nullptr, 0 }, - }; - -#if GIT_GRAB - char *entry = nullptr; - size_t len; - ssize_t nr; - FILE *flist; - const char *opts = "bchinsUz"; -#else - const char *opts = "bcfhinsUz"; -#endif - - argv[0] = basename(argv[0]); - if (argc < 2) - usage(argv[0]); - - setlocale(LC_ALL, ""); - - while ((opt = getopt_long(argc, argv, opts, longopts, nullptr)) != -1) { - switch (opt) { - case '?': - usage(argv[0]); - case 'h': - execlp("man", "man", "1", argv[0], nullptr); - die("execlp: man 1 %s", argv[0]); -#if !GRAB_DO_PCRE - case 'U': - errx(2, "program not built with PCRE support"); -#endif - default: - flags |= FLAGMSK(opt); - } - } - - if (FLAGSET('s') && FLAGSET('z')) - usage(argv[0]); - - argc -= optind; - argv += optind; - filecnt = argc - 1; - - if (!FLAGSET('c') && isatty(STDOUT_FILENO) == 1 - && !env_or_default("NO_COLOR", nullptr)) - { - flags |= FLAGMSK('c') * !streq(env_or_default("TERM", ""), "dumb"); - } - - putf = FLAGSET('c') ? putm : putm_nc; - ops = comppat(argv[0]); - -#if GIT_GRAB - if (!(flist = getfstream(argc - 1, argv + 1))) - die("getfstream"); - while ((nr = getdelim(&entry, &len, '\0', flist)) > 0) { - FILE *fp; - - if (!(fp = fopen(entry, "r"))) - warn("fopen: %s", entry); - else { - grab(ops, fp, entry); - fclose(fp); - } - } - if (ferror(flist)) - warn("getdelim"); - fclose(flist); -#else - if (argc == 1) - grab(ops, stdin, "-"); - else { - for (int i = 1; i < argc; i++) { - FILE *fp; - - if (streq(argv[i], "-")) { - grab(ops, stdin, "-"); - } else if (!(fp = fopen(argv[i], "r"))) { - warn("fopen: %s", argv[i]); - } else { - grab(ops, fp, argv[i]); - fclose(fp); - } - } - } -#endif - -#ifdef GRAB_DEBUG -# if GIT_GRAB - free(entry); -# endif - da_foreach (&ops, op) { - if (op->alloced) - regfree(&op->pat); - } - free(ops.buf); -#endif - - return got_match ? rv : EXIT_FAILURE; -} - -struct ops -comppat(char8_t *s) -{ - struct ops ops; - - dainit(&ops, 8); - while (*s && xisspace(*s)) - s++; - if (!*s) - diex("input string terminated prematurely"); - - do { - int w; - rune ch; - size_t len; - char8_t *p; - struct op op; - - /* Grab the operator and delimiter. All operators are ASCII, but - u8tor() is used to parse it so that we get properly formed error - messages when someone uses a non-ASCII operator. */ - w = u8tor(&ch, s); - if (ch == RUNE_ERROR) - diex("invalid UTF-8 sequence near ‘%02hhX’", s[-1]); - if (w > 1 || !op_table[ch]) - diex("invalid operator ‘%.*s’", w, s); - op.c = *s++; - - s += u8tor(&ch, s); - if (ch == RUNE_ERROR) - diex("invalid UTF-8 sequence near ‘%02hhX’", s[-1]); - if (ch == '\0') - diex("input string terminated prematurely"); - - /* Find the closing delimiter. The user is allowed to omit the closing - delimiter if this is the last operation in the query pattern. */ - p = s; - len = strlen(s); - if (!(s = u8chr(s, ch, len))) - s = p + len; - - if (s - p == 0) { - if (op.c != 'h') - diex("empty regex given to ‘%c’", op.c); - if (ops.len == 0) - diex("empty ‘h’ is not allowed as the first operator"); - op.pat = ops.buf[ops.len - 1].pat; - } else - op.pat = mkregex(p, s - p); - -#if GRAB_DEBUG - op.alloced = s - p == 0; -#endif - - dapush(&ops, op); - - if (*s) { - s += u8tor(&ch, s); - if (ch == RUNE_ERROR) - diex("invalid UTF-8 sequence near ‘%02hhX’", s[-1]); - } - while (*s && xisspace(*s)) - s++; - } while (*s); - - return ops; -} - -void -grab(struct ops ops, FILE *stream, const char *filename) -{ - size_t n; - struct { - char *buf; - size_t len, cap; - } chars = {0}; - - do { - static_assert(sizeof(char) == 1, "sizeof(char) != 1; wtf?"); - chars.cap += BUFSIZ; - if (!(chars.buf = realloc(chars.buf, chars.cap))) - die("realloc"); - chars.len += n = fread(chars.buf + chars.len, 1, BUFSIZ, stream); - } while (n == BUFSIZ); - - if (ferror(stream)) { - warn("fread: %s", filename); - goto out; - } - - const char8_t *p; - struct sv sv = { - .p = chars.buf, - .len = chars.len, - }; - struct matches ms; - - if (p = u8chk(chars.buf, chars.len)) { - warnx("%s: invalid UTF-8 near ‘%02X’", filename, *p); - goto out; - } - - dainit(&ms, 4); - pos.col = pos.row = 1; - pos.bp = pos.p = chars.buf; - op_table[(uchar)ops.buf[0].c](sv, &ms, ops, 0, filename); - free(ms.buf); - -out: - free(chars.buf); -} - -void -cmdg(struct sv sv, struct matches *ms, struct ops ops, size_t i, - const char *filename) -{ - int r; - regmatch_t rm = { - .rm_so = 0, - .rm_eo = sv.len, - }; - struct op op = ops.buf[i]; - - r = regexec(&op.pat, sv.p, 1, &rm, REG_STARTEND); - if ((r == REG_NOMATCH && op.c == 'g') || (r != REG_NOMATCH && op.c == 'G')) - return; - - if (i + 1 == ops.len) - putf(sv, ms, filename); - else - op_table[(uchar)ops.buf[i + 1].c](sv, ms, ops, i + 1, filename); -} - -void -cmdh(struct sv sv, struct matches *ms, struct ops ops, size_t i, - const char *filename) -{ - regmatch_t rm = { - .rm_so = 0, - .rm_eo = sv.len, - }; - struct op op = ops.buf[i]; - - do { - if (regexec(&op.pat, sv.p, 1, &rm, REG_STARTEND) == REG_NOMATCH) - break; - - if (rm.rm_so < rm.rm_eo) - dapush(ms, ((struct sv){sv.p + rm.rm_so, rm.rm_eo - rm.rm_so})); - else { - rune unused; - rm.rm_eo += u8tor_uc(&unused, sv.p + rm.rm_eo); - } - - rm = (regmatch_t){ - .rm_so = rm.rm_eo, - .rm_eo = sv.len, - }; - } while (rm.rm_so < rm.rm_eo); - - if (i + 1 == ops.len) - putf(sv, ms, filename); - else { - size_t save = ms->len; - op_table[(uchar)ops.buf[i + 1].c](sv, ms, ops, i + 1, filename); - ms->len = save; - } -} - -void -cmdH(struct sv sv, struct matches *ms, struct ops ops, size_t i, - const char *filename) -{ - regmatch_t rm = { - .rm_so = 0, - .rm_eo = sv.len, - }; - regmatch_t prev = { - .rm_so = 0, - .rm_eo = 0, - }; - struct op op = ops.buf[i]; - - do { - struct sv nsv; - - if (regexec(&op.pat, sv.p, 1, &rm, REG_STARTEND) == REG_NOMATCH) - break; - - if (prev.rm_so || prev.rm_eo || rm.rm_so) { - nsv = (struct sv){ - .p = sv.p + prev.rm_eo, - .len = rm.rm_so - prev.rm_eo, - }; - if (nsv.len) - dapush(ms, nsv); - } - - prev = rm; - if (rm.rm_so == rm.rm_eo) { - rune unused; - rm.rm_eo += u8tor_uc(&unused, sv.p + rm.rm_eo); - } - rm = (regmatch_t){ - .rm_so = rm.rm_eo, - .rm_eo = sv.len, - }; - } while (rm.rm_so < rm.rm_eo); - - if (prev.rm_eo < rm.rm_eo) - dapush(ms, ((struct sv){sv.p + rm.rm_so, rm.rm_eo - rm.rm_so})); - - if (i + 1 == ops.len) - putf(sv, ms, filename); - else - op_table[(uchar)ops.buf[i + 1].c](sv, ms, ops, i + 1, filename); -} - -void -cmdx(struct sv sv, struct matches *ms, struct ops ops, size_t i, - const char *filename) -{ - regmatch_t rm = { - .rm_so = 0, - .rm_eo = sv.len, - }; - struct op op = ops.buf[i]; - - do { - struct sv nsv; - - if (regexec(&op.pat, sv.p, 1, &rm, REG_STARTEND) == REG_NOMATCH) - break; - if (rm.rm_so < rm.rm_eo) { - nsv = (struct sv){ - .p = sv.p + rm.rm_so, - .len = rm.rm_eo - rm.rm_so, - }; - if (i + 1 == ops.len) - putf(nsv, ms, filename); - else { - size_t save = ms->len; - op_table[(uchar)ops.buf[i + 1].c](nsv, ms, ops, i + 1, - filename); - ms->len = save; - } - } else { - rune unused; - rm.rm_eo += u8tor_uc(&unused, sv.p + rm.rm_eo); - } - rm = (regmatch_t){ - .rm_so = rm.rm_eo, - .rm_eo = sv.len, - }; - } while (rm.rm_so < rm.rm_eo); -} - -void -cmdX(struct sv sv, struct matches *ms, struct ops ops, size_t i, - const char *filename) -{ - regmatch_t rm = { - .rm_so = 0, - .rm_eo = sv.len, - }; - regmatch_t prev = { - .rm_so = 0, - .rm_eo = 0, - }; - struct op op = ops.buf[i]; - - do { - struct sv nsv; - - if (regexec(&op.pat, sv.p, 1, &rm, REG_STARTEND) == REG_NOMATCH) - break; - - if (prev.rm_so || prev.rm_eo || rm.rm_so) { - nsv = (struct sv){ - .p = sv.p + prev.rm_eo, - .len = rm.rm_so - prev.rm_eo, - }; - if (nsv.len) { - if (i + 1 == ops.len) - putf(nsv, ms, filename); - else - op_table[(uchar)ops.buf[i + 1].c](nsv, ms, ops, i + 1, - filename); - } - } - - prev = rm; - if (rm.rm_so == rm.rm_eo) { - rune unused; - rm.rm_eo += u8tor_uc(&unused, sv.p + rm.rm_eo); - } - rm = (regmatch_t){ - .rm_so = rm.rm_eo, - .rm_eo = sv.len, - }; - } while (rm.rm_so < rm.rm_eo); - - if (prev.rm_eo < rm.rm_eo) { - struct sv nsv = { - .p = sv.p + rm.rm_so, - .len = rm.rm_eo - rm.rm_so, - }; - if (i + 1 == ops.len) - putf(nsv, ms, filename); - else - op_table[(uchar)ops.buf[i + 1].c](nsv, ms, ops, i + 1, filename); - } -} - -int -svposcmp(const void *a, const void *b) -{ - struct sv *A, *B; - A = (struct sv *)a; - B = (struct sv *)b; - return A->p != B->p ? A->p - B->p : A->len < B->len ? -1 : A->len != B->len; -} - -void -putm(struct sv sv, struct matches *ms, const char *filename) -{ - const char8_t *p; - struct matches valid; - static const char *fn, *hl, *ln, *se; - - got_match = true; - - if (FLAGSET('c') && !fn) { - char *optstr; - if ((optstr = env_or_default("GRAB_COLORS", nullptr))) { - enum { - OPT_FN, - OPT_HL, - OPT_LN, - OPT_SE, - }; - /* clang-format off */ - static char *const tokens[] = { - [OPT_FN] = "fn", - [OPT_HL] = "hl", - [OPT_LN] = "ln", - [OPT_SE] = "se", - nullptr - }; - /* clang-format on */ - - while (*optstr) { - char *val; - switch (getsubopt(&optstr, tokens, &val)) { - case OPT_FN: - if (sgrvalid(val)) - fn = val; - break; - case OPT_HL: - if (sgrvalid(val)) - hl = val; - break; - case OPT_LN: - if (sgrvalid(val)) - fn = val; - break; - case OPT_SE: - if (sgrvalid(val)) - se = val; - break; - default: - warnx("invalid color value -- '%s'", val); - } - } - } - - if (!fn) - fn = DEFCOL_FN; - if (!hl) - hl = DEFCOL_HL; - if (!ln) - ln = DEFCOL_LN; - if (!se) - se = DEFCOL_SE; - } - - if (FLAGSET('f') || filecnt > 1) { - char sep = FLAGSET('z') ? '\0' : ':'; - printf("\33[%sm%s\33[0m" /* filename */ - "\33[%sm%c\33[0m", /* separator */ - fn, filename, se, sep); - - if (FLAGSET('b')) { - printf("\33[%sm%td\33[0m" /* byte offset */ - "\33[%sm%c\33[0m", /* separator */ - ln, sv.p - pos.bp, se, sep); - } else { - struct u8view v; - size_t len = sv.p - pos.p; - - while (u8gnext(&v, &pos.p, &len)) { - if (islbrk(v)) { - pos.col = 1; - pos.row++; - } else - pos.col++; - } - - printf("\33[%sm%zu\33[0m" /* row */ - "\33[%sm%c\33[0m" /* separator */ - "\33[%sm%zu\33[0m" /* column */ - "\33[%sm%c\33[0m", /* separator */ - ln, pos.row, se, sep, ln, pos.col, se, sep); - } - } - - /* Here we need to take all the views of regions to highlight, and try - to merge them into a simpler form. This happens in two steps: - - 1. Sort the views by their starting position in the matched text. - 2. Merge overlapping views. - - After this process we should have the most reduced possible set of - views. The next part is to actually print the highlighted regions - possible which requires bounds-checking as highlighted regions may - begin before or end after the matched text when using patterns such - as ‘h/.+/ x/.$/’. */ - - dainit(&valid, ms->len); - qsort(ms->buf, ms->len, sizeof(*ms->buf), svposcmp); - memcpy(valid.buf, ms->buf, ms->len * sizeof(*ms->buf)); - valid.len = ms->len; - - for (size_t i = 0; i + 1 < valid.len;) { - ptrdiff_t d; - struct sv *a, *b; - - a = valid.buf + i; - b = valid.buf + i + 1; - d = a->p + a->len - b->p; - - if (d >= 0) { - a->len += MAX(b->len - d, 0); - daremove(&valid, i + 1); - } else - i++; - } - - for (size_t i = 0; i < valid.len; i++) { - struct sv *m = valid.buf + i; - if (m->p + m->len < sv.p || m->p >= sv.p + sv.len) { - daremove(&valid, i); - i--; - continue; - } - - if (m->p < sv.p) { - m->len -= sv.p - m->p; - m->p = sv.p; - } - m->len = MIN(m->len, (size_t)(sv.p + sv.len - m->p)); - } - - p = sv.p; - da_foreach (&valid, m) { - printf("%.*s\33[%sm%.*s\33[0m", (int)(m->p - p), p, hl, (int)m->len, - m->p); - p = m->p + m->len; - } - fwrite(p, 1, sv.p + sv.len - p, stdout); - - if (!(FLAGSET('s') && sv.p[sv.len - 1] == '\n')) - putchar(FLAGSET('z') ? '\0' : '\n'); - free(valid.buf); -} - -void -putm_nc(struct sv sv, struct matches *ms, const char *filename) -{ - (void)ms; - - got_match = true; - - if (FLAGSET('f') || filecnt > 1) { - char sep = FLAGSET('z') ? '\0' : ':'; - printf("%s%c", filename, sep); - - if (FLAGSET('b')) - printf("%td%c", sv.p - pos.bp, sep); - else { - struct u8view v; - size_t len = sv.p - pos.p; - - while (u8gnext(&v, &pos.p, &len)) { - if (islbrk(v)) { - pos.col = 1; - pos.row++; - } else - pos.col++; - } - - printf("%zu%c%zu%c", pos.row, sep, pos.col, sep); - } - } - fwrite(sv.p, 1, sv.len, stdout); - if (!(FLAGSET('s') && sv.p[sv.len - 1] == '\n')) - putchar(FLAGSET('z') ? '\0' : '\n'); -} - -bool -islbrk(struct u8view v) -{ - return *v.p == '\n' || (v.len == 2 && memeq(v.p, "\r\n", 2)); -} - -bool -sgrvalid(const char *s) -{ - if (!s || !*s) - return false; - do { - if ((*s < '0' || *s > '9') && *s != ';') - return false; - } while (*++s); - - return true; -} - -regex_t -mkregex(char8_t *s, size_t n) -{ - int ret, cflags; - regex_t r; - char8_t c = s[n]; - - s[n] = 0; - cflags = REG_EXTENDED | REG_UTF | (FLAGSET('n') ? REG_NEWLINE : REG_DOTALL); - if (FLAGSET('i')) - cflags |= REG_ICASE; - if (!FLAGSET('U')) - cflags |= REG_UCP; - if (ret = regcomp(&r, s, cflags)) { - char emsg[256]; - regerror(ret, &r, emsg, sizeof(emsg)); - diex("failed to compile regex ‘%s’: %s", s, emsg); - } - s[n] = c; - - return r; -} - -#if GIT_GRAB -FILE * -getfstream(int argc, char *argv[argc]) -{ - pid_t pid; - int fds[2]; - enum { - FD_R, - FD_W, - }; - - if (pipe(fds) == -1) - die("pipe"); - - switch (pid = fork()) { - case -1: - die("fork"); - case 0:; - size_t len; - char **args; - static const char *git_grep_args[] = { - "git", "grep", "--cached", "-Ilz", "", - }; - - len = argc + lengthof(git_grep_args) + 1; - - close(fds[FD_R]); - if (dup2(fds[FD_W], STDOUT_FILENO) == -1) - die("dup2"); - close(fds[FD_W]); - - if (!(args = malloc(len * sizeof(char *)))) - die("malloc"); - memcpy(args, git_grep_args, sizeof(git_grep_args)); - memcpy(args + 5, argv, argc * sizeof(char *)); - args[len - 1] = nullptr; - - execvp("git", args); - die("execvp: git grep --cached -Ilz ''"); - } - - close(fds[FD_W]); - return fdopen(fds[FD_R], "r"); -} -#endif - -char * -env_or_default(const char *e, const char *d) -{ - const char *s = getenv(e); - return (char *)(s && *s ? s : d); -} - -bool -xisspace(char c) -{ - return c == ' ' || c == '\t' || c == '\n'; -} diff --git a/src/main.c b/src/main.c new file mode 100644 index 0000000..5b2efff --- /dev/null +++ b/src/main.c @@ -0,0 +1,372 @@ +#include <langinfo.h> +#include <locale.h> +#include <stdatomic.h> +#include <stdint.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> + +#include <alloc.h> +#include <array.h> +#include <cli.h> +#include <errors.h> +#include <macros.h> +#include <mbstring.h> +#include <pcre2.h> +#include <unicode/prop.h> +#include <unicode/string.h> + +#include "exitcodes.h" +#include "tpool.h" +#include "work.h" + +#define MAIN_C 1 +#include "flags.h" + +static bool use_color_p(void); +static op_t *pattern_comp(u8view_t pat); +#if GIT_GRAB +static FILE *getfstream(int globc, char **globv); +#endif + +atomic_int rv = EXIT_NOMATCH; +op_t *ops; +/* For use in diagnostic messages */ +const char *lquot = "`", *rquot = "'"; + +/* We need to use different matching functions depending on if we’re using JIT + matching or not */ +typeof(pcre2_match) *pcre2_match_fn; + +static char emsg[256]; /* Buffer for PCRE2 error messages */ +/* TODO: Use the LUT in work.c */ +static const bool opchars[] = { + ['g'] = true, + ['G'] = true, + ['h'] = true, + ['H'] = true, + ['x'] = true, + ['X'] = true, +}; + +int +main(int argc, char **argv) +{ + mlib_setprogname(argv[0]); + setlocale(LC_ALL, ""); + + if (streq(nl_langinfo(CODESET), "UTF-8")) { + lquot = u8"‘"; + rquot = u8"’"; + } + + optparser_t parser = mkoptparser(argv); + static const cli_opt_t opts[] = { + {'c', U8C("color"), CLI_NONE}, + {'h', U8C("help"), CLI_NONE}, + {'i', U8C("ignore-case"), CLI_NONE}, + {'l', U8C("line"), CLI_OPT}, + {'p', U8C("predicate"), CLI_NONE}, + {'s', U8C("strip-newline"), CLI_NONE}, + {'U', U8C("no-unicode"), CLI_NONE}, + {'z', U8C("zero"), CLI_NONE}, + }; + + for (;;) { + rune opt = optparse(&parser, opts, lengthof(opts)); + if (opt == 0) + break; + switch (opt) { + case 'c': + flags.c = true; + break; + case 'h': + execlp("man", "man", "1", mlib_progname(), nullptr); + err("execlp: man 1 %s:", mlib_progname()); + case 'i': + flags.i = true; + break; + case 'l': + flags.l = true; + break; + case 'p': + flags.p = true; + break; + case 's': + flags.s = true; + break; + case 'U': + flags.U = true; + break; + case 'z': + flags.z = true; + break; + case -1: + warn(parser.errmsg); + goto usage; + } + } + + if (flags.p && flags.s) { + warn("-p and -s are mutually exclusive"); + goto usage; + } + if (flags.p && flags.z) { + warn("-p and -z are mutually exclusive"); + goto usage; + } + if (flags.s && flags.z) { + warn("-s and -z are mutually exclusive"); + goto usage; + } + + argc -= parser.optind; + argv += parser.optind; + + if (argc == 0) { + usage: + usage("[-p | -s | -z] [-cilU] pattern [file ...]", "-h"); + exit(EXIT_FATAL); + } + + flags.c = flags.c || use_color_p(); + ops = pattern_comp((u8view_t){*argv, strlen(*argv)}); + + allocator_t mem = init_heap_allocator(nullptr); + +#if GIT_GRAB + argc--; + argv++; + + FILE *fstream = getfstream(argc, argv); + if (fstream == nullptr) + cerr(EXIT_FATAL, "getfstream:"); + + const char **filenames = array_new(mem, typeof(*filenames), 1024); + + size_t len; + ssize_t nr; + char *file = nullptr; + while ((nr = getdelim(&file, &len, 0, fstream)) > 0) { + /* TODO: Would an arena improve performance? */ + const char *s = strdup(file); + if (s == nullptr) + cerr(EXIT_FATAL, "strdup:"); + array_push(&filenames, s); + } +#else + if (argc == 1) + argv = (static char *[]){"-"}; + else { + argc--; + argv++; + flags.do_header = true; + } +#endif + + tpool_t tp; + int thrds = tpinit(&tp, +#if GIT_GRAB + filenames, array_len(filenames) +#else + (const char **)argv, argc +#endif + ); + + /* Failed to spawn threads */ + if (thrds == 0) { + unsigned char *buf = array_new(mem, typeof(*buf), 4096); + for (int i = 0; i < argc; i++) { + process_file(argv[i], &buf); + fwrite(buf, 1, array_len(buf), stdout); + array_hdr(buf)->len = 0; + } +#if DEBUG + array_free(buf); +#endif + } + + if (thrds != 0) + tpfree(&tp); +#if DEBUG + pcre2_jit_free_unused_memory(nullptr); + array_foreach (ops, op) { + if (op->free_me) + pcre2_code_free(op->re); + } + array_free(ops); +#if GIT_GRAB + array_foreach (filenames, f) + free(f); + array_free(filenames); +#endif +#endif + return rv; +} + +op_t * +pattern_comp(u8view_t pat) +{ + allocator_t mem = init_heap_allocator(nullptr); + op_t *ops = array_new(mem, op_t, 16); + + for (;;) { + int w; + rune ch; + + while ((w = ucsnext(&ch, &pat)) != 0) { + if (!uprop_is_pat_ws(ch)) { + VSHFT(&pat, -w); + break; + } + } + if (pat.len == 0) + break; + + /* Grab the operator. We grab the entire next grapheme for + better error messages in the case that someone tries to use a + non-ASCII grapheme as an operator for whatever reason. */ + + op_t op; + u8view_t g; + + (void)ucsgnext(&g, &pat); + if (g.len != 1 || *g.p >= lengthof(opchars) || !opchars[*g.p]) { + cerr(EXIT_FATAL, "Invalid operator %s%.*s%s", + lquot, SV_PRI_ARGS(g), rquot); + } + op.c = (char)*g.p; + + /* Unlike with the operator, we parse the delimeter as a rune + instead of a grapheme. This makes it easier for users to + write patterns that match combining characters. This _may_ be + subject to change in the future but for now this is the + rationale. Alongside standard delimeters, if the opening + delimeter is a bracket or some other form of paired-bracket + (as determined by Unicode) then the closing delimeter is set + to the right-hand form of the bracket. This means that the + following are both valid delimeted patterns: + + /regex/ + 「regex」 */ + + rune ldelim, rdelim; + if ((w = ucsnext(&ldelim, &pat)) == 0) + cerr(EXIT_FATAL, "Premature end of pattern"); + rdelim = uprop_get_bpb(ldelim); + + /* Find the right delimeter, which is optional for the last + operator */ + /* TODO: Change u8view_t.len to ptrdiff_t and use -1 here */ + u8view_t re = {pat.p, (size_t)-1}; + while ((w = ucsnext(&ch, &pat)) != 0) { + if (ch == rdelim) { + re.len = pat.p - re.p - w; + break; + } + } + if (re.len == (size_t)-1) + re.len = pat.p - re.p; + if (re.len == 0) { + if (op.c != 'h') { + cerr(EXIT_FATAL, "%s%c%s operator given empty regex", + lquot, op.c, rquot); + } + if (array_len(ops) == 0) { + cerr(EXIT_FATAL, + "%sh%s operator given empty regex as the first operator", + lquot, rquot); + } + op.re = ops[array_len(ops) - 1].re; +#if DEBUG + op.free_me = false; +#endif + } else { + int ec; + size_t eoff; + uint32_t reopts = PCRE2_DOTALL | PCRE2_MATCH_INVALID_UTF | PCRE2_UTF; + if (flags.i) + reopts |= PCRE2_CASELESS; + if (!flags.U) + reopts |= PCRE2_UCP; + op.re = pcre2_compile(re.p, re.len, reopts, &ec, &eoff, nullptr); + if (op.re == nullptr) { + /* TODO: Ensure the buffer is large enough for the error message */ + (void)pcre2_get_error_message(ec, emsg, sizeof(emsg)); + cerr(EXIT_FATAL, "Failed to compile regex: %s", emsg); + } + if ((ec = pcre2_jit_compile(op.re, PCRE2_JIT_COMPLETE)) != 0) { + /* TODO: Ensure the buffer is large enough for the error message */ + (void)pcre2_get_error_message(ec, emsg, sizeof(emsg)); + warn("Failed to JIT compile regex: %s", emsg); + rv = EXIT_WARNING; + pcre2_match_fn = pcre2_match; + } else + pcre2_match_fn = pcre2_jit_match; +#if DEBUG + op.free_me = true; +#endif + } + array_push(&ops, op); + } + + if (array_len(ops) == 0) + err("Empty pattern"); + + return ops; +} + +bool +use_color_p(void) +{ + const char *ev = getenv("TERM"); + if (ev != nullptr && streq(ev, "dumb")) + return false; + if ((ev = getenv("NO_COLOR")) != nullptr && *ev != 0) + return false; + if ((ev = getenv("CLICOLOR_FORCE")) != nullptr && *ev != 0) + return true; + return isatty(STDOUT_FILENO); +} + +#if GIT_GRAB +FILE * +getfstream(int globc, char **globv) +{ + pid_t pid; + int fds[2]; + enum { R, W }; + + if (pipe(fds) == 1) + cerr(EXIT_FATAL, "pipe:"); + + switch (pid = fork()) { + case -1: + cerr(EXIT_FATAL, "fork:"); + case 0: + static const char *git_grep_argv[] = { + "git", "grep", "-Ilz", "", + }; + + close(fds[R]); + if (dup2(fds[W], STDOUT_FILENO) == -1) + cerr(EXIT_FATAL, "dup2:"); + close(fds[W]); + + size_t argc = globc + lengthof(git_grep_argv) + 1; + char **argv = malloc(argc * sizeof(char *)); + if (argv == nullptr) + cerr(EXIT_FATAL, "malloc:"); + memcpy(argv, git_grep_argv, sizeof(git_grep_argv)); + memcpy(argv + lengthof(git_grep_argv), globv, globc * sizeof(char *)); + argv[argc - 1] = nullptr; + + execvp("git", argv); + cerr(EXIT_FATAL, "execvp: git grep -Ilz '':"); + } + + close(fds[W]); + return fdopen(fds[R], "r"); +} +#endif diff --git a/src/tpool.c b/src/tpool.c new file mode 100644 index 0000000..f30bccc --- /dev/null +++ b/src/tpool.c @@ -0,0 +1,127 @@ +/* Thread pool implementation mostly copied from cbs.h */ + +#include <errno.h> +#include <pthread.h> +#include <stdatomic.h> +#include <stddef.h> +#include <stdlib.h> +#include <unistd.h> + +#include <alloc.h> +#include <array.h> +#include <errors.h> +#include <macros.h> + +#include "tpool.h" +#include "work.h" + +#include <stdio.h> + +static int nproc(void); +static void *tpwork(void *); + +static pthread_t thread_buffer[32]; + +extern const char *lquot, *rquot; + +int +nproc(void) +{ + errno = 0; + + /* Grab the number of processors available on the users system. If we can + we query sysconf() but fallback to 1 for systems that don’t support the + sysconf() method. The user can also override this via the GRAB_NPROCS + environment variable, and if that’s invalid then we just issue a + diagnostic and default to 1. + + We don’t want to error on an invalid value for GRAB_NPROCS because we + might be running this tool as part of an editor plugin for example where + finding the root cause of your regexp-search failing may not be so + trivial. */ + + const char *ev = getenv("GRAB_NPROCS"); + if (ev != nullptr && *ev != 0) { + const char *endptr; + long n = strtol(ev, (char **)&endptr, 10); + if (errno == 0 && *endptr == 0) + return (int)n; + if (errno != 0) + warn("strtol: %s:", ev); + if (*endptr != 0) + warn("Invalid value for %s%s%s for GRAB_NPROCS", lquot, ev, rquot); + return 1; + } + +#ifdef _SC_NPROCESSORS_ONLN + return (int)sysconf(_SC_NPROCESSORS_ONLN); +#else + return 1; +#endif +} + +int +tpinit(tpool_t *tp, const char **files, ptrdiff_t filecnt) +{ + tp->files = files; + tp->filecnt = filecnt; + tp->tcnt = nproc(); + tp->tcnt = MIN(tp->tcnt, filecnt); + tp->wi = 0; + + if (tp->tcnt <= 32) + tp->thrds = thread_buffer; + else if ((tp->thrds = malloc(sizeof(*tp->thrds) * tp->tcnt)) == nullptr) + err("malloc:"); + + /* If for whatever reason some threads fail to be created, we don’t + panic but instead just continue using the threads that were able + to spawn. If all threads fail to spawn we return 0 and the caller + will resort to single-threaded behaviour. */ + + int n = 0; + for (int i = 0; i < tp->tcnt; i++) { + if ((errno = pthread_create(tp->thrds + n, nullptr, tpwork, tp)) != 0) + warn("failed to create thread:"); + else + n++; + } + return n; +} + +void +tpfree(tpool_t *tp) +{ + for (int i = 0; i < tp->tcnt; i++) + pthread_join(tp->thrds[i], nullptr); + +#if DEBUG + if (tp->thrds != thread_buffer) + free(tp->thrds); +#endif +} + +void * +tpwork(void *arg) +{ + tpool_t *tp = arg; + + allocator_t mem = init_heap_allocator(nullptr); + unsigned char *buf = array_new(mem, typeof(*buf), 4096); + + for (;;) { + ptrdiff_t i = atomic_fetch_add(&tp->wi, 1); + if (i >= tp->filecnt) + break; + process_file(tp->files[i], &buf); + } + + flockfile(stdout); + fwrite(buf, 1, array_len(buf), stdout); + funlockfile(stdout); + +#if DEBUG + array_free(buf); +#endif + return nullptr; +} diff --git a/src/tpool.h b/src/tpool.h new file mode 100644 index 0000000..04f0486 --- /dev/null +++ b/src/tpool.h @@ -0,0 +1,19 @@ +#ifndef GRAB_TPOOL_H +#define GRAB_TPOOL_H + +#include <pthread.h> +#include <stdatomic.h> +#include <stddef.h> + +typedef struct { + int tcnt; + pthread_t *thrds; + atomic_ptrdiff_t wi; + const char **files; + ptrdiff_t filecnt; +} tpool_t; + +int tpinit(tpool_t *tp, const char **files, ptrdiff_t filecnt); +void tpfree(tpool_t *tp); + +#endif /* !GRAB_TPOOL_H */ diff --git a/src/work.c b/src/work.c new file mode 100644 index 0000000..37fd8b8 --- /dev/null +++ b/src/work.c @@ -0,0 +1,453 @@ +#include <sys/mman.h> +#include <sys/stat.h> + +#include <stdatomic.h> +#include <stdckdint.h> +#include <stddef.h> +#include <stdint.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> + +#include <alloc.h> +#include <array.h> +#include <errors.h> +#include <macros.h> +#include <mbstring.h> +#include <pcre2.h> +#include <unicode/string.h> + +#include "exitcodes.h" +#include "flags.h" +#include "work.h" + +#define DEFINE_OPERATOR(fn) \ + void operator_##fn(ptrdiff_t opi, u8view_t sv, u8view_t **hl) +#define array_extend_sv(xs, sv) \ + array_extend((xs), (sv).p, (ptrdiff_t)(sv).len) + +typedef struct { + ptrdiff_t row, col; +} pos_t; + +static pos_t compute_pos(const char8_t *p); +static bool islbrk(u8view_t g); +static int svposcmp(const void *a, const void *b); +static void write_match_to_buffer(u8view_t sv, u8view_t *hl); + +static DEFINE_OPERATOR(dispatch); +static DEFINE_OPERATOR(g); +static DEFINE_OPERATOR(G); +static DEFINE_OPERATOR(h); +static DEFINE_OPERATOR(H); +static DEFINE_OPERATOR(x); +static DEFINE_OPERATOR(X); + +static thread_local const char *filename; +static thread_local char8_t *baseptr; +static thread_local const char8_t *last_match; +static thread_local unsigned char **buf; + +static typeof(operator_dispatch) *operators[] = { + ['g'] = operator_g, + ['G'] = operator_G, + ['h'] = operator_h, + ['H'] = operator_H, + ['x'] = operator_x, + ['X'] = operator_X, +}; + +extern atomic_int rv; +extern op_t *ops; +extern bool cflag; +extern typeof(pcre2_match) *pcre2_match_fn; + + + +void +process_file(const char *locl_filename, unsigned char **locl_buf) +{ + filename = locl_filename; + buf = locl_buf; + + FILE *fp = streq(filename, "-") ? stdin : fopen(filename, "r"); + if (fp == nullptr) { + warn("fopen: %s:", filename); + atomic_store(&rv, EXIT_WARNING); + goto out; + } + + allocator_t mem = init_heap_allocator(nullptr); + if (baseptr == nullptr) + baseptr = array_new(mem, char8_t, 0x1000); + size_t bufsz = array_cap(baseptr); + last_match = baseptr; + + do { + static_assert(sizeof(char8_t) == 1, "sizeof(char8_t) != 1; wtf?"); + baseptr = array_resz(baseptr, bufsz += BUFSIZ); /* TODO: Bounds checking */ + size_t n = fread(baseptr + array_len(baseptr), 1, BUFSIZ, fp); + array_hdr(baseptr)->len += n; + } while (!feof(fp)); + + if (ferror(fp)) { + warn("fread: %s:", filename); + atomic_store(&rv, EXIT_WARNING); + goto out; + } + + /* Shouldn’t need more than 32 ever… */ + static thread_local u8view_t *hl = nullptr; + if (hl == nullptr) + hl = array_new(mem, typeof(*hl), 32); + + operator_dispatch(0, (u8view_t){baseptr, array_len(baseptr)}, &hl); +#if DEBUG + array_free(baseptr); + baseptr = nullptr; + array_free(hl); + hl = nullptr; +#else + array_hdr(baseptr)->len = 0; + array_hdr(hl)->len = 0; +#endif + +out: + if (fp != stdin) + (void)fclose(fp); +} + + + +DEFINE_OPERATOR(dispatch) +{ + if (array_len(ops) == opi) { + if (flags.p) + exit(EXIT_SUCCESS); + atomic_compare_exchange_strong(&rv, &(int){EXIT_NOMATCH}, EXIT_SUCCESS); + write_match_to_buffer(sv, *hl); + } else /* Cast to silence GCC warning */ + operators[(unsigned char)ops[opi].c](opi, sv, hl); +} + +DEFINE_OPERATOR(g) +{ + pcre2_match_data *md = + pcre2_match_data_create_from_pattern(ops[opi].re, nullptr); + int n = pcre2_match_fn(ops[opi].re, sv.p, sv.len, 0, PCRE2_NOTEMPTY, + md, nullptr); + pcre2_match_data_free(md); + + /* This should never happen */ + if (n == 0) + cerr(EXIT_FATAL, "PCRE2 match data too small"); + if (n == PCRE2_ERROR_NOMATCH) + return; + if (n < 0) + ; /* TODO: Handle error */ + + operator_dispatch(opi + 1, sv, hl); +} + +DEFINE_OPERATOR(G) +{ + /* TODO: Can we reuse match data? */ + pcre2_match_data *md = + pcre2_match_data_create_from_pattern(ops[opi].re, nullptr); + int n = pcre2_match_fn(ops[opi].re, sv.p, sv.len, 0, PCRE2_NOTEMPTY, + md, nullptr); + pcre2_match_data_free(md); + + /* This should never happen */ + if (n == 0) + cerr(EXIT_FATAL, "PCRE2 match data too small"); + if (n == PCRE2_ERROR_NOMATCH) + operator_dispatch(opi + 1, sv, hl); + if (n < 0) + ; /* TODO: Handle error */ +} + +DEFINE_OPERATOR(h) +{ + if (flags.p) { + operator_dispatch(opi + 1, sv, hl); + return; + } + + pcre2_match_data *md = + pcre2_match_data_create_from_pattern(ops[opi].re, nullptr); + u8view_t sv_save = sv; + ptrdiff_t origlen = array_len(*hl); + for (;;) { + int n = pcre2_match_fn(ops[opi].re, sv.p, sv.len, 0, + PCRE2_NOTEMPTY, md, nullptr); + /* This should never happen */ + if (n == 0) + cerr(EXIT_FATAL, "PCRE2 match data too small"); + if (n == PCRE2_ERROR_NOMATCH) + break; + if (n < 0) + ; /* TODO: Handle error */ + + size_t *ov = pcre2_get_ovector_pointer(md); + array_push(hl, ((u8view_t){sv.p + ov[0], ov[1] - ov[0]})); + VSHFT(&sv, ov[1]); + } + pcre2_match_data_free(md); + operator_dispatch(opi + 1, sv_save, hl); + array_hdr(*hl)->len = origlen; +} + +DEFINE_OPERATOR(H) +{ + if (flags.p) { + operator_dispatch(opi + 1, sv, hl); + return; + } + + pcre2_match_data *md = + pcre2_match_data_create_from_pattern(ops[opi].re, nullptr); + u8view_t sv_save = sv; + ptrdiff_t origlen = array_len(*hl); + for (;;) { + int n = pcre2_match_fn(ops[opi].re, sv.p, sv.len, 0, PCRE2_NOTEMPTY, + md, nullptr); + /* This should never happen */ + if (n == 0) + cerr(EXIT_FATAL, "PCRE2 match data too small"); + if (n == PCRE2_ERROR_NOMATCH) + break; + if (n < 0) + ; /* TODO: Handle error */ + + size_t *ov = pcre2_get_ovector_pointer(md); + array_push(hl, ((u8view_t){sv.p, ov[0]})); + VSHFT(&sv, ov[1]); + } + pcre2_match_data_free(md); + operator_dispatch(opi + 1, sv_save, hl); + array_hdr(*hl)->len = origlen; +} + +DEFINE_OPERATOR(x) +{ + pcre2_match_data *md = + pcre2_match_data_create_from_pattern(ops[opi].re, nullptr); + for (;;) { + int n = pcre2_match_fn(ops[opi].re, sv.p, sv.len, 0, PCRE2_NOTEMPTY, + md, nullptr); + /* This should never happen */ + if (n == 0) + cerr(EXIT_FATAL, "PCRE2 match data too small"); + if (n == PCRE2_ERROR_NOMATCH) + break; + if (n < 0) + ; /* TODO: Handle error */ + + size_t *ov = pcre2_get_ovector_pointer(md); + operator_dispatch(opi + 1, (u8view_t){sv.p + ov[0], ov[1] - ov[0]}, hl); + VSHFT(&sv, ov[1]); + } + pcre2_match_data_free(md); +} + +DEFINE_OPERATOR(X) +{ + pcre2_match_data *md = + pcre2_match_data_create_from_pattern(ops[opi].re, nullptr); + for (;;) { + int n = pcre2_match_fn(ops[opi].re, sv.p, sv.len, 0, PCRE2_NOTEMPTY, + md, nullptr); + /* This should never happen */ + if (n == 0) + cerr(EXIT_FATAL, "PCRE2 match data too small"); + if (n == PCRE2_ERROR_NOMATCH) + break; + if (n < 0) + ; /* TODO: Handle error */ + + size_t *ov = pcre2_get_ovector_pointer(md); + if (ov[0] != 0) + operator_dispatch(opi + 1, (u8view_t){sv.p, ov[0]}, hl); + VSHFT(&sv, ov[1]); + } + if (sv.len != 0) + operator_dispatch(opi + 1, sv, hl); + pcre2_match_data_free(md); +} + + + +static inline bool +views_overlap(const u8view_t a, const u8view_t b) +{ + const char8_t *p = a.p + a.len; + return p >= b.p && p <= b.p + b.len; +} + +void +write_match_to_buffer(u8view_t sv, u8view_t *hl) +{ + const u8view_t COL_FN = !flags.c ? U8("") : U8("\33[35m"); + const u8view_t COL_HL = !flags.c ? U8("") : U8("\33[01;31m"); + const u8view_t COL_LN = !flags.c ? U8("") : U8("\33[32m"); + const u8view_t COL_SE = !flags.c ? U8("") : U8("\33[36m"); + const u8view_t COL_RS = !flags.c ? U8("") : U8("\33[0m"); + + if ( +#if GIT_GRAB + true +#else + flags.do_header +#endif + ) { + char sep = flags.z ? 0 : ':'; + + size_t filenamesz = strlen(filename); + + array_extend_sv(buf, COL_FN); + array_extend(buf, filename, (ptrdiff_t)filenamesz); + array_extend_sv(buf, COL_RS); + + array_extend_sv(buf, COL_SE); + array_push(buf, sep); + array_extend_sv(buf, COL_RS); + + /* GCC things ‘offset’ can overflow because our offsets have type + ptrdiff_t which if negative would have a ‘-’ in the front, but + we know that the match positions can’t be negative so it’s + safe to ignore. */ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wformat-overflow" + + int offsetsz; + char offset[/* len(INT64_MAX - 1) */ 19]; + if (flags.l) { + pos_t p = compute_pos(sv.p); + + offsetsz = sprintf(offset, "%td", p.row + 1); + array_extend_sv(buf, COL_LN); + array_extend(buf, offset, offsetsz); + array_extend_sv(buf, COL_RS); + + array_extend_sv(buf, COL_SE); + array_push(buf, sep); + array_extend_sv(buf, COL_RS); + + offsetsz = sprintf(offset, "%td", p.col + 1); + array_extend_sv(buf, COL_LN); + array_extend(buf, offset, offsetsz); + array_extend_sv(buf, COL_RS); + } else { + offsetsz = sprintf(offset, "%td", sv.p - baseptr); + array_extend_sv(buf, COL_LN); + array_extend(buf, offset, offsetsz); + array_extend_sv(buf, COL_RS); + } + + array_extend_sv(buf, COL_SE); + array_push(buf, sep); + array_extend_sv(buf, COL_RS); + } + +#pragma GCC diagnostic pop + + /* Here we need to take all the views of regions to highlight, and try + to merge them into a simpler form. This happens in two steps: + + 1. Sort the views by their starting position in the matched text. + 2. Merge overlapping views. + + After this process we should have the most reduced possible set of + views. The next part is to actually print the highlighted regions + possible which requires bounds-checking as highlighted regions may + begin before or end after the matched text when using patterns such + as ‘h/.+/ x/.$/’. */ + + static thread_local u8view_t *sorted = nullptr; + if (sorted == nullptr) { + allocator_t mem = init_heap_allocator(nullptr); + ptrdiff_t buflen = array_len(hl); + buflen = MAX(buflen, 16); + sorted = array_new(mem, typeof(*sorted), buflen); + } else + array_hdr(sorted)->len = 0; + + array_extend(&sorted, hl, array_len(hl)); + qsort(sorted, array_len(sorted), sizeof(*sorted), svposcmp); + + for (ptrdiff_t i = 0, len = array_len(sorted); i < len - 1;) { + if (views_overlap(sorted[i], sorted[i + 1])) { + sorted[i].len = sorted[i + 1].p + sorted[i + 1].len - sorted[i].p; + memmove(hl + i + 1, hl + i + 2, sizeof(*hl) * (len - i - 1)); + array_hdr(sorted)->len = --len; + } else + i++; + } + + for (ptrdiff_t i = 0, len = array_len(sorted); i < len; i++) { + if (i < len - 1 && sorted[i].p == sorted[i + 1].p) + continue; + array_extend(buf, sv.p, sorted[i].p - sv.p); + array_extend_sv(buf, COL_HL); + array_extend_sv(buf, sorted[i]); + array_extend_sv(buf, COL_RS); + ptrdiff_t Δ = sorted[i].p - sv.p + sorted[i].len; + VSHFT(&sv, Δ); + } + array_extend_sv(buf, sv); + +#if DEBUG + array_free(sorted); + sorted = nullptr; +#endif + + if (flags.z) + array_push(buf, 0); + else { + ptrdiff_t bufsz = array_len(*buf); + if (!flags.s || bufsz == 0 || (*buf)[bufsz - 1] != '\n') + array_push(buf, '\n'); + } +} + +pos_t +compute_pos(const char8_t *ptr) +{ + static thread_local pos_t p; + if (last_match == baseptr) + p.row = p.col = 0; + u8view_t g, sv = {last_match, PTRDIFF_MAX}; + while (sv.p < ptr) { + ucsgnext(&g, &sv); + if (islbrk(g)) { + p.row++; + p.col = 0; + } else + p.col = ucswdth(g, p.col, 8); /* TODO: Configurable tabsize? */ + } + last_match = sv.p; + return p; +} + +bool +islbrk(u8view_t g) +{ + return ucseq(g, U8("\n")) + || ucseq(g, U8("\v")) + || ucseq(g, U8("\f")) + || ucseq(g, U8("\r\n")) + || ucseq(g, U8("\x85")) + || ucseq(g, U8("\u2028")) + || ucseq(g, U8("\u2029")); +} + +int +svposcmp(const void *a_, const void *b_) +{ + const u8view_t *a = a_, + *b = b_; + ptrdiff_t Δ = a->p - b->p; + return Δ == 0 ? (ptrdiff_t)a->len - (ptrdiff_t)b->len : Δ; +} diff --git a/src/work.h b/src/work.h new file mode 100644 index 0000000..644a244 --- /dev/null +++ b/src/work.h @@ -0,0 +1,16 @@ +#ifndef GRAB_WORK_H +#define GRAB_WORK_H + +#include <pcre2.h> + +typedef struct { + char c; + pcre2_code *re; +#if DEBUG + bool free_me; +#endif +} op_t; + +void process_file(const char *filename, unsigned char **buf); + +#endif /* !GRAB_WORK_H */ diff --git a/vendor/librune/.gitignore b/vendor/librune/.gitignore deleted file mode 100644 index 457da10..0000000 --- a/vendor/librune/.gitignore +++ /dev/null @@ -1,12 +0,0 @@ -.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 deleted file mode 100644 index b946725..0000000 --- a/vendor/librune/LICENSE +++ /dev/null @@ -1,14 +0,0 @@ -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 deleted file mode 100644 index 6e1f772..0000000 --- a/vendor/librune/README.md +++ /dev/null @@ -1,60 +0,0 @@ -# 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 -- `rtype.h` — rune categorization à la `ctype.h` -- `rune.h` — rune-constants, -macros, and -functions -- `utf8.h` — UTF-8 encoding, decoding, iteration, etc. - - -## 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 deleted file mode 100644 index b8b7ece..0000000 --- a/vendor/librune/cbs.h +++ /dev/null @@ -1,953 +0,0 @@ -/* 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 **_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 deleted file mode 100644 index aeaa01a..0000000 --- a/vendor/librune/data/GraphemeBreakTest.txt +++ /dev/null @@ -1,1187 +0,0 @@ -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 deleted file mode 100644 index 0ba10e9..0000000 --- a/vendor/librune/data/emoji-data.txt +++ /dev/null @@ -1,1320 +0,0 @@ -# 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 deleted file mode 100755 index 1146327..0000000 --- a/vendor/librune/gen/gbrk +++ /dev/null @@ -1,114 +0,0 @@ -#!/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 prop; -} 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 deleted file mode 100755 index a55b08a..0000000 --- a/vendor/librune/gen/mkfile +++ /dev/null @@ -1,37 +0,0 @@ -#!/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-cat b/vendor/librune/gen/rtype-cat deleted file mode 100755 index e35fb77..0000000 --- a/vendor/librune/gen/rtype-cat +++ /dev/null @@ -1,104 +0,0 @@ -#!/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/cat.h - -readonly URL='https://www.unicode.org/Public/UCD/latest/ucd/UnicodeData.txt' -cache "$URL" - -cat <<C -/* This file is autogenerated by gen/rtype-cat; DO NOT EDIT. */ - -#ifndef RUNE_INTERNAL_RTYPE_CAT_H -#define RUNE_INTERNAL_RTYPE_CAT_H - -/* IWYU pragma: private */ -/* clang-format off */ - -#include "../types.h" -#include "../../rtype.h" - -static const enum unicat rtype_cat_lat1_tbl[] = { -C - -gawk ' -BEGIN { - FS = ";" -} - -{ - s = "UC_" 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/* | paste -d' ' - - - - - - - - | sed 's/^/\t/' - -cat <<C -}; - -static const struct { - rune lo, hi; - enum unicat val; -} rtype_cat_tbl[] = { -C - -gawk ' -BEGIN { - FS = ";" -} - -{ - s = "UC_" 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{0x%06X, 0x%06X, %s},\n", lo, i, props[lo] - } -} -' /tmp/librune/rtype/* | sort - -cat <<C -}; - -#endif /* !RUNE_INTERNAL_RTYPE_CAT_H */ -C diff --git a/vendor/librune/gen/rtype-prop b/vendor/librune/gen/rtype-prop deleted file mode 100755 index 4c62884..0000000 --- a/vendor/librune/gen/rtype-prop +++ /dev/null @@ -1,116 +0,0 @@ -#!/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' - -cache "$URL1" & -cache "$URL2" & -wait - -props1=' -ASCII_Hex_Digit -Bidi_Control -Dash -Deprecated -Diacritic -Extender -Hex_Digit -ID_Compat_Math_Continue -ID_Compat_Math_Start -Ideographic -IDS_Binary_Operator -IDS_Trinary_Operator -IDS_Unary_Operator -Join_Control -Logical_Order_Exception -Noncharacter_Code_Point -Pattern_Syntax -Pattern_White_Space -Prepended_Concatenation_Mark -Quotation_Mark -Radical -Regional_Indicator -Sentence_Terminal -Soft_Dotted -Terminal_Punctuation -Unified_Ideograph -Variation_Selector -White_Space -' - -props2=' -Alphabetic -Cased -Case_Ignorable -Changes_When_Casefolded -Changes_When_Casemapped -Changes_When_Lowercased -Changes_When_Titlecased -Changes_When_Uppercased -Default_Ignorable_Code_Point -Grapheme_Base -Grapheme_Extend -ID_Continue -ID_Start -Indic_Conjunct_Break -Lowercase -Math -Uppercase -XID_Continue -XID_Start -' -# InCB - -{ - for prop in $props1 - do - lprop=$(echo $prop | tr A-Z a-z) - - printf 'rune_has_prop_%s…' $lprop >&2 - - gawk -M -v prop=$prop -f gen/rtype-prop.awk \ - /tmp/librune/rtype/PropList.txt \ - >lib/rtype/rune_has_prop_$lprop.c - - echo "[[unsequenced]] bool rune_has_prop_$lprop(rune);" - echo ' DONE' >&2 - done - - for prop in $props2 - do - lprop=$(echo $prop | tr A-Z a-z) - - printf 'rune_has_prop_%s…' $lprop >&2 - - gawk -M -v prop=$prop -f gen/rtype-prop.awk \ - /tmp/librune/rtype/DerivedCoreProperties.txt \ - >lib/rtype/rune_has_prop_$lprop.c - - echo "[[unsequenced]] bool rune_has_prop_$lprop(rune);" - echo ' DONE' >&2 - done -} | 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 diff --git a/vendor/librune/gen/rtype-prop.awk b/vendor/librune/gen/rtype-prop.awk deleted file mode 100644 index 59b4a99..0000000 --- a/vendor/librune/gen/rtype-prop.awk +++ /dev/null @@ -1,61 +0,0 @@ -BEGIN { - FS = "( *#.*| +; +)" - - print "/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */" - print "" - print "#include \"rtype.h\"" - print "" - print "#include \"internal/common.h\"" - 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 { - for (i = 0; i <= 0xFF; i++) { - if (xs[i]) - mask = or(mask, lshift(1, i)) - } - print "#if BIT_LOOKUP" - printf "static const unsigned _BitInt(LATIN1_MAX + 1) mask = 0x%Xuwb;\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{0x%06X, 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 "rune_has_prop_%s(rune ch)\n", tolower(prop) - print "{" - print "\treturn" - print "#if BIT_LOOKUP" - print "\t\tch <= LATIN1_MAX ? (mask & ch) :" - print "#endif" - print "\t\tlookup(ch);" - print "}" -} diff --git a/vendor/librune/include/builder.h b/vendor/librune/include/builder.h deleted file mode 100644 index 271fcbf..0000000 --- a/vendor/librune/include/builder.h +++ /dev/null @@ -1,29 +0,0 @@ -#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); - -#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 deleted file mode 100644 index 7cdb31c..0000000 --- a/vendor/librune/include/gbrk.h +++ /dev/null @@ -1,10 +0,0 @@ -#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 deleted file mode 100644 index a05f33c..0000000 --- a/vendor/librune/include/internal/common.h +++ /dev/null @@ -1,29 +0,0 @@ -#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 deleted file mode 100644 index 1db6898..0000000 --- a/vendor/librune/include/internal/gbrk_lookup.h +++ /dev/null @@ -1,1570 +0,0 @@ -/* This file is autogenerated by gen/gbrk; DO NOT EDIT. */ - -/* TODO: Change tables to constexpr from const when Clangd gets better */ - -#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 prop; -} 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 deleted file mode 100644 index 5369c48..0000000 --- a/vendor/librune/include/internal/qmacros.h +++ /dev/null @@ -1,25 +0,0 @@ -#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/cat.h b/vendor/librune/include/internal/rtype/cat.h deleted file mode 100644 index d84082a..0000000 --- a/vendor/librune/include/internal/rtype/cat.h +++ /dev/null @@ -1,3295 +0,0 @@ -/* This file is autogenerated by gen/rtype-cat; DO NOT EDIT. */ - -#ifndef RUNE_INTERNAL_RTYPE_CAT_H -#define RUNE_INTERNAL_RTYPE_CAT_H - -/* IWYU pragma: private */ -/* clang-format off */ - -#include "../types.h" -#include "../../rtype.h" - -static const enum unicat rtype_cat_lat1_tbl[] = { - UC_CC, UC_CC, UC_CC, UC_CC, UC_CC, UC_CC, UC_CC, UC_CC, - UC_CC, UC_CC, UC_CC, UC_CC, UC_CC, UC_CC, UC_CC, UC_CC, - UC_CC, UC_CC, UC_CC, UC_CC, UC_CC, UC_CC, UC_CC, UC_CC, - UC_CC, UC_CC, UC_CC, UC_CC, UC_CC, UC_CC, UC_CC, UC_CC, - UC_ZS, UC_PO, UC_PO, UC_PO, UC_SC, UC_PO, UC_PO, UC_PO, - UC_PS, UC_PE, UC_PO, UC_SM, UC_PO, UC_PD, UC_PO, UC_PO, - UC_ND, UC_ND, UC_ND, UC_ND, UC_ND, UC_ND, UC_ND, UC_ND, - UC_ND, UC_ND, UC_PO, UC_PO, UC_SM, UC_SM, UC_SM, UC_PO, - UC_PO, UC_LU, UC_LU, UC_LU, UC_LU, UC_LU, UC_LU, UC_LU, - UC_LU, UC_LU, UC_LU, UC_LU, UC_LU, UC_LU, UC_LU, UC_LU, - UC_LU, UC_LU, UC_LU, UC_LU, UC_LU, UC_LU, UC_LU, UC_LU, - UC_LU, UC_LU, UC_LU, UC_PS, UC_PO, UC_PE, UC_SK, UC_PC, - UC_SK, UC_LL, UC_LL, UC_LL, UC_LL, UC_LL, UC_LL, UC_LL, - UC_LL, UC_LL, UC_LL, UC_LL, UC_LL, UC_LL, UC_LL, UC_LL, - UC_LL, UC_LL, UC_LL, UC_LL, UC_LL, UC_LL, UC_LL, UC_LL, - UC_LL, UC_LL, UC_LL, UC_PS, UC_SM, UC_PE, UC_SM, UC_CC, - UC_CC, UC_CC, UC_CC, UC_CC, UC_CC, UC_CC, UC_CC, UC_CC, - UC_CC, UC_CC, UC_CC, UC_CC, UC_CC, UC_CC, UC_CC, UC_CC, - UC_CC, UC_CC, UC_CC, UC_CC, UC_CC, UC_CC, UC_CC, UC_CC, - UC_CC, UC_CC, UC_CC, UC_CC, UC_CC, UC_CC, UC_CC, UC_CC, - UC_ZS, UC_PO, UC_SC, UC_SC, UC_SC, UC_SC, UC_SO, UC_PO, - UC_SK, UC_SO, UC_LO, UC_PI, UC_SM, UC_CF, UC_SO, UC_SK, - UC_SO, UC_SM, UC_NO, UC_NO, UC_SK, UC_LL, UC_PO, UC_PO, - UC_SK, UC_NO, UC_LO, UC_PF, UC_NO, UC_NO, UC_NO, UC_PO, - UC_LU, UC_LU, UC_LU, UC_LU, UC_LU, UC_LU, UC_LU, UC_LU, - UC_LU, UC_LU, UC_LU, UC_LU, UC_LU, UC_LU, UC_LU, UC_LU, - UC_LU, UC_LU, UC_LU, UC_LU, UC_LU, UC_LU, UC_LU, UC_SM, - UC_LU, UC_LU, UC_LU, UC_LU, UC_LU, UC_LU, UC_LU, UC_LL, - UC_LL, UC_LL, UC_LL, UC_LL, UC_LL, UC_LL, UC_LL, UC_LL, - UC_LL, UC_LL, UC_LL, UC_LL, UC_LL, UC_LL, UC_LL, UC_LL, - UC_LL, UC_LL, UC_LL, UC_LL, UC_LL, UC_LL, UC_LL, UC_SM, - UC_LL, UC_LL, UC_LL, UC_LL, UC_LL, UC_LL, UC_LL, UC_LL, -}; - -static const struct { - rune lo, hi; - enum unicat val; -} rtype_cat_tbl[] = { - {0x000100, 0x000100, UC_LU}, - {0x000101, 0x000101, UC_LL}, - {0x000102, 0x000102, UC_LU}, - {0x000103, 0x000103, UC_LL}, - {0x000104, 0x000104, UC_LU}, - {0x000105, 0x000105, UC_LL}, - {0x000106, 0x000106, UC_LU}, - {0x000107, 0x000107, UC_LL}, - {0x000108, 0x000108, UC_LU}, - {0x000109, 0x000109, UC_LL}, - {0x00010A, 0x00010A, UC_LU}, - {0x00010B, 0x00010B, UC_LL}, - {0x00010C, 0x00010C, UC_LU}, - {0x00010D, 0x00010D, UC_LL}, - {0x00010E, 0x00010E, UC_LU}, - {0x00010F, 0x00010F, UC_LL}, - {0x000110, 0x000110, UC_LU}, - {0x000111, 0x000111, UC_LL}, - {0x000112, 0x000112, UC_LU}, - {0x000113, 0x000113, UC_LL}, - {0x000114, 0x000114, UC_LU}, - {0x000115, 0x000115, UC_LL}, - {0x000116, 0x000116, UC_LU}, - {0x000117, 0x000117, UC_LL}, - {0x000118, 0x000118, UC_LU}, - {0x000119, 0x000119, UC_LL}, - {0x00011A, 0x00011A, UC_LU}, - {0x00011B, 0x00011B, UC_LL}, - {0x00011C, 0x00011C, UC_LU}, - {0x00011D, 0x00011D, UC_LL}, - {0x00011E, 0x00011E, UC_LU}, - {0x00011F, 0x00011F, UC_LL}, - {0x000120, 0x000120, UC_LU}, - {0x000121, 0x000121, UC_LL}, - {0x000122, 0x000122, UC_LU}, - {0x000123, 0x000123, UC_LL}, - {0x000124, 0x000124, UC_LU}, - {0x000125, 0x000125, UC_LL}, - {0x000126, 0x000126, UC_LU}, - {0x000127, 0x000127, UC_LL}, - {0x000128, 0x000128, UC_LU}, - {0x000129, 0x000129, UC_LL}, - {0x00012A, 0x00012A, UC_LU}, - {0x00012B, 0x00012B, UC_LL}, - {0x00012C, 0x00012C, UC_LU}, - {0x00012D, 0x00012D, UC_LL}, - {0x00012E, 0x00012E, UC_LU}, - {0x00012F, 0x00012F, UC_LL}, - {0x000130, 0x000130, UC_LU}, - {0x000131, 0x000131, UC_LL}, - {0x000132, 0x000132, UC_LU}, - {0x000133, 0x000133, UC_LL}, - {0x000134, 0x000134, UC_LU}, - {0x000135, 0x000135, UC_LL}, - {0x000136, 0x000136, UC_LU}, - {0x000137, 0x000138, UC_LL}, - {0x000139, 0x000139, UC_LU}, - {0x00013A, 0x00013A, UC_LL}, - {0x00013B, 0x00013B, UC_LU}, - {0x00013C, 0x00013C, UC_LL}, - {0x00013D, 0x00013D, UC_LU}, - {0x00013E, 0x00013E, UC_LL}, - {0x00013F, 0x00013F, UC_LU}, - {0x000140, 0x000140, UC_LL}, - {0x000141, 0x000141, UC_LU}, - {0x000142, 0x000142, UC_LL}, - {0x000143, 0x000143, UC_LU}, - {0x000144, 0x000144, UC_LL}, - {0x000145, 0x000145, UC_LU}, - {0x000146, 0x000146, UC_LL}, - {0x000147, 0x000147, UC_LU}, - {0x000148, 0x000149, UC_LL}, - {0x00014A, 0x00014A, UC_LU}, - {0x00014B, 0x00014B, UC_LL}, - {0x00014C, 0x00014C, UC_LU}, - {0x00014D, 0x00014D, UC_LL}, - {0x00014E, 0x00014E, UC_LU}, - {0x00014F, 0x00014F, UC_LL}, - {0x000150, 0x000150, UC_LU}, - {0x000151, 0x000151, UC_LL}, - {0x000152, 0x000152, UC_LU}, - {0x000153, 0x000153, UC_LL}, - {0x000154, 0x000154, UC_LU}, - {0x000155, 0x000155, UC_LL}, - {0x000156, 0x000156, UC_LU}, - {0x000157, 0x000157, UC_LL}, - {0x000158, 0x000158, UC_LU}, - {0x000159, 0x000159, UC_LL}, - {0x00015A, 0x00015A, UC_LU}, - {0x00015B, 0x00015B, UC_LL}, - {0x00015C, 0x00015C, UC_LU}, - {0x00015D, 0x00015D, UC_LL}, - {0x00015E, 0x00015E, UC_LU}, - {0x00015F, 0x00015F, UC_LL}, - {0x000160, 0x000160, UC_LU}, - {0x000161, 0x000161, UC_LL}, - {0x000162, 0x000162, UC_LU}, - {0x000163, 0x000163, UC_LL}, - {0x000164, 0x000164, UC_LU}, - {0x000165, 0x000165, UC_LL}, - {0x000166, 0x000166, UC_LU}, - {0x000167, 0x000167, UC_LL}, - {0x000168, 0x000168, UC_LU}, - {0x000169, 0x000169, UC_LL}, - {0x00016A, 0x00016A, UC_LU}, - {0x00016B, 0x00016B, UC_LL}, - {0x00016C, 0x00016C, UC_LU}, - {0x00016D, 0x00016D, UC_LL}, - {0x00016E, 0x00016E, UC_LU}, - {0x00016F, 0x00016F, UC_LL}, - {0x000170, 0x000170, UC_LU}, - {0x000171, 0x000171, UC_LL}, - {0x000172, 0x000172, UC_LU}, - {0x000173, 0x000173, UC_LL}, - {0x000174, 0x000174, UC_LU}, - {0x000175, 0x000175, UC_LL}, - {0x000176, 0x000176, UC_LU}, - {0x000177, 0x000177, UC_LL}, - {0x000178, 0x000179, UC_LU}, - {0x00017A, 0x00017A, UC_LL}, - {0x00017B, 0x00017B, UC_LU}, - {0x00017C, 0x00017C, UC_LL}, - {0x00017D, 0x00017D, UC_LU}, - {0x00017E, 0x000180, UC_LL}, - {0x000181, 0x000182, UC_LU}, - {0x000183, 0x000183, UC_LL}, - {0x000184, 0x000184, UC_LU}, - {0x000185, 0x000185, UC_LL}, - {0x000186, 0x000187, UC_LU}, - {0x000188, 0x000188, UC_LL}, - {0x000189, 0x00018B, UC_LU}, - {0x00018C, 0x00018D, UC_LL}, - {0x00018E, 0x000191, UC_LU}, - {0x000192, 0x000192, UC_LL}, - {0x000193, 0x000194, UC_LU}, - {0x000195, 0x000195, UC_LL}, - {0x000196, 0x000198, UC_LU}, - {0x000199, 0x00019B, UC_LL}, - {0x00019C, 0x00019D, UC_LU}, - {0x00019E, 0x00019E, UC_LL}, - {0x00019F, 0x0001A0, UC_LU}, - {0x0001A1, 0x0001A1, UC_LL}, - {0x0001A2, 0x0001A2, UC_LU}, - {0x0001A3, 0x0001A3, UC_LL}, - {0x0001A4, 0x0001A4, UC_LU}, - {0x0001A5, 0x0001A5, UC_LL}, - {0x0001A6, 0x0001A7, UC_LU}, - {0x0001A8, 0x0001A8, UC_LL}, - {0x0001A9, 0x0001A9, UC_LU}, - {0x0001AA, 0x0001AB, UC_LL}, - {0x0001AC, 0x0001AC, UC_LU}, - {0x0001AD, 0x0001AD, UC_LL}, - {0x0001AE, 0x0001AF, UC_LU}, - {0x0001B0, 0x0001B0, UC_LL}, - {0x0001B1, 0x0001B3, UC_LU}, - {0x0001B4, 0x0001B4, UC_LL}, - {0x0001B5, 0x0001B5, UC_LU}, - {0x0001B6, 0x0001B6, UC_LL}, - {0x0001B7, 0x0001B8, UC_LU}, - {0x0001B9, 0x0001BA, UC_LL}, - {0x0001BB, 0x0001BB, UC_LO}, - {0x0001BC, 0x0001BC, UC_LU}, - {0x0001BD, 0x0001BF, UC_LL}, - {0x0001C0, 0x0001C3, UC_LO}, - {0x0001C4, 0x0001C4, UC_LU}, - {0x0001C5, 0x0001C5, UC_LT}, - {0x0001C6, 0x0001C6, UC_LL}, - {0x0001C7, 0x0001C7, UC_LU}, - {0x0001C8, 0x0001C8, UC_LT}, - {0x0001C9, 0x0001C9, UC_LL}, - {0x0001CA, 0x0001CA, UC_LU}, - {0x0001CB, 0x0001CB, UC_LT}, - {0x0001CC, 0x0001CC, UC_LL}, - {0x0001CD, 0x0001CD, UC_LU}, - {0x0001CE, 0x0001CE, UC_LL}, - {0x0001CF, 0x0001CF, UC_LU}, - {0x0001D0, 0x0001D0, UC_LL}, - {0x0001D1, 0x0001D1, UC_LU}, - {0x0001D2, 0x0001D2, UC_LL}, - {0x0001D3, 0x0001D3, UC_LU}, - {0x0001D4, 0x0001D4, UC_LL}, - {0x0001D5, 0x0001D5, UC_LU}, - {0x0001D6, 0x0001D6, UC_LL}, - {0x0001D7, 0x0001D7, UC_LU}, - {0x0001D8, 0x0001D8, UC_LL}, - {0x0001D9, 0x0001D9, UC_LU}, - {0x0001DA, 0x0001DA, UC_LL}, - {0x0001DB, 0x0001DB, UC_LU}, - {0x0001DC, 0x0001DD, UC_LL}, - {0x0001DE, 0x0001DE, UC_LU}, - {0x0001DF, 0x0001DF, UC_LL}, - {0x0001E0, 0x0001E0, UC_LU}, - {0x0001E1, 0x0001E1, UC_LL}, - {0x0001E2, 0x0001E2, UC_LU}, - {0x0001E3, 0x0001E3, UC_LL}, - {0x0001E4, 0x0001E4, UC_LU}, - {0x0001E5, 0x0001E5, UC_LL}, - {0x0001E6, 0x0001E6, UC_LU}, - {0x0001E7, 0x0001E7, UC_LL}, - {0x0001E8, 0x0001E8, UC_LU}, - {0x0001E9, 0x0001E9, UC_LL}, - {0x0001EA, 0x0001EA, UC_LU}, - {0x0001EB, 0x0001EB, UC_LL}, - {0x0001EC, 0x0001EC, UC_LU}, - {0x0001ED, 0x0001ED, UC_LL}, - {0x0001EE, 0x0001EE, UC_LU}, - {0x0001EF, 0x0001F0, UC_LL}, - {0x0001F1, 0x0001F1, UC_LU}, - {0x0001F2, 0x0001F2, UC_LT}, - {0x0001F3, 0x0001F3, UC_LL}, - {0x0001F4, 0x0001F4, UC_LU}, - {0x0001F5, 0x0001F5, UC_LL}, - {0x0001F6, 0x0001F8, UC_LU}, - {0x0001F9, 0x0001F9, UC_LL}, - {0x0001FA, 0x0001FA, UC_LU}, - {0x0001FB, 0x0001FB, UC_LL}, - {0x0001FC, 0x0001FC, UC_LU}, - {0x0001FD, 0x0001FD, UC_LL}, - {0x0001FE, 0x0001FE, UC_LU}, - {0x0001FF, 0x0001FF, UC_LL}, - {0x000200, 0x000200, UC_LU}, - {0x000201, 0x000201, UC_LL}, - {0x000202, 0x000202, UC_LU}, - {0x000203, 0x000203, UC_LL}, - {0x000204, 0x000204, UC_LU}, - {0x000205, 0x000205, UC_LL}, - {0x000206, 0x000206, UC_LU}, - {0x000207, 0x000207, UC_LL}, - {0x000208, 0x000208, UC_LU}, - {0x000209, 0x000209, UC_LL}, - {0x00020A, 0x00020A, UC_LU}, - {0x00020B, 0x00020B, UC_LL}, - {0x00020C, 0x00020C, UC_LU}, - {0x00020D, 0x00020D, UC_LL}, - {0x00020E, 0x00020E, UC_LU}, - {0x00020F, 0x00020F, UC_LL}, - {0x000210, 0x000210, UC_LU}, - {0x000211, 0x000211, UC_LL}, - {0x000212, 0x000212, UC_LU}, - {0x000213, 0x000213, UC_LL}, - {0x000214, 0x000214, UC_LU}, - {0x000215, 0x000215, UC_LL}, - {0x000216, 0x000216, UC_LU}, - {0x000217, 0x000217, UC_LL}, - {0x000218, 0x000218, UC_LU}, - {0x000219, 0x000219, UC_LL}, - {0x00021A, 0x00021A, UC_LU}, - {0x00021B, 0x00021B, UC_LL}, - {0x00021C, 0x00021C, UC_LU}, - {0x00021D, 0x00021D, UC_LL}, - {0x00021E, 0x00021E, UC_LU}, - {0x00021F, 0x00021F, UC_LL}, - {0x000220, 0x000220, UC_LU}, - {0x000221, 0x000221, UC_LL}, - {0x000222, 0x000222, UC_LU}, - {0x000223, 0x000223, UC_LL}, - {0x000224, 0x000224, UC_LU}, - {0x000225, 0x000225, UC_LL}, - {0x000226, 0x000226, UC_LU}, - {0x000227, 0x000227, UC_LL}, - {0x000228, 0x000228, UC_LU}, - {0x000229, 0x000229, UC_LL}, - {0x00022A, 0x00022A, UC_LU}, - {0x00022B, 0x00022B, UC_LL}, - {0x00022C, 0x00022C, UC_LU}, - {0x00022D, 0x00022D, UC_LL}, - {0x00022E, 0x00022E, UC_LU}, - {0x00022F, 0x00022F, UC_LL}, - {0x000230, 0x000230, UC_LU}, - {0x000231, 0x000231, UC_LL}, - {0x000232, 0x000232, UC_LU}, - {0x000233, 0x000239, UC_LL}, - {0x00023A, 0x00023B, UC_LU}, - {0x00023C, 0x00023C, UC_LL}, - {0x00023D, 0x00023E, UC_LU}, - {0x00023F, 0x000240, UC_LL}, - {0x000241, 0x000241, UC_LU}, - {0x000242, 0x000242, UC_LL}, - {0x000243, 0x000246, UC_LU}, - {0x000247, 0x000247, UC_LL}, - {0x000248, 0x000248, UC_LU}, - {0x000249, 0x000249, UC_LL}, - {0x00024A, 0x00024A, UC_LU}, - {0x00024B, 0x00024B, UC_LL}, - {0x00024C, 0x00024C, UC_LU}, - {0x00024D, 0x00024D, UC_LL}, - {0x00024E, 0x00024E, UC_LU}, - {0x00024F, 0x000293, UC_LL}, - {0x000294, 0x000294, UC_LO}, - {0x000295, 0x0002AF, UC_LL}, - {0x0002B0, 0x0002C1, UC_LM}, - {0x0002C2, 0x0002C5, UC_SK}, - {0x0002C6, 0x0002D1, UC_LM}, - {0x0002D2, 0x0002DF, UC_SK}, - {0x0002E0, 0x0002E4, UC_LM}, - {0x0002E5, 0x0002EB, UC_SK}, - {0x0002EC, 0x0002EC, UC_LM}, - {0x0002ED, 0x0002ED, UC_SK}, - {0x0002EE, 0x0002EE, UC_LM}, - {0x0002EF, 0x0002FF, UC_SK}, - {0x000300, 0x00036F, UC_MN}, - {0x000370, 0x000370, UC_LU}, - {0x000371, 0x000371, UC_LL}, - {0x000372, 0x000372, UC_LU}, - {0x000373, 0x000373, UC_LL}, - {0x000374, 0x000374, UC_LM}, - {0x000375, 0x000375, UC_SK}, - {0x000376, 0x000376, UC_LU}, - {0x000377, 0x000377, UC_LL}, - {0x00037A, 0x00037A, UC_LM}, - {0x00037B, 0x00037D, UC_LL}, - {0x00037E, 0x00037E, UC_PO}, - {0x00037F, 0x00037F, UC_LU}, - {0x000384, 0x000385, UC_SK}, - {0x000386, 0x000386, UC_LU}, - {0x000387, 0x000387, UC_PO}, - {0x000388, 0x00038A, UC_LU}, - {0x00038C, 0x00038C, UC_LU}, - {0x00038E, 0x00038F, UC_LU}, - {0x000390, 0x000390, UC_LL}, - {0x000391, 0x0003A1, UC_LU}, - {0x0003A3, 0x0003AB, UC_LU}, - {0x0003AC, 0x0003CE, UC_LL}, - {0x0003CF, 0x0003CF, UC_LU}, - {0x0003D0, 0x0003D1, UC_LL}, - {0x0003D2, 0x0003D4, UC_LU}, - {0x0003D5, 0x0003D7, UC_LL}, - {0x0003D8, 0x0003D8, UC_LU}, - {0x0003D9, 0x0003D9, UC_LL}, - {0x0003DA, 0x0003DA, UC_LU}, - {0x0003DB, 0x0003DB, UC_LL}, - {0x0003DC, 0x0003DC, UC_LU}, - {0x0003DD, 0x0003DD, UC_LL}, - {0x0003DE, 0x0003DE, UC_LU}, - {0x0003DF, 0x0003DF, UC_LL}, - {0x0003E0, 0x0003E0, UC_LU}, - {0x0003E1, 0x0003E1, UC_LL}, - {0x0003E2, 0x0003E2, UC_LU}, - {0x0003E3, 0x0003E3, UC_LL}, - {0x0003E4, 0x0003E4, UC_LU}, - {0x0003E5, 0x0003E5, UC_LL}, - {0x0003E6, 0x0003E6, UC_LU}, - {0x0003E7, 0x0003E7, UC_LL}, - {0x0003E8, 0x0003E8, UC_LU}, - {0x0003E9, 0x0003E9, UC_LL}, - {0x0003EA, 0x0003EA, UC_LU}, - {0x0003EB, 0x0003EB, UC_LL}, - {0x0003EC, 0x0003EC, UC_LU}, - {0x0003ED, 0x0003ED, UC_LL}, - {0x0003EE, 0x0003EE, UC_LU}, - {0x0003EF, 0x0003F3, UC_LL}, - {0x0003F4, 0x0003F4, UC_LU}, - {0x0003F5, 0x0003F5, UC_LL}, - {0x0003F6, 0x0003F6, UC_SM}, - {0x0003F7, 0x0003F7, UC_LU}, - {0x0003F8, 0x0003F8, UC_LL}, - {0x0003F9, 0x0003FA, UC_LU}, - {0x0003FB, 0x0003FC, UC_LL}, - {0x0003FD, 0x00042F, UC_LU}, - {0x000430, 0x00045F, UC_LL}, - {0x000460, 0x000460, UC_LU}, - {0x000461, 0x000461, UC_LL}, - {0x000462, 0x000462, UC_LU}, - {0x000463, 0x000463, UC_LL}, - {0x000464, 0x000464, UC_LU}, - {0x000465, 0x000465, UC_LL}, - {0x000466, 0x000466, UC_LU}, - {0x000467, 0x000467, UC_LL}, - {0x000468, 0x000468, UC_LU}, - {0x000469, 0x000469, UC_LL}, - {0x00046A, 0x00046A, UC_LU}, - {0x00046B, 0x00046B, UC_LL}, - {0x00046C, 0x00046C, UC_LU}, - {0x00046D, 0x00046D, UC_LL}, - {0x00046E, 0x00046E, UC_LU}, - {0x00046F, 0x00046F, UC_LL}, - {0x000470, 0x000470, UC_LU}, - {0x000471, 0x000471, UC_LL}, - {0x000472, 0x000472, UC_LU}, - {0x000473, 0x000473, UC_LL}, - {0x000474, 0x000474, UC_LU}, - {0x000475, 0x000475, UC_LL}, - {0x000476, 0x000476, UC_LU}, - {0x000477, 0x000477, UC_LL}, - {0x000478, 0x000478, UC_LU}, - {0x000479, 0x000479, UC_LL}, - {0x00047A, 0x00047A, UC_LU}, - {0x00047B, 0x00047B, UC_LL}, - {0x00047C, 0x00047C, UC_LU}, - {0x00047D, 0x00047D, UC_LL}, - {0x00047E, 0x00047E, UC_LU}, - {0x00047F, 0x00047F, UC_LL}, - {0x000480, 0x000480, UC_LU}, - {0x000481, 0x000481, UC_LL}, - {0x000482, 0x000482, UC_SO}, - {0x000483, 0x000487, UC_MN}, - {0x000488, 0x000489, UC_ME}, - {0x00048A, 0x00048A, UC_LU}, - {0x00048B, 0x00048B, UC_LL}, - {0x00048C, 0x00048C, UC_LU}, - {0x00048D, 0x00048D, UC_LL}, - {0x00048E, 0x00048E, UC_LU}, - {0x00048F, 0x00048F, UC_LL}, - {0x000490, 0x000490, UC_LU}, - {0x000491, 0x000491, UC_LL}, - {0x000492, 0x000492, UC_LU}, - {0x000493, 0x000493, UC_LL}, - {0x000494, 0x000494, UC_LU}, - {0x000495, 0x000495, UC_LL}, - {0x000496, 0x000496, UC_LU}, - {0x000497, 0x000497, UC_LL}, - {0x000498, 0x000498, UC_LU}, - {0x000499, 0x000499, UC_LL}, - {0x00049A, 0x00049A, UC_LU}, - {0x00049B, 0x00049B, UC_LL}, - {0x00049C, 0x00049C, UC_LU}, - {0x00049D, 0x00049D, UC_LL}, - {0x00049E, 0x00049E, UC_LU}, - {0x00049F, 0x00049F, UC_LL}, - {0x0004A0, 0x0004A0, UC_LU}, - {0x0004A1, 0x0004A1, UC_LL}, - {0x0004A2, 0x0004A2, UC_LU}, - {0x0004A3, 0x0004A3, UC_LL}, - {0x0004A4, 0x0004A4, UC_LU}, - {0x0004A5, 0x0004A5, UC_LL}, - {0x0004A6, 0x0004A6, UC_LU}, - {0x0004A7, 0x0004A7, UC_LL}, - {0x0004A8, 0x0004A8, UC_LU}, - {0x0004A9, 0x0004A9, UC_LL}, - {0x0004AA, 0x0004AA, UC_LU}, - {0x0004AB, 0x0004AB, UC_LL}, - {0x0004AC, 0x0004AC, UC_LU}, - {0x0004AD, 0x0004AD, UC_LL}, - {0x0004AE, 0x0004AE, UC_LU}, - {0x0004AF, 0x0004AF, UC_LL}, - {0x0004B0, 0x0004B0, UC_LU}, - {0x0004B1, 0x0004B1, UC_LL}, - {0x0004B2, 0x0004B2, UC_LU}, - {0x0004B3, 0x0004B3, UC_LL}, - {0x0004B4, 0x0004B4, UC_LU}, - {0x0004B5, 0x0004B5, UC_LL}, - {0x0004B6, 0x0004B6, UC_LU}, - {0x0004B7, 0x0004B7, UC_LL}, - {0x0004B8, 0x0004B8, UC_LU}, - {0x0004B9, 0x0004B9, UC_LL}, - {0x0004BA, 0x0004BA, UC_LU}, - {0x0004BB, 0x0004BB, UC_LL}, - {0x0004BC, 0x0004BC, UC_LU}, - {0x0004BD, 0x0004BD, UC_LL}, - {0x0004BE, 0x0004BE, UC_LU}, - {0x0004BF, 0x0004BF, UC_LL}, - {0x0004C0, 0x0004C1, UC_LU}, - {0x0004C2, 0x0004C2, UC_LL}, - {0x0004C3, 0x0004C3, UC_LU}, - {0x0004C4, 0x0004C4, UC_LL}, - {0x0004C5, 0x0004C5, UC_LU}, - {0x0004C6, 0x0004C6, UC_LL}, - {0x0004C7, 0x0004C7, UC_LU}, - {0x0004C8, 0x0004C8, UC_LL}, - {0x0004C9, 0x0004C9, UC_LU}, - {0x0004CA, 0x0004CA, UC_LL}, - {0x0004CB, 0x0004CB, UC_LU}, - {0x0004CC, 0x0004CC, UC_LL}, - {0x0004CD, 0x0004CD, UC_LU}, - {0x0004CE, 0x0004CF, UC_LL}, - {0x0004D0, 0x0004D0, UC_LU}, - {0x0004D1, 0x0004D1, UC_LL}, - {0x0004D2, 0x0004D2, UC_LU}, - {0x0004D3, 0x0004D3, UC_LL}, - {0x0004D4, 0x0004D4, UC_LU}, - {0x0004D5, 0x0004D5, UC_LL}, - {0x0004D6, 0x0004D6, UC_LU}, - {0x0004D7, 0x0004D7, UC_LL}, - {0x0004D8, 0x0004D8, UC_LU}, - {0x0004D9, 0x0004D9, UC_LL}, - {0x0004DA, 0x0004DA, UC_LU}, - {0x0004DB, 0x0004DB, UC_LL}, - {0x0004DC, 0x0004DC, UC_LU}, - {0x0004DD, 0x0004DD, UC_LL}, - {0x0004DE, 0x0004DE, UC_LU}, - {0x0004DF, 0x0004DF, UC_LL}, - {0x0004E0, 0x0004E0, UC_LU}, - {0x0004E1, 0x0004E1, UC_LL}, - {0x0004E2, 0x0004E2, UC_LU}, - {0x0004E3, 0x0004E3, UC_LL}, - {0x0004E4, 0x0004E4, UC_LU}, - {0x0004E5, 0x0004E5, UC_LL}, - {0x0004E6, 0x0004E6, UC_LU}, - {0x0004E7, 0x0004E7, UC_LL}, - {0x0004E8, 0x0004E8, UC_LU}, - {0x0004E9, 0x0004E9, UC_LL}, - {0x0004EA, 0x0004EA, UC_LU}, - {0x0004EB, 0x0004EB, UC_LL}, - {0x0004EC, 0x0004EC, UC_LU}, - {0x0004ED, 0x0004ED, UC_LL}, - {0x0004EE, 0x0004EE, UC_LU}, - {0x0004EF, 0x0004EF, UC_LL}, - {0x0004F0, 0x0004F0, UC_LU}, - {0x0004F1, 0x0004F1, UC_LL}, - {0x0004F2, 0x0004F2, UC_LU}, - {0x0004F3, 0x0004F3, UC_LL}, - {0x0004F4, 0x0004F4, UC_LU}, - {0x0004F5, 0x0004F5, UC_LL}, - {0x0004F6, 0x0004F6, UC_LU}, - {0x0004F7, 0x0004F7, UC_LL}, - {0x0004F8, 0x0004F8, UC_LU}, - {0x0004F9, 0x0004F9, UC_LL}, - {0x0004FA, 0x0004FA, UC_LU}, - {0x0004FB, 0x0004FB, UC_LL}, - {0x0004FC, 0x0004FC, UC_LU}, - {0x0004FD, 0x0004FD, UC_LL}, - {0x0004FE, 0x0004FE, UC_LU}, - {0x0004FF, 0x0004FF, UC_LL}, - {0x000500, 0x000500, UC_LU}, - {0x000501, 0x000501, UC_LL}, - {0x000502, 0x000502, UC_LU}, - {0x000503, 0x000503, UC_LL}, - {0x000504, 0x000504, UC_LU}, - {0x000505, 0x000505, UC_LL}, - {0x000506, 0x000506, UC_LU}, - {0x000507, 0x000507, UC_LL}, - {0x000508, 0x000508, UC_LU}, - {0x000509, 0x000509, UC_LL}, - {0x00050A, 0x00050A, UC_LU}, - {0x00050B, 0x00050B, UC_LL}, - {0x00050C, 0x00050C, UC_LU}, - {0x00050D, 0x00050D, UC_LL}, - {0x00050E, 0x00050E, UC_LU}, - {0x00050F, 0x00050F, UC_LL}, - {0x000510, 0x000510, UC_LU}, - {0x000511, 0x000511, UC_LL}, - {0x000512, 0x000512, UC_LU}, - {0x000513, 0x000513, UC_LL}, - {0x000514, 0x000514, UC_LU}, - {0x000515, 0x000515, UC_LL}, - {0x000516, 0x000516, UC_LU}, - {0x000517, 0x000517, UC_LL}, - {0x000518, 0x000518, UC_LU}, - {0x000519, 0x000519, UC_LL}, - {0x00051A, 0x00051A, UC_LU}, - {0x00051B, 0x00051B, UC_LL}, - {0x00051C, 0x00051C, UC_LU}, - {0x00051D, 0x00051D, UC_LL}, - {0x00051E, 0x00051E, UC_LU}, - {0x00051F, 0x00051F, UC_LL}, - {0x000520, 0x000520, UC_LU}, - {0x000521, 0x000521, UC_LL}, - {0x000522, 0x000522, UC_LU}, - {0x000523, 0x000523, UC_LL}, - {0x000524, 0x000524, UC_LU}, - {0x000525, 0x000525, UC_LL}, - {0x000526, 0x000526, UC_LU}, - {0x000527, 0x000527, UC_LL}, - {0x000528, 0x000528, UC_LU}, - {0x000529, 0x000529, UC_LL}, - {0x00052A, 0x00052A, UC_LU}, - {0x00052B, 0x00052B, UC_LL}, - {0x00052C, 0x00052C, UC_LU}, - {0x00052D, 0x00052D, UC_LL}, - {0x00052E, 0x00052E, UC_LU}, - {0x00052F, 0x00052F, UC_LL}, - {0x000531, 0x000556, UC_LU}, - {0x000559, 0x000559, UC_LM}, - {0x00055A, 0x00055F, UC_PO}, - {0x000560, 0x000588, UC_LL}, - {0x000589, 0x000589, UC_PO}, - {0x00058A, 0x00058A, UC_PD}, - {0x00058D, 0x00058E, UC_SO}, - {0x00058F, 0x00058F, UC_SC}, - {0x000591, 0x0005BD, UC_MN}, - {0x0005BE, 0x0005BE, UC_PD}, - {0x0005BF, 0x0005BF, UC_MN}, - {0x0005C0, 0x0005C0, UC_PO}, - {0x0005C1, 0x0005C2, UC_MN}, - {0x0005C3, 0x0005C3, UC_PO}, - {0x0005C4, 0x0005C5, UC_MN}, - {0x0005C6, 0x0005C6, UC_PO}, - {0x0005C7, 0x0005C7, UC_MN}, - {0x0005D0, 0x0005EA, UC_LO}, - {0x0005EF, 0x0005F2, UC_LO}, - {0x0005F3, 0x0005F4, UC_PO}, - {0x000600, 0x000605, UC_CF}, - {0x000606, 0x000608, UC_SM}, - {0x000609, 0x00060A, UC_PO}, - {0x00060B, 0x00060B, UC_SC}, - {0x00060C, 0x00060D, UC_PO}, - {0x00060E, 0x00060F, UC_SO}, - {0x000610, 0x00061A, UC_MN}, - {0x00061B, 0x00061B, UC_PO}, - {0x00061C, 0x00061C, UC_CF}, - {0x00061D, 0x00061F, UC_PO}, - {0x000620, 0x00063F, UC_LO}, - {0x000640, 0x000640, UC_LM}, - {0x000641, 0x00064A, UC_LO}, - {0x00064B, 0x00065F, UC_MN}, - {0x000660, 0x000669, UC_ND}, - {0x00066A, 0x00066D, UC_PO}, - {0x00066E, 0x00066F, UC_LO}, - {0x000670, 0x000670, UC_MN}, - {0x000671, 0x0006D3, UC_LO}, - {0x0006D4, 0x0006D4, UC_PO}, - {0x0006D5, 0x0006D5, UC_LO}, - {0x0006D6, 0x0006DC, UC_MN}, - {0x0006DD, 0x0006DD, UC_CF}, - {0x0006DE, 0x0006DE, UC_SO}, - {0x0006DF, 0x0006E4, UC_MN}, - {0x0006E5, 0x0006E6, UC_LM}, - {0x0006E7, 0x0006E8, UC_MN}, - {0x0006E9, 0x0006E9, UC_SO}, - {0x0006EA, 0x0006ED, UC_MN}, - {0x0006EE, 0x0006EF, UC_LO}, - {0x0006F0, 0x0006F9, UC_ND}, - {0x0006FA, 0x0006FC, UC_LO}, - {0x0006FD, 0x0006FE, UC_SO}, - {0x0006FF, 0x0006FF, UC_LO}, - {0x000700, 0x00070D, UC_PO}, - {0x00070F, 0x00070F, UC_CF}, - {0x000710, 0x000710, UC_LO}, - {0x000711, 0x000711, UC_MN}, - {0x000712, 0x00072F, UC_LO}, - {0x000730, 0x00074A, UC_MN}, - {0x00074D, 0x0007A5, UC_LO}, - {0x0007A6, 0x0007B0, UC_MN}, - {0x0007B1, 0x0007B1, UC_LO}, - {0x0007C0, 0x0007C9, UC_ND}, - {0x0007CA, 0x0007EA, UC_LO}, - {0x0007EB, 0x0007F3, UC_MN}, - {0x0007F4, 0x0007F5, UC_LM}, - {0x0007F6, 0x0007F6, UC_SO}, - {0x0007F7, 0x0007F9, UC_PO}, - {0x0007FA, 0x0007FA, UC_LM}, - {0x0007FD, 0x0007FD, UC_MN}, - {0x0007FE, 0x0007FF, UC_SC}, - {0x000800, 0x000815, UC_LO}, - {0x000816, 0x000819, UC_MN}, - {0x00081A, 0x00081A, UC_LM}, - {0x00081B, 0x000823, UC_MN}, - {0x000824, 0x000824, UC_LM}, - {0x000825, 0x000827, UC_MN}, - {0x000828, 0x000828, UC_LM}, - {0x000829, 0x00082D, UC_MN}, - {0x000830, 0x00083E, UC_PO}, - {0x000840, 0x000858, UC_LO}, - {0x000859, 0x00085B, UC_MN}, - {0x00085E, 0x00085E, UC_PO}, - {0x000860, 0x00086A, UC_LO}, - {0x000870, 0x000887, UC_LO}, - {0x000888, 0x000888, UC_SK}, - {0x000889, 0x00088E, UC_LO}, - {0x000890, 0x000891, UC_CF}, - {0x000898, 0x00089F, UC_MN}, - {0x0008A0, 0x0008C8, UC_LO}, - {0x0008C9, 0x0008C9, UC_LM}, - {0x0008CA, 0x0008E1, UC_MN}, - {0x0008E2, 0x0008E2, UC_CF}, - {0x0008E3, 0x000902, UC_MN}, - {0x000903, 0x000903, UC_MC}, - {0x000904, 0x000939, UC_LO}, - {0x00093A, 0x00093A, UC_MN}, - {0x00093B, 0x00093B, UC_MC}, - {0x00093C, 0x00093C, UC_MN}, - {0x00093D, 0x00093D, UC_LO}, - {0x00093E, 0x000940, UC_MC}, - {0x000941, 0x000948, UC_MN}, - {0x000949, 0x00094C, UC_MC}, - {0x00094D, 0x00094D, UC_MN}, - {0x00094E, 0x00094F, UC_MC}, - {0x000950, 0x000950, UC_LO}, - {0x000951, 0x000957, UC_MN}, - {0x000958, 0x000961, UC_LO}, - {0x000962, 0x000963, UC_MN}, - {0x000964, 0x000965, UC_PO}, - {0x000966, 0x00096F, UC_ND}, - {0x000970, 0x000970, UC_PO}, - {0x000971, 0x000971, UC_LM}, - {0x000972, 0x000980, UC_LO}, - {0x000981, 0x000981, UC_MN}, - {0x000982, 0x000983, UC_MC}, - {0x000985, 0x00098C, UC_LO}, - {0x00098F, 0x000990, UC_LO}, - {0x000993, 0x0009A8, UC_LO}, - {0x0009AA, 0x0009B0, UC_LO}, - {0x0009B2, 0x0009B2, UC_LO}, - {0x0009B6, 0x0009B9, UC_LO}, - {0x0009BC, 0x0009BC, UC_MN}, - {0x0009BD, 0x0009BD, UC_LO}, - {0x0009BE, 0x0009C0, UC_MC}, - {0x0009C1, 0x0009C4, UC_MN}, - {0x0009C7, 0x0009C8, UC_MC}, - {0x0009CB, 0x0009CC, UC_MC}, - {0x0009CD, 0x0009CD, UC_MN}, - {0x0009CE, 0x0009CE, UC_LO}, - {0x0009D7, 0x0009D7, UC_MC}, - {0x0009DC, 0x0009DD, UC_LO}, - {0x0009DF, 0x0009E1, UC_LO}, - {0x0009E2, 0x0009E3, UC_MN}, - {0x0009E6, 0x0009EF, UC_ND}, - {0x0009F0, 0x0009F1, UC_LO}, - {0x0009F2, 0x0009F3, UC_SC}, - {0x0009F4, 0x0009F9, UC_NO}, - {0x0009FA, 0x0009FA, UC_SO}, - {0x0009FB, 0x0009FB, UC_SC}, - {0x0009FC, 0x0009FC, UC_LO}, - {0x0009FD, 0x0009FD, UC_PO}, - {0x0009FE, 0x0009FE, UC_MN}, - {0x000A01, 0x000A02, UC_MN}, - {0x000A03, 0x000A03, UC_MC}, - {0x000A05, 0x000A0A, UC_LO}, - {0x000A0F, 0x000A10, UC_LO}, - {0x000A13, 0x000A28, UC_LO}, - {0x000A2A, 0x000A30, UC_LO}, - {0x000A32, 0x000A33, UC_LO}, - {0x000A35, 0x000A36, UC_LO}, - {0x000A38, 0x000A39, UC_LO}, - {0x000A3C, 0x000A3C, UC_MN}, - {0x000A3E, 0x000A40, UC_MC}, - {0x000A41, 0x000A42, UC_MN}, - {0x000A47, 0x000A48, UC_MN}, - {0x000A4B, 0x000A4D, UC_MN}, - {0x000A51, 0x000A51, UC_MN}, - {0x000A59, 0x000A5C, UC_LO}, - {0x000A5E, 0x000A5E, UC_LO}, - {0x000A66, 0x000A6F, UC_ND}, - {0x000A70, 0x000A71, UC_MN}, - {0x000A72, 0x000A74, UC_LO}, - {0x000A75, 0x000A75, UC_MN}, - {0x000A76, 0x000A76, UC_PO}, - {0x000A81, 0x000A82, UC_MN}, - {0x000A83, 0x000A83, UC_MC}, - {0x000A85, 0x000A8D, UC_LO}, - {0x000A8F, 0x000A91, UC_LO}, - {0x000A93, 0x000AA8, UC_LO}, - {0x000AAA, 0x000AB0, UC_LO}, - {0x000AB2, 0x000AB3, UC_LO}, - {0x000AB5, 0x000AB9, UC_LO}, - {0x000ABC, 0x000ABC, UC_MN}, - {0x000ABD, 0x000ABD, UC_LO}, - {0x000ABE, 0x000AC0, UC_MC}, - {0x000AC1, 0x000AC5, UC_MN}, - {0x000AC7, 0x000AC8, UC_MN}, - {0x000AC9, 0x000AC9, UC_MC}, - {0x000ACB, 0x000ACC, UC_MC}, - {0x000ACD, 0x000ACD, UC_MN}, - {0x000AD0, 0x000AD0, UC_LO}, - {0x000AE0, 0x000AE1, UC_LO}, - {0x000AE2, 0x000AE3, UC_MN}, - {0x000AE6, 0x000AEF, UC_ND}, - {0x000AF0, 0x000AF0, UC_PO}, - {0x000AF1, 0x000AF1, UC_SC}, - {0x000AF9, 0x000AF9, UC_LO}, - {0x000AFA, 0x000AFF, UC_MN}, - {0x000B01, 0x000B01, UC_MN}, - {0x000B02, 0x000B03, UC_MC}, - {0x000B05, 0x000B0C, UC_LO}, - {0x000B0F, 0x000B10, UC_LO}, - {0x000B13, 0x000B28, UC_LO}, - {0x000B2A, 0x000B30, UC_LO}, - {0x000B32, 0x000B33, UC_LO}, - {0x000B35, 0x000B39, UC_LO}, - {0x000B3C, 0x000B3C, UC_MN}, - {0x000B3D, 0x000B3D, UC_LO}, - {0x000B3E, 0x000B3E, UC_MC}, - {0x000B3F, 0x000B3F, UC_MN}, - {0x000B40, 0x000B40, UC_MC}, - {0x000B41, 0x000B44, UC_MN}, - {0x000B47, 0x000B48, UC_MC}, - {0x000B4B, 0x000B4C, UC_MC}, - {0x000B4D, 0x000B4D, UC_MN}, - {0x000B55, 0x000B56, UC_MN}, - {0x000B57, 0x000B57, UC_MC}, - {0x000B5C, 0x000B5D, UC_LO}, - {0x000B5F, 0x000B61, UC_LO}, - {0x000B62, 0x000B63, UC_MN}, - {0x000B66, 0x000B6F, UC_ND}, - {0x000B70, 0x000B70, UC_SO}, - {0x000B71, 0x000B71, UC_LO}, - {0x000B72, 0x000B77, UC_NO}, - {0x000B82, 0x000B82, UC_MN}, - {0x000B83, 0x000B83, UC_LO}, - {0x000B85, 0x000B8A, UC_LO}, - {0x000B8E, 0x000B90, UC_LO}, - {0x000B92, 0x000B95, UC_LO}, - {0x000B99, 0x000B9A, UC_LO}, - {0x000B9C, 0x000B9C, UC_LO}, - {0x000B9E, 0x000B9F, UC_LO}, - {0x000BA3, 0x000BA4, UC_LO}, - {0x000BA8, 0x000BAA, UC_LO}, - {0x000BAE, 0x000BB9, UC_LO}, - {0x000BBE, 0x000BBF, UC_MC}, - {0x000BC0, 0x000BC0, UC_MN}, - {0x000BC1, 0x000BC2, UC_MC}, - {0x000BC6, 0x000BC8, UC_MC}, - {0x000BCA, 0x000BCC, UC_MC}, - {0x000BCD, 0x000BCD, UC_MN}, - {0x000BD0, 0x000BD0, UC_LO}, - {0x000BD7, 0x000BD7, UC_MC}, - {0x000BE6, 0x000BEF, UC_ND}, - {0x000BF0, 0x000BF2, UC_NO}, - {0x000BF3, 0x000BF8, UC_SO}, - {0x000BF9, 0x000BF9, UC_SC}, - {0x000BFA, 0x000BFA, UC_SO}, - {0x000C00, 0x000C00, UC_MN}, - {0x000C01, 0x000C03, UC_MC}, - {0x000C04, 0x000C04, UC_MN}, - {0x000C05, 0x000C0C, UC_LO}, - {0x000C0E, 0x000C10, UC_LO}, - {0x000C12, 0x000C28, UC_LO}, - {0x000C2A, 0x000C39, UC_LO}, - {0x000C3C, 0x000C3C, UC_MN}, - {0x000C3D, 0x000C3D, UC_LO}, - {0x000C3E, 0x000C40, UC_MN}, - {0x000C41, 0x000C44, UC_MC}, - {0x000C46, 0x000C48, UC_MN}, - {0x000C4A, 0x000C4D, UC_MN}, - {0x000C55, 0x000C56, UC_MN}, - {0x000C58, 0x000C5A, UC_LO}, - {0x000C5D, 0x000C5D, UC_LO}, - {0x000C60, 0x000C61, UC_LO}, - {0x000C62, 0x000C63, UC_MN}, - {0x000C66, 0x000C6F, UC_ND}, - {0x000C77, 0x000C77, UC_PO}, - {0x000C78, 0x000C7E, UC_NO}, - {0x000C7F, 0x000C7F, UC_SO}, - {0x000C80, 0x000C80, UC_LO}, - {0x000C81, 0x000C81, UC_MN}, - {0x000C82, 0x000C83, UC_MC}, - {0x000C84, 0x000C84, UC_PO}, - {0x000C85, 0x000C8C, UC_LO}, - {0x000C8E, 0x000C90, UC_LO}, - {0x000C92, 0x000CA8, UC_LO}, - {0x000CAA, 0x000CB3, UC_LO}, - {0x000CB5, 0x000CB9, UC_LO}, - {0x000CBC, 0x000CBC, UC_MN}, - {0x000CBD, 0x000CBD, UC_LO}, - {0x000CBE, 0x000CBE, UC_MC}, - {0x000CBF, 0x000CBF, UC_MN}, - {0x000CC0, 0x000CC4, UC_MC}, - {0x000CC6, 0x000CC6, UC_MN}, - {0x000CC7, 0x000CC8, UC_MC}, - {0x000CCA, 0x000CCB, UC_MC}, - {0x000CCC, 0x000CCD, UC_MN}, - {0x000CD5, 0x000CD6, UC_MC}, - {0x000CDD, 0x000CDE, UC_LO}, - {0x000CE0, 0x000CE1, UC_LO}, - {0x000CE2, 0x000CE3, UC_MN}, - {0x000CE6, 0x000CEF, UC_ND}, - {0x000CF1, 0x000CF2, UC_LO}, - {0x000CF3, 0x000CF3, UC_MC}, - {0x000D00, 0x000D01, UC_MN}, - {0x000D02, 0x000D03, UC_MC}, - {0x000D04, 0x000D0C, UC_LO}, - {0x000D0E, 0x000D10, UC_LO}, - {0x000D12, 0x000D3A, UC_LO}, - {0x000D3B, 0x000D3C, UC_MN}, - {0x000D3D, 0x000D3D, UC_LO}, - {0x000D3E, 0x000D40, UC_MC}, - {0x000D41, 0x000D44, UC_MN}, - {0x000D46, 0x000D48, UC_MC}, - {0x000D4A, 0x000D4C, UC_MC}, - {0x000D4D, 0x000D4D, UC_MN}, - {0x000D4E, 0x000D4E, UC_LO}, - {0x000D4F, 0x000D4F, UC_SO}, - {0x000D54, 0x000D56, UC_LO}, - {0x000D57, 0x000D57, UC_MC}, - {0x000D58, 0x000D5E, UC_NO}, - {0x000D5F, 0x000D61, UC_LO}, - {0x000D62, 0x000D63, UC_MN}, - {0x000D66, 0x000D6F, UC_ND}, - {0x000D70, 0x000D78, UC_NO}, - {0x000D79, 0x000D79, UC_SO}, - {0x000D7A, 0x000D7F, UC_LO}, - {0x000D81, 0x000D81, UC_MN}, - {0x000D82, 0x000D83, UC_MC}, - {0x000D85, 0x000D96, UC_LO}, - {0x000D9A, 0x000DB1, UC_LO}, - {0x000DB3, 0x000DBB, UC_LO}, - {0x000DBD, 0x000DBD, UC_LO}, - {0x000DC0, 0x000DC6, UC_LO}, - {0x000DCA, 0x000DCA, UC_MN}, - {0x000DCF, 0x000DD1, UC_MC}, - {0x000DD2, 0x000DD4, UC_MN}, - {0x000DD6, 0x000DD6, UC_MN}, - {0x000DD8, 0x000DDF, UC_MC}, - {0x000DE6, 0x000DEF, UC_ND}, - {0x000DF2, 0x000DF3, UC_MC}, - {0x000DF4, 0x000DF4, UC_PO}, - {0x000E01, 0x000E30, UC_LO}, - {0x000E31, 0x000E31, UC_MN}, - {0x000E32, 0x000E33, UC_LO}, - {0x000E34, 0x000E3A, UC_MN}, - {0x000E3F, 0x000E3F, UC_SC}, - {0x000E40, 0x000E45, UC_LO}, - {0x000E46, 0x000E46, UC_LM}, - {0x000E47, 0x000E4E, UC_MN}, - {0x000E4F, 0x000E4F, UC_PO}, - {0x000E50, 0x000E59, UC_ND}, - {0x000E5A, 0x000E5B, UC_PO}, - {0x000E81, 0x000E82, UC_LO}, - {0x000E84, 0x000E84, UC_LO}, - {0x000E86, 0x000E8A, UC_LO}, - {0x000E8C, 0x000EA3, UC_LO}, - {0x000EA5, 0x000EA5, UC_LO}, - {0x000EA7, 0x000EB0, UC_LO}, - {0x000EB1, 0x000EB1, UC_MN}, - {0x000EB2, 0x000EB3, UC_LO}, - {0x000EB4, 0x000EBC, UC_MN}, - {0x000EBD, 0x000EBD, UC_LO}, - {0x000EC0, 0x000EC4, UC_LO}, - {0x000EC6, 0x000EC6, UC_LM}, - {0x000EC8, 0x000ECE, UC_MN}, - {0x000ED0, 0x000ED9, UC_ND}, - {0x000EDC, 0x000EDF, UC_LO}, - {0x000F00, 0x000F00, UC_LO}, - {0x000F01, 0x000F03, UC_SO}, - {0x000F04, 0x000F12, UC_PO}, - {0x000F13, 0x000F13, UC_SO}, - {0x000F14, 0x000F14, UC_PO}, - {0x000F15, 0x000F17, UC_SO}, - {0x000F18, 0x000F19, UC_MN}, - {0x000F1A, 0x000F1F, UC_SO}, - {0x000F20, 0x000F29, UC_ND}, - {0x000F2A, 0x000F33, UC_NO}, - {0x000F34, 0x000F34, UC_SO}, - {0x000F35, 0x000F35, UC_MN}, - {0x000F36, 0x000F36, UC_SO}, - {0x000F37, 0x000F37, UC_MN}, - {0x000F38, 0x000F38, UC_SO}, - {0x000F39, 0x000F39, UC_MN}, - {0x000F3A, 0x000F3A, UC_PS}, - {0x000F3B, 0x000F3B, UC_PE}, - {0x000F3C, 0x000F3C, UC_PS}, - {0x000F3D, 0x000F3D, UC_PE}, - {0x000F3E, 0x000F3F, UC_MC}, - {0x000F40, 0x000F47, UC_LO}, - {0x000F49, 0x000F6C, UC_LO}, - {0x000F71, 0x000F7E, UC_MN}, - {0x000F7F, 0x000F7F, UC_MC}, - {0x000F80, 0x000F84, UC_MN}, - {0x000F85, 0x000F85, UC_PO}, - {0x000F86, 0x000F87, UC_MN}, - {0x000F88, 0x000F8C, UC_LO}, - {0x000F8D, 0x000F97, UC_MN}, - {0x000F99, 0x000FBC, UC_MN}, - {0x000FBE, 0x000FC5, UC_SO}, - {0x000FC6, 0x000FC6, UC_MN}, - {0x000FC7, 0x000FCC, UC_SO}, - {0x000FCE, 0x000FCF, UC_SO}, - {0x000FD0, 0x000FD4, UC_PO}, - {0x000FD5, 0x000FD8, UC_SO}, - {0x000FD9, 0x000FDA, UC_PO}, - {0x001000, 0x00102A, UC_LO}, - {0x00102B, 0x00102C, UC_MC}, - {0x00102D, 0x001030, UC_MN}, - {0x001031, 0x001031, UC_MC}, - {0x001032, 0x001037, UC_MN}, - {0x001038, 0x001038, UC_MC}, - {0x001039, 0x00103A, UC_MN}, - {0x00103B, 0x00103C, UC_MC}, - {0x00103D, 0x00103E, UC_MN}, - {0x00103F, 0x00103F, UC_LO}, - {0x001040, 0x001049, UC_ND}, - {0x00104A, 0x00104F, UC_PO}, - {0x001050, 0x001055, UC_LO}, - {0x001056, 0x001057, UC_MC}, - {0x001058, 0x001059, UC_MN}, - {0x00105A, 0x00105D, UC_LO}, - {0x00105E, 0x001060, UC_MN}, - {0x001061, 0x001061, UC_LO}, - {0x001062, 0x001064, UC_MC}, - {0x001065, 0x001066, UC_LO}, - {0x001067, 0x00106D, UC_MC}, - {0x00106E, 0x001070, UC_LO}, - {0x001071, 0x001074, UC_MN}, - {0x001075, 0x001081, UC_LO}, - {0x001082, 0x001082, UC_MN}, - {0x001083, 0x001084, UC_MC}, - {0x001085, 0x001086, UC_MN}, - {0x001087, 0x00108C, UC_MC}, - {0x00108D, 0x00108D, UC_MN}, - {0x00108E, 0x00108E, UC_LO}, - {0x00108F, 0x00108F, UC_MC}, - {0x001090, 0x001099, UC_ND}, - {0x00109A, 0x00109C, UC_MC}, - {0x00109D, 0x00109D, UC_MN}, - {0x00109E, 0x00109F, UC_SO}, - {0x0010A0, 0x0010C5, UC_LU}, - {0x0010C7, 0x0010C7, UC_LU}, - {0x0010CD, 0x0010CD, UC_LU}, - {0x0010D0, 0x0010FA, UC_LL}, - {0x0010FB, 0x0010FB, UC_PO}, - {0x0010FC, 0x0010FC, UC_LM}, - {0x0010FD, 0x0010FF, UC_LL}, - {0x001100, 0x001248, UC_LO}, - {0x00124A, 0x00124D, UC_LO}, - {0x001250, 0x001256, UC_LO}, - {0x001258, 0x001258, UC_LO}, - {0x00125A, 0x00125D, UC_LO}, - {0x001260, 0x001288, UC_LO}, - {0x00128A, 0x00128D, UC_LO}, - {0x001290, 0x0012B0, UC_LO}, - {0x0012B2, 0x0012B5, UC_LO}, - {0x0012B8, 0x0012BE, UC_LO}, - {0x0012C0, 0x0012C0, UC_LO}, - {0x0012C2, 0x0012C5, UC_LO}, - {0x0012C8, 0x0012D6, UC_LO}, - {0x0012D8, 0x001310, UC_LO}, - {0x001312, 0x001315, UC_LO}, - {0x001318, 0x00135A, UC_LO}, - {0x00135D, 0x00135F, UC_MN}, - {0x001360, 0x001368, UC_PO}, - {0x001369, 0x00137C, UC_NO}, - {0x001380, 0x00138F, UC_LO}, - {0x001390, 0x001399, UC_SO}, - {0x0013A0, 0x0013F5, UC_LU}, - {0x0013F8, 0x0013FD, UC_LL}, - {0x001400, 0x001400, UC_PD}, - {0x001401, 0x00166C, UC_LO}, - {0x00166D, 0x00166D, UC_SO}, - {0x00166E, 0x00166E, UC_PO}, - {0x00166F, 0x00167F, UC_LO}, - {0x001680, 0x001680, UC_ZS}, - {0x001681, 0x00169A, UC_LO}, - {0x00169B, 0x00169B, UC_PS}, - {0x00169C, 0x00169C, UC_PE}, - {0x0016A0, 0x0016EA, UC_LO}, - {0x0016EB, 0x0016ED, UC_PO}, - {0x0016EE, 0x0016F0, UC_NL}, - {0x0016F1, 0x0016F8, UC_LO}, - {0x001700, 0x001711, UC_LO}, - {0x001712, 0x001714, UC_MN}, - {0x001715, 0x001715, UC_MC}, - {0x00171F, 0x001731, UC_LO}, - {0x001732, 0x001733, UC_MN}, - {0x001734, 0x001734, UC_MC}, - {0x001735, 0x001736, UC_PO}, - {0x001740, 0x001751, UC_LO}, - {0x001752, 0x001753, UC_MN}, - {0x001760, 0x00176C, UC_LO}, - {0x00176E, 0x001770, UC_LO}, - {0x001772, 0x001773, UC_MN}, - {0x001780, 0x0017B3, UC_LO}, - {0x0017B4, 0x0017B5, UC_MN}, - {0x0017B6, 0x0017B6, UC_MC}, - {0x0017B7, 0x0017BD, UC_MN}, - {0x0017BE, 0x0017C5, UC_MC}, - {0x0017C6, 0x0017C6, UC_MN}, - {0x0017C7, 0x0017C8, UC_MC}, - {0x0017C9, 0x0017D3, UC_MN}, - {0x0017D4, 0x0017D6, UC_PO}, - {0x0017D7, 0x0017D7, UC_LM}, - {0x0017D8, 0x0017DA, UC_PO}, - {0x0017DB, 0x0017DB, UC_SC}, - {0x0017DC, 0x0017DC, UC_LO}, - {0x0017DD, 0x0017DD, UC_MN}, - {0x0017E0, 0x0017E9, UC_ND}, - {0x0017F0, 0x0017F9, UC_NO}, - {0x001800, 0x001805, UC_PO}, - {0x001806, 0x001806, UC_PD}, - {0x001807, 0x00180A, UC_PO}, - {0x00180B, 0x00180D, UC_MN}, - {0x00180E, 0x00180E, UC_CF}, - {0x00180F, 0x00180F, UC_MN}, - {0x001810, 0x001819, UC_ND}, - {0x001820, 0x001842, UC_LO}, - {0x001843, 0x001843, UC_LM}, - {0x001844, 0x001878, UC_LO}, - {0x001880, 0x001884, UC_LO}, - {0x001885, 0x001886, UC_MN}, - {0x001887, 0x0018A8, UC_LO}, - {0x0018A9, 0x0018A9, UC_MN}, - {0x0018AA, 0x0018AA, UC_LO}, - {0x0018B0, 0x0018F5, UC_LO}, - {0x001900, 0x00191E, UC_LO}, - {0x001920, 0x001922, UC_MN}, - {0x001923, 0x001926, UC_MC}, - {0x001927, 0x001928, UC_MN}, - {0x001929, 0x00192B, UC_MC}, - {0x001930, 0x001931, UC_MC}, - {0x001932, 0x001932, UC_MN}, - {0x001933, 0x001938, UC_MC}, - {0x001939, 0x00193B, UC_MN}, - {0x001940, 0x001940, UC_SO}, - {0x001944, 0x001945, UC_PO}, - {0x001946, 0x00194F, UC_ND}, - {0x001950, 0x00196D, UC_LO}, - {0x001970, 0x001974, UC_LO}, - {0x001980, 0x0019AB, UC_LO}, - {0x0019B0, 0x0019C9, UC_LO}, - {0x0019D0, 0x0019D9, UC_ND}, - {0x0019DA, 0x0019DA, UC_NO}, - {0x0019DE, 0x0019FF, UC_SO}, - {0x001A00, 0x001A16, UC_LO}, - {0x001A17, 0x001A18, UC_MN}, - {0x001A19, 0x001A1A, UC_MC}, - {0x001A1B, 0x001A1B, UC_MN}, - {0x001A1E, 0x001A1F, UC_PO}, - {0x001A20, 0x001A54, UC_LO}, - {0x001A55, 0x001A55, UC_MC}, - {0x001A56, 0x001A56, UC_MN}, - {0x001A57, 0x001A57, UC_MC}, - {0x001A58, 0x001A5E, UC_MN}, - {0x001A60, 0x001A60, UC_MN}, - {0x001A61, 0x001A61, UC_MC}, - {0x001A62, 0x001A62, UC_MN}, - {0x001A63, 0x001A64, UC_MC}, - {0x001A65, 0x001A6C, UC_MN}, - {0x001A6D, 0x001A72, UC_MC}, - {0x001A73, 0x001A7C, UC_MN}, - {0x001A7F, 0x001A7F, UC_MN}, - {0x001A80, 0x001A89, UC_ND}, - {0x001A90, 0x001A99, UC_ND}, - {0x001AA0, 0x001AA6, UC_PO}, - {0x001AA7, 0x001AA7, UC_LM}, - {0x001AA8, 0x001AAD, UC_PO}, - {0x001AB0, 0x001ABD, UC_MN}, - {0x001ABE, 0x001ABE, UC_ME}, - {0x001ABF, 0x001ACE, UC_MN}, - {0x001B00, 0x001B03, UC_MN}, - {0x001B04, 0x001B04, UC_MC}, - {0x001B05, 0x001B33, UC_LO}, - {0x001B34, 0x001B34, UC_MN}, - {0x001B35, 0x001B35, UC_MC}, - {0x001B36, 0x001B3A, UC_MN}, - {0x001B3B, 0x001B3B, UC_MC}, - {0x001B3C, 0x001B3C, UC_MN}, - {0x001B3D, 0x001B41, UC_MC}, - {0x001B42, 0x001B42, UC_MN}, - {0x001B43, 0x001B44, UC_MC}, - {0x001B45, 0x001B4C, UC_LO}, - {0x001B50, 0x001B59, UC_ND}, - {0x001B5A, 0x001B60, UC_PO}, - {0x001B61, 0x001B6A, UC_SO}, - {0x001B6B, 0x001B73, UC_MN}, - {0x001B74, 0x001B7C, UC_SO}, - {0x001B7D, 0x001B7E, UC_PO}, - {0x001B80, 0x001B81, UC_MN}, - {0x001B82, 0x001B82, UC_MC}, - {0x001B83, 0x001BA0, UC_LO}, - {0x001BA1, 0x001BA1, UC_MC}, - {0x001BA2, 0x001BA5, UC_MN}, - {0x001BA6, 0x001BA7, UC_MC}, - {0x001BA8, 0x001BA9, UC_MN}, - {0x001BAA, 0x001BAA, UC_MC}, - {0x001BAB, 0x001BAD, UC_MN}, - {0x001BAE, 0x001BAF, UC_LO}, - {0x001BB0, 0x001BB9, UC_ND}, - {0x001BBA, 0x001BE5, UC_LO}, - {0x001BE6, 0x001BE6, UC_MN}, - {0x001BE7, 0x001BE7, UC_MC}, - {0x001BE8, 0x001BE9, UC_MN}, - {0x001BEA, 0x001BEC, UC_MC}, - {0x001BED, 0x001BED, UC_MN}, - {0x001BEE, 0x001BEE, UC_MC}, - {0x001BEF, 0x001BF1, UC_MN}, - {0x001BF2, 0x001BF3, UC_MC}, - {0x001BFC, 0x001BFF, UC_PO}, - {0x001C00, 0x001C23, UC_LO}, - {0x001C24, 0x001C2B, UC_MC}, - {0x001C2C, 0x001C33, UC_MN}, - {0x001C34, 0x001C35, UC_MC}, - {0x001C36, 0x001C37, UC_MN}, - {0x001C3B, 0x001C3F, UC_PO}, - {0x001C40, 0x001C49, UC_ND}, - {0x001C4D, 0x001C4F, UC_LO}, - {0x001C50, 0x001C59, UC_ND}, - {0x001C5A, 0x001C77, UC_LO}, - {0x001C78, 0x001C7D, UC_LM}, - {0x001C7E, 0x001C7F, UC_PO}, - {0x001C80, 0x001C88, UC_LL}, - {0x001C90, 0x001CBA, UC_LU}, - {0x001CBD, 0x001CBF, UC_LU}, - {0x001CC0, 0x001CC7, UC_PO}, - {0x001CD0, 0x001CD2, UC_MN}, - {0x001CD3, 0x001CD3, UC_PO}, - {0x001CD4, 0x001CE0, UC_MN}, - {0x001CE1, 0x001CE1, UC_MC}, - {0x001CE2, 0x001CE8, UC_MN}, - {0x001CE9, 0x001CEC, UC_LO}, - {0x001CED, 0x001CED, UC_MN}, - {0x001CEE, 0x001CF3, UC_LO}, - {0x001CF4, 0x001CF4, UC_MN}, - {0x001CF5, 0x001CF6, UC_LO}, - {0x001CF7, 0x001CF7, UC_MC}, - {0x001CF8, 0x001CF9, UC_MN}, - {0x001CFA, 0x001CFA, UC_LO}, - {0x001D00, 0x001D2B, UC_LL}, - {0x001D2C, 0x001D6A, UC_LM}, - {0x001D6B, 0x001D77, UC_LL}, - {0x001D78, 0x001D78, UC_LM}, - {0x001D79, 0x001D9A, UC_LL}, - {0x001D9B, 0x001DBF, UC_LM}, - {0x001DC0, 0x001DFF, UC_MN}, - {0x001E00, 0x001E00, UC_LU}, - {0x001E01, 0x001E01, UC_LL}, - {0x001E02, 0x001E02, UC_LU}, - {0x001E03, 0x001E03, UC_LL}, - {0x001E04, 0x001E04, UC_LU}, - {0x001E05, 0x001E05, UC_LL}, - {0x001E06, 0x001E06, UC_LU}, - {0x001E07, 0x001E07, UC_LL}, - {0x001E08, 0x001E08, UC_LU}, - {0x001E09, 0x001E09, UC_LL}, - {0x001E0A, 0x001E0A, UC_LU}, - {0x001E0B, 0x001E0B, UC_LL}, - {0x001E0C, 0x001E0C, UC_LU}, - {0x001E0D, 0x001E0D, UC_LL}, - {0x001E0E, 0x001E0E, UC_LU}, - {0x001E0F, 0x001E0F, UC_LL}, - {0x001E10, 0x001E10, UC_LU}, - {0x001E11, 0x001E11, UC_LL}, - {0x001E12, 0x001E12, UC_LU}, - {0x001E13, 0x001E13, UC_LL}, - {0x001E14, 0x001E14, UC_LU}, - {0x001E15, 0x001E15, UC_LL}, - {0x001E16, 0x001E16, UC_LU}, - {0x001E17, 0x001E17, UC_LL}, - {0x001E18, 0x001E18, UC_LU}, - {0x001E19, 0x001E19, UC_LL}, - {0x001E1A, 0x001E1A, UC_LU}, - {0x001E1B, 0x001E1B, UC_LL}, - {0x001E1C, 0x001E1C, UC_LU}, - {0x001E1D, 0x001E1D, UC_LL}, - {0x001E1E, 0x001E1E, UC_LU}, - {0x001E1F, 0x001E1F, UC_LL}, - {0x001E20, 0x001E20, UC_LU}, - {0x001E21, 0x001E21, UC_LL}, - {0x001E22, 0x001E22, UC_LU}, - {0x001E23, 0x001E23, UC_LL}, - {0x001E24, 0x001E24, UC_LU}, - {0x001E25, 0x001E25, UC_LL}, - {0x001E26, 0x001E26, UC_LU}, - {0x001E27, 0x001E27, UC_LL}, - {0x001E28, 0x001E28, UC_LU}, - {0x001E29, 0x001E29, UC_LL}, - {0x001E2A, 0x001E2A, UC_LU}, - {0x001E2B, 0x001E2B, UC_LL}, - {0x001E2C, 0x001E2C, UC_LU}, - {0x001E2D, 0x001E2D, UC_LL}, - {0x001E2E, 0x001E2E, UC_LU}, - {0x001E2F, 0x001E2F, UC_LL}, - {0x001E30, 0x001E30, UC_LU}, - {0x001E31, 0x001E31, UC_LL}, - {0x001E32, 0x001E32, UC_LU}, - {0x001E33, 0x001E33, UC_LL}, - {0x001E34, 0x001E34, UC_LU}, - {0x001E35, 0x001E35, UC_LL}, - {0x001E36, 0x001E36, UC_LU}, - {0x001E37, 0x001E37, UC_LL}, - {0x001E38, 0x001E38, UC_LU}, - {0x001E39, 0x001E39, UC_LL}, - {0x001E3A, 0x001E3A, UC_LU}, - {0x001E3B, 0x001E3B, UC_LL}, - {0x001E3C, 0x001E3C, UC_LU}, - {0x001E3D, 0x001E3D, UC_LL}, - {0x001E3E, 0x001E3E, UC_LU}, - {0x001E3F, 0x001E3F, UC_LL}, - {0x001E40, 0x001E40, UC_LU}, - {0x001E41, 0x001E41, UC_LL}, - {0x001E42, 0x001E42, UC_LU}, - {0x001E43, 0x001E43, UC_LL}, - {0x001E44, 0x001E44, UC_LU}, - {0x001E45, 0x001E45, UC_LL}, - {0x001E46, 0x001E46, UC_LU}, - {0x001E47, 0x001E47, UC_LL}, - {0x001E48, 0x001E48, UC_LU}, - {0x001E49, 0x001E49, UC_LL}, - {0x001E4A, 0x001E4A, UC_LU}, - {0x001E4B, 0x001E4B, UC_LL}, - {0x001E4C, 0x001E4C, UC_LU}, - {0x001E4D, 0x001E4D, UC_LL}, - {0x001E4E, 0x001E4E, UC_LU}, - {0x001E4F, 0x001E4F, UC_LL}, - {0x001E50, 0x001E50, UC_LU}, - {0x001E51, 0x001E51, UC_LL}, - {0x001E52, 0x001E52, UC_LU}, - {0x001E53, 0x001E53, UC_LL}, - {0x001E54, 0x001E54, UC_LU}, - {0x001E55, 0x001E55, UC_LL}, - {0x001E56, 0x001E56, UC_LU}, - {0x001E57, 0x001E57, UC_LL}, - {0x001E58, 0x001E58, UC_LU}, - {0x001E59, 0x001E59, UC_LL}, - {0x001E5A, 0x001E5A, UC_LU}, - {0x001E5B, 0x001E5B, UC_LL}, - {0x001E5C, 0x001E5C, UC_LU}, - {0x001E5D, 0x001E5D, UC_LL}, - {0x001E5E, 0x001E5E, UC_LU}, - {0x001E5F, 0x001E5F, UC_LL}, - {0x001E60, 0x001E60, UC_LU}, - {0x001E61, 0x001E61, UC_LL}, - {0x001E62, 0x001E62, UC_LU}, - {0x001E63, 0x001E63, UC_LL}, - {0x001E64, 0x001E64, UC_LU}, - {0x001E65, 0x001E65, UC_LL}, - {0x001E66, 0x001E66, UC_LU}, - {0x001E67, 0x001E67, UC_LL}, - {0x001E68, 0x001E68, UC_LU}, - {0x001E69, 0x001E69, UC_LL}, - {0x001E6A, 0x001E6A, UC_LU}, - {0x001E6B, 0x001E6B, UC_LL}, - {0x001E6C, 0x001E6C, UC_LU}, - {0x001E6D, 0x001E6D, UC_LL}, - {0x001E6E, 0x001E6E, UC_LU}, - {0x001E6F, 0x001E6F, UC_LL}, - {0x001E70, 0x001E70, UC_LU}, - {0x001E71, 0x001E71, UC_LL}, - {0x001E72, 0x001E72, UC_LU}, - {0x001E73, 0x001E73, UC_LL}, - {0x001E74, 0x001E74, UC_LU}, - {0x001E75, 0x001E75, UC_LL}, - {0x001E76, 0x001E76, UC_LU}, - {0x001E77, 0x001E77, UC_LL}, - {0x001E78, 0x001E78, UC_LU}, - {0x001E79, 0x001E79, UC_LL}, - {0x001E7A, 0x001E7A, UC_LU}, - {0x001E7B, 0x001E7B, UC_LL}, - {0x001E7C, 0x001E7C, UC_LU}, - {0x001E7D, 0x001E7D, UC_LL}, - {0x001E7E, 0x001E7E, UC_LU}, - {0x001E7F, 0x001E7F, UC_LL}, - {0x001E80, 0x001E80, UC_LU}, - {0x001E81, 0x001E81, UC_LL}, - {0x001E82, 0x001E82, UC_LU}, - {0x001E83, 0x001E83, UC_LL}, - {0x001E84, 0x001E84, UC_LU}, - {0x001E85, 0x001E85, UC_LL}, - {0x001E86, 0x001E86, UC_LU}, - {0x001E87, 0x001E87, UC_LL}, - {0x001E88, 0x001E88, UC_LU}, - {0x001E89, 0x001E89, UC_LL}, - {0x001E8A, 0x001E8A, UC_LU}, - {0x001E8B, 0x001E8B, UC_LL}, - {0x001E8C, 0x001E8C, UC_LU}, - {0x001E8D, 0x001E8D, UC_LL}, - {0x001E8E, 0x001E8E, UC_LU}, - {0x001E8F, 0x001E8F, UC_LL}, - {0x001E90, 0x001E90, UC_LU}, - {0x001E91, 0x001E91, UC_LL}, - {0x001E92, 0x001E92, UC_LU}, - {0x001E93, 0x001E93, UC_LL}, - {0x001E94, 0x001E94, UC_LU}, - {0x001E95, 0x001E9D, UC_LL}, - {0x001E9E, 0x001E9E, UC_LU}, - {0x001E9F, 0x001E9F, UC_LL}, - {0x001EA0, 0x001EA0, UC_LU}, - {0x001EA1, 0x001EA1, UC_LL}, - {0x001EA2, 0x001EA2, UC_LU}, - {0x001EA3, 0x001EA3, UC_LL}, - {0x001EA4, 0x001EA4, UC_LU}, - {0x001EA5, 0x001EA5, UC_LL}, - {0x001EA6, 0x001EA6, UC_LU}, - {0x001EA7, 0x001EA7, UC_LL}, - {0x001EA8, 0x001EA8, UC_LU}, - {0x001EA9, 0x001EA9, UC_LL}, - {0x001EAA, 0x001EAA, UC_LU}, - {0x001EAB, 0x001EAB, UC_LL}, - {0x001EAC, 0x001EAC, UC_LU}, - {0x001EAD, 0x001EAD, UC_LL}, - {0x001EAE, 0x001EAE, UC_LU}, - {0x001EAF, 0x001EAF, UC_LL}, - {0x001EB0, 0x001EB0, UC_LU}, - {0x001EB1, 0x001EB1, UC_LL}, - {0x001EB2, 0x001EB2, UC_LU}, - {0x001EB3, 0x001EB3, UC_LL}, - {0x001EB4, 0x001EB4, UC_LU}, - {0x001EB5, 0x001EB5, UC_LL}, - {0x001EB6, 0x001EB6, UC_LU}, - {0x001EB7, 0x001EB7, UC_LL}, - {0x001EB8, 0x001EB8, UC_LU}, - {0x001EB9, 0x001EB9, UC_LL}, - {0x001EBA, 0x001EBA, UC_LU}, - {0x001EBB, 0x001EBB, UC_LL}, - {0x001EBC, 0x001EBC, UC_LU}, - {0x001EBD, 0x001EBD, UC_LL}, - {0x001EBE, 0x001EBE, UC_LU}, - {0x001EBF, 0x001EBF, UC_LL}, - {0x001EC0, 0x001EC0, UC_LU}, - {0x001EC1, 0x001EC1, UC_LL}, - {0x001EC2, 0x001EC2, UC_LU}, - {0x001EC3, 0x001EC3, UC_LL}, - {0x001EC4, 0x001EC4, UC_LU}, - {0x001EC5, 0x001EC5, UC_LL}, - {0x001EC6, 0x001EC6, UC_LU}, - {0x001EC7, 0x001EC7, UC_LL}, - {0x001EC8, 0x001EC8, UC_LU}, - {0x001EC9, 0x001EC9, UC_LL}, - {0x001ECA, 0x001ECA, UC_LU}, - {0x001ECB, 0x001ECB, UC_LL}, - {0x001ECC, 0x001ECC, UC_LU}, - {0x001ECD, 0x001ECD, UC_LL}, - {0x001ECE, 0x001ECE, UC_LU}, - {0x001ECF, 0x001ECF, UC_LL}, - {0x001ED0, 0x001ED0, UC_LU}, - {0x001ED1, 0x001ED1, UC_LL}, - {0x001ED2, 0x001ED2, UC_LU}, - {0x001ED3, 0x001ED3, UC_LL}, - {0x001ED4, 0x001ED4, UC_LU}, - {0x001ED5, 0x001ED5, UC_LL}, - {0x001ED6, 0x001ED6, UC_LU}, - {0x001ED7, 0x001ED7, UC_LL}, - {0x001ED8, 0x001ED8, UC_LU}, - {0x001ED9, 0x001ED9, UC_LL}, - {0x001EDA, 0x001EDA, UC_LU}, - {0x001EDB, 0x001EDB, UC_LL}, - {0x001EDC, 0x001EDC, UC_LU}, - {0x001EDD, 0x001EDD, UC_LL}, - {0x001EDE, 0x001EDE, UC_LU}, - {0x001EDF, 0x001EDF, UC_LL}, - {0x001EE0, 0x001EE0, UC_LU}, - {0x001EE1, 0x001EE1, UC_LL}, - {0x001EE2, 0x001EE2, UC_LU}, - {0x001EE3, 0x001EE3, UC_LL}, - {0x001EE4, 0x001EE4, UC_LU}, - {0x001EE5, 0x001EE5, UC_LL}, - {0x001EE6, 0x001EE6, UC_LU}, - {0x001EE7, 0x001EE7, UC_LL}, - {0x001EE8, 0x001EE8, UC_LU}, - {0x001EE9, 0x001EE9, UC_LL}, - {0x001EEA, 0x001EEA, UC_LU}, - {0x001EEB, 0x001EEB, UC_LL}, - {0x001EEC, 0x001EEC, UC_LU}, - {0x001EED, 0x001EED, UC_LL}, - {0x001EEE, 0x001EEE, UC_LU}, - {0x001EEF, 0x001EEF, UC_LL}, - {0x001EF0, 0x001EF0, UC_LU}, - {0x001EF1, 0x001EF1, UC_LL}, - {0x001EF2, 0x001EF2, UC_LU}, - {0x001EF3, 0x001EF3, UC_LL}, - {0x001EF4, 0x001EF4, UC_LU}, - {0x001EF5, 0x001EF5, UC_LL}, - {0x001EF6, 0x001EF6, UC_LU}, - {0x001EF7, 0x001EF7, UC_LL}, - {0x001EF8, 0x001EF8, UC_LU}, - {0x001EF9, 0x001EF9, UC_LL}, - {0x001EFA, 0x001EFA, UC_LU}, - {0x001EFB, 0x001EFB, UC_LL}, - {0x001EFC, 0x001EFC, UC_LU}, - {0x001EFD, 0x001EFD, UC_LL}, - {0x001EFE, 0x001EFE, UC_LU}, - {0x001EFF, 0x001F07, UC_LL}, - {0x001F08, 0x001F0F, UC_LU}, - {0x001F10, 0x001F15, UC_LL}, - {0x001F18, 0x001F1D, UC_LU}, - {0x001F20, 0x001F27, UC_LL}, - {0x001F28, 0x001F2F, UC_LU}, - {0x001F30, 0x001F37, UC_LL}, - {0x001F38, 0x001F3F, UC_LU}, - {0x001F40, 0x001F45, UC_LL}, - {0x001F48, 0x001F4D, UC_LU}, - {0x001F50, 0x001F57, UC_LL}, - {0x001F59, 0x001F59, UC_LU}, - {0x001F5B, 0x001F5B, UC_LU}, - {0x001F5D, 0x001F5D, UC_LU}, - {0x001F5F, 0x001F5F, UC_LU}, - {0x001F60, 0x001F67, UC_LL}, - {0x001F68, 0x001F6F, UC_LU}, - {0x001F70, 0x001F7D, UC_LL}, - {0x001F80, 0x001F87, UC_LL}, - {0x001F88, 0x001F8F, UC_LT}, - {0x001F90, 0x001F97, UC_LL}, - {0x001F98, 0x001F9F, UC_LT}, - {0x001FA0, 0x001FA7, UC_LL}, - {0x001FA8, 0x001FAF, UC_LT}, - {0x001FB0, 0x001FB4, UC_LL}, - {0x001FB6, 0x001FB7, UC_LL}, - {0x001FB8, 0x001FBB, UC_LU}, - {0x001FBC, 0x001FBC, UC_LT}, - {0x001FBD, 0x001FBD, UC_SK}, - {0x001FBE, 0x001FBE, UC_LL}, - {0x001FBF, 0x001FC1, UC_SK}, - {0x001FC2, 0x001FC4, UC_LL}, - {0x001FC6, 0x001FC7, UC_LL}, - {0x001FC8, 0x001FCB, UC_LU}, - {0x001FCC, 0x001FCC, UC_LT}, - {0x001FCD, 0x001FCF, UC_SK}, - {0x001FD0, 0x001FD3, UC_LL}, - {0x001FD6, 0x001FD7, UC_LL}, - {0x001FD8, 0x001FDB, UC_LU}, - {0x001FDD, 0x001FDF, UC_SK}, - {0x001FE0, 0x001FE7, UC_LL}, - {0x001FE8, 0x001FEC, UC_LU}, - {0x001FED, 0x001FEF, UC_SK}, - {0x001FF2, 0x001FF4, UC_LL}, - {0x001FF6, 0x001FF7, UC_LL}, - {0x001FF8, 0x001FFB, UC_LU}, - {0x001FFC, 0x001FFC, UC_LT}, - {0x001FFD, 0x001FFE, UC_SK}, - {0x002000, 0x00200A, UC_ZS}, - {0x00200B, 0x00200F, UC_CF}, - {0x002010, 0x002015, UC_PD}, - {0x002016, 0x002017, UC_PO}, - {0x002018, 0x002018, UC_PI}, - {0x002019, 0x002019, UC_PF}, - {0x00201A, 0x00201A, UC_PS}, - {0x00201B, 0x00201C, UC_PI}, - {0x00201D, 0x00201D, UC_PF}, - {0x00201E, 0x00201E, UC_PS}, - {0x00201F, 0x00201F, UC_PI}, - {0x002020, 0x002027, UC_PO}, - {0x002028, 0x002028, UC_ZL}, - {0x002029, 0x002029, UC_ZP}, - {0x00202A, 0x00202E, UC_CF}, - {0x00202F, 0x00202F, UC_ZS}, - {0x002030, 0x002038, UC_PO}, - {0x002039, 0x002039, UC_PI}, - {0x00203A, 0x00203A, UC_PF}, - {0x00203B, 0x00203E, UC_PO}, - {0x00203F, 0x002040, UC_PC}, - {0x002041, 0x002043, UC_PO}, - {0x002044, 0x002044, UC_SM}, - {0x002045, 0x002045, UC_PS}, - {0x002046, 0x002046, UC_PE}, - {0x002047, 0x002051, UC_PO}, - {0x002052, 0x002052, UC_SM}, - {0x002053, 0x002053, UC_PO}, - {0x002054, 0x002054, UC_PC}, - {0x002055, 0x00205E, UC_PO}, - {0x00205F, 0x00205F, UC_ZS}, - {0x002060, 0x002064, UC_CF}, - {0x002066, 0x00206F, UC_CF}, - {0x002070, 0x002070, UC_NO}, - {0x002071, 0x002071, UC_LM}, - {0x002074, 0x002079, UC_NO}, - {0x00207A, 0x00207C, UC_SM}, - {0x00207D, 0x00207D, UC_PS}, - {0x00207E, 0x00207E, UC_PE}, - {0x00207F, 0x00207F, UC_LM}, - {0x002080, 0x002089, UC_NO}, - {0x00208A, 0x00208C, UC_SM}, - {0x00208D, 0x00208D, UC_PS}, - {0x00208E, 0x00208E, UC_PE}, - {0x002090, 0x00209C, UC_LM}, - {0x0020A0, 0x0020C0, UC_SC}, - {0x0020D0, 0x0020DC, UC_MN}, - {0x0020DD, 0x0020E0, UC_ME}, - {0x0020E1, 0x0020E1, UC_MN}, - {0x0020E2, 0x0020E4, UC_ME}, - {0x0020E5, 0x0020F0, UC_MN}, - {0x002100, 0x002101, UC_SO}, - {0x002102, 0x002102, UC_LU}, - {0x002103, 0x002106, UC_SO}, - {0x002107, 0x002107, UC_LU}, - {0x002108, 0x002109, UC_SO}, - {0x00210A, 0x00210A, UC_LL}, - {0x00210B, 0x00210D, UC_LU}, - {0x00210E, 0x00210F, UC_LL}, - {0x002110, 0x002112, UC_LU}, - {0x002113, 0x002113, UC_LL}, - {0x002114, 0x002114, UC_SO}, - {0x002115, 0x002115, UC_LU}, - {0x002116, 0x002117, UC_SO}, - {0x002118, 0x002118, UC_SM}, - {0x002119, 0x00211D, UC_LU}, - {0x00211E, 0x002123, UC_SO}, - {0x002124, 0x002124, UC_LU}, - {0x002125, 0x002125, UC_SO}, - {0x002126, 0x002126, UC_LU}, - {0x002127, 0x002127, UC_SO}, - {0x002128, 0x002128, UC_LU}, - {0x002129, 0x002129, UC_SO}, - {0x00212A, 0x00212D, UC_LU}, - {0x00212E, 0x00212E, UC_SO}, - {0x00212F, 0x00212F, UC_LL}, - {0x002130, 0x002133, UC_LU}, - {0x002134, 0x002134, UC_LL}, - {0x002135, 0x002138, UC_LO}, - {0x002139, 0x002139, UC_LL}, - {0x00213A, 0x00213B, UC_SO}, - {0x00213C, 0x00213D, UC_LL}, - {0x00213E, 0x00213F, UC_LU}, - {0x002140, 0x002144, UC_SM}, - {0x002145, 0x002145, UC_LU}, - {0x002146, 0x002149, UC_LL}, - {0x00214A, 0x00214A, UC_SO}, - {0x00214B, 0x00214B, UC_SM}, - {0x00214C, 0x00214D, UC_SO}, - {0x00214E, 0x00214E, UC_LL}, - {0x00214F, 0x00214F, UC_SO}, - {0x002150, 0x00215F, UC_NO}, - {0x002160, 0x002182, UC_NL}, - {0x002183, 0x002183, UC_LU}, - {0x002184, 0x002184, UC_LL}, - {0x002185, 0x002188, UC_NL}, - {0x002189, 0x002189, UC_NO}, - {0x00218A, 0x00218B, UC_SO}, - {0x002190, 0x002194, UC_SM}, - {0x002195, 0x002199, UC_SO}, - {0x00219A, 0x00219B, UC_SM}, - {0x00219C, 0x00219F, UC_SO}, - {0x0021A0, 0x0021A0, UC_SM}, - {0x0021A1, 0x0021A2, UC_SO}, - {0x0021A3, 0x0021A3, UC_SM}, - {0x0021A4, 0x0021A5, UC_SO}, - {0x0021A6, 0x0021A6, UC_SM}, - {0x0021A7, 0x0021AD, UC_SO}, - {0x0021AE, 0x0021AE, UC_SM}, - {0x0021AF, 0x0021CD, UC_SO}, - {0x0021CE, 0x0021CF, UC_SM}, - {0x0021D0, 0x0021D1, UC_SO}, - {0x0021D2, 0x0021D2, UC_SM}, - {0x0021D3, 0x0021D3, UC_SO}, - {0x0021D4, 0x0021D4, UC_SM}, - {0x0021D5, 0x0021F3, UC_SO}, - {0x0021F4, 0x0022FF, UC_SM}, - {0x002300, 0x002307, UC_SO}, - {0x002308, 0x002308, UC_PS}, - {0x002309, 0x002309, UC_PE}, - {0x00230A, 0x00230A, UC_PS}, - {0x00230B, 0x00230B, UC_PE}, - {0x00230C, 0x00231F, UC_SO}, - {0x002320, 0x002321, UC_SM}, - {0x002322, 0x002328, UC_SO}, - {0x002329, 0x002329, UC_PS}, - {0x00232A, 0x00232A, UC_PE}, - {0x00232B, 0x00237B, UC_SO}, - {0x00237C, 0x00237C, UC_SM}, - {0x00237D, 0x00239A, UC_SO}, - {0x00239B, 0x0023B3, UC_SM}, - {0x0023B4, 0x0023DB, UC_SO}, - {0x0023DC, 0x0023E1, UC_SM}, - {0x0023E2, 0x002426, UC_SO}, - {0x002440, 0x00244A, UC_SO}, - {0x002460, 0x00249B, UC_NO}, - {0x00249C, 0x0024E9, UC_SO}, - {0x0024EA, 0x0024FF, UC_NO}, - {0x002500, 0x0025B6, UC_SO}, - {0x0025B7, 0x0025B7, UC_SM}, - {0x0025B8, 0x0025C0, UC_SO}, - {0x0025C1, 0x0025C1, UC_SM}, - {0x0025C2, 0x0025F7, UC_SO}, - {0x0025F8, 0x0025FF, UC_SM}, - {0x002600, 0x00266E, UC_SO}, - {0x00266F, 0x00266F, UC_SM}, - {0x002670, 0x002767, UC_SO}, - {0x002768, 0x002768, UC_PS}, - {0x002769, 0x002769, UC_PE}, - {0x00276A, 0x00276A, UC_PS}, - {0x00276B, 0x00276B, UC_PE}, - {0x00276C, 0x00276C, UC_PS}, - {0x00276D, 0x00276D, UC_PE}, - {0x00276E, 0x00276E, UC_PS}, - {0x00276F, 0x00276F, UC_PE}, - {0x002770, 0x002770, UC_PS}, - {0x002771, 0x002771, UC_PE}, - {0x002772, 0x002772, UC_PS}, - {0x002773, 0x002773, UC_PE}, - {0x002774, 0x002774, UC_PS}, - {0x002775, 0x002775, UC_PE}, - {0x002776, 0x002793, UC_NO}, - {0x002794, 0x0027BF, UC_SO}, - {0x0027C0, 0x0027C4, UC_SM}, - {0x0027C5, 0x0027C5, UC_PS}, - {0x0027C6, 0x0027C6, UC_PE}, - {0x0027C7, 0x0027E5, UC_SM}, - {0x0027E6, 0x0027E6, UC_PS}, - {0x0027E7, 0x0027E7, UC_PE}, - {0x0027E8, 0x0027E8, UC_PS}, - {0x0027E9, 0x0027E9, UC_PE}, - {0x0027EA, 0x0027EA, UC_PS}, - {0x0027EB, 0x0027EB, UC_PE}, - {0x0027EC, 0x0027EC, UC_PS}, - {0x0027ED, 0x0027ED, UC_PE}, - {0x0027EE, 0x0027EE, UC_PS}, - {0x0027EF, 0x0027EF, UC_PE}, - {0x0027F0, 0x0027FF, UC_SM}, - {0x002800, 0x0028FF, UC_SO}, - {0x002900, 0x002982, UC_SM}, - {0x002983, 0x002983, UC_PS}, - {0x002984, 0x002984, UC_PE}, - {0x002985, 0x002985, UC_PS}, - {0x002986, 0x002986, UC_PE}, - {0x002987, 0x002987, UC_PS}, - {0x002988, 0x002988, UC_PE}, - {0x002989, 0x002989, UC_PS}, - {0x00298A, 0x00298A, UC_PE}, - {0x00298B, 0x00298B, UC_PS}, - {0x00298C, 0x00298C, UC_PE}, - {0x00298D, 0x00298D, UC_PS}, - {0x00298E, 0x00298E, UC_PE}, - {0x00298F, 0x00298F, UC_PS}, - {0x002990, 0x002990, UC_PE}, - {0x002991, 0x002991, UC_PS}, - {0x002992, 0x002992, UC_PE}, - {0x002993, 0x002993, UC_PS}, - {0x002994, 0x002994, UC_PE}, - {0x002995, 0x002995, UC_PS}, - {0x002996, 0x002996, UC_PE}, - {0x002997, 0x002997, UC_PS}, - {0x002998, 0x002998, UC_PE}, - {0x002999, 0x0029D7, UC_SM}, - {0x0029D8, 0x0029D8, UC_PS}, - {0x0029D9, 0x0029D9, UC_PE}, - {0x0029DA, 0x0029DA, UC_PS}, - {0x0029DB, 0x0029DB, UC_PE}, - {0x0029DC, 0x0029FB, UC_SM}, - {0x0029FC, 0x0029FC, UC_PS}, - {0x0029FD, 0x0029FD, UC_PE}, - {0x0029FE, 0x002AFF, UC_SM}, - {0x002B00, 0x002B2F, UC_SO}, - {0x002B30, 0x002B44, UC_SM}, - {0x002B45, 0x002B46, UC_SO}, - {0x002B47, 0x002B4C, UC_SM}, - {0x002B4D, 0x002B73, UC_SO}, - {0x002B76, 0x002B95, UC_SO}, - {0x002B97, 0x002BFF, UC_SO}, - {0x002C00, 0x002C2F, UC_LU}, - {0x002C30, 0x002C5F, UC_LL}, - {0x002C60, 0x002C60, UC_LU}, - {0x002C61, 0x002C61, UC_LL}, - {0x002C62, 0x002C64, UC_LU}, - {0x002C65, 0x002C66, UC_LL}, - {0x002C67, 0x002C67, UC_LU}, - {0x002C68, 0x002C68, UC_LL}, - {0x002C69, 0x002C69, UC_LU}, - {0x002C6A, 0x002C6A, UC_LL}, - {0x002C6B, 0x002C6B, UC_LU}, - {0x002C6C, 0x002C6C, UC_LL}, - {0x002C6D, 0x002C70, UC_LU}, - {0x002C71, 0x002C71, UC_LL}, - {0x002C72, 0x002C72, UC_LU}, - {0x002C73, 0x002C74, UC_LL}, - {0x002C75, 0x002C75, UC_LU}, - {0x002C76, 0x002C7B, UC_LL}, - {0x002C7C, 0x002C7D, UC_LM}, - {0x002C7E, 0x002C80, UC_LU}, - {0x002C81, 0x002C81, UC_LL}, - {0x002C82, 0x002C82, UC_LU}, - {0x002C83, 0x002C83, UC_LL}, - {0x002C84, 0x002C84, UC_LU}, - {0x002C85, 0x002C85, UC_LL}, - {0x002C86, 0x002C86, UC_LU}, - {0x002C87, 0x002C87, UC_LL}, - {0x002C88, 0x002C88, UC_LU}, - {0x002C89, 0x002C89, UC_LL}, - {0x002C8A, 0x002C8A, UC_LU}, - {0x002C8B, 0x002C8B, UC_LL}, - {0x002C8C, 0x002C8C, UC_LU}, - {0x002C8D, 0x002C8D, UC_LL}, - {0x002C8E, 0x002C8E, UC_LU}, - {0x002C8F, 0x002C8F, UC_LL}, - {0x002C90, 0x002C90, UC_LU}, - {0x002C91, 0x002C91, UC_LL}, - {0x002C92, 0x002C92, UC_LU}, - {0x002C93, 0x002C93, UC_LL}, - {0x002C94, 0x002C94, UC_LU}, - {0x002C95, 0x002C95, UC_LL}, - {0x002C96, 0x002C96, UC_LU}, - {0x002C97, 0x002C97, UC_LL}, - {0x002C98, 0x002C98, UC_LU}, - {0x002C99, 0x002C99, UC_LL}, - {0x002C9A, 0x002C9A, UC_LU}, - {0x002C9B, 0x002C9B, UC_LL}, - {0x002C9C, 0x002C9C, UC_LU}, - {0x002C9D, 0x002C9D, UC_LL}, - {0x002C9E, 0x002C9E, UC_LU}, - {0x002C9F, 0x002C9F, UC_LL}, - {0x002CA0, 0x002CA0, UC_LU}, - {0x002CA1, 0x002CA1, UC_LL}, - {0x002CA2, 0x002CA2, UC_LU}, - {0x002CA3, 0x002CA3, UC_LL}, - {0x002CA4, 0x002CA4, UC_LU}, - {0x002CA5, 0x002CA5, UC_LL}, - {0x002CA6, 0x002CA6, UC_LU}, - {0x002CA7, 0x002CA7, UC_LL}, - {0x002CA8, 0x002CA8, UC_LU}, - {0x002CA9, 0x002CA9, UC_LL}, - {0x002CAA, 0x002CAA, UC_LU}, - {0x002CAB, 0x002CAB, UC_LL}, - {0x002CAC, 0x002CAC, UC_LU}, - {0x002CAD, 0x002CAD, UC_LL}, - {0x002CAE, 0x002CAE, UC_LU}, - {0x002CAF, 0x002CAF, UC_LL}, - {0x002CB0, 0x002CB0, UC_LU}, - {0x002CB1, 0x002CB1, UC_LL}, - {0x002CB2, 0x002CB2, UC_LU}, - {0x002CB3, 0x002CB3, UC_LL}, - {0x002CB4, 0x002CB4, UC_LU}, - {0x002CB5, 0x002CB5, UC_LL}, - {0x002CB6, 0x002CB6, UC_LU}, - {0x002CB7, 0x002CB7, UC_LL}, - {0x002CB8, 0x002CB8, UC_LU}, - {0x002CB9, 0x002CB9, UC_LL}, - {0x002CBA, 0x002CBA, UC_LU}, - {0x002CBB, 0x002CBB, UC_LL}, - {0x002CBC, 0x002CBC, UC_LU}, - {0x002CBD, 0x002CBD, UC_LL}, - {0x002CBE, 0x002CBE, UC_LU}, - {0x002CBF, 0x002CBF, UC_LL}, - {0x002CC0, 0x002CC0, UC_LU}, - {0x002CC1, 0x002CC1, UC_LL}, - {0x002CC2, 0x002CC2, UC_LU}, - {0x002CC3, 0x002CC3, UC_LL}, - {0x002CC4, 0x002CC4, UC_LU}, - {0x002CC5, 0x002CC5, UC_LL}, - {0x002CC6, 0x002CC6, UC_LU}, - {0x002CC7, 0x002CC7, UC_LL}, - {0x002CC8, 0x002CC8, UC_LU}, - {0x002CC9, 0x002CC9, UC_LL}, - {0x002CCA, 0x002CCA, UC_LU}, - {0x002CCB, 0x002CCB, UC_LL}, - {0x002CCC, 0x002CCC, UC_LU}, - {0x002CCD, 0x002CCD, UC_LL}, - {0x002CCE, 0x002CCE, UC_LU}, - {0x002CCF, 0x002CCF, UC_LL}, - {0x002CD0, 0x002CD0, UC_LU}, - {0x002CD1, 0x002CD1, UC_LL}, - {0x002CD2, 0x002CD2, UC_LU}, - {0x002CD3, 0x002CD3, UC_LL}, - {0x002CD4, 0x002CD4, UC_LU}, - {0x002CD5, 0x002CD5, UC_LL}, - {0x002CD6, 0x002CD6, UC_LU}, - {0x002CD7, 0x002CD7, UC_LL}, - {0x002CD8, 0x002CD8, UC_LU}, - {0x002CD9, 0x002CD9, UC_LL}, - {0x002CDA, 0x002CDA, UC_LU}, - {0x002CDB, 0x002CDB, UC_LL}, - {0x002CDC, 0x002CDC, UC_LU}, - {0x002CDD, 0x002CDD, UC_LL}, - {0x002CDE, 0x002CDE, UC_LU}, - {0x002CDF, 0x002CDF, UC_LL}, - {0x002CE0, 0x002CE0, UC_LU}, - {0x002CE1, 0x002CE1, UC_LL}, - {0x002CE2, 0x002CE2, UC_LU}, - {0x002CE3, 0x002CE4, UC_LL}, - {0x002CE5, 0x002CEA, UC_SO}, - {0x002CEB, 0x002CEB, UC_LU}, - {0x002CEC, 0x002CEC, UC_LL}, - {0x002CED, 0x002CED, UC_LU}, - {0x002CEE, 0x002CEE, UC_LL}, - {0x002CEF, 0x002CF1, UC_MN}, - {0x002CF2, 0x002CF2, UC_LU}, - {0x002CF3, 0x002CF3, UC_LL}, - {0x002CF9, 0x002CFC, UC_PO}, - {0x002CFD, 0x002CFD, UC_NO}, - {0x002CFE, 0x002CFF, UC_PO}, - {0x002D00, 0x002D25, UC_LL}, - {0x002D27, 0x002D27, UC_LL}, - {0x002D2D, 0x002D2D, UC_LL}, - {0x002D30, 0x002D67, UC_LO}, - {0x002D6F, 0x002D6F, UC_LM}, - {0x002D70, 0x002D70, UC_PO}, - {0x002D7F, 0x002D7F, UC_MN}, - {0x002D80, 0x002D96, UC_LO}, - {0x002DA0, 0x002DA6, UC_LO}, - {0x002DA8, 0x002DAE, UC_LO}, - {0x002DB0, 0x002DB6, UC_LO}, - {0x002DB8, 0x002DBE, UC_LO}, - {0x002DC0, 0x002DC6, UC_LO}, - {0x002DC8, 0x002DCE, UC_LO}, - {0x002DD0, 0x002DD6, UC_LO}, - {0x002DD8, 0x002DDE, UC_LO}, - {0x002DE0, 0x002DFF, UC_MN}, - {0x002E00, 0x002E01, UC_PO}, - {0x002E02, 0x002E02, UC_PI}, - {0x002E03, 0x002E03, UC_PF}, - {0x002E04, 0x002E04, UC_PI}, - {0x002E05, 0x002E05, UC_PF}, - {0x002E06, 0x002E08, UC_PO}, - {0x002E09, 0x002E09, UC_PI}, - {0x002E0A, 0x002E0A, UC_PF}, - {0x002E0B, 0x002E0B, UC_PO}, - {0x002E0C, 0x002E0C, UC_PI}, - {0x002E0D, 0x002E0D, UC_PF}, - {0x002E0E, 0x002E16, UC_PO}, - {0x002E17, 0x002E17, UC_PD}, - {0x002E18, 0x002E19, UC_PO}, - {0x002E1A, 0x002E1A, UC_PD}, - {0x002E1B, 0x002E1B, UC_PO}, - {0x002E1C, 0x002E1C, UC_PI}, - {0x002E1D, 0x002E1D, UC_PF}, - {0x002E1E, 0x002E1F, UC_PO}, - {0x002E20, 0x002E20, UC_PI}, - {0x002E21, 0x002E21, UC_PF}, - {0x002E22, 0x002E22, UC_PS}, - {0x002E23, 0x002E23, UC_PE}, - {0x002E24, 0x002E24, UC_PS}, - {0x002E25, 0x002E25, UC_PE}, - {0x002E26, 0x002E26, UC_PS}, - {0x002E27, 0x002E27, UC_PE}, - {0x002E28, 0x002E28, UC_PS}, - {0x002E29, 0x002E29, UC_PE}, - {0x002E2A, 0x002E2E, UC_PO}, - {0x002E2F, 0x002E2F, UC_LM}, - {0x002E30, 0x002E39, UC_PO}, - {0x002E3A, 0x002E3B, UC_PD}, - {0x002E3C, 0x002E3F, UC_PO}, - {0x002E40, 0x002E40, UC_PD}, - {0x002E41, 0x002E41, UC_PO}, - {0x002E42, 0x002E42, UC_PS}, - {0x002E43, 0x002E4F, UC_PO}, - {0x002E50, 0x002E51, UC_SO}, - {0x002E52, 0x002E54, UC_PO}, - {0x002E55, 0x002E55, UC_PS}, - {0x002E56, 0x002E56, UC_PE}, - {0x002E57, 0x002E57, UC_PS}, - {0x002E58, 0x002E58, UC_PE}, - {0x002E59, 0x002E59, UC_PS}, - {0x002E5A, 0x002E5A, UC_PE}, - {0x002E5B, 0x002E5B, UC_PS}, - {0x002E5C, 0x002E5C, UC_PE}, - {0x002E5D, 0x002E5D, UC_PD}, - {0x002E80, 0x002E99, UC_SO}, - {0x002E9B, 0x002EF3, UC_SO}, - {0x002F00, 0x002FD5, UC_SO}, - {0x002FF0, 0x002FFF, UC_SO}, - {0x003000, 0x003000, UC_ZS}, - {0x003001, 0x003003, UC_PO}, - {0x003004, 0x003004, UC_SO}, - {0x003005, 0x003005, UC_LM}, - {0x003006, 0x003006, UC_LO}, - {0x003007, 0x003007, UC_NL}, - {0x003008, 0x003008, UC_PS}, - {0x003009, 0x003009, UC_PE}, - {0x00300A, 0x00300A, UC_PS}, - {0x00300B, 0x00300B, UC_PE}, - {0x00300C, 0x00300C, UC_PS}, - {0x00300D, 0x00300D, UC_PE}, - {0x00300E, 0x00300E, UC_PS}, - {0x00300F, 0x00300F, UC_PE}, - {0x003010, 0x003010, UC_PS}, - {0x003011, 0x003011, UC_PE}, - {0x003012, 0x003013, UC_SO}, - {0x003014, 0x003014, UC_PS}, - {0x003015, 0x003015, UC_PE}, - {0x003016, 0x003016, UC_PS}, - {0x003017, 0x003017, UC_PE}, - {0x003018, 0x003018, UC_PS}, - {0x003019, 0x003019, UC_PE}, - {0x00301A, 0x00301A, UC_PS}, - {0x00301B, 0x00301B, UC_PE}, - {0x00301C, 0x00301C, UC_PD}, - {0x00301D, 0x00301D, UC_PS}, - {0x00301E, 0x00301F, UC_PE}, - {0x003020, 0x003020, UC_SO}, - {0x003021, 0x003029, UC_NL}, - {0x00302A, 0x00302D, UC_MN}, - {0x00302E, 0x00302F, UC_MC}, - {0x003030, 0x003030, UC_PD}, - {0x003031, 0x003035, UC_LM}, - {0x003036, 0x003037, UC_SO}, - {0x003038, 0x00303A, UC_NL}, - {0x00303B, 0x00303B, UC_LM}, - {0x00303C, 0x00303C, UC_LO}, - {0x00303D, 0x00303D, UC_PO}, - {0x00303E, 0x00303F, UC_SO}, - {0x003041, 0x003096, UC_LO}, - {0x003099, 0x00309A, UC_MN}, - {0x00309B, 0x00309C, UC_SK}, - {0x00309D, 0x00309E, UC_LM}, - {0x00309F, 0x00309F, UC_LO}, - {0x0030A0, 0x0030A0, UC_PD}, - {0x0030A1, 0x0030FA, UC_LO}, - {0x0030FB, 0x0030FB, UC_PO}, - {0x0030FC, 0x0030FE, UC_LM}, - {0x0030FF, 0x0030FF, UC_LO}, - {0x003105, 0x00312F, UC_LO}, - {0x003131, 0x00318E, UC_LO}, - {0x003190, 0x003191, UC_SO}, - {0x003192, 0x003195, UC_NO}, - {0x003196, 0x00319F, UC_SO}, - {0x0031A0, 0x0031BF, UC_LO}, - {0x0031C0, 0x0031E3, UC_SO}, - {0x0031EF, 0x0031EF, UC_SO}, - {0x0031F0, 0x0031FF, UC_LO}, - {0x003200, 0x00321E, UC_SO}, - {0x003220, 0x003229, UC_NO}, - {0x00322A, 0x003247, UC_SO}, - {0x003248, 0x00324F, UC_NO}, - {0x003250, 0x003250, UC_SO}, - {0x003251, 0x00325F, UC_NO}, - {0x003260, 0x00327F, UC_SO}, - {0x003280, 0x003289, UC_NO}, - {0x00328A, 0x0032B0, UC_SO}, - {0x0032B1, 0x0032BF, UC_NO}, - {0x0032C0, 0x0033FF, UC_SO}, - {0x003400, 0x004DBF, UC_LO}, - {0x004DC0, 0x004DFF, UC_SO}, - {0x004E00, 0x00A014, UC_LO}, - {0x00A015, 0x00A015, UC_LM}, - {0x00A016, 0x00A48C, UC_LO}, - {0x00A490, 0x00A4C6, UC_SO}, - {0x00A4D0, 0x00A4F7, UC_LO}, - {0x00A4F8, 0x00A4FD, UC_LM}, - {0x00A4FE, 0x00A4FF, UC_PO}, - {0x00A500, 0x00A60B, UC_LO}, - {0x00A60C, 0x00A60C, UC_LM}, - {0x00A60D, 0x00A60F, UC_PO}, - {0x00A610, 0x00A61F, UC_LO}, - {0x00A620, 0x00A629, UC_ND}, - {0x00A62A, 0x00A62B, UC_LO}, - {0x00A640, 0x00A640, UC_LU}, - {0x00A641, 0x00A641, UC_LL}, - {0x00A642, 0x00A642, UC_LU}, - {0x00A643, 0x00A643, UC_LL}, - {0x00A644, 0x00A644, UC_LU}, - {0x00A645, 0x00A645, UC_LL}, - {0x00A646, 0x00A646, UC_LU}, - {0x00A647, 0x00A647, UC_LL}, - {0x00A648, 0x00A648, UC_LU}, - {0x00A649, 0x00A649, UC_LL}, - {0x00A64A, 0x00A64A, UC_LU}, - {0x00A64B, 0x00A64B, UC_LL}, - {0x00A64C, 0x00A64C, UC_LU}, - {0x00A64D, 0x00A64D, UC_LL}, - {0x00A64E, 0x00A64E, UC_LU}, - {0x00A64F, 0x00A64F, UC_LL}, - {0x00A650, 0x00A650, UC_LU}, - {0x00A651, 0x00A651, UC_LL}, - {0x00A652, 0x00A652, UC_LU}, - {0x00A653, 0x00A653, UC_LL}, - {0x00A654, 0x00A654, UC_LU}, - {0x00A655, 0x00A655, UC_LL}, - {0x00A656, 0x00A656, UC_LU}, - {0x00A657, 0x00A657, UC_LL}, - {0x00A658, 0x00A658, UC_LU}, - {0x00A659, 0x00A659, UC_LL}, - {0x00A65A, 0x00A65A, UC_LU}, - {0x00A65B, 0x00A65B, UC_LL}, - {0x00A65C, 0x00A65C, UC_LU}, - {0x00A65D, 0x00A65D, UC_LL}, - {0x00A65E, 0x00A65E, UC_LU}, - {0x00A65F, 0x00A65F, UC_LL}, - {0x00A660, 0x00A660, UC_LU}, - {0x00A661, 0x00A661, UC_LL}, - {0x00A662, 0x00A662, UC_LU}, - {0x00A663, 0x00A663, UC_LL}, - {0x00A664, 0x00A664, UC_LU}, - {0x00A665, 0x00A665, UC_LL}, - {0x00A666, 0x00A666, UC_LU}, - {0x00A667, 0x00A667, UC_LL}, - {0x00A668, 0x00A668, UC_LU}, - {0x00A669, 0x00A669, UC_LL}, - {0x00A66A, 0x00A66A, UC_LU}, - {0x00A66B, 0x00A66B, UC_LL}, - {0x00A66C, 0x00A66C, UC_LU}, - {0x00A66D, 0x00A66D, UC_LL}, - {0x00A66E, 0x00A66E, UC_LO}, - {0x00A66F, 0x00A66F, UC_MN}, - {0x00A670, 0x00A672, UC_ME}, - {0x00A673, 0x00A673, UC_PO}, - {0x00A674, 0x00A67D, UC_MN}, - {0x00A67E, 0x00A67E, UC_PO}, - {0x00A67F, 0x00A67F, UC_LM}, - {0x00A680, 0x00A680, UC_LU}, - {0x00A681, 0x00A681, UC_LL}, - {0x00A682, 0x00A682, UC_LU}, - {0x00A683, 0x00A683, UC_LL}, - {0x00A684, 0x00A684, UC_LU}, - {0x00A685, 0x00A685, UC_LL}, - {0x00A686, 0x00A686, UC_LU}, - {0x00A687, 0x00A687, UC_LL}, - {0x00A688, 0x00A688, UC_LU}, - {0x00A689, 0x00A689, UC_LL}, - {0x00A68A, 0x00A68A, UC_LU}, - {0x00A68B, 0x00A68B, UC_LL}, - {0x00A68C, 0x00A68C, UC_LU}, - {0x00A68D, 0x00A68D, UC_LL}, - {0x00A68E, 0x00A68E, UC_LU}, - {0x00A68F, 0x00A68F, UC_LL}, - {0x00A690, 0x00A690, UC_LU}, - {0x00A691, 0x00A691, UC_LL}, - {0x00A692, 0x00A692, UC_LU}, - {0x00A693, 0x00A693, UC_LL}, - {0x00A694, 0x00A694, UC_LU}, - {0x00A695, 0x00A695, UC_LL}, - {0x00A696, 0x00A696, UC_LU}, - {0x00A697, 0x00A697, UC_LL}, - {0x00A698, 0x00A698, UC_LU}, - {0x00A699, 0x00A699, UC_LL}, - {0x00A69A, 0x00A69A, UC_LU}, - {0x00A69B, 0x00A69B, UC_LL}, - {0x00A69C, 0x00A69D, UC_LM}, - {0x00A69E, 0x00A69F, UC_MN}, - {0x00A6A0, 0x00A6E5, UC_LO}, - {0x00A6E6, 0x00A6EF, UC_NL}, - {0x00A6F0, 0x00A6F1, UC_MN}, - {0x00A6F2, 0x00A6F7, UC_PO}, - {0x00A700, 0x00A716, UC_SK}, - {0x00A717, 0x00A71F, UC_LM}, - {0x00A720, 0x00A721, UC_SK}, - {0x00A722, 0x00A722, UC_LU}, - {0x00A723, 0x00A723, UC_LL}, - {0x00A724, 0x00A724, UC_LU}, - {0x00A725, 0x00A725, UC_LL}, - {0x00A726, 0x00A726, UC_LU}, - {0x00A727, 0x00A727, UC_LL}, - {0x00A728, 0x00A728, UC_LU}, - {0x00A729, 0x00A729, UC_LL}, - {0x00A72A, 0x00A72A, UC_LU}, - {0x00A72B, 0x00A72B, UC_LL}, - {0x00A72C, 0x00A72C, UC_LU}, - {0x00A72D, 0x00A72D, UC_LL}, - {0x00A72E, 0x00A72E, UC_LU}, - {0x00A72F, 0x00A731, UC_LL}, - {0x00A732, 0x00A732, UC_LU}, - {0x00A733, 0x00A733, UC_LL}, - {0x00A734, 0x00A734, UC_LU}, - {0x00A735, 0x00A735, UC_LL}, - {0x00A736, 0x00A736, UC_LU}, - {0x00A737, 0x00A737, UC_LL}, - {0x00A738, 0x00A738, UC_LU}, - {0x00A739, 0x00A739, UC_LL}, - {0x00A73A, 0x00A73A, UC_LU}, - {0x00A73B, 0x00A73B, UC_LL}, - {0x00A73C, 0x00A73C, UC_LU}, - {0x00A73D, 0x00A73D, UC_LL}, - {0x00A73E, 0x00A73E, UC_LU}, - {0x00A73F, 0x00A73F, UC_LL}, - {0x00A740, 0x00A740, UC_LU}, - {0x00A741, 0x00A741, UC_LL}, - {0x00A742, 0x00A742, UC_LU}, - {0x00A743, 0x00A743, UC_LL}, - {0x00A744, 0x00A744, UC_LU}, - {0x00A745, 0x00A745, UC_LL}, - {0x00A746, 0x00A746, UC_LU}, - {0x00A747, 0x00A747, UC_LL}, - {0x00A748, 0x00A748, UC_LU}, - {0x00A749, 0x00A749, UC_LL}, - {0x00A74A, 0x00A74A, UC_LU}, - {0x00A74B, 0x00A74B, UC_LL}, - {0x00A74C, 0x00A74C, UC_LU}, - {0x00A74D, 0x00A74D, UC_LL}, - {0x00A74E, 0x00A74E, UC_LU}, - {0x00A74F, 0x00A74F, UC_LL}, - {0x00A750, 0x00A750, UC_LU}, - {0x00A751, 0x00A751, UC_LL}, - {0x00A752, 0x00A752, UC_LU}, - {0x00A753, 0x00A753, UC_LL}, - {0x00A754, 0x00A754, UC_LU}, - {0x00A755, 0x00A755, UC_LL}, - {0x00A756, 0x00A756, UC_LU}, - {0x00A757, 0x00A757, UC_LL}, - {0x00A758, 0x00A758, UC_LU}, - {0x00A759, 0x00A759, UC_LL}, - {0x00A75A, 0x00A75A, UC_LU}, - {0x00A75B, 0x00A75B, UC_LL}, - {0x00A75C, 0x00A75C, UC_LU}, - {0x00A75D, 0x00A75D, UC_LL}, - {0x00A75E, 0x00A75E, UC_LU}, - {0x00A75F, 0x00A75F, UC_LL}, - {0x00A760, 0x00A760, UC_LU}, - {0x00A761, 0x00A761, UC_LL}, - {0x00A762, 0x00A762, UC_LU}, - {0x00A763, 0x00A763, UC_LL}, - {0x00A764, 0x00A764, UC_LU}, - {0x00A765, 0x00A765, UC_LL}, - {0x00A766, 0x00A766, UC_LU}, - {0x00A767, 0x00A767, UC_LL}, - {0x00A768, 0x00A768, UC_LU}, - {0x00A769, 0x00A769, UC_LL}, - {0x00A76A, 0x00A76A, UC_LU}, - {0x00A76B, 0x00A76B, UC_LL}, - {0x00A76C, 0x00A76C, UC_LU}, - {0x00A76D, 0x00A76D, UC_LL}, - {0x00A76E, 0x00A76E, UC_LU}, - {0x00A76F, 0x00A76F, UC_LL}, - {0x00A770, 0x00A770, UC_LM}, - {0x00A771, 0x00A778, UC_LL}, - {0x00A779, 0x00A779, UC_LU}, - {0x00A77A, 0x00A77A, UC_LL}, - {0x00A77B, 0x00A77B, UC_LU}, - {0x00A77C, 0x00A77C, UC_LL}, - {0x00A77D, 0x00A77E, UC_LU}, - {0x00A77F, 0x00A77F, UC_LL}, - {0x00A780, 0x00A780, UC_LU}, - {0x00A781, 0x00A781, UC_LL}, - {0x00A782, 0x00A782, UC_LU}, - {0x00A783, 0x00A783, UC_LL}, - {0x00A784, 0x00A784, UC_LU}, - {0x00A785, 0x00A785, UC_LL}, - {0x00A786, 0x00A786, UC_LU}, - {0x00A787, 0x00A787, UC_LL}, - {0x00A788, 0x00A788, UC_LM}, - {0x00A789, 0x00A78A, UC_SK}, - {0x00A78B, 0x00A78B, UC_LU}, - {0x00A78C, 0x00A78C, UC_LL}, - {0x00A78D, 0x00A78D, UC_LU}, - {0x00A78E, 0x00A78E, UC_LL}, - {0x00A78F, 0x00A78F, UC_LO}, - {0x00A790, 0x00A790, UC_LU}, - {0x00A791, 0x00A791, UC_LL}, - {0x00A792, 0x00A792, UC_LU}, - {0x00A793, 0x00A795, UC_LL}, - {0x00A796, 0x00A796, UC_LU}, - {0x00A797, 0x00A797, UC_LL}, - {0x00A798, 0x00A798, UC_LU}, - {0x00A799, 0x00A799, UC_LL}, - {0x00A79A, 0x00A79A, UC_LU}, - {0x00A79B, 0x00A79B, UC_LL}, - {0x00A79C, 0x00A79C, UC_LU}, - {0x00A79D, 0x00A79D, UC_LL}, - {0x00A79E, 0x00A79E, UC_LU}, - {0x00A79F, 0x00A79F, UC_LL}, - {0x00A7A0, 0x00A7A0, UC_LU}, - {0x00A7A1, 0x00A7A1, UC_LL}, - {0x00A7A2, 0x00A7A2, UC_LU}, - {0x00A7A3, 0x00A7A3, UC_LL}, - {0x00A7A4, 0x00A7A4, UC_LU}, - {0x00A7A5, 0x00A7A5, UC_LL}, - {0x00A7A6, 0x00A7A6, UC_LU}, - {0x00A7A7, 0x00A7A7, UC_LL}, - {0x00A7A8, 0x00A7A8, UC_LU}, - {0x00A7A9, 0x00A7A9, UC_LL}, - {0x00A7AA, 0x00A7AE, UC_LU}, - {0x00A7AF, 0x00A7AF, UC_LL}, - {0x00A7B0, 0x00A7B4, UC_LU}, - {0x00A7B5, 0x00A7B5, UC_LL}, - {0x00A7B6, 0x00A7B6, UC_LU}, - {0x00A7B7, 0x00A7B7, UC_LL}, - {0x00A7B8, 0x00A7B8, UC_LU}, - {0x00A7B9, 0x00A7B9, UC_LL}, - {0x00A7BA, 0x00A7BA, UC_LU}, - {0x00A7BB, 0x00A7BB, UC_LL}, - {0x00A7BC, 0x00A7BC, UC_LU}, - {0x00A7BD, 0x00A7BD, UC_LL}, - {0x00A7BE, 0x00A7BE, UC_LU}, - {0x00A7BF, 0x00A7BF, UC_LL}, - {0x00A7C0, 0x00A7C0, UC_LU}, - {0x00A7C1, 0x00A7C1, UC_LL}, - {0x00A7C2, 0x00A7C2, UC_LU}, - {0x00A7C3, 0x00A7C3, UC_LL}, - {0x00A7C4, 0x00A7C7, UC_LU}, - {0x00A7C8, 0x00A7C8, UC_LL}, - {0x00A7C9, 0x00A7C9, UC_LU}, - {0x00A7CA, 0x00A7CA, UC_LL}, - {0x00A7D0, 0x00A7D0, UC_LU}, - {0x00A7D1, 0x00A7D1, UC_LL}, - {0x00A7D3, 0x00A7D3, UC_LL}, - {0x00A7D5, 0x00A7D5, UC_LL}, - {0x00A7D6, 0x00A7D6, UC_LU}, - {0x00A7D7, 0x00A7D7, UC_LL}, - {0x00A7D8, 0x00A7D8, UC_LU}, - {0x00A7D9, 0x00A7D9, UC_LL}, - {0x00A7F2, 0x00A7F4, UC_LM}, - {0x00A7F5, 0x00A7F5, UC_LU}, - {0x00A7F6, 0x00A7F6, UC_LL}, - {0x00A7F7, 0x00A7F7, UC_LO}, - {0x00A7F8, 0x00A7F9, UC_LM}, - {0x00A7FA, 0x00A7FA, UC_LL}, - {0x00A7FB, 0x00A801, UC_LO}, - {0x00A802, 0x00A802, UC_MN}, - {0x00A803, 0x00A805, UC_LO}, - {0x00A806, 0x00A806, UC_MN}, - {0x00A807, 0x00A80A, UC_LO}, - {0x00A80B, 0x00A80B, UC_MN}, - {0x00A80C, 0x00A822, UC_LO}, - {0x00A823, 0x00A824, UC_MC}, - {0x00A825, 0x00A826, UC_MN}, - {0x00A827, 0x00A827, UC_MC}, - {0x00A828, 0x00A82B, UC_SO}, - {0x00A82C, 0x00A82C, UC_MN}, - {0x00A830, 0x00A835, UC_NO}, - {0x00A836, 0x00A837, UC_SO}, - {0x00A838, 0x00A838, UC_SC}, - {0x00A839, 0x00A839, UC_SO}, - {0x00A840, 0x00A873, UC_LO}, - {0x00A874, 0x00A877, UC_PO}, - {0x00A880, 0x00A881, UC_MC}, - {0x00A882, 0x00A8B3, UC_LO}, - {0x00A8B4, 0x00A8C3, UC_MC}, - {0x00A8C4, 0x00A8C5, UC_MN}, - {0x00A8CE, 0x00A8CF, UC_PO}, - {0x00A8D0, 0x00A8D9, UC_ND}, - {0x00A8E0, 0x00A8F1, UC_MN}, - {0x00A8F2, 0x00A8F7, UC_LO}, - {0x00A8F8, 0x00A8FA, UC_PO}, - {0x00A8FB, 0x00A8FB, UC_LO}, - {0x00A8FC, 0x00A8FC, UC_PO}, - {0x00A8FD, 0x00A8FE, UC_LO}, - {0x00A8FF, 0x00A8FF, UC_MN}, - {0x00A900, 0x00A909, UC_ND}, - {0x00A90A, 0x00A925, UC_LO}, - {0x00A926, 0x00A92D, UC_MN}, - {0x00A92E, 0x00A92F, UC_PO}, - {0x00A930, 0x00A946, UC_LO}, - {0x00A947, 0x00A951, UC_MN}, - {0x00A952, 0x00A953, UC_MC}, - {0x00A95F, 0x00A95F, UC_PO}, - {0x00A960, 0x00A97C, UC_LO}, - {0x00A980, 0x00A982, UC_MN}, - {0x00A983, 0x00A983, UC_MC}, - {0x00A984, 0x00A9B2, UC_LO}, - {0x00A9B3, 0x00A9B3, UC_MN}, - {0x00A9B4, 0x00A9B5, UC_MC}, - {0x00A9B6, 0x00A9B9, UC_MN}, - {0x00A9BA, 0x00A9BB, UC_MC}, - {0x00A9BC, 0x00A9BD, UC_MN}, - {0x00A9BE, 0x00A9C0, UC_MC}, - {0x00A9C1, 0x00A9CD, UC_PO}, - {0x00A9CF, 0x00A9CF, UC_LM}, - {0x00A9D0, 0x00A9D9, UC_ND}, - {0x00A9DE, 0x00A9DF, UC_PO}, - {0x00A9E0, 0x00A9E4, UC_LO}, - {0x00A9E5, 0x00A9E5, UC_MN}, - {0x00A9E6, 0x00A9E6, UC_LM}, - {0x00A9E7, 0x00A9EF, UC_LO}, - {0x00A9F0, 0x00A9F9, UC_ND}, - {0x00A9FA, 0x00A9FE, UC_LO}, - {0x00AA00, 0x00AA28, UC_LO}, - {0x00AA29, 0x00AA2E, UC_MN}, - {0x00AA2F, 0x00AA30, UC_MC}, - {0x00AA31, 0x00AA32, UC_MN}, - {0x00AA33, 0x00AA34, UC_MC}, - {0x00AA35, 0x00AA36, UC_MN}, - {0x00AA40, 0x00AA42, UC_LO}, - {0x00AA43, 0x00AA43, UC_MN}, - {0x00AA44, 0x00AA4B, UC_LO}, - {0x00AA4C, 0x00AA4C, UC_MN}, - {0x00AA4D, 0x00AA4D, UC_MC}, - {0x00AA50, 0x00AA59, UC_ND}, - {0x00AA5C, 0x00AA5F, UC_PO}, - {0x00AA60, 0x00AA6F, UC_LO}, - {0x00AA70, 0x00AA70, UC_LM}, - {0x00AA71, 0x00AA76, UC_LO}, - {0x00AA77, 0x00AA79, UC_SO}, - {0x00AA7A, 0x00AA7A, UC_LO}, - {0x00AA7B, 0x00AA7B, UC_MC}, - {0x00AA7C, 0x00AA7C, UC_MN}, - {0x00AA7D, 0x00AA7D, UC_MC}, - {0x00AA7E, 0x00AAAF, UC_LO}, - {0x00AAB0, 0x00AAB0, UC_MN}, - {0x00AAB1, 0x00AAB1, UC_LO}, - {0x00AAB2, 0x00AAB4, UC_MN}, - {0x00AAB5, 0x00AAB6, UC_LO}, - {0x00AAB7, 0x00AAB8, UC_MN}, - {0x00AAB9, 0x00AABD, UC_LO}, - {0x00AABE, 0x00AABF, UC_MN}, - {0x00AAC0, 0x00AAC0, UC_LO}, - {0x00AAC1, 0x00AAC1, UC_MN}, - {0x00AAC2, 0x00AAC2, UC_LO}, - {0x00AADB, 0x00AADC, UC_LO}, - {0x00AADD, 0x00AADD, UC_LM}, - {0x00AADE, 0x00AADF, UC_PO}, - {0x00AAE0, 0x00AAEA, UC_LO}, - {0x00AAEB, 0x00AAEB, UC_MC}, - {0x00AAEC, 0x00AAED, UC_MN}, - {0x00AAEE, 0x00AAEF, UC_MC}, - {0x00AAF0, 0x00AAF1, UC_PO}, - {0x00AAF2, 0x00AAF2, UC_LO}, - {0x00AAF3, 0x00AAF4, UC_LM}, - {0x00AAF5, 0x00AAF5, UC_MC}, - {0x00AAF6, 0x00AAF6, UC_MN}, - {0x00AB01, 0x00AB06, UC_LO}, - {0x00AB09, 0x00AB0E, UC_LO}, - {0x00AB11, 0x00AB16, UC_LO}, - {0x00AB20, 0x00AB26, UC_LO}, - {0x00AB28, 0x00AB2E, UC_LO}, - {0x00AB30, 0x00AB5A, UC_LL}, - {0x00AB5B, 0x00AB5B, UC_SK}, - {0x00AB5C, 0x00AB5F, UC_LM}, - {0x00AB60, 0x00AB68, UC_LL}, - {0x00AB69, 0x00AB69, UC_LM}, - {0x00AB6A, 0x00AB6B, UC_SK}, - {0x00AB70, 0x00ABBF, UC_LL}, - {0x00ABC0, 0x00ABE2, UC_LO}, - {0x00ABE3, 0x00ABE4, UC_MC}, - {0x00ABE5, 0x00ABE5, UC_MN}, - {0x00ABE6, 0x00ABE7, UC_MC}, - {0x00ABE8, 0x00ABE8, UC_MN}, - {0x00ABE9, 0x00ABEA, UC_MC}, - {0x00ABEB, 0x00ABEB, UC_PO}, - {0x00ABEC, 0x00ABEC, UC_MC}, - {0x00ABED, 0x00ABED, UC_MN}, - {0x00ABF0, 0x00ABF9, UC_ND}, - {0x00AC00, 0x00D7A3, UC_LO}, - {0x00D7B0, 0x00D7C6, UC_LO}, - {0x00D7CB, 0x00D7FB, UC_LO}, - {0x00D800, 0x00DFFF, UC_CS}, - {0x00E000, 0x00F8FF, UC_CO}, - {0x00F900, 0x00FA6D, UC_LO}, - {0x00FA70, 0x00FAD9, UC_LO}, - {0x00FB00, 0x00FB06, UC_LL}, - {0x00FB13, 0x00FB17, UC_LL}, - {0x00FB1D, 0x00FB1D, UC_LO}, - {0x00FB1E, 0x00FB1E, UC_MN}, - {0x00FB1F, 0x00FB28, UC_LO}, - {0x00FB29, 0x00FB29, UC_SM}, - {0x00FB2A, 0x00FB36, UC_LO}, - {0x00FB38, 0x00FB3C, UC_LO}, - {0x00FB3E, 0x00FB3E, UC_LO}, - {0x00FB40, 0x00FB41, UC_LO}, - {0x00FB43, 0x00FB44, UC_LO}, - {0x00FB46, 0x00FBB1, UC_LO}, - {0x00FBB2, 0x00FBC2, UC_SK}, - {0x00FBD3, 0x00FD3D, UC_LO}, - {0x00FD3E, 0x00FD3E, UC_PE}, - {0x00FD3F, 0x00FD3F, UC_PS}, - {0x00FD40, 0x00FD4F, UC_SO}, - {0x00FD50, 0x00FD8F, UC_LO}, - {0x00FD92, 0x00FDC7, UC_LO}, - {0x00FDCF, 0x00FDCF, UC_SO}, - {0x00FDF0, 0x00FDFB, UC_LO}, - {0x00FDFC, 0x00FDFC, UC_SC}, - {0x00FDFD, 0x00FDFF, UC_SO}, - {0x00FE00, 0x00FE0F, UC_MN}, - {0x00FE10, 0x00FE16, UC_PO}, - {0x00FE17, 0x00FE17, UC_PS}, - {0x00FE18, 0x00FE18, UC_PE}, - {0x00FE19, 0x00FE19, UC_PO}, - {0x00FE20, 0x00FE2F, UC_MN}, - {0x00FE30, 0x00FE30, UC_PO}, - {0x00FE31, 0x00FE32, UC_PD}, - {0x00FE33, 0x00FE34, UC_PC}, - {0x00FE35, 0x00FE35, UC_PS}, - {0x00FE36, 0x00FE36, UC_PE}, - {0x00FE37, 0x00FE37, UC_PS}, - {0x00FE38, 0x00FE38, UC_PE}, - {0x00FE39, 0x00FE39, UC_PS}, - {0x00FE3A, 0x00FE3A, UC_PE}, - {0x00FE3B, 0x00FE3B, UC_PS}, - {0x00FE3C, 0x00FE3C, UC_PE}, - {0x00FE3D, 0x00FE3D, UC_PS}, - {0x00FE3E, 0x00FE3E, UC_PE}, - {0x00FE3F, 0x00FE3F, UC_PS}, - {0x00FE40, 0x00FE40, UC_PE}, - {0x00FE41, 0x00FE41, UC_PS}, - {0x00FE42, 0x00FE42, UC_PE}, - {0x00FE43, 0x00FE43, UC_PS}, - {0x00FE44, 0x00FE44, UC_PE}, - {0x00FE45, 0x00FE46, UC_PO}, - {0x00FE47, 0x00FE47, UC_PS}, - {0x00FE48, 0x00FE48, UC_PE}, - {0x00FE49, 0x00FE4C, UC_PO}, - {0x00FE4D, 0x00FE4F, UC_PC}, - {0x00FE50, 0x00FE52, UC_PO}, - {0x00FE54, 0x00FE57, UC_PO}, - {0x00FE58, 0x00FE58, UC_PD}, - {0x00FE59, 0x00FE59, UC_PS}, - {0x00FE5A, 0x00FE5A, UC_PE}, - {0x00FE5B, 0x00FE5B, UC_PS}, - {0x00FE5C, 0x00FE5C, UC_PE}, - {0x00FE5D, 0x00FE5D, UC_PS}, - {0x00FE5E, 0x00FE5E, UC_PE}, - {0x00FE5F, 0x00FE61, UC_PO}, - {0x00FE62, 0x00FE62, UC_SM}, - {0x00FE63, 0x00FE63, UC_PD}, - {0x00FE64, 0x00FE66, UC_SM}, - {0x00FE68, 0x00FE68, UC_PO}, - {0x00FE69, 0x00FE69, UC_SC}, - {0x00FE6A, 0x00FE6B, UC_PO}, - {0x00FE70, 0x00FE74, UC_LO}, - {0x00FE76, 0x00FEFC, UC_LO}, - {0x00FEFF, 0x00FEFF, UC_CF}, - {0x00FF01, 0x00FF03, UC_PO}, - {0x00FF04, 0x00FF04, UC_SC}, - {0x00FF05, 0x00FF07, UC_PO}, - {0x00FF08, 0x00FF08, UC_PS}, - {0x00FF09, 0x00FF09, UC_PE}, - {0x00FF0A, 0x00FF0A, UC_PO}, - {0x00FF0B, 0x00FF0B, UC_SM}, - {0x00FF0C, 0x00FF0C, UC_PO}, - {0x00FF0D, 0x00FF0D, UC_PD}, - {0x00FF0E, 0x00FF0F, UC_PO}, - {0x00FF10, 0x00FF19, UC_ND}, - {0x00FF1A, 0x00FF1B, UC_PO}, - {0x00FF1C, 0x00FF1E, UC_SM}, - {0x00FF1F, 0x00FF20, UC_PO}, - {0x00FF21, 0x00FF3A, UC_LU}, - {0x00FF3B, 0x00FF3B, UC_PS}, - {0x00FF3C, 0x00FF3C, UC_PO}, - {0x00FF3D, 0x00FF3D, UC_PE}, - {0x00FF3E, 0x00FF3E, UC_SK}, - {0x00FF3F, 0x00FF3F, UC_PC}, - {0x00FF40, 0x00FF40, UC_SK}, - {0x00FF41, 0x00FF5A, UC_LL}, - {0x00FF5B, 0x00FF5B, UC_PS}, - {0x00FF5C, 0x00FF5C, UC_SM}, - {0x00FF5D, 0x00FF5D, UC_PE}, - {0x00FF5E, 0x00FF5E, UC_SM}, - {0x00FF5F, 0x00FF5F, UC_PS}, - {0x00FF60, 0x00FF60, UC_PE}, - {0x00FF61, 0x00FF61, UC_PO}, - {0x00FF62, 0x00FF62, UC_PS}, - {0x00FF63, 0x00FF63, UC_PE}, - {0x00FF64, 0x00FF65, UC_PO}, - {0x00FF66, 0x00FF6F, UC_LO}, - {0x00FF70, 0x00FF70, UC_LM}, - {0x00FF71, 0x00FF9D, UC_LO}, - {0x00FF9E, 0x00FF9F, UC_LM}, - {0x00FFA0, 0x00FFBE, UC_LO}, - {0x00FFC2, 0x00FFC7, UC_LO}, - {0x00FFCA, 0x00FFCF, UC_LO}, - {0x00FFD2, 0x00FFD7, UC_LO}, - {0x00FFDA, 0x00FFDC, UC_LO}, - {0x00FFE0, 0x00FFE1, UC_SC}, - {0x00FFE2, 0x00FFE2, UC_SM}, - {0x00FFE3, 0x00FFE3, UC_SK}, - {0x00FFE4, 0x00FFE4, UC_SO}, - {0x00FFE5, 0x00FFE6, UC_SC}, - {0x00FFE8, 0x00FFE8, UC_SO}, - {0x00FFE9, 0x00FFEC, UC_SM}, - {0x00FFED, 0x00FFEE, UC_SO}, - {0x00FFF9, 0x00FFFB, UC_CF}, - {0x00FFFC, 0x00FFFD, UC_SO}, - {0x010000, 0x01000B, UC_LO}, - {0x01000D, 0x010026, UC_LO}, - {0x010028, 0x01003A, UC_LO}, - {0x01003C, 0x01003D, UC_LO}, - {0x01003F, 0x01004D, UC_LO}, - {0x010050, 0x01005D, UC_LO}, - {0x010080, 0x0100FA, UC_LO}, - {0x010100, 0x010102, UC_PO}, - {0x010107, 0x010133, UC_NO}, - {0x010137, 0x01013F, UC_SO}, - {0x010140, 0x010174, UC_NL}, - {0x010175, 0x010178, UC_NO}, - {0x010179, 0x010189, UC_SO}, - {0x01018A, 0x01018B, UC_NO}, - {0x01018C, 0x01018E, UC_SO}, - {0x010190, 0x01019C, UC_SO}, - {0x0101A0, 0x0101A0, UC_SO}, - {0x0101D0, 0x0101FC, UC_SO}, - {0x0101FD, 0x0101FD, UC_MN}, - {0x010280, 0x01029C, UC_LO}, - {0x0102A0, 0x0102D0, UC_LO}, - {0x0102E0, 0x0102E0, UC_MN}, - {0x0102E1, 0x0102FB, UC_NO}, - {0x010300, 0x01031F, UC_LO}, - {0x010320, 0x010323, UC_NO}, - {0x01032D, 0x010340, UC_LO}, - {0x010341, 0x010341, UC_NL}, - {0x010342, 0x010349, UC_LO}, - {0x01034A, 0x01034A, UC_NL}, - {0x010350, 0x010375, UC_LO}, - {0x010376, 0x01037A, UC_MN}, - {0x010380, 0x01039D, UC_LO}, - {0x01039F, 0x01039F, UC_PO}, - {0x0103A0, 0x0103C3, UC_LO}, - {0x0103C8, 0x0103CF, UC_LO}, - {0x0103D0, 0x0103D0, UC_PO}, - {0x0103D1, 0x0103D5, UC_NL}, - {0x010400, 0x010427, UC_LU}, - {0x010428, 0x01044F, UC_LL}, - {0x010450, 0x01049D, UC_LO}, - {0x0104A0, 0x0104A9, UC_ND}, - {0x0104B0, 0x0104D3, UC_LU}, - {0x0104D8, 0x0104FB, UC_LL}, - {0x010500, 0x010527, UC_LO}, - {0x010530, 0x010563, UC_LO}, - {0x01056F, 0x01056F, UC_PO}, - {0x010570, 0x01057A, UC_LU}, - {0x01057C, 0x01058A, UC_LU}, - {0x01058C, 0x010592, UC_LU}, - {0x010594, 0x010595, UC_LU}, - {0x010597, 0x0105A1, UC_LL}, - {0x0105A3, 0x0105B1, UC_LL}, - {0x0105B3, 0x0105B9, UC_LL}, - {0x0105BB, 0x0105BC, UC_LL}, - {0x010600, 0x010736, UC_LO}, - {0x010740, 0x010755, UC_LO}, - {0x010760, 0x010767, UC_LO}, - {0x010780, 0x010785, UC_LM}, - {0x010787, 0x0107B0, UC_LM}, - {0x0107B2, 0x0107BA, UC_LM}, - {0x010800, 0x010805, UC_LO}, - {0x010808, 0x010808, UC_LO}, - {0x01080A, 0x010835, UC_LO}, - {0x010837, 0x010838, UC_LO}, - {0x01083C, 0x01083C, UC_LO}, - {0x01083F, 0x010855, UC_LO}, - {0x010857, 0x010857, UC_PO}, - {0x010858, 0x01085F, UC_NO}, - {0x010860, 0x010876, UC_LO}, - {0x010877, 0x010878, UC_SO}, - {0x010879, 0x01087F, UC_NO}, - {0x010880, 0x01089E, UC_LO}, - {0x0108A7, 0x0108AF, UC_NO}, - {0x0108E0, 0x0108F2, UC_LO}, - {0x0108F4, 0x0108F5, UC_LO}, - {0x0108FB, 0x0108FF, UC_NO}, - {0x010900, 0x010915, UC_LO}, - {0x010916, 0x01091B, UC_NO}, - {0x01091F, 0x01091F, UC_PO}, - {0x010920, 0x010939, UC_LO}, - {0x01093F, 0x01093F, UC_PO}, - {0x010980, 0x0109B7, UC_LO}, - {0x0109BC, 0x0109BD, UC_NO}, - {0x0109BE, 0x0109BF, UC_LO}, - {0x0109C0, 0x0109CF, UC_NO}, - {0x0109D2, 0x0109FF, UC_NO}, - {0x010A00, 0x010A00, UC_LO}, - {0x010A01, 0x010A03, UC_MN}, - {0x010A05, 0x010A06, UC_MN}, - {0x010A0C, 0x010A0F, UC_MN}, - {0x010A10, 0x010A13, UC_LO}, - {0x010A15, 0x010A17, UC_LO}, - {0x010A19, 0x010A35, UC_LO}, - {0x010A38, 0x010A3A, UC_MN}, - {0x010A3F, 0x010A3F, UC_MN}, - {0x010A40, 0x010A48, UC_NO}, - {0x010A50, 0x010A58, UC_PO}, - {0x010A60, 0x010A7C, UC_LO}, - {0x010A7D, 0x010A7E, UC_NO}, - {0x010A7F, 0x010A7F, UC_PO}, - {0x010A80, 0x010A9C, UC_LO}, - {0x010A9D, 0x010A9F, UC_NO}, - {0x010AC0, 0x010AC7, UC_LO}, - {0x010AC8, 0x010AC8, UC_SO}, - {0x010AC9, 0x010AE4, UC_LO}, - {0x010AE5, 0x010AE6, UC_MN}, - {0x010AEB, 0x010AEF, UC_NO}, - {0x010AF0, 0x010AF6, UC_PO}, - {0x010B00, 0x010B35, UC_LO}, - {0x010B39, 0x010B3F, UC_PO}, - {0x010B40, 0x010B55, UC_LO}, - {0x010B58, 0x010B5F, UC_NO}, - {0x010B60, 0x010B72, UC_LO}, - {0x010B78, 0x010B7F, UC_NO}, - {0x010B80, 0x010B91, UC_LO}, - {0x010B99, 0x010B9C, UC_PO}, - {0x010BA9, 0x010BAF, UC_NO}, - {0x010C00, 0x010C48, UC_LO}, - {0x010C80, 0x010CB2, UC_LU}, - {0x010CC0, 0x010CF2, UC_LL}, - {0x010CFA, 0x010CFF, UC_NO}, - {0x010D00, 0x010D23, UC_LO}, - {0x010D24, 0x010D27, UC_MN}, - {0x010D30, 0x010D39, UC_ND}, - {0x010E60, 0x010E7E, UC_NO}, - {0x010E80, 0x010EA9, UC_LO}, - {0x010EAB, 0x010EAC, UC_MN}, - {0x010EAD, 0x010EAD, UC_PD}, - {0x010EB0, 0x010EB1, UC_LO}, - {0x010EFD, 0x010EFF, UC_MN}, - {0x010F00, 0x010F1C, UC_LO}, - {0x010F1D, 0x010F26, UC_NO}, - {0x010F27, 0x010F27, UC_LO}, - {0x010F30, 0x010F45, UC_LO}, - {0x010F46, 0x010F50, UC_MN}, - {0x010F51, 0x010F54, UC_NO}, - {0x010F55, 0x010F59, UC_PO}, - {0x010F70, 0x010F81, UC_LO}, - {0x010F82, 0x010F85, UC_MN}, - {0x010F86, 0x010F89, UC_PO}, - {0x010FB0, 0x010FC4, UC_LO}, - {0x010FC5, 0x010FCB, UC_NO}, - {0x010FE0, 0x010FF6, UC_LO}, - {0x011000, 0x011000, UC_MC}, - {0x011001, 0x011001, UC_MN}, - {0x011002, 0x011002, UC_MC}, - {0x011003, 0x011037, UC_LO}, - {0x011038, 0x011046, UC_MN}, - {0x011047, 0x01104D, UC_PO}, - {0x011052, 0x011065, UC_NO}, - {0x011066, 0x01106F, UC_ND}, - {0x011070, 0x011070, UC_MN}, - {0x011071, 0x011072, UC_LO}, - {0x011073, 0x011074, UC_MN}, - {0x011075, 0x011075, UC_LO}, - {0x01107F, 0x011081, UC_MN}, - {0x011082, 0x011082, UC_MC}, - {0x011083, 0x0110AF, UC_LO}, - {0x0110B0, 0x0110B2, UC_MC}, - {0x0110B3, 0x0110B6, UC_MN}, - {0x0110B7, 0x0110B8, UC_MC}, - {0x0110B9, 0x0110BA, UC_MN}, - {0x0110BB, 0x0110BC, UC_PO}, - {0x0110BD, 0x0110BD, UC_CF}, - {0x0110BE, 0x0110C1, UC_PO}, - {0x0110C2, 0x0110C2, UC_MN}, - {0x0110CD, 0x0110CD, UC_CF}, - {0x0110D0, 0x0110E8, UC_LO}, - {0x0110F0, 0x0110F9, UC_ND}, - {0x011100, 0x011102, UC_MN}, - {0x011103, 0x011126, UC_LO}, - {0x011127, 0x01112B, UC_MN}, - {0x01112C, 0x01112C, UC_MC}, - {0x01112D, 0x011134, UC_MN}, - {0x011136, 0x01113F, UC_ND}, - {0x011140, 0x011143, UC_PO}, - {0x011144, 0x011144, UC_LO}, - {0x011145, 0x011146, UC_MC}, - {0x011147, 0x011147, UC_LO}, - {0x011150, 0x011172, UC_LO}, - {0x011173, 0x011173, UC_MN}, - {0x011174, 0x011175, UC_PO}, - {0x011176, 0x011176, UC_LO}, - {0x011180, 0x011181, UC_MN}, - {0x011182, 0x011182, UC_MC}, - {0x011183, 0x0111B2, UC_LO}, - {0x0111B3, 0x0111B5, UC_MC}, - {0x0111B6, 0x0111BE, UC_MN}, - {0x0111BF, 0x0111C0, UC_MC}, - {0x0111C1, 0x0111C4, UC_LO}, - {0x0111C5, 0x0111C8, UC_PO}, - {0x0111C9, 0x0111CC, UC_MN}, - {0x0111CD, 0x0111CD, UC_PO}, - {0x0111CE, 0x0111CE, UC_MC}, - {0x0111CF, 0x0111CF, UC_MN}, - {0x0111D0, 0x0111D9, UC_ND}, - {0x0111DA, 0x0111DA, UC_LO}, - {0x0111DB, 0x0111DB, UC_PO}, - {0x0111DC, 0x0111DC, UC_LO}, - {0x0111DD, 0x0111DF, UC_PO}, - {0x0111E1, 0x0111F4, UC_NO}, - {0x011200, 0x011211, UC_LO}, - {0x011213, 0x01122B, UC_LO}, - {0x01122C, 0x01122E, UC_MC}, - {0x01122F, 0x011231, UC_MN}, - {0x011232, 0x011233, UC_MC}, - {0x011234, 0x011234, UC_MN}, - {0x011235, 0x011235, UC_MC}, - {0x011236, 0x011237, UC_MN}, - {0x011238, 0x01123D, UC_PO}, - {0x01123E, 0x01123E, UC_MN}, - {0x01123F, 0x011240, UC_LO}, - {0x011241, 0x011241, UC_MN}, - {0x011280, 0x011286, UC_LO}, - {0x011288, 0x011288, UC_LO}, - {0x01128A, 0x01128D, UC_LO}, - {0x01128F, 0x01129D, UC_LO}, - {0x01129F, 0x0112A8, UC_LO}, - {0x0112A9, 0x0112A9, UC_PO}, - {0x0112B0, 0x0112DE, UC_LO}, - {0x0112DF, 0x0112DF, UC_MN}, - {0x0112E0, 0x0112E2, UC_MC}, - {0x0112E3, 0x0112EA, UC_MN}, - {0x0112F0, 0x0112F9, UC_ND}, - {0x011300, 0x011301, UC_MN}, - {0x011302, 0x011303, UC_MC}, - {0x011305, 0x01130C, UC_LO}, - {0x01130F, 0x011310, UC_LO}, - {0x011313, 0x011328, UC_LO}, - {0x01132A, 0x011330, UC_LO}, - {0x011332, 0x011333, UC_LO}, - {0x011335, 0x011339, UC_LO}, - {0x01133B, 0x01133C, UC_MN}, - {0x01133D, 0x01133D, UC_LO}, - {0x01133E, 0x01133F, UC_MC}, - {0x011340, 0x011340, UC_MN}, - {0x011341, 0x011344, UC_MC}, - {0x011347, 0x011348, UC_MC}, - {0x01134B, 0x01134D, UC_MC}, - {0x011350, 0x011350, UC_LO}, - {0x011357, 0x011357, UC_MC}, - {0x01135D, 0x011361, UC_LO}, - {0x011362, 0x011363, UC_MC}, - {0x011366, 0x01136C, UC_MN}, - {0x011370, 0x011374, UC_MN}, - {0x011400, 0x011434, UC_LO}, - {0x011435, 0x011437, UC_MC}, - {0x011438, 0x01143F, UC_MN}, - {0x011440, 0x011441, UC_MC}, - {0x011442, 0x011444, UC_MN}, - {0x011445, 0x011445, UC_MC}, - {0x011446, 0x011446, UC_MN}, - {0x011447, 0x01144A, UC_LO}, - {0x01144B, 0x01144F, UC_PO}, - {0x011450, 0x011459, UC_ND}, - {0x01145A, 0x01145B, UC_PO}, - {0x01145D, 0x01145D, UC_PO}, - {0x01145E, 0x01145E, UC_MN}, - {0x01145F, 0x011461, UC_LO}, - {0x011480, 0x0114AF, UC_LO}, - {0x0114B0, 0x0114B2, UC_MC}, - {0x0114B3, 0x0114B8, UC_MN}, - {0x0114B9, 0x0114B9, UC_MC}, - {0x0114BA, 0x0114BA, UC_MN}, - {0x0114BB, 0x0114BE, UC_MC}, - {0x0114BF, 0x0114C0, UC_MN}, - {0x0114C1, 0x0114C1, UC_MC}, - {0x0114C2, 0x0114C3, UC_MN}, - {0x0114C4, 0x0114C5, UC_LO}, - {0x0114C6, 0x0114C6, UC_PO}, - {0x0114C7, 0x0114C7, UC_LO}, - {0x0114D0, 0x0114D9, UC_ND}, - {0x011580, 0x0115AE, UC_LO}, - {0x0115AF, 0x0115B1, UC_MC}, - {0x0115B2, 0x0115B5, UC_MN}, - {0x0115B8, 0x0115BB, UC_MC}, - {0x0115BC, 0x0115BD, UC_MN}, - {0x0115BE, 0x0115BE, UC_MC}, - {0x0115BF, 0x0115C0, UC_MN}, - {0x0115C1, 0x0115D7, UC_PO}, - {0x0115D8, 0x0115DB, UC_LO}, - {0x0115DC, 0x0115DD, UC_MN}, - {0x011600, 0x01162F, UC_LO}, - {0x011630, 0x011632, UC_MC}, - {0x011633, 0x01163A, UC_MN}, - {0x01163B, 0x01163C, UC_MC}, - {0x01163D, 0x01163D, UC_MN}, - {0x01163E, 0x01163E, UC_MC}, - {0x01163F, 0x011640, UC_MN}, - {0x011641, 0x011643, UC_PO}, - {0x011644, 0x011644, UC_LO}, - {0x011650, 0x011659, UC_ND}, - {0x011660, 0x01166C, UC_PO}, - {0x011680, 0x0116AA, UC_LO}, - {0x0116AB, 0x0116AB, UC_MN}, - {0x0116AC, 0x0116AC, UC_MC}, - {0x0116AD, 0x0116AD, UC_MN}, - {0x0116AE, 0x0116AF, UC_MC}, - {0x0116B0, 0x0116B5, UC_MN}, - {0x0116B6, 0x0116B6, UC_MC}, - {0x0116B7, 0x0116B7, UC_MN}, - {0x0116B8, 0x0116B8, UC_LO}, - {0x0116B9, 0x0116B9, UC_PO}, - {0x0116C0, 0x0116C9, UC_ND}, - {0x011700, 0x01171A, UC_LO}, - {0x01171D, 0x01171F, UC_MN}, - {0x011720, 0x011721, UC_MC}, - {0x011722, 0x011725, UC_MN}, - {0x011726, 0x011726, UC_MC}, - {0x011727, 0x01172B, UC_MN}, - {0x011730, 0x011739, UC_ND}, - {0x01173A, 0x01173B, UC_NO}, - {0x01173C, 0x01173E, UC_PO}, - {0x01173F, 0x01173F, UC_SO}, - {0x011740, 0x011746, UC_LO}, - {0x011800, 0x01182B, UC_LO}, - {0x01182C, 0x01182E, UC_MC}, - {0x01182F, 0x011837, UC_MN}, - {0x011838, 0x011838, UC_MC}, - {0x011839, 0x01183A, UC_MN}, - {0x01183B, 0x01183B, UC_PO}, - {0x0118A0, 0x0118BF, UC_LU}, - {0x0118C0, 0x0118DF, UC_LL}, - {0x0118E0, 0x0118E9, UC_ND}, - {0x0118EA, 0x0118F2, UC_NO}, - {0x0118FF, 0x011906, UC_LO}, - {0x011909, 0x011909, UC_LO}, - {0x01190C, 0x011913, UC_LO}, - {0x011915, 0x011916, UC_LO}, - {0x011918, 0x01192F, UC_LO}, - {0x011930, 0x011935, UC_MC}, - {0x011937, 0x011938, UC_MC}, - {0x01193B, 0x01193C, UC_MN}, - {0x01193D, 0x01193D, UC_MC}, - {0x01193E, 0x01193E, UC_MN}, - {0x01193F, 0x01193F, UC_LO}, - {0x011940, 0x011940, UC_MC}, - {0x011941, 0x011941, UC_LO}, - {0x011942, 0x011942, UC_MC}, - {0x011943, 0x011943, UC_MN}, - {0x011944, 0x011946, UC_PO}, - {0x011950, 0x011959, UC_ND}, - {0x0119A0, 0x0119A7, UC_LO}, - {0x0119AA, 0x0119D0, UC_LO}, - {0x0119D1, 0x0119D3, UC_MC}, - {0x0119D4, 0x0119D7, UC_MN}, - {0x0119DA, 0x0119DB, UC_MN}, - {0x0119DC, 0x0119DF, UC_MC}, - {0x0119E0, 0x0119E0, UC_MN}, - {0x0119E1, 0x0119E1, UC_LO}, - {0x0119E2, 0x0119E2, UC_PO}, - {0x0119E3, 0x0119E3, UC_LO}, - {0x0119E4, 0x0119E4, UC_MC}, - {0x011A00, 0x011A00, UC_LO}, - {0x011A01, 0x011A0A, UC_MN}, - {0x011A0B, 0x011A32, UC_LO}, - {0x011A33, 0x011A38, UC_MN}, - {0x011A39, 0x011A39, UC_MC}, - {0x011A3A, 0x011A3A, UC_LO}, - {0x011A3B, 0x011A3E, UC_MN}, - {0x011A3F, 0x011A46, UC_PO}, - {0x011A47, 0x011A47, UC_MN}, - {0x011A50, 0x011A50, UC_LO}, - {0x011A51, 0x011A56, UC_MN}, - {0x011A57, 0x011A58, UC_MC}, - {0x011A59, 0x011A5B, UC_MN}, - {0x011A5C, 0x011A89, UC_LO}, - {0x011A8A, 0x011A96, UC_MN}, - {0x011A97, 0x011A97, UC_MC}, - {0x011A98, 0x011A99, UC_MN}, - {0x011A9A, 0x011A9C, UC_PO}, - {0x011A9D, 0x011A9D, UC_LO}, - {0x011A9E, 0x011AA2, UC_PO}, - {0x011AB0, 0x011AF8, UC_LO}, - {0x011B00, 0x011B09, UC_PO}, - {0x011C00, 0x011C08, UC_LO}, - {0x011C0A, 0x011C2E, UC_LO}, - {0x011C2F, 0x011C2F, UC_MC}, - {0x011C30, 0x011C36, UC_MN}, - {0x011C38, 0x011C3D, UC_MN}, - {0x011C3E, 0x011C3E, UC_MC}, - {0x011C3F, 0x011C3F, UC_MN}, - {0x011C40, 0x011C40, UC_LO}, - {0x011C41, 0x011C45, UC_PO}, - {0x011C50, 0x011C59, UC_ND}, - {0x011C5A, 0x011C6C, UC_NO}, - {0x011C70, 0x011C71, UC_PO}, - {0x011C72, 0x011C8F, UC_LO}, - {0x011C92, 0x011CA7, UC_MN}, - {0x011CA9, 0x011CA9, UC_MC}, - {0x011CAA, 0x011CB0, UC_MN}, - {0x011CB1, 0x011CB1, UC_MC}, - {0x011CB2, 0x011CB3, UC_MN}, - {0x011CB4, 0x011CB4, UC_MC}, - {0x011CB5, 0x011CB6, UC_MN}, - {0x011D00, 0x011D06, UC_LO}, - {0x011D08, 0x011D09, UC_LO}, - {0x011D0B, 0x011D30, UC_LO}, - {0x011D31, 0x011D36, UC_MN}, - {0x011D3A, 0x011D3A, UC_MN}, - {0x011D3C, 0x011D3D, UC_MN}, - {0x011D3F, 0x011D45, UC_MN}, - {0x011D46, 0x011D46, UC_LO}, - {0x011D47, 0x011D47, UC_MN}, - {0x011D50, 0x011D59, UC_ND}, - {0x011D60, 0x011D65, UC_LO}, - {0x011D67, 0x011D68, UC_LO}, - {0x011D6A, 0x011D89, UC_LO}, - {0x011D8A, 0x011D8E, UC_MC}, - {0x011D90, 0x011D91, UC_MN}, - {0x011D93, 0x011D94, UC_MC}, - {0x011D95, 0x011D95, UC_MN}, - {0x011D96, 0x011D96, UC_MC}, - {0x011D97, 0x011D97, UC_MN}, - {0x011D98, 0x011D98, UC_LO}, - {0x011DA0, 0x011DA9, UC_ND}, - {0x011EE0, 0x011EF2, UC_LO}, - {0x011EF3, 0x011EF4, UC_MN}, - {0x011EF5, 0x011EF6, UC_MC}, - {0x011EF7, 0x011EF8, UC_PO}, - {0x011F00, 0x011F01, UC_MN}, - {0x011F02, 0x011F02, UC_LO}, - {0x011F03, 0x011F03, UC_MC}, - {0x011F04, 0x011F10, UC_LO}, - {0x011F12, 0x011F33, UC_LO}, - {0x011F34, 0x011F35, UC_MC}, - {0x011F36, 0x011F3A, UC_MN}, - {0x011F3E, 0x011F3F, UC_MC}, - {0x011F40, 0x011F40, UC_MN}, - {0x011F41, 0x011F41, UC_MC}, - {0x011F42, 0x011F42, UC_MN}, - {0x011F43, 0x011F4F, UC_PO}, - {0x011F50, 0x011F59, UC_ND}, - {0x011FB0, 0x011FB0, UC_LO}, - {0x011FC0, 0x011FD4, UC_NO}, - {0x011FD5, 0x011FDC, UC_SO}, - {0x011FDD, 0x011FE0, UC_SC}, - {0x011FE1, 0x011FF1, UC_SO}, - {0x011FFF, 0x011FFF, UC_PO}, - {0x012000, 0x012399, UC_LO}, - {0x012400, 0x01246E, UC_NL}, - {0x012470, 0x012474, UC_PO}, - {0x012480, 0x012543, UC_LO}, - {0x012F90, 0x012FF0, UC_LO}, - {0x012FF1, 0x012FF2, UC_PO}, - {0x013000, 0x01342F, UC_LO}, - {0x013430, 0x01343F, UC_CF}, - {0x013440, 0x013440, UC_MN}, - {0x013441, 0x013446, UC_LO}, - {0x013447, 0x013455, UC_MN}, - {0x014400, 0x014646, UC_LO}, - {0x016800, 0x016A38, UC_LO}, - {0x016A40, 0x016A5E, UC_LO}, - {0x016A60, 0x016A69, UC_ND}, - {0x016A6E, 0x016A6F, UC_PO}, - {0x016A70, 0x016ABE, UC_LO}, - {0x016AC0, 0x016AC9, UC_ND}, - {0x016AD0, 0x016AED, UC_LO}, - {0x016AF0, 0x016AF4, UC_MN}, - {0x016AF5, 0x016AF5, UC_PO}, - {0x016B00, 0x016B2F, UC_LO}, - {0x016B30, 0x016B36, UC_MN}, - {0x016B37, 0x016B3B, UC_PO}, - {0x016B3C, 0x016B3F, UC_SO}, - {0x016B40, 0x016B43, UC_LM}, - {0x016B44, 0x016B44, UC_PO}, - {0x016B45, 0x016B45, UC_SO}, - {0x016B50, 0x016B59, UC_ND}, - {0x016B5B, 0x016B61, UC_NO}, - {0x016B63, 0x016B77, UC_LO}, - {0x016B7D, 0x016B8F, UC_LO}, - {0x016E40, 0x016E5F, UC_LU}, - {0x016E60, 0x016E7F, UC_LL}, - {0x016E80, 0x016E96, UC_NO}, - {0x016E97, 0x016E9A, UC_PO}, - {0x016F00, 0x016F4A, UC_LO}, - {0x016F4F, 0x016F4F, UC_MN}, - {0x016F50, 0x016F50, UC_LO}, - {0x016F51, 0x016F87, UC_MC}, - {0x016F8F, 0x016F92, UC_MN}, - {0x016F93, 0x016F9F, UC_LM}, - {0x016FE0, 0x016FE1, UC_LM}, - {0x016FE2, 0x016FE2, UC_PO}, - {0x016FE3, 0x016FE3, UC_LM}, - {0x016FE4, 0x016FE4, UC_MN}, - {0x016FF0, 0x016FF1, UC_MC}, - {0x017000, 0x0187F7, UC_LO}, - {0x018800, 0x018CD5, UC_LO}, - {0x018D00, 0x018D08, UC_LO}, - {0x01AFF0, 0x01AFF3, UC_LM}, - {0x01AFF5, 0x01AFFB, UC_LM}, - {0x01AFFD, 0x01AFFE, UC_LM}, - {0x01B000, 0x01B122, UC_LO}, - {0x01B132, 0x01B132, UC_LO}, - {0x01B150, 0x01B152, UC_LO}, - {0x01B155, 0x01B155, UC_LO}, - {0x01B164, 0x01B167, UC_LO}, - {0x01B170, 0x01B2FB, UC_LO}, - {0x01BC00, 0x01BC6A, UC_LO}, - {0x01BC70, 0x01BC7C, UC_LO}, - {0x01BC80, 0x01BC88, UC_LO}, - {0x01BC90, 0x01BC99, UC_LO}, - {0x01BC9C, 0x01BC9C, UC_SO}, - {0x01BC9D, 0x01BC9E, UC_MN}, - {0x01BC9F, 0x01BC9F, UC_PO}, - {0x01BCA0, 0x01BCA3, UC_CF}, - {0x01CF00, 0x01CF2D, UC_MN}, - {0x01CF30, 0x01CF46, UC_MN}, - {0x01CF50, 0x01CFC3, UC_SO}, - {0x01D000, 0x01D0F5, UC_SO}, - {0x01D100, 0x01D126, UC_SO}, - {0x01D129, 0x01D164, UC_SO}, - {0x01D165, 0x01D166, UC_MC}, - {0x01D167, 0x01D169, UC_MN}, - {0x01D16A, 0x01D16C, UC_SO}, - {0x01D16D, 0x01D172, UC_MC}, - {0x01D173, 0x01D17A, UC_CF}, - {0x01D17B, 0x01D182, UC_MN}, - {0x01D183, 0x01D184, UC_SO}, - {0x01D185, 0x01D18B, UC_MN}, - {0x01D18C, 0x01D1A9, UC_SO}, - {0x01D1AA, 0x01D1AD, UC_MN}, - {0x01D1AE, 0x01D1EA, UC_SO}, - {0x01D200, 0x01D241, UC_SO}, - {0x01D242, 0x01D244, UC_MN}, - {0x01D245, 0x01D245, UC_SO}, - {0x01D2C0, 0x01D2D3, UC_NO}, - {0x01D2E0, 0x01D2F3, UC_NO}, - {0x01D300, 0x01D356, UC_SO}, - {0x01D360, 0x01D378, UC_NO}, - {0x01D400, 0x01D419, UC_LU}, - {0x01D41A, 0x01D433, UC_LL}, - {0x01D434, 0x01D44D, UC_LU}, - {0x01D44E, 0x01D454, UC_LL}, - {0x01D456, 0x01D467, UC_LL}, - {0x01D468, 0x01D481, UC_LU}, - {0x01D482, 0x01D49B, UC_LL}, - {0x01D49C, 0x01D49C, UC_LU}, - {0x01D49E, 0x01D49F, UC_LU}, - {0x01D4A2, 0x01D4A2, UC_LU}, - {0x01D4A5, 0x01D4A6, UC_LU}, - {0x01D4A9, 0x01D4AC, UC_LU}, - {0x01D4AE, 0x01D4B5, UC_LU}, - {0x01D4B6, 0x01D4B9, UC_LL}, - {0x01D4BB, 0x01D4BB, UC_LL}, - {0x01D4BD, 0x01D4C3, UC_LL}, - {0x01D4C5, 0x01D4CF, UC_LL}, - {0x01D4D0, 0x01D4E9, UC_LU}, - {0x01D4EA, 0x01D503, UC_LL}, - {0x01D504, 0x01D505, UC_LU}, - {0x01D507, 0x01D50A, UC_LU}, - {0x01D50D, 0x01D514, UC_LU}, - {0x01D516, 0x01D51C, UC_LU}, - {0x01D51E, 0x01D537, UC_LL}, - {0x01D538, 0x01D539, UC_LU}, - {0x01D53B, 0x01D53E, UC_LU}, - {0x01D540, 0x01D544, UC_LU}, - {0x01D546, 0x01D546, UC_LU}, - {0x01D54A, 0x01D550, UC_LU}, - {0x01D552, 0x01D56B, UC_LL}, - {0x01D56C, 0x01D585, UC_LU}, - {0x01D586, 0x01D59F, UC_LL}, - {0x01D5A0, 0x01D5B9, UC_LU}, - {0x01D5BA, 0x01D5D3, UC_LL}, - {0x01D5D4, 0x01D5ED, UC_LU}, - {0x01D5EE, 0x01D607, UC_LL}, - {0x01D608, 0x01D621, UC_LU}, - {0x01D622, 0x01D63B, UC_LL}, - {0x01D63C, 0x01D655, UC_LU}, - {0x01D656, 0x01D66F, UC_LL}, - {0x01D670, 0x01D689, UC_LU}, - {0x01D68A, 0x01D6A5, UC_LL}, - {0x01D6A8, 0x01D6C0, UC_LU}, - {0x01D6C1, 0x01D6C1, UC_SM}, - {0x01D6C2, 0x01D6DA, UC_LL}, - {0x01D6DB, 0x01D6DB, UC_SM}, - {0x01D6DC, 0x01D6E1, UC_LL}, - {0x01D6E2, 0x01D6FA, UC_LU}, - {0x01D6FB, 0x01D6FB, UC_SM}, - {0x01D6FC, 0x01D714, UC_LL}, - {0x01D715, 0x01D715, UC_SM}, - {0x01D716, 0x01D71B, UC_LL}, - {0x01D71C, 0x01D734, UC_LU}, - {0x01D735, 0x01D735, UC_SM}, - {0x01D736, 0x01D74E, UC_LL}, - {0x01D74F, 0x01D74F, UC_SM}, - {0x01D750, 0x01D755, UC_LL}, - {0x01D756, 0x01D76E, UC_LU}, - {0x01D76F, 0x01D76F, UC_SM}, - {0x01D770, 0x01D788, UC_LL}, - {0x01D789, 0x01D789, UC_SM}, - {0x01D78A, 0x01D78F, UC_LL}, - {0x01D790, 0x01D7A8, UC_LU}, - {0x01D7A9, 0x01D7A9, UC_SM}, - {0x01D7AA, 0x01D7C2, UC_LL}, - {0x01D7C3, 0x01D7C3, UC_SM}, - {0x01D7C4, 0x01D7C9, UC_LL}, - {0x01D7CA, 0x01D7CA, UC_LU}, - {0x01D7CB, 0x01D7CB, UC_LL}, - {0x01D7CE, 0x01D7FF, UC_ND}, - {0x01D800, 0x01D9FF, UC_SO}, - {0x01DA00, 0x01DA36, UC_MN}, - {0x01DA37, 0x01DA3A, UC_SO}, - {0x01DA3B, 0x01DA6C, UC_MN}, - {0x01DA6D, 0x01DA74, UC_SO}, - {0x01DA75, 0x01DA75, UC_MN}, - {0x01DA76, 0x01DA83, UC_SO}, - {0x01DA84, 0x01DA84, UC_MN}, - {0x01DA85, 0x01DA86, UC_SO}, - {0x01DA87, 0x01DA8B, UC_PO}, - {0x01DA9B, 0x01DA9F, UC_MN}, - {0x01DAA1, 0x01DAAF, UC_MN}, - {0x01DF00, 0x01DF09, UC_LL}, - {0x01DF0A, 0x01DF0A, UC_LO}, - {0x01DF0B, 0x01DF1E, UC_LL}, - {0x01DF25, 0x01DF2A, UC_LL}, - {0x01E000, 0x01E006, UC_MN}, - {0x01E008, 0x01E018, UC_MN}, - {0x01E01B, 0x01E021, UC_MN}, - {0x01E023, 0x01E024, UC_MN}, - {0x01E026, 0x01E02A, UC_MN}, - {0x01E030, 0x01E06D, UC_LM}, - {0x01E08F, 0x01E08F, UC_MN}, - {0x01E100, 0x01E12C, UC_LO}, - {0x01E130, 0x01E136, UC_MN}, - {0x01E137, 0x01E13D, UC_LM}, - {0x01E140, 0x01E149, UC_ND}, - {0x01E14E, 0x01E14E, UC_LO}, - {0x01E14F, 0x01E14F, UC_SO}, - {0x01E290, 0x01E2AD, UC_LO}, - {0x01E2AE, 0x01E2AE, UC_MN}, - {0x01E2C0, 0x01E2EB, UC_LO}, - {0x01E2EC, 0x01E2EF, UC_MN}, - {0x01E2F0, 0x01E2F9, UC_ND}, - {0x01E2FF, 0x01E2FF, UC_SC}, - {0x01E4D0, 0x01E4EA, UC_LO}, - {0x01E4EB, 0x01E4EB, UC_LM}, - {0x01E4EC, 0x01E4EF, UC_MN}, - {0x01E4F0, 0x01E4F9, UC_ND}, - {0x01E7E0, 0x01E7E6, UC_LO}, - {0x01E7E8, 0x01E7EB, UC_LO}, - {0x01E7ED, 0x01E7EE, UC_LO}, - {0x01E7F0, 0x01E7FE, UC_LO}, - {0x01E800, 0x01E8C4, UC_LO}, - {0x01E8C7, 0x01E8CF, UC_NO}, - {0x01E8D0, 0x01E8D6, UC_MN}, - {0x01E900, 0x01E921, UC_LU}, - {0x01E922, 0x01E943, UC_LL}, - {0x01E944, 0x01E94A, UC_MN}, - {0x01E94B, 0x01E94B, UC_LM}, - {0x01E950, 0x01E959, UC_ND}, - {0x01E95E, 0x01E95F, UC_PO}, - {0x01EC71, 0x01ECAB, UC_NO}, - {0x01ECAC, 0x01ECAC, UC_SO}, - {0x01ECAD, 0x01ECAF, UC_NO}, - {0x01ECB0, 0x01ECB0, UC_SC}, - {0x01ECB1, 0x01ECB4, UC_NO}, - {0x01ED01, 0x01ED2D, UC_NO}, - {0x01ED2E, 0x01ED2E, UC_SO}, - {0x01ED2F, 0x01ED3D, UC_NO}, - {0x01EE00, 0x01EE03, UC_LO}, - {0x01EE05, 0x01EE1F, UC_LO}, - {0x01EE21, 0x01EE22, UC_LO}, - {0x01EE24, 0x01EE24, UC_LO}, - {0x01EE27, 0x01EE27, UC_LO}, - {0x01EE29, 0x01EE32, UC_LO}, - {0x01EE34, 0x01EE37, UC_LO}, - {0x01EE39, 0x01EE39, UC_LO}, - {0x01EE3B, 0x01EE3B, UC_LO}, - {0x01EE42, 0x01EE42, UC_LO}, - {0x01EE47, 0x01EE47, UC_LO}, - {0x01EE49, 0x01EE49, UC_LO}, - {0x01EE4B, 0x01EE4B, UC_LO}, - {0x01EE4D, 0x01EE4F, UC_LO}, - {0x01EE51, 0x01EE52, UC_LO}, - {0x01EE54, 0x01EE54, UC_LO}, - {0x01EE57, 0x01EE57, UC_LO}, - {0x01EE59, 0x01EE59, UC_LO}, - {0x01EE5B, 0x01EE5B, UC_LO}, - {0x01EE5D, 0x01EE5D, UC_LO}, - {0x01EE5F, 0x01EE5F, UC_LO}, - {0x01EE61, 0x01EE62, UC_LO}, - {0x01EE64, 0x01EE64, UC_LO}, - {0x01EE67, 0x01EE6A, UC_LO}, - {0x01EE6C, 0x01EE72, UC_LO}, - {0x01EE74, 0x01EE77, UC_LO}, - {0x01EE79, 0x01EE7C, UC_LO}, - {0x01EE7E, 0x01EE7E, UC_LO}, - {0x01EE80, 0x01EE89, UC_LO}, - {0x01EE8B, 0x01EE9B, UC_LO}, - {0x01EEA1, 0x01EEA3, UC_LO}, - {0x01EEA5, 0x01EEA9, UC_LO}, - {0x01EEAB, 0x01EEBB, UC_LO}, - {0x01EEF0, 0x01EEF1, UC_SM}, - {0x01F000, 0x01F02B, UC_SO}, - {0x01F030, 0x01F093, UC_SO}, - {0x01F0A0, 0x01F0AE, UC_SO}, - {0x01F0B1, 0x01F0BF, UC_SO}, - {0x01F0C1, 0x01F0CF, UC_SO}, - {0x01F0D1, 0x01F0F5, UC_SO}, - {0x01F100, 0x01F10C, UC_NO}, - {0x01F10D, 0x01F1AD, UC_SO}, - {0x01F1E6, 0x01F202, UC_SO}, - {0x01F210, 0x01F23B, UC_SO}, - {0x01F240, 0x01F248, UC_SO}, - {0x01F250, 0x01F251, UC_SO}, - {0x01F260, 0x01F265, UC_SO}, - {0x01F300, 0x01F3FA, UC_SO}, - {0x01F3FB, 0x01F3FF, UC_SK}, - {0x01F400, 0x01F6D7, UC_SO}, - {0x01F6DC, 0x01F6EC, UC_SO}, - {0x01F6F0, 0x01F6FC, UC_SO}, - {0x01F700, 0x01F776, UC_SO}, - {0x01F77B, 0x01F7D9, UC_SO}, - {0x01F7E0, 0x01F7EB, UC_SO}, - {0x01F7F0, 0x01F7F0, UC_SO}, - {0x01F800, 0x01F80B, UC_SO}, - {0x01F810, 0x01F847, UC_SO}, - {0x01F850, 0x01F859, UC_SO}, - {0x01F860, 0x01F887, UC_SO}, - {0x01F890, 0x01F8AD, UC_SO}, - {0x01F8B0, 0x01F8B1, UC_SO}, - {0x01F900, 0x01FA53, UC_SO}, - {0x01FA60, 0x01FA6D, UC_SO}, - {0x01FA70, 0x01FA7C, UC_SO}, - {0x01FA80, 0x01FA88, UC_SO}, - {0x01FA90, 0x01FABD, UC_SO}, - {0x01FABF, 0x01FAC5, UC_SO}, - {0x01FACE, 0x01FADB, UC_SO}, - {0x01FAE0, 0x01FAE8, UC_SO}, - {0x01FAF0, 0x01FAF8, UC_SO}, - {0x01FB00, 0x01FB92, UC_SO}, - {0x01FB94, 0x01FBCA, UC_SO}, - {0x01FBF0, 0x01FBF9, UC_ND}, - {0x020000, 0x02A6DF, UC_LO}, - {0x02A700, 0x02B739, UC_LO}, - {0x02B740, 0x02B81D, UC_LO}, - {0x02B820, 0x02CEA1, UC_LO}, - {0x02CEB0, 0x02EBE0, UC_LO}, - {0x02EBF0, 0x02EE5D, UC_LO}, - {0x02F800, 0x02FA1D, UC_LO}, - {0x030000, 0x03134A, UC_LO}, - {0x031350, 0x0323AF, UC_LO}, - {0x0E0001, 0x0E0001, UC_CF}, - {0x0E0020, 0x0E007F, UC_CF}, - {0x0E0100, 0x0E01EF, UC_MN}, - {0x0F0000, 0x0FFFFD, UC_CO}, - {0x100000, 0x10FFFD, UC_CO}, -}; - -#endif /* !RUNE_INTERNAL_RTYPE_CAT_H */ diff --git a/vendor/librune/include/internal/rtype/lookup-func.h b/vendor/librune/include/internal/rtype/lookup-func.h deleted file mode 100644 index 91bda8b..0000000 --- a/vendor/librune/include/internal/rtype/lookup-func.h +++ /dev/null @@ -1,47 +0,0 @@ -#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 - -[[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/types.h b/vendor/librune/include/internal/types.h deleted file mode 100644 index d216749..0000000 --- a/vendor/librune/include/internal/types.h +++ /dev/null @@ -1,15 +0,0 @@ -/* 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 _RUNE_HAS_U8VIEW 1 -#endif diff --git a/vendor/librune/include/rtype.h b/vendor/librune/include/rtype.h deleted file mode 100644 index 72f054c..0000000 --- a/vendor/librune/include/rtype.h +++ /dev/null @@ -1,116 +0,0 @@ -#ifndef RUNE_RTYPE_H -#define RUNE_RTYPE_H - -#include <stdint.h> - -#include "internal/types.h" - -/* clang-format off */ -enum [[clang::flag_enum]] unicat : uint_fast32_t { - UC_CN = 0, /* Not Assigned */ - UC_CC = UINT32_C(1) << 0, /* Control */ - UC_CF = UINT32_C(1) << 1, /* Format */ - UC_CO = UINT32_C(1) << 2, /* Private Use */ - UC_CS = UINT32_C(1) << 3, /* Surrogate */ - UC_LL = UINT32_C(1) << 4, /* Lowercase Letter */ - UC_LM = UINT32_C(1) << 5, /* Modifier Letter */ - UC_LO = UINT32_C(1) << 6, /* Other Letter */ - UC_LT = UINT32_C(1) << 7, /* Titlecase Letter */ - UC_LU = UINT32_C(1) << 8, /* Uppercase Letter */ - UC_MC = UINT32_C(1) << 9, /* Spacing Mark */ - UC_ME = UINT32_C(1) << 10, /* Enclosing Mark */ - UC_MN = UINT32_C(1) << 11, /* Nonspacing Mark */ - UC_ND = UINT32_C(1) << 12, /* Decimal Number */ - UC_NL = UINT32_C(1) << 13, /* Letter Number */ - UC_NO = UINT32_C(1) << 14, /* Other Number */ - UC_PC = UINT32_C(1) << 15, /* Connector Punctuation */ - UC_PD = UINT32_C(1) << 16, /* Dash Punctuation */ - UC_PE = UINT32_C(1) << 17, /* Close Punctuation */ - UC_PF = UINT32_C(1) << 18, /* Final Punctuation */ - UC_PI = UINT32_C(1) << 19, /* Initial Punctuation */ - UC_PO = UINT32_C(1) << 20, /* Other Punctuation */ - UC_PS = UINT32_C(1) << 21, /* Open Punctuation */ - UC_SC = UINT32_C(1) << 22, /* Currency Symbol */ - UC_SK = UINT32_C(1) << 23, /* Modifier Symbol */ - UC_SM = UINT32_C(1) << 24, /* Math Symbol */ - UC_SO = UINT32_C(1) << 25, /* Other Symbol */ - UC_ZL = UINT32_C(1) << 26, /* Line Separator */ - UC_ZP = UINT32_C(1) << 27, /* Paragraph Separator */ - UC_ZS = UINT32_C(1) << 28, /* Space Separator */ - - UC_C = UC_CC | UC_CF | UC_CN | UC_CO | UC_CS, /* Other */ - UC_L = UC_LL | UC_LM | UC_LO | UC_LT | UC_LU, /* Letter */ - UC_LC = UC_LU | UC_LL | UC_LT, /* Cased Letter */ - UC_M = UC_MC | UC_ME | UC_MN, /* Mark */ - UC_N = UC_ND | UC_NL | UC_NO, /* Number */ - UC_P = UC_PC | UC_PD | UC_PE | UC_PF | UC_PI /* Punctuation */ - | UC_PO | UC_PS, - UC_S = UC_SC | UC_SK | UC_SM | UC_SO, /* Symbol */ - UC_Z = UC_ZL | UC_ZP | UC_ZS, /* Separator */ -}; -/* clang-format on */ - -[[unsequenced]] bool runeis(rune, enum unicat); -[[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); - -/* PROP PREDICATES START */ -[[unsequenced]] bool rune_has_prop_alphabetic(rune); -[[unsequenced]] bool rune_has_prop_ascii_hex_digit(rune); -[[unsequenced]] bool rune_has_prop_bidi_control(rune); -[[unsequenced]] bool rune_has_prop_case_ignorable(rune); -[[unsequenced]] bool rune_has_prop_cased(rune); -[[unsequenced]] bool rune_has_prop_changes_when_casefolded(rune); -[[unsequenced]] bool rune_has_prop_changes_when_casemapped(rune); -[[unsequenced]] bool rune_has_prop_changes_when_lowercased(rune); -[[unsequenced]] bool rune_has_prop_changes_when_titlecased(rune); -[[unsequenced]] bool rune_has_prop_changes_when_uppercased(rune); -[[unsequenced]] bool rune_has_prop_dash(rune); -[[unsequenced]] bool rune_has_prop_default_ignorable_code_point(rune); -[[unsequenced]] bool rune_has_prop_deprecated(rune); -[[unsequenced]] bool rune_has_prop_diacritic(rune); -[[unsequenced]] bool rune_has_prop_extender(rune); -[[unsequenced]] bool rune_has_prop_grapheme_base(rune); -[[unsequenced]] bool rune_has_prop_grapheme_extend(rune); -[[unsequenced]] bool rune_has_prop_hex_digit(rune); -[[unsequenced]] bool rune_has_prop_id_compat_math_continue(rune); -[[unsequenced]] bool rune_has_prop_id_compat_math_start(rune); -[[unsequenced]] bool rune_has_prop_id_continue(rune); -[[unsequenced]] bool rune_has_prop_id_start(rune); -[[unsequenced]] bool rune_has_prop_ideographic(rune); -[[unsequenced]] bool rune_has_prop_ids_binary_operator(rune); -[[unsequenced]] bool rune_has_prop_ids_trinary_operator(rune); -[[unsequenced]] bool rune_has_prop_ids_unary_operator(rune); -[[unsequenced]] bool rune_has_prop_indic_conjunct_break(rune); -[[unsequenced]] bool rune_has_prop_join_control(rune); -[[unsequenced]] bool rune_has_prop_logical_order_exception(rune); -[[unsequenced]] bool rune_has_prop_lowercase(rune); -[[unsequenced]] bool rune_has_prop_math(rune); -[[unsequenced]] bool rune_has_prop_noncharacter_code_point(rune); -[[unsequenced]] bool rune_has_prop_pattern_syntax(rune); -[[unsequenced]] bool rune_has_prop_pattern_white_space(rune); -[[unsequenced]] bool rune_has_prop_prepended_concatenation_mark(rune); -[[unsequenced]] bool rune_has_prop_quotation_mark(rune); -[[unsequenced]] bool rune_has_prop_radical(rune); -[[unsequenced]] bool rune_has_prop_regional_indicator(rune); -[[unsequenced]] bool rune_has_prop_sentence_terminal(rune); -[[unsequenced]] bool rune_has_prop_soft_dotted(rune); -[[unsequenced]] bool rune_has_prop_terminal_punctuation(rune); -[[unsequenced]] bool rune_has_prop_unified_ideograph(rune); -[[unsequenced]] bool rune_has_prop_uppercase(rune); -[[unsequenced]] bool rune_has_prop_variation_selector(rune); -[[unsequenced]] bool rune_has_prop_white_space(rune); -[[unsequenced]] bool rune_has_prop_xid_continue(rune); -[[unsequenced]] bool rune_has_prop_xid_start(rune); -/* PROP PREDICATES END */ - -#endif diff --git a/vendor/librune/include/rune.h b/vendor/librune/include/rune.h deleted file mode 100644 index 23c3b7c..0000000 --- a/vendor/librune/include/rune.h +++ /dev/null @@ -1,34 +0,0 @@ -#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/include/utf8.h b/vendor/librune/include/utf8.h deleted file mode 100644 index f39e1bd..0000000 --- a/vendor/librune/include/utf8.h +++ /dev/null @@ -1,40 +0,0 @@ -#ifndef RUNE_UTF8_H -#define RUNE_UTF8_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); - -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_MACRO_WRAP -# 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_UTF8_H */ diff --git a/vendor/librune/lib/builder/u8strfit.c b/vendor/librune/lib/builder/u8strfit.c deleted file mode 100644 index d0f0ecb..0000000 --- a/vendor/librune/lib/builder/u8strfit.c +++ /dev/null @@ -1,11 +0,0 @@ -#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 deleted file mode 100644 index 506c71b..0000000 --- a/vendor/librune/lib/builder/u8strfree.c +++ /dev/null @@ -1,9 +0,0 @@ -#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 deleted file mode 100644 index 022b216..0000000 --- a/vendor/librune/lib/builder/u8strgrow.c +++ /dev/null @@ -1,41 +0,0 @@ -#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 deleted file mode 100644 index 29947e8..0000000 --- a/vendor/librune/lib/builder/u8strinit.c +++ /dev/null @@ -1,18 +0,0 @@ -#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 deleted file mode 100644 index 60c1d50..0000000 --- a/vendor/librune/lib/builder/u8strpushr.c +++ /dev/null @@ -1,13 +0,0 @@ -#include "builder.h" -#include "utf8.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 deleted file mode 100644 index a036840..0000000 --- a/vendor/librune/lib/builder/u8strpushstr.c +++ /dev/null @@ -1,17 +0,0 @@ -#include <string.h> - -#include "builder.h" -#include "utf8.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 deleted file mode 100644 index dc6db11..0000000 --- a/vendor/librune/lib/builder/u8strpushu8.c +++ /dev/null @@ -1,16 +0,0 @@ -#include <string.h> - -#include "builder.h" -#include "utf8.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 deleted file mode 100644 index 13cac7e..0000000 --- a/vendor/librune/lib/gbrk/u8glen.c +++ /dev/null @@ -1,13 +0,0 @@ -#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 deleted file mode 100644 index 5dae265..0000000 --- a/vendor/librune/lib/gbrk/u8gnext.c +++ /dev/null @@ -1,164 +0,0 @@ -#include <stddef.h> - -#include "gbrk.h" -#include "utf8.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 *); -static gbrk_prop getprop(rune); - -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 = getprop(a)) & GBP_CTRL)) - goto do_break; - - /* GB5 */ - if (b == '\r' || b == '\n' || ((bp = getprop(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; -} - -gbrk_prop -getprop(rune ch) -{ - ptrdiff_t lo, hi; - - lo = 0; - hi = lengthof(gbrk_prop_tbl) - 1; - - while (lo <= hi) { - ptrdiff_t i = (lo + hi) / 2; - - if (ch < gbrk_prop_tbl[i].lo) - hi = i - 1; - else if (ch > gbrk_prop_tbl[i].hi) - lo = i + 1; - else - return gbrk_prop_tbl[i].prop; - } - - return GBP_OTHER; -} diff --git a/vendor/librune/lib/rtype/riscntrl.c b/vendor/librune/lib/rtype/riscntrl.c deleted file mode 100644 index 562a2a8..0000000 --- a/vendor/librune/lib/rtype/riscntrl.c +++ /dev/null @@ -1,7 +0,0 @@ -#include "rtype.h" - -bool -riscntrl(rune ch) -{ - return runeis(ch, UC_CC); -} diff --git a/vendor/librune/lib/rtype/risdigit.c b/vendor/librune/lib/rtype/risdigit.c deleted file mode 100644 index 391543a..0000000 --- a/vendor/librune/lib/rtype/risdigit.c +++ /dev/null @@ -1,7 +0,0 @@ -#include "rtype.h" - -bool -risdigit(rune ch) -{ - return runeis(ch, UC_ND); -} diff --git a/vendor/librune/lib/rtype/risgraph.c b/vendor/librune/lib/rtype/risgraph.c deleted file mode 100644 index 8eb6a09..0000000 --- a/vendor/librune/lib/rtype/risgraph.c +++ /dev/null @@ -1,7 +0,0 @@ -#include "rtype.h" - -bool -risgraph(rune ch) -{ - return runeis(ch, UC_L | UC_M | UC_N | UC_P | UC_ZS); -} diff --git a/vendor/librune/lib/rtype/risletter.c b/vendor/librune/lib/rtype/risletter.c deleted file mode 100644 index 2dfab73..0000000 --- a/vendor/librune/lib/rtype/risletter.c +++ /dev/null @@ -1,7 +0,0 @@ -#include "rtype.h" - -bool -risletter(rune ch) -{ - return runeis(ch, UC_L); -} diff --git a/vendor/librune/lib/rtype/rislower.c b/vendor/librune/lib/rtype/rislower.c deleted file mode 100644 index ee90ce8..0000000 --- a/vendor/librune/lib/rtype/rislower.c +++ /dev/null @@ -1,7 +0,0 @@ -#include "rtype.h" - -bool -rislower(rune ch) -{ - return runeis(ch, UC_LL); -} diff --git a/vendor/librune/lib/rtype/rismark.c b/vendor/librune/lib/rtype/rismark.c deleted file mode 100644 index 5d784ec..0000000 --- a/vendor/librune/lib/rtype/rismark.c +++ /dev/null @@ -1,7 +0,0 @@ -#include "rtype.h" - -bool -rismark(rune ch) -{ - return runeis(ch, UC_M); -} diff --git a/vendor/librune/lib/rtype/risnumber.c b/vendor/librune/lib/rtype/risnumber.c deleted file mode 100644 index 26aa428..0000000 --- a/vendor/librune/lib/rtype/risnumber.c +++ /dev/null @@ -1,7 +0,0 @@ -#include "rtype.h" - -bool -risnumber(rune ch) -{ - return runeis(ch, UC_N); -} diff --git a/vendor/librune/lib/rtype/rispunct.c b/vendor/librune/lib/rtype/rispunct.c deleted file mode 100644 index 2abcba6..0000000 --- a/vendor/librune/lib/rtype/rispunct.c +++ /dev/null @@ -1,7 +0,0 @@ -#include "rtype.h" - -bool -rispunct(rune ch) -{ - return runeis(ch, UC_P); -} diff --git a/vendor/librune/lib/rtype/risspace.c b/vendor/librune/lib/rtype/risspace.c deleted file mode 100644 index 7cc5689..0000000 --- a/vendor/librune/lib/rtype/risspace.c +++ /dev/null @@ -1,16 +0,0 @@ -#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 runeis(ch, UC_Z); -} diff --git a/vendor/librune/lib/rtype/rissymbol.c b/vendor/librune/lib/rtype/rissymbol.c deleted file mode 100644 index 9e9a4f5..0000000 --- a/vendor/librune/lib/rtype/rissymbol.c +++ /dev/null @@ -1,7 +0,0 @@ -#include "rtype.h" - -bool -rissymbol(rune ch) -{ - return runeis(ch, UC_S); -} diff --git a/vendor/librune/lib/rtype/ristitle.c b/vendor/librune/lib/rtype/ristitle.c deleted file mode 100644 index 8ddd904..0000000 --- a/vendor/librune/lib/rtype/ristitle.c +++ /dev/null @@ -1,7 +0,0 @@ -#include "rtype.h" - -bool -ristitle(rune ch) -{ - return runeis(ch, UC_LT); -} diff --git a/vendor/librune/lib/rtype/risupper.c b/vendor/librune/lib/rtype/risupper.c deleted file mode 100644 index 2b77479..0000000 --- a/vendor/librune/lib/rtype/risupper.c +++ /dev/null @@ -1,7 +0,0 @@ -#include "rtype.h" - -bool -risupper(rune ch) -{ - return runeis(ch, UC_LU); -} diff --git a/vendor/librune/lib/rtype/rune_has_prop_alphabetic.c b/vendor/librune/lib/rtype/rune_has_prop_alphabetic.c deleted file mode 100644 index 4469505..0000000 --- a/vendor/librune/lib/rtype/rune_has_prop_alphabetic.c +++ /dev/null @@ -1,763 +0,0 @@ -/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */ - -#include "rtype.h" - -#include "internal/common.h" - -#if BIT_LOOKUP -static const unsigned _BitInt(LATIN1_MAX + 1) mask = 0xFF7FFFFFFF7FFFFF042004000000000007FFFFFE07FFFFFE0000000000000000uwb; -#endif - -static const struct { - rune lo, hi; -} lookup_tbl[] = { - {0x000041, 0x00005A}, - {0x000061, 0x00007A}, - {0x0000AA, 0x0000AA}, - {0x0000B5, 0x0000B5}, - {0x0000BA, 0x0000BA}, - {0x0000C0, 0x0000D6}, - {0x0000D8, 0x0000F6}, - {0x0000F8, 0x0002C1}, - {0x0002C6, 0x0002D1}, - {0x0002E0, 0x0002E4}, - {0x0002EC, 0x0002EC}, - {0x0002EE, 0x0002EE}, - {0x000345, 0x000345}, - {0x000370, 0x000374}, - {0x000376, 0x000377}, - {0x00037A, 0x00037D}, - {0x00037F, 0x00037F}, - {0x000386, 0x000386}, - {0x000388, 0x00038A}, - {0x00038C, 0x00038C}, - {0x00038E, 0x0003A1}, - {0x0003A3, 0x0003F5}, - {0x0003F7, 0x000481}, - {0x00048A, 0x00052F}, - {0x000531, 0x000556}, - {0x000559, 0x000559}, - {0x000560, 0x000588}, - {0x0005B0, 0x0005BD}, - {0x0005BF, 0x0005BF}, - {0x0005C1, 0x0005C2}, - {0x0005C4, 0x0005C5}, - {0x0005C7, 0x0005C7}, - {0x0005D0, 0x0005EA}, - {0x0005EF, 0x0005F2}, - {0x000610, 0x00061A}, - {0x000620, 0x000657}, - {0x000659, 0x00065F}, - {0x00066E, 0x0006D3}, - {0x0006D5, 0x0006DC}, - {0x0006E1, 0x0006E8}, - {0x0006ED, 0x0006EF}, - {0x0006FA, 0x0006FC}, - {0x0006FF, 0x0006FF}, - {0x000710, 0x00073F}, - {0x00074D, 0x0007B1}, - {0x0007CA, 0x0007EA}, - {0x0007F4, 0x0007F5}, - {0x0007FA, 0x0007FA}, - {0x000800, 0x000817}, - {0x00081A, 0x00082C}, - {0x000840, 0x000858}, - {0x000860, 0x00086A}, - {0x000870, 0x000887}, - {0x000889, 0x00088E}, - {0x0008A0, 0x0008C9}, - {0x0008D4, 0x0008DF}, - {0x0008E3, 0x0008E9}, - {0x0008F0, 0x00093B}, - {0x00093D, 0x00094C}, - {0x00094E, 0x000950}, - {0x000955, 0x000963}, - {0x000971, 0x000983}, - {0x000985, 0x00098C}, - {0x00098F, 0x000990}, - {0x000993, 0x0009A8}, - {0x0009AA, 0x0009B0}, - {0x0009B2, 0x0009B2}, - {0x0009B6, 0x0009B9}, - {0x0009BD, 0x0009C4}, - {0x0009C7, 0x0009C8}, - {0x0009CB, 0x0009CC}, - {0x0009CE, 0x0009CE}, - {0x0009D7, 0x0009D7}, - {0x0009DC, 0x0009DD}, - {0x0009DF, 0x0009E3}, - {0x0009F0, 0x0009F1}, - {0x0009FC, 0x0009FC}, - {0x000A01, 0x000A03}, - {0x000A05, 0x000A0A}, - {0x000A0F, 0x000A10}, - {0x000A13, 0x000A28}, - {0x000A2A, 0x000A30}, - {0x000A32, 0x000A33}, - {0x000A35, 0x000A36}, - {0x000A38, 0x000A39}, - {0x000A3E, 0x000A42}, - {0x000A47, 0x000A48}, - {0x000A4B, 0x000A4C}, - {0x000A51, 0x000A51}, - {0x000A59, 0x000A5C}, - {0x000A5E, 0x000A5E}, - {0x000A70, 0x000A75}, - {0x000A81, 0x000A83}, - {0x000A85, 0x000A8D}, - {0x000A8F, 0x000A91}, - {0x000A93, 0x000AA8}, - {0x000AAA, 0x000AB0}, - {0x000AB2, 0x000AB3}, - {0x000AB5, 0x000AB9}, - {0x000ABD, 0x000AC5}, - {0x000AC7, 0x000AC9}, - {0x000ACB, 0x000ACC}, - {0x000AD0, 0x000AD0}, - {0x000AE0, 0x000AE3}, - {0x000AF9, 0x000AFC}, - {0x000B01, 0x000B03}, - {0x000B05, 0x000B0C}, - {0x000B0F, 0x000B10}, - {0x000B13, 0x000B28}, - {0x000B2A, 0x000B30}, - {0x000B32, 0x000B33}, - {0x000B35, 0x000B39}, - {0x000B3D, 0x000B44}, - {0x000B47, 0x000B48}, - {0x000B4B, 0x000B4C}, - {0x000B56, 0x000B57}, - {0x000B5C, 0x000B5D}, - {0x000B5F, 0x000B63}, - {0x000B71, 0x000B71}, - {0x000B82, 0x000B83}, - {0x000B85, 0x000B8A}, - {0x000B8E, 0x000B90}, - {0x000B92, 0x000B95}, - {0x000B99, 0x000B9A}, - {0x000B9C, 0x000B9C}, - {0x000B9E, 0x000B9F}, - {0x000BA3, 0x000BA4}, - {0x000BA8, 0x000BAA}, - {0x000BAE, 0x000BB9}, - {0x000BBE, 0x000BC2}, - {0x000BC6, 0x000BC8}, - {0x000BCA, 0x000BCC}, - {0x000BD0, 0x000BD0}, - {0x000BD7, 0x000BD7}, - {0x000C00, 0x000C0C}, - {0x000C0E, 0x000C10}, - {0x000C12, 0x000C28}, - {0x000C2A, 0x000C39}, - {0x000C3D, 0x000C44}, - {0x000C46, 0x000C48}, - {0x000C4A, 0x000C4C}, - {0x000C55, 0x000C56}, - {0x000C58, 0x000C5A}, - {0x000C5D, 0x000C5D}, - {0x000C60, 0x000C63}, - {0x000C80, 0x000C83}, - {0x000C85, 0x000C8C}, - {0x000C8E, 0x000C90}, - {0x000C92, 0x000CA8}, - {0x000CAA, 0x000CB3}, - {0x000CB5, 0x000CB9}, - {0x000CBD, 0x000CC4}, - {0x000CC6, 0x000CC8}, - {0x000CCA, 0x000CCC}, - {0x000CD5, 0x000CD6}, - {0x000CDD, 0x000CDE}, - {0x000CE0, 0x000CE3}, - {0x000CF1, 0x000CF3}, - {0x000D00, 0x000D0C}, - {0x000D0E, 0x000D10}, - {0x000D12, 0x000D3A}, - {0x000D3D, 0x000D44}, - {0x000D46, 0x000D48}, - {0x000D4A, 0x000D4C}, - {0x000D4E, 0x000D4E}, - {0x000D54, 0x000D57}, - {0x000D5F, 0x000D63}, - {0x000D7A, 0x000D7F}, - {0x000D81, 0x000D83}, - {0x000D85, 0x000D96}, - {0x000D9A, 0x000DB1}, - {0x000DB3, 0x000DBB}, - {0x000DBD, 0x000DBD}, - {0x000DC0, 0x000DC6}, - {0x000DCF, 0x000DD4}, - {0x000DD6, 0x000DD6}, - {0x000DD8, 0x000DDF}, - {0x000DF2, 0x000DF3}, - {0x000E01, 0x000E3A}, - {0x000E40, 0x000E46}, - {0x000E4D, 0x000E4D}, - {0x000E81, 0x000E82}, - {0x000E84, 0x000E84}, - {0x000E86, 0x000E8A}, - {0x000E8C, 0x000EA3}, - {0x000EA5, 0x000EA5}, - {0x000EA7, 0x000EB9}, - {0x000EBB, 0x000EBD}, - {0x000EC0, 0x000EC4}, - {0x000EC6, 0x000EC6}, - {0x000ECD, 0x000ECD}, - {0x000EDC, 0x000EDF}, - {0x000F00, 0x000F00}, - {0x000F40, 0x000F47}, - {0x000F49, 0x000F6C}, - {0x000F71, 0x000F83}, - {0x000F88, 0x000F97}, - {0x000F99, 0x000FBC}, - {0x001000, 0x001036}, - {0x001038, 0x001038}, - {0x00103B, 0x00103F}, - {0x001050, 0x00108F}, - {0x00109A, 0x00109D}, - {0x0010A0, 0x0010C5}, - {0x0010C7, 0x0010C7}, - {0x0010CD, 0x0010CD}, - {0x0010D0, 0x0010FA}, - {0x0010FC, 0x001248}, - {0x00124A, 0x00124D}, - {0x001250, 0x001256}, - {0x001258, 0x001258}, - {0x00125A, 0x00125D}, - {0x001260, 0x001288}, - {0x00128A, 0x00128D}, - {0x001290, 0x0012B0}, - {0x0012B2, 0x0012B5}, - {0x0012B8, 0x0012BE}, - {0x0012C0, 0x0012C0}, - {0x0012C2, 0x0012C5}, - {0x0012C8, 0x0012D6}, - {0x0012D8, 0x001310}, - {0x001312, 0x001315}, - {0x001318, 0x00135A}, - {0x001380, 0x00138F}, - {0x0013A0, 0x0013F5}, - {0x0013F8, 0x0013FD}, - {0x001401, 0x00166C}, - {0x00166F, 0x00167F}, - {0x001681, 0x00169A}, - {0x0016A0, 0x0016EA}, - {0x0016EE, 0x0016F8}, - {0x001700, 0x001713}, - {0x00171F, 0x001733}, - {0x001740, 0x001753}, - {0x001760, 0x00176C}, - {0x00176E, 0x001770}, - {0x001772, 0x001773}, - {0x001780, 0x0017B3}, - {0x0017B6, 0x0017C8}, - {0x0017D7, 0x0017D7}, - {0x0017DC, 0x0017DC}, - {0x001820, 0x001878}, - {0x001880, 0x0018AA}, - {0x0018B0, 0x0018F5}, - {0x001900, 0x00191E}, - {0x001920, 0x00192B}, - {0x001930, 0x001938}, - {0x001950, 0x00196D}, - {0x001970, 0x001974}, - {0x001980, 0x0019AB}, - {0x0019B0, 0x0019C9}, - {0x001A00, 0x001A1B}, - {0x001A20, 0x001A5E}, - {0x001A61, 0x001A74}, - {0x001AA7, 0x001AA7}, - {0x001ABF, 0x001AC0}, - {0x001ACC, 0x001ACE}, - {0x001B00, 0x001B33}, - {0x001B35, 0x001B43}, - {0x001B45, 0x001B4C}, - {0x001B80, 0x001BA9}, - {0x001BAC, 0x001BAF}, - {0x001BBA, 0x001BE5}, - {0x001BE7, 0x001BF1}, - {0x001C00, 0x001C36}, - {0x001C4D, 0x001C4F}, - {0x001C5A, 0x001C7D}, - {0x001C80, 0x001C88}, - {0x001C90, 0x001CBA}, - {0x001CBD, 0x001CBF}, - {0x001CE9, 0x001CEC}, - {0x001CEE, 0x001CF3}, - {0x001CF5, 0x001CF6}, - {0x001CFA, 0x001CFA}, - {0x001D00, 0x001DBF}, - {0x001DE7, 0x001DF4}, - {0x001E00, 0x001F15}, - {0x001F18, 0x001F1D}, - {0x001F20, 0x001F45}, - {0x001F48, 0x001F4D}, - {0x001F50, 0x001F57}, - {0x001F59, 0x001F59}, - {0x001F5B, 0x001F5B}, - {0x001F5D, 0x001F5D}, - {0x001F5F, 0x001F7D}, - {0x001F80, 0x001FB4}, - {0x001FB6, 0x001FBC}, - {0x001FBE, 0x001FBE}, - {0x001FC2, 0x001FC4}, - {0x001FC6, 0x001FCC}, - {0x001FD0, 0x001FD3}, - {0x001FD6, 0x001FDB}, - {0x001FE0, 0x001FEC}, - {0x001FF2, 0x001FF4}, - {0x001FF6, 0x001FFC}, - {0x002071, 0x002071}, - {0x00207F, 0x00207F}, - {0x002090, 0x00209C}, - {0x002102, 0x002102}, - {0x002107, 0x002107}, - {0x00210A, 0x002113}, - {0x002115, 0x002115}, - {0x002119, 0x00211D}, - {0x002124, 0x002124}, - {0x002126, 0x002126}, - {0x002128, 0x002128}, - {0x00212A, 0x00212D}, - {0x00212F, 0x002139}, - {0x00213C, 0x00213F}, - {0x002145, 0x002149}, - {0x00214E, 0x00214E}, - {0x002160, 0x002188}, - {0x0024B6, 0x0024E9}, - {0x002C00, 0x002CE4}, - {0x002CEB, 0x002CEE}, - {0x002CF2, 0x002CF3}, - {0x002D00, 0x002D25}, - {0x002D27, 0x002D27}, - {0x002D2D, 0x002D2D}, - {0x002D30, 0x002D67}, - {0x002D6F, 0x002D6F}, - {0x002D80, 0x002D96}, - {0x002DA0, 0x002DA6}, - {0x002DA8, 0x002DAE}, - {0x002DB0, 0x002DB6}, - {0x002DB8, 0x002DBE}, - {0x002DC0, 0x002DC6}, - {0x002DC8, 0x002DCE}, - {0x002DD0, 0x002DD6}, - {0x002DD8, 0x002DDE}, - {0x002DE0, 0x002DFF}, - {0x002E2F, 0x002E2F}, - {0x003005, 0x003007}, - {0x003021, 0x003029}, - {0x003031, 0x003035}, - {0x003038, 0x00303C}, - {0x003041, 0x003096}, - {0x00309D, 0x00309F}, - {0x0030A1, 0x0030FA}, - {0x0030FC, 0x0030FF}, - {0x003105, 0x00312F}, - {0x003131, 0x00318E}, - {0x0031A0, 0x0031BF}, - {0x0031F0, 0x0031FF}, - {0x003400, 0x004DBF}, - {0x004E00, 0x00A48C}, - {0x00A4D0, 0x00A4FD}, - {0x00A500, 0x00A60C}, - {0x00A610, 0x00A61F}, - {0x00A62A, 0x00A62B}, - {0x00A640, 0x00A66E}, - {0x00A674, 0x00A67B}, - {0x00A67F, 0x00A6EF}, - {0x00A717, 0x00A71F}, - {0x00A722, 0x00A788}, - {0x00A78B, 0x00A7CA}, - {0x00A7D0, 0x00A7D1}, - {0x00A7D3, 0x00A7D3}, - {0x00A7D5, 0x00A7D9}, - {0x00A7F2, 0x00A805}, - {0x00A807, 0x00A827}, - {0x00A840, 0x00A873}, - {0x00A880, 0x00A8C3}, - {0x00A8C5, 0x00A8C5}, - {0x00A8F2, 0x00A8F7}, - {0x00A8FB, 0x00A8FB}, - {0x00A8FD, 0x00A8FF}, - {0x00A90A, 0x00A92A}, - {0x00A930, 0x00A952}, - {0x00A960, 0x00A97C}, - {0x00A980, 0x00A9B2}, - {0x00A9B4, 0x00A9BF}, - {0x00A9CF, 0x00A9CF}, - {0x00A9E0, 0x00A9EF}, - {0x00A9FA, 0x00A9FE}, - {0x00AA00, 0x00AA36}, - {0x00AA40, 0x00AA4D}, - {0x00AA60, 0x00AA76}, - {0x00AA7A, 0x00AABE}, - {0x00AAC0, 0x00AAC0}, - {0x00AAC2, 0x00AAC2}, - {0x00AADB, 0x00AADD}, - {0x00AAE0, 0x00AAEF}, - {0x00AAF2, 0x00AAF5}, - {0x00AB01, 0x00AB06}, - {0x00AB09, 0x00AB0E}, - {0x00AB11, 0x00AB16}, - {0x00AB20, 0x00AB26}, - {0x00AB28, 0x00AB2E}, - {0x00AB30, 0x00AB5A}, - {0x00AB5C, 0x00AB69}, - {0x00AB70, 0x00ABEA}, - {0x00AC00, 0x00D7A3}, - {0x00D7B0, 0x00D7C6}, - {0x00D7CB, 0x00D7FB}, - {0x00F900, 0x00FA6D}, - {0x00FA70, 0x00FAD9}, - {0x00FB00, 0x00FB06}, - {0x00FB13, 0x00FB17}, - {0x00FB1D, 0x00FB28}, - {0x00FB2A, 0x00FB36}, - {0x00FB38, 0x00FB3C}, - {0x00FB3E, 0x00FB3E}, - {0x00FB40, 0x00FB41}, - {0x00FB43, 0x00FB44}, - {0x00FB46, 0x00FBB1}, - {0x00FBD3, 0x00FD3D}, - {0x00FD50, 0x00FD8F}, - {0x00FD92, 0x00FDC7}, - {0x00FDF0, 0x00FDFB}, - {0x00FE70, 0x00FE74}, - {0x00FE76, 0x00FEFC}, - {0x00FF21, 0x00FF3A}, - {0x00FF41, 0x00FF5A}, - {0x00FF66, 0x00FFBE}, - {0x00FFC2, 0x00FFC7}, - {0x00FFCA, 0x00FFCF}, - {0x00FFD2, 0x00FFD7}, - {0x00FFDA, 0x00FFDC}, - {0x010000, 0x01000B}, - {0x01000D, 0x010026}, - {0x010028, 0x01003A}, - {0x01003C, 0x01003D}, - {0x01003F, 0x01004D}, - {0x010050, 0x01005D}, - {0x010080, 0x0100FA}, - {0x010140, 0x010174}, - {0x010280, 0x01029C}, - {0x0102A0, 0x0102D0}, - {0x010300, 0x01031F}, - {0x01032D, 0x01034A}, - {0x010350, 0x01037A}, - {0x010380, 0x01039D}, - {0x0103A0, 0x0103C3}, - {0x0103C8, 0x0103CF}, - {0x0103D1, 0x0103D5}, - {0x010400, 0x01049D}, - {0x0104B0, 0x0104D3}, - {0x0104D8, 0x0104FB}, - {0x010500, 0x010527}, - {0x010530, 0x010563}, - {0x010570, 0x01057A}, - {0x01057C, 0x01058A}, - {0x01058C, 0x010592}, - {0x010594, 0x010595}, - {0x010597, 0x0105A1}, - {0x0105A3, 0x0105B1}, - {0x0105B3, 0x0105B9}, - {0x0105BB, 0x0105BC}, - {0x010600, 0x010736}, - {0x010740, 0x010755}, - {0x010760, 0x010767}, - {0x010780, 0x010785}, - {0x010787, 0x0107B0}, - {0x0107B2, 0x0107BA}, - {0x010800, 0x010805}, - {0x010808, 0x010808}, - {0x01080A, 0x010835}, - {0x010837, 0x010838}, - {0x01083C, 0x01083C}, - {0x01083F, 0x010855}, - {0x010860, 0x010876}, - {0x010880, 0x01089E}, - {0x0108E0, 0x0108F2}, - {0x0108F4, 0x0108F5}, - {0x010900, 0x010915}, - {0x010920, 0x010939}, - {0x010980, 0x0109B7}, - {0x0109BE, 0x0109BF}, - {0x010A00, 0x010A03}, - {0x010A05, 0x010A06}, - {0x010A0C, 0x010A13}, - {0x010A15, 0x010A17}, - {0x010A19, 0x010A35}, - {0x010A60, 0x010A7C}, - {0x010A80, 0x010A9C}, - {0x010AC0, 0x010AC7}, - {0x010AC9, 0x010AE4}, - {0x010B00, 0x010B35}, - {0x010B40, 0x010B55}, - {0x010B60, 0x010B72}, - {0x010B80, 0x010B91}, - {0x010C00, 0x010C48}, - {0x010C80, 0x010CB2}, - {0x010CC0, 0x010CF2}, - {0x010D00, 0x010D27}, - {0x010E80, 0x010EA9}, - {0x010EAB, 0x010EAC}, - {0x010EB0, 0x010EB1}, - {0x010F00, 0x010F1C}, - {0x010F27, 0x010F27}, - {0x010F30, 0x010F45}, - {0x010F70, 0x010F81}, - {0x010FB0, 0x010FC4}, - {0x010FE0, 0x010FF6}, - {0x011000, 0x011045}, - {0x011071, 0x011075}, - {0x011080, 0x0110B8}, - {0x0110C2, 0x0110C2}, - {0x0110D0, 0x0110E8}, - {0x011100, 0x011132}, - {0x011144, 0x011147}, - {0x011150, 0x011172}, - {0x011176, 0x011176}, - {0x011180, 0x0111BF}, - {0x0111C1, 0x0111C4}, - {0x0111CE, 0x0111CF}, - {0x0111DA, 0x0111DA}, - {0x0111DC, 0x0111DC}, - {0x011200, 0x011211}, - {0x011213, 0x011234}, - {0x011237, 0x011237}, - {0x01123E, 0x011241}, - {0x011280, 0x011286}, - {0x011288, 0x011288}, - {0x01128A, 0x01128D}, - {0x01128F, 0x01129D}, - {0x01129F, 0x0112A8}, - {0x0112B0, 0x0112E8}, - {0x011300, 0x011303}, - {0x011305, 0x01130C}, - {0x01130F, 0x011310}, - {0x011313, 0x011328}, - {0x01132A, 0x011330}, - {0x011332, 0x011333}, - {0x011335, 0x011339}, - {0x01133D, 0x011344}, - {0x011347, 0x011348}, - {0x01134B, 0x01134C}, - {0x011350, 0x011350}, - {0x011357, 0x011357}, - {0x01135D, 0x011363}, - {0x011400, 0x011441}, - {0x011443, 0x011445}, - {0x011447, 0x01144A}, - {0x01145F, 0x011461}, - {0x011480, 0x0114C1}, - {0x0114C4, 0x0114C5}, - {0x0114C7, 0x0114C7}, - {0x011580, 0x0115B5}, - {0x0115B8, 0x0115BE}, - {0x0115D8, 0x0115DD}, - {0x011600, 0x01163E}, - {0x011640, 0x011640}, - {0x011644, 0x011644}, - {0x011680, 0x0116B5}, - {0x0116B8, 0x0116B8}, - {0x011700, 0x01171A}, - {0x01171D, 0x01172A}, - {0x011740, 0x011746}, - {0x011800, 0x011838}, - {0x0118A0, 0x0118DF}, - {0x0118FF, 0x011906}, - {0x011909, 0x011909}, - {0x01190C, 0x011913}, - {0x011915, 0x011916}, - {0x011918, 0x011935}, - {0x011937, 0x011938}, - {0x01193B, 0x01193C}, - {0x01193F, 0x011942}, - {0x0119A0, 0x0119A7}, - {0x0119AA, 0x0119D7}, - {0x0119DA, 0x0119DF}, - {0x0119E1, 0x0119E1}, - {0x0119E3, 0x0119E4}, - {0x011A00, 0x011A32}, - {0x011A35, 0x011A3E}, - {0x011A50, 0x011A97}, - {0x011A9D, 0x011A9D}, - {0x011AB0, 0x011AF8}, - {0x011C00, 0x011C08}, - {0x011C0A, 0x011C36}, - {0x011C38, 0x011C3E}, - {0x011C40, 0x011C40}, - {0x011C72, 0x011C8F}, - {0x011C92, 0x011CA7}, - {0x011CA9, 0x011CB6}, - {0x011D00, 0x011D06}, - {0x011D08, 0x011D09}, - {0x011D0B, 0x011D36}, - {0x011D3A, 0x011D3A}, - {0x011D3C, 0x011D3D}, - {0x011D3F, 0x011D41}, - {0x011D43, 0x011D43}, - {0x011D46, 0x011D47}, - {0x011D60, 0x011D65}, - {0x011D67, 0x011D68}, - {0x011D6A, 0x011D8E}, - {0x011D90, 0x011D91}, - {0x011D93, 0x011D96}, - {0x011D98, 0x011D98}, - {0x011EE0, 0x011EF6}, - {0x011F00, 0x011F10}, - {0x011F12, 0x011F3A}, - {0x011F3E, 0x011F40}, - {0x011FB0, 0x011FB0}, - {0x012000, 0x012399}, - {0x012400, 0x01246E}, - {0x012480, 0x012543}, - {0x012F90, 0x012FF0}, - {0x013000, 0x01342F}, - {0x013441, 0x013446}, - {0x014400, 0x014646}, - {0x016800, 0x016A38}, - {0x016A40, 0x016A5E}, - {0x016A70, 0x016ABE}, - {0x016AD0, 0x016AED}, - {0x016B00, 0x016B2F}, - {0x016B40, 0x016B43}, - {0x016B63, 0x016B77}, - {0x016B7D, 0x016B8F}, - {0x016E40, 0x016E7F}, - {0x016F00, 0x016F4A}, - {0x016F4F, 0x016F87}, - {0x016F8F, 0x016F9F}, - {0x016FE0, 0x016FE1}, - {0x016FE3, 0x016FE3}, - {0x016FF0, 0x016FF1}, - {0x017000, 0x0187F7}, - {0x018800, 0x018CD5}, - {0x018D00, 0x018D08}, - {0x01AFF0, 0x01AFF3}, - {0x01AFF5, 0x01AFFB}, - {0x01AFFD, 0x01AFFE}, - {0x01B000, 0x01B122}, - {0x01B132, 0x01B132}, - {0x01B150, 0x01B152}, - {0x01B155, 0x01B155}, - {0x01B164, 0x01B167}, - {0x01B170, 0x01B2FB}, - {0x01BC00, 0x01BC6A}, - {0x01BC70, 0x01BC7C}, - {0x01BC80, 0x01BC88}, - {0x01BC90, 0x01BC99}, - {0x01BC9E, 0x01BC9E}, - {0x01D400, 0x01D454}, - {0x01D456, 0x01D49C}, - {0x01D49E, 0x01D49F}, - {0x01D4A2, 0x01D4A2}, - {0x01D4A5, 0x01D4A6}, - {0x01D4A9, 0x01D4AC}, - {0x01D4AE, 0x01D4B9}, - {0x01D4BB, 0x01D4BB}, - {0x01D4BD, 0x01D4C3}, - {0x01D4C5, 0x01D505}, - {0x01D507, 0x01D50A}, - {0x01D50D, 0x01D514}, - {0x01D516, 0x01D51C}, - {0x01D51E, 0x01D539}, - {0x01D53B, 0x01D53E}, - {0x01D540, 0x01D544}, - {0x01D546, 0x01D546}, - {0x01D54A, 0x01D550}, - {0x01D552, 0x01D6A5}, - {0x01D6A8, 0x01D6C0}, - {0x01D6C2, 0x01D6DA}, - {0x01D6DC, 0x01D6FA}, - {0x01D6FC, 0x01D714}, - {0x01D716, 0x01D734}, - {0x01D736, 0x01D74E}, - {0x01D750, 0x01D76E}, - {0x01D770, 0x01D788}, - {0x01D78A, 0x01D7A8}, - {0x01D7AA, 0x01D7C2}, - {0x01D7C4, 0x01D7CB}, - {0x01DF00, 0x01DF1E}, - {0x01DF25, 0x01DF2A}, - {0x01E000, 0x01E006}, - {0x01E008, 0x01E018}, - {0x01E01B, 0x01E021}, - {0x01E023, 0x01E024}, - {0x01E026, 0x01E02A}, - {0x01E030, 0x01E06D}, - {0x01E08F, 0x01E08F}, - {0x01E100, 0x01E12C}, - {0x01E137, 0x01E13D}, - {0x01E14E, 0x01E14E}, - {0x01E290, 0x01E2AD}, - {0x01E2C0, 0x01E2EB}, - {0x01E4D0, 0x01E4EB}, - {0x01E7E0, 0x01E7E6}, - {0x01E7E8, 0x01E7EB}, - {0x01E7ED, 0x01E7EE}, - {0x01E7F0, 0x01E7FE}, - {0x01E800, 0x01E8C4}, - {0x01E900, 0x01E943}, - {0x01E947, 0x01E947}, - {0x01E94B, 0x01E94B}, - {0x01EE00, 0x01EE03}, - {0x01EE05, 0x01EE1F}, - {0x01EE21, 0x01EE22}, - {0x01EE24, 0x01EE24}, - {0x01EE27, 0x01EE27}, - {0x01EE29, 0x01EE32}, - {0x01EE34, 0x01EE37}, - {0x01EE39, 0x01EE39}, - {0x01EE3B, 0x01EE3B}, - {0x01EE42, 0x01EE42}, - {0x01EE47, 0x01EE47}, - {0x01EE49, 0x01EE49}, - {0x01EE4B, 0x01EE4B}, - {0x01EE4D, 0x01EE4F}, - {0x01EE51, 0x01EE52}, - {0x01EE54, 0x01EE54}, - {0x01EE57, 0x01EE57}, - {0x01EE59, 0x01EE59}, - {0x01EE5B, 0x01EE5B}, - {0x01EE5D, 0x01EE5D}, - {0x01EE5F, 0x01EE5F}, - {0x01EE61, 0x01EE62}, - {0x01EE64, 0x01EE64}, - {0x01EE67, 0x01EE6A}, - {0x01EE6C, 0x01EE72}, - {0x01EE74, 0x01EE77}, - {0x01EE79, 0x01EE7C}, - {0x01EE7E, 0x01EE7E}, - {0x01EE80, 0x01EE89}, - {0x01EE8B, 0x01EE9B}, - {0x01EEA1, 0x01EEA3}, - {0x01EEA5, 0x01EEA9}, - {0x01EEAB, 0x01EEBB}, - {0x01F130, 0x01F149}, - {0x01F150, 0x01F169}, - {0x01F170, 0x01F189}, - {0x020000, 0x02A6DF}, - {0x02A700, 0x02B739}, - {0x02B740, 0x02B81D}, - {0x02B820, 0x02CEA1}, - {0x02CEB0, 0x02EBE0}, - {0x02EBF0, 0x02EE5D}, - {0x02F800, 0x02FA1D}, - {0x030000, 0x03134A}, - {0x031350, 0x0323AF}, -}; - -#define TYPE bool -#define TABLE lookup_tbl -#define DEFAULT false -#define HAS_VALUE 0 -#include "internal/rtype/lookup-func.h" - -bool -rune_has_prop_alphabetic(rune ch) -{ - return -#if BIT_LOOKUP - ch <= LATIN1_MAX ? (mask & ch) : -#endif - lookup(ch); -} diff --git a/vendor/librune/lib/rtype/rune_has_prop_ascii_hex_digit.c b/vendor/librune/lib/rtype/rune_has_prop_ascii_hex_digit.c deleted file mode 100644 index a94f13f..0000000 --- a/vendor/librune/lib/rtype/rune_has_prop_ascii_hex_digit.c +++ /dev/null @@ -1,33 +0,0 @@ -/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */ - -#include "rtype.h" - -#include "internal/common.h" - -#if BIT_LOOKUP -static const unsigned _BitInt(LATIN1_MAX + 1) mask = 0x7E0000007E03FF000000000000uwb; -#endif - -static const struct { - rune lo, hi; -} lookup_tbl[] = { - {0x000030, 0x000039}, - {0x000041, 0x000046}, - {0x000061, 0x000066}, -}; - -#define TYPE bool -#define TABLE lookup_tbl -#define DEFAULT false -#define HAS_VALUE 0 -#include "internal/rtype/lookup-func.h" - -bool -rune_has_prop_ascii_hex_digit(rune ch) -{ - return -#if BIT_LOOKUP - ch <= LATIN1_MAX ? (mask & ch) : -#endif - lookup(ch); -} diff --git a/vendor/librune/lib/rtype/rune_has_prop_bidi_control.c b/vendor/librune/lib/rtype/rune_has_prop_bidi_control.c deleted file mode 100644 index 1f83e24..0000000 --- a/vendor/librune/lib/rtype/rune_has_prop_bidi_control.c +++ /dev/null @@ -1,34 +0,0 @@ -/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */ - -#include "rtype.h" - -#include "internal/common.h" - -#if BIT_LOOKUP -static const unsigned _BitInt(LATIN1_MAX + 1) mask = 0x0uwb; -#endif - -static const struct { - rune lo, hi; -} lookup_tbl[] = { - {0x00061C, 0x00061C}, - {0x00200E, 0x00200F}, - {0x00202A, 0x00202E}, - {0x002066, 0x002069}, -}; - -#define TYPE bool -#define TABLE lookup_tbl -#define DEFAULT false -#define HAS_VALUE 0 -#include "internal/rtype/lookup-func.h" - -bool -rune_has_prop_bidi_control(rune ch) -{ - return -#if BIT_LOOKUP - ch <= LATIN1_MAX ? (mask & ch) : -#endif - lookup(ch); -} diff --git a/vendor/librune/lib/rtype/rune_has_prop_case_ignorable.c b/vendor/librune/lib/rtype/rune_has_prop_case_ignorable.c deleted file mode 100644 index 9950380..0000000 --- a/vendor/librune/lib/rtype/rune_has_prop_case_ignorable.c +++ /dev/null @@ -1,467 +0,0 @@ -/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */ - -#include "rtype.h" - -#include "internal/common.h" - -#if BIT_LOOKUP -static const unsigned _BitInt(LATIN1_MAX + 1) mask = 0x190A1000000000000000001400000000400408000000000uwb; -#endif - -static const struct { - rune lo, hi; -} lookup_tbl[] = { - {0x000027, 0x000027}, - {0x00002E, 0x00002E}, - {0x00003A, 0x00003A}, - {0x00005E, 0x00005E}, - {0x000060, 0x000060}, - {0x0000A8, 0x0000A8}, - {0x0000AD, 0x0000AD}, - {0x0000AF, 0x0000AF}, - {0x0000B4, 0x0000B4}, - {0x0000B7, 0x0000B8}, - {0x0002B0, 0x00036F}, - {0x000374, 0x000375}, - {0x00037A, 0x00037A}, - {0x000384, 0x000385}, - {0x000387, 0x000387}, - {0x000483, 0x000489}, - {0x000559, 0x000559}, - {0x00055F, 0x00055F}, - {0x000591, 0x0005BD}, - {0x0005BF, 0x0005BF}, - {0x0005C1, 0x0005C2}, - {0x0005C4, 0x0005C5}, - {0x0005C7, 0x0005C7}, - {0x0005F4, 0x0005F4}, - {0x000600, 0x000605}, - {0x000610, 0x00061A}, - {0x00061C, 0x00061C}, - {0x000640, 0x000640}, - {0x00064B, 0x00065F}, - {0x000670, 0x000670}, - {0x0006D6, 0x0006DD}, - {0x0006DF, 0x0006E8}, - {0x0006EA, 0x0006ED}, - {0x00070F, 0x00070F}, - {0x000711, 0x000711}, - {0x000730, 0x00074A}, - {0x0007A6, 0x0007B0}, - {0x0007EB, 0x0007F5}, - {0x0007FA, 0x0007FA}, - {0x0007FD, 0x0007FD}, - {0x000816, 0x00082D}, - {0x000859, 0x00085B}, - {0x000888, 0x000888}, - {0x000890, 0x000891}, - {0x000898, 0x00089F}, - {0x0008C9, 0x000902}, - {0x00093A, 0x00093A}, - {0x00093C, 0x00093C}, - {0x000941, 0x000948}, - {0x00094D, 0x00094D}, - {0x000951, 0x000957}, - {0x000962, 0x000963}, - {0x000971, 0x000971}, - {0x000981, 0x000981}, - {0x0009BC, 0x0009BC}, - {0x0009C1, 0x0009C4}, - {0x0009CD, 0x0009CD}, - {0x0009E2, 0x0009E3}, - {0x0009FE, 0x0009FE}, - {0x000A01, 0x000A02}, - {0x000A3C, 0x000A3C}, - {0x000A41, 0x000A42}, - {0x000A47, 0x000A48}, - {0x000A4B, 0x000A4D}, - {0x000A51, 0x000A51}, - {0x000A70, 0x000A71}, - {0x000A75, 0x000A75}, - {0x000A81, 0x000A82}, - {0x000ABC, 0x000ABC}, - {0x000AC1, 0x000AC5}, - {0x000AC7, 0x000AC8}, - {0x000ACD, 0x000ACD}, - {0x000AE2, 0x000AE3}, - {0x000AFA, 0x000AFF}, - {0x000B01, 0x000B01}, - {0x000B3C, 0x000B3C}, - {0x000B3F, 0x000B3F}, - {0x000B41, 0x000B44}, - {0x000B4D, 0x000B4D}, - {0x000B55, 0x000B56}, - {0x000B62, 0x000B63}, - {0x000B82, 0x000B82}, - {0x000BC0, 0x000BC0}, - {0x000BCD, 0x000BCD}, - {0x000C00, 0x000C00}, - {0x000C04, 0x000C04}, - {0x000C3C, 0x000C3C}, - {0x000C3E, 0x000C40}, - {0x000C46, 0x000C48}, - {0x000C4A, 0x000C4D}, - {0x000C55, 0x000C56}, - {0x000C62, 0x000C63}, - {0x000C81, 0x000C81}, - {0x000CBC, 0x000CBC}, - {0x000CBF, 0x000CBF}, - {0x000CC6, 0x000CC6}, - {0x000CCC, 0x000CCD}, - {0x000CE2, 0x000CE3}, - {0x000D00, 0x000D01}, - {0x000D3B, 0x000D3C}, - {0x000D41, 0x000D44}, - {0x000D4D, 0x000D4D}, - {0x000D62, 0x000D63}, - {0x000D81, 0x000D81}, - {0x000DCA, 0x000DCA}, - {0x000DD2, 0x000DD4}, - {0x000DD6, 0x000DD6}, - {0x000E31, 0x000E31}, - {0x000E34, 0x000E3A}, - {0x000E46, 0x000E4E}, - {0x000EB1, 0x000EB1}, - {0x000EB4, 0x000EBC}, - {0x000EC6, 0x000EC6}, - {0x000EC8, 0x000ECE}, - {0x000F18, 0x000F19}, - {0x000F35, 0x000F35}, - {0x000F37, 0x000F37}, - {0x000F39, 0x000F39}, - {0x000F71, 0x000F7E}, - {0x000F80, 0x000F84}, - {0x000F86, 0x000F87}, - {0x000F8D, 0x000F97}, - {0x000F99, 0x000FBC}, - {0x000FC6, 0x000FC6}, - {0x00102D, 0x001030}, - {0x001032, 0x001037}, - {0x001039, 0x00103A}, - {0x00103D, 0x00103E}, - {0x001058, 0x001059}, - {0x00105E, 0x001060}, - {0x001071, 0x001074}, - {0x001082, 0x001082}, - {0x001085, 0x001086}, - {0x00108D, 0x00108D}, - {0x00109D, 0x00109D}, - {0x0010FC, 0x0010FC}, - {0x00135D, 0x00135F}, - {0x001712, 0x001714}, - {0x001732, 0x001733}, - {0x001752, 0x001753}, - {0x001772, 0x001773}, - {0x0017B4, 0x0017B5}, - {0x0017B7, 0x0017BD}, - {0x0017C6, 0x0017C6}, - {0x0017C9, 0x0017D3}, - {0x0017D7, 0x0017D7}, - {0x0017DD, 0x0017DD}, - {0x00180B, 0x00180F}, - {0x001843, 0x001843}, - {0x001885, 0x001886}, - {0x0018A9, 0x0018A9}, - {0x001920, 0x001922}, - {0x001927, 0x001928}, - {0x001932, 0x001932}, - {0x001939, 0x00193B}, - {0x001A17, 0x001A18}, - {0x001A1B, 0x001A1B}, - {0x001A56, 0x001A56}, - {0x001A58, 0x001A5E}, - {0x001A60, 0x001A60}, - {0x001A62, 0x001A62}, - {0x001A65, 0x001A6C}, - {0x001A73, 0x001A7C}, - {0x001A7F, 0x001A7F}, - {0x001AA7, 0x001AA7}, - {0x001AB0, 0x001ACE}, - {0x001B00, 0x001B03}, - {0x001B34, 0x001B34}, - {0x001B36, 0x001B3A}, - {0x001B3C, 0x001B3C}, - {0x001B42, 0x001B42}, - {0x001B6B, 0x001B73}, - {0x001B80, 0x001B81}, - {0x001BA2, 0x001BA5}, - {0x001BA8, 0x001BA9}, - {0x001BAB, 0x001BAD}, - {0x001BE6, 0x001BE6}, - {0x001BE8, 0x001BE9}, - {0x001BED, 0x001BED}, - {0x001BEF, 0x001BF1}, - {0x001C2C, 0x001C33}, - {0x001C36, 0x001C37}, - {0x001C78, 0x001C7D}, - {0x001CD0, 0x001CD2}, - {0x001CD4, 0x001CE0}, - {0x001CE2, 0x001CE8}, - {0x001CED, 0x001CED}, - {0x001CF4, 0x001CF4}, - {0x001CF8, 0x001CF9}, - {0x001D2C, 0x001D6A}, - {0x001D78, 0x001D78}, - {0x001D9B, 0x001DFF}, - {0x001FBD, 0x001FBD}, - {0x001FBF, 0x001FC1}, - {0x001FCD, 0x001FCF}, - {0x001FDD, 0x001FDF}, - {0x001FED, 0x001FEF}, - {0x001FFD, 0x001FFE}, - {0x00200B, 0x00200F}, - {0x002018, 0x002019}, - {0x002024, 0x002024}, - {0x002027, 0x002027}, - {0x00202A, 0x00202E}, - {0x002060, 0x002064}, - {0x002066, 0x00206F}, - {0x002071, 0x002071}, - {0x00207F, 0x00207F}, - {0x002090, 0x00209C}, - {0x0020D0, 0x0020F0}, - {0x002C7C, 0x002C7D}, - {0x002CEF, 0x002CF1}, - {0x002D6F, 0x002D6F}, - {0x002D7F, 0x002D7F}, - {0x002DE0, 0x002DFF}, - {0x002E2F, 0x002E2F}, - {0x003005, 0x003005}, - {0x00302A, 0x00302D}, - {0x003031, 0x003035}, - {0x00303B, 0x00303B}, - {0x003099, 0x00309E}, - {0x0030FC, 0x0030FE}, - {0x00A015, 0x00A015}, - {0x00A4F8, 0x00A4FD}, - {0x00A60C, 0x00A60C}, - {0x00A66F, 0x00A672}, - {0x00A674, 0x00A67D}, - {0x00A67F, 0x00A67F}, - {0x00A69C, 0x00A69F}, - {0x00A6F0, 0x00A6F1}, - {0x00A700, 0x00A721}, - {0x00A770, 0x00A770}, - {0x00A788, 0x00A78A}, - {0x00A7F2, 0x00A7F4}, - {0x00A7F8, 0x00A7F9}, - {0x00A802, 0x00A802}, - {0x00A806, 0x00A806}, - {0x00A80B, 0x00A80B}, - {0x00A825, 0x00A826}, - {0x00A82C, 0x00A82C}, - {0x00A8C4, 0x00A8C5}, - {0x00A8E0, 0x00A8F1}, - {0x00A8FF, 0x00A8FF}, - {0x00A926, 0x00A92D}, - {0x00A947, 0x00A951}, - {0x00A980, 0x00A982}, - {0x00A9B3, 0x00A9B3}, - {0x00A9B6, 0x00A9B9}, - {0x00A9BC, 0x00A9BD}, - {0x00A9CF, 0x00A9CF}, - {0x00A9E5, 0x00A9E6}, - {0x00AA29, 0x00AA2E}, - {0x00AA31, 0x00AA32}, - {0x00AA35, 0x00AA36}, - {0x00AA43, 0x00AA43}, - {0x00AA4C, 0x00AA4C}, - {0x00AA70, 0x00AA70}, - {0x00AA7C, 0x00AA7C}, - {0x00AAB0, 0x00AAB0}, - {0x00AAB2, 0x00AAB4}, - {0x00AAB7, 0x00AAB8}, - {0x00AABE, 0x00AABF}, - {0x00AAC1, 0x00AAC1}, - {0x00AADD, 0x00AADD}, - {0x00AAEC, 0x00AAED}, - {0x00AAF3, 0x00AAF4}, - {0x00AAF6, 0x00AAF6}, - {0x00AB5B, 0x00AB5F}, - {0x00AB69, 0x00AB6B}, - {0x00ABE5, 0x00ABE5}, - {0x00ABE8, 0x00ABE8}, - {0x00ABED, 0x00ABED}, - {0x00FB1E, 0x00FB1E}, - {0x00FBB2, 0x00FBC2}, - {0x00FE00, 0x00FE0F}, - {0x00FE13, 0x00FE13}, - {0x00FE20, 0x00FE2F}, - {0x00FE52, 0x00FE52}, - {0x00FE55, 0x00FE55}, - {0x00FEFF, 0x00FEFF}, - {0x00FF07, 0x00FF07}, - {0x00FF0E, 0x00FF0E}, - {0x00FF1A, 0x00FF1A}, - {0x00FF3E, 0x00FF3E}, - {0x00FF40, 0x00FF40}, - {0x00FF70, 0x00FF70}, - {0x00FF9E, 0x00FF9F}, - {0x00FFE3, 0x00FFE3}, - {0x00FFF9, 0x00FFFB}, - {0x0101FD, 0x0101FD}, - {0x0102E0, 0x0102E0}, - {0x010376, 0x01037A}, - {0x010780, 0x010785}, - {0x010787, 0x0107B0}, - {0x0107B2, 0x0107BA}, - {0x010A01, 0x010A03}, - {0x010A05, 0x010A06}, - {0x010A0C, 0x010A0F}, - {0x010A38, 0x010A3A}, - {0x010A3F, 0x010A3F}, - {0x010AE5, 0x010AE6}, - {0x010D24, 0x010D27}, - {0x010EAB, 0x010EAC}, - {0x010EFD, 0x010EFF}, - {0x010F46, 0x010F50}, - {0x010F82, 0x010F85}, - {0x011001, 0x011001}, - {0x011038, 0x011046}, - {0x011070, 0x011070}, - {0x011073, 0x011074}, - {0x01107F, 0x011081}, - {0x0110B3, 0x0110B6}, - {0x0110B9, 0x0110BA}, - {0x0110BD, 0x0110BD}, - {0x0110C2, 0x0110C2}, - {0x0110CD, 0x0110CD}, - {0x011100, 0x011102}, - {0x011127, 0x01112B}, - {0x01112D, 0x011134}, - {0x011173, 0x011173}, - {0x011180, 0x011181}, - {0x0111B6, 0x0111BE}, - {0x0111C9, 0x0111CC}, - {0x0111CF, 0x0111CF}, - {0x01122F, 0x011231}, - {0x011234, 0x011234}, - {0x011236, 0x011237}, - {0x01123E, 0x01123E}, - {0x011241, 0x011241}, - {0x0112DF, 0x0112DF}, - {0x0112E3, 0x0112EA}, - {0x011300, 0x011301}, - {0x01133B, 0x01133C}, - {0x011340, 0x011340}, - {0x011366, 0x01136C}, - {0x011370, 0x011374}, - {0x011438, 0x01143F}, - {0x011442, 0x011444}, - {0x011446, 0x011446}, - {0x01145E, 0x01145E}, - {0x0114B3, 0x0114B8}, - {0x0114BA, 0x0114BA}, - {0x0114BF, 0x0114C0}, - {0x0114C2, 0x0114C3}, - {0x0115B2, 0x0115B5}, - {0x0115BC, 0x0115BD}, - {0x0115BF, 0x0115C0}, - {0x0115DC, 0x0115DD}, - {0x011633, 0x01163A}, - {0x01163D, 0x01163D}, - {0x01163F, 0x011640}, - {0x0116AB, 0x0116AB}, - {0x0116AD, 0x0116AD}, - {0x0116B0, 0x0116B5}, - {0x0116B7, 0x0116B7}, - {0x01171D, 0x01171F}, - {0x011722, 0x011725}, - {0x011727, 0x01172B}, - {0x01182F, 0x011837}, - {0x011839, 0x01183A}, - {0x01193B, 0x01193C}, - {0x01193E, 0x01193E}, - {0x011943, 0x011943}, - {0x0119D4, 0x0119D7}, - {0x0119DA, 0x0119DB}, - {0x0119E0, 0x0119E0}, - {0x011A01, 0x011A0A}, - {0x011A33, 0x011A38}, - {0x011A3B, 0x011A3E}, - {0x011A47, 0x011A47}, - {0x011A51, 0x011A56}, - {0x011A59, 0x011A5B}, - {0x011A8A, 0x011A96}, - {0x011A98, 0x011A99}, - {0x011C30, 0x011C36}, - {0x011C38, 0x011C3D}, - {0x011C3F, 0x011C3F}, - {0x011C92, 0x011CA7}, - {0x011CAA, 0x011CB0}, - {0x011CB2, 0x011CB3}, - {0x011CB5, 0x011CB6}, - {0x011D31, 0x011D36}, - {0x011D3A, 0x011D3A}, - {0x011D3C, 0x011D3D}, - {0x011D3F, 0x011D45}, - {0x011D47, 0x011D47}, - {0x011D90, 0x011D91}, - {0x011D95, 0x011D95}, - {0x011D97, 0x011D97}, - {0x011EF3, 0x011EF4}, - {0x011F00, 0x011F01}, - {0x011F36, 0x011F3A}, - {0x011F40, 0x011F40}, - {0x011F42, 0x011F42}, - {0x013430, 0x013440}, - {0x013447, 0x013455}, - {0x016AF0, 0x016AF4}, - {0x016B30, 0x016B36}, - {0x016B40, 0x016B43}, - {0x016F4F, 0x016F4F}, - {0x016F8F, 0x016F9F}, - {0x016FE0, 0x016FE1}, - {0x016FE3, 0x016FE4}, - {0x01AFF0, 0x01AFF3}, - {0x01AFF5, 0x01AFFB}, - {0x01AFFD, 0x01AFFE}, - {0x01BC9D, 0x01BC9E}, - {0x01BCA0, 0x01BCA3}, - {0x01CF00, 0x01CF2D}, - {0x01CF30, 0x01CF46}, - {0x01D167, 0x01D169}, - {0x01D173, 0x01D182}, - {0x01D185, 0x01D18B}, - {0x01D1AA, 0x01D1AD}, - {0x01D242, 0x01D244}, - {0x01DA00, 0x01DA36}, - {0x01DA3B, 0x01DA6C}, - {0x01DA75, 0x01DA75}, - {0x01DA84, 0x01DA84}, - {0x01DA9B, 0x01DA9F}, - {0x01DAA1, 0x01DAAF}, - {0x01E000, 0x01E006}, - {0x01E008, 0x01E018}, - {0x01E01B, 0x01E021}, - {0x01E023, 0x01E024}, - {0x01E026, 0x01E02A}, - {0x01E030, 0x01E06D}, - {0x01E08F, 0x01E08F}, - {0x01E130, 0x01E13D}, - {0x01E2AE, 0x01E2AE}, - {0x01E2EC, 0x01E2EF}, - {0x01E4EB, 0x01E4EF}, - {0x01E8D0, 0x01E8D6}, - {0x01E944, 0x01E94B}, - {0x01F3FB, 0x01F3FF}, - {0x0E0001, 0x0E0001}, - {0x0E0020, 0x0E007F}, - {0x0E0100, 0x0E01EF}, -}; - -#define TYPE bool -#define TABLE lookup_tbl -#define DEFAULT false -#define HAS_VALUE 0 -#include "internal/rtype/lookup-func.h" - -bool -rune_has_prop_case_ignorable(rune ch) -{ - return -#if BIT_LOOKUP - ch <= LATIN1_MAX ? (mask & ch) : -#endif - lookup(ch); -} diff --git a/vendor/librune/lib/rtype/rune_has_prop_cased.c b/vendor/librune/lib/rtype/rune_has_prop_cased.c deleted file mode 100644 index 3d1fb30..0000000 --- a/vendor/librune/lib/rtype/rune_has_prop_cased.c +++ /dev/null @@ -1,187 +0,0 @@ -/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */ - -#include "rtype.h" - -#include "internal/common.h" - -#if BIT_LOOKUP -static const unsigned _BitInt(LATIN1_MAX + 1) mask = 0xFF7FFFFFFF7FFFFF042004000000000007FFFFFE07FFFFFE0000000000000000uwb; -#endif - -static const struct { - rune lo, hi; -} lookup_tbl[] = { - {0x000041, 0x00005A}, - {0x000061, 0x00007A}, - {0x0000AA, 0x0000AA}, - {0x0000B5, 0x0000B5}, - {0x0000BA, 0x0000BA}, - {0x0000C0, 0x0000D6}, - {0x0000D8, 0x0000F6}, - {0x0000F8, 0x0001BA}, - {0x0001BC, 0x0001BF}, - {0x0001C4, 0x000293}, - {0x000295, 0x0002B8}, - {0x0002C0, 0x0002C1}, - {0x0002E0, 0x0002E4}, - {0x000345, 0x000345}, - {0x000370, 0x000373}, - {0x000376, 0x000377}, - {0x00037A, 0x00037D}, - {0x00037F, 0x00037F}, - {0x000386, 0x000386}, - {0x000388, 0x00038A}, - {0x00038C, 0x00038C}, - {0x00038E, 0x0003A1}, - {0x0003A3, 0x0003F5}, - {0x0003F7, 0x000481}, - {0x00048A, 0x00052F}, - {0x000531, 0x000556}, - {0x000560, 0x000588}, - {0x0010A0, 0x0010C5}, - {0x0010C7, 0x0010C7}, - {0x0010CD, 0x0010CD}, - {0x0010D0, 0x0010FA}, - {0x0010FC, 0x0010FF}, - {0x0013A0, 0x0013F5}, - {0x0013F8, 0x0013FD}, - {0x001C80, 0x001C88}, - {0x001C90, 0x001CBA}, - {0x001CBD, 0x001CBF}, - {0x001D00, 0x001DBF}, - {0x001E00, 0x001F15}, - {0x001F18, 0x001F1D}, - {0x001F20, 0x001F45}, - {0x001F48, 0x001F4D}, - {0x001F50, 0x001F57}, - {0x001F59, 0x001F59}, - {0x001F5B, 0x001F5B}, - {0x001F5D, 0x001F5D}, - {0x001F5F, 0x001F7D}, - {0x001F80, 0x001FB4}, - {0x001FB6, 0x001FBC}, - {0x001FBE, 0x001FBE}, - {0x001FC2, 0x001FC4}, - {0x001FC6, 0x001FCC}, - {0x001FD0, 0x001FD3}, - {0x001FD6, 0x001FDB}, - {0x001FE0, 0x001FEC}, - {0x001FF2, 0x001FF4}, - {0x001FF6, 0x001FFC}, - {0x002071, 0x002071}, - {0x00207F, 0x00207F}, - {0x002090, 0x00209C}, - {0x002102, 0x002102}, - {0x002107, 0x002107}, - {0x00210A, 0x002113}, - {0x002115, 0x002115}, - {0x002119, 0x00211D}, - {0x002124, 0x002124}, - {0x002126, 0x002126}, - {0x002128, 0x002128}, - {0x00212A, 0x00212D}, - {0x00212F, 0x002134}, - {0x002139, 0x002139}, - {0x00213C, 0x00213F}, - {0x002145, 0x002149}, - {0x00214E, 0x00214E}, - {0x002160, 0x00217F}, - {0x002183, 0x002184}, - {0x0024B6, 0x0024E9}, - {0x002C00, 0x002CE4}, - {0x002CEB, 0x002CEE}, - {0x002CF2, 0x002CF3}, - {0x002D00, 0x002D25}, - {0x002D27, 0x002D27}, - {0x002D2D, 0x002D2D}, - {0x00A640, 0x00A66D}, - {0x00A680, 0x00A69D}, - {0x00A722, 0x00A787}, - {0x00A78B, 0x00A78E}, - {0x00A790, 0x00A7CA}, - {0x00A7D0, 0x00A7D1}, - {0x00A7D3, 0x00A7D3}, - {0x00A7D5, 0x00A7D9}, - {0x00A7F2, 0x00A7F6}, - {0x00A7F8, 0x00A7FA}, - {0x00AB30, 0x00AB5A}, - {0x00AB5C, 0x00AB69}, - {0x00AB70, 0x00ABBF}, - {0x00FB00, 0x00FB06}, - {0x00FB13, 0x00FB17}, - {0x00FF21, 0x00FF3A}, - {0x00FF41, 0x00FF5A}, - {0x010400, 0x01044F}, - {0x0104B0, 0x0104D3}, - {0x0104D8, 0x0104FB}, - {0x010570, 0x01057A}, - {0x01057C, 0x01058A}, - {0x01058C, 0x010592}, - {0x010594, 0x010595}, - {0x010597, 0x0105A1}, - {0x0105A3, 0x0105B1}, - {0x0105B3, 0x0105B9}, - {0x0105BB, 0x0105BC}, - {0x010780, 0x010780}, - {0x010783, 0x010785}, - {0x010787, 0x0107B0}, - {0x0107B2, 0x0107BA}, - {0x010C80, 0x010CB2}, - {0x010CC0, 0x010CF2}, - {0x0118A0, 0x0118DF}, - {0x016E40, 0x016E7F}, - {0x01D400, 0x01D454}, - {0x01D456, 0x01D49C}, - {0x01D49E, 0x01D49F}, - {0x01D4A2, 0x01D4A2}, - {0x01D4A5, 0x01D4A6}, - {0x01D4A9, 0x01D4AC}, - {0x01D4AE, 0x01D4B9}, - {0x01D4BB, 0x01D4BB}, - {0x01D4BD, 0x01D4C3}, - {0x01D4C5, 0x01D505}, - {0x01D507, 0x01D50A}, - {0x01D50D, 0x01D514}, - {0x01D516, 0x01D51C}, - {0x01D51E, 0x01D539}, - {0x01D53B, 0x01D53E}, - {0x01D540, 0x01D544}, - {0x01D546, 0x01D546}, - {0x01D54A, 0x01D550}, - {0x01D552, 0x01D6A5}, - {0x01D6A8, 0x01D6C0}, - {0x01D6C2, 0x01D6DA}, - {0x01D6DC, 0x01D6FA}, - {0x01D6FC, 0x01D714}, - {0x01D716, 0x01D734}, - {0x01D736, 0x01D74E}, - {0x01D750, 0x01D76E}, - {0x01D770, 0x01D788}, - {0x01D78A, 0x01D7A8}, - {0x01D7AA, 0x01D7C2}, - {0x01D7C4, 0x01D7CB}, - {0x01DF00, 0x01DF09}, - {0x01DF0B, 0x01DF1E}, - {0x01DF25, 0x01DF2A}, - {0x01E030, 0x01E06D}, - {0x01E900, 0x01E943}, - {0x01F130, 0x01F149}, - {0x01F150, 0x01F169}, - {0x01F170, 0x01F189}, -}; - -#define TYPE bool -#define TABLE lookup_tbl -#define DEFAULT false -#define HAS_VALUE 0 -#include "internal/rtype/lookup-func.h" - -bool -rune_has_prop_cased(rune ch) -{ - return -#if BIT_LOOKUP - ch <= LATIN1_MAX ? (mask & ch) : -#endif - lookup(ch); -} diff --git a/vendor/librune/lib/rtype/rune_has_prop_changes_when_casefolded.c b/vendor/librune/lib/rtype/rune_has_prop_changes_when_casefolded.c deleted file mode 100644 index 52c30a4..0000000 --- a/vendor/librune/lib/rtype/rune_has_prop_changes_when_casefolded.c +++ /dev/null @@ -1,652 +0,0 @@ -/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */ - -#include "rtype.h" - -#include "internal/common.h" - -#if BIT_LOOKUP -static const unsigned _BitInt(LATIN1_MAX + 1) mask = 0xFF7FFFFF00200000000000000000000007FFFFFE0000000000000000uwb; -#endif - -static const struct { - rune lo, hi; -} lookup_tbl[] = { - {0x000041, 0x00005A}, - {0x0000B5, 0x0000B5}, - {0x0000C0, 0x0000D6}, - {0x0000D8, 0x0000DF}, - {0x000100, 0x000100}, - {0x000102, 0x000102}, - {0x000104, 0x000104}, - {0x000106, 0x000106}, - {0x000108, 0x000108}, - {0x00010A, 0x00010A}, - {0x00010C, 0x00010C}, - {0x00010E, 0x00010E}, - {0x000110, 0x000110}, - {0x000112, 0x000112}, - {0x000114, 0x000114}, - {0x000116, 0x000116}, - {0x000118, 0x000118}, - {0x00011A, 0x00011A}, - {0x00011C, 0x00011C}, - {0x00011E, 0x00011E}, - {0x000120, 0x000120}, - {0x000122, 0x000122}, - {0x000124, 0x000124}, - {0x000126, 0x000126}, - {0x000128, 0x000128}, - {0x00012A, 0x00012A}, - {0x00012C, 0x00012C}, - {0x00012E, 0x00012E}, - {0x000130, 0x000130}, - {0x000132, 0x000132}, - {0x000134, 0x000134}, - {0x000136, 0x000136}, - {0x000139, 0x000139}, - {0x00013B, 0x00013B}, - {0x00013D, 0x00013D}, - {0x00013F, 0x00013F}, - {0x000141, 0x000141}, - {0x000143, 0x000143}, - {0x000145, 0x000145}, - {0x000147, 0x000147}, - {0x000149, 0x00014A}, - {0x00014C, 0x00014C}, - {0x00014E, 0x00014E}, - {0x000150, 0x000150}, - {0x000152, 0x000152}, - {0x000154, 0x000154}, - {0x000156, 0x000156}, - {0x000158, 0x000158}, - {0x00015A, 0x00015A}, - {0x00015C, 0x00015C}, - {0x00015E, 0x00015E}, - {0x000160, 0x000160}, - {0x000162, 0x000162}, - {0x000164, 0x000164}, - {0x000166, 0x000166}, - {0x000168, 0x000168}, - {0x00016A, 0x00016A}, - {0x00016C, 0x00016C}, - {0x00016E, 0x00016E}, - {0x000170, 0x000170}, - {0x000172, 0x000172}, - {0x000174, 0x000174}, - {0x000176, 0x000176}, - {0x000178, 0x000179}, - {0x00017B, 0x00017B}, - {0x00017D, 0x00017D}, - {0x00017F, 0x00017F}, - {0x000181, 0x000182}, - {0x000184, 0x000184}, - {0x000186, 0x000187}, - {0x000189, 0x00018B}, - {0x00018E, 0x000191}, - {0x000193, 0x000194}, - {0x000196, 0x000198}, - {0x00019C, 0x00019D}, - {0x00019F, 0x0001A0}, - {0x0001A2, 0x0001A2}, - {0x0001A4, 0x0001A4}, - {0x0001A6, 0x0001A7}, - {0x0001A9, 0x0001A9}, - {0x0001AC, 0x0001AC}, - {0x0001AE, 0x0001AF}, - {0x0001B1, 0x0001B3}, - {0x0001B5, 0x0001B5}, - {0x0001B7, 0x0001B8}, - {0x0001BC, 0x0001BC}, - {0x0001C4, 0x0001C5}, - {0x0001C7, 0x0001C8}, - {0x0001CA, 0x0001CB}, - {0x0001CD, 0x0001CD}, - {0x0001CF, 0x0001CF}, - {0x0001D1, 0x0001D1}, - {0x0001D3, 0x0001D3}, - {0x0001D5, 0x0001D5}, - {0x0001D7, 0x0001D7}, - {0x0001D9, 0x0001D9}, - {0x0001DB, 0x0001DB}, - {0x0001DE, 0x0001DE}, - {0x0001E0, 0x0001E0}, - {0x0001E2, 0x0001E2}, - {0x0001E4, 0x0001E4}, - {0x0001E6, 0x0001E6}, - {0x0001E8, 0x0001E8}, - {0x0001EA, 0x0001EA}, - {0x0001EC, 0x0001EC}, - {0x0001EE, 0x0001EE}, - {0x0001F1, 0x0001F2}, - {0x0001F4, 0x0001F4}, - {0x0001F6, 0x0001F8}, - {0x0001FA, 0x0001FA}, - {0x0001FC, 0x0001FC}, - {0x0001FE, 0x0001FE}, - {0x000200, 0x000200}, - {0x000202, 0x000202}, - {0x000204, 0x000204}, - {0x000206, 0x000206}, - {0x000208, 0x000208}, - {0x00020A, 0x00020A}, - {0x00020C, 0x00020C}, - {0x00020E, 0x00020E}, - {0x000210, 0x000210}, - {0x000212, 0x000212}, - {0x000214, 0x000214}, - {0x000216, 0x000216}, - {0x000218, 0x000218}, - {0x00021A, 0x00021A}, - {0x00021C, 0x00021C}, - {0x00021E, 0x00021E}, - {0x000220, 0x000220}, - {0x000222, 0x000222}, - {0x000224, 0x000224}, - {0x000226, 0x000226}, - {0x000228, 0x000228}, - {0x00022A, 0x00022A}, - {0x00022C, 0x00022C}, - {0x00022E, 0x00022E}, - {0x000230, 0x000230}, - {0x000232, 0x000232}, - {0x00023A, 0x00023B}, - {0x00023D, 0x00023E}, - {0x000241, 0x000241}, - {0x000243, 0x000246}, - {0x000248, 0x000248}, - {0x00024A, 0x00024A}, - {0x00024C, 0x00024C}, - {0x00024E, 0x00024E}, - {0x000345, 0x000345}, - {0x000370, 0x000370}, - {0x000372, 0x000372}, - {0x000376, 0x000376}, - {0x00037F, 0x00037F}, - {0x000386, 0x000386}, - {0x000388, 0x00038A}, - {0x00038C, 0x00038C}, - {0x00038E, 0x00038F}, - {0x000391, 0x0003A1}, - {0x0003A3, 0x0003AB}, - {0x0003C2, 0x0003C2}, - {0x0003CF, 0x0003D1}, - {0x0003D5, 0x0003D6}, - {0x0003D8, 0x0003D8}, - {0x0003DA, 0x0003DA}, - {0x0003DC, 0x0003DC}, - {0x0003DE, 0x0003DE}, - {0x0003E0, 0x0003E0}, - {0x0003E2, 0x0003E2}, - {0x0003E4, 0x0003E4}, - {0x0003E6, 0x0003E6}, - {0x0003E8, 0x0003E8}, - {0x0003EA, 0x0003EA}, - {0x0003EC, 0x0003EC}, - {0x0003EE, 0x0003EE}, - {0x0003F0, 0x0003F1}, - {0x0003F4, 0x0003F5}, - {0x0003F7, 0x0003F7}, - {0x0003F9, 0x0003FA}, - {0x0003FD, 0x00042F}, - {0x000460, 0x000460}, - {0x000462, 0x000462}, - {0x000464, 0x000464}, - {0x000466, 0x000466}, - {0x000468, 0x000468}, - {0x00046A, 0x00046A}, - {0x00046C, 0x00046C}, - {0x00046E, 0x00046E}, - {0x000470, 0x000470}, - {0x000472, 0x000472}, - {0x000474, 0x000474}, - {0x000476, 0x000476}, - {0x000478, 0x000478}, - {0x00047A, 0x00047A}, - {0x00047C, 0x00047C}, - {0x00047E, 0x00047E}, - {0x000480, 0x000480}, - {0x00048A, 0x00048A}, - {0x00048C, 0x00048C}, - {0x00048E, 0x00048E}, - {0x000490, 0x000490}, - {0x000492, 0x000492}, - {0x000494, 0x000494}, - {0x000496, 0x000496}, - {0x000498, 0x000498}, - {0x00049A, 0x00049A}, - {0x00049C, 0x00049C}, - {0x00049E, 0x00049E}, - {0x0004A0, 0x0004A0}, - {0x0004A2, 0x0004A2}, - {0x0004A4, 0x0004A4}, - {0x0004A6, 0x0004A6}, - {0x0004A8, 0x0004A8}, - {0x0004AA, 0x0004AA}, - {0x0004AC, 0x0004AC}, - {0x0004AE, 0x0004AE}, - {0x0004B0, 0x0004B0}, - {0x0004B2, 0x0004B2}, - {0x0004B4, 0x0004B4}, - {0x0004B6, 0x0004B6}, - {0x0004B8, 0x0004B8}, - {0x0004BA, 0x0004BA}, - {0x0004BC, 0x0004BC}, - {0x0004BE, 0x0004BE}, - {0x0004C0, 0x0004C1}, - {0x0004C3, 0x0004C3}, - {0x0004C5, 0x0004C5}, - {0x0004C7, 0x0004C7}, - {0x0004C9, 0x0004C9}, - {0x0004CB, 0x0004CB}, - {0x0004CD, 0x0004CD}, - {0x0004D0, 0x0004D0}, - {0x0004D2, 0x0004D2}, - {0x0004D4, 0x0004D4}, - {0x0004D6, 0x0004D6}, - {0x0004D8, 0x0004D8}, - {0x0004DA, 0x0004DA}, - {0x0004DC, 0x0004DC}, - {0x0004DE, 0x0004DE}, - {0x0004E0, 0x0004E0}, - {0x0004E2, 0x0004E2}, - {0x0004E4, 0x0004E4}, - {0x0004E6, 0x0004E6}, - {0x0004E8, 0x0004E8}, - {0x0004EA, 0x0004EA}, - {0x0004EC, 0x0004EC}, - {0x0004EE, 0x0004EE}, - {0x0004F0, 0x0004F0}, - {0x0004F2, 0x0004F2}, - {0x0004F4, 0x0004F4}, - {0x0004F6, 0x0004F6}, - {0x0004F8, 0x0004F8}, - {0x0004FA, 0x0004FA}, - {0x0004FC, 0x0004FC}, - {0x0004FE, 0x0004FE}, - {0x000500, 0x000500}, - {0x000502, 0x000502}, - {0x000504, 0x000504}, - {0x000506, 0x000506}, - {0x000508, 0x000508}, - {0x00050A, 0x00050A}, - {0x00050C, 0x00050C}, - {0x00050E, 0x00050E}, - {0x000510, 0x000510}, - {0x000512, 0x000512}, - {0x000514, 0x000514}, - {0x000516, 0x000516}, - {0x000518, 0x000518}, - {0x00051A, 0x00051A}, - {0x00051C, 0x00051C}, - {0x00051E, 0x00051E}, - {0x000520, 0x000520}, - {0x000522, 0x000522}, - {0x000524, 0x000524}, - {0x000526, 0x000526}, - {0x000528, 0x000528}, - {0x00052A, 0x00052A}, - {0x00052C, 0x00052C}, - {0x00052E, 0x00052E}, - {0x000531, 0x000556}, - {0x000587, 0x000587}, - {0x0010A0, 0x0010C5}, - {0x0010C7, 0x0010C7}, - {0x0010CD, 0x0010CD}, - {0x0013F8, 0x0013FD}, - {0x001C80, 0x001C88}, - {0x001C90, 0x001CBA}, - {0x001CBD, 0x001CBF}, - {0x001E00, 0x001E00}, - {0x001E02, 0x001E02}, - {0x001E04, 0x001E04}, - {0x001E06, 0x001E06}, - {0x001E08, 0x001E08}, - {0x001E0A, 0x001E0A}, - {0x001E0C, 0x001E0C}, - {0x001E0E, 0x001E0E}, - {0x001E10, 0x001E10}, - {0x001E12, 0x001E12}, - {0x001E14, 0x001E14}, - {0x001E16, 0x001E16}, - {0x001E18, 0x001E18}, - {0x001E1A, 0x001E1A}, - {0x001E1C, 0x001E1C}, - {0x001E1E, 0x001E1E}, - {0x001E20, 0x001E20}, - {0x001E22, 0x001E22}, - {0x001E24, 0x001E24}, - {0x001E26, 0x001E26}, - {0x001E28, 0x001E28}, - {0x001E2A, 0x001E2A}, - {0x001E2C, 0x001E2C}, - {0x001E2E, 0x001E2E}, - {0x001E30, 0x001E30}, - {0x001E32, 0x001E32}, - {0x001E34, 0x001E34}, - {0x001E36, 0x001E36}, - {0x001E38, 0x001E38}, - {0x001E3A, 0x001E3A}, - {0x001E3C, 0x001E3C}, - {0x001E3E, 0x001E3E}, - {0x001E40, 0x001E40}, - {0x001E42, 0x001E42}, - {0x001E44, 0x001E44}, - {0x001E46, 0x001E46}, - {0x001E48, 0x001E48}, - {0x001E4A, 0x001E4A}, - {0x001E4C, 0x001E4C}, - {0x001E4E, 0x001E4E}, - {0x001E50, 0x001E50}, - {0x001E52, 0x001E52}, - {0x001E54, 0x001E54}, - {0x001E56, 0x001E56}, - {0x001E58, 0x001E58}, - {0x001E5A, 0x001E5A}, - {0x001E5C, 0x001E5C}, - {0x001E5E, 0x001E5E}, - {0x001E60, 0x001E60}, - {0x001E62, 0x001E62}, - {0x001E64, 0x001E64}, - {0x001E66, 0x001E66}, - {0x001E68, 0x001E68}, - {0x001E6A, 0x001E6A}, - {0x001E6C, 0x001E6C}, - {0x001E6E, 0x001E6E}, - {0x001E70, 0x001E70}, - {0x001E72, 0x001E72}, - {0x001E74, 0x001E74}, - {0x001E76, 0x001E76}, - {0x001E78, 0x001E78}, - {0x001E7A, 0x001E7A}, - {0x001E7C, 0x001E7C}, - {0x001E7E, 0x001E7E}, - {0x001E80, 0x001E80}, - {0x001E82, 0x001E82}, - {0x001E84, 0x001E84}, - {0x001E86, 0x001E86}, - {0x001E88, 0x001E88}, - {0x001E8A, 0x001E8A}, - {0x001E8C, 0x001E8C}, - {0x001E8E, 0x001E8E}, - {0x001E90, 0x001E90}, - {0x001E92, 0x001E92}, - {0x001E94, 0x001E94}, - {0x001E9A, 0x001E9B}, - {0x001E9E, 0x001E9E}, - {0x001EA0, 0x001EA0}, - {0x001EA2, 0x001EA2}, - {0x001EA4, 0x001EA4}, - {0x001EA6, 0x001EA6}, - {0x001EA8, 0x001EA8}, - {0x001EAA, 0x001EAA}, - {0x001EAC, 0x001EAC}, - {0x001EAE, 0x001EAE}, - {0x001EB0, 0x001EB0}, - {0x001EB2, 0x001EB2}, - {0x001EB4, 0x001EB4}, - {0x001EB6, 0x001EB6}, - {0x001EB8, 0x001EB8}, - {0x001EBA, 0x001EBA}, - {0x001EBC, 0x001EBC}, - {0x001EBE, 0x001EBE}, - {0x001EC0, 0x001EC0}, - {0x001EC2, 0x001EC2}, - {0x001EC4, 0x001EC4}, - {0x001EC6, 0x001EC6}, - {0x001EC8, 0x001EC8}, - {0x001ECA, 0x001ECA}, - {0x001ECC, 0x001ECC}, - {0x001ECE, 0x001ECE}, - {0x001ED0, 0x001ED0}, - {0x001ED2, 0x001ED2}, - {0x001ED4, 0x001ED4}, - {0x001ED6, 0x001ED6}, - {0x001ED8, 0x001ED8}, - {0x001EDA, 0x001EDA}, - {0x001EDC, 0x001EDC}, - {0x001EDE, 0x001EDE}, - {0x001EE0, 0x001EE0}, - {0x001EE2, 0x001EE2}, - {0x001EE4, 0x001EE4}, - {0x001EE6, 0x001EE6}, - {0x001EE8, 0x001EE8}, - {0x001EEA, 0x001EEA}, - {0x001EEC, 0x001EEC}, - {0x001EEE, 0x001EEE}, - {0x001EF0, 0x001EF0}, - {0x001EF2, 0x001EF2}, - {0x001EF4, 0x001EF4}, - {0x001EF6, 0x001EF6}, - {0x001EF8, 0x001EF8}, - {0x001EFA, 0x001EFA}, - {0x001EFC, 0x001EFC}, - {0x001EFE, 0x001EFE}, - {0x001F08, 0x001F0F}, - {0x001F18, 0x001F1D}, - {0x001F28, 0x001F2F}, - {0x001F38, 0x001F3F}, - {0x001F48, 0x001F4D}, - {0x001F59, 0x001F59}, - {0x001F5B, 0x001F5B}, - {0x001F5D, 0x001F5D}, - {0x001F5F, 0x001F5F}, - {0x001F68, 0x001F6F}, - {0x001F80, 0x001FAF}, - {0x001FB2, 0x001FB4}, - {0x001FB7, 0x001FBC}, - {0x001FC2, 0x001FC4}, - {0x001FC7, 0x001FCC}, - {0x001FD8, 0x001FDB}, - {0x001FE8, 0x001FEC}, - {0x001FF2, 0x001FF4}, - {0x001FF7, 0x001FFC}, - {0x002126, 0x002126}, - {0x00212A, 0x00212B}, - {0x002132, 0x002132}, - {0x002160, 0x00216F}, - {0x002183, 0x002183}, - {0x0024B6, 0x0024CF}, - {0x002C00, 0x002C2F}, - {0x002C60, 0x002C60}, - {0x002C62, 0x002C64}, - {0x002C67, 0x002C67}, - {0x002C69, 0x002C69}, - {0x002C6B, 0x002C6B}, - {0x002C6D, 0x002C70}, - {0x002C72, 0x002C72}, - {0x002C75, 0x002C75}, - {0x002C7E, 0x002C80}, - {0x002C82, 0x002C82}, - {0x002C84, 0x002C84}, - {0x002C86, 0x002C86}, - {0x002C88, 0x002C88}, - {0x002C8A, 0x002C8A}, - {0x002C8C, 0x002C8C}, - {0x002C8E, 0x002C8E}, - {0x002C90, 0x002C90}, - {0x002C92, 0x002C92}, - {0x002C94, 0x002C94}, - {0x002C96, 0x002C96}, - {0x002C98, 0x002C98}, - {0x002C9A, 0x002C9A}, - {0x002C9C, 0x002C9C}, - {0x002C9E, 0x002C9E}, - {0x002CA0, 0x002CA0}, - {0x002CA2, 0x002CA2}, - {0x002CA4, 0x002CA4}, - {0x002CA6, 0x002CA6}, - {0x002CA8, 0x002CA8}, - {0x002CAA, 0x002CAA}, - {0x002CAC, 0x002CAC}, - {0x002CAE, 0x002CAE}, - {0x002CB0, 0x002CB0}, - {0x002CB2, 0x002CB2}, - {0x002CB4, 0x002CB4}, - {0x002CB6, 0x002CB6}, - {0x002CB8, 0x002CB8}, - {0x002CBA, 0x002CBA}, - {0x002CBC, 0x002CBC}, - {0x002CBE, 0x002CBE}, - {0x002CC0, 0x002CC0}, - {0x002CC2, 0x002CC2}, - {0x002CC4, 0x002CC4}, - {0x002CC6, 0x002CC6}, - {0x002CC8, 0x002CC8}, - {0x002CCA, 0x002CCA}, - {0x002CCC, 0x002CCC}, - {0x002CCE, 0x002CCE}, - {0x002CD0, 0x002CD0}, - {0x002CD2, 0x002CD2}, - {0x002CD4, 0x002CD4}, - {0x002CD6, 0x002CD6}, - {0x002CD8, 0x002CD8}, - {0x002CDA, 0x002CDA}, - {0x002CDC, 0x002CDC}, - {0x002CDE, 0x002CDE}, - {0x002CE0, 0x002CE0}, - {0x002CE2, 0x002CE2}, - {0x002CEB, 0x002CEB}, - {0x002CED, 0x002CED}, - {0x002CF2, 0x002CF2}, - {0x00A640, 0x00A640}, - {0x00A642, 0x00A642}, - {0x00A644, 0x00A644}, - {0x00A646, 0x00A646}, - {0x00A648, 0x00A648}, - {0x00A64A, 0x00A64A}, - {0x00A64C, 0x00A64C}, - {0x00A64E, 0x00A64E}, - {0x00A650, 0x00A650}, - {0x00A652, 0x00A652}, - {0x00A654, 0x00A654}, - {0x00A656, 0x00A656}, - {0x00A658, 0x00A658}, - {0x00A65A, 0x00A65A}, - {0x00A65C, 0x00A65C}, - {0x00A65E, 0x00A65E}, - {0x00A660, 0x00A660}, - {0x00A662, 0x00A662}, - {0x00A664, 0x00A664}, - {0x00A666, 0x00A666}, - {0x00A668, 0x00A668}, - {0x00A66A, 0x00A66A}, - {0x00A66C, 0x00A66C}, - {0x00A680, 0x00A680}, - {0x00A682, 0x00A682}, - {0x00A684, 0x00A684}, - {0x00A686, 0x00A686}, - {0x00A688, 0x00A688}, - {0x00A68A, 0x00A68A}, - {0x00A68C, 0x00A68C}, - {0x00A68E, 0x00A68E}, - {0x00A690, 0x00A690}, - {0x00A692, 0x00A692}, - {0x00A694, 0x00A694}, - {0x00A696, 0x00A696}, - {0x00A698, 0x00A698}, - {0x00A69A, 0x00A69A}, - {0x00A722, 0x00A722}, - {0x00A724, 0x00A724}, - {0x00A726, 0x00A726}, - {0x00A728, 0x00A728}, - {0x00A72A, 0x00A72A}, - {0x00A72C, 0x00A72C}, - {0x00A72E, 0x00A72E}, - {0x00A732, 0x00A732}, - {0x00A734, 0x00A734}, - {0x00A736, 0x00A736}, - {0x00A738, 0x00A738}, - {0x00A73A, 0x00A73A}, - {0x00A73C, 0x00A73C}, - {0x00A73E, 0x00A73E}, - {0x00A740, 0x00A740}, - {0x00A742, 0x00A742}, - {0x00A744, 0x00A744}, - {0x00A746, 0x00A746}, - {0x00A748, 0x00A748}, - {0x00A74A, 0x00A74A}, - {0x00A74C, 0x00A74C}, - {0x00A74E, 0x00A74E}, - {0x00A750, 0x00A750}, - {0x00A752, 0x00A752}, - {0x00A754, 0x00A754}, - {0x00A756, 0x00A756}, - {0x00A758, 0x00A758}, - {0x00A75A, 0x00A75A}, - {0x00A75C, 0x00A75C}, - {0x00A75E, 0x00A75E}, - {0x00A760, 0x00A760}, - {0x00A762, 0x00A762}, - {0x00A764, 0x00A764}, - {0x00A766, 0x00A766}, - {0x00A768, 0x00A768}, - {0x00A76A, 0x00A76A}, - {0x00A76C, 0x00A76C}, - {0x00A76E, 0x00A76E}, - {0x00A779, 0x00A779}, - {0x00A77B, 0x00A77B}, - {0x00A77D, 0x00A77E}, - {0x00A780, 0x00A780}, - {0x00A782, 0x00A782}, - {0x00A784, 0x00A784}, - {0x00A786, 0x00A786}, - {0x00A78B, 0x00A78B}, - {0x00A78D, 0x00A78D}, - {0x00A790, 0x00A790}, - {0x00A792, 0x00A792}, - {0x00A796, 0x00A796}, - {0x00A798, 0x00A798}, - {0x00A79A, 0x00A79A}, - {0x00A79C, 0x00A79C}, - {0x00A79E, 0x00A79E}, - {0x00A7A0, 0x00A7A0}, - {0x00A7A2, 0x00A7A2}, - {0x00A7A4, 0x00A7A4}, - {0x00A7A6, 0x00A7A6}, - {0x00A7A8, 0x00A7A8}, - {0x00A7AA, 0x00A7AE}, - {0x00A7B0, 0x00A7B4}, - {0x00A7B6, 0x00A7B6}, - {0x00A7B8, 0x00A7B8}, - {0x00A7BA, 0x00A7BA}, - {0x00A7BC, 0x00A7BC}, - {0x00A7BE, 0x00A7BE}, - {0x00A7C0, 0x00A7C0}, - {0x00A7C2, 0x00A7C2}, - {0x00A7C4, 0x00A7C7}, - {0x00A7C9, 0x00A7C9}, - {0x00A7D0, 0x00A7D0}, - {0x00A7D6, 0x00A7D6}, - {0x00A7D8, 0x00A7D8}, - {0x00A7F5, 0x00A7F5}, - {0x00AB70, 0x00ABBF}, - {0x00FB00, 0x00FB06}, - {0x00FB13, 0x00FB17}, - {0x00FF21, 0x00FF3A}, - {0x010400, 0x010427}, - {0x0104B0, 0x0104D3}, - {0x010570, 0x01057A}, - {0x01057C, 0x01058A}, - {0x01058C, 0x010592}, - {0x010594, 0x010595}, - {0x010C80, 0x010CB2}, - {0x0118A0, 0x0118BF}, - {0x016E40, 0x016E5F}, - {0x01E900, 0x01E921}, -}; - -#define TYPE bool -#define TABLE lookup_tbl -#define DEFAULT false -#define HAS_VALUE 0 -#include "internal/rtype/lookup-func.h" - -bool -rune_has_prop_changes_when_casefolded(rune ch) -{ - return -#if BIT_LOOKUP - ch <= LATIN1_MAX ? (mask & ch) : -#endif - lookup(ch); -} diff --git a/vendor/librune/lib/rtype/rune_has_prop_changes_when_casemapped.c b/vendor/librune/lib/rtype/rune_has_prop_changes_when_casemapped.c deleted file mode 100644 index 5b40d20..0000000 --- a/vendor/librune/lib/rtype/rune_has_prop_changes_when_casemapped.c +++ /dev/null @@ -1,161 +0,0 @@ -/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */ - -#include "rtype.h" - -#include "internal/common.h" - -#if BIT_LOOKUP -static const unsigned _BitInt(LATIN1_MAX + 1) mask = 0xFF7FFFFFFF7FFFFF002000000000000007FFFFFE07FFFFFE0000000000000000uwb; -#endif - -static const struct { - rune lo, hi; -} lookup_tbl[] = { - {0x000041, 0x00005A}, - {0x000061, 0x00007A}, - {0x0000B5, 0x0000B5}, - {0x0000C0, 0x0000D6}, - {0x0000D8, 0x0000F6}, - {0x0000F8, 0x000137}, - {0x000139, 0x00018C}, - {0x00018E, 0x00019A}, - {0x00019C, 0x0001A9}, - {0x0001AC, 0x0001B9}, - {0x0001BC, 0x0001BD}, - {0x0001BF, 0x0001BF}, - {0x0001C4, 0x000220}, - {0x000222, 0x000233}, - {0x00023A, 0x000254}, - {0x000256, 0x000257}, - {0x000259, 0x000259}, - {0x00025B, 0x00025C}, - {0x000260, 0x000261}, - {0x000263, 0x000263}, - {0x000265, 0x000266}, - {0x000268, 0x00026C}, - {0x00026F, 0x00026F}, - {0x000271, 0x000272}, - {0x000275, 0x000275}, - {0x00027D, 0x00027D}, - {0x000280, 0x000280}, - {0x000282, 0x000283}, - {0x000287, 0x00028C}, - {0x000292, 0x000292}, - {0x00029D, 0x00029E}, - {0x000345, 0x000345}, - {0x000370, 0x000373}, - {0x000376, 0x000377}, - {0x00037B, 0x00037D}, - {0x00037F, 0x00037F}, - {0x000386, 0x000386}, - {0x000388, 0x00038A}, - {0x00038C, 0x00038C}, - {0x00038E, 0x0003A1}, - {0x0003A3, 0x0003D1}, - {0x0003D5, 0x0003F5}, - {0x0003F7, 0x0003FB}, - {0x0003FD, 0x000481}, - {0x00048A, 0x00052F}, - {0x000531, 0x000556}, - {0x000561, 0x000587}, - {0x0010A0, 0x0010C5}, - {0x0010C7, 0x0010C7}, - {0x0010CD, 0x0010CD}, - {0x0010D0, 0x0010FA}, - {0x0010FD, 0x0010FF}, - {0x0013A0, 0x0013F5}, - {0x0013F8, 0x0013FD}, - {0x001C80, 0x001C88}, - {0x001C90, 0x001CBA}, - {0x001CBD, 0x001CBF}, - {0x001D79, 0x001D79}, - {0x001D7D, 0x001D7D}, - {0x001D8E, 0x001D8E}, - {0x001E00, 0x001E9B}, - {0x001E9E, 0x001E9E}, - {0x001EA0, 0x001F15}, - {0x001F18, 0x001F1D}, - {0x001F20, 0x001F45}, - {0x001F48, 0x001F4D}, - {0x001F50, 0x001F57}, - {0x001F59, 0x001F59}, - {0x001F5B, 0x001F5B}, - {0x001F5D, 0x001F5D}, - {0x001F5F, 0x001F7D}, - {0x001F80, 0x001FB4}, - {0x001FB6, 0x001FBC}, - {0x001FBE, 0x001FBE}, - {0x001FC2, 0x001FC4}, - {0x001FC6, 0x001FCC}, - {0x001FD0, 0x001FD3}, - {0x001FD6, 0x001FDB}, - {0x001FE0, 0x001FEC}, - {0x001FF2, 0x001FF4}, - {0x001FF6, 0x001FFC}, - {0x002126, 0x002126}, - {0x00212A, 0x00212B}, - {0x002132, 0x002132}, - {0x00214E, 0x00214E}, - {0x002160, 0x00217F}, - {0x002183, 0x002184}, - {0x0024B6, 0x0024E9}, - {0x002C00, 0x002C70}, - {0x002C72, 0x002C73}, - {0x002C75, 0x002C76}, - {0x002C7E, 0x002CE3}, - {0x002CEB, 0x002CEE}, - {0x002CF2, 0x002CF3}, - {0x002D00, 0x002D25}, - {0x002D27, 0x002D27}, - {0x002D2D, 0x002D2D}, - {0x00A640, 0x00A66D}, - {0x00A680, 0x00A69B}, - {0x00A722, 0x00A72F}, - {0x00A732, 0x00A76F}, - {0x00A779, 0x00A787}, - {0x00A78B, 0x00A78D}, - {0x00A790, 0x00A794}, - {0x00A796, 0x00A7AE}, - {0x00A7B0, 0x00A7CA}, - {0x00A7D0, 0x00A7D1}, - {0x00A7D6, 0x00A7D9}, - {0x00A7F5, 0x00A7F6}, - {0x00AB53, 0x00AB53}, - {0x00AB70, 0x00ABBF}, - {0x00FB00, 0x00FB06}, - {0x00FB13, 0x00FB17}, - {0x00FF21, 0x00FF3A}, - {0x00FF41, 0x00FF5A}, - {0x010400, 0x01044F}, - {0x0104B0, 0x0104D3}, - {0x0104D8, 0x0104FB}, - {0x010570, 0x01057A}, - {0x01057C, 0x01058A}, - {0x01058C, 0x010592}, - {0x010594, 0x010595}, - {0x010597, 0x0105A1}, - {0x0105A3, 0x0105B1}, - {0x0105B3, 0x0105B9}, - {0x0105BB, 0x0105BC}, - {0x010C80, 0x010CB2}, - {0x010CC0, 0x010CF2}, - {0x0118A0, 0x0118DF}, - {0x016E40, 0x016E7F}, - {0x01E900, 0x01E943}, -}; - -#define TYPE bool -#define TABLE lookup_tbl -#define DEFAULT false -#define HAS_VALUE 0 -#include "internal/rtype/lookup-func.h" - -bool -rune_has_prop_changes_when_casemapped(rune ch) -{ - return -#if BIT_LOOKUP - ch <= LATIN1_MAX ? (mask & ch) : -#endif - lookup(ch); -} diff --git a/vendor/librune/lib/rtype/rune_has_prop_changes_when_lowercased.c b/vendor/librune/lib/rtype/rune_has_prop_changes_when_lowercased.c deleted file mode 100644 index dd7575d..0000000 --- a/vendor/librune/lib/rtype/rune_has_prop_changes_when_lowercased.c +++ /dev/null @@ -1,639 +0,0 @@ -/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */ - -#include "rtype.h" - -#include "internal/common.h" - -#if BIT_LOOKUP -static const unsigned _BitInt(LATIN1_MAX + 1) mask = 0x7F7FFFFF00000000000000000000000007FFFFFE0000000000000000uwb; -#endif - -static const struct { - rune lo, hi; -} lookup_tbl[] = { - {0x000041, 0x00005A}, - {0x0000C0, 0x0000D6}, - {0x0000D8, 0x0000DE}, - {0x000100, 0x000100}, - {0x000102, 0x000102}, - {0x000104, 0x000104}, - {0x000106, 0x000106}, - {0x000108, 0x000108}, - {0x00010A, 0x00010A}, - {0x00010C, 0x00010C}, - {0x00010E, 0x00010E}, - {0x000110, 0x000110}, - {0x000112, 0x000112}, - {0x000114, 0x000114}, - {0x000116, 0x000116}, - {0x000118, 0x000118}, - {0x00011A, 0x00011A}, - {0x00011C, 0x00011C}, - {0x00011E, 0x00011E}, - {0x000120, 0x000120}, - {0x000122, 0x000122}, - {0x000124, 0x000124}, - {0x000126, 0x000126}, - {0x000128, 0x000128}, - {0x00012A, 0x00012A}, - {0x00012C, 0x00012C}, - {0x00012E, 0x00012E}, - {0x000130, 0x000130}, - {0x000132, 0x000132}, - {0x000134, 0x000134}, - {0x000136, 0x000136}, - {0x000139, 0x000139}, - {0x00013B, 0x00013B}, - {0x00013D, 0x00013D}, - {0x00013F, 0x00013F}, - {0x000141, 0x000141}, - {0x000143, 0x000143}, - {0x000145, 0x000145}, - {0x000147, 0x000147}, - {0x00014A, 0x00014A}, - {0x00014C, 0x00014C}, - {0x00014E, 0x00014E}, - {0x000150, 0x000150}, - {0x000152, 0x000152}, - {0x000154, 0x000154}, - {0x000156, 0x000156}, - {0x000158, 0x000158}, - {0x00015A, 0x00015A}, - {0x00015C, 0x00015C}, - {0x00015E, 0x00015E}, - {0x000160, 0x000160}, - {0x000162, 0x000162}, - {0x000164, 0x000164}, - {0x000166, 0x000166}, - {0x000168, 0x000168}, - {0x00016A, 0x00016A}, - {0x00016C, 0x00016C}, - {0x00016E, 0x00016E}, - {0x000170, 0x000170}, - {0x000172, 0x000172}, - {0x000174, 0x000174}, - {0x000176, 0x000176}, - {0x000178, 0x000179}, - {0x00017B, 0x00017B}, - {0x00017D, 0x00017D}, - {0x000181, 0x000182}, - {0x000184, 0x000184}, - {0x000186, 0x000187}, - {0x000189, 0x00018B}, - {0x00018E, 0x000191}, - {0x000193, 0x000194}, - {0x000196, 0x000198}, - {0x00019C, 0x00019D}, - {0x00019F, 0x0001A0}, - {0x0001A2, 0x0001A2}, - {0x0001A4, 0x0001A4}, - {0x0001A6, 0x0001A7}, - {0x0001A9, 0x0001A9}, - {0x0001AC, 0x0001AC}, - {0x0001AE, 0x0001AF}, - {0x0001B1, 0x0001B3}, - {0x0001B5, 0x0001B5}, - {0x0001B7, 0x0001B8}, - {0x0001BC, 0x0001BC}, - {0x0001C4, 0x0001C5}, - {0x0001C7, 0x0001C8}, - {0x0001CA, 0x0001CB}, - {0x0001CD, 0x0001CD}, - {0x0001CF, 0x0001CF}, - {0x0001D1, 0x0001D1}, - {0x0001D3, 0x0001D3}, - {0x0001D5, 0x0001D5}, - {0x0001D7, 0x0001D7}, - {0x0001D9, 0x0001D9}, - {0x0001DB, 0x0001DB}, - {0x0001DE, 0x0001DE}, - {0x0001E0, 0x0001E0}, - {0x0001E2, 0x0001E2}, - {0x0001E4, 0x0001E4}, - {0x0001E6, 0x0001E6}, - {0x0001E8, 0x0001E8}, - {0x0001EA, 0x0001EA}, - {0x0001EC, 0x0001EC}, - {0x0001EE, 0x0001EE}, - {0x0001F1, 0x0001F2}, - {0x0001F4, 0x0001F4}, - {0x0001F6, 0x0001F8}, - {0x0001FA, 0x0001FA}, - {0x0001FC, 0x0001FC}, - {0x0001FE, 0x0001FE}, - {0x000200, 0x000200}, - {0x000202, 0x000202}, - {0x000204, 0x000204}, - {0x000206, 0x000206}, - {0x000208, 0x000208}, - {0x00020A, 0x00020A}, - {0x00020C, 0x00020C}, - {0x00020E, 0x00020E}, - {0x000210, 0x000210}, - {0x000212, 0x000212}, - {0x000214, 0x000214}, - {0x000216, 0x000216}, - {0x000218, 0x000218}, - {0x00021A, 0x00021A}, - {0x00021C, 0x00021C}, - {0x00021E, 0x00021E}, - {0x000220, 0x000220}, - {0x000222, 0x000222}, - {0x000224, 0x000224}, - {0x000226, 0x000226}, - {0x000228, 0x000228}, - {0x00022A, 0x00022A}, - {0x00022C, 0x00022C}, - {0x00022E, 0x00022E}, - {0x000230, 0x000230}, - {0x000232, 0x000232}, - {0x00023A, 0x00023B}, - {0x00023D, 0x00023E}, - {0x000241, 0x000241}, - {0x000243, 0x000246}, - {0x000248, 0x000248}, - {0x00024A, 0x00024A}, - {0x00024C, 0x00024C}, - {0x00024E, 0x00024E}, - {0x000370, 0x000370}, - {0x000372, 0x000372}, - {0x000376, 0x000376}, - {0x00037F, 0x00037F}, - {0x000386, 0x000386}, - {0x000388, 0x00038A}, - {0x00038C, 0x00038C}, - {0x00038E, 0x00038F}, - {0x000391, 0x0003A1}, - {0x0003A3, 0x0003AB}, - {0x0003CF, 0x0003CF}, - {0x0003D8, 0x0003D8}, - {0x0003DA, 0x0003DA}, - {0x0003DC, 0x0003DC}, - {0x0003DE, 0x0003DE}, - {0x0003E0, 0x0003E0}, - {0x0003E2, 0x0003E2}, - {0x0003E4, 0x0003E4}, - {0x0003E6, 0x0003E6}, - {0x0003E8, 0x0003E8}, - {0x0003EA, 0x0003EA}, - {0x0003EC, 0x0003EC}, - {0x0003EE, 0x0003EE}, - {0x0003F4, 0x0003F4}, - {0x0003F7, 0x0003F7}, - {0x0003F9, 0x0003FA}, - {0x0003FD, 0x00042F}, - {0x000460, 0x000460}, - {0x000462, 0x000462}, - {0x000464, 0x000464}, - {0x000466, 0x000466}, - {0x000468, 0x000468}, - {0x00046A, 0x00046A}, - {0x00046C, 0x00046C}, - {0x00046E, 0x00046E}, - {0x000470, 0x000470}, - {0x000472, 0x000472}, - {0x000474, 0x000474}, - {0x000476, 0x000476}, - {0x000478, 0x000478}, - {0x00047A, 0x00047A}, - {0x00047C, 0x00047C}, - {0x00047E, 0x00047E}, - {0x000480, 0x000480}, - {0x00048A, 0x00048A}, - {0x00048C, 0x00048C}, - {0x00048E, 0x00048E}, - {0x000490, 0x000490}, - {0x000492, 0x000492}, - {0x000494, 0x000494}, - {0x000496, 0x000496}, - {0x000498, 0x000498}, - {0x00049A, 0x00049A}, - {0x00049C, 0x00049C}, - {0x00049E, 0x00049E}, - {0x0004A0, 0x0004A0}, - {0x0004A2, 0x0004A2}, - {0x0004A4, 0x0004A4}, - {0x0004A6, 0x0004A6}, - {0x0004A8, 0x0004A8}, - {0x0004AA, 0x0004AA}, - {0x0004AC, 0x0004AC}, - {0x0004AE, 0x0004AE}, - {0x0004B0, 0x0004B0}, - {0x0004B2, 0x0004B2}, - {0x0004B4, 0x0004B4}, - {0x0004B6, 0x0004B6}, - {0x0004B8, 0x0004B8}, - {0x0004BA, 0x0004BA}, - {0x0004BC, 0x0004BC}, - {0x0004BE, 0x0004BE}, - {0x0004C0, 0x0004C1}, - {0x0004C3, 0x0004C3}, - {0x0004C5, 0x0004C5}, - {0x0004C7, 0x0004C7}, - {0x0004C9, 0x0004C9}, - {0x0004CB, 0x0004CB}, - {0x0004CD, 0x0004CD}, - {0x0004D0, 0x0004D0}, - {0x0004D2, 0x0004D2}, - {0x0004D4, 0x0004D4}, - {0x0004D6, 0x0004D6}, - {0x0004D8, 0x0004D8}, - {0x0004DA, 0x0004DA}, - {0x0004DC, 0x0004DC}, - {0x0004DE, 0x0004DE}, - {0x0004E0, 0x0004E0}, - {0x0004E2, 0x0004E2}, - {0x0004E4, 0x0004E4}, - {0x0004E6, 0x0004E6}, - {0x0004E8, 0x0004E8}, - {0x0004EA, 0x0004EA}, - {0x0004EC, 0x0004EC}, - {0x0004EE, 0x0004EE}, - {0x0004F0, 0x0004F0}, - {0x0004F2, 0x0004F2}, - {0x0004F4, 0x0004F4}, - {0x0004F6, 0x0004F6}, - {0x0004F8, 0x0004F8}, - {0x0004FA, 0x0004FA}, - {0x0004FC, 0x0004FC}, - {0x0004FE, 0x0004FE}, - {0x000500, 0x000500}, - {0x000502, 0x000502}, - {0x000504, 0x000504}, - {0x000506, 0x000506}, - {0x000508, 0x000508}, - {0x00050A, 0x00050A}, - {0x00050C, 0x00050C}, - {0x00050E, 0x00050E}, - {0x000510, 0x000510}, - {0x000512, 0x000512}, - {0x000514, 0x000514}, - {0x000516, 0x000516}, - {0x000518, 0x000518}, - {0x00051A, 0x00051A}, - {0x00051C, 0x00051C}, - {0x00051E, 0x00051E}, - {0x000520, 0x000520}, - {0x000522, 0x000522}, - {0x000524, 0x000524}, - {0x000526, 0x000526}, - {0x000528, 0x000528}, - {0x00052A, 0x00052A}, - {0x00052C, 0x00052C}, - {0x00052E, 0x00052E}, - {0x000531, 0x000556}, - {0x0010A0, 0x0010C5}, - {0x0010C7, 0x0010C7}, - {0x0010CD, 0x0010CD}, - {0x0013A0, 0x0013F5}, - {0x001C90, 0x001CBA}, - {0x001CBD, 0x001CBF}, - {0x001E00, 0x001E00}, - {0x001E02, 0x001E02}, - {0x001E04, 0x001E04}, - {0x001E06, 0x001E06}, - {0x001E08, 0x001E08}, - {0x001E0A, 0x001E0A}, - {0x001E0C, 0x001E0C}, - {0x001E0E, 0x001E0E}, - {0x001E10, 0x001E10}, - {0x001E12, 0x001E12}, - {0x001E14, 0x001E14}, - {0x001E16, 0x001E16}, - {0x001E18, 0x001E18}, - {0x001E1A, 0x001E1A}, - {0x001E1C, 0x001E1C}, - {0x001E1E, 0x001E1E}, - {0x001E20, 0x001E20}, - {0x001E22, 0x001E22}, - {0x001E24, 0x001E24}, - {0x001E26, 0x001E26}, - {0x001E28, 0x001E28}, - {0x001E2A, 0x001E2A}, - {0x001E2C, 0x001E2C}, - {0x001E2E, 0x001E2E}, - {0x001E30, 0x001E30}, - {0x001E32, 0x001E32}, - {0x001E34, 0x001E34}, - {0x001E36, 0x001E36}, - {0x001E38, 0x001E38}, - {0x001E3A, 0x001E3A}, - {0x001E3C, 0x001E3C}, - {0x001E3E, 0x001E3E}, - {0x001E40, 0x001E40}, - {0x001E42, 0x001E42}, - {0x001E44, 0x001E44}, - {0x001E46, 0x001E46}, - {0x001E48, 0x001E48}, - {0x001E4A, 0x001E4A}, - {0x001E4C, 0x001E4C}, - {0x001E4E, 0x001E4E}, - {0x001E50, 0x001E50}, - {0x001E52, 0x001E52}, - {0x001E54, 0x001E54}, - {0x001E56, 0x001E56}, - {0x001E58, 0x001E58}, - {0x001E5A, 0x001E5A}, - {0x001E5C, 0x001E5C}, - {0x001E5E, 0x001E5E}, - {0x001E60, 0x001E60}, - {0x001E62, 0x001E62}, - {0x001E64, 0x001E64}, - {0x001E66, 0x001E66}, - {0x001E68, 0x001E68}, - {0x001E6A, 0x001E6A}, - {0x001E6C, 0x001E6C}, - {0x001E6E, 0x001E6E}, - {0x001E70, 0x001E70}, - {0x001E72, 0x001E72}, - {0x001E74, 0x001E74}, - {0x001E76, 0x001E76}, - {0x001E78, 0x001E78}, - {0x001E7A, 0x001E7A}, - {0x001E7C, 0x001E7C}, - {0x001E7E, 0x001E7E}, - {0x001E80, 0x001E80}, - {0x001E82, 0x001E82}, - {0x001E84, 0x001E84}, - {0x001E86, 0x001E86}, - {0x001E88, 0x001E88}, - {0x001E8A, 0x001E8A}, - {0x001E8C, 0x001E8C}, - {0x001E8E, 0x001E8E}, - {0x001E90, 0x001E90}, - {0x001E92, 0x001E92}, - {0x001E94, 0x001E94}, - {0x001E9E, 0x001E9E}, - {0x001EA0, 0x001EA0}, - {0x001EA2, 0x001EA2}, - {0x001EA4, 0x001EA4}, - {0x001EA6, 0x001EA6}, - {0x001EA8, 0x001EA8}, - {0x001EAA, 0x001EAA}, - {0x001EAC, 0x001EAC}, - {0x001EAE, 0x001EAE}, - {0x001EB0, 0x001EB0}, - {0x001EB2, 0x001EB2}, - {0x001EB4, 0x001EB4}, - {0x001EB6, 0x001EB6}, - {0x001EB8, 0x001EB8}, - {0x001EBA, 0x001EBA}, - {0x001EBC, 0x001EBC}, - {0x001EBE, 0x001EBE}, - {0x001EC0, 0x001EC0}, - {0x001EC2, 0x001EC2}, - {0x001EC4, 0x001EC4}, - {0x001EC6, 0x001EC6}, - {0x001EC8, 0x001EC8}, - {0x001ECA, 0x001ECA}, - {0x001ECC, 0x001ECC}, - {0x001ECE, 0x001ECE}, - {0x001ED0, 0x001ED0}, - {0x001ED2, 0x001ED2}, - {0x001ED4, 0x001ED4}, - {0x001ED6, 0x001ED6}, - {0x001ED8, 0x001ED8}, - {0x001EDA, 0x001EDA}, - {0x001EDC, 0x001EDC}, - {0x001EDE, 0x001EDE}, - {0x001EE0, 0x001EE0}, - {0x001EE2, 0x001EE2}, - {0x001EE4, 0x001EE4}, - {0x001EE6, 0x001EE6}, - {0x001EE8, 0x001EE8}, - {0x001EEA, 0x001EEA}, - {0x001EEC, 0x001EEC}, - {0x001EEE, 0x001EEE}, - {0x001EF0, 0x001EF0}, - {0x001EF2, 0x001EF2}, - {0x001EF4, 0x001EF4}, - {0x001EF6, 0x001EF6}, - {0x001EF8, 0x001EF8}, - {0x001EFA, 0x001EFA}, - {0x001EFC, 0x001EFC}, - {0x001EFE, 0x001EFE}, - {0x001F08, 0x001F0F}, - {0x001F18, 0x001F1D}, - {0x001F28, 0x001F2F}, - {0x001F38, 0x001F3F}, - {0x001F48, 0x001F4D}, - {0x001F59, 0x001F59}, - {0x001F5B, 0x001F5B}, - {0x001F5D, 0x001F5D}, - {0x001F5F, 0x001F5F}, - {0x001F68, 0x001F6F}, - {0x001F88, 0x001F8F}, - {0x001F98, 0x001F9F}, - {0x001FA8, 0x001FAF}, - {0x001FB8, 0x001FBC}, - {0x001FC8, 0x001FCC}, - {0x001FD8, 0x001FDB}, - {0x001FE8, 0x001FEC}, - {0x001FF8, 0x001FFC}, - {0x002126, 0x002126}, - {0x00212A, 0x00212B}, - {0x002132, 0x002132}, - {0x002160, 0x00216F}, - {0x002183, 0x002183}, - {0x0024B6, 0x0024CF}, - {0x002C00, 0x002C2F}, - {0x002C60, 0x002C60}, - {0x002C62, 0x002C64}, - {0x002C67, 0x002C67}, - {0x002C69, 0x002C69}, - {0x002C6B, 0x002C6B}, - {0x002C6D, 0x002C70}, - {0x002C72, 0x002C72}, - {0x002C75, 0x002C75}, - {0x002C7E, 0x002C80}, - {0x002C82, 0x002C82}, - {0x002C84, 0x002C84}, - {0x002C86, 0x002C86}, - {0x002C88, 0x002C88}, - {0x002C8A, 0x002C8A}, - {0x002C8C, 0x002C8C}, - {0x002C8E, 0x002C8E}, - {0x002C90, 0x002C90}, - {0x002C92, 0x002C92}, - {0x002C94, 0x002C94}, - {0x002C96, 0x002C96}, - {0x002C98, 0x002C98}, - {0x002C9A, 0x002C9A}, - {0x002C9C, 0x002C9C}, - {0x002C9E, 0x002C9E}, - {0x002CA0, 0x002CA0}, - {0x002CA2, 0x002CA2}, - {0x002CA4, 0x002CA4}, - {0x002CA6, 0x002CA6}, - {0x002CA8, 0x002CA8}, - {0x002CAA, 0x002CAA}, - {0x002CAC, 0x002CAC}, - {0x002CAE, 0x002CAE}, - {0x002CB0, 0x002CB0}, - {0x002CB2, 0x002CB2}, - {0x002CB4, 0x002CB4}, - {0x002CB6, 0x002CB6}, - {0x002CB8, 0x002CB8}, - {0x002CBA, 0x002CBA}, - {0x002CBC, 0x002CBC}, - {0x002CBE, 0x002CBE}, - {0x002CC0, 0x002CC0}, - {0x002CC2, 0x002CC2}, - {0x002CC4, 0x002CC4}, - {0x002CC6, 0x002CC6}, - {0x002CC8, 0x002CC8}, - {0x002CCA, 0x002CCA}, - {0x002CCC, 0x002CCC}, - {0x002CCE, 0x002CCE}, - {0x002CD0, 0x002CD0}, - {0x002CD2, 0x002CD2}, - {0x002CD4, 0x002CD4}, - {0x002CD6, 0x002CD6}, - {0x002CD8, 0x002CD8}, - {0x002CDA, 0x002CDA}, - {0x002CDC, 0x002CDC}, - {0x002CDE, 0x002CDE}, - {0x002CE0, 0x002CE0}, - {0x002CE2, 0x002CE2}, - {0x002CEB, 0x002CEB}, - {0x002CED, 0x002CED}, - {0x002CF2, 0x002CF2}, - {0x00A640, 0x00A640}, - {0x00A642, 0x00A642}, - {0x00A644, 0x00A644}, - {0x00A646, 0x00A646}, - {0x00A648, 0x00A648}, - {0x00A64A, 0x00A64A}, - {0x00A64C, 0x00A64C}, - {0x00A64E, 0x00A64E}, - {0x00A650, 0x00A650}, - {0x00A652, 0x00A652}, - {0x00A654, 0x00A654}, - {0x00A656, 0x00A656}, - {0x00A658, 0x00A658}, - {0x00A65A, 0x00A65A}, - {0x00A65C, 0x00A65C}, - {0x00A65E, 0x00A65E}, - {0x00A660, 0x00A660}, - {0x00A662, 0x00A662}, - {0x00A664, 0x00A664}, - {0x00A666, 0x00A666}, - {0x00A668, 0x00A668}, - {0x00A66A, 0x00A66A}, - {0x00A66C, 0x00A66C}, - {0x00A680, 0x00A680}, - {0x00A682, 0x00A682}, - {0x00A684, 0x00A684}, - {0x00A686, 0x00A686}, - {0x00A688, 0x00A688}, - {0x00A68A, 0x00A68A}, - {0x00A68C, 0x00A68C}, - {0x00A68E, 0x00A68E}, - {0x00A690, 0x00A690}, - {0x00A692, 0x00A692}, - {0x00A694, 0x00A694}, - {0x00A696, 0x00A696}, - {0x00A698, 0x00A698}, - {0x00A69A, 0x00A69A}, - {0x00A722, 0x00A722}, - {0x00A724, 0x00A724}, - {0x00A726, 0x00A726}, - {0x00A728, 0x00A728}, - {0x00A72A, 0x00A72A}, - {0x00A72C, 0x00A72C}, - {0x00A72E, 0x00A72E}, - {0x00A732, 0x00A732}, - {0x00A734, 0x00A734}, - {0x00A736, 0x00A736}, - {0x00A738, 0x00A738}, - {0x00A73A, 0x00A73A}, - {0x00A73C, 0x00A73C}, - {0x00A73E, 0x00A73E}, - {0x00A740, 0x00A740}, - {0x00A742, 0x00A742}, - {0x00A744, 0x00A744}, - {0x00A746, 0x00A746}, - {0x00A748, 0x00A748}, - {0x00A74A, 0x00A74A}, - {0x00A74C, 0x00A74C}, - {0x00A74E, 0x00A74E}, - {0x00A750, 0x00A750}, - {0x00A752, 0x00A752}, - {0x00A754, 0x00A754}, - {0x00A756, 0x00A756}, - {0x00A758, 0x00A758}, - {0x00A75A, 0x00A75A}, - {0x00A75C, 0x00A75C}, - {0x00A75E, 0x00A75E}, - {0x00A760, 0x00A760}, - {0x00A762, 0x00A762}, - {0x00A764, 0x00A764}, - {0x00A766, 0x00A766}, - {0x00A768, 0x00A768}, - {0x00A76A, 0x00A76A}, - {0x00A76C, 0x00A76C}, - {0x00A76E, 0x00A76E}, - {0x00A779, 0x00A779}, - {0x00A77B, 0x00A77B}, - {0x00A77D, 0x00A77E}, - {0x00A780, 0x00A780}, - {0x00A782, 0x00A782}, - {0x00A784, 0x00A784}, - {0x00A786, 0x00A786}, - {0x00A78B, 0x00A78B}, - {0x00A78D, 0x00A78D}, - {0x00A790, 0x00A790}, - {0x00A792, 0x00A792}, - {0x00A796, 0x00A796}, - {0x00A798, 0x00A798}, - {0x00A79A, 0x00A79A}, - {0x00A79C, 0x00A79C}, - {0x00A79E, 0x00A79E}, - {0x00A7A0, 0x00A7A0}, - {0x00A7A2, 0x00A7A2}, - {0x00A7A4, 0x00A7A4}, - {0x00A7A6, 0x00A7A6}, - {0x00A7A8, 0x00A7A8}, - {0x00A7AA, 0x00A7AE}, - {0x00A7B0, 0x00A7B4}, - {0x00A7B6, 0x00A7B6}, - {0x00A7B8, 0x00A7B8}, - {0x00A7BA, 0x00A7BA}, - {0x00A7BC, 0x00A7BC}, - {0x00A7BE, 0x00A7BE}, - {0x00A7C0, 0x00A7C0}, - {0x00A7C2, 0x00A7C2}, - {0x00A7C4, 0x00A7C7}, - {0x00A7C9, 0x00A7C9}, - {0x00A7D0, 0x00A7D0}, - {0x00A7D6, 0x00A7D6}, - {0x00A7D8, 0x00A7D8}, - {0x00A7F5, 0x00A7F5}, - {0x00FF21, 0x00FF3A}, - {0x010400, 0x010427}, - {0x0104B0, 0x0104D3}, - {0x010570, 0x01057A}, - {0x01057C, 0x01058A}, - {0x01058C, 0x010592}, - {0x010594, 0x010595}, - {0x010C80, 0x010CB2}, - {0x0118A0, 0x0118BF}, - {0x016E40, 0x016E5F}, - {0x01E900, 0x01E921}, -}; - -#define TYPE bool -#define TABLE lookup_tbl -#define DEFAULT false -#define HAS_VALUE 0 -#include "internal/rtype/lookup-func.h" - -bool -rune_has_prop_changes_when_lowercased(rune ch) -{ - return -#if BIT_LOOKUP - ch <= LATIN1_MAX ? (mask & ch) : -#endif - lookup(ch); -} diff --git a/vendor/librune/lib/rtype/rune_has_prop_changes_when_titlecased.c b/vendor/librune/lib/rtype/rune_has_prop_changes_when_titlecased.c deleted file mode 100644 index c136a0d..0000000 --- a/vendor/librune/lib/rtype/rune_has_prop_changes_when_titlecased.c +++ /dev/null @@ -1,656 +0,0 @@ -/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */ - -#include "rtype.h" - -#include "internal/common.h" - -#if BIT_LOOKUP -static const unsigned _BitInt(LATIN1_MAX + 1) mask = 0xFF7FFFFF80000000002000000000000007FFFFFE000000000000000000000000uwb; -#endif - -static const struct { - rune lo, hi; -} lookup_tbl[] = { - {0x000061, 0x00007A}, - {0x0000B5, 0x0000B5}, - {0x0000DF, 0x0000F6}, - {0x0000F8, 0x0000FF}, - {0x000101, 0x000101}, - {0x000103, 0x000103}, - {0x000105, 0x000105}, - {0x000107, 0x000107}, - {0x000109, 0x000109}, - {0x00010B, 0x00010B}, - {0x00010D, 0x00010D}, - {0x00010F, 0x00010F}, - {0x000111, 0x000111}, - {0x000113, 0x000113}, - {0x000115, 0x000115}, - {0x000117, 0x000117}, - {0x000119, 0x000119}, - {0x00011B, 0x00011B}, - {0x00011D, 0x00011D}, - {0x00011F, 0x00011F}, - {0x000121, 0x000121}, - {0x000123, 0x000123}, - {0x000125, 0x000125}, - {0x000127, 0x000127}, - {0x000129, 0x000129}, - {0x00012B, 0x00012B}, - {0x00012D, 0x00012D}, - {0x00012F, 0x00012F}, - {0x000131, 0x000131}, - {0x000133, 0x000133}, - {0x000135, 0x000135}, - {0x000137, 0x000137}, - {0x00013A, 0x00013A}, - {0x00013C, 0x00013C}, - {0x00013E, 0x00013E}, - {0x000140, 0x000140}, - {0x000142, 0x000142}, - {0x000144, 0x000144}, - {0x000146, 0x000146}, - {0x000148, 0x000149}, - {0x00014B, 0x00014B}, - {0x00014D, 0x00014D}, - {0x00014F, 0x00014F}, - {0x000151, 0x000151}, - {0x000153, 0x000153}, - {0x000155, 0x000155}, - {0x000157, 0x000157}, - {0x000159, 0x000159}, - {0x00015B, 0x00015B}, - {0x00015D, 0x00015D}, - {0x00015F, 0x00015F}, - {0x000161, 0x000161}, - {0x000163, 0x000163}, - {0x000165, 0x000165}, - {0x000167, 0x000167}, - {0x000169, 0x000169}, - {0x00016B, 0x00016B}, - {0x00016D, 0x00016D}, - {0x00016F, 0x00016F}, - {0x000171, 0x000171}, - {0x000173, 0x000173}, - {0x000175, 0x000175}, - {0x000177, 0x000177}, - {0x00017A, 0x00017A}, - {0x00017C, 0x00017C}, - {0x00017E, 0x000180}, - {0x000183, 0x000183}, - {0x000185, 0x000185}, - {0x000188, 0x000188}, - {0x00018C, 0x00018C}, - {0x000192, 0x000192}, - {0x000195, 0x000195}, - {0x000199, 0x00019A}, - {0x00019E, 0x00019E}, - {0x0001A1, 0x0001A1}, - {0x0001A3, 0x0001A3}, - {0x0001A5, 0x0001A5}, - {0x0001A8, 0x0001A8}, - {0x0001AD, 0x0001AD}, - {0x0001B0, 0x0001B0}, - {0x0001B4, 0x0001B4}, - {0x0001B6, 0x0001B6}, - {0x0001B9, 0x0001B9}, - {0x0001BD, 0x0001BD}, - {0x0001BF, 0x0001BF}, - {0x0001C4, 0x0001C4}, - {0x0001C6, 0x0001C7}, - {0x0001C9, 0x0001CA}, - {0x0001CC, 0x0001CC}, - {0x0001CE, 0x0001CE}, - {0x0001D0, 0x0001D0}, - {0x0001D2, 0x0001D2}, - {0x0001D4, 0x0001D4}, - {0x0001D6, 0x0001D6}, - {0x0001D8, 0x0001D8}, - {0x0001DA, 0x0001DA}, - {0x0001DC, 0x0001DD}, - {0x0001DF, 0x0001DF}, - {0x0001E1, 0x0001E1}, - {0x0001E3, 0x0001E3}, - {0x0001E5, 0x0001E5}, - {0x0001E7, 0x0001E7}, - {0x0001E9, 0x0001E9}, - {0x0001EB, 0x0001EB}, - {0x0001ED, 0x0001ED}, - {0x0001EF, 0x0001F1}, - {0x0001F3, 0x0001F3}, - {0x0001F5, 0x0001F5}, - {0x0001F9, 0x0001F9}, - {0x0001FB, 0x0001FB}, - {0x0001FD, 0x0001FD}, - {0x0001FF, 0x0001FF}, - {0x000201, 0x000201}, - {0x000203, 0x000203}, - {0x000205, 0x000205}, - {0x000207, 0x000207}, - {0x000209, 0x000209}, - {0x00020B, 0x00020B}, - {0x00020D, 0x00020D}, - {0x00020F, 0x00020F}, - {0x000211, 0x000211}, - {0x000213, 0x000213}, - {0x000215, 0x000215}, - {0x000217, 0x000217}, - {0x000219, 0x000219}, - {0x00021B, 0x00021B}, - {0x00021D, 0x00021D}, - {0x00021F, 0x00021F}, - {0x000223, 0x000223}, - {0x000225, 0x000225}, - {0x000227, 0x000227}, - {0x000229, 0x000229}, - {0x00022B, 0x00022B}, - {0x00022D, 0x00022D}, - {0x00022F, 0x00022F}, - {0x000231, 0x000231}, - {0x000233, 0x000233}, - {0x00023C, 0x00023C}, - {0x00023F, 0x000240}, - {0x000242, 0x000242}, - {0x000247, 0x000247}, - {0x000249, 0x000249}, - {0x00024B, 0x00024B}, - {0x00024D, 0x00024D}, - {0x00024F, 0x000254}, - {0x000256, 0x000257}, - {0x000259, 0x000259}, - {0x00025B, 0x00025C}, - {0x000260, 0x000261}, - {0x000263, 0x000263}, - {0x000265, 0x000266}, - {0x000268, 0x00026C}, - {0x00026F, 0x00026F}, - {0x000271, 0x000272}, - {0x000275, 0x000275}, - {0x00027D, 0x00027D}, - {0x000280, 0x000280}, - {0x000282, 0x000283}, - {0x000287, 0x00028C}, - {0x000292, 0x000292}, - {0x00029D, 0x00029E}, - {0x000345, 0x000345}, - {0x000371, 0x000371}, - {0x000373, 0x000373}, - {0x000377, 0x000377}, - {0x00037B, 0x00037D}, - {0x000390, 0x000390}, - {0x0003AC, 0x0003CE}, - {0x0003D0, 0x0003D1}, - {0x0003D5, 0x0003D7}, - {0x0003D9, 0x0003D9}, - {0x0003DB, 0x0003DB}, - {0x0003DD, 0x0003DD}, - {0x0003DF, 0x0003DF}, - {0x0003E1, 0x0003E1}, - {0x0003E3, 0x0003E3}, - {0x0003E5, 0x0003E5}, - {0x0003E7, 0x0003E7}, - {0x0003E9, 0x0003E9}, - {0x0003EB, 0x0003EB}, - {0x0003ED, 0x0003ED}, - {0x0003EF, 0x0003F3}, - {0x0003F5, 0x0003F5}, - {0x0003F8, 0x0003F8}, - {0x0003FB, 0x0003FB}, - {0x000430, 0x00045F}, - {0x000461, 0x000461}, - {0x000463, 0x000463}, - {0x000465, 0x000465}, - {0x000467, 0x000467}, - {0x000469, 0x000469}, - {0x00046B, 0x00046B}, - {0x00046D, 0x00046D}, - {0x00046F, 0x00046F}, - {0x000471, 0x000471}, - {0x000473, 0x000473}, - {0x000475, 0x000475}, - {0x000477, 0x000477}, - {0x000479, 0x000479}, - {0x00047B, 0x00047B}, - {0x00047D, 0x00047D}, - {0x00047F, 0x00047F}, - {0x000481, 0x000481}, - {0x00048B, 0x00048B}, - {0x00048D, 0x00048D}, - {0x00048F, 0x00048F}, - {0x000491, 0x000491}, - {0x000493, 0x000493}, - {0x000495, 0x000495}, - {0x000497, 0x000497}, - {0x000499, 0x000499}, - {0x00049B, 0x00049B}, - {0x00049D, 0x00049D}, - {0x00049F, 0x00049F}, - {0x0004A1, 0x0004A1}, - {0x0004A3, 0x0004A3}, - {0x0004A5, 0x0004A5}, - {0x0004A7, 0x0004A7}, - {0x0004A9, 0x0004A9}, - {0x0004AB, 0x0004AB}, - {0x0004AD, 0x0004AD}, - {0x0004AF, 0x0004AF}, - {0x0004B1, 0x0004B1}, - {0x0004B3, 0x0004B3}, - {0x0004B5, 0x0004B5}, - {0x0004B7, 0x0004B7}, - {0x0004B9, 0x0004B9}, - {0x0004BB, 0x0004BB}, - {0x0004BD, 0x0004BD}, - {0x0004BF, 0x0004BF}, - {0x0004C2, 0x0004C2}, - {0x0004C4, 0x0004C4}, - {0x0004C6, 0x0004C6}, - {0x0004C8, 0x0004C8}, - {0x0004CA, 0x0004CA}, - {0x0004CC, 0x0004CC}, - {0x0004CE, 0x0004CF}, - {0x0004D1, 0x0004D1}, - {0x0004D3, 0x0004D3}, - {0x0004D5, 0x0004D5}, - {0x0004D7, 0x0004D7}, - {0x0004D9, 0x0004D9}, - {0x0004DB, 0x0004DB}, - {0x0004DD, 0x0004DD}, - {0x0004DF, 0x0004DF}, - {0x0004E1, 0x0004E1}, - {0x0004E3, 0x0004E3}, - {0x0004E5, 0x0004E5}, - {0x0004E7, 0x0004E7}, - {0x0004E9, 0x0004E9}, - {0x0004EB, 0x0004EB}, - {0x0004ED, 0x0004ED}, - {0x0004EF, 0x0004EF}, - {0x0004F1, 0x0004F1}, - {0x0004F3, 0x0004F3}, - {0x0004F5, 0x0004F5}, - {0x0004F7, 0x0004F7}, - {0x0004F9, 0x0004F9}, - {0x0004FB, 0x0004FB}, - {0x0004FD, 0x0004FD}, - {0x0004FF, 0x0004FF}, - {0x000501, 0x000501}, - {0x000503, 0x000503}, - {0x000505, 0x000505}, - {0x000507, 0x000507}, - {0x000509, 0x000509}, - {0x00050B, 0x00050B}, - {0x00050D, 0x00050D}, - {0x00050F, 0x00050F}, - {0x000511, 0x000511}, - {0x000513, 0x000513}, - {0x000515, 0x000515}, - {0x000517, 0x000517}, - {0x000519, 0x000519}, - {0x00051B, 0x00051B}, - {0x00051D, 0x00051D}, - {0x00051F, 0x00051F}, - {0x000521, 0x000521}, - {0x000523, 0x000523}, - {0x000525, 0x000525}, - {0x000527, 0x000527}, - {0x000529, 0x000529}, - {0x00052B, 0x00052B}, - {0x00052D, 0x00052D}, - {0x00052F, 0x00052F}, - {0x000561, 0x000587}, - {0x0013F8, 0x0013FD}, - {0x001C80, 0x001C88}, - {0x001D79, 0x001D79}, - {0x001D7D, 0x001D7D}, - {0x001D8E, 0x001D8E}, - {0x001E01, 0x001E01}, - {0x001E03, 0x001E03}, - {0x001E05, 0x001E05}, - {0x001E07, 0x001E07}, - {0x001E09, 0x001E09}, - {0x001E0B, 0x001E0B}, - {0x001E0D, 0x001E0D}, - {0x001E0F, 0x001E0F}, - {0x001E11, 0x001E11}, - {0x001E13, 0x001E13}, - {0x001E15, 0x001E15}, - {0x001E17, 0x001E17}, - {0x001E19, 0x001E19}, - {0x001E1B, 0x001E1B}, - {0x001E1D, 0x001E1D}, - {0x001E1F, 0x001E1F}, - {0x001E21, 0x001E21}, - {0x001E23, 0x001E23}, - {0x001E25, 0x001E25}, - {0x001E27, 0x001E27}, - {0x001E29, 0x001E29}, - {0x001E2B, 0x001E2B}, - {0x001E2D, 0x001E2D}, - {0x001E2F, 0x001E2F}, - {0x001E31, 0x001E31}, - {0x001E33, 0x001E33}, - {0x001E35, 0x001E35}, - {0x001E37, 0x001E37}, - {0x001E39, 0x001E39}, - {0x001E3B, 0x001E3B}, - {0x001E3D, 0x001E3D}, - {0x001E3F, 0x001E3F}, - {0x001E41, 0x001E41}, - {0x001E43, 0x001E43}, - {0x001E45, 0x001E45}, - {0x001E47, 0x001E47}, - {0x001E49, 0x001E49}, - {0x001E4B, 0x001E4B}, - {0x001E4D, 0x001E4D}, - {0x001E4F, 0x001E4F}, - {0x001E51, 0x001E51}, - {0x001E53, 0x001E53}, - {0x001E55, 0x001E55}, - {0x001E57, 0x001E57}, - {0x001E59, 0x001E59}, - {0x001E5B, 0x001E5B}, - {0x001E5D, 0x001E5D}, - {0x001E5F, 0x001E5F}, - {0x001E61, 0x001E61}, - {0x001E63, 0x001E63}, - {0x001E65, 0x001E65}, - {0x001E67, 0x001E67}, - {0x001E69, 0x001E69}, - {0x001E6B, 0x001E6B}, - {0x001E6D, 0x001E6D}, - {0x001E6F, 0x001E6F}, - {0x001E71, 0x001E71}, - {0x001E73, 0x001E73}, - {0x001E75, 0x001E75}, - {0x001E77, 0x001E77}, - {0x001E79, 0x001E79}, - {0x001E7B, 0x001E7B}, - {0x001E7D, 0x001E7D}, - {0x001E7F, 0x001E7F}, - {0x001E81, 0x001E81}, - {0x001E83, 0x001E83}, - {0x001E85, 0x001E85}, - {0x001E87, 0x001E87}, - {0x001E89, 0x001E89}, - {0x001E8B, 0x001E8B}, - {0x001E8D, 0x001E8D}, - {0x001E8F, 0x001E8F}, - {0x001E91, 0x001E91}, - {0x001E93, 0x001E93}, - {0x001E95, 0x001E9B}, - {0x001EA1, 0x001EA1}, - {0x001EA3, 0x001EA3}, - {0x001EA5, 0x001EA5}, - {0x001EA7, 0x001EA7}, - {0x001EA9, 0x001EA9}, - {0x001EAB, 0x001EAB}, - {0x001EAD, 0x001EAD}, - {0x001EAF, 0x001EAF}, - {0x001EB1, 0x001EB1}, - {0x001EB3, 0x001EB3}, - {0x001EB5, 0x001EB5}, - {0x001EB7, 0x001EB7}, - {0x001EB9, 0x001EB9}, - {0x001EBB, 0x001EBB}, - {0x001EBD, 0x001EBD}, - {0x001EBF, 0x001EBF}, - {0x001EC1, 0x001EC1}, - {0x001EC3, 0x001EC3}, - {0x001EC5, 0x001EC5}, - {0x001EC7, 0x001EC7}, - {0x001EC9, 0x001EC9}, - {0x001ECB, 0x001ECB}, - {0x001ECD, 0x001ECD}, - {0x001ECF, 0x001ECF}, - {0x001ED1, 0x001ED1}, - {0x001ED3, 0x001ED3}, - {0x001ED5, 0x001ED5}, - {0x001ED7, 0x001ED7}, - {0x001ED9, 0x001ED9}, - {0x001EDB, 0x001EDB}, - {0x001EDD, 0x001EDD}, - {0x001EDF, 0x001EDF}, - {0x001EE1, 0x001EE1}, - {0x001EE3, 0x001EE3}, - {0x001EE5, 0x001EE5}, - {0x001EE7, 0x001EE7}, - {0x001EE9, 0x001EE9}, - {0x001EEB, 0x001EEB}, - {0x001EED, 0x001EED}, - {0x001EEF, 0x001EEF}, - {0x001EF1, 0x001EF1}, - {0x001EF3, 0x001EF3}, - {0x001EF5, 0x001EF5}, - {0x001EF7, 0x001EF7}, - {0x001EF9, 0x001EF9}, - {0x001EFB, 0x001EFB}, - {0x001EFD, 0x001EFD}, - {0x001EFF, 0x001F07}, - {0x001F10, 0x001F15}, - {0x001F20, 0x001F27}, - {0x001F30, 0x001F37}, - {0x001F40, 0x001F45}, - {0x001F50, 0x001F57}, - {0x001F60, 0x001F67}, - {0x001F70, 0x001F7D}, - {0x001F80, 0x001F87}, - {0x001F90, 0x001F97}, - {0x001FA0, 0x001FA7}, - {0x001FB0, 0x001FB4}, - {0x001FB6, 0x001FB7}, - {0x001FBE, 0x001FBE}, - {0x001FC2, 0x001FC4}, - {0x001FC6, 0x001FC7}, - {0x001FD0, 0x001FD3}, - {0x001FD6, 0x001FD7}, - {0x001FE0, 0x001FE7}, - {0x001FF2, 0x001FF4}, - {0x001FF6, 0x001FF7}, - {0x00214E, 0x00214E}, - {0x002170, 0x00217F}, - {0x002184, 0x002184}, - {0x0024D0, 0x0024E9}, - {0x002C30, 0x002C5F}, - {0x002C61, 0x002C61}, - {0x002C65, 0x002C66}, - {0x002C68, 0x002C68}, - {0x002C6A, 0x002C6A}, - {0x002C6C, 0x002C6C}, - {0x002C73, 0x002C73}, - {0x002C76, 0x002C76}, - {0x002C81, 0x002C81}, - {0x002C83, 0x002C83}, - {0x002C85, 0x002C85}, - {0x002C87, 0x002C87}, - {0x002C89, 0x002C89}, - {0x002C8B, 0x002C8B}, - {0x002C8D, 0x002C8D}, - {0x002C8F, 0x002C8F}, - {0x002C91, 0x002C91}, - {0x002C93, 0x002C93}, - {0x002C95, 0x002C95}, - {0x002C97, 0x002C97}, - {0x002C99, 0x002C99}, - {0x002C9B, 0x002C9B}, - {0x002C9D, 0x002C9D}, - {0x002C9F, 0x002C9F}, - {0x002CA1, 0x002CA1}, - {0x002CA3, 0x002CA3}, - {0x002CA5, 0x002CA5}, - {0x002CA7, 0x002CA7}, - {0x002CA9, 0x002CA9}, - {0x002CAB, 0x002CAB}, - {0x002CAD, 0x002CAD}, - {0x002CAF, 0x002CAF}, - {0x002CB1, 0x002CB1}, - {0x002CB3, 0x002CB3}, - {0x002CB5, 0x002CB5}, - {0x002CB7, 0x002CB7}, - {0x002CB9, 0x002CB9}, - {0x002CBB, 0x002CBB}, - {0x002CBD, 0x002CBD}, - {0x002CBF, 0x002CBF}, - {0x002CC1, 0x002CC1}, - {0x002CC3, 0x002CC3}, - {0x002CC5, 0x002CC5}, - {0x002CC7, 0x002CC7}, - {0x002CC9, 0x002CC9}, - {0x002CCB, 0x002CCB}, - {0x002CCD, 0x002CCD}, - {0x002CCF, 0x002CCF}, - {0x002CD1, 0x002CD1}, - {0x002CD3, 0x002CD3}, - {0x002CD5, 0x002CD5}, - {0x002CD7, 0x002CD7}, - {0x002CD9, 0x002CD9}, - {0x002CDB, 0x002CDB}, - {0x002CDD, 0x002CDD}, - {0x002CDF, 0x002CDF}, - {0x002CE1, 0x002CE1}, - {0x002CE3, 0x002CE3}, - {0x002CEC, 0x002CEC}, - {0x002CEE, 0x002CEE}, - {0x002CF3, 0x002CF3}, - {0x002D00, 0x002D25}, - {0x002D27, 0x002D27}, - {0x002D2D, 0x002D2D}, - {0x00A641, 0x00A641}, - {0x00A643, 0x00A643}, - {0x00A645, 0x00A645}, - {0x00A647, 0x00A647}, - {0x00A649, 0x00A649}, - {0x00A64B, 0x00A64B}, - {0x00A64D, 0x00A64D}, - {0x00A64F, 0x00A64F}, - {0x00A651, 0x00A651}, - {0x00A653, 0x00A653}, - {0x00A655, 0x00A655}, - {0x00A657, 0x00A657}, - {0x00A659, 0x00A659}, - {0x00A65B, 0x00A65B}, - {0x00A65D, 0x00A65D}, - {0x00A65F, 0x00A65F}, - {0x00A661, 0x00A661}, - {0x00A663, 0x00A663}, - {0x00A665, 0x00A665}, - {0x00A667, 0x00A667}, - {0x00A669, 0x00A669}, - {0x00A66B, 0x00A66B}, - {0x00A66D, 0x00A66D}, - {0x00A681, 0x00A681}, - {0x00A683, 0x00A683}, - {0x00A685, 0x00A685}, - {0x00A687, 0x00A687}, - {0x00A689, 0x00A689}, - {0x00A68B, 0x00A68B}, - {0x00A68D, 0x00A68D}, - {0x00A68F, 0x00A68F}, - {0x00A691, 0x00A691}, - {0x00A693, 0x00A693}, - {0x00A695, 0x00A695}, - {0x00A697, 0x00A697}, - {0x00A699, 0x00A699}, - {0x00A69B, 0x00A69B}, - {0x00A723, 0x00A723}, - {0x00A725, 0x00A725}, - {0x00A727, 0x00A727}, - {0x00A729, 0x00A729}, - {0x00A72B, 0x00A72B}, - {0x00A72D, 0x00A72D}, - {0x00A72F, 0x00A72F}, - {0x00A733, 0x00A733}, - {0x00A735, 0x00A735}, - {0x00A737, 0x00A737}, - {0x00A739, 0x00A739}, - {0x00A73B, 0x00A73B}, - {0x00A73D, 0x00A73D}, - {0x00A73F, 0x00A73F}, - {0x00A741, 0x00A741}, - {0x00A743, 0x00A743}, - {0x00A745, 0x00A745}, - {0x00A747, 0x00A747}, - {0x00A749, 0x00A749}, - {0x00A74B, 0x00A74B}, - {0x00A74D, 0x00A74D}, - {0x00A74F, 0x00A74F}, - {0x00A751, 0x00A751}, - {0x00A753, 0x00A753}, - {0x00A755, 0x00A755}, - {0x00A757, 0x00A757}, - {0x00A759, 0x00A759}, - {0x00A75B, 0x00A75B}, - {0x00A75D, 0x00A75D}, - {0x00A75F, 0x00A75F}, - {0x00A761, 0x00A761}, - {0x00A763, 0x00A763}, - {0x00A765, 0x00A765}, - {0x00A767, 0x00A767}, - {0x00A769, 0x00A769}, - {0x00A76B, 0x00A76B}, - {0x00A76D, 0x00A76D}, - {0x00A76F, 0x00A76F}, - {0x00A77A, 0x00A77A}, - {0x00A77C, 0x00A77C}, - {0x00A77F, 0x00A77F}, - {0x00A781, 0x00A781}, - {0x00A783, 0x00A783}, - {0x00A785, 0x00A785}, - {0x00A787, 0x00A787}, - {0x00A78C, 0x00A78C}, - {0x00A791, 0x00A791}, - {0x00A793, 0x00A794}, - {0x00A797, 0x00A797}, - {0x00A799, 0x00A799}, - {0x00A79B, 0x00A79B}, - {0x00A79D, 0x00A79D}, - {0x00A79F, 0x00A79F}, - {0x00A7A1, 0x00A7A1}, - {0x00A7A3, 0x00A7A3}, - {0x00A7A5, 0x00A7A5}, - {0x00A7A7, 0x00A7A7}, - {0x00A7A9, 0x00A7A9}, - {0x00A7B5, 0x00A7B5}, - {0x00A7B7, 0x00A7B7}, - {0x00A7B9, 0x00A7B9}, - {0x00A7BB, 0x00A7BB}, - {0x00A7BD, 0x00A7BD}, - {0x00A7BF, 0x00A7BF}, - {0x00A7C1, 0x00A7C1}, - {0x00A7C3, 0x00A7C3}, - {0x00A7C8, 0x00A7C8}, - {0x00A7CA, 0x00A7CA}, - {0x00A7D1, 0x00A7D1}, - {0x00A7D7, 0x00A7D7}, - {0x00A7D9, 0x00A7D9}, - {0x00A7F6, 0x00A7F6}, - {0x00AB53, 0x00AB53}, - {0x00AB70, 0x00ABBF}, - {0x00FB00, 0x00FB06}, - {0x00FB13, 0x00FB17}, - {0x00FF41, 0x00FF5A}, - {0x010428, 0x01044F}, - {0x0104D8, 0x0104FB}, - {0x010597, 0x0105A1}, - {0x0105A3, 0x0105B1}, - {0x0105B3, 0x0105B9}, - {0x0105BB, 0x0105BC}, - {0x010CC0, 0x010CF2}, - {0x0118C0, 0x0118DF}, - {0x016E60, 0x016E7F}, - {0x01E922, 0x01E943}, -}; - -#define TYPE bool -#define TABLE lookup_tbl -#define DEFAULT false -#define HAS_VALUE 0 -#include "internal/rtype/lookup-func.h" - -bool -rune_has_prop_changes_when_titlecased(rune ch) -{ - return -#if BIT_LOOKUP - ch <= LATIN1_MAX ? (mask & ch) : -#endif - lookup(ch); -} diff --git a/vendor/librune/lib/rtype/rune_has_prop_changes_when_uppercased.c b/vendor/librune/lib/rtype/rune_has_prop_changes_when_uppercased.c deleted file mode 100644 index 993cbca..0000000 --- a/vendor/librune/lib/rtype/rune_has_prop_changes_when_uppercased.c +++ /dev/null @@ -1,657 +0,0 @@ -/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */ - -#include "rtype.h" - -#include "internal/common.h" - -#if BIT_LOOKUP -static const unsigned _BitInt(LATIN1_MAX + 1) mask = 0xFF7FFFFF80000000002000000000000007FFFFFE000000000000000000000000uwb; -#endif - -static const struct { - rune lo, hi; -} lookup_tbl[] = { - {0x000061, 0x00007A}, - {0x0000B5, 0x0000B5}, - {0x0000DF, 0x0000F6}, - {0x0000F8, 0x0000FF}, - {0x000101, 0x000101}, - {0x000103, 0x000103}, - {0x000105, 0x000105}, - {0x000107, 0x000107}, - {0x000109, 0x000109}, - {0x00010B, 0x00010B}, - {0x00010D, 0x00010D}, - {0x00010F, 0x00010F}, - {0x000111, 0x000111}, - {0x000113, 0x000113}, - {0x000115, 0x000115}, - {0x000117, 0x000117}, - {0x000119, 0x000119}, - {0x00011B, 0x00011B}, - {0x00011D, 0x00011D}, - {0x00011F, 0x00011F}, - {0x000121, 0x000121}, - {0x000123, 0x000123}, - {0x000125, 0x000125}, - {0x000127, 0x000127}, - {0x000129, 0x000129}, - {0x00012B, 0x00012B}, - {0x00012D, 0x00012D}, - {0x00012F, 0x00012F}, - {0x000131, 0x000131}, - {0x000133, 0x000133}, - {0x000135, 0x000135}, - {0x000137, 0x000137}, - {0x00013A, 0x00013A}, - {0x00013C, 0x00013C}, - {0x00013E, 0x00013E}, - {0x000140, 0x000140}, - {0x000142, 0x000142}, - {0x000144, 0x000144}, - {0x000146, 0x000146}, - {0x000148, 0x000149}, - {0x00014B, 0x00014B}, - {0x00014D, 0x00014D}, - {0x00014F, 0x00014F}, - {0x000151, 0x000151}, - {0x000153, 0x000153}, - {0x000155, 0x000155}, - {0x000157, 0x000157}, - {0x000159, 0x000159}, - {0x00015B, 0x00015B}, - {0x00015D, 0x00015D}, - {0x00015F, 0x00015F}, - {0x000161, 0x000161}, - {0x000163, 0x000163}, - {0x000165, 0x000165}, - {0x000167, 0x000167}, - {0x000169, 0x000169}, - {0x00016B, 0x00016B}, - {0x00016D, 0x00016D}, - {0x00016F, 0x00016F}, - {0x000171, 0x000171}, - {0x000173, 0x000173}, - {0x000175, 0x000175}, - {0x000177, 0x000177}, - {0x00017A, 0x00017A}, - {0x00017C, 0x00017C}, - {0x00017E, 0x000180}, - {0x000183, 0x000183}, - {0x000185, 0x000185}, - {0x000188, 0x000188}, - {0x00018C, 0x00018C}, - {0x000192, 0x000192}, - {0x000195, 0x000195}, - {0x000199, 0x00019A}, - {0x00019E, 0x00019E}, - {0x0001A1, 0x0001A1}, - {0x0001A3, 0x0001A3}, - {0x0001A5, 0x0001A5}, - {0x0001A8, 0x0001A8}, - {0x0001AD, 0x0001AD}, - {0x0001B0, 0x0001B0}, - {0x0001B4, 0x0001B4}, - {0x0001B6, 0x0001B6}, - {0x0001B9, 0x0001B9}, - {0x0001BD, 0x0001BD}, - {0x0001BF, 0x0001BF}, - {0x0001C5, 0x0001C6}, - {0x0001C8, 0x0001C9}, - {0x0001CB, 0x0001CC}, - {0x0001CE, 0x0001CE}, - {0x0001D0, 0x0001D0}, - {0x0001D2, 0x0001D2}, - {0x0001D4, 0x0001D4}, - {0x0001D6, 0x0001D6}, - {0x0001D8, 0x0001D8}, - {0x0001DA, 0x0001DA}, - {0x0001DC, 0x0001DD}, - {0x0001DF, 0x0001DF}, - {0x0001E1, 0x0001E1}, - {0x0001E3, 0x0001E3}, - {0x0001E5, 0x0001E5}, - {0x0001E7, 0x0001E7}, - {0x0001E9, 0x0001E9}, - {0x0001EB, 0x0001EB}, - {0x0001ED, 0x0001ED}, - {0x0001EF, 0x0001F0}, - {0x0001F2, 0x0001F3}, - {0x0001F5, 0x0001F5}, - {0x0001F9, 0x0001F9}, - {0x0001FB, 0x0001FB}, - {0x0001FD, 0x0001FD}, - {0x0001FF, 0x0001FF}, - {0x000201, 0x000201}, - {0x000203, 0x000203}, - {0x000205, 0x000205}, - {0x000207, 0x000207}, - {0x000209, 0x000209}, - {0x00020B, 0x00020B}, - {0x00020D, 0x00020D}, - {0x00020F, 0x00020F}, - {0x000211, 0x000211}, - {0x000213, 0x000213}, - {0x000215, 0x000215}, - {0x000217, 0x000217}, - {0x000219, 0x000219}, - {0x00021B, 0x00021B}, - {0x00021D, 0x00021D}, - {0x00021F, 0x00021F}, - {0x000223, 0x000223}, - {0x000225, 0x000225}, - {0x000227, 0x000227}, - {0x000229, 0x000229}, - {0x00022B, 0x00022B}, - {0x00022D, 0x00022D}, - {0x00022F, 0x00022F}, - {0x000231, 0x000231}, - {0x000233, 0x000233}, - {0x00023C, 0x00023C}, - {0x00023F, 0x000240}, - {0x000242, 0x000242}, - {0x000247, 0x000247}, - {0x000249, 0x000249}, - {0x00024B, 0x00024B}, - {0x00024D, 0x00024D}, - {0x00024F, 0x000254}, - {0x000256, 0x000257}, - {0x000259, 0x000259}, - {0x00025B, 0x00025C}, - {0x000260, 0x000261}, - {0x000263, 0x000263}, - {0x000265, 0x000266}, - {0x000268, 0x00026C}, - {0x00026F, 0x00026F}, - {0x000271, 0x000272}, - {0x000275, 0x000275}, - {0x00027D, 0x00027D}, - {0x000280, 0x000280}, - {0x000282, 0x000283}, - {0x000287, 0x00028C}, - {0x000292, 0x000292}, - {0x00029D, 0x00029E}, - {0x000345, 0x000345}, - {0x000371, 0x000371}, - {0x000373, 0x000373}, - {0x000377, 0x000377}, - {0x00037B, 0x00037D}, - {0x000390, 0x000390}, - {0x0003AC, 0x0003CE}, - {0x0003D0, 0x0003D1}, - {0x0003D5, 0x0003D7}, - {0x0003D9, 0x0003D9}, - {0x0003DB, 0x0003DB}, - {0x0003DD, 0x0003DD}, - {0x0003DF, 0x0003DF}, - {0x0003E1, 0x0003E1}, - {0x0003E3, 0x0003E3}, - {0x0003E5, 0x0003E5}, - {0x0003E7, 0x0003E7}, - {0x0003E9, 0x0003E9}, - {0x0003EB, 0x0003EB}, - {0x0003ED, 0x0003ED}, - {0x0003EF, 0x0003F3}, - {0x0003F5, 0x0003F5}, - {0x0003F8, 0x0003F8}, - {0x0003FB, 0x0003FB}, - {0x000430, 0x00045F}, - {0x000461, 0x000461}, - {0x000463, 0x000463}, - {0x000465, 0x000465}, - {0x000467, 0x000467}, - {0x000469, 0x000469}, - {0x00046B, 0x00046B}, - {0x00046D, 0x00046D}, - {0x00046F, 0x00046F}, - {0x000471, 0x000471}, - {0x000473, 0x000473}, - {0x000475, 0x000475}, - {0x000477, 0x000477}, - {0x000479, 0x000479}, - {0x00047B, 0x00047B}, - {0x00047D, 0x00047D}, - {0x00047F, 0x00047F}, - {0x000481, 0x000481}, - {0x00048B, 0x00048B}, - {0x00048D, 0x00048D}, - {0x00048F, 0x00048F}, - {0x000491, 0x000491}, - {0x000493, 0x000493}, - {0x000495, 0x000495}, - {0x000497, 0x000497}, - {0x000499, 0x000499}, - {0x00049B, 0x00049B}, - {0x00049D, 0x00049D}, - {0x00049F, 0x00049F}, - {0x0004A1, 0x0004A1}, - {0x0004A3, 0x0004A3}, - {0x0004A5, 0x0004A5}, - {0x0004A7, 0x0004A7}, - {0x0004A9, 0x0004A9}, - {0x0004AB, 0x0004AB}, - {0x0004AD, 0x0004AD}, - {0x0004AF, 0x0004AF}, - {0x0004B1, 0x0004B1}, - {0x0004B3, 0x0004B3}, - {0x0004B5, 0x0004B5}, - {0x0004B7, 0x0004B7}, - {0x0004B9, 0x0004B9}, - {0x0004BB, 0x0004BB}, - {0x0004BD, 0x0004BD}, - {0x0004BF, 0x0004BF}, - {0x0004C2, 0x0004C2}, - {0x0004C4, 0x0004C4}, - {0x0004C6, 0x0004C6}, - {0x0004C8, 0x0004C8}, - {0x0004CA, 0x0004CA}, - {0x0004CC, 0x0004CC}, - {0x0004CE, 0x0004CF}, - {0x0004D1, 0x0004D1}, - {0x0004D3, 0x0004D3}, - {0x0004D5, 0x0004D5}, - {0x0004D7, 0x0004D7}, - {0x0004D9, 0x0004D9}, - {0x0004DB, 0x0004DB}, - {0x0004DD, 0x0004DD}, - {0x0004DF, 0x0004DF}, - {0x0004E1, 0x0004E1}, - {0x0004E3, 0x0004E3}, - {0x0004E5, 0x0004E5}, - {0x0004E7, 0x0004E7}, - {0x0004E9, 0x0004E9}, - {0x0004EB, 0x0004EB}, - {0x0004ED, 0x0004ED}, - {0x0004EF, 0x0004EF}, - {0x0004F1, 0x0004F1}, - {0x0004F3, 0x0004F3}, - {0x0004F5, 0x0004F5}, - {0x0004F7, 0x0004F7}, - {0x0004F9, 0x0004F9}, - {0x0004FB, 0x0004FB}, - {0x0004FD, 0x0004FD}, - {0x0004FF, 0x0004FF}, - {0x000501, 0x000501}, - {0x000503, 0x000503}, - {0x000505, 0x000505}, - {0x000507, 0x000507}, - {0x000509, 0x000509}, - {0x00050B, 0x00050B}, - {0x00050D, 0x00050D}, - {0x00050F, 0x00050F}, - {0x000511, 0x000511}, - {0x000513, 0x000513}, - {0x000515, 0x000515}, - {0x000517, 0x000517}, - {0x000519, 0x000519}, - {0x00051B, 0x00051B}, - {0x00051D, 0x00051D}, - {0x00051F, 0x00051F}, - {0x000521, 0x000521}, - {0x000523, 0x000523}, - {0x000525, 0x000525}, - {0x000527, 0x000527}, - {0x000529, 0x000529}, - {0x00052B, 0x00052B}, - {0x00052D, 0x00052D}, - {0x00052F, 0x00052F}, - {0x000561, 0x000587}, - {0x0010D0, 0x0010FA}, - {0x0010FD, 0x0010FF}, - {0x0013F8, 0x0013FD}, - {0x001C80, 0x001C88}, - {0x001D79, 0x001D79}, - {0x001D7D, 0x001D7D}, - {0x001D8E, 0x001D8E}, - {0x001E01, 0x001E01}, - {0x001E03, 0x001E03}, - {0x001E05, 0x001E05}, - {0x001E07, 0x001E07}, - {0x001E09, 0x001E09}, - {0x001E0B, 0x001E0B}, - {0x001E0D, 0x001E0D}, - {0x001E0F, 0x001E0F}, - {0x001E11, 0x001E11}, - {0x001E13, 0x001E13}, - {0x001E15, 0x001E15}, - {0x001E17, 0x001E17}, - {0x001E19, 0x001E19}, - {0x001E1B, 0x001E1B}, - {0x001E1D, 0x001E1D}, - {0x001E1F, 0x001E1F}, - {0x001E21, 0x001E21}, - {0x001E23, 0x001E23}, - {0x001E25, 0x001E25}, - {0x001E27, 0x001E27}, - {0x001E29, 0x001E29}, - {0x001E2B, 0x001E2B}, - {0x001E2D, 0x001E2D}, - {0x001E2F, 0x001E2F}, - {0x001E31, 0x001E31}, - {0x001E33, 0x001E33}, - {0x001E35, 0x001E35}, - {0x001E37, 0x001E37}, - {0x001E39, 0x001E39}, - {0x001E3B, 0x001E3B}, - {0x001E3D, 0x001E3D}, - {0x001E3F, 0x001E3F}, - {0x001E41, 0x001E41}, - {0x001E43, 0x001E43}, - {0x001E45, 0x001E45}, - {0x001E47, 0x001E47}, - {0x001E49, 0x001E49}, - {0x001E4B, 0x001E4B}, - {0x001E4D, 0x001E4D}, - {0x001E4F, 0x001E4F}, - {0x001E51, 0x001E51}, - {0x001E53, 0x001E53}, - {0x001E55, 0x001E55}, - {0x001E57, 0x001E57}, - {0x001E59, 0x001E59}, - {0x001E5B, 0x001E5B}, - {0x001E5D, 0x001E5D}, - {0x001E5F, 0x001E5F}, - {0x001E61, 0x001E61}, - {0x001E63, 0x001E63}, - {0x001E65, 0x001E65}, - {0x001E67, 0x001E67}, - {0x001E69, 0x001E69}, - {0x001E6B, 0x001E6B}, - {0x001E6D, 0x001E6D}, - {0x001E6F, 0x001E6F}, - {0x001E71, 0x001E71}, - {0x001E73, 0x001E73}, - {0x001E75, 0x001E75}, - {0x001E77, 0x001E77}, - {0x001E79, 0x001E79}, - {0x001E7B, 0x001E7B}, - {0x001E7D, 0x001E7D}, - {0x001E7F, 0x001E7F}, - {0x001E81, 0x001E81}, - {0x001E83, 0x001E83}, - {0x001E85, 0x001E85}, - {0x001E87, 0x001E87}, - {0x001E89, 0x001E89}, - {0x001E8B, 0x001E8B}, - {0x001E8D, 0x001E8D}, - {0x001E8F, 0x001E8F}, - {0x001E91, 0x001E91}, - {0x001E93, 0x001E93}, - {0x001E95, 0x001E9B}, - {0x001EA1, 0x001EA1}, - {0x001EA3, 0x001EA3}, - {0x001EA5, 0x001EA5}, - {0x001EA7, 0x001EA7}, - {0x001EA9, 0x001EA9}, - {0x001EAB, 0x001EAB}, - {0x001EAD, 0x001EAD}, - {0x001EAF, 0x001EAF}, - {0x001EB1, 0x001EB1}, - {0x001EB3, 0x001EB3}, - {0x001EB5, 0x001EB5}, - {0x001EB7, 0x001EB7}, - {0x001EB9, 0x001EB9}, - {0x001EBB, 0x001EBB}, - {0x001EBD, 0x001EBD}, - {0x001EBF, 0x001EBF}, - {0x001EC1, 0x001EC1}, - {0x001EC3, 0x001EC3}, - {0x001EC5, 0x001EC5}, - {0x001EC7, 0x001EC7}, - {0x001EC9, 0x001EC9}, - {0x001ECB, 0x001ECB}, - {0x001ECD, 0x001ECD}, - {0x001ECF, 0x001ECF}, - {0x001ED1, 0x001ED1}, - {0x001ED3, 0x001ED3}, - {0x001ED5, 0x001ED5}, - {0x001ED7, 0x001ED7}, - {0x001ED9, 0x001ED9}, - {0x001EDB, 0x001EDB}, - {0x001EDD, 0x001EDD}, - {0x001EDF, 0x001EDF}, - {0x001EE1, 0x001EE1}, - {0x001EE3, 0x001EE3}, - {0x001EE5, 0x001EE5}, - {0x001EE7, 0x001EE7}, - {0x001EE9, 0x001EE9}, - {0x001EEB, 0x001EEB}, - {0x001EED, 0x001EED}, - {0x001EEF, 0x001EEF}, - {0x001EF1, 0x001EF1}, - {0x001EF3, 0x001EF3}, - {0x001EF5, 0x001EF5}, - {0x001EF7, 0x001EF7}, - {0x001EF9, 0x001EF9}, - {0x001EFB, 0x001EFB}, - {0x001EFD, 0x001EFD}, - {0x001EFF, 0x001F07}, - {0x001F10, 0x001F15}, - {0x001F20, 0x001F27}, - {0x001F30, 0x001F37}, - {0x001F40, 0x001F45}, - {0x001F50, 0x001F57}, - {0x001F60, 0x001F67}, - {0x001F70, 0x001F7D}, - {0x001F80, 0x001FB4}, - {0x001FB6, 0x001FB7}, - {0x001FBC, 0x001FBC}, - {0x001FBE, 0x001FBE}, - {0x001FC2, 0x001FC4}, - {0x001FC6, 0x001FC7}, - {0x001FCC, 0x001FCC}, - {0x001FD0, 0x001FD3}, - {0x001FD6, 0x001FD7}, - {0x001FE0, 0x001FE7}, - {0x001FF2, 0x001FF4}, - {0x001FF6, 0x001FF7}, - {0x001FFC, 0x001FFC}, - {0x00214E, 0x00214E}, - {0x002170, 0x00217F}, - {0x002184, 0x002184}, - {0x0024D0, 0x0024E9}, - {0x002C30, 0x002C5F}, - {0x002C61, 0x002C61}, - {0x002C65, 0x002C66}, - {0x002C68, 0x002C68}, - {0x002C6A, 0x002C6A}, - {0x002C6C, 0x002C6C}, - {0x002C73, 0x002C73}, - {0x002C76, 0x002C76}, - {0x002C81, 0x002C81}, - {0x002C83, 0x002C83}, - {0x002C85, 0x002C85}, - {0x002C87, 0x002C87}, - {0x002C89, 0x002C89}, - {0x002C8B, 0x002C8B}, - {0x002C8D, 0x002C8D}, - {0x002C8F, 0x002C8F}, - {0x002C91, 0x002C91}, - {0x002C93, 0x002C93}, - {0x002C95, 0x002C95}, - {0x002C97, 0x002C97}, - {0x002C99, 0x002C99}, - {0x002C9B, 0x002C9B}, - {0x002C9D, 0x002C9D}, - {0x002C9F, 0x002C9F}, - {0x002CA1, 0x002CA1}, - {0x002CA3, 0x002CA3}, - {0x002CA5, 0x002CA5}, - {0x002CA7, 0x002CA7}, - {0x002CA9, 0x002CA9}, - {0x002CAB, 0x002CAB}, - {0x002CAD, 0x002CAD}, - {0x002CAF, 0x002CAF}, - {0x002CB1, 0x002CB1}, - {0x002CB3, 0x002CB3}, - {0x002CB5, 0x002CB5}, - {0x002CB7, 0x002CB7}, - {0x002CB9, 0x002CB9}, - {0x002CBB, 0x002CBB}, - {0x002CBD, 0x002CBD}, - {0x002CBF, 0x002CBF}, - {0x002CC1, 0x002CC1}, - {0x002CC3, 0x002CC3}, - {0x002CC5, 0x002CC5}, - {0x002CC7, 0x002CC7}, - {0x002CC9, 0x002CC9}, - {0x002CCB, 0x002CCB}, - {0x002CCD, 0x002CCD}, - {0x002CCF, 0x002CCF}, - {0x002CD1, 0x002CD1}, - {0x002CD3, 0x002CD3}, - {0x002CD5, 0x002CD5}, - {0x002CD7, 0x002CD7}, - {0x002CD9, 0x002CD9}, - {0x002CDB, 0x002CDB}, - {0x002CDD, 0x002CDD}, - {0x002CDF, 0x002CDF}, - {0x002CE1, 0x002CE1}, - {0x002CE3, 0x002CE3}, - {0x002CEC, 0x002CEC}, - {0x002CEE, 0x002CEE}, - {0x002CF3, 0x002CF3}, - {0x002D00, 0x002D25}, - {0x002D27, 0x002D27}, - {0x002D2D, 0x002D2D}, - {0x00A641, 0x00A641}, - {0x00A643, 0x00A643}, - {0x00A645, 0x00A645}, - {0x00A647, 0x00A647}, - {0x00A649, 0x00A649}, - {0x00A64B, 0x00A64B}, - {0x00A64D, 0x00A64D}, - {0x00A64F, 0x00A64F}, - {0x00A651, 0x00A651}, - {0x00A653, 0x00A653}, - {0x00A655, 0x00A655}, - {0x00A657, 0x00A657}, - {0x00A659, 0x00A659}, - {0x00A65B, 0x00A65B}, - {0x00A65D, 0x00A65D}, - {0x00A65F, 0x00A65F}, - {0x00A661, 0x00A661}, - {0x00A663, 0x00A663}, - {0x00A665, 0x00A665}, - {0x00A667, 0x00A667}, - {0x00A669, 0x00A669}, - {0x00A66B, 0x00A66B}, - {0x00A66D, 0x00A66D}, - {0x00A681, 0x00A681}, - {0x00A683, 0x00A683}, - {0x00A685, 0x00A685}, - {0x00A687, 0x00A687}, - {0x00A689, 0x00A689}, - {0x00A68B, 0x00A68B}, - {0x00A68D, 0x00A68D}, - {0x00A68F, 0x00A68F}, - {0x00A691, 0x00A691}, - {0x00A693, 0x00A693}, - {0x00A695, 0x00A695}, - {0x00A697, 0x00A697}, - {0x00A699, 0x00A699}, - {0x00A69B, 0x00A69B}, - {0x00A723, 0x00A723}, - {0x00A725, 0x00A725}, - {0x00A727, 0x00A727}, - {0x00A729, 0x00A729}, - {0x00A72B, 0x00A72B}, - {0x00A72D, 0x00A72D}, - {0x00A72F, 0x00A72F}, - {0x00A733, 0x00A733}, - {0x00A735, 0x00A735}, - {0x00A737, 0x00A737}, - {0x00A739, 0x00A739}, - {0x00A73B, 0x00A73B}, - {0x00A73D, 0x00A73D}, - {0x00A73F, 0x00A73F}, - {0x00A741, 0x00A741}, - {0x00A743, 0x00A743}, - {0x00A745, 0x00A745}, - {0x00A747, 0x00A747}, - {0x00A749, 0x00A749}, - {0x00A74B, 0x00A74B}, - {0x00A74D, 0x00A74D}, - {0x00A74F, 0x00A74F}, - {0x00A751, 0x00A751}, - {0x00A753, 0x00A753}, - {0x00A755, 0x00A755}, - {0x00A757, 0x00A757}, - {0x00A759, 0x00A759}, - {0x00A75B, 0x00A75B}, - {0x00A75D, 0x00A75D}, - {0x00A75F, 0x00A75F}, - {0x00A761, 0x00A761}, - {0x00A763, 0x00A763}, - {0x00A765, 0x00A765}, - {0x00A767, 0x00A767}, - {0x00A769, 0x00A769}, - {0x00A76B, 0x00A76B}, - {0x00A76D, 0x00A76D}, - {0x00A76F, 0x00A76F}, - {0x00A77A, 0x00A77A}, - {0x00A77C, 0x00A77C}, - {0x00A77F, 0x00A77F}, - {0x00A781, 0x00A781}, - {0x00A783, 0x00A783}, - {0x00A785, 0x00A785}, - {0x00A787, 0x00A787}, - {0x00A78C, 0x00A78C}, - {0x00A791, 0x00A791}, - {0x00A793, 0x00A794}, - {0x00A797, 0x00A797}, - {0x00A799, 0x00A799}, - {0x00A79B, 0x00A79B}, - {0x00A79D, 0x00A79D}, - {0x00A79F, 0x00A79F}, - {0x00A7A1, 0x00A7A1}, - {0x00A7A3, 0x00A7A3}, - {0x00A7A5, 0x00A7A5}, - {0x00A7A7, 0x00A7A7}, - {0x00A7A9, 0x00A7A9}, - {0x00A7B5, 0x00A7B5}, - {0x00A7B7, 0x00A7B7}, - {0x00A7B9, 0x00A7B9}, - {0x00A7BB, 0x00A7BB}, - {0x00A7BD, 0x00A7BD}, - {0x00A7BF, 0x00A7BF}, - {0x00A7C1, 0x00A7C1}, - {0x00A7C3, 0x00A7C3}, - {0x00A7C8, 0x00A7C8}, - {0x00A7CA, 0x00A7CA}, - {0x00A7D1, 0x00A7D1}, - {0x00A7D7, 0x00A7D7}, - {0x00A7D9, 0x00A7D9}, - {0x00A7F6, 0x00A7F6}, - {0x00AB53, 0x00AB53}, - {0x00AB70, 0x00ABBF}, - {0x00FB00, 0x00FB06}, - {0x00FB13, 0x00FB17}, - {0x00FF41, 0x00FF5A}, - {0x010428, 0x01044F}, - {0x0104D8, 0x0104FB}, - {0x010597, 0x0105A1}, - {0x0105A3, 0x0105B1}, - {0x0105B3, 0x0105B9}, - {0x0105BB, 0x0105BC}, - {0x010CC0, 0x010CF2}, - {0x0118C0, 0x0118DF}, - {0x016E60, 0x016E7F}, - {0x01E922, 0x01E943}, -}; - -#define TYPE bool -#define TABLE lookup_tbl -#define DEFAULT false -#define HAS_VALUE 0 -#include "internal/rtype/lookup-func.h" - -bool -rune_has_prop_changes_when_uppercased(rune ch) -{ - return -#if BIT_LOOKUP - ch <= LATIN1_MAX ? (mask & ch) : -#endif - lookup(ch); -} diff --git a/vendor/librune/lib/rtype/rune_has_prop_dash.c b/vendor/librune/lib/rtype/rune_has_prop_dash.c deleted file mode 100644 index 248eb00..0000000 --- a/vendor/librune/lib/rtype/rune_has_prop_dash.c +++ /dev/null @@ -1,53 +0,0 @@ -/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */ - -#include "rtype.h" - -#include "internal/common.h" - -#if BIT_LOOKUP -static const unsigned _BitInt(LATIN1_MAX + 1) mask = 0x200000000000uwb; -#endif - -static const struct { - rune lo, hi; -} lookup_tbl[] = { - {0x00002D, 0x00002D}, - {0x00058A, 0x00058A}, - {0x0005BE, 0x0005BE}, - {0x001400, 0x001400}, - {0x001806, 0x001806}, - {0x002010, 0x002015}, - {0x002053, 0x002053}, - {0x00207B, 0x00207B}, - {0x00208B, 0x00208B}, - {0x002212, 0x002212}, - {0x002E17, 0x002E17}, - {0x002E1A, 0x002E1A}, - {0x002E3A, 0x002E3B}, - {0x002E40, 0x002E40}, - {0x002E5D, 0x002E5D}, - {0x00301C, 0x00301C}, - {0x003030, 0x003030}, - {0x0030A0, 0x0030A0}, - {0x00FE31, 0x00FE32}, - {0x00FE58, 0x00FE58}, - {0x00FE63, 0x00FE63}, - {0x00FF0D, 0x00FF0D}, - {0x010EAD, 0x010EAD}, -}; - -#define TYPE bool -#define TABLE lookup_tbl -#define DEFAULT false -#define HAS_VALUE 0 -#include "internal/rtype/lookup-func.h" - -bool -rune_has_prop_dash(rune ch) -{ - return -#if BIT_LOOKUP - ch <= LATIN1_MAX ? (mask & ch) : -#endif - lookup(ch); -} diff --git a/vendor/librune/lib/rtype/rune_has_prop_default_ignorable_code_point.c b/vendor/librune/lib/rtype/rune_has_prop_default_ignorable_code_point.c deleted file mode 100644 index bf0f850..0000000 --- a/vendor/librune/lib/rtype/rune_has_prop_default_ignorable_code_point.c +++ /dev/null @@ -1,47 +0,0 @@ -/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */ - -#include "rtype.h" - -#include "internal/common.h" - -#if BIT_LOOKUP -static const unsigned _BitInt(LATIN1_MAX + 1) mask = 0x20000000000000000000000000000000000000000000uwb; -#endif - -static const struct { - rune lo, hi; -} lookup_tbl[] = { - {0x0000AD, 0x0000AD}, - {0x00034F, 0x00034F}, - {0x00061C, 0x00061C}, - {0x00115F, 0x001160}, - {0x0017B4, 0x0017B5}, - {0x00180B, 0x00180F}, - {0x00200B, 0x00200F}, - {0x00202A, 0x00202E}, - {0x002060, 0x00206F}, - {0x003164, 0x003164}, - {0x00FE00, 0x00FE0F}, - {0x00FEFF, 0x00FEFF}, - {0x00FFA0, 0x00FFA0}, - {0x00FFF0, 0x00FFF8}, - {0x01BCA0, 0x01BCA3}, - {0x01D173, 0x01D17A}, - {0x0E0000, 0x0E0FFF}, -}; - -#define TYPE bool -#define TABLE lookup_tbl -#define DEFAULT false -#define HAS_VALUE 0 -#include "internal/rtype/lookup-func.h" - -bool -rune_has_prop_default_ignorable_code_point(rune ch) -{ - return -#if BIT_LOOKUP - ch <= LATIN1_MAX ? (mask & ch) : -#endif - lookup(ch); -} diff --git a/vendor/librune/lib/rtype/rune_has_prop_deprecated.c b/vendor/librune/lib/rtype/rune_has_prop_deprecated.c deleted file mode 100644 index fe70ddc..0000000 --- a/vendor/librune/lib/rtype/rune_has_prop_deprecated.c +++ /dev/null @@ -1,38 +0,0 @@ -/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */ - -#include "rtype.h" - -#include "internal/common.h" - -#if BIT_LOOKUP -static const unsigned _BitInt(LATIN1_MAX + 1) mask = 0x0uwb; -#endif - -static const struct { - rune lo, hi; -} lookup_tbl[] = { - {0x000149, 0x000149}, - {0x000673, 0x000673}, - {0x000F77, 0x000F77}, - {0x000F79, 0x000F79}, - {0x0017A3, 0x0017A4}, - {0x00206A, 0x00206F}, - {0x002329, 0x00232A}, - {0x0E0001, 0x0E0001}, -}; - -#define TYPE bool -#define TABLE lookup_tbl -#define DEFAULT false -#define HAS_VALUE 0 -#include "internal/rtype/lookup-func.h" - -bool -rune_has_prop_deprecated(rune ch) -{ - return -#if BIT_LOOKUP - ch <= LATIN1_MAX ? (mask & ch) : -#endif - lookup(ch); -} diff --git a/vendor/librune/lib/rtype/rune_has_prop_diacritic.c b/vendor/librune/lib/rtype/rune_has_prop_diacritic.c deleted file mode 100644 index 5d423a1..0000000 --- a/vendor/librune/lib/rtype/rune_has_prop_diacritic.c +++ /dev/null @@ -1,225 +0,0 @@ -/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */ - -#include "rtype.h" - -#include "internal/common.h" - -#if BIT_LOOKUP -static const unsigned _BitInt(LATIN1_MAX + 1) mask = 0x19081000000000000000001400000000000000000000000uwb; -#endif - -static const struct { - rune lo, hi; -} lookup_tbl[] = { - {0x00005E, 0x00005E}, - {0x000060, 0x000060}, - {0x0000A8, 0x0000A8}, - {0x0000AF, 0x0000AF}, - {0x0000B4, 0x0000B4}, - {0x0000B7, 0x0000B8}, - {0x0002B0, 0x00034E}, - {0x000350, 0x000357}, - {0x00035D, 0x000362}, - {0x000374, 0x000375}, - {0x00037A, 0x00037A}, - {0x000384, 0x000385}, - {0x000483, 0x000487}, - {0x000559, 0x000559}, - {0x000591, 0x0005A1}, - {0x0005A3, 0x0005BD}, - {0x0005BF, 0x0005BF}, - {0x0005C1, 0x0005C2}, - {0x0005C4, 0x0005C4}, - {0x00064B, 0x000652}, - {0x000657, 0x000658}, - {0x0006DF, 0x0006E0}, - {0x0006E5, 0x0006E6}, - {0x0006EA, 0x0006EC}, - {0x000730, 0x00074A}, - {0x0007A6, 0x0007B0}, - {0x0007EB, 0x0007F5}, - {0x000818, 0x000819}, - {0x000898, 0x00089F}, - {0x0008C9, 0x0008D2}, - {0x0008E3, 0x0008FE}, - {0x00093C, 0x00093C}, - {0x00094D, 0x00094D}, - {0x000951, 0x000954}, - {0x000971, 0x000971}, - {0x0009BC, 0x0009BC}, - {0x0009CD, 0x0009CD}, - {0x000A3C, 0x000A3C}, - {0x000A4D, 0x000A4D}, - {0x000ABC, 0x000ABC}, - {0x000ACD, 0x000ACD}, - {0x000AFD, 0x000AFF}, - {0x000B3C, 0x000B3C}, - {0x000B4D, 0x000B4D}, - {0x000B55, 0x000B55}, - {0x000BCD, 0x000BCD}, - {0x000C3C, 0x000C3C}, - {0x000C4D, 0x000C4D}, - {0x000CBC, 0x000CBC}, - {0x000CCD, 0x000CCD}, - {0x000D3B, 0x000D3C}, - {0x000D4D, 0x000D4D}, - {0x000DCA, 0x000DCA}, - {0x000E47, 0x000E4C}, - {0x000E4E, 0x000E4E}, - {0x000EBA, 0x000EBA}, - {0x000EC8, 0x000ECC}, - {0x000F18, 0x000F19}, - {0x000F35, 0x000F35}, - {0x000F37, 0x000F37}, - {0x000F39, 0x000F39}, - {0x000F3E, 0x000F3F}, - {0x000F82, 0x000F84}, - {0x000F86, 0x000F87}, - {0x000FC6, 0x000FC6}, - {0x001037, 0x001037}, - {0x001039, 0x00103A}, - {0x001063, 0x001064}, - {0x001069, 0x00106D}, - {0x001087, 0x00108D}, - {0x00108F, 0x00108F}, - {0x00109A, 0x00109B}, - {0x00135D, 0x00135F}, - {0x001714, 0x001715}, - {0x0017C9, 0x0017D3}, - {0x0017DD, 0x0017DD}, - {0x001939, 0x00193B}, - {0x001A75, 0x001A7C}, - {0x001A7F, 0x001A7F}, - {0x001AB0, 0x001ABE}, - {0x001AC1, 0x001ACB}, - {0x001B34, 0x001B34}, - {0x001B44, 0x001B44}, - {0x001B6B, 0x001B73}, - {0x001BAA, 0x001BAB}, - {0x001C36, 0x001C37}, - {0x001C78, 0x001C7D}, - {0x001CD0, 0x001CE8}, - {0x001CED, 0x001CED}, - {0x001CF4, 0x001CF4}, - {0x001CF7, 0x001CF9}, - {0x001D2C, 0x001D6A}, - {0x001DC4, 0x001DCF}, - {0x001DF5, 0x001DFF}, - {0x001FBD, 0x001FBD}, - {0x001FBF, 0x001FC1}, - {0x001FCD, 0x001FCF}, - {0x001FDD, 0x001FDF}, - {0x001FED, 0x001FEF}, - {0x001FFD, 0x001FFE}, - {0x002CEF, 0x002CF1}, - {0x002E2F, 0x002E2F}, - {0x00302A, 0x00302F}, - {0x003099, 0x00309C}, - {0x0030FC, 0x0030FC}, - {0x00A66F, 0x00A66F}, - {0x00A67C, 0x00A67D}, - {0x00A67F, 0x00A67F}, - {0x00A69C, 0x00A69D}, - {0x00A6F0, 0x00A6F1}, - {0x00A700, 0x00A721}, - {0x00A788, 0x00A78A}, - {0x00A7F8, 0x00A7F9}, - {0x00A8C4, 0x00A8C4}, - {0x00A8E0, 0x00A8F1}, - {0x00A92B, 0x00A92E}, - {0x00A953, 0x00A953}, - {0x00A9B3, 0x00A9B3}, - {0x00A9C0, 0x00A9C0}, - {0x00A9E5, 0x00A9E5}, - {0x00AA7B, 0x00AA7D}, - {0x00AABF, 0x00AAC2}, - {0x00AAF6, 0x00AAF6}, - {0x00AB5B, 0x00AB5F}, - {0x00AB69, 0x00AB6B}, - {0x00ABEC, 0x00ABED}, - {0x00FB1E, 0x00FB1E}, - {0x00FE20, 0x00FE2F}, - {0x00FF3E, 0x00FF3E}, - {0x00FF40, 0x00FF40}, - {0x00FF70, 0x00FF70}, - {0x00FF9E, 0x00FF9F}, - {0x00FFE3, 0x00FFE3}, - {0x0102E0, 0x0102E0}, - {0x010780, 0x010785}, - {0x010787, 0x0107B0}, - {0x0107B2, 0x0107BA}, - {0x010AE5, 0x010AE6}, - {0x010D22, 0x010D27}, - {0x010EFD, 0x010EFF}, - {0x010F46, 0x010F50}, - {0x010F82, 0x010F85}, - {0x011046, 0x011046}, - {0x011070, 0x011070}, - {0x0110B9, 0x0110BA}, - {0x011133, 0x011134}, - {0x011173, 0x011173}, - {0x0111C0, 0x0111C0}, - {0x0111CA, 0x0111CC}, - {0x011235, 0x011236}, - {0x0112E9, 0x0112EA}, - {0x01133C, 0x01133C}, - {0x01134D, 0x01134D}, - {0x011366, 0x01136C}, - {0x011370, 0x011374}, - {0x011442, 0x011442}, - {0x011446, 0x011446}, - {0x0114C2, 0x0114C3}, - {0x0115BF, 0x0115C0}, - {0x01163F, 0x01163F}, - {0x0116B6, 0x0116B7}, - {0x01172B, 0x01172B}, - {0x011839, 0x01183A}, - {0x01193D, 0x01193E}, - {0x011943, 0x011943}, - {0x0119E0, 0x0119E0}, - {0x011A34, 0x011A34}, - {0x011A47, 0x011A47}, - {0x011A99, 0x011A99}, - {0x011C3F, 0x011C3F}, - {0x011D42, 0x011D42}, - {0x011D44, 0x011D45}, - {0x011D97, 0x011D97}, - {0x013447, 0x013455}, - {0x016AF0, 0x016AF4}, - {0x016B30, 0x016B36}, - {0x016F8F, 0x016F9F}, - {0x016FF0, 0x016FF1}, - {0x01AFF0, 0x01AFF3}, - {0x01AFF5, 0x01AFFB}, - {0x01AFFD, 0x01AFFE}, - {0x01CF00, 0x01CF2D}, - {0x01CF30, 0x01CF46}, - {0x01D167, 0x01D169}, - {0x01D16D, 0x01D172}, - {0x01D17B, 0x01D182}, - {0x01D185, 0x01D18B}, - {0x01D1AA, 0x01D1AD}, - {0x01E030, 0x01E06D}, - {0x01E130, 0x01E136}, - {0x01E2AE, 0x01E2AE}, - {0x01E2EC, 0x01E2EF}, - {0x01E8D0, 0x01E8D6}, - {0x01E944, 0x01E946}, - {0x01E948, 0x01E94A}, -}; - -#define TYPE bool -#define TABLE lookup_tbl -#define DEFAULT false -#define HAS_VALUE 0 -#include "internal/rtype/lookup-func.h" - -bool -rune_has_prop_diacritic(rune ch) -{ - return -#if BIT_LOOKUP - ch <= LATIN1_MAX ? (mask & ch) : -#endif - lookup(ch); -} diff --git a/vendor/librune/lib/rtype/rune_has_prop_extender.c b/vendor/librune/lib/rtype/rune_has_prop_extender.c deleted file mode 100644 index 961fd2e..0000000 --- a/vendor/librune/lib/rtype/rune_has_prop_extender.c +++ /dev/null @@ -1,63 +0,0 @@ -/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */ - -#include "rtype.h" - -#include "internal/common.h" - -#if BIT_LOOKUP -static const unsigned _BitInt(LATIN1_MAX + 1) mask = 0x8000000000000000000000000000000000000000000000uwb; -#endif - -static const struct { - rune lo, hi; -} lookup_tbl[] = { - {0x0000B7, 0x0000B7}, - {0x0002D0, 0x0002D1}, - {0x000640, 0x000640}, - {0x0007FA, 0x0007FA}, - {0x000B55, 0x000B55}, - {0x000E46, 0x000E46}, - {0x000EC6, 0x000EC6}, - {0x00180A, 0x00180A}, - {0x001843, 0x001843}, - {0x001AA7, 0x001AA7}, - {0x001C36, 0x001C36}, - {0x001C7B, 0x001C7B}, - {0x003005, 0x003005}, - {0x003031, 0x003035}, - {0x00309D, 0x00309E}, - {0x0030FC, 0x0030FE}, - {0x00A015, 0x00A015}, - {0x00A60C, 0x00A60C}, - {0x00A9CF, 0x00A9CF}, - {0x00A9E6, 0x00A9E6}, - {0x00AA70, 0x00AA70}, - {0x00AADD, 0x00AADD}, - {0x00AAF3, 0x00AAF4}, - {0x00FF70, 0x00FF70}, - {0x010781, 0x010782}, - {0x01135D, 0x01135D}, - {0x0115C6, 0x0115C8}, - {0x011A98, 0x011A98}, - {0x016B42, 0x016B43}, - {0x016FE0, 0x016FE1}, - {0x016FE3, 0x016FE3}, - {0x01E13C, 0x01E13D}, - {0x01E944, 0x01E946}, -}; - -#define TYPE bool -#define TABLE lookup_tbl -#define DEFAULT false -#define HAS_VALUE 0 -#include "internal/rtype/lookup-func.h" - -bool -rune_has_prop_extender(rune ch) -{ - return -#if BIT_LOOKUP - ch <= LATIN1_MAX ? (mask & ch) : -#endif - lookup(ch); -} diff --git a/vendor/librune/lib/rtype/rune_has_prop_grapheme_base.c b/vendor/librune/lib/rtype/rune_has_prop_grapheme_base.c deleted file mode 100644 index 0de7ba6..0000000 --- a/vendor/librune/lib/rtype/rune_has_prop_grapheme_base.c +++ /dev/null @@ -1,905 +0,0 @@ -/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */ - -#include "rtype.h" - -#include "internal/common.h" - -#if BIT_LOOKUP -static const unsigned _BitInt(LATIN1_MAX + 1) mask = 0xFFFFFFFFFFFFFFFFFFFFDFFF000000007FFFFFFFFFFFFFFFFFFFFFFF00000000uwb; -#endif - -static const struct { - rune lo, hi; -} lookup_tbl[] = { - {0x000020, 0x00007E}, - {0x0000A0, 0x0000AC}, - {0x0000AE, 0x0002FF}, - {0x000370, 0x000377}, - {0x00037A, 0x00037F}, - {0x000384, 0x00038A}, - {0x00038C, 0x00038C}, - {0x00038E, 0x0003A1}, - {0x0003A3, 0x000482}, - {0x00048A, 0x00052F}, - {0x000531, 0x000556}, - {0x000559, 0x00058A}, - {0x00058D, 0x00058F}, - {0x0005BE, 0x0005BE}, - {0x0005C0, 0x0005C0}, - {0x0005C3, 0x0005C3}, - {0x0005C6, 0x0005C6}, - {0x0005D0, 0x0005EA}, - {0x0005EF, 0x0005F4}, - {0x000606, 0x00060F}, - {0x00061B, 0x00061B}, - {0x00061D, 0x00064A}, - {0x000660, 0x00066F}, - {0x000671, 0x0006D5}, - {0x0006DE, 0x0006DE}, - {0x0006E5, 0x0006E6}, - {0x0006E9, 0x0006E9}, - {0x0006EE, 0x00070D}, - {0x000710, 0x000710}, - {0x000712, 0x00072F}, - {0x00074D, 0x0007A5}, - {0x0007B1, 0x0007B1}, - {0x0007C0, 0x0007EA}, - {0x0007F4, 0x0007FA}, - {0x0007FE, 0x000815}, - {0x00081A, 0x00081A}, - {0x000824, 0x000824}, - {0x000828, 0x000828}, - {0x000830, 0x00083E}, - {0x000840, 0x000858}, - {0x00085E, 0x00085E}, - {0x000860, 0x00086A}, - {0x000870, 0x00088E}, - {0x0008A0, 0x0008C9}, - {0x000903, 0x000939}, - {0x00093B, 0x00093B}, - {0x00093D, 0x000940}, - {0x000949, 0x00094C}, - {0x00094E, 0x000950}, - {0x000958, 0x000961}, - {0x000964, 0x000980}, - {0x000982, 0x000983}, - {0x000985, 0x00098C}, - {0x00098F, 0x000990}, - {0x000993, 0x0009A8}, - {0x0009AA, 0x0009B0}, - {0x0009B2, 0x0009B2}, - {0x0009B6, 0x0009B9}, - {0x0009BD, 0x0009BD}, - {0x0009BF, 0x0009C0}, - {0x0009C7, 0x0009C8}, - {0x0009CB, 0x0009CC}, - {0x0009CE, 0x0009CE}, - {0x0009DC, 0x0009DD}, - {0x0009DF, 0x0009E1}, - {0x0009E6, 0x0009FD}, - {0x000A03, 0x000A03}, - {0x000A05, 0x000A0A}, - {0x000A0F, 0x000A10}, - {0x000A13, 0x000A28}, - {0x000A2A, 0x000A30}, - {0x000A32, 0x000A33}, - {0x000A35, 0x000A36}, - {0x000A38, 0x000A39}, - {0x000A3E, 0x000A40}, - {0x000A59, 0x000A5C}, - {0x000A5E, 0x000A5E}, - {0x000A66, 0x000A6F}, - {0x000A72, 0x000A74}, - {0x000A76, 0x000A76}, - {0x000A83, 0x000A83}, - {0x000A85, 0x000A8D}, - {0x000A8F, 0x000A91}, - {0x000A93, 0x000AA8}, - {0x000AAA, 0x000AB0}, - {0x000AB2, 0x000AB3}, - {0x000AB5, 0x000AB9}, - {0x000ABD, 0x000AC0}, - {0x000AC9, 0x000AC9}, - {0x000ACB, 0x000ACC}, - {0x000AD0, 0x000AD0}, - {0x000AE0, 0x000AE1}, - {0x000AE6, 0x000AF1}, - {0x000AF9, 0x000AF9}, - {0x000B02, 0x000B03}, - {0x000B05, 0x000B0C}, - {0x000B0F, 0x000B10}, - {0x000B13, 0x000B28}, - {0x000B2A, 0x000B30}, - {0x000B32, 0x000B33}, - {0x000B35, 0x000B39}, - {0x000B3D, 0x000B3D}, - {0x000B40, 0x000B40}, - {0x000B47, 0x000B48}, - {0x000B4B, 0x000B4C}, - {0x000B5C, 0x000B5D}, - {0x000B5F, 0x000B61}, - {0x000B66, 0x000B77}, - {0x000B83, 0x000B83}, - {0x000B85, 0x000B8A}, - {0x000B8E, 0x000B90}, - {0x000B92, 0x000B95}, - {0x000B99, 0x000B9A}, - {0x000B9C, 0x000B9C}, - {0x000B9E, 0x000B9F}, - {0x000BA3, 0x000BA4}, - {0x000BA8, 0x000BAA}, - {0x000BAE, 0x000BB9}, - {0x000BBF, 0x000BBF}, - {0x000BC1, 0x000BC2}, - {0x000BC6, 0x000BC8}, - {0x000BCA, 0x000BCC}, - {0x000BD0, 0x000BD0}, - {0x000BE6, 0x000BFA}, - {0x000C01, 0x000C03}, - {0x000C05, 0x000C0C}, - {0x000C0E, 0x000C10}, - {0x000C12, 0x000C28}, - {0x000C2A, 0x000C39}, - {0x000C3D, 0x000C3D}, - {0x000C41, 0x000C44}, - {0x000C58, 0x000C5A}, - {0x000C5D, 0x000C5D}, - {0x000C60, 0x000C61}, - {0x000C66, 0x000C6F}, - {0x000C77, 0x000C80}, - {0x000C82, 0x000C8C}, - {0x000C8E, 0x000C90}, - {0x000C92, 0x000CA8}, - {0x000CAA, 0x000CB3}, - {0x000CB5, 0x000CB9}, - {0x000CBD, 0x000CBE}, - {0x000CC0, 0x000CC1}, - {0x000CC3, 0x000CC4}, - {0x000CC7, 0x000CC8}, - {0x000CCA, 0x000CCB}, - {0x000CDD, 0x000CDE}, - {0x000CE0, 0x000CE1}, - {0x000CE6, 0x000CEF}, - {0x000CF1, 0x000CF3}, - {0x000D02, 0x000D0C}, - {0x000D0E, 0x000D10}, - {0x000D12, 0x000D3A}, - {0x000D3D, 0x000D3D}, - {0x000D3F, 0x000D40}, - {0x000D46, 0x000D48}, - {0x000D4A, 0x000D4C}, - {0x000D4E, 0x000D4F}, - {0x000D54, 0x000D56}, - {0x000D58, 0x000D61}, - {0x000D66, 0x000D7F}, - {0x000D82, 0x000D83}, - {0x000D85, 0x000D96}, - {0x000D9A, 0x000DB1}, - {0x000DB3, 0x000DBB}, - {0x000DBD, 0x000DBD}, - {0x000DC0, 0x000DC6}, - {0x000DD0, 0x000DD1}, - {0x000DD8, 0x000DDE}, - {0x000DE6, 0x000DEF}, - {0x000DF2, 0x000DF4}, - {0x000E01, 0x000E30}, - {0x000E32, 0x000E33}, - {0x000E3F, 0x000E46}, - {0x000E4F, 0x000E5B}, - {0x000E81, 0x000E82}, - {0x000E84, 0x000E84}, - {0x000E86, 0x000E8A}, - {0x000E8C, 0x000EA3}, - {0x000EA5, 0x000EA5}, - {0x000EA7, 0x000EB0}, - {0x000EB2, 0x000EB3}, - {0x000EBD, 0x000EBD}, - {0x000EC0, 0x000EC4}, - {0x000EC6, 0x000EC6}, - {0x000ED0, 0x000ED9}, - {0x000EDC, 0x000EDF}, - {0x000F00, 0x000F17}, - {0x000F1A, 0x000F34}, - {0x000F36, 0x000F36}, - {0x000F38, 0x000F38}, - {0x000F3A, 0x000F47}, - {0x000F49, 0x000F6C}, - {0x000F7F, 0x000F7F}, - {0x000F85, 0x000F85}, - {0x000F88, 0x000F8C}, - {0x000FBE, 0x000FC5}, - {0x000FC7, 0x000FCC}, - {0x000FCE, 0x000FDA}, - {0x001000, 0x00102C}, - {0x001031, 0x001031}, - {0x001038, 0x001038}, - {0x00103B, 0x00103C}, - {0x00103F, 0x001057}, - {0x00105A, 0x00105D}, - {0x001061, 0x001070}, - {0x001075, 0x001081}, - {0x001083, 0x001084}, - {0x001087, 0x00108C}, - {0x00108E, 0x00109C}, - {0x00109E, 0x0010C5}, - {0x0010C7, 0x0010C7}, - {0x0010CD, 0x0010CD}, - {0x0010D0, 0x001248}, - {0x00124A, 0x00124D}, - {0x001250, 0x001256}, - {0x001258, 0x001258}, - {0x00125A, 0x00125D}, - {0x001260, 0x001288}, - {0x00128A, 0x00128D}, - {0x001290, 0x0012B0}, - {0x0012B2, 0x0012B5}, - {0x0012B8, 0x0012BE}, - {0x0012C0, 0x0012C0}, - {0x0012C2, 0x0012C5}, - {0x0012C8, 0x0012D6}, - {0x0012D8, 0x001310}, - {0x001312, 0x001315}, - {0x001318, 0x00135A}, - {0x001360, 0x00137C}, - {0x001380, 0x001399}, - {0x0013A0, 0x0013F5}, - {0x0013F8, 0x0013FD}, - {0x001400, 0x00169C}, - {0x0016A0, 0x0016F8}, - {0x001700, 0x001711}, - {0x001715, 0x001715}, - {0x00171F, 0x001731}, - {0x001734, 0x001736}, - {0x001740, 0x001751}, - {0x001760, 0x00176C}, - {0x00176E, 0x001770}, - {0x001780, 0x0017B3}, - {0x0017B6, 0x0017B6}, - {0x0017BE, 0x0017C5}, - {0x0017C7, 0x0017C8}, - {0x0017D4, 0x0017DC}, - {0x0017E0, 0x0017E9}, - {0x0017F0, 0x0017F9}, - {0x001800, 0x00180A}, - {0x001810, 0x001819}, - {0x001820, 0x001878}, - {0x001880, 0x001884}, - {0x001887, 0x0018A8}, - {0x0018AA, 0x0018AA}, - {0x0018B0, 0x0018F5}, - {0x001900, 0x00191E}, - {0x001923, 0x001926}, - {0x001929, 0x00192B}, - {0x001930, 0x001931}, - {0x001933, 0x001938}, - {0x001940, 0x001940}, - {0x001944, 0x00196D}, - {0x001970, 0x001974}, - {0x001980, 0x0019AB}, - {0x0019B0, 0x0019C9}, - {0x0019D0, 0x0019DA}, - {0x0019DE, 0x001A16}, - {0x001A19, 0x001A1A}, - {0x001A1E, 0x001A55}, - {0x001A57, 0x001A57}, - {0x001A61, 0x001A61}, - {0x001A63, 0x001A64}, - {0x001A6D, 0x001A72}, - {0x001A80, 0x001A89}, - {0x001A90, 0x001A99}, - {0x001AA0, 0x001AAD}, - {0x001B04, 0x001B33}, - {0x001B3B, 0x001B3B}, - {0x001B3D, 0x001B41}, - {0x001B43, 0x001B4C}, - {0x001B50, 0x001B6A}, - {0x001B74, 0x001B7E}, - {0x001B82, 0x001BA1}, - {0x001BA6, 0x001BA7}, - {0x001BAA, 0x001BAA}, - {0x001BAE, 0x001BE5}, - {0x001BE7, 0x001BE7}, - {0x001BEA, 0x001BEC}, - {0x001BEE, 0x001BEE}, - {0x001BF2, 0x001BF3}, - {0x001BFC, 0x001C2B}, - {0x001C34, 0x001C35}, - {0x001C3B, 0x001C49}, - {0x001C4D, 0x001C88}, - {0x001C90, 0x001CBA}, - {0x001CBD, 0x001CC7}, - {0x001CD3, 0x001CD3}, - {0x001CE1, 0x001CE1}, - {0x001CE9, 0x001CEC}, - {0x001CEE, 0x001CF3}, - {0x001CF5, 0x001CF7}, - {0x001CFA, 0x001CFA}, - {0x001D00, 0x001DBF}, - {0x001E00, 0x001F15}, - {0x001F18, 0x001F1D}, - {0x001F20, 0x001F45}, - {0x001F48, 0x001F4D}, - {0x001F50, 0x001F57}, - {0x001F59, 0x001F59}, - {0x001F5B, 0x001F5B}, - {0x001F5D, 0x001F5D}, - {0x001F5F, 0x001F7D}, - {0x001F80, 0x001FB4}, - {0x001FB6, 0x001FC4}, - {0x001FC6, 0x001FD3}, - {0x001FD6, 0x001FDB}, - {0x001FDD, 0x001FEF}, - {0x001FF2, 0x001FF4}, - {0x001FF6, 0x001FFE}, - {0x002000, 0x00200A}, - {0x002010, 0x002027}, - {0x00202F, 0x00205F}, - {0x002070, 0x002071}, - {0x002074, 0x00208E}, - {0x002090, 0x00209C}, - {0x0020A0, 0x0020C0}, - {0x002100, 0x00218B}, - {0x002190, 0x002426}, - {0x002440, 0x00244A}, - {0x002460, 0x002B73}, - {0x002B76, 0x002B95}, - {0x002B97, 0x002CEE}, - {0x002CF2, 0x002CF3}, - {0x002CF9, 0x002D25}, - {0x002D27, 0x002D27}, - {0x002D2D, 0x002D2D}, - {0x002D30, 0x002D67}, - {0x002D6F, 0x002D70}, - {0x002D80, 0x002D96}, - {0x002DA0, 0x002DA6}, - {0x002DA8, 0x002DAE}, - {0x002DB0, 0x002DB6}, - {0x002DB8, 0x002DBE}, - {0x002DC0, 0x002DC6}, - {0x002DC8, 0x002DCE}, - {0x002DD0, 0x002DD6}, - {0x002DD8, 0x002DDE}, - {0x002E00, 0x002E5D}, - {0x002E80, 0x002E99}, - {0x002E9B, 0x002EF3}, - {0x002F00, 0x002FD5}, - {0x002FF0, 0x003029}, - {0x003030, 0x00303F}, - {0x003041, 0x003096}, - {0x00309B, 0x0030FF}, - {0x003105, 0x00312F}, - {0x003131, 0x00318E}, - {0x003190, 0x0031E3}, - {0x0031EF, 0x00321E}, - {0x003220, 0x00A48C}, - {0x00A490, 0x00A4C6}, - {0x00A4D0, 0x00A62B}, - {0x00A640, 0x00A66E}, - {0x00A673, 0x00A673}, - {0x00A67E, 0x00A69D}, - {0x00A6A0, 0x00A6EF}, - {0x00A6F2, 0x00A6F7}, - {0x00A700, 0x00A7CA}, - {0x00A7D0, 0x00A7D1}, - {0x00A7D3, 0x00A7D3}, - {0x00A7D5, 0x00A7D9}, - {0x00A7F2, 0x00A801}, - {0x00A803, 0x00A805}, - {0x00A807, 0x00A80A}, - {0x00A80C, 0x00A824}, - {0x00A827, 0x00A82B}, - {0x00A830, 0x00A839}, - {0x00A840, 0x00A877}, - {0x00A880, 0x00A8C3}, - {0x00A8CE, 0x00A8D9}, - {0x00A8F2, 0x00A8FE}, - {0x00A900, 0x00A925}, - {0x00A92E, 0x00A946}, - {0x00A952, 0x00A953}, - {0x00A95F, 0x00A97C}, - {0x00A983, 0x00A9B2}, - {0x00A9B4, 0x00A9B5}, - {0x00A9BA, 0x00A9BB}, - {0x00A9BE, 0x00A9CD}, - {0x00A9CF, 0x00A9D9}, - {0x00A9DE, 0x00A9E4}, - {0x00A9E6, 0x00A9FE}, - {0x00AA00, 0x00AA28}, - {0x00AA2F, 0x00AA30}, - {0x00AA33, 0x00AA34}, - {0x00AA40, 0x00AA42}, - {0x00AA44, 0x00AA4B}, - {0x00AA4D, 0x00AA4D}, - {0x00AA50, 0x00AA59}, - {0x00AA5C, 0x00AA7B}, - {0x00AA7D, 0x00AAAF}, - {0x00AAB1, 0x00AAB1}, - {0x00AAB5, 0x00AAB6}, - {0x00AAB9, 0x00AABD}, - {0x00AAC0, 0x00AAC0}, - {0x00AAC2, 0x00AAC2}, - {0x00AADB, 0x00AAEB}, - {0x00AAEE, 0x00AAF5}, - {0x00AB01, 0x00AB06}, - {0x00AB09, 0x00AB0E}, - {0x00AB11, 0x00AB16}, - {0x00AB20, 0x00AB26}, - {0x00AB28, 0x00AB2E}, - {0x00AB30, 0x00AB6B}, - {0x00AB70, 0x00ABE4}, - {0x00ABE6, 0x00ABE7}, - {0x00ABE9, 0x00ABEC}, - {0x00ABF0, 0x00ABF9}, - {0x00AC00, 0x00D7A3}, - {0x00D7B0, 0x00D7C6}, - {0x00D7CB, 0x00D7FB}, - {0x00F900, 0x00FA6D}, - {0x00FA70, 0x00FAD9}, - {0x00FB00, 0x00FB06}, - {0x00FB13, 0x00FB17}, - {0x00FB1D, 0x00FB1D}, - {0x00FB1F, 0x00FB36}, - {0x00FB38, 0x00FB3C}, - {0x00FB3E, 0x00FB3E}, - {0x00FB40, 0x00FB41}, - {0x00FB43, 0x00FB44}, - {0x00FB46, 0x00FBC2}, - {0x00FBD3, 0x00FD8F}, - {0x00FD92, 0x00FDC7}, - {0x00FDCF, 0x00FDCF}, - {0x00FDF0, 0x00FDFF}, - {0x00FE10, 0x00FE19}, - {0x00FE30, 0x00FE52}, - {0x00FE54, 0x00FE66}, - {0x00FE68, 0x00FE6B}, - {0x00FE70, 0x00FE74}, - {0x00FE76, 0x00FEFC}, - {0x00FF01, 0x00FF9D}, - {0x00FFA0, 0x00FFBE}, - {0x00FFC2, 0x00FFC7}, - {0x00FFCA, 0x00FFCF}, - {0x00FFD2, 0x00FFD7}, - {0x00FFDA, 0x00FFDC}, - {0x00FFE0, 0x00FFE6}, - {0x00FFE8, 0x00FFEE}, - {0x00FFFC, 0x00FFFD}, - {0x010000, 0x01000B}, - {0x01000D, 0x010026}, - {0x010028, 0x01003A}, - {0x01003C, 0x01003D}, - {0x01003F, 0x01004D}, - {0x010050, 0x01005D}, - {0x010080, 0x0100FA}, - {0x010100, 0x010102}, - {0x010107, 0x010133}, - {0x010137, 0x01018E}, - {0x010190, 0x01019C}, - {0x0101A0, 0x0101A0}, - {0x0101D0, 0x0101FC}, - {0x010280, 0x01029C}, - {0x0102A0, 0x0102D0}, - {0x0102E1, 0x0102FB}, - {0x010300, 0x010323}, - {0x01032D, 0x01034A}, - {0x010350, 0x010375}, - {0x010380, 0x01039D}, - {0x01039F, 0x0103C3}, - {0x0103C8, 0x0103D5}, - {0x010400, 0x01049D}, - {0x0104A0, 0x0104A9}, - {0x0104B0, 0x0104D3}, - {0x0104D8, 0x0104FB}, - {0x010500, 0x010527}, - {0x010530, 0x010563}, - {0x01056F, 0x01057A}, - {0x01057C, 0x01058A}, - {0x01058C, 0x010592}, - {0x010594, 0x010595}, - {0x010597, 0x0105A1}, - {0x0105A3, 0x0105B1}, - {0x0105B3, 0x0105B9}, - {0x0105BB, 0x0105BC}, - {0x010600, 0x010736}, - {0x010740, 0x010755}, - {0x010760, 0x010767}, - {0x010780, 0x010785}, - {0x010787, 0x0107B0}, - {0x0107B2, 0x0107BA}, - {0x010800, 0x010805}, - {0x010808, 0x010808}, - {0x01080A, 0x010835}, - {0x010837, 0x010838}, - {0x01083C, 0x01083C}, - {0x01083F, 0x010855}, - {0x010857, 0x01089E}, - {0x0108A7, 0x0108AF}, - {0x0108E0, 0x0108F2}, - {0x0108F4, 0x0108F5}, - {0x0108FB, 0x01091B}, - {0x01091F, 0x010939}, - {0x01093F, 0x01093F}, - {0x010980, 0x0109B7}, - {0x0109BC, 0x0109CF}, - {0x0109D2, 0x010A00}, - {0x010A10, 0x010A13}, - {0x010A15, 0x010A17}, - {0x010A19, 0x010A35}, - {0x010A40, 0x010A48}, - {0x010A50, 0x010A58}, - {0x010A60, 0x010A9F}, - {0x010AC0, 0x010AE4}, - {0x010AEB, 0x010AF6}, - {0x010B00, 0x010B35}, - {0x010B39, 0x010B55}, - {0x010B58, 0x010B72}, - {0x010B78, 0x010B91}, - {0x010B99, 0x010B9C}, - {0x010BA9, 0x010BAF}, - {0x010C00, 0x010C48}, - {0x010C80, 0x010CB2}, - {0x010CC0, 0x010CF2}, - {0x010CFA, 0x010D23}, - {0x010D30, 0x010D39}, - {0x010E60, 0x010E7E}, - {0x010E80, 0x010EA9}, - {0x010EAD, 0x010EAD}, - {0x010EB0, 0x010EB1}, - {0x010F00, 0x010F27}, - {0x010F30, 0x010F45}, - {0x010F51, 0x010F59}, - {0x010F70, 0x010F81}, - {0x010F86, 0x010F89}, - {0x010FB0, 0x010FCB}, - {0x010FE0, 0x010FF6}, - {0x011000, 0x011000}, - {0x011002, 0x011037}, - {0x011047, 0x01104D}, - {0x011052, 0x01106F}, - {0x011071, 0x011072}, - {0x011075, 0x011075}, - {0x011082, 0x0110B2}, - {0x0110B7, 0x0110B8}, - {0x0110BB, 0x0110BC}, - {0x0110BE, 0x0110C1}, - {0x0110D0, 0x0110E8}, - {0x0110F0, 0x0110F9}, - {0x011103, 0x011126}, - {0x01112C, 0x01112C}, - {0x011136, 0x011147}, - {0x011150, 0x011172}, - {0x011174, 0x011176}, - {0x011182, 0x0111B5}, - {0x0111BF, 0x0111C8}, - {0x0111CD, 0x0111CE}, - {0x0111D0, 0x0111DF}, - {0x0111E1, 0x0111F4}, - {0x011200, 0x011211}, - {0x011213, 0x01122E}, - {0x011232, 0x011233}, - {0x011235, 0x011235}, - {0x011238, 0x01123D}, - {0x01123F, 0x011240}, - {0x011280, 0x011286}, - {0x011288, 0x011288}, - {0x01128A, 0x01128D}, - {0x01128F, 0x01129D}, - {0x01129F, 0x0112A9}, - {0x0112B0, 0x0112DE}, - {0x0112E0, 0x0112E2}, - {0x0112F0, 0x0112F9}, - {0x011302, 0x011303}, - {0x011305, 0x01130C}, - {0x01130F, 0x011310}, - {0x011313, 0x011328}, - {0x01132A, 0x011330}, - {0x011332, 0x011333}, - {0x011335, 0x011339}, - {0x01133D, 0x01133D}, - {0x01133F, 0x01133F}, - {0x011341, 0x011344}, - {0x011347, 0x011348}, - {0x01134B, 0x01134D}, - {0x011350, 0x011350}, - {0x01135D, 0x011363}, - {0x011400, 0x011437}, - {0x011440, 0x011441}, - {0x011445, 0x011445}, - {0x011447, 0x01145B}, - {0x01145D, 0x01145D}, - {0x01145F, 0x011461}, - {0x011480, 0x0114AF}, - {0x0114B1, 0x0114B2}, - {0x0114B9, 0x0114B9}, - {0x0114BB, 0x0114BC}, - {0x0114BE, 0x0114BE}, - {0x0114C1, 0x0114C1}, - {0x0114C4, 0x0114C7}, - {0x0114D0, 0x0114D9}, - {0x011580, 0x0115AE}, - {0x0115B0, 0x0115B1}, - {0x0115B8, 0x0115BB}, - {0x0115BE, 0x0115BE}, - {0x0115C1, 0x0115DB}, - {0x011600, 0x011632}, - {0x01163B, 0x01163C}, - {0x01163E, 0x01163E}, - {0x011641, 0x011644}, - {0x011650, 0x011659}, - {0x011660, 0x01166C}, - {0x011680, 0x0116AA}, - {0x0116AC, 0x0116AC}, - {0x0116AE, 0x0116AF}, - {0x0116B6, 0x0116B6}, - {0x0116B8, 0x0116B9}, - {0x0116C0, 0x0116C9}, - {0x011700, 0x01171A}, - {0x011720, 0x011721}, - {0x011726, 0x011726}, - {0x011730, 0x011746}, - {0x011800, 0x01182E}, - {0x011838, 0x011838}, - {0x01183B, 0x01183B}, - {0x0118A0, 0x0118F2}, - {0x0118FF, 0x011906}, - {0x011909, 0x011909}, - {0x01190C, 0x011913}, - {0x011915, 0x011916}, - {0x011918, 0x01192F}, - {0x011931, 0x011935}, - {0x011937, 0x011938}, - {0x01193D, 0x01193D}, - {0x01193F, 0x011942}, - {0x011944, 0x011946}, - {0x011950, 0x011959}, - {0x0119A0, 0x0119A7}, - {0x0119AA, 0x0119D3}, - {0x0119DC, 0x0119DF}, - {0x0119E1, 0x0119E4}, - {0x011A00, 0x011A00}, - {0x011A0B, 0x011A32}, - {0x011A39, 0x011A3A}, - {0x011A3F, 0x011A46}, - {0x011A50, 0x011A50}, - {0x011A57, 0x011A58}, - {0x011A5C, 0x011A89}, - {0x011A97, 0x011A97}, - {0x011A9A, 0x011AA2}, - {0x011AB0, 0x011AF8}, - {0x011B00, 0x011B09}, - {0x011C00, 0x011C08}, - {0x011C0A, 0x011C2F}, - {0x011C3E, 0x011C3E}, - {0x011C40, 0x011C45}, - {0x011C50, 0x011C6C}, - {0x011C70, 0x011C8F}, - {0x011CA9, 0x011CA9}, - {0x011CB1, 0x011CB1}, - {0x011CB4, 0x011CB4}, - {0x011D00, 0x011D06}, - {0x011D08, 0x011D09}, - {0x011D0B, 0x011D30}, - {0x011D46, 0x011D46}, - {0x011D50, 0x011D59}, - {0x011D60, 0x011D65}, - {0x011D67, 0x011D68}, - {0x011D6A, 0x011D8E}, - {0x011D93, 0x011D94}, - {0x011D96, 0x011D96}, - {0x011D98, 0x011D98}, - {0x011DA0, 0x011DA9}, - {0x011EE0, 0x011EF2}, - {0x011EF5, 0x011EF8}, - {0x011F02, 0x011F10}, - {0x011F12, 0x011F35}, - {0x011F3E, 0x011F3F}, - {0x011F41, 0x011F41}, - {0x011F43, 0x011F59}, - {0x011FB0, 0x011FB0}, - {0x011FC0, 0x011FF1}, - {0x011FFF, 0x012399}, - {0x012400, 0x01246E}, - {0x012470, 0x012474}, - {0x012480, 0x012543}, - {0x012F90, 0x012FF2}, - {0x013000, 0x01342F}, - {0x013441, 0x013446}, - {0x014400, 0x014646}, - {0x016800, 0x016A38}, - {0x016A40, 0x016A5E}, - {0x016A60, 0x016A69}, - {0x016A6E, 0x016ABE}, - {0x016AC0, 0x016AC9}, - {0x016AD0, 0x016AED}, - {0x016AF5, 0x016AF5}, - {0x016B00, 0x016B2F}, - {0x016B37, 0x016B45}, - {0x016B50, 0x016B59}, - {0x016B5B, 0x016B61}, - {0x016B63, 0x016B77}, - {0x016B7D, 0x016B8F}, - {0x016E40, 0x016E9A}, - {0x016F00, 0x016F4A}, - {0x016F50, 0x016F87}, - {0x016F93, 0x016F9F}, - {0x016FE0, 0x016FE3}, - {0x016FF0, 0x016FF1}, - {0x017000, 0x0187F7}, - {0x018800, 0x018CD5}, - {0x018D00, 0x018D08}, - {0x01AFF0, 0x01AFF3}, - {0x01AFF5, 0x01AFFB}, - {0x01AFFD, 0x01AFFE}, - {0x01B000, 0x01B122}, - {0x01B132, 0x01B132}, - {0x01B150, 0x01B152}, - {0x01B155, 0x01B155}, - {0x01B164, 0x01B167}, - {0x01B170, 0x01B2FB}, - {0x01BC00, 0x01BC6A}, - {0x01BC70, 0x01BC7C}, - {0x01BC80, 0x01BC88}, - {0x01BC90, 0x01BC99}, - {0x01BC9C, 0x01BC9C}, - {0x01BC9F, 0x01BC9F}, - {0x01CF50, 0x01CFC3}, - {0x01D000, 0x01D0F5}, - {0x01D100, 0x01D126}, - {0x01D129, 0x01D164}, - {0x01D166, 0x01D166}, - {0x01D16A, 0x01D16D}, - {0x01D183, 0x01D184}, - {0x01D18C, 0x01D1A9}, - {0x01D1AE, 0x01D1EA}, - {0x01D200, 0x01D241}, - {0x01D245, 0x01D245}, - {0x01D2C0, 0x01D2D3}, - {0x01D2E0, 0x01D2F3}, - {0x01D300, 0x01D356}, - {0x01D360, 0x01D378}, - {0x01D400, 0x01D454}, - {0x01D456, 0x01D49C}, - {0x01D49E, 0x01D49F}, - {0x01D4A2, 0x01D4A2}, - {0x01D4A5, 0x01D4A6}, - {0x01D4A9, 0x01D4AC}, - {0x01D4AE, 0x01D4B9}, - {0x01D4BB, 0x01D4BB}, - {0x01D4BD, 0x01D4C3}, - {0x01D4C5, 0x01D505}, - {0x01D507, 0x01D50A}, - {0x01D50D, 0x01D514}, - {0x01D516, 0x01D51C}, - {0x01D51E, 0x01D539}, - {0x01D53B, 0x01D53E}, - {0x01D540, 0x01D544}, - {0x01D546, 0x01D546}, - {0x01D54A, 0x01D550}, - {0x01D552, 0x01D6A5}, - {0x01D6A8, 0x01D7CB}, - {0x01D7CE, 0x01D9FF}, - {0x01DA37, 0x01DA3A}, - {0x01DA6D, 0x01DA74}, - {0x01DA76, 0x01DA83}, - {0x01DA85, 0x01DA8B}, - {0x01DF00, 0x01DF1E}, - {0x01DF25, 0x01DF2A}, - {0x01E030, 0x01E06D}, - {0x01E100, 0x01E12C}, - {0x01E137, 0x01E13D}, - {0x01E140, 0x01E149}, - {0x01E14E, 0x01E14F}, - {0x01E290, 0x01E2AD}, - {0x01E2C0, 0x01E2EB}, - {0x01E2F0, 0x01E2F9}, - {0x01E2FF, 0x01E2FF}, - {0x01E4D0, 0x01E4EB}, - {0x01E4F0, 0x01E4F9}, - {0x01E7E0, 0x01E7E6}, - {0x01E7E8, 0x01E7EB}, - {0x01E7ED, 0x01E7EE}, - {0x01E7F0, 0x01E7FE}, - {0x01E800, 0x01E8C4}, - {0x01E8C7, 0x01E8CF}, - {0x01E900, 0x01E943}, - {0x01E94B, 0x01E94B}, - {0x01E950, 0x01E959}, - {0x01E95E, 0x01E95F}, - {0x01EC71, 0x01ECB4}, - {0x01ED01, 0x01ED3D}, - {0x01EE00, 0x01EE03}, - {0x01EE05, 0x01EE1F}, - {0x01EE21, 0x01EE22}, - {0x01EE24, 0x01EE24}, - {0x01EE27, 0x01EE27}, - {0x01EE29, 0x01EE32}, - {0x01EE34, 0x01EE37}, - {0x01EE39, 0x01EE39}, - {0x01EE3B, 0x01EE3B}, - {0x01EE42, 0x01EE42}, - {0x01EE47, 0x01EE47}, - {0x01EE49, 0x01EE49}, - {0x01EE4B, 0x01EE4B}, - {0x01EE4D, 0x01EE4F}, - {0x01EE51, 0x01EE52}, - {0x01EE54, 0x01EE54}, - {0x01EE57, 0x01EE57}, - {0x01EE59, 0x01EE59}, - {0x01EE5B, 0x01EE5B}, - {0x01EE5D, 0x01EE5D}, - {0x01EE5F, 0x01EE5F}, - {0x01EE61, 0x01EE62}, - {0x01EE64, 0x01EE64}, - {0x01EE67, 0x01EE6A}, - {0x01EE6C, 0x01EE72}, - {0x01EE74, 0x01EE77}, - {0x01EE79, 0x01EE7C}, - {0x01EE7E, 0x01EE7E}, - {0x01EE80, 0x01EE89}, - {0x01EE8B, 0x01EE9B}, - {0x01EEA1, 0x01EEA3}, - {0x01EEA5, 0x01EEA9}, - {0x01EEAB, 0x01EEBB}, - {0x01EEF0, 0x01EEF1}, - {0x01F000, 0x01F02B}, - {0x01F030, 0x01F093}, - {0x01F0A0, 0x01F0AE}, - {0x01F0B1, 0x01F0BF}, - {0x01F0C1, 0x01F0CF}, - {0x01F0D1, 0x01F0F5}, - {0x01F100, 0x01F1AD}, - {0x01F1E6, 0x01F202}, - {0x01F210, 0x01F23B}, - {0x01F240, 0x01F248}, - {0x01F250, 0x01F251}, - {0x01F260, 0x01F265}, - {0x01F300, 0x01F6D7}, - {0x01F6DC, 0x01F6EC}, - {0x01F6F0, 0x01F6FC}, - {0x01F700, 0x01F776}, - {0x01F77B, 0x01F7D9}, - {0x01F7E0, 0x01F7EB}, - {0x01F7F0, 0x01F7F0}, - {0x01F800, 0x01F80B}, - {0x01F810, 0x01F847}, - {0x01F850, 0x01F859}, - {0x01F860, 0x01F887}, - {0x01F890, 0x01F8AD}, - {0x01F8B0, 0x01F8B1}, - {0x01F900, 0x01FA53}, - {0x01FA60, 0x01FA6D}, - {0x01FA70, 0x01FA7C}, - {0x01FA80, 0x01FA88}, - {0x01FA90, 0x01FABD}, - {0x01FABF, 0x01FAC5}, - {0x01FACE, 0x01FADB}, - {0x01FAE0, 0x01FAE8}, - {0x01FAF0, 0x01FAF8}, - {0x01FB00, 0x01FB92}, - {0x01FB94, 0x01FBCA}, - {0x01FBF0, 0x01FBF9}, - {0x020000, 0x02A6DF}, - {0x02A700, 0x02B739}, - {0x02B740, 0x02B81D}, - {0x02B820, 0x02CEA1}, - {0x02CEB0, 0x02EBE0}, - {0x02EBF0, 0x02EE5D}, - {0x02F800, 0x02FA1D}, - {0x030000, 0x03134A}, - {0x031350, 0x0323AF}, -}; - -#define TYPE bool -#define TABLE lookup_tbl -#define DEFAULT false -#define HAS_VALUE 0 -#include "internal/rtype/lookup-func.h" - -bool -rune_has_prop_grapheme_base(rune ch) -{ - return -#if BIT_LOOKUP - ch <= LATIN1_MAX ? (mask & ch) : -#endif - lookup(ch); -} diff --git a/vendor/librune/lib/rtype/rune_has_prop_grapheme_extend.c b/vendor/librune/lib/rtype/rune_has_prop_grapheme_extend.c deleted file mode 100644 index 041c74b..0000000 --- a/vendor/librune/lib/rtype/rune_has_prop_grapheme_extend.c +++ /dev/null @@ -1,393 +0,0 @@ -/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */ - -#include "rtype.h" - -#include "internal/common.h" - -#if BIT_LOOKUP -static const unsigned _BitInt(LATIN1_MAX + 1) mask = 0x0uwb; -#endif - -static const struct { - rune lo, hi; -} lookup_tbl[] = { - {0x000300, 0x00036F}, - {0x000483, 0x000489}, - {0x000591, 0x0005BD}, - {0x0005BF, 0x0005BF}, - {0x0005C1, 0x0005C2}, - {0x0005C4, 0x0005C5}, - {0x0005C7, 0x0005C7}, - {0x000610, 0x00061A}, - {0x00064B, 0x00065F}, - {0x000670, 0x000670}, - {0x0006D6, 0x0006DC}, - {0x0006DF, 0x0006E4}, - {0x0006E7, 0x0006E8}, - {0x0006EA, 0x0006ED}, - {0x000711, 0x000711}, - {0x000730, 0x00074A}, - {0x0007A6, 0x0007B0}, - {0x0007EB, 0x0007F3}, - {0x0007FD, 0x0007FD}, - {0x000816, 0x000819}, - {0x00081B, 0x000823}, - {0x000825, 0x000827}, - {0x000829, 0x00082D}, - {0x000859, 0x00085B}, - {0x000898, 0x00089F}, - {0x0008CA, 0x0008E1}, - {0x0008E3, 0x000902}, - {0x00093A, 0x00093A}, - {0x00093C, 0x00093C}, - {0x000941, 0x000948}, - {0x00094D, 0x00094D}, - {0x000951, 0x000957}, - {0x000962, 0x000963}, - {0x000981, 0x000981}, - {0x0009BC, 0x0009BC}, - {0x0009BE, 0x0009BE}, - {0x0009C1, 0x0009C4}, - {0x0009CD, 0x0009CD}, - {0x0009D7, 0x0009D7}, - {0x0009E2, 0x0009E3}, - {0x0009FE, 0x0009FE}, - {0x000A01, 0x000A02}, - {0x000A3C, 0x000A3C}, - {0x000A41, 0x000A42}, - {0x000A47, 0x000A48}, - {0x000A4B, 0x000A4D}, - {0x000A51, 0x000A51}, - {0x000A70, 0x000A71}, - {0x000A75, 0x000A75}, - {0x000A81, 0x000A82}, - {0x000ABC, 0x000ABC}, - {0x000AC1, 0x000AC5}, - {0x000AC7, 0x000AC8}, - {0x000ACD, 0x000ACD}, - {0x000AE2, 0x000AE3}, - {0x000AFA, 0x000AFF}, - {0x000B01, 0x000B01}, - {0x000B3C, 0x000B3C}, - {0x000B3E, 0x000B3F}, - {0x000B41, 0x000B44}, - {0x000B4D, 0x000B4D}, - {0x000B55, 0x000B57}, - {0x000B62, 0x000B63}, - {0x000B82, 0x000B82}, - {0x000BBE, 0x000BBE}, - {0x000BC0, 0x000BC0}, - {0x000BCD, 0x000BCD}, - {0x000BD7, 0x000BD7}, - {0x000C00, 0x000C00}, - {0x000C04, 0x000C04}, - {0x000C3C, 0x000C3C}, - {0x000C3E, 0x000C40}, - {0x000C46, 0x000C48}, - {0x000C4A, 0x000C4D}, - {0x000C55, 0x000C56}, - {0x000C62, 0x000C63}, - {0x000C81, 0x000C81}, - {0x000CBC, 0x000CBC}, - {0x000CBF, 0x000CBF}, - {0x000CC2, 0x000CC2}, - {0x000CC6, 0x000CC6}, - {0x000CCC, 0x000CCD}, - {0x000CD5, 0x000CD6}, - {0x000CE2, 0x000CE3}, - {0x000D00, 0x000D01}, - {0x000D3B, 0x000D3C}, - {0x000D3E, 0x000D3E}, - {0x000D41, 0x000D44}, - {0x000D4D, 0x000D4D}, - {0x000D57, 0x000D57}, - {0x000D62, 0x000D63}, - {0x000D81, 0x000D81}, - {0x000DCA, 0x000DCA}, - {0x000DCF, 0x000DCF}, - {0x000DD2, 0x000DD4}, - {0x000DD6, 0x000DD6}, - {0x000DDF, 0x000DDF}, - {0x000E31, 0x000E31}, - {0x000E34, 0x000E3A}, - {0x000E47, 0x000E4E}, - {0x000EB1, 0x000EB1}, - {0x000EB4, 0x000EBC}, - {0x000EC8, 0x000ECE}, - {0x000F18, 0x000F19}, - {0x000F35, 0x000F35}, - {0x000F37, 0x000F37}, - {0x000F39, 0x000F39}, - {0x000F71, 0x000F7E}, - {0x000F80, 0x000F84}, - {0x000F86, 0x000F87}, - {0x000F8D, 0x000F97}, - {0x000F99, 0x000FBC}, - {0x000FC6, 0x000FC6}, - {0x00102D, 0x001030}, - {0x001032, 0x001037}, - {0x001039, 0x00103A}, - {0x00103D, 0x00103E}, - {0x001058, 0x001059}, - {0x00105E, 0x001060}, - {0x001071, 0x001074}, - {0x001082, 0x001082}, - {0x001085, 0x001086}, - {0x00108D, 0x00108D}, - {0x00109D, 0x00109D}, - {0x00135D, 0x00135F}, - {0x001712, 0x001714}, - {0x001732, 0x001733}, - {0x001752, 0x001753}, - {0x001772, 0x001773}, - {0x0017B4, 0x0017B5}, - {0x0017B7, 0x0017BD}, - {0x0017C6, 0x0017C6}, - {0x0017C9, 0x0017D3}, - {0x0017DD, 0x0017DD}, - {0x00180B, 0x00180D}, - {0x00180F, 0x00180F}, - {0x001885, 0x001886}, - {0x0018A9, 0x0018A9}, - {0x001920, 0x001922}, - {0x001927, 0x001928}, - {0x001932, 0x001932}, - {0x001939, 0x00193B}, - {0x001A17, 0x001A18}, - {0x001A1B, 0x001A1B}, - {0x001A56, 0x001A56}, - {0x001A58, 0x001A5E}, - {0x001A60, 0x001A60}, - {0x001A62, 0x001A62}, - {0x001A65, 0x001A6C}, - {0x001A73, 0x001A7C}, - {0x001A7F, 0x001A7F}, - {0x001AB0, 0x001ACE}, - {0x001B00, 0x001B03}, - {0x001B34, 0x001B3A}, - {0x001B3C, 0x001B3C}, - {0x001B42, 0x001B42}, - {0x001B6B, 0x001B73}, - {0x001B80, 0x001B81}, - {0x001BA2, 0x001BA5}, - {0x001BA8, 0x001BA9}, - {0x001BAB, 0x001BAD}, - {0x001BE6, 0x001BE6}, - {0x001BE8, 0x001BE9}, - {0x001BED, 0x001BED}, - {0x001BEF, 0x001BF1}, - {0x001C2C, 0x001C33}, - {0x001C36, 0x001C37}, - {0x001CD0, 0x001CD2}, - {0x001CD4, 0x001CE0}, - {0x001CE2, 0x001CE8}, - {0x001CED, 0x001CED}, - {0x001CF4, 0x001CF4}, - {0x001CF8, 0x001CF9}, - {0x001DC0, 0x001DFF}, - {0x00200C, 0x00200C}, - {0x0020D0, 0x0020F0}, - {0x002CEF, 0x002CF1}, - {0x002D7F, 0x002D7F}, - {0x002DE0, 0x002DFF}, - {0x00302A, 0x00302F}, - {0x003099, 0x00309A}, - {0x00A66F, 0x00A672}, - {0x00A674, 0x00A67D}, - {0x00A69E, 0x00A69F}, - {0x00A6F0, 0x00A6F1}, - {0x00A802, 0x00A802}, - {0x00A806, 0x00A806}, - {0x00A80B, 0x00A80B}, - {0x00A825, 0x00A826}, - {0x00A82C, 0x00A82C}, - {0x00A8C4, 0x00A8C5}, - {0x00A8E0, 0x00A8F1}, - {0x00A8FF, 0x00A8FF}, - {0x00A926, 0x00A92D}, - {0x00A947, 0x00A951}, - {0x00A980, 0x00A982}, - {0x00A9B3, 0x00A9B3}, - {0x00A9B6, 0x00A9B9}, - {0x00A9BC, 0x00A9BD}, - {0x00A9E5, 0x00A9E5}, - {0x00AA29, 0x00AA2E}, - {0x00AA31, 0x00AA32}, - {0x00AA35, 0x00AA36}, - {0x00AA43, 0x00AA43}, - {0x00AA4C, 0x00AA4C}, - {0x00AA7C, 0x00AA7C}, - {0x00AAB0, 0x00AAB0}, - {0x00AAB2, 0x00AAB4}, - {0x00AAB7, 0x00AAB8}, - {0x00AABE, 0x00AABF}, - {0x00AAC1, 0x00AAC1}, - {0x00AAEC, 0x00AAED}, - {0x00AAF6, 0x00AAF6}, - {0x00ABE5, 0x00ABE5}, - {0x00ABE8, 0x00ABE8}, - {0x00ABED, 0x00ABED}, - {0x00FB1E, 0x00FB1E}, - {0x00FE00, 0x00FE0F}, - {0x00FE20, 0x00FE2F}, - {0x00FF9E, 0x00FF9F}, - {0x0101FD, 0x0101FD}, - {0x0102E0, 0x0102E0}, - {0x010376, 0x01037A}, - {0x010A01, 0x010A03}, - {0x010A05, 0x010A06}, - {0x010A0C, 0x010A0F}, - {0x010A38, 0x010A3A}, - {0x010A3F, 0x010A3F}, - {0x010AE5, 0x010AE6}, - {0x010D24, 0x010D27}, - {0x010EAB, 0x010EAC}, - {0x010EFD, 0x010EFF}, - {0x010F46, 0x010F50}, - {0x010F82, 0x010F85}, - {0x011001, 0x011001}, - {0x011038, 0x011046}, - {0x011070, 0x011070}, - {0x011073, 0x011074}, - {0x01107F, 0x011081}, - {0x0110B3, 0x0110B6}, - {0x0110B9, 0x0110BA}, - {0x0110C2, 0x0110C2}, - {0x011100, 0x011102}, - {0x011127, 0x01112B}, - {0x01112D, 0x011134}, - {0x011173, 0x011173}, - {0x011180, 0x011181}, - {0x0111B6, 0x0111BE}, - {0x0111C9, 0x0111CC}, - {0x0111CF, 0x0111CF}, - {0x01122F, 0x011231}, - {0x011234, 0x011234}, - {0x011236, 0x011237}, - {0x01123E, 0x01123E}, - {0x011241, 0x011241}, - {0x0112DF, 0x0112DF}, - {0x0112E3, 0x0112EA}, - {0x011300, 0x011301}, - {0x01133B, 0x01133C}, - {0x01133E, 0x01133E}, - {0x011340, 0x011340}, - {0x011357, 0x011357}, - {0x011366, 0x01136C}, - {0x011370, 0x011374}, - {0x011438, 0x01143F}, - {0x011442, 0x011444}, - {0x011446, 0x011446}, - {0x01145E, 0x01145E}, - {0x0114B0, 0x0114B0}, - {0x0114B3, 0x0114B8}, - {0x0114BA, 0x0114BA}, - {0x0114BD, 0x0114BD}, - {0x0114BF, 0x0114C0}, - {0x0114C2, 0x0114C3}, - {0x0115AF, 0x0115AF}, - {0x0115B2, 0x0115B5}, - {0x0115BC, 0x0115BD}, - {0x0115BF, 0x0115C0}, - {0x0115DC, 0x0115DD}, - {0x011633, 0x01163A}, - {0x01163D, 0x01163D}, - {0x01163F, 0x011640}, - {0x0116AB, 0x0116AB}, - {0x0116AD, 0x0116AD}, - {0x0116B0, 0x0116B5}, - {0x0116B7, 0x0116B7}, - {0x01171D, 0x01171F}, - {0x011722, 0x011725}, - {0x011727, 0x01172B}, - {0x01182F, 0x011837}, - {0x011839, 0x01183A}, - {0x011930, 0x011930}, - {0x01193B, 0x01193C}, - {0x01193E, 0x01193E}, - {0x011943, 0x011943}, - {0x0119D4, 0x0119D7}, - {0x0119DA, 0x0119DB}, - {0x0119E0, 0x0119E0}, - {0x011A01, 0x011A0A}, - {0x011A33, 0x011A38}, - {0x011A3B, 0x011A3E}, - {0x011A47, 0x011A47}, - {0x011A51, 0x011A56}, - {0x011A59, 0x011A5B}, - {0x011A8A, 0x011A96}, - {0x011A98, 0x011A99}, - {0x011C30, 0x011C36}, - {0x011C38, 0x011C3D}, - {0x011C3F, 0x011C3F}, - {0x011C92, 0x011CA7}, - {0x011CAA, 0x011CB0}, - {0x011CB2, 0x011CB3}, - {0x011CB5, 0x011CB6}, - {0x011D31, 0x011D36}, - {0x011D3A, 0x011D3A}, - {0x011D3C, 0x011D3D}, - {0x011D3F, 0x011D45}, - {0x011D47, 0x011D47}, - {0x011D90, 0x011D91}, - {0x011D95, 0x011D95}, - {0x011D97, 0x011D97}, - {0x011EF3, 0x011EF4}, - {0x011F00, 0x011F01}, - {0x011F36, 0x011F3A}, - {0x011F40, 0x011F40}, - {0x011F42, 0x011F42}, - {0x013440, 0x013440}, - {0x013447, 0x013455}, - {0x016AF0, 0x016AF4}, - {0x016B30, 0x016B36}, - {0x016F4F, 0x016F4F}, - {0x016F8F, 0x016F92}, - {0x016FE4, 0x016FE4}, - {0x01BC9D, 0x01BC9E}, - {0x01CF00, 0x01CF2D}, - {0x01CF30, 0x01CF46}, - {0x01D165, 0x01D165}, - {0x01D167, 0x01D169}, - {0x01D16E, 0x01D172}, - {0x01D17B, 0x01D182}, - {0x01D185, 0x01D18B}, - {0x01D1AA, 0x01D1AD}, - {0x01D242, 0x01D244}, - {0x01DA00, 0x01DA36}, - {0x01DA3B, 0x01DA6C}, - {0x01DA75, 0x01DA75}, - {0x01DA84, 0x01DA84}, - {0x01DA9B, 0x01DA9F}, - {0x01DAA1, 0x01DAAF}, - {0x01E000, 0x01E006}, - {0x01E008, 0x01E018}, - {0x01E01B, 0x01E021}, - {0x01E023, 0x01E024}, - {0x01E026, 0x01E02A}, - {0x01E08F, 0x01E08F}, - {0x01E130, 0x01E136}, - {0x01E2AE, 0x01E2AE}, - {0x01E2EC, 0x01E2EF}, - {0x01E4EC, 0x01E4EF}, - {0x01E8D0, 0x01E8D6}, - {0x01E944, 0x01E94A}, - {0x0E0020, 0x0E007F}, - {0x0E0100, 0x0E01EF}, -}; - -#define TYPE bool -#define TABLE lookup_tbl -#define DEFAULT false -#define HAS_VALUE 0 -#include "internal/rtype/lookup-func.h" - -bool -rune_has_prop_grapheme_extend(rune ch) -{ - return -#if BIT_LOOKUP - ch <= LATIN1_MAX ? (mask & ch) : -#endif - lookup(ch); -} diff --git a/vendor/librune/lib/rtype/rune_has_prop_hex_digit.c b/vendor/librune/lib/rtype/rune_has_prop_hex_digit.c deleted file mode 100644 index 471f6c3..0000000 --- a/vendor/librune/lib/rtype/rune_has_prop_hex_digit.c +++ /dev/null @@ -1,36 +0,0 @@ -/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */ - -#include "rtype.h" - -#include "internal/common.h" - -#if BIT_LOOKUP -static const unsigned _BitInt(LATIN1_MAX + 1) mask = 0x7E0000007E03FF000000000000uwb; -#endif - -static const struct { - rune lo, hi; -} lookup_tbl[] = { - {0x000030, 0x000039}, - {0x000041, 0x000046}, - {0x000061, 0x000066}, - {0x00FF10, 0x00FF19}, - {0x00FF21, 0x00FF26}, - {0x00FF41, 0x00FF46}, -}; - -#define TYPE bool -#define TABLE lookup_tbl -#define DEFAULT false -#define HAS_VALUE 0 -#include "internal/rtype/lookup-func.h" - -bool -rune_has_prop_hex_digit(rune ch) -{ - return -#if BIT_LOOKUP - ch <= LATIN1_MAX ? (mask & ch) : -#endif - lookup(ch); -} diff --git a/vendor/librune/lib/rtype/rune_has_prop_id_compat_math_continue.c b/vendor/librune/lib/rtype/rune_has_prop_id_compat_math_continue.c deleted file mode 100644 index eb842bd..0000000 --- a/vendor/librune/lib/rtype/rune_has_prop_id_compat_math_continue.c +++ /dev/null @@ -1,48 +0,0 @@ -/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */ - -#include "rtype.h" - -#include "internal/common.h" - -#if BIT_LOOKUP -static const unsigned _BitInt(LATIN1_MAX + 1) mask = 0x20C00000000000000000000000000000000000000000000uwb; -#endif - -static const struct { - rune lo, hi; -} lookup_tbl[] = { - {0x0000B2, 0x0000B3}, - {0x0000B9, 0x0000B9}, - {0x002070, 0x002070}, - {0x002074, 0x00207E}, - {0x002080, 0x00208E}, - {0x002202, 0x002202}, - {0x002207, 0x002207}, - {0x00221E, 0x00221E}, - {0x01D6C1, 0x01D6C1}, - {0x01D6DB, 0x01D6DB}, - {0x01D6FB, 0x01D6FB}, - {0x01D715, 0x01D715}, - {0x01D735, 0x01D735}, - {0x01D74F, 0x01D74F}, - {0x01D76F, 0x01D76F}, - {0x01D789, 0x01D789}, - {0x01D7A9, 0x01D7A9}, - {0x01D7C3, 0x01D7C3}, -}; - -#define TYPE bool -#define TABLE lookup_tbl -#define DEFAULT false -#define HAS_VALUE 0 -#include "internal/rtype/lookup-func.h" - -bool -rune_has_prop_id_compat_math_continue(rune ch) -{ - return -#if BIT_LOOKUP - ch <= LATIN1_MAX ? (mask & ch) : -#endif - lookup(ch); -} diff --git a/vendor/librune/lib/rtype/rune_has_prop_id_compat_math_start.c b/vendor/librune/lib/rtype/rune_has_prop_id_compat_math_start.c deleted file mode 100644 index ee09cba..0000000 --- a/vendor/librune/lib/rtype/rune_has_prop_id_compat_math_start.c +++ /dev/null @@ -1,43 +0,0 @@ -/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */ - -#include "rtype.h" - -#include "internal/common.h" - -#if BIT_LOOKUP -static const unsigned _BitInt(LATIN1_MAX + 1) mask = 0x0uwb; -#endif - -static const struct { - rune lo, hi; -} lookup_tbl[] = { - {0x002202, 0x002202}, - {0x002207, 0x002207}, - {0x00221E, 0x00221E}, - {0x01D6C1, 0x01D6C1}, - {0x01D6DB, 0x01D6DB}, - {0x01D6FB, 0x01D6FB}, - {0x01D715, 0x01D715}, - {0x01D735, 0x01D735}, - {0x01D74F, 0x01D74F}, - {0x01D76F, 0x01D76F}, - {0x01D789, 0x01D789}, - {0x01D7A9, 0x01D7A9}, - {0x01D7C3, 0x01D7C3}, -}; - -#define TYPE bool -#define TABLE lookup_tbl -#define DEFAULT false -#define HAS_VALUE 0 -#include "internal/rtype/lookup-func.h" - -bool -rune_has_prop_id_compat_math_start(rune ch) -{ - return -#if BIT_LOOKUP - ch <= LATIN1_MAX ? (mask & ch) : -#endif - lookup(ch); -} diff --git a/vendor/librune/lib/rtype/rune_has_prop_id_continue.c b/vendor/librune/lib/rtype/rune_has_prop_id_continue.c deleted file mode 100644 index 2bbf130..0000000 --- a/vendor/librune/lib/rtype/rune_has_prop_id_continue.c +++ /dev/null @@ -1,799 +0,0 @@ -/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */ - -#include "rtype.h" - -#include "internal/common.h" - -#if BIT_LOOKUP -static const unsigned _BitInt(LATIN1_MAX + 1) mask = 0xFF7FFFFFFF7FFFFF04A004000000000007FFFFFE87FFFFFE03FF000000000000uwb; -#endif - -static const struct { - rune lo, hi; -} lookup_tbl[] = { - {0x000030, 0x000039}, - {0x000041, 0x00005A}, - {0x00005F, 0x00005F}, - {0x000061, 0x00007A}, - {0x0000AA, 0x0000AA}, - {0x0000B5, 0x0000B5}, - {0x0000B7, 0x0000B7}, - {0x0000BA, 0x0000BA}, - {0x0000C0, 0x0000D6}, - {0x0000D8, 0x0000F6}, - {0x0000F8, 0x0002C1}, - {0x0002C6, 0x0002D1}, - {0x0002E0, 0x0002E4}, - {0x0002EC, 0x0002EC}, - {0x0002EE, 0x0002EE}, - {0x000300, 0x000374}, - {0x000376, 0x000377}, - {0x00037A, 0x00037D}, - {0x00037F, 0x00037F}, - {0x000386, 0x00038A}, - {0x00038C, 0x00038C}, - {0x00038E, 0x0003A1}, - {0x0003A3, 0x0003F5}, - {0x0003F7, 0x000481}, - {0x000483, 0x000487}, - {0x00048A, 0x00052F}, - {0x000531, 0x000556}, - {0x000559, 0x000559}, - {0x000560, 0x000588}, - {0x000591, 0x0005BD}, - {0x0005BF, 0x0005BF}, - {0x0005C1, 0x0005C2}, - {0x0005C4, 0x0005C5}, - {0x0005C7, 0x0005C7}, - {0x0005D0, 0x0005EA}, - {0x0005EF, 0x0005F2}, - {0x000610, 0x00061A}, - {0x000620, 0x000669}, - {0x00066E, 0x0006D3}, - {0x0006D5, 0x0006DC}, - {0x0006DF, 0x0006E8}, - {0x0006EA, 0x0006FC}, - {0x0006FF, 0x0006FF}, - {0x000710, 0x00074A}, - {0x00074D, 0x0007B1}, - {0x0007C0, 0x0007F5}, - {0x0007FA, 0x0007FA}, - {0x0007FD, 0x0007FD}, - {0x000800, 0x00082D}, - {0x000840, 0x00085B}, - {0x000860, 0x00086A}, - {0x000870, 0x000887}, - {0x000889, 0x00088E}, - {0x000898, 0x0008E1}, - {0x0008E3, 0x000963}, - {0x000966, 0x00096F}, - {0x000971, 0x000983}, - {0x000985, 0x00098C}, - {0x00098F, 0x000990}, - {0x000993, 0x0009A8}, - {0x0009AA, 0x0009B0}, - {0x0009B2, 0x0009B2}, - {0x0009B6, 0x0009B9}, - {0x0009BC, 0x0009C4}, - {0x0009C7, 0x0009C8}, - {0x0009CB, 0x0009CE}, - {0x0009D7, 0x0009D7}, - {0x0009DC, 0x0009DD}, - {0x0009DF, 0x0009E3}, - {0x0009E6, 0x0009F1}, - {0x0009FC, 0x0009FC}, - {0x0009FE, 0x0009FE}, - {0x000A01, 0x000A03}, - {0x000A05, 0x000A0A}, - {0x000A0F, 0x000A10}, - {0x000A13, 0x000A28}, - {0x000A2A, 0x000A30}, - {0x000A32, 0x000A33}, - {0x000A35, 0x000A36}, - {0x000A38, 0x000A39}, - {0x000A3C, 0x000A3C}, - {0x000A3E, 0x000A42}, - {0x000A47, 0x000A48}, - {0x000A4B, 0x000A4D}, - {0x000A51, 0x000A51}, - {0x000A59, 0x000A5C}, - {0x000A5E, 0x000A5E}, - {0x000A66, 0x000A75}, - {0x000A81, 0x000A83}, - {0x000A85, 0x000A8D}, - {0x000A8F, 0x000A91}, - {0x000A93, 0x000AA8}, - {0x000AAA, 0x000AB0}, - {0x000AB2, 0x000AB3}, - {0x000AB5, 0x000AB9}, - {0x000ABC, 0x000AC5}, - {0x000AC7, 0x000AC9}, - {0x000ACB, 0x000ACD}, - {0x000AD0, 0x000AD0}, - {0x000AE0, 0x000AE3}, - {0x000AE6, 0x000AEF}, - {0x000AF9, 0x000AFF}, - {0x000B01, 0x000B03}, - {0x000B05, 0x000B0C}, - {0x000B0F, 0x000B10}, - {0x000B13, 0x000B28}, - {0x000B2A, 0x000B30}, - {0x000B32, 0x000B33}, - {0x000B35, 0x000B39}, - {0x000B3C, 0x000B44}, - {0x000B47, 0x000B48}, - {0x000B4B, 0x000B4D}, - {0x000B55, 0x000B57}, - {0x000B5C, 0x000B5D}, - {0x000B5F, 0x000B63}, - {0x000B66, 0x000B6F}, - {0x000B71, 0x000B71}, - {0x000B82, 0x000B83}, - {0x000B85, 0x000B8A}, - {0x000B8E, 0x000B90}, - {0x000B92, 0x000B95}, - {0x000B99, 0x000B9A}, - {0x000B9C, 0x000B9C}, - {0x000B9E, 0x000B9F}, - {0x000BA3, 0x000BA4}, - {0x000BA8, 0x000BAA}, - {0x000BAE, 0x000BB9}, - {0x000BBE, 0x000BC2}, - {0x000BC6, 0x000BC8}, - {0x000BCA, 0x000BCD}, - {0x000BD0, 0x000BD0}, - {0x000BD7, 0x000BD7}, - {0x000BE6, 0x000BEF}, - {0x000C00, 0x000C0C}, - {0x000C0E, 0x000C10}, - {0x000C12, 0x000C28}, - {0x000C2A, 0x000C39}, - {0x000C3C, 0x000C44}, - {0x000C46, 0x000C48}, - {0x000C4A, 0x000C4D}, - {0x000C55, 0x000C56}, - {0x000C58, 0x000C5A}, - {0x000C5D, 0x000C5D}, - {0x000C60, 0x000C63}, - {0x000C66, 0x000C6F}, - {0x000C80, 0x000C83}, - {0x000C85, 0x000C8C}, - {0x000C8E, 0x000C90}, - {0x000C92, 0x000CA8}, - {0x000CAA, 0x000CB3}, - {0x000CB5, 0x000CB9}, - {0x000CBC, 0x000CC4}, - {0x000CC6, 0x000CC8}, - {0x000CCA, 0x000CCD}, - {0x000CD5, 0x000CD6}, - {0x000CDD, 0x000CDE}, - {0x000CE0, 0x000CE3}, - {0x000CE6, 0x000CEF}, - {0x000CF1, 0x000CF3}, - {0x000D00, 0x000D0C}, - {0x000D0E, 0x000D10}, - {0x000D12, 0x000D44}, - {0x000D46, 0x000D48}, - {0x000D4A, 0x000D4E}, - {0x000D54, 0x000D57}, - {0x000D5F, 0x000D63}, - {0x000D66, 0x000D6F}, - {0x000D7A, 0x000D7F}, - {0x000D81, 0x000D83}, - {0x000D85, 0x000D96}, - {0x000D9A, 0x000DB1}, - {0x000DB3, 0x000DBB}, - {0x000DBD, 0x000DBD}, - {0x000DC0, 0x000DC6}, - {0x000DCA, 0x000DCA}, - {0x000DCF, 0x000DD4}, - {0x000DD6, 0x000DD6}, - {0x000DD8, 0x000DDF}, - {0x000DE6, 0x000DEF}, - {0x000DF2, 0x000DF3}, - {0x000E01, 0x000E3A}, - {0x000E40, 0x000E4E}, - {0x000E50, 0x000E59}, - {0x000E81, 0x000E82}, - {0x000E84, 0x000E84}, - {0x000E86, 0x000E8A}, - {0x000E8C, 0x000EA3}, - {0x000EA5, 0x000EA5}, - {0x000EA7, 0x000EBD}, - {0x000EC0, 0x000EC4}, - {0x000EC6, 0x000EC6}, - {0x000EC8, 0x000ECE}, - {0x000ED0, 0x000ED9}, - {0x000EDC, 0x000EDF}, - {0x000F00, 0x000F00}, - {0x000F18, 0x000F19}, - {0x000F20, 0x000F29}, - {0x000F35, 0x000F35}, - {0x000F37, 0x000F37}, - {0x000F39, 0x000F39}, - {0x000F3E, 0x000F47}, - {0x000F49, 0x000F6C}, - {0x000F71, 0x000F84}, - {0x000F86, 0x000F97}, - {0x000F99, 0x000FBC}, - {0x000FC6, 0x000FC6}, - {0x001000, 0x001049}, - {0x001050, 0x00109D}, - {0x0010A0, 0x0010C5}, - {0x0010C7, 0x0010C7}, - {0x0010CD, 0x0010CD}, - {0x0010D0, 0x0010FA}, - {0x0010FC, 0x001248}, - {0x00124A, 0x00124D}, - {0x001250, 0x001256}, - {0x001258, 0x001258}, - {0x00125A, 0x00125D}, - {0x001260, 0x001288}, - {0x00128A, 0x00128D}, - {0x001290, 0x0012B0}, - {0x0012B2, 0x0012B5}, - {0x0012B8, 0x0012BE}, - {0x0012C0, 0x0012C0}, - {0x0012C2, 0x0012C5}, - {0x0012C8, 0x0012D6}, - {0x0012D8, 0x001310}, - {0x001312, 0x001315}, - {0x001318, 0x00135A}, - {0x00135D, 0x00135F}, - {0x001369, 0x001371}, - {0x001380, 0x00138F}, - {0x0013A0, 0x0013F5}, - {0x0013F8, 0x0013FD}, - {0x001401, 0x00166C}, - {0x00166F, 0x00167F}, - {0x001681, 0x00169A}, - {0x0016A0, 0x0016EA}, - {0x0016EE, 0x0016F8}, - {0x001700, 0x001715}, - {0x00171F, 0x001734}, - {0x001740, 0x001753}, - {0x001760, 0x00176C}, - {0x00176E, 0x001770}, - {0x001772, 0x001773}, - {0x001780, 0x0017D3}, - {0x0017D7, 0x0017D7}, - {0x0017DC, 0x0017DD}, - {0x0017E0, 0x0017E9}, - {0x00180B, 0x00180D}, - {0x00180F, 0x001819}, - {0x001820, 0x001878}, - {0x001880, 0x0018AA}, - {0x0018B0, 0x0018F5}, - {0x001900, 0x00191E}, - {0x001920, 0x00192B}, - {0x001930, 0x00193B}, - {0x001946, 0x00196D}, - {0x001970, 0x001974}, - {0x001980, 0x0019AB}, - {0x0019B0, 0x0019C9}, - {0x0019D0, 0x0019DA}, - {0x001A00, 0x001A1B}, - {0x001A20, 0x001A5E}, - {0x001A60, 0x001A7C}, - {0x001A7F, 0x001A89}, - {0x001A90, 0x001A99}, - {0x001AA7, 0x001AA7}, - {0x001AB0, 0x001ABD}, - {0x001ABF, 0x001ACE}, - {0x001B00, 0x001B4C}, - {0x001B50, 0x001B59}, - {0x001B6B, 0x001B73}, - {0x001B80, 0x001BF3}, - {0x001C00, 0x001C37}, - {0x001C40, 0x001C49}, - {0x001C4D, 0x001C7D}, - {0x001C80, 0x001C88}, - {0x001C90, 0x001CBA}, - {0x001CBD, 0x001CBF}, - {0x001CD0, 0x001CD2}, - {0x001CD4, 0x001CFA}, - {0x001D00, 0x001F15}, - {0x001F18, 0x001F1D}, - {0x001F20, 0x001F45}, - {0x001F48, 0x001F4D}, - {0x001F50, 0x001F57}, - {0x001F59, 0x001F59}, - {0x001F5B, 0x001F5B}, - {0x001F5D, 0x001F5D}, - {0x001F5F, 0x001F7D}, - {0x001F80, 0x001FB4}, - {0x001FB6, 0x001FBC}, - {0x001FBE, 0x001FBE}, - {0x001FC2, 0x001FC4}, - {0x001FC6, 0x001FCC}, - {0x001FD0, 0x001FD3}, - {0x001FD6, 0x001FDB}, - {0x001FE0, 0x001FEC}, - {0x001FF2, 0x001FF4}, - {0x001FF6, 0x001FFC}, - {0x00200C, 0x00200D}, - {0x00203F, 0x002040}, - {0x002054, 0x002054}, - {0x002071, 0x002071}, - {0x00207F, 0x00207F}, - {0x002090, 0x00209C}, - {0x0020D0, 0x0020DC}, - {0x0020E1, 0x0020E1}, - {0x0020E5, 0x0020F0}, - {0x002102, 0x002102}, - {0x002107, 0x002107}, - {0x00210A, 0x002113}, - {0x002115, 0x002115}, - {0x002118, 0x00211D}, - {0x002124, 0x002124}, - {0x002126, 0x002126}, - {0x002128, 0x002128}, - {0x00212A, 0x002139}, - {0x00213C, 0x00213F}, - {0x002145, 0x002149}, - {0x00214E, 0x00214E}, - {0x002160, 0x002188}, - {0x002C00, 0x002CE4}, - {0x002CEB, 0x002CF3}, - {0x002D00, 0x002D25}, - {0x002D27, 0x002D27}, - {0x002D2D, 0x002D2D}, - {0x002D30, 0x002D67}, - {0x002D6F, 0x002D6F}, - {0x002D7F, 0x002D96}, - {0x002DA0, 0x002DA6}, - {0x002DA8, 0x002DAE}, - {0x002DB0, 0x002DB6}, - {0x002DB8, 0x002DBE}, - {0x002DC0, 0x002DC6}, - {0x002DC8, 0x002DCE}, - {0x002DD0, 0x002DD6}, - {0x002DD8, 0x002DDE}, - {0x002DE0, 0x002DFF}, - {0x003005, 0x003007}, - {0x003021, 0x00302F}, - {0x003031, 0x003035}, - {0x003038, 0x00303C}, - {0x003041, 0x003096}, - {0x003099, 0x00309F}, - {0x0030A1, 0x0030FF}, - {0x003105, 0x00312F}, - {0x003131, 0x00318E}, - {0x0031A0, 0x0031BF}, - {0x0031F0, 0x0031FF}, - {0x003400, 0x004DBF}, - {0x004E00, 0x00A48C}, - {0x00A4D0, 0x00A4FD}, - {0x00A500, 0x00A60C}, - {0x00A610, 0x00A62B}, - {0x00A640, 0x00A66F}, - {0x00A674, 0x00A67D}, - {0x00A67F, 0x00A6F1}, - {0x00A717, 0x00A71F}, - {0x00A722, 0x00A788}, - {0x00A78B, 0x00A7CA}, - {0x00A7D0, 0x00A7D1}, - {0x00A7D3, 0x00A7D3}, - {0x00A7D5, 0x00A7D9}, - {0x00A7F2, 0x00A827}, - {0x00A82C, 0x00A82C}, - {0x00A840, 0x00A873}, - {0x00A880, 0x00A8C5}, - {0x00A8D0, 0x00A8D9}, - {0x00A8E0, 0x00A8F7}, - {0x00A8FB, 0x00A8FB}, - {0x00A8FD, 0x00A92D}, - {0x00A930, 0x00A953}, - {0x00A960, 0x00A97C}, - {0x00A980, 0x00A9C0}, - {0x00A9CF, 0x00A9D9}, - {0x00A9E0, 0x00A9FE}, - {0x00AA00, 0x00AA36}, - {0x00AA40, 0x00AA4D}, - {0x00AA50, 0x00AA59}, - {0x00AA60, 0x00AA76}, - {0x00AA7A, 0x00AAC2}, - {0x00AADB, 0x00AADD}, - {0x00AAE0, 0x00AAEF}, - {0x00AAF2, 0x00AAF6}, - {0x00AB01, 0x00AB06}, - {0x00AB09, 0x00AB0E}, - {0x00AB11, 0x00AB16}, - {0x00AB20, 0x00AB26}, - {0x00AB28, 0x00AB2E}, - {0x00AB30, 0x00AB5A}, - {0x00AB5C, 0x00AB69}, - {0x00AB70, 0x00ABEA}, - {0x00ABEC, 0x00ABED}, - {0x00ABF0, 0x00ABF9}, - {0x00AC00, 0x00D7A3}, - {0x00D7B0, 0x00D7C6}, - {0x00D7CB, 0x00D7FB}, - {0x00F900, 0x00FA6D}, - {0x00FA70, 0x00FAD9}, - {0x00FB00, 0x00FB06}, - {0x00FB13, 0x00FB17}, - {0x00FB1D, 0x00FB28}, - {0x00FB2A, 0x00FB36}, - {0x00FB38, 0x00FB3C}, - {0x00FB3E, 0x00FB3E}, - {0x00FB40, 0x00FB41}, - {0x00FB43, 0x00FB44}, - {0x00FB46, 0x00FBB1}, - {0x00FBD3, 0x00FD3D}, - {0x00FD50, 0x00FD8F}, - {0x00FD92, 0x00FDC7}, - {0x00FDF0, 0x00FDFB}, - {0x00FE00, 0x00FE0F}, - {0x00FE20, 0x00FE2F}, - {0x00FE33, 0x00FE34}, - {0x00FE4D, 0x00FE4F}, - {0x00FE70, 0x00FE74}, - {0x00FE76, 0x00FEFC}, - {0x00FF10, 0x00FF19}, - {0x00FF21, 0x00FF3A}, - {0x00FF3F, 0x00FF3F}, - {0x00FF41, 0x00FF5A}, - {0x00FF65, 0x00FFBE}, - {0x00FFC2, 0x00FFC7}, - {0x00FFCA, 0x00FFCF}, - {0x00FFD2, 0x00FFD7}, - {0x00FFDA, 0x00FFDC}, - {0x010000, 0x01000B}, - {0x01000D, 0x010026}, - {0x010028, 0x01003A}, - {0x01003C, 0x01003D}, - {0x01003F, 0x01004D}, - {0x010050, 0x01005D}, - {0x010080, 0x0100FA}, - {0x010140, 0x010174}, - {0x0101FD, 0x0101FD}, - {0x010280, 0x01029C}, - {0x0102A0, 0x0102D0}, - {0x0102E0, 0x0102E0}, - {0x010300, 0x01031F}, - {0x01032D, 0x01034A}, - {0x010350, 0x01037A}, - {0x010380, 0x01039D}, - {0x0103A0, 0x0103C3}, - {0x0103C8, 0x0103CF}, - {0x0103D1, 0x0103D5}, - {0x010400, 0x01049D}, - {0x0104A0, 0x0104A9}, - {0x0104B0, 0x0104D3}, - {0x0104D8, 0x0104FB}, - {0x010500, 0x010527}, - {0x010530, 0x010563}, - {0x010570, 0x01057A}, - {0x01057C, 0x01058A}, - {0x01058C, 0x010592}, - {0x010594, 0x010595}, - {0x010597, 0x0105A1}, - {0x0105A3, 0x0105B1}, - {0x0105B3, 0x0105B9}, - {0x0105BB, 0x0105BC}, - {0x010600, 0x010736}, - {0x010740, 0x010755}, - {0x010760, 0x010767}, - {0x010780, 0x010785}, - {0x010787, 0x0107B0}, - {0x0107B2, 0x0107BA}, - {0x010800, 0x010805}, - {0x010808, 0x010808}, - {0x01080A, 0x010835}, - {0x010837, 0x010838}, - {0x01083C, 0x01083C}, - {0x01083F, 0x010855}, - {0x010860, 0x010876}, - {0x010880, 0x01089E}, - {0x0108E0, 0x0108F2}, - {0x0108F4, 0x0108F5}, - {0x010900, 0x010915}, - {0x010920, 0x010939}, - {0x010980, 0x0109B7}, - {0x0109BE, 0x0109BF}, - {0x010A00, 0x010A03}, - {0x010A05, 0x010A06}, - {0x010A0C, 0x010A13}, - {0x010A15, 0x010A17}, - {0x010A19, 0x010A35}, - {0x010A38, 0x010A3A}, - {0x010A3F, 0x010A3F}, - {0x010A60, 0x010A7C}, - {0x010A80, 0x010A9C}, - {0x010AC0, 0x010AC7}, - {0x010AC9, 0x010AE6}, - {0x010B00, 0x010B35}, - {0x010B40, 0x010B55}, - {0x010B60, 0x010B72}, - {0x010B80, 0x010B91}, - {0x010C00, 0x010C48}, - {0x010C80, 0x010CB2}, - {0x010CC0, 0x010CF2}, - {0x010D00, 0x010D27}, - {0x010D30, 0x010D39}, - {0x010E80, 0x010EA9}, - {0x010EAB, 0x010EAC}, - {0x010EB0, 0x010EB1}, - {0x010EFD, 0x010F1C}, - {0x010F27, 0x010F27}, - {0x010F30, 0x010F50}, - {0x010F70, 0x010F85}, - {0x010FB0, 0x010FC4}, - {0x010FE0, 0x010FF6}, - {0x011000, 0x011046}, - {0x011066, 0x011075}, - {0x01107F, 0x0110BA}, - {0x0110C2, 0x0110C2}, - {0x0110D0, 0x0110E8}, - {0x0110F0, 0x0110F9}, - {0x011100, 0x011134}, - {0x011136, 0x01113F}, - {0x011144, 0x011147}, - {0x011150, 0x011173}, - {0x011176, 0x011176}, - {0x011180, 0x0111C4}, - {0x0111C9, 0x0111CC}, - {0x0111CE, 0x0111DA}, - {0x0111DC, 0x0111DC}, - {0x011200, 0x011211}, - {0x011213, 0x011237}, - {0x01123E, 0x011241}, - {0x011280, 0x011286}, - {0x011288, 0x011288}, - {0x01128A, 0x01128D}, - {0x01128F, 0x01129D}, - {0x01129F, 0x0112A8}, - {0x0112B0, 0x0112EA}, - {0x0112F0, 0x0112F9}, - {0x011300, 0x011303}, - {0x011305, 0x01130C}, - {0x01130F, 0x011310}, - {0x011313, 0x011328}, - {0x01132A, 0x011330}, - {0x011332, 0x011333}, - {0x011335, 0x011339}, - {0x01133B, 0x011344}, - {0x011347, 0x011348}, - {0x01134B, 0x01134D}, - {0x011350, 0x011350}, - {0x011357, 0x011357}, - {0x01135D, 0x011363}, - {0x011366, 0x01136C}, - {0x011370, 0x011374}, - {0x011400, 0x01144A}, - {0x011450, 0x011459}, - {0x01145E, 0x011461}, - {0x011480, 0x0114C5}, - {0x0114C7, 0x0114C7}, - {0x0114D0, 0x0114D9}, - {0x011580, 0x0115B5}, - {0x0115B8, 0x0115C0}, - {0x0115D8, 0x0115DD}, - {0x011600, 0x011640}, - {0x011644, 0x011644}, - {0x011650, 0x011659}, - {0x011680, 0x0116B8}, - {0x0116C0, 0x0116C9}, - {0x011700, 0x01171A}, - {0x01171D, 0x01172B}, - {0x011730, 0x011739}, - {0x011740, 0x011746}, - {0x011800, 0x01183A}, - {0x0118A0, 0x0118E9}, - {0x0118FF, 0x011906}, - {0x011909, 0x011909}, - {0x01190C, 0x011913}, - {0x011915, 0x011916}, - {0x011918, 0x011935}, - {0x011937, 0x011938}, - {0x01193B, 0x011943}, - {0x011950, 0x011959}, - {0x0119A0, 0x0119A7}, - {0x0119AA, 0x0119D7}, - {0x0119DA, 0x0119E1}, - {0x0119E3, 0x0119E4}, - {0x011A00, 0x011A3E}, - {0x011A47, 0x011A47}, - {0x011A50, 0x011A99}, - {0x011A9D, 0x011A9D}, - {0x011AB0, 0x011AF8}, - {0x011C00, 0x011C08}, - {0x011C0A, 0x011C36}, - {0x011C38, 0x011C40}, - {0x011C50, 0x011C59}, - {0x011C72, 0x011C8F}, - {0x011C92, 0x011CA7}, - {0x011CA9, 0x011CB6}, - {0x011D00, 0x011D06}, - {0x011D08, 0x011D09}, - {0x011D0B, 0x011D36}, - {0x011D3A, 0x011D3A}, - {0x011D3C, 0x011D3D}, - {0x011D3F, 0x011D47}, - {0x011D50, 0x011D59}, - {0x011D60, 0x011D65}, - {0x011D67, 0x011D68}, - {0x011D6A, 0x011D8E}, - {0x011D90, 0x011D91}, - {0x011D93, 0x011D98}, - {0x011DA0, 0x011DA9}, - {0x011EE0, 0x011EF6}, - {0x011F00, 0x011F10}, - {0x011F12, 0x011F3A}, - {0x011F3E, 0x011F42}, - {0x011F50, 0x011F59}, - {0x011FB0, 0x011FB0}, - {0x012000, 0x012399}, - {0x012400, 0x01246E}, - {0x012480, 0x012543}, - {0x012F90, 0x012FF0}, - {0x013000, 0x01342F}, - {0x013440, 0x013455}, - {0x014400, 0x014646}, - {0x016800, 0x016A38}, - {0x016A40, 0x016A5E}, - {0x016A60, 0x016A69}, - {0x016A70, 0x016ABE}, - {0x016AC0, 0x016AC9}, - {0x016AD0, 0x016AED}, - {0x016AF0, 0x016AF4}, - {0x016B00, 0x016B36}, - {0x016B40, 0x016B43}, - {0x016B50, 0x016B59}, - {0x016B63, 0x016B77}, - {0x016B7D, 0x016B8F}, - {0x016E40, 0x016E7F}, - {0x016F00, 0x016F4A}, - {0x016F4F, 0x016F87}, - {0x016F8F, 0x016F9F}, - {0x016FE0, 0x016FE1}, - {0x016FE3, 0x016FE4}, - {0x016FF0, 0x016FF1}, - {0x017000, 0x0187F7}, - {0x018800, 0x018CD5}, - {0x018D00, 0x018D08}, - {0x01AFF0, 0x01AFF3}, - {0x01AFF5, 0x01AFFB}, - {0x01AFFD, 0x01AFFE}, - {0x01B000, 0x01B122}, - {0x01B132, 0x01B132}, - {0x01B150, 0x01B152}, - {0x01B155, 0x01B155}, - {0x01B164, 0x01B167}, - {0x01B170, 0x01B2FB}, - {0x01BC00, 0x01BC6A}, - {0x01BC70, 0x01BC7C}, - {0x01BC80, 0x01BC88}, - {0x01BC90, 0x01BC99}, - {0x01BC9D, 0x01BC9E}, - {0x01CF00, 0x01CF2D}, - {0x01CF30, 0x01CF46}, - {0x01D165, 0x01D169}, - {0x01D16D, 0x01D172}, - {0x01D17B, 0x01D182}, - {0x01D185, 0x01D18B}, - {0x01D1AA, 0x01D1AD}, - {0x01D242, 0x01D244}, - {0x01D400, 0x01D454}, - {0x01D456, 0x01D49C}, - {0x01D49E, 0x01D49F}, - {0x01D4A2, 0x01D4A2}, - {0x01D4A5, 0x01D4A6}, - {0x01D4A9, 0x01D4AC}, - {0x01D4AE, 0x01D4B9}, - {0x01D4BB, 0x01D4BB}, - {0x01D4BD, 0x01D4C3}, - {0x01D4C5, 0x01D505}, - {0x01D507, 0x01D50A}, - {0x01D50D, 0x01D514}, - {0x01D516, 0x01D51C}, - {0x01D51E, 0x01D539}, - {0x01D53B, 0x01D53E}, - {0x01D540, 0x01D544}, - {0x01D546, 0x01D546}, - {0x01D54A, 0x01D550}, - {0x01D552, 0x01D6A5}, - {0x01D6A8, 0x01D6C0}, - {0x01D6C2, 0x01D6DA}, - {0x01D6DC, 0x01D6FA}, - {0x01D6FC, 0x01D714}, - {0x01D716, 0x01D734}, - {0x01D736, 0x01D74E}, - {0x01D750, 0x01D76E}, - {0x01D770, 0x01D788}, - {0x01D78A, 0x01D7A8}, - {0x01D7AA, 0x01D7C2}, - {0x01D7C4, 0x01D7CB}, - {0x01D7CE, 0x01D7FF}, - {0x01DA00, 0x01DA36}, - {0x01DA3B, 0x01DA6C}, - {0x01DA75, 0x01DA75}, - {0x01DA84, 0x01DA84}, - {0x01DA9B, 0x01DA9F}, - {0x01DAA1, 0x01DAAF}, - {0x01DF00, 0x01DF1E}, - {0x01DF25, 0x01DF2A}, - {0x01E000, 0x01E006}, - {0x01E008, 0x01E018}, - {0x01E01B, 0x01E021}, - {0x01E023, 0x01E024}, - {0x01E026, 0x01E02A}, - {0x01E030, 0x01E06D}, - {0x01E08F, 0x01E08F}, - {0x01E100, 0x01E12C}, - {0x01E130, 0x01E13D}, - {0x01E140, 0x01E149}, - {0x01E14E, 0x01E14E}, - {0x01E290, 0x01E2AE}, - {0x01E2C0, 0x01E2F9}, - {0x01E4D0, 0x01E4F9}, - {0x01E7E0, 0x01E7E6}, - {0x01E7E8, 0x01E7EB}, - {0x01E7ED, 0x01E7EE}, - {0x01E7F0, 0x01E7FE}, - {0x01E800, 0x01E8C4}, - {0x01E8D0, 0x01E8D6}, - {0x01E900, 0x01E94B}, - {0x01E950, 0x01E959}, - {0x01EE00, 0x01EE03}, - {0x01EE05, 0x01EE1F}, - {0x01EE21, 0x01EE22}, - {0x01EE24, 0x01EE24}, - {0x01EE27, 0x01EE27}, - {0x01EE29, 0x01EE32}, - {0x01EE34, 0x01EE37}, - {0x01EE39, 0x01EE39}, - {0x01EE3B, 0x01EE3B}, - {0x01EE42, 0x01EE42}, - {0x01EE47, 0x01EE47}, - {0x01EE49, 0x01EE49}, - {0x01EE4B, 0x01EE4B}, - {0x01EE4D, 0x01EE4F}, - {0x01EE51, 0x01EE52}, - {0x01EE54, 0x01EE54}, - {0x01EE57, 0x01EE57}, - {0x01EE59, 0x01EE59}, - {0x01EE5B, 0x01EE5B}, - {0x01EE5D, 0x01EE5D}, - {0x01EE5F, 0x01EE5F}, - {0x01EE61, 0x01EE62}, - {0x01EE64, 0x01EE64}, - {0x01EE67, 0x01EE6A}, - {0x01EE6C, 0x01EE72}, - {0x01EE74, 0x01EE77}, - {0x01EE79, 0x01EE7C}, - {0x01EE7E, 0x01EE7E}, - {0x01EE80, 0x01EE89}, - {0x01EE8B, 0x01EE9B}, - {0x01EEA1, 0x01EEA3}, - {0x01EEA5, 0x01EEA9}, - {0x01EEAB, 0x01EEBB}, - {0x01FBF0, 0x01FBF9}, - {0x020000, 0x02A6DF}, - {0x02A700, 0x02B739}, - {0x02B740, 0x02B81D}, - {0x02B820, 0x02CEA1}, - {0x02CEB0, 0x02EBE0}, - {0x02EBF0, 0x02EE5D}, - {0x02F800, 0x02FA1D}, - {0x030000, 0x03134A}, - {0x031350, 0x0323AF}, - {0x0E0100, 0x0E01EF}, -}; - -#define TYPE bool -#define TABLE lookup_tbl -#define DEFAULT false -#define HAS_VALUE 0 -#include "internal/rtype/lookup-func.h" - -bool -rune_has_prop_id_continue(rune ch) -{ - return -#if BIT_LOOKUP - ch <= LATIN1_MAX ? (mask & ch) : -#endif - lookup(ch); -} diff --git a/vendor/librune/lib/rtype/rune_has_prop_id_start.c b/vendor/librune/lib/rtype/rune_has_prop_id_start.c deleted file mode 100644 index da8ee30..0000000 --- a/vendor/librune/lib/rtype/rune_has_prop_id_start.c +++ /dev/null @@ -1,690 +0,0 @@ -/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */ - -#include "rtype.h" - -#include "internal/common.h" - -#if BIT_LOOKUP -static const unsigned _BitInt(LATIN1_MAX + 1) mask = 0xFF7FFFFFFF7FFFFF042004000000000007FFFFFE07FFFFFE0000000000000000uwb; -#endif - -static const struct { - rune lo, hi; -} lookup_tbl[] = { - {0x000041, 0x00005A}, - {0x000061, 0x00007A}, - {0x0000AA, 0x0000AA}, - {0x0000B5, 0x0000B5}, - {0x0000BA, 0x0000BA}, - {0x0000C0, 0x0000D6}, - {0x0000D8, 0x0000F6}, - {0x0000F8, 0x0002C1}, - {0x0002C6, 0x0002D1}, - {0x0002E0, 0x0002E4}, - {0x0002EC, 0x0002EC}, - {0x0002EE, 0x0002EE}, - {0x000370, 0x000374}, - {0x000376, 0x000377}, - {0x00037A, 0x00037D}, - {0x00037F, 0x00037F}, - {0x000386, 0x000386}, - {0x000388, 0x00038A}, - {0x00038C, 0x00038C}, - {0x00038E, 0x0003A1}, - {0x0003A3, 0x0003F5}, - {0x0003F7, 0x000481}, - {0x00048A, 0x00052F}, - {0x000531, 0x000556}, - {0x000559, 0x000559}, - {0x000560, 0x000588}, - {0x0005D0, 0x0005EA}, - {0x0005EF, 0x0005F2}, - {0x000620, 0x00064A}, - {0x00066E, 0x00066F}, - {0x000671, 0x0006D3}, - {0x0006D5, 0x0006D5}, - {0x0006E5, 0x0006E6}, - {0x0006EE, 0x0006EF}, - {0x0006FA, 0x0006FC}, - {0x0006FF, 0x0006FF}, - {0x000710, 0x000710}, - {0x000712, 0x00072F}, - {0x00074D, 0x0007A5}, - {0x0007B1, 0x0007B1}, - {0x0007CA, 0x0007EA}, - {0x0007F4, 0x0007F5}, - {0x0007FA, 0x0007FA}, - {0x000800, 0x000815}, - {0x00081A, 0x00081A}, - {0x000824, 0x000824}, - {0x000828, 0x000828}, - {0x000840, 0x000858}, - {0x000860, 0x00086A}, - {0x000870, 0x000887}, - {0x000889, 0x00088E}, - {0x0008A0, 0x0008C9}, - {0x000904, 0x000939}, - {0x00093D, 0x00093D}, - {0x000950, 0x000950}, - {0x000958, 0x000961}, - {0x000971, 0x000980}, - {0x000985, 0x00098C}, - {0x00098F, 0x000990}, - {0x000993, 0x0009A8}, - {0x0009AA, 0x0009B0}, - {0x0009B2, 0x0009B2}, - {0x0009B6, 0x0009B9}, - {0x0009BD, 0x0009BD}, - {0x0009CE, 0x0009CE}, - {0x0009DC, 0x0009DD}, - {0x0009DF, 0x0009E1}, - {0x0009F0, 0x0009F1}, - {0x0009FC, 0x0009FC}, - {0x000A05, 0x000A0A}, - {0x000A0F, 0x000A10}, - {0x000A13, 0x000A28}, - {0x000A2A, 0x000A30}, - {0x000A32, 0x000A33}, - {0x000A35, 0x000A36}, - {0x000A38, 0x000A39}, - {0x000A59, 0x000A5C}, - {0x000A5E, 0x000A5E}, - {0x000A72, 0x000A74}, - {0x000A85, 0x000A8D}, - {0x000A8F, 0x000A91}, - {0x000A93, 0x000AA8}, - {0x000AAA, 0x000AB0}, - {0x000AB2, 0x000AB3}, - {0x000AB5, 0x000AB9}, - {0x000ABD, 0x000ABD}, - {0x000AD0, 0x000AD0}, - {0x000AE0, 0x000AE1}, - {0x000AF9, 0x000AF9}, - {0x000B05, 0x000B0C}, - {0x000B0F, 0x000B10}, - {0x000B13, 0x000B28}, - {0x000B2A, 0x000B30}, - {0x000B32, 0x000B33}, - {0x000B35, 0x000B39}, - {0x000B3D, 0x000B3D}, - {0x000B5C, 0x000B5D}, - {0x000B5F, 0x000B61}, - {0x000B71, 0x000B71}, - {0x000B83, 0x000B83}, - {0x000B85, 0x000B8A}, - {0x000B8E, 0x000B90}, - {0x000B92, 0x000B95}, - {0x000B99, 0x000B9A}, - {0x000B9C, 0x000B9C}, - {0x000B9E, 0x000B9F}, - {0x000BA3, 0x000BA4}, - {0x000BA8, 0x000BAA}, - {0x000BAE, 0x000BB9}, - {0x000BD0, 0x000BD0}, - {0x000C05, 0x000C0C}, - {0x000C0E, 0x000C10}, - {0x000C12, 0x000C28}, - {0x000C2A, 0x000C39}, - {0x000C3D, 0x000C3D}, - {0x000C58, 0x000C5A}, - {0x000C5D, 0x000C5D}, - {0x000C60, 0x000C61}, - {0x000C80, 0x000C80}, - {0x000C85, 0x000C8C}, - {0x000C8E, 0x000C90}, - {0x000C92, 0x000CA8}, - {0x000CAA, 0x000CB3}, - {0x000CB5, 0x000CB9}, - {0x000CBD, 0x000CBD}, - {0x000CDD, 0x000CDE}, - {0x000CE0, 0x000CE1}, - {0x000CF1, 0x000CF2}, - {0x000D04, 0x000D0C}, - {0x000D0E, 0x000D10}, - {0x000D12, 0x000D3A}, - {0x000D3D, 0x000D3D}, - {0x000D4E, 0x000D4E}, - {0x000D54, 0x000D56}, - {0x000D5F, 0x000D61}, - {0x000D7A, 0x000D7F}, - {0x000D85, 0x000D96}, - {0x000D9A, 0x000DB1}, - {0x000DB3, 0x000DBB}, - {0x000DBD, 0x000DBD}, - {0x000DC0, 0x000DC6}, - {0x000E01, 0x000E30}, - {0x000E32, 0x000E33}, - {0x000E40, 0x000E46}, - {0x000E81, 0x000E82}, - {0x000E84, 0x000E84}, - {0x000E86, 0x000E8A}, - {0x000E8C, 0x000EA3}, - {0x000EA5, 0x000EA5}, - {0x000EA7, 0x000EB0}, - {0x000EB2, 0x000EB3}, - {0x000EBD, 0x000EBD}, - {0x000EC0, 0x000EC4}, - {0x000EC6, 0x000EC6}, - {0x000EDC, 0x000EDF}, - {0x000F00, 0x000F00}, - {0x000F40, 0x000F47}, - {0x000F49, 0x000F6C}, - {0x000F88, 0x000F8C}, - {0x001000, 0x00102A}, - {0x00103F, 0x00103F}, - {0x001050, 0x001055}, - {0x00105A, 0x00105D}, - {0x001061, 0x001061}, - {0x001065, 0x001066}, - {0x00106E, 0x001070}, - {0x001075, 0x001081}, - {0x00108E, 0x00108E}, - {0x0010A0, 0x0010C5}, - {0x0010C7, 0x0010C7}, - {0x0010CD, 0x0010CD}, - {0x0010D0, 0x0010FA}, - {0x0010FC, 0x001248}, - {0x00124A, 0x00124D}, - {0x001250, 0x001256}, - {0x001258, 0x001258}, - {0x00125A, 0x00125D}, - {0x001260, 0x001288}, - {0x00128A, 0x00128D}, - {0x001290, 0x0012B0}, - {0x0012B2, 0x0012B5}, - {0x0012B8, 0x0012BE}, - {0x0012C0, 0x0012C0}, - {0x0012C2, 0x0012C5}, - {0x0012C8, 0x0012D6}, - {0x0012D8, 0x001310}, - {0x001312, 0x001315}, - {0x001318, 0x00135A}, - {0x001380, 0x00138F}, - {0x0013A0, 0x0013F5}, - {0x0013F8, 0x0013FD}, - {0x001401, 0x00166C}, - {0x00166F, 0x00167F}, - {0x001681, 0x00169A}, - {0x0016A0, 0x0016EA}, - {0x0016EE, 0x0016F8}, - {0x001700, 0x001711}, - {0x00171F, 0x001731}, - {0x001740, 0x001751}, - {0x001760, 0x00176C}, - {0x00176E, 0x001770}, - {0x001780, 0x0017B3}, - {0x0017D7, 0x0017D7}, - {0x0017DC, 0x0017DC}, - {0x001820, 0x001878}, - {0x001880, 0x0018A8}, - {0x0018AA, 0x0018AA}, - {0x0018B0, 0x0018F5}, - {0x001900, 0x00191E}, - {0x001950, 0x00196D}, - {0x001970, 0x001974}, - {0x001980, 0x0019AB}, - {0x0019B0, 0x0019C9}, - {0x001A00, 0x001A16}, - {0x001A20, 0x001A54}, - {0x001AA7, 0x001AA7}, - {0x001B05, 0x001B33}, - {0x001B45, 0x001B4C}, - {0x001B83, 0x001BA0}, - {0x001BAE, 0x001BAF}, - {0x001BBA, 0x001BE5}, - {0x001C00, 0x001C23}, - {0x001C4D, 0x001C4F}, - {0x001C5A, 0x001C7D}, - {0x001C80, 0x001C88}, - {0x001C90, 0x001CBA}, - {0x001CBD, 0x001CBF}, - {0x001CE9, 0x001CEC}, - {0x001CEE, 0x001CF3}, - {0x001CF5, 0x001CF6}, - {0x001CFA, 0x001CFA}, - {0x001D00, 0x001DBF}, - {0x001E00, 0x001F15}, - {0x001F18, 0x001F1D}, - {0x001F20, 0x001F45}, - {0x001F48, 0x001F4D}, - {0x001F50, 0x001F57}, - {0x001F59, 0x001F59}, - {0x001F5B, 0x001F5B}, - {0x001F5D, 0x001F5D}, - {0x001F5F, 0x001F7D}, - {0x001F80, 0x001FB4}, - {0x001FB6, 0x001FBC}, - {0x001FBE, 0x001FBE}, - {0x001FC2, 0x001FC4}, - {0x001FC6, 0x001FCC}, - {0x001FD0, 0x001FD3}, - {0x001FD6, 0x001FDB}, - {0x001FE0, 0x001FEC}, - {0x001FF2, 0x001FF4}, - {0x001FF6, 0x001FFC}, - {0x002071, 0x002071}, - {0x00207F, 0x00207F}, - {0x002090, 0x00209C}, - {0x002102, 0x002102}, - {0x002107, 0x002107}, - {0x00210A, 0x002113}, - {0x002115, 0x002115}, - {0x002118, 0x00211D}, - {0x002124, 0x002124}, - {0x002126, 0x002126}, - {0x002128, 0x002128}, - {0x00212A, 0x002139}, - {0x00213C, 0x00213F}, - {0x002145, 0x002149}, - {0x00214E, 0x00214E}, - {0x002160, 0x002188}, - {0x002C00, 0x002CE4}, - {0x002CEB, 0x002CEE}, - {0x002CF2, 0x002CF3}, - {0x002D00, 0x002D25}, - {0x002D27, 0x002D27}, - {0x002D2D, 0x002D2D}, - {0x002D30, 0x002D67}, - {0x002D6F, 0x002D6F}, - {0x002D80, 0x002D96}, - {0x002DA0, 0x002DA6}, - {0x002DA8, 0x002DAE}, - {0x002DB0, 0x002DB6}, - {0x002DB8, 0x002DBE}, - {0x002DC0, 0x002DC6}, - {0x002DC8, 0x002DCE}, - {0x002DD0, 0x002DD6}, - {0x002DD8, 0x002DDE}, - {0x003005, 0x003007}, - {0x003021, 0x003029}, - {0x003031, 0x003035}, - {0x003038, 0x00303C}, - {0x003041, 0x003096}, - {0x00309B, 0x00309F}, - {0x0030A1, 0x0030FA}, - {0x0030FC, 0x0030FF}, - {0x003105, 0x00312F}, - {0x003131, 0x00318E}, - {0x0031A0, 0x0031BF}, - {0x0031F0, 0x0031FF}, - {0x003400, 0x004DBF}, - {0x004E00, 0x00A48C}, - {0x00A4D0, 0x00A4FD}, - {0x00A500, 0x00A60C}, - {0x00A610, 0x00A61F}, - {0x00A62A, 0x00A62B}, - {0x00A640, 0x00A66E}, - {0x00A67F, 0x00A69D}, - {0x00A6A0, 0x00A6EF}, - {0x00A717, 0x00A71F}, - {0x00A722, 0x00A788}, - {0x00A78B, 0x00A7CA}, - {0x00A7D0, 0x00A7D1}, - {0x00A7D3, 0x00A7D3}, - {0x00A7D5, 0x00A7D9}, - {0x00A7F2, 0x00A801}, - {0x00A803, 0x00A805}, - {0x00A807, 0x00A80A}, - {0x00A80C, 0x00A822}, - {0x00A840, 0x00A873}, - {0x00A882, 0x00A8B3}, - {0x00A8F2, 0x00A8F7}, - {0x00A8FB, 0x00A8FB}, - {0x00A8FD, 0x00A8FE}, - {0x00A90A, 0x00A925}, - {0x00A930, 0x00A946}, - {0x00A960, 0x00A97C}, - {0x00A984, 0x00A9B2}, - {0x00A9CF, 0x00A9CF}, - {0x00A9E0, 0x00A9E4}, - {0x00A9E6, 0x00A9EF}, - {0x00A9FA, 0x00A9FE}, - {0x00AA00, 0x00AA28}, - {0x00AA40, 0x00AA42}, - {0x00AA44, 0x00AA4B}, - {0x00AA60, 0x00AA76}, - {0x00AA7A, 0x00AA7A}, - {0x00AA7E, 0x00AAAF}, - {0x00AAB1, 0x00AAB1}, - {0x00AAB5, 0x00AAB6}, - {0x00AAB9, 0x00AABD}, - {0x00AAC0, 0x00AAC0}, - {0x00AAC2, 0x00AAC2}, - {0x00AADB, 0x00AADD}, - {0x00AAE0, 0x00AAEA}, - {0x00AAF2, 0x00AAF4}, - {0x00AB01, 0x00AB06}, - {0x00AB09, 0x00AB0E}, - {0x00AB11, 0x00AB16}, - {0x00AB20, 0x00AB26}, - {0x00AB28, 0x00AB2E}, - {0x00AB30, 0x00AB5A}, - {0x00AB5C, 0x00AB69}, - {0x00AB70, 0x00ABE2}, - {0x00AC00, 0x00D7A3}, - {0x00D7B0, 0x00D7C6}, - {0x00D7CB, 0x00D7FB}, - {0x00F900, 0x00FA6D}, - {0x00FA70, 0x00FAD9}, - {0x00FB00, 0x00FB06}, - {0x00FB13, 0x00FB17}, - {0x00FB1D, 0x00FB1D}, - {0x00FB1F, 0x00FB28}, - {0x00FB2A, 0x00FB36}, - {0x00FB38, 0x00FB3C}, - {0x00FB3E, 0x00FB3E}, - {0x00FB40, 0x00FB41}, - {0x00FB43, 0x00FB44}, - {0x00FB46, 0x00FBB1}, - {0x00FBD3, 0x00FD3D}, - {0x00FD50, 0x00FD8F}, - {0x00FD92, 0x00FDC7}, - {0x00FDF0, 0x00FDFB}, - {0x00FE70, 0x00FE74}, - {0x00FE76, 0x00FEFC}, - {0x00FF21, 0x00FF3A}, - {0x00FF41, 0x00FF5A}, - {0x00FF66, 0x00FFBE}, - {0x00FFC2, 0x00FFC7}, - {0x00FFCA, 0x00FFCF}, - {0x00FFD2, 0x00FFD7}, - {0x00FFDA, 0x00FFDC}, - {0x010000, 0x01000B}, - {0x01000D, 0x010026}, - {0x010028, 0x01003A}, - {0x01003C, 0x01003D}, - {0x01003F, 0x01004D}, - {0x010050, 0x01005D}, - {0x010080, 0x0100FA}, - {0x010140, 0x010174}, - {0x010280, 0x01029C}, - {0x0102A0, 0x0102D0}, - {0x010300, 0x01031F}, - {0x01032D, 0x01034A}, - {0x010350, 0x010375}, - {0x010380, 0x01039D}, - {0x0103A0, 0x0103C3}, - {0x0103C8, 0x0103CF}, - {0x0103D1, 0x0103D5}, - {0x010400, 0x01049D}, - {0x0104B0, 0x0104D3}, - {0x0104D8, 0x0104FB}, - {0x010500, 0x010527}, - {0x010530, 0x010563}, - {0x010570, 0x01057A}, - {0x01057C, 0x01058A}, - {0x01058C, 0x010592}, - {0x010594, 0x010595}, - {0x010597, 0x0105A1}, - {0x0105A3, 0x0105B1}, - {0x0105B3, 0x0105B9}, - {0x0105BB, 0x0105BC}, - {0x010600, 0x010736}, - {0x010740, 0x010755}, - {0x010760, 0x010767}, - {0x010780, 0x010785}, - {0x010787, 0x0107B0}, - {0x0107B2, 0x0107BA}, - {0x010800, 0x010805}, - {0x010808, 0x010808}, - {0x01080A, 0x010835}, - {0x010837, 0x010838}, - {0x01083C, 0x01083C}, - {0x01083F, 0x010855}, - {0x010860, 0x010876}, - {0x010880, 0x01089E}, - {0x0108E0, 0x0108F2}, - {0x0108F4, 0x0108F5}, - {0x010900, 0x010915}, - {0x010920, 0x010939}, - {0x010980, 0x0109B7}, - {0x0109BE, 0x0109BF}, - {0x010A00, 0x010A00}, - {0x010A10, 0x010A13}, - {0x010A15, 0x010A17}, - {0x010A19, 0x010A35}, - {0x010A60, 0x010A7C}, - {0x010A80, 0x010A9C}, - {0x010AC0, 0x010AC7}, - {0x010AC9, 0x010AE4}, - {0x010B00, 0x010B35}, - {0x010B40, 0x010B55}, - {0x010B60, 0x010B72}, - {0x010B80, 0x010B91}, - {0x010C00, 0x010C48}, - {0x010C80, 0x010CB2}, - {0x010CC0, 0x010CF2}, - {0x010D00, 0x010D23}, - {0x010E80, 0x010EA9}, - {0x010EB0, 0x010EB1}, - {0x010F00, 0x010F1C}, - {0x010F27, 0x010F27}, - {0x010F30, 0x010F45}, - {0x010F70, 0x010F81}, - {0x010FB0, 0x010FC4}, - {0x010FE0, 0x010FF6}, - {0x011003, 0x011037}, - {0x011071, 0x011072}, - {0x011075, 0x011075}, - {0x011083, 0x0110AF}, - {0x0110D0, 0x0110E8}, - {0x011103, 0x011126}, - {0x011144, 0x011144}, - {0x011147, 0x011147}, - {0x011150, 0x011172}, - {0x011176, 0x011176}, - {0x011183, 0x0111B2}, - {0x0111C1, 0x0111C4}, - {0x0111DA, 0x0111DA}, - {0x0111DC, 0x0111DC}, - {0x011200, 0x011211}, - {0x011213, 0x01122B}, - {0x01123F, 0x011240}, - {0x011280, 0x011286}, - {0x011288, 0x011288}, - {0x01128A, 0x01128D}, - {0x01128F, 0x01129D}, - {0x01129F, 0x0112A8}, - {0x0112B0, 0x0112DE}, - {0x011305, 0x01130C}, - {0x01130F, 0x011310}, - {0x011313, 0x011328}, - {0x01132A, 0x011330}, - {0x011332, 0x011333}, - {0x011335, 0x011339}, - {0x01133D, 0x01133D}, - {0x011350, 0x011350}, - {0x01135D, 0x011361}, - {0x011400, 0x011434}, - {0x011447, 0x01144A}, - {0x01145F, 0x011461}, - {0x011480, 0x0114AF}, - {0x0114C4, 0x0114C5}, - {0x0114C7, 0x0114C7}, - {0x011580, 0x0115AE}, - {0x0115D8, 0x0115DB}, - {0x011600, 0x01162F}, - {0x011644, 0x011644}, - {0x011680, 0x0116AA}, - {0x0116B8, 0x0116B8}, - {0x011700, 0x01171A}, - {0x011740, 0x011746}, - {0x011800, 0x01182B}, - {0x0118A0, 0x0118DF}, - {0x0118FF, 0x011906}, - {0x011909, 0x011909}, - {0x01190C, 0x011913}, - {0x011915, 0x011916}, - {0x011918, 0x01192F}, - {0x01193F, 0x01193F}, - {0x011941, 0x011941}, - {0x0119A0, 0x0119A7}, - {0x0119AA, 0x0119D0}, - {0x0119E1, 0x0119E1}, - {0x0119E3, 0x0119E3}, - {0x011A00, 0x011A00}, - {0x011A0B, 0x011A32}, - {0x011A3A, 0x011A3A}, - {0x011A50, 0x011A50}, - {0x011A5C, 0x011A89}, - {0x011A9D, 0x011A9D}, - {0x011AB0, 0x011AF8}, - {0x011C00, 0x011C08}, - {0x011C0A, 0x011C2E}, - {0x011C40, 0x011C40}, - {0x011C72, 0x011C8F}, - {0x011D00, 0x011D06}, - {0x011D08, 0x011D09}, - {0x011D0B, 0x011D30}, - {0x011D46, 0x011D46}, - {0x011D60, 0x011D65}, - {0x011D67, 0x011D68}, - {0x011D6A, 0x011D89}, - {0x011D98, 0x011D98}, - {0x011EE0, 0x011EF2}, - {0x011F02, 0x011F02}, - {0x011F04, 0x011F10}, - {0x011F12, 0x011F33}, - {0x011FB0, 0x011FB0}, - {0x012000, 0x012399}, - {0x012400, 0x01246E}, - {0x012480, 0x012543}, - {0x012F90, 0x012FF0}, - {0x013000, 0x01342F}, - {0x013441, 0x013446}, - {0x014400, 0x014646}, - {0x016800, 0x016A38}, - {0x016A40, 0x016A5E}, - {0x016A70, 0x016ABE}, - {0x016AD0, 0x016AED}, - {0x016B00, 0x016B2F}, - {0x016B40, 0x016B43}, - {0x016B63, 0x016B77}, - {0x016B7D, 0x016B8F}, - {0x016E40, 0x016E7F}, - {0x016F00, 0x016F4A}, - {0x016F50, 0x016F50}, - {0x016F93, 0x016F9F}, - {0x016FE0, 0x016FE1}, - {0x016FE3, 0x016FE3}, - {0x017000, 0x0187F7}, - {0x018800, 0x018CD5}, - {0x018D00, 0x018D08}, - {0x01AFF0, 0x01AFF3}, - {0x01AFF5, 0x01AFFB}, - {0x01AFFD, 0x01AFFE}, - {0x01B000, 0x01B122}, - {0x01B132, 0x01B132}, - {0x01B150, 0x01B152}, - {0x01B155, 0x01B155}, - {0x01B164, 0x01B167}, - {0x01B170, 0x01B2FB}, - {0x01BC00, 0x01BC6A}, - {0x01BC70, 0x01BC7C}, - {0x01BC80, 0x01BC88}, - {0x01BC90, 0x01BC99}, - {0x01D400, 0x01D454}, - {0x01D456, 0x01D49C}, - {0x01D49E, 0x01D49F}, - {0x01D4A2, 0x01D4A2}, - {0x01D4A5, 0x01D4A6}, - {0x01D4A9, 0x01D4AC}, - {0x01D4AE, 0x01D4B9}, - {0x01D4BB, 0x01D4BB}, - {0x01D4BD, 0x01D4C3}, - {0x01D4C5, 0x01D505}, - {0x01D507, 0x01D50A}, - {0x01D50D, 0x01D514}, - {0x01D516, 0x01D51C}, - {0x01D51E, 0x01D539}, - {0x01D53B, 0x01D53E}, - {0x01D540, 0x01D544}, - {0x01D546, 0x01D546}, - {0x01D54A, 0x01D550}, - {0x01D552, 0x01D6A5}, - {0x01D6A8, 0x01D6C0}, - {0x01D6C2, 0x01D6DA}, - {0x01D6DC, 0x01D6FA}, - {0x01D6FC, 0x01D714}, - {0x01D716, 0x01D734}, - {0x01D736, 0x01D74E}, - {0x01D750, 0x01D76E}, - {0x01D770, 0x01D788}, - {0x01D78A, 0x01D7A8}, - {0x01D7AA, 0x01D7C2}, - {0x01D7C4, 0x01D7CB}, - {0x01DF00, 0x01DF1E}, - {0x01DF25, 0x01DF2A}, - {0x01E030, 0x01E06D}, - {0x01E100, 0x01E12C}, - {0x01E137, 0x01E13D}, - {0x01E14E, 0x01E14E}, - {0x01E290, 0x01E2AD}, - {0x01E2C0, 0x01E2EB}, - {0x01E4D0, 0x01E4EB}, - {0x01E7E0, 0x01E7E6}, - {0x01E7E8, 0x01E7EB}, - {0x01E7ED, 0x01E7EE}, - {0x01E7F0, 0x01E7FE}, - {0x01E800, 0x01E8C4}, - {0x01E900, 0x01E943}, - {0x01E94B, 0x01E94B}, - {0x01EE00, 0x01EE03}, - {0x01EE05, 0x01EE1F}, - {0x01EE21, 0x01EE22}, - {0x01EE24, 0x01EE24}, - {0x01EE27, 0x01EE27}, - {0x01EE29, 0x01EE32}, - {0x01EE34, 0x01EE37}, - {0x01EE39, 0x01EE39}, - {0x01EE3B, 0x01EE3B}, - {0x01EE42, 0x01EE42}, - {0x01EE47, 0x01EE47}, - {0x01EE49, 0x01EE49}, - {0x01EE4B, 0x01EE4B}, - {0x01EE4D, 0x01EE4F}, - {0x01EE51, 0x01EE52}, - {0x01EE54, 0x01EE54}, - {0x01EE57, 0x01EE57}, - {0x01EE59, 0x01EE59}, - {0x01EE5B, 0x01EE5B}, - {0x01EE5D, 0x01EE5D}, - {0x01EE5F, 0x01EE5F}, - {0x01EE61, 0x01EE62}, - {0x01EE64, 0x01EE64}, - {0x01EE67, 0x01EE6A}, - {0x01EE6C, 0x01EE72}, - {0x01EE74, 0x01EE77}, - {0x01EE79, 0x01EE7C}, - {0x01EE7E, 0x01EE7E}, - {0x01EE80, 0x01EE89}, - {0x01EE8B, 0x01EE9B}, - {0x01EEA1, 0x01EEA3}, - {0x01EEA5, 0x01EEA9}, - {0x01EEAB, 0x01EEBB}, - {0x020000, 0x02A6DF}, - {0x02A700, 0x02B739}, - {0x02B740, 0x02B81D}, - {0x02B820, 0x02CEA1}, - {0x02CEB0, 0x02EBE0}, - {0x02EBF0, 0x02EE5D}, - {0x02F800, 0x02FA1D}, - {0x030000, 0x03134A}, - {0x031350, 0x0323AF}, -}; - -#define TYPE bool -#define TABLE lookup_tbl -#define DEFAULT false -#define HAS_VALUE 0 -#include "internal/rtype/lookup-func.h" - -bool -rune_has_prop_id_start(rune ch) -{ - return -#if BIT_LOOKUP - ch <= LATIN1_MAX ? (mask & ch) : -#endif - lookup(ch); -} diff --git a/vendor/librune/lib/rtype/rune_has_prop_ideographic.c b/vendor/librune/lib/rtype/rune_has_prop_ideographic.c deleted file mode 100644 index ddc7bda..0000000 --- a/vendor/librune/lib/rtype/rune_has_prop_ideographic.c +++ /dev/null @@ -1,51 +0,0 @@ -/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */ - -#include "rtype.h" - -#include "internal/common.h" - -#if BIT_LOOKUP -static const unsigned _BitInt(LATIN1_MAX + 1) mask = 0x0uwb; -#endif - -static const struct { - rune lo, hi; -} lookup_tbl[] = { - {0x003006, 0x003007}, - {0x003021, 0x003029}, - {0x003038, 0x00303A}, - {0x003400, 0x004DBF}, - {0x004E00, 0x009FFF}, - {0x00F900, 0x00FA6D}, - {0x00FA70, 0x00FAD9}, - {0x016FE4, 0x016FE4}, - {0x017000, 0x0187F7}, - {0x018800, 0x018CD5}, - {0x018D00, 0x018D08}, - {0x01B170, 0x01B2FB}, - {0x020000, 0x02A6DF}, - {0x02A700, 0x02B739}, - {0x02B740, 0x02B81D}, - {0x02B820, 0x02CEA1}, - {0x02CEB0, 0x02EBE0}, - {0x02EBF0, 0x02EE5D}, - {0x02F800, 0x02FA1D}, - {0x030000, 0x03134A}, - {0x031350, 0x0323AF}, -}; - -#define TYPE bool -#define TABLE lookup_tbl -#define DEFAULT false -#define HAS_VALUE 0 -#include "internal/rtype/lookup-func.h" - -bool -rune_has_prop_ideographic(rune ch) -{ - return -#if BIT_LOOKUP - ch <= LATIN1_MAX ? (mask & ch) : -#endif - lookup(ch); -} diff --git a/vendor/librune/lib/rtype/rune_has_prop_ids_binary_operator.c b/vendor/librune/lib/rtype/rune_has_prop_ids_binary_operator.c deleted file mode 100644 index b558b1b..0000000 --- a/vendor/librune/lib/rtype/rune_has_prop_ids_binary_operator.c +++ /dev/null @@ -1,33 +0,0 @@ -/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */ - -#include "rtype.h" - -#include "internal/common.h" - -#if BIT_LOOKUP -static const unsigned _BitInt(LATIN1_MAX + 1) mask = 0x0uwb; -#endif - -static const struct { - rune lo, hi; -} lookup_tbl[] = { - {0x002FF0, 0x002FF1}, - {0x002FF4, 0x002FFD}, - {0x0031EF, 0x0031EF}, -}; - -#define TYPE bool -#define TABLE lookup_tbl -#define DEFAULT false -#define HAS_VALUE 0 -#include "internal/rtype/lookup-func.h" - -bool -rune_has_prop_ids_binary_operator(rune ch) -{ - return -#if BIT_LOOKUP - ch <= LATIN1_MAX ? (mask & ch) : -#endif - lookup(ch); -} diff --git a/vendor/librune/lib/rtype/rune_has_prop_ids_trinary_operator.c b/vendor/librune/lib/rtype/rune_has_prop_ids_trinary_operator.c deleted file mode 100644 index f9dd547..0000000 --- a/vendor/librune/lib/rtype/rune_has_prop_ids_trinary_operator.c +++ /dev/null @@ -1,31 +0,0 @@ -/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */ - -#include "rtype.h" - -#include "internal/common.h" - -#if BIT_LOOKUP -static const unsigned _BitInt(LATIN1_MAX + 1) mask = 0x0uwb; -#endif - -static const struct { - rune lo, hi; -} lookup_tbl[] = { - {0x002FF2, 0x002FF3}, -}; - -#define TYPE bool -#define TABLE lookup_tbl -#define DEFAULT false -#define HAS_VALUE 0 -#include "internal/rtype/lookup-func.h" - -bool -rune_has_prop_ids_trinary_operator(rune ch) -{ - return -#if BIT_LOOKUP - ch <= LATIN1_MAX ? (mask & ch) : -#endif - lookup(ch); -} diff --git a/vendor/librune/lib/rtype/rune_has_prop_ids_unary_operator.c b/vendor/librune/lib/rtype/rune_has_prop_ids_unary_operator.c deleted file mode 100644 index 59a4d3d..0000000 --- a/vendor/librune/lib/rtype/rune_has_prop_ids_unary_operator.c +++ /dev/null @@ -1,31 +0,0 @@ -/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */ - -#include "rtype.h" - -#include "internal/common.h" - -#if BIT_LOOKUP -static const unsigned _BitInt(LATIN1_MAX + 1) mask = 0x0uwb; -#endif - -static const struct { - rune lo, hi; -} lookup_tbl[] = { - {0x002FFE, 0x002FFF}, -}; - -#define TYPE bool -#define TABLE lookup_tbl -#define DEFAULT false -#define HAS_VALUE 0 -#include "internal/rtype/lookup-func.h" - -bool -rune_has_prop_ids_unary_operator(rune ch) -{ - return -#if BIT_LOOKUP - ch <= LATIN1_MAX ? (mask & ch) : -#endif - lookup(ch); -} diff --git a/vendor/librune/lib/rtype/rune_has_prop_indic_conjunct_break.c b/vendor/librune/lib/rtype/rune_has_prop_indic_conjunct_break.c deleted file mode 100644 index a1af4a6..0000000 --- a/vendor/librune/lib/rtype/rune_has_prop_indic_conjunct_break.c +++ /dev/null @@ -1,230 +0,0 @@ -/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */ - -#include "rtype.h" - -#include "internal/common.h" - -#if BIT_LOOKUP -static const unsigned _BitInt(LATIN1_MAX + 1) mask = 0x0uwb; -#endif - -static const struct { - rune lo, hi; -} lookup_tbl[] = { - {0x000300, 0x00034E}, - {0x000350, 0x00036F}, - {0x000483, 0x000487}, - {0x000591, 0x0005BD}, - {0x0005BF, 0x0005BF}, - {0x0005C1, 0x0005C2}, - {0x0005C4, 0x0005C5}, - {0x0005C7, 0x0005C7}, - {0x000610, 0x00061A}, - {0x00064B, 0x00065F}, - {0x000670, 0x000670}, - {0x0006D6, 0x0006DC}, - {0x0006DF, 0x0006E4}, - {0x0006E7, 0x0006E8}, - {0x0006EA, 0x0006ED}, - {0x000711, 0x000711}, - {0x000730, 0x00074A}, - {0x0007EB, 0x0007F3}, - {0x0007FD, 0x0007FD}, - {0x000816, 0x000819}, - {0x00081B, 0x000823}, - {0x000825, 0x000827}, - {0x000829, 0x00082D}, - {0x000859, 0x00085B}, - {0x000898, 0x00089F}, - {0x0008CA, 0x0008E1}, - {0x0008E3, 0x0008FF}, - {0x000915, 0x000939}, - {0x00093C, 0x00093C}, - {0x00094D, 0x00094D}, - {0x000951, 0x000954}, - {0x000958, 0x00095F}, - {0x000978, 0x00097F}, - {0x000995, 0x0009A8}, - {0x0009AA, 0x0009B0}, - {0x0009B2, 0x0009B2}, - {0x0009B6, 0x0009B9}, - {0x0009BC, 0x0009BC}, - {0x0009CD, 0x0009CD}, - {0x0009DC, 0x0009DD}, - {0x0009DF, 0x0009DF}, - {0x0009F0, 0x0009F1}, - {0x0009FE, 0x0009FE}, - {0x000A3C, 0x000A3C}, - {0x000A95, 0x000AA8}, - {0x000AAA, 0x000AB0}, - {0x000AB2, 0x000AB3}, - {0x000AB5, 0x000AB9}, - {0x000ABC, 0x000ABC}, - {0x000ACD, 0x000ACD}, - {0x000AF9, 0x000AF9}, - {0x000B15, 0x000B28}, - {0x000B2A, 0x000B30}, - {0x000B32, 0x000B33}, - {0x000B35, 0x000B39}, - {0x000B3C, 0x000B3C}, - {0x000B4D, 0x000B4D}, - {0x000B5C, 0x000B5D}, - {0x000B5F, 0x000B5F}, - {0x000B71, 0x000B71}, - {0x000C15, 0x000C28}, - {0x000C2A, 0x000C39}, - {0x000C3C, 0x000C3C}, - {0x000C4D, 0x000C4D}, - {0x000C55, 0x000C56}, - {0x000C58, 0x000C5A}, - {0x000CBC, 0x000CBC}, - {0x000D15, 0x000D3C}, - {0x000D4D, 0x000D4D}, - {0x000E38, 0x000E3A}, - {0x000E48, 0x000E4B}, - {0x000EB8, 0x000EBA}, - {0x000EC8, 0x000ECB}, - {0x000F18, 0x000F19}, - {0x000F35, 0x000F35}, - {0x000F37, 0x000F37}, - {0x000F39, 0x000F39}, - {0x000F71, 0x000F72}, - {0x000F74, 0x000F74}, - {0x000F7A, 0x000F7D}, - {0x000F80, 0x000F80}, - {0x000F82, 0x000F84}, - {0x000F86, 0x000F87}, - {0x000FC6, 0x000FC6}, - {0x001037, 0x001037}, - {0x001039, 0x00103A}, - {0x00108D, 0x00108D}, - {0x00135D, 0x00135F}, - {0x001714, 0x001714}, - {0x0017D2, 0x0017D2}, - {0x0017DD, 0x0017DD}, - {0x0018A9, 0x0018A9}, - {0x001939, 0x00193B}, - {0x001A17, 0x001A18}, - {0x001A60, 0x001A60}, - {0x001A75, 0x001A7C}, - {0x001A7F, 0x001A7F}, - {0x001AB0, 0x001ABD}, - {0x001ABF, 0x001ACE}, - {0x001B34, 0x001B34}, - {0x001B6B, 0x001B73}, - {0x001BAB, 0x001BAB}, - {0x001BE6, 0x001BE6}, - {0x001C37, 0x001C37}, - {0x001CD0, 0x001CD2}, - {0x001CD4, 0x001CE0}, - {0x001CE2, 0x001CE8}, - {0x001CED, 0x001CED}, - {0x001CF4, 0x001CF4}, - {0x001CF8, 0x001CF9}, - {0x001DC0, 0x001DFF}, - {0x00200D, 0x00200D}, - {0x0020D0, 0x0020DC}, - {0x0020E1, 0x0020E1}, - {0x0020E5, 0x0020F0}, - {0x002CEF, 0x002CF1}, - {0x002D7F, 0x002D7F}, - {0x002DE0, 0x002DFF}, - {0x00302A, 0x00302F}, - {0x003099, 0x00309A}, - {0x00A66F, 0x00A66F}, - {0x00A674, 0x00A67D}, - {0x00A69E, 0x00A69F}, - {0x00A6F0, 0x00A6F1}, - {0x00A82C, 0x00A82C}, - {0x00A8E0, 0x00A8F1}, - {0x00A92B, 0x00A92D}, - {0x00A9B3, 0x00A9B3}, - {0x00AAB0, 0x00AAB0}, - {0x00AAB2, 0x00AAB4}, - {0x00AAB7, 0x00AAB8}, - {0x00AABE, 0x00AABF}, - {0x00AAC1, 0x00AAC1}, - {0x00AAF6, 0x00AAF6}, - {0x00ABED, 0x00ABED}, - {0x00FB1E, 0x00FB1E}, - {0x00FE20, 0x00FE2F}, - {0x0101FD, 0x0101FD}, - {0x0102E0, 0x0102E0}, - {0x010376, 0x01037A}, - {0x010A0D, 0x010A0D}, - {0x010A0F, 0x010A0F}, - {0x010A38, 0x010A3A}, - {0x010A3F, 0x010A3F}, - {0x010AE5, 0x010AE6}, - {0x010D24, 0x010D27}, - {0x010EAB, 0x010EAC}, - {0x010EFD, 0x010EFF}, - {0x010F46, 0x010F50}, - {0x010F82, 0x010F85}, - {0x011070, 0x011070}, - {0x01107F, 0x01107F}, - {0x0110BA, 0x0110BA}, - {0x011100, 0x011102}, - {0x011133, 0x011134}, - {0x011173, 0x011173}, - {0x0111CA, 0x0111CA}, - {0x011236, 0x011236}, - {0x0112E9, 0x0112EA}, - {0x01133B, 0x01133C}, - {0x011366, 0x01136C}, - {0x011370, 0x011374}, - {0x011446, 0x011446}, - {0x01145E, 0x01145E}, - {0x0114C3, 0x0114C3}, - {0x0115C0, 0x0115C0}, - {0x0116B7, 0x0116B7}, - {0x01172B, 0x01172B}, - {0x01183A, 0x01183A}, - {0x01193E, 0x01193E}, - {0x011943, 0x011943}, - {0x011A34, 0x011A34}, - {0x011A47, 0x011A47}, - {0x011A99, 0x011A99}, - {0x011D42, 0x011D42}, - {0x011D44, 0x011D45}, - {0x011D97, 0x011D97}, - {0x011F42, 0x011F42}, - {0x016AF0, 0x016AF4}, - {0x016B30, 0x016B36}, - {0x01BC9E, 0x01BC9E}, - {0x01D165, 0x01D165}, - {0x01D167, 0x01D169}, - {0x01D16E, 0x01D172}, - {0x01D17B, 0x01D182}, - {0x01D185, 0x01D18B}, - {0x01D1AA, 0x01D1AD}, - {0x01D242, 0x01D244}, - {0x01E000, 0x01E006}, - {0x01E008, 0x01E018}, - {0x01E01B, 0x01E021}, - {0x01E023, 0x01E024}, - {0x01E026, 0x01E02A}, - {0x01E08F, 0x01E08F}, - {0x01E130, 0x01E136}, - {0x01E2AE, 0x01E2AE}, - {0x01E2EC, 0x01E2EF}, - {0x01E4EC, 0x01E4EF}, - {0x01E8D0, 0x01E8D6}, - {0x01E944, 0x01E94A}, -}; - -#define TYPE bool -#define TABLE lookup_tbl -#define DEFAULT false -#define HAS_VALUE 0 -#include "internal/rtype/lookup-func.h" - -bool -rune_has_prop_indic_conjunct_break(rune ch) -{ - return -#if BIT_LOOKUP - ch <= LATIN1_MAX ? (mask & ch) : -#endif - lookup(ch); -} diff --git a/vendor/librune/lib/rtype/rune_has_prop_join_control.c b/vendor/librune/lib/rtype/rune_has_prop_join_control.c deleted file mode 100644 index a26fc37..0000000 --- a/vendor/librune/lib/rtype/rune_has_prop_join_control.c +++ /dev/null @@ -1,31 +0,0 @@ -/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */ - -#include "rtype.h" - -#include "internal/common.h" - -#if BIT_LOOKUP -static const unsigned _BitInt(LATIN1_MAX + 1) mask = 0x0uwb; -#endif - -static const struct { - rune lo, hi; -} lookup_tbl[] = { - {0x00200C, 0x00200D}, -}; - -#define TYPE bool -#define TABLE lookup_tbl -#define DEFAULT false -#define HAS_VALUE 0 -#include "internal/rtype/lookup-func.h" - -bool -rune_has_prop_join_control(rune ch) -{ - return -#if BIT_LOOKUP - ch <= LATIN1_MAX ? (mask & ch) : -#endif - lookup(ch); -} diff --git a/vendor/librune/lib/rtype/rune_has_prop_logical_order_exception.c b/vendor/librune/lib/rtype/rune_has_prop_logical_order_exception.c deleted file mode 100644 index 6af7d9d..0000000 --- a/vendor/librune/lib/rtype/rune_has_prop_logical_order_exception.c +++ /dev/null @@ -1,37 +0,0 @@ -/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */ - -#include "rtype.h" - -#include "internal/common.h" - -#if BIT_LOOKUP -static const unsigned _BitInt(LATIN1_MAX + 1) mask = 0x0uwb; -#endif - -static const struct { - rune lo, hi; -} lookup_tbl[] = { - {0x000E40, 0x000E44}, - {0x000EC0, 0x000EC4}, - {0x0019B5, 0x0019B7}, - {0x0019BA, 0x0019BA}, - {0x00AAB5, 0x00AAB6}, - {0x00AAB9, 0x00AAB9}, - {0x00AABB, 0x00AABC}, -}; - -#define TYPE bool -#define TABLE lookup_tbl -#define DEFAULT false -#define HAS_VALUE 0 -#include "internal/rtype/lookup-func.h" - -bool -rune_has_prop_logical_order_exception(rune ch) -{ - return -#if BIT_LOOKUP - ch <= LATIN1_MAX ? (mask & ch) : -#endif - lookup(ch); -} diff --git a/vendor/librune/lib/rtype/rune_has_prop_lowercase.c b/vendor/librune/lib/rtype/rune_has_prop_lowercase.c deleted file mode 100644 index e6308cd..0000000 --- a/vendor/librune/lib/rtype/rune_has_prop_lowercase.c +++ /dev/null @@ -1,701 +0,0 @@ -/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */ - -#include "rtype.h" - -#include "internal/common.h" - -#if BIT_LOOKUP -static const unsigned _BitInt(LATIN1_MAX + 1) mask = 0xFF7FFFFF80000000042004000000000007FFFFFE000000000000000000000000uwb; -#endif - -static const struct { - rune lo, hi; -} lookup_tbl[] = { - {0x000061, 0x00007A}, - {0x0000AA, 0x0000AA}, - {0x0000B5, 0x0000B5}, - {0x0000BA, 0x0000BA}, - {0x0000DF, 0x0000F6}, - {0x0000F8, 0x0000FF}, - {0x000101, 0x000101}, - {0x000103, 0x000103}, - {0x000105, 0x000105}, - {0x000107, 0x000107}, - {0x000109, 0x000109}, - {0x00010B, 0x00010B}, - {0x00010D, 0x00010D}, - {0x00010F, 0x00010F}, - {0x000111, 0x000111}, - {0x000113, 0x000113}, - {0x000115, 0x000115}, - {0x000117, 0x000117}, - {0x000119, 0x000119}, - {0x00011B, 0x00011B}, - {0x00011D, 0x00011D}, - {0x00011F, 0x00011F}, - {0x000121, 0x000121}, - {0x000123, 0x000123}, - {0x000125, 0x000125}, - {0x000127, 0x000127}, - {0x000129, 0x000129}, - {0x00012B, 0x00012B}, - {0x00012D, 0x00012D}, - {0x00012F, 0x00012F}, - {0x000131, 0x000131}, - {0x000133, 0x000133}, - {0x000135, 0x000135}, - {0x000137, 0x000138}, - {0x00013A, 0x00013A}, - {0x00013C, 0x00013C}, - {0x00013E, 0x00013E}, - {0x000140, 0x000140}, - {0x000142, 0x000142}, - {0x000144, 0x000144}, - {0x000146, 0x000146}, - {0x000148, 0x000149}, - {0x00014B, 0x00014B}, - {0x00014D, 0x00014D}, - {0x00014F, 0x00014F}, - {0x000151, 0x000151}, - {0x000153, 0x000153}, - {0x000155, 0x000155}, - {0x000157, 0x000157}, - {0x000159, 0x000159}, - {0x00015B, 0x00015B}, - {0x00015D, 0x00015D}, - {0x00015F, 0x00015F}, - {0x000161, 0x000161}, - {0x000163, 0x000163}, - {0x000165, 0x000165}, - {0x000167, 0x000167}, - {0x000169, 0x000169}, - {0x00016B, 0x00016B}, - {0x00016D, 0x00016D}, - {0x00016F, 0x00016F}, - {0x000171, 0x000171}, - {0x000173, 0x000173}, - {0x000175, 0x000175}, - {0x000177, 0x000177}, - {0x00017A, 0x00017A}, - {0x00017C, 0x00017C}, - {0x00017E, 0x000180}, - {0x000183, 0x000183}, - {0x000185, 0x000185}, - {0x000188, 0x000188}, - {0x00018C, 0x00018D}, - {0x000192, 0x000192}, - {0x000195, 0x000195}, - {0x000199, 0x00019B}, - {0x00019E, 0x00019E}, - {0x0001A1, 0x0001A1}, - {0x0001A3, 0x0001A3}, - {0x0001A5, 0x0001A5}, - {0x0001A8, 0x0001A8}, - {0x0001AA, 0x0001AB}, - {0x0001AD, 0x0001AD}, - {0x0001B0, 0x0001B0}, - {0x0001B4, 0x0001B4}, - {0x0001B6, 0x0001B6}, - {0x0001B9, 0x0001BA}, - {0x0001BD, 0x0001BF}, - {0x0001C6, 0x0001C6}, - {0x0001C9, 0x0001C9}, - {0x0001CC, 0x0001CC}, - {0x0001CE, 0x0001CE}, - {0x0001D0, 0x0001D0}, - {0x0001D2, 0x0001D2}, - {0x0001D4, 0x0001D4}, - {0x0001D6, 0x0001D6}, - {0x0001D8, 0x0001D8}, - {0x0001DA, 0x0001DA}, - {0x0001DC, 0x0001DD}, - {0x0001DF, 0x0001DF}, - {0x0001E1, 0x0001E1}, - {0x0001E3, 0x0001E3}, - {0x0001E5, 0x0001E5}, - {0x0001E7, 0x0001E7}, - {0x0001E9, 0x0001E9}, - {0x0001EB, 0x0001EB}, - {0x0001ED, 0x0001ED}, - {0x0001EF, 0x0001F0}, - {0x0001F3, 0x0001F3}, - {0x0001F5, 0x0001F5}, - {0x0001F9, 0x0001F9}, - {0x0001FB, 0x0001FB}, - {0x0001FD, 0x0001FD}, - {0x0001FF, 0x0001FF}, - {0x000201, 0x000201}, - {0x000203, 0x000203}, - {0x000205, 0x000205}, - {0x000207, 0x000207}, - {0x000209, 0x000209}, - {0x00020B, 0x00020B}, - {0x00020D, 0x00020D}, - {0x00020F, 0x00020F}, - {0x000211, 0x000211}, - {0x000213, 0x000213}, - {0x000215, 0x000215}, - {0x000217, 0x000217}, - {0x000219, 0x000219}, - {0x00021B, 0x00021B}, - {0x00021D, 0x00021D}, - {0x00021F, 0x00021F}, - {0x000221, 0x000221}, - {0x000223, 0x000223}, - {0x000225, 0x000225}, - {0x000227, 0x000227}, - {0x000229, 0x000229}, - {0x00022B, 0x00022B}, - {0x00022D, 0x00022D}, - {0x00022F, 0x00022F}, - {0x000231, 0x000231}, - {0x000233, 0x000239}, - {0x00023C, 0x00023C}, - {0x00023F, 0x000240}, - {0x000242, 0x000242}, - {0x000247, 0x000247}, - {0x000249, 0x000249}, - {0x00024B, 0x00024B}, - {0x00024D, 0x00024D}, - {0x00024F, 0x000293}, - {0x000295, 0x0002B8}, - {0x0002C0, 0x0002C1}, - {0x0002E0, 0x0002E4}, - {0x000345, 0x000345}, - {0x000371, 0x000371}, - {0x000373, 0x000373}, - {0x000377, 0x000377}, - {0x00037A, 0x00037D}, - {0x000390, 0x000390}, - {0x0003AC, 0x0003CE}, - {0x0003D0, 0x0003D1}, - {0x0003D5, 0x0003D7}, - {0x0003D9, 0x0003D9}, - {0x0003DB, 0x0003DB}, - {0x0003DD, 0x0003DD}, - {0x0003DF, 0x0003DF}, - {0x0003E1, 0x0003E1}, - {0x0003E3, 0x0003E3}, - {0x0003E5, 0x0003E5}, - {0x0003E7, 0x0003E7}, - {0x0003E9, 0x0003E9}, - {0x0003EB, 0x0003EB}, - {0x0003ED, 0x0003ED}, - {0x0003EF, 0x0003F3}, - {0x0003F5, 0x0003F5}, - {0x0003F8, 0x0003F8}, - {0x0003FB, 0x0003FC}, - {0x000430, 0x00045F}, - {0x000461, 0x000461}, - {0x000463, 0x000463}, - {0x000465, 0x000465}, - {0x000467, 0x000467}, - {0x000469, 0x000469}, - {0x00046B, 0x00046B}, - {0x00046D, 0x00046D}, - {0x00046F, 0x00046F}, - {0x000471, 0x000471}, - {0x000473, 0x000473}, - {0x000475, 0x000475}, - {0x000477, 0x000477}, - {0x000479, 0x000479}, - {0x00047B, 0x00047B}, - {0x00047D, 0x00047D}, - {0x00047F, 0x00047F}, - {0x000481, 0x000481}, - {0x00048B, 0x00048B}, - {0x00048D, 0x00048D}, - {0x00048F, 0x00048F}, - {0x000491, 0x000491}, - {0x000493, 0x000493}, - {0x000495, 0x000495}, - {0x000497, 0x000497}, - {0x000499, 0x000499}, - {0x00049B, 0x00049B}, - {0x00049D, 0x00049D}, - {0x00049F, 0x00049F}, - {0x0004A1, 0x0004A1}, - {0x0004A3, 0x0004A3}, - {0x0004A5, 0x0004A5}, - {0x0004A7, 0x0004A7}, - {0x0004A9, 0x0004A9}, - {0x0004AB, 0x0004AB}, - {0x0004AD, 0x0004AD}, - {0x0004AF, 0x0004AF}, - {0x0004B1, 0x0004B1}, - {0x0004B3, 0x0004B3}, - {0x0004B5, 0x0004B5}, - {0x0004B7, 0x0004B7}, - {0x0004B9, 0x0004B9}, - {0x0004BB, 0x0004BB}, - {0x0004BD, 0x0004BD}, - {0x0004BF, 0x0004BF}, - {0x0004C2, 0x0004C2}, - {0x0004C4, 0x0004C4}, - {0x0004C6, 0x0004C6}, - {0x0004C8, 0x0004C8}, - {0x0004CA, 0x0004CA}, - {0x0004CC, 0x0004CC}, - {0x0004CE, 0x0004CF}, - {0x0004D1, 0x0004D1}, - {0x0004D3, 0x0004D3}, - {0x0004D5, 0x0004D5}, - {0x0004D7, 0x0004D7}, - {0x0004D9, 0x0004D9}, - {0x0004DB, 0x0004DB}, - {0x0004DD, 0x0004DD}, - {0x0004DF, 0x0004DF}, - {0x0004E1, 0x0004E1}, - {0x0004E3, 0x0004E3}, - {0x0004E5, 0x0004E5}, - {0x0004E7, 0x0004E7}, - {0x0004E9, 0x0004E9}, - {0x0004EB, 0x0004EB}, - {0x0004ED, 0x0004ED}, - {0x0004EF, 0x0004EF}, - {0x0004F1, 0x0004F1}, - {0x0004F3, 0x0004F3}, - {0x0004F5, 0x0004F5}, - {0x0004F7, 0x0004F7}, - {0x0004F9, 0x0004F9}, - {0x0004FB, 0x0004FB}, - {0x0004FD, 0x0004FD}, - {0x0004FF, 0x0004FF}, - {0x000501, 0x000501}, - {0x000503, 0x000503}, - {0x000505, 0x000505}, - {0x000507, 0x000507}, - {0x000509, 0x000509}, - {0x00050B, 0x00050B}, - {0x00050D, 0x00050D}, - {0x00050F, 0x00050F}, - {0x000511, 0x000511}, - {0x000513, 0x000513}, - {0x000515, 0x000515}, - {0x000517, 0x000517}, - {0x000519, 0x000519}, - {0x00051B, 0x00051B}, - {0x00051D, 0x00051D}, - {0x00051F, 0x00051F}, - {0x000521, 0x000521}, - {0x000523, 0x000523}, - {0x000525, 0x000525}, - {0x000527, 0x000527}, - {0x000529, 0x000529}, - {0x00052B, 0x00052B}, - {0x00052D, 0x00052D}, - {0x00052F, 0x00052F}, - {0x000560, 0x000588}, - {0x0010D0, 0x0010FA}, - {0x0010FC, 0x0010FF}, - {0x0013F8, 0x0013FD}, - {0x001C80, 0x001C88}, - {0x001D00, 0x001DBF}, - {0x001E01, 0x001E01}, - {0x001E03, 0x001E03}, - {0x001E05, 0x001E05}, - {0x001E07, 0x001E07}, - {0x001E09, 0x001E09}, - {0x001E0B, 0x001E0B}, - {0x001E0D, 0x001E0D}, - {0x001E0F, 0x001E0F}, - {0x001E11, 0x001E11}, - {0x001E13, 0x001E13}, - {0x001E15, 0x001E15}, - {0x001E17, 0x001E17}, - {0x001E19, 0x001E19}, - {0x001E1B, 0x001E1B}, - {0x001E1D, 0x001E1D}, - {0x001E1F, 0x001E1F}, - {0x001E21, 0x001E21}, - {0x001E23, 0x001E23}, - {0x001E25, 0x001E25}, - {0x001E27, 0x001E27}, - {0x001E29, 0x001E29}, - {0x001E2B, 0x001E2B}, - {0x001E2D, 0x001E2D}, - {0x001E2F, 0x001E2F}, - {0x001E31, 0x001E31}, - {0x001E33, 0x001E33}, - {0x001E35, 0x001E35}, - {0x001E37, 0x001E37}, - {0x001E39, 0x001E39}, - {0x001E3B, 0x001E3B}, - {0x001E3D, 0x001E3D}, - {0x001E3F, 0x001E3F}, - {0x001E41, 0x001E41}, - {0x001E43, 0x001E43}, - {0x001E45, 0x001E45}, - {0x001E47, 0x001E47}, - {0x001E49, 0x001E49}, - {0x001E4B, 0x001E4B}, - {0x001E4D, 0x001E4D}, - {0x001E4F, 0x001E4F}, - {0x001E51, 0x001E51}, - {0x001E53, 0x001E53}, - {0x001E55, 0x001E55}, - {0x001E57, 0x001E57}, - {0x001E59, 0x001E59}, - {0x001E5B, 0x001E5B}, - {0x001E5D, 0x001E5D}, - {0x001E5F, 0x001E5F}, - {0x001E61, 0x001E61}, - {0x001E63, 0x001E63}, - {0x001E65, 0x001E65}, - {0x001E67, 0x001E67}, - {0x001E69, 0x001E69}, - {0x001E6B, 0x001E6B}, - {0x001E6D, 0x001E6D}, - {0x001E6F, 0x001E6F}, - {0x001E71, 0x001E71}, - {0x001E73, 0x001E73}, - {0x001E75, 0x001E75}, - {0x001E77, 0x001E77}, - {0x001E79, 0x001E79}, - {0x001E7B, 0x001E7B}, - {0x001E7D, 0x001E7D}, - {0x001E7F, 0x001E7F}, - {0x001E81, 0x001E81}, - {0x001E83, 0x001E83}, - {0x001E85, 0x001E85}, - {0x001E87, 0x001E87}, - {0x001E89, 0x001E89}, - {0x001E8B, 0x001E8B}, - {0x001E8D, 0x001E8D}, - {0x001E8F, 0x001E8F}, - {0x001E91, 0x001E91}, - {0x001E93, 0x001E93}, - {0x001E95, 0x001E9D}, - {0x001E9F, 0x001E9F}, - {0x001EA1, 0x001EA1}, - {0x001EA3, 0x001EA3}, - {0x001EA5, 0x001EA5}, - {0x001EA7, 0x001EA7}, - {0x001EA9, 0x001EA9}, - {0x001EAB, 0x001EAB}, - {0x001EAD, 0x001EAD}, - {0x001EAF, 0x001EAF}, - {0x001EB1, 0x001EB1}, - {0x001EB3, 0x001EB3}, - {0x001EB5, 0x001EB5}, - {0x001EB7, 0x001EB7}, - {0x001EB9, 0x001EB9}, - {0x001EBB, 0x001EBB}, - {0x001EBD, 0x001EBD}, - {0x001EBF, 0x001EBF}, - {0x001EC1, 0x001EC1}, - {0x001EC3, 0x001EC3}, - {0x001EC5, 0x001EC5}, - {0x001EC7, 0x001EC7}, - {0x001EC9, 0x001EC9}, - {0x001ECB, 0x001ECB}, - {0x001ECD, 0x001ECD}, - {0x001ECF, 0x001ECF}, - {0x001ED1, 0x001ED1}, - {0x001ED3, 0x001ED3}, - {0x001ED5, 0x001ED5}, - {0x001ED7, 0x001ED7}, - {0x001ED9, 0x001ED9}, - {0x001EDB, 0x001EDB}, - {0x001EDD, 0x001EDD}, - {0x001EDF, 0x001EDF}, - {0x001EE1, 0x001EE1}, - {0x001EE3, 0x001EE3}, - {0x001EE5, 0x001EE5}, - {0x001EE7, 0x001EE7}, - {0x001EE9, 0x001EE9}, - {0x001EEB, 0x001EEB}, - {0x001EED, 0x001EED}, - {0x001EEF, 0x001EEF}, - {0x001EF1, 0x001EF1}, - {0x001EF3, 0x001EF3}, - {0x001EF5, 0x001EF5}, - {0x001EF7, 0x001EF7}, - {0x001EF9, 0x001EF9}, - {0x001EFB, 0x001EFB}, - {0x001EFD, 0x001EFD}, - {0x001EFF, 0x001F07}, - {0x001F10, 0x001F15}, - {0x001F20, 0x001F27}, - {0x001F30, 0x001F37}, - {0x001F40, 0x001F45}, - {0x001F50, 0x001F57}, - {0x001F60, 0x001F67}, - {0x001F70, 0x001F7D}, - {0x001F80, 0x001F87}, - {0x001F90, 0x001F97}, - {0x001FA0, 0x001FA7}, - {0x001FB0, 0x001FB4}, - {0x001FB6, 0x001FB7}, - {0x001FBE, 0x001FBE}, - {0x001FC2, 0x001FC4}, - {0x001FC6, 0x001FC7}, - {0x001FD0, 0x001FD3}, - {0x001FD6, 0x001FD7}, - {0x001FE0, 0x001FE7}, - {0x001FF2, 0x001FF4}, - {0x001FF6, 0x001FF7}, - {0x002071, 0x002071}, - {0x00207F, 0x00207F}, - {0x002090, 0x00209C}, - {0x00210A, 0x00210A}, - {0x00210E, 0x00210F}, - {0x002113, 0x002113}, - {0x00212F, 0x00212F}, - {0x002134, 0x002134}, - {0x002139, 0x002139}, - {0x00213C, 0x00213D}, - {0x002146, 0x002149}, - {0x00214E, 0x00214E}, - {0x002170, 0x00217F}, - {0x002184, 0x002184}, - {0x0024D0, 0x0024E9}, - {0x002C30, 0x002C5F}, - {0x002C61, 0x002C61}, - {0x002C65, 0x002C66}, - {0x002C68, 0x002C68}, - {0x002C6A, 0x002C6A}, - {0x002C6C, 0x002C6C}, - {0x002C71, 0x002C71}, - {0x002C73, 0x002C74}, - {0x002C76, 0x002C7D}, - {0x002C81, 0x002C81}, - {0x002C83, 0x002C83}, - {0x002C85, 0x002C85}, - {0x002C87, 0x002C87}, - {0x002C89, 0x002C89}, - {0x002C8B, 0x002C8B}, - {0x002C8D, 0x002C8D}, - {0x002C8F, 0x002C8F}, - {0x002C91, 0x002C91}, - {0x002C93, 0x002C93}, - {0x002C95, 0x002C95}, - {0x002C97, 0x002C97}, - {0x002C99, 0x002C99}, - {0x002C9B, 0x002C9B}, - {0x002C9D, 0x002C9D}, - {0x002C9F, 0x002C9F}, - {0x002CA1, 0x002CA1}, - {0x002CA3, 0x002CA3}, - {0x002CA5, 0x002CA5}, - {0x002CA7, 0x002CA7}, - {0x002CA9, 0x002CA9}, - {0x002CAB, 0x002CAB}, - {0x002CAD, 0x002CAD}, - {0x002CAF, 0x002CAF}, - {0x002CB1, 0x002CB1}, - {0x002CB3, 0x002CB3}, - {0x002CB5, 0x002CB5}, - {0x002CB7, 0x002CB7}, - {0x002CB9, 0x002CB9}, - {0x002CBB, 0x002CBB}, - {0x002CBD, 0x002CBD}, - {0x002CBF, 0x002CBF}, - {0x002CC1, 0x002CC1}, - {0x002CC3, 0x002CC3}, - {0x002CC5, 0x002CC5}, - {0x002CC7, 0x002CC7}, - {0x002CC9, 0x002CC9}, - {0x002CCB, 0x002CCB}, - {0x002CCD, 0x002CCD}, - {0x002CCF, 0x002CCF}, - {0x002CD1, 0x002CD1}, - {0x002CD3, 0x002CD3}, - {0x002CD5, 0x002CD5}, - {0x002CD7, 0x002CD7}, - {0x002CD9, 0x002CD9}, - {0x002CDB, 0x002CDB}, - {0x002CDD, 0x002CDD}, - {0x002CDF, 0x002CDF}, - {0x002CE1, 0x002CE1}, - {0x002CE3, 0x002CE4}, - {0x002CEC, 0x002CEC}, - {0x002CEE, 0x002CEE}, - {0x002CF3, 0x002CF3}, - {0x002D00, 0x002D25}, - {0x002D27, 0x002D27}, - {0x002D2D, 0x002D2D}, - {0x00A641, 0x00A641}, - {0x00A643, 0x00A643}, - {0x00A645, 0x00A645}, - {0x00A647, 0x00A647}, - {0x00A649, 0x00A649}, - {0x00A64B, 0x00A64B}, - {0x00A64D, 0x00A64D}, - {0x00A64F, 0x00A64F}, - {0x00A651, 0x00A651}, - {0x00A653, 0x00A653}, - {0x00A655, 0x00A655}, - {0x00A657, 0x00A657}, - {0x00A659, 0x00A659}, - {0x00A65B, 0x00A65B}, - {0x00A65D, 0x00A65D}, - {0x00A65F, 0x00A65F}, - {0x00A661, 0x00A661}, - {0x00A663, 0x00A663}, - {0x00A665, 0x00A665}, - {0x00A667, 0x00A667}, - {0x00A669, 0x00A669}, - {0x00A66B, 0x00A66B}, - {0x00A66D, 0x00A66D}, - {0x00A681, 0x00A681}, - {0x00A683, 0x00A683}, - {0x00A685, 0x00A685}, - {0x00A687, 0x00A687}, - {0x00A689, 0x00A689}, - {0x00A68B, 0x00A68B}, - {0x00A68D, 0x00A68D}, - {0x00A68F, 0x00A68F}, - {0x00A691, 0x00A691}, - {0x00A693, 0x00A693}, - {0x00A695, 0x00A695}, - {0x00A697, 0x00A697}, - {0x00A699, 0x00A699}, - {0x00A69B, 0x00A69D}, - {0x00A723, 0x00A723}, - {0x00A725, 0x00A725}, - {0x00A727, 0x00A727}, - {0x00A729, 0x00A729}, - {0x00A72B, 0x00A72B}, - {0x00A72D, 0x00A72D}, - {0x00A72F, 0x00A731}, - {0x00A733, 0x00A733}, - {0x00A735, 0x00A735}, - {0x00A737, 0x00A737}, - {0x00A739, 0x00A739}, - {0x00A73B, 0x00A73B}, - {0x00A73D, 0x00A73D}, - {0x00A73F, 0x00A73F}, - {0x00A741, 0x00A741}, - {0x00A743, 0x00A743}, - {0x00A745, 0x00A745}, - {0x00A747, 0x00A747}, - {0x00A749, 0x00A749}, - {0x00A74B, 0x00A74B}, - {0x00A74D, 0x00A74D}, - {0x00A74F, 0x00A74F}, - {0x00A751, 0x00A751}, - {0x00A753, 0x00A753}, - {0x00A755, 0x00A755}, - {0x00A757, 0x00A757}, - {0x00A759, 0x00A759}, - {0x00A75B, 0x00A75B}, - {0x00A75D, 0x00A75D}, - {0x00A75F, 0x00A75F}, - {0x00A761, 0x00A761}, - {0x00A763, 0x00A763}, - {0x00A765, 0x00A765}, - {0x00A767, 0x00A767}, - {0x00A769, 0x00A769}, - {0x00A76B, 0x00A76B}, - {0x00A76D, 0x00A76D}, - {0x00A76F, 0x00A778}, - {0x00A77A, 0x00A77A}, - {0x00A77C, 0x00A77C}, - {0x00A77F, 0x00A77F}, - {0x00A781, 0x00A781}, - {0x00A783, 0x00A783}, - {0x00A785, 0x00A785}, - {0x00A787, 0x00A787}, - {0x00A78C, 0x00A78C}, - {0x00A78E, 0x00A78E}, - {0x00A791, 0x00A791}, - {0x00A793, 0x00A795}, - {0x00A797, 0x00A797}, - {0x00A799, 0x00A799}, - {0x00A79B, 0x00A79B}, - {0x00A79D, 0x00A79D}, - {0x00A79F, 0x00A79F}, - {0x00A7A1, 0x00A7A1}, - {0x00A7A3, 0x00A7A3}, - {0x00A7A5, 0x00A7A5}, - {0x00A7A7, 0x00A7A7}, - {0x00A7A9, 0x00A7A9}, - {0x00A7AF, 0x00A7AF}, - {0x00A7B5, 0x00A7B5}, - {0x00A7B7, 0x00A7B7}, - {0x00A7B9, 0x00A7B9}, - {0x00A7BB, 0x00A7BB}, - {0x00A7BD, 0x00A7BD}, - {0x00A7BF, 0x00A7BF}, - {0x00A7C1, 0x00A7C1}, - {0x00A7C3, 0x00A7C3}, - {0x00A7C8, 0x00A7C8}, - {0x00A7CA, 0x00A7CA}, - {0x00A7D1, 0x00A7D1}, - {0x00A7D3, 0x00A7D3}, - {0x00A7D5, 0x00A7D5}, - {0x00A7D7, 0x00A7D7}, - {0x00A7D9, 0x00A7D9}, - {0x00A7F2, 0x00A7F4}, - {0x00A7F6, 0x00A7F6}, - {0x00A7F8, 0x00A7FA}, - {0x00AB30, 0x00AB5A}, - {0x00AB5C, 0x00AB69}, - {0x00AB70, 0x00ABBF}, - {0x00FB00, 0x00FB06}, - {0x00FB13, 0x00FB17}, - {0x00FF41, 0x00FF5A}, - {0x010428, 0x01044F}, - {0x0104D8, 0x0104FB}, - {0x010597, 0x0105A1}, - {0x0105A3, 0x0105B1}, - {0x0105B3, 0x0105B9}, - {0x0105BB, 0x0105BC}, - {0x010780, 0x010780}, - {0x010783, 0x010785}, - {0x010787, 0x0107B0}, - {0x0107B2, 0x0107BA}, - {0x010CC0, 0x010CF2}, - {0x0118C0, 0x0118DF}, - {0x016E60, 0x016E7F}, - {0x01D41A, 0x01D433}, - {0x01D44E, 0x01D454}, - {0x01D456, 0x01D467}, - {0x01D482, 0x01D49B}, - {0x01D4B6, 0x01D4B9}, - {0x01D4BB, 0x01D4BB}, - {0x01D4BD, 0x01D4C3}, - {0x01D4C5, 0x01D4CF}, - {0x01D4EA, 0x01D503}, - {0x01D51E, 0x01D537}, - {0x01D552, 0x01D56B}, - {0x01D586, 0x01D59F}, - {0x01D5BA, 0x01D5D3}, - {0x01D5EE, 0x01D607}, - {0x01D622, 0x01D63B}, - {0x01D656, 0x01D66F}, - {0x01D68A, 0x01D6A5}, - {0x01D6C2, 0x01D6DA}, - {0x01D6DC, 0x01D6E1}, - {0x01D6FC, 0x01D714}, - {0x01D716, 0x01D71B}, - {0x01D736, 0x01D74E}, - {0x01D750, 0x01D755}, - {0x01D770, 0x01D788}, - {0x01D78A, 0x01D78F}, - {0x01D7AA, 0x01D7C2}, - {0x01D7C4, 0x01D7C9}, - {0x01D7CB, 0x01D7CB}, - {0x01DF00, 0x01DF09}, - {0x01DF0B, 0x01DF1E}, - {0x01DF25, 0x01DF2A}, - {0x01E030, 0x01E06D}, - {0x01E922, 0x01E943}, -}; - -#define TYPE bool -#define TABLE lookup_tbl -#define DEFAULT false -#define HAS_VALUE 0 -#include "internal/rtype/lookup-func.h" - -bool -rune_has_prop_lowercase(rune ch) -{ - return -#if BIT_LOOKUP - ch <= LATIN1_MAX ? (mask & ch) : -#endif - lookup(ch); -} diff --git a/vendor/librune/lib/rtype/rune_has_prop_math.c b/vendor/librune/lib/rtype/rune_has_prop_math.c deleted file mode 100644 index 54858ba..0000000 --- a/vendor/librune/lib/rtype/rune_has_prop_math.c +++ /dev/null @@ -1,168 +0,0 @@ -/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */ - -#include "rtype.h" - -#include "internal/common.h" - -#if BIT_LOOKUP -static const unsigned _BitInt(LATIN1_MAX + 1) mask = 0x80000000800000000210000000000050000000400000007000080000000000uwb; -#endif - -static const struct { - rune lo, hi; -} lookup_tbl[] = { - {0x00002B, 0x00002B}, - {0x00003C, 0x00003E}, - {0x00005E, 0x00005E}, - {0x00007C, 0x00007C}, - {0x00007E, 0x00007E}, - {0x0000AC, 0x0000AC}, - {0x0000B1, 0x0000B1}, - {0x0000D7, 0x0000D7}, - {0x0000F7, 0x0000F7}, - {0x0003D0, 0x0003D2}, - {0x0003D5, 0x0003D5}, - {0x0003F0, 0x0003F1}, - {0x0003F4, 0x0003F6}, - {0x000606, 0x000608}, - {0x002016, 0x002016}, - {0x002032, 0x002034}, - {0x002040, 0x002040}, - {0x002044, 0x002044}, - {0x002052, 0x002052}, - {0x002061, 0x002064}, - {0x00207A, 0x00207E}, - {0x00208A, 0x00208E}, - {0x0020D0, 0x0020DC}, - {0x0020E1, 0x0020E1}, - {0x0020E5, 0x0020E6}, - {0x0020EB, 0x0020EF}, - {0x002102, 0x002102}, - {0x002107, 0x002107}, - {0x00210A, 0x002113}, - {0x002115, 0x002115}, - {0x002118, 0x00211D}, - {0x002124, 0x002124}, - {0x002128, 0x002129}, - {0x00212C, 0x00212D}, - {0x00212F, 0x002131}, - {0x002133, 0x002138}, - {0x00213C, 0x002149}, - {0x00214B, 0x00214B}, - {0x002190, 0x0021A7}, - {0x0021A9, 0x0021AE}, - {0x0021B0, 0x0021B1}, - {0x0021B6, 0x0021B7}, - {0x0021BC, 0x0021DB}, - {0x0021DD, 0x0021DD}, - {0x0021E4, 0x0021E5}, - {0x0021F4, 0x0022FF}, - {0x002308, 0x00230B}, - {0x002320, 0x002321}, - {0x00237C, 0x00237C}, - {0x00239B, 0x0023B5}, - {0x0023B7, 0x0023B7}, - {0x0023D0, 0x0023D0}, - {0x0023DC, 0x0023E2}, - {0x0025A0, 0x0025A1}, - {0x0025AE, 0x0025B7}, - {0x0025BC, 0x0025C1}, - {0x0025C6, 0x0025C7}, - {0x0025CA, 0x0025CB}, - {0x0025CF, 0x0025D3}, - {0x0025E2, 0x0025E2}, - {0x0025E4, 0x0025E4}, - {0x0025E7, 0x0025EC}, - {0x0025F8, 0x0025FF}, - {0x002605, 0x002606}, - {0x002640, 0x002640}, - {0x002642, 0x002642}, - {0x002660, 0x002663}, - {0x00266D, 0x00266F}, - {0x0027C0, 0x0027FF}, - {0x002900, 0x002AFF}, - {0x002B30, 0x002B44}, - {0x002B47, 0x002B4C}, - {0x00FB29, 0x00FB29}, - {0x00FE61, 0x00FE66}, - {0x00FE68, 0x00FE68}, - {0x00FF0B, 0x00FF0B}, - {0x00FF1C, 0x00FF1E}, - {0x00FF3C, 0x00FF3C}, - {0x00FF3E, 0x00FF3E}, - {0x00FF5C, 0x00FF5C}, - {0x00FF5E, 0x00FF5E}, - {0x00FFE2, 0x00FFE2}, - {0x00FFE9, 0x00FFEC}, - {0x01D400, 0x01D454}, - {0x01D456, 0x01D49C}, - {0x01D49E, 0x01D49F}, - {0x01D4A2, 0x01D4A2}, - {0x01D4A5, 0x01D4A6}, - {0x01D4A9, 0x01D4AC}, - {0x01D4AE, 0x01D4B9}, - {0x01D4BB, 0x01D4BB}, - {0x01D4BD, 0x01D4C3}, - {0x01D4C5, 0x01D505}, - {0x01D507, 0x01D50A}, - {0x01D50D, 0x01D514}, - {0x01D516, 0x01D51C}, - {0x01D51E, 0x01D539}, - {0x01D53B, 0x01D53E}, - {0x01D540, 0x01D544}, - {0x01D546, 0x01D546}, - {0x01D54A, 0x01D550}, - {0x01D552, 0x01D6A5}, - {0x01D6A8, 0x01D7CB}, - {0x01D7CE, 0x01D7FF}, - {0x01EE00, 0x01EE03}, - {0x01EE05, 0x01EE1F}, - {0x01EE21, 0x01EE22}, - {0x01EE24, 0x01EE24}, - {0x01EE27, 0x01EE27}, - {0x01EE29, 0x01EE32}, - {0x01EE34, 0x01EE37}, - {0x01EE39, 0x01EE39}, - {0x01EE3B, 0x01EE3B}, - {0x01EE42, 0x01EE42}, - {0x01EE47, 0x01EE47}, - {0x01EE49, 0x01EE49}, - {0x01EE4B, 0x01EE4B}, - {0x01EE4D, 0x01EE4F}, - {0x01EE51, 0x01EE52}, - {0x01EE54, 0x01EE54}, - {0x01EE57, 0x01EE57}, - {0x01EE59, 0x01EE59}, - {0x01EE5B, 0x01EE5B}, - {0x01EE5D, 0x01EE5D}, - {0x01EE5F, 0x01EE5F}, - {0x01EE61, 0x01EE62}, - {0x01EE64, 0x01EE64}, - {0x01EE67, 0x01EE6A}, - {0x01EE6C, 0x01EE72}, - {0x01EE74, 0x01EE77}, - {0x01EE79, 0x01EE7C}, - {0x01EE7E, 0x01EE7E}, - {0x01EE80, 0x01EE89}, - {0x01EE8B, 0x01EE9B}, - {0x01EEA1, 0x01EEA3}, - {0x01EEA5, 0x01EEA9}, - {0x01EEAB, 0x01EEBB}, - {0x01EEF0, 0x01EEF1}, -}; - -#define TYPE bool -#define TABLE lookup_tbl -#define DEFAULT false -#define HAS_VALUE 0 -#include "internal/rtype/lookup-func.h" - -bool -rune_has_prop_math(rune ch) -{ - return -#if BIT_LOOKUP - ch <= LATIN1_MAX ? (mask & ch) : -#endif - lookup(ch); -} diff --git a/vendor/librune/lib/rtype/rune_has_prop_noncharacter_code_point.c b/vendor/librune/lib/rtype/rune_has_prop_noncharacter_code_point.c deleted file mode 100644 index 64fe613..0000000 --- a/vendor/librune/lib/rtype/rune_has_prop_noncharacter_code_point.c +++ /dev/null @@ -1,47 +0,0 @@ -/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */ - -#include "rtype.h" - -#include "internal/common.h" - -#if BIT_LOOKUP -static const unsigned _BitInt(LATIN1_MAX + 1) mask = 0x0uwb; -#endif - -static const struct { - rune lo, hi; -} lookup_tbl[] = { - {0x00FDD0, 0x00FDEF}, - {0x00FFFE, 0x00FFFF}, - {0x01FFFE, 0x01FFFF}, - {0x02FFFE, 0x02FFFF}, - {0x03FFFE, 0x03FFFF}, - {0x04FFFE, 0x04FFFF}, - {0x05FFFE, 0x05FFFF}, - {0x06FFFE, 0x06FFFF}, - {0x07FFFE, 0x07FFFF}, - {0x08FFFE, 0x08FFFF}, - {0x09FFFE, 0x09FFFF}, - {0x0AFFFE, 0x0AFFFF}, - {0x0BFFFE, 0x0BFFFF}, - {0x0CFFFE, 0x0CFFFF}, - {0x0DFFFE, 0x0DFFFF}, - {0x0EFFFE, 0x0EFFFF}, - {0x0FFFFE, 0x0FFFFF}, -}; - -#define TYPE bool -#define TABLE lookup_tbl -#define DEFAULT false -#define HAS_VALUE 0 -#include "internal/rtype/lookup-func.h" - -bool -rune_has_prop_noncharacter_code_point(rune ch) -{ - return -#if BIT_LOOKUP - ch <= LATIN1_MAX ? (mask & ch) : -#endif - lookup(ch); -} diff --git a/vendor/librune/lib/rtype/rune_has_prop_pattern_syntax.c b/vendor/librune/lib/rtype/rune_has_prop_pattern_syntax.c deleted file mode 100644 index bb25abd..0000000 --- a/vendor/librune/lib/rtype/rune_has_prop_pattern_syntax.c +++ /dev/null @@ -1,58 +0,0 @@ -/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */ - -#include "rtype.h" - -#include "internal/common.h" - -#if BIT_LOOKUP -static const unsigned _BitInt(LATIN1_MAX + 1) mask = 0x8000000080000088435AFE000000007800000178000001FC00FFFE00000000uwb; -#endif - -static const struct { - rune lo, hi; -} lookup_tbl[] = { - {0x000021, 0x00002F}, - {0x00003A, 0x000040}, - {0x00005B, 0x00005E}, - {0x000060, 0x000060}, - {0x00007B, 0x00007E}, - {0x0000A1, 0x0000A7}, - {0x0000A9, 0x0000A9}, - {0x0000AB, 0x0000AC}, - {0x0000AE, 0x0000AE}, - {0x0000B0, 0x0000B1}, - {0x0000B6, 0x0000B6}, - {0x0000BB, 0x0000BB}, - {0x0000BF, 0x0000BF}, - {0x0000D7, 0x0000D7}, - {0x0000F7, 0x0000F7}, - {0x002010, 0x002027}, - {0x002030, 0x00203E}, - {0x002041, 0x002053}, - {0x002055, 0x00205E}, - {0x002190, 0x00245F}, - {0x002500, 0x002775}, - {0x002794, 0x002BFF}, - {0x002E00, 0x002E7F}, - {0x003001, 0x003003}, - {0x003008, 0x003020}, - {0x003030, 0x003030}, - {0x00FD3E, 0x00FD3F}, - {0x00FE45, 0x00FE46}, -}; - -#define TYPE bool -#define TABLE lookup_tbl -#define DEFAULT false -#define HAS_VALUE 0 -#include "internal/rtype/lookup-func.h" - -bool -rune_has_prop_pattern_syntax(rune ch) -{ - return -#if BIT_LOOKUP - ch <= LATIN1_MAX ? (mask & ch) : -#endif - lookup(ch); -} diff --git a/vendor/librune/lib/rtype/rune_has_prop_pattern_white_space.c b/vendor/librune/lib/rtype/rune_has_prop_pattern_white_space.c deleted file mode 100644 index aa76d28..0000000 --- a/vendor/librune/lib/rtype/rune_has_prop_pattern_white_space.c +++ /dev/null @@ -1,35 +0,0 @@ -/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */ - -#include "rtype.h" - -#include "internal/common.h" - -#if BIT_LOOKUP -static const unsigned _BitInt(LATIN1_MAX + 1) mask = 0x2000000000000000000000000100003E00uwb; -#endif - -static const struct { - rune lo, hi; -} lookup_tbl[] = { - {0x000009, 0x00000D}, - {0x000020, 0x000020}, - {0x000085, 0x000085}, - {0x00200E, 0x00200F}, - {0x002028, 0x002029}, -}; - -#define TYPE bool -#define TABLE lookup_tbl -#define DEFAULT false -#define HAS_VALUE 0 -#include "internal/rtype/lookup-func.h" - -bool -rune_has_prop_pattern_white_space(rune ch) -{ - return -#if BIT_LOOKUP - ch <= LATIN1_MAX ? (mask & ch) : -#endif - lookup(ch); -} diff --git a/vendor/librune/lib/rtype/rune_has_prop_prepended_concatenation_mark.c b/vendor/librune/lib/rtype/rune_has_prop_prepended_concatenation_mark.c deleted file mode 100644 index ee5e1d5..0000000 --- a/vendor/librune/lib/rtype/rune_has_prop_prepended_concatenation_mark.c +++ /dev/null @@ -1,37 +0,0 @@ -/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */ - -#include "rtype.h" - -#include "internal/common.h" - -#if BIT_LOOKUP -static const unsigned _BitInt(LATIN1_MAX + 1) mask = 0x0uwb; -#endif - -static const struct { - rune lo, hi; -} lookup_tbl[] = { - {0x000600, 0x000605}, - {0x0006DD, 0x0006DD}, - {0x00070F, 0x00070F}, - {0x000890, 0x000891}, - {0x0008E2, 0x0008E2}, - {0x0110BD, 0x0110BD}, - {0x0110CD, 0x0110CD}, -}; - -#define TYPE bool -#define TABLE lookup_tbl -#define DEFAULT false -#define HAS_VALUE 0 -#include "internal/rtype/lookup-func.h" - -bool -rune_has_prop_prepended_concatenation_mark(rune ch) -{ - return -#if BIT_LOOKUP - ch <= LATIN1_MAX ? (mask & ch) : -#endif - lookup(ch); -} diff --git a/vendor/librune/lib/rtype/rune_has_prop_quotation_mark.c b/vendor/librune/lib/rtype/rune_has_prop_quotation_mark.c deleted file mode 100644 index 78c693c..0000000 --- a/vendor/librune/lib/rtype/rune_has_prop_quotation_mark.c +++ /dev/null @@ -1,43 +0,0 @@ -/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */ - -#include "rtype.h" - -#include "internal/common.h" - -#if BIT_LOOKUP -static const unsigned _BitInt(LATIN1_MAX + 1) mask = 0x80008000000000000000000000000000000008400000000uwb; -#endif - -static const struct { - rune lo, hi; -} lookup_tbl[] = { - {0x000022, 0x000022}, - {0x000027, 0x000027}, - {0x0000AB, 0x0000AB}, - {0x0000BB, 0x0000BB}, - {0x002018, 0x00201F}, - {0x002039, 0x00203A}, - {0x002E42, 0x002E42}, - {0x00300C, 0x00300F}, - {0x00301D, 0x00301F}, - {0x00FE41, 0x00FE44}, - {0x00FF02, 0x00FF02}, - {0x00FF07, 0x00FF07}, - {0x00FF62, 0x00FF63}, -}; - -#define TYPE bool -#define TABLE lookup_tbl -#define DEFAULT false -#define HAS_VALUE 0 -#include "internal/rtype/lookup-func.h" - -bool -rune_has_prop_quotation_mark(rune ch) -{ - return -#if BIT_LOOKUP - ch <= LATIN1_MAX ? (mask & ch) : -#endif - lookup(ch); -} diff --git a/vendor/librune/lib/rtype/rune_has_prop_radical.c b/vendor/librune/lib/rtype/rune_has_prop_radical.c deleted file mode 100644 index a6c3587..0000000 --- a/vendor/librune/lib/rtype/rune_has_prop_radical.c +++ /dev/null @@ -1,33 +0,0 @@ -/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */ - -#include "rtype.h" - -#include "internal/common.h" - -#if BIT_LOOKUP -static const unsigned _BitInt(LATIN1_MAX + 1) mask = 0x0uwb; -#endif - -static const struct { - rune lo, hi; -} lookup_tbl[] = { - {0x002E80, 0x002E99}, - {0x002E9B, 0x002EF3}, - {0x002F00, 0x002FD5}, -}; - -#define TYPE bool -#define TABLE lookup_tbl -#define DEFAULT false -#define HAS_VALUE 0 -#include "internal/rtype/lookup-func.h" - -bool -rune_has_prop_radical(rune ch) -{ - return -#if BIT_LOOKUP - ch <= LATIN1_MAX ? (mask & ch) : -#endif - lookup(ch); -} diff --git a/vendor/librune/lib/rtype/rune_has_prop_regional_indicator.c b/vendor/librune/lib/rtype/rune_has_prop_regional_indicator.c deleted file mode 100644 index 87c6771..0000000 --- a/vendor/librune/lib/rtype/rune_has_prop_regional_indicator.c +++ /dev/null @@ -1,31 +0,0 @@ -/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */ - -#include "rtype.h" - -#include "internal/common.h" - -#if BIT_LOOKUP -static const unsigned _BitInt(LATIN1_MAX + 1) mask = 0x0uwb; -#endif - -static const struct { - rune lo, hi; -} lookup_tbl[] = { - {0x01F1E6, 0x01F1FF}, -}; - -#define TYPE bool -#define TABLE lookup_tbl -#define DEFAULT false -#define HAS_VALUE 0 -#include "internal/rtype/lookup-func.h" - -bool -rune_has_prop_regional_indicator(rune ch) -{ - return -#if BIT_LOOKUP - ch <= LATIN1_MAX ? (mask & ch) : -#endif - lookup(ch); -} diff --git a/vendor/librune/lib/rtype/rune_has_prop_sentence_terminal.c b/vendor/librune/lib/rtype/rune_has_prop_sentence_terminal.c deleted file mode 100644 index 0e359fa..0000000 --- a/vendor/librune/lib/rtype/rune_has_prop_sentence_terminal.c +++ /dev/null @@ -1,111 +0,0 @@ -/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */ - -#include "rtype.h" - -#include "internal/common.h" - -#if BIT_LOOKUP -static const unsigned _BitInt(LATIN1_MAX + 1) mask = 0x8000400200000000uwb; -#endif - -static const struct { - rune lo, hi; -} lookup_tbl[] = { - {0x000021, 0x000021}, - {0x00002E, 0x00002E}, - {0x00003F, 0x00003F}, - {0x000589, 0x000589}, - {0x00061D, 0x00061F}, - {0x0006D4, 0x0006D4}, - {0x000700, 0x000702}, - {0x0007F9, 0x0007F9}, - {0x000837, 0x000837}, - {0x000839, 0x000839}, - {0x00083D, 0x00083E}, - {0x000964, 0x000965}, - {0x00104A, 0x00104B}, - {0x001362, 0x001362}, - {0x001367, 0x001368}, - {0x00166E, 0x00166E}, - {0x001735, 0x001736}, - {0x0017D4, 0x0017D5}, - {0x001803, 0x001803}, - {0x001809, 0x001809}, - {0x001944, 0x001945}, - {0x001AA8, 0x001AAB}, - {0x001B5A, 0x001B5B}, - {0x001B5E, 0x001B5F}, - {0x001B7D, 0x001B7E}, - {0x001C3B, 0x001C3C}, - {0x001C7E, 0x001C7F}, - {0x00203C, 0x00203D}, - {0x002047, 0x002049}, - {0x002E2E, 0x002E2E}, - {0x002E3C, 0x002E3C}, - {0x002E53, 0x002E54}, - {0x003002, 0x003002}, - {0x00A4FF, 0x00A4FF}, - {0x00A60E, 0x00A60F}, - {0x00A6F3, 0x00A6F3}, - {0x00A6F7, 0x00A6F7}, - {0x00A876, 0x00A877}, - {0x00A8CE, 0x00A8CF}, - {0x00A92F, 0x00A92F}, - {0x00A9C8, 0x00A9C9}, - {0x00AA5D, 0x00AA5F}, - {0x00AAF0, 0x00AAF1}, - {0x00ABEB, 0x00ABEB}, - {0x00FE52, 0x00FE52}, - {0x00FE56, 0x00FE57}, - {0x00FF01, 0x00FF01}, - {0x00FF0E, 0x00FF0E}, - {0x00FF1F, 0x00FF1F}, - {0x00FF61, 0x00FF61}, - {0x010A56, 0x010A57}, - {0x010F55, 0x010F59}, - {0x010F86, 0x010F89}, - {0x011047, 0x011048}, - {0x0110BE, 0x0110C1}, - {0x011141, 0x011143}, - {0x0111C5, 0x0111C6}, - {0x0111CD, 0x0111CD}, - {0x0111DE, 0x0111DF}, - {0x011238, 0x011239}, - {0x01123B, 0x01123C}, - {0x0112A9, 0x0112A9}, - {0x01144B, 0x01144C}, - {0x0115C2, 0x0115C3}, - {0x0115C9, 0x0115D7}, - {0x011641, 0x011642}, - {0x01173C, 0x01173E}, - {0x011944, 0x011944}, - {0x011946, 0x011946}, - {0x011A42, 0x011A43}, - {0x011A9B, 0x011A9C}, - {0x011C41, 0x011C42}, - {0x011EF7, 0x011EF8}, - {0x011F43, 0x011F44}, - {0x016A6E, 0x016A6F}, - {0x016AF5, 0x016AF5}, - {0x016B37, 0x016B38}, - {0x016B44, 0x016B44}, - {0x016E98, 0x016E98}, - {0x01BC9F, 0x01BC9F}, - {0x01DA88, 0x01DA88}, -}; - -#define TYPE bool -#define TABLE lookup_tbl -#define DEFAULT false -#define HAS_VALUE 0 -#include "internal/rtype/lookup-func.h" - -bool -rune_has_prop_sentence_terminal(rune ch) -{ - return -#if BIT_LOOKUP - ch <= LATIN1_MAX ? (mask & ch) : -#endif - lookup(ch); -} diff --git a/vendor/librune/lib/rtype/rune_has_prop_soft_dotted.c b/vendor/librune/lib/rtype/rune_has_prop_soft_dotted.c deleted file mode 100644 index 0d522d1..0000000 --- a/vendor/librune/lib/rtype/rune_has_prop_soft_dotted.c +++ /dev/null @@ -1,64 +0,0 @@ -/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */ - -#include "rtype.h" - -#include "internal/common.h" - -#if BIT_LOOKUP -static const unsigned _BitInt(LATIN1_MAX + 1) mask = 0x600000000000000000000000000uwb; -#endif - -static const struct { - rune lo, hi; -} lookup_tbl[] = { - {0x000069, 0x00006A}, - {0x00012F, 0x00012F}, - {0x000249, 0x000249}, - {0x000268, 0x000268}, - {0x00029D, 0x00029D}, - {0x0002B2, 0x0002B2}, - {0x0003F3, 0x0003F3}, - {0x000456, 0x000456}, - {0x000458, 0x000458}, - {0x001D62, 0x001D62}, - {0x001D96, 0x001D96}, - {0x001DA4, 0x001DA4}, - {0x001DA8, 0x001DA8}, - {0x001E2D, 0x001E2D}, - {0x001ECB, 0x001ECB}, - {0x002071, 0x002071}, - {0x002148, 0x002149}, - {0x002C7C, 0x002C7C}, - {0x01D422, 0x01D423}, - {0x01D456, 0x01D457}, - {0x01D48A, 0x01D48B}, - {0x01D4BE, 0x01D4BF}, - {0x01D4F2, 0x01D4F3}, - {0x01D526, 0x01D527}, - {0x01D55A, 0x01D55B}, - {0x01D58E, 0x01D58F}, - {0x01D5C2, 0x01D5C3}, - {0x01D5F6, 0x01D5F7}, - {0x01D62A, 0x01D62B}, - {0x01D65E, 0x01D65F}, - {0x01D692, 0x01D693}, - {0x01DF1A, 0x01DF1A}, - {0x01E04C, 0x01E04D}, - {0x01E068, 0x01E068}, -}; - -#define TYPE bool -#define TABLE lookup_tbl -#define DEFAULT false -#define HAS_VALUE 0 -#include "internal/rtype/lookup-func.h" - -bool -rune_has_prop_soft_dotted(rune ch) -{ - return -#if BIT_LOOKUP - ch <= LATIN1_MAX ? (mask & ch) : -#endif - lookup(ch); -} diff --git a/vendor/librune/lib/rtype/rune_has_prop_terminal_punctuation.c b/vendor/librune/lib/rtype/rune_has_prop_terminal_punctuation.c deleted file mode 100644 index 9e73405..0000000 --- a/vendor/librune/lib/rtype/rune_has_prop_terminal_punctuation.c +++ /dev/null @@ -1,138 +0,0 @@ -/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */ - -#include "rtype.h" - -#include "internal/common.h" - -#if BIT_LOOKUP -static const unsigned _BitInt(LATIN1_MAX + 1) mask = 0x8C00500200000000uwb; -#endif - -static const struct { - rune lo, hi; -} lookup_tbl[] = { - {0x000021, 0x000021}, - {0x00002C, 0x00002C}, - {0x00002E, 0x00002E}, - {0x00003A, 0x00003B}, - {0x00003F, 0x00003F}, - {0x00037E, 0x00037E}, - {0x000387, 0x000387}, - {0x000589, 0x000589}, - {0x0005C3, 0x0005C3}, - {0x00060C, 0x00060C}, - {0x00061B, 0x00061B}, - {0x00061D, 0x00061F}, - {0x0006D4, 0x0006D4}, - {0x000700, 0x00070A}, - {0x00070C, 0x00070C}, - {0x0007F8, 0x0007F9}, - {0x000830, 0x00083E}, - {0x00085E, 0x00085E}, - {0x000964, 0x000965}, - {0x000E5A, 0x000E5B}, - {0x000F08, 0x000F08}, - {0x000F0D, 0x000F12}, - {0x00104A, 0x00104B}, - {0x001361, 0x001368}, - {0x00166E, 0x00166E}, - {0x0016EB, 0x0016ED}, - {0x001735, 0x001736}, - {0x0017D4, 0x0017D6}, - {0x0017DA, 0x0017DA}, - {0x001802, 0x001805}, - {0x001808, 0x001809}, - {0x001944, 0x001945}, - {0x001AA8, 0x001AAB}, - {0x001B5A, 0x001B5B}, - {0x001B5D, 0x001B5F}, - {0x001B7D, 0x001B7E}, - {0x001C3B, 0x001C3F}, - {0x001C7E, 0x001C7F}, - {0x00203C, 0x00203D}, - {0x002047, 0x002049}, - {0x002E2E, 0x002E2E}, - {0x002E3C, 0x002E3C}, - {0x002E41, 0x002E41}, - {0x002E4C, 0x002E4C}, - {0x002E4E, 0x002E4F}, - {0x002E53, 0x002E54}, - {0x003001, 0x003002}, - {0x00A4FE, 0x00A4FF}, - {0x00A60D, 0x00A60F}, - {0x00A6F3, 0x00A6F7}, - {0x00A876, 0x00A877}, - {0x00A8CE, 0x00A8CF}, - {0x00A92F, 0x00A92F}, - {0x00A9C7, 0x00A9C9}, - {0x00AA5D, 0x00AA5F}, - {0x00AADF, 0x00AADF}, - {0x00AAF0, 0x00AAF1}, - {0x00ABEB, 0x00ABEB}, - {0x00FE50, 0x00FE52}, - {0x00FE54, 0x00FE57}, - {0x00FF01, 0x00FF01}, - {0x00FF0C, 0x00FF0C}, - {0x00FF0E, 0x00FF0E}, - {0x00FF1A, 0x00FF1B}, - {0x00FF1F, 0x00FF1F}, - {0x00FF61, 0x00FF61}, - {0x00FF64, 0x00FF64}, - {0x01039F, 0x01039F}, - {0x0103D0, 0x0103D0}, - {0x010857, 0x010857}, - {0x01091F, 0x01091F}, - {0x010A56, 0x010A57}, - {0x010AF0, 0x010AF5}, - {0x010B3A, 0x010B3F}, - {0x010B99, 0x010B9C}, - {0x010F55, 0x010F59}, - {0x010F86, 0x010F89}, - {0x011047, 0x01104D}, - {0x0110BE, 0x0110C1}, - {0x011141, 0x011143}, - {0x0111C5, 0x0111C6}, - {0x0111CD, 0x0111CD}, - {0x0111DE, 0x0111DF}, - {0x011238, 0x01123C}, - {0x0112A9, 0x0112A9}, - {0x01144B, 0x01144D}, - {0x01145A, 0x01145B}, - {0x0115C2, 0x0115C5}, - {0x0115C9, 0x0115D7}, - {0x011641, 0x011642}, - {0x01173C, 0x01173E}, - {0x011944, 0x011944}, - {0x011946, 0x011946}, - {0x011A42, 0x011A43}, - {0x011A9B, 0x011A9C}, - {0x011AA1, 0x011AA2}, - {0x011C41, 0x011C43}, - {0x011C71, 0x011C71}, - {0x011EF7, 0x011EF8}, - {0x011F43, 0x011F44}, - {0x012470, 0x012474}, - {0x016A6E, 0x016A6F}, - {0x016AF5, 0x016AF5}, - {0x016B37, 0x016B39}, - {0x016B44, 0x016B44}, - {0x016E97, 0x016E98}, - {0x01BC9F, 0x01BC9F}, - {0x01DA87, 0x01DA8A}, -}; - -#define TYPE bool -#define TABLE lookup_tbl -#define DEFAULT false -#define HAS_VALUE 0 -#include "internal/rtype/lookup-func.h" - -bool -rune_has_prop_terminal_punctuation(rune ch) -{ - return -#if BIT_LOOKUP - ch <= LATIN1_MAX ? (mask & ch) : -#endif - lookup(ch); -} diff --git a/vendor/librune/lib/rtype/rune_has_prop_unified_ideograph.c b/vendor/librune/lib/rtype/rune_has_prop_unified_ideograph.c deleted file mode 100644 index b7bc92c..0000000 --- a/vendor/librune/lib/rtype/rune_has_prop_unified_ideograph.c +++ /dev/null @@ -1,47 +0,0 @@ -/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */ - -#include "rtype.h" - -#include "internal/common.h" - -#if BIT_LOOKUP -static const unsigned _BitInt(LATIN1_MAX + 1) mask = 0x0uwb; -#endif - -static const struct { - rune lo, hi; -} lookup_tbl[] = { - {0x003400, 0x004DBF}, - {0x004E00, 0x009FFF}, - {0x00FA0E, 0x00FA0F}, - {0x00FA11, 0x00FA11}, - {0x00FA13, 0x00FA14}, - {0x00FA1F, 0x00FA1F}, - {0x00FA21, 0x00FA21}, - {0x00FA23, 0x00FA24}, - {0x00FA27, 0x00FA29}, - {0x020000, 0x02A6DF}, - {0x02A700, 0x02B739}, - {0x02B740, 0x02B81D}, - {0x02B820, 0x02CEA1}, - {0x02CEB0, 0x02EBE0}, - {0x02EBF0, 0x02EE5D}, - {0x030000, 0x03134A}, - {0x031350, 0x0323AF}, -}; - -#define TYPE bool -#define TABLE lookup_tbl -#define DEFAULT false -#define HAS_VALUE 0 -#include "internal/rtype/lookup-func.h" - -bool -rune_has_prop_unified_ideograph(rune ch) -{ - return -#if BIT_LOOKUP - ch <= LATIN1_MAX ? (mask & ch) : -#endif - lookup(ch); -} diff --git a/vendor/librune/lib/rtype/rune_has_prop_uppercase.c b/vendor/librune/lib/rtype/rune_has_prop_uppercase.c deleted file mode 100644 index c828733..0000000 --- a/vendor/librune/lib/rtype/rune_has_prop_uppercase.c +++ /dev/null @@ -1,681 +0,0 @@ -/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */ - -#include "rtype.h" - -#include "internal/common.h" - -#if BIT_LOOKUP -static const unsigned _BitInt(LATIN1_MAX + 1) mask = 0x7F7FFFFF00000000000000000000000007FFFFFE0000000000000000uwb; -#endif - -static const struct { - rune lo, hi; -} lookup_tbl[] = { - {0x000041, 0x00005A}, - {0x0000C0, 0x0000D6}, - {0x0000D8, 0x0000DE}, - {0x000100, 0x000100}, - {0x000102, 0x000102}, - {0x000104, 0x000104}, - {0x000106, 0x000106}, - {0x000108, 0x000108}, - {0x00010A, 0x00010A}, - {0x00010C, 0x00010C}, - {0x00010E, 0x00010E}, - {0x000110, 0x000110}, - {0x000112, 0x000112}, - {0x000114, 0x000114}, - {0x000116, 0x000116}, - {0x000118, 0x000118}, - {0x00011A, 0x00011A}, - {0x00011C, 0x00011C}, - {0x00011E, 0x00011E}, - {0x000120, 0x000120}, - {0x000122, 0x000122}, - {0x000124, 0x000124}, - {0x000126, 0x000126}, - {0x000128, 0x000128}, - {0x00012A, 0x00012A}, - {0x00012C, 0x00012C}, - {0x00012E, 0x00012E}, - {0x000130, 0x000130}, - {0x000132, 0x000132}, - {0x000134, 0x000134}, - {0x000136, 0x000136}, - {0x000139, 0x000139}, - {0x00013B, 0x00013B}, - {0x00013D, 0x00013D}, - {0x00013F, 0x00013F}, - {0x000141, 0x000141}, - {0x000143, 0x000143}, - {0x000145, 0x000145}, - {0x000147, 0x000147}, - {0x00014A, 0x00014A}, - {0x00014C, 0x00014C}, - {0x00014E, 0x00014E}, - {0x000150, 0x000150}, - {0x000152, 0x000152}, - {0x000154, 0x000154}, - {0x000156, 0x000156}, - {0x000158, 0x000158}, - {0x00015A, 0x00015A}, - {0x00015C, 0x00015C}, - {0x00015E, 0x00015E}, - {0x000160, 0x000160}, - {0x000162, 0x000162}, - {0x000164, 0x000164}, - {0x000166, 0x000166}, - {0x000168, 0x000168}, - {0x00016A, 0x00016A}, - {0x00016C, 0x00016C}, - {0x00016E, 0x00016E}, - {0x000170, 0x000170}, - {0x000172, 0x000172}, - {0x000174, 0x000174}, - {0x000176, 0x000176}, - {0x000178, 0x000179}, - {0x00017B, 0x00017B}, - {0x00017D, 0x00017D}, - {0x000181, 0x000182}, - {0x000184, 0x000184}, - {0x000186, 0x000187}, - {0x000189, 0x00018B}, - {0x00018E, 0x000191}, - {0x000193, 0x000194}, - {0x000196, 0x000198}, - {0x00019C, 0x00019D}, - {0x00019F, 0x0001A0}, - {0x0001A2, 0x0001A2}, - {0x0001A4, 0x0001A4}, - {0x0001A6, 0x0001A7}, - {0x0001A9, 0x0001A9}, - {0x0001AC, 0x0001AC}, - {0x0001AE, 0x0001AF}, - {0x0001B1, 0x0001B3}, - {0x0001B5, 0x0001B5}, - {0x0001B7, 0x0001B8}, - {0x0001BC, 0x0001BC}, - {0x0001C4, 0x0001C4}, - {0x0001C7, 0x0001C7}, - {0x0001CA, 0x0001CA}, - {0x0001CD, 0x0001CD}, - {0x0001CF, 0x0001CF}, - {0x0001D1, 0x0001D1}, - {0x0001D3, 0x0001D3}, - {0x0001D5, 0x0001D5}, - {0x0001D7, 0x0001D7}, - {0x0001D9, 0x0001D9}, - {0x0001DB, 0x0001DB}, - {0x0001DE, 0x0001DE}, - {0x0001E0, 0x0001E0}, - {0x0001E2, 0x0001E2}, - {0x0001E4, 0x0001E4}, - {0x0001E6, 0x0001E6}, - {0x0001E8, 0x0001E8}, - {0x0001EA, 0x0001EA}, - {0x0001EC, 0x0001EC}, - {0x0001EE, 0x0001EE}, - {0x0001F1, 0x0001F1}, - {0x0001F4, 0x0001F4}, - {0x0001F6, 0x0001F8}, - {0x0001FA, 0x0001FA}, - {0x0001FC, 0x0001FC}, - {0x0001FE, 0x0001FE}, - {0x000200, 0x000200}, - {0x000202, 0x000202}, - {0x000204, 0x000204}, - {0x000206, 0x000206}, - {0x000208, 0x000208}, - {0x00020A, 0x00020A}, - {0x00020C, 0x00020C}, - {0x00020E, 0x00020E}, - {0x000210, 0x000210}, - {0x000212, 0x000212}, - {0x000214, 0x000214}, - {0x000216, 0x000216}, - {0x000218, 0x000218}, - {0x00021A, 0x00021A}, - {0x00021C, 0x00021C}, - {0x00021E, 0x00021E}, - {0x000220, 0x000220}, - {0x000222, 0x000222}, - {0x000224, 0x000224}, - {0x000226, 0x000226}, - {0x000228, 0x000228}, - {0x00022A, 0x00022A}, - {0x00022C, 0x00022C}, - {0x00022E, 0x00022E}, - {0x000230, 0x000230}, - {0x000232, 0x000232}, - {0x00023A, 0x00023B}, - {0x00023D, 0x00023E}, - {0x000241, 0x000241}, - {0x000243, 0x000246}, - {0x000248, 0x000248}, - {0x00024A, 0x00024A}, - {0x00024C, 0x00024C}, - {0x00024E, 0x00024E}, - {0x000370, 0x000370}, - {0x000372, 0x000372}, - {0x000376, 0x000376}, - {0x00037F, 0x00037F}, - {0x000386, 0x000386}, - {0x000388, 0x00038A}, - {0x00038C, 0x00038C}, - {0x00038E, 0x00038F}, - {0x000391, 0x0003A1}, - {0x0003A3, 0x0003AB}, - {0x0003CF, 0x0003CF}, - {0x0003D2, 0x0003D4}, - {0x0003D8, 0x0003D8}, - {0x0003DA, 0x0003DA}, - {0x0003DC, 0x0003DC}, - {0x0003DE, 0x0003DE}, - {0x0003E0, 0x0003E0}, - {0x0003E2, 0x0003E2}, - {0x0003E4, 0x0003E4}, - {0x0003E6, 0x0003E6}, - {0x0003E8, 0x0003E8}, - {0x0003EA, 0x0003EA}, - {0x0003EC, 0x0003EC}, - {0x0003EE, 0x0003EE}, - {0x0003F4, 0x0003F4}, - {0x0003F7, 0x0003F7}, - {0x0003F9, 0x0003FA}, - {0x0003FD, 0x00042F}, - {0x000460, 0x000460}, - {0x000462, 0x000462}, - {0x000464, 0x000464}, - {0x000466, 0x000466}, - {0x000468, 0x000468}, - {0x00046A, 0x00046A}, - {0x00046C, 0x00046C}, - {0x00046E, 0x00046E}, - {0x000470, 0x000470}, - {0x000472, 0x000472}, - {0x000474, 0x000474}, - {0x000476, 0x000476}, - {0x000478, 0x000478}, - {0x00047A, 0x00047A}, - {0x00047C, 0x00047C}, - {0x00047E, 0x00047E}, - {0x000480, 0x000480}, - {0x00048A, 0x00048A}, - {0x00048C, 0x00048C}, - {0x00048E, 0x00048E}, - {0x000490, 0x000490}, - {0x000492, 0x000492}, - {0x000494, 0x000494}, - {0x000496, 0x000496}, - {0x000498, 0x000498}, - {0x00049A, 0x00049A}, - {0x00049C, 0x00049C}, - {0x00049E, 0x00049E}, - {0x0004A0, 0x0004A0}, - {0x0004A2, 0x0004A2}, - {0x0004A4, 0x0004A4}, - {0x0004A6, 0x0004A6}, - {0x0004A8, 0x0004A8}, - {0x0004AA, 0x0004AA}, - {0x0004AC, 0x0004AC}, - {0x0004AE, 0x0004AE}, - {0x0004B0, 0x0004B0}, - {0x0004B2, 0x0004B2}, - {0x0004B4, 0x0004B4}, - {0x0004B6, 0x0004B6}, - {0x0004B8, 0x0004B8}, - {0x0004BA, 0x0004BA}, - {0x0004BC, 0x0004BC}, - {0x0004BE, 0x0004BE}, - {0x0004C0, 0x0004C1}, - {0x0004C3, 0x0004C3}, - {0x0004C5, 0x0004C5}, - {0x0004C7, 0x0004C7}, - {0x0004C9, 0x0004C9}, - {0x0004CB, 0x0004CB}, - {0x0004CD, 0x0004CD}, - {0x0004D0, 0x0004D0}, - {0x0004D2, 0x0004D2}, - {0x0004D4, 0x0004D4}, - {0x0004D6, 0x0004D6}, - {0x0004D8, 0x0004D8}, - {0x0004DA, 0x0004DA}, - {0x0004DC, 0x0004DC}, - {0x0004DE, 0x0004DE}, - {0x0004E0, 0x0004E0}, - {0x0004E2, 0x0004E2}, - {0x0004E4, 0x0004E4}, - {0x0004E6, 0x0004E6}, - {0x0004E8, 0x0004E8}, - {0x0004EA, 0x0004EA}, - {0x0004EC, 0x0004EC}, - {0x0004EE, 0x0004EE}, - {0x0004F0, 0x0004F0}, - {0x0004F2, 0x0004F2}, - {0x0004F4, 0x0004F4}, - {0x0004F6, 0x0004F6}, - {0x0004F8, 0x0004F8}, - {0x0004FA, 0x0004FA}, - {0x0004FC, 0x0004FC}, - {0x0004FE, 0x0004FE}, - {0x000500, 0x000500}, - {0x000502, 0x000502}, - {0x000504, 0x000504}, - {0x000506, 0x000506}, - {0x000508, 0x000508}, - {0x00050A, 0x00050A}, - {0x00050C, 0x00050C}, - {0x00050E, 0x00050E}, - {0x000510, 0x000510}, - {0x000512, 0x000512}, - {0x000514, 0x000514}, - {0x000516, 0x000516}, - {0x000518, 0x000518}, - {0x00051A, 0x00051A}, - {0x00051C, 0x00051C}, - {0x00051E, 0x00051E}, - {0x000520, 0x000520}, - {0x000522, 0x000522}, - {0x000524, 0x000524}, - {0x000526, 0x000526}, - {0x000528, 0x000528}, - {0x00052A, 0x00052A}, - {0x00052C, 0x00052C}, - {0x00052E, 0x00052E}, - {0x000531, 0x000556}, - {0x0010A0, 0x0010C5}, - {0x0010C7, 0x0010C7}, - {0x0010CD, 0x0010CD}, - {0x0013A0, 0x0013F5}, - {0x001C90, 0x001CBA}, - {0x001CBD, 0x001CBF}, - {0x001E00, 0x001E00}, - {0x001E02, 0x001E02}, - {0x001E04, 0x001E04}, - {0x001E06, 0x001E06}, - {0x001E08, 0x001E08}, - {0x001E0A, 0x001E0A}, - {0x001E0C, 0x001E0C}, - {0x001E0E, 0x001E0E}, - {0x001E10, 0x001E10}, - {0x001E12, 0x001E12}, - {0x001E14, 0x001E14}, - {0x001E16, 0x001E16}, - {0x001E18, 0x001E18}, - {0x001E1A, 0x001E1A}, - {0x001E1C, 0x001E1C}, - {0x001E1E, 0x001E1E}, - {0x001E20, 0x001E20}, - {0x001E22, 0x001E22}, - {0x001E24, 0x001E24}, - {0x001E26, 0x001E26}, - {0x001E28, 0x001E28}, - {0x001E2A, 0x001E2A}, - {0x001E2C, 0x001E2C}, - {0x001E2E, 0x001E2E}, - {0x001E30, 0x001E30}, - {0x001E32, 0x001E32}, - {0x001E34, 0x001E34}, - {0x001E36, 0x001E36}, - {0x001E38, 0x001E38}, - {0x001E3A, 0x001E3A}, - {0x001E3C, 0x001E3C}, - {0x001E3E, 0x001E3E}, - {0x001E40, 0x001E40}, - {0x001E42, 0x001E42}, - {0x001E44, 0x001E44}, - {0x001E46, 0x001E46}, - {0x001E48, 0x001E48}, - {0x001E4A, 0x001E4A}, - {0x001E4C, 0x001E4C}, - {0x001E4E, 0x001E4E}, - {0x001E50, 0x001E50}, - {0x001E52, 0x001E52}, - {0x001E54, 0x001E54}, - {0x001E56, 0x001E56}, - {0x001E58, 0x001E58}, - {0x001E5A, 0x001E5A}, - {0x001E5C, 0x001E5C}, - {0x001E5E, 0x001E5E}, - {0x001E60, 0x001E60}, - {0x001E62, 0x001E62}, - {0x001E64, 0x001E64}, - {0x001E66, 0x001E66}, - {0x001E68, 0x001E68}, - {0x001E6A, 0x001E6A}, - {0x001E6C, 0x001E6C}, - {0x001E6E, 0x001E6E}, - {0x001E70, 0x001E70}, - {0x001E72, 0x001E72}, - {0x001E74, 0x001E74}, - {0x001E76, 0x001E76}, - {0x001E78, 0x001E78}, - {0x001E7A, 0x001E7A}, - {0x001E7C, 0x001E7C}, - {0x001E7E, 0x001E7E}, - {0x001E80, 0x001E80}, - {0x001E82, 0x001E82}, - {0x001E84, 0x001E84}, - {0x001E86, 0x001E86}, - {0x001E88, 0x001E88}, - {0x001E8A, 0x001E8A}, - {0x001E8C, 0x001E8C}, - {0x001E8E, 0x001E8E}, - {0x001E90, 0x001E90}, - {0x001E92, 0x001E92}, - {0x001E94, 0x001E94}, - {0x001E9E, 0x001E9E}, - {0x001EA0, 0x001EA0}, - {0x001EA2, 0x001EA2}, - {0x001EA4, 0x001EA4}, - {0x001EA6, 0x001EA6}, - {0x001EA8, 0x001EA8}, - {0x001EAA, 0x001EAA}, - {0x001EAC, 0x001EAC}, - {0x001EAE, 0x001EAE}, - {0x001EB0, 0x001EB0}, - {0x001EB2, 0x001EB2}, - {0x001EB4, 0x001EB4}, - {0x001EB6, 0x001EB6}, - {0x001EB8, 0x001EB8}, - {0x001EBA, 0x001EBA}, - {0x001EBC, 0x001EBC}, - {0x001EBE, 0x001EBE}, - {0x001EC0, 0x001EC0}, - {0x001EC2, 0x001EC2}, - {0x001EC4, 0x001EC4}, - {0x001EC6, 0x001EC6}, - {0x001EC8, 0x001EC8}, - {0x001ECA, 0x001ECA}, - {0x001ECC, 0x001ECC}, - {0x001ECE, 0x001ECE}, - {0x001ED0, 0x001ED0}, - {0x001ED2, 0x001ED2}, - {0x001ED4, 0x001ED4}, - {0x001ED6, 0x001ED6}, - {0x001ED8, 0x001ED8}, - {0x001EDA, 0x001EDA}, - {0x001EDC, 0x001EDC}, - {0x001EDE, 0x001EDE}, - {0x001EE0, 0x001EE0}, - {0x001EE2, 0x001EE2}, - {0x001EE4, 0x001EE4}, - {0x001EE6, 0x001EE6}, - {0x001EE8, 0x001EE8}, - {0x001EEA, 0x001EEA}, - {0x001EEC, 0x001EEC}, - {0x001EEE, 0x001EEE}, - {0x001EF0, 0x001EF0}, - {0x001EF2, 0x001EF2}, - {0x001EF4, 0x001EF4}, - {0x001EF6, 0x001EF6}, - {0x001EF8, 0x001EF8}, - {0x001EFA, 0x001EFA}, - {0x001EFC, 0x001EFC}, - {0x001EFE, 0x001EFE}, - {0x001F08, 0x001F0F}, - {0x001F18, 0x001F1D}, - {0x001F28, 0x001F2F}, - {0x001F38, 0x001F3F}, - {0x001F48, 0x001F4D}, - {0x001F59, 0x001F59}, - {0x001F5B, 0x001F5B}, - {0x001F5D, 0x001F5D}, - {0x001F5F, 0x001F5F}, - {0x001F68, 0x001F6F}, - {0x001FB8, 0x001FBB}, - {0x001FC8, 0x001FCB}, - {0x001FD8, 0x001FDB}, - {0x001FE8, 0x001FEC}, - {0x001FF8, 0x001FFB}, - {0x002102, 0x002102}, - {0x002107, 0x002107}, - {0x00210B, 0x00210D}, - {0x002110, 0x002112}, - {0x002115, 0x002115}, - {0x002119, 0x00211D}, - {0x002124, 0x002124}, - {0x002126, 0x002126}, - {0x002128, 0x002128}, - {0x00212A, 0x00212D}, - {0x002130, 0x002133}, - {0x00213E, 0x00213F}, - {0x002145, 0x002145}, - {0x002160, 0x00216F}, - {0x002183, 0x002183}, - {0x0024B6, 0x0024CF}, - {0x002C00, 0x002C2F}, - {0x002C60, 0x002C60}, - {0x002C62, 0x002C64}, - {0x002C67, 0x002C67}, - {0x002C69, 0x002C69}, - {0x002C6B, 0x002C6B}, - {0x002C6D, 0x002C70}, - {0x002C72, 0x002C72}, - {0x002C75, 0x002C75}, - {0x002C7E, 0x002C80}, - {0x002C82, 0x002C82}, - {0x002C84, 0x002C84}, - {0x002C86, 0x002C86}, - {0x002C88, 0x002C88}, - {0x002C8A, 0x002C8A}, - {0x002C8C, 0x002C8C}, - {0x002C8E, 0x002C8E}, - {0x002C90, 0x002C90}, - {0x002C92, 0x002C92}, - {0x002C94, 0x002C94}, - {0x002C96, 0x002C96}, - {0x002C98, 0x002C98}, - {0x002C9A, 0x002C9A}, - {0x002C9C, 0x002C9C}, - {0x002C9E, 0x002C9E}, - {0x002CA0, 0x002CA0}, - {0x002CA2, 0x002CA2}, - {0x002CA4, 0x002CA4}, - {0x002CA6, 0x002CA6}, - {0x002CA8, 0x002CA8}, - {0x002CAA, 0x002CAA}, - {0x002CAC, 0x002CAC}, - {0x002CAE, 0x002CAE}, - {0x002CB0, 0x002CB0}, - {0x002CB2, 0x002CB2}, - {0x002CB4, 0x002CB4}, - {0x002CB6, 0x002CB6}, - {0x002CB8, 0x002CB8}, - {0x002CBA, 0x002CBA}, - {0x002CBC, 0x002CBC}, - {0x002CBE, 0x002CBE}, - {0x002CC0, 0x002CC0}, - {0x002CC2, 0x002CC2}, - {0x002CC4, 0x002CC4}, - {0x002CC6, 0x002CC6}, - {0x002CC8, 0x002CC8}, - {0x002CCA, 0x002CCA}, - {0x002CCC, 0x002CCC}, - {0x002CCE, 0x002CCE}, - {0x002CD0, 0x002CD0}, - {0x002CD2, 0x002CD2}, - {0x002CD4, 0x002CD4}, - {0x002CD6, 0x002CD6}, - {0x002CD8, 0x002CD8}, - {0x002CDA, 0x002CDA}, - {0x002CDC, 0x002CDC}, - {0x002CDE, 0x002CDE}, - {0x002CE0, 0x002CE0}, - {0x002CE2, 0x002CE2}, - {0x002CEB, 0x002CEB}, - {0x002CED, 0x002CED}, - {0x002CF2, 0x002CF2}, - {0x00A640, 0x00A640}, - {0x00A642, 0x00A642}, - {0x00A644, 0x00A644}, - {0x00A646, 0x00A646}, - {0x00A648, 0x00A648}, - {0x00A64A, 0x00A64A}, - {0x00A64C, 0x00A64C}, - {0x00A64E, 0x00A64E}, - {0x00A650, 0x00A650}, - {0x00A652, 0x00A652}, - {0x00A654, 0x00A654}, - {0x00A656, 0x00A656}, - {0x00A658, 0x00A658}, - {0x00A65A, 0x00A65A}, - {0x00A65C, 0x00A65C}, - {0x00A65E, 0x00A65E}, - {0x00A660, 0x00A660}, - {0x00A662, 0x00A662}, - {0x00A664, 0x00A664}, - {0x00A666, 0x00A666}, - {0x00A668, 0x00A668}, - {0x00A66A, 0x00A66A}, - {0x00A66C, 0x00A66C}, - {0x00A680, 0x00A680}, - {0x00A682, 0x00A682}, - {0x00A684, 0x00A684}, - {0x00A686, 0x00A686}, - {0x00A688, 0x00A688}, - {0x00A68A, 0x00A68A}, - {0x00A68C, 0x00A68C}, - {0x00A68E, 0x00A68E}, - {0x00A690, 0x00A690}, - {0x00A692, 0x00A692}, - {0x00A694, 0x00A694}, - {0x00A696, 0x00A696}, - {0x00A698, 0x00A698}, - {0x00A69A, 0x00A69A}, - {0x00A722, 0x00A722}, - {0x00A724, 0x00A724}, - {0x00A726, 0x00A726}, - {0x00A728, 0x00A728}, - {0x00A72A, 0x00A72A}, - {0x00A72C, 0x00A72C}, - {0x00A72E, 0x00A72E}, - {0x00A732, 0x00A732}, - {0x00A734, 0x00A734}, - {0x00A736, 0x00A736}, - {0x00A738, 0x00A738}, - {0x00A73A, 0x00A73A}, - {0x00A73C, 0x00A73C}, - {0x00A73E, 0x00A73E}, - {0x00A740, 0x00A740}, - {0x00A742, 0x00A742}, - {0x00A744, 0x00A744}, - {0x00A746, 0x00A746}, - {0x00A748, 0x00A748}, - {0x00A74A, 0x00A74A}, - {0x00A74C, 0x00A74C}, - {0x00A74E, 0x00A74E}, - {0x00A750, 0x00A750}, - {0x00A752, 0x00A752}, - {0x00A754, 0x00A754}, - {0x00A756, 0x00A756}, - {0x00A758, 0x00A758}, - {0x00A75A, 0x00A75A}, - {0x00A75C, 0x00A75C}, - {0x00A75E, 0x00A75E}, - {0x00A760, 0x00A760}, - {0x00A762, 0x00A762}, - {0x00A764, 0x00A764}, - {0x00A766, 0x00A766}, - {0x00A768, 0x00A768}, - {0x00A76A, 0x00A76A}, - {0x00A76C, 0x00A76C}, - {0x00A76E, 0x00A76E}, - {0x00A779, 0x00A779}, - {0x00A77B, 0x00A77B}, - {0x00A77D, 0x00A77E}, - {0x00A780, 0x00A780}, - {0x00A782, 0x00A782}, - {0x00A784, 0x00A784}, - {0x00A786, 0x00A786}, - {0x00A78B, 0x00A78B}, - {0x00A78D, 0x00A78D}, - {0x00A790, 0x00A790}, - {0x00A792, 0x00A792}, - {0x00A796, 0x00A796}, - {0x00A798, 0x00A798}, - {0x00A79A, 0x00A79A}, - {0x00A79C, 0x00A79C}, - {0x00A79E, 0x00A79E}, - {0x00A7A0, 0x00A7A0}, - {0x00A7A2, 0x00A7A2}, - {0x00A7A4, 0x00A7A4}, - {0x00A7A6, 0x00A7A6}, - {0x00A7A8, 0x00A7A8}, - {0x00A7AA, 0x00A7AE}, - {0x00A7B0, 0x00A7B4}, - {0x00A7B6, 0x00A7B6}, - {0x00A7B8, 0x00A7B8}, - {0x00A7BA, 0x00A7BA}, - {0x00A7BC, 0x00A7BC}, - {0x00A7BE, 0x00A7BE}, - {0x00A7C0, 0x00A7C0}, - {0x00A7C2, 0x00A7C2}, - {0x00A7C4, 0x00A7C7}, - {0x00A7C9, 0x00A7C9}, - {0x00A7D0, 0x00A7D0}, - {0x00A7D6, 0x00A7D6}, - {0x00A7D8, 0x00A7D8}, - {0x00A7F5, 0x00A7F5}, - {0x00FF21, 0x00FF3A}, - {0x010400, 0x010427}, - {0x0104B0, 0x0104D3}, - {0x010570, 0x01057A}, - {0x01057C, 0x01058A}, - {0x01058C, 0x010592}, - {0x010594, 0x010595}, - {0x010C80, 0x010CB2}, - {0x0118A0, 0x0118BF}, - {0x016E40, 0x016E5F}, - {0x01D400, 0x01D419}, - {0x01D434, 0x01D44D}, - {0x01D468, 0x01D481}, - {0x01D49C, 0x01D49C}, - {0x01D49E, 0x01D49F}, - {0x01D4A2, 0x01D4A2}, - {0x01D4A5, 0x01D4A6}, - {0x01D4A9, 0x01D4AC}, - {0x01D4AE, 0x01D4B5}, - {0x01D4D0, 0x01D4E9}, - {0x01D504, 0x01D505}, - {0x01D507, 0x01D50A}, - {0x01D50D, 0x01D514}, - {0x01D516, 0x01D51C}, - {0x01D538, 0x01D539}, - {0x01D53B, 0x01D53E}, - {0x01D540, 0x01D544}, - {0x01D546, 0x01D546}, - {0x01D54A, 0x01D550}, - {0x01D56C, 0x01D585}, - {0x01D5A0, 0x01D5B9}, - {0x01D5D4, 0x01D5ED}, - {0x01D608, 0x01D621}, - {0x01D63C, 0x01D655}, - {0x01D670, 0x01D689}, - {0x01D6A8, 0x01D6C0}, - {0x01D6E2, 0x01D6FA}, - {0x01D71C, 0x01D734}, - {0x01D756, 0x01D76E}, - {0x01D790, 0x01D7A8}, - {0x01D7CA, 0x01D7CA}, - {0x01E900, 0x01E921}, - {0x01F130, 0x01F149}, - {0x01F150, 0x01F169}, - {0x01F170, 0x01F189}, -}; - -#define TYPE bool -#define TABLE lookup_tbl -#define DEFAULT false -#define HAS_VALUE 0 -#include "internal/rtype/lookup-func.h" - -bool -rune_has_prop_uppercase(rune ch) -{ - return -#if BIT_LOOKUP - ch <= LATIN1_MAX ? (mask & ch) : -#endif - lookup(ch); -} diff --git a/vendor/librune/lib/rtype/rune_has_prop_variation_selector.c b/vendor/librune/lib/rtype/rune_has_prop_variation_selector.c deleted file mode 100644 index fefa023..0000000 --- a/vendor/librune/lib/rtype/rune_has_prop_variation_selector.c +++ /dev/null @@ -1,34 +0,0 @@ -/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */ - -#include "rtype.h" - -#include "internal/common.h" - -#if BIT_LOOKUP -static const unsigned _BitInt(LATIN1_MAX + 1) mask = 0x0uwb; -#endif - -static const struct { - rune lo, hi; -} lookup_tbl[] = { - {0x00180B, 0x00180D}, - {0x00180F, 0x00180F}, - {0x00FE00, 0x00FE0F}, - {0x0E0100, 0x0E01EF}, -}; - -#define TYPE bool -#define TABLE lookup_tbl -#define DEFAULT false -#define HAS_VALUE 0 -#include "internal/rtype/lookup-func.h" - -bool -rune_has_prop_variation_selector(rune ch) -{ - return -#if BIT_LOOKUP - ch <= LATIN1_MAX ? (mask & ch) : -#endif - lookup(ch); -} diff --git a/vendor/librune/lib/rtype/rune_has_prop_white_space.c b/vendor/librune/lib/rtype/rune_has_prop_white_space.c deleted file mode 100644 index 07f9c08..0000000 --- a/vendor/librune/lib/rtype/rune_has_prop_white_space.c +++ /dev/null @@ -1,40 +0,0 @@ -/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */ - -#include "rtype.h" - -#include "internal/common.h" - -#if BIT_LOOKUP -static const unsigned _BitInt(LATIN1_MAX + 1) mask = 0x10000002000000000000000000000000100003E00uwb; -#endif - -static const struct { - rune lo, hi; -} lookup_tbl[] = { - {0x000009, 0x00000D}, - {0x000020, 0x000020}, - {0x000085, 0x000085}, - {0x0000A0, 0x0000A0}, - {0x001680, 0x001680}, - {0x002000, 0x00200A}, - {0x002028, 0x002029}, - {0x00202F, 0x00202F}, - {0x00205F, 0x00205F}, - {0x003000, 0x003000}, -}; - -#define TYPE bool -#define TABLE lookup_tbl -#define DEFAULT false -#define HAS_VALUE 0 -#include "internal/rtype/lookup-func.h" - -bool -rune_has_prop_white_space(rune ch) -{ - return -#if BIT_LOOKUP - ch <= LATIN1_MAX ? (mask & ch) : -#endif - lookup(ch); -} diff --git a/vendor/librune/lib/rtype/rune_has_prop_xid_continue.c b/vendor/librune/lib/rtype/rune_has_prop_xid_continue.c deleted file mode 100644 index 7f71bbf..0000000 --- a/vendor/librune/lib/rtype/rune_has_prop_xid_continue.c +++ /dev/null @@ -1,806 +0,0 @@ -/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */ - -#include "rtype.h" - -#include "internal/common.h" - -#if BIT_LOOKUP -static const unsigned _BitInt(LATIN1_MAX + 1) mask = 0xFF7FFFFFFF7FFFFF04A004000000000007FFFFFE87FFFFFE03FF000000000000uwb; -#endif - -static const struct { - rune lo, hi; -} lookup_tbl[] = { - {0x000030, 0x000039}, - {0x000041, 0x00005A}, - {0x00005F, 0x00005F}, - {0x000061, 0x00007A}, - {0x0000AA, 0x0000AA}, - {0x0000B5, 0x0000B5}, - {0x0000B7, 0x0000B7}, - {0x0000BA, 0x0000BA}, - {0x0000C0, 0x0000D6}, - {0x0000D8, 0x0000F6}, - {0x0000F8, 0x0002C1}, - {0x0002C6, 0x0002D1}, - {0x0002E0, 0x0002E4}, - {0x0002EC, 0x0002EC}, - {0x0002EE, 0x0002EE}, - {0x000300, 0x000374}, - {0x000376, 0x000377}, - {0x00037B, 0x00037D}, - {0x00037F, 0x00037F}, - {0x000386, 0x00038A}, - {0x00038C, 0x00038C}, - {0x00038E, 0x0003A1}, - {0x0003A3, 0x0003F5}, - {0x0003F7, 0x000481}, - {0x000483, 0x000487}, - {0x00048A, 0x00052F}, - {0x000531, 0x000556}, - {0x000559, 0x000559}, - {0x000560, 0x000588}, - {0x000591, 0x0005BD}, - {0x0005BF, 0x0005BF}, - {0x0005C1, 0x0005C2}, - {0x0005C4, 0x0005C5}, - {0x0005C7, 0x0005C7}, - {0x0005D0, 0x0005EA}, - {0x0005EF, 0x0005F2}, - {0x000610, 0x00061A}, - {0x000620, 0x000669}, - {0x00066E, 0x0006D3}, - {0x0006D5, 0x0006DC}, - {0x0006DF, 0x0006E8}, - {0x0006EA, 0x0006FC}, - {0x0006FF, 0x0006FF}, - {0x000710, 0x00074A}, - {0x00074D, 0x0007B1}, - {0x0007C0, 0x0007F5}, - {0x0007FA, 0x0007FA}, - {0x0007FD, 0x0007FD}, - {0x000800, 0x00082D}, - {0x000840, 0x00085B}, - {0x000860, 0x00086A}, - {0x000870, 0x000887}, - {0x000889, 0x00088E}, - {0x000898, 0x0008E1}, - {0x0008E3, 0x000963}, - {0x000966, 0x00096F}, - {0x000971, 0x000983}, - {0x000985, 0x00098C}, - {0x00098F, 0x000990}, - {0x000993, 0x0009A8}, - {0x0009AA, 0x0009B0}, - {0x0009B2, 0x0009B2}, - {0x0009B6, 0x0009B9}, - {0x0009BC, 0x0009C4}, - {0x0009C7, 0x0009C8}, - {0x0009CB, 0x0009CE}, - {0x0009D7, 0x0009D7}, - {0x0009DC, 0x0009DD}, - {0x0009DF, 0x0009E3}, - {0x0009E6, 0x0009F1}, - {0x0009FC, 0x0009FC}, - {0x0009FE, 0x0009FE}, - {0x000A01, 0x000A03}, - {0x000A05, 0x000A0A}, - {0x000A0F, 0x000A10}, - {0x000A13, 0x000A28}, - {0x000A2A, 0x000A30}, - {0x000A32, 0x000A33}, - {0x000A35, 0x000A36}, - {0x000A38, 0x000A39}, - {0x000A3C, 0x000A3C}, - {0x000A3E, 0x000A42}, - {0x000A47, 0x000A48}, - {0x000A4B, 0x000A4D}, - {0x000A51, 0x000A51}, - {0x000A59, 0x000A5C}, - {0x000A5E, 0x000A5E}, - {0x000A66, 0x000A75}, - {0x000A81, 0x000A83}, - {0x000A85, 0x000A8D}, - {0x000A8F, 0x000A91}, - {0x000A93, 0x000AA8}, - {0x000AAA, 0x000AB0}, - {0x000AB2, 0x000AB3}, - {0x000AB5, 0x000AB9}, - {0x000ABC, 0x000AC5}, - {0x000AC7, 0x000AC9}, - {0x000ACB, 0x000ACD}, - {0x000AD0, 0x000AD0}, - {0x000AE0, 0x000AE3}, - {0x000AE6, 0x000AEF}, - {0x000AF9, 0x000AFF}, - {0x000B01, 0x000B03}, - {0x000B05, 0x000B0C}, - {0x000B0F, 0x000B10}, - {0x000B13, 0x000B28}, - {0x000B2A, 0x000B30}, - {0x000B32, 0x000B33}, - {0x000B35, 0x000B39}, - {0x000B3C, 0x000B44}, - {0x000B47, 0x000B48}, - {0x000B4B, 0x000B4D}, - {0x000B55, 0x000B57}, - {0x000B5C, 0x000B5D}, - {0x000B5F, 0x000B63}, - {0x000B66, 0x000B6F}, - {0x000B71, 0x000B71}, - {0x000B82, 0x000B83}, - {0x000B85, 0x000B8A}, - {0x000B8E, 0x000B90}, - {0x000B92, 0x000B95}, - {0x000B99, 0x000B9A}, - {0x000B9C, 0x000B9C}, - {0x000B9E, 0x000B9F}, - {0x000BA3, 0x000BA4}, - {0x000BA8, 0x000BAA}, - {0x000BAE, 0x000BB9}, - {0x000BBE, 0x000BC2}, - {0x000BC6, 0x000BC8}, - {0x000BCA, 0x000BCD}, - {0x000BD0, 0x000BD0}, - {0x000BD7, 0x000BD7}, - {0x000BE6, 0x000BEF}, - {0x000C00, 0x000C0C}, - {0x000C0E, 0x000C10}, - {0x000C12, 0x000C28}, - {0x000C2A, 0x000C39}, - {0x000C3C, 0x000C44}, - {0x000C46, 0x000C48}, - {0x000C4A, 0x000C4D}, - {0x000C55, 0x000C56}, - {0x000C58, 0x000C5A}, - {0x000C5D, 0x000C5D}, - {0x000C60, 0x000C63}, - {0x000C66, 0x000C6F}, - {0x000C80, 0x000C83}, - {0x000C85, 0x000C8C}, - {0x000C8E, 0x000C90}, - {0x000C92, 0x000CA8}, - {0x000CAA, 0x000CB3}, - {0x000CB5, 0x000CB9}, - {0x000CBC, 0x000CC4}, - {0x000CC6, 0x000CC8}, - {0x000CCA, 0x000CCD}, - {0x000CD5, 0x000CD6}, - {0x000CDD, 0x000CDE}, - {0x000CE0, 0x000CE3}, - {0x000CE6, 0x000CEF}, - {0x000CF1, 0x000CF3}, - {0x000D00, 0x000D0C}, - {0x000D0E, 0x000D10}, - {0x000D12, 0x000D44}, - {0x000D46, 0x000D48}, - {0x000D4A, 0x000D4E}, - {0x000D54, 0x000D57}, - {0x000D5F, 0x000D63}, - {0x000D66, 0x000D6F}, - {0x000D7A, 0x000D7F}, - {0x000D81, 0x000D83}, - {0x000D85, 0x000D96}, - {0x000D9A, 0x000DB1}, - {0x000DB3, 0x000DBB}, - {0x000DBD, 0x000DBD}, - {0x000DC0, 0x000DC6}, - {0x000DCA, 0x000DCA}, - {0x000DCF, 0x000DD4}, - {0x000DD6, 0x000DD6}, - {0x000DD8, 0x000DDF}, - {0x000DE6, 0x000DEF}, - {0x000DF2, 0x000DF3}, - {0x000E01, 0x000E3A}, - {0x000E40, 0x000E4E}, - {0x000E50, 0x000E59}, - {0x000E81, 0x000E82}, - {0x000E84, 0x000E84}, - {0x000E86, 0x000E8A}, - {0x000E8C, 0x000EA3}, - {0x000EA5, 0x000EA5}, - {0x000EA7, 0x000EBD}, - {0x000EC0, 0x000EC4}, - {0x000EC6, 0x000EC6}, - {0x000EC8, 0x000ECE}, - {0x000ED0, 0x000ED9}, - {0x000EDC, 0x000EDF}, - {0x000F00, 0x000F00}, - {0x000F18, 0x000F19}, - {0x000F20, 0x000F29}, - {0x000F35, 0x000F35}, - {0x000F37, 0x000F37}, - {0x000F39, 0x000F39}, - {0x000F3E, 0x000F47}, - {0x000F49, 0x000F6C}, - {0x000F71, 0x000F84}, - {0x000F86, 0x000F97}, - {0x000F99, 0x000FBC}, - {0x000FC6, 0x000FC6}, - {0x001000, 0x001049}, - {0x001050, 0x00109D}, - {0x0010A0, 0x0010C5}, - {0x0010C7, 0x0010C7}, - {0x0010CD, 0x0010CD}, - {0x0010D0, 0x0010FA}, - {0x0010FC, 0x001248}, - {0x00124A, 0x00124D}, - {0x001250, 0x001256}, - {0x001258, 0x001258}, - {0x00125A, 0x00125D}, - {0x001260, 0x001288}, - {0x00128A, 0x00128D}, - {0x001290, 0x0012B0}, - {0x0012B2, 0x0012B5}, - {0x0012B8, 0x0012BE}, - {0x0012C0, 0x0012C0}, - {0x0012C2, 0x0012C5}, - {0x0012C8, 0x0012D6}, - {0x0012D8, 0x001310}, - {0x001312, 0x001315}, - {0x001318, 0x00135A}, - {0x00135D, 0x00135F}, - {0x001369, 0x001371}, - {0x001380, 0x00138F}, - {0x0013A0, 0x0013F5}, - {0x0013F8, 0x0013FD}, - {0x001401, 0x00166C}, - {0x00166F, 0x00167F}, - {0x001681, 0x00169A}, - {0x0016A0, 0x0016EA}, - {0x0016EE, 0x0016F8}, - {0x001700, 0x001715}, - {0x00171F, 0x001734}, - {0x001740, 0x001753}, - {0x001760, 0x00176C}, - {0x00176E, 0x001770}, - {0x001772, 0x001773}, - {0x001780, 0x0017D3}, - {0x0017D7, 0x0017D7}, - {0x0017DC, 0x0017DD}, - {0x0017E0, 0x0017E9}, - {0x00180B, 0x00180D}, - {0x00180F, 0x001819}, - {0x001820, 0x001878}, - {0x001880, 0x0018AA}, - {0x0018B0, 0x0018F5}, - {0x001900, 0x00191E}, - {0x001920, 0x00192B}, - {0x001930, 0x00193B}, - {0x001946, 0x00196D}, - {0x001970, 0x001974}, - {0x001980, 0x0019AB}, - {0x0019B0, 0x0019C9}, - {0x0019D0, 0x0019DA}, - {0x001A00, 0x001A1B}, - {0x001A20, 0x001A5E}, - {0x001A60, 0x001A7C}, - {0x001A7F, 0x001A89}, - {0x001A90, 0x001A99}, - {0x001AA7, 0x001AA7}, - {0x001AB0, 0x001ABD}, - {0x001ABF, 0x001ACE}, - {0x001B00, 0x001B4C}, - {0x001B50, 0x001B59}, - {0x001B6B, 0x001B73}, - {0x001B80, 0x001BF3}, - {0x001C00, 0x001C37}, - {0x001C40, 0x001C49}, - {0x001C4D, 0x001C7D}, - {0x001C80, 0x001C88}, - {0x001C90, 0x001CBA}, - {0x001CBD, 0x001CBF}, - {0x001CD0, 0x001CD2}, - {0x001CD4, 0x001CFA}, - {0x001D00, 0x001F15}, - {0x001F18, 0x001F1D}, - {0x001F20, 0x001F45}, - {0x001F48, 0x001F4D}, - {0x001F50, 0x001F57}, - {0x001F59, 0x001F59}, - {0x001F5B, 0x001F5B}, - {0x001F5D, 0x001F5D}, - {0x001F5F, 0x001F7D}, - {0x001F80, 0x001FB4}, - {0x001FB6, 0x001FBC}, - {0x001FBE, 0x001FBE}, - {0x001FC2, 0x001FC4}, - {0x001FC6, 0x001FCC}, - {0x001FD0, 0x001FD3}, - {0x001FD6, 0x001FDB}, - {0x001FE0, 0x001FEC}, - {0x001FF2, 0x001FF4}, - {0x001FF6, 0x001FFC}, - {0x00200C, 0x00200D}, - {0x00203F, 0x002040}, - {0x002054, 0x002054}, - {0x002071, 0x002071}, - {0x00207F, 0x00207F}, - {0x002090, 0x00209C}, - {0x0020D0, 0x0020DC}, - {0x0020E1, 0x0020E1}, - {0x0020E5, 0x0020F0}, - {0x002102, 0x002102}, - {0x002107, 0x002107}, - {0x00210A, 0x002113}, - {0x002115, 0x002115}, - {0x002118, 0x00211D}, - {0x002124, 0x002124}, - {0x002126, 0x002126}, - {0x002128, 0x002128}, - {0x00212A, 0x002139}, - {0x00213C, 0x00213F}, - {0x002145, 0x002149}, - {0x00214E, 0x00214E}, - {0x002160, 0x002188}, - {0x002C00, 0x002CE4}, - {0x002CEB, 0x002CF3}, - {0x002D00, 0x002D25}, - {0x002D27, 0x002D27}, - {0x002D2D, 0x002D2D}, - {0x002D30, 0x002D67}, - {0x002D6F, 0x002D6F}, - {0x002D7F, 0x002D96}, - {0x002DA0, 0x002DA6}, - {0x002DA8, 0x002DAE}, - {0x002DB0, 0x002DB6}, - {0x002DB8, 0x002DBE}, - {0x002DC0, 0x002DC6}, - {0x002DC8, 0x002DCE}, - {0x002DD0, 0x002DD6}, - {0x002DD8, 0x002DDE}, - {0x002DE0, 0x002DFF}, - {0x003005, 0x003007}, - {0x003021, 0x00302F}, - {0x003031, 0x003035}, - {0x003038, 0x00303C}, - {0x003041, 0x003096}, - {0x003099, 0x00309A}, - {0x00309D, 0x00309F}, - {0x0030A1, 0x0030FF}, - {0x003105, 0x00312F}, - {0x003131, 0x00318E}, - {0x0031A0, 0x0031BF}, - {0x0031F0, 0x0031FF}, - {0x003400, 0x004DBF}, - {0x004E00, 0x00A48C}, - {0x00A4D0, 0x00A4FD}, - {0x00A500, 0x00A60C}, - {0x00A610, 0x00A62B}, - {0x00A640, 0x00A66F}, - {0x00A674, 0x00A67D}, - {0x00A67F, 0x00A6F1}, - {0x00A717, 0x00A71F}, - {0x00A722, 0x00A788}, - {0x00A78B, 0x00A7CA}, - {0x00A7D0, 0x00A7D1}, - {0x00A7D3, 0x00A7D3}, - {0x00A7D5, 0x00A7D9}, - {0x00A7F2, 0x00A827}, - {0x00A82C, 0x00A82C}, - {0x00A840, 0x00A873}, - {0x00A880, 0x00A8C5}, - {0x00A8D0, 0x00A8D9}, - {0x00A8E0, 0x00A8F7}, - {0x00A8FB, 0x00A8FB}, - {0x00A8FD, 0x00A92D}, - {0x00A930, 0x00A953}, - {0x00A960, 0x00A97C}, - {0x00A980, 0x00A9C0}, - {0x00A9CF, 0x00A9D9}, - {0x00A9E0, 0x00A9FE}, - {0x00AA00, 0x00AA36}, - {0x00AA40, 0x00AA4D}, - {0x00AA50, 0x00AA59}, - {0x00AA60, 0x00AA76}, - {0x00AA7A, 0x00AAC2}, - {0x00AADB, 0x00AADD}, - {0x00AAE0, 0x00AAEF}, - {0x00AAF2, 0x00AAF6}, - {0x00AB01, 0x00AB06}, - {0x00AB09, 0x00AB0E}, - {0x00AB11, 0x00AB16}, - {0x00AB20, 0x00AB26}, - {0x00AB28, 0x00AB2E}, - {0x00AB30, 0x00AB5A}, - {0x00AB5C, 0x00AB69}, - {0x00AB70, 0x00ABEA}, - {0x00ABEC, 0x00ABED}, - {0x00ABF0, 0x00ABF9}, - {0x00AC00, 0x00D7A3}, - {0x00D7B0, 0x00D7C6}, - {0x00D7CB, 0x00D7FB}, - {0x00F900, 0x00FA6D}, - {0x00FA70, 0x00FAD9}, - {0x00FB00, 0x00FB06}, - {0x00FB13, 0x00FB17}, - {0x00FB1D, 0x00FB28}, - {0x00FB2A, 0x00FB36}, - {0x00FB38, 0x00FB3C}, - {0x00FB3E, 0x00FB3E}, - {0x00FB40, 0x00FB41}, - {0x00FB43, 0x00FB44}, - {0x00FB46, 0x00FBB1}, - {0x00FBD3, 0x00FC5D}, - {0x00FC64, 0x00FD3D}, - {0x00FD50, 0x00FD8F}, - {0x00FD92, 0x00FDC7}, - {0x00FDF0, 0x00FDF9}, - {0x00FE00, 0x00FE0F}, - {0x00FE20, 0x00FE2F}, - {0x00FE33, 0x00FE34}, - {0x00FE4D, 0x00FE4F}, - {0x00FE71, 0x00FE71}, - {0x00FE73, 0x00FE73}, - {0x00FE77, 0x00FE77}, - {0x00FE79, 0x00FE79}, - {0x00FE7B, 0x00FE7B}, - {0x00FE7D, 0x00FE7D}, - {0x00FE7F, 0x00FEFC}, - {0x00FF10, 0x00FF19}, - {0x00FF21, 0x00FF3A}, - {0x00FF3F, 0x00FF3F}, - {0x00FF41, 0x00FF5A}, - {0x00FF65, 0x00FFBE}, - {0x00FFC2, 0x00FFC7}, - {0x00FFCA, 0x00FFCF}, - {0x00FFD2, 0x00FFD7}, - {0x00FFDA, 0x00FFDC}, - {0x010000, 0x01000B}, - {0x01000D, 0x010026}, - {0x010028, 0x01003A}, - {0x01003C, 0x01003D}, - {0x01003F, 0x01004D}, - {0x010050, 0x01005D}, - {0x010080, 0x0100FA}, - {0x010140, 0x010174}, - {0x0101FD, 0x0101FD}, - {0x010280, 0x01029C}, - {0x0102A0, 0x0102D0}, - {0x0102E0, 0x0102E0}, - {0x010300, 0x01031F}, - {0x01032D, 0x01034A}, - {0x010350, 0x01037A}, - {0x010380, 0x01039D}, - {0x0103A0, 0x0103C3}, - {0x0103C8, 0x0103CF}, - {0x0103D1, 0x0103D5}, - {0x010400, 0x01049D}, - {0x0104A0, 0x0104A9}, - {0x0104B0, 0x0104D3}, - {0x0104D8, 0x0104FB}, - {0x010500, 0x010527}, - {0x010530, 0x010563}, - {0x010570, 0x01057A}, - {0x01057C, 0x01058A}, - {0x01058C, 0x010592}, - {0x010594, 0x010595}, - {0x010597, 0x0105A1}, - {0x0105A3, 0x0105B1}, - {0x0105B3, 0x0105B9}, - {0x0105BB, 0x0105BC}, - {0x010600, 0x010736}, - {0x010740, 0x010755}, - {0x010760, 0x010767}, - {0x010780, 0x010785}, - {0x010787, 0x0107B0}, - {0x0107B2, 0x0107BA}, - {0x010800, 0x010805}, - {0x010808, 0x010808}, - {0x01080A, 0x010835}, - {0x010837, 0x010838}, - {0x01083C, 0x01083C}, - {0x01083F, 0x010855}, - {0x010860, 0x010876}, - {0x010880, 0x01089E}, - {0x0108E0, 0x0108F2}, - {0x0108F4, 0x0108F5}, - {0x010900, 0x010915}, - {0x010920, 0x010939}, - {0x010980, 0x0109B7}, - {0x0109BE, 0x0109BF}, - {0x010A00, 0x010A03}, - {0x010A05, 0x010A06}, - {0x010A0C, 0x010A13}, - {0x010A15, 0x010A17}, - {0x010A19, 0x010A35}, - {0x010A38, 0x010A3A}, - {0x010A3F, 0x010A3F}, - {0x010A60, 0x010A7C}, - {0x010A80, 0x010A9C}, - {0x010AC0, 0x010AC7}, - {0x010AC9, 0x010AE6}, - {0x010B00, 0x010B35}, - {0x010B40, 0x010B55}, - {0x010B60, 0x010B72}, - {0x010B80, 0x010B91}, - {0x010C00, 0x010C48}, - {0x010C80, 0x010CB2}, - {0x010CC0, 0x010CF2}, - {0x010D00, 0x010D27}, - {0x010D30, 0x010D39}, - {0x010E80, 0x010EA9}, - {0x010EAB, 0x010EAC}, - {0x010EB0, 0x010EB1}, - {0x010EFD, 0x010F1C}, - {0x010F27, 0x010F27}, - {0x010F30, 0x010F50}, - {0x010F70, 0x010F85}, - {0x010FB0, 0x010FC4}, - {0x010FE0, 0x010FF6}, - {0x011000, 0x011046}, - {0x011066, 0x011075}, - {0x01107F, 0x0110BA}, - {0x0110C2, 0x0110C2}, - {0x0110D0, 0x0110E8}, - {0x0110F0, 0x0110F9}, - {0x011100, 0x011134}, - {0x011136, 0x01113F}, - {0x011144, 0x011147}, - {0x011150, 0x011173}, - {0x011176, 0x011176}, - {0x011180, 0x0111C4}, - {0x0111C9, 0x0111CC}, - {0x0111CE, 0x0111DA}, - {0x0111DC, 0x0111DC}, - {0x011200, 0x011211}, - {0x011213, 0x011237}, - {0x01123E, 0x011241}, - {0x011280, 0x011286}, - {0x011288, 0x011288}, - {0x01128A, 0x01128D}, - {0x01128F, 0x01129D}, - {0x01129F, 0x0112A8}, - {0x0112B0, 0x0112EA}, - {0x0112F0, 0x0112F9}, - {0x011300, 0x011303}, - {0x011305, 0x01130C}, - {0x01130F, 0x011310}, - {0x011313, 0x011328}, - {0x01132A, 0x011330}, - {0x011332, 0x011333}, - {0x011335, 0x011339}, - {0x01133B, 0x011344}, - {0x011347, 0x011348}, - {0x01134B, 0x01134D}, - {0x011350, 0x011350}, - {0x011357, 0x011357}, - {0x01135D, 0x011363}, - {0x011366, 0x01136C}, - {0x011370, 0x011374}, - {0x011400, 0x01144A}, - {0x011450, 0x011459}, - {0x01145E, 0x011461}, - {0x011480, 0x0114C5}, - {0x0114C7, 0x0114C7}, - {0x0114D0, 0x0114D9}, - {0x011580, 0x0115B5}, - {0x0115B8, 0x0115C0}, - {0x0115D8, 0x0115DD}, - {0x011600, 0x011640}, - {0x011644, 0x011644}, - {0x011650, 0x011659}, - {0x011680, 0x0116B8}, - {0x0116C0, 0x0116C9}, - {0x011700, 0x01171A}, - {0x01171D, 0x01172B}, - {0x011730, 0x011739}, - {0x011740, 0x011746}, - {0x011800, 0x01183A}, - {0x0118A0, 0x0118E9}, - {0x0118FF, 0x011906}, - {0x011909, 0x011909}, - {0x01190C, 0x011913}, - {0x011915, 0x011916}, - {0x011918, 0x011935}, - {0x011937, 0x011938}, - {0x01193B, 0x011943}, - {0x011950, 0x011959}, - {0x0119A0, 0x0119A7}, - {0x0119AA, 0x0119D7}, - {0x0119DA, 0x0119E1}, - {0x0119E3, 0x0119E4}, - {0x011A00, 0x011A3E}, - {0x011A47, 0x011A47}, - {0x011A50, 0x011A99}, - {0x011A9D, 0x011A9D}, - {0x011AB0, 0x011AF8}, - {0x011C00, 0x011C08}, - {0x011C0A, 0x011C36}, - {0x011C38, 0x011C40}, - {0x011C50, 0x011C59}, - {0x011C72, 0x011C8F}, - {0x011C92, 0x011CA7}, - {0x011CA9, 0x011CB6}, - {0x011D00, 0x011D06}, - {0x011D08, 0x011D09}, - {0x011D0B, 0x011D36}, - {0x011D3A, 0x011D3A}, - {0x011D3C, 0x011D3D}, - {0x011D3F, 0x011D47}, - {0x011D50, 0x011D59}, - {0x011D60, 0x011D65}, - {0x011D67, 0x011D68}, - {0x011D6A, 0x011D8E}, - {0x011D90, 0x011D91}, - {0x011D93, 0x011D98}, - {0x011DA0, 0x011DA9}, - {0x011EE0, 0x011EF6}, - {0x011F00, 0x011F10}, - {0x011F12, 0x011F3A}, - {0x011F3E, 0x011F42}, - {0x011F50, 0x011F59}, - {0x011FB0, 0x011FB0}, - {0x012000, 0x012399}, - {0x012400, 0x01246E}, - {0x012480, 0x012543}, - {0x012F90, 0x012FF0}, - {0x013000, 0x01342F}, - {0x013440, 0x013455}, - {0x014400, 0x014646}, - {0x016800, 0x016A38}, - {0x016A40, 0x016A5E}, - {0x016A60, 0x016A69}, - {0x016A70, 0x016ABE}, - {0x016AC0, 0x016AC9}, - {0x016AD0, 0x016AED}, - {0x016AF0, 0x016AF4}, - {0x016B00, 0x016B36}, - {0x016B40, 0x016B43}, - {0x016B50, 0x016B59}, - {0x016B63, 0x016B77}, - {0x016B7D, 0x016B8F}, - {0x016E40, 0x016E7F}, - {0x016F00, 0x016F4A}, - {0x016F4F, 0x016F87}, - {0x016F8F, 0x016F9F}, - {0x016FE0, 0x016FE1}, - {0x016FE3, 0x016FE4}, - {0x016FF0, 0x016FF1}, - {0x017000, 0x0187F7}, - {0x018800, 0x018CD5}, - {0x018D00, 0x018D08}, - {0x01AFF0, 0x01AFF3}, - {0x01AFF5, 0x01AFFB}, - {0x01AFFD, 0x01AFFE}, - {0x01B000, 0x01B122}, - {0x01B132, 0x01B132}, - {0x01B150, 0x01B152}, - {0x01B155, 0x01B155}, - {0x01B164, 0x01B167}, - {0x01B170, 0x01B2FB}, - {0x01BC00, 0x01BC6A}, - {0x01BC70, 0x01BC7C}, - {0x01BC80, 0x01BC88}, - {0x01BC90, 0x01BC99}, - {0x01BC9D, 0x01BC9E}, - {0x01CF00, 0x01CF2D}, - {0x01CF30, 0x01CF46}, - {0x01D165, 0x01D169}, - {0x01D16D, 0x01D172}, - {0x01D17B, 0x01D182}, - {0x01D185, 0x01D18B}, - {0x01D1AA, 0x01D1AD}, - {0x01D242, 0x01D244}, - {0x01D400, 0x01D454}, - {0x01D456, 0x01D49C}, - {0x01D49E, 0x01D49F}, - {0x01D4A2, 0x01D4A2}, - {0x01D4A5, 0x01D4A6}, - {0x01D4A9, 0x01D4AC}, - {0x01D4AE, 0x01D4B9}, - {0x01D4BB, 0x01D4BB}, - {0x01D4BD, 0x01D4C3}, - {0x01D4C5, 0x01D505}, - {0x01D507, 0x01D50A}, - {0x01D50D, 0x01D514}, - {0x01D516, 0x01D51C}, - {0x01D51E, 0x01D539}, - {0x01D53B, 0x01D53E}, - {0x01D540, 0x01D544}, - {0x01D546, 0x01D546}, - {0x01D54A, 0x01D550}, - {0x01D552, 0x01D6A5}, - {0x01D6A8, 0x01D6C0}, - {0x01D6C2, 0x01D6DA}, - {0x01D6DC, 0x01D6FA}, - {0x01D6FC, 0x01D714}, - {0x01D716, 0x01D734}, - {0x01D736, 0x01D74E}, - {0x01D750, 0x01D76E}, - {0x01D770, 0x01D788}, - {0x01D78A, 0x01D7A8}, - {0x01D7AA, 0x01D7C2}, - {0x01D7C4, 0x01D7CB}, - {0x01D7CE, 0x01D7FF}, - {0x01DA00, 0x01DA36}, - {0x01DA3B, 0x01DA6C}, - {0x01DA75, 0x01DA75}, - {0x01DA84, 0x01DA84}, - {0x01DA9B, 0x01DA9F}, - {0x01DAA1, 0x01DAAF}, - {0x01DF00, 0x01DF1E}, - {0x01DF25, 0x01DF2A}, - {0x01E000, 0x01E006}, - {0x01E008, 0x01E018}, - {0x01E01B, 0x01E021}, - {0x01E023, 0x01E024}, - {0x01E026, 0x01E02A}, - {0x01E030, 0x01E06D}, - {0x01E08F, 0x01E08F}, - {0x01E100, 0x01E12C}, - {0x01E130, 0x01E13D}, - {0x01E140, 0x01E149}, - {0x01E14E, 0x01E14E}, - {0x01E290, 0x01E2AE}, - {0x01E2C0, 0x01E2F9}, - {0x01E4D0, 0x01E4F9}, - {0x01E7E0, 0x01E7E6}, - {0x01E7E8, 0x01E7EB}, - {0x01E7ED, 0x01E7EE}, - {0x01E7F0, 0x01E7FE}, - {0x01E800, 0x01E8C4}, - {0x01E8D0, 0x01E8D6}, - {0x01E900, 0x01E94B}, - {0x01E950, 0x01E959}, - {0x01EE00, 0x01EE03}, - {0x01EE05, 0x01EE1F}, - {0x01EE21, 0x01EE22}, - {0x01EE24, 0x01EE24}, - {0x01EE27, 0x01EE27}, - {0x01EE29, 0x01EE32}, - {0x01EE34, 0x01EE37}, - {0x01EE39, 0x01EE39}, - {0x01EE3B, 0x01EE3B}, - {0x01EE42, 0x01EE42}, - {0x01EE47, 0x01EE47}, - {0x01EE49, 0x01EE49}, - {0x01EE4B, 0x01EE4B}, - {0x01EE4D, 0x01EE4F}, - {0x01EE51, 0x01EE52}, - {0x01EE54, 0x01EE54}, - {0x01EE57, 0x01EE57}, - {0x01EE59, 0x01EE59}, - {0x01EE5B, 0x01EE5B}, - {0x01EE5D, 0x01EE5D}, - {0x01EE5F, 0x01EE5F}, - {0x01EE61, 0x01EE62}, - {0x01EE64, 0x01EE64}, - {0x01EE67, 0x01EE6A}, - {0x01EE6C, 0x01EE72}, - {0x01EE74, 0x01EE77}, - {0x01EE79, 0x01EE7C}, - {0x01EE7E, 0x01EE7E}, - {0x01EE80, 0x01EE89}, - {0x01EE8B, 0x01EE9B}, - {0x01EEA1, 0x01EEA3}, - {0x01EEA5, 0x01EEA9}, - {0x01EEAB, 0x01EEBB}, - {0x01FBF0, 0x01FBF9}, - {0x020000, 0x02A6DF}, - {0x02A700, 0x02B739}, - {0x02B740, 0x02B81D}, - {0x02B820, 0x02CEA1}, - {0x02CEB0, 0x02EBE0}, - {0x02EBF0, 0x02EE5D}, - {0x02F800, 0x02FA1D}, - {0x030000, 0x03134A}, - {0x031350, 0x0323AF}, - {0x0E0100, 0x0E01EF}, -}; - -#define TYPE bool -#define TABLE lookup_tbl -#define DEFAULT false -#define HAS_VALUE 0 -#include "internal/rtype/lookup-func.h" - -bool -rune_has_prop_xid_continue(rune ch) -{ - return -#if BIT_LOOKUP - ch <= LATIN1_MAX ? (mask & ch) : -#endif - lookup(ch); -} diff --git a/vendor/librune/lib/rtype/rune_has_prop_xid_start.c b/vendor/librune/lib/rtype/rune_has_prop_xid_start.c deleted file mode 100644 index d2c9e98..0000000 --- a/vendor/librune/lib/rtype/rune_has_prop_xid_start.c +++ /dev/null @@ -1,697 +0,0 @@ -/* This file is autogenerated by gen/rtype-prop; DO NOT EDIT. */ - -#include "rtype.h" - -#include "internal/common.h" - -#if BIT_LOOKUP -static const unsigned _BitInt(LATIN1_MAX + 1) mask = 0xFF7FFFFFFF7FFFFF042004000000000007FFFFFE07FFFFFE0000000000000000uwb; -#endif - -static const struct { - rune lo, hi; -} lookup_tbl[] = { - {0x000041, 0x00005A}, - {0x000061, 0x00007A}, - {0x0000AA, 0x0000AA}, - {0x0000B5, 0x0000B5}, - {0x0000BA, 0x0000BA}, - {0x0000C0, 0x0000D6}, - {0x0000D8, 0x0000F6}, - {0x0000F8, 0x0002C1}, - {0x0002C6, 0x0002D1}, - {0x0002E0, 0x0002E4}, - {0x0002EC, 0x0002EC}, - {0x0002EE, 0x0002EE}, - {0x000370, 0x000374}, - {0x000376, 0x000377}, - {0x00037B, 0x00037D}, - {0x00037F, 0x00037F}, - {0x000386, 0x000386}, - {0x000388, 0x00038A}, - {0x00038C, 0x00038C}, - {0x00038E, 0x0003A1}, - {0x0003A3, 0x0003F5}, - {0x0003F7, 0x000481}, - {0x00048A, 0x00052F}, - {0x000531, 0x000556}, - {0x000559, 0x000559}, - {0x000560, 0x000588}, - {0x0005D0, 0x0005EA}, - {0x0005EF, 0x0005F2}, - {0x000620, 0x00064A}, - {0x00066E, 0x00066F}, - {0x000671, 0x0006D3}, - {0x0006D5, 0x0006D5}, - {0x0006E5, 0x0006E6}, - {0x0006EE, 0x0006EF}, - {0x0006FA, 0x0006FC}, - {0x0006FF, 0x0006FF}, - {0x000710, 0x000710}, - {0x000712, 0x00072F}, - {0x00074D, 0x0007A5}, - {0x0007B1, 0x0007B1}, - {0x0007CA, 0x0007EA}, - {0x0007F4, 0x0007F5}, - {0x0007FA, 0x0007FA}, - {0x000800, 0x000815}, - {0x00081A, 0x00081A}, - {0x000824, 0x000824}, - {0x000828, 0x000828}, - {0x000840, 0x000858}, - {0x000860, 0x00086A}, - {0x000870, 0x000887}, - {0x000889, 0x00088E}, - {0x0008A0, 0x0008C9}, - {0x000904, 0x000939}, - {0x00093D, 0x00093D}, - {0x000950, 0x000950}, - {0x000958, 0x000961}, - {0x000971, 0x000980}, - {0x000985, 0x00098C}, - {0x00098F, 0x000990}, - {0x000993, 0x0009A8}, - {0x0009AA, 0x0009B0}, - {0x0009B2, 0x0009B2}, - {0x0009B6, 0x0009B9}, - {0x0009BD, 0x0009BD}, - {0x0009CE, 0x0009CE}, - {0x0009DC, 0x0009DD}, - {0x0009DF, 0x0009E1}, - {0x0009F0, 0x0009F1}, - {0x0009FC, 0x0009FC}, - {0x000A05, 0x000A0A}, - {0x000A0F, 0x000A10}, - {0x000A13, 0x000A28}, - {0x000A2A, 0x000A30}, - {0x000A32, 0x000A33}, - {0x000A35, 0x000A36}, - {0x000A38, 0x000A39}, - {0x000A59, 0x000A5C}, - {0x000A5E, 0x000A5E}, - {0x000A72, 0x000A74}, - {0x000A85, 0x000A8D}, - {0x000A8F, 0x000A91}, - {0x000A93, 0x000AA8}, - {0x000AAA, 0x000AB0}, - {0x000AB2, 0x000AB3}, - {0x000AB5, 0x000AB9}, - {0x000ABD, 0x000ABD}, - {0x000AD0, 0x000AD0}, - {0x000AE0, 0x000AE1}, - {0x000AF9, 0x000AF9}, - {0x000B05, 0x000B0C}, - {0x000B0F, 0x000B10}, - {0x000B13, 0x000B28}, - {0x000B2A, 0x000B30}, - {0x000B32, 0x000B33}, - {0x000B35, 0x000B39}, - {0x000B3D, 0x000B3D}, - {0x000B5C, 0x000B5D}, - {0x000B5F, 0x000B61}, - {0x000B71, 0x000B71}, - {0x000B83, 0x000B83}, - {0x000B85, 0x000B8A}, - {0x000B8E, 0x000B90}, - {0x000B92, 0x000B95}, - {0x000B99, 0x000B9A}, - {0x000B9C, 0x000B9C}, - {0x000B9E, 0x000B9F}, - {0x000BA3, 0x000BA4}, - {0x000BA8, 0x000BAA}, - {0x000BAE, 0x000BB9}, - {0x000BD0, 0x000BD0}, - {0x000C05, 0x000C0C}, - {0x000C0E, 0x000C10}, - {0x000C12, 0x000C28}, - {0x000C2A, 0x000C39}, - {0x000C3D, 0x000C3D}, - {0x000C58, 0x000C5A}, - {0x000C5D, 0x000C5D}, - {0x000C60, 0x000C61}, - {0x000C80, 0x000C80}, - {0x000C85, 0x000C8C}, - {0x000C8E, 0x000C90}, - {0x000C92, 0x000CA8}, - {0x000CAA, 0x000CB3}, - {0x000CB5, 0x000CB9}, - {0x000CBD, 0x000CBD}, - {0x000CDD, 0x000CDE}, - {0x000CE0, 0x000CE1}, - {0x000CF1, 0x000CF2}, - {0x000D04, 0x000D0C}, - {0x000D0E, 0x000D10}, - {0x000D12, 0x000D3A}, - {0x000D3D, 0x000D3D}, - {0x000D4E, 0x000D4E}, - {0x000D54, 0x000D56}, - {0x000D5F, 0x000D61}, - {0x000D7A, 0x000D7F}, - {0x000D85, 0x000D96}, - {0x000D9A, 0x000DB1}, - {0x000DB3, 0x000DBB}, - {0x000DBD, 0x000DBD}, - {0x000DC0, 0x000DC6}, - {0x000E01, 0x000E30}, - {0x000E32, 0x000E32}, - {0x000E40, 0x000E46}, - {0x000E81, 0x000E82}, - {0x000E84, 0x000E84}, - {0x000E86, 0x000E8A}, - {0x000E8C, 0x000EA3}, - {0x000EA5, 0x000EA5}, - {0x000EA7, 0x000EB0}, - {0x000EB2, 0x000EB2}, - {0x000EBD, 0x000EBD}, - {0x000EC0, 0x000EC4}, - {0x000EC6, 0x000EC6}, - {0x000EDC, 0x000EDF}, - {0x000F00, 0x000F00}, - {0x000F40, 0x000F47}, - {0x000F49, 0x000F6C}, - {0x000F88, 0x000F8C}, - {0x001000, 0x00102A}, - {0x00103F, 0x00103F}, - {0x001050, 0x001055}, - {0x00105A, 0x00105D}, - {0x001061, 0x001061}, - {0x001065, 0x001066}, - {0x00106E, 0x001070}, - {0x001075, 0x001081}, - {0x00108E, 0x00108E}, - {0x0010A0, 0x0010C5}, - {0x0010C7, 0x0010C7}, - {0x0010CD, 0x0010CD}, - {0x0010D0, 0x0010FA}, - {0x0010FC, 0x001248}, - {0x00124A, 0x00124D}, - {0x001250, 0x001256}, - {0x001258, 0x001258}, - {0x00125A, 0x00125D}, - {0x001260, 0x001288}, - {0x00128A, 0x00128D}, - {0x001290, 0x0012B0}, - {0x0012B2, 0x0012B5}, - {0x0012B8, 0x0012BE}, - {0x0012C0, 0x0012C0}, - {0x0012C2, 0x0012C5}, - {0x0012C8, 0x0012D6}, - {0x0012D8, 0x001310}, - {0x001312, 0x001315}, - {0x001318, 0x00135A}, - {0x001380, 0x00138F}, - {0x0013A0, 0x0013F5}, - {0x0013F8, 0x0013FD}, - {0x001401, 0x00166C}, - {0x00166F, 0x00167F}, - {0x001681, 0x00169A}, - {0x0016A0, 0x0016EA}, - {0x0016EE, 0x0016F8}, - {0x001700, 0x001711}, - {0x00171F, 0x001731}, - {0x001740, 0x001751}, - {0x001760, 0x00176C}, - {0x00176E, 0x001770}, - {0x001780, 0x0017B3}, - {0x0017D7, 0x0017D7}, - {0x0017DC, 0x0017DC}, - {0x001820, 0x001878}, - {0x001880, 0x0018A8}, - {0x0018AA, 0x0018AA}, - {0x0018B0, 0x0018F5}, - {0x001900, 0x00191E}, - {0x001950, 0x00196D}, - {0x001970, 0x001974}, - {0x001980, 0x0019AB}, - {0x0019B0, 0x0019C9}, - {0x001A00, 0x001A16}, - {0x001A20, 0x001A54}, - {0x001AA7, 0x001AA7}, - {0x001B05, 0x001B33}, - {0x001B45, 0x001B4C}, - {0x001B83, 0x001BA0}, - {0x001BAE, 0x001BAF}, - {0x001BBA, 0x001BE5}, - {0x001C00, 0x001C23}, - {0x001C4D, 0x001C4F}, - {0x001C5A, 0x001C7D}, - {0x001C80, 0x001C88}, - {0x001C90, 0x001CBA}, - {0x001CBD, 0x001CBF}, - {0x001CE9, 0x001CEC}, - {0x001CEE, 0x001CF3}, - {0x001CF5, 0x001CF6}, - {0x001CFA, 0x001CFA}, - {0x001D00, 0x001DBF}, - {0x001E00, 0x001F15}, - {0x001F18, 0x001F1D}, - {0x001F20, 0x001F45}, - {0x001F48, 0x001F4D}, - {0x001F50, 0x001F57}, - {0x001F59, 0x001F59}, - {0x001F5B, 0x001F5B}, - {0x001F5D, 0x001F5D}, - {0x001F5F, 0x001F7D}, - {0x001F80, 0x001FB4}, - {0x001FB6, 0x001FBC}, - {0x001FBE, 0x001FBE}, - {0x001FC2, 0x001FC4}, - {0x001FC6, 0x001FCC}, - {0x001FD0, 0x001FD3}, - {0x001FD6, 0x001FDB}, - {0x001FE0, 0x001FEC}, - {0x001FF2, 0x001FF4}, - {0x001FF6, 0x001FFC}, - {0x002071, 0x002071}, - {0x00207F, 0x00207F}, - {0x002090, 0x00209C}, - {0x002102, 0x002102}, - {0x002107, 0x002107}, - {0x00210A, 0x002113}, - {0x002115, 0x002115}, - {0x002118, 0x00211D}, - {0x002124, 0x002124}, - {0x002126, 0x002126}, - {0x002128, 0x002128}, - {0x00212A, 0x002139}, - {0x00213C, 0x00213F}, - {0x002145, 0x002149}, - {0x00214E, 0x00214E}, - {0x002160, 0x002188}, - {0x002C00, 0x002CE4}, - {0x002CEB, 0x002CEE}, - {0x002CF2, 0x002CF3}, - {0x002D00, 0x002D25}, - {0x002D27, 0x002D27}, - {0x002D2D, 0x002D2D}, - {0x002D30, 0x002D67}, - {0x002D6F, 0x002D6F}, - {0x002D80, 0x002D96}, - {0x002DA0, 0x002DA6}, - {0x002DA8, 0x002DAE}, - {0x002DB0, 0x002DB6}, - {0x002DB8, 0x002DBE}, - {0x002DC0, 0x002DC6}, - {0x002DC8, 0x002DCE}, - {0x002DD0, 0x002DD6}, - {0x002DD8, 0x002DDE}, - {0x003005, 0x003007}, - {0x003021, 0x003029}, - {0x003031, 0x003035}, - {0x003038, 0x00303C}, - {0x003041, 0x003096}, - {0x00309D, 0x00309F}, - {0x0030A1, 0x0030FA}, - {0x0030FC, 0x0030FF}, - {0x003105, 0x00312F}, - {0x003131, 0x00318E}, - {0x0031A0, 0x0031BF}, - {0x0031F0, 0x0031FF}, - {0x003400, 0x004DBF}, - {0x004E00, 0x00A48C}, - {0x00A4D0, 0x00A4FD}, - {0x00A500, 0x00A60C}, - {0x00A610, 0x00A61F}, - {0x00A62A, 0x00A62B}, - {0x00A640, 0x00A66E}, - {0x00A67F, 0x00A69D}, - {0x00A6A0, 0x00A6EF}, - {0x00A717, 0x00A71F}, - {0x00A722, 0x00A788}, - {0x00A78B, 0x00A7CA}, - {0x00A7D0, 0x00A7D1}, - {0x00A7D3, 0x00A7D3}, - {0x00A7D5, 0x00A7D9}, - {0x00A7F2, 0x00A801}, - {0x00A803, 0x00A805}, - {0x00A807, 0x00A80A}, - {0x00A80C, 0x00A822}, - {0x00A840, 0x00A873}, - {0x00A882, 0x00A8B3}, - {0x00A8F2, 0x00A8F7}, - {0x00A8FB, 0x00A8FB}, - {0x00A8FD, 0x00A8FE}, - {0x00A90A, 0x00A925}, - {0x00A930, 0x00A946}, - {0x00A960, 0x00A97C}, - {0x00A984, 0x00A9B2}, - {0x00A9CF, 0x00A9CF}, - {0x00A9E0, 0x00A9E4}, - {0x00A9E6, 0x00A9EF}, - {0x00A9FA, 0x00A9FE}, - {0x00AA00, 0x00AA28}, - {0x00AA40, 0x00AA42}, - {0x00AA44, 0x00AA4B}, - {0x00AA60, 0x00AA76}, - {0x00AA7A, 0x00AA7A}, - {0x00AA7E, 0x00AAAF}, - {0x00AAB1, 0x00AAB1}, - {0x00AAB5, 0x00AAB6}, - {0x00AAB9, 0x00AABD}, - {0x00AAC0, 0x00AAC0}, - {0x00AAC2, 0x00AAC2}, - {0x00AADB, 0x00AADD}, - {0x00AAE0, 0x00AAEA}, - {0x00AAF2, 0x00AAF4}, - {0x00AB01, 0x00AB06}, - {0x00AB09, 0x00AB0E}, - {0x00AB11, 0x00AB16}, - {0x00AB20, 0x00AB26}, - {0x00AB28, 0x00AB2E}, - {0x00AB30, 0x00AB5A}, - {0x00AB5C, 0x00AB69}, - {0x00AB70, 0x00ABE2}, - {0x00AC00, 0x00D7A3}, - {0x00D7B0, 0x00D7C6}, - {0x00D7CB, 0x00D7FB}, - {0x00F900, 0x00FA6D}, - {0x00FA70, 0x00FAD9}, - {0x00FB00, 0x00FB06}, - {0x00FB13, 0x00FB17}, - {0x00FB1D, 0x00FB1D}, - {0x00FB1F, 0x00FB28}, - {0x00FB2A, 0x00FB36}, - {0x00FB38, 0x00FB3C}, - {0x00FB3E, 0x00FB3E}, - {0x00FB40, 0x00FB41}, - {0x00FB43, 0x00FB44}, - {0x00FB46, 0x00FBB1}, - {0x00FBD3, 0x00FC5D}, - {0x00FC64, 0x00FD3D}, - {0x00FD50, 0x00FD8F}, - {0x00FD92, 0x00FDC7}, - {0x00FDF0, 0x00FDF9}, - {0x00FE71, 0x00FE71}, - {0x00FE73, 0x00FE73}, - {0x00FE77, 0x00FE77}, - {0x00FE79, 0x00FE79}, - {0x00FE7B, 0x00FE7B}, - {0x00FE7D, 0x00FE7D}, - {0x00FE7F, 0x00FEFC}, - {0x00FF21, 0x00FF3A}, - {0x00FF41, 0x00FF5A}, - {0x00FF66, 0x00FF9D}, - {0x00FFA0, 0x00FFBE}, - {0x00FFC2, 0x00FFC7}, - {0x00FFCA, 0x00FFCF}, - {0x00FFD2, 0x00FFD7}, - {0x00FFDA, 0x00FFDC}, - {0x010000, 0x01000B}, - {0x01000D, 0x010026}, - {0x010028, 0x01003A}, - {0x01003C, 0x01003D}, - {0x01003F, 0x01004D}, - {0x010050, 0x01005D}, - {0x010080, 0x0100FA}, - {0x010140, 0x010174}, - {0x010280, 0x01029C}, - {0x0102A0, 0x0102D0}, - {0x010300, 0x01031F}, - {0x01032D, 0x01034A}, - {0x010350, 0x010375}, - {0x010380, 0x01039D}, - {0x0103A0, 0x0103C3}, - {0x0103C8, 0x0103CF}, - {0x0103D1, 0x0103D5}, - {0x010400, 0x01049D}, - {0x0104B0, 0x0104D3}, - {0x0104D8, 0x0104FB}, - {0x010500, 0x010527}, - {0x010530, 0x010563}, - {0x010570, 0x01057A}, - {0x01057C, 0x01058A}, - {0x01058C, 0x010592}, - {0x010594, 0x010595}, - {0x010597, 0x0105A1}, - {0x0105A3, 0x0105B1}, - {0x0105B3, 0x0105B9}, - {0x0105BB, 0x0105BC}, - {0x010600, 0x010736}, - {0x010740, 0x010755}, - {0x010760, 0x010767}, - {0x010780, 0x010785}, - {0x010787, 0x0107B0}, - {0x0107B2, 0x0107BA}, - {0x010800, 0x010805}, - {0x010808, 0x010808}, - {0x01080A, 0x010835}, - {0x010837, 0x010838}, - {0x01083C, 0x01083C}, - {0x01083F, 0x010855}, - {0x010860, 0x010876}, - {0x010880, 0x01089E}, - {0x0108E0, 0x0108F2}, - {0x0108F4, 0x0108F5}, - {0x010900, 0x010915}, - {0x010920, 0x010939}, - {0x010980, 0x0109B7}, - {0x0109BE, 0x0109BF}, - {0x010A00, 0x010A00}, - {0x010A10, 0x010A13}, - {0x010A15, 0x010A17}, - {0x010A19, 0x010A35}, - {0x010A60, 0x010A7C}, - {0x010A80, 0x010A9C}, - {0x010AC0, 0x010AC7}, - {0x010AC9, 0x010AE4}, - {0x010B00, 0x010B35}, - {0x010B40, 0x010B55}, - {0x010B60, 0x010B72}, - {0x010B80, 0x010B91}, - {0x010C00, 0x010C48}, - {0x010C80, 0x010CB2}, - {0x010CC0, 0x010CF2}, - {0x010D00, 0x010D23}, - {0x010E80, 0x010EA9}, - {0x010EB0, 0x010EB1}, - {0x010F00, 0x010F1C}, - {0x010F27, 0x010F27}, - {0x010F30, 0x010F45}, - {0x010F70, 0x010F81}, - {0x010FB0, 0x010FC4}, - {0x010FE0, 0x010FF6}, - {0x011003, 0x011037}, - {0x011071, 0x011072}, - {0x011075, 0x011075}, - {0x011083, 0x0110AF}, - {0x0110D0, 0x0110E8}, - {0x011103, 0x011126}, - {0x011144, 0x011144}, - {0x011147, 0x011147}, - {0x011150, 0x011172}, - {0x011176, 0x011176}, - {0x011183, 0x0111B2}, - {0x0111C1, 0x0111C4}, - {0x0111DA, 0x0111DA}, - {0x0111DC, 0x0111DC}, - {0x011200, 0x011211}, - {0x011213, 0x01122B}, - {0x01123F, 0x011240}, - {0x011280, 0x011286}, - {0x011288, 0x011288}, - {0x01128A, 0x01128D}, - {0x01128F, 0x01129D}, - {0x01129F, 0x0112A8}, - {0x0112B0, 0x0112DE}, - {0x011305, 0x01130C}, - {0x01130F, 0x011310}, - {0x011313, 0x011328}, - {0x01132A, 0x011330}, - {0x011332, 0x011333}, - {0x011335, 0x011339}, - {0x01133D, 0x01133D}, - {0x011350, 0x011350}, - {0x01135D, 0x011361}, - {0x011400, 0x011434}, - {0x011447, 0x01144A}, - {0x01145F, 0x011461}, - {0x011480, 0x0114AF}, - {0x0114C4, 0x0114C5}, - {0x0114C7, 0x0114C7}, - {0x011580, 0x0115AE}, - {0x0115D8, 0x0115DB}, - {0x011600, 0x01162F}, - {0x011644, 0x011644}, - {0x011680, 0x0116AA}, - {0x0116B8, 0x0116B8}, - {0x011700, 0x01171A}, - {0x011740, 0x011746}, - {0x011800, 0x01182B}, - {0x0118A0, 0x0118DF}, - {0x0118FF, 0x011906}, - {0x011909, 0x011909}, - {0x01190C, 0x011913}, - {0x011915, 0x011916}, - {0x011918, 0x01192F}, - {0x01193F, 0x01193F}, - {0x011941, 0x011941}, - {0x0119A0, 0x0119A7}, - {0x0119AA, 0x0119D0}, - {0x0119E1, 0x0119E1}, - {0x0119E3, 0x0119E3}, - {0x011A00, 0x011A00}, - {0x011A0B, 0x011A32}, - {0x011A3A, 0x011A3A}, - {0x011A50, 0x011A50}, - {0x011A5C, 0x011A89}, - {0x011A9D, 0x011A9D}, - {0x011AB0, 0x011AF8}, - {0x011C00, 0x011C08}, - {0x011C0A, 0x011C2E}, - {0x011C40, 0x011C40}, - {0x011C72, 0x011C8F}, - {0x011D00, 0x011D06}, - {0x011D08, 0x011D09}, - {0x011D0B, 0x011D30}, - {0x011D46, 0x011D46}, - {0x011D60, 0x011D65}, - {0x011D67, 0x011D68}, - {0x011D6A, 0x011D89}, - {0x011D98, 0x011D98}, - {0x011EE0, 0x011EF2}, - {0x011F02, 0x011F02}, - {0x011F04, 0x011F10}, - {0x011F12, 0x011F33}, - {0x011FB0, 0x011FB0}, - {0x012000, 0x012399}, - {0x012400, 0x01246E}, - {0x012480, 0x012543}, - {0x012F90, 0x012FF0}, - {0x013000, 0x01342F}, - {0x013441, 0x013446}, - {0x014400, 0x014646}, - {0x016800, 0x016A38}, - {0x016A40, 0x016A5E}, - {0x016A70, 0x016ABE}, - {0x016AD0, 0x016AED}, - {0x016B00, 0x016B2F}, - {0x016B40, 0x016B43}, - {0x016B63, 0x016B77}, - {0x016B7D, 0x016B8F}, - {0x016E40, 0x016E7F}, - {0x016F00, 0x016F4A}, - {0x016F50, 0x016F50}, - {0x016F93, 0x016F9F}, - {0x016FE0, 0x016FE1}, - {0x016FE3, 0x016FE3}, - {0x017000, 0x0187F7}, - {0x018800, 0x018CD5}, - {0x018D00, 0x018D08}, - {0x01AFF0, 0x01AFF3}, - {0x01AFF5, 0x01AFFB}, - {0x01AFFD, 0x01AFFE}, - {0x01B000, 0x01B122}, - {0x01B132, 0x01B132}, - {0x01B150, 0x01B152}, - {0x01B155, 0x01B155}, - {0x01B164, 0x01B167}, - {0x01B170, 0x01B2FB}, - {0x01BC00, 0x01BC6A}, - {0x01BC70, 0x01BC7C}, - {0x01BC80, 0x01BC88}, - {0x01BC90, 0x01BC99}, - {0x01D400, 0x01D454}, - {0x01D456, 0x01D49C}, - {0x01D49E, 0x01D49F}, - {0x01D4A2, 0x01D4A2}, - {0x01D4A5, 0x01D4A6}, - {0x01D4A9, 0x01D4AC}, - {0x01D4AE, 0x01D4B9}, - {0x01D4BB, 0x01D4BB}, - {0x01D4BD, 0x01D4C3}, - {0x01D4C5, 0x01D505}, - {0x01D507, 0x01D50A}, - {0x01D50D, 0x01D514}, - {0x01D516, 0x01D51C}, - {0x01D51E, 0x01D539}, - {0x01D53B, 0x01D53E}, - {0x01D540, 0x01D544}, - {0x01D546, 0x01D546}, - {0x01D54A, 0x01D550}, - {0x01D552, 0x01D6A5}, - {0x01D6A8, 0x01D6C0}, - {0x01D6C2, 0x01D6DA}, - {0x01D6DC, 0x01D6FA}, - {0x01D6FC, 0x01D714}, - {0x01D716, 0x01D734}, - {0x01D736, 0x01D74E}, - {0x01D750, 0x01D76E}, - {0x01D770, 0x01D788}, - {0x01D78A, 0x01D7A8}, - {0x01D7AA, 0x01D7C2}, - {0x01D7C4, 0x01D7CB}, - {0x01DF00, 0x01DF1E}, - {0x01DF25, 0x01DF2A}, - {0x01E030, 0x01E06D}, - {0x01E100, 0x01E12C}, - {0x01E137, 0x01E13D}, - {0x01E14E, 0x01E14E}, - {0x01E290, 0x01E2AD}, - {0x01E2C0, 0x01E2EB}, - {0x01E4D0, 0x01E4EB}, - {0x01E7E0, 0x01E7E6}, - {0x01E7E8, 0x01E7EB}, - {0x01E7ED, 0x01E7EE}, - {0x01E7F0, 0x01E7FE}, - {0x01E800, 0x01E8C4}, - {0x01E900, 0x01E943}, - {0x01E94B, 0x01E94B}, - {0x01EE00, 0x01EE03}, - {0x01EE05, 0x01EE1F}, - {0x01EE21, 0x01EE22}, - {0x01EE24, 0x01EE24}, - {0x01EE27, 0x01EE27}, - {0x01EE29, 0x01EE32}, - {0x01EE34, 0x01EE37}, - {0x01EE39, 0x01EE39}, - {0x01EE3B, 0x01EE3B}, - {0x01EE42, 0x01EE42}, - {0x01EE47, 0x01EE47}, - {0x01EE49, 0x01EE49}, - {0x01EE4B, 0x01EE4B}, - {0x01EE4D, 0x01EE4F}, - {0x01EE51, 0x01EE52}, - {0x01EE54, 0x01EE54}, - {0x01EE57, 0x01EE57}, - {0x01EE59, 0x01EE59}, - {0x01EE5B, 0x01EE5B}, - {0x01EE5D, 0x01EE5D}, - {0x01EE5F, 0x01EE5F}, - {0x01EE61, 0x01EE62}, - {0x01EE64, 0x01EE64}, - {0x01EE67, 0x01EE6A}, - {0x01EE6C, 0x01EE72}, - {0x01EE74, 0x01EE77}, - {0x01EE79, 0x01EE7C}, - {0x01EE7E, 0x01EE7E}, - {0x01EE80, 0x01EE89}, - {0x01EE8B, 0x01EE9B}, - {0x01EEA1, 0x01EEA3}, - {0x01EEA5, 0x01EEA9}, - {0x01EEAB, 0x01EEBB}, - {0x020000, 0x02A6DF}, - {0x02A700, 0x02B739}, - {0x02B740, 0x02B81D}, - {0x02B820, 0x02CEA1}, - {0x02CEB0, 0x02EBE0}, - {0x02EBF0, 0x02EE5D}, - {0x02F800, 0x02FA1D}, - {0x030000, 0x03134A}, - {0x031350, 0x0323AF}, -}; - -#define TYPE bool -#define TABLE lookup_tbl -#define DEFAULT false -#define HAS_VALUE 0 -#include "internal/rtype/lookup-func.h" - -bool -rune_has_prop_xid_start(rune ch) -{ - return -#if BIT_LOOKUP - ch <= LATIN1_MAX ? (mask & ch) : -#endif - lookup(ch); -} diff --git a/vendor/librune/lib/rtype/runeis.c b/vendor/librune/lib/rtype/runeis.c deleted file mode 100644 index 5284cd9..0000000 --- a/vendor/librune/lib/rtype/runeis.c +++ /dev/null @@ -1,16 +0,0 @@ -#include "rtype.h" - -#include "internal/rtype/cat.h" - -#define DEFAULT UC_CN -#define HAS_VALUE 1 -#define LATIN1_TABLE rtype_cat_lat1_tbl -#define TABLE rtype_cat_tbl -#define TYPE enum unicat -#include "internal/rtype/lookup-func.h" - -bool -runeis(rune ch, enum unicat c) -{ - return lookup(ch) & c; -} diff --git a/vendor/librune/lib/utf8/rtou8.c b/vendor/librune/lib/utf8/rtou8.c deleted file mode 100644 index 94cce34..0000000 --- a/vendor/librune/lib/utf8/rtou8.c +++ /dev/null @@ -1,38 +0,0 @@ -#include <stddef.h> - -#include "utf8.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/utf8/u8bspn.c b/vendor/librune/lib/utf8/u8bspn.c deleted file mode 100644 index 3ccd469..0000000 --- a/vendor/librune/lib/utf8/u8bspn.c +++ /dev/null @@ -1,22 +0,0 @@ -#include "utf8.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/utf8/u8cbspn.c b/vendor/librune/lib/utf8/u8cbspn.c deleted file mode 100644 index b51c300..0000000 --- a/vendor/librune/lib/utf8/u8cbspn.c +++ /dev/null @@ -1,20 +0,0 @@ -#include "utf8.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/utf8/u8chk.c b/vendor/librune/lib/utf8/u8chk.c deleted file mode 100644 index 4fd1afc..0000000 --- a/vendor/librune/lib/utf8/u8chk.c +++ /dev/null @@ -1,20 +0,0 @@ -#include "rune.h" -#define _RUNE_NO_MACRO_WRAPPER 1 -#include "utf8.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; - } - - return nullptr; -} diff --git a/vendor/librune/lib/utf8/u8chkr.c b/vendor/librune/lib/utf8/u8chkr.c deleted file mode 100644 index 4510f16..0000000 --- a/vendor/librune/lib/utf8/u8chkr.c +++ /dev/null @@ -1,9 +0,0 @@ -#include "rune.h" -#include "utf8.h" - -bool -u8chkr(rune ch) -{ - return !((ch >= 0xD800 && ch <= 0xDFFF) || ch == 0xFFFE || ch == 0xFFFF - || ch > RUNE_MAX); -} diff --git a/vendor/librune/lib/utf8/u8chr.c b/vendor/librune/lib/utf8/u8chr.c deleted file mode 100644 index c387300..0000000 --- a/vendor/librune/lib/utf8/u8chr.c +++ /dev/null @@ -1,97 +0,0 @@ -#include <stddef.h> -#include <stdint.h> -#include <string.h> - -#define _RUNE_NO_MACRO_WRAPPER 1 -#include "utf8.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/utf8/u8cspn.c b/vendor/librune/lib/utf8/u8cspn.c deleted file mode 100644 index 7d46a0b..0000000 --- a/vendor/librune/lib/utf8/u8cspn.c +++ /dev/null @@ -1,20 +0,0 @@ -#include "utf8.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/utf8/u8len.c b/vendor/librune/lib/utf8/u8len.c deleted file mode 100644 index fc66ee7..0000000 --- a/vendor/librune/lib/utf8/u8len.c +++ /dev/null @@ -1,13 +0,0 @@ -#include "utf8.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/utf8/u8next.c b/vendor/librune/lib/utf8/u8next.c deleted file mode 100644 index 12c521d..0000000 --- a/vendor/librune/lib/utf8/u8next.c +++ /dev/null @@ -1,16 +0,0 @@ -#define _RUNE_NO_MACRO_WRAPPER 1 -#include "utf8.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/utf8/u8prev.c b/vendor/librune/lib/utf8/u8prev.c deleted file mode 100644 index a219ae9..0000000 --- a/vendor/librune/lib/utf8/u8prev.c +++ /dev/null @@ -1,40 +0,0 @@ -#define _RUNE_NO_MACRO_WRAPPER 1 -#include "rune.h" -#include "utf8.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/utf8/u8rchr.c b/vendor/librune/lib/utf8/u8rchr.c deleted file mode 100644 index b2668e4..0000000 --- a/vendor/librune/lib/utf8/u8rchr.c +++ /dev/null @@ -1,87 +0,0 @@ -#include <stddef.h> -#include <stdint.h> - -#define _RUNE_NO_MACRO_WRAPPER 1 -#include "utf8.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/utf8/u8set.c b/vendor/librune/lib/utf8/u8set.c deleted file mode 100644 index 6c57991..0000000 --- a/vendor/librune/lib/utf8/u8set.c +++ /dev/null @@ -1,24 +0,0 @@ -#include <string.h> - -#include "utf8.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/utf8/u8spn.c b/vendor/librune/lib/utf8/u8spn.c deleted file mode 100644 index beeb33f..0000000 --- a/vendor/librune/lib/utf8/u8spn.c +++ /dev/null @@ -1,22 +0,0 @@ -#include "utf8.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/utf8/u8tor.c b/vendor/librune/lib/utf8/u8tor.c deleted file mode 100644 index 152a174..0000000 --- a/vendor/librune/lib/utf8/u8tor.c +++ /dev/null @@ -1,31 +0,0 @@ -#include "rune.h" -#include "utf8.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/utf8/u8tor_uc.c b/vendor/librune/lib/utf8/u8tor_uc.c deleted file mode 100644 index 3448b59..0000000 --- a/vendor/librune/lib/utf8/u8tor_uc.c +++ /dev/null @@ -1,26 +0,0 @@ -#include <stddef.h> - -#include "utf8.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/utf8/u8wdth.c b/vendor/librune/lib/utf8/u8wdth.c deleted file mode 100644 index 0bc5785..0000000 --- a/vendor/librune/lib/utf8/u8wdth.c +++ /dev/null @@ -1,13 +0,0 @@ -#include "utf8.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/make.c b/vendor/librune/make.c deleted file mode 100644 index 32513e1..0000000 --- a/vendor/librune/make.c +++ /dev/null @@ -1,142 +0,0 @@ -#define _GNU_SOURCE -#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) \ - do { \ - int ec; \ - cmdput(c); \ - if ((ec = cmdexec(c)) != EXIT_SUCCESS) \ - diex("%s terminated with exit-code %d", *c._argv, ec); \ - cmdclr(&c); \ - } while (0) - -#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 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)) - { - cmdadd(&c, "ar", "rcs", "librune.a"); - cmdaddv(&c, g.gl_pathv, g.gl_pathc); - cmdprc(c); - } - - globfree(&g); - } - - return EXIT_SUCCESS; -} - -void -work(void *p) -{ - cmd_t c = {0}; - char *dst, *src = p; - struct strv sv = {0}; - - if (!(dst = strdup(src))) - die("strdup"); - dst[strlen(dst) - 1] = 'o'; - - if (flagset('f') || foutdated(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", dst, "-c", src); - cmdprc(c); - } - - free(dst); -} - -int -globerr(const char *s, int e) -{ - errno = e; - die("glob: %s", s); -} diff --git a/vendor/librune/man/Lb-desc.tmac b/vendor/librune/man/Lb-desc.tmac deleted file mode 100644 index 1ec8f8f..0000000 --- a/vendor/librune/man/Lb-desc.tmac +++ /dev/null @@ -1 +0,0 @@ -.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 deleted file mode 100644 index a83d3e8..0000000 --- a/vendor/librune/man/rtou8.3 +++ /dev/null @@ -1 +0,0 @@ -.so u8set.3 diff --git a/vendor/librune/man/u8glen.3 b/vendor/librune/man/u8glen.3 deleted file mode 100644 index dfe0283..0000000 --- a/vendor/librune/man/u8glen.3 +++ /dev/null @@ -1,62 +0,0 @@ -.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 deleted file mode 100644 index e50c250..0000000 --- a/vendor/librune/man/u8gnext.3 +++ /dev/null @@ -1,69 +0,0 @@ -.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 deleted file mode 100644 index 4e58e14..0000000 --- a/vendor/librune/man/u8len.3 +++ /dev/null @@ -1,70 +0,0 @@ -.Dd January 15 2024 -.Dt U8LEN 3 -.Os -.Sh NAME -.Nm u8len -.Nd count Unicode codepoints -.Sh LIBRARY -.Lb librune -.Sh SYNOPSIS -.In utf8.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 deleted file mode 100644 index eabf2a2..0000000 --- a/vendor/librune/man/u8next.3 +++ /dev/null @@ -1,107 +0,0 @@ -.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 utf8.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 deleted file mode 100644 index cf1364e..0000000 --- a/vendor/librune/man/u8prev.3 +++ /dev/null @@ -1 +0,0 @@ -.so u8next diff --git a/vendor/librune/man/u8set.3 b/vendor/librune/man/u8set.3 deleted file mode 100644 index d579b0b..0000000 --- a/vendor/librune/man/u8set.3 +++ /dev/null @@ -1,103 +0,0 @@ -.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 utf8.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 deleted file mode 100644 index 147f7c1..0000000 --- a/vendor/librune/man/u8tor.3 +++ /dev/null @@ -1,90 +0,0 @@ -.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 utf8.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 deleted file mode 100644 index 1527e52..0000000 --- a/vendor/librune/man/u8tor_uc.3 +++ /dev/null @@ -1 +0,0 @@ -.so u8tor.3 diff --git a/vendor/librune/man/u8wdth.3 b/vendor/librune/man/u8wdth.3 deleted file mode 100644 index 60fcada..0000000 --- a/vendor/librune/man/u8wdth.3 +++ /dev/null @@ -1,69 +0,0 @@ -.Dd January 16 2024 -.Dt U8WDTH 3 -.Os -.Sh NAME -.Nm u8wdth -.Nd Unicode codepoint width -.Sh LIBRARY -.Lb librune -.Sh SYNOPSIS -.In utf8.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 deleted file mode 100644 index 5a7c00d..0000000 --- a/vendor/librune/test/gbrk.c +++ /dev/null @@ -1,85 +0,0 @@ -#define _POSIX_C_SOURCE 200809L -#include <err.h> -#include <locale.h> -#include <stdio.h> -#include <stdlib.h> - -#include <gbrk.h> -#include <rune.h> -#include <utf8.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 deleted file mode 100755 index 5affe3a..0000000 --- a/vendor/librune/test/tests +++ /dev/null @@ -1,39 +0,0 @@ -#!/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 diff --git a/vendor/mlib b/vendor/mlib new file mode 160000 +Subproject 5dbf53a1c512f9163744874e3d502e9f9e2808d |