aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makeconfig8
-rw-r--r--NEWS13
-rw-r--r--Rules23
-rw-r--r--SHARED-FILES19
-rw-r--r--benchtests/Makefile1
-rw-r--r--benchtests/tgammaf-inputs1006
-rw-r--r--bits/libm-simd-decl-stubs.h11
-rw-r--r--config.h.in3
-rwxr-xr-xconfigure92
-rw-r--r--configure.ac37
-rw-r--r--conform/Makefile2
-rw-r--r--debug/Makefile19
-rw-r--r--debug/pcprofiledump.c83
-rw-r--r--debug/test-strcpy_chk.c6
-rw-r--r--debug/tst-fortify-wide.c4
-rw-r--r--debug/tst-fortify.c4
-rw-r--r--dirent/Makefile23
-rw-r--r--dirent/tst-closedir-leaks.c77
-rw-r--r--dirent/tst-readdir-long.c231
-rw-r--r--dirent/tst-readdir-zero-inode.c134
-rw-r--r--dirent/tst-rewinddir.c207
-rw-r--r--elf/Makefile8
-rw-r--r--elf/dl-fptr.c322
-rw-r--r--elf/dl-load.c30
-rw-r--r--elf/dl-lookup.c19
-rw-r--r--elf/dl-misc.c4
-rw-r--r--elf/dl-open.c26
-rw-r--r--elf/rtld.c28
-rw-r--r--elf/tst-ldconfig-bad-aux-cache.c2
-rw-r--r--elf/tst-startup-errno.c (renamed from sysdeps/generic/dl-fptr.h)69
-rw-r--r--iconv/Makefile27
-rw-r--r--iconv/gconv_int.h30
-rw-r--r--iconv/gconv_simple.c18
-rw-r--r--iconv/gconv_trans.c2
-rw-r--r--iconv/iconv_prog.c547
-rw-r--r--iconv/loop.c5
-rw-r--r--iconv/tst-iconv-sticky-input-error.c135
-rw-r--r--iconv/tst-iconv_prog-buffer.sh306
-rw-r--r--iconvdata/cp932.c6
-rw-r--r--iconvdata/euc-jp-ms.c8
-rw-r--r--iconvdata/gbbig5.c4
-rw-r--r--iconvdata/ibm1364.c8
-rw-r--r--iconvdata/iso646.c154
-rw-r--r--iconvdata/unicode.c2
-rw-r--r--iconvdata/utf-16.c2
-rw-r--r--iconvdata/utf-32.c2
-rw-r--r--include/bits/unistd_ext.h3
-rw-r--r--include/errno.h2
-rw-r--r--include/libc-internal.h3
-rw-r--r--include/stdlib.h7
-rw-r--r--inet/Makefile1
-rw-r--r--inet/netinet/in.h2
-rw-r--r--inet/tst-if_nameindex.c117
-rw-r--r--intl/dcigettext.c2
-rw-r--r--io/Makefile6
-rw-r--r--io/bits/statx-generic.h2
-rw-r--r--io/tst-copy_file_range.c2
-rw-r--r--io/tst-fchmod-errors.c63
-rw-r--r--io/tst-fchmod-fuse.c114
-rw-r--r--io/tst-futimens-time64.c1
-rw-r--r--io/tst-futimens.c13
-rw-r--r--io/tst-futimes-time64.c1
-rw-r--r--io/tst-futimes.c13
-rw-r--r--io/tst-futimesat-time64.c3
-rw-r--r--io/tst-futimesat.c30
-rw-r--r--io/tst-lstat-nofollow-time64.c1
-rw-r--r--io/tst-lstat-nofollow.c98
-rw-r--r--io/tst-lutimes-time64.c1
-rw-r--r--io/tst-lutimes.c26
-rw-r--r--io/tst-mkdirat.c42
-rw-r--r--io/tst-statx.c4
-rw-r--r--io/tst-utime-time64.c1
-rw-r--r--io/tst-utime.c13
-rw-r--r--io/tst-utimensat-time64.c1
-rw-r--r--io/tst-utimensat.c35
-rw-r--r--io/tst-utimes-time64.c1
-rw-r--r--io/tst-utimes.c13
-rw-r--r--libio/Makefile20
-rw-r--r--libio/freopen.c13
-rw-r--r--libio/freopen64.c9
-rw-r--r--libio/genops.c8
-rw-r--r--libio/libioP.h4
-rw-r--r--libio/oldfileops.c4
-rw-r--r--libio/tst-fclose-unopened.c42
-rw-r--r--libio/tst-fclose-unopened2.c51
-rw-r--r--libio/tst-fclose-unopened2.input1
-rw-r--r--libio/tst-fopen-compat.c85
-rw-r--r--libio/tst-getdelim.c22
-rw-r--r--locale/programs/ld-collate.c2
-rw-r--r--locale/programs/ld-ctype.c2
-rw-r--r--locale/programs/ld-measurement.c2
-rw-r--r--locale/programs/ld-numeric.c2
-rw-r--r--locale/programs/ld-paper.c2
-rw-r--r--locale/programs/ld-telephone.c2
-rw-r--r--locale/programs/ld-time.c2
-rw-r--r--locale/tst-localedef-path-norm.c2
-rw-r--r--localedata/charmaps/UTF-85221
-rw-r--r--localedata/locales/i18n_ctype2977
-rw-r--r--localedata/locales/tr_TR2977
-rw-r--r--localedata/locales/translit_circle2
-rw-r--r--localedata/locales/translit_cjk_compat2
-rw-r--r--localedata/locales/translit_combining118
-rw-r--r--localedata/locales/translit_compat2
-rw-r--r--localedata/locales/translit_font38
-rw-r--r--localedata/locales/translit_fraction2
-rw-r--r--localedata/tst-localedef-hardlinks.c2
-rw-r--r--localedata/unicode-gen/DerivedCoreProperties.txt834
-rw-r--r--localedata/unicode-gen/EastAsianWidth.txt115
-rw-r--r--localedata/unicode-gen/HangulSyllableType.txt8
-rw-r--r--localedata/unicode-gen/Makefile2
-rw-r--r--localedata/unicode-gen/UnicodeData.txt5203
-rwxr-xr-xlocaledata/unicode-gen/ctype_compatibility.py2
-rw-r--r--localedata/unicode-gen/ctype_compatibility_test_cases.py2
-rwxr-xr-xlocaledata/unicode-gen/utf8_compatibility.py2
-rwxr-xr-xlocaledata/unicode-gen/utf8_gen.py2
-rw-r--r--malloc/Makefile6
-rw-r--r--manual/Makefile31
-rw-r--r--manual/charset.texi18
-rw-r--r--manual/check-deftype.sh50
-rw-r--r--manual/filesys.texi196
-rw-r--r--manual/ipc.texi28
-rw-r--r--manual/llio.texi67
-rw-r--r--manual/macros.texi7
-rw-r--r--manual/memory.texi2
-rw-r--r--manual/resource.texi115
-rw-r--r--manual/startup.texi17
-rw-r--r--manual/stdio.texi75
-rw-r--r--manual/threads.texi2
-rw-r--r--manual/time.texi18
-rw-r--r--math/Makefile1
-rw-r--r--math/bits/mathcalls.h2
-rw-r--r--math/test-nan-payload.c112
-rw-r--r--math/w_tgammaf_compat.c6
-rw-r--r--misc/Makefile7
-rw-r--r--misc/tst-mkstemp-fuse-parallel.c219
-rw-r--r--misc/tst-mkstemp-fuse.c197
-rw-r--r--misc/tst-preadvwritev2-common.c5
-rw-r--r--nptl/Makefile10
-rw-r--r--nptl/cancellation.c127
-rw-r--r--nptl/cleanup_defer.c5
-rw-r--r--nptl/descr-const.sym6
-rw-r--r--nptl/descr.h18
-rw-r--r--nptl/libc-cleanup.c5
-rw-r--r--nptl/pthread_cancel.c78
-rw-r--r--nptl/pthread_exit.c4
-rw-r--r--nptl/pthread_kill.c11
-rw-r--r--nptl/pthread_setcancelstate.c2
-rw-r--r--nptl/pthread_setcanceltype.c2
-rw-r--r--nptl/pthread_testcancel.c5
-rw-r--r--nptl/tst-cancel31.c100
-rw-r--r--nptl/tst-cancel7.c12
-rw-r--r--nptl/tst-setuid2.c5
-rw-r--r--posix/fork.c2
-rw-r--r--posix/tst-execveat.c2
-rw-r--r--rt/Makefile2
-rw-r--r--rt/tst-clock_nanosleep2-time64.c1
-rw-r--r--rt/tst-clock_nanosleep2.c255
-rwxr-xr-xscripts/build-many-glibcs.py5
-rwxr-xr-xscripts/cross-test-ssh.sh18
-rw-r--r--signal/sigaction.c15
-rw-r--r--stdio-common/Makefile97
-rw-r--r--stdio-common/tst-fdopen2.c246
-rw-r--r--stdio-common/tst-fgets2.c253
-rw-r--r--stdio-common/tst-fread.c134
-rw-r--r--stdio-common/tst-freopen2-main.c519
-rw-r--r--stdio-common/tst-freopen2.c3
-rw-r--r--stdio-common/tst-freopen3-main.c92
-rw-r--r--stdio-common/tst-freopen3.c2
-rw-r--r--stdio-common/tst-freopen4-main.c102
-rw-r--r--stdio-common/tst-freopen4.c2
-rw-r--r--stdio-common/tst-freopen5.c144
-rw-r--r--stdio-common/tst-freopen6-main.c98
-rw-r--r--stdio-common/tst-freopen6.c2
-rw-r--r--stdio-common/tst-freopen64-2.c3
-rw-r--r--stdio-common/tst-freopen64-3.c2
-rw-r--r--stdio-common/tst-freopen64-4.c2
-rw-r--r--stdio-common/tst-freopen64-6.c2
-rw-r--r--stdio-common/tst-freopen64-7.c2
-rw-r--r--stdio-common/tst-freopen7-main.c155
-rw-r--r--stdio-common/tst-freopen7.c2
-rw-r--r--stdio-common/tst-fwrite-memstrm.c177
-rw-r--r--stdio-common/tst-fwrite-overflow.c130
-rw-r--r--stdio-common/tst-fwrite-ro.c65
-rw-r--r--stdio-common/tst-getline-enomem.c78
-rw-r--r--stdio-common/tst-getline.c451
-rw-r--r--stdio-common/tst-renameat2.c2
-rw-r--r--stdio-common/tst-ungetc-leak.c (renamed from sysdeps/aarch64/memset-reg.h)30
-rw-r--r--stdio-common/tst-ungetc.c114
-rw-r--r--stdlib/abort.c138
-rw-r--r--stdlib/gen-tst-strtod-round.c43
-rw-r--r--stdlib/strtod_l.c2
-rw-r--r--stdlib/strtod_nan_main.c3
-rw-r--r--stdlib/tst-strtod-round-data12
-rw-r--r--stdlib/tst-strtod-round-data.h15858
-rw-r--r--stdlib/tst-strtod-round-skeleton.c98
-rw-r--r--stdlib/tst-strtod-underflow.c357
-rw-r--r--stdlib/tst-strtod1i.c129
-rw-r--r--stdlib/tst-strtod2.c135
-rw-r--r--stdlib/tst-strtod3.c102
-rw-r--r--stdlib/tst-strtod4.c104
-rw-r--r--stdlib/tst-strtod5.c116
-rw-r--r--stdlib/tst-strtod5i.c158
-rw-r--r--stdlib/tst-system.c2
-rw-r--r--string/strerror_l.c35
-rw-r--r--string/strsignal.c36
-rw-r--r--string/test-strchr.c65
-rw-r--r--support/Makefile23
-rw-r--r--support/bundled/README5
-rw-r--r--support/bundled/linux/COPYING20
-rw-r--r--support/bundled/linux/LICENSES/exceptions/Linux-syscall-note24
-rw-r--r--support/bundled/linux/LICENSES/preferred/GPL-2.0359
-rw-r--r--support/bundled/linux/include/uapi/linux/fuse.h1189
-rw-r--r--support/file_contents.h63
-rw-r--r--support/fuse.h217
-rw-r--r--support/readdir.h85
-rw-r--r--support/support_check_stat_fd.c (renamed from support/support-xfstat.c)11
-rw-r--r--support/support_check_stat_path.c (renamed from support/xlstat.c)9
-rw-r--r--support/support_compare_file_bytes.c (renamed from elf/dl-symaddr.c)37
-rw-r--r--support/support_compare_file_string.c28
-rw-r--r--support/support_format_addrinfo.c1
-rw-r--r--support/support_fuse.c706
-rw-r--r--support/support_open_and_compare_file_bytes.c (renamed from support/support-xfstat-time64.c)25
-rw-r--r--support/support_open_and_compare_file_string.c32
-rw-r--r--support/support_readdir.c318
-rw-r--r--support/support_readdir_check.c30
-rw-r--r--support/support_readdir_r_check.c (renamed from support/support-xstat-time64.c)25
-rw-r--r--support/support_test_compare_failure.c11
-rw-r--r--support/test-driver.c1
-rw-r--r--support/timespec-add.c1
-rw-r--r--support/timespec-sub.c1
-rw-r--r--support/tst-support_fuse.c349
-rw-r--r--support/tst-support_readdir.c73
-rw-r--r--support/tst-xdirent.c76
-rw-r--r--support/xclosedir.c28
-rw-r--r--support/xdirent.h86
-rw-r--r--support/xfdopendir.c30
-rw-r--r--support/xopendir.c30
-rw-r--r--support/xstatx.c (renamed from support/support-xstat.c)16
-rw-r--r--support/xunistd.h32
-rw-r--r--sysdeps/aarch64/fpu/Versions7
-rw-r--r--sysdeps/aarch64/fpu/acoshf_advsimd.c34
-rw-r--r--sysdeps/aarch64/fpu/advsimd_f32_protos.h1
-rw-r--r--sysdeps/aarch64/fpu/asinhf_advsimd.c33
-rw-r--r--sysdeps/aarch64/fpu/atanhf_advsimd.c26
-rw-r--r--sysdeps/aarch64/fpu/bits/math-vector.h8
-rw-r--r--sysdeps/aarch64/fpu/cos_advsimd.c11
-rw-r--r--sysdeps/aarch64/fpu/cosf_advsimd.c9
-rw-r--r--sysdeps/aarch64/fpu/coshf_sve.c35
-rw-r--r--sysdeps/aarch64/fpu/exp10f_sve.c83
-rw-r--r--sysdeps/aarch64/fpu/exp2f_sve.c70
-rw-r--r--sysdeps/aarch64/fpu/expf_advsimd.c10
-rw-r--r--sysdeps/aarch64/fpu/expf_sve.c62
-rw-r--r--sysdeps/aarch64/fpu/expm1f_advsimd.c62
-rw-r--r--sysdeps/aarch64/fpu/log10f_advsimd.c38
-rw-r--r--sysdeps/aarch64/fpu/log10f_sve.c41
-rw-r--r--sysdeps/aarch64/fpu/log1p_advsimd.c2
-rw-r--r--sysdeps/aarch64/fpu/log1p_sve.c2
-rw-r--r--sysdeps/aarch64/fpu/log1pf_advsimd.c124
-rw-r--r--sysdeps/aarch64/fpu/log1pf_sve.c2
-rw-r--r--sysdeps/aarch64/fpu/log2f_advsimd.c38
-rw-r--r--sysdeps/aarch64/fpu/log2f_sve.c37
-rw-r--r--sysdeps/aarch64/fpu/logf_advsimd.c41
-rw-r--r--sysdeps/aarch64/fpu/logf_sve.c38
-rw-r--r--sysdeps/aarch64/fpu/sin_advsimd.c16
-rw-r--r--sysdeps/aarch64/fpu/sinf_advsimd.c22
-rw-r--r--sysdeps/aarch64/fpu/sinhf_advsimd.c23
-rw-r--r--sysdeps/aarch64/fpu/sv_expf_inline.h34
-rw-r--r--sysdeps/aarch64/fpu/tanhf_advsimd.c21
-rw-r--r--sysdeps/aarch64/fpu/v_expm1f_inline.h43
-rw-r--r--sysdeps/aarch64/fpu/v_log1pf_inline.h71
-rw-r--r--sysdeps/aarch64/libm-test-ulps4
-rw-r--r--sysdeps/aarch64/memset.S194
-rw-r--r--sysdeps/aarch64/multiarch/memset_a64fx.S9
-rw-r--r--sysdeps/aarch64/multiarch/memset_emag.S8
-rw-r--r--sysdeps/aarch64/multiarch/memset_kunpeng.S7
-rw-r--r--sysdeps/aarch64/multiarch/memset_oryon1.S8
-rw-r--r--sysdeps/alpha/fpu/libm-test-ulps4
-rw-r--r--sysdeps/arc/bits/endianness.h8
-rw-r--r--sysdeps/arc/configure13
-rw-r--r--sysdeps/arc/configure.ac9
-rw-r--r--sysdeps/arc/fpu/libm-test-ulps68
-rw-r--r--sysdeps/arc/nofpu/libm-test-ulps18
-rw-r--r--sysdeps/arm/libm-test-ulps4
-rw-r--r--sysdeps/csky/fpu/libm-test-ulps4
-rw-r--r--sysdeps/csky/nofpu/libm-test-ulps4
-rw-r--r--sysdeps/generic/internal-signals.h27
-rw-r--r--sysdeps/generic/internal-sigset.h26
-rw-r--r--sysdeps/generic/syscall_types.h25
-rw-r--r--sysdeps/hppa/dl-fptr.h23
-rw-r--r--sysdeps/hppa/fpu/libm-test-ulps46
-rw-r--r--sysdeps/htl/pthreadP.h2
-rw-r--r--sysdeps/i386/fpu/libm-test-ulps10
-rw-r--r--sysdeps/i386/i686/fpu/multiarch/libm-test-ulps6
-rw-r--r--sysdeps/i386/i686/multiarch/s_fma-fma.c2
-rw-r--r--sysdeps/i386/i686/multiarch/s_fma.c2
-rw-r--r--sysdeps/i386/i686/multiarch/s_fmaf-fma.c2
-rw-r--r--sysdeps/i386/i686/multiarch/s_fmaf.c2
-rw-r--r--sysdeps/ieee754/dbl-64/gamma_productf.c45
-rw-r--r--sysdeps/ieee754/flt-32/e_gammaf_r.c321
-rw-r--r--sysdeps/ieee754/flt-32/math_config.h2
-rw-r--r--sysdeps/loongarch/dl-machine.h7
-rw-r--r--sysdeps/loongarch/dl-tlsdesc-dynamic.h222
-rw-r--r--sysdeps/loongarch/dl-tlsdesc.S398
-rw-r--r--sysdeps/loongarch/dl-tlsdesc.h4
-rw-r--r--sysdeps/loongarch/lp64/libm-test-ulps68
-rw-r--r--sysdeps/loongarch/tlsdesc.sym9
-rw-r--r--sysdeps/m68k/coldfire/fpu/libm-test-ulps1
-rw-r--r--sysdeps/m68k/m680x0/fpu/libm-test-ulps4
-rw-r--r--sysdeps/mach/hurd/faccessat.c9
-rw-r--r--sysdeps/mach/hurd/fcntl.c6
-rw-r--r--sysdeps/mach/hurd/x86_64/vm_param.h2
-rw-r--r--sysdeps/mach/sleep.c3
-rw-r--r--sysdeps/microblaze/libm-test-ulps1
-rw-r--r--sysdeps/mips/mips32/libm-test-ulps44
-rw-r--r--sysdeps/mips/mips64/libm-test-ulps66
-rw-r--r--sysdeps/nios2/libm-test-ulps1
-rw-r--r--sysdeps/nptl/_Fork.c9
-rw-r--r--sysdeps/nptl/cancellation-pc-check.h54
-rw-r--r--sysdeps/nptl/lowlevellock-futex.h20
-rw-r--r--sysdeps/nptl/pthreadP.h12
-rw-r--r--sysdeps/or1k/fpu/libm-test-ulps4
-rw-r--r--sysdeps/or1k/nofpu/libm-test-ulps4
-rw-r--r--sysdeps/posix/profil.c6
-rw-r--r--sysdeps/posix/tempname.c2
-rw-r--r--sysdeps/powerpc/fpu/libm-test-ulps28
-rw-r--r--sysdeps/powerpc/nofpu/libm-test-ulps58
-rw-r--r--sysdeps/powerpc/powerpc32/sysdep.h3
-rw-r--r--sysdeps/powerpc/powerpc64/le/Makefile4
-rw-r--r--sysdeps/powerpc/powerpc64/le/power9/strcpy.S276
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strcat-power7.c4
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strcat-power8.c4
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strcat-ppc64.c4
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strncat-power7.c4
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strncat-power8.c2
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strncat-ppc64.c4
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strncpy.c4
-rw-r--r--sysdeps/powerpc/powerpc64/sysdep.h19
-rw-r--r--sysdeps/pthread/tst-cancel2.c4
-rw-r--r--sysdeps/riscv/nofpu/libm-test-ulps4
-rw-r--r--sysdeps/riscv/rvd/libm-test-ulps68
-rw-r--r--sysdeps/riscv/start.S1
-rw-r--r--sysdeps/s390/fpu/libm-test-ulps68
-rw-r--r--sysdeps/s390/utf16-utf32-z9.c8
-rw-r--r--sysdeps/s390/utf8-utf16-z9.c12
-rw-r--r--sysdeps/s390/utf8-utf32-z9.c12
-rw-r--r--sysdeps/sh/libm-test-ulps2
-rw-r--r--sysdeps/sh/sysdep.h1
-rw-r--r--sysdeps/sparc/fpu/libm-test-ulps4
-rw-r--r--sysdeps/unix/sysdep.h173
-rw-r--r--sysdeps/unix/sysv/linux/Makefile13
-rw-r--r--sysdeps/unix/sysv/linux/Versions4
-rw-r--r--sysdeps/unix/sysv/linux/aarch64/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/aarch64/libmvec.abilist5
-rw-r--r--sysdeps/unix/sysv/linux/aarch64/syscall_cancel.S59
-rw-r--r--sysdeps/unix/sysv/linux/alpha/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/alpha/syscall_cancel.S80
-rw-r--r--sysdeps/unix/sysv/linux/arc/Makefile9
-rw-r--r--sysdeps/unix/sysv/linux/arc/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/arc/shlib-versions4
-rw-r--r--sysdeps/unix/sysv/linux/arc/syscall_cancel.S56
-rw-r--r--sysdeps/unix/sysv/linux/arm/be/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/arm/le/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/arm/syscall_cancel.S78
-rw-r--r--sysdeps/unix/sysv/linux/bits/mman-linux.h1
-rw-r--r--sysdeps/unix/sysv/linux/bits/sched.h58
-rw-r--r--sysdeps/unix/sysv/linux/bits/uio-ext.h2
-rw-r--r--sysdeps/unix/sysv/linux/csky/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/csky/syscall_cancel.S114
-rw-r--r--sysdeps/unix/sysv/linux/getdents64.c97
-rw-r--r--sysdeps/unix/sysv/linux/gettimeofday.c8
-rw-r--r--sysdeps/unix/sysv/linux/hppa/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/hppa/syscall_cancel.S81
-rw-r--r--sysdeps/unix/sysv/linux/i386/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/i386/syscall_cancel.S104
-rw-r--r--sysdeps/unix/sysv/linux/include/bits/mman-shared.h16
-rw-r--r--sysdeps/unix/sysv/linux/internal-signals.h9
-rw-r--r--sysdeps/unix/sysv/linux/internal-sigset.h2
-rw-r--r--sysdeps/unix/sysv/linux/loongarch/fixup-asm-unistd.h21
-rw-r--r--sysdeps/unix/sysv/linux/loongarch/lp64/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/loongarch/syscall_cancel.S50
-rw-r--r--sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/m68k/syscall_cancel.S84
-rw-r--r--sysdeps/unix/sysv/linux/microblaze/be/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/microblaze/le/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/microblaze/syscall_cancel.S61
-rw-r--r--sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/mips/mips32/syscall_cancel.S128
-rw-r--r--sysdeps/unix/sysv/linux/mips/mips32/sysdep.h4
-rw-r--r--sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/mips/mips64/n32/syscall_types.h28
-rw-r--r--sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/mips/mips64/syscall_cancel.S112
-rw-r--r--sysdeps/unix/sysv/linux/mips/mips64/sysdep.h52
-rw-r--r--sysdeps/unix/sysv/linux/nios2/arch-syscall.h1
-rw-r--r--sysdeps/unix/sysv/linux/nios2/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/nios2/syscall_cancel.S95
-rw-r--r--sysdeps/unix/sysv/linux/olddirent.h2
-rw-r--r--sysdeps/unix/sysv/linux/or1k/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/or1k/syscall_cancel.S63
-rw-r--r--sysdeps/unix/sysv/linux/pkey_get.c5
-rw-r--r--sysdeps/unix/sysv/linux/pkey_mprotect.c4
-rw-r--r--sysdeps/unix/sysv/linux/pkey_set.c5
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/cancellation-pc-check.h65
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/pkey_get.c4
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/pkey_set.c4
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/syscall_cancel.S86
-rw-r--r--sysdeps/unix/sysv/linux/readdir64.c90
-rw-r--r--sysdeps/unix/sysv/linux/readdir64_r.c127
-rw-r--r--sysdeps/unix/sysv/linux/readdir_r.c11
-rw-r--r--sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/riscv/syscall_cancel.S67
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-32/syscall_cancel.S62
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-64/syscall_cancel.S62
-rw-r--r--sysdeps/unix/sysv/linux/sched_getattr.c27
-rw-r--r--sysdeps/unix/sysv/linux/sched_setattr.c26
-rw-r--r--sysdeps/unix/sysv/linux/sh/be/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/sh/le/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/sh/syscall_cancel.S126
-rw-r--r--sysdeps/unix/sysv/linux/socketcall.h35
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc32/clone.S4
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc32/syscall_cancel.S80
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc64/syscall_cancel.S74
-rw-r--r--sysdeps/unix/sysv/linux/spawni.c8
-rw-r--r--sysdeps/unix/sysv/linux/sys/pidfd.h14
-rw-r--r--sysdeps/unix/sysv/linux/syscall-names.list5
-rw-r--r--sysdeps/unix/sysv/linux/syscall_cancel.c73
-rw-r--r--sysdeps/unix/sysv/linux/syscalls.list4
-rw-r--r--sysdeps/unix/sysv/linux/sysdep-cancel.h12
-rw-r--r--sysdeps/unix/sysv/linux/time.c7
-rw-r--r--sysdeps/unix/sysv/linux/tst-mman-consts.py2
-rwxr-xr-xsysdeps/unix/sysv/linux/tst-mount-consts.py2
-rw-r--r--sysdeps/unix/sysv/linux/tst-pidfd-consts.py2
-rw-r--r--sysdeps/unix/sysv/linux/tst-rseq-nptl.c9
-rw-r--r--sysdeps/unix/sysv/linux/tst-sched-consts.py56
-rw-r--r--sysdeps/unix/sysv/linux/tst-sched_setattr.c107
-rw-r--r--sysdeps/unix/sysv/linux/tst-skeleton-affinity.c2
-rw-r--r--sysdeps/unix/sysv/linux/x86/pkey_get.c5
-rw-r--r--sysdeps/unix/sysv/linux/x86/pkey_set.c5
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/64/arch-syscall.h1
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/64/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/syscall_cancel.S57
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/x32/arch-syscall.h1
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/x32/syscall_types.h (renamed from support/xlstat-time64.c)28
-rw-r--r--sysdeps/x86/cpu-features.c44
-rw-r--r--sysdeps/x86/cpu-tunables.c2
-rw-r--r--sysdeps/x86/dl-cacheinfo.h109
-rw-r--r--sysdeps/x86/include/cpu-features-preferred_feature_index_1.def1
-rw-r--r--sysdeps/x86/include/cpu-features.h1
-rw-r--r--sysdeps/x86/tst-hwcap-tunables.c6
-rw-r--r--sysdeps/x86_64/fpu/libm-test-ulps4
-rw-r--r--sysdeps/x86_64/fpu/multiarch/s_fma.c2
-rw-r--r--sysdeps/x86_64/fpu/multiarch/s_fmaf.c2
-rw-r--r--sysdeps/x86_64/multiarch/ifunc-memset.h18
-rw-r--r--sysdeps/x86_64/multiarch/strchr-evex-base.S8
-rw-r--r--sysdeps/x86_64/multiarch/strcmp-evex.S26
-rw-r--r--sysdeps/x86_64/multiarch/strnlen-evex-base.S462
-rw-r--r--sysdeps/x86_64/multiarch/strnlen-evex.S428
-rw-r--r--sysdeps/x86_64/multiarch/strnlen-evex512.S259
-rw-r--r--sysdeps/x86_64/nptl/tcb-offsets.sym3
-rw-r--r--timezone/private.h114
-rw-r--r--timezone/tzfile.h8
-rwxr-xr-xtimezone/tzselect.ksh125
-rw-r--r--timezone/zdump.c10
-rw-r--r--timezone/zic.c31
-rw-r--r--wcsmbs/Makefile2
477 files changed, 41051 insertions, 15507 deletions
diff --git a/Makeconfig b/Makeconfig
index 2d4343b..a0abc22 100644
--- a/Makeconfig
+++ b/Makeconfig
@@ -888,7 +888,7 @@ host-test-program-cmd = $(host-built-program-cmd)
endif
# Extra flags to pass to GCC.
-+gccwarn := -Wall -Wwrite-strings -Wundef
++gccwarn := -Wall -Wwrite-strings -Wundef $(cc-option-wimplicit-fallthrough)
ifeq ($(enable-werror),yes)
+gccwarn += -Werror
endif
@@ -1011,6 +1011,12 @@ else
+cflags += $(no-fortify-source)
endif
+# Filter out LFS flags if compiler defines it by default.
++cflags += $(no-file-offset-bits-source)
+
+# Filter out 64 bit time_t flags if compiler defines it by default.
++cflags += $(no-time-bits-source)
+
# Each sysdeps directory can contain header files that both will be
# used to compile and will be installed. Each can also contain an
# include/ subdirectory, whose header files will be used to compile
diff --git a/NEWS b/NEWS
index d488874..2fe0396 100644
--- a/NEWS
+++ b/NEWS
@@ -25,9 +25,20 @@ Major new features:
which is why this mode is not enabled by default. A future version
of the library may turn it on by default, however.
+* On Linux, the sched_setattr and sched_getattr have been added, for
+ supporting parameterized scheduling policies such as SCHED_DEADLINE.
+
+* The iconv program now supports converting files in place. The program
+ automatically uses a temporary file if required.
+
Deprecated and removed features, and other changes affecting compatibility:
- [Add deprecations, removals and changes affecting compatibility here]
+* The big-endian ARC port (arceb-linux-gnu) has been removed.
+
+* The abort is now async-signal-safe and its implementation makes longjmp
+ from the SIGABRT handler always abort if set up with setjmp. Use sigsetjmp
+ to keep the old behavior, where the handler does not stop the process
+ execution.
Changes to build and runtime requirements:
diff --git a/Rules b/Rules
index 9010c5d..713c225 100644
--- a/Rules
+++ b/Rules
@@ -143,14 +143,21 @@ endif
others: $(py-const)
ifeq ($(run-built-tests),no)
+# The $(xtests) dependency ensures that xtests are always built.
tests: $(addprefix $(objpfx),$(filter-out $(tests-unsupported), \
- $(tests) $(tests-internal) \
- $(tests-container)) \
+ $(tests) $(tests-internal) $(xtests) \
+ $(tests-container) \
+ $(tests-mcheck:%=%-mcheck) \
+ $(tests-malloc-check:%=%-malloc-check) \
+ $(tests-malloc-hugetlb1:%=%-malloc-hugetlb1) \
+ $(tests-malloc-hugetlb2:%=%-malloc-hugetlb2)) \
$(test-srcs)) $(tests-special) \
$(tests-printers-programs)
xtests: tests $(xtests-special)
-else
+else # $(run-built-tests) != no
+# The $(xtests) dependency ensures that xtests are always built.
tests: $(tests:%=$(objpfx)%.out) $(tests-internal:%=$(objpfx)%.out) \
+ $(addprefix $(objpfx),$(filter-out $(tests-unsupported), $(xtests))) \
$(tests-container:%=$(objpfx)%.out) \
$(tests-mcheck:%=$(objpfx)%-mcheck.out) \
$(tests-malloc-check:%=$(objpfx)%-malloc-check.out) \
@@ -158,26 +165,28 @@ tests: $(tests:%=$(objpfx)%.out) $(tests-internal:%=$(objpfx)%.out) \
$(tests-malloc-hugetlb2:%=$(objpfx)%-malloc-hugetlb2.out) \
$(tests-special) $(tests-printers-out)
xtests: tests $(xtests:%=$(objpfx)%.out) $(xtests-special)
-endif
+endif # $(run-built-tests) != no
tests-special-notdir = $(patsubst $(objpfx)%, %, $(tests-special))
xtests-special-notdir = $(patsubst $(objpfx)%, %, $(xtests-special))
ifeq ($(run-built-tests),no)
tests-expected =
-else
+xtests-expected =
+else # $(run-built-tests) != no
tests-expected = $(tests) $(tests-internal) $(tests-printers) \
$(tests-container) $(tests-malloc-check:%=%-malloc-check) \
$(tests-malloc-hugetlb1:%=%-malloc-hugetlb1) \
$(tests-malloc-hugetlb2:%=%-malloc-hugetlb2) \
$(tests-mcheck:%=%-mcheck)
-endif
+xtests-expected = $(xtests)
+endif # $(run-built-tests) != no
tests:
$(..)scripts/merge-test-results.sh -s $(objpfx) $(subdir) \
$(sort $(tests-expected) $(tests-special-notdir:.out=)) \
> $(objpfx)subdir-tests.sum
xtests:
$(..)scripts/merge-test-results.sh -s $(objpfx) $(subdir) \
- $(sort $(xtests) $(xtests-special-notdir:.out=)) \
+ $(sort $(xtests-expected) $(xtests-special-notdir:.out=)) \
> $(objpfx)subdir-xtests.sum
ifeq ($(build-programs),yes)
diff --git a/SHARED-FILES b/SHARED-FILES
index cb0356c..2aefac8 100644
--- a/SHARED-FILES
+++ b/SHARED-FILES
@@ -169,7 +169,7 @@ gettext:
# The following files are shared with the upstream Unicode project and must be
# updated regularly to stay in sync with the upstream unicode releases.
#
-# Merged from Unicode 15.1.0 release.
+# Merged from Unicode 16.0.0 release.
unicode:
localedata/unicode-gen/UnicodeData.txt
localedata/unicode-gen/unicode-license.txt
@@ -180,9 +180,8 @@ unicode:
# The following files are shared with the upstream tzcode project and must be
# updated regularly to stay in sync with the upstream releases.
#
-# Currently synced to TZDB 2024a, announced and distributed here:
-# https://mm.icann.org/pipermail/tz-announce/2024-February/000081.html
-# https://data.iana.org/time-zones/releases/tzdb-2024a.tar.lz
+# Currently synced to TZDB 2024b, announced and distributed here:
+# https://github.com/eggert/tz/releases/tag/2024b
tzcode:
timezone/private.h
timezone/tzfile.h
@@ -220,3 +219,15 @@ tzdata:
timezone/leapseconds
# This is yearistype.sh in the parent project
timezone/yearistype
+
+# The following files are shared with the CORE-MATH project
+sysdeps/ieee754/flt-32/e_gammaf_r.c
+ (file src/binary32/tgamma/tgammaf.c in CORE-MATH)
+ Instructions to merge new versions:
+ - change the function name from cr_tgammaf to __ieee754_gammaf_r
+ - add "int *signgamp" as 2nd argument and add at the beginning:
+ if (signgamp != NULL) *signgamp = 1;
+ - remove the errno stuff (this is done by the wrapper)
+ - replace 0x1p127f * 0x1p127f by math_narrow_eval (x * 0x1p127f)
+ - replace 0x1p-127f * sgn[k&1] by math_narrow_eval (0x1p-127f * sgn[k&1])
+ - add libm_alias_finite (__ieee754_gammaf_r, __gammaf_r) at the end
diff --git a/benchtests/Makefile b/benchtests/Makefile
index d228e9e..79d802a 100644
--- a/benchtests/Makefile
+++ b/benchtests/Makefile
@@ -94,6 +94,7 @@ bench-math := \
tan \
tanh \
tgamma \
+ tgammaf \
trunc \
truncf \
y0 \
diff --git a/benchtests/tgammaf-inputs b/benchtests/tgammaf-inputs
new file mode 100644
index 0000000..b2baf5c
--- /dev/null
+++ b/benchtests/tgammaf-inputs
@@ -0,0 +1,1006 @@
+## includes: math.h
+## args: float
+## ret: float
+
+# Random inputs in [-a,a=0x1.18522ep+5)
+# where a is the smallest number such that tgammaf rounds to +Inf (to nearest)
+0x1.714acp+2
+0x1.0f4884p+4
+-0x1.16b54p+1
+0x1.238ef4p+4
+0x1.4896ap+4
+-0x1.714e7p+2
+0x1.c254cp+4
+0x1.c76928p+3
+0x1.0b82acp+5
+-0x1.a4d6dp+2
+0x1.16f3ap+2
+0x1.43a5bp+2
+-0x1.da2ef8p+4
+0x1.f7c01p+2
+0x1.f5b698p+4
+-0x1.3dcbccp+3
+0x1.34238p+3
+-0x1.0b6364p+5
+-0x1.1c820cp+4
+-0x1.bcdeccp+4
+0x1.481cdp+3
+0x1.83fbf8p+4
+0x1.18504cp+5
+-0x1.b65098p+4
+0x1.5aa868p+4
+-0x1.8f06ap+3
+-0x1.a8d468p+2
+0x1.11a554p+5
+0x1.b47368p+4
+0x1.df0d08p+4
+-0x1.f80fcap+4
+0x1.c9cda4p+4
+0x1.785454p+4
+-0x1.af1b08p+2
+-0x1.0f6e86p+5
+0x1.869148p+3
+0x1.054cp+1
+0x1.f545dp+4
+-0x1.20e18p+1
+0x1.ec8cd8p+4
+-0x1.047434p+5
+-0x1.059518p+5
+0x1.6c32bp+2
+0x1.e72af8p+4
+-0x1.8e6d38p+4
+-0x1.5173ep+2
+0x1.0df39p+5
+-0x1.98be5p+4
+0x1.d16e8p-1
+-0x1.8d11ap+2
+-0x1.10bc48p+5
+0x1.99a9bp+3
+0x1.ea951p+2
+-0x1.38a44p+3
+-0x1.e303f2p+4
+0x1.3efc18p+3
+-0x1.d4510cp+3
+0x1.10a078p+3
+0x1.75f644p+4
+-0x1.b0b2c2p+4
+-0x1.dc58ep+1
+0x1.be8c2p+2
+-0x1.ad4244p+4
+0x1.4bdd88p+3
+0x1.7e3b98p+3
+-0x1.47af9p+2
+-0x1.26b82p+2
+-0x1.d8bd38p+4
+0x1.348244p+4
+0x1.5b6f4p+0
+-0x1.0f1764p+5
+-0x1.eea53p+2
+0x1.17cdbp+4
+-0x1.c0d6fp+1
+0x1.5d8fbcp+4
+-0x1.46e70cp+4
+0x1.a7379p+2
+-0x1.c537b8p+2
+0x1.65fdfp+2
+-0x1.573a14p+4
+-0x1.f6d328p+2
+0x1.3fa52p+3
+-0x1.9e64d4p+3
+-0x1.d1f208p+4
+0x1.daff8p+1
+-0x1.f85f48p+3
+-0x1.aa2b78p+4
+-0x1.1d6d14p+3
+0x1.06be64p+5
+-0x1.00671cp+4
+0x1.eeb7p-2
+0x1.10efdp+2
+0x1.de3fc8p+4
+-0x1.1da752p+4
+0x1.76392p+4
+-0x1.acd59p+4
+0x1.3db448p+3
+-0x1.2ef648p+4
+-0x1.30f1e8p+4
+-0x1.d3de8ep+4
+-0x1.e9566p+3
+-0x1.9ea03cp+3
+-0x1.f0158p-1
+-0x1.ff9bbp+1
+-0x1.3a3454p+3
+-0x1.87b4e4p+3
+0x1.3ea26p+1
+0x1.638248p+4
+-0x1.125e42p+4
+0x1.cc892cp+4
+0x1.b01cap+4
+0x1.d24a08p+3
+0x1.a2a1e8p+4
+0x1.15e17p+5
+0x1.10825p+5
+0x1.daad88p+4
+-0x1.21f976p+4
+-0x1.031fbcp+4
+-0x1.17fd7ep+5
+0x1.126018p+4
+-0x1.e621bp+4
+0x1.c4cf78p+3
+0x1.53dcd4p+4
+-0x1.8b519cp+4
+-0x1.69dacp+0
+0x1.4172ep+2
+0x1.160e68p+4
+0x1.a7da7p+4
+-0x1.decd6cp+4
+0x1.4b2bap+3
+0x1.806868p+3
+0x1.427174p+4
+-0x1.f04p-2
+0x1.0c93d8p+4
+0x1.093c6p+2
+-0x1.082e6ep+5
+-0x1.181a92p+5
+-0x1.19dfbp+2
+-0x1.98fef8p+2
+0x1.a77e94p+4
+0x1.1ad3cp+0
+-0x1.39c9bcp+3
+-0x1.ea251cp+4
+0x1.dec54p+2
+0x1.cc7e1cp+4
+0x1.6d9f1p+2
+-0x1.fe9198p+2
+-0x1.026232p+4
+0x1.08ad5p+5
+-0x1.43db28p+4
+-0x1.c4139ap+4
+0x1.bd6538p+4
+-0x1.a1ca9p+3
+-0x1.100adap+4
+0x1.1642p+5
+0x1.5a583p+3
+-0x1.902c5ap+4
+0x1.12f3ap+3
+0x1.0762a4p+5
+0x1.dea9e8p+4
+0x1.73af2p+4
+-0x1.51b6p+2
+0x1.e5fdf8p+3
+-0x1.2cdf44p+3
+-0x1.15518ep+5
+0x1.8481cp+1
+0x1.14c8ap+5
+-0x1.e34466p+4
+-0x1.2e8a6ep+4
+-0x1.edbcap+2
+-0x1.a34a2p+3
+0x1.62ba48p+4
+-0x1.48a09cp+3
+0x1.365f9p+2
+-0x1.e31778p+3
+0x1.373324p+4
+0x1.2a03p+2
+-0x1.4304dcp+4
+0x1.abb9dcp+4
+0x1.0dc9ap+5
+-0x1.b292f4p+4
+0x1.c72028p+3
+-0x1.78e0a4p+4
+-0x1.25c21cp+4
+0x1.155e5p+2
+-0x1.edba2p+3
+-0x1.dc87a6p+4
+0x1.44f16p+3
+-0x1.35781p+3
+0x1.b1acfp+4
+-0x1.c4c57p+3
+-0x1.c6ca42p+4
+-0x1.619604p+3
+-0x1.1f1f2p+2
+0x1.1ed8p+0
+0x1.76619cp+4
+-0x1.382454p+3
+-0x1.5270ep+1
+-0x1.16be2p+1
+0x1.4062fp+2
+-0x1.9fd7a8p+2
+-0x1.e1d9d8p+4
+0x1.ad37d8p+3
+-0x1.c78fecp+4
+-0x1.fbc6bp+2
+-0x1.e4c7dcp+3
+0x1.e5efp+2
+-0x1.28d7c8p+4
+0x1.72d978p+3
+0x1.37137cp+4
+-0x1.53ec9cp+3
+0x1.66a2bp+3
+0x1.9a4ep-3
+0x1.1140e4p+4
+0x1.16ed74p+5
+0x1.a82d78p+3
+0x1.975b0cp+4
+0x1.ca4ebp+3
+-0x1.589c6ap+4
+0x1.8ef3cp+2
+0x1.e2b6p+2
+-0x1.6b87f8p+2
+0x1.24f1e8p+4
+0x1.3a7a8p+4
+-0x1.f984f2p+4
+-0x1.a401p-1
+0x1.956ec8p+4
+-0x1.db5688p+4
+0x1.36f2ap+3
+-0x1.d1107p+3
+-0x1.b25828p+2
+-0x1.ffd308p+4
+0x1.3ec6c4p+4
+-0x1.721c04p+4
+0x1.d9e568p+4
+0x1.a293a8p+3
+0x1.10c4d8p+5
+0x1.cbe78p+0
+0x1.1052c8p+3
+0x1.32e02p+1
+0x1.be4b2p+4
+0x1.b1e164p+4
+-0x1.4dedb8p+4
+-0x1.52518cp+3
+-0x1.ddb38p-1
+-0x1.42cd08p+4
+0x1.2154d4p+4
+-0x1.067cc8p+4
+-0x1.767908p+4
+-0x1.3a2d44p+4
+-0x1.705b12p+4
+-0x1.de6e8p+0
+0x1.626488p+4
+-0x1.69fe64p+4
+-0x1.9f53eep+4
+-0x1.d6668p+0
+0x1.40e7c8p+4
+0x1.0f18bp+2
+0x1.7d9204p+4
+-0x1.40e0c2p+4
+0x1.3ca2p-1
+0x1.d0cf4p+4
+-0x1.9af13p+1
+0x1.49159p+3
+0x1.0e886cp+4
+-0x1.387932p+4
+-0x1.76d0b2p+4
+0x1.e3a888p+4
+0x1.95945p+3
+-0x1.f11fccp+3
+-0x1.f94b88p+3
+-0x1.5c3164p+4
+0x1.7042fp+4
+0x1.7b4304p+4
+0x1.193fcp+0
+-0x1.a69a94p+3
+0x1.fca03p+2
+0x1.a8b48p+1
+-0x1.4b058cp+3
+0x1.f889cp+4
+0x1.216c5cp+4
+0x1.4abf8p+3
+-0x1.903e98p+3
+0x1.002418p+5
+-0x1.81bd24p+4
+0x1.bcd70cp+4
+-0x1.27c00ap+4
+0x1.82ff1p+2
+0x1.a61df8p+3
+0x1.cc60d8p+3
+-0x1.36d58p+4
+0x1.35c0e4p+4
+-0x1.0cca7ap+5
+-0x1.f7191p+1
+0x1.064398p+5
+0x1.326608p+3
+0x1.6e83ep+3
+0x1.f9d508p+4
+0x1.aef608p+4
+-0x1.78885cp+4
+0x1.2a9f6p+4
+-0x1.3852c4p+4
+0x1.f53fe8p+4
+0x1.54b6cp+0
+-0x1.07f15cp+5
+-0x1.6d6c6cp+4
+0x1.836434p+4
+-0x1.f2d5b8p+2
+0x1.28f9c8p+3
+0x1.7e7d6cp+4
+-0x1.dcc444p+4
+0x1.aba548p+4
+0x1.c8b9f4p+4
+0x1.3b2d8p+3
+0x1.f0f87p+4
+0x1.526da8p+4
+-0x1.387fb8p+4
+-0x1.4167fp+4
+-0x1.570d18p+3
+0x1.aaedb8p+3
+-0x1.b53824p+3
+0x1.4a0e1cp+4
+0x1.021604p+4
+-0x1.21900cp+4
+-0x1.84c488p+3
+-0x1.03b874p+3
+0x1.5bcc5cp+4
+-0x1.9fb5c8p+3
+-0x1.842c52p+4
+-0x1.3deae4p+3
+-0x1.9ae034p+4
+-0x1.10fa9cp+5
+-0x1.b95bdcp+4
+-0x1.62e5bap+4
+0x1.e0e8fp+4
+-0x1.96a54cp+4
+0x1.c61774p+4
+-0x1.90c15p+4
+-0x1.5de06ap+4
+-0x1.08898ep+5
+0x1.644f1p+4
+0x1.caf23p+2
+0x1.3b8f6p+3
+-0x1.c806aap+4
+0x1.c6ebe4p+4
+-0x1.49fcd4p+3
+-0x1.787318p+4
+0x1.164038p+3
+-0x1.05b048p+2
+-0x1.dbe2f8p+2
+-0x1.7f48bp+2
+0x1.70e1ecp+4
+0x1.330974p+4
+-0x1.dd4fdp+3
+0x1.460e1p+3
+-0x1.2d880cp+3
+-0x1.9575f2p+4
+-0x1.0acce4p+5
+0x1.048768p+4
+-0x1.03fd18p+3
+0x1.05b15p+5
+0x1.54f76p+1
+0x1.f6f6e8p+4
+0x1.b3677p+4
+0x1.c01f3p+2
+-0x1.e32a14p+4
+-0x1.c72a8p+0
+-0x1.ebac5ap+4
+0x1.d83bp-1
+-0x1.4926e8p+4
+-0x1.797964p+4
+-0x1.49e964p+3
+-0x1.841d6cp+4
+-0x1.25273cp+3
+-0x1.07b102p+4
+-0x1.14b7acp+5
+-0x1.b5e63ap+4
+0x1.b52cacp+4
+0x1.f47f3p+2
+-0x1.6f3afcp+4
+-0x1.13717cp+3
+-0x1.1b037cp+4
+0x1.5da03p+4
+0x1.ec788p+4
+0x1.139c4cp+4
+-0x1.7418a6p+4
+0x1.03917cp+5
+-0x1.95383p+4
+0x1.03f114p+5
+-0x1.57e28ep+4
+0x1.caf3a4p+4
+-0x1.2cbb8p-1
+0x1.245f6p+3
+-0x1.2f17dp+3
+-0x1.86afacp+4
+0x1.2aaac8p+4
+-0x1.0a568p+0
+0x1.a7e7b4p+4
+0x1.c330b8p+3
+0x1.0faeap+1
+-0x1.2d39p+2
+-0x1.4ddb52p+4
+-0x1.f0c194p+4
+-0x1.3381cp+2
+0x1.12218p+5
+0x1.4804bp+2
+-0x1.df3382p+4
+-0x1.163aap+1
+0x1.8d269cp+4
+0x1.b46b3p+4
+-0x1.476e0cp+3
+-0x1.449c18p+3
+0x1.1a06p-1
+-0x1.2dba34p+4
+-0x1.2bc334p+4
+0x1.bba7b4p+4
+-0x1.c0eb2ep+4
+0x1.c2fa38p+4
+0x1.0f8538p+5
+0x1.fc3df8p+4
+0x1.537f8cp+4
+-0x1.a8d7ccp+4
+0x1.96023p+2
+0x1.3b2d2p+1
+-0x1.7b62c6p+4
+-0x1.5185ap+1
+-0x1.f7a8p-1
+-0x1.0c922p+3
+-0x1.df916p+4
+0x1.f3911p+3
+-0x1.5d9218p+3
+0x1.e0c878p+4
+-0x1.bd25bp+1
+0x1.66c448p+3
+-0x1.811accp+3
+-0x1.010c9cp+4
+0x1.f2a9f8p+4
+-0x1.1002dcp+4
+-0x1.274c8ep+4
+-0x1.2a902p+4
+0x1.74b20cp+4
+0x1.ff9988p+4
+-0x1.08647p+4
+-0x1.6557ecp+3
+0x1.cc62p+0
+-0x1.01b0c6p+5
+-0x1.75cep+4
+0x1.56d63cp+4
+-0x1.f86a7p+2
+0x1.4c874p+4
+0x1.37df0cp+4
+-0x1.265c3cp+3
+-0x1.0c48cp+5
+-0x1.e459d8p+3
+-0x1.8bca4p+3
+0x1.14706p+3
+-0x1.c99d3p+2
+-0x1.0fb52ap+4
+-0x1.071aecp+5
+-0x1.8975d8p+2
+-0x1.128304p+3
+-0x1.e3ff3p+1
+-0x1.152db8p+2
+-0x1.16b954p+5
+-0x1.15e6cep+5
+0x1.21b8d8p+4
+-0x1.1a98a8p+2
+0x1.059a88p+5
+0x1.2e2f4cp+4
+0x1.9f7c4p+3
+0x1.67382p+1
+0x1.2551dp+4
+0x1.b0fd4p+2
+0x1.583a68p+3
+0x1.30a698p+3
+-0x1.f8fe88p+2
+0x1.96d6f4p+4
+-0x1.0d8a96p+5
+-0x1.74878p-1
+0x1.10f1ep+1
+0x1.300af8p+4
+0x1.26de1cp+4
+0x1.ac842p+2
+0x1.74276p+4
+-0x1.d4723ep+4
+0x1.7222f8p+4
+-0x1.12400cp+5
+-0x1.6626e8p+3
+-0x1.a6c344p+3
+-0x1.3f75ep+2
+0x1.968ac4p+4
+-0x1.e132ecp+3
+0x1.308c5cp+4
+0x1.32232p+1
+-0x1.101cap+5
+-0x1.0adf06p+5
+-0x1.9d61p+3
+0x1.0937dp+5
+0x1.b44f3cp+4
+-0x1.c78ap+0
+-0x1.829a6p+4
+0x1.7ecb88p+3
+0x1.44aa6p+4
+-0x1.f017dap+4
+-0x1.a4603p+3
+-0x1.6fc0c8p+3
+0x1.ec29cp+4
+-0x1.ff5bdcp+4
+0x1.d5782p+4
+-0x1.2f712ap+4
+-0x1.552f48p+2
+0x1.a127bp+4
+-0x1.3a8cdcp+3
+-0x1.7a1228p+3
+0x1.8b913p+2
+0x1.db95fp+3
+0x1.7a43p+3
+-0x1.539778p+4
+-0x1.a4d114p+4
+-0x1.c4127p+4
+0x1.75c1p+4
+-0x1.f3b83p+2
+-0x1.2d3ffep+4
+0x1.73c72p+2
+0x1.b9044p+0
+0x1.e7383p+4
+-0x1.f12826p+4
+-0x1.ace2ap+1
+0x1.fb643p+4
+-0x1.d6d9a8p+2
+0x1.5da19p+4
+-0x1.1f967p+3
+-0x1.9ac65ep+4
+-0x1.03408cp+3
+-0x1.014488p+5
+-0x1.3ce4d8p+4
+-0x1.99e4a8p+4
+0x1.e51898p+4
+0x1.8df99p+2
+0x1.9240dp+4
+0x1.94107p+3
+-0x1.e7551p+3
+0x1.f8568p+4
+-0x1.57339cp+4
+0x1.d9ef98p+4
+0x1.ea652p+4
+-0x1.185138p+4
+-0x1.37b20cp+3
+0x1.6e3ea8p+4
+-0x1.08b312p+4
+-0x1.f85fep+4
+-0x1.50c0dcp+4
+-0x1.daf28p+0
+0x1.1dd7b8p+4
+0x1.7179e8p+4
+-0x1.489db4p+4
+-0x1.5b705cp+3
+0x1.c989d4p+4
+-0x1.d0da4p+0
+0x1.67d708p+3
+-0x1.a4d0f8p+3
+-0x1.22519cp+4
+0x1.0e6b54p+4
+0x1.17e9bp+5
+0x1.68d95cp+4
+-0x1.ec6d2cp+4
+-0x1.38ffccp+4
+-0x1.23bf1ep+4
+0x1.a0e2p+2
+0x1.24094p+3
+-0x1.90f946p+4
+-0x1.4f2b2p+4
+0x1.93398p+0
+0x1.3d7fdp+4
+0x1.3741fp+4
+-0x1.a88074p+3
+-0x1.103f16p+5
+0x1.53c554p+4
+0x1.e8e9p+1
+-0x1.0e4e4cp+4
+-0x1.e2389ep+4
+-0x1.ad61p+3
+-0x1.c30eecp+3
+-0x1.67abb8p+2
+-0x1.c4fffcp+3
+-0x1.5dd3ap+1
+-0x1.6eb4a8p+2
+0x1.63f0bp+3
+-0x1.073cd8p+5
+0x1.bb22e8p+4
+-0x1.a8ce5p+2
+-0x1.51153cp+3
+-0x1.56371p+3
+0x1.f1fb4p+0
+0x1.498f8p+3
+0x1.332da8p+3
+0x1.080834p+5
+-0x1.32da04p+3
+0x1.650174p+4
+-0x1.59f60cp+4
+-0x1.4e8858p+2
+0x1.84688p+0
+0x1.3629fp+2
+0x1.0ba29p+5
+-0x1.0ae52p+2
+-0x1.4f44ap+1
+0x1.9ae28p+0
+0x1.2baf1p+2
+0x1.0c802p+2
+-0x1.c67dd8p+2
+-0x1.de957p+1
+0x1.48b72p+1
+-0x1.4c0c68p+4
+0x1.46a744p+4
+-0x1.39d01cp+3
+0x1.53d76p+3
+0x1.1668a4p+5
+0x1.f4433p+4
+0x1.e4b0fp+2
+-0x1.7c4cf8p+4
+0x1.0d5e8p+4
+-0x1.880078p+4
+0x1.53c5ep+4
+0x1.904728p+3
+0x1.0d36f8p+5
+0x1.f6183p+4
+0x1.08f43cp+4
+0x1.77e2c8p+4
+-0x1.cb5924p+4
+0x1.486de8p+4
+0x1.060a78p+3
+0x1.0c8e4cp+5
+0x1.fb2dcp+3
+0x1.39f22p+4
+-0x1.0111a6p+5
+0x1.8b0198p+3
+-0x1.c08372p+4
+-0x1.e9686p+4
+-0x1.2f4aa4p+3
+0x1.ad5be4p+4
+-0x1.518fccp+3
+-0x1.c858d4p+3
+-0x1.5f7f7cp+3
+-0x1.556ffep+4
+-0x1.2215a4p+3
+-0x1.50b018p+4
+0x1.f249ap+2
+0x1.12e38p+5
+-0x1.b1dc0cp+4
+-0x1.a102dcp+3
+0x1.80dbc4p+4
+-0x1.684cbcp+3
+0x1.ed581p+2
+-0x1.dca674p+3
+0x1.973504p+4
+-0x1.f820f8p+4
+-0x1.81a7p+1
+-0x1.0c8b6p+5
+0x1.d1e7b8p+4
+0x1.3709dcp+4
+-0x1.48f4ap+3
+-0x1.07881p+5
+0x1.45905p+2
+-0x1.0c0d02p+5
+-0x1.067a0cp+3
+0x1.9dd588p+4
+0x1.ba0ed8p+4
+0x1.f44628p+4
+0x1.cabed4p+4
+-0x1.e23812p+4
+-0x1.0a744ep+5
+0x1.db644p+0
+0x1.51211p+4
+0x1.a63694p+4
+0x1.246b2cp+4
+-0x1.756b7p+4
+-0x1.ff7878p+4
+-0x1.f10044p+4
+-0x1.cda77p+1
+-0x1.1961a2p+4
+0x1.d4abbp+2
+-0x1.03ed76p+4
+0x1.079cfcp+4
+-0x1.7365f4p+3
+-0x1.2dd44p+0
+-0x1.b47a6p+1
+0x1.9784d4p+4
+-0x1.f35baep+4
+-0x1.bb35acp+4
+0x1.b9d88p+1
+0x1.14f6a4p+5
+-0x1.7c5ecp+0
+0x1.05bd1cp+5
+-0x1.a19a52p+4
+-0x1.148c8p+3
+-0x1.771ce2p+4
+-0x1.072ffap+5
+0x1.c4178cp+4
+0x1.8bad68p+4
+0x1.b47704p+4
+0x1.0e2438p+4
+-0x1.fc9778p+4
+0x1.5ec7ap+2
+0x1.43912p+2
+0x1.46345p+3
+0x1.6cd29p+4
+0x1.0144cp+2
+-0x1.1e9854p+3
+-0x1.3756bap+4
+-0x1.0b664ap+4
+-0x1.9aep-3
+0x1.68f64p+3
+0x1.3aa67p+3
+-0x1.07615ap+5
+-0x1.f0c314p+4
+0x1.b0bdf4p+4
+-0x1.54f9aep+4
+0x1.9c367p+4
+-0x1.14b3ecp+4
+0x1.791af8p+4
+0x1.a81588p+3
+0x1.3b838p+4
+0x1.e13758p+4
+0x1.56c47p+2
+0x1.8f7e7cp+4
+0x1.5262e8p+4
+-0x1.896a58p+2
+0x1.f37f48p+4
+0x1.fbaadp+4
+0x1.4d2cfp+2
+0x1.6c67ap+2
+0x1.9b882p+3
+0x1.5b66fp+2
+-0x1.9d42dp+1
+-0x1.05346cp+4
+0x1.0ab82p+1
+0x1.9e15b8p+3
+-0x1.d98274p+3
+0x1.0a78b8p+3
+-0x1.2f3774p+4
+0x1.a9b88p+0
+-0x1.f47fecp+4
+-0x1.558a24p+4
+0x1.46c308p+3
+-0x1.bf564cp+4
+0x1.b638c8p+4
+0x1.42b98p+0
+-0x1.97a6a4p+4
+-0x1.4220ecp+4
+0x1.6845ap+3
+-0x1.fb5ddp+4
+0x1.eb47fp+2
+-0x1.067b58p+3
+0x1.167014p+5
+0x1.e7924p+4
+-0x1.5f6cp-3
+0x1.30a098p+3
+0x1.05834cp+5
+-0x1.da437cp+3
+0x1.3e04b8p+4
+-0x1.9ef4ecp+3
+0x1.51ce1p+3
+-0x1.112634p+5
+0x1.77c6ep+4
+-0x1.d37be8p+3
+-0x1.7e568p+0
+-0x1.c5a644p+4
+-0x1.6e036p+1
+-0x1.1786d4p+3
+-0x1.8580e8p+2
+0x1.c466cp+0
+0x1.0ba94p+3
+0x1.86773p+2
+0x1.803bep+4
+-0x1.ae82f8p+2
+-0x1.862498p+2
+0x1.3da6p+0
+0x1.a865d8p+3
+-0x1.ce0fb8p+2
+-0x1.846eep+4
+-0x1.d932p+3
+-0x1.547b34p+4
+0x1.7a1cbp+3
+0x1.248f58p+3
+-0x1.352bcp+4
+-0x1.8b421cp+4
+0x1.fd815p+2
+0x1.22a41p+3
+-0x1.0ac0eap+4
+-0x1.45f61p+4
+0x1.36d9bp+4
+-0x1.9cd784p+3
+-0x1.5fb918p+2
+-0x1.810298p+3
+0x1.e7b198p+3
+-0x1.ff5fc4p+4
+0x1.92637p+3
+0x1.82252p+2
+-0x1.aa8ebap+4
+-0x1.dc9b4ep+4
+0x1.ae464p+4
+0x1.d58b9p+3
+0x1.879fep+4
+0x1.afb52cp+4
+-0x1.9eda98p+4
+0x1.f3939p+4
+-0x1.e927e8p+3
+-0x1.582306p+4
+0x1.10753cp+5
+-0x1.80fd7cp+4
+0x1.9b3cbp+2
+0x1.67267p+4
+-0x1.51e6e8p+4
+-0x1.6250c8p+2
+-0x1.1550c4p+4
+0x1.2d6838p+3
+0x1.099948p+4
+-0x1.2eaf5p+4
+0x1.dca0cp+0
+-0x1.7374p-4
+-0x1.c2053ep+4
+0x1.9e5f04p+4
+-0x1.07dbf6p+5
+-0x1.23ba88p+4
+0x1.0956a4p+4
+-0x1.b798ap+1
+0x1.f7143p+2
+0x1.b56028p+3
+-0x1.151df6p+5
+-0x1.301754p+4
+-0x1.05d158p+5
+0x1.08eb28p+5
+-0x1.5c5d5p+4
+-0x1.9cffd2p+4
+-0x1.285654p+4
+0x1.e001e8p+3
+0x1.04076p+2
+0x1.0c6a04p+4
+0x1.7bb8p-2
+-0x1.0f0518p+5
+-0x1.3567a8p+2
+-0x1.1ebdp-1
+-0x1.8ef22p+3
+-0x1.0a1d5ap+5
+0x1.8a9edp+3
+0x1.00c0e4p+5
+-0x1.32c98p-1
+-0x1.e081c8p+3
+-0x1.226ea4p+4
+0x1.bf0b7p+4
+0x1.c4d04p+0
+0x1.f48ddp+2
+-0x1.f9f398p+2
+-0x1.24d42p+2
+0x1.0c776p+4
+0x1.8a98ep+3
+-0x1.86d128p+4
+-0x1.dda632p+4
+0x1.b3ad38p+4
+0x1.0dac4p+3
+0x1.9fc00cp+4
+-0x1.93bfccp+4
+-0x1.6e659p+2
+-0x1.60dap-1
+-0x1.50fd46p+4
+0x1.1d5078p+4
+0x1.b69efp+3
+0x1.e31d3p+3
+-0x1.0541cp+5
+0x1.3a1648p+3
+0x1.a0c63p+3
+0x1.ea3ff8p+4
+0x1.58ea1cp+4
+0x1.a5509cp+4
+-0x1.30dc1p+3
+-0x1.6a0c2ep+4
+0x1.017178p+3
+0x1.3f598p+0
+0x1.33b4e8p+4
+-0x1.74f184p+4
+0x1.05baep+2
+0x1.b8792p+1
+0x1.638c68p+4
+0x1.94a15cp+4
+-0x1.43fc96p+4
+-0x1.21606cp+3
+0x1.9b3a58p+3
+0x1.e4a05p+4
+0x1.bfa8d8p+4
+-0x1.9076acp+4
+-0x1.967568p+4
+0x1.ac7a58p+3
+0x1.51c12p+2
+0x1.769c4p+1
+-0x1.a53708p+4
+-0x1.fcd6dp+1
+0x1.9b57p+2
+-0x1.f69b8p+0
+-0x1.b953p+2
+0x1.0ec4fcp+5
+-0x1.cf1dcp+0
+0x1.8084b8p+4
+0x1.62db78p+3
+-0x1.485c98p+2
+-0x1.576414p+4
+-0x1.fcc948p+3
+0x1.9d863p+3
+-0x1.08b39ep+5
+0x1.795ep-3
+0x1.99e26p+2
+0x1.fb6d6p+4
+-0x1.55d16p+1
+0x1.41071p+3
+0x1.549abcp+4
+0x1.4e88p-3
+0x1.10bfcp+2
+0x1.97b3cp+3
+-0x1.4580cp+3
+-0x1.df2fp+0
+-0x1.09a2dcp+5
+-0x1.7e1124p+3
+-0x1.14f35ep+5
+0x1.2956cp+4
+0x1.c7b8e8p+4
+-0x1.ebba08p+3
+-0x1.fdfd3p+3
+0x1.46906p+1
+0x1.c1318p+0
+0x1.79f444p+4
+0x1.6012bcp+4
+0x1.fd49ap+2
+-0x1.11612cp+4
+0x1.ea3cdp+4
+-0x1.a053ccp+4
+-0x1.995764p+3
+0x1.bec2e8p+4
+-0x1.7aa898p+2
+0x1.6b6edp+2
+0x1.9b6774p+4
+0x1.e85738p+3
+0x1.974ad4p+4
+-0x1.554564p+4
+-0x1.383ap+3
+-0x1.7576dcp+4
+-0x1.7e8308p+4
+-0x1.786086p+4
+-0x1.31641p+2
+-0x1.591184p+4
+0x1.1ef65p+4
+-0x1.39bc08p+2
+-0x1.1672b4p+4
+-0x1.4aa7f4p+4
+0x1.201d4p+1
+-0x1.afecp-3
+-0x1.163698p+3
+-0x1.7660cp+2
+-0x1.c7fb44p+4
+-0x1.8e0cbp+3
+-0x1.d2a9p-2
+0x1.d0d51p+4
+0x1.d1ea38p+4
+0x1.9741bp+3
+0x1.d90b08p+3
+0x1.6608f8p+4
+-0x1.019936p+5
+-0x1.bd980ep+4
+0x1.c8ad9p+2
+-0x1.a33178p+2
+-0x1.957c74p+4
+0x1.1adc7p+4
+-0x1.329bcp+2
+0x1.4df538p+3
+0x1.ce0544p+4
+0x1.09ab3p+5
+-0x1.937bp+4
+0x1.029744p+5
+0x1.f899f8p+4
+0x1.8140e8p+4
+0x1.e035p+2
+0x1.1418a4p+5
+0x1.183664p+5
+0x1.9ac948p+4
+0x1.7be72p+3
+0x1.3145d8p+4
+0x1.a88598p+3
+-0x1.15d71p+5
+-0x1.cfe5dp+3
+-0x1.3259b4p+3
+0x1.eb17fp+4
+-0x1.c4d158p+3
+-0x1.a0004cp+4
+0x1.b62a1p+3
+-0x1.320a1cp+4
+0x1.99bd1cp+4
+0x1.36e0ap+4
+-0x1.da762p+1
+0x1.91eep+2
+0x1.18d928p+3
+0x1.956c5cp+4
+0x1.4226e8p+4
diff --git a/bits/libm-simd-decl-stubs.h b/bits/libm-simd-decl-stubs.h
index 08a41c4..5019e8e 100644
--- a/bits/libm-simd-decl-stubs.h
+++ b/bits/libm-simd-decl-stubs.h
@@ -253,6 +253,17 @@
#define __DECL_SIMD_log1pf64x
#define __DECL_SIMD_log1pf128x
+#define __DECL_SIMD_logp1
+#define __DECL_SIMD_logp1f
+#define __DECL_SIMD_logp1l
+#define __DECL_SIMD_logp1f16
+#define __DECL_SIMD_logp1f32
+#define __DECL_SIMD_logp1f64
+#define __DECL_SIMD_logp1f128
+#define __DECL_SIMD_logp1f32x
+#define __DECL_SIMD_logp1f64x
+#define __DECL_SIMD_logp1f128x
+
#define __DECL_SIMD_atanh
#define __DECL_SIMD_atanhf
#define __DECL_SIMD_atanhl
diff --git a/config.h.in b/config.h.in
index f495f11..6c25c92 100644
--- a/config.h.in
+++ b/config.h.in
@@ -117,9 +117,6 @@
required version of GNU 'binutils' to 2.28 or later. */
#define HAVE_AARCH64_SVE_ASM 0
-/* ARC big endian ABI */
-#undef HAVE_ARC_BE
-
/* C-SKY ABI version. */
#undef CSKYABI
diff --git a/configure b/configure
index 1d54354..9c0c0dc 100755
--- a/configure
+++ b/configure
@@ -635,6 +635,8 @@ libc_cv_gcc_unwind_find_fde
libc_extra_cppflags
libc_extra_cflags
libc_cv_cxx_thread_local
+no_time_bits_source
+no_file_offset_bits_source
fortify_source
no_fortify_source
libc_cv_fortify_source
@@ -7465,6 +7467,32 @@ if test $libc_cv_cc_loop_to_function = yes; then
fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -Wimplicit-fallthrough" >&5
+printf %s "checking for -Wimplicit-fallthrough... " >&6; }
+if test ${libc_cv_cc_wimplicit_fallthrough+y}
+then :
+ printf %s "(cached) " >&6
+else case e in #(
+ e) if { ac_try='${CC-cc} -Werror -Wimplicit-fallthrough -xc /dev/null -S -o /dev/null'
+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }
+then :
+ libc_cv_cc_wimplicit_fallthrough=-Wimplicit-fallthrough
+else case e in #(
+ e) libc_cv_cc_wimplicit_fallthrough= ;;
+esac
+fi
+ ;;
+esac
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_cc_wimplicit_fallthrough" >&5
+printf "%s\n" "$libc_cv_cc_wimplicit_fallthrough" >&6; }
+config_vars="$config_vars
+cc-option-wimplicit-fallthrough = $libc_cv_cc_wimplicit_fallthrough"
+
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libgd" >&5
printf %s "checking for libgd... " >&6; }
if test "$with_gd" != "no"; then
@@ -7692,7 +7720,7 @@ printf "%s\n" "#define HAVE_LIBCAP 1" >>confdefs.h
fi
-no_fortify_source="-Wp,-U_FORTIFY_SOURCE"
+no_fortify_source="-U_FORTIFY_SOURCE"
fortify_source="${no_fortify_source}"
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for maximum supported _FORTIFY_SOURCE level" >&5
@@ -7747,7 +7775,7 @@ esac
if test "$libc_cv_fortify_source" = yes
then :
- fortify_source="${fortify_source},-D_FORTIFY_SOURCE=${enable_fortify_source}"
+ fortify_source="${fortify_source} -D_FORTIFY_SOURCE=${enable_fortify_source}"
fi
@@ -7758,6 +7786,66 @@ fi
config_vars="$config_vars
supported-fortify = $libc_cv_supported_fortify_source"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main (void)
+{
+
+#ifndef _FILE_OFFSET_BITS
+# error _FILE_OFFSET_BITS not defined
+#endif
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"
+then :
+ libc_cv_compiler_default_file_offset_bits=yes
+else case e in #(
+ e) libc_cv_compiler_default_file_offset_bits=no ;;
+esac
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+if test "$libc_cv_compiler_default_file_offset_bits" = yes
+then :
+ no_file_offset_bits_source="-U_FILE_OFFSET_BITS"
+fi
+
+config_vars="$config_vars
+no-file-offset-bits-source = $no_file_offset_bits_source"
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main (void)
+{
+
+#ifndef _TIME_BITS
+# error _TIME_BITS not defined
+#endif
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"
+then :
+ libc_cv_compiler_default_time_bits=yes
+else case e in #(
+ e) libc_cv_compiler_default_time_bits=no ;;
+esac
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+if test "$libc_cv_compiler_default_time_bits" = yes
+then :
+ no_time_bits_source="-U_TIME_BITS"
+fi
+
+config_vars="$config_vars
+no-time-bits-source = $no_time_bits_source"
+
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the assembler requires one version per symbol" >&5
printf %s "checking whether the assembler requires one version per symbol... " >&6; }
if test ${libc_cv_symver_needs_alias+y}
diff --git a/configure.ac b/configure.ac
index 9cbc0bf..d5a0046 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1468,6 +1468,15 @@ if test $libc_cv_cc_loop_to_function = yes; then
fi
AC_SUBST(libc_cv_cc_loop_to_function)
+AC_CACHE_CHECK([for -Wimplicit-fallthrough],
+ libc_cv_cc_wimplicit_fallthrough, [dnl
+LIBC_TRY_CC_OPTION([-Werror -Wimplicit-fallthrough],
+ [libc_cv_cc_wimplicit_fallthrough=-Wimplicit-fallthrough],
+ [libc_cv_cc_wimplicit_fallthrough=])
+])
+LIBC_CONFIG_VAR([cc-option-wimplicit-fallthrough],
+ [$libc_cv_cc_wimplicit_fallthrough])
+
dnl Check whether we have the gd library available.
AC_MSG_CHECKING(for libgd)
if test "$with_gd" != "no"; then
@@ -1527,7 +1536,7 @@ dnl If not, then don't use it.
dnl Note that _FORTIFY_SOURCE may have been set through FLAGS too.
dnl _FORTIFY_SOURCE value will be selectively disabled for function that can't
dnl support it
-no_fortify_source="-Wp,-U_FORTIFY_SOURCE"
+no_fortify_source="-U_FORTIFY_SOURCE"
fortify_source="${no_fortify_source}"
AC_CACHE_CHECK([for maximum supported _FORTIFY_SOURCE level],
@@ -1546,7 +1555,7 @@ AS_CASE([$enable_fortify_source],
[libc_cv_fortify_source=no])
AS_IF([test "$libc_cv_fortify_source" = yes],
- [fortify_source="${fortify_source},-D_FORTIFY_SOURCE=${enable_fortify_source}"]
+ [fortify_source="${fortify_source} -D_FORTIFY_SOURCE=${enable_fortify_source}"]
)
AC_SUBST(enable_fortify_source)
@@ -1555,6 +1564,30 @@ AC_SUBST(no_fortify_source)
AC_SUBST(fortify_source)
LIBC_CONFIG_VAR([supported-fortify], [$libc_cv_supported_fortify_source])
+dnl Check if compiler define _FILE_OFFSET_BITS by default
+AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[]], [[
+#ifndef _FILE_OFFSET_BITS
+# error _FILE_OFFSET_BITS not defined
+#endif]])],
+ [libc_cv_compiler_default_file_offset_bits=yes],
+ [libc_cv_compiler_default_file_offset_bits=no])
+AS_IF([test "$libc_cv_compiler_default_file_offset_bits" = yes],
+ [no_file_offset_bits_source="-U_FILE_OFFSET_BITS"])
+AC_SUBST(no_file_offset_bits_source)
+LIBC_CONFIG_VAR([no-file-offset-bits-source], [$no_file_offset_bits_source])
+
+dnl Check if compiler define _TIME_BITS by default
+AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[]], [[
+#ifndef _TIME_BITS
+# error _TIME_BITS not defined
+#endif]])],
+ [libc_cv_compiler_default_time_bits=yes],
+ [libc_cv_compiler_default_time_bits=no])
+AS_IF([test "$libc_cv_compiler_default_time_bits" = yes],
+ [no_time_bits_source="-U_TIME_BITS"])
+AC_SUBST(no_time_bits_source)
+LIBC_CONFIG_VAR([no-time-bits-source], [$no_time_bits_source])
+
dnl Starting with binutils 2.35, GAS can attach multiple symbol versions
dnl to one symbol (PR 23840).
AC_CACHE_CHECK(whether the assembler requires one version per symbol,
diff --git a/conform/Makefile b/conform/Makefile
index 73a3cb6..57a1f5b 100644
--- a/conform/Makefile
+++ b/conform/Makefile
@@ -372,7 +372,7 @@ test-xfail-UNIX98/ndbm.h/conform = yes
test-xfail-XOPEN2K/ndbm.h/conform = yes
test-xfail-XOPEN2K8/ndbm.h/conform = yes
-conformtest-cc-flags = -I../include $(+sysdep-includes) $(sysincludes) -I..
+conformtest-cc-flags = -I../include $(+sysdep-includes) $(sysincludes) -I.. $(no-file-offset-bits-source) $(no-time-bits-source)
# conformtest-xfail-conds may be set by a sysdeps Makefile fragment to
# a list of conditions that are considered to be true when encountered
# in xfail[cond]- lines in test expectations.
diff --git a/debug/Makefile b/debug/Makefile
index 3903cc9..89ee80b 100644
--- a/debug/Makefile
+++ b/debug/Makefile
@@ -171,16 +171,16 @@ CFLAGS-recvfrom_chk.c += -fexceptions -fasynchronous-unwind-tables
# set up for us, so keep the CFLAGS/CPPFLAGS split logical as the order is:
# <user CFLAGS> <test CFLAGS> <user CPPFLAGS> <test CPPFLAGS>
CFLAGS-tst-longjmp_chk.c += -fexceptions -fasynchronous-unwind-tables
-CPPFLAGS-tst-longjmp_chk.c += $(no-fortify-source),-D_FORTIFY_SOURCE=1
+CPPFLAGS-tst-longjmp_chk.c += $(no-fortify-source) -D_FORTIFY_SOURCE=1
CFLAGS-tst-longjmp_chk2.c += -fexceptions -fasynchronous-unwind-tables
-CPPFLAGS-tst-longjmp_chk2.c += $(no-fortify-source),-D_FORTIFY_SOURCE=1
+CPPFLAGS-tst-longjmp_chk2.c += $(no-fortify-source) -D_FORTIFY_SOURCE=1
CFLAGS-tst-longjmp_chk3.c += -fexceptions -fasynchronous-unwind-tables
-CPPFLAGS-tst-longjmp_chk3.c += $(no-fortify-source),-D_FORTIFY_SOURCE=1
-CPPFLAGS-tst-realpath-chk.c += $(no-fortify-source),-D_FORTIFY_SOURCE=2
-CPPFLAGS-tst-chk-cancel.c += $(no-fortify-source),-D_FORTIFY_SOURCE=2
-CFLAGS-tst-sprintf-fortify-rdonly.c += $(no-fortify-source),-D_FORTIFY_SOURCE=2
-CFLAGS-tst-fortify-syslog.c += $(no-fortify-source),-D_FORTIFY_SOURCE=2
-CFLAGS-tst-fortify-wide.c += $(no-fortify-source),-D_FORTIFY_SOURCE=2
+CPPFLAGS-tst-longjmp_chk3.c += $(no-fortify-source) -D_FORTIFY_SOURCE=1
+CPPFLAGS-tst-realpath-chk.c += $(no-fortify-source) -D_FORTIFY_SOURCE=2
+CPPFLAGS-tst-chk-cancel.c += $(no-fortify-source) -D_FORTIFY_SOURCE=2
+CFLAGS-tst-sprintf-fortify-rdonly.c += $(no-fortify-source) -D_FORTIFY_SOURCE=2
+CFLAGS-tst-fortify-syslog.c += $(no-fortify-source) -D_FORTIFY_SOURCE=2
+CFLAGS-tst-fortify-wide.c += $(no-fortify-source) -D_FORTIFY_SOURCE=2
# _FORTIFY_SOURCE tests.
# Auto-generate tests for _FORTIFY_SOURCE for different levels, compilers and
@@ -218,7 +218,8 @@ src-chk-nongnu = \#undef _GNU_SOURCE
# cannot be disabled via pragmas, so require -Wno-error to be used.
define gen-chk-test
tests-$(1)-$(4)-chk += tst-fortify-$(1)-$(2)-$(3)-$(4)
-CFLAGS-tst-fortify-$(1)-$(2)-$(3)-$(4).$(1) += $(no-fortify-source),-D_FORTIFY_SOURCE=$(3) -Wno-format \
+CFLAGS-tst-fortify-$(1)-$(2)-$(3)-$(4).$(1) += $(no-fortify-source) -D_FORTIFY_SOURCE=$(3) \
+ -Wno-format \
-Wno-deprecated-declarations \
-Wno-error
$(eval $(call cflags-$(2),$(1),$(3),$(4)))
diff --git a/debug/pcprofiledump.c b/debug/pcprofiledump.c
index 049a9c2..94530f0 100644
--- a/debug/pcprofiledump.c
+++ b/debug/pcprofiledump.c
@@ -75,6 +75,44 @@ static struct argp argp =
options, parse_opt, args_doc, doc, NULL, more_help
};
+/* Try to read SIZE bytes from FD and store them on BUF. Terminate
+ the process upon read error. Also terminate the process if less
+ than SIZE bytes are remaining in the file. If !IN_HEADER, do not
+ terminate the process if the end of the file is encountered
+ immediately, before any bytes are read.
+
+ Returns true if SIZE bytes have been read, and false if no bytes
+ have been read due to an end-of-file condition. */
+static bool
+read_exactly (int fd, void *buffer, size_t size, bool in_header)
+{
+ char *p = buffer;
+ char *end = p + size;
+ while (p < end)
+ {
+ ssize_t ret = TEMP_FAILURE_RETRY (read (fd, p, end - p));
+ if (ret < 0)
+ {
+ if (in_header)
+ error (EXIT_FAILURE, errno, _("cannot read header"));
+ else
+ error (EXIT_FAILURE, errno, _("cannot read pointer pair"));
+ }
+ if (ret == 0)
+ {
+ if (p == buffer && !in_header)
+ /* Nothing has been read. */
+ return false;
+ if (in_header)
+ error (EXIT_FAILURE, 0, _("unexpected end of file in header"));
+ else
+ error (EXIT_FAILURE, 0,
+ _("unexpected end of file in pointer pair"));
+ }
+ p += ret;
+ }
+ return true;
+}
int
main (int argc, char *argv[])
@@ -110,8 +148,7 @@ main (int argc, char *argv[])
/* Read the first 4-byte word. It contains the information about
the word size and the endianness. */
uint32_t word;
- if (TEMP_FAILURE_RETRY (read (fd, &word, 4)) != 4)
- error (EXIT_FAILURE, errno, _("cannot read header"));
+ read_exactly (fd, &word, sizeof (word), true);
/* Check whether we have to swap the byte order. */
int must_swap = (word & 0x0fffffff) == bswap_32 (0xdeb00000);
@@ -121,56 +158,30 @@ main (int argc, char *argv[])
/* We have two loops, one for 32 bit pointers, one for 64 bit pointers. */
if (word == 0xdeb00004)
{
- union
- {
- uint32_t ptrs[2];
- char bytes[8];
- } pair;
+ uint32_t ptrs[2];
while (1)
{
- size_t len = sizeof (pair);
- size_t n;
-
- while (len > 0
- && (n = TEMP_FAILURE_RETRY (read (fd, &pair.bytes[8 - len],
- len))) != 0)
- len -= n;
-
- if (len != 0)
- /* Nothing to read. */
+ if (!read_exactly (fd, ptrs, sizeof (ptrs), false))
break;
printf ("this = %#010" PRIx32 ", caller = %#010" PRIx32 "\n",
- must_swap ? bswap_32 (pair.ptrs[0]) : pair.ptrs[0],
- must_swap ? bswap_32 (pair.ptrs[1]) : pair.ptrs[1]);
+ must_swap ? bswap_32 (ptrs[0]) : ptrs[0],
+ must_swap ? bswap_32 (ptrs[1]) : ptrs[1]);
}
}
else if (word == 0xdeb00008)
{
- union
- {
- uint64_t ptrs[2];
- char bytes[16];
- } pair;
+ uint64_t ptrs[2];
while (1)
{
- size_t len = sizeof (pair);
- size_t n;
-
- while (len > 0
- && (n = TEMP_FAILURE_RETRY (read (fd, &pair.bytes[8 - len],
- len))) != 0)
- len -= n;
-
- if (len != 0)
- /* Nothing to read. */
+ if (!read_exactly (fd, ptrs, sizeof (ptrs), false))
break;
printf ("this = %#018" PRIx64 ", caller = %#018" PRIx64 "\n",
- must_swap ? bswap_64 (pair.ptrs[0]) : pair.ptrs[0],
- must_swap ? bswap_64 (pair.ptrs[1]) : pair.ptrs[1]);
+ must_swap ? bswap_64 (ptrs[0]) : ptrs[0],
+ must_swap ? bswap_64 (ptrs[1]) : ptrs[1]);
}
}
else
diff --git a/debug/test-strcpy_chk.c b/debug/test-strcpy_chk.c
index 14b11ea..55f2cc8 100644
--- a/debug/test-strcpy_chk.c
+++ b/debug/test-strcpy_chk.c
@@ -59,7 +59,7 @@ static int test_main (void);
#include <support/support.h>
volatile int chk_fail_ok;
-jmp_buf chk_fail_buf;
+sigjmp_buf chk_fail_buf;
static void
handler (int sig)
@@ -86,7 +86,7 @@ do_one_test (impl_t *impl, char *dst, const char *src,
return;
chk_fail_ok = 1;
- if (setjmp (chk_fail_buf) == 0)
+ if (sigsetjmp (chk_fail_buf, 1) == 0)
{
res = CALL (impl, dst, src, dlen);
printf ("*** Function %s (%zd; %zd) did not __chk_fail\n",
@@ -214,7 +214,7 @@ do_random_tests (void)
if (impl->test != 1)
{
chk_fail_ok = 1;
- if (setjmp (chk_fail_buf) == 0)
+ if (sigsetjmp (chk_fail_buf, 1) == 0)
{
res = (unsigned char *)
CALL (impl, (char *) p2 + align2,
diff --git a/debug/tst-fortify-wide.c b/debug/tst-fortify-wide.c
index 9c6f3af..0f38e55 100644
--- a/debug/tst-fortify-wide.c
+++ b/debug/tst-fortify-wide.c
@@ -26,7 +26,7 @@
static volatile int chk_fail_ok;
static volatile int ret;
-static jmp_buf chk_fail_buf;
+static sigjmp_buf chk_fail_buf;
static void
handler (int sig)
@@ -49,7 +49,7 @@ static wchar_t wbuf2[20] = L"%ls";
do { wprintf (L"Failure on line %d\n", __LINE__); ret = 1; } while (0)
#define CHK_FAIL_START \
chk_fail_ok = 1; \
- if (! setjmp (chk_fail_buf)) \
+ if (! sigsetjmp (chk_fail_buf, 1)) \
{
#define CHK_FAIL_END \
chk_fail_ok = 0; \
diff --git a/debug/tst-fortify.c b/debug/tst-fortify.c
index ae738ff..e12d538 100644
--- a/debug/tst-fortify.c
+++ b/debug/tst-fortify.c
@@ -90,7 +90,7 @@ do_prepare (int argc, char *argv[])
static volatile int chk_fail_ok;
static volatile int ret;
-static jmp_buf chk_fail_buf;
+static sigjmp_buf chk_fail_buf;
static void
handler (int sig)
@@ -133,7 +133,7 @@ static int num2 = 987654;
do { printf ("Failure on line %d\n", __LINE__); ret = 1; } while (0)
#define CHK_FAIL_START \
chk_fail_ok = 1; \
- if (! setjmp (chk_fail_buf)) \
+ if (! sigsetjmp (chk_fail_buf, 1)) \
{
#define CHK_FAIL_END \
chk_fail_ok = 0; \
diff --git a/dirent/Makefile b/dirent/Makefile
index 556f759..11b772e 100644
--- a/dirent/Makefile
+++ b/dirent/Makefile
@@ -58,13 +58,29 @@ tests := \
bug-readdir1 \
list \
opendir-tst1 \
+ tst-closedir-leaks \
tst-fdopendir \
tst-fdopendir2 \
+ tst-readdir-long \
+ tst-readdir-zero-inode \
+ tst-rewinddir \
tst-scandir \
tst-scandir64 \
tst-seekdir \
# tests
+ifeq ($(run-built-tests),yes)
+ifneq ($(PERL),no)
+generated += \
+ $(objpfx)tst-closedir-leaks-mem.out \
+ # generated
+
+tests-special += \
+ $(objpfx)tst-closedir-leaks-mem.out \
+ # tests-special
+endif # $(PERL) ! no
+endif # $(run-built-tests) == yes
+
CFLAGS-scandir.c += $(uses-callbacks)
CFLAGS-scandir64.c += $(uses-callbacks)
CFLAGS-scandir-tail.c += $(uses-callbacks)
@@ -74,3 +90,10 @@ CFLAGS-dirfd.c += $(config-cflags-wno-ignored-attributes)
include ../Rules
opendir-tst1-ARGS = --test-dir=${common-objpfx}dirent
+
+tst-closedir-leaks-ENV += MALLOC_TRACE=$(objpfx)tst-closedir-leaks.mtrace \
+ LD_PRELOAD=$(common-objpfx)/malloc/libc_malloc_debug.so
+
+$(objpfx)tst-closedir-leaks-mem.out: $(objpfx)tst-closedir-leaks.out
+ $(common-objpfx)malloc/mtrace $(objpfx)tst-closedir-leaks.mtrace > $@; \
+ $(evaluate-test)
diff --git a/dirent/tst-closedir-leaks.c b/dirent/tst-closedir-leaks.c
new file mode 100644
index 0000000..d9de119
--- /dev/null
+++ b/dirent/tst-closedir-leaks.c
@@ -0,0 +1,77 @@
+/* Test for resource leaks in closedir.
+ Copyright (C) 2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+#include <fcntl.h>
+#include <limits.h>
+#include <mcheck.h>
+#include <stdbool.h>
+#include <stdlib.h>
+#include <support/check.h>
+#include <support/descriptors.h>
+#include <support/readdir.h>
+#include <support/xdirent.h>
+#include <support/xunistd.h>
+
+static void
+one_test (enum support_readdir_op op, unsigned int read_limit,
+ bool use_fdopendir)
+{
+ struct support_descriptors *fds = support_descriptors_list ();
+ struct support_dirent e = { 0, };
+
+ DIR *stream;
+ if (use_fdopendir)
+ {
+ int fd = xopen (".", O_RDONLY | O_DIRECTORY, 0);
+ stream = xfdopendir (fd);
+ /* The descriptor fd will be closed by closedir below. */
+ }
+ else
+ stream = xopendir (".");
+ for (unsigned int i = 0; i < read_limit; ++i)
+ if (!support_readdir (stream, op, &e))
+ break;
+ TEST_COMPARE (closedir (stream), 0);
+
+ free (e.d_name);
+ support_descriptors_check (fds);
+ support_descriptors_free (fds);
+}
+
+static int
+do_test (void)
+{
+ mtrace ();
+
+ for (int use_fdopendir = 0; use_fdopendir < 2; ++use_fdopendir)
+ {
+ /* No reads, operation does not matter. */
+ one_test (SUPPORT_READDIR, 0, use_fdopendir);
+
+ for (enum support_readdir_op op = 0; op <= support_readdir_op_last();
+ ++op)
+ {
+ one_test (op, 1, use_fdopendir);
+ one_test (op, UINT_MAX, use_fdopendir); /* Unlimited reads. */
+ }
+ }
+
+ return 0;
+}
+
+#include <support/test-driver.c>
diff --git a/dirent/tst-readdir-long.c b/dirent/tst-readdir-long.c
new file mode 100644
index 0000000..409318f
--- /dev/null
+++ b/dirent/tst-readdir-long.c
@@ -0,0 +1,231 @@
+/* Test readdir (+variants) behavior with file names of varying length.
+ Copyright (C) 2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+#include <dirent.h>
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <support/check.h>
+#include <support/fuse.h>
+#include <support/support.h>
+#include <support/xdirent.h>
+#include <support/readdir.h>
+
+/* If positive, at this length an EMSGSIZE error is injected. */
+static _Atomic int inject_error_at_length;
+
+/* Return a file name, LENGTH bytes long. */
+static char *
+name_of_length (size_t length)
+{
+ char *result = xmalloc (length + 1);
+ unsigned int prefix = snprintf (result, length + 1, "%zu-", length);
+ for (size_t i = prefix; i < length; ++i)
+ result[i] = 'A' + ((length + i) % 26);
+ result[length] = '\0';
+ return result;
+}
+
+/* Add the directory entry at OFFSET to the stream D. */
+static uint64_t
+add_directory_entry (struct support_fuse_dirstream *d, uint64_t offset)
+{
+ unsigned int length = offset + 1;
+ if (length > 1000)
+ /* Longer than what is possible to produce with 256
+ UTF-8-encoded Unicode code points. */
+ return 0;
+
+ char *to_free = NULL;
+ const char *name;
+ uint64_t ino = 1000 + length; /* Arbitrary value, distinct from 1. */
+ uint32_t type = DT_REG;
+ if (offset <= 1)
+ {
+ type = DT_DIR;
+ name = ".." + !offset; /* "." or "..". */
+ ino = 1;
+ }
+ else if (length == 1000)
+ name = "short";
+ else
+ {
+ to_free = name_of_length (length);
+ name = to_free;
+ }
+
+ ++offset;
+ bool added = support_fuse_dirstream_add (d, ino, offset, type, name);
+ free (to_free);
+ if (added)
+ return offset;
+ else
+ return 0;
+}
+
+/* Set to true if getdents64 should produce only one entry. */
+static _Atomic bool one_entry_per_getdents64;
+
+static void
+fuse_thread (struct support_fuse *f, void *closure)
+{
+ struct fuse_in_header *inh;
+ while ((inh = support_fuse_next (f)) != NULL)
+ {
+ if (support_fuse_handle_mountpoint (f)
+ || (inh->nodeid == 1 && support_fuse_handle_directory (f)))
+ continue;
+ switch (inh->opcode)
+ {
+ case FUSE_READDIR:
+ if (inh->nodeid == 1)
+ {
+ uint64_t offset = support_fuse_cast (READ, inh)->offset;
+ if (inject_error_at_length == offset + 1)
+ support_fuse_reply_error (f, EMSGSIZE);
+ else
+ {
+ struct support_fuse_dirstream *d
+ = support_fuse_prepare_readdir (f);
+ while (true)
+ {
+ offset = add_directory_entry (d, offset);
+ if (offset == 0 || one_entry_per_getdents64
+ /* Error will be reported at next READDIR. */
+ || offset + 1 == inject_error_at_length)
+ break;
+ }
+ support_fuse_reply_prepared (f);
+ }
+ }
+ else
+ support_fuse_reply_error (f, EIO);
+ break;
+ default:
+ FAIL ("unexpected event %s", support_fuse_opcode (inh->opcode));
+ support_fuse_reply_error (f, EIO);
+ }
+ }
+}
+
+/* Run the tests for the specified readdir variant OP. */
+static void
+run_readdir_tests (struct support_fuse *f, enum support_readdir_op op)
+{
+ printf ("info: testing %s (inject_error=%d unbuffered=%d)\n",
+ support_readdir_function (op), inject_error_at_length,
+ (int) one_entry_per_getdents64);
+
+ bool testing_r = support_readdir_r_variant (op);
+
+ DIR *dir = xopendir (support_fuse_mountpoint (f));
+ struct support_dirent e = { 0, };
+ TEST_VERIFY (support_readdir (dir, op, &e));
+ TEST_COMPARE (e.d_ino, 1);
+ TEST_COMPARE_STRING (e.d_name, ".");
+
+ TEST_VERIFY (support_readdir (dir, op, &e));
+ TEST_COMPARE (e.d_ino, 1);
+ TEST_COMPARE_STRING (e.d_name, "..");
+
+ for (unsigned int i = 3; i < 1000; ++i)
+ {
+ if (i == inject_error_at_length)
+ /* Error expected below. */
+ break;
+
+ if (i >= sizeof ((struct dirent) { 0, }.d_name) && testing_r)
+ /* This is a readir_r test. The longer names are not
+ available because they do not fit into struct dirent. */
+ break;
+
+ char *expected_name = name_of_length (i);
+ TEST_COMPARE (strlen (expected_name), i);
+ TEST_VERIFY (support_readdir (dir, op, &e));
+ TEST_COMPARE (e.d_ino, 1000 + i);
+ TEST_COMPARE_STRING (e.d_name, expected_name);
+ free (expected_name);
+ }
+
+ if (inject_error_at_length == 0)
+ {
+ /* Check that the ENAMETOOLONG error does not prevent reading a
+ later short name. */
+ TEST_VERIFY (support_readdir (dir, op, &e));
+ TEST_COMPARE (e.d_ino, 2000);
+ TEST_COMPARE_STRING (e.d_name, "short");
+
+ if (testing_r)
+ /* An earlier name was too long. */
+ support_readdir_expect_error (dir, op, ENAMETOOLONG);
+ else
+ /* Entire directory read without error. */
+ TEST_VERIFY (!support_readdir (dir, op, &e));
+ }
+ else
+ support_readdir_expect_error (dir, op, EMSGSIZE);
+
+ free (e.d_name);
+ xclosedir (dir);
+}
+
+/* Run all readdir variants for both fully-buffered an unbuffered
+ (one-at-a-time) directory streams. */
+static void
+run_fully_buffered_and_singleton_buffers (struct support_fuse *f)
+{
+ for (int do_one_entry = 0; do_one_entry < 2; ++do_one_entry)
+ {
+ one_entry_per_getdents64 = do_one_entry;
+ for (enum support_readdir_op op = 0; op <= support_readdir_op_last();
+ ++op)
+ run_readdir_tests (f, op);
+ }
+}
+
+static int
+do_test (void)
+{
+ /* Smoke test for name_of_length. */
+ {
+ char *name = name_of_length (5);
+ TEST_COMPARE_STRING (name, "5-HIJ");
+ free (name);
+
+ name = name_of_length (6);
+ TEST_COMPARE_STRING (name, "6-IJKL");
+ free (name);
+ }
+
+ support_fuse_init ();
+ struct support_fuse *f = support_fuse_mount (fuse_thread, NULL);
+
+ run_fully_buffered_and_singleton_buffers (f);
+
+ inject_error_at_length = 100;
+ run_fully_buffered_and_singleton_buffers (f);
+
+ inject_error_at_length = 300;
+ run_fully_buffered_and_singleton_buffers (f);
+
+ support_fuse_unmount (f);
+ return 0;
+}
+
+#include <support/test-driver.c>
diff --git a/dirent/tst-readdir-zero-inode.c b/dirent/tst-readdir-zero-inode.c
new file mode 100644
index 0000000..af9fb94
--- /dev/null
+++ b/dirent/tst-readdir-zero-inode.c
@@ -0,0 +1,134 @@
+/* Test that readdir does not skip entries with d_ino == 0 (bug 12165).
+ Copyright (C) 2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+#include <stdlib.h>
+#include <support/check.h>
+#include <support/fuse.h>
+#include <support/readdir.h>
+#include <support/xdirent.h>
+
+/* Add the directory entry at OFFSET to the stream D. */
+static uint64_t
+add_directory_entry (struct support_fuse_dirstream *d, uint64_t offset)
+{
+ bool added = false;
+ ++offset;
+ switch (offset - 1)
+ {
+ case 0:
+ added = support_fuse_dirstream_add (d, 1, offset, DT_DIR, ".");
+ break;
+ case 1:
+ added = support_fuse_dirstream_add (d, 1, offset, DT_DIR, "..");
+ break;
+ case 2:
+ added = support_fuse_dirstream_add (d, 2, offset, DT_REG, "before");
+ break;
+ case 3:
+ added = support_fuse_dirstream_add (d, 0, offset, DT_REG, "zero");
+ break;
+ case 4:
+ added = support_fuse_dirstream_add (d, 3, offset, DT_REG, "after");
+ break;
+ }
+ if (added)
+ return offset;
+ else
+ return 0;
+}
+
+/* Set to true if getdents64 should produce only one entry. */
+static bool one_entry_per_getdents64;
+
+static void
+fuse_thread (struct support_fuse *f, void *closure)
+{
+ struct fuse_in_header *inh;
+ while ((inh = support_fuse_next (f)) != NULL)
+ {
+ if (support_fuse_handle_mountpoint (f)
+ || (inh->nodeid == 1 && support_fuse_handle_directory (f)))
+ continue;
+ switch (inh->opcode)
+ {
+ case FUSE_READDIR:
+ if (inh->nodeid == 1)
+ {
+ uint64_t offset = support_fuse_cast (READ, inh)->offset;
+ struct support_fuse_dirstream *d
+ = support_fuse_prepare_readdir (f);
+ while (true)
+ {
+ offset = add_directory_entry (d, offset);
+ if (offset == 0 || one_entry_per_getdents64)
+ break;
+ }
+ support_fuse_reply_prepared (f);
+ }
+ else
+ support_fuse_reply_error (f, EIO);
+ break;
+ default:
+ FAIL ("unexpected event %s", support_fuse_opcode (inh->opcode));
+ support_fuse_reply_error (f, EIO);
+ }
+ }
+}
+
+static int
+do_test (void)
+{
+ support_fuse_init ();
+
+ for (enum support_readdir_op op = 0; op <= support_readdir_op_last (); ++op)
+ {
+ struct support_fuse *f = support_fuse_mount (fuse_thread, NULL);
+ DIR *dir = xopendir (support_fuse_mountpoint (f));
+ struct support_dirent e = { 0, };
+
+ TEST_VERIFY (support_readdir (dir, op, &e));
+ TEST_COMPARE_STRING (e.d_name, ".");
+ TEST_COMPARE (e.d_ino, 1);
+
+ TEST_VERIFY (support_readdir (dir, op, &e));
+ TEST_COMPARE_STRING (e.d_name, "..");
+ TEST_COMPARE (e.d_ino, 1);
+
+ TEST_VERIFY (support_readdir (dir, op, &e));
+ TEST_COMPARE_STRING (e.d_name, "before");
+ TEST_COMPARE (e.d_ino, 2);
+
+ TEST_VERIFY (support_readdir (dir, op, &e));
+ TEST_COMPARE_STRING (e.d_name, "zero");
+ TEST_COMPARE (e.d_ino, 0);
+
+ TEST_VERIFY (support_readdir (dir, op, &e));
+ TEST_COMPARE_STRING (e.d_name, "after");
+ TEST_COMPARE (e.d_ino, 3);
+
+ TEST_VERIFY (!support_readdir (dir, op, &e));
+
+ free (e.d_name);
+ xclosedir (dir);
+ support_fuse_unmount (f);
+ }
+
+ return 0;
+}
+
+#include <support/test-driver.c>
diff --git a/dirent/tst-rewinddir.c b/dirent/tst-rewinddir.c
new file mode 100644
index 0000000..1479766
--- /dev/null
+++ b/dirent/tst-rewinddir.c
@@ -0,0 +1,207 @@
+/* Test for rewinddir, using FUSE.
+ Copyright (C) 2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+#include <dirent.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <support/check.h>
+#include <support/fuse.h>
+#include <support/readdir.h>
+#include <support/support.h>
+#include <support/xdirent.h>
+
+/* Return the file name at the indicated directory offset. */
+static char *
+name_at_offset (unsigned int offset)
+{
+ if (offset <= 1)
+ return xstrdup (".." + !offset); /* "." or "..". */
+ else
+ /* Pad the name with a lot of zeros, so that the dirent buffer gets
+ filled more quickly. */
+ return xasprintf ("file%0240u", offset);
+}
+
+/* This many directory entries, including "." and "..". */
+enum { directory_entries = 200 };
+
+/* Add the directory entry at OFFSET to the stream D. */
+static uint64_t
+add_directory_entry (struct support_fuse_dirstream *d, uint64_t offset)
+{
+ if (offset >= directory_entries)
+ return 0;
+
+ char *name = name_at_offset (offset);
+ uint64_t ino = 1000 + offset; /* Arbitrary value, distinct from 1. */
+ uint32_t type = DT_REG;
+ if (offset <= 1)
+ {
+ type = DT_DIR;
+ ino = 1;
+ }
+
+ ++offset;
+ bool added = support_fuse_dirstream_add (d, ino, offset, type, name);
+ free (name);
+ if (added)
+ return offset;
+ else
+ return 0;
+}
+
+/* Set to true if getdents64 should produce only one entry. */
+static bool one_entry_per_getdents64;
+
+static void
+fuse_thread (struct support_fuse *f, void *closure)
+{
+ struct fuse_in_header *inh;
+ while ((inh = support_fuse_next (f)) != NULL)
+ {
+ if (support_fuse_handle_mountpoint (f)
+ || (inh->nodeid == 1 && support_fuse_handle_directory (f)))
+ continue;
+ switch (inh->opcode)
+ {
+ case FUSE_READDIR:
+ if (inh->nodeid == 1)
+ {
+ uint64_t offset = support_fuse_cast (READ, inh)->offset;
+ struct support_fuse_dirstream *d
+ = support_fuse_prepare_readdir (f);
+ while (true)
+ {
+ offset = add_directory_entry (d, offset);
+ if (offset == 0 || one_entry_per_getdents64)
+ break;
+ }
+ support_fuse_reply_prepared (f);
+ }
+ else
+ support_fuse_reply_error (f, EIO);
+ break;
+ default:
+ FAIL ("unexpected event %s", support_fuse_opcode (inh->opcode));
+ support_fuse_reply_error (f, EIO);
+ }
+ }
+}
+
+/* Lists the entire directory from start to end. */
+static void
+verify_directory (DIR *dir, enum support_readdir_op op)
+{
+ struct support_dirent e = { 0, };
+
+ TEST_VERIFY (support_readdir (dir, op, &e));
+ TEST_COMPARE_STRING (e.d_name, ".");
+ TEST_VERIFY (support_readdir (dir, op, &e));
+ TEST_COMPARE_STRING (e.d_name, "..");
+ for (int i = 2; i < directory_entries; ++i)
+ {
+ char *expected = name_at_offset (i);
+ TEST_VERIFY (support_readdir (dir, op, &e));
+ TEST_COMPARE_STRING (e.d_name, expected);
+ free (expected);
+ }
+ TEST_VERIFY (!support_readdir (dir, op, &e));
+ free (e.d_name);
+}
+
+/* Run tests with rewinding after ENTRIES readdir calls. */
+static void
+rewind_after (unsigned int rewind_at)
+{
+ for (enum support_readdir_op op = 0; op <= support_readdir_op_last (); ++op)
+ {
+ printf ("info: testing %s (rewind_at=%u)\n",
+ support_readdir_function (op), rewind_at);
+
+ struct support_fuse *f = support_fuse_mount (fuse_thread, NULL);
+ DIR *dir = xopendir (support_fuse_mountpoint (f));
+ struct support_dirent e = { 0, };
+
+ switch (rewind_at)
+ {
+ case 0:
+ break;
+ case 1:
+ TEST_VERIFY (support_readdir (dir, op, &e));
+ TEST_COMPARE_STRING (e.d_name, ".");
+ break;
+ default:
+ TEST_VERIFY (support_readdir (dir, op, &e));
+ TEST_COMPARE_STRING (e.d_name, ".");
+ TEST_VERIFY (support_readdir (dir, op, &e));
+ TEST_COMPARE_STRING (e.d_name, "..");
+ for (int i = 2; i < directory_entries; ++i)
+ {
+ if (i == rewind_at)
+ break;
+ char *expected = name_at_offset (i);
+ TEST_VERIFY (support_readdir (dir, op, &e));
+ TEST_COMPARE_STRING (e.d_name, expected);
+ free (expected);
+ }
+ break;
+ }
+
+ errno = 0;
+ rewinddir (dir);
+ TEST_COMPARE (errno, 0);
+ verify_directory (dir, op);
+
+ free (e.d_name);
+ xclosedir (dir);
+ support_fuse_unmount (f);
+ }
+}
+
+static int
+do_test (void)
+{
+ support_fuse_init ();
+
+ /* One pass without rewinding to verify that the generated directory
+ content matches expectations. */
+ {
+ struct support_fuse *f = support_fuse_mount (fuse_thread, NULL);
+ DIR *dir = xopendir (support_fuse_mountpoint (f));
+ verify_directory (dir, SUPPORT_READDIR64);
+ xclosedir (dir);
+ support_fuse_unmount (f);
+ }
+
+ for (int do_unbuffered = 0; do_unbuffered < 2; ++do_unbuffered)
+ {
+ one_entry_per_getdents64 = do_unbuffered;
+
+ for (int i = 0; i < 20; ++i)
+ rewind_after (i);
+ rewind_after (50);
+ rewind_after (100);
+ rewind_after (150);
+ rewind_after (180);
+ rewind_after (199);
+ }
+
+ return 0;
+}
+
+#include <support/test-driver.c>
diff --git a/elf/Makefile b/elf/Makefile
index 0792b57..09d7709 100644
--- a/elf/Makefile
+++ b/elf/Makefile
@@ -457,6 +457,7 @@ tests += \
tst-single_threaded-pthread \
tst-sonamemove-dlopen \
tst-sonamemove-link \
+ tst-startup-errno \
tst-thrlock \
tst-tls-dlinfo \
tst-tls-ie \
@@ -1328,11 +1329,8 @@ $(objpfx)dl-allobjs.os: $(all-rtld-routines:%=$(objpfx)%.os)
# discovery mechanism is not compatible with the libc implementation
# when compiled for libc.
rtld-stubbed-symbols = \
- __GI___pthread_disable_asynccancel \
- __GI___pthread_enable_asynccancel \
__libc_assert_fail \
- __pthread_disable_asynccancel \
- __pthread_enable_asynccancel \
+ __syscall_cancel \
calloc \
free \
malloc \
@@ -3148,7 +3146,7 @@ $(objpfx)tst-dlopen-tlsreinit4: \
# tst-dlopen-tlsreinitmod3.so. The dependency is provided via
# $(objpfx)tst-dlopen-tlsreinitmod1.so.
tst-dlopen-tlsreinitmod2.so-no-z-defs = yes
-$(objpfx)tst-dlopen-tlsreinit.out: $(objpfx)tst-dlopen-tlsreinitmod1.so \
+$(objpfx)tst-dlopen-tlsreinit1.out: $(objpfx)tst-dlopen-tlsreinitmod1.so \
$(objpfx)tst-dlopen-tlsreinitmod2.so $(objpfx)tst-dlopen-tlsreinitmod3.so
# Reuse an audit module which provides ample debug logging.
$(objpfx)tst-dlopen-tlsreinit3.out: $(objpfx)tst-auditmod1.so
diff --git a/elf/dl-fptr.c b/elf/dl-fptr.c
deleted file mode 100644
index 575406a..0000000
--- a/elf/dl-fptr.c
+++ /dev/null
@@ -1,322 +0,0 @@
-/* Manage function descriptors. Generic version.
- Copyright (C) 1999-2024 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <https://www.gnu.org/licenses/>. */
-
-#include <libintl.h>
-#include <unistd.h>
-#include <string.h>
-#include <sys/param.h>
-#include <sys/mman.h>
-#include <link.h>
-#include <ldsodefs.h>
-#include <elf/dynamic-link.h>
-#include <dl-fptr.h>
-#include <dl-unmap-segments.h>
-#include <atomic.h>
-
-#ifndef ELF_MACHINE_BOOT_FPTR_TABLE_LEN
-/* ELF_MACHINE_BOOT_FPTR_TABLE_LEN should be greater than the number of
- dynamic symbols in ld.so. */
-# define ELF_MACHINE_BOOT_FPTR_TABLE_LEN 256
-#endif
-
-#ifndef ELF_MACHINE_LOAD_ADDRESS
-# error "ELF_MACHINE_LOAD_ADDRESS is not defined."
-#endif
-
-#ifndef COMPARE_AND_SWAP
-# define COMPARE_AND_SWAP(ptr, old, new) \
- (catomic_compare_and_exchange_bool_acq (ptr, new, old) == 0)
-#endif
-
-ElfW(Addr) _dl_boot_fptr_table [ELF_MACHINE_BOOT_FPTR_TABLE_LEN];
-
-static struct local
- {
- struct fdesc_table *root;
- struct fdesc *free_list;
- unsigned int npages; /* # of pages to allocate */
- /* the next to members MUST be consecutive! */
- struct fdesc_table boot_table;
- struct fdesc boot_fdescs[1024];
- }
-local =
- {
- .root = &local.boot_table,
- .npages = 2,
- .boot_table =
- {
- .len = sizeof (local.boot_fdescs) / sizeof (local.boot_fdescs[0]),
- .first_unused = 0
- }
- };
-
-/* Create a new fdesc table and return a pointer to the first fdesc
- entry. The fdesc lock must have been acquired already. */
-
-static struct fdesc_table *
-new_fdesc_table (struct local *l, size_t *size)
-{
- size_t old_npages = l->npages;
- size_t new_npages = old_npages + old_npages;
- struct fdesc_table *new_table;
-
- /* If someone has just created a new table, we return NULL to tell
- the caller to use the new table. */
- if (! COMPARE_AND_SWAP (&l->npages, old_npages, new_npages))
- return (struct fdesc_table *) NULL;
-
- *size = old_npages * GLRO(dl_pagesize);
- new_table = __mmap (NULL, *size,
- PROT_READ | PROT_WRITE, MAP_ANON | MAP_PRIVATE, -1, 0);
- if (new_table == MAP_FAILED)
- _dl_signal_error (errno, NULL, NULL,
- N_("cannot map pages for fdesc table"));
-
- new_table->len
- = (*size - sizeof (*new_table)) / sizeof (struct fdesc);
- new_table->first_unused = 1;
- return new_table;
-}
-
-
-static ElfW(Addr)
-make_fdesc (ElfW(Addr) ip, ElfW(Addr) gp)
-{
- struct fdesc *fdesc = NULL;
- struct fdesc_table *root;
- unsigned int old;
- struct local *l;
-
- ELF_MACHINE_LOAD_ADDRESS (l, local);
-
- retry:
- root = l->root;
- while (1)
- {
- old = root->first_unused;
- if (old >= root->len)
- break;
- else if (COMPARE_AND_SWAP (&root->first_unused, old, old + 1))
- {
- fdesc = &root->fdesc[old];
- goto install;
- }
- }
-
- if (l->free_list)
- {
- /* Get it from free-list. */
- do
- {
- fdesc = l->free_list;
- if (fdesc == NULL)
- goto retry;
- }
- while (! COMPARE_AND_SWAP ((ElfW(Addr) *) &l->free_list,
- (ElfW(Addr)) fdesc, fdesc->ip));
- }
- else
- {
- /* Create a new fdesc table. */
- size_t size;
- struct fdesc_table *new_table = new_fdesc_table (l, &size);
-
- if (new_table == NULL)
- goto retry;
-
- new_table->next = root;
- if (! COMPARE_AND_SWAP ((ElfW(Addr) *) &l->root,
- (ElfW(Addr)) root,
- (ElfW(Addr)) new_table))
- {
- /* Someone has just installed a new table. Return NULL to
- tell the caller to use the new table. */
- __munmap (new_table, size);
- goto retry;
- }
-
- /* Note that the first entry was reserved while allocating the
- memory for the new page. */
- fdesc = &new_table->fdesc[0];
- }
-
- install:
- fdesc->ip = ip;
- fdesc->gp = gp;
-
- return (ElfW(Addr)) fdesc;
-}
-
-
-static inline ElfW(Addr) * __attribute__ ((always_inline))
-make_fptr_table (struct link_map *map)
-{
- const ElfW(Sym) *symtab
- = (const void *) D_PTR (map, l_info[DT_SYMTAB]);
- const char *strtab = (const void *) D_PTR (map, l_info[DT_STRTAB]);
- ElfW(Addr) *fptr_table;
- size_t size;
- size_t len;
-
- /* XXX Apparently the only way to find out the size of the dynamic
- symbol section is to assume that the string table follows right
- afterwards... */
- len = ((strtab - (char *) symtab)
- / map->l_info[DT_SYMENT]->d_un.d_val);
- size = ((len * sizeof (fptr_table[0]) + GLRO(dl_pagesize) - 1)
- & -GLRO(dl_pagesize));
- /* XXX We don't support here in the moment systems without MAP_ANON.
- There probably are none for IA-64. In case this is proven wrong
- we will have to open /dev/null here and use the file descriptor
- instead of the hard-coded -1. */
- fptr_table = __mmap (NULL, size,
- PROT_READ | PROT_WRITE, MAP_ANON | MAP_PRIVATE,
- -1, 0);
- if (fptr_table == MAP_FAILED)
- _dl_signal_error (errno, NULL, NULL,
- N_("cannot map pages for fptr table"));
-
- if (COMPARE_AND_SWAP ((ElfW(Addr) *) &map->l_mach.fptr_table,
- (ElfW(Addr)) NULL, (ElfW(Addr)) fptr_table))
- map->l_mach.fptr_table_len = len;
- else
- __munmap (fptr_table, len * sizeof (fptr_table[0]));
-
- return map->l_mach.fptr_table;
-}
-
-
-ElfW(Addr)
-_dl_make_fptr (struct link_map *map, const ElfW(Sym) *sym,
- ElfW(Addr) ip)
-{
- ElfW(Addr) *ftab = map->l_mach.fptr_table;
- const ElfW(Sym) *symtab;
- Elf_Symndx symidx;
- struct local *l;
-
- if (__glibc_unlikely (ftab == NULL))
- ftab = make_fptr_table (map);
-
- symtab = (const void *) D_PTR (map, l_info[DT_SYMTAB]);
- symidx = sym - symtab;
-
- if (symidx >= map->l_mach.fptr_table_len)
- _dl_signal_error (0, NULL, NULL,
- N_("internal error: symidx out of range of fptr table"));
-
- while (ftab[symidx] == 0)
- {
- /* GOT has already been relocated in elf_get_dynamic_info -
- don't try to relocate it again. */
- ElfW(Addr) fdesc
- = make_fdesc (ip, map->l_info[DT_PLTGOT]->d_un.d_ptr);
-
- if (__builtin_expect (COMPARE_AND_SWAP (&ftab[symidx], (ElfW(Addr)) NULL,
- fdesc), 1))
- {
- /* No one has updated the entry and the new function
- descriptor has been installed. */
-#if 0
- const char *strtab
- = (const void *) D_PTR (map, l_info[DT_STRTAB]);
-
- ELF_MACHINE_LOAD_ADDRESS (l, local);
- if (l->root != &l->boot_table
- || l->boot_table.first_unused > 20)
- _dl_debug_printf ("created fdesc symbol `%s' at %lx\n",
- strtab + sym->st_name, ftab[symidx]);
-#endif
- break;
- }
- else
- {
- /* We created a duplicated function descriptor. We put it on
- free-list. */
- struct fdesc *f = (struct fdesc *) fdesc;
-
- ELF_MACHINE_LOAD_ADDRESS (l, local);
-
- do
- f->ip = (ElfW(Addr)) l->free_list;
- while (! COMPARE_AND_SWAP ((ElfW(Addr) *) &l->free_list,
- f->ip, fdesc));
- }
- }
-
- return ftab[symidx];
-}
-
-
-void
-_dl_unmap (struct link_map *map)
-{
- ElfW(Addr) *ftab = map->l_mach.fptr_table;
- struct fdesc *head = NULL, *tail = NULL;
- size_t i;
-
- _dl_unmap_segments (map);
-
- if (ftab == NULL)
- return;
-
- /* String together the fdesc structures that are being freed. */
- for (i = 0; i < map->l_mach.fptr_table_len; ++i)
- {
- if (ftab[i])
- {
- *(struct fdesc **) ftab[i] = head;
- head = (struct fdesc *) ftab[i];
- if (tail == NULL)
- tail = head;
- }
- }
-
- /* Prepend the new list to the free_list: */
- if (tail)
- do
- tail->ip = (ElfW(Addr)) local.free_list;
- while (! COMPARE_AND_SWAP ((ElfW(Addr) *) &local.free_list,
- tail->ip, (ElfW(Addr)) head));
-
- __munmap (ftab, (map->l_mach.fptr_table_len
- * sizeof (map->l_mach.fptr_table[0])));
-
- map->l_mach.fptr_table = NULL;
-}
-
-
-ElfW(Addr)
-_dl_lookup_address (const void *address)
-{
- ElfW(Addr) addr = (ElfW(Addr)) address;
- struct fdesc_table *t;
- unsigned long int i;
-
- for (t = local.root; t != NULL; t = t->next)
- {
- i = (struct fdesc *) addr - &t->fdesc[0];
- if (i < t->first_unused && addr == (ElfW(Addr)) &t->fdesc[i])
- {
- addr = t->fdesc[i].ip;
- break;
- }
- }
-
- return addr;
-}
diff --git a/elf/dl-load.c b/elf/dl-load.c
index 8a89b71..ac8e217 100644
--- a/elf/dl-load.c
+++ b/elf/dl-load.c
@@ -429,23 +429,7 @@ add_name_to_object (struct link_map *l, const char *name)
newname->name = memcpy (newname + 1, name, name_len);
newname->next = NULL;
newname->dont_free = 0;
- /* CONCURRENCY NOTES:
-
- Make sure the initialization of newname happens before its address is
- read from the lastp->next store below.
-
- GL(dl_load_lock) is held here (and by other writers, e.g. dlclose), so
- readers of libname_list->next (e.g. _dl_check_caller or the reads above)
- can use that for synchronization, however the read in _dl_name_match_p
- may be executed without holding the lock during _dl_runtime_resolve
- (i.e. lazy symbol resolution when a function of library l is called).
-
- The release MO store below synchronizes with the acquire MO load in
- _dl_name_match_p. Other writes need to synchronize with that load too,
- however those happen either early when the process is single threaded
- (dl_main) or when the library is unloaded (dlclose) and the user has to
- synchronize library calls with unloading. */
- atomic_store_release (&lastp->next, newname);
+ lastp->next = newname;
}
/* Standard search directories. */
@@ -1608,15 +1592,13 @@ open_verify (const char *name, int fd,
errval = errno;
errstring = (errval == 0
? N_("file too short") : N_("cannot read file data"));
- lose:
+ lose:;
+ struct dl_exception exception;
+ _dl_exception_create (&exception, name, errstring);
if (free_name)
- {
- char *realname = (char *) name;
- name = strdupa (realname);
- free (realname);
- }
+ free ((char *) name);
__close_nocancel (fd);
- _dl_signal_error (errval, name, NULL, errstring);
+ _dl_signal_exception (errval, &exception, NULL);
}
/* See whether the ELF header is what we expect. */
diff --git a/elf/dl-lookup.c b/elf/dl-lookup.c
index 19ad2a2..6d74332 100644
--- a/elf/dl-lookup.c
+++ b/elf/dl-lookup.c
@@ -93,22 +93,9 @@ check_match (const char *const undef_name,
const ElfW(Half) *verstab = map->l_versyms;
if (version != NULL)
{
- if (__glibc_unlikely (verstab == NULL))
- {
- /* We need a versioned symbol but haven't found any. If
- this is the object which is referenced in the verneed
- entry it is a bug in the library since a symbol must
- not simply disappear.
-
- It would also be a bug in the object since it means that
- the list of required versions is incomplete and so the
- tests in dl-version.c haven't found a problem.*/
- assert (version->filename == NULL
- || ! _dl_name_match_p (version->filename, map));
-
- /* Otherwise we accept the symbol. */
- }
- else
+ /* If there is no version information, accept the symbol. This
+ can happen during symbol interposition. */
+ if (__glibc_likely (verstab != NULL))
{
/* We can match the version information or use the
default one if it is not hidden. */
diff --git a/elf/dl-misc.c b/elf/dl-misc.c
index 848cef8..e30be5b 100644
--- a/elf/dl-misc.c
+++ b/elf/dl-misc.c
@@ -75,9 +75,7 @@ _dl_name_match_p (const char *name, const struct link_map *map)
if (strcmp (name, runp->name) == 0)
return 1;
else
- /* Synchronize with the release MO store in add_name_to_object.
- See CONCURRENCY NOTES in add_name_to_object in dl-load.c. */
- runp = atomic_load_acquire (&runp->next);
+ runp = runp->next;
return 0;
}
diff --git a/elf/dl-open.c b/elf/dl-open.c
index 8556e7b..8b4704c 100644
--- a/elf/dl-open.c
+++ b/elf/dl-open.c
@@ -486,22 +486,11 @@ _dl_open_relocate_one_object (struct dl_open_args *args, struct r_debug *r,
_dl_relocate_object (l, l->l_scope, reloc_mode, 0);
}
-
-/* struct dl_init_args and call_dl_init are used to call _dl_init with
- exception handling disabled. */
-struct dl_init_args
-{
- struct link_map *new;
- int argc;
- char **argv;
- char **env;
-};
-
static void
call_dl_init (void *closure)
{
- struct dl_init_args *args = closure;
- _dl_init (args->new, args->argc, args->argv, args->env);
+ struct dl_open_args *args = closure;
+ _dl_init (args->map, args->argc, args->argv, args->env);
}
static void
@@ -793,16 +782,7 @@ dl_open_worker (void *a)
/* Run the initializer functions of new objects. Temporarily
disable the exception handler, so that lazy binding failures are
fatal. */
- {
- struct dl_init_args init_args =
- {
- .new = new,
- .argc = args->argc,
- .argv = args->argv,
- .env = args->env
- };
- _dl_catch_exception (NULL, call_dl_init, &init_args);
- }
+ _dl_catch_exception (NULL, call_dl_init, args);
/* Now we can make the new map available in the global scope. */
if (mode & RTLD_GLOBAL)
diff --git a/elf/rtld.c b/elf/rtld.c
index 1e2e9ad..cb6b61d 100644
--- a/elf/rtld.c
+++ b/elf/rtld.c
@@ -386,7 +386,6 @@ static void dl_main (const ElfW(Phdr) *phdr, ElfW(Word) phnum,
/* These two variables cannot be moved into .data.rel.ro. */
static struct libname_list _dl_rtld_libname;
-static struct libname_list _dl_rtld_libname2;
/* Variable for statistics. */
RLTD_TIMING_DECLARE (relocate_time, static);
@@ -453,6 +452,8 @@ _dl_start_final (void *arg, struct dl_start_final_info *info)
{
ElfW(Addr) start_addr;
+ __rtld_malloc_init_stubs ();
+
/* Do not use an initializer for these members because it would
interfere with __rtld_static_init. */
GLRO (dl_find_object) = &_dl_find_object;
@@ -575,8 +576,6 @@ _dl_start (void *arg)
function, that way the compiler cannot put accesses to the GOT
before ELF_DYNAMIC_RELOCATE. */
- __rtld_malloc_init_stubs ();
-
#ifdef DONT_USE_BOOTSTRAP_MAP
return _dl_start_final (arg);
#else
@@ -1167,29 +1166,6 @@ rtld_setup_main_map (struct link_map *main_map)
/* _dl_rtld_libname.next = NULL; Already zero. */
GL(dl_rtld_map).l_libname = &_dl_rtld_libname;
- /* Ordinarily, we would get additional names for the loader from
- our DT_SONAME. This can't happen if we were actually linked as
- a static executable (detect this case when we have no DYNAMIC).
- If so, assume the filename component of the interpreter path to
- be our SONAME, and add it to our name list. */
- if (GL(dl_rtld_map).l_ld == NULL)
- {
- const char *p = NULL;
- const char *cp = _dl_rtld_libname.name;
-
- /* Find the filename part of the path. */
- while (*cp != '\0')
- if (*cp++ == '/')
- p = cp;
-
- if (p != NULL)
- {
- _dl_rtld_libname2.name = p;
- /* _dl_rtld_libname2.next = NULL; Already zero. */
- _dl_rtld_libname.next = &_dl_rtld_libname2;
- }
- }
-
has_interp = true;
break;
case PT_LOAD:
diff --git a/elf/tst-ldconfig-bad-aux-cache.c b/elf/tst-ldconfig-bad-aux-cache.c
index 7f1fbb5..8c2e62e 100644
--- a/elf/tst-ldconfig-bad-aux-cache.c
+++ b/elf/tst-ldconfig-bad-aux-cache.c
@@ -85,7 +85,7 @@ do_test (void)
support_capture_subprocess_check (&result, "execv", 0, sc_allow_none);
support_capture_subprocess_free (&result);
- xstat (path, &fs);
+ xstat64 (path, &fs);
size = fs.st_size;
/* Run 3 tests, each truncating aux-cache shorter and shorter. */
diff --git a/sysdeps/generic/dl-fptr.h b/elf/tst-startup-errno.c
index 71cfb62..59a1005 100644
--- a/sysdeps/generic/dl-fptr.h
+++ b/elf/tst-startup-errno.c
@@ -1,5 +1,5 @@
-/* Function descriptors. Generic version.
- Copyright (C) 1995-2024 Free Software Foundation, Inc.
+/* Test the value of errno at program startup.
+ Copyright (C) 2024 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -16,30 +16,43 @@
License along with the GNU C Library; if not, see
<https://www.gnu.org/licenses/>. */
-#ifndef dl_fptr_h
-#define dl_fptr_h 1
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+/* Verify that errno is 0 at first ELF constructor execution and at
+ the start of main. */
+
+static void set_ctor_errno (void) __attribute__((constructor));
+static int ctor_errno = -1;
+
+static void
+set_ctor_errno (void)
+{
+ ctor_errno = errno;
+}
+
+static int
+get_ctor_errno (void)
+{
+ return ctor_errno;
+}
+
+int
+main (void)
+{
+ if (errno != 0)
+ {
+ printf ("At start of main errno set to %d != 0\n", errno);
+ exit (1);
+ }
+
+ if (get_ctor_errno () != 0)
+ {
+ printf ("At ctor exec errno set to %d != 0\n", get_ctor_errno ());
+ exit (1);
+ }
+
+ return 0;
+}
-/* An FDESC is a function descriptor. */
-
-struct fdesc
- {
- ElfW(Addr) ip; /* code entry point */
- ElfW(Addr) gp; /* global pointer */
- };
-
-struct fdesc_table
- {
- struct fdesc_table *next;
- unsigned int len; /* # of entries in fdesc table */
- volatile unsigned int first_unused; /* index of first available entry */
- struct fdesc fdesc[0];
- };
-
-struct link_map;
-
-extern ElfW(Addr) _dl_boot_fptr_table [];
-
-extern ElfW(Addr) _dl_make_fptr (struct link_map *, const ElfW(Sym) *,
- ElfW(Addr));
-
-#endif /* !dl_fptr_h */
diff --git a/iconv/Makefile b/iconv/Makefile
index 65b4a44..de9d964 100644
--- a/iconv/Makefile
+++ b/iconv/Makefile
@@ -61,6 +61,10 @@ test-srcs := \
tst-translit-mchar \
# test-srcs
+tests-internal = \
+ tst-iconv-sticky-input-error \
+ # tests-internal
+
others = iconv_prog iconvconfig
install-others-programs = $(inst_bindir)/iconv
install-sbin = iconvconfig
@@ -76,8 +80,13 @@ include $(patsubst %,$(..)libof-iterator.mk,$(cpp-srcs-left))
ifeq ($(run-built-tests),yes)
xtests-special += $(objpfx)test-iconvconfig.out
-tests-special += $(objpfx)tst-iconv_prog.out
-tests-special += $(objpfx)tst-translit-mchar.out
+tests-special += \
+ $(objpfx)tst-iconv_prog-buffer-large.out \
+ $(objpfx)tst-iconv_prog-buffer-tiny.out \
+ $(objpfx)tst-iconv_prog-buffer.out \
+ $(objpfx)tst-iconv_prog.out \
+ $(objpfx)tst-translit-mchar.out \
+ # tests-special
endif
# Make a copy of the file because gconv module names are constructed
@@ -141,3 +150,17 @@ $(objpfx)tst-translit-mchar.out: tst-translit-mchar.sh \
'$(run-program-env)' '$(run-program-prefix-after-env)' \
$< > $@; \
$(evaluate-test)
+
+$(objpfx)tst-iconv_prog-buffer.out: \
+ tst-iconv_prog-buffer.sh $(objpfx)iconv_prog
+ $(BASH) $< $(common-objdir) '$(run-program-prefix)' > $@; \
+ $(evaluate-test)
+$(objpfx)tst-iconv_prog-buffer-tiny.out: \
+ tst-iconv_prog-buffer.sh $(objpfx)iconv_prog
+ $(BASH) $< $(common-objdir) '$(run-program-prefix)' \
+ '--buffer-size=1' > $@; \
+ $(evaluate-test)
+$(objpfx)tst-iconv_prog-buffer-large.out: \
+ tst-iconv_prog-buffer.sh $(objpfx)iconv_prog
+ $(BASH) $< $(common-objdir) '$(run-program-prefix)' '' '22' > $@; \
+ $(evaluate-test)
diff --git a/iconv/gconv_int.h b/iconv/gconv_int.h
index 9fece3e..cd452d9 100644
--- a/iconv/gconv_int.h
+++ b/iconv/gconv_int.h
@@ -331,4 +331,34 @@ extern wint_t __gconv_btwoc_ascii (struct __gconv_step *step, unsigned char c);
__END_DECLS
+/* Internal extensions for <gconv.h>. */
+
+/* Internal flags for __flags in struct __gconv_step_data. Overlaps
+ with flags for __gconv_open. */
+enum
+ {
+ /* The conversion encountered an illegal input character at one
+ point. */
+ __GCONV_ENCOUNTERED_ILLEGAL_INPUT = 1U << 30,
+ };
+
+/* Mark *STEP_DATA as having seen illegal input, and return
+ __GCONV_ILLEGAL_INPUT. */
+static inline int
+__gconv_mark_illegal_input (struct __gconv_step_data *step_data)
+{
+ step_data->__flags |= __GCONV_ENCOUNTERED_ILLEGAL_INPUT;
+ return __GCONV_ILLEGAL_INPUT;
+}
+
+/* Returns true if any of the conversion steps encountered illegal input. */
+static _Bool __attribute__ ((unused))
+__gconv_has_illegal_input (__gconv_t cd)
+{
+ for (size_t i = 0; i < cd->__nsteps; ++i)
+ if (cd->__data[i].__flags & __GCONV_ENCOUNTERED_ILLEGAL_INPUT)
+ return true;
+ return false;
+}
+
#endif /* gconv_int.h */
diff --git a/iconv/gconv_simple.c b/iconv/gconv_simple.c
index 257be2f..f22002c 100644
--- a/iconv/gconv_simple.c
+++ b/iconv/gconv_simple.c
@@ -207,7 +207,7 @@ ucs4_internal_loop (struct __gconv_step *step,
UCS4 does not allow such values. */
if (irreversible == NULL)
/* We are transliterating, don't try to correct anything. */
- return __GCONV_ILLEGAL_INPUT;
+ return __gconv_mark_illegal_input (step_data);
if (flags & __GCONV_IGNORE_ERRORS)
{
@@ -218,7 +218,7 @@ ucs4_internal_loop (struct __gconv_step *step,
*inptrp = inptr;
*outptrp = outptr;
- return __GCONV_ILLEGAL_INPUT;
+ return __gconv_mark_illegal_input (step_data);
}
put32 (outptr, inval);
@@ -276,7 +276,7 @@ ucs4_internal_loop_single (struct __gconv_step *step,
if (!(flags & __GCONV_IGNORE_ERRORS))
{
*inptrp -= cnt - (state->__count & 7);
- return __GCONV_ILLEGAL_INPUT;
+ return __gconv_mark_illegal_input (step_data);
}
}
else
@@ -453,7 +453,7 @@ ucs4le_internal_loop (struct __gconv_step *step,
UCS4 does not allow such values. */
if (irreversible == NULL)
/* We are transliterating, don't try to correct anything. */
- return __GCONV_ILLEGAL_INPUT;
+ return __gconv_mark_illegal_input (step_data);
if (flags & __GCONV_IGNORE_ERRORS)
{
@@ -464,7 +464,7 @@ ucs4le_internal_loop (struct __gconv_step *step,
*inptrp = inptr;
*outptrp = outptr;
- return __GCONV_ILLEGAL_INPUT;
+ return __gconv_mark_illegal_input (step_data);
}
put32 (outptr, inval);
@@ -523,7 +523,7 @@ ucs4le_internal_loop_single (struct __gconv_step *step,
represent the result. This is a genuine bug in the input since
UCS4 does not allow such values. */
if (!(flags & __GCONV_IGNORE_ERRORS))
- return __GCONV_ILLEGAL_INPUT;
+ return __gconv_mark_illegal_input (step_data);
}
else
{
@@ -969,7 +969,7 @@ ucs4le_internal_loop_single (struct __gconv_step *step,
surrogates pass through, attackers could make a security \
hole exploit by synthesizing any desired plane 1-16 \
character. */ \
- result = __GCONV_ILLEGAL_INPUT; \
+ result = __gconv_mark_illegal_input (step_data); \
if (! ignore_errors_p ()) \
break; \
inptr += 4; \
@@ -1012,7 +1012,7 @@ ucs4le_internal_loop_single (struct __gconv_step *step,
them. (Catching this here is not security relevant.) */ \
if (! ignore_errors_p ()) \
{ \
- result = __GCONV_ILLEGAL_INPUT; \
+ result = __gconv_mark_illegal_input (step_data); \
break; \
} \
inptr += 2; \
@@ -1061,7 +1061,7 @@ ucs4le_internal_loop_single (struct __gconv_step *step,
character. */ \
if (! ignore_errors_p ()) \
{ \
- result = __GCONV_ILLEGAL_INPUT; \
+ result = __gconv_mark_illegal_input (step_data); \
break; \
} \
inptr += 4; \
diff --git a/iconv/gconv_trans.c b/iconv/gconv_trans.c
index 44f0fd8..54c4f3a 100644
--- a/iconv/gconv_trans.c
+++ b/iconv/gconv_trans.c
@@ -232,6 +232,6 @@ __gconv_transliterate (struct __gconv_step *step,
}
/* Haven't found a match. */
- return __GCONV_ILLEGAL_INPUT;
+ return __gconv_mark_illegal_input (step_data);
}
libc_hidden_def (__gconv_transliterate)
diff --git a/iconv/iconv_prog.c b/iconv/iconv_prog.c
index a765b1a..a2f1d34 100644
--- a/iconv/iconv_prog.c
+++ b/iconv/iconv_prog.c
@@ -31,9 +31,6 @@
#include <string.h>
#include <unistd.h>
#include <libintl.h>
-#ifdef _POSIX_MAPPED_FILES
-# include <sys/mman.h>
-#endif
#include <charmap.h>
#include <gconv_int.h>
#include "iconv_prog.h"
@@ -50,7 +47,11 @@
static void print_version (FILE *stream, struct argp_state *state);
void (*argp_program_version_hook) (FILE *, struct argp_state *) = print_version;
-#define OPT_VERBOSE 1000
+enum
+ {
+ OPT_VERBOSE = 1000,
+ OPT_BUFFER_SIZE,
+ };
#define OPT_LIST 'l'
/* Definitions of arguments for argp functions. */
@@ -66,6 +67,10 @@ static const struct argp_option options[] =
{ "output", 'o', N_("FILE"), 0, N_("output file") },
{ "silent", 's', NULL, 0, N_("suppress warnings") },
{ "verbose", OPT_VERBOSE, NULL, 0, N_("print progress information") },
+ /* This is an internal option intended for testing only. Very small
+ buffers do not work with all character sets. */
+ { "buffer-size", OPT_BUFFER_SIZE, N_("BYTE-COUNT"), OPTION_HIDDEN,
+ N_("size of in-memory scratch buffer") },
{ NULL, 0, NULL, 0, NULL }
};
@@ -103,13 +108,21 @@ static int list;
/* If nonzero omit invalid character from output. */
int omit_invalid;
+/* Current index in argv (after command line processing) with the
+ input file name. */
+static int current_input_file_index;
+
+/* Size of the temporary, in-memory buffer. Exceeding it needs
+ spooling to disk in a temporary file. Controlled by --buffer_size. */
+static size_t output_buffer_size = 1024 * 1024;
+
/* Prototypes for the functions doing the actual work. */
-static int process_block (iconv_t cd, char *addr, size_t len, FILE **output,
- const char *output_file);
-static int process_fd (iconv_t cd, int fd, FILE **output,
- const char *output_file);
-static int process_file (iconv_t cd, FILE *input, FILE **output,
- const char *output_file);
+static void prepare_output_file (char **argv);
+static void close_output_file (__gconv_t cd, int status);
+static int process_block (iconv_t cd, char **addr, size_t *len,
+ off64_t file_offset, bool *incomplete);
+static int process_fd (iconv_t cd, int fd);
+static int process_file (iconv_t cd, FILE *input);
static void print_known_names (void);
@@ -117,7 +130,6 @@ int
main (int argc, char *argv[])
{
int status = EXIT_SUCCESS;
- int remaining;
__gconv_t cd;
struct charmap_t *from_charmap = NULL;
struct charmap_t *to_charmap = NULL;
@@ -129,7 +141,7 @@ main (int argc, char *argv[])
textdomain (_libc_intl_domainname);
/* Parse and process arguments. */
- argp_parse (&argp, argc, argv, 0, &remaining, NULL);
+ argp_parse (&argp, argc, argv, 0, &current_input_file_index, NULL);
/* List all coded character sets if wanted. */
if (list)
@@ -164,7 +176,8 @@ main (int argc, char *argv[])
if (from_charmap != NULL || to_charmap != NULL)
/* Construct the conversion table and do the conversion. */
status = charmap_conversion (from_code, from_charmap, to_code, to_charmap,
- argc, remaining, argv, output_file);
+ argc, current_input_file_index, argv,
+ output_file);
else
{
struct gconv_spec conv_spec;
@@ -238,83 +251,45 @@ conversions from `%s' and to `%s' are not supported"),
_("failed to start conversion processing"));
}
- /* The output file. Will be opened when we are ready to produce
- output. */
- FILE *output = NULL;
+ prepare_output_file (argv);
/* Now process the remaining files. Write them to stdout or the file
specified with the `-o' parameter. If we have no file given as
the parameter process all from stdin. */
- if (remaining == argc)
+ if (current_input_file_index == argc)
{
- if (process_file (cd, stdin, &output, output_file) != 0)
+ if (process_file (cd, stdin) != 0)
status = EXIT_FAILURE;
}
else
do
{
-#ifdef _POSIX_MAPPED_FILES
- struct stat64 st;
- char *addr;
-#endif
int fd, ret;
if (verbose)
- fprintf (stderr, "%s:\n", argv[remaining]);
- if (strcmp (argv[remaining], "-") == 0)
- fd = 0;
+ fprintf (stderr, "%s:\n", argv[current_input_file_index]);
+ if (strcmp (argv[current_input_file_index], "-") == 0)
+ fd = STDIN_FILENO;
else
{
- fd = open (argv[remaining], O_RDONLY);
+ fd = open (argv[current_input_file_index], O_RDONLY);
if (fd == -1)
{
error (0, errno, _("cannot open input file `%s'"),
- argv[remaining]);
+ argv[current_input_file_index]);
status = EXIT_FAILURE;
continue;
}
}
-#ifdef _POSIX_MAPPED_FILES
- /* We have possibilities for reading the input file. First try
- to mmap() it since this will provide the fastest solution. */
- if (fstat64 (fd, &st) == 0
- && ((addr = mmap (NULL, st.st_size, PROT_READ, MAP_PRIVATE,
- fd, 0)) != MAP_FAILED))
- {
- /* Yes, we can use mmap(). The descriptor is not needed
- anymore. */
- if (close (fd) != 0)
- error (EXIT_FAILURE, errno,
- _("error while closing input `%s'"),
- argv[remaining]);
-
- ret = process_block (cd, addr, st.st_size, &output,
- output_file);
-
- /* We don't need the input data anymore. */
- munmap ((void *) addr, st.st_size);
-
- if (ret != 0)
- {
- status = EXIT_FAILURE;
-
- if (ret < 0)
- /* We cannot go on with producing output since it might
- lead to problem because the last output might leave
- the output stream in an undefined state. */
- break;
- }
- }
- else
-#endif /* _POSIX_MAPPED_FILES */
{
/* Read the file in pieces. */
- ret = process_fd (cd, fd, &output, output_file);
+ ret = process_fd (cd, fd);
/* Now close the file. */
- close (fd);
+ if (fd != STDIN_FILENO)
+ close (fd);
if (ret != 0)
{
@@ -329,11 +304,15 @@ conversions from `%s' and to `%s' are not supported"),
}
}
}
- while (++remaining < argc);
+ while (++current_input_file_index < argc);
+
+ /* Ensure that iconv -c still exits with failure if iconv (the
+ function) has failed with E2BIG instead of EILSEQ. */
+ if (__gconv_has_illegal_input (cd))
+ status = EXIT_FAILURE;
/* Close the output file now. */
- if (output != NULL && fclose (output))
- error (EXIT_FAILURE, errno, _("error while closing output file"));
+ close_output_file (cd, status);
}
return status;
@@ -363,6 +342,14 @@ parse_opt (int key, char *arg, struct argp_state *state)
/* Omit invalid characters from output. */
omit_invalid = 1;
break;
+ case OPT_BUFFER_SIZE:
+ {
+ int i = atoi (arg);
+ if (i <= 0)
+ error (EXIT_FAILURE, 0, _("invalid buffer size: %s"), arg);
+ output_buffer_size = i;
+ }
+ break;
case OPT_VERBOSE:
verbose = 1;
break;
@@ -409,115 +396,299 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\
fprintf (stream, gettext ("Written by %s.\n"), "Ulrich Drepper");
}
+/* Command line index of the last input file that overlaps with the
+ output file. Zero means no temporary file is ever required. */
+static int last_overlapping_file_index;
-static int
-write_output (const char *outbuf, const char *outptr, FILE **output,
- const char *output_file)
+/* This is set to true if the output is written to a temporary file. */
+static bool output_using_temporary_file;
+
+/* This is the file descriptor that will be used by write_output. */
+static int output_fd = -1;
+
+/* Pointers at the start and end of the fixed-size output buffer. */
+static char *output_buffer_start;
+
+/* Current write position in the output buffer. */
+static char *output_buffer_current;
+
+/* Remaining bytes after output_buffer_current in the output buffer. */
+static size_t output_buffer_remaining;
+
+
+/* Reduce the buffer size when writing directly to the output file, to
+ reduce cache utilization. */
+static size_t copy_buffer_size = BUFSIZ;
+
+static void
+output_error (void)
{
- /* We have something to write out. */
- int errno_save = errno;
+ error (EXIT_FAILURE, errno, _("cannot open output file"));
+}
- if (*output == NULL)
+static void
+input_error (const char *path)
+{
+ error (0, errno, _("cannot open input file `%s'"), path);
+}
+
+/* Opens output_file for writing, truncating it. */
+static void
+open_output_direct (void)
+{
+ output_fd = open64 (output_file, O_WRONLY | O_CREAT | O_TRUNC, 0777);
+ if (output_fd < 0)
+ output_error ();
+}
+
+static void
+prepare_output_file (char **argv)
+{
+ if (copy_buffer_size > output_buffer_size)
+ copy_buffer_size = output_buffer_size;
+
+ if (output_file == NULL || strcmp (output_file, "-") == 0)
{
- /* Determine output file. */
- if (output_file != NULL && strcmp (output_file, "-") != 0)
+ /* No buffering is required when writing to standard output
+ because input overlap is expected to be solved externally. */
+ output_fd = STDOUT_FILENO;
+ output_buffer_size = copy_buffer_size;
+ }
+ else
+ {
+ /* If iconv creates the output file, no overlap is possible. */
+ output_fd = open64 (output_file, O_WRONLY | O_CREAT | O_EXCL, 0777);
+ if (output_fd >= 0)
+ output_buffer_size = copy_buffer_size;
+ else
{
- *output = fopen (output_file, "w");
- if (*output == NULL)
- error (EXIT_FAILURE, errno, _("cannot open output file"));
+ /* Otherwise, check if any of the input files overlap with the
+ output file. */
+ struct statx st;
+ if (statx (AT_FDCWD, output_file, 0, STATX_INO | STATX_MODE, &st)
+ != 0)
+ output_error ();
+ uint32_t out_dev_minor = st.stx_dev_minor;
+ uint32_t out_dev_major = st.stx_dev_major;
+ uint64_t out_ino = st.stx_ino;
+
+ int idx = current_input_file_index;
+ while (true)
+ {
+ /* Special case: no input files means standard input. */
+ if (argv[idx] == NULL && idx != current_input_file_index)
+ break;
+
+ int ret;
+ if (argv[idx] == NULL || strcmp (argv[idx], "-") == 0)
+ ret = statx (STDIN_FILENO, "", AT_EMPTY_PATH, STATX_INO, &st);
+ else
+ ret = statx (AT_FDCWD, argv[idx], 0, STATX_INO, &st);
+ if (ret != 0)
+ {
+ input_error (argv[idx]);
+ exit (EXIT_FAILURE);
+ }
+ if (out_dev_minor == st.stx_dev_minor
+ && out_dev_major == st.stx_dev_major
+ && out_ino == st.stx_ino)
+ {
+ if (argv[idx] == NULL)
+ /* Corner case: index of NULL would be larger than
+ idx while converting, triggering a switch away
+ from the temporary file. */
+ last_overlapping_file_index = INT_MAX;
+ else
+ last_overlapping_file_index = idx;
+ }
+
+ if (argv[idx] == NULL)
+ break;
+ ++idx;
+ }
+
+ /* If there is no overlap, avoid using a temporary file. */
+ if (last_overlapping_file_index == 0)
+ {
+ open_output_direct ();
+ output_buffer_size = copy_buffer_size;
+ }
}
- else
- *output = stdout;
}
- if (fwrite (outbuf, 1, outptr - outbuf, *output) < (size_t) (outptr - outbuf)
- || ferror (*output))
+ output_buffer_start = malloc (output_buffer_size);
+ if (output_buffer_start == NULL)
+ output_error ();
+ output_buffer_current = output_buffer_start;
+ output_buffer_remaining = output_buffer_size;
+}
+
+/* Write out the range [first, last), terminating the process on write
+ error. */
+static void
+write_fully (int fd, const char *first, const char *last)
+{
+ while (first < last)
{
- /* Error occurred while printing the result. */
- error (0, 0, _("\
+ ssize_t ret = write (fd, first, last - first);
+ if (ret == 0)
+ {
+ errno = ENOSPC;
+ output_error ();
+ }
+ if (ret < 0)
+ error (EXIT_FAILURE, errno, _("\
conversion stopped due to problem in writing the output"));
- return -1;
+ first += ret;
+ }
+}
+
+static void
+flush_output (void)
+{
+ bool temporary_file_not_needed
+ = current_input_file_index > last_overlapping_file_index;
+ if (output_fd < 0)
+ {
+ if (temporary_file_not_needed)
+ open_output_direct ();
+ else
+ {
+ /* Create an anonymous temporary file. */
+ FILE *fp = tmpfile ();
+ if (fp == NULL)
+ output_error ();
+ output_fd = dup (fileno (fp));
+ if (output_fd < 0)
+ output_error ();
+ fclose (fp);
+ output_using_temporary_file = true;
+ }
+ /* Either way, no longer use a memory-only staging buffer. */
+ output_buffer_size = copy_buffer_size;
}
+ else if (output_using_temporary_file && temporary_file_not_needed)
+ {
+ /* The temporary file is no longer needed. Switch to direct
+ output, replacing output_fd. */
+ int temp_fd = output_fd;
+ open_output_direct ();
+
+ /* Copy over the data spooled to the temporary file. */
+ if (lseek (temp_fd, 0, SEEK_SET) < 0)
+ output_error ();
+ while (true)
+ {
+ char buf[BUFSIZ];
+ ssize_t ret = read (temp_fd, buf, sizeof (buf));
+ if (ret < 0)
+ output_error ();
+ if (ret == 0)
+ break;
+ write_fully (output_fd, buf, buf + ret);
+ }
+ close (temp_fd);
- errno = errno_save;
+ /* No longer using a temporary file from now on. */
+ output_using_temporary_file = false;
+ output_buffer_size = copy_buffer_size;
+ }
- return 0;
+ write_fully (output_fd, output_buffer_start, output_buffer_current);
+ output_buffer_current = output_buffer_start;
+ output_buffer_remaining = output_buffer_size;
}
+static void
+close_output_file (__gconv_t cd, int status)
+{
+ /* Do not perform a flush if a temporary file or the in-memory
+ buffer is in use and there was an error. It would clobber the
+ overlapping input file. */
+ if (status != EXIT_SUCCESS && !omit_invalid &&
+ (output_using_temporary_file || output_fd < 0))
+ return;
+
+ /* All the input text is processed. For state-dependent character
+ sets we have to flush the state now.
+
+ The current_input_file_index variable is now larger than
+ last_overlapping_file_index, so the flush_output calls switch
+ away from the temporary file. */
+ size_t n = iconv (cd, NULL, NULL,
+ &output_buffer_current, &output_buffer_remaining);
+ if (n == (size_t) -1 && errno == E2BIG)
+ {
+ /* Try again if the state flush exceeded the buffer space. */
+ flush_output ();
+ n = iconv (cd, NULL, NULL,
+ &output_buffer_current, &output_buffer_remaining);
+ }
+ int saved_errno = errno;
+ flush_output ();
+ if (n == (size_t) -1 && !omit_invalid)
+ {
+ errno = saved_errno;
+ output_error ();
+ }
+
+ if (output_fd == STDOUT_FILENO)
+ {
+ /* Close standard output in safe manner, to report certain
+ ENOSPC errors. */
+ output_fd = dup (output_fd);
+ if (output_fd < 0)
+ output_error ();
+ }
+ if (close (output_fd) < 0)
+ output_error ();
+}
+/* CD is the iconv handle. Input processing starts at *ADDR, and
+ consumes upto *LEN bytes. *ADDR and *LEN are updated. FILE_OFFSET
+ is the file offset of the data initially at ADDR. *INCOMPLETE is
+ set to true if conversion stops due to an incomplete input
+ sequence. */
static int
-process_block (iconv_t cd, char *addr, size_t len, FILE **output,
- const char *output_file)
+process_block (iconv_t cd, char **addr, size_t *len, off64_t file_offset,
+ bool *incomplete)
{
-#define OUTBUF_SIZE 32768
- const char *start = addr;
- char outbuf[OUTBUF_SIZE];
- char *outptr;
- size_t outlen;
+ const char *start = *addr;
size_t n;
int ret = 0;
- while (len > 0)
+ while (*len > 0)
{
- outptr = outbuf;
- outlen = OUTBUF_SIZE;
- n = iconv (cd, &addr, &len, &outptr, &outlen);
+ n = iconv (cd, addr, len,
+ &output_buffer_current, &output_buffer_remaining);
if (n == (size_t) -1 && omit_invalid && errno == EILSEQ)
{
ret = 1;
- if (len == 0)
+ if (*len == 0)
n = 0;
else
errno = E2BIG;
}
- if (outptr != outbuf)
- {
- ret = write_output (outbuf, outptr, output, output_file);
- if (ret != 0)
- break;
- }
-
if (n != (size_t) -1)
- {
- /* All the input test is processed. For state-dependent
- character sets we have to flush the state now. */
- outptr = outbuf;
- outlen = OUTBUF_SIZE;
- n = iconv (cd, NULL, NULL, &outptr, &outlen);
-
- if (outptr != outbuf)
- {
- ret = write_output (outbuf, outptr, output, output_file);
- if (ret != 0)
- break;
- }
-
- if (n != (size_t) -1)
- break;
-
- if (omit_invalid && errno == EILSEQ)
- {
- ret = 1;
- break;
- }
- }
+ break;
- if (errno != E2BIG)
+ if (errno == E2BIG)
+ flush_output ();
+ else
{
/* iconv() ran into a problem. */
switch (errno)
{
case EILSEQ:
if (! omit_invalid)
- error (0, 0, _("illegal input sequence at position %ld"),
- (long int) (addr - start));
+ error (0, 0, _("illegal input sequence at position %lld"),
+ (long long int) (file_offset + (*addr - start)));
break;
case EINVAL:
- error (0, 0, _("\
-incomplete character or shift sequence at end of buffer"));
- break;
+ *incomplete = true;
+ return ret;
case EBADF:
error (0, 0, _("internal error (illegal descriptor)"));
break;
@@ -535,90 +706,60 @@ incomplete character or shift sequence at end of buffer"));
static int
-process_fd (iconv_t cd, int fd, FILE **output, const char *output_file)
+process_fd (iconv_t cd, int fd)
{
- /* we have a problem with reading from a descriptor since we must not
- provide the iconv() function an incomplete character or shift
- sequence at the end of the buffer. Since we have to deal with
- arbitrary encodings we must read the whole text in a buffer and
- process it in one step. */
- static char *inbuf = NULL;
- static size_t maxlen = 0;
- char *inptr = NULL;
- size_t actlen = 0;
-
- while (actlen < maxlen)
+ char inbuf[BUFSIZ];
+ char *inbuf_end = inbuf + sizeof (inbuf);
+ size_t inbuf_used = 0;
+ off64_t file_offset = 0;
+ int status = 0;
+ bool incomplete = false;
+
+ while (true)
{
- ssize_t n = read (fd, inptr, maxlen - actlen);
-
- if (n == 0)
- /* No more text to read. */
- break;
-
- if (n == -1)
+ char *p = inbuf + inbuf_used;
+ ssize_t read_ret = read (fd, p, inbuf_end - p);
+ if (read_ret == 0)
+ {
+ /* On EOF, check if the previous iconv invocation saw an
+ incomplete sequence. */
+ if (incomplete)
+ {
+ error (0, 0, _("\
+incomplete character or shift sequence at end of buffer"));
+ return 1;
+ }
+ return 0;
+ }
+ if (read_ret < 0)
{
- /* Error while reading. */
error (0, errno, _("error while reading the input"));
return -1;
}
-
- inptr += n;
- actlen += n;
+ inbuf_used += read_ret;
+ incomplete = false;
+ p = inbuf;
+ int ret = process_block (cd, &p, &inbuf_used, file_offset, &incomplete);
+ if (ret != 0)
+ {
+ status = ret;
+ if (ret < 0)
+ break;
+ }
+ /* The next loop iteration consumes the leftover bytes. */
+ memmove (inbuf, p, inbuf_used);
+ file_offset += read_ret - inbuf_used;
}
-
- if (actlen == maxlen)
- while (1)
- {
- ssize_t n;
- char *new_inbuf;
-
- /* Increase the buffer. */
- new_inbuf = (char *) realloc (inbuf, maxlen + 32768);
- if (new_inbuf == NULL)
- {
- error (0, errno, _("unable to allocate buffer for input"));
- return -1;
- }
- inbuf = new_inbuf;
- maxlen += 32768;
- inptr = inbuf + actlen;
-
- do
- {
- n = read (fd, inptr, maxlen - actlen);
-
- if (n == 0)
- /* No more text to read. */
- break;
-
- if (n == -1)
- {
- /* Error while reading. */
- error (0, errno, _("error while reading the input"));
- return -1;
- }
-
- inptr += n;
- actlen += n;
- }
- while (actlen < maxlen);
-
- if (n == 0)
- /* Break again so we leave both loops. */
- break;
- }
-
- /* Now we have all the input in the buffer. Process it in one run. */
- return process_block (cd, inbuf, actlen, output, output_file);
+ return status;
}
static int
-process_file (iconv_t cd, FILE *input, FILE **output, const char *output_file)
+process_file (iconv_t cd, FILE *input)
{
/* This should be safe since we use this function only for `stdin' and
we haven't read anything so far. */
- return process_fd (cd, fileno (input), output, output_file);
+ return process_fd (cd, fileno (input));
}
diff --git a/iconv/loop.c b/iconv/loop.c
index 5340daf..199fb28 100644
--- a/iconv/loop.c
+++ b/iconv/loop.c
@@ -123,8 +123,7 @@
`continue' must reach certain points. */
#define STANDARD_FROM_LOOP_ERR_HANDLER(Incr) \
{ \
- result = __GCONV_ILLEGAL_INPUT; \
- \
+ result = __gconv_mark_illegal_input (step_data); \
if (! ignore_errors_p ()) \
break; \
\
@@ -142,7 +141,7 @@
points. */
#define STANDARD_TO_LOOP_ERR_HANDLER(Incr) \
{ \
- result = __GCONV_ILLEGAL_INPUT; \
+ result = __gconv_mark_illegal_input (step_data); \
\
if (irreversible == NULL) \
/* This means we are in call from __gconv_transliterate. In this \
diff --git a/iconv/tst-iconv-sticky-input-error.c b/iconv/tst-iconv-sticky-input-error.c
new file mode 100644
index 0000000..34a245f
--- /dev/null
+++ b/iconv/tst-iconv-sticky-input-error.c
@@ -0,0 +1,135 @@
+/* Test __GCONV_ENCOUNTERED_ILLEGAL_INPUT, as used by iconv -c (bug 32046).
+ Copyright (C) 2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+
+#include <array_length.h>
+#include <errno.h>
+#include <gconv_int.h>
+#include <iconv.h>
+#include <stdbool.h>
+#include <support/check.h>
+#include <support/support.h>
+#include <support/test-driver.h>
+#include <stdio.h>
+
+/* FROM is the input character set, TO the output character set. If
+ IGNORE is true, the iconv descriptor is set up in the same way as
+ iconv -c would. INPUT is the input string, EXPECTED_OUTPUT the
+ output. OUTPUT_LIMIT is a byte count, specifying how many input
+ bytes are passed to the iconv function on each invocation. */
+static void
+one_direction (const char *from, const char *to, bool ignore,
+ const char *input, const char *expected_output,
+ size_t output_limit)
+{
+ if (test_verbose)
+ {
+ char *quoted_input = support_quote_string (input);
+ char *quoted_output = support_quote_string (expected_output);
+ printf ("info: testing from=\"%s\" to=\"%s\" ignore=%d input=\"%s\""
+ " expected_output=\"%s\" output_limit=%zu\n",
+ from, to, (int) ignore, quoted_input,
+ quoted_output, output_limit);
+ free (quoted_output);
+ free (quoted_input);
+ }
+
+ __gconv_t cd;
+ if (ignore)
+ {
+ struct gconv_spec conv_spec;
+ TEST_VERIFY_EXIT (__gconv_create_spec (&conv_spec, from, to)
+ == &conv_spec);
+ conv_spec.ignore = true;
+ cd = (iconv_t) -1;
+ TEST_COMPARE (__gconv_open (&conv_spec, &cd, 0), __GCONV_OK);
+ __gconv_destroy_spec (&conv_spec);
+ }
+ else
+ cd = iconv_open (to, from);
+ TEST_VERIFY_EXIT (cd != (iconv_t) -1);
+
+ char *input_ptr = (char *) input;
+ size_t input_len = strlen (input);
+ char output_buf[20];
+ char *output_ptr = output_buf;
+ size_t output_len;
+ do
+ {
+ output_len = array_end (output_buf) - output_ptr;
+ if (output_len > output_limit)
+ /* Limit the buffer size as requested by the caller. */
+ output_len = output_limit;
+ TEST_VERIFY_EXIT (output_len > 0);
+ if (input_len == 0)
+ /* Trigger final flush. */
+ input_ptr = NULL;
+ char *old_input_ptr = input_ptr;
+ size_t ret = iconv (cd, &input_ptr, &input_len,
+ &output_ptr, &output_len);
+ if (ret == (size_t) -1)
+ {
+ if (errno != EILSEQ)
+ TEST_COMPARE (errno, E2BIG);
+ }
+
+ if (input_ptr == old_input_ptr)
+ /* Avoid endless loop if stuck on an invalid input character. */
+ break;
+ }
+ while (input_ptr != NULL);
+
+ /* Test the sticky illegal input bit. */
+ TEST_VERIFY (__gconv_has_illegal_input (cd));
+
+ TEST_COMPARE_BLOB (expected_output, strlen (expected_output),
+ output_buf, output_ptr - output_buf);
+
+ TEST_COMPARE (iconv_close (cd), 0);
+}
+
+static int
+do_test (void)
+{
+ static const char charsets[][14] =
+ {
+ "ASCII",
+ "ASCII//IGNORE",
+ "UTF-8",
+ "UTF-8//IGNORE",
+ };
+
+ for (size_t from_idx = 0; from_idx < array_length (charsets); ++from_idx)
+ for (size_t to_idx = 0; to_idx < array_length (charsets); ++to_idx)
+ for (int do_ignore = 0; do_ignore < 2; ++do_ignore)
+ for (int limit = 1; limit < 5; ++limit)
+ for (int skip = 0; skip < 3; ++skip)
+ {
+ const char *expected_output;
+ if (do_ignore || strstr (charsets[to_idx], "//IGNORE") != NULL)
+ expected_output = "ABXY" + skip;
+ else
+ expected_output = "AB" + skip;
+ one_direction (charsets[from_idx], charsets[to_idx], do_ignore,
+ "AB\xffXY" + skip, expected_output, limit);
+ }
+
+ return 0;
+}
+
+#include <support/test-driver.c>
diff --git a/iconv/tst-iconv_prog-buffer.sh b/iconv/tst-iconv_prog-buffer.sh
new file mode 100644
index 0000000..23098ac
--- /dev/null
+++ b/iconv/tst-iconv_prog-buffer.sh
@@ -0,0 +1,306 @@
+#!/bin/bash
+# Test for iconv (the program) buffer management.
+# Copyright (C) 2024 Free Software Foundation, Inc.
+# This file is part of the GNU C Library.
+
+# The GNU C Library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+
+# The GNU C Library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+
+# You should have received a copy of the GNU Lesser General Public
+# License along with the GNU C Library; if not, see
+# <https://www.gnu.org/licenses/>.
+
+# Arguments:
+# root of the build tree ($(objpfx-common))
+# test command wrapper (for running on the board/with new ld.so)
+# extra flags to pass to iconv
+# number of times to double the input files in size (default: 0)
+
+exec 2>&1
+set -e
+
+exec {logfd}>&1
+
+codir=$1
+test_program_prefix="$2"
+
+# Use internal converters to avoid issues with module loading.
+iconv_args="-f ASCII -t UTF-8 $3"
+
+file_size_doublings=${4-0}
+
+failure=false
+
+tmp=`mktemp -d`
+trap 'rm -rf "$tmp"' 0
+echo ABC > "$tmp/abc"
+echo DEF > "$tmp/def"
+echo GGG > "$tmp/ggg"
+echo HH > "$tmp/hh"
+echo XY > "$tmp/xy"
+echo ZT > "$tmp/zt"
+echo OUT > "$tmp/out-template"
+: > "$tmp/empty"
+printf '\xff' > "$tmp/0xff"
+
+# Length should be a prime number, to help with buffer alignment testing.
+printf '\xc3\xa4\xe2\x80\x94\xe2\x80\x94\xc3\xa4\n' > "$tmp/utf8-sequence"
+
+# Double all files to produce larger buffers.
+for p in "$tmp"/* ; do
+ i=0
+ while test $i -lt $file_size_doublings; do
+ cat "$p" "$p" > "$tmp/scratch"
+ mv "$tmp/scratch" "$p"
+ i=$(($i + 1))
+ done
+done
+
+cat "$tmp/xy" "$tmp/0xff" "$tmp/zt" > "$tmp/0xff-wrapped"
+
+run_iconv () {
+ local c=0
+ if test "${FUNCNAME[2]}" = main; then
+ c=1
+ fi
+ echo "${BASH_SOURCE[$c]}:${BASH_LINENO[$c]}: iconv $iconv_args $@" >&$logfd
+ $test_program_prefix $codir/iconv/iconv_prog $iconv_args "$@"
+}
+
+check_out_expected () {
+ if ! cmp -s "$tmp/out" "$tmp/expected" ; then
+ echo "error: iconv output difference" >&$logfd
+ echo "*** expected ***" >&$logfd
+ cat "$tmp/expected" >&$logfd
+ echo "*** actual ***" >&$logfd
+ cat "$tmp/out" >&$logfd
+ failure=true
+ fi
+}
+
+expect_files () {
+ local f
+ ! test -z "$1"
+ cp "$tmp/$1" "$tmp/expected"
+ shift
+ for f in "$@" ; do
+ cat "$tmp/$f" >> "$tmp/expected"
+ done
+ check_out_expected
+}
+
+check_out () {
+ cat > "$tmp/expected"
+ check_out_expected
+}
+
+expect_exit () {
+ local expected=$1
+ shift
+ # Prevent failure for stopping the script.
+ if "$@" ; then
+ actual=$?
+ else
+ actual=$?
+ fi
+ if test "$actual" -ne "$expected"; then
+ echo "error: expected exit status $expected, not $actual" >&$logfd
+ exit 1
+ fi
+}
+
+ignore_failure () {
+ set +e
+ "$@"
+ status=$?
+ set -e
+}
+
+# Concatentation test.
+run_iconv -o "$tmp/out" "$tmp/abc" "$tmp/def"
+expect_files abc def
+
+# Single-file in-place conversion.
+run_iconv -o "$tmp/out" "$tmp/out"
+expect_files abc def
+
+# Multiple input files with in-place conversion.
+
+run_iconv -o "$tmp/out" "$tmp/out" "$tmp/abc"
+expect_files abc def abc
+
+run_iconv -o "$tmp/out" "$tmp/ggg" "$tmp/out"
+expect_files ggg abc def abc
+
+run_iconv -o "$tmp/out" "$tmp/hh" "$tmp/out" "$tmp/hh"
+expect_files hh ggg abc def abc hh
+
+cp "$tmp/out-template" "$tmp/out"
+run_iconv -o "$tmp/out" "$tmp/ggg" "$tmp/out" "$tmp/out" "$tmp/ggg"
+expect_files ggg out-template out-template ggg
+
+cp "$tmp/out-template" "$tmp/out"
+run_iconv -o "$tmp/out" "$tmp/ggg" "$tmp/out" "$tmp/hh" "$tmp/out" "$tmp/ggg"
+expect_files ggg out-template hh out-template ggg
+
+# Empty output should truncate the output file if exists.
+
+cp "$tmp/out-template" "$tmp/out"
+run_iconv -o "$tmp/out" </dev/null
+expect_files empty
+
+cp "$tmp/out-template" "$tmp/out"
+run_iconv -o "$tmp/out" - </dev/null
+expect_files empty
+
+cp "$tmp/out-template" "$tmp/out"
+run_iconv -o "$tmp/out" /dev/null
+expect_files empty
+
+cp "$tmp/out-template" "$tmp/out"
+expect_exit 1 run_iconv -c -o "$tmp/out" "$tmp/0xff"
+expect_files empty
+
+# But not if we are writing to standard output.
+
+cp "$tmp/out-template" "$tmp/out"
+run_iconv </dev/null >>"$tmp/out"
+expect_files out-template
+
+cp "$tmp/out-template" "$tmp/out"
+run_iconv - </dev/null >>"$tmp/out"
+expect_files out-template
+
+cp "$tmp/out-template" "$tmp/out"
+run_iconv /dev/null >>"$tmp/out"
+expect_files out-template
+
+# Conversion errors should avoid clobbering an existing file if
+# it is also an input file.
+
+cp "$tmp/0xff" "$tmp/out"
+expect_exit 1 run_iconv -o "$tmp/out" "$tmp/out"
+expect_files 0xff
+
+cp "$tmp/0xff" "$tmp/out"
+expect_exit 1 run_iconv -o "$tmp/out" < "$tmp/out"
+expect_files 0xff
+
+cp "$tmp/0xff" "$tmp/out"
+expect_exit 1 run_iconv -o "$tmp/out" - < "$tmp/out"
+expect_files 0xff
+
+cp "$tmp/0xff-wrapped" "$tmp/out"
+expect_exit 1 run_iconv -o "$tmp/out" "$tmp/out"
+expect_files 0xff-wrapped
+
+cp "$tmp/0xff-wrapped" "$tmp/out"
+expect_exit 1 run_iconv -o "$tmp/out" < "$tmp/out"
+expect_files 0xff-wrapped
+
+cp "$tmp/0xff-wrapped" "$tmp/out"
+expect_exit 1 run_iconv -o "$tmp/out" - < "$tmp/out"
+expect_files 0xff-wrapped
+
+cp "$tmp/0xff-wrapped" "$tmp/out"
+expect_exit 1 run_iconv -o "$tmp/out" "$tmp/abc" "$tmp/out"
+expect_files 0xff-wrapped
+
+cp "$tmp/0xff-wrapped" "$tmp/out"
+expect_exit 1 run_iconv -o "$tmp/out" "$tmp/abc" - < "$tmp/out"
+expect_files 0xff-wrapped
+
+# If errors are ignored, the file should be overwritten.
+
+cp "$tmp/0xff-wrapped" "$tmp/out"
+expect_exit 1 run_iconv -c -o "$tmp/out" "$tmp/out"
+expect_files xy zt
+
+cp "$tmp/0xff" "$tmp/out"
+expect_exit 1 run_iconv -c -o "$tmp/out" "$tmp/abc" "$tmp/out" "$tmp/def"
+expect_files abc def
+
+cp "$tmp/out-template" "$tmp/out"
+expect_exit 1 \
+ run_iconv -c -o "$tmp/out" "$tmp/abc" "$tmp/0xff" "$tmp/def" 2>"$tmp/err"
+! test -s "$tmp/err"
+expect_files abc def
+
+cp "$tmp/out-template" "$tmp/out"
+expect_exit 1 run_iconv -c -o "$tmp/out" \
+ "$tmp/abc" "$tmp/0xff-wrapped" "$tmp/def" 2>"$tmp/err"
+! test -s "$tmp/err"
+expect_files abc xy zt def
+
+cp "$tmp/0xff-wrapped" "$tmp/out"
+expect_exit 1 run_iconv -c -o "$tmp/out" "$tmp/out" "$tmp/abc" "$tmp/out" "$tmp/def"
+expect_files xy zt abc xy zt def
+
+cp "$tmp/0xff-wrapped" "$tmp/out"
+expect_exit 1 run_iconv -o "$tmp/out" \
+ "$tmp/out" "$tmp/abc" "$tmp/out" "$tmp/def"
+expect_files 0xff-wrapped
+
+cp "$tmp/0xff-wrapped" "$tmp/out"
+expect_exit 1 run_iconv -c -o "$tmp/out" \
+ "$tmp/abc" "$tmp/out" "$tmp/def" "$tmp/out"
+expect_files abc xy zt def xy zt
+
+# If the file does not exist yet, it should not be created on error.
+
+rm "$tmp/out"
+expect_exit 1 run_iconv -o "$tmp/out" "$tmp/0xff"
+! test -e "$tmp/out"
+
+expect_exit 1 run_iconv -o "$tmp/out" < "$tmp/0xff"
+! test -e "$tmp/out"
+
+expect_exit 1 run_iconv -o "$tmp/out" "$tmp/abc" "$tmp/0xff" "$tmp/def"
+! test -e "$tmp/out"
+
+expect_exit 1 run_iconv -o "$tmp/out" "$tmp/abc" - < "$tmp/0xff" "$tmp/def"
+! test -e "$tmp/out"
+
+# Listing standard input multiple times should not fail (bug 32050).
+
+run_iconv -o "$tmp/out" "$tmp/xy" - - "$tmp/zt" < "$tmp/abc"
+expect_files xy abc zt
+
+# NB: Extra iconv args are ignored after this point. Actual
+# multi-byte conversion does not work with tiny buffers.
+iconv_args="-f UTF-8 -t ASCII"
+
+printf 'x\n\xc3' > "$tmp/incomplete"
+expect_exit 1 run_iconv -o "$tmp/out" "$tmp/incomplete"
+check_out <<EOF
+x
+EOF
+
+# Test buffering behavior if the buffer ends with an incomplete
+# multi-byte sequence.
+prefix=""
+prefix_length=0
+while test $prefix_length -lt 12; do
+ echo "info: testing prefix length $prefix_length" 2>&$logfd
+ printf "%s" "$prefix" > "$tmp/prefix"
+ cat "$tmp/prefix" "$tmp/utf8-sequence" > "$tmp/tmp"
+ iconv_args="-f UTF-8 -t UCS-4"
+ run_iconv -o "$tmp/out1" "$tmp/tmp"
+ iconv_args="-f UCS-4 -t UTF-8"
+ run_iconv -o "$tmp/out" "$tmp/out1"
+ expect_files prefix utf8-sequence
+
+ prefix="$prefix@"
+ prefix_length=$(($prefix_length + 1))
+done
+
+if $failure ; then
+ exit 1
+fi
diff --git a/iconvdata/cp932.c b/iconvdata/cp932.c
index bf7297b..3def70a 100644
--- a/iconvdata/cp932.c
+++ b/iconvdata/cp932.c
@@ -4559,7 +4559,7 @@ static const char from_ucs4_extra[229][2] =
if (! ignore_errors_p ()) \
{ \
/* This is an illegal character. */ \
- result = __GCONV_ILLEGAL_INPUT; \
+ result = __gconv_mark_illegal_input (step_data); \
break; \
} \
\
@@ -4599,7 +4599,7 @@ static const char from_ucs4_extra[229][2] =
if (! ignore_errors_p ()) \
{ \
/* This is an illegal character. */ \
- result = __GCONV_ILLEGAL_INPUT; \
+ result = __gconv_mark_illegal_input (step_data); \
break; \
} \
\
@@ -4634,7 +4634,7 @@ static const char from_ucs4_extra[229][2] =
if (! ignore_errors_p ()) \
{ \
/* This is an illegal character. */ \
- result = __GCONV_ILLEGAL_INPUT; \
+ result = __gconv_mark_illegal_input (step_data); \
break; \
} \
\
diff --git a/iconvdata/euc-jp-ms.c b/iconvdata/euc-jp-ms.c
index d03a0e0..96c5325 100644
--- a/iconvdata/euc-jp-ms.c
+++ b/iconvdata/euc-jp-ms.c
@@ -4659,7 +4659,7 @@ static const unsigned char from_ucs4_extra[229][2] =
/* This is illegal. */ \
if (! ignore_errors_p ()) \
{ \
- result = __GCONV_ILLEGAL_INPUT; \
+ result = __gconv_mark_illegal_input (step_data); \
break; \
} \
\
@@ -4689,7 +4689,7 @@ static const unsigned char from_ucs4_extra[229][2] =
/* This is an illegal character. */ \
if (! ignore_errors_p ()) \
{ \
- result = __GCONV_ILLEGAL_INPUT; \
+ result = __gconv_mark_illegal_input (step_data); \
break; \
} \
\
@@ -4709,7 +4709,7 @@ static const unsigned char from_ucs4_extra[229][2] =
if (! ignore_errors_p ()) \
{ \
/* This is an illegal character. */ \
- result = __GCONV_ILLEGAL_INPUT; \
+ result = __gconv_mark_illegal_input (step_data); \
break; \
} \
} \
@@ -4820,7 +4820,7 @@ static const unsigned char from_ucs4_extra[229][2] =
if (! ignore_errors_p ()) \
{ \
/* This is an illegal character. */ \
- result = __GCONV_ILLEGAL_INPUT; \
+ result = __gconv_mark_illegal_input (step_data); \
break; \
} \
\
diff --git a/iconvdata/gbbig5.c b/iconvdata/gbbig5.c
index f05deee..b15a2ef 100644
--- a/iconvdata/gbbig5.c
+++ b/iconvdata/gbbig5.c
@@ -4831,7 +4831,7 @@ const char __from_big5_to_gb2312 [13973][2] =
{ \
/* We do not have a mapping for this character. \
If ignore errors, map it to 0xa1bc - big5 box character */ \
- result = __GCONV_ILLEGAL_INPUT; \
+ result = __gconv_mark_illegal_input (step_data); \
if (! ignore_errors_p ()) \
break; \
\
@@ -4922,7 +4922,7 @@ const char __from_big5_to_gb2312 [13973][2] =
{ \
/* We do not have a mapping for this character. \
If ignore errors, map it to 0xa1f5 - gb box character */ \
- result = __GCONV_ILLEGAL_INPUT; \
+ result = __gconv_mark_illegal_input (step_data); \
if (! ignore_errors_p ()) \
break; \
\
diff --git a/iconvdata/ibm1364.c b/iconvdata/ibm1364.c
index 4c37f30..d6c8ce7 100644
--- a/iconvdata/ibm1364.c
+++ b/iconvdata/ibm1364.c
@@ -179,7 +179,7 @@ enum
/* This is an illegal character. */ \
if (! ignore_errors_p ()) \
{ \
- result = __GCONV_ILLEGAL_INPUT; \
+ result = __gconv_mark_illegal_input (step_data); \
break; \
} \
++*irreversible; \
@@ -219,7 +219,7 @@ enum
/* This is an illegal character. */ \
if (! ignore_errors_p ()) \
{ \
- result = __GCONV_ILLEGAL_INPUT; \
+ result = __gconv_mark_illegal_input (step_data); \
break; \
} \
++*irreversible; \
@@ -300,7 +300,7 @@ enum
\
if (! ignore_errors_p ()) \
{ \
- result = __GCONV_ILLEGAL_INPUT; \
+ result = __gconv_mark_illegal_input (step_data); \
break; \
} \
++*irreversible; \
@@ -332,7 +332,7 @@ enum
/* This is an illegal character. */ \
if (! ignore_errors_p ()) \
{ \
- result = __GCONV_ILLEGAL_INPUT; \
+ result = __gconv_mark_illegal_input (step_data); \
break; \
} \
++*irreversible; \
diff --git a/iconvdata/iso646.c b/iconvdata/iso646.c
index d96e5f8..ba7e23f 100644
--- a/iconvdata/iso646.c
+++ b/iconvdata/iso646.c
@@ -313,7 +313,7 @@ gconv_end (struct __gconv_step *data)
ch = 0xf9; \
else if (var == JP_OCR_B) \
/* Illegal character. */ \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
else if (var == YU) \
ch = 0x17e; \
else if (var == HU) \
@@ -387,7 +387,7 @@ gconv_end (struct __gconv_step *data)
ch = 0xec; \
else if (var == JP_OCR_B) \
/* Illegal character. */ \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
else if (var == YU) \
ch = 0x10d; \
else if (var == HU) \
@@ -403,7 +403,7 @@ gconv_end (struct __gconv_step *data)
break; \
case 0x80 ... 0xff: \
/* Illegal character. */ \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
break; \
} \
\
@@ -440,17 +440,17 @@ gconv_end (struct __gconv_step *data)
case 0x23: \
if (var == GB || var == ES || var == IT || var == FR || var == FR1 \
|| var == NO2) \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
break; \
case 0x24: \
if (var == CN || var == HU || var == CU || var == SE || var == SE2) \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
break; \
case 0x40: \
if (var == CA || var == CA2 || var == DE || var == ES || var == ES2 \
|| var == IT || var == YU || var == HU || var == FR || var == FR1 \
|| var == PT || var == PT2 || var == SE2) \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
break; \
case 0x5b: \
if (var == CA || var == CA2 || var == DE || var == DK || var == ES \
@@ -458,7 +458,7 @@ gconv_end (struct __gconv_step *data)
|| var == HU || var == FR || var == FR1 || var == NO \
|| var == NO2 || var == PT || var == PT2 || var == SE \
|| var == SE2) \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
else if (var == CU) \
ch = 0x7d; \
break; \
@@ -468,7 +468,7 @@ gconv_end (struct __gconv_step *data)
|| var == YU || var == KR || var == HU || var == CU || var == FR \
|| var == FR1 || var == NO || var == NO2 || var == PT \
|| var == PT2 || var == SE || var == SE2) \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
break; \
case 0x5d: \
if (var == CA || var == CA2 || var == DE || var == DK || var == ES \
@@ -476,17 +476,17 @@ gconv_end (struct __gconv_step *data)
|| var == HU || var == FR || var == FR1 || var == NO \
|| var == NO2 || var == PT || var == PT2 || var == SE \
|| var == SE2) \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
break; \
case 0x5e: \
if (var == CA || var == CA2 || var == ES2 || var == YU || var == CU \
|| var == SE2) \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
break; \
case 0x60: \
if (var == CA || var == CA2 || var == IT || var == JP_OCR_B \
|| var == YU || var == HU || var == FR || var == SE2) \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
break; \
case 0x7b: \
if (var == CA || var == CA2 || var == DE || var == DK || var == ES \
@@ -494,14 +494,14 @@ gconv_end (struct __gconv_step *data)
|| var == CU || var == FR || var == FR1 || var == NO \
|| var == NO2 || var == PT || var == PT2 || var == SE \
|| var == SE2) \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
break; \
case 0x7c: \
if (var == CA || var == CA2 || var == DE || var == DK || var == ES \
|| var == ES2 || var == IT || var == YU || var == HU || var == CU \
|| var == FR || var == FR1 || var == NO || var == PT \
|| var == PT2 || var == SE || var == SE2) \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
else if (var == NO2) \
ch = 0x7e; \
break; \
@@ -510,7 +510,7 @@ gconv_end (struct __gconv_step *data)
|| var == ES2 || var == IT || var == YU || var == HU || var == CU \
|| var == FR || var == FR1 || var == NO || var == NO2 \
|| var == PT || var == PT2 || var == SE || var == SE2) \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
break; \
case 0x7e: \
if (var == GB || var == CA || var == CA2 || var == DE || var == ES2 \
@@ -518,21 +518,21 @@ gconv_end (struct __gconv_step *data)
|| var == YU || var == HU || var == CU || var == FR || var == FR1 \
|| var == NO || var == NO2 || var == PT || var == SE \
|| var == SE2) \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
break; \
case 0xa1: \
if (var != ES && var != ES2 && var != CU) \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
ch = 0x5b; \
break; \
case 0xa3: \
if (var != GB && var != ES && var != IT && var != FR && var != FR1) \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
ch = 0x23; \
break; \
case 0xa4: \
if (var != HU && var != CU && var != SE && var != SE2) \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
ch = 0x24; \
break; \
case 0xa5: \
@@ -541,7 +541,7 @@ gconv_end (struct __gconv_step *data)
else if (var == JP || var == JP_OCR_B) \
ch = 0x5c; \
else \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
break; \
case 0xa7: \
if (var == DE || var == ES || var == IT || var == PT) \
@@ -551,11 +551,11 @@ gconv_end (struct __gconv_step *data)
else if (var == NO2) \
ch = 0x23; \
else \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
break; \
case 0xa8: \
if (var != ES2 && var != CU && var != FR && var != FR1) \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
ch = 0x7e; \
break; \
case 0xb0: \
@@ -566,7 +566,7 @@ gconv_end (struct __gconv_step *data)
else if (var == PT) \
ch = 0x7e; \
else \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
break; \
case 0xb4: \
if (var == ES2 || var == CU) \
@@ -574,11 +574,11 @@ gconv_end (struct __gconv_step *data)
else if (var == PT2) \
ch = 0x40; \
else \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
break; \
case 0xb5: \
if (var != FR) \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
ch = 0x60; \
break; \
case 0xbf: \
@@ -587,31 +587,31 @@ gconv_end (struct __gconv_step *data)
else if (var == ES2 || var == CU) \
ch = 0x5e; \
else \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
break; \
case 0xc1: \
if (var != HU) \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
ch = 0x40; \
break; \
case 0xc3: \
if (var != PT && var != PT2) \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
ch = 0x5b; \
break; \
case 0xc4: \
if (var != DE && var != SE && var != SE2) \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
ch = 0x5b; \
break; \
case 0xc5: \
if (var != DK && var != NO && var != NO2 && var != SE && var != SE2) \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
ch = 0x5d; \
break; \
case 0xc6: \
if (var != DK && var != NO && var != NO2) \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
ch = 0x5b; \
break; \
case 0xc7: \
@@ -620,7 +620,7 @@ gconv_end (struct __gconv_step *data)
else if (var == PT || var == PT2) \
ch = 0x5c; \
else \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
break; \
case 0xc9: \
if (var == CA2) \
@@ -630,26 +630,26 @@ gconv_end (struct __gconv_step *data)
else if (var == SE2) \
ch = 0x40; \
else \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
break; \
case 0xd1: \
if (var != ES && var != ES2 && var != CU) \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
ch = 0x5c; \
break; \
case 0xd5: \
if (var != PT && var != PT2) \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
ch = 0x5d; \
break; \
case 0xd6: \
if (var != DE && var != HU && var != SE && var != SE2) \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
ch = 0x5c; \
break; \
case 0xd8: \
if (var != DK && var != NO && var != NO2) \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
ch = 0x5c; \
break; \
case 0xdc: \
@@ -658,11 +658,11 @@ gconv_end (struct __gconv_step *data)
else if (var == SE2) \
ch = 0x5e; \
else \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
break; \
case 0xdf: \
if (var != DE) \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
ch = 0x7e; \
break; \
case 0xe0: \
@@ -671,36 +671,36 @@ gconv_end (struct __gconv_step *data)
else if (var == IT) \
ch = 0x7b; \
else \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
break; \
case 0xe1: \
if (var != HU) \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
ch = 0x60; \
break; \
case 0xe2: \
if (var != CA && var != CA2) \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
ch = 0x5b; \
break; \
case 0xe3: \
if (var != PT && var != PT2) \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
ch = 0x7b; \
break; \
case 0xe4: \
if (var != DE && var != SE && var != SE2) \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
ch = 0x7b; \
break; \
case 0xe5: \
if (var != DK && var != NO && var != NO2 && var != SE && var != SE2) \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
ch = 0x7d; \
break; \
case 0xe6: \
if (var != DK && var != NO && var != NO2) \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
ch = 0x7b; \
break; \
case 0xe7: \
@@ -711,11 +711,11 @@ gconv_end (struct __gconv_step *data)
else if (var == PT || var == PT2) \
ch = 0x7c; \
else \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
break; \
case 0xe8: \
if (var != CA && var != CA2 && var != IT && var != FR && var != FR1) \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
ch = 0x7d; \
break; \
case 0xe9: \
@@ -726,51 +726,51 @@ gconv_end (struct __gconv_step *data)
else if (var == SE2) \
ch = 0x60; \
else \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
break; \
case 0xea: \
if (var != CA && var != CA2) \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
ch = 0x5d; \
break; \
case 0xec: \
if (var != IT) \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
ch = 0x7e; \
break; \
case 0xee: \
if (var != CA) \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
ch = 0x5e; \
break; \
case 0xf1: \
if (var != ES && var != ES2 && var != CU) \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
ch = 0x7c; \
break; \
case 0xf2: \
if (var != IT) \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
ch = 0x7c; \
break; \
case 0xf4: \
if (var != CA && var != CA2) \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
ch = 0x60; \
break; \
case 0xf5: \
if (var != PT && var != PT2) \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
ch = 0x7d; \
break; \
case 0xf6: \
if (var != DE && var != HU && var != SE && var != SE2) \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
ch = 0x7c; \
break; \
case 0xf8: \
if (var != DK && var != NO && var != NO2) \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
ch = 0x7c; \
break; \
case 0xf9: \
@@ -779,11 +779,11 @@ gconv_end (struct __gconv_step *data)
else if (var == IT) \
ch = 0x60; \
else \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
break; \
case 0xfb: \
if (var != CA && var != CA2) \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
ch = 0x7e; \
break; \
case 0xfc: \
@@ -792,93 +792,93 @@ gconv_end (struct __gconv_step *data)
else if (var == SE2) \
ch = 0x7e; \
else \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
break; \
case 0x160: \
if (var != YU) \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
ch = 0x5b; \
break; \
case 0x106: \
if (var != YU) \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
ch = 0x5d; \
break; \
case 0x107: \
if (var != YU) \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
ch = 0x7d; \
break; \
case 0x10c: \
if (var != YU) \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
ch = 0x5e; \
break; \
case 0x10d: \
if (var != YU) \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
ch = 0x7e; \
break; \
case 0x110: \
if (var != YU) \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
ch = 0x5c; \
break; \
case 0x111: \
if (var != YU) \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
ch = 0x7c; \
break; \
case 0x161: \
if (var != YU) \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
ch = 0x7b; \
break; \
case 0x17d: \
if (var != YU) \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
ch = 0x40; \
break; \
case 0x17e: \
if (var != YU) \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
ch = 0x60; \
break; \
case 0x2dd: \
if (var != HU) \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
ch = 0x7e; \
break; \
case 0x2022: \
if (var != ES2) \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
ch = 0x40; \
break; \
case 0x203e: \
if (var != GB && var != CN && var != JP && var != NO && var != SE) \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
ch = 0x7e; \
break; \
case 0x20a9: \
if (var != KR) \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
ch = 0x5c; \
break; \
case 0x2329: \
if (var != JP_OCR_B) \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
ch = 0x5b; \
break; \
case 0x232a: \
if (var != JP_OCR_B) \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
ch = 0x5d; \
break; \
default: \
if (__glibc_unlikely (ch > 0x7f)) \
{ \
UNICODE_TAG_HANDLER (ch, 4); \
- failure = __GCONV_ILLEGAL_INPUT; \
+ failure = __gconv_mark_illegal_input (step_data); \
} \
break; \
} \
diff --git a/iconvdata/unicode.c b/iconvdata/unicode.c
index d69c988..79bb988 100644
--- a/iconvdata/unicode.c
+++ b/iconvdata/unicode.c
@@ -163,7 +163,7 @@ gconv_end (struct __gconv_step *data)
surrogates pass through, attackers could make a security \
hole exploit by synthesizing any desired plane 1-16 \
character. */ \
- result = __GCONV_ILLEGAL_INPUT; \
+ result = __gconv_mark_illegal_input (step_data); \
if (! ignore_errors_p ()) \
break; \
inptr += 4; \
diff --git a/iconvdata/utf-16.c b/iconvdata/utf-16.c
index a869353..9d9fd2a 100644
--- a/iconvdata/utf-16.c
+++ b/iconvdata/utf-16.c
@@ -206,7 +206,7 @@ gconv_end (struct __gconv_step *data)
We must catch this. If we let surrogates pass through, \
attackers could make a security hole exploit by \
synthesizing any desired plane 1-16 character. */ \
- result = __GCONV_ILLEGAL_INPUT; \
+ result = __gconv_mark_illegal_input (step_data); \
if (! ignore_errors_p ()) \
break; \
inptr += 4; \
diff --git a/iconvdata/utf-32.c b/iconvdata/utf-32.c
index 5693b48..139eefb 100644
--- a/iconvdata/utf-32.c
+++ b/iconvdata/utf-32.c
@@ -207,7 +207,7 @@ gconv_end (struct __gconv_step *data)
We must catch this. If we let surrogates pass through, \
attackers could make a security hole exploit by \
generating "irregular UTF-32" sequences. */ \
- result = __GCONV_ILLEGAL_INPUT; \
+ result = __gconv_mark_illegal_input (step_data); \
if (! ignore_errors_p ()) \
break; \
inptr += 4; \
diff --git a/include/bits/unistd_ext.h b/include/bits/unistd_ext.h
index 277be05..eeb07ba 100644
--- a/include/bits/unistd_ext.h
+++ b/include/bits/unistd_ext.h
@@ -3,4 +3,7 @@
#ifndef _ISOMAC
extern int __close_range (unsigned int lowfd, unsigned int highfd, int flags);
libc_hidden_proto (__close_range);
+
+extern pid_t __gettid (void);
+libc_hidden_proto (__gettid);
#endif
diff --git a/include/errno.h b/include/errno.h
index c361a78..f0ccaa7 100644
--- a/include/errno.h
+++ b/include/errno.h
@@ -20,7 +20,7 @@
# define errno rtld_errno
extern int rtld_errno attribute_hidden;
-# elif IS_IN_LIB && !IS_IN (rtld)
+# elif IS_IN_LIB && !IS_IN (rtld) && !defined LIBC_NONSHARED
# undef errno
# if IS_IN (libc)
diff --git a/include/libc-internal.h b/include/libc-internal.h
index 87ac591..1ef43ff 100644
--- a/include/libc-internal.h
+++ b/include/libc-internal.h
@@ -53,6 +53,9 @@ extern __typeof (__profile_frequency) __profile_frequency attribute_hidden;
is not for an audit module, not loaded via dlmopen, and not loaded
via static dlopen either). */
extern _Bool __libc_initial attribute_hidden;
+#else
+/* The static libc is always the initial namespace. */
+# define __libc_initial ((_Bool) 1)
#endif
#endif /* _LIBC_INTERNAL */
diff --git a/include/stdlib.h b/include/stdlib.h
index 0cab3f5..57f4ab8 100644
--- a/include/stdlib.h
+++ b/include/stdlib.h
@@ -20,6 +20,7 @@
# include <sys/stat.h>
# include <rtld-malloc.h>
+# include <internal-sigset.h>
extern __typeof (strtol_l) __strtol_l;
extern __typeof (strtoul_l) __strtoul_l;
@@ -77,6 +78,12 @@ libc_hidden_proto (__isoc23_strtoull_l)
# define strtoull_l __isoc23_strtoull_l
#endif
+extern void __abort_fork_reset_child (void) attribute_hidden;
+extern void __abort_lock_rdlock (internal_sigset_t *set) attribute_hidden;
+extern void __abort_lock_wrlock (internal_sigset_t *set) attribute_hidden;
+extern void __abort_lock_unlock (const internal_sigset_t *set)
+ attribute_hidden;
+
libc_hidden_proto (exit)
libc_hidden_proto (abort)
libc_hidden_proto (getenv)
diff --git a/inet/Makefile b/inet/Makefile
index 2f03e6f7..cb97b45 100644
--- a/inet/Makefile
+++ b/inet/Makefile
@@ -91,6 +91,7 @@ tests := \
tst-getni1 \
tst-getni2 \
tst-if_index-long \
+ tst-if_nameindex \
tst-inet6_rth \
tst-network \
tst-ntoa \
diff --git a/inet/netinet/in.h b/inet/netinet/in.h
index f684be5..29fdd9b 100644
--- a/inet/netinet/in.h
+++ b/inet/netinet/in.h
@@ -93,6 +93,8 @@ enum
#define IPPROTO_ETHERNET IPPROTO_ETHERNET
IPPROTO_RAW = 255, /* Raw IP packets. */
#define IPPROTO_RAW IPPROTO_RAW
+ IPPROTO_SMC = 256, /* Shared Memory Communications. */
+#define IPPROTO_SMC IPPROTO_SMC
IPPROTO_MPTCP = 262, /* Multipath TCP connection. */
#define IPPROTO_MPTCP IPPROTO_MPTCP
IPPROTO_MAX
diff --git a/inet/tst-if_nameindex.c b/inet/tst-if_nameindex.c
new file mode 100644
index 0000000..5b90560
--- /dev/null
+++ b/inet/tst-if_nameindex.c
@@ -0,0 +1,117 @@
+/* Tests for if_nameindex et al.
+ Copyright (C) 2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+#include <stdlib.h>
+#include <errno.h>
+#include <net/if.h>
+#include <netdb.h>
+#include <string.h>
+#include <support/check.h>
+#include <support/descriptors.h>
+#include <support/support.h>
+
+static char *buffer;
+
+static const char *test_names[] = {
+ "testing",
+ "invalid",
+ "dont-match",
+ "",
+ "\001\001\001\177",
+ NULL
+};
+
+static void
+checki (int i)
+{
+ char *ifname;
+
+ /* Test that a known-invalid index returns NULL. */
+ /* BUFFER should not be accessed. */
+
+ printf ("Testing if_indextoname (%d) == NULL\n", i);
+ ifname = if_indextoname (i, NULL);
+ TEST_VERIFY (ifname == NULL);
+ TEST_VERIFY (errno == ENXIO);
+}
+
+static int
+do_test (void)
+{
+ struct if_nameindex *if_ni, *ifp;
+ int min_idx, max_idx, buflen = 0;
+ int i;
+
+ if_ni = if_nameindex ();
+ TEST_VERIFY (if_ni != NULL);
+
+ min_idx = max_idx = if_ni->if_index;
+
+ for (ifp = if_ni; !(ifp->if_index == 0 && ifp->if_name == NULL); ifp++)
+ {
+ printf ("%u: %s\n", ifp->if_index, ifp->if_name);
+ if (ifp->if_index < min_idx)
+ min_idx = ifp->if_index;
+ if (ifp->if_index > max_idx)
+ max_idx = ifp->if_index;
+ if (strlen (ifp->if_name) + 1 > buflen)
+ buflen = strlen (ifp->if_name) + 1;
+ }
+ buffer = (char *) xmalloc (buflen);
+
+ /* Check normal operation. */
+ for (ifp = if_ni; !(ifp->if_index == 0 && ifp->if_name == NULL); ifp++)
+ {
+ unsigned int idx = if_nametoindex (ifp->if_name);
+ TEST_VERIFY (idx == ifp->if_index);
+
+ char *fn = if_indextoname (ifp->if_index, buffer);
+ TEST_VERIFY (strcmp (fn, ifp->if_name) == 0);
+ }
+
+ for (i=-2; i<min_idx; i++)
+ checki (i);
+ for (i=max_idx+1; i<max_idx+3; i++)
+ checki (i);
+
+ /* Check that a known-invalid name returns 0. */
+
+ for (i=0; test_names[i] != NULL; i++)
+ {
+ /* Make sure our "invalid" name is really invalid. */
+ for (ifp = if_ni; !(ifp->if_index == 0 && ifp->if_name == NULL); ifp++)
+ if (strcmp (test_names[i], ifp->if_name) == 0)
+ goto not_this_one;
+
+ printf ("Testing if_nametoindex (%s) == 0\n", test_names[i]);
+
+ unsigned int idx = if_nametoindex (test_names[i]);
+ TEST_VERIFY (idx == 0);
+ TEST_VERIFY (errno == ENODEV);
+
+ not_this_one:
+ ;
+ }
+
+
+ if_freenameindex (if_ni);
+
+ return 0;
+}
+
+#include <support/test-driver.c>
diff --git a/intl/dcigettext.c b/intl/dcigettext.c
index a028518..70ba4a5 100644
--- a/intl/dcigettext.c
+++ b/intl/dcigettext.c
@@ -687,7 +687,7 @@ DCIGETTEXT (const char *domainname, const char *msgid1, const char *msgid2,
/* When this is a SUID binary we must not allow accessing files
outside the dedicated directories. */
if (ENABLE_SECURE && IS_PATH_WITH_DIR (single_locale))
- /* Ingore this entry. */
+ /* Ignore this entry. */
continue;
}
diff --git a/io/Makefile b/io/Makefile
index 19932d5..a8d575e 100644
--- a/io/Makefile
+++ b/io/Makefile
@@ -188,6 +188,8 @@ tests := \
tst-closefrom \
tst-copy_file_range \
tst-faccessat \
+ tst-fchmod-errors \
+ tst-fchmod-fuse \
tst-fchmodat \
tst-fchownat \
tst-fcntl \
@@ -207,6 +209,7 @@ tests := \
tst-lchmod \
tst-linkat \
tst-lockf \
+ tst-lstat-nofollow \
tst-lutimes \
tst-mkdirat \
tst-mkfifoat \
@@ -236,6 +239,7 @@ tests-time64 := \
tst-futimes-time64\
tst-futimesat-time64 \
tst-lchmod-time64 \
+ tst-lstat-nofollow-time64 \
tst-lutimes-time64 \
tst-stat-time64 \
tst-utime-time64 \
@@ -291,7 +295,7 @@ CFLAGS-read.c += -fexceptions -fasynchronous-unwind-tables $(config-cflags-wno-i
CFLAGS-write.c += -fexceptions -fasynchronous-unwind-tables $(config-cflags-wno-ignored-attributes)
CFLAGS-close.c += -fexceptions -fasynchronous-unwind-tables
CFLAGS-lseek64.c += $(config-cflags-wno-ignored-attributes)
-CFLAGS-tst-read-zero.c += $(no-fortify-source),-D_FORTIFY_SOURCE=$(supported-fortify)
+CFLAGS-tst-read-zero.c += $(no-fortify-source) -D_FORTIFY_SOURCE=$(supported-fortify)
CFLAGS-test-stat.c += -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE
CFLAGS-test-lfs.c += -D_LARGEFILE64_SOURCE
diff --git a/io/bits/statx-generic.h b/io/bits/statx-generic.h
index 19c3565..da199dd 100644
--- a/io/bits/statx-generic.h
+++ b/io/bits/statx-generic.h
@@ -44,6 +44,7 @@
# define STATX_DIOALIGN 0x2000U
# define STATX_MNT_ID_UNIQUE 0x4000U
# define STATX_SUBVOL 0x8000U
+# define STATX_WRITE_ATOMIC 0x00010000U
# define STATX__RESERVED 0x80000000U
# define STATX_ATTR_COMPRESSED 0x0004
@@ -55,6 +56,7 @@
# define STATX_ATTR_MOUNT_ROOT 0x2000
# define STATX_ATTR_VERITY 0x100000
# define STATX_ATTR_DAX 0x200000
+# define STATX_ATTR_WRITE_ATOMIC 0x00400000
#endif /* !STATX_TYPE */
__BEGIN_DECLS
diff --git a/io/tst-copy_file_range.c b/io/tst-copy_file_range.c
index 9837b7c..3d7b0aa 100644
--- a/io/tst-copy_file_range.c
+++ b/io/tst-copy_file_range.c
@@ -117,7 +117,7 @@ simple_file_copy (void)
TEST_COMPARE (xlseek (outfd, 0, SEEK_CUR), 6 + length);
struct stat64 st;
- xfstat (outfd, &st);
+ xfstat64 (outfd, &st);
if (length > 0)
TEST_COMPARE (st.st_size, out_skipped + length);
else
diff --git a/io/tst-fchmod-errors.c b/io/tst-fchmod-errors.c
new file mode 100644
index 0000000..bf2a4c5
--- /dev/null
+++ b/io/tst-fchmod-errors.c
@@ -0,0 +1,63 @@
+/* Test various fchmod error cases.
+ Copyright (C) 2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+#include <errno.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <support/check.h>
+#include <support/xunistd.h>
+#include <unistd.h>
+
+static int
+do_test (void)
+{
+ {
+ /* Permissions on /dev/null (the opened descriptor) cannot be changed. */
+ int fd = xopen ("/dev/null", O_RDWR, 0);
+ if (getuid () == 0)
+ puts ("info: /dev/null fchmod test skipped because of root privileges");
+ else
+ {
+ errno = 0;
+ TEST_COMPARE (fchmod (fd, 0), -1);
+ TEST_COMPARE (errno, EPERM);
+ }
+ xclose (fd);
+
+ /* Now testing an invalid file descriptor. */
+ errno = 0;
+ TEST_COMPARE (fchmod (fd, 0600), -1);
+ TEST_COMPARE (errno, EBADF);
+ }
+
+ errno = 0;
+ TEST_COMPARE (fchmod (-1, 0600), -1);
+ TEST_COMPARE (errno, EBADF);
+
+ errno = 0;
+ TEST_COMPARE (fchmod (AT_FDCWD, 0600), -1);
+ TEST_COMPARE (errno, EBADF);
+
+ /* Linux supports fchmod on pretty much all file descriptors, so
+ there is no check for failure on specific types of descriptors
+ here. */
+
+ return 0;
+}
+
+#include <support/test-driver.c>
diff --git a/io/tst-fchmod-fuse.c b/io/tst-fchmod-fuse.c
new file mode 100644
index 0000000..fbd3309
--- /dev/null
+++ b/io/tst-fchmod-fuse.c
@@ -0,0 +1,114 @@
+/* FUSE-based test for fchmod.
+ Copyright (C) 2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+#include <support/fuse.h>
+
+#include <errno.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <support/check.h>
+#include <support/support.h>
+#include <support/xunistd.h>
+
+/* Set from do_test to indicate the expected incoming mode change request. */
+static _Atomic int expected_mode;
+
+static void
+fuse_thread (struct support_fuse *f, void *closure)
+{
+ struct fuse_in_header *inh;
+ while ((inh = support_fuse_next (f)) != NULL)
+ {
+ if (support_fuse_handle_mountpoint (f)
+ || (inh->nodeid == 1 && support_fuse_handle_directory (f)))
+ continue;
+ switch (inh->opcode)
+ {
+ case FUSE_LOOKUP:
+ {
+ char *name = support_fuse_cast (LOOKUP, inh);
+ TEST_COMPARE_STRING (name, "file");
+ struct fuse_entry_out *out
+ = support_fuse_prepare_entry (f, 2);
+ out->attr.mode = S_IFREG | 0600;
+ support_fuse_reply_prepared (f);
+ }
+ break;
+ case FUSE_OPEN:
+ {
+ TEST_COMPARE (inh->nodeid, 2);
+ struct fuse_open_in *p = support_fuse_cast (OPEN, inh);
+ TEST_COMPARE (p->flags & O_ACCMODE, O_RDWR);
+ struct fuse_open_out out = { 0, };
+ support_fuse_reply (f, &out, sizeof (out));
+ }
+ break;
+ case FUSE_SETATTR:
+ {
+ TEST_COMPARE (inh->nodeid, 2);
+ struct fuse_setattr_in *p = support_fuse_cast (SETATTR, inh);
+ TEST_COMPARE (p->valid , FATTR_MODE);
+ TEST_COMPARE (p->mode, S_IFREG | expected_mode);
+ struct fuse_attr_out *out = support_fuse_prepare_attr (f);
+ out->attr.mode = S_IFREG | p->mode;
+ support_fuse_reply_prepared (f);
+ }
+ break;
+ case FUSE_FLUSH:
+ support_fuse_reply_empty (f);
+ break;
+ default:
+ support_fuse_reply_error (f, EIO);
+ }
+ }
+}
+
+/* Test all mode values with the specified extra bits. */
+static void
+test_with_bits (int fd, unsigned int extra_bits)
+{
+ for (int do_mode = 0; do_mode <= 07777; ++do_mode)
+ {
+ expected_mode = do_mode;
+ TEST_COMPARE (fchmod (fd, extra_bits | do_mode), 0);
+ }
+}
+
+static int
+do_test (void)
+{
+ support_fuse_init ();
+
+ struct support_fuse *f = support_fuse_mount (fuse_thread, NULL);
+ char *path = xasprintf ("%s/file", support_fuse_mountpoint (f));
+ int fd = xopen (path, O_RDWR, 0600);
+ free (path);
+
+ test_with_bits (fd, 0);
+ /* POSIX requires that the extra bits are ignored. */
+ test_with_bits (fd, S_IFREG);
+ test_with_bits (fd, S_IFDIR);
+ test_with_bits (fd, ~07777);
+
+ xclose (fd);
+ support_fuse_unmount (f);
+
+ return 0;
+}
+
+#include <support/test-driver.c>
diff --git a/io/tst-futimens-time64.c b/io/tst-futimens-time64.c
index 88fcb38..71204a6 100644
--- a/io/tst-futimens-time64.c
+++ b/io/tst-futimens-time64.c
@@ -1,2 +1 @@
-#define struct_stat struct stat
#include "tst-futimens.c"
diff --git a/io/tst-futimens.c b/io/tst-futimens.c
index 6204bef..075ca42 100644
--- a/io/tst-futimens.c
+++ b/io/tst-futimens.c
@@ -18,26 +18,23 @@
#include <support/check.h>
#include <support/xunistd.h>
+#include <fcntl.h>
#include <sys/stat.h>
-#ifndef struct_stat
-# define struct_stat struct stat64
-#endif
-
static int
test_futimens_helper (const char *file, int fd, const struct timespec *ts)
{
int result = futimens (fd, ts);
TEST_VERIFY_EXIT (result == 0);
- struct_stat st;
- xfstat (fd, &st);
+ struct statx st;
+ xstatx (fd, "", AT_EMPTY_PATH, STATX_BASIC_STATS, &st);
/* Check if seconds for atime match */
- TEST_COMPARE (st.st_atime, ts[0].tv_sec);
+ TEST_COMPARE (st.stx_atime.tv_sec, ts[0].tv_sec);
/* Check if seconds for mtime match */
- TEST_COMPARE (st.st_mtime, ts[1].tv_sec);
+ TEST_COMPARE (st.stx_mtime.tv_sec, ts[1].tv_sec);
return 0;
}
diff --git a/io/tst-futimes-time64.c b/io/tst-futimes-time64.c
index d489c26..eeb4bed 100644
--- a/io/tst-futimes-time64.c
+++ b/io/tst-futimes-time64.c
@@ -1,2 +1 @@
-#define struct_stat struct stat
#include "tst-futimes.c"
diff --git a/io/tst-futimes.c b/io/tst-futimes.c
index d21acf6..612fe46 100644
--- a/io/tst-futimes.c
+++ b/io/tst-futimes.c
@@ -18,27 +18,24 @@
#include <support/check.h>
#include <support/xunistd.h>
+#include <fcntl.h>
#include <sys/stat.h>
#include <sys/time.h>
-#ifndef struct_stat
-# define struct_stat struct stat64
-#endif
-
static int
test_futimens_helper (const char *file, int fd, const struct timeval *tv)
{
int r = futimes (fd, tv);
TEST_VERIFY_EXIT (r == 0);
- struct_stat st;
- xfstat (fd, &st);
+ struct statx st;
+ xstatx (fd, "", AT_EMPTY_PATH, STATX_BASIC_STATS, &st);
/* Check if seconds for atime match */
- TEST_COMPARE (st.st_atime, tv[0].tv_sec);
+ TEST_COMPARE (st.stx_atime.tv_sec, tv[0].tv_sec);
/* Check if seconds for mtime match */
- TEST_COMPARE (st.st_mtime, tv[1].tv_sec);
+ TEST_COMPARE (st.stx_mtime.tv_sec, tv[1].tv_sec);
return 0;
}
diff --git a/io/tst-futimesat-time64.c b/io/tst-futimesat-time64.c
index f6c0500..1585317 100644
--- a/io/tst-futimesat-time64.c
+++ b/io/tst-futimesat-time64.c
@@ -1,4 +1 @@
-#define struct_stat struct stat
-#define fstat fstat
-#define fstatat fstatat
#include "io/tst-futimesat.c"
diff --git a/io/tst-futimesat.c b/io/tst-futimesat.c
index 67a8551..feae4e7 100644
--- a/io/tst-futimesat.c
+++ b/io/tst-futimesat.c
@@ -30,12 +30,6 @@
#include <support/temp_file.h>
#include <support/xunistd.h>
-#ifndef struct_stat
-# define struct_stat struct stat64
-# define fstat fstat64
-# define fstatat fstatat64
-#endif
-
static int dir_fd;
static void
@@ -118,19 +112,15 @@ do_test (void)
xwrite (fd, "hello", 5);
puts ("file created");
- struct_stat st1;
- if (fstat (fd, &st1) != 0)
- {
- puts ("fstat64 failed");
- return 1;
- }
+ struct statx st1;
+ xstatx (fd, "", AT_EMPTY_PATH, STATX_BASIC_STATS, &st1);
close (fd);
struct timeval tv[2];
- tv[0].tv_sec = st1.st_atime + 1;
+ tv[0].tv_sec = st1.stx_atime.tv_sec + 1;
tv[0].tv_usec = 0;
- tv[1].tv_sec = st1.st_mtime + 1;
+ tv[1].tv_sec = st1.stx_mtime.tv_sec + 1;
tv[1].tv_usec = 0;
if (futimesat (dir_fd, "some-file", tv) != 0)
{
@@ -138,16 +128,12 @@ do_test (void)
return 1;
}
- struct_stat st2;
- if (fstatat (dir_fd, "some-file", &st2, 0) != 0)
- {
- puts ("fstatat64 failed");
- return 1;
- }
+ struct statx st2;
+ xstatx (dir_fd, "some-file", 0, STATX_BASIC_STATS, &st2);
- if (st2.st_mtime != tv[1].tv_sec
+ if (st2.stx_mtime.tv_sec != tv[1].tv_sec
#ifdef _STATBUF_ST_NSEC
- || st2.st_mtim.tv_nsec != 0
+ || st2.stx_mtime.tv_nsec != 0
#endif
)
{
diff --git a/io/tst-lstat-nofollow-time64.c b/io/tst-lstat-nofollow-time64.c
new file mode 100644
index 0000000..45feb3f
--- /dev/null
+++ b/io/tst-lstat-nofollow-time64.c
@@ -0,0 +1 @@
+#include "tst-lstat-nofollow.c"
diff --git a/io/tst-lstat-nofollow.c b/io/tst-lstat-nofollow.c
new file mode 100644
index 0000000..5bbb557
--- /dev/null
+++ b/io/tst-lstat-nofollow.c
@@ -0,0 +1,98 @@
+/* Test that lstat does not follow symbolic links.
+ Copyright (C) 2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+#include <string.h>
+#include <support/check.h>
+#include <support/fuse.h>
+#include <support/support.h>
+#include <sys/stat.h>
+#include <unistd.h>
+
+static void
+fuse_thread (struct support_fuse *f, void *closure)
+{
+ struct fuse_in_header *inh;
+ while ((inh = support_fuse_next (f)) != NULL)
+ {
+ if (support_fuse_handle_mountpoint (f)
+ || (inh->nodeid == 1 && support_fuse_handle_directory (f)))
+ continue;
+ switch (inh->opcode)
+ {
+ case FUSE_LOOKUP:
+ {
+ TEST_COMPARE (inh->nodeid, 1);
+ TEST_COMPARE_STRING (support_fuse_cast (LOOKUP, inh), "symlink");
+ struct fuse_entry_out *out = support_fuse_prepare_entry (f, 2);
+ out->attr.mode = S_IFLNK | 0777;
+ out->attr.size = strlen ("target");
+ support_fuse_reply_prepared (f);
+ }
+ break;
+ case FUSE_GETATTR:
+ {
+ TEST_COMPARE (inh->nodeid, 2);
+ struct fuse_attr_out *out = support_fuse_prepare_attr (f);
+ out->attr.mode = S_IFLNK | 0777;
+ out->attr.size = strlen ("target");
+ support_fuse_reply_prepared (f);
+ }
+ break;
+ case FUSE_READLINK:
+ /* The lstat operation must not attempt to look at the
+ symbolic link target. */
+ FAIL ("attempt to obtain target of symblic link for node %llu",
+ (unsigned long long int) inh->nodeid);
+ break;
+ default:
+ FAIL ("unexpected event %s", support_fuse_opcode (inh->opcode));
+ }
+ }
+}
+
+static int
+do_test (void)
+{
+ support_fuse_init ();
+ struct support_fuse *f = support_fuse_mount (fuse_thread, NULL);
+ char *symlink_path = xasprintf ("%s/symlink", support_fuse_mountpoint (f));
+
+ {
+ struct stat st = { 0, };
+ TEST_COMPARE (lstat (symlink_path, &st), 0);
+ TEST_COMPARE (st.st_uid, getuid ());
+ TEST_COMPARE (st.st_gid, getgid ());
+ TEST_COMPARE (st.st_size, 6);
+ TEST_COMPARE (st.st_mode, S_IFLNK | 0777);
+ }
+
+ {
+ struct stat64 st = { 0, };
+ TEST_COMPARE (lstat64 (symlink_path, &st), 0);
+ TEST_COMPARE (st.st_uid, getuid ());
+ TEST_COMPARE (st.st_gid, getgid ());
+ TEST_COMPARE (st.st_size, 6);
+ TEST_COMPARE (st.st_mode, S_IFLNK | 0777);
+ }
+
+ free (symlink_path);
+ support_fuse_unmount (f);
+ return 0;
+}
+
+#include <support/test-driver.c>
diff --git a/io/tst-lutimes-time64.c b/io/tst-lutimes-time64.c
index 06caec0..c5bea96 100644
--- a/io/tst-lutimes-time64.c
+++ b/io/tst-lutimes-time64.c
@@ -1,2 +1 @@
-#define struct_stat struct stat
#include "tst-lutimes.c"
diff --git a/io/tst-lutimes.c b/io/tst-lutimes.c
index edef5ab..78bcc58 100644
--- a/io/tst-lutimes.c
+++ b/io/tst-lutimes.c
@@ -18,34 +18,32 @@
#include <support/check.h>
#include <support/xunistd.h>
+#include <fcntl.h>
#include <sys/stat.h>
#include <sys/time.h>
-#ifndef struct_stat
-# define struct_stat struct stat64
-#endif
-
static int
test_lutimes_helper (const char *testfile, int fd, const char *testlink,
const struct timeval *tv)
{
- struct_stat stfile_orig;
- xlstat (testfile, &stfile_orig);
+ struct statx stfile_orig;
+ xstatx (AT_FDCWD, testfile, AT_SYMLINK_NOFOLLOW, STATX_BASIC_STATS,
+ &stfile_orig);
TEST_VERIFY_EXIT (lutimes (testlink, tv) == 0);
- struct_stat stlink;
- xlstat (testlink, &stlink);
+ struct statx stlink;
+ xstatx (AT_FDCWD, testlink, AT_SYMLINK_NOFOLLOW, STATX_BASIC_STATS, &stlink);
- TEST_COMPARE (stlink.st_atime, tv[0].tv_sec);
- TEST_COMPARE (stlink.st_mtime, tv[1].tv_sec);
+ TEST_COMPARE (stlink.stx_atime.tv_sec, tv[0].tv_sec);
+ TEST_COMPARE (stlink.stx_mtime.tv_sec, tv[1].tv_sec);
/* Check if the timestamp from original file is not changed. */
- struct_stat stfile;
- xlstat (testfile, &stfile);
+ struct statx stfile;
+ xstatx (AT_FDCWD, testfile, AT_SYMLINK_NOFOLLOW, STATX_BASIC_STATS, &stfile);
- TEST_COMPARE (stfile_orig.st_atime, stfile.st_atime);
- TEST_COMPARE (stfile_orig.st_mtime, stfile.st_mtime);
+ TEST_COMPARE (stfile_orig.stx_atime.tv_sec, stfile.stx_atime.tv_sec);
+ TEST_COMPARE (stfile_orig.stx_mtime.tv_sec, stfile.stx_mtime.tv_sec);
return 0;
}
diff --git a/io/tst-mkdirat.c b/io/tst-mkdirat.c
index 605e51e..b97bc3c 100644
--- a/io/tst-mkdirat.c
+++ b/io/tst-mkdirat.c
@@ -53,6 +53,10 @@ prepare (void)
static int
do_test (void)
{
+ /* Find the current umask. */
+ mode_t mask = umask (022);
+ umask (mask);
+
/* fdopendir takes over the descriptor, make a copy. */
int dupfd = dup (dir_fd);
if (dupfd == -1)
@@ -107,6 +111,13 @@ do_test (void)
puts ("mkdirat did not create a directory");
return 1;
}
+ if ((st1.st_mode & 01777) != (~mask & 0777))
+ {
+ printf ("mkdirat created directory with wrong mode %o, expected %o\n",
+ (unsigned int) (st1.st_mode & 01777),
+ (unsigned int) (~mask & 0777));
+ return 1;
+ }
dupfd = dup (dir_fd);
if (dupfd == -1)
@@ -156,6 +167,37 @@ do_test (void)
return 1;
}
+ /* Test again with a different mode. */
+ umask (0);
+ e = mkdirat (dir_fd, "some-dir", 01755);
+ umask (mask);
+ if (e == -1)
+ {
+ puts ("directory creation (different mode) failed");
+ return 1;
+ }
+ if (fstatat64 (dir_fd, "some-dir", &st1, 0) != 0)
+ {
+ puts ("fstat64 (different mode) failed");
+ return 1;
+ }
+ if (!S_ISDIR (st1.st_mode))
+ {
+ puts ("mkdirat (different mode) did not create a directory");
+ return 1;
+ }
+ if ((st1.st_mode & 01777) != 01755)
+ {
+ printf ("mkdirat (different mode) created directory with wrong mode %o\n",
+ (unsigned int) (st1.st_mode & 01777));
+ return 1;
+ }
+ if (unlinkat (dir_fd, "some-dir", AT_REMOVEDIR) != 0)
+ {
+ puts ("unlinkat (different mode) failed");
+ return 1;
+ }
+
close (dir_fd);
return 0;
diff --git a/io/tst-statx.c b/io/tst-statx.c
index d845688..685924a 100644
--- a/io/tst-statx.c
+++ b/io/tst-statx.c
@@ -78,7 +78,7 @@ both_implementations_tests (statx_function impl, const char *path, int fd)
struct statx stx = { 0, };
TEST_COMPARE (statx (fd, "", AT_EMPTY_PATH, STATX_BASIC_STATS, &stx), 0);
struct stat64 st;
- xfstat (fd, &st);
+ xfstat64 (fd, &st);
TEST_COMPARE (stx.stx_mode, st.st_mode);
TEST_COMPARE (stx.stx_dev_major, major (st.st_dev));
TEST_COMPARE (stx.stx_dev_minor, minor (st.st_dev));
@@ -88,7 +88,7 @@ both_implementations_tests (statx_function impl, const char *path, int fd)
TEST_COMPARE (statx (AT_FDCWD, "/dev/null", 0, STATX_BASIC_STATS, &stx),
0);
struct stat64 st;
- xstat ("/dev/null", &st);
+ xstat64 ("/dev/null", &st);
TEST_COMPARE (stx.stx_mode, st.st_mode);
TEST_COMPARE (stx.stx_dev_major, major (st.st_dev));
TEST_COMPARE (stx.stx_dev_minor, minor (st.st_dev));
diff --git a/io/tst-utime-time64.c b/io/tst-utime-time64.c
index eb62f59..8894592 100644
--- a/io/tst-utime-time64.c
+++ b/io/tst-utime-time64.c
@@ -1,2 +1 @@
-#define struct_stat struct stat
#include "tst-utime.c"
diff --git a/io/tst-utime.c b/io/tst-utime.c
index e2e6dcd..f329358 100644
--- a/io/tst-utime.c
+++ b/io/tst-utime.c
@@ -19,26 +19,23 @@
#include <utime.h>
#include <support/check.h>
#include <support/xunistd.h>
+#include <fcntl.h>
#include <sys/stat.h>
-#ifndef struct_stat
-# define struct_stat struct stat64
-#endif
-
static int
test_utime_helper (const char *file, int fd, const struct utimbuf *ut)
{
int result = utime (file, ut);
TEST_VERIFY_EXIT (result == 0);
- struct_stat st;
- xfstat (fd, &st);
+ struct statx st;
+ xstatx (fd, "", AT_EMPTY_PATH, STATX_BASIC_STATS, &st);
/* Check if seconds for actime match */
- TEST_COMPARE (st.st_atime, ut->actime);
+ TEST_COMPARE (st.stx_atime.tv_sec, ut->actime);
/* Check if seconds for modtime match */
- TEST_COMPARE (st.st_mtime, ut->modtime);
+ TEST_COMPARE (st.stx_mtime.tv_sec, ut->modtime);
return 0;
}
diff --git a/io/tst-utimensat-time64.c b/io/tst-utimensat-time64.c
index 7ac7d8d..5d60fce 100644
--- a/io/tst-utimensat-time64.c
+++ b/io/tst-utimensat-time64.c
@@ -1,2 +1 @@
-#define struct_stat struct stat
#include "tst-utimensat.c"
diff --git a/io/tst-utimensat.c b/io/tst-utimensat.c
index 3d9a72c..2a756d7 100644
--- a/io/tst-utimensat.c
+++ b/io/tst-utimensat.c
@@ -22,10 +22,6 @@
#include <sys/stat.h>
#include <sys/time.h>
-#ifndef struct_stat
-# define struct_stat struct stat64
-#endif
-
static int
test_utimesat_helper (const char *testfile, int fd, const char *testlink,
const struct timespec *ts)
@@ -33,35 +29,38 @@ test_utimesat_helper (const char *testfile, int fd, const char *testlink,
{
TEST_VERIFY_EXIT (utimensat (fd, testfile, ts, 0) == 0);
- struct_stat st;
- xfstat (fd, &st);
+ struct statx st;
+ xstatx (fd, "", AT_EMPTY_PATH, STATX_BASIC_STATS, &st);
/* Check if seconds for atime match */
- TEST_COMPARE (st.st_atime, ts[0].tv_sec);
+ TEST_COMPARE (st.stx_atime.tv_sec, ts[0].tv_sec);
/* Check if seconds for mtime match */
- TEST_COMPARE (st.st_mtime, ts[1].tv_sec);
+ TEST_COMPARE (st.stx_mtime.tv_sec, ts[1].tv_sec);
}
{
- struct_stat stfile_orig;
- xlstat (testfile, &stfile_orig);
+ struct statx stfile_orig;
+ xstatx (AT_FDCWD, testfile, AT_SYMLINK_NOFOLLOW, STATX_BASIC_STATS,
+ &stfile_orig);
TEST_VERIFY_EXIT (utimensat (0 /* ignored */, testlink, ts,
AT_SYMLINK_NOFOLLOW)
== 0);
- struct_stat stlink;
- xlstat (testlink, &stlink);
+ struct statx stlink;
+ xstatx (AT_FDCWD, testlink, AT_SYMLINK_NOFOLLOW, STATX_BASIC_STATS,
+ &stlink);
- TEST_COMPARE (stlink.st_atime, ts[0].tv_sec);
- TEST_COMPARE (stlink.st_mtime, ts[1].tv_sec);
+ TEST_COMPARE (stlink.stx_atime.tv_sec, ts[0].tv_sec);
+ TEST_COMPARE (stlink.stx_mtime.tv_sec, ts[1].tv_sec);
/* Check if the timestamp from original file is not changed. */
- struct_stat stfile;
- xlstat (testfile, &stfile);
+ struct statx stfile;
+ xstatx (AT_FDCWD, testfile, AT_SYMLINK_NOFOLLOW, STATX_BASIC_STATS,
+ &stfile);
- TEST_COMPARE (stfile_orig.st_atime, stfile.st_atime);
- TEST_COMPARE (stfile_orig.st_mtime, stfile.st_mtime);
+ TEST_COMPARE (stfile_orig.stx_atime.tv_sec, stfile.stx_atime.tv_sec);
+ TEST_COMPARE (stfile_orig.stx_mtime.tv_sec, stfile.stx_mtime.tv_sec);
}
return 0;
diff --git a/io/tst-utimes-time64.c b/io/tst-utimes-time64.c
index 234ec02..026ef5f 100644
--- a/io/tst-utimes-time64.c
+++ b/io/tst-utimes-time64.c
@@ -1,2 +1 @@
-#define struct_stat struct stat
#include "tst-utimes.c"
diff --git a/io/tst-utimes.c b/io/tst-utimes.c
index 8edcfab..6cd436c 100644
--- a/io/tst-utimes.c
+++ b/io/tst-utimes.c
@@ -18,28 +18,25 @@
#include <support/check.h>
#include <support/xunistd.h>
+#include <fcntl.h>
#include <sys/stat.h>
#include <sys/time.h>
#include <time.h>
-#ifndef struct_stat
-# define struct_stat struct stat64
-#endif
-
static int
test_utimes_helper (const char *file, int fd, const struct timeval *tv)
{
int result = utimes (file, tv);
TEST_VERIFY_EXIT (result == 0);
- struct_stat st;
- xfstat (fd, &st);
+ struct statx st;
+ xstatx (fd, "", AT_EMPTY_PATH, STATX_BASIC_STATS, &st);
/* Check if seconds for atime match */
- TEST_COMPARE (st.st_atime, tv[0].tv_sec);
+ TEST_COMPARE (st.stx_atime.tv_sec, tv[0].tv_sec);
/* Check if seconds for mtime match */
- TEST_COMPARE (st.st_mtime, tv[1].tv_sec);
+ TEST_COMPARE (st.stx_mtime.tv_sec, tv[1].tv_sec);
return 0;
}
diff --git a/libio/Makefile b/libio/Makefile
index 6a507b6..ae704d8 100644
--- a/libio/Makefile
+++ b/libio/Makefile
@@ -95,6 +95,8 @@ tests = \
tst-eof \
tst-ext \
tst-ext2 \
+ tst-fclose-unopened \
+ tst-fclose-unopened2 \
tst-fdopen-seek-failure \
tst-fgetc-after-eof \
tst-fgetwc \
@@ -250,6 +252,9 @@ LDFLAGS-tst-bz24228 = -Wl,--version-script=tst-bz24228.map
tst_wprintf2-ARGS = "Some Text"
+tst-fclose-unopened2-ENV = \
+ MALLOC_TRACE=$(objpfx)tst-fclose-unopened2.mtrace \
+ LD_PRELOAD=$(common-objpfx)/malloc/libc_malloc_debug.so
test-fmemopen-ENV = MALLOC_TRACE=$(objpfx)test-fmemopen.mtrace \
LD_PRELOAD=$(common-objpfx)/malloc/libc_malloc_debug.so
tst-fdopen-seek-failure-ENV = \
@@ -274,6 +279,8 @@ generated += \
tst-bz22415.mtrace \
tst-bz24228.check \
tst-bz24228.mtrace \
+ tst-fclose-unopened2.check \
+ tst-fclose-unopened2.mtrace \
tst-fdopen-seek-failure.check \
tst-fdopen-seek-failure.mtrace \
tst-fopenloc.check \
@@ -286,11 +293,18 @@ endif
ifeq ($(build-shared),yes)
aux += oldfileops oldstdfiles
tests += \
+ tst-fopen-compat \
tst-stderr-compat \
# tests
tests-2.0 += \
+ tst-fopen-compat \
tst-stderr-compat \
# tests-2.0
+
+tst-fopen-compat-ARGS = tst-fopen-compat.c
+# Disable PIE to trigger copy relocation.
+CFLAGS-tst-fopen-compat.c += -fno-pie
+tst-fopen-compat-no-pie = yes
endif
shared-only-routines = oldiofopen oldiofdopen oldiofclose oldfileops \
@@ -312,6 +326,7 @@ tests-special += \
$(objpfx)test-fmemopen-mem.out \
$(objpfx)tst-bz22415-mem.out \
$(objpfx)tst-bz24228-mem.out \
+ $(objpfx)tst-fclose-unopened2-mem.out \
$(objpfx)tst-fdopen-seek-failure-mem.out \
$(objpfx)tst-fopenloc-mem.out \
# tests-special
@@ -399,6 +414,11 @@ $(objpfx)test-fmemopen-mem.out: $(objpfx)test-fmemopen.out
$(common-objpfx)malloc/mtrace $(objpfx)test-fmemopen.mtrace > $@; \
$(evaluate-test)
+$(objpfx)tst-fclose-unopened2-mem.out: $(objpfx)tst-fclose-unopened2.out
+ $(common-objpfx)malloc/mtrace \
+ $(objpfx)tst-fclose-unopened2.mtrace > $@; \
+ $(evaluate-test)
+
$(objpfx)tst-fdopen-seek-failure-mem.out: $(objpfx)tst-fdopen-seek-failure.out
$(common-objpfx)malloc/mtrace \
$(objpfx)tst-fdopen-seek-failure.mtrace > $@; \
diff --git a/libio/freopen.c b/libio/freopen.c
index c7e36db..00f26ad 100644
--- a/libio/freopen.c
+++ b/libio/freopen.c
@@ -63,6 +63,10 @@ freopen (const char *filename, const char *mode, FILE *fp)
up here. */
_IO_old_file_close_it (fp);
_IO_JUMPS_FUNC_UPDATE (fp, &_IO_old_file_jumps);
+ fp->_flags2 &= ~(_IO_FLAGS2_MMAP
+ | _IO_FLAGS2_NOTCANCEL
+ | _IO_FLAGS2_CLOEXEC);
+ fp->_mode = 0;
result = _IO_old_file_fopen (fp, gfilename, mode);
}
else
@@ -72,6 +76,10 @@ freopen (const char *filename, const char *mode, FILE *fp)
_IO_JUMPS_FILE_plus (fp) = &_IO_file_jumps;
if (_IO_vtable_offset (fp) == 0 && fp->_wide_data != NULL)
fp->_wide_data->_wide_vtable = &_IO_wfile_jumps;
+ fp->_flags2 &= ~(_IO_FLAGS2_MMAP
+ | _IO_FLAGS2_NOTCANCEL
+ | _IO_FLAGS2_CLOEXEC);
+ fp->_mode = 0;
result = _IO_file_fopen (fp, gfilename, mode, 1);
if (result != NULL)
result = __fopen_maybe_mmap (result);
@@ -79,9 +87,6 @@ freopen (const char *filename, const char *mode, FILE *fp)
fp->_flags2 &= ~_IO_FLAGS2_NOCLOSE;
if (result != NULL)
{
- /* unbound stream orientation */
- result->_mode = 0;
-
if (fd != -1 && _IO_fileno (result) != fd)
{
/* At this point we have both file descriptors already allocated,
@@ -108,5 +113,7 @@ freopen (const char *filename, const char *mode, FILE *fp)
end:
_IO_release_lock (fp);
+ if (result == NULL && (fp->_flags & _IO_IS_FILEBUF) != 0)
+ _IO_deallocate_file (fp);
return result;
}
diff --git a/libio/freopen64.c b/libio/freopen64.c
index 9a6d5ed..77c0dd3 100644
--- a/libio/freopen64.c
+++ b/libio/freopen64.c
@@ -56,15 +56,16 @@ freopen64 (const char *filename, const char *mode, FILE *fp)
_IO_JUMPS_FILE_plus (fp) = &_IO_file_jumps;
if (_IO_vtable_offset (fp) == 0 && fp->_wide_data != NULL)
fp->_wide_data->_wide_vtable = &_IO_wfile_jumps;
+ fp->_flags2 &= ~(_IO_FLAGS2_MMAP
+ | _IO_FLAGS2_NOTCANCEL
+ | _IO_FLAGS2_CLOEXEC);
+ fp->_mode = 0;
result = _IO_file_fopen (fp, gfilename, mode, 0);
fp->_flags2 &= ~_IO_FLAGS2_NOCLOSE;
if (result != NULL)
result = __fopen_maybe_mmap (result);
if (result != NULL)
{
- /* unbound stream orientation */
- result->_mode = 0;
-
if (fd != -1 && _IO_fileno (result) != fd)
{
/* At this point we have both file descriptors already allocated,
@@ -91,5 +92,7 @@ freopen64 (const char *filename, const char *mode, FILE *fp)
end:
_IO_release_lock (fp);
+ if (result == NULL && (fp->_flags & _IO_IS_FILEBUF) != 0)
+ _IO_deallocate_file (fp);
return result;
}
diff --git a/libio/genops.c b/libio/genops.c
index 99f5e80..6f20d49 100644
--- a/libio/genops.c
+++ b/libio/genops.c
@@ -662,7 +662,7 @@ _IO_sputbackc (FILE *fp, int c)
{
int result;
- if (fp->_IO_read_ptr > fp->_IO_read_base
+ if (fp->_IO_read_ptr > fp->_IO_read_base && !_IO_in_backup (fp)
&& (unsigned char)fp->_IO_read_ptr[-1] == (unsigned char)c)
{
fp->_IO_read_ptr--;
@@ -816,6 +816,12 @@ _IO_unbuffer_all (void)
legacy = 1;
#endif
+ /* Free up the backup area if it was ever allocated. */
+ if (_IO_have_backup (fp))
+ _IO_free_backup_area (fp);
+ if (!legacy && fp->_mode > 0 && _IO_have_wbackup (fp))
+ _IO_free_wbackup_area (fp);
+
if (! (fp->_flags & _IO_UNBUFFERED)
/* Iff stream is un-orientated, it wasn't used. */
&& (legacy || fp->_mode != 0))
diff --git a/libio/libioP.h b/libio/libioP.h
index 1af287b..616253f 100644
--- a/libio/libioP.h
+++ b/libio/libioP.h
@@ -577,8 +577,8 @@ extern void _IO_old_init (FILE *fp, int flags) __THROW;
((__fp)->_wide_data->_IO_write_base \
= (__fp)->_wide_data->_IO_write_ptr = __p, \
(__fp)->_wide_data->_IO_write_end = (__ep))
-#define _IO_have_backup(fp) ((fp)->_IO_save_base != NULL)
-#define _IO_have_wbackup(fp) ((fp)->_wide_data->_IO_save_base != NULL)
+#define _IO_have_backup(fp) ((fp)->_IO_backup_base != NULL)
+#define _IO_have_wbackup(fp) ((fp)->_wide_data->_IO_backup_base != NULL)
#define _IO_in_backup(fp) ((fp)->_flags & _IO_IN_BACKUP)
#define _IO_have_markers(fp) ((fp)->_markers != NULL)
#define _IO_blen(fp) ((fp)->_IO_buf_end - (fp)->_IO_buf_base)
diff --git a/libio/oldfileops.c b/libio/oldfileops.c
index 97148db..8f775c9 100644
--- a/libio/oldfileops.c
+++ b/libio/oldfileops.c
@@ -103,9 +103,11 @@ _IO_old_file_init_internal (struct _IO_FILE_plus *fp)
fp->file._old_offset = _IO_pos_BAD;
fp->file._flags |= CLOSED_FILEBUF_FLAGS;
- _IO_link_in (fp);
+ /* NB: _vtable_offset must be set before calling _IO_link_in since
+ _IO_vtable_offset is used to detect the old binaries. */
fp->file._vtable_offset = ((int) sizeof (struct _IO_FILE)
- (int) sizeof (struct _IO_FILE_complete));
+ _IO_link_in (fp);
fp->file._fileno = -1;
if (&_IO_stdin_used != NULL || !_IO_legacy_file ((FILE *) fp))
diff --git a/libio/tst-fclose-unopened.c b/libio/tst-fclose-unopened.c
new file mode 100644
index 0000000..4fed2ff
--- /dev/null
+++ b/libio/tst-fclose-unopened.c
@@ -0,0 +1,42 @@
+/* Test using fclose on an unopened file.
+ Copyright (C) 2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+#include <stdio.h>
+#include <support/check.h>
+
+/* Verify that fclose on an unopened file returns EOF. This test uses
+ a file with an unallocated buffer.
+
+ This is not part of the fclose external contract but there are
+ dependencies on this behaviour. */
+
+static int
+do_test (void)
+{
+ TEST_COMPARE (fclose (stdin), 0);
+
+ /* Attempt to close the unopened file and verify that EOF is returned.
+ Calling fclose on a file twice normally causes a use-after-free bug,
+ however the standard streams are an exception since they are not
+ deallocated by fclose. */
+ TEST_COMPARE (fclose (stdin), EOF);
+
+ return 0;
+}
+
+#include <support/test-driver.c>
diff --git a/libio/tst-fclose-unopened2.c b/libio/tst-fclose-unopened2.c
new file mode 100644
index 0000000..1e99d9d
--- /dev/null
+++ b/libio/tst-fclose-unopened2.c
@@ -0,0 +1,51 @@
+/* Test using fclose on an unopened file.
+ Copyright (C) 2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+#include <mcheck.h>
+#include <stdio.h>
+#include <support/check.h>
+
+/* Verify that fclose on an unopened file returns EOF. This test uses
+ a file with an allocated buffer.
+
+ This is not part of the fclose external contract but there are
+ dependencies on this behaviour. */
+
+static int
+do_test (void)
+{
+ mtrace ();
+
+ /* Input file tst-fclose-unopened2.input has 6 bytes plus newline. */
+ char buf[6];
+
+ /* Read from the file to ensure its internal buffer is allocated. */
+ TEST_COMPARE (fread (buf, 1, sizeof (buf), stdin), sizeof (buf));
+
+ TEST_COMPARE (fclose (stdin), 0);
+
+ /* Attempt to close the unopened file and verify that EOF is returned.
+ Calling fclose on a file twice normally causes a use-after-free bug,
+ however the standard streams are an exception since they are not
+ deallocated by fclose. */
+ TEST_COMPARE (fclose (stdin), EOF);
+
+ return 0;
+}
+
+#include <support/test-driver.c>
diff --git a/libio/tst-fclose-unopened2.input b/libio/tst-fclose-unopened2.input
new file mode 100644
index 0000000..399f9ba
--- /dev/null
+++ b/libio/tst-fclose-unopened2.input
@@ -0,0 +1 @@
+fclose
diff --git a/libio/tst-fopen-compat.c b/libio/tst-fopen-compat.c
new file mode 100644
index 0000000..f241b61
--- /dev/null
+++ b/libio/tst-fopen-compat.c
@@ -0,0 +1,85 @@
+/* Verify that fopen works with copy relocation on _IO_stderr_ in binaries
+ linked with glibc 2.0.
+ Copyright (C) 2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+#include <shlib-compat.h>
+
+#if TEST_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)
+# define _LIBC
+# define _IO_USE_OLD_IO_FILE
+# include <stdio.h>
+# include <string.h>
+# include <unistd.h>
+# include <limits.h>
+# include <sys/stat.h>
+# include <support/check.h>
+
+struct _IO_jump_t;
+
+struct _IO_FILE_plus
+{
+ FILE file;
+ const struct _IO_jump_t *vtable;
+};
+
+extern struct _IO_FILE_plus _IO_stderr_;
+compat_symbol_reference (libc, _IO_stderr_, _IO_stderr_, GLIBC_2_0);
+compat_symbol_reference (libc, fopen, fopen, GLIBC_2_0);
+compat_symbol_reference (libc, fclose, fclose, GLIBC_2_0);
+
+static int
+do_test (int argc, char *argv[])
+{
+ static char filename[PATH_MAX + 1];
+ struct stat st;
+ char *name = NULL;
+ int i;
+
+ /* Try to trigger copy relocation. */
+ TEST_VERIFY_EXIT (_IO_stderr_.file._fileno == STDERR_FILENO);
+
+ for (i = 1; i < argc; i++)
+ {
+ name = argv[i];
+ if (stat (name, &st) == 0)
+ {
+ TEST_VERIFY_EXIT (strlen (name) <= PATH_MAX);
+ break;
+ }
+ }
+ TEST_VERIFY_EXIT (name != NULL);
+
+ strcpy (filename, name);
+ FILE *fp = fopen (filename, "r");
+ TEST_VERIFY_EXIT (strcmp (filename, name) == 0);
+ TEST_VERIFY_EXIT (fp != NULL);
+ TEST_VERIFY_EXIT (fclose (fp) == 0);
+ return 0;
+}
+#else
+# include <support/test-driver.h>
+
+static int
+do_test (int argc, char *argv[])
+{
+ return EXIT_UNSUPPORTED;
+}
+#endif
+
+#define TEST_FUNCTION_ARGV do_test
+#include <support/test-driver.c>
diff --git a/libio/tst-getdelim.c b/libio/tst-getdelim.c
index e6dd964..db15bf9 100644
--- a/libio/tst-getdelim.c
+++ b/libio/tst-getdelim.c
@@ -1,4 +1,6 @@
-/* Check that getdelim sets error indicator on error (BZ #29917)
+/* Test getdelim conforming to POSIX specifications.
+
+ Note: Most getdelim use cases are covered by stdio-common/tst-getline.
Copyright (C) 2023-2024 Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -18,18 +20,36 @@
<https://www.gnu.org/licenses/>. */
#include <stdio.h>
+#include <stdlib.h>
#include <errno.h>
#include <support/check.h>
+#include <support/support.h>
+#include <support/test-driver.h>
static int
do_test (void)
{
+ /* Check that getdelim sets error indicator on error (BZ #29917) */
clearerr (stdin);
TEST_VERIFY (getdelim (0, 0, '\n', stdin) == -1);
TEST_VERIFY (ferror (stdin) != 0);
TEST_VERIFY (errno == EINVAL);
+ /* Test getdelim with NUL as delimiter */
+ verbose_printf ("Testing NUL delimiter\n");
+ char *lineptr = NULL;
+ size_t linelen = 0;
+ char membuf[] = "abc\0d\nef\0";
+ FILE *memstream = fmemopen (membuf, sizeof (membuf), "r");
+ TEST_VERIFY_EXIT (memstream != NULL);
+ TEST_VERIFY (getdelim (&lineptr, &linelen, '\0', memstream) != -1);
+ TEST_COMPARE_BLOB (lineptr, 4, "abc\0", 4);
+ TEST_VERIFY (getdelim (&lineptr, &linelen, '\0', memstream) != -1);
+ TEST_COMPARE_BLOB (lineptr, 5, "d\nef\0", 5);
+ fclose (memstream);
+ free (lineptr);
+
return 0;
}
diff --git a/locale/programs/ld-collate.c b/locale/programs/ld-collate.c
index 5048adb..2cf9a4b 100644
--- a/locale/programs/ld-collate.c
+++ b/locale/programs/ld-collate.c
@@ -2678,7 +2678,7 @@ collate_read (struct linereader *ldfile, struct localedef_t *result,
if (nowtok == tok_eof)
break;
- /* Ingore empty lines. */
+ /* Ignore empty lines. */
if (nowtok == tok_eol)
{
now = lr_token (ldfile, charmap, result, NULL, verbose);
diff --git a/locale/programs/ld-ctype.c b/locale/programs/ld-ctype.c
index eb6e7e1..2270960 100644
--- a/locale/programs/ld-ctype.c
+++ b/locale/programs/ld-ctype.c
@@ -2164,7 +2164,7 @@ ctype_read (struct linereader *ldfile, struct localedef_t *result,
if (nowtok == tok_eof)
break;
- /* Ingore empty lines. */
+ /* Ignore empty lines. */
if (nowtok == tok_eol)
{
now = lr_token (ldfile, charmap, NULL, NULL, verbose);
diff --git a/locale/programs/ld-measurement.c b/locale/programs/ld-measurement.c
index c406126..ba7f0c0 100644
--- a/locale/programs/ld-measurement.c
+++ b/locale/programs/ld-measurement.c
@@ -168,7 +168,7 @@ measurement_read (struct linereader *ldfile, struct localedef_t *result,
if (nowtok == tok_eof)
break;
- /* Ingore empty lines. */
+ /* Ignore empty lines. */
if (nowtok == tok_eol)
{
now = lr_token (ldfile, charmap, result, NULL, verbose);
diff --git a/locale/programs/ld-numeric.c b/locale/programs/ld-numeric.c
index 11fdac0..e20e322 100644
--- a/locale/programs/ld-numeric.c
+++ b/locale/programs/ld-numeric.c
@@ -188,7 +188,7 @@ numeric_read (struct linereader *ldfile, struct localedef_t *result,
if (nowtok == tok_eof)
break;
- /* Ingore empty lines. */
+ /* Ignore empty lines. */
if (nowtok == tok_eol)
{
now = lr_token (ldfile, charmap, result, NULL, verbose);
diff --git a/locale/programs/ld-paper.c b/locale/programs/ld-paper.c
index 95b3d10..a755140 100644
--- a/locale/programs/ld-paper.c
+++ b/locale/programs/ld-paper.c
@@ -167,7 +167,7 @@ paper_read (struct linereader *ldfile, struct localedef_t *result,
if (nowtok == tok_eof)
break;
- /* Ingore empty lines. */
+ /* Ignore empty lines. */
if (nowtok == tok_eol)
{
now = lr_token (ldfile, charmap, result, NULL, verbose);
diff --git a/locale/programs/ld-telephone.c b/locale/programs/ld-telephone.c
index b455739..79aba6e 100644
--- a/locale/programs/ld-telephone.c
+++ b/locale/programs/ld-telephone.c
@@ -223,7 +223,7 @@ telephone_read (struct linereader *ldfile, struct localedef_t *result,
if (nowtok == tok_eof)
break;
- /* Ingore empty lines. */
+ /* Ignore empty lines. */
if (nowtok == tok_eol)
{
now = lr_token (ldfile, charmap, result, NULL, verbose);
diff --git a/locale/programs/ld-time.c b/locale/programs/ld-time.c
index 1abff3c..349b31f 100644
--- a/locale/programs/ld-time.c
+++ b/locale/programs/ld-time.c
@@ -710,7 +710,7 @@ time_read (struct linereader *ldfile, struct localedef_t *result,
if (nowtok == tok_eof)
break;
- /* Ingore empty lines. */
+ /* Ignore empty lines. */
if (nowtok == tok_eol)
{
now = lr_token (ldfile, charmap, result, repertoire, verbose);
diff --git a/locale/tst-localedef-path-norm.c b/locale/tst-localedef-path-norm.c
index ffe8cbd..f592b9a 100644
--- a/locale/tst-localedef-path-norm.c
+++ b/locale/tst-localedef-path-norm.c
@@ -84,7 +84,7 @@ run_test (void *closure)
support_capture_subprocess_free (&result);
/* Verify path is present and is a directory. */
- xstat (path, &fs);
+ xstat64 (path, &fs);
if (!S_ISDIR (fs.st_mode))
{
support_record_failure ();
diff --git a/localedata/charmaps/UTF-8 b/localedata/charmaps/UTF-8
index bc694ec..cdc33eb 100644
--- a/localedata/charmaps/UTF-8
+++ b/localedata/charmaps/UTF-8
@@ -2132,6 +2132,7 @@ CHARMAP
<U088E> /xe0/xa2/x8e ARABIC VERTICAL TAIL
<U0890> /xe0/xa2/x90 ARABIC POUND MARK ABOVE
<U0891> /xe0/xa2/x91 ARABIC PIASTRE MARK ABOVE
+<U0897> /xe0/xa2/x97 ARABIC PEPET
<U0898> /xe0/xa2/x98 ARABIC SMALL HIGH WORD AL-JUZ
<U0899> /xe0/xa2/x99 ARABIC SMALL LOW WORD ISHMAAM
<U089A> /xe0/xa2/x9a ARABIC SMALL LOW WORD IMAALA
@@ -6222,6 +6223,8 @@ CHARMAP
<U1B4A> /xe1/xad/x8a BALINESE LETTER ZAL SASAK
<U1B4B> /xe1/xad/x8b BALINESE LETTER ASYURA SASAK
<U1B4C> /xe1/xad/x8c BALINESE LETTER ARCHAIC JNYA
+<U1B4E> /xe1/xad/x8e BALINESE INVERTED CARIK SIKI
+<U1B4F> /xe1/xad/x8f BALINESE INVERTED CARIK PAREREN
<U1B50> /xe1/xad/x90 BALINESE DIGIT ZERO
<U1B51> /xe1/xad/x91 BALINESE DIGIT ONE
<U1B52> /xe1/xad/x92 BALINESE DIGIT TWO
@@ -6269,6 +6272,7 @@ CHARMAP
<U1B7C> /xe1/xad/xbc BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PING
<U1B7D> /xe1/xad/xbd BALINESE PANTI LANTANG
<U1B7E> /xe1/xad/xbe BALINESE PAMADA LANTANG
+<U1B7F> /xe1/xad/xbf BALINESE PANTI BAWAK
<U1B80> /xe1/xae/x80 SUNDANESE SIGN PANYECEK
<U1B81> /xe1/xae/x81 SUNDANESE SIGN PANGLAYAR
<U1B82> /xe1/xae/x82 SUNDANESE SIGN PANGWISAD
@@ -6520,6 +6524,8 @@ CHARMAP
<U1C86> /xe1/xb2/x86 CYRILLIC SMALL LETTER TALL HARD SIGN
<U1C87> /xe1/xb2/x87 CYRILLIC SMALL LETTER TALL YAT
<U1C88> /xe1/xb2/x88 CYRILLIC SMALL LETTER UNBLENDED UK
+<U1C89> /xe1/xb2/x89 CYRILLIC CAPITAL LETTER TJE
+<U1C8A> /xe1/xb2/x8a CYRILLIC SMALL LETTER TJE
<U1C90> /xe1/xb2/x90 GEORGIAN MTAVRULI CAPITAL LETTER AN
<U1C91> /xe1/xb2/x91 GEORGIAN MTAVRULI CAPITAL LETTER BAN
<U1C92> /xe1/xb2/x92 GEORGIAN MTAVRULI CAPITAL LETTER GAN
@@ -8384,6 +8390,9 @@ CHARMAP
<U2424> /xe2/x90/xa4 SYMBOL FOR NEWLINE
<U2425> /xe2/x90/xa5 SYMBOL FOR DELETE FORM TWO
<U2426> /xe2/x90/xa6 SYMBOL FOR SUBSTITUTE FORM TWO
+<U2427> /xe2/x90/xa7 SYMBOL FOR DELETE SQUARE CHECKER BOARD FORM
+<U2428> /xe2/x90/xa8 SYMBOL FOR DELETE RECTANGULAR CHECKER BOARD FORM
+<U2429> /xe2/x90/xa9 SYMBOL FOR DELETE MEDIUM SHADE FORM
<U2440> /xe2/x91/x80 OCR HOOK
<U2441> /xe2/x91/x81 OCR CHAIR
<U2442> /xe2/x91/x82 OCR FORK
@@ -11718,6 +11727,8 @@ CHARMAP
<U31E1> /xe3/x87/xa1 CJK STROKE HZZZG
<U31E2> /xe3/x87/xa2 CJK STROKE PG
<U31E3> /xe3/x87/xa3 CJK STROKE Q
+<U31E4> /xe3/x87/xa4 CJK STROKE HXG
+<U31E5> /xe3/x87/xa5 CJK STROKE SZP
<U31EF> /xe3/x87/xaf IDEOGRAPHIC DESCRIPTION CHARACTER SUBTRACTION
<U31F0> /xe3/x87/xb0 KATAKANA LETTER SMALL KU
<U31F1> /xe3/x87/xb1 KATAKANA LETTER SMALL SI
@@ -14696,6 +14707,9 @@ CHARMAP
<UA7C8> /xea/x9f/x88 LATIN SMALL LETTER D WITH SHORT STROKE OVERLAY
<UA7C9> /xea/x9f/x89 LATIN CAPITAL LETTER S WITH SHORT STROKE OVERLAY
<UA7CA> /xea/x9f/x8a LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY
+<UA7CB> /xea/x9f/x8b LATIN CAPITAL LETTER RAMS HORN
+<UA7CC> /xea/x9f/x8c LATIN CAPITAL LETTER S WITH DIAGONAL STROKE
+<UA7CD> /xea/x9f/x8d LATIN SMALL LETTER S WITH DIAGONAL STROKE
<UA7D0> /xea/x9f/x90 LATIN CAPITAL LETTER CLOSED INSULAR G
<UA7D1> /xea/x9f/x91 LATIN SMALL LETTER CLOSED INSULAR G
<UA7D3> /xea/x9f/x93 LATIN SMALL LETTER DOUBLE THORN
@@ -14704,6 +14718,9 @@ CHARMAP
<UA7D7> /xea/x9f/x97 LATIN SMALL LETTER MIDDLE SCOTS S
<UA7D8> /xea/x9f/x98 LATIN CAPITAL LETTER SIGMOID S
<UA7D9> /xea/x9f/x99 LATIN SMALL LETTER SIGMOID S
+<UA7DA> /xea/x9f/x9a LATIN CAPITAL LETTER LAMBDA
+<UA7DB> /xea/x9f/x9b LATIN SMALL LETTER LAMBDA
+<UA7DC> /xea/x9f/x9c LATIN CAPITAL LETTER LAMBDA WITH STROKE
<UA7F2> /xea/x9f/xb2 MODIFIER LETTER CAPITAL C
<UA7F3> /xea/x9f/xb3 MODIFIER LETTER CAPITAL F
<UA7F4> /xea/x9f/xb4 MODIFIER LETTER CAPITAL Q
@@ -29705,6 +29722,58 @@ CHARMAP
<U000105B9> /xf0/x90/x96/xb9 VITHKUQI SMALL LETTER XE
<U000105BB> /xf0/x90/x96/xbb VITHKUQI SMALL LETTER Y
<U000105BC> /xf0/x90/x96/xbc VITHKUQI SMALL LETTER ZE
+<U000105C0> /xf0/x90/x97/x80 TODHRI LETTER A
+<U000105C1> /xf0/x90/x97/x81 TODHRI LETTER AS
+<U000105C2> /xf0/x90/x97/x82 TODHRI LETTER BA
+<U000105C3> /xf0/x90/x97/x83 TODHRI LETTER MBA
+<U000105C4> /xf0/x90/x97/x84 TODHRI LETTER CA
+<U000105C5> /xf0/x90/x97/x85 TODHRI LETTER CHA
+<U000105C6> /xf0/x90/x97/x86 TODHRI LETTER DA
+<U000105C7> /xf0/x90/x97/x87 TODHRI LETTER NDA
+<U000105C8> /xf0/x90/x97/x88 TODHRI LETTER DHA
+<U000105C9> /xf0/x90/x97/x89 TODHRI LETTER EI
+<U000105CA> /xf0/x90/x97/x8a TODHRI LETTER E
+<U000105CB> /xf0/x90/x97/x8b TODHRI LETTER FA
+<U000105CC> /xf0/x90/x97/x8c TODHRI LETTER GA
+<U000105CD> /xf0/x90/x97/x8d TODHRI LETTER NGA
+<U000105CE> /xf0/x90/x97/x8e TODHRI LETTER GJA
+<U000105CF> /xf0/x90/x97/x8f TODHRI LETTER NGJA
+<U000105D0> /xf0/x90/x97/x90 TODHRI LETTER HA
+<U000105D1> /xf0/x90/x97/x91 TODHRI LETTER HJA
+<U000105D2> /xf0/x90/x97/x92 TODHRI LETTER I
+<U000105D3> /xf0/x90/x97/x93 TODHRI LETTER JA
+<U000105D4> /xf0/x90/x97/x94 TODHRI LETTER KA
+<U000105D5> /xf0/x90/x97/x95 TODHRI LETTER LA
+<U000105D6> /xf0/x90/x97/x96 TODHRI LETTER LLA
+<U000105D7> /xf0/x90/x97/x97 TODHRI LETTER MA
+<U000105D8> /xf0/x90/x97/x98 TODHRI LETTER NA
+<U000105D9> /xf0/x90/x97/x99 TODHRI LETTER NJAN
+<U000105DA> /xf0/x90/x97/x9a TODHRI LETTER O
+<U000105DB> /xf0/x90/x97/x9b TODHRI LETTER PA
+<U000105DC> /xf0/x90/x97/x9c TODHRI LETTER QA
+<U000105DD> /xf0/x90/x97/x9d TODHRI LETTER RA
+<U000105DE> /xf0/x90/x97/x9e TODHRI LETTER RRA
+<U000105DF> /xf0/x90/x97/x9f TODHRI LETTER SA
+<U000105E0> /xf0/x90/x97/xa0 TODHRI LETTER SHA
+<U000105E1> /xf0/x90/x97/xa1 TODHRI LETTER SHTA
+<U000105E2> /xf0/x90/x97/xa2 TODHRI LETTER TA
+<U000105E3> /xf0/x90/x97/xa3 TODHRI LETTER THA
+<U000105E4> /xf0/x90/x97/xa4 TODHRI LETTER U
+<U000105E5> /xf0/x90/x97/xa5 TODHRI LETTER VA
+<U000105E6> /xf0/x90/x97/xa6 TODHRI LETTER XA
+<U000105E7> /xf0/x90/x97/xa7 TODHRI LETTER NXA
+<U000105E8> /xf0/x90/x97/xa8 TODHRI LETTER XHA
+<U000105E9> /xf0/x90/x97/xa9 TODHRI LETTER NXHA
+<U000105EA> /xf0/x90/x97/xaa TODHRI LETTER Y
+<U000105EB> /xf0/x90/x97/xab TODHRI LETTER JY
+<U000105EC> /xf0/x90/x97/xac TODHRI LETTER ZA
+<U000105ED> /xf0/x90/x97/xad TODHRI LETTER ZHA
+<U000105EE> /xf0/x90/x97/xae TODHRI LETTER GHA
+<U000105EF> /xf0/x90/x97/xaf TODHRI LETTER STA
+<U000105F0> /xf0/x90/x97/xb0 TODHRI LETTER SKAN
+<U000105F1> /xf0/x90/x97/xb1 TODHRI LETTER KHA
+<U000105F2> /xf0/x90/x97/xb2 TODHRI LETTER PSA
+<U000105F3> /xf0/x90/x97/xb3 TODHRI LETTER OO
<U00010600> /xf0/x90/x98/x80 LINEAR A SIGN AB001
<U00010601> /xf0/x90/x98/x81 LINEAR A SIGN AB002
<U00010602> /xf0/x90/x98/x82 LINEAR A SIGN AB003
@@ -31026,6 +31095,75 @@ CHARMAP
<U00010D37> /xf0/x90/xb4/xb7 HANIFI ROHINGYA DIGIT SEVEN
<U00010D38> /xf0/x90/xb4/xb8 HANIFI ROHINGYA DIGIT EIGHT
<U00010D39> /xf0/x90/xb4/xb9 HANIFI ROHINGYA DIGIT NINE
+<U00010D40> /xf0/x90/xb5/x80 GARAY DIGIT ZERO
+<U00010D41> /xf0/x90/xb5/x81 GARAY DIGIT ONE
+<U00010D42> /xf0/x90/xb5/x82 GARAY DIGIT TWO
+<U00010D43> /xf0/x90/xb5/x83 GARAY DIGIT THREE
+<U00010D44> /xf0/x90/xb5/x84 GARAY DIGIT FOUR
+<U00010D45> /xf0/x90/xb5/x85 GARAY DIGIT FIVE
+<U00010D46> /xf0/x90/xb5/x86 GARAY DIGIT SIX
+<U00010D47> /xf0/x90/xb5/x87 GARAY DIGIT SEVEN
+<U00010D48> /xf0/x90/xb5/x88 GARAY DIGIT EIGHT
+<U00010D49> /xf0/x90/xb5/x89 GARAY DIGIT NINE
+<U00010D4A> /xf0/x90/xb5/x8a GARAY VOWEL SIGN A
+<U00010D4B> /xf0/x90/xb5/x8b GARAY VOWEL SIGN I
+<U00010D4C> /xf0/x90/xb5/x8c GARAY VOWEL SIGN O
+<U00010D4D> /xf0/x90/xb5/x8d GARAY VOWEL SIGN EE
+<U00010D4E> /xf0/x90/xb5/x8e GARAY VOWEL LENGTH MARK
+<U00010D4F> /xf0/x90/xb5/x8f GARAY SUKUN
+<U00010D50> /xf0/x90/xb5/x90 GARAY CAPITAL LETTER A
+<U00010D51> /xf0/x90/xb5/x91 GARAY CAPITAL LETTER CA
+<U00010D52> /xf0/x90/xb5/x92 GARAY CAPITAL LETTER MA
+<U00010D53> /xf0/x90/xb5/x93 GARAY CAPITAL LETTER KA
+<U00010D54> /xf0/x90/xb5/x94 GARAY CAPITAL LETTER BA
+<U00010D55> /xf0/x90/xb5/x95 GARAY CAPITAL LETTER JA
+<U00010D56> /xf0/x90/xb5/x96 GARAY CAPITAL LETTER SA
+<U00010D57> /xf0/x90/xb5/x97 GARAY CAPITAL LETTER WA
+<U00010D58> /xf0/x90/xb5/x98 GARAY CAPITAL LETTER LA
+<U00010D59> /xf0/x90/xb5/x99 GARAY CAPITAL LETTER GA
+<U00010D5A> /xf0/x90/xb5/x9a GARAY CAPITAL LETTER DA
+<U00010D5B> /xf0/x90/xb5/x9b GARAY CAPITAL LETTER XA
+<U00010D5C> /xf0/x90/xb5/x9c GARAY CAPITAL LETTER YA
+<U00010D5D> /xf0/x90/xb5/x9d GARAY CAPITAL LETTER TA
+<U00010D5E> /xf0/x90/xb5/x9e GARAY CAPITAL LETTER RA
+<U00010D5F> /xf0/x90/xb5/x9f GARAY CAPITAL LETTER NYA
+<U00010D60> /xf0/x90/xb5/xa0 GARAY CAPITAL LETTER FA
+<U00010D61> /xf0/x90/xb5/xa1 GARAY CAPITAL LETTER NA
+<U00010D62> /xf0/x90/xb5/xa2 GARAY CAPITAL LETTER PA
+<U00010D63> /xf0/x90/xb5/xa3 GARAY CAPITAL LETTER HA
+<U00010D64> /xf0/x90/xb5/xa4 GARAY CAPITAL LETTER OLD KA
+<U00010D65> /xf0/x90/xb5/xa5 GARAY CAPITAL LETTER OLD NA
+<U00010D69> /xf0/x90/xb5/xa9 GARAY VOWEL SIGN E
+<U00010D6A> /xf0/x90/xb5/xaa GARAY CONSONANT GEMINATION MARK
+<U00010D6B> /xf0/x90/xb5/xab GARAY COMBINING DOT ABOVE
+<U00010D6C> /xf0/x90/xb5/xac GARAY COMBINING DOUBLE DOT ABOVE
+<U00010D6D> /xf0/x90/xb5/xad GARAY CONSONANT NASALIZATION MARK
+<U00010D6E> /xf0/x90/xb5/xae GARAY HYPHEN
+<U00010D6F> /xf0/x90/xb5/xaf GARAY REDUPLICATION MARK
+<U00010D70> /xf0/x90/xb5/xb0 GARAY SMALL LETTER A
+<U00010D71> /xf0/x90/xb5/xb1 GARAY SMALL LETTER CA
+<U00010D72> /xf0/x90/xb5/xb2 GARAY SMALL LETTER MA
+<U00010D73> /xf0/x90/xb5/xb3 GARAY SMALL LETTER KA
+<U00010D74> /xf0/x90/xb5/xb4 GARAY SMALL LETTER BA
+<U00010D75> /xf0/x90/xb5/xb5 GARAY SMALL LETTER JA
+<U00010D76> /xf0/x90/xb5/xb6 GARAY SMALL LETTER SA
+<U00010D77> /xf0/x90/xb5/xb7 GARAY SMALL LETTER WA
+<U00010D78> /xf0/x90/xb5/xb8 GARAY SMALL LETTER LA
+<U00010D79> /xf0/x90/xb5/xb9 GARAY SMALL LETTER GA
+<U00010D7A> /xf0/x90/xb5/xba GARAY SMALL LETTER DA
+<U00010D7B> /xf0/x90/xb5/xbb GARAY SMALL LETTER XA
+<U00010D7C> /xf0/x90/xb5/xbc GARAY SMALL LETTER YA
+<U00010D7D> /xf0/x90/xb5/xbd GARAY SMALL LETTER TA
+<U00010D7E> /xf0/x90/xb5/xbe GARAY SMALL LETTER RA
+<U00010D7F> /xf0/x90/xb5/xbf GARAY SMALL LETTER NYA
+<U00010D80> /xf0/x90/xb6/x80 GARAY SMALL LETTER FA
+<U00010D81> /xf0/x90/xb6/x81 GARAY SMALL LETTER NA
+<U00010D82> /xf0/x90/xb6/x82 GARAY SMALL LETTER PA
+<U00010D83> /xf0/x90/xb6/x83 GARAY SMALL LETTER HA
+<U00010D84> /xf0/x90/xb6/x84 GARAY SMALL LETTER OLD KA
+<U00010D85> /xf0/x90/xb6/x85 GARAY SMALL LETTER OLD NA
+<U00010D8E> /xf0/x90/xb6/x8e GARAY PLUS SIGN
+<U00010D8F> /xf0/x90/xb6/x8f GARAY MINUS SIGN
<U00010E60> /xf0/x90/xb9/xa0 RUMI DIGIT ONE
<U00010E61> /xf0/x90/xb9/xa1 RUMI DIGIT TWO
<U00010E62> /xf0/x90/xb9/xa2 RUMI DIGIT THREE
@@ -31104,6 +31242,10 @@ CHARMAP
<U00010EAD> /xf0/x90/xba/xad YEZIDI HYPHENATION MARK
<U00010EB0> /xf0/x90/xba/xb0 YEZIDI LETTER LAM WITH DOT ABOVE
<U00010EB1> /xf0/x90/xba/xb1 YEZIDI LETTER YOT WITH CIRCUMFLEX ABOVE
+<U00010EC2> /xf0/x90/xbb/x82 ARABIC LETTER DAL WITH TWO DOTS VERTICALLY BELOW
+<U00010EC3> /xf0/x90/xbb/x83 ARABIC LETTER TAH WITH TWO DOTS VERTICALLY BELOW
+<U00010EC4> /xf0/x90/xbb/x84 ARABIC LETTER KAF WITH TWO DOTS VERTICALLY BELOW
+<U00010EFC> /xf0/x90/xbb/xbc ARABIC COMBINING ALEF OVERLAY
<U00010EFD> /xf0/x90/xbb/xbd ARABIC SMALL LOW WORD SAKTA
<U00010EFE> /xf0/x90/xbb/xbe ARABIC SMALL LOW WORD QASR
<U00010EFF> /xf0/x90/xbb/xbf ARABIC SMALL LOW WORD MADDA
@@ -31968,6 +32110,86 @@ CHARMAP
<U00011372> /xf0/x91/x8d/xb2 COMBINING GRANTHA LETTER NA
<U00011373> /xf0/x91/x8d/xb3 COMBINING GRANTHA LETTER VI
<U00011374> /xf0/x91/x8d/xb4 COMBINING GRANTHA LETTER PA
+<U00011380> /xf0/x91/x8e/x80 TULU-TIGALARI LETTER A
+<U00011381> /xf0/x91/x8e/x81 TULU-TIGALARI LETTER AA
+<U00011382> /xf0/x91/x8e/x82 TULU-TIGALARI LETTER I
+<U00011383> /xf0/x91/x8e/x83 TULU-TIGALARI LETTER II
+<U00011384> /xf0/x91/x8e/x84 TULU-TIGALARI LETTER U
+<U00011385> /xf0/x91/x8e/x85 TULU-TIGALARI LETTER UU
+<U00011386> /xf0/x91/x8e/x86 TULU-TIGALARI LETTER VOCALIC R
+<U00011387> /xf0/x91/x8e/x87 TULU-TIGALARI LETTER VOCALIC RR
+<U00011388> /xf0/x91/x8e/x88 TULU-TIGALARI LETTER VOCALIC L
+<U00011389> /xf0/x91/x8e/x89 TULU-TIGALARI LETTER VOCALIC LL
+<U0001138B> /xf0/x91/x8e/x8b TULU-TIGALARI LETTER EE
+<U0001138E> /xf0/x91/x8e/x8e TULU-TIGALARI LETTER AI
+<U00011390> /xf0/x91/x8e/x90 TULU-TIGALARI LETTER OO
+<U00011391> /xf0/x91/x8e/x91 TULU-TIGALARI LETTER AU
+<U00011392> /xf0/x91/x8e/x92 TULU-TIGALARI LETTER KA
+<U00011393> /xf0/x91/x8e/x93 TULU-TIGALARI LETTER KHA
+<U00011394> /xf0/x91/x8e/x94 TULU-TIGALARI LETTER GA
+<U00011395> /xf0/x91/x8e/x95 TULU-TIGALARI LETTER GHA
+<U00011396> /xf0/x91/x8e/x96 TULU-TIGALARI LETTER NGA
+<U00011397> /xf0/x91/x8e/x97 TULU-TIGALARI LETTER CA
+<U00011398> /xf0/x91/x8e/x98 TULU-TIGALARI LETTER CHA
+<U00011399> /xf0/x91/x8e/x99 TULU-TIGALARI LETTER JA
+<U0001139A> /xf0/x91/x8e/x9a TULU-TIGALARI LETTER JHA
+<U0001139B> /xf0/x91/x8e/x9b TULU-TIGALARI LETTER NYA
+<U0001139C> /xf0/x91/x8e/x9c TULU-TIGALARI LETTER TTA
+<U0001139D> /xf0/x91/x8e/x9d TULU-TIGALARI LETTER TTHA
+<U0001139E> /xf0/x91/x8e/x9e TULU-TIGALARI LETTER DDA
+<U0001139F> /xf0/x91/x8e/x9f TULU-TIGALARI LETTER DDHA
+<U000113A0> /xf0/x91/x8e/xa0 TULU-TIGALARI LETTER NNA
+<U000113A1> /xf0/x91/x8e/xa1 TULU-TIGALARI LETTER TA
+<U000113A2> /xf0/x91/x8e/xa2 TULU-TIGALARI LETTER THA
+<U000113A3> /xf0/x91/x8e/xa3 TULU-TIGALARI LETTER DA
+<U000113A4> /xf0/x91/x8e/xa4 TULU-TIGALARI LETTER DHA
+<U000113A5> /xf0/x91/x8e/xa5 TULU-TIGALARI LETTER NA
+<U000113A6> /xf0/x91/x8e/xa6 TULU-TIGALARI LETTER PA
+<U000113A7> /xf0/x91/x8e/xa7 TULU-TIGALARI LETTER PHA
+<U000113A8> /xf0/x91/x8e/xa8 TULU-TIGALARI LETTER BA
+<U000113A9> /xf0/x91/x8e/xa9 TULU-TIGALARI LETTER BHA
+<U000113AA> /xf0/x91/x8e/xaa TULU-TIGALARI LETTER MA
+<U000113AB> /xf0/x91/x8e/xab TULU-TIGALARI LETTER YA
+<U000113AC> /xf0/x91/x8e/xac TULU-TIGALARI LETTER RA
+<U000113AD> /xf0/x91/x8e/xad TULU-TIGALARI LETTER LA
+<U000113AE> /xf0/x91/x8e/xae TULU-TIGALARI LETTER VA
+<U000113AF> /xf0/x91/x8e/xaf TULU-TIGALARI LETTER SHA
+<U000113B0> /xf0/x91/x8e/xb0 TULU-TIGALARI LETTER SSA
+<U000113B1> /xf0/x91/x8e/xb1 TULU-TIGALARI LETTER SA
+<U000113B2> /xf0/x91/x8e/xb2 TULU-TIGALARI LETTER HA
+<U000113B3> /xf0/x91/x8e/xb3 TULU-TIGALARI LETTER LLA
+<U000113B4> /xf0/x91/x8e/xb4 TULU-TIGALARI LETTER RRA
+<U000113B5> /xf0/x91/x8e/xb5 TULU-TIGALARI LETTER LLLA
+<U000113B7> /xf0/x91/x8e/xb7 TULU-TIGALARI SIGN AVAGRAHA
+<U000113B8> /xf0/x91/x8e/xb8 TULU-TIGALARI VOWEL SIGN AA
+<U000113B9> /xf0/x91/x8e/xb9 TULU-TIGALARI VOWEL SIGN I
+<U000113BA> /xf0/x91/x8e/xba TULU-TIGALARI VOWEL SIGN II
+<U000113BB> /xf0/x91/x8e/xbb TULU-TIGALARI VOWEL SIGN U
+<U000113BC> /xf0/x91/x8e/xbc TULU-TIGALARI VOWEL SIGN UU
+<U000113BD> /xf0/x91/x8e/xbd TULU-TIGALARI VOWEL SIGN VOCALIC R
+<U000113BE> /xf0/x91/x8e/xbe TULU-TIGALARI VOWEL SIGN VOCALIC RR
+<U000113BF> /xf0/x91/x8e/xbf TULU-TIGALARI VOWEL SIGN VOCALIC L
+<U000113C0> /xf0/x91/x8f/x80 TULU-TIGALARI VOWEL SIGN VOCALIC LL
+<U000113C2> /xf0/x91/x8f/x82 TULU-TIGALARI VOWEL SIGN EE
+<U000113C5> /xf0/x91/x8f/x85 TULU-TIGALARI VOWEL SIGN AI
+<U000113C7> /xf0/x91/x8f/x87 TULU-TIGALARI VOWEL SIGN OO
+<U000113C8> /xf0/x91/x8f/x88 TULU-TIGALARI VOWEL SIGN AU
+<U000113C9> /xf0/x91/x8f/x89 TULU-TIGALARI AU LENGTH MARK
+<U000113CA> /xf0/x91/x8f/x8a TULU-TIGALARI SIGN CANDRA ANUNASIKA
+<U000113CC> /xf0/x91/x8f/x8c TULU-TIGALARI SIGN ANUSVARA
+<U000113CD> /xf0/x91/x8f/x8d TULU-TIGALARI SIGN VISARGA
+<U000113CE> /xf0/x91/x8f/x8e TULU-TIGALARI SIGN VIRAMA
+<U000113CF> /xf0/x91/x8f/x8f TULU-TIGALARI SIGN LOOPED VIRAMA
+<U000113D0> /xf0/x91/x8f/x90 TULU-TIGALARI CONJOINER
+<U000113D1> /xf0/x91/x8f/x91 TULU-TIGALARI REPHA
+<U000113D2> /xf0/x91/x8f/x92 TULU-TIGALARI GEMINATION MARK
+<U000113D3> /xf0/x91/x8f/x93 TULU-TIGALARI SIGN PLUTA
+<U000113D4> /xf0/x91/x8f/x94 TULU-TIGALARI DANDA
+<U000113D5> /xf0/x91/x8f/x95 TULU-TIGALARI DOUBLE DANDA
+<U000113D7> /xf0/x91/x8f/x97 TULU-TIGALARI SIGN OM PUSHPIKA
+<U000113D8> /xf0/x91/x8f/x98 TULU-TIGALARI SIGN SHRII PUSHPIKA
+<U000113E1> /xf0/x91/x8f/xa1 TULU-TIGALARI VEDIC TONE SVARITA
+<U000113E2> /xf0/x91/x8f/xa2 TULU-TIGALARI VEDIC TONE ANUDATTA
<U00011400> /xf0/x91/x90/x80 NEWA LETTER A
<U00011401> /xf0/x91/x90/x81 NEWA LETTER AA
<U00011402> /xf0/x91/x90/x82 NEWA LETTER I
@@ -32399,6 +32621,26 @@ CHARMAP
<U000116C7> /xf0/x91/x9b/x87 TAKRI DIGIT SEVEN
<U000116C8> /xf0/x91/x9b/x88 TAKRI DIGIT EIGHT
<U000116C9> /xf0/x91/x9b/x89 TAKRI DIGIT NINE
+<U000116D0> /xf0/x91/x9b/x90 MYANMAR PAO DIGIT ZERO
+<U000116D1> /xf0/x91/x9b/x91 MYANMAR PAO DIGIT ONE
+<U000116D2> /xf0/x91/x9b/x92 MYANMAR PAO DIGIT TWO
+<U000116D3> /xf0/x91/x9b/x93 MYANMAR PAO DIGIT THREE
+<U000116D4> /xf0/x91/x9b/x94 MYANMAR PAO DIGIT FOUR
+<U000116D5> /xf0/x91/x9b/x95 MYANMAR PAO DIGIT FIVE
+<U000116D6> /xf0/x91/x9b/x96 MYANMAR PAO DIGIT SIX
+<U000116D7> /xf0/x91/x9b/x97 MYANMAR PAO DIGIT SEVEN
+<U000116D8> /xf0/x91/x9b/x98 MYANMAR PAO DIGIT EIGHT
+<U000116D9> /xf0/x91/x9b/x99 MYANMAR PAO DIGIT NINE
+<U000116DA> /xf0/x91/x9b/x9a MYANMAR EASTERN PWO KAREN DIGIT ZERO
+<U000116DB> /xf0/x91/x9b/x9b MYANMAR EASTERN PWO KAREN DIGIT ONE
+<U000116DC> /xf0/x91/x9b/x9c MYANMAR EASTERN PWO KAREN DIGIT TWO
+<U000116DD> /xf0/x91/x9b/x9d MYANMAR EASTERN PWO KAREN DIGIT THREE
+<U000116DE> /xf0/x91/x9b/x9e MYANMAR EASTERN PWO KAREN DIGIT FOUR
+<U000116DF> /xf0/x91/x9b/x9f MYANMAR EASTERN PWO KAREN DIGIT FIVE
+<U000116E0> /xf0/x91/x9b/xa0 MYANMAR EASTERN PWO KAREN DIGIT SIX
+<U000116E1> /xf0/x91/x9b/xa1 MYANMAR EASTERN PWO KAREN DIGIT SEVEN
+<U000116E2> /xf0/x91/x9b/xa2 MYANMAR EASTERN PWO KAREN DIGIT EIGHT
+<U000116E3> /xf0/x91/x9b/xa3 MYANMAR EASTERN PWO KAREN DIGIT NINE
<U00011700> /xf0/x91/x9c/x80 AHOM LETTER KA
<U00011701> /xf0/x91/x9c/x81 AHOM LETTER KHA
<U00011702> /xf0/x91/x9c/x82 AHOM LETTER NGA
@@ -32983,6 +33225,50 @@ CHARMAP
<U00011B07> /xf0/x91/xac/x87 DEVANAGARI SIGN WESTERN NINE-LIKE BHALE
<U00011B08> /xf0/x91/xac/x88 DEVANAGARI SIGN REVERSED NINE-LIKE BHALE
<U00011B09> /xf0/x91/xac/x89 DEVANAGARI SIGN MINDU
+<U00011BC0> /xf0/x91/xaf/x80 SUNUWAR LETTER DEVI
+<U00011BC1> /xf0/x91/xaf/x81 SUNUWAR LETTER TASLA
+<U00011BC2> /xf0/x91/xaf/x82 SUNUWAR LETTER EKO
+<U00011BC3> /xf0/x91/xaf/x83 SUNUWAR LETTER IMAR
+<U00011BC4> /xf0/x91/xaf/x84 SUNUWAR LETTER REU
+<U00011BC5> /xf0/x91/xaf/x85 SUNUWAR LETTER UTTHI
+<U00011BC6> /xf0/x91/xaf/x86 SUNUWAR LETTER KIK
+<U00011BC7> /xf0/x91/xaf/x87 SUNUWAR LETTER MA
+<U00011BC8> /xf0/x91/xaf/x88 SUNUWAR LETTER APPHO
+<U00011BC9> /xf0/x91/xaf/x89 SUNUWAR LETTER PIP
+<U00011BCA> /xf0/x91/xaf/x8a SUNUWAR LETTER GIL
+<U00011BCB> /xf0/x91/xaf/x8b SUNUWAR LETTER HAMSO
+<U00011BCC> /xf0/x91/xaf/x8c SUNUWAR LETTER CARMI
+<U00011BCD> /xf0/x91/xaf/x8d SUNUWAR LETTER NAH
+<U00011BCE> /xf0/x91/xaf/x8e SUNUWAR LETTER BUR
+<U00011BCF> /xf0/x91/xaf/x8f SUNUWAR LETTER JYAH
+<U00011BD0> /xf0/x91/xaf/x90 SUNUWAR LETTER LOACHA
+<U00011BD1> /xf0/x91/xaf/x91 SUNUWAR LETTER OTTHI
+<U00011BD2> /xf0/x91/xaf/x92 SUNUWAR LETTER SHYELE
+<U00011BD3> /xf0/x91/xaf/x93 SUNUWAR LETTER VARCA
+<U00011BD4> /xf0/x91/xaf/x94 SUNUWAR LETTER YAT
+<U00011BD5> /xf0/x91/xaf/x95 SUNUWAR LETTER AVA
+<U00011BD6> /xf0/x91/xaf/x96 SUNUWAR LETTER AAL
+<U00011BD7> /xf0/x91/xaf/x97 SUNUWAR LETTER DONGA
+<U00011BD8> /xf0/x91/xaf/x98 SUNUWAR LETTER THARI
+<U00011BD9> /xf0/x91/xaf/x99 SUNUWAR LETTER PHAR
+<U00011BDA> /xf0/x91/xaf/x9a SUNUWAR LETTER NGAR
+<U00011BDB> /xf0/x91/xaf/x9b SUNUWAR LETTER KHA
+<U00011BDC> /xf0/x91/xaf/x9c SUNUWAR LETTER SHYER
+<U00011BDD> /xf0/x91/xaf/x9d SUNUWAR LETTER CHELAP
+<U00011BDE> /xf0/x91/xaf/x9e SUNUWAR LETTER TENTU
+<U00011BDF> /xf0/x91/xaf/x9f SUNUWAR LETTER THELE
+<U00011BE0> /xf0/x91/xaf/xa0 SUNUWAR LETTER KLOKO
+<U00011BE1> /xf0/x91/xaf/xa1 SUNUWAR SIGN PVO
+<U00011BF0> /xf0/x91/xaf/xb0 SUNUWAR DIGIT ZERO
+<U00011BF1> /xf0/x91/xaf/xb1 SUNUWAR DIGIT ONE
+<U00011BF2> /xf0/x91/xaf/xb2 SUNUWAR DIGIT TWO
+<U00011BF3> /xf0/x91/xaf/xb3 SUNUWAR DIGIT THREE
+<U00011BF4> /xf0/x91/xaf/xb4 SUNUWAR DIGIT FOUR
+<U00011BF5> /xf0/x91/xaf/xb5 SUNUWAR DIGIT FIVE
+<U00011BF6> /xf0/x91/xaf/xb6 SUNUWAR DIGIT SIX
+<U00011BF7> /xf0/x91/xaf/xb7 SUNUWAR DIGIT SEVEN
+<U00011BF8> /xf0/x91/xaf/xb8 SUNUWAR DIGIT EIGHT
+<U00011BF9> /xf0/x91/xaf/xb9 SUNUWAR DIGIT NINE
<U00011C00> /xf0/x91/xb0/x80 BHAIKSUKI LETTER A
<U00011C01> /xf0/x91/xb0/x81 BHAIKSUKI LETTER AA
<U00011C02> /xf0/x91/xb0/x82 BHAIKSUKI LETTER I
@@ -33397,6 +33683,7 @@ CHARMAP
<U00011F57> /xf0/x91/xbd/x97 KAWI DIGIT SEVEN
<U00011F58> /xf0/x91/xbd/x98 KAWI DIGIT EIGHT
<U00011F59> /xf0/x91/xbd/x99 KAWI DIGIT NINE
+<U00011F5A> /xf0/x91/xbd/x9a KAWI SIGN NUKTA
<U00011FB0> /xf0/x91/xbe/xb0 LISU LETTER YHA
<U00011FC0> /xf0/x91/xbf/x80 TAMIL FRACTION ONE THREE-HUNDRED-AND-TWENTIETH
<U00011FC1> /xf0/x91/xbf/x81 TAMIL FRACTION ONE ONE-HUNDRED-AND-SIXTIETH
@@ -35892,6 +36179,4001 @@ CHARMAP
<U00013453> /xf0/x93/x91/x93 EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP AND END
<U00013454> /xf0/x93/x91/x94 EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT BOTTOM AND END
<U00013455> /xf0/x93/x91/x95 EGYPTIAN HIEROGLYPH MODIFIER DAMAGED
+<U00013460> /xf0/x93/x91/xa0 EGYPTIAN HIEROGLYPH-13460
+<U00013461> /xf0/x93/x91/xa1 EGYPTIAN HIEROGLYPH-13461
+<U00013462> /xf0/x93/x91/xa2 EGYPTIAN HIEROGLYPH-13462
+<U00013463> /xf0/x93/x91/xa3 EGYPTIAN HIEROGLYPH-13463
+<U00013464> /xf0/x93/x91/xa4 EGYPTIAN HIEROGLYPH-13464
+<U00013465> /xf0/x93/x91/xa5 EGYPTIAN HIEROGLYPH-13465
+<U00013466> /xf0/x93/x91/xa6 EGYPTIAN HIEROGLYPH-13466
+<U00013467> /xf0/x93/x91/xa7 EGYPTIAN HIEROGLYPH-13467
+<U00013468> /xf0/x93/x91/xa8 EGYPTIAN HIEROGLYPH-13468
+<U00013469> /xf0/x93/x91/xa9 EGYPTIAN HIEROGLYPH-13469
+<U0001346A> /xf0/x93/x91/xaa EGYPTIAN HIEROGLYPH-1346A
+<U0001346B> /xf0/x93/x91/xab EGYPTIAN HIEROGLYPH-1346B
+<U0001346C> /xf0/x93/x91/xac EGYPTIAN HIEROGLYPH-1346C
+<U0001346D> /xf0/x93/x91/xad EGYPTIAN HIEROGLYPH-1346D
+<U0001346E> /xf0/x93/x91/xae EGYPTIAN HIEROGLYPH-1346E
+<U0001346F> /xf0/x93/x91/xaf EGYPTIAN HIEROGLYPH-1346F
+<U00013470> /xf0/x93/x91/xb0 EGYPTIAN HIEROGLYPH-13470
+<U00013471> /xf0/x93/x91/xb1 EGYPTIAN HIEROGLYPH-13471
+<U00013472> /xf0/x93/x91/xb2 EGYPTIAN HIEROGLYPH-13472
+<U00013473> /xf0/x93/x91/xb3 EGYPTIAN HIEROGLYPH-13473
+<U00013474> /xf0/x93/x91/xb4 EGYPTIAN HIEROGLYPH-13474
+<U00013475> /xf0/x93/x91/xb5 EGYPTIAN HIEROGLYPH-13475
+<U00013476> /xf0/x93/x91/xb6 EGYPTIAN HIEROGLYPH-13476
+<U00013477> /xf0/x93/x91/xb7 EGYPTIAN HIEROGLYPH-13477
+<U00013478> /xf0/x93/x91/xb8 EGYPTIAN HIEROGLYPH-13478
+<U00013479> /xf0/x93/x91/xb9 EGYPTIAN HIEROGLYPH-13479
+<U0001347A> /xf0/x93/x91/xba EGYPTIAN HIEROGLYPH-1347A
+<U0001347B> /xf0/x93/x91/xbb EGYPTIAN HIEROGLYPH-1347B
+<U0001347C> /xf0/x93/x91/xbc EGYPTIAN HIEROGLYPH-1347C
+<U0001347D> /xf0/x93/x91/xbd EGYPTIAN HIEROGLYPH-1347D
+<U0001347E> /xf0/x93/x91/xbe EGYPTIAN HIEROGLYPH-1347E
+<U0001347F> /xf0/x93/x91/xbf EGYPTIAN HIEROGLYPH-1347F
+<U00013480> /xf0/x93/x92/x80 EGYPTIAN HIEROGLYPH-13480
+<U00013481> /xf0/x93/x92/x81 EGYPTIAN HIEROGLYPH-13481
+<U00013482> /xf0/x93/x92/x82 EGYPTIAN HIEROGLYPH-13482
+<U00013483> /xf0/x93/x92/x83 EGYPTIAN HIEROGLYPH-13483
+<U00013484> /xf0/x93/x92/x84 EGYPTIAN HIEROGLYPH-13484
+<U00013485> /xf0/x93/x92/x85 EGYPTIAN HIEROGLYPH-13485
+<U00013486> /xf0/x93/x92/x86 EGYPTIAN HIEROGLYPH-13486
+<U00013487> /xf0/x93/x92/x87 EGYPTIAN HIEROGLYPH-13487
+<U00013488> /xf0/x93/x92/x88 EGYPTIAN HIEROGLYPH-13488
+<U00013489> /xf0/x93/x92/x89 EGYPTIAN HIEROGLYPH-13489
+<U0001348A> /xf0/x93/x92/x8a EGYPTIAN HIEROGLYPH-1348A
+<U0001348B> /xf0/x93/x92/x8b EGYPTIAN HIEROGLYPH-1348B
+<U0001348C> /xf0/x93/x92/x8c EGYPTIAN HIEROGLYPH-1348C
+<U0001348D> /xf0/x93/x92/x8d EGYPTIAN HIEROGLYPH-1348D
+<U0001348E> /xf0/x93/x92/x8e EGYPTIAN HIEROGLYPH-1348E
+<U0001348F> /xf0/x93/x92/x8f EGYPTIAN HIEROGLYPH-1348F
+<U00013490> /xf0/x93/x92/x90 EGYPTIAN HIEROGLYPH-13490
+<U00013491> /xf0/x93/x92/x91 EGYPTIAN HIEROGLYPH-13491
+<U00013492> /xf0/x93/x92/x92 EGYPTIAN HIEROGLYPH-13492
+<U00013493> /xf0/x93/x92/x93 EGYPTIAN HIEROGLYPH-13493
+<U00013494> /xf0/x93/x92/x94 EGYPTIAN HIEROGLYPH-13494
+<U00013495> /xf0/x93/x92/x95 EGYPTIAN HIEROGLYPH-13495
+<U00013496> /xf0/x93/x92/x96 EGYPTIAN HIEROGLYPH-13496
+<U00013497> /xf0/x93/x92/x97 EGYPTIAN HIEROGLYPH-13497
+<U00013498> /xf0/x93/x92/x98 EGYPTIAN HIEROGLYPH-13498
+<U00013499> /xf0/x93/x92/x99 EGYPTIAN HIEROGLYPH-13499
+<U0001349A> /xf0/x93/x92/x9a EGYPTIAN HIEROGLYPH-1349A
+<U0001349B> /xf0/x93/x92/x9b EGYPTIAN HIEROGLYPH-1349B
+<U0001349C> /xf0/x93/x92/x9c EGYPTIAN HIEROGLYPH-1349C
+<U0001349D> /xf0/x93/x92/x9d EGYPTIAN HIEROGLYPH-1349D
+<U0001349E> /xf0/x93/x92/x9e EGYPTIAN HIEROGLYPH-1349E
+<U0001349F> /xf0/x93/x92/x9f EGYPTIAN HIEROGLYPH-1349F
+<U000134A0> /xf0/x93/x92/xa0 EGYPTIAN HIEROGLYPH-134A0
+<U000134A1> /xf0/x93/x92/xa1 EGYPTIAN HIEROGLYPH-134A1
+<U000134A2> /xf0/x93/x92/xa2 EGYPTIAN HIEROGLYPH-134A2
+<U000134A3> /xf0/x93/x92/xa3 EGYPTIAN HIEROGLYPH-134A3
+<U000134A4> /xf0/x93/x92/xa4 EGYPTIAN HIEROGLYPH-134A4
+<U000134A5> /xf0/x93/x92/xa5 EGYPTIAN HIEROGLYPH-134A5
+<U000134A6> /xf0/x93/x92/xa6 EGYPTIAN HIEROGLYPH-134A6
+<U000134A7> /xf0/x93/x92/xa7 EGYPTIAN HIEROGLYPH-134A7
+<U000134A8> /xf0/x93/x92/xa8 EGYPTIAN HIEROGLYPH-134A8
+<U000134A9> /xf0/x93/x92/xa9 EGYPTIAN HIEROGLYPH-134A9
+<U000134AA> /xf0/x93/x92/xaa EGYPTIAN HIEROGLYPH-134AA
+<U000134AB> /xf0/x93/x92/xab EGYPTIAN HIEROGLYPH-134AB
+<U000134AC> /xf0/x93/x92/xac EGYPTIAN HIEROGLYPH-134AC
+<U000134AD> /xf0/x93/x92/xad EGYPTIAN HIEROGLYPH-134AD
+<U000134AE> /xf0/x93/x92/xae EGYPTIAN HIEROGLYPH-134AE
+<U000134AF> /xf0/x93/x92/xaf EGYPTIAN HIEROGLYPH-134AF
+<U000134B0> /xf0/x93/x92/xb0 EGYPTIAN HIEROGLYPH-134B0
+<U000134B1> /xf0/x93/x92/xb1 EGYPTIAN HIEROGLYPH-134B1
+<U000134B2> /xf0/x93/x92/xb2 EGYPTIAN HIEROGLYPH-134B2
+<U000134B3> /xf0/x93/x92/xb3 EGYPTIAN HIEROGLYPH-134B3
+<U000134B4> /xf0/x93/x92/xb4 EGYPTIAN HIEROGLYPH-134B4
+<U000134B5> /xf0/x93/x92/xb5 EGYPTIAN HIEROGLYPH-134B5
+<U000134B6> /xf0/x93/x92/xb6 EGYPTIAN HIEROGLYPH-134B6
+<U000134B7> /xf0/x93/x92/xb7 EGYPTIAN HIEROGLYPH-134B7
+<U000134B8> /xf0/x93/x92/xb8 EGYPTIAN HIEROGLYPH-134B8
+<U000134B9> /xf0/x93/x92/xb9 EGYPTIAN HIEROGLYPH-134B9
+<U000134BA> /xf0/x93/x92/xba EGYPTIAN HIEROGLYPH-134BA
+<U000134BB> /xf0/x93/x92/xbb EGYPTIAN HIEROGLYPH-134BB
+<U000134BC> /xf0/x93/x92/xbc EGYPTIAN HIEROGLYPH-134BC
+<U000134BD> /xf0/x93/x92/xbd EGYPTIAN HIEROGLYPH-134BD
+<U000134BE> /xf0/x93/x92/xbe EGYPTIAN HIEROGLYPH-134BE
+<U000134BF> /xf0/x93/x92/xbf EGYPTIAN HIEROGLYPH-134BF
+<U000134C0> /xf0/x93/x93/x80 EGYPTIAN HIEROGLYPH-134C0
+<U000134C1> /xf0/x93/x93/x81 EGYPTIAN HIEROGLYPH-134C1
+<U000134C2> /xf0/x93/x93/x82 EGYPTIAN HIEROGLYPH-134C2
+<U000134C3> /xf0/x93/x93/x83 EGYPTIAN HIEROGLYPH-134C3
+<U000134C4> /xf0/x93/x93/x84 EGYPTIAN HIEROGLYPH-134C4
+<U000134C5> /xf0/x93/x93/x85 EGYPTIAN HIEROGLYPH-134C5
+<U000134C6> /xf0/x93/x93/x86 EGYPTIAN HIEROGLYPH-134C6
+<U000134C7> /xf0/x93/x93/x87 EGYPTIAN HIEROGLYPH-134C7
+<U000134C8> /xf0/x93/x93/x88 EGYPTIAN HIEROGLYPH-134C8
+<U000134C9> /xf0/x93/x93/x89 EGYPTIAN HIEROGLYPH-134C9
+<U000134CA> /xf0/x93/x93/x8a EGYPTIAN HIEROGLYPH-134CA
+<U000134CB> /xf0/x93/x93/x8b EGYPTIAN HIEROGLYPH-134CB
+<U000134CC> /xf0/x93/x93/x8c EGYPTIAN HIEROGLYPH-134CC
+<U000134CD> /xf0/x93/x93/x8d EGYPTIAN HIEROGLYPH-134CD
+<U000134CE> /xf0/x93/x93/x8e EGYPTIAN HIEROGLYPH-134CE
+<U000134CF> /xf0/x93/x93/x8f EGYPTIAN HIEROGLYPH-134CF
+<U000134D0> /xf0/x93/x93/x90 EGYPTIAN HIEROGLYPH-134D0
+<U000134D1> /xf0/x93/x93/x91 EGYPTIAN HIEROGLYPH-134D1
+<U000134D2> /xf0/x93/x93/x92 EGYPTIAN HIEROGLYPH-134D2
+<U000134D3> /xf0/x93/x93/x93 EGYPTIAN HIEROGLYPH-134D3
+<U000134D4> /xf0/x93/x93/x94 EGYPTIAN HIEROGLYPH-134D4
+<U000134D5> /xf0/x93/x93/x95 EGYPTIAN HIEROGLYPH-134D5
+<U000134D6> /xf0/x93/x93/x96 EGYPTIAN HIEROGLYPH-134D6
+<U000134D7> /xf0/x93/x93/x97 EGYPTIAN HIEROGLYPH-134D7
+<U000134D8> /xf0/x93/x93/x98 EGYPTIAN HIEROGLYPH-134D8
+<U000134D9> /xf0/x93/x93/x99 EGYPTIAN HIEROGLYPH-134D9
+<U000134DA> /xf0/x93/x93/x9a EGYPTIAN HIEROGLYPH-134DA
+<U000134DB> /xf0/x93/x93/x9b EGYPTIAN HIEROGLYPH-134DB
+<U000134DC> /xf0/x93/x93/x9c EGYPTIAN HIEROGLYPH-134DC
+<U000134DD> /xf0/x93/x93/x9d EGYPTIAN HIEROGLYPH-134DD
+<U000134DE> /xf0/x93/x93/x9e EGYPTIAN HIEROGLYPH-134DE
+<U000134DF> /xf0/x93/x93/x9f EGYPTIAN HIEROGLYPH-134DF
+<U000134E0> /xf0/x93/x93/xa0 EGYPTIAN HIEROGLYPH-134E0
+<U000134E1> /xf0/x93/x93/xa1 EGYPTIAN HIEROGLYPH-134E1
+<U000134E2> /xf0/x93/x93/xa2 EGYPTIAN HIEROGLYPH-134E2
+<U000134E3> /xf0/x93/x93/xa3 EGYPTIAN HIEROGLYPH-134E3
+<U000134E4> /xf0/x93/x93/xa4 EGYPTIAN HIEROGLYPH-134E4
+<U000134E5> /xf0/x93/x93/xa5 EGYPTIAN HIEROGLYPH-134E5
+<U000134E6> /xf0/x93/x93/xa6 EGYPTIAN HIEROGLYPH-134E6
+<U000134E7> /xf0/x93/x93/xa7 EGYPTIAN HIEROGLYPH-134E7
+<U000134E8> /xf0/x93/x93/xa8 EGYPTIAN HIEROGLYPH-134E8
+<U000134E9> /xf0/x93/x93/xa9 EGYPTIAN HIEROGLYPH-134E9
+<U000134EA> /xf0/x93/x93/xaa EGYPTIAN HIEROGLYPH-134EA
+<U000134EB> /xf0/x93/x93/xab EGYPTIAN HIEROGLYPH-134EB
+<U000134EC> /xf0/x93/x93/xac EGYPTIAN HIEROGLYPH-134EC
+<U000134ED> /xf0/x93/x93/xad EGYPTIAN HIEROGLYPH-134ED
+<U000134EE> /xf0/x93/x93/xae EGYPTIAN HIEROGLYPH-134EE
+<U000134EF> /xf0/x93/x93/xaf EGYPTIAN HIEROGLYPH-134EF
+<U000134F0> /xf0/x93/x93/xb0 EGYPTIAN HIEROGLYPH-134F0
+<U000134F1> /xf0/x93/x93/xb1 EGYPTIAN HIEROGLYPH-134F1
+<U000134F2> /xf0/x93/x93/xb2 EGYPTIAN HIEROGLYPH-134F2
+<U000134F3> /xf0/x93/x93/xb3 EGYPTIAN HIEROGLYPH-134F3
+<U000134F4> /xf0/x93/x93/xb4 EGYPTIAN HIEROGLYPH-134F4
+<U000134F5> /xf0/x93/x93/xb5 EGYPTIAN HIEROGLYPH-134F5
+<U000134F6> /xf0/x93/x93/xb6 EGYPTIAN HIEROGLYPH-134F6
+<U000134F7> /xf0/x93/x93/xb7 EGYPTIAN HIEROGLYPH-134F7
+<U000134F8> /xf0/x93/x93/xb8 EGYPTIAN HIEROGLYPH-134F8
+<U000134F9> /xf0/x93/x93/xb9 EGYPTIAN HIEROGLYPH-134F9
+<U000134FA> /xf0/x93/x93/xba EGYPTIAN HIEROGLYPH-134FA
+<U000134FB> /xf0/x93/x93/xbb EGYPTIAN HIEROGLYPH-134FB
+<U000134FC> /xf0/x93/x93/xbc EGYPTIAN HIEROGLYPH-134FC
+<U000134FD> /xf0/x93/x93/xbd EGYPTIAN HIEROGLYPH-134FD
+<U000134FE> /xf0/x93/x93/xbe EGYPTIAN HIEROGLYPH-134FE
+<U000134FF> /xf0/x93/x93/xbf EGYPTIAN HIEROGLYPH-134FF
+<U00013500> /xf0/x93/x94/x80 EGYPTIAN HIEROGLYPH-13500
+<U00013501> /xf0/x93/x94/x81 EGYPTIAN HIEROGLYPH-13501
+<U00013502> /xf0/x93/x94/x82 EGYPTIAN HIEROGLYPH-13502
+<U00013503> /xf0/x93/x94/x83 EGYPTIAN HIEROGLYPH-13503
+<U00013504> /xf0/x93/x94/x84 EGYPTIAN HIEROGLYPH-13504
+<U00013505> /xf0/x93/x94/x85 EGYPTIAN HIEROGLYPH-13505
+<U00013506> /xf0/x93/x94/x86 EGYPTIAN HIEROGLYPH-13506
+<U00013507> /xf0/x93/x94/x87 EGYPTIAN HIEROGLYPH-13507
+<U00013508> /xf0/x93/x94/x88 EGYPTIAN HIEROGLYPH-13508
+<U00013509> /xf0/x93/x94/x89 EGYPTIAN HIEROGLYPH-13509
+<U0001350A> /xf0/x93/x94/x8a EGYPTIAN HIEROGLYPH-1350A
+<U0001350B> /xf0/x93/x94/x8b EGYPTIAN HIEROGLYPH-1350B
+<U0001350C> /xf0/x93/x94/x8c EGYPTIAN HIEROGLYPH-1350C
+<U0001350D> /xf0/x93/x94/x8d EGYPTIAN HIEROGLYPH-1350D
+<U0001350E> /xf0/x93/x94/x8e EGYPTIAN HIEROGLYPH-1350E
+<U0001350F> /xf0/x93/x94/x8f EGYPTIAN HIEROGLYPH-1350F
+<U00013510> /xf0/x93/x94/x90 EGYPTIAN HIEROGLYPH-13510
+<U00013511> /xf0/x93/x94/x91 EGYPTIAN HIEROGLYPH-13511
+<U00013512> /xf0/x93/x94/x92 EGYPTIAN HIEROGLYPH-13512
+<U00013513> /xf0/x93/x94/x93 EGYPTIAN HIEROGLYPH-13513
+<U00013514> /xf0/x93/x94/x94 EGYPTIAN HIEROGLYPH-13514
+<U00013515> /xf0/x93/x94/x95 EGYPTIAN HIEROGLYPH-13515
+<U00013516> /xf0/x93/x94/x96 EGYPTIAN HIEROGLYPH-13516
+<U00013517> /xf0/x93/x94/x97 EGYPTIAN HIEROGLYPH-13517
+<U00013518> /xf0/x93/x94/x98 EGYPTIAN HIEROGLYPH-13518
+<U00013519> /xf0/x93/x94/x99 EGYPTIAN HIEROGLYPH-13519
+<U0001351A> /xf0/x93/x94/x9a EGYPTIAN HIEROGLYPH-1351A
+<U0001351B> /xf0/x93/x94/x9b EGYPTIAN HIEROGLYPH-1351B
+<U0001351C> /xf0/x93/x94/x9c EGYPTIAN HIEROGLYPH-1351C
+<U0001351D> /xf0/x93/x94/x9d EGYPTIAN HIEROGLYPH-1351D
+<U0001351E> /xf0/x93/x94/x9e EGYPTIAN HIEROGLYPH-1351E
+<U0001351F> /xf0/x93/x94/x9f EGYPTIAN HIEROGLYPH-1351F
+<U00013520> /xf0/x93/x94/xa0 EGYPTIAN HIEROGLYPH-13520
+<U00013521> /xf0/x93/x94/xa1 EGYPTIAN HIEROGLYPH-13521
+<U00013522> /xf0/x93/x94/xa2 EGYPTIAN HIEROGLYPH-13522
+<U00013523> /xf0/x93/x94/xa3 EGYPTIAN HIEROGLYPH-13523
+<U00013524> /xf0/x93/x94/xa4 EGYPTIAN HIEROGLYPH-13524
+<U00013525> /xf0/x93/x94/xa5 EGYPTIAN HIEROGLYPH-13525
+<U00013526> /xf0/x93/x94/xa6 EGYPTIAN HIEROGLYPH-13526
+<U00013527> /xf0/x93/x94/xa7 EGYPTIAN HIEROGLYPH-13527
+<U00013528> /xf0/x93/x94/xa8 EGYPTIAN HIEROGLYPH-13528
+<U00013529> /xf0/x93/x94/xa9 EGYPTIAN HIEROGLYPH-13529
+<U0001352A> /xf0/x93/x94/xaa EGYPTIAN HIEROGLYPH-1352A
+<U0001352B> /xf0/x93/x94/xab EGYPTIAN HIEROGLYPH-1352B
+<U0001352C> /xf0/x93/x94/xac EGYPTIAN HIEROGLYPH-1352C
+<U0001352D> /xf0/x93/x94/xad EGYPTIAN HIEROGLYPH-1352D
+<U0001352E> /xf0/x93/x94/xae EGYPTIAN HIEROGLYPH-1352E
+<U0001352F> /xf0/x93/x94/xaf EGYPTIAN HIEROGLYPH-1352F
+<U00013530> /xf0/x93/x94/xb0 EGYPTIAN HIEROGLYPH-13530
+<U00013531> /xf0/x93/x94/xb1 EGYPTIAN HIEROGLYPH-13531
+<U00013532> /xf0/x93/x94/xb2 EGYPTIAN HIEROGLYPH-13532
+<U00013533> /xf0/x93/x94/xb3 EGYPTIAN HIEROGLYPH-13533
+<U00013534> /xf0/x93/x94/xb4 EGYPTIAN HIEROGLYPH-13534
+<U00013535> /xf0/x93/x94/xb5 EGYPTIAN HIEROGLYPH-13535
+<U00013536> /xf0/x93/x94/xb6 EGYPTIAN HIEROGLYPH-13536
+<U00013537> /xf0/x93/x94/xb7 EGYPTIAN HIEROGLYPH-13537
+<U00013538> /xf0/x93/x94/xb8 EGYPTIAN HIEROGLYPH-13538
+<U00013539> /xf0/x93/x94/xb9 EGYPTIAN HIEROGLYPH-13539
+<U0001353A> /xf0/x93/x94/xba EGYPTIAN HIEROGLYPH-1353A
+<U0001353B> /xf0/x93/x94/xbb EGYPTIAN HIEROGLYPH-1353B
+<U0001353C> /xf0/x93/x94/xbc EGYPTIAN HIEROGLYPH-1353C
+<U0001353D> /xf0/x93/x94/xbd EGYPTIAN HIEROGLYPH-1353D
+<U0001353E> /xf0/x93/x94/xbe EGYPTIAN HIEROGLYPH-1353E
+<U0001353F> /xf0/x93/x94/xbf EGYPTIAN HIEROGLYPH-1353F
+<U00013540> /xf0/x93/x95/x80 EGYPTIAN HIEROGLYPH-13540
+<U00013541> /xf0/x93/x95/x81 EGYPTIAN HIEROGLYPH-13541
+<U00013542> /xf0/x93/x95/x82 EGYPTIAN HIEROGLYPH-13542
+<U00013543> /xf0/x93/x95/x83 EGYPTIAN HIEROGLYPH-13543
+<U00013544> /xf0/x93/x95/x84 EGYPTIAN HIEROGLYPH-13544
+<U00013545> /xf0/x93/x95/x85 EGYPTIAN HIEROGLYPH-13545
+<U00013546> /xf0/x93/x95/x86 EGYPTIAN HIEROGLYPH-13546
+<U00013547> /xf0/x93/x95/x87 EGYPTIAN HIEROGLYPH-13547
+<U00013548> /xf0/x93/x95/x88 EGYPTIAN HIEROGLYPH-13548
+<U00013549> /xf0/x93/x95/x89 EGYPTIAN HIEROGLYPH-13549
+<U0001354A> /xf0/x93/x95/x8a EGYPTIAN HIEROGLYPH-1354A
+<U0001354B> /xf0/x93/x95/x8b EGYPTIAN HIEROGLYPH-1354B
+<U0001354C> /xf0/x93/x95/x8c EGYPTIAN HIEROGLYPH-1354C
+<U0001354D> /xf0/x93/x95/x8d EGYPTIAN HIEROGLYPH-1354D
+<U0001354E> /xf0/x93/x95/x8e EGYPTIAN HIEROGLYPH-1354E
+<U0001354F> /xf0/x93/x95/x8f EGYPTIAN HIEROGLYPH-1354F
+<U00013550> /xf0/x93/x95/x90 EGYPTIAN HIEROGLYPH-13550
+<U00013551> /xf0/x93/x95/x91 EGYPTIAN HIEROGLYPH-13551
+<U00013552> /xf0/x93/x95/x92 EGYPTIAN HIEROGLYPH-13552
+<U00013553> /xf0/x93/x95/x93 EGYPTIAN HIEROGLYPH-13553
+<U00013554> /xf0/x93/x95/x94 EGYPTIAN HIEROGLYPH-13554
+<U00013555> /xf0/x93/x95/x95 EGYPTIAN HIEROGLYPH-13555
+<U00013556> /xf0/x93/x95/x96 EGYPTIAN HIEROGLYPH-13556
+<U00013557> /xf0/x93/x95/x97 EGYPTIAN HIEROGLYPH-13557
+<U00013558> /xf0/x93/x95/x98 EGYPTIAN HIEROGLYPH-13558
+<U00013559> /xf0/x93/x95/x99 EGYPTIAN HIEROGLYPH-13559
+<U0001355A> /xf0/x93/x95/x9a EGYPTIAN HIEROGLYPH-1355A
+<U0001355B> /xf0/x93/x95/x9b EGYPTIAN HIEROGLYPH-1355B
+<U0001355C> /xf0/x93/x95/x9c EGYPTIAN HIEROGLYPH-1355C
+<U0001355D> /xf0/x93/x95/x9d EGYPTIAN HIEROGLYPH-1355D
+<U0001355E> /xf0/x93/x95/x9e EGYPTIAN HIEROGLYPH-1355E
+<U0001355F> /xf0/x93/x95/x9f EGYPTIAN HIEROGLYPH-1355F
+<U00013560> /xf0/x93/x95/xa0 EGYPTIAN HIEROGLYPH-13560
+<U00013561> /xf0/x93/x95/xa1 EGYPTIAN HIEROGLYPH-13561
+<U00013562> /xf0/x93/x95/xa2 EGYPTIAN HIEROGLYPH-13562
+<U00013563> /xf0/x93/x95/xa3 EGYPTIAN HIEROGLYPH-13563
+<U00013564> /xf0/x93/x95/xa4 EGYPTIAN HIEROGLYPH-13564
+<U00013565> /xf0/x93/x95/xa5 EGYPTIAN HIEROGLYPH-13565
+<U00013566> /xf0/x93/x95/xa6 EGYPTIAN HIEROGLYPH-13566
+<U00013567> /xf0/x93/x95/xa7 EGYPTIAN HIEROGLYPH-13567
+<U00013568> /xf0/x93/x95/xa8 EGYPTIAN HIEROGLYPH-13568
+<U00013569> /xf0/x93/x95/xa9 EGYPTIAN HIEROGLYPH-13569
+<U0001356A> /xf0/x93/x95/xaa EGYPTIAN HIEROGLYPH-1356A
+<U0001356B> /xf0/x93/x95/xab EGYPTIAN HIEROGLYPH-1356B
+<U0001356C> /xf0/x93/x95/xac EGYPTIAN HIEROGLYPH-1356C
+<U0001356D> /xf0/x93/x95/xad EGYPTIAN HIEROGLYPH-1356D
+<U0001356E> /xf0/x93/x95/xae EGYPTIAN HIEROGLYPH-1356E
+<U0001356F> /xf0/x93/x95/xaf EGYPTIAN HIEROGLYPH-1356F
+<U00013570> /xf0/x93/x95/xb0 EGYPTIAN HIEROGLYPH-13570
+<U00013571> /xf0/x93/x95/xb1 EGYPTIAN HIEROGLYPH-13571
+<U00013572> /xf0/x93/x95/xb2 EGYPTIAN HIEROGLYPH-13572
+<U00013573> /xf0/x93/x95/xb3 EGYPTIAN HIEROGLYPH-13573
+<U00013574> /xf0/x93/x95/xb4 EGYPTIAN HIEROGLYPH-13574
+<U00013575> /xf0/x93/x95/xb5 EGYPTIAN HIEROGLYPH-13575
+<U00013576> /xf0/x93/x95/xb6 EGYPTIAN HIEROGLYPH-13576
+<U00013577> /xf0/x93/x95/xb7 EGYPTIAN HIEROGLYPH-13577
+<U00013578> /xf0/x93/x95/xb8 EGYPTIAN HIEROGLYPH-13578
+<U00013579> /xf0/x93/x95/xb9 EGYPTIAN HIEROGLYPH-13579
+<U0001357A> /xf0/x93/x95/xba EGYPTIAN HIEROGLYPH-1357A
+<U0001357B> /xf0/x93/x95/xbb EGYPTIAN HIEROGLYPH-1357B
+<U0001357C> /xf0/x93/x95/xbc EGYPTIAN HIEROGLYPH-1357C
+<U0001357D> /xf0/x93/x95/xbd EGYPTIAN HIEROGLYPH-1357D
+<U0001357E> /xf0/x93/x95/xbe EGYPTIAN HIEROGLYPH-1357E
+<U0001357F> /xf0/x93/x95/xbf EGYPTIAN HIEROGLYPH-1357F
+<U00013580> /xf0/x93/x96/x80 EGYPTIAN HIEROGLYPH-13580
+<U00013581> /xf0/x93/x96/x81 EGYPTIAN HIEROGLYPH-13581
+<U00013582> /xf0/x93/x96/x82 EGYPTIAN HIEROGLYPH-13582
+<U00013583> /xf0/x93/x96/x83 EGYPTIAN HIEROGLYPH-13583
+<U00013584> /xf0/x93/x96/x84 EGYPTIAN HIEROGLYPH-13584
+<U00013585> /xf0/x93/x96/x85 EGYPTIAN HIEROGLYPH-13585
+<U00013586> /xf0/x93/x96/x86 EGYPTIAN HIEROGLYPH-13586
+<U00013587> /xf0/x93/x96/x87 EGYPTIAN HIEROGLYPH-13587
+<U00013588> /xf0/x93/x96/x88 EGYPTIAN HIEROGLYPH-13588
+<U00013589> /xf0/x93/x96/x89 EGYPTIAN HIEROGLYPH-13589
+<U0001358A> /xf0/x93/x96/x8a EGYPTIAN HIEROGLYPH-1358A
+<U0001358B> /xf0/x93/x96/x8b EGYPTIAN HIEROGLYPH-1358B
+<U0001358C> /xf0/x93/x96/x8c EGYPTIAN HIEROGLYPH-1358C
+<U0001358D> /xf0/x93/x96/x8d EGYPTIAN HIEROGLYPH-1358D
+<U0001358E> /xf0/x93/x96/x8e EGYPTIAN HIEROGLYPH-1358E
+<U0001358F> /xf0/x93/x96/x8f EGYPTIAN HIEROGLYPH-1358F
+<U00013590> /xf0/x93/x96/x90 EGYPTIAN HIEROGLYPH-13590
+<U00013591> /xf0/x93/x96/x91 EGYPTIAN HIEROGLYPH-13591
+<U00013592> /xf0/x93/x96/x92 EGYPTIAN HIEROGLYPH-13592
+<U00013593> /xf0/x93/x96/x93 EGYPTIAN HIEROGLYPH-13593
+<U00013594> /xf0/x93/x96/x94 EGYPTIAN HIEROGLYPH-13594
+<U00013595> /xf0/x93/x96/x95 EGYPTIAN HIEROGLYPH-13595
+<U00013596> /xf0/x93/x96/x96 EGYPTIAN HIEROGLYPH-13596
+<U00013597> /xf0/x93/x96/x97 EGYPTIAN HIEROGLYPH-13597
+<U00013598> /xf0/x93/x96/x98 EGYPTIAN HIEROGLYPH-13598
+<U00013599> /xf0/x93/x96/x99 EGYPTIAN HIEROGLYPH-13599
+<U0001359A> /xf0/x93/x96/x9a EGYPTIAN HIEROGLYPH-1359A
+<U0001359B> /xf0/x93/x96/x9b EGYPTIAN HIEROGLYPH-1359B
+<U0001359C> /xf0/x93/x96/x9c EGYPTIAN HIEROGLYPH-1359C
+<U0001359D> /xf0/x93/x96/x9d EGYPTIAN HIEROGLYPH-1359D
+<U0001359E> /xf0/x93/x96/x9e EGYPTIAN HIEROGLYPH-1359E
+<U0001359F> /xf0/x93/x96/x9f EGYPTIAN HIEROGLYPH-1359F
+<U000135A0> /xf0/x93/x96/xa0 EGYPTIAN HIEROGLYPH-135A0
+<U000135A1> /xf0/x93/x96/xa1 EGYPTIAN HIEROGLYPH-135A1
+<U000135A2> /xf0/x93/x96/xa2 EGYPTIAN HIEROGLYPH-135A2
+<U000135A3> /xf0/x93/x96/xa3 EGYPTIAN HIEROGLYPH-135A3
+<U000135A4> /xf0/x93/x96/xa4 EGYPTIAN HIEROGLYPH-135A4
+<U000135A5> /xf0/x93/x96/xa5 EGYPTIAN HIEROGLYPH-135A5
+<U000135A6> /xf0/x93/x96/xa6 EGYPTIAN HIEROGLYPH-135A6
+<U000135A7> /xf0/x93/x96/xa7 EGYPTIAN HIEROGLYPH-135A7
+<U000135A8> /xf0/x93/x96/xa8 EGYPTIAN HIEROGLYPH-135A8
+<U000135A9> /xf0/x93/x96/xa9 EGYPTIAN HIEROGLYPH-135A9
+<U000135AA> /xf0/x93/x96/xaa EGYPTIAN HIEROGLYPH-135AA
+<U000135AB> /xf0/x93/x96/xab EGYPTIAN HIEROGLYPH-135AB
+<U000135AC> /xf0/x93/x96/xac EGYPTIAN HIEROGLYPH-135AC
+<U000135AD> /xf0/x93/x96/xad EGYPTIAN HIEROGLYPH-135AD
+<U000135AE> /xf0/x93/x96/xae EGYPTIAN HIEROGLYPH-135AE
+<U000135AF> /xf0/x93/x96/xaf EGYPTIAN HIEROGLYPH-135AF
+<U000135B0> /xf0/x93/x96/xb0 EGYPTIAN HIEROGLYPH-135B0
+<U000135B1> /xf0/x93/x96/xb1 EGYPTIAN HIEROGLYPH-135B1
+<U000135B2> /xf0/x93/x96/xb2 EGYPTIAN HIEROGLYPH-135B2
+<U000135B3> /xf0/x93/x96/xb3 EGYPTIAN HIEROGLYPH-135B3
+<U000135B4> /xf0/x93/x96/xb4 EGYPTIAN HIEROGLYPH-135B4
+<U000135B5> /xf0/x93/x96/xb5 EGYPTIAN HIEROGLYPH-135B5
+<U000135B6> /xf0/x93/x96/xb6 EGYPTIAN HIEROGLYPH-135B6
+<U000135B7> /xf0/x93/x96/xb7 EGYPTIAN HIEROGLYPH-135B7
+<U000135B8> /xf0/x93/x96/xb8 EGYPTIAN HIEROGLYPH-135B8
+<U000135B9> /xf0/x93/x96/xb9 EGYPTIAN HIEROGLYPH-135B9
+<U000135BA> /xf0/x93/x96/xba EGYPTIAN HIEROGLYPH-135BA
+<U000135BB> /xf0/x93/x96/xbb EGYPTIAN HIEROGLYPH-135BB
+<U000135BC> /xf0/x93/x96/xbc EGYPTIAN HIEROGLYPH-135BC
+<U000135BD> /xf0/x93/x96/xbd EGYPTIAN HIEROGLYPH-135BD
+<U000135BE> /xf0/x93/x96/xbe EGYPTIAN HIEROGLYPH-135BE
+<U000135BF> /xf0/x93/x96/xbf EGYPTIAN HIEROGLYPH-135BF
+<U000135C0> /xf0/x93/x97/x80 EGYPTIAN HIEROGLYPH-135C0
+<U000135C1> /xf0/x93/x97/x81 EGYPTIAN HIEROGLYPH-135C1
+<U000135C2> /xf0/x93/x97/x82 EGYPTIAN HIEROGLYPH-135C2
+<U000135C3> /xf0/x93/x97/x83 EGYPTIAN HIEROGLYPH-135C3
+<U000135C4> /xf0/x93/x97/x84 EGYPTIAN HIEROGLYPH-135C4
+<U000135C5> /xf0/x93/x97/x85 EGYPTIAN HIEROGLYPH-135C5
+<U000135C6> /xf0/x93/x97/x86 EGYPTIAN HIEROGLYPH-135C6
+<U000135C7> /xf0/x93/x97/x87 EGYPTIAN HIEROGLYPH-135C7
+<U000135C8> /xf0/x93/x97/x88 EGYPTIAN HIEROGLYPH-135C8
+<U000135C9> /xf0/x93/x97/x89 EGYPTIAN HIEROGLYPH-135C9
+<U000135CA> /xf0/x93/x97/x8a EGYPTIAN HIEROGLYPH-135CA
+<U000135CB> /xf0/x93/x97/x8b EGYPTIAN HIEROGLYPH-135CB
+<U000135CC> /xf0/x93/x97/x8c EGYPTIAN HIEROGLYPH-135CC
+<U000135CD> /xf0/x93/x97/x8d EGYPTIAN HIEROGLYPH-135CD
+<U000135CE> /xf0/x93/x97/x8e EGYPTIAN HIEROGLYPH-135CE
+<U000135CF> /xf0/x93/x97/x8f EGYPTIAN HIEROGLYPH-135CF
+<U000135D0> /xf0/x93/x97/x90 EGYPTIAN HIEROGLYPH-135D0
+<U000135D1> /xf0/x93/x97/x91 EGYPTIAN HIEROGLYPH-135D1
+<U000135D2> /xf0/x93/x97/x92 EGYPTIAN HIEROGLYPH-135D2
+<U000135D3> /xf0/x93/x97/x93 EGYPTIAN HIEROGLYPH-135D3
+<U000135D4> /xf0/x93/x97/x94 EGYPTIAN HIEROGLYPH-135D4
+<U000135D5> /xf0/x93/x97/x95 EGYPTIAN HIEROGLYPH-135D5
+<U000135D6> /xf0/x93/x97/x96 EGYPTIAN HIEROGLYPH-135D6
+<U000135D7> /xf0/x93/x97/x97 EGYPTIAN HIEROGLYPH-135D7
+<U000135D8> /xf0/x93/x97/x98 EGYPTIAN HIEROGLYPH-135D8
+<U000135D9> /xf0/x93/x97/x99 EGYPTIAN HIEROGLYPH-135D9
+<U000135DA> /xf0/x93/x97/x9a EGYPTIAN HIEROGLYPH-135DA
+<U000135DB> /xf0/x93/x97/x9b EGYPTIAN HIEROGLYPH-135DB
+<U000135DC> /xf0/x93/x97/x9c EGYPTIAN HIEROGLYPH-135DC
+<U000135DD> /xf0/x93/x97/x9d EGYPTIAN HIEROGLYPH-135DD
+<U000135DE> /xf0/x93/x97/x9e EGYPTIAN HIEROGLYPH-135DE
+<U000135DF> /xf0/x93/x97/x9f EGYPTIAN HIEROGLYPH-135DF
+<U000135E0> /xf0/x93/x97/xa0 EGYPTIAN HIEROGLYPH-135E0
+<U000135E1> /xf0/x93/x97/xa1 EGYPTIAN HIEROGLYPH-135E1
+<U000135E2> /xf0/x93/x97/xa2 EGYPTIAN HIEROGLYPH-135E2
+<U000135E3> /xf0/x93/x97/xa3 EGYPTIAN HIEROGLYPH-135E3
+<U000135E4> /xf0/x93/x97/xa4 EGYPTIAN HIEROGLYPH-135E4
+<U000135E5> /xf0/x93/x97/xa5 EGYPTIAN HIEROGLYPH-135E5
+<U000135E6> /xf0/x93/x97/xa6 EGYPTIAN HIEROGLYPH-135E6
+<U000135E7> /xf0/x93/x97/xa7 EGYPTIAN HIEROGLYPH-135E7
+<U000135E8> /xf0/x93/x97/xa8 EGYPTIAN HIEROGLYPH-135E8
+<U000135E9> /xf0/x93/x97/xa9 EGYPTIAN HIEROGLYPH-135E9
+<U000135EA> /xf0/x93/x97/xaa EGYPTIAN HIEROGLYPH-135EA
+<U000135EB> /xf0/x93/x97/xab EGYPTIAN HIEROGLYPH-135EB
+<U000135EC> /xf0/x93/x97/xac EGYPTIAN HIEROGLYPH-135EC
+<U000135ED> /xf0/x93/x97/xad EGYPTIAN HIEROGLYPH-135ED
+<U000135EE> /xf0/x93/x97/xae EGYPTIAN HIEROGLYPH-135EE
+<U000135EF> /xf0/x93/x97/xaf EGYPTIAN HIEROGLYPH-135EF
+<U000135F0> /xf0/x93/x97/xb0 EGYPTIAN HIEROGLYPH-135F0
+<U000135F1> /xf0/x93/x97/xb1 EGYPTIAN HIEROGLYPH-135F1
+<U000135F2> /xf0/x93/x97/xb2 EGYPTIAN HIEROGLYPH-135F2
+<U000135F3> /xf0/x93/x97/xb3 EGYPTIAN HIEROGLYPH-135F3
+<U000135F4> /xf0/x93/x97/xb4 EGYPTIAN HIEROGLYPH-135F4
+<U000135F5> /xf0/x93/x97/xb5 EGYPTIAN HIEROGLYPH-135F5
+<U000135F6> /xf0/x93/x97/xb6 EGYPTIAN HIEROGLYPH-135F6
+<U000135F7> /xf0/x93/x97/xb7 EGYPTIAN HIEROGLYPH-135F7
+<U000135F8> /xf0/x93/x97/xb8 EGYPTIAN HIEROGLYPH-135F8
+<U000135F9> /xf0/x93/x97/xb9 EGYPTIAN HIEROGLYPH-135F9
+<U000135FA> /xf0/x93/x97/xba EGYPTIAN HIEROGLYPH-135FA
+<U000135FB> /xf0/x93/x97/xbb EGYPTIAN HIEROGLYPH-135FB
+<U000135FC> /xf0/x93/x97/xbc EGYPTIAN HIEROGLYPH-135FC
+<U000135FD> /xf0/x93/x97/xbd EGYPTIAN HIEROGLYPH-135FD
+<U000135FE> /xf0/x93/x97/xbe EGYPTIAN HIEROGLYPH-135FE
+<U000135FF> /xf0/x93/x97/xbf EGYPTIAN HIEROGLYPH-135FF
+<U00013600> /xf0/x93/x98/x80 EGYPTIAN HIEROGLYPH-13600
+<U00013601> /xf0/x93/x98/x81 EGYPTIAN HIEROGLYPH-13601
+<U00013602> /xf0/x93/x98/x82 EGYPTIAN HIEROGLYPH-13602
+<U00013603> /xf0/x93/x98/x83 EGYPTIAN HIEROGLYPH-13603
+<U00013604> /xf0/x93/x98/x84 EGYPTIAN HIEROGLYPH-13604
+<U00013605> /xf0/x93/x98/x85 EGYPTIAN HIEROGLYPH-13605
+<U00013606> /xf0/x93/x98/x86 EGYPTIAN HIEROGLYPH-13606
+<U00013607> /xf0/x93/x98/x87 EGYPTIAN HIEROGLYPH-13607
+<U00013608> /xf0/x93/x98/x88 EGYPTIAN HIEROGLYPH-13608
+<U00013609> /xf0/x93/x98/x89 EGYPTIAN HIEROGLYPH-13609
+<U0001360A> /xf0/x93/x98/x8a EGYPTIAN HIEROGLYPH-1360A
+<U0001360B> /xf0/x93/x98/x8b EGYPTIAN HIEROGLYPH-1360B
+<U0001360C> /xf0/x93/x98/x8c EGYPTIAN HIEROGLYPH-1360C
+<U0001360D> /xf0/x93/x98/x8d EGYPTIAN HIEROGLYPH-1360D
+<U0001360E> /xf0/x93/x98/x8e EGYPTIAN HIEROGLYPH-1360E
+<U0001360F> /xf0/x93/x98/x8f EGYPTIAN HIEROGLYPH-1360F
+<U00013610> /xf0/x93/x98/x90 EGYPTIAN HIEROGLYPH-13610
+<U00013611> /xf0/x93/x98/x91 EGYPTIAN HIEROGLYPH-13611
+<U00013612> /xf0/x93/x98/x92 EGYPTIAN HIEROGLYPH-13612
+<U00013613> /xf0/x93/x98/x93 EGYPTIAN HIEROGLYPH-13613
+<U00013614> /xf0/x93/x98/x94 EGYPTIAN HIEROGLYPH-13614
+<U00013615> /xf0/x93/x98/x95 EGYPTIAN HIEROGLYPH-13615
+<U00013616> /xf0/x93/x98/x96 EGYPTIAN HIEROGLYPH-13616
+<U00013617> /xf0/x93/x98/x97 EGYPTIAN HIEROGLYPH-13617
+<U00013618> /xf0/x93/x98/x98 EGYPTIAN HIEROGLYPH-13618
+<U00013619> /xf0/x93/x98/x99 EGYPTIAN HIEROGLYPH-13619
+<U0001361A> /xf0/x93/x98/x9a EGYPTIAN HIEROGLYPH-1361A
+<U0001361B> /xf0/x93/x98/x9b EGYPTIAN HIEROGLYPH-1361B
+<U0001361C> /xf0/x93/x98/x9c EGYPTIAN HIEROGLYPH-1361C
+<U0001361D> /xf0/x93/x98/x9d EGYPTIAN HIEROGLYPH-1361D
+<U0001361E> /xf0/x93/x98/x9e EGYPTIAN HIEROGLYPH-1361E
+<U0001361F> /xf0/x93/x98/x9f EGYPTIAN HIEROGLYPH-1361F
+<U00013620> /xf0/x93/x98/xa0 EGYPTIAN HIEROGLYPH-13620
+<U00013621> /xf0/x93/x98/xa1 EGYPTIAN HIEROGLYPH-13621
+<U00013622> /xf0/x93/x98/xa2 EGYPTIAN HIEROGLYPH-13622
+<U00013623> /xf0/x93/x98/xa3 EGYPTIAN HIEROGLYPH-13623
+<U00013624> /xf0/x93/x98/xa4 EGYPTIAN HIEROGLYPH-13624
+<U00013625> /xf0/x93/x98/xa5 EGYPTIAN HIEROGLYPH-13625
+<U00013626> /xf0/x93/x98/xa6 EGYPTIAN HIEROGLYPH-13626
+<U00013627> /xf0/x93/x98/xa7 EGYPTIAN HIEROGLYPH-13627
+<U00013628> /xf0/x93/x98/xa8 EGYPTIAN HIEROGLYPH-13628
+<U00013629> /xf0/x93/x98/xa9 EGYPTIAN HIEROGLYPH-13629
+<U0001362A> /xf0/x93/x98/xaa EGYPTIAN HIEROGLYPH-1362A
+<U0001362B> /xf0/x93/x98/xab EGYPTIAN HIEROGLYPH-1362B
+<U0001362C> /xf0/x93/x98/xac EGYPTIAN HIEROGLYPH-1362C
+<U0001362D> /xf0/x93/x98/xad EGYPTIAN HIEROGLYPH-1362D
+<U0001362E> /xf0/x93/x98/xae EGYPTIAN HIEROGLYPH-1362E
+<U0001362F> /xf0/x93/x98/xaf EGYPTIAN HIEROGLYPH-1362F
+<U00013630> /xf0/x93/x98/xb0 EGYPTIAN HIEROGLYPH-13630
+<U00013631> /xf0/x93/x98/xb1 EGYPTIAN HIEROGLYPH-13631
+<U00013632> /xf0/x93/x98/xb2 EGYPTIAN HIEROGLYPH-13632
+<U00013633> /xf0/x93/x98/xb3 EGYPTIAN HIEROGLYPH-13633
+<U00013634> /xf0/x93/x98/xb4 EGYPTIAN HIEROGLYPH-13634
+<U00013635> /xf0/x93/x98/xb5 EGYPTIAN HIEROGLYPH-13635
+<U00013636> /xf0/x93/x98/xb6 EGYPTIAN HIEROGLYPH-13636
+<U00013637> /xf0/x93/x98/xb7 EGYPTIAN HIEROGLYPH-13637
+<U00013638> /xf0/x93/x98/xb8 EGYPTIAN HIEROGLYPH-13638
+<U00013639> /xf0/x93/x98/xb9 EGYPTIAN HIEROGLYPH-13639
+<U0001363A> /xf0/x93/x98/xba EGYPTIAN HIEROGLYPH-1363A
+<U0001363B> /xf0/x93/x98/xbb EGYPTIAN HIEROGLYPH-1363B
+<U0001363C> /xf0/x93/x98/xbc EGYPTIAN HIEROGLYPH-1363C
+<U0001363D> /xf0/x93/x98/xbd EGYPTIAN HIEROGLYPH-1363D
+<U0001363E> /xf0/x93/x98/xbe EGYPTIAN HIEROGLYPH-1363E
+<U0001363F> /xf0/x93/x98/xbf EGYPTIAN HIEROGLYPH-1363F
+<U00013640> /xf0/x93/x99/x80 EGYPTIAN HIEROGLYPH-13640
+<U00013641> /xf0/x93/x99/x81 EGYPTIAN HIEROGLYPH-13641
+<U00013642> /xf0/x93/x99/x82 EGYPTIAN HIEROGLYPH-13642
+<U00013643> /xf0/x93/x99/x83 EGYPTIAN HIEROGLYPH-13643
+<U00013644> /xf0/x93/x99/x84 EGYPTIAN HIEROGLYPH-13644
+<U00013645> /xf0/x93/x99/x85 EGYPTIAN HIEROGLYPH-13645
+<U00013646> /xf0/x93/x99/x86 EGYPTIAN HIEROGLYPH-13646
+<U00013647> /xf0/x93/x99/x87 EGYPTIAN HIEROGLYPH-13647
+<U00013648> /xf0/x93/x99/x88 EGYPTIAN HIEROGLYPH-13648
+<U00013649> /xf0/x93/x99/x89 EGYPTIAN HIEROGLYPH-13649
+<U0001364A> /xf0/x93/x99/x8a EGYPTIAN HIEROGLYPH-1364A
+<U0001364B> /xf0/x93/x99/x8b EGYPTIAN HIEROGLYPH-1364B
+<U0001364C> /xf0/x93/x99/x8c EGYPTIAN HIEROGLYPH-1364C
+<U0001364D> /xf0/x93/x99/x8d EGYPTIAN HIEROGLYPH-1364D
+<U0001364E> /xf0/x93/x99/x8e EGYPTIAN HIEROGLYPH-1364E
+<U0001364F> /xf0/x93/x99/x8f EGYPTIAN HIEROGLYPH-1364F
+<U00013650> /xf0/x93/x99/x90 EGYPTIAN HIEROGLYPH-13650
+<U00013651> /xf0/x93/x99/x91 EGYPTIAN HIEROGLYPH-13651
+<U00013652> /xf0/x93/x99/x92 EGYPTIAN HIEROGLYPH-13652
+<U00013653> /xf0/x93/x99/x93 EGYPTIAN HIEROGLYPH-13653
+<U00013654> /xf0/x93/x99/x94 EGYPTIAN HIEROGLYPH-13654
+<U00013655> /xf0/x93/x99/x95 EGYPTIAN HIEROGLYPH-13655
+<U00013656> /xf0/x93/x99/x96 EGYPTIAN HIEROGLYPH-13656
+<U00013657> /xf0/x93/x99/x97 EGYPTIAN HIEROGLYPH-13657
+<U00013658> /xf0/x93/x99/x98 EGYPTIAN HIEROGLYPH-13658
+<U00013659> /xf0/x93/x99/x99 EGYPTIAN HIEROGLYPH-13659
+<U0001365A> /xf0/x93/x99/x9a EGYPTIAN HIEROGLYPH-1365A
+<U0001365B> /xf0/x93/x99/x9b EGYPTIAN HIEROGLYPH-1365B
+<U0001365C> /xf0/x93/x99/x9c EGYPTIAN HIEROGLYPH-1365C
+<U0001365D> /xf0/x93/x99/x9d EGYPTIAN HIEROGLYPH-1365D
+<U0001365E> /xf0/x93/x99/x9e EGYPTIAN HIEROGLYPH-1365E
+<U0001365F> /xf0/x93/x99/x9f EGYPTIAN HIEROGLYPH-1365F
+<U00013660> /xf0/x93/x99/xa0 EGYPTIAN HIEROGLYPH-13660
+<U00013661> /xf0/x93/x99/xa1 EGYPTIAN HIEROGLYPH-13661
+<U00013662> /xf0/x93/x99/xa2 EGYPTIAN HIEROGLYPH-13662
+<U00013663> /xf0/x93/x99/xa3 EGYPTIAN HIEROGLYPH-13663
+<U00013664> /xf0/x93/x99/xa4 EGYPTIAN HIEROGLYPH-13664
+<U00013665> /xf0/x93/x99/xa5 EGYPTIAN HIEROGLYPH-13665
+<U00013666> /xf0/x93/x99/xa6 EGYPTIAN HIEROGLYPH-13666
+<U00013667> /xf0/x93/x99/xa7 EGYPTIAN HIEROGLYPH-13667
+<U00013668> /xf0/x93/x99/xa8 EGYPTIAN HIEROGLYPH-13668
+<U00013669> /xf0/x93/x99/xa9 EGYPTIAN HIEROGLYPH-13669
+<U0001366A> /xf0/x93/x99/xaa EGYPTIAN HIEROGLYPH-1366A
+<U0001366B> /xf0/x93/x99/xab EGYPTIAN HIEROGLYPH-1366B
+<U0001366C> /xf0/x93/x99/xac EGYPTIAN HIEROGLYPH-1366C
+<U0001366D> /xf0/x93/x99/xad EGYPTIAN HIEROGLYPH-1366D
+<U0001366E> /xf0/x93/x99/xae EGYPTIAN HIEROGLYPH-1366E
+<U0001366F> /xf0/x93/x99/xaf EGYPTIAN HIEROGLYPH-1366F
+<U00013670> /xf0/x93/x99/xb0 EGYPTIAN HIEROGLYPH-13670
+<U00013671> /xf0/x93/x99/xb1 EGYPTIAN HIEROGLYPH-13671
+<U00013672> /xf0/x93/x99/xb2 EGYPTIAN HIEROGLYPH-13672
+<U00013673> /xf0/x93/x99/xb3 EGYPTIAN HIEROGLYPH-13673
+<U00013674> /xf0/x93/x99/xb4 EGYPTIAN HIEROGLYPH-13674
+<U00013675> /xf0/x93/x99/xb5 EGYPTIAN HIEROGLYPH-13675
+<U00013676> /xf0/x93/x99/xb6 EGYPTIAN HIEROGLYPH-13676
+<U00013677> /xf0/x93/x99/xb7 EGYPTIAN HIEROGLYPH-13677
+<U00013678> /xf0/x93/x99/xb8 EGYPTIAN HIEROGLYPH-13678
+<U00013679> /xf0/x93/x99/xb9 EGYPTIAN HIEROGLYPH-13679
+<U0001367A> /xf0/x93/x99/xba EGYPTIAN HIEROGLYPH-1367A
+<U0001367B> /xf0/x93/x99/xbb EGYPTIAN HIEROGLYPH-1367B
+<U0001367C> /xf0/x93/x99/xbc EGYPTIAN HIEROGLYPH-1367C
+<U0001367D> /xf0/x93/x99/xbd EGYPTIAN HIEROGLYPH-1367D
+<U0001367E> /xf0/x93/x99/xbe EGYPTIAN HIEROGLYPH-1367E
+<U0001367F> /xf0/x93/x99/xbf EGYPTIAN HIEROGLYPH-1367F
+<U00013680> /xf0/x93/x9a/x80 EGYPTIAN HIEROGLYPH-13680
+<U00013681> /xf0/x93/x9a/x81 EGYPTIAN HIEROGLYPH-13681
+<U00013682> /xf0/x93/x9a/x82 EGYPTIAN HIEROGLYPH-13682
+<U00013683> /xf0/x93/x9a/x83 EGYPTIAN HIEROGLYPH-13683
+<U00013684> /xf0/x93/x9a/x84 EGYPTIAN HIEROGLYPH-13684
+<U00013685> /xf0/x93/x9a/x85 EGYPTIAN HIEROGLYPH-13685
+<U00013686> /xf0/x93/x9a/x86 EGYPTIAN HIEROGLYPH-13686
+<U00013687> /xf0/x93/x9a/x87 EGYPTIAN HIEROGLYPH-13687
+<U00013688> /xf0/x93/x9a/x88 EGYPTIAN HIEROGLYPH-13688
+<U00013689> /xf0/x93/x9a/x89 EGYPTIAN HIEROGLYPH-13689
+<U0001368A> /xf0/x93/x9a/x8a EGYPTIAN HIEROGLYPH-1368A
+<U0001368B> /xf0/x93/x9a/x8b EGYPTIAN HIEROGLYPH-1368B
+<U0001368C> /xf0/x93/x9a/x8c EGYPTIAN HIEROGLYPH-1368C
+<U0001368D> /xf0/x93/x9a/x8d EGYPTIAN HIEROGLYPH-1368D
+<U0001368E> /xf0/x93/x9a/x8e EGYPTIAN HIEROGLYPH-1368E
+<U0001368F> /xf0/x93/x9a/x8f EGYPTIAN HIEROGLYPH-1368F
+<U00013690> /xf0/x93/x9a/x90 EGYPTIAN HIEROGLYPH-13690
+<U00013691> /xf0/x93/x9a/x91 EGYPTIAN HIEROGLYPH-13691
+<U00013692> /xf0/x93/x9a/x92 EGYPTIAN HIEROGLYPH-13692
+<U00013693> /xf0/x93/x9a/x93 EGYPTIAN HIEROGLYPH-13693
+<U00013694> /xf0/x93/x9a/x94 EGYPTIAN HIEROGLYPH-13694
+<U00013695> /xf0/x93/x9a/x95 EGYPTIAN HIEROGLYPH-13695
+<U00013696> /xf0/x93/x9a/x96 EGYPTIAN HIEROGLYPH-13696
+<U00013697> /xf0/x93/x9a/x97 EGYPTIAN HIEROGLYPH-13697
+<U00013698> /xf0/x93/x9a/x98 EGYPTIAN HIEROGLYPH-13698
+<U00013699> /xf0/x93/x9a/x99 EGYPTIAN HIEROGLYPH-13699
+<U0001369A> /xf0/x93/x9a/x9a EGYPTIAN HIEROGLYPH-1369A
+<U0001369B> /xf0/x93/x9a/x9b EGYPTIAN HIEROGLYPH-1369B
+<U0001369C> /xf0/x93/x9a/x9c EGYPTIAN HIEROGLYPH-1369C
+<U0001369D> /xf0/x93/x9a/x9d EGYPTIAN HIEROGLYPH-1369D
+<U0001369E> /xf0/x93/x9a/x9e EGYPTIAN HIEROGLYPH-1369E
+<U0001369F> /xf0/x93/x9a/x9f EGYPTIAN HIEROGLYPH-1369F
+<U000136A0> /xf0/x93/x9a/xa0 EGYPTIAN HIEROGLYPH-136A0
+<U000136A1> /xf0/x93/x9a/xa1 EGYPTIAN HIEROGLYPH-136A1
+<U000136A2> /xf0/x93/x9a/xa2 EGYPTIAN HIEROGLYPH-136A2
+<U000136A3> /xf0/x93/x9a/xa3 EGYPTIAN HIEROGLYPH-136A3
+<U000136A4> /xf0/x93/x9a/xa4 EGYPTIAN HIEROGLYPH-136A4
+<U000136A5> /xf0/x93/x9a/xa5 EGYPTIAN HIEROGLYPH-136A5
+<U000136A6> /xf0/x93/x9a/xa6 EGYPTIAN HIEROGLYPH-136A6
+<U000136A7> /xf0/x93/x9a/xa7 EGYPTIAN HIEROGLYPH-136A7
+<U000136A8> /xf0/x93/x9a/xa8 EGYPTIAN HIEROGLYPH-136A8
+<U000136A9> /xf0/x93/x9a/xa9 EGYPTIAN HIEROGLYPH-136A9
+<U000136AA> /xf0/x93/x9a/xaa EGYPTIAN HIEROGLYPH-136AA
+<U000136AB> /xf0/x93/x9a/xab EGYPTIAN HIEROGLYPH-136AB
+<U000136AC> /xf0/x93/x9a/xac EGYPTIAN HIEROGLYPH-136AC
+<U000136AD> /xf0/x93/x9a/xad EGYPTIAN HIEROGLYPH-136AD
+<U000136AE> /xf0/x93/x9a/xae EGYPTIAN HIEROGLYPH-136AE
+<U000136AF> /xf0/x93/x9a/xaf EGYPTIAN HIEROGLYPH-136AF
+<U000136B0> /xf0/x93/x9a/xb0 EGYPTIAN HIEROGLYPH-136B0
+<U000136B1> /xf0/x93/x9a/xb1 EGYPTIAN HIEROGLYPH-136B1
+<U000136B2> /xf0/x93/x9a/xb2 EGYPTIAN HIEROGLYPH-136B2
+<U000136B3> /xf0/x93/x9a/xb3 EGYPTIAN HIEROGLYPH-136B3
+<U000136B4> /xf0/x93/x9a/xb4 EGYPTIAN HIEROGLYPH-136B4
+<U000136B5> /xf0/x93/x9a/xb5 EGYPTIAN HIEROGLYPH-136B5
+<U000136B6> /xf0/x93/x9a/xb6 EGYPTIAN HIEROGLYPH-136B6
+<U000136B7> /xf0/x93/x9a/xb7 EGYPTIAN HIEROGLYPH-136B7
+<U000136B8> /xf0/x93/x9a/xb8 EGYPTIAN HIEROGLYPH-136B8
+<U000136B9> /xf0/x93/x9a/xb9 EGYPTIAN HIEROGLYPH-136B9
+<U000136BA> /xf0/x93/x9a/xba EGYPTIAN HIEROGLYPH-136BA
+<U000136BB> /xf0/x93/x9a/xbb EGYPTIAN HIEROGLYPH-136BB
+<U000136BC> /xf0/x93/x9a/xbc EGYPTIAN HIEROGLYPH-136BC
+<U000136BD> /xf0/x93/x9a/xbd EGYPTIAN HIEROGLYPH-136BD
+<U000136BE> /xf0/x93/x9a/xbe EGYPTIAN HIEROGLYPH-136BE
+<U000136BF> /xf0/x93/x9a/xbf EGYPTIAN HIEROGLYPH-136BF
+<U000136C0> /xf0/x93/x9b/x80 EGYPTIAN HIEROGLYPH-136C0
+<U000136C1> /xf0/x93/x9b/x81 EGYPTIAN HIEROGLYPH-136C1
+<U000136C2> /xf0/x93/x9b/x82 EGYPTIAN HIEROGLYPH-136C2
+<U000136C3> /xf0/x93/x9b/x83 EGYPTIAN HIEROGLYPH-136C3
+<U000136C4> /xf0/x93/x9b/x84 EGYPTIAN HIEROGLYPH-136C4
+<U000136C5> /xf0/x93/x9b/x85 EGYPTIAN HIEROGLYPH-136C5
+<U000136C6> /xf0/x93/x9b/x86 EGYPTIAN HIEROGLYPH-136C6
+<U000136C7> /xf0/x93/x9b/x87 EGYPTIAN HIEROGLYPH-136C7
+<U000136C8> /xf0/x93/x9b/x88 EGYPTIAN HIEROGLYPH-136C8
+<U000136C9> /xf0/x93/x9b/x89 EGYPTIAN HIEROGLYPH-136C9
+<U000136CA> /xf0/x93/x9b/x8a EGYPTIAN HIEROGLYPH-136CA
+<U000136CB> /xf0/x93/x9b/x8b EGYPTIAN HIEROGLYPH-136CB
+<U000136CC> /xf0/x93/x9b/x8c EGYPTIAN HIEROGLYPH-136CC
+<U000136CD> /xf0/x93/x9b/x8d EGYPTIAN HIEROGLYPH-136CD
+<U000136CE> /xf0/x93/x9b/x8e EGYPTIAN HIEROGLYPH-136CE
+<U000136CF> /xf0/x93/x9b/x8f EGYPTIAN HIEROGLYPH-136CF
+<U000136D0> /xf0/x93/x9b/x90 EGYPTIAN HIEROGLYPH-136D0
+<U000136D1> /xf0/x93/x9b/x91 EGYPTIAN HIEROGLYPH-136D1
+<U000136D2> /xf0/x93/x9b/x92 EGYPTIAN HIEROGLYPH-136D2
+<U000136D3> /xf0/x93/x9b/x93 EGYPTIAN HIEROGLYPH-136D3
+<U000136D4> /xf0/x93/x9b/x94 EGYPTIAN HIEROGLYPH-136D4
+<U000136D5> /xf0/x93/x9b/x95 EGYPTIAN HIEROGLYPH-136D5
+<U000136D6> /xf0/x93/x9b/x96 EGYPTIAN HIEROGLYPH-136D6
+<U000136D7> /xf0/x93/x9b/x97 EGYPTIAN HIEROGLYPH-136D7
+<U000136D8> /xf0/x93/x9b/x98 EGYPTIAN HIEROGLYPH-136D8
+<U000136D9> /xf0/x93/x9b/x99 EGYPTIAN HIEROGLYPH-136D9
+<U000136DA> /xf0/x93/x9b/x9a EGYPTIAN HIEROGLYPH-136DA
+<U000136DB> /xf0/x93/x9b/x9b EGYPTIAN HIEROGLYPH-136DB
+<U000136DC> /xf0/x93/x9b/x9c EGYPTIAN HIEROGLYPH-136DC
+<U000136DD> /xf0/x93/x9b/x9d EGYPTIAN HIEROGLYPH-136DD
+<U000136DE> /xf0/x93/x9b/x9e EGYPTIAN HIEROGLYPH-136DE
+<U000136DF> /xf0/x93/x9b/x9f EGYPTIAN HIEROGLYPH-136DF
+<U000136E0> /xf0/x93/x9b/xa0 EGYPTIAN HIEROGLYPH-136E0
+<U000136E1> /xf0/x93/x9b/xa1 EGYPTIAN HIEROGLYPH-136E1
+<U000136E2> /xf0/x93/x9b/xa2 EGYPTIAN HIEROGLYPH-136E2
+<U000136E3> /xf0/x93/x9b/xa3 EGYPTIAN HIEROGLYPH-136E3
+<U000136E4> /xf0/x93/x9b/xa4 EGYPTIAN HIEROGLYPH-136E4
+<U000136E5> /xf0/x93/x9b/xa5 EGYPTIAN HIEROGLYPH-136E5
+<U000136E6> /xf0/x93/x9b/xa6 EGYPTIAN HIEROGLYPH-136E6
+<U000136E7> /xf0/x93/x9b/xa7 EGYPTIAN HIEROGLYPH-136E7
+<U000136E8> /xf0/x93/x9b/xa8 EGYPTIAN HIEROGLYPH-136E8
+<U000136E9> /xf0/x93/x9b/xa9 EGYPTIAN HIEROGLYPH-136E9
+<U000136EA> /xf0/x93/x9b/xaa EGYPTIAN HIEROGLYPH-136EA
+<U000136EB> /xf0/x93/x9b/xab EGYPTIAN HIEROGLYPH-136EB
+<U000136EC> /xf0/x93/x9b/xac EGYPTIAN HIEROGLYPH-136EC
+<U000136ED> /xf0/x93/x9b/xad EGYPTIAN HIEROGLYPH-136ED
+<U000136EE> /xf0/x93/x9b/xae EGYPTIAN HIEROGLYPH-136EE
+<U000136EF> /xf0/x93/x9b/xaf EGYPTIAN HIEROGLYPH-136EF
+<U000136F0> /xf0/x93/x9b/xb0 EGYPTIAN HIEROGLYPH-136F0
+<U000136F1> /xf0/x93/x9b/xb1 EGYPTIAN HIEROGLYPH-136F1
+<U000136F2> /xf0/x93/x9b/xb2 EGYPTIAN HIEROGLYPH-136F2
+<U000136F3> /xf0/x93/x9b/xb3 EGYPTIAN HIEROGLYPH-136F3
+<U000136F4> /xf0/x93/x9b/xb4 EGYPTIAN HIEROGLYPH-136F4
+<U000136F5> /xf0/x93/x9b/xb5 EGYPTIAN HIEROGLYPH-136F5
+<U000136F6> /xf0/x93/x9b/xb6 EGYPTIAN HIEROGLYPH-136F6
+<U000136F7> /xf0/x93/x9b/xb7 EGYPTIAN HIEROGLYPH-136F7
+<U000136F8> /xf0/x93/x9b/xb8 EGYPTIAN HIEROGLYPH-136F8
+<U000136F9> /xf0/x93/x9b/xb9 EGYPTIAN HIEROGLYPH-136F9
+<U000136FA> /xf0/x93/x9b/xba EGYPTIAN HIEROGLYPH-136FA
+<U000136FB> /xf0/x93/x9b/xbb EGYPTIAN HIEROGLYPH-136FB
+<U000136FC> /xf0/x93/x9b/xbc EGYPTIAN HIEROGLYPH-136FC
+<U000136FD> /xf0/x93/x9b/xbd EGYPTIAN HIEROGLYPH-136FD
+<U000136FE> /xf0/x93/x9b/xbe EGYPTIAN HIEROGLYPH-136FE
+<U000136FF> /xf0/x93/x9b/xbf EGYPTIAN HIEROGLYPH-136FF
+<U00013700> /xf0/x93/x9c/x80 EGYPTIAN HIEROGLYPH-13700
+<U00013701> /xf0/x93/x9c/x81 EGYPTIAN HIEROGLYPH-13701
+<U00013702> /xf0/x93/x9c/x82 EGYPTIAN HIEROGLYPH-13702
+<U00013703> /xf0/x93/x9c/x83 EGYPTIAN HIEROGLYPH-13703
+<U00013704> /xf0/x93/x9c/x84 EGYPTIAN HIEROGLYPH-13704
+<U00013705> /xf0/x93/x9c/x85 EGYPTIAN HIEROGLYPH-13705
+<U00013706> /xf0/x93/x9c/x86 EGYPTIAN HIEROGLYPH-13706
+<U00013707> /xf0/x93/x9c/x87 EGYPTIAN HIEROGLYPH-13707
+<U00013708> /xf0/x93/x9c/x88 EGYPTIAN HIEROGLYPH-13708
+<U00013709> /xf0/x93/x9c/x89 EGYPTIAN HIEROGLYPH-13709
+<U0001370A> /xf0/x93/x9c/x8a EGYPTIAN HIEROGLYPH-1370A
+<U0001370B> /xf0/x93/x9c/x8b EGYPTIAN HIEROGLYPH-1370B
+<U0001370C> /xf0/x93/x9c/x8c EGYPTIAN HIEROGLYPH-1370C
+<U0001370D> /xf0/x93/x9c/x8d EGYPTIAN HIEROGLYPH-1370D
+<U0001370E> /xf0/x93/x9c/x8e EGYPTIAN HIEROGLYPH-1370E
+<U0001370F> /xf0/x93/x9c/x8f EGYPTIAN HIEROGLYPH-1370F
+<U00013710> /xf0/x93/x9c/x90 EGYPTIAN HIEROGLYPH-13710
+<U00013711> /xf0/x93/x9c/x91 EGYPTIAN HIEROGLYPH-13711
+<U00013712> /xf0/x93/x9c/x92 EGYPTIAN HIEROGLYPH-13712
+<U00013713> /xf0/x93/x9c/x93 EGYPTIAN HIEROGLYPH-13713
+<U00013714> /xf0/x93/x9c/x94 EGYPTIAN HIEROGLYPH-13714
+<U00013715> /xf0/x93/x9c/x95 EGYPTIAN HIEROGLYPH-13715
+<U00013716> /xf0/x93/x9c/x96 EGYPTIAN HIEROGLYPH-13716
+<U00013717> /xf0/x93/x9c/x97 EGYPTIAN HIEROGLYPH-13717
+<U00013718> /xf0/x93/x9c/x98 EGYPTIAN HIEROGLYPH-13718
+<U00013719> /xf0/x93/x9c/x99 EGYPTIAN HIEROGLYPH-13719
+<U0001371A> /xf0/x93/x9c/x9a EGYPTIAN HIEROGLYPH-1371A
+<U0001371B> /xf0/x93/x9c/x9b EGYPTIAN HIEROGLYPH-1371B
+<U0001371C> /xf0/x93/x9c/x9c EGYPTIAN HIEROGLYPH-1371C
+<U0001371D> /xf0/x93/x9c/x9d EGYPTIAN HIEROGLYPH-1371D
+<U0001371E> /xf0/x93/x9c/x9e EGYPTIAN HIEROGLYPH-1371E
+<U0001371F> /xf0/x93/x9c/x9f EGYPTIAN HIEROGLYPH-1371F
+<U00013720> /xf0/x93/x9c/xa0 EGYPTIAN HIEROGLYPH-13720
+<U00013721> /xf0/x93/x9c/xa1 EGYPTIAN HIEROGLYPH-13721
+<U00013722> /xf0/x93/x9c/xa2 EGYPTIAN HIEROGLYPH-13722
+<U00013723> /xf0/x93/x9c/xa3 EGYPTIAN HIEROGLYPH-13723
+<U00013724> /xf0/x93/x9c/xa4 EGYPTIAN HIEROGLYPH-13724
+<U00013725> /xf0/x93/x9c/xa5 EGYPTIAN HIEROGLYPH-13725
+<U00013726> /xf0/x93/x9c/xa6 EGYPTIAN HIEROGLYPH-13726
+<U00013727> /xf0/x93/x9c/xa7 EGYPTIAN HIEROGLYPH-13727
+<U00013728> /xf0/x93/x9c/xa8 EGYPTIAN HIEROGLYPH-13728
+<U00013729> /xf0/x93/x9c/xa9 EGYPTIAN HIEROGLYPH-13729
+<U0001372A> /xf0/x93/x9c/xaa EGYPTIAN HIEROGLYPH-1372A
+<U0001372B> /xf0/x93/x9c/xab EGYPTIAN HIEROGLYPH-1372B
+<U0001372C> /xf0/x93/x9c/xac EGYPTIAN HIEROGLYPH-1372C
+<U0001372D> /xf0/x93/x9c/xad EGYPTIAN HIEROGLYPH-1372D
+<U0001372E> /xf0/x93/x9c/xae EGYPTIAN HIEROGLYPH-1372E
+<U0001372F> /xf0/x93/x9c/xaf EGYPTIAN HIEROGLYPH-1372F
+<U00013730> /xf0/x93/x9c/xb0 EGYPTIAN HIEROGLYPH-13730
+<U00013731> /xf0/x93/x9c/xb1 EGYPTIAN HIEROGLYPH-13731
+<U00013732> /xf0/x93/x9c/xb2 EGYPTIAN HIEROGLYPH-13732
+<U00013733> /xf0/x93/x9c/xb3 EGYPTIAN HIEROGLYPH-13733
+<U00013734> /xf0/x93/x9c/xb4 EGYPTIAN HIEROGLYPH-13734
+<U00013735> /xf0/x93/x9c/xb5 EGYPTIAN HIEROGLYPH-13735
+<U00013736> /xf0/x93/x9c/xb6 EGYPTIAN HIEROGLYPH-13736
+<U00013737> /xf0/x93/x9c/xb7 EGYPTIAN HIEROGLYPH-13737
+<U00013738> /xf0/x93/x9c/xb8 EGYPTIAN HIEROGLYPH-13738
+<U00013739> /xf0/x93/x9c/xb9 EGYPTIAN HIEROGLYPH-13739
+<U0001373A> /xf0/x93/x9c/xba EGYPTIAN HIEROGLYPH-1373A
+<U0001373B> /xf0/x93/x9c/xbb EGYPTIAN HIEROGLYPH-1373B
+<U0001373C> /xf0/x93/x9c/xbc EGYPTIAN HIEROGLYPH-1373C
+<U0001373D> /xf0/x93/x9c/xbd EGYPTIAN HIEROGLYPH-1373D
+<U0001373E> /xf0/x93/x9c/xbe EGYPTIAN HIEROGLYPH-1373E
+<U0001373F> /xf0/x93/x9c/xbf EGYPTIAN HIEROGLYPH-1373F
+<U00013740> /xf0/x93/x9d/x80 EGYPTIAN HIEROGLYPH-13740
+<U00013741> /xf0/x93/x9d/x81 EGYPTIAN HIEROGLYPH-13741
+<U00013742> /xf0/x93/x9d/x82 EGYPTIAN HIEROGLYPH-13742
+<U00013743> /xf0/x93/x9d/x83 EGYPTIAN HIEROGLYPH-13743
+<U00013744> /xf0/x93/x9d/x84 EGYPTIAN HIEROGLYPH-13744
+<U00013745> /xf0/x93/x9d/x85 EGYPTIAN HIEROGLYPH-13745
+<U00013746> /xf0/x93/x9d/x86 EGYPTIAN HIEROGLYPH-13746
+<U00013747> /xf0/x93/x9d/x87 EGYPTIAN HIEROGLYPH-13747
+<U00013748> /xf0/x93/x9d/x88 EGYPTIAN HIEROGLYPH-13748
+<U00013749> /xf0/x93/x9d/x89 EGYPTIAN HIEROGLYPH-13749
+<U0001374A> /xf0/x93/x9d/x8a EGYPTIAN HIEROGLYPH-1374A
+<U0001374B> /xf0/x93/x9d/x8b EGYPTIAN HIEROGLYPH-1374B
+<U0001374C> /xf0/x93/x9d/x8c EGYPTIAN HIEROGLYPH-1374C
+<U0001374D> /xf0/x93/x9d/x8d EGYPTIAN HIEROGLYPH-1374D
+<U0001374E> /xf0/x93/x9d/x8e EGYPTIAN HIEROGLYPH-1374E
+<U0001374F> /xf0/x93/x9d/x8f EGYPTIAN HIEROGLYPH-1374F
+<U00013750> /xf0/x93/x9d/x90 EGYPTIAN HIEROGLYPH-13750
+<U00013751> /xf0/x93/x9d/x91 EGYPTIAN HIEROGLYPH-13751
+<U00013752> /xf0/x93/x9d/x92 EGYPTIAN HIEROGLYPH-13752
+<U00013753> /xf0/x93/x9d/x93 EGYPTIAN HIEROGLYPH-13753
+<U00013754> /xf0/x93/x9d/x94 EGYPTIAN HIEROGLYPH-13754
+<U00013755> /xf0/x93/x9d/x95 EGYPTIAN HIEROGLYPH-13755
+<U00013756> /xf0/x93/x9d/x96 EGYPTIAN HIEROGLYPH-13756
+<U00013757> /xf0/x93/x9d/x97 EGYPTIAN HIEROGLYPH-13757
+<U00013758> /xf0/x93/x9d/x98 EGYPTIAN HIEROGLYPH-13758
+<U00013759> /xf0/x93/x9d/x99 EGYPTIAN HIEROGLYPH-13759
+<U0001375A> /xf0/x93/x9d/x9a EGYPTIAN HIEROGLYPH-1375A
+<U0001375B> /xf0/x93/x9d/x9b EGYPTIAN HIEROGLYPH-1375B
+<U0001375C> /xf0/x93/x9d/x9c EGYPTIAN HIEROGLYPH-1375C
+<U0001375D> /xf0/x93/x9d/x9d EGYPTIAN HIEROGLYPH-1375D
+<U0001375E> /xf0/x93/x9d/x9e EGYPTIAN HIEROGLYPH-1375E
+<U0001375F> /xf0/x93/x9d/x9f EGYPTIAN HIEROGLYPH-1375F
+<U00013760> /xf0/x93/x9d/xa0 EGYPTIAN HIEROGLYPH-13760
+<U00013761> /xf0/x93/x9d/xa1 EGYPTIAN HIEROGLYPH-13761
+<U00013762> /xf0/x93/x9d/xa2 EGYPTIAN HIEROGLYPH-13762
+<U00013763> /xf0/x93/x9d/xa3 EGYPTIAN HIEROGLYPH-13763
+<U00013764> /xf0/x93/x9d/xa4 EGYPTIAN HIEROGLYPH-13764
+<U00013765> /xf0/x93/x9d/xa5 EGYPTIAN HIEROGLYPH-13765
+<U00013766> /xf0/x93/x9d/xa6 EGYPTIAN HIEROGLYPH-13766
+<U00013767> /xf0/x93/x9d/xa7 EGYPTIAN HIEROGLYPH-13767
+<U00013768> /xf0/x93/x9d/xa8 EGYPTIAN HIEROGLYPH-13768
+<U00013769> /xf0/x93/x9d/xa9 EGYPTIAN HIEROGLYPH-13769
+<U0001376A> /xf0/x93/x9d/xaa EGYPTIAN HIEROGLYPH-1376A
+<U0001376B> /xf0/x93/x9d/xab EGYPTIAN HIEROGLYPH-1376B
+<U0001376C> /xf0/x93/x9d/xac EGYPTIAN HIEROGLYPH-1376C
+<U0001376D> /xf0/x93/x9d/xad EGYPTIAN HIEROGLYPH-1376D
+<U0001376E> /xf0/x93/x9d/xae EGYPTIAN HIEROGLYPH-1376E
+<U0001376F> /xf0/x93/x9d/xaf EGYPTIAN HIEROGLYPH-1376F
+<U00013770> /xf0/x93/x9d/xb0 EGYPTIAN HIEROGLYPH-13770
+<U00013771> /xf0/x93/x9d/xb1 EGYPTIAN HIEROGLYPH-13771
+<U00013772> /xf0/x93/x9d/xb2 EGYPTIAN HIEROGLYPH-13772
+<U00013773> /xf0/x93/x9d/xb3 EGYPTIAN HIEROGLYPH-13773
+<U00013774> /xf0/x93/x9d/xb4 EGYPTIAN HIEROGLYPH-13774
+<U00013775> /xf0/x93/x9d/xb5 EGYPTIAN HIEROGLYPH-13775
+<U00013776> /xf0/x93/x9d/xb6 EGYPTIAN HIEROGLYPH-13776
+<U00013777> /xf0/x93/x9d/xb7 EGYPTIAN HIEROGLYPH-13777
+<U00013778> /xf0/x93/x9d/xb8 EGYPTIAN HIEROGLYPH-13778
+<U00013779> /xf0/x93/x9d/xb9 EGYPTIAN HIEROGLYPH-13779
+<U0001377A> /xf0/x93/x9d/xba EGYPTIAN HIEROGLYPH-1377A
+<U0001377B> /xf0/x93/x9d/xbb EGYPTIAN HIEROGLYPH-1377B
+<U0001377C> /xf0/x93/x9d/xbc EGYPTIAN HIEROGLYPH-1377C
+<U0001377D> /xf0/x93/x9d/xbd EGYPTIAN HIEROGLYPH-1377D
+<U0001377E> /xf0/x93/x9d/xbe EGYPTIAN HIEROGLYPH-1377E
+<U0001377F> /xf0/x93/x9d/xbf EGYPTIAN HIEROGLYPH-1377F
+<U00013780> /xf0/x93/x9e/x80 EGYPTIAN HIEROGLYPH-13780
+<U00013781> /xf0/x93/x9e/x81 EGYPTIAN HIEROGLYPH-13781
+<U00013782> /xf0/x93/x9e/x82 EGYPTIAN HIEROGLYPH-13782
+<U00013783> /xf0/x93/x9e/x83 EGYPTIAN HIEROGLYPH-13783
+<U00013784> /xf0/x93/x9e/x84 EGYPTIAN HIEROGLYPH-13784
+<U00013785> /xf0/x93/x9e/x85 EGYPTIAN HIEROGLYPH-13785
+<U00013786> /xf0/x93/x9e/x86 EGYPTIAN HIEROGLYPH-13786
+<U00013787> /xf0/x93/x9e/x87 EGYPTIAN HIEROGLYPH-13787
+<U00013788> /xf0/x93/x9e/x88 EGYPTIAN HIEROGLYPH-13788
+<U00013789> /xf0/x93/x9e/x89 EGYPTIAN HIEROGLYPH-13789
+<U0001378A> /xf0/x93/x9e/x8a EGYPTIAN HIEROGLYPH-1378A
+<U0001378B> /xf0/x93/x9e/x8b EGYPTIAN HIEROGLYPH-1378B
+<U0001378C> /xf0/x93/x9e/x8c EGYPTIAN HIEROGLYPH-1378C
+<U0001378D> /xf0/x93/x9e/x8d EGYPTIAN HIEROGLYPH-1378D
+<U0001378E> /xf0/x93/x9e/x8e EGYPTIAN HIEROGLYPH-1378E
+<U0001378F> /xf0/x93/x9e/x8f EGYPTIAN HIEROGLYPH-1378F
+<U00013790> /xf0/x93/x9e/x90 EGYPTIAN HIEROGLYPH-13790
+<U00013791> /xf0/x93/x9e/x91 EGYPTIAN HIEROGLYPH-13791
+<U00013792> /xf0/x93/x9e/x92 EGYPTIAN HIEROGLYPH-13792
+<U00013793> /xf0/x93/x9e/x93 EGYPTIAN HIEROGLYPH-13793
+<U00013794> /xf0/x93/x9e/x94 EGYPTIAN HIEROGLYPH-13794
+<U00013795> /xf0/x93/x9e/x95 EGYPTIAN HIEROGLYPH-13795
+<U00013796> /xf0/x93/x9e/x96 EGYPTIAN HIEROGLYPH-13796
+<U00013797> /xf0/x93/x9e/x97 EGYPTIAN HIEROGLYPH-13797
+<U00013798> /xf0/x93/x9e/x98 EGYPTIAN HIEROGLYPH-13798
+<U00013799> /xf0/x93/x9e/x99 EGYPTIAN HIEROGLYPH-13799
+<U0001379A> /xf0/x93/x9e/x9a EGYPTIAN HIEROGLYPH-1379A
+<U0001379B> /xf0/x93/x9e/x9b EGYPTIAN HIEROGLYPH-1379B
+<U0001379C> /xf0/x93/x9e/x9c EGYPTIAN HIEROGLYPH-1379C
+<U0001379D> /xf0/x93/x9e/x9d EGYPTIAN HIEROGLYPH-1379D
+<U0001379E> /xf0/x93/x9e/x9e EGYPTIAN HIEROGLYPH-1379E
+<U0001379F> /xf0/x93/x9e/x9f EGYPTIAN HIEROGLYPH-1379F
+<U000137A0> /xf0/x93/x9e/xa0 EGYPTIAN HIEROGLYPH-137A0
+<U000137A1> /xf0/x93/x9e/xa1 EGYPTIAN HIEROGLYPH-137A1
+<U000137A2> /xf0/x93/x9e/xa2 EGYPTIAN HIEROGLYPH-137A2
+<U000137A3> /xf0/x93/x9e/xa3 EGYPTIAN HIEROGLYPH-137A3
+<U000137A4> /xf0/x93/x9e/xa4 EGYPTIAN HIEROGLYPH-137A4
+<U000137A5> /xf0/x93/x9e/xa5 EGYPTIAN HIEROGLYPH-137A5
+<U000137A6> /xf0/x93/x9e/xa6 EGYPTIAN HIEROGLYPH-137A6
+<U000137A7> /xf0/x93/x9e/xa7 EGYPTIAN HIEROGLYPH-137A7
+<U000137A8> /xf0/x93/x9e/xa8 EGYPTIAN HIEROGLYPH-137A8
+<U000137A9> /xf0/x93/x9e/xa9 EGYPTIAN HIEROGLYPH-137A9
+<U000137AA> /xf0/x93/x9e/xaa EGYPTIAN HIEROGLYPH-137AA
+<U000137AB> /xf0/x93/x9e/xab EGYPTIAN HIEROGLYPH-137AB
+<U000137AC> /xf0/x93/x9e/xac EGYPTIAN HIEROGLYPH-137AC
+<U000137AD> /xf0/x93/x9e/xad EGYPTIAN HIEROGLYPH-137AD
+<U000137AE> /xf0/x93/x9e/xae EGYPTIAN HIEROGLYPH-137AE
+<U000137AF> /xf0/x93/x9e/xaf EGYPTIAN HIEROGLYPH-137AF
+<U000137B0> /xf0/x93/x9e/xb0 EGYPTIAN HIEROGLYPH-137B0
+<U000137B1> /xf0/x93/x9e/xb1 EGYPTIAN HIEROGLYPH-137B1
+<U000137B2> /xf0/x93/x9e/xb2 EGYPTIAN HIEROGLYPH-137B2
+<U000137B3> /xf0/x93/x9e/xb3 EGYPTIAN HIEROGLYPH-137B3
+<U000137B4> /xf0/x93/x9e/xb4 EGYPTIAN HIEROGLYPH-137B4
+<U000137B5> /xf0/x93/x9e/xb5 EGYPTIAN HIEROGLYPH-137B5
+<U000137B6> /xf0/x93/x9e/xb6 EGYPTIAN HIEROGLYPH-137B6
+<U000137B7> /xf0/x93/x9e/xb7 EGYPTIAN HIEROGLYPH-137B7
+<U000137B8> /xf0/x93/x9e/xb8 EGYPTIAN HIEROGLYPH-137B8
+<U000137B9> /xf0/x93/x9e/xb9 EGYPTIAN HIEROGLYPH-137B9
+<U000137BA> /xf0/x93/x9e/xba EGYPTIAN HIEROGLYPH-137BA
+<U000137BB> /xf0/x93/x9e/xbb EGYPTIAN HIEROGLYPH-137BB
+<U000137BC> /xf0/x93/x9e/xbc EGYPTIAN HIEROGLYPH-137BC
+<U000137BD> /xf0/x93/x9e/xbd EGYPTIAN HIEROGLYPH-137BD
+<U000137BE> /xf0/x93/x9e/xbe EGYPTIAN HIEROGLYPH-137BE
+<U000137BF> /xf0/x93/x9e/xbf EGYPTIAN HIEROGLYPH-137BF
+<U000137C0> /xf0/x93/x9f/x80 EGYPTIAN HIEROGLYPH-137C0
+<U000137C1> /xf0/x93/x9f/x81 EGYPTIAN HIEROGLYPH-137C1
+<U000137C2> /xf0/x93/x9f/x82 EGYPTIAN HIEROGLYPH-137C2
+<U000137C3> /xf0/x93/x9f/x83 EGYPTIAN HIEROGLYPH-137C3
+<U000137C4> /xf0/x93/x9f/x84 EGYPTIAN HIEROGLYPH-137C4
+<U000137C5> /xf0/x93/x9f/x85 EGYPTIAN HIEROGLYPH-137C5
+<U000137C6> /xf0/x93/x9f/x86 EGYPTIAN HIEROGLYPH-137C6
+<U000137C7> /xf0/x93/x9f/x87 EGYPTIAN HIEROGLYPH-137C7
+<U000137C8> /xf0/x93/x9f/x88 EGYPTIAN HIEROGLYPH-137C8
+<U000137C9> /xf0/x93/x9f/x89 EGYPTIAN HIEROGLYPH-137C9
+<U000137CA> /xf0/x93/x9f/x8a EGYPTIAN HIEROGLYPH-137CA
+<U000137CB> /xf0/x93/x9f/x8b EGYPTIAN HIEROGLYPH-137CB
+<U000137CC> /xf0/x93/x9f/x8c EGYPTIAN HIEROGLYPH-137CC
+<U000137CD> /xf0/x93/x9f/x8d EGYPTIAN HIEROGLYPH-137CD
+<U000137CE> /xf0/x93/x9f/x8e EGYPTIAN HIEROGLYPH-137CE
+<U000137CF> /xf0/x93/x9f/x8f EGYPTIAN HIEROGLYPH-137CF
+<U000137D0> /xf0/x93/x9f/x90 EGYPTIAN HIEROGLYPH-137D0
+<U000137D1> /xf0/x93/x9f/x91 EGYPTIAN HIEROGLYPH-137D1
+<U000137D2> /xf0/x93/x9f/x92 EGYPTIAN HIEROGLYPH-137D2
+<U000137D3> /xf0/x93/x9f/x93 EGYPTIAN HIEROGLYPH-137D3
+<U000137D4> /xf0/x93/x9f/x94 EGYPTIAN HIEROGLYPH-137D4
+<U000137D5> /xf0/x93/x9f/x95 EGYPTIAN HIEROGLYPH-137D5
+<U000137D6> /xf0/x93/x9f/x96 EGYPTIAN HIEROGLYPH-137D6
+<U000137D7> /xf0/x93/x9f/x97 EGYPTIAN HIEROGLYPH-137D7
+<U000137D8> /xf0/x93/x9f/x98 EGYPTIAN HIEROGLYPH-137D8
+<U000137D9> /xf0/x93/x9f/x99 EGYPTIAN HIEROGLYPH-137D9
+<U000137DA> /xf0/x93/x9f/x9a EGYPTIAN HIEROGLYPH-137DA
+<U000137DB> /xf0/x93/x9f/x9b EGYPTIAN HIEROGLYPH-137DB
+<U000137DC> /xf0/x93/x9f/x9c EGYPTIAN HIEROGLYPH-137DC
+<U000137DD> /xf0/x93/x9f/x9d EGYPTIAN HIEROGLYPH-137DD
+<U000137DE> /xf0/x93/x9f/x9e EGYPTIAN HIEROGLYPH-137DE
+<U000137DF> /xf0/x93/x9f/x9f EGYPTIAN HIEROGLYPH-137DF
+<U000137E0> /xf0/x93/x9f/xa0 EGYPTIAN HIEROGLYPH-137E0
+<U000137E1> /xf0/x93/x9f/xa1 EGYPTIAN HIEROGLYPH-137E1
+<U000137E2> /xf0/x93/x9f/xa2 EGYPTIAN HIEROGLYPH-137E2
+<U000137E3> /xf0/x93/x9f/xa3 EGYPTIAN HIEROGLYPH-137E3
+<U000137E4> /xf0/x93/x9f/xa4 EGYPTIAN HIEROGLYPH-137E4
+<U000137E5> /xf0/x93/x9f/xa5 EGYPTIAN HIEROGLYPH-137E5
+<U000137E6> /xf0/x93/x9f/xa6 EGYPTIAN HIEROGLYPH-137E6
+<U000137E7> /xf0/x93/x9f/xa7 EGYPTIAN HIEROGLYPH-137E7
+<U000137E8> /xf0/x93/x9f/xa8 EGYPTIAN HIEROGLYPH-137E8
+<U000137E9> /xf0/x93/x9f/xa9 EGYPTIAN HIEROGLYPH-137E9
+<U000137EA> /xf0/x93/x9f/xaa EGYPTIAN HIEROGLYPH-137EA
+<U000137EB> /xf0/x93/x9f/xab EGYPTIAN HIEROGLYPH-137EB
+<U000137EC> /xf0/x93/x9f/xac EGYPTIAN HIEROGLYPH-137EC
+<U000137ED> /xf0/x93/x9f/xad EGYPTIAN HIEROGLYPH-137ED
+<U000137EE> /xf0/x93/x9f/xae EGYPTIAN HIEROGLYPH-137EE
+<U000137EF> /xf0/x93/x9f/xaf EGYPTIAN HIEROGLYPH-137EF
+<U000137F0> /xf0/x93/x9f/xb0 EGYPTIAN HIEROGLYPH-137F0
+<U000137F1> /xf0/x93/x9f/xb1 EGYPTIAN HIEROGLYPH-137F1
+<U000137F2> /xf0/x93/x9f/xb2 EGYPTIAN HIEROGLYPH-137F2
+<U000137F3> /xf0/x93/x9f/xb3 EGYPTIAN HIEROGLYPH-137F3
+<U000137F4> /xf0/x93/x9f/xb4 EGYPTIAN HIEROGLYPH-137F4
+<U000137F5> /xf0/x93/x9f/xb5 EGYPTIAN HIEROGLYPH-137F5
+<U000137F6> /xf0/x93/x9f/xb6 EGYPTIAN HIEROGLYPH-137F6
+<U000137F7> /xf0/x93/x9f/xb7 EGYPTIAN HIEROGLYPH-137F7
+<U000137F8> /xf0/x93/x9f/xb8 EGYPTIAN HIEROGLYPH-137F8
+<U000137F9> /xf0/x93/x9f/xb9 EGYPTIAN HIEROGLYPH-137F9
+<U000137FA> /xf0/x93/x9f/xba EGYPTIAN HIEROGLYPH-137FA
+<U000137FB> /xf0/x93/x9f/xbb EGYPTIAN HIEROGLYPH-137FB
+<U000137FC> /xf0/x93/x9f/xbc EGYPTIAN HIEROGLYPH-137FC
+<U000137FD> /xf0/x93/x9f/xbd EGYPTIAN HIEROGLYPH-137FD
+<U000137FE> /xf0/x93/x9f/xbe EGYPTIAN HIEROGLYPH-137FE
+<U000137FF> /xf0/x93/x9f/xbf EGYPTIAN HIEROGLYPH-137FF
+<U00013800> /xf0/x93/xa0/x80 EGYPTIAN HIEROGLYPH-13800
+<U00013801> /xf0/x93/xa0/x81 EGYPTIAN HIEROGLYPH-13801
+<U00013802> /xf0/x93/xa0/x82 EGYPTIAN HIEROGLYPH-13802
+<U00013803> /xf0/x93/xa0/x83 EGYPTIAN HIEROGLYPH-13803
+<U00013804> /xf0/x93/xa0/x84 EGYPTIAN HIEROGLYPH-13804
+<U00013805> /xf0/x93/xa0/x85 EGYPTIAN HIEROGLYPH-13805
+<U00013806> /xf0/x93/xa0/x86 EGYPTIAN HIEROGLYPH-13806
+<U00013807> /xf0/x93/xa0/x87 EGYPTIAN HIEROGLYPH-13807
+<U00013808> /xf0/x93/xa0/x88 EGYPTIAN HIEROGLYPH-13808
+<U00013809> /xf0/x93/xa0/x89 EGYPTIAN HIEROGLYPH-13809
+<U0001380A> /xf0/x93/xa0/x8a EGYPTIAN HIEROGLYPH-1380A
+<U0001380B> /xf0/x93/xa0/x8b EGYPTIAN HIEROGLYPH-1380B
+<U0001380C> /xf0/x93/xa0/x8c EGYPTIAN HIEROGLYPH-1380C
+<U0001380D> /xf0/x93/xa0/x8d EGYPTIAN HIEROGLYPH-1380D
+<U0001380E> /xf0/x93/xa0/x8e EGYPTIAN HIEROGLYPH-1380E
+<U0001380F> /xf0/x93/xa0/x8f EGYPTIAN HIEROGLYPH-1380F
+<U00013810> /xf0/x93/xa0/x90 EGYPTIAN HIEROGLYPH-13810
+<U00013811> /xf0/x93/xa0/x91 EGYPTIAN HIEROGLYPH-13811
+<U00013812> /xf0/x93/xa0/x92 EGYPTIAN HIEROGLYPH-13812
+<U00013813> /xf0/x93/xa0/x93 EGYPTIAN HIEROGLYPH-13813
+<U00013814> /xf0/x93/xa0/x94 EGYPTIAN HIEROGLYPH-13814
+<U00013815> /xf0/x93/xa0/x95 EGYPTIAN HIEROGLYPH-13815
+<U00013816> /xf0/x93/xa0/x96 EGYPTIAN HIEROGLYPH-13816
+<U00013817> /xf0/x93/xa0/x97 EGYPTIAN HIEROGLYPH-13817
+<U00013818> /xf0/x93/xa0/x98 EGYPTIAN HIEROGLYPH-13818
+<U00013819> /xf0/x93/xa0/x99 EGYPTIAN HIEROGLYPH-13819
+<U0001381A> /xf0/x93/xa0/x9a EGYPTIAN HIEROGLYPH-1381A
+<U0001381B> /xf0/x93/xa0/x9b EGYPTIAN HIEROGLYPH-1381B
+<U0001381C> /xf0/x93/xa0/x9c EGYPTIAN HIEROGLYPH-1381C
+<U0001381D> /xf0/x93/xa0/x9d EGYPTIAN HIEROGLYPH-1381D
+<U0001381E> /xf0/x93/xa0/x9e EGYPTIAN HIEROGLYPH-1381E
+<U0001381F> /xf0/x93/xa0/x9f EGYPTIAN HIEROGLYPH-1381F
+<U00013820> /xf0/x93/xa0/xa0 EGYPTIAN HIEROGLYPH-13820
+<U00013821> /xf0/x93/xa0/xa1 EGYPTIAN HIEROGLYPH-13821
+<U00013822> /xf0/x93/xa0/xa2 EGYPTIAN HIEROGLYPH-13822
+<U00013823> /xf0/x93/xa0/xa3 EGYPTIAN HIEROGLYPH-13823
+<U00013824> /xf0/x93/xa0/xa4 EGYPTIAN HIEROGLYPH-13824
+<U00013825> /xf0/x93/xa0/xa5 EGYPTIAN HIEROGLYPH-13825
+<U00013826> /xf0/x93/xa0/xa6 EGYPTIAN HIEROGLYPH-13826
+<U00013827> /xf0/x93/xa0/xa7 EGYPTIAN HIEROGLYPH-13827
+<U00013828> /xf0/x93/xa0/xa8 EGYPTIAN HIEROGLYPH-13828
+<U00013829> /xf0/x93/xa0/xa9 EGYPTIAN HIEROGLYPH-13829
+<U0001382A> /xf0/x93/xa0/xaa EGYPTIAN HIEROGLYPH-1382A
+<U0001382B> /xf0/x93/xa0/xab EGYPTIAN HIEROGLYPH-1382B
+<U0001382C> /xf0/x93/xa0/xac EGYPTIAN HIEROGLYPH-1382C
+<U0001382D> /xf0/x93/xa0/xad EGYPTIAN HIEROGLYPH-1382D
+<U0001382E> /xf0/x93/xa0/xae EGYPTIAN HIEROGLYPH-1382E
+<U0001382F> /xf0/x93/xa0/xaf EGYPTIAN HIEROGLYPH-1382F
+<U00013830> /xf0/x93/xa0/xb0 EGYPTIAN HIEROGLYPH-13830
+<U00013831> /xf0/x93/xa0/xb1 EGYPTIAN HIEROGLYPH-13831
+<U00013832> /xf0/x93/xa0/xb2 EGYPTIAN HIEROGLYPH-13832
+<U00013833> /xf0/x93/xa0/xb3 EGYPTIAN HIEROGLYPH-13833
+<U00013834> /xf0/x93/xa0/xb4 EGYPTIAN HIEROGLYPH-13834
+<U00013835> /xf0/x93/xa0/xb5 EGYPTIAN HIEROGLYPH-13835
+<U00013836> /xf0/x93/xa0/xb6 EGYPTIAN HIEROGLYPH-13836
+<U00013837> /xf0/x93/xa0/xb7 EGYPTIAN HIEROGLYPH-13837
+<U00013838> /xf0/x93/xa0/xb8 EGYPTIAN HIEROGLYPH-13838
+<U00013839> /xf0/x93/xa0/xb9 EGYPTIAN HIEROGLYPH-13839
+<U0001383A> /xf0/x93/xa0/xba EGYPTIAN HIEROGLYPH-1383A
+<U0001383B> /xf0/x93/xa0/xbb EGYPTIAN HIEROGLYPH-1383B
+<U0001383C> /xf0/x93/xa0/xbc EGYPTIAN HIEROGLYPH-1383C
+<U0001383D> /xf0/x93/xa0/xbd EGYPTIAN HIEROGLYPH-1383D
+<U0001383E> /xf0/x93/xa0/xbe EGYPTIAN HIEROGLYPH-1383E
+<U0001383F> /xf0/x93/xa0/xbf EGYPTIAN HIEROGLYPH-1383F
+<U00013840> /xf0/x93/xa1/x80 EGYPTIAN HIEROGLYPH-13840
+<U00013841> /xf0/x93/xa1/x81 EGYPTIAN HIEROGLYPH-13841
+<U00013842> /xf0/x93/xa1/x82 EGYPTIAN HIEROGLYPH-13842
+<U00013843> /xf0/x93/xa1/x83 EGYPTIAN HIEROGLYPH-13843
+<U00013844> /xf0/x93/xa1/x84 EGYPTIAN HIEROGLYPH-13844
+<U00013845> /xf0/x93/xa1/x85 EGYPTIAN HIEROGLYPH-13845
+<U00013846> /xf0/x93/xa1/x86 EGYPTIAN HIEROGLYPH-13846
+<U00013847> /xf0/x93/xa1/x87 EGYPTIAN HIEROGLYPH-13847
+<U00013848> /xf0/x93/xa1/x88 EGYPTIAN HIEROGLYPH-13848
+<U00013849> /xf0/x93/xa1/x89 EGYPTIAN HIEROGLYPH-13849
+<U0001384A> /xf0/x93/xa1/x8a EGYPTIAN HIEROGLYPH-1384A
+<U0001384B> /xf0/x93/xa1/x8b EGYPTIAN HIEROGLYPH-1384B
+<U0001384C> /xf0/x93/xa1/x8c EGYPTIAN HIEROGLYPH-1384C
+<U0001384D> /xf0/x93/xa1/x8d EGYPTIAN HIEROGLYPH-1384D
+<U0001384E> /xf0/x93/xa1/x8e EGYPTIAN HIEROGLYPH-1384E
+<U0001384F> /xf0/x93/xa1/x8f EGYPTIAN HIEROGLYPH-1384F
+<U00013850> /xf0/x93/xa1/x90 EGYPTIAN HIEROGLYPH-13850
+<U00013851> /xf0/x93/xa1/x91 EGYPTIAN HIEROGLYPH-13851
+<U00013852> /xf0/x93/xa1/x92 EGYPTIAN HIEROGLYPH-13852
+<U00013853> /xf0/x93/xa1/x93 EGYPTIAN HIEROGLYPH-13853
+<U00013854> /xf0/x93/xa1/x94 EGYPTIAN HIEROGLYPH-13854
+<U00013855> /xf0/x93/xa1/x95 EGYPTIAN HIEROGLYPH-13855
+<U00013856> /xf0/x93/xa1/x96 EGYPTIAN HIEROGLYPH-13856
+<U00013857> /xf0/x93/xa1/x97 EGYPTIAN HIEROGLYPH-13857
+<U00013858> /xf0/x93/xa1/x98 EGYPTIAN HIEROGLYPH-13858
+<U00013859> /xf0/x93/xa1/x99 EGYPTIAN HIEROGLYPH-13859
+<U0001385A> /xf0/x93/xa1/x9a EGYPTIAN HIEROGLYPH-1385A
+<U0001385B> /xf0/x93/xa1/x9b EGYPTIAN HIEROGLYPH-1385B
+<U0001385C> /xf0/x93/xa1/x9c EGYPTIAN HIEROGLYPH-1385C
+<U0001385D> /xf0/x93/xa1/x9d EGYPTIAN HIEROGLYPH-1385D
+<U0001385E> /xf0/x93/xa1/x9e EGYPTIAN HIEROGLYPH-1385E
+<U0001385F> /xf0/x93/xa1/x9f EGYPTIAN HIEROGLYPH-1385F
+<U00013860> /xf0/x93/xa1/xa0 EGYPTIAN HIEROGLYPH-13860
+<U00013861> /xf0/x93/xa1/xa1 EGYPTIAN HIEROGLYPH-13861
+<U00013862> /xf0/x93/xa1/xa2 EGYPTIAN HIEROGLYPH-13862
+<U00013863> /xf0/x93/xa1/xa3 EGYPTIAN HIEROGLYPH-13863
+<U00013864> /xf0/x93/xa1/xa4 EGYPTIAN HIEROGLYPH-13864
+<U00013865> /xf0/x93/xa1/xa5 EGYPTIAN HIEROGLYPH-13865
+<U00013866> /xf0/x93/xa1/xa6 EGYPTIAN HIEROGLYPH-13866
+<U00013867> /xf0/x93/xa1/xa7 EGYPTIAN HIEROGLYPH-13867
+<U00013868> /xf0/x93/xa1/xa8 EGYPTIAN HIEROGLYPH-13868
+<U00013869> /xf0/x93/xa1/xa9 EGYPTIAN HIEROGLYPH-13869
+<U0001386A> /xf0/x93/xa1/xaa EGYPTIAN HIEROGLYPH-1386A
+<U0001386B> /xf0/x93/xa1/xab EGYPTIAN HIEROGLYPH-1386B
+<U0001386C> /xf0/x93/xa1/xac EGYPTIAN HIEROGLYPH-1386C
+<U0001386D> /xf0/x93/xa1/xad EGYPTIAN HIEROGLYPH-1386D
+<U0001386E> /xf0/x93/xa1/xae EGYPTIAN HIEROGLYPH-1386E
+<U0001386F> /xf0/x93/xa1/xaf EGYPTIAN HIEROGLYPH-1386F
+<U00013870> /xf0/x93/xa1/xb0 EGYPTIAN HIEROGLYPH-13870
+<U00013871> /xf0/x93/xa1/xb1 EGYPTIAN HIEROGLYPH-13871
+<U00013872> /xf0/x93/xa1/xb2 EGYPTIAN HIEROGLYPH-13872
+<U00013873> /xf0/x93/xa1/xb3 EGYPTIAN HIEROGLYPH-13873
+<U00013874> /xf0/x93/xa1/xb4 EGYPTIAN HIEROGLYPH-13874
+<U00013875> /xf0/x93/xa1/xb5 EGYPTIAN HIEROGLYPH-13875
+<U00013876> /xf0/x93/xa1/xb6 EGYPTIAN HIEROGLYPH-13876
+<U00013877> /xf0/x93/xa1/xb7 EGYPTIAN HIEROGLYPH-13877
+<U00013878> /xf0/x93/xa1/xb8 EGYPTIAN HIEROGLYPH-13878
+<U00013879> /xf0/x93/xa1/xb9 EGYPTIAN HIEROGLYPH-13879
+<U0001387A> /xf0/x93/xa1/xba EGYPTIAN HIEROGLYPH-1387A
+<U0001387B> /xf0/x93/xa1/xbb EGYPTIAN HIEROGLYPH-1387B
+<U0001387C> /xf0/x93/xa1/xbc EGYPTIAN HIEROGLYPH-1387C
+<U0001387D> /xf0/x93/xa1/xbd EGYPTIAN HIEROGLYPH-1387D
+<U0001387E> /xf0/x93/xa1/xbe EGYPTIAN HIEROGLYPH-1387E
+<U0001387F> /xf0/x93/xa1/xbf EGYPTIAN HIEROGLYPH-1387F
+<U00013880> /xf0/x93/xa2/x80 EGYPTIAN HIEROGLYPH-13880
+<U00013881> /xf0/x93/xa2/x81 EGYPTIAN HIEROGLYPH-13881
+<U00013882> /xf0/x93/xa2/x82 EGYPTIAN HIEROGLYPH-13882
+<U00013883> /xf0/x93/xa2/x83 EGYPTIAN HIEROGLYPH-13883
+<U00013884> /xf0/x93/xa2/x84 EGYPTIAN HIEROGLYPH-13884
+<U00013885> /xf0/x93/xa2/x85 EGYPTIAN HIEROGLYPH-13885
+<U00013886> /xf0/x93/xa2/x86 EGYPTIAN HIEROGLYPH-13886
+<U00013887> /xf0/x93/xa2/x87 EGYPTIAN HIEROGLYPH-13887
+<U00013888> /xf0/x93/xa2/x88 EGYPTIAN HIEROGLYPH-13888
+<U00013889> /xf0/x93/xa2/x89 EGYPTIAN HIEROGLYPH-13889
+<U0001388A> /xf0/x93/xa2/x8a EGYPTIAN HIEROGLYPH-1388A
+<U0001388B> /xf0/x93/xa2/x8b EGYPTIAN HIEROGLYPH-1388B
+<U0001388C> /xf0/x93/xa2/x8c EGYPTIAN HIEROGLYPH-1388C
+<U0001388D> /xf0/x93/xa2/x8d EGYPTIAN HIEROGLYPH-1388D
+<U0001388E> /xf0/x93/xa2/x8e EGYPTIAN HIEROGLYPH-1388E
+<U0001388F> /xf0/x93/xa2/x8f EGYPTIAN HIEROGLYPH-1388F
+<U00013890> /xf0/x93/xa2/x90 EGYPTIAN HIEROGLYPH-13890
+<U00013891> /xf0/x93/xa2/x91 EGYPTIAN HIEROGLYPH-13891
+<U00013892> /xf0/x93/xa2/x92 EGYPTIAN HIEROGLYPH-13892
+<U00013893> /xf0/x93/xa2/x93 EGYPTIAN HIEROGLYPH-13893
+<U00013894> /xf0/x93/xa2/x94 EGYPTIAN HIEROGLYPH-13894
+<U00013895> /xf0/x93/xa2/x95 EGYPTIAN HIEROGLYPH-13895
+<U00013896> /xf0/x93/xa2/x96 EGYPTIAN HIEROGLYPH-13896
+<U00013897> /xf0/x93/xa2/x97 EGYPTIAN HIEROGLYPH-13897
+<U00013898> /xf0/x93/xa2/x98 EGYPTIAN HIEROGLYPH-13898
+<U00013899> /xf0/x93/xa2/x99 EGYPTIAN HIEROGLYPH-13899
+<U0001389A> /xf0/x93/xa2/x9a EGYPTIAN HIEROGLYPH-1389A
+<U0001389B> /xf0/x93/xa2/x9b EGYPTIAN HIEROGLYPH-1389B
+<U0001389C> /xf0/x93/xa2/x9c EGYPTIAN HIEROGLYPH-1389C
+<U0001389D> /xf0/x93/xa2/x9d EGYPTIAN HIEROGLYPH-1389D
+<U0001389E> /xf0/x93/xa2/x9e EGYPTIAN HIEROGLYPH-1389E
+<U0001389F> /xf0/x93/xa2/x9f EGYPTIAN HIEROGLYPH-1389F
+<U000138A0> /xf0/x93/xa2/xa0 EGYPTIAN HIEROGLYPH-138A0
+<U000138A1> /xf0/x93/xa2/xa1 EGYPTIAN HIEROGLYPH-138A1
+<U000138A2> /xf0/x93/xa2/xa2 EGYPTIAN HIEROGLYPH-138A2
+<U000138A3> /xf0/x93/xa2/xa3 EGYPTIAN HIEROGLYPH-138A3
+<U000138A4> /xf0/x93/xa2/xa4 EGYPTIAN HIEROGLYPH-138A4
+<U000138A5> /xf0/x93/xa2/xa5 EGYPTIAN HIEROGLYPH-138A5
+<U000138A6> /xf0/x93/xa2/xa6 EGYPTIAN HIEROGLYPH-138A6
+<U000138A7> /xf0/x93/xa2/xa7 EGYPTIAN HIEROGLYPH-138A7
+<U000138A8> /xf0/x93/xa2/xa8 EGYPTIAN HIEROGLYPH-138A8
+<U000138A9> /xf0/x93/xa2/xa9 EGYPTIAN HIEROGLYPH-138A9
+<U000138AA> /xf0/x93/xa2/xaa EGYPTIAN HIEROGLYPH-138AA
+<U000138AB> /xf0/x93/xa2/xab EGYPTIAN HIEROGLYPH-138AB
+<U000138AC> /xf0/x93/xa2/xac EGYPTIAN HIEROGLYPH-138AC
+<U000138AD> /xf0/x93/xa2/xad EGYPTIAN HIEROGLYPH-138AD
+<U000138AE> /xf0/x93/xa2/xae EGYPTIAN HIEROGLYPH-138AE
+<U000138AF> /xf0/x93/xa2/xaf EGYPTIAN HIEROGLYPH-138AF
+<U000138B0> /xf0/x93/xa2/xb0 EGYPTIAN HIEROGLYPH-138B0
+<U000138B1> /xf0/x93/xa2/xb1 EGYPTIAN HIEROGLYPH-138B1
+<U000138B2> /xf0/x93/xa2/xb2 EGYPTIAN HIEROGLYPH-138B2
+<U000138B3> /xf0/x93/xa2/xb3 EGYPTIAN HIEROGLYPH-138B3
+<U000138B4> /xf0/x93/xa2/xb4 EGYPTIAN HIEROGLYPH-138B4
+<U000138B5> /xf0/x93/xa2/xb5 EGYPTIAN HIEROGLYPH-138B5
+<U000138B6> /xf0/x93/xa2/xb6 EGYPTIAN HIEROGLYPH-138B6
+<U000138B7> /xf0/x93/xa2/xb7 EGYPTIAN HIEROGLYPH-138B7
+<U000138B8> /xf0/x93/xa2/xb8 EGYPTIAN HIEROGLYPH-138B8
+<U000138B9> /xf0/x93/xa2/xb9 EGYPTIAN HIEROGLYPH-138B9
+<U000138BA> /xf0/x93/xa2/xba EGYPTIAN HIEROGLYPH-138BA
+<U000138BB> /xf0/x93/xa2/xbb EGYPTIAN HIEROGLYPH-138BB
+<U000138BC> /xf0/x93/xa2/xbc EGYPTIAN HIEROGLYPH-138BC
+<U000138BD> /xf0/x93/xa2/xbd EGYPTIAN HIEROGLYPH-138BD
+<U000138BE> /xf0/x93/xa2/xbe EGYPTIAN HIEROGLYPH-138BE
+<U000138BF> /xf0/x93/xa2/xbf EGYPTIAN HIEROGLYPH-138BF
+<U000138C0> /xf0/x93/xa3/x80 EGYPTIAN HIEROGLYPH-138C0
+<U000138C1> /xf0/x93/xa3/x81 EGYPTIAN HIEROGLYPH-138C1
+<U000138C2> /xf0/x93/xa3/x82 EGYPTIAN HIEROGLYPH-138C2
+<U000138C3> /xf0/x93/xa3/x83 EGYPTIAN HIEROGLYPH-138C3
+<U000138C4> /xf0/x93/xa3/x84 EGYPTIAN HIEROGLYPH-138C4
+<U000138C5> /xf0/x93/xa3/x85 EGYPTIAN HIEROGLYPH-138C5
+<U000138C6> /xf0/x93/xa3/x86 EGYPTIAN HIEROGLYPH-138C6
+<U000138C7> /xf0/x93/xa3/x87 EGYPTIAN HIEROGLYPH-138C7
+<U000138C8> /xf0/x93/xa3/x88 EGYPTIAN HIEROGLYPH-138C8
+<U000138C9> /xf0/x93/xa3/x89 EGYPTIAN HIEROGLYPH-138C9
+<U000138CA> /xf0/x93/xa3/x8a EGYPTIAN HIEROGLYPH-138CA
+<U000138CB> /xf0/x93/xa3/x8b EGYPTIAN HIEROGLYPH-138CB
+<U000138CC> /xf0/x93/xa3/x8c EGYPTIAN HIEROGLYPH-138CC
+<U000138CD> /xf0/x93/xa3/x8d EGYPTIAN HIEROGLYPH-138CD
+<U000138CE> /xf0/x93/xa3/x8e EGYPTIAN HIEROGLYPH-138CE
+<U000138CF> /xf0/x93/xa3/x8f EGYPTIAN HIEROGLYPH-138CF
+<U000138D0> /xf0/x93/xa3/x90 EGYPTIAN HIEROGLYPH-138D0
+<U000138D1> /xf0/x93/xa3/x91 EGYPTIAN HIEROGLYPH-138D1
+<U000138D2> /xf0/x93/xa3/x92 EGYPTIAN HIEROGLYPH-138D2
+<U000138D3> /xf0/x93/xa3/x93 EGYPTIAN HIEROGLYPH-138D3
+<U000138D4> /xf0/x93/xa3/x94 EGYPTIAN HIEROGLYPH-138D4
+<U000138D5> /xf0/x93/xa3/x95 EGYPTIAN HIEROGLYPH-138D5
+<U000138D6> /xf0/x93/xa3/x96 EGYPTIAN HIEROGLYPH-138D6
+<U000138D7> /xf0/x93/xa3/x97 EGYPTIAN HIEROGLYPH-138D7
+<U000138D8> /xf0/x93/xa3/x98 EGYPTIAN HIEROGLYPH-138D8
+<U000138D9> /xf0/x93/xa3/x99 EGYPTIAN HIEROGLYPH-138D9
+<U000138DA> /xf0/x93/xa3/x9a EGYPTIAN HIEROGLYPH-138DA
+<U000138DB> /xf0/x93/xa3/x9b EGYPTIAN HIEROGLYPH-138DB
+<U000138DC> /xf0/x93/xa3/x9c EGYPTIAN HIEROGLYPH-138DC
+<U000138DD> /xf0/x93/xa3/x9d EGYPTIAN HIEROGLYPH-138DD
+<U000138DE> /xf0/x93/xa3/x9e EGYPTIAN HIEROGLYPH-138DE
+<U000138DF> /xf0/x93/xa3/x9f EGYPTIAN HIEROGLYPH-138DF
+<U000138E0> /xf0/x93/xa3/xa0 EGYPTIAN HIEROGLYPH-138E0
+<U000138E1> /xf0/x93/xa3/xa1 EGYPTIAN HIEROGLYPH-138E1
+<U000138E2> /xf0/x93/xa3/xa2 EGYPTIAN HIEROGLYPH-138E2
+<U000138E3> /xf0/x93/xa3/xa3 EGYPTIAN HIEROGLYPH-138E3
+<U000138E4> /xf0/x93/xa3/xa4 EGYPTIAN HIEROGLYPH-138E4
+<U000138E5> /xf0/x93/xa3/xa5 EGYPTIAN HIEROGLYPH-138E5
+<U000138E6> /xf0/x93/xa3/xa6 EGYPTIAN HIEROGLYPH-138E6
+<U000138E7> /xf0/x93/xa3/xa7 EGYPTIAN HIEROGLYPH-138E7
+<U000138E8> /xf0/x93/xa3/xa8 EGYPTIAN HIEROGLYPH-138E8
+<U000138E9> /xf0/x93/xa3/xa9 EGYPTIAN HIEROGLYPH-138E9
+<U000138EA> /xf0/x93/xa3/xaa EGYPTIAN HIEROGLYPH-138EA
+<U000138EB> /xf0/x93/xa3/xab EGYPTIAN HIEROGLYPH-138EB
+<U000138EC> /xf0/x93/xa3/xac EGYPTIAN HIEROGLYPH-138EC
+<U000138ED> /xf0/x93/xa3/xad EGYPTIAN HIEROGLYPH-138ED
+<U000138EE> /xf0/x93/xa3/xae EGYPTIAN HIEROGLYPH-138EE
+<U000138EF> /xf0/x93/xa3/xaf EGYPTIAN HIEROGLYPH-138EF
+<U000138F0> /xf0/x93/xa3/xb0 EGYPTIAN HIEROGLYPH-138F0
+<U000138F1> /xf0/x93/xa3/xb1 EGYPTIAN HIEROGLYPH-138F1
+<U000138F2> /xf0/x93/xa3/xb2 EGYPTIAN HIEROGLYPH-138F2
+<U000138F3> /xf0/x93/xa3/xb3 EGYPTIAN HIEROGLYPH-138F3
+<U000138F4> /xf0/x93/xa3/xb4 EGYPTIAN HIEROGLYPH-138F4
+<U000138F5> /xf0/x93/xa3/xb5 EGYPTIAN HIEROGLYPH-138F5
+<U000138F6> /xf0/x93/xa3/xb6 EGYPTIAN HIEROGLYPH-138F6
+<U000138F7> /xf0/x93/xa3/xb7 EGYPTIAN HIEROGLYPH-138F7
+<U000138F8> /xf0/x93/xa3/xb8 EGYPTIAN HIEROGLYPH-138F8
+<U000138F9> /xf0/x93/xa3/xb9 EGYPTIAN HIEROGLYPH-138F9
+<U000138FA> /xf0/x93/xa3/xba EGYPTIAN HIEROGLYPH-138FA
+<U000138FB> /xf0/x93/xa3/xbb EGYPTIAN HIEROGLYPH-138FB
+<U000138FC> /xf0/x93/xa3/xbc EGYPTIAN HIEROGLYPH-138FC
+<U000138FD> /xf0/x93/xa3/xbd EGYPTIAN HIEROGLYPH-138FD
+<U000138FE> /xf0/x93/xa3/xbe EGYPTIAN HIEROGLYPH-138FE
+<U000138FF> /xf0/x93/xa3/xbf EGYPTIAN HIEROGLYPH-138FF
+<U00013900> /xf0/x93/xa4/x80 EGYPTIAN HIEROGLYPH-13900
+<U00013901> /xf0/x93/xa4/x81 EGYPTIAN HIEROGLYPH-13901
+<U00013902> /xf0/x93/xa4/x82 EGYPTIAN HIEROGLYPH-13902
+<U00013903> /xf0/x93/xa4/x83 EGYPTIAN HIEROGLYPH-13903
+<U00013904> /xf0/x93/xa4/x84 EGYPTIAN HIEROGLYPH-13904
+<U00013905> /xf0/x93/xa4/x85 EGYPTIAN HIEROGLYPH-13905
+<U00013906> /xf0/x93/xa4/x86 EGYPTIAN HIEROGLYPH-13906
+<U00013907> /xf0/x93/xa4/x87 EGYPTIAN HIEROGLYPH-13907
+<U00013908> /xf0/x93/xa4/x88 EGYPTIAN HIEROGLYPH-13908
+<U00013909> /xf0/x93/xa4/x89 EGYPTIAN HIEROGLYPH-13909
+<U0001390A> /xf0/x93/xa4/x8a EGYPTIAN HIEROGLYPH-1390A
+<U0001390B> /xf0/x93/xa4/x8b EGYPTIAN HIEROGLYPH-1390B
+<U0001390C> /xf0/x93/xa4/x8c EGYPTIAN HIEROGLYPH-1390C
+<U0001390D> /xf0/x93/xa4/x8d EGYPTIAN HIEROGLYPH-1390D
+<U0001390E> /xf0/x93/xa4/x8e EGYPTIAN HIEROGLYPH-1390E
+<U0001390F> /xf0/x93/xa4/x8f EGYPTIAN HIEROGLYPH-1390F
+<U00013910> /xf0/x93/xa4/x90 EGYPTIAN HIEROGLYPH-13910
+<U00013911> /xf0/x93/xa4/x91 EGYPTIAN HIEROGLYPH-13911
+<U00013912> /xf0/x93/xa4/x92 EGYPTIAN HIEROGLYPH-13912
+<U00013913> /xf0/x93/xa4/x93 EGYPTIAN HIEROGLYPH-13913
+<U00013914> /xf0/x93/xa4/x94 EGYPTIAN HIEROGLYPH-13914
+<U00013915> /xf0/x93/xa4/x95 EGYPTIAN HIEROGLYPH-13915
+<U00013916> /xf0/x93/xa4/x96 EGYPTIAN HIEROGLYPH-13916
+<U00013917> /xf0/x93/xa4/x97 EGYPTIAN HIEROGLYPH-13917
+<U00013918> /xf0/x93/xa4/x98 EGYPTIAN HIEROGLYPH-13918
+<U00013919> /xf0/x93/xa4/x99 EGYPTIAN HIEROGLYPH-13919
+<U0001391A> /xf0/x93/xa4/x9a EGYPTIAN HIEROGLYPH-1391A
+<U0001391B> /xf0/x93/xa4/x9b EGYPTIAN HIEROGLYPH-1391B
+<U0001391C> /xf0/x93/xa4/x9c EGYPTIAN HIEROGLYPH-1391C
+<U0001391D> /xf0/x93/xa4/x9d EGYPTIAN HIEROGLYPH-1391D
+<U0001391E> /xf0/x93/xa4/x9e EGYPTIAN HIEROGLYPH-1391E
+<U0001391F> /xf0/x93/xa4/x9f EGYPTIAN HIEROGLYPH-1391F
+<U00013920> /xf0/x93/xa4/xa0 EGYPTIAN HIEROGLYPH-13920
+<U00013921> /xf0/x93/xa4/xa1 EGYPTIAN HIEROGLYPH-13921
+<U00013922> /xf0/x93/xa4/xa2 EGYPTIAN HIEROGLYPH-13922
+<U00013923> /xf0/x93/xa4/xa3 EGYPTIAN HIEROGLYPH-13923
+<U00013924> /xf0/x93/xa4/xa4 EGYPTIAN HIEROGLYPH-13924
+<U00013925> /xf0/x93/xa4/xa5 EGYPTIAN HIEROGLYPH-13925
+<U00013926> /xf0/x93/xa4/xa6 EGYPTIAN HIEROGLYPH-13926
+<U00013927> /xf0/x93/xa4/xa7 EGYPTIAN HIEROGLYPH-13927
+<U00013928> /xf0/x93/xa4/xa8 EGYPTIAN HIEROGLYPH-13928
+<U00013929> /xf0/x93/xa4/xa9 EGYPTIAN HIEROGLYPH-13929
+<U0001392A> /xf0/x93/xa4/xaa EGYPTIAN HIEROGLYPH-1392A
+<U0001392B> /xf0/x93/xa4/xab EGYPTIAN HIEROGLYPH-1392B
+<U0001392C> /xf0/x93/xa4/xac EGYPTIAN HIEROGLYPH-1392C
+<U0001392D> /xf0/x93/xa4/xad EGYPTIAN HIEROGLYPH-1392D
+<U0001392E> /xf0/x93/xa4/xae EGYPTIAN HIEROGLYPH-1392E
+<U0001392F> /xf0/x93/xa4/xaf EGYPTIAN HIEROGLYPH-1392F
+<U00013930> /xf0/x93/xa4/xb0 EGYPTIAN HIEROGLYPH-13930
+<U00013931> /xf0/x93/xa4/xb1 EGYPTIAN HIEROGLYPH-13931
+<U00013932> /xf0/x93/xa4/xb2 EGYPTIAN HIEROGLYPH-13932
+<U00013933> /xf0/x93/xa4/xb3 EGYPTIAN HIEROGLYPH-13933
+<U00013934> /xf0/x93/xa4/xb4 EGYPTIAN HIEROGLYPH-13934
+<U00013935> /xf0/x93/xa4/xb5 EGYPTIAN HIEROGLYPH-13935
+<U00013936> /xf0/x93/xa4/xb6 EGYPTIAN HIEROGLYPH-13936
+<U00013937> /xf0/x93/xa4/xb7 EGYPTIAN HIEROGLYPH-13937
+<U00013938> /xf0/x93/xa4/xb8 EGYPTIAN HIEROGLYPH-13938
+<U00013939> /xf0/x93/xa4/xb9 EGYPTIAN HIEROGLYPH-13939
+<U0001393A> /xf0/x93/xa4/xba EGYPTIAN HIEROGLYPH-1393A
+<U0001393B> /xf0/x93/xa4/xbb EGYPTIAN HIEROGLYPH-1393B
+<U0001393C> /xf0/x93/xa4/xbc EGYPTIAN HIEROGLYPH-1393C
+<U0001393D> /xf0/x93/xa4/xbd EGYPTIAN HIEROGLYPH-1393D
+<U0001393E> /xf0/x93/xa4/xbe EGYPTIAN HIEROGLYPH-1393E
+<U0001393F> /xf0/x93/xa4/xbf EGYPTIAN HIEROGLYPH-1393F
+<U00013940> /xf0/x93/xa5/x80 EGYPTIAN HIEROGLYPH-13940
+<U00013941> /xf0/x93/xa5/x81 EGYPTIAN HIEROGLYPH-13941
+<U00013942> /xf0/x93/xa5/x82 EGYPTIAN HIEROGLYPH-13942
+<U00013943> /xf0/x93/xa5/x83 EGYPTIAN HIEROGLYPH-13943
+<U00013944> /xf0/x93/xa5/x84 EGYPTIAN HIEROGLYPH-13944
+<U00013945> /xf0/x93/xa5/x85 EGYPTIAN HIEROGLYPH-13945
+<U00013946> /xf0/x93/xa5/x86 EGYPTIAN HIEROGLYPH-13946
+<U00013947> /xf0/x93/xa5/x87 EGYPTIAN HIEROGLYPH-13947
+<U00013948> /xf0/x93/xa5/x88 EGYPTIAN HIEROGLYPH-13948
+<U00013949> /xf0/x93/xa5/x89 EGYPTIAN HIEROGLYPH-13949
+<U0001394A> /xf0/x93/xa5/x8a EGYPTIAN HIEROGLYPH-1394A
+<U0001394B> /xf0/x93/xa5/x8b EGYPTIAN HIEROGLYPH-1394B
+<U0001394C> /xf0/x93/xa5/x8c EGYPTIAN HIEROGLYPH-1394C
+<U0001394D> /xf0/x93/xa5/x8d EGYPTIAN HIEROGLYPH-1394D
+<U0001394E> /xf0/x93/xa5/x8e EGYPTIAN HIEROGLYPH-1394E
+<U0001394F> /xf0/x93/xa5/x8f EGYPTIAN HIEROGLYPH-1394F
+<U00013950> /xf0/x93/xa5/x90 EGYPTIAN HIEROGLYPH-13950
+<U00013951> /xf0/x93/xa5/x91 EGYPTIAN HIEROGLYPH-13951
+<U00013952> /xf0/x93/xa5/x92 EGYPTIAN HIEROGLYPH-13952
+<U00013953> /xf0/x93/xa5/x93 EGYPTIAN HIEROGLYPH-13953
+<U00013954> /xf0/x93/xa5/x94 EGYPTIAN HIEROGLYPH-13954
+<U00013955> /xf0/x93/xa5/x95 EGYPTIAN HIEROGLYPH-13955
+<U00013956> /xf0/x93/xa5/x96 EGYPTIAN HIEROGLYPH-13956
+<U00013957> /xf0/x93/xa5/x97 EGYPTIAN HIEROGLYPH-13957
+<U00013958> /xf0/x93/xa5/x98 EGYPTIAN HIEROGLYPH-13958
+<U00013959> /xf0/x93/xa5/x99 EGYPTIAN HIEROGLYPH-13959
+<U0001395A> /xf0/x93/xa5/x9a EGYPTIAN HIEROGLYPH-1395A
+<U0001395B> /xf0/x93/xa5/x9b EGYPTIAN HIEROGLYPH-1395B
+<U0001395C> /xf0/x93/xa5/x9c EGYPTIAN HIEROGLYPH-1395C
+<U0001395D> /xf0/x93/xa5/x9d EGYPTIAN HIEROGLYPH-1395D
+<U0001395E> /xf0/x93/xa5/x9e EGYPTIAN HIEROGLYPH-1395E
+<U0001395F> /xf0/x93/xa5/x9f EGYPTIAN HIEROGLYPH-1395F
+<U00013960> /xf0/x93/xa5/xa0 EGYPTIAN HIEROGLYPH-13960
+<U00013961> /xf0/x93/xa5/xa1 EGYPTIAN HIEROGLYPH-13961
+<U00013962> /xf0/x93/xa5/xa2 EGYPTIAN HIEROGLYPH-13962
+<U00013963> /xf0/x93/xa5/xa3 EGYPTIAN HIEROGLYPH-13963
+<U00013964> /xf0/x93/xa5/xa4 EGYPTIAN HIEROGLYPH-13964
+<U00013965> /xf0/x93/xa5/xa5 EGYPTIAN HIEROGLYPH-13965
+<U00013966> /xf0/x93/xa5/xa6 EGYPTIAN HIEROGLYPH-13966
+<U00013967> /xf0/x93/xa5/xa7 EGYPTIAN HIEROGLYPH-13967
+<U00013968> /xf0/x93/xa5/xa8 EGYPTIAN HIEROGLYPH-13968
+<U00013969> /xf0/x93/xa5/xa9 EGYPTIAN HIEROGLYPH-13969
+<U0001396A> /xf0/x93/xa5/xaa EGYPTIAN HIEROGLYPH-1396A
+<U0001396B> /xf0/x93/xa5/xab EGYPTIAN HIEROGLYPH-1396B
+<U0001396C> /xf0/x93/xa5/xac EGYPTIAN HIEROGLYPH-1396C
+<U0001396D> /xf0/x93/xa5/xad EGYPTIAN HIEROGLYPH-1396D
+<U0001396E> /xf0/x93/xa5/xae EGYPTIAN HIEROGLYPH-1396E
+<U0001396F> /xf0/x93/xa5/xaf EGYPTIAN HIEROGLYPH-1396F
+<U00013970> /xf0/x93/xa5/xb0 EGYPTIAN HIEROGLYPH-13970
+<U00013971> /xf0/x93/xa5/xb1 EGYPTIAN HIEROGLYPH-13971
+<U00013972> /xf0/x93/xa5/xb2 EGYPTIAN HIEROGLYPH-13972
+<U00013973> /xf0/x93/xa5/xb3 EGYPTIAN HIEROGLYPH-13973
+<U00013974> /xf0/x93/xa5/xb4 EGYPTIAN HIEROGLYPH-13974
+<U00013975> /xf0/x93/xa5/xb5 EGYPTIAN HIEROGLYPH-13975
+<U00013976> /xf0/x93/xa5/xb6 EGYPTIAN HIEROGLYPH-13976
+<U00013977> /xf0/x93/xa5/xb7 EGYPTIAN HIEROGLYPH-13977
+<U00013978> /xf0/x93/xa5/xb8 EGYPTIAN HIEROGLYPH-13978
+<U00013979> /xf0/x93/xa5/xb9 EGYPTIAN HIEROGLYPH-13979
+<U0001397A> /xf0/x93/xa5/xba EGYPTIAN HIEROGLYPH-1397A
+<U0001397B> /xf0/x93/xa5/xbb EGYPTIAN HIEROGLYPH-1397B
+<U0001397C> /xf0/x93/xa5/xbc EGYPTIAN HIEROGLYPH-1397C
+<U0001397D> /xf0/x93/xa5/xbd EGYPTIAN HIEROGLYPH-1397D
+<U0001397E> /xf0/x93/xa5/xbe EGYPTIAN HIEROGLYPH-1397E
+<U0001397F> /xf0/x93/xa5/xbf EGYPTIAN HIEROGLYPH-1397F
+<U00013980> /xf0/x93/xa6/x80 EGYPTIAN HIEROGLYPH-13980
+<U00013981> /xf0/x93/xa6/x81 EGYPTIAN HIEROGLYPH-13981
+<U00013982> /xf0/x93/xa6/x82 EGYPTIAN HIEROGLYPH-13982
+<U00013983> /xf0/x93/xa6/x83 EGYPTIAN HIEROGLYPH-13983
+<U00013984> /xf0/x93/xa6/x84 EGYPTIAN HIEROGLYPH-13984
+<U00013985> /xf0/x93/xa6/x85 EGYPTIAN HIEROGLYPH-13985
+<U00013986> /xf0/x93/xa6/x86 EGYPTIAN HIEROGLYPH-13986
+<U00013987> /xf0/x93/xa6/x87 EGYPTIAN HIEROGLYPH-13987
+<U00013988> /xf0/x93/xa6/x88 EGYPTIAN HIEROGLYPH-13988
+<U00013989> /xf0/x93/xa6/x89 EGYPTIAN HIEROGLYPH-13989
+<U0001398A> /xf0/x93/xa6/x8a EGYPTIAN HIEROGLYPH-1398A
+<U0001398B> /xf0/x93/xa6/x8b EGYPTIAN HIEROGLYPH-1398B
+<U0001398C> /xf0/x93/xa6/x8c EGYPTIAN HIEROGLYPH-1398C
+<U0001398D> /xf0/x93/xa6/x8d EGYPTIAN HIEROGLYPH-1398D
+<U0001398E> /xf0/x93/xa6/x8e EGYPTIAN HIEROGLYPH-1398E
+<U0001398F> /xf0/x93/xa6/x8f EGYPTIAN HIEROGLYPH-1398F
+<U00013990> /xf0/x93/xa6/x90 EGYPTIAN HIEROGLYPH-13990
+<U00013991> /xf0/x93/xa6/x91 EGYPTIAN HIEROGLYPH-13991
+<U00013992> /xf0/x93/xa6/x92 EGYPTIAN HIEROGLYPH-13992
+<U00013993> /xf0/x93/xa6/x93 EGYPTIAN HIEROGLYPH-13993
+<U00013994> /xf0/x93/xa6/x94 EGYPTIAN HIEROGLYPH-13994
+<U00013995> /xf0/x93/xa6/x95 EGYPTIAN HIEROGLYPH-13995
+<U00013996> /xf0/x93/xa6/x96 EGYPTIAN HIEROGLYPH-13996
+<U00013997> /xf0/x93/xa6/x97 EGYPTIAN HIEROGLYPH-13997
+<U00013998> /xf0/x93/xa6/x98 EGYPTIAN HIEROGLYPH-13998
+<U00013999> /xf0/x93/xa6/x99 EGYPTIAN HIEROGLYPH-13999
+<U0001399A> /xf0/x93/xa6/x9a EGYPTIAN HIEROGLYPH-1399A
+<U0001399B> /xf0/x93/xa6/x9b EGYPTIAN HIEROGLYPH-1399B
+<U0001399C> /xf0/x93/xa6/x9c EGYPTIAN HIEROGLYPH-1399C
+<U0001399D> /xf0/x93/xa6/x9d EGYPTIAN HIEROGLYPH-1399D
+<U0001399E> /xf0/x93/xa6/x9e EGYPTIAN HIEROGLYPH-1399E
+<U0001399F> /xf0/x93/xa6/x9f EGYPTIAN HIEROGLYPH-1399F
+<U000139A0> /xf0/x93/xa6/xa0 EGYPTIAN HIEROGLYPH-139A0
+<U000139A1> /xf0/x93/xa6/xa1 EGYPTIAN HIEROGLYPH-139A1
+<U000139A2> /xf0/x93/xa6/xa2 EGYPTIAN HIEROGLYPH-139A2
+<U000139A3> /xf0/x93/xa6/xa3 EGYPTIAN HIEROGLYPH-139A3
+<U000139A4> /xf0/x93/xa6/xa4 EGYPTIAN HIEROGLYPH-139A4
+<U000139A5> /xf0/x93/xa6/xa5 EGYPTIAN HIEROGLYPH-139A5
+<U000139A6> /xf0/x93/xa6/xa6 EGYPTIAN HIEROGLYPH-139A6
+<U000139A7> /xf0/x93/xa6/xa7 EGYPTIAN HIEROGLYPH-139A7
+<U000139A8> /xf0/x93/xa6/xa8 EGYPTIAN HIEROGLYPH-139A8
+<U000139A9> /xf0/x93/xa6/xa9 EGYPTIAN HIEROGLYPH-139A9
+<U000139AA> /xf0/x93/xa6/xaa EGYPTIAN HIEROGLYPH-139AA
+<U000139AB> /xf0/x93/xa6/xab EGYPTIAN HIEROGLYPH-139AB
+<U000139AC> /xf0/x93/xa6/xac EGYPTIAN HIEROGLYPH-139AC
+<U000139AD> /xf0/x93/xa6/xad EGYPTIAN HIEROGLYPH-139AD
+<U000139AE> /xf0/x93/xa6/xae EGYPTIAN HIEROGLYPH-139AE
+<U000139AF> /xf0/x93/xa6/xaf EGYPTIAN HIEROGLYPH-139AF
+<U000139B0> /xf0/x93/xa6/xb0 EGYPTIAN HIEROGLYPH-139B0
+<U000139B1> /xf0/x93/xa6/xb1 EGYPTIAN HIEROGLYPH-139B1
+<U000139B2> /xf0/x93/xa6/xb2 EGYPTIAN HIEROGLYPH-139B2
+<U000139B3> /xf0/x93/xa6/xb3 EGYPTIAN HIEROGLYPH-139B3
+<U000139B4> /xf0/x93/xa6/xb4 EGYPTIAN HIEROGLYPH-139B4
+<U000139B5> /xf0/x93/xa6/xb5 EGYPTIAN HIEROGLYPH-139B5
+<U000139B6> /xf0/x93/xa6/xb6 EGYPTIAN HIEROGLYPH-139B6
+<U000139B7> /xf0/x93/xa6/xb7 EGYPTIAN HIEROGLYPH-139B7
+<U000139B8> /xf0/x93/xa6/xb8 EGYPTIAN HIEROGLYPH-139B8
+<U000139B9> /xf0/x93/xa6/xb9 EGYPTIAN HIEROGLYPH-139B9
+<U000139BA> /xf0/x93/xa6/xba EGYPTIAN HIEROGLYPH-139BA
+<U000139BB> /xf0/x93/xa6/xbb EGYPTIAN HIEROGLYPH-139BB
+<U000139BC> /xf0/x93/xa6/xbc EGYPTIAN HIEROGLYPH-139BC
+<U000139BD> /xf0/x93/xa6/xbd EGYPTIAN HIEROGLYPH-139BD
+<U000139BE> /xf0/x93/xa6/xbe EGYPTIAN HIEROGLYPH-139BE
+<U000139BF> /xf0/x93/xa6/xbf EGYPTIAN HIEROGLYPH-139BF
+<U000139C0> /xf0/x93/xa7/x80 EGYPTIAN HIEROGLYPH-139C0
+<U000139C1> /xf0/x93/xa7/x81 EGYPTIAN HIEROGLYPH-139C1
+<U000139C2> /xf0/x93/xa7/x82 EGYPTIAN HIEROGLYPH-139C2
+<U000139C3> /xf0/x93/xa7/x83 EGYPTIAN HIEROGLYPH-139C3
+<U000139C4> /xf0/x93/xa7/x84 EGYPTIAN HIEROGLYPH-139C4
+<U000139C5> /xf0/x93/xa7/x85 EGYPTIAN HIEROGLYPH-139C5
+<U000139C6> /xf0/x93/xa7/x86 EGYPTIAN HIEROGLYPH-139C6
+<U000139C7> /xf0/x93/xa7/x87 EGYPTIAN HIEROGLYPH-139C7
+<U000139C8> /xf0/x93/xa7/x88 EGYPTIAN HIEROGLYPH-139C8
+<U000139C9> /xf0/x93/xa7/x89 EGYPTIAN HIEROGLYPH-139C9
+<U000139CA> /xf0/x93/xa7/x8a EGYPTIAN HIEROGLYPH-139CA
+<U000139CB> /xf0/x93/xa7/x8b EGYPTIAN HIEROGLYPH-139CB
+<U000139CC> /xf0/x93/xa7/x8c EGYPTIAN HIEROGLYPH-139CC
+<U000139CD> /xf0/x93/xa7/x8d EGYPTIAN HIEROGLYPH-139CD
+<U000139CE> /xf0/x93/xa7/x8e EGYPTIAN HIEROGLYPH-139CE
+<U000139CF> /xf0/x93/xa7/x8f EGYPTIAN HIEROGLYPH-139CF
+<U000139D0> /xf0/x93/xa7/x90 EGYPTIAN HIEROGLYPH-139D0
+<U000139D1> /xf0/x93/xa7/x91 EGYPTIAN HIEROGLYPH-139D1
+<U000139D2> /xf0/x93/xa7/x92 EGYPTIAN HIEROGLYPH-139D2
+<U000139D3> /xf0/x93/xa7/x93 EGYPTIAN HIEROGLYPH-139D3
+<U000139D4> /xf0/x93/xa7/x94 EGYPTIAN HIEROGLYPH-139D4
+<U000139D5> /xf0/x93/xa7/x95 EGYPTIAN HIEROGLYPH-139D5
+<U000139D6> /xf0/x93/xa7/x96 EGYPTIAN HIEROGLYPH-139D6
+<U000139D7> /xf0/x93/xa7/x97 EGYPTIAN HIEROGLYPH-139D7
+<U000139D8> /xf0/x93/xa7/x98 EGYPTIAN HIEROGLYPH-139D8
+<U000139D9> /xf0/x93/xa7/x99 EGYPTIAN HIEROGLYPH-139D9
+<U000139DA> /xf0/x93/xa7/x9a EGYPTIAN HIEROGLYPH-139DA
+<U000139DB> /xf0/x93/xa7/x9b EGYPTIAN HIEROGLYPH-139DB
+<U000139DC> /xf0/x93/xa7/x9c EGYPTIAN HIEROGLYPH-139DC
+<U000139DD> /xf0/x93/xa7/x9d EGYPTIAN HIEROGLYPH-139DD
+<U000139DE> /xf0/x93/xa7/x9e EGYPTIAN HIEROGLYPH-139DE
+<U000139DF> /xf0/x93/xa7/x9f EGYPTIAN HIEROGLYPH-139DF
+<U000139E0> /xf0/x93/xa7/xa0 EGYPTIAN HIEROGLYPH-139E0
+<U000139E1> /xf0/x93/xa7/xa1 EGYPTIAN HIEROGLYPH-139E1
+<U000139E2> /xf0/x93/xa7/xa2 EGYPTIAN HIEROGLYPH-139E2
+<U000139E3> /xf0/x93/xa7/xa3 EGYPTIAN HIEROGLYPH-139E3
+<U000139E4> /xf0/x93/xa7/xa4 EGYPTIAN HIEROGLYPH-139E4
+<U000139E5> /xf0/x93/xa7/xa5 EGYPTIAN HIEROGLYPH-139E5
+<U000139E6> /xf0/x93/xa7/xa6 EGYPTIAN HIEROGLYPH-139E6
+<U000139E7> /xf0/x93/xa7/xa7 EGYPTIAN HIEROGLYPH-139E7
+<U000139E8> /xf0/x93/xa7/xa8 EGYPTIAN HIEROGLYPH-139E8
+<U000139E9> /xf0/x93/xa7/xa9 EGYPTIAN HIEROGLYPH-139E9
+<U000139EA> /xf0/x93/xa7/xaa EGYPTIAN HIEROGLYPH-139EA
+<U000139EB> /xf0/x93/xa7/xab EGYPTIAN HIEROGLYPH-139EB
+<U000139EC> /xf0/x93/xa7/xac EGYPTIAN HIEROGLYPH-139EC
+<U000139ED> /xf0/x93/xa7/xad EGYPTIAN HIEROGLYPH-139ED
+<U000139EE> /xf0/x93/xa7/xae EGYPTIAN HIEROGLYPH-139EE
+<U000139EF> /xf0/x93/xa7/xaf EGYPTIAN HIEROGLYPH-139EF
+<U000139F0> /xf0/x93/xa7/xb0 EGYPTIAN HIEROGLYPH-139F0
+<U000139F1> /xf0/x93/xa7/xb1 EGYPTIAN HIEROGLYPH-139F1
+<U000139F2> /xf0/x93/xa7/xb2 EGYPTIAN HIEROGLYPH-139F2
+<U000139F3> /xf0/x93/xa7/xb3 EGYPTIAN HIEROGLYPH-139F3
+<U000139F4> /xf0/x93/xa7/xb4 EGYPTIAN HIEROGLYPH-139F4
+<U000139F5> /xf0/x93/xa7/xb5 EGYPTIAN HIEROGLYPH-139F5
+<U000139F6> /xf0/x93/xa7/xb6 EGYPTIAN HIEROGLYPH-139F6
+<U000139F7> /xf0/x93/xa7/xb7 EGYPTIAN HIEROGLYPH-139F7
+<U000139F8> /xf0/x93/xa7/xb8 EGYPTIAN HIEROGLYPH-139F8
+<U000139F9> /xf0/x93/xa7/xb9 EGYPTIAN HIEROGLYPH-139F9
+<U000139FA> /xf0/x93/xa7/xba EGYPTIAN HIEROGLYPH-139FA
+<U000139FB> /xf0/x93/xa7/xbb EGYPTIAN HIEROGLYPH-139FB
+<U000139FC> /xf0/x93/xa7/xbc EGYPTIAN HIEROGLYPH-139FC
+<U000139FD> /xf0/x93/xa7/xbd EGYPTIAN HIEROGLYPH-139FD
+<U000139FE> /xf0/x93/xa7/xbe EGYPTIAN HIEROGLYPH-139FE
+<U000139FF> /xf0/x93/xa7/xbf EGYPTIAN HIEROGLYPH-139FF
+<U00013A00> /xf0/x93/xa8/x80 EGYPTIAN HIEROGLYPH-13A00
+<U00013A01> /xf0/x93/xa8/x81 EGYPTIAN HIEROGLYPH-13A01
+<U00013A02> /xf0/x93/xa8/x82 EGYPTIAN HIEROGLYPH-13A02
+<U00013A03> /xf0/x93/xa8/x83 EGYPTIAN HIEROGLYPH-13A03
+<U00013A04> /xf0/x93/xa8/x84 EGYPTIAN HIEROGLYPH-13A04
+<U00013A05> /xf0/x93/xa8/x85 EGYPTIAN HIEROGLYPH-13A05
+<U00013A06> /xf0/x93/xa8/x86 EGYPTIAN HIEROGLYPH-13A06
+<U00013A07> /xf0/x93/xa8/x87 EGYPTIAN HIEROGLYPH-13A07
+<U00013A08> /xf0/x93/xa8/x88 EGYPTIAN HIEROGLYPH-13A08
+<U00013A09> /xf0/x93/xa8/x89 EGYPTIAN HIEROGLYPH-13A09
+<U00013A0A> /xf0/x93/xa8/x8a EGYPTIAN HIEROGLYPH-13A0A
+<U00013A0B> /xf0/x93/xa8/x8b EGYPTIAN HIEROGLYPH-13A0B
+<U00013A0C> /xf0/x93/xa8/x8c EGYPTIAN HIEROGLYPH-13A0C
+<U00013A0D> /xf0/x93/xa8/x8d EGYPTIAN HIEROGLYPH-13A0D
+<U00013A0E> /xf0/x93/xa8/x8e EGYPTIAN HIEROGLYPH-13A0E
+<U00013A0F> /xf0/x93/xa8/x8f EGYPTIAN HIEROGLYPH-13A0F
+<U00013A10> /xf0/x93/xa8/x90 EGYPTIAN HIEROGLYPH-13A10
+<U00013A11> /xf0/x93/xa8/x91 EGYPTIAN HIEROGLYPH-13A11
+<U00013A12> /xf0/x93/xa8/x92 EGYPTIAN HIEROGLYPH-13A12
+<U00013A13> /xf0/x93/xa8/x93 EGYPTIAN HIEROGLYPH-13A13
+<U00013A14> /xf0/x93/xa8/x94 EGYPTIAN HIEROGLYPH-13A14
+<U00013A15> /xf0/x93/xa8/x95 EGYPTIAN HIEROGLYPH-13A15
+<U00013A16> /xf0/x93/xa8/x96 EGYPTIAN HIEROGLYPH-13A16
+<U00013A17> /xf0/x93/xa8/x97 EGYPTIAN HIEROGLYPH-13A17
+<U00013A18> /xf0/x93/xa8/x98 EGYPTIAN HIEROGLYPH-13A18
+<U00013A19> /xf0/x93/xa8/x99 EGYPTIAN HIEROGLYPH-13A19
+<U00013A1A> /xf0/x93/xa8/x9a EGYPTIAN HIEROGLYPH-13A1A
+<U00013A1B> /xf0/x93/xa8/x9b EGYPTIAN HIEROGLYPH-13A1B
+<U00013A1C> /xf0/x93/xa8/x9c EGYPTIAN HIEROGLYPH-13A1C
+<U00013A1D> /xf0/x93/xa8/x9d EGYPTIAN HIEROGLYPH-13A1D
+<U00013A1E> /xf0/x93/xa8/x9e EGYPTIAN HIEROGLYPH-13A1E
+<U00013A1F> /xf0/x93/xa8/x9f EGYPTIAN HIEROGLYPH-13A1F
+<U00013A20> /xf0/x93/xa8/xa0 EGYPTIAN HIEROGLYPH-13A20
+<U00013A21> /xf0/x93/xa8/xa1 EGYPTIAN HIEROGLYPH-13A21
+<U00013A22> /xf0/x93/xa8/xa2 EGYPTIAN HIEROGLYPH-13A22
+<U00013A23> /xf0/x93/xa8/xa3 EGYPTIAN HIEROGLYPH-13A23
+<U00013A24> /xf0/x93/xa8/xa4 EGYPTIAN HIEROGLYPH-13A24
+<U00013A25> /xf0/x93/xa8/xa5 EGYPTIAN HIEROGLYPH-13A25
+<U00013A26> /xf0/x93/xa8/xa6 EGYPTIAN HIEROGLYPH-13A26
+<U00013A27> /xf0/x93/xa8/xa7 EGYPTIAN HIEROGLYPH-13A27
+<U00013A28> /xf0/x93/xa8/xa8 EGYPTIAN HIEROGLYPH-13A28
+<U00013A29> /xf0/x93/xa8/xa9 EGYPTIAN HIEROGLYPH-13A29
+<U00013A2A> /xf0/x93/xa8/xaa EGYPTIAN HIEROGLYPH-13A2A
+<U00013A2B> /xf0/x93/xa8/xab EGYPTIAN HIEROGLYPH-13A2B
+<U00013A2C> /xf0/x93/xa8/xac EGYPTIAN HIEROGLYPH-13A2C
+<U00013A2D> /xf0/x93/xa8/xad EGYPTIAN HIEROGLYPH-13A2D
+<U00013A2E> /xf0/x93/xa8/xae EGYPTIAN HIEROGLYPH-13A2E
+<U00013A2F> /xf0/x93/xa8/xaf EGYPTIAN HIEROGLYPH-13A2F
+<U00013A30> /xf0/x93/xa8/xb0 EGYPTIAN HIEROGLYPH-13A30
+<U00013A31> /xf0/x93/xa8/xb1 EGYPTIAN HIEROGLYPH-13A31
+<U00013A32> /xf0/x93/xa8/xb2 EGYPTIAN HIEROGLYPH-13A32
+<U00013A33> /xf0/x93/xa8/xb3 EGYPTIAN HIEROGLYPH-13A33
+<U00013A34> /xf0/x93/xa8/xb4 EGYPTIAN HIEROGLYPH-13A34
+<U00013A35> /xf0/x93/xa8/xb5 EGYPTIAN HIEROGLYPH-13A35
+<U00013A36> /xf0/x93/xa8/xb6 EGYPTIAN HIEROGLYPH-13A36
+<U00013A37> /xf0/x93/xa8/xb7 EGYPTIAN HIEROGLYPH-13A37
+<U00013A38> /xf0/x93/xa8/xb8 EGYPTIAN HIEROGLYPH-13A38
+<U00013A39> /xf0/x93/xa8/xb9 EGYPTIAN HIEROGLYPH-13A39
+<U00013A3A> /xf0/x93/xa8/xba EGYPTIAN HIEROGLYPH-13A3A
+<U00013A3B> /xf0/x93/xa8/xbb EGYPTIAN HIEROGLYPH-13A3B
+<U00013A3C> /xf0/x93/xa8/xbc EGYPTIAN HIEROGLYPH-13A3C
+<U00013A3D> /xf0/x93/xa8/xbd EGYPTIAN HIEROGLYPH-13A3D
+<U00013A3E> /xf0/x93/xa8/xbe EGYPTIAN HIEROGLYPH-13A3E
+<U00013A3F> /xf0/x93/xa8/xbf EGYPTIAN HIEROGLYPH-13A3F
+<U00013A40> /xf0/x93/xa9/x80 EGYPTIAN HIEROGLYPH-13A40
+<U00013A41> /xf0/x93/xa9/x81 EGYPTIAN HIEROGLYPH-13A41
+<U00013A42> /xf0/x93/xa9/x82 EGYPTIAN HIEROGLYPH-13A42
+<U00013A43> /xf0/x93/xa9/x83 EGYPTIAN HIEROGLYPH-13A43
+<U00013A44> /xf0/x93/xa9/x84 EGYPTIAN HIEROGLYPH-13A44
+<U00013A45> /xf0/x93/xa9/x85 EGYPTIAN HIEROGLYPH-13A45
+<U00013A46> /xf0/x93/xa9/x86 EGYPTIAN HIEROGLYPH-13A46
+<U00013A47> /xf0/x93/xa9/x87 EGYPTIAN HIEROGLYPH-13A47
+<U00013A48> /xf0/x93/xa9/x88 EGYPTIAN HIEROGLYPH-13A48
+<U00013A49> /xf0/x93/xa9/x89 EGYPTIAN HIEROGLYPH-13A49
+<U00013A4A> /xf0/x93/xa9/x8a EGYPTIAN HIEROGLYPH-13A4A
+<U00013A4B> /xf0/x93/xa9/x8b EGYPTIAN HIEROGLYPH-13A4B
+<U00013A4C> /xf0/x93/xa9/x8c EGYPTIAN HIEROGLYPH-13A4C
+<U00013A4D> /xf0/x93/xa9/x8d EGYPTIAN HIEROGLYPH-13A4D
+<U00013A4E> /xf0/x93/xa9/x8e EGYPTIAN HIEROGLYPH-13A4E
+<U00013A4F> /xf0/x93/xa9/x8f EGYPTIAN HIEROGLYPH-13A4F
+<U00013A50> /xf0/x93/xa9/x90 EGYPTIAN HIEROGLYPH-13A50
+<U00013A51> /xf0/x93/xa9/x91 EGYPTIAN HIEROGLYPH-13A51
+<U00013A52> /xf0/x93/xa9/x92 EGYPTIAN HIEROGLYPH-13A52
+<U00013A53> /xf0/x93/xa9/x93 EGYPTIAN HIEROGLYPH-13A53
+<U00013A54> /xf0/x93/xa9/x94 EGYPTIAN HIEROGLYPH-13A54
+<U00013A55> /xf0/x93/xa9/x95 EGYPTIAN HIEROGLYPH-13A55
+<U00013A56> /xf0/x93/xa9/x96 EGYPTIAN HIEROGLYPH-13A56
+<U00013A57> /xf0/x93/xa9/x97 EGYPTIAN HIEROGLYPH-13A57
+<U00013A58> /xf0/x93/xa9/x98 EGYPTIAN HIEROGLYPH-13A58
+<U00013A59> /xf0/x93/xa9/x99 EGYPTIAN HIEROGLYPH-13A59
+<U00013A5A> /xf0/x93/xa9/x9a EGYPTIAN HIEROGLYPH-13A5A
+<U00013A5B> /xf0/x93/xa9/x9b EGYPTIAN HIEROGLYPH-13A5B
+<U00013A5C> /xf0/x93/xa9/x9c EGYPTIAN HIEROGLYPH-13A5C
+<U00013A5D> /xf0/x93/xa9/x9d EGYPTIAN HIEROGLYPH-13A5D
+<U00013A5E> /xf0/x93/xa9/x9e EGYPTIAN HIEROGLYPH-13A5E
+<U00013A5F> /xf0/x93/xa9/x9f EGYPTIAN HIEROGLYPH-13A5F
+<U00013A60> /xf0/x93/xa9/xa0 EGYPTIAN HIEROGLYPH-13A60
+<U00013A61> /xf0/x93/xa9/xa1 EGYPTIAN HIEROGLYPH-13A61
+<U00013A62> /xf0/x93/xa9/xa2 EGYPTIAN HIEROGLYPH-13A62
+<U00013A63> /xf0/x93/xa9/xa3 EGYPTIAN HIEROGLYPH-13A63
+<U00013A64> /xf0/x93/xa9/xa4 EGYPTIAN HIEROGLYPH-13A64
+<U00013A65> /xf0/x93/xa9/xa5 EGYPTIAN HIEROGLYPH-13A65
+<U00013A66> /xf0/x93/xa9/xa6 EGYPTIAN HIEROGLYPH-13A66
+<U00013A67> /xf0/x93/xa9/xa7 EGYPTIAN HIEROGLYPH-13A67
+<U00013A68> /xf0/x93/xa9/xa8 EGYPTIAN HIEROGLYPH-13A68
+<U00013A69> /xf0/x93/xa9/xa9 EGYPTIAN HIEROGLYPH-13A69
+<U00013A6A> /xf0/x93/xa9/xaa EGYPTIAN HIEROGLYPH-13A6A
+<U00013A6B> /xf0/x93/xa9/xab EGYPTIAN HIEROGLYPH-13A6B
+<U00013A6C> /xf0/x93/xa9/xac EGYPTIAN HIEROGLYPH-13A6C
+<U00013A6D> /xf0/x93/xa9/xad EGYPTIAN HIEROGLYPH-13A6D
+<U00013A6E> /xf0/x93/xa9/xae EGYPTIAN HIEROGLYPH-13A6E
+<U00013A6F> /xf0/x93/xa9/xaf EGYPTIAN HIEROGLYPH-13A6F
+<U00013A70> /xf0/x93/xa9/xb0 EGYPTIAN HIEROGLYPH-13A70
+<U00013A71> /xf0/x93/xa9/xb1 EGYPTIAN HIEROGLYPH-13A71
+<U00013A72> /xf0/x93/xa9/xb2 EGYPTIAN HIEROGLYPH-13A72
+<U00013A73> /xf0/x93/xa9/xb3 EGYPTIAN HIEROGLYPH-13A73
+<U00013A74> /xf0/x93/xa9/xb4 EGYPTIAN HIEROGLYPH-13A74
+<U00013A75> /xf0/x93/xa9/xb5 EGYPTIAN HIEROGLYPH-13A75
+<U00013A76> /xf0/x93/xa9/xb6 EGYPTIAN HIEROGLYPH-13A76
+<U00013A77> /xf0/x93/xa9/xb7 EGYPTIAN HIEROGLYPH-13A77
+<U00013A78> /xf0/x93/xa9/xb8 EGYPTIAN HIEROGLYPH-13A78
+<U00013A79> /xf0/x93/xa9/xb9 EGYPTIAN HIEROGLYPH-13A79
+<U00013A7A> /xf0/x93/xa9/xba EGYPTIAN HIEROGLYPH-13A7A
+<U00013A7B> /xf0/x93/xa9/xbb EGYPTIAN HIEROGLYPH-13A7B
+<U00013A7C> /xf0/x93/xa9/xbc EGYPTIAN HIEROGLYPH-13A7C
+<U00013A7D> /xf0/x93/xa9/xbd EGYPTIAN HIEROGLYPH-13A7D
+<U00013A7E> /xf0/x93/xa9/xbe EGYPTIAN HIEROGLYPH-13A7E
+<U00013A7F> /xf0/x93/xa9/xbf EGYPTIAN HIEROGLYPH-13A7F
+<U00013A80> /xf0/x93/xaa/x80 EGYPTIAN HIEROGLYPH-13A80
+<U00013A81> /xf0/x93/xaa/x81 EGYPTIAN HIEROGLYPH-13A81
+<U00013A82> /xf0/x93/xaa/x82 EGYPTIAN HIEROGLYPH-13A82
+<U00013A83> /xf0/x93/xaa/x83 EGYPTIAN HIEROGLYPH-13A83
+<U00013A84> /xf0/x93/xaa/x84 EGYPTIAN HIEROGLYPH-13A84
+<U00013A85> /xf0/x93/xaa/x85 EGYPTIAN HIEROGLYPH-13A85
+<U00013A86> /xf0/x93/xaa/x86 EGYPTIAN HIEROGLYPH-13A86
+<U00013A87> /xf0/x93/xaa/x87 EGYPTIAN HIEROGLYPH-13A87
+<U00013A88> /xf0/x93/xaa/x88 EGYPTIAN HIEROGLYPH-13A88
+<U00013A89> /xf0/x93/xaa/x89 EGYPTIAN HIEROGLYPH-13A89
+<U00013A8A> /xf0/x93/xaa/x8a EGYPTIAN HIEROGLYPH-13A8A
+<U00013A8B> /xf0/x93/xaa/x8b EGYPTIAN HIEROGLYPH-13A8B
+<U00013A8C> /xf0/x93/xaa/x8c EGYPTIAN HIEROGLYPH-13A8C
+<U00013A8D> /xf0/x93/xaa/x8d EGYPTIAN HIEROGLYPH-13A8D
+<U00013A8E> /xf0/x93/xaa/x8e EGYPTIAN HIEROGLYPH-13A8E
+<U00013A8F> /xf0/x93/xaa/x8f EGYPTIAN HIEROGLYPH-13A8F
+<U00013A90> /xf0/x93/xaa/x90 EGYPTIAN HIEROGLYPH-13A90
+<U00013A91> /xf0/x93/xaa/x91 EGYPTIAN HIEROGLYPH-13A91
+<U00013A92> /xf0/x93/xaa/x92 EGYPTIAN HIEROGLYPH-13A92
+<U00013A93> /xf0/x93/xaa/x93 EGYPTIAN HIEROGLYPH-13A93
+<U00013A94> /xf0/x93/xaa/x94 EGYPTIAN HIEROGLYPH-13A94
+<U00013A95> /xf0/x93/xaa/x95 EGYPTIAN HIEROGLYPH-13A95
+<U00013A96> /xf0/x93/xaa/x96 EGYPTIAN HIEROGLYPH-13A96
+<U00013A97> /xf0/x93/xaa/x97 EGYPTIAN HIEROGLYPH-13A97
+<U00013A98> /xf0/x93/xaa/x98 EGYPTIAN HIEROGLYPH-13A98
+<U00013A99> /xf0/x93/xaa/x99 EGYPTIAN HIEROGLYPH-13A99
+<U00013A9A> /xf0/x93/xaa/x9a EGYPTIAN HIEROGLYPH-13A9A
+<U00013A9B> /xf0/x93/xaa/x9b EGYPTIAN HIEROGLYPH-13A9B
+<U00013A9C> /xf0/x93/xaa/x9c EGYPTIAN HIEROGLYPH-13A9C
+<U00013A9D> /xf0/x93/xaa/x9d EGYPTIAN HIEROGLYPH-13A9D
+<U00013A9E> /xf0/x93/xaa/x9e EGYPTIAN HIEROGLYPH-13A9E
+<U00013A9F> /xf0/x93/xaa/x9f EGYPTIAN HIEROGLYPH-13A9F
+<U00013AA0> /xf0/x93/xaa/xa0 EGYPTIAN HIEROGLYPH-13AA0
+<U00013AA1> /xf0/x93/xaa/xa1 EGYPTIAN HIEROGLYPH-13AA1
+<U00013AA2> /xf0/x93/xaa/xa2 EGYPTIAN HIEROGLYPH-13AA2
+<U00013AA3> /xf0/x93/xaa/xa3 EGYPTIAN HIEROGLYPH-13AA3
+<U00013AA4> /xf0/x93/xaa/xa4 EGYPTIAN HIEROGLYPH-13AA4
+<U00013AA5> /xf0/x93/xaa/xa5 EGYPTIAN HIEROGLYPH-13AA5
+<U00013AA6> /xf0/x93/xaa/xa6 EGYPTIAN HIEROGLYPH-13AA6
+<U00013AA7> /xf0/x93/xaa/xa7 EGYPTIAN HIEROGLYPH-13AA7
+<U00013AA8> /xf0/x93/xaa/xa8 EGYPTIAN HIEROGLYPH-13AA8
+<U00013AA9> /xf0/x93/xaa/xa9 EGYPTIAN HIEROGLYPH-13AA9
+<U00013AAA> /xf0/x93/xaa/xaa EGYPTIAN HIEROGLYPH-13AAA
+<U00013AAB> /xf0/x93/xaa/xab EGYPTIAN HIEROGLYPH-13AAB
+<U00013AAC> /xf0/x93/xaa/xac EGYPTIAN HIEROGLYPH-13AAC
+<U00013AAD> /xf0/x93/xaa/xad EGYPTIAN HIEROGLYPH-13AAD
+<U00013AAE> /xf0/x93/xaa/xae EGYPTIAN HIEROGLYPH-13AAE
+<U00013AAF> /xf0/x93/xaa/xaf EGYPTIAN HIEROGLYPH-13AAF
+<U00013AB0> /xf0/x93/xaa/xb0 EGYPTIAN HIEROGLYPH-13AB0
+<U00013AB1> /xf0/x93/xaa/xb1 EGYPTIAN HIEROGLYPH-13AB1
+<U00013AB2> /xf0/x93/xaa/xb2 EGYPTIAN HIEROGLYPH-13AB2
+<U00013AB3> /xf0/x93/xaa/xb3 EGYPTIAN HIEROGLYPH-13AB3
+<U00013AB4> /xf0/x93/xaa/xb4 EGYPTIAN HIEROGLYPH-13AB4
+<U00013AB5> /xf0/x93/xaa/xb5 EGYPTIAN HIEROGLYPH-13AB5
+<U00013AB6> /xf0/x93/xaa/xb6 EGYPTIAN HIEROGLYPH-13AB6
+<U00013AB7> /xf0/x93/xaa/xb7 EGYPTIAN HIEROGLYPH-13AB7
+<U00013AB8> /xf0/x93/xaa/xb8 EGYPTIAN HIEROGLYPH-13AB8
+<U00013AB9> /xf0/x93/xaa/xb9 EGYPTIAN HIEROGLYPH-13AB9
+<U00013ABA> /xf0/x93/xaa/xba EGYPTIAN HIEROGLYPH-13ABA
+<U00013ABB> /xf0/x93/xaa/xbb EGYPTIAN HIEROGLYPH-13ABB
+<U00013ABC> /xf0/x93/xaa/xbc EGYPTIAN HIEROGLYPH-13ABC
+<U00013ABD> /xf0/x93/xaa/xbd EGYPTIAN HIEROGLYPH-13ABD
+<U00013ABE> /xf0/x93/xaa/xbe EGYPTIAN HIEROGLYPH-13ABE
+<U00013ABF> /xf0/x93/xaa/xbf EGYPTIAN HIEROGLYPH-13ABF
+<U00013AC0> /xf0/x93/xab/x80 EGYPTIAN HIEROGLYPH-13AC0
+<U00013AC1> /xf0/x93/xab/x81 EGYPTIAN HIEROGLYPH-13AC1
+<U00013AC2> /xf0/x93/xab/x82 EGYPTIAN HIEROGLYPH-13AC2
+<U00013AC3> /xf0/x93/xab/x83 EGYPTIAN HIEROGLYPH-13AC3
+<U00013AC4> /xf0/x93/xab/x84 EGYPTIAN HIEROGLYPH-13AC4
+<U00013AC5> /xf0/x93/xab/x85 EGYPTIAN HIEROGLYPH-13AC5
+<U00013AC6> /xf0/x93/xab/x86 EGYPTIAN HIEROGLYPH-13AC6
+<U00013AC7> /xf0/x93/xab/x87 EGYPTIAN HIEROGLYPH-13AC7
+<U00013AC8> /xf0/x93/xab/x88 EGYPTIAN HIEROGLYPH-13AC8
+<U00013AC9> /xf0/x93/xab/x89 EGYPTIAN HIEROGLYPH-13AC9
+<U00013ACA> /xf0/x93/xab/x8a EGYPTIAN HIEROGLYPH-13ACA
+<U00013ACB> /xf0/x93/xab/x8b EGYPTIAN HIEROGLYPH-13ACB
+<U00013ACC> /xf0/x93/xab/x8c EGYPTIAN HIEROGLYPH-13ACC
+<U00013ACD> /xf0/x93/xab/x8d EGYPTIAN HIEROGLYPH-13ACD
+<U00013ACE> /xf0/x93/xab/x8e EGYPTIAN HIEROGLYPH-13ACE
+<U00013ACF> /xf0/x93/xab/x8f EGYPTIAN HIEROGLYPH-13ACF
+<U00013AD0> /xf0/x93/xab/x90 EGYPTIAN HIEROGLYPH-13AD0
+<U00013AD1> /xf0/x93/xab/x91 EGYPTIAN HIEROGLYPH-13AD1
+<U00013AD2> /xf0/x93/xab/x92 EGYPTIAN HIEROGLYPH-13AD2
+<U00013AD3> /xf0/x93/xab/x93 EGYPTIAN HIEROGLYPH-13AD3
+<U00013AD4> /xf0/x93/xab/x94 EGYPTIAN HIEROGLYPH-13AD4
+<U00013AD5> /xf0/x93/xab/x95 EGYPTIAN HIEROGLYPH-13AD5
+<U00013AD6> /xf0/x93/xab/x96 EGYPTIAN HIEROGLYPH-13AD6
+<U00013AD7> /xf0/x93/xab/x97 EGYPTIAN HIEROGLYPH-13AD7
+<U00013AD8> /xf0/x93/xab/x98 EGYPTIAN HIEROGLYPH-13AD8
+<U00013AD9> /xf0/x93/xab/x99 EGYPTIAN HIEROGLYPH-13AD9
+<U00013ADA> /xf0/x93/xab/x9a EGYPTIAN HIEROGLYPH-13ADA
+<U00013ADB> /xf0/x93/xab/x9b EGYPTIAN HIEROGLYPH-13ADB
+<U00013ADC> /xf0/x93/xab/x9c EGYPTIAN HIEROGLYPH-13ADC
+<U00013ADD> /xf0/x93/xab/x9d EGYPTIAN HIEROGLYPH-13ADD
+<U00013ADE> /xf0/x93/xab/x9e EGYPTIAN HIEROGLYPH-13ADE
+<U00013ADF> /xf0/x93/xab/x9f EGYPTIAN HIEROGLYPH-13ADF
+<U00013AE0> /xf0/x93/xab/xa0 EGYPTIAN HIEROGLYPH-13AE0
+<U00013AE1> /xf0/x93/xab/xa1 EGYPTIAN HIEROGLYPH-13AE1
+<U00013AE2> /xf0/x93/xab/xa2 EGYPTIAN HIEROGLYPH-13AE2
+<U00013AE3> /xf0/x93/xab/xa3 EGYPTIAN HIEROGLYPH-13AE3
+<U00013AE4> /xf0/x93/xab/xa4 EGYPTIAN HIEROGLYPH-13AE4
+<U00013AE5> /xf0/x93/xab/xa5 EGYPTIAN HIEROGLYPH-13AE5
+<U00013AE6> /xf0/x93/xab/xa6 EGYPTIAN HIEROGLYPH-13AE6
+<U00013AE7> /xf0/x93/xab/xa7 EGYPTIAN HIEROGLYPH-13AE7
+<U00013AE8> /xf0/x93/xab/xa8 EGYPTIAN HIEROGLYPH-13AE8
+<U00013AE9> /xf0/x93/xab/xa9 EGYPTIAN HIEROGLYPH-13AE9
+<U00013AEA> /xf0/x93/xab/xaa EGYPTIAN HIEROGLYPH-13AEA
+<U00013AEB> /xf0/x93/xab/xab EGYPTIAN HIEROGLYPH-13AEB
+<U00013AEC> /xf0/x93/xab/xac EGYPTIAN HIEROGLYPH-13AEC
+<U00013AED> /xf0/x93/xab/xad EGYPTIAN HIEROGLYPH-13AED
+<U00013AEE> /xf0/x93/xab/xae EGYPTIAN HIEROGLYPH-13AEE
+<U00013AEF> /xf0/x93/xab/xaf EGYPTIAN HIEROGLYPH-13AEF
+<U00013AF0> /xf0/x93/xab/xb0 EGYPTIAN HIEROGLYPH-13AF0
+<U00013AF1> /xf0/x93/xab/xb1 EGYPTIAN HIEROGLYPH-13AF1
+<U00013AF2> /xf0/x93/xab/xb2 EGYPTIAN HIEROGLYPH-13AF2
+<U00013AF3> /xf0/x93/xab/xb3 EGYPTIAN HIEROGLYPH-13AF3
+<U00013AF4> /xf0/x93/xab/xb4 EGYPTIAN HIEROGLYPH-13AF4
+<U00013AF5> /xf0/x93/xab/xb5 EGYPTIAN HIEROGLYPH-13AF5
+<U00013AF6> /xf0/x93/xab/xb6 EGYPTIAN HIEROGLYPH-13AF6
+<U00013AF7> /xf0/x93/xab/xb7 EGYPTIAN HIEROGLYPH-13AF7
+<U00013AF8> /xf0/x93/xab/xb8 EGYPTIAN HIEROGLYPH-13AF8
+<U00013AF9> /xf0/x93/xab/xb9 EGYPTIAN HIEROGLYPH-13AF9
+<U00013AFA> /xf0/x93/xab/xba EGYPTIAN HIEROGLYPH-13AFA
+<U00013AFB> /xf0/x93/xab/xbb EGYPTIAN HIEROGLYPH-13AFB
+<U00013AFC> /xf0/x93/xab/xbc EGYPTIAN HIEROGLYPH-13AFC
+<U00013AFD> /xf0/x93/xab/xbd EGYPTIAN HIEROGLYPH-13AFD
+<U00013AFE> /xf0/x93/xab/xbe EGYPTIAN HIEROGLYPH-13AFE
+<U00013AFF> /xf0/x93/xab/xbf EGYPTIAN HIEROGLYPH-13AFF
+<U00013B00> /xf0/x93/xac/x80 EGYPTIAN HIEROGLYPH-13B00
+<U00013B01> /xf0/x93/xac/x81 EGYPTIAN HIEROGLYPH-13B01
+<U00013B02> /xf0/x93/xac/x82 EGYPTIAN HIEROGLYPH-13B02
+<U00013B03> /xf0/x93/xac/x83 EGYPTIAN HIEROGLYPH-13B03
+<U00013B04> /xf0/x93/xac/x84 EGYPTIAN HIEROGLYPH-13B04
+<U00013B05> /xf0/x93/xac/x85 EGYPTIAN HIEROGLYPH-13B05
+<U00013B06> /xf0/x93/xac/x86 EGYPTIAN HIEROGLYPH-13B06
+<U00013B07> /xf0/x93/xac/x87 EGYPTIAN HIEROGLYPH-13B07
+<U00013B08> /xf0/x93/xac/x88 EGYPTIAN HIEROGLYPH-13B08
+<U00013B09> /xf0/x93/xac/x89 EGYPTIAN HIEROGLYPH-13B09
+<U00013B0A> /xf0/x93/xac/x8a EGYPTIAN HIEROGLYPH-13B0A
+<U00013B0B> /xf0/x93/xac/x8b EGYPTIAN HIEROGLYPH-13B0B
+<U00013B0C> /xf0/x93/xac/x8c EGYPTIAN HIEROGLYPH-13B0C
+<U00013B0D> /xf0/x93/xac/x8d EGYPTIAN HIEROGLYPH-13B0D
+<U00013B0E> /xf0/x93/xac/x8e EGYPTIAN HIEROGLYPH-13B0E
+<U00013B0F> /xf0/x93/xac/x8f EGYPTIAN HIEROGLYPH-13B0F
+<U00013B10> /xf0/x93/xac/x90 EGYPTIAN HIEROGLYPH-13B10
+<U00013B11> /xf0/x93/xac/x91 EGYPTIAN HIEROGLYPH-13B11
+<U00013B12> /xf0/x93/xac/x92 EGYPTIAN HIEROGLYPH-13B12
+<U00013B13> /xf0/x93/xac/x93 EGYPTIAN HIEROGLYPH-13B13
+<U00013B14> /xf0/x93/xac/x94 EGYPTIAN HIEROGLYPH-13B14
+<U00013B15> /xf0/x93/xac/x95 EGYPTIAN HIEROGLYPH-13B15
+<U00013B16> /xf0/x93/xac/x96 EGYPTIAN HIEROGLYPH-13B16
+<U00013B17> /xf0/x93/xac/x97 EGYPTIAN HIEROGLYPH-13B17
+<U00013B18> /xf0/x93/xac/x98 EGYPTIAN HIEROGLYPH-13B18
+<U00013B19> /xf0/x93/xac/x99 EGYPTIAN HIEROGLYPH-13B19
+<U00013B1A> /xf0/x93/xac/x9a EGYPTIAN HIEROGLYPH-13B1A
+<U00013B1B> /xf0/x93/xac/x9b EGYPTIAN HIEROGLYPH-13B1B
+<U00013B1C> /xf0/x93/xac/x9c EGYPTIAN HIEROGLYPH-13B1C
+<U00013B1D> /xf0/x93/xac/x9d EGYPTIAN HIEROGLYPH-13B1D
+<U00013B1E> /xf0/x93/xac/x9e EGYPTIAN HIEROGLYPH-13B1E
+<U00013B1F> /xf0/x93/xac/x9f EGYPTIAN HIEROGLYPH-13B1F
+<U00013B20> /xf0/x93/xac/xa0 EGYPTIAN HIEROGLYPH-13B20
+<U00013B21> /xf0/x93/xac/xa1 EGYPTIAN HIEROGLYPH-13B21
+<U00013B22> /xf0/x93/xac/xa2 EGYPTIAN HIEROGLYPH-13B22
+<U00013B23> /xf0/x93/xac/xa3 EGYPTIAN HIEROGLYPH-13B23
+<U00013B24> /xf0/x93/xac/xa4 EGYPTIAN HIEROGLYPH-13B24
+<U00013B25> /xf0/x93/xac/xa5 EGYPTIAN HIEROGLYPH-13B25
+<U00013B26> /xf0/x93/xac/xa6 EGYPTIAN HIEROGLYPH-13B26
+<U00013B27> /xf0/x93/xac/xa7 EGYPTIAN HIEROGLYPH-13B27
+<U00013B28> /xf0/x93/xac/xa8 EGYPTIAN HIEROGLYPH-13B28
+<U00013B29> /xf0/x93/xac/xa9 EGYPTIAN HIEROGLYPH-13B29
+<U00013B2A> /xf0/x93/xac/xaa EGYPTIAN HIEROGLYPH-13B2A
+<U00013B2B> /xf0/x93/xac/xab EGYPTIAN HIEROGLYPH-13B2B
+<U00013B2C> /xf0/x93/xac/xac EGYPTIAN HIEROGLYPH-13B2C
+<U00013B2D> /xf0/x93/xac/xad EGYPTIAN HIEROGLYPH-13B2D
+<U00013B2E> /xf0/x93/xac/xae EGYPTIAN HIEROGLYPH-13B2E
+<U00013B2F> /xf0/x93/xac/xaf EGYPTIAN HIEROGLYPH-13B2F
+<U00013B30> /xf0/x93/xac/xb0 EGYPTIAN HIEROGLYPH-13B30
+<U00013B31> /xf0/x93/xac/xb1 EGYPTIAN HIEROGLYPH-13B31
+<U00013B32> /xf0/x93/xac/xb2 EGYPTIAN HIEROGLYPH-13B32
+<U00013B33> /xf0/x93/xac/xb3 EGYPTIAN HIEROGLYPH-13B33
+<U00013B34> /xf0/x93/xac/xb4 EGYPTIAN HIEROGLYPH-13B34
+<U00013B35> /xf0/x93/xac/xb5 EGYPTIAN HIEROGLYPH-13B35
+<U00013B36> /xf0/x93/xac/xb6 EGYPTIAN HIEROGLYPH-13B36
+<U00013B37> /xf0/x93/xac/xb7 EGYPTIAN HIEROGLYPH-13B37
+<U00013B38> /xf0/x93/xac/xb8 EGYPTIAN HIEROGLYPH-13B38
+<U00013B39> /xf0/x93/xac/xb9 EGYPTIAN HIEROGLYPH-13B39
+<U00013B3A> /xf0/x93/xac/xba EGYPTIAN HIEROGLYPH-13B3A
+<U00013B3B> /xf0/x93/xac/xbb EGYPTIAN HIEROGLYPH-13B3B
+<U00013B3C> /xf0/x93/xac/xbc EGYPTIAN HIEROGLYPH-13B3C
+<U00013B3D> /xf0/x93/xac/xbd EGYPTIAN HIEROGLYPH-13B3D
+<U00013B3E> /xf0/x93/xac/xbe EGYPTIAN HIEROGLYPH-13B3E
+<U00013B3F> /xf0/x93/xac/xbf EGYPTIAN HIEROGLYPH-13B3F
+<U00013B40> /xf0/x93/xad/x80 EGYPTIAN HIEROGLYPH-13B40
+<U00013B41> /xf0/x93/xad/x81 EGYPTIAN HIEROGLYPH-13B41
+<U00013B42> /xf0/x93/xad/x82 EGYPTIAN HIEROGLYPH-13B42
+<U00013B43> /xf0/x93/xad/x83 EGYPTIAN HIEROGLYPH-13B43
+<U00013B44> /xf0/x93/xad/x84 EGYPTIAN HIEROGLYPH-13B44
+<U00013B45> /xf0/x93/xad/x85 EGYPTIAN HIEROGLYPH-13B45
+<U00013B46> /xf0/x93/xad/x86 EGYPTIAN HIEROGLYPH-13B46
+<U00013B47> /xf0/x93/xad/x87 EGYPTIAN HIEROGLYPH-13B47
+<U00013B48> /xf0/x93/xad/x88 EGYPTIAN HIEROGLYPH-13B48
+<U00013B49> /xf0/x93/xad/x89 EGYPTIAN HIEROGLYPH-13B49
+<U00013B4A> /xf0/x93/xad/x8a EGYPTIAN HIEROGLYPH-13B4A
+<U00013B4B> /xf0/x93/xad/x8b EGYPTIAN HIEROGLYPH-13B4B
+<U00013B4C> /xf0/x93/xad/x8c EGYPTIAN HIEROGLYPH-13B4C
+<U00013B4D> /xf0/x93/xad/x8d EGYPTIAN HIEROGLYPH-13B4D
+<U00013B4E> /xf0/x93/xad/x8e EGYPTIAN HIEROGLYPH-13B4E
+<U00013B4F> /xf0/x93/xad/x8f EGYPTIAN HIEROGLYPH-13B4F
+<U00013B50> /xf0/x93/xad/x90 EGYPTIAN HIEROGLYPH-13B50
+<U00013B51> /xf0/x93/xad/x91 EGYPTIAN HIEROGLYPH-13B51
+<U00013B52> /xf0/x93/xad/x92 EGYPTIAN HIEROGLYPH-13B52
+<U00013B53> /xf0/x93/xad/x93 EGYPTIAN HIEROGLYPH-13B53
+<U00013B54> /xf0/x93/xad/x94 EGYPTIAN HIEROGLYPH-13B54
+<U00013B55> /xf0/x93/xad/x95 EGYPTIAN HIEROGLYPH-13B55
+<U00013B56> /xf0/x93/xad/x96 EGYPTIAN HIEROGLYPH-13B56
+<U00013B57> /xf0/x93/xad/x97 EGYPTIAN HIEROGLYPH-13B57
+<U00013B58> /xf0/x93/xad/x98 EGYPTIAN HIEROGLYPH-13B58
+<U00013B59> /xf0/x93/xad/x99 EGYPTIAN HIEROGLYPH-13B59
+<U00013B5A> /xf0/x93/xad/x9a EGYPTIAN HIEROGLYPH-13B5A
+<U00013B5B> /xf0/x93/xad/x9b EGYPTIAN HIEROGLYPH-13B5B
+<U00013B5C> /xf0/x93/xad/x9c EGYPTIAN HIEROGLYPH-13B5C
+<U00013B5D> /xf0/x93/xad/x9d EGYPTIAN HIEROGLYPH-13B5D
+<U00013B5E> /xf0/x93/xad/x9e EGYPTIAN HIEROGLYPH-13B5E
+<U00013B5F> /xf0/x93/xad/x9f EGYPTIAN HIEROGLYPH-13B5F
+<U00013B60> /xf0/x93/xad/xa0 EGYPTIAN HIEROGLYPH-13B60
+<U00013B61> /xf0/x93/xad/xa1 EGYPTIAN HIEROGLYPH-13B61
+<U00013B62> /xf0/x93/xad/xa2 EGYPTIAN HIEROGLYPH-13B62
+<U00013B63> /xf0/x93/xad/xa3 EGYPTIAN HIEROGLYPH-13B63
+<U00013B64> /xf0/x93/xad/xa4 EGYPTIAN HIEROGLYPH-13B64
+<U00013B65> /xf0/x93/xad/xa5 EGYPTIAN HIEROGLYPH-13B65
+<U00013B66> /xf0/x93/xad/xa6 EGYPTIAN HIEROGLYPH-13B66
+<U00013B67> /xf0/x93/xad/xa7 EGYPTIAN HIEROGLYPH-13B67
+<U00013B68> /xf0/x93/xad/xa8 EGYPTIAN HIEROGLYPH-13B68
+<U00013B69> /xf0/x93/xad/xa9 EGYPTIAN HIEROGLYPH-13B69
+<U00013B6A> /xf0/x93/xad/xaa EGYPTIAN HIEROGLYPH-13B6A
+<U00013B6B> /xf0/x93/xad/xab EGYPTIAN HIEROGLYPH-13B6B
+<U00013B6C> /xf0/x93/xad/xac EGYPTIAN HIEROGLYPH-13B6C
+<U00013B6D> /xf0/x93/xad/xad EGYPTIAN HIEROGLYPH-13B6D
+<U00013B6E> /xf0/x93/xad/xae EGYPTIAN HIEROGLYPH-13B6E
+<U00013B6F> /xf0/x93/xad/xaf EGYPTIAN HIEROGLYPH-13B6F
+<U00013B70> /xf0/x93/xad/xb0 EGYPTIAN HIEROGLYPH-13B70
+<U00013B71> /xf0/x93/xad/xb1 EGYPTIAN HIEROGLYPH-13B71
+<U00013B72> /xf0/x93/xad/xb2 EGYPTIAN HIEROGLYPH-13B72
+<U00013B73> /xf0/x93/xad/xb3 EGYPTIAN HIEROGLYPH-13B73
+<U00013B74> /xf0/x93/xad/xb4 EGYPTIAN HIEROGLYPH-13B74
+<U00013B75> /xf0/x93/xad/xb5 EGYPTIAN HIEROGLYPH-13B75
+<U00013B76> /xf0/x93/xad/xb6 EGYPTIAN HIEROGLYPH-13B76
+<U00013B77> /xf0/x93/xad/xb7 EGYPTIAN HIEROGLYPH-13B77
+<U00013B78> /xf0/x93/xad/xb8 EGYPTIAN HIEROGLYPH-13B78
+<U00013B79> /xf0/x93/xad/xb9 EGYPTIAN HIEROGLYPH-13B79
+<U00013B7A> /xf0/x93/xad/xba EGYPTIAN HIEROGLYPH-13B7A
+<U00013B7B> /xf0/x93/xad/xbb EGYPTIAN HIEROGLYPH-13B7B
+<U00013B7C> /xf0/x93/xad/xbc EGYPTIAN HIEROGLYPH-13B7C
+<U00013B7D> /xf0/x93/xad/xbd EGYPTIAN HIEROGLYPH-13B7D
+<U00013B7E> /xf0/x93/xad/xbe EGYPTIAN HIEROGLYPH-13B7E
+<U00013B7F> /xf0/x93/xad/xbf EGYPTIAN HIEROGLYPH-13B7F
+<U00013B80> /xf0/x93/xae/x80 EGYPTIAN HIEROGLYPH-13B80
+<U00013B81> /xf0/x93/xae/x81 EGYPTIAN HIEROGLYPH-13B81
+<U00013B82> /xf0/x93/xae/x82 EGYPTIAN HIEROGLYPH-13B82
+<U00013B83> /xf0/x93/xae/x83 EGYPTIAN HIEROGLYPH-13B83
+<U00013B84> /xf0/x93/xae/x84 EGYPTIAN HIEROGLYPH-13B84
+<U00013B85> /xf0/x93/xae/x85 EGYPTIAN HIEROGLYPH-13B85
+<U00013B86> /xf0/x93/xae/x86 EGYPTIAN HIEROGLYPH-13B86
+<U00013B87> /xf0/x93/xae/x87 EGYPTIAN HIEROGLYPH-13B87
+<U00013B88> /xf0/x93/xae/x88 EGYPTIAN HIEROGLYPH-13B88
+<U00013B89> /xf0/x93/xae/x89 EGYPTIAN HIEROGLYPH-13B89
+<U00013B8A> /xf0/x93/xae/x8a EGYPTIAN HIEROGLYPH-13B8A
+<U00013B8B> /xf0/x93/xae/x8b EGYPTIAN HIEROGLYPH-13B8B
+<U00013B8C> /xf0/x93/xae/x8c EGYPTIAN HIEROGLYPH-13B8C
+<U00013B8D> /xf0/x93/xae/x8d EGYPTIAN HIEROGLYPH-13B8D
+<U00013B8E> /xf0/x93/xae/x8e EGYPTIAN HIEROGLYPH-13B8E
+<U00013B8F> /xf0/x93/xae/x8f EGYPTIAN HIEROGLYPH-13B8F
+<U00013B90> /xf0/x93/xae/x90 EGYPTIAN HIEROGLYPH-13B90
+<U00013B91> /xf0/x93/xae/x91 EGYPTIAN HIEROGLYPH-13B91
+<U00013B92> /xf0/x93/xae/x92 EGYPTIAN HIEROGLYPH-13B92
+<U00013B93> /xf0/x93/xae/x93 EGYPTIAN HIEROGLYPH-13B93
+<U00013B94> /xf0/x93/xae/x94 EGYPTIAN HIEROGLYPH-13B94
+<U00013B95> /xf0/x93/xae/x95 EGYPTIAN HIEROGLYPH-13B95
+<U00013B96> /xf0/x93/xae/x96 EGYPTIAN HIEROGLYPH-13B96
+<U00013B97> /xf0/x93/xae/x97 EGYPTIAN HIEROGLYPH-13B97
+<U00013B98> /xf0/x93/xae/x98 EGYPTIAN HIEROGLYPH-13B98
+<U00013B99> /xf0/x93/xae/x99 EGYPTIAN HIEROGLYPH-13B99
+<U00013B9A> /xf0/x93/xae/x9a EGYPTIAN HIEROGLYPH-13B9A
+<U00013B9B> /xf0/x93/xae/x9b EGYPTIAN HIEROGLYPH-13B9B
+<U00013B9C> /xf0/x93/xae/x9c EGYPTIAN HIEROGLYPH-13B9C
+<U00013B9D> /xf0/x93/xae/x9d EGYPTIAN HIEROGLYPH-13B9D
+<U00013B9E> /xf0/x93/xae/x9e EGYPTIAN HIEROGLYPH-13B9E
+<U00013B9F> /xf0/x93/xae/x9f EGYPTIAN HIEROGLYPH-13B9F
+<U00013BA0> /xf0/x93/xae/xa0 EGYPTIAN HIEROGLYPH-13BA0
+<U00013BA1> /xf0/x93/xae/xa1 EGYPTIAN HIEROGLYPH-13BA1
+<U00013BA2> /xf0/x93/xae/xa2 EGYPTIAN HIEROGLYPH-13BA2
+<U00013BA3> /xf0/x93/xae/xa3 EGYPTIAN HIEROGLYPH-13BA3
+<U00013BA4> /xf0/x93/xae/xa4 EGYPTIAN HIEROGLYPH-13BA4
+<U00013BA5> /xf0/x93/xae/xa5 EGYPTIAN HIEROGLYPH-13BA5
+<U00013BA6> /xf0/x93/xae/xa6 EGYPTIAN HIEROGLYPH-13BA6
+<U00013BA7> /xf0/x93/xae/xa7 EGYPTIAN HIEROGLYPH-13BA7
+<U00013BA8> /xf0/x93/xae/xa8 EGYPTIAN HIEROGLYPH-13BA8
+<U00013BA9> /xf0/x93/xae/xa9 EGYPTIAN HIEROGLYPH-13BA9
+<U00013BAA> /xf0/x93/xae/xaa EGYPTIAN HIEROGLYPH-13BAA
+<U00013BAB> /xf0/x93/xae/xab EGYPTIAN HIEROGLYPH-13BAB
+<U00013BAC> /xf0/x93/xae/xac EGYPTIAN HIEROGLYPH-13BAC
+<U00013BAD> /xf0/x93/xae/xad EGYPTIAN HIEROGLYPH-13BAD
+<U00013BAE> /xf0/x93/xae/xae EGYPTIAN HIEROGLYPH-13BAE
+<U00013BAF> /xf0/x93/xae/xaf EGYPTIAN HIEROGLYPH-13BAF
+<U00013BB0> /xf0/x93/xae/xb0 EGYPTIAN HIEROGLYPH-13BB0
+<U00013BB1> /xf0/x93/xae/xb1 EGYPTIAN HIEROGLYPH-13BB1
+<U00013BB2> /xf0/x93/xae/xb2 EGYPTIAN HIEROGLYPH-13BB2
+<U00013BB3> /xf0/x93/xae/xb3 EGYPTIAN HIEROGLYPH-13BB3
+<U00013BB4> /xf0/x93/xae/xb4 EGYPTIAN HIEROGLYPH-13BB4
+<U00013BB5> /xf0/x93/xae/xb5 EGYPTIAN HIEROGLYPH-13BB5
+<U00013BB6> /xf0/x93/xae/xb6 EGYPTIAN HIEROGLYPH-13BB6
+<U00013BB7> /xf0/x93/xae/xb7 EGYPTIAN HIEROGLYPH-13BB7
+<U00013BB8> /xf0/x93/xae/xb8 EGYPTIAN HIEROGLYPH-13BB8
+<U00013BB9> /xf0/x93/xae/xb9 EGYPTIAN HIEROGLYPH-13BB9
+<U00013BBA> /xf0/x93/xae/xba EGYPTIAN HIEROGLYPH-13BBA
+<U00013BBB> /xf0/x93/xae/xbb EGYPTIAN HIEROGLYPH-13BBB
+<U00013BBC> /xf0/x93/xae/xbc EGYPTIAN HIEROGLYPH-13BBC
+<U00013BBD> /xf0/x93/xae/xbd EGYPTIAN HIEROGLYPH-13BBD
+<U00013BBE> /xf0/x93/xae/xbe EGYPTIAN HIEROGLYPH-13BBE
+<U00013BBF> /xf0/x93/xae/xbf EGYPTIAN HIEROGLYPH-13BBF
+<U00013BC0> /xf0/x93/xaf/x80 EGYPTIAN HIEROGLYPH-13BC0
+<U00013BC1> /xf0/x93/xaf/x81 EGYPTIAN HIEROGLYPH-13BC1
+<U00013BC2> /xf0/x93/xaf/x82 EGYPTIAN HIEROGLYPH-13BC2
+<U00013BC3> /xf0/x93/xaf/x83 EGYPTIAN HIEROGLYPH-13BC3
+<U00013BC4> /xf0/x93/xaf/x84 EGYPTIAN HIEROGLYPH-13BC4
+<U00013BC5> /xf0/x93/xaf/x85 EGYPTIAN HIEROGLYPH-13BC5
+<U00013BC6> /xf0/x93/xaf/x86 EGYPTIAN HIEROGLYPH-13BC6
+<U00013BC7> /xf0/x93/xaf/x87 EGYPTIAN HIEROGLYPH-13BC7
+<U00013BC8> /xf0/x93/xaf/x88 EGYPTIAN HIEROGLYPH-13BC8
+<U00013BC9> /xf0/x93/xaf/x89 EGYPTIAN HIEROGLYPH-13BC9
+<U00013BCA> /xf0/x93/xaf/x8a EGYPTIAN HIEROGLYPH-13BCA
+<U00013BCB> /xf0/x93/xaf/x8b EGYPTIAN HIEROGLYPH-13BCB
+<U00013BCC> /xf0/x93/xaf/x8c EGYPTIAN HIEROGLYPH-13BCC
+<U00013BCD> /xf0/x93/xaf/x8d EGYPTIAN HIEROGLYPH-13BCD
+<U00013BCE> /xf0/x93/xaf/x8e EGYPTIAN HIEROGLYPH-13BCE
+<U00013BCF> /xf0/x93/xaf/x8f EGYPTIAN HIEROGLYPH-13BCF
+<U00013BD0> /xf0/x93/xaf/x90 EGYPTIAN HIEROGLYPH-13BD0
+<U00013BD1> /xf0/x93/xaf/x91 EGYPTIAN HIEROGLYPH-13BD1
+<U00013BD2> /xf0/x93/xaf/x92 EGYPTIAN HIEROGLYPH-13BD2
+<U00013BD3> /xf0/x93/xaf/x93 EGYPTIAN HIEROGLYPH-13BD3
+<U00013BD4> /xf0/x93/xaf/x94 EGYPTIAN HIEROGLYPH-13BD4
+<U00013BD5> /xf0/x93/xaf/x95 EGYPTIAN HIEROGLYPH-13BD5
+<U00013BD6> /xf0/x93/xaf/x96 EGYPTIAN HIEROGLYPH-13BD6
+<U00013BD7> /xf0/x93/xaf/x97 EGYPTIAN HIEROGLYPH-13BD7
+<U00013BD8> /xf0/x93/xaf/x98 EGYPTIAN HIEROGLYPH-13BD8
+<U00013BD9> /xf0/x93/xaf/x99 EGYPTIAN HIEROGLYPH-13BD9
+<U00013BDA> /xf0/x93/xaf/x9a EGYPTIAN HIEROGLYPH-13BDA
+<U00013BDB> /xf0/x93/xaf/x9b EGYPTIAN HIEROGLYPH-13BDB
+<U00013BDC> /xf0/x93/xaf/x9c EGYPTIAN HIEROGLYPH-13BDC
+<U00013BDD> /xf0/x93/xaf/x9d EGYPTIAN HIEROGLYPH-13BDD
+<U00013BDE> /xf0/x93/xaf/x9e EGYPTIAN HIEROGLYPH-13BDE
+<U00013BDF> /xf0/x93/xaf/x9f EGYPTIAN HIEROGLYPH-13BDF
+<U00013BE0> /xf0/x93/xaf/xa0 EGYPTIAN HIEROGLYPH-13BE0
+<U00013BE1> /xf0/x93/xaf/xa1 EGYPTIAN HIEROGLYPH-13BE1
+<U00013BE2> /xf0/x93/xaf/xa2 EGYPTIAN HIEROGLYPH-13BE2
+<U00013BE3> /xf0/x93/xaf/xa3 EGYPTIAN HIEROGLYPH-13BE3
+<U00013BE4> /xf0/x93/xaf/xa4 EGYPTIAN HIEROGLYPH-13BE4
+<U00013BE5> /xf0/x93/xaf/xa5 EGYPTIAN HIEROGLYPH-13BE5
+<U00013BE6> /xf0/x93/xaf/xa6 EGYPTIAN HIEROGLYPH-13BE6
+<U00013BE7> /xf0/x93/xaf/xa7 EGYPTIAN HIEROGLYPH-13BE7
+<U00013BE8> /xf0/x93/xaf/xa8 EGYPTIAN HIEROGLYPH-13BE8
+<U00013BE9> /xf0/x93/xaf/xa9 EGYPTIAN HIEROGLYPH-13BE9
+<U00013BEA> /xf0/x93/xaf/xaa EGYPTIAN HIEROGLYPH-13BEA
+<U00013BEB> /xf0/x93/xaf/xab EGYPTIAN HIEROGLYPH-13BEB
+<U00013BEC> /xf0/x93/xaf/xac EGYPTIAN HIEROGLYPH-13BEC
+<U00013BED> /xf0/x93/xaf/xad EGYPTIAN HIEROGLYPH-13BED
+<U00013BEE> /xf0/x93/xaf/xae EGYPTIAN HIEROGLYPH-13BEE
+<U00013BEF> /xf0/x93/xaf/xaf EGYPTIAN HIEROGLYPH-13BEF
+<U00013BF0> /xf0/x93/xaf/xb0 EGYPTIAN HIEROGLYPH-13BF0
+<U00013BF1> /xf0/x93/xaf/xb1 EGYPTIAN HIEROGLYPH-13BF1
+<U00013BF2> /xf0/x93/xaf/xb2 EGYPTIAN HIEROGLYPH-13BF2
+<U00013BF3> /xf0/x93/xaf/xb3 EGYPTIAN HIEROGLYPH-13BF3
+<U00013BF4> /xf0/x93/xaf/xb4 EGYPTIAN HIEROGLYPH-13BF4
+<U00013BF5> /xf0/x93/xaf/xb5 EGYPTIAN HIEROGLYPH-13BF5
+<U00013BF6> /xf0/x93/xaf/xb6 EGYPTIAN HIEROGLYPH-13BF6
+<U00013BF7> /xf0/x93/xaf/xb7 EGYPTIAN HIEROGLYPH-13BF7
+<U00013BF8> /xf0/x93/xaf/xb8 EGYPTIAN HIEROGLYPH-13BF8
+<U00013BF9> /xf0/x93/xaf/xb9 EGYPTIAN HIEROGLYPH-13BF9
+<U00013BFA> /xf0/x93/xaf/xba EGYPTIAN HIEROGLYPH-13BFA
+<U00013BFB> /xf0/x93/xaf/xbb EGYPTIAN HIEROGLYPH-13BFB
+<U00013BFC> /xf0/x93/xaf/xbc EGYPTIAN HIEROGLYPH-13BFC
+<U00013BFD> /xf0/x93/xaf/xbd EGYPTIAN HIEROGLYPH-13BFD
+<U00013BFE> /xf0/x93/xaf/xbe EGYPTIAN HIEROGLYPH-13BFE
+<U00013BFF> /xf0/x93/xaf/xbf EGYPTIAN HIEROGLYPH-13BFF
+<U00013C00> /xf0/x93/xb0/x80 EGYPTIAN HIEROGLYPH-13C00
+<U00013C01> /xf0/x93/xb0/x81 EGYPTIAN HIEROGLYPH-13C01
+<U00013C02> /xf0/x93/xb0/x82 EGYPTIAN HIEROGLYPH-13C02
+<U00013C03> /xf0/x93/xb0/x83 EGYPTIAN HIEROGLYPH-13C03
+<U00013C04> /xf0/x93/xb0/x84 EGYPTIAN HIEROGLYPH-13C04
+<U00013C05> /xf0/x93/xb0/x85 EGYPTIAN HIEROGLYPH-13C05
+<U00013C06> /xf0/x93/xb0/x86 EGYPTIAN HIEROGLYPH-13C06
+<U00013C07> /xf0/x93/xb0/x87 EGYPTIAN HIEROGLYPH-13C07
+<U00013C08> /xf0/x93/xb0/x88 EGYPTIAN HIEROGLYPH-13C08
+<U00013C09> /xf0/x93/xb0/x89 EGYPTIAN HIEROGLYPH-13C09
+<U00013C0A> /xf0/x93/xb0/x8a EGYPTIAN HIEROGLYPH-13C0A
+<U00013C0B> /xf0/x93/xb0/x8b EGYPTIAN HIEROGLYPH-13C0B
+<U00013C0C> /xf0/x93/xb0/x8c EGYPTIAN HIEROGLYPH-13C0C
+<U00013C0D> /xf0/x93/xb0/x8d EGYPTIAN HIEROGLYPH-13C0D
+<U00013C0E> /xf0/x93/xb0/x8e EGYPTIAN HIEROGLYPH-13C0E
+<U00013C0F> /xf0/x93/xb0/x8f EGYPTIAN HIEROGLYPH-13C0F
+<U00013C10> /xf0/x93/xb0/x90 EGYPTIAN HIEROGLYPH-13C10
+<U00013C11> /xf0/x93/xb0/x91 EGYPTIAN HIEROGLYPH-13C11
+<U00013C12> /xf0/x93/xb0/x92 EGYPTIAN HIEROGLYPH-13C12
+<U00013C13> /xf0/x93/xb0/x93 EGYPTIAN HIEROGLYPH-13C13
+<U00013C14> /xf0/x93/xb0/x94 EGYPTIAN HIEROGLYPH-13C14
+<U00013C15> /xf0/x93/xb0/x95 EGYPTIAN HIEROGLYPH-13C15
+<U00013C16> /xf0/x93/xb0/x96 EGYPTIAN HIEROGLYPH-13C16
+<U00013C17> /xf0/x93/xb0/x97 EGYPTIAN HIEROGLYPH-13C17
+<U00013C18> /xf0/x93/xb0/x98 EGYPTIAN HIEROGLYPH-13C18
+<U00013C19> /xf0/x93/xb0/x99 EGYPTIAN HIEROGLYPH-13C19
+<U00013C1A> /xf0/x93/xb0/x9a EGYPTIAN HIEROGLYPH-13C1A
+<U00013C1B> /xf0/x93/xb0/x9b EGYPTIAN HIEROGLYPH-13C1B
+<U00013C1C> /xf0/x93/xb0/x9c EGYPTIAN HIEROGLYPH-13C1C
+<U00013C1D> /xf0/x93/xb0/x9d EGYPTIAN HIEROGLYPH-13C1D
+<U00013C1E> /xf0/x93/xb0/x9e EGYPTIAN HIEROGLYPH-13C1E
+<U00013C1F> /xf0/x93/xb0/x9f EGYPTIAN HIEROGLYPH-13C1F
+<U00013C20> /xf0/x93/xb0/xa0 EGYPTIAN HIEROGLYPH-13C20
+<U00013C21> /xf0/x93/xb0/xa1 EGYPTIAN HIEROGLYPH-13C21
+<U00013C22> /xf0/x93/xb0/xa2 EGYPTIAN HIEROGLYPH-13C22
+<U00013C23> /xf0/x93/xb0/xa3 EGYPTIAN HIEROGLYPH-13C23
+<U00013C24> /xf0/x93/xb0/xa4 EGYPTIAN HIEROGLYPH-13C24
+<U00013C25> /xf0/x93/xb0/xa5 EGYPTIAN HIEROGLYPH-13C25
+<U00013C26> /xf0/x93/xb0/xa6 EGYPTIAN HIEROGLYPH-13C26
+<U00013C27> /xf0/x93/xb0/xa7 EGYPTIAN HIEROGLYPH-13C27
+<U00013C28> /xf0/x93/xb0/xa8 EGYPTIAN HIEROGLYPH-13C28
+<U00013C29> /xf0/x93/xb0/xa9 EGYPTIAN HIEROGLYPH-13C29
+<U00013C2A> /xf0/x93/xb0/xaa EGYPTIAN HIEROGLYPH-13C2A
+<U00013C2B> /xf0/x93/xb0/xab EGYPTIAN HIEROGLYPH-13C2B
+<U00013C2C> /xf0/x93/xb0/xac EGYPTIAN HIEROGLYPH-13C2C
+<U00013C2D> /xf0/x93/xb0/xad EGYPTIAN HIEROGLYPH-13C2D
+<U00013C2E> /xf0/x93/xb0/xae EGYPTIAN HIEROGLYPH-13C2E
+<U00013C2F> /xf0/x93/xb0/xaf EGYPTIAN HIEROGLYPH-13C2F
+<U00013C30> /xf0/x93/xb0/xb0 EGYPTIAN HIEROGLYPH-13C30
+<U00013C31> /xf0/x93/xb0/xb1 EGYPTIAN HIEROGLYPH-13C31
+<U00013C32> /xf0/x93/xb0/xb2 EGYPTIAN HIEROGLYPH-13C32
+<U00013C33> /xf0/x93/xb0/xb3 EGYPTIAN HIEROGLYPH-13C33
+<U00013C34> /xf0/x93/xb0/xb4 EGYPTIAN HIEROGLYPH-13C34
+<U00013C35> /xf0/x93/xb0/xb5 EGYPTIAN HIEROGLYPH-13C35
+<U00013C36> /xf0/x93/xb0/xb6 EGYPTIAN HIEROGLYPH-13C36
+<U00013C37> /xf0/x93/xb0/xb7 EGYPTIAN HIEROGLYPH-13C37
+<U00013C38> /xf0/x93/xb0/xb8 EGYPTIAN HIEROGLYPH-13C38
+<U00013C39> /xf0/x93/xb0/xb9 EGYPTIAN HIEROGLYPH-13C39
+<U00013C3A> /xf0/x93/xb0/xba EGYPTIAN HIEROGLYPH-13C3A
+<U00013C3B> /xf0/x93/xb0/xbb EGYPTIAN HIEROGLYPH-13C3B
+<U00013C3C> /xf0/x93/xb0/xbc EGYPTIAN HIEROGLYPH-13C3C
+<U00013C3D> /xf0/x93/xb0/xbd EGYPTIAN HIEROGLYPH-13C3D
+<U00013C3E> /xf0/x93/xb0/xbe EGYPTIAN HIEROGLYPH-13C3E
+<U00013C3F> /xf0/x93/xb0/xbf EGYPTIAN HIEROGLYPH-13C3F
+<U00013C40> /xf0/x93/xb1/x80 EGYPTIAN HIEROGLYPH-13C40
+<U00013C41> /xf0/x93/xb1/x81 EGYPTIAN HIEROGLYPH-13C41
+<U00013C42> /xf0/x93/xb1/x82 EGYPTIAN HIEROGLYPH-13C42
+<U00013C43> /xf0/x93/xb1/x83 EGYPTIAN HIEROGLYPH-13C43
+<U00013C44> /xf0/x93/xb1/x84 EGYPTIAN HIEROGLYPH-13C44
+<U00013C45> /xf0/x93/xb1/x85 EGYPTIAN HIEROGLYPH-13C45
+<U00013C46> /xf0/x93/xb1/x86 EGYPTIAN HIEROGLYPH-13C46
+<U00013C47> /xf0/x93/xb1/x87 EGYPTIAN HIEROGLYPH-13C47
+<U00013C48> /xf0/x93/xb1/x88 EGYPTIAN HIEROGLYPH-13C48
+<U00013C49> /xf0/x93/xb1/x89 EGYPTIAN HIEROGLYPH-13C49
+<U00013C4A> /xf0/x93/xb1/x8a EGYPTIAN HIEROGLYPH-13C4A
+<U00013C4B> /xf0/x93/xb1/x8b EGYPTIAN HIEROGLYPH-13C4B
+<U00013C4C> /xf0/x93/xb1/x8c EGYPTIAN HIEROGLYPH-13C4C
+<U00013C4D> /xf0/x93/xb1/x8d EGYPTIAN HIEROGLYPH-13C4D
+<U00013C4E> /xf0/x93/xb1/x8e EGYPTIAN HIEROGLYPH-13C4E
+<U00013C4F> /xf0/x93/xb1/x8f EGYPTIAN HIEROGLYPH-13C4F
+<U00013C50> /xf0/x93/xb1/x90 EGYPTIAN HIEROGLYPH-13C50
+<U00013C51> /xf0/x93/xb1/x91 EGYPTIAN HIEROGLYPH-13C51
+<U00013C52> /xf0/x93/xb1/x92 EGYPTIAN HIEROGLYPH-13C52
+<U00013C53> /xf0/x93/xb1/x93 EGYPTIAN HIEROGLYPH-13C53
+<U00013C54> /xf0/x93/xb1/x94 EGYPTIAN HIEROGLYPH-13C54
+<U00013C55> /xf0/x93/xb1/x95 EGYPTIAN HIEROGLYPH-13C55
+<U00013C56> /xf0/x93/xb1/x96 EGYPTIAN HIEROGLYPH-13C56
+<U00013C57> /xf0/x93/xb1/x97 EGYPTIAN HIEROGLYPH-13C57
+<U00013C58> /xf0/x93/xb1/x98 EGYPTIAN HIEROGLYPH-13C58
+<U00013C59> /xf0/x93/xb1/x99 EGYPTIAN HIEROGLYPH-13C59
+<U00013C5A> /xf0/x93/xb1/x9a EGYPTIAN HIEROGLYPH-13C5A
+<U00013C5B> /xf0/x93/xb1/x9b EGYPTIAN HIEROGLYPH-13C5B
+<U00013C5C> /xf0/x93/xb1/x9c EGYPTIAN HIEROGLYPH-13C5C
+<U00013C5D> /xf0/x93/xb1/x9d EGYPTIAN HIEROGLYPH-13C5D
+<U00013C5E> /xf0/x93/xb1/x9e EGYPTIAN HIEROGLYPH-13C5E
+<U00013C5F> /xf0/x93/xb1/x9f EGYPTIAN HIEROGLYPH-13C5F
+<U00013C60> /xf0/x93/xb1/xa0 EGYPTIAN HIEROGLYPH-13C60
+<U00013C61> /xf0/x93/xb1/xa1 EGYPTIAN HIEROGLYPH-13C61
+<U00013C62> /xf0/x93/xb1/xa2 EGYPTIAN HIEROGLYPH-13C62
+<U00013C63> /xf0/x93/xb1/xa3 EGYPTIAN HIEROGLYPH-13C63
+<U00013C64> /xf0/x93/xb1/xa4 EGYPTIAN HIEROGLYPH-13C64
+<U00013C65> /xf0/x93/xb1/xa5 EGYPTIAN HIEROGLYPH-13C65
+<U00013C66> /xf0/x93/xb1/xa6 EGYPTIAN HIEROGLYPH-13C66
+<U00013C67> /xf0/x93/xb1/xa7 EGYPTIAN HIEROGLYPH-13C67
+<U00013C68> /xf0/x93/xb1/xa8 EGYPTIAN HIEROGLYPH-13C68
+<U00013C69> /xf0/x93/xb1/xa9 EGYPTIAN HIEROGLYPH-13C69
+<U00013C6A> /xf0/x93/xb1/xaa EGYPTIAN HIEROGLYPH-13C6A
+<U00013C6B> /xf0/x93/xb1/xab EGYPTIAN HIEROGLYPH-13C6B
+<U00013C6C> /xf0/x93/xb1/xac EGYPTIAN HIEROGLYPH-13C6C
+<U00013C6D> /xf0/x93/xb1/xad EGYPTIAN HIEROGLYPH-13C6D
+<U00013C6E> /xf0/x93/xb1/xae EGYPTIAN HIEROGLYPH-13C6E
+<U00013C6F> /xf0/x93/xb1/xaf EGYPTIAN HIEROGLYPH-13C6F
+<U00013C70> /xf0/x93/xb1/xb0 EGYPTIAN HIEROGLYPH-13C70
+<U00013C71> /xf0/x93/xb1/xb1 EGYPTIAN HIEROGLYPH-13C71
+<U00013C72> /xf0/x93/xb1/xb2 EGYPTIAN HIEROGLYPH-13C72
+<U00013C73> /xf0/x93/xb1/xb3 EGYPTIAN HIEROGLYPH-13C73
+<U00013C74> /xf0/x93/xb1/xb4 EGYPTIAN HIEROGLYPH-13C74
+<U00013C75> /xf0/x93/xb1/xb5 EGYPTIAN HIEROGLYPH-13C75
+<U00013C76> /xf0/x93/xb1/xb6 EGYPTIAN HIEROGLYPH-13C76
+<U00013C77> /xf0/x93/xb1/xb7 EGYPTIAN HIEROGLYPH-13C77
+<U00013C78> /xf0/x93/xb1/xb8 EGYPTIAN HIEROGLYPH-13C78
+<U00013C79> /xf0/x93/xb1/xb9 EGYPTIAN HIEROGLYPH-13C79
+<U00013C7A> /xf0/x93/xb1/xba EGYPTIAN HIEROGLYPH-13C7A
+<U00013C7B> /xf0/x93/xb1/xbb EGYPTIAN HIEROGLYPH-13C7B
+<U00013C7C> /xf0/x93/xb1/xbc EGYPTIAN HIEROGLYPH-13C7C
+<U00013C7D> /xf0/x93/xb1/xbd EGYPTIAN HIEROGLYPH-13C7D
+<U00013C7E> /xf0/x93/xb1/xbe EGYPTIAN HIEROGLYPH-13C7E
+<U00013C7F> /xf0/x93/xb1/xbf EGYPTIAN HIEROGLYPH-13C7F
+<U00013C80> /xf0/x93/xb2/x80 EGYPTIAN HIEROGLYPH-13C80
+<U00013C81> /xf0/x93/xb2/x81 EGYPTIAN HIEROGLYPH-13C81
+<U00013C82> /xf0/x93/xb2/x82 EGYPTIAN HIEROGLYPH-13C82
+<U00013C83> /xf0/x93/xb2/x83 EGYPTIAN HIEROGLYPH-13C83
+<U00013C84> /xf0/x93/xb2/x84 EGYPTIAN HIEROGLYPH-13C84
+<U00013C85> /xf0/x93/xb2/x85 EGYPTIAN HIEROGLYPH-13C85
+<U00013C86> /xf0/x93/xb2/x86 EGYPTIAN HIEROGLYPH-13C86
+<U00013C87> /xf0/x93/xb2/x87 EGYPTIAN HIEROGLYPH-13C87
+<U00013C88> /xf0/x93/xb2/x88 EGYPTIAN HIEROGLYPH-13C88
+<U00013C89> /xf0/x93/xb2/x89 EGYPTIAN HIEROGLYPH-13C89
+<U00013C8A> /xf0/x93/xb2/x8a EGYPTIAN HIEROGLYPH-13C8A
+<U00013C8B> /xf0/x93/xb2/x8b EGYPTIAN HIEROGLYPH-13C8B
+<U00013C8C> /xf0/x93/xb2/x8c EGYPTIAN HIEROGLYPH-13C8C
+<U00013C8D> /xf0/x93/xb2/x8d EGYPTIAN HIEROGLYPH-13C8D
+<U00013C8E> /xf0/x93/xb2/x8e EGYPTIAN HIEROGLYPH-13C8E
+<U00013C8F> /xf0/x93/xb2/x8f EGYPTIAN HIEROGLYPH-13C8F
+<U00013C90> /xf0/x93/xb2/x90 EGYPTIAN HIEROGLYPH-13C90
+<U00013C91> /xf0/x93/xb2/x91 EGYPTIAN HIEROGLYPH-13C91
+<U00013C92> /xf0/x93/xb2/x92 EGYPTIAN HIEROGLYPH-13C92
+<U00013C93> /xf0/x93/xb2/x93 EGYPTIAN HIEROGLYPH-13C93
+<U00013C94> /xf0/x93/xb2/x94 EGYPTIAN HIEROGLYPH-13C94
+<U00013C95> /xf0/x93/xb2/x95 EGYPTIAN HIEROGLYPH-13C95
+<U00013C96> /xf0/x93/xb2/x96 EGYPTIAN HIEROGLYPH-13C96
+<U00013C97> /xf0/x93/xb2/x97 EGYPTIAN HIEROGLYPH-13C97
+<U00013C98> /xf0/x93/xb2/x98 EGYPTIAN HIEROGLYPH-13C98
+<U00013C99> /xf0/x93/xb2/x99 EGYPTIAN HIEROGLYPH-13C99
+<U00013C9A> /xf0/x93/xb2/x9a EGYPTIAN HIEROGLYPH-13C9A
+<U00013C9B> /xf0/x93/xb2/x9b EGYPTIAN HIEROGLYPH-13C9B
+<U00013C9C> /xf0/x93/xb2/x9c EGYPTIAN HIEROGLYPH-13C9C
+<U00013C9D> /xf0/x93/xb2/x9d EGYPTIAN HIEROGLYPH-13C9D
+<U00013C9E> /xf0/x93/xb2/x9e EGYPTIAN HIEROGLYPH-13C9E
+<U00013C9F> /xf0/x93/xb2/x9f EGYPTIAN HIEROGLYPH-13C9F
+<U00013CA0> /xf0/x93/xb2/xa0 EGYPTIAN HIEROGLYPH-13CA0
+<U00013CA1> /xf0/x93/xb2/xa1 EGYPTIAN HIEROGLYPH-13CA1
+<U00013CA2> /xf0/x93/xb2/xa2 EGYPTIAN HIEROGLYPH-13CA2
+<U00013CA3> /xf0/x93/xb2/xa3 EGYPTIAN HIEROGLYPH-13CA3
+<U00013CA4> /xf0/x93/xb2/xa4 EGYPTIAN HIEROGLYPH-13CA4
+<U00013CA5> /xf0/x93/xb2/xa5 EGYPTIAN HIEROGLYPH-13CA5
+<U00013CA6> /xf0/x93/xb2/xa6 EGYPTIAN HIEROGLYPH-13CA6
+<U00013CA7> /xf0/x93/xb2/xa7 EGYPTIAN HIEROGLYPH-13CA7
+<U00013CA8> /xf0/x93/xb2/xa8 EGYPTIAN HIEROGLYPH-13CA8
+<U00013CA9> /xf0/x93/xb2/xa9 EGYPTIAN HIEROGLYPH-13CA9
+<U00013CAA> /xf0/x93/xb2/xaa EGYPTIAN HIEROGLYPH-13CAA
+<U00013CAB> /xf0/x93/xb2/xab EGYPTIAN HIEROGLYPH-13CAB
+<U00013CAC> /xf0/x93/xb2/xac EGYPTIAN HIEROGLYPH-13CAC
+<U00013CAD> /xf0/x93/xb2/xad EGYPTIAN HIEROGLYPH-13CAD
+<U00013CAE> /xf0/x93/xb2/xae EGYPTIAN HIEROGLYPH-13CAE
+<U00013CAF> /xf0/x93/xb2/xaf EGYPTIAN HIEROGLYPH-13CAF
+<U00013CB0> /xf0/x93/xb2/xb0 EGYPTIAN HIEROGLYPH-13CB0
+<U00013CB1> /xf0/x93/xb2/xb1 EGYPTIAN HIEROGLYPH-13CB1
+<U00013CB2> /xf0/x93/xb2/xb2 EGYPTIAN HIEROGLYPH-13CB2
+<U00013CB3> /xf0/x93/xb2/xb3 EGYPTIAN HIEROGLYPH-13CB3
+<U00013CB4> /xf0/x93/xb2/xb4 EGYPTIAN HIEROGLYPH-13CB4
+<U00013CB5> /xf0/x93/xb2/xb5 EGYPTIAN HIEROGLYPH-13CB5
+<U00013CB6> /xf0/x93/xb2/xb6 EGYPTIAN HIEROGLYPH-13CB6
+<U00013CB7> /xf0/x93/xb2/xb7 EGYPTIAN HIEROGLYPH-13CB7
+<U00013CB8> /xf0/x93/xb2/xb8 EGYPTIAN HIEROGLYPH-13CB8
+<U00013CB9> /xf0/x93/xb2/xb9 EGYPTIAN HIEROGLYPH-13CB9
+<U00013CBA> /xf0/x93/xb2/xba EGYPTIAN HIEROGLYPH-13CBA
+<U00013CBB> /xf0/x93/xb2/xbb EGYPTIAN HIEROGLYPH-13CBB
+<U00013CBC> /xf0/x93/xb2/xbc EGYPTIAN HIEROGLYPH-13CBC
+<U00013CBD> /xf0/x93/xb2/xbd EGYPTIAN HIEROGLYPH-13CBD
+<U00013CBE> /xf0/x93/xb2/xbe EGYPTIAN HIEROGLYPH-13CBE
+<U00013CBF> /xf0/x93/xb2/xbf EGYPTIAN HIEROGLYPH-13CBF
+<U00013CC0> /xf0/x93/xb3/x80 EGYPTIAN HIEROGLYPH-13CC0
+<U00013CC1> /xf0/x93/xb3/x81 EGYPTIAN HIEROGLYPH-13CC1
+<U00013CC2> /xf0/x93/xb3/x82 EGYPTIAN HIEROGLYPH-13CC2
+<U00013CC3> /xf0/x93/xb3/x83 EGYPTIAN HIEROGLYPH-13CC3
+<U00013CC4> /xf0/x93/xb3/x84 EGYPTIAN HIEROGLYPH-13CC4
+<U00013CC5> /xf0/x93/xb3/x85 EGYPTIAN HIEROGLYPH-13CC5
+<U00013CC6> /xf0/x93/xb3/x86 EGYPTIAN HIEROGLYPH-13CC6
+<U00013CC7> /xf0/x93/xb3/x87 EGYPTIAN HIEROGLYPH-13CC7
+<U00013CC8> /xf0/x93/xb3/x88 EGYPTIAN HIEROGLYPH-13CC8
+<U00013CC9> /xf0/x93/xb3/x89 EGYPTIAN HIEROGLYPH-13CC9
+<U00013CCA> /xf0/x93/xb3/x8a EGYPTIAN HIEROGLYPH-13CCA
+<U00013CCB> /xf0/x93/xb3/x8b EGYPTIAN HIEROGLYPH-13CCB
+<U00013CCC> /xf0/x93/xb3/x8c EGYPTIAN HIEROGLYPH-13CCC
+<U00013CCD> /xf0/x93/xb3/x8d EGYPTIAN HIEROGLYPH-13CCD
+<U00013CCE> /xf0/x93/xb3/x8e EGYPTIAN HIEROGLYPH-13CCE
+<U00013CCF> /xf0/x93/xb3/x8f EGYPTIAN HIEROGLYPH-13CCF
+<U00013CD0> /xf0/x93/xb3/x90 EGYPTIAN HIEROGLYPH-13CD0
+<U00013CD1> /xf0/x93/xb3/x91 EGYPTIAN HIEROGLYPH-13CD1
+<U00013CD2> /xf0/x93/xb3/x92 EGYPTIAN HIEROGLYPH-13CD2
+<U00013CD3> /xf0/x93/xb3/x93 EGYPTIAN HIEROGLYPH-13CD3
+<U00013CD4> /xf0/x93/xb3/x94 EGYPTIAN HIEROGLYPH-13CD4
+<U00013CD5> /xf0/x93/xb3/x95 EGYPTIAN HIEROGLYPH-13CD5
+<U00013CD6> /xf0/x93/xb3/x96 EGYPTIAN HIEROGLYPH-13CD6
+<U00013CD7> /xf0/x93/xb3/x97 EGYPTIAN HIEROGLYPH-13CD7
+<U00013CD8> /xf0/x93/xb3/x98 EGYPTIAN HIEROGLYPH-13CD8
+<U00013CD9> /xf0/x93/xb3/x99 EGYPTIAN HIEROGLYPH-13CD9
+<U00013CDA> /xf0/x93/xb3/x9a EGYPTIAN HIEROGLYPH-13CDA
+<U00013CDB> /xf0/x93/xb3/x9b EGYPTIAN HIEROGLYPH-13CDB
+<U00013CDC> /xf0/x93/xb3/x9c EGYPTIAN HIEROGLYPH-13CDC
+<U00013CDD> /xf0/x93/xb3/x9d EGYPTIAN HIEROGLYPH-13CDD
+<U00013CDE> /xf0/x93/xb3/x9e EGYPTIAN HIEROGLYPH-13CDE
+<U00013CDF> /xf0/x93/xb3/x9f EGYPTIAN HIEROGLYPH-13CDF
+<U00013CE0> /xf0/x93/xb3/xa0 EGYPTIAN HIEROGLYPH-13CE0
+<U00013CE1> /xf0/x93/xb3/xa1 EGYPTIAN HIEROGLYPH-13CE1
+<U00013CE2> /xf0/x93/xb3/xa2 EGYPTIAN HIEROGLYPH-13CE2
+<U00013CE3> /xf0/x93/xb3/xa3 EGYPTIAN HIEROGLYPH-13CE3
+<U00013CE4> /xf0/x93/xb3/xa4 EGYPTIAN HIEROGLYPH-13CE4
+<U00013CE5> /xf0/x93/xb3/xa5 EGYPTIAN HIEROGLYPH-13CE5
+<U00013CE6> /xf0/x93/xb3/xa6 EGYPTIAN HIEROGLYPH-13CE6
+<U00013CE7> /xf0/x93/xb3/xa7 EGYPTIAN HIEROGLYPH-13CE7
+<U00013CE8> /xf0/x93/xb3/xa8 EGYPTIAN HIEROGLYPH-13CE8
+<U00013CE9> /xf0/x93/xb3/xa9 EGYPTIAN HIEROGLYPH-13CE9
+<U00013CEA> /xf0/x93/xb3/xaa EGYPTIAN HIEROGLYPH-13CEA
+<U00013CEB> /xf0/x93/xb3/xab EGYPTIAN HIEROGLYPH-13CEB
+<U00013CEC> /xf0/x93/xb3/xac EGYPTIAN HIEROGLYPH-13CEC
+<U00013CED> /xf0/x93/xb3/xad EGYPTIAN HIEROGLYPH-13CED
+<U00013CEE> /xf0/x93/xb3/xae EGYPTIAN HIEROGLYPH-13CEE
+<U00013CEF> /xf0/x93/xb3/xaf EGYPTIAN HIEROGLYPH-13CEF
+<U00013CF0> /xf0/x93/xb3/xb0 EGYPTIAN HIEROGLYPH-13CF0
+<U00013CF1> /xf0/x93/xb3/xb1 EGYPTIAN HIEROGLYPH-13CF1
+<U00013CF2> /xf0/x93/xb3/xb2 EGYPTIAN HIEROGLYPH-13CF2
+<U00013CF3> /xf0/x93/xb3/xb3 EGYPTIAN HIEROGLYPH-13CF3
+<U00013CF4> /xf0/x93/xb3/xb4 EGYPTIAN HIEROGLYPH-13CF4
+<U00013CF5> /xf0/x93/xb3/xb5 EGYPTIAN HIEROGLYPH-13CF5
+<U00013CF6> /xf0/x93/xb3/xb6 EGYPTIAN HIEROGLYPH-13CF6
+<U00013CF7> /xf0/x93/xb3/xb7 EGYPTIAN HIEROGLYPH-13CF7
+<U00013CF8> /xf0/x93/xb3/xb8 EGYPTIAN HIEROGLYPH-13CF8
+<U00013CF9> /xf0/x93/xb3/xb9 EGYPTIAN HIEROGLYPH-13CF9
+<U00013CFA> /xf0/x93/xb3/xba EGYPTIAN HIEROGLYPH-13CFA
+<U00013CFB> /xf0/x93/xb3/xbb EGYPTIAN HIEROGLYPH-13CFB
+<U00013CFC> /xf0/x93/xb3/xbc EGYPTIAN HIEROGLYPH-13CFC
+<U00013CFD> /xf0/x93/xb3/xbd EGYPTIAN HIEROGLYPH-13CFD
+<U00013CFE> /xf0/x93/xb3/xbe EGYPTIAN HIEROGLYPH-13CFE
+<U00013CFF> /xf0/x93/xb3/xbf EGYPTIAN HIEROGLYPH-13CFF
+<U00013D00> /xf0/x93/xb4/x80 EGYPTIAN HIEROGLYPH-13D00
+<U00013D01> /xf0/x93/xb4/x81 EGYPTIAN HIEROGLYPH-13D01
+<U00013D02> /xf0/x93/xb4/x82 EGYPTIAN HIEROGLYPH-13D02
+<U00013D03> /xf0/x93/xb4/x83 EGYPTIAN HIEROGLYPH-13D03
+<U00013D04> /xf0/x93/xb4/x84 EGYPTIAN HIEROGLYPH-13D04
+<U00013D05> /xf0/x93/xb4/x85 EGYPTIAN HIEROGLYPH-13D05
+<U00013D06> /xf0/x93/xb4/x86 EGYPTIAN HIEROGLYPH-13D06
+<U00013D07> /xf0/x93/xb4/x87 EGYPTIAN HIEROGLYPH-13D07
+<U00013D08> /xf0/x93/xb4/x88 EGYPTIAN HIEROGLYPH-13D08
+<U00013D09> /xf0/x93/xb4/x89 EGYPTIAN HIEROGLYPH-13D09
+<U00013D0A> /xf0/x93/xb4/x8a EGYPTIAN HIEROGLYPH-13D0A
+<U00013D0B> /xf0/x93/xb4/x8b EGYPTIAN HIEROGLYPH-13D0B
+<U00013D0C> /xf0/x93/xb4/x8c EGYPTIAN HIEROGLYPH-13D0C
+<U00013D0D> /xf0/x93/xb4/x8d EGYPTIAN HIEROGLYPH-13D0D
+<U00013D0E> /xf0/x93/xb4/x8e EGYPTIAN HIEROGLYPH-13D0E
+<U00013D0F> /xf0/x93/xb4/x8f EGYPTIAN HIEROGLYPH-13D0F
+<U00013D10> /xf0/x93/xb4/x90 EGYPTIAN HIEROGLYPH-13D10
+<U00013D11> /xf0/x93/xb4/x91 EGYPTIAN HIEROGLYPH-13D11
+<U00013D12> /xf0/x93/xb4/x92 EGYPTIAN HIEROGLYPH-13D12
+<U00013D13> /xf0/x93/xb4/x93 EGYPTIAN HIEROGLYPH-13D13
+<U00013D14> /xf0/x93/xb4/x94 EGYPTIAN HIEROGLYPH-13D14
+<U00013D15> /xf0/x93/xb4/x95 EGYPTIAN HIEROGLYPH-13D15
+<U00013D16> /xf0/x93/xb4/x96 EGYPTIAN HIEROGLYPH-13D16
+<U00013D17> /xf0/x93/xb4/x97 EGYPTIAN HIEROGLYPH-13D17
+<U00013D18> /xf0/x93/xb4/x98 EGYPTIAN HIEROGLYPH-13D18
+<U00013D19> /xf0/x93/xb4/x99 EGYPTIAN HIEROGLYPH-13D19
+<U00013D1A> /xf0/x93/xb4/x9a EGYPTIAN HIEROGLYPH-13D1A
+<U00013D1B> /xf0/x93/xb4/x9b EGYPTIAN HIEROGLYPH-13D1B
+<U00013D1C> /xf0/x93/xb4/x9c EGYPTIAN HIEROGLYPH-13D1C
+<U00013D1D> /xf0/x93/xb4/x9d EGYPTIAN HIEROGLYPH-13D1D
+<U00013D1E> /xf0/x93/xb4/x9e EGYPTIAN HIEROGLYPH-13D1E
+<U00013D1F> /xf0/x93/xb4/x9f EGYPTIAN HIEROGLYPH-13D1F
+<U00013D20> /xf0/x93/xb4/xa0 EGYPTIAN HIEROGLYPH-13D20
+<U00013D21> /xf0/x93/xb4/xa1 EGYPTIAN HIEROGLYPH-13D21
+<U00013D22> /xf0/x93/xb4/xa2 EGYPTIAN HIEROGLYPH-13D22
+<U00013D23> /xf0/x93/xb4/xa3 EGYPTIAN HIEROGLYPH-13D23
+<U00013D24> /xf0/x93/xb4/xa4 EGYPTIAN HIEROGLYPH-13D24
+<U00013D25> /xf0/x93/xb4/xa5 EGYPTIAN HIEROGLYPH-13D25
+<U00013D26> /xf0/x93/xb4/xa6 EGYPTIAN HIEROGLYPH-13D26
+<U00013D27> /xf0/x93/xb4/xa7 EGYPTIAN HIEROGLYPH-13D27
+<U00013D28> /xf0/x93/xb4/xa8 EGYPTIAN HIEROGLYPH-13D28
+<U00013D29> /xf0/x93/xb4/xa9 EGYPTIAN HIEROGLYPH-13D29
+<U00013D2A> /xf0/x93/xb4/xaa EGYPTIAN HIEROGLYPH-13D2A
+<U00013D2B> /xf0/x93/xb4/xab EGYPTIAN HIEROGLYPH-13D2B
+<U00013D2C> /xf0/x93/xb4/xac EGYPTIAN HIEROGLYPH-13D2C
+<U00013D2D> /xf0/x93/xb4/xad EGYPTIAN HIEROGLYPH-13D2D
+<U00013D2E> /xf0/x93/xb4/xae EGYPTIAN HIEROGLYPH-13D2E
+<U00013D2F> /xf0/x93/xb4/xaf EGYPTIAN HIEROGLYPH-13D2F
+<U00013D30> /xf0/x93/xb4/xb0 EGYPTIAN HIEROGLYPH-13D30
+<U00013D31> /xf0/x93/xb4/xb1 EGYPTIAN HIEROGLYPH-13D31
+<U00013D32> /xf0/x93/xb4/xb2 EGYPTIAN HIEROGLYPH-13D32
+<U00013D33> /xf0/x93/xb4/xb3 EGYPTIAN HIEROGLYPH-13D33
+<U00013D34> /xf0/x93/xb4/xb4 EGYPTIAN HIEROGLYPH-13D34
+<U00013D35> /xf0/x93/xb4/xb5 EGYPTIAN HIEROGLYPH-13D35
+<U00013D36> /xf0/x93/xb4/xb6 EGYPTIAN HIEROGLYPH-13D36
+<U00013D37> /xf0/x93/xb4/xb7 EGYPTIAN HIEROGLYPH-13D37
+<U00013D38> /xf0/x93/xb4/xb8 EGYPTIAN HIEROGLYPH-13D38
+<U00013D39> /xf0/x93/xb4/xb9 EGYPTIAN HIEROGLYPH-13D39
+<U00013D3A> /xf0/x93/xb4/xba EGYPTIAN HIEROGLYPH-13D3A
+<U00013D3B> /xf0/x93/xb4/xbb EGYPTIAN HIEROGLYPH-13D3B
+<U00013D3C> /xf0/x93/xb4/xbc EGYPTIAN HIEROGLYPH-13D3C
+<U00013D3D> /xf0/x93/xb4/xbd EGYPTIAN HIEROGLYPH-13D3D
+<U00013D3E> /xf0/x93/xb4/xbe EGYPTIAN HIEROGLYPH-13D3E
+<U00013D3F> /xf0/x93/xb4/xbf EGYPTIAN HIEROGLYPH-13D3F
+<U00013D40> /xf0/x93/xb5/x80 EGYPTIAN HIEROGLYPH-13D40
+<U00013D41> /xf0/x93/xb5/x81 EGYPTIAN HIEROGLYPH-13D41
+<U00013D42> /xf0/x93/xb5/x82 EGYPTIAN HIEROGLYPH-13D42
+<U00013D43> /xf0/x93/xb5/x83 EGYPTIAN HIEROGLYPH-13D43
+<U00013D44> /xf0/x93/xb5/x84 EGYPTIAN HIEROGLYPH-13D44
+<U00013D45> /xf0/x93/xb5/x85 EGYPTIAN HIEROGLYPH-13D45
+<U00013D46> /xf0/x93/xb5/x86 EGYPTIAN HIEROGLYPH-13D46
+<U00013D47> /xf0/x93/xb5/x87 EGYPTIAN HIEROGLYPH-13D47
+<U00013D48> /xf0/x93/xb5/x88 EGYPTIAN HIEROGLYPH-13D48
+<U00013D49> /xf0/x93/xb5/x89 EGYPTIAN HIEROGLYPH-13D49
+<U00013D4A> /xf0/x93/xb5/x8a EGYPTIAN HIEROGLYPH-13D4A
+<U00013D4B> /xf0/x93/xb5/x8b EGYPTIAN HIEROGLYPH-13D4B
+<U00013D4C> /xf0/x93/xb5/x8c EGYPTIAN HIEROGLYPH-13D4C
+<U00013D4D> /xf0/x93/xb5/x8d EGYPTIAN HIEROGLYPH-13D4D
+<U00013D4E> /xf0/x93/xb5/x8e EGYPTIAN HIEROGLYPH-13D4E
+<U00013D4F> /xf0/x93/xb5/x8f EGYPTIAN HIEROGLYPH-13D4F
+<U00013D50> /xf0/x93/xb5/x90 EGYPTIAN HIEROGLYPH-13D50
+<U00013D51> /xf0/x93/xb5/x91 EGYPTIAN HIEROGLYPH-13D51
+<U00013D52> /xf0/x93/xb5/x92 EGYPTIAN HIEROGLYPH-13D52
+<U00013D53> /xf0/x93/xb5/x93 EGYPTIAN HIEROGLYPH-13D53
+<U00013D54> /xf0/x93/xb5/x94 EGYPTIAN HIEROGLYPH-13D54
+<U00013D55> /xf0/x93/xb5/x95 EGYPTIAN HIEROGLYPH-13D55
+<U00013D56> /xf0/x93/xb5/x96 EGYPTIAN HIEROGLYPH-13D56
+<U00013D57> /xf0/x93/xb5/x97 EGYPTIAN HIEROGLYPH-13D57
+<U00013D58> /xf0/x93/xb5/x98 EGYPTIAN HIEROGLYPH-13D58
+<U00013D59> /xf0/x93/xb5/x99 EGYPTIAN HIEROGLYPH-13D59
+<U00013D5A> /xf0/x93/xb5/x9a EGYPTIAN HIEROGLYPH-13D5A
+<U00013D5B> /xf0/x93/xb5/x9b EGYPTIAN HIEROGLYPH-13D5B
+<U00013D5C> /xf0/x93/xb5/x9c EGYPTIAN HIEROGLYPH-13D5C
+<U00013D5D> /xf0/x93/xb5/x9d EGYPTIAN HIEROGLYPH-13D5D
+<U00013D5E> /xf0/x93/xb5/x9e EGYPTIAN HIEROGLYPH-13D5E
+<U00013D5F> /xf0/x93/xb5/x9f EGYPTIAN HIEROGLYPH-13D5F
+<U00013D60> /xf0/x93/xb5/xa0 EGYPTIAN HIEROGLYPH-13D60
+<U00013D61> /xf0/x93/xb5/xa1 EGYPTIAN HIEROGLYPH-13D61
+<U00013D62> /xf0/x93/xb5/xa2 EGYPTIAN HIEROGLYPH-13D62
+<U00013D63> /xf0/x93/xb5/xa3 EGYPTIAN HIEROGLYPH-13D63
+<U00013D64> /xf0/x93/xb5/xa4 EGYPTIAN HIEROGLYPH-13D64
+<U00013D65> /xf0/x93/xb5/xa5 EGYPTIAN HIEROGLYPH-13D65
+<U00013D66> /xf0/x93/xb5/xa6 EGYPTIAN HIEROGLYPH-13D66
+<U00013D67> /xf0/x93/xb5/xa7 EGYPTIAN HIEROGLYPH-13D67
+<U00013D68> /xf0/x93/xb5/xa8 EGYPTIAN HIEROGLYPH-13D68
+<U00013D69> /xf0/x93/xb5/xa9 EGYPTIAN HIEROGLYPH-13D69
+<U00013D6A> /xf0/x93/xb5/xaa EGYPTIAN HIEROGLYPH-13D6A
+<U00013D6B> /xf0/x93/xb5/xab EGYPTIAN HIEROGLYPH-13D6B
+<U00013D6C> /xf0/x93/xb5/xac EGYPTIAN HIEROGLYPH-13D6C
+<U00013D6D> /xf0/x93/xb5/xad EGYPTIAN HIEROGLYPH-13D6D
+<U00013D6E> /xf0/x93/xb5/xae EGYPTIAN HIEROGLYPH-13D6E
+<U00013D6F> /xf0/x93/xb5/xaf EGYPTIAN HIEROGLYPH-13D6F
+<U00013D70> /xf0/x93/xb5/xb0 EGYPTIAN HIEROGLYPH-13D70
+<U00013D71> /xf0/x93/xb5/xb1 EGYPTIAN HIEROGLYPH-13D71
+<U00013D72> /xf0/x93/xb5/xb2 EGYPTIAN HIEROGLYPH-13D72
+<U00013D73> /xf0/x93/xb5/xb3 EGYPTIAN HIEROGLYPH-13D73
+<U00013D74> /xf0/x93/xb5/xb4 EGYPTIAN HIEROGLYPH-13D74
+<U00013D75> /xf0/x93/xb5/xb5 EGYPTIAN HIEROGLYPH-13D75
+<U00013D76> /xf0/x93/xb5/xb6 EGYPTIAN HIEROGLYPH-13D76
+<U00013D77> /xf0/x93/xb5/xb7 EGYPTIAN HIEROGLYPH-13D77
+<U00013D78> /xf0/x93/xb5/xb8 EGYPTIAN HIEROGLYPH-13D78
+<U00013D79> /xf0/x93/xb5/xb9 EGYPTIAN HIEROGLYPH-13D79
+<U00013D7A> /xf0/x93/xb5/xba EGYPTIAN HIEROGLYPH-13D7A
+<U00013D7B> /xf0/x93/xb5/xbb EGYPTIAN HIEROGLYPH-13D7B
+<U00013D7C> /xf0/x93/xb5/xbc EGYPTIAN HIEROGLYPH-13D7C
+<U00013D7D> /xf0/x93/xb5/xbd EGYPTIAN HIEROGLYPH-13D7D
+<U00013D7E> /xf0/x93/xb5/xbe EGYPTIAN HIEROGLYPH-13D7E
+<U00013D7F> /xf0/x93/xb5/xbf EGYPTIAN HIEROGLYPH-13D7F
+<U00013D80> /xf0/x93/xb6/x80 EGYPTIAN HIEROGLYPH-13D80
+<U00013D81> /xf0/x93/xb6/x81 EGYPTIAN HIEROGLYPH-13D81
+<U00013D82> /xf0/x93/xb6/x82 EGYPTIAN HIEROGLYPH-13D82
+<U00013D83> /xf0/x93/xb6/x83 EGYPTIAN HIEROGLYPH-13D83
+<U00013D84> /xf0/x93/xb6/x84 EGYPTIAN HIEROGLYPH-13D84
+<U00013D85> /xf0/x93/xb6/x85 EGYPTIAN HIEROGLYPH-13D85
+<U00013D86> /xf0/x93/xb6/x86 EGYPTIAN HIEROGLYPH-13D86
+<U00013D87> /xf0/x93/xb6/x87 EGYPTIAN HIEROGLYPH-13D87
+<U00013D88> /xf0/x93/xb6/x88 EGYPTIAN HIEROGLYPH-13D88
+<U00013D89> /xf0/x93/xb6/x89 EGYPTIAN HIEROGLYPH-13D89
+<U00013D8A> /xf0/x93/xb6/x8a EGYPTIAN HIEROGLYPH-13D8A
+<U00013D8B> /xf0/x93/xb6/x8b EGYPTIAN HIEROGLYPH-13D8B
+<U00013D8C> /xf0/x93/xb6/x8c EGYPTIAN HIEROGLYPH-13D8C
+<U00013D8D> /xf0/x93/xb6/x8d EGYPTIAN HIEROGLYPH-13D8D
+<U00013D8E> /xf0/x93/xb6/x8e EGYPTIAN HIEROGLYPH-13D8E
+<U00013D8F> /xf0/x93/xb6/x8f EGYPTIAN HIEROGLYPH-13D8F
+<U00013D90> /xf0/x93/xb6/x90 EGYPTIAN HIEROGLYPH-13D90
+<U00013D91> /xf0/x93/xb6/x91 EGYPTIAN HIEROGLYPH-13D91
+<U00013D92> /xf0/x93/xb6/x92 EGYPTIAN HIEROGLYPH-13D92
+<U00013D93> /xf0/x93/xb6/x93 EGYPTIAN HIEROGLYPH-13D93
+<U00013D94> /xf0/x93/xb6/x94 EGYPTIAN HIEROGLYPH-13D94
+<U00013D95> /xf0/x93/xb6/x95 EGYPTIAN HIEROGLYPH-13D95
+<U00013D96> /xf0/x93/xb6/x96 EGYPTIAN HIEROGLYPH-13D96
+<U00013D97> /xf0/x93/xb6/x97 EGYPTIAN HIEROGLYPH-13D97
+<U00013D98> /xf0/x93/xb6/x98 EGYPTIAN HIEROGLYPH-13D98
+<U00013D99> /xf0/x93/xb6/x99 EGYPTIAN HIEROGLYPH-13D99
+<U00013D9A> /xf0/x93/xb6/x9a EGYPTIAN HIEROGLYPH-13D9A
+<U00013D9B> /xf0/x93/xb6/x9b EGYPTIAN HIEROGLYPH-13D9B
+<U00013D9C> /xf0/x93/xb6/x9c EGYPTIAN HIEROGLYPH-13D9C
+<U00013D9D> /xf0/x93/xb6/x9d EGYPTIAN HIEROGLYPH-13D9D
+<U00013D9E> /xf0/x93/xb6/x9e EGYPTIAN HIEROGLYPH-13D9E
+<U00013D9F> /xf0/x93/xb6/x9f EGYPTIAN HIEROGLYPH-13D9F
+<U00013DA0> /xf0/x93/xb6/xa0 EGYPTIAN HIEROGLYPH-13DA0
+<U00013DA1> /xf0/x93/xb6/xa1 EGYPTIAN HIEROGLYPH-13DA1
+<U00013DA2> /xf0/x93/xb6/xa2 EGYPTIAN HIEROGLYPH-13DA2
+<U00013DA3> /xf0/x93/xb6/xa3 EGYPTIAN HIEROGLYPH-13DA3
+<U00013DA4> /xf0/x93/xb6/xa4 EGYPTIAN HIEROGLYPH-13DA4
+<U00013DA5> /xf0/x93/xb6/xa5 EGYPTIAN HIEROGLYPH-13DA5
+<U00013DA6> /xf0/x93/xb6/xa6 EGYPTIAN HIEROGLYPH-13DA6
+<U00013DA7> /xf0/x93/xb6/xa7 EGYPTIAN HIEROGLYPH-13DA7
+<U00013DA8> /xf0/x93/xb6/xa8 EGYPTIAN HIEROGLYPH-13DA8
+<U00013DA9> /xf0/x93/xb6/xa9 EGYPTIAN HIEROGLYPH-13DA9
+<U00013DAA> /xf0/x93/xb6/xaa EGYPTIAN HIEROGLYPH-13DAA
+<U00013DAB> /xf0/x93/xb6/xab EGYPTIAN HIEROGLYPH-13DAB
+<U00013DAC> /xf0/x93/xb6/xac EGYPTIAN HIEROGLYPH-13DAC
+<U00013DAD> /xf0/x93/xb6/xad EGYPTIAN HIEROGLYPH-13DAD
+<U00013DAE> /xf0/x93/xb6/xae EGYPTIAN HIEROGLYPH-13DAE
+<U00013DAF> /xf0/x93/xb6/xaf EGYPTIAN HIEROGLYPH-13DAF
+<U00013DB0> /xf0/x93/xb6/xb0 EGYPTIAN HIEROGLYPH-13DB0
+<U00013DB1> /xf0/x93/xb6/xb1 EGYPTIAN HIEROGLYPH-13DB1
+<U00013DB2> /xf0/x93/xb6/xb2 EGYPTIAN HIEROGLYPH-13DB2
+<U00013DB3> /xf0/x93/xb6/xb3 EGYPTIAN HIEROGLYPH-13DB3
+<U00013DB4> /xf0/x93/xb6/xb4 EGYPTIAN HIEROGLYPH-13DB4
+<U00013DB5> /xf0/x93/xb6/xb5 EGYPTIAN HIEROGLYPH-13DB5
+<U00013DB6> /xf0/x93/xb6/xb6 EGYPTIAN HIEROGLYPH-13DB6
+<U00013DB7> /xf0/x93/xb6/xb7 EGYPTIAN HIEROGLYPH-13DB7
+<U00013DB8> /xf0/x93/xb6/xb8 EGYPTIAN HIEROGLYPH-13DB8
+<U00013DB9> /xf0/x93/xb6/xb9 EGYPTIAN HIEROGLYPH-13DB9
+<U00013DBA> /xf0/x93/xb6/xba EGYPTIAN HIEROGLYPH-13DBA
+<U00013DBB> /xf0/x93/xb6/xbb EGYPTIAN HIEROGLYPH-13DBB
+<U00013DBC> /xf0/x93/xb6/xbc EGYPTIAN HIEROGLYPH-13DBC
+<U00013DBD> /xf0/x93/xb6/xbd EGYPTIAN HIEROGLYPH-13DBD
+<U00013DBE> /xf0/x93/xb6/xbe EGYPTIAN HIEROGLYPH-13DBE
+<U00013DBF> /xf0/x93/xb6/xbf EGYPTIAN HIEROGLYPH-13DBF
+<U00013DC0> /xf0/x93/xb7/x80 EGYPTIAN HIEROGLYPH-13DC0
+<U00013DC1> /xf0/x93/xb7/x81 EGYPTIAN HIEROGLYPH-13DC1
+<U00013DC2> /xf0/x93/xb7/x82 EGYPTIAN HIEROGLYPH-13DC2
+<U00013DC3> /xf0/x93/xb7/x83 EGYPTIAN HIEROGLYPH-13DC3
+<U00013DC4> /xf0/x93/xb7/x84 EGYPTIAN HIEROGLYPH-13DC4
+<U00013DC5> /xf0/x93/xb7/x85 EGYPTIAN HIEROGLYPH-13DC5
+<U00013DC6> /xf0/x93/xb7/x86 EGYPTIAN HIEROGLYPH-13DC6
+<U00013DC7> /xf0/x93/xb7/x87 EGYPTIAN HIEROGLYPH-13DC7
+<U00013DC8> /xf0/x93/xb7/x88 EGYPTIAN HIEROGLYPH-13DC8
+<U00013DC9> /xf0/x93/xb7/x89 EGYPTIAN HIEROGLYPH-13DC9
+<U00013DCA> /xf0/x93/xb7/x8a EGYPTIAN HIEROGLYPH-13DCA
+<U00013DCB> /xf0/x93/xb7/x8b EGYPTIAN HIEROGLYPH-13DCB
+<U00013DCC> /xf0/x93/xb7/x8c EGYPTIAN HIEROGLYPH-13DCC
+<U00013DCD> /xf0/x93/xb7/x8d EGYPTIAN HIEROGLYPH-13DCD
+<U00013DCE> /xf0/x93/xb7/x8e EGYPTIAN HIEROGLYPH-13DCE
+<U00013DCF> /xf0/x93/xb7/x8f EGYPTIAN HIEROGLYPH-13DCF
+<U00013DD0> /xf0/x93/xb7/x90 EGYPTIAN HIEROGLYPH-13DD0
+<U00013DD1> /xf0/x93/xb7/x91 EGYPTIAN HIEROGLYPH-13DD1
+<U00013DD2> /xf0/x93/xb7/x92 EGYPTIAN HIEROGLYPH-13DD2
+<U00013DD3> /xf0/x93/xb7/x93 EGYPTIAN HIEROGLYPH-13DD3
+<U00013DD4> /xf0/x93/xb7/x94 EGYPTIAN HIEROGLYPH-13DD4
+<U00013DD5> /xf0/x93/xb7/x95 EGYPTIAN HIEROGLYPH-13DD5
+<U00013DD6> /xf0/x93/xb7/x96 EGYPTIAN HIEROGLYPH-13DD6
+<U00013DD7> /xf0/x93/xb7/x97 EGYPTIAN HIEROGLYPH-13DD7
+<U00013DD8> /xf0/x93/xb7/x98 EGYPTIAN HIEROGLYPH-13DD8
+<U00013DD9> /xf0/x93/xb7/x99 EGYPTIAN HIEROGLYPH-13DD9
+<U00013DDA> /xf0/x93/xb7/x9a EGYPTIAN HIEROGLYPH-13DDA
+<U00013DDB> /xf0/x93/xb7/x9b EGYPTIAN HIEROGLYPH-13DDB
+<U00013DDC> /xf0/x93/xb7/x9c EGYPTIAN HIEROGLYPH-13DDC
+<U00013DDD> /xf0/x93/xb7/x9d EGYPTIAN HIEROGLYPH-13DDD
+<U00013DDE> /xf0/x93/xb7/x9e EGYPTIAN HIEROGLYPH-13DDE
+<U00013DDF> /xf0/x93/xb7/x9f EGYPTIAN HIEROGLYPH-13DDF
+<U00013DE0> /xf0/x93/xb7/xa0 EGYPTIAN HIEROGLYPH-13DE0
+<U00013DE1> /xf0/x93/xb7/xa1 EGYPTIAN HIEROGLYPH-13DE1
+<U00013DE2> /xf0/x93/xb7/xa2 EGYPTIAN HIEROGLYPH-13DE2
+<U00013DE3> /xf0/x93/xb7/xa3 EGYPTIAN HIEROGLYPH-13DE3
+<U00013DE4> /xf0/x93/xb7/xa4 EGYPTIAN HIEROGLYPH-13DE4
+<U00013DE5> /xf0/x93/xb7/xa5 EGYPTIAN HIEROGLYPH-13DE5
+<U00013DE6> /xf0/x93/xb7/xa6 EGYPTIAN HIEROGLYPH-13DE6
+<U00013DE7> /xf0/x93/xb7/xa7 EGYPTIAN HIEROGLYPH-13DE7
+<U00013DE8> /xf0/x93/xb7/xa8 EGYPTIAN HIEROGLYPH-13DE8
+<U00013DE9> /xf0/x93/xb7/xa9 EGYPTIAN HIEROGLYPH-13DE9
+<U00013DEA> /xf0/x93/xb7/xaa EGYPTIAN HIEROGLYPH-13DEA
+<U00013DEB> /xf0/x93/xb7/xab EGYPTIAN HIEROGLYPH-13DEB
+<U00013DEC> /xf0/x93/xb7/xac EGYPTIAN HIEROGLYPH-13DEC
+<U00013DED> /xf0/x93/xb7/xad EGYPTIAN HIEROGLYPH-13DED
+<U00013DEE> /xf0/x93/xb7/xae EGYPTIAN HIEROGLYPH-13DEE
+<U00013DEF> /xf0/x93/xb7/xaf EGYPTIAN HIEROGLYPH-13DEF
+<U00013DF0> /xf0/x93/xb7/xb0 EGYPTIAN HIEROGLYPH-13DF0
+<U00013DF1> /xf0/x93/xb7/xb1 EGYPTIAN HIEROGLYPH-13DF1
+<U00013DF2> /xf0/x93/xb7/xb2 EGYPTIAN HIEROGLYPH-13DF2
+<U00013DF3> /xf0/x93/xb7/xb3 EGYPTIAN HIEROGLYPH-13DF3
+<U00013DF4> /xf0/x93/xb7/xb4 EGYPTIAN HIEROGLYPH-13DF4
+<U00013DF5> /xf0/x93/xb7/xb5 EGYPTIAN HIEROGLYPH-13DF5
+<U00013DF6> /xf0/x93/xb7/xb6 EGYPTIAN HIEROGLYPH-13DF6
+<U00013DF7> /xf0/x93/xb7/xb7 EGYPTIAN HIEROGLYPH-13DF7
+<U00013DF8> /xf0/x93/xb7/xb8 EGYPTIAN HIEROGLYPH-13DF8
+<U00013DF9> /xf0/x93/xb7/xb9 EGYPTIAN HIEROGLYPH-13DF9
+<U00013DFA> /xf0/x93/xb7/xba EGYPTIAN HIEROGLYPH-13DFA
+<U00013DFB> /xf0/x93/xb7/xbb EGYPTIAN HIEROGLYPH-13DFB
+<U00013DFC> /xf0/x93/xb7/xbc EGYPTIAN HIEROGLYPH-13DFC
+<U00013DFD> /xf0/x93/xb7/xbd EGYPTIAN HIEROGLYPH-13DFD
+<U00013DFE> /xf0/x93/xb7/xbe EGYPTIAN HIEROGLYPH-13DFE
+<U00013DFF> /xf0/x93/xb7/xbf EGYPTIAN HIEROGLYPH-13DFF
+<U00013E00> /xf0/x93/xb8/x80 EGYPTIAN HIEROGLYPH-13E00
+<U00013E01> /xf0/x93/xb8/x81 EGYPTIAN HIEROGLYPH-13E01
+<U00013E02> /xf0/x93/xb8/x82 EGYPTIAN HIEROGLYPH-13E02
+<U00013E03> /xf0/x93/xb8/x83 EGYPTIAN HIEROGLYPH-13E03
+<U00013E04> /xf0/x93/xb8/x84 EGYPTIAN HIEROGLYPH-13E04
+<U00013E05> /xf0/x93/xb8/x85 EGYPTIAN HIEROGLYPH-13E05
+<U00013E06> /xf0/x93/xb8/x86 EGYPTIAN HIEROGLYPH-13E06
+<U00013E07> /xf0/x93/xb8/x87 EGYPTIAN HIEROGLYPH-13E07
+<U00013E08> /xf0/x93/xb8/x88 EGYPTIAN HIEROGLYPH-13E08
+<U00013E09> /xf0/x93/xb8/x89 EGYPTIAN HIEROGLYPH-13E09
+<U00013E0A> /xf0/x93/xb8/x8a EGYPTIAN HIEROGLYPH-13E0A
+<U00013E0B> /xf0/x93/xb8/x8b EGYPTIAN HIEROGLYPH-13E0B
+<U00013E0C> /xf0/x93/xb8/x8c EGYPTIAN HIEROGLYPH-13E0C
+<U00013E0D> /xf0/x93/xb8/x8d EGYPTIAN HIEROGLYPH-13E0D
+<U00013E0E> /xf0/x93/xb8/x8e EGYPTIAN HIEROGLYPH-13E0E
+<U00013E0F> /xf0/x93/xb8/x8f EGYPTIAN HIEROGLYPH-13E0F
+<U00013E10> /xf0/x93/xb8/x90 EGYPTIAN HIEROGLYPH-13E10
+<U00013E11> /xf0/x93/xb8/x91 EGYPTIAN HIEROGLYPH-13E11
+<U00013E12> /xf0/x93/xb8/x92 EGYPTIAN HIEROGLYPH-13E12
+<U00013E13> /xf0/x93/xb8/x93 EGYPTIAN HIEROGLYPH-13E13
+<U00013E14> /xf0/x93/xb8/x94 EGYPTIAN HIEROGLYPH-13E14
+<U00013E15> /xf0/x93/xb8/x95 EGYPTIAN HIEROGLYPH-13E15
+<U00013E16> /xf0/x93/xb8/x96 EGYPTIAN HIEROGLYPH-13E16
+<U00013E17> /xf0/x93/xb8/x97 EGYPTIAN HIEROGLYPH-13E17
+<U00013E18> /xf0/x93/xb8/x98 EGYPTIAN HIEROGLYPH-13E18
+<U00013E19> /xf0/x93/xb8/x99 EGYPTIAN HIEROGLYPH-13E19
+<U00013E1A> /xf0/x93/xb8/x9a EGYPTIAN HIEROGLYPH-13E1A
+<U00013E1B> /xf0/x93/xb8/x9b EGYPTIAN HIEROGLYPH-13E1B
+<U00013E1C> /xf0/x93/xb8/x9c EGYPTIAN HIEROGLYPH-13E1C
+<U00013E1D> /xf0/x93/xb8/x9d EGYPTIAN HIEROGLYPH-13E1D
+<U00013E1E> /xf0/x93/xb8/x9e EGYPTIAN HIEROGLYPH-13E1E
+<U00013E1F> /xf0/x93/xb8/x9f EGYPTIAN HIEROGLYPH-13E1F
+<U00013E20> /xf0/x93/xb8/xa0 EGYPTIAN HIEROGLYPH-13E20
+<U00013E21> /xf0/x93/xb8/xa1 EGYPTIAN HIEROGLYPH-13E21
+<U00013E22> /xf0/x93/xb8/xa2 EGYPTIAN HIEROGLYPH-13E22
+<U00013E23> /xf0/x93/xb8/xa3 EGYPTIAN HIEROGLYPH-13E23
+<U00013E24> /xf0/x93/xb8/xa4 EGYPTIAN HIEROGLYPH-13E24
+<U00013E25> /xf0/x93/xb8/xa5 EGYPTIAN HIEROGLYPH-13E25
+<U00013E26> /xf0/x93/xb8/xa6 EGYPTIAN HIEROGLYPH-13E26
+<U00013E27> /xf0/x93/xb8/xa7 EGYPTIAN HIEROGLYPH-13E27
+<U00013E28> /xf0/x93/xb8/xa8 EGYPTIAN HIEROGLYPH-13E28
+<U00013E29> /xf0/x93/xb8/xa9 EGYPTIAN HIEROGLYPH-13E29
+<U00013E2A> /xf0/x93/xb8/xaa EGYPTIAN HIEROGLYPH-13E2A
+<U00013E2B> /xf0/x93/xb8/xab EGYPTIAN HIEROGLYPH-13E2B
+<U00013E2C> /xf0/x93/xb8/xac EGYPTIAN HIEROGLYPH-13E2C
+<U00013E2D> /xf0/x93/xb8/xad EGYPTIAN HIEROGLYPH-13E2D
+<U00013E2E> /xf0/x93/xb8/xae EGYPTIAN HIEROGLYPH-13E2E
+<U00013E2F> /xf0/x93/xb8/xaf EGYPTIAN HIEROGLYPH-13E2F
+<U00013E30> /xf0/x93/xb8/xb0 EGYPTIAN HIEROGLYPH-13E30
+<U00013E31> /xf0/x93/xb8/xb1 EGYPTIAN HIEROGLYPH-13E31
+<U00013E32> /xf0/x93/xb8/xb2 EGYPTIAN HIEROGLYPH-13E32
+<U00013E33> /xf0/x93/xb8/xb3 EGYPTIAN HIEROGLYPH-13E33
+<U00013E34> /xf0/x93/xb8/xb4 EGYPTIAN HIEROGLYPH-13E34
+<U00013E35> /xf0/x93/xb8/xb5 EGYPTIAN HIEROGLYPH-13E35
+<U00013E36> /xf0/x93/xb8/xb6 EGYPTIAN HIEROGLYPH-13E36
+<U00013E37> /xf0/x93/xb8/xb7 EGYPTIAN HIEROGLYPH-13E37
+<U00013E38> /xf0/x93/xb8/xb8 EGYPTIAN HIEROGLYPH-13E38
+<U00013E39> /xf0/x93/xb8/xb9 EGYPTIAN HIEROGLYPH-13E39
+<U00013E3A> /xf0/x93/xb8/xba EGYPTIAN HIEROGLYPH-13E3A
+<U00013E3B> /xf0/x93/xb8/xbb EGYPTIAN HIEROGLYPH-13E3B
+<U00013E3C> /xf0/x93/xb8/xbc EGYPTIAN HIEROGLYPH-13E3C
+<U00013E3D> /xf0/x93/xb8/xbd EGYPTIAN HIEROGLYPH-13E3D
+<U00013E3E> /xf0/x93/xb8/xbe EGYPTIAN HIEROGLYPH-13E3E
+<U00013E3F> /xf0/x93/xb8/xbf EGYPTIAN HIEROGLYPH-13E3F
+<U00013E40> /xf0/x93/xb9/x80 EGYPTIAN HIEROGLYPH-13E40
+<U00013E41> /xf0/x93/xb9/x81 EGYPTIAN HIEROGLYPH-13E41
+<U00013E42> /xf0/x93/xb9/x82 EGYPTIAN HIEROGLYPH-13E42
+<U00013E43> /xf0/x93/xb9/x83 EGYPTIAN HIEROGLYPH-13E43
+<U00013E44> /xf0/x93/xb9/x84 EGYPTIAN HIEROGLYPH-13E44
+<U00013E45> /xf0/x93/xb9/x85 EGYPTIAN HIEROGLYPH-13E45
+<U00013E46> /xf0/x93/xb9/x86 EGYPTIAN HIEROGLYPH-13E46
+<U00013E47> /xf0/x93/xb9/x87 EGYPTIAN HIEROGLYPH-13E47
+<U00013E48> /xf0/x93/xb9/x88 EGYPTIAN HIEROGLYPH-13E48
+<U00013E49> /xf0/x93/xb9/x89 EGYPTIAN HIEROGLYPH-13E49
+<U00013E4A> /xf0/x93/xb9/x8a EGYPTIAN HIEROGLYPH-13E4A
+<U00013E4B> /xf0/x93/xb9/x8b EGYPTIAN HIEROGLYPH-13E4B
+<U00013E4C> /xf0/x93/xb9/x8c EGYPTIAN HIEROGLYPH-13E4C
+<U00013E4D> /xf0/x93/xb9/x8d EGYPTIAN HIEROGLYPH-13E4D
+<U00013E4E> /xf0/x93/xb9/x8e EGYPTIAN HIEROGLYPH-13E4E
+<U00013E4F> /xf0/x93/xb9/x8f EGYPTIAN HIEROGLYPH-13E4F
+<U00013E50> /xf0/x93/xb9/x90 EGYPTIAN HIEROGLYPH-13E50
+<U00013E51> /xf0/x93/xb9/x91 EGYPTIAN HIEROGLYPH-13E51
+<U00013E52> /xf0/x93/xb9/x92 EGYPTIAN HIEROGLYPH-13E52
+<U00013E53> /xf0/x93/xb9/x93 EGYPTIAN HIEROGLYPH-13E53
+<U00013E54> /xf0/x93/xb9/x94 EGYPTIAN HIEROGLYPH-13E54
+<U00013E55> /xf0/x93/xb9/x95 EGYPTIAN HIEROGLYPH-13E55
+<U00013E56> /xf0/x93/xb9/x96 EGYPTIAN HIEROGLYPH-13E56
+<U00013E57> /xf0/x93/xb9/x97 EGYPTIAN HIEROGLYPH-13E57
+<U00013E58> /xf0/x93/xb9/x98 EGYPTIAN HIEROGLYPH-13E58
+<U00013E59> /xf0/x93/xb9/x99 EGYPTIAN HIEROGLYPH-13E59
+<U00013E5A> /xf0/x93/xb9/x9a EGYPTIAN HIEROGLYPH-13E5A
+<U00013E5B> /xf0/x93/xb9/x9b EGYPTIAN HIEROGLYPH-13E5B
+<U00013E5C> /xf0/x93/xb9/x9c EGYPTIAN HIEROGLYPH-13E5C
+<U00013E5D> /xf0/x93/xb9/x9d EGYPTIAN HIEROGLYPH-13E5D
+<U00013E5E> /xf0/x93/xb9/x9e EGYPTIAN HIEROGLYPH-13E5E
+<U00013E5F> /xf0/x93/xb9/x9f EGYPTIAN HIEROGLYPH-13E5F
+<U00013E60> /xf0/x93/xb9/xa0 EGYPTIAN HIEROGLYPH-13E60
+<U00013E61> /xf0/x93/xb9/xa1 EGYPTIAN HIEROGLYPH-13E61
+<U00013E62> /xf0/x93/xb9/xa2 EGYPTIAN HIEROGLYPH-13E62
+<U00013E63> /xf0/x93/xb9/xa3 EGYPTIAN HIEROGLYPH-13E63
+<U00013E64> /xf0/x93/xb9/xa4 EGYPTIAN HIEROGLYPH-13E64
+<U00013E65> /xf0/x93/xb9/xa5 EGYPTIAN HIEROGLYPH-13E65
+<U00013E66> /xf0/x93/xb9/xa6 EGYPTIAN HIEROGLYPH-13E66
+<U00013E67> /xf0/x93/xb9/xa7 EGYPTIAN HIEROGLYPH-13E67
+<U00013E68> /xf0/x93/xb9/xa8 EGYPTIAN HIEROGLYPH-13E68
+<U00013E69> /xf0/x93/xb9/xa9 EGYPTIAN HIEROGLYPH-13E69
+<U00013E6A> /xf0/x93/xb9/xaa EGYPTIAN HIEROGLYPH-13E6A
+<U00013E6B> /xf0/x93/xb9/xab EGYPTIAN HIEROGLYPH-13E6B
+<U00013E6C> /xf0/x93/xb9/xac EGYPTIAN HIEROGLYPH-13E6C
+<U00013E6D> /xf0/x93/xb9/xad EGYPTIAN HIEROGLYPH-13E6D
+<U00013E6E> /xf0/x93/xb9/xae EGYPTIAN HIEROGLYPH-13E6E
+<U00013E6F> /xf0/x93/xb9/xaf EGYPTIAN HIEROGLYPH-13E6F
+<U00013E70> /xf0/x93/xb9/xb0 EGYPTIAN HIEROGLYPH-13E70
+<U00013E71> /xf0/x93/xb9/xb1 EGYPTIAN HIEROGLYPH-13E71
+<U00013E72> /xf0/x93/xb9/xb2 EGYPTIAN HIEROGLYPH-13E72
+<U00013E73> /xf0/x93/xb9/xb3 EGYPTIAN HIEROGLYPH-13E73
+<U00013E74> /xf0/x93/xb9/xb4 EGYPTIAN HIEROGLYPH-13E74
+<U00013E75> /xf0/x93/xb9/xb5 EGYPTIAN HIEROGLYPH-13E75
+<U00013E76> /xf0/x93/xb9/xb6 EGYPTIAN HIEROGLYPH-13E76
+<U00013E77> /xf0/x93/xb9/xb7 EGYPTIAN HIEROGLYPH-13E77
+<U00013E78> /xf0/x93/xb9/xb8 EGYPTIAN HIEROGLYPH-13E78
+<U00013E79> /xf0/x93/xb9/xb9 EGYPTIAN HIEROGLYPH-13E79
+<U00013E7A> /xf0/x93/xb9/xba EGYPTIAN HIEROGLYPH-13E7A
+<U00013E7B> /xf0/x93/xb9/xbb EGYPTIAN HIEROGLYPH-13E7B
+<U00013E7C> /xf0/x93/xb9/xbc EGYPTIAN HIEROGLYPH-13E7C
+<U00013E7D> /xf0/x93/xb9/xbd EGYPTIAN HIEROGLYPH-13E7D
+<U00013E7E> /xf0/x93/xb9/xbe EGYPTIAN HIEROGLYPH-13E7E
+<U00013E7F> /xf0/x93/xb9/xbf EGYPTIAN HIEROGLYPH-13E7F
+<U00013E80> /xf0/x93/xba/x80 EGYPTIAN HIEROGLYPH-13E80
+<U00013E81> /xf0/x93/xba/x81 EGYPTIAN HIEROGLYPH-13E81
+<U00013E82> /xf0/x93/xba/x82 EGYPTIAN HIEROGLYPH-13E82
+<U00013E83> /xf0/x93/xba/x83 EGYPTIAN HIEROGLYPH-13E83
+<U00013E84> /xf0/x93/xba/x84 EGYPTIAN HIEROGLYPH-13E84
+<U00013E85> /xf0/x93/xba/x85 EGYPTIAN HIEROGLYPH-13E85
+<U00013E86> /xf0/x93/xba/x86 EGYPTIAN HIEROGLYPH-13E86
+<U00013E87> /xf0/x93/xba/x87 EGYPTIAN HIEROGLYPH-13E87
+<U00013E88> /xf0/x93/xba/x88 EGYPTIAN HIEROGLYPH-13E88
+<U00013E89> /xf0/x93/xba/x89 EGYPTIAN HIEROGLYPH-13E89
+<U00013E8A> /xf0/x93/xba/x8a EGYPTIAN HIEROGLYPH-13E8A
+<U00013E8B> /xf0/x93/xba/x8b EGYPTIAN HIEROGLYPH-13E8B
+<U00013E8C> /xf0/x93/xba/x8c EGYPTIAN HIEROGLYPH-13E8C
+<U00013E8D> /xf0/x93/xba/x8d EGYPTIAN HIEROGLYPH-13E8D
+<U00013E8E> /xf0/x93/xba/x8e EGYPTIAN HIEROGLYPH-13E8E
+<U00013E8F> /xf0/x93/xba/x8f EGYPTIAN HIEROGLYPH-13E8F
+<U00013E90> /xf0/x93/xba/x90 EGYPTIAN HIEROGLYPH-13E90
+<U00013E91> /xf0/x93/xba/x91 EGYPTIAN HIEROGLYPH-13E91
+<U00013E92> /xf0/x93/xba/x92 EGYPTIAN HIEROGLYPH-13E92
+<U00013E93> /xf0/x93/xba/x93 EGYPTIAN HIEROGLYPH-13E93
+<U00013E94> /xf0/x93/xba/x94 EGYPTIAN HIEROGLYPH-13E94
+<U00013E95> /xf0/x93/xba/x95 EGYPTIAN HIEROGLYPH-13E95
+<U00013E96> /xf0/x93/xba/x96 EGYPTIAN HIEROGLYPH-13E96
+<U00013E97> /xf0/x93/xba/x97 EGYPTIAN HIEROGLYPH-13E97
+<U00013E98> /xf0/x93/xba/x98 EGYPTIAN HIEROGLYPH-13E98
+<U00013E99> /xf0/x93/xba/x99 EGYPTIAN HIEROGLYPH-13E99
+<U00013E9A> /xf0/x93/xba/x9a EGYPTIAN HIEROGLYPH-13E9A
+<U00013E9B> /xf0/x93/xba/x9b EGYPTIAN HIEROGLYPH-13E9B
+<U00013E9C> /xf0/x93/xba/x9c EGYPTIAN HIEROGLYPH-13E9C
+<U00013E9D> /xf0/x93/xba/x9d EGYPTIAN HIEROGLYPH-13E9D
+<U00013E9E> /xf0/x93/xba/x9e EGYPTIAN HIEROGLYPH-13E9E
+<U00013E9F> /xf0/x93/xba/x9f EGYPTIAN HIEROGLYPH-13E9F
+<U00013EA0> /xf0/x93/xba/xa0 EGYPTIAN HIEROGLYPH-13EA0
+<U00013EA1> /xf0/x93/xba/xa1 EGYPTIAN HIEROGLYPH-13EA1
+<U00013EA2> /xf0/x93/xba/xa2 EGYPTIAN HIEROGLYPH-13EA2
+<U00013EA3> /xf0/x93/xba/xa3 EGYPTIAN HIEROGLYPH-13EA3
+<U00013EA4> /xf0/x93/xba/xa4 EGYPTIAN HIEROGLYPH-13EA4
+<U00013EA5> /xf0/x93/xba/xa5 EGYPTIAN HIEROGLYPH-13EA5
+<U00013EA6> /xf0/x93/xba/xa6 EGYPTIAN HIEROGLYPH-13EA6
+<U00013EA7> /xf0/x93/xba/xa7 EGYPTIAN HIEROGLYPH-13EA7
+<U00013EA8> /xf0/x93/xba/xa8 EGYPTIAN HIEROGLYPH-13EA8
+<U00013EA9> /xf0/x93/xba/xa9 EGYPTIAN HIEROGLYPH-13EA9
+<U00013EAA> /xf0/x93/xba/xaa EGYPTIAN HIEROGLYPH-13EAA
+<U00013EAB> /xf0/x93/xba/xab EGYPTIAN HIEROGLYPH-13EAB
+<U00013EAC> /xf0/x93/xba/xac EGYPTIAN HIEROGLYPH-13EAC
+<U00013EAD> /xf0/x93/xba/xad EGYPTIAN HIEROGLYPH-13EAD
+<U00013EAE> /xf0/x93/xba/xae EGYPTIAN HIEROGLYPH-13EAE
+<U00013EAF> /xf0/x93/xba/xaf EGYPTIAN HIEROGLYPH-13EAF
+<U00013EB0> /xf0/x93/xba/xb0 EGYPTIAN HIEROGLYPH-13EB0
+<U00013EB1> /xf0/x93/xba/xb1 EGYPTIAN HIEROGLYPH-13EB1
+<U00013EB2> /xf0/x93/xba/xb2 EGYPTIAN HIEROGLYPH-13EB2
+<U00013EB3> /xf0/x93/xba/xb3 EGYPTIAN HIEROGLYPH-13EB3
+<U00013EB4> /xf0/x93/xba/xb4 EGYPTIAN HIEROGLYPH-13EB4
+<U00013EB5> /xf0/x93/xba/xb5 EGYPTIAN HIEROGLYPH-13EB5
+<U00013EB6> /xf0/x93/xba/xb6 EGYPTIAN HIEROGLYPH-13EB6
+<U00013EB7> /xf0/x93/xba/xb7 EGYPTIAN HIEROGLYPH-13EB7
+<U00013EB8> /xf0/x93/xba/xb8 EGYPTIAN HIEROGLYPH-13EB8
+<U00013EB9> /xf0/x93/xba/xb9 EGYPTIAN HIEROGLYPH-13EB9
+<U00013EBA> /xf0/x93/xba/xba EGYPTIAN HIEROGLYPH-13EBA
+<U00013EBB> /xf0/x93/xba/xbb EGYPTIAN HIEROGLYPH-13EBB
+<U00013EBC> /xf0/x93/xba/xbc EGYPTIAN HIEROGLYPH-13EBC
+<U00013EBD> /xf0/x93/xba/xbd EGYPTIAN HIEROGLYPH-13EBD
+<U00013EBE> /xf0/x93/xba/xbe EGYPTIAN HIEROGLYPH-13EBE
+<U00013EBF> /xf0/x93/xba/xbf EGYPTIAN HIEROGLYPH-13EBF
+<U00013EC0> /xf0/x93/xbb/x80 EGYPTIAN HIEROGLYPH-13EC0
+<U00013EC1> /xf0/x93/xbb/x81 EGYPTIAN HIEROGLYPH-13EC1
+<U00013EC2> /xf0/x93/xbb/x82 EGYPTIAN HIEROGLYPH-13EC2
+<U00013EC3> /xf0/x93/xbb/x83 EGYPTIAN HIEROGLYPH-13EC3
+<U00013EC4> /xf0/x93/xbb/x84 EGYPTIAN HIEROGLYPH-13EC4
+<U00013EC5> /xf0/x93/xbb/x85 EGYPTIAN HIEROGLYPH-13EC5
+<U00013EC6> /xf0/x93/xbb/x86 EGYPTIAN HIEROGLYPH-13EC6
+<U00013EC7> /xf0/x93/xbb/x87 EGYPTIAN HIEROGLYPH-13EC7
+<U00013EC8> /xf0/x93/xbb/x88 EGYPTIAN HIEROGLYPH-13EC8
+<U00013EC9> /xf0/x93/xbb/x89 EGYPTIAN HIEROGLYPH-13EC9
+<U00013ECA> /xf0/x93/xbb/x8a EGYPTIAN HIEROGLYPH-13ECA
+<U00013ECB> /xf0/x93/xbb/x8b EGYPTIAN HIEROGLYPH-13ECB
+<U00013ECC> /xf0/x93/xbb/x8c EGYPTIAN HIEROGLYPH-13ECC
+<U00013ECD> /xf0/x93/xbb/x8d EGYPTIAN HIEROGLYPH-13ECD
+<U00013ECE> /xf0/x93/xbb/x8e EGYPTIAN HIEROGLYPH-13ECE
+<U00013ECF> /xf0/x93/xbb/x8f EGYPTIAN HIEROGLYPH-13ECF
+<U00013ED0> /xf0/x93/xbb/x90 EGYPTIAN HIEROGLYPH-13ED0
+<U00013ED1> /xf0/x93/xbb/x91 EGYPTIAN HIEROGLYPH-13ED1
+<U00013ED2> /xf0/x93/xbb/x92 EGYPTIAN HIEROGLYPH-13ED2
+<U00013ED3> /xf0/x93/xbb/x93 EGYPTIAN HIEROGLYPH-13ED3
+<U00013ED4> /xf0/x93/xbb/x94 EGYPTIAN HIEROGLYPH-13ED4
+<U00013ED5> /xf0/x93/xbb/x95 EGYPTIAN HIEROGLYPH-13ED5
+<U00013ED6> /xf0/x93/xbb/x96 EGYPTIAN HIEROGLYPH-13ED6
+<U00013ED7> /xf0/x93/xbb/x97 EGYPTIAN HIEROGLYPH-13ED7
+<U00013ED8> /xf0/x93/xbb/x98 EGYPTIAN HIEROGLYPH-13ED8
+<U00013ED9> /xf0/x93/xbb/x99 EGYPTIAN HIEROGLYPH-13ED9
+<U00013EDA> /xf0/x93/xbb/x9a EGYPTIAN HIEROGLYPH-13EDA
+<U00013EDB> /xf0/x93/xbb/x9b EGYPTIAN HIEROGLYPH-13EDB
+<U00013EDC> /xf0/x93/xbb/x9c EGYPTIAN HIEROGLYPH-13EDC
+<U00013EDD> /xf0/x93/xbb/x9d EGYPTIAN HIEROGLYPH-13EDD
+<U00013EDE> /xf0/x93/xbb/x9e EGYPTIAN HIEROGLYPH-13EDE
+<U00013EDF> /xf0/x93/xbb/x9f EGYPTIAN HIEROGLYPH-13EDF
+<U00013EE0> /xf0/x93/xbb/xa0 EGYPTIAN HIEROGLYPH-13EE0
+<U00013EE1> /xf0/x93/xbb/xa1 EGYPTIAN HIEROGLYPH-13EE1
+<U00013EE2> /xf0/x93/xbb/xa2 EGYPTIAN HIEROGLYPH-13EE2
+<U00013EE3> /xf0/x93/xbb/xa3 EGYPTIAN HIEROGLYPH-13EE3
+<U00013EE4> /xf0/x93/xbb/xa4 EGYPTIAN HIEROGLYPH-13EE4
+<U00013EE5> /xf0/x93/xbb/xa5 EGYPTIAN HIEROGLYPH-13EE5
+<U00013EE6> /xf0/x93/xbb/xa6 EGYPTIAN HIEROGLYPH-13EE6
+<U00013EE7> /xf0/x93/xbb/xa7 EGYPTIAN HIEROGLYPH-13EE7
+<U00013EE8> /xf0/x93/xbb/xa8 EGYPTIAN HIEROGLYPH-13EE8
+<U00013EE9> /xf0/x93/xbb/xa9 EGYPTIAN HIEROGLYPH-13EE9
+<U00013EEA> /xf0/x93/xbb/xaa EGYPTIAN HIEROGLYPH-13EEA
+<U00013EEB> /xf0/x93/xbb/xab EGYPTIAN HIEROGLYPH-13EEB
+<U00013EEC> /xf0/x93/xbb/xac EGYPTIAN HIEROGLYPH-13EEC
+<U00013EED> /xf0/x93/xbb/xad EGYPTIAN HIEROGLYPH-13EED
+<U00013EEE> /xf0/x93/xbb/xae EGYPTIAN HIEROGLYPH-13EEE
+<U00013EEF> /xf0/x93/xbb/xaf EGYPTIAN HIEROGLYPH-13EEF
+<U00013EF0> /xf0/x93/xbb/xb0 EGYPTIAN HIEROGLYPH-13EF0
+<U00013EF1> /xf0/x93/xbb/xb1 EGYPTIAN HIEROGLYPH-13EF1
+<U00013EF2> /xf0/x93/xbb/xb2 EGYPTIAN HIEROGLYPH-13EF2
+<U00013EF3> /xf0/x93/xbb/xb3 EGYPTIAN HIEROGLYPH-13EF3
+<U00013EF4> /xf0/x93/xbb/xb4 EGYPTIAN HIEROGLYPH-13EF4
+<U00013EF5> /xf0/x93/xbb/xb5 EGYPTIAN HIEROGLYPH-13EF5
+<U00013EF6> /xf0/x93/xbb/xb6 EGYPTIAN HIEROGLYPH-13EF6
+<U00013EF7> /xf0/x93/xbb/xb7 EGYPTIAN HIEROGLYPH-13EF7
+<U00013EF8> /xf0/x93/xbb/xb8 EGYPTIAN HIEROGLYPH-13EF8
+<U00013EF9> /xf0/x93/xbb/xb9 EGYPTIAN HIEROGLYPH-13EF9
+<U00013EFA> /xf0/x93/xbb/xba EGYPTIAN HIEROGLYPH-13EFA
+<U00013EFB> /xf0/x93/xbb/xbb EGYPTIAN HIEROGLYPH-13EFB
+<U00013EFC> /xf0/x93/xbb/xbc EGYPTIAN HIEROGLYPH-13EFC
+<U00013EFD> /xf0/x93/xbb/xbd EGYPTIAN HIEROGLYPH-13EFD
+<U00013EFE> /xf0/x93/xbb/xbe EGYPTIAN HIEROGLYPH-13EFE
+<U00013EFF> /xf0/x93/xbb/xbf EGYPTIAN HIEROGLYPH-13EFF
+<U00013F00> /xf0/x93/xbc/x80 EGYPTIAN HIEROGLYPH-13F00
+<U00013F01> /xf0/x93/xbc/x81 EGYPTIAN HIEROGLYPH-13F01
+<U00013F02> /xf0/x93/xbc/x82 EGYPTIAN HIEROGLYPH-13F02
+<U00013F03> /xf0/x93/xbc/x83 EGYPTIAN HIEROGLYPH-13F03
+<U00013F04> /xf0/x93/xbc/x84 EGYPTIAN HIEROGLYPH-13F04
+<U00013F05> /xf0/x93/xbc/x85 EGYPTIAN HIEROGLYPH-13F05
+<U00013F06> /xf0/x93/xbc/x86 EGYPTIAN HIEROGLYPH-13F06
+<U00013F07> /xf0/x93/xbc/x87 EGYPTIAN HIEROGLYPH-13F07
+<U00013F08> /xf0/x93/xbc/x88 EGYPTIAN HIEROGLYPH-13F08
+<U00013F09> /xf0/x93/xbc/x89 EGYPTIAN HIEROGLYPH-13F09
+<U00013F0A> /xf0/x93/xbc/x8a EGYPTIAN HIEROGLYPH-13F0A
+<U00013F0B> /xf0/x93/xbc/x8b EGYPTIAN HIEROGLYPH-13F0B
+<U00013F0C> /xf0/x93/xbc/x8c EGYPTIAN HIEROGLYPH-13F0C
+<U00013F0D> /xf0/x93/xbc/x8d EGYPTIAN HIEROGLYPH-13F0D
+<U00013F0E> /xf0/x93/xbc/x8e EGYPTIAN HIEROGLYPH-13F0E
+<U00013F0F> /xf0/x93/xbc/x8f EGYPTIAN HIEROGLYPH-13F0F
+<U00013F10> /xf0/x93/xbc/x90 EGYPTIAN HIEROGLYPH-13F10
+<U00013F11> /xf0/x93/xbc/x91 EGYPTIAN HIEROGLYPH-13F11
+<U00013F12> /xf0/x93/xbc/x92 EGYPTIAN HIEROGLYPH-13F12
+<U00013F13> /xf0/x93/xbc/x93 EGYPTIAN HIEROGLYPH-13F13
+<U00013F14> /xf0/x93/xbc/x94 EGYPTIAN HIEROGLYPH-13F14
+<U00013F15> /xf0/x93/xbc/x95 EGYPTIAN HIEROGLYPH-13F15
+<U00013F16> /xf0/x93/xbc/x96 EGYPTIAN HIEROGLYPH-13F16
+<U00013F17> /xf0/x93/xbc/x97 EGYPTIAN HIEROGLYPH-13F17
+<U00013F18> /xf0/x93/xbc/x98 EGYPTIAN HIEROGLYPH-13F18
+<U00013F19> /xf0/x93/xbc/x99 EGYPTIAN HIEROGLYPH-13F19
+<U00013F1A> /xf0/x93/xbc/x9a EGYPTIAN HIEROGLYPH-13F1A
+<U00013F1B> /xf0/x93/xbc/x9b EGYPTIAN HIEROGLYPH-13F1B
+<U00013F1C> /xf0/x93/xbc/x9c EGYPTIAN HIEROGLYPH-13F1C
+<U00013F1D> /xf0/x93/xbc/x9d EGYPTIAN HIEROGLYPH-13F1D
+<U00013F1E> /xf0/x93/xbc/x9e EGYPTIAN HIEROGLYPH-13F1E
+<U00013F1F> /xf0/x93/xbc/x9f EGYPTIAN HIEROGLYPH-13F1F
+<U00013F20> /xf0/x93/xbc/xa0 EGYPTIAN HIEROGLYPH-13F20
+<U00013F21> /xf0/x93/xbc/xa1 EGYPTIAN HIEROGLYPH-13F21
+<U00013F22> /xf0/x93/xbc/xa2 EGYPTIAN HIEROGLYPH-13F22
+<U00013F23> /xf0/x93/xbc/xa3 EGYPTIAN HIEROGLYPH-13F23
+<U00013F24> /xf0/x93/xbc/xa4 EGYPTIAN HIEROGLYPH-13F24
+<U00013F25> /xf0/x93/xbc/xa5 EGYPTIAN HIEROGLYPH-13F25
+<U00013F26> /xf0/x93/xbc/xa6 EGYPTIAN HIEROGLYPH-13F26
+<U00013F27> /xf0/x93/xbc/xa7 EGYPTIAN HIEROGLYPH-13F27
+<U00013F28> /xf0/x93/xbc/xa8 EGYPTIAN HIEROGLYPH-13F28
+<U00013F29> /xf0/x93/xbc/xa9 EGYPTIAN HIEROGLYPH-13F29
+<U00013F2A> /xf0/x93/xbc/xaa EGYPTIAN HIEROGLYPH-13F2A
+<U00013F2B> /xf0/x93/xbc/xab EGYPTIAN HIEROGLYPH-13F2B
+<U00013F2C> /xf0/x93/xbc/xac EGYPTIAN HIEROGLYPH-13F2C
+<U00013F2D> /xf0/x93/xbc/xad EGYPTIAN HIEROGLYPH-13F2D
+<U00013F2E> /xf0/x93/xbc/xae EGYPTIAN HIEROGLYPH-13F2E
+<U00013F2F> /xf0/x93/xbc/xaf EGYPTIAN HIEROGLYPH-13F2F
+<U00013F30> /xf0/x93/xbc/xb0 EGYPTIAN HIEROGLYPH-13F30
+<U00013F31> /xf0/x93/xbc/xb1 EGYPTIAN HIEROGLYPH-13F31
+<U00013F32> /xf0/x93/xbc/xb2 EGYPTIAN HIEROGLYPH-13F32
+<U00013F33> /xf0/x93/xbc/xb3 EGYPTIAN HIEROGLYPH-13F33
+<U00013F34> /xf0/x93/xbc/xb4 EGYPTIAN HIEROGLYPH-13F34
+<U00013F35> /xf0/x93/xbc/xb5 EGYPTIAN HIEROGLYPH-13F35
+<U00013F36> /xf0/x93/xbc/xb6 EGYPTIAN HIEROGLYPH-13F36
+<U00013F37> /xf0/x93/xbc/xb7 EGYPTIAN HIEROGLYPH-13F37
+<U00013F38> /xf0/x93/xbc/xb8 EGYPTIAN HIEROGLYPH-13F38
+<U00013F39> /xf0/x93/xbc/xb9 EGYPTIAN HIEROGLYPH-13F39
+<U00013F3A> /xf0/x93/xbc/xba EGYPTIAN HIEROGLYPH-13F3A
+<U00013F3B> /xf0/x93/xbc/xbb EGYPTIAN HIEROGLYPH-13F3B
+<U00013F3C> /xf0/x93/xbc/xbc EGYPTIAN HIEROGLYPH-13F3C
+<U00013F3D> /xf0/x93/xbc/xbd EGYPTIAN HIEROGLYPH-13F3D
+<U00013F3E> /xf0/x93/xbc/xbe EGYPTIAN HIEROGLYPH-13F3E
+<U00013F3F> /xf0/x93/xbc/xbf EGYPTIAN HIEROGLYPH-13F3F
+<U00013F40> /xf0/x93/xbd/x80 EGYPTIAN HIEROGLYPH-13F40
+<U00013F41> /xf0/x93/xbd/x81 EGYPTIAN HIEROGLYPH-13F41
+<U00013F42> /xf0/x93/xbd/x82 EGYPTIAN HIEROGLYPH-13F42
+<U00013F43> /xf0/x93/xbd/x83 EGYPTIAN HIEROGLYPH-13F43
+<U00013F44> /xf0/x93/xbd/x84 EGYPTIAN HIEROGLYPH-13F44
+<U00013F45> /xf0/x93/xbd/x85 EGYPTIAN HIEROGLYPH-13F45
+<U00013F46> /xf0/x93/xbd/x86 EGYPTIAN HIEROGLYPH-13F46
+<U00013F47> /xf0/x93/xbd/x87 EGYPTIAN HIEROGLYPH-13F47
+<U00013F48> /xf0/x93/xbd/x88 EGYPTIAN HIEROGLYPH-13F48
+<U00013F49> /xf0/x93/xbd/x89 EGYPTIAN HIEROGLYPH-13F49
+<U00013F4A> /xf0/x93/xbd/x8a EGYPTIAN HIEROGLYPH-13F4A
+<U00013F4B> /xf0/x93/xbd/x8b EGYPTIAN HIEROGLYPH-13F4B
+<U00013F4C> /xf0/x93/xbd/x8c EGYPTIAN HIEROGLYPH-13F4C
+<U00013F4D> /xf0/x93/xbd/x8d EGYPTIAN HIEROGLYPH-13F4D
+<U00013F4E> /xf0/x93/xbd/x8e EGYPTIAN HIEROGLYPH-13F4E
+<U00013F4F> /xf0/x93/xbd/x8f EGYPTIAN HIEROGLYPH-13F4F
+<U00013F50> /xf0/x93/xbd/x90 EGYPTIAN HIEROGLYPH-13F50
+<U00013F51> /xf0/x93/xbd/x91 EGYPTIAN HIEROGLYPH-13F51
+<U00013F52> /xf0/x93/xbd/x92 EGYPTIAN HIEROGLYPH-13F52
+<U00013F53> /xf0/x93/xbd/x93 EGYPTIAN HIEROGLYPH-13F53
+<U00013F54> /xf0/x93/xbd/x94 EGYPTIAN HIEROGLYPH-13F54
+<U00013F55> /xf0/x93/xbd/x95 EGYPTIAN HIEROGLYPH-13F55
+<U00013F56> /xf0/x93/xbd/x96 EGYPTIAN HIEROGLYPH-13F56
+<U00013F57> /xf0/x93/xbd/x97 EGYPTIAN HIEROGLYPH-13F57
+<U00013F58> /xf0/x93/xbd/x98 EGYPTIAN HIEROGLYPH-13F58
+<U00013F59> /xf0/x93/xbd/x99 EGYPTIAN HIEROGLYPH-13F59
+<U00013F5A> /xf0/x93/xbd/x9a EGYPTIAN HIEROGLYPH-13F5A
+<U00013F5B> /xf0/x93/xbd/x9b EGYPTIAN HIEROGLYPH-13F5B
+<U00013F5C> /xf0/x93/xbd/x9c EGYPTIAN HIEROGLYPH-13F5C
+<U00013F5D> /xf0/x93/xbd/x9d EGYPTIAN HIEROGLYPH-13F5D
+<U00013F5E> /xf0/x93/xbd/x9e EGYPTIAN HIEROGLYPH-13F5E
+<U00013F5F> /xf0/x93/xbd/x9f EGYPTIAN HIEROGLYPH-13F5F
+<U00013F60> /xf0/x93/xbd/xa0 EGYPTIAN HIEROGLYPH-13F60
+<U00013F61> /xf0/x93/xbd/xa1 EGYPTIAN HIEROGLYPH-13F61
+<U00013F62> /xf0/x93/xbd/xa2 EGYPTIAN HIEROGLYPH-13F62
+<U00013F63> /xf0/x93/xbd/xa3 EGYPTIAN HIEROGLYPH-13F63
+<U00013F64> /xf0/x93/xbd/xa4 EGYPTIAN HIEROGLYPH-13F64
+<U00013F65> /xf0/x93/xbd/xa5 EGYPTIAN HIEROGLYPH-13F65
+<U00013F66> /xf0/x93/xbd/xa6 EGYPTIAN HIEROGLYPH-13F66
+<U00013F67> /xf0/x93/xbd/xa7 EGYPTIAN HIEROGLYPH-13F67
+<U00013F68> /xf0/x93/xbd/xa8 EGYPTIAN HIEROGLYPH-13F68
+<U00013F69> /xf0/x93/xbd/xa9 EGYPTIAN HIEROGLYPH-13F69
+<U00013F6A> /xf0/x93/xbd/xaa EGYPTIAN HIEROGLYPH-13F6A
+<U00013F6B> /xf0/x93/xbd/xab EGYPTIAN HIEROGLYPH-13F6B
+<U00013F6C> /xf0/x93/xbd/xac EGYPTIAN HIEROGLYPH-13F6C
+<U00013F6D> /xf0/x93/xbd/xad EGYPTIAN HIEROGLYPH-13F6D
+<U00013F6E> /xf0/x93/xbd/xae EGYPTIAN HIEROGLYPH-13F6E
+<U00013F6F> /xf0/x93/xbd/xaf EGYPTIAN HIEROGLYPH-13F6F
+<U00013F70> /xf0/x93/xbd/xb0 EGYPTIAN HIEROGLYPH-13F70
+<U00013F71> /xf0/x93/xbd/xb1 EGYPTIAN HIEROGLYPH-13F71
+<U00013F72> /xf0/x93/xbd/xb2 EGYPTIAN HIEROGLYPH-13F72
+<U00013F73> /xf0/x93/xbd/xb3 EGYPTIAN HIEROGLYPH-13F73
+<U00013F74> /xf0/x93/xbd/xb4 EGYPTIAN HIEROGLYPH-13F74
+<U00013F75> /xf0/x93/xbd/xb5 EGYPTIAN HIEROGLYPH-13F75
+<U00013F76> /xf0/x93/xbd/xb6 EGYPTIAN HIEROGLYPH-13F76
+<U00013F77> /xf0/x93/xbd/xb7 EGYPTIAN HIEROGLYPH-13F77
+<U00013F78> /xf0/x93/xbd/xb8 EGYPTIAN HIEROGLYPH-13F78
+<U00013F79> /xf0/x93/xbd/xb9 EGYPTIAN HIEROGLYPH-13F79
+<U00013F7A> /xf0/x93/xbd/xba EGYPTIAN HIEROGLYPH-13F7A
+<U00013F7B> /xf0/x93/xbd/xbb EGYPTIAN HIEROGLYPH-13F7B
+<U00013F7C> /xf0/x93/xbd/xbc EGYPTIAN HIEROGLYPH-13F7C
+<U00013F7D> /xf0/x93/xbd/xbd EGYPTIAN HIEROGLYPH-13F7D
+<U00013F7E> /xf0/x93/xbd/xbe EGYPTIAN HIEROGLYPH-13F7E
+<U00013F7F> /xf0/x93/xbd/xbf EGYPTIAN HIEROGLYPH-13F7F
+<U00013F80> /xf0/x93/xbe/x80 EGYPTIAN HIEROGLYPH-13F80
+<U00013F81> /xf0/x93/xbe/x81 EGYPTIAN HIEROGLYPH-13F81
+<U00013F82> /xf0/x93/xbe/x82 EGYPTIAN HIEROGLYPH-13F82
+<U00013F83> /xf0/x93/xbe/x83 EGYPTIAN HIEROGLYPH-13F83
+<U00013F84> /xf0/x93/xbe/x84 EGYPTIAN HIEROGLYPH-13F84
+<U00013F85> /xf0/x93/xbe/x85 EGYPTIAN HIEROGLYPH-13F85
+<U00013F86> /xf0/x93/xbe/x86 EGYPTIAN HIEROGLYPH-13F86
+<U00013F87> /xf0/x93/xbe/x87 EGYPTIAN HIEROGLYPH-13F87
+<U00013F88> /xf0/x93/xbe/x88 EGYPTIAN HIEROGLYPH-13F88
+<U00013F89> /xf0/x93/xbe/x89 EGYPTIAN HIEROGLYPH-13F89
+<U00013F8A> /xf0/x93/xbe/x8a EGYPTIAN HIEROGLYPH-13F8A
+<U00013F8B> /xf0/x93/xbe/x8b EGYPTIAN HIEROGLYPH-13F8B
+<U00013F8C> /xf0/x93/xbe/x8c EGYPTIAN HIEROGLYPH-13F8C
+<U00013F8D> /xf0/x93/xbe/x8d EGYPTIAN HIEROGLYPH-13F8D
+<U00013F8E> /xf0/x93/xbe/x8e EGYPTIAN HIEROGLYPH-13F8E
+<U00013F8F> /xf0/x93/xbe/x8f EGYPTIAN HIEROGLYPH-13F8F
+<U00013F90> /xf0/x93/xbe/x90 EGYPTIAN HIEROGLYPH-13F90
+<U00013F91> /xf0/x93/xbe/x91 EGYPTIAN HIEROGLYPH-13F91
+<U00013F92> /xf0/x93/xbe/x92 EGYPTIAN HIEROGLYPH-13F92
+<U00013F93> /xf0/x93/xbe/x93 EGYPTIAN HIEROGLYPH-13F93
+<U00013F94> /xf0/x93/xbe/x94 EGYPTIAN HIEROGLYPH-13F94
+<U00013F95> /xf0/x93/xbe/x95 EGYPTIAN HIEROGLYPH-13F95
+<U00013F96> /xf0/x93/xbe/x96 EGYPTIAN HIEROGLYPH-13F96
+<U00013F97> /xf0/x93/xbe/x97 EGYPTIAN HIEROGLYPH-13F97
+<U00013F98> /xf0/x93/xbe/x98 EGYPTIAN HIEROGLYPH-13F98
+<U00013F99> /xf0/x93/xbe/x99 EGYPTIAN HIEROGLYPH-13F99
+<U00013F9A> /xf0/x93/xbe/x9a EGYPTIAN HIEROGLYPH-13F9A
+<U00013F9B> /xf0/x93/xbe/x9b EGYPTIAN HIEROGLYPH-13F9B
+<U00013F9C> /xf0/x93/xbe/x9c EGYPTIAN HIEROGLYPH-13F9C
+<U00013F9D> /xf0/x93/xbe/x9d EGYPTIAN HIEROGLYPH-13F9D
+<U00013F9E> /xf0/x93/xbe/x9e EGYPTIAN HIEROGLYPH-13F9E
+<U00013F9F> /xf0/x93/xbe/x9f EGYPTIAN HIEROGLYPH-13F9F
+<U00013FA0> /xf0/x93/xbe/xa0 EGYPTIAN HIEROGLYPH-13FA0
+<U00013FA1> /xf0/x93/xbe/xa1 EGYPTIAN HIEROGLYPH-13FA1
+<U00013FA2> /xf0/x93/xbe/xa2 EGYPTIAN HIEROGLYPH-13FA2
+<U00013FA3> /xf0/x93/xbe/xa3 EGYPTIAN HIEROGLYPH-13FA3
+<U00013FA4> /xf0/x93/xbe/xa4 EGYPTIAN HIEROGLYPH-13FA4
+<U00013FA5> /xf0/x93/xbe/xa5 EGYPTIAN HIEROGLYPH-13FA5
+<U00013FA6> /xf0/x93/xbe/xa6 EGYPTIAN HIEROGLYPH-13FA6
+<U00013FA7> /xf0/x93/xbe/xa7 EGYPTIAN HIEROGLYPH-13FA7
+<U00013FA8> /xf0/x93/xbe/xa8 EGYPTIAN HIEROGLYPH-13FA8
+<U00013FA9> /xf0/x93/xbe/xa9 EGYPTIAN HIEROGLYPH-13FA9
+<U00013FAA> /xf0/x93/xbe/xaa EGYPTIAN HIEROGLYPH-13FAA
+<U00013FAB> /xf0/x93/xbe/xab EGYPTIAN HIEROGLYPH-13FAB
+<U00013FAC> /xf0/x93/xbe/xac EGYPTIAN HIEROGLYPH-13FAC
+<U00013FAD> /xf0/x93/xbe/xad EGYPTIAN HIEROGLYPH-13FAD
+<U00013FAE> /xf0/x93/xbe/xae EGYPTIAN HIEROGLYPH-13FAE
+<U00013FAF> /xf0/x93/xbe/xaf EGYPTIAN HIEROGLYPH-13FAF
+<U00013FB0> /xf0/x93/xbe/xb0 EGYPTIAN HIEROGLYPH-13FB0
+<U00013FB1> /xf0/x93/xbe/xb1 EGYPTIAN HIEROGLYPH-13FB1
+<U00013FB2> /xf0/x93/xbe/xb2 EGYPTIAN HIEROGLYPH-13FB2
+<U00013FB3> /xf0/x93/xbe/xb3 EGYPTIAN HIEROGLYPH-13FB3
+<U00013FB4> /xf0/x93/xbe/xb4 EGYPTIAN HIEROGLYPH-13FB4
+<U00013FB5> /xf0/x93/xbe/xb5 EGYPTIAN HIEROGLYPH-13FB5
+<U00013FB6> /xf0/x93/xbe/xb6 EGYPTIAN HIEROGLYPH-13FB6
+<U00013FB7> /xf0/x93/xbe/xb7 EGYPTIAN HIEROGLYPH-13FB7
+<U00013FB8> /xf0/x93/xbe/xb8 EGYPTIAN HIEROGLYPH-13FB8
+<U00013FB9> /xf0/x93/xbe/xb9 EGYPTIAN HIEROGLYPH-13FB9
+<U00013FBA> /xf0/x93/xbe/xba EGYPTIAN HIEROGLYPH-13FBA
+<U00013FBB> /xf0/x93/xbe/xbb EGYPTIAN HIEROGLYPH-13FBB
+<U00013FBC> /xf0/x93/xbe/xbc EGYPTIAN HIEROGLYPH-13FBC
+<U00013FBD> /xf0/x93/xbe/xbd EGYPTIAN HIEROGLYPH-13FBD
+<U00013FBE> /xf0/x93/xbe/xbe EGYPTIAN HIEROGLYPH-13FBE
+<U00013FBF> /xf0/x93/xbe/xbf EGYPTIAN HIEROGLYPH-13FBF
+<U00013FC0> /xf0/x93/xbf/x80 EGYPTIAN HIEROGLYPH-13FC0
+<U00013FC1> /xf0/x93/xbf/x81 EGYPTIAN HIEROGLYPH-13FC1
+<U00013FC2> /xf0/x93/xbf/x82 EGYPTIAN HIEROGLYPH-13FC2
+<U00013FC3> /xf0/x93/xbf/x83 EGYPTIAN HIEROGLYPH-13FC3
+<U00013FC4> /xf0/x93/xbf/x84 EGYPTIAN HIEROGLYPH-13FC4
+<U00013FC5> /xf0/x93/xbf/x85 EGYPTIAN HIEROGLYPH-13FC5
+<U00013FC6> /xf0/x93/xbf/x86 EGYPTIAN HIEROGLYPH-13FC6
+<U00013FC7> /xf0/x93/xbf/x87 EGYPTIAN HIEROGLYPH-13FC7
+<U00013FC8> /xf0/x93/xbf/x88 EGYPTIAN HIEROGLYPH-13FC8
+<U00013FC9> /xf0/x93/xbf/x89 EGYPTIAN HIEROGLYPH-13FC9
+<U00013FCA> /xf0/x93/xbf/x8a EGYPTIAN HIEROGLYPH-13FCA
+<U00013FCB> /xf0/x93/xbf/x8b EGYPTIAN HIEROGLYPH-13FCB
+<U00013FCC> /xf0/x93/xbf/x8c EGYPTIAN HIEROGLYPH-13FCC
+<U00013FCD> /xf0/x93/xbf/x8d EGYPTIAN HIEROGLYPH-13FCD
+<U00013FCE> /xf0/x93/xbf/x8e EGYPTIAN HIEROGLYPH-13FCE
+<U00013FCF> /xf0/x93/xbf/x8f EGYPTIAN HIEROGLYPH-13FCF
+<U00013FD0> /xf0/x93/xbf/x90 EGYPTIAN HIEROGLYPH-13FD0
+<U00013FD1> /xf0/x93/xbf/x91 EGYPTIAN HIEROGLYPH-13FD1
+<U00013FD2> /xf0/x93/xbf/x92 EGYPTIAN HIEROGLYPH-13FD2
+<U00013FD3> /xf0/x93/xbf/x93 EGYPTIAN HIEROGLYPH-13FD3
+<U00013FD4> /xf0/x93/xbf/x94 EGYPTIAN HIEROGLYPH-13FD4
+<U00013FD5> /xf0/x93/xbf/x95 EGYPTIAN HIEROGLYPH-13FD5
+<U00013FD6> /xf0/x93/xbf/x96 EGYPTIAN HIEROGLYPH-13FD6
+<U00013FD7> /xf0/x93/xbf/x97 EGYPTIAN HIEROGLYPH-13FD7
+<U00013FD8> /xf0/x93/xbf/x98 EGYPTIAN HIEROGLYPH-13FD8
+<U00013FD9> /xf0/x93/xbf/x99 EGYPTIAN HIEROGLYPH-13FD9
+<U00013FDA> /xf0/x93/xbf/x9a EGYPTIAN HIEROGLYPH-13FDA
+<U00013FDB> /xf0/x93/xbf/x9b EGYPTIAN HIEROGLYPH-13FDB
+<U00013FDC> /xf0/x93/xbf/x9c EGYPTIAN HIEROGLYPH-13FDC
+<U00013FDD> /xf0/x93/xbf/x9d EGYPTIAN HIEROGLYPH-13FDD
+<U00013FDE> /xf0/x93/xbf/x9e EGYPTIAN HIEROGLYPH-13FDE
+<U00013FDF> /xf0/x93/xbf/x9f EGYPTIAN HIEROGLYPH-13FDF
+<U00013FE0> /xf0/x93/xbf/xa0 EGYPTIAN HIEROGLYPH-13FE0
+<U00013FE1> /xf0/x93/xbf/xa1 EGYPTIAN HIEROGLYPH-13FE1
+<U00013FE2> /xf0/x93/xbf/xa2 EGYPTIAN HIEROGLYPH-13FE2
+<U00013FE3> /xf0/x93/xbf/xa3 EGYPTIAN HIEROGLYPH-13FE3
+<U00013FE4> /xf0/x93/xbf/xa4 EGYPTIAN HIEROGLYPH-13FE4
+<U00013FE5> /xf0/x93/xbf/xa5 EGYPTIAN HIEROGLYPH-13FE5
+<U00013FE6> /xf0/x93/xbf/xa6 EGYPTIAN HIEROGLYPH-13FE6
+<U00013FE7> /xf0/x93/xbf/xa7 EGYPTIAN HIEROGLYPH-13FE7
+<U00013FE8> /xf0/x93/xbf/xa8 EGYPTIAN HIEROGLYPH-13FE8
+<U00013FE9> /xf0/x93/xbf/xa9 EGYPTIAN HIEROGLYPH-13FE9
+<U00013FEA> /xf0/x93/xbf/xaa EGYPTIAN HIEROGLYPH-13FEA
+<U00013FEB> /xf0/x93/xbf/xab EGYPTIAN HIEROGLYPH-13FEB
+<U00013FEC> /xf0/x93/xbf/xac EGYPTIAN HIEROGLYPH-13FEC
+<U00013FED> /xf0/x93/xbf/xad EGYPTIAN HIEROGLYPH-13FED
+<U00013FEE> /xf0/x93/xbf/xae EGYPTIAN HIEROGLYPH-13FEE
+<U00013FEF> /xf0/x93/xbf/xaf EGYPTIAN HIEROGLYPH-13FEF
+<U00013FF0> /xf0/x93/xbf/xb0 EGYPTIAN HIEROGLYPH-13FF0
+<U00013FF1> /xf0/x93/xbf/xb1 EGYPTIAN HIEROGLYPH-13FF1
+<U00013FF2> /xf0/x93/xbf/xb2 EGYPTIAN HIEROGLYPH-13FF2
+<U00013FF3> /xf0/x93/xbf/xb3 EGYPTIAN HIEROGLYPH-13FF3
+<U00013FF4> /xf0/x93/xbf/xb4 EGYPTIAN HIEROGLYPH-13FF4
+<U00013FF5> /xf0/x93/xbf/xb5 EGYPTIAN HIEROGLYPH-13FF5
+<U00013FF6> /xf0/x93/xbf/xb6 EGYPTIAN HIEROGLYPH-13FF6
+<U00013FF7> /xf0/x93/xbf/xb7 EGYPTIAN HIEROGLYPH-13FF7
+<U00013FF8> /xf0/x93/xbf/xb8 EGYPTIAN HIEROGLYPH-13FF8
+<U00013FF9> /xf0/x93/xbf/xb9 EGYPTIAN HIEROGLYPH-13FF9
+<U00013FFA> /xf0/x93/xbf/xba EGYPTIAN HIEROGLYPH-13FFA
+<U00013FFB> /xf0/x93/xbf/xbb EGYPTIAN HIEROGLYPH-13FFB
+<U00013FFC> /xf0/x93/xbf/xbc EGYPTIAN HIEROGLYPH-13FFC
+<U00013FFD> /xf0/x93/xbf/xbd EGYPTIAN HIEROGLYPH-13FFD
+<U00013FFE> /xf0/x93/xbf/xbe EGYPTIAN HIEROGLYPH-13FFE
+<U00013FFF> /xf0/x93/xbf/xbf EGYPTIAN HIEROGLYPH-13FFF
+<U00014000> /xf0/x94/x80/x80 EGYPTIAN HIEROGLYPH-14000
+<U00014001> /xf0/x94/x80/x81 EGYPTIAN HIEROGLYPH-14001
+<U00014002> /xf0/x94/x80/x82 EGYPTIAN HIEROGLYPH-14002
+<U00014003> /xf0/x94/x80/x83 EGYPTIAN HIEROGLYPH-14003
+<U00014004> /xf0/x94/x80/x84 EGYPTIAN HIEROGLYPH-14004
+<U00014005> /xf0/x94/x80/x85 EGYPTIAN HIEROGLYPH-14005
+<U00014006> /xf0/x94/x80/x86 EGYPTIAN HIEROGLYPH-14006
+<U00014007> /xf0/x94/x80/x87 EGYPTIAN HIEROGLYPH-14007
+<U00014008> /xf0/x94/x80/x88 EGYPTIAN HIEROGLYPH-14008
+<U00014009> /xf0/x94/x80/x89 EGYPTIAN HIEROGLYPH-14009
+<U0001400A> /xf0/x94/x80/x8a EGYPTIAN HIEROGLYPH-1400A
+<U0001400B> /xf0/x94/x80/x8b EGYPTIAN HIEROGLYPH-1400B
+<U0001400C> /xf0/x94/x80/x8c EGYPTIAN HIEROGLYPH-1400C
+<U0001400D> /xf0/x94/x80/x8d EGYPTIAN HIEROGLYPH-1400D
+<U0001400E> /xf0/x94/x80/x8e EGYPTIAN HIEROGLYPH-1400E
+<U0001400F> /xf0/x94/x80/x8f EGYPTIAN HIEROGLYPH-1400F
+<U00014010> /xf0/x94/x80/x90 EGYPTIAN HIEROGLYPH-14010
+<U00014011> /xf0/x94/x80/x91 EGYPTIAN HIEROGLYPH-14011
+<U00014012> /xf0/x94/x80/x92 EGYPTIAN HIEROGLYPH-14012
+<U00014013> /xf0/x94/x80/x93 EGYPTIAN HIEROGLYPH-14013
+<U00014014> /xf0/x94/x80/x94 EGYPTIAN HIEROGLYPH-14014
+<U00014015> /xf0/x94/x80/x95 EGYPTIAN HIEROGLYPH-14015
+<U00014016> /xf0/x94/x80/x96 EGYPTIAN HIEROGLYPH-14016
+<U00014017> /xf0/x94/x80/x97 EGYPTIAN HIEROGLYPH-14017
+<U00014018> /xf0/x94/x80/x98 EGYPTIAN HIEROGLYPH-14018
+<U00014019> /xf0/x94/x80/x99 EGYPTIAN HIEROGLYPH-14019
+<U0001401A> /xf0/x94/x80/x9a EGYPTIAN HIEROGLYPH-1401A
+<U0001401B> /xf0/x94/x80/x9b EGYPTIAN HIEROGLYPH-1401B
+<U0001401C> /xf0/x94/x80/x9c EGYPTIAN HIEROGLYPH-1401C
+<U0001401D> /xf0/x94/x80/x9d EGYPTIAN HIEROGLYPH-1401D
+<U0001401E> /xf0/x94/x80/x9e EGYPTIAN HIEROGLYPH-1401E
+<U0001401F> /xf0/x94/x80/x9f EGYPTIAN HIEROGLYPH-1401F
+<U00014020> /xf0/x94/x80/xa0 EGYPTIAN HIEROGLYPH-14020
+<U00014021> /xf0/x94/x80/xa1 EGYPTIAN HIEROGLYPH-14021
+<U00014022> /xf0/x94/x80/xa2 EGYPTIAN HIEROGLYPH-14022
+<U00014023> /xf0/x94/x80/xa3 EGYPTIAN HIEROGLYPH-14023
+<U00014024> /xf0/x94/x80/xa4 EGYPTIAN HIEROGLYPH-14024
+<U00014025> /xf0/x94/x80/xa5 EGYPTIAN HIEROGLYPH-14025
+<U00014026> /xf0/x94/x80/xa6 EGYPTIAN HIEROGLYPH-14026
+<U00014027> /xf0/x94/x80/xa7 EGYPTIAN HIEROGLYPH-14027
+<U00014028> /xf0/x94/x80/xa8 EGYPTIAN HIEROGLYPH-14028
+<U00014029> /xf0/x94/x80/xa9 EGYPTIAN HIEROGLYPH-14029
+<U0001402A> /xf0/x94/x80/xaa EGYPTIAN HIEROGLYPH-1402A
+<U0001402B> /xf0/x94/x80/xab EGYPTIAN HIEROGLYPH-1402B
+<U0001402C> /xf0/x94/x80/xac EGYPTIAN HIEROGLYPH-1402C
+<U0001402D> /xf0/x94/x80/xad EGYPTIAN HIEROGLYPH-1402D
+<U0001402E> /xf0/x94/x80/xae EGYPTIAN HIEROGLYPH-1402E
+<U0001402F> /xf0/x94/x80/xaf EGYPTIAN HIEROGLYPH-1402F
+<U00014030> /xf0/x94/x80/xb0 EGYPTIAN HIEROGLYPH-14030
+<U00014031> /xf0/x94/x80/xb1 EGYPTIAN HIEROGLYPH-14031
+<U00014032> /xf0/x94/x80/xb2 EGYPTIAN HIEROGLYPH-14032
+<U00014033> /xf0/x94/x80/xb3 EGYPTIAN HIEROGLYPH-14033
+<U00014034> /xf0/x94/x80/xb4 EGYPTIAN HIEROGLYPH-14034
+<U00014035> /xf0/x94/x80/xb5 EGYPTIAN HIEROGLYPH-14035
+<U00014036> /xf0/x94/x80/xb6 EGYPTIAN HIEROGLYPH-14036
+<U00014037> /xf0/x94/x80/xb7 EGYPTIAN HIEROGLYPH-14037
+<U00014038> /xf0/x94/x80/xb8 EGYPTIAN HIEROGLYPH-14038
+<U00014039> /xf0/x94/x80/xb9 EGYPTIAN HIEROGLYPH-14039
+<U0001403A> /xf0/x94/x80/xba EGYPTIAN HIEROGLYPH-1403A
+<U0001403B> /xf0/x94/x80/xbb EGYPTIAN HIEROGLYPH-1403B
+<U0001403C> /xf0/x94/x80/xbc EGYPTIAN HIEROGLYPH-1403C
+<U0001403D> /xf0/x94/x80/xbd EGYPTIAN HIEROGLYPH-1403D
+<U0001403E> /xf0/x94/x80/xbe EGYPTIAN HIEROGLYPH-1403E
+<U0001403F> /xf0/x94/x80/xbf EGYPTIAN HIEROGLYPH-1403F
+<U00014040> /xf0/x94/x81/x80 EGYPTIAN HIEROGLYPH-14040
+<U00014041> /xf0/x94/x81/x81 EGYPTIAN HIEROGLYPH-14041
+<U00014042> /xf0/x94/x81/x82 EGYPTIAN HIEROGLYPH-14042
+<U00014043> /xf0/x94/x81/x83 EGYPTIAN HIEROGLYPH-14043
+<U00014044> /xf0/x94/x81/x84 EGYPTIAN HIEROGLYPH-14044
+<U00014045> /xf0/x94/x81/x85 EGYPTIAN HIEROGLYPH-14045
+<U00014046> /xf0/x94/x81/x86 EGYPTIAN HIEROGLYPH-14046
+<U00014047> /xf0/x94/x81/x87 EGYPTIAN HIEROGLYPH-14047
+<U00014048> /xf0/x94/x81/x88 EGYPTIAN HIEROGLYPH-14048
+<U00014049> /xf0/x94/x81/x89 EGYPTIAN HIEROGLYPH-14049
+<U0001404A> /xf0/x94/x81/x8a EGYPTIAN HIEROGLYPH-1404A
+<U0001404B> /xf0/x94/x81/x8b EGYPTIAN HIEROGLYPH-1404B
+<U0001404C> /xf0/x94/x81/x8c EGYPTIAN HIEROGLYPH-1404C
+<U0001404D> /xf0/x94/x81/x8d EGYPTIAN HIEROGLYPH-1404D
+<U0001404E> /xf0/x94/x81/x8e EGYPTIAN HIEROGLYPH-1404E
+<U0001404F> /xf0/x94/x81/x8f EGYPTIAN HIEROGLYPH-1404F
+<U00014050> /xf0/x94/x81/x90 EGYPTIAN HIEROGLYPH-14050
+<U00014051> /xf0/x94/x81/x91 EGYPTIAN HIEROGLYPH-14051
+<U00014052> /xf0/x94/x81/x92 EGYPTIAN HIEROGLYPH-14052
+<U00014053> /xf0/x94/x81/x93 EGYPTIAN HIEROGLYPH-14053
+<U00014054> /xf0/x94/x81/x94 EGYPTIAN HIEROGLYPH-14054
+<U00014055> /xf0/x94/x81/x95 EGYPTIAN HIEROGLYPH-14055
+<U00014056> /xf0/x94/x81/x96 EGYPTIAN HIEROGLYPH-14056
+<U00014057> /xf0/x94/x81/x97 EGYPTIAN HIEROGLYPH-14057
+<U00014058> /xf0/x94/x81/x98 EGYPTIAN HIEROGLYPH-14058
+<U00014059> /xf0/x94/x81/x99 EGYPTIAN HIEROGLYPH-14059
+<U0001405A> /xf0/x94/x81/x9a EGYPTIAN HIEROGLYPH-1405A
+<U0001405B> /xf0/x94/x81/x9b EGYPTIAN HIEROGLYPH-1405B
+<U0001405C> /xf0/x94/x81/x9c EGYPTIAN HIEROGLYPH-1405C
+<U0001405D> /xf0/x94/x81/x9d EGYPTIAN HIEROGLYPH-1405D
+<U0001405E> /xf0/x94/x81/x9e EGYPTIAN HIEROGLYPH-1405E
+<U0001405F> /xf0/x94/x81/x9f EGYPTIAN HIEROGLYPH-1405F
+<U00014060> /xf0/x94/x81/xa0 EGYPTIAN HIEROGLYPH-14060
+<U00014061> /xf0/x94/x81/xa1 EGYPTIAN HIEROGLYPH-14061
+<U00014062> /xf0/x94/x81/xa2 EGYPTIAN HIEROGLYPH-14062
+<U00014063> /xf0/x94/x81/xa3 EGYPTIAN HIEROGLYPH-14063
+<U00014064> /xf0/x94/x81/xa4 EGYPTIAN HIEROGLYPH-14064
+<U00014065> /xf0/x94/x81/xa5 EGYPTIAN HIEROGLYPH-14065
+<U00014066> /xf0/x94/x81/xa6 EGYPTIAN HIEROGLYPH-14066
+<U00014067> /xf0/x94/x81/xa7 EGYPTIAN HIEROGLYPH-14067
+<U00014068> /xf0/x94/x81/xa8 EGYPTIAN HIEROGLYPH-14068
+<U00014069> /xf0/x94/x81/xa9 EGYPTIAN HIEROGLYPH-14069
+<U0001406A> /xf0/x94/x81/xaa EGYPTIAN HIEROGLYPH-1406A
+<U0001406B> /xf0/x94/x81/xab EGYPTIAN HIEROGLYPH-1406B
+<U0001406C> /xf0/x94/x81/xac EGYPTIAN HIEROGLYPH-1406C
+<U0001406D> /xf0/x94/x81/xad EGYPTIAN HIEROGLYPH-1406D
+<U0001406E> /xf0/x94/x81/xae EGYPTIAN HIEROGLYPH-1406E
+<U0001406F> /xf0/x94/x81/xaf EGYPTIAN HIEROGLYPH-1406F
+<U00014070> /xf0/x94/x81/xb0 EGYPTIAN HIEROGLYPH-14070
+<U00014071> /xf0/x94/x81/xb1 EGYPTIAN HIEROGLYPH-14071
+<U00014072> /xf0/x94/x81/xb2 EGYPTIAN HIEROGLYPH-14072
+<U00014073> /xf0/x94/x81/xb3 EGYPTIAN HIEROGLYPH-14073
+<U00014074> /xf0/x94/x81/xb4 EGYPTIAN HIEROGLYPH-14074
+<U00014075> /xf0/x94/x81/xb5 EGYPTIAN HIEROGLYPH-14075
+<U00014076> /xf0/x94/x81/xb6 EGYPTIAN HIEROGLYPH-14076
+<U00014077> /xf0/x94/x81/xb7 EGYPTIAN HIEROGLYPH-14077
+<U00014078> /xf0/x94/x81/xb8 EGYPTIAN HIEROGLYPH-14078
+<U00014079> /xf0/x94/x81/xb9 EGYPTIAN HIEROGLYPH-14079
+<U0001407A> /xf0/x94/x81/xba EGYPTIAN HIEROGLYPH-1407A
+<U0001407B> /xf0/x94/x81/xbb EGYPTIAN HIEROGLYPH-1407B
+<U0001407C> /xf0/x94/x81/xbc EGYPTIAN HIEROGLYPH-1407C
+<U0001407D> /xf0/x94/x81/xbd EGYPTIAN HIEROGLYPH-1407D
+<U0001407E> /xf0/x94/x81/xbe EGYPTIAN HIEROGLYPH-1407E
+<U0001407F> /xf0/x94/x81/xbf EGYPTIAN HIEROGLYPH-1407F
+<U00014080> /xf0/x94/x82/x80 EGYPTIAN HIEROGLYPH-14080
+<U00014081> /xf0/x94/x82/x81 EGYPTIAN HIEROGLYPH-14081
+<U00014082> /xf0/x94/x82/x82 EGYPTIAN HIEROGLYPH-14082
+<U00014083> /xf0/x94/x82/x83 EGYPTIAN HIEROGLYPH-14083
+<U00014084> /xf0/x94/x82/x84 EGYPTIAN HIEROGLYPH-14084
+<U00014085> /xf0/x94/x82/x85 EGYPTIAN HIEROGLYPH-14085
+<U00014086> /xf0/x94/x82/x86 EGYPTIAN HIEROGLYPH-14086
+<U00014087> /xf0/x94/x82/x87 EGYPTIAN HIEROGLYPH-14087
+<U00014088> /xf0/x94/x82/x88 EGYPTIAN HIEROGLYPH-14088
+<U00014089> /xf0/x94/x82/x89 EGYPTIAN HIEROGLYPH-14089
+<U0001408A> /xf0/x94/x82/x8a EGYPTIAN HIEROGLYPH-1408A
+<U0001408B> /xf0/x94/x82/x8b EGYPTIAN HIEROGLYPH-1408B
+<U0001408C> /xf0/x94/x82/x8c EGYPTIAN HIEROGLYPH-1408C
+<U0001408D> /xf0/x94/x82/x8d EGYPTIAN HIEROGLYPH-1408D
+<U0001408E> /xf0/x94/x82/x8e EGYPTIAN HIEROGLYPH-1408E
+<U0001408F> /xf0/x94/x82/x8f EGYPTIAN HIEROGLYPH-1408F
+<U00014090> /xf0/x94/x82/x90 EGYPTIAN HIEROGLYPH-14090
+<U00014091> /xf0/x94/x82/x91 EGYPTIAN HIEROGLYPH-14091
+<U00014092> /xf0/x94/x82/x92 EGYPTIAN HIEROGLYPH-14092
+<U00014093> /xf0/x94/x82/x93 EGYPTIAN HIEROGLYPH-14093
+<U00014094> /xf0/x94/x82/x94 EGYPTIAN HIEROGLYPH-14094
+<U00014095> /xf0/x94/x82/x95 EGYPTIAN HIEROGLYPH-14095
+<U00014096> /xf0/x94/x82/x96 EGYPTIAN HIEROGLYPH-14096
+<U00014097> /xf0/x94/x82/x97 EGYPTIAN HIEROGLYPH-14097
+<U00014098> /xf0/x94/x82/x98 EGYPTIAN HIEROGLYPH-14098
+<U00014099> /xf0/x94/x82/x99 EGYPTIAN HIEROGLYPH-14099
+<U0001409A> /xf0/x94/x82/x9a EGYPTIAN HIEROGLYPH-1409A
+<U0001409B> /xf0/x94/x82/x9b EGYPTIAN HIEROGLYPH-1409B
+<U0001409C> /xf0/x94/x82/x9c EGYPTIAN HIEROGLYPH-1409C
+<U0001409D> /xf0/x94/x82/x9d EGYPTIAN HIEROGLYPH-1409D
+<U0001409E> /xf0/x94/x82/x9e EGYPTIAN HIEROGLYPH-1409E
+<U0001409F> /xf0/x94/x82/x9f EGYPTIAN HIEROGLYPH-1409F
+<U000140A0> /xf0/x94/x82/xa0 EGYPTIAN HIEROGLYPH-140A0
+<U000140A1> /xf0/x94/x82/xa1 EGYPTIAN HIEROGLYPH-140A1
+<U000140A2> /xf0/x94/x82/xa2 EGYPTIAN HIEROGLYPH-140A2
+<U000140A3> /xf0/x94/x82/xa3 EGYPTIAN HIEROGLYPH-140A3
+<U000140A4> /xf0/x94/x82/xa4 EGYPTIAN HIEROGLYPH-140A4
+<U000140A5> /xf0/x94/x82/xa5 EGYPTIAN HIEROGLYPH-140A5
+<U000140A6> /xf0/x94/x82/xa6 EGYPTIAN HIEROGLYPH-140A6
+<U000140A7> /xf0/x94/x82/xa7 EGYPTIAN HIEROGLYPH-140A7
+<U000140A8> /xf0/x94/x82/xa8 EGYPTIAN HIEROGLYPH-140A8
+<U000140A9> /xf0/x94/x82/xa9 EGYPTIAN HIEROGLYPH-140A9
+<U000140AA> /xf0/x94/x82/xaa EGYPTIAN HIEROGLYPH-140AA
+<U000140AB> /xf0/x94/x82/xab EGYPTIAN HIEROGLYPH-140AB
+<U000140AC> /xf0/x94/x82/xac EGYPTIAN HIEROGLYPH-140AC
+<U000140AD> /xf0/x94/x82/xad EGYPTIAN HIEROGLYPH-140AD
+<U000140AE> /xf0/x94/x82/xae EGYPTIAN HIEROGLYPH-140AE
+<U000140AF> /xf0/x94/x82/xaf EGYPTIAN HIEROGLYPH-140AF
+<U000140B0> /xf0/x94/x82/xb0 EGYPTIAN HIEROGLYPH-140B0
+<U000140B1> /xf0/x94/x82/xb1 EGYPTIAN HIEROGLYPH-140B1
+<U000140B2> /xf0/x94/x82/xb2 EGYPTIAN HIEROGLYPH-140B2
+<U000140B3> /xf0/x94/x82/xb3 EGYPTIAN HIEROGLYPH-140B3
+<U000140B4> /xf0/x94/x82/xb4 EGYPTIAN HIEROGLYPH-140B4
+<U000140B5> /xf0/x94/x82/xb5 EGYPTIAN HIEROGLYPH-140B5
+<U000140B6> /xf0/x94/x82/xb6 EGYPTIAN HIEROGLYPH-140B6
+<U000140B7> /xf0/x94/x82/xb7 EGYPTIAN HIEROGLYPH-140B7
+<U000140B8> /xf0/x94/x82/xb8 EGYPTIAN HIEROGLYPH-140B8
+<U000140B9> /xf0/x94/x82/xb9 EGYPTIAN HIEROGLYPH-140B9
+<U000140BA> /xf0/x94/x82/xba EGYPTIAN HIEROGLYPH-140BA
+<U000140BB> /xf0/x94/x82/xbb EGYPTIAN HIEROGLYPH-140BB
+<U000140BC> /xf0/x94/x82/xbc EGYPTIAN HIEROGLYPH-140BC
+<U000140BD> /xf0/x94/x82/xbd EGYPTIAN HIEROGLYPH-140BD
+<U000140BE> /xf0/x94/x82/xbe EGYPTIAN HIEROGLYPH-140BE
+<U000140BF> /xf0/x94/x82/xbf EGYPTIAN HIEROGLYPH-140BF
+<U000140C0> /xf0/x94/x83/x80 EGYPTIAN HIEROGLYPH-140C0
+<U000140C1> /xf0/x94/x83/x81 EGYPTIAN HIEROGLYPH-140C1
+<U000140C2> /xf0/x94/x83/x82 EGYPTIAN HIEROGLYPH-140C2
+<U000140C3> /xf0/x94/x83/x83 EGYPTIAN HIEROGLYPH-140C3
+<U000140C4> /xf0/x94/x83/x84 EGYPTIAN HIEROGLYPH-140C4
+<U000140C5> /xf0/x94/x83/x85 EGYPTIAN HIEROGLYPH-140C5
+<U000140C6> /xf0/x94/x83/x86 EGYPTIAN HIEROGLYPH-140C6
+<U000140C7> /xf0/x94/x83/x87 EGYPTIAN HIEROGLYPH-140C7
+<U000140C8> /xf0/x94/x83/x88 EGYPTIAN HIEROGLYPH-140C8
+<U000140C9> /xf0/x94/x83/x89 EGYPTIAN HIEROGLYPH-140C9
+<U000140CA> /xf0/x94/x83/x8a EGYPTIAN HIEROGLYPH-140CA
+<U000140CB> /xf0/x94/x83/x8b EGYPTIAN HIEROGLYPH-140CB
+<U000140CC> /xf0/x94/x83/x8c EGYPTIAN HIEROGLYPH-140CC
+<U000140CD> /xf0/x94/x83/x8d EGYPTIAN HIEROGLYPH-140CD
+<U000140CE> /xf0/x94/x83/x8e EGYPTIAN HIEROGLYPH-140CE
+<U000140CF> /xf0/x94/x83/x8f EGYPTIAN HIEROGLYPH-140CF
+<U000140D0> /xf0/x94/x83/x90 EGYPTIAN HIEROGLYPH-140D0
+<U000140D1> /xf0/x94/x83/x91 EGYPTIAN HIEROGLYPH-140D1
+<U000140D2> /xf0/x94/x83/x92 EGYPTIAN HIEROGLYPH-140D2
+<U000140D3> /xf0/x94/x83/x93 EGYPTIAN HIEROGLYPH-140D3
+<U000140D4> /xf0/x94/x83/x94 EGYPTIAN HIEROGLYPH-140D4
+<U000140D5> /xf0/x94/x83/x95 EGYPTIAN HIEROGLYPH-140D5
+<U000140D6> /xf0/x94/x83/x96 EGYPTIAN HIEROGLYPH-140D6
+<U000140D7> /xf0/x94/x83/x97 EGYPTIAN HIEROGLYPH-140D7
+<U000140D8> /xf0/x94/x83/x98 EGYPTIAN HIEROGLYPH-140D8
+<U000140D9> /xf0/x94/x83/x99 EGYPTIAN HIEROGLYPH-140D9
+<U000140DA> /xf0/x94/x83/x9a EGYPTIAN HIEROGLYPH-140DA
+<U000140DB> /xf0/x94/x83/x9b EGYPTIAN HIEROGLYPH-140DB
+<U000140DC> /xf0/x94/x83/x9c EGYPTIAN HIEROGLYPH-140DC
+<U000140DD> /xf0/x94/x83/x9d EGYPTIAN HIEROGLYPH-140DD
+<U000140DE> /xf0/x94/x83/x9e EGYPTIAN HIEROGLYPH-140DE
+<U000140DF> /xf0/x94/x83/x9f EGYPTIAN HIEROGLYPH-140DF
+<U000140E0> /xf0/x94/x83/xa0 EGYPTIAN HIEROGLYPH-140E0
+<U000140E1> /xf0/x94/x83/xa1 EGYPTIAN HIEROGLYPH-140E1
+<U000140E2> /xf0/x94/x83/xa2 EGYPTIAN HIEROGLYPH-140E2
+<U000140E3> /xf0/x94/x83/xa3 EGYPTIAN HIEROGLYPH-140E3
+<U000140E4> /xf0/x94/x83/xa4 EGYPTIAN HIEROGLYPH-140E4
+<U000140E5> /xf0/x94/x83/xa5 EGYPTIAN HIEROGLYPH-140E5
+<U000140E6> /xf0/x94/x83/xa6 EGYPTIAN HIEROGLYPH-140E6
+<U000140E7> /xf0/x94/x83/xa7 EGYPTIAN HIEROGLYPH-140E7
+<U000140E8> /xf0/x94/x83/xa8 EGYPTIAN HIEROGLYPH-140E8
+<U000140E9> /xf0/x94/x83/xa9 EGYPTIAN HIEROGLYPH-140E9
+<U000140EA> /xf0/x94/x83/xaa EGYPTIAN HIEROGLYPH-140EA
+<U000140EB> /xf0/x94/x83/xab EGYPTIAN HIEROGLYPH-140EB
+<U000140EC> /xf0/x94/x83/xac EGYPTIAN HIEROGLYPH-140EC
+<U000140ED> /xf0/x94/x83/xad EGYPTIAN HIEROGLYPH-140ED
+<U000140EE> /xf0/x94/x83/xae EGYPTIAN HIEROGLYPH-140EE
+<U000140EF> /xf0/x94/x83/xaf EGYPTIAN HIEROGLYPH-140EF
+<U000140F0> /xf0/x94/x83/xb0 EGYPTIAN HIEROGLYPH-140F0
+<U000140F1> /xf0/x94/x83/xb1 EGYPTIAN HIEROGLYPH-140F1
+<U000140F2> /xf0/x94/x83/xb2 EGYPTIAN HIEROGLYPH-140F2
+<U000140F3> /xf0/x94/x83/xb3 EGYPTIAN HIEROGLYPH-140F3
+<U000140F4> /xf0/x94/x83/xb4 EGYPTIAN HIEROGLYPH-140F4
+<U000140F5> /xf0/x94/x83/xb5 EGYPTIAN HIEROGLYPH-140F5
+<U000140F6> /xf0/x94/x83/xb6 EGYPTIAN HIEROGLYPH-140F6
+<U000140F7> /xf0/x94/x83/xb7 EGYPTIAN HIEROGLYPH-140F7
+<U000140F8> /xf0/x94/x83/xb8 EGYPTIAN HIEROGLYPH-140F8
+<U000140F9> /xf0/x94/x83/xb9 EGYPTIAN HIEROGLYPH-140F9
+<U000140FA> /xf0/x94/x83/xba EGYPTIAN HIEROGLYPH-140FA
+<U000140FB> /xf0/x94/x83/xbb EGYPTIAN HIEROGLYPH-140FB
+<U000140FC> /xf0/x94/x83/xbc EGYPTIAN HIEROGLYPH-140FC
+<U000140FD> /xf0/x94/x83/xbd EGYPTIAN HIEROGLYPH-140FD
+<U000140FE> /xf0/x94/x83/xbe EGYPTIAN HIEROGLYPH-140FE
+<U000140FF> /xf0/x94/x83/xbf EGYPTIAN HIEROGLYPH-140FF
+<U00014100> /xf0/x94/x84/x80 EGYPTIAN HIEROGLYPH-14100
+<U00014101> /xf0/x94/x84/x81 EGYPTIAN HIEROGLYPH-14101
+<U00014102> /xf0/x94/x84/x82 EGYPTIAN HIEROGLYPH-14102
+<U00014103> /xf0/x94/x84/x83 EGYPTIAN HIEROGLYPH-14103
+<U00014104> /xf0/x94/x84/x84 EGYPTIAN HIEROGLYPH-14104
+<U00014105> /xf0/x94/x84/x85 EGYPTIAN HIEROGLYPH-14105
+<U00014106> /xf0/x94/x84/x86 EGYPTIAN HIEROGLYPH-14106
+<U00014107> /xf0/x94/x84/x87 EGYPTIAN HIEROGLYPH-14107
+<U00014108> /xf0/x94/x84/x88 EGYPTIAN HIEROGLYPH-14108
+<U00014109> /xf0/x94/x84/x89 EGYPTIAN HIEROGLYPH-14109
+<U0001410A> /xf0/x94/x84/x8a EGYPTIAN HIEROGLYPH-1410A
+<U0001410B> /xf0/x94/x84/x8b EGYPTIAN HIEROGLYPH-1410B
+<U0001410C> /xf0/x94/x84/x8c EGYPTIAN HIEROGLYPH-1410C
+<U0001410D> /xf0/x94/x84/x8d EGYPTIAN HIEROGLYPH-1410D
+<U0001410E> /xf0/x94/x84/x8e EGYPTIAN HIEROGLYPH-1410E
+<U0001410F> /xf0/x94/x84/x8f EGYPTIAN HIEROGLYPH-1410F
+<U00014110> /xf0/x94/x84/x90 EGYPTIAN HIEROGLYPH-14110
+<U00014111> /xf0/x94/x84/x91 EGYPTIAN HIEROGLYPH-14111
+<U00014112> /xf0/x94/x84/x92 EGYPTIAN HIEROGLYPH-14112
+<U00014113> /xf0/x94/x84/x93 EGYPTIAN HIEROGLYPH-14113
+<U00014114> /xf0/x94/x84/x94 EGYPTIAN HIEROGLYPH-14114
+<U00014115> /xf0/x94/x84/x95 EGYPTIAN HIEROGLYPH-14115
+<U00014116> /xf0/x94/x84/x96 EGYPTIAN HIEROGLYPH-14116
+<U00014117> /xf0/x94/x84/x97 EGYPTIAN HIEROGLYPH-14117
+<U00014118> /xf0/x94/x84/x98 EGYPTIAN HIEROGLYPH-14118
+<U00014119> /xf0/x94/x84/x99 EGYPTIAN HIEROGLYPH-14119
+<U0001411A> /xf0/x94/x84/x9a EGYPTIAN HIEROGLYPH-1411A
+<U0001411B> /xf0/x94/x84/x9b EGYPTIAN HIEROGLYPH-1411B
+<U0001411C> /xf0/x94/x84/x9c EGYPTIAN HIEROGLYPH-1411C
+<U0001411D> /xf0/x94/x84/x9d EGYPTIAN HIEROGLYPH-1411D
+<U0001411E> /xf0/x94/x84/x9e EGYPTIAN HIEROGLYPH-1411E
+<U0001411F> /xf0/x94/x84/x9f EGYPTIAN HIEROGLYPH-1411F
+<U00014120> /xf0/x94/x84/xa0 EGYPTIAN HIEROGLYPH-14120
+<U00014121> /xf0/x94/x84/xa1 EGYPTIAN HIEROGLYPH-14121
+<U00014122> /xf0/x94/x84/xa2 EGYPTIAN HIEROGLYPH-14122
+<U00014123> /xf0/x94/x84/xa3 EGYPTIAN HIEROGLYPH-14123
+<U00014124> /xf0/x94/x84/xa4 EGYPTIAN HIEROGLYPH-14124
+<U00014125> /xf0/x94/x84/xa5 EGYPTIAN HIEROGLYPH-14125
+<U00014126> /xf0/x94/x84/xa6 EGYPTIAN HIEROGLYPH-14126
+<U00014127> /xf0/x94/x84/xa7 EGYPTIAN HIEROGLYPH-14127
+<U00014128> /xf0/x94/x84/xa8 EGYPTIAN HIEROGLYPH-14128
+<U00014129> /xf0/x94/x84/xa9 EGYPTIAN HIEROGLYPH-14129
+<U0001412A> /xf0/x94/x84/xaa EGYPTIAN HIEROGLYPH-1412A
+<U0001412B> /xf0/x94/x84/xab EGYPTIAN HIEROGLYPH-1412B
+<U0001412C> /xf0/x94/x84/xac EGYPTIAN HIEROGLYPH-1412C
+<U0001412D> /xf0/x94/x84/xad EGYPTIAN HIEROGLYPH-1412D
+<U0001412E> /xf0/x94/x84/xae EGYPTIAN HIEROGLYPH-1412E
+<U0001412F> /xf0/x94/x84/xaf EGYPTIAN HIEROGLYPH-1412F
+<U00014130> /xf0/x94/x84/xb0 EGYPTIAN HIEROGLYPH-14130
+<U00014131> /xf0/x94/x84/xb1 EGYPTIAN HIEROGLYPH-14131
+<U00014132> /xf0/x94/x84/xb2 EGYPTIAN HIEROGLYPH-14132
+<U00014133> /xf0/x94/x84/xb3 EGYPTIAN HIEROGLYPH-14133
+<U00014134> /xf0/x94/x84/xb4 EGYPTIAN HIEROGLYPH-14134
+<U00014135> /xf0/x94/x84/xb5 EGYPTIAN HIEROGLYPH-14135
+<U00014136> /xf0/x94/x84/xb6 EGYPTIAN HIEROGLYPH-14136
+<U00014137> /xf0/x94/x84/xb7 EGYPTIAN HIEROGLYPH-14137
+<U00014138> /xf0/x94/x84/xb8 EGYPTIAN HIEROGLYPH-14138
+<U00014139> /xf0/x94/x84/xb9 EGYPTIAN HIEROGLYPH-14139
+<U0001413A> /xf0/x94/x84/xba EGYPTIAN HIEROGLYPH-1413A
+<U0001413B> /xf0/x94/x84/xbb EGYPTIAN HIEROGLYPH-1413B
+<U0001413C> /xf0/x94/x84/xbc EGYPTIAN HIEROGLYPH-1413C
+<U0001413D> /xf0/x94/x84/xbd EGYPTIAN HIEROGLYPH-1413D
+<U0001413E> /xf0/x94/x84/xbe EGYPTIAN HIEROGLYPH-1413E
+<U0001413F> /xf0/x94/x84/xbf EGYPTIAN HIEROGLYPH-1413F
+<U00014140> /xf0/x94/x85/x80 EGYPTIAN HIEROGLYPH-14140
+<U00014141> /xf0/x94/x85/x81 EGYPTIAN HIEROGLYPH-14141
+<U00014142> /xf0/x94/x85/x82 EGYPTIAN HIEROGLYPH-14142
+<U00014143> /xf0/x94/x85/x83 EGYPTIAN HIEROGLYPH-14143
+<U00014144> /xf0/x94/x85/x84 EGYPTIAN HIEROGLYPH-14144
+<U00014145> /xf0/x94/x85/x85 EGYPTIAN HIEROGLYPH-14145
+<U00014146> /xf0/x94/x85/x86 EGYPTIAN HIEROGLYPH-14146
+<U00014147> /xf0/x94/x85/x87 EGYPTIAN HIEROGLYPH-14147
+<U00014148> /xf0/x94/x85/x88 EGYPTIAN HIEROGLYPH-14148
+<U00014149> /xf0/x94/x85/x89 EGYPTIAN HIEROGLYPH-14149
+<U0001414A> /xf0/x94/x85/x8a EGYPTIAN HIEROGLYPH-1414A
+<U0001414B> /xf0/x94/x85/x8b EGYPTIAN HIEROGLYPH-1414B
+<U0001414C> /xf0/x94/x85/x8c EGYPTIAN HIEROGLYPH-1414C
+<U0001414D> /xf0/x94/x85/x8d EGYPTIAN HIEROGLYPH-1414D
+<U0001414E> /xf0/x94/x85/x8e EGYPTIAN HIEROGLYPH-1414E
+<U0001414F> /xf0/x94/x85/x8f EGYPTIAN HIEROGLYPH-1414F
+<U00014150> /xf0/x94/x85/x90 EGYPTIAN HIEROGLYPH-14150
+<U00014151> /xf0/x94/x85/x91 EGYPTIAN HIEROGLYPH-14151
+<U00014152> /xf0/x94/x85/x92 EGYPTIAN HIEROGLYPH-14152
+<U00014153> /xf0/x94/x85/x93 EGYPTIAN HIEROGLYPH-14153
+<U00014154> /xf0/x94/x85/x94 EGYPTIAN HIEROGLYPH-14154
+<U00014155> /xf0/x94/x85/x95 EGYPTIAN HIEROGLYPH-14155
+<U00014156> /xf0/x94/x85/x96 EGYPTIAN HIEROGLYPH-14156
+<U00014157> /xf0/x94/x85/x97 EGYPTIAN HIEROGLYPH-14157
+<U00014158> /xf0/x94/x85/x98 EGYPTIAN HIEROGLYPH-14158
+<U00014159> /xf0/x94/x85/x99 EGYPTIAN HIEROGLYPH-14159
+<U0001415A> /xf0/x94/x85/x9a EGYPTIAN HIEROGLYPH-1415A
+<U0001415B> /xf0/x94/x85/x9b EGYPTIAN HIEROGLYPH-1415B
+<U0001415C> /xf0/x94/x85/x9c EGYPTIAN HIEROGLYPH-1415C
+<U0001415D> /xf0/x94/x85/x9d EGYPTIAN HIEROGLYPH-1415D
+<U0001415E> /xf0/x94/x85/x9e EGYPTIAN HIEROGLYPH-1415E
+<U0001415F> /xf0/x94/x85/x9f EGYPTIAN HIEROGLYPH-1415F
+<U00014160> /xf0/x94/x85/xa0 EGYPTIAN HIEROGLYPH-14160
+<U00014161> /xf0/x94/x85/xa1 EGYPTIAN HIEROGLYPH-14161
+<U00014162> /xf0/x94/x85/xa2 EGYPTIAN HIEROGLYPH-14162
+<U00014163> /xf0/x94/x85/xa3 EGYPTIAN HIEROGLYPH-14163
+<U00014164> /xf0/x94/x85/xa4 EGYPTIAN HIEROGLYPH-14164
+<U00014165> /xf0/x94/x85/xa5 EGYPTIAN HIEROGLYPH-14165
+<U00014166> /xf0/x94/x85/xa6 EGYPTIAN HIEROGLYPH-14166
+<U00014167> /xf0/x94/x85/xa7 EGYPTIAN HIEROGLYPH-14167
+<U00014168> /xf0/x94/x85/xa8 EGYPTIAN HIEROGLYPH-14168
+<U00014169> /xf0/x94/x85/xa9 EGYPTIAN HIEROGLYPH-14169
+<U0001416A> /xf0/x94/x85/xaa EGYPTIAN HIEROGLYPH-1416A
+<U0001416B> /xf0/x94/x85/xab EGYPTIAN HIEROGLYPH-1416B
+<U0001416C> /xf0/x94/x85/xac EGYPTIAN HIEROGLYPH-1416C
+<U0001416D> /xf0/x94/x85/xad EGYPTIAN HIEROGLYPH-1416D
+<U0001416E> /xf0/x94/x85/xae EGYPTIAN HIEROGLYPH-1416E
+<U0001416F> /xf0/x94/x85/xaf EGYPTIAN HIEROGLYPH-1416F
+<U00014170> /xf0/x94/x85/xb0 EGYPTIAN HIEROGLYPH-14170
+<U00014171> /xf0/x94/x85/xb1 EGYPTIAN HIEROGLYPH-14171
+<U00014172> /xf0/x94/x85/xb2 EGYPTIAN HIEROGLYPH-14172
+<U00014173> /xf0/x94/x85/xb3 EGYPTIAN HIEROGLYPH-14173
+<U00014174> /xf0/x94/x85/xb4 EGYPTIAN HIEROGLYPH-14174
+<U00014175> /xf0/x94/x85/xb5 EGYPTIAN HIEROGLYPH-14175
+<U00014176> /xf0/x94/x85/xb6 EGYPTIAN HIEROGLYPH-14176
+<U00014177> /xf0/x94/x85/xb7 EGYPTIAN HIEROGLYPH-14177
+<U00014178> /xf0/x94/x85/xb8 EGYPTIAN HIEROGLYPH-14178
+<U00014179> /xf0/x94/x85/xb9 EGYPTIAN HIEROGLYPH-14179
+<U0001417A> /xf0/x94/x85/xba EGYPTIAN HIEROGLYPH-1417A
+<U0001417B> /xf0/x94/x85/xbb EGYPTIAN HIEROGLYPH-1417B
+<U0001417C> /xf0/x94/x85/xbc EGYPTIAN HIEROGLYPH-1417C
+<U0001417D> /xf0/x94/x85/xbd EGYPTIAN HIEROGLYPH-1417D
+<U0001417E> /xf0/x94/x85/xbe EGYPTIAN HIEROGLYPH-1417E
+<U0001417F> /xf0/x94/x85/xbf EGYPTIAN HIEROGLYPH-1417F
+<U00014180> /xf0/x94/x86/x80 EGYPTIAN HIEROGLYPH-14180
+<U00014181> /xf0/x94/x86/x81 EGYPTIAN HIEROGLYPH-14181
+<U00014182> /xf0/x94/x86/x82 EGYPTIAN HIEROGLYPH-14182
+<U00014183> /xf0/x94/x86/x83 EGYPTIAN HIEROGLYPH-14183
+<U00014184> /xf0/x94/x86/x84 EGYPTIAN HIEROGLYPH-14184
+<U00014185> /xf0/x94/x86/x85 EGYPTIAN HIEROGLYPH-14185
+<U00014186> /xf0/x94/x86/x86 EGYPTIAN HIEROGLYPH-14186
+<U00014187> /xf0/x94/x86/x87 EGYPTIAN HIEROGLYPH-14187
+<U00014188> /xf0/x94/x86/x88 EGYPTIAN HIEROGLYPH-14188
+<U00014189> /xf0/x94/x86/x89 EGYPTIAN HIEROGLYPH-14189
+<U0001418A> /xf0/x94/x86/x8a EGYPTIAN HIEROGLYPH-1418A
+<U0001418B> /xf0/x94/x86/x8b EGYPTIAN HIEROGLYPH-1418B
+<U0001418C> /xf0/x94/x86/x8c EGYPTIAN HIEROGLYPH-1418C
+<U0001418D> /xf0/x94/x86/x8d EGYPTIAN HIEROGLYPH-1418D
+<U0001418E> /xf0/x94/x86/x8e EGYPTIAN HIEROGLYPH-1418E
+<U0001418F> /xf0/x94/x86/x8f EGYPTIAN HIEROGLYPH-1418F
+<U00014190> /xf0/x94/x86/x90 EGYPTIAN HIEROGLYPH-14190
+<U00014191> /xf0/x94/x86/x91 EGYPTIAN HIEROGLYPH-14191
+<U00014192> /xf0/x94/x86/x92 EGYPTIAN HIEROGLYPH-14192
+<U00014193> /xf0/x94/x86/x93 EGYPTIAN HIEROGLYPH-14193
+<U00014194> /xf0/x94/x86/x94 EGYPTIAN HIEROGLYPH-14194
+<U00014195> /xf0/x94/x86/x95 EGYPTIAN HIEROGLYPH-14195
+<U00014196> /xf0/x94/x86/x96 EGYPTIAN HIEROGLYPH-14196
+<U00014197> /xf0/x94/x86/x97 EGYPTIAN HIEROGLYPH-14197
+<U00014198> /xf0/x94/x86/x98 EGYPTIAN HIEROGLYPH-14198
+<U00014199> /xf0/x94/x86/x99 EGYPTIAN HIEROGLYPH-14199
+<U0001419A> /xf0/x94/x86/x9a EGYPTIAN HIEROGLYPH-1419A
+<U0001419B> /xf0/x94/x86/x9b EGYPTIAN HIEROGLYPH-1419B
+<U0001419C> /xf0/x94/x86/x9c EGYPTIAN HIEROGLYPH-1419C
+<U0001419D> /xf0/x94/x86/x9d EGYPTIAN HIEROGLYPH-1419D
+<U0001419E> /xf0/x94/x86/x9e EGYPTIAN HIEROGLYPH-1419E
+<U0001419F> /xf0/x94/x86/x9f EGYPTIAN HIEROGLYPH-1419F
+<U000141A0> /xf0/x94/x86/xa0 EGYPTIAN HIEROGLYPH-141A0
+<U000141A1> /xf0/x94/x86/xa1 EGYPTIAN HIEROGLYPH-141A1
+<U000141A2> /xf0/x94/x86/xa2 EGYPTIAN HIEROGLYPH-141A2
+<U000141A3> /xf0/x94/x86/xa3 EGYPTIAN HIEROGLYPH-141A3
+<U000141A4> /xf0/x94/x86/xa4 EGYPTIAN HIEROGLYPH-141A4
+<U000141A5> /xf0/x94/x86/xa5 EGYPTIAN HIEROGLYPH-141A5
+<U000141A6> /xf0/x94/x86/xa6 EGYPTIAN HIEROGLYPH-141A6
+<U000141A7> /xf0/x94/x86/xa7 EGYPTIAN HIEROGLYPH-141A7
+<U000141A8> /xf0/x94/x86/xa8 EGYPTIAN HIEROGLYPH-141A8
+<U000141A9> /xf0/x94/x86/xa9 EGYPTIAN HIEROGLYPH-141A9
+<U000141AA> /xf0/x94/x86/xaa EGYPTIAN HIEROGLYPH-141AA
+<U000141AB> /xf0/x94/x86/xab EGYPTIAN HIEROGLYPH-141AB
+<U000141AC> /xf0/x94/x86/xac EGYPTIAN HIEROGLYPH-141AC
+<U000141AD> /xf0/x94/x86/xad EGYPTIAN HIEROGLYPH-141AD
+<U000141AE> /xf0/x94/x86/xae EGYPTIAN HIEROGLYPH-141AE
+<U000141AF> /xf0/x94/x86/xaf EGYPTIAN HIEROGLYPH-141AF
+<U000141B0> /xf0/x94/x86/xb0 EGYPTIAN HIEROGLYPH-141B0
+<U000141B1> /xf0/x94/x86/xb1 EGYPTIAN HIEROGLYPH-141B1
+<U000141B2> /xf0/x94/x86/xb2 EGYPTIAN HIEROGLYPH-141B2
+<U000141B3> /xf0/x94/x86/xb3 EGYPTIAN HIEROGLYPH-141B3
+<U000141B4> /xf0/x94/x86/xb4 EGYPTIAN HIEROGLYPH-141B4
+<U000141B5> /xf0/x94/x86/xb5 EGYPTIAN HIEROGLYPH-141B5
+<U000141B6> /xf0/x94/x86/xb6 EGYPTIAN HIEROGLYPH-141B6
+<U000141B7> /xf0/x94/x86/xb7 EGYPTIAN HIEROGLYPH-141B7
+<U000141B8> /xf0/x94/x86/xb8 EGYPTIAN HIEROGLYPH-141B8
+<U000141B9> /xf0/x94/x86/xb9 EGYPTIAN HIEROGLYPH-141B9
+<U000141BA> /xf0/x94/x86/xba EGYPTIAN HIEROGLYPH-141BA
+<U000141BB> /xf0/x94/x86/xbb EGYPTIAN HIEROGLYPH-141BB
+<U000141BC> /xf0/x94/x86/xbc EGYPTIAN HIEROGLYPH-141BC
+<U000141BD> /xf0/x94/x86/xbd EGYPTIAN HIEROGLYPH-141BD
+<U000141BE> /xf0/x94/x86/xbe EGYPTIAN HIEROGLYPH-141BE
+<U000141BF> /xf0/x94/x86/xbf EGYPTIAN HIEROGLYPH-141BF
+<U000141C0> /xf0/x94/x87/x80 EGYPTIAN HIEROGLYPH-141C0
+<U000141C1> /xf0/x94/x87/x81 EGYPTIAN HIEROGLYPH-141C1
+<U000141C2> /xf0/x94/x87/x82 EGYPTIAN HIEROGLYPH-141C2
+<U000141C3> /xf0/x94/x87/x83 EGYPTIAN HIEROGLYPH-141C3
+<U000141C4> /xf0/x94/x87/x84 EGYPTIAN HIEROGLYPH-141C4
+<U000141C5> /xf0/x94/x87/x85 EGYPTIAN HIEROGLYPH-141C5
+<U000141C6> /xf0/x94/x87/x86 EGYPTIAN HIEROGLYPH-141C6
+<U000141C7> /xf0/x94/x87/x87 EGYPTIAN HIEROGLYPH-141C7
+<U000141C8> /xf0/x94/x87/x88 EGYPTIAN HIEROGLYPH-141C8
+<U000141C9> /xf0/x94/x87/x89 EGYPTIAN HIEROGLYPH-141C9
+<U000141CA> /xf0/x94/x87/x8a EGYPTIAN HIEROGLYPH-141CA
+<U000141CB> /xf0/x94/x87/x8b EGYPTIAN HIEROGLYPH-141CB
+<U000141CC> /xf0/x94/x87/x8c EGYPTIAN HIEROGLYPH-141CC
+<U000141CD> /xf0/x94/x87/x8d EGYPTIAN HIEROGLYPH-141CD
+<U000141CE> /xf0/x94/x87/x8e EGYPTIAN HIEROGLYPH-141CE
+<U000141CF> /xf0/x94/x87/x8f EGYPTIAN HIEROGLYPH-141CF
+<U000141D0> /xf0/x94/x87/x90 EGYPTIAN HIEROGLYPH-141D0
+<U000141D1> /xf0/x94/x87/x91 EGYPTIAN HIEROGLYPH-141D1
+<U000141D2> /xf0/x94/x87/x92 EGYPTIAN HIEROGLYPH-141D2
+<U000141D3> /xf0/x94/x87/x93 EGYPTIAN HIEROGLYPH-141D3
+<U000141D4> /xf0/x94/x87/x94 EGYPTIAN HIEROGLYPH-141D4
+<U000141D5> /xf0/x94/x87/x95 EGYPTIAN HIEROGLYPH-141D5
+<U000141D6> /xf0/x94/x87/x96 EGYPTIAN HIEROGLYPH-141D6
+<U000141D7> /xf0/x94/x87/x97 EGYPTIAN HIEROGLYPH-141D7
+<U000141D8> /xf0/x94/x87/x98 EGYPTIAN HIEROGLYPH-141D8
+<U000141D9> /xf0/x94/x87/x99 EGYPTIAN HIEROGLYPH-141D9
+<U000141DA> /xf0/x94/x87/x9a EGYPTIAN HIEROGLYPH-141DA
+<U000141DB> /xf0/x94/x87/x9b EGYPTIAN HIEROGLYPH-141DB
+<U000141DC> /xf0/x94/x87/x9c EGYPTIAN HIEROGLYPH-141DC
+<U000141DD> /xf0/x94/x87/x9d EGYPTIAN HIEROGLYPH-141DD
+<U000141DE> /xf0/x94/x87/x9e EGYPTIAN HIEROGLYPH-141DE
+<U000141DF> /xf0/x94/x87/x9f EGYPTIAN HIEROGLYPH-141DF
+<U000141E0> /xf0/x94/x87/xa0 EGYPTIAN HIEROGLYPH-141E0
+<U000141E1> /xf0/x94/x87/xa1 EGYPTIAN HIEROGLYPH-141E1
+<U000141E2> /xf0/x94/x87/xa2 EGYPTIAN HIEROGLYPH-141E2
+<U000141E3> /xf0/x94/x87/xa3 EGYPTIAN HIEROGLYPH-141E3
+<U000141E4> /xf0/x94/x87/xa4 EGYPTIAN HIEROGLYPH-141E4
+<U000141E5> /xf0/x94/x87/xa5 EGYPTIAN HIEROGLYPH-141E5
+<U000141E6> /xf0/x94/x87/xa6 EGYPTIAN HIEROGLYPH-141E6
+<U000141E7> /xf0/x94/x87/xa7 EGYPTIAN HIEROGLYPH-141E7
+<U000141E8> /xf0/x94/x87/xa8 EGYPTIAN HIEROGLYPH-141E8
+<U000141E9> /xf0/x94/x87/xa9 EGYPTIAN HIEROGLYPH-141E9
+<U000141EA> /xf0/x94/x87/xaa EGYPTIAN HIEROGLYPH-141EA
+<U000141EB> /xf0/x94/x87/xab EGYPTIAN HIEROGLYPH-141EB
+<U000141EC> /xf0/x94/x87/xac EGYPTIAN HIEROGLYPH-141EC
+<U000141ED> /xf0/x94/x87/xad EGYPTIAN HIEROGLYPH-141ED
+<U000141EE> /xf0/x94/x87/xae EGYPTIAN HIEROGLYPH-141EE
+<U000141EF> /xf0/x94/x87/xaf EGYPTIAN HIEROGLYPH-141EF
+<U000141F0> /xf0/x94/x87/xb0 EGYPTIAN HIEROGLYPH-141F0
+<U000141F1> /xf0/x94/x87/xb1 EGYPTIAN HIEROGLYPH-141F1
+<U000141F2> /xf0/x94/x87/xb2 EGYPTIAN HIEROGLYPH-141F2
+<U000141F3> /xf0/x94/x87/xb3 EGYPTIAN HIEROGLYPH-141F3
+<U000141F4> /xf0/x94/x87/xb4 EGYPTIAN HIEROGLYPH-141F4
+<U000141F5> /xf0/x94/x87/xb5 EGYPTIAN HIEROGLYPH-141F5
+<U000141F6> /xf0/x94/x87/xb6 EGYPTIAN HIEROGLYPH-141F6
+<U000141F7> /xf0/x94/x87/xb7 EGYPTIAN HIEROGLYPH-141F7
+<U000141F8> /xf0/x94/x87/xb8 EGYPTIAN HIEROGLYPH-141F8
+<U000141F9> /xf0/x94/x87/xb9 EGYPTIAN HIEROGLYPH-141F9
+<U000141FA> /xf0/x94/x87/xba EGYPTIAN HIEROGLYPH-141FA
+<U000141FB> /xf0/x94/x87/xbb EGYPTIAN HIEROGLYPH-141FB
+<U000141FC> /xf0/x94/x87/xbc EGYPTIAN HIEROGLYPH-141FC
+<U000141FD> /xf0/x94/x87/xbd EGYPTIAN HIEROGLYPH-141FD
+<U000141FE> /xf0/x94/x87/xbe EGYPTIAN HIEROGLYPH-141FE
+<U000141FF> /xf0/x94/x87/xbf EGYPTIAN HIEROGLYPH-141FF
+<U00014200> /xf0/x94/x88/x80 EGYPTIAN HIEROGLYPH-14200
+<U00014201> /xf0/x94/x88/x81 EGYPTIAN HIEROGLYPH-14201
+<U00014202> /xf0/x94/x88/x82 EGYPTIAN HIEROGLYPH-14202
+<U00014203> /xf0/x94/x88/x83 EGYPTIAN HIEROGLYPH-14203
+<U00014204> /xf0/x94/x88/x84 EGYPTIAN HIEROGLYPH-14204
+<U00014205> /xf0/x94/x88/x85 EGYPTIAN HIEROGLYPH-14205
+<U00014206> /xf0/x94/x88/x86 EGYPTIAN HIEROGLYPH-14206
+<U00014207> /xf0/x94/x88/x87 EGYPTIAN HIEROGLYPH-14207
+<U00014208> /xf0/x94/x88/x88 EGYPTIAN HIEROGLYPH-14208
+<U00014209> /xf0/x94/x88/x89 EGYPTIAN HIEROGLYPH-14209
+<U0001420A> /xf0/x94/x88/x8a EGYPTIAN HIEROGLYPH-1420A
+<U0001420B> /xf0/x94/x88/x8b EGYPTIAN HIEROGLYPH-1420B
+<U0001420C> /xf0/x94/x88/x8c EGYPTIAN HIEROGLYPH-1420C
+<U0001420D> /xf0/x94/x88/x8d EGYPTIAN HIEROGLYPH-1420D
+<U0001420E> /xf0/x94/x88/x8e EGYPTIAN HIEROGLYPH-1420E
+<U0001420F> /xf0/x94/x88/x8f EGYPTIAN HIEROGLYPH-1420F
+<U00014210> /xf0/x94/x88/x90 EGYPTIAN HIEROGLYPH-14210
+<U00014211> /xf0/x94/x88/x91 EGYPTIAN HIEROGLYPH-14211
+<U00014212> /xf0/x94/x88/x92 EGYPTIAN HIEROGLYPH-14212
+<U00014213> /xf0/x94/x88/x93 EGYPTIAN HIEROGLYPH-14213
+<U00014214> /xf0/x94/x88/x94 EGYPTIAN HIEROGLYPH-14214
+<U00014215> /xf0/x94/x88/x95 EGYPTIAN HIEROGLYPH-14215
+<U00014216> /xf0/x94/x88/x96 EGYPTIAN HIEROGLYPH-14216
+<U00014217> /xf0/x94/x88/x97 EGYPTIAN HIEROGLYPH-14217
+<U00014218> /xf0/x94/x88/x98 EGYPTIAN HIEROGLYPH-14218
+<U00014219> /xf0/x94/x88/x99 EGYPTIAN HIEROGLYPH-14219
+<U0001421A> /xf0/x94/x88/x9a EGYPTIAN HIEROGLYPH-1421A
+<U0001421B> /xf0/x94/x88/x9b EGYPTIAN HIEROGLYPH-1421B
+<U0001421C> /xf0/x94/x88/x9c EGYPTIAN HIEROGLYPH-1421C
+<U0001421D> /xf0/x94/x88/x9d EGYPTIAN HIEROGLYPH-1421D
+<U0001421E> /xf0/x94/x88/x9e EGYPTIAN HIEROGLYPH-1421E
+<U0001421F> /xf0/x94/x88/x9f EGYPTIAN HIEROGLYPH-1421F
+<U00014220> /xf0/x94/x88/xa0 EGYPTIAN HIEROGLYPH-14220
+<U00014221> /xf0/x94/x88/xa1 EGYPTIAN HIEROGLYPH-14221
+<U00014222> /xf0/x94/x88/xa2 EGYPTIAN HIEROGLYPH-14222
+<U00014223> /xf0/x94/x88/xa3 EGYPTIAN HIEROGLYPH-14223
+<U00014224> /xf0/x94/x88/xa4 EGYPTIAN HIEROGLYPH-14224
+<U00014225> /xf0/x94/x88/xa5 EGYPTIAN HIEROGLYPH-14225
+<U00014226> /xf0/x94/x88/xa6 EGYPTIAN HIEROGLYPH-14226
+<U00014227> /xf0/x94/x88/xa7 EGYPTIAN HIEROGLYPH-14227
+<U00014228> /xf0/x94/x88/xa8 EGYPTIAN HIEROGLYPH-14228
+<U00014229> /xf0/x94/x88/xa9 EGYPTIAN HIEROGLYPH-14229
+<U0001422A> /xf0/x94/x88/xaa EGYPTIAN HIEROGLYPH-1422A
+<U0001422B> /xf0/x94/x88/xab EGYPTIAN HIEROGLYPH-1422B
+<U0001422C> /xf0/x94/x88/xac EGYPTIAN HIEROGLYPH-1422C
+<U0001422D> /xf0/x94/x88/xad EGYPTIAN HIEROGLYPH-1422D
+<U0001422E> /xf0/x94/x88/xae EGYPTIAN HIEROGLYPH-1422E
+<U0001422F> /xf0/x94/x88/xaf EGYPTIAN HIEROGLYPH-1422F
+<U00014230> /xf0/x94/x88/xb0 EGYPTIAN HIEROGLYPH-14230
+<U00014231> /xf0/x94/x88/xb1 EGYPTIAN HIEROGLYPH-14231
+<U00014232> /xf0/x94/x88/xb2 EGYPTIAN HIEROGLYPH-14232
+<U00014233> /xf0/x94/x88/xb3 EGYPTIAN HIEROGLYPH-14233
+<U00014234> /xf0/x94/x88/xb4 EGYPTIAN HIEROGLYPH-14234
+<U00014235> /xf0/x94/x88/xb5 EGYPTIAN HIEROGLYPH-14235
+<U00014236> /xf0/x94/x88/xb6 EGYPTIAN HIEROGLYPH-14236
+<U00014237> /xf0/x94/x88/xb7 EGYPTIAN HIEROGLYPH-14237
+<U00014238> /xf0/x94/x88/xb8 EGYPTIAN HIEROGLYPH-14238
+<U00014239> /xf0/x94/x88/xb9 EGYPTIAN HIEROGLYPH-14239
+<U0001423A> /xf0/x94/x88/xba EGYPTIAN HIEROGLYPH-1423A
+<U0001423B> /xf0/x94/x88/xbb EGYPTIAN HIEROGLYPH-1423B
+<U0001423C> /xf0/x94/x88/xbc EGYPTIAN HIEROGLYPH-1423C
+<U0001423D> /xf0/x94/x88/xbd EGYPTIAN HIEROGLYPH-1423D
+<U0001423E> /xf0/x94/x88/xbe EGYPTIAN HIEROGLYPH-1423E
+<U0001423F> /xf0/x94/x88/xbf EGYPTIAN HIEROGLYPH-1423F
+<U00014240> /xf0/x94/x89/x80 EGYPTIAN HIEROGLYPH-14240
+<U00014241> /xf0/x94/x89/x81 EGYPTIAN HIEROGLYPH-14241
+<U00014242> /xf0/x94/x89/x82 EGYPTIAN HIEROGLYPH-14242
+<U00014243> /xf0/x94/x89/x83 EGYPTIAN HIEROGLYPH-14243
+<U00014244> /xf0/x94/x89/x84 EGYPTIAN HIEROGLYPH-14244
+<U00014245> /xf0/x94/x89/x85 EGYPTIAN HIEROGLYPH-14245
+<U00014246> /xf0/x94/x89/x86 EGYPTIAN HIEROGLYPH-14246
+<U00014247> /xf0/x94/x89/x87 EGYPTIAN HIEROGLYPH-14247
+<U00014248> /xf0/x94/x89/x88 EGYPTIAN HIEROGLYPH-14248
+<U00014249> /xf0/x94/x89/x89 EGYPTIAN HIEROGLYPH-14249
+<U0001424A> /xf0/x94/x89/x8a EGYPTIAN HIEROGLYPH-1424A
+<U0001424B> /xf0/x94/x89/x8b EGYPTIAN HIEROGLYPH-1424B
+<U0001424C> /xf0/x94/x89/x8c EGYPTIAN HIEROGLYPH-1424C
+<U0001424D> /xf0/x94/x89/x8d EGYPTIAN HIEROGLYPH-1424D
+<U0001424E> /xf0/x94/x89/x8e EGYPTIAN HIEROGLYPH-1424E
+<U0001424F> /xf0/x94/x89/x8f EGYPTIAN HIEROGLYPH-1424F
+<U00014250> /xf0/x94/x89/x90 EGYPTIAN HIEROGLYPH-14250
+<U00014251> /xf0/x94/x89/x91 EGYPTIAN HIEROGLYPH-14251
+<U00014252> /xf0/x94/x89/x92 EGYPTIAN HIEROGLYPH-14252
+<U00014253> /xf0/x94/x89/x93 EGYPTIAN HIEROGLYPH-14253
+<U00014254> /xf0/x94/x89/x94 EGYPTIAN HIEROGLYPH-14254
+<U00014255> /xf0/x94/x89/x95 EGYPTIAN HIEROGLYPH-14255
+<U00014256> /xf0/x94/x89/x96 EGYPTIAN HIEROGLYPH-14256
+<U00014257> /xf0/x94/x89/x97 EGYPTIAN HIEROGLYPH-14257
+<U00014258> /xf0/x94/x89/x98 EGYPTIAN HIEROGLYPH-14258
+<U00014259> /xf0/x94/x89/x99 EGYPTIAN HIEROGLYPH-14259
+<U0001425A> /xf0/x94/x89/x9a EGYPTIAN HIEROGLYPH-1425A
+<U0001425B> /xf0/x94/x89/x9b EGYPTIAN HIEROGLYPH-1425B
+<U0001425C> /xf0/x94/x89/x9c EGYPTIAN HIEROGLYPH-1425C
+<U0001425D> /xf0/x94/x89/x9d EGYPTIAN HIEROGLYPH-1425D
+<U0001425E> /xf0/x94/x89/x9e EGYPTIAN HIEROGLYPH-1425E
+<U0001425F> /xf0/x94/x89/x9f EGYPTIAN HIEROGLYPH-1425F
+<U00014260> /xf0/x94/x89/xa0 EGYPTIAN HIEROGLYPH-14260
+<U00014261> /xf0/x94/x89/xa1 EGYPTIAN HIEROGLYPH-14261
+<U00014262> /xf0/x94/x89/xa2 EGYPTIAN HIEROGLYPH-14262
+<U00014263> /xf0/x94/x89/xa3 EGYPTIAN HIEROGLYPH-14263
+<U00014264> /xf0/x94/x89/xa4 EGYPTIAN HIEROGLYPH-14264
+<U00014265> /xf0/x94/x89/xa5 EGYPTIAN HIEROGLYPH-14265
+<U00014266> /xf0/x94/x89/xa6 EGYPTIAN HIEROGLYPH-14266
+<U00014267> /xf0/x94/x89/xa7 EGYPTIAN HIEROGLYPH-14267
+<U00014268> /xf0/x94/x89/xa8 EGYPTIAN HIEROGLYPH-14268
+<U00014269> /xf0/x94/x89/xa9 EGYPTIAN HIEROGLYPH-14269
+<U0001426A> /xf0/x94/x89/xaa EGYPTIAN HIEROGLYPH-1426A
+<U0001426B> /xf0/x94/x89/xab EGYPTIAN HIEROGLYPH-1426B
+<U0001426C> /xf0/x94/x89/xac EGYPTIAN HIEROGLYPH-1426C
+<U0001426D> /xf0/x94/x89/xad EGYPTIAN HIEROGLYPH-1426D
+<U0001426E> /xf0/x94/x89/xae EGYPTIAN HIEROGLYPH-1426E
+<U0001426F> /xf0/x94/x89/xaf EGYPTIAN HIEROGLYPH-1426F
+<U00014270> /xf0/x94/x89/xb0 EGYPTIAN HIEROGLYPH-14270
+<U00014271> /xf0/x94/x89/xb1 EGYPTIAN HIEROGLYPH-14271
+<U00014272> /xf0/x94/x89/xb2 EGYPTIAN HIEROGLYPH-14272
+<U00014273> /xf0/x94/x89/xb3 EGYPTIAN HIEROGLYPH-14273
+<U00014274> /xf0/x94/x89/xb4 EGYPTIAN HIEROGLYPH-14274
+<U00014275> /xf0/x94/x89/xb5 EGYPTIAN HIEROGLYPH-14275
+<U00014276> /xf0/x94/x89/xb6 EGYPTIAN HIEROGLYPH-14276
+<U00014277> /xf0/x94/x89/xb7 EGYPTIAN HIEROGLYPH-14277
+<U00014278> /xf0/x94/x89/xb8 EGYPTIAN HIEROGLYPH-14278
+<U00014279> /xf0/x94/x89/xb9 EGYPTIAN HIEROGLYPH-14279
+<U0001427A> /xf0/x94/x89/xba EGYPTIAN HIEROGLYPH-1427A
+<U0001427B> /xf0/x94/x89/xbb EGYPTIAN HIEROGLYPH-1427B
+<U0001427C> /xf0/x94/x89/xbc EGYPTIAN HIEROGLYPH-1427C
+<U0001427D> /xf0/x94/x89/xbd EGYPTIAN HIEROGLYPH-1427D
+<U0001427E> /xf0/x94/x89/xbe EGYPTIAN HIEROGLYPH-1427E
+<U0001427F> /xf0/x94/x89/xbf EGYPTIAN HIEROGLYPH-1427F
+<U00014280> /xf0/x94/x8a/x80 EGYPTIAN HIEROGLYPH-14280
+<U00014281> /xf0/x94/x8a/x81 EGYPTIAN HIEROGLYPH-14281
+<U00014282> /xf0/x94/x8a/x82 EGYPTIAN HIEROGLYPH-14282
+<U00014283> /xf0/x94/x8a/x83 EGYPTIAN HIEROGLYPH-14283
+<U00014284> /xf0/x94/x8a/x84 EGYPTIAN HIEROGLYPH-14284
+<U00014285> /xf0/x94/x8a/x85 EGYPTIAN HIEROGLYPH-14285
+<U00014286> /xf0/x94/x8a/x86 EGYPTIAN HIEROGLYPH-14286
+<U00014287> /xf0/x94/x8a/x87 EGYPTIAN HIEROGLYPH-14287
+<U00014288> /xf0/x94/x8a/x88 EGYPTIAN HIEROGLYPH-14288
+<U00014289> /xf0/x94/x8a/x89 EGYPTIAN HIEROGLYPH-14289
+<U0001428A> /xf0/x94/x8a/x8a EGYPTIAN HIEROGLYPH-1428A
+<U0001428B> /xf0/x94/x8a/x8b EGYPTIAN HIEROGLYPH-1428B
+<U0001428C> /xf0/x94/x8a/x8c EGYPTIAN HIEROGLYPH-1428C
+<U0001428D> /xf0/x94/x8a/x8d EGYPTIAN HIEROGLYPH-1428D
+<U0001428E> /xf0/x94/x8a/x8e EGYPTIAN HIEROGLYPH-1428E
+<U0001428F> /xf0/x94/x8a/x8f EGYPTIAN HIEROGLYPH-1428F
+<U00014290> /xf0/x94/x8a/x90 EGYPTIAN HIEROGLYPH-14290
+<U00014291> /xf0/x94/x8a/x91 EGYPTIAN HIEROGLYPH-14291
+<U00014292> /xf0/x94/x8a/x92 EGYPTIAN HIEROGLYPH-14292
+<U00014293> /xf0/x94/x8a/x93 EGYPTIAN HIEROGLYPH-14293
+<U00014294> /xf0/x94/x8a/x94 EGYPTIAN HIEROGLYPH-14294
+<U00014295> /xf0/x94/x8a/x95 EGYPTIAN HIEROGLYPH-14295
+<U00014296> /xf0/x94/x8a/x96 EGYPTIAN HIEROGLYPH-14296
+<U00014297> /xf0/x94/x8a/x97 EGYPTIAN HIEROGLYPH-14297
+<U00014298> /xf0/x94/x8a/x98 EGYPTIAN HIEROGLYPH-14298
+<U00014299> /xf0/x94/x8a/x99 EGYPTIAN HIEROGLYPH-14299
+<U0001429A> /xf0/x94/x8a/x9a EGYPTIAN HIEROGLYPH-1429A
+<U0001429B> /xf0/x94/x8a/x9b EGYPTIAN HIEROGLYPH-1429B
+<U0001429C> /xf0/x94/x8a/x9c EGYPTIAN HIEROGLYPH-1429C
+<U0001429D> /xf0/x94/x8a/x9d EGYPTIAN HIEROGLYPH-1429D
+<U0001429E> /xf0/x94/x8a/x9e EGYPTIAN HIEROGLYPH-1429E
+<U0001429F> /xf0/x94/x8a/x9f EGYPTIAN HIEROGLYPH-1429F
+<U000142A0> /xf0/x94/x8a/xa0 EGYPTIAN HIEROGLYPH-142A0
+<U000142A1> /xf0/x94/x8a/xa1 EGYPTIAN HIEROGLYPH-142A1
+<U000142A2> /xf0/x94/x8a/xa2 EGYPTIAN HIEROGLYPH-142A2
+<U000142A3> /xf0/x94/x8a/xa3 EGYPTIAN HIEROGLYPH-142A3
+<U000142A4> /xf0/x94/x8a/xa4 EGYPTIAN HIEROGLYPH-142A4
+<U000142A5> /xf0/x94/x8a/xa5 EGYPTIAN HIEROGLYPH-142A5
+<U000142A6> /xf0/x94/x8a/xa6 EGYPTIAN HIEROGLYPH-142A6
+<U000142A7> /xf0/x94/x8a/xa7 EGYPTIAN HIEROGLYPH-142A7
+<U000142A8> /xf0/x94/x8a/xa8 EGYPTIAN HIEROGLYPH-142A8
+<U000142A9> /xf0/x94/x8a/xa9 EGYPTIAN HIEROGLYPH-142A9
+<U000142AA> /xf0/x94/x8a/xaa EGYPTIAN HIEROGLYPH-142AA
+<U000142AB> /xf0/x94/x8a/xab EGYPTIAN HIEROGLYPH-142AB
+<U000142AC> /xf0/x94/x8a/xac EGYPTIAN HIEROGLYPH-142AC
+<U000142AD> /xf0/x94/x8a/xad EGYPTIAN HIEROGLYPH-142AD
+<U000142AE> /xf0/x94/x8a/xae EGYPTIAN HIEROGLYPH-142AE
+<U000142AF> /xf0/x94/x8a/xaf EGYPTIAN HIEROGLYPH-142AF
+<U000142B0> /xf0/x94/x8a/xb0 EGYPTIAN HIEROGLYPH-142B0
+<U000142B1> /xf0/x94/x8a/xb1 EGYPTIAN HIEROGLYPH-142B1
+<U000142B2> /xf0/x94/x8a/xb2 EGYPTIAN HIEROGLYPH-142B2
+<U000142B3> /xf0/x94/x8a/xb3 EGYPTIAN HIEROGLYPH-142B3
+<U000142B4> /xf0/x94/x8a/xb4 EGYPTIAN HIEROGLYPH-142B4
+<U000142B5> /xf0/x94/x8a/xb5 EGYPTIAN HIEROGLYPH-142B5
+<U000142B6> /xf0/x94/x8a/xb6 EGYPTIAN HIEROGLYPH-142B6
+<U000142B7> /xf0/x94/x8a/xb7 EGYPTIAN HIEROGLYPH-142B7
+<U000142B8> /xf0/x94/x8a/xb8 EGYPTIAN HIEROGLYPH-142B8
+<U000142B9> /xf0/x94/x8a/xb9 EGYPTIAN HIEROGLYPH-142B9
+<U000142BA> /xf0/x94/x8a/xba EGYPTIAN HIEROGLYPH-142BA
+<U000142BB> /xf0/x94/x8a/xbb EGYPTIAN HIEROGLYPH-142BB
+<U000142BC> /xf0/x94/x8a/xbc EGYPTIAN HIEROGLYPH-142BC
+<U000142BD> /xf0/x94/x8a/xbd EGYPTIAN HIEROGLYPH-142BD
+<U000142BE> /xf0/x94/x8a/xbe EGYPTIAN HIEROGLYPH-142BE
+<U000142BF> /xf0/x94/x8a/xbf EGYPTIAN HIEROGLYPH-142BF
+<U000142C0> /xf0/x94/x8b/x80 EGYPTIAN HIEROGLYPH-142C0
+<U000142C1> /xf0/x94/x8b/x81 EGYPTIAN HIEROGLYPH-142C1
+<U000142C2> /xf0/x94/x8b/x82 EGYPTIAN HIEROGLYPH-142C2
+<U000142C3> /xf0/x94/x8b/x83 EGYPTIAN HIEROGLYPH-142C3
+<U000142C4> /xf0/x94/x8b/x84 EGYPTIAN HIEROGLYPH-142C4
+<U000142C5> /xf0/x94/x8b/x85 EGYPTIAN HIEROGLYPH-142C5
+<U000142C6> /xf0/x94/x8b/x86 EGYPTIAN HIEROGLYPH-142C6
+<U000142C7> /xf0/x94/x8b/x87 EGYPTIAN HIEROGLYPH-142C7
+<U000142C8> /xf0/x94/x8b/x88 EGYPTIAN HIEROGLYPH-142C8
+<U000142C9> /xf0/x94/x8b/x89 EGYPTIAN HIEROGLYPH-142C9
+<U000142CA> /xf0/x94/x8b/x8a EGYPTIAN HIEROGLYPH-142CA
+<U000142CB> /xf0/x94/x8b/x8b EGYPTIAN HIEROGLYPH-142CB
+<U000142CC> /xf0/x94/x8b/x8c EGYPTIAN HIEROGLYPH-142CC
+<U000142CD> /xf0/x94/x8b/x8d EGYPTIAN HIEROGLYPH-142CD
+<U000142CE> /xf0/x94/x8b/x8e EGYPTIAN HIEROGLYPH-142CE
+<U000142CF> /xf0/x94/x8b/x8f EGYPTIAN HIEROGLYPH-142CF
+<U000142D0> /xf0/x94/x8b/x90 EGYPTIAN HIEROGLYPH-142D0
+<U000142D1> /xf0/x94/x8b/x91 EGYPTIAN HIEROGLYPH-142D1
+<U000142D2> /xf0/x94/x8b/x92 EGYPTIAN HIEROGLYPH-142D2
+<U000142D3> /xf0/x94/x8b/x93 EGYPTIAN HIEROGLYPH-142D3
+<U000142D4> /xf0/x94/x8b/x94 EGYPTIAN HIEROGLYPH-142D4
+<U000142D5> /xf0/x94/x8b/x95 EGYPTIAN HIEROGLYPH-142D5
+<U000142D6> /xf0/x94/x8b/x96 EGYPTIAN HIEROGLYPH-142D6
+<U000142D7> /xf0/x94/x8b/x97 EGYPTIAN HIEROGLYPH-142D7
+<U000142D8> /xf0/x94/x8b/x98 EGYPTIAN HIEROGLYPH-142D8
+<U000142D9> /xf0/x94/x8b/x99 EGYPTIAN HIEROGLYPH-142D9
+<U000142DA> /xf0/x94/x8b/x9a EGYPTIAN HIEROGLYPH-142DA
+<U000142DB> /xf0/x94/x8b/x9b EGYPTIAN HIEROGLYPH-142DB
+<U000142DC> /xf0/x94/x8b/x9c EGYPTIAN HIEROGLYPH-142DC
+<U000142DD> /xf0/x94/x8b/x9d EGYPTIAN HIEROGLYPH-142DD
+<U000142DE> /xf0/x94/x8b/x9e EGYPTIAN HIEROGLYPH-142DE
+<U000142DF> /xf0/x94/x8b/x9f EGYPTIAN HIEROGLYPH-142DF
+<U000142E0> /xf0/x94/x8b/xa0 EGYPTIAN HIEROGLYPH-142E0
+<U000142E1> /xf0/x94/x8b/xa1 EGYPTIAN HIEROGLYPH-142E1
+<U000142E2> /xf0/x94/x8b/xa2 EGYPTIAN HIEROGLYPH-142E2
+<U000142E3> /xf0/x94/x8b/xa3 EGYPTIAN HIEROGLYPH-142E3
+<U000142E4> /xf0/x94/x8b/xa4 EGYPTIAN HIEROGLYPH-142E4
+<U000142E5> /xf0/x94/x8b/xa5 EGYPTIAN HIEROGLYPH-142E5
+<U000142E6> /xf0/x94/x8b/xa6 EGYPTIAN HIEROGLYPH-142E6
+<U000142E7> /xf0/x94/x8b/xa7 EGYPTIAN HIEROGLYPH-142E7
+<U000142E8> /xf0/x94/x8b/xa8 EGYPTIAN HIEROGLYPH-142E8
+<U000142E9> /xf0/x94/x8b/xa9 EGYPTIAN HIEROGLYPH-142E9
+<U000142EA> /xf0/x94/x8b/xaa EGYPTIAN HIEROGLYPH-142EA
+<U000142EB> /xf0/x94/x8b/xab EGYPTIAN HIEROGLYPH-142EB
+<U000142EC> /xf0/x94/x8b/xac EGYPTIAN HIEROGLYPH-142EC
+<U000142ED> /xf0/x94/x8b/xad EGYPTIAN HIEROGLYPH-142ED
+<U000142EE> /xf0/x94/x8b/xae EGYPTIAN HIEROGLYPH-142EE
+<U000142EF> /xf0/x94/x8b/xaf EGYPTIAN HIEROGLYPH-142EF
+<U000142F0> /xf0/x94/x8b/xb0 EGYPTIAN HIEROGLYPH-142F0
+<U000142F1> /xf0/x94/x8b/xb1 EGYPTIAN HIEROGLYPH-142F1
+<U000142F2> /xf0/x94/x8b/xb2 EGYPTIAN HIEROGLYPH-142F2
+<U000142F3> /xf0/x94/x8b/xb3 EGYPTIAN HIEROGLYPH-142F3
+<U000142F4> /xf0/x94/x8b/xb4 EGYPTIAN HIEROGLYPH-142F4
+<U000142F5> /xf0/x94/x8b/xb5 EGYPTIAN HIEROGLYPH-142F5
+<U000142F6> /xf0/x94/x8b/xb6 EGYPTIAN HIEROGLYPH-142F6
+<U000142F7> /xf0/x94/x8b/xb7 EGYPTIAN HIEROGLYPH-142F7
+<U000142F8> /xf0/x94/x8b/xb8 EGYPTIAN HIEROGLYPH-142F8
+<U000142F9> /xf0/x94/x8b/xb9 EGYPTIAN HIEROGLYPH-142F9
+<U000142FA> /xf0/x94/x8b/xba EGYPTIAN HIEROGLYPH-142FA
+<U000142FB> /xf0/x94/x8b/xbb EGYPTIAN HIEROGLYPH-142FB
+<U000142FC> /xf0/x94/x8b/xbc EGYPTIAN HIEROGLYPH-142FC
+<U000142FD> /xf0/x94/x8b/xbd EGYPTIAN HIEROGLYPH-142FD
+<U000142FE> /xf0/x94/x8b/xbe EGYPTIAN HIEROGLYPH-142FE
+<U000142FF> /xf0/x94/x8b/xbf EGYPTIAN HIEROGLYPH-142FF
+<U00014300> /xf0/x94/x8c/x80 EGYPTIAN HIEROGLYPH-14300
+<U00014301> /xf0/x94/x8c/x81 EGYPTIAN HIEROGLYPH-14301
+<U00014302> /xf0/x94/x8c/x82 EGYPTIAN HIEROGLYPH-14302
+<U00014303> /xf0/x94/x8c/x83 EGYPTIAN HIEROGLYPH-14303
+<U00014304> /xf0/x94/x8c/x84 EGYPTIAN HIEROGLYPH-14304
+<U00014305> /xf0/x94/x8c/x85 EGYPTIAN HIEROGLYPH-14305
+<U00014306> /xf0/x94/x8c/x86 EGYPTIAN HIEROGLYPH-14306
+<U00014307> /xf0/x94/x8c/x87 EGYPTIAN HIEROGLYPH-14307
+<U00014308> /xf0/x94/x8c/x88 EGYPTIAN HIEROGLYPH-14308
+<U00014309> /xf0/x94/x8c/x89 EGYPTIAN HIEROGLYPH-14309
+<U0001430A> /xf0/x94/x8c/x8a EGYPTIAN HIEROGLYPH-1430A
+<U0001430B> /xf0/x94/x8c/x8b EGYPTIAN HIEROGLYPH-1430B
+<U0001430C> /xf0/x94/x8c/x8c EGYPTIAN HIEROGLYPH-1430C
+<U0001430D> /xf0/x94/x8c/x8d EGYPTIAN HIEROGLYPH-1430D
+<U0001430E> /xf0/x94/x8c/x8e EGYPTIAN HIEROGLYPH-1430E
+<U0001430F> /xf0/x94/x8c/x8f EGYPTIAN HIEROGLYPH-1430F
+<U00014310> /xf0/x94/x8c/x90 EGYPTIAN HIEROGLYPH-14310
+<U00014311> /xf0/x94/x8c/x91 EGYPTIAN HIEROGLYPH-14311
+<U00014312> /xf0/x94/x8c/x92 EGYPTIAN HIEROGLYPH-14312
+<U00014313> /xf0/x94/x8c/x93 EGYPTIAN HIEROGLYPH-14313
+<U00014314> /xf0/x94/x8c/x94 EGYPTIAN HIEROGLYPH-14314
+<U00014315> /xf0/x94/x8c/x95 EGYPTIAN HIEROGLYPH-14315
+<U00014316> /xf0/x94/x8c/x96 EGYPTIAN HIEROGLYPH-14316
+<U00014317> /xf0/x94/x8c/x97 EGYPTIAN HIEROGLYPH-14317
+<U00014318> /xf0/x94/x8c/x98 EGYPTIAN HIEROGLYPH-14318
+<U00014319> /xf0/x94/x8c/x99 EGYPTIAN HIEROGLYPH-14319
+<U0001431A> /xf0/x94/x8c/x9a EGYPTIAN HIEROGLYPH-1431A
+<U0001431B> /xf0/x94/x8c/x9b EGYPTIAN HIEROGLYPH-1431B
+<U0001431C> /xf0/x94/x8c/x9c EGYPTIAN HIEROGLYPH-1431C
+<U0001431D> /xf0/x94/x8c/x9d EGYPTIAN HIEROGLYPH-1431D
+<U0001431E> /xf0/x94/x8c/x9e EGYPTIAN HIEROGLYPH-1431E
+<U0001431F> /xf0/x94/x8c/x9f EGYPTIAN HIEROGLYPH-1431F
+<U00014320> /xf0/x94/x8c/xa0 EGYPTIAN HIEROGLYPH-14320
+<U00014321> /xf0/x94/x8c/xa1 EGYPTIAN HIEROGLYPH-14321
+<U00014322> /xf0/x94/x8c/xa2 EGYPTIAN HIEROGLYPH-14322
+<U00014323> /xf0/x94/x8c/xa3 EGYPTIAN HIEROGLYPH-14323
+<U00014324> /xf0/x94/x8c/xa4 EGYPTIAN HIEROGLYPH-14324
+<U00014325> /xf0/x94/x8c/xa5 EGYPTIAN HIEROGLYPH-14325
+<U00014326> /xf0/x94/x8c/xa6 EGYPTIAN HIEROGLYPH-14326
+<U00014327> /xf0/x94/x8c/xa7 EGYPTIAN HIEROGLYPH-14327
+<U00014328> /xf0/x94/x8c/xa8 EGYPTIAN HIEROGLYPH-14328
+<U00014329> /xf0/x94/x8c/xa9 EGYPTIAN HIEROGLYPH-14329
+<U0001432A> /xf0/x94/x8c/xaa EGYPTIAN HIEROGLYPH-1432A
+<U0001432B> /xf0/x94/x8c/xab EGYPTIAN HIEROGLYPH-1432B
+<U0001432C> /xf0/x94/x8c/xac EGYPTIAN HIEROGLYPH-1432C
+<U0001432D> /xf0/x94/x8c/xad EGYPTIAN HIEROGLYPH-1432D
+<U0001432E> /xf0/x94/x8c/xae EGYPTIAN HIEROGLYPH-1432E
+<U0001432F> /xf0/x94/x8c/xaf EGYPTIAN HIEROGLYPH-1432F
+<U00014330> /xf0/x94/x8c/xb0 EGYPTIAN HIEROGLYPH-14330
+<U00014331> /xf0/x94/x8c/xb1 EGYPTIAN HIEROGLYPH-14331
+<U00014332> /xf0/x94/x8c/xb2 EGYPTIAN HIEROGLYPH-14332
+<U00014333> /xf0/x94/x8c/xb3 EGYPTIAN HIEROGLYPH-14333
+<U00014334> /xf0/x94/x8c/xb4 EGYPTIAN HIEROGLYPH-14334
+<U00014335> /xf0/x94/x8c/xb5 EGYPTIAN HIEROGLYPH-14335
+<U00014336> /xf0/x94/x8c/xb6 EGYPTIAN HIEROGLYPH-14336
+<U00014337> /xf0/x94/x8c/xb7 EGYPTIAN HIEROGLYPH-14337
+<U00014338> /xf0/x94/x8c/xb8 EGYPTIAN HIEROGLYPH-14338
+<U00014339> /xf0/x94/x8c/xb9 EGYPTIAN HIEROGLYPH-14339
+<U0001433A> /xf0/x94/x8c/xba EGYPTIAN HIEROGLYPH-1433A
+<U0001433B> /xf0/x94/x8c/xbb EGYPTIAN HIEROGLYPH-1433B
+<U0001433C> /xf0/x94/x8c/xbc EGYPTIAN HIEROGLYPH-1433C
+<U0001433D> /xf0/x94/x8c/xbd EGYPTIAN HIEROGLYPH-1433D
+<U0001433E> /xf0/x94/x8c/xbe EGYPTIAN HIEROGLYPH-1433E
+<U0001433F> /xf0/x94/x8c/xbf EGYPTIAN HIEROGLYPH-1433F
+<U00014340> /xf0/x94/x8d/x80 EGYPTIAN HIEROGLYPH-14340
+<U00014341> /xf0/x94/x8d/x81 EGYPTIAN HIEROGLYPH-14341
+<U00014342> /xf0/x94/x8d/x82 EGYPTIAN HIEROGLYPH-14342
+<U00014343> /xf0/x94/x8d/x83 EGYPTIAN HIEROGLYPH-14343
+<U00014344> /xf0/x94/x8d/x84 EGYPTIAN HIEROGLYPH-14344
+<U00014345> /xf0/x94/x8d/x85 EGYPTIAN HIEROGLYPH-14345
+<U00014346> /xf0/x94/x8d/x86 EGYPTIAN HIEROGLYPH-14346
+<U00014347> /xf0/x94/x8d/x87 EGYPTIAN HIEROGLYPH-14347
+<U00014348> /xf0/x94/x8d/x88 EGYPTIAN HIEROGLYPH-14348
+<U00014349> /xf0/x94/x8d/x89 EGYPTIAN HIEROGLYPH-14349
+<U0001434A> /xf0/x94/x8d/x8a EGYPTIAN HIEROGLYPH-1434A
+<U0001434B> /xf0/x94/x8d/x8b EGYPTIAN HIEROGLYPH-1434B
+<U0001434C> /xf0/x94/x8d/x8c EGYPTIAN HIEROGLYPH-1434C
+<U0001434D> /xf0/x94/x8d/x8d EGYPTIAN HIEROGLYPH-1434D
+<U0001434E> /xf0/x94/x8d/x8e EGYPTIAN HIEROGLYPH-1434E
+<U0001434F> /xf0/x94/x8d/x8f EGYPTIAN HIEROGLYPH-1434F
+<U00014350> /xf0/x94/x8d/x90 EGYPTIAN HIEROGLYPH-14350
+<U00014351> /xf0/x94/x8d/x91 EGYPTIAN HIEROGLYPH-14351
+<U00014352> /xf0/x94/x8d/x92 EGYPTIAN HIEROGLYPH-14352
+<U00014353> /xf0/x94/x8d/x93 EGYPTIAN HIEROGLYPH-14353
+<U00014354> /xf0/x94/x8d/x94 EGYPTIAN HIEROGLYPH-14354
+<U00014355> /xf0/x94/x8d/x95 EGYPTIAN HIEROGLYPH-14355
+<U00014356> /xf0/x94/x8d/x96 EGYPTIAN HIEROGLYPH-14356
+<U00014357> /xf0/x94/x8d/x97 EGYPTIAN HIEROGLYPH-14357
+<U00014358> /xf0/x94/x8d/x98 EGYPTIAN HIEROGLYPH-14358
+<U00014359> /xf0/x94/x8d/x99 EGYPTIAN HIEROGLYPH-14359
+<U0001435A> /xf0/x94/x8d/x9a EGYPTIAN HIEROGLYPH-1435A
+<U0001435B> /xf0/x94/x8d/x9b EGYPTIAN HIEROGLYPH-1435B
+<U0001435C> /xf0/x94/x8d/x9c EGYPTIAN HIEROGLYPH-1435C
+<U0001435D> /xf0/x94/x8d/x9d EGYPTIAN HIEROGLYPH-1435D
+<U0001435E> /xf0/x94/x8d/x9e EGYPTIAN HIEROGLYPH-1435E
+<U0001435F> /xf0/x94/x8d/x9f EGYPTIAN HIEROGLYPH-1435F
+<U00014360> /xf0/x94/x8d/xa0 EGYPTIAN HIEROGLYPH-14360
+<U00014361> /xf0/x94/x8d/xa1 EGYPTIAN HIEROGLYPH-14361
+<U00014362> /xf0/x94/x8d/xa2 EGYPTIAN HIEROGLYPH-14362
+<U00014363> /xf0/x94/x8d/xa3 EGYPTIAN HIEROGLYPH-14363
+<U00014364> /xf0/x94/x8d/xa4 EGYPTIAN HIEROGLYPH-14364
+<U00014365> /xf0/x94/x8d/xa5 EGYPTIAN HIEROGLYPH-14365
+<U00014366> /xf0/x94/x8d/xa6 EGYPTIAN HIEROGLYPH-14366
+<U00014367> /xf0/x94/x8d/xa7 EGYPTIAN HIEROGLYPH-14367
+<U00014368> /xf0/x94/x8d/xa8 EGYPTIAN HIEROGLYPH-14368
+<U00014369> /xf0/x94/x8d/xa9 EGYPTIAN HIEROGLYPH-14369
+<U0001436A> /xf0/x94/x8d/xaa EGYPTIAN HIEROGLYPH-1436A
+<U0001436B> /xf0/x94/x8d/xab EGYPTIAN HIEROGLYPH-1436B
+<U0001436C> /xf0/x94/x8d/xac EGYPTIAN HIEROGLYPH-1436C
+<U0001436D> /xf0/x94/x8d/xad EGYPTIAN HIEROGLYPH-1436D
+<U0001436E> /xf0/x94/x8d/xae EGYPTIAN HIEROGLYPH-1436E
+<U0001436F> /xf0/x94/x8d/xaf EGYPTIAN HIEROGLYPH-1436F
+<U00014370> /xf0/x94/x8d/xb0 EGYPTIAN HIEROGLYPH-14370
+<U00014371> /xf0/x94/x8d/xb1 EGYPTIAN HIEROGLYPH-14371
+<U00014372> /xf0/x94/x8d/xb2 EGYPTIAN HIEROGLYPH-14372
+<U00014373> /xf0/x94/x8d/xb3 EGYPTIAN HIEROGLYPH-14373
+<U00014374> /xf0/x94/x8d/xb4 EGYPTIAN HIEROGLYPH-14374
+<U00014375> /xf0/x94/x8d/xb5 EGYPTIAN HIEROGLYPH-14375
+<U00014376> /xf0/x94/x8d/xb6 EGYPTIAN HIEROGLYPH-14376
+<U00014377> /xf0/x94/x8d/xb7 EGYPTIAN HIEROGLYPH-14377
+<U00014378> /xf0/x94/x8d/xb8 EGYPTIAN HIEROGLYPH-14378
+<U00014379> /xf0/x94/x8d/xb9 EGYPTIAN HIEROGLYPH-14379
+<U0001437A> /xf0/x94/x8d/xba EGYPTIAN HIEROGLYPH-1437A
+<U0001437B> /xf0/x94/x8d/xbb EGYPTIAN HIEROGLYPH-1437B
+<U0001437C> /xf0/x94/x8d/xbc EGYPTIAN HIEROGLYPH-1437C
+<U0001437D> /xf0/x94/x8d/xbd EGYPTIAN HIEROGLYPH-1437D
+<U0001437E> /xf0/x94/x8d/xbe EGYPTIAN HIEROGLYPH-1437E
+<U0001437F> /xf0/x94/x8d/xbf EGYPTIAN HIEROGLYPH-1437F
+<U00014380> /xf0/x94/x8e/x80 EGYPTIAN HIEROGLYPH-14380
+<U00014381> /xf0/x94/x8e/x81 EGYPTIAN HIEROGLYPH-14381
+<U00014382> /xf0/x94/x8e/x82 EGYPTIAN HIEROGLYPH-14382
+<U00014383> /xf0/x94/x8e/x83 EGYPTIAN HIEROGLYPH-14383
+<U00014384> /xf0/x94/x8e/x84 EGYPTIAN HIEROGLYPH-14384
+<U00014385> /xf0/x94/x8e/x85 EGYPTIAN HIEROGLYPH-14385
+<U00014386> /xf0/x94/x8e/x86 EGYPTIAN HIEROGLYPH-14386
+<U00014387> /xf0/x94/x8e/x87 EGYPTIAN HIEROGLYPH-14387
+<U00014388> /xf0/x94/x8e/x88 EGYPTIAN HIEROGLYPH-14388
+<U00014389> /xf0/x94/x8e/x89 EGYPTIAN HIEROGLYPH-14389
+<U0001438A> /xf0/x94/x8e/x8a EGYPTIAN HIEROGLYPH-1438A
+<U0001438B> /xf0/x94/x8e/x8b EGYPTIAN HIEROGLYPH-1438B
+<U0001438C> /xf0/x94/x8e/x8c EGYPTIAN HIEROGLYPH-1438C
+<U0001438D> /xf0/x94/x8e/x8d EGYPTIAN HIEROGLYPH-1438D
+<U0001438E> /xf0/x94/x8e/x8e EGYPTIAN HIEROGLYPH-1438E
+<U0001438F> /xf0/x94/x8e/x8f EGYPTIAN HIEROGLYPH-1438F
+<U00014390> /xf0/x94/x8e/x90 EGYPTIAN HIEROGLYPH-14390
+<U00014391> /xf0/x94/x8e/x91 EGYPTIAN HIEROGLYPH-14391
+<U00014392> /xf0/x94/x8e/x92 EGYPTIAN HIEROGLYPH-14392
+<U00014393> /xf0/x94/x8e/x93 EGYPTIAN HIEROGLYPH-14393
+<U00014394> /xf0/x94/x8e/x94 EGYPTIAN HIEROGLYPH-14394
+<U00014395> /xf0/x94/x8e/x95 EGYPTIAN HIEROGLYPH-14395
+<U00014396> /xf0/x94/x8e/x96 EGYPTIAN HIEROGLYPH-14396
+<U00014397> /xf0/x94/x8e/x97 EGYPTIAN HIEROGLYPH-14397
+<U00014398> /xf0/x94/x8e/x98 EGYPTIAN HIEROGLYPH-14398
+<U00014399> /xf0/x94/x8e/x99 EGYPTIAN HIEROGLYPH-14399
+<U0001439A> /xf0/x94/x8e/x9a EGYPTIAN HIEROGLYPH-1439A
+<U0001439B> /xf0/x94/x8e/x9b EGYPTIAN HIEROGLYPH-1439B
+<U0001439C> /xf0/x94/x8e/x9c EGYPTIAN HIEROGLYPH-1439C
+<U0001439D> /xf0/x94/x8e/x9d EGYPTIAN HIEROGLYPH-1439D
+<U0001439E> /xf0/x94/x8e/x9e EGYPTIAN HIEROGLYPH-1439E
+<U0001439F> /xf0/x94/x8e/x9f EGYPTIAN HIEROGLYPH-1439F
+<U000143A0> /xf0/x94/x8e/xa0 EGYPTIAN HIEROGLYPH-143A0
+<U000143A1> /xf0/x94/x8e/xa1 EGYPTIAN HIEROGLYPH-143A1
+<U000143A2> /xf0/x94/x8e/xa2 EGYPTIAN HIEROGLYPH-143A2
+<U000143A3> /xf0/x94/x8e/xa3 EGYPTIAN HIEROGLYPH-143A3
+<U000143A4> /xf0/x94/x8e/xa4 EGYPTIAN HIEROGLYPH-143A4
+<U000143A5> /xf0/x94/x8e/xa5 EGYPTIAN HIEROGLYPH-143A5
+<U000143A6> /xf0/x94/x8e/xa6 EGYPTIAN HIEROGLYPH-143A6
+<U000143A7> /xf0/x94/x8e/xa7 EGYPTIAN HIEROGLYPH-143A7
+<U000143A8> /xf0/x94/x8e/xa8 EGYPTIAN HIEROGLYPH-143A8
+<U000143A9> /xf0/x94/x8e/xa9 EGYPTIAN HIEROGLYPH-143A9
+<U000143AA> /xf0/x94/x8e/xaa EGYPTIAN HIEROGLYPH-143AA
+<U000143AB> /xf0/x94/x8e/xab EGYPTIAN HIEROGLYPH-143AB
+<U000143AC> /xf0/x94/x8e/xac EGYPTIAN HIEROGLYPH-143AC
+<U000143AD> /xf0/x94/x8e/xad EGYPTIAN HIEROGLYPH-143AD
+<U000143AE> /xf0/x94/x8e/xae EGYPTIAN HIEROGLYPH-143AE
+<U000143AF> /xf0/x94/x8e/xaf EGYPTIAN HIEROGLYPH-143AF
+<U000143B0> /xf0/x94/x8e/xb0 EGYPTIAN HIEROGLYPH-143B0
+<U000143B1> /xf0/x94/x8e/xb1 EGYPTIAN HIEROGLYPH-143B1
+<U000143B2> /xf0/x94/x8e/xb2 EGYPTIAN HIEROGLYPH-143B2
+<U000143B3> /xf0/x94/x8e/xb3 EGYPTIAN HIEROGLYPH-143B3
+<U000143B4> /xf0/x94/x8e/xb4 EGYPTIAN HIEROGLYPH-143B4
+<U000143B5> /xf0/x94/x8e/xb5 EGYPTIAN HIEROGLYPH-143B5
+<U000143B6> /xf0/x94/x8e/xb6 EGYPTIAN HIEROGLYPH-143B6
+<U000143B7> /xf0/x94/x8e/xb7 EGYPTIAN HIEROGLYPH-143B7
+<U000143B8> /xf0/x94/x8e/xb8 EGYPTIAN HIEROGLYPH-143B8
+<U000143B9> /xf0/x94/x8e/xb9 EGYPTIAN HIEROGLYPH-143B9
+<U000143BA> /xf0/x94/x8e/xba EGYPTIAN HIEROGLYPH-143BA
+<U000143BB> /xf0/x94/x8e/xbb EGYPTIAN HIEROGLYPH-143BB
+<U000143BC> /xf0/x94/x8e/xbc EGYPTIAN HIEROGLYPH-143BC
+<U000143BD> /xf0/x94/x8e/xbd EGYPTIAN HIEROGLYPH-143BD
+<U000143BE> /xf0/x94/x8e/xbe EGYPTIAN HIEROGLYPH-143BE
+<U000143BF> /xf0/x94/x8e/xbf EGYPTIAN HIEROGLYPH-143BF
+<U000143C0> /xf0/x94/x8f/x80 EGYPTIAN HIEROGLYPH-143C0
+<U000143C1> /xf0/x94/x8f/x81 EGYPTIAN HIEROGLYPH-143C1
+<U000143C2> /xf0/x94/x8f/x82 EGYPTIAN HIEROGLYPH-143C2
+<U000143C3> /xf0/x94/x8f/x83 EGYPTIAN HIEROGLYPH-143C3
+<U000143C4> /xf0/x94/x8f/x84 EGYPTIAN HIEROGLYPH-143C4
+<U000143C5> /xf0/x94/x8f/x85 EGYPTIAN HIEROGLYPH-143C5
+<U000143C6> /xf0/x94/x8f/x86 EGYPTIAN HIEROGLYPH-143C6
+<U000143C7> /xf0/x94/x8f/x87 EGYPTIAN HIEROGLYPH-143C7
+<U000143C8> /xf0/x94/x8f/x88 EGYPTIAN HIEROGLYPH-143C8
+<U000143C9> /xf0/x94/x8f/x89 EGYPTIAN HIEROGLYPH-143C9
+<U000143CA> /xf0/x94/x8f/x8a EGYPTIAN HIEROGLYPH-143CA
+<U000143CB> /xf0/x94/x8f/x8b EGYPTIAN HIEROGLYPH-143CB
+<U000143CC> /xf0/x94/x8f/x8c EGYPTIAN HIEROGLYPH-143CC
+<U000143CD> /xf0/x94/x8f/x8d EGYPTIAN HIEROGLYPH-143CD
+<U000143CE> /xf0/x94/x8f/x8e EGYPTIAN HIEROGLYPH-143CE
+<U000143CF> /xf0/x94/x8f/x8f EGYPTIAN HIEROGLYPH-143CF
+<U000143D0> /xf0/x94/x8f/x90 EGYPTIAN HIEROGLYPH-143D0
+<U000143D1> /xf0/x94/x8f/x91 EGYPTIAN HIEROGLYPH-143D1
+<U000143D2> /xf0/x94/x8f/x92 EGYPTIAN HIEROGLYPH-143D2
+<U000143D3> /xf0/x94/x8f/x93 EGYPTIAN HIEROGLYPH-143D3
+<U000143D4> /xf0/x94/x8f/x94 EGYPTIAN HIEROGLYPH-143D4
+<U000143D5> /xf0/x94/x8f/x95 EGYPTIAN HIEROGLYPH-143D5
+<U000143D6> /xf0/x94/x8f/x96 EGYPTIAN HIEROGLYPH-143D6
+<U000143D7> /xf0/x94/x8f/x97 EGYPTIAN HIEROGLYPH-143D7
+<U000143D8> /xf0/x94/x8f/x98 EGYPTIAN HIEROGLYPH-143D8
+<U000143D9> /xf0/x94/x8f/x99 EGYPTIAN HIEROGLYPH-143D9
+<U000143DA> /xf0/x94/x8f/x9a EGYPTIAN HIEROGLYPH-143DA
+<U000143DB> /xf0/x94/x8f/x9b EGYPTIAN HIEROGLYPH-143DB
+<U000143DC> /xf0/x94/x8f/x9c EGYPTIAN HIEROGLYPH-143DC
+<U000143DD> /xf0/x94/x8f/x9d EGYPTIAN HIEROGLYPH-143DD
+<U000143DE> /xf0/x94/x8f/x9e EGYPTIAN HIEROGLYPH-143DE
+<U000143DF> /xf0/x94/x8f/x9f EGYPTIAN HIEROGLYPH-143DF
+<U000143E0> /xf0/x94/x8f/xa0 EGYPTIAN HIEROGLYPH-143E0
+<U000143E1> /xf0/x94/x8f/xa1 EGYPTIAN HIEROGLYPH-143E1
+<U000143E2> /xf0/x94/x8f/xa2 EGYPTIAN HIEROGLYPH-143E2
+<U000143E3> /xf0/x94/x8f/xa3 EGYPTIAN HIEROGLYPH-143E3
+<U000143E4> /xf0/x94/x8f/xa4 EGYPTIAN HIEROGLYPH-143E4
+<U000143E5> /xf0/x94/x8f/xa5 EGYPTIAN HIEROGLYPH-143E5
+<U000143E6> /xf0/x94/x8f/xa6 EGYPTIAN HIEROGLYPH-143E6
+<U000143E7> /xf0/x94/x8f/xa7 EGYPTIAN HIEROGLYPH-143E7
+<U000143E8> /xf0/x94/x8f/xa8 EGYPTIAN HIEROGLYPH-143E8
+<U000143E9> /xf0/x94/x8f/xa9 EGYPTIAN HIEROGLYPH-143E9
+<U000143EA> /xf0/x94/x8f/xaa EGYPTIAN HIEROGLYPH-143EA
+<U000143EB> /xf0/x94/x8f/xab EGYPTIAN HIEROGLYPH-143EB
+<U000143EC> /xf0/x94/x8f/xac EGYPTIAN HIEROGLYPH-143EC
+<U000143ED> /xf0/x94/x8f/xad EGYPTIAN HIEROGLYPH-143ED
+<U000143EE> /xf0/x94/x8f/xae EGYPTIAN HIEROGLYPH-143EE
+<U000143EF> /xf0/x94/x8f/xaf EGYPTIAN HIEROGLYPH-143EF
+<U000143F0> /xf0/x94/x8f/xb0 EGYPTIAN HIEROGLYPH-143F0
+<U000143F1> /xf0/x94/x8f/xb1 EGYPTIAN HIEROGLYPH-143F1
+<U000143F2> /xf0/x94/x8f/xb2 EGYPTIAN HIEROGLYPH-143F2
+<U000143F3> /xf0/x94/x8f/xb3 EGYPTIAN HIEROGLYPH-143F3
+<U000143F4> /xf0/x94/x8f/xb4 EGYPTIAN HIEROGLYPH-143F4
+<U000143F5> /xf0/x94/x8f/xb5 EGYPTIAN HIEROGLYPH-143F5
+<U000143F6> /xf0/x94/x8f/xb6 EGYPTIAN HIEROGLYPH-143F6
+<U000143F7> /xf0/x94/x8f/xb7 EGYPTIAN HIEROGLYPH-143F7
+<U000143F8> /xf0/x94/x8f/xb8 EGYPTIAN HIEROGLYPH-143F8
+<U000143F9> /xf0/x94/x8f/xb9 EGYPTIAN HIEROGLYPH-143F9
+<U000143FA> /xf0/x94/x8f/xba EGYPTIAN HIEROGLYPH-143FA
<U00014400> /xf0/x94/x90/x80 ANATOLIAN HIEROGLYPH A001
<U00014401> /xf0/x94/x90/x81 ANATOLIAN HIEROGLYPH A002
<U00014402> /xf0/x94/x90/x82 ANATOLIAN HIEROGLYPH A003
@@ -36475,6 +40757,64 @@ CHARMAP
<U00014644> /xf0/x94/x99/x84 ANATOLIAN HIEROGLYPH A528
<U00014645> /xf0/x94/x99/x85 ANATOLIAN HIEROGLYPH A529
<U00014646> /xf0/x94/x99/x86 ANATOLIAN HIEROGLYPH A530
+<U00016100> /xf0/x96/x84/x80 GURUNG KHEMA LETTER A
+<U00016101> /xf0/x96/x84/x81 GURUNG KHEMA LETTER KA
+<U00016102> /xf0/x96/x84/x82 GURUNG KHEMA LETTER KHA
+<U00016103> /xf0/x96/x84/x83 GURUNG KHEMA LETTER GA
+<U00016104> /xf0/x96/x84/x84 GURUNG KHEMA LETTER GHA
+<U00016105> /xf0/x96/x84/x85 GURUNG KHEMA LETTER NGA
+<U00016106> /xf0/x96/x84/x86 GURUNG KHEMA LETTER CA
+<U00016107> /xf0/x96/x84/x87 GURUNG KHEMA LETTER CHA
+<U00016108> /xf0/x96/x84/x88 GURUNG KHEMA LETTER JA
+<U00016109> /xf0/x96/x84/x89 GURUNG KHEMA LETTER JHA
+<U0001610A> /xf0/x96/x84/x8a GURUNG KHEMA LETTER HA
+<U0001610B> /xf0/x96/x84/x8b GURUNG KHEMA LETTER TTA
+<U0001610C> /xf0/x96/x84/x8c GURUNG KHEMA LETTER TTHA
+<U0001610D> /xf0/x96/x84/x8d GURUNG KHEMA LETTER DDA
+<U0001610E> /xf0/x96/x84/x8e GURUNG KHEMA LETTER DDHA
+<U0001610F> /xf0/x96/x84/x8f GURUNG KHEMA LETTER VA
+<U00016110> /xf0/x96/x84/x90 GURUNG KHEMA LETTER TA
+<U00016111> /xf0/x96/x84/x91 GURUNG KHEMA LETTER THA
+<U00016112> /xf0/x96/x84/x92 GURUNG KHEMA LETTER DA
+<U00016113> /xf0/x96/x84/x93 GURUNG KHEMA LETTER DHA
+<U00016114> /xf0/x96/x84/x94 GURUNG KHEMA LETTER NA
+<U00016115> /xf0/x96/x84/x95 GURUNG KHEMA LETTER PA
+<U00016116> /xf0/x96/x84/x96 GURUNG KHEMA LETTER PHA
+<U00016117> /xf0/x96/x84/x97 GURUNG KHEMA LETTER BA
+<U00016118> /xf0/x96/x84/x98 GURUNG KHEMA LETTER BHA
+<U00016119> /xf0/x96/x84/x99 GURUNG KHEMA LETTER MA
+<U0001611A> /xf0/x96/x84/x9a GURUNG KHEMA LETTER YA
+<U0001611B> /xf0/x96/x84/x9b GURUNG KHEMA LETTER RA
+<U0001611C> /xf0/x96/x84/x9c GURUNG KHEMA LETTER LA
+<U0001611D> /xf0/x96/x84/x9d GURUNG KHEMA LETTER SA
+<U0001611E> /xf0/x96/x84/x9e GURUNG KHEMA VOWEL SIGN AA
+<U0001611F> /xf0/x96/x84/x9f GURUNG KHEMA VOWEL SIGN I
+<U00016120> /xf0/x96/x84/xa0 GURUNG KHEMA VOWEL SIGN II
+<U00016121> /xf0/x96/x84/xa1 GURUNG KHEMA VOWEL SIGN U
+<U00016122> /xf0/x96/x84/xa2 GURUNG KHEMA VOWEL SIGN UU
+<U00016123> /xf0/x96/x84/xa3 GURUNG KHEMA VOWEL SIGN E
+<U00016124> /xf0/x96/x84/xa4 GURUNG KHEMA VOWEL SIGN EE
+<U00016125> /xf0/x96/x84/xa5 GURUNG KHEMA VOWEL SIGN AI
+<U00016126> /xf0/x96/x84/xa6 GURUNG KHEMA VOWEL SIGN O
+<U00016127> /xf0/x96/x84/xa7 GURUNG KHEMA VOWEL SIGN OO
+<U00016128> /xf0/x96/x84/xa8 GURUNG KHEMA VOWEL SIGN AU
+<U00016129> /xf0/x96/x84/xa9 GURUNG KHEMA VOWEL LENGTH MARK
+<U0001612A> /xf0/x96/x84/xaa GURUNG KHEMA CONSONANT SIGN MEDIAL YA
+<U0001612B> /xf0/x96/x84/xab GURUNG KHEMA CONSONANT SIGN MEDIAL VA
+<U0001612C> /xf0/x96/x84/xac GURUNG KHEMA CONSONANT SIGN MEDIAL HA
+<U0001612D> /xf0/x96/x84/xad GURUNG KHEMA SIGN ANUSVARA
+<U0001612E> /xf0/x96/x84/xae GURUNG KHEMA CONSONANT SIGN MEDIAL RA
+<U0001612F> /xf0/x96/x84/xaf GURUNG KHEMA SIGN THOLHOMA
+<U00016130> /xf0/x96/x84/xb0 GURUNG KHEMA DIGIT ZERO
+<U00016131> /xf0/x96/x84/xb1 GURUNG KHEMA DIGIT ONE
+<U00016132> /xf0/x96/x84/xb2 GURUNG KHEMA DIGIT TWO
+<U00016133> /xf0/x96/x84/xb3 GURUNG KHEMA DIGIT THREE
+<U00016134> /xf0/x96/x84/xb4 GURUNG KHEMA DIGIT FOUR
+<U00016135> /xf0/x96/x84/xb5 GURUNG KHEMA DIGIT FIVE
+<U00016136> /xf0/x96/x84/xb6 GURUNG KHEMA DIGIT SIX
+<U00016137> /xf0/x96/x84/xb7 GURUNG KHEMA DIGIT SEVEN
+<U00016138> /xf0/x96/x84/xb8 GURUNG KHEMA DIGIT EIGHT
+<U00016139> /xf0/x96/x84/xb9 GURUNG KHEMA DIGIT NINE
<U00016800> /xf0/x96/xa0/x80 BAMUM LETTER PHASE-A NGKUE MFON
<U00016801> /xf0/x96/xa0/x81 BAMUM LETTER PHASE-A GBIEE FON
<U00016802> /xf0/x96/xa0/x82 BAMUM LETTER PHASE-A PON MFON PIPAEMGBIEE
@@ -37339,6 +41679,64 @@ CHARMAP
<U00016B8D> /xf0/x96/xae/x8d PAHAWH HMONG CLAN SIGN TSWB
<U00016B8E> /xf0/x96/xae/x8e PAHAWH HMONG CLAN SIGN KWM
<U00016B8F> /xf0/x96/xae/x8f PAHAWH HMONG CLAN SIGN VWJ
+<U00016D40> /xf0/x96/xb5/x80 KIRAT RAI SIGN ANUSVARA
+<U00016D41> /xf0/x96/xb5/x81 KIRAT RAI SIGN TONPI
+<U00016D42> /xf0/x96/xb5/x82 KIRAT RAI SIGN VISARGA
+<U00016D43> /xf0/x96/xb5/x83 KIRAT RAI LETTER A
+<U00016D44> /xf0/x96/xb5/x84 KIRAT RAI LETTER KA
+<U00016D45> /xf0/x96/xb5/x85 KIRAT RAI LETTER KHA
+<U00016D46> /xf0/x96/xb5/x86 KIRAT RAI LETTER GA
+<U00016D47> /xf0/x96/xb5/x87 KIRAT RAI LETTER GHA
+<U00016D48> /xf0/x96/xb5/x88 KIRAT RAI LETTER NGA
+<U00016D49> /xf0/x96/xb5/x89 KIRAT RAI LETTER CA
+<U00016D4A> /xf0/x96/xb5/x8a KIRAT RAI LETTER CHA
+<U00016D4B> /xf0/x96/xb5/x8b KIRAT RAI LETTER JA
+<U00016D4C> /xf0/x96/xb5/x8c KIRAT RAI LETTER JHA
+<U00016D4D> /xf0/x96/xb5/x8d KIRAT RAI LETTER NYA
+<U00016D4E> /xf0/x96/xb5/x8e KIRAT RAI LETTER TTA
+<U00016D4F> /xf0/x96/xb5/x8f KIRAT RAI LETTER TTHA
+<U00016D50> /xf0/x96/xb5/x90 KIRAT RAI LETTER DDA
+<U00016D51> /xf0/x96/xb5/x91 KIRAT RAI LETTER DDHA
+<U00016D52> /xf0/x96/xb5/x92 KIRAT RAI LETTER TA
+<U00016D53> /xf0/x96/xb5/x93 KIRAT RAI LETTER THA
+<U00016D54> /xf0/x96/xb5/x94 KIRAT RAI LETTER DA
+<U00016D55> /xf0/x96/xb5/x95 KIRAT RAI LETTER DHA
+<U00016D56> /xf0/x96/xb5/x96 KIRAT RAI LETTER NA
+<U00016D57> /xf0/x96/xb5/x97 KIRAT RAI LETTER PA
+<U00016D58> /xf0/x96/xb5/x98 KIRAT RAI LETTER PHA
+<U00016D59> /xf0/x96/xb5/x99 KIRAT RAI LETTER BA
+<U00016D5A> /xf0/x96/xb5/x9a KIRAT RAI LETTER BHA
+<U00016D5B> /xf0/x96/xb5/x9b KIRAT RAI LETTER MA
+<U00016D5C> /xf0/x96/xb5/x9c KIRAT RAI LETTER YA
+<U00016D5D> /xf0/x96/xb5/x9d KIRAT RAI LETTER RA
+<U00016D5E> /xf0/x96/xb5/x9e KIRAT RAI LETTER LA
+<U00016D5F> /xf0/x96/xb5/x9f KIRAT RAI LETTER VA
+<U00016D60> /xf0/x96/xb5/xa0 KIRAT RAI LETTER SA
+<U00016D61> /xf0/x96/xb5/xa1 KIRAT RAI LETTER SHA
+<U00016D62> /xf0/x96/xb5/xa2 KIRAT RAI LETTER HA
+<U00016D63> /xf0/x96/xb5/xa3 KIRAT RAI VOWEL SIGN AA
+<U00016D64> /xf0/x96/xb5/xa4 KIRAT RAI VOWEL SIGN I
+<U00016D65> /xf0/x96/xb5/xa5 KIRAT RAI VOWEL SIGN U
+<U00016D66> /xf0/x96/xb5/xa6 KIRAT RAI VOWEL SIGN UE
+<U00016D67> /xf0/x96/xb5/xa7 KIRAT RAI VOWEL SIGN E
+<U00016D68> /xf0/x96/xb5/xa8 KIRAT RAI VOWEL SIGN AI
+<U00016D69> /xf0/x96/xb5/xa9 KIRAT RAI VOWEL SIGN O
+<U00016D6A> /xf0/x96/xb5/xaa KIRAT RAI VOWEL SIGN AU
+<U00016D6B> /xf0/x96/xb5/xab KIRAT RAI SIGN VIRAMA
+<U00016D6C> /xf0/x96/xb5/xac KIRAT RAI SIGN SAAT
+<U00016D6D> /xf0/x96/xb5/xad KIRAT RAI SIGN YUPI
+<U00016D6E> /xf0/x96/xb5/xae KIRAT RAI DANDA
+<U00016D6F> /xf0/x96/xb5/xaf KIRAT RAI DOUBLE DANDA
+<U00016D70> /xf0/x96/xb5/xb0 KIRAT RAI DIGIT ZERO
+<U00016D71> /xf0/x96/xb5/xb1 KIRAT RAI DIGIT ONE
+<U00016D72> /xf0/x96/xb5/xb2 KIRAT RAI DIGIT TWO
+<U00016D73> /xf0/x96/xb5/xb3 KIRAT RAI DIGIT THREE
+<U00016D74> /xf0/x96/xb5/xb4 KIRAT RAI DIGIT FOUR
+<U00016D75> /xf0/x96/xb5/xb5 KIRAT RAI DIGIT FIVE
+<U00016D76> /xf0/x96/xb5/xb6 KIRAT RAI DIGIT SIX
+<U00016D77> /xf0/x96/xb5/xb7 KIRAT RAI DIGIT SEVEN
+<U00016D78> /xf0/x96/xb5/xb8 KIRAT RAI DIGIT EIGHT
+<U00016D79> /xf0/x96/xb5/xb9 KIRAT RAI DIGIT NINE
<U00016E40> /xf0/x96/xb9/x80 MEDEFAIDRIN CAPITAL LETTER M
<U00016E41> /xf0/x96/xb9/x81 MEDEFAIDRIN CAPITAL LETTER S
<U00016E42> /xf0/x96/xb9/x82 MEDEFAIDRIN CAPITAL LETTER V
@@ -38920,6 +43318,7 @@ CHARMAP
<U00018CD3> /xf0/x98/xb3/x93 KHITAN SMALL SCRIPT CHARACTER-18CD3
<U00018CD4> /xf0/x98/xb3/x94 KHITAN SMALL SCRIPT CHARACTER-18CD4
<U00018CD5> /xf0/x98/xb3/x95 KHITAN SMALL SCRIPT CHARACTER-18CD5
+<U00018CFF> /xf0/x98/xb3/xbf KHITAN SMALL SCRIPT CHARACTER-18CFF
<U00018D00>..<U00018D08> /xf0/x98/xb4/x80 <Tangut Ideograph Supplement>
<U0001AFF0> /xf0/x9a/xbf/xb0 KATAKANA LETTER MINNAN TONE-2
<U0001AFF1> /xf0/x9a/xbf/xb1 KATAKANA LETTER MINNAN TONE-3
@@ -39777,6 +44176,692 @@ CHARMAP
<U0001BCA1> /xf0/x9b/xb2/xa1 SHORTHAND FORMAT CONTINUING OVERLAP
<U0001BCA2> /xf0/x9b/xb2/xa2 SHORTHAND FORMAT DOWN STEP
<U0001BCA3> /xf0/x9b/xb2/xa3 SHORTHAND FORMAT UP STEP
+<U0001CC00> /xf0/x9c/xb0/x80 UP-POINTING GO-KART
+<U0001CC01> /xf0/x9c/xb0/x81 RIGHT-POINTING GO-KART
+<U0001CC02> /xf0/x9c/xb0/x82 LEFT-POINTING STICK FIGURE
+<U0001CC03> /xf0/x9c/xb0/x83 RIGHT-POINTING STICK FIGURE
+<U0001CC04> /xf0/x9c/xb0/x84 DOWN-POINTING STICK FIGURE
+<U0001CC05> /xf0/x9c/xb0/x85 LOWER HORIZONTAL RULER SEGMENT
+<U0001CC06> /xf0/x9c/xb0/x86 RIGHT VERTICAL RULER SEGMENT
+<U0001CC07> /xf0/x9c/xb0/x87 LOWER RIGHT RULER SEGMENT
+<U0001CC08> /xf0/x9c/xb0/x88 ANTENNA
+<U0001CC09> /xf0/x9c/xb0/x89 HORIZONTAL RESISTOR SEGMENT
+<U0001CC0A> /xf0/x9c/xb0/x8a VERTICAL RESISTOR SEGMENT
+<U0001CC0B> /xf0/x9c/xb0/x8b LEFT THIRD INDUCTOR
+<U0001CC0C> /xf0/x9c/xb0/x8c MIDDLE THIRD INDUCTOR
+<U0001CC0D> /xf0/x9c/xb0/x8d RIGHT THIRD INDUCTOR
+<U0001CC0E> /xf0/x9c/xb0/x8e LEFT-POINTING DIODE
+<U0001CC0F> /xf0/x9c/xb0/x8f RIGHT-POINTING DIODE
+<U0001CC10> /xf0/x9c/xb0/x90 NPN TRANSISTOR
+<U0001CC11> /xf0/x9c/xb0/x91 PNP TRANSISTOR
+<U0001CC12> /xf0/x9c/xb0/x92 RECEPTACLE
+<U0001CC13> /xf0/x9c/xb0/x93 HORIZONTAL CAPACITOR
+<U0001CC14> /xf0/x9c/xb0/x94 VERTICAL CAPACITOR
+<U0001CC15> /xf0/x9c/xb0/x95 LOGIC GATE OR
+<U0001CC16> /xf0/x9c/xb0/x96 LOGIC GATE AND
+<U0001CC17> /xf0/x9c/xb0/x97 LOGIC GATE INVERTED INPUTS
+<U0001CC18> /xf0/x9c/xb0/x98 LOGIC GATE INVERTED OUTPUT
+<U0001CC19> /xf0/x9c/xb0/x99 LOGIC GATE BUFFER
+<U0001CC1A> /xf0/x9c/xb0/x9a LOGIC GATE BUFFER WITH INVERTED INPUT
+<U0001CC1B> /xf0/x9c/xb0/x9b BOX DRAWINGS LIGHT HORIZONTAL AND UPPER RIGHT
+<U0001CC1C> /xf0/x9c/xb0/x9c BOX DRAWINGS LIGHT HORIZONTAL AND LOWER RIGHT
+<U0001CC1D> /xf0/x9c/xb0/x9d BOX DRAWINGS LIGHT TOP AND UPPER LEFT
+<U0001CC1E> /xf0/x9c/xb0/x9e BOX DRAWINGS LIGHT BOTTOM AND LOWER LEFT
+<U0001CC1F> /xf0/x9c/xb0/x9f BOX DRAWINGS DOUBLE DIAGONAL UPPER RIGHT TO LOWER LEFT
+<U0001CC20> /xf0/x9c/xb0/xa0 BOX DRAWINGS DOUBLE DIAGONAL UPPER LEFT TO LOWER RIGHT
+<U0001CC21> /xf0/x9c/xb0/xa1 SEPARATED BLOCK QUADRANT-1
+<U0001CC22> /xf0/x9c/xb0/xa2 SEPARATED BLOCK QUADRANT-2
+<U0001CC23> /xf0/x9c/xb0/xa3 SEPARATED BLOCK QUADRANT-12
+<U0001CC24> /xf0/x9c/xb0/xa4 SEPARATED BLOCK QUADRANT-3
+<U0001CC25> /xf0/x9c/xb0/xa5 SEPARATED BLOCK QUADRANT-13
+<U0001CC26> /xf0/x9c/xb0/xa6 SEPARATED BLOCK QUADRANT-23
+<U0001CC27> /xf0/x9c/xb0/xa7 SEPARATED BLOCK QUADRANT-123
+<U0001CC28> /xf0/x9c/xb0/xa8 SEPARATED BLOCK QUADRANT-4
+<U0001CC29> /xf0/x9c/xb0/xa9 SEPARATED BLOCK QUADRANT-14
+<U0001CC2A> /xf0/x9c/xb0/xaa SEPARATED BLOCK QUADRANT-24
+<U0001CC2B> /xf0/x9c/xb0/xab SEPARATED BLOCK QUADRANT-124
+<U0001CC2C> /xf0/x9c/xb0/xac SEPARATED BLOCK QUADRANT-34
+<U0001CC2D> /xf0/x9c/xb0/xad SEPARATED BLOCK QUADRANT-134
+<U0001CC2E> /xf0/x9c/xb0/xae SEPARATED BLOCK QUADRANT-234
+<U0001CC2F> /xf0/x9c/xb0/xaf SEPARATED BLOCK QUADRANT-1234
+<U0001CC30> /xf0/x9c/xb0/xb0 UPPER LEFT TWELFTH CIRCLE
+<U0001CC31> /xf0/x9c/xb0/xb1 UPPER CENTRE LEFT TWELFTH CIRCLE
+<U0001CC32> /xf0/x9c/xb0/xb2 UPPER CENTRE RIGHT TWELFTH CIRCLE
+<U0001CC33> /xf0/x9c/xb0/xb3 UPPER RIGHT TWELFTH CIRCLE
+<U0001CC34> /xf0/x9c/xb0/xb4 UPPER MIDDLE LEFT TWELFTH CIRCLE
+<U0001CC35> /xf0/x9c/xb0/xb5 UPPER LEFT QUARTER CIRCLE
+<U0001CC36> /xf0/x9c/xb0/xb6 UPPER RIGHT QUARTER CIRCLE
+<U0001CC37> /xf0/x9c/xb0/xb7 UPPER MIDDLE RIGHT TWELFTH CIRCLE
+<U0001CC38> /xf0/x9c/xb0/xb8 LOWER MIDDLE LEFT TWELFTH CIRCLE
+<U0001CC39> /xf0/x9c/xb0/xb9 LOWER LEFT QUARTER CIRCLE
+<U0001CC3A> /xf0/x9c/xb0/xba LOWER RIGHT QUARTER CIRCLE
+<U0001CC3B> /xf0/x9c/xb0/xbb LOWER MIDDLE RIGHT TWELFTH CIRCLE
+<U0001CC3C> /xf0/x9c/xb0/xbc LOWER LEFT TWELFTH CIRCLE
+<U0001CC3D> /xf0/x9c/xb0/xbd LOWER CENTRE LEFT TWELFTH CIRCLE
+<U0001CC3E> /xf0/x9c/xb0/xbe LOWER CENTRE RIGHT TWELFTH CIRCLE
+<U0001CC3F> /xf0/x9c/xb0/xbf LOWER RIGHT TWELFTH CIRCLE
+<U0001CC40> /xf0/x9c/xb1/x80 SPARSE HORIZONTAL FILL
+<U0001CC41> /xf0/x9c/xb1/x81 SPARSE VERTICAL FILL
+<U0001CC42> /xf0/x9c/xb1/x82 ORTHOGONAL CROSSHATCH FILL
+<U0001CC43> /xf0/x9c/xb1/x83 DIAGONAL CROSSHATCH FILL
+<U0001CC44> /xf0/x9c/xb1/x84 DENSE VERTICAL FILL
+<U0001CC45> /xf0/x9c/xb1/x85 DENSE HORIZONTAL FILL
+<U0001CC46> /xf0/x9c/xb1/x86 SPECKLE FILL FRAME-1
+<U0001CC47> /xf0/x9c/xb1/x87 SPECKLE FILL FRAME-2
+<U0001CC48> /xf0/x9c/xb1/x88 LEFT-FACING BASSINET
+<U0001CC49> /xf0/x9c/xb1/x89 RIGHT-FACING BASSINET
+<U0001CC4A> /xf0/x9c/xb1/x8a FLYING SAUCER WITH BEAMS
+<U0001CC4B> /xf0/x9c/xb1/x8b FLYING SAUCER WITHOUT BEAMS
+<U0001CC4C> /xf0/x9c/xb1/x8c ALIEN MONSTER OPEN JAWS
+<U0001CC4D> /xf0/x9c/xb1/x8d ALIEN MONSTER CLOSED JAWS
+<U0001CC4E> /xf0/x9c/xb1/x8e ALIEN SQUID OPEN TENTACLES
+<U0001CC4F> /xf0/x9c/xb1/x8f ALIEN SQUID CLOSED TENTACLES
+<U0001CC50> /xf0/x9c/xb1/x90 ALIEN CRAB STEPPING RIGHT
+<U0001CC51> /xf0/x9c/xb1/x91 ALIEN CRAB STEPPING LEFT
+<U0001CC52> /xf0/x9c/xb1/x92 ALIEN SPIDER CROUCHING
+<U0001CC53> /xf0/x9c/xb1/x93 ALIEN SPIDER SPREAD
+<U0001CC54> /xf0/x9c/xb1/x94 ALIEN MONSTER STEP-1
+<U0001CC55> /xf0/x9c/xb1/x95 ALIEN MONSTER STEP-2
+<U0001CC56> /xf0/x9c/xb1/x96 LEFT-POINTING ROCKET SHIP
+<U0001CC57> /xf0/x9c/xb1/x97 UP-POINTING ROCKET SHIP
+<U0001CC58> /xf0/x9c/xb1/x98 RIGHT-POINTING ROCKET SHIP
+<U0001CC59> /xf0/x9c/xb1/x99 DOWN-POINTING ROCKET SHIP
+<U0001CC5A> /xf0/x9c/xb1/x9a TOP HALF LEFT-FACING ROBOT
+<U0001CC5B> /xf0/x9c/xb1/x9b TOP HALF FORWARD-FACING ROBOT
+<U0001CC5C> /xf0/x9c/xb1/x9c TOP HALF RIGHT-FACING ROBOT
+<U0001CC5D> /xf0/x9c/xb1/x9d BOTTOM HALF LEFT-FACING ROBOT
+<U0001CC5E> /xf0/x9c/xb1/x9e BOTTOM HALF FORWARD-FACING ROBOT
+<U0001CC5F> /xf0/x9c/xb1/x9f BOTTOM HALF RIGHT-FACING ROBOT
+<U0001CC60> /xf0/x9c/xb1/xa0 LEFT-POINTING ATOMIC BOMB
+<U0001CC61> /xf0/x9c/xb1/xa1 UP-POINTING ATOMIC BOMB
+<U0001CC62> /xf0/x9c/xb1/xa2 RIGHT-POINTING ATOMIC BOMB
+<U0001CC63> /xf0/x9c/xb1/xa3 DOWN-POINTING ATOMIC BOMB
+<U0001CC64> /xf0/x9c/xb1/xa4 MUSHROOM CLOUD
+<U0001CC65> /xf0/x9c/xb1/xa5 LEFT-POINTING RIFLE
+<U0001CC66> /xf0/x9c/xb1/xa6 UP-POINTING RIFLE
+<U0001CC67> /xf0/x9c/xb1/xa7 RIGHT-POINTING RIFLE
+<U0001CC68> /xf0/x9c/xb1/xa8 DOWN-POINTING RIFLE
+<U0001CC69> /xf0/x9c/xb1/xa9 EIGHT RAYS INWARD
+<U0001CC6A> /xf0/x9c/xb1/xaa EIGHT RAYS OUTWARD
+<U0001CC6B> /xf0/x9c/xb1/xab BLACK LARGE CIRCLE MINUS LEFT QUARTER SECTION
+<U0001CC6C> /xf0/x9c/xb1/xac BLACK LARGE CIRCLE MINUS UPPER QUARTER SECTION
+<U0001CC6D> /xf0/x9c/xb1/xad BLACK LARGE CIRCLE MINUS RIGHT QUARTER SECTION
+<U0001CC6E> /xf0/x9c/xb1/xae BLACK LARGE CIRCLE MINUS LOWER QUARTER SECTION
+<U0001CC6F> /xf0/x9c/xb1/xaf BLACK NEUTRAL FACE
+<U0001CC70> /xf0/x9c/xb1/xb0 LEFT-FACING SNAKE HEAD WITH OPEN MOUTH
+<U0001CC71> /xf0/x9c/xb1/xb1 UP-FACING SNAKE HEAD WITH OPEN MOUTH
+<U0001CC72> /xf0/x9c/xb1/xb2 RIGHT-FACING SNAKE HEAD WITH OPEN MOUTH
+<U0001CC73> /xf0/x9c/xb1/xb3 DOWN-FACING SNAKE HEAD WITH OPEN MOUTH
+<U0001CC74> /xf0/x9c/xb1/xb4 LEFT-FACING SNAKE HEAD WITH CLOSED MOUTH
+<U0001CC75> /xf0/x9c/xb1/xb5 UP-FACING SNAKE HEAD WITH CLOSED MOUTH
+<U0001CC76> /xf0/x9c/xb1/xb6 RIGHT-FACING SNAKE HEAD WITH CLOSED MOUTH
+<U0001CC77> /xf0/x9c/xb1/xb7 DOWN-FACING SNAKE HEAD WITH CLOSED MOUTH
+<U0001CC78> /xf0/x9c/xb1/xb8 LEFT-POINTING ENERGY WAVE
+<U0001CC79> /xf0/x9c/xb1/xb9 UP-POINTING ENERGY WAVE
+<U0001CC7A> /xf0/x9c/xb1/xba RIGHT-POINTING ENERGY WAVE
+<U0001CC7B> /xf0/x9c/xb1/xbb DOWN-POINTING ENERGY WAVE
+<U0001CC7C> /xf0/x9c/xb1/xbc SQUARE SPIRAL FROM TOP LEFT
+<U0001CC7D> /xf0/x9c/xb1/xbd SQUARE SPIRAL FROM TOP RIGHT
+<U0001CC7E> /xf0/x9c/xb1/xbe SQUARE SPIRAL FROM BOTTOM RIGHT
+<U0001CC7F> /xf0/x9c/xb1/xbf SQUARE SPIRAL FROM BOTTOM LEFT
+<U0001CC80> /xf0/x9c/xb2/x80 STRIPED LEFT-POINTING TRIANGLE
+<U0001CC81> /xf0/x9c/xb2/x81 STRIPED UP-POINTING TRIANGLE
+<U0001CC82> /xf0/x9c/xb2/x82 STRIPED RIGHT-POINTING TRIANGLE
+<U0001CC83> /xf0/x9c/xb2/x83 STRIPED DOWN-POINTING TRIANGLE
+<U0001CC84> /xf0/x9c/xb2/x84 VERTICAL LADDER
+<U0001CC85> /xf0/x9c/xb2/x85 HORIZONTAL LADDER
+<U0001CC86> /xf0/x9c/xb2/x86 WHITE LOWER LEFT POINTER
+<U0001CC87> /xf0/x9c/xb2/x87 WHITE LOWER RIGHT POINTER
+<U0001CC88> /xf0/x9c/xb2/x88 TWO RINGS ALIGNED HORIZONTALLY
+<U0001CC89> /xf0/x9c/xb2/x89 SQUARE FOUR CORNER SALTIRES
+<U0001CC8A> /xf0/x9c/xb2/x8a SQUARE FOUR CORNER DIAGONALS
+<U0001CC8B> /xf0/x9c/xb2/x8b SQUARE FOUR CORNER BLACK TRIANGLES
+<U0001CC8C> /xf0/x9c/xb2/x8c SQUARE APERTURE
+<U0001CC8D> /xf0/x9c/xb2/x8d INVERSE BLACK DIAMOND
+<U0001CC8E> /xf0/x9c/xb2/x8e LEFT AND UPPER ONE EIGHTH BLOCK CONTAINING BLACK SMALL SQUARE
+<U0001CC8F> /xf0/x9c/xb2/x8f INVERSE BLACK SMALL SQUARE
+<U0001CC90> /xf0/x9c/xb2/x90 VERTICAL LINE WITH FOUR TICK MARKS
+<U0001CC91> /xf0/x9c/xb2/x91 HORIZONTAL LINE WITH FOUR TICK MARKS
+<U0001CC92> /xf0/x9c/xb2/x92 LEFT-FACING FISH
+<U0001CC93> /xf0/x9c/xb2/x93 RIGHT-FACING FISH
+<U0001CC94> /xf0/x9c/xb2/x94 LEFT-FACING FISH WITH OPEN MOUTH
+<U0001CC95> /xf0/x9c/xb2/x95 RIGHT-FACING FISH WITH OPEN MOUTH
+<U0001CC96> /xf0/x9c/xb2/x96 FLAPPING BIRD
+<U0001CC97> /xf0/x9c/xb2/x97 LEFT-POINTING RACING CAR
+<U0001CC98> /xf0/x9c/xb2/x98 UP-POINTING RACING CAR
+<U0001CC99> /xf0/x9c/xb2/x99 RIGHT-POINTING RACING CAR
+<U0001CC9A> /xf0/x9c/xb2/x9a DOWN-POINTING RACING CAR
+<U0001CC9B> /xf0/x9c/xb2/x9b HORIZONTAL RACING CAR
+<U0001CC9C> /xf0/x9c/xb2/x9c VERTICAL RACING CAR
+<U0001CC9D> /xf0/x9c/xb2/x9d VERTICAL GO-KART
+<U0001CC9E> /xf0/x9c/xb2/x9e LEFT-POINTING TANK
+<U0001CC9F> /xf0/x9c/xb2/x9f RIGHT-POINTING TANK
+<U0001CCA0> /xf0/x9c/xb2/xa0 LEFT-POINTING ROCKET BOOSTER
+<U0001CCA1> /xf0/x9c/xb2/xa1 RIGHT-POINTING ROCKET BOOSTER
+<U0001CCA2> /xf0/x9c/xb2/xa2 LEFT-POINTING ROLLER COASTER CAR
+<U0001CCA3> /xf0/x9c/xb2/xa3 RIGHT-POINTING ROLLER COASTER CAR
+<U0001CCA4> /xf0/x9c/xb2/xa4 LEFT HALF FLYING SAUCER
+<U0001CCA5> /xf0/x9c/xb2/xa5 RIGHT HALF FLYING SAUCER
+<U0001CCA6> /xf0/x9c/xb2/xa6 UPPER LEFT QUADRANT FACE WITH OPEN EYES
+<U0001CCA7> /xf0/x9c/xb2/xa7 UPPER RIGHT QUADRANT FACE WITH OPEN EYES
+<U0001CCA8> /xf0/x9c/xb2/xa8 UPPER LEFT QUADRANT FACE WITH CLOSED EYES
+<U0001CCA9> /xf0/x9c/xb2/xa9 UPPER RIGHT QUADRANT FACE WITH CLOSED EYES
+<U0001CCAA> /xf0/x9c/xb2/xaa LOWER LEFT QUADRANT SMILING FACE
+<U0001CCAB> /xf0/x9c/xb2/xab LOWER RIGHT QUADRANT SMILING FACE
+<U0001CCAC> /xf0/x9c/xb2/xac LOWER LEFT QUADRANT NEUTRAL FACE
+<U0001CCAD> /xf0/x9c/xb2/xad LOWER RIGHT QUADRANT NEUTRAL FACE
+<U0001CCAE> /xf0/x9c/xb2/xae LOWER LEFT QUADRANT FACE WITH OPEN MOUTH
+<U0001CCAF> /xf0/x9c/xb2/xaf LOWER RIGHT QUADRANT FACE WITH OPEN MOUTH
+<U0001CCB0> /xf0/x9c/xb2/xb0 LOWER LEFT QUADRANT FROWNING FACE
+<U0001CCB1> /xf0/x9c/xb2/xb1 LOWER RIGHT QUADRANT FROWNING FACE
+<U0001CCB2> /xf0/x9c/xb2/xb2 UPPER LEFT QUADRANT TELEVISION
+<U0001CCB3> /xf0/x9c/xb2/xb3 UPPER RIGHT QUADRANT TELEVISION
+<U0001CCB4> /xf0/x9c/xb2/xb4 LOWER LEFT QUADRANT TELEVISION
+<U0001CCB5> /xf0/x9c/xb2/xb5 LOWER RIGHT QUADRANT TELEVISION
+<U0001CCB6> /xf0/x9c/xb2/xb6 UPPER LEFT QUADRANT MICROCOMPUTER
+<U0001CCB7> /xf0/x9c/xb2/xb7 UPPER RIGHT QUADRANT MICROCOMPUTER
+<U0001CCB8> /xf0/x9c/xb2/xb8 LOWER LEFT QUADRANT MICROCOMPUTER
+<U0001CCB9> /xf0/x9c/xb2/xb9 LOWER RIGHT QUADRANT MICROCOMPUTER
+<U0001CCBA> /xf0/x9c/xb2/xba UPPER LEFT QUADRANT CHESS KING
+<U0001CCBB> /xf0/x9c/xb2/xbb UPPER RIGHT QUADRANT CHESS KING
+<U0001CCBC> /xf0/x9c/xb2/xbc LOWER LEFT QUADRANT CHESS KING
+<U0001CCBD> /xf0/x9c/xb2/xbd LOWER RIGHT QUADRANT CHESS KING
+<U0001CCBE> /xf0/x9c/xb2/xbe UPPER LEFT QUADRANT CHESS QUEEN
+<U0001CCBF> /xf0/x9c/xb2/xbf UPPER RIGHT QUADRANT CHESS QUEEN
+<U0001CCC0> /xf0/x9c/xb3/x80 LOWER LEFT QUADRANT CHESS QUEEN
+<U0001CCC1> /xf0/x9c/xb3/x81 LOWER RIGHT QUADRANT CHESS QUEEN
+<U0001CCC2> /xf0/x9c/xb3/x82 UPPER LEFT QUADRANT CHESS ROOK
+<U0001CCC3> /xf0/x9c/xb3/x83 UPPER RIGHT QUADRANT CHESS ROOK
+<U0001CCC4> /xf0/x9c/xb3/x84 LOWER LEFT QUADRANT CHESS ROOK
+<U0001CCC5> /xf0/x9c/xb3/x85 LOWER RIGHT QUADRANT CHESS ROOK
+<U0001CCC6> /xf0/x9c/xb3/x86 UPPER LEFT QUADRANT CHESS BISHOP
+<U0001CCC7> /xf0/x9c/xb3/x87 UPPER RIGHT QUADRANT CHESS BISHOP
+<U0001CCC8> /xf0/x9c/xb3/x88 LOWER LEFT QUADRANT CHESS BISHOP
+<U0001CCC9> /xf0/x9c/xb3/x89 LOWER RIGHT QUADRANT CHESS BISHOP
+<U0001CCCA> /xf0/x9c/xb3/x8a UPPER LEFT QUADRANT CHESS KNIGHT
+<U0001CCCB> /xf0/x9c/xb3/x8b UPPER RIGHT QUADRANT CHESS KNIGHT
+<U0001CCCC> /xf0/x9c/xb3/x8c LOWER LEFT QUADRANT CHESS KNIGHT
+<U0001CCCD> /xf0/x9c/xb3/x8d LOWER RIGHT QUADRANT CHESS KNIGHT
+<U0001CCCE> /xf0/x9c/xb3/x8e UPPER LEFT QUADRANT CHESS PAWN
+<U0001CCCF> /xf0/x9c/xb3/x8f UPPER RIGHT QUADRANT CHESS PAWN
+<U0001CCD0> /xf0/x9c/xb3/x90 LOWER LEFT QUADRANT CHESS PAWN
+<U0001CCD1> /xf0/x9c/xb3/x91 LOWER RIGHT QUADRANT CHESS PAWN
+<U0001CCD2> /xf0/x9c/xb3/x92 UPPER LEFT QUADRANT STANDING KNIGHT
+<U0001CCD3> /xf0/x9c/xb3/x93 UPPER RIGHT QUADRANT STANDING KNIGHT
+<U0001CCD4> /xf0/x9c/xb3/x94 LOWER LEFT QUADRANT STANDING KNIGHT
+<U0001CCD5> /xf0/x9c/xb3/x95 LOWER RIGHT QUADRANT STANDING KNIGHT
+<U0001CCD6> /xf0/x9c/xb3/x96 OUTLINED LATIN CAPITAL LETTER A
+<U0001CCD7> /xf0/x9c/xb3/x97 OUTLINED LATIN CAPITAL LETTER B
+<U0001CCD8> /xf0/x9c/xb3/x98 OUTLINED LATIN CAPITAL LETTER C
+<U0001CCD9> /xf0/x9c/xb3/x99 OUTLINED LATIN CAPITAL LETTER D
+<U0001CCDA> /xf0/x9c/xb3/x9a OUTLINED LATIN CAPITAL LETTER E
+<U0001CCDB> /xf0/x9c/xb3/x9b OUTLINED LATIN CAPITAL LETTER F
+<U0001CCDC> /xf0/x9c/xb3/x9c OUTLINED LATIN CAPITAL LETTER G
+<U0001CCDD> /xf0/x9c/xb3/x9d OUTLINED LATIN CAPITAL LETTER H
+<U0001CCDE> /xf0/x9c/xb3/x9e OUTLINED LATIN CAPITAL LETTER I
+<U0001CCDF> /xf0/x9c/xb3/x9f OUTLINED LATIN CAPITAL LETTER J
+<U0001CCE0> /xf0/x9c/xb3/xa0 OUTLINED LATIN CAPITAL LETTER K
+<U0001CCE1> /xf0/x9c/xb3/xa1 OUTLINED LATIN CAPITAL LETTER L
+<U0001CCE2> /xf0/x9c/xb3/xa2 OUTLINED LATIN CAPITAL LETTER M
+<U0001CCE3> /xf0/x9c/xb3/xa3 OUTLINED LATIN CAPITAL LETTER N
+<U0001CCE4> /xf0/x9c/xb3/xa4 OUTLINED LATIN CAPITAL LETTER O
+<U0001CCE5> /xf0/x9c/xb3/xa5 OUTLINED LATIN CAPITAL LETTER P
+<U0001CCE6> /xf0/x9c/xb3/xa6 OUTLINED LATIN CAPITAL LETTER Q
+<U0001CCE7> /xf0/x9c/xb3/xa7 OUTLINED LATIN CAPITAL LETTER R
+<U0001CCE8> /xf0/x9c/xb3/xa8 OUTLINED LATIN CAPITAL LETTER S
+<U0001CCE9> /xf0/x9c/xb3/xa9 OUTLINED LATIN CAPITAL LETTER T
+<U0001CCEA> /xf0/x9c/xb3/xaa OUTLINED LATIN CAPITAL LETTER U
+<U0001CCEB> /xf0/x9c/xb3/xab OUTLINED LATIN CAPITAL LETTER V
+<U0001CCEC> /xf0/x9c/xb3/xac OUTLINED LATIN CAPITAL LETTER W
+<U0001CCED> /xf0/x9c/xb3/xad OUTLINED LATIN CAPITAL LETTER X
+<U0001CCEE> /xf0/x9c/xb3/xae OUTLINED LATIN CAPITAL LETTER Y
+<U0001CCEF> /xf0/x9c/xb3/xaf OUTLINED LATIN CAPITAL LETTER Z
+<U0001CCF0> /xf0/x9c/xb3/xb0 OUTLINED DIGIT ZERO
+<U0001CCF1> /xf0/x9c/xb3/xb1 OUTLINED DIGIT ONE
+<U0001CCF2> /xf0/x9c/xb3/xb2 OUTLINED DIGIT TWO
+<U0001CCF3> /xf0/x9c/xb3/xb3 OUTLINED DIGIT THREE
+<U0001CCF4> /xf0/x9c/xb3/xb4 OUTLINED DIGIT FOUR
+<U0001CCF5> /xf0/x9c/xb3/xb5 OUTLINED DIGIT FIVE
+<U0001CCF6> /xf0/x9c/xb3/xb6 OUTLINED DIGIT SIX
+<U0001CCF7> /xf0/x9c/xb3/xb7 OUTLINED DIGIT SEVEN
+<U0001CCF8> /xf0/x9c/xb3/xb8 OUTLINED DIGIT EIGHT
+<U0001CCF9> /xf0/x9c/xb3/xb9 OUTLINED DIGIT NINE
+<U0001CD00> /xf0/x9c/xb4/x80 BLOCK OCTANT-3
+<U0001CD01> /xf0/x9c/xb4/x81 BLOCK OCTANT-23
+<U0001CD02> /xf0/x9c/xb4/x82 BLOCK OCTANT-123
+<U0001CD03> /xf0/x9c/xb4/x83 BLOCK OCTANT-4
+<U0001CD04> /xf0/x9c/xb4/x84 BLOCK OCTANT-14
+<U0001CD05> /xf0/x9c/xb4/x85 BLOCK OCTANT-124
+<U0001CD06> /xf0/x9c/xb4/x86 BLOCK OCTANT-34
+<U0001CD07> /xf0/x9c/xb4/x87 BLOCK OCTANT-134
+<U0001CD08> /xf0/x9c/xb4/x88 BLOCK OCTANT-234
+<U0001CD09> /xf0/x9c/xb4/x89 BLOCK OCTANT-5
+<U0001CD0A> /xf0/x9c/xb4/x8a BLOCK OCTANT-15
+<U0001CD0B> /xf0/x9c/xb4/x8b BLOCK OCTANT-25
+<U0001CD0C> /xf0/x9c/xb4/x8c BLOCK OCTANT-125
+<U0001CD0D> /xf0/x9c/xb4/x8d BLOCK OCTANT-135
+<U0001CD0E> /xf0/x9c/xb4/x8e BLOCK OCTANT-235
+<U0001CD0F> /xf0/x9c/xb4/x8f BLOCK OCTANT-1235
+<U0001CD10> /xf0/x9c/xb4/x90 BLOCK OCTANT-45
+<U0001CD11> /xf0/x9c/xb4/x91 BLOCK OCTANT-145
+<U0001CD12> /xf0/x9c/xb4/x92 BLOCK OCTANT-245
+<U0001CD13> /xf0/x9c/xb4/x93 BLOCK OCTANT-1245
+<U0001CD14> /xf0/x9c/xb4/x94 BLOCK OCTANT-345
+<U0001CD15> /xf0/x9c/xb4/x95 BLOCK OCTANT-1345
+<U0001CD16> /xf0/x9c/xb4/x96 BLOCK OCTANT-2345
+<U0001CD17> /xf0/x9c/xb4/x97 BLOCK OCTANT-12345
+<U0001CD18> /xf0/x9c/xb4/x98 BLOCK OCTANT-6
+<U0001CD19> /xf0/x9c/xb4/x99 BLOCK OCTANT-16
+<U0001CD1A> /xf0/x9c/xb4/x9a BLOCK OCTANT-26
+<U0001CD1B> /xf0/x9c/xb4/x9b BLOCK OCTANT-126
+<U0001CD1C> /xf0/x9c/xb4/x9c BLOCK OCTANT-36
+<U0001CD1D> /xf0/x9c/xb4/x9d BLOCK OCTANT-136
+<U0001CD1E> /xf0/x9c/xb4/x9e BLOCK OCTANT-236
+<U0001CD1F> /xf0/x9c/xb4/x9f BLOCK OCTANT-1236
+<U0001CD20> /xf0/x9c/xb4/xa0 BLOCK OCTANT-146
+<U0001CD21> /xf0/x9c/xb4/xa1 BLOCK OCTANT-246
+<U0001CD22> /xf0/x9c/xb4/xa2 BLOCK OCTANT-1246
+<U0001CD23> /xf0/x9c/xb4/xa3 BLOCK OCTANT-346
+<U0001CD24> /xf0/x9c/xb4/xa4 BLOCK OCTANT-1346
+<U0001CD25> /xf0/x9c/xb4/xa5 BLOCK OCTANT-2346
+<U0001CD26> /xf0/x9c/xb4/xa6 BLOCK OCTANT-12346
+<U0001CD27> /xf0/x9c/xb4/xa7 BLOCK OCTANT-56
+<U0001CD28> /xf0/x9c/xb4/xa8 BLOCK OCTANT-156
+<U0001CD29> /xf0/x9c/xb4/xa9 BLOCK OCTANT-256
+<U0001CD2A> /xf0/x9c/xb4/xaa BLOCK OCTANT-1256
+<U0001CD2B> /xf0/x9c/xb4/xab BLOCK OCTANT-356
+<U0001CD2C> /xf0/x9c/xb4/xac BLOCK OCTANT-1356
+<U0001CD2D> /xf0/x9c/xb4/xad BLOCK OCTANT-2356
+<U0001CD2E> /xf0/x9c/xb4/xae BLOCK OCTANT-12356
+<U0001CD2F> /xf0/x9c/xb4/xaf BLOCK OCTANT-456
+<U0001CD30> /xf0/x9c/xb4/xb0 BLOCK OCTANT-1456
+<U0001CD31> /xf0/x9c/xb4/xb1 BLOCK OCTANT-2456
+<U0001CD32> /xf0/x9c/xb4/xb2 BLOCK OCTANT-12456
+<U0001CD33> /xf0/x9c/xb4/xb3 BLOCK OCTANT-3456
+<U0001CD34> /xf0/x9c/xb4/xb4 BLOCK OCTANT-13456
+<U0001CD35> /xf0/x9c/xb4/xb5 BLOCK OCTANT-23456
+<U0001CD36> /xf0/x9c/xb4/xb6 BLOCK OCTANT-17
+<U0001CD37> /xf0/x9c/xb4/xb7 BLOCK OCTANT-27
+<U0001CD38> /xf0/x9c/xb4/xb8 BLOCK OCTANT-127
+<U0001CD39> /xf0/x9c/xb4/xb9 BLOCK OCTANT-37
+<U0001CD3A> /xf0/x9c/xb4/xba BLOCK OCTANT-137
+<U0001CD3B> /xf0/x9c/xb4/xbb BLOCK OCTANT-237
+<U0001CD3C> /xf0/x9c/xb4/xbc BLOCK OCTANT-1237
+<U0001CD3D> /xf0/x9c/xb4/xbd BLOCK OCTANT-47
+<U0001CD3E> /xf0/x9c/xb4/xbe BLOCK OCTANT-147
+<U0001CD3F> /xf0/x9c/xb4/xbf BLOCK OCTANT-247
+<U0001CD40> /xf0/x9c/xb5/x80 BLOCK OCTANT-1247
+<U0001CD41> /xf0/x9c/xb5/x81 BLOCK OCTANT-347
+<U0001CD42> /xf0/x9c/xb5/x82 BLOCK OCTANT-1347
+<U0001CD43> /xf0/x9c/xb5/x83 BLOCK OCTANT-2347
+<U0001CD44> /xf0/x9c/xb5/x84 BLOCK OCTANT-12347
+<U0001CD45> /xf0/x9c/xb5/x85 BLOCK OCTANT-157
+<U0001CD46> /xf0/x9c/xb5/x86 BLOCK OCTANT-257
+<U0001CD47> /xf0/x9c/xb5/x87 BLOCK OCTANT-1257
+<U0001CD48> /xf0/x9c/xb5/x88 BLOCK OCTANT-357
+<U0001CD49> /xf0/x9c/xb5/x89 BLOCK OCTANT-2357
+<U0001CD4A> /xf0/x9c/xb5/x8a BLOCK OCTANT-12357
+<U0001CD4B> /xf0/x9c/xb5/x8b BLOCK OCTANT-457
+<U0001CD4C> /xf0/x9c/xb5/x8c BLOCK OCTANT-1457
+<U0001CD4D> /xf0/x9c/xb5/x8d BLOCK OCTANT-12457
+<U0001CD4E> /xf0/x9c/xb5/x8e BLOCK OCTANT-3457
+<U0001CD4F> /xf0/x9c/xb5/x8f BLOCK OCTANT-13457
+<U0001CD50> /xf0/x9c/xb5/x90 BLOCK OCTANT-23457
+<U0001CD51> /xf0/x9c/xb5/x91 BLOCK OCTANT-67
+<U0001CD52> /xf0/x9c/xb5/x92 BLOCK OCTANT-167
+<U0001CD53> /xf0/x9c/xb5/x93 BLOCK OCTANT-267
+<U0001CD54> /xf0/x9c/xb5/x94 BLOCK OCTANT-1267
+<U0001CD55> /xf0/x9c/xb5/x95 BLOCK OCTANT-367
+<U0001CD56> /xf0/x9c/xb5/x96 BLOCK OCTANT-1367
+<U0001CD57> /xf0/x9c/xb5/x97 BLOCK OCTANT-2367
+<U0001CD58> /xf0/x9c/xb5/x98 BLOCK OCTANT-12367
+<U0001CD59> /xf0/x9c/xb5/x99 BLOCK OCTANT-467
+<U0001CD5A> /xf0/x9c/xb5/x9a BLOCK OCTANT-1467
+<U0001CD5B> /xf0/x9c/xb5/x9b BLOCK OCTANT-2467
+<U0001CD5C> /xf0/x9c/xb5/x9c BLOCK OCTANT-12467
+<U0001CD5D> /xf0/x9c/xb5/x9d BLOCK OCTANT-3467
+<U0001CD5E> /xf0/x9c/xb5/x9e BLOCK OCTANT-13467
+<U0001CD5F> /xf0/x9c/xb5/x9f BLOCK OCTANT-23467
+<U0001CD60> /xf0/x9c/xb5/xa0 BLOCK OCTANT-123467
+<U0001CD61> /xf0/x9c/xb5/xa1 BLOCK OCTANT-567
+<U0001CD62> /xf0/x9c/xb5/xa2 BLOCK OCTANT-1567
+<U0001CD63> /xf0/x9c/xb5/xa3 BLOCK OCTANT-2567
+<U0001CD64> /xf0/x9c/xb5/xa4 BLOCK OCTANT-12567
+<U0001CD65> /xf0/x9c/xb5/xa5 BLOCK OCTANT-3567
+<U0001CD66> /xf0/x9c/xb5/xa6 BLOCK OCTANT-13567
+<U0001CD67> /xf0/x9c/xb5/xa7 BLOCK OCTANT-23567
+<U0001CD68> /xf0/x9c/xb5/xa8 BLOCK OCTANT-123567
+<U0001CD69> /xf0/x9c/xb5/xa9 BLOCK OCTANT-4567
+<U0001CD6A> /xf0/x9c/xb5/xaa BLOCK OCTANT-14567
+<U0001CD6B> /xf0/x9c/xb5/xab BLOCK OCTANT-24567
+<U0001CD6C> /xf0/x9c/xb5/xac BLOCK OCTANT-124567
+<U0001CD6D> /xf0/x9c/xb5/xad BLOCK OCTANT-34567
+<U0001CD6E> /xf0/x9c/xb5/xae BLOCK OCTANT-134567
+<U0001CD6F> /xf0/x9c/xb5/xaf BLOCK OCTANT-234567
+<U0001CD70> /xf0/x9c/xb5/xb0 BLOCK OCTANT-1234567
+<U0001CD71> /xf0/x9c/xb5/xb1 BLOCK OCTANT-18
+<U0001CD72> /xf0/x9c/xb5/xb2 BLOCK OCTANT-28
+<U0001CD73> /xf0/x9c/xb5/xb3 BLOCK OCTANT-128
+<U0001CD74> /xf0/x9c/xb5/xb4 BLOCK OCTANT-38
+<U0001CD75> /xf0/x9c/xb5/xb5 BLOCK OCTANT-138
+<U0001CD76> /xf0/x9c/xb5/xb6 BLOCK OCTANT-238
+<U0001CD77> /xf0/x9c/xb5/xb7 BLOCK OCTANT-1238
+<U0001CD78> /xf0/x9c/xb5/xb8 BLOCK OCTANT-48
+<U0001CD79> /xf0/x9c/xb5/xb9 BLOCK OCTANT-148
+<U0001CD7A> /xf0/x9c/xb5/xba BLOCK OCTANT-248
+<U0001CD7B> /xf0/x9c/xb5/xbb BLOCK OCTANT-1248
+<U0001CD7C> /xf0/x9c/xb5/xbc BLOCK OCTANT-348
+<U0001CD7D> /xf0/x9c/xb5/xbd BLOCK OCTANT-1348
+<U0001CD7E> /xf0/x9c/xb5/xbe BLOCK OCTANT-2348
+<U0001CD7F> /xf0/x9c/xb5/xbf BLOCK OCTANT-12348
+<U0001CD80> /xf0/x9c/xb6/x80 BLOCK OCTANT-58
+<U0001CD81> /xf0/x9c/xb6/x81 BLOCK OCTANT-158
+<U0001CD82> /xf0/x9c/xb6/x82 BLOCK OCTANT-258
+<U0001CD83> /xf0/x9c/xb6/x83 BLOCK OCTANT-1258
+<U0001CD84> /xf0/x9c/xb6/x84 BLOCK OCTANT-358
+<U0001CD85> /xf0/x9c/xb6/x85 BLOCK OCTANT-1358
+<U0001CD86> /xf0/x9c/xb6/x86 BLOCK OCTANT-2358
+<U0001CD87> /xf0/x9c/xb6/x87 BLOCK OCTANT-12358
+<U0001CD88> /xf0/x9c/xb6/x88 BLOCK OCTANT-458
+<U0001CD89> /xf0/x9c/xb6/x89 BLOCK OCTANT-1458
+<U0001CD8A> /xf0/x9c/xb6/x8a BLOCK OCTANT-2458
+<U0001CD8B> /xf0/x9c/xb6/x8b BLOCK OCTANT-12458
+<U0001CD8C> /xf0/x9c/xb6/x8c BLOCK OCTANT-3458
+<U0001CD8D> /xf0/x9c/xb6/x8d BLOCK OCTANT-13458
+<U0001CD8E> /xf0/x9c/xb6/x8e BLOCK OCTANT-23458
+<U0001CD8F> /xf0/x9c/xb6/x8f BLOCK OCTANT-123458
+<U0001CD90> /xf0/x9c/xb6/x90 BLOCK OCTANT-168
+<U0001CD91> /xf0/x9c/xb6/x91 BLOCK OCTANT-268
+<U0001CD92> /xf0/x9c/xb6/x92 BLOCK OCTANT-1268
+<U0001CD93> /xf0/x9c/xb6/x93 BLOCK OCTANT-368
+<U0001CD94> /xf0/x9c/xb6/x94 BLOCK OCTANT-2368
+<U0001CD95> /xf0/x9c/xb6/x95 BLOCK OCTANT-12368
+<U0001CD96> /xf0/x9c/xb6/x96 BLOCK OCTANT-468
+<U0001CD97> /xf0/x9c/xb6/x97 BLOCK OCTANT-1468
+<U0001CD98> /xf0/x9c/xb6/x98 BLOCK OCTANT-12468
+<U0001CD99> /xf0/x9c/xb6/x99 BLOCK OCTANT-3468
+<U0001CD9A> /xf0/x9c/xb6/x9a BLOCK OCTANT-13468
+<U0001CD9B> /xf0/x9c/xb6/x9b BLOCK OCTANT-23468
+<U0001CD9C> /xf0/x9c/xb6/x9c BLOCK OCTANT-568
+<U0001CD9D> /xf0/x9c/xb6/x9d BLOCK OCTANT-1568
+<U0001CD9E> /xf0/x9c/xb6/x9e BLOCK OCTANT-2568
+<U0001CD9F> /xf0/x9c/xb6/x9f BLOCK OCTANT-12568
+<U0001CDA0> /xf0/x9c/xb6/xa0 BLOCK OCTANT-3568
+<U0001CDA1> /xf0/x9c/xb6/xa1 BLOCK OCTANT-13568
+<U0001CDA2> /xf0/x9c/xb6/xa2 BLOCK OCTANT-23568
+<U0001CDA3> /xf0/x9c/xb6/xa3 BLOCK OCTANT-123568
+<U0001CDA4> /xf0/x9c/xb6/xa4 BLOCK OCTANT-4568
+<U0001CDA5> /xf0/x9c/xb6/xa5 BLOCK OCTANT-14568
+<U0001CDA6> /xf0/x9c/xb6/xa6 BLOCK OCTANT-24568
+<U0001CDA7> /xf0/x9c/xb6/xa7 BLOCK OCTANT-124568
+<U0001CDA8> /xf0/x9c/xb6/xa8 BLOCK OCTANT-34568
+<U0001CDA9> /xf0/x9c/xb6/xa9 BLOCK OCTANT-134568
+<U0001CDAA> /xf0/x9c/xb6/xaa BLOCK OCTANT-234568
+<U0001CDAB> /xf0/x9c/xb6/xab BLOCK OCTANT-1234568
+<U0001CDAC> /xf0/x9c/xb6/xac BLOCK OCTANT-178
+<U0001CDAD> /xf0/x9c/xb6/xad BLOCK OCTANT-278
+<U0001CDAE> /xf0/x9c/xb6/xae BLOCK OCTANT-1278
+<U0001CDAF> /xf0/x9c/xb6/xaf BLOCK OCTANT-378
+<U0001CDB0> /xf0/x9c/xb6/xb0 BLOCK OCTANT-1378
+<U0001CDB1> /xf0/x9c/xb6/xb1 BLOCK OCTANT-2378
+<U0001CDB2> /xf0/x9c/xb6/xb2 BLOCK OCTANT-12378
+<U0001CDB3> /xf0/x9c/xb6/xb3 BLOCK OCTANT-478
+<U0001CDB4> /xf0/x9c/xb6/xb4 BLOCK OCTANT-1478
+<U0001CDB5> /xf0/x9c/xb6/xb5 BLOCK OCTANT-2478
+<U0001CDB6> /xf0/x9c/xb6/xb6 BLOCK OCTANT-12478
+<U0001CDB7> /xf0/x9c/xb6/xb7 BLOCK OCTANT-3478
+<U0001CDB8> /xf0/x9c/xb6/xb8 BLOCK OCTANT-13478
+<U0001CDB9> /xf0/x9c/xb6/xb9 BLOCK OCTANT-23478
+<U0001CDBA> /xf0/x9c/xb6/xba BLOCK OCTANT-123478
+<U0001CDBB> /xf0/x9c/xb6/xbb BLOCK OCTANT-578
+<U0001CDBC> /xf0/x9c/xb6/xbc BLOCK OCTANT-1578
+<U0001CDBD> /xf0/x9c/xb6/xbd BLOCK OCTANT-2578
+<U0001CDBE> /xf0/x9c/xb6/xbe BLOCK OCTANT-12578
+<U0001CDBF> /xf0/x9c/xb6/xbf BLOCK OCTANT-3578
+<U0001CDC0> /xf0/x9c/xb7/x80 BLOCK OCTANT-13578
+<U0001CDC1> /xf0/x9c/xb7/x81 BLOCK OCTANT-23578
+<U0001CDC2> /xf0/x9c/xb7/x82 BLOCK OCTANT-123578
+<U0001CDC3> /xf0/x9c/xb7/x83 BLOCK OCTANT-4578
+<U0001CDC4> /xf0/x9c/xb7/x84 BLOCK OCTANT-14578
+<U0001CDC5> /xf0/x9c/xb7/x85 BLOCK OCTANT-24578
+<U0001CDC6> /xf0/x9c/xb7/x86 BLOCK OCTANT-124578
+<U0001CDC7> /xf0/x9c/xb7/x87 BLOCK OCTANT-34578
+<U0001CDC8> /xf0/x9c/xb7/x88 BLOCK OCTANT-134578
+<U0001CDC9> /xf0/x9c/xb7/x89 BLOCK OCTANT-234578
+<U0001CDCA> /xf0/x9c/xb7/x8a BLOCK OCTANT-1234578
+<U0001CDCB> /xf0/x9c/xb7/x8b BLOCK OCTANT-678
+<U0001CDCC> /xf0/x9c/xb7/x8c BLOCK OCTANT-1678
+<U0001CDCD> /xf0/x9c/xb7/x8d BLOCK OCTANT-2678
+<U0001CDCE> /xf0/x9c/xb7/x8e BLOCK OCTANT-12678
+<U0001CDCF> /xf0/x9c/xb7/x8f BLOCK OCTANT-3678
+<U0001CDD0> /xf0/x9c/xb7/x90 BLOCK OCTANT-13678
+<U0001CDD1> /xf0/x9c/xb7/x91 BLOCK OCTANT-23678
+<U0001CDD2> /xf0/x9c/xb7/x92 BLOCK OCTANT-123678
+<U0001CDD3> /xf0/x9c/xb7/x93 BLOCK OCTANT-4678
+<U0001CDD4> /xf0/x9c/xb7/x94 BLOCK OCTANT-14678
+<U0001CDD5> /xf0/x9c/xb7/x95 BLOCK OCTANT-24678
+<U0001CDD6> /xf0/x9c/xb7/x96 BLOCK OCTANT-124678
+<U0001CDD7> /xf0/x9c/xb7/x97 BLOCK OCTANT-34678
+<U0001CDD8> /xf0/x9c/xb7/x98 BLOCK OCTANT-134678
+<U0001CDD9> /xf0/x9c/xb7/x99 BLOCK OCTANT-234678
+<U0001CDDA> /xf0/x9c/xb7/x9a BLOCK OCTANT-1234678
+<U0001CDDB> /xf0/x9c/xb7/x9b BLOCK OCTANT-15678
+<U0001CDDC> /xf0/x9c/xb7/x9c BLOCK OCTANT-25678
+<U0001CDDD> /xf0/x9c/xb7/x9d BLOCK OCTANT-125678
+<U0001CDDE> /xf0/x9c/xb7/x9e BLOCK OCTANT-35678
+<U0001CDDF> /xf0/x9c/xb7/x9f BLOCK OCTANT-235678
+<U0001CDE0> /xf0/x9c/xb7/xa0 BLOCK OCTANT-1235678
+<U0001CDE1> /xf0/x9c/xb7/xa1 BLOCK OCTANT-45678
+<U0001CDE2> /xf0/x9c/xb7/xa2 BLOCK OCTANT-145678
+<U0001CDE3> /xf0/x9c/xb7/xa3 BLOCK OCTANT-1245678
+<U0001CDE4> /xf0/x9c/xb7/xa4 BLOCK OCTANT-1345678
+<U0001CDE5> /xf0/x9c/xb7/xa5 BLOCK OCTANT-2345678
+<U0001CDE6> /xf0/x9c/xb7/xa6 TOP HALF STANDING PERSON
+<U0001CDE7> /xf0/x9c/xb7/xa7 BOTTOM HALF STANDING PERSON
+<U0001CDE8> /xf0/x9c/xb7/xa8 TOP HALF RIGHT-FACING RUNNER FRAME-1
+<U0001CDE9> /xf0/x9c/xb7/xa9 BOTTOM HALF RIGHT-FACING RUNNER FRAME-1
+<U0001CDEA> /xf0/x9c/xb7/xaa TOP HALF RIGHT-FACING RUNNER FRAME-2
+<U0001CDEB> /xf0/x9c/xb7/xab BOTTOM HALF RIGHT-FACING RUNNER FRAME-2
+<U0001CDEC> /xf0/x9c/xb7/xac TOP HALF LEFT-FACING RUNNER FRAME-1
+<U0001CDED> /xf0/x9c/xb7/xad BOTTOM HALF LEFT-FACING RUNNER FRAME-1
+<U0001CDEE> /xf0/x9c/xb7/xae TOP HALF LEFT-FACING RUNNER FRAME-2
+<U0001CDEF> /xf0/x9c/xb7/xaf BOTTOM HALF LEFT-FACING RUNNER FRAME-2
+<U0001CDF0> /xf0/x9c/xb7/xb0 TOP HALF FORWARD-FACING RUNNER
+<U0001CDF1> /xf0/x9c/xb7/xb1 BOTTOM HALF FORWARD-FACING RUNNER FRAME-1
+<U0001CDF2> /xf0/x9c/xb7/xb2 BOTTOM HALF FORWARD-FACING RUNNER FRAME-2
+<U0001CDF3> /xf0/x9c/xb7/xb3 BOTTOM HALF FORWARD-FACING RUNNER FRAME-3
+<U0001CDF4> /xf0/x9c/xb7/xb4 BOTTOM HALF FORWARD-FACING RUNNER FRAME-4
+<U0001CDF5> /xf0/x9c/xb7/xb5 MOON LANDER
+<U0001CDF6> /xf0/x9c/xb7/xb6 TOP HALF FLAILING ROBOT FRAME-1
+<U0001CDF7> /xf0/x9c/xb7/xb7 TOP HALF FLAILING ROBOT FRAME-2
+<U0001CDF8> /xf0/x9c/xb7/xb8 DOWN-POINTING AIRPLANE
+<U0001CDF9> /xf0/x9c/xb7/xb9 LEFT-POINTING AIRPLANE
+<U0001CDFA> /xf0/x9c/xb7/xba SMALL UP-POINTING AIRPLANE
+<U0001CDFB> /xf0/x9c/xb7/xbb UP-POINTING FROG
+<U0001CDFC> /xf0/x9c/xb7/xbc DOWN-POINTING FROG
+<U0001CDFD> /xf0/x9c/xb7/xbd EXPLOSION FRAME-1
+<U0001CDFE> /xf0/x9c/xb7/xbe EXPLOSION FRAME-2
+<U0001CDFF> /xf0/x9c/xb7/xbf EXPLOSION FRAME-3
+<U0001CE00> /xf0/x9c/xb8/x80 RIGHT HALF AND LEFT HALF WHITE CIRCLE
+<U0001CE01> /xf0/x9c/xb8/x81 LOWER HALF AND UPPER HALF WHITE CIRCLE
+<U0001CE02> /xf0/x9c/xb8/x82 EXPLOSION AT HORIZON
+<U0001CE03> /xf0/x9c/xb8/x83 UPPER HALF HEAVY WHITE SQUARE
+<U0001CE04> /xf0/x9c/xb8/x84 LOWER HALF HEAVY WHITE SQUARE
+<U0001CE05> /xf0/x9c/xb8/x85 HEAVY WHITE SQUARE CONTAINING BLACK VERY SMALL SQUARE
+<U0001CE06> /xf0/x9c/xb8/x86 WHITE VERTICAL RECTANGLE WITH HORIZONTAL BAR
+<U0001CE07> /xf0/x9c/xb8/x87 TOP LEFT BLACK LEFT-POINTING SMALL TRIANGLE
+<U0001CE08> /xf0/x9c/xb8/x88 FUNNEL
+<U0001CE09> /xf0/x9c/xb8/x89 BOX DRAWINGS DOUBLE DIAGONAL LOWER LEFT TO MIDDLE CENTRE TO LOWER RIGHT
+<U0001CE0A> /xf0/x9c/xb8/x8a BOX DRAWINGS DOUBLE DIAGONAL UPPER LEFT TO MIDDLE CENTRE TO UPPER RIGHT
+<U0001CE0B> /xf0/x9c/xb8/x8b LEFT HALF WHITE ELLIPSE
+<U0001CE0C> /xf0/x9c/xb8/x8c RIGHT HALF WHITE ELLIPSE
+<U0001CE0D> /xf0/x9c/xb8/x8d LEFT HALF TRIPLE DASH HORIZONTAL
+<U0001CE0E> /xf0/x9c/xb8/x8e RIGHT HALF TRIPLE DASH HORIZONTAL
+<U0001CE0F> /xf0/x9c/xb8/x8f HORIZONTAL LINE WITH TICK MARK
+<U0001CE10> /xf0/x9c/xb8/x90 LEFT HALF HORIZONTAL LINE WITH THREE TICK MARKS
+<U0001CE11> /xf0/x9c/xb8/x91 RIGHT HALF HORIZONTAL LINE WITH THREE TICK MARKS
+<U0001CE12> /xf0/x9c/xb8/x92 HORIZONTAL LINE WITH THREE TICK MARKS
+<U0001CE13> /xf0/x9c/xb8/x93 LOWER HALF VERTICAL LINE WITH THREE TICK MARKS
+<U0001CE14> /xf0/x9c/xb8/x94 UPPER HALF VERTICAL LINE WITH THREE TICK MARKS
+<U0001CE15> /xf0/x9c/xb8/x95 VERTICAL LINE WITH THREE TICK MARKS
+<U0001CE16> /xf0/x9c/xb8/x96 BOX DRAWINGS LIGHT VERTICAL AND TOP RIGHT
+<U0001CE17> /xf0/x9c/xb8/x97 BOX DRAWINGS LIGHT VERTICAL AND BOTTOM RIGHT
+<U0001CE18> /xf0/x9c/xb8/x98 BOX DRAWINGS LIGHT VERTICAL AND TOP LEFT
+<U0001CE19> /xf0/x9c/xb8/x99 BOX DRAWINGS LIGHT VERTICAL AND BOTTOM LEFT
+<U0001CE1A> /xf0/x9c/xb8/x9a LARGE TYPE PIECE UPPER LEFT ARC
+<U0001CE1B> /xf0/x9c/xb8/x9b LARGE TYPE PIECE UPPER LEFT CORNER
+<U0001CE1C> /xf0/x9c/xb8/x9c LARGE TYPE PIECE UPPER TERMINAL
+<U0001CE1D> /xf0/x9c/xb8/x9d LARGE TYPE PIECE UPPER LEFT CROTCH
+<U0001CE1E> /xf0/x9c/xb8/x9e LARGE TYPE PIECE LEFT ARM
+<U0001CE1F> /xf0/x9c/xb8/x9f LARGE TYPE PIECE CROSSBAR
+<U0001CE20> /xf0/x9c/xb8/xa0 LARGE TYPE PIECE CROSSBAR WITH LOWER STEM
+<U0001CE21> /xf0/x9c/xb8/xa1 LARGE TYPE PIECE UPPER HALF VERTEX OF M
+<U0001CE22> /xf0/x9c/xb8/xa2 LARGE TYPE PIECE DIAGONAL LOWER LEFT
+<U0001CE23> /xf0/x9c/xb8/xa3 LARGE TYPE PIECE SHORT UPPER TERMINAL
+<U0001CE24> /xf0/x9c/xb8/xa4 LARGE TYPE PIECE UPPER RIGHT ARC
+<U0001CE25> /xf0/x9c/xb8/xa5 LARGE TYPE PIECE RIGHT ARM
+<U0001CE26> /xf0/x9c/xb8/xa6 LARGE TYPE PIECE UPPER RIGHT CROTCH
+<U0001CE27> /xf0/x9c/xb8/xa7 LARGE TYPE PIECE UPPER RIGHT CORNER
+<U0001CE28> /xf0/x9c/xb8/xa8 LARGE TYPE PIECE STEM WITH RIGHT CROSSBAR
+<U0001CE29> /xf0/x9c/xb8/xa9 LARGE TYPE PIECE STEM
+<U0001CE2A> /xf0/x9c/xb8/xaa LARGE TYPE PIECE DIAGONAL UPPER RIGHT AND LOWER RIGHT
+<U0001CE2B> /xf0/x9c/xb8/xab LARGE TYPE PIECE DIAGONAL UPPER RIGHT
+<U0001CE2C> /xf0/x9c/xb8/xac LARGE TYPE PIECE DIAGONAL LOWER RIGHT
+<U0001CE2D> /xf0/x9c/xb8/xad LARGE TYPE PIECE SHORT LOWER TERMINAL
+<U0001CE2E> /xf0/x9c/xb8/xae LARGE TYPE PIECE LOWER LEFT AND UPPER LEFT ARC
+<U0001CE2F> /xf0/x9c/xb8/xaf LARGE TYPE PIECE CENTRE OF K
+<U0001CE30> /xf0/x9c/xb8/xb0 LARGE TYPE PIECE LOWER HALF VERTEX OF M
+<U0001CE31> /xf0/x9c/xb8/xb1 LARGE TYPE PIECE UPPER HALF VERTEX OF W
+<U0001CE32> /xf0/x9c/xb8/xb2 LARGE TYPE PIECE CENTRE OF X
+<U0001CE33> /xf0/x9c/xb8/xb3 LARGE TYPE PIECE CENTRE OF Y
+<U0001CE34> /xf0/x9c/xb8/xb4 LARGE TYPE PIECE CENTRE OF Z WITH CROSSBAR
+<U0001CE35> /xf0/x9c/xb8/xb5 LARGE TYPE PIECE RAISED UPPER LEFT ARC
+<U0001CE36> /xf0/x9c/xb8/xb6 LARGE TYPE PIECE STEM WITH LEFT CROSSBAR
+<U0001CE37> /xf0/x9c/xb8/xb7 LARGE TYPE PIECE LOWER RIGHT AND UPPER RIGHT ARC
+<U0001CE38> /xf0/x9c/xb8/xb8 LARGE TYPE PIECE DIAGONAL UPPER LEFT AND LOWER LEFT
+<U0001CE39> /xf0/x9c/xb8/xb9 LARGE TYPE PIECE STEM WITH LEFT JOINT
+<U0001CE3A> /xf0/x9c/xb8/xba LARGE TYPE PIECE STEM WITH CROSSBAR
+<U0001CE3B> /xf0/x9c/xb8/xbb LARGE TYPE PIECE DIAGONAL UPPER LEFT
+<U0001CE3C> /xf0/x9c/xb8/xbc LARGE TYPE PIECE LOWER TERMINAL
+<U0001CE3D> /xf0/x9c/xb8/xbd LARGE TYPE PIECE LOWER LEFT CORNER
+<U0001CE3E> /xf0/x9c/xb8/xbe LARGE TYPE PIECE LOWER LEFT ARC
+<U0001CE3F> /xf0/x9c/xb8/xbf LARGE TYPE PIECE LOWER LEFT CROTCH
+<U0001CE40> /xf0/x9c/xb9/x80 LARGE TYPE PIECE CROSSBAR WITH UPPER STEM
+<U0001CE41> /xf0/x9c/xb9/x81 LARGE TYPE PIECE VERTEX OF V
+<U0001CE42> /xf0/x9c/xb9/x82 LARGE TYPE PIECE LOWER HALF VERTEX OF W
+<U0001CE43> /xf0/x9c/xb9/x83 LARGE TYPE PIECE LOWER RIGHT ARC
+<U0001CE44> /xf0/x9c/xb9/x84 LARGE TYPE PIECE LOWER RIGHT CORNER
+<U0001CE45> /xf0/x9c/xb9/x85 LARGE TYPE PIECE LOWER RIGHT ARC WITH TAIL
+<U0001CE46> /xf0/x9c/xb9/x86 LARGE TYPE PIECE LOWER RIGHT CROTCH
+<U0001CE47> /xf0/x9c/xb9/x87 LARGE TYPE PIECE STEM-45
+<U0001CE48> /xf0/x9c/xb9/x88 LARGE TYPE PIECE STEM-2345
+<U0001CE49> /xf0/x9c/xb9/x89 LARGE TYPE PIECE STEM-4
+<U0001CE4A> /xf0/x9c/xb9/x8a LARGE TYPE PIECE STEM-34
+<U0001CE4B> /xf0/x9c/xb9/x8b LARGE TYPE PIECE STEM-234
+<U0001CE4C> /xf0/x9c/xb9/x8c LARGE TYPE PIECE STEM-1234
+<U0001CE4D> /xf0/x9c/xb9/x8d LARGE TYPE PIECE STEM-3
+<U0001CE4E> /xf0/x9c/xb9/x8e LARGE TYPE PIECE STEM-23
+<U0001CE4F> /xf0/x9c/xb9/x8f LARGE TYPE PIECE STEM-2
+<U0001CE50> /xf0/x9c/xb9/x90 LARGE TYPE PIECE STEM-12
+<U0001CE51> /xf0/x9c/xb9/x91 SEPARATED BLOCK SEXTANT-1
+<U0001CE52> /xf0/x9c/xb9/x92 SEPARATED BLOCK SEXTANT-2
+<U0001CE53> /xf0/x9c/xb9/x93 SEPARATED BLOCK SEXTANT-12
+<U0001CE54> /xf0/x9c/xb9/x94 SEPARATED BLOCK SEXTANT-3
+<U0001CE55> /xf0/x9c/xb9/x95 SEPARATED BLOCK SEXTANT-13
+<U0001CE56> /xf0/x9c/xb9/x96 SEPARATED BLOCK SEXTANT-23
+<U0001CE57> /xf0/x9c/xb9/x97 SEPARATED BLOCK SEXTANT-123
+<U0001CE58> /xf0/x9c/xb9/x98 SEPARATED BLOCK SEXTANT-4
+<U0001CE59> /xf0/x9c/xb9/x99 SEPARATED BLOCK SEXTANT-14
+<U0001CE5A> /xf0/x9c/xb9/x9a SEPARATED BLOCK SEXTANT-24
+<U0001CE5B> /xf0/x9c/xb9/x9b SEPARATED BLOCK SEXTANT-124
+<U0001CE5C> /xf0/x9c/xb9/x9c SEPARATED BLOCK SEXTANT-34
+<U0001CE5D> /xf0/x9c/xb9/x9d SEPARATED BLOCK SEXTANT-134
+<U0001CE5E> /xf0/x9c/xb9/x9e SEPARATED BLOCK SEXTANT-234
+<U0001CE5F> /xf0/x9c/xb9/x9f SEPARATED BLOCK SEXTANT-1234
+<U0001CE60> /xf0/x9c/xb9/xa0 SEPARATED BLOCK SEXTANT-5
+<U0001CE61> /xf0/x9c/xb9/xa1 SEPARATED BLOCK SEXTANT-15
+<U0001CE62> /xf0/x9c/xb9/xa2 SEPARATED BLOCK SEXTANT-25
+<U0001CE63> /xf0/x9c/xb9/xa3 SEPARATED BLOCK SEXTANT-125
+<U0001CE64> /xf0/x9c/xb9/xa4 SEPARATED BLOCK SEXTANT-35
+<U0001CE65> /xf0/x9c/xb9/xa5 SEPARATED BLOCK SEXTANT-135
+<U0001CE66> /xf0/x9c/xb9/xa6 SEPARATED BLOCK SEXTANT-235
+<U0001CE67> /xf0/x9c/xb9/xa7 SEPARATED BLOCK SEXTANT-1235
+<U0001CE68> /xf0/x9c/xb9/xa8 SEPARATED BLOCK SEXTANT-45
+<U0001CE69> /xf0/x9c/xb9/xa9 SEPARATED BLOCK SEXTANT-145
+<U0001CE6A> /xf0/x9c/xb9/xaa SEPARATED BLOCK SEXTANT-245
+<U0001CE6B> /xf0/x9c/xb9/xab SEPARATED BLOCK SEXTANT-1245
+<U0001CE6C> /xf0/x9c/xb9/xac SEPARATED BLOCK SEXTANT-345
+<U0001CE6D> /xf0/x9c/xb9/xad SEPARATED BLOCK SEXTANT-1345
+<U0001CE6E> /xf0/x9c/xb9/xae SEPARATED BLOCK SEXTANT-2345
+<U0001CE6F> /xf0/x9c/xb9/xaf SEPARATED BLOCK SEXTANT-12345
+<U0001CE70> /xf0/x9c/xb9/xb0 SEPARATED BLOCK SEXTANT-6
+<U0001CE71> /xf0/x9c/xb9/xb1 SEPARATED BLOCK SEXTANT-16
+<U0001CE72> /xf0/x9c/xb9/xb2 SEPARATED BLOCK SEXTANT-26
+<U0001CE73> /xf0/x9c/xb9/xb3 SEPARATED BLOCK SEXTANT-126
+<U0001CE74> /xf0/x9c/xb9/xb4 SEPARATED BLOCK SEXTANT-36
+<U0001CE75> /xf0/x9c/xb9/xb5 SEPARATED BLOCK SEXTANT-136
+<U0001CE76> /xf0/x9c/xb9/xb6 SEPARATED BLOCK SEXTANT-236
+<U0001CE77> /xf0/x9c/xb9/xb7 SEPARATED BLOCK SEXTANT-1236
+<U0001CE78> /xf0/x9c/xb9/xb8 SEPARATED BLOCK SEXTANT-46
+<U0001CE79> /xf0/x9c/xb9/xb9 SEPARATED BLOCK SEXTANT-146
+<U0001CE7A> /xf0/x9c/xb9/xba SEPARATED BLOCK SEXTANT-246
+<U0001CE7B> /xf0/x9c/xb9/xbb SEPARATED BLOCK SEXTANT-1246
+<U0001CE7C> /xf0/x9c/xb9/xbc SEPARATED BLOCK SEXTANT-346
+<U0001CE7D> /xf0/x9c/xb9/xbd SEPARATED BLOCK SEXTANT-1346
+<U0001CE7E> /xf0/x9c/xb9/xbe SEPARATED BLOCK SEXTANT-2346
+<U0001CE7F> /xf0/x9c/xb9/xbf SEPARATED BLOCK SEXTANT-12346
+<U0001CE80> /xf0/x9c/xba/x80 SEPARATED BLOCK SEXTANT-56
+<U0001CE81> /xf0/x9c/xba/x81 SEPARATED BLOCK SEXTANT-156
+<U0001CE82> /xf0/x9c/xba/x82 SEPARATED BLOCK SEXTANT-256
+<U0001CE83> /xf0/x9c/xba/x83 SEPARATED BLOCK SEXTANT-1256
+<U0001CE84> /xf0/x9c/xba/x84 SEPARATED BLOCK SEXTANT-356
+<U0001CE85> /xf0/x9c/xba/x85 SEPARATED BLOCK SEXTANT-1356
+<U0001CE86> /xf0/x9c/xba/x86 SEPARATED BLOCK SEXTANT-2356
+<U0001CE87> /xf0/x9c/xba/x87 SEPARATED BLOCK SEXTANT-12356
+<U0001CE88> /xf0/x9c/xba/x88 SEPARATED BLOCK SEXTANT-456
+<U0001CE89> /xf0/x9c/xba/x89 SEPARATED BLOCK SEXTANT-1456
+<U0001CE8A> /xf0/x9c/xba/x8a SEPARATED BLOCK SEXTANT-2456
+<U0001CE8B> /xf0/x9c/xba/x8b SEPARATED BLOCK SEXTANT-12456
+<U0001CE8C> /xf0/x9c/xba/x8c SEPARATED BLOCK SEXTANT-3456
+<U0001CE8D> /xf0/x9c/xba/x8d SEPARATED BLOCK SEXTANT-13456
+<U0001CE8E> /xf0/x9c/xba/x8e SEPARATED BLOCK SEXTANT-23456
+<U0001CE8F> /xf0/x9c/xba/x8f SEPARATED BLOCK SEXTANT-123456
+<U0001CE90> /xf0/x9c/xba/x90 UPPER LEFT ONE SIXTEENTH BLOCK
+<U0001CE91> /xf0/x9c/xba/x91 UPPER CENTRE LEFT ONE SIXTEENTH BLOCK
+<U0001CE92> /xf0/x9c/xba/x92 UPPER CENTRE RIGHT ONE SIXTEENTH BLOCK
+<U0001CE93> /xf0/x9c/xba/x93 UPPER RIGHT ONE SIXTEENTH BLOCK
+<U0001CE94> /xf0/x9c/xba/x94 UPPER MIDDLE LEFT ONE SIXTEENTH BLOCK
+<U0001CE95> /xf0/x9c/xba/x95 UPPER MIDDLE CENTRE LEFT ONE SIXTEENTH BLOCK
+<U0001CE96> /xf0/x9c/xba/x96 UPPER MIDDLE CENTRE RIGHT ONE SIXTEENTH BLOCK
+<U0001CE97> /xf0/x9c/xba/x97 UPPER MIDDLE RIGHT ONE SIXTEENTH BLOCK
+<U0001CE98> /xf0/x9c/xba/x98 LOWER MIDDLE LEFT ONE SIXTEENTH BLOCK
+<U0001CE99> /xf0/x9c/xba/x99 LOWER MIDDLE CENTRE LEFT ONE SIXTEENTH BLOCK
+<U0001CE9A> /xf0/x9c/xba/x9a LOWER MIDDLE CENTRE RIGHT ONE SIXTEENTH BLOCK
+<U0001CE9B> /xf0/x9c/xba/x9b LOWER MIDDLE RIGHT ONE SIXTEENTH BLOCK
+<U0001CE9C> /xf0/x9c/xba/x9c LOWER LEFT ONE SIXTEENTH BLOCK
+<U0001CE9D> /xf0/x9c/xba/x9d LOWER CENTRE LEFT ONE SIXTEENTH BLOCK
+<U0001CE9E> /xf0/x9c/xba/x9e LOWER CENTRE RIGHT ONE SIXTEENTH BLOCK
+<U0001CE9F> /xf0/x9c/xba/x9f LOWER RIGHT ONE SIXTEENTH BLOCK
+<U0001CEA0> /xf0/x9c/xba/xa0 RIGHT HALF LOWER ONE QUARTER BLOCK
+<U0001CEA1> /xf0/x9c/xba/xa1 RIGHT THREE QUARTERS LOWER ONE QUARTER BLOCK
+<U0001CEA2> /xf0/x9c/xba/xa2 LEFT THREE QUARTERS LOWER ONE QUARTER BLOCK
+<U0001CEA3> /xf0/x9c/xba/xa3 LEFT HALF LOWER ONE QUARTER BLOCK
+<U0001CEA4> /xf0/x9c/xba/xa4 LOWER HALF LEFT ONE QUARTER BLOCK
+<U0001CEA5> /xf0/x9c/xba/xa5 LOWER THREE QUARTERS LEFT ONE QUARTER BLOCK
+<U0001CEA6> /xf0/x9c/xba/xa6 UPPER THREE QUARTERS LEFT ONE QUARTER BLOCK
+<U0001CEA7> /xf0/x9c/xba/xa7 UPPER HALF LEFT ONE QUARTER BLOCK
+<U0001CEA8> /xf0/x9c/xba/xa8 LEFT HALF UPPER ONE QUARTER BLOCK
+<U0001CEA9> /xf0/x9c/xba/xa9 LEFT THREE QUARTERS UPPER ONE QUARTER BLOCK
+<U0001CEAA> /xf0/x9c/xba/xaa RIGHT THREE QUARTERS UPPER ONE QUARTER BLOCK
+<U0001CEAB> /xf0/x9c/xba/xab RIGHT HALF UPPER ONE QUARTER BLOCK
+<U0001CEAC> /xf0/x9c/xba/xac UPPER HALF RIGHT ONE QUARTER BLOCK
+<U0001CEAD> /xf0/x9c/xba/xad UPPER THREE QUARTERS RIGHT ONE QUARTER BLOCK
+<U0001CEAE> /xf0/x9c/xba/xae LOWER THREE QUARTERS RIGHT ONE QUARTER BLOCK
+<U0001CEAF> /xf0/x9c/xba/xaf LOWER HALF RIGHT ONE QUARTER BLOCK
+<U0001CEB0> /xf0/x9c/xba/xb0 HORIZONTAL ZIGZAG LINE
+<U0001CEB1> /xf0/x9c/xba/xb1 KEYHOLE
+<U0001CEB2> /xf0/x9c/xba/xb2 OLD PERSONAL COMPUTER WITH MONITOR IN PORTRAIT ORIENTATION
+<U0001CEB3> /xf0/x9c/xba/xb3 BLACK RIGHT TRIANGLE CARET
<U0001CF00> /xf0/x9c/xbc/x80 ZNAMENNY COMBINING MARK GORAZDO NIZKO S KRYZHEM ON LEFT
<U0001CF01> /xf0/x9c/xbc/x81 ZNAMENNY COMBINING MARK NIZKO S KRYZHEM ON LEFT
<U0001CF02> /xf0/x9c/xbc/x82 ZNAMENNY COMBINING MARK TSATA ON LEFT
@@ -42672,6 +47757,50 @@ CHARMAP
<U0001E4F7> /xf0/x9e/x93/xb7 NAG MUNDARI DIGIT SEVEN
<U0001E4F8> /xf0/x9e/x93/xb8 NAG MUNDARI DIGIT EIGHT
<U0001E4F9> /xf0/x9e/x93/xb9 NAG MUNDARI DIGIT NINE
+<U0001E5D0> /xf0/x9e/x97/x90 OL ONAL LETTER O
+<U0001E5D1> /xf0/x9e/x97/x91 OL ONAL LETTER OM
+<U0001E5D2> /xf0/x9e/x97/x92 OL ONAL LETTER ONG
+<U0001E5D3> /xf0/x9e/x97/x93 OL ONAL LETTER ORR
+<U0001E5D4> /xf0/x9e/x97/x94 OL ONAL LETTER OO
+<U0001E5D5> /xf0/x9e/x97/x95 OL ONAL LETTER OY
+<U0001E5D6> /xf0/x9e/x97/x96 OL ONAL LETTER A
+<U0001E5D7> /xf0/x9e/x97/x97 OL ONAL LETTER AD
+<U0001E5D8> /xf0/x9e/x97/x98 OL ONAL LETTER AB
+<U0001E5D9> /xf0/x9e/x97/x99 OL ONAL LETTER AH
+<U0001E5DA> /xf0/x9e/x97/x9a OL ONAL LETTER AL
+<U0001E5DB> /xf0/x9e/x97/x9b OL ONAL LETTER AW
+<U0001E5DC> /xf0/x9e/x97/x9c OL ONAL LETTER I
+<U0001E5DD> /xf0/x9e/x97/x9d OL ONAL LETTER IT
+<U0001E5DE> /xf0/x9e/x97/x9e OL ONAL LETTER IP
+<U0001E5DF> /xf0/x9e/x97/x9f OL ONAL LETTER ITT
+<U0001E5E0> /xf0/x9e/x97/xa0 OL ONAL LETTER ID
+<U0001E5E1> /xf0/x9e/x97/xa1 OL ONAL LETTER IN
+<U0001E5E2> /xf0/x9e/x97/xa2 OL ONAL LETTER U
+<U0001E5E3> /xf0/x9e/x97/xa3 OL ONAL LETTER UK
+<U0001E5E4> /xf0/x9e/x97/xa4 OL ONAL LETTER UDD
+<U0001E5E5> /xf0/x9e/x97/xa5 OL ONAL LETTER UJ
+<U0001E5E6> /xf0/x9e/x97/xa6 OL ONAL LETTER UNY
+<U0001E5E7> /xf0/x9e/x97/xa7 OL ONAL LETTER UR
+<U0001E5E8> /xf0/x9e/x97/xa8 OL ONAL LETTER E
+<U0001E5E9> /xf0/x9e/x97/xa9 OL ONAL LETTER ES
+<U0001E5EA> /xf0/x9e/x97/xaa OL ONAL LETTER EH
+<U0001E5EB> /xf0/x9e/x97/xab OL ONAL LETTER EC
+<U0001E5EC> /xf0/x9e/x97/xac OL ONAL LETTER ENN
+<U0001E5ED> /xf0/x9e/x97/xad OL ONAL LETTER EG
+<U0001E5EE> /xf0/x9e/x97/xae OL ONAL SIGN MU
+<U0001E5EF> /xf0/x9e/x97/xaf OL ONAL SIGN IKIR
+<U0001E5F0> /xf0/x9e/x97/xb0 OL ONAL SIGN HODDOND
+<U0001E5F1> /xf0/x9e/x97/xb1 OL ONAL DIGIT ZERO
+<U0001E5F2> /xf0/x9e/x97/xb2 OL ONAL DIGIT ONE
+<U0001E5F3> /xf0/x9e/x97/xb3 OL ONAL DIGIT TWO
+<U0001E5F4> /xf0/x9e/x97/xb4 OL ONAL DIGIT THREE
+<U0001E5F5> /xf0/x9e/x97/xb5 OL ONAL DIGIT FOUR
+<U0001E5F6> /xf0/x9e/x97/xb6 OL ONAL DIGIT FIVE
+<U0001E5F7> /xf0/x9e/x97/xb7 OL ONAL DIGIT SIX
+<U0001E5F8> /xf0/x9e/x97/xb8 OL ONAL DIGIT SEVEN
+<U0001E5F9> /xf0/x9e/x97/xb9 OL ONAL DIGIT EIGHT
+<U0001E5FA> /xf0/x9e/x97/xba OL ONAL DIGIT NINE
+<U0001E5FF> /xf0/x9e/x97/xbf OL ONAL ABBREVIATION SIGN
<U0001E7E0> /xf0/x9e/x9f/xa0 ETHIOPIC SYLLABLE HHYA
<U0001E7E1> /xf0/x9e/x9f/xa1 ETHIOPIC SYLLABLE HHYU
<U0001E7E2> /xf0/x9e/x9f/xa2 ETHIOPIC SYLLABLE HHYI
@@ -45154,6 +50283,18 @@ CHARMAP
<U0001F8AD> /xf0/x9f/xa2/xad WHITE ARROW SHAFT WIDTH TWO THIRDS
<U0001F8B0> /xf0/x9f/xa2/xb0 ARROW POINTING UPWARDS THEN NORTH WEST
<U0001F8B1> /xf0/x9f/xa2/xb1 ARROW POINTING RIGHTWARDS THEN CURVING SOUTH WEST
+<U0001F8B2> /xf0/x9f/xa2/xb2 RIGHTWARDS ARROW WITH LOWER HOOK
+<U0001F8B3> /xf0/x9f/xa2/xb3 DOWNWARDS BLACK ARROW TO BAR
+<U0001F8B4> /xf0/x9f/xa2/xb4 NEGATIVE SQUARED LEFTWARDS ARROW
+<U0001F8B5> /xf0/x9f/xa2/xb5 NEGATIVE SQUARED UPWARDS ARROW
+<U0001F8B6> /xf0/x9f/xa2/xb6 NEGATIVE SQUARED RIGHTWARDS ARROW
+<U0001F8B7> /xf0/x9f/xa2/xb7 NEGATIVE SQUARED DOWNWARDS ARROW
+<U0001F8B8> /xf0/x9f/xa2/xb8 NORTH WEST ARROW FROM BAR
+<U0001F8B9> /xf0/x9f/xa2/xb9 NORTH EAST ARROW FROM BAR
+<U0001F8BA> /xf0/x9f/xa2/xba SOUTH EAST ARROW FROM BAR
+<U0001F8BB> /xf0/x9f/xa2/xbb SOUTH WEST ARROW FROM BAR
+<U0001F8C0> /xf0/x9f/xa3/x80 LEFTWARDS ARROW FROM DOWNWARDS ARROW
+<U0001F8C1> /xf0/x9f/xa3/x81 RIGHTWARDS ARROW FROM DOWNWARDS ARROW
<U0001F900> /xf0/x9f/xa4/x80 CIRCLED CROSS FORMEE WITH FOUR DOTS
<U0001F901> /xf0/x9f/xa4/x81 CIRCLED CROSS FORMEE WITH TWO DOTS
<U0001F902> /xf0/x9f/xa4/x82 CIRCLED CROSS FORMEE
@@ -45530,6 +50671,8 @@ CHARMAP
<U0001FA86> /xf0/x9f/xaa/x86 NESTING DOLLS
<U0001FA87> /xf0/x9f/xaa/x87 MARACAS
<U0001FA88> /xf0/x9f/xaa/x88 FLUTE
+<U0001FA89> /xf0/x9f/xaa/x89 HARP
+<U0001FA8F> /xf0/x9f/xaa/x8f SHOVEL
<U0001FA90> /xf0/x9f/xaa/x90 RINGED PLANET
<U0001FA91> /xf0/x9f/xaa/x91 CHAIR
<U0001FA92> /xf0/x9f/xaa/x92 RAZOR
@@ -45576,6 +50719,7 @@ CHARMAP
<U0001FABB> /xf0/x9f/xaa/xbb HYACINTH
<U0001FABC> /xf0/x9f/xaa/xbc JELLYFISH
<U0001FABD> /xf0/x9f/xaa/xbd WING
+<U0001FABE> /xf0/x9f/xaa/xbe LEAFLESS TREE
<U0001FABF> /xf0/x9f/xaa/xbf GOOSE
<U0001FAC0> /xf0/x9f/xab/x80 ANATOMICAL HEART
<U0001FAC1> /xf0/x9f/xab/x81 LUNGS
@@ -45583,6 +50727,7 @@ CHARMAP
<U0001FAC3> /xf0/x9f/xab/x83 PREGNANT MAN
<U0001FAC4> /xf0/x9f/xab/x84 PREGNANT PERSON
<U0001FAC5> /xf0/x9f/xab/x85 PERSON WITH CROWN
+<U0001FAC6> /xf0/x9f/xab/x86 FINGERPRINT
<U0001FACE> /xf0/x9f/xab/x8e MOOSE
<U0001FACF> /xf0/x9f/xab/x8f DONKEY
<U0001FAD0> /xf0/x9f/xab/x90 BLUEBERRIES
@@ -45597,6 +50742,8 @@ CHARMAP
<U0001FAD9> /xf0/x9f/xab/x99 JAR
<U0001FADA> /xf0/x9f/xab/x9a GINGER ROOT
<U0001FADB> /xf0/x9f/xab/x9b PEA POD
+<U0001FADC> /xf0/x9f/xab/x9c ROOT VEGETABLE
+<U0001FADF> /xf0/x9f/xab/x9f SPLATTER
<U0001FAE0> /xf0/x9f/xab/xa0 MELTING FACE
<U0001FAE1> /xf0/x9f/xab/xa1 SALUTING FACE
<U0001FAE2> /xf0/x9f/xab/xa2 FACE WITH OPEN EYES AND HAND OVER MOUTH
@@ -45606,6 +50753,7 @@ CHARMAP
<U0001FAE6> /xf0/x9f/xab/xa6 BITING LIP
<U0001FAE7> /xf0/x9f/xab/xa7 BUBBLES
<U0001FAE8> /xf0/x9f/xab/xa8 SHAKING FACE
+<U0001FAE9> /xf0/x9f/xab/xa9 FACE WITH BAGS UNDER EYES
<U0001FAF0> /xf0/x9f/xab/xb0 HAND WITH INDEX FINGER AND THUMB CROSSED
<U0001FAF1> /xf0/x9f/xab/xb1 RIGHTWARDS HAND
<U0001FAF2> /xf0/x9f/xab/xb2 LEFTWARDS HAND
@@ -45817,6 +50965,43 @@ CHARMAP
<U0001FBC8> /xf0/x9f/xaf/x88 STICK FIGURE LEANING RIGHT
<U0001FBC9> /xf0/x9f/xaf/x89 STICK FIGURE WITH DRESS
<U0001FBCA> /xf0/x9f/xaf/x8a WHITE UP-POINTING CHEVRON
+<U0001FBCB> /xf0/x9f/xaf/x8b WHITE CROSS MARK
+<U0001FBCC> /xf0/x9f/xaf/x8c RAISED SMALL LEFT SQUARE BRACKET
+<U0001FBCD> /xf0/x9f/xaf/x8d BLACK SMALL UP-POINTING CHEVRON
+<U0001FBCE> /xf0/x9f/xaf/x8e LEFT TWO THIRDS BLOCK
+<U0001FBCF> /xf0/x9f/xaf/x8f LEFT ONE THIRD BLOCK
+<U0001FBD0> /xf0/x9f/xaf/x90 BOX DRAWINGS LIGHT DIAGONAL MIDDLE RIGHT TO LOWER LEFT
+<U0001FBD1> /xf0/x9f/xaf/x91 BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO MIDDLE LEFT
+<U0001FBD2> /xf0/x9f/xaf/x92 BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO MIDDLE RIGHT
+<U0001FBD3> /xf0/x9f/xaf/x93 BOX DRAWINGS LIGHT DIAGONAL MIDDLE LEFT TO LOWER RIGHT
+<U0001FBD4> /xf0/x9f/xaf/x94 BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER CENTRE
+<U0001FBD5> /xf0/x9f/xaf/x95 BOX DRAWINGS LIGHT DIAGONAL UPPER CENTRE TO LOWER RIGHT
+<U0001FBD6> /xf0/x9f/xaf/x96 BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER CENTRE
+<U0001FBD7> /xf0/x9f/xaf/x97 BOX DRAWINGS LIGHT DIAGONAL UPPER CENTRE TO LOWER LEFT
+<U0001FBD8> /xf0/x9f/xaf/x98 BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO MIDDLE CENTRE TO UPPER RIGHT
+<U0001FBD9> /xf0/x9f/xaf/x99 BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO MIDDLE CENTRE TO LOWER RIGHT
+<U0001FBDA> /xf0/x9f/xaf/x9a BOX DRAWINGS LIGHT DIAGONAL LOWER LEFT TO MIDDLE CENTRE TO LOWER RIGHT
+<U0001FBDB> /xf0/x9f/xaf/x9b BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO MIDDLE CENTRE TO LOWER LEFT
+<U0001FBDC> /xf0/x9f/xaf/x9c BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER CENTRE TO UPPER RIGHT
+<U0001FBDD> /xf0/x9f/xaf/x9d BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO MIDDLE LEFT TO LOWER RIGHT
+<U0001FBDE> /xf0/x9f/xaf/x9e BOX DRAWINGS LIGHT DIAGONAL LOWER LEFT TO UPPER CENTRE TO LOWER RIGHT
+<U0001FBDF> /xf0/x9f/xaf/x9f BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO MIDDLE RIGHT TO LOWER LEFT
+<U0001FBE0> /xf0/x9f/xaf/xa0 TOP JUSTIFIED LOWER HALF WHITE CIRCLE
+<U0001FBE1> /xf0/x9f/xaf/xa1 RIGHT JUSTIFIED LEFT HALF WHITE CIRCLE
+<U0001FBE2> /xf0/x9f/xaf/xa2 BOTTOM JUSTIFIED UPPER HALF WHITE CIRCLE
+<U0001FBE3> /xf0/x9f/xaf/xa3 LEFT JUSTIFIED RIGHT HALF WHITE CIRCLE
+<U0001FBE4> /xf0/x9f/xaf/xa4 UPPER CENTRE ONE QUARTER BLOCK
+<U0001FBE5> /xf0/x9f/xaf/xa5 LOWER CENTRE ONE QUARTER BLOCK
+<U0001FBE6> /xf0/x9f/xaf/xa6 MIDDLE LEFT ONE QUARTER BLOCK
+<U0001FBE7> /xf0/x9f/xaf/xa7 MIDDLE RIGHT ONE QUARTER BLOCK
+<U0001FBE8> /xf0/x9f/xaf/xa8 TOP JUSTIFIED LOWER HALF BLACK CIRCLE
+<U0001FBE9> /xf0/x9f/xaf/xa9 RIGHT JUSTIFIED LEFT HALF BLACK CIRCLE
+<U0001FBEA> /xf0/x9f/xaf/xaa BOTTOM JUSTIFIED UPPER HALF BLACK CIRCLE
+<U0001FBEB> /xf0/x9f/xaf/xab LEFT JUSTIFIED RIGHT HALF BLACK CIRCLE
+<U0001FBEC> /xf0/x9f/xaf/xac TOP RIGHT JUSTIFIED LOWER LEFT QUARTER BLACK CIRCLE
+<U0001FBED> /xf0/x9f/xaf/xad BOTTOM LEFT JUSTIFIED UPPER RIGHT QUARTER BLACK CIRCLE
+<U0001FBEE> /xf0/x9f/xaf/xae BOTTOM RIGHT JUSTIFIED UPPER LEFT QUARTER BLACK CIRCLE
+<U0001FBEF> /xf0/x9f/xaf/xaf TOP LEFT JUSTIFIED LOWER RIGHT QUARTER BLACK CIRCLE
<U0001FBF0> /xf0/x9f/xaf/xb0 SEGMENTED DIGIT ZERO
<U0001FBF1> /xf0/x9f/xaf/xb1 SEGMENTED DIGIT ONE
<U0001FBF2> /xf0/x9f/xaf/xb2 SEGMENTED DIGIT TWO
@@ -49855,7 +55040,7 @@ CHARMAP
<U0010FFC0>..<U0010FFFD> /xf4/x8f/xbf/x80 <Plane 16 Private Use>
END CHARMAP
-% Character width according to Unicode 15.1.0.
+% Character width according to Unicode 16.0.0.
% Width is determined by the following rules, in order of decreasing precedence:
% - U+00AD SOFT HYPHEN has width 1, as a special case for compatibility (https://archive.is/b5Ck).
% - U+115F HANGUL CHOSEONG FILLER has width 2.
@@ -49903,7 +55088,7 @@ WIDTH
<U0825>...<U0827> 0
<U0829>...<U082D> 0
<U0859>...<U085B> 0
-<U0898>...<U089F> 0
+<U0897>...<U089F> 0
<U08CA>...<U08E1> 0
<U08E3>...<U0902> 0
<U093A> 0
@@ -50057,8 +55242,10 @@ WIDTH
<U23F3> 2
<U25FD>...<U25FE> 2
<U2614>...<U2615> 2
+<U2630>...<U2637> 2
<U2648>...<U2653> 2
<U267F> 2
+<U268A>...<U268F> 2
<U2693> 2
<U26A1> 2
<U26AA>...<U26AB> 2
@@ -50100,7 +55287,7 @@ WIDTH
<U3131>...<U3163> 2
<U3164> 0
<U3165>...<U318E> 2
-<U3190>...<U31E3> 2
+<U3190>...<U31E5> 2
<U31EF>...<U321E> 2
<U3220>...<UA48C> 2
<UA490>...<UA4C6> 2
@@ -50166,8 +55353,9 @@ WIDTH
<U00010A3F> 0
<U00010AE5>...<U00010AE6> 0
<U00010D24>...<U00010D27> 0
+<U00010D69>...<U00010D6D> 0
<U00010EAB>...<U00010EAC> 0
-<U00010EFD>...<U00010EFF> 0
+<U00010EFC>...<U00010EFF> 0
<U00010F46>...<U00010F50> 0
<U00010F82>...<U00010F85> 0
<U00011001> 0
@@ -50198,6 +55386,11 @@ WIDTH
<U00011340> 0
<U00011366>...<U0001136C> 0
<U00011370>...<U00011374> 0
+<U000113BB>...<U000113C0> 0
+<U000113CE> 0
+<U000113D0> 0
+<U000113D2> 0
+<U000113E1>...<U000113E2> 0
<U00011438>...<U0001143F> 0
<U00011442>...<U00011444> 0
<U00011446> 0
@@ -50217,7 +55410,8 @@ WIDTH
<U000116AD> 0
<U000116B0>...<U000116B5> 0
<U000116B7> 0
-<U0001171D>...<U0001171F> 0
+<U0001171D> 0
+<U0001171F> 0
<U00011722>...<U00011725> 0
<U00011727>...<U0001172B> 0
<U0001182F>...<U00011837> 0
@@ -50256,8 +55450,11 @@ WIDTH
<U00011F36>...<U00011F3A> 0
<U00011F40> 0
<U00011F42> 0
+<U00011F5A> 0
<U00013440> 0
<U00013447>...<U00013455> 0
+<U0001611E>...<U00016129> 0
+<U0001612D>...<U0001612F> 0
<U00016AF0>...<U00016AF4> 0
<U00016B30>...<U00016B36> 0
<U00016F4F> 0
@@ -50267,7 +55464,7 @@ WIDTH
<U00016FF0>...<U00016FF1> 2
<U00017000>...<U000187F7> 2
<U00018800>...<U00018CD5> 2
-<U00018D00>...<U00018D08> 2
+<U00018CFF>...<U00018D08> 2
<U0001AFF0>...<U0001AFF3> 2
<U0001AFF5>...<U0001AFFB> 2
<U0001AFFD>...<U0001AFFE> 2
@@ -50286,6 +55483,8 @@ WIDTH
<U0001D185>...<U0001D18B> 0
<U0001D1AA>...<U0001D1AD> 0
<U0001D242>...<U0001D244> 0
+<U0001D300>...<U0001D356> 2
+<U0001D360>...<U0001D376> 2
<U0001DA00>...<U0001DA36> 0
<U0001DA3B>...<U0001DA6C> 0
<U0001DA75> 0
@@ -50302,6 +55501,7 @@ WIDTH
<U0001E2AE> 0
<U0001E2EC>...<U0001E2EF> 0
<U0001E4EC>...<U0001E4EF> 0
+<U0001E5EE>...<U0001E5EF> 0
<U0001E8D0>...<U0001E8D6> 0
<U0001E944>...<U0001E94A> 0
<U0001F004> 2
@@ -50344,11 +55544,10 @@ WIDTH
<U0001F93C>...<U0001F945> 2
<U0001F947>...<U0001F9FF> 2
<U0001FA70>...<U0001FA7C> 2
-<U0001FA80>...<U0001FA88> 2
-<U0001FA90>...<U0001FABD> 2
-<U0001FABF>...<U0001FAC5> 2
-<U0001FACE>...<U0001FADB> 2
-<U0001FAE0>...<U0001FAE8> 2
+<U0001FA80>...<U0001FA89> 2
+<U0001FA8F>...<U0001FAC6> 2
+<U0001FACE>...<U0001FADC> 2
+<U0001FADF>...<U0001FAE9> 2
<U0001FAF0>...<U0001FAF8> 2
<U00020000>...<U0002A6DF> 2
<U0002A700>...<U0002B739> 2
diff --git a/localedata/locales/i18n_ctype b/localedata/locales/i18n_ctype
index f86855c..048d6c7 100644
--- a/localedata/locales/i18n_ctype
+++ b/localedata/locales/i18n_ctype
@@ -26,13 +26,13 @@ fax ""
language ""
territory "Earth"
revision "14.0.0"
-date "2023-09-15"
+date "2024-09-12"
category "i18n:2012";LC_CTYPE
END LC_IDENTIFICATION
LC_CTYPE
% The following is the 14652 i18n fdcc-set LC_CTYPE category.
-% It covers Unicode version 15.1.0.
+% It covers Unicode version 16.0.0.
% The character classes and mapping tables were automatically
% generated using the gen_unicode_ctype.py program.
@@ -74,21 +74,21 @@ upper /
<U0508>;<U050A>;<U050C>;<U050E>;<U0510>;<U0512>;<U0514>;<U0516>;<U0518>;/
<U051A>;<U051C>;<U051E>;<U0520>;<U0522>;<U0524>;<U0526>;<U0528>;<U052A>;/
<U052C>;<U052E>;<U0531>..<U0556>;<U10A0>..<U10C5>;<U10C7>;<U10CD>;/
- <U13A0>..<U13F5>;<U1C90>..<U1CBA>;<U1CBD>..<U1CBF>;<U1E00>;<U1E02>;/
- <U1E04>;<U1E06>;<U1E08>;<U1E0A>;<U1E0C>;<U1E0E>;<U1E10>;<U1E12>;<U1E14>;/
- <U1E16>;<U1E18>;<U1E1A>;<U1E1C>;<U1E1E>;<U1E20>;<U1E22>;<U1E24>;<U1E26>;/
- <U1E28>;<U1E2A>;<U1E2C>;<U1E2E>;<U1E30>;<U1E32>;<U1E34>;<U1E36>;<U1E38>;/
- <U1E3A>;<U1E3C>;<U1E3E>;<U1E40>;<U1E42>;<U1E44>;<U1E46>;<U1E48>;<U1E4A>;/
- <U1E4C>;<U1E4E>;<U1E50>;<U1E52>;<U1E54>;<U1E56>;<U1E58>;<U1E5A>;<U1E5C>;/
- <U1E5E>;<U1E60>;<U1E62>;<U1E64>;<U1E66>;<U1E68>;<U1E6A>;<U1E6C>;<U1E6E>;/
- <U1E70>;<U1E72>;<U1E74>;<U1E76>;<U1E78>;<U1E7A>;<U1E7C>;<U1E7E>;<U1E80>;/
- <U1E82>;<U1E84>;<U1E86>;<U1E88>;<U1E8A>;<U1E8C>;<U1E8E>;<U1E90>;<U1E92>;/
- <U1E94>;<U1E9E>;<U1EA0>;<U1EA2>;<U1EA4>;<U1EA6>;<U1EA8>;<U1EAA>;<U1EAC>;/
- <U1EAE>;<U1EB0>;<U1EB2>;<U1EB4>;<U1EB6>;<U1EB8>;<U1EBA>;<U1EBC>;<U1EBE>;/
- <U1EC0>;<U1EC2>;<U1EC4>;<U1EC6>;<U1EC8>;<U1ECA>;<U1ECC>;<U1ECE>;<U1ED0>;/
- <U1ED2>;<U1ED4>;<U1ED6>;<U1ED8>;<U1EDA>;<U1EDC>;<U1EDE>;<U1EE0>;<U1EE2>;/
- <U1EE4>;<U1EE6>;<U1EE8>;<U1EEA>;<U1EEC>;<U1EEE>;<U1EF0>;<U1EF2>;<U1EF4>;/
- <U1EF6>;<U1EF8>;<U1EFA>;<U1EFC>;<U1EFE>;<U1F08>..<U1F0F>;/
+ <U13A0>..<U13F5>;<U1C89>;<U1C90>..<U1CBA>;<U1CBD>..<U1CBF>;<U1E00>;/
+ <U1E02>;<U1E04>;<U1E06>;<U1E08>;<U1E0A>;<U1E0C>;<U1E0E>;<U1E10>;<U1E12>;/
+ <U1E14>;<U1E16>;<U1E18>;<U1E1A>;<U1E1C>;<U1E1E>;<U1E20>;<U1E22>;<U1E24>;/
+ <U1E26>;<U1E28>;<U1E2A>;<U1E2C>;<U1E2E>;<U1E30>;<U1E32>;<U1E34>;<U1E36>;/
+ <U1E38>;<U1E3A>;<U1E3C>;<U1E3E>;<U1E40>;<U1E42>;<U1E44>;<U1E46>;<U1E48>;/
+ <U1E4A>;<U1E4C>;<U1E4E>;<U1E50>;<U1E52>;<U1E54>;<U1E56>;<U1E58>;<U1E5A>;/
+ <U1E5C>;<U1E5E>;<U1E60>;<U1E62>;<U1E64>;<U1E66>;<U1E68>;<U1E6A>;<U1E6C>;/
+ <U1E6E>;<U1E70>;<U1E72>;<U1E74>;<U1E76>;<U1E78>;<U1E7A>;<U1E7C>;<U1E7E>;/
+ <U1E80>;<U1E82>;<U1E84>;<U1E86>;<U1E88>;<U1E8A>;<U1E8C>;<U1E8E>;<U1E90>;/
+ <U1E92>;<U1E94>;<U1E9E>;<U1EA0>;<U1EA2>;<U1EA4>;<U1EA6>;<U1EA8>;<U1EAA>;/
+ <U1EAC>;<U1EAE>;<U1EB0>;<U1EB2>;<U1EB4>;<U1EB6>;<U1EB8>;<U1EBA>;<U1EBC>;/
+ <U1EBE>;<U1EC0>;<U1EC2>;<U1EC4>;<U1EC6>;<U1EC8>;<U1ECA>;<U1ECC>;<U1ECE>;/
+ <U1ED0>;<U1ED2>;<U1ED4>;<U1ED6>;<U1ED8>;<U1EDA>;<U1EDC>;<U1EDE>;<U1EE0>;/
+ <U1EE2>;<U1EE4>;<U1EE6>;<U1EE8>;<U1EEA>;<U1EEC>;<U1EEE>;<U1EF0>;<U1EF2>;/
+ <U1EF4>;<U1EF6>;<U1EF8>;<U1EFA>;<U1EFC>;<U1EFE>;<U1F08>..<U1F0F>;/
<U1F18>..<U1F1D>;<U1F28>..<U1F2F>;<U1F38>..<U1F3F>;<U1F48>..<U1F4D>;/
<U1F59>;<U1F5B>;<U1F5D>;<U1F5F>;<U1F68>..<U1F6F>;<U1F88>..<U1F8F>;/
<U1F98>..<U1F9F>;<U1FA8>..<U1FAF>;<U1FB8>..<U1FBC>;<U1FC8>..<U1FCC>;/
@@ -115,11 +115,12 @@ upper /
<UA780>;<UA782>;<UA784>;<UA786>;<UA78B>;<UA78D>;<UA790>;<UA792>;<UA796>;/
<UA798>;<UA79A>;<UA79C>;<UA79E>;<UA7A0>;<UA7A2>;<UA7A4>;<UA7A6>;<UA7A8>;/
<UA7AA>..<UA7AE>;<UA7B0>..<UA7B4>;<UA7B6>;<UA7B8>;<UA7BA>;<UA7BC>;/
- <UA7BE>;<UA7C0>;<UA7C2>;<UA7C4>..<UA7C7>;<UA7C9>;<UA7D0>;<UA7D6>;<UA7D8>;/
- <UA7F5>;<UFF21>..<UFF3A>;<U00010400>..<U00010427>;/
- <U000104B0>..<U000104D3>;<U00010570>..<U0001057A>;/
- <U0001057C>..<U0001058A>;<U0001058C>..<U00010592>;/
- <U00010594>..<U00010595>;<U00010C80>..<U00010CB2>;/
+ <UA7BE>;<UA7C0>;<UA7C2>;<UA7C4>..<UA7C7>;<UA7C9>;<UA7CB>..<UA7CC>;/
+ <UA7D0>;<UA7D6>;<UA7D8>;<UA7DA>;<UA7DC>;<UA7F5>;<UFF21>..<UFF3A>;/
+ <U00010400>..<U00010427>;<U000104B0>..<U000104D3>;/
+ <U00010570>..<U0001057A>;<U0001057C>..<U0001058A>;/
+ <U0001058C>..<U00010592>;<U00010594>..<U00010595>;/
+ <U00010C80>..<U00010CB2>;<U00010D50>..<U00010D65>;/
<U000118A0>..<U000118BF>;<U00016E40>..<U00016E5F>;/
<U0001D400>..<U0001D419>;<U0001D434>..<U0001D44D>;/
<U0001D468>..<U0001D481>;<U0001D49C>;<U0001D49E>..<U0001D49F>;/
@@ -176,57 +177,58 @@ lower /
<U0507>;<U0509>;<U050B>;<U050D>;<U050F>;<U0511>;<U0513>;<U0515>;<U0517>;/
<U0519>;<U051B>;<U051D>;<U051F>;<U0521>;<U0523>;<U0525>;<U0527>;<U0529>;/
<U052B>;<U052D>;<U052F>;<U0560>..<U0588>;<U10D0>..<U10FA>;/
- <U10FC>..<U10FF>;<U13F8>..<U13FD>;<U1C80>..<U1C88>;<U1D00>..<U1DBF>;/
- <U1E01>;<U1E03>;<U1E05>;<U1E07>;<U1E09>;<U1E0B>;<U1E0D>;<U1E0F>;<U1E11>;/
- <U1E13>;<U1E15>;<U1E17>;<U1E19>;<U1E1B>;<U1E1D>;<U1E1F>;<U1E21>;<U1E23>;/
- <U1E25>;<U1E27>;<U1E29>;<U1E2B>;<U1E2D>;<U1E2F>;<U1E31>;<U1E33>;<U1E35>;/
- <U1E37>;<U1E39>;<U1E3B>;<U1E3D>;<U1E3F>;<U1E41>;<U1E43>;<U1E45>;<U1E47>;/
- <U1E49>;<U1E4B>;<U1E4D>;<U1E4F>;<U1E51>;<U1E53>;<U1E55>;<U1E57>;<U1E59>;/
- <U1E5B>;<U1E5D>;<U1E5F>;<U1E61>;<U1E63>;<U1E65>;<U1E67>;<U1E69>;<U1E6B>;/
- <U1E6D>;<U1E6F>;<U1E71>;<U1E73>;<U1E75>;<U1E77>;<U1E79>;<U1E7B>;<U1E7D>;/
- <U1E7F>;<U1E81>;<U1E83>;<U1E85>;<U1E87>;<U1E89>;<U1E8B>;<U1E8D>;<U1E8F>;/
- <U1E91>;<U1E93>;<U1E95>..<U1E9D>;<U1E9F>;<U1EA1>;<U1EA3>;<U1EA5>;<U1EA7>;/
- <U1EA9>;<U1EAB>;<U1EAD>;<U1EAF>;<U1EB1>;<U1EB3>;<U1EB5>;<U1EB7>;<U1EB9>;/
- <U1EBB>;<U1EBD>;<U1EBF>;<U1EC1>;<U1EC3>;<U1EC5>;<U1EC7>;<U1EC9>;<U1ECB>;/
- <U1ECD>;<U1ECF>;<U1ED1>;<U1ED3>;<U1ED5>;<U1ED7>;<U1ED9>;<U1EDB>;<U1EDD>;/
- <U1EDF>;<U1EE1>;<U1EE3>;<U1EE5>;<U1EE7>;<U1EE9>;<U1EEB>;<U1EED>;<U1EEF>;/
- <U1EF1>;<U1EF3>;<U1EF5>;<U1EF7>;<U1EF9>;<U1EFB>;<U1EFD>;<U1EFF>..<U1F07>;/
- <U1F10>..<U1F15>;<U1F20>..<U1F27>;<U1F30>..<U1F37>;<U1F40>..<U1F45>;/
- <U1F50>..<U1F57>;<U1F60>..<U1F67>;<U1F70>..<U1F7D>;<U1F80>..<U1F87>;/
- <U1F90>..<U1F97>;<U1FA0>..<U1FA7>;<U1FB0>..<U1FB4>;<U1FB6>..<U1FB7>;/
- <U1FBE>;<U1FC2>..<U1FC4>;<U1FC6>..<U1FC7>;<U1FD0>..<U1FD3>;/
- <U1FD6>..<U1FD7>;<U1FE0>..<U1FE7>;<U1FF2>..<U1FF4>;<U1FF6>..<U1FF7>;/
- <U2071>;<U207F>;<U2090>..<U209C>;<U210A>;<U210E>..<U210F>;<U2113>;/
- <U212F>;<U2134>;<U2139>;<U213C>..<U213D>;<U2146>..<U2149>;<U214E>;/
- <U2170>..<U217F>;<U2184>;<U24D0>..<U24E9>;<U2C30>..<U2C5F>;<U2C61>;/
- <U2C65>..<U2C66>;<U2C68>;<U2C6A>;<U2C6C>;<U2C71>;<U2C73>..<U2C74>;/
- <U2C76>..<U2C7D>;<U2C81>;<U2C83>;<U2C85>;<U2C87>;<U2C89>;<U2C8B>;<U2C8D>;/
- <U2C8F>;<U2C91>;<U2C93>;<U2C95>;<U2C97>;<U2C99>;<U2C9B>;<U2C9D>;<U2C9F>;/
- <U2CA1>;<U2CA3>;<U2CA5>;<U2CA7>;<U2CA9>;<U2CAB>;<U2CAD>;<U2CAF>;<U2CB1>;/
- <U2CB3>;<U2CB5>;<U2CB7>;<U2CB9>;<U2CBB>;<U2CBD>;<U2CBF>;<U2CC1>;<U2CC3>;/
- <U2CC5>;<U2CC7>;<U2CC9>;<U2CCB>;<U2CCD>;<U2CCF>;<U2CD1>;<U2CD3>;<U2CD5>;/
- <U2CD7>;<U2CD9>;<U2CDB>;<U2CDD>;<U2CDF>;<U2CE1>;<U2CE3>..<U2CE4>;<U2CEC>;/
- <U2CEE>;<U2CF3>;<U2D00>..<U2D25>;<U2D27>;<U2D2D>;<UA641>;<UA643>;<UA645>;/
- <UA647>;<UA649>;<UA64B>;<UA64D>;<UA64F>;<UA651>;<UA653>;<UA655>;<UA657>;/
- <UA659>;<UA65B>;<UA65D>;<UA65F>;<UA661>;<UA663>;<UA665>;<UA667>;<UA669>;/
- <UA66B>;<UA66D>;<UA681>;<UA683>;<UA685>;<UA687>;<UA689>;<UA68B>;<UA68D>;/
- <UA68F>;<UA691>;<UA693>;<UA695>;<UA697>;<UA699>;<UA69B>..<UA69D>;<UA723>;/
- <UA725>;<UA727>;<UA729>;<UA72B>;<UA72D>;<UA72F>..<UA731>;<UA733>;<UA735>;/
- <UA737>;<UA739>;<UA73B>;<UA73D>;<UA73F>;<UA741>;<UA743>;<UA745>;<UA747>;/
- <UA749>;<UA74B>;<UA74D>;<UA74F>;<UA751>;<UA753>;<UA755>;<UA757>;<UA759>;/
- <UA75B>;<UA75D>;<UA75F>;<UA761>;<UA763>;<UA765>;<UA767>;<UA769>;<UA76B>;/
- <UA76D>;<UA76F>..<UA778>;<UA77A>;<UA77C>;<UA77F>;<UA781>;<UA783>;<UA785>;/
- <UA787>;<UA78C>;<UA78E>;<UA791>;<UA793>..<UA795>;<UA797>;<UA799>;<UA79B>;/
- <UA79D>;<UA79F>;<UA7A1>;<UA7A3>;<UA7A5>;<UA7A7>;<UA7A9>;<UA7AF>;<UA7B5>;/
- <UA7B7>;<UA7B9>;<UA7BB>;<UA7BD>;<UA7BF>;<UA7C1>;<UA7C3>;<UA7C8>;<UA7CA>;/
- <UA7D1>;<UA7D3>;<UA7D5>;<UA7D7>;<UA7D9>;<UA7F2>..<UA7F4>;<UA7F6>;/
- <UA7F8>..<UA7FA>;<UAB30>..<UAB5A>;<UAB5C>..<UAB69>;<UAB70>..<UABBF>;/
- <UFB00>..<UFB06>;<UFB13>..<UFB17>;<UFF41>..<UFF5A>;/
- <U00010428>..<U0001044F>;<U000104D8>..<U000104FB>;/
- <U00010597>..<U000105A1>;<U000105A3>..<U000105B1>;/
- <U000105B3>..<U000105B9>;<U000105BB>..<U000105BC>;<U00010780>;/
- <U00010783>..<U00010785>;<U00010787>..<U000107B0>;/
- <U000107B2>..<U000107BA>;<U00010CC0>..<U00010CF2>;/
+ <U10FC>..<U10FF>;<U13F8>..<U13FD>;<U1C80>..<U1C88>;<U1C8A>;/
+ <U1D00>..<U1DBF>;<U1E01>;<U1E03>;<U1E05>;<U1E07>;<U1E09>;<U1E0B>;<U1E0D>;/
+ <U1E0F>;<U1E11>;<U1E13>;<U1E15>;<U1E17>;<U1E19>;<U1E1B>;<U1E1D>;<U1E1F>;/
+ <U1E21>;<U1E23>;<U1E25>;<U1E27>;<U1E29>;<U1E2B>;<U1E2D>;<U1E2F>;<U1E31>;/
+ <U1E33>;<U1E35>;<U1E37>;<U1E39>;<U1E3B>;<U1E3D>;<U1E3F>;<U1E41>;<U1E43>;/
+ <U1E45>;<U1E47>;<U1E49>;<U1E4B>;<U1E4D>;<U1E4F>;<U1E51>;<U1E53>;<U1E55>;/
+ <U1E57>;<U1E59>;<U1E5B>;<U1E5D>;<U1E5F>;<U1E61>;<U1E63>;<U1E65>;<U1E67>;/
+ <U1E69>;<U1E6B>;<U1E6D>;<U1E6F>;<U1E71>;<U1E73>;<U1E75>;<U1E77>;<U1E79>;/
+ <U1E7B>;<U1E7D>;<U1E7F>;<U1E81>;<U1E83>;<U1E85>;<U1E87>;<U1E89>;<U1E8B>;/
+ <U1E8D>;<U1E8F>;<U1E91>;<U1E93>;<U1E95>..<U1E9D>;<U1E9F>;<U1EA1>;<U1EA3>;/
+ <U1EA5>;<U1EA7>;<U1EA9>;<U1EAB>;<U1EAD>;<U1EAF>;<U1EB1>;<U1EB3>;<U1EB5>;/
+ <U1EB7>;<U1EB9>;<U1EBB>;<U1EBD>;<U1EBF>;<U1EC1>;<U1EC3>;<U1EC5>;<U1EC7>;/
+ <U1EC9>;<U1ECB>;<U1ECD>;<U1ECF>;<U1ED1>;<U1ED3>;<U1ED5>;<U1ED7>;<U1ED9>;/
+ <U1EDB>;<U1EDD>;<U1EDF>;<U1EE1>;<U1EE3>;<U1EE5>;<U1EE7>;<U1EE9>;<U1EEB>;/
+ <U1EED>;<U1EEF>;<U1EF1>;<U1EF3>;<U1EF5>;<U1EF7>;<U1EF9>;<U1EFB>;<U1EFD>;/
+ <U1EFF>..<U1F07>;<U1F10>..<U1F15>;<U1F20>..<U1F27>;<U1F30>..<U1F37>;/
+ <U1F40>..<U1F45>;<U1F50>..<U1F57>;<U1F60>..<U1F67>;<U1F70>..<U1F7D>;/
+ <U1F80>..<U1F87>;<U1F90>..<U1F97>;<U1FA0>..<U1FA7>;<U1FB0>..<U1FB4>;/
+ <U1FB6>..<U1FB7>;<U1FBE>;<U1FC2>..<U1FC4>;<U1FC6>..<U1FC7>;/
+ <U1FD0>..<U1FD3>;<U1FD6>..<U1FD7>;<U1FE0>..<U1FE7>;<U1FF2>..<U1FF4>;/
+ <U1FF6>..<U1FF7>;<U2071>;<U207F>;<U2090>..<U209C>;<U210A>;/
+ <U210E>..<U210F>;<U2113>;<U212F>;<U2134>;<U2139>;<U213C>..<U213D>;/
+ <U2146>..<U2149>;<U214E>;<U2170>..<U217F>;<U2184>;<U24D0>..<U24E9>;/
+ <U2C30>..<U2C5F>;<U2C61>;<U2C65>..<U2C66>;<U2C68>;<U2C6A>;<U2C6C>;/
+ <U2C71>;<U2C73>..<U2C74>;<U2C76>..<U2C7D>;<U2C81>;<U2C83>;<U2C85>;/
+ <U2C87>;<U2C89>;<U2C8B>;<U2C8D>;<U2C8F>;<U2C91>;<U2C93>;<U2C95>;<U2C97>;/
+ <U2C99>;<U2C9B>;<U2C9D>;<U2C9F>;<U2CA1>;<U2CA3>;<U2CA5>;<U2CA7>;<U2CA9>;/
+ <U2CAB>;<U2CAD>;<U2CAF>;<U2CB1>;<U2CB3>;<U2CB5>;<U2CB7>;<U2CB9>;<U2CBB>;/
+ <U2CBD>;<U2CBF>;<U2CC1>;<U2CC3>;<U2CC5>;<U2CC7>;<U2CC9>;<U2CCB>;<U2CCD>;/
+ <U2CCF>;<U2CD1>;<U2CD3>;<U2CD5>;<U2CD7>;<U2CD9>;<U2CDB>;<U2CDD>;<U2CDF>;/
+ <U2CE1>;<U2CE3>..<U2CE4>;<U2CEC>;<U2CEE>;<U2CF3>;<U2D00>..<U2D25>;/
+ <U2D27>;<U2D2D>;<UA641>;<UA643>;<UA645>;<UA647>;<UA649>;<UA64B>;<UA64D>;/
+ <UA64F>;<UA651>;<UA653>;<UA655>;<UA657>;<UA659>;<UA65B>;<UA65D>;<UA65F>;/
+ <UA661>;<UA663>;<UA665>;<UA667>;<UA669>;<UA66B>;<UA66D>;<UA681>;<UA683>;/
+ <UA685>;<UA687>;<UA689>;<UA68B>;<UA68D>;<UA68F>;<UA691>;<UA693>;<UA695>;/
+ <UA697>;<UA699>;<UA69B>..<UA69D>;<UA723>;<UA725>;<UA727>;<UA729>;<UA72B>;/
+ <UA72D>;<UA72F>..<UA731>;<UA733>;<UA735>;<UA737>;<UA739>;<UA73B>;<UA73D>;/
+ <UA73F>;<UA741>;<UA743>;<UA745>;<UA747>;<UA749>;<UA74B>;<UA74D>;<UA74F>;/
+ <UA751>;<UA753>;<UA755>;<UA757>;<UA759>;<UA75B>;<UA75D>;<UA75F>;<UA761>;/
+ <UA763>;<UA765>;<UA767>;<UA769>;<UA76B>;<UA76D>;<UA76F>..<UA778>;<UA77A>;/
+ <UA77C>;<UA77F>;<UA781>;<UA783>;<UA785>;<UA787>;<UA78C>;<UA78E>;<UA791>;/
+ <UA793>..<UA795>;<UA797>;<UA799>;<UA79B>;<UA79D>;<UA79F>;<UA7A1>;<UA7A3>;/
+ <UA7A5>;<UA7A7>;<UA7A9>;<UA7AF>;<UA7B5>;<UA7B7>;<UA7B9>;<UA7BB>;<UA7BD>;/
+ <UA7BF>;<UA7C1>;<UA7C3>;<UA7C8>;<UA7CA>;<UA7CD>;<UA7D1>;<UA7D3>;<UA7D5>;/
+ <UA7D7>;<UA7D9>;<UA7DB>;<UA7F2>..<UA7F4>;<UA7F6>;<UA7F8>..<UA7FA>;/
+ <UAB30>..<UAB5A>;<UAB5C>..<UAB69>;<UAB70>..<UABBF>;<UFB00>..<UFB06>;/
+ <UFB13>..<UFB17>;<UFF41>..<UFF5A>;<U00010428>..<U0001044F>;/
+ <U000104D8>..<U000104FB>;<U00010597>..<U000105A1>;/
+ <U000105A3>..<U000105B1>;<U000105B3>..<U000105B9>;/
+ <U000105BB>..<U000105BC>;<U00010780>;<U00010783>..<U00010785>;/
+ <U00010787>..<U000107B0>;<U000107B2>..<U000107BA>;/
+ <U00010CC0>..<U00010CF2>;<U00010D70>..<U00010D85>;/
<U000118C0>..<U000118DF>;<U00016E60>..<U00016E7F>;/
<U0001D41A>..<U0001D433>;<U0001D44E>..<U0001D454>;/
<U0001D456>..<U0001D467>;<U0001D482>..<U0001D49B>;/
@@ -250,7 +252,7 @@ lower /
alpha /
<U0041>..<U005A>;<U0061>..<U007A>;<U00AA>;<U00B5>;<U00BA>;/
<U00C0>..<U00D6>;<U00D8>..<U00F6>;<U00F8>..<U02C1>;<U02C6>..<U02D1>;/
- <U02E0>..<U02E4>;<U02EC>;<U02EE>;<U0345>;<U0370>..<U0374>;/
+ <U02E0>..<U02E4>;<U02EC>;<U02EE>;<U0345>;<U0363>..<U0374>;/
<U0376>..<U0377>;<U037A>..<U037D>;<U037F>;<U0386>;<U0388>..<U038A>;/
<U038C>;<U038E>..<U03A1>;<U03A3>..<U03F5>;<U03F7>..<U0481>;/
<U048A>..<U052F>;<U0531>..<U0556>;<U0559>;<U0560>..<U0588>;/
@@ -260,16 +262,16 @@ alpha /
<U06ED>..<U06FC>;<U06FF>;<U0710>..<U073F>;<U074D>..<U07B1>;/
<U07C0>..<U07EA>;<U07F4>..<U07F5>;<U07FA>;<U0800>..<U0817>;/
<U081A>..<U082C>;<U0840>..<U0858>;<U0860>..<U086A>;<U0870>..<U0887>;/
- <U0889>..<U088E>;<U08A0>..<U08C9>;<U08D4>..<U08DF>;<U08E3>..<U08E9>;/
- <U08F0>..<U093B>;<U093D>..<U094C>;<U094E>..<U0950>;<U0955>..<U0963>;/
- <U0966>..<U096F>;<U0971>..<U0983>;<U0985>..<U098C>;<U098F>..<U0990>;/
- <U0993>..<U09A8>;<U09AA>..<U09B0>;<U09B2>;<U09B6>..<U09B9>;/
- <U09BD>..<U09C4>;<U09C7>..<U09C8>;<U09CB>..<U09CC>;<U09CE>;<U09D7>;/
- <U09DC>..<U09DD>;<U09DF>..<U09E3>;<U09E6>..<U09F1>;<U09FC>;/
- <U0A01>..<U0A03>;<U0A05>..<U0A0A>;<U0A0F>..<U0A10>;<U0A13>..<U0A28>;/
- <U0A2A>..<U0A30>;<U0A32>..<U0A33>;<U0A35>..<U0A36>;<U0A38>..<U0A39>;/
- <U0A3E>..<U0A42>;<U0A47>..<U0A48>;<U0A4B>..<U0A4C>;<U0A51>;/
- <U0A59>..<U0A5C>;<U0A5E>;<U0A66>..<U0A75>;<U0A81>..<U0A83>;/
+ <U0889>..<U088E>;<U0897>;<U08A0>..<U08C9>;<U08D4>..<U08DF>;/
+ <U08E3>..<U08E9>;<U08F0>..<U093B>;<U093D>..<U094C>;<U094E>..<U0950>;/
+ <U0955>..<U0963>;<U0966>..<U096F>;<U0971>..<U0983>;<U0985>..<U098C>;/
+ <U098F>..<U0990>;<U0993>..<U09A8>;<U09AA>..<U09B0>;<U09B2>;/
+ <U09B6>..<U09B9>;<U09BD>..<U09C4>;<U09C7>..<U09C8>;<U09CB>..<U09CC>;/
+ <U09CE>;<U09D7>;<U09DC>..<U09DD>;<U09DF>..<U09E3>;<U09E6>..<U09F1>;/
+ <U09FC>;<U0A01>..<U0A03>;<U0A05>..<U0A0A>;<U0A0F>..<U0A10>;/
+ <U0A13>..<U0A28>;<U0A2A>..<U0A30>;<U0A32>..<U0A33>;<U0A35>..<U0A36>;/
+ <U0A38>..<U0A39>;<U0A3E>..<U0A42>;<U0A47>..<U0A48>;<U0A4B>..<U0A4C>;/
+ <U0A51>;<U0A59>..<U0A5C>;<U0A5E>;<U0A66>..<U0A75>;<U0A81>..<U0A83>;/
<U0A85>..<U0A8D>;<U0A8F>..<U0A91>;<U0A93>..<U0AA8>;<U0AAA>..<U0AB0>;/
<U0AB2>..<U0AB3>;<U0AB5>..<U0AB9>;<U0ABD>..<U0AC5>;<U0AC7>..<U0AC9>;/
<U0ACB>..<U0ACC>;<U0AD0>;<U0AE0>..<U0AE3>;<U0AE6>..<U0AEF>;/
@@ -315,9 +317,9 @@ alpha /
<U1A90>..<U1A99>;<U1AA7>;<U1ABF>..<U1AC0>;<U1ACC>..<U1ACE>;/
<U1B00>..<U1B33>;<U1B35>..<U1B43>;<U1B45>..<U1B4C>;<U1B50>..<U1B59>;/
<U1B80>..<U1BA9>;<U1BAC>..<U1BE5>;<U1BE7>..<U1BF1>;<U1C00>..<U1C36>;/
- <U1C40>..<U1C49>;<U1C4D>..<U1C7D>;<U1C80>..<U1C88>;<U1C90>..<U1CBA>;/
+ <U1C40>..<U1C49>;<U1C4D>..<U1C7D>;<U1C80>..<U1C8A>;<U1C90>..<U1CBA>;/
<U1CBD>..<U1CBF>;<U1CE9>..<U1CEC>;<U1CEE>..<U1CF3>;<U1CF5>..<U1CF6>;/
- <U1CFA>;<U1D00>..<U1DBF>;<U1DE7>..<U1DF4>;<U1E00>..<U1F15>;/
+ <U1CFA>;<U1D00>..<U1DBF>;<U1DD3>..<U1DF4>;<U1E00>..<U1F15>;/
<U1F18>..<U1F1D>;<U1F20>..<U1F45>;<U1F48>..<U1F4D>;<U1F50>..<U1F57>;/
<U1F59>;<U1F5B>;<U1F5D>;<U1F5F>..<U1F7D>;<U1F80>..<U1FB4>;/
<U1FB6>..<U1FBC>;<U1FBE>;<U1FC2>..<U1FC4>;<U1FC6>..<U1FCC>;/
@@ -335,8 +337,8 @@ alpha /
<U30FC>..<U30FF>;<U3105>..<U312F>;<U3131>..<U318E>;<U31A0>..<U31BF>;/
<U31F0>..<U31FF>;<U3400>..<U4DBF>;<U4E00>..<UA48C>;<UA4D0>..<UA4FD>;/
<UA500>..<UA60C>;<UA610>..<UA62B>;<UA640>..<UA66E>;<UA674>..<UA67B>;/
- <UA67F>..<UA6EF>;<UA717>..<UA71F>;<UA722>..<UA788>;<UA78B>..<UA7CA>;/
- <UA7D0>..<UA7D1>;<UA7D3>;<UA7D5>..<UA7D9>;<UA7F2>..<UA805>;/
+ <UA67F>..<UA6EF>;<UA717>..<UA71F>;<UA722>..<UA788>;<UA78B>..<UA7CD>;/
+ <UA7D0>..<UA7D1>;<UA7D3>;<UA7D5>..<UA7DC>;<UA7F2>..<UA805>;/
<UA807>..<UA827>;<UA840>..<UA873>;<UA880>..<UA8C3>;<UA8C5>;/
<UA8D0>..<UA8D9>;<UA8F2>..<UA8F7>;<UA8FB>;<UA8FD>..<UA92A>;/
<UA930>..<UA952>;<UA960>..<UA97C>;<UA980>..<UA9B2>;<UA9B4>..<UA9BF>;/
@@ -367,26 +369,28 @@ alpha /
<U0001057C>..<U0001058A>;<U0001058C>..<U00010592>;/
<U00010594>..<U00010595>;<U00010597>..<U000105A1>;/
<U000105A3>..<U000105B1>;<U000105B3>..<U000105B9>;/
- <U000105BB>..<U000105BC>;<U00010600>..<U00010736>;/
- <U00010740>..<U00010755>;<U00010760>..<U00010767>;/
- <U00010780>..<U00010785>;<U00010787>..<U000107B0>;/
- <U000107B2>..<U000107BA>;<U00010800>..<U00010805>;<U00010808>;/
- <U0001080A>..<U00010835>;<U00010837>..<U00010838>;<U0001083C>;/
- <U0001083F>..<U00010855>;<U00010860>..<U00010876>;/
- <U00010880>..<U0001089E>;<U000108E0>..<U000108F2>;/
- <U000108F4>..<U000108F5>;<U00010900>..<U00010915>;/
- <U00010920>..<U00010939>;<U00010980>..<U000109B7>;/
- <U000109BE>..<U000109BF>;<U00010A00>..<U00010A03>;/
- <U00010A05>..<U00010A06>;<U00010A0C>..<U00010A13>;/
- <U00010A15>..<U00010A17>;<U00010A19>..<U00010A35>;/
- <U00010A60>..<U00010A7C>;<U00010A80>..<U00010A9C>;/
- <U00010AC0>..<U00010AC7>;<U00010AC9>..<U00010AE4>;/
- <U00010B00>..<U00010B35>;<U00010B40>..<U00010B55>;/
- <U00010B60>..<U00010B72>;<U00010B80>..<U00010B91>;/
- <U00010C00>..<U00010C48>;<U00010C80>..<U00010CB2>;/
- <U00010CC0>..<U00010CF2>;<U00010D00>..<U00010D27>;/
- <U00010D30>..<U00010D39>;<U00010E80>..<U00010EA9>;/
- <U00010EAB>..<U00010EAC>;<U00010EB0>..<U00010EB1>;/
+ <U000105BB>..<U000105BC>;<U000105C0>..<U000105F3>;/
+ <U00010600>..<U00010736>;<U00010740>..<U00010755>;/
+ <U00010760>..<U00010767>;<U00010780>..<U00010785>;/
+ <U00010787>..<U000107B0>;<U000107B2>..<U000107BA>;/
+ <U00010800>..<U00010805>;<U00010808>;<U0001080A>..<U00010835>;/
+ <U00010837>..<U00010838>;<U0001083C>;<U0001083F>..<U00010855>;/
+ <U00010860>..<U00010876>;<U00010880>..<U0001089E>;/
+ <U000108E0>..<U000108F2>;<U000108F4>..<U000108F5>;/
+ <U00010900>..<U00010915>;<U00010920>..<U00010939>;/
+ <U00010980>..<U000109B7>;<U000109BE>..<U000109BF>;/
+ <U00010A00>..<U00010A03>;<U00010A05>..<U00010A06>;/
+ <U00010A0C>..<U00010A13>;<U00010A15>..<U00010A17>;/
+ <U00010A19>..<U00010A35>;<U00010A60>..<U00010A7C>;/
+ <U00010A80>..<U00010A9C>;<U00010AC0>..<U00010AC7>;/
+ <U00010AC9>..<U00010AE4>;<U00010B00>..<U00010B35>;/
+ <U00010B40>..<U00010B55>;<U00010B60>..<U00010B72>;/
+ <U00010B80>..<U00010B91>;<U00010C00>..<U00010C48>;/
+ <U00010C80>..<U00010CB2>;<U00010CC0>..<U00010CF2>;/
+ <U00010D00>..<U00010D27>;<U00010D30>..<U00010D39>;/
+ <U00010D40>..<U00010D65>;<U00010D69>;<U00010D6F>..<U00010D85>;/
+ <U00010E80>..<U00010EA9>;<U00010EAB>..<U00010EAC>;/
+ <U00010EB0>..<U00010EB1>;<U00010EC2>..<U00010EC4>;<U00010EFC>;/
<U00010F00>..<U00010F1C>;<U00010F27>;<U00010F30>..<U00010F45>;/
<U00010F70>..<U00010F81>;<U00010FB0>..<U00010FC4>;/
<U00010FE0>..<U00010FF6>;<U00011000>..<U00011045>;/
@@ -406,83 +410,92 @@ alpha /
<U00011332>..<U00011333>;<U00011335>..<U00011339>;/
<U0001133D>..<U00011344>;<U00011347>..<U00011348>;/
<U0001134B>..<U0001134C>;<U00011350>;<U00011357>;/
- <U0001135D>..<U00011363>;<U00011400>..<U00011441>;/
- <U00011443>..<U00011445>;<U00011447>..<U0001144A>;/
- <U00011450>..<U00011459>;<U0001145F>..<U00011461>;/
- <U00011480>..<U000114C1>;<U000114C4>..<U000114C5>;<U000114C7>;/
- <U000114D0>..<U000114D9>;<U00011580>..<U000115B5>;/
- <U000115B8>..<U000115BE>;<U000115D8>..<U000115DD>;/
- <U00011600>..<U0001163E>;<U00011640>;<U00011644>;/
- <U00011650>..<U00011659>;<U00011680>..<U000116B5>;<U000116B8>;/
- <U000116C0>..<U000116C9>;<U00011700>..<U0001171A>;/
- <U0001171D>..<U0001172A>;<U00011730>..<U00011739>;/
- <U00011740>..<U00011746>;<U00011800>..<U00011838>;/
- <U000118A0>..<U000118E9>;<U000118FF>..<U00011906>;<U00011909>;/
- <U0001190C>..<U00011913>;<U00011915>..<U00011916>;/
- <U00011918>..<U00011935>;<U00011937>..<U00011938>;/
- <U0001193B>..<U0001193C>;<U0001193F>..<U00011942>;/
- <U00011950>..<U00011959>;<U000119A0>..<U000119A7>;/
- <U000119AA>..<U000119D7>;<U000119DA>..<U000119DF>;<U000119E1>;/
- <U000119E3>..<U000119E4>;<U00011A00>..<U00011A32>;/
- <U00011A35>..<U00011A3E>;<U00011A50>..<U00011A97>;<U00011A9D>;/
- <U00011AB0>..<U00011AF8>;<U00011C00>..<U00011C08>;/
- <U00011C0A>..<U00011C36>;<U00011C38>..<U00011C3E>;<U00011C40>;/
- <U00011C50>..<U00011C59>;<U00011C72>..<U00011C8F>;/
- <U00011C92>..<U00011CA7>;<U00011CA9>..<U00011CB6>;/
- <U00011D00>..<U00011D06>;<U00011D08>..<U00011D09>;/
- <U00011D0B>..<U00011D36>;<U00011D3A>;<U00011D3C>..<U00011D3D>;/
- <U00011D3F>..<U00011D41>;<U00011D43>;<U00011D46>..<U00011D47>;/
- <U00011D50>..<U00011D59>;<U00011D60>..<U00011D65>;/
- <U00011D67>..<U00011D68>;<U00011D6A>..<U00011D8E>;/
- <U00011D90>..<U00011D91>;<U00011D93>..<U00011D96>;<U00011D98>;/
- <U00011DA0>..<U00011DA9>;<U00011EE0>..<U00011EF6>;/
- <U00011F00>..<U00011F10>;<U00011F12>..<U00011F3A>;/
- <U00011F3E>..<U00011F40>;<U00011F50>..<U00011F59>;<U00011FB0>;/
- <U00012000>..<U00012399>;<U00012400>..<U0001246E>;/
- <U00012480>..<U00012543>;<U00012F90>..<U00012FF0>;/
- <U00013000>..<U0001342F>;<U00013441>..<U00013446>;/
- <U00014400>..<U00014646>;<U00016800>..<U00016A38>;/
+ <U0001135D>..<U00011363>;<U00011380>..<U00011389>;<U0001138B>;/
+ <U0001138E>;<U00011390>..<U000113B5>;<U000113B7>..<U000113C0>;/
+ <U000113C2>;<U000113C5>;<U000113C7>..<U000113CA>;/
+ <U000113CC>..<U000113CD>;<U000113D1>;<U000113D3>;/
+ <U00011400>..<U00011441>;<U00011443>..<U00011445>;/
+ <U00011447>..<U0001144A>;<U00011450>..<U00011459>;/
+ <U0001145F>..<U00011461>;<U00011480>..<U000114C1>;/
+ <U000114C4>..<U000114C5>;<U000114C7>;<U000114D0>..<U000114D9>;/
+ <U00011580>..<U000115B5>;<U000115B8>..<U000115BE>;/
+ <U000115D8>..<U000115DD>;<U00011600>..<U0001163E>;<U00011640>;/
+ <U00011644>;<U00011650>..<U00011659>;<U00011680>..<U000116B5>;/
+ <U000116B8>;<U000116C0>..<U000116C9>;<U000116D0>..<U000116E3>;/
+ <U00011700>..<U0001171A>;<U0001171D>..<U0001172A>;/
+ <U00011730>..<U00011739>;<U00011740>..<U00011746>;/
+ <U00011800>..<U00011838>;<U000118A0>..<U000118E9>;/
+ <U000118FF>..<U00011906>;<U00011909>;<U0001190C>..<U00011913>;/
+ <U00011915>..<U00011916>;<U00011918>..<U00011935>;/
+ <U00011937>..<U00011938>;<U0001193B>..<U0001193C>;/
+ <U0001193F>..<U00011942>;<U00011950>..<U00011959>;/
+ <U000119A0>..<U000119A7>;<U000119AA>..<U000119D7>;/
+ <U000119DA>..<U000119DF>;<U000119E1>;<U000119E3>..<U000119E4>;/
+ <U00011A00>..<U00011A32>;<U00011A35>..<U00011A3E>;/
+ <U00011A50>..<U00011A97>;<U00011A9D>;<U00011AB0>..<U00011AF8>;/
+ <U00011BC0>..<U00011BE0>;<U00011BF0>..<U00011BF9>;/
+ <U00011C00>..<U00011C08>;<U00011C0A>..<U00011C36>;/
+ <U00011C38>..<U00011C3E>;<U00011C40>;<U00011C50>..<U00011C59>;/
+ <U00011C72>..<U00011C8F>;<U00011C92>..<U00011CA7>;/
+ <U00011CA9>..<U00011CB6>;<U00011D00>..<U00011D06>;/
+ <U00011D08>..<U00011D09>;<U00011D0B>..<U00011D36>;<U00011D3A>;/
+ <U00011D3C>..<U00011D3D>;<U00011D3F>..<U00011D41>;<U00011D43>;/
+ <U00011D46>..<U00011D47>;<U00011D50>..<U00011D59>;/
+ <U00011D60>..<U00011D65>;<U00011D67>..<U00011D68>;/
+ <U00011D6A>..<U00011D8E>;<U00011D90>..<U00011D91>;/
+ <U00011D93>..<U00011D96>;<U00011D98>;<U00011DA0>..<U00011DA9>;/
+ <U00011EE0>..<U00011EF6>;<U00011F00>..<U00011F10>;/
+ <U00011F12>..<U00011F3A>;<U00011F3E>..<U00011F40>;/
+ <U00011F50>..<U00011F59>;<U00011FB0>;<U00012000>..<U00012399>;/
+ <U00012400>..<U0001246E>;<U00012480>..<U00012543>;/
+ <U00012F90>..<U00012FF0>;<U00013000>..<U0001342F>;/
+ <U00013441>..<U00013446>;<U00013460>..<U000143FA>;/
+ <U00014400>..<U00014646>;<U00016100>..<U0001612E>;/
+ <U00016130>..<U00016139>;<U00016800>..<U00016A38>;/
<U00016A40>..<U00016A5E>;<U00016A60>..<U00016A69>;/
<U00016A70>..<U00016ABE>;<U00016AC0>..<U00016AC9>;/
<U00016AD0>..<U00016AED>;<U00016B00>..<U00016B2F>;/
<U00016B40>..<U00016B43>;<U00016B50>..<U00016B59>;/
<U00016B63>..<U00016B77>;<U00016B7D>..<U00016B8F>;/
+ <U00016D40>..<U00016D6C>;<U00016D70>..<U00016D79>;/
<U00016E40>..<U00016E7F>;<U00016F00>..<U00016F4A>;/
<U00016F4F>..<U00016F87>;<U00016F8F>..<U00016F9F>;/
<U00016FE0>..<U00016FE1>;<U00016FE3>;<U00016FF0>..<U00016FF1>;/
<U00017000>..<U000187F7>;<U00018800>..<U00018CD5>;/
- <U00018D00>..<U00018D08>;<U0001AFF0>..<U0001AFF3>;/
+ <U00018CFF>..<U00018D08>;<U0001AFF0>..<U0001AFF3>;/
<U0001AFF5>..<U0001AFFB>;<U0001AFFD>..<U0001AFFE>;/
<U0001B000>..<U0001B122>;<U0001B132>;<U0001B150>..<U0001B152>;/
<U0001B155>;<U0001B164>..<U0001B167>;<U0001B170>..<U0001B2FB>;/
<U0001BC00>..<U0001BC6A>;<U0001BC70>..<U0001BC7C>;/
<U0001BC80>..<U0001BC88>;<U0001BC90>..<U0001BC99>;<U0001BC9E>;/
- <U0001D400>..<U0001D454>;<U0001D456>..<U0001D49C>;/
- <U0001D49E>..<U0001D49F>;<U0001D4A2>;<U0001D4A5>..<U0001D4A6>;/
- <U0001D4A9>..<U0001D4AC>;<U0001D4AE>..<U0001D4B9>;<U0001D4BB>;/
- <U0001D4BD>..<U0001D4C3>;<U0001D4C5>..<U0001D505>;/
- <U0001D507>..<U0001D50A>;<U0001D50D>..<U0001D514>;/
- <U0001D516>..<U0001D51C>;<U0001D51E>..<U0001D539>;/
- <U0001D53B>..<U0001D53E>;<U0001D540>..<U0001D544>;<U0001D546>;/
- <U0001D54A>..<U0001D550>;<U0001D552>..<U0001D6A5>;/
- <U0001D6A8>..<U0001D6C0>;<U0001D6C2>..<U0001D6DA>;/
- <U0001D6DC>..<U0001D6FA>;<U0001D6FC>..<U0001D714>;/
- <U0001D716>..<U0001D734>;<U0001D736>..<U0001D74E>;/
- <U0001D750>..<U0001D76E>;<U0001D770>..<U0001D788>;/
- <U0001D78A>..<U0001D7A8>;<U0001D7AA>..<U0001D7C2>;/
- <U0001D7C4>..<U0001D7CB>;<U0001D7CE>..<U0001D7FF>;/
- <U0001DF00>..<U0001DF1E>;<U0001DF25>..<U0001DF2A>;/
- <U0001E000>..<U0001E006>;<U0001E008>..<U0001E018>;/
- <U0001E01B>..<U0001E021>;<U0001E023>..<U0001E024>;/
- <U0001E026>..<U0001E02A>;<U0001E030>..<U0001E06D>;<U0001E08F>;/
- <U0001E100>..<U0001E12C>;<U0001E137>..<U0001E13D>;/
- <U0001E140>..<U0001E149>;<U0001E14E>;<U0001E290>..<U0001E2AD>;/
- <U0001E2C0>..<U0001E2EB>;<U0001E2F0>..<U0001E2F9>;/
- <U0001E4D0>..<U0001E4EB>;<U0001E4F0>..<U0001E4F9>;/
- <U0001E7E0>..<U0001E7E6>;<U0001E7E8>..<U0001E7EB>;/
- <U0001E7ED>..<U0001E7EE>;<U0001E7F0>..<U0001E7FE>;/
- <U0001E800>..<U0001E8C4>;<U0001E900>..<U0001E943>;<U0001E947>;/
- <U0001E94B>;<U0001E950>..<U0001E959>;<U0001EE00>..<U0001EE03>;/
+ <U0001CCF0>..<U0001CCF9>;<U0001D400>..<U0001D454>;/
+ <U0001D456>..<U0001D49C>;<U0001D49E>..<U0001D49F>;<U0001D4A2>;/
+ <U0001D4A5>..<U0001D4A6>;<U0001D4A9>..<U0001D4AC>;/
+ <U0001D4AE>..<U0001D4B9>;<U0001D4BB>;<U0001D4BD>..<U0001D4C3>;/
+ <U0001D4C5>..<U0001D505>;<U0001D507>..<U0001D50A>;/
+ <U0001D50D>..<U0001D514>;<U0001D516>..<U0001D51C>;/
+ <U0001D51E>..<U0001D539>;<U0001D53B>..<U0001D53E>;/
+ <U0001D540>..<U0001D544>;<U0001D546>;<U0001D54A>..<U0001D550>;/
+ <U0001D552>..<U0001D6A5>;<U0001D6A8>..<U0001D6C0>;/
+ <U0001D6C2>..<U0001D6DA>;<U0001D6DC>..<U0001D6FA>;/
+ <U0001D6FC>..<U0001D714>;<U0001D716>..<U0001D734>;/
+ <U0001D736>..<U0001D74E>;<U0001D750>..<U0001D76E>;/
+ <U0001D770>..<U0001D788>;<U0001D78A>..<U0001D7A8>;/
+ <U0001D7AA>..<U0001D7C2>;<U0001D7C4>..<U0001D7CB>;/
+ <U0001D7CE>..<U0001D7FF>;<U0001DF00>..<U0001DF1E>;/
+ <U0001DF25>..<U0001DF2A>;<U0001E000>..<U0001E006>;/
+ <U0001E008>..<U0001E018>;<U0001E01B>..<U0001E021>;/
+ <U0001E023>..<U0001E024>;<U0001E026>..<U0001E02A>;/
+ <U0001E030>..<U0001E06D>;<U0001E08F>;<U0001E100>..<U0001E12C>;/
+ <U0001E137>..<U0001E13D>;<U0001E140>..<U0001E149>;<U0001E14E>;/
+ <U0001E290>..<U0001E2AD>;<U0001E2C0>..<U0001E2EB>;/
+ <U0001E2F0>..<U0001E2F9>;<U0001E4D0>..<U0001E4EB>;/
+ <U0001E4F0>..<U0001E4F9>;<U0001E5D0>..<U0001E5ED>;/
+ <U0001E5F0>..<U0001E5FA>;<U0001E7E0>..<U0001E7E6>;/
+ <U0001E7E8>..<U0001E7EB>;<U0001E7ED>..<U0001E7EE>;/
+ <U0001E7F0>..<U0001E7FE>;<U0001E800>..<U0001E8C4>;/
+ <U0001E900>..<U0001E943>;<U0001E947>;<U0001E94B>;/
+ <U0001E950>..<U0001E959>;<U0001EE00>..<U0001EE03>;/
<U0001EE05>..<U0001EE1F>;<U0001EE21>..<U0001EE22>;<U0001EE24>;/
<U0001EE27>;<U0001EE29>..<U0001EE32>;<U0001EE34>..<U0001EE37>;/
<U0001EE39>;<U0001EE3B>;<U0001EE42>;<U0001EE47>;<U0001EE49>;<U0001EE4B>;/
@@ -523,7 +536,7 @@ punct /
<U0021>..<U002F>;<U003A>..<U0040>;<U005B>..<U0060>;<U007B>..<U007E>;/
<U00A0>..<U00A9>;<U00AB>..<U00B4>;<U00B6>..<U00B9>;<U00BB>..<U00BF>;/
<U00D7>;<U00F7>;<U02C2>..<U02C5>;<U02D2>..<U02DF>;<U02E5>..<U02EB>;/
- <U02ED>;<U02EF>..<U0344>;<U0346>..<U036F>;<U0375>;<U037E>;/
+ <U02ED>;<U02EF>..<U0344>;<U0346>..<U0362>;<U0375>;<U037E>;/
<U0384>..<U0385>;<U0387>;<U03F6>;<U0482>..<U0489>;<U055A>..<U055F>;/
<U0589>..<U058A>;<U058D>..<U058F>;<U0591>..<U05AF>;<U05BE>;<U05C0>;/
<U05C3>;<U05C6>;<U05F3>..<U05F4>;<U0600>..<U060F>;<U061B>..<U061F>;/
@@ -548,44 +561,45 @@ punct /
<U17DD>;<U17F0>..<U17F9>;<U1800>..<U180F>;<U1939>..<U193B>;<U1940>;/
<U1944>..<U1945>;<U19DA>;<U19DE>..<U19FF>;<U1A1E>..<U1A1F>;<U1A60>;/
<U1A75>..<U1A7C>;<U1A7F>;<U1AA0>..<U1AA6>;<U1AA8>..<U1AAD>;/
- <U1AB0>..<U1ABE>;<U1AC1>..<U1ACB>;<U1B34>;<U1B44>;<U1B5A>..<U1B7E>;/
- <U1BAA>..<U1BAB>;<U1BE6>;<U1BF2>..<U1BF3>;<U1BFC>..<U1BFF>;<U1C37>;/
- <U1C3B>..<U1C3F>;<U1C7E>..<U1C7F>;<U1CC0>..<U1CC7>;<U1CD0>..<U1CE8>;/
- <U1CED>;<U1CF4>;<U1CF7>..<U1CF9>;<U1DC0>..<U1DE6>;<U1DF5>..<U1DFF>;/
- <U1FBD>;<U1FBF>..<U1FC1>;<U1FCD>..<U1FCF>;<U1FDD>..<U1FDF>;/
- <U1FED>..<U1FEF>;<U1FFD>..<U1FFE>;<U2007>;<U200B>..<U2027>;/
- <U202A>..<U205E>;<U2060>..<U2064>;<U2066>..<U2070>;<U2074>..<U207E>;/
- <U2080>..<U208E>;<U20A0>..<U20C0>;<U20D0>..<U20F0>;<U2100>..<U2101>;/
- <U2103>..<U2106>;<U2108>..<U2109>;<U2114>;<U2116>..<U2118>;/
- <U211E>..<U2123>;<U2125>;<U2127>;<U2129>;<U212E>;<U213A>..<U213B>;/
- <U2140>..<U2144>;<U214A>..<U214D>;<U214F>..<U215F>;<U2189>..<U218B>;/
- <U2190>..<U2426>;<U2440>..<U244A>;<U2460>..<U24B5>;<U24EA>..<U2B73>;/
- <U2B76>..<U2B95>;<U2B97>..<U2BFF>;<U2CE5>..<U2CEA>;<U2CEF>..<U2CF1>;/
- <U2CF9>..<U2CFF>;<U2D70>;<U2D7F>;<U2E00>..<U2E2E>;<U2E30>..<U2E5D>;/
- <U2E80>..<U2E99>;<U2E9B>..<U2EF3>;<U2F00>..<U2FD5>;<U2FF0>..<U2FFF>;/
- <U3001>..<U3004>;<U3008>..<U3020>;<U302A>..<U3030>;<U3036>..<U3037>;/
- <U303D>..<U303F>;<U3099>..<U309C>;<U30A0>;<U30FB>;<U3190>..<U319F>;/
- <U31C0>..<U31E3>;<U31EF>;<U3200>..<U321E>;<U3220>..<U33FF>;/
- <U4DC0>..<U4DFF>;<UA490>..<UA4C6>;<UA4FE>..<UA4FF>;<UA60D>..<UA60F>;/
- <UA66F>..<UA673>;<UA67C>..<UA67E>;<UA6F0>..<UA6F7>;<UA700>..<UA716>;/
- <UA720>..<UA721>;<UA789>..<UA78A>;<UA806>;<UA828>..<UA82C>;/
- <UA830>..<UA839>;<UA874>..<UA877>;<UA8C4>;<UA8CE>..<UA8CF>;/
- <UA8E0>..<UA8F1>;<UA8F8>..<UA8FA>;<UA8FC>;<UA92B>..<UA92F>;<UA953>;/
- <UA95F>;<UA9B3>;<UA9C0>..<UA9CD>;<UA9DE>..<UA9DF>;<UAA5C>..<UAA5F>;/
- <UAA77>..<UAA79>;<UAABF>;<UAAC1>;<UAADE>..<UAADF>;<UAAF0>..<UAAF1>;/
- <UAAF6>;<UAB5B>;<UAB6A>..<UAB6B>;<UABEB>..<UABED>;<UE000>..<UF8FF>;/
- <UFB29>;<UFBB2>..<UFBC2>;<UFD3E>..<UFD4F>;<UFDCF>;<UFDFC>..<UFE19>;/
- <UFE20>..<UFE52>;<UFE54>..<UFE66>;<UFE68>..<UFE6B>;<UFEFF>;/
- <UFF01>..<UFF0F>;<UFF1A>..<UFF20>;<UFF3B>..<UFF40>;<UFF5B>..<UFF65>;/
- <UFFE0>..<UFFE6>;<UFFE8>..<UFFEE>;<UFFF9>..<UFFFD>;/
- <U00010100>..<U00010102>;<U00010107>..<U00010133>;/
- <U00010137>..<U0001013F>;<U00010175>..<U0001018E>;/
- <U00010190>..<U0001019C>;<U000101A0>;<U000101D0>..<U000101FD>;/
- <U000102E0>..<U000102FB>;<U00010320>..<U00010323>;<U0001039F>;/
- <U000103D0>;<U0001056F>;<U00010857>..<U0001085F>;/
- <U00010877>..<U0001087F>;<U000108A7>..<U000108AF>;/
- <U000108FB>..<U000108FF>;<U00010916>..<U0001091B>;<U0001091F>;/
- <U0001093F>;<U000109BC>..<U000109BD>;<U000109C0>..<U000109CF>;/
+ <U1AB0>..<U1ABE>;<U1AC1>..<U1ACB>;<U1B34>;<U1B44>;<U1B4E>..<U1B4F>;/
+ <U1B5A>..<U1B7F>;<U1BAA>..<U1BAB>;<U1BE6>;<U1BF2>..<U1BF3>;/
+ <U1BFC>..<U1BFF>;<U1C37>;<U1C3B>..<U1C3F>;<U1C7E>..<U1C7F>;/
+ <U1CC0>..<U1CC7>;<U1CD0>..<U1CE8>;<U1CED>;<U1CF4>;<U1CF7>..<U1CF9>;/
+ <U1DC0>..<U1DD2>;<U1DF5>..<U1DFF>;<U1FBD>;<U1FBF>..<U1FC1>;/
+ <U1FCD>..<U1FCF>;<U1FDD>..<U1FDF>;<U1FED>..<U1FEF>;<U1FFD>..<U1FFE>;/
+ <U2007>;<U200B>..<U2027>;<U202A>..<U205E>;<U2060>..<U2064>;/
+ <U2066>..<U2070>;<U2074>..<U207E>;<U2080>..<U208E>;<U20A0>..<U20C0>;/
+ <U20D0>..<U20F0>;<U2100>..<U2101>;<U2103>..<U2106>;<U2108>..<U2109>;/
+ <U2114>;<U2116>..<U2118>;<U211E>..<U2123>;<U2125>;<U2127>;<U2129>;/
+ <U212E>;<U213A>..<U213B>;<U2140>..<U2144>;<U214A>..<U214D>;/
+ <U214F>..<U215F>;<U2189>..<U218B>;<U2190>..<U2429>;<U2440>..<U244A>;/
+ <U2460>..<U24B5>;<U24EA>..<U2B73>;<U2B76>..<U2B95>;<U2B97>..<U2BFF>;/
+ <U2CE5>..<U2CEA>;<U2CEF>..<U2CF1>;<U2CF9>..<U2CFF>;<U2D70>;<U2D7F>;/
+ <U2E00>..<U2E2E>;<U2E30>..<U2E5D>;<U2E80>..<U2E99>;<U2E9B>..<U2EF3>;/
+ <U2F00>..<U2FD5>;<U2FF0>..<U2FFF>;<U3001>..<U3004>;<U3008>..<U3020>;/
+ <U302A>..<U3030>;<U3036>..<U3037>;<U303D>..<U303F>;<U3099>..<U309C>;/
+ <U30A0>;<U30FB>;<U3190>..<U319F>;<U31C0>..<U31E5>;<U31EF>;/
+ <U3200>..<U321E>;<U3220>..<U33FF>;<U4DC0>..<U4DFF>;<UA490>..<UA4C6>;/
+ <UA4FE>..<UA4FF>;<UA60D>..<UA60F>;<UA66F>..<UA673>;<UA67C>..<UA67E>;/
+ <UA6F0>..<UA6F7>;<UA700>..<UA716>;<UA720>..<UA721>;<UA789>..<UA78A>;/
+ <UA806>;<UA828>..<UA82C>;<UA830>..<UA839>;<UA874>..<UA877>;<UA8C4>;/
+ <UA8CE>..<UA8CF>;<UA8E0>..<UA8F1>;<UA8F8>..<UA8FA>;<UA8FC>;/
+ <UA92B>..<UA92F>;<UA953>;<UA95F>;<UA9B3>;<UA9C0>..<UA9CD>;/
+ <UA9DE>..<UA9DF>;<UAA5C>..<UAA5F>;<UAA77>..<UAA79>;<UAABF>;<UAAC1>;/
+ <UAADE>..<UAADF>;<UAAF0>..<UAAF1>;<UAAF6>;<UAB5B>;<UAB6A>..<UAB6B>;/
+ <UABEB>..<UABED>;<UE000>..<UF8FF>;<UFB29>;<UFBB2>..<UFBC2>;/
+ <UFD3E>..<UFD4F>;<UFDCF>;<UFDFC>..<UFE19>;<UFE20>..<UFE52>;/
+ <UFE54>..<UFE66>;<UFE68>..<UFE6B>;<UFEFF>;<UFF01>..<UFF0F>;/
+ <UFF1A>..<UFF20>;<UFF3B>..<UFF40>;<UFF5B>..<UFF65>;<UFFE0>..<UFFE6>;/
+ <UFFE8>..<UFFEE>;<UFFF9>..<UFFFD>;<U00010100>..<U00010102>;/
+ <U00010107>..<U00010133>;<U00010137>..<U0001013F>;/
+ <U00010175>..<U0001018E>;<U00010190>..<U0001019C>;<U000101A0>;/
+ <U000101D0>..<U000101FD>;<U000102E0>..<U000102FB>;/
+ <U00010320>..<U00010323>;<U0001039F>;<U000103D0>;<U0001056F>;/
+ <U00010857>..<U0001085F>;<U00010877>..<U0001087F>;/
+ <U000108A7>..<U000108AF>;<U000108FB>..<U000108FF>;/
+ <U00010916>..<U0001091B>;<U0001091F>;<U0001093F>;/
+ <U000109BC>..<U000109BD>;<U000109C0>..<U000109CF>;/
<U000109D2>..<U000109FF>;<U00010A38>..<U00010A3A>;/
<U00010A3F>..<U00010A48>;<U00010A50>..<U00010A58>;/
<U00010A7D>..<U00010A7F>;<U00010A9D>..<U00010A9F>;<U00010AC8>;/
@@ -593,6 +607,7 @@ punct /
<U00010B39>..<U00010B3F>;<U00010B58>..<U00010B5F>;/
<U00010B78>..<U00010B7F>;<U00010B99>..<U00010B9C>;/
<U00010BA9>..<U00010BAF>;<U00010CFA>..<U00010CFF>;/
+ <U00010D6A>..<U00010D6E>;<U00010D8E>..<U00010D8F>;/
<U00010E60>..<U00010E7E>;<U00010EAD>;<U00010EFD>..<U00010EFF>;/
<U00010F1D>..<U00010F26>;<U00010F46>..<U00010F59>;/
<U00010F82>..<U00010F89>;<U00010FC5>..<U00010FCB>;/
@@ -603,7 +618,9 @@ punct /
<U000111DB>;<U000111DD>..<U000111DF>;<U000111E1>..<U000111F4>;/
<U00011235>..<U00011236>;<U00011238>..<U0001123D>;<U000112A9>;/
<U000112E9>..<U000112EA>;<U0001133B>..<U0001133C>;<U0001134D>;/
- <U00011366>..<U0001136C>;<U00011370>..<U00011374>;<U00011442>;/
+ <U00011366>..<U0001136C>;<U00011370>..<U00011374>;/
+ <U000113CE>..<U000113D0>;<U000113D2>;<U000113D4>..<U000113D5>;/
+ <U000113D7>..<U000113D8>;<U000113E1>..<U000113E2>;<U00011442>;/
<U00011446>;<U0001144B>..<U0001144F>;<U0001145A>..<U0001145B>;/
<U0001145D>..<U0001145E>;<U000114C2>..<U000114C3>;<U000114C6>;/
<U000115BF>..<U000115D7>;<U0001163F>;<U00011641>..<U00011643>;/
@@ -613,16 +630,19 @@ punct /
<U00011943>..<U00011946>;<U000119E0>;<U000119E2>;/
<U00011A33>..<U00011A34>;<U00011A3F>..<U00011A47>;/
<U00011A98>..<U00011A9C>;<U00011A9E>..<U00011AA2>;/
- <U00011B00>..<U00011B09>;<U00011C3F>;<U00011C41>..<U00011C45>;/
- <U00011C5A>..<U00011C6C>;<U00011C70>..<U00011C71>;<U00011D42>;/
- <U00011D44>..<U00011D45>;<U00011D97>;<U00011EF7>..<U00011EF8>;/
- <U00011F41>..<U00011F4F>;<U00011FC0>..<U00011FF1>;<U00011FFF>;/
+ <U00011B00>..<U00011B09>;<U00011BE1>;<U00011C3F>;/
+ <U00011C41>..<U00011C45>;<U00011C5A>..<U00011C6C>;/
+ <U00011C70>..<U00011C71>;<U00011D42>;<U00011D44>..<U00011D45>;/
+ <U00011D97>;<U00011EF7>..<U00011EF8>;<U00011F41>..<U00011F4F>;/
+ <U00011F5A>;<U00011FC0>..<U00011FF1>;<U00011FFF>;/
<U00012470>..<U00012474>;<U00012FF1>..<U00012FF2>;/
- <U00013430>..<U00013440>;<U00013447>..<U00013455>;/
+ <U00013430>..<U00013440>;<U00013447>..<U00013455>;<U0001612F>;/
<U00016A6E>..<U00016A6F>;<U00016AF0>..<U00016AF5>;/
<U00016B30>..<U00016B3F>;<U00016B44>..<U00016B45>;/
- <U00016B5B>..<U00016B61>;<U00016E80>..<U00016E9A>;<U00016FE2>;/
- <U00016FE4>;<U0001BC9C>..<U0001BC9D>;<U0001BC9F>..<U0001BCA3>;/
+ <U00016B5B>..<U00016B61>;<U00016D6D>..<U00016D6F>;/
+ <U00016E80>..<U00016E9A>;<U00016FE2>;<U00016FE4>;/
+ <U0001BC9C>..<U0001BC9D>;<U0001BC9F>..<U0001BCA3>;/
+ <U0001CC00>..<U0001CCEF>;<U0001CD00>..<U0001CEB3>;/
<U0001CF00>..<U0001CF2D>;<U0001CF30>..<U0001CF46>;/
<U0001CF50>..<U0001CFC3>;<U0001D000>..<U0001D0F5>;/
<U0001D100>..<U0001D126>;<U0001D129>..<U0001D1EA>;/
@@ -633,31 +653,32 @@ punct /
<U0001D800>..<U0001DA8B>;<U0001DA9B>..<U0001DA9F>;/
<U0001DAA1>..<U0001DAAF>;<U0001E130>..<U0001E136>;<U0001E14F>;/
<U0001E2AE>;<U0001E2EC>..<U0001E2EF>;<U0001E2FF>;/
- <U0001E4EC>..<U0001E4EF>;<U0001E8C7>..<U0001E8D6>;/
- <U0001E944>..<U0001E946>;<U0001E948>..<U0001E94A>;/
- <U0001E95E>..<U0001E95F>;<U0001EC71>..<U0001ECB4>;/
- <U0001ED01>..<U0001ED3D>;<U0001EEF0>..<U0001EEF1>;/
- <U0001F000>..<U0001F02B>;<U0001F030>..<U0001F093>;/
- <U0001F0A0>..<U0001F0AE>;<U0001F0B1>..<U0001F0BF>;/
- <U0001F0C1>..<U0001F0CF>;<U0001F0D1>..<U0001F0F5>;/
- <U0001F100>..<U0001F12F>;<U0001F14A>..<U0001F14F>;/
- <U0001F16A>..<U0001F16F>;<U0001F18A>..<U0001F1AD>;/
- <U0001F1E6>..<U0001F202>;<U0001F210>..<U0001F23B>;/
- <U0001F240>..<U0001F248>;<U0001F250>..<U0001F251>;/
- <U0001F260>..<U0001F265>;<U0001F300>..<U0001F6D7>;/
- <U0001F6DC>..<U0001F6EC>;<U0001F6F0>..<U0001F6FC>;/
- <U0001F700>..<U0001F776>;<U0001F77B>..<U0001F7D9>;/
- <U0001F7E0>..<U0001F7EB>;<U0001F7F0>;<U0001F800>..<U0001F80B>;/
- <U0001F810>..<U0001F847>;<U0001F850>..<U0001F859>;/
- <U0001F860>..<U0001F887>;<U0001F890>..<U0001F8AD>;/
- <U0001F8B0>..<U0001F8B1>;<U0001F900>..<U0001FA53>;/
+ <U0001E4EC>..<U0001E4EF>;<U0001E5EE>..<U0001E5EF>;<U0001E5FF>;/
+ <U0001E8C7>..<U0001E8D6>;<U0001E944>..<U0001E946>;/
+ <U0001E948>..<U0001E94A>;<U0001E95E>..<U0001E95F>;/
+ <U0001EC71>..<U0001ECB4>;<U0001ED01>..<U0001ED3D>;/
+ <U0001EEF0>..<U0001EEF1>;<U0001F000>..<U0001F02B>;/
+ <U0001F030>..<U0001F093>;<U0001F0A0>..<U0001F0AE>;/
+ <U0001F0B1>..<U0001F0BF>;<U0001F0C1>..<U0001F0CF>;/
+ <U0001F0D1>..<U0001F0F5>;<U0001F100>..<U0001F12F>;/
+ <U0001F14A>..<U0001F14F>;<U0001F16A>..<U0001F16F>;/
+ <U0001F18A>..<U0001F1AD>;<U0001F1E6>..<U0001F202>;/
+ <U0001F210>..<U0001F23B>;<U0001F240>..<U0001F248>;/
+ <U0001F250>..<U0001F251>;<U0001F260>..<U0001F265>;/
+ <U0001F300>..<U0001F6D7>;<U0001F6DC>..<U0001F6EC>;/
+ <U0001F6F0>..<U0001F6FC>;<U0001F700>..<U0001F776>;/
+ <U0001F77B>..<U0001F7D9>;<U0001F7E0>..<U0001F7EB>;<U0001F7F0>;/
+ <U0001F800>..<U0001F80B>;<U0001F810>..<U0001F847>;/
+ <U0001F850>..<U0001F859>;<U0001F860>..<U0001F887>;/
+ <U0001F890>..<U0001F8AD>;<U0001F8B0>..<U0001F8BB>;/
+ <U0001F8C0>..<U0001F8C1>;<U0001F900>..<U0001FA53>;/
<U0001FA60>..<U0001FA6D>;<U0001FA70>..<U0001FA7C>;/
- <U0001FA80>..<U0001FA88>;<U0001FA90>..<U0001FABD>;/
- <U0001FABF>..<U0001FAC5>;<U0001FACE>..<U0001FADB>;/
- <U0001FAE0>..<U0001FAE8>;<U0001FAF0>..<U0001FAF8>;/
- <U0001FB00>..<U0001FB92>;<U0001FB94>..<U0001FBCA>;<U000E0001>;/
- <U000E0020>..<U000E007F>;<U000E0100>..<U000E01EF>;/
- <U000F0000>..<U000FFFFD>;<U00100000>..<U0010FFFD>
+ <U0001FA80>..<U0001FA89>;<U0001FA8F>..<U0001FAC6>;/
+ <U0001FACE>..<U0001FADC>;<U0001FADF>..<U0001FAE9>;/
+ <U0001FAF0>..<U0001FAF8>;<U0001FB00>..<U0001FB92>;/
+ <U0001FB94>..<U0001FBEF>;<U000E0001>;<U000E0020>..<U000E007F>;/
+ <U000E0100>..<U000E01EF>;<U000F0000>..<U000FFFFD>;/
+ <U00100000>..<U0010FFFD>
graph /
<U0021>..<U007E>;<U00A0>..<U0377>;<U037A>..<U037F>;<U0384>..<U038A>;/
@@ -666,7 +687,7 @@ graph /
<U05EF>..<U05F4>;<U0600>..<U070D>;<U070F>..<U074A>;<U074D>..<U07B1>;/
<U07C0>..<U07FA>;<U07FD>..<U082D>;<U0830>..<U083E>;<U0840>..<U085B>;/
<U085E>;<U0860>..<U086A>;<U0870>..<U088E>;<U0890>..<U0891>;/
- <U0898>..<U0983>;<U0985>..<U098C>;<U098F>..<U0990>;<U0993>..<U09A8>;/
+ <U0897>..<U0983>;<U0985>..<U098C>;<U098F>..<U0990>;<U0993>..<U09A8>;/
<U09AA>..<U09B0>;<U09B2>;<U09B6>..<U09B9>;<U09BC>..<U09C4>;/
<U09C7>..<U09C8>;<U09CB>..<U09CE>;<U09D7>;<U09DC>..<U09DD>;/
<U09DF>..<U09E3>;<U09E6>..<U09FE>;<U0A01>..<U0A03>;<U0A05>..<U0A0A>;/
@@ -713,38 +734,38 @@ graph /
<U1970>..<U1974>;<U1980>..<U19AB>;<U19B0>..<U19C9>;<U19D0>..<U19DA>;/
<U19DE>..<U1A1B>;<U1A1E>..<U1A5E>;<U1A60>..<U1A7C>;<U1A7F>..<U1A89>;/
<U1A90>..<U1A99>;<U1AA0>..<U1AAD>;<U1AB0>..<U1ACE>;<U1B00>..<U1B4C>;/
- <U1B50>..<U1B7E>;<U1B80>..<U1BF3>;<U1BFC>..<U1C37>;<U1C3B>..<U1C49>;/
- <U1C4D>..<U1C88>;<U1C90>..<U1CBA>;<U1CBD>..<U1CC7>;<U1CD0>..<U1CFA>;/
- <U1D00>..<U1F15>;<U1F18>..<U1F1D>;<U1F20>..<U1F45>;<U1F48>..<U1F4D>;/
- <U1F50>..<U1F57>;<U1F59>;<U1F5B>;<U1F5D>;<U1F5F>..<U1F7D>;/
- <U1F80>..<U1FB4>;<U1FB6>..<U1FC4>;<U1FC6>..<U1FD3>;<U1FD6>..<U1FDB>;/
- <U1FDD>..<U1FEF>;<U1FF2>..<U1FF4>;<U1FF6>..<U1FFE>;<U2007>;/
- <U200B>..<U2027>;<U202A>..<U205E>;<U2060>..<U2064>;<U2066>..<U2071>;/
- <U2074>..<U208E>;<U2090>..<U209C>;<U20A0>..<U20C0>;<U20D0>..<U20F0>;/
- <U2100>..<U218B>;<U2190>..<U2426>;<U2440>..<U244A>;<U2460>..<U2B73>;/
- <U2B76>..<U2B95>;<U2B97>..<U2CF3>;<U2CF9>..<U2D25>;<U2D27>;<U2D2D>;/
- <U2D30>..<U2D67>;<U2D6F>..<U2D70>;<U2D7F>..<U2D96>;<U2DA0>..<U2DA6>;/
- <U2DA8>..<U2DAE>;<U2DB0>..<U2DB6>;<U2DB8>..<U2DBE>;<U2DC0>..<U2DC6>;/
- <U2DC8>..<U2DCE>;<U2DD0>..<U2DD6>;<U2DD8>..<U2DDE>;<U2DE0>..<U2E5D>;/
- <U2E80>..<U2E99>;<U2E9B>..<U2EF3>;<U2F00>..<U2FD5>;<U2FF0>..<U2FFF>;/
- <U3001>..<U303F>;<U3041>..<U3096>;<U3099>..<U30FF>;<U3105>..<U312F>;/
- <U3131>..<U318E>;<U3190>..<U31E3>;<U31EF>..<U321E>;<U3220>..<UA48C>;/
- <UA490>..<UA4C6>;<UA4D0>..<UA62B>;<UA640>..<UA6F7>;<UA700>..<UA7CA>;/
- <UA7D0>..<UA7D1>;<UA7D3>;<UA7D5>..<UA7D9>;<UA7F2>..<UA82C>;/
- <UA830>..<UA839>;<UA840>..<UA877>;<UA880>..<UA8C5>;<UA8CE>..<UA8D9>;/
- <UA8E0>..<UA953>;<UA95F>..<UA97C>;<UA980>..<UA9CD>;<UA9CF>..<UA9D9>;/
- <UA9DE>..<UA9FE>;<UAA00>..<UAA36>;<UAA40>..<UAA4D>;<UAA50>..<UAA59>;/
- <UAA5C>..<UAAC2>;<UAADB>..<UAAF6>;<UAB01>..<UAB06>;<UAB09>..<UAB0E>;/
- <UAB11>..<UAB16>;<UAB20>..<UAB26>;<UAB28>..<UAB2E>;<UAB30>..<UAB6B>;/
- <UAB70>..<UABED>;<UABF0>..<UABF9>;<UAC00>..<UD7A3>;<UD7B0>..<UD7C6>;/
- <UD7CB>..<UD7FB>;<UE000>..<UFA6D>;<UFA70>..<UFAD9>;<UFB00>..<UFB06>;/
- <UFB13>..<UFB17>;<UFB1D>..<UFB36>;<UFB38>..<UFB3C>;<UFB3E>;/
- <UFB40>..<UFB41>;<UFB43>..<UFB44>;<UFB46>..<UFBC2>;<UFBD3>..<UFD8F>;/
- <UFD92>..<UFDC7>;<UFDCF>;<UFDF0>..<UFE19>;<UFE20>..<UFE52>;/
- <UFE54>..<UFE66>;<UFE68>..<UFE6B>;<UFE70>..<UFE74>;<UFE76>..<UFEFC>;/
- <UFEFF>;<UFF01>..<UFFBE>;<UFFC2>..<UFFC7>;<UFFCA>..<UFFCF>;/
- <UFFD2>..<UFFD7>;<UFFDA>..<UFFDC>;<UFFE0>..<UFFE6>;<UFFE8>..<UFFEE>;/
- <UFFF9>..<UFFFD>;<U00010000>..<U0001000B>;<U0001000D>..<U00010026>;/
+ <U1B4E>..<U1BF3>;<U1BFC>..<U1C37>;<U1C3B>..<U1C49>;<U1C4D>..<U1C8A>;/
+ <U1C90>..<U1CBA>;<U1CBD>..<U1CC7>;<U1CD0>..<U1CFA>;<U1D00>..<U1F15>;/
+ <U1F18>..<U1F1D>;<U1F20>..<U1F45>;<U1F48>..<U1F4D>;<U1F50>..<U1F57>;/
+ <U1F59>;<U1F5B>;<U1F5D>;<U1F5F>..<U1F7D>;<U1F80>..<U1FB4>;/
+ <U1FB6>..<U1FC4>;<U1FC6>..<U1FD3>;<U1FD6>..<U1FDB>;<U1FDD>..<U1FEF>;/
+ <U1FF2>..<U1FF4>;<U1FF6>..<U1FFE>;<U2007>;<U200B>..<U2027>;/
+ <U202A>..<U205E>;<U2060>..<U2064>;<U2066>..<U2071>;<U2074>..<U208E>;/
+ <U2090>..<U209C>;<U20A0>..<U20C0>;<U20D0>..<U20F0>;<U2100>..<U218B>;/
+ <U2190>..<U2429>;<U2440>..<U244A>;<U2460>..<U2B73>;<U2B76>..<U2B95>;/
+ <U2B97>..<U2CF3>;<U2CF9>..<U2D25>;<U2D27>;<U2D2D>;<U2D30>..<U2D67>;/
+ <U2D6F>..<U2D70>;<U2D7F>..<U2D96>;<U2DA0>..<U2DA6>;<U2DA8>..<U2DAE>;/
+ <U2DB0>..<U2DB6>;<U2DB8>..<U2DBE>;<U2DC0>..<U2DC6>;<U2DC8>..<U2DCE>;/
+ <U2DD0>..<U2DD6>;<U2DD8>..<U2DDE>;<U2DE0>..<U2E5D>;<U2E80>..<U2E99>;/
+ <U2E9B>..<U2EF3>;<U2F00>..<U2FD5>;<U2FF0>..<U2FFF>;<U3001>..<U303F>;/
+ <U3041>..<U3096>;<U3099>..<U30FF>;<U3105>..<U312F>;<U3131>..<U318E>;/
+ <U3190>..<U31E5>;<U31EF>..<U321E>;<U3220>..<UA48C>;<UA490>..<UA4C6>;/
+ <UA4D0>..<UA62B>;<UA640>..<UA6F7>;<UA700>..<UA7CD>;<UA7D0>..<UA7D1>;/
+ <UA7D3>;<UA7D5>..<UA7DC>;<UA7F2>..<UA82C>;<UA830>..<UA839>;/
+ <UA840>..<UA877>;<UA880>..<UA8C5>;<UA8CE>..<UA8D9>;<UA8E0>..<UA953>;/
+ <UA95F>..<UA97C>;<UA980>..<UA9CD>;<UA9CF>..<UA9D9>;<UA9DE>..<UA9FE>;/
+ <UAA00>..<UAA36>;<UAA40>..<UAA4D>;<UAA50>..<UAA59>;<UAA5C>..<UAAC2>;/
+ <UAADB>..<UAAF6>;<UAB01>..<UAB06>;<UAB09>..<UAB0E>;<UAB11>..<UAB16>;/
+ <UAB20>..<UAB26>;<UAB28>..<UAB2E>;<UAB30>..<UAB6B>;<UAB70>..<UABED>;/
+ <UABF0>..<UABF9>;<UAC00>..<UD7A3>;<UD7B0>..<UD7C6>;<UD7CB>..<UD7FB>;/
+ <UE000>..<UFA6D>;<UFA70>..<UFAD9>;<UFB00>..<UFB06>;<UFB13>..<UFB17>;/
+ <UFB1D>..<UFB36>;<UFB38>..<UFB3C>;<UFB3E>;<UFB40>..<UFB41>;/
+ <UFB43>..<UFB44>;<UFB46>..<UFBC2>;<UFBD3>..<UFD8F>;<UFD92>..<UFDC7>;/
+ <UFDCF>;<UFDF0>..<UFE19>;<UFE20>..<UFE52>;<UFE54>..<UFE66>;/
+ <UFE68>..<UFE6B>;<UFE70>..<UFE74>;<UFE76>..<UFEFC>;<UFEFF>;/
+ <UFF01>..<UFFBE>;<UFFC2>..<UFFC7>;<UFFCA>..<UFFCF>;<UFFD2>..<UFFD7>;/
+ <UFFDA>..<UFFDC>;<UFFE0>..<UFFE6>;<UFFE8>..<UFFEE>;<UFFF9>..<UFFFD>;/
+ <U00010000>..<U0001000B>;<U0001000D>..<U00010026>;/
<U00010028>..<U0001003A>;<U0001003C>..<U0001003D>;/
<U0001003F>..<U0001004D>;<U00010050>..<U0001005D>;/
<U00010080>..<U000100FA>;<U00010100>..<U00010102>;/
@@ -761,94 +782,105 @@ graph /
<U0001057C>..<U0001058A>;<U0001058C>..<U00010592>;/
<U00010594>..<U00010595>;<U00010597>..<U000105A1>;/
<U000105A3>..<U000105B1>;<U000105B3>..<U000105B9>;/
- <U000105BB>..<U000105BC>;<U00010600>..<U00010736>;/
- <U00010740>..<U00010755>;<U00010760>..<U00010767>;/
- <U00010780>..<U00010785>;<U00010787>..<U000107B0>;/
- <U000107B2>..<U000107BA>;<U00010800>..<U00010805>;<U00010808>;/
- <U0001080A>..<U00010835>;<U00010837>..<U00010838>;<U0001083C>;/
- <U0001083F>..<U00010855>;<U00010857>..<U0001089E>;/
- <U000108A7>..<U000108AF>;<U000108E0>..<U000108F2>;/
- <U000108F4>..<U000108F5>;<U000108FB>..<U0001091B>;/
- <U0001091F>..<U00010939>;<U0001093F>;<U00010980>..<U000109B7>;/
- <U000109BC>..<U000109CF>;<U000109D2>..<U00010A03>;/
- <U00010A05>..<U00010A06>;<U00010A0C>..<U00010A13>;/
- <U00010A15>..<U00010A17>;<U00010A19>..<U00010A35>;/
- <U00010A38>..<U00010A3A>;<U00010A3F>..<U00010A48>;/
- <U00010A50>..<U00010A58>;<U00010A60>..<U00010A9F>;/
- <U00010AC0>..<U00010AE6>;<U00010AEB>..<U00010AF6>;/
- <U00010B00>..<U00010B35>;<U00010B39>..<U00010B55>;/
- <U00010B58>..<U00010B72>;<U00010B78>..<U00010B91>;/
- <U00010B99>..<U00010B9C>;<U00010BA9>..<U00010BAF>;/
- <U00010C00>..<U00010C48>;<U00010C80>..<U00010CB2>;/
- <U00010CC0>..<U00010CF2>;<U00010CFA>..<U00010D27>;/
- <U00010D30>..<U00010D39>;<U00010E60>..<U00010E7E>;/
+ <U000105BB>..<U000105BC>;<U000105C0>..<U000105F3>;/
+ <U00010600>..<U00010736>;<U00010740>..<U00010755>;/
+ <U00010760>..<U00010767>;<U00010780>..<U00010785>;/
+ <U00010787>..<U000107B0>;<U000107B2>..<U000107BA>;/
+ <U00010800>..<U00010805>;<U00010808>;<U0001080A>..<U00010835>;/
+ <U00010837>..<U00010838>;<U0001083C>;<U0001083F>..<U00010855>;/
+ <U00010857>..<U0001089E>;<U000108A7>..<U000108AF>;/
+ <U000108E0>..<U000108F2>;<U000108F4>..<U000108F5>;/
+ <U000108FB>..<U0001091B>;<U0001091F>..<U00010939>;<U0001093F>;/
+ <U00010980>..<U000109B7>;<U000109BC>..<U000109CF>;/
+ <U000109D2>..<U00010A03>;<U00010A05>..<U00010A06>;/
+ <U00010A0C>..<U00010A13>;<U00010A15>..<U00010A17>;/
+ <U00010A19>..<U00010A35>;<U00010A38>..<U00010A3A>;/
+ <U00010A3F>..<U00010A48>;<U00010A50>..<U00010A58>;/
+ <U00010A60>..<U00010A9F>;<U00010AC0>..<U00010AE6>;/
+ <U00010AEB>..<U00010AF6>;<U00010B00>..<U00010B35>;/
+ <U00010B39>..<U00010B55>;<U00010B58>..<U00010B72>;/
+ <U00010B78>..<U00010B91>;<U00010B99>..<U00010B9C>;/
+ <U00010BA9>..<U00010BAF>;<U00010C00>..<U00010C48>;/
+ <U00010C80>..<U00010CB2>;<U00010CC0>..<U00010CF2>;/
+ <U00010CFA>..<U00010D27>;<U00010D30>..<U00010D39>;/
+ <U00010D40>..<U00010D65>;<U00010D69>..<U00010D85>;/
+ <U00010D8E>..<U00010D8F>;<U00010E60>..<U00010E7E>;/
<U00010E80>..<U00010EA9>;<U00010EAB>..<U00010EAD>;/
- <U00010EB0>..<U00010EB1>;<U00010EFD>..<U00010F27>;/
- <U00010F30>..<U00010F59>;<U00010F70>..<U00010F89>;/
- <U00010FB0>..<U00010FCB>;<U00010FE0>..<U00010FF6>;/
- <U00011000>..<U0001104D>;<U00011052>..<U00011075>;/
- <U0001107F>..<U000110C2>;<U000110CD>;<U000110D0>..<U000110E8>;/
- <U000110F0>..<U000110F9>;<U00011100>..<U00011134>;/
- <U00011136>..<U00011147>;<U00011150>..<U00011176>;/
- <U00011180>..<U000111DF>;<U000111E1>..<U000111F4>;/
- <U00011200>..<U00011211>;<U00011213>..<U00011241>;/
- <U00011280>..<U00011286>;<U00011288>;<U0001128A>..<U0001128D>;/
- <U0001128F>..<U0001129D>;<U0001129F>..<U000112A9>;/
- <U000112B0>..<U000112EA>;<U000112F0>..<U000112F9>;/
- <U00011300>..<U00011303>;<U00011305>..<U0001130C>;/
- <U0001130F>..<U00011310>;<U00011313>..<U00011328>;/
- <U0001132A>..<U00011330>;<U00011332>..<U00011333>;/
- <U00011335>..<U00011339>;<U0001133B>..<U00011344>;/
- <U00011347>..<U00011348>;<U0001134B>..<U0001134D>;<U00011350>;/
- <U00011357>;<U0001135D>..<U00011363>;<U00011366>..<U0001136C>;/
- <U00011370>..<U00011374>;<U00011400>..<U0001145B>;/
+ <U00010EB0>..<U00010EB1>;<U00010EC2>..<U00010EC4>;/
+ <U00010EFC>..<U00010F27>;<U00010F30>..<U00010F59>;/
+ <U00010F70>..<U00010F89>;<U00010FB0>..<U00010FCB>;/
+ <U00010FE0>..<U00010FF6>;<U00011000>..<U0001104D>;/
+ <U00011052>..<U00011075>;<U0001107F>..<U000110C2>;<U000110CD>;/
+ <U000110D0>..<U000110E8>;<U000110F0>..<U000110F9>;/
+ <U00011100>..<U00011134>;<U00011136>..<U00011147>;/
+ <U00011150>..<U00011176>;<U00011180>..<U000111DF>;/
+ <U000111E1>..<U000111F4>;<U00011200>..<U00011211>;/
+ <U00011213>..<U00011241>;<U00011280>..<U00011286>;<U00011288>;/
+ <U0001128A>..<U0001128D>;<U0001128F>..<U0001129D>;/
+ <U0001129F>..<U000112A9>;<U000112B0>..<U000112EA>;/
+ <U000112F0>..<U000112F9>;<U00011300>..<U00011303>;/
+ <U00011305>..<U0001130C>;<U0001130F>..<U00011310>;/
+ <U00011313>..<U00011328>;<U0001132A>..<U00011330>;/
+ <U00011332>..<U00011333>;<U00011335>..<U00011339>;/
+ <U0001133B>..<U00011344>;<U00011347>..<U00011348>;/
+ <U0001134B>..<U0001134D>;<U00011350>;<U00011357>;/
+ <U0001135D>..<U00011363>;<U00011366>..<U0001136C>;/
+ <U00011370>..<U00011374>;<U00011380>..<U00011389>;<U0001138B>;/
+ <U0001138E>;<U00011390>..<U000113B5>;<U000113B7>..<U000113C0>;/
+ <U000113C2>;<U000113C5>;<U000113C7>..<U000113CA>;/
+ <U000113CC>..<U000113D5>;<U000113D7>..<U000113D8>;/
+ <U000113E1>..<U000113E2>;<U00011400>..<U0001145B>;/
<U0001145D>..<U00011461>;<U00011480>..<U000114C7>;/
<U000114D0>..<U000114D9>;<U00011580>..<U000115B5>;/
<U000115B8>..<U000115DD>;<U00011600>..<U00011644>;/
<U00011650>..<U00011659>;<U00011660>..<U0001166C>;/
<U00011680>..<U000116B9>;<U000116C0>..<U000116C9>;/
- <U00011700>..<U0001171A>;<U0001171D>..<U0001172B>;/
- <U00011730>..<U00011746>;<U00011800>..<U0001183B>;/
- <U000118A0>..<U000118F2>;<U000118FF>..<U00011906>;<U00011909>;/
- <U0001190C>..<U00011913>;<U00011915>..<U00011916>;/
- <U00011918>..<U00011935>;<U00011937>..<U00011938>;/
- <U0001193B>..<U00011946>;<U00011950>..<U00011959>;/
- <U000119A0>..<U000119A7>;<U000119AA>..<U000119D7>;/
- <U000119DA>..<U000119E4>;<U00011A00>..<U00011A47>;/
- <U00011A50>..<U00011AA2>;<U00011AB0>..<U00011AF8>;/
- <U00011B00>..<U00011B09>;<U00011C00>..<U00011C08>;/
- <U00011C0A>..<U00011C36>;<U00011C38>..<U00011C45>;/
- <U00011C50>..<U00011C6C>;<U00011C70>..<U00011C8F>;/
- <U00011C92>..<U00011CA7>;<U00011CA9>..<U00011CB6>;/
- <U00011D00>..<U00011D06>;<U00011D08>..<U00011D09>;/
- <U00011D0B>..<U00011D36>;<U00011D3A>;<U00011D3C>..<U00011D3D>;/
- <U00011D3F>..<U00011D47>;<U00011D50>..<U00011D59>;/
- <U00011D60>..<U00011D65>;<U00011D67>..<U00011D68>;/
- <U00011D6A>..<U00011D8E>;<U00011D90>..<U00011D91>;/
- <U00011D93>..<U00011D98>;<U00011DA0>..<U00011DA9>;/
- <U00011EE0>..<U00011EF8>;<U00011F00>..<U00011F10>;/
- <U00011F12>..<U00011F3A>;<U00011F3E>..<U00011F59>;<U00011FB0>;/
- <U00011FC0>..<U00011FF1>;<U00011FFF>..<U00012399>;/
- <U00012400>..<U0001246E>;<U00012470>..<U00012474>;/
- <U00012480>..<U00012543>;<U00012F90>..<U00012FF2>;/
- <U00013000>..<U00013455>;<U00014400>..<U00014646>;/
- <U00016800>..<U00016A38>;<U00016A40>..<U00016A5E>;/
- <U00016A60>..<U00016A69>;<U00016A6E>..<U00016ABE>;/
- <U00016AC0>..<U00016AC9>;<U00016AD0>..<U00016AED>;/
- <U00016AF0>..<U00016AF5>;<U00016B00>..<U00016B45>;/
- <U00016B50>..<U00016B59>;<U00016B5B>..<U00016B61>;/
- <U00016B63>..<U00016B77>;<U00016B7D>..<U00016B8F>;/
+ <U000116D0>..<U000116E3>;<U00011700>..<U0001171A>;/
+ <U0001171D>..<U0001172B>;<U00011730>..<U00011746>;/
+ <U00011800>..<U0001183B>;<U000118A0>..<U000118F2>;/
+ <U000118FF>..<U00011906>;<U00011909>;<U0001190C>..<U00011913>;/
+ <U00011915>..<U00011916>;<U00011918>..<U00011935>;/
+ <U00011937>..<U00011938>;<U0001193B>..<U00011946>;/
+ <U00011950>..<U00011959>;<U000119A0>..<U000119A7>;/
+ <U000119AA>..<U000119D7>;<U000119DA>..<U000119E4>;/
+ <U00011A00>..<U00011A47>;<U00011A50>..<U00011AA2>;/
+ <U00011AB0>..<U00011AF8>;<U00011B00>..<U00011B09>;/
+ <U00011BC0>..<U00011BE1>;<U00011BF0>..<U00011BF9>;/
+ <U00011C00>..<U00011C08>;<U00011C0A>..<U00011C36>;/
+ <U00011C38>..<U00011C45>;<U00011C50>..<U00011C6C>;/
+ <U00011C70>..<U00011C8F>;<U00011C92>..<U00011CA7>;/
+ <U00011CA9>..<U00011CB6>;<U00011D00>..<U00011D06>;/
+ <U00011D08>..<U00011D09>;<U00011D0B>..<U00011D36>;<U00011D3A>;/
+ <U00011D3C>..<U00011D3D>;<U00011D3F>..<U00011D47>;/
+ <U00011D50>..<U00011D59>;<U00011D60>..<U00011D65>;/
+ <U00011D67>..<U00011D68>;<U00011D6A>..<U00011D8E>;/
+ <U00011D90>..<U00011D91>;<U00011D93>..<U00011D98>;/
+ <U00011DA0>..<U00011DA9>;<U00011EE0>..<U00011EF8>;/
+ <U00011F00>..<U00011F10>;<U00011F12>..<U00011F3A>;/
+ <U00011F3E>..<U00011F5A>;<U00011FB0>;<U00011FC0>..<U00011FF1>;/
+ <U00011FFF>..<U00012399>;<U00012400>..<U0001246E>;/
+ <U00012470>..<U00012474>;<U00012480>..<U00012543>;/
+ <U00012F90>..<U00012FF2>;<U00013000>..<U00013455>;/
+ <U00013460>..<U000143FA>;<U00014400>..<U00014646>;/
+ <U00016100>..<U00016139>;<U00016800>..<U00016A38>;/
+ <U00016A40>..<U00016A5E>;<U00016A60>..<U00016A69>;/
+ <U00016A6E>..<U00016ABE>;<U00016AC0>..<U00016AC9>;/
+ <U00016AD0>..<U00016AED>;<U00016AF0>..<U00016AF5>;/
+ <U00016B00>..<U00016B45>;<U00016B50>..<U00016B59>;/
+ <U00016B5B>..<U00016B61>;<U00016B63>..<U00016B77>;/
+ <U00016B7D>..<U00016B8F>;<U00016D40>..<U00016D79>;/
<U00016E40>..<U00016E9A>;<U00016F00>..<U00016F4A>;/
<U00016F4F>..<U00016F87>;<U00016F8F>..<U00016F9F>;/
<U00016FE0>..<U00016FE4>;<U00016FF0>..<U00016FF1>;/
<U00017000>..<U000187F7>;<U00018800>..<U00018CD5>;/
- <U00018D00>..<U00018D08>;<U0001AFF0>..<U0001AFF3>;/
+ <U00018CFF>..<U00018D08>;<U0001AFF0>..<U0001AFF3>;/
<U0001AFF5>..<U0001AFFB>;<U0001AFFD>..<U0001AFFE>;/
<U0001B000>..<U0001B122>;<U0001B132>;<U0001B150>..<U0001B152>;/
<U0001B155>;<U0001B164>..<U0001B167>;<U0001B170>..<U0001B2FB>;/
<U0001BC00>..<U0001BC6A>;<U0001BC70>..<U0001BC7C>;/
<U0001BC80>..<U0001BC88>;<U0001BC90>..<U0001BC99>;/
- <U0001BC9C>..<U0001BCA3>;<U0001CF00>..<U0001CF2D>;/
+ <U0001BC9C>..<U0001BCA3>;<U0001CC00>..<U0001CCF9>;/
+ <U0001CD00>..<U0001CEB3>;<U0001CF00>..<U0001CF2D>;/
<U0001CF30>..<U0001CF46>;<U0001CF50>..<U0001CFC3>;/
<U0001D000>..<U0001D0F5>;<U0001D100>..<U0001D126>;/
<U0001D129>..<U0001D1EA>;<U0001D200>..<U0001D245>;/
@@ -871,16 +903,16 @@ graph /
<U0001E100>..<U0001E12C>;<U0001E130>..<U0001E13D>;/
<U0001E140>..<U0001E149>;<U0001E14E>..<U0001E14F>;/
<U0001E290>..<U0001E2AE>;<U0001E2C0>..<U0001E2F9>;<U0001E2FF>;/
- <U0001E4D0>..<U0001E4F9>;<U0001E7E0>..<U0001E7E6>;/
- <U0001E7E8>..<U0001E7EB>;<U0001E7ED>..<U0001E7EE>;/
- <U0001E7F0>..<U0001E7FE>;<U0001E800>..<U0001E8C4>;/
- <U0001E8C7>..<U0001E8D6>;<U0001E900>..<U0001E94B>;/
- <U0001E950>..<U0001E959>;<U0001E95E>..<U0001E95F>;/
- <U0001EC71>..<U0001ECB4>;<U0001ED01>..<U0001ED3D>;/
- <U0001EE00>..<U0001EE03>;<U0001EE05>..<U0001EE1F>;/
- <U0001EE21>..<U0001EE22>;<U0001EE24>;<U0001EE27>;/
- <U0001EE29>..<U0001EE32>;<U0001EE34>..<U0001EE37>;<U0001EE39>;/
- <U0001EE3B>;<U0001EE42>;<U0001EE47>;<U0001EE49>;<U0001EE4B>;/
+ <U0001E4D0>..<U0001E4F9>;<U0001E5D0>..<U0001E5FA>;<U0001E5FF>;/
+ <U0001E7E0>..<U0001E7E6>;<U0001E7E8>..<U0001E7EB>;/
+ <U0001E7ED>..<U0001E7EE>;<U0001E7F0>..<U0001E7FE>;/
+ <U0001E800>..<U0001E8C4>;<U0001E8C7>..<U0001E8D6>;/
+ <U0001E900>..<U0001E94B>;<U0001E950>..<U0001E959>;/
+ <U0001E95E>..<U0001E95F>;<U0001EC71>..<U0001ECB4>;/
+ <U0001ED01>..<U0001ED3D>;<U0001EE00>..<U0001EE03>;/
+ <U0001EE05>..<U0001EE1F>;<U0001EE21>..<U0001EE22>;<U0001EE24>;/
+ <U0001EE27>;<U0001EE29>..<U0001EE32>;<U0001EE34>..<U0001EE37>;/
+ <U0001EE39>;<U0001EE3B>;<U0001EE42>;<U0001EE47>;<U0001EE49>;<U0001EE4B>;/
<U0001EE4D>..<U0001EE4F>;<U0001EE51>..<U0001EE52>;<U0001EE54>;/
<U0001EE57>;<U0001EE59>;<U0001EE5B>;<U0001EE5D>;<U0001EE5F>;/
<U0001EE61>..<U0001EE62>;<U0001EE64>;<U0001EE67>..<U0001EE6A>;/
@@ -900,19 +932,19 @@ graph /
<U0001F7E0>..<U0001F7EB>;<U0001F7F0>;<U0001F800>..<U0001F80B>;/
<U0001F810>..<U0001F847>;<U0001F850>..<U0001F859>;/
<U0001F860>..<U0001F887>;<U0001F890>..<U0001F8AD>;/
- <U0001F8B0>..<U0001F8B1>;<U0001F900>..<U0001FA53>;/
- <U0001FA60>..<U0001FA6D>;<U0001FA70>..<U0001FA7C>;/
- <U0001FA80>..<U0001FA88>;<U0001FA90>..<U0001FABD>;/
- <U0001FABF>..<U0001FAC5>;<U0001FACE>..<U0001FADB>;/
- <U0001FAE0>..<U0001FAE8>;<U0001FAF0>..<U0001FAF8>;/
- <U0001FB00>..<U0001FB92>;<U0001FB94>..<U0001FBCA>;/
- <U0001FBF0>..<U0001FBF9>;<U00020000>..<U0002A6DF>;/
- <U0002A700>..<U0002B739>;<U0002B740>..<U0002B81D>;/
- <U0002B820>..<U0002CEA1>;<U0002CEB0>..<U0002EBE0>;/
- <U0002EBF0>..<U0002EE5D>;<U0002F800>..<U0002FA1D>;/
- <U00030000>..<U0003134A>;<U00031350>..<U000323AF>;<U000E0001>;/
- <U000E0020>..<U000E007F>;<U000E0100>..<U000E01EF>;/
- <U000F0000>..<U000FFFFD>;<U00100000>..<U0010FFFD>
+ <U0001F8B0>..<U0001F8BB>;<U0001F8C0>..<U0001F8C1>;/
+ <U0001F900>..<U0001FA53>;<U0001FA60>..<U0001FA6D>;/
+ <U0001FA70>..<U0001FA7C>;<U0001FA80>..<U0001FA89>;/
+ <U0001FA8F>..<U0001FAC6>;<U0001FACE>..<U0001FADC>;/
+ <U0001FADF>..<U0001FAE9>;<U0001FAF0>..<U0001FAF8>;/
+ <U0001FB00>..<U0001FB92>;<U0001FB94>..<U0001FBF9>;/
+ <U00020000>..<U0002A6DF>;<U0002A700>..<U0002B739>;/
+ <U0002B740>..<U0002B81D>;<U0002B820>..<U0002CEA1>;/
+ <U0002CEB0>..<U0002EBE0>;<U0002EBF0>..<U0002EE5D>;/
+ <U0002F800>..<U0002FA1D>;<U00030000>..<U0003134A>;/
+ <U00031350>..<U000323AF>;<U000E0001>;<U000E0020>..<U000E007F>;/
+ <U000E0100>..<U000E01EF>;<U000F0000>..<U000FFFFD>;/
+ <U00100000>..<U0010FFFD>
print /
<U0020>..<U007E>;<U00A0>..<U0377>;<U037A>..<U037F>;<U0384>..<U038A>;/
@@ -921,7 +953,7 @@ print /
<U05EF>..<U05F4>;<U0600>..<U070D>;<U070F>..<U074A>;<U074D>..<U07B1>;/
<U07C0>..<U07FA>;<U07FD>..<U082D>;<U0830>..<U083E>;<U0840>..<U085B>;/
<U085E>;<U0860>..<U086A>;<U0870>..<U088E>;<U0890>..<U0891>;/
- <U0898>..<U0983>;<U0985>..<U098C>;<U098F>..<U0990>;<U0993>..<U09A8>;/
+ <U0897>..<U0983>;<U0985>..<U098C>;<U098F>..<U0990>;<U0993>..<U09A8>;/
<U09AA>..<U09B0>;<U09B2>;<U09B6>..<U09B9>;<U09BC>..<U09C4>;/
<U09C7>..<U09C8>;<U09CB>..<U09CE>;<U09D7>;<U09DC>..<U09DD>;/
<U09DF>..<U09E3>;<U09E6>..<U09FE>;<U0A01>..<U0A03>;<U0A05>..<U0A0A>;/
@@ -967,38 +999,38 @@ print /
<U1930>..<U193B>;<U1940>;<U1944>..<U196D>;<U1970>..<U1974>;/
<U1980>..<U19AB>;<U19B0>..<U19C9>;<U19D0>..<U19DA>;<U19DE>..<U1A1B>;/
<U1A1E>..<U1A5E>;<U1A60>..<U1A7C>;<U1A7F>..<U1A89>;<U1A90>..<U1A99>;/
- <U1AA0>..<U1AAD>;<U1AB0>..<U1ACE>;<U1B00>..<U1B4C>;<U1B50>..<U1B7E>;/
- <U1B80>..<U1BF3>;<U1BFC>..<U1C37>;<U1C3B>..<U1C49>;<U1C4D>..<U1C88>;/
- <U1C90>..<U1CBA>;<U1CBD>..<U1CC7>;<U1CD0>..<U1CFA>;<U1D00>..<U1F15>;/
- <U1F18>..<U1F1D>;<U1F20>..<U1F45>;<U1F48>..<U1F4D>;<U1F50>..<U1F57>;/
- <U1F59>;<U1F5B>;<U1F5D>;<U1F5F>..<U1F7D>;<U1F80>..<U1FB4>;/
- <U1FB6>..<U1FC4>;<U1FC6>..<U1FD3>;<U1FD6>..<U1FDB>;<U1FDD>..<U1FEF>;/
- <U1FF2>..<U1FF4>;<U1FF6>..<U1FFE>;<U2000>..<U2027>;<U202A>..<U2064>;/
- <U2066>..<U2071>;<U2074>..<U208E>;<U2090>..<U209C>;<U20A0>..<U20C0>;/
- <U20D0>..<U20F0>;<U2100>..<U218B>;<U2190>..<U2426>;<U2440>..<U244A>;/
- <U2460>..<U2B73>;<U2B76>..<U2B95>;<U2B97>..<U2CF3>;<U2CF9>..<U2D25>;/
- <U2D27>;<U2D2D>;<U2D30>..<U2D67>;<U2D6F>..<U2D70>;<U2D7F>..<U2D96>;/
- <U2DA0>..<U2DA6>;<U2DA8>..<U2DAE>;<U2DB0>..<U2DB6>;<U2DB8>..<U2DBE>;/
- <U2DC0>..<U2DC6>;<U2DC8>..<U2DCE>;<U2DD0>..<U2DD6>;<U2DD8>..<U2DDE>;/
- <U2DE0>..<U2E5D>;<U2E80>..<U2E99>;<U2E9B>..<U2EF3>;<U2F00>..<U2FD5>;/
- <U2FF0>..<U303F>;<U3041>..<U3096>;<U3099>..<U30FF>;<U3105>..<U312F>;/
- <U3131>..<U318E>;<U3190>..<U31E3>;<U31EF>..<U321E>;<U3220>..<UA48C>;/
- <UA490>..<UA4C6>;<UA4D0>..<UA62B>;<UA640>..<UA6F7>;<UA700>..<UA7CA>;/
- <UA7D0>..<UA7D1>;<UA7D3>;<UA7D5>..<UA7D9>;<UA7F2>..<UA82C>;/
- <UA830>..<UA839>;<UA840>..<UA877>;<UA880>..<UA8C5>;<UA8CE>..<UA8D9>;/
- <UA8E0>..<UA953>;<UA95F>..<UA97C>;<UA980>..<UA9CD>;<UA9CF>..<UA9D9>;/
- <UA9DE>..<UA9FE>;<UAA00>..<UAA36>;<UAA40>..<UAA4D>;<UAA50>..<UAA59>;/
- <UAA5C>..<UAAC2>;<UAADB>..<UAAF6>;<UAB01>..<UAB06>;<UAB09>..<UAB0E>;/
- <UAB11>..<UAB16>;<UAB20>..<UAB26>;<UAB28>..<UAB2E>;<UAB30>..<UAB6B>;/
- <UAB70>..<UABED>;<UABF0>..<UABF9>;<UAC00>..<UD7A3>;<UD7B0>..<UD7C6>;/
- <UD7CB>..<UD7FB>;<UE000>..<UFA6D>;<UFA70>..<UFAD9>;<UFB00>..<UFB06>;/
- <UFB13>..<UFB17>;<UFB1D>..<UFB36>;<UFB38>..<UFB3C>;<UFB3E>;/
- <UFB40>..<UFB41>;<UFB43>..<UFB44>;<UFB46>..<UFBC2>;<UFBD3>..<UFD8F>;/
- <UFD92>..<UFDC7>;<UFDCF>;<UFDF0>..<UFE19>;<UFE20>..<UFE52>;/
- <UFE54>..<UFE66>;<UFE68>..<UFE6B>;<UFE70>..<UFE74>;<UFE76>..<UFEFC>;/
- <UFEFF>;<UFF01>..<UFFBE>;<UFFC2>..<UFFC7>;<UFFCA>..<UFFCF>;/
- <UFFD2>..<UFFD7>;<UFFDA>..<UFFDC>;<UFFE0>..<UFFE6>;<UFFE8>..<UFFEE>;/
- <UFFF9>..<UFFFD>;<U00010000>..<U0001000B>;<U0001000D>..<U00010026>;/
+ <U1AA0>..<U1AAD>;<U1AB0>..<U1ACE>;<U1B00>..<U1B4C>;<U1B4E>..<U1BF3>;/
+ <U1BFC>..<U1C37>;<U1C3B>..<U1C49>;<U1C4D>..<U1C8A>;<U1C90>..<U1CBA>;/
+ <U1CBD>..<U1CC7>;<U1CD0>..<U1CFA>;<U1D00>..<U1F15>;<U1F18>..<U1F1D>;/
+ <U1F20>..<U1F45>;<U1F48>..<U1F4D>;<U1F50>..<U1F57>;<U1F59>;<U1F5B>;/
+ <U1F5D>;<U1F5F>..<U1F7D>;<U1F80>..<U1FB4>;<U1FB6>..<U1FC4>;/
+ <U1FC6>..<U1FD3>;<U1FD6>..<U1FDB>;<U1FDD>..<U1FEF>;<U1FF2>..<U1FF4>;/
+ <U1FF6>..<U1FFE>;<U2000>..<U2027>;<U202A>..<U2064>;<U2066>..<U2071>;/
+ <U2074>..<U208E>;<U2090>..<U209C>;<U20A0>..<U20C0>;<U20D0>..<U20F0>;/
+ <U2100>..<U218B>;<U2190>..<U2429>;<U2440>..<U244A>;<U2460>..<U2B73>;/
+ <U2B76>..<U2B95>;<U2B97>..<U2CF3>;<U2CF9>..<U2D25>;<U2D27>;<U2D2D>;/
+ <U2D30>..<U2D67>;<U2D6F>..<U2D70>;<U2D7F>..<U2D96>;<U2DA0>..<U2DA6>;/
+ <U2DA8>..<U2DAE>;<U2DB0>..<U2DB6>;<U2DB8>..<U2DBE>;<U2DC0>..<U2DC6>;/
+ <U2DC8>..<U2DCE>;<U2DD0>..<U2DD6>;<U2DD8>..<U2DDE>;<U2DE0>..<U2E5D>;/
+ <U2E80>..<U2E99>;<U2E9B>..<U2EF3>;<U2F00>..<U2FD5>;<U2FF0>..<U303F>;/
+ <U3041>..<U3096>;<U3099>..<U30FF>;<U3105>..<U312F>;<U3131>..<U318E>;/
+ <U3190>..<U31E5>;<U31EF>..<U321E>;<U3220>..<UA48C>;<UA490>..<UA4C6>;/
+ <UA4D0>..<UA62B>;<UA640>..<UA6F7>;<UA700>..<UA7CD>;<UA7D0>..<UA7D1>;/
+ <UA7D3>;<UA7D5>..<UA7DC>;<UA7F2>..<UA82C>;<UA830>..<UA839>;/
+ <UA840>..<UA877>;<UA880>..<UA8C5>;<UA8CE>..<UA8D9>;<UA8E0>..<UA953>;/
+ <UA95F>..<UA97C>;<UA980>..<UA9CD>;<UA9CF>..<UA9D9>;<UA9DE>..<UA9FE>;/
+ <UAA00>..<UAA36>;<UAA40>..<UAA4D>;<UAA50>..<UAA59>;<UAA5C>..<UAAC2>;/
+ <UAADB>..<UAAF6>;<UAB01>..<UAB06>;<UAB09>..<UAB0E>;<UAB11>..<UAB16>;/
+ <UAB20>..<UAB26>;<UAB28>..<UAB2E>;<UAB30>..<UAB6B>;<UAB70>..<UABED>;/
+ <UABF0>..<UABF9>;<UAC00>..<UD7A3>;<UD7B0>..<UD7C6>;<UD7CB>..<UD7FB>;/
+ <UE000>..<UFA6D>;<UFA70>..<UFAD9>;<UFB00>..<UFB06>;<UFB13>..<UFB17>;/
+ <UFB1D>..<UFB36>;<UFB38>..<UFB3C>;<UFB3E>;<UFB40>..<UFB41>;/
+ <UFB43>..<UFB44>;<UFB46>..<UFBC2>;<UFBD3>..<UFD8F>;<UFD92>..<UFDC7>;/
+ <UFDCF>;<UFDF0>..<UFE19>;<UFE20>..<UFE52>;<UFE54>..<UFE66>;/
+ <UFE68>..<UFE6B>;<UFE70>..<UFE74>;<UFE76>..<UFEFC>;<UFEFF>;/
+ <UFF01>..<UFFBE>;<UFFC2>..<UFFC7>;<UFFCA>..<UFFCF>;<UFFD2>..<UFFD7>;/
+ <UFFDA>..<UFFDC>;<UFFE0>..<UFFE6>;<UFFE8>..<UFFEE>;<UFFF9>..<UFFFD>;/
+ <U00010000>..<U0001000B>;<U0001000D>..<U00010026>;/
<U00010028>..<U0001003A>;<U0001003C>..<U0001003D>;/
<U0001003F>..<U0001004D>;<U00010050>..<U0001005D>;/
<U00010080>..<U000100FA>;<U00010100>..<U00010102>;/
@@ -1015,94 +1047,105 @@ print /
<U0001057C>..<U0001058A>;<U0001058C>..<U00010592>;/
<U00010594>..<U00010595>;<U00010597>..<U000105A1>;/
<U000105A3>..<U000105B1>;<U000105B3>..<U000105B9>;/
- <U000105BB>..<U000105BC>;<U00010600>..<U00010736>;/
- <U00010740>..<U00010755>;<U00010760>..<U00010767>;/
- <U00010780>..<U00010785>;<U00010787>..<U000107B0>;/
- <U000107B2>..<U000107BA>;<U00010800>..<U00010805>;<U00010808>;/
- <U0001080A>..<U00010835>;<U00010837>..<U00010838>;<U0001083C>;/
- <U0001083F>..<U00010855>;<U00010857>..<U0001089E>;/
- <U000108A7>..<U000108AF>;<U000108E0>..<U000108F2>;/
- <U000108F4>..<U000108F5>;<U000108FB>..<U0001091B>;/
- <U0001091F>..<U00010939>;<U0001093F>;<U00010980>..<U000109B7>;/
- <U000109BC>..<U000109CF>;<U000109D2>..<U00010A03>;/
- <U00010A05>..<U00010A06>;<U00010A0C>..<U00010A13>;/
- <U00010A15>..<U00010A17>;<U00010A19>..<U00010A35>;/
- <U00010A38>..<U00010A3A>;<U00010A3F>..<U00010A48>;/
- <U00010A50>..<U00010A58>;<U00010A60>..<U00010A9F>;/
- <U00010AC0>..<U00010AE6>;<U00010AEB>..<U00010AF6>;/
- <U00010B00>..<U00010B35>;<U00010B39>..<U00010B55>;/
- <U00010B58>..<U00010B72>;<U00010B78>..<U00010B91>;/
- <U00010B99>..<U00010B9C>;<U00010BA9>..<U00010BAF>;/
- <U00010C00>..<U00010C48>;<U00010C80>..<U00010CB2>;/
- <U00010CC0>..<U00010CF2>;<U00010CFA>..<U00010D27>;/
- <U00010D30>..<U00010D39>;<U00010E60>..<U00010E7E>;/
+ <U000105BB>..<U000105BC>;<U000105C0>..<U000105F3>;/
+ <U00010600>..<U00010736>;<U00010740>..<U00010755>;/
+ <U00010760>..<U00010767>;<U00010780>..<U00010785>;/
+ <U00010787>..<U000107B0>;<U000107B2>..<U000107BA>;/
+ <U00010800>..<U00010805>;<U00010808>;<U0001080A>..<U00010835>;/
+ <U00010837>..<U00010838>;<U0001083C>;<U0001083F>..<U00010855>;/
+ <U00010857>..<U0001089E>;<U000108A7>..<U000108AF>;/
+ <U000108E0>..<U000108F2>;<U000108F4>..<U000108F5>;/
+ <U000108FB>..<U0001091B>;<U0001091F>..<U00010939>;<U0001093F>;/
+ <U00010980>..<U000109B7>;<U000109BC>..<U000109CF>;/
+ <U000109D2>..<U00010A03>;<U00010A05>..<U00010A06>;/
+ <U00010A0C>..<U00010A13>;<U00010A15>..<U00010A17>;/
+ <U00010A19>..<U00010A35>;<U00010A38>..<U00010A3A>;/
+ <U00010A3F>..<U00010A48>;<U00010A50>..<U00010A58>;/
+ <U00010A60>..<U00010A9F>;<U00010AC0>..<U00010AE6>;/
+ <U00010AEB>..<U00010AF6>;<U00010B00>..<U00010B35>;/
+ <U00010B39>..<U00010B55>;<U00010B58>..<U00010B72>;/
+ <U00010B78>..<U00010B91>;<U00010B99>..<U00010B9C>;/
+ <U00010BA9>..<U00010BAF>;<U00010C00>..<U00010C48>;/
+ <U00010C80>..<U00010CB2>;<U00010CC0>..<U00010CF2>;/
+ <U00010CFA>..<U00010D27>;<U00010D30>..<U00010D39>;/
+ <U00010D40>..<U00010D65>;<U00010D69>..<U00010D85>;/
+ <U00010D8E>..<U00010D8F>;<U00010E60>..<U00010E7E>;/
<U00010E80>..<U00010EA9>;<U00010EAB>..<U00010EAD>;/
- <U00010EB0>..<U00010EB1>;<U00010EFD>..<U00010F27>;/
- <U00010F30>..<U00010F59>;<U00010F70>..<U00010F89>;/
- <U00010FB0>..<U00010FCB>;<U00010FE0>..<U00010FF6>;/
- <U00011000>..<U0001104D>;<U00011052>..<U00011075>;/
- <U0001107F>..<U000110C2>;<U000110CD>;<U000110D0>..<U000110E8>;/
- <U000110F0>..<U000110F9>;<U00011100>..<U00011134>;/
- <U00011136>..<U00011147>;<U00011150>..<U00011176>;/
- <U00011180>..<U000111DF>;<U000111E1>..<U000111F4>;/
- <U00011200>..<U00011211>;<U00011213>..<U00011241>;/
- <U00011280>..<U00011286>;<U00011288>;<U0001128A>..<U0001128D>;/
- <U0001128F>..<U0001129D>;<U0001129F>..<U000112A9>;/
- <U000112B0>..<U000112EA>;<U000112F0>..<U000112F9>;/
- <U00011300>..<U00011303>;<U00011305>..<U0001130C>;/
- <U0001130F>..<U00011310>;<U00011313>..<U00011328>;/
- <U0001132A>..<U00011330>;<U00011332>..<U00011333>;/
- <U00011335>..<U00011339>;<U0001133B>..<U00011344>;/
- <U00011347>..<U00011348>;<U0001134B>..<U0001134D>;<U00011350>;/
- <U00011357>;<U0001135D>..<U00011363>;<U00011366>..<U0001136C>;/
- <U00011370>..<U00011374>;<U00011400>..<U0001145B>;/
+ <U00010EB0>..<U00010EB1>;<U00010EC2>..<U00010EC4>;/
+ <U00010EFC>..<U00010F27>;<U00010F30>..<U00010F59>;/
+ <U00010F70>..<U00010F89>;<U00010FB0>..<U00010FCB>;/
+ <U00010FE0>..<U00010FF6>;<U00011000>..<U0001104D>;/
+ <U00011052>..<U00011075>;<U0001107F>..<U000110C2>;<U000110CD>;/
+ <U000110D0>..<U000110E8>;<U000110F0>..<U000110F9>;/
+ <U00011100>..<U00011134>;<U00011136>..<U00011147>;/
+ <U00011150>..<U00011176>;<U00011180>..<U000111DF>;/
+ <U000111E1>..<U000111F4>;<U00011200>..<U00011211>;/
+ <U00011213>..<U00011241>;<U00011280>..<U00011286>;<U00011288>;/
+ <U0001128A>..<U0001128D>;<U0001128F>..<U0001129D>;/
+ <U0001129F>..<U000112A9>;<U000112B0>..<U000112EA>;/
+ <U000112F0>..<U000112F9>;<U00011300>..<U00011303>;/
+ <U00011305>..<U0001130C>;<U0001130F>..<U00011310>;/
+ <U00011313>..<U00011328>;<U0001132A>..<U00011330>;/
+ <U00011332>..<U00011333>;<U00011335>..<U00011339>;/
+ <U0001133B>..<U00011344>;<U00011347>..<U00011348>;/
+ <U0001134B>..<U0001134D>;<U00011350>;<U00011357>;/
+ <U0001135D>..<U00011363>;<U00011366>..<U0001136C>;/
+ <U00011370>..<U00011374>;<U00011380>..<U00011389>;<U0001138B>;/
+ <U0001138E>;<U00011390>..<U000113B5>;<U000113B7>..<U000113C0>;/
+ <U000113C2>;<U000113C5>;<U000113C7>..<U000113CA>;/
+ <U000113CC>..<U000113D5>;<U000113D7>..<U000113D8>;/
+ <U000113E1>..<U000113E2>;<U00011400>..<U0001145B>;/
<U0001145D>..<U00011461>;<U00011480>..<U000114C7>;/
<U000114D0>..<U000114D9>;<U00011580>..<U000115B5>;/
<U000115B8>..<U000115DD>;<U00011600>..<U00011644>;/
<U00011650>..<U00011659>;<U00011660>..<U0001166C>;/
<U00011680>..<U000116B9>;<U000116C0>..<U000116C9>;/
- <U00011700>..<U0001171A>;<U0001171D>..<U0001172B>;/
- <U00011730>..<U00011746>;<U00011800>..<U0001183B>;/
- <U000118A0>..<U000118F2>;<U000118FF>..<U00011906>;<U00011909>;/
- <U0001190C>..<U00011913>;<U00011915>..<U00011916>;/
- <U00011918>..<U00011935>;<U00011937>..<U00011938>;/
- <U0001193B>..<U00011946>;<U00011950>..<U00011959>;/
- <U000119A0>..<U000119A7>;<U000119AA>..<U000119D7>;/
- <U000119DA>..<U000119E4>;<U00011A00>..<U00011A47>;/
- <U00011A50>..<U00011AA2>;<U00011AB0>..<U00011AF8>;/
- <U00011B00>..<U00011B09>;<U00011C00>..<U00011C08>;/
- <U00011C0A>..<U00011C36>;<U00011C38>..<U00011C45>;/
- <U00011C50>..<U00011C6C>;<U00011C70>..<U00011C8F>;/
- <U00011C92>..<U00011CA7>;<U00011CA9>..<U00011CB6>;/
- <U00011D00>..<U00011D06>;<U00011D08>..<U00011D09>;/
- <U00011D0B>..<U00011D36>;<U00011D3A>;<U00011D3C>..<U00011D3D>;/
- <U00011D3F>..<U00011D47>;<U00011D50>..<U00011D59>;/
- <U00011D60>..<U00011D65>;<U00011D67>..<U00011D68>;/
- <U00011D6A>..<U00011D8E>;<U00011D90>..<U00011D91>;/
- <U00011D93>..<U00011D98>;<U00011DA0>..<U00011DA9>;/
- <U00011EE0>..<U00011EF8>;<U00011F00>..<U00011F10>;/
- <U00011F12>..<U00011F3A>;<U00011F3E>..<U00011F59>;<U00011FB0>;/
- <U00011FC0>..<U00011FF1>;<U00011FFF>..<U00012399>;/
- <U00012400>..<U0001246E>;<U00012470>..<U00012474>;/
- <U00012480>..<U00012543>;<U00012F90>..<U00012FF2>;/
- <U00013000>..<U00013455>;<U00014400>..<U00014646>;/
- <U00016800>..<U00016A38>;<U00016A40>..<U00016A5E>;/
- <U00016A60>..<U00016A69>;<U00016A6E>..<U00016ABE>;/
- <U00016AC0>..<U00016AC9>;<U00016AD0>..<U00016AED>;/
- <U00016AF0>..<U00016AF5>;<U00016B00>..<U00016B45>;/
- <U00016B50>..<U00016B59>;<U00016B5B>..<U00016B61>;/
- <U00016B63>..<U00016B77>;<U00016B7D>..<U00016B8F>;/
+ <U000116D0>..<U000116E3>;<U00011700>..<U0001171A>;/
+ <U0001171D>..<U0001172B>;<U00011730>..<U00011746>;/
+ <U00011800>..<U0001183B>;<U000118A0>..<U000118F2>;/
+ <U000118FF>..<U00011906>;<U00011909>;<U0001190C>..<U00011913>;/
+ <U00011915>..<U00011916>;<U00011918>..<U00011935>;/
+ <U00011937>..<U00011938>;<U0001193B>..<U00011946>;/
+ <U00011950>..<U00011959>;<U000119A0>..<U000119A7>;/
+ <U000119AA>..<U000119D7>;<U000119DA>..<U000119E4>;/
+ <U00011A00>..<U00011A47>;<U00011A50>..<U00011AA2>;/
+ <U00011AB0>..<U00011AF8>;<U00011B00>..<U00011B09>;/
+ <U00011BC0>..<U00011BE1>;<U00011BF0>..<U00011BF9>;/
+ <U00011C00>..<U00011C08>;<U00011C0A>..<U00011C36>;/
+ <U00011C38>..<U00011C45>;<U00011C50>..<U00011C6C>;/
+ <U00011C70>..<U00011C8F>;<U00011C92>..<U00011CA7>;/
+ <U00011CA9>..<U00011CB6>;<U00011D00>..<U00011D06>;/
+ <U00011D08>..<U00011D09>;<U00011D0B>..<U00011D36>;<U00011D3A>;/
+ <U00011D3C>..<U00011D3D>;<U00011D3F>..<U00011D47>;/
+ <U00011D50>..<U00011D59>;<U00011D60>..<U00011D65>;/
+ <U00011D67>..<U00011D68>;<U00011D6A>..<U00011D8E>;/
+ <U00011D90>..<U00011D91>;<U00011D93>..<U00011D98>;/
+ <U00011DA0>..<U00011DA9>;<U00011EE0>..<U00011EF8>;/
+ <U00011F00>..<U00011F10>;<U00011F12>..<U00011F3A>;/
+ <U00011F3E>..<U00011F5A>;<U00011FB0>;<U00011FC0>..<U00011FF1>;/
+ <U00011FFF>..<U00012399>;<U00012400>..<U0001246E>;/
+ <U00012470>..<U00012474>;<U00012480>..<U00012543>;/
+ <U00012F90>..<U00012FF2>;<U00013000>..<U00013455>;/
+ <U00013460>..<U000143FA>;<U00014400>..<U00014646>;/
+ <U00016100>..<U00016139>;<U00016800>..<U00016A38>;/
+ <U00016A40>..<U00016A5E>;<U00016A60>..<U00016A69>;/
+ <U00016A6E>..<U00016ABE>;<U00016AC0>..<U00016AC9>;/
+ <U00016AD0>..<U00016AED>;<U00016AF0>..<U00016AF5>;/
+ <U00016B00>..<U00016B45>;<U00016B50>..<U00016B59>;/
+ <U00016B5B>..<U00016B61>;<U00016B63>..<U00016B77>;/
+ <U00016B7D>..<U00016B8F>;<U00016D40>..<U00016D79>;/
<U00016E40>..<U00016E9A>;<U00016F00>..<U00016F4A>;/
<U00016F4F>..<U00016F87>;<U00016F8F>..<U00016F9F>;/
<U00016FE0>..<U00016FE4>;<U00016FF0>..<U00016FF1>;/
<U00017000>..<U000187F7>;<U00018800>..<U00018CD5>;/
- <U00018D00>..<U00018D08>;<U0001AFF0>..<U0001AFF3>;/
+ <U00018CFF>..<U00018D08>;<U0001AFF0>..<U0001AFF3>;/
<U0001AFF5>..<U0001AFFB>;<U0001AFFD>..<U0001AFFE>;/
<U0001B000>..<U0001B122>;<U0001B132>;<U0001B150>..<U0001B152>;/
<U0001B155>;<U0001B164>..<U0001B167>;<U0001B170>..<U0001B2FB>;/
<U0001BC00>..<U0001BC6A>;<U0001BC70>..<U0001BC7C>;/
<U0001BC80>..<U0001BC88>;<U0001BC90>..<U0001BC99>;/
- <U0001BC9C>..<U0001BCA3>;<U0001CF00>..<U0001CF2D>;/
+ <U0001BC9C>..<U0001BCA3>;<U0001CC00>..<U0001CCF9>;/
+ <U0001CD00>..<U0001CEB3>;<U0001CF00>..<U0001CF2D>;/
<U0001CF30>..<U0001CF46>;<U0001CF50>..<U0001CFC3>;/
<U0001D000>..<U0001D0F5>;<U0001D100>..<U0001D126>;/
<U0001D129>..<U0001D1EA>;<U0001D200>..<U0001D245>;/
@@ -1125,16 +1168,16 @@ print /
<U0001E100>..<U0001E12C>;<U0001E130>..<U0001E13D>;/
<U0001E140>..<U0001E149>;<U0001E14E>..<U0001E14F>;/
<U0001E290>..<U0001E2AE>;<U0001E2C0>..<U0001E2F9>;<U0001E2FF>;/
- <U0001E4D0>..<U0001E4F9>;<U0001E7E0>..<U0001E7E6>;/
- <U0001E7E8>..<U0001E7EB>;<U0001E7ED>..<U0001E7EE>;/
- <U0001E7F0>..<U0001E7FE>;<U0001E800>..<U0001E8C4>;/
- <U0001E8C7>..<U0001E8D6>;<U0001E900>..<U0001E94B>;/
- <U0001E950>..<U0001E959>;<U0001E95E>..<U0001E95F>;/
- <U0001EC71>..<U0001ECB4>;<U0001ED01>..<U0001ED3D>;/
- <U0001EE00>..<U0001EE03>;<U0001EE05>..<U0001EE1F>;/
- <U0001EE21>..<U0001EE22>;<U0001EE24>;<U0001EE27>;/
- <U0001EE29>..<U0001EE32>;<U0001EE34>..<U0001EE37>;<U0001EE39>;/
- <U0001EE3B>;<U0001EE42>;<U0001EE47>;<U0001EE49>;<U0001EE4B>;/
+ <U0001E4D0>..<U0001E4F9>;<U0001E5D0>..<U0001E5FA>;<U0001E5FF>;/
+ <U0001E7E0>..<U0001E7E6>;<U0001E7E8>..<U0001E7EB>;/
+ <U0001E7ED>..<U0001E7EE>;<U0001E7F0>..<U0001E7FE>;/
+ <U0001E800>..<U0001E8C4>;<U0001E8C7>..<U0001E8D6>;/
+ <U0001E900>..<U0001E94B>;<U0001E950>..<U0001E959>;/
+ <U0001E95E>..<U0001E95F>;<U0001EC71>..<U0001ECB4>;/
+ <U0001ED01>..<U0001ED3D>;<U0001EE00>..<U0001EE03>;/
+ <U0001EE05>..<U0001EE1F>;<U0001EE21>..<U0001EE22>;<U0001EE24>;/
+ <U0001EE27>;<U0001EE29>..<U0001EE32>;<U0001EE34>..<U0001EE37>;/
+ <U0001EE39>;<U0001EE3B>;<U0001EE42>;<U0001EE47>;<U0001EE49>;<U0001EE4B>;/
<U0001EE4D>..<U0001EE4F>;<U0001EE51>..<U0001EE52>;<U0001EE54>;/
<U0001EE57>;<U0001EE59>;<U0001EE5B>;<U0001EE5D>;<U0001EE5F>;/
<U0001EE61>..<U0001EE62>;<U0001EE64>;<U0001EE67>..<U0001EE6A>;/
@@ -1154,19 +1197,19 @@ print /
<U0001F7E0>..<U0001F7EB>;<U0001F7F0>;<U0001F800>..<U0001F80B>;/
<U0001F810>..<U0001F847>;<U0001F850>..<U0001F859>;/
<U0001F860>..<U0001F887>;<U0001F890>..<U0001F8AD>;/
- <U0001F8B0>..<U0001F8B1>;<U0001F900>..<U0001FA53>;/
- <U0001FA60>..<U0001FA6D>;<U0001FA70>..<U0001FA7C>;/
- <U0001FA80>..<U0001FA88>;<U0001FA90>..<U0001FABD>;/
- <U0001FABF>..<U0001FAC5>;<U0001FACE>..<U0001FADB>;/
- <U0001FAE0>..<U0001FAE8>;<U0001FAF0>..<U0001FAF8>;/
- <U0001FB00>..<U0001FB92>;<U0001FB94>..<U0001FBCA>;/
- <U0001FBF0>..<U0001FBF9>;<U00020000>..<U0002A6DF>;/
- <U0002A700>..<U0002B739>;<U0002B740>..<U0002B81D>;/
- <U0002B820>..<U0002CEA1>;<U0002CEB0>..<U0002EBE0>;/
- <U0002EBF0>..<U0002EE5D>;<U0002F800>..<U0002FA1D>;/
- <U00030000>..<U0003134A>;<U00031350>..<U000323AF>;<U000E0001>;/
- <U000E0020>..<U000E007F>;<U000E0100>..<U000E01EF>;/
- <U000F0000>..<U000FFFFD>;<U00100000>..<U0010FFFD>
+ <U0001F8B0>..<U0001F8BB>;<U0001F8C0>..<U0001F8C1>;/
+ <U0001F900>..<U0001FA53>;<U0001FA60>..<U0001FA6D>;/
+ <U0001FA70>..<U0001FA7C>;<U0001FA80>..<U0001FA89>;/
+ <U0001FA8F>..<U0001FAC6>;<U0001FACE>..<U0001FADC>;/
+ <U0001FADF>..<U0001FAE9>;<U0001FAF0>..<U0001FAF8>;/
+ <U0001FB00>..<U0001FB92>;<U0001FB94>..<U0001FBF9>;/
+ <U00020000>..<U0002A6DF>;<U0002A700>..<U0002B739>;/
+ <U0002B740>..<U0002B81D>;<U0002B820>..<U0002CEA1>;/
+ <U0002CEB0>..<U0002EBE0>;<U0002EBF0>..<U0002EE5D>;/
+ <U0002F800>..<U0002FA1D>;<U00030000>..<U0003134A>;/
+ <U00031350>..<U000323AF>;<U000E0001>;<U000E0020>..<U000E007F>;/
+ <U000E0100>..<U000E01EF>;<U000F0000>..<U000FFFFD>;/
+ <U00100000>..<U0010FFFD>
% The "xdigit" class must only contain the BASIC LATIN digits and A-F, a-f,
% says ISO C 99 (sections 7.25.2.1.12 and 6.4.4.1).
@@ -1210,402 +1253,414 @@ toupper /
(<U0177>,<U0176>);(<U017A>,<U0179>);(<U017C>,<U017B>);(<U017E>,<U017D>);/
(<U017F>,<U0053>);(<U0180>,<U0243>);(<U0183>,<U0182>);(<U0185>,<U0184>);/
(<U0188>,<U0187>);(<U018C>,<U018B>);(<U0192>,<U0191>);(<U0195>,<U01F6>);/
- (<U0199>,<U0198>);(<U019A>,<U023D>);(<U019E>,<U0220>);(<U01A1>,<U01A0>);/
- (<U01A3>,<U01A2>);(<U01A5>,<U01A4>);(<U01A8>,<U01A7>);(<U01AD>,<U01AC>);/
- (<U01B0>,<U01AF>);(<U01B4>,<U01B3>);(<U01B6>,<U01B5>);(<U01B9>,<U01B8>);/
- (<U01BD>,<U01BC>);(<U01BF>,<U01F7>);(<U01C5>,<U01C4>);(<U01C6>,<U01C4>);/
- (<U01C8>,<U01C7>);(<U01C9>,<U01C7>);(<U01CB>,<U01CA>);(<U01CC>,<U01CA>);/
- (<U01CE>,<U01CD>);(<U01D0>,<U01CF>);(<U01D2>,<U01D1>);(<U01D4>,<U01D3>);/
- (<U01D6>,<U01D5>);(<U01D8>,<U01D7>);(<U01DA>,<U01D9>);(<U01DC>,<U01DB>);/
- (<U01DD>,<U018E>);(<U01DF>,<U01DE>);(<U01E1>,<U01E0>);(<U01E3>,<U01E2>);/
- (<U01E5>,<U01E4>);(<U01E7>,<U01E6>);(<U01E9>,<U01E8>);(<U01EB>,<U01EA>);/
- (<U01ED>,<U01EC>);(<U01EF>,<U01EE>);(<U01F2>,<U01F1>);(<U01F3>,<U01F1>);/
- (<U01F5>,<U01F4>);(<U01F9>,<U01F8>);(<U01FB>,<U01FA>);(<U01FD>,<U01FC>);/
- (<U01FF>,<U01FE>);(<U0201>,<U0200>);(<U0203>,<U0202>);(<U0205>,<U0204>);/
- (<U0207>,<U0206>);(<U0209>,<U0208>);(<U020B>,<U020A>);(<U020D>,<U020C>);/
- (<U020F>,<U020E>);(<U0211>,<U0210>);(<U0213>,<U0212>);(<U0215>,<U0214>);/
- (<U0217>,<U0216>);(<U0219>,<U0218>);(<U021B>,<U021A>);(<U021D>,<U021C>);/
- (<U021F>,<U021E>);(<U0223>,<U0222>);(<U0225>,<U0224>);(<U0227>,<U0226>);/
- (<U0229>,<U0228>);(<U022B>,<U022A>);(<U022D>,<U022C>);(<U022F>,<U022E>);/
- (<U0231>,<U0230>);(<U0233>,<U0232>);(<U023C>,<U023B>);(<U023F>,<U2C7E>);/
- (<U0240>,<U2C7F>);(<U0242>,<U0241>);(<U0247>,<U0246>);(<U0249>,<U0248>);/
- (<U024B>,<U024A>);(<U024D>,<U024C>);(<U024F>,<U024E>);(<U0250>,<U2C6F>);/
- (<U0251>,<U2C6D>);(<U0252>,<U2C70>);(<U0253>,<U0181>);(<U0254>,<U0186>);/
- (<U0256>,<U0189>);(<U0257>,<U018A>);(<U0259>,<U018F>);(<U025B>,<U0190>);/
- (<U025C>,<UA7AB>);(<U0260>,<U0193>);(<U0261>,<UA7AC>);(<U0263>,<U0194>);/
- (<U0265>,<UA78D>);(<U0266>,<UA7AA>);(<U0268>,<U0197>);(<U0269>,<U0196>);/
- (<U026A>,<UA7AE>);(<U026B>,<U2C62>);(<U026C>,<UA7AD>);(<U026F>,<U019C>);/
- (<U0271>,<U2C6E>);(<U0272>,<U019D>);(<U0275>,<U019F>);(<U027D>,<U2C64>);/
- (<U0280>,<U01A6>);(<U0282>,<UA7C5>);(<U0283>,<U01A9>);(<U0287>,<UA7B1>);/
- (<U0288>,<U01AE>);(<U0289>,<U0244>);(<U028A>,<U01B1>);(<U028B>,<U01B2>);/
- (<U028C>,<U0245>);(<U0292>,<U01B7>);(<U029D>,<UA7B2>);(<U029E>,<UA7B0>);/
- (<U0345>,<U0399>);(<U0371>,<U0370>);(<U0373>,<U0372>);(<U0377>,<U0376>);/
- (<U037B>,<U03FD>);(<U037C>,<U03FE>);(<U037D>,<U03FF>);(<U03AC>,<U0386>);/
- (<U03AD>,<U0388>);(<U03AE>,<U0389>);(<U03AF>,<U038A>);(<U03B1>,<U0391>);/
- (<U03B2>,<U0392>);(<U03B3>,<U0393>);(<U03B4>,<U0394>);(<U03B5>,<U0395>);/
- (<U03B6>,<U0396>);(<U03B7>,<U0397>);(<U03B8>,<U0398>);(<U03B9>,<U0399>);/
- (<U03BA>,<U039A>);(<U03BB>,<U039B>);(<U03BC>,<U039C>);(<U03BD>,<U039D>);/
- (<U03BE>,<U039E>);(<U03BF>,<U039F>);(<U03C0>,<U03A0>);(<U03C1>,<U03A1>);/
- (<U03C2>,<U03A3>);(<U03C3>,<U03A3>);(<U03C4>,<U03A4>);(<U03C5>,<U03A5>);/
- (<U03C6>,<U03A6>);(<U03C7>,<U03A7>);(<U03C8>,<U03A8>);(<U03C9>,<U03A9>);/
- (<U03CA>,<U03AA>);(<U03CB>,<U03AB>);(<U03CC>,<U038C>);(<U03CD>,<U038E>);/
- (<U03CE>,<U038F>);(<U03D0>,<U0392>);(<U03D1>,<U0398>);(<U03D5>,<U03A6>);/
- (<U03D6>,<U03A0>);(<U03D7>,<U03CF>);(<U03D9>,<U03D8>);(<U03DB>,<U03DA>);/
- (<U03DD>,<U03DC>);(<U03DF>,<U03DE>);(<U03E1>,<U03E0>);(<U03E3>,<U03E2>);/
- (<U03E5>,<U03E4>);(<U03E7>,<U03E6>);(<U03E9>,<U03E8>);(<U03EB>,<U03EA>);/
- (<U03ED>,<U03EC>);(<U03EF>,<U03EE>);(<U03F0>,<U039A>);(<U03F1>,<U03A1>);/
- (<U03F2>,<U03F9>);(<U03F3>,<U037F>);(<U03F5>,<U0395>);(<U03F8>,<U03F7>);/
- (<U03FB>,<U03FA>);(<U0430>,<U0410>);(<U0431>,<U0411>);(<U0432>,<U0412>);/
- (<U0433>,<U0413>);(<U0434>,<U0414>);(<U0435>,<U0415>);(<U0436>,<U0416>);/
- (<U0437>,<U0417>);(<U0438>,<U0418>);(<U0439>,<U0419>);(<U043A>,<U041A>);/
- (<U043B>,<U041B>);(<U043C>,<U041C>);(<U043D>,<U041D>);(<U043E>,<U041E>);/
- (<U043F>,<U041F>);(<U0440>,<U0420>);(<U0441>,<U0421>);(<U0442>,<U0422>);/
- (<U0443>,<U0423>);(<U0444>,<U0424>);(<U0445>,<U0425>);(<U0446>,<U0426>);/
- (<U0447>,<U0427>);(<U0448>,<U0428>);(<U0449>,<U0429>);(<U044A>,<U042A>);/
- (<U044B>,<U042B>);(<U044C>,<U042C>);(<U044D>,<U042D>);(<U044E>,<U042E>);/
- (<U044F>,<U042F>);(<U0450>,<U0400>);(<U0451>,<U0401>);(<U0452>,<U0402>);/
- (<U0453>,<U0403>);(<U0454>,<U0404>);(<U0455>,<U0405>);(<U0456>,<U0406>);/
- (<U0457>,<U0407>);(<U0458>,<U0408>);(<U0459>,<U0409>);(<U045A>,<U040A>);/
- (<U045B>,<U040B>);(<U045C>,<U040C>);(<U045D>,<U040D>);(<U045E>,<U040E>);/
- (<U045F>,<U040F>);(<U0461>,<U0460>);(<U0463>,<U0462>);(<U0465>,<U0464>);/
- (<U0467>,<U0466>);(<U0469>,<U0468>);(<U046B>,<U046A>);(<U046D>,<U046C>);/
- (<U046F>,<U046E>);(<U0471>,<U0470>);(<U0473>,<U0472>);(<U0475>,<U0474>);/
- (<U0477>,<U0476>);(<U0479>,<U0478>);(<U047B>,<U047A>);(<U047D>,<U047C>);/
- (<U047F>,<U047E>);(<U0481>,<U0480>);(<U048B>,<U048A>);(<U048D>,<U048C>);/
- (<U048F>,<U048E>);(<U0491>,<U0490>);(<U0493>,<U0492>);(<U0495>,<U0494>);/
- (<U0497>,<U0496>);(<U0499>,<U0498>);(<U049B>,<U049A>);(<U049D>,<U049C>);/
- (<U049F>,<U049E>);(<U04A1>,<U04A0>);(<U04A3>,<U04A2>);(<U04A5>,<U04A4>);/
- (<U04A7>,<U04A6>);(<U04A9>,<U04A8>);(<U04AB>,<U04AA>);(<U04AD>,<U04AC>);/
- (<U04AF>,<U04AE>);(<U04B1>,<U04B0>);(<U04B3>,<U04B2>);(<U04B5>,<U04B4>);/
- (<U04B7>,<U04B6>);(<U04B9>,<U04B8>);(<U04BB>,<U04BA>);(<U04BD>,<U04BC>);/
- (<U04BF>,<U04BE>);(<U04C2>,<U04C1>);(<U04C4>,<U04C3>);(<U04C6>,<U04C5>);/
- (<U04C8>,<U04C7>);(<U04CA>,<U04C9>);(<U04CC>,<U04CB>);(<U04CE>,<U04CD>);/
- (<U04CF>,<U04C0>);(<U04D1>,<U04D0>);(<U04D3>,<U04D2>);(<U04D5>,<U04D4>);/
- (<U04D7>,<U04D6>);(<U04D9>,<U04D8>);(<U04DB>,<U04DA>);(<U04DD>,<U04DC>);/
- (<U04DF>,<U04DE>);(<U04E1>,<U04E0>);(<U04E3>,<U04E2>);(<U04E5>,<U04E4>);/
- (<U04E7>,<U04E6>);(<U04E9>,<U04E8>);(<U04EB>,<U04EA>);(<U04ED>,<U04EC>);/
- (<U04EF>,<U04EE>);(<U04F1>,<U04F0>);(<U04F3>,<U04F2>);(<U04F5>,<U04F4>);/
- (<U04F7>,<U04F6>);(<U04F9>,<U04F8>);(<U04FB>,<U04FA>);(<U04FD>,<U04FC>);/
- (<U04FF>,<U04FE>);(<U0501>,<U0500>);(<U0503>,<U0502>);(<U0505>,<U0504>);/
- (<U0507>,<U0506>);(<U0509>,<U0508>);(<U050B>,<U050A>);(<U050D>,<U050C>);/
- (<U050F>,<U050E>);(<U0511>,<U0510>);(<U0513>,<U0512>);(<U0515>,<U0514>);/
- (<U0517>,<U0516>);(<U0519>,<U0518>);(<U051B>,<U051A>);(<U051D>,<U051C>);/
- (<U051F>,<U051E>);(<U0521>,<U0520>);(<U0523>,<U0522>);(<U0525>,<U0524>);/
- (<U0527>,<U0526>);(<U0529>,<U0528>);(<U052B>,<U052A>);(<U052D>,<U052C>);/
- (<U052F>,<U052E>);(<U0561>,<U0531>);(<U0562>,<U0532>);(<U0563>,<U0533>);/
- (<U0564>,<U0534>);(<U0565>,<U0535>);(<U0566>,<U0536>);(<U0567>,<U0537>);/
- (<U0568>,<U0538>);(<U0569>,<U0539>);(<U056A>,<U053A>);(<U056B>,<U053B>);/
- (<U056C>,<U053C>);(<U056D>,<U053D>);(<U056E>,<U053E>);(<U056F>,<U053F>);/
- (<U0570>,<U0540>);(<U0571>,<U0541>);(<U0572>,<U0542>);(<U0573>,<U0543>);/
- (<U0574>,<U0544>);(<U0575>,<U0545>);(<U0576>,<U0546>);(<U0577>,<U0547>);/
- (<U0578>,<U0548>);(<U0579>,<U0549>);(<U057A>,<U054A>);(<U057B>,<U054B>);/
- (<U057C>,<U054C>);(<U057D>,<U054D>);(<U057E>,<U054E>);(<U057F>,<U054F>);/
- (<U0580>,<U0550>);(<U0581>,<U0551>);(<U0582>,<U0552>);(<U0583>,<U0553>);/
- (<U0584>,<U0554>);(<U0585>,<U0555>);(<U0586>,<U0556>);(<U10D0>,<U1C90>);/
- (<U10D1>,<U1C91>);(<U10D2>,<U1C92>);(<U10D3>,<U1C93>);(<U10D4>,<U1C94>);/
- (<U10D5>,<U1C95>);(<U10D6>,<U1C96>);(<U10D7>,<U1C97>);(<U10D8>,<U1C98>);/
- (<U10D9>,<U1C99>);(<U10DA>,<U1C9A>);(<U10DB>,<U1C9B>);(<U10DC>,<U1C9C>);/
- (<U10DD>,<U1C9D>);(<U10DE>,<U1C9E>);(<U10DF>,<U1C9F>);(<U10E0>,<U1CA0>);/
- (<U10E1>,<U1CA1>);(<U10E2>,<U1CA2>);(<U10E3>,<U1CA3>);(<U10E4>,<U1CA4>);/
- (<U10E5>,<U1CA5>);(<U10E6>,<U1CA6>);(<U10E7>,<U1CA7>);(<U10E8>,<U1CA8>);/
- (<U10E9>,<U1CA9>);(<U10EA>,<U1CAA>);(<U10EB>,<U1CAB>);(<U10EC>,<U1CAC>);/
- (<U10ED>,<U1CAD>);(<U10EE>,<U1CAE>);(<U10EF>,<U1CAF>);(<U10F0>,<U1CB0>);/
- (<U10F1>,<U1CB1>);(<U10F2>,<U1CB2>);(<U10F3>,<U1CB3>);(<U10F4>,<U1CB4>);/
- (<U10F5>,<U1CB5>);(<U10F6>,<U1CB6>);(<U10F7>,<U1CB7>);(<U10F8>,<U1CB8>);/
- (<U10F9>,<U1CB9>);(<U10FA>,<U1CBA>);(<U10FD>,<U1CBD>);(<U10FE>,<U1CBE>);/
- (<U10FF>,<U1CBF>);(<U13F8>,<U13F0>);(<U13F9>,<U13F1>);(<U13FA>,<U13F2>);/
- (<U13FB>,<U13F3>);(<U13FC>,<U13F4>);(<U13FD>,<U13F5>);(<U1C80>,<U0412>);/
- (<U1C81>,<U0414>);(<U1C82>,<U041E>);(<U1C83>,<U0421>);(<U1C84>,<U0422>);/
- (<U1C85>,<U0422>);(<U1C86>,<U042A>);(<U1C87>,<U0462>);(<U1C88>,<UA64A>);/
- (<U1D79>,<UA77D>);(<U1D7D>,<U2C63>);(<U1D8E>,<UA7C6>);(<U1E01>,<U1E00>);/
- (<U1E03>,<U1E02>);(<U1E05>,<U1E04>);(<U1E07>,<U1E06>);(<U1E09>,<U1E08>);/
- (<U1E0B>,<U1E0A>);(<U1E0D>,<U1E0C>);(<U1E0F>,<U1E0E>);(<U1E11>,<U1E10>);/
- (<U1E13>,<U1E12>);(<U1E15>,<U1E14>);(<U1E17>,<U1E16>);(<U1E19>,<U1E18>);/
- (<U1E1B>,<U1E1A>);(<U1E1D>,<U1E1C>);(<U1E1F>,<U1E1E>);(<U1E21>,<U1E20>);/
- (<U1E23>,<U1E22>);(<U1E25>,<U1E24>);(<U1E27>,<U1E26>);(<U1E29>,<U1E28>);/
- (<U1E2B>,<U1E2A>);(<U1E2D>,<U1E2C>);(<U1E2F>,<U1E2E>);(<U1E31>,<U1E30>);/
- (<U1E33>,<U1E32>);(<U1E35>,<U1E34>);(<U1E37>,<U1E36>);(<U1E39>,<U1E38>);/
- (<U1E3B>,<U1E3A>);(<U1E3D>,<U1E3C>);(<U1E3F>,<U1E3E>);(<U1E41>,<U1E40>);/
- (<U1E43>,<U1E42>);(<U1E45>,<U1E44>);(<U1E47>,<U1E46>);(<U1E49>,<U1E48>);/
- (<U1E4B>,<U1E4A>);(<U1E4D>,<U1E4C>);(<U1E4F>,<U1E4E>);(<U1E51>,<U1E50>);/
- (<U1E53>,<U1E52>);(<U1E55>,<U1E54>);(<U1E57>,<U1E56>);(<U1E59>,<U1E58>);/
- (<U1E5B>,<U1E5A>);(<U1E5D>,<U1E5C>);(<U1E5F>,<U1E5E>);(<U1E61>,<U1E60>);/
- (<U1E63>,<U1E62>);(<U1E65>,<U1E64>);(<U1E67>,<U1E66>);(<U1E69>,<U1E68>);/
- (<U1E6B>,<U1E6A>);(<U1E6D>,<U1E6C>);(<U1E6F>,<U1E6E>);(<U1E71>,<U1E70>);/
- (<U1E73>,<U1E72>);(<U1E75>,<U1E74>);(<U1E77>,<U1E76>);(<U1E79>,<U1E78>);/
- (<U1E7B>,<U1E7A>);(<U1E7D>,<U1E7C>);(<U1E7F>,<U1E7E>);(<U1E81>,<U1E80>);/
- (<U1E83>,<U1E82>);(<U1E85>,<U1E84>);(<U1E87>,<U1E86>);(<U1E89>,<U1E88>);/
- (<U1E8B>,<U1E8A>);(<U1E8D>,<U1E8C>);(<U1E8F>,<U1E8E>);(<U1E91>,<U1E90>);/
- (<U1E93>,<U1E92>);(<U1E95>,<U1E94>);(<U1E9B>,<U1E60>);(<U1EA1>,<U1EA0>);/
- (<U1EA3>,<U1EA2>);(<U1EA5>,<U1EA4>);(<U1EA7>,<U1EA6>);(<U1EA9>,<U1EA8>);/
- (<U1EAB>,<U1EAA>);(<U1EAD>,<U1EAC>);(<U1EAF>,<U1EAE>);(<U1EB1>,<U1EB0>);/
- (<U1EB3>,<U1EB2>);(<U1EB5>,<U1EB4>);(<U1EB7>,<U1EB6>);(<U1EB9>,<U1EB8>);/
- (<U1EBB>,<U1EBA>);(<U1EBD>,<U1EBC>);(<U1EBF>,<U1EBE>);(<U1EC1>,<U1EC0>);/
- (<U1EC3>,<U1EC2>);(<U1EC5>,<U1EC4>);(<U1EC7>,<U1EC6>);(<U1EC9>,<U1EC8>);/
- (<U1ECB>,<U1ECA>);(<U1ECD>,<U1ECC>);(<U1ECF>,<U1ECE>);(<U1ED1>,<U1ED0>);/
- (<U1ED3>,<U1ED2>);(<U1ED5>,<U1ED4>);(<U1ED7>,<U1ED6>);(<U1ED9>,<U1ED8>);/
- (<U1EDB>,<U1EDA>);(<U1EDD>,<U1EDC>);(<U1EDF>,<U1EDE>);(<U1EE1>,<U1EE0>);/
- (<U1EE3>,<U1EE2>);(<U1EE5>,<U1EE4>);(<U1EE7>,<U1EE6>);(<U1EE9>,<U1EE8>);/
- (<U1EEB>,<U1EEA>);(<U1EED>,<U1EEC>);(<U1EEF>,<U1EEE>);(<U1EF1>,<U1EF0>);/
- (<U1EF3>,<U1EF2>);(<U1EF5>,<U1EF4>);(<U1EF7>,<U1EF6>);(<U1EF9>,<U1EF8>);/
- (<U1EFB>,<U1EFA>);(<U1EFD>,<U1EFC>);(<U1EFF>,<U1EFE>);(<U1F00>,<U1F08>);/
- (<U1F01>,<U1F09>);(<U1F02>,<U1F0A>);(<U1F03>,<U1F0B>);(<U1F04>,<U1F0C>);/
- (<U1F05>,<U1F0D>);(<U1F06>,<U1F0E>);(<U1F07>,<U1F0F>);(<U1F10>,<U1F18>);/
- (<U1F11>,<U1F19>);(<U1F12>,<U1F1A>);(<U1F13>,<U1F1B>);(<U1F14>,<U1F1C>);/
- (<U1F15>,<U1F1D>);(<U1F20>,<U1F28>);(<U1F21>,<U1F29>);(<U1F22>,<U1F2A>);/
- (<U1F23>,<U1F2B>);(<U1F24>,<U1F2C>);(<U1F25>,<U1F2D>);(<U1F26>,<U1F2E>);/
- (<U1F27>,<U1F2F>);(<U1F30>,<U1F38>);(<U1F31>,<U1F39>);(<U1F32>,<U1F3A>);/
- (<U1F33>,<U1F3B>);(<U1F34>,<U1F3C>);(<U1F35>,<U1F3D>);(<U1F36>,<U1F3E>);/
- (<U1F37>,<U1F3F>);(<U1F40>,<U1F48>);(<U1F41>,<U1F49>);(<U1F42>,<U1F4A>);/
- (<U1F43>,<U1F4B>);(<U1F44>,<U1F4C>);(<U1F45>,<U1F4D>);(<U1F51>,<U1F59>);/
- (<U1F53>,<U1F5B>);(<U1F55>,<U1F5D>);(<U1F57>,<U1F5F>);(<U1F60>,<U1F68>);/
- (<U1F61>,<U1F69>);(<U1F62>,<U1F6A>);(<U1F63>,<U1F6B>);(<U1F64>,<U1F6C>);/
- (<U1F65>,<U1F6D>);(<U1F66>,<U1F6E>);(<U1F67>,<U1F6F>);(<U1F70>,<U1FBA>);/
- (<U1F71>,<U1FBB>);(<U1F72>,<U1FC8>);(<U1F73>,<U1FC9>);(<U1F74>,<U1FCA>);/
- (<U1F75>,<U1FCB>);(<U1F76>,<U1FDA>);(<U1F77>,<U1FDB>);(<U1F78>,<U1FF8>);/
- (<U1F79>,<U1FF9>);(<U1F7A>,<U1FEA>);(<U1F7B>,<U1FEB>);(<U1F7C>,<U1FFA>);/
- (<U1F7D>,<U1FFB>);(<U1F80>,<U1F88>);(<U1F81>,<U1F89>);(<U1F82>,<U1F8A>);/
- (<U1F83>,<U1F8B>);(<U1F84>,<U1F8C>);(<U1F85>,<U1F8D>);(<U1F86>,<U1F8E>);/
- (<U1F87>,<U1F8F>);(<U1F90>,<U1F98>);(<U1F91>,<U1F99>);(<U1F92>,<U1F9A>);/
- (<U1F93>,<U1F9B>);(<U1F94>,<U1F9C>);(<U1F95>,<U1F9D>);(<U1F96>,<U1F9E>);/
- (<U1F97>,<U1F9F>);(<U1FA0>,<U1FA8>);(<U1FA1>,<U1FA9>);(<U1FA2>,<U1FAA>);/
- (<U1FA3>,<U1FAB>);(<U1FA4>,<U1FAC>);(<U1FA5>,<U1FAD>);(<U1FA6>,<U1FAE>);/
- (<U1FA7>,<U1FAF>);(<U1FB0>,<U1FB8>);(<U1FB1>,<U1FB9>);(<U1FB3>,<U1FBC>);/
- (<U1FBE>,<U0399>);(<U1FC3>,<U1FCC>);(<U1FD0>,<U1FD8>);(<U1FD1>,<U1FD9>);/
- (<U1FE0>,<U1FE8>);(<U1FE1>,<U1FE9>);(<U1FE5>,<U1FEC>);(<U1FF3>,<U1FFC>);/
- (<U214E>,<U2132>);(<U2170>,<U2160>);(<U2171>,<U2161>);(<U2172>,<U2162>);/
- (<U2173>,<U2163>);(<U2174>,<U2164>);(<U2175>,<U2165>);(<U2176>,<U2166>);/
- (<U2177>,<U2167>);(<U2178>,<U2168>);(<U2179>,<U2169>);(<U217A>,<U216A>);/
- (<U217B>,<U216B>);(<U217C>,<U216C>);(<U217D>,<U216D>);(<U217E>,<U216E>);/
- (<U217F>,<U216F>);(<U2184>,<U2183>);(<U24D0>,<U24B6>);(<U24D1>,<U24B7>);/
- (<U24D2>,<U24B8>);(<U24D3>,<U24B9>);(<U24D4>,<U24BA>);(<U24D5>,<U24BB>);/
- (<U24D6>,<U24BC>);(<U24D7>,<U24BD>);(<U24D8>,<U24BE>);(<U24D9>,<U24BF>);/
- (<U24DA>,<U24C0>);(<U24DB>,<U24C1>);(<U24DC>,<U24C2>);(<U24DD>,<U24C3>);/
- (<U24DE>,<U24C4>);(<U24DF>,<U24C5>);(<U24E0>,<U24C6>);(<U24E1>,<U24C7>);/
- (<U24E2>,<U24C8>);(<U24E3>,<U24C9>);(<U24E4>,<U24CA>);(<U24E5>,<U24CB>);/
- (<U24E6>,<U24CC>);(<U24E7>,<U24CD>);(<U24E8>,<U24CE>);(<U24E9>,<U24CF>);/
- (<U2C30>,<U2C00>);(<U2C31>,<U2C01>);(<U2C32>,<U2C02>);(<U2C33>,<U2C03>);/
- (<U2C34>,<U2C04>);(<U2C35>,<U2C05>);(<U2C36>,<U2C06>);(<U2C37>,<U2C07>);/
- (<U2C38>,<U2C08>);(<U2C39>,<U2C09>);(<U2C3A>,<U2C0A>);(<U2C3B>,<U2C0B>);/
- (<U2C3C>,<U2C0C>);(<U2C3D>,<U2C0D>);(<U2C3E>,<U2C0E>);(<U2C3F>,<U2C0F>);/
- (<U2C40>,<U2C10>);(<U2C41>,<U2C11>);(<U2C42>,<U2C12>);(<U2C43>,<U2C13>);/
- (<U2C44>,<U2C14>);(<U2C45>,<U2C15>);(<U2C46>,<U2C16>);(<U2C47>,<U2C17>);/
- (<U2C48>,<U2C18>);(<U2C49>,<U2C19>);(<U2C4A>,<U2C1A>);(<U2C4B>,<U2C1B>);/
- (<U2C4C>,<U2C1C>);(<U2C4D>,<U2C1D>);(<U2C4E>,<U2C1E>);(<U2C4F>,<U2C1F>);/
- (<U2C50>,<U2C20>);(<U2C51>,<U2C21>);(<U2C52>,<U2C22>);(<U2C53>,<U2C23>);/
- (<U2C54>,<U2C24>);(<U2C55>,<U2C25>);(<U2C56>,<U2C26>);(<U2C57>,<U2C27>);/
- (<U2C58>,<U2C28>);(<U2C59>,<U2C29>);(<U2C5A>,<U2C2A>);(<U2C5B>,<U2C2B>);/
- (<U2C5C>,<U2C2C>);(<U2C5D>,<U2C2D>);(<U2C5E>,<U2C2E>);(<U2C5F>,<U2C2F>);/
- (<U2C61>,<U2C60>);(<U2C65>,<U023A>);(<U2C66>,<U023E>);(<U2C68>,<U2C67>);/
- (<U2C6A>,<U2C69>);(<U2C6C>,<U2C6B>);(<U2C73>,<U2C72>);(<U2C76>,<U2C75>);/
- (<U2C81>,<U2C80>);(<U2C83>,<U2C82>);(<U2C85>,<U2C84>);(<U2C87>,<U2C86>);/
- (<U2C89>,<U2C88>);(<U2C8B>,<U2C8A>);(<U2C8D>,<U2C8C>);(<U2C8F>,<U2C8E>);/
- (<U2C91>,<U2C90>);(<U2C93>,<U2C92>);(<U2C95>,<U2C94>);(<U2C97>,<U2C96>);/
- (<U2C99>,<U2C98>);(<U2C9B>,<U2C9A>);(<U2C9D>,<U2C9C>);(<U2C9F>,<U2C9E>);/
- (<U2CA1>,<U2CA0>);(<U2CA3>,<U2CA2>);(<U2CA5>,<U2CA4>);(<U2CA7>,<U2CA6>);/
- (<U2CA9>,<U2CA8>);(<U2CAB>,<U2CAA>);(<U2CAD>,<U2CAC>);(<U2CAF>,<U2CAE>);/
- (<U2CB1>,<U2CB0>);(<U2CB3>,<U2CB2>);(<U2CB5>,<U2CB4>);(<U2CB7>,<U2CB6>);/
- (<U2CB9>,<U2CB8>);(<U2CBB>,<U2CBA>);(<U2CBD>,<U2CBC>);(<U2CBF>,<U2CBE>);/
- (<U2CC1>,<U2CC0>);(<U2CC3>,<U2CC2>);(<U2CC5>,<U2CC4>);(<U2CC7>,<U2CC6>);/
- (<U2CC9>,<U2CC8>);(<U2CCB>,<U2CCA>);(<U2CCD>,<U2CCC>);(<U2CCF>,<U2CCE>);/
- (<U2CD1>,<U2CD0>);(<U2CD3>,<U2CD2>);(<U2CD5>,<U2CD4>);(<U2CD7>,<U2CD6>);/
- (<U2CD9>,<U2CD8>);(<U2CDB>,<U2CDA>);(<U2CDD>,<U2CDC>);(<U2CDF>,<U2CDE>);/
- (<U2CE1>,<U2CE0>);(<U2CE3>,<U2CE2>);(<U2CEC>,<U2CEB>);(<U2CEE>,<U2CED>);/
- (<U2CF3>,<U2CF2>);(<U2D00>,<U10A0>);(<U2D01>,<U10A1>);(<U2D02>,<U10A2>);/
- (<U2D03>,<U10A3>);(<U2D04>,<U10A4>);(<U2D05>,<U10A5>);(<U2D06>,<U10A6>);/
- (<U2D07>,<U10A7>);(<U2D08>,<U10A8>);(<U2D09>,<U10A9>);(<U2D0A>,<U10AA>);/
- (<U2D0B>,<U10AB>);(<U2D0C>,<U10AC>);(<U2D0D>,<U10AD>);(<U2D0E>,<U10AE>);/
- (<U2D0F>,<U10AF>);(<U2D10>,<U10B0>);(<U2D11>,<U10B1>);(<U2D12>,<U10B2>);/
- (<U2D13>,<U10B3>);(<U2D14>,<U10B4>);(<U2D15>,<U10B5>);(<U2D16>,<U10B6>);/
- (<U2D17>,<U10B7>);(<U2D18>,<U10B8>);(<U2D19>,<U10B9>);(<U2D1A>,<U10BA>);/
- (<U2D1B>,<U10BB>);(<U2D1C>,<U10BC>);(<U2D1D>,<U10BD>);(<U2D1E>,<U10BE>);/
- (<U2D1F>,<U10BF>);(<U2D20>,<U10C0>);(<U2D21>,<U10C1>);(<U2D22>,<U10C2>);/
- (<U2D23>,<U10C3>);(<U2D24>,<U10C4>);(<U2D25>,<U10C5>);(<U2D27>,<U10C7>);/
- (<U2D2D>,<U10CD>);(<UA641>,<UA640>);(<UA643>,<UA642>);(<UA645>,<UA644>);/
- (<UA647>,<UA646>);(<UA649>,<UA648>);(<UA64B>,<UA64A>);(<UA64D>,<UA64C>);/
- (<UA64F>,<UA64E>);(<UA651>,<UA650>);(<UA653>,<UA652>);(<UA655>,<UA654>);/
- (<UA657>,<UA656>);(<UA659>,<UA658>);(<UA65B>,<UA65A>);(<UA65D>,<UA65C>);/
- (<UA65F>,<UA65E>);(<UA661>,<UA660>);(<UA663>,<UA662>);(<UA665>,<UA664>);/
- (<UA667>,<UA666>);(<UA669>,<UA668>);(<UA66B>,<UA66A>);(<UA66D>,<UA66C>);/
- (<UA681>,<UA680>);(<UA683>,<UA682>);(<UA685>,<UA684>);(<UA687>,<UA686>);/
- (<UA689>,<UA688>);(<UA68B>,<UA68A>);(<UA68D>,<UA68C>);(<UA68F>,<UA68E>);/
- (<UA691>,<UA690>);(<UA693>,<UA692>);(<UA695>,<UA694>);(<UA697>,<UA696>);/
- (<UA699>,<UA698>);(<UA69B>,<UA69A>);(<UA723>,<UA722>);(<UA725>,<UA724>);/
- (<UA727>,<UA726>);(<UA729>,<UA728>);(<UA72B>,<UA72A>);(<UA72D>,<UA72C>);/
- (<UA72F>,<UA72E>);(<UA733>,<UA732>);(<UA735>,<UA734>);(<UA737>,<UA736>);/
- (<UA739>,<UA738>);(<UA73B>,<UA73A>);(<UA73D>,<UA73C>);(<UA73F>,<UA73E>);/
- (<UA741>,<UA740>);(<UA743>,<UA742>);(<UA745>,<UA744>);(<UA747>,<UA746>);/
- (<UA749>,<UA748>);(<UA74B>,<UA74A>);(<UA74D>,<UA74C>);(<UA74F>,<UA74E>);/
- (<UA751>,<UA750>);(<UA753>,<UA752>);(<UA755>,<UA754>);(<UA757>,<UA756>);/
- (<UA759>,<UA758>);(<UA75B>,<UA75A>);(<UA75D>,<UA75C>);(<UA75F>,<UA75E>);/
- (<UA761>,<UA760>);(<UA763>,<UA762>);(<UA765>,<UA764>);(<UA767>,<UA766>);/
- (<UA769>,<UA768>);(<UA76B>,<UA76A>);(<UA76D>,<UA76C>);(<UA76F>,<UA76E>);/
- (<UA77A>,<UA779>);(<UA77C>,<UA77B>);(<UA77F>,<UA77E>);(<UA781>,<UA780>);/
- (<UA783>,<UA782>);(<UA785>,<UA784>);(<UA787>,<UA786>);(<UA78C>,<UA78B>);/
- (<UA791>,<UA790>);(<UA793>,<UA792>);(<UA794>,<UA7C4>);(<UA797>,<UA796>);/
- (<UA799>,<UA798>);(<UA79B>,<UA79A>);(<UA79D>,<UA79C>);(<UA79F>,<UA79E>);/
- (<UA7A1>,<UA7A0>);(<UA7A3>,<UA7A2>);(<UA7A5>,<UA7A4>);(<UA7A7>,<UA7A6>);/
- (<UA7A9>,<UA7A8>);(<UA7B5>,<UA7B4>);(<UA7B7>,<UA7B6>);(<UA7B9>,<UA7B8>);/
- (<UA7BB>,<UA7BA>);(<UA7BD>,<UA7BC>);(<UA7BF>,<UA7BE>);(<UA7C1>,<UA7C0>);/
- (<UA7C3>,<UA7C2>);(<UA7C8>,<UA7C7>);(<UA7CA>,<UA7C9>);(<UA7D1>,<UA7D0>);/
- (<UA7D7>,<UA7D6>);(<UA7D9>,<UA7D8>);(<UA7F6>,<UA7F5>);(<UAB53>,<UA7B3>);/
- (<UAB70>,<U13A0>);(<UAB71>,<U13A1>);(<UAB72>,<U13A2>);(<UAB73>,<U13A3>);/
- (<UAB74>,<U13A4>);(<UAB75>,<U13A5>);(<UAB76>,<U13A6>);(<UAB77>,<U13A7>);/
- (<UAB78>,<U13A8>);(<UAB79>,<U13A9>);(<UAB7A>,<U13AA>);(<UAB7B>,<U13AB>);/
- (<UAB7C>,<U13AC>);(<UAB7D>,<U13AD>);(<UAB7E>,<U13AE>);(<UAB7F>,<U13AF>);/
- (<UAB80>,<U13B0>);(<UAB81>,<U13B1>);(<UAB82>,<U13B2>);(<UAB83>,<U13B3>);/
- (<UAB84>,<U13B4>);(<UAB85>,<U13B5>);(<UAB86>,<U13B6>);(<UAB87>,<U13B7>);/
- (<UAB88>,<U13B8>);(<UAB89>,<U13B9>);(<UAB8A>,<U13BA>);(<UAB8B>,<U13BB>);/
- (<UAB8C>,<U13BC>);(<UAB8D>,<U13BD>);(<UAB8E>,<U13BE>);(<UAB8F>,<U13BF>);/
- (<UAB90>,<U13C0>);(<UAB91>,<U13C1>);(<UAB92>,<U13C2>);(<UAB93>,<U13C3>);/
- (<UAB94>,<U13C4>);(<UAB95>,<U13C5>);(<UAB96>,<U13C6>);(<UAB97>,<U13C7>);/
- (<UAB98>,<U13C8>);(<UAB99>,<U13C9>);(<UAB9A>,<U13CA>);(<UAB9B>,<U13CB>);/
- (<UAB9C>,<U13CC>);(<UAB9D>,<U13CD>);(<UAB9E>,<U13CE>);(<UAB9F>,<U13CF>);/
- (<UABA0>,<U13D0>);(<UABA1>,<U13D1>);(<UABA2>,<U13D2>);(<UABA3>,<U13D3>);/
- (<UABA4>,<U13D4>);(<UABA5>,<U13D5>);(<UABA6>,<U13D6>);(<UABA7>,<U13D7>);/
- (<UABA8>,<U13D8>);(<UABA9>,<U13D9>);(<UABAA>,<U13DA>);(<UABAB>,<U13DB>);/
- (<UABAC>,<U13DC>);(<UABAD>,<U13DD>);(<UABAE>,<U13DE>);(<UABAF>,<U13DF>);/
- (<UABB0>,<U13E0>);(<UABB1>,<U13E1>);(<UABB2>,<U13E2>);(<UABB3>,<U13E3>);/
- (<UABB4>,<U13E4>);(<UABB5>,<U13E5>);(<UABB6>,<U13E6>);(<UABB7>,<U13E7>);/
- (<UABB8>,<U13E8>);(<UABB9>,<U13E9>);(<UABBA>,<U13EA>);(<UABBB>,<U13EB>);/
- (<UABBC>,<U13EC>);(<UABBD>,<U13ED>);(<UABBE>,<U13EE>);(<UABBF>,<U13EF>);/
- (<UFF41>,<UFF21>);(<UFF42>,<UFF22>);(<UFF43>,<UFF23>);(<UFF44>,<UFF24>);/
- (<UFF45>,<UFF25>);(<UFF46>,<UFF26>);(<UFF47>,<UFF27>);(<UFF48>,<UFF28>);/
- (<UFF49>,<UFF29>);(<UFF4A>,<UFF2A>);(<UFF4B>,<UFF2B>);(<UFF4C>,<UFF2C>);/
- (<UFF4D>,<UFF2D>);(<UFF4E>,<UFF2E>);(<UFF4F>,<UFF2F>);(<UFF50>,<UFF30>);/
- (<UFF51>,<UFF31>);(<UFF52>,<UFF32>);(<UFF53>,<UFF33>);(<UFF54>,<UFF34>);/
- (<UFF55>,<UFF35>);(<UFF56>,<UFF36>);(<UFF57>,<UFF37>);(<UFF58>,<UFF38>);/
- (<UFF59>,<UFF39>);(<UFF5A>,<UFF3A>);(<U00010428>,<U00010400>);/
- (<U00010429>,<U00010401>);(<U0001042A>,<U00010402>);/
- (<U0001042B>,<U00010403>);(<U0001042C>,<U00010404>);/
- (<U0001042D>,<U00010405>);(<U0001042E>,<U00010406>);/
- (<U0001042F>,<U00010407>);(<U00010430>,<U00010408>);/
- (<U00010431>,<U00010409>);(<U00010432>,<U0001040A>);/
- (<U00010433>,<U0001040B>);(<U00010434>,<U0001040C>);/
- (<U00010435>,<U0001040D>);(<U00010436>,<U0001040E>);/
- (<U00010437>,<U0001040F>);(<U00010438>,<U00010410>);/
- (<U00010439>,<U00010411>);(<U0001043A>,<U00010412>);/
- (<U0001043B>,<U00010413>);(<U0001043C>,<U00010414>);/
- (<U0001043D>,<U00010415>);(<U0001043E>,<U00010416>);/
- (<U0001043F>,<U00010417>);(<U00010440>,<U00010418>);/
- (<U00010441>,<U00010419>);(<U00010442>,<U0001041A>);/
- (<U00010443>,<U0001041B>);(<U00010444>,<U0001041C>);/
- (<U00010445>,<U0001041D>);(<U00010446>,<U0001041E>);/
- (<U00010447>,<U0001041F>);(<U00010448>,<U00010420>);/
- (<U00010449>,<U00010421>);(<U0001044A>,<U00010422>);/
- (<U0001044B>,<U00010423>);(<U0001044C>,<U00010424>);/
- (<U0001044D>,<U00010425>);(<U0001044E>,<U00010426>);/
- (<U0001044F>,<U00010427>);(<U000104D8>,<U000104B0>);/
- (<U000104D9>,<U000104B1>);(<U000104DA>,<U000104B2>);/
- (<U000104DB>,<U000104B3>);(<U000104DC>,<U000104B4>);/
- (<U000104DD>,<U000104B5>);(<U000104DE>,<U000104B6>);/
- (<U000104DF>,<U000104B7>);(<U000104E0>,<U000104B8>);/
- (<U000104E1>,<U000104B9>);(<U000104E2>,<U000104BA>);/
- (<U000104E3>,<U000104BB>);(<U000104E4>,<U000104BC>);/
- (<U000104E5>,<U000104BD>);(<U000104E6>,<U000104BE>);/
- (<U000104E7>,<U000104BF>);(<U000104E8>,<U000104C0>);/
- (<U000104E9>,<U000104C1>);(<U000104EA>,<U000104C2>);/
- (<U000104EB>,<U000104C3>);(<U000104EC>,<U000104C4>);/
- (<U000104ED>,<U000104C5>);(<U000104EE>,<U000104C6>);/
- (<U000104EF>,<U000104C7>);(<U000104F0>,<U000104C8>);/
- (<U000104F1>,<U000104C9>);(<U000104F2>,<U000104CA>);/
- (<U000104F3>,<U000104CB>);(<U000104F4>,<U000104CC>);/
- (<U000104F5>,<U000104CD>);(<U000104F6>,<U000104CE>);/
- (<U000104F7>,<U000104CF>);(<U000104F8>,<U000104D0>);/
- (<U000104F9>,<U000104D1>);(<U000104FA>,<U000104D2>);/
- (<U000104FB>,<U000104D3>);(<U00010597>,<U00010570>);/
- (<U00010598>,<U00010571>);(<U00010599>,<U00010572>);/
- (<U0001059A>,<U00010573>);(<U0001059B>,<U00010574>);/
- (<U0001059C>,<U00010575>);(<U0001059D>,<U00010576>);/
- (<U0001059E>,<U00010577>);(<U0001059F>,<U00010578>);/
- (<U000105A0>,<U00010579>);(<U000105A1>,<U0001057A>);/
- (<U000105A3>,<U0001057C>);(<U000105A4>,<U0001057D>);/
- (<U000105A5>,<U0001057E>);(<U000105A6>,<U0001057F>);/
- (<U000105A7>,<U00010580>);(<U000105A8>,<U00010581>);/
- (<U000105A9>,<U00010582>);(<U000105AA>,<U00010583>);/
- (<U000105AB>,<U00010584>);(<U000105AC>,<U00010585>);/
- (<U000105AD>,<U00010586>);(<U000105AE>,<U00010587>);/
- (<U000105AF>,<U00010588>);(<U000105B0>,<U00010589>);/
- (<U000105B1>,<U0001058A>);(<U000105B3>,<U0001058C>);/
- (<U000105B4>,<U0001058D>);(<U000105B5>,<U0001058E>);/
- (<U000105B6>,<U0001058F>);(<U000105B7>,<U00010590>);/
- (<U000105B8>,<U00010591>);(<U000105B9>,<U00010592>);/
- (<U000105BB>,<U00010594>);(<U000105BC>,<U00010595>);/
- (<U00010CC0>,<U00010C80>);(<U00010CC1>,<U00010C81>);/
- (<U00010CC2>,<U00010C82>);(<U00010CC3>,<U00010C83>);/
- (<U00010CC4>,<U00010C84>);(<U00010CC5>,<U00010C85>);/
- (<U00010CC6>,<U00010C86>);(<U00010CC7>,<U00010C87>);/
- (<U00010CC8>,<U00010C88>);(<U00010CC9>,<U00010C89>);/
- (<U00010CCA>,<U00010C8A>);(<U00010CCB>,<U00010C8B>);/
- (<U00010CCC>,<U00010C8C>);(<U00010CCD>,<U00010C8D>);/
- (<U00010CCE>,<U00010C8E>);(<U00010CCF>,<U00010C8F>);/
- (<U00010CD0>,<U00010C90>);(<U00010CD1>,<U00010C91>);/
- (<U00010CD2>,<U00010C92>);(<U00010CD3>,<U00010C93>);/
- (<U00010CD4>,<U00010C94>);(<U00010CD5>,<U00010C95>);/
- (<U00010CD6>,<U00010C96>);(<U00010CD7>,<U00010C97>);/
- (<U00010CD8>,<U00010C98>);(<U00010CD9>,<U00010C99>);/
- (<U00010CDA>,<U00010C9A>);(<U00010CDB>,<U00010C9B>);/
- (<U00010CDC>,<U00010C9C>);(<U00010CDD>,<U00010C9D>);/
- (<U00010CDE>,<U00010C9E>);(<U00010CDF>,<U00010C9F>);/
- (<U00010CE0>,<U00010CA0>);(<U00010CE1>,<U00010CA1>);/
- (<U00010CE2>,<U00010CA2>);(<U00010CE3>,<U00010CA3>);/
- (<U00010CE4>,<U00010CA4>);(<U00010CE5>,<U00010CA5>);/
- (<U00010CE6>,<U00010CA6>);(<U00010CE7>,<U00010CA7>);/
- (<U00010CE8>,<U00010CA8>);(<U00010CE9>,<U00010CA9>);/
- (<U00010CEA>,<U00010CAA>);(<U00010CEB>,<U00010CAB>);/
- (<U00010CEC>,<U00010CAC>);(<U00010CED>,<U00010CAD>);/
- (<U00010CEE>,<U00010CAE>);(<U00010CEF>,<U00010CAF>);/
- (<U00010CF0>,<U00010CB0>);(<U00010CF1>,<U00010CB1>);/
- (<U00010CF2>,<U00010CB2>);(<U000118C0>,<U000118A0>);/
- (<U000118C1>,<U000118A1>);(<U000118C2>,<U000118A2>);/
- (<U000118C3>,<U000118A3>);(<U000118C4>,<U000118A4>);/
- (<U000118C5>,<U000118A5>);(<U000118C6>,<U000118A6>);/
- (<U000118C7>,<U000118A7>);(<U000118C8>,<U000118A8>);/
- (<U000118C9>,<U000118A9>);(<U000118CA>,<U000118AA>);/
- (<U000118CB>,<U000118AB>);(<U000118CC>,<U000118AC>);/
- (<U000118CD>,<U000118AD>);(<U000118CE>,<U000118AE>);/
- (<U000118CF>,<U000118AF>);(<U000118D0>,<U000118B0>);/
- (<U000118D1>,<U000118B1>);(<U000118D2>,<U000118B2>);/
- (<U000118D3>,<U000118B3>);(<U000118D4>,<U000118B4>);/
- (<U000118D5>,<U000118B5>);(<U000118D6>,<U000118B6>);/
- (<U000118D7>,<U000118B7>);(<U000118D8>,<U000118B8>);/
- (<U000118D9>,<U000118B9>);(<U000118DA>,<U000118BA>);/
- (<U000118DB>,<U000118BB>);(<U000118DC>,<U000118BC>);/
- (<U000118DD>,<U000118BD>);(<U000118DE>,<U000118BE>);/
- (<U000118DF>,<U000118BF>);(<U00016E60>,<U00016E40>);/
- (<U00016E61>,<U00016E41>);(<U00016E62>,<U00016E42>);/
- (<U00016E63>,<U00016E43>);(<U00016E64>,<U00016E44>);/
- (<U00016E65>,<U00016E45>);(<U00016E66>,<U00016E46>);/
- (<U00016E67>,<U00016E47>);(<U00016E68>,<U00016E48>);/
- (<U00016E69>,<U00016E49>);(<U00016E6A>,<U00016E4A>);/
- (<U00016E6B>,<U00016E4B>);(<U00016E6C>,<U00016E4C>);/
- (<U00016E6D>,<U00016E4D>);(<U00016E6E>,<U00016E4E>);/
- (<U00016E6F>,<U00016E4F>);(<U00016E70>,<U00016E50>);/
- (<U00016E71>,<U00016E51>);(<U00016E72>,<U00016E52>);/
- (<U00016E73>,<U00016E53>);(<U00016E74>,<U00016E54>);/
- (<U00016E75>,<U00016E55>);(<U00016E76>,<U00016E56>);/
- (<U00016E77>,<U00016E57>);(<U00016E78>,<U00016E58>);/
- (<U00016E79>,<U00016E59>);(<U00016E7A>,<U00016E5A>);/
- (<U00016E7B>,<U00016E5B>);(<U00016E7C>,<U00016E5C>);/
- (<U00016E7D>,<U00016E5D>);(<U00016E7E>,<U00016E5E>);/
- (<U00016E7F>,<U00016E5F>);(<U0001E922>,<U0001E900>);/
- (<U0001E923>,<U0001E901>);(<U0001E924>,<U0001E902>);/
- (<U0001E925>,<U0001E903>);(<U0001E926>,<U0001E904>);/
- (<U0001E927>,<U0001E905>);(<U0001E928>,<U0001E906>);/
- (<U0001E929>,<U0001E907>);(<U0001E92A>,<U0001E908>);/
- (<U0001E92B>,<U0001E909>);(<U0001E92C>,<U0001E90A>);/
- (<U0001E92D>,<U0001E90B>);(<U0001E92E>,<U0001E90C>);/
- (<U0001E92F>,<U0001E90D>);(<U0001E930>,<U0001E90E>);/
- (<U0001E931>,<U0001E90F>);(<U0001E932>,<U0001E910>);/
- (<U0001E933>,<U0001E911>);(<U0001E934>,<U0001E912>);/
- (<U0001E935>,<U0001E913>);(<U0001E936>,<U0001E914>);/
- (<U0001E937>,<U0001E915>);(<U0001E938>,<U0001E916>);/
- (<U0001E939>,<U0001E917>);(<U0001E93A>,<U0001E918>);/
- (<U0001E93B>,<U0001E919>);(<U0001E93C>,<U0001E91A>);/
- (<U0001E93D>,<U0001E91B>);(<U0001E93E>,<U0001E91C>);/
- (<U0001E93F>,<U0001E91D>);(<U0001E940>,<U0001E91E>);/
- (<U0001E941>,<U0001E91F>);(<U0001E942>,<U0001E920>);/
- (<U0001E943>,<U0001E921>)
+ (<U0199>,<U0198>);(<U019A>,<U023D>);(<U019B>,<UA7DC>);(<U019E>,<U0220>);/
+ (<U01A1>,<U01A0>);(<U01A3>,<U01A2>);(<U01A5>,<U01A4>);(<U01A8>,<U01A7>);/
+ (<U01AD>,<U01AC>);(<U01B0>,<U01AF>);(<U01B4>,<U01B3>);(<U01B6>,<U01B5>);/
+ (<U01B9>,<U01B8>);(<U01BD>,<U01BC>);(<U01BF>,<U01F7>);(<U01C5>,<U01C4>);/
+ (<U01C6>,<U01C4>);(<U01C8>,<U01C7>);(<U01C9>,<U01C7>);(<U01CB>,<U01CA>);/
+ (<U01CC>,<U01CA>);(<U01CE>,<U01CD>);(<U01D0>,<U01CF>);(<U01D2>,<U01D1>);/
+ (<U01D4>,<U01D3>);(<U01D6>,<U01D5>);(<U01D8>,<U01D7>);(<U01DA>,<U01D9>);/
+ (<U01DC>,<U01DB>);(<U01DD>,<U018E>);(<U01DF>,<U01DE>);(<U01E1>,<U01E0>);/
+ (<U01E3>,<U01E2>);(<U01E5>,<U01E4>);(<U01E7>,<U01E6>);(<U01E9>,<U01E8>);/
+ (<U01EB>,<U01EA>);(<U01ED>,<U01EC>);(<U01EF>,<U01EE>);(<U01F2>,<U01F1>);/
+ (<U01F3>,<U01F1>);(<U01F5>,<U01F4>);(<U01F9>,<U01F8>);(<U01FB>,<U01FA>);/
+ (<U01FD>,<U01FC>);(<U01FF>,<U01FE>);(<U0201>,<U0200>);(<U0203>,<U0202>);/
+ (<U0205>,<U0204>);(<U0207>,<U0206>);(<U0209>,<U0208>);(<U020B>,<U020A>);/
+ (<U020D>,<U020C>);(<U020F>,<U020E>);(<U0211>,<U0210>);(<U0213>,<U0212>);/
+ (<U0215>,<U0214>);(<U0217>,<U0216>);(<U0219>,<U0218>);(<U021B>,<U021A>);/
+ (<U021D>,<U021C>);(<U021F>,<U021E>);(<U0223>,<U0222>);(<U0225>,<U0224>);/
+ (<U0227>,<U0226>);(<U0229>,<U0228>);(<U022B>,<U022A>);(<U022D>,<U022C>);/
+ (<U022F>,<U022E>);(<U0231>,<U0230>);(<U0233>,<U0232>);(<U023C>,<U023B>);/
+ (<U023F>,<U2C7E>);(<U0240>,<U2C7F>);(<U0242>,<U0241>);(<U0247>,<U0246>);/
+ (<U0249>,<U0248>);(<U024B>,<U024A>);(<U024D>,<U024C>);(<U024F>,<U024E>);/
+ (<U0250>,<U2C6F>);(<U0251>,<U2C6D>);(<U0252>,<U2C70>);(<U0253>,<U0181>);/
+ (<U0254>,<U0186>);(<U0256>,<U0189>);(<U0257>,<U018A>);(<U0259>,<U018F>);/
+ (<U025B>,<U0190>);(<U025C>,<UA7AB>);(<U0260>,<U0193>);(<U0261>,<UA7AC>);/
+ (<U0263>,<U0194>);(<U0264>,<UA7CB>);(<U0265>,<UA78D>);(<U0266>,<UA7AA>);/
+ (<U0268>,<U0197>);(<U0269>,<U0196>);(<U026A>,<UA7AE>);(<U026B>,<U2C62>);/
+ (<U026C>,<UA7AD>);(<U026F>,<U019C>);(<U0271>,<U2C6E>);(<U0272>,<U019D>);/
+ (<U0275>,<U019F>);(<U027D>,<U2C64>);(<U0280>,<U01A6>);(<U0282>,<UA7C5>);/
+ (<U0283>,<U01A9>);(<U0287>,<UA7B1>);(<U0288>,<U01AE>);(<U0289>,<U0244>);/
+ (<U028A>,<U01B1>);(<U028B>,<U01B2>);(<U028C>,<U0245>);(<U0292>,<U01B7>);/
+ (<U029D>,<UA7B2>);(<U029E>,<UA7B0>);(<U0345>,<U0399>);(<U0371>,<U0370>);/
+ (<U0373>,<U0372>);(<U0377>,<U0376>);(<U037B>,<U03FD>);(<U037C>,<U03FE>);/
+ (<U037D>,<U03FF>);(<U03AC>,<U0386>);(<U03AD>,<U0388>);(<U03AE>,<U0389>);/
+ (<U03AF>,<U038A>);(<U03B1>,<U0391>);(<U03B2>,<U0392>);(<U03B3>,<U0393>);/
+ (<U03B4>,<U0394>);(<U03B5>,<U0395>);(<U03B6>,<U0396>);(<U03B7>,<U0397>);/
+ (<U03B8>,<U0398>);(<U03B9>,<U0399>);(<U03BA>,<U039A>);(<U03BB>,<U039B>);/
+ (<U03BC>,<U039C>);(<U03BD>,<U039D>);(<U03BE>,<U039E>);(<U03BF>,<U039F>);/
+ (<U03C0>,<U03A0>);(<U03C1>,<U03A1>);(<U03C2>,<U03A3>);(<U03C3>,<U03A3>);/
+ (<U03C4>,<U03A4>);(<U03C5>,<U03A5>);(<U03C6>,<U03A6>);(<U03C7>,<U03A7>);/
+ (<U03C8>,<U03A8>);(<U03C9>,<U03A9>);(<U03CA>,<U03AA>);(<U03CB>,<U03AB>);/
+ (<U03CC>,<U038C>);(<U03CD>,<U038E>);(<U03CE>,<U038F>);(<U03D0>,<U0392>);/
+ (<U03D1>,<U0398>);(<U03D5>,<U03A6>);(<U03D6>,<U03A0>);(<U03D7>,<U03CF>);/
+ (<U03D9>,<U03D8>);(<U03DB>,<U03DA>);(<U03DD>,<U03DC>);(<U03DF>,<U03DE>);/
+ (<U03E1>,<U03E0>);(<U03E3>,<U03E2>);(<U03E5>,<U03E4>);(<U03E7>,<U03E6>);/
+ (<U03E9>,<U03E8>);(<U03EB>,<U03EA>);(<U03ED>,<U03EC>);(<U03EF>,<U03EE>);/
+ (<U03F0>,<U039A>);(<U03F1>,<U03A1>);(<U03F2>,<U03F9>);(<U03F3>,<U037F>);/
+ (<U03F5>,<U0395>);(<U03F8>,<U03F7>);(<U03FB>,<U03FA>);(<U0430>,<U0410>);/
+ (<U0431>,<U0411>);(<U0432>,<U0412>);(<U0433>,<U0413>);(<U0434>,<U0414>);/
+ (<U0435>,<U0415>);(<U0436>,<U0416>);(<U0437>,<U0417>);(<U0438>,<U0418>);/
+ (<U0439>,<U0419>);(<U043A>,<U041A>);(<U043B>,<U041B>);(<U043C>,<U041C>);/
+ (<U043D>,<U041D>);(<U043E>,<U041E>);(<U043F>,<U041F>);(<U0440>,<U0420>);/
+ (<U0441>,<U0421>);(<U0442>,<U0422>);(<U0443>,<U0423>);(<U0444>,<U0424>);/
+ (<U0445>,<U0425>);(<U0446>,<U0426>);(<U0447>,<U0427>);(<U0448>,<U0428>);/
+ (<U0449>,<U0429>);(<U044A>,<U042A>);(<U044B>,<U042B>);(<U044C>,<U042C>);/
+ (<U044D>,<U042D>);(<U044E>,<U042E>);(<U044F>,<U042F>);(<U0450>,<U0400>);/
+ (<U0451>,<U0401>);(<U0452>,<U0402>);(<U0453>,<U0403>);(<U0454>,<U0404>);/
+ (<U0455>,<U0405>);(<U0456>,<U0406>);(<U0457>,<U0407>);(<U0458>,<U0408>);/
+ (<U0459>,<U0409>);(<U045A>,<U040A>);(<U045B>,<U040B>);(<U045C>,<U040C>);/
+ (<U045D>,<U040D>);(<U045E>,<U040E>);(<U045F>,<U040F>);(<U0461>,<U0460>);/
+ (<U0463>,<U0462>);(<U0465>,<U0464>);(<U0467>,<U0466>);(<U0469>,<U0468>);/
+ (<U046B>,<U046A>);(<U046D>,<U046C>);(<U046F>,<U046E>);(<U0471>,<U0470>);/
+ (<U0473>,<U0472>);(<U0475>,<U0474>);(<U0477>,<U0476>);(<U0479>,<U0478>);/
+ (<U047B>,<U047A>);(<U047D>,<U047C>);(<U047F>,<U047E>);(<U0481>,<U0480>);/
+ (<U048B>,<U048A>);(<U048D>,<U048C>);(<U048F>,<U048E>);(<U0491>,<U0490>);/
+ (<U0493>,<U0492>);(<U0495>,<U0494>);(<U0497>,<U0496>);(<U0499>,<U0498>);/
+ (<U049B>,<U049A>);(<U049D>,<U049C>);(<U049F>,<U049E>);(<U04A1>,<U04A0>);/
+ (<U04A3>,<U04A2>);(<U04A5>,<U04A4>);(<U04A7>,<U04A6>);(<U04A9>,<U04A8>);/
+ (<U04AB>,<U04AA>);(<U04AD>,<U04AC>);(<U04AF>,<U04AE>);(<U04B1>,<U04B0>);/
+ (<U04B3>,<U04B2>);(<U04B5>,<U04B4>);(<U04B7>,<U04B6>);(<U04B9>,<U04B8>);/
+ (<U04BB>,<U04BA>);(<U04BD>,<U04BC>);(<U04BF>,<U04BE>);(<U04C2>,<U04C1>);/
+ (<U04C4>,<U04C3>);(<U04C6>,<U04C5>);(<U04C8>,<U04C7>);(<U04CA>,<U04C9>);/
+ (<U04CC>,<U04CB>);(<U04CE>,<U04CD>);(<U04CF>,<U04C0>);(<U04D1>,<U04D0>);/
+ (<U04D3>,<U04D2>);(<U04D5>,<U04D4>);(<U04D7>,<U04D6>);(<U04D9>,<U04D8>);/
+ (<U04DB>,<U04DA>);(<U04DD>,<U04DC>);(<U04DF>,<U04DE>);(<U04E1>,<U04E0>);/
+ (<U04E3>,<U04E2>);(<U04E5>,<U04E4>);(<U04E7>,<U04E6>);(<U04E9>,<U04E8>);/
+ (<U04EB>,<U04EA>);(<U04ED>,<U04EC>);(<U04EF>,<U04EE>);(<U04F1>,<U04F0>);/
+ (<U04F3>,<U04F2>);(<U04F5>,<U04F4>);(<U04F7>,<U04F6>);(<U04F9>,<U04F8>);/
+ (<U04FB>,<U04FA>);(<U04FD>,<U04FC>);(<U04FF>,<U04FE>);(<U0501>,<U0500>);/
+ (<U0503>,<U0502>);(<U0505>,<U0504>);(<U0507>,<U0506>);(<U0509>,<U0508>);/
+ (<U050B>,<U050A>);(<U050D>,<U050C>);(<U050F>,<U050E>);(<U0511>,<U0510>);/
+ (<U0513>,<U0512>);(<U0515>,<U0514>);(<U0517>,<U0516>);(<U0519>,<U0518>);/
+ (<U051B>,<U051A>);(<U051D>,<U051C>);(<U051F>,<U051E>);(<U0521>,<U0520>);/
+ (<U0523>,<U0522>);(<U0525>,<U0524>);(<U0527>,<U0526>);(<U0529>,<U0528>);/
+ (<U052B>,<U052A>);(<U052D>,<U052C>);(<U052F>,<U052E>);(<U0561>,<U0531>);/
+ (<U0562>,<U0532>);(<U0563>,<U0533>);(<U0564>,<U0534>);(<U0565>,<U0535>);/
+ (<U0566>,<U0536>);(<U0567>,<U0537>);(<U0568>,<U0538>);(<U0569>,<U0539>);/
+ (<U056A>,<U053A>);(<U056B>,<U053B>);(<U056C>,<U053C>);(<U056D>,<U053D>);/
+ (<U056E>,<U053E>);(<U056F>,<U053F>);(<U0570>,<U0540>);(<U0571>,<U0541>);/
+ (<U0572>,<U0542>);(<U0573>,<U0543>);(<U0574>,<U0544>);(<U0575>,<U0545>);/
+ (<U0576>,<U0546>);(<U0577>,<U0547>);(<U0578>,<U0548>);(<U0579>,<U0549>);/
+ (<U057A>,<U054A>);(<U057B>,<U054B>);(<U057C>,<U054C>);(<U057D>,<U054D>);/
+ (<U057E>,<U054E>);(<U057F>,<U054F>);(<U0580>,<U0550>);(<U0581>,<U0551>);/
+ (<U0582>,<U0552>);(<U0583>,<U0553>);(<U0584>,<U0554>);(<U0585>,<U0555>);/
+ (<U0586>,<U0556>);(<U10D0>,<U1C90>);(<U10D1>,<U1C91>);(<U10D2>,<U1C92>);/
+ (<U10D3>,<U1C93>);(<U10D4>,<U1C94>);(<U10D5>,<U1C95>);(<U10D6>,<U1C96>);/
+ (<U10D7>,<U1C97>);(<U10D8>,<U1C98>);(<U10D9>,<U1C99>);(<U10DA>,<U1C9A>);/
+ (<U10DB>,<U1C9B>);(<U10DC>,<U1C9C>);(<U10DD>,<U1C9D>);(<U10DE>,<U1C9E>);/
+ (<U10DF>,<U1C9F>);(<U10E0>,<U1CA0>);(<U10E1>,<U1CA1>);(<U10E2>,<U1CA2>);/
+ (<U10E3>,<U1CA3>);(<U10E4>,<U1CA4>);(<U10E5>,<U1CA5>);(<U10E6>,<U1CA6>);/
+ (<U10E7>,<U1CA7>);(<U10E8>,<U1CA8>);(<U10E9>,<U1CA9>);(<U10EA>,<U1CAA>);/
+ (<U10EB>,<U1CAB>);(<U10EC>,<U1CAC>);(<U10ED>,<U1CAD>);(<U10EE>,<U1CAE>);/
+ (<U10EF>,<U1CAF>);(<U10F0>,<U1CB0>);(<U10F1>,<U1CB1>);(<U10F2>,<U1CB2>);/
+ (<U10F3>,<U1CB3>);(<U10F4>,<U1CB4>);(<U10F5>,<U1CB5>);(<U10F6>,<U1CB6>);/
+ (<U10F7>,<U1CB7>);(<U10F8>,<U1CB8>);(<U10F9>,<U1CB9>);(<U10FA>,<U1CBA>);/
+ (<U10FD>,<U1CBD>);(<U10FE>,<U1CBE>);(<U10FF>,<U1CBF>);(<U13F8>,<U13F0>);/
+ (<U13F9>,<U13F1>);(<U13FA>,<U13F2>);(<U13FB>,<U13F3>);(<U13FC>,<U13F4>);/
+ (<U13FD>,<U13F5>);(<U1C80>,<U0412>);(<U1C81>,<U0414>);(<U1C82>,<U041E>);/
+ (<U1C83>,<U0421>);(<U1C84>,<U0422>);(<U1C85>,<U0422>);(<U1C86>,<U042A>);/
+ (<U1C87>,<U0462>);(<U1C88>,<UA64A>);(<U1C8A>,<U1C89>);(<U1D79>,<UA77D>);/
+ (<U1D7D>,<U2C63>);(<U1D8E>,<UA7C6>);(<U1E01>,<U1E00>);(<U1E03>,<U1E02>);/
+ (<U1E05>,<U1E04>);(<U1E07>,<U1E06>);(<U1E09>,<U1E08>);(<U1E0B>,<U1E0A>);/
+ (<U1E0D>,<U1E0C>);(<U1E0F>,<U1E0E>);(<U1E11>,<U1E10>);(<U1E13>,<U1E12>);/
+ (<U1E15>,<U1E14>);(<U1E17>,<U1E16>);(<U1E19>,<U1E18>);(<U1E1B>,<U1E1A>);/
+ (<U1E1D>,<U1E1C>);(<U1E1F>,<U1E1E>);(<U1E21>,<U1E20>);(<U1E23>,<U1E22>);/
+ (<U1E25>,<U1E24>);(<U1E27>,<U1E26>);(<U1E29>,<U1E28>);(<U1E2B>,<U1E2A>);/
+ (<U1E2D>,<U1E2C>);(<U1E2F>,<U1E2E>);(<U1E31>,<U1E30>);(<U1E33>,<U1E32>);/
+ (<U1E35>,<U1E34>);(<U1E37>,<U1E36>);(<U1E39>,<U1E38>);(<U1E3B>,<U1E3A>);/
+ (<U1E3D>,<U1E3C>);(<U1E3F>,<U1E3E>);(<U1E41>,<U1E40>);(<U1E43>,<U1E42>);/
+ (<U1E45>,<U1E44>);(<U1E47>,<U1E46>);(<U1E49>,<U1E48>);(<U1E4B>,<U1E4A>);/
+ (<U1E4D>,<U1E4C>);(<U1E4F>,<U1E4E>);(<U1E51>,<U1E50>);(<U1E53>,<U1E52>);/
+ (<U1E55>,<U1E54>);(<U1E57>,<U1E56>);(<U1E59>,<U1E58>);(<U1E5B>,<U1E5A>);/
+ (<U1E5D>,<U1E5C>);(<U1E5F>,<U1E5E>);(<U1E61>,<U1E60>);(<U1E63>,<U1E62>);/
+ (<U1E65>,<U1E64>);(<U1E67>,<U1E66>);(<U1E69>,<U1E68>);(<U1E6B>,<U1E6A>);/
+ (<U1E6D>,<U1E6C>);(<U1E6F>,<U1E6E>);(<U1E71>,<U1E70>);(<U1E73>,<U1E72>);/
+ (<U1E75>,<U1E74>);(<U1E77>,<U1E76>);(<U1E79>,<U1E78>);(<U1E7B>,<U1E7A>);/
+ (<U1E7D>,<U1E7C>);(<U1E7F>,<U1E7E>);(<U1E81>,<U1E80>);(<U1E83>,<U1E82>);/
+ (<U1E85>,<U1E84>);(<U1E87>,<U1E86>);(<U1E89>,<U1E88>);(<U1E8B>,<U1E8A>);/
+ (<U1E8D>,<U1E8C>);(<U1E8F>,<U1E8E>);(<U1E91>,<U1E90>);(<U1E93>,<U1E92>);/
+ (<U1E95>,<U1E94>);(<U1E9B>,<U1E60>);(<U1EA1>,<U1EA0>);(<U1EA3>,<U1EA2>);/
+ (<U1EA5>,<U1EA4>);(<U1EA7>,<U1EA6>);(<U1EA9>,<U1EA8>);(<U1EAB>,<U1EAA>);/
+ (<U1EAD>,<U1EAC>);(<U1EAF>,<U1EAE>);(<U1EB1>,<U1EB0>);(<U1EB3>,<U1EB2>);/
+ (<U1EB5>,<U1EB4>);(<U1EB7>,<U1EB6>);(<U1EB9>,<U1EB8>);(<U1EBB>,<U1EBA>);/
+ (<U1EBD>,<U1EBC>);(<U1EBF>,<U1EBE>);(<U1EC1>,<U1EC0>);(<U1EC3>,<U1EC2>);/
+ (<U1EC5>,<U1EC4>);(<U1EC7>,<U1EC6>);(<U1EC9>,<U1EC8>);(<U1ECB>,<U1ECA>);/
+ (<U1ECD>,<U1ECC>);(<U1ECF>,<U1ECE>);(<U1ED1>,<U1ED0>);(<U1ED3>,<U1ED2>);/
+ (<U1ED5>,<U1ED4>);(<U1ED7>,<U1ED6>);(<U1ED9>,<U1ED8>);(<U1EDB>,<U1EDA>);/
+ (<U1EDD>,<U1EDC>);(<U1EDF>,<U1EDE>);(<U1EE1>,<U1EE0>);(<U1EE3>,<U1EE2>);/
+ (<U1EE5>,<U1EE4>);(<U1EE7>,<U1EE6>);(<U1EE9>,<U1EE8>);(<U1EEB>,<U1EEA>);/
+ (<U1EED>,<U1EEC>);(<U1EEF>,<U1EEE>);(<U1EF1>,<U1EF0>);(<U1EF3>,<U1EF2>);/
+ (<U1EF5>,<U1EF4>);(<U1EF7>,<U1EF6>);(<U1EF9>,<U1EF8>);(<U1EFB>,<U1EFA>);/
+ (<U1EFD>,<U1EFC>);(<U1EFF>,<U1EFE>);(<U1F00>,<U1F08>);(<U1F01>,<U1F09>);/
+ (<U1F02>,<U1F0A>);(<U1F03>,<U1F0B>);(<U1F04>,<U1F0C>);(<U1F05>,<U1F0D>);/
+ (<U1F06>,<U1F0E>);(<U1F07>,<U1F0F>);(<U1F10>,<U1F18>);(<U1F11>,<U1F19>);/
+ (<U1F12>,<U1F1A>);(<U1F13>,<U1F1B>);(<U1F14>,<U1F1C>);(<U1F15>,<U1F1D>);/
+ (<U1F20>,<U1F28>);(<U1F21>,<U1F29>);(<U1F22>,<U1F2A>);(<U1F23>,<U1F2B>);/
+ (<U1F24>,<U1F2C>);(<U1F25>,<U1F2D>);(<U1F26>,<U1F2E>);(<U1F27>,<U1F2F>);/
+ (<U1F30>,<U1F38>);(<U1F31>,<U1F39>);(<U1F32>,<U1F3A>);(<U1F33>,<U1F3B>);/
+ (<U1F34>,<U1F3C>);(<U1F35>,<U1F3D>);(<U1F36>,<U1F3E>);(<U1F37>,<U1F3F>);/
+ (<U1F40>,<U1F48>);(<U1F41>,<U1F49>);(<U1F42>,<U1F4A>);(<U1F43>,<U1F4B>);/
+ (<U1F44>,<U1F4C>);(<U1F45>,<U1F4D>);(<U1F51>,<U1F59>);(<U1F53>,<U1F5B>);/
+ (<U1F55>,<U1F5D>);(<U1F57>,<U1F5F>);(<U1F60>,<U1F68>);(<U1F61>,<U1F69>);/
+ (<U1F62>,<U1F6A>);(<U1F63>,<U1F6B>);(<U1F64>,<U1F6C>);(<U1F65>,<U1F6D>);/
+ (<U1F66>,<U1F6E>);(<U1F67>,<U1F6F>);(<U1F70>,<U1FBA>);(<U1F71>,<U1FBB>);/
+ (<U1F72>,<U1FC8>);(<U1F73>,<U1FC9>);(<U1F74>,<U1FCA>);(<U1F75>,<U1FCB>);/
+ (<U1F76>,<U1FDA>);(<U1F77>,<U1FDB>);(<U1F78>,<U1FF8>);(<U1F79>,<U1FF9>);/
+ (<U1F7A>,<U1FEA>);(<U1F7B>,<U1FEB>);(<U1F7C>,<U1FFA>);(<U1F7D>,<U1FFB>);/
+ (<U1F80>,<U1F88>);(<U1F81>,<U1F89>);(<U1F82>,<U1F8A>);(<U1F83>,<U1F8B>);/
+ (<U1F84>,<U1F8C>);(<U1F85>,<U1F8D>);(<U1F86>,<U1F8E>);(<U1F87>,<U1F8F>);/
+ (<U1F90>,<U1F98>);(<U1F91>,<U1F99>);(<U1F92>,<U1F9A>);(<U1F93>,<U1F9B>);/
+ (<U1F94>,<U1F9C>);(<U1F95>,<U1F9D>);(<U1F96>,<U1F9E>);(<U1F97>,<U1F9F>);/
+ (<U1FA0>,<U1FA8>);(<U1FA1>,<U1FA9>);(<U1FA2>,<U1FAA>);(<U1FA3>,<U1FAB>);/
+ (<U1FA4>,<U1FAC>);(<U1FA5>,<U1FAD>);(<U1FA6>,<U1FAE>);(<U1FA7>,<U1FAF>);/
+ (<U1FB0>,<U1FB8>);(<U1FB1>,<U1FB9>);(<U1FB3>,<U1FBC>);(<U1FBE>,<U0399>);/
+ (<U1FC3>,<U1FCC>);(<U1FD0>,<U1FD8>);(<U1FD1>,<U1FD9>);(<U1FE0>,<U1FE8>);/
+ (<U1FE1>,<U1FE9>);(<U1FE5>,<U1FEC>);(<U1FF3>,<U1FFC>);(<U214E>,<U2132>);/
+ (<U2170>,<U2160>);(<U2171>,<U2161>);(<U2172>,<U2162>);(<U2173>,<U2163>);/
+ (<U2174>,<U2164>);(<U2175>,<U2165>);(<U2176>,<U2166>);(<U2177>,<U2167>);/
+ (<U2178>,<U2168>);(<U2179>,<U2169>);(<U217A>,<U216A>);(<U217B>,<U216B>);/
+ (<U217C>,<U216C>);(<U217D>,<U216D>);(<U217E>,<U216E>);(<U217F>,<U216F>);/
+ (<U2184>,<U2183>);(<U24D0>,<U24B6>);(<U24D1>,<U24B7>);(<U24D2>,<U24B8>);/
+ (<U24D3>,<U24B9>);(<U24D4>,<U24BA>);(<U24D5>,<U24BB>);(<U24D6>,<U24BC>);/
+ (<U24D7>,<U24BD>);(<U24D8>,<U24BE>);(<U24D9>,<U24BF>);(<U24DA>,<U24C0>);/
+ (<U24DB>,<U24C1>);(<U24DC>,<U24C2>);(<U24DD>,<U24C3>);(<U24DE>,<U24C4>);/
+ (<U24DF>,<U24C5>);(<U24E0>,<U24C6>);(<U24E1>,<U24C7>);(<U24E2>,<U24C8>);/
+ (<U24E3>,<U24C9>);(<U24E4>,<U24CA>);(<U24E5>,<U24CB>);(<U24E6>,<U24CC>);/
+ (<U24E7>,<U24CD>);(<U24E8>,<U24CE>);(<U24E9>,<U24CF>);(<U2C30>,<U2C00>);/
+ (<U2C31>,<U2C01>);(<U2C32>,<U2C02>);(<U2C33>,<U2C03>);(<U2C34>,<U2C04>);/
+ (<U2C35>,<U2C05>);(<U2C36>,<U2C06>);(<U2C37>,<U2C07>);(<U2C38>,<U2C08>);/
+ (<U2C39>,<U2C09>);(<U2C3A>,<U2C0A>);(<U2C3B>,<U2C0B>);(<U2C3C>,<U2C0C>);/
+ (<U2C3D>,<U2C0D>);(<U2C3E>,<U2C0E>);(<U2C3F>,<U2C0F>);(<U2C40>,<U2C10>);/
+ (<U2C41>,<U2C11>);(<U2C42>,<U2C12>);(<U2C43>,<U2C13>);(<U2C44>,<U2C14>);/
+ (<U2C45>,<U2C15>);(<U2C46>,<U2C16>);(<U2C47>,<U2C17>);(<U2C48>,<U2C18>);/
+ (<U2C49>,<U2C19>);(<U2C4A>,<U2C1A>);(<U2C4B>,<U2C1B>);(<U2C4C>,<U2C1C>);/
+ (<U2C4D>,<U2C1D>);(<U2C4E>,<U2C1E>);(<U2C4F>,<U2C1F>);(<U2C50>,<U2C20>);/
+ (<U2C51>,<U2C21>);(<U2C52>,<U2C22>);(<U2C53>,<U2C23>);(<U2C54>,<U2C24>);/
+ (<U2C55>,<U2C25>);(<U2C56>,<U2C26>);(<U2C57>,<U2C27>);(<U2C58>,<U2C28>);/
+ (<U2C59>,<U2C29>);(<U2C5A>,<U2C2A>);(<U2C5B>,<U2C2B>);(<U2C5C>,<U2C2C>);/
+ (<U2C5D>,<U2C2D>);(<U2C5E>,<U2C2E>);(<U2C5F>,<U2C2F>);(<U2C61>,<U2C60>);/
+ (<U2C65>,<U023A>);(<U2C66>,<U023E>);(<U2C68>,<U2C67>);(<U2C6A>,<U2C69>);/
+ (<U2C6C>,<U2C6B>);(<U2C73>,<U2C72>);(<U2C76>,<U2C75>);(<U2C81>,<U2C80>);/
+ (<U2C83>,<U2C82>);(<U2C85>,<U2C84>);(<U2C87>,<U2C86>);(<U2C89>,<U2C88>);/
+ (<U2C8B>,<U2C8A>);(<U2C8D>,<U2C8C>);(<U2C8F>,<U2C8E>);(<U2C91>,<U2C90>);/
+ (<U2C93>,<U2C92>);(<U2C95>,<U2C94>);(<U2C97>,<U2C96>);(<U2C99>,<U2C98>);/
+ (<U2C9B>,<U2C9A>);(<U2C9D>,<U2C9C>);(<U2C9F>,<U2C9E>);(<U2CA1>,<U2CA0>);/
+ (<U2CA3>,<U2CA2>);(<U2CA5>,<U2CA4>);(<U2CA7>,<U2CA6>);(<U2CA9>,<U2CA8>);/
+ (<U2CAB>,<U2CAA>);(<U2CAD>,<U2CAC>);(<U2CAF>,<U2CAE>);(<U2CB1>,<U2CB0>);/
+ (<U2CB3>,<U2CB2>);(<U2CB5>,<U2CB4>);(<U2CB7>,<U2CB6>);(<U2CB9>,<U2CB8>);/
+ (<U2CBB>,<U2CBA>);(<U2CBD>,<U2CBC>);(<U2CBF>,<U2CBE>);(<U2CC1>,<U2CC0>);/
+ (<U2CC3>,<U2CC2>);(<U2CC5>,<U2CC4>);(<U2CC7>,<U2CC6>);(<U2CC9>,<U2CC8>);/
+ (<U2CCB>,<U2CCA>);(<U2CCD>,<U2CCC>);(<U2CCF>,<U2CCE>);(<U2CD1>,<U2CD0>);/
+ (<U2CD3>,<U2CD2>);(<U2CD5>,<U2CD4>);(<U2CD7>,<U2CD6>);(<U2CD9>,<U2CD8>);/
+ (<U2CDB>,<U2CDA>);(<U2CDD>,<U2CDC>);(<U2CDF>,<U2CDE>);(<U2CE1>,<U2CE0>);/
+ (<U2CE3>,<U2CE2>);(<U2CEC>,<U2CEB>);(<U2CEE>,<U2CED>);(<U2CF3>,<U2CF2>);/
+ (<U2D00>,<U10A0>);(<U2D01>,<U10A1>);(<U2D02>,<U10A2>);(<U2D03>,<U10A3>);/
+ (<U2D04>,<U10A4>);(<U2D05>,<U10A5>);(<U2D06>,<U10A6>);(<U2D07>,<U10A7>);/
+ (<U2D08>,<U10A8>);(<U2D09>,<U10A9>);(<U2D0A>,<U10AA>);(<U2D0B>,<U10AB>);/
+ (<U2D0C>,<U10AC>);(<U2D0D>,<U10AD>);(<U2D0E>,<U10AE>);(<U2D0F>,<U10AF>);/
+ (<U2D10>,<U10B0>);(<U2D11>,<U10B1>);(<U2D12>,<U10B2>);(<U2D13>,<U10B3>);/
+ (<U2D14>,<U10B4>);(<U2D15>,<U10B5>);(<U2D16>,<U10B6>);(<U2D17>,<U10B7>);/
+ (<U2D18>,<U10B8>);(<U2D19>,<U10B9>);(<U2D1A>,<U10BA>);(<U2D1B>,<U10BB>);/
+ (<U2D1C>,<U10BC>);(<U2D1D>,<U10BD>);(<U2D1E>,<U10BE>);(<U2D1F>,<U10BF>);/
+ (<U2D20>,<U10C0>);(<U2D21>,<U10C1>);(<U2D22>,<U10C2>);(<U2D23>,<U10C3>);/
+ (<U2D24>,<U10C4>);(<U2D25>,<U10C5>);(<U2D27>,<U10C7>);(<U2D2D>,<U10CD>);/
+ (<UA641>,<UA640>);(<UA643>,<UA642>);(<UA645>,<UA644>);(<UA647>,<UA646>);/
+ (<UA649>,<UA648>);(<UA64B>,<UA64A>);(<UA64D>,<UA64C>);(<UA64F>,<UA64E>);/
+ (<UA651>,<UA650>);(<UA653>,<UA652>);(<UA655>,<UA654>);(<UA657>,<UA656>);/
+ (<UA659>,<UA658>);(<UA65B>,<UA65A>);(<UA65D>,<UA65C>);(<UA65F>,<UA65E>);/
+ (<UA661>,<UA660>);(<UA663>,<UA662>);(<UA665>,<UA664>);(<UA667>,<UA666>);/
+ (<UA669>,<UA668>);(<UA66B>,<UA66A>);(<UA66D>,<UA66C>);(<UA681>,<UA680>);/
+ (<UA683>,<UA682>);(<UA685>,<UA684>);(<UA687>,<UA686>);(<UA689>,<UA688>);/
+ (<UA68B>,<UA68A>);(<UA68D>,<UA68C>);(<UA68F>,<UA68E>);(<UA691>,<UA690>);/
+ (<UA693>,<UA692>);(<UA695>,<UA694>);(<UA697>,<UA696>);(<UA699>,<UA698>);/
+ (<UA69B>,<UA69A>);(<UA723>,<UA722>);(<UA725>,<UA724>);(<UA727>,<UA726>);/
+ (<UA729>,<UA728>);(<UA72B>,<UA72A>);(<UA72D>,<UA72C>);(<UA72F>,<UA72E>);/
+ (<UA733>,<UA732>);(<UA735>,<UA734>);(<UA737>,<UA736>);(<UA739>,<UA738>);/
+ (<UA73B>,<UA73A>);(<UA73D>,<UA73C>);(<UA73F>,<UA73E>);(<UA741>,<UA740>);/
+ (<UA743>,<UA742>);(<UA745>,<UA744>);(<UA747>,<UA746>);(<UA749>,<UA748>);/
+ (<UA74B>,<UA74A>);(<UA74D>,<UA74C>);(<UA74F>,<UA74E>);(<UA751>,<UA750>);/
+ (<UA753>,<UA752>);(<UA755>,<UA754>);(<UA757>,<UA756>);(<UA759>,<UA758>);/
+ (<UA75B>,<UA75A>);(<UA75D>,<UA75C>);(<UA75F>,<UA75E>);(<UA761>,<UA760>);/
+ (<UA763>,<UA762>);(<UA765>,<UA764>);(<UA767>,<UA766>);(<UA769>,<UA768>);/
+ (<UA76B>,<UA76A>);(<UA76D>,<UA76C>);(<UA76F>,<UA76E>);(<UA77A>,<UA779>);/
+ (<UA77C>,<UA77B>);(<UA77F>,<UA77E>);(<UA781>,<UA780>);(<UA783>,<UA782>);/
+ (<UA785>,<UA784>);(<UA787>,<UA786>);(<UA78C>,<UA78B>);(<UA791>,<UA790>);/
+ (<UA793>,<UA792>);(<UA794>,<UA7C4>);(<UA797>,<UA796>);(<UA799>,<UA798>);/
+ (<UA79B>,<UA79A>);(<UA79D>,<UA79C>);(<UA79F>,<UA79E>);(<UA7A1>,<UA7A0>);/
+ (<UA7A3>,<UA7A2>);(<UA7A5>,<UA7A4>);(<UA7A7>,<UA7A6>);(<UA7A9>,<UA7A8>);/
+ (<UA7B5>,<UA7B4>);(<UA7B7>,<UA7B6>);(<UA7B9>,<UA7B8>);(<UA7BB>,<UA7BA>);/
+ (<UA7BD>,<UA7BC>);(<UA7BF>,<UA7BE>);(<UA7C1>,<UA7C0>);(<UA7C3>,<UA7C2>);/
+ (<UA7C8>,<UA7C7>);(<UA7CA>,<UA7C9>);(<UA7CD>,<UA7CC>);(<UA7D1>,<UA7D0>);/
+ (<UA7D7>,<UA7D6>);(<UA7D9>,<UA7D8>);(<UA7DB>,<UA7DA>);(<UA7F6>,<UA7F5>);/
+ (<UAB53>,<UA7B3>);(<UAB70>,<U13A0>);(<UAB71>,<U13A1>);(<UAB72>,<U13A2>);/
+ (<UAB73>,<U13A3>);(<UAB74>,<U13A4>);(<UAB75>,<U13A5>);(<UAB76>,<U13A6>);/
+ (<UAB77>,<U13A7>);(<UAB78>,<U13A8>);(<UAB79>,<U13A9>);(<UAB7A>,<U13AA>);/
+ (<UAB7B>,<U13AB>);(<UAB7C>,<U13AC>);(<UAB7D>,<U13AD>);(<UAB7E>,<U13AE>);/
+ (<UAB7F>,<U13AF>);(<UAB80>,<U13B0>);(<UAB81>,<U13B1>);(<UAB82>,<U13B2>);/
+ (<UAB83>,<U13B3>);(<UAB84>,<U13B4>);(<UAB85>,<U13B5>);(<UAB86>,<U13B6>);/
+ (<UAB87>,<U13B7>);(<UAB88>,<U13B8>);(<UAB89>,<U13B9>);(<UAB8A>,<U13BA>);/
+ (<UAB8B>,<U13BB>);(<UAB8C>,<U13BC>);(<UAB8D>,<U13BD>);(<UAB8E>,<U13BE>);/
+ (<UAB8F>,<U13BF>);(<UAB90>,<U13C0>);(<UAB91>,<U13C1>);(<UAB92>,<U13C2>);/
+ (<UAB93>,<U13C3>);(<UAB94>,<U13C4>);(<UAB95>,<U13C5>);(<UAB96>,<U13C6>);/
+ (<UAB97>,<U13C7>);(<UAB98>,<U13C8>);(<UAB99>,<U13C9>);(<UAB9A>,<U13CA>);/
+ (<UAB9B>,<U13CB>);(<UAB9C>,<U13CC>);(<UAB9D>,<U13CD>);(<UAB9E>,<U13CE>);/
+ (<UAB9F>,<U13CF>);(<UABA0>,<U13D0>);(<UABA1>,<U13D1>);(<UABA2>,<U13D2>);/
+ (<UABA3>,<U13D3>);(<UABA4>,<U13D4>);(<UABA5>,<U13D5>);(<UABA6>,<U13D6>);/
+ (<UABA7>,<U13D7>);(<UABA8>,<U13D8>);(<UABA9>,<U13D9>);(<UABAA>,<U13DA>);/
+ (<UABAB>,<U13DB>);(<UABAC>,<U13DC>);(<UABAD>,<U13DD>);(<UABAE>,<U13DE>);/
+ (<UABAF>,<U13DF>);(<UABB0>,<U13E0>);(<UABB1>,<U13E1>);(<UABB2>,<U13E2>);/
+ (<UABB3>,<U13E3>);(<UABB4>,<U13E4>);(<UABB5>,<U13E5>);(<UABB6>,<U13E6>);/
+ (<UABB7>,<U13E7>);(<UABB8>,<U13E8>);(<UABB9>,<U13E9>);(<UABBA>,<U13EA>);/
+ (<UABBB>,<U13EB>);(<UABBC>,<U13EC>);(<UABBD>,<U13ED>);(<UABBE>,<U13EE>);/
+ (<UABBF>,<U13EF>);(<UFF41>,<UFF21>);(<UFF42>,<UFF22>);(<UFF43>,<UFF23>);/
+ (<UFF44>,<UFF24>);(<UFF45>,<UFF25>);(<UFF46>,<UFF26>);(<UFF47>,<UFF27>);/
+ (<UFF48>,<UFF28>);(<UFF49>,<UFF29>);(<UFF4A>,<UFF2A>);(<UFF4B>,<UFF2B>);/
+ (<UFF4C>,<UFF2C>);(<UFF4D>,<UFF2D>);(<UFF4E>,<UFF2E>);(<UFF4F>,<UFF2F>);/
+ (<UFF50>,<UFF30>);(<UFF51>,<UFF31>);(<UFF52>,<UFF32>);(<UFF53>,<UFF33>);/
+ (<UFF54>,<UFF34>);(<UFF55>,<UFF35>);(<UFF56>,<UFF36>);(<UFF57>,<UFF37>);/
+ (<UFF58>,<UFF38>);(<UFF59>,<UFF39>);(<UFF5A>,<UFF3A>);/
+ (<U00010428>,<U00010400>);(<U00010429>,<U00010401>);/
+ (<U0001042A>,<U00010402>);(<U0001042B>,<U00010403>);/
+ (<U0001042C>,<U00010404>);(<U0001042D>,<U00010405>);/
+ (<U0001042E>,<U00010406>);(<U0001042F>,<U00010407>);/
+ (<U00010430>,<U00010408>);(<U00010431>,<U00010409>);/
+ (<U00010432>,<U0001040A>);(<U00010433>,<U0001040B>);/
+ (<U00010434>,<U0001040C>);(<U00010435>,<U0001040D>);/
+ (<U00010436>,<U0001040E>);(<U00010437>,<U0001040F>);/
+ (<U00010438>,<U00010410>);(<U00010439>,<U00010411>);/
+ (<U0001043A>,<U00010412>);(<U0001043B>,<U00010413>);/
+ (<U0001043C>,<U00010414>);(<U0001043D>,<U00010415>);/
+ (<U0001043E>,<U00010416>);(<U0001043F>,<U00010417>);/
+ (<U00010440>,<U00010418>);(<U00010441>,<U00010419>);/
+ (<U00010442>,<U0001041A>);(<U00010443>,<U0001041B>);/
+ (<U00010444>,<U0001041C>);(<U00010445>,<U0001041D>);/
+ (<U00010446>,<U0001041E>);(<U00010447>,<U0001041F>);/
+ (<U00010448>,<U00010420>);(<U00010449>,<U00010421>);/
+ (<U0001044A>,<U00010422>);(<U0001044B>,<U00010423>);/
+ (<U0001044C>,<U00010424>);(<U0001044D>,<U00010425>);/
+ (<U0001044E>,<U00010426>);(<U0001044F>,<U00010427>);/
+ (<U000104D8>,<U000104B0>);(<U000104D9>,<U000104B1>);/
+ (<U000104DA>,<U000104B2>);(<U000104DB>,<U000104B3>);/
+ (<U000104DC>,<U000104B4>);(<U000104DD>,<U000104B5>);/
+ (<U000104DE>,<U000104B6>);(<U000104DF>,<U000104B7>);/
+ (<U000104E0>,<U000104B8>);(<U000104E1>,<U000104B9>);/
+ (<U000104E2>,<U000104BA>);(<U000104E3>,<U000104BB>);/
+ (<U000104E4>,<U000104BC>);(<U000104E5>,<U000104BD>);/
+ (<U000104E6>,<U000104BE>);(<U000104E7>,<U000104BF>);/
+ (<U000104E8>,<U000104C0>);(<U000104E9>,<U000104C1>);/
+ (<U000104EA>,<U000104C2>);(<U000104EB>,<U000104C3>);/
+ (<U000104EC>,<U000104C4>);(<U000104ED>,<U000104C5>);/
+ (<U000104EE>,<U000104C6>);(<U000104EF>,<U000104C7>);/
+ (<U000104F0>,<U000104C8>);(<U000104F1>,<U000104C9>);/
+ (<U000104F2>,<U000104CA>);(<U000104F3>,<U000104CB>);/
+ (<U000104F4>,<U000104CC>);(<U000104F5>,<U000104CD>);/
+ (<U000104F6>,<U000104CE>);(<U000104F7>,<U000104CF>);/
+ (<U000104F8>,<U000104D0>);(<U000104F9>,<U000104D1>);/
+ (<U000104FA>,<U000104D2>);(<U000104FB>,<U000104D3>);/
+ (<U00010597>,<U00010570>);(<U00010598>,<U00010571>);/
+ (<U00010599>,<U00010572>);(<U0001059A>,<U00010573>);/
+ (<U0001059B>,<U00010574>);(<U0001059C>,<U00010575>);/
+ (<U0001059D>,<U00010576>);(<U0001059E>,<U00010577>);/
+ (<U0001059F>,<U00010578>);(<U000105A0>,<U00010579>);/
+ (<U000105A1>,<U0001057A>);(<U000105A3>,<U0001057C>);/
+ (<U000105A4>,<U0001057D>);(<U000105A5>,<U0001057E>);/
+ (<U000105A6>,<U0001057F>);(<U000105A7>,<U00010580>);/
+ (<U000105A8>,<U00010581>);(<U000105A9>,<U00010582>);/
+ (<U000105AA>,<U00010583>);(<U000105AB>,<U00010584>);/
+ (<U000105AC>,<U00010585>);(<U000105AD>,<U00010586>);/
+ (<U000105AE>,<U00010587>);(<U000105AF>,<U00010588>);/
+ (<U000105B0>,<U00010589>);(<U000105B1>,<U0001058A>);/
+ (<U000105B3>,<U0001058C>);(<U000105B4>,<U0001058D>);/
+ (<U000105B5>,<U0001058E>);(<U000105B6>,<U0001058F>);/
+ (<U000105B7>,<U00010590>);(<U000105B8>,<U00010591>);/
+ (<U000105B9>,<U00010592>);(<U000105BB>,<U00010594>);/
+ (<U000105BC>,<U00010595>);(<U00010CC0>,<U00010C80>);/
+ (<U00010CC1>,<U00010C81>);(<U00010CC2>,<U00010C82>);/
+ (<U00010CC3>,<U00010C83>);(<U00010CC4>,<U00010C84>);/
+ (<U00010CC5>,<U00010C85>);(<U00010CC6>,<U00010C86>);/
+ (<U00010CC7>,<U00010C87>);(<U00010CC8>,<U00010C88>);/
+ (<U00010CC9>,<U00010C89>);(<U00010CCA>,<U00010C8A>);/
+ (<U00010CCB>,<U00010C8B>);(<U00010CCC>,<U00010C8C>);/
+ (<U00010CCD>,<U00010C8D>);(<U00010CCE>,<U00010C8E>);/
+ (<U00010CCF>,<U00010C8F>);(<U00010CD0>,<U00010C90>);/
+ (<U00010CD1>,<U00010C91>);(<U00010CD2>,<U00010C92>);/
+ (<U00010CD3>,<U00010C93>);(<U00010CD4>,<U00010C94>);/
+ (<U00010CD5>,<U00010C95>);(<U00010CD6>,<U00010C96>);/
+ (<U00010CD7>,<U00010C97>);(<U00010CD8>,<U00010C98>);/
+ (<U00010CD9>,<U00010C99>);(<U00010CDA>,<U00010C9A>);/
+ (<U00010CDB>,<U00010C9B>);(<U00010CDC>,<U00010C9C>);/
+ (<U00010CDD>,<U00010C9D>);(<U00010CDE>,<U00010C9E>);/
+ (<U00010CDF>,<U00010C9F>);(<U00010CE0>,<U00010CA0>);/
+ (<U00010CE1>,<U00010CA1>);(<U00010CE2>,<U00010CA2>);/
+ (<U00010CE3>,<U00010CA3>);(<U00010CE4>,<U00010CA4>);/
+ (<U00010CE5>,<U00010CA5>);(<U00010CE6>,<U00010CA6>);/
+ (<U00010CE7>,<U00010CA7>);(<U00010CE8>,<U00010CA8>);/
+ (<U00010CE9>,<U00010CA9>);(<U00010CEA>,<U00010CAA>);/
+ (<U00010CEB>,<U00010CAB>);(<U00010CEC>,<U00010CAC>);/
+ (<U00010CED>,<U00010CAD>);(<U00010CEE>,<U00010CAE>);/
+ (<U00010CEF>,<U00010CAF>);(<U00010CF0>,<U00010CB0>);/
+ (<U00010CF1>,<U00010CB1>);(<U00010CF2>,<U00010CB2>);/
+ (<U00010D70>,<U00010D50>);(<U00010D71>,<U00010D51>);/
+ (<U00010D72>,<U00010D52>);(<U00010D73>,<U00010D53>);/
+ (<U00010D74>,<U00010D54>);(<U00010D75>,<U00010D55>);/
+ (<U00010D76>,<U00010D56>);(<U00010D77>,<U00010D57>);/
+ (<U00010D78>,<U00010D58>);(<U00010D79>,<U00010D59>);/
+ (<U00010D7A>,<U00010D5A>);(<U00010D7B>,<U00010D5B>);/
+ (<U00010D7C>,<U00010D5C>);(<U00010D7D>,<U00010D5D>);/
+ (<U00010D7E>,<U00010D5E>);(<U00010D7F>,<U00010D5F>);/
+ (<U00010D80>,<U00010D60>);(<U00010D81>,<U00010D61>);/
+ (<U00010D82>,<U00010D62>);(<U00010D83>,<U00010D63>);/
+ (<U00010D84>,<U00010D64>);(<U00010D85>,<U00010D65>);/
+ (<U000118C0>,<U000118A0>);(<U000118C1>,<U000118A1>);/
+ (<U000118C2>,<U000118A2>);(<U000118C3>,<U000118A3>);/
+ (<U000118C4>,<U000118A4>);(<U000118C5>,<U000118A5>);/
+ (<U000118C6>,<U000118A6>);(<U000118C7>,<U000118A7>);/
+ (<U000118C8>,<U000118A8>);(<U000118C9>,<U000118A9>);/
+ (<U000118CA>,<U000118AA>);(<U000118CB>,<U000118AB>);/
+ (<U000118CC>,<U000118AC>);(<U000118CD>,<U000118AD>);/
+ (<U000118CE>,<U000118AE>);(<U000118CF>,<U000118AF>);/
+ (<U000118D0>,<U000118B0>);(<U000118D1>,<U000118B1>);/
+ (<U000118D2>,<U000118B2>);(<U000118D3>,<U000118B3>);/
+ (<U000118D4>,<U000118B4>);(<U000118D5>,<U000118B5>);/
+ (<U000118D6>,<U000118B6>);(<U000118D7>,<U000118B7>);/
+ (<U000118D8>,<U000118B8>);(<U000118D9>,<U000118B9>);/
+ (<U000118DA>,<U000118BA>);(<U000118DB>,<U000118BB>);/
+ (<U000118DC>,<U000118BC>);(<U000118DD>,<U000118BD>);/
+ (<U000118DE>,<U000118BE>);(<U000118DF>,<U000118BF>);/
+ (<U00016E60>,<U00016E40>);(<U00016E61>,<U00016E41>);/
+ (<U00016E62>,<U00016E42>);(<U00016E63>,<U00016E43>);/
+ (<U00016E64>,<U00016E44>);(<U00016E65>,<U00016E45>);/
+ (<U00016E66>,<U00016E46>);(<U00016E67>,<U00016E47>);/
+ (<U00016E68>,<U00016E48>);(<U00016E69>,<U00016E49>);/
+ (<U00016E6A>,<U00016E4A>);(<U00016E6B>,<U00016E4B>);/
+ (<U00016E6C>,<U00016E4C>);(<U00016E6D>,<U00016E4D>);/
+ (<U00016E6E>,<U00016E4E>);(<U00016E6F>,<U00016E4F>);/
+ (<U00016E70>,<U00016E50>);(<U00016E71>,<U00016E51>);/
+ (<U00016E72>,<U00016E52>);(<U00016E73>,<U00016E53>);/
+ (<U00016E74>,<U00016E54>);(<U00016E75>,<U00016E55>);/
+ (<U00016E76>,<U00016E56>);(<U00016E77>,<U00016E57>);/
+ (<U00016E78>,<U00016E58>);(<U00016E79>,<U00016E59>);/
+ (<U00016E7A>,<U00016E5A>);(<U00016E7B>,<U00016E5B>);/
+ (<U00016E7C>,<U00016E5C>);(<U00016E7D>,<U00016E5D>);/
+ (<U00016E7E>,<U00016E5E>);(<U00016E7F>,<U00016E5F>);/
+ (<U0001E922>,<U0001E900>);(<U0001E923>,<U0001E901>);/
+ (<U0001E924>,<U0001E902>);(<U0001E925>,<U0001E903>);/
+ (<U0001E926>,<U0001E904>);(<U0001E927>,<U0001E905>);/
+ (<U0001E928>,<U0001E906>);(<U0001E929>,<U0001E907>);/
+ (<U0001E92A>,<U0001E908>);(<U0001E92B>,<U0001E909>);/
+ (<U0001E92C>,<U0001E90A>);(<U0001E92D>,<U0001E90B>);/
+ (<U0001E92E>,<U0001E90C>);(<U0001E92F>,<U0001E90D>);/
+ (<U0001E930>,<U0001E90E>);(<U0001E931>,<U0001E90F>);/
+ (<U0001E932>,<U0001E910>);(<U0001E933>,<U0001E911>);/
+ (<U0001E934>,<U0001E912>);(<U0001E935>,<U0001E913>);/
+ (<U0001E936>,<U0001E914>);(<U0001E937>,<U0001E915>);/
+ (<U0001E938>,<U0001E916>);(<U0001E939>,<U0001E917>);/
+ (<U0001E93A>,<U0001E918>);(<U0001E93B>,<U0001E919>);/
+ (<U0001E93C>,<U0001E91A>);(<U0001E93D>,<U0001E91B>);/
+ (<U0001E93E>,<U0001E91C>);(<U0001E93F>,<U0001E91D>);/
+ (<U0001E940>,<U0001E91E>);(<U0001E941>,<U0001E91F>);/
+ (<U0001E942>,<U0001E920>);(<U0001E943>,<U0001E921>)
tolower /
(<U0041>,<U0061>);(<U0042>,<U0062>);(<U0043>,<U0063>);(<U0044>,<U0064>);/
@@ -1756,281 +1811,294 @@ tolower /
(<U13E7>,<UABB7>);(<U13E8>,<UABB8>);(<U13E9>,<UABB9>);(<U13EA>,<UABBA>);/
(<U13EB>,<UABBB>);(<U13EC>,<UABBC>);(<U13ED>,<UABBD>);(<U13EE>,<UABBE>);/
(<U13EF>,<UABBF>);(<U13F0>,<U13F8>);(<U13F1>,<U13F9>);(<U13F2>,<U13FA>);/
- (<U13F3>,<U13FB>);(<U13F4>,<U13FC>);(<U13F5>,<U13FD>);(<U1C90>,<U10D0>);/
- (<U1C91>,<U10D1>);(<U1C92>,<U10D2>);(<U1C93>,<U10D3>);(<U1C94>,<U10D4>);/
- (<U1C95>,<U10D5>);(<U1C96>,<U10D6>);(<U1C97>,<U10D7>);(<U1C98>,<U10D8>);/
- (<U1C99>,<U10D9>);(<U1C9A>,<U10DA>);(<U1C9B>,<U10DB>);(<U1C9C>,<U10DC>);/
- (<U1C9D>,<U10DD>);(<U1C9E>,<U10DE>);(<U1C9F>,<U10DF>);(<U1CA0>,<U10E0>);/
- (<U1CA1>,<U10E1>);(<U1CA2>,<U10E2>);(<U1CA3>,<U10E3>);(<U1CA4>,<U10E4>);/
- (<U1CA5>,<U10E5>);(<U1CA6>,<U10E6>);(<U1CA7>,<U10E7>);(<U1CA8>,<U10E8>);/
- (<U1CA9>,<U10E9>);(<U1CAA>,<U10EA>);(<U1CAB>,<U10EB>);(<U1CAC>,<U10EC>);/
- (<U1CAD>,<U10ED>);(<U1CAE>,<U10EE>);(<U1CAF>,<U10EF>);(<U1CB0>,<U10F0>);/
- (<U1CB1>,<U10F1>);(<U1CB2>,<U10F2>);(<U1CB3>,<U10F3>);(<U1CB4>,<U10F4>);/
- (<U1CB5>,<U10F5>);(<U1CB6>,<U10F6>);(<U1CB7>,<U10F7>);(<U1CB8>,<U10F8>);/
- (<U1CB9>,<U10F9>);(<U1CBA>,<U10FA>);(<U1CBD>,<U10FD>);(<U1CBE>,<U10FE>);/
- (<U1CBF>,<U10FF>);(<U1E00>,<U1E01>);(<U1E02>,<U1E03>);(<U1E04>,<U1E05>);/
- (<U1E06>,<U1E07>);(<U1E08>,<U1E09>);(<U1E0A>,<U1E0B>);(<U1E0C>,<U1E0D>);/
- (<U1E0E>,<U1E0F>);(<U1E10>,<U1E11>);(<U1E12>,<U1E13>);(<U1E14>,<U1E15>);/
- (<U1E16>,<U1E17>);(<U1E18>,<U1E19>);(<U1E1A>,<U1E1B>);(<U1E1C>,<U1E1D>);/
- (<U1E1E>,<U1E1F>);(<U1E20>,<U1E21>);(<U1E22>,<U1E23>);(<U1E24>,<U1E25>);/
- (<U1E26>,<U1E27>);(<U1E28>,<U1E29>);(<U1E2A>,<U1E2B>);(<U1E2C>,<U1E2D>);/
- (<U1E2E>,<U1E2F>);(<U1E30>,<U1E31>);(<U1E32>,<U1E33>);(<U1E34>,<U1E35>);/
- (<U1E36>,<U1E37>);(<U1E38>,<U1E39>);(<U1E3A>,<U1E3B>);(<U1E3C>,<U1E3D>);/
- (<U1E3E>,<U1E3F>);(<U1E40>,<U1E41>);(<U1E42>,<U1E43>);(<U1E44>,<U1E45>);/
- (<U1E46>,<U1E47>);(<U1E48>,<U1E49>);(<U1E4A>,<U1E4B>);(<U1E4C>,<U1E4D>);/
- (<U1E4E>,<U1E4F>);(<U1E50>,<U1E51>);(<U1E52>,<U1E53>);(<U1E54>,<U1E55>);/
- (<U1E56>,<U1E57>);(<U1E58>,<U1E59>);(<U1E5A>,<U1E5B>);(<U1E5C>,<U1E5D>);/
- (<U1E5E>,<U1E5F>);(<U1E60>,<U1E61>);(<U1E62>,<U1E63>);(<U1E64>,<U1E65>);/
- (<U1E66>,<U1E67>);(<U1E68>,<U1E69>);(<U1E6A>,<U1E6B>);(<U1E6C>,<U1E6D>);/
- (<U1E6E>,<U1E6F>);(<U1E70>,<U1E71>);(<U1E72>,<U1E73>);(<U1E74>,<U1E75>);/
- (<U1E76>,<U1E77>);(<U1E78>,<U1E79>);(<U1E7A>,<U1E7B>);(<U1E7C>,<U1E7D>);/
- (<U1E7E>,<U1E7F>);(<U1E80>,<U1E81>);(<U1E82>,<U1E83>);(<U1E84>,<U1E85>);/
- (<U1E86>,<U1E87>);(<U1E88>,<U1E89>);(<U1E8A>,<U1E8B>);(<U1E8C>,<U1E8D>);/
- (<U1E8E>,<U1E8F>);(<U1E90>,<U1E91>);(<U1E92>,<U1E93>);(<U1E94>,<U1E95>);/
- (<U1E9E>,<U00DF>);(<U1EA0>,<U1EA1>);(<U1EA2>,<U1EA3>);(<U1EA4>,<U1EA5>);/
- (<U1EA6>,<U1EA7>);(<U1EA8>,<U1EA9>);(<U1EAA>,<U1EAB>);(<U1EAC>,<U1EAD>);/
- (<U1EAE>,<U1EAF>);(<U1EB0>,<U1EB1>);(<U1EB2>,<U1EB3>);(<U1EB4>,<U1EB5>);/
- (<U1EB6>,<U1EB7>);(<U1EB8>,<U1EB9>);(<U1EBA>,<U1EBB>);(<U1EBC>,<U1EBD>);/
- (<U1EBE>,<U1EBF>);(<U1EC0>,<U1EC1>);(<U1EC2>,<U1EC3>);(<U1EC4>,<U1EC5>);/
- (<U1EC6>,<U1EC7>);(<U1EC8>,<U1EC9>);(<U1ECA>,<U1ECB>);(<U1ECC>,<U1ECD>);/
- (<U1ECE>,<U1ECF>);(<U1ED0>,<U1ED1>);(<U1ED2>,<U1ED3>);(<U1ED4>,<U1ED5>);/
- (<U1ED6>,<U1ED7>);(<U1ED8>,<U1ED9>);(<U1EDA>,<U1EDB>);(<U1EDC>,<U1EDD>);/
- (<U1EDE>,<U1EDF>);(<U1EE0>,<U1EE1>);(<U1EE2>,<U1EE3>);(<U1EE4>,<U1EE5>);/
- (<U1EE6>,<U1EE7>);(<U1EE8>,<U1EE9>);(<U1EEA>,<U1EEB>);(<U1EEC>,<U1EED>);/
- (<U1EEE>,<U1EEF>);(<U1EF0>,<U1EF1>);(<U1EF2>,<U1EF3>);(<U1EF4>,<U1EF5>);/
- (<U1EF6>,<U1EF7>);(<U1EF8>,<U1EF9>);(<U1EFA>,<U1EFB>);(<U1EFC>,<U1EFD>);/
- (<U1EFE>,<U1EFF>);(<U1F08>,<U1F00>);(<U1F09>,<U1F01>);(<U1F0A>,<U1F02>);/
- (<U1F0B>,<U1F03>);(<U1F0C>,<U1F04>);(<U1F0D>,<U1F05>);(<U1F0E>,<U1F06>);/
- (<U1F0F>,<U1F07>);(<U1F18>,<U1F10>);(<U1F19>,<U1F11>);(<U1F1A>,<U1F12>);/
- (<U1F1B>,<U1F13>);(<U1F1C>,<U1F14>);(<U1F1D>,<U1F15>);(<U1F28>,<U1F20>);/
- (<U1F29>,<U1F21>);(<U1F2A>,<U1F22>);(<U1F2B>,<U1F23>);(<U1F2C>,<U1F24>);/
- (<U1F2D>,<U1F25>);(<U1F2E>,<U1F26>);(<U1F2F>,<U1F27>);(<U1F38>,<U1F30>);/
- (<U1F39>,<U1F31>);(<U1F3A>,<U1F32>);(<U1F3B>,<U1F33>);(<U1F3C>,<U1F34>);/
- (<U1F3D>,<U1F35>);(<U1F3E>,<U1F36>);(<U1F3F>,<U1F37>);(<U1F48>,<U1F40>);/
- (<U1F49>,<U1F41>);(<U1F4A>,<U1F42>);(<U1F4B>,<U1F43>);(<U1F4C>,<U1F44>);/
- (<U1F4D>,<U1F45>);(<U1F59>,<U1F51>);(<U1F5B>,<U1F53>);(<U1F5D>,<U1F55>);/
- (<U1F5F>,<U1F57>);(<U1F68>,<U1F60>);(<U1F69>,<U1F61>);(<U1F6A>,<U1F62>);/
- (<U1F6B>,<U1F63>);(<U1F6C>,<U1F64>);(<U1F6D>,<U1F65>);(<U1F6E>,<U1F66>);/
- (<U1F6F>,<U1F67>);(<U1F88>,<U1F80>);(<U1F89>,<U1F81>);(<U1F8A>,<U1F82>);/
- (<U1F8B>,<U1F83>);(<U1F8C>,<U1F84>);(<U1F8D>,<U1F85>);(<U1F8E>,<U1F86>);/
- (<U1F8F>,<U1F87>);(<U1F98>,<U1F90>);(<U1F99>,<U1F91>);(<U1F9A>,<U1F92>);/
- (<U1F9B>,<U1F93>);(<U1F9C>,<U1F94>);(<U1F9D>,<U1F95>);(<U1F9E>,<U1F96>);/
- (<U1F9F>,<U1F97>);(<U1FA8>,<U1FA0>);(<U1FA9>,<U1FA1>);(<U1FAA>,<U1FA2>);/
- (<U1FAB>,<U1FA3>);(<U1FAC>,<U1FA4>);(<U1FAD>,<U1FA5>);(<U1FAE>,<U1FA6>);/
- (<U1FAF>,<U1FA7>);(<U1FB8>,<U1FB0>);(<U1FB9>,<U1FB1>);(<U1FBA>,<U1F70>);/
- (<U1FBB>,<U1F71>);(<U1FBC>,<U1FB3>);(<U1FC8>,<U1F72>);(<U1FC9>,<U1F73>);/
- (<U1FCA>,<U1F74>);(<U1FCB>,<U1F75>);(<U1FCC>,<U1FC3>);(<U1FD8>,<U1FD0>);/
- (<U1FD9>,<U1FD1>);(<U1FDA>,<U1F76>);(<U1FDB>,<U1F77>);(<U1FE8>,<U1FE0>);/
- (<U1FE9>,<U1FE1>);(<U1FEA>,<U1F7A>);(<U1FEB>,<U1F7B>);(<U1FEC>,<U1FE5>);/
- (<U1FF8>,<U1F78>);(<U1FF9>,<U1F79>);(<U1FFA>,<U1F7C>);(<U1FFB>,<U1F7D>);/
- (<U1FFC>,<U1FF3>);(<U2126>,<U03C9>);(<U212A>,<U006B>);(<U212B>,<U00E5>);/
- (<U2132>,<U214E>);(<U2160>,<U2170>);(<U2161>,<U2171>);(<U2162>,<U2172>);/
- (<U2163>,<U2173>);(<U2164>,<U2174>);(<U2165>,<U2175>);(<U2166>,<U2176>);/
- (<U2167>,<U2177>);(<U2168>,<U2178>);(<U2169>,<U2179>);(<U216A>,<U217A>);/
- (<U216B>,<U217B>);(<U216C>,<U217C>);(<U216D>,<U217D>);(<U216E>,<U217E>);/
- (<U216F>,<U217F>);(<U2183>,<U2184>);(<U24B6>,<U24D0>);(<U24B7>,<U24D1>);/
- (<U24B8>,<U24D2>);(<U24B9>,<U24D3>);(<U24BA>,<U24D4>);(<U24BB>,<U24D5>);/
- (<U24BC>,<U24D6>);(<U24BD>,<U24D7>);(<U24BE>,<U24D8>);(<U24BF>,<U24D9>);/
- (<U24C0>,<U24DA>);(<U24C1>,<U24DB>);(<U24C2>,<U24DC>);(<U24C3>,<U24DD>);/
- (<U24C4>,<U24DE>);(<U24C5>,<U24DF>);(<U24C6>,<U24E0>);(<U24C7>,<U24E1>);/
- (<U24C8>,<U24E2>);(<U24C9>,<U24E3>);(<U24CA>,<U24E4>);(<U24CB>,<U24E5>);/
- (<U24CC>,<U24E6>);(<U24CD>,<U24E7>);(<U24CE>,<U24E8>);(<U24CF>,<U24E9>);/
- (<U2C00>,<U2C30>);(<U2C01>,<U2C31>);(<U2C02>,<U2C32>);(<U2C03>,<U2C33>);/
- (<U2C04>,<U2C34>);(<U2C05>,<U2C35>);(<U2C06>,<U2C36>);(<U2C07>,<U2C37>);/
- (<U2C08>,<U2C38>);(<U2C09>,<U2C39>);(<U2C0A>,<U2C3A>);(<U2C0B>,<U2C3B>);/
- (<U2C0C>,<U2C3C>);(<U2C0D>,<U2C3D>);(<U2C0E>,<U2C3E>);(<U2C0F>,<U2C3F>);/
- (<U2C10>,<U2C40>);(<U2C11>,<U2C41>);(<U2C12>,<U2C42>);(<U2C13>,<U2C43>);/
- (<U2C14>,<U2C44>);(<U2C15>,<U2C45>);(<U2C16>,<U2C46>);(<U2C17>,<U2C47>);/
- (<U2C18>,<U2C48>);(<U2C19>,<U2C49>);(<U2C1A>,<U2C4A>);(<U2C1B>,<U2C4B>);/
- (<U2C1C>,<U2C4C>);(<U2C1D>,<U2C4D>);(<U2C1E>,<U2C4E>);(<U2C1F>,<U2C4F>);/
- (<U2C20>,<U2C50>);(<U2C21>,<U2C51>);(<U2C22>,<U2C52>);(<U2C23>,<U2C53>);/
- (<U2C24>,<U2C54>);(<U2C25>,<U2C55>);(<U2C26>,<U2C56>);(<U2C27>,<U2C57>);/
- (<U2C28>,<U2C58>);(<U2C29>,<U2C59>);(<U2C2A>,<U2C5A>);(<U2C2B>,<U2C5B>);/
- (<U2C2C>,<U2C5C>);(<U2C2D>,<U2C5D>);(<U2C2E>,<U2C5E>);(<U2C2F>,<U2C5F>);/
- (<U2C60>,<U2C61>);(<U2C62>,<U026B>);(<U2C63>,<U1D7D>);(<U2C64>,<U027D>);/
- (<U2C67>,<U2C68>);(<U2C69>,<U2C6A>);(<U2C6B>,<U2C6C>);(<U2C6D>,<U0251>);/
- (<U2C6E>,<U0271>);(<U2C6F>,<U0250>);(<U2C70>,<U0252>);(<U2C72>,<U2C73>);/
- (<U2C75>,<U2C76>);(<U2C7E>,<U023F>);(<U2C7F>,<U0240>);(<U2C80>,<U2C81>);/
- (<U2C82>,<U2C83>);(<U2C84>,<U2C85>);(<U2C86>,<U2C87>);(<U2C88>,<U2C89>);/
- (<U2C8A>,<U2C8B>);(<U2C8C>,<U2C8D>);(<U2C8E>,<U2C8F>);(<U2C90>,<U2C91>);/
- (<U2C92>,<U2C93>);(<U2C94>,<U2C95>);(<U2C96>,<U2C97>);(<U2C98>,<U2C99>);/
- (<U2C9A>,<U2C9B>);(<U2C9C>,<U2C9D>);(<U2C9E>,<U2C9F>);(<U2CA0>,<U2CA1>);/
- (<U2CA2>,<U2CA3>);(<U2CA4>,<U2CA5>);(<U2CA6>,<U2CA7>);(<U2CA8>,<U2CA9>);/
- (<U2CAA>,<U2CAB>);(<U2CAC>,<U2CAD>);(<U2CAE>,<U2CAF>);(<U2CB0>,<U2CB1>);/
- (<U2CB2>,<U2CB3>);(<U2CB4>,<U2CB5>);(<U2CB6>,<U2CB7>);(<U2CB8>,<U2CB9>);/
- (<U2CBA>,<U2CBB>);(<U2CBC>,<U2CBD>);(<U2CBE>,<U2CBF>);(<U2CC0>,<U2CC1>);/
- (<U2CC2>,<U2CC3>);(<U2CC4>,<U2CC5>);(<U2CC6>,<U2CC7>);(<U2CC8>,<U2CC9>);/
- (<U2CCA>,<U2CCB>);(<U2CCC>,<U2CCD>);(<U2CCE>,<U2CCF>);(<U2CD0>,<U2CD1>);/
- (<U2CD2>,<U2CD3>);(<U2CD4>,<U2CD5>);(<U2CD6>,<U2CD7>);(<U2CD8>,<U2CD9>);/
- (<U2CDA>,<U2CDB>);(<U2CDC>,<U2CDD>);(<U2CDE>,<U2CDF>);(<U2CE0>,<U2CE1>);/
- (<U2CE2>,<U2CE3>);(<U2CEB>,<U2CEC>);(<U2CED>,<U2CEE>);(<U2CF2>,<U2CF3>);/
- (<UA640>,<UA641>);(<UA642>,<UA643>);(<UA644>,<UA645>);(<UA646>,<UA647>);/
- (<UA648>,<UA649>);(<UA64A>,<UA64B>);(<UA64C>,<UA64D>);(<UA64E>,<UA64F>);/
- (<UA650>,<UA651>);(<UA652>,<UA653>);(<UA654>,<UA655>);(<UA656>,<UA657>);/
- (<UA658>,<UA659>);(<UA65A>,<UA65B>);(<UA65C>,<UA65D>);(<UA65E>,<UA65F>);/
- (<UA660>,<UA661>);(<UA662>,<UA663>);(<UA664>,<UA665>);(<UA666>,<UA667>);/
- (<UA668>,<UA669>);(<UA66A>,<UA66B>);(<UA66C>,<UA66D>);(<UA680>,<UA681>);/
- (<UA682>,<UA683>);(<UA684>,<UA685>);(<UA686>,<UA687>);(<UA688>,<UA689>);/
- (<UA68A>,<UA68B>);(<UA68C>,<UA68D>);(<UA68E>,<UA68F>);(<UA690>,<UA691>);/
- (<UA692>,<UA693>);(<UA694>,<UA695>);(<UA696>,<UA697>);(<UA698>,<UA699>);/
- (<UA69A>,<UA69B>);(<UA722>,<UA723>);(<UA724>,<UA725>);(<UA726>,<UA727>);/
- (<UA728>,<UA729>);(<UA72A>,<UA72B>);(<UA72C>,<UA72D>);(<UA72E>,<UA72F>);/
- (<UA732>,<UA733>);(<UA734>,<UA735>);(<UA736>,<UA737>);(<UA738>,<UA739>);/
- (<UA73A>,<UA73B>);(<UA73C>,<UA73D>);(<UA73E>,<UA73F>);(<UA740>,<UA741>);/
- (<UA742>,<UA743>);(<UA744>,<UA745>);(<UA746>,<UA747>);(<UA748>,<UA749>);/
- (<UA74A>,<UA74B>);(<UA74C>,<UA74D>);(<UA74E>,<UA74F>);(<UA750>,<UA751>);/
- (<UA752>,<UA753>);(<UA754>,<UA755>);(<UA756>,<UA757>);(<UA758>,<UA759>);/
- (<UA75A>,<UA75B>);(<UA75C>,<UA75D>);(<UA75E>,<UA75F>);(<UA760>,<UA761>);/
- (<UA762>,<UA763>);(<UA764>,<UA765>);(<UA766>,<UA767>);(<UA768>,<UA769>);/
- (<UA76A>,<UA76B>);(<UA76C>,<UA76D>);(<UA76E>,<UA76F>);(<UA779>,<UA77A>);/
- (<UA77B>,<UA77C>);(<UA77D>,<U1D79>);(<UA77E>,<UA77F>);(<UA780>,<UA781>);/
- (<UA782>,<UA783>);(<UA784>,<UA785>);(<UA786>,<UA787>);(<UA78B>,<UA78C>);/
- (<UA78D>,<U0265>);(<UA790>,<UA791>);(<UA792>,<UA793>);(<UA796>,<UA797>);/
- (<UA798>,<UA799>);(<UA79A>,<UA79B>);(<UA79C>,<UA79D>);(<UA79E>,<UA79F>);/
- (<UA7A0>,<UA7A1>);(<UA7A2>,<UA7A3>);(<UA7A4>,<UA7A5>);(<UA7A6>,<UA7A7>);/
- (<UA7A8>,<UA7A9>);(<UA7AA>,<U0266>);(<UA7AB>,<U025C>);(<UA7AC>,<U0261>);/
- (<UA7AD>,<U026C>);(<UA7AE>,<U026A>);(<UA7B0>,<U029E>);(<UA7B1>,<U0287>);/
- (<UA7B2>,<U029D>);(<UA7B3>,<UAB53>);(<UA7B4>,<UA7B5>);(<UA7B6>,<UA7B7>);/
- (<UA7B8>,<UA7B9>);(<UA7BA>,<UA7BB>);(<UA7BC>,<UA7BD>);(<UA7BE>,<UA7BF>);/
- (<UA7C0>,<UA7C1>);(<UA7C2>,<UA7C3>);(<UA7C4>,<UA794>);(<UA7C5>,<U0282>);/
- (<UA7C6>,<U1D8E>);(<UA7C7>,<UA7C8>);(<UA7C9>,<UA7CA>);(<UA7D0>,<UA7D1>);/
- (<UA7D6>,<UA7D7>);(<UA7D8>,<UA7D9>);(<UA7F5>,<UA7F6>);(<UFF21>,<UFF41>);/
- (<UFF22>,<UFF42>);(<UFF23>,<UFF43>);(<UFF24>,<UFF44>);(<UFF25>,<UFF45>);/
- (<UFF26>,<UFF46>);(<UFF27>,<UFF47>);(<UFF28>,<UFF48>);(<UFF29>,<UFF49>);/
- (<UFF2A>,<UFF4A>);(<UFF2B>,<UFF4B>);(<UFF2C>,<UFF4C>);(<UFF2D>,<UFF4D>);/
- (<UFF2E>,<UFF4E>);(<UFF2F>,<UFF4F>);(<UFF30>,<UFF50>);(<UFF31>,<UFF51>);/
- (<UFF32>,<UFF52>);(<UFF33>,<UFF53>);(<UFF34>,<UFF54>);(<UFF35>,<UFF55>);/
- (<UFF36>,<UFF56>);(<UFF37>,<UFF57>);(<UFF38>,<UFF58>);(<UFF39>,<UFF59>);/
- (<UFF3A>,<UFF5A>);(<U00010400>,<U00010428>);(<U00010401>,<U00010429>);/
- (<U00010402>,<U0001042A>);(<U00010403>,<U0001042B>);/
- (<U00010404>,<U0001042C>);(<U00010405>,<U0001042D>);/
- (<U00010406>,<U0001042E>);(<U00010407>,<U0001042F>);/
- (<U00010408>,<U00010430>);(<U00010409>,<U00010431>);/
- (<U0001040A>,<U00010432>);(<U0001040B>,<U00010433>);/
- (<U0001040C>,<U00010434>);(<U0001040D>,<U00010435>);/
- (<U0001040E>,<U00010436>);(<U0001040F>,<U00010437>);/
- (<U00010410>,<U00010438>);(<U00010411>,<U00010439>);/
- (<U00010412>,<U0001043A>);(<U00010413>,<U0001043B>);/
- (<U00010414>,<U0001043C>);(<U00010415>,<U0001043D>);/
- (<U00010416>,<U0001043E>);(<U00010417>,<U0001043F>);/
- (<U00010418>,<U00010440>);(<U00010419>,<U00010441>);/
- (<U0001041A>,<U00010442>);(<U0001041B>,<U00010443>);/
- (<U0001041C>,<U00010444>);(<U0001041D>,<U00010445>);/
- (<U0001041E>,<U00010446>);(<U0001041F>,<U00010447>);/
- (<U00010420>,<U00010448>);(<U00010421>,<U00010449>);/
- (<U00010422>,<U0001044A>);(<U00010423>,<U0001044B>);/
- (<U00010424>,<U0001044C>);(<U00010425>,<U0001044D>);/
- (<U00010426>,<U0001044E>);(<U00010427>,<U0001044F>);/
- (<U000104B0>,<U000104D8>);(<U000104B1>,<U000104D9>);/
- (<U000104B2>,<U000104DA>);(<U000104B3>,<U000104DB>);/
- (<U000104B4>,<U000104DC>);(<U000104B5>,<U000104DD>);/
- (<U000104B6>,<U000104DE>);(<U000104B7>,<U000104DF>);/
- (<U000104B8>,<U000104E0>);(<U000104B9>,<U000104E1>);/
- (<U000104BA>,<U000104E2>);(<U000104BB>,<U000104E3>);/
- (<U000104BC>,<U000104E4>);(<U000104BD>,<U000104E5>);/
- (<U000104BE>,<U000104E6>);(<U000104BF>,<U000104E7>);/
- (<U000104C0>,<U000104E8>);(<U000104C1>,<U000104E9>);/
- (<U000104C2>,<U000104EA>);(<U000104C3>,<U000104EB>);/
- (<U000104C4>,<U000104EC>);(<U000104C5>,<U000104ED>);/
- (<U000104C6>,<U000104EE>);(<U000104C7>,<U000104EF>);/
- (<U000104C8>,<U000104F0>);(<U000104C9>,<U000104F1>);/
- (<U000104CA>,<U000104F2>);(<U000104CB>,<U000104F3>);/
- (<U000104CC>,<U000104F4>);(<U000104CD>,<U000104F5>);/
- (<U000104CE>,<U000104F6>);(<U000104CF>,<U000104F7>);/
- (<U000104D0>,<U000104F8>);(<U000104D1>,<U000104F9>);/
- (<U000104D2>,<U000104FA>);(<U000104D3>,<U000104FB>);/
- (<U00010570>,<U00010597>);(<U00010571>,<U00010598>);/
- (<U00010572>,<U00010599>);(<U00010573>,<U0001059A>);/
- (<U00010574>,<U0001059B>);(<U00010575>,<U0001059C>);/
- (<U00010576>,<U0001059D>);(<U00010577>,<U0001059E>);/
- (<U00010578>,<U0001059F>);(<U00010579>,<U000105A0>);/
- (<U0001057A>,<U000105A1>);(<U0001057C>,<U000105A3>);/
- (<U0001057D>,<U000105A4>);(<U0001057E>,<U000105A5>);/
- (<U0001057F>,<U000105A6>);(<U00010580>,<U000105A7>);/
- (<U00010581>,<U000105A8>);(<U00010582>,<U000105A9>);/
- (<U00010583>,<U000105AA>);(<U00010584>,<U000105AB>);/
- (<U00010585>,<U000105AC>);(<U00010586>,<U000105AD>);/
- (<U00010587>,<U000105AE>);(<U00010588>,<U000105AF>);/
- (<U00010589>,<U000105B0>);(<U0001058A>,<U000105B1>);/
- (<U0001058C>,<U000105B3>);(<U0001058D>,<U000105B4>);/
- (<U0001058E>,<U000105B5>);(<U0001058F>,<U000105B6>);/
- (<U00010590>,<U000105B7>);(<U00010591>,<U000105B8>);/
- (<U00010592>,<U000105B9>);(<U00010594>,<U000105BB>);/
- (<U00010595>,<U000105BC>);(<U00010C80>,<U00010CC0>);/
- (<U00010C81>,<U00010CC1>);(<U00010C82>,<U00010CC2>);/
- (<U00010C83>,<U00010CC3>);(<U00010C84>,<U00010CC4>);/
- (<U00010C85>,<U00010CC5>);(<U00010C86>,<U00010CC6>);/
- (<U00010C87>,<U00010CC7>);(<U00010C88>,<U00010CC8>);/
- (<U00010C89>,<U00010CC9>);(<U00010C8A>,<U00010CCA>);/
- (<U00010C8B>,<U00010CCB>);(<U00010C8C>,<U00010CCC>);/
- (<U00010C8D>,<U00010CCD>);(<U00010C8E>,<U00010CCE>);/
- (<U00010C8F>,<U00010CCF>);(<U00010C90>,<U00010CD0>);/
- (<U00010C91>,<U00010CD1>);(<U00010C92>,<U00010CD2>);/
- (<U00010C93>,<U00010CD3>);(<U00010C94>,<U00010CD4>);/
- (<U00010C95>,<U00010CD5>);(<U00010C96>,<U00010CD6>);/
- (<U00010C97>,<U00010CD7>);(<U00010C98>,<U00010CD8>);/
- (<U00010C99>,<U00010CD9>);(<U00010C9A>,<U00010CDA>);/
- (<U00010C9B>,<U00010CDB>);(<U00010C9C>,<U00010CDC>);/
- (<U00010C9D>,<U00010CDD>);(<U00010C9E>,<U00010CDE>);/
- (<U00010C9F>,<U00010CDF>);(<U00010CA0>,<U00010CE0>);/
- (<U00010CA1>,<U00010CE1>);(<U00010CA2>,<U00010CE2>);/
- (<U00010CA3>,<U00010CE3>);(<U00010CA4>,<U00010CE4>);/
- (<U00010CA5>,<U00010CE5>);(<U00010CA6>,<U00010CE6>);/
- (<U00010CA7>,<U00010CE7>);(<U00010CA8>,<U00010CE8>);/
- (<U00010CA9>,<U00010CE9>);(<U00010CAA>,<U00010CEA>);/
- (<U00010CAB>,<U00010CEB>);(<U00010CAC>,<U00010CEC>);/
- (<U00010CAD>,<U00010CED>);(<U00010CAE>,<U00010CEE>);/
- (<U00010CAF>,<U00010CEF>);(<U00010CB0>,<U00010CF0>);/
- (<U00010CB1>,<U00010CF1>);(<U00010CB2>,<U00010CF2>);/
- (<U000118A0>,<U000118C0>);(<U000118A1>,<U000118C1>);/
- (<U000118A2>,<U000118C2>);(<U000118A3>,<U000118C3>);/
- (<U000118A4>,<U000118C4>);(<U000118A5>,<U000118C5>);/
- (<U000118A6>,<U000118C6>);(<U000118A7>,<U000118C7>);/
- (<U000118A8>,<U000118C8>);(<U000118A9>,<U000118C9>);/
- (<U000118AA>,<U000118CA>);(<U000118AB>,<U000118CB>);/
- (<U000118AC>,<U000118CC>);(<U000118AD>,<U000118CD>);/
- (<U000118AE>,<U000118CE>);(<U000118AF>,<U000118CF>);/
- (<U000118B0>,<U000118D0>);(<U000118B1>,<U000118D1>);/
- (<U000118B2>,<U000118D2>);(<U000118B3>,<U000118D3>);/
- (<U000118B4>,<U000118D4>);(<U000118B5>,<U000118D5>);/
- (<U000118B6>,<U000118D6>);(<U000118B7>,<U000118D7>);/
- (<U000118B8>,<U000118D8>);(<U000118B9>,<U000118D9>);/
- (<U000118BA>,<U000118DA>);(<U000118BB>,<U000118DB>);/
- (<U000118BC>,<U000118DC>);(<U000118BD>,<U000118DD>);/
- (<U000118BE>,<U000118DE>);(<U000118BF>,<U000118DF>);/
- (<U00016E40>,<U00016E60>);(<U00016E41>,<U00016E61>);/
- (<U00016E42>,<U00016E62>);(<U00016E43>,<U00016E63>);/
- (<U00016E44>,<U00016E64>);(<U00016E45>,<U00016E65>);/
- (<U00016E46>,<U00016E66>);(<U00016E47>,<U00016E67>);/
- (<U00016E48>,<U00016E68>);(<U00016E49>,<U00016E69>);/
- (<U00016E4A>,<U00016E6A>);(<U00016E4B>,<U00016E6B>);/
- (<U00016E4C>,<U00016E6C>);(<U00016E4D>,<U00016E6D>);/
- (<U00016E4E>,<U00016E6E>);(<U00016E4F>,<U00016E6F>);/
- (<U00016E50>,<U00016E70>);(<U00016E51>,<U00016E71>);/
- (<U00016E52>,<U00016E72>);(<U00016E53>,<U00016E73>);/
- (<U00016E54>,<U00016E74>);(<U00016E55>,<U00016E75>);/
- (<U00016E56>,<U00016E76>);(<U00016E57>,<U00016E77>);/
- (<U00016E58>,<U00016E78>);(<U00016E59>,<U00016E79>);/
- (<U00016E5A>,<U00016E7A>);(<U00016E5B>,<U00016E7B>);/
- (<U00016E5C>,<U00016E7C>);(<U00016E5D>,<U00016E7D>);/
- (<U00016E5E>,<U00016E7E>);(<U00016E5F>,<U00016E7F>);/
- (<U0001E900>,<U0001E922>);(<U0001E901>,<U0001E923>);/
- (<U0001E902>,<U0001E924>);(<U0001E903>,<U0001E925>);/
- (<U0001E904>,<U0001E926>);(<U0001E905>,<U0001E927>);/
- (<U0001E906>,<U0001E928>);(<U0001E907>,<U0001E929>);/
- (<U0001E908>,<U0001E92A>);(<U0001E909>,<U0001E92B>);/
- (<U0001E90A>,<U0001E92C>);(<U0001E90B>,<U0001E92D>);/
- (<U0001E90C>,<U0001E92E>);(<U0001E90D>,<U0001E92F>);/
- (<U0001E90E>,<U0001E930>);(<U0001E90F>,<U0001E931>);/
- (<U0001E910>,<U0001E932>);(<U0001E911>,<U0001E933>);/
- (<U0001E912>,<U0001E934>);(<U0001E913>,<U0001E935>);/
- (<U0001E914>,<U0001E936>);(<U0001E915>,<U0001E937>);/
- (<U0001E916>,<U0001E938>);(<U0001E917>,<U0001E939>);/
- (<U0001E918>,<U0001E93A>);(<U0001E919>,<U0001E93B>);/
- (<U0001E91A>,<U0001E93C>);(<U0001E91B>,<U0001E93D>);/
- (<U0001E91C>,<U0001E93E>);(<U0001E91D>,<U0001E93F>);/
- (<U0001E91E>,<U0001E940>);(<U0001E91F>,<U0001E941>);/
- (<U0001E920>,<U0001E942>);(<U0001E921>,<U0001E943>)
+ (<U13F3>,<U13FB>);(<U13F4>,<U13FC>);(<U13F5>,<U13FD>);(<U1C89>,<U1C8A>);/
+ (<U1C90>,<U10D0>);(<U1C91>,<U10D1>);(<U1C92>,<U10D2>);(<U1C93>,<U10D3>);/
+ (<U1C94>,<U10D4>);(<U1C95>,<U10D5>);(<U1C96>,<U10D6>);(<U1C97>,<U10D7>);/
+ (<U1C98>,<U10D8>);(<U1C99>,<U10D9>);(<U1C9A>,<U10DA>);(<U1C9B>,<U10DB>);/
+ (<U1C9C>,<U10DC>);(<U1C9D>,<U10DD>);(<U1C9E>,<U10DE>);(<U1C9F>,<U10DF>);/
+ (<U1CA0>,<U10E0>);(<U1CA1>,<U10E1>);(<U1CA2>,<U10E2>);(<U1CA3>,<U10E3>);/
+ (<U1CA4>,<U10E4>);(<U1CA5>,<U10E5>);(<U1CA6>,<U10E6>);(<U1CA7>,<U10E7>);/
+ (<U1CA8>,<U10E8>);(<U1CA9>,<U10E9>);(<U1CAA>,<U10EA>);(<U1CAB>,<U10EB>);/
+ (<U1CAC>,<U10EC>);(<U1CAD>,<U10ED>);(<U1CAE>,<U10EE>);(<U1CAF>,<U10EF>);/
+ (<U1CB0>,<U10F0>);(<U1CB1>,<U10F1>);(<U1CB2>,<U10F2>);(<U1CB3>,<U10F3>);/
+ (<U1CB4>,<U10F4>);(<U1CB5>,<U10F5>);(<U1CB6>,<U10F6>);(<U1CB7>,<U10F7>);/
+ (<U1CB8>,<U10F8>);(<U1CB9>,<U10F9>);(<U1CBA>,<U10FA>);(<U1CBD>,<U10FD>);/
+ (<U1CBE>,<U10FE>);(<U1CBF>,<U10FF>);(<U1E00>,<U1E01>);(<U1E02>,<U1E03>);/
+ (<U1E04>,<U1E05>);(<U1E06>,<U1E07>);(<U1E08>,<U1E09>);(<U1E0A>,<U1E0B>);/
+ (<U1E0C>,<U1E0D>);(<U1E0E>,<U1E0F>);(<U1E10>,<U1E11>);(<U1E12>,<U1E13>);/
+ (<U1E14>,<U1E15>);(<U1E16>,<U1E17>);(<U1E18>,<U1E19>);(<U1E1A>,<U1E1B>);/
+ (<U1E1C>,<U1E1D>);(<U1E1E>,<U1E1F>);(<U1E20>,<U1E21>);(<U1E22>,<U1E23>);/
+ (<U1E24>,<U1E25>);(<U1E26>,<U1E27>);(<U1E28>,<U1E29>);(<U1E2A>,<U1E2B>);/
+ (<U1E2C>,<U1E2D>);(<U1E2E>,<U1E2F>);(<U1E30>,<U1E31>);(<U1E32>,<U1E33>);/
+ (<U1E34>,<U1E35>);(<U1E36>,<U1E37>);(<U1E38>,<U1E39>);(<U1E3A>,<U1E3B>);/
+ (<U1E3C>,<U1E3D>);(<U1E3E>,<U1E3F>);(<U1E40>,<U1E41>);(<U1E42>,<U1E43>);/
+ (<U1E44>,<U1E45>);(<U1E46>,<U1E47>);(<U1E48>,<U1E49>);(<U1E4A>,<U1E4B>);/
+ (<U1E4C>,<U1E4D>);(<U1E4E>,<U1E4F>);(<U1E50>,<U1E51>);(<U1E52>,<U1E53>);/
+ (<U1E54>,<U1E55>);(<U1E56>,<U1E57>);(<U1E58>,<U1E59>);(<U1E5A>,<U1E5B>);/
+ (<U1E5C>,<U1E5D>);(<U1E5E>,<U1E5F>);(<U1E60>,<U1E61>);(<U1E62>,<U1E63>);/
+ (<U1E64>,<U1E65>);(<U1E66>,<U1E67>);(<U1E68>,<U1E69>);(<U1E6A>,<U1E6B>);/
+ (<U1E6C>,<U1E6D>);(<U1E6E>,<U1E6F>);(<U1E70>,<U1E71>);(<U1E72>,<U1E73>);/
+ (<U1E74>,<U1E75>);(<U1E76>,<U1E77>);(<U1E78>,<U1E79>);(<U1E7A>,<U1E7B>);/
+ (<U1E7C>,<U1E7D>);(<U1E7E>,<U1E7F>);(<U1E80>,<U1E81>);(<U1E82>,<U1E83>);/
+ (<U1E84>,<U1E85>);(<U1E86>,<U1E87>);(<U1E88>,<U1E89>);(<U1E8A>,<U1E8B>);/
+ (<U1E8C>,<U1E8D>);(<U1E8E>,<U1E8F>);(<U1E90>,<U1E91>);(<U1E92>,<U1E93>);/
+ (<U1E94>,<U1E95>);(<U1E9E>,<U00DF>);(<U1EA0>,<U1EA1>);(<U1EA2>,<U1EA3>);/
+ (<U1EA4>,<U1EA5>);(<U1EA6>,<U1EA7>);(<U1EA8>,<U1EA9>);(<U1EAA>,<U1EAB>);/
+ (<U1EAC>,<U1EAD>);(<U1EAE>,<U1EAF>);(<U1EB0>,<U1EB1>);(<U1EB2>,<U1EB3>);/
+ (<U1EB4>,<U1EB5>);(<U1EB6>,<U1EB7>);(<U1EB8>,<U1EB9>);(<U1EBA>,<U1EBB>);/
+ (<U1EBC>,<U1EBD>);(<U1EBE>,<U1EBF>);(<U1EC0>,<U1EC1>);(<U1EC2>,<U1EC3>);/
+ (<U1EC4>,<U1EC5>);(<U1EC6>,<U1EC7>);(<U1EC8>,<U1EC9>);(<U1ECA>,<U1ECB>);/
+ (<U1ECC>,<U1ECD>);(<U1ECE>,<U1ECF>);(<U1ED0>,<U1ED1>);(<U1ED2>,<U1ED3>);/
+ (<U1ED4>,<U1ED5>);(<U1ED6>,<U1ED7>);(<U1ED8>,<U1ED9>);(<U1EDA>,<U1EDB>);/
+ (<U1EDC>,<U1EDD>);(<U1EDE>,<U1EDF>);(<U1EE0>,<U1EE1>);(<U1EE2>,<U1EE3>);/
+ (<U1EE4>,<U1EE5>);(<U1EE6>,<U1EE7>);(<U1EE8>,<U1EE9>);(<U1EEA>,<U1EEB>);/
+ (<U1EEC>,<U1EED>);(<U1EEE>,<U1EEF>);(<U1EF0>,<U1EF1>);(<U1EF2>,<U1EF3>);/
+ (<U1EF4>,<U1EF5>);(<U1EF6>,<U1EF7>);(<U1EF8>,<U1EF9>);(<U1EFA>,<U1EFB>);/
+ (<U1EFC>,<U1EFD>);(<U1EFE>,<U1EFF>);(<U1F08>,<U1F00>);(<U1F09>,<U1F01>);/
+ (<U1F0A>,<U1F02>);(<U1F0B>,<U1F03>);(<U1F0C>,<U1F04>);(<U1F0D>,<U1F05>);/
+ (<U1F0E>,<U1F06>);(<U1F0F>,<U1F07>);(<U1F18>,<U1F10>);(<U1F19>,<U1F11>);/
+ (<U1F1A>,<U1F12>);(<U1F1B>,<U1F13>);(<U1F1C>,<U1F14>);(<U1F1D>,<U1F15>);/
+ (<U1F28>,<U1F20>);(<U1F29>,<U1F21>);(<U1F2A>,<U1F22>);(<U1F2B>,<U1F23>);/
+ (<U1F2C>,<U1F24>);(<U1F2D>,<U1F25>);(<U1F2E>,<U1F26>);(<U1F2F>,<U1F27>);/
+ (<U1F38>,<U1F30>);(<U1F39>,<U1F31>);(<U1F3A>,<U1F32>);(<U1F3B>,<U1F33>);/
+ (<U1F3C>,<U1F34>);(<U1F3D>,<U1F35>);(<U1F3E>,<U1F36>);(<U1F3F>,<U1F37>);/
+ (<U1F48>,<U1F40>);(<U1F49>,<U1F41>);(<U1F4A>,<U1F42>);(<U1F4B>,<U1F43>);/
+ (<U1F4C>,<U1F44>);(<U1F4D>,<U1F45>);(<U1F59>,<U1F51>);(<U1F5B>,<U1F53>);/
+ (<U1F5D>,<U1F55>);(<U1F5F>,<U1F57>);(<U1F68>,<U1F60>);(<U1F69>,<U1F61>);/
+ (<U1F6A>,<U1F62>);(<U1F6B>,<U1F63>);(<U1F6C>,<U1F64>);(<U1F6D>,<U1F65>);/
+ (<U1F6E>,<U1F66>);(<U1F6F>,<U1F67>);(<U1F88>,<U1F80>);(<U1F89>,<U1F81>);/
+ (<U1F8A>,<U1F82>);(<U1F8B>,<U1F83>);(<U1F8C>,<U1F84>);(<U1F8D>,<U1F85>);/
+ (<U1F8E>,<U1F86>);(<U1F8F>,<U1F87>);(<U1F98>,<U1F90>);(<U1F99>,<U1F91>);/
+ (<U1F9A>,<U1F92>);(<U1F9B>,<U1F93>);(<U1F9C>,<U1F94>);(<U1F9D>,<U1F95>);/
+ (<U1F9E>,<U1F96>);(<U1F9F>,<U1F97>);(<U1FA8>,<U1FA0>);(<U1FA9>,<U1FA1>);/
+ (<U1FAA>,<U1FA2>);(<U1FAB>,<U1FA3>);(<U1FAC>,<U1FA4>);(<U1FAD>,<U1FA5>);/
+ (<U1FAE>,<U1FA6>);(<U1FAF>,<U1FA7>);(<U1FB8>,<U1FB0>);(<U1FB9>,<U1FB1>);/
+ (<U1FBA>,<U1F70>);(<U1FBB>,<U1F71>);(<U1FBC>,<U1FB3>);(<U1FC8>,<U1F72>);/
+ (<U1FC9>,<U1F73>);(<U1FCA>,<U1F74>);(<U1FCB>,<U1F75>);(<U1FCC>,<U1FC3>);/
+ (<U1FD8>,<U1FD0>);(<U1FD9>,<U1FD1>);(<U1FDA>,<U1F76>);(<U1FDB>,<U1F77>);/
+ (<U1FE8>,<U1FE0>);(<U1FE9>,<U1FE1>);(<U1FEA>,<U1F7A>);(<U1FEB>,<U1F7B>);/
+ (<U1FEC>,<U1FE5>);(<U1FF8>,<U1F78>);(<U1FF9>,<U1F79>);(<U1FFA>,<U1F7C>);/
+ (<U1FFB>,<U1F7D>);(<U1FFC>,<U1FF3>);(<U2126>,<U03C9>);(<U212A>,<U006B>);/
+ (<U212B>,<U00E5>);(<U2132>,<U214E>);(<U2160>,<U2170>);(<U2161>,<U2171>);/
+ (<U2162>,<U2172>);(<U2163>,<U2173>);(<U2164>,<U2174>);(<U2165>,<U2175>);/
+ (<U2166>,<U2176>);(<U2167>,<U2177>);(<U2168>,<U2178>);(<U2169>,<U2179>);/
+ (<U216A>,<U217A>);(<U216B>,<U217B>);(<U216C>,<U217C>);(<U216D>,<U217D>);/
+ (<U216E>,<U217E>);(<U216F>,<U217F>);(<U2183>,<U2184>);(<U24B6>,<U24D0>);/
+ (<U24B7>,<U24D1>);(<U24B8>,<U24D2>);(<U24B9>,<U24D3>);(<U24BA>,<U24D4>);/
+ (<U24BB>,<U24D5>);(<U24BC>,<U24D6>);(<U24BD>,<U24D7>);(<U24BE>,<U24D8>);/
+ (<U24BF>,<U24D9>);(<U24C0>,<U24DA>);(<U24C1>,<U24DB>);(<U24C2>,<U24DC>);/
+ (<U24C3>,<U24DD>);(<U24C4>,<U24DE>);(<U24C5>,<U24DF>);(<U24C6>,<U24E0>);/
+ (<U24C7>,<U24E1>);(<U24C8>,<U24E2>);(<U24C9>,<U24E3>);(<U24CA>,<U24E4>);/
+ (<U24CB>,<U24E5>);(<U24CC>,<U24E6>);(<U24CD>,<U24E7>);(<U24CE>,<U24E8>);/
+ (<U24CF>,<U24E9>);(<U2C00>,<U2C30>);(<U2C01>,<U2C31>);(<U2C02>,<U2C32>);/
+ (<U2C03>,<U2C33>);(<U2C04>,<U2C34>);(<U2C05>,<U2C35>);(<U2C06>,<U2C36>);/
+ (<U2C07>,<U2C37>);(<U2C08>,<U2C38>);(<U2C09>,<U2C39>);(<U2C0A>,<U2C3A>);/
+ (<U2C0B>,<U2C3B>);(<U2C0C>,<U2C3C>);(<U2C0D>,<U2C3D>);(<U2C0E>,<U2C3E>);/
+ (<U2C0F>,<U2C3F>);(<U2C10>,<U2C40>);(<U2C11>,<U2C41>);(<U2C12>,<U2C42>);/
+ (<U2C13>,<U2C43>);(<U2C14>,<U2C44>);(<U2C15>,<U2C45>);(<U2C16>,<U2C46>);/
+ (<U2C17>,<U2C47>);(<U2C18>,<U2C48>);(<U2C19>,<U2C49>);(<U2C1A>,<U2C4A>);/
+ (<U2C1B>,<U2C4B>);(<U2C1C>,<U2C4C>);(<U2C1D>,<U2C4D>);(<U2C1E>,<U2C4E>);/
+ (<U2C1F>,<U2C4F>);(<U2C20>,<U2C50>);(<U2C21>,<U2C51>);(<U2C22>,<U2C52>);/
+ (<U2C23>,<U2C53>);(<U2C24>,<U2C54>);(<U2C25>,<U2C55>);(<U2C26>,<U2C56>);/
+ (<U2C27>,<U2C57>);(<U2C28>,<U2C58>);(<U2C29>,<U2C59>);(<U2C2A>,<U2C5A>);/
+ (<U2C2B>,<U2C5B>);(<U2C2C>,<U2C5C>);(<U2C2D>,<U2C5D>);(<U2C2E>,<U2C5E>);/
+ (<U2C2F>,<U2C5F>);(<U2C60>,<U2C61>);(<U2C62>,<U026B>);(<U2C63>,<U1D7D>);/
+ (<U2C64>,<U027D>);(<U2C67>,<U2C68>);(<U2C69>,<U2C6A>);(<U2C6B>,<U2C6C>);/
+ (<U2C6D>,<U0251>);(<U2C6E>,<U0271>);(<U2C6F>,<U0250>);(<U2C70>,<U0252>);/
+ (<U2C72>,<U2C73>);(<U2C75>,<U2C76>);(<U2C7E>,<U023F>);(<U2C7F>,<U0240>);/
+ (<U2C80>,<U2C81>);(<U2C82>,<U2C83>);(<U2C84>,<U2C85>);(<U2C86>,<U2C87>);/
+ (<U2C88>,<U2C89>);(<U2C8A>,<U2C8B>);(<U2C8C>,<U2C8D>);(<U2C8E>,<U2C8F>);/
+ (<U2C90>,<U2C91>);(<U2C92>,<U2C93>);(<U2C94>,<U2C95>);(<U2C96>,<U2C97>);/
+ (<U2C98>,<U2C99>);(<U2C9A>,<U2C9B>);(<U2C9C>,<U2C9D>);(<U2C9E>,<U2C9F>);/
+ (<U2CA0>,<U2CA1>);(<U2CA2>,<U2CA3>);(<U2CA4>,<U2CA5>);(<U2CA6>,<U2CA7>);/
+ (<U2CA8>,<U2CA9>);(<U2CAA>,<U2CAB>);(<U2CAC>,<U2CAD>);(<U2CAE>,<U2CAF>);/
+ (<U2CB0>,<U2CB1>);(<U2CB2>,<U2CB3>);(<U2CB4>,<U2CB5>);(<U2CB6>,<U2CB7>);/
+ (<U2CB8>,<U2CB9>);(<U2CBA>,<U2CBB>);(<U2CBC>,<U2CBD>);(<U2CBE>,<U2CBF>);/
+ (<U2CC0>,<U2CC1>);(<U2CC2>,<U2CC3>);(<U2CC4>,<U2CC5>);(<U2CC6>,<U2CC7>);/
+ (<U2CC8>,<U2CC9>);(<U2CCA>,<U2CCB>);(<U2CCC>,<U2CCD>);(<U2CCE>,<U2CCF>);/
+ (<U2CD0>,<U2CD1>);(<U2CD2>,<U2CD3>);(<U2CD4>,<U2CD5>);(<U2CD6>,<U2CD7>);/
+ (<U2CD8>,<U2CD9>);(<U2CDA>,<U2CDB>);(<U2CDC>,<U2CDD>);(<U2CDE>,<U2CDF>);/
+ (<U2CE0>,<U2CE1>);(<U2CE2>,<U2CE3>);(<U2CEB>,<U2CEC>);(<U2CED>,<U2CEE>);/
+ (<U2CF2>,<U2CF3>);(<UA640>,<UA641>);(<UA642>,<UA643>);(<UA644>,<UA645>);/
+ (<UA646>,<UA647>);(<UA648>,<UA649>);(<UA64A>,<UA64B>);(<UA64C>,<UA64D>);/
+ (<UA64E>,<UA64F>);(<UA650>,<UA651>);(<UA652>,<UA653>);(<UA654>,<UA655>);/
+ (<UA656>,<UA657>);(<UA658>,<UA659>);(<UA65A>,<UA65B>);(<UA65C>,<UA65D>);/
+ (<UA65E>,<UA65F>);(<UA660>,<UA661>);(<UA662>,<UA663>);(<UA664>,<UA665>);/
+ (<UA666>,<UA667>);(<UA668>,<UA669>);(<UA66A>,<UA66B>);(<UA66C>,<UA66D>);/
+ (<UA680>,<UA681>);(<UA682>,<UA683>);(<UA684>,<UA685>);(<UA686>,<UA687>);/
+ (<UA688>,<UA689>);(<UA68A>,<UA68B>);(<UA68C>,<UA68D>);(<UA68E>,<UA68F>);/
+ (<UA690>,<UA691>);(<UA692>,<UA693>);(<UA694>,<UA695>);(<UA696>,<UA697>);/
+ (<UA698>,<UA699>);(<UA69A>,<UA69B>);(<UA722>,<UA723>);(<UA724>,<UA725>);/
+ (<UA726>,<UA727>);(<UA728>,<UA729>);(<UA72A>,<UA72B>);(<UA72C>,<UA72D>);/
+ (<UA72E>,<UA72F>);(<UA732>,<UA733>);(<UA734>,<UA735>);(<UA736>,<UA737>);/
+ (<UA738>,<UA739>);(<UA73A>,<UA73B>);(<UA73C>,<UA73D>);(<UA73E>,<UA73F>);/
+ (<UA740>,<UA741>);(<UA742>,<UA743>);(<UA744>,<UA745>);(<UA746>,<UA747>);/
+ (<UA748>,<UA749>);(<UA74A>,<UA74B>);(<UA74C>,<UA74D>);(<UA74E>,<UA74F>);/
+ (<UA750>,<UA751>);(<UA752>,<UA753>);(<UA754>,<UA755>);(<UA756>,<UA757>);/
+ (<UA758>,<UA759>);(<UA75A>,<UA75B>);(<UA75C>,<UA75D>);(<UA75E>,<UA75F>);/
+ (<UA760>,<UA761>);(<UA762>,<UA763>);(<UA764>,<UA765>);(<UA766>,<UA767>);/
+ (<UA768>,<UA769>);(<UA76A>,<UA76B>);(<UA76C>,<UA76D>);(<UA76E>,<UA76F>);/
+ (<UA779>,<UA77A>);(<UA77B>,<UA77C>);(<UA77D>,<U1D79>);(<UA77E>,<UA77F>);/
+ (<UA780>,<UA781>);(<UA782>,<UA783>);(<UA784>,<UA785>);(<UA786>,<UA787>);/
+ (<UA78B>,<UA78C>);(<UA78D>,<U0265>);(<UA790>,<UA791>);(<UA792>,<UA793>);/
+ (<UA796>,<UA797>);(<UA798>,<UA799>);(<UA79A>,<UA79B>);(<UA79C>,<UA79D>);/
+ (<UA79E>,<UA79F>);(<UA7A0>,<UA7A1>);(<UA7A2>,<UA7A3>);(<UA7A4>,<UA7A5>);/
+ (<UA7A6>,<UA7A7>);(<UA7A8>,<UA7A9>);(<UA7AA>,<U0266>);(<UA7AB>,<U025C>);/
+ (<UA7AC>,<U0261>);(<UA7AD>,<U026C>);(<UA7AE>,<U026A>);(<UA7B0>,<U029E>);/
+ (<UA7B1>,<U0287>);(<UA7B2>,<U029D>);(<UA7B3>,<UAB53>);(<UA7B4>,<UA7B5>);/
+ (<UA7B6>,<UA7B7>);(<UA7B8>,<UA7B9>);(<UA7BA>,<UA7BB>);(<UA7BC>,<UA7BD>);/
+ (<UA7BE>,<UA7BF>);(<UA7C0>,<UA7C1>);(<UA7C2>,<UA7C3>);(<UA7C4>,<UA794>);/
+ (<UA7C5>,<U0282>);(<UA7C6>,<U1D8E>);(<UA7C7>,<UA7C8>);(<UA7C9>,<UA7CA>);/
+ (<UA7CB>,<U0264>);(<UA7CC>,<UA7CD>);(<UA7D0>,<UA7D1>);(<UA7D6>,<UA7D7>);/
+ (<UA7D8>,<UA7D9>);(<UA7DA>,<UA7DB>);(<UA7DC>,<U019B>);(<UA7F5>,<UA7F6>);/
+ (<UFF21>,<UFF41>);(<UFF22>,<UFF42>);(<UFF23>,<UFF43>);(<UFF24>,<UFF44>);/
+ (<UFF25>,<UFF45>);(<UFF26>,<UFF46>);(<UFF27>,<UFF47>);(<UFF28>,<UFF48>);/
+ (<UFF29>,<UFF49>);(<UFF2A>,<UFF4A>);(<UFF2B>,<UFF4B>);(<UFF2C>,<UFF4C>);/
+ (<UFF2D>,<UFF4D>);(<UFF2E>,<UFF4E>);(<UFF2F>,<UFF4F>);(<UFF30>,<UFF50>);/
+ (<UFF31>,<UFF51>);(<UFF32>,<UFF52>);(<UFF33>,<UFF53>);(<UFF34>,<UFF54>);/
+ (<UFF35>,<UFF55>);(<UFF36>,<UFF56>);(<UFF37>,<UFF57>);(<UFF38>,<UFF58>);/
+ (<UFF39>,<UFF59>);(<UFF3A>,<UFF5A>);(<U00010400>,<U00010428>);/
+ (<U00010401>,<U00010429>);(<U00010402>,<U0001042A>);/
+ (<U00010403>,<U0001042B>);(<U00010404>,<U0001042C>);/
+ (<U00010405>,<U0001042D>);(<U00010406>,<U0001042E>);/
+ (<U00010407>,<U0001042F>);(<U00010408>,<U00010430>);/
+ (<U00010409>,<U00010431>);(<U0001040A>,<U00010432>);/
+ (<U0001040B>,<U00010433>);(<U0001040C>,<U00010434>);/
+ (<U0001040D>,<U00010435>);(<U0001040E>,<U00010436>);/
+ (<U0001040F>,<U00010437>);(<U00010410>,<U00010438>);/
+ (<U00010411>,<U00010439>);(<U00010412>,<U0001043A>);/
+ (<U00010413>,<U0001043B>);(<U00010414>,<U0001043C>);/
+ (<U00010415>,<U0001043D>);(<U00010416>,<U0001043E>);/
+ (<U00010417>,<U0001043F>);(<U00010418>,<U00010440>);/
+ (<U00010419>,<U00010441>);(<U0001041A>,<U00010442>);/
+ (<U0001041B>,<U00010443>);(<U0001041C>,<U00010444>);/
+ (<U0001041D>,<U00010445>);(<U0001041E>,<U00010446>);/
+ (<U0001041F>,<U00010447>);(<U00010420>,<U00010448>);/
+ (<U00010421>,<U00010449>);(<U00010422>,<U0001044A>);/
+ (<U00010423>,<U0001044B>);(<U00010424>,<U0001044C>);/
+ (<U00010425>,<U0001044D>);(<U00010426>,<U0001044E>);/
+ (<U00010427>,<U0001044F>);(<U000104B0>,<U000104D8>);/
+ (<U000104B1>,<U000104D9>);(<U000104B2>,<U000104DA>);/
+ (<U000104B3>,<U000104DB>);(<U000104B4>,<U000104DC>);/
+ (<U000104B5>,<U000104DD>);(<U000104B6>,<U000104DE>);/
+ (<U000104B7>,<U000104DF>);(<U000104B8>,<U000104E0>);/
+ (<U000104B9>,<U000104E1>);(<U000104BA>,<U000104E2>);/
+ (<U000104BB>,<U000104E3>);(<U000104BC>,<U000104E4>);/
+ (<U000104BD>,<U000104E5>);(<U000104BE>,<U000104E6>);/
+ (<U000104BF>,<U000104E7>);(<U000104C0>,<U000104E8>);/
+ (<U000104C1>,<U000104E9>);(<U000104C2>,<U000104EA>);/
+ (<U000104C3>,<U000104EB>);(<U000104C4>,<U000104EC>);/
+ (<U000104C5>,<U000104ED>);(<U000104C6>,<U000104EE>);/
+ (<U000104C7>,<U000104EF>);(<U000104C8>,<U000104F0>);/
+ (<U000104C9>,<U000104F1>);(<U000104CA>,<U000104F2>);/
+ (<U000104CB>,<U000104F3>);(<U000104CC>,<U000104F4>);/
+ (<U000104CD>,<U000104F5>);(<U000104CE>,<U000104F6>);/
+ (<U000104CF>,<U000104F7>);(<U000104D0>,<U000104F8>);/
+ (<U000104D1>,<U000104F9>);(<U000104D2>,<U000104FA>);/
+ (<U000104D3>,<U000104FB>);(<U00010570>,<U00010597>);/
+ (<U00010571>,<U00010598>);(<U00010572>,<U00010599>);/
+ (<U00010573>,<U0001059A>);(<U00010574>,<U0001059B>);/
+ (<U00010575>,<U0001059C>);(<U00010576>,<U0001059D>);/
+ (<U00010577>,<U0001059E>);(<U00010578>,<U0001059F>);/
+ (<U00010579>,<U000105A0>);(<U0001057A>,<U000105A1>);/
+ (<U0001057C>,<U000105A3>);(<U0001057D>,<U000105A4>);/
+ (<U0001057E>,<U000105A5>);(<U0001057F>,<U000105A6>);/
+ (<U00010580>,<U000105A7>);(<U00010581>,<U000105A8>);/
+ (<U00010582>,<U000105A9>);(<U00010583>,<U000105AA>);/
+ (<U00010584>,<U000105AB>);(<U00010585>,<U000105AC>);/
+ (<U00010586>,<U000105AD>);(<U00010587>,<U000105AE>);/
+ (<U00010588>,<U000105AF>);(<U00010589>,<U000105B0>);/
+ (<U0001058A>,<U000105B1>);(<U0001058C>,<U000105B3>);/
+ (<U0001058D>,<U000105B4>);(<U0001058E>,<U000105B5>);/
+ (<U0001058F>,<U000105B6>);(<U00010590>,<U000105B7>);/
+ (<U00010591>,<U000105B8>);(<U00010592>,<U000105B9>);/
+ (<U00010594>,<U000105BB>);(<U00010595>,<U000105BC>);/
+ (<U00010C80>,<U00010CC0>);(<U00010C81>,<U00010CC1>);/
+ (<U00010C82>,<U00010CC2>);(<U00010C83>,<U00010CC3>);/
+ (<U00010C84>,<U00010CC4>);(<U00010C85>,<U00010CC5>);/
+ (<U00010C86>,<U00010CC6>);(<U00010C87>,<U00010CC7>);/
+ (<U00010C88>,<U00010CC8>);(<U00010C89>,<U00010CC9>);/
+ (<U00010C8A>,<U00010CCA>);(<U00010C8B>,<U00010CCB>);/
+ (<U00010C8C>,<U00010CCC>);(<U00010C8D>,<U00010CCD>);/
+ (<U00010C8E>,<U00010CCE>);(<U00010C8F>,<U00010CCF>);/
+ (<U00010C90>,<U00010CD0>);(<U00010C91>,<U00010CD1>);/
+ (<U00010C92>,<U00010CD2>);(<U00010C93>,<U00010CD3>);/
+ (<U00010C94>,<U00010CD4>);(<U00010C95>,<U00010CD5>);/
+ (<U00010C96>,<U00010CD6>);(<U00010C97>,<U00010CD7>);/
+ (<U00010C98>,<U00010CD8>);(<U00010C99>,<U00010CD9>);/
+ (<U00010C9A>,<U00010CDA>);(<U00010C9B>,<U00010CDB>);/
+ (<U00010C9C>,<U00010CDC>);(<U00010C9D>,<U00010CDD>);/
+ (<U00010C9E>,<U00010CDE>);(<U00010C9F>,<U00010CDF>);/
+ (<U00010CA0>,<U00010CE0>);(<U00010CA1>,<U00010CE1>);/
+ (<U00010CA2>,<U00010CE2>);(<U00010CA3>,<U00010CE3>);/
+ (<U00010CA4>,<U00010CE4>);(<U00010CA5>,<U00010CE5>);/
+ (<U00010CA6>,<U00010CE6>);(<U00010CA7>,<U00010CE7>);/
+ (<U00010CA8>,<U00010CE8>);(<U00010CA9>,<U00010CE9>);/
+ (<U00010CAA>,<U00010CEA>);(<U00010CAB>,<U00010CEB>);/
+ (<U00010CAC>,<U00010CEC>);(<U00010CAD>,<U00010CED>);/
+ (<U00010CAE>,<U00010CEE>);(<U00010CAF>,<U00010CEF>);/
+ (<U00010CB0>,<U00010CF0>);(<U00010CB1>,<U00010CF1>);/
+ (<U00010CB2>,<U00010CF2>);(<U00010D50>,<U00010D70>);/
+ (<U00010D51>,<U00010D71>);(<U00010D52>,<U00010D72>);/
+ (<U00010D53>,<U00010D73>);(<U00010D54>,<U00010D74>);/
+ (<U00010D55>,<U00010D75>);(<U00010D56>,<U00010D76>);/
+ (<U00010D57>,<U00010D77>);(<U00010D58>,<U00010D78>);/
+ (<U00010D59>,<U00010D79>);(<U00010D5A>,<U00010D7A>);/
+ (<U00010D5B>,<U00010D7B>);(<U00010D5C>,<U00010D7C>);/
+ (<U00010D5D>,<U00010D7D>);(<U00010D5E>,<U00010D7E>);/
+ (<U00010D5F>,<U00010D7F>);(<U00010D60>,<U00010D80>);/
+ (<U00010D61>,<U00010D81>);(<U00010D62>,<U00010D82>);/
+ (<U00010D63>,<U00010D83>);(<U00010D64>,<U00010D84>);/
+ (<U00010D65>,<U00010D85>);(<U000118A0>,<U000118C0>);/
+ (<U000118A1>,<U000118C1>);(<U000118A2>,<U000118C2>);/
+ (<U000118A3>,<U000118C3>);(<U000118A4>,<U000118C4>);/
+ (<U000118A5>,<U000118C5>);(<U000118A6>,<U000118C6>);/
+ (<U000118A7>,<U000118C7>);(<U000118A8>,<U000118C8>);/
+ (<U000118A9>,<U000118C9>);(<U000118AA>,<U000118CA>);/
+ (<U000118AB>,<U000118CB>);(<U000118AC>,<U000118CC>);/
+ (<U000118AD>,<U000118CD>);(<U000118AE>,<U000118CE>);/
+ (<U000118AF>,<U000118CF>);(<U000118B0>,<U000118D0>);/
+ (<U000118B1>,<U000118D1>);(<U000118B2>,<U000118D2>);/
+ (<U000118B3>,<U000118D3>);(<U000118B4>,<U000118D4>);/
+ (<U000118B5>,<U000118D5>);(<U000118B6>,<U000118D6>);/
+ (<U000118B7>,<U000118D7>);(<U000118B8>,<U000118D8>);/
+ (<U000118B9>,<U000118D9>);(<U000118BA>,<U000118DA>);/
+ (<U000118BB>,<U000118DB>);(<U000118BC>,<U000118DC>);/
+ (<U000118BD>,<U000118DD>);(<U000118BE>,<U000118DE>);/
+ (<U000118BF>,<U000118DF>);(<U00016E40>,<U00016E60>);/
+ (<U00016E41>,<U00016E61>);(<U00016E42>,<U00016E62>);/
+ (<U00016E43>,<U00016E63>);(<U00016E44>,<U00016E64>);/
+ (<U00016E45>,<U00016E65>);(<U00016E46>,<U00016E66>);/
+ (<U00016E47>,<U00016E67>);(<U00016E48>,<U00016E68>);/
+ (<U00016E49>,<U00016E69>);(<U00016E4A>,<U00016E6A>);/
+ (<U00016E4B>,<U00016E6B>);(<U00016E4C>,<U00016E6C>);/
+ (<U00016E4D>,<U00016E6D>);(<U00016E4E>,<U00016E6E>);/
+ (<U00016E4F>,<U00016E6F>);(<U00016E50>,<U00016E70>);/
+ (<U00016E51>,<U00016E71>);(<U00016E52>,<U00016E72>);/
+ (<U00016E53>,<U00016E73>);(<U00016E54>,<U00016E74>);/
+ (<U00016E55>,<U00016E75>);(<U00016E56>,<U00016E76>);/
+ (<U00016E57>,<U00016E77>);(<U00016E58>,<U00016E78>);/
+ (<U00016E59>,<U00016E79>);(<U00016E5A>,<U00016E7A>);/
+ (<U00016E5B>,<U00016E7B>);(<U00016E5C>,<U00016E7C>);/
+ (<U00016E5D>,<U00016E7D>);(<U00016E5E>,<U00016E7E>);/
+ (<U00016E5F>,<U00016E7F>);(<U0001E900>,<U0001E922>);/
+ (<U0001E901>,<U0001E923>);(<U0001E902>,<U0001E924>);/
+ (<U0001E903>,<U0001E925>);(<U0001E904>,<U0001E926>);/
+ (<U0001E905>,<U0001E927>);(<U0001E906>,<U0001E928>);/
+ (<U0001E907>,<U0001E929>);(<U0001E908>,<U0001E92A>);/
+ (<U0001E909>,<U0001E92B>);(<U0001E90A>,<U0001E92C>);/
+ (<U0001E90B>,<U0001E92D>);(<U0001E90C>,<U0001E92E>);/
+ (<U0001E90D>,<U0001E92F>);(<U0001E90E>,<U0001E930>);/
+ (<U0001E90F>,<U0001E931>);(<U0001E910>,<U0001E932>);/
+ (<U0001E911>,<U0001E933>);(<U0001E912>,<U0001E934>);/
+ (<U0001E913>,<U0001E935>);(<U0001E914>,<U0001E936>);/
+ (<U0001E915>,<U0001E937>);(<U0001E916>,<U0001E938>);/
+ (<U0001E917>,<U0001E939>);(<U0001E918>,<U0001E93A>);/
+ (<U0001E919>,<U0001E93B>);(<U0001E91A>,<U0001E93C>);/
+ (<U0001E91B>,<U0001E93D>);(<U0001E91C>,<U0001E93E>);/
+ (<U0001E91D>,<U0001E93F>);(<U0001E91E>,<U0001E940>);/
+ (<U0001E91F>,<U0001E941>);(<U0001E920>,<U0001E942>);/
+ (<U0001E921>,<U0001E943>)
map "totitle"; /
(<U0061>,<U0041>);(<U0062>,<U0042>);(<U0063>,<U0043>);(<U0064>,<U0044>);/
@@ -2065,261 +2133,262 @@ map "totitle"; /
(<U0177>,<U0176>);(<U017A>,<U0179>);(<U017C>,<U017B>);(<U017E>,<U017D>);/
(<U017F>,<U0053>);(<U0180>,<U0243>);(<U0183>,<U0182>);(<U0185>,<U0184>);/
(<U0188>,<U0187>);(<U018C>,<U018B>);(<U0192>,<U0191>);(<U0195>,<U01F6>);/
- (<U0199>,<U0198>);(<U019A>,<U023D>);(<U019E>,<U0220>);(<U01A1>,<U01A0>);/
- (<U01A3>,<U01A2>);(<U01A5>,<U01A4>);(<U01A8>,<U01A7>);(<U01AD>,<U01AC>);/
- (<U01B0>,<U01AF>);(<U01B4>,<U01B3>);(<U01B6>,<U01B5>);(<U01B9>,<U01B8>);/
- (<U01BD>,<U01BC>);(<U01BF>,<U01F7>);(<U01C4>,<U01C5>);(<U01C6>,<U01C5>);/
- (<U01C7>,<U01C8>);(<U01C9>,<U01C8>);(<U01CA>,<U01CB>);(<U01CC>,<U01CB>);/
- (<U01CE>,<U01CD>);(<U01D0>,<U01CF>);(<U01D2>,<U01D1>);(<U01D4>,<U01D3>);/
- (<U01D6>,<U01D5>);(<U01D8>,<U01D7>);(<U01DA>,<U01D9>);(<U01DC>,<U01DB>);/
- (<U01DD>,<U018E>);(<U01DF>,<U01DE>);(<U01E1>,<U01E0>);(<U01E3>,<U01E2>);/
- (<U01E5>,<U01E4>);(<U01E7>,<U01E6>);(<U01E9>,<U01E8>);(<U01EB>,<U01EA>);/
- (<U01ED>,<U01EC>);(<U01EF>,<U01EE>);(<U01F1>,<U01F2>);(<U01F3>,<U01F2>);/
- (<U01F5>,<U01F4>);(<U01F9>,<U01F8>);(<U01FB>,<U01FA>);(<U01FD>,<U01FC>);/
- (<U01FF>,<U01FE>);(<U0201>,<U0200>);(<U0203>,<U0202>);(<U0205>,<U0204>);/
- (<U0207>,<U0206>);(<U0209>,<U0208>);(<U020B>,<U020A>);(<U020D>,<U020C>);/
- (<U020F>,<U020E>);(<U0211>,<U0210>);(<U0213>,<U0212>);(<U0215>,<U0214>);/
- (<U0217>,<U0216>);(<U0219>,<U0218>);(<U021B>,<U021A>);(<U021D>,<U021C>);/
- (<U021F>,<U021E>);(<U0223>,<U0222>);(<U0225>,<U0224>);(<U0227>,<U0226>);/
- (<U0229>,<U0228>);(<U022B>,<U022A>);(<U022D>,<U022C>);(<U022F>,<U022E>);/
- (<U0231>,<U0230>);(<U0233>,<U0232>);(<U023C>,<U023B>);(<U023F>,<U2C7E>);/
- (<U0240>,<U2C7F>);(<U0242>,<U0241>);(<U0247>,<U0246>);(<U0249>,<U0248>);/
- (<U024B>,<U024A>);(<U024D>,<U024C>);(<U024F>,<U024E>);(<U0250>,<U2C6F>);/
- (<U0251>,<U2C6D>);(<U0252>,<U2C70>);(<U0253>,<U0181>);(<U0254>,<U0186>);/
- (<U0256>,<U0189>);(<U0257>,<U018A>);(<U0259>,<U018F>);(<U025B>,<U0190>);/
- (<U025C>,<UA7AB>);(<U0260>,<U0193>);(<U0261>,<UA7AC>);(<U0263>,<U0194>);/
- (<U0265>,<UA78D>);(<U0266>,<UA7AA>);(<U0268>,<U0197>);(<U0269>,<U0196>);/
- (<U026A>,<UA7AE>);(<U026B>,<U2C62>);(<U026C>,<UA7AD>);(<U026F>,<U019C>);/
- (<U0271>,<U2C6E>);(<U0272>,<U019D>);(<U0275>,<U019F>);(<U027D>,<U2C64>);/
- (<U0280>,<U01A6>);(<U0282>,<UA7C5>);(<U0283>,<U01A9>);(<U0287>,<UA7B1>);/
- (<U0288>,<U01AE>);(<U0289>,<U0244>);(<U028A>,<U01B1>);(<U028B>,<U01B2>);/
- (<U028C>,<U0245>);(<U0292>,<U01B7>);(<U029D>,<UA7B2>);(<U029E>,<UA7B0>);/
- (<U0345>,<U0399>);(<U0371>,<U0370>);(<U0373>,<U0372>);(<U0377>,<U0376>);/
- (<U037B>,<U03FD>);(<U037C>,<U03FE>);(<U037D>,<U03FF>);(<U03AC>,<U0386>);/
- (<U03AD>,<U0388>);(<U03AE>,<U0389>);(<U03AF>,<U038A>);(<U03B1>,<U0391>);/
- (<U03B2>,<U0392>);(<U03B3>,<U0393>);(<U03B4>,<U0394>);(<U03B5>,<U0395>);/
- (<U03B6>,<U0396>);(<U03B7>,<U0397>);(<U03B8>,<U0398>);(<U03B9>,<U0399>);/
- (<U03BA>,<U039A>);(<U03BB>,<U039B>);(<U03BC>,<U039C>);(<U03BD>,<U039D>);/
- (<U03BE>,<U039E>);(<U03BF>,<U039F>);(<U03C0>,<U03A0>);(<U03C1>,<U03A1>);/
- (<U03C2>,<U03A3>);(<U03C3>,<U03A3>);(<U03C4>,<U03A4>);(<U03C5>,<U03A5>);/
- (<U03C6>,<U03A6>);(<U03C7>,<U03A7>);(<U03C8>,<U03A8>);(<U03C9>,<U03A9>);/
- (<U03CA>,<U03AA>);(<U03CB>,<U03AB>);(<U03CC>,<U038C>);(<U03CD>,<U038E>);/
- (<U03CE>,<U038F>);(<U03D0>,<U0392>);(<U03D1>,<U0398>);(<U03D5>,<U03A6>);/
- (<U03D6>,<U03A0>);(<U03D7>,<U03CF>);(<U03D9>,<U03D8>);(<U03DB>,<U03DA>);/
- (<U03DD>,<U03DC>);(<U03DF>,<U03DE>);(<U03E1>,<U03E0>);(<U03E3>,<U03E2>);/
- (<U03E5>,<U03E4>);(<U03E7>,<U03E6>);(<U03E9>,<U03E8>);(<U03EB>,<U03EA>);/
- (<U03ED>,<U03EC>);(<U03EF>,<U03EE>);(<U03F0>,<U039A>);(<U03F1>,<U03A1>);/
- (<U03F2>,<U03F9>);(<U03F3>,<U037F>);(<U03F5>,<U0395>);(<U03F8>,<U03F7>);/
- (<U03FB>,<U03FA>);(<U0430>,<U0410>);(<U0431>,<U0411>);(<U0432>,<U0412>);/
- (<U0433>,<U0413>);(<U0434>,<U0414>);(<U0435>,<U0415>);(<U0436>,<U0416>);/
- (<U0437>,<U0417>);(<U0438>,<U0418>);(<U0439>,<U0419>);(<U043A>,<U041A>);/
- (<U043B>,<U041B>);(<U043C>,<U041C>);(<U043D>,<U041D>);(<U043E>,<U041E>);/
- (<U043F>,<U041F>);(<U0440>,<U0420>);(<U0441>,<U0421>);(<U0442>,<U0422>);/
- (<U0443>,<U0423>);(<U0444>,<U0424>);(<U0445>,<U0425>);(<U0446>,<U0426>);/
- (<U0447>,<U0427>);(<U0448>,<U0428>);(<U0449>,<U0429>);(<U044A>,<U042A>);/
- (<U044B>,<U042B>);(<U044C>,<U042C>);(<U044D>,<U042D>);(<U044E>,<U042E>);/
- (<U044F>,<U042F>);(<U0450>,<U0400>);(<U0451>,<U0401>);(<U0452>,<U0402>);/
- (<U0453>,<U0403>);(<U0454>,<U0404>);(<U0455>,<U0405>);(<U0456>,<U0406>);/
- (<U0457>,<U0407>);(<U0458>,<U0408>);(<U0459>,<U0409>);(<U045A>,<U040A>);/
- (<U045B>,<U040B>);(<U045C>,<U040C>);(<U045D>,<U040D>);(<U045E>,<U040E>);/
- (<U045F>,<U040F>);(<U0461>,<U0460>);(<U0463>,<U0462>);(<U0465>,<U0464>);/
- (<U0467>,<U0466>);(<U0469>,<U0468>);(<U046B>,<U046A>);(<U046D>,<U046C>);/
- (<U046F>,<U046E>);(<U0471>,<U0470>);(<U0473>,<U0472>);(<U0475>,<U0474>);/
- (<U0477>,<U0476>);(<U0479>,<U0478>);(<U047B>,<U047A>);(<U047D>,<U047C>);/
- (<U047F>,<U047E>);(<U0481>,<U0480>);(<U048B>,<U048A>);(<U048D>,<U048C>);/
- (<U048F>,<U048E>);(<U0491>,<U0490>);(<U0493>,<U0492>);(<U0495>,<U0494>);/
- (<U0497>,<U0496>);(<U0499>,<U0498>);(<U049B>,<U049A>);(<U049D>,<U049C>);/
- (<U049F>,<U049E>);(<U04A1>,<U04A0>);(<U04A3>,<U04A2>);(<U04A5>,<U04A4>);/
- (<U04A7>,<U04A6>);(<U04A9>,<U04A8>);(<U04AB>,<U04AA>);(<U04AD>,<U04AC>);/
- (<U04AF>,<U04AE>);(<U04B1>,<U04B0>);(<U04B3>,<U04B2>);(<U04B5>,<U04B4>);/
- (<U04B7>,<U04B6>);(<U04B9>,<U04B8>);(<U04BB>,<U04BA>);(<U04BD>,<U04BC>);/
- (<U04BF>,<U04BE>);(<U04C2>,<U04C1>);(<U04C4>,<U04C3>);(<U04C6>,<U04C5>);/
- (<U04C8>,<U04C7>);(<U04CA>,<U04C9>);(<U04CC>,<U04CB>);(<U04CE>,<U04CD>);/
- (<U04CF>,<U04C0>);(<U04D1>,<U04D0>);(<U04D3>,<U04D2>);(<U04D5>,<U04D4>);/
- (<U04D7>,<U04D6>);(<U04D9>,<U04D8>);(<U04DB>,<U04DA>);(<U04DD>,<U04DC>);/
- (<U04DF>,<U04DE>);(<U04E1>,<U04E0>);(<U04E3>,<U04E2>);(<U04E5>,<U04E4>);/
- (<U04E7>,<U04E6>);(<U04E9>,<U04E8>);(<U04EB>,<U04EA>);(<U04ED>,<U04EC>);/
- (<U04EF>,<U04EE>);(<U04F1>,<U04F0>);(<U04F3>,<U04F2>);(<U04F5>,<U04F4>);/
- (<U04F7>,<U04F6>);(<U04F9>,<U04F8>);(<U04FB>,<U04FA>);(<U04FD>,<U04FC>);/
- (<U04FF>,<U04FE>);(<U0501>,<U0500>);(<U0503>,<U0502>);(<U0505>,<U0504>);/
- (<U0507>,<U0506>);(<U0509>,<U0508>);(<U050B>,<U050A>);(<U050D>,<U050C>);/
- (<U050F>,<U050E>);(<U0511>,<U0510>);(<U0513>,<U0512>);(<U0515>,<U0514>);/
- (<U0517>,<U0516>);(<U0519>,<U0518>);(<U051B>,<U051A>);(<U051D>,<U051C>);/
- (<U051F>,<U051E>);(<U0521>,<U0520>);(<U0523>,<U0522>);(<U0525>,<U0524>);/
- (<U0527>,<U0526>);(<U0529>,<U0528>);(<U052B>,<U052A>);(<U052D>,<U052C>);/
- (<U052F>,<U052E>);(<U0561>,<U0531>);(<U0562>,<U0532>);(<U0563>,<U0533>);/
- (<U0564>,<U0534>);(<U0565>,<U0535>);(<U0566>,<U0536>);(<U0567>,<U0537>);/
- (<U0568>,<U0538>);(<U0569>,<U0539>);(<U056A>,<U053A>);(<U056B>,<U053B>);/
- (<U056C>,<U053C>);(<U056D>,<U053D>);(<U056E>,<U053E>);(<U056F>,<U053F>);/
- (<U0570>,<U0540>);(<U0571>,<U0541>);(<U0572>,<U0542>);(<U0573>,<U0543>);/
- (<U0574>,<U0544>);(<U0575>,<U0545>);(<U0576>,<U0546>);(<U0577>,<U0547>);/
- (<U0578>,<U0548>);(<U0579>,<U0549>);(<U057A>,<U054A>);(<U057B>,<U054B>);/
- (<U057C>,<U054C>);(<U057D>,<U054D>);(<U057E>,<U054E>);(<U057F>,<U054F>);/
- (<U0580>,<U0550>);(<U0581>,<U0551>);(<U0582>,<U0552>);(<U0583>,<U0553>);/
- (<U0584>,<U0554>);(<U0585>,<U0555>);(<U0586>,<U0556>);(<U13F8>,<U13F0>);/
- (<U13F9>,<U13F1>);(<U13FA>,<U13F2>);(<U13FB>,<U13F3>);(<U13FC>,<U13F4>);/
- (<U13FD>,<U13F5>);(<U1C80>,<U0412>);(<U1C81>,<U0414>);(<U1C82>,<U041E>);/
- (<U1C83>,<U0421>);(<U1C84>,<U0422>);(<U1C85>,<U0422>);(<U1C86>,<U042A>);/
- (<U1C87>,<U0462>);(<U1C88>,<UA64A>);(<U1D79>,<UA77D>);(<U1D7D>,<U2C63>);/
- (<U1D8E>,<UA7C6>);(<U1E01>,<U1E00>);(<U1E03>,<U1E02>);(<U1E05>,<U1E04>);/
- (<U1E07>,<U1E06>);(<U1E09>,<U1E08>);(<U1E0B>,<U1E0A>);(<U1E0D>,<U1E0C>);/
- (<U1E0F>,<U1E0E>);(<U1E11>,<U1E10>);(<U1E13>,<U1E12>);(<U1E15>,<U1E14>);/
- (<U1E17>,<U1E16>);(<U1E19>,<U1E18>);(<U1E1B>,<U1E1A>);(<U1E1D>,<U1E1C>);/
- (<U1E1F>,<U1E1E>);(<U1E21>,<U1E20>);(<U1E23>,<U1E22>);(<U1E25>,<U1E24>);/
- (<U1E27>,<U1E26>);(<U1E29>,<U1E28>);(<U1E2B>,<U1E2A>);(<U1E2D>,<U1E2C>);/
- (<U1E2F>,<U1E2E>);(<U1E31>,<U1E30>);(<U1E33>,<U1E32>);(<U1E35>,<U1E34>);/
- (<U1E37>,<U1E36>);(<U1E39>,<U1E38>);(<U1E3B>,<U1E3A>);(<U1E3D>,<U1E3C>);/
- (<U1E3F>,<U1E3E>);(<U1E41>,<U1E40>);(<U1E43>,<U1E42>);(<U1E45>,<U1E44>);/
- (<U1E47>,<U1E46>);(<U1E49>,<U1E48>);(<U1E4B>,<U1E4A>);(<U1E4D>,<U1E4C>);/
- (<U1E4F>,<U1E4E>);(<U1E51>,<U1E50>);(<U1E53>,<U1E52>);(<U1E55>,<U1E54>);/
- (<U1E57>,<U1E56>);(<U1E59>,<U1E58>);(<U1E5B>,<U1E5A>);(<U1E5D>,<U1E5C>);/
- (<U1E5F>,<U1E5E>);(<U1E61>,<U1E60>);(<U1E63>,<U1E62>);(<U1E65>,<U1E64>);/
- (<U1E67>,<U1E66>);(<U1E69>,<U1E68>);(<U1E6B>,<U1E6A>);(<U1E6D>,<U1E6C>);/
- (<U1E6F>,<U1E6E>);(<U1E71>,<U1E70>);(<U1E73>,<U1E72>);(<U1E75>,<U1E74>);/
- (<U1E77>,<U1E76>);(<U1E79>,<U1E78>);(<U1E7B>,<U1E7A>);(<U1E7D>,<U1E7C>);/
- (<U1E7F>,<U1E7E>);(<U1E81>,<U1E80>);(<U1E83>,<U1E82>);(<U1E85>,<U1E84>);/
- (<U1E87>,<U1E86>);(<U1E89>,<U1E88>);(<U1E8B>,<U1E8A>);(<U1E8D>,<U1E8C>);/
- (<U1E8F>,<U1E8E>);(<U1E91>,<U1E90>);(<U1E93>,<U1E92>);(<U1E95>,<U1E94>);/
- (<U1E9B>,<U1E60>);(<U1EA1>,<U1EA0>);(<U1EA3>,<U1EA2>);(<U1EA5>,<U1EA4>);/
- (<U1EA7>,<U1EA6>);(<U1EA9>,<U1EA8>);(<U1EAB>,<U1EAA>);(<U1EAD>,<U1EAC>);/
- (<U1EAF>,<U1EAE>);(<U1EB1>,<U1EB0>);(<U1EB3>,<U1EB2>);(<U1EB5>,<U1EB4>);/
- (<U1EB7>,<U1EB6>);(<U1EB9>,<U1EB8>);(<U1EBB>,<U1EBA>);(<U1EBD>,<U1EBC>);/
- (<U1EBF>,<U1EBE>);(<U1EC1>,<U1EC0>);(<U1EC3>,<U1EC2>);(<U1EC5>,<U1EC4>);/
- (<U1EC7>,<U1EC6>);(<U1EC9>,<U1EC8>);(<U1ECB>,<U1ECA>);(<U1ECD>,<U1ECC>);/
- (<U1ECF>,<U1ECE>);(<U1ED1>,<U1ED0>);(<U1ED3>,<U1ED2>);(<U1ED5>,<U1ED4>);/
- (<U1ED7>,<U1ED6>);(<U1ED9>,<U1ED8>);(<U1EDB>,<U1EDA>);(<U1EDD>,<U1EDC>);/
- (<U1EDF>,<U1EDE>);(<U1EE1>,<U1EE0>);(<U1EE3>,<U1EE2>);(<U1EE5>,<U1EE4>);/
- (<U1EE7>,<U1EE6>);(<U1EE9>,<U1EE8>);(<U1EEB>,<U1EEA>);(<U1EED>,<U1EEC>);/
- (<U1EEF>,<U1EEE>);(<U1EF1>,<U1EF0>);(<U1EF3>,<U1EF2>);(<U1EF5>,<U1EF4>);/
- (<U1EF7>,<U1EF6>);(<U1EF9>,<U1EF8>);(<U1EFB>,<U1EFA>);(<U1EFD>,<U1EFC>);/
- (<U1EFF>,<U1EFE>);(<U1F00>,<U1F08>);(<U1F01>,<U1F09>);(<U1F02>,<U1F0A>);/
- (<U1F03>,<U1F0B>);(<U1F04>,<U1F0C>);(<U1F05>,<U1F0D>);(<U1F06>,<U1F0E>);/
- (<U1F07>,<U1F0F>);(<U1F10>,<U1F18>);(<U1F11>,<U1F19>);(<U1F12>,<U1F1A>);/
- (<U1F13>,<U1F1B>);(<U1F14>,<U1F1C>);(<U1F15>,<U1F1D>);(<U1F20>,<U1F28>);/
- (<U1F21>,<U1F29>);(<U1F22>,<U1F2A>);(<U1F23>,<U1F2B>);(<U1F24>,<U1F2C>);/
- (<U1F25>,<U1F2D>);(<U1F26>,<U1F2E>);(<U1F27>,<U1F2F>);(<U1F30>,<U1F38>);/
- (<U1F31>,<U1F39>);(<U1F32>,<U1F3A>);(<U1F33>,<U1F3B>);(<U1F34>,<U1F3C>);/
- (<U1F35>,<U1F3D>);(<U1F36>,<U1F3E>);(<U1F37>,<U1F3F>);(<U1F40>,<U1F48>);/
- (<U1F41>,<U1F49>);(<U1F42>,<U1F4A>);(<U1F43>,<U1F4B>);(<U1F44>,<U1F4C>);/
- (<U1F45>,<U1F4D>);(<U1F51>,<U1F59>);(<U1F53>,<U1F5B>);(<U1F55>,<U1F5D>);/
- (<U1F57>,<U1F5F>);(<U1F60>,<U1F68>);(<U1F61>,<U1F69>);(<U1F62>,<U1F6A>);/
- (<U1F63>,<U1F6B>);(<U1F64>,<U1F6C>);(<U1F65>,<U1F6D>);(<U1F66>,<U1F6E>);/
- (<U1F67>,<U1F6F>);(<U1F70>,<U1FBA>);(<U1F71>,<U1FBB>);(<U1F72>,<U1FC8>);/
- (<U1F73>,<U1FC9>);(<U1F74>,<U1FCA>);(<U1F75>,<U1FCB>);(<U1F76>,<U1FDA>);/
- (<U1F77>,<U1FDB>);(<U1F78>,<U1FF8>);(<U1F79>,<U1FF9>);(<U1F7A>,<U1FEA>);/
- (<U1F7B>,<U1FEB>);(<U1F7C>,<U1FFA>);(<U1F7D>,<U1FFB>);(<U1F80>,<U1F88>);/
- (<U1F81>,<U1F89>);(<U1F82>,<U1F8A>);(<U1F83>,<U1F8B>);(<U1F84>,<U1F8C>);/
- (<U1F85>,<U1F8D>);(<U1F86>,<U1F8E>);(<U1F87>,<U1F8F>);(<U1F90>,<U1F98>);/
- (<U1F91>,<U1F99>);(<U1F92>,<U1F9A>);(<U1F93>,<U1F9B>);(<U1F94>,<U1F9C>);/
- (<U1F95>,<U1F9D>);(<U1F96>,<U1F9E>);(<U1F97>,<U1F9F>);(<U1FA0>,<U1FA8>);/
- (<U1FA1>,<U1FA9>);(<U1FA2>,<U1FAA>);(<U1FA3>,<U1FAB>);(<U1FA4>,<U1FAC>);/
- (<U1FA5>,<U1FAD>);(<U1FA6>,<U1FAE>);(<U1FA7>,<U1FAF>);(<U1FB0>,<U1FB8>);/
- (<U1FB1>,<U1FB9>);(<U1FB3>,<U1FBC>);(<U1FBE>,<U0399>);(<U1FC3>,<U1FCC>);/
- (<U1FD0>,<U1FD8>);(<U1FD1>,<U1FD9>);(<U1FE0>,<U1FE8>);(<U1FE1>,<U1FE9>);/
- (<U1FE5>,<U1FEC>);(<U1FF3>,<U1FFC>);(<U214E>,<U2132>);(<U2170>,<U2160>);/
- (<U2171>,<U2161>);(<U2172>,<U2162>);(<U2173>,<U2163>);(<U2174>,<U2164>);/
- (<U2175>,<U2165>);(<U2176>,<U2166>);(<U2177>,<U2167>);(<U2178>,<U2168>);/
- (<U2179>,<U2169>);(<U217A>,<U216A>);(<U217B>,<U216B>);(<U217C>,<U216C>);/
- (<U217D>,<U216D>);(<U217E>,<U216E>);(<U217F>,<U216F>);(<U2184>,<U2183>);/
- (<U24D0>,<U24B6>);(<U24D1>,<U24B7>);(<U24D2>,<U24B8>);(<U24D3>,<U24B9>);/
- (<U24D4>,<U24BA>);(<U24D5>,<U24BB>);(<U24D6>,<U24BC>);(<U24D7>,<U24BD>);/
- (<U24D8>,<U24BE>);(<U24D9>,<U24BF>);(<U24DA>,<U24C0>);(<U24DB>,<U24C1>);/
- (<U24DC>,<U24C2>);(<U24DD>,<U24C3>);(<U24DE>,<U24C4>);(<U24DF>,<U24C5>);/
- (<U24E0>,<U24C6>);(<U24E1>,<U24C7>);(<U24E2>,<U24C8>);(<U24E3>,<U24C9>);/
- (<U24E4>,<U24CA>);(<U24E5>,<U24CB>);(<U24E6>,<U24CC>);(<U24E7>,<U24CD>);/
- (<U24E8>,<U24CE>);(<U24E9>,<U24CF>);(<U2C30>,<U2C00>);(<U2C31>,<U2C01>);/
- (<U2C32>,<U2C02>);(<U2C33>,<U2C03>);(<U2C34>,<U2C04>);(<U2C35>,<U2C05>);/
- (<U2C36>,<U2C06>);(<U2C37>,<U2C07>);(<U2C38>,<U2C08>);(<U2C39>,<U2C09>);/
- (<U2C3A>,<U2C0A>);(<U2C3B>,<U2C0B>);(<U2C3C>,<U2C0C>);(<U2C3D>,<U2C0D>);/
- (<U2C3E>,<U2C0E>);(<U2C3F>,<U2C0F>);(<U2C40>,<U2C10>);(<U2C41>,<U2C11>);/
- (<U2C42>,<U2C12>);(<U2C43>,<U2C13>);(<U2C44>,<U2C14>);(<U2C45>,<U2C15>);/
- (<U2C46>,<U2C16>);(<U2C47>,<U2C17>);(<U2C48>,<U2C18>);(<U2C49>,<U2C19>);/
- (<U2C4A>,<U2C1A>);(<U2C4B>,<U2C1B>);(<U2C4C>,<U2C1C>);(<U2C4D>,<U2C1D>);/
- (<U2C4E>,<U2C1E>);(<U2C4F>,<U2C1F>);(<U2C50>,<U2C20>);(<U2C51>,<U2C21>);/
- (<U2C52>,<U2C22>);(<U2C53>,<U2C23>);(<U2C54>,<U2C24>);(<U2C55>,<U2C25>);/
- (<U2C56>,<U2C26>);(<U2C57>,<U2C27>);(<U2C58>,<U2C28>);(<U2C59>,<U2C29>);/
- (<U2C5A>,<U2C2A>);(<U2C5B>,<U2C2B>);(<U2C5C>,<U2C2C>);(<U2C5D>,<U2C2D>);/
- (<U2C5E>,<U2C2E>);(<U2C5F>,<U2C2F>);(<U2C61>,<U2C60>);(<U2C65>,<U023A>);/
- (<U2C66>,<U023E>);(<U2C68>,<U2C67>);(<U2C6A>,<U2C69>);(<U2C6C>,<U2C6B>);/
- (<U2C73>,<U2C72>);(<U2C76>,<U2C75>);(<U2C81>,<U2C80>);(<U2C83>,<U2C82>);/
- (<U2C85>,<U2C84>);(<U2C87>,<U2C86>);(<U2C89>,<U2C88>);(<U2C8B>,<U2C8A>);/
- (<U2C8D>,<U2C8C>);(<U2C8F>,<U2C8E>);(<U2C91>,<U2C90>);(<U2C93>,<U2C92>);/
- (<U2C95>,<U2C94>);(<U2C97>,<U2C96>);(<U2C99>,<U2C98>);(<U2C9B>,<U2C9A>);/
- (<U2C9D>,<U2C9C>);(<U2C9F>,<U2C9E>);(<U2CA1>,<U2CA0>);(<U2CA3>,<U2CA2>);/
- (<U2CA5>,<U2CA4>);(<U2CA7>,<U2CA6>);(<U2CA9>,<U2CA8>);(<U2CAB>,<U2CAA>);/
- (<U2CAD>,<U2CAC>);(<U2CAF>,<U2CAE>);(<U2CB1>,<U2CB0>);(<U2CB3>,<U2CB2>);/
- (<U2CB5>,<U2CB4>);(<U2CB7>,<U2CB6>);(<U2CB9>,<U2CB8>);(<U2CBB>,<U2CBA>);/
- (<U2CBD>,<U2CBC>);(<U2CBF>,<U2CBE>);(<U2CC1>,<U2CC0>);(<U2CC3>,<U2CC2>);/
- (<U2CC5>,<U2CC4>);(<U2CC7>,<U2CC6>);(<U2CC9>,<U2CC8>);(<U2CCB>,<U2CCA>);/
- (<U2CCD>,<U2CCC>);(<U2CCF>,<U2CCE>);(<U2CD1>,<U2CD0>);(<U2CD3>,<U2CD2>);/
- (<U2CD5>,<U2CD4>);(<U2CD7>,<U2CD6>);(<U2CD9>,<U2CD8>);(<U2CDB>,<U2CDA>);/
- (<U2CDD>,<U2CDC>);(<U2CDF>,<U2CDE>);(<U2CE1>,<U2CE0>);(<U2CE3>,<U2CE2>);/
- (<U2CEC>,<U2CEB>);(<U2CEE>,<U2CED>);(<U2CF3>,<U2CF2>);(<U2D00>,<U10A0>);/
- (<U2D01>,<U10A1>);(<U2D02>,<U10A2>);(<U2D03>,<U10A3>);(<U2D04>,<U10A4>);/
- (<U2D05>,<U10A5>);(<U2D06>,<U10A6>);(<U2D07>,<U10A7>);(<U2D08>,<U10A8>);/
- (<U2D09>,<U10A9>);(<U2D0A>,<U10AA>);(<U2D0B>,<U10AB>);(<U2D0C>,<U10AC>);/
- (<U2D0D>,<U10AD>);(<U2D0E>,<U10AE>);(<U2D0F>,<U10AF>);(<U2D10>,<U10B0>);/
- (<U2D11>,<U10B1>);(<U2D12>,<U10B2>);(<U2D13>,<U10B3>);(<U2D14>,<U10B4>);/
- (<U2D15>,<U10B5>);(<U2D16>,<U10B6>);(<U2D17>,<U10B7>);(<U2D18>,<U10B8>);/
- (<U2D19>,<U10B9>);(<U2D1A>,<U10BA>);(<U2D1B>,<U10BB>);(<U2D1C>,<U10BC>);/
- (<U2D1D>,<U10BD>);(<U2D1E>,<U10BE>);(<U2D1F>,<U10BF>);(<U2D20>,<U10C0>);/
- (<U2D21>,<U10C1>);(<U2D22>,<U10C2>);(<U2D23>,<U10C3>);(<U2D24>,<U10C4>);/
- (<U2D25>,<U10C5>);(<U2D27>,<U10C7>);(<U2D2D>,<U10CD>);(<UA641>,<UA640>);/
- (<UA643>,<UA642>);(<UA645>,<UA644>);(<UA647>,<UA646>);(<UA649>,<UA648>);/
- (<UA64B>,<UA64A>);(<UA64D>,<UA64C>);(<UA64F>,<UA64E>);(<UA651>,<UA650>);/
- (<UA653>,<UA652>);(<UA655>,<UA654>);(<UA657>,<UA656>);(<UA659>,<UA658>);/
- (<UA65B>,<UA65A>);(<UA65D>,<UA65C>);(<UA65F>,<UA65E>);(<UA661>,<UA660>);/
- (<UA663>,<UA662>);(<UA665>,<UA664>);(<UA667>,<UA666>);(<UA669>,<UA668>);/
- (<UA66B>,<UA66A>);(<UA66D>,<UA66C>);(<UA681>,<UA680>);(<UA683>,<UA682>);/
- (<UA685>,<UA684>);(<UA687>,<UA686>);(<UA689>,<UA688>);(<UA68B>,<UA68A>);/
- (<UA68D>,<UA68C>);(<UA68F>,<UA68E>);(<UA691>,<UA690>);(<UA693>,<UA692>);/
- (<UA695>,<UA694>);(<UA697>,<UA696>);(<UA699>,<UA698>);(<UA69B>,<UA69A>);/
- (<UA723>,<UA722>);(<UA725>,<UA724>);(<UA727>,<UA726>);(<UA729>,<UA728>);/
- (<UA72B>,<UA72A>);(<UA72D>,<UA72C>);(<UA72F>,<UA72E>);(<UA733>,<UA732>);/
- (<UA735>,<UA734>);(<UA737>,<UA736>);(<UA739>,<UA738>);(<UA73B>,<UA73A>);/
- (<UA73D>,<UA73C>);(<UA73F>,<UA73E>);(<UA741>,<UA740>);(<UA743>,<UA742>);/
- (<UA745>,<UA744>);(<UA747>,<UA746>);(<UA749>,<UA748>);(<UA74B>,<UA74A>);/
- (<UA74D>,<UA74C>);(<UA74F>,<UA74E>);(<UA751>,<UA750>);(<UA753>,<UA752>);/
- (<UA755>,<UA754>);(<UA757>,<UA756>);(<UA759>,<UA758>);(<UA75B>,<UA75A>);/
- (<UA75D>,<UA75C>);(<UA75F>,<UA75E>);(<UA761>,<UA760>);(<UA763>,<UA762>);/
- (<UA765>,<UA764>);(<UA767>,<UA766>);(<UA769>,<UA768>);(<UA76B>,<UA76A>);/
- (<UA76D>,<UA76C>);(<UA76F>,<UA76E>);(<UA77A>,<UA779>);(<UA77C>,<UA77B>);/
- (<UA77F>,<UA77E>);(<UA781>,<UA780>);(<UA783>,<UA782>);(<UA785>,<UA784>);/
- (<UA787>,<UA786>);(<UA78C>,<UA78B>);(<UA791>,<UA790>);(<UA793>,<UA792>);/
- (<UA794>,<UA7C4>);(<UA797>,<UA796>);(<UA799>,<UA798>);(<UA79B>,<UA79A>);/
- (<UA79D>,<UA79C>);(<UA79F>,<UA79E>);(<UA7A1>,<UA7A0>);(<UA7A3>,<UA7A2>);/
- (<UA7A5>,<UA7A4>);(<UA7A7>,<UA7A6>);(<UA7A9>,<UA7A8>);(<UA7B5>,<UA7B4>);/
- (<UA7B7>,<UA7B6>);(<UA7B9>,<UA7B8>);(<UA7BB>,<UA7BA>);(<UA7BD>,<UA7BC>);/
- (<UA7BF>,<UA7BE>);(<UA7C1>,<UA7C0>);(<UA7C3>,<UA7C2>);(<UA7C8>,<UA7C7>);/
- (<UA7CA>,<UA7C9>);(<UA7D1>,<UA7D0>);(<UA7D7>,<UA7D6>);(<UA7D9>,<UA7D8>);/
- (<UA7F6>,<UA7F5>);(<UAB53>,<UA7B3>);(<UAB70>,<U13A0>);(<UAB71>,<U13A1>);/
- (<UAB72>,<U13A2>);(<UAB73>,<U13A3>);(<UAB74>,<U13A4>);(<UAB75>,<U13A5>);/
- (<UAB76>,<U13A6>);(<UAB77>,<U13A7>);(<UAB78>,<U13A8>);(<UAB79>,<U13A9>);/
- (<UAB7A>,<U13AA>);(<UAB7B>,<U13AB>);(<UAB7C>,<U13AC>);(<UAB7D>,<U13AD>);/
- (<UAB7E>,<U13AE>);(<UAB7F>,<U13AF>);(<UAB80>,<U13B0>);(<UAB81>,<U13B1>);/
- (<UAB82>,<U13B2>);(<UAB83>,<U13B3>);(<UAB84>,<U13B4>);(<UAB85>,<U13B5>);/
- (<UAB86>,<U13B6>);(<UAB87>,<U13B7>);(<UAB88>,<U13B8>);(<UAB89>,<U13B9>);/
- (<UAB8A>,<U13BA>);(<UAB8B>,<U13BB>);(<UAB8C>,<U13BC>);(<UAB8D>,<U13BD>);/
- (<UAB8E>,<U13BE>);(<UAB8F>,<U13BF>);(<UAB90>,<U13C0>);(<UAB91>,<U13C1>);/
- (<UAB92>,<U13C2>);(<UAB93>,<U13C3>);(<UAB94>,<U13C4>);(<UAB95>,<U13C5>);/
- (<UAB96>,<U13C6>);(<UAB97>,<U13C7>);(<UAB98>,<U13C8>);(<UAB99>,<U13C9>);/
- (<UAB9A>,<U13CA>);(<UAB9B>,<U13CB>);(<UAB9C>,<U13CC>);(<UAB9D>,<U13CD>);/
- (<UAB9E>,<U13CE>);(<UAB9F>,<U13CF>);(<UABA0>,<U13D0>);(<UABA1>,<U13D1>);/
- (<UABA2>,<U13D2>);(<UABA3>,<U13D3>);(<UABA4>,<U13D4>);(<UABA5>,<U13D5>);/
- (<UABA6>,<U13D6>);(<UABA7>,<U13D7>);(<UABA8>,<U13D8>);(<UABA9>,<U13D9>);/
- (<UABAA>,<U13DA>);(<UABAB>,<U13DB>);(<UABAC>,<U13DC>);(<UABAD>,<U13DD>);/
- (<UABAE>,<U13DE>);(<UABAF>,<U13DF>);(<UABB0>,<U13E0>);(<UABB1>,<U13E1>);/
- (<UABB2>,<U13E2>);(<UABB3>,<U13E3>);(<UABB4>,<U13E4>);(<UABB5>,<U13E5>);/
- (<UABB6>,<U13E6>);(<UABB7>,<U13E7>);(<UABB8>,<U13E8>);(<UABB9>,<U13E9>);/
- (<UABBA>,<U13EA>);(<UABBB>,<U13EB>);(<UABBC>,<U13EC>);(<UABBD>,<U13ED>);/
- (<UABBE>,<U13EE>);(<UABBF>,<U13EF>);(<UFF41>,<UFF21>);(<UFF42>,<UFF22>);/
- (<UFF43>,<UFF23>);(<UFF44>,<UFF24>);(<UFF45>,<UFF25>);(<UFF46>,<UFF26>);/
- (<UFF47>,<UFF27>);(<UFF48>,<UFF28>);(<UFF49>,<UFF29>);(<UFF4A>,<UFF2A>);/
- (<UFF4B>,<UFF2B>);(<UFF4C>,<UFF2C>);(<UFF4D>,<UFF2D>);(<UFF4E>,<UFF2E>);/
- (<UFF4F>,<UFF2F>);(<UFF50>,<UFF30>);(<UFF51>,<UFF31>);(<UFF52>,<UFF32>);/
- (<UFF53>,<UFF33>);(<UFF54>,<UFF34>);(<UFF55>,<UFF35>);(<UFF56>,<UFF36>);/
- (<UFF57>,<UFF37>);(<UFF58>,<UFF38>);(<UFF59>,<UFF39>);(<UFF5A>,<UFF3A>);/
- (<U00010428>,<U00010400>);(<U00010429>,<U00010401>);/
+ (<U0199>,<U0198>);(<U019A>,<U023D>);(<U019B>,<UA7DC>);(<U019E>,<U0220>);/
+ (<U01A1>,<U01A0>);(<U01A3>,<U01A2>);(<U01A5>,<U01A4>);(<U01A8>,<U01A7>);/
+ (<U01AD>,<U01AC>);(<U01B0>,<U01AF>);(<U01B4>,<U01B3>);(<U01B6>,<U01B5>);/
+ (<U01B9>,<U01B8>);(<U01BD>,<U01BC>);(<U01BF>,<U01F7>);(<U01C4>,<U01C5>);/
+ (<U01C6>,<U01C5>);(<U01C7>,<U01C8>);(<U01C9>,<U01C8>);(<U01CA>,<U01CB>);/
+ (<U01CC>,<U01CB>);(<U01CE>,<U01CD>);(<U01D0>,<U01CF>);(<U01D2>,<U01D1>);/
+ (<U01D4>,<U01D3>);(<U01D6>,<U01D5>);(<U01D8>,<U01D7>);(<U01DA>,<U01D9>);/
+ (<U01DC>,<U01DB>);(<U01DD>,<U018E>);(<U01DF>,<U01DE>);(<U01E1>,<U01E0>);/
+ (<U01E3>,<U01E2>);(<U01E5>,<U01E4>);(<U01E7>,<U01E6>);(<U01E9>,<U01E8>);/
+ (<U01EB>,<U01EA>);(<U01ED>,<U01EC>);(<U01EF>,<U01EE>);(<U01F1>,<U01F2>);/
+ (<U01F3>,<U01F2>);(<U01F5>,<U01F4>);(<U01F9>,<U01F8>);(<U01FB>,<U01FA>);/
+ (<U01FD>,<U01FC>);(<U01FF>,<U01FE>);(<U0201>,<U0200>);(<U0203>,<U0202>);/
+ (<U0205>,<U0204>);(<U0207>,<U0206>);(<U0209>,<U0208>);(<U020B>,<U020A>);/
+ (<U020D>,<U020C>);(<U020F>,<U020E>);(<U0211>,<U0210>);(<U0213>,<U0212>);/
+ (<U0215>,<U0214>);(<U0217>,<U0216>);(<U0219>,<U0218>);(<U021B>,<U021A>);/
+ (<U021D>,<U021C>);(<U021F>,<U021E>);(<U0223>,<U0222>);(<U0225>,<U0224>);/
+ (<U0227>,<U0226>);(<U0229>,<U0228>);(<U022B>,<U022A>);(<U022D>,<U022C>);/
+ (<U022F>,<U022E>);(<U0231>,<U0230>);(<U0233>,<U0232>);(<U023C>,<U023B>);/
+ (<U023F>,<U2C7E>);(<U0240>,<U2C7F>);(<U0242>,<U0241>);(<U0247>,<U0246>);/
+ (<U0249>,<U0248>);(<U024B>,<U024A>);(<U024D>,<U024C>);(<U024F>,<U024E>);/
+ (<U0250>,<U2C6F>);(<U0251>,<U2C6D>);(<U0252>,<U2C70>);(<U0253>,<U0181>);/
+ (<U0254>,<U0186>);(<U0256>,<U0189>);(<U0257>,<U018A>);(<U0259>,<U018F>);/
+ (<U025B>,<U0190>);(<U025C>,<UA7AB>);(<U0260>,<U0193>);(<U0261>,<UA7AC>);/
+ (<U0263>,<U0194>);(<U0264>,<UA7CB>);(<U0265>,<UA78D>);(<U0266>,<UA7AA>);/
+ (<U0268>,<U0197>);(<U0269>,<U0196>);(<U026A>,<UA7AE>);(<U026B>,<U2C62>);/
+ (<U026C>,<UA7AD>);(<U026F>,<U019C>);(<U0271>,<U2C6E>);(<U0272>,<U019D>);/
+ (<U0275>,<U019F>);(<U027D>,<U2C64>);(<U0280>,<U01A6>);(<U0282>,<UA7C5>);/
+ (<U0283>,<U01A9>);(<U0287>,<UA7B1>);(<U0288>,<U01AE>);(<U0289>,<U0244>);/
+ (<U028A>,<U01B1>);(<U028B>,<U01B2>);(<U028C>,<U0245>);(<U0292>,<U01B7>);/
+ (<U029D>,<UA7B2>);(<U029E>,<UA7B0>);(<U0345>,<U0399>);(<U0371>,<U0370>);/
+ (<U0373>,<U0372>);(<U0377>,<U0376>);(<U037B>,<U03FD>);(<U037C>,<U03FE>);/
+ (<U037D>,<U03FF>);(<U03AC>,<U0386>);(<U03AD>,<U0388>);(<U03AE>,<U0389>);/
+ (<U03AF>,<U038A>);(<U03B1>,<U0391>);(<U03B2>,<U0392>);(<U03B3>,<U0393>);/
+ (<U03B4>,<U0394>);(<U03B5>,<U0395>);(<U03B6>,<U0396>);(<U03B7>,<U0397>);/
+ (<U03B8>,<U0398>);(<U03B9>,<U0399>);(<U03BA>,<U039A>);(<U03BB>,<U039B>);/
+ (<U03BC>,<U039C>);(<U03BD>,<U039D>);(<U03BE>,<U039E>);(<U03BF>,<U039F>);/
+ (<U03C0>,<U03A0>);(<U03C1>,<U03A1>);(<U03C2>,<U03A3>);(<U03C3>,<U03A3>);/
+ (<U03C4>,<U03A4>);(<U03C5>,<U03A5>);(<U03C6>,<U03A6>);(<U03C7>,<U03A7>);/
+ (<U03C8>,<U03A8>);(<U03C9>,<U03A9>);(<U03CA>,<U03AA>);(<U03CB>,<U03AB>);/
+ (<U03CC>,<U038C>);(<U03CD>,<U038E>);(<U03CE>,<U038F>);(<U03D0>,<U0392>);/
+ (<U03D1>,<U0398>);(<U03D5>,<U03A6>);(<U03D6>,<U03A0>);(<U03D7>,<U03CF>);/
+ (<U03D9>,<U03D8>);(<U03DB>,<U03DA>);(<U03DD>,<U03DC>);(<U03DF>,<U03DE>);/
+ (<U03E1>,<U03E0>);(<U03E3>,<U03E2>);(<U03E5>,<U03E4>);(<U03E7>,<U03E6>);/
+ (<U03E9>,<U03E8>);(<U03EB>,<U03EA>);(<U03ED>,<U03EC>);(<U03EF>,<U03EE>);/
+ (<U03F0>,<U039A>);(<U03F1>,<U03A1>);(<U03F2>,<U03F9>);(<U03F3>,<U037F>);/
+ (<U03F5>,<U0395>);(<U03F8>,<U03F7>);(<U03FB>,<U03FA>);(<U0430>,<U0410>);/
+ (<U0431>,<U0411>);(<U0432>,<U0412>);(<U0433>,<U0413>);(<U0434>,<U0414>);/
+ (<U0435>,<U0415>);(<U0436>,<U0416>);(<U0437>,<U0417>);(<U0438>,<U0418>);/
+ (<U0439>,<U0419>);(<U043A>,<U041A>);(<U043B>,<U041B>);(<U043C>,<U041C>);/
+ (<U043D>,<U041D>);(<U043E>,<U041E>);(<U043F>,<U041F>);(<U0440>,<U0420>);/
+ (<U0441>,<U0421>);(<U0442>,<U0422>);(<U0443>,<U0423>);(<U0444>,<U0424>);/
+ (<U0445>,<U0425>);(<U0446>,<U0426>);(<U0447>,<U0427>);(<U0448>,<U0428>);/
+ (<U0449>,<U0429>);(<U044A>,<U042A>);(<U044B>,<U042B>);(<U044C>,<U042C>);/
+ (<U044D>,<U042D>);(<U044E>,<U042E>);(<U044F>,<U042F>);(<U0450>,<U0400>);/
+ (<U0451>,<U0401>);(<U0452>,<U0402>);(<U0453>,<U0403>);(<U0454>,<U0404>);/
+ (<U0455>,<U0405>);(<U0456>,<U0406>);(<U0457>,<U0407>);(<U0458>,<U0408>);/
+ (<U0459>,<U0409>);(<U045A>,<U040A>);(<U045B>,<U040B>);(<U045C>,<U040C>);/
+ (<U045D>,<U040D>);(<U045E>,<U040E>);(<U045F>,<U040F>);(<U0461>,<U0460>);/
+ (<U0463>,<U0462>);(<U0465>,<U0464>);(<U0467>,<U0466>);(<U0469>,<U0468>);/
+ (<U046B>,<U046A>);(<U046D>,<U046C>);(<U046F>,<U046E>);(<U0471>,<U0470>);/
+ (<U0473>,<U0472>);(<U0475>,<U0474>);(<U0477>,<U0476>);(<U0479>,<U0478>);/
+ (<U047B>,<U047A>);(<U047D>,<U047C>);(<U047F>,<U047E>);(<U0481>,<U0480>);/
+ (<U048B>,<U048A>);(<U048D>,<U048C>);(<U048F>,<U048E>);(<U0491>,<U0490>);/
+ (<U0493>,<U0492>);(<U0495>,<U0494>);(<U0497>,<U0496>);(<U0499>,<U0498>);/
+ (<U049B>,<U049A>);(<U049D>,<U049C>);(<U049F>,<U049E>);(<U04A1>,<U04A0>);/
+ (<U04A3>,<U04A2>);(<U04A5>,<U04A4>);(<U04A7>,<U04A6>);(<U04A9>,<U04A8>);/
+ (<U04AB>,<U04AA>);(<U04AD>,<U04AC>);(<U04AF>,<U04AE>);(<U04B1>,<U04B0>);/
+ (<U04B3>,<U04B2>);(<U04B5>,<U04B4>);(<U04B7>,<U04B6>);(<U04B9>,<U04B8>);/
+ (<U04BB>,<U04BA>);(<U04BD>,<U04BC>);(<U04BF>,<U04BE>);(<U04C2>,<U04C1>);/
+ (<U04C4>,<U04C3>);(<U04C6>,<U04C5>);(<U04C8>,<U04C7>);(<U04CA>,<U04C9>);/
+ (<U04CC>,<U04CB>);(<U04CE>,<U04CD>);(<U04CF>,<U04C0>);(<U04D1>,<U04D0>);/
+ (<U04D3>,<U04D2>);(<U04D5>,<U04D4>);(<U04D7>,<U04D6>);(<U04D9>,<U04D8>);/
+ (<U04DB>,<U04DA>);(<U04DD>,<U04DC>);(<U04DF>,<U04DE>);(<U04E1>,<U04E0>);/
+ (<U04E3>,<U04E2>);(<U04E5>,<U04E4>);(<U04E7>,<U04E6>);(<U04E9>,<U04E8>);/
+ (<U04EB>,<U04EA>);(<U04ED>,<U04EC>);(<U04EF>,<U04EE>);(<U04F1>,<U04F0>);/
+ (<U04F3>,<U04F2>);(<U04F5>,<U04F4>);(<U04F7>,<U04F6>);(<U04F9>,<U04F8>);/
+ (<U04FB>,<U04FA>);(<U04FD>,<U04FC>);(<U04FF>,<U04FE>);(<U0501>,<U0500>);/
+ (<U0503>,<U0502>);(<U0505>,<U0504>);(<U0507>,<U0506>);(<U0509>,<U0508>);/
+ (<U050B>,<U050A>);(<U050D>,<U050C>);(<U050F>,<U050E>);(<U0511>,<U0510>);/
+ (<U0513>,<U0512>);(<U0515>,<U0514>);(<U0517>,<U0516>);(<U0519>,<U0518>);/
+ (<U051B>,<U051A>);(<U051D>,<U051C>);(<U051F>,<U051E>);(<U0521>,<U0520>);/
+ (<U0523>,<U0522>);(<U0525>,<U0524>);(<U0527>,<U0526>);(<U0529>,<U0528>);/
+ (<U052B>,<U052A>);(<U052D>,<U052C>);(<U052F>,<U052E>);(<U0561>,<U0531>);/
+ (<U0562>,<U0532>);(<U0563>,<U0533>);(<U0564>,<U0534>);(<U0565>,<U0535>);/
+ (<U0566>,<U0536>);(<U0567>,<U0537>);(<U0568>,<U0538>);(<U0569>,<U0539>);/
+ (<U056A>,<U053A>);(<U056B>,<U053B>);(<U056C>,<U053C>);(<U056D>,<U053D>);/
+ (<U056E>,<U053E>);(<U056F>,<U053F>);(<U0570>,<U0540>);(<U0571>,<U0541>);/
+ (<U0572>,<U0542>);(<U0573>,<U0543>);(<U0574>,<U0544>);(<U0575>,<U0545>);/
+ (<U0576>,<U0546>);(<U0577>,<U0547>);(<U0578>,<U0548>);(<U0579>,<U0549>);/
+ (<U057A>,<U054A>);(<U057B>,<U054B>);(<U057C>,<U054C>);(<U057D>,<U054D>);/
+ (<U057E>,<U054E>);(<U057F>,<U054F>);(<U0580>,<U0550>);(<U0581>,<U0551>);/
+ (<U0582>,<U0552>);(<U0583>,<U0553>);(<U0584>,<U0554>);(<U0585>,<U0555>);/
+ (<U0586>,<U0556>);(<U13F8>,<U13F0>);(<U13F9>,<U13F1>);(<U13FA>,<U13F2>);/
+ (<U13FB>,<U13F3>);(<U13FC>,<U13F4>);(<U13FD>,<U13F5>);(<U1C80>,<U0412>);/
+ (<U1C81>,<U0414>);(<U1C82>,<U041E>);(<U1C83>,<U0421>);(<U1C84>,<U0422>);/
+ (<U1C85>,<U0422>);(<U1C86>,<U042A>);(<U1C87>,<U0462>);(<U1C88>,<UA64A>);/
+ (<U1C8A>,<U1C89>);(<U1D79>,<UA77D>);(<U1D7D>,<U2C63>);(<U1D8E>,<UA7C6>);/
+ (<U1E01>,<U1E00>);(<U1E03>,<U1E02>);(<U1E05>,<U1E04>);(<U1E07>,<U1E06>);/
+ (<U1E09>,<U1E08>);(<U1E0B>,<U1E0A>);(<U1E0D>,<U1E0C>);(<U1E0F>,<U1E0E>);/
+ (<U1E11>,<U1E10>);(<U1E13>,<U1E12>);(<U1E15>,<U1E14>);(<U1E17>,<U1E16>);/
+ (<U1E19>,<U1E18>);(<U1E1B>,<U1E1A>);(<U1E1D>,<U1E1C>);(<U1E1F>,<U1E1E>);/
+ (<U1E21>,<U1E20>);(<U1E23>,<U1E22>);(<U1E25>,<U1E24>);(<U1E27>,<U1E26>);/
+ (<U1E29>,<U1E28>);(<U1E2B>,<U1E2A>);(<U1E2D>,<U1E2C>);(<U1E2F>,<U1E2E>);/
+ (<U1E31>,<U1E30>);(<U1E33>,<U1E32>);(<U1E35>,<U1E34>);(<U1E37>,<U1E36>);/
+ (<U1E39>,<U1E38>);(<U1E3B>,<U1E3A>);(<U1E3D>,<U1E3C>);(<U1E3F>,<U1E3E>);/
+ (<U1E41>,<U1E40>);(<U1E43>,<U1E42>);(<U1E45>,<U1E44>);(<U1E47>,<U1E46>);/
+ (<U1E49>,<U1E48>);(<U1E4B>,<U1E4A>);(<U1E4D>,<U1E4C>);(<U1E4F>,<U1E4E>);/
+ (<U1E51>,<U1E50>);(<U1E53>,<U1E52>);(<U1E55>,<U1E54>);(<U1E57>,<U1E56>);/
+ (<U1E59>,<U1E58>);(<U1E5B>,<U1E5A>);(<U1E5D>,<U1E5C>);(<U1E5F>,<U1E5E>);/
+ (<U1E61>,<U1E60>);(<U1E63>,<U1E62>);(<U1E65>,<U1E64>);(<U1E67>,<U1E66>);/
+ (<U1E69>,<U1E68>);(<U1E6B>,<U1E6A>);(<U1E6D>,<U1E6C>);(<U1E6F>,<U1E6E>);/
+ (<U1E71>,<U1E70>);(<U1E73>,<U1E72>);(<U1E75>,<U1E74>);(<U1E77>,<U1E76>);/
+ (<U1E79>,<U1E78>);(<U1E7B>,<U1E7A>);(<U1E7D>,<U1E7C>);(<U1E7F>,<U1E7E>);/
+ (<U1E81>,<U1E80>);(<U1E83>,<U1E82>);(<U1E85>,<U1E84>);(<U1E87>,<U1E86>);/
+ (<U1E89>,<U1E88>);(<U1E8B>,<U1E8A>);(<U1E8D>,<U1E8C>);(<U1E8F>,<U1E8E>);/
+ (<U1E91>,<U1E90>);(<U1E93>,<U1E92>);(<U1E95>,<U1E94>);(<U1E9B>,<U1E60>);/
+ (<U1EA1>,<U1EA0>);(<U1EA3>,<U1EA2>);(<U1EA5>,<U1EA4>);(<U1EA7>,<U1EA6>);/
+ (<U1EA9>,<U1EA8>);(<U1EAB>,<U1EAA>);(<U1EAD>,<U1EAC>);(<U1EAF>,<U1EAE>);/
+ (<U1EB1>,<U1EB0>);(<U1EB3>,<U1EB2>);(<U1EB5>,<U1EB4>);(<U1EB7>,<U1EB6>);/
+ (<U1EB9>,<U1EB8>);(<U1EBB>,<U1EBA>);(<U1EBD>,<U1EBC>);(<U1EBF>,<U1EBE>);/
+ (<U1EC1>,<U1EC0>);(<U1EC3>,<U1EC2>);(<U1EC5>,<U1EC4>);(<U1EC7>,<U1EC6>);/
+ (<U1EC9>,<U1EC8>);(<U1ECB>,<U1ECA>);(<U1ECD>,<U1ECC>);(<U1ECF>,<U1ECE>);/
+ (<U1ED1>,<U1ED0>);(<U1ED3>,<U1ED2>);(<U1ED5>,<U1ED4>);(<U1ED7>,<U1ED6>);/
+ (<U1ED9>,<U1ED8>);(<U1EDB>,<U1EDA>);(<U1EDD>,<U1EDC>);(<U1EDF>,<U1EDE>);/
+ (<U1EE1>,<U1EE0>);(<U1EE3>,<U1EE2>);(<U1EE5>,<U1EE4>);(<U1EE7>,<U1EE6>);/
+ (<U1EE9>,<U1EE8>);(<U1EEB>,<U1EEA>);(<U1EED>,<U1EEC>);(<U1EEF>,<U1EEE>);/
+ (<U1EF1>,<U1EF0>);(<U1EF3>,<U1EF2>);(<U1EF5>,<U1EF4>);(<U1EF7>,<U1EF6>);/
+ (<U1EF9>,<U1EF8>);(<U1EFB>,<U1EFA>);(<U1EFD>,<U1EFC>);(<U1EFF>,<U1EFE>);/
+ (<U1F00>,<U1F08>);(<U1F01>,<U1F09>);(<U1F02>,<U1F0A>);(<U1F03>,<U1F0B>);/
+ (<U1F04>,<U1F0C>);(<U1F05>,<U1F0D>);(<U1F06>,<U1F0E>);(<U1F07>,<U1F0F>);/
+ (<U1F10>,<U1F18>);(<U1F11>,<U1F19>);(<U1F12>,<U1F1A>);(<U1F13>,<U1F1B>);/
+ (<U1F14>,<U1F1C>);(<U1F15>,<U1F1D>);(<U1F20>,<U1F28>);(<U1F21>,<U1F29>);/
+ (<U1F22>,<U1F2A>);(<U1F23>,<U1F2B>);(<U1F24>,<U1F2C>);(<U1F25>,<U1F2D>);/
+ (<U1F26>,<U1F2E>);(<U1F27>,<U1F2F>);(<U1F30>,<U1F38>);(<U1F31>,<U1F39>);/
+ (<U1F32>,<U1F3A>);(<U1F33>,<U1F3B>);(<U1F34>,<U1F3C>);(<U1F35>,<U1F3D>);/
+ (<U1F36>,<U1F3E>);(<U1F37>,<U1F3F>);(<U1F40>,<U1F48>);(<U1F41>,<U1F49>);/
+ (<U1F42>,<U1F4A>);(<U1F43>,<U1F4B>);(<U1F44>,<U1F4C>);(<U1F45>,<U1F4D>);/
+ (<U1F51>,<U1F59>);(<U1F53>,<U1F5B>);(<U1F55>,<U1F5D>);(<U1F57>,<U1F5F>);/
+ (<U1F60>,<U1F68>);(<U1F61>,<U1F69>);(<U1F62>,<U1F6A>);(<U1F63>,<U1F6B>);/
+ (<U1F64>,<U1F6C>);(<U1F65>,<U1F6D>);(<U1F66>,<U1F6E>);(<U1F67>,<U1F6F>);/
+ (<U1F70>,<U1FBA>);(<U1F71>,<U1FBB>);(<U1F72>,<U1FC8>);(<U1F73>,<U1FC9>);/
+ (<U1F74>,<U1FCA>);(<U1F75>,<U1FCB>);(<U1F76>,<U1FDA>);(<U1F77>,<U1FDB>);/
+ (<U1F78>,<U1FF8>);(<U1F79>,<U1FF9>);(<U1F7A>,<U1FEA>);(<U1F7B>,<U1FEB>);/
+ (<U1F7C>,<U1FFA>);(<U1F7D>,<U1FFB>);(<U1F80>,<U1F88>);(<U1F81>,<U1F89>);/
+ (<U1F82>,<U1F8A>);(<U1F83>,<U1F8B>);(<U1F84>,<U1F8C>);(<U1F85>,<U1F8D>);/
+ (<U1F86>,<U1F8E>);(<U1F87>,<U1F8F>);(<U1F90>,<U1F98>);(<U1F91>,<U1F99>);/
+ (<U1F92>,<U1F9A>);(<U1F93>,<U1F9B>);(<U1F94>,<U1F9C>);(<U1F95>,<U1F9D>);/
+ (<U1F96>,<U1F9E>);(<U1F97>,<U1F9F>);(<U1FA0>,<U1FA8>);(<U1FA1>,<U1FA9>);/
+ (<U1FA2>,<U1FAA>);(<U1FA3>,<U1FAB>);(<U1FA4>,<U1FAC>);(<U1FA5>,<U1FAD>);/
+ (<U1FA6>,<U1FAE>);(<U1FA7>,<U1FAF>);(<U1FB0>,<U1FB8>);(<U1FB1>,<U1FB9>);/
+ (<U1FB3>,<U1FBC>);(<U1FBE>,<U0399>);(<U1FC3>,<U1FCC>);(<U1FD0>,<U1FD8>);/
+ (<U1FD1>,<U1FD9>);(<U1FE0>,<U1FE8>);(<U1FE1>,<U1FE9>);(<U1FE5>,<U1FEC>);/
+ (<U1FF3>,<U1FFC>);(<U214E>,<U2132>);(<U2170>,<U2160>);(<U2171>,<U2161>);/
+ (<U2172>,<U2162>);(<U2173>,<U2163>);(<U2174>,<U2164>);(<U2175>,<U2165>);/
+ (<U2176>,<U2166>);(<U2177>,<U2167>);(<U2178>,<U2168>);(<U2179>,<U2169>);/
+ (<U217A>,<U216A>);(<U217B>,<U216B>);(<U217C>,<U216C>);(<U217D>,<U216D>);/
+ (<U217E>,<U216E>);(<U217F>,<U216F>);(<U2184>,<U2183>);(<U24D0>,<U24B6>);/
+ (<U24D1>,<U24B7>);(<U24D2>,<U24B8>);(<U24D3>,<U24B9>);(<U24D4>,<U24BA>);/
+ (<U24D5>,<U24BB>);(<U24D6>,<U24BC>);(<U24D7>,<U24BD>);(<U24D8>,<U24BE>);/
+ (<U24D9>,<U24BF>);(<U24DA>,<U24C0>);(<U24DB>,<U24C1>);(<U24DC>,<U24C2>);/
+ (<U24DD>,<U24C3>);(<U24DE>,<U24C4>);(<U24DF>,<U24C5>);(<U24E0>,<U24C6>);/
+ (<U24E1>,<U24C7>);(<U24E2>,<U24C8>);(<U24E3>,<U24C9>);(<U24E4>,<U24CA>);/
+ (<U24E5>,<U24CB>);(<U24E6>,<U24CC>);(<U24E7>,<U24CD>);(<U24E8>,<U24CE>);/
+ (<U24E9>,<U24CF>);(<U2C30>,<U2C00>);(<U2C31>,<U2C01>);(<U2C32>,<U2C02>);/
+ (<U2C33>,<U2C03>);(<U2C34>,<U2C04>);(<U2C35>,<U2C05>);(<U2C36>,<U2C06>);/
+ (<U2C37>,<U2C07>);(<U2C38>,<U2C08>);(<U2C39>,<U2C09>);(<U2C3A>,<U2C0A>);/
+ (<U2C3B>,<U2C0B>);(<U2C3C>,<U2C0C>);(<U2C3D>,<U2C0D>);(<U2C3E>,<U2C0E>);/
+ (<U2C3F>,<U2C0F>);(<U2C40>,<U2C10>);(<U2C41>,<U2C11>);(<U2C42>,<U2C12>);/
+ (<U2C43>,<U2C13>);(<U2C44>,<U2C14>);(<U2C45>,<U2C15>);(<U2C46>,<U2C16>);/
+ (<U2C47>,<U2C17>);(<U2C48>,<U2C18>);(<U2C49>,<U2C19>);(<U2C4A>,<U2C1A>);/
+ (<U2C4B>,<U2C1B>);(<U2C4C>,<U2C1C>);(<U2C4D>,<U2C1D>);(<U2C4E>,<U2C1E>);/
+ (<U2C4F>,<U2C1F>);(<U2C50>,<U2C20>);(<U2C51>,<U2C21>);(<U2C52>,<U2C22>);/
+ (<U2C53>,<U2C23>);(<U2C54>,<U2C24>);(<U2C55>,<U2C25>);(<U2C56>,<U2C26>);/
+ (<U2C57>,<U2C27>);(<U2C58>,<U2C28>);(<U2C59>,<U2C29>);(<U2C5A>,<U2C2A>);/
+ (<U2C5B>,<U2C2B>);(<U2C5C>,<U2C2C>);(<U2C5D>,<U2C2D>);(<U2C5E>,<U2C2E>);/
+ (<U2C5F>,<U2C2F>);(<U2C61>,<U2C60>);(<U2C65>,<U023A>);(<U2C66>,<U023E>);/
+ (<U2C68>,<U2C67>);(<U2C6A>,<U2C69>);(<U2C6C>,<U2C6B>);(<U2C73>,<U2C72>);/
+ (<U2C76>,<U2C75>);(<U2C81>,<U2C80>);(<U2C83>,<U2C82>);(<U2C85>,<U2C84>);/
+ (<U2C87>,<U2C86>);(<U2C89>,<U2C88>);(<U2C8B>,<U2C8A>);(<U2C8D>,<U2C8C>);/
+ (<U2C8F>,<U2C8E>);(<U2C91>,<U2C90>);(<U2C93>,<U2C92>);(<U2C95>,<U2C94>);/
+ (<U2C97>,<U2C96>);(<U2C99>,<U2C98>);(<U2C9B>,<U2C9A>);(<U2C9D>,<U2C9C>);/
+ (<U2C9F>,<U2C9E>);(<U2CA1>,<U2CA0>);(<U2CA3>,<U2CA2>);(<U2CA5>,<U2CA4>);/
+ (<U2CA7>,<U2CA6>);(<U2CA9>,<U2CA8>);(<U2CAB>,<U2CAA>);(<U2CAD>,<U2CAC>);/
+ (<U2CAF>,<U2CAE>);(<U2CB1>,<U2CB0>);(<U2CB3>,<U2CB2>);(<U2CB5>,<U2CB4>);/
+ (<U2CB7>,<U2CB6>);(<U2CB9>,<U2CB8>);(<U2CBB>,<U2CBA>);(<U2CBD>,<U2CBC>);/
+ (<U2CBF>,<U2CBE>);(<U2CC1>,<U2CC0>);(<U2CC3>,<U2CC2>);(<U2CC5>,<U2CC4>);/
+ (<U2CC7>,<U2CC6>);(<U2CC9>,<U2CC8>);(<U2CCB>,<U2CCA>);(<U2CCD>,<U2CCC>);/
+ (<U2CCF>,<U2CCE>);(<U2CD1>,<U2CD0>);(<U2CD3>,<U2CD2>);(<U2CD5>,<U2CD4>);/
+ (<U2CD7>,<U2CD6>);(<U2CD9>,<U2CD8>);(<U2CDB>,<U2CDA>);(<U2CDD>,<U2CDC>);/
+ (<U2CDF>,<U2CDE>);(<U2CE1>,<U2CE0>);(<U2CE3>,<U2CE2>);(<U2CEC>,<U2CEB>);/
+ (<U2CEE>,<U2CED>);(<U2CF3>,<U2CF2>);(<U2D00>,<U10A0>);(<U2D01>,<U10A1>);/
+ (<U2D02>,<U10A2>);(<U2D03>,<U10A3>);(<U2D04>,<U10A4>);(<U2D05>,<U10A5>);/
+ (<U2D06>,<U10A6>);(<U2D07>,<U10A7>);(<U2D08>,<U10A8>);(<U2D09>,<U10A9>);/
+ (<U2D0A>,<U10AA>);(<U2D0B>,<U10AB>);(<U2D0C>,<U10AC>);(<U2D0D>,<U10AD>);/
+ (<U2D0E>,<U10AE>);(<U2D0F>,<U10AF>);(<U2D10>,<U10B0>);(<U2D11>,<U10B1>);/
+ (<U2D12>,<U10B2>);(<U2D13>,<U10B3>);(<U2D14>,<U10B4>);(<U2D15>,<U10B5>);/
+ (<U2D16>,<U10B6>);(<U2D17>,<U10B7>);(<U2D18>,<U10B8>);(<U2D19>,<U10B9>);/
+ (<U2D1A>,<U10BA>);(<U2D1B>,<U10BB>);(<U2D1C>,<U10BC>);(<U2D1D>,<U10BD>);/
+ (<U2D1E>,<U10BE>);(<U2D1F>,<U10BF>);(<U2D20>,<U10C0>);(<U2D21>,<U10C1>);/
+ (<U2D22>,<U10C2>);(<U2D23>,<U10C3>);(<U2D24>,<U10C4>);(<U2D25>,<U10C5>);/
+ (<U2D27>,<U10C7>);(<U2D2D>,<U10CD>);(<UA641>,<UA640>);(<UA643>,<UA642>);/
+ (<UA645>,<UA644>);(<UA647>,<UA646>);(<UA649>,<UA648>);(<UA64B>,<UA64A>);/
+ (<UA64D>,<UA64C>);(<UA64F>,<UA64E>);(<UA651>,<UA650>);(<UA653>,<UA652>);/
+ (<UA655>,<UA654>);(<UA657>,<UA656>);(<UA659>,<UA658>);(<UA65B>,<UA65A>);/
+ (<UA65D>,<UA65C>);(<UA65F>,<UA65E>);(<UA661>,<UA660>);(<UA663>,<UA662>);/
+ (<UA665>,<UA664>);(<UA667>,<UA666>);(<UA669>,<UA668>);(<UA66B>,<UA66A>);/
+ (<UA66D>,<UA66C>);(<UA681>,<UA680>);(<UA683>,<UA682>);(<UA685>,<UA684>);/
+ (<UA687>,<UA686>);(<UA689>,<UA688>);(<UA68B>,<UA68A>);(<UA68D>,<UA68C>);/
+ (<UA68F>,<UA68E>);(<UA691>,<UA690>);(<UA693>,<UA692>);(<UA695>,<UA694>);/
+ (<UA697>,<UA696>);(<UA699>,<UA698>);(<UA69B>,<UA69A>);(<UA723>,<UA722>);/
+ (<UA725>,<UA724>);(<UA727>,<UA726>);(<UA729>,<UA728>);(<UA72B>,<UA72A>);/
+ (<UA72D>,<UA72C>);(<UA72F>,<UA72E>);(<UA733>,<UA732>);(<UA735>,<UA734>);/
+ (<UA737>,<UA736>);(<UA739>,<UA738>);(<UA73B>,<UA73A>);(<UA73D>,<UA73C>);/
+ (<UA73F>,<UA73E>);(<UA741>,<UA740>);(<UA743>,<UA742>);(<UA745>,<UA744>);/
+ (<UA747>,<UA746>);(<UA749>,<UA748>);(<UA74B>,<UA74A>);(<UA74D>,<UA74C>);/
+ (<UA74F>,<UA74E>);(<UA751>,<UA750>);(<UA753>,<UA752>);(<UA755>,<UA754>);/
+ (<UA757>,<UA756>);(<UA759>,<UA758>);(<UA75B>,<UA75A>);(<UA75D>,<UA75C>);/
+ (<UA75F>,<UA75E>);(<UA761>,<UA760>);(<UA763>,<UA762>);(<UA765>,<UA764>);/
+ (<UA767>,<UA766>);(<UA769>,<UA768>);(<UA76B>,<UA76A>);(<UA76D>,<UA76C>);/
+ (<UA76F>,<UA76E>);(<UA77A>,<UA779>);(<UA77C>,<UA77B>);(<UA77F>,<UA77E>);/
+ (<UA781>,<UA780>);(<UA783>,<UA782>);(<UA785>,<UA784>);(<UA787>,<UA786>);/
+ (<UA78C>,<UA78B>);(<UA791>,<UA790>);(<UA793>,<UA792>);(<UA794>,<UA7C4>);/
+ (<UA797>,<UA796>);(<UA799>,<UA798>);(<UA79B>,<UA79A>);(<UA79D>,<UA79C>);/
+ (<UA79F>,<UA79E>);(<UA7A1>,<UA7A0>);(<UA7A3>,<UA7A2>);(<UA7A5>,<UA7A4>);/
+ (<UA7A7>,<UA7A6>);(<UA7A9>,<UA7A8>);(<UA7B5>,<UA7B4>);(<UA7B7>,<UA7B6>);/
+ (<UA7B9>,<UA7B8>);(<UA7BB>,<UA7BA>);(<UA7BD>,<UA7BC>);(<UA7BF>,<UA7BE>);/
+ (<UA7C1>,<UA7C0>);(<UA7C3>,<UA7C2>);(<UA7C8>,<UA7C7>);(<UA7CA>,<UA7C9>);/
+ (<UA7CD>,<UA7CC>);(<UA7D1>,<UA7D0>);(<UA7D7>,<UA7D6>);(<UA7D9>,<UA7D8>);/
+ (<UA7DB>,<UA7DA>);(<UA7F6>,<UA7F5>);(<UAB53>,<UA7B3>);(<UAB70>,<U13A0>);/
+ (<UAB71>,<U13A1>);(<UAB72>,<U13A2>);(<UAB73>,<U13A3>);(<UAB74>,<U13A4>);/
+ (<UAB75>,<U13A5>);(<UAB76>,<U13A6>);(<UAB77>,<U13A7>);(<UAB78>,<U13A8>);/
+ (<UAB79>,<U13A9>);(<UAB7A>,<U13AA>);(<UAB7B>,<U13AB>);(<UAB7C>,<U13AC>);/
+ (<UAB7D>,<U13AD>);(<UAB7E>,<U13AE>);(<UAB7F>,<U13AF>);(<UAB80>,<U13B0>);/
+ (<UAB81>,<U13B1>);(<UAB82>,<U13B2>);(<UAB83>,<U13B3>);(<UAB84>,<U13B4>);/
+ (<UAB85>,<U13B5>);(<UAB86>,<U13B6>);(<UAB87>,<U13B7>);(<UAB88>,<U13B8>);/
+ (<UAB89>,<U13B9>);(<UAB8A>,<U13BA>);(<UAB8B>,<U13BB>);(<UAB8C>,<U13BC>);/
+ (<UAB8D>,<U13BD>);(<UAB8E>,<U13BE>);(<UAB8F>,<U13BF>);(<UAB90>,<U13C0>);/
+ (<UAB91>,<U13C1>);(<UAB92>,<U13C2>);(<UAB93>,<U13C3>);(<UAB94>,<U13C4>);/
+ (<UAB95>,<U13C5>);(<UAB96>,<U13C6>);(<UAB97>,<U13C7>);(<UAB98>,<U13C8>);/
+ (<UAB99>,<U13C9>);(<UAB9A>,<U13CA>);(<UAB9B>,<U13CB>);(<UAB9C>,<U13CC>);/
+ (<UAB9D>,<U13CD>);(<UAB9E>,<U13CE>);(<UAB9F>,<U13CF>);(<UABA0>,<U13D0>);/
+ (<UABA1>,<U13D1>);(<UABA2>,<U13D2>);(<UABA3>,<U13D3>);(<UABA4>,<U13D4>);/
+ (<UABA5>,<U13D5>);(<UABA6>,<U13D6>);(<UABA7>,<U13D7>);(<UABA8>,<U13D8>);/
+ (<UABA9>,<U13D9>);(<UABAA>,<U13DA>);(<UABAB>,<U13DB>);(<UABAC>,<U13DC>);/
+ (<UABAD>,<U13DD>);(<UABAE>,<U13DE>);(<UABAF>,<U13DF>);(<UABB0>,<U13E0>);/
+ (<UABB1>,<U13E1>);(<UABB2>,<U13E2>);(<UABB3>,<U13E3>);(<UABB4>,<U13E4>);/
+ (<UABB5>,<U13E5>);(<UABB6>,<U13E6>);(<UABB7>,<U13E7>);(<UABB8>,<U13E8>);/
+ (<UABB9>,<U13E9>);(<UABBA>,<U13EA>);(<UABBB>,<U13EB>);(<UABBC>,<U13EC>);/
+ (<UABBD>,<U13ED>);(<UABBE>,<U13EE>);(<UABBF>,<U13EF>);(<UFF41>,<UFF21>);/
+ (<UFF42>,<UFF22>);(<UFF43>,<UFF23>);(<UFF44>,<UFF24>);(<UFF45>,<UFF25>);/
+ (<UFF46>,<UFF26>);(<UFF47>,<UFF27>);(<UFF48>,<UFF28>);(<UFF49>,<UFF29>);/
+ (<UFF4A>,<UFF2A>);(<UFF4B>,<UFF2B>);(<UFF4C>,<UFF2C>);(<UFF4D>,<UFF2D>);/
+ (<UFF4E>,<UFF2E>);(<UFF4F>,<UFF2F>);(<UFF50>,<UFF30>);(<UFF51>,<UFF31>);/
+ (<UFF52>,<UFF32>);(<UFF53>,<UFF33>);(<UFF54>,<UFF34>);(<UFF55>,<UFF35>);/
+ (<UFF56>,<UFF36>);(<UFF57>,<UFF37>);(<UFF58>,<UFF38>);(<UFF59>,<UFF39>);/
+ (<UFF5A>,<UFF3A>);(<U00010428>,<U00010400>);(<U00010429>,<U00010401>);/
(<U0001042A>,<U00010402>);(<U0001042B>,<U00010403>);/
(<U0001042C>,<U00010404>);(<U0001042D>,<U00010405>);/
(<U0001042E>,<U00010406>);(<U0001042F>,<U00010407>);/
@@ -2400,6 +2469,17 @@ map "totitle"; /
(<U00010CED>,<U00010CAD>);(<U00010CEE>,<U00010CAE>);/
(<U00010CEF>,<U00010CAF>);(<U00010CF0>,<U00010CB0>);/
(<U00010CF1>,<U00010CB1>);(<U00010CF2>,<U00010CB2>);/
+ (<U00010D70>,<U00010D50>);(<U00010D71>,<U00010D51>);/
+ (<U00010D72>,<U00010D52>);(<U00010D73>,<U00010D53>);/
+ (<U00010D74>,<U00010D54>);(<U00010D75>,<U00010D55>);/
+ (<U00010D76>,<U00010D56>);(<U00010D77>,<U00010D57>);/
+ (<U00010D78>,<U00010D58>);(<U00010D79>,<U00010D59>);/
+ (<U00010D7A>,<U00010D5A>);(<U00010D7B>,<U00010D5B>);/
+ (<U00010D7C>,<U00010D5C>);(<U00010D7D>,<U00010D5D>);/
+ (<U00010D7E>,<U00010D5E>);(<U00010D7F>,<U00010D5F>);/
+ (<U00010D80>,<U00010D60>);(<U00010D81>,<U00010D61>);/
+ (<U00010D82>,<U00010D62>);(<U00010D83>,<U00010D63>);/
+ (<U00010D84>,<U00010D64>);(<U00010D85>,<U00010D65>);/
(<U000118C0>,<U000118A0>);(<U000118C1>,<U000118A1>);/
(<U000118C2>,<U000118A2>);(<U000118C3>,<U000118A3>);/
(<U000118C4>,<U000118A4>);(<U000118C5>,<U000118A5>);/
@@ -2459,7 +2539,7 @@ class "combining"; /
<U06E7>..<U06E8>;<U06EA>..<U06ED>;<U0711>;<U0730>..<U074A>;/
<U07A6>..<U07B0>;<U07EB>..<U07F3>;<U07FD>;<U0816>..<U0819>;/
<U081B>..<U0823>;<U0825>..<U0827>;<U0829>..<U082D>;<U0859>..<U085B>;/
- <U0898>..<U089F>;<U08CA>..<U08E1>;<U08E3>..<U0903>;<U093A>..<U093C>;/
+ <U0897>..<U089F>;<U08CA>..<U08E1>;<U08E3>..<U0903>;<U093A>..<U093C>;/
<U093E>..<U094F>;<U0951>..<U0957>;<U0962>..<U0963>;<U0981>..<U0983>;/
<U09BC>;<U09BE>..<U09C4>;<U09C7>..<U09C8>;<U09CB>..<U09CD>;<U09D7>;/
<U09E2>..<U09E3>;<U09FE>;<U0A01>..<U0A03>;<U0A3C>;<U0A3E>..<U0A42>;/
@@ -2501,21 +2581,24 @@ class "combining"; /
<U00010376>..<U0001037A>;<U00010A01>..<U00010A03>;/
<U00010A05>..<U00010A06>;<U00010A0C>..<U00010A0F>;/
<U00010A38>..<U00010A3A>;<U00010A3F>;<U00010AE5>..<U00010AE6>;/
- <U00010D24>..<U00010D27>;<U00010EAB>..<U00010EAC>;/
- <U00010EFD>..<U00010EFF>;<U00010F46>..<U00010F50>;/
- <U00010F82>..<U00010F85>;<U00011000>..<U00011002>;/
- <U00011038>..<U00011046>;<U00011070>;<U00011073>..<U00011074>;/
- <U0001107F>..<U00011082>;<U000110B0>..<U000110BA>;<U000110C2>;/
- <U00011100>..<U00011102>;<U00011127>..<U00011134>;/
- <U00011145>..<U00011146>;<U00011173>;<U00011180>..<U00011182>;/
- <U000111B3>..<U000111C0>;<U000111C9>..<U000111CC>;/
- <U000111CE>..<U000111CF>;<U0001122C>..<U00011237>;<U0001123E>;/
- <U00011241>;<U000112DF>..<U000112EA>;<U00011300>..<U00011303>;/
+ <U00010D24>..<U00010D27>;<U00010D69>..<U00010D6D>;/
+ <U00010EAB>..<U00010EAC>;<U00010EFC>..<U00010EFF>;/
+ <U00010F46>..<U00010F50>;<U00010F82>..<U00010F85>;/
+ <U00011000>..<U00011002>;<U00011038>..<U00011046>;<U00011070>;/
+ <U00011073>..<U00011074>;<U0001107F>..<U00011082>;/
+ <U000110B0>..<U000110BA>;<U000110C2>;<U00011100>..<U00011102>;/
+ <U00011127>..<U00011134>;<U00011145>..<U00011146>;<U00011173>;/
+ <U00011180>..<U00011182>;<U000111B3>..<U000111C0>;/
+ <U000111C9>..<U000111CC>;<U000111CE>..<U000111CF>;/
+ <U0001122C>..<U00011237>;<U0001123E>;<U00011241>;/
+ <U000112DF>..<U000112EA>;<U00011300>..<U00011303>;/
<U0001133B>..<U0001133C>;<U0001133E>..<U00011344>;/
<U00011347>..<U00011348>;<U0001134B>..<U0001134D>;<U00011357>;/
<U00011362>..<U00011363>;<U00011366>..<U0001136C>;/
- <U00011370>..<U00011374>;<U00011435>..<U00011446>;<U0001145E>;/
- <U000114B0>..<U000114C3>;<U000115AF>..<U000115B5>;/
+ <U00011370>..<U00011374>;<U000113B8>..<U000113C0>;<U000113C2>;/
+ <U000113C5>;<U000113C7>..<U000113CA>;<U000113CC>..<U000113D0>;/
+ <U000113D2>;<U000113E1>..<U000113E2>;<U00011435>..<U00011446>;/
+ <U0001145E>;<U000114B0>..<U000114C3>;<U000115AF>..<U000115B5>;/
<U000115B8>..<U000115C0>;<U000115DC>..<U000115DD>;/
<U00011630>..<U00011640>;<U000116AB>..<U000116B7>;/
<U0001171D>..<U0001172B>;<U0001182C>..<U0001183A>;/
@@ -2531,7 +2614,8 @@ class "combining"; /
<U00011D8A>..<U00011D8E>;<U00011D90>..<U00011D91>;/
<U00011D93>..<U00011D97>;<U00011EF3>..<U00011EF6>;/
<U00011F00>..<U00011F01>;<U00011F03>;<U00011F34>..<U00011F3A>;/
- <U00011F3E>..<U00011F42>;<U00013440>;<U00013447>..<U00013455>;/
+ <U00011F3E>..<U00011F42>;<U00011F5A>;<U00013440>;/
+ <U00013447>..<U00013455>;<U0001611E>..<U0001612F>;/
<U00016AF0>..<U00016AF4>;<U00016B30>..<U00016B36>;<U00016F4F>;/
<U00016F51>..<U00016F87>;<U00016F8F>..<U00016F92>;<U00016FE4>;/
<U00016FF0>..<U00016FF1>;<U0001BC9D>..<U0001BC9E>;/
@@ -2545,8 +2629,8 @@ class "combining"; /
<U0001E01B>..<U0001E021>;<U0001E023>..<U0001E024>;/
<U0001E026>..<U0001E02A>;<U0001E08F>;<U0001E130>..<U0001E136>;/
<U0001E2AE>;<U0001E2EC>..<U0001E2EF>;<U0001E4EC>..<U0001E4EF>;/
- <U0001E8D0>..<U0001E8D6>;<U0001E944>..<U0001E94A>;/
- <U000E0100>..<U000E01EF>
+ <U0001E5EE>..<U0001E5EF>;<U0001E8D0>..<U0001E8D6>;/
+ <U0001E944>..<U0001E94A>;<U000E0100>..<U000E01EF>
% The "combining_level3" class reflects ISO/IEC 10646-1 annex B.2
% That is, combining characters of level 3.
@@ -2588,7 +2672,7 @@ class "combining_level3"; /
<UAA4C>..<UAA4D>;<UAA7B>..<UAA7D>;<UAAEB>..<UAAEF>;<UAAF5>..<UAAF6>;/
<UABE3>..<UABEA>;<UABEC>..<UABED>;<UFB1E>;<UFE00>..<UFE0F>;/
<U00010A01>..<U00010A03>;<U00010A05>..<U00010A06>;<U00010A0C>;/
- <U00010A0E>;<U00010A39>;<U00010A3F>;<U00011000>..<U00011002>;/
+ <U00010A0E>;<U00010A39>;<U00010A3F>;<U00010EFC>;<U00011000>..<U00011002>;/
<U00011038>..<U00011046>;<U00011070>;<U00011073>..<U00011074>;/
<U0001107F>..<U00011082>;<U000110B0>..<U000110BA>;<U000110C2>;/
<U00011127>..<U00011134>;<U00011145>..<U00011146>;<U00011173>;/
@@ -2598,7 +2682,9 @@ class "combining_level3"; /
<U000112DF>..<U000112EA>;<U00011300>..<U00011303>;/
<U0001133B>..<U0001133C>;<U0001133E>..<U00011344>;/
<U00011347>..<U00011348>;<U0001134B>..<U0001134D>;<U00011357>;/
- <U00011362>..<U00011363>;<U00011435>..<U00011446>;/
+ <U00011362>..<U00011363>;<U000113B8>..<U000113C0>;<U000113C2>;/
+ <U000113C5>;<U000113C7>..<U000113CA>;<U000113CC>..<U000113D0>;/
+ <U000113D2>;<U000113E1>..<U000113E2>;<U00011435>..<U00011446>;/
<U000114B0>..<U000114C3>;<U000115AF>..<U000115B5>;/
<U000115B8>..<U000115C0>;<U000115DC>..<U000115DD>;/
<U00011630>..<U00011640>;<U000116AB>..<U000116B7>;/
@@ -2615,7 +2701,8 @@ class "combining_level3"; /
<U00011D8A>..<U00011D8E>;<U00011D90>..<U00011D91>;/
<U00011D93>..<U00011D97>;<U00011EF3>..<U00011EF6>;/
<U00011F00>..<U00011F01>;<U00011F03>;<U00011F34>..<U00011F3A>;/
- <U00011F3E>..<U00011F42>;<U00013440>;<U00013447>..<U00013455>;/
+ <U00011F3E>..<U00011F42>;<U00011F5A>;<U00013440>;/
+ <U00013447>..<U00013455>;<U0001611E>..<U0001612F>;/
<U00016AF0>..<U00016AF4>;<U00016F4F>;<U00016F51>..<U00016F87>;/
<U00016F8F>..<U00016F92>;<U00016FE4>;<U00016FF0>..<U00016FF1>;/
<U0001BC9D>..<U0001BC9E>;<U0001CF00>..<U0001CF2D>;/
diff --git a/localedata/locales/tr_TR b/localedata/locales/tr_TR
index 31387c7..ba457b0 100644
--- a/localedata/locales/tr_TR
+++ b/localedata/locales/tr_TR
@@ -43,7 +43,7 @@ fax ""
language "Turkish"
territory "Türkiye"
revision "1.0"
-date "2023-09-15"
+date "2024-09-12"
category "i18n:2012";LC_IDENTIFICATION
category "i18n:2012";LC_CTYPE
@@ -127,7 +127,7 @@ END LC_COLLATE
LC_CTYPE
% The following is the 14652 i18n fdcc-set LC_CTYPE category.
-% It covers Unicode version 15.1.0.
+% It covers Unicode version 16.0.0.
% The character classes and mapping tables were automatically
% generated using the gen_unicode_ctype.py program.
@@ -169,21 +169,21 @@ upper /
<U0508>;<U050A>;<U050C>;<U050E>;<U0510>;<U0512>;<U0514>;<U0516>;<U0518>;/
<U051A>;<U051C>;<U051E>;<U0520>;<U0522>;<U0524>;<U0526>;<U0528>;<U052A>;/
<U052C>;<U052E>;<U0531>..<U0556>;<U10A0>..<U10C5>;<U10C7>;<U10CD>;/
- <U13A0>..<U13F5>;<U1C90>..<U1CBA>;<U1CBD>..<U1CBF>;<U1E00>;<U1E02>;/
- <U1E04>;<U1E06>;<U1E08>;<U1E0A>;<U1E0C>;<U1E0E>;<U1E10>;<U1E12>;<U1E14>;/
- <U1E16>;<U1E18>;<U1E1A>;<U1E1C>;<U1E1E>;<U1E20>;<U1E22>;<U1E24>;<U1E26>;/
- <U1E28>;<U1E2A>;<U1E2C>;<U1E2E>;<U1E30>;<U1E32>;<U1E34>;<U1E36>;<U1E38>;/
- <U1E3A>;<U1E3C>;<U1E3E>;<U1E40>;<U1E42>;<U1E44>;<U1E46>;<U1E48>;<U1E4A>;/
- <U1E4C>;<U1E4E>;<U1E50>;<U1E52>;<U1E54>;<U1E56>;<U1E58>;<U1E5A>;<U1E5C>;/
- <U1E5E>;<U1E60>;<U1E62>;<U1E64>;<U1E66>;<U1E68>;<U1E6A>;<U1E6C>;<U1E6E>;/
- <U1E70>;<U1E72>;<U1E74>;<U1E76>;<U1E78>;<U1E7A>;<U1E7C>;<U1E7E>;<U1E80>;/
- <U1E82>;<U1E84>;<U1E86>;<U1E88>;<U1E8A>;<U1E8C>;<U1E8E>;<U1E90>;<U1E92>;/
- <U1E94>;<U1E9E>;<U1EA0>;<U1EA2>;<U1EA4>;<U1EA6>;<U1EA8>;<U1EAA>;<U1EAC>;/
- <U1EAE>;<U1EB0>;<U1EB2>;<U1EB4>;<U1EB6>;<U1EB8>;<U1EBA>;<U1EBC>;<U1EBE>;/
- <U1EC0>;<U1EC2>;<U1EC4>;<U1EC6>;<U1EC8>;<U1ECA>;<U1ECC>;<U1ECE>;<U1ED0>;/
- <U1ED2>;<U1ED4>;<U1ED6>;<U1ED8>;<U1EDA>;<U1EDC>;<U1EDE>;<U1EE0>;<U1EE2>;/
- <U1EE4>;<U1EE6>;<U1EE8>;<U1EEA>;<U1EEC>;<U1EEE>;<U1EF0>;<U1EF2>;<U1EF4>;/
- <U1EF6>;<U1EF8>;<U1EFA>;<U1EFC>;<U1EFE>;<U1F08>..<U1F0F>;/
+ <U13A0>..<U13F5>;<U1C89>;<U1C90>..<U1CBA>;<U1CBD>..<U1CBF>;<U1E00>;/
+ <U1E02>;<U1E04>;<U1E06>;<U1E08>;<U1E0A>;<U1E0C>;<U1E0E>;<U1E10>;<U1E12>;/
+ <U1E14>;<U1E16>;<U1E18>;<U1E1A>;<U1E1C>;<U1E1E>;<U1E20>;<U1E22>;<U1E24>;/
+ <U1E26>;<U1E28>;<U1E2A>;<U1E2C>;<U1E2E>;<U1E30>;<U1E32>;<U1E34>;<U1E36>;/
+ <U1E38>;<U1E3A>;<U1E3C>;<U1E3E>;<U1E40>;<U1E42>;<U1E44>;<U1E46>;<U1E48>;/
+ <U1E4A>;<U1E4C>;<U1E4E>;<U1E50>;<U1E52>;<U1E54>;<U1E56>;<U1E58>;<U1E5A>;/
+ <U1E5C>;<U1E5E>;<U1E60>;<U1E62>;<U1E64>;<U1E66>;<U1E68>;<U1E6A>;<U1E6C>;/
+ <U1E6E>;<U1E70>;<U1E72>;<U1E74>;<U1E76>;<U1E78>;<U1E7A>;<U1E7C>;<U1E7E>;/
+ <U1E80>;<U1E82>;<U1E84>;<U1E86>;<U1E88>;<U1E8A>;<U1E8C>;<U1E8E>;<U1E90>;/
+ <U1E92>;<U1E94>;<U1E9E>;<U1EA0>;<U1EA2>;<U1EA4>;<U1EA6>;<U1EA8>;<U1EAA>;/
+ <U1EAC>;<U1EAE>;<U1EB0>;<U1EB2>;<U1EB4>;<U1EB6>;<U1EB8>;<U1EBA>;<U1EBC>;/
+ <U1EBE>;<U1EC0>;<U1EC2>;<U1EC4>;<U1EC6>;<U1EC8>;<U1ECA>;<U1ECC>;<U1ECE>;/
+ <U1ED0>;<U1ED2>;<U1ED4>;<U1ED6>;<U1ED8>;<U1EDA>;<U1EDC>;<U1EDE>;<U1EE0>;/
+ <U1EE2>;<U1EE4>;<U1EE6>;<U1EE8>;<U1EEA>;<U1EEC>;<U1EEE>;<U1EF0>;<U1EF2>;/
+ <U1EF4>;<U1EF6>;<U1EF8>;<U1EFA>;<U1EFC>;<U1EFE>;<U1F08>..<U1F0F>;/
<U1F18>..<U1F1D>;<U1F28>..<U1F2F>;<U1F38>..<U1F3F>;<U1F48>..<U1F4D>;/
<U1F59>;<U1F5B>;<U1F5D>;<U1F5F>;<U1F68>..<U1F6F>;<U1F88>..<U1F8F>;/
<U1F98>..<U1F9F>;<U1FA8>..<U1FAF>;<U1FB8>..<U1FBC>;<U1FC8>..<U1FCC>;/
@@ -210,11 +210,12 @@ upper /
<UA780>;<UA782>;<UA784>;<UA786>;<UA78B>;<UA78D>;<UA790>;<UA792>;<UA796>;/
<UA798>;<UA79A>;<UA79C>;<UA79E>;<UA7A0>;<UA7A2>;<UA7A4>;<UA7A6>;<UA7A8>;/
<UA7AA>..<UA7AE>;<UA7B0>..<UA7B4>;<UA7B6>;<UA7B8>;<UA7BA>;<UA7BC>;/
- <UA7BE>;<UA7C0>;<UA7C2>;<UA7C4>..<UA7C7>;<UA7C9>;<UA7D0>;<UA7D6>;<UA7D8>;/
- <UA7F5>;<UFF21>..<UFF3A>;<U00010400>..<U00010427>;/
- <U000104B0>..<U000104D3>;<U00010570>..<U0001057A>;/
- <U0001057C>..<U0001058A>;<U0001058C>..<U00010592>;/
- <U00010594>..<U00010595>;<U00010C80>..<U00010CB2>;/
+ <UA7BE>;<UA7C0>;<UA7C2>;<UA7C4>..<UA7C7>;<UA7C9>;<UA7CB>..<UA7CC>;/
+ <UA7D0>;<UA7D6>;<UA7D8>;<UA7DA>;<UA7DC>;<UA7F5>;<UFF21>..<UFF3A>;/
+ <U00010400>..<U00010427>;<U000104B0>..<U000104D3>;/
+ <U00010570>..<U0001057A>;<U0001057C>..<U0001058A>;/
+ <U0001058C>..<U00010592>;<U00010594>..<U00010595>;/
+ <U00010C80>..<U00010CB2>;<U00010D50>..<U00010D65>;/
<U000118A0>..<U000118BF>;<U00016E40>..<U00016E5F>;/
<U0001D400>..<U0001D419>;<U0001D434>..<U0001D44D>;/
<U0001D468>..<U0001D481>;<U0001D49C>;<U0001D49E>..<U0001D49F>;/
@@ -271,57 +272,58 @@ lower /
<U0507>;<U0509>;<U050B>;<U050D>;<U050F>;<U0511>;<U0513>;<U0515>;<U0517>;/
<U0519>;<U051B>;<U051D>;<U051F>;<U0521>;<U0523>;<U0525>;<U0527>;<U0529>;/
<U052B>;<U052D>;<U052F>;<U0560>..<U0588>;<U10D0>..<U10FA>;/
- <U10FC>..<U10FF>;<U13F8>..<U13FD>;<U1C80>..<U1C88>;<U1D00>..<U1DBF>;/
- <U1E01>;<U1E03>;<U1E05>;<U1E07>;<U1E09>;<U1E0B>;<U1E0D>;<U1E0F>;<U1E11>;/
- <U1E13>;<U1E15>;<U1E17>;<U1E19>;<U1E1B>;<U1E1D>;<U1E1F>;<U1E21>;<U1E23>;/
- <U1E25>;<U1E27>;<U1E29>;<U1E2B>;<U1E2D>;<U1E2F>;<U1E31>;<U1E33>;<U1E35>;/
- <U1E37>;<U1E39>;<U1E3B>;<U1E3D>;<U1E3F>;<U1E41>;<U1E43>;<U1E45>;<U1E47>;/
- <U1E49>;<U1E4B>;<U1E4D>;<U1E4F>;<U1E51>;<U1E53>;<U1E55>;<U1E57>;<U1E59>;/
- <U1E5B>;<U1E5D>;<U1E5F>;<U1E61>;<U1E63>;<U1E65>;<U1E67>;<U1E69>;<U1E6B>;/
- <U1E6D>;<U1E6F>;<U1E71>;<U1E73>;<U1E75>;<U1E77>;<U1E79>;<U1E7B>;<U1E7D>;/
- <U1E7F>;<U1E81>;<U1E83>;<U1E85>;<U1E87>;<U1E89>;<U1E8B>;<U1E8D>;<U1E8F>;/
- <U1E91>;<U1E93>;<U1E95>..<U1E9D>;<U1E9F>;<U1EA1>;<U1EA3>;<U1EA5>;<U1EA7>;/
- <U1EA9>;<U1EAB>;<U1EAD>;<U1EAF>;<U1EB1>;<U1EB3>;<U1EB5>;<U1EB7>;<U1EB9>;/
- <U1EBB>;<U1EBD>;<U1EBF>;<U1EC1>;<U1EC3>;<U1EC5>;<U1EC7>;<U1EC9>;<U1ECB>;/
- <U1ECD>;<U1ECF>;<U1ED1>;<U1ED3>;<U1ED5>;<U1ED7>;<U1ED9>;<U1EDB>;<U1EDD>;/
- <U1EDF>;<U1EE1>;<U1EE3>;<U1EE5>;<U1EE7>;<U1EE9>;<U1EEB>;<U1EED>;<U1EEF>;/
- <U1EF1>;<U1EF3>;<U1EF5>;<U1EF7>;<U1EF9>;<U1EFB>;<U1EFD>;<U1EFF>..<U1F07>;/
- <U1F10>..<U1F15>;<U1F20>..<U1F27>;<U1F30>..<U1F37>;<U1F40>..<U1F45>;/
- <U1F50>..<U1F57>;<U1F60>..<U1F67>;<U1F70>..<U1F7D>;<U1F80>..<U1F87>;/
- <U1F90>..<U1F97>;<U1FA0>..<U1FA7>;<U1FB0>..<U1FB4>;<U1FB6>..<U1FB7>;/
- <U1FBE>;<U1FC2>..<U1FC4>;<U1FC6>..<U1FC7>;<U1FD0>..<U1FD3>;/
- <U1FD6>..<U1FD7>;<U1FE0>..<U1FE7>;<U1FF2>..<U1FF4>;<U1FF6>..<U1FF7>;/
- <U2071>;<U207F>;<U2090>..<U209C>;<U210A>;<U210E>..<U210F>;<U2113>;/
- <U212F>;<U2134>;<U2139>;<U213C>..<U213D>;<U2146>..<U2149>;<U214E>;/
- <U2170>..<U217F>;<U2184>;<U24D0>..<U24E9>;<U2C30>..<U2C5F>;<U2C61>;/
- <U2C65>..<U2C66>;<U2C68>;<U2C6A>;<U2C6C>;<U2C71>;<U2C73>..<U2C74>;/
- <U2C76>..<U2C7D>;<U2C81>;<U2C83>;<U2C85>;<U2C87>;<U2C89>;<U2C8B>;<U2C8D>;/
- <U2C8F>;<U2C91>;<U2C93>;<U2C95>;<U2C97>;<U2C99>;<U2C9B>;<U2C9D>;<U2C9F>;/
- <U2CA1>;<U2CA3>;<U2CA5>;<U2CA7>;<U2CA9>;<U2CAB>;<U2CAD>;<U2CAF>;<U2CB1>;/
- <U2CB3>;<U2CB5>;<U2CB7>;<U2CB9>;<U2CBB>;<U2CBD>;<U2CBF>;<U2CC1>;<U2CC3>;/
- <U2CC5>;<U2CC7>;<U2CC9>;<U2CCB>;<U2CCD>;<U2CCF>;<U2CD1>;<U2CD3>;<U2CD5>;/
- <U2CD7>;<U2CD9>;<U2CDB>;<U2CDD>;<U2CDF>;<U2CE1>;<U2CE3>..<U2CE4>;<U2CEC>;/
- <U2CEE>;<U2CF3>;<U2D00>..<U2D25>;<U2D27>;<U2D2D>;<UA641>;<UA643>;<UA645>;/
- <UA647>;<UA649>;<UA64B>;<UA64D>;<UA64F>;<UA651>;<UA653>;<UA655>;<UA657>;/
- <UA659>;<UA65B>;<UA65D>;<UA65F>;<UA661>;<UA663>;<UA665>;<UA667>;<UA669>;/
- <UA66B>;<UA66D>;<UA681>;<UA683>;<UA685>;<UA687>;<UA689>;<UA68B>;<UA68D>;/
- <UA68F>;<UA691>;<UA693>;<UA695>;<UA697>;<UA699>;<UA69B>..<UA69D>;<UA723>;/
- <UA725>;<UA727>;<UA729>;<UA72B>;<UA72D>;<UA72F>..<UA731>;<UA733>;<UA735>;/
- <UA737>;<UA739>;<UA73B>;<UA73D>;<UA73F>;<UA741>;<UA743>;<UA745>;<UA747>;/
- <UA749>;<UA74B>;<UA74D>;<UA74F>;<UA751>;<UA753>;<UA755>;<UA757>;<UA759>;/
- <UA75B>;<UA75D>;<UA75F>;<UA761>;<UA763>;<UA765>;<UA767>;<UA769>;<UA76B>;/
- <UA76D>;<UA76F>..<UA778>;<UA77A>;<UA77C>;<UA77F>;<UA781>;<UA783>;<UA785>;/
- <UA787>;<UA78C>;<UA78E>;<UA791>;<UA793>..<UA795>;<UA797>;<UA799>;<UA79B>;/
- <UA79D>;<UA79F>;<UA7A1>;<UA7A3>;<UA7A5>;<UA7A7>;<UA7A9>;<UA7AF>;<UA7B5>;/
- <UA7B7>;<UA7B9>;<UA7BB>;<UA7BD>;<UA7BF>;<UA7C1>;<UA7C3>;<UA7C8>;<UA7CA>;/
- <UA7D1>;<UA7D3>;<UA7D5>;<UA7D7>;<UA7D9>;<UA7F2>..<UA7F4>;<UA7F6>;/
- <UA7F8>..<UA7FA>;<UAB30>..<UAB5A>;<UAB5C>..<UAB69>;<UAB70>..<UABBF>;/
- <UFB00>..<UFB06>;<UFB13>..<UFB17>;<UFF41>..<UFF5A>;/
- <U00010428>..<U0001044F>;<U000104D8>..<U000104FB>;/
- <U00010597>..<U000105A1>;<U000105A3>..<U000105B1>;/
- <U000105B3>..<U000105B9>;<U000105BB>..<U000105BC>;<U00010780>;/
- <U00010783>..<U00010785>;<U00010787>..<U000107B0>;/
- <U000107B2>..<U000107BA>;<U00010CC0>..<U00010CF2>;/
+ <U10FC>..<U10FF>;<U13F8>..<U13FD>;<U1C80>..<U1C88>;<U1C8A>;/
+ <U1D00>..<U1DBF>;<U1E01>;<U1E03>;<U1E05>;<U1E07>;<U1E09>;<U1E0B>;<U1E0D>;/
+ <U1E0F>;<U1E11>;<U1E13>;<U1E15>;<U1E17>;<U1E19>;<U1E1B>;<U1E1D>;<U1E1F>;/
+ <U1E21>;<U1E23>;<U1E25>;<U1E27>;<U1E29>;<U1E2B>;<U1E2D>;<U1E2F>;<U1E31>;/
+ <U1E33>;<U1E35>;<U1E37>;<U1E39>;<U1E3B>;<U1E3D>;<U1E3F>;<U1E41>;<U1E43>;/
+ <U1E45>;<U1E47>;<U1E49>;<U1E4B>;<U1E4D>;<U1E4F>;<U1E51>;<U1E53>;<U1E55>;/
+ <U1E57>;<U1E59>;<U1E5B>;<U1E5D>;<U1E5F>;<U1E61>;<U1E63>;<U1E65>;<U1E67>;/
+ <U1E69>;<U1E6B>;<U1E6D>;<U1E6F>;<U1E71>;<U1E73>;<U1E75>;<U1E77>;<U1E79>;/
+ <U1E7B>;<U1E7D>;<U1E7F>;<U1E81>;<U1E83>;<U1E85>;<U1E87>;<U1E89>;<U1E8B>;/
+ <U1E8D>;<U1E8F>;<U1E91>;<U1E93>;<U1E95>..<U1E9D>;<U1E9F>;<U1EA1>;<U1EA3>;/
+ <U1EA5>;<U1EA7>;<U1EA9>;<U1EAB>;<U1EAD>;<U1EAF>;<U1EB1>;<U1EB3>;<U1EB5>;/
+ <U1EB7>;<U1EB9>;<U1EBB>;<U1EBD>;<U1EBF>;<U1EC1>;<U1EC3>;<U1EC5>;<U1EC7>;/
+ <U1EC9>;<U1ECB>;<U1ECD>;<U1ECF>;<U1ED1>;<U1ED3>;<U1ED5>;<U1ED7>;<U1ED9>;/
+ <U1EDB>;<U1EDD>;<U1EDF>;<U1EE1>;<U1EE3>;<U1EE5>;<U1EE7>;<U1EE9>;<U1EEB>;/
+ <U1EED>;<U1EEF>;<U1EF1>;<U1EF3>;<U1EF5>;<U1EF7>;<U1EF9>;<U1EFB>;<U1EFD>;/
+ <U1EFF>..<U1F07>;<U1F10>..<U1F15>;<U1F20>..<U1F27>;<U1F30>..<U1F37>;/
+ <U1F40>..<U1F45>;<U1F50>..<U1F57>;<U1F60>..<U1F67>;<U1F70>..<U1F7D>;/
+ <U1F80>..<U1F87>;<U1F90>..<U1F97>;<U1FA0>..<U1FA7>;<U1FB0>..<U1FB4>;/
+ <U1FB6>..<U1FB7>;<U1FBE>;<U1FC2>..<U1FC4>;<U1FC6>..<U1FC7>;/
+ <U1FD0>..<U1FD3>;<U1FD6>..<U1FD7>;<U1FE0>..<U1FE7>;<U1FF2>..<U1FF4>;/
+ <U1FF6>..<U1FF7>;<U2071>;<U207F>;<U2090>..<U209C>;<U210A>;/
+ <U210E>..<U210F>;<U2113>;<U212F>;<U2134>;<U2139>;<U213C>..<U213D>;/
+ <U2146>..<U2149>;<U214E>;<U2170>..<U217F>;<U2184>;<U24D0>..<U24E9>;/
+ <U2C30>..<U2C5F>;<U2C61>;<U2C65>..<U2C66>;<U2C68>;<U2C6A>;<U2C6C>;/
+ <U2C71>;<U2C73>..<U2C74>;<U2C76>..<U2C7D>;<U2C81>;<U2C83>;<U2C85>;/
+ <U2C87>;<U2C89>;<U2C8B>;<U2C8D>;<U2C8F>;<U2C91>;<U2C93>;<U2C95>;<U2C97>;/
+ <U2C99>;<U2C9B>;<U2C9D>;<U2C9F>;<U2CA1>;<U2CA3>;<U2CA5>;<U2CA7>;<U2CA9>;/
+ <U2CAB>;<U2CAD>;<U2CAF>;<U2CB1>;<U2CB3>;<U2CB5>;<U2CB7>;<U2CB9>;<U2CBB>;/
+ <U2CBD>;<U2CBF>;<U2CC1>;<U2CC3>;<U2CC5>;<U2CC7>;<U2CC9>;<U2CCB>;<U2CCD>;/
+ <U2CCF>;<U2CD1>;<U2CD3>;<U2CD5>;<U2CD7>;<U2CD9>;<U2CDB>;<U2CDD>;<U2CDF>;/
+ <U2CE1>;<U2CE3>..<U2CE4>;<U2CEC>;<U2CEE>;<U2CF3>;<U2D00>..<U2D25>;/
+ <U2D27>;<U2D2D>;<UA641>;<UA643>;<UA645>;<UA647>;<UA649>;<UA64B>;<UA64D>;/
+ <UA64F>;<UA651>;<UA653>;<UA655>;<UA657>;<UA659>;<UA65B>;<UA65D>;<UA65F>;/
+ <UA661>;<UA663>;<UA665>;<UA667>;<UA669>;<UA66B>;<UA66D>;<UA681>;<UA683>;/
+ <UA685>;<UA687>;<UA689>;<UA68B>;<UA68D>;<UA68F>;<UA691>;<UA693>;<UA695>;/
+ <UA697>;<UA699>;<UA69B>..<UA69D>;<UA723>;<UA725>;<UA727>;<UA729>;<UA72B>;/
+ <UA72D>;<UA72F>..<UA731>;<UA733>;<UA735>;<UA737>;<UA739>;<UA73B>;<UA73D>;/
+ <UA73F>;<UA741>;<UA743>;<UA745>;<UA747>;<UA749>;<UA74B>;<UA74D>;<UA74F>;/
+ <UA751>;<UA753>;<UA755>;<UA757>;<UA759>;<UA75B>;<UA75D>;<UA75F>;<UA761>;/
+ <UA763>;<UA765>;<UA767>;<UA769>;<UA76B>;<UA76D>;<UA76F>..<UA778>;<UA77A>;/
+ <UA77C>;<UA77F>;<UA781>;<UA783>;<UA785>;<UA787>;<UA78C>;<UA78E>;<UA791>;/
+ <UA793>..<UA795>;<UA797>;<UA799>;<UA79B>;<UA79D>;<UA79F>;<UA7A1>;<UA7A3>;/
+ <UA7A5>;<UA7A7>;<UA7A9>;<UA7AF>;<UA7B5>;<UA7B7>;<UA7B9>;<UA7BB>;<UA7BD>;/
+ <UA7BF>;<UA7C1>;<UA7C3>;<UA7C8>;<UA7CA>;<UA7CD>;<UA7D1>;<UA7D3>;<UA7D5>;/
+ <UA7D7>;<UA7D9>;<UA7DB>;<UA7F2>..<UA7F4>;<UA7F6>;<UA7F8>..<UA7FA>;/
+ <UAB30>..<UAB5A>;<UAB5C>..<UAB69>;<UAB70>..<UABBF>;<UFB00>..<UFB06>;/
+ <UFB13>..<UFB17>;<UFF41>..<UFF5A>;<U00010428>..<U0001044F>;/
+ <U000104D8>..<U000104FB>;<U00010597>..<U000105A1>;/
+ <U000105A3>..<U000105B1>;<U000105B3>..<U000105B9>;/
+ <U000105BB>..<U000105BC>;<U00010780>;<U00010783>..<U00010785>;/
+ <U00010787>..<U000107B0>;<U000107B2>..<U000107BA>;/
+ <U00010CC0>..<U00010CF2>;<U00010D70>..<U00010D85>;/
<U000118C0>..<U000118DF>;<U00016E60>..<U00016E7F>;/
<U0001D41A>..<U0001D433>;<U0001D44E>..<U0001D454>;/
<U0001D456>..<U0001D467>;<U0001D482>..<U0001D49B>;/
@@ -345,7 +347,7 @@ lower /
alpha /
<U0041>..<U005A>;<U0061>..<U007A>;<U00AA>;<U00B5>;<U00BA>;/
<U00C0>..<U00D6>;<U00D8>..<U00F6>;<U00F8>..<U02C1>;<U02C6>..<U02D1>;/
- <U02E0>..<U02E4>;<U02EC>;<U02EE>;<U0345>;<U0370>..<U0374>;/
+ <U02E0>..<U02E4>;<U02EC>;<U02EE>;<U0345>;<U0363>..<U0374>;/
<U0376>..<U0377>;<U037A>..<U037D>;<U037F>;<U0386>;<U0388>..<U038A>;/
<U038C>;<U038E>..<U03A1>;<U03A3>..<U03F5>;<U03F7>..<U0481>;/
<U048A>..<U052F>;<U0531>..<U0556>;<U0559>;<U0560>..<U0588>;/
@@ -355,16 +357,16 @@ alpha /
<U06ED>..<U06FC>;<U06FF>;<U0710>..<U073F>;<U074D>..<U07B1>;/
<U07C0>..<U07EA>;<U07F4>..<U07F5>;<U07FA>;<U0800>..<U0817>;/
<U081A>..<U082C>;<U0840>..<U0858>;<U0860>..<U086A>;<U0870>..<U0887>;/
- <U0889>..<U088E>;<U08A0>..<U08C9>;<U08D4>..<U08DF>;<U08E3>..<U08E9>;/
- <U08F0>..<U093B>;<U093D>..<U094C>;<U094E>..<U0950>;<U0955>..<U0963>;/
- <U0966>..<U096F>;<U0971>..<U0983>;<U0985>..<U098C>;<U098F>..<U0990>;/
- <U0993>..<U09A8>;<U09AA>..<U09B0>;<U09B2>;<U09B6>..<U09B9>;/
- <U09BD>..<U09C4>;<U09C7>..<U09C8>;<U09CB>..<U09CC>;<U09CE>;<U09D7>;/
- <U09DC>..<U09DD>;<U09DF>..<U09E3>;<U09E6>..<U09F1>;<U09FC>;/
- <U0A01>..<U0A03>;<U0A05>..<U0A0A>;<U0A0F>..<U0A10>;<U0A13>..<U0A28>;/
- <U0A2A>..<U0A30>;<U0A32>..<U0A33>;<U0A35>..<U0A36>;<U0A38>..<U0A39>;/
- <U0A3E>..<U0A42>;<U0A47>..<U0A48>;<U0A4B>..<U0A4C>;<U0A51>;/
- <U0A59>..<U0A5C>;<U0A5E>;<U0A66>..<U0A75>;<U0A81>..<U0A83>;/
+ <U0889>..<U088E>;<U0897>;<U08A0>..<U08C9>;<U08D4>..<U08DF>;/
+ <U08E3>..<U08E9>;<U08F0>..<U093B>;<U093D>..<U094C>;<U094E>..<U0950>;/
+ <U0955>..<U0963>;<U0966>..<U096F>;<U0971>..<U0983>;<U0985>..<U098C>;/
+ <U098F>..<U0990>;<U0993>..<U09A8>;<U09AA>..<U09B0>;<U09B2>;/
+ <U09B6>..<U09B9>;<U09BD>..<U09C4>;<U09C7>..<U09C8>;<U09CB>..<U09CC>;/
+ <U09CE>;<U09D7>;<U09DC>..<U09DD>;<U09DF>..<U09E3>;<U09E6>..<U09F1>;/
+ <U09FC>;<U0A01>..<U0A03>;<U0A05>..<U0A0A>;<U0A0F>..<U0A10>;/
+ <U0A13>..<U0A28>;<U0A2A>..<U0A30>;<U0A32>..<U0A33>;<U0A35>..<U0A36>;/
+ <U0A38>..<U0A39>;<U0A3E>..<U0A42>;<U0A47>..<U0A48>;<U0A4B>..<U0A4C>;/
+ <U0A51>;<U0A59>..<U0A5C>;<U0A5E>;<U0A66>..<U0A75>;<U0A81>..<U0A83>;/
<U0A85>..<U0A8D>;<U0A8F>..<U0A91>;<U0A93>..<U0AA8>;<U0AAA>..<U0AB0>;/
<U0AB2>..<U0AB3>;<U0AB5>..<U0AB9>;<U0ABD>..<U0AC5>;<U0AC7>..<U0AC9>;/
<U0ACB>..<U0ACC>;<U0AD0>;<U0AE0>..<U0AE3>;<U0AE6>..<U0AEF>;/
@@ -410,9 +412,9 @@ alpha /
<U1A90>..<U1A99>;<U1AA7>;<U1ABF>..<U1AC0>;<U1ACC>..<U1ACE>;/
<U1B00>..<U1B33>;<U1B35>..<U1B43>;<U1B45>..<U1B4C>;<U1B50>..<U1B59>;/
<U1B80>..<U1BA9>;<U1BAC>..<U1BE5>;<U1BE7>..<U1BF1>;<U1C00>..<U1C36>;/
- <U1C40>..<U1C49>;<U1C4D>..<U1C7D>;<U1C80>..<U1C88>;<U1C90>..<U1CBA>;/
+ <U1C40>..<U1C49>;<U1C4D>..<U1C7D>;<U1C80>..<U1C8A>;<U1C90>..<U1CBA>;/
<U1CBD>..<U1CBF>;<U1CE9>..<U1CEC>;<U1CEE>..<U1CF3>;<U1CF5>..<U1CF6>;/
- <U1CFA>;<U1D00>..<U1DBF>;<U1DE7>..<U1DF4>;<U1E00>..<U1F15>;/
+ <U1CFA>;<U1D00>..<U1DBF>;<U1DD3>..<U1DF4>;<U1E00>..<U1F15>;/
<U1F18>..<U1F1D>;<U1F20>..<U1F45>;<U1F48>..<U1F4D>;<U1F50>..<U1F57>;/
<U1F59>;<U1F5B>;<U1F5D>;<U1F5F>..<U1F7D>;<U1F80>..<U1FB4>;/
<U1FB6>..<U1FBC>;<U1FBE>;<U1FC2>..<U1FC4>;<U1FC6>..<U1FCC>;/
@@ -430,8 +432,8 @@ alpha /
<U30FC>..<U30FF>;<U3105>..<U312F>;<U3131>..<U318E>;<U31A0>..<U31BF>;/
<U31F0>..<U31FF>;<U3400>..<U4DBF>;<U4E00>..<UA48C>;<UA4D0>..<UA4FD>;/
<UA500>..<UA60C>;<UA610>..<UA62B>;<UA640>..<UA66E>;<UA674>..<UA67B>;/
- <UA67F>..<UA6EF>;<UA717>..<UA71F>;<UA722>..<UA788>;<UA78B>..<UA7CA>;/
- <UA7D0>..<UA7D1>;<UA7D3>;<UA7D5>..<UA7D9>;<UA7F2>..<UA805>;/
+ <UA67F>..<UA6EF>;<UA717>..<UA71F>;<UA722>..<UA788>;<UA78B>..<UA7CD>;/
+ <UA7D0>..<UA7D1>;<UA7D3>;<UA7D5>..<UA7DC>;<UA7F2>..<UA805>;/
<UA807>..<UA827>;<UA840>..<UA873>;<UA880>..<UA8C3>;<UA8C5>;/
<UA8D0>..<UA8D9>;<UA8F2>..<UA8F7>;<UA8FB>;<UA8FD>..<UA92A>;/
<UA930>..<UA952>;<UA960>..<UA97C>;<UA980>..<UA9B2>;<UA9B4>..<UA9BF>;/
@@ -462,26 +464,28 @@ alpha /
<U0001057C>..<U0001058A>;<U0001058C>..<U00010592>;/
<U00010594>..<U00010595>;<U00010597>..<U000105A1>;/
<U000105A3>..<U000105B1>;<U000105B3>..<U000105B9>;/
- <U000105BB>..<U000105BC>;<U00010600>..<U00010736>;/
- <U00010740>..<U00010755>;<U00010760>..<U00010767>;/
- <U00010780>..<U00010785>;<U00010787>..<U000107B0>;/
- <U000107B2>..<U000107BA>;<U00010800>..<U00010805>;<U00010808>;/
- <U0001080A>..<U00010835>;<U00010837>..<U00010838>;<U0001083C>;/
- <U0001083F>..<U00010855>;<U00010860>..<U00010876>;/
- <U00010880>..<U0001089E>;<U000108E0>..<U000108F2>;/
- <U000108F4>..<U000108F5>;<U00010900>..<U00010915>;/
- <U00010920>..<U00010939>;<U00010980>..<U000109B7>;/
- <U000109BE>..<U000109BF>;<U00010A00>..<U00010A03>;/
- <U00010A05>..<U00010A06>;<U00010A0C>..<U00010A13>;/
- <U00010A15>..<U00010A17>;<U00010A19>..<U00010A35>;/
- <U00010A60>..<U00010A7C>;<U00010A80>..<U00010A9C>;/
- <U00010AC0>..<U00010AC7>;<U00010AC9>..<U00010AE4>;/
- <U00010B00>..<U00010B35>;<U00010B40>..<U00010B55>;/
- <U00010B60>..<U00010B72>;<U00010B80>..<U00010B91>;/
- <U00010C00>..<U00010C48>;<U00010C80>..<U00010CB2>;/
- <U00010CC0>..<U00010CF2>;<U00010D00>..<U00010D27>;/
- <U00010D30>..<U00010D39>;<U00010E80>..<U00010EA9>;/
- <U00010EAB>..<U00010EAC>;<U00010EB0>..<U00010EB1>;/
+ <U000105BB>..<U000105BC>;<U000105C0>..<U000105F3>;/
+ <U00010600>..<U00010736>;<U00010740>..<U00010755>;/
+ <U00010760>..<U00010767>;<U00010780>..<U00010785>;/
+ <U00010787>..<U000107B0>;<U000107B2>..<U000107BA>;/
+ <U00010800>..<U00010805>;<U00010808>;<U0001080A>..<U00010835>;/
+ <U00010837>..<U00010838>;<U0001083C>;<U0001083F>..<U00010855>;/
+ <U00010860>..<U00010876>;<U00010880>..<U0001089E>;/
+ <U000108E0>..<U000108F2>;<U000108F4>..<U000108F5>;/
+ <U00010900>..<U00010915>;<U00010920>..<U00010939>;/
+ <U00010980>..<U000109B7>;<U000109BE>..<U000109BF>;/
+ <U00010A00>..<U00010A03>;<U00010A05>..<U00010A06>;/
+ <U00010A0C>..<U00010A13>;<U00010A15>..<U00010A17>;/
+ <U00010A19>..<U00010A35>;<U00010A60>..<U00010A7C>;/
+ <U00010A80>..<U00010A9C>;<U00010AC0>..<U00010AC7>;/
+ <U00010AC9>..<U00010AE4>;<U00010B00>..<U00010B35>;/
+ <U00010B40>..<U00010B55>;<U00010B60>..<U00010B72>;/
+ <U00010B80>..<U00010B91>;<U00010C00>..<U00010C48>;/
+ <U00010C80>..<U00010CB2>;<U00010CC0>..<U00010CF2>;/
+ <U00010D00>..<U00010D27>;<U00010D30>..<U00010D39>;/
+ <U00010D40>..<U00010D65>;<U00010D69>;<U00010D6F>..<U00010D85>;/
+ <U00010E80>..<U00010EA9>;<U00010EAB>..<U00010EAC>;/
+ <U00010EB0>..<U00010EB1>;<U00010EC2>..<U00010EC4>;<U00010EFC>;/
<U00010F00>..<U00010F1C>;<U00010F27>;<U00010F30>..<U00010F45>;/
<U00010F70>..<U00010F81>;<U00010FB0>..<U00010FC4>;/
<U00010FE0>..<U00010FF6>;<U00011000>..<U00011045>;/
@@ -501,83 +505,92 @@ alpha /
<U00011332>..<U00011333>;<U00011335>..<U00011339>;/
<U0001133D>..<U00011344>;<U00011347>..<U00011348>;/
<U0001134B>..<U0001134C>;<U00011350>;<U00011357>;/
- <U0001135D>..<U00011363>;<U00011400>..<U00011441>;/
- <U00011443>..<U00011445>;<U00011447>..<U0001144A>;/
- <U00011450>..<U00011459>;<U0001145F>..<U00011461>;/
- <U00011480>..<U000114C1>;<U000114C4>..<U000114C5>;<U000114C7>;/
- <U000114D0>..<U000114D9>;<U00011580>..<U000115B5>;/
- <U000115B8>..<U000115BE>;<U000115D8>..<U000115DD>;/
- <U00011600>..<U0001163E>;<U00011640>;<U00011644>;/
- <U00011650>..<U00011659>;<U00011680>..<U000116B5>;<U000116B8>;/
- <U000116C0>..<U000116C9>;<U00011700>..<U0001171A>;/
- <U0001171D>..<U0001172A>;<U00011730>..<U00011739>;/
- <U00011740>..<U00011746>;<U00011800>..<U00011838>;/
- <U000118A0>..<U000118E9>;<U000118FF>..<U00011906>;<U00011909>;/
- <U0001190C>..<U00011913>;<U00011915>..<U00011916>;/
- <U00011918>..<U00011935>;<U00011937>..<U00011938>;/
- <U0001193B>..<U0001193C>;<U0001193F>..<U00011942>;/
- <U00011950>..<U00011959>;<U000119A0>..<U000119A7>;/
- <U000119AA>..<U000119D7>;<U000119DA>..<U000119DF>;<U000119E1>;/
- <U000119E3>..<U000119E4>;<U00011A00>..<U00011A32>;/
- <U00011A35>..<U00011A3E>;<U00011A50>..<U00011A97>;<U00011A9D>;/
- <U00011AB0>..<U00011AF8>;<U00011C00>..<U00011C08>;/
- <U00011C0A>..<U00011C36>;<U00011C38>..<U00011C3E>;<U00011C40>;/
- <U00011C50>..<U00011C59>;<U00011C72>..<U00011C8F>;/
- <U00011C92>..<U00011CA7>;<U00011CA9>..<U00011CB6>;/
- <U00011D00>..<U00011D06>;<U00011D08>..<U00011D09>;/
- <U00011D0B>..<U00011D36>;<U00011D3A>;<U00011D3C>..<U00011D3D>;/
- <U00011D3F>..<U00011D41>;<U00011D43>;<U00011D46>..<U00011D47>;/
- <U00011D50>..<U00011D59>;<U00011D60>..<U00011D65>;/
- <U00011D67>..<U00011D68>;<U00011D6A>..<U00011D8E>;/
- <U00011D90>..<U00011D91>;<U00011D93>..<U00011D96>;<U00011D98>;/
- <U00011DA0>..<U00011DA9>;<U00011EE0>..<U00011EF6>;/
- <U00011F00>..<U00011F10>;<U00011F12>..<U00011F3A>;/
- <U00011F3E>..<U00011F40>;<U00011F50>..<U00011F59>;<U00011FB0>;/
- <U00012000>..<U00012399>;<U00012400>..<U0001246E>;/
- <U00012480>..<U00012543>;<U00012F90>..<U00012FF0>;/
- <U00013000>..<U0001342F>;<U00013441>..<U00013446>;/
- <U00014400>..<U00014646>;<U00016800>..<U00016A38>;/
+ <U0001135D>..<U00011363>;<U00011380>..<U00011389>;<U0001138B>;/
+ <U0001138E>;<U00011390>..<U000113B5>;<U000113B7>..<U000113C0>;/
+ <U000113C2>;<U000113C5>;<U000113C7>..<U000113CA>;/
+ <U000113CC>..<U000113CD>;<U000113D1>;<U000113D3>;/
+ <U00011400>..<U00011441>;<U00011443>..<U00011445>;/
+ <U00011447>..<U0001144A>;<U00011450>..<U00011459>;/
+ <U0001145F>..<U00011461>;<U00011480>..<U000114C1>;/
+ <U000114C4>..<U000114C5>;<U000114C7>;<U000114D0>..<U000114D9>;/
+ <U00011580>..<U000115B5>;<U000115B8>..<U000115BE>;/
+ <U000115D8>..<U000115DD>;<U00011600>..<U0001163E>;<U00011640>;/
+ <U00011644>;<U00011650>..<U00011659>;<U00011680>..<U000116B5>;/
+ <U000116B8>;<U000116C0>..<U000116C9>;<U000116D0>..<U000116E3>;/
+ <U00011700>..<U0001171A>;<U0001171D>..<U0001172A>;/
+ <U00011730>..<U00011739>;<U00011740>..<U00011746>;/
+ <U00011800>..<U00011838>;<U000118A0>..<U000118E9>;/
+ <U000118FF>..<U00011906>;<U00011909>;<U0001190C>..<U00011913>;/
+ <U00011915>..<U00011916>;<U00011918>..<U00011935>;/
+ <U00011937>..<U00011938>;<U0001193B>..<U0001193C>;/
+ <U0001193F>..<U00011942>;<U00011950>..<U00011959>;/
+ <U000119A0>..<U000119A7>;<U000119AA>..<U000119D7>;/
+ <U000119DA>..<U000119DF>;<U000119E1>;<U000119E3>..<U000119E4>;/
+ <U00011A00>..<U00011A32>;<U00011A35>..<U00011A3E>;/
+ <U00011A50>..<U00011A97>;<U00011A9D>;<U00011AB0>..<U00011AF8>;/
+ <U00011BC0>..<U00011BE0>;<U00011BF0>..<U00011BF9>;/
+ <U00011C00>..<U00011C08>;<U00011C0A>..<U00011C36>;/
+ <U00011C38>..<U00011C3E>;<U00011C40>;<U00011C50>..<U00011C59>;/
+ <U00011C72>..<U00011C8F>;<U00011C92>..<U00011CA7>;/
+ <U00011CA9>..<U00011CB6>;<U00011D00>..<U00011D06>;/
+ <U00011D08>..<U00011D09>;<U00011D0B>..<U00011D36>;<U00011D3A>;/
+ <U00011D3C>..<U00011D3D>;<U00011D3F>..<U00011D41>;<U00011D43>;/
+ <U00011D46>..<U00011D47>;<U00011D50>..<U00011D59>;/
+ <U00011D60>..<U00011D65>;<U00011D67>..<U00011D68>;/
+ <U00011D6A>..<U00011D8E>;<U00011D90>..<U00011D91>;/
+ <U00011D93>..<U00011D96>;<U00011D98>;<U00011DA0>..<U00011DA9>;/
+ <U00011EE0>..<U00011EF6>;<U00011F00>..<U00011F10>;/
+ <U00011F12>..<U00011F3A>;<U00011F3E>..<U00011F40>;/
+ <U00011F50>..<U00011F59>;<U00011FB0>;<U00012000>..<U00012399>;/
+ <U00012400>..<U0001246E>;<U00012480>..<U00012543>;/
+ <U00012F90>..<U00012FF0>;<U00013000>..<U0001342F>;/
+ <U00013441>..<U00013446>;<U00013460>..<U000143FA>;/
+ <U00014400>..<U00014646>;<U00016100>..<U0001612E>;/
+ <U00016130>..<U00016139>;<U00016800>..<U00016A38>;/
<U00016A40>..<U00016A5E>;<U00016A60>..<U00016A69>;/
<U00016A70>..<U00016ABE>;<U00016AC0>..<U00016AC9>;/
<U00016AD0>..<U00016AED>;<U00016B00>..<U00016B2F>;/
<U00016B40>..<U00016B43>;<U00016B50>..<U00016B59>;/
<U00016B63>..<U00016B77>;<U00016B7D>..<U00016B8F>;/
+ <U00016D40>..<U00016D6C>;<U00016D70>..<U00016D79>;/
<U00016E40>..<U00016E7F>;<U00016F00>..<U00016F4A>;/
<U00016F4F>..<U00016F87>;<U00016F8F>..<U00016F9F>;/
<U00016FE0>..<U00016FE1>;<U00016FE3>;<U00016FF0>..<U00016FF1>;/
<U00017000>..<U000187F7>;<U00018800>..<U00018CD5>;/
- <U00018D00>..<U00018D08>;<U0001AFF0>..<U0001AFF3>;/
+ <U00018CFF>..<U00018D08>;<U0001AFF0>..<U0001AFF3>;/
<U0001AFF5>..<U0001AFFB>;<U0001AFFD>..<U0001AFFE>;/
<U0001B000>..<U0001B122>;<U0001B132>;<U0001B150>..<U0001B152>;/
<U0001B155>;<U0001B164>..<U0001B167>;<U0001B170>..<U0001B2FB>;/
<U0001BC00>..<U0001BC6A>;<U0001BC70>..<U0001BC7C>;/
<U0001BC80>..<U0001BC88>;<U0001BC90>..<U0001BC99>;<U0001BC9E>;/
- <U0001D400>..<U0001D454>;<U0001D456>..<U0001D49C>;/
- <U0001D49E>..<U0001D49F>;<U0001D4A2>;<U0001D4A5>..<U0001D4A6>;/
- <U0001D4A9>..<U0001D4AC>;<U0001D4AE>..<U0001D4B9>;<U0001D4BB>;/
- <U0001D4BD>..<U0001D4C3>;<U0001D4C5>..<U0001D505>;/
- <U0001D507>..<U0001D50A>;<U0001D50D>..<U0001D514>;/
- <U0001D516>..<U0001D51C>;<U0001D51E>..<U0001D539>;/
- <U0001D53B>..<U0001D53E>;<U0001D540>..<U0001D544>;<U0001D546>;/
- <U0001D54A>..<U0001D550>;<U0001D552>..<U0001D6A5>;/
- <U0001D6A8>..<U0001D6C0>;<U0001D6C2>..<U0001D6DA>;/
- <U0001D6DC>..<U0001D6FA>;<U0001D6FC>..<U0001D714>;/
- <U0001D716>..<U0001D734>;<U0001D736>..<U0001D74E>;/
- <U0001D750>..<U0001D76E>;<U0001D770>..<U0001D788>;/
- <U0001D78A>..<U0001D7A8>;<U0001D7AA>..<U0001D7C2>;/
- <U0001D7C4>..<U0001D7CB>;<U0001D7CE>..<U0001D7FF>;/
- <U0001DF00>..<U0001DF1E>;<U0001DF25>..<U0001DF2A>;/
- <U0001E000>..<U0001E006>;<U0001E008>..<U0001E018>;/
- <U0001E01B>..<U0001E021>;<U0001E023>..<U0001E024>;/
- <U0001E026>..<U0001E02A>;<U0001E030>..<U0001E06D>;<U0001E08F>;/
- <U0001E100>..<U0001E12C>;<U0001E137>..<U0001E13D>;/
- <U0001E140>..<U0001E149>;<U0001E14E>;<U0001E290>..<U0001E2AD>;/
- <U0001E2C0>..<U0001E2EB>;<U0001E2F0>..<U0001E2F9>;/
- <U0001E4D0>..<U0001E4EB>;<U0001E4F0>..<U0001E4F9>;/
- <U0001E7E0>..<U0001E7E6>;<U0001E7E8>..<U0001E7EB>;/
- <U0001E7ED>..<U0001E7EE>;<U0001E7F0>..<U0001E7FE>;/
- <U0001E800>..<U0001E8C4>;<U0001E900>..<U0001E943>;<U0001E947>;/
- <U0001E94B>;<U0001E950>..<U0001E959>;<U0001EE00>..<U0001EE03>;/
+ <U0001CCF0>..<U0001CCF9>;<U0001D400>..<U0001D454>;/
+ <U0001D456>..<U0001D49C>;<U0001D49E>..<U0001D49F>;<U0001D4A2>;/
+ <U0001D4A5>..<U0001D4A6>;<U0001D4A9>..<U0001D4AC>;/
+ <U0001D4AE>..<U0001D4B9>;<U0001D4BB>;<U0001D4BD>..<U0001D4C3>;/
+ <U0001D4C5>..<U0001D505>;<U0001D507>..<U0001D50A>;/
+ <U0001D50D>..<U0001D514>;<U0001D516>..<U0001D51C>;/
+ <U0001D51E>..<U0001D539>;<U0001D53B>..<U0001D53E>;/
+ <U0001D540>..<U0001D544>;<U0001D546>;<U0001D54A>..<U0001D550>;/
+ <U0001D552>..<U0001D6A5>;<U0001D6A8>..<U0001D6C0>;/
+ <U0001D6C2>..<U0001D6DA>;<U0001D6DC>..<U0001D6FA>;/
+ <U0001D6FC>..<U0001D714>;<U0001D716>..<U0001D734>;/
+ <U0001D736>..<U0001D74E>;<U0001D750>..<U0001D76E>;/
+ <U0001D770>..<U0001D788>;<U0001D78A>..<U0001D7A8>;/
+ <U0001D7AA>..<U0001D7C2>;<U0001D7C4>..<U0001D7CB>;/
+ <U0001D7CE>..<U0001D7FF>;<U0001DF00>..<U0001DF1E>;/
+ <U0001DF25>..<U0001DF2A>;<U0001E000>..<U0001E006>;/
+ <U0001E008>..<U0001E018>;<U0001E01B>..<U0001E021>;/
+ <U0001E023>..<U0001E024>;<U0001E026>..<U0001E02A>;/
+ <U0001E030>..<U0001E06D>;<U0001E08F>;<U0001E100>..<U0001E12C>;/
+ <U0001E137>..<U0001E13D>;<U0001E140>..<U0001E149>;<U0001E14E>;/
+ <U0001E290>..<U0001E2AD>;<U0001E2C0>..<U0001E2EB>;/
+ <U0001E2F0>..<U0001E2F9>;<U0001E4D0>..<U0001E4EB>;/
+ <U0001E4F0>..<U0001E4F9>;<U0001E5D0>..<U0001E5ED>;/
+ <U0001E5F0>..<U0001E5FA>;<U0001E7E0>..<U0001E7E6>;/
+ <U0001E7E8>..<U0001E7EB>;<U0001E7ED>..<U0001E7EE>;/
+ <U0001E7F0>..<U0001E7FE>;<U0001E800>..<U0001E8C4>;/
+ <U0001E900>..<U0001E943>;<U0001E947>;<U0001E94B>;/
+ <U0001E950>..<U0001E959>;<U0001EE00>..<U0001EE03>;/
<U0001EE05>..<U0001EE1F>;<U0001EE21>..<U0001EE22>;<U0001EE24>;/
<U0001EE27>;<U0001EE29>..<U0001EE32>;<U0001EE34>..<U0001EE37>;/
<U0001EE39>;<U0001EE3B>;<U0001EE42>;<U0001EE47>;<U0001EE49>;<U0001EE4B>;/
@@ -618,7 +631,7 @@ punct /
<U0021>..<U002F>;<U003A>..<U0040>;<U005B>..<U0060>;<U007B>..<U007E>;/
<U00A0>..<U00A9>;<U00AB>..<U00B4>;<U00B6>..<U00B9>;<U00BB>..<U00BF>;/
<U00D7>;<U00F7>;<U02C2>..<U02C5>;<U02D2>..<U02DF>;<U02E5>..<U02EB>;/
- <U02ED>;<U02EF>..<U0344>;<U0346>..<U036F>;<U0375>;<U037E>;/
+ <U02ED>;<U02EF>..<U0344>;<U0346>..<U0362>;<U0375>;<U037E>;/
<U0384>..<U0385>;<U0387>;<U03F6>;<U0482>..<U0489>;<U055A>..<U055F>;/
<U0589>..<U058A>;<U058D>..<U058F>;<U0591>..<U05AF>;<U05BE>;<U05C0>;/
<U05C3>;<U05C6>;<U05F3>..<U05F4>;<U0600>..<U060F>;<U061B>..<U061F>;/
@@ -643,44 +656,45 @@ punct /
<U17DD>;<U17F0>..<U17F9>;<U1800>..<U180F>;<U1939>..<U193B>;<U1940>;/
<U1944>..<U1945>;<U19DA>;<U19DE>..<U19FF>;<U1A1E>..<U1A1F>;<U1A60>;/
<U1A75>..<U1A7C>;<U1A7F>;<U1AA0>..<U1AA6>;<U1AA8>..<U1AAD>;/
- <U1AB0>..<U1ABE>;<U1AC1>..<U1ACB>;<U1B34>;<U1B44>;<U1B5A>..<U1B7E>;/
- <U1BAA>..<U1BAB>;<U1BE6>;<U1BF2>..<U1BF3>;<U1BFC>..<U1BFF>;<U1C37>;/
- <U1C3B>..<U1C3F>;<U1C7E>..<U1C7F>;<U1CC0>..<U1CC7>;<U1CD0>..<U1CE8>;/
- <U1CED>;<U1CF4>;<U1CF7>..<U1CF9>;<U1DC0>..<U1DE6>;<U1DF5>..<U1DFF>;/
- <U1FBD>;<U1FBF>..<U1FC1>;<U1FCD>..<U1FCF>;<U1FDD>..<U1FDF>;/
- <U1FED>..<U1FEF>;<U1FFD>..<U1FFE>;<U2007>;<U200B>..<U2027>;/
- <U202A>..<U205E>;<U2060>..<U2064>;<U2066>..<U2070>;<U2074>..<U207E>;/
- <U2080>..<U208E>;<U20A0>..<U20C0>;<U20D0>..<U20F0>;<U2100>..<U2101>;/
- <U2103>..<U2106>;<U2108>..<U2109>;<U2114>;<U2116>..<U2118>;/
- <U211E>..<U2123>;<U2125>;<U2127>;<U2129>;<U212E>;<U213A>..<U213B>;/
- <U2140>..<U2144>;<U214A>..<U214D>;<U214F>..<U215F>;<U2189>..<U218B>;/
- <U2190>..<U2426>;<U2440>..<U244A>;<U2460>..<U24B5>;<U24EA>..<U2B73>;/
- <U2B76>..<U2B95>;<U2B97>..<U2BFF>;<U2CE5>..<U2CEA>;<U2CEF>..<U2CF1>;/
- <U2CF9>..<U2CFF>;<U2D70>;<U2D7F>;<U2E00>..<U2E2E>;<U2E30>..<U2E5D>;/
- <U2E80>..<U2E99>;<U2E9B>..<U2EF3>;<U2F00>..<U2FD5>;<U2FF0>..<U2FFF>;/
- <U3001>..<U3004>;<U3008>..<U3020>;<U302A>..<U3030>;<U3036>..<U3037>;/
- <U303D>..<U303F>;<U3099>..<U309C>;<U30A0>;<U30FB>;<U3190>..<U319F>;/
- <U31C0>..<U31E3>;<U31EF>;<U3200>..<U321E>;<U3220>..<U33FF>;/
- <U4DC0>..<U4DFF>;<UA490>..<UA4C6>;<UA4FE>..<UA4FF>;<UA60D>..<UA60F>;/
- <UA66F>..<UA673>;<UA67C>..<UA67E>;<UA6F0>..<UA6F7>;<UA700>..<UA716>;/
- <UA720>..<UA721>;<UA789>..<UA78A>;<UA806>;<UA828>..<UA82C>;/
- <UA830>..<UA839>;<UA874>..<UA877>;<UA8C4>;<UA8CE>..<UA8CF>;/
- <UA8E0>..<UA8F1>;<UA8F8>..<UA8FA>;<UA8FC>;<UA92B>..<UA92F>;<UA953>;/
- <UA95F>;<UA9B3>;<UA9C0>..<UA9CD>;<UA9DE>..<UA9DF>;<UAA5C>..<UAA5F>;/
- <UAA77>..<UAA79>;<UAABF>;<UAAC1>;<UAADE>..<UAADF>;<UAAF0>..<UAAF1>;/
- <UAAF6>;<UAB5B>;<UAB6A>..<UAB6B>;<UABEB>..<UABED>;<UE000>..<UF8FF>;/
- <UFB29>;<UFBB2>..<UFBC2>;<UFD3E>..<UFD4F>;<UFDCF>;<UFDFC>..<UFE19>;/
- <UFE20>..<UFE52>;<UFE54>..<UFE66>;<UFE68>..<UFE6B>;<UFEFF>;/
- <UFF01>..<UFF0F>;<UFF1A>..<UFF20>;<UFF3B>..<UFF40>;<UFF5B>..<UFF65>;/
- <UFFE0>..<UFFE6>;<UFFE8>..<UFFEE>;<UFFF9>..<UFFFD>;/
- <U00010100>..<U00010102>;<U00010107>..<U00010133>;/
- <U00010137>..<U0001013F>;<U00010175>..<U0001018E>;/
- <U00010190>..<U0001019C>;<U000101A0>;<U000101D0>..<U000101FD>;/
- <U000102E0>..<U000102FB>;<U00010320>..<U00010323>;<U0001039F>;/
- <U000103D0>;<U0001056F>;<U00010857>..<U0001085F>;/
- <U00010877>..<U0001087F>;<U000108A7>..<U000108AF>;/
- <U000108FB>..<U000108FF>;<U00010916>..<U0001091B>;<U0001091F>;/
- <U0001093F>;<U000109BC>..<U000109BD>;<U000109C0>..<U000109CF>;/
+ <U1AB0>..<U1ABE>;<U1AC1>..<U1ACB>;<U1B34>;<U1B44>;<U1B4E>..<U1B4F>;/
+ <U1B5A>..<U1B7F>;<U1BAA>..<U1BAB>;<U1BE6>;<U1BF2>..<U1BF3>;/
+ <U1BFC>..<U1BFF>;<U1C37>;<U1C3B>..<U1C3F>;<U1C7E>..<U1C7F>;/
+ <U1CC0>..<U1CC7>;<U1CD0>..<U1CE8>;<U1CED>;<U1CF4>;<U1CF7>..<U1CF9>;/
+ <U1DC0>..<U1DD2>;<U1DF5>..<U1DFF>;<U1FBD>;<U1FBF>..<U1FC1>;/
+ <U1FCD>..<U1FCF>;<U1FDD>..<U1FDF>;<U1FED>..<U1FEF>;<U1FFD>..<U1FFE>;/
+ <U2007>;<U200B>..<U2027>;<U202A>..<U205E>;<U2060>..<U2064>;/
+ <U2066>..<U2070>;<U2074>..<U207E>;<U2080>..<U208E>;<U20A0>..<U20C0>;/
+ <U20D0>..<U20F0>;<U2100>..<U2101>;<U2103>..<U2106>;<U2108>..<U2109>;/
+ <U2114>;<U2116>..<U2118>;<U211E>..<U2123>;<U2125>;<U2127>;<U2129>;/
+ <U212E>;<U213A>..<U213B>;<U2140>..<U2144>;<U214A>..<U214D>;/
+ <U214F>..<U215F>;<U2189>..<U218B>;<U2190>..<U2429>;<U2440>..<U244A>;/
+ <U2460>..<U24B5>;<U24EA>..<U2B73>;<U2B76>..<U2B95>;<U2B97>..<U2BFF>;/
+ <U2CE5>..<U2CEA>;<U2CEF>..<U2CF1>;<U2CF9>..<U2CFF>;<U2D70>;<U2D7F>;/
+ <U2E00>..<U2E2E>;<U2E30>..<U2E5D>;<U2E80>..<U2E99>;<U2E9B>..<U2EF3>;/
+ <U2F00>..<U2FD5>;<U2FF0>..<U2FFF>;<U3001>..<U3004>;<U3008>..<U3020>;/
+ <U302A>..<U3030>;<U3036>..<U3037>;<U303D>..<U303F>;<U3099>..<U309C>;/
+ <U30A0>;<U30FB>;<U3190>..<U319F>;<U31C0>..<U31E5>;<U31EF>;/
+ <U3200>..<U321E>;<U3220>..<U33FF>;<U4DC0>..<U4DFF>;<UA490>..<UA4C6>;/
+ <UA4FE>..<UA4FF>;<UA60D>..<UA60F>;<UA66F>..<UA673>;<UA67C>..<UA67E>;/
+ <UA6F0>..<UA6F7>;<UA700>..<UA716>;<UA720>..<UA721>;<UA789>..<UA78A>;/
+ <UA806>;<UA828>..<UA82C>;<UA830>..<UA839>;<UA874>..<UA877>;<UA8C4>;/
+ <UA8CE>..<UA8CF>;<UA8E0>..<UA8F1>;<UA8F8>..<UA8FA>;<UA8FC>;/
+ <UA92B>..<UA92F>;<UA953>;<UA95F>;<UA9B3>;<UA9C0>..<UA9CD>;/
+ <UA9DE>..<UA9DF>;<UAA5C>..<UAA5F>;<UAA77>..<UAA79>;<UAABF>;<UAAC1>;/
+ <UAADE>..<UAADF>;<UAAF0>..<UAAF1>;<UAAF6>;<UAB5B>;<UAB6A>..<UAB6B>;/
+ <UABEB>..<UABED>;<UE000>..<UF8FF>;<UFB29>;<UFBB2>..<UFBC2>;/
+ <UFD3E>..<UFD4F>;<UFDCF>;<UFDFC>..<UFE19>;<UFE20>..<UFE52>;/
+ <UFE54>..<UFE66>;<UFE68>..<UFE6B>;<UFEFF>;<UFF01>..<UFF0F>;/
+ <UFF1A>..<UFF20>;<UFF3B>..<UFF40>;<UFF5B>..<UFF65>;<UFFE0>..<UFFE6>;/
+ <UFFE8>..<UFFEE>;<UFFF9>..<UFFFD>;<U00010100>..<U00010102>;/
+ <U00010107>..<U00010133>;<U00010137>..<U0001013F>;/
+ <U00010175>..<U0001018E>;<U00010190>..<U0001019C>;<U000101A0>;/
+ <U000101D0>..<U000101FD>;<U000102E0>..<U000102FB>;/
+ <U00010320>..<U00010323>;<U0001039F>;<U000103D0>;<U0001056F>;/
+ <U00010857>..<U0001085F>;<U00010877>..<U0001087F>;/
+ <U000108A7>..<U000108AF>;<U000108FB>..<U000108FF>;/
+ <U00010916>..<U0001091B>;<U0001091F>;<U0001093F>;/
+ <U000109BC>..<U000109BD>;<U000109C0>..<U000109CF>;/
<U000109D2>..<U000109FF>;<U00010A38>..<U00010A3A>;/
<U00010A3F>..<U00010A48>;<U00010A50>..<U00010A58>;/
<U00010A7D>..<U00010A7F>;<U00010A9D>..<U00010A9F>;<U00010AC8>;/
@@ -688,6 +702,7 @@ punct /
<U00010B39>..<U00010B3F>;<U00010B58>..<U00010B5F>;/
<U00010B78>..<U00010B7F>;<U00010B99>..<U00010B9C>;/
<U00010BA9>..<U00010BAF>;<U00010CFA>..<U00010CFF>;/
+ <U00010D6A>..<U00010D6E>;<U00010D8E>..<U00010D8F>;/
<U00010E60>..<U00010E7E>;<U00010EAD>;<U00010EFD>..<U00010EFF>;/
<U00010F1D>..<U00010F26>;<U00010F46>..<U00010F59>;/
<U00010F82>..<U00010F89>;<U00010FC5>..<U00010FCB>;/
@@ -698,7 +713,9 @@ punct /
<U000111DB>;<U000111DD>..<U000111DF>;<U000111E1>..<U000111F4>;/
<U00011235>..<U00011236>;<U00011238>..<U0001123D>;<U000112A9>;/
<U000112E9>..<U000112EA>;<U0001133B>..<U0001133C>;<U0001134D>;/
- <U00011366>..<U0001136C>;<U00011370>..<U00011374>;<U00011442>;/
+ <U00011366>..<U0001136C>;<U00011370>..<U00011374>;/
+ <U000113CE>..<U000113D0>;<U000113D2>;<U000113D4>..<U000113D5>;/
+ <U000113D7>..<U000113D8>;<U000113E1>..<U000113E2>;<U00011442>;/
<U00011446>;<U0001144B>..<U0001144F>;<U0001145A>..<U0001145B>;/
<U0001145D>..<U0001145E>;<U000114C2>..<U000114C3>;<U000114C6>;/
<U000115BF>..<U000115D7>;<U0001163F>;<U00011641>..<U00011643>;/
@@ -708,16 +725,19 @@ punct /
<U00011943>..<U00011946>;<U000119E0>;<U000119E2>;/
<U00011A33>..<U00011A34>;<U00011A3F>..<U00011A47>;/
<U00011A98>..<U00011A9C>;<U00011A9E>..<U00011AA2>;/
- <U00011B00>..<U00011B09>;<U00011C3F>;<U00011C41>..<U00011C45>;/
- <U00011C5A>..<U00011C6C>;<U00011C70>..<U00011C71>;<U00011D42>;/
- <U00011D44>..<U00011D45>;<U00011D97>;<U00011EF7>..<U00011EF8>;/
- <U00011F41>..<U00011F4F>;<U00011FC0>..<U00011FF1>;<U00011FFF>;/
+ <U00011B00>..<U00011B09>;<U00011BE1>;<U00011C3F>;/
+ <U00011C41>..<U00011C45>;<U00011C5A>..<U00011C6C>;/
+ <U00011C70>..<U00011C71>;<U00011D42>;<U00011D44>..<U00011D45>;/
+ <U00011D97>;<U00011EF7>..<U00011EF8>;<U00011F41>..<U00011F4F>;/
+ <U00011F5A>;<U00011FC0>..<U00011FF1>;<U00011FFF>;/
<U00012470>..<U00012474>;<U00012FF1>..<U00012FF2>;/
- <U00013430>..<U00013440>;<U00013447>..<U00013455>;/
+ <U00013430>..<U00013440>;<U00013447>..<U00013455>;<U0001612F>;/
<U00016A6E>..<U00016A6F>;<U00016AF0>..<U00016AF5>;/
<U00016B30>..<U00016B3F>;<U00016B44>..<U00016B45>;/
- <U00016B5B>..<U00016B61>;<U00016E80>..<U00016E9A>;<U00016FE2>;/
- <U00016FE4>;<U0001BC9C>..<U0001BC9D>;<U0001BC9F>..<U0001BCA3>;/
+ <U00016B5B>..<U00016B61>;<U00016D6D>..<U00016D6F>;/
+ <U00016E80>..<U00016E9A>;<U00016FE2>;<U00016FE4>;/
+ <U0001BC9C>..<U0001BC9D>;<U0001BC9F>..<U0001BCA3>;/
+ <U0001CC00>..<U0001CCEF>;<U0001CD00>..<U0001CEB3>;/
<U0001CF00>..<U0001CF2D>;<U0001CF30>..<U0001CF46>;/
<U0001CF50>..<U0001CFC3>;<U0001D000>..<U0001D0F5>;/
<U0001D100>..<U0001D126>;<U0001D129>..<U0001D1EA>;/
@@ -728,31 +748,32 @@ punct /
<U0001D800>..<U0001DA8B>;<U0001DA9B>..<U0001DA9F>;/
<U0001DAA1>..<U0001DAAF>;<U0001E130>..<U0001E136>;<U0001E14F>;/
<U0001E2AE>;<U0001E2EC>..<U0001E2EF>;<U0001E2FF>;/
- <U0001E4EC>..<U0001E4EF>;<U0001E8C7>..<U0001E8D6>;/
- <U0001E944>..<U0001E946>;<U0001E948>..<U0001E94A>;/
- <U0001E95E>..<U0001E95F>;<U0001EC71>..<U0001ECB4>;/
- <U0001ED01>..<U0001ED3D>;<U0001EEF0>..<U0001EEF1>;/
- <U0001F000>..<U0001F02B>;<U0001F030>..<U0001F093>;/
- <U0001F0A0>..<U0001F0AE>;<U0001F0B1>..<U0001F0BF>;/
- <U0001F0C1>..<U0001F0CF>;<U0001F0D1>..<U0001F0F5>;/
- <U0001F100>..<U0001F12F>;<U0001F14A>..<U0001F14F>;/
- <U0001F16A>..<U0001F16F>;<U0001F18A>..<U0001F1AD>;/
- <U0001F1E6>..<U0001F202>;<U0001F210>..<U0001F23B>;/
- <U0001F240>..<U0001F248>;<U0001F250>..<U0001F251>;/
- <U0001F260>..<U0001F265>;<U0001F300>..<U0001F6D7>;/
- <U0001F6DC>..<U0001F6EC>;<U0001F6F0>..<U0001F6FC>;/
- <U0001F700>..<U0001F776>;<U0001F77B>..<U0001F7D9>;/
- <U0001F7E0>..<U0001F7EB>;<U0001F7F0>;<U0001F800>..<U0001F80B>;/
- <U0001F810>..<U0001F847>;<U0001F850>..<U0001F859>;/
- <U0001F860>..<U0001F887>;<U0001F890>..<U0001F8AD>;/
- <U0001F8B0>..<U0001F8B1>;<U0001F900>..<U0001FA53>;/
+ <U0001E4EC>..<U0001E4EF>;<U0001E5EE>..<U0001E5EF>;<U0001E5FF>;/
+ <U0001E8C7>..<U0001E8D6>;<U0001E944>..<U0001E946>;/
+ <U0001E948>..<U0001E94A>;<U0001E95E>..<U0001E95F>;/
+ <U0001EC71>..<U0001ECB4>;<U0001ED01>..<U0001ED3D>;/
+ <U0001EEF0>..<U0001EEF1>;<U0001F000>..<U0001F02B>;/
+ <U0001F030>..<U0001F093>;<U0001F0A0>..<U0001F0AE>;/
+ <U0001F0B1>..<U0001F0BF>;<U0001F0C1>..<U0001F0CF>;/
+ <U0001F0D1>..<U0001F0F5>;<U0001F100>..<U0001F12F>;/
+ <U0001F14A>..<U0001F14F>;<U0001F16A>..<U0001F16F>;/
+ <U0001F18A>..<U0001F1AD>;<U0001F1E6>..<U0001F202>;/
+ <U0001F210>..<U0001F23B>;<U0001F240>..<U0001F248>;/
+ <U0001F250>..<U0001F251>;<U0001F260>..<U0001F265>;/
+ <U0001F300>..<U0001F6D7>;<U0001F6DC>..<U0001F6EC>;/
+ <U0001F6F0>..<U0001F6FC>;<U0001F700>..<U0001F776>;/
+ <U0001F77B>..<U0001F7D9>;<U0001F7E0>..<U0001F7EB>;<U0001F7F0>;/
+ <U0001F800>..<U0001F80B>;<U0001F810>..<U0001F847>;/
+ <U0001F850>..<U0001F859>;<U0001F860>..<U0001F887>;/
+ <U0001F890>..<U0001F8AD>;<U0001F8B0>..<U0001F8BB>;/
+ <U0001F8C0>..<U0001F8C1>;<U0001F900>..<U0001FA53>;/
<U0001FA60>..<U0001FA6D>;<U0001FA70>..<U0001FA7C>;/
- <U0001FA80>..<U0001FA88>;<U0001FA90>..<U0001FABD>;/
- <U0001FABF>..<U0001FAC5>;<U0001FACE>..<U0001FADB>;/
- <U0001FAE0>..<U0001FAE8>;<U0001FAF0>..<U0001FAF8>;/
- <U0001FB00>..<U0001FB92>;<U0001FB94>..<U0001FBCA>;<U000E0001>;/
- <U000E0020>..<U000E007F>;<U000E0100>..<U000E01EF>;/
- <U000F0000>..<U000FFFFD>;<U00100000>..<U0010FFFD>
+ <U0001FA80>..<U0001FA89>;<U0001FA8F>..<U0001FAC6>;/
+ <U0001FACE>..<U0001FADC>;<U0001FADF>..<U0001FAE9>;/
+ <U0001FAF0>..<U0001FAF8>;<U0001FB00>..<U0001FB92>;/
+ <U0001FB94>..<U0001FBEF>;<U000E0001>;<U000E0020>..<U000E007F>;/
+ <U000E0100>..<U000E01EF>;<U000F0000>..<U000FFFFD>;/
+ <U00100000>..<U0010FFFD>
graph /
<U0021>..<U007E>;<U00A0>..<U0377>;<U037A>..<U037F>;<U0384>..<U038A>;/
@@ -761,7 +782,7 @@ graph /
<U05EF>..<U05F4>;<U0600>..<U070D>;<U070F>..<U074A>;<U074D>..<U07B1>;/
<U07C0>..<U07FA>;<U07FD>..<U082D>;<U0830>..<U083E>;<U0840>..<U085B>;/
<U085E>;<U0860>..<U086A>;<U0870>..<U088E>;<U0890>..<U0891>;/
- <U0898>..<U0983>;<U0985>..<U098C>;<U098F>..<U0990>;<U0993>..<U09A8>;/
+ <U0897>..<U0983>;<U0985>..<U098C>;<U098F>..<U0990>;<U0993>..<U09A8>;/
<U09AA>..<U09B0>;<U09B2>;<U09B6>..<U09B9>;<U09BC>..<U09C4>;/
<U09C7>..<U09C8>;<U09CB>..<U09CE>;<U09D7>;<U09DC>..<U09DD>;/
<U09DF>..<U09E3>;<U09E6>..<U09FE>;<U0A01>..<U0A03>;<U0A05>..<U0A0A>;/
@@ -808,38 +829,38 @@ graph /
<U1970>..<U1974>;<U1980>..<U19AB>;<U19B0>..<U19C9>;<U19D0>..<U19DA>;/
<U19DE>..<U1A1B>;<U1A1E>..<U1A5E>;<U1A60>..<U1A7C>;<U1A7F>..<U1A89>;/
<U1A90>..<U1A99>;<U1AA0>..<U1AAD>;<U1AB0>..<U1ACE>;<U1B00>..<U1B4C>;/
- <U1B50>..<U1B7E>;<U1B80>..<U1BF3>;<U1BFC>..<U1C37>;<U1C3B>..<U1C49>;/
- <U1C4D>..<U1C88>;<U1C90>..<U1CBA>;<U1CBD>..<U1CC7>;<U1CD0>..<U1CFA>;/
- <U1D00>..<U1F15>;<U1F18>..<U1F1D>;<U1F20>..<U1F45>;<U1F48>..<U1F4D>;/
- <U1F50>..<U1F57>;<U1F59>;<U1F5B>;<U1F5D>;<U1F5F>..<U1F7D>;/
- <U1F80>..<U1FB4>;<U1FB6>..<U1FC4>;<U1FC6>..<U1FD3>;<U1FD6>..<U1FDB>;/
- <U1FDD>..<U1FEF>;<U1FF2>..<U1FF4>;<U1FF6>..<U1FFE>;<U2007>;/
- <U200B>..<U2027>;<U202A>..<U205E>;<U2060>..<U2064>;<U2066>..<U2071>;/
- <U2074>..<U208E>;<U2090>..<U209C>;<U20A0>..<U20C0>;<U20D0>..<U20F0>;/
- <U2100>..<U218B>;<U2190>..<U2426>;<U2440>..<U244A>;<U2460>..<U2B73>;/
- <U2B76>..<U2B95>;<U2B97>..<U2CF3>;<U2CF9>..<U2D25>;<U2D27>;<U2D2D>;/
- <U2D30>..<U2D67>;<U2D6F>..<U2D70>;<U2D7F>..<U2D96>;<U2DA0>..<U2DA6>;/
- <U2DA8>..<U2DAE>;<U2DB0>..<U2DB6>;<U2DB8>..<U2DBE>;<U2DC0>..<U2DC6>;/
- <U2DC8>..<U2DCE>;<U2DD0>..<U2DD6>;<U2DD8>..<U2DDE>;<U2DE0>..<U2E5D>;/
- <U2E80>..<U2E99>;<U2E9B>..<U2EF3>;<U2F00>..<U2FD5>;<U2FF0>..<U2FFF>;/
- <U3001>..<U303F>;<U3041>..<U3096>;<U3099>..<U30FF>;<U3105>..<U312F>;/
- <U3131>..<U318E>;<U3190>..<U31E3>;<U31EF>..<U321E>;<U3220>..<UA48C>;/
- <UA490>..<UA4C6>;<UA4D0>..<UA62B>;<UA640>..<UA6F7>;<UA700>..<UA7CA>;/
- <UA7D0>..<UA7D1>;<UA7D3>;<UA7D5>..<UA7D9>;<UA7F2>..<UA82C>;/
- <UA830>..<UA839>;<UA840>..<UA877>;<UA880>..<UA8C5>;<UA8CE>..<UA8D9>;/
- <UA8E0>..<UA953>;<UA95F>..<UA97C>;<UA980>..<UA9CD>;<UA9CF>..<UA9D9>;/
- <UA9DE>..<UA9FE>;<UAA00>..<UAA36>;<UAA40>..<UAA4D>;<UAA50>..<UAA59>;/
- <UAA5C>..<UAAC2>;<UAADB>..<UAAF6>;<UAB01>..<UAB06>;<UAB09>..<UAB0E>;/
- <UAB11>..<UAB16>;<UAB20>..<UAB26>;<UAB28>..<UAB2E>;<UAB30>..<UAB6B>;/
- <UAB70>..<UABED>;<UABF0>..<UABF9>;<UAC00>..<UD7A3>;<UD7B0>..<UD7C6>;/
- <UD7CB>..<UD7FB>;<UE000>..<UFA6D>;<UFA70>..<UFAD9>;<UFB00>..<UFB06>;/
- <UFB13>..<UFB17>;<UFB1D>..<UFB36>;<UFB38>..<UFB3C>;<UFB3E>;/
- <UFB40>..<UFB41>;<UFB43>..<UFB44>;<UFB46>..<UFBC2>;<UFBD3>..<UFD8F>;/
- <UFD92>..<UFDC7>;<UFDCF>;<UFDF0>..<UFE19>;<UFE20>..<UFE52>;/
- <UFE54>..<UFE66>;<UFE68>..<UFE6B>;<UFE70>..<UFE74>;<UFE76>..<UFEFC>;/
- <UFEFF>;<UFF01>..<UFFBE>;<UFFC2>..<UFFC7>;<UFFCA>..<UFFCF>;/
- <UFFD2>..<UFFD7>;<UFFDA>..<UFFDC>;<UFFE0>..<UFFE6>;<UFFE8>..<UFFEE>;/
- <UFFF9>..<UFFFD>;<U00010000>..<U0001000B>;<U0001000D>..<U00010026>;/
+ <U1B4E>..<U1BF3>;<U1BFC>..<U1C37>;<U1C3B>..<U1C49>;<U1C4D>..<U1C8A>;/
+ <U1C90>..<U1CBA>;<U1CBD>..<U1CC7>;<U1CD0>..<U1CFA>;<U1D00>..<U1F15>;/
+ <U1F18>..<U1F1D>;<U1F20>..<U1F45>;<U1F48>..<U1F4D>;<U1F50>..<U1F57>;/
+ <U1F59>;<U1F5B>;<U1F5D>;<U1F5F>..<U1F7D>;<U1F80>..<U1FB4>;/
+ <U1FB6>..<U1FC4>;<U1FC6>..<U1FD3>;<U1FD6>..<U1FDB>;<U1FDD>..<U1FEF>;/
+ <U1FF2>..<U1FF4>;<U1FF6>..<U1FFE>;<U2007>;<U200B>..<U2027>;/
+ <U202A>..<U205E>;<U2060>..<U2064>;<U2066>..<U2071>;<U2074>..<U208E>;/
+ <U2090>..<U209C>;<U20A0>..<U20C0>;<U20D0>..<U20F0>;<U2100>..<U218B>;/
+ <U2190>..<U2429>;<U2440>..<U244A>;<U2460>..<U2B73>;<U2B76>..<U2B95>;/
+ <U2B97>..<U2CF3>;<U2CF9>..<U2D25>;<U2D27>;<U2D2D>;<U2D30>..<U2D67>;/
+ <U2D6F>..<U2D70>;<U2D7F>..<U2D96>;<U2DA0>..<U2DA6>;<U2DA8>..<U2DAE>;/
+ <U2DB0>..<U2DB6>;<U2DB8>..<U2DBE>;<U2DC0>..<U2DC6>;<U2DC8>..<U2DCE>;/
+ <U2DD0>..<U2DD6>;<U2DD8>..<U2DDE>;<U2DE0>..<U2E5D>;<U2E80>..<U2E99>;/
+ <U2E9B>..<U2EF3>;<U2F00>..<U2FD5>;<U2FF0>..<U2FFF>;<U3001>..<U303F>;/
+ <U3041>..<U3096>;<U3099>..<U30FF>;<U3105>..<U312F>;<U3131>..<U318E>;/
+ <U3190>..<U31E5>;<U31EF>..<U321E>;<U3220>..<UA48C>;<UA490>..<UA4C6>;/
+ <UA4D0>..<UA62B>;<UA640>..<UA6F7>;<UA700>..<UA7CD>;<UA7D0>..<UA7D1>;/
+ <UA7D3>;<UA7D5>..<UA7DC>;<UA7F2>..<UA82C>;<UA830>..<UA839>;/
+ <UA840>..<UA877>;<UA880>..<UA8C5>;<UA8CE>..<UA8D9>;<UA8E0>..<UA953>;/
+ <UA95F>..<UA97C>;<UA980>..<UA9CD>;<UA9CF>..<UA9D9>;<UA9DE>..<UA9FE>;/
+ <UAA00>..<UAA36>;<UAA40>..<UAA4D>;<UAA50>..<UAA59>;<UAA5C>..<UAAC2>;/
+ <UAADB>..<UAAF6>;<UAB01>..<UAB06>;<UAB09>..<UAB0E>;<UAB11>..<UAB16>;/
+ <UAB20>..<UAB26>;<UAB28>..<UAB2E>;<UAB30>..<UAB6B>;<UAB70>..<UABED>;/
+ <UABF0>..<UABF9>;<UAC00>..<UD7A3>;<UD7B0>..<UD7C6>;<UD7CB>..<UD7FB>;/
+ <UE000>..<UFA6D>;<UFA70>..<UFAD9>;<UFB00>..<UFB06>;<UFB13>..<UFB17>;/
+ <UFB1D>..<UFB36>;<UFB38>..<UFB3C>;<UFB3E>;<UFB40>..<UFB41>;/
+ <UFB43>..<UFB44>;<UFB46>..<UFBC2>;<UFBD3>..<UFD8F>;<UFD92>..<UFDC7>;/
+ <UFDCF>;<UFDF0>..<UFE19>;<UFE20>..<UFE52>;<UFE54>..<UFE66>;/
+ <UFE68>..<UFE6B>;<UFE70>..<UFE74>;<UFE76>..<UFEFC>;<UFEFF>;/
+ <UFF01>..<UFFBE>;<UFFC2>..<UFFC7>;<UFFCA>..<UFFCF>;<UFFD2>..<UFFD7>;/
+ <UFFDA>..<UFFDC>;<UFFE0>..<UFFE6>;<UFFE8>..<UFFEE>;<UFFF9>..<UFFFD>;/
+ <U00010000>..<U0001000B>;<U0001000D>..<U00010026>;/
<U00010028>..<U0001003A>;<U0001003C>..<U0001003D>;/
<U0001003F>..<U0001004D>;<U00010050>..<U0001005D>;/
<U00010080>..<U000100FA>;<U00010100>..<U00010102>;/
@@ -856,94 +877,105 @@ graph /
<U0001057C>..<U0001058A>;<U0001058C>..<U00010592>;/
<U00010594>..<U00010595>;<U00010597>..<U000105A1>;/
<U000105A3>..<U000105B1>;<U000105B3>..<U000105B9>;/
- <U000105BB>..<U000105BC>;<U00010600>..<U00010736>;/
- <U00010740>..<U00010755>;<U00010760>..<U00010767>;/
- <U00010780>..<U00010785>;<U00010787>..<U000107B0>;/
- <U000107B2>..<U000107BA>;<U00010800>..<U00010805>;<U00010808>;/
- <U0001080A>..<U00010835>;<U00010837>..<U00010838>;<U0001083C>;/
- <U0001083F>..<U00010855>;<U00010857>..<U0001089E>;/
- <U000108A7>..<U000108AF>;<U000108E0>..<U000108F2>;/
- <U000108F4>..<U000108F5>;<U000108FB>..<U0001091B>;/
- <U0001091F>..<U00010939>;<U0001093F>;<U00010980>..<U000109B7>;/
- <U000109BC>..<U000109CF>;<U000109D2>..<U00010A03>;/
- <U00010A05>..<U00010A06>;<U00010A0C>..<U00010A13>;/
- <U00010A15>..<U00010A17>;<U00010A19>..<U00010A35>;/
- <U00010A38>..<U00010A3A>;<U00010A3F>..<U00010A48>;/
- <U00010A50>..<U00010A58>;<U00010A60>..<U00010A9F>;/
- <U00010AC0>..<U00010AE6>;<U00010AEB>..<U00010AF6>;/
- <U00010B00>..<U00010B35>;<U00010B39>..<U00010B55>;/
- <U00010B58>..<U00010B72>;<U00010B78>..<U00010B91>;/
- <U00010B99>..<U00010B9C>;<U00010BA9>..<U00010BAF>;/
- <U00010C00>..<U00010C48>;<U00010C80>..<U00010CB2>;/
- <U00010CC0>..<U00010CF2>;<U00010CFA>..<U00010D27>;/
- <U00010D30>..<U00010D39>;<U00010E60>..<U00010E7E>;/
+ <U000105BB>..<U000105BC>;<U000105C0>..<U000105F3>;/
+ <U00010600>..<U00010736>;<U00010740>..<U00010755>;/
+ <U00010760>..<U00010767>;<U00010780>..<U00010785>;/
+ <U00010787>..<U000107B0>;<U000107B2>..<U000107BA>;/
+ <U00010800>..<U00010805>;<U00010808>;<U0001080A>..<U00010835>;/
+ <U00010837>..<U00010838>;<U0001083C>;<U0001083F>..<U00010855>;/
+ <U00010857>..<U0001089E>;<U000108A7>..<U000108AF>;/
+ <U000108E0>..<U000108F2>;<U000108F4>..<U000108F5>;/
+ <U000108FB>..<U0001091B>;<U0001091F>..<U00010939>;<U0001093F>;/
+ <U00010980>..<U000109B7>;<U000109BC>..<U000109CF>;/
+ <U000109D2>..<U00010A03>;<U00010A05>..<U00010A06>;/
+ <U00010A0C>..<U00010A13>;<U00010A15>..<U00010A17>;/
+ <U00010A19>..<U00010A35>;<U00010A38>..<U00010A3A>;/
+ <U00010A3F>..<U00010A48>;<U00010A50>..<U00010A58>;/
+ <U00010A60>..<U00010A9F>;<U00010AC0>..<U00010AE6>;/
+ <U00010AEB>..<U00010AF6>;<U00010B00>..<U00010B35>;/
+ <U00010B39>..<U00010B55>;<U00010B58>..<U00010B72>;/
+ <U00010B78>..<U00010B91>;<U00010B99>..<U00010B9C>;/
+ <U00010BA9>..<U00010BAF>;<U00010C00>..<U00010C48>;/
+ <U00010C80>..<U00010CB2>;<U00010CC0>..<U00010CF2>;/
+ <U00010CFA>..<U00010D27>;<U00010D30>..<U00010D39>;/
+ <U00010D40>..<U00010D65>;<U00010D69>..<U00010D85>;/
+ <U00010D8E>..<U00010D8F>;<U00010E60>..<U00010E7E>;/
<U00010E80>..<U00010EA9>;<U00010EAB>..<U00010EAD>;/
- <U00010EB0>..<U00010EB1>;<U00010EFD>..<U00010F27>;/
- <U00010F30>..<U00010F59>;<U00010F70>..<U00010F89>;/
- <U00010FB0>..<U00010FCB>;<U00010FE0>..<U00010FF6>;/
- <U00011000>..<U0001104D>;<U00011052>..<U00011075>;/
- <U0001107F>..<U000110C2>;<U000110CD>;<U000110D0>..<U000110E8>;/
- <U000110F0>..<U000110F9>;<U00011100>..<U00011134>;/
- <U00011136>..<U00011147>;<U00011150>..<U00011176>;/
- <U00011180>..<U000111DF>;<U000111E1>..<U000111F4>;/
- <U00011200>..<U00011211>;<U00011213>..<U00011241>;/
- <U00011280>..<U00011286>;<U00011288>;<U0001128A>..<U0001128D>;/
- <U0001128F>..<U0001129D>;<U0001129F>..<U000112A9>;/
- <U000112B0>..<U000112EA>;<U000112F0>..<U000112F9>;/
- <U00011300>..<U00011303>;<U00011305>..<U0001130C>;/
- <U0001130F>..<U00011310>;<U00011313>..<U00011328>;/
- <U0001132A>..<U00011330>;<U00011332>..<U00011333>;/
- <U00011335>..<U00011339>;<U0001133B>..<U00011344>;/
- <U00011347>..<U00011348>;<U0001134B>..<U0001134D>;<U00011350>;/
- <U00011357>;<U0001135D>..<U00011363>;<U00011366>..<U0001136C>;/
- <U00011370>..<U00011374>;<U00011400>..<U0001145B>;/
+ <U00010EB0>..<U00010EB1>;<U00010EC2>..<U00010EC4>;/
+ <U00010EFC>..<U00010F27>;<U00010F30>..<U00010F59>;/
+ <U00010F70>..<U00010F89>;<U00010FB0>..<U00010FCB>;/
+ <U00010FE0>..<U00010FF6>;<U00011000>..<U0001104D>;/
+ <U00011052>..<U00011075>;<U0001107F>..<U000110C2>;<U000110CD>;/
+ <U000110D0>..<U000110E8>;<U000110F0>..<U000110F9>;/
+ <U00011100>..<U00011134>;<U00011136>..<U00011147>;/
+ <U00011150>..<U00011176>;<U00011180>..<U000111DF>;/
+ <U000111E1>..<U000111F4>;<U00011200>..<U00011211>;/
+ <U00011213>..<U00011241>;<U00011280>..<U00011286>;<U00011288>;/
+ <U0001128A>..<U0001128D>;<U0001128F>..<U0001129D>;/
+ <U0001129F>..<U000112A9>;<U000112B0>..<U000112EA>;/
+ <U000112F0>..<U000112F9>;<U00011300>..<U00011303>;/
+ <U00011305>..<U0001130C>;<U0001130F>..<U00011310>;/
+ <U00011313>..<U00011328>;<U0001132A>..<U00011330>;/
+ <U00011332>..<U00011333>;<U00011335>..<U00011339>;/
+ <U0001133B>..<U00011344>;<U00011347>..<U00011348>;/
+ <U0001134B>..<U0001134D>;<U00011350>;<U00011357>;/
+ <U0001135D>..<U00011363>;<U00011366>..<U0001136C>;/
+ <U00011370>..<U00011374>;<U00011380>..<U00011389>;<U0001138B>;/
+ <U0001138E>;<U00011390>..<U000113B5>;<U000113B7>..<U000113C0>;/
+ <U000113C2>;<U000113C5>;<U000113C7>..<U000113CA>;/
+ <U000113CC>..<U000113D5>;<U000113D7>..<U000113D8>;/
+ <U000113E1>..<U000113E2>;<U00011400>..<U0001145B>;/
<U0001145D>..<U00011461>;<U00011480>..<U000114C7>;/
<U000114D0>..<U000114D9>;<U00011580>..<U000115B5>;/
<U000115B8>..<U000115DD>;<U00011600>..<U00011644>;/
<U00011650>..<U00011659>;<U00011660>..<U0001166C>;/
<U00011680>..<U000116B9>;<U000116C0>..<U000116C9>;/
- <U00011700>..<U0001171A>;<U0001171D>..<U0001172B>;/
- <U00011730>..<U00011746>;<U00011800>..<U0001183B>;/
- <U000118A0>..<U000118F2>;<U000118FF>..<U00011906>;<U00011909>;/
- <U0001190C>..<U00011913>;<U00011915>..<U00011916>;/
- <U00011918>..<U00011935>;<U00011937>..<U00011938>;/
- <U0001193B>..<U00011946>;<U00011950>..<U00011959>;/
- <U000119A0>..<U000119A7>;<U000119AA>..<U000119D7>;/
- <U000119DA>..<U000119E4>;<U00011A00>..<U00011A47>;/
- <U00011A50>..<U00011AA2>;<U00011AB0>..<U00011AF8>;/
- <U00011B00>..<U00011B09>;<U00011C00>..<U00011C08>;/
- <U00011C0A>..<U00011C36>;<U00011C38>..<U00011C45>;/
- <U00011C50>..<U00011C6C>;<U00011C70>..<U00011C8F>;/
- <U00011C92>..<U00011CA7>;<U00011CA9>..<U00011CB6>;/
- <U00011D00>..<U00011D06>;<U00011D08>..<U00011D09>;/
- <U00011D0B>..<U00011D36>;<U00011D3A>;<U00011D3C>..<U00011D3D>;/
- <U00011D3F>..<U00011D47>;<U00011D50>..<U00011D59>;/
- <U00011D60>..<U00011D65>;<U00011D67>..<U00011D68>;/
- <U00011D6A>..<U00011D8E>;<U00011D90>..<U00011D91>;/
- <U00011D93>..<U00011D98>;<U00011DA0>..<U00011DA9>;/
- <U00011EE0>..<U00011EF8>;<U00011F00>..<U00011F10>;/
- <U00011F12>..<U00011F3A>;<U00011F3E>..<U00011F59>;<U00011FB0>;/
- <U00011FC0>..<U00011FF1>;<U00011FFF>..<U00012399>;/
- <U00012400>..<U0001246E>;<U00012470>..<U00012474>;/
- <U00012480>..<U00012543>;<U00012F90>..<U00012FF2>;/
- <U00013000>..<U00013455>;<U00014400>..<U00014646>;/
- <U00016800>..<U00016A38>;<U00016A40>..<U00016A5E>;/
- <U00016A60>..<U00016A69>;<U00016A6E>..<U00016ABE>;/
- <U00016AC0>..<U00016AC9>;<U00016AD0>..<U00016AED>;/
- <U00016AF0>..<U00016AF5>;<U00016B00>..<U00016B45>;/
- <U00016B50>..<U00016B59>;<U00016B5B>..<U00016B61>;/
- <U00016B63>..<U00016B77>;<U00016B7D>..<U00016B8F>;/
+ <U000116D0>..<U000116E3>;<U00011700>..<U0001171A>;/
+ <U0001171D>..<U0001172B>;<U00011730>..<U00011746>;/
+ <U00011800>..<U0001183B>;<U000118A0>..<U000118F2>;/
+ <U000118FF>..<U00011906>;<U00011909>;<U0001190C>..<U00011913>;/
+ <U00011915>..<U00011916>;<U00011918>..<U00011935>;/
+ <U00011937>..<U00011938>;<U0001193B>..<U00011946>;/
+ <U00011950>..<U00011959>;<U000119A0>..<U000119A7>;/
+ <U000119AA>..<U000119D7>;<U000119DA>..<U000119E4>;/
+ <U00011A00>..<U00011A47>;<U00011A50>..<U00011AA2>;/
+ <U00011AB0>..<U00011AF8>;<U00011B00>..<U00011B09>;/
+ <U00011BC0>..<U00011BE1>;<U00011BF0>..<U00011BF9>;/
+ <U00011C00>..<U00011C08>;<U00011C0A>..<U00011C36>;/
+ <U00011C38>..<U00011C45>;<U00011C50>..<U00011C6C>;/
+ <U00011C70>..<U00011C8F>;<U00011C92>..<U00011CA7>;/
+ <U00011CA9>..<U00011CB6>;<U00011D00>..<U00011D06>;/
+ <U00011D08>..<U00011D09>;<U00011D0B>..<U00011D36>;<U00011D3A>;/
+ <U00011D3C>..<U00011D3D>;<U00011D3F>..<U00011D47>;/
+ <U00011D50>..<U00011D59>;<U00011D60>..<U00011D65>;/
+ <U00011D67>..<U00011D68>;<U00011D6A>..<U00011D8E>;/
+ <U00011D90>..<U00011D91>;<U00011D93>..<U00011D98>;/
+ <U00011DA0>..<U00011DA9>;<U00011EE0>..<U00011EF8>;/
+ <U00011F00>..<U00011F10>;<U00011F12>..<U00011F3A>;/
+ <U00011F3E>..<U00011F5A>;<U00011FB0>;<U00011FC0>..<U00011FF1>;/
+ <U00011FFF>..<U00012399>;<U00012400>..<U0001246E>;/
+ <U00012470>..<U00012474>;<U00012480>..<U00012543>;/
+ <U00012F90>..<U00012FF2>;<U00013000>..<U00013455>;/
+ <U00013460>..<U000143FA>;<U00014400>..<U00014646>;/
+ <U00016100>..<U00016139>;<U00016800>..<U00016A38>;/
+ <U00016A40>..<U00016A5E>;<U00016A60>..<U00016A69>;/
+ <U00016A6E>..<U00016ABE>;<U00016AC0>..<U00016AC9>;/
+ <U00016AD0>..<U00016AED>;<U00016AF0>..<U00016AF5>;/
+ <U00016B00>..<U00016B45>;<U00016B50>..<U00016B59>;/
+ <U00016B5B>..<U00016B61>;<U00016B63>..<U00016B77>;/
+ <U00016B7D>..<U00016B8F>;<U00016D40>..<U00016D79>;/
<U00016E40>..<U00016E9A>;<U00016F00>..<U00016F4A>;/
<U00016F4F>..<U00016F87>;<U00016F8F>..<U00016F9F>;/
<U00016FE0>..<U00016FE4>;<U00016FF0>..<U00016FF1>;/
<U00017000>..<U000187F7>;<U00018800>..<U00018CD5>;/
- <U00018D00>..<U00018D08>;<U0001AFF0>..<U0001AFF3>;/
+ <U00018CFF>..<U00018D08>;<U0001AFF0>..<U0001AFF3>;/
<U0001AFF5>..<U0001AFFB>;<U0001AFFD>..<U0001AFFE>;/
<U0001B000>..<U0001B122>;<U0001B132>;<U0001B150>..<U0001B152>;/
<U0001B155>;<U0001B164>..<U0001B167>;<U0001B170>..<U0001B2FB>;/
<U0001BC00>..<U0001BC6A>;<U0001BC70>..<U0001BC7C>;/
<U0001BC80>..<U0001BC88>;<U0001BC90>..<U0001BC99>;/
- <U0001BC9C>..<U0001BCA3>;<U0001CF00>..<U0001CF2D>;/
+ <U0001BC9C>..<U0001BCA3>;<U0001CC00>..<U0001CCF9>;/
+ <U0001CD00>..<U0001CEB3>;<U0001CF00>..<U0001CF2D>;/
<U0001CF30>..<U0001CF46>;<U0001CF50>..<U0001CFC3>;/
<U0001D000>..<U0001D0F5>;<U0001D100>..<U0001D126>;/
<U0001D129>..<U0001D1EA>;<U0001D200>..<U0001D245>;/
@@ -966,16 +998,16 @@ graph /
<U0001E100>..<U0001E12C>;<U0001E130>..<U0001E13D>;/
<U0001E140>..<U0001E149>;<U0001E14E>..<U0001E14F>;/
<U0001E290>..<U0001E2AE>;<U0001E2C0>..<U0001E2F9>;<U0001E2FF>;/
- <U0001E4D0>..<U0001E4F9>;<U0001E7E0>..<U0001E7E6>;/
- <U0001E7E8>..<U0001E7EB>;<U0001E7ED>..<U0001E7EE>;/
- <U0001E7F0>..<U0001E7FE>;<U0001E800>..<U0001E8C4>;/
- <U0001E8C7>..<U0001E8D6>;<U0001E900>..<U0001E94B>;/
- <U0001E950>..<U0001E959>;<U0001E95E>..<U0001E95F>;/
- <U0001EC71>..<U0001ECB4>;<U0001ED01>..<U0001ED3D>;/
- <U0001EE00>..<U0001EE03>;<U0001EE05>..<U0001EE1F>;/
- <U0001EE21>..<U0001EE22>;<U0001EE24>;<U0001EE27>;/
- <U0001EE29>..<U0001EE32>;<U0001EE34>..<U0001EE37>;<U0001EE39>;/
- <U0001EE3B>;<U0001EE42>;<U0001EE47>;<U0001EE49>;<U0001EE4B>;/
+ <U0001E4D0>..<U0001E4F9>;<U0001E5D0>..<U0001E5FA>;<U0001E5FF>;/
+ <U0001E7E0>..<U0001E7E6>;<U0001E7E8>..<U0001E7EB>;/
+ <U0001E7ED>..<U0001E7EE>;<U0001E7F0>..<U0001E7FE>;/
+ <U0001E800>..<U0001E8C4>;<U0001E8C7>..<U0001E8D6>;/
+ <U0001E900>..<U0001E94B>;<U0001E950>..<U0001E959>;/
+ <U0001E95E>..<U0001E95F>;<U0001EC71>..<U0001ECB4>;/
+ <U0001ED01>..<U0001ED3D>;<U0001EE00>..<U0001EE03>;/
+ <U0001EE05>..<U0001EE1F>;<U0001EE21>..<U0001EE22>;<U0001EE24>;/
+ <U0001EE27>;<U0001EE29>..<U0001EE32>;<U0001EE34>..<U0001EE37>;/
+ <U0001EE39>;<U0001EE3B>;<U0001EE42>;<U0001EE47>;<U0001EE49>;<U0001EE4B>;/
<U0001EE4D>..<U0001EE4F>;<U0001EE51>..<U0001EE52>;<U0001EE54>;/
<U0001EE57>;<U0001EE59>;<U0001EE5B>;<U0001EE5D>;<U0001EE5F>;/
<U0001EE61>..<U0001EE62>;<U0001EE64>;<U0001EE67>..<U0001EE6A>;/
@@ -995,19 +1027,19 @@ graph /
<U0001F7E0>..<U0001F7EB>;<U0001F7F0>;<U0001F800>..<U0001F80B>;/
<U0001F810>..<U0001F847>;<U0001F850>..<U0001F859>;/
<U0001F860>..<U0001F887>;<U0001F890>..<U0001F8AD>;/
- <U0001F8B0>..<U0001F8B1>;<U0001F900>..<U0001FA53>;/
- <U0001FA60>..<U0001FA6D>;<U0001FA70>..<U0001FA7C>;/
- <U0001FA80>..<U0001FA88>;<U0001FA90>..<U0001FABD>;/
- <U0001FABF>..<U0001FAC5>;<U0001FACE>..<U0001FADB>;/
- <U0001FAE0>..<U0001FAE8>;<U0001FAF0>..<U0001FAF8>;/
- <U0001FB00>..<U0001FB92>;<U0001FB94>..<U0001FBCA>;/
- <U0001FBF0>..<U0001FBF9>;<U00020000>..<U0002A6DF>;/
- <U0002A700>..<U0002B739>;<U0002B740>..<U0002B81D>;/
- <U0002B820>..<U0002CEA1>;<U0002CEB0>..<U0002EBE0>;/
- <U0002EBF0>..<U0002EE5D>;<U0002F800>..<U0002FA1D>;/
- <U00030000>..<U0003134A>;<U00031350>..<U000323AF>;<U000E0001>;/
- <U000E0020>..<U000E007F>;<U000E0100>..<U000E01EF>;/
- <U000F0000>..<U000FFFFD>;<U00100000>..<U0010FFFD>
+ <U0001F8B0>..<U0001F8BB>;<U0001F8C0>..<U0001F8C1>;/
+ <U0001F900>..<U0001FA53>;<U0001FA60>..<U0001FA6D>;/
+ <U0001FA70>..<U0001FA7C>;<U0001FA80>..<U0001FA89>;/
+ <U0001FA8F>..<U0001FAC6>;<U0001FACE>..<U0001FADC>;/
+ <U0001FADF>..<U0001FAE9>;<U0001FAF0>..<U0001FAF8>;/
+ <U0001FB00>..<U0001FB92>;<U0001FB94>..<U0001FBF9>;/
+ <U00020000>..<U0002A6DF>;<U0002A700>..<U0002B739>;/
+ <U0002B740>..<U0002B81D>;<U0002B820>..<U0002CEA1>;/
+ <U0002CEB0>..<U0002EBE0>;<U0002EBF0>..<U0002EE5D>;/
+ <U0002F800>..<U0002FA1D>;<U00030000>..<U0003134A>;/
+ <U00031350>..<U000323AF>;<U000E0001>;<U000E0020>..<U000E007F>;/
+ <U000E0100>..<U000E01EF>;<U000F0000>..<U000FFFFD>;/
+ <U00100000>..<U0010FFFD>
print /
<U0020>..<U007E>;<U00A0>..<U0377>;<U037A>..<U037F>;<U0384>..<U038A>;/
@@ -1016,7 +1048,7 @@ print /
<U05EF>..<U05F4>;<U0600>..<U070D>;<U070F>..<U074A>;<U074D>..<U07B1>;/
<U07C0>..<U07FA>;<U07FD>..<U082D>;<U0830>..<U083E>;<U0840>..<U085B>;/
<U085E>;<U0860>..<U086A>;<U0870>..<U088E>;<U0890>..<U0891>;/
- <U0898>..<U0983>;<U0985>..<U098C>;<U098F>..<U0990>;<U0993>..<U09A8>;/
+ <U0897>..<U0983>;<U0985>..<U098C>;<U098F>..<U0990>;<U0993>..<U09A8>;/
<U09AA>..<U09B0>;<U09B2>;<U09B6>..<U09B9>;<U09BC>..<U09C4>;/
<U09C7>..<U09C8>;<U09CB>..<U09CE>;<U09D7>;<U09DC>..<U09DD>;/
<U09DF>..<U09E3>;<U09E6>..<U09FE>;<U0A01>..<U0A03>;<U0A05>..<U0A0A>;/
@@ -1062,38 +1094,38 @@ print /
<U1930>..<U193B>;<U1940>;<U1944>..<U196D>;<U1970>..<U1974>;/
<U1980>..<U19AB>;<U19B0>..<U19C9>;<U19D0>..<U19DA>;<U19DE>..<U1A1B>;/
<U1A1E>..<U1A5E>;<U1A60>..<U1A7C>;<U1A7F>..<U1A89>;<U1A90>..<U1A99>;/
- <U1AA0>..<U1AAD>;<U1AB0>..<U1ACE>;<U1B00>..<U1B4C>;<U1B50>..<U1B7E>;/
- <U1B80>..<U1BF3>;<U1BFC>..<U1C37>;<U1C3B>..<U1C49>;<U1C4D>..<U1C88>;/
- <U1C90>..<U1CBA>;<U1CBD>..<U1CC7>;<U1CD0>..<U1CFA>;<U1D00>..<U1F15>;/
- <U1F18>..<U1F1D>;<U1F20>..<U1F45>;<U1F48>..<U1F4D>;<U1F50>..<U1F57>;/
- <U1F59>;<U1F5B>;<U1F5D>;<U1F5F>..<U1F7D>;<U1F80>..<U1FB4>;/
- <U1FB6>..<U1FC4>;<U1FC6>..<U1FD3>;<U1FD6>..<U1FDB>;<U1FDD>..<U1FEF>;/
- <U1FF2>..<U1FF4>;<U1FF6>..<U1FFE>;<U2000>..<U2027>;<U202A>..<U2064>;/
- <U2066>..<U2071>;<U2074>..<U208E>;<U2090>..<U209C>;<U20A0>..<U20C0>;/
- <U20D0>..<U20F0>;<U2100>..<U218B>;<U2190>..<U2426>;<U2440>..<U244A>;/
- <U2460>..<U2B73>;<U2B76>..<U2B95>;<U2B97>..<U2CF3>;<U2CF9>..<U2D25>;/
- <U2D27>;<U2D2D>;<U2D30>..<U2D67>;<U2D6F>..<U2D70>;<U2D7F>..<U2D96>;/
- <U2DA0>..<U2DA6>;<U2DA8>..<U2DAE>;<U2DB0>..<U2DB6>;<U2DB8>..<U2DBE>;/
- <U2DC0>..<U2DC6>;<U2DC8>..<U2DCE>;<U2DD0>..<U2DD6>;<U2DD8>..<U2DDE>;/
- <U2DE0>..<U2E5D>;<U2E80>..<U2E99>;<U2E9B>..<U2EF3>;<U2F00>..<U2FD5>;/
- <U2FF0>..<U303F>;<U3041>..<U3096>;<U3099>..<U30FF>;<U3105>..<U312F>;/
- <U3131>..<U318E>;<U3190>..<U31E3>;<U31EF>..<U321E>;<U3220>..<UA48C>;/
- <UA490>..<UA4C6>;<UA4D0>..<UA62B>;<UA640>..<UA6F7>;<UA700>..<UA7CA>;/
- <UA7D0>..<UA7D1>;<UA7D3>;<UA7D5>..<UA7D9>;<UA7F2>..<UA82C>;/
- <UA830>..<UA839>;<UA840>..<UA877>;<UA880>..<UA8C5>;<UA8CE>..<UA8D9>;/
- <UA8E0>..<UA953>;<UA95F>..<UA97C>;<UA980>..<UA9CD>;<UA9CF>..<UA9D9>;/
- <UA9DE>..<UA9FE>;<UAA00>..<UAA36>;<UAA40>..<UAA4D>;<UAA50>..<UAA59>;/
- <UAA5C>..<UAAC2>;<UAADB>..<UAAF6>;<UAB01>..<UAB06>;<UAB09>..<UAB0E>;/
- <UAB11>..<UAB16>;<UAB20>..<UAB26>;<UAB28>..<UAB2E>;<UAB30>..<UAB6B>;/
- <UAB70>..<UABED>;<UABF0>..<UABF9>;<UAC00>..<UD7A3>;<UD7B0>..<UD7C6>;/
- <UD7CB>..<UD7FB>;<UE000>..<UFA6D>;<UFA70>..<UFAD9>;<UFB00>..<UFB06>;/
- <UFB13>..<UFB17>;<UFB1D>..<UFB36>;<UFB38>..<UFB3C>;<UFB3E>;/
- <UFB40>..<UFB41>;<UFB43>..<UFB44>;<UFB46>..<UFBC2>;<UFBD3>..<UFD8F>;/
- <UFD92>..<UFDC7>;<UFDCF>;<UFDF0>..<UFE19>;<UFE20>..<UFE52>;/
- <UFE54>..<UFE66>;<UFE68>..<UFE6B>;<UFE70>..<UFE74>;<UFE76>..<UFEFC>;/
- <UFEFF>;<UFF01>..<UFFBE>;<UFFC2>..<UFFC7>;<UFFCA>..<UFFCF>;/
- <UFFD2>..<UFFD7>;<UFFDA>..<UFFDC>;<UFFE0>..<UFFE6>;<UFFE8>..<UFFEE>;/
- <UFFF9>..<UFFFD>;<U00010000>..<U0001000B>;<U0001000D>..<U00010026>;/
+ <U1AA0>..<U1AAD>;<U1AB0>..<U1ACE>;<U1B00>..<U1B4C>;<U1B4E>..<U1BF3>;/
+ <U1BFC>..<U1C37>;<U1C3B>..<U1C49>;<U1C4D>..<U1C8A>;<U1C90>..<U1CBA>;/
+ <U1CBD>..<U1CC7>;<U1CD0>..<U1CFA>;<U1D00>..<U1F15>;<U1F18>..<U1F1D>;/
+ <U1F20>..<U1F45>;<U1F48>..<U1F4D>;<U1F50>..<U1F57>;<U1F59>;<U1F5B>;/
+ <U1F5D>;<U1F5F>..<U1F7D>;<U1F80>..<U1FB4>;<U1FB6>..<U1FC4>;/
+ <U1FC6>..<U1FD3>;<U1FD6>..<U1FDB>;<U1FDD>..<U1FEF>;<U1FF2>..<U1FF4>;/
+ <U1FF6>..<U1FFE>;<U2000>..<U2027>;<U202A>..<U2064>;<U2066>..<U2071>;/
+ <U2074>..<U208E>;<U2090>..<U209C>;<U20A0>..<U20C0>;<U20D0>..<U20F0>;/
+ <U2100>..<U218B>;<U2190>..<U2429>;<U2440>..<U244A>;<U2460>..<U2B73>;/
+ <U2B76>..<U2B95>;<U2B97>..<U2CF3>;<U2CF9>..<U2D25>;<U2D27>;<U2D2D>;/
+ <U2D30>..<U2D67>;<U2D6F>..<U2D70>;<U2D7F>..<U2D96>;<U2DA0>..<U2DA6>;/
+ <U2DA8>..<U2DAE>;<U2DB0>..<U2DB6>;<U2DB8>..<U2DBE>;<U2DC0>..<U2DC6>;/
+ <U2DC8>..<U2DCE>;<U2DD0>..<U2DD6>;<U2DD8>..<U2DDE>;<U2DE0>..<U2E5D>;/
+ <U2E80>..<U2E99>;<U2E9B>..<U2EF3>;<U2F00>..<U2FD5>;<U2FF0>..<U303F>;/
+ <U3041>..<U3096>;<U3099>..<U30FF>;<U3105>..<U312F>;<U3131>..<U318E>;/
+ <U3190>..<U31E5>;<U31EF>..<U321E>;<U3220>..<UA48C>;<UA490>..<UA4C6>;/
+ <UA4D0>..<UA62B>;<UA640>..<UA6F7>;<UA700>..<UA7CD>;<UA7D0>..<UA7D1>;/
+ <UA7D3>;<UA7D5>..<UA7DC>;<UA7F2>..<UA82C>;<UA830>..<UA839>;/
+ <UA840>..<UA877>;<UA880>..<UA8C5>;<UA8CE>..<UA8D9>;<UA8E0>..<UA953>;/
+ <UA95F>..<UA97C>;<UA980>..<UA9CD>;<UA9CF>..<UA9D9>;<UA9DE>..<UA9FE>;/
+ <UAA00>..<UAA36>;<UAA40>..<UAA4D>;<UAA50>..<UAA59>;<UAA5C>..<UAAC2>;/
+ <UAADB>..<UAAF6>;<UAB01>..<UAB06>;<UAB09>..<UAB0E>;<UAB11>..<UAB16>;/
+ <UAB20>..<UAB26>;<UAB28>..<UAB2E>;<UAB30>..<UAB6B>;<UAB70>..<UABED>;/
+ <UABF0>..<UABF9>;<UAC00>..<UD7A3>;<UD7B0>..<UD7C6>;<UD7CB>..<UD7FB>;/
+ <UE000>..<UFA6D>;<UFA70>..<UFAD9>;<UFB00>..<UFB06>;<UFB13>..<UFB17>;/
+ <UFB1D>..<UFB36>;<UFB38>..<UFB3C>;<UFB3E>;<UFB40>..<UFB41>;/
+ <UFB43>..<UFB44>;<UFB46>..<UFBC2>;<UFBD3>..<UFD8F>;<UFD92>..<UFDC7>;/
+ <UFDCF>;<UFDF0>..<UFE19>;<UFE20>..<UFE52>;<UFE54>..<UFE66>;/
+ <UFE68>..<UFE6B>;<UFE70>..<UFE74>;<UFE76>..<UFEFC>;<UFEFF>;/
+ <UFF01>..<UFFBE>;<UFFC2>..<UFFC7>;<UFFCA>..<UFFCF>;<UFFD2>..<UFFD7>;/
+ <UFFDA>..<UFFDC>;<UFFE0>..<UFFE6>;<UFFE8>..<UFFEE>;<UFFF9>..<UFFFD>;/
+ <U00010000>..<U0001000B>;<U0001000D>..<U00010026>;/
<U00010028>..<U0001003A>;<U0001003C>..<U0001003D>;/
<U0001003F>..<U0001004D>;<U00010050>..<U0001005D>;/
<U00010080>..<U000100FA>;<U00010100>..<U00010102>;/
@@ -1110,94 +1142,105 @@ print /
<U0001057C>..<U0001058A>;<U0001058C>..<U00010592>;/
<U00010594>..<U00010595>;<U00010597>..<U000105A1>;/
<U000105A3>..<U000105B1>;<U000105B3>..<U000105B9>;/
- <U000105BB>..<U000105BC>;<U00010600>..<U00010736>;/
- <U00010740>..<U00010755>;<U00010760>..<U00010767>;/
- <U00010780>..<U00010785>;<U00010787>..<U000107B0>;/
- <U000107B2>..<U000107BA>;<U00010800>..<U00010805>;<U00010808>;/
- <U0001080A>..<U00010835>;<U00010837>..<U00010838>;<U0001083C>;/
- <U0001083F>..<U00010855>;<U00010857>..<U0001089E>;/
- <U000108A7>..<U000108AF>;<U000108E0>..<U000108F2>;/
- <U000108F4>..<U000108F5>;<U000108FB>..<U0001091B>;/
- <U0001091F>..<U00010939>;<U0001093F>;<U00010980>..<U000109B7>;/
- <U000109BC>..<U000109CF>;<U000109D2>..<U00010A03>;/
- <U00010A05>..<U00010A06>;<U00010A0C>..<U00010A13>;/
- <U00010A15>..<U00010A17>;<U00010A19>..<U00010A35>;/
- <U00010A38>..<U00010A3A>;<U00010A3F>..<U00010A48>;/
- <U00010A50>..<U00010A58>;<U00010A60>..<U00010A9F>;/
- <U00010AC0>..<U00010AE6>;<U00010AEB>..<U00010AF6>;/
- <U00010B00>..<U00010B35>;<U00010B39>..<U00010B55>;/
- <U00010B58>..<U00010B72>;<U00010B78>..<U00010B91>;/
- <U00010B99>..<U00010B9C>;<U00010BA9>..<U00010BAF>;/
- <U00010C00>..<U00010C48>;<U00010C80>..<U00010CB2>;/
- <U00010CC0>..<U00010CF2>;<U00010CFA>..<U00010D27>;/
- <U00010D30>..<U00010D39>;<U00010E60>..<U00010E7E>;/
+ <U000105BB>..<U000105BC>;<U000105C0>..<U000105F3>;/
+ <U00010600>..<U00010736>;<U00010740>..<U00010755>;/
+ <U00010760>..<U00010767>;<U00010780>..<U00010785>;/
+ <U00010787>..<U000107B0>;<U000107B2>..<U000107BA>;/
+ <U00010800>..<U00010805>;<U00010808>;<U0001080A>..<U00010835>;/
+ <U00010837>..<U00010838>;<U0001083C>;<U0001083F>..<U00010855>;/
+ <U00010857>..<U0001089E>;<U000108A7>..<U000108AF>;/
+ <U000108E0>..<U000108F2>;<U000108F4>..<U000108F5>;/
+ <U000108FB>..<U0001091B>;<U0001091F>..<U00010939>;<U0001093F>;/
+ <U00010980>..<U000109B7>;<U000109BC>..<U000109CF>;/
+ <U000109D2>..<U00010A03>;<U00010A05>..<U00010A06>;/
+ <U00010A0C>..<U00010A13>;<U00010A15>..<U00010A17>;/
+ <U00010A19>..<U00010A35>;<U00010A38>..<U00010A3A>;/
+ <U00010A3F>..<U00010A48>;<U00010A50>..<U00010A58>;/
+ <U00010A60>..<U00010A9F>;<U00010AC0>..<U00010AE6>;/
+ <U00010AEB>..<U00010AF6>;<U00010B00>..<U00010B35>;/
+ <U00010B39>..<U00010B55>;<U00010B58>..<U00010B72>;/
+ <U00010B78>..<U00010B91>;<U00010B99>..<U00010B9C>;/
+ <U00010BA9>..<U00010BAF>;<U00010C00>..<U00010C48>;/
+ <U00010C80>..<U00010CB2>;<U00010CC0>..<U00010CF2>;/
+ <U00010CFA>..<U00010D27>;<U00010D30>..<U00010D39>;/
+ <U00010D40>..<U00010D65>;<U00010D69>..<U00010D85>;/
+ <U00010D8E>..<U00010D8F>;<U00010E60>..<U00010E7E>;/
<U00010E80>..<U00010EA9>;<U00010EAB>..<U00010EAD>;/
- <U00010EB0>..<U00010EB1>;<U00010EFD>..<U00010F27>;/
- <U00010F30>..<U00010F59>;<U00010F70>..<U00010F89>;/
- <U00010FB0>..<U00010FCB>;<U00010FE0>..<U00010FF6>;/
- <U00011000>..<U0001104D>;<U00011052>..<U00011075>;/
- <U0001107F>..<U000110C2>;<U000110CD>;<U000110D0>..<U000110E8>;/
- <U000110F0>..<U000110F9>;<U00011100>..<U00011134>;/
- <U00011136>..<U00011147>;<U00011150>..<U00011176>;/
- <U00011180>..<U000111DF>;<U000111E1>..<U000111F4>;/
- <U00011200>..<U00011211>;<U00011213>..<U00011241>;/
- <U00011280>..<U00011286>;<U00011288>;<U0001128A>..<U0001128D>;/
- <U0001128F>..<U0001129D>;<U0001129F>..<U000112A9>;/
- <U000112B0>..<U000112EA>;<U000112F0>..<U000112F9>;/
- <U00011300>..<U00011303>;<U00011305>..<U0001130C>;/
- <U0001130F>..<U00011310>;<U00011313>..<U00011328>;/
- <U0001132A>..<U00011330>;<U00011332>..<U00011333>;/
- <U00011335>..<U00011339>;<U0001133B>..<U00011344>;/
- <U00011347>..<U00011348>;<U0001134B>..<U0001134D>;<U00011350>;/
- <U00011357>;<U0001135D>..<U00011363>;<U00011366>..<U0001136C>;/
- <U00011370>..<U00011374>;<U00011400>..<U0001145B>;/
+ <U00010EB0>..<U00010EB1>;<U00010EC2>..<U00010EC4>;/
+ <U00010EFC>..<U00010F27>;<U00010F30>..<U00010F59>;/
+ <U00010F70>..<U00010F89>;<U00010FB0>..<U00010FCB>;/
+ <U00010FE0>..<U00010FF6>;<U00011000>..<U0001104D>;/
+ <U00011052>..<U00011075>;<U0001107F>..<U000110C2>;<U000110CD>;/
+ <U000110D0>..<U000110E8>;<U000110F0>..<U000110F9>;/
+ <U00011100>..<U00011134>;<U00011136>..<U00011147>;/
+ <U00011150>..<U00011176>;<U00011180>..<U000111DF>;/
+ <U000111E1>..<U000111F4>;<U00011200>..<U00011211>;/
+ <U00011213>..<U00011241>;<U00011280>..<U00011286>;<U00011288>;/
+ <U0001128A>..<U0001128D>;<U0001128F>..<U0001129D>;/
+ <U0001129F>..<U000112A9>;<U000112B0>..<U000112EA>;/
+ <U000112F0>..<U000112F9>;<U00011300>..<U00011303>;/
+ <U00011305>..<U0001130C>;<U0001130F>..<U00011310>;/
+ <U00011313>..<U00011328>;<U0001132A>..<U00011330>;/
+ <U00011332>..<U00011333>;<U00011335>..<U00011339>;/
+ <U0001133B>..<U00011344>;<U00011347>..<U00011348>;/
+ <U0001134B>..<U0001134D>;<U00011350>;<U00011357>;/
+ <U0001135D>..<U00011363>;<U00011366>..<U0001136C>;/
+ <U00011370>..<U00011374>;<U00011380>..<U00011389>;<U0001138B>;/
+ <U0001138E>;<U00011390>..<U000113B5>;<U000113B7>..<U000113C0>;/
+ <U000113C2>;<U000113C5>;<U000113C7>..<U000113CA>;/
+ <U000113CC>..<U000113D5>;<U000113D7>..<U000113D8>;/
+ <U000113E1>..<U000113E2>;<U00011400>..<U0001145B>;/
<U0001145D>..<U00011461>;<U00011480>..<U000114C7>;/
<U000114D0>..<U000114D9>;<U00011580>..<U000115B5>;/
<U000115B8>..<U000115DD>;<U00011600>..<U00011644>;/
<U00011650>..<U00011659>;<U00011660>..<U0001166C>;/
<U00011680>..<U000116B9>;<U000116C0>..<U000116C9>;/
- <U00011700>..<U0001171A>;<U0001171D>..<U0001172B>;/
- <U00011730>..<U00011746>;<U00011800>..<U0001183B>;/
- <U000118A0>..<U000118F2>;<U000118FF>..<U00011906>;<U00011909>;/
- <U0001190C>..<U00011913>;<U00011915>..<U00011916>;/
- <U00011918>..<U00011935>;<U00011937>..<U00011938>;/
- <U0001193B>..<U00011946>;<U00011950>..<U00011959>;/
- <U000119A0>..<U000119A7>;<U000119AA>..<U000119D7>;/
- <U000119DA>..<U000119E4>;<U00011A00>..<U00011A47>;/
- <U00011A50>..<U00011AA2>;<U00011AB0>..<U00011AF8>;/
- <U00011B00>..<U00011B09>;<U00011C00>..<U00011C08>;/
- <U00011C0A>..<U00011C36>;<U00011C38>..<U00011C45>;/
- <U00011C50>..<U00011C6C>;<U00011C70>..<U00011C8F>;/
- <U00011C92>..<U00011CA7>;<U00011CA9>..<U00011CB6>;/
- <U00011D00>..<U00011D06>;<U00011D08>..<U00011D09>;/
- <U00011D0B>..<U00011D36>;<U00011D3A>;<U00011D3C>..<U00011D3D>;/
- <U00011D3F>..<U00011D47>;<U00011D50>..<U00011D59>;/
- <U00011D60>..<U00011D65>;<U00011D67>..<U00011D68>;/
- <U00011D6A>..<U00011D8E>;<U00011D90>..<U00011D91>;/
- <U00011D93>..<U00011D98>;<U00011DA0>..<U00011DA9>;/
- <U00011EE0>..<U00011EF8>;<U00011F00>..<U00011F10>;/
- <U00011F12>..<U00011F3A>;<U00011F3E>..<U00011F59>;<U00011FB0>;/
- <U00011FC0>..<U00011FF1>;<U00011FFF>..<U00012399>;/
- <U00012400>..<U0001246E>;<U00012470>..<U00012474>;/
- <U00012480>..<U00012543>;<U00012F90>..<U00012FF2>;/
- <U00013000>..<U00013455>;<U00014400>..<U00014646>;/
- <U00016800>..<U00016A38>;<U00016A40>..<U00016A5E>;/
- <U00016A60>..<U00016A69>;<U00016A6E>..<U00016ABE>;/
- <U00016AC0>..<U00016AC9>;<U00016AD0>..<U00016AED>;/
- <U00016AF0>..<U00016AF5>;<U00016B00>..<U00016B45>;/
- <U00016B50>..<U00016B59>;<U00016B5B>..<U00016B61>;/
- <U00016B63>..<U00016B77>;<U00016B7D>..<U00016B8F>;/
+ <U000116D0>..<U000116E3>;<U00011700>..<U0001171A>;/
+ <U0001171D>..<U0001172B>;<U00011730>..<U00011746>;/
+ <U00011800>..<U0001183B>;<U000118A0>..<U000118F2>;/
+ <U000118FF>..<U00011906>;<U00011909>;<U0001190C>..<U00011913>;/
+ <U00011915>..<U00011916>;<U00011918>..<U00011935>;/
+ <U00011937>..<U00011938>;<U0001193B>..<U00011946>;/
+ <U00011950>..<U00011959>;<U000119A0>..<U000119A7>;/
+ <U000119AA>..<U000119D7>;<U000119DA>..<U000119E4>;/
+ <U00011A00>..<U00011A47>;<U00011A50>..<U00011AA2>;/
+ <U00011AB0>..<U00011AF8>;<U00011B00>..<U00011B09>;/
+ <U00011BC0>..<U00011BE1>;<U00011BF0>..<U00011BF9>;/
+ <U00011C00>..<U00011C08>;<U00011C0A>..<U00011C36>;/
+ <U00011C38>..<U00011C45>;<U00011C50>..<U00011C6C>;/
+ <U00011C70>..<U00011C8F>;<U00011C92>..<U00011CA7>;/
+ <U00011CA9>..<U00011CB6>;<U00011D00>..<U00011D06>;/
+ <U00011D08>..<U00011D09>;<U00011D0B>..<U00011D36>;<U00011D3A>;/
+ <U00011D3C>..<U00011D3D>;<U00011D3F>..<U00011D47>;/
+ <U00011D50>..<U00011D59>;<U00011D60>..<U00011D65>;/
+ <U00011D67>..<U00011D68>;<U00011D6A>..<U00011D8E>;/
+ <U00011D90>..<U00011D91>;<U00011D93>..<U00011D98>;/
+ <U00011DA0>..<U00011DA9>;<U00011EE0>..<U00011EF8>;/
+ <U00011F00>..<U00011F10>;<U00011F12>..<U00011F3A>;/
+ <U00011F3E>..<U00011F5A>;<U00011FB0>;<U00011FC0>..<U00011FF1>;/
+ <U00011FFF>..<U00012399>;<U00012400>..<U0001246E>;/
+ <U00012470>..<U00012474>;<U00012480>..<U00012543>;/
+ <U00012F90>..<U00012FF2>;<U00013000>..<U00013455>;/
+ <U00013460>..<U000143FA>;<U00014400>..<U00014646>;/
+ <U00016100>..<U00016139>;<U00016800>..<U00016A38>;/
+ <U00016A40>..<U00016A5E>;<U00016A60>..<U00016A69>;/
+ <U00016A6E>..<U00016ABE>;<U00016AC0>..<U00016AC9>;/
+ <U00016AD0>..<U00016AED>;<U00016AF0>..<U00016AF5>;/
+ <U00016B00>..<U00016B45>;<U00016B50>..<U00016B59>;/
+ <U00016B5B>..<U00016B61>;<U00016B63>..<U00016B77>;/
+ <U00016B7D>..<U00016B8F>;<U00016D40>..<U00016D79>;/
<U00016E40>..<U00016E9A>;<U00016F00>..<U00016F4A>;/
<U00016F4F>..<U00016F87>;<U00016F8F>..<U00016F9F>;/
<U00016FE0>..<U00016FE4>;<U00016FF0>..<U00016FF1>;/
<U00017000>..<U000187F7>;<U00018800>..<U00018CD5>;/
- <U00018D00>..<U00018D08>;<U0001AFF0>..<U0001AFF3>;/
+ <U00018CFF>..<U00018D08>;<U0001AFF0>..<U0001AFF3>;/
<U0001AFF5>..<U0001AFFB>;<U0001AFFD>..<U0001AFFE>;/
<U0001B000>..<U0001B122>;<U0001B132>;<U0001B150>..<U0001B152>;/
<U0001B155>;<U0001B164>..<U0001B167>;<U0001B170>..<U0001B2FB>;/
<U0001BC00>..<U0001BC6A>;<U0001BC70>..<U0001BC7C>;/
<U0001BC80>..<U0001BC88>;<U0001BC90>..<U0001BC99>;/
- <U0001BC9C>..<U0001BCA3>;<U0001CF00>..<U0001CF2D>;/
+ <U0001BC9C>..<U0001BCA3>;<U0001CC00>..<U0001CCF9>;/
+ <U0001CD00>..<U0001CEB3>;<U0001CF00>..<U0001CF2D>;/
<U0001CF30>..<U0001CF46>;<U0001CF50>..<U0001CFC3>;/
<U0001D000>..<U0001D0F5>;<U0001D100>..<U0001D126>;/
<U0001D129>..<U0001D1EA>;<U0001D200>..<U0001D245>;/
@@ -1220,16 +1263,16 @@ print /
<U0001E100>..<U0001E12C>;<U0001E130>..<U0001E13D>;/
<U0001E140>..<U0001E149>;<U0001E14E>..<U0001E14F>;/
<U0001E290>..<U0001E2AE>;<U0001E2C0>..<U0001E2F9>;<U0001E2FF>;/
- <U0001E4D0>..<U0001E4F9>;<U0001E7E0>..<U0001E7E6>;/
- <U0001E7E8>..<U0001E7EB>;<U0001E7ED>..<U0001E7EE>;/
- <U0001E7F0>..<U0001E7FE>;<U0001E800>..<U0001E8C4>;/
- <U0001E8C7>..<U0001E8D6>;<U0001E900>..<U0001E94B>;/
- <U0001E950>..<U0001E959>;<U0001E95E>..<U0001E95F>;/
- <U0001EC71>..<U0001ECB4>;<U0001ED01>..<U0001ED3D>;/
- <U0001EE00>..<U0001EE03>;<U0001EE05>..<U0001EE1F>;/
- <U0001EE21>..<U0001EE22>;<U0001EE24>;<U0001EE27>;/
- <U0001EE29>..<U0001EE32>;<U0001EE34>..<U0001EE37>;<U0001EE39>;/
- <U0001EE3B>;<U0001EE42>;<U0001EE47>;<U0001EE49>;<U0001EE4B>;/
+ <U0001E4D0>..<U0001E4F9>;<U0001E5D0>..<U0001E5FA>;<U0001E5FF>;/
+ <U0001E7E0>..<U0001E7E6>;<U0001E7E8>..<U0001E7EB>;/
+ <U0001E7ED>..<U0001E7EE>;<U0001E7F0>..<U0001E7FE>;/
+ <U0001E800>..<U0001E8C4>;<U0001E8C7>..<U0001E8D6>;/
+ <U0001E900>..<U0001E94B>;<U0001E950>..<U0001E959>;/
+ <U0001E95E>..<U0001E95F>;<U0001EC71>..<U0001ECB4>;/
+ <U0001ED01>..<U0001ED3D>;<U0001EE00>..<U0001EE03>;/
+ <U0001EE05>..<U0001EE1F>;<U0001EE21>..<U0001EE22>;<U0001EE24>;/
+ <U0001EE27>;<U0001EE29>..<U0001EE32>;<U0001EE34>..<U0001EE37>;/
+ <U0001EE39>;<U0001EE3B>;<U0001EE42>;<U0001EE47>;<U0001EE49>;<U0001EE4B>;/
<U0001EE4D>..<U0001EE4F>;<U0001EE51>..<U0001EE52>;<U0001EE54>;/
<U0001EE57>;<U0001EE59>;<U0001EE5B>;<U0001EE5D>;<U0001EE5F>;/
<U0001EE61>..<U0001EE62>;<U0001EE64>;<U0001EE67>..<U0001EE6A>;/
@@ -1249,19 +1292,19 @@ print /
<U0001F7E0>..<U0001F7EB>;<U0001F7F0>;<U0001F800>..<U0001F80B>;/
<U0001F810>..<U0001F847>;<U0001F850>..<U0001F859>;/
<U0001F860>..<U0001F887>;<U0001F890>..<U0001F8AD>;/
- <U0001F8B0>..<U0001F8B1>;<U0001F900>..<U0001FA53>;/
- <U0001FA60>..<U0001FA6D>;<U0001FA70>..<U0001FA7C>;/
- <U0001FA80>..<U0001FA88>;<U0001FA90>..<U0001FABD>;/
- <U0001FABF>..<U0001FAC5>;<U0001FACE>..<U0001FADB>;/
- <U0001FAE0>..<U0001FAE8>;<U0001FAF0>..<U0001FAF8>;/
- <U0001FB00>..<U0001FB92>;<U0001FB94>..<U0001FBCA>;/
- <U0001FBF0>..<U0001FBF9>;<U00020000>..<U0002A6DF>;/
- <U0002A700>..<U0002B739>;<U0002B740>..<U0002B81D>;/
- <U0002B820>..<U0002CEA1>;<U0002CEB0>..<U0002EBE0>;/
- <U0002EBF0>..<U0002EE5D>;<U0002F800>..<U0002FA1D>;/
- <U00030000>..<U0003134A>;<U00031350>..<U000323AF>;<U000E0001>;/
- <U000E0020>..<U000E007F>;<U000E0100>..<U000E01EF>;/
- <U000F0000>..<U000FFFFD>;<U00100000>..<U0010FFFD>
+ <U0001F8B0>..<U0001F8BB>;<U0001F8C0>..<U0001F8C1>;/
+ <U0001F900>..<U0001FA53>;<U0001FA60>..<U0001FA6D>;/
+ <U0001FA70>..<U0001FA7C>;<U0001FA80>..<U0001FA89>;/
+ <U0001FA8F>..<U0001FAC6>;<U0001FACE>..<U0001FADC>;/
+ <U0001FADF>..<U0001FAE9>;<U0001FAF0>..<U0001FAF8>;/
+ <U0001FB00>..<U0001FB92>;<U0001FB94>..<U0001FBF9>;/
+ <U00020000>..<U0002A6DF>;<U0002A700>..<U0002B739>;/
+ <U0002B740>..<U0002B81D>;<U0002B820>..<U0002CEA1>;/
+ <U0002CEB0>..<U0002EBE0>;<U0002EBF0>..<U0002EE5D>;/
+ <U0002F800>..<U0002FA1D>;<U00030000>..<U0003134A>;/
+ <U00031350>..<U000323AF>;<U000E0001>;<U000E0020>..<U000E007F>;/
+ <U000E0100>..<U000E01EF>;<U000F0000>..<U000FFFFD>;/
+ <U00100000>..<U0010FFFD>
% The "xdigit" class must only contain the BASIC LATIN digits and A-F, a-f,
% says ISO C 99 (sections 7.25.2.1.12 and 6.4.4.1).
@@ -1306,402 +1349,414 @@ toupper /
(<U0177>,<U0176>);(<U017A>,<U0179>);(<U017C>,<U017B>);(<U017E>,<U017D>);/
(<U017F>,<U0053>);(<U0180>,<U0243>);(<U0183>,<U0182>);(<U0185>,<U0184>);/
(<U0188>,<U0187>);(<U018C>,<U018B>);(<U0192>,<U0191>);(<U0195>,<U01F6>);/
- (<U0199>,<U0198>);(<U019A>,<U023D>);(<U019E>,<U0220>);(<U01A1>,<U01A0>);/
- (<U01A3>,<U01A2>);(<U01A5>,<U01A4>);(<U01A8>,<U01A7>);(<U01AD>,<U01AC>);/
- (<U01B0>,<U01AF>);(<U01B4>,<U01B3>);(<U01B6>,<U01B5>);(<U01B9>,<U01B8>);/
- (<U01BD>,<U01BC>);(<U01BF>,<U01F7>);(<U01C5>,<U01C4>);(<U01C6>,<U01C4>);/
- (<U01C8>,<U01C7>);(<U01C9>,<U01C7>);(<U01CB>,<U01CA>);(<U01CC>,<U01CA>);/
- (<U01CE>,<U01CD>);(<U01D0>,<U01CF>);(<U01D2>,<U01D1>);(<U01D4>,<U01D3>);/
- (<U01D6>,<U01D5>);(<U01D8>,<U01D7>);(<U01DA>,<U01D9>);(<U01DC>,<U01DB>);/
- (<U01DD>,<U018E>);(<U01DF>,<U01DE>);(<U01E1>,<U01E0>);(<U01E3>,<U01E2>);/
- (<U01E5>,<U01E4>);(<U01E7>,<U01E6>);(<U01E9>,<U01E8>);(<U01EB>,<U01EA>);/
- (<U01ED>,<U01EC>);(<U01EF>,<U01EE>);(<U01F2>,<U01F1>);(<U01F3>,<U01F1>);/
- (<U01F5>,<U01F4>);(<U01F9>,<U01F8>);(<U01FB>,<U01FA>);(<U01FD>,<U01FC>);/
- (<U01FF>,<U01FE>);(<U0201>,<U0200>);(<U0203>,<U0202>);(<U0205>,<U0204>);/
- (<U0207>,<U0206>);(<U0209>,<U0208>);(<U020B>,<U020A>);(<U020D>,<U020C>);/
- (<U020F>,<U020E>);(<U0211>,<U0210>);(<U0213>,<U0212>);(<U0215>,<U0214>);/
- (<U0217>,<U0216>);(<U0219>,<U0218>);(<U021B>,<U021A>);(<U021D>,<U021C>);/
- (<U021F>,<U021E>);(<U0223>,<U0222>);(<U0225>,<U0224>);(<U0227>,<U0226>);/
- (<U0229>,<U0228>);(<U022B>,<U022A>);(<U022D>,<U022C>);(<U022F>,<U022E>);/
- (<U0231>,<U0230>);(<U0233>,<U0232>);(<U023C>,<U023B>);(<U023F>,<U2C7E>);/
- (<U0240>,<U2C7F>);(<U0242>,<U0241>);(<U0247>,<U0246>);(<U0249>,<U0248>);/
- (<U024B>,<U024A>);(<U024D>,<U024C>);(<U024F>,<U024E>);(<U0250>,<U2C6F>);/
- (<U0251>,<U2C6D>);(<U0252>,<U2C70>);(<U0253>,<U0181>);(<U0254>,<U0186>);/
- (<U0256>,<U0189>);(<U0257>,<U018A>);(<U0259>,<U018F>);(<U025B>,<U0190>);/
- (<U025C>,<UA7AB>);(<U0260>,<U0193>);(<U0261>,<UA7AC>);(<U0263>,<U0194>);/
- (<U0265>,<UA78D>);(<U0266>,<UA7AA>);(<U0268>,<U0197>);(<U0269>,<U0196>);/
- (<U026A>,<UA7AE>);(<U026B>,<U2C62>);(<U026C>,<UA7AD>);(<U026F>,<U019C>);/
- (<U0271>,<U2C6E>);(<U0272>,<U019D>);(<U0275>,<U019F>);(<U027D>,<U2C64>);/
- (<U0280>,<U01A6>);(<U0282>,<UA7C5>);(<U0283>,<U01A9>);(<U0287>,<UA7B1>);/
- (<U0288>,<U01AE>);(<U0289>,<U0244>);(<U028A>,<U01B1>);(<U028B>,<U01B2>);/
- (<U028C>,<U0245>);(<U0292>,<U01B7>);(<U029D>,<UA7B2>);(<U029E>,<UA7B0>);/
- (<U0345>,<U0399>);(<U0371>,<U0370>);(<U0373>,<U0372>);(<U0377>,<U0376>);/
- (<U037B>,<U03FD>);(<U037C>,<U03FE>);(<U037D>,<U03FF>);(<U03AC>,<U0386>);/
- (<U03AD>,<U0388>);(<U03AE>,<U0389>);(<U03AF>,<U038A>);(<U03B1>,<U0391>);/
- (<U03B2>,<U0392>);(<U03B3>,<U0393>);(<U03B4>,<U0394>);(<U03B5>,<U0395>);/
- (<U03B6>,<U0396>);(<U03B7>,<U0397>);(<U03B8>,<U0398>);(<U03B9>,<U0399>);/
- (<U03BA>,<U039A>);(<U03BB>,<U039B>);(<U03BC>,<U039C>);(<U03BD>,<U039D>);/
- (<U03BE>,<U039E>);(<U03BF>,<U039F>);(<U03C0>,<U03A0>);(<U03C1>,<U03A1>);/
- (<U03C2>,<U03A3>);(<U03C3>,<U03A3>);(<U03C4>,<U03A4>);(<U03C5>,<U03A5>);/
- (<U03C6>,<U03A6>);(<U03C7>,<U03A7>);(<U03C8>,<U03A8>);(<U03C9>,<U03A9>);/
- (<U03CA>,<U03AA>);(<U03CB>,<U03AB>);(<U03CC>,<U038C>);(<U03CD>,<U038E>);/
- (<U03CE>,<U038F>);(<U03D0>,<U0392>);(<U03D1>,<U0398>);(<U03D5>,<U03A6>);/
- (<U03D6>,<U03A0>);(<U03D7>,<U03CF>);(<U03D9>,<U03D8>);(<U03DB>,<U03DA>);/
- (<U03DD>,<U03DC>);(<U03DF>,<U03DE>);(<U03E1>,<U03E0>);(<U03E3>,<U03E2>);/
- (<U03E5>,<U03E4>);(<U03E7>,<U03E6>);(<U03E9>,<U03E8>);(<U03EB>,<U03EA>);/
- (<U03ED>,<U03EC>);(<U03EF>,<U03EE>);(<U03F0>,<U039A>);(<U03F1>,<U03A1>);/
- (<U03F2>,<U03F9>);(<U03F3>,<U037F>);(<U03F5>,<U0395>);(<U03F8>,<U03F7>);/
- (<U03FB>,<U03FA>);(<U0430>,<U0410>);(<U0431>,<U0411>);(<U0432>,<U0412>);/
- (<U0433>,<U0413>);(<U0434>,<U0414>);(<U0435>,<U0415>);(<U0436>,<U0416>);/
- (<U0437>,<U0417>);(<U0438>,<U0418>);(<U0439>,<U0419>);(<U043A>,<U041A>);/
- (<U043B>,<U041B>);(<U043C>,<U041C>);(<U043D>,<U041D>);(<U043E>,<U041E>);/
- (<U043F>,<U041F>);(<U0440>,<U0420>);(<U0441>,<U0421>);(<U0442>,<U0422>);/
- (<U0443>,<U0423>);(<U0444>,<U0424>);(<U0445>,<U0425>);(<U0446>,<U0426>);/
- (<U0447>,<U0427>);(<U0448>,<U0428>);(<U0449>,<U0429>);(<U044A>,<U042A>);/
- (<U044B>,<U042B>);(<U044C>,<U042C>);(<U044D>,<U042D>);(<U044E>,<U042E>);/
- (<U044F>,<U042F>);(<U0450>,<U0400>);(<U0451>,<U0401>);(<U0452>,<U0402>);/
- (<U0453>,<U0403>);(<U0454>,<U0404>);(<U0455>,<U0405>);(<U0456>,<U0406>);/
- (<U0457>,<U0407>);(<U0458>,<U0408>);(<U0459>,<U0409>);(<U045A>,<U040A>);/
- (<U045B>,<U040B>);(<U045C>,<U040C>);(<U045D>,<U040D>);(<U045E>,<U040E>);/
- (<U045F>,<U040F>);(<U0461>,<U0460>);(<U0463>,<U0462>);(<U0465>,<U0464>);/
- (<U0467>,<U0466>);(<U0469>,<U0468>);(<U046B>,<U046A>);(<U046D>,<U046C>);/
- (<U046F>,<U046E>);(<U0471>,<U0470>);(<U0473>,<U0472>);(<U0475>,<U0474>);/
- (<U0477>,<U0476>);(<U0479>,<U0478>);(<U047B>,<U047A>);(<U047D>,<U047C>);/
- (<U047F>,<U047E>);(<U0481>,<U0480>);(<U048B>,<U048A>);(<U048D>,<U048C>);/
- (<U048F>,<U048E>);(<U0491>,<U0490>);(<U0493>,<U0492>);(<U0495>,<U0494>);/
- (<U0497>,<U0496>);(<U0499>,<U0498>);(<U049B>,<U049A>);(<U049D>,<U049C>);/
- (<U049F>,<U049E>);(<U04A1>,<U04A0>);(<U04A3>,<U04A2>);(<U04A5>,<U04A4>);/
- (<U04A7>,<U04A6>);(<U04A9>,<U04A8>);(<U04AB>,<U04AA>);(<U04AD>,<U04AC>);/
- (<U04AF>,<U04AE>);(<U04B1>,<U04B0>);(<U04B3>,<U04B2>);(<U04B5>,<U04B4>);/
- (<U04B7>,<U04B6>);(<U04B9>,<U04B8>);(<U04BB>,<U04BA>);(<U04BD>,<U04BC>);/
- (<U04BF>,<U04BE>);(<U04C2>,<U04C1>);(<U04C4>,<U04C3>);(<U04C6>,<U04C5>);/
- (<U04C8>,<U04C7>);(<U04CA>,<U04C9>);(<U04CC>,<U04CB>);(<U04CE>,<U04CD>);/
- (<U04CF>,<U04C0>);(<U04D1>,<U04D0>);(<U04D3>,<U04D2>);(<U04D5>,<U04D4>);/
- (<U04D7>,<U04D6>);(<U04D9>,<U04D8>);(<U04DB>,<U04DA>);(<U04DD>,<U04DC>);/
- (<U04DF>,<U04DE>);(<U04E1>,<U04E0>);(<U04E3>,<U04E2>);(<U04E5>,<U04E4>);/
- (<U04E7>,<U04E6>);(<U04E9>,<U04E8>);(<U04EB>,<U04EA>);(<U04ED>,<U04EC>);/
- (<U04EF>,<U04EE>);(<U04F1>,<U04F0>);(<U04F3>,<U04F2>);(<U04F5>,<U04F4>);/
- (<U04F7>,<U04F6>);(<U04F9>,<U04F8>);(<U04FB>,<U04FA>);(<U04FD>,<U04FC>);/
- (<U04FF>,<U04FE>);(<U0501>,<U0500>);(<U0503>,<U0502>);(<U0505>,<U0504>);/
- (<U0507>,<U0506>);(<U0509>,<U0508>);(<U050B>,<U050A>);(<U050D>,<U050C>);/
- (<U050F>,<U050E>);(<U0511>,<U0510>);(<U0513>,<U0512>);(<U0515>,<U0514>);/
- (<U0517>,<U0516>);(<U0519>,<U0518>);(<U051B>,<U051A>);(<U051D>,<U051C>);/
- (<U051F>,<U051E>);(<U0521>,<U0520>);(<U0523>,<U0522>);(<U0525>,<U0524>);/
- (<U0527>,<U0526>);(<U0529>,<U0528>);(<U052B>,<U052A>);(<U052D>,<U052C>);/
- (<U052F>,<U052E>);(<U0561>,<U0531>);(<U0562>,<U0532>);(<U0563>,<U0533>);/
- (<U0564>,<U0534>);(<U0565>,<U0535>);(<U0566>,<U0536>);(<U0567>,<U0537>);/
- (<U0568>,<U0538>);(<U0569>,<U0539>);(<U056A>,<U053A>);(<U056B>,<U053B>);/
- (<U056C>,<U053C>);(<U056D>,<U053D>);(<U056E>,<U053E>);(<U056F>,<U053F>);/
- (<U0570>,<U0540>);(<U0571>,<U0541>);(<U0572>,<U0542>);(<U0573>,<U0543>);/
- (<U0574>,<U0544>);(<U0575>,<U0545>);(<U0576>,<U0546>);(<U0577>,<U0547>);/
- (<U0578>,<U0548>);(<U0579>,<U0549>);(<U057A>,<U054A>);(<U057B>,<U054B>);/
- (<U057C>,<U054C>);(<U057D>,<U054D>);(<U057E>,<U054E>);(<U057F>,<U054F>);/
- (<U0580>,<U0550>);(<U0581>,<U0551>);(<U0582>,<U0552>);(<U0583>,<U0553>);/
- (<U0584>,<U0554>);(<U0585>,<U0555>);(<U0586>,<U0556>);(<U10D0>,<U1C90>);/
- (<U10D1>,<U1C91>);(<U10D2>,<U1C92>);(<U10D3>,<U1C93>);(<U10D4>,<U1C94>);/
- (<U10D5>,<U1C95>);(<U10D6>,<U1C96>);(<U10D7>,<U1C97>);(<U10D8>,<U1C98>);/
- (<U10D9>,<U1C99>);(<U10DA>,<U1C9A>);(<U10DB>,<U1C9B>);(<U10DC>,<U1C9C>);/
- (<U10DD>,<U1C9D>);(<U10DE>,<U1C9E>);(<U10DF>,<U1C9F>);(<U10E0>,<U1CA0>);/
- (<U10E1>,<U1CA1>);(<U10E2>,<U1CA2>);(<U10E3>,<U1CA3>);(<U10E4>,<U1CA4>);/
- (<U10E5>,<U1CA5>);(<U10E6>,<U1CA6>);(<U10E7>,<U1CA7>);(<U10E8>,<U1CA8>);/
- (<U10E9>,<U1CA9>);(<U10EA>,<U1CAA>);(<U10EB>,<U1CAB>);(<U10EC>,<U1CAC>);/
- (<U10ED>,<U1CAD>);(<U10EE>,<U1CAE>);(<U10EF>,<U1CAF>);(<U10F0>,<U1CB0>);/
- (<U10F1>,<U1CB1>);(<U10F2>,<U1CB2>);(<U10F3>,<U1CB3>);(<U10F4>,<U1CB4>);/
- (<U10F5>,<U1CB5>);(<U10F6>,<U1CB6>);(<U10F7>,<U1CB7>);(<U10F8>,<U1CB8>);/
- (<U10F9>,<U1CB9>);(<U10FA>,<U1CBA>);(<U10FD>,<U1CBD>);(<U10FE>,<U1CBE>);/
- (<U10FF>,<U1CBF>);(<U13F8>,<U13F0>);(<U13F9>,<U13F1>);(<U13FA>,<U13F2>);/
- (<U13FB>,<U13F3>);(<U13FC>,<U13F4>);(<U13FD>,<U13F5>);(<U1C80>,<U0412>);/
- (<U1C81>,<U0414>);(<U1C82>,<U041E>);(<U1C83>,<U0421>);(<U1C84>,<U0422>);/
- (<U1C85>,<U0422>);(<U1C86>,<U042A>);(<U1C87>,<U0462>);(<U1C88>,<UA64A>);/
- (<U1D79>,<UA77D>);(<U1D7D>,<U2C63>);(<U1D8E>,<UA7C6>);(<U1E01>,<U1E00>);/
- (<U1E03>,<U1E02>);(<U1E05>,<U1E04>);(<U1E07>,<U1E06>);(<U1E09>,<U1E08>);/
- (<U1E0B>,<U1E0A>);(<U1E0D>,<U1E0C>);(<U1E0F>,<U1E0E>);(<U1E11>,<U1E10>);/
- (<U1E13>,<U1E12>);(<U1E15>,<U1E14>);(<U1E17>,<U1E16>);(<U1E19>,<U1E18>);/
- (<U1E1B>,<U1E1A>);(<U1E1D>,<U1E1C>);(<U1E1F>,<U1E1E>);(<U1E21>,<U1E20>);/
- (<U1E23>,<U1E22>);(<U1E25>,<U1E24>);(<U1E27>,<U1E26>);(<U1E29>,<U1E28>);/
- (<U1E2B>,<U1E2A>);(<U1E2D>,<U1E2C>);(<U1E2F>,<U1E2E>);(<U1E31>,<U1E30>);/
- (<U1E33>,<U1E32>);(<U1E35>,<U1E34>);(<U1E37>,<U1E36>);(<U1E39>,<U1E38>);/
- (<U1E3B>,<U1E3A>);(<U1E3D>,<U1E3C>);(<U1E3F>,<U1E3E>);(<U1E41>,<U1E40>);/
- (<U1E43>,<U1E42>);(<U1E45>,<U1E44>);(<U1E47>,<U1E46>);(<U1E49>,<U1E48>);/
- (<U1E4B>,<U1E4A>);(<U1E4D>,<U1E4C>);(<U1E4F>,<U1E4E>);(<U1E51>,<U1E50>);/
- (<U1E53>,<U1E52>);(<U1E55>,<U1E54>);(<U1E57>,<U1E56>);(<U1E59>,<U1E58>);/
- (<U1E5B>,<U1E5A>);(<U1E5D>,<U1E5C>);(<U1E5F>,<U1E5E>);(<U1E61>,<U1E60>);/
- (<U1E63>,<U1E62>);(<U1E65>,<U1E64>);(<U1E67>,<U1E66>);(<U1E69>,<U1E68>);/
- (<U1E6B>,<U1E6A>);(<U1E6D>,<U1E6C>);(<U1E6F>,<U1E6E>);(<U1E71>,<U1E70>);/
- (<U1E73>,<U1E72>);(<U1E75>,<U1E74>);(<U1E77>,<U1E76>);(<U1E79>,<U1E78>);/
- (<U1E7B>,<U1E7A>);(<U1E7D>,<U1E7C>);(<U1E7F>,<U1E7E>);(<U1E81>,<U1E80>);/
- (<U1E83>,<U1E82>);(<U1E85>,<U1E84>);(<U1E87>,<U1E86>);(<U1E89>,<U1E88>);/
- (<U1E8B>,<U1E8A>);(<U1E8D>,<U1E8C>);(<U1E8F>,<U1E8E>);(<U1E91>,<U1E90>);/
- (<U1E93>,<U1E92>);(<U1E95>,<U1E94>);(<U1E9B>,<U1E60>);(<U1EA1>,<U1EA0>);/
- (<U1EA3>,<U1EA2>);(<U1EA5>,<U1EA4>);(<U1EA7>,<U1EA6>);(<U1EA9>,<U1EA8>);/
- (<U1EAB>,<U1EAA>);(<U1EAD>,<U1EAC>);(<U1EAF>,<U1EAE>);(<U1EB1>,<U1EB0>);/
- (<U1EB3>,<U1EB2>);(<U1EB5>,<U1EB4>);(<U1EB7>,<U1EB6>);(<U1EB9>,<U1EB8>);/
- (<U1EBB>,<U1EBA>);(<U1EBD>,<U1EBC>);(<U1EBF>,<U1EBE>);(<U1EC1>,<U1EC0>);/
- (<U1EC3>,<U1EC2>);(<U1EC5>,<U1EC4>);(<U1EC7>,<U1EC6>);(<U1EC9>,<U1EC8>);/
- (<U1ECB>,<U1ECA>);(<U1ECD>,<U1ECC>);(<U1ECF>,<U1ECE>);(<U1ED1>,<U1ED0>);/
- (<U1ED3>,<U1ED2>);(<U1ED5>,<U1ED4>);(<U1ED7>,<U1ED6>);(<U1ED9>,<U1ED8>);/
- (<U1EDB>,<U1EDA>);(<U1EDD>,<U1EDC>);(<U1EDF>,<U1EDE>);(<U1EE1>,<U1EE0>);/
- (<U1EE3>,<U1EE2>);(<U1EE5>,<U1EE4>);(<U1EE7>,<U1EE6>);(<U1EE9>,<U1EE8>);/
- (<U1EEB>,<U1EEA>);(<U1EED>,<U1EEC>);(<U1EEF>,<U1EEE>);(<U1EF1>,<U1EF0>);/
- (<U1EF3>,<U1EF2>);(<U1EF5>,<U1EF4>);(<U1EF7>,<U1EF6>);(<U1EF9>,<U1EF8>);/
- (<U1EFB>,<U1EFA>);(<U1EFD>,<U1EFC>);(<U1EFF>,<U1EFE>);(<U1F00>,<U1F08>);/
- (<U1F01>,<U1F09>);(<U1F02>,<U1F0A>);(<U1F03>,<U1F0B>);(<U1F04>,<U1F0C>);/
- (<U1F05>,<U1F0D>);(<U1F06>,<U1F0E>);(<U1F07>,<U1F0F>);(<U1F10>,<U1F18>);/
- (<U1F11>,<U1F19>);(<U1F12>,<U1F1A>);(<U1F13>,<U1F1B>);(<U1F14>,<U1F1C>);/
- (<U1F15>,<U1F1D>);(<U1F20>,<U1F28>);(<U1F21>,<U1F29>);(<U1F22>,<U1F2A>);/
- (<U1F23>,<U1F2B>);(<U1F24>,<U1F2C>);(<U1F25>,<U1F2D>);(<U1F26>,<U1F2E>);/
- (<U1F27>,<U1F2F>);(<U1F30>,<U1F38>);(<U1F31>,<U1F39>);(<U1F32>,<U1F3A>);/
- (<U1F33>,<U1F3B>);(<U1F34>,<U1F3C>);(<U1F35>,<U1F3D>);(<U1F36>,<U1F3E>);/
- (<U1F37>,<U1F3F>);(<U1F40>,<U1F48>);(<U1F41>,<U1F49>);(<U1F42>,<U1F4A>);/
- (<U1F43>,<U1F4B>);(<U1F44>,<U1F4C>);(<U1F45>,<U1F4D>);(<U1F51>,<U1F59>);/
- (<U1F53>,<U1F5B>);(<U1F55>,<U1F5D>);(<U1F57>,<U1F5F>);(<U1F60>,<U1F68>);/
- (<U1F61>,<U1F69>);(<U1F62>,<U1F6A>);(<U1F63>,<U1F6B>);(<U1F64>,<U1F6C>);/
- (<U1F65>,<U1F6D>);(<U1F66>,<U1F6E>);(<U1F67>,<U1F6F>);(<U1F70>,<U1FBA>);/
- (<U1F71>,<U1FBB>);(<U1F72>,<U1FC8>);(<U1F73>,<U1FC9>);(<U1F74>,<U1FCA>);/
- (<U1F75>,<U1FCB>);(<U1F76>,<U1FDA>);(<U1F77>,<U1FDB>);(<U1F78>,<U1FF8>);/
- (<U1F79>,<U1FF9>);(<U1F7A>,<U1FEA>);(<U1F7B>,<U1FEB>);(<U1F7C>,<U1FFA>);/
- (<U1F7D>,<U1FFB>);(<U1F80>,<U1F88>);(<U1F81>,<U1F89>);(<U1F82>,<U1F8A>);/
- (<U1F83>,<U1F8B>);(<U1F84>,<U1F8C>);(<U1F85>,<U1F8D>);(<U1F86>,<U1F8E>);/
- (<U1F87>,<U1F8F>);(<U1F90>,<U1F98>);(<U1F91>,<U1F99>);(<U1F92>,<U1F9A>);/
- (<U1F93>,<U1F9B>);(<U1F94>,<U1F9C>);(<U1F95>,<U1F9D>);(<U1F96>,<U1F9E>);/
- (<U1F97>,<U1F9F>);(<U1FA0>,<U1FA8>);(<U1FA1>,<U1FA9>);(<U1FA2>,<U1FAA>);/
- (<U1FA3>,<U1FAB>);(<U1FA4>,<U1FAC>);(<U1FA5>,<U1FAD>);(<U1FA6>,<U1FAE>);/
- (<U1FA7>,<U1FAF>);(<U1FB0>,<U1FB8>);(<U1FB1>,<U1FB9>);(<U1FB3>,<U1FBC>);/
- (<U1FBE>,<U0399>);(<U1FC3>,<U1FCC>);(<U1FD0>,<U1FD8>);(<U1FD1>,<U1FD9>);/
- (<U1FE0>,<U1FE8>);(<U1FE1>,<U1FE9>);(<U1FE5>,<U1FEC>);(<U1FF3>,<U1FFC>);/
- (<U214E>,<U2132>);(<U2170>,<U2160>);(<U2171>,<U2161>);(<U2172>,<U2162>);/
- (<U2173>,<U2163>);(<U2174>,<U2164>);(<U2175>,<U2165>);(<U2176>,<U2166>);/
- (<U2177>,<U2167>);(<U2178>,<U2168>);(<U2179>,<U2169>);(<U217A>,<U216A>);/
- (<U217B>,<U216B>);(<U217C>,<U216C>);(<U217D>,<U216D>);(<U217E>,<U216E>);/
- (<U217F>,<U216F>);(<U2184>,<U2183>);(<U24D0>,<U24B6>);(<U24D1>,<U24B7>);/
- (<U24D2>,<U24B8>);(<U24D3>,<U24B9>);(<U24D4>,<U24BA>);(<U24D5>,<U24BB>);/
- (<U24D6>,<U24BC>);(<U24D7>,<U24BD>);(<U24D8>,<U24BE>);(<U24D9>,<U24BF>);/
- (<U24DA>,<U24C0>);(<U24DB>,<U24C1>);(<U24DC>,<U24C2>);(<U24DD>,<U24C3>);/
- (<U24DE>,<U24C4>);(<U24DF>,<U24C5>);(<U24E0>,<U24C6>);(<U24E1>,<U24C7>);/
- (<U24E2>,<U24C8>);(<U24E3>,<U24C9>);(<U24E4>,<U24CA>);(<U24E5>,<U24CB>);/
- (<U24E6>,<U24CC>);(<U24E7>,<U24CD>);(<U24E8>,<U24CE>);(<U24E9>,<U24CF>);/
- (<U2C30>,<U2C00>);(<U2C31>,<U2C01>);(<U2C32>,<U2C02>);(<U2C33>,<U2C03>);/
- (<U2C34>,<U2C04>);(<U2C35>,<U2C05>);(<U2C36>,<U2C06>);(<U2C37>,<U2C07>);/
- (<U2C38>,<U2C08>);(<U2C39>,<U2C09>);(<U2C3A>,<U2C0A>);(<U2C3B>,<U2C0B>);/
- (<U2C3C>,<U2C0C>);(<U2C3D>,<U2C0D>);(<U2C3E>,<U2C0E>);(<U2C3F>,<U2C0F>);/
- (<U2C40>,<U2C10>);(<U2C41>,<U2C11>);(<U2C42>,<U2C12>);(<U2C43>,<U2C13>);/
- (<U2C44>,<U2C14>);(<U2C45>,<U2C15>);(<U2C46>,<U2C16>);(<U2C47>,<U2C17>);/
- (<U2C48>,<U2C18>);(<U2C49>,<U2C19>);(<U2C4A>,<U2C1A>);(<U2C4B>,<U2C1B>);/
- (<U2C4C>,<U2C1C>);(<U2C4D>,<U2C1D>);(<U2C4E>,<U2C1E>);(<U2C4F>,<U2C1F>);/
- (<U2C50>,<U2C20>);(<U2C51>,<U2C21>);(<U2C52>,<U2C22>);(<U2C53>,<U2C23>);/
- (<U2C54>,<U2C24>);(<U2C55>,<U2C25>);(<U2C56>,<U2C26>);(<U2C57>,<U2C27>);/
- (<U2C58>,<U2C28>);(<U2C59>,<U2C29>);(<U2C5A>,<U2C2A>);(<U2C5B>,<U2C2B>);/
- (<U2C5C>,<U2C2C>);(<U2C5D>,<U2C2D>);(<U2C5E>,<U2C2E>);(<U2C5F>,<U2C2F>);/
- (<U2C61>,<U2C60>);(<U2C65>,<U023A>);(<U2C66>,<U023E>);(<U2C68>,<U2C67>);/
- (<U2C6A>,<U2C69>);(<U2C6C>,<U2C6B>);(<U2C73>,<U2C72>);(<U2C76>,<U2C75>);/
- (<U2C81>,<U2C80>);(<U2C83>,<U2C82>);(<U2C85>,<U2C84>);(<U2C87>,<U2C86>);/
- (<U2C89>,<U2C88>);(<U2C8B>,<U2C8A>);(<U2C8D>,<U2C8C>);(<U2C8F>,<U2C8E>);/
- (<U2C91>,<U2C90>);(<U2C93>,<U2C92>);(<U2C95>,<U2C94>);(<U2C97>,<U2C96>);/
- (<U2C99>,<U2C98>);(<U2C9B>,<U2C9A>);(<U2C9D>,<U2C9C>);(<U2C9F>,<U2C9E>);/
- (<U2CA1>,<U2CA0>);(<U2CA3>,<U2CA2>);(<U2CA5>,<U2CA4>);(<U2CA7>,<U2CA6>);/
- (<U2CA9>,<U2CA8>);(<U2CAB>,<U2CAA>);(<U2CAD>,<U2CAC>);(<U2CAF>,<U2CAE>);/
- (<U2CB1>,<U2CB0>);(<U2CB3>,<U2CB2>);(<U2CB5>,<U2CB4>);(<U2CB7>,<U2CB6>);/
- (<U2CB9>,<U2CB8>);(<U2CBB>,<U2CBA>);(<U2CBD>,<U2CBC>);(<U2CBF>,<U2CBE>);/
- (<U2CC1>,<U2CC0>);(<U2CC3>,<U2CC2>);(<U2CC5>,<U2CC4>);(<U2CC7>,<U2CC6>);/
- (<U2CC9>,<U2CC8>);(<U2CCB>,<U2CCA>);(<U2CCD>,<U2CCC>);(<U2CCF>,<U2CCE>);/
- (<U2CD1>,<U2CD0>);(<U2CD3>,<U2CD2>);(<U2CD5>,<U2CD4>);(<U2CD7>,<U2CD6>);/
- (<U2CD9>,<U2CD8>);(<U2CDB>,<U2CDA>);(<U2CDD>,<U2CDC>);(<U2CDF>,<U2CDE>);/
- (<U2CE1>,<U2CE0>);(<U2CE3>,<U2CE2>);(<U2CEC>,<U2CEB>);(<U2CEE>,<U2CED>);/
- (<U2CF3>,<U2CF2>);(<U2D00>,<U10A0>);(<U2D01>,<U10A1>);(<U2D02>,<U10A2>);/
- (<U2D03>,<U10A3>);(<U2D04>,<U10A4>);(<U2D05>,<U10A5>);(<U2D06>,<U10A6>);/
- (<U2D07>,<U10A7>);(<U2D08>,<U10A8>);(<U2D09>,<U10A9>);(<U2D0A>,<U10AA>);/
- (<U2D0B>,<U10AB>);(<U2D0C>,<U10AC>);(<U2D0D>,<U10AD>);(<U2D0E>,<U10AE>);/
- (<U2D0F>,<U10AF>);(<U2D10>,<U10B0>);(<U2D11>,<U10B1>);(<U2D12>,<U10B2>);/
- (<U2D13>,<U10B3>);(<U2D14>,<U10B4>);(<U2D15>,<U10B5>);(<U2D16>,<U10B6>);/
- (<U2D17>,<U10B7>);(<U2D18>,<U10B8>);(<U2D19>,<U10B9>);(<U2D1A>,<U10BA>);/
- (<U2D1B>,<U10BB>);(<U2D1C>,<U10BC>);(<U2D1D>,<U10BD>);(<U2D1E>,<U10BE>);/
- (<U2D1F>,<U10BF>);(<U2D20>,<U10C0>);(<U2D21>,<U10C1>);(<U2D22>,<U10C2>);/
- (<U2D23>,<U10C3>);(<U2D24>,<U10C4>);(<U2D25>,<U10C5>);(<U2D27>,<U10C7>);/
- (<U2D2D>,<U10CD>);(<UA641>,<UA640>);(<UA643>,<UA642>);(<UA645>,<UA644>);/
- (<UA647>,<UA646>);(<UA649>,<UA648>);(<UA64B>,<UA64A>);(<UA64D>,<UA64C>);/
- (<UA64F>,<UA64E>);(<UA651>,<UA650>);(<UA653>,<UA652>);(<UA655>,<UA654>);/
- (<UA657>,<UA656>);(<UA659>,<UA658>);(<UA65B>,<UA65A>);(<UA65D>,<UA65C>);/
- (<UA65F>,<UA65E>);(<UA661>,<UA660>);(<UA663>,<UA662>);(<UA665>,<UA664>);/
- (<UA667>,<UA666>);(<UA669>,<UA668>);(<UA66B>,<UA66A>);(<UA66D>,<UA66C>);/
- (<UA681>,<UA680>);(<UA683>,<UA682>);(<UA685>,<UA684>);(<UA687>,<UA686>);/
- (<UA689>,<UA688>);(<UA68B>,<UA68A>);(<UA68D>,<UA68C>);(<UA68F>,<UA68E>);/
- (<UA691>,<UA690>);(<UA693>,<UA692>);(<UA695>,<UA694>);(<UA697>,<UA696>);/
- (<UA699>,<UA698>);(<UA69B>,<UA69A>);(<UA723>,<UA722>);(<UA725>,<UA724>);/
- (<UA727>,<UA726>);(<UA729>,<UA728>);(<UA72B>,<UA72A>);(<UA72D>,<UA72C>);/
- (<UA72F>,<UA72E>);(<UA733>,<UA732>);(<UA735>,<UA734>);(<UA737>,<UA736>);/
- (<UA739>,<UA738>);(<UA73B>,<UA73A>);(<UA73D>,<UA73C>);(<UA73F>,<UA73E>);/
- (<UA741>,<UA740>);(<UA743>,<UA742>);(<UA745>,<UA744>);(<UA747>,<UA746>);/
- (<UA749>,<UA748>);(<UA74B>,<UA74A>);(<UA74D>,<UA74C>);(<UA74F>,<UA74E>);/
- (<UA751>,<UA750>);(<UA753>,<UA752>);(<UA755>,<UA754>);(<UA757>,<UA756>);/
- (<UA759>,<UA758>);(<UA75B>,<UA75A>);(<UA75D>,<UA75C>);(<UA75F>,<UA75E>);/
- (<UA761>,<UA760>);(<UA763>,<UA762>);(<UA765>,<UA764>);(<UA767>,<UA766>);/
- (<UA769>,<UA768>);(<UA76B>,<UA76A>);(<UA76D>,<UA76C>);(<UA76F>,<UA76E>);/
- (<UA77A>,<UA779>);(<UA77C>,<UA77B>);(<UA77F>,<UA77E>);(<UA781>,<UA780>);/
- (<UA783>,<UA782>);(<UA785>,<UA784>);(<UA787>,<UA786>);(<UA78C>,<UA78B>);/
- (<UA791>,<UA790>);(<UA793>,<UA792>);(<UA794>,<UA7C4>);(<UA797>,<UA796>);/
- (<UA799>,<UA798>);(<UA79B>,<UA79A>);(<UA79D>,<UA79C>);(<UA79F>,<UA79E>);/
- (<UA7A1>,<UA7A0>);(<UA7A3>,<UA7A2>);(<UA7A5>,<UA7A4>);(<UA7A7>,<UA7A6>);/
- (<UA7A9>,<UA7A8>);(<UA7B5>,<UA7B4>);(<UA7B7>,<UA7B6>);(<UA7B9>,<UA7B8>);/
- (<UA7BB>,<UA7BA>);(<UA7BD>,<UA7BC>);(<UA7BF>,<UA7BE>);(<UA7C1>,<UA7C0>);/
- (<UA7C3>,<UA7C2>);(<UA7C8>,<UA7C7>);(<UA7CA>,<UA7C9>);(<UA7D1>,<UA7D0>);/
- (<UA7D7>,<UA7D6>);(<UA7D9>,<UA7D8>);(<UA7F6>,<UA7F5>);(<UAB53>,<UA7B3>);/
- (<UAB70>,<U13A0>);(<UAB71>,<U13A1>);(<UAB72>,<U13A2>);(<UAB73>,<U13A3>);/
- (<UAB74>,<U13A4>);(<UAB75>,<U13A5>);(<UAB76>,<U13A6>);(<UAB77>,<U13A7>);/
- (<UAB78>,<U13A8>);(<UAB79>,<U13A9>);(<UAB7A>,<U13AA>);(<UAB7B>,<U13AB>);/
- (<UAB7C>,<U13AC>);(<UAB7D>,<U13AD>);(<UAB7E>,<U13AE>);(<UAB7F>,<U13AF>);/
- (<UAB80>,<U13B0>);(<UAB81>,<U13B1>);(<UAB82>,<U13B2>);(<UAB83>,<U13B3>);/
- (<UAB84>,<U13B4>);(<UAB85>,<U13B5>);(<UAB86>,<U13B6>);(<UAB87>,<U13B7>);/
- (<UAB88>,<U13B8>);(<UAB89>,<U13B9>);(<UAB8A>,<U13BA>);(<UAB8B>,<U13BB>);/
- (<UAB8C>,<U13BC>);(<UAB8D>,<U13BD>);(<UAB8E>,<U13BE>);(<UAB8F>,<U13BF>);/
- (<UAB90>,<U13C0>);(<UAB91>,<U13C1>);(<UAB92>,<U13C2>);(<UAB93>,<U13C3>);/
- (<UAB94>,<U13C4>);(<UAB95>,<U13C5>);(<UAB96>,<U13C6>);(<UAB97>,<U13C7>);/
- (<UAB98>,<U13C8>);(<UAB99>,<U13C9>);(<UAB9A>,<U13CA>);(<UAB9B>,<U13CB>);/
- (<UAB9C>,<U13CC>);(<UAB9D>,<U13CD>);(<UAB9E>,<U13CE>);(<UAB9F>,<U13CF>);/
- (<UABA0>,<U13D0>);(<UABA1>,<U13D1>);(<UABA2>,<U13D2>);(<UABA3>,<U13D3>);/
- (<UABA4>,<U13D4>);(<UABA5>,<U13D5>);(<UABA6>,<U13D6>);(<UABA7>,<U13D7>);/
- (<UABA8>,<U13D8>);(<UABA9>,<U13D9>);(<UABAA>,<U13DA>);(<UABAB>,<U13DB>);/
- (<UABAC>,<U13DC>);(<UABAD>,<U13DD>);(<UABAE>,<U13DE>);(<UABAF>,<U13DF>);/
- (<UABB0>,<U13E0>);(<UABB1>,<U13E1>);(<UABB2>,<U13E2>);(<UABB3>,<U13E3>);/
- (<UABB4>,<U13E4>);(<UABB5>,<U13E5>);(<UABB6>,<U13E6>);(<UABB7>,<U13E7>);/
- (<UABB8>,<U13E8>);(<UABB9>,<U13E9>);(<UABBA>,<U13EA>);(<UABBB>,<U13EB>);/
- (<UABBC>,<U13EC>);(<UABBD>,<U13ED>);(<UABBE>,<U13EE>);(<UABBF>,<U13EF>);/
- (<UFF41>,<UFF21>);(<UFF42>,<UFF22>);(<UFF43>,<UFF23>);(<UFF44>,<UFF24>);/
- (<UFF45>,<UFF25>);(<UFF46>,<UFF26>);(<UFF47>,<UFF27>);(<UFF48>,<UFF28>);/
- (<UFF49>,<UFF29>);(<UFF4A>,<UFF2A>);(<UFF4B>,<UFF2B>);(<UFF4C>,<UFF2C>);/
- (<UFF4D>,<UFF2D>);(<UFF4E>,<UFF2E>);(<UFF4F>,<UFF2F>);(<UFF50>,<UFF30>);/
- (<UFF51>,<UFF31>);(<UFF52>,<UFF32>);(<UFF53>,<UFF33>);(<UFF54>,<UFF34>);/
- (<UFF55>,<UFF35>);(<UFF56>,<UFF36>);(<UFF57>,<UFF37>);(<UFF58>,<UFF38>);/
- (<UFF59>,<UFF39>);(<UFF5A>,<UFF3A>);(<U00010428>,<U00010400>);/
- (<U00010429>,<U00010401>);(<U0001042A>,<U00010402>);/
- (<U0001042B>,<U00010403>);(<U0001042C>,<U00010404>);/
- (<U0001042D>,<U00010405>);(<U0001042E>,<U00010406>);/
- (<U0001042F>,<U00010407>);(<U00010430>,<U00010408>);/
- (<U00010431>,<U00010409>);(<U00010432>,<U0001040A>);/
- (<U00010433>,<U0001040B>);(<U00010434>,<U0001040C>);/
- (<U00010435>,<U0001040D>);(<U00010436>,<U0001040E>);/
- (<U00010437>,<U0001040F>);(<U00010438>,<U00010410>);/
- (<U00010439>,<U00010411>);(<U0001043A>,<U00010412>);/
- (<U0001043B>,<U00010413>);(<U0001043C>,<U00010414>);/
- (<U0001043D>,<U00010415>);(<U0001043E>,<U00010416>);/
- (<U0001043F>,<U00010417>);(<U00010440>,<U00010418>);/
- (<U00010441>,<U00010419>);(<U00010442>,<U0001041A>);/
- (<U00010443>,<U0001041B>);(<U00010444>,<U0001041C>);/
- (<U00010445>,<U0001041D>);(<U00010446>,<U0001041E>);/
- (<U00010447>,<U0001041F>);(<U00010448>,<U00010420>);/
- (<U00010449>,<U00010421>);(<U0001044A>,<U00010422>);/
- (<U0001044B>,<U00010423>);(<U0001044C>,<U00010424>);/
- (<U0001044D>,<U00010425>);(<U0001044E>,<U00010426>);/
- (<U0001044F>,<U00010427>);(<U000104D8>,<U000104B0>);/
- (<U000104D9>,<U000104B1>);(<U000104DA>,<U000104B2>);/
- (<U000104DB>,<U000104B3>);(<U000104DC>,<U000104B4>);/
- (<U000104DD>,<U000104B5>);(<U000104DE>,<U000104B6>);/
- (<U000104DF>,<U000104B7>);(<U000104E0>,<U000104B8>);/
- (<U000104E1>,<U000104B9>);(<U000104E2>,<U000104BA>);/
- (<U000104E3>,<U000104BB>);(<U000104E4>,<U000104BC>);/
- (<U000104E5>,<U000104BD>);(<U000104E6>,<U000104BE>);/
- (<U000104E7>,<U000104BF>);(<U000104E8>,<U000104C0>);/
- (<U000104E9>,<U000104C1>);(<U000104EA>,<U000104C2>);/
- (<U000104EB>,<U000104C3>);(<U000104EC>,<U000104C4>);/
- (<U000104ED>,<U000104C5>);(<U000104EE>,<U000104C6>);/
- (<U000104EF>,<U000104C7>);(<U000104F0>,<U000104C8>);/
- (<U000104F1>,<U000104C9>);(<U000104F2>,<U000104CA>);/
- (<U000104F3>,<U000104CB>);(<U000104F4>,<U000104CC>);/
- (<U000104F5>,<U000104CD>);(<U000104F6>,<U000104CE>);/
- (<U000104F7>,<U000104CF>);(<U000104F8>,<U000104D0>);/
- (<U000104F9>,<U000104D1>);(<U000104FA>,<U000104D2>);/
- (<U000104FB>,<U000104D3>);(<U00010597>,<U00010570>);/
- (<U00010598>,<U00010571>);(<U00010599>,<U00010572>);/
- (<U0001059A>,<U00010573>);(<U0001059B>,<U00010574>);/
- (<U0001059C>,<U00010575>);(<U0001059D>,<U00010576>);/
- (<U0001059E>,<U00010577>);(<U0001059F>,<U00010578>);/
- (<U000105A0>,<U00010579>);(<U000105A1>,<U0001057A>);/
- (<U000105A3>,<U0001057C>);(<U000105A4>,<U0001057D>);/
- (<U000105A5>,<U0001057E>);(<U000105A6>,<U0001057F>);/
- (<U000105A7>,<U00010580>);(<U000105A8>,<U00010581>);/
- (<U000105A9>,<U00010582>);(<U000105AA>,<U00010583>);/
- (<U000105AB>,<U00010584>);(<U000105AC>,<U00010585>);/
- (<U000105AD>,<U00010586>);(<U000105AE>,<U00010587>);/
- (<U000105AF>,<U00010588>);(<U000105B0>,<U00010589>);/
- (<U000105B1>,<U0001058A>);(<U000105B3>,<U0001058C>);/
- (<U000105B4>,<U0001058D>);(<U000105B5>,<U0001058E>);/
- (<U000105B6>,<U0001058F>);(<U000105B7>,<U00010590>);/
- (<U000105B8>,<U00010591>);(<U000105B9>,<U00010592>);/
- (<U000105BB>,<U00010594>);(<U000105BC>,<U00010595>);/
- (<U00010CC0>,<U00010C80>);(<U00010CC1>,<U00010C81>);/
- (<U00010CC2>,<U00010C82>);(<U00010CC3>,<U00010C83>);/
- (<U00010CC4>,<U00010C84>);(<U00010CC5>,<U00010C85>);/
- (<U00010CC6>,<U00010C86>);(<U00010CC7>,<U00010C87>);/
- (<U00010CC8>,<U00010C88>);(<U00010CC9>,<U00010C89>);/
- (<U00010CCA>,<U00010C8A>);(<U00010CCB>,<U00010C8B>);/
- (<U00010CCC>,<U00010C8C>);(<U00010CCD>,<U00010C8D>);/
- (<U00010CCE>,<U00010C8E>);(<U00010CCF>,<U00010C8F>);/
- (<U00010CD0>,<U00010C90>);(<U00010CD1>,<U00010C91>);/
- (<U00010CD2>,<U00010C92>);(<U00010CD3>,<U00010C93>);/
- (<U00010CD4>,<U00010C94>);(<U00010CD5>,<U00010C95>);/
- (<U00010CD6>,<U00010C96>);(<U00010CD7>,<U00010C97>);/
- (<U00010CD8>,<U00010C98>);(<U00010CD9>,<U00010C99>);/
- (<U00010CDA>,<U00010C9A>);(<U00010CDB>,<U00010C9B>);/
- (<U00010CDC>,<U00010C9C>);(<U00010CDD>,<U00010C9D>);/
- (<U00010CDE>,<U00010C9E>);(<U00010CDF>,<U00010C9F>);/
- (<U00010CE0>,<U00010CA0>);(<U00010CE1>,<U00010CA1>);/
- (<U00010CE2>,<U00010CA2>);(<U00010CE3>,<U00010CA3>);/
- (<U00010CE4>,<U00010CA4>);(<U00010CE5>,<U00010CA5>);/
- (<U00010CE6>,<U00010CA6>);(<U00010CE7>,<U00010CA7>);/
- (<U00010CE8>,<U00010CA8>);(<U00010CE9>,<U00010CA9>);/
- (<U00010CEA>,<U00010CAA>);(<U00010CEB>,<U00010CAB>);/
- (<U00010CEC>,<U00010CAC>);(<U00010CED>,<U00010CAD>);/
- (<U00010CEE>,<U00010CAE>);(<U00010CEF>,<U00010CAF>);/
- (<U00010CF0>,<U00010CB0>);(<U00010CF1>,<U00010CB1>);/
- (<U00010CF2>,<U00010CB2>);(<U000118C0>,<U000118A0>);/
- (<U000118C1>,<U000118A1>);(<U000118C2>,<U000118A2>);/
- (<U000118C3>,<U000118A3>);(<U000118C4>,<U000118A4>);/
- (<U000118C5>,<U000118A5>);(<U000118C6>,<U000118A6>);/
- (<U000118C7>,<U000118A7>);(<U000118C8>,<U000118A8>);/
- (<U000118C9>,<U000118A9>);(<U000118CA>,<U000118AA>);/
- (<U000118CB>,<U000118AB>);(<U000118CC>,<U000118AC>);/
- (<U000118CD>,<U000118AD>);(<U000118CE>,<U000118AE>);/
- (<U000118CF>,<U000118AF>);(<U000118D0>,<U000118B0>);/
- (<U000118D1>,<U000118B1>);(<U000118D2>,<U000118B2>);/
- (<U000118D3>,<U000118B3>);(<U000118D4>,<U000118B4>);/
- (<U000118D5>,<U000118B5>);(<U000118D6>,<U000118B6>);/
- (<U000118D7>,<U000118B7>);(<U000118D8>,<U000118B8>);/
- (<U000118D9>,<U000118B9>);(<U000118DA>,<U000118BA>);/
- (<U000118DB>,<U000118BB>);(<U000118DC>,<U000118BC>);/
- (<U000118DD>,<U000118BD>);(<U000118DE>,<U000118BE>);/
- (<U000118DF>,<U000118BF>);(<U00016E60>,<U00016E40>);/
- (<U00016E61>,<U00016E41>);(<U00016E62>,<U00016E42>);/
- (<U00016E63>,<U00016E43>);(<U00016E64>,<U00016E44>);/
- (<U00016E65>,<U00016E45>);(<U00016E66>,<U00016E46>);/
- (<U00016E67>,<U00016E47>);(<U00016E68>,<U00016E48>);/
- (<U00016E69>,<U00016E49>);(<U00016E6A>,<U00016E4A>);/
- (<U00016E6B>,<U00016E4B>);(<U00016E6C>,<U00016E4C>);/
- (<U00016E6D>,<U00016E4D>);(<U00016E6E>,<U00016E4E>);/
- (<U00016E6F>,<U00016E4F>);(<U00016E70>,<U00016E50>);/
- (<U00016E71>,<U00016E51>);(<U00016E72>,<U00016E52>);/
- (<U00016E73>,<U00016E53>);(<U00016E74>,<U00016E54>);/
- (<U00016E75>,<U00016E55>);(<U00016E76>,<U00016E56>);/
- (<U00016E77>,<U00016E57>);(<U00016E78>,<U00016E58>);/
- (<U00016E79>,<U00016E59>);(<U00016E7A>,<U00016E5A>);/
- (<U00016E7B>,<U00016E5B>);(<U00016E7C>,<U00016E5C>);/
- (<U00016E7D>,<U00016E5D>);(<U00016E7E>,<U00016E5E>);/
- (<U00016E7F>,<U00016E5F>);(<U0001E922>,<U0001E900>);/
- (<U0001E923>,<U0001E901>);(<U0001E924>,<U0001E902>);/
- (<U0001E925>,<U0001E903>);(<U0001E926>,<U0001E904>);/
- (<U0001E927>,<U0001E905>);(<U0001E928>,<U0001E906>);/
- (<U0001E929>,<U0001E907>);(<U0001E92A>,<U0001E908>);/
- (<U0001E92B>,<U0001E909>);(<U0001E92C>,<U0001E90A>);/
- (<U0001E92D>,<U0001E90B>);(<U0001E92E>,<U0001E90C>);/
- (<U0001E92F>,<U0001E90D>);(<U0001E930>,<U0001E90E>);/
- (<U0001E931>,<U0001E90F>);(<U0001E932>,<U0001E910>);/
- (<U0001E933>,<U0001E911>);(<U0001E934>,<U0001E912>);/
- (<U0001E935>,<U0001E913>);(<U0001E936>,<U0001E914>);/
- (<U0001E937>,<U0001E915>);(<U0001E938>,<U0001E916>);/
- (<U0001E939>,<U0001E917>);(<U0001E93A>,<U0001E918>);/
- (<U0001E93B>,<U0001E919>);(<U0001E93C>,<U0001E91A>);/
- (<U0001E93D>,<U0001E91B>);(<U0001E93E>,<U0001E91C>);/
- (<U0001E93F>,<U0001E91D>);(<U0001E940>,<U0001E91E>);/
- (<U0001E941>,<U0001E91F>);(<U0001E942>,<U0001E920>);/
- (<U0001E943>,<U0001E921>)
+ (<U0199>,<U0198>);(<U019A>,<U023D>);(<U019B>,<UA7DC>);(<U019E>,<U0220>);/
+ (<U01A1>,<U01A0>);(<U01A3>,<U01A2>);(<U01A5>,<U01A4>);(<U01A8>,<U01A7>);/
+ (<U01AD>,<U01AC>);(<U01B0>,<U01AF>);(<U01B4>,<U01B3>);(<U01B6>,<U01B5>);/
+ (<U01B9>,<U01B8>);(<U01BD>,<U01BC>);(<U01BF>,<U01F7>);(<U01C5>,<U01C4>);/
+ (<U01C6>,<U01C4>);(<U01C8>,<U01C7>);(<U01C9>,<U01C7>);(<U01CB>,<U01CA>);/
+ (<U01CC>,<U01CA>);(<U01CE>,<U01CD>);(<U01D0>,<U01CF>);(<U01D2>,<U01D1>);/
+ (<U01D4>,<U01D3>);(<U01D6>,<U01D5>);(<U01D8>,<U01D7>);(<U01DA>,<U01D9>);/
+ (<U01DC>,<U01DB>);(<U01DD>,<U018E>);(<U01DF>,<U01DE>);(<U01E1>,<U01E0>);/
+ (<U01E3>,<U01E2>);(<U01E5>,<U01E4>);(<U01E7>,<U01E6>);(<U01E9>,<U01E8>);/
+ (<U01EB>,<U01EA>);(<U01ED>,<U01EC>);(<U01EF>,<U01EE>);(<U01F2>,<U01F1>);/
+ (<U01F3>,<U01F1>);(<U01F5>,<U01F4>);(<U01F9>,<U01F8>);(<U01FB>,<U01FA>);/
+ (<U01FD>,<U01FC>);(<U01FF>,<U01FE>);(<U0201>,<U0200>);(<U0203>,<U0202>);/
+ (<U0205>,<U0204>);(<U0207>,<U0206>);(<U0209>,<U0208>);(<U020B>,<U020A>);/
+ (<U020D>,<U020C>);(<U020F>,<U020E>);(<U0211>,<U0210>);(<U0213>,<U0212>);/
+ (<U0215>,<U0214>);(<U0217>,<U0216>);(<U0219>,<U0218>);(<U021B>,<U021A>);/
+ (<U021D>,<U021C>);(<U021F>,<U021E>);(<U0223>,<U0222>);(<U0225>,<U0224>);/
+ (<U0227>,<U0226>);(<U0229>,<U0228>);(<U022B>,<U022A>);(<U022D>,<U022C>);/
+ (<U022F>,<U022E>);(<U0231>,<U0230>);(<U0233>,<U0232>);(<U023C>,<U023B>);/
+ (<U023F>,<U2C7E>);(<U0240>,<U2C7F>);(<U0242>,<U0241>);(<U0247>,<U0246>);/
+ (<U0249>,<U0248>);(<U024B>,<U024A>);(<U024D>,<U024C>);(<U024F>,<U024E>);/
+ (<U0250>,<U2C6F>);(<U0251>,<U2C6D>);(<U0252>,<U2C70>);(<U0253>,<U0181>);/
+ (<U0254>,<U0186>);(<U0256>,<U0189>);(<U0257>,<U018A>);(<U0259>,<U018F>);/
+ (<U025B>,<U0190>);(<U025C>,<UA7AB>);(<U0260>,<U0193>);(<U0261>,<UA7AC>);/
+ (<U0263>,<U0194>);(<U0264>,<UA7CB>);(<U0265>,<UA78D>);(<U0266>,<UA7AA>);/
+ (<U0268>,<U0197>);(<U0269>,<U0196>);(<U026A>,<UA7AE>);(<U026B>,<U2C62>);/
+ (<U026C>,<UA7AD>);(<U026F>,<U019C>);(<U0271>,<U2C6E>);(<U0272>,<U019D>);/
+ (<U0275>,<U019F>);(<U027D>,<U2C64>);(<U0280>,<U01A6>);(<U0282>,<UA7C5>);/
+ (<U0283>,<U01A9>);(<U0287>,<UA7B1>);(<U0288>,<U01AE>);(<U0289>,<U0244>);/
+ (<U028A>,<U01B1>);(<U028B>,<U01B2>);(<U028C>,<U0245>);(<U0292>,<U01B7>);/
+ (<U029D>,<UA7B2>);(<U029E>,<UA7B0>);(<U0345>,<U0399>);(<U0371>,<U0370>);/
+ (<U0373>,<U0372>);(<U0377>,<U0376>);(<U037B>,<U03FD>);(<U037C>,<U03FE>);/
+ (<U037D>,<U03FF>);(<U03AC>,<U0386>);(<U03AD>,<U0388>);(<U03AE>,<U0389>);/
+ (<U03AF>,<U038A>);(<U03B1>,<U0391>);(<U03B2>,<U0392>);(<U03B3>,<U0393>);/
+ (<U03B4>,<U0394>);(<U03B5>,<U0395>);(<U03B6>,<U0396>);(<U03B7>,<U0397>);/
+ (<U03B8>,<U0398>);(<U03B9>,<U0399>);(<U03BA>,<U039A>);(<U03BB>,<U039B>);/
+ (<U03BC>,<U039C>);(<U03BD>,<U039D>);(<U03BE>,<U039E>);(<U03BF>,<U039F>);/
+ (<U03C0>,<U03A0>);(<U03C1>,<U03A1>);(<U03C2>,<U03A3>);(<U03C3>,<U03A3>);/
+ (<U03C4>,<U03A4>);(<U03C5>,<U03A5>);(<U03C6>,<U03A6>);(<U03C7>,<U03A7>);/
+ (<U03C8>,<U03A8>);(<U03C9>,<U03A9>);(<U03CA>,<U03AA>);(<U03CB>,<U03AB>);/
+ (<U03CC>,<U038C>);(<U03CD>,<U038E>);(<U03CE>,<U038F>);(<U03D0>,<U0392>);/
+ (<U03D1>,<U0398>);(<U03D5>,<U03A6>);(<U03D6>,<U03A0>);(<U03D7>,<U03CF>);/
+ (<U03D9>,<U03D8>);(<U03DB>,<U03DA>);(<U03DD>,<U03DC>);(<U03DF>,<U03DE>);/
+ (<U03E1>,<U03E0>);(<U03E3>,<U03E2>);(<U03E5>,<U03E4>);(<U03E7>,<U03E6>);/
+ (<U03E9>,<U03E8>);(<U03EB>,<U03EA>);(<U03ED>,<U03EC>);(<U03EF>,<U03EE>);/
+ (<U03F0>,<U039A>);(<U03F1>,<U03A1>);(<U03F2>,<U03F9>);(<U03F3>,<U037F>);/
+ (<U03F5>,<U0395>);(<U03F8>,<U03F7>);(<U03FB>,<U03FA>);(<U0430>,<U0410>);/
+ (<U0431>,<U0411>);(<U0432>,<U0412>);(<U0433>,<U0413>);(<U0434>,<U0414>);/
+ (<U0435>,<U0415>);(<U0436>,<U0416>);(<U0437>,<U0417>);(<U0438>,<U0418>);/
+ (<U0439>,<U0419>);(<U043A>,<U041A>);(<U043B>,<U041B>);(<U043C>,<U041C>);/
+ (<U043D>,<U041D>);(<U043E>,<U041E>);(<U043F>,<U041F>);(<U0440>,<U0420>);/
+ (<U0441>,<U0421>);(<U0442>,<U0422>);(<U0443>,<U0423>);(<U0444>,<U0424>);/
+ (<U0445>,<U0425>);(<U0446>,<U0426>);(<U0447>,<U0427>);(<U0448>,<U0428>);/
+ (<U0449>,<U0429>);(<U044A>,<U042A>);(<U044B>,<U042B>);(<U044C>,<U042C>);/
+ (<U044D>,<U042D>);(<U044E>,<U042E>);(<U044F>,<U042F>);(<U0450>,<U0400>);/
+ (<U0451>,<U0401>);(<U0452>,<U0402>);(<U0453>,<U0403>);(<U0454>,<U0404>);/
+ (<U0455>,<U0405>);(<U0456>,<U0406>);(<U0457>,<U0407>);(<U0458>,<U0408>);/
+ (<U0459>,<U0409>);(<U045A>,<U040A>);(<U045B>,<U040B>);(<U045C>,<U040C>);/
+ (<U045D>,<U040D>);(<U045E>,<U040E>);(<U045F>,<U040F>);(<U0461>,<U0460>);/
+ (<U0463>,<U0462>);(<U0465>,<U0464>);(<U0467>,<U0466>);(<U0469>,<U0468>);/
+ (<U046B>,<U046A>);(<U046D>,<U046C>);(<U046F>,<U046E>);(<U0471>,<U0470>);/
+ (<U0473>,<U0472>);(<U0475>,<U0474>);(<U0477>,<U0476>);(<U0479>,<U0478>);/
+ (<U047B>,<U047A>);(<U047D>,<U047C>);(<U047F>,<U047E>);(<U0481>,<U0480>);/
+ (<U048B>,<U048A>);(<U048D>,<U048C>);(<U048F>,<U048E>);(<U0491>,<U0490>);/
+ (<U0493>,<U0492>);(<U0495>,<U0494>);(<U0497>,<U0496>);(<U0499>,<U0498>);/
+ (<U049B>,<U049A>);(<U049D>,<U049C>);(<U049F>,<U049E>);(<U04A1>,<U04A0>);/
+ (<U04A3>,<U04A2>);(<U04A5>,<U04A4>);(<U04A7>,<U04A6>);(<U04A9>,<U04A8>);/
+ (<U04AB>,<U04AA>);(<U04AD>,<U04AC>);(<U04AF>,<U04AE>);(<U04B1>,<U04B0>);/
+ (<U04B3>,<U04B2>);(<U04B5>,<U04B4>);(<U04B7>,<U04B6>);(<U04B9>,<U04B8>);/
+ (<U04BB>,<U04BA>);(<U04BD>,<U04BC>);(<U04BF>,<U04BE>);(<U04C2>,<U04C1>);/
+ (<U04C4>,<U04C3>);(<U04C6>,<U04C5>);(<U04C8>,<U04C7>);(<U04CA>,<U04C9>);/
+ (<U04CC>,<U04CB>);(<U04CE>,<U04CD>);(<U04CF>,<U04C0>);(<U04D1>,<U04D0>);/
+ (<U04D3>,<U04D2>);(<U04D5>,<U04D4>);(<U04D7>,<U04D6>);(<U04D9>,<U04D8>);/
+ (<U04DB>,<U04DA>);(<U04DD>,<U04DC>);(<U04DF>,<U04DE>);(<U04E1>,<U04E0>);/
+ (<U04E3>,<U04E2>);(<U04E5>,<U04E4>);(<U04E7>,<U04E6>);(<U04E9>,<U04E8>);/
+ (<U04EB>,<U04EA>);(<U04ED>,<U04EC>);(<U04EF>,<U04EE>);(<U04F1>,<U04F0>);/
+ (<U04F3>,<U04F2>);(<U04F5>,<U04F4>);(<U04F7>,<U04F6>);(<U04F9>,<U04F8>);/
+ (<U04FB>,<U04FA>);(<U04FD>,<U04FC>);(<U04FF>,<U04FE>);(<U0501>,<U0500>);/
+ (<U0503>,<U0502>);(<U0505>,<U0504>);(<U0507>,<U0506>);(<U0509>,<U0508>);/
+ (<U050B>,<U050A>);(<U050D>,<U050C>);(<U050F>,<U050E>);(<U0511>,<U0510>);/
+ (<U0513>,<U0512>);(<U0515>,<U0514>);(<U0517>,<U0516>);(<U0519>,<U0518>);/
+ (<U051B>,<U051A>);(<U051D>,<U051C>);(<U051F>,<U051E>);(<U0521>,<U0520>);/
+ (<U0523>,<U0522>);(<U0525>,<U0524>);(<U0527>,<U0526>);(<U0529>,<U0528>);/
+ (<U052B>,<U052A>);(<U052D>,<U052C>);(<U052F>,<U052E>);(<U0561>,<U0531>);/
+ (<U0562>,<U0532>);(<U0563>,<U0533>);(<U0564>,<U0534>);(<U0565>,<U0535>);/
+ (<U0566>,<U0536>);(<U0567>,<U0537>);(<U0568>,<U0538>);(<U0569>,<U0539>);/
+ (<U056A>,<U053A>);(<U056B>,<U053B>);(<U056C>,<U053C>);(<U056D>,<U053D>);/
+ (<U056E>,<U053E>);(<U056F>,<U053F>);(<U0570>,<U0540>);(<U0571>,<U0541>);/
+ (<U0572>,<U0542>);(<U0573>,<U0543>);(<U0574>,<U0544>);(<U0575>,<U0545>);/
+ (<U0576>,<U0546>);(<U0577>,<U0547>);(<U0578>,<U0548>);(<U0579>,<U0549>);/
+ (<U057A>,<U054A>);(<U057B>,<U054B>);(<U057C>,<U054C>);(<U057D>,<U054D>);/
+ (<U057E>,<U054E>);(<U057F>,<U054F>);(<U0580>,<U0550>);(<U0581>,<U0551>);/
+ (<U0582>,<U0552>);(<U0583>,<U0553>);(<U0584>,<U0554>);(<U0585>,<U0555>);/
+ (<U0586>,<U0556>);(<U10D0>,<U1C90>);(<U10D1>,<U1C91>);(<U10D2>,<U1C92>);/
+ (<U10D3>,<U1C93>);(<U10D4>,<U1C94>);(<U10D5>,<U1C95>);(<U10D6>,<U1C96>);/
+ (<U10D7>,<U1C97>);(<U10D8>,<U1C98>);(<U10D9>,<U1C99>);(<U10DA>,<U1C9A>);/
+ (<U10DB>,<U1C9B>);(<U10DC>,<U1C9C>);(<U10DD>,<U1C9D>);(<U10DE>,<U1C9E>);/
+ (<U10DF>,<U1C9F>);(<U10E0>,<U1CA0>);(<U10E1>,<U1CA1>);(<U10E2>,<U1CA2>);/
+ (<U10E3>,<U1CA3>);(<U10E4>,<U1CA4>);(<U10E5>,<U1CA5>);(<U10E6>,<U1CA6>);/
+ (<U10E7>,<U1CA7>);(<U10E8>,<U1CA8>);(<U10E9>,<U1CA9>);(<U10EA>,<U1CAA>);/
+ (<U10EB>,<U1CAB>);(<U10EC>,<U1CAC>);(<U10ED>,<U1CAD>);(<U10EE>,<U1CAE>);/
+ (<U10EF>,<U1CAF>);(<U10F0>,<U1CB0>);(<U10F1>,<U1CB1>);(<U10F2>,<U1CB2>);/
+ (<U10F3>,<U1CB3>);(<U10F4>,<U1CB4>);(<U10F5>,<U1CB5>);(<U10F6>,<U1CB6>);/
+ (<U10F7>,<U1CB7>);(<U10F8>,<U1CB8>);(<U10F9>,<U1CB9>);(<U10FA>,<U1CBA>);/
+ (<U10FD>,<U1CBD>);(<U10FE>,<U1CBE>);(<U10FF>,<U1CBF>);(<U13F8>,<U13F0>);/
+ (<U13F9>,<U13F1>);(<U13FA>,<U13F2>);(<U13FB>,<U13F3>);(<U13FC>,<U13F4>);/
+ (<U13FD>,<U13F5>);(<U1C80>,<U0412>);(<U1C81>,<U0414>);(<U1C82>,<U041E>);/
+ (<U1C83>,<U0421>);(<U1C84>,<U0422>);(<U1C85>,<U0422>);(<U1C86>,<U042A>);/
+ (<U1C87>,<U0462>);(<U1C88>,<UA64A>);(<U1C8A>,<U1C89>);(<U1D79>,<UA77D>);/
+ (<U1D7D>,<U2C63>);(<U1D8E>,<UA7C6>);(<U1E01>,<U1E00>);(<U1E03>,<U1E02>);/
+ (<U1E05>,<U1E04>);(<U1E07>,<U1E06>);(<U1E09>,<U1E08>);(<U1E0B>,<U1E0A>);/
+ (<U1E0D>,<U1E0C>);(<U1E0F>,<U1E0E>);(<U1E11>,<U1E10>);(<U1E13>,<U1E12>);/
+ (<U1E15>,<U1E14>);(<U1E17>,<U1E16>);(<U1E19>,<U1E18>);(<U1E1B>,<U1E1A>);/
+ (<U1E1D>,<U1E1C>);(<U1E1F>,<U1E1E>);(<U1E21>,<U1E20>);(<U1E23>,<U1E22>);/
+ (<U1E25>,<U1E24>);(<U1E27>,<U1E26>);(<U1E29>,<U1E28>);(<U1E2B>,<U1E2A>);/
+ (<U1E2D>,<U1E2C>);(<U1E2F>,<U1E2E>);(<U1E31>,<U1E30>);(<U1E33>,<U1E32>);/
+ (<U1E35>,<U1E34>);(<U1E37>,<U1E36>);(<U1E39>,<U1E38>);(<U1E3B>,<U1E3A>);/
+ (<U1E3D>,<U1E3C>);(<U1E3F>,<U1E3E>);(<U1E41>,<U1E40>);(<U1E43>,<U1E42>);/
+ (<U1E45>,<U1E44>);(<U1E47>,<U1E46>);(<U1E49>,<U1E48>);(<U1E4B>,<U1E4A>);/
+ (<U1E4D>,<U1E4C>);(<U1E4F>,<U1E4E>);(<U1E51>,<U1E50>);(<U1E53>,<U1E52>);/
+ (<U1E55>,<U1E54>);(<U1E57>,<U1E56>);(<U1E59>,<U1E58>);(<U1E5B>,<U1E5A>);/
+ (<U1E5D>,<U1E5C>);(<U1E5F>,<U1E5E>);(<U1E61>,<U1E60>);(<U1E63>,<U1E62>);/
+ (<U1E65>,<U1E64>);(<U1E67>,<U1E66>);(<U1E69>,<U1E68>);(<U1E6B>,<U1E6A>);/
+ (<U1E6D>,<U1E6C>);(<U1E6F>,<U1E6E>);(<U1E71>,<U1E70>);(<U1E73>,<U1E72>);/
+ (<U1E75>,<U1E74>);(<U1E77>,<U1E76>);(<U1E79>,<U1E78>);(<U1E7B>,<U1E7A>);/
+ (<U1E7D>,<U1E7C>);(<U1E7F>,<U1E7E>);(<U1E81>,<U1E80>);(<U1E83>,<U1E82>);/
+ (<U1E85>,<U1E84>);(<U1E87>,<U1E86>);(<U1E89>,<U1E88>);(<U1E8B>,<U1E8A>);/
+ (<U1E8D>,<U1E8C>);(<U1E8F>,<U1E8E>);(<U1E91>,<U1E90>);(<U1E93>,<U1E92>);/
+ (<U1E95>,<U1E94>);(<U1E9B>,<U1E60>);(<U1EA1>,<U1EA0>);(<U1EA3>,<U1EA2>);/
+ (<U1EA5>,<U1EA4>);(<U1EA7>,<U1EA6>);(<U1EA9>,<U1EA8>);(<U1EAB>,<U1EAA>);/
+ (<U1EAD>,<U1EAC>);(<U1EAF>,<U1EAE>);(<U1EB1>,<U1EB0>);(<U1EB3>,<U1EB2>);/
+ (<U1EB5>,<U1EB4>);(<U1EB7>,<U1EB6>);(<U1EB9>,<U1EB8>);(<U1EBB>,<U1EBA>);/
+ (<U1EBD>,<U1EBC>);(<U1EBF>,<U1EBE>);(<U1EC1>,<U1EC0>);(<U1EC3>,<U1EC2>);/
+ (<U1EC5>,<U1EC4>);(<U1EC7>,<U1EC6>);(<U1EC9>,<U1EC8>);(<U1ECB>,<U1ECA>);/
+ (<U1ECD>,<U1ECC>);(<U1ECF>,<U1ECE>);(<U1ED1>,<U1ED0>);(<U1ED3>,<U1ED2>);/
+ (<U1ED5>,<U1ED4>);(<U1ED7>,<U1ED6>);(<U1ED9>,<U1ED8>);(<U1EDB>,<U1EDA>);/
+ (<U1EDD>,<U1EDC>);(<U1EDF>,<U1EDE>);(<U1EE1>,<U1EE0>);(<U1EE3>,<U1EE2>);/
+ (<U1EE5>,<U1EE4>);(<U1EE7>,<U1EE6>);(<U1EE9>,<U1EE8>);(<U1EEB>,<U1EEA>);/
+ (<U1EED>,<U1EEC>);(<U1EEF>,<U1EEE>);(<U1EF1>,<U1EF0>);(<U1EF3>,<U1EF2>);/
+ (<U1EF5>,<U1EF4>);(<U1EF7>,<U1EF6>);(<U1EF9>,<U1EF8>);(<U1EFB>,<U1EFA>);/
+ (<U1EFD>,<U1EFC>);(<U1EFF>,<U1EFE>);(<U1F00>,<U1F08>);(<U1F01>,<U1F09>);/
+ (<U1F02>,<U1F0A>);(<U1F03>,<U1F0B>);(<U1F04>,<U1F0C>);(<U1F05>,<U1F0D>);/
+ (<U1F06>,<U1F0E>);(<U1F07>,<U1F0F>);(<U1F10>,<U1F18>);(<U1F11>,<U1F19>);/
+ (<U1F12>,<U1F1A>);(<U1F13>,<U1F1B>);(<U1F14>,<U1F1C>);(<U1F15>,<U1F1D>);/
+ (<U1F20>,<U1F28>);(<U1F21>,<U1F29>);(<U1F22>,<U1F2A>);(<U1F23>,<U1F2B>);/
+ (<U1F24>,<U1F2C>);(<U1F25>,<U1F2D>);(<U1F26>,<U1F2E>);(<U1F27>,<U1F2F>);/
+ (<U1F30>,<U1F38>);(<U1F31>,<U1F39>);(<U1F32>,<U1F3A>);(<U1F33>,<U1F3B>);/
+ (<U1F34>,<U1F3C>);(<U1F35>,<U1F3D>);(<U1F36>,<U1F3E>);(<U1F37>,<U1F3F>);/
+ (<U1F40>,<U1F48>);(<U1F41>,<U1F49>);(<U1F42>,<U1F4A>);(<U1F43>,<U1F4B>);/
+ (<U1F44>,<U1F4C>);(<U1F45>,<U1F4D>);(<U1F51>,<U1F59>);(<U1F53>,<U1F5B>);/
+ (<U1F55>,<U1F5D>);(<U1F57>,<U1F5F>);(<U1F60>,<U1F68>);(<U1F61>,<U1F69>);/
+ (<U1F62>,<U1F6A>);(<U1F63>,<U1F6B>);(<U1F64>,<U1F6C>);(<U1F65>,<U1F6D>);/
+ (<U1F66>,<U1F6E>);(<U1F67>,<U1F6F>);(<U1F70>,<U1FBA>);(<U1F71>,<U1FBB>);/
+ (<U1F72>,<U1FC8>);(<U1F73>,<U1FC9>);(<U1F74>,<U1FCA>);(<U1F75>,<U1FCB>);/
+ (<U1F76>,<U1FDA>);(<U1F77>,<U1FDB>);(<U1F78>,<U1FF8>);(<U1F79>,<U1FF9>);/
+ (<U1F7A>,<U1FEA>);(<U1F7B>,<U1FEB>);(<U1F7C>,<U1FFA>);(<U1F7D>,<U1FFB>);/
+ (<U1F80>,<U1F88>);(<U1F81>,<U1F89>);(<U1F82>,<U1F8A>);(<U1F83>,<U1F8B>);/
+ (<U1F84>,<U1F8C>);(<U1F85>,<U1F8D>);(<U1F86>,<U1F8E>);(<U1F87>,<U1F8F>);/
+ (<U1F90>,<U1F98>);(<U1F91>,<U1F99>);(<U1F92>,<U1F9A>);(<U1F93>,<U1F9B>);/
+ (<U1F94>,<U1F9C>);(<U1F95>,<U1F9D>);(<U1F96>,<U1F9E>);(<U1F97>,<U1F9F>);/
+ (<U1FA0>,<U1FA8>);(<U1FA1>,<U1FA9>);(<U1FA2>,<U1FAA>);(<U1FA3>,<U1FAB>);/
+ (<U1FA4>,<U1FAC>);(<U1FA5>,<U1FAD>);(<U1FA6>,<U1FAE>);(<U1FA7>,<U1FAF>);/
+ (<U1FB0>,<U1FB8>);(<U1FB1>,<U1FB9>);(<U1FB3>,<U1FBC>);(<U1FBE>,<U0399>);/
+ (<U1FC3>,<U1FCC>);(<U1FD0>,<U1FD8>);(<U1FD1>,<U1FD9>);(<U1FE0>,<U1FE8>);/
+ (<U1FE1>,<U1FE9>);(<U1FE5>,<U1FEC>);(<U1FF3>,<U1FFC>);(<U214E>,<U2132>);/
+ (<U2170>,<U2160>);(<U2171>,<U2161>);(<U2172>,<U2162>);(<U2173>,<U2163>);/
+ (<U2174>,<U2164>);(<U2175>,<U2165>);(<U2176>,<U2166>);(<U2177>,<U2167>);/
+ (<U2178>,<U2168>);(<U2179>,<U2169>);(<U217A>,<U216A>);(<U217B>,<U216B>);/
+ (<U217C>,<U216C>);(<U217D>,<U216D>);(<U217E>,<U216E>);(<U217F>,<U216F>);/
+ (<U2184>,<U2183>);(<U24D0>,<U24B6>);(<U24D1>,<U24B7>);(<U24D2>,<U24B8>);/
+ (<U24D3>,<U24B9>);(<U24D4>,<U24BA>);(<U24D5>,<U24BB>);(<U24D6>,<U24BC>);/
+ (<U24D7>,<U24BD>);(<U24D8>,<U24BE>);(<U24D9>,<U24BF>);(<U24DA>,<U24C0>);/
+ (<U24DB>,<U24C1>);(<U24DC>,<U24C2>);(<U24DD>,<U24C3>);(<U24DE>,<U24C4>);/
+ (<U24DF>,<U24C5>);(<U24E0>,<U24C6>);(<U24E1>,<U24C7>);(<U24E2>,<U24C8>);/
+ (<U24E3>,<U24C9>);(<U24E4>,<U24CA>);(<U24E5>,<U24CB>);(<U24E6>,<U24CC>);/
+ (<U24E7>,<U24CD>);(<U24E8>,<U24CE>);(<U24E9>,<U24CF>);(<U2C30>,<U2C00>);/
+ (<U2C31>,<U2C01>);(<U2C32>,<U2C02>);(<U2C33>,<U2C03>);(<U2C34>,<U2C04>);/
+ (<U2C35>,<U2C05>);(<U2C36>,<U2C06>);(<U2C37>,<U2C07>);(<U2C38>,<U2C08>);/
+ (<U2C39>,<U2C09>);(<U2C3A>,<U2C0A>);(<U2C3B>,<U2C0B>);(<U2C3C>,<U2C0C>);/
+ (<U2C3D>,<U2C0D>);(<U2C3E>,<U2C0E>);(<U2C3F>,<U2C0F>);(<U2C40>,<U2C10>);/
+ (<U2C41>,<U2C11>);(<U2C42>,<U2C12>);(<U2C43>,<U2C13>);(<U2C44>,<U2C14>);/
+ (<U2C45>,<U2C15>);(<U2C46>,<U2C16>);(<U2C47>,<U2C17>);(<U2C48>,<U2C18>);/
+ (<U2C49>,<U2C19>);(<U2C4A>,<U2C1A>);(<U2C4B>,<U2C1B>);(<U2C4C>,<U2C1C>);/
+ (<U2C4D>,<U2C1D>);(<U2C4E>,<U2C1E>);(<U2C4F>,<U2C1F>);(<U2C50>,<U2C20>);/
+ (<U2C51>,<U2C21>);(<U2C52>,<U2C22>);(<U2C53>,<U2C23>);(<U2C54>,<U2C24>);/
+ (<U2C55>,<U2C25>);(<U2C56>,<U2C26>);(<U2C57>,<U2C27>);(<U2C58>,<U2C28>);/
+ (<U2C59>,<U2C29>);(<U2C5A>,<U2C2A>);(<U2C5B>,<U2C2B>);(<U2C5C>,<U2C2C>);/
+ (<U2C5D>,<U2C2D>);(<U2C5E>,<U2C2E>);(<U2C5F>,<U2C2F>);(<U2C61>,<U2C60>);/
+ (<U2C65>,<U023A>);(<U2C66>,<U023E>);(<U2C68>,<U2C67>);(<U2C6A>,<U2C69>);/
+ (<U2C6C>,<U2C6B>);(<U2C73>,<U2C72>);(<U2C76>,<U2C75>);(<U2C81>,<U2C80>);/
+ (<U2C83>,<U2C82>);(<U2C85>,<U2C84>);(<U2C87>,<U2C86>);(<U2C89>,<U2C88>);/
+ (<U2C8B>,<U2C8A>);(<U2C8D>,<U2C8C>);(<U2C8F>,<U2C8E>);(<U2C91>,<U2C90>);/
+ (<U2C93>,<U2C92>);(<U2C95>,<U2C94>);(<U2C97>,<U2C96>);(<U2C99>,<U2C98>);/
+ (<U2C9B>,<U2C9A>);(<U2C9D>,<U2C9C>);(<U2C9F>,<U2C9E>);(<U2CA1>,<U2CA0>);/
+ (<U2CA3>,<U2CA2>);(<U2CA5>,<U2CA4>);(<U2CA7>,<U2CA6>);(<U2CA9>,<U2CA8>);/
+ (<U2CAB>,<U2CAA>);(<U2CAD>,<U2CAC>);(<U2CAF>,<U2CAE>);(<U2CB1>,<U2CB0>);/
+ (<U2CB3>,<U2CB2>);(<U2CB5>,<U2CB4>);(<U2CB7>,<U2CB6>);(<U2CB9>,<U2CB8>);/
+ (<U2CBB>,<U2CBA>);(<U2CBD>,<U2CBC>);(<U2CBF>,<U2CBE>);(<U2CC1>,<U2CC0>);/
+ (<U2CC3>,<U2CC2>);(<U2CC5>,<U2CC4>);(<U2CC7>,<U2CC6>);(<U2CC9>,<U2CC8>);/
+ (<U2CCB>,<U2CCA>);(<U2CCD>,<U2CCC>);(<U2CCF>,<U2CCE>);(<U2CD1>,<U2CD0>);/
+ (<U2CD3>,<U2CD2>);(<U2CD5>,<U2CD4>);(<U2CD7>,<U2CD6>);(<U2CD9>,<U2CD8>);/
+ (<U2CDB>,<U2CDA>);(<U2CDD>,<U2CDC>);(<U2CDF>,<U2CDE>);(<U2CE1>,<U2CE0>);/
+ (<U2CE3>,<U2CE2>);(<U2CEC>,<U2CEB>);(<U2CEE>,<U2CED>);(<U2CF3>,<U2CF2>);/
+ (<U2D00>,<U10A0>);(<U2D01>,<U10A1>);(<U2D02>,<U10A2>);(<U2D03>,<U10A3>);/
+ (<U2D04>,<U10A4>);(<U2D05>,<U10A5>);(<U2D06>,<U10A6>);(<U2D07>,<U10A7>);/
+ (<U2D08>,<U10A8>);(<U2D09>,<U10A9>);(<U2D0A>,<U10AA>);(<U2D0B>,<U10AB>);/
+ (<U2D0C>,<U10AC>);(<U2D0D>,<U10AD>);(<U2D0E>,<U10AE>);(<U2D0F>,<U10AF>);/
+ (<U2D10>,<U10B0>);(<U2D11>,<U10B1>);(<U2D12>,<U10B2>);(<U2D13>,<U10B3>);/
+ (<U2D14>,<U10B4>);(<U2D15>,<U10B5>);(<U2D16>,<U10B6>);(<U2D17>,<U10B7>);/
+ (<U2D18>,<U10B8>);(<U2D19>,<U10B9>);(<U2D1A>,<U10BA>);(<U2D1B>,<U10BB>);/
+ (<U2D1C>,<U10BC>);(<U2D1D>,<U10BD>);(<U2D1E>,<U10BE>);(<U2D1F>,<U10BF>);/
+ (<U2D20>,<U10C0>);(<U2D21>,<U10C1>);(<U2D22>,<U10C2>);(<U2D23>,<U10C3>);/
+ (<U2D24>,<U10C4>);(<U2D25>,<U10C5>);(<U2D27>,<U10C7>);(<U2D2D>,<U10CD>);/
+ (<UA641>,<UA640>);(<UA643>,<UA642>);(<UA645>,<UA644>);(<UA647>,<UA646>);/
+ (<UA649>,<UA648>);(<UA64B>,<UA64A>);(<UA64D>,<UA64C>);(<UA64F>,<UA64E>);/
+ (<UA651>,<UA650>);(<UA653>,<UA652>);(<UA655>,<UA654>);(<UA657>,<UA656>);/
+ (<UA659>,<UA658>);(<UA65B>,<UA65A>);(<UA65D>,<UA65C>);(<UA65F>,<UA65E>);/
+ (<UA661>,<UA660>);(<UA663>,<UA662>);(<UA665>,<UA664>);(<UA667>,<UA666>);/
+ (<UA669>,<UA668>);(<UA66B>,<UA66A>);(<UA66D>,<UA66C>);(<UA681>,<UA680>);/
+ (<UA683>,<UA682>);(<UA685>,<UA684>);(<UA687>,<UA686>);(<UA689>,<UA688>);/
+ (<UA68B>,<UA68A>);(<UA68D>,<UA68C>);(<UA68F>,<UA68E>);(<UA691>,<UA690>);/
+ (<UA693>,<UA692>);(<UA695>,<UA694>);(<UA697>,<UA696>);(<UA699>,<UA698>);/
+ (<UA69B>,<UA69A>);(<UA723>,<UA722>);(<UA725>,<UA724>);(<UA727>,<UA726>);/
+ (<UA729>,<UA728>);(<UA72B>,<UA72A>);(<UA72D>,<UA72C>);(<UA72F>,<UA72E>);/
+ (<UA733>,<UA732>);(<UA735>,<UA734>);(<UA737>,<UA736>);(<UA739>,<UA738>);/
+ (<UA73B>,<UA73A>);(<UA73D>,<UA73C>);(<UA73F>,<UA73E>);(<UA741>,<UA740>);/
+ (<UA743>,<UA742>);(<UA745>,<UA744>);(<UA747>,<UA746>);(<UA749>,<UA748>);/
+ (<UA74B>,<UA74A>);(<UA74D>,<UA74C>);(<UA74F>,<UA74E>);(<UA751>,<UA750>);/
+ (<UA753>,<UA752>);(<UA755>,<UA754>);(<UA757>,<UA756>);(<UA759>,<UA758>);/
+ (<UA75B>,<UA75A>);(<UA75D>,<UA75C>);(<UA75F>,<UA75E>);(<UA761>,<UA760>);/
+ (<UA763>,<UA762>);(<UA765>,<UA764>);(<UA767>,<UA766>);(<UA769>,<UA768>);/
+ (<UA76B>,<UA76A>);(<UA76D>,<UA76C>);(<UA76F>,<UA76E>);(<UA77A>,<UA779>);/
+ (<UA77C>,<UA77B>);(<UA77F>,<UA77E>);(<UA781>,<UA780>);(<UA783>,<UA782>);/
+ (<UA785>,<UA784>);(<UA787>,<UA786>);(<UA78C>,<UA78B>);(<UA791>,<UA790>);/
+ (<UA793>,<UA792>);(<UA794>,<UA7C4>);(<UA797>,<UA796>);(<UA799>,<UA798>);/
+ (<UA79B>,<UA79A>);(<UA79D>,<UA79C>);(<UA79F>,<UA79E>);(<UA7A1>,<UA7A0>);/
+ (<UA7A3>,<UA7A2>);(<UA7A5>,<UA7A4>);(<UA7A7>,<UA7A6>);(<UA7A9>,<UA7A8>);/
+ (<UA7B5>,<UA7B4>);(<UA7B7>,<UA7B6>);(<UA7B9>,<UA7B8>);(<UA7BB>,<UA7BA>);/
+ (<UA7BD>,<UA7BC>);(<UA7BF>,<UA7BE>);(<UA7C1>,<UA7C0>);(<UA7C3>,<UA7C2>);/
+ (<UA7C8>,<UA7C7>);(<UA7CA>,<UA7C9>);(<UA7CD>,<UA7CC>);(<UA7D1>,<UA7D0>);/
+ (<UA7D7>,<UA7D6>);(<UA7D9>,<UA7D8>);(<UA7DB>,<UA7DA>);(<UA7F6>,<UA7F5>);/
+ (<UAB53>,<UA7B3>);(<UAB70>,<U13A0>);(<UAB71>,<U13A1>);(<UAB72>,<U13A2>);/
+ (<UAB73>,<U13A3>);(<UAB74>,<U13A4>);(<UAB75>,<U13A5>);(<UAB76>,<U13A6>);/
+ (<UAB77>,<U13A7>);(<UAB78>,<U13A8>);(<UAB79>,<U13A9>);(<UAB7A>,<U13AA>);/
+ (<UAB7B>,<U13AB>);(<UAB7C>,<U13AC>);(<UAB7D>,<U13AD>);(<UAB7E>,<U13AE>);/
+ (<UAB7F>,<U13AF>);(<UAB80>,<U13B0>);(<UAB81>,<U13B1>);(<UAB82>,<U13B2>);/
+ (<UAB83>,<U13B3>);(<UAB84>,<U13B4>);(<UAB85>,<U13B5>);(<UAB86>,<U13B6>);/
+ (<UAB87>,<U13B7>);(<UAB88>,<U13B8>);(<UAB89>,<U13B9>);(<UAB8A>,<U13BA>);/
+ (<UAB8B>,<U13BB>);(<UAB8C>,<U13BC>);(<UAB8D>,<U13BD>);(<UAB8E>,<U13BE>);/
+ (<UAB8F>,<U13BF>);(<UAB90>,<U13C0>);(<UAB91>,<U13C1>);(<UAB92>,<U13C2>);/
+ (<UAB93>,<U13C3>);(<UAB94>,<U13C4>);(<UAB95>,<U13C5>);(<UAB96>,<U13C6>);/
+ (<UAB97>,<U13C7>);(<UAB98>,<U13C8>);(<UAB99>,<U13C9>);(<UAB9A>,<U13CA>);/
+ (<UAB9B>,<U13CB>);(<UAB9C>,<U13CC>);(<UAB9D>,<U13CD>);(<UAB9E>,<U13CE>);/
+ (<UAB9F>,<U13CF>);(<UABA0>,<U13D0>);(<UABA1>,<U13D1>);(<UABA2>,<U13D2>);/
+ (<UABA3>,<U13D3>);(<UABA4>,<U13D4>);(<UABA5>,<U13D5>);(<UABA6>,<U13D6>);/
+ (<UABA7>,<U13D7>);(<UABA8>,<U13D8>);(<UABA9>,<U13D9>);(<UABAA>,<U13DA>);/
+ (<UABAB>,<U13DB>);(<UABAC>,<U13DC>);(<UABAD>,<U13DD>);(<UABAE>,<U13DE>);/
+ (<UABAF>,<U13DF>);(<UABB0>,<U13E0>);(<UABB1>,<U13E1>);(<UABB2>,<U13E2>);/
+ (<UABB3>,<U13E3>);(<UABB4>,<U13E4>);(<UABB5>,<U13E5>);(<UABB6>,<U13E6>);/
+ (<UABB7>,<U13E7>);(<UABB8>,<U13E8>);(<UABB9>,<U13E9>);(<UABBA>,<U13EA>);/
+ (<UABBB>,<U13EB>);(<UABBC>,<U13EC>);(<UABBD>,<U13ED>);(<UABBE>,<U13EE>);/
+ (<UABBF>,<U13EF>);(<UFF41>,<UFF21>);(<UFF42>,<UFF22>);(<UFF43>,<UFF23>);/
+ (<UFF44>,<UFF24>);(<UFF45>,<UFF25>);(<UFF46>,<UFF26>);(<UFF47>,<UFF27>);/
+ (<UFF48>,<UFF28>);(<UFF49>,<UFF29>);(<UFF4A>,<UFF2A>);(<UFF4B>,<UFF2B>);/
+ (<UFF4C>,<UFF2C>);(<UFF4D>,<UFF2D>);(<UFF4E>,<UFF2E>);(<UFF4F>,<UFF2F>);/
+ (<UFF50>,<UFF30>);(<UFF51>,<UFF31>);(<UFF52>,<UFF32>);(<UFF53>,<UFF33>);/
+ (<UFF54>,<UFF34>);(<UFF55>,<UFF35>);(<UFF56>,<UFF36>);(<UFF57>,<UFF37>);/
+ (<UFF58>,<UFF38>);(<UFF59>,<UFF39>);(<UFF5A>,<UFF3A>);/
+ (<U00010428>,<U00010400>);(<U00010429>,<U00010401>);/
+ (<U0001042A>,<U00010402>);(<U0001042B>,<U00010403>);/
+ (<U0001042C>,<U00010404>);(<U0001042D>,<U00010405>);/
+ (<U0001042E>,<U00010406>);(<U0001042F>,<U00010407>);/
+ (<U00010430>,<U00010408>);(<U00010431>,<U00010409>);/
+ (<U00010432>,<U0001040A>);(<U00010433>,<U0001040B>);/
+ (<U00010434>,<U0001040C>);(<U00010435>,<U0001040D>);/
+ (<U00010436>,<U0001040E>);(<U00010437>,<U0001040F>);/
+ (<U00010438>,<U00010410>);(<U00010439>,<U00010411>);/
+ (<U0001043A>,<U00010412>);(<U0001043B>,<U00010413>);/
+ (<U0001043C>,<U00010414>);(<U0001043D>,<U00010415>);/
+ (<U0001043E>,<U00010416>);(<U0001043F>,<U00010417>);/
+ (<U00010440>,<U00010418>);(<U00010441>,<U00010419>);/
+ (<U00010442>,<U0001041A>);(<U00010443>,<U0001041B>);/
+ (<U00010444>,<U0001041C>);(<U00010445>,<U0001041D>);/
+ (<U00010446>,<U0001041E>);(<U00010447>,<U0001041F>);/
+ (<U00010448>,<U00010420>);(<U00010449>,<U00010421>);/
+ (<U0001044A>,<U00010422>);(<U0001044B>,<U00010423>);/
+ (<U0001044C>,<U00010424>);(<U0001044D>,<U00010425>);/
+ (<U0001044E>,<U00010426>);(<U0001044F>,<U00010427>);/
+ (<U000104D8>,<U000104B0>);(<U000104D9>,<U000104B1>);/
+ (<U000104DA>,<U000104B2>);(<U000104DB>,<U000104B3>);/
+ (<U000104DC>,<U000104B4>);(<U000104DD>,<U000104B5>);/
+ (<U000104DE>,<U000104B6>);(<U000104DF>,<U000104B7>);/
+ (<U000104E0>,<U000104B8>);(<U000104E1>,<U000104B9>);/
+ (<U000104E2>,<U000104BA>);(<U000104E3>,<U000104BB>);/
+ (<U000104E4>,<U000104BC>);(<U000104E5>,<U000104BD>);/
+ (<U000104E6>,<U000104BE>);(<U000104E7>,<U000104BF>);/
+ (<U000104E8>,<U000104C0>);(<U000104E9>,<U000104C1>);/
+ (<U000104EA>,<U000104C2>);(<U000104EB>,<U000104C3>);/
+ (<U000104EC>,<U000104C4>);(<U000104ED>,<U000104C5>);/
+ (<U000104EE>,<U000104C6>);(<U000104EF>,<U000104C7>);/
+ (<U000104F0>,<U000104C8>);(<U000104F1>,<U000104C9>);/
+ (<U000104F2>,<U000104CA>);(<U000104F3>,<U000104CB>);/
+ (<U000104F4>,<U000104CC>);(<U000104F5>,<U000104CD>);/
+ (<U000104F6>,<U000104CE>);(<U000104F7>,<U000104CF>);/
+ (<U000104F8>,<U000104D0>);(<U000104F9>,<U000104D1>);/
+ (<U000104FA>,<U000104D2>);(<U000104FB>,<U000104D3>);/
+ (<U00010597>,<U00010570>);(<U00010598>,<U00010571>);/
+ (<U00010599>,<U00010572>);(<U0001059A>,<U00010573>);/
+ (<U0001059B>,<U00010574>);(<U0001059C>,<U00010575>);/
+ (<U0001059D>,<U00010576>);(<U0001059E>,<U00010577>);/
+ (<U0001059F>,<U00010578>);(<U000105A0>,<U00010579>);/
+ (<U000105A1>,<U0001057A>);(<U000105A3>,<U0001057C>);/
+ (<U000105A4>,<U0001057D>);(<U000105A5>,<U0001057E>);/
+ (<U000105A6>,<U0001057F>);(<U000105A7>,<U00010580>);/
+ (<U000105A8>,<U00010581>);(<U000105A9>,<U00010582>);/
+ (<U000105AA>,<U00010583>);(<U000105AB>,<U00010584>);/
+ (<U000105AC>,<U00010585>);(<U000105AD>,<U00010586>);/
+ (<U000105AE>,<U00010587>);(<U000105AF>,<U00010588>);/
+ (<U000105B0>,<U00010589>);(<U000105B1>,<U0001058A>);/
+ (<U000105B3>,<U0001058C>);(<U000105B4>,<U0001058D>);/
+ (<U000105B5>,<U0001058E>);(<U000105B6>,<U0001058F>);/
+ (<U000105B7>,<U00010590>);(<U000105B8>,<U00010591>);/
+ (<U000105B9>,<U00010592>);(<U000105BB>,<U00010594>);/
+ (<U000105BC>,<U00010595>);(<U00010CC0>,<U00010C80>);/
+ (<U00010CC1>,<U00010C81>);(<U00010CC2>,<U00010C82>);/
+ (<U00010CC3>,<U00010C83>);(<U00010CC4>,<U00010C84>);/
+ (<U00010CC5>,<U00010C85>);(<U00010CC6>,<U00010C86>);/
+ (<U00010CC7>,<U00010C87>);(<U00010CC8>,<U00010C88>);/
+ (<U00010CC9>,<U00010C89>);(<U00010CCA>,<U00010C8A>);/
+ (<U00010CCB>,<U00010C8B>);(<U00010CCC>,<U00010C8C>);/
+ (<U00010CCD>,<U00010C8D>);(<U00010CCE>,<U00010C8E>);/
+ (<U00010CCF>,<U00010C8F>);(<U00010CD0>,<U00010C90>);/
+ (<U00010CD1>,<U00010C91>);(<U00010CD2>,<U00010C92>);/
+ (<U00010CD3>,<U00010C93>);(<U00010CD4>,<U00010C94>);/
+ (<U00010CD5>,<U00010C95>);(<U00010CD6>,<U00010C96>);/
+ (<U00010CD7>,<U00010C97>);(<U00010CD8>,<U00010C98>);/
+ (<U00010CD9>,<U00010C99>);(<U00010CDA>,<U00010C9A>);/
+ (<U00010CDB>,<U00010C9B>);(<U00010CDC>,<U00010C9C>);/
+ (<U00010CDD>,<U00010C9D>);(<U00010CDE>,<U00010C9E>);/
+ (<U00010CDF>,<U00010C9F>);(<U00010CE0>,<U00010CA0>);/
+ (<U00010CE1>,<U00010CA1>);(<U00010CE2>,<U00010CA2>);/
+ (<U00010CE3>,<U00010CA3>);(<U00010CE4>,<U00010CA4>);/
+ (<U00010CE5>,<U00010CA5>);(<U00010CE6>,<U00010CA6>);/
+ (<U00010CE7>,<U00010CA7>);(<U00010CE8>,<U00010CA8>);/
+ (<U00010CE9>,<U00010CA9>);(<U00010CEA>,<U00010CAA>);/
+ (<U00010CEB>,<U00010CAB>);(<U00010CEC>,<U00010CAC>);/
+ (<U00010CED>,<U00010CAD>);(<U00010CEE>,<U00010CAE>);/
+ (<U00010CEF>,<U00010CAF>);(<U00010CF0>,<U00010CB0>);/
+ (<U00010CF1>,<U00010CB1>);(<U00010CF2>,<U00010CB2>);/
+ (<U00010D70>,<U00010D50>);(<U00010D71>,<U00010D51>);/
+ (<U00010D72>,<U00010D52>);(<U00010D73>,<U00010D53>);/
+ (<U00010D74>,<U00010D54>);(<U00010D75>,<U00010D55>);/
+ (<U00010D76>,<U00010D56>);(<U00010D77>,<U00010D57>);/
+ (<U00010D78>,<U00010D58>);(<U00010D79>,<U00010D59>);/
+ (<U00010D7A>,<U00010D5A>);(<U00010D7B>,<U00010D5B>);/
+ (<U00010D7C>,<U00010D5C>);(<U00010D7D>,<U00010D5D>);/
+ (<U00010D7E>,<U00010D5E>);(<U00010D7F>,<U00010D5F>);/
+ (<U00010D80>,<U00010D60>);(<U00010D81>,<U00010D61>);/
+ (<U00010D82>,<U00010D62>);(<U00010D83>,<U00010D63>);/
+ (<U00010D84>,<U00010D64>);(<U00010D85>,<U00010D65>);/
+ (<U000118C0>,<U000118A0>);(<U000118C1>,<U000118A1>);/
+ (<U000118C2>,<U000118A2>);(<U000118C3>,<U000118A3>);/
+ (<U000118C4>,<U000118A4>);(<U000118C5>,<U000118A5>);/
+ (<U000118C6>,<U000118A6>);(<U000118C7>,<U000118A7>);/
+ (<U000118C8>,<U000118A8>);(<U000118C9>,<U000118A9>);/
+ (<U000118CA>,<U000118AA>);(<U000118CB>,<U000118AB>);/
+ (<U000118CC>,<U000118AC>);(<U000118CD>,<U000118AD>);/
+ (<U000118CE>,<U000118AE>);(<U000118CF>,<U000118AF>);/
+ (<U000118D0>,<U000118B0>);(<U000118D1>,<U000118B1>);/
+ (<U000118D2>,<U000118B2>);(<U000118D3>,<U000118B3>);/
+ (<U000118D4>,<U000118B4>);(<U000118D5>,<U000118B5>);/
+ (<U000118D6>,<U000118B6>);(<U000118D7>,<U000118B7>);/
+ (<U000118D8>,<U000118B8>);(<U000118D9>,<U000118B9>);/
+ (<U000118DA>,<U000118BA>);(<U000118DB>,<U000118BB>);/
+ (<U000118DC>,<U000118BC>);(<U000118DD>,<U000118BD>);/
+ (<U000118DE>,<U000118BE>);(<U000118DF>,<U000118BF>);/
+ (<U00016E60>,<U00016E40>);(<U00016E61>,<U00016E41>);/
+ (<U00016E62>,<U00016E42>);(<U00016E63>,<U00016E43>);/
+ (<U00016E64>,<U00016E44>);(<U00016E65>,<U00016E45>);/
+ (<U00016E66>,<U00016E46>);(<U00016E67>,<U00016E47>);/
+ (<U00016E68>,<U00016E48>);(<U00016E69>,<U00016E49>);/
+ (<U00016E6A>,<U00016E4A>);(<U00016E6B>,<U00016E4B>);/
+ (<U00016E6C>,<U00016E4C>);(<U00016E6D>,<U00016E4D>);/
+ (<U00016E6E>,<U00016E4E>);(<U00016E6F>,<U00016E4F>);/
+ (<U00016E70>,<U00016E50>);(<U00016E71>,<U00016E51>);/
+ (<U00016E72>,<U00016E52>);(<U00016E73>,<U00016E53>);/
+ (<U00016E74>,<U00016E54>);(<U00016E75>,<U00016E55>);/
+ (<U00016E76>,<U00016E56>);(<U00016E77>,<U00016E57>);/
+ (<U00016E78>,<U00016E58>);(<U00016E79>,<U00016E59>);/
+ (<U00016E7A>,<U00016E5A>);(<U00016E7B>,<U00016E5B>);/
+ (<U00016E7C>,<U00016E5C>);(<U00016E7D>,<U00016E5D>);/
+ (<U00016E7E>,<U00016E5E>);(<U00016E7F>,<U00016E5F>);/
+ (<U0001E922>,<U0001E900>);(<U0001E923>,<U0001E901>);/
+ (<U0001E924>,<U0001E902>);(<U0001E925>,<U0001E903>);/
+ (<U0001E926>,<U0001E904>);(<U0001E927>,<U0001E905>);/
+ (<U0001E928>,<U0001E906>);(<U0001E929>,<U0001E907>);/
+ (<U0001E92A>,<U0001E908>);(<U0001E92B>,<U0001E909>);/
+ (<U0001E92C>,<U0001E90A>);(<U0001E92D>,<U0001E90B>);/
+ (<U0001E92E>,<U0001E90C>);(<U0001E92F>,<U0001E90D>);/
+ (<U0001E930>,<U0001E90E>);(<U0001E931>,<U0001E90F>);/
+ (<U0001E932>,<U0001E910>);(<U0001E933>,<U0001E911>);/
+ (<U0001E934>,<U0001E912>);(<U0001E935>,<U0001E913>);/
+ (<U0001E936>,<U0001E914>);(<U0001E937>,<U0001E915>);/
+ (<U0001E938>,<U0001E916>);(<U0001E939>,<U0001E917>);/
+ (<U0001E93A>,<U0001E918>);(<U0001E93B>,<U0001E919>);/
+ (<U0001E93C>,<U0001E91A>);(<U0001E93D>,<U0001E91B>);/
+ (<U0001E93E>,<U0001E91C>);(<U0001E93F>,<U0001E91D>);/
+ (<U0001E940>,<U0001E91E>);(<U0001E941>,<U0001E91F>);/
+ (<U0001E942>,<U0001E920>);(<U0001E943>,<U0001E921>)
tolower /
(<U0041>,<U0061>);(<U0042>,<U0062>);(<U0043>,<U0063>);(<U0044>,<U0064>);/
@@ -1852,281 +1907,294 @@ tolower /
(<U13E7>,<UABB7>);(<U13E8>,<UABB8>);(<U13E9>,<UABB9>);(<U13EA>,<UABBA>);/
(<U13EB>,<UABBB>);(<U13EC>,<UABBC>);(<U13ED>,<UABBD>);(<U13EE>,<UABBE>);/
(<U13EF>,<UABBF>);(<U13F0>,<U13F8>);(<U13F1>,<U13F9>);(<U13F2>,<U13FA>);/
- (<U13F3>,<U13FB>);(<U13F4>,<U13FC>);(<U13F5>,<U13FD>);(<U1C90>,<U10D0>);/
- (<U1C91>,<U10D1>);(<U1C92>,<U10D2>);(<U1C93>,<U10D3>);(<U1C94>,<U10D4>);/
- (<U1C95>,<U10D5>);(<U1C96>,<U10D6>);(<U1C97>,<U10D7>);(<U1C98>,<U10D8>);/
- (<U1C99>,<U10D9>);(<U1C9A>,<U10DA>);(<U1C9B>,<U10DB>);(<U1C9C>,<U10DC>);/
- (<U1C9D>,<U10DD>);(<U1C9E>,<U10DE>);(<U1C9F>,<U10DF>);(<U1CA0>,<U10E0>);/
- (<U1CA1>,<U10E1>);(<U1CA2>,<U10E2>);(<U1CA3>,<U10E3>);(<U1CA4>,<U10E4>);/
- (<U1CA5>,<U10E5>);(<U1CA6>,<U10E6>);(<U1CA7>,<U10E7>);(<U1CA8>,<U10E8>);/
- (<U1CA9>,<U10E9>);(<U1CAA>,<U10EA>);(<U1CAB>,<U10EB>);(<U1CAC>,<U10EC>);/
- (<U1CAD>,<U10ED>);(<U1CAE>,<U10EE>);(<U1CAF>,<U10EF>);(<U1CB0>,<U10F0>);/
- (<U1CB1>,<U10F1>);(<U1CB2>,<U10F2>);(<U1CB3>,<U10F3>);(<U1CB4>,<U10F4>);/
- (<U1CB5>,<U10F5>);(<U1CB6>,<U10F6>);(<U1CB7>,<U10F7>);(<U1CB8>,<U10F8>);/
- (<U1CB9>,<U10F9>);(<U1CBA>,<U10FA>);(<U1CBD>,<U10FD>);(<U1CBE>,<U10FE>);/
- (<U1CBF>,<U10FF>);(<U1E00>,<U1E01>);(<U1E02>,<U1E03>);(<U1E04>,<U1E05>);/
- (<U1E06>,<U1E07>);(<U1E08>,<U1E09>);(<U1E0A>,<U1E0B>);(<U1E0C>,<U1E0D>);/
- (<U1E0E>,<U1E0F>);(<U1E10>,<U1E11>);(<U1E12>,<U1E13>);(<U1E14>,<U1E15>);/
- (<U1E16>,<U1E17>);(<U1E18>,<U1E19>);(<U1E1A>,<U1E1B>);(<U1E1C>,<U1E1D>);/
- (<U1E1E>,<U1E1F>);(<U1E20>,<U1E21>);(<U1E22>,<U1E23>);(<U1E24>,<U1E25>);/
- (<U1E26>,<U1E27>);(<U1E28>,<U1E29>);(<U1E2A>,<U1E2B>);(<U1E2C>,<U1E2D>);/
- (<U1E2E>,<U1E2F>);(<U1E30>,<U1E31>);(<U1E32>,<U1E33>);(<U1E34>,<U1E35>);/
- (<U1E36>,<U1E37>);(<U1E38>,<U1E39>);(<U1E3A>,<U1E3B>);(<U1E3C>,<U1E3D>);/
- (<U1E3E>,<U1E3F>);(<U1E40>,<U1E41>);(<U1E42>,<U1E43>);(<U1E44>,<U1E45>);/
- (<U1E46>,<U1E47>);(<U1E48>,<U1E49>);(<U1E4A>,<U1E4B>);(<U1E4C>,<U1E4D>);/
- (<U1E4E>,<U1E4F>);(<U1E50>,<U1E51>);(<U1E52>,<U1E53>);(<U1E54>,<U1E55>);/
- (<U1E56>,<U1E57>);(<U1E58>,<U1E59>);(<U1E5A>,<U1E5B>);(<U1E5C>,<U1E5D>);/
- (<U1E5E>,<U1E5F>);(<U1E60>,<U1E61>);(<U1E62>,<U1E63>);(<U1E64>,<U1E65>);/
- (<U1E66>,<U1E67>);(<U1E68>,<U1E69>);(<U1E6A>,<U1E6B>);(<U1E6C>,<U1E6D>);/
- (<U1E6E>,<U1E6F>);(<U1E70>,<U1E71>);(<U1E72>,<U1E73>);(<U1E74>,<U1E75>);/
- (<U1E76>,<U1E77>);(<U1E78>,<U1E79>);(<U1E7A>,<U1E7B>);(<U1E7C>,<U1E7D>);/
- (<U1E7E>,<U1E7F>);(<U1E80>,<U1E81>);(<U1E82>,<U1E83>);(<U1E84>,<U1E85>);/
- (<U1E86>,<U1E87>);(<U1E88>,<U1E89>);(<U1E8A>,<U1E8B>);(<U1E8C>,<U1E8D>);/
- (<U1E8E>,<U1E8F>);(<U1E90>,<U1E91>);(<U1E92>,<U1E93>);(<U1E94>,<U1E95>);/
- (<U1E9E>,<U00DF>);(<U1EA0>,<U1EA1>);(<U1EA2>,<U1EA3>);(<U1EA4>,<U1EA5>);/
- (<U1EA6>,<U1EA7>);(<U1EA8>,<U1EA9>);(<U1EAA>,<U1EAB>);(<U1EAC>,<U1EAD>);/
- (<U1EAE>,<U1EAF>);(<U1EB0>,<U1EB1>);(<U1EB2>,<U1EB3>);(<U1EB4>,<U1EB5>);/
- (<U1EB6>,<U1EB7>);(<U1EB8>,<U1EB9>);(<U1EBA>,<U1EBB>);(<U1EBC>,<U1EBD>);/
- (<U1EBE>,<U1EBF>);(<U1EC0>,<U1EC1>);(<U1EC2>,<U1EC3>);(<U1EC4>,<U1EC5>);/
- (<U1EC6>,<U1EC7>);(<U1EC8>,<U1EC9>);(<U1ECA>,<U1ECB>);(<U1ECC>,<U1ECD>);/
- (<U1ECE>,<U1ECF>);(<U1ED0>,<U1ED1>);(<U1ED2>,<U1ED3>);(<U1ED4>,<U1ED5>);/
- (<U1ED6>,<U1ED7>);(<U1ED8>,<U1ED9>);(<U1EDA>,<U1EDB>);(<U1EDC>,<U1EDD>);/
- (<U1EDE>,<U1EDF>);(<U1EE0>,<U1EE1>);(<U1EE2>,<U1EE3>);(<U1EE4>,<U1EE5>);/
- (<U1EE6>,<U1EE7>);(<U1EE8>,<U1EE9>);(<U1EEA>,<U1EEB>);(<U1EEC>,<U1EED>);/
- (<U1EEE>,<U1EEF>);(<U1EF0>,<U1EF1>);(<U1EF2>,<U1EF3>);(<U1EF4>,<U1EF5>);/
- (<U1EF6>,<U1EF7>);(<U1EF8>,<U1EF9>);(<U1EFA>,<U1EFB>);(<U1EFC>,<U1EFD>);/
- (<U1EFE>,<U1EFF>);(<U1F08>,<U1F00>);(<U1F09>,<U1F01>);(<U1F0A>,<U1F02>);/
- (<U1F0B>,<U1F03>);(<U1F0C>,<U1F04>);(<U1F0D>,<U1F05>);(<U1F0E>,<U1F06>);/
- (<U1F0F>,<U1F07>);(<U1F18>,<U1F10>);(<U1F19>,<U1F11>);(<U1F1A>,<U1F12>);/
- (<U1F1B>,<U1F13>);(<U1F1C>,<U1F14>);(<U1F1D>,<U1F15>);(<U1F28>,<U1F20>);/
- (<U1F29>,<U1F21>);(<U1F2A>,<U1F22>);(<U1F2B>,<U1F23>);(<U1F2C>,<U1F24>);/
- (<U1F2D>,<U1F25>);(<U1F2E>,<U1F26>);(<U1F2F>,<U1F27>);(<U1F38>,<U1F30>);/
- (<U1F39>,<U1F31>);(<U1F3A>,<U1F32>);(<U1F3B>,<U1F33>);(<U1F3C>,<U1F34>);/
- (<U1F3D>,<U1F35>);(<U1F3E>,<U1F36>);(<U1F3F>,<U1F37>);(<U1F48>,<U1F40>);/
- (<U1F49>,<U1F41>);(<U1F4A>,<U1F42>);(<U1F4B>,<U1F43>);(<U1F4C>,<U1F44>);/
- (<U1F4D>,<U1F45>);(<U1F59>,<U1F51>);(<U1F5B>,<U1F53>);(<U1F5D>,<U1F55>);/
- (<U1F5F>,<U1F57>);(<U1F68>,<U1F60>);(<U1F69>,<U1F61>);(<U1F6A>,<U1F62>);/
- (<U1F6B>,<U1F63>);(<U1F6C>,<U1F64>);(<U1F6D>,<U1F65>);(<U1F6E>,<U1F66>);/
- (<U1F6F>,<U1F67>);(<U1F88>,<U1F80>);(<U1F89>,<U1F81>);(<U1F8A>,<U1F82>);/
- (<U1F8B>,<U1F83>);(<U1F8C>,<U1F84>);(<U1F8D>,<U1F85>);(<U1F8E>,<U1F86>);/
- (<U1F8F>,<U1F87>);(<U1F98>,<U1F90>);(<U1F99>,<U1F91>);(<U1F9A>,<U1F92>);/
- (<U1F9B>,<U1F93>);(<U1F9C>,<U1F94>);(<U1F9D>,<U1F95>);(<U1F9E>,<U1F96>);/
- (<U1F9F>,<U1F97>);(<U1FA8>,<U1FA0>);(<U1FA9>,<U1FA1>);(<U1FAA>,<U1FA2>);/
- (<U1FAB>,<U1FA3>);(<U1FAC>,<U1FA4>);(<U1FAD>,<U1FA5>);(<U1FAE>,<U1FA6>);/
- (<U1FAF>,<U1FA7>);(<U1FB8>,<U1FB0>);(<U1FB9>,<U1FB1>);(<U1FBA>,<U1F70>);/
- (<U1FBB>,<U1F71>);(<U1FBC>,<U1FB3>);(<U1FC8>,<U1F72>);(<U1FC9>,<U1F73>);/
- (<U1FCA>,<U1F74>);(<U1FCB>,<U1F75>);(<U1FCC>,<U1FC3>);(<U1FD8>,<U1FD0>);/
- (<U1FD9>,<U1FD1>);(<U1FDA>,<U1F76>);(<U1FDB>,<U1F77>);(<U1FE8>,<U1FE0>);/
- (<U1FE9>,<U1FE1>);(<U1FEA>,<U1F7A>);(<U1FEB>,<U1F7B>);(<U1FEC>,<U1FE5>);/
- (<U1FF8>,<U1F78>);(<U1FF9>,<U1F79>);(<U1FFA>,<U1F7C>);(<U1FFB>,<U1F7D>);/
- (<U1FFC>,<U1FF3>);(<U2126>,<U03C9>);(<U212A>,<U006B>);(<U212B>,<U00E5>);/
- (<U2132>,<U214E>);(<U2160>,<U2170>);(<U2161>,<U2171>);(<U2162>,<U2172>);/
- (<U2163>,<U2173>);(<U2164>,<U2174>);(<U2165>,<U2175>);(<U2166>,<U2176>);/
- (<U2167>,<U2177>);(<U2168>,<U2178>);(<U2169>,<U2179>);(<U216A>,<U217A>);/
- (<U216B>,<U217B>);(<U216C>,<U217C>);(<U216D>,<U217D>);(<U216E>,<U217E>);/
- (<U216F>,<U217F>);(<U2183>,<U2184>);(<U24B6>,<U24D0>);(<U24B7>,<U24D1>);/
- (<U24B8>,<U24D2>);(<U24B9>,<U24D3>);(<U24BA>,<U24D4>);(<U24BB>,<U24D5>);/
- (<U24BC>,<U24D6>);(<U24BD>,<U24D7>);(<U24BE>,<U24D8>);(<U24BF>,<U24D9>);/
- (<U24C0>,<U24DA>);(<U24C1>,<U24DB>);(<U24C2>,<U24DC>);(<U24C3>,<U24DD>);/
- (<U24C4>,<U24DE>);(<U24C5>,<U24DF>);(<U24C6>,<U24E0>);(<U24C7>,<U24E1>);/
- (<U24C8>,<U24E2>);(<U24C9>,<U24E3>);(<U24CA>,<U24E4>);(<U24CB>,<U24E5>);/
- (<U24CC>,<U24E6>);(<U24CD>,<U24E7>);(<U24CE>,<U24E8>);(<U24CF>,<U24E9>);/
- (<U2C00>,<U2C30>);(<U2C01>,<U2C31>);(<U2C02>,<U2C32>);(<U2C03>,<U2C33>);/
- (<U2C04>,<U2C34>);(<U2C05>,<U2C35>);(<U2C06>,<U2C36>);(<U2C07>,<U2C37>);/
- (<U2C08>,<U2C38>);(<U2C09>,<U2C39>);(<U2C0A>,<U2C3A>);(<U2C0B>,<U2C3B>);/
- (<U2C0C>,<U2C3C>);(<U2C0D>,<U2C3D>);(<U2C0E>,<U2C3E>);(<U2C0F>,<U2C3F>);/
- (<U2C10>,<U2C40>);(<U2C11>,<U2C41>);(<U2C12>,<U2C42>);(<U2C13>,<U2C43>);/
- (<U2C14>,<U2C44>);(<U2C15>,<U2C45>);(<U2C16>,<U2C46>);(<U2C17>,<U2C47>);/
- (<U2C18>,<U2C48>);(<U2C19>,<U2C49>);(<U2C1A>,<U2C4A>);(<U2C1B>,<U2C4B>);/
- (<U2C1C>,<U2C4C>);(<U2C1D>,<U2C4D>);(<U2C1E>,<U2C4E>);(<U2C1F>,<U2C4F>);/
- (<U2C20>,<U2C50>);(<U2C21>,<U2C51>);(<U2C22>,<U2C52>);(<U2C23>,<U2C53>);/
- (<U2C24>,<U2C54>);(<U2C25>,<U2C55>);(<U2C26>,<U2C56>);(<U2C27>,<U2C57>);/
- (<U2C28>,<U2C58>);(<U2C29>,<U2C59>);(<U2C2A>,<U2C5A>);(<U2C2B>,<U2C5B>);/
- (<U2C2C>,<U2C5C>);(<U2C2D>,<U2C5D>);(<U2C2E>,<U2C5E>);(<U2C2F>,<U2C5F>);/
- (<U2C60>,<U2C61>);(<U2C62>,<U026B>);(<U2C63>,<U1D7D>);(<U2C64>,<U027D>);/
- (<U2C67>,<U2C68>);(<U2C69>,<U2C6A>);(<U2C6B>,<U2C6C>);(<U2C6D>,<U0251>);/
- (<U2C6E>,<U0271>);(<U2C6F>,<U0250>);(<U2C70>,<U0252>);(<U2C72>,<U2C73>);/
- (<U2C75>,<U2C76>);(<U2C7E>,<U023F>);(<U2C7F>,<U0240>);(<U2C80>,<U2C81>);/
- (<U2C82>,<U2C83>);(<U2C84>,<U2C85>);(<U2C86>,<U2C87>);(<U2C88>,<U2C89>);/
- (<U2C8A>,<U2C8B>);(<U2C8C>,<U2C8D>);(<U2C8E>,<U2C8F>);(<U2C90>,<U2C91>);/
- (<U2C92>,<U2C93>);(<U2C94>,<U2C95>);(<U2C96>,<U2C97>);(<U2C98>,<U2C99>);/
- (<U2C9A>,<U2C9B>);(<U2C9C>,<U2C9D>);(<U2C9E>,<U2C9F>);(<U2CA0>,<U2CA1>);/
- (<U2CA2>,<U2CA3>);(<U2CA4>,<U2CA5>);(<U2CA6>,<U2CA7>);(<U2CA8>,<U2CA9>);/
- (<U2CAA>,<U2CAB>);(<U2CAC>,<U2CAD>);(<U2CAE>,<U2CAF>);(<U2CB0>,<U2CB1>);/
- (<U2CB2>,<U2CB3>);(<U2CB4>,<U2CB5>);(<U2CB6>,<U2CB7>);(<U2CB8>,<U2CB9>);/
- (<U2CBA>,<U2CBB>);(<U2CBC>,<U2CBD>);(<U2CBE>,<U2CBF>);(<U2CC0>,<U2CC1>);/
- (<U2CC2>,<U2CC3>);(<U2CC4>,<U2CC5>);(<U2CC6>,<U2CC7>);(<U2CC8>,<U2CC9>);/
- (<U2CCA>,<U2CCB>);(<U2CCC>,<U2CCD>);(<U2CCE>,<U2CCF>);(<U2CD0>,<U2CD1>);/
- (<U2CD2>,<U2CD3>);(<U2CD4>,<U2CD5>);(<U2CD6>,<U2CD7>);(<U2CD8>,<U2CD9>);/
- (<U2CDA>,<U2CDB>);(<U2CDC>,<U2CDD>);(<U2CDE>,<U2CDF>);(<U2CE0>,<U2CE1>);/
- (<U2CE2>,<U2CE3>);(<U2CEB>,<U2CEC>);(<U2CED>,<U2CEE>);(<U2CF2>,<U2CF3>);/
- (<UA640>,<UA641>);(<UA642>,<UA643>);(<UA644>,<UA645>);(<UA646>,<UA647>);/
- (<UA648>,<UA649>);(<UA64A>,<UA64B>);(<UA64C>,<UA64D>);(<UA64E>,<UA64F>);/
- (<UA650>,<UA651>);(<UA652>,<UA653>);(<UA654>,<UA655>);(<UA656>,<UA657>);/
- (<UA658>,<UA659>);(<UA65A>,<UA65B>);(<UA65C>,<UA65D>);(<UA65E>,<UA65F>);/
- (<UA660>,<UA661>);(<UA662>,<UA663>);(<UA664>,<UA665>);(<UA666>,<UA667>);/
- (<UA668>,<UA669>);(<UA66A>,<UA66B>);(<UA66C>,<UA66D>);(<UA680>,<UA681>);/
- (<UA682>,<UA683>);(<UA684>,<UA685>);(<UA686>,<UA687>);(<UA688>,<UA689>);/
- (<UA68A>,<UA68B>);(<UA68C>,<UA68D>);(<UA68E>,<UA68F>);(<UA690>,<UA691>);/
- (<UA692>,<UA693>);(<UA694>,<UA695>);(<UA696>,<UA697>);(<UA698>,<UA699>);/
- (<UA69A>,<UA69B>);(<UA722>,<UA723>);(<UA724>,<UA725>);(<UA726>,<UA727>);/
- (<UA728>,<UA729>);(<UA72A>,<UA72B>);(<UA72C>,<UA72D>);(<UA72E>,<UA72F>);/
- (<UA732>,<UA733>);(<UA734>,<UA735>);(<UA736>,<UA737>);(<UA738>,<UA739>);/
- (<UA73A>,<UA73B>);(<UA73C>,<UA73D>);(<UA73E>,<UA73F>);(<UA740>,<UA741>);/
- (<UA742>,<UA743>);(<UA744>,<UA745>);(<UA746>,<UA747>);(<UA748>,<UA749>);/
- (<UA74A>,<UA74B>);(<UA74C>,<UA74D>);(<UA74E>,<UA74F>);(<UA750>,<UA751>);/
- (<UA752>,<UA753>);(<UA754>,<UA755>);(<UA756>,<UA757>);(<UA758>,<UA759>);/
- (<UA75A>,<UA75B>);(<UA75C>,<UA75D>);(<UA75E>,<UA75F>);(<UA760>,<UA761>);/
- (<UA762>,<UA763>);(<UA764>,<UA765>);(<UA766>,<UA767>);(<UA768>,<UA769>);/
- (<UA76A>,<UA76B>);(<UA76C>,<UA76D>);(<UA76E>,<UA76F>);(<UA779>,<UA77A>);/
- (<UA77B>,<UA77C>);(<UA77D>,<U1D79>);(<UA77E>,<UA77F>);(<UA780>,<UA781>);/
- (<UA782>,<UA783>);(<UA784>,<UA785>);(<UA786>,<UA787>);(<UA78B>,<UA78C>);/
- (<UA78D>,<U0265>);(<UA790>,<UA791>);(<UA792>,<UA793>);(<UA796>,<UA797>);/
- (<UA798>,<UA799>);(<UA79A>,<UA79B>);(<UA79C>,<UA79D>);(<UA79E>,<UA79F>);/
- (<UA7A0>,<UA7A1>);(<UA7A2>,<UA7A3>);(<UA7A4>,<UA7A5>);(<UA7A6>,<UA7A7>);/
- (<UA7A8>,<UA7A9>);(<UA7AA>,<U0266>);(<UA7AB>,<U025C>);(<UA7AC>,<U0261>);/
- (<UA7AD>,<U026C>);(<UA7AE>,<U026A>);(<UA7B0>,<U029E>);(<UA7B1>,<U0287>);/
- (<UA7B2>,<U029D>);(<UA7B3>,<UAB53>);(<UA7B4>,<UA7B5>);(<UA7B6>,<UA7B7>);/
- (<UA7B8>,<UA7B9>);(<UA7BA>,<UA7BB>);(<UA7BC>,<UA7BD>);(<UA7BE>,<UA7BF>);/
- (<UA7C0>,<UA7C1>);(<UA7C2>,<UA7C3>);(<UA7C4>,<UA794>);(<UA7C5>,<U0282>);/
- (<UA7C6>,<U1D8E>);(<UA7C7>,<UA7C8>);(<UA7C9>,<UA7CA>);(<UA7D0>,<UA7D1>);/
- (<UA7D6>,<UA7D7>);(<UA7D8>,<UA7D9>);(<UA7F5>,<UA7F6>);(<UFF21>,<UFF41>);/
- (<UFF22>,<UFF42>);(<UFF23>,<UFF43>);(<UFF24>,<UFF44>);(<UFF25>,<UFF45>);/
- (<UFF26>,<UFF46>);(<UFF27>,<UFF47>);(<UFF28>,<UFF48>);(<UFF29>,<UFF49>);/
- (<UFF2A>,<UFF4A>);(<UFF2B>,<UFF4B>);(<UFF2C>,<UFF4C>);(<UFF2D>,<UFF4D>);/
- (<UFF2E>,<UFF4E>);(<UFF2F>,<UFF4F>);(<UFF30>,<UFF50>);(<UFF31>,<UFF51>);/
- (<UFF32>,<UFF52>);(<UFF33>,<UFF53>);(<UFF34>,<UFF54>);(<UFF35>,<UFF55>);/
- (<UFF36>,<UFF56>);(<UFF37>,<UFF57>);(<UFF38>,<UFF58>);(<UFF39>,<UFF59>);/
- (<UFF3A>,<UFF5A>);(<U00010400>,<U00010428>);(<U00010401>,<U00010429>);/
- (<U00010402>,<U0001042A>);(<U00010403>,<U0001042B>);/
- (<U00010404>,<U0001042C>);(<U00010405>,<U0001042D>);/
- (<U00010406>,<U0001042E>);(<U00010407>,<U0001042F>);/
- (<U00010408>,<U00010430>);(<U00010409>,<U00010431>);/
- (<U0001040A>,<U00010432>);(<U0001040B>,<U00010433>);/
- (<U0001040C>,<U00010434>);(<U0001040D>,<U00010435>);/
- (<U0001040E>,<U00010436>);(<U0001040F>,<U00010437>);/
- (<U00010410>,<U00010438>);(<U00010411>,<U00010439>);/
- (<U00010412>,<U0001043A>);(<U00010413>,<U0001043B>);/
- (<U00010414>,<U0001043C>);(<U00010415>,<U0001043D>);/
- (<U00010416>,<U0001043E>);(<U00010417>,<U0001043F>);/
- (<U00010418>,<U00010440>);(<U00010419>,<U00010441>);/
- (<U0001041A>,<U00010442>);(<U0001041B>,<U00010443>);/
- (<U0001041C>,<U00010444>);(<U0001041D>,<U00010445>);/
- (<U0001041E>,<U00010446>);(<U0001041F>,<U00010447>);/
- (<U00010420>,<U00010448>);(<U00010421>,<U00010449>);/
- (<U00010422>,<U0001044A>);(<U00010423>,<U0001044B>);/
- (<U00010424>,<U0001044C>);(<U00010425>,<U0001044D>);/
- (<U00010426>,<U0001044E>);(<U00010427>,<U0001044F>);/
- (<U000104B0>,<U000104D8>);(<U000104B1>,<U000104D9>);/
- (<U000104B2>,<U000104DA>);(<U000104B3>,<U000104DB>);/
- (<U000104B4>,<U000104DC>);(<U000104B5>,<U000104DD>);/
- (<U000104B6>,<U000104DE>);(<U000104B7>,<U000104DF>);/
- (<U000104B8>,<U000104E0>);(<U000104B9>,<U000104E1>);/
- (<U000104BA>,<U000104E2>);(<U000104BB>,<U000104E3>);/
- (<U000104BC>,<U000104E4>);(<U000104BD>,<U000104E5>);/
- (<U000104BE>,<U000104E6>);(<U000104BF>,<U000104E7>);/
- (<U000104C0>,<U000104E8>);(<U000104C1>,<U000104E9>);/
- (<U000104C2>,<U000104EA>);(<U000104C3>,<U000104EB>);/
- (<U000104C4>,<U000104EC>);(<U000104C5>,<U000104ED>);/
- (<U000104C6>,<U000104EE>);(<U000104C7>,<U000104EF>);/
- (<U000104C8>,<U000104F0>);(<U000104C9>,<U000104F1>);/
- (<U000104CA>,<U000104F2>);(<U000104CB>,<U000104F3>);/
- (<U000104CC>,<U000104F4>);(<U000104CD>,<U000104F5>);/
- (<U000104CE>,<U000104F6>);(<U000104CF>,<U000104F7>);/
- (<U000104D0>,<U000104F8>);(<U000104D1>,<U000104F9>);/
- (<U000104D2>,<U000104FA>);(<U000104D3>,<U000104FB>);/
- (<U00010570>,<U00010597>);(<U00010571>,<U00010598>);/
- (<U00010572>,<U00010599>);(<U00010573>,<U0001059A>);/
- (<U00010574>,<U0001059B>);(<U00010575>,<U0001059C>);/
- (<U00010576>,<U0001059D>);(<U00010577>,<U0001059E>);/
- (<U00010578>,<U0001059F>);(<U00010579>,<U000105A0>);/
- (<U0001057A>,<U000105A1>);(<U0001057C>,<U000105A3>);/
- (<U0001057D>,<U000105A4>);(<U0001057E>,<U000105A5>);/
- (<U0001057F>,<U000105A6>);(<U00010580>,<U000105A7>);/
- (<U00010581>,<U000105A8>);(<U00010582>,<U000105A9>);/
- (<U00010583>,<U000105AA>);(<U00010584>,<U000105AB>);/
- (<U00010585>,<U000105AC>);(<U00010586>,<U000105AD>);/
- (<U00010587>,<U000105AE>);(<U00010588>,<U000105AF>);/
- (<U00010589>,<U000105B0>);(<U0001058A>,<U000105B1>);/
- (<U0001058C>,<U000105B3>);(<U0001058D>,<U000105B4>);/
- (<U0001058E>,<U000105B5>);(<U0001058F>,<U000105B6>);/
- (<U00010590>,<U000105B7>);(<U00010591>,<U000105B8>);/
- (<U00010592>,<U000105B9>);(<U00010594>,<U000105BB>);/
- (<U00010595>,<U000105BC>);(<U00010C80>,<U00010CC0>);/
- (<U00010C81>,<U00010CC1>);(<U00010C82>,<U00010CC2>);/
- (<U00010C83>,<U00010CC3>);(<U00010C84>,<U00010CC4>);/
- (<U00010C85>,<U00010CC5>);(<U00010C86>,<U00010CC6>);/
- (<U00010C87>,<U00010CC7>);(<U00010C88>,<U00010CC8>);/
- (<U00010C89>,<U00010CC9>);(<U00010C8A>,<U00010CCA>);/
- (<U00010C8B>,<U00010CCB>);(<U00010C8C>,<U00010CCC>);/
- (<U00010C8D>,<U00010CCD>);(<U00010C8E>,<U00010CCE>);/
- (<U00010C8F>,<U00010CCF>);(<U00010C90>,<U00010CD0>);/
- (<U00010C91>,<U00010CD1>);(<U00010C92>,<U00010CD2>);/
- (<U00010C93>,<U00010CD3>);(<U00010C94>,<U00010CD4>);/
- (<U00010C95>,<U00010CD5>);(<U00010C96>,<U00010CD6>);/
- (<U00010C97>,<U00010CD7>);(<U00010C98>,<U00010CD8>);/
- (<U00010C99>,<U00010CD9>);(<U00010C9A>,<U00010CDA>);/
- (<U00010C9B>,<U00010CDB>);(<U00010C9C>,<U00010CDC>);/
- (<U00010C9D>,<U00010CDD>);(<U00010C9E>,<U00010CDE>);/
- (<U00010C9F>,<U00010CDF>);(<U00010CA0>,<U00010CE0>);/
- (<U00010CA1>,<U00010CE1>);(<U00010CA2>,<U00010CE2>);/
- (<U00010CA3>,<U00010CE3>);(<U00010CA4>,<U00010CE4>);/
- (<U00010CA5>,<U00010CE5>);(<U00010CA6>,<U00010CE6>);/
- (<U00010CA7>,<U00010CE7>);(<U00010CA8>,<U00010CE8>);/
- (<U00010CA9>,<U00010CE9>);(<U00010CAA>,<U00010CEA>);/
- (<U00010CAB>,<U00010CEB>);(<U00010CAC>,<U00010CEC>);/
- (<U00010CAD>,<U00010CED>);(<U00010CAE>,<U00010CEE>);/
- (<U00010CAF>,<U00010CEF>);(<U00010CB0>,<U00010CF0>);/
- (<U00010CB1>,<U00010CF1>);(<U00010CB2>,<U00010CF2>);/
- (<U000118A0>,<U000118C0>);(<U000118A1>,<U000118C1>);/
- (<U000118A2>,<U000118C2>);(<U000118A3>,<U000118C3>);/
- (<U000118A4>,<U000118C4>);(<U000118A5>,<U000118C5>);/
- (<U000118A6>,<U000118C6>);(<U000118A7>,<U000118C7>);/
- (<U000118A8>,<U000118C8>);(<U000118A9>,<U000118C9>);/
- (<U000118AA>,<U000118CA>);(<U000118AB>,<U000118CB>);/
- (<U000118AC>,<U000118CC>);(<U000118AD>,<U000118CD>);/
- (<U000118AE>,<U000118CE>);(<U000118AF>,<U000118CF>);/
- (<U000118B0>,<U000118D0>);(<U000118B1>,<U000118D1>);/
- (<U000118B2>,<U000118D2>);(<U000118B3>,<U000118D3>);/
- (<U000118B4>,<U000118D4>);(<U000118B5>,<U000118D5>);/
- (<U000118B6>,<U000118D6>);(<U000118B7>,<U000118D7>);/
- (<U000118B8>,<U000118D8>);(<U000118B9>,<U000118D9>);/
- (<U000118BA>,<U000118DA>);(<U000118BB>,<U000118DB>);/
- (<U000118BC>,<U000118DC>);(<U000118BD>,<U000118DD>);/
- (<U000118BE>,<U000118DE>);(<U000118BF>,<U000118DF>);/
- (<U00016E40>,<U00016E60>);(<U00016E41>,<U00016E61>);/
- (<U00016E42>,<U00016E62>);(<U00016E43>,<U00016E63>);/
- (<U00016E44>,<U00016E64>);(<U00016E45>,<U00016E65>);/
- (<U00016E46>,<U00016E66>);(<U00016E47>,<U00016E67>);/
- (<U00016E48>,<U00016E68>);(<U00016E49>,<U00016E69>);/
- (<U00016E4A>,<U00016E6A>);(<U00016E4B>,<U00016E6B>);/
- (<U00016E4C>,<U00016E6C>);(<U00016E4D>,<U00016E6D>);/
- (<U00016E4E>,<U00016E6E>);(<U00016E4F>,<U00016E6F>);/
- (<U00016E50>,<U00016E70>);(<U00016E51>,<U00016E71>);/
- (<U00016E52>,<U00016E72>);(<U00016E53>,<U00016E73>);/
- (<U00016E54>,<U00016E74>);(<U00016E55>,<U00016E75>);/
- (<U00016E56>,<U00016E76>);(<U00016E57>,<U00016E77>);/
- (<U00016E58>,<U00016E78>);(<U00016E59>,<U00016E79>);/
- (<U00016E5A>,<U00016E7A>);(<U00016E5B>,<U00016E7B>);/
- (<U00016E5C>,<U00016E7C>);(<U00016E5D>,<U00016E7D>);/
- (<U00016E5E>,<U00016E7E>);(<U00016E5F>,<U00016E7F>);/
- (<U0001E900>,<U0001E922>);(<U0001E901>,<U0001E923>);/
- (<U0001E902>,<U0001E924>);(<U0001E903>,<U0001E925>);/
- (<U0001E904>,<U0001E926>);(<U0001E905>,<U0001E927>);/
- (<U0001E906>,<U0001E928>);(<U0001E907>,<U0001E929>);/
- (<U0001E908>,<U0001E92A>);(<U0001E909>,<U0001E92B>);/
- (<U0001E90A>,<U0001E92C>);(<U0001E90B>,<U0001E92D>);/
- (<U0001E90C>,<U0001E92E>);(<U0001E90D>,<U0001E92F>);/
- (<U0001E90E>,<U0001E930>);(<U0001E90F>,<U0001E931>);/
- (<U0001E910>,<U0001E932>);(<U0001E911>,<U0001E933>);/
- (<U0001E912>,<U0001E934>);(<U0001E913>,<U0001E935>);/
- (<U0001E914>,<U0001E936>);(<U0001E915>,<U0001E937>);/
- (<U0001E916>,<U0001E938>);(<U0001E917>,<U0001E939>);/
- (<U0001E918>,<U0001E93A>);(<U0001E919>,<U0001E93B>);/
- (<U0001E91A>,<U0001E93C>);(<U0001E91B>,<U0001E93D>);/
- (<U0001E91C>,<U0001E93E>);(<U0001E91D>,<U0001E93F>);/
- (<U0001E91E>,<U0001E940>);(<U0001E91F>,<U0001E941>);/
- (<U0001E920>,<U0001E942>);(<U0001E921>,<U0001E943>)
+ (<U13F3>,<U13FB>);(<U13F4>,<U13FC>);(<U13F5>,<U13FD>);(<U1C89>,<U1C8A>);/
+ (<U1C90>,<U10D0>);(<U1C91>,<U10D1>);(<U1C92>,<U10D2>);(<U1C93>,<U10D3>);/
+ (<U1C94>,<U10D4>);(<U1C95>,<U10D5>);(<U1C96>,<U10D6>);(<U1C97>,<U10D7>);/
+ (<U1C98>,<U10D8>);(<U1C99>,<U10D9>);(<U1C9A>,<U10DA>);(<U1C9B>,<U10DB>);/
+ (<U1C9C>,<U10DC>);(<U1C9D>,<U10DD>);(<U1C9E>,<U10DE>);(<U1C9F>,<U10DF>);/
+ (<U1CA0>,<U10E0>);(<U1CA1>,<U10E1>);(<U1CA2>,<U10E2>);(<U1CA3>,<U10E3>);/
+ (<U1CA4>,<U10E4>);(<U1CA5>,<U10E5>);(<U1CA6>,<U10E6>);(<U1CA7>,<U10E7>);/
+ (<U1CA8>,<U10E8>);(<U1CA9>,<U10E9>);(<U1CAA>,<U10EA>);(<U1CAB>,<U10EB>);/
+ (<U1CAC>,<U10EC>);(<U1CAD>,<U10ED>);(<U1CAE>,<U10EE>);(<U1CAF>,<U10EF>);/
+ (<U1CB0>,<U10F0>);(<U1CB1>,<U10F1>);(<U1CB2>,<U10F2>);(<U1CB3>,<U10F3>);/
+ (<U1CB4>,<U10F4>);(<U1CB5>,<U10F5>);(<U1CB6>,<U10F6>);(<U1CB7>,<U10F7>);/
+ (<U1CB8>,<U10F8>);(<U1CB9>,<U10F9>);(<U1CBA>,<U10FA>);(<U1CBD>,<U10FD>);/
+ (<U1CBE>,<U10FE>);(<U1CBF>,<U10FF>);(<U1E00>,<U1E01>);(<U1E02>,<U1E03>);/
+ (<U1E04>,<U1E05>);(<U1E06>,<U1E07>);(<U1E08>,<U1E09>);(<U1E0A>,<U1E0B>);/
+ (<U1E0C>,<U1E0D>);(<U1E0E>,<U1E0F>);(<U1E10>,<U1E11>);(<U1E12>,<U1E13>);/
+ (<U1E14>,<U1E15>);(<U1E16>,<U1E17>);(<U1E18>,<U1E19>);(<U1E1A>,<U1E1B>);/
+ (<U1E1C>,<U1E1D>);(<U1E1E>,<U1E1F>);(<U1E20>,<U1E21>);(<U1E22>,<U1E23>);/
+ (<U1E24>,<U1E25>);(<U1E26>,<U1E27>);(<U1E28>,<U1E29>);(<U1E2A>,<U1E2B>);/
+ (<U1E2C>,<U1E2D>);(<U1E2E>,<U1E2F>);(<U1E30>,<U1E31>);(<U1E32>,<U1E33>);/
+ (<U1E34>,<U1E35>);(<U1E36>,<U1E37>);(<U1E38>,<U1E39>);(<U1E3A>,<U1E3B>);/
+ (<U1E3C>,<U1E3D>);(<U1E3E>,<U1E3F>);(<U1E40>,<U1E41>);(<U1E42>,<U1E43>);/
+ (<U1E44>,<U1E45>);(<U1E46>,<U1E47>);(<U1E48>,<U1E49>);(<U1E4A>,<U1E4B>);/
+ (<U1E4C>,<U1E4D>);(<U1E4E>,<U1E4F>);(<U1E50>,<U1E51>);(<U1E52>,<U1E53>);/
+ (<U1E54>,<U1E55>);(<U1E56>,<U1E57>);(<U1E58>,<U1E59>);(<U1E5A>,<U1E5B>);/
+ (<U1E5C>,<U1E5D>);(<U1E5E>,<U1E5F>);(<U1E60>,<U1E61>);(<U1E62>,<U1E63>);/
+ (<U1E64>,<U1E65>);(<U1E66>,<U1E67>);(<U1E68>,<U1E69>);(<U1E6A>,<U1E6B>);/
+ (<U1E6C>,<U1E6D>);(<U1E6E>,<U1E6F>);(<U1E70>,<U1E71>);(<U1E72>,<U1E73>);/
+ (<U1E74>,<U1E75>);(<U1E76>,<U1E77>);(<U1E78>,<U1E79>);(<U1E7A>,<U1E7B>);/
+ (<U1E7C>,<U1E7D>);(<U1E7E>,<U1E7F>);(<U1E80>,<U1E81>);(<U1E82>,<U1E83>);/
+ (<U1E84>,<U1E85>);(<U1E86>,<U1E87>);(<U1E88>,<U1E89>);(<U1E8A>,<U1E8B>);/
+ (<U1E8C>,<U1E8D>);(<U1E8E>,<U1E8F>);(<U1E90>,<U1E91>);(<U1E92>,<U1E93>);/
+ (<U1E94>,<U1E95>);(<U1E9E>,<U00DF>);(<U1EA0>,<U1EA1>);(<U1EA2>,<U1EA3>);/
+ (<U1EA4>,<U1EA5>);(<U1EA6>,<U1EA7>);(<U1EA8>,<U1EA9>);(<U1EAA>,<U1EAB>);/
+ (<U1EAC>,<U1EAD>);(<U1EAE>,<U1EAF>);(<U1EB0>,<U1EB1>);(<U1EB2>,<U1EB3>);/
+ (<U1EB4>,<U1EB5>);(<U1EB6>,<U1EB7>);(<U1EB8>,<U1EB9>);(<U1EBA>,<U1EBB>);/
+ (<U1EBC>,<U1EBD>);(<U1EBE>,<U1EBF>);(<U1EC0>,<U1EC1>);(<U1EC2>,<U1EC3>);/
+ (<U1EC4>,<U1EC5>);(<U1EC6>,<U1EC7>);(<U1EC8>,<U1EC9>);(<U1ECA>,<U1ECB>);/
+ (<U1ECC>,<U1ECD>);(<U1ECE>,<U1ECF>);(<U1ED0>,<U1ED1>);(<U1ED2>,<U1ED3>);/
+ (<U1ED4>,<U1ED5>);(<U1ED6>,<U1ED7>);(<U1ED8>,<U1ED9>);(<U1EDA>,<U1EDB>);/
+ (<U1EDC>,<U1EDD>);(<U1EDE>,<U1EDF>);(<U1EE0>,<U1EE1>);(<U1EE2>,<U1EE3>);/
+ (<U1EE4>,<U1EE5>);(<U1EE6>,<U1EE7>);(<U1EE8>,<U1EE9>);(<U1EEA>,<U1EEB>);/
+ (<U1EEC>,<U1EED>);(<U1EEE>,<U1EEF>);(<U1EF0>,<U1EF1>);(<U1EF2>,<U1EF3>);/
+ (<U1EF4>,<U1EF5>);(<U1EF6>,<U1EF7>);(<U1EF8>,<U1EF9>);(<U1EFA>,<U1EFB>);/
+ (<U1EFC>,<U1EFD>);(<U1EFE>,<U1EFF>);(<U1F08>,<U1F00>);(<U1F09>,<U1F01>);/
+ (<U1F0A>,<U1F02>);(<U1F0B>,<U1F03>);(<U1F0C>,<U1F04>);(<U1F0D>,<U1F05>);/
+ (<U1F0E>,<U1F06>);(<U1F0F>,<U1F07>);(<U1F18>,<U1F10>);(<U1F19>,<U1F11>);/
+ (<U1F1A>,<U1F12>);(<U1F1B>,<U1F13>);(<U1F1C>,<U1F14>);(<U1F1D>,<U1F15>);/
+ (<U1F28>,<U1F20>);(<U1F29>,<U1F21>);(<U1F2A>,<U1F22>);(<U1F2B>,<U1F23>);/
+ (<U1F2C>,<U1F24>);(<U1F2D>,<U1F25>);(<U1F2E>,<U1F26>);(<U1F2F>,<U1F27>);/
+ (<U1F38>,<U1F30>);(<U1F39>,<U1F31>);(<U1F3A>,<U1F32>);(<U1F3B>,<U1F33>);/
+ (<U1F3C>,<U1F34>);(<U1F3D>,<U1F35>);(<U1F3E>,<U1F36>);(<U1F3F>,<U1F37>);/
+ (<U1F48>,<U1F40>);(<U1F49>,<U1F41>);(<U1F4A>,<U1F42>);(<U1F4B>,<U1F43>);/
+ (<U1F4C>,<U1F44>);(<U1F4D>,<U1F45>);(<U1F59>,<U1F51>);(<U1F5B>,<U1F53>);/
+ (<U1F5D>,<U1F55>);(<U1F5F>,<U1F57>);(<U1F68>,<U1F60>);(<U1F69>,<U1F61>);/
+ (<U1F6A>,<U1F62>);(<U1F6B>,<U1F63>);(<U1F6C>,<U1F64>);(<U1F6D>,<U1F65>);/
+ (<U1F6E>,<U1F66>);(<U1F6F>,<U1F67>);(<U1F88>,<U1F80>);(<U1F89>,<U1F81>);/
+ (<U1F8A>,<U1F82>);(<U1F8B>,<U1F83>);(<U1F8C>,<U1F84>);(<U1F8D>,<U1F85>);/
+ (<U1F8E>,<U1F86>);(<U1F8F>,<U1F87>);(<U1F98>,<U1F90>);(<U1F99>,<U1F91>);/
+ (<U1F9A>,<U1F92>);(<U1F9B>,<U1F93>);(<U1F9C>,<U1F94>);(<U1F9D>,<U1F95>);/
+ (<U1F9E>,<U1F96>);(<U1F9F>,<U1F97>);(<U1FA8>,<U1FA0>);(<U1FA9>,<U1FA1>);/
+ (<U1FAA>,<U1FA2>);(<U1FAB>,<U1FA3>);(<U1FAC>,<U1FA4>);(<U1FAD>,<U1FA5>);/
+ (<U1FAE>,<U1FA6>);(<U1FAF>,<U1FA7>);(<U1FB8>,<U1FB0>);(<U1FB9>,<U1FB1>);/
+ (<U1FBA>,<U1F70>);(<U1FBB>,<U1F71>);(<U1FBC>,<U1FB3>);(<U1FC8>,<U1F72>);/
+ (<U1FC9>,<U1F73>);(<U1FCA>,<U1F74>);(<U1FCB>,<U1F75>);(<U1FCC>,<U1FC3>);/
+ (<U1FD8>,<U1FD0>);(<U1FD9>,<U1FD1>);(<U1FDA>,<U1F76>);(<U1FDB>,<U1F77>);/
+ (<U1FE8>,<U1FE0>);(<U1FE9>,<U1FE1>);(<U1FEA>,<U1F7A>);(<U1FEB>,<U1F7B>);/
+ (<U1FEC>,<U1FE5>);(<U1FF8>,<U1F78>);(<U1FF9>,<U1F79>);(<U1FFA>,<U1F7C>);/
+ (<U1FFB>,<U1F7D>);(<U1FFC>,<U1FF3>);(<U2126>,<U03C9>);(<U212A>,<U006B>);/
+ (<U212B>,<U00E5>);(<U2132>,<U214E>);(<U2160>,<U2170>);(<U2161>,<U2171>);/
+ (<U2162>,<U2172>);(<U2163>,<U2173>);(<U2164>,<U2174>);(<U2165>,<U2175>);/
+ (<U2166>,<U2176>);(<U2167>,<U2177>);(<U2168>,<U2178>);(<U2169>,<U2179>);/
+ (<U216A>,<U217A>);(<U216B>,<U217B>);(<U216C>,<U217C>);(<U216D>,<U217D>);/
+ (<U216E>,<U217E>);(<U216F>,<U217F>);(<U2183>,<U2184>);(<U24B6>,<U24D0>);/
+ (<U24B7>,<U24D1>);(<U24B8>,<U24D2>);(<U24B9>,<U24D3>);(<U24BA>,<U24D4>);/
+ (<U24BB>,<U24D5>);(<U24BC>,<U24D6>);(<U24BD>,<U24D7>);(<U24BE>,<U24D8>);/
+ (<U24BF>,<U24D9>);(<U24C0>,<U24DA>);(<U24C1>,<U24DB>);(<U24C2>,<U24DC>);/
+ (<U24C3>,<U24DD>);(<U24C4>,<U24DE>);(<U24C5>,<U24DF>);(<U24C6>,<U24E0>);/
+ (<U24C7>,<U24E1>);(<U24C8>,<U24E2>);(<U24C9>,<U24E3>);(<U24CA>,<U24E4>);/
+ (<U24CB>,<U24E5>);(<U24CC>,<U24E6>);(<U24CD>,<U24E7>);(<U24CE>,<U24E8>);/
+ (<U24CF>,<U24E9>);(<U2C00>,<U2C30>);(<U2C01>,<U2C31>);(<U2C02>,<U2C32>);/
+ (<U2C03>,<U2C33>);(<U2C04>,<U2C34>);(<U2C05>,<U2C35>);(<U2C06>,<U2C36>);/
+ (<U2C07>,<U2C37>);(<U2C08>,<U2C38>);(<U2C09>,<U2C39>);(<U2C0A>,<U2C3A>);/
+ (<U2C0B>,<U2C3B>);(<U2C0C>,<U2C3C>);(<U2C0D>,<U2C3D>);(<U2C0E>,<U2C3E>);/
+ (<U2C0F>,<U2C3F>);(<U2C10>,<U2C40>);(<U2C11>,<U2C41>);(<U2C12>,<U2C42>);/
+ (<U2C13>,<U2C43>);(<U2C14>,<U2C44>);(<U2C15>,<U2C45>);(<U2C16>,<U2C46>);/
+ (<U2C17>,<U2C47>);(<U2C18>,<U2C48>);(<U2C19>,<U2C49>);(<U2C1A>,<U2C4A>);/
+ (<U2C1B>,<U2C4B>);(<U2C1C>,<U2C4C>);(<U2C1D>,<U2C4D>);(<U2C1E>,<U2C4E>);/
+ (<U2C1F>,<U2C4F>);(<U2C20>,<U2C50>);(<U2C21>,<U2C51>);(<U2C22>,<U2C52>);/
+ (<U2C23>,<U2C53>);(<U2C24>,<U2C54>);(<U2C25>,<U2C55>);(<U2C26>,<U2C56>);/
+ (<U2C27>,<U2C57>);(<U2C28>,<U2C58>);(<U2C29>,<U2C59>);(<U2C2A>,<U2C5A>);/
+ (<U2C2B>,<U2C5B>);(<U2C2C>,<U2C5C>);(<U2C2D>,<U2C5D>);(<U2C2E>,<U2C5E>);/
+ (<U2C2F>,<U2C5F>);(<U2C60>,<U2C61>);(<U2C62>,<U026B>);(<U2C63>,<U1D7D>);/
+ (<U2C64>,<U027D>);(<U2C67>,<U2C68>);(<U2C69>,<U2C6A>);(<U2C6B>,<U2C6C>);/
+ (<U2C6D>,<U0251>);(<U2C6E>,<U0271>);(<U2C6F>,<U0250>);(<U2C70>,<U0252>);/
+ (<U2C72>,<U2C73>);(<U2C75>,<U2C76>);(<U2C7E>,<U023F>);(<U2C7F>,<U0240>);/
+ (<U2C80>,<U2C81>);(<U2C82>,<U2C83>);(<U2C84>,<U2C85>);(<U2C86>,<U2C87>);/
+ (<U2C88>,<U2C89>);(<U2C8A>,<U2C8B>);(<U2C8C>,<U2C8D>);(<U2C8E>,<U2C8F>);/
+ (<U2C90>,<U2C91>);(<U2C92>,<U2C93>);(<U2C94>,<U2C95>);(<U2C96>,<U2C97>);/
+ (<U2C98>,<U2C99>);(<U2C9A>,<U2C9B>);(<U2C9C>,<U2C9D>);(<U2C9E>,<U2C9F>);/
+ (<U2CA0>,<U2CA1>);(<U2CA2>,<U2CA3>);(<U2CA4>,<U2CA5>);(<U2CA6>,<U2CA7>);/
+ (<U2CA8>,<U2CA9>);(<U2CAA>,<U2CAB>);(<U2CAC>,<U2CAD>);(<U2CAE>,<U2CAF>);/
+ (<U2CB0>,<U2CB1>);(<U2CB2>,<U2CB3>);(<U2CB4>,<U2CB5>);(<U2CB6>,<U2CB7>);/
+ (<U2CB8>,<U2CB9>);(<U2CBA>,<U2CBB>);(<U2CBC>,<U2CBD>);(<U2CBE>,<U2CBF>);/
+ (<U2CC0>,<U2CC1>);(<U2CC2>,<U2CC3>);(<U2CC4>,<U2CC5>);(<U2CC6>,<U2CC7>);/
+ (<U2CC8>,<U2CC9>);(<U2CCA>,<U2CCB>);(<U2CCC>,<U2CCD>);(<U2CCE>,<U2CCF>);/
+ (<U2CD0>,<U2CD1>);(<U2CD2>,<U2CD3>);(<U2CD4>,<U2CD5>);(<U2CD6>,<U2CD7>);/
+ (<U2CD8>,<U2CD9>);(<U2CDA>,<U2CDB>);(<U2CDC>,<U2CDD>);(<U2CDE>,<U2CDF>);/
+ (<U2CE0>,<U2CE1>);(<U2CE2>,<U2CE3>);(<U2CEB>,<U2CEC>);(<U2CED>,<U2CEE>);/
+ (<U2CF2>,<U2CF3>);(<UA640>,<UA641>);(<UA642>,<UA643>);(<UA644>,<UA645>);/
+ (<UA646>,<UA647>);(<UA648>,<UA649>);(<UA64A>,<UA64B>);(<UA64C>,<UA64D>);/
+ (<UA64E>,<UA64F>);(<UA650>,<UA651>);(<UA652>,<UA653>);(<UA654>,<UA655>);/
+ (<UA656>,<UA657>);(<UA658>,<UA659>);(<UA65A>,<UA65B>);(<UA65C>,<UA65D>);/
+ (<UA65E>,<UA65F>);(<UA660>,<UA661>);(<UA662>,<UA663>);(<UA664>,<UA665>);/
+ (<UA666>,<UA667>);(<UA668>,<UA669>);(<UA66A>,<UA66B>);(<UA66C>,<UA66D>);/
+ (<UA680>,<UA681>);(<UA682>,<UA683>);(<UA684>,<UA685>);(<UA686>,<UA687>);/
+ (<UA688>,<UA689>);(<UA68A>,<UA68B>);(<UA68C>,<UA68D>);(<UA68E>,<UA68F>);/
+ (<UA690>,<UA691>);(<UA692>,<UA693>);(<UA694>,<UA695>);(<UA696>,<UA697>);/
+ (<UA698>,<UA699>);(<UA69A>,<UA69B>);(<UA722>,<UA723>);(<UA724>,<UA725>);/
+ (<UA726>,<UA727>);(<UA728>,<UA729>);(<UA72A>,<UA72B>);(<UA72C>,<UA72D>);/
+ (<UA72E>,<UA72F>);(<UA732>,<UA733>);(<UA734>,<UA735>);(<UA736>,<UA737>);/
+ (<UA738>,<UA739>);(<UA73A>,<UA73B>);(<UA73C>,<UA73D>);(<UA73E>,<UA73F>);/
+ (<UA740>,<UA741>);(<UA742>,<UA743>);(<UA744>,<UA745>);(<UA746>,<UA747>);/
+ (<UA748>,<UA749>);(<UA74A>,<UA74B>);(<UA74C>,<UA74D>);(<UA74E>,<UA74F>);/
+ (<UA750>,<UA751>);(<UA752>,<UA753>);(<UA754>,<UA755>);(<UA756>,<UA757>);/
+ (<UA758>,<UA759>);(<UA75A>,<UA75B>);(<UA75C>,<UA75D>);(<UA75E>,<UA75F>);/
+ (<UA760>,<UA761>);(<UA762>,<UA763>);(<UA764>,<UA765>);(<UA766>,<UA767>);/
+ (<UA768>,<UA769>);(<UA76A>,<UA76B>);(<UA76C>,<UA76D>);(<UA76E>,<UA76F>);/
+ (<UA779>,<UA77A>);(<UA77B>,<UA77C>);(<UA77D>,<U1D79>);(<UA77E>,<UA77F>);/
+ (<UA780>,<UA781>);(<UA782>,<UA783>);(<UA784>,<UA785>);(<UA786>,<UA787>);/
+ (<UA78B>,<UA78C>);(<UA78D>,<U0265>);(<UA790>,<UA791>);(<UA792>,<UA793>);/
+ (<UA796>,<UA797>);(<UA798>,<UA799>);(<UA79A>,<UA79B>);(<UA79C>,<UA79D>);/
+ (<UA79E>,<UA79F>);(<UA7A0>,<UA7A1>);(<UA7A2>,<UA7A3>);(<UA7A4>,<UA7A5>);/
+ (<UA7A6>,<UA7A7>);(<UA7A8>,<UA7A9>);(<UA7AA>,<U0266>);(<UA7AB>,<U025C>);/
+ (<UA7AC>,<U0261>);(<UA7AD>,<U026C>);(<UA7AE>,<U026A>);(<UA7B0>,<U029E>);/
+ (<UA7B1>,<U0287>);(<UA7B2>,<U029D>);(<UA7B3>,<UAB53>);(<UA7B4>,<UA7B5>);/
+ (<UA7B6>,<UA7B7>);(<UA7B8>,<UA7B9>);(<UA7BA>,<UA7BB>);(<UA7BC>,<UA7BD>);/
+ (<UA7BE>,<UA7BF>);(<UA7C0>,<UA7C1>);(<UA7C2>,<UA7C3>);(<UA7C4>,<UA794>);/
+ (<UA7C5>,<U0282>);(<UA7C6>,<U1D8E>);(<UA7C7>,<UA7C8>);(<UA7C9>,<UA7CA>);/
+ (<UA7CB>,<U0264>);(<UA7CC>,<UA7CD>);(<UA7D0>,<UA7D1>);(<UA7D6>,<UA7D7>);/
+ (<UA7D8>,<UA7D9>);(<UA7DA>,<UA7DB>);(<UA7DC>,<U019B>);(<UA7F5>,<UA7F6>);/
+ (<UFF21>,<UFF41>);(<UFF22>,<UFF42>);(<UFF23>,<UFF43>);(<UFF24>,<UFF44>);/
+ (<UFF25>,<UFF45>);(<UFF26>,<UFF46>);(<UFF27>,<UFF47>);(<UFF28>,<UFF48>);/
+ (<UFF29>,<UFF49>);(<UFF2A>,<UFF4A>);(<UFF2B>,<UFF4B>);(<UFF2C>,<UFF4C>);/
+ (<UFF2D>,<UFF4D>);(<UFF2E>,<UFF4E>);(<UFF2F>,<UFF4F>);(<UFF30>,<UFF50>);/
+ (<UFF31>,<UFF51>);(<UFF32>,<UFF52>);(<UFF33>,<UFF53>);(<UFF34>,<UFF54>);/
+ (<UFF35>,<UFF55>);(<UFF36>,<UFF56>);(<UFF37>,<UFF57>);(<UFF38>,<UFF58>);/
+ (<UFF39>,<UFF59>);(<UFF3A>,<UFF5A>);(<U00010400>,<U00010428>);/
+ (<U00010401>,<U00010429>);(<U00010402>,<U0001042A>);/
+ (<U00010403>,<U0001042B>);(<U00010404>,<U0001042C>);/
+ (<U00010405>,<U0001042D>);(<U00010406>,<U0001042E>);/
+ (<U00010407>,<U0001042F>);(<U00010408>,<U00010430>);/
+ (<U00010409>,<U00010431>);(<U0001040A>,<U00010432>);/
+ (<U0001040B>,<U00010433>);(<U0001040C>,<U00010434>);/
+ (<U0001040D>,<U00010435>);(<U0001040E>,<U00010436>);/
+ (<U0001040F>,<U00010437>);(<U00010410>,<U00010438>);/
+ (<U00010411>,<U00010439>);(<U00010412>,<U0001043A>);/
+ (<U00010413>,<U0001043B>);(<U00010414>,<U0001043C>);/
+ (<U00010415>,<U0001043D>);(<U00010416>,<U0001043E>);/
+ (<U00010417>,<U0001043F>);(<U00010418>,<U00010440>);/
+ (<U00010419>,<U00010441>);(<U0001041A>,<U00010442>);/
+ (<U0001041B>,<U00010443>);(<U0001041C>,<U00010444>);/
+ (<U0001041D>,<U00010445>);(<U0001041E>,<U00010446>);/
+ (<U0001041F>,<U00010447>);(<U00010420>,<U00010448>);/
+ (<U00010421>,<U00010449>);(<U00010422>,<U0001044A>);/
+ (<U00010423>,<U0001044B>);(<U00010424>,<U0001044C>);/
+ (<U00010425>,<U0001044D>);(<U00010426>,<U0001044E>);/
+ (<U00010427>,<U0001044F>);(<U000104B0>,<U000104D8>);/
+ (<U000104B1>,<U000104D9>);(<U000104B2>,<U000104DA>);/
+ (<U000104B3>,<U000104DB>);(<U000104B4>,<U000104DC>);/
+ (<U000104B5>,<U000104DD>);(<U000104B6>,<U000104DE>);/
+ (<U000104B7>,<U000104DF>);(<U000104B8>,<U000104E0>);/
+ (<U000104B9>,<U000104E1>);(<U000104BA>,<U000104E2>);/
+ (<U000104BB>,<U000104E3>);(<U000104BC>,<U000104E4>);/
+ (<U000104BD>,<U000104E5>);(<U000104BE>,<U000104E6>);/
+ (<U000104BF>,<U000104E7>);(<U000104C0>,<U000104E8>);/
+ (<U000104C1>,<U000104E9>);(<U000104C2>,<U000104EA>);/
+ (<U000104C3>,<U000104EB>);(<U000104C4>,<U000104EC>);/
+ (<U000104C5>,<U000104ED>);(<U000104C6>,<U000104EE>);/
+ (<U000104C7>,<U000104EF>);(<U000104C8>,<U000104F0>);/
+ (<U000104C9>,<U000104F1>);(<U000104CA>,<U000104F2>);/
+ (<U000104CB>,<U000104F3>);(<U000104CC>,<U000104F4>);/
+ (<U000104CD>,<U000104F5>);(<U000104CE>,<U000104F6>);/
+ (<U000104CF>,<U000104F7>);(<U000104D0>,<U000104F8>);/
+ (<U000104D1>,<U000104F9>);(<U000104D2>,<U000104FA>);/
+ (<U000104D3>,<U000104FB>);(<U00010570>,<U00010597>);/
+ (<U00010571>,<U00010598>);(<U00010572>,<U00010599>);/
+ (<U00010573>,<U0001059A>);(<U00010574>,<U0001059B>);/
+ (<U00010575>,<U0001059C>);(<U00010576>,<U0001059D>);/
+ (<U00010577>,<U0001059E>);(<U00010578>,<U0001059F>);/
+ (<U00010579>,<U000105A0>);(<U0001057A>,<U000105A1>);/
+ (<U0001057C>,<U000105A3>);(<U0001057D>,<U000105A4>);/
+ (<U0001057E>,<U000105A5>);(<U0001057F>,<U000105A6>);/
+ (<U00010580>,<U000105A7>);(<U00010581>,<U000105A8>);/
+ (<U00010582>,<U000105A9>);(<U00010583>,<U000105AA>);/
+ (<U00010584>,<U000105AB>);(<U00010585>,<U000105AC>);/
+ (<U00010586>,<U000105AD>);(<U00010587>,<U000105AE>);/
+ (<U00010588>,<U000105AF>);(<U00010589>,<U000105B0>);/
+ (<U0001058A>,<U000105B1>);(<U0001058C>,<U000105B3>);/
+ (<U0001058D>,<U000105B4>);(<U0001058E>,<U000105B5>);/
+ (<U0001058F>,<U000105B6>);(<U00010590>,<U000105B7>);/
+ (<U00010591>,<U000105B8>);(<U00010592>,<U000105B9>);/
+ (<U00010594>,<U000105BB>);(<U00010595>,<U000105BC>);/
+ (<U00010C80>,<U00010CC0>);(<U00010C81>,<U00010CC1>);/
+ (<U00010C82>,<U00010CC2>);(<U00010C83>,<U00010CC3>);/
+ (<U00010C84>,<U00010CC4>);(<U00010C85>,<U00010CC5>);/
+ (<U00010C86>,<U00010CC6>);(<U00010C87>,<U00010CC7>);/
+ (<U00010C88>,<U00010CC8>);(<U00010C89>,<U00010CC9>);/
+ (<U00010C8A>,<U00010CCA>);(<U00010C8B>,<U00010CCB>);/
+ (<U00010C8C>,<U00010CCC>);(<U00010C8D>,<U00010CCD>);/
+ (<U00010C8E>,<U00010CCE>);(<U00010C8F>,<U00010CCF>);/
+ (<U00010C90>,<U00010CD0>);(<U00010C91>,<U00010CD1>);/
+ (<U00010C92>,<U00010CD2>);(<U00010C93>,<U00010CD3>);/
+ (<U00010C94>,<U00010CD4>);(<U00010C95>,<U00010CD5>);/
+ (<U00010C96>,<U00010CD6>);(<U00010C97>,<U00010CD7>);/
+ (<U00010C98>,<U00010CD8>);(<U00010C99>,<U00010CD9>);/
+ (<U00010C9A>,<U00010CDA>);(<U00010C9B>,<U00010CDB>);/
+ (<U00010C9C>,<U00010CDC>);(<U00010C9D>,<U00010CDD>);/
+ (<U00010C9E>,<U00010CDE>);(<U00010C9F>,<U00010CDF>);/
+ (<U00010CA0>,<U00010CE0>);(<U00010CA1>,<U00010CE1>);/
+ (<U00010CA2>,<U00010CE2>);(<U00010CA3>,<U00010CE3>);/
+ (<U00010CA4>,<U00010CE4>);(<U00010CA5>,<U00010CE5>);/
+ (<U00010CA6>,<U00010CE6>);(<U00010CA7>,<U00010CE7>);/
+ (<U00010CA8>,<U00010CE8>);(<U00010CA9>,<U00010CE9>);/
+ (<U00010CAA>,<U00010CEA>);(<U00010CAB>,<U00010CEB>);/
+ (<U00010CAC>,<U00010CEC>);(<U00010CAD>,<U00010CED>);/
+ (<U00010CAE>,<U00010CEE>);(<U00010CAF>,<U00010CEF>);/
+ (<U00010CB0>,<U00010CF0>);(<U00010CB1>,<U00010CF1>);/
+ (<U00010CB2>,<U00010CF2>);(<U00010D50>,<U00010D70>);/
+ (<U00010D51>,<U00010D71>);(<U00010D52>,<U00010D72>);/
+ (<U00010D53>,<U00010D73>);(<U00010D54>,<U00010D74>);/
+ (<U00010D55>,<U00010D75>);(<U00010D56>,<U00010D76>);/
+ (<U00010D57>,<U00010D77>);(<U00010D58>,<U00010D78>);/
+ (<U00010D59>,<U00010D79>);(<U00010D5A>,<U00010D7A>);/
+ (<U00010D5B>,<U00010D7B>);(<U00010D5C>,<U00010D7C>);/
+ (<U00010D5D>,<U00010D7D>);(<U00010D5E>,<U00010D7E>);/
+ (<U00010D5F>,<U00010D7F>);(<U00010D60>,<U00010D80>);/
+ (<U00010D61>,<U00010D81>);(<U00010D62>,<U00010D82>);/
+ (<U00010D63>,<U00010D83>);(<U00010D64>,<U00010D84>);/
+ (<U00010D65>,<U00010D85>);(<U000118A0>,<U000118C0>);/
+ (<U000118A1>,<U000118C1>);(<U000118A2>,<U000118C2>);/
+ (<U000118A3>,<U000118C3>);(<U000118A4>,<U000118C4>);/
+ (<U000118A5>,<U000118C5>);(<U000118A6>,<U000118C6>);/
+ (<U000118A7>,<U000118C7>);(<U000118A8>,<U000118C8>);/
+ (<U000118A9>,<U000118C9>);(<U000118AA>,<U000118CA>);/
+ (<U000118AB>,<U000118CB>);(<U000118AC>,<U000118CC>);/
+ (<U000118AD>,<U000118CD>);(<U000118AE>,<U000118CE>);/
+ (<U000118AF>,<U000118CF>);(<U000118B0>,<U000118D0>);/
+ (<U000118B1>,<U000118D1>);(<U000118B2>,<U000118D2>);/
+ (<U000118B3>,<U000118D3>);(<U000118B4>,<U000118D4>);/
+ (<U000118B5>,<U000118D5>);(<U000118B6>,<U000118D6>);/
+ (<U000118B7>,<U000118D7>);(<U000118B8>,<U000118D8>);/
+ (<U000118B9>,<U000118D9>);(<U000118BA>,<U000118DA>);/
+ (<U000118BB>,<U000118DB>);(<U000118BC>,<U000118DC>);/
+ (<U000118BD>,<U000118DD>);(<U000118BE>,<U000118DE>);/
+ (<U000118BF>,<U000118DF>);(<U00016E40>,<U00016E60>);/
+ (<U00016E41>,<U00016E61>);(<U00016E42>,<U00016E62>);/
+ (<U00016E43>,<U00016E63>);(<U00016E44>,<U00016E64>);/
+ (<U00016E45>,<U00016E65>);(<U00016E46>,<U00016E66>);/
+ (<U00016E47>,<U00016E67>);(<U00016E48>,<U00016E68>);/
+ (<U00016E49>,<U00016E69>);(<U00016E4A>,<U00016E6A>);/
+ (<U00016E4B>,<U00016E6B>);(<U00016E4C>,<U00016E6C>);/
+ (<U00016E4D>,<U00016E6D>);(<U00016E4E>,<U00016E6E>);/
+ (<U00016E4F>,<U00016E6F>);(<U00016E50>,<U00016E70>);/
+ (<U00016E51>,<U00016E71>);(<U00016E52>,<U00016E72>);/
+ (<U00016E53>,<U00016E73>);(<U00016E54>,<U00016E74>);/
+ (<U00016E55>,<U00016E75>);(<U00016E56>,<U00016E76>);/
+ (<U00016E57>,<U00016E77>);(<U00016E58>,<U00016E78>);/
+ (<U00016E59>,<U00016E79>);(<U00016E5A>,<U00016E7A>);/
+ (<U00016E5B>,<U00016E7B>);(<U00016E5C>,<U00016E7C>);/
+ (<U00016E5D>,<U00016E7D>);(<U00016E5E>,<U00016E7E>);/
+ (<U00016E5F>,<U00016E7F>);(<U0001E900>,<U0001E922>);/
+ (<U0001E901>,<U0001E923>);(<U0001E902>,<U0001E924>);/
+ (<U0001E903>,<U0001E925>);(<U0001E904>,<U0001E926>);/
+ (<U0001E905>,<U0001E927>);(<U0001E906>,<U0001E928>);/
+ (<U0001E907>,<U0001E929>);(<U0001E908>,<U0001E92A>);/
+ (<U0001E909>,<U0001E92B>);(<U0001E90A>,<U0001E92C>);/
+ (<U0001E90B>,<U0001E92D>);(<U0001E90C>,<U0001E92E>);/
+ (<U0001E90D>,<U0001E92F>);(<U0001E90E>,<U0001E930>);/
+ (<U0001E90F>,<U0001E931>);(<U0001E910>,<U0001E932>);/
+ (<U0001E911>,<U0001E933>);(<U0001E912>,<U0001E934>);/
+ (<U0001E913>,<U0001E935>);(<U0001E914>,<U0001E936>);/
+ (<U0001E915>,<U0001E937>);(<U0001E916>,<U0001E938>);/
+ (<U0001E917>,<U0001E939>);(<U0001E918>,<U0001E93A>);/
+ (<U0001E919>,<U0001E93B>);(<U0001E91A>,<U0001E93C>);/
+ (<U0001E91B>,<U0001E93D>);(<U0001E91C>,<U0001E93E>);/
+ (<U0001E91D>,<U0001E93F>);(<U0001E91E>,<U0001E940>);/
+ (<U0001E91F>,<U0001E941>);(<U0001E920>,<U0001E942>);/
+ (<U0001E921>,<U0001E943>)
map "totitle"; /
(<U0061>,<U0041>);(<U0062>,<U0042>);(<U0063>,<U0043>);(<U0064>,<U0044>);/
@@ -2161,261 +2229,262 @@ map "totitle"; /
(<U0177>,<U0176>);(<U017A>,<U0179>);(<U017C>,<U017B>);(<U017E>,<U017D>);/
(<U017F>,<U0053>);(<U0180>,<U0243>);(<U0183>,<U0182>);(<U0185>,<U0184>);/
(<U0188>,<U0187>);(<U018C>,<U018B>);(<U0192>,<U0191>);(<U0195>,<U01F6>);/
- (<U0199>,<U0198>);(<U019A>,<U023D>);(<U019E>,<U0220>);(<U01A1>,<U01A0>);/
- (<U01A3>,<U01A2>);(<U01A5>,<U01A4>);(<U01A8>,<U01A7>);(<U01AD>,<U01AC>);/
- (<U01B0>,<U01AF>);(<U01B4>,<U01B3>);(<U01B6>,<U01B5>);(<U01B9>,<U01B8>);/
- (<U01BD>,<U01BC>);(<U01BF>,<U01F7>);(<U01C4>,<U01C5>);(<U01C6>,<U01C5>);/
- (<U01C7>,<U01C8>);(<U01C9>,<U01C8>);(<U01CA>,<U01CB>);(<U01CC>,<U01CB>);/
- (<U01CE>,<U01CD>);(<U01D0>,<U01CF>);(<U01D2>,<U01D1>);(<U01D4>,<U01D3>);/
- (<U01D6>,<U01D5>);(<U01D8>,<U01D7>);(<U01DA>,<U01D9>);(<U01DC>,<U01DB>);/
- (<U01DD>,<U018E>);(<U01DF>,<U01DE>);(<U01E1>,<U01E0>);(<U01E3>,<U01E2>);/
- (<U01E5>,<U01E4>);(<U01E7>,<U01E6>);(<U01E9>,<U01E8>);(<U01EB>,<U01EA>);/
- (<U01ED>,<U01EC>);(<U01EF>,<U01EE>);(<U01F1>,<U01F2>);(<U01F3>,<U01F2>);/
- (<U01F5>,<U01F4>);(<U01F9>,<U01F8>);(<U01FB>,<U01FA>);(<U01FD>,<U01FC>);/
- (<U01FF>,<U01FE>);(<U0201>,<U0200>);(<U0203>,<U0202>);(<U0205>,<U0204>);/
- (<U0207>,<U0206>);(<U0209>,<U0208>);(<U020B>,<U020A>);(<U020D>,<U020C>);/
- (<U020F>,<U020E>);(<U0211>,<U0210>);(<U0213>,<U0212>);(<U0215>,<U0214>);/
- (<U0217>,<U0216>);(<U0219>,<U0218>);(<U021B>,<U021A>);(<U021D>,<U021C>);/
- (<U021F>,<U021E>);(<U0223>,<U0222>);(<U0225>,<U0224>);(<U0227>,<U0226>);/
- (<U0229>,<U0228>);(<U022B>,<U022A>);(<U022D>,<U022C>);(<U022F>,<U022E>);/
- (<U0231>,<U0230>);(<U0233>,<U0232>);(<U023C>,<U023B>);(<U023F>,<U2C7E>);/
- (<U0240>,<U2C7F>);(<U0242>,<U0241>);(<U0247>,<U0246>);(<U0249>,<U0248>);/
- (<U024B>,<U024A>);(<U024D>,<U024C>);(<U024F>,<U024E>);(<U0250>,<U2C6F>);/
- (<U0251>,<U2C6D>);(<U0252>,<U2C70>);(<U0253>,<U0181>);(<U0254>,<U0186>);/
- (<U0256>,<U0189>);(<U0257>,<U018A>);(<U0259>,<U018F>);(<U025B>,<U0190>);/
- (<U025C>,<UA7AB>);(<U0260>,<U0193>);(<U0261>,<UA7AC>);(<U0263>,<U0194>);/
- (<U0265>,<UA78D>);(<U0266>,<UA7AA>);(<U0268>,<U0197>);(<U0269>,<U0196>);/
- (<U026A>,<UA7AE>);(<U026B>,<U2C62>);(<U026C>,<UA7AD>);(<U026F>,<U019C>);/
- (<U0271>,<U2C6E>);(<U0272>,<U019D>);(<U0275>,<U019F>);(<U027D>,<U2C64>);/
- (<U0280>,<U01A6>);(<U0282>,<UA7C5>);(<U0283>,<U01A9>);(<U0287>,<UA7B1>);/
- (<U0288>,<U01AE>);(<U0289>,<U0244>);(<U028A>,<U01B1>);(<U028B>,<U01B2>);/
- (<U028C>,<U0245>);(<U0292>,<U01B7>);(<U029D>,<UA7B2>);(<U029E>,<UA7B0>);/
- (<U0345>,<U0399>);(<U0371>,<U0370>);(<U0373>,<U0372>);(<U0377>,<U0376>);/
- (<U037B>,<U03FD>);(<U037C>,<U03FE>);(<U037D>,<U03FF>);(<U03AC>,<U0386>);/
- (<U03AD>,<U0388>);(<U03AE>,<U0389>);(<U03AF>,<U038A>);(<U03B1>,<U0391>);/
- (<U03B2>,<U0392>);(<U03B3>,<U0393>);(<U03B4>,<U0394>);(<U03B5>,<U0395>);/
- (<U03B6>,<U0396>);(<U03B7>,<U0397>);(<U03B8>,<U0398>);(<U03B9>,<U0399>);/
- (<U03BA>,<U039A>);(<U03BB>,<U039B>);(<U03BC>,<U039C>);(<U03BD>,<U039D>);/
- (<U03BE>,<U039E>);(<U03BF>,<U039F>);(<U03C0>,<U03A0>);(<U03C1>,<U03A1>);/
- (<U03C2>,<U03A3>);(<U03C3>,<U03A3>);(<U03C4>,<U03A4>);(<U03C5>,<U03A5>);/
- (<U03C6>,<U03A6>);(<U03C7>,<U03A7>);(<U03C8>,<U03A8>);(<U03C9>,<U03A9>);/
- (<U03CA>,<U03AA>);(<U03CB>,<U03AB>);(<U03CC>,<U038C>);(<U03CD>,<U038E>);/
- (<U03CE>,<U038F>);(<U03D0>,<U0392>);(<U03D1>,<U0398>);(<U03D5>,<U03A6>);/
- (<U03D6>,<U03A0>);(<U03D7>,<U03CF>);(<U03D9>,<U03D8>);(<U03DB>,<U03DA>);/
- (<U03DD>,<U03DC>);(<U03DF>,<U03DE>);(<U03E1>,<U03E0>);(<U03E3>,<U03E2>);/
- (<U03E5>,<U03E4>);(<U03E7>,<U03E6>);(<U03E9>,<U03E8>);(<U03EB>,<U03EA>);/
- (<U03ED>,<U03EC>);(<U03EF>,<U03EE>);(<U03F0>,<U039A>);(<U03F1>,<U03A1>);/
- (<U03F2>,<U03F9>);(<U03F3>,<U037F>);(<U03F5>,<U0395>);(<U03F8>,<U03F7>);/
- (<U03FB>,<U03FA>);(<U0430>,<U0410>);(<U0431>,<U0411>);(<U0432>,<U0412>);/
- (<U0433>,<U0413>);(<U0434>,<U0414>);(<U0435>,<U0415>);(<U0436>,<U0416>);/
- (<U0437>,<U0417>);(<U0438>,<U0418>);(<U0439>,<U0419>);(<U043A>,<U041A>);/
- (<U043B>,<U041B>);(<U043C>,<U041C>);(<U043D>,<U041D>);(<U043E>,<U041E>);/
- (<U043F>,<U041F>);(<U0440>,<U0420>);(<U0441>,<U0421>);(<U0442>,<U0422>);/
- (<U0443>,<U0423>);(<U0444>,<U0424>);(<U0445>,<U0425>);(<U0446>,<U0426>);/
- (<U0447>,<U0427>);(<U0448>,<U0428>);(<U0449>,<U0429>);(<U044A>,<U042A>);/
- (<U044B>,<U042B>);(<U044C>,<U042C>);(<U044D>,<U042D>);(<U044E>,<U042E>);/
- (<U044F>,<U042F>);(<U0450>,<U0400>);(<U0451>,<U0401>);(<U0452>,<U0402>);/
- (<U0453>,<U0403>);(<U0454>,<U0404>);(<U0455>,<U0405>);(<U0456>,<U0406>);/
- (<U0457>,<U0407>);(<U0458>,<U0408>);(<U0459>,<U0409>);(<U045A>,<U040A>);/
- (<U045B>,<U040B>);(<U045C>,<U040C>);(<U045D>,<U040D>);(<U045E>,<U040E>);/
- (<U045F>,<U040F>);(<U0461>,<U0460>);(<U0463>,<U0462>);(<U0465>,<U0464>);/
- (<U0467>,<U0466>);(<U0469>,<U0468>);(<U046B>,<U046A>);(<U046D>,<U046C>);/
- (<U046F>,<U046E>);(<U0471>,<U0470>);(<U0473>,<U0472>);(<U0475>,<U0474>);/
- (<U0477>,<U0476>);(<U0479>,<U0478>);(<U047B>,<U047A>);(<U047D>,<U047C>);/
- (<U047F>,<U047E>);(<U0481>,<U0480>);(<U048B>,<U048A>);(<U048D>,<U048C>);/
- (<U048F>,<U048E>);(<U0491>,<U0490>);(<U0493>,<U0492>);(<U0495>,<U0494>);/
- (<U0497>,<U0496>);(<U0499>,<U0498>);(<U049B>,<U049A>);(<U049D>,<U049C>);/
- (<U049F>,<U049E>);(<U04A1>,<U04A0>);(<U04A3>,<U04A2>);(<U04A5>,<U04A4>);/
- (<U04A7>,<U04A6>);(<U04A9>,<U04A8>);(<U04AB>,<U04AA>);(<U04AD>,<U04AC>);/
- (<U04AF>,<U04AE>);(<U04B1>,<U04B0>);(<U04B3>,<U04B2>);(<U04B5>,<U04B4>);/
- (<U04B7>,<U04B6>);(<U04B9>,<U04B8>);(<U04BB>,<U04BA>);(<U04BD>,<U04BC>);/
- (<U04BF>,<U04BE>);(<U04C2>,<U04C1>);(<U04C4>,<U04C3>);(<U04C6>,<U04C5>);/
- (<U04C8>,<U04C7>);(<U04CA>,<U04C9>);(<U04CC>,<U04CB>);(<U04CE>,<U04CD>);/
- (<U04CF>,<U04C0>);(<U04D1>,<U04D0>);(<U04D3>,<U04D2>);(<U04D5>,<U04D4>);/
- (<U04D7>,<U04D6>);(<U04D9>,<U04D8>);(<U04DB>,<U04DA>);(<U04DD>,<U04DC>);/
- (<U04DF>,<U04DE>);(<U04E1>,<U04E0>);(<U04E3>,<U04E2>);(<U04E5>,<U04E4>);/
- (<U04E7>,<U04E6>);(<U04E9>,<U04E8>);(<U04EB>,<U04EA>);(<U04ED>,<U04EC>);/
- (<U04EF>,<U04EE>);(<U04F1>,<U04F0>);(<U04F3>,<U04F2>);(<U04F5>,<U04F4>);/
- (<U04F7>,<U04F6>);(<U04F9>,<U04F8>);(<U04FB>,<U04FA>);(<U04FD>,<U04FC>);/
- (<U04FF>,<U04FE>);(<U0501>,<U0500>);(<U0503>,<U0502>);(<U0505>,<U0504>);/
- (<U0507>,<U0506>);(<U0509>,<U0508>);(<U050B>,<U050A>);(<U050D>,<U050C>);/
- (<U050F>,<U050E>);(<U0511>,<U0510>);(<U0513>,<U0512>);(<U0515>,<U0514>);/
- (<U0517>,<U0516>);(<U0519>,<U0518>);(<U051B>,<U051A>);(<U051D>,<U051C>);/
- (<U051F>,<U051E>);(<U0521>,<U0520>);(<U0523>,<U0522>);(<U0525>,<U0524>);/
- (<U0527>,<U0526>);(<U0529>,<U0528>);(<U052B>,<U052A>);(<U052D>,<U052C>);/
- (<U052F>,<U052E>);(<U0561>,<U0531>);(<U0562>,<U0532>);(<U0563>,<U0533>);/
- (<U0564>,<U0534>);(<U0565>,<U0535>);(<U0566>,<U0536>);(<U0567>,<U0537>);/
- (<U0568>,<U0538>);(<U0569>,<U0539>);(<U056A>,<U053A>);(<U056B>,<U053B>);/
- (<U056C>,<U053C>);(<U056D>,<U053D>);(<U056E>,<U053E>);(<U056F>,<U053F>);/
- (<U0570>,<U0540>);(<U0571>,<U0541>);(<U0572>,<U0542>);(<U0573>,<U0543>);/
- (<U0574>,<U0544>);(<U0575>,<U0545>);(<U0576>,<U0546>);(<U0577>,<U0547>);/
- (<U0578>,<U0548>);(<U0579>,<U0549>);(<U057A>,<U054A>);(<U057B>,<U054B>);/
- (<U057C>,<U054C>);(<U057D>,<U054D>);(<U057E>,<U054E>);(<U057F>,<U054F>);/
- (<U0580>,<U0550>);(<U0581>,<U0551>);(<U0582>,<U0552>);(<U0583>,<U0553>);/
- (<U0584>,<U0554>);(<U0585>,<U0555>);(<U0586>,<U0556>);(<U13F8>,<U13F0>);/
- (<U13F9>,<U13F1>);(<U13FA>,<U13F2>);(<U13FB>,<U13F3>);(<U13FC>,<U13F4>);/
- (<U13FD>,<U13F5>);(<U1C80>,<U0412>);(<U1C81>,<U0414>);(<U1C82>,<U041E>);/
- (<U1C83>,<U0421>);(<U1C84>,<U0422>);(<U1C85>,<U0422>);(<U1C86>,<U042A>);/
- (<U1C87>,<U0462>);(<U1C88>,<UA64A>);(<U1D79>,<UA77D>);(<U1D7D>,<U2C63>);/
- (<U1D8E>,<UA7C6>);(<U1E01>,<U1E00>);(<U1E03>,<U1E02>);(<U1E05>,<U1E04>);/
- (<U1E07>,<U1E06>);(<U1E09>,<U1E08>);(<U1E0B>,<U1E0A>);(<U1E0D>,<U1E0C>);/
- (<U1E0F>,<U1E0E>);(<U1E11>,<U1E10>);(<U1E13>,<U1E12>);(<U1E15>,<U1E14>);/
- (<U1E17>,<U1E16>);(<U1E19>,<U1E18>);(<U1E1B>,<U1E1A>);(<U1E1D>,<U1E1C>);/
- (<U1E1F>,<U1E1E>);(<U1E21>,<U1E20>);(<U1E23>,<U1E22>);(<U1E25>,<U1E24>);/
- (<U1E27>,<U1E26>);(<U1E29>,<U1E28>);(<U1E2B>,<U1E2A>);(<U1E2D>,<U1E2C>);/
- (<U1E2F>,<U1E2E>);(<U1E31>,<U1E30>);(<U1E33>,<U1E32>);(<U1E35>,<U1E34>);/
- (<U1E37>,<U1E36>);(<U1E39>,<U1E38>);(<U1E3B>,<U1E3A>);(<U1E3D>,<U1E3C>);/
- (<U1E3F>,<U1E3E>);(<U1E41>,<U1E40>);(<U1E43>,<U1E42>);(<U1E45>,<U1E44>);/
- (<U1E47>,<U1E46>);(<U1E49>,<U1E48>);(<U1E4B>,<U1E4A>);(<U1E4D>,<U1E4C>);/
- (<U1E4F>,<U1E4E>);(<U1E51>,<U1E50>);(<U1E53>,<U1E52>);(<U1E55>,<U1E54>);/
- (<U1E57>,<U1E56>);(<U1E59>,<U1E58>);(<U1E5B>,<U1E5A>);(<U1E5D>,<U1E5C>);/
- (<U1E5F>,<U1E5E>);(<U1E61>,<U1E60>);(<U1E63>,<U1E62>);(<U1E65>,<U1E64>);/
- (<U1E67>,<U1E66>);(<U1E69>,<U1E68>);(<U1E6B>,<U1E6A>);(<U1E6D>,<U1E6C>);/
- (<U1E6F>,<U1E6E>);(<U1E71>,<U1E70>);(<U1E73>,<U1E72>);(<U1E75>,<U1E74>);/
- (<U1E77>,<U1E76>);(<U1E79>,<U1E78>);(<U1E7B>,<U1E7A>);(<U1E7D>,<U1E7C>);/
- (<U1E7F>,<U1E7E>);(<U1E81>,<U1E80>);(<U1E83>,<U1E82>);(<U1E85>,<U1E84>);/
- (<U1E87>,<U1E86>);(<U1E89>,<U1E88>);(<U1E8B>,<U1E8A>);(<U1E8D>,<U1E8C>);/
- (<U1E8F>,<U1E8E>);(<U1E91>,<U1E90>);(<U1E93>,<U1E92>);(<U1E95>,<U1E94>);/
- (<U1E9B>,<U1E60>);(<U1EA1>,<U1EA0>);(<U1EA3>,<U1EA2>);(<U1EA5>,<U1EA4>);/
- (<U1EA7>,<U1EA6>);(<U1EA9>,<U1EA8>);(<U1EAB>,<U1EAA>);(<U1EAD>,<U1EAC>);/
- (<U1EAF>,<U1EAE>);(<U1EB1>,<U1EB0>);(<U1EB3>,<U1EB2>);(<U1EB5>,<U1EB4>);/
- (<U1EB7>,<U1EB6>);(<U1EB9>,<U1EB8>);(<U1EBB>,<U1EBA>);(<U1EBD>,<U1EBC>);/
- (<U1EBF>,<U1EBE>);(<U1EC1>,<U1EC0>);(<U1EC3>,<U1EC2>);(<U1EC5>,<U1EC4>);/
- (<U1EC7>,<U1EC6>);(<U1EC9>,<U1EC8>);(<U1ECB>,<U1ECA>);(<U1ECD>,<U1ECC>);/
- (<U1ECF>,<U1ECE>);(<U1ED1>,<U1ED0>);(<U1ED3>,<U1ED2>);(<U1ED5>,<U1ED4>);/
- (<U1ED7>,<U1ED6>);(<U1ED9>,<U1ED8>);(<U1EDB>,<U1EDA>);(<U1EDD>,<U1EDC>);/
- (<U1EDF>,<U1EDE>);(<U1EE1>,<U1EE0>);(<U1EE3>,<U1EE2>);(<U1EE5>,<U1EE4>);/
- (<U1EE7>,<U1EE6>);(<U1EE9>,<U1EE8>);(<U1EEB>,<U1EEA>);(<U1EED>,<U1EEC>);/
- (<U1EEF>,<U1EEE>);(<U1EF1>,<U1EF0>);(<U1EF3>,<U1EF2>);(<U1EF5>,<U1EF4>);/
- (<U1EF7>,<U1EF6>);(<U1EF9>,<U1EF8>);(<U1EFB>,<U1EFA>);(<U1EFD>,<U1EFC>);/
- (<U1EFF>,<U1EFE>);(<U1F00>,<U1F08>);(<U1F01>,<U1F09>);(<U1F02>,<U1F0A>);/
- (<U1F03>,<U1F0B>);(<U1F04>,<U1F0C>);(<U1F05>,<U1F0D>);(<U1F06>,<U1F0E>);/
- (<U1F07>,<U1F0F>);(<U1F10>,<U1F18>);(<U1F11>,<U1F19>);(<U1F12>,<U1F1A>);/
- (<U1F13>,<U1F1B>);(<U1F14>,<U1F1C>);(<U1F15>,<U1F1D>);(<U1F20>,<U1F28>);/
- (<U1F21>,<U1F29>);(<U1F22>,<U1F2A>);(<U1F23>,<U1F2B>);(<U1F24>,<U1F2C>);/
- (<U1F25>,<U1F2D>);(<U1F26>,<U1F2E>);(<U1F27>,<U1F2F>);(<U1F30>,<U1F38>);/
- (<U1F31>,<U1F39>);(<U1F32>,<U1F3A>);(<U1F33>,<U1F3B>);(<U1F34>,<U1F3C>);/
- (<U1F35>,<U1F3D>);(<U1F36>,<U1F3E>);(<U1F37>,<U1F3F>);(<U1F40>,<U1F48>);/
- (<U1F41>,<U1F49>);(<U1F42>,<U1F4A>);(<U1F43>,<U1F4B>);(<U1F44>,<U1F4C>);/
- (<U1F45>,<U1F4D>);(<U1F51>,<U1F59>);(<U1F53>,<U1F5B>);(<U1F55>,<U1F5D>);/
- (<U1F57>,<U1F5F>);(<U1F60>,<U1F68>);(<U1F61>,<U1F69>);(<U1F62>,<U1F6A>);/
- (<U1F63>,<U1F6B>);(<U1F64>,<U1F6C>);(<U1F65>,<U1F6D>);(<U1F66>,<U1F6E>);/
- (<U1F67>,<U1F6F>);(<U1F70>,<U1FBA>);(<U1F71>,<U1FBB>);(<U1F72>,<U1FC8>);/
- (<U1F73>,<U1FC9>);(<U1F74>,<U1FCA>);(<U1F75>,<U1FCB>);(<U1F76>,<U1FDA>);/
- (<U1F77>,<U1FDB>);(<U1F78>,<U1FF8>);(<U1F79>,<U1FF9>);(<U1F7A>,<U1FEA>);/
- (<U1F7B>,<U1FEB>);(<U1F7C>,<U1FFA>);(<U1F7D>,<U1FFB>);(<U1F80>,<U1F88>);/
- (<U1F81>,<U1F89>);(<U1F82>,<U1F8A>);(<U1F83>,<U1F8B>);(<U1F84>,<U1F8C>);/
- (<U1F85>,<U1F8D>);(<U1F86>,<U1F8E>);(<U1F87>,<U1F8F>);(<U1F90>,<U1F98>);/
- (<U1F91>,<U1F99>);(<U1F92>,<U1F9A>);(<U1F93>,<U1F9B>);(<U1F94>,<U1F9C>);/
- (<U1F95>,<U1F9D>);(<U1F96>,<U1F9E>);(<U1F97>,<U1F9F>);(<U1FA0>,<U1FA8>);/
- (<U1FA1>,<U1FA9>);(<U1FA2>,<U1FAA>);(<U1FA3>,<U1FAB>);(<U1FA4>,<U1FAC>);/
- (<U1FA5>,<U1FAD>);(<U1FA6>,<U1FAE>);(<U1FA7>,<U1FAF>);(<U1FB0>,<U1FB8>);/
- (<U1FB1>,<U1FB9>);(<U1FB3>,<U1FBC>);(<U1FBE>,<U0399>);(<U1FC3>,<U1FCC>);/
- (<U1FD0>,<U1FD8>);(<U1FD1>,<U1FD9>);(<U1FE0>,<U1FE8>);(<U1FE1>,<U1FE9>);/
- (<U1FE5>,<U1FEC>);(<U1FF3>,<U1FFC>);(<U214E>,<U2132>);(<U2170>,<U2160>);/
- (<U2171>,<U2161>);(<U2172>,<U2162>);(<U2173>,<U2163>);(<U2174>,<U2164>);/
- (<U2175>,<U2165>);(<U2176>,<U2166>);(<U2177>,<U2167>);(<U2178>,<U2168>);/
- (<U2179>,<U2169>);(<U217A>,<U216A>);(<U217B>,<U216B>);(<U217C>,<U216C>);/
- (<U217D>,<U216D>);(<U217E>,<U216E>);(<U217F>,<U216F>);(<U2184>,<U2183>);/
- (<U24D0>,<U24B6>);(<U24D1>,<U24B7>);(<U24D2>,<U24B8>);(<U24D3>,<U24B9>);/
- (<U24D4>,<U24BA>);(<U24D5>,<U24BB>);(<U24D6>,<U24BC>);(<U24D7>,<U24BD>);/
- (<U24D8>,<U24BE>);(<U24D9>,<U24BF>);(<U24DA>,<U24C0>);(<U24DB>,<U24C1>);/
- (<U24DC>,<U24C2>);(<U24DD>,<U24C3>);(<U24DE>,<U24C4>);(<U24DF>,<U24C5>);/
- (<U24E0>,<U24C6>);(<U24E1>,<U24C7>);(<U24E2>,<U24C8>);(<U24E3>,<U24C9>);/
- (<U24E4>,<U24CA>);(<U24E5>,<U24CB>);(<U24E6>,<U24CC>);(<U24E7>,<U24CD>);/
- (<U24E8>,<U24CE>);(<U24E9>,<U24CF>);(<U2C30>,<U2C00>);(<U2C31>,<U2C01>);/
- (<U2C32>,<U2C02>);(<U2C33>,<U2C03>);(<U2C34>,<U2C04>);(<U2C35>,<U2C05>);/
- (<U2C36>,<U2C06>);(<U2C37>,<U2C07>);(<U2C38>,<U2C08>);(<U2C39>,<U2C09>);/
- (<U2C3A>,<U2C0A>);(<U2C3B>,<U2C0B>);(<U2C3C>,<U2C0C>);(<U2C3D>,<U2C0D>);/
- (<U2C3E>,<U2C0E>);(<U2C3F>,<U2C0F>);(<U2C40>,<U2C10>);(<U2C41>,<U2C11>);/
- (<U2C42>,<U2C12>);(<U2C43>,<U2C13>);(<U2C44>,<U2C14>);(<U2C45>,<U2C15>);/
- (<U2C46>,<U2C16>);(<U2C47>,<U2C17>);(<U2C48>,<U2C18>);(<U2C49>,<U2C19>);/
- (<U2C4A>,<U2C1A>);(<U2C4B>,<U2C1B>);(<U2C4C>,<U2C1C>);(<U2C4D>,<U2C1D>);/
- (<U2C4E>,<U2C1E>);(<U2C4F>,<U2C1F>);(<U2C50>,<U2C20>);(<U2C51>,<U2C21>);/
- (<U2C52>,<U2C22>);(<U2C53>,<U2C23>);(<U2C54>,<U2C24>);(<U2C55>,<U2C25>);/
- (<U2C56>,<U2C26>);(<U2C57>,<U2C27>);(<U2C58>,<U2C28>);(<U2C59>,<U2C29>);/
- (<U2C5A>,<U2C2A>);(<U2C5B>,<U2C2B>);(<U2C5C>,<U2C2C>);(<U2C5D>,<U2C2D>);/
- (<U2C5E>,<U2C2E>);(<U2C5F>,<U2C2F>);(<U2C61>,<U2C60>);(<U2C65>,<U023A>);/
- (<U2C66>,<U023E>);(<U2C68>,<U2C67>);(<U2C6A>,<U2C69>);(<U2C6C>,<U2C6B>);/
- (<U2C73>,<U2C72>);(<U2C76>,<U2C75>);(<U2C81>,<U2C80>);(<U2C83>,<U2C82>);/
- (<U2C85>,<U2C84>);(<U2C87>,<U2C86>);(<U2C89>,<U2C88>);(<U2C8B>,<U2C8A>);/
- (<U2C8D>,<U2C8C>);(<U2C8F>,<U2C8E>);(<U2C91>,<U2C90>);(<U2C93>,<U2C92>);/
- (<U2C95>,<U2C94>);(<U2C97>,<U2C96>);(<U2C99>,<U2C98>);(<U2C9B>,<U2C9A>);/
- (<U2C9D>,<U2C9C>);(<U2C9F>,<U2C9E>);(<U2CA1>,<U2CA0>);(<U2CA3>,<U2CA2>);/
- (<U2CA5>,<U2CA4>);(<U2CA7>,<U2CA6>);(<U2CA9>,<U2CA8>);(<U2CAB>,<U2CAA>);/
- (<U2CAD>,<U2CAC>);(<U2CAF>,<U2CAE>);(<U2CB1>,<U2CB0>);(<U2CB3>,<U2CB2>);/
- (<U2CB5>,<U2CB4>);(<U2CB7>,<U2CB6>);(<U2CB9>,<U2CB8>);(<U2CBB>,<U2CBA>);/
- (<U2CBD>,<U2CBC>);(<U2CBF>,<U2CBE>);(<U2CC1>,<U2CC0>);(<U2CC3>,<U2CC2>);/
- (<U2CC5>,<U2CC4>);(<U2CC7>,<U2CC6>);(<U2CC9>,<U2CC8>);(<U2CCB>,<U2CCA>);/
- (<U2CCD>,<U2CCC>);(<U2CCF>,<U2CCE>);(<U2CD1>,<U2CD0>);(<U2CD3>,<U2CD2>);/
- (<U2CD5>,<U2CD4>);(<U2CD7>,<U2CD6>);(<U2CD9>,<U2CD8>);(<U2CDB>,<U2CDA>);/
- (<U2CDD>,<U2CDC>);(<U2CDF>,<U2CDE>);(<U2CE1>,<U2CE0>);(<U2CE3>,<U2CE2>);/
- (<U2CEC>,<U2CEB>);(<U2CEE>,<U2CED>);(<U2CF3>,<U2CF2>);(<U2D00>,<U10A0>);/
- (<U2D01>,<U10A1>);(<U2D02>,<U10A2>);(<U2D03>,<U10A3>);(<U2D04>,<U10A4>);/
- (<U2D05>,<U10A5>);(<U2D06>,<U10A6>);(<U2D07>,<U10A7>);(<U2D08>,<U10A8>);/
- (<U2D09>,<U10A9>);(<U2D0A>,<U10AA>);(<U2D0B>,<U10AB>);(<U2D0C>,<U10AC>);/
- (<U2D0D>,<U10AD>);(<U2D0E>,<U10AE>);(<U2D0F>,<U10AF>);(<U2D10>,<U10B0>);/
- (<U2D11>,<U10B1>);(<U2D12>,<U10B2>);(<U2D13>,<U10B3>);(<U2D14>,<U10B4>);/
- (<U2D15>,<U10B5>);(<U2D16>,<U10B6>);(<U2D17>,<U10B7>);(<U2D18>,<U10B8>);/
- (<U2D19>,<U10B9>);(<U2D1A>,<U10BA>);(<U2D1B>,<U10BB>);(<U2D1C>,<U10BC>);/
- (<U2D1D>,<U10BD>);(<U2D1E>,<U10BE>);(<U2D1F>,<U10BF>);(<U2D20>,<U10C0>);/
- (<U2D21>,<U10C1>);(<U2D22>,<U10C2>);(<U2D23>,<U10C3>);(<U2D24>,<U10C4>);/
- (<U2D25>,<U10C5>);(<U2D27>,<U10C7>);(<U2D2D>,<U10CD>);(<UA641>,<UA640>);/
- (<UA643>,<UA642>);(<UA645>,<UA644>);(<UA647>,<UA646>);(<UA649>,<UA648>);/
- (<UA64B>,<UA64A>);(<UA64D>,<UA64C>);(<UA64F>,<UA64E>);(<UA651>,<UA650>);/
- (<UA653>,<UA652>);(<UA655>,<UA654>);(<UA657>,<UA656>);(<UA659>,<UA658>);/
- (<UA65B>,<UA65A>);(<UA65D>,<UA65C>);(<UA65F>,<UA65E>);(<UA661>,<UA660>);/
- (<UA663>,<UA662>);(<UA665>,<UA664>);(<UA667>,<UA666>);(<UA669>,<UA668>);/
- (<UA66B>,<UA66A>);(<UA66D>,<UA66C>);(<UA681>,<UA680>);(<UA683>,<UA682>);/
- (<UA685>,<UA684>);(<UA687>,<UA686>);(<UA689>,<UA688>);(<UA68B>,<UA68A>);/
- (<UA68D>,<UA68C>);(<UA68F>,<UA68E>);(<UA691>,<UA690>);(<UA693>,<UA692>);/
- (<UA695>,<UA694>);(<UA697>,<UA696>);(<UA699>,<UA698>);(<UA69B>,<UA69A>);/
- (<UA723>,<UA722>);(<UA725>,<UA724>);(<UA727>,<UA726>);(<UA729>,<UA728>);/
- (<UA72B>,<UA72A>);(<UA72D>,<UA72C>);(<UA72F>,<UA72E>);(<UA733>,<UA732>);/
- (<UA735>,<UA734>);(<UA737>,<UA736>);(<UA739>,<UA738>);(<UA73B>,<UA73A>);/
- (<UA73D>,<UA73C>);(<UA73F>,<UA73E>);(<UA741>,<UA740>);(<UA743>,<UA742>);/
- (<UA745>,<UA744>);(<UA747>,<UA746>);(<UA749>,<UA748>);(<UA74B>,<UA74A>);/
- (<UA74D>,<UA74C>);(<UA74F>,<UA74E>);(<UA751>,<UA750>);(<UA753>,<UA752>);/
- (<UA755>,<UA754>);(<UA757>,<UA756>);(<UA759>,<UA758>);(<UA75B>,<UA75A>);/
- (<UA75D>,<UA75C>);(<UA75F>,<UA75E>);(<UA761>,<UA760>);(<UA763>,<UA762>);/
- (<UA765>,<UA764>);(<UA767>,<UA766>);(<UA769>,<UA768>);(<UA76B>,<UA76A>);/
- (<UA76D>,<UA76C>);(<UA76F>,<UA76E>);(<UA77A>,<UA779>);(<UA77C>,<UA77B>);/
- (<UA77F>,<UA77E>);(<UA781>,<UA780>);(<UA783>,<UA782>);(<UA785>,<UA784>);/
- (<UA787>,<UA786>);(<UA78C>,<UA78B>);(<UA791>,<UA790>);(<UA793>,<UA792>);/
- (<UA794>,<UA7C4>);(<UA797>,<UA796>);(<UA799>,<UA798>);(<UA79B>,<UA79A>);/
- (<UA79D>,<UA79C>);(<UA79F>,<UA79E>);(<UA7A1>,<UA7A0>);(<UA7A3>,<UA7A2>);/
- (<UA7A5>,<UA7A4>);(<UA7A7>,<UA7A6>);(<UA7A9>,<UA7A8>);(<UA7B5>,<UA7B4>);/
- (<UA7B7>,<UA7B6>);(<UA7B9>,<UA7B8>);(<UA7BB>,<UA7BA>);(<UA7BD>,<UA7BC>);/
- (<UA7BF>,<UA7BE>);(<UA7C1>,<UA7C0>);(<UA7C3>,<UA7C2>);(<UA7C8>,<UA7C7>);/
- (<UA7CA>,<UA7C9>);(<UA7D1>,<UA7D0>);(<UA7D7>,<UA7D6>);(<UA7D9>,<UA7D8>);/
- (<UA7F6>,<UA7F5>);(<UAB53>,<UA7B3>);(<UAB70>,<U13A0>);(<UAB71>,<U13A1>);/
- (<UAB72>,<U13A2>);(<UAB73>,<U13A3>);(<UAB74>,<U13A4>);(<UAB75>,<U13A5>);/
- (<UAB76>,<U13A6>);(<UAB77>,<U13A7>);(<UAB78>,<U13A8>);(<UAB79>,<U13A9>);/
- (<UAB7A>,<U13AA>);(<UAB7B>,<U13AB>);(<UAB7C>,<U13AC>);(<UAB7D>,<U13AD>);/
- (<UAB7E>,<U13AE>);(<UAB7F>,<U13AF>);(<UAB80>,<U13B0>);(<UAB81>,<U13B1>);/
- (<UAB82>,<U13B2>);(<UAB83>,<U13B3>);(<UAB84>,<U13B4>);(<UAB85>,<U13B5>);/
- (<UAB86>,<U13B6>);(<UAB87>,<U13B7>);(<UAB88>,<U13B8>);(<UAB89>,<U13B9>);/
- (<UAB8A>,<U13BA>);(<UAB8B>,<U13BB>);(<UAB8C>,<U13BC>);(<UAB8D>,<U13BD>);/
- (<UAB8E>,<U13BE>);(<UAB8F>,<U13BF>);(<UAB90>,<U13C0>);(<UAB91>,<U13C1>);/
- (<UAB92>,<U13C2>);(<UAB93>,<U13C3>);(<UAB94>,<U13C4>);(<UAB95>,<U13C5>);/
- (<UAB96>,<U13C6>);(<UAB97>,<U13C7>);(<UAB98>,<U13C8>);(<UAB99>,<U13C9>);/
- (<UAB9A>,<U13CA>);(<UAB9B>,<U13CB>);(<UAB9C>,<U13CC>);(<UAB9D>,<U13CD>);/
- (<UAB9E>,<U13CE>);(<UAB9F>,<U13CF>);(<UABA0>,<U13D0>);(<UABA1>,<U13D1>);/
- (<UABA2>,<U13D2>);(<UABA3>,<U13D3>);(<UABA4>,<U13D4>);(<UABA5>,<U13D5>);/
- (<UABA6>,<U13D6>);(<UABA7>,<U13D7>);(<UABA8>,<U13D8>);(<UABA9>,<U13D9>);/
- (<UABAA>,<U13DA>);(<UABAB>,<U13DB>);(<UABAC>,<U13DC>);(<UABAD>,<U13DD>);/
- (<UABAE>,<U13DE>);(<UABAF>,<U13DF>);(<UABB0>,<U13E0>);(<UABB1>,<U13E1>);/
- (<UABB2>,<U13E2>);(<UABB3>,<U13E3>);(<UABB4>,<U13E4>);(<UABB5>,<U13E5>);/
- (<UABB6>,<U13E6>);(<UABB7>,<U13E7>);(<UABB8>,<U13E8>);(<UABB9>,<U13E9>);/
- (<UABBA>,<U13EA>);(<UABBB>,<U13EB>);(<UABBC>,<U13EC>);(<UABBD>,<U13ED>);/
- (<UABBE>,<U13EE>);(<UABBF>,<U13EF>);(<UFF41>,<UFF21>);(<UFF42>,<UFF22>);/
- (<UFF43>,<UFF23>);(<UFF44>,<UFF24>);(<UFF45>,<UFF25>);(<UFF46>,<UFF26>);/
- (<UFF47>,<UFF27>);(<UFF48>,<UFF28>);(<UFF49>,<UFF29>);(<UFF4A>,<UFF2A>);/
- (<UFF4B>,<UFF2B>);(<UFF4C>,<UFF2C>);(<UFF4D>,<UFF2D>);(<UFF4E>,<UFF2E>);/
- (<UFF4F>,<UFF2F>);(<UFF50>,<UFF30>);(<UFF51>,<UFF31>);(<UFF52>,<UFF32>);/
- (<UFF53>,<UFF33>);(<UFF54>,<UFF34>);(<UFF55>,<UFF35>);(<UFF56>,<UFF36>);/
- (<UFF57>,<UFF37>);(<UFF58>,<UFF38>);(<UFF59>,<UFF39>);(<UFF5A>,<UFF3A>);/
- (<U00010428>,<U00010400>);(<U00010429>,<U00010401>);/
+ (<U0199>,<U0198>);(<U019A>,<U023D>);(<U019B>,<UA7DC>);(<U019E>,<U0220>);/
+ (<U01A1>,<U01A0>);(<U01A3>,<U01A2>);(<U01A5>,<U01A4>);(<U01A8>,<U01A7>);/
+ (<U01AD>,<U01AC>);(<U01B0>,<U01AF>);(<U01B4>,<U01B3>);(<U01B6>,<U01B5>);/
+ (<U01B9>,<U01B8>);(<U01BD>,<U01BC>);(<U01BF>,<U01F7>);(<U01C4>,<U01C5>);/
+ (<U01C6>,<U01C5>);(<U01C7>,<U01C8>);(<U01C9>,<U01C8>);(<U01CA>,<U01CB>);/
+ (<U01CC>,<U01CB>);(<U01CE>,<U01CD>);(<U01D0>,<U01CF>);(<U01D2>,<U01D1>);/
+ (<U01D4>,<U01D3>);(<U01D6>,<U01D5>);(<U01D8>,<U01D7>);(<U01DA>,<U01D9>);/
+ (<U01DC>,<U01DB>);(<U01DD>,<U018E>);(<U01DF>,<U01DE>);(<U01E1>,<U01E0>);/
+ (<U01E3>,<U01E2>);(<U01E5>,<U01E4>);(<U01E7>,<U01E6>);(<U01E9>,<U01E8>);/
+ (<U01EB>,<U01EA>);(<U01ED>,<U01EC>);(<U01EF>,<U01EE>);(<U01F1>,<U01F2>);/
+ (<U01F3>,<U01F2>);(<U01F5>,<U01F4>);(<U01F9>,<U01F8>);(<U01FB>,<U01FA>);/
+ (<U01FD>,<U01FC>);(<U01FF>,<U01FE>);(<U0201>,<U0200>);(<U0203>,<U0202>);/
+ (<U0205>,<U0204>);(<U0207>,<U0206>);(<U0209>,<U0208>);(<U020B>,<U020A>);/
+ (<U020D>,<U020C>);(<U020F>,<U020E>);(<U0211>,<U0210>);(<U0213>,<U0212>);/
+ (<U0215>,<U0214>);(<U0217>,<U0216>);(<U0219>,<U0218>);(<U021B>,<U021A>);/
+ (<U021D>,<U021C>);(<U021F>,<U021E>);(<U0223>,<U0222>);(<U0225>,<U0224>);/
+ (<U0227>,<U0226>);(<U0229>,<U0228>);(<U022B>,<U022A>);(<U022D>,<U022C>);/
+ (<U022F>,<U022E>);(<U0231>,<U0230>);(<U0233>,<U0232>);(<U023C>,<U023B>);/
+ (<U023F>,<U2C7E>);(<U0240>,<U2C7F>);(<U0242>,<U0241>);(<U0247>,<U0246>);/
+ (<U0249>,<U0248>);(<U024B>,<U024A>);(<U024D>,<U024C>);(<U024F>,<U024E>);/
+ (<U0250>,<U2C6F>);(<U0251>,<U2C6D>);(<U0252>,<U2C70>);(<U0253>,<U0181>);/
+ (<U0254>,<U0186>);(<U0256>,<U0189>);(<U0257>,<U018A>);(<U0259>,<U018F>);/
+ (<U025B>,<U0190>);(<U025C>,<UA7AB>);(<U0260>,<U0193>);(<U0261>,<UA7AC>);/
+ (<U0263>,<U0194>);(<U0264>,<UA7CB>);(<U0265>,<UA78D>);(<U0266>,<UA7AA>);/
+ (<U0268>,<U0197>);(<U0269>,<U0196>);(<U026A>,<UA7AE>);(<U026B>,<U2C62>);/
+ (<U026C>,<UA7AD>);(<U026F>,<U019C>);(<U0271>,<U2C6E>);(<U0272>,<U019D>);/
+ (<U0275>,<U019F>);(<U027D>,<U2C64>);(<U0280>,<U01A6>);(<U0282>,<UA7C5>);/
+ (<U0283>,<U01A9>);(<U0287>,<UA7B1>);(<U0288>,<U01AE>);(<U0289>,<U0244>);/
+ (<U028A>,<U01B1>);(<U028B>,<U01B2>);(<U028C>,<U0245>);(<U0292>,<U01B7>);/
+ (<U029D>,<UA7B2>);(<U029E>,<UA7B0>);(<U0345>,<U0399>);(<U0371>,<U0370>);/
+ (<U0373>,<U0372>);(<U0377>,<U0376>);(<U037B>,<U03FD>);(<U037C>,<U03FE>);/
+ (<U037D>,<U03FF>);(<U03AC>,<U0386>);(<U03AD>,<U0388>);(<U03AE>,<U0389>);/
+ (<U03AF>,<U038A>);(<U03B1>,<U0391>);(<U03B2>,<U0392>);(<U03B3>,<U0393>);/
+ (<U03B4>,<U0394>);(<U03B5>,<U0395>);(<U03B6>,<U0396>);(<U03B7>,<U0397>);/
+ (<U03B8>,<U0398>);(<U03B9>,<U0399>);(<U03BA>,<U039A>);(<U03BB>,<U039B>);/
+ (<U03BC>,<U039C>);(<U03BD>,<U039D>);(<U03BE>,<U039E>);(<U03BF>,<U039F>);/
+ (<U03C0>,<U03A0>);(<U03C1>,<U03A1>);(<U03C2>,<U03A3>);(<U03C3>,<U03A3>);/
+ (<U03C4>,<U03A4>);(<U03C5>,<U03A5>);(<U03C6>,<U03A6>);(<U03C7>,<U03A7>);/
+ (<U03C8>,<U03A8>);(<U03C9>,<U03A9>);(<U03CA>,<U03AA>);(<U03CB>,<U03AB>);/
+ (<U03CC>,<U038C>);(<U03CD>,<U038E>);(<U03CE>,<U038F>);(<U03D0>,<U0392>);/
+ (<U03D1>,<U0398>);(<U03D5>,<U03A6>);(<U03D6>,<U03A0>);(<U03D7>,<U03CF>);/
+ (<U03D9>,<U03D8>);(<U03DB>,<U03DA>);(<U03DD>,<U03DC>);(<U03DF>,<U03DE>);/
+ (<U03E1>,<U03E0>);(<U03E3>,<U03E2>);(<U03E5>,<U03E4>);(<U03E7>,<U03E6>);/
+ (<U03E9>,<U03E8>);(<U03EB>,<U03EA>);(<U03ED>,<U03EC>);(<U03EF>,<U03EE>);/
+ (<U03F0>,<U039A>);(<U03F1>,<U03A1>);(<U03F2>,<U03F9>);(<U03F3>,<U037F>);/
+ (<U03F5>,<U0395>);(<U03F8>,<U03F7>);(<U03FB>,<U03FA>);(<U0430>,<U0410>);/
+ (<U0431>,<U0411>);(<U0432>,<U0412>);(<U0433>,<U0413>);(<U0434>,<U0414>);/
+ (<U0435>,<U0415>);(<U0436>,<U0416>);(<U0437>,<U0417>);(<U0438>,<U0418>);/
+ (<U0439>,<U0419>);(<U043A>,<U041A>);(<U043B>,<U041B>);(<U043C>,<U041C>);/
+ (<U043D>,<U041D>);(<U043E>,<U041E>);(<U043F>,<U041F>);(<U0440>,<U0420>);/
+ (<U0441>,<U0421>);(<U0442>,<U0422>);(<U0443>,<U0423>);(<U0444>,<U0424>);/
+ (<U0445>,<U0425>);(<U0446>,<U0426>);(<U0447>,<U0427>);(<U0448>,<U0428>);/
+ (<U0449>,<U0429>);(<U044A>,<U042A>);(<U044B>,<U042B>);(<U044C>,<U042C>);/
+ (<U044D>,<U042D>);(<U044E>,<U042E>);(<U044F>,<U042F>);(<U0450>,<U0400>);/
+ (<U0451>,<U0401>);(<U0452>,<U0402>);(<U0453>,<U0403>);(<U0454>,<U0404>);/
+ (<U0455>,<U0405>);(<U0456>,<U0406>);(<U0457>,<U0407>);(<U0458>,<U0408>);/
+ (<U0459>,<U0409>);(<U045A>,<U040A>);(<U045B>,<U040B>);(<U045C>,<U040C>);/
+ (<U045D>,<U040D>);(<U045E>,<U040E>);(<U045F>,<U040F>);(<U0461>,<U0460>);/
+ (<U0463>,<U0462>);(<U0465>,<U0464>);(<U0467>,<U0466>);(<U0469>,<U0468>);/
+ (<U046B>,<U046A>);(<U046D>,<U046C>);(<U046F>,<U046E>);(<U0471>,<U0470>);/
+ (<U0473>,<U0472>);(<U0475>,<U0474>);(<U0477>,<U0476>);(<U0479>,<U0478>);/
+ (<U047B>,<U047A>);(<U047D>,<U047C>);(<U047F>,<U047E>);(<U0481>,<U0480>);/
+ (<U048B>,<U048A>);(<U048D>,<U048C>);(<U048F>,<U048E>);(<U0491>,<U0490>);/
+ (<U0493>,<U0492>);(<U0495>,<U0494>);(<U0497>,<U0496>);(<U0499>,<U0498>);/
+ (<U049B>,<U049A>);(<U049D>,<U049C>);(<U049F>,<U049E>);(<U04A1>,<U04A0>);/
+ (<U04A3>,<U04A2>);(<U04A5>,<U04A4>);(<U04A7>,<U04A6>);(<U04A9>,<U04A8>);/
+ (<U04AB>,<U04AA>);(<U04AD>,<U04AC>);(<U04AF>,<U04AE>);(<U04B1>,<U04B0>);/
+ (<U04B3>,<U04B2>);(<U04B5>,<U04B4>);(<U04B7>,<U04B6>);(<U04B9>,<U04B8>);/
+ (<U04BB>,<U04BA>);(<U04BD>,<U04BC>);(<U04BF>,<U04BE>);(<U04C2>,<U04C1>);/
+ (<U04C4>,<U04C3>);(<U04C6>,<U04C5>);(<U04C8>,<U04C7>);(<U04CA>,<U04C9>);/
+ (<U04CC>,<U04CB>);(<U04CE>,<U04CD>);(<U04CF>,<U04C0>);(<U04D1>,<U04D0>);/
+ (<U04D3>,<U04D2>);(<U04D5>,<U04D4>);(<U04D7>,<U04D6>);(<U04D9>,<U04D8>);/
+ (<U04DB>,<U04DA>);(<U04DD>,<U04DC>);(<U04DF>,<U04DE>);(<U04E1>,<U04E0>);/
+ (<U04E3>,<U04E2>);(<U04E5>,<U04E4>);(<U04E7>,<U04E6>);(<U04E9>,<U04E8>);/
+ (<U04EB>,<U04EA>);(<U04ED>,<U04EC>);(<U04EF>,<U04EE>);(<U04F1>,<U04F0>);/
+ (<U04F3>,<U04F2>);(<U04F5>,<U04F4>);(<U04F7>,<U04F6>);(<U04F9>,<U04F8>);/
+ (<U04FB>,<U04FA>);(<U04FD>,<U04FC>);(<U04FF>,<U04FE>);(<U0501>,<U0500>);/
+ (<U0503>,<U0502>);(<U0505>,<U0504>);(<U0507>,<U0506>);(<U0509>,<U0508>);/
+ (<U050B>,<U050A>);(<U050D>,<U050C>);(<U050F>,<U050E>);(<U0511>,<U0510>);/
+ (<U0513>,<U0512>);(<U0515>,<U0514>);(<U0517>,<U0516>);(<U0519>,<U0518>);/
+ (<U051B>,<U051A>);(<U051D>,<U051C>);(<U051F>,<U051E>);(<U0521>,<U0520>);/
+ (<U0523>,<U0522>);(<U0525>,<U0524>);(<U0527>,<U0526>);(<U0529>,<U0528>);/
+ (<U052B>,<U052A>);(<U052D>,<U052C>);(<U052F>,<U052E>);(<U0561>,<U0531>);/
+ (<U0562>,<U0532>);(<U0563>,<U0533>);(<U0564>,<U0534>);(<U0565>,<U0535>);/
+ (<U0566>,<U0536>);(<U0567>,<U0537>);(<U0568>,<U0538>);(<U0569>,<U0539>);/
+ (<U056A>,<U053A>);(<U056B>,<U053B>);(<U056C>,<U053C>);(<U056D>,<U053D>);/
+ (<U056E>,<U053E>);(<U056F>,<U053F>);(<U0570>,<U0540>);(<U0571>,<U0541>);/
+ (<U0572>,<U0542>);(<U0573>,<U0543>);(<U0574>,<U0544>);(<U0575>,<U0545>);/
+ (<U0576>,<U0546>);(<U0577>,<U0547>);(<U0578>,<U0548>);(<U0579>,<U0549>);/
+ (<U057A>,<U054A>);(<U057B>,<U054B>);(<U057C>,<U054C>);(<U057D>,<U054D>);/
+ (<U057E>,<U054E>);(<U057F>,<U054F>);(<U0580>,<U0550>);(<U0581>,<U0551>);/
+ (<U0582>,<U0552>);(<U0583>,<U0553>);(<U0584>,<U0554>);(<U0585>,<U0555>);/
+ (<U0586>,<U0556>);(<U13F8>,<U13F0>);(<U13F9>,<U13F1>);(<U13FA>,<U13F2>);/
+ (<U13FB>,<U13F3>);(<U13FC>,<U13F4>);(<U13FD>,<U13F5>);(<U1C80>,<U0412>);/
+ (<U1C81>,<U0414>);(<U1C82>,<U041E>);(<U1C83>,<U0421>);(<U1C84>,<U0422>);/
+ (<U1C85>,<U0422>);(<U1C86>,<U042A>);(<U1C87>,<U0462>);(<U1C88>,<UA64A>);/
+ (<U1C8A>,<U1C89>);(<U1D79>,<UA77D>);(<U1D7D>,<U2C63>);(<U1D8E>,<UA7C6>);/
+ (<U1E01>,<U1E00>);(<U1E03>,<U1E02>);(<U1E05>,<U1E04>);(<U1E07>,<U1E06>);/
+ (<U1E09>,<U1E08>);(<U1E0B>,<U1E0A>);(<U1E0D>,<U1E0C>);(<U1E0F>,<U1E0E>);/
+ (<U1E11>,<U1E10>);(<U1E13>,<U1E12>);(<U1E15>,<U1E14>);(<U1E17>,<U1E16>);/
+ (<U1E19>,<U1E18>);(<U1E1B>,<U1E1A>);(<U1E1D>,<U1E1C>);(<U1E1F>,<U1E1E>);/
+ (<U1E21>,<U1E20>);(<U1E23>,<U1E22>);(<U1E25>,<U1E24>);(<U1E27>,<U1E26>);/
+ (<U1E29>,<U1E28>);(<U1E2B>,<U1E2A>);(<U1E2D>,<U1E2C>);(<U1E2F>,<U1E2E>);/
+ (<U1E31>,<U1E30>);(<U1E33>,<U1E32>);(<U1E35>,<U1E34>);(<U1E37>,<U1E36>);/
+ (<U1E39>,<U1E38>);(<U1E3B>,<U1E3A>);(<U1E3D>,<U1E3C>);(<U1E3F>,<U1E3E>);/
+ (<U1E41>,<U1E40>);(<U1E43>,<U1E42>);(<U1E45>,<U1E44>);(<U1E47>,<U1E46>);/
+ (<U1E49>,<U1E48>);(<U1E4B>,<U1E4A>);(<U1E4D>,<U1E4C>);(<U1E4F>,<U1E4E>);/
+ (<U1E51>,<U1E50>);(<U1E53>,<U1E52>);(<U1E55>,<U1E54>);(<U1E57>,<U1E56>);/
+ (<U1E59>,<U1E58>);(<U1E5B>,<U1E5A>);(<U1E5D>,<U1E5C>);(<U1E5F>,<U1E5E>);/
+ (<U1E61>,<U1E60>);(<U1E63>,<U1E62>);(<U1E65>,<U1E64>);(<U1E67>,<U1E66>);/
+ (<U1E69>,<U1E68>);(<U1E6B>,<U1E6A>);(<U1E6D>,<U1E6C>);(<U1E6F>,<U1E6E>);/
+ (<U1E71>,<U1E70>);(<U1E73>,<U1E72>);(<U1E75>,<U1E74>);(<U1E77>,<U1E76>);/
+ (<U1E79>,<U1E78>);(<U1E7B>,<U1E7A>);(<U1E7D>,<U1E7C>);(<U1E7F>,<U1E7E>);/
+ (<U1E81>,<U1E80>);(<U1E83>,<U1E82>);(<U1E85>,<U1E84>);(<U1E87>,<U1E86>);/
+ (<U1E89>,<U1E88>);(<U1E8B>,<U1E8A>);(<U1E8D>,<U1E8C>);(<U1E8F>,<U1E8E>);/
+ (<U1E91>,<U1E90>);(<U1E93>,<U1E92>);(<U1E95>,<U1E94>);(<U1E9B>,<U1E60>);/
+ (<U1EA1>,<U1EA0>);(<U1EA3>,<U1EA2>);(<U1EA5>,<U1EA4>);(<U1EA7>,<U1EA6>);/
+ (<U1EA9>,<U1EA8>);(<U1EAB>,<U1EAA>);(<U1EAD>,<U1EAC>);(<U1EAF>,<U1EAE>);/
+ (<U1EB1>,<U1EB0>);(<U1EB3>,<U1EB2>);(<U1EB5>,<U1EB4>);(<U1EB7>,<U1EB6>);/
+ (<U1EB9>,<U1EB8>);(<U1EBB>,<U1EBA>);(<U1EBD>,<U1EBC>);(<U1EBF>,<U1EBE>);/
+ (<U1EC1>,<U1EC0>);(<U1EC3>,<U1EC2>);(<U1EC5>,<U1EC4>);(<U1EC7>,<U1EC6>);/
+ (<U1EC9>,<U1EC8>);(<U1ECB>,<U1ECA>);(<U1ECD>,<U1ECC>);(<U1ECF>,<U1ECE>);/
+ (<U1ED1>,<U1ED0>);(<U1ED3>,<U1ED2>);(<U1ED5>,<U1ED4>);(<U1ED7>,<U1ED6>);/
+ (<U1ED9>,<U1ED8>);(<U1EDB>,<U1EDA>);(<U1EDD>,<U1EDC>);(<U1EDF>,<U1EDE>);/
+ (<U1EE1>,<U1EE0>);(<U1EE3>,<U1EE2>);(<U1EE5>,<U1EE4>);(<U1EE7>,<U1EE6>);/
+ (<U1EE9>,<U1EE8>);(<U1EEB>,<U1EEA>);(<U1EED>,<U1EEC>);(<U1EEF>,<U1EEE>);/
+ (<U1EF1>,<U1EF0>);(<U1EF3>,<U1EF2>);(<U1EF5>,<U1EF4>);(<U1EF7>,<U1EF6>);/
+ (<U1EF9>,<U1EF8>);(<U1EFB>,<U1EFA>);(<U1EFD>,<U1EFC>);(<U1EFF>,<U1EFE>);/
+ (<U1F00>,<U1F08>);(<U1F01>,<U1F09>);(<U1F02>,<U1F0A>);(<U1F03>,<U1F0B>);/
+ (<U1F04>,<U1F0C>);(<U1F05>,<U1F0D>);(<U1F06>,<U1F0E>);(<U1F07>,<U1F0F>);/
+ (<U1F10>,<U1F18>);(<U1F11>,<U1F19>);(<U1F12>,<U1F1A>);(<U1F13>,<U1F1B>);/
+ (<U1F14>,<U1F1C>);(<U1F15>,<U1F1D>);(<U1F20>,<U1F28>);(<U1F21>,<U1F29>);/
+ (<U1F22>,<U1F2A>);(<U1F23>,<U1F2B>);(<U1F24>,<U1F2C>);(<U1F25>,<U1F2D>);/
+ (<U1F26>,<U1F2E>);(<U1F27>,<U1F2F>);(<U1F30>,<U1F38>);(<U1F31>,<U1F39>);/
+ (<U1F32>,<U1F3A>);(<U1F33>,<U1F3B>);(<U1F34>,<U1F3C>);(<U1F35>,<U1F3D>);/
+ (<U1F36>,<U1F3E>);(<U1F37>,<U1F3F>);(<U1F40>,<U1F48>);(<U1F41>,<U1F49>);/
+ (<U1F42>,<U1F4A>);(<U1F43>,<U1F4B>);(<U1F44>,<U1F4C>);(<U1F45>,<U1F4D>);/
+ (<U1F51>,<U1F59>);(<U1F53>,<U1F5B>);(<U1F55>,<U1F5D>);(<U1F57>,<U1F5F>);/
+ (<U1F60>,<U1F68>);(<U1F61>,<U1F69>);(<U1F62>,<U1F6A>);(<U1F63>,<U1F6B>);/
+ (<U1F64>,<U1F6C>);(<U1F65>,<U1F6D>);(<U1F66>,<U1F6E>);(<U1F67>,<U1F6F>);/
+ (<U1F70>,<U1FBA>);(<U1F71>,<U1FBB>);(<U1F72>,<U1FC8>);(<U1F73>,<U1FC9>);/
+ (<U1F74>,<U1FCA>);(<U1F75>,<U1FCB>);(<U1F76>,<U1FDA>);(<U1F77>,<U1FDB>);/
+ (<U1F78>,<U1FF8>);(<U1F79>,<U1FF9>);(<U1F7A>,<U1FEA>);(<U1F7B>,<U1FEB>);/
+ (<U1F7C>,<U1FFA>);(<U1F7D>,<U1FFB>);(<U1F80>,<U1F88>);(<U1F81>,<U1F89>);/
+ (<U1F82>,<U1F8A>);(<U1F83>,<U1F8B>);(<U1F84>,<U1F8C>);(<U1F85>,<U1F8D>);/
+ (<U1F86>,<U1F8E>);(<U1F87>,<U1F8F>);(<U1F90>,<U1F98>);(<U1F91>,<U1F99>);/
+ (<U1F92>,<U1F9A>);(<U1F93>,<U1F9B>);(<U1F94>,<U1F9C>);(<U1F95>,<U1F9D>);/
+ (<U1F96>,<U1F9E>);(<U1F97>,<U1F9F>);(<U1FA0>,<U1FA8>);(<U1FA1>,<U1FA9>);/
+ (<U1FA2>,<U1FAA>);(<U1FA3>,<U1FAB>);(<U1FA4>,<U1FAC>);(<U1FA5>,<U1FAD>);/
+ (<U1FA6>,<U1FAE>);(<U1FA7>,<U1FAF>);(<U1FB0>,<U1FB8>);(<U1FB1>,<U1FB9>);/
+ (<U1FB3>,<U1FBC>);(<U1FBE>,<U0399>);(<U1FC3>,<U1FCC>);(<U1FD0>,<U1FD8>);/
+ (<U1FD1>,<U1FD9>);(<U1FE0>,<U1FE8>);(<U1FE1>,<U1FE9>);(<U1FE5>,<U1FEC>);/
+ (<U1FF3>,<U1FFC>);(<U214E>,<U2132>);(<U2170>,<U2160>);(<U2171>,<U2161>);/
+ (<U2172>,<U2162>);(<U2173>,<U2163>);(<U2174>,<U2164>);(<U2175>,<U2165>);/
+ (<U2176>,<U2166>);(<U2177>,<U2167>);(<U2178>,<U2168>);(<U2179>,<U2169>);/
+ (<U217A>,<U216A>);(<U217B>,<U216B>);(<U217C>,<U216C>);(<U217D>,<U216D>);/
+ (<U217E>,<U216E>);(<U217F>,<U216F>);(<U2184>,<U2183>);(<U24D0>,<U24B6>);/
+ (<U24D1>,<U24B7>);(<U24D2>,<U24B8>);(<U24D3>,<U24B9>);(<U24D4>,<U24BA>);/
+ (<U24D5>,<U24BB>);(<U24D6>,<U24BC>);(<U24D7>,<U24BD>);(<U24D8>,<U24BE>);/
+ (<U24D9>,<U24BF>);(<U24DA>,<U24C0>);(<U24DB>,<U24C1>);(<U24DC>,<U24C2>);/
+ (<U24DD>,<U24C3>);(<U24DE>,<U24C4>);(<U24DF>,<U24C5>);(<U24E0>,<U24C6>);/
+ (<U24E1>,<U24C7>);(<U24E2>,<U24C8>);(<U24E3>,<U24C9>);(<U24E4>,<U24CA>);/
+ (<U24E5>,<U24CB>);(<U24E6>,<U24CC>);(<U24E7>,<U24CD>);(<U24E8>,<U24CE>);/
+ (<U24E9>,<U24CF>);(<U2C30>,<U2C00>);(<U2C31>,<U2C01>);(<U2C32>,<U2C02>);/
+ (<U2C33>,<U2C03>);(<U2C34>,<U2C04>);(<U2C35>,<U2C05>);(<U2C36>,<U2C06>);/
+ (<U2C37>,<U2C07>);(<U2C38>,<U2C08>);(<U2C39>,<U2C09>);(<U2C3A>,<U2C0A>);/
+ (<U2C3B>,<U2C0B>);(<U2C3C>,<U2C0C>);(<U2C3D>,<U2C0D>);(<U2C3E>,<U2C0E>);/
+ (<U2C3F>,<U2C0F>);(<U2C40>,<U2C10>);(<U2C41>,<U2C11>);(<U2C42>,<U2C12>);/
+ (<U2C43>,<U2C13>);(<U2C44>,<U2C14>);(<U2C45>,<U2C15>);(<U2C46>,<U2C16>);/
+ (<U2C47>,<U2C17>);(<U2C48>,<U2C18>);(<U2C49>,<U2C19>);(<U2C4A>,<U2C1A>);/
+ (<U2C4B>,<U2C1B>);(<U2C4C>,<U2C1C>);(<U2C4D>,<U2C1D>);(<U2C4E>,<U2C1E>);/
+ (<U2C4F>,<U2C1F>);(<U2C50>,<U2C20>);(<U2C51>,<U2C21>);(<U2C52>,<U2C22>);/
+ (<U2C53>,<U2C23>);(<U2C54>,<U2C24>);(<U2C55>,<U2C25>);(<U2C56>,<U2C26>);/
+ (<U2C57>,<U2C27>);(<U2C58>,<U2C28>);(<U2C59>,<U2C29>);(<U2C5A>,<U2C2A>);/
+ (<U2C5B>,<U2C2B>);(<U2C5C>,<U2C2C>);(<U2C5D>,<U2C2D>);(<U2C5E>,<U2C2E>);/
+ (<U2C5F>,<U2C2F>);(<U2C61>,<U2C60>);(<U2C65>,<U023A>);(<U2C66>,<U023E>);/
+ (<U2C68>,<U2C67>);(<U2C6A>,<U2C69>);(<U2C6C>,<U2C6B>);(<U2C73>,<U2C72>);/
+ (<U2C76>,<U2C75>);(<U2C81>,<U2C80>);(<U2C83>,<U2C82>);(<U2C85>,<U2C84>);/
+ (<U2C87>,<U2C86>);(<U2C89>,<U2C88>);(<U2C8B>,<U2C8A>);(<U2C8D>,<U2C8C>);/
+ (<U2C8F>,<U2C8E>);(<U2C91>,<U2C90>);(<U2C93>,<U2C92>);(<U2C95>,<U2C94>);/
+ (<U2C97>,<U2C96>);(<U2C99>,<U2C98>);(<U2C9B>,<U2C9A>);(<U2C9D>,<U2C9C>);/
+ (<U2C9F>,<U2C9E>);(<U2CA1>,<U2CA0>);(<U2CA3>,<U2CA2>);(<U2CA5>,<U2CA4>);/
+ (<U2CA7>,<U2CA6>);(<U2CA9>,<U2CA8>);(<U2CAB>,<U2CAA>);(<U2CAD>,<U2CAC>);/
+ (<U2CAF>,<U2CAE>);(<U2CB1>,<U2CB0>);(<U2CB3>,<U2CB2>);(<U2CB5>,<U2CB4>);/
+ (<U2CB7>,<U2CB6>);(<U2CB9>,<U2CB8>);(<U2CBB>,<U2CBA>);(<U2CBD>,<U2CBC>);/
+ (<U2CBF>,<U2CBE>);(<U2CC1>,<U2CC0>);(<U2CC3>,<U2CC2>);(<U2CC5>,<U2CC4>);/
+ (<U2CC7>,<U2CC6>);(<U2CC9>,<U2CC8>);(<U2CCB>,<U2CCA>);(<U2CCD>,<U2CCC>);/
+ (<U2CCF>,<U2CCE>);(<U2CD1>,<U2CD0>);(<U2CD3>,<U2CD2>);(<U2CD5>,<U2CD4>);/
+ (<U2CD7>,<U2CD6>);(<U2CD9>,<U2CD8>);(<U2CDB>,<U2CDA>);(<U2CDD>,<U2CDC>);/
+ (<U2CDF>,<U2CDE>);(<U2CE1>,<U2CE0>);(<U2CE3>,<U2CE2>);(<U2CEC>,<U2CEB>);/
+ (<U2CEE>,<U2CED>);(<U2CF3>,<U2CF2>);(<U2D00>,<U10A0>);(<U2D01>,<U10A1>);/
+ (<U2D02>,<U10A2>);(<U2D03>,<U10A3>);(<U2D04>,<U10A4>);(<U2D05>,<U10A5>);/
+ (<U2D06>,<U10A6>);(<U2D07>,<U10A7>);(<U2D08>,<U10A8>);(<U2D09>,<U10A9>);/
+ (<U2D0A>,<U10AA>);(<U2D0B>,<U10AB>);(<U2D0C>,<U10AC>);(<U2D0D>,<U10AD>);/
+ (<U2D0E>,<U10AE>);(<U2D0F>,<U10AF>);(<U2D10>,<U10B0>);(<U2D11>,<U10B1>);/
+ (<U2D12>,<U10B2>);(<U2D13>,<U10B3>);(<U2D14>,<U10B4>);(<U2D15>,<U10B5>);/
+ (<U2D16>,<U10B6>);(<U2D17>,<U10B7>);(<U2D18>,<U10B8>);(<U2D19>,<U10B9>);/
+ (<U2D1A>,<U10BA>);(<U2D1B>,<U10BB>);(<U2D1C>,<U10BC>);(<U2D1D>,<U10BD>);/
+ (<U2D1E>,<U10BE>);(<U2D1F>,<U10BF>);(<U2D20>,<U10C0>);(<U2D21>,<U10C1>);/
+ (<U2D22>,<U10C2>);(<U2D23>,<U10C3>);(<U2D24>,<U10C4>);(<U2D25>,<U10C5>);/
+ (<U2D27>,<U10C7>);(<U2D2D>,<U10CD>);(<UA641>,<UA640>);(<UA643>,<UA642>);/
+ (<UA645>,<UA644>);(<UA647>,<UA646>);(<UA649>,<UA648>);(<UA64B>,<UA64A>);/
+ (<UA64D>,<UA64C>);(<UA64F>,<UA64E>);(<UA651>,<UA650>);(<UA653>,<UA652>);/
+ (<UA655>,<UA654>);(<UA657>,<UA656>);(<UA659>,<UA658>);(<UA65B>,<UA65A>);/
+ (<UA65D>,<UA65C>);(<UA65F>,<UA65E>);(<UA661>,<UA660>);(<UA663>,<UA662>);/
+ (<UA665>,<UA664>);(<UA667>,<UA666>);(<UA669>,<UA668>);(<UA66B>,<UA66A>);/
+ (<UA66D>,<UA66C>);(<UA681>,<UA680>);(<UA683>,<UA682>);(<UA685>,<UA684>);/
+ (<UA687>,<UA686>);(<UA689>,<UA688>);(<UA68B>,<UA68A>);(<UA68D>,<UA68C>);/
+ (<UA68F>,<UA68E>);(<UA691>,<UA690>);(<UA693>,<UA692>);(<UA695>,<UA694>);/
+ (<UA697>,<UA696>);(<UA699>,<UA698>);(<UA69B>,<UA69A>);(<UA723>,<UA722>);/
+ (<UA725>,<UA724>);(<UA727>,<UA726>);(<UA729>,<UA728>);(<UA72B>,<UA72A>);/
+ (<UA72D>,<UA72C>);(<UA72F>,<UA72E>);(<UA733>,<UA732>);(<UA735>,<UA734>);/
+ (<UA737>,<UA736>);(<UA739>,<UA738>);(<UA73B>,<UA73A>);(<UA73D>,<UA73C>);/
+ (<UA73F>,<UA73E>);(<UA741>,<UA740>);(<UA743>,<UA742>);(<UA745>,<UA744>);/
+ (<UA747>,<UA746>);(<UA749>,<UA748>);(<UA74B>,<UA74A>);(<UA74D>,<UA74C>);/
+ (<UA74F>,<UA74E>);(<UA751>,<UA750>);(<UA753>,<UA752>);(<UA755>,<UA754>);/
+ (<UA757>,<UA756>);(<UA759>,<UA758>);(<UA75B>,<UA75A>);(<UA75D>,<UA75C>);/
+ (<UA75F>,<UA75E>);(<UA761>,<UA760>);(<UA763>,<UA762>);(<UA765>,<UA764>);/
+ (<UA767>,<UA766>);(<UA769>,<UA768>);(<UA76B>,<UA76A>);(<UA76D>,<UA76C>);/
+ (<UA76F>,<UA76E>);(<UA77A>,<UA779>);(<UA77C>,<UA77B>);(<UA77F>,<UA77E>);/
+ (<UA781>,<UA780>);(<UA783>,<UA782>);(<UA785>,<UA784>);(<UA787>,<UA786>);/
+ (<UA78C>,<UA78B>);(<UA791>,<UA790>);(<UA793>,<UA792>);(<UA794>,<UA7C4>);/
+ (<UA797>,<UA796>);(<UA799>,<UA798>);(<UA79B>,<UA79A>);(<UA79D>,<UA79C>);/
+ (<UA79F>,<UA79E>);(<UA7A1>,<UA7A0>);(<UA7A3>,<UA7A2>);(<UA7A5>,<UA7A4>);/
+ (<UA7A7>,<UA7A6>);(<UA7A9>,<UA7A8>);(<UA7B5>,<UA7B4>);(<UA7B7>,<UA7B6>);/
+ (<UA7B9>,<UA7B8>);(<UA7BB>,<UA7BA>);(<UA7BD>,<UA7BC>);(<UA7BF>,<UA7BE>);/
+ (<UA7C1>,<UA7C0>);(<UA7C3>,<UA7C2>);(<UA7C8>,<UA7C7>);(<UA7CA>,<UA7C9>);/
+ (<UA7CD>,<UA7CC>);(<UA7D1>,<UA7D0>);(<UA7D7>,<UA7D6>);(<UA7D9>,<UA7D8>);/
+ (<UA7DB>,<UA7DA>);(<UA7F6>,<UA7F5>);(<UAB53>,<UA7B3>);(<UAB70>,<U13A0>);/
+ (<UAB71>,<U13A1>);(<UAB72>,<U13A2>);(<UAB73>,<U13A3>);(<UAB74>,<U13A4>);/
+ (<UAB75>,<U13A5>);(<UAB76>,<U13A6>);(<UAB77>,<U13A7>);(<UAB78>,<U13A8>);/
+ (<UAB79>,<U13A9>);(<UAB7A>,<U13AA>);(<UAB7B>,<U13AB>);(<UAB7C>,<U13AC>);/
+ (<UAB7D>,<U13AD>);(<UAB7E>,<U13AE>);(<UAB7F>,<U13AF>);(<UAB80>,<U13B0>);/
+ (<UAB81>,<U13B1>);(<UAB82>,<U13B2>);(<UAB83>,<U13B3>);(<UAB84>,<U13B4>);/
+ (<UAB85>,<U13B5>);(<UAB86>,<U13B6>);(<UAB87>,<U13B7>);(<UAB88>,<U13B8>);/
+ (<UAB89>,<U13B9>);(<UAB8A>,<U13BA>);(<UAB8B>,<U13BB>);(<UAB8C>,<U13BC>);/
+ (<UAB8D>,<U13BD>);(<UAB8E>,<U13BE>);(<UAB8F>,<U13BF>);(<UAB90>,<U13C0>);/
+ (<UAB91>,<U13C1>);(<UAB92>,<U13C2>);(<UAB93>,<U13C3>);(<UAB94>,<U13C4>);/
+ (<UAB95>,<U13C5>);(<UAB96>,<U13C6>);(<UAB97>,<U13C7>);(<UAB98>,<U13C8>);/
+ (<UAB99>,<U13C9>);(<UAB9A>,<U13CA>);(<UAB9B>,<U13CB>);(<UAB9C>,<U13CC>);/
+ (<UAB9D>,<U13CD>);(<UAB9E>,<U13CE>);(<UAB9F>,<U13CF>);(<UABA0>,<U13D0>);/
+ (<UABA1>,<U13D1>);(<UABA2>,<U13D2>);(<UABA3>,<U13D3>);(<UABA4>,<U13D4>);/
+ (<UABA5>,<U13D5>);(<UABA6>,<U13D6>);(<UABA7>,<U13D7>);(<UABA8>,<U13D8>);/
+ (<UABA9>,<U13D9>);(<UABAA>,<U13DA>);(<UABAB>,<U13DB>);(<UABAC>,<U13DC>);/
+ (<UABAD>,<U13DD>);(<UABAE>,<U13DE>);(<UABAF>,<U13DF>);(<UABB0>,<U13E0>);/
+ (<UABB1>,<U13E1>);(<UABB2>,<U13E2>);(<UABB3>,<U13E3>);(<UABB4>,<U13E4>);/
+ (<UABB5>,<U13E5>);(<UABB6>,<U13E6>);(<UABB7>,<U13E7>);(<UABB8>,<U13E8>);/
+ (<UABB9>,<U13E9>);(<UABBA>,<U13EA>);(<UABBB>,<U13EB>);(<UABBC>,<U13EC>);/
+ (<UABBD>,<U13ED>);(<UABBE>,<U13EE>);(<UABBF>,<U13EF>);(<UFF41>,<UFF21>);/
+ (<UFF42>,<UFF22>);(<UFF43>,<UFF23>);(<UFF44>,<UFF24>);(<UFF45>,<UFF25>);/
+ (<UFF46>,<UFF26>);(<UFF47>,<UFF27>);(<UFF48>,<UFF28>);(<UFF49>,<UFF29>);/
+ (<UFF4A>,<UFF2A>);(<UFF4B>,<UFF2B>);(<UFF4C>,<UFF2C>);(<UFF4D>,<UFF2D>);/
+ (<UFF4E>,<UFF2E>);(<UFF4F>,<UFF2F>);(<UFF50>,<UFF30>);(<UFF51>,<UFF31>);/
+ (<UFF52>,<UFF32>);(<UFF53>,<UFF33>);(<UFF54>,<UFF34>);(<UFF55>,<UFF35>);/
+ (<UFF56>,<UFF36>);(<UFF57>,<UFF37>);(<UFF58>,<UFF38>);(<UFF59>,<UFF39>);/
+ (<UFF5A>,<UFF3A>);(<U00010428>,<U00010400>);(<U00010429>,<U00010401>);/
(<U0001042A>,<U00010402>);(<U0001042B>,<U00010403>);/
(<U0001042C>,<U00010404>);(<U0001042D>,<U00010405>);/
(<U0001042E>,<U00010406>);(<U0001042F>,<U00010407>);/
@@ -2496,6 +2565,17 @@ map "totitle"; /
(<U00010CED>,<U00010CAD>);(<U00010CEE>,<U00010CAE>);/
(<U00010CEF>,<U00010CAF>);(<U00010CF0>,<U00010CB0>);/
(<U00010CF1>,<U00010CB1>);(<U00010CF2>,<U00010CB2>);/
+ (<U00010D70>,<U00010D50>);(<U00010D71>,<U00010D51>);/
+ (<U00010D72>,<U00010D52>);(<U00010D73>,<U00010D53>);/
+ (<U00010D74>,<U00010D54>);(<U00010D75>,<U00010D55>);/
+ (<U00010D76>,<U00010D56>);(<U00010D77>,<U00010D57>);/
+ (<U00010D78>,<U00010D58>);(<U00010D79>,<U00010D59>);/
+ (<U00010D7A>,<U00010D5A>);(<U00010D7B>,<U00010D5B>);/
+ (<U00010D7C>,<U00010D5C>);(<U00010D7D>,<U00010D5D>);/
+ (<U00010D7E>,<U00010D5E>);(<U00010D7F>,<U00010D5F>);/
+ (<U00010D80>,<U00010D60>);(<U00010D81>,<U00010D61>);/
+ (<U00010D82>,<U00010D62>);(<U00010D83>,<U00010D63>);/
+ (<U00010D84>,<U00010D64>);(<U00010D85>,<U00010D65>);/
(<U000118C0>,<U000118A0>);(<U000118C1>,<U000118A1>);/
(<U000118C2>,<U000118A2>);(<U000118C3>,<U000118A3>);/
(<U000118C4>,<U000118A4>);(<U000118C5>,<U000118A5>);/
@@ -2555,7 +2635,7 @@ class "combining"; /
<U06E7>..<U06E8>;<U06EA>..<U06ED>;<U0711>;<U0730>..<U074A>;/
<U07A6>..<U07B0>;<U07EB>..<U07F3>;<U07FD>;<U0816>..<U0819>;/
<U081B>..<U0823>;<U0825>..<U0827>;<U0829>..<U082D>;<U0859>..<U085B>;/
- <U0898>..<U089F>;<U08CA>..<U08E1>;<U08E3>..<U0903>;<U093A>..<U093C>;/
+ <U0897>..<U089F>;<U08CA>..<U08E1>;<U08E3>..<U0903>;<U093A>..<U093C>;/
<U093E>..<U094F>;<U0951>..<U0957>;<U0962>..<U0963>;<U0981>..<U0983>;/
<U09BC>;<U09BE>..<U09C4>;<U09C7>..<U09C8>;<U09CB>..<U09CD>;<U09D7>;/
<U09E2>..<U09E3>;<U09FE>;<U0A01>..<U0A03>;<U0A3C>;<U0A3E>..<U0A42>;/
@@ -2597,21 +2677,24 @@ class "combining"; /
<U00010376>..<U0001037A>;<U00010A01>..<U00010A03>;/
<U00010A05>..<U00010A06>;<U00010A0C>..<U00010A0F>;/
<U00010A38>..<U00010A3A>;<U00010A3F>;<U00010AE5>..<U00010AE6>;/
- <U00010D24>..<U00010D27>;<U00010EAB>..<U00010EAC>;/
- <U00010EFD>..<U00010EFF>;<U00010F46>..<U00010F50>;/
- <U00010F82>..<U00010F85>;<U00011000>..<U00011002>;/
- <U00011038>..<U00011046>;<U00011070>;<U00011073>..<U00011074>;/
- <U0001107F>..<U00011082>;<U000110B0>..<U000110BA>;<U000110C2>;/
- <U00011100>..<U00011102>;<U00011127>..<U00011134>;/
- <U00011145>..<U00011146>;<U00011173>;<U00011180>..<U00011182>;/
- <U000111B3>..<U000111C0>;<U000111C9>..<U000111CC>;/
- <U000111CE>..<U000111CF>;<U0001122C>..<U00011237>;<U0001123E>;/
- <U00011241>;<U000112DF>..<U000112EA>;<U00011300>..<U00011303>;/
+ <U00010D24>..<U00010D27>;<U00010D69>..<U00010D6D>;/
+ <U00010EAB>..<U00010EAC>;<U00010EFC>..<U00010EFF>;/
+ <U00010F46>..<U00010F50>;<U00010F82>..<U00010F85>;/
+ <U00011000>..<U00011002>;<U00011038>..<U00011046>;<U00011070>;/
+ <U00011073>..<U00011074>;<U0001107F>..<U00011082>;/
+ <U000110B0>..<U000110BA>;<U000110C2>;<U00011100>..<U00011102>;/
+ <U00011127>..<U00011134>;<U00011145>..<U00011146>;<U00011173>;/
+ <U00011180>..<U00011182>;<U000111B3>..<U000111C0>;/
+ <U000111C9>..<U000111CC>;<U000111CE>..<U000111CF>;/
+ <U0001122C>..<U00011237>;<U0001123E>;<U00011241>;/
+ <U000112DF>..<U000112EA>;<U00011300>..<U00011303>;/
<U0001133B>..<U0001133C>;<U0001133E>..<U00011344>;/
<U00011347>..<U00011348>;<U0001134B>..<U0001134D>;<U00011357>;/
<U00011362>..<U00011363>;<U00011366>..<U0001136C>;/
- <U00011370>..<U00011374>;<U00011435>..<U00011446>;<U0001145E>;/
- <U000114B0>..<U000114C3>;<U000115AF>..<U000115B5>;/
+ <U00011370>..<U00011374>;<U000113B8>..<U000113C0>;<U000113C2>;/
+ <U000113C5>;<U000113C7>..<U000113CA>;<U000113CC>..<U000113D0>;/
+ <U000113D2>;<U000113E1>..<U000113E2>;<U00011435>..<U00011446>;/
+ <U0001145E>;<U000114B0>..<U000114C3>;<U000115AF>..<U000115B5>;/
<U000115B8>..<U000115C0>;<U000115DC>..<U000115DD>;/
<U00011630>..<U00011640>;<U000116AB>..<U000116B7>;/
<U0001171D>..<U0001172B>;<U0001182C>..<U0001183A>;/
@@ -2627,7 +2710,8 @@ class "combining"; /
<U00011D8A>..<U00011D8E>;<U00011D90>..<U00011D91>;/
<U00011D93>..<U00011D97>;<U00011EF3>..<U00011EF6>;/
<U00011F00>..<U00011F01>;<U00011F03>;<U00011F34>..<U00011F3A>;/
- <U00011F3E>..<U00011F42>;<U00013440>;<U00013447>..<U00013455>;/
+ <U00011F3E>..<U00011F42>;<U00011F5A>;<U00013440>;/
+ <U00013447>..<U00013455>;<U0001611E>..<U0001612F>;/
<U00016AF0>..<U00016AF4>;<U00016B30>..<U00016B36>;<U00016F4F>;/
<U00016F51>..<U00016F87>;<U00016F8F>..<U00016F92>;<U00016FE4>;/
<U00016FF0>..<U00016FF1>;<U0001BC9D>..<U0001BC9E>;/
@@ -2641,8 +2725,8 @@ class "combining"; /
<U0001E01B>..<U0001E021>;<U0001E023>..<U0001E024>;/
<U0001E026>..<U0001E02A>;<U0001E08F>;<U0001E130>..<U0001E136>;/
<U0001E2AE>;<U0001E2EC>..<U0001E2EF>;<U0001E4EC>..<U0001E4EF>;/
- <U0001E8D0>..<U0001E8D6>;<U0001E944>..<U0001E94A>;/
- <U000E0100>..<U000E01EF>
+ <U0001E5EE>..<U0001E5EF>;<U0001E8D0>..<U0001E8D6>;/
+ <U0001E944>..<U0001E94A>;<U000E0100>..<U000E01EF>
% The "combining_level3" class reflects ISO/IEC 10646-1 annex B.2
% That is, combining characters of level 3.
@@ -2684,7 +2768,7 @@ class "combining_level3"; /
<UAA4C>..<UAA4D>;<UAA7B>..<UAA7D>;<UAAEB>..<UAAEF>;<UAAF5>..<UAAF6>;/
<UABE3>..<UABEA>;<UABEC>..<UABED>;<UFB1E>;<UFE00>..<UFE0F>;/
<U00010A01>..<U00010A03>;<U00010A05>..<U00010A06>;<U00010A0C>;/
- <U00010A0E>;<U00010A39>;<U00010A3F>;<U00011000>..<U00011002>;/
+ <U00010A0E>;<U00010A39>;<U00010A3F>;<U00010EFC>;<U00011000>..<U00011002>;/
<U00011038>..<U00011046>;<U00011070>;<U00011073>..<U00011074>;/
<U0001107F>..<U00011082>;<U000110B0>..<U000110BA>;<U000110C2>;/
<U00011127>..<U00011134>;<U00011145>..<U00011146>;<U00011173>;/
@@ -2694,7 +2778,9 @@ class "combining_level3"; /
<U000112DF>..<U000112EA>;<U00011300>..<U00011303>;/
<U0001133B>..<U0001133C>;<U0001133E>..<U00011344>;/
<U00011347>..<U00011348>;<U0001134B>..<U0001134D>;<U00011357>;/
- <U00011362>..<U00011363>;<U00011435>..<U00011446>;/
+ <U00011362>..<U00011363>;<U000113B8>..<U000113C0>;<U000113C2>;/
+ <U000113C5>;<U000113C7>..<U000113CA>;<U000113CC>..<U000113D0>;/
+ <U000113D2>;<U000113E1>..<U000113E2>;<U00011435>..<U00011446>;/
<U000114B0>..<U000114C3>;<U000115AF>..<U000115B5>;/
<U000115B8>..<U000115C0>;<U000115DC>..<U000115DD>;/
<U00011630>..<U00011640>;<U000116AB>..<U000116B7>;/
@@ -2711,7 +2797,8 @@ class "combining_level3"; /
<U00011D8A>..<U00011D8E>;<U00011D90>..<U00011D91>;/
<U00011D93>..<U00011D97>;<U00011EF3>..<U00011EF6>;/
<U00011F00>..<U00011F01>;<U00011F03>;<U00011F34>..<U00011F3A>;/
- <U00011F3E>..<U00011F42>;<U00013440>;<U00013447>..<U00013455>;/
+ <U00011F3E>..<U00011F42>;<U00011F5A>;<U00013440>;/
+ <U00013447>..<U00013455>;<U0001611E>..<U0001612F>;/
<U00016AF0>..<U00016AF4>;<U00016F4F>;<U00016F51>..<U00016F87>;/
<U00016F8F>..<U00016F92>;<U00016FE4>;<U00016FF0>..<U00016FF1>;/
<U0001BC9D>..<U0001BC9E>;<U0001CF00>..<U0001CF2D>;/
diff --git a/localedata/locales/translit_circle b/localedata/locales/translit_circle
index 20fd571..308cf62 100644
--- a/localedata/locales/translit_circle
+++ b/localedata/locales/translit_circle
@@ -9,7 +9,7 @@ comment_char %
% otherwise be governed by that license.
% Transliterations of encircled characters.
-% Generated automatically from UnicodeData.txt by gen_translit_circle.py on 2023-09-15 for Unicode 15.1.0.
+% Generated automatically from UnicodeData.txt by gen_translit_circle.py on 2024-09-12 for Unicode 16.0.0.
LC_CTYPE
diff --git a/localedata/locales/translit_cjk_compat b/localedata/locales/translit_cjk_compat
index 7951e0c..de1d39d 100644
--- a/localedata/locales/translit_cjk_compat
+++ b/localedata/locales/translit_cjk_compat
@@ -9,7 +9,7 @@ comment_char %
% otherwise be governed by that license.
% Transliterations of CJK compatibility characters.
-% Generated automatically from UnicodeData.txt by gen_translit_cjk_compat.py on 2023-09-15 for Unicode 15.1.0.
+% Generated automatically from UnicodeData.txt by gen_translit_cjk_compat.py on 2024-09-12 for Unicode 16.0.0.
LC_CTYPE
diff --git a/localedata/locales/translit_combining b/localedata/locales/translit_combining
index ce2f19e..c0de4bf 100644
--- a/localedata/locales/translit_combining
+++ b/localedata/locales/translit_combining
@@ -10,7 +10,7 @@ comment_char %
% Transliterations that remove all combining characters (accents,
% pronounciation marks, etc.).
-% Generated automatically from UnicodeData.txt by gen_translit_combining.py on 2023-09-15 for Unicode 15.1.0.
+% Generated automatically from UnicodeData.txt by gen_translit_combining.py on 2024-09-12 for Unicode 16.0.0.
LC_CTYPE
@@ -446,6 +446,8 @@ translit_start
<U06EC> ""
% ARABIC SMALL LOW MEEM
<U06ED> ""
+% ARABIC PEPET
+<U0897> ""
% ARABIC SMALL HIGH WORD AL-JUZ
<U0898> ""
% ARABIC SMALL LOW WORD ISHMAAM
@@ -878,10 +880,22 @@ translit_start
<U00010D26> ""
% HANIFI ROHINGYA SIGN TASSI
<U00010D27> ""
+% GARAY VOWEL SIGN E
+<U00010D69> ""
+% GARAY CONSONANT GEMINATION MARK
+<U00010D6A> ""
+% GARAY COMBINING DOT ABOVE
+<U00010D6B> ""
+% GARAY COMBINING DOUBLE DOT ABOVE
+<U00010D6C> ""
+% GARAY CONSONANT NASALIZATION MARK
+<U00010D6D> ""
% YEZIDI COMBINING HAMZA MARK
<U00010EAB> ""
% YEZIDI COMBINING MADDA MARK
<U00010EAC> ""
+% ARABIC COMBINING ALEF OVERLAY
+<U00010EFC> ""
% ARABIC SMALL LOW WORD SAKTA
<U00010EFD> ""
% ARABIC SMALL LOW WORD QASR
@@ -920,6 +934,48 @@ translit_start
<U00010F85> ""
% COMBINING BINDU BELOW
<U0001133B> ""
+% TULU-TIGALARI VOWEL SIGN AA
+<U000113B8> ""
+% TULU-TIGALARI VOWEL SIGN I
+<U000113B9> ""
+% TULU-TIGALARI VOWEL SIGN II
+<U000113BA> ""
+% TULU-TIGALARI VOWEL SIGN U
+<U000113BB> ""
+% TULU-TIGALARI VOWEL SIGN UU
+<U000113BC> ""
+% TULU-TIGALARI VOWEL SIGN VOCALIC R
+<U000113BD> ""
+% TULU-TIGALARI VOWEL SIGN VOCALIC RR
+<U000113BE> ""
+% TULU-TIGALARI VOWEL SIGN VOCALIC L
+<U000113BF> ""
+% TULU-TIGALARI VOWEL SIGN VOCALIC LL
+<U000113C0> ""
+% TULU-TIGALARI VOWEL SIGN EE
+<U000113C2> ""
+% TULU-TIGALARI VOWEL SIGN AI
+<U000113C5> ""
+% TULU-TIGALARI VOWEL SIGN OO
+<U000113C7> ""
+% TULU-TIGALARI VOWEL SIGN AU
+<U000113C8> ""
+% TULU-TIGALARI AU LENGTH MARK
+<U000113C9> ""
+% TULU-TIGALARI SIGN CANDRA ANUNASIKA
+<U000113CA> ""
+% TULU-TIGALARI SIGN ANUSVARA
+<U000113CC> ""
+% TULU-TIGALARI SIGN VISARGA
+<U000113CD> ""
+% TULU-TIGALARI SIGN VIRAMA
+<U000113CE> ""
+% TULU-TIGALARI SIGN LOOPED VIRAMA
+<U000113CF> ""
+% TULU-TIGALARI CONJOINER
+<U000113D0> ""
+% TULU-TIGALARI GEMINATION MARK
+<U000113D2> ""
% NEWA VOWEL SIGN AA
<U00011435> ""
% NEWA VOWEL SIGN I
@@ -1346,6 +1402,8 @@ translit_start
<U00011F41> ""
% KAWI CONJOINER
<U00011F42> ""
+% KAWI SIGN NUKTA
+<U00011F5A> ""
% EGYPTIAN HIEROGLYPH MIRROR HORIZONTALLY
<U00013440> ""
% EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP START
@@ -1378,6 +1436,42 @@ translit_start
<U00013454> ""
% EGYPTIAN HIEROGLYPH MODIFIER DAMAGED
<U00013455> ""
+% GURUNG KHEMA VOWEL SIGN AA
+<U0001611E> ""
+% GURUNG KHEMA VOWEL SIGN I
+<U0001611F> ""
+% GURUNG KHEMA VOWEL SIGN II
+<U00016120> ""
+% GURUNG KHEMA VOWEL SIGN U
+<U00016121> ""
+% GURUNG KHEMA VOWEL SIGN UU
+<U00016122> ""
+% GURUNG KHEMA VOWEL SIGN E
+<U00016123> ""
+% GURUNG KHEMA VOWEL SIGN EE
+<U00016124> ""
+% GURUNG KHEMA VOWEL SIGN AI
+<U00016125> ""
+% GURUNG KHEMA VOWEL SIGN O
+<U00016126> ""
+% GURUNG KHEMA VOWEL SIGN OO
+<U00016127> ""
+% GURUNG KHEMA VOWEL SIGN AU
+<U00016128> ""
+% GURUNG KHEMA VOWEL LENGTH MARK
+<U00016129> ""
+% GURUNG KHEMA CONSONANT SIGN MEDIAL YA
+<U0001612A> ""
+% GURUNG KHEMA CONSONANT SIGN MEDIAL VA
+<U0001612B> ""
+% GURUNG KHEMA CONSONANT SIGN MEDIAL HA
+<U0001612C> ""
+% GURUNG KHEMA SIGN ANUSVARA
+<U0001612D> ""
+% GURUNG KHEMA CONSONANT SIGN MEDIAL RA
+<U0001612E> ""
+% GURUNG KHEMA SIGN THOLHOMA
+<U0001612F> ""
% KHITAN SMALL SCRIPT FILLER
<U00016FE4> ""
% VIETNAMESE ALTERNATE READING MARK CA
@@ -1636,6 +1730,10 @@ translit_start
<U0001E4EE> ""
% NAG MUNDARI SIGN SUTUH
<U0001E4EF> ""
+% OL ONAL SIGN MU
+<U0001E5EE> ""
+% OL ONAL SIGN IKIR
+<U0001E5EF> ""
% ADLAM ALIF LENGTHENER
<U0001E944> ""
% ADLAM VOWEL LENGTHENER
@@ -3705,6 +3803,24 @@ translit_start
<UFB4D> <U05DB>
% HEBREW LETTER PE WITH RAFE
<UFB4E> <U05E4>
+% TODHRI LETTER EI
+<U000105C9> <U000105D2>
+% TODHRI LETTER U
+<U000105E4> <U000105DA>
+% TULU-TIGALARI LETTER II
+<U00011383> <U00011382>
+% TULU-TIGALARI LETTER UU
+<U00011385> <U00011384>
+% TULU-TIGALARI LETTER AI
+<U0001138E> <U0001138B>
+% TULU-TIGALARI LETTER AU
+<U00011391> <U00011390>
+% KIRAT RAI VOWEL SIGN AI
+<U00016D68> "<U00016D67><U00016D67>"
+% KIRAT RAI VOWEL SIGN O
+<U00016D69> "<U00016D63><U00016D67>"
+% KIRAT RAI VOWEL SIGN AU
+<U00016D6A> "<U00016D63><U00016D67><U00016D67>"
translit_end
diff --git a/localedata/locales/translit_compat b/localedata/locales/translit_compat
index 7a214b2..dd36388 100644
--- a/localedata/locales/translit_compat
+++ b/localedata/locales/translit_compat
@@ -9,7 +9,7 @@ comment_char %
% otherwise be governed by that license.
% Transliterations of compatibility characters and ligatures.
-% Generated automatically from UnicodeData.txt by gen_translit_compat.py on 2023-09-15 for Unicode 15.1.0.
+% Generated automatically from UnicodeData.txt by gen_translit_compat.py on 2024-09-12 for Unicode 16.0.0.
LC_CTYPE
diff --git a/localedata/locales/translit_font b/localedata/locales/translit_font
index a977ae1..dc45eb7 100644
--- a/localedata/locales/translit_font
+++ b/localedata/locales/translit_font
@@ -9,7 +9,7 @@ comment_char %
% otherwise be governed by that license.
% Transliterations of font equivalents.
-% Generated automatically from UnicodeData.txt by gen_translit_font.py on 2023-09-15 for Unicode 15.1.0.
+% Generated automatically from UnicodeData.txt by gen_translit_font.py on 2024-09-12 for Unicode 16.0.0.
LC_CTYPE
@@ -62,6 +62,42 @@ translit_start
<UFB27> <U05E8> % HEBREW LETTER WIDE RESH
<UFB28> <U05EA> % HEBREW LETTER WIDE TAV
<UFB29> <U002B> % HEBREW LETTER ALTERNATIVE PLUS SIGN
+<U0001CCD6> <U0041> % OUTLINED LATIN CAPITAL LETTER A
+<U0001CCD7> <U0042> % OUTLINED LATIN CAPITAL LETTER B
+<U0001CCD8> <U0043> % OUTLINED LATIN CAPITAL LETTER C
+<U0001CCD9> <U0044> % OUTLINED LATIN CAPITAL LETTER D
+<U0001CCDA> <U0045> % OUTLINED LATIN CAPITAL LETTER E
+<U0001CCDB> <U0046> % OUTLINED LATIN CAPITAL LETTER F
+<U0001CCDC> <U0047> % OUTLINED LATIN CAPITAL LETTER G
+<U0001CCDD> <U0048> % OUTLINED LATIN CAPITAL LETTER H
+<U0001CCDE> <U0049> % OUTLINED LATIN CAPITAL LETTER I
+<U0001CCDF> <U004A> % OUTLINED LATIN CAPITAL LETTER J
+<U0001CCE0> <U004B> % OUTLINED LATIN CAPITAL LETTER K
+<U0001CCE1> <U004C> % OUTLINED LATIN CAPITAL LETTER L
+<U0001CCE2> <U004D> % OUTLINED LATIN CAPITAL LETTER M
+<U0001CCE3> <U004E> % OUTLINED LATIN CAPITAL LETTER N
+<U0001CCE4> <U004F> % OUTLINED LATIN CAPITAL LETTER O
+<U0001CCE5> <U0050> % OUTLINED LATIN CAPITAL LETTER P
+<U0001CCE6> <U0051> % OUTLINED LATIN CAPITAL LETTER Q
+<U0001CCE7> <U0052> % OUTLINED LATIN CAPITAL LETTER R
+<U0001CCE8> <U0053> % OUTLINED LATIN CAPITAL LETTER S
+<U0001CCE9> <U0054> % OUTLINED LATIN CAPITAL LETTER T
+<U0001CCEA> <U0055> % OUTLINED LATIN CAPITAL LETTER U
+<U0001CCEB> <U0056> % OUTLINED LATIN CAPITAL LETTER V
+<U0001CCEC> <U0057> % OUTLINED LATIN CAPITAL LETTER W
+<U0001CCED> <U0058> % OUTLINED LATIN CAPITAL LETTER X
+<U0001CCEE> <U0059> % OUTLINED LATIN CAPITAL LETTER Y
+<U0001CCEF> <U005A> % OUTLINED LATIN CAPITAL LETTER Z
+<U0001CCF0> <U0030> % OUTLINED DIGIT ZERO
+<U0001CCF1> <U0031> % OUTLINED DIGIT ONE
+<U0001CCF2> <U0032> % OUTLINED DIGIT TWO
+<U0001CCF3> <U0033> % OUTLINED DIGIT THREE
+<U0001CCF4> <U0034> % OUTLINED DIGIT FOUR
+<U0001CCF5> <U0035> % OUTLINED DIGIT FIVE
+<U0001CCF6> <U0036> % OUTLINED DIGIT SIX
+<U0001CCF7> <U0037> % OUTLINED DIGIT SEVEN
+<U0001CCF8> <U0038> % OUTLINED DIGIT EIGHT
+<U0001CCF9> <U0039> % OUTLINED DIGIT NINE
<U0001D400> <U0041> % MATHEMATICAL BOLD CAPITAL A
<U0001D401> <U0042> % MATHEMATICAL BOLD CAPITAL B
<U0001D402> <U0043> % MATHEMATICAL BOLD CAPITAL C
diff --git a/localedata/locales/translit_fraction b/localedata/locales/translit_fraction
index 115273c..06651c1 100644
--- a/localedata/locales/translit_fraction
+++ b/localedata/locales/translit_fraction
@@ -9,7 +9,7 @@ comment_char %
% otherwise be governed by that license.
% Transliterations of fractions.
-% Generated automatically from UnicodeData.txt by gen_translit_fraction.py on 2023-09-15 for Unicode 15.1.0.
+% Generated automatically from UnicodeData.txt by gen_translit_fraction.py on 2024-09-12 for Unicode 16.0.0.
% The replacements have been surrounded with spaces, because fractions are
% often preceded by a decimal number and followed by a unit or a math symbol.
diff --git a/localedata/tst-localedef-hardlinks.c b/localedata/tst-localedef-hardlinks.c
index e88215a..23927b4 100644
--- a/localedata/tst-localedef-hardlinks.c
+++ b/localedata/tst-localedef-hardlinks.c
@@ -62,7 +62,7 @@ check_link (struct test_data step)
char *output;
output = xasprintf ("%s/%s", support_complocaledir_prefix, step.output);
- xstat (output, &locale);
+ xstat64 (output, &locale);
free (output);
TEST_COMPARE (locale.st_nlink, step.st_nlink);
}
diff --git a/localedata/unicode-gen/DerivedCoreProperties.txt b/localedata/unicode-gen/DerivedCoreProperties.txt
index 220c556..1075638 100644
--- a/localedata/unicode-gen/DerivedCoreProperties.txt
+++ b/localedata/unicode-gen/DerivedCoreProperties.txt
@@ -1,8 +1,8 @@
-# DerivedCoreProperties-15.1.0.txt
-# Date: 2023-08-07, 15:21:24 GMT
-# © 2023 Unicode®, Inc.
+# DerivedCoreProperties-16.0.0.txt
+# Date: 2024-05-31, 18:09:32 GMT
+# © 2024 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
+# For terms of use and license, see https://www.unicode.org/terms_of_use.html
#
# Unicode Character Database
# For documentation, see https://www.unicode.org/reports/tr44/
@@ -177,6 +177,7 @@ FF5C ; Math # Sm FULLWIDTH VERTICAL LINE
FF5E ; Math # Sm FULLWIDTH TILDE
FFE2 ; Math # Sm FULLWIDTH NOT SIGN
FFE9..FFEC ; Math # Sm [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS ARROW
+10D8E..10D8F ; Math # Sm [2] GARAY PLUS SIGN..GARAY MINUS SIGN
1D400..1D454 ; Math # L& [85] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL ITALIC SMALL G
1D456..1D49C ; Math # L& [71] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL SCRIPT CAPITAL A
1D49E..1D49F ; Math # L& [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D
@@ -253,7 +254,7 @@ FFE9..FFEC ; Math # Sm [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS A
1EEAB..1EEBB ; Math # Lo [17] ARABIC MATHEMATICAL DOUBLE-STRUCK LAM..ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN
1EEF0..1EEF1 ; Math # Sm [2] ARABIC MATHEMATICAL OPERATOR MEEM WITH HAH WITH TATWEEL..ARABIC MATHEMATICAL OPERATOR HAH WITH DAL
-# Total code points: 2310
+# Total code points: 2312
# ================================================
@@ -280,6 +281,7 @@ FFE9..FFEC ; Math # Sm [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS A
02EC ; Alphabetic # Lm MODIFIER LETTER VOICING
02EE ; Alphabetic # Lm MODIFIER LETTER DOUBLE APOSTROPHE
0345 ; Alphabetic # Mn COMBINING GREEK YPOGEGRAMMENI
+0363..036F ; Alphabetic # Mn [13] COMBINING LATIN SMALL LETTER A..COMBINING LATIN SMALL LETTER X
0370..0373 ; Alphabetic # L& [4] GREEK CAPITAL LETTER HETA..GREEK SMALL LETTER ARCHAIC SAMPI
0374 ; Alphabetic # Lm GREEK NUMERAL SIGN
0376..0377 ; Alphabetic # L& [2] GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA..GREEK SMALL LETTER PAMPHYLIAN DIGAMMA
@@ -343,6 +345,7 @@ FFE9..FFEC ; Math # Sm [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS A
0860..086A ; Alphabetic # Lo [11] SYRIAC LETTER MALAYALAM NGA..SYRIAC LETTER MALAYALAM SSA
0870..0887 ; Alphabetic # Lo [24] ARABIC LETTER ALEF WITH ATTACHED FATHA..ARABIC BASELINE ROUND DOT
0889..088E ; Alphabetic # Lo [6] ARABIC LETTER NOON WITH INVERTED SMALL V..ARABIC VERTICAL TAIL
+0897 ; Alphabetic # Mn ARABIC PEPET
08A0..08C8 ; Alphabetic # Lo [41] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER GRAF
08C9 ; Alphabetic # Lm ARABIC SMALL FARSI YEH
08D4..08DF ; Alphabetic # Mn [12] ARABIC SMALL HIGH WORD AR-RUB..ARABIC SMALL HIGH WORD WAQFA
@@ -710,7 +713,7 @@ FFE9..FFEC ; Math # Sm [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS A
1C4D..1C4F ; Alphabetic # Lo [3] LEPCHA LETTER TTA..LEPCHA LETTER DDA
1C5A..1C77 ; Alphabetic # Lo [30] OL CHIKI LETTER LA..OL CHIKI LETTER OH
1C78..1C7D ; Alphabetic # Lm [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD
-1C80..1C88 ; Alphabetic # L& [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK
+1C80..1C8A ; Alphabetic # L& [11] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER TJE
1C90..1CBA ; Alphabetic # L& [43] GEORGIAN MTAVRULI CAPITAL LETTER AN..GEORGIAN MTAVRULI CAPITAL LETTER AIN
1CBD..1CBF ; Alphabetic # L& [3] GEORGIAN MTAVRULI CAPITAL LETTER AEN..GEORGIAN MTAVRULI CAPITAL LETTER LABIAL SIGN
1CE9..1CEC ; Alphabetic # Lo [4] VEDIC SIGN ANUSVARA ANTARGOMUKHA..VEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAIL
@@ -723,7 +726,7 @@ FFE9..FFEC ; Math # Sm [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS A
1D78 ; Alphabetic # Lm MODIFIER LETTER CYRILLIC EN
1D79..1D9A ; Alphabetic # L& [34] LATIN SMALL LETTER INSULAR G..LATIN SMALL LETTER EZH WITH RETROFLEX HOOK
1D9B..1DBF ; Alphabetic # Lm [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA
-1DE7..1DF4 ; Alphabetic # Mn [14] COMBINING LATIN SMALL LETTER ALPHA..COMBINING LATIN SMALL LETTER U WITH DIAERESIS
+1DD3..1DF4 ; Alphabetic # Mn [34] COMBINING LATIN SMALL LETTER FLATTENED OPEN A ABOVE..COMBINING LATIN SMALL LETTER U WITH DIAERESIS
1E00..1F15 ; Alphabetic # L& [278] LATIN CAPITAL LETTER A WITH RING BELOW..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
1F18..1F1D ; Alphabetic # L& [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
1F20..1F45 ; Alphabetic # L& [38] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
@@ -830,10 +833,10 @@ A771..A787 ; Alphabetic # L& [23] LATIN SMALL LETTER DUM..LATIN SMALL LETTER
A788 ; Alphabetic # Lm MODIFIER LETTER LOW CIRCUMFLEX ACCENT
A78B..A78E ; Alphabetic # L& [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT
A78F ; Alphabetic # Lo LATIN LETTER SINOLOGICAL DOT
-A790..A7CA ; Alphabetic # L& [59] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY
+A790..A7CD ; Alphabetic # L& [62] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER S WITH DIAGONAL STROKE
A7D0..A7D1 ; Alphabetic # L& [2] LATIN CAPITAL LETTER CLOSED INSULAR G..LATIN SMALL LETTER CLOSED INSULAR G
A7D3 ; Alphabetic # L& LATIN SMALL LETTER DOUBLE THORN
-A7D5..A7D9 ; Alphabetic # L& [5] LATIN SMALL LETTER DOUBLE WYNN..LATIN SMALL LETTER SIGMOID S
+A7D5..A7DC ; Alphabetic # L& [8] LATIN SMALL LETTER DOUBLE WYNN..LATIN CAPITAL LETTER LAMBDA WITH STROKE
A7F2..A7F4 ; Alphabetic # Lm [3] MODIFIER LETTER CAPITAL C..MODIFIER LETTER CAPITAL Q
A7F5..A7F6 ; Alphabetic # L& [2] LATIN CAPITAL LETTER REVERSED HALF H..LATIN SMALL LETTER REVERSED HALF H
A7F7 ; Alphabetic # Lo LATIN EPIGRAPHIC LETTER SIDEWAYS I
@@ -998,6 +1001,7 @@ FFDA..FFDC ; Alphabetic # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANG
105A3..105B1 ; Alphabetic # L& [15] VITHKUQI SMALL LETTER HA..VITHKUQI SMALL LETTER RE
105B3..105B9 ; Alphabetic # L& [7] VITHKUQI SMALL LETTER SE..VITHKUQI SMALL LETTER XE
105BB..105BC ; Alphabetic # L& [2] VITHKUQI SMALL LETTER Y..VITHKUQI SMALL LETTER ZE
+105C0..105F3 ; Alphabetic # Lo [52] TODHRI LETTER A..TODHRI LETTER OO
10600..10736 ; Alphabetic # Lo [311] LINEAR A SIGN AB001..LINEAR A SIGN A664
10740..10755 ; Alphabetic # Lo [22] LINEAR A SIGN A701 A..LINEAR A SIGN A732 JE
10760..10767 ; Alphabetic # Lo [8] LINEAR A SIGN A800..LINEAR A SIGN A807
@@ -1038,9 +1042,18 @@ FFDA..FFDC ; Alphabetic # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANG
10CC0..10CF2 ; Alphabetic # L& [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US
10D00..10D23 ; Alphabetic # Lo [36] HANIFI ROHINGYA LETTER A..HANIFI ROHINGYA MARK NA KHONNA
10D24..10D27 ; Alphabetic # Mn [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI
+10D4A..10D4D ; Alphabetic # Lo [4] GARAY VOWEL SIGN A..GARAY VOWEL SIGN EE
+10D4E ; Alphabetic # Lm GARAY VOWEL LENGTH MARK
+10D4F ; Alphabetic # Lo GARAY SUKUN
+10D50..10D65 ; Alphabetic # L& [22] GARAY CAPITAL LETTER A..GARAY CAPITAL LETTER OLD NA
+10D69 ; Alphabetic # Mn GARAY VOWEL SIGN E
+10D6F ; Alphabetic # Lm GARAY REDUPLICATION MARK
+10D70..10D85 ; Alphabetic # L& [22] GARAY SMALL LETTER A..GARAY SMALL LETTER OLD NA
10E80..10EA9 ; Alphabetic # Lo [42] YEZIDI LETTER ELIF..YEZIDI LETTER ET
10EAB..10EAC ; Alphabetic # Mn [2] YEZIDI COMBINING HAMZA MARK..YEZIDI COMBINING MADDA MARK
10EB0..10EB1 ; Alphabetic # Lo [2] YEZIDI LETTER LAM WITH DOT ABOVE..YEZIDI LETTER YOT WITH CIRCUMFLEX ABOVE
+10EC2..10EC4 ; Alphabetic # Lo [3] ARABIC LETTER DAL WITH TWO DOTS VERTICALLY BELOW..ARABIC LETTER KAF WITH TWO DOTS VERTICALLY BELOW
+10EFC ; Alphabetic # Mn ARABIC COMBINING ALEF OVERLAY
10F00..10F1C ; Alphabetic # Lo [29] OLD SOGDIAN LETTER ALEPH..OLD SOGDIAN LETTER FINAL TAW WITH VERTICAL TAIL
10F27 ; Alphabetic # Lo OLD SOGDIAN LIGATURE AYIN-DALETH
10F30..10F45 ; Alphabetic # Lo [22] SOGDIAN LETTER ALEPH..SOGDIAN INDEPENDENT SHIN
@@ -1121,6 +1134,19 @@ FFDA..FFDC ; Alphabetic # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANG
11357 ; Alphabetic # Mc GRANTHA AU LENGTH MARK
1135D..11361 ; Alphabetic # Lo [5] GRANTHA SIGN PLUTA..GRANTHA LETTER VOCALIC LL
11362..11363 ; Alphabetic # Mc [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL
+11380..11389 ; Alphabetic # Lo [10] TULU-TIGALARI LETTER A..TULU-TIGALARI LETTER VOCALIC LL
+1138B ; Alphabetic # Lo TULU-TIGALARI LETTER EE
+1138E ; Alphabetic # Lo TULU-TIGALARI LETTER AI
+11390..113B5 ; Alphabetic # Lo [38] TULU-TIGALARI LETTER OO..TULU-TIGALARI LETTER LLLA
+113B7 ; Alphabetic # Lo TULU-TIGALARI SIGN AVAGRAHA
+113B8..113BA ; Alphabetic # Mc [3] TULU-TIGALARI VOWEL SIGN AA..TULU-TIGALARI VOWEL SIGN II
+113BB..113C0 ; Alphabetic # Mn [6] TULU-TIGALARI VOWEL SIGN U..TULU-TIGALARI VOWEL SIGN VOCALIC LL
+113C2 ; Alphabetic # Mc TULU-TIGALARI VOWEL SIGN EE
+113C5 ; Alphabetic # Mc TULU-TIGALARI VOWEL SIGN AI
+113C7..113CA ; Alphabetic # Mc [4] TULU-TIGALARI VOWEL SIGN OO..TULU-TIGALARI SIGN CANDRA ANUNASIKA
+113CC..113CD ; Alphabetic # Mc [2] TULU-TIGALARI SIGN ANUSVARA..TULU-TIGALARI SIGN VISARGA
+113D1 ; Alphabetic # Lo TULU-TIGALARI REPHA
+113D3 ; Alphabetic # Lo TULU-TIGALARI SIGN PLUTA
11400..11434 ; Alphabetic # Lo [53] NEWA LETTER A..NEWA LETTER HA
11435..11437 ; Alphabetic # Mc [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II
11438..1143F ; Alphabetic # Mn [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI
@@ -1163,7 +1189,9 @@ FFDA..FFDC ; Alphabetic # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANG
116B0..116B5 ; Alphabetic # Mn [6] TAKRI VOWEL SIGN U..TAKRI VOWEL SIGN AU
116B8 ; Alphabetic # Lo TAKRI LETTER ARCHAIC KHA
11700..1171A ; Alphabetic # Lo [27] AHOM LETTER KA..AHOM LETTER ALTERNATE BA
-1171D..1171F ; Alphabetic # Mn [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA
+1171D ; Alphabetic # Mn AHOM CONSONANT SIGN MEDIAL LA
+1171E ; Alphabetic # Mc AHOM CONSONANT SIGN MEDIAL RA
+1171F ; Alphabetic # Mn AHOM CONSONANT SIGN MEDIAL LIGATING RA
11720..11721 ; Alphabetic # Mc [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA
11722..11725 ; Alphabetic # Mn [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU
11726 ; Alphabetic # Mc AHOM VOWEL SIGN E
@@ -1211,6 +1239,7 @@ FFDA..FFDC ; Alphabetic # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANG
11A97 ; Alphabetic # Mc SOYOMBO SIGN VISARGA
11A9D ; Alphabetic # Lo SOYOMBO MARK PLUTA
11AB0..11AF8 ; Alphabetic # Lo [73] CANADIAN SYLLABICS NATTILIK HI..PAU CIN HAU GLOTTAL STOP FINAL
+11BC0..11BE0 ; Alphabetic # Lo [33] SUNUWAR LETTER DEVI..SUNUWAR LETTER KLOKO
11C00..11C08 ; Alphabetic # Lo [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L
11C0A..11C2E ; Alphabetic # Lo [37] BHAIKSUKI LETTER E..BHAIKSUKI LETTER HA
11C2F ; Alphabetic # Mc BHAIKSUKI VOWEL SIGN AA
@@ -1264,7 +1293,12 @@ FFDA..FFDC ; Alphabetic # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANG
12F90..12FF0 ; Alphabetic # Lo [97] CYPRO-MINOAN SIGN CM001..CYPRO-MINOAN SIGN CM114
13000..1342F ; Alphabetic # Lo [1072] EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH V011D
13441..13446 ; Alphabetic # Lo [6] EGYPTIAN HIEROGLYPH FULL BLANK..EGYPTIAN HIEROGLYPH WIDE LOST SIGN
+13460..143FA ; Alphabetic # Lo [3995] EGYPTIAN HIEROGLYPH-13460..EGYPTIAN HIEROGLYPH-143FA
14400..14646 ; Alphabetic # Lo [583] ANATOLIAN HIEROGLYPH A001..ANATOLIAN HIEROGLYPH A530
+16100..1611D ; Alphabetic # Lo [30] GURUNG KHEMA LETTER A..GURUNG KHEMA LETTER SA
+1611E..16129 ; Alphabetic # Mn [12] GURUNG KHEMA VOWEL SIGN AA..GURUNG KHEMA VOWEL LENGTH MARK
+1612A..1612C ; Alphabetic # Mc [3] GURUNG KHEMA CONSONANT SIGN MEDIAL YA..GURUNG KHEMA CONSONANT SIGN MEDIAL HA
+1612D..1612E ; Alphabetic # Mn [2] GURUNG KHEMA SIGN ANUSVARA..GURUNG KHEMA CONSONANT SIGN MEDIAL RA
16800..16A38 ; Alphabetic # Lo [569] BAMUM LETTER PHASE-A NGKUE MFON..BAMUM LETTER PHASE-F VUEQ
16A40..16A5E ; Alphabetic # Lo [31] MRO LETTER TA..MRO LETTER TEK
16A70..16ABE ; Alphabetic # Lo [79] TANGSA LETTER OZ..TANGSA LETTER ZA
@@ -1273,6 +1307,9 @@ FFDA..FFDC ; Alphabetic # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANG
16B40..16B43 ; Alphabetic # Lm [4] PAHAWH HMONG SIGN VOS SEEV..PAHAWH HMONG SIGN IB YAM
16B63..16B77 ; Alphabetic # Lo [21] PAHAWH HMONG SIGN VOS LUB..PAHAWH HMONG SIGN CIM NRES TOS
16B7D..16B8F ; Alphabetic # Lo [19] PAHAWH HMONG CLAN SIGN TSHEEJ..PAHAWH HMONG CLAN SIGN VWJ
+16D40..16D42 ; Alphabetic # Lm [3] KIRAT RAI SIGN ANUSVARA..KIRAT RAI SIGN VISARGA
+16D43..16D6A ; Alphabetic # Lo [40] KIRAT RAI LETTER A..KIRAT RAI VOWEL SIGN AU
+16D6B..16D6C ; Alphabetic # Lm [2] KIRAT RAI SIGN VIRAMA..KIRAT RAI SIGN SAAT
16E40..16E7F ; Alphabetic # L& [64] MEDEFAIDRIN CAPITAL LETTER M..MEDEFAIDRIN SMALL LETTER Y
16F00..16F4A ; Alphabetic # Lo [75] MIAO LETTER PA..MIAO LETTER RTE
16F4F ; Alphabetic # Mn MIAO SIGN CONSONANT MODIFIER BAR
@@ -1285,7 +1322,7 @@ FFDA..FFDC ; Alphabetic # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANG
16FF0..16FF1 ; Alphabetic # Mc [2] VIETNAMESE ALTERNATE READING MARK CA..VIETNAMESE ALTERNATE READING MARK NHAY
17000..187F7 ; Alphabetic # Lo [6136] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187F7
18800..18CD5 ; Alphabetic # Lo [1238] TANGUT COMPONENT-001..KHITAN SMALL SCRIPT CHARACTER-18CD5
-18D00..18D08 ; Alphabetic # Lo [9] TANGUT IDEOGRAPH-18D00..TANGUT IDEOGRAPH-18D08
+18CFF..18D08 ; Alphabetic # Lo [10] KHITAN SMALL SCRIPT CHARACTER-18CFF..TANGUT IDEOGRAPH-18D08
1AFF0..1AFF3 ; Alphabetic # Lm [4] KATAKANA LETTER MINNAN TONE-2..KATAKANA LETTER MINNAN TONE-5
1AFF5..1AFFB ; Alphabetic # Lm [7] KATAKANA LETTER MINNAN TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-5
1AFFD..1AFFE ; Alphabetic # Lm [2] KATAKANA LETTER MINNAN NASALIZED TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-8
@@ -1348,6 +1385,8 @@ FFDA..FFDC ; Alphabetic # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANG
1E2C0..1E2EB ; Alphabetic # Lo [44] WANCHO LETTER AA..WANCHO LETTER YIH
1E4D0..1E4EA ; Alphabetic # Lo [27] NAG MUNDARI LETTER O..NAG MUNDARI LETTER ELL
1E4EB ; Alphabetic # Lm NAG MUNDARI SIGN OJOD
+1E5D0..1E5ED ; Alphabetic # Lo [30] OL ONAL LETTER O..OL ONAL LETTER EG
+1E5F0 ; Alphabetic # Lo OL ONAL SIGN HODDOND
1E7E0..1E7E6 ; Alphabetic # Lo [7] ETHIOPIC SYLLABLE HHYA..ETHIOPIC SYLLABLE HHYO
1E7E8..1E7EB ; Alphabetic # Lo [4] ETHIOPIC SYLLABLE GURAGE HHWA..ETHIOPIC SYLLABLE HHWE
1E7ED..1E7EE ; Alphabetic # Lo [2] ETHIOPIC SYLLABLE GURAGE MWI..ETHIOPIC SYLLABLE GURAGE MWEE
@@ -1402,7 +1441,7 @@ FFDA..FFDC ; Alphabetic # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANG
30000..3134A ; Alphabetic # Lo [4939] CJK UNIFIED IDEOGRAPH-30000..CJK UNIFIED IDEOGRAPH-3134A
31350..323AF ; Alphabetic # Lo [4192] CJK UNIFIED IDEOGRAPH-31350..CJK UNIFIED IDEOGRAPH-323AF
-# Total code points: 138387
+# Total code points: 142759
# ================================================
@@ -1691,6 +1730,7 @@ FFDA..FFDC ; Alphabetic # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANG
10FD..10FF ; Lowercase # L& [3] GEORGIAN LETTER AEN..GEORGIAN LETTER LABIAL SIGN
13F8..13FD ; Lowercase # L& [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV
1C80..1C88 ; Lowercase # L& [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK
+1C8A ; Lowercase # L& CYRILLIC SMALL LETTER TJE
1D00..1D2B ; Lowercase # L& [44] LATIN LETTER SMALL CAPITAL A..CYRILLIC LETTER SMALL CAPITAL EL
1D2C..1D6A ; Lowercase # Lm [63] MODIFIER LETTER CAPITAL A..GREEK SUBSCRIPT SMALL LETTER CHI
1D6B..1D77 ; Lowercase # L& [13] LATIN SMALL LETTER UE..LATIN SMALL LETTER TURNED G
@@ -2032,11 +2072,13 @@ A7C1 ; Lowercase # L& LATIN SMALL LETTER OLD POLISH O
A7C3 ; Lowercase # L& LATIN SMALL LETTER ANGLICANA W
A7C8 ; Lowercase # L& LATIN SMALL LETTER D WITH SHORT STROKE OVERLAY
A7CA ; Lowercase # L& LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY
+A7CD ; Lowercase # L& LATIN SMALL LETTER S WITH DIAGONAL STROKE
A7D1 ; Lowercase # L& LATIN SMALL LETTER CLOSED INSULAR G
A7D3 ; Lowercase # L& LATIN SMALL LETTER DOUBLE THORN
A7D5 ; Lowercase # L& LATIN SMALL LETTER DOUBLE WYNN
A7D7 ; Lowercase # L& LATIN SMALL LETTER MIDDLE SCOTS S
A7D9 ; Lowercase # L& LATIN SMALL LETTER SIGMOID S
+A7DB ; Lowercase # L& LATIN SMALL LETTER LAMBDA
A7F2..A7F4 ; Lowercase # Lm [3] MODIFIER LETTER CAPITAL C..MODIFIER LETTER CAPITAL Q
A7F6 ; Lowercase # L& LATIN SMALL LETTER REVERSED HALF H
A7F8..A7F9 ; Lowercase # Lm [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE
@@ -2060,6 +2102,7 @@ FF41..FF5A ; Lowercase # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH L
10787..107B0 ; Lowercase # Lm [42] MODIFIER LETTER SMALL DZ DIGRAPH..MODIFIER LETTER SMALL V WITH RIGHT HOOK
107B2..107BA ; Lowercase # Lm [9] MODIFIER LETTER SMALL CAPITAL Y..MODIFIER LETTER SMALL S WITH CURL
10CC0..10CF2 ; Lowercase # L& [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US
+10D70..10D85 ; Lowercase # L& [22] GARAY SMALL LETTER A..GARAY SMALL LETTER OLD NA
118C0..118DF ; Lowercase # L& [32] WARANG CITI SMALL LETTER NGAA..WARANG CITI SMALL LETTER VIYO
16E60..16E7F ; Lowercase # L& [32] MEDEFAIDRIN SMALL LETTER M..MEDEFAIDRIN SMALL LETTER Y
1D41A..1D433 ; Lowercase # L& [26] MATHEMATICAL BOLD SMALL A..MATHEMATICAL BOLD SMALL Z
@@ -2096,7 +2139,7 @@ FF41..FF5A ; Lowercase # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH L
1E030..1E06D ; Lowercase # Lm [62] MODIFIER LETTER CYRILLIC SMALL A..MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE
1E922..1E943 ; Lowercase # L& [34] ADLAM SMALL LETTER ALIF..ADLAM SMALL LETTER SHA
-# Total code points: 2544
+# Total code points: 2569
# ================================================
@@ -2379,6 +2422,7 @@ FF41..FF5A ; Lowercase # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH L
10C7 ; Uppercase # L& GEORGIAN CAPITAL LETTER YN
10CD ; Uppercase # L& GEORGIAN CAPITAL LETTER AEN
13A0..13F5 ; Uppercase # L& [86] CHEROKEE LETTER A..CHEROKEE LETTER MV
+1C89 ; Uppercase # L& CYRILLIC CAPITAL LETTER TJE
1C90..1CBA ; Uppercase # L& [43] GEORGIAN MTAVRULI CAPITAL LETTER AN..GEORGIAN MTAVRULI CAPITAL LETTER AIN
1CBD..1CBF ; Uppercase # L& [3] GEORGIAN MTAVRULI CAPITAL LETTER AEN..GEORGIAN MTAVRULI CAPITAL LETTER LABIAL SIGN
1E00 ; Uppercase # L& LATIN CAPITAL LETTER A WITH RING BELOW
@@ -2705,9 +2749,12 @@ A7C0 ; Uppercase # L& LATIN CAPITAL LETTER OLD POLISH O
A7C2 ; Uppercase # L& LATIN CAPITAL LETTER ANGLICANA W
A7C4..A7C7 ; Uppercase # L& [4] LATIN CAPITAL LETTER C WITH PALATAL HOOK..LATIN CAPITAL LETTER D WITH SHORT STROKE OVERLAY
A7C9 ; Uppercase # L& LATIN CAPITAL LETTER S WITH SHORT STROKE OVERLAY
+A7CB..A7CC ; Uppercase # L& [2] LATIN CAPITAL LETTER RAMS HORN..LATIN CAPITAL LETTER S WITH DIAGONAL STROKE
A7D0 ; Uppercase # L& LATIN CAPITAL LETTER CLOSED INSULAR G
A7D6 ; Uppercase # L& LATIN CAPITAL LETTER MIDDLE SCOTS S
A7D8 ; Uppercase # L& LATIN CAPITAL LETTER SIGMOID S
+A7DA ; Uppercase # L& LATIN CAPITAL LETTER LAMBDA
+A7DC ; Uppercase # L& LATIN CAPITAL LETTER LAMBDA WITH STROKE
A7F5 ; Uppercase # L& LATIN CAPITAL LETTER REVERSED HALF H
FF21..FF3A ; Uppercase # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z
10400..10427 ; Uppercase # L& [40] DESERET CAPITAL LETTER LONG I..DESERET CAPITAL LETTER EW
@@ -2717,6 +2764,7 @@ FF21..FF3A ; Uppercase # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH
1058C..10592 ; Uppercase # L& [7] VITHKUQI CAPITAL LETTER SE..VITHKUQI CAPITAL LETTER XE
10594..10595 ; Uppercase # L& [2] VITHKUQI CAPITAL LETTER Y..VITHKUQI CAPITAL LETTER ZE
10C80..10CB2 ; Uppercase # L& [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US
+10D50..10D65 ; Uppercase # L& [22] GARAY CAPITAL LETTER A..GARAY CAPITAL LETTER OLD NA
118A0..118BF ; Uppercase # L& [32] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI CAPITAL LETTER VIYO
16E40..16E5F ; Uppercase # L& [32] MEDEFAIDRIN CAPITAL LETTER M..MEDEFAIDRIN CAPITAL LETTER Y
1D400..1D419 ; Uppercase # L& [26] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL BOLD CAPITAL Z
@@ -2755,7 +2803,7 @@ FF21..FF3A ; Uppercase # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH
1F150..1F169 ; Uppercase # So [26] NEGATIVE CIRCLED LATIN CAPITAL LETTER A..NEGATIVE CIRCLED LATIN CAPITAL LETTER Z
1F170..1F189 ; Uppercase # So [26] NEGATIVE SQUARED LATIN CAPITAL LETTER A..NEGATIVE SQUARED LATIN CAPITAL LETTER Z
-# Total code points: 1951
+# Total code points: 1978
# ================================================
@@ -2800,7 +2848,7 @@ FF21..FF3A ; Uppercase # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH
10FD..10FF ; Cased # L& [3] GEORGIAN LETTER AEN..GEORGIAN LETTER LABIAL SIGN
13A0..13F5 ; Cased # L& [86] CHEROKEE LETTER A..CHEROKEE LETTER MV
13F8..13FD ; Cased # L& [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV
-1C80..1C88 ; Cased # L& [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK
+1C80..1C8A ; Cased # L& [11] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER TJE
1C90..1CBA ; Cased # L& [43] GEORGIAN MTAVRULI CAPITAL LETTER AN..GEORGIAN MTAVRULI CAPITAL LETTER AIN
1CBD..1CBF ; Cased # L& [3] GEORGIAN MTAVRULI CAPITAL LETTER AEN..GEORGIAN MTAVRULI CAPITAL LETTER LABIAL SIGN
1D00..1D2B ; Cased # L& [44] LATIN LETTER SMALL CAPITAL A..CYRILLIC LETTER SMALL CAPITAL EL
@@ -2863,10 +2911,10 @@ A722..A76F ; Cased # L& [78] LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF..LATIN
A770 ; Cased # Lm MODIFIER LETTER US
A771..A787 ; Cased # L& [23] LATIN SMALL LETTER DUM..LATIN SMALL LETTER INSULAR T
A78B..A78E ; Cased # L& [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT
-A790..A7CA ; Cased # L& [59] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY
+A790..A7CD ; Cased # L& [62] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER S WITH DIAGONAL STROKE
A7D0..A7D1 ; Cased # L& [2] LATIN CAPITAL LETTER CLOSED INSULAR G..LATIN SMALL LETTER CLOSED INSULAR G
A7D3 ; Cased # L& LATIN SMALL LETTER DOUBLE THORN
-A7D5..A7D9 ; Cased # L& [5] LATIN SMALL LETTER DOUBLE WYNN..LATIN SMALL LETTER SIGMOID S
+A7D5..A7DC ; Cased # L& [8] LATIN SMALL LETTER DOUBLE WYNN..LATIN CAPITAL LETTER LAMBDA WITH STROKE
A7F2..A7F4 ; Cased # Lm [3] MODIFIER LETTER CAPITAL C..MODIFIER LETTER CAPITAL Q
A7F5..A7F6 ; Cased # L& [2] LATIN CAPITAL LETTER REVERSED HALF H..LATIN SMALL LETTER REVERSED HALF H
A7F8..A7F9 ; Cased # Lm [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE
@@ -2897,6 +2945,8 @@ FF41..FF5A ; Cased # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN
107B2..107BA ; Cased # Lm [9] MODIFIER LETTER SMALL CAPITAL Y..MODIFIER LETTER SMALL S WITH CURL
10C80..10CB2 ; Cased # L& [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US
10CC0..10CF2 ; Cased # L& [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US
+10D50..10D65 ; Cased # L& [22] GARAY CAPITAL LETTER A..GARAY CAPITAL LETTER OLD NA
+10D70..10D85 ; Cased # L& [22] GARAY SMALL LETTER A..GARAY SMALL LETTER OLD NA
118A0..118DF ; Cased # L& [64] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI SMALL LETTER VIYO
16E40..16E7F ; Cased # L& [64] MEDEFAIDRIN CAPITAL LETTER M..MEDEFAIDRIN SMALL LETTER Y
1D400..1D454 ; Cased # L& [85] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL ITALIC SMALL G
@@ -2938,7 +2988,7 @@ FF41..FF5A ; Cased # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN
1F150..1F169 ; Cased # So [26] NEGATIVE CIRCLED LATIN CAPITAL LETTER A..NEGATIVE CIRCLED LATIN CAPITAL LETTER Z
1F170..1F189 ; Cased # So [26] NEGATIVE SQUARED LATIN CAPITAL LETTER A..NEGATIVE SQUARED LATIN CAPITAL LETTER Z
-# Total code points: 4526
+# Total code points: 4578
# ================================================
@@ -3015,7 +3065,7 @@ FF41..FF5A ; Cased # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN
0859..085B ; Case_Ignorable # Mn [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK
0888 ; Case_Ignorable # Sk ARABIC RAISED ROUND DOT
0890..0891 ; Case_Ignorable # Cf [2] ARABIC POUND MARK ABOVE..ARABIC PIASTRE MARK ABOVE
-0898..089F ; Case_Ignorable # Mn [8] ARABIC SMALL HIGH WORD AL-JUZ..ARABIC HALF MADDA OVER MADDA
+0897..089F ; Case_Ignorable # Mn [9] ARABIC PEPET..ARABIC HALF MADDA OVER MADDA
08C9 ; Case_Ignorable # Lm ARABIC SMALL FARSI YEH
08CA..08E1 ; Case_Ignorable # Mn [24] ARABIC SMALL HIGH FARSI YEH..ARABIC SMALL HIGH SIGN SAFHA
08E2 ; Case_Ignorable # Cf ARABIC DISPUTED END OF AYAH
@@ -3296,8 +3346,11 @@ FFF9..FFFB ; Case_Ignorable # Cf [3] INTERLINEAR ANNOTATION ANCHOR..INTERLI
10A3F ; Case_Ignorable # Mn KHAROSHTHI VIRAMA
10AE5..10AE6 ; Case_Ignorable # Mn [2] MANICHAEAN ABBREVIATION MARK ABOVE..MANICHAEAN ABBREVIATION MARK BELOW
10D24..10D27 ; Case_Ignorable # Mn [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI
+10D4E ; Case_Ignorable # Lm GARAY VOWEL LENGTH MARK
+10D69..10D6D ; Case_Ignorable # Mn [5] GARAY VOWEL SIGN E..GARAY CONSONANT NASALIZATION MARK
+10D6F ; Case_Ignorable # Lm GARAY REDUPLICATION MARK
10EAB..10EAC ; Case_Ignorable # Mn [2] YEZIDI COMBINING HAMZA MARK..YEZIDI COMBINING MADDA MARK
-10EFD..10EFF ; Case_Ignorable # Mn [3] ARABIC SMALL LOW WORD SAKTA..ARABIC SMALL LOW WORD MADDA
+10EFC..10EFF ; Case_Ignorable # Mn [4] ARABIC COMBINING ALEF OVERLAY..ARABIC SMALL LOW WORD MADDA
10F46..10F50 ; Case_Ignorable # Mn [11] SOGDIAN COMBINING DOT BELOW..SOGDIAN COMBINING STROKE BELOW
10F82..10F85 ; Case_Ignorable # Mn [4] OLD UYGHUR COMBINING DOT ABOVE..OLD UYGHUR COMBINING TWO DOTS BELOW
11001 ; Case_Ignorable # Mn BRAHMI SIGN ANUSVARA
@@ -3330,6 +3383,11 @@ FFF9..FFFB ; Case_Ignorable # Cf [3] INTERLINEAR ANNOTATION ANCHOR..INTERLI
11340 ; Case_Ignorable # Mn GRANTHA VOWEL SIGN II
11366..1136C ; Case_Ignorable # Mn [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX
11370..11374 ; Case_Ignorable # Mn [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA
+113BB..113C0 ; Case_Ignorable # Mn [6] TULU-TIGALARI VOWEL SIGN U..TULU-TIGALARI VOWEL SIGN VOCALIC LL
+113CE ; Case_Ignorable # Mn TULU-TIGALARI SIGN VIRAMA
+113D0 ; Case_Ignorable # Mn TULU-TIGALARI CONJOINER
+113D2 ; Case_Ignorable # Mn TULU-TIGALARI GEMINATION MARK
+113E1..113E2 ; Case_Ignorable # Mn [2] TULU-TIGALARI VEDIC TONE SVARITA..TULU-TIGALARI VEDIC TONE ANUDATTA
11438..1143F ; Case_Ignorable # Mn [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI
11442..11444 ; Case_Ignorable # Mn [3] NEWA SIGN VIRAMA..NEWA SIGN ANUSVARA
11446 ; Case_Ignorable # Mn NEWA SIGN NUKTA
@@ -3349,7 +3407,8 @@ FFF9..FFFB ; Case_Ignorable # Cf [3] INTERLINEAR ANNOTATION ANCHOR..INTERLI
116AD ; Case_Ignorable # Mn TAKRI VOWEL SIGN AA
116B0..116B5 ; Case_Ignorable # Mn [6] TAKRI VOWEL SIGN U..TAKRI VOWEL SIGN AU
116B7 ; Case_Ignorable # Mn TAKRI SIGN NUKTA
-1171D..1171F ; Case_Ignorable # Mn [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA
+1171D ; Case_Ignorable # Mn AHOM CONSONANT SIGN MEDIAL LA
+1171F ; Case_Ignorable # Mn AHOM CONSONANT SIGN MEDIAL LIGATING RA
11722..11725 ; Case_Ignorable # Mn [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU
11727..1172B ; Case_Ignorable # Mn [5] AHOM VOWEL SIGN AW..AHOM SIGN KILLER
1182F..11837 ; Case_Ignorable # Mn [9] DOGRA VOWEL SIGN U..DOGRA SIGN ANUSVARA
@@ -3388,12 +3447,17 @@ FFF9..FFFB ; Case_Ignorable # Cf [3] INTERLINEAR ANNOTATION ANCHOR..INTERLI
11F36..11F3A ; Case_Ignorable # Mn [5] KAWI VOWEL SIGN I..KAWI VOWEL SIGN VOCALIC R
11F40 ; Case_Ignorable # Mn KAWI VOWEL SIGN EU
11F42 ; Case_Ignorable # Mn KAWI CONJOINER
+11F5A ; Case_Ignorable # Mn KAWI SIGN NUKTA
13430..1343F ; Case_Ignorable # Cf [16] EGYPTIAN HIEROGLYPH VERTICAL JOINER..EGYPTIAN HIEROGLYPH END WALLED ENCLOSURE
13440 ; Case_Ignorable # Mn EGYPTIAN HIEROGLYPH MIRROR HORIZONTALLY
13447..13455 ; Case_Ignorable # Mn [15] EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP START..EGYPTIAN HIEROGLYPH MODIFIER DAMAGED
+1611E..16129 ; Case_Ignorable # Mn [12] GURUNG KHEMA VOWEL SIGN AA..GURUNG KHEMA VOWEL LENGTH MARK
+1612D..1612F ; Case_Ignorable # Mn [3] GURUNG KHEMA SIGN ANUSVARA..GURUNG KHEMA SIGN THOLHOMA
16AF0..16AF4 ; Case_Ignorable # Mn [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE
16B30..16B36 ; Case_Ignorable # Mn [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM
16B40..16B43 ; Case_Ignorable # Lm [4] PAHAWH HMONG SIGN VOS SEEV..PAHAWH HMONG SIGN IB YAM
+16D40..16D42 ; Case_Ignorable # Lm [3] KIRAT RAI SIGN ANUSVARA..KIRAT RAI SIGN VISARGA
+16D6B..16D6C ; Case_Ignorable # Lm [2] KIRAT RAI SIGN VIRAMA..KIRAT RAI SIGN SAAT
16F4F ; Case_Ignorable # Mn MIAO SIGN CONSONANT MODIFIER BAR
16F8F..16F92 ; Case_Ignorable # Mn [4] MIAO TONE RIGHT..MIAO TONE BELOW
16F93..16F9F ; Case_Ignorable # Lm [13] MIAO LETTER TONE-2..MIAO LETTER REFORMED TONE-8
@@ -3432,6 +3496,7 @@ FFF9..FFFB ; Case_Ignorable # Cf [3] INTERLINEAR ANNOTATION ANCHOR..INTERLI
1E2EC..1E2EF ; Case_Ignorable # Mn [4] WANCHO TONE TUP..WANCHO TONE KOINI
1E4EB ; Case_Ignorable # Lm NAG MUNDARI SIGN OJOD
1E4EC..1E4EF ; Case_Ignorable # Mn [4] NAG MUNDARI SIGN MUHOR..NAG MUNDARI SIGN SUTUH
+1E5EE..1E5EF ; Case_Ignorable # Mn [2] OL ONAL SIGN MU..OL ONAL SIGN IKIR
1E8D0..1E8D6 ; Case_Ignorable # Mn [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS
1E944..1E94A ; Case_Ignorable # Mn [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA
1E94B ; Case_Ignorable # Lm ADLAM NASALIZATION MARK
@@ -3440,7 +3505,7 @@ E0001 ; Case_Ignorable # Cf LANGUAGE TAG
E0020..E007F ; Case_Ignorable # Cf [96] TAG SPACE..CANCEL TAG
E0100..E01EF ; Case_Ignorable # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
-# Total code points: 2707
+# Total code points: 2749
# ================================================
@@ -3724,6 +3789,7 @@ E0100..E01EF ; Case_Ignorable # Mn [240] VARIATION SELECTOR-17..VARIATION SELEC
10C7 ; Changes_When_Lowercased # L& GEORGIAN CAPITAL LETTER YN
10CD ; Changes_When_Lowercased # L& GEORGIAN CAPITAL LETTER AEN
13A0..13F5 ; Changes_When_Lowercased # L& [86] CHEROKEE LETTER A..CHEROKEE LETTER MV
+1C89 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER TJE
1C90..1CBA ; Changes_When_Lowercased # L& [43] GEORGIAN MTAVRULI CAPITAL LETTER AN..GEORGIAN MTAVRULI CAPITAL LETTER AIN
1CBD..1CBF ; Changes_When_Lowercased # L& [3] GEORGIAN MTAVRULI CAPITAL LETTER AEN..GEORGIAN MTAVRULI CAPITAL LETTER LABIAL SIGN
1E00 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER A WITH RING BELOW
@@ -4043,9 +4109,12 @@ A7C0 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER OLD POLI
A7C2 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER ANGLICANA W
A7C4..A7C7 ; Changes_When_Lowercased # L& [4] LATIN CAPITAL LETTER C WITH PALATAL HOOK..LATIN CAPITAL LETTER D WITH SHORT STROKE OVERLAY
A7C9 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER S WITH SHORT STROKE OVERLAY
+A7CB..A7CC ; Changes_When_Lowercased # L& [2] LATIN CAPITAL LETTER RAMS HORN..LATIN CAPITAL LETTER S WITH DIAGONAL STROKE
A7D0 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER CLOSED INSULAR G
A7D6 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER MIDDLE SCOTS S
A7D8 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER SIGMOID S
+A7DA ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER LAMBDA
+A7DC ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER LAMBDA WITH STROKE
A7F5 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER REVERSED HALF H
FF21..FF3A ; Changes_When_Lowercased # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z
10400..10427 ; Changes_When_Lowercased # L& [40] DESERET CAPITAL LETTER LONG I..DESERET CAPITAL LETTER EW
@@ -4055,11 +4124,12 @@ FF21..FF3A ; Changes_When_Lowercased # L& [26] FULLWIDTH LATIN CAPITAL LETTE
1058C..10592 ; Changes_When_Lowercased # L& [7] VITHKUQI CAPITAL LETTER SE..VITHKUQI CAPITAL LETTER XE
10594..10595 ; Changes_When_Lowercased # L& [2] VITHKUQI CAPITAL LETTER Y..VITHKUQI CAPITAL LETTER ZE
10C80..10CB2 ; Changes_When_Lowercased # L& [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US
+10D50..10D65 ; Changes_When_Lowercased # L& [22] GARAY CAPITAL LETTER A..GARAY CAPITAL LETTER OLD NA
118A0..118BF ; Changes_When_Lowercased # L& [32] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI CAPITAL LETTER VIYO
16E40..16E5F ; Changes_When_Lowercased # L& [32] MEDEFAIDRIN CAPITAL LETTER M..MEDEFAIDRIN CAPITAL LETTER Y
1E900..1E921 ; Changes_When_Lowercased # L& [34] ADLAM CAPITAL LETTER ALIF..ADLAM CAPITAL LETTER SHA
-# Total code points: 1433
+# Total code points: 1460
# ================================================
@@ -4140,7 +4210,7 @@ FF21..FF3A ; Changes_When_Lowercased # L& [26] FULLWIDTH LATIN CAPITAL LETTE
018C ; Changes_When_Uppercased # L& LATIN SMALL LETTER D WITH TOPBAR
0192 ; Changes_When_Uppercased # L& LATIN SMALL LETTER F WITH HOOK
0195 ; Changes_When_Uppercased # L& LATIN SMALL LETTER HV
-0199..019A ; Changes_When_Uppercased # L& [2] LATIN SMALL LETTER K WITH HOOK..LATIN SMALL LETTER L WITH BAR
+0199..019B ; Changes_When_Uppercased # L& [3] LATIN SMALL LETTER K WITH HOOK..LATIN SMALL LETTER LAMBDA WITH STROKE
019E ; Changes_When_Uppercased # L& LATIN SMALL LETTER N WITH LONG RIGHT LEG
01A1 ; Changes_When_Uppercased # L& LATIN SMALL LETTER O WITH HORN
01A3 ; Changes_When_Uppercased # L& LATIN SMALL LETTER OI
@@ -4216,8 +4286,7 @@ FF21..FF3A ; Changes_When_Lowercased # L& [26] FULLWIDTH LATIN CAPITAL LETTE
0259 ; Changes_When_Uppercased # L& LATIN SMALL LETTER SCHWA
025B..025C ; Changes_When_Uppercased # L& [2] LATIN SMALL LETTER OPEN E..LATIN SMALL LETTER REVERSED OPEN E
0260..0261 ; Changes_When_Uppercased # L& [2] LATIN SMALL LETTER G WITH HOOK..LATIN SMALL LETTER SCRIPT G
-0263 ; Changes_When_Uppercased # L& LATIN SMALL LETTER GAMMA
-0265..0266 ; Changes_When_Uppercased # L& [2] LATIN SMALL LETTER TURNED H..LATIN SMALL LETTER H WITH HOOK
+0263..0266 ; Changes_When_Uppercased # L& [4] LATIN SMALL LETTER GAMMA..LATIN SMALL LETTER H WITH HOOK
0268..026C ; Changes_When_Uppercased # L& [5] LATIN SMALL LETTER I WITH STROKE..LATIN SMALL LETTER L WITH BELT
026F ; Changes_When_Uppercased # L& LATIN SMALL LETTER TURNED M
0271..0272 ; Changes_When_Uppercased # L& [2] LATIN SMALL LETTER M WITH HOOK..LATIN SMALL LETTER N WITH LEFT HOOK
@@ -4357,6 +4426,7 @@ FF21..FF3A ; Changes_When_Lowercased # L& [26] FULLWIDTH LATIN CAPITAL LETTE
10FD..10FF ; Changes_When_Uppercased # L& [3] GEORGIAN LETTER AEN..GEORGIAN LETTER LABIAL SIGN
13F8..13FD ; Changes_When_Uppercased # L& [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV
1C80..1C88 ; Changes_When_Uppercased # L& [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK
+1C8A ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER TJE
1D79 ; Changes_When_Uppercased # L& LATIN SMALL LETTER INSULAR G
1D7D ; Changes_When_Uppercased # L& LATIN SMALL LETTER P WITH STROKE
1D8E ; Changes_When_Uppercased # L& LATIN SMALL LETTER Z WITH PALATAL HOOK
@@ -4676,9 +4746,11 @@ A7C1 ; Changes_When_Uppercased # L& LATIN SMALL LETTER OLD POLISH
A7C3 ; Changes_When_Uppercased # L& LATIN SMALL LETTER ANGLICANA W
A7C8 ; Changes_When_Uppercased # L& LATIN SMALL LETTER D WITH SHORT STROKE OVERLAY
A7CA ; Changes_When_Uppercased # L& LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY
+A7CD ; Changes_When_Uppercased # L& LATIN SMALL LETTER S WITH DIAGONAL STROKE
A7D1 ; Changes_When_Uppercased # L& LATIN SMALL LETTER CLOSED INSULAR G
A7D7 ; Changes_When_Uppercased # L& LATIN SMALL LETTER MIDDLE SCOTS S
A7D9 ; Changes_When_Uppercased # L& LATIN SMALL LETTER SIGMOID S
+A7DB ; Changes_When_Uppercased # L& LATIN SMALL LETTER LAMBDA
A7F6 ; Changes_When_Uppercased # L& LATIN SMALL LETTER REVERSED HALF H
AB53 ; Changes_When_Uppercased # L& LATIN SMALL LETTER CHI
AB70..ABBF ; Changes_When_Uppercased # L& [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA
@@ -4692,11 +4764,12 @@ FF41..FF5A ; Changes_When_Uppercased # L& [26] FULLWIDTH LATIN SMALL LETTER
105B3..105B9 ; Changes_When_Uppercased # L& [7] VITHKUQI SMALL LETTER SE..VITHKUQI SMALL LETTER XE
105BB..105BC ; Changes_When_Uppercased # L& [2] VITHKUQI SMALL LETTER Y..VITHKUQI SMALL LETTER ZE
10CC0..10CF2 ; Changes_When_Uppercased # L& [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US
+10D70..10D85 ; Changes_When_Uppercased # L& [22] GARAY SMALL LETTER A..GARAY SMALL LETTER OLD NA
118C0..118DF ; Changes_When_Uppercased # L& [32] WARANG CITI SMALL LETTER NGAA..WARANG CITI SMALL LETTER VIYO
16E60..16E7F ; Changes_When_Uppercased # L& [32] MEDEFAIDRIN SMALL LETTER M..MEDEFAIDRIN SMALL LETTER Y
1E922..1E943 ; Changes_When_Uppercased # L& [34] ADLAM SMALL LETTER ALIF..ADLAM SMALL LETTER SHA
-# Total code points: 1525
+# Total code points: 1552
# ================================================
@@ -4777,7 +4850,7 @@ FF41..FF5A ; Changes_When_Uppercased # L& [26] FULLWIDTH LATIN SMALL LETTER
018C ; Changes_When_Titlecased # L& LATIN SMALL LETTER D WITH TOPBAR
0192 ; Changes_When_Titlecased # L& LATIN SMALL LETTER F WITH HOOK
0195 ; Changes_When_Titlecased # L& LATIN SMALL LETTER HV
-0199..019A ; Changes_When_Titlecased # L& [2] LATIN SMALL LETTER K WITH HOOK..LATIN SMALL LETTER L WITH BAR
+0199..019B ; Changes_When_Titlecased # L& [3] LATIN SMALL LETTER K WITH HOOK..LATIN SMALL LETTER LAMBDA WITH STROKE
019E ; Changes_When_Titlecased # L& LATIN SMALL LETTER N WITH LONG RIGHT LEG
01A1 ; Changes_When_Titlecased # L& LATIN SMALL LETTER O WITH HORN
01A3 ; Changes_When_Titlecased # L& LATIN SMALL LETTER OI
@@ -4854,8 +4927,7 @@ FF41..FF5A ; Changes_When_Uppercased # L& [26] FULLWIDTH LATIN SMALL LETTER
0259 ; Changes_When_Titlecased # L& LATIN SMALL LETTER SCHWA
025B..025C ; Changes_When_Titlecased # L& [2] LATIN SMALL LETTER OPEN E..LATIN SMALL LETTER REVERSED OPEN E
0260..0261 ; Changes_When_Titlecased # L& [2] LATIN SMALL LETTER G WITH HOOK..LATIN SMALL LETTER SCRIPT G
-0263 ; Changes_When_Titlecased # L& LATIN SMALL LETTER GAMMA
-0265..0266 ; Changes_When_Titlecased # L& [2] LATIN SMALL LETTER TURNED H..LATIN SMALL LETTER H WITH HOOK
+0263..0266 ; Changes_When_Titlecased # L& [4] LATIN SMALL LETTER GAMMA..LATIN SMALL LETTER H WITH HOOK
0268..026C ; Changes_When_Titlecased # L& [5] LATIN SMALL LETTER I WITH STROKE..LATIN SMALL LETTER L WITH BELT
026F ; Changes_When_Titlecased # L& LATIN SMALL LETTER TURNED M
0271..0272 ; Changes_When_Titlecased # L& [2] LATIN SMALL LETTER M WITH HOOK..LATIN SMALL LETTER N WITH LEFT HOOK
@@ -4993,6 +5065,7 @@ FF41..FF5A ; Changes_When_Uppercased # L& [26] FULLWIDTH LATIN SMALL LETTER
0561..0587 ; Changes_When_Titlecased # L& [39] ARMENIAN SMALL LETTER AYB..ARMENIAN SMALL LIGATURE ECH YIWN
13F8..13FD ; Changes_When_Titlecased # L& [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV
1C80..1C88 ; Changes_When_Titlecased # L& [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK
+1C8A ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER TJE
1D79 ; Changes_When_Titlecased # L& LATIN SMALL LETTER INSULAR G
1D7D ; Changes_When_Titlecased # L& LATIN SMALL LETTER P WITH STROKE
1D8E ; Changes_When_Titlecased # L& LATIN SMALL LETTER Z WITH PALATAL HOOK
@@ -5312,9 +5385,11 @@ A7C1 ; Changes_When_Titlecased # L& LATIN SMALL LETTER OLD POLISH
A7C3 ; Changes_When_Titlecased # L& LATIN SMALL LETTER ANGLICANA W
A7C8 ; Changes_When_Titlecased # L& LATIN SMALL LETTER D WITH SHORT STROKE OVERLAY
A7CA ; Changes_When_Titlecased # L& LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY
+A7CD ; Changes_When_Titlecased # L& LATIN SMALL LETTER S WITH DIAGONAL STROKE
A7D1 ; Changes_When_Titlecased # L& LATIN SMALL LETTER CLOSED INSULAR G
A7D7 ; Changes_When_Titlecased # L& LATIN SMALL LETTER MIDDLE SCOTS S
A7D9 ; Changes_When_Titlecased # L& LATIN SMALL LETTER SIGMOID S
+A7DB ; Changes_When_Titlecased # L& LATIN SMALL LETTER LAMBDA
A7F6 ; Changes_When_Titlecased # L& LATIN SMALL LETTER REVERSED HALF H
AB53 ; Changes_When_Titlecased # L& LATIN SMALL LETTER CHI
AB70..ABBF ; Changes_When_Titlecased # L& [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA
@@ -5328,11 +5403,12 @@ FF41..FF5A ; Changes_When_Titlecased # L& [26] FULLWIDTH LATIN SMALL LETTER
105B3..105B9 ; Changes_When_Titlecased # L& [7] VITHKUQI SMALL LETTER SE..VITHKUQI SMALL LETTER XE
105BB..105BC ; Changes_When_Titlecased # L& [2] VITHKUQI SMALL LETTER Y..VITHKUQI SMALL LETTER ZE
10CC0..10CF2 ; Changes_When_Titlecased # L& [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US
+10D70..10D85 ; Changes_When_Titlecased # L& [22] GARAY SMALL LETTER A..GARAY SMALL LETTER OLD NA
118C0..118DF ; Changes_When_Titlecased # L& [32] WARANG CITI SMALL LETTER NGAA..WARANG CITI SMALL LETTER VIYO
16E60..16E7F ; Changes_When_Titlecased # L& [32] MEDEFAIDRIN SMALL LETTER M..MEDEFAIDRIN SMALL LETTER Y
1E922..1E943 ; Changes_When_Titlecased # L& [34] ADLAM SMALL LETTER ALIF..ADLAM SMALL LETTER SHA
-# Total code points: 1452
+# Total code points: 1479
# ================================================
@@ -5623,7 +5699,7 @@ FF41..FF5A ; Changes_When_Titlecased # L& [26] FULLWIDTH LATIN SMALL LETTER
10C7 ; Changes_When_Casefolded # L& GEORGIAN CAPITAL LETTER YN
10CD ; Changes_When_Casefolded # L& GEORGIAN CAPITAL LETTER AEN
13F8..13FD ; Changes_When_Casefolded # L& [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV
-1C80..1C88 ; Changes_When_Casefolded # L& [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK
+1C80..1C89 ; Changes_When_Casefolded # L& [10] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC CAPITAL LETTER TJE
1C90..1CBA ; Changes_When_Casefolded # L& [43] GEORGIAN MTAVRULI CAPITAL LETTER AN..GEORGIAN MTAVRULI CAPITAL LETTER AIN
1CBD..1CBF ; Changes_When_Casefolded # L& [3] GEORGIAN MTAVRULI CAPITAL LETTER AEN..GEORGIAN MTAVRULI CAPITAL LETTER LABIAL SIGN
1E00 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER A WITH RING BELOW
@@ -5945,9 +6021,12 @@ A7C0 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER OLD POLI
A7C2 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER ANGLICANA W
A7C4..A7C7 ; Changes_When_Casefolded # L& [4] LATIN CAPITAL LETTER C WITH PALATAL HOOK..LATIN CAPITAL LETTER D WITH SHORT STROKE OVERLAY
A7C9 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER S WITH SHORT STROKE OVERLAY
+A7CB..A7CC ; Changes_When_Casefolded # L& [2] LATIN CAPITAL LETTER RAMS HORN..LATIN CAPITAL LETTER S WITH DIAGONAL STROKE
A7D0 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER CLOSED INSULAR G
A7D6 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER MIDDLE SCOTS S
A7D8 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER SIGMOID S
+A7DA ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER LAMBDA
+A7DC ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER LAMBDA WITH STROKE
A7F5 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER REVERSED HALF H
AB70..ABBF ; Changes_When_Casefolded # L& [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA
FB00..FB06 ; Changes_When_Casefolded # L& [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST
@@ -5960,11 +6039,12 @@ FF21..FF3A ; Changes_When_Casefolded # L& [26] FULLWIDTH LATIN CAPITAL LETTE
1058C..10592 ; Changes_When_Casefolded # L& [7] VITHKUQI CAPITAL LETTER SE..VITHKUQI CAPITAL LETTER XE
10594..10595 ; Changes_When_Casefolded # L& [2] VITHKUQI CAPITAL LETTER Y..VITHKUQI CAPITAL LETTER ZE
10C80..10CB2 ; Changes_When_Casefolded # L& [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US
+10D50..10D65 ; Changes_When_Casefolded # L& [22] GARAY CAPITAL LETTER A..GARAY CAPITAL LETTER OLD NA
118A0..118BF ; Changes_When_Casefolded # L& [32] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI CAPITAL LETTER VIYO
16E40..16E5F ; Changes_When_Casefolded # L& [32] MEDEFAIDRIN CAPITAL LETTER M..MEDEFAIDRIN CAPITAL LETTER Y
1E900..1E921 ; Changes_When_Casefolded # L& [34] ADLAM CAPITAL LETTER ALIF..ADLAM CAPITAL LETTER SHA
-# Total code points: 1506
+# Total code points: 1533
# ================================================
@@ -5980,8 +6060,7 @@ FF21..FF3A ; Changes_When_Casefolded # L& [26] FULLWIDTH LATIN CAPITAL LETTE
00D8..00F6 ; Changes_When_Casemapped # L& [31] LATIN CAPITAL LETTER O WITH STROKE..LATIN SMALL LETTER O WITH DIAERESIS
00F8..0137 ; Changes_When_Casemapped # L& [64] LATIN SMALL LETTER O WITH STROKE..LATIN SMALL LETTER K WITH CEDILLA
0139..018C ; Changes_When_Casemapped # L& [84] LATIN CAPITAL LETTER L WITH ACUTE..LATIN SMALL LETTER D WITH TOPBAR
-018E..019A ; Changes_When_Casemapped # L& [13] LATIN CAPITAL LETTER REVERSED E..LATIN SMALL LETTER L WITH BAR
-019C..01A9 ; Changes_When_Casemapped # L& [14] LATIN CAPITAL LETTER TURNED M..LATIN CAPITAL LETTER ESH
+018E..01A9 ; Changes_When_Casemapped # L& [28] LATIN CAPITAL LETTER REVERSED E..LATIN CAPITAL LETTER ESH
01AC..01B9 ; Changes_When_Casemapped # L& [14] LATIN CAPITAL LETTER T WITH HOOK..LATIN SMALL LETTER EZH REVERSED
01BC..01BD ; Changes_When_Casemapped # L& [2] LATIN CAPITAL LETTER TONE FIVE..LATIN SMALL LETTER TONE FIVE
01BF ; Changes_When_Casemapped # L& LATIN LETTER WYNN
@@ -5992,8 +6071,7 @@ FF21..FF3A ; Changes_When_Casefolded # L& [26] FULLWIDTH LATIN CAPITAL LETTE
0259 ; Changes_When_Casemapped # L& LATIN SMALL LETTER SCHWA
025B..025C ; Changes_When_Casemapped # L& [2] LATIN SMALL LETTER OPEN E..LATIN SMALL LETTER REVERSED OPEN E
0260..0261 ; Changes_When_Casemapped # L& [2] LATIN SMALL LETTER G WITH HOOK..LATIN SMALL LETTER SCRIPT G
-0263 ; Changes_When_Casemapped # L& LATIN SMALL LETTER GAMMA
-0265..0266 ; Changes_When_Casemapped # L& [2] LATIN SMALL LETTER TURNED H..LATIN SMALL LETTER H WITH HOOK
+0263..0266 ; Changes_When_Casemapped # L& [4] LATIN SMALL LETTER GAMMA..LATIN SMALL LETTER H WITH HOOK
0268..026C ; Changes_When_Casemapped # L& [5] LATIN SMALL LETTER I WITH STROKE..LATIN SMALL LETTER L WITH BELT
026F ; Changes_When_Casemapped # L& LATIN SMALL LETTER TURNED M
0271..0272 ; Changes_When_Casemapped # L& [2] LATIN SMALL LETTER M WITH HOOK..LATIN SMALL LETTER N WITH LEFT HOOK
@@ -6027,7 +6105,7 @@ FF21..FF3A ; Changes_When_Casefolded # L& [26] FULLWIDTH LATIN CAPITAL LETTE
10FD..10FF ; Changes_When_Casemapped # L& [3] GEORGIAN LETTER AEN..GEORGIAN LETTER LABIAL SIGN
13A0..13F5 ; Changes_When_Casemapped # L& [86] CHEROKEE LETTER A..CHEROKEE LETTER MV
13F8..13FD ; Changes_When_Casemapped # L& [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV
-1C80..1C88 ; Changes_When_Casemapped # L& [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK
+1C80..1C8A ; Changes_When_Casemapped # L& [11] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER TJE
1C90..1CBA ; Changes_When_Casemapped # L& [43] GEORGIAN MTAVRULI CAPITAL LETTER AN..GEORGIAN MTAVRULI CAPITAL LETTER AIN
1CBD..1CBF ; Changes_When_Casemapped # L& [3] GEORGIAN MTAVRULI CAPITAL LETTER AEN..GEORGIAN MTAVRULI CAPITAL LETTER LABIAL SIGN
1D79 ; Changes_When_Casemapped # L& LATIN SMALL LETTER INSULAR G
@@ -6078,9 +6156,9 @@ A779..A787 ; Changes_When_Casemapped # L& [15] LATIN CAPITAL LETTER INSULAR
A78B..A78D ; Changes_When_Casemapped # L& [3] LATIN CAPITAL LETTER SALTILLO..LATIN CAPITAL LETTER TURNED H
A790..A794 ; Changes_When_Casemapped # L& [5] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER C WITH PALATAL HOOK
A796..A7AE ; Changes_When_Casemapped # L& [25] LATIN CAPITAL LETTER B WITH FLOURISH..LATIN CAPITAL LETTER SMALL CAPITAL I
-A7B0..A7CA ; Changes_When_Casemapped # L& [27] LATIN CAPITAL LETTER TURNED K..LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY
+A7B0..A7CD ; Changes_When_Casemapped # L& [30] LATIN CAPITAL LETTER TURNED K..LATIN SMALL LETTER S WITH DIAGONAL STROKE
A7D0..A7D1 ; Changes_When_Casemapped # L& [2] LATIN CAPITAL LETTER CLOSED INSULAR G..LATIN SMALL LETTER CLOSED INSULAR G
-A7D6..A7D9 ; Changes_When_Casemapped # L& [4] LATIN CAPITAL LETTER MIDDLE SCOTS S..LATIN SMALL LETTER SIGMOID S
+A7D6..A7DC ; Changes_When_Casemapped # L& [7] LATIN CAPITAL LETTER MIDDLE SCOTS S..LATIN CAPITAL LETTER LAMBDA WITH STROKE
A7F5..A7F6 ; Changes_When_Casemapped # L& [2] LATIN CAPITAL LETTER REVERSED HALF H..LATIN SMALL LETTER REVERSED HALF H
AB53 ; Changes_When_Casemapped # L& LATIN SMALL LETTER CHI
AB70..ABBF ; Changes_When_Casemapped # L& [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA
@@ -6101,11 +6179,13 @@ FF41..FF5A ; Changes_When_Casemapped # L& [26] FULLWIDTH LATIN SMALL LETTER
105BB..105BC ; Changes_When_Casemapped # L& [2] VITHKUQI SMALL LETTER Y..VITHKUQI SMALL LETTER ZE
10C80..10CB2 ; Changes_When_Casemapped # L& [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US
10CC0..10CF2 ; Changes_When_Casemapped # L& [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US
+10D50..10D65 ; Changes_When_Casemapped # L& [22] GARAY CAPITAL LETTER A..GARAY CAPITAL LETTER OLD NA
+10D70..10D85 ; Changes_When_Casemapped # L& [22] GARAY SMALL LETTER A..GARAY SMALL LETTER OLD NA
118A0..118DF ; Changes_When_Casemapped # L& [64] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI SMALL LETTER VIYO
16E40..16E7F ; Changes_When_Casemapped # L& [64] MEDEFAIDRIN CAPITAL LETTER M..MEDEFAIDRIN SMALL LETTER Y
1E900..1E943 ; Changes_When_Casemapped # L& [68] ADLAM CAPITAL LETTER ALIF..ADLAM SMALL LETTER SHA
-# Total code points: 2927
+# Total code points: 2981
# ================================================
@@ -6364,7 +6444,7 @@ FF41..FF5A ; Changes_When_Casemapped # L& [26] FULLWIDTH LATIN SMALL LETTER
1C4D..1C4F ; ID_Start # Lo [3] LEPCHA LETTER TTA..LEPCHA LETTER DDA
1C5A..1C77 ; ID_Start # Lo [30] OL CHIKI LETTER LA..OL CHIKI LETTER OH
1C78..1C7D ; ID_Start # Lm [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD
-1C80..1C88 ; ID_Start # L& [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK
+1C80..1C8A ; ID_Start # L& [11] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER TJE
1C90..1CBA ; ID_Start # L& [43] GEORGIAN MTAVRULI CAPITAL LETTER AN..GEORGIAN MTAVRULI CAPITAL LETTER AIN
1CBD..1CBF ; ID_Start # L& [3] GEORGIAN MTAVRULI CAPITAL LETTER AEN..GEORGIAN MTAVRULI CAPITAL LETTER LABIAL SIGN
1CE9..1CEC ; ID_Start # Lo [4] VEDIC SIGN ANUSVARA ANTARGOMUKHA..VEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAIL
@@ -6481,10 +6561,10 @@ A771..A787 ; ID_Start # L& [23] LATIN SMALL LETTER DUM..LATIN SMALL LETTER I
A788 ; ID_Start # Lm MODIFIER LETTER LOW CIRCUMFLEX ACCENT
A78B..A78E ; ID_Start # L& [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT
A78F ; ID_Start # Lo LATIN LETTER SINOLOGICAL DOT
-A790..A7CA ; ID_Start # L& [59] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY
+A790..A7CD ; ID_Start # L& [62] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER S WITH DIAGONAL STROKE
A7D0..A7D1 ; ID_Start # L& [2] LATIN CAPITAL LETTER CLOSED INSULAR G..LATIN SMALL LETTER CLOSED INSULAR G
A7D3 ; ID_Start # L& LATIN SMALL LETTER DOUBLE THORN
-A7D5..A7D9 ; ID_Start # L& [5] LATIN SMALL LETTER DOUBLE WYNN..LATIN SMALL LETTER SIGMOID S
+A7D5..A7DC ; ID_Start # L& [8] LATIN SMALL LETTER DOUBLE WYNN..LATIN CAPITAL LETTER LAMBDA WITH STROKE
A7F2..A7F4 ; ID_Start # Lm [3] MODIFIER LETTER CAPITAL C..MODIFIER LETTER CAPITAL Q
A7F5..A7F6 ; ID_Start # L& [2] LATIN CAPITAL LETTER REVERSED HALF H..LATIN SMALL LETTER REVERSED HALF H
A7F7 ; ID_Start # Lo LATIN EPIGRAPHIC LETTER SIDEWAYS I
@@ -6603,6 +6683,7 @@ FFDA..FFDC ; ID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL
105A3..105B1 ; ID_Start # L& [15] VITHKUQI SMALL LETTER HA..VITHKUQI SMALL LETTER RE
105B3..105B9 ; ID_Start # L& [7] VITHKUQI SMALL LETTER SE..VITHKUQI SMALL LETTER XE
105BB..105BC ; ID_Start # L& [2] VITHKUQI SMALL LETTER Y..VITHKUQI SMALL LETTER ZE
+105C0..105F3 ; ID_Start # Lo [52] TODHRI LETTER A..TODHRI LETTER OO
10600..10736 ; ID_Start # Lo [311] LINEAR A SIGN AB001..LINEAR A SIGN A664
10740..10755 ; ID_Start # Lo [22] LINEAR A SIGN A701 A..LINEAR A SIGN A732 JE
10760..10767 ; ID_Start # Lo [8] LINEAR A SIGN A800..LINEAR A SIGN A807
@@ -6639,8 +6720,15 @@ FFDA..FFDC ; ID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL
10C80..10CB2 ; ID_Start # L& [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US
10CC0..10CF2 ; ID_Start # L& [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US
10D00..10D23 ; ID_Start # Lo [36] HANIFI ROHINGYA LETTER A..HANIFI ROHINGYA MARK NA KHONNA
+10D4A..10D4D ; ID_Start # Lo [4] GARAY VOWEL SIGN A..GARAY VOWEL SIGN EE
+10D4E ; ID_Start # Lm GARAY VOWEL LENGTH MARK
+10D4F ; ID_Start # Lo GARAY SUKUN
+10D50..10D65 ; ID_Start # L& [22] GARAY CAPITAL LETTER A..GARAY CAPITAL LETTER OLD NA
+10D6F ; ID_Start # Lm GARAY REDUPLICATION MARK
+10D70..10D85 ; ID_Start # L& [22] GARAY SMALL LETTER A..GARAY SMALL LETTER OLD NA
10E80..10EA9 ; ID_Start # Lo [42] YEZIDI LETTER ELIF..YEZIDI LETTER ET
10EB0..10EB1 ; ID_Start # Lo [2] YEZIDI LETTER LAM WITH DOT ABOVE..YEZIDI LETTER YOT WITH CIRCUMFLEX ABOVE
+10EC2..10EC4 ; ID_Start # Lo [3] ARABIC LETTER DAL WITH TWO DOTS VERTICALLY BELOW..ARABIC LETTER KAF WITH TWO DOTS VERTICALLY BELOW
10F00..10F1C ; ID_Start # Lo [29] OLD SOGDIAN LETTER ALEPH..OLD SOGDIAN LETTER FINAL TAW WITH VERTICAL TAIL
10F27 ; ID_Start # Lo OLD SOGDIAN LIGATURE AYIN-DALETH
10F30..10F45 ; ID_Start # Lo [22] SOGDIAN LETTER ALEPH..SOGDIAN INDEPENDENT SHIN
@@ -6679,6 +6767,13 @@ FFDA..FFDC ; ID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL
1133D ; ID_Start # Lo GRANTHA SIGN AVAGRAHA
11350 ; ID_Start # Lo GRANTHA OM
1135D..11361 ; ID_Start # Lo [5] GRANTHA SIGN PLUTA..GRANTHA LETTER VOCALIC LL
+11380..11389 ; ID_Start # Lo [10] TULU-TIGALARI LETTER A..TULU-TIGALARI LETTER VOCALIC LL
+1138B ; ID_Start # Lo TULU-TIGALARI LETTER EE
+1138E ; ID_Start # Lo TULU-TIGALARI LETTER AI
+11390..113B5 ; ID_Start # Lo [38] TULU-TIGALARI LETTER OO..TULU-TIGALARI LETTER LLLA
+113B7 ; ID_Start # Lo TULU-TIGALARI SIGN AVAGRAHA
+113D1 ; ID_Start # Lo TULU-TIGALARI REPHA
+113D3 ; ID_Start # Lo TULU-TIGALARI SIGN PLUTA
11400..11434 ; ID_Start # Lo [53] NEWA LETTER A..NEWA LETTER HA
11447..1144A ; ID_Start # Lo [4] NEWA SIGN AVAGRAHA..NEWA SIDDHI
1145F..11461 ; ID_Start # Lo [3] NEWA LETTER VEDIC ANUSVARA..NEWA SIGN UPADHMANIYA
@@ -6713,6 +6808,7 @@ FFDA..FFDC ; ID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL
11A5C..11A89 ; ID_Start # Lo [46] SOYOMBO LETTER KA..SOYOMBO CLUSTER-INITIAL LETTER SA
11A9D ; ID_Start # Lo SOYOMBO MARK PLUTA
11AB0..11AF8 ; ID_Start # Lo [73] CANADIAN SYLLABICS NATTILIK HI..PAU CIN HAU GLOTTAL STOP FINAL
+11BC0..11BE0 ; ID_Start # Lo [33] SUNUWAR LETTER DEVI..SUNUWAR LETTER KLOKO
11C00..11C08 ; ID_Start # Lo [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L
11C0A..11C2E ; ID_Start # Lo [37] BHAIKSUKI LETTER E..BHAIKSUKI LETTER HA
11C40 ; ID_Start # Lo BHAIKSUKI SIGN AVAGRAHA
@@ -6736,7 +6832,9 @@ FFDA..FFDC ; ID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL
12F90..12FF0 ; ID_Start # Lo [97] CYPRO-MINOAN SIGN CM001..CYPRO-MINOAN SIGN CM114
13000..1342F ; ID_Start # Lo [1072] EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH V011D
13441..13446 ; ID_Start # Lo [6] EGYPTIAN HIEROGLYPH FULL BLANK..EGYPTIAN HIEROGLYPH WIDE LOST SIGN
+13460..143FA ; ID_Start # Lo [3995] EGYPTIAN HIEROGLYPH-13460..EGYPTIAN HIEROGLYPH-143FA
14400..14646 ; ID_Start # Lo [583] ANATOLIAN HIEROGLYPH A001..ANATOLIAN HIEROGLYPH A530
+16100..1611D ; ID_Start # Lo [30] GURUNG KHEMA LETTER A..GURUNG KHEMA LETTER SA
16800..16A38 ; ID_Start # Lo [569] BAMUM LETTER PHASE-A NGKUE MFON..BAMUM LETTER PHASE-F VUEQ
16A40..16A5E ; ID_Start # Lo [31] MRO LETTER TA..MRO LETTER TEK
16A70..16ABE ; ID_Start # Lo [79] TANGSA LETTER OZ..TANGSA LETTER ZA
@@ -6745,6 +6843,9 @@ FFDA..FFDC ; ID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL
16B40..16B43 ; ID_Start # Lm [4] PAHAWH HMONG SIGN VOS SEEV..PAHAWH HMONG SIGN IB YAM
16B63..16B77 ; ID_Start # Lo [21] PAHAWH HMONG SIGN VOS LUB..PAHAWH HMONG SIGN CIM NRES TOS
16B7D..16B8F ; ID_Start # Lo [19] PAHAWH HMONG CLAN SIGN TSHEEJ..PAHAWH HMONG CLAN SIGN VWJ
+16D40..16D42 ; ID_Start # Lm [3] KIRAT RAI SIGN ANUSVARA..KIRAT RAI SIGN VISARGA
+16D43..16D6A ; ID_Start # Lo [40] KIRAT RAI LETTER A..KIRAT RAI VOWEL SIGN AU
+16D6B..16D6C ; ID_Start # Lm [2] KIRAT RAI SIGN VIRAMA..KIRAT RAI SIGN SAAT
16E40..16E7F ; ID_Start # L& [64] MEDEFAIDRIN CAPITAL LETTER M..MEDEFAIDRIN SMALL LETTER Y
16F00..16F4A ; ID_Start # Lo [75] MIAO LETTER PA..MIAO LETTER RTE
16F50 ; ID_Start # Lo MIAO LETTER NASALIZATION
@@ -6753,7 +6854,7 @@ FFDA..FFDC ; ID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL
16FE3 ; ID_Start # Lm OLD CHINESE ITERATION MARK
17000..187F7 ; ID_Start # Lo [6136] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187F7
18800..18CD5 ; ID_Start # Lo [1238] TANGUT COMPONENT-001..KHITAN SMALL SCRIPT CHARACTER-18CD5
-18D00..18D08 ; ID_Start # Lo [9] TANGUT IDEOGRAPH-18D00..TANGUT IDEOGRAPH-18D08
+18CFF..18D08 ; ID_Start # Lo [10] KHITAN SMALL SCRIPT CHARACTER-18CFF..TANGUT IDEOGRAPH-18D08
1AFF0..1AFF3 ; ID_Start # Lm [4] KATAKANA LETTER MINNAN TONE-2..KATAKANA LETTER MINNAN TONE-5
1AFF5..1AFFB ; ID_Start # Lm [7] KATAKANA LETTER MINNAN TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-5
1AFFD..1AFFE ; ID_Start # Lm [2] KATAKANA LETTER MINNAN NASALIZED TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-8
@@ -6809,6 +6910,8 @@ FFDA..FFDC ; ID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL
1E2C0..1E2EB ; ID_Start # Lo [44] WANCHO LETTER AA..WANCHO LETTER YIH
1E4D0..1E4EA ; ID_Start # Lo [27] NAG MUNDARI LETTER O..NAG MUNDARI LETTER ELL
1E4EB ; ID_Start # Lm NAG MUNDARI SIGN OJOD
+1E5D0..1E5ED ; ID_Start # Lo [30] OL ONAL LETTER O..OL ONAL LETTER EG
+1E5F0 ; ID_Start # Lo OL ONAL SIGN HODDOND
1E7E0..1E7E6 ; ID_Start # Lo [7] ETHIOPIC SYLLABLE HHYA..ETHIOPIC SYLLABLE HHYO
1E7E8..1E7EB ; ID_Start # Lo [4] ETHIOPIC SYLLABLE GURAGE HHWA..ETHIOPIC SYLLABLE HHWE
1E7ED..1E7EE ; ID_Start # Lo [2] ETHIOPIC SYLLABLE GURAGE MWI..ETHIOPIC SYLLABLE GURAGE MWEE
@@ -6859,7 +6962,7 @@ FFDA..FFDC ; ID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL
30000..3134A ; ID_Start # Lo [4939] CJK UNIFIED IDEOGRAPH-30000..CJK UNIFIED IDEOGRAPH-3134A
31350..323AF ; ID_Start # Lo [4192] CJK UNIFIED IDEOGRAPH-31350..CJK UNIFIED IDEOGRAPH-323AF
-# Total code points: 136967
+# Total code points: 141269
# ================================================
@@ -6966,7 +7069,7 @@ FFDA..FFDC ; ID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL
0860..086A ; ID_Continue # Lo [11] SYRIAC LETTER MALAYALAM NGA..SYRIAC LETTER MALAYALAM SSA
0870..0887 ; ID_Continue # Lo [24] ARABIC LETTER ALEF WITH ATTACHED FATHA..ARABIC BASELINE ROUND DOT
0889..088E ; ID_Continue # Lo [6] ARABIC LETTER NOON WITH INVERTED SMALL V..ARABIC VERTICAL TAIL
-0898..089F ; ID_Continue # Mn [8] ARABIC SMALL HIGH WORD AL-JUZ..ARABIC HALF MADDA OVER MADDA
+0897..089F ; ID_Continue # Mn [9] ARABIC PEPET..ARABIC HALF MADDA OVER MADDA
08A0..08C8 ; ID_Continue # Lo [41] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER GRAF
08C9 ; ID_Continue # Lm ARABIC SMALL FARSI YEH
08CA..08E1 ; ID_Continue # Mn [24] ARABIC SMALL HIGH FARSI YEH..ARABIC SMALL HIGH SIGN SAFHA
@@ -7399,7 +7502,7 @@ FFDA..FFDC ; ID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL
1C50..1C59 ; ID_Continue # Nd [10] OL CHIKI DIGIT ZERO..OL CHIKI DIGIT NINE
1C5A..1C77 ; ID_Continue # Lo [30] OL CHIKI LETTER LA..OL CHIKI LETTER OH
1C78..1C7D ; ID_Continue # Lm [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD
-1C80..1C88 ; ID_Continue # L& [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK
+1C80..1C8A ; ID_Continue # L& [11] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER TJE
1C90..1CBA ; ID_Continue # L& [43] GEORGIAN MTAVRULI CAPITAL LETTER AN..GEORGIAN MTAVRULI CAPITAL LETTER AIN
1CBD..1CBF ; ID_Continue # L& [3] GEORGIAN MTAVRULI CAPITAL LETTER AEN..GEORGIAN MTAVRULI CAPITAL LETTER LABIAL SIGN
1CD0..1CD2 ; ID_Continue # Mn [3] VEDIC TONE KARSHANA..VEDIC TONE PRENKHA
@@ -7543,10 +7646,10 @@ A771..A787 ; ID_Continue # L& [23] LATIN SMALL LETTER DUM..LATIN SMALL LETTE
A788 ; ID_Continue # Lm MODIFIER LETTER LOW CIRCUMFLEX ACCENT
A78B..A78E ; ID_Continue # L& [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT
A78F ; ID_Continue # Lo LATIN LETTER SINOLOGICAL DOT
-A790..A7CA ; ID_Continue # L& [59] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY
+A790..A7CD ; ID_Continue # L& [62] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER S WITH DIAGONAL STROKE
A7D0..A7D1 ; ID_Continue # L& [2] LATIN CAPITAL LETTER CLOSED INSULAR G..LATIN SMALL LETTER CLOSED INSULAR G
A7D3 ; ID_Continue # L& LATIN SMALL LETTER DOUBLE THORN
-A7D5..A7D9 ; ID_Continue # L& [5] LATIN SMALL LETTER DOUBLE WYNN..LATIN SMALL LETTER SIGMOID S
+A7D5..A7DC ; ID_Continue # L& [8] LATIN SMALL LETTER DOUBLE WYNN..LATIN CAPITAL LETTER LAMBDA WITH STROKE
A7F2..A7F4 ; ID_Continue # Lm [3] MODIFIER LETTER CAPITAL C..MODIFIER LETTER CAPITAL Q
A7F5..A7F6 ; ID_Continue # L& [2] LATIN CAPITAL LETTER REVERSED HALF H..LATIN SMALL LETTER REVERSED HALF H
A7F7 ; ID_Continue # Lo LATIN EPIGRAPHIC LETTER SIDEWAYS I
@@ -7735,6 +7838,7 @@ FFDA..FFDC ; ID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HAN
105A3..105B1 ; ID_Continue # L& [15] VITHKUQI SMALL LETTER HA..VITHKUQI SMALL LETTER RE
105B3..105B9 ; ID_Continue # L& [7] VITHKUQI SMALL LETTER SE..VITHKUQI SMALL LETTER XE
105BB..105BC ; ID_Continue # L& [2] VITHKUQI SMALL LETTER Y..VITHKUQI SMALL LETTER ZE
+105C0..105F3 ; ID_Continue # Lo [52] TODHRI LETTER A..TODHRI LETTER OO
10600..10736 ; ID_Continue # Lo [311] LINEAR A SIGN AB001..LINEAR A SIGN A664
10740..10755 ; ID_Continue # Lo [22] LINEAR A SIGN A701 A..LINEAR A SIGN A732 JE
10760..10767 ; ID_Continue # Lo [8] LINEAR A SIGN A800..LINEAR A SIGN A807
@@ -7779,10 +7883,19 @@ FFDA..FFDC ; ID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HAN
10D00..10D23 ; ID_Continue # Lo [36] HANIFI ROHINGYA LETTER A..HANIFI ROHINGYA MARK NA KHONNA
10D24..10D27 ; ID_Continue # Mn [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI
10D30..10D39 ; ID_Continue # Nd [10] HANIFI ROHINGYA DIGIT ZERO..HANIFI ROHINGYA DIGIT NINE
+10D40..10D49 ; ID_Continue # Nd [10] GARAY DIGIT ZERO..GARAY DIGIT NINE
+10D4A..10D4D ; ID_Continue # Lo [4] GARAY VOWEL SIGN A..GARAY VOWEL SIGN EE
+10D4E ; ID_Continue # Lm GARAY VOWEL LENGTH MARK
+10D4F ; ID_Continue # Lo GARAY SUKUN
+10D50..10D65 ; ID_Continue # L& [22] GARAY CAPITAL LETTER A..GARAY CAPITAL LETTER OLD NA
+10D69..10D6D ; ID_Continue # Mn [5] GARAY VOWEL SIGN E..GARAY CONSONANT NASALIZATION MARK
+10D6F ; ID_Continue # Lm GARAY REDUPLICATION MARK
+10D70..10D85 ; ID_Continue # L& [22] GARAY SMALL LETTER A..GARAY SMALL LETTER OLD NA
10E80..10EA9 ; ID_Continue # Lo [42] YEZIDI LETTER ELIF..YEZIDI LETTER ET
10EAB..10EAC ; ID_Continue # Mn [2] YEZIDI COMBINING HAMZA MARK..YEZIDI COMBINING MADDA MARK
10EB0..10EB1 ; ID_Continue # Lo [2] YEZIDI LETTER LAM WITH DOT ABOVE..YEZIDI LETTER YOT WITH CIRCUMFLEX ABOVE
-10EFD..10EFF ; ID_Continue # Mn [3] ARABIC SMALL LOW WORD SAKTA..ARABIC SMALL LOW WORD MADDA
+10EC2..10EC4 ; ID_Continue # Lo [3] ARABIC LETTER DAL WITH TWO DOTS VERTICALLY BELOW..ARABIC LETTER KAF WITH TWO DOTS VERTICALLY BELOW
+10EFC..10EFF ; ID_Continue # Mn [4] ARABIC COMBINING ALEF OVERLAY..ARABIC SMALL LOW WORD MADDA
10F00..10F1C ; ID_Continue # Lo [29] OLD SOGDIAN LETTER ALEPH..OLD SOGDIAN LETTER FINAL TAW WITH VERTICAL TAIL
10F27 ; ID_Continue # Lo OLD SOGDIAN LIGATURE AYIN-DALETH
10F30..10F45 ; ID_Continue # Lo [22] SOGDIAN LETTER ALEPH..SOGDIAN INDEPENDENT SHIN
@@ -7878,6 +7991,24 @@ FFDA..FFDC ; ID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HAN
11362..11363 ; ID_Continue # Mc [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL
11366..1136C ; ID_Continue # Mn [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX
11370..11374 ; ID_Continue # Mn [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA
+11380..11389 ; ID_Continue # Lo [10] TULU-TIGALARI LETTER A..TULU-TIGALARI LETTER VOCALIC LL
+1138B ; ID_Continue # Lo TULU-TIGALARI LETTER EE
+1138E ; ID_Continue # Lo TULU-TIGALARI LETTER AI
+11390..113B5 ; ID_Continue # Lo [38] TULU-TIGALARI LETTER OO..TULU-TIGALARI LETTER LLLA
+113B7 ; ID_Continue # Lo TULU-TIGALARI SIGN AVAGRAHA
+113B8..113BA ; ID_Continue # Mc [3] TULU-TIGALARI VOWEL SIGN AA..TULU-TIGALARI VOWEL SIGN II
+113BB..113C0 ; ID_Continue # Mn [6] TULU-TIGALARI VOWEL SIGN U..TULU-TIGALARI VOWEL SIGN VOCALIC LL
+113C2 ; ID_Continue # Mc TULU-TIGALARI VOWEL SIGN EE
+113C5 ; ID_Continue # Mc TULU-TIGALARI VOWEL SIGN AI
+113C7..113CA ; ID_Continue # Mc [4] TULU-TIGALARI VOWEL SIGN OO..TULU-TIGALARI SIGN CANDRA ANUNASIKA
+113CC..113CD ; ID_Continue # Mc [2] TULU-TIGALARI SIGN ANUSVARA..TULU-TIGALARI SIGN VISARGA
+113CE ; ID_Continue # Mn TULU-TIGALARI SIGN VIRAMA
+113CF ; ID_Continue # Mc TULU-TIGALARI SIGN LOOPED VIRAMA
+113D0 ; ID_Continue # Mn TULU-TIGALARI CONJOINER
+113D1 ; ID_Continue # Lo TULU-TIGALARI REPHA
+113D2 ; ID_Continue # Mn TULU-TIGALARI GEMINATION MARK
+113D3 ; ID_Continue # Lo TULU-TIGALARI SIGN PLUTA
+113E1..113E2 ; ID_Continue # Mn [2] TULU-TIGALARI VEDIC TONE SVARITA..TULU-TIGALARI VEDIC TONE ANUDATTA
11400..11434 ; ID_Continue # Lo [53] NEWA LETTER A..NEWA LETTER HA
11435..11437 ; ID_Continue # Mc [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II
11438..1143F ; ID_Continue # Mn [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI
@@ -7929,8 +8060,11 @@ FFDA..FFDC ; ID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HAN
116B7 ; ID_Continue # Mn TAKRI SIGN NUKTA
116B8 ; ID_Continue # Lo TAKRI LETTER ARCHAIC KHA
116C0..116C9 ; ID_Continue # Nd [10] TAKRI DIGIT ZERO..TAKRI DIGIT NINE
+116D0..116E3 ; ID_Continue # Nd [20] MYANMAR PAO DIGIT ZERO..MYANMAR EASTERN PWO KAREN DIGIT NINE
11700..1171A ; ID_Continue # Lo [27] AHOM LETTER KA..AHOM LETTER ALTERNATE BA
-1171D..1171F ; ID_Continue # Mn [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA
+1171D ; ID_Continue # Mn AHOM CONSONANT SIGN MEDIAL LA
+1171E ; ID_Continue # Mc AHOM CONSONANT SIGN MEDIAL RA
+1171F ; ID_Continue # Mn AHOM CONSONANT SIGN MEDIAL LIGATING RA
11720..11721 ; ID_Continue # Mc [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA
11722..11725 ; ID_Continue # Mn [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU
11726 ; ID_Continue # Mc AHOM VOWEL SIGN E
@@ -7988,6 +8122,8 @@ FFDA..FFDC ; ID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HAN
11A98..11A99 ; ID_Continue # Mn [2] SOYOMBO GEMINATION MARK..SOYOMBO SUBJOINER
11A9D ; ID_Continue # Lo SOYOMBO MARK PLUTA
11AB0..11AF8 ; ID_Continue # Lo [73] CANADIAN SYLLABICS NATTILIK HI..PAU CIN HAU GLOTTAL STOP FINAL
+11BC0..11BE0 ; ID_Continue # Lo [33] SUNUWAR LETTER DEVI..SUNUWAR LETTER KLOKO
+11BF0..11BF9 ; ID_Continue # Nd [10] SUNUWAR DIGIT ZERO..SUNUWAR DIGIT NINE
11C00..11C08 ; ID_Continue # Lo [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L
11C0A..11C2E ; ID_Continue # Lo [37] BHAIKSUKI LETTER E..BHAIKSUKI LETTER HA
11C2F ; ID_Continue # Mc BHAIKSUKI VOWEL SIGN AA
@@ -8041,6 +8177,7 @@ FFDA..FFDC ; ID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HAN
11F41 ; ID_Continue # Mc KAWI SIGN KILLER
11F42 ; ID_Continue # Mn KAWI CONJOINER
11F50..11F59 ; ID_Continue # Nd [10] KAWI DIGIT ZERO..KAWI DIGIT NINE
+11F5A ; ID_Continue # Mn KAWI SIGN NUKTA
11FB0 ; ID_Continue # Lo LISU LETTER YHA
12000..12399 ; ID_Continue # Lo [922] CUNEIFORM SIGN A..CUNEIFORM SIGN U U
12400..1246E ; ID_Continue # Nl [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM
@@ -8050,7 +8187,13 @@ FFDA..FFDC ; ID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HAN
13440 ; ID_Continue # Mn EGYPTIAN HIEROGLYPH MIRROR HORIZONTALLY
13441..13446 ; ID_Continue # Lo [6] EGYPTIAN HIEROGLYPH FULL BLANK..EGYPTIAN HIEROGLYPH WIDE LOST SIGN
13447..13455 ; ID_Continue # Mn [15] EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP START..EGYPTIAN HIEROGLYPH MODIFIER DAMAGED
+13460..143FA ; ID_Continue # Lo [3995] EGYPTIAN HIEROGLYPH-13460..EGYPTIAN HIEROGLYPH-143FA
14400..14646 ; ID_Continue # Lo [583] ANATOLIAN HIEROGLYPH A001..ANATOLIAN HIEROGLYPH A530
+16100..1611D ; ID_Continue # Lo [30] GURUNG KHEMA LETTER A..GURUNG KHEMA LETTER SA
+1611E..16129 ; ID_Continue # Mn [12] GURUNG KHEMA VOWEL SIGN AA..GURUNG KHEMA VOWEL LENGTH MARK
+1612A..1612C ; ID_Continue # Mc [3] GURUNG KHEMA CONSONANT SIGN MEDIAL YA..GURUNG KHEMA CONSONANT SIGN MEDIAL HA
+1612D..1612F ; ID_Continue # Mn [3] GURUNG KHEMA SIGN ANUSVARA..GURUNG KHEMA SIGN THOLHOMA
+16130..16139 ; ID_Continue # Nd [10] GURUNG KHEMA DIGIT ZERO..GURUNG KHEMA DIGIT NINE
16800..16A38 ; ID_Continue # Lo [569] BAMUM LETTER PHASE-A NGKUE MFON..BAMUM LETTER PHASE-F VUEQ
16A40..16A5E ; ID_Continue # Lo [31] MRO LETTER TA..MRO LETTER TEK
16A60..16A69 ; ID_Continue # Nd [10] MRO DIGIT ZERO..MRO DIGIT NINE
@@ -8064,6 +8207,10 @@ FFDA..FFDC ; ID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HAN
16B50..16B59 ; ID_Continue # Nd [10] PAHAWH HMONG DIGIT ZERO..PAHAWH HMONG DIGIT NINE
16B63..16B77 ; ID_Continue # Lo [21] PAHAWH HMONG SIGN VOS LUB..PAHAWH HMONG SIGN CIM NRES TOS
16B7D..16B8F ; ID_Continue # Lo [19] PAHAWH HMONG CLAN SIGN TSHEEJ..PAHAWH HMONG CLAN SIGN VWJ
+16D40..16D42 ; ID_Continue # Lm [3] KIRAT RAI SIGN ANUSVARA..KIRAT RAI SIGN VISARGA
+16D43..16D6A ; ID_Continue # Lo [40] KIRAT RAI LETTER A..KIRAT RAI VOWEL SIGN AU
+16D6B..16D6C ; ID_Continue # Lm [2] KIRAT RAI SIGN VIRAMA..KIRAT RAI SIGN SAAT
+16D70..16D79 ; ID_Continue # Nd [10] KIRAT RAI DIGIT ZERO..KIRAT RAI DIGIT NINE
16E40..16E7F ; ID_Continue # L& [64] MEDEFAIDRIN CAPITAL LETTER M..MEDEFAIDRIN SMALL LETTER Y
16F00..16F4A ; ID_Continue # Lo [75] MIAO LETTER PA..MIAO LETTER RTE
16F4F ; ID_Continue # Mn MIAO SIGN CONSONANT MODIFIER BAR
@@ -8077,7 +8224,7 @@ FFDA..FFDC ; ID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HAN
16FF0..16FF1 ; ID_Continue # Mc [2] VIETNAMESE ALTERNATE READING MARK CA..VIETNAMESE ALTERNATE READING MARK NHAY
17000..187F7 ; ID_Continue # Lo [6136] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187F7
18800..18CD5 ; ID_Continue # Lo [1238] TANGUT COMPONENT-001..KHITAN SMALL SCRIPT CHARACTER-18CD5
-18D00..18D08 ; ID_Continue # Lo [9] TANGUT IDEOGRAPH-18D00..TANGUT IDEOGRAPH-18D08
+18CFF..18D08 ; ID_Continue # Lo [10] KHITAN SMALL SCRIPT CHARACTER-18CFF..TANGUT IDEOGRAPH-18D08
1AFF0..1AFF3 ; ID_Continue # Lm [4] KATAKANA LETTER MINNAN TONE-2..KATAKANA LETTER MINNAN TONE-5
1AFF5..1AFFB ; ID_Continue # Lm [7] KATAKANA LETTER MINNAN TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-5
1AFFD..1AFFE ; ID_Continue # Lm [2] KATAKANA LETTER MINNAN NASALIZED TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-8
@@ -8092,6 +8239,7 @@ FFDA..FFDC ; ID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HAN
1BC80..1BC88 ; ID_Continue # Lo [9] DUPLOYAN AFFIX HIGH ACUTE..DUPLOYAN AFFIX HIGH VERTICAL
1BC90..1BC99 ; ID_Continue # Lo [10] DUPLOYAN AFFIX LOW ACUTE..DUPLOYAN AFFIX LOW ARROW
1BC9D..1BC9E ; ID_Continue # Mn [2] DUPLOYAN THICK LETTER SELECTOR..DUPLOYAN DOUBLE MARK
+1CCF0..1CCF9 ; ID_Continue # Nd [10] OUTLINED DIGIT ZERO..OUTLINED DIGIT NINE
1CF00..1CF2D ; ID_Continue # Mn [46] ZNAMENNY COMBINING MARK GORAZDO NIZKO S KRYZHEM ON LEFT..ZNAMENNY COMBINING MARK KRYZH ON LEFT
1CF30..1CF46 ; ID_Continue # Mn [23] ZNAMENNY COMBINING TONAL RANGE MARK MRACHNO..ZNAMENNY PRIZNAK MODIFIER ROG
1D165..1D166 ; ID_Continue # Mc [2] MUSICAL SYMBOL COMBINING STEM..MUSICAL SYMBOL COMBINING SPRECHGESANG STEM
@@ -8163,6 +8311,10 @@ FFDA..FFDC ; ID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HAN
1E4EB ; ID_Continue # Lm NAG MUNDARI SIGN OJOD
1E4EC..1E4EF ; ID_Continue # Mn [4] NAG MUNDARI SIGN MUHOR..NAG MUNDARI SIGN SUTUH
1E4F0..1E4F9 ; ID_Continue # Nd [10] NAG MUNDARI DIGIT ZERO..NAG MUNDARI DIGIT NINE
+1E5D0..1E5ED ; ID_Continue # Lo [30] OL ONAL LETTER O..OL ONAL LETTER EG
+1E5EE..1E5EF ; ID_Continue # Mn [2] OL ONAL SIGN MU..OL ONAL SIGN IKIR
+1E5F0 ; ID_Continue # Lo OL ONAL SIGN HODDOND
+1E5F1..1E5FA ; ID_Continue # Nd [10] OL ONAL DIGIT ZERO..OL ONAL DIGIT NINE
1E7E0..1E7E6 ; ID_Continue # Lo [7] ETHIOPIC SYLLABLE HHYA..ETHIOPIC SYLLABLE HHYO
1E7E8..1E7EB ; ID_Continue # Lo [4] ETHIOPIC SYLLABLE GURAGE HHWA..ETHIOPIC SYLLABLE HHWE
1E7ED..1E7EE ; ID_Continue # Lo [2] ETHIOPIC SYLLABLE GURAGE MWI..ETHIOPIC SYLLABLE GURAGE MWEE
@@ -8218,7 +8370,7 @@ FFDA..FFDC ; ID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HAN
31350..323AF ; ID_Continue # Lo [4192] CJK UNIFIED IDEOGRAPH-31350..CJK UNIFIED IDEOGRAPH-323AF
E0100..E01EF ; ID_Continue # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
-# Total code points: 140108
+# Total code points: 144541
# ================================================
@@ -8474,7 +8626,7 @@ E0100..E01EF ; ID_Continue # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR
1C4D..1C4F ; XID_Start # Lo [3] LEPCHA LETTER TTA..LEPCHA LETTER DDA
1C5A..1C77 ; XID_Start # Lo [30] OL CHIKI LETTER LA..OL CHIKI LETTER OH
1C78..1C7D ; XID_Start # Lm [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD
-1C80..1C88 ; XID_Start # L& [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK
+1C80..1C8A ; XID_Start # L& [11] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER TJE
1C90..1CBA ; XID_Start # L& [43] GEORGIAN MTAVRULI CAPITAL LETTER AN..GEORGIAN MTAVRULI CAPITAL LETTER AIN
1CBD..1CBF ; XID_Start # L& [3] GEORGIAN MTAVRULI CAPITAL LETTER AEN..GEORGIAN MTAVRULI CAPITAL LETTER LABIAL SIGN
1CE9..1CEC ; XID_Start # Lo [4] VEDIC SIGN ANUSVARA ANTARGOMUKHA..VEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAIL
@@ -8590,10 +8742,10 @@ A771..A787 ; XID_Start # L& [23] LATIN SMALL LETTER DUM..LATIN SMALL LETTER
A788 ; XID_Start # Lm MODIFIER LETTER LOW CIRCUMFLEX ACCENT
A78B..A78E ; XID_Start # L& [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT
A78F ; XID_Start # Lo LATIN LETTER SINOLOGICAL DOT
-A790..A7CA ; XID_Start # L& [59] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY
+A790..A7CD ; XID_Start # L& [62] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER S WITH DIAGONAL STROKE
A7D0..A7D1 ; XID_Start # L& [2] LATIN CAPITAL LETTER CLOSED INSULAR G..LATIN SMALL LETTER CLOSED INSULAR G
A7D3 ; XID_Start # L& LATIN SMALL LETTER DOUBLE THORN
-A7D5..A7D9 ; XID_Start # L& [5] LATIN SMALL LETTER DOUBLE WYNN..LATIN SMALL LETTER SIGMOID S
+A7D5..A7DC ; XID_Start # L& [8] LATIN SMALL LETTER DOUBLE WYNN..LATIN CAPITAL LETTER LAMBDA WITH STROKE
A7F2..A7F4 ; XID_Start # Lm [3] MODIFIER LETTER CAPITAL C..MODIFIER LETTER CAPITAL Q
A7F5..A7F6 ; XID_Start # L& [2] LATIN CAPITAL LETTER REVERSED HALF H..LATIN SMALL LETTER REVERSED HALF H
A7F7 ; XID_Start # Lo LATIN EPIGRAPHIC LETTER SIDEWAYS I
@@ -8717,6 +8869,7 @@ FFDA..FFDC ; XID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU
105A3..105B1 ; XID_Start # L& [15] VITHKUQI SMALL LETTER HA..VITHKUQI SMALL LETTER RE
105B3..105B9 ; XID_Start # L& [7] VITHKUQI SMALL LETTER SE..VITHKUQI SMALL LETTER XE
105BB..105BC ; XID_Start # L& [2] VITHKUQI SMALL LETTER Y..VITHKUQI SMALL LETTER ZE
+105C0..105F3 ; XID_Start # Lo [52] TODHRI LETTER A..TODHRI LETTER OO
10600..10736 ; XID_Start # Lo [311] LINEAR A SIGN AB001..LINEAR A SIGN A664
10740..10755 ; XID_Start # Lo [22] LINEAR A SIGN A701 A..LINEAR A SIGN A732 JE
10760..10767 ; XID_Start # Lo [8] LINEAR A SIGN A800..LINEAR A SIGN A807
@@ -8753,8 +8906,15 @@ FFDA..FFDC ; XID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU
10C80..10CB2 ; XID_Start # L& [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US
10CC0..10CF2 ; XID_Start # L& [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US
10D00..10D23 ; XID_Start # Lo [36] HANIFI ROHINGYA LETTER A..HANIFI ROHINGYA MARK NA KHONNA
+10D4A..10D4D ; XID_Start # Lo [4] GARAY VOWEL SIGN A..GARAY VOWEL SIGN EE
+10D4E ; XID_Start # Lm GARAY VOWEL LENGTH MARK
+10D4F ; XID_Start # Lo GARAY SUKUN
+10D50..10D65 ; XID_Start # L& [22] GARAY CAPITAL LETTER A..GARAY CAPITAL LETTER OLD NA
+10D6F ; XID_Start # Lm GARAY REDUPLICATION MARK
+10D70..10D85 ; XID_Start # L& [22] GARAY SMALL LETTER A..GARAY SMALL LETTER OLD NA
10E80..10EA9 ; XID_Start # Lo [42] YEZIDI LETTER ELIF..YEZIDI LETTER ET
10EB0..10EB1 ; XID_Start # Lo [2] YEZIDI LETTER LAM WITH DOT ABOVE..YEZIDI LETTER YOT WITH CIRCUMFLEX ABOVE
+10EC2..10EC4 ; XID_Start # Lo [3] ARABIC LETTER DAL WITH TWO DOTS VERTICALLY BELOW..ARABIC LETTER KAF WITH TWO DOTS VERTICALLY BELOW
10F00..10F1C ; XID_Start # Lo [29] OLD SOGDIAN LETTER ALEPH..OLD SOGDIAN LETTER FINAL TAW WITH VERTICAL TAIL
10F27 ; XID_Start # Lo OLD SOGDIAN LIGATURE AYIN-DALETH
10F30..10F45 ; XID_Start # Lo [22] SOGDIAN LETTER ALEPH..SOGDIAN INDEPENDENT SHIN
@@ -8793,6 +8953,13 @@ FFDA..FFDC ; XID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU
1133D ; XID_Start # Lo GRANTHA SIGN AVAGRAHA
11350 ; XID_Start # Lo GRANTHA OM
1135D..11361 ; XID_Start # Lo [5] GRANTHA SIGN PLUTA..GRANTHA LETTER VOCALIC LL
+11380..11389 ; XID_Start # Lo [10] TULU-TIGALARI LETTER A..TULU-TIGALARI LETTER VOCALIC LL
+1138B ; XID_Start # Lo TULU-TIGALARI LETTER EE
+1138E ; XID_Start # Lo TULU-TIGALARI LETTER AI
+11390..113B5 ; XID_Start # Lo [38] TULU-TIGALARI LETTER OO..TULU-TIGALARI LETTER LLLA
+113B7 ; XID_Start # Lo TULU-TIGALARI SIGN AVAGRAHA
+113D1 ; XID_Start # Lo TULU-TIGALARI REPHA
+113D3 ; XID_Start # Lo TULU-TIGALARI SIGN PLUTA
11400..11434 ; XID_Start # Lo [53] NEWA LETTER A..NEWA LETTER HA
11447..1144A ; XID_Start # Lo [4] NEWA SIGN AVAGRAHA..NEWA SIDDHI
1145F..11461 ; XID_Start # Lo [3] NEWA LETTER VEDIC ANUSVARA..NEWA SIGN UPADHMANIYA
@@ -8827,6 +8994,7 @@ FFDA..FFDC ; XID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU
11A5C..11A89 ; XID_Start # Lo [46] SOYOMBO LETTER KA..SOYOMBO CLUSTER-INITIAL LETTER SA
11A9D ; XID_Start # Lo SOYOMBO MARK PLUTA
11AB0..11AF8 ; XID_Start # Lo [73] CANADIAN SYLLABICS NATTILIK HI..PAU CIN HAU GLOTTAL STOP FINAL
+11BC0..11BE0 ; XID_Start # Lo [33] SUNUWAR LETTER DEVI..SUNUWAR LETTER KLOKO
11C00..11C08 ; XID_Start # Lo [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L
11C0A..11C2E ; XID_Start # Lo [37] BHAIKSUKI LETTER E..BHAIKSUKI LETTER HA
11C40 ; XID_Start # Lo BHAIKSUKI SIGN AVAGRAHA
@@ -8850,7 +9018,9 @@ FFDA..FFDC ; XID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU
12F90..12FF0 ; XID_Start # Lo [97] CYPRO-MINOAN SIGN CM001..CYPRO-MINOAN SIGN CM114
13000..1342F ; XID_Start # Lo [1072] EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH V011D
13441..13446 ; XID_Start # Lo [6] EGYPTIAN HIEROGLYPH FULL BLANK..EGYPTIAN HIEROGLYPH WIDE LOST SIGN
+13460..143FA ; XID_Start # Lo [3995] EGYPTIAN HIEROGLYPH-13460..EGYPTIAN HIEROGLYPH-143FA
14400..14646 ; XID_Start # Lo [583] ANATOLIAN HIEROGLYPH A001..ANATOLIAN HIEROGLYPH A530
+16100..1611D ; XID_Start # Lo [30] GURUNG KHEMA LETTER A..GURUNG KHEMA LETTER SA
16800..16A38 ; XID_Start # Lo [569] BAMUM LETTER PHASE-A NGKUE MFON..BAMUM LETTER PHASE-F VUEQ
16A40..16A5E ; XID_Start # Lo [31] MRO LETTER TA..MRO LETTER TEK
16A70..16ABE ; XID_Start # Lo [79] TANGSA LETTER OZ..TANGSA LETTER ZA
@@ -8859,6 +9029,9 @@ FFDA..FFDC ; XID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU
16B40..16B43 ; XID_Start # Lm [4] PAHAWH HMONG SIGN VOS SEEV..PAHAWH HMONG SIGN IB YAM
16B63..16B77 ; XID_Start # Lo [21] PAHAWH HMONG SIGN VOS LUB..PAHAWH HMONG SIGN CIM NRES TOS
16B7D..16B8F ; XID_Start # Lo [19] PAHAWH HMONG CLAN SIGN TSHEEJ..PAHAWH HMONG CLAN SIGN VWJ
+16D40..16D42 ; XID_Start # Lm [3] KIRAT RAI SIGN ANUSVARA..KIRAT RAI SIGN VISARGA
+16D43..16D6A ; XID_Start # Lo [40] KIRAT RAI LETTER A..KIRAT RAI VOWEL SIGN AU
+16D6B..16D6C ; XID_Start # Lm [2] KIRAT RAI SIGN VIRAMA..KIRAT RAI SIGN SAAT
16E40..16E7F ; XID_Start # L& [64] MEDEFAIDRIN CAPITAL LETTER M..MEDEFAIDRIN SMALL LETTER Y
16F00..16F4A ; XID_Start # Lo [75] MIAO LETTER PA..MIAO LETTER RTE
16F50 ; XID_Start # Lo MIAO LETTER NASALIZATION
@@ -8867,7 +9040,7 @@ FFDA..FFDC ; XID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU
16FE3 ; XID_Start # Lm OLD CHINESE ITERATION MARK
17000..187F7 ; XID_Start # Lo [6136] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187F7
18800..18CD5 ; XID_Start # Lo [1238] TANGUT COMPONENT-001..KHITAN SMALL SCRIPT CHARACTER-18CD5
-18D00..18D08 ; XID_Start # Lo [9] TANGUT IDEOGRAPH-18D00..TANGUT IDEOGRAPH-18D08
+18CFF..18D08 ; XID_Start # Lo [10] KHITAN SMALL SCRIPT CHARACTER-18CFF..TANGUT IDEOGRAPH-18D08
1AFF0..1AFF3 ; XID_Start # Lm [4] KATAKANA LETTER MINNAN TONE-2..KATAKANA LETTER MINNAN TONE-5
1AFF5..1AFFB ; XID_Start # Lm [7] KATAKANA LETTER MINNAN TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-5
1AFFD..1AFFE ; XID_Start # Lm [2] KATAKANA LETTER MINNAN NASALIZED TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-8
@@ -8923,6 +9096,8 @@ FFDA..FFDC ; XID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU
1E2C0..1E2EB ; XID_Start # Lo [44] WANCHO LETTER AA..WANCHO LETTER YIH
1E4D0..1E4EA ; XID_Start # Lo [27] NAG MUNDARI LETTER O..NAG MUNDARI LETTER ELL
1E4EB ; XID_Start # Lm NAG MUNDARI SIGN OJOD
+1E5D0..1E5ED ; XID_Start # Lo [30] OL ONAL LETTER O..OL ONAL LETTER EG
+1E5F0 ; XID_Start # Lo OL ONAL SIGN HODDOND
1E7E0..1E7E6 ; XID_Start # Lo [7] ETHIOPIC SYLLABLE HHYA..ETHIOPIC SYLLABLE HHYO
1E7E8..1E7EB ; XID_Start # Lo [4] ETHIOPIC SYLLABLE GURAGE HHWA..ETHIOPIC SYLLABLE HHWE
1E7ED..1E7EE ; XID_Start # Lo [2] ETHIOPIC SYLLABLE GURAGE MWI..ETHIOPIC SYLLABLE GURAGE MWEE
@@ -8973,7 +9148,7 @@ FFDA..FFDC ; XID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU
30000..3134A ; XID_Start # Lo [4939] CJK UNIFIED IDEOGRAPH-30000..CJK UNIFIED IDEOGRAPH-3134A
31350..323AF ; XID_Start # Lo [4192] CJK UNIFIED IDEOGRAPH-31350..CJK UNIFIED IDEOGRAPH-323AF
-# Total code points: 136944
+# Total code points: 141246
# ================================================
@@ -9076,7 +9251,7 @@ FFDA..FFDC ; XID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU
0860..086A ; XID_Continue # Lo [11] SYRIAC LETTER MALAYALAM NGA..SYRIAC LETTER MALAYALAM SSA
0870..0887 ; XID_Continue # Lo [24] ARABIC LETTER ALEF WITH ATTACHED FATHA..ARABIC BASELINE ROUND DOT
0889..088E ; XID_Continue # Lo [6] ARABIC LETTER NOON WITH INVERTED SMALL V..ARABIC VERTICAL TAIL
-0898..089F ; XID_Continue # Mn [8] ARABIC SMALL HIGH WORD AL-JUZ..ARABIC HALF MADDA OVER MADDA
+0897..089F ; XID_Continue # Mn [9] ARABIC PEPET..ARABIC HALF MADDA OVER MADDA
08A0..08C8 ; XID_Continue # Lo [41] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER GRAF
08C9 ; XID_Continue # Lm ARABIC SMALL FARSI YEH
08CA..08E1 ; XID_Continue # Mn [24] ARABIC SMALL HIGH FARSI YEH..ARABIC SMALL HIGH SIGN SAFHA
@@ -9509,7 +9684,7 @@ FFDA..FFDC ; XID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU
1C50..1C59 ; XID_Continue # Nd [10] OL CHIKI DIGIT ZERO..OL CHIKI DIGIT NINE
1C5A..1C77 ; XID_Continue # Lo [30] OL CHIKI LETTER LA..OL CHIKI LETTER OH
1C78..1C7D ; XID_Continue # Lm [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD
-1C80..1C88 ; XID_Continue # L& [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK
+1C80..1C8A ; XID_Continue # L& [11] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER TJE
1C90..1CBA ; XID_Continue # L& [43] GEORGIAN MTAVRULI CAPITAL LETTER AN..GEORGIAN MTAVRULI CAPITAL LETTER AIN
1CBD..1CBF ; XID_Continue # L& [3] GEORGIAN MTAVRULI CAPITAL LETTER AEN..GEORGIAN MTAVRULI CAPITAL LETTER LABIAL SIGN
1CD0..1CD2 ; XID_Continue # Mn [3] VEDIC TONE KARSHANA..VEDIC TONE PRENKHA
@@ -9652,10 +9827,10 @@ A771..A787 ; XID_Continue # L& [23] LATIN SMALL LETTER DUM..LATIN SMALL LETT
A788 ; XID_Continue # Lm MODIFIER LETTER LOW CIRCUMFLEX ACCENT
A78B..A78E ; XID_Continue # L& [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT
A78F ; XID_Continue # Lo LATIN LETTER SINOLOGICAL DOT
-A790..A7CA ; XID_Continue # L& [59] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY
+A790..A7CD ; XID_Continue # L& [62] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER S WITH DIAGONAL STROKE
A7D0..A7D1 ; XID_Continue # L& [2] LATIN CAPITAL LETTER CLOSED INSULAR G..LATIN SMALL LETTER CLOSED INSULAR G
A7D3 ; XID_Continue # L& LATIN SMALL LETTER DOUBLE THORN
-A7D5..A7D9 ; XID_Continue # L& [5] LATIN SMALL LETTER DOUBLE WYNN..LATIN SMALL LETTER SIGMOID S
+A7D5..A7DC ; XID_Continue # L& [8] LATIN SMALL LETTER DOUBLE WYNN..LATIN CAPITAL LETTER LAMBDA WITH STROKE
A7F2..A7F4 ; XID_Continue # Lm [3] MODIFIER LETTER CAPITAL C..MODIFIER LETTER CAPITAL Q
A7F5..A7F6 ; XID_Continue # L& [2] LATIN CAPITAL LETTER REVERSED HALF H..LATIN SMALL LETTER REVERSED HALF H
A7F7 ; XID_Continue # Lo LATIN EPIGRAPHIC LETTER SIDEWAYS I
@@ -9850,6 +10025,7 @@ FFDA..FFDC ; XID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HA
105A3..105B1 ; XID_Continue # L& [15] VITHKUQI SMALL LETTER HA..VITHKUQI SMALL LETTER RE
105B3..105B9 ; XID_Continue # L& [7] VITHKUQI SMALL LETTER SE..VITHKUQI SMALL LETTER XE
105BB..105BC ; XID_Continue # L& [2] VITHKUQI SMALL LETTER Y..VITHKUQI SMALL LETTER ZE
+105C0..105F3 ; XID_Continue # Lo [52] TODHRI LETTER A..TODHRI LETTER OO
10600..10736 ; XID_Continue # Lo [311] LINEAR A SIGN AB001..LINEAR A SIGN A664
10740..10755 ; XID_Continue # Lo [22] LINEAR A SIGN A701 A..LINEAR A SIGN A732 JE
10760..10767 ; XID_Continue # Lo [8] LINEAR A SIGN A800..LINEAR A SIGN A807
@@ -9894,10 +10070,19 @@ FFDA..FFDC ; XID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HA
10D00..10D23 ; XID_Continue # Lo [36] HANIFI ROHINGYA LETTER A..HANIFI ROHINGYA MARK NA KHONNA
10D24..10D27 ; XID_Continue # Mn [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI
10D30..10D39 ; XID_Continue # Nd [10] HANIFI ROHINGYA DIGIT ZERO..HANIFI ROHINGYA DIGIT NINE
+10D40..10D49 ; XID_Continue # Nd [10] GARAY DIGIT ZERO..GARAY DIGIT NINE
+10D4A..10D4D ; XID_Continue # Lo [4] GARAY VOWEL SIGN A..GARAY VOWEL SIGN EE
+10D4E ; XID_Continue # Lm GARAY VOWEL LENGTH MARK
+10D4F ; XID_Continue # Lo GARAY SUKUN
+10D50..10D65 ; XID_Continue # L& [22] GARAY CAPITAL LETTER A..GARAY CAPITAL LETTER OLD NA
+10D69..10D6D ; XID_Continue # Mn [5] GARAY VOWEL SIGN E..GARAY CONSONANT NASALIZATION MARK
+10D6F ; XID_Continue # Lm GARAY REDUPLICATION MARK
+10D70..10D85 ; XID_Continue # L& [22] GARAY SMALL LETTER A..GARAY SMALL LETTER OLD NA
10E80..10EA9 ; XID_Continue # Lo [42] YEZIDI LETTER ELIF..YEZIDI LETTER ET
10EAB..10EAC ; XID_Continue # Mn [2] YEZIDI COMBINING HAMZA MARK..YEZIDI COMBINING MADDA MARK
10EB0..10EB1 ; XID_Continue # Lo [2] YEZIDI LETTER LAM WITH DOT ABOVE..YEZIDI LETTER YOT WITH CIRCUMFLEX ABOVE
-10EFD..10EFF ; XID_Continue # Mn [3] ARABIC SMALL LOW WORD SAKTA..ARABIC SMALL LOW WORD MADDA
+10EC2..10EC4 ; XID_Continue # Lo [3] ARABIC LETTER DAL WITH TWO DOTS VERTICALLY BELOW..ARABIC LETTER KAF WITH TWO DOTS VERTICALLY BELOW
+10EFC..10EFF ; XID_Continue # Mn [4] ARABIC COMBINING ALEF OVERLAY..ARABIC SMALL LOW WORD MADDA
10F00..10F1C ; XID_Continue # Lo [29] OLD SOGDIAN LETTER ALEPH..OLD SOGDIAN LETTER FINAL TAW WITH VERTICAL TAIL
10F27 ; XID_Continue # Lo OLD SOGDIAN LIGATURE AYIN-DALETH
10F30..10F45 ; XID_Continue # Lo [22] SOGDIAN LETTER ALEPH..SOGDIAN INDEPENDENT SHIN
@@ -9993,6 +10178,24 @@ FFDA..FFDC ; XID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HA
11362..11363 ; XID_Continue # Mc [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL
11366..1136C ; XID_Continue # Mn [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX
11370..11374 ; XID_Continue # Mn [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA
+11380..11389 ; XID_Continue # Lo [10] TULU-TIGALARI LETTER A..TULU-TIGALARI LETTER VOCALIC LL
+1138B ; XID_Continue # Lo TULU-TIGALARI LETTER EE
+1138E ; XID_Continue # Lo TULU-TIGALARI LETTER AI
+11390..113B5 ; XID_Continue # Lo [38] TULU-TIGALARI LETTER OO..TULU-TIGALARI LETTER LLLA
+113B7 ; XID_Continue # Lo TULU-TIGALARI SIGN AVAGRAHA
+113B8..113BA ; XID_Continue # Mc [3] TULU-TIGALARI VOWEL SIGN AA..TULU-TIGALARI VOWEL SIGN II
+113BB..113C0 ; XID_Continue # Mn [6] TULU-TIGALARI VOWEL SIGN U..TULU-TIGALARI VOWEL SIGN VOCALIC LL
+113C2 ; XID_Continue # Mc TULU-TIGALARI VOWEL SIGN EE
+113C5 ; XID_Continue # Mc TULU-TIGALARI VOWEL SIGN AI
+113C7..113CA ; XID_Continue # Mc [4] TULU-TIGALARI VOWEL SIGN OO..TULU-TIGALARI SIGN CANDRA ANUNASIKA
+113CC..113CD ; XID_Continue # Mc [2] TULU-TIGALARI SIGN ANUSVARA..TULU-TIGALARI SIGN VISARGA
+113CE ; XID_Continue # Mn TULU-TIGALARI SIGN VIRAMA
+113CF ; XID_Continue # Mc TULU-TIGALARI SIGN LOOPED VIRAMA
+113D0 ; XID_Continue # Mn TULU-TIGALARI CONJOINER
+113D1 ; XID_Continue # Lo TULU-TIGALARI REPHA
+113D2 ; XID_Continue # Mn TULU-TIGALARI GEMINATION MARK
+113D3 ; XID_Continue # Lo TULU-TIGALARI SIGN PLUTA
+113E1..113E2 ; XID_Continue # Mn [2] TULU-TIGALARI VEDIC TONE SVARITA..TULU-TIGALARI VEDIC TONE ANUDATTA
11400..11434 ; XID_Continue # Lo [53] NEWA LETTER A..NEWA LETTER HA
11435..11437 ; XID_Continue # Mc [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II
11438..1143F ; XID_Continue # Mn [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI
@@ -10044,8 +10247,11 @@ FFDA..FFDC ; XID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HA
116B7 ; XID_Continue # Mn TAKRI SIGN NUKTA
116B8 ; XID_Continue # Lo TAKRI LETTER ARCHAIC KHA
116C0..116C9 ; XID_Continue # Nd [10] TAKRI DIGIT ZERO..TAKRI DIGIT NINE
+116D0..116E3 ; XID_Continue # Nd [20] MYANMAR PAO DIGIT ZERO..MYANMAR EASTERN PWO KAREN DIGIT NINE
11700..1171A ; XID_Continue # Lo [27] AHOM LETTER KA..AHOM LETTER ALTERNATE BA
-1171D..1171F ; XID_Continue # Mn [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA
+1171D ; XID_Continue # Mn AHOM CONSONANT SIGN MEDIAL LA
+1171E ; XID_Continue # Mc AHOM CONSONANT SIGN MEDIAL RA
+1171F ; XID_Continue # Mn AHOM CONSONANT SIGN MEDIAL LIGATING RA
11720..11721 ; XID_Continue # Mc [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA
11722..11725 ; XID_Continue # Mn [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU
11726 ; XID_Continue # Mc AHOM VOWEL SIGN E
@@ -10103,6 +10309,8 @@ FFDA..FFDC ; XID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HA
11A98..11A99 ; XID_Continue # Mn [2] SOYOMBO GEMINATION MARK..SOYOMBO SUBJOINER
11A9D ; XID_Continue # Lo SOYOMBO MARK PLUTA
11AB0..11AF8 ; XID_Continue # Lo [73] CANADIAN SYLLABICS NATTILIK HI..PAU CIN HAU GLOTTAL STOP FINAL
+11BC0..11BE0 ; XID_Continue # Lo [33] SUNUWAR LETTER DEVI..SUNUWAR LETTER KLOKO
+11BF0..11BF9 ; XID_Continue # Nd [10] SUNUWAR DIGIT ZERO..SUNUWAR DIGIT NINE
11C00..11C08 ; XID_Continue # Lo [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L
11C0A..11C2E ; XID_Continue # Lo [37] BHAIKSUKI LETTER E..BHAIKSUKI LETTER HA
11C2F ; XID_Continue # Mc BHAIKSUKI VOWEL SIGN AA
@@ -10156,6 +10364,7 @@ FFDA..FFDC ; XID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HA
11F41 ; XID_Continue # Mc KAWI SIGN KILLER
11F42 ; XID_Continue # Mn KAWI CONJOINER
11F50..11F59 ; XID_Continue # Nd [10] KAWI DIGIT ZERO..KAWI DIGIT NINE
+11F5A ; XID_Continue # Mn KAWI SIGN NUKTA
11FB0 ; XID_Continue # Lo LISU LETTER YHA
12000..12399 ; XID_Continue # Lo [922] CUNEIFORM SIGN A..CUNEIFORM SIGN U U
12400..1246E ; XID_Continue # Nl [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM
@@ -10165,7 +10374,13 @@ FFDA..FFDC ; XID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HA
13440 ; XID_Continue # Mn EGYPTIAN HIEROGLYPH MIRROR HORIZONTALLY
13441..13446 ; XID_Continue # Lo [6] EGYPTIAN HIEROGLYPH FULL BLANK..EGYPTIAN HIEROGLYPH WIDE LOST SIGN
13447..13455 ; XID_Continue # Mn [15] EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP START..EGYPTIAN HIEROGLYPH MODIFIER DAMAGED
+13460..143FA ; XID_Continue # Lo [3995] EGYPTIAN HIEROGLYPH-13460..EGYPTIAN HIEROGLYPH-143FA
14400..14646 ; XID_Continue # Lo [583] ANATOLIAN HIEROGLYPH A001..ANATOLIAN HIEROGLYPH A530
+16100..1611D ; XID_Continue # Lo [30] GURUNG KHEMA LETTER A..GURUNG KHEMA LETTER SA
+1611E..16129 ; XID_Continue # Mn [12] GURUNG KHEMA VOWEL SIGN AA..GURUNG KHEMA VOWEL LENGTH MARK
+1612A..1612C ; XID_Continue # Mc [3] GURUNG KHEMA CONSONANT SIGN MEDIAL YA..GURUNG KHEMA CONSONANT SIGN MEDIAL HA
+1612D..1612F ; XID_Continue # Mn [3] GURUNG KHEMA SIGN ANUSVARA..GURUNG KHEMA SIGN THOLHOMA
+16130..16139 ; XID_Continue # Nd [10] GURUNG KHEMA DIGIT ZERO..GURUNG KHEMA DIGIT NINE
16800..16A38 ; XID_Continue # Lo [569] BAMUM LETTER PHASE-A NGKUE MFON..BAMUM LETTER PHASE-F VUEQ
16A40..16A5E ; XID_Continue # Lo [31] MRO LETTER TA..MRO LETTER TEK
16A60..16A69 ; XID_Continue # Nd [10] MRO DIGIT ZERO..MRO DIGIT NINE
@@ -10179,6 +10394,10 @@ FFDA..FFDC ; XID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HA
16B50..16B59 ; XID_Continue # Nd [10] PAHAWH HMONG DIGIT ZERO..PAHAWH HMONG DIGIT NINE
16B63..16B77 ; XID_Continue # Lo [21] PAHAWH HMONG SIGN VOS LUB..PAHAWH HMONG SIGN CIM NRES TOS
16B7D..16B8F ; XID_Continue # Lo [19] PAHAWH HMONG CLAN SIGN TSHEEJ..PAHAWH HMONG CLAN SIGN VWJ
+16D40..16D42 ; XID_Continue # Lm [3] KIRAT RAI SIGN ANUSVARA..KIRAT RAI SIGN VISARGA
+16D43..16D6A ; XID_Continue # Lo [40] KIRAT RAI LETTER A..KIRAT RAI VOWEL SIGN AU
+16D6B..16D6C ; XID_Continue # Lm [2] KIRAT RAI SIGN VIRAMA..KIRAT RAI SIGN SAAT
+16D70..16D79 ; XID_Continue # Nd [10] KIRAT RAI DIGIT ZERO..KIRAT RAI DIGIT NINE
16E40..16E7F ; XID_Continue # L& [64] MEDEFAIDRIN CAPITAL LETTER M..MEDEFAIDRIN SMALL LETTER Y
16F00..16F4A ; XID_Continue # Lo [75] MIAO LETTER PA..MIAO LETTER RTE
16F4F ; XID_Continue # Mn MIAO SIGN CONSONANT MODIFIER BAR
@@ -10192,7 +10411,7 @@ FFDA..FFDC ; XID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HA
16FF0..16FF1 ; XID_Continue # Mc [2] VIETNAMESE ALTERNATE READING MARK CA..VIETNAMESE ALTERNATE READING MARK NHAY
17000..187F7 ; XID_Continue # Lo [6136] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187F7
18800..18CD5 ; XID_Continue # Lo [1238] TANGUT COMPONENT-001..KHITAN SMALL SCRIPT CHARACTER-18CD5
-18D00..18D08 ; XID_Continue # Lo [9] TANGUT IDEOGRAPH-18D00..TANGUT IDEOGRAPH-18D08
+18CFF..18D08 ; XID_Continue # Lo [10] KHITAN SMALL SCRIPT CHARACTER-18CFF..TANGUT IDEOGRAPH-18D08
1AFF0..1AFF3 ; XID_Continue # Lm [4] KATAKANA LETTER MINNAN TONE-2..KATAKANA LETTER MINNAN TONE-5
1AFF5..1AFFB ; XID_Continue # Lm [7] KATAKANA LETTER MINNAN TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-5
1AFFD..1AFFE ; XID_Continue # Lm [2] KATAKANA LETTER MINNAN NASALIZED TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-8
@@ -10207,6 +10426,7 @@ FFDA..FFDC ; XID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HA
1BC80..1BC88 ; XID_Continue # Lo [9] DUPLOYAN AFFIX HIGH ACUTE..DUPLOYAN AFFIX HIGH VERTICAL
1BC90..1BC99 ; XID_Continue # Lo [10] DUPLOYAN AFFIX LOW ACUTE..DUPLOYAN AFFIX LOW ARROW
1BC9D..1BC9E ; XID_Continue # Mn [2] DUPLOYAN THICK LETTER SELECTOR..DUPLOYAN DOUBLE MARK
+1CCF0..1CCF9 ; XID_Continue # Nd [10] OUTLINED DIGIT ZERO..OUTLINED DIGIT NINE
1CF00..1CF2D ; XID_Continue # Mn [46] ZNAMENNY COMBINING MARK GORAZDO NIZKO S KRYZHEM ON LEFT..ZNAMENNY COMBINING MARK KRYZH ON LEFT
1CF30..1CF46 ; XID_Continue # Mn [23] ZNAMENNY COMBINING TONAL RANGE MARK MRACHNO..ZNAMENNY PRIZNAK MODIFIER ROG
1D165..1D166 ; XID_Continue # Mc [2] MUSICAL SYMBOL COMBINING STEM..MUSICAL SYMBOL COMBINING SPRECHGESANG STEM
@@ -10278,6 +10498,10 @@ FFDA..FFDC ; XID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HA
1E4EB ; XID_Continue # Lm NAG MUNDARI SIGN OJOD
1E4EC..1E4EF ; XID_Continue # Mn [4] NAG MUNDARI SIGN MUHOR..NAG MUNDARI SIGN SUTUH
1E4F0..1E4F9 ; XID_Continue # Nd [10] NAG MUNDARI DIGIT ZERO..NAG MUNDARI DIGIT NINE
+1E5D0..1E5ED ; XID_Continue # Lo [30] OL ONAL LETTER O..OL ONAL LETTER EG
+1E5EE..1E5EF ; XID_Continue # Mn [2] OL ONAL SIGN MU..OL ONAL SIGN IKIR
+1E5F0 ; XID_Continue # Lo OL ONAL SIGN HODDOND
+1E5F1..1E5FA ; XID_Continue # Nd [10] OL ONAL DIGIT ZERO..OL ONAL DIGIT NINE
1E7E0..1E7E6 ; XID_Continue # Lo [7] ETHIOPIC SYLLABLE HHYA..ETHIOPIC SYLLABLE HHYO
1E7E8..1E7EB ; XID_Continue # Lo [4] ETHIOPIC SYLLABLE GURAGE HHWA..ETHIOPIC SYLLABLE HHWE
1E7ED..1E7EE ; XID_Continue # Lo [2] ETHIOPIC SYLLABLE GURAGE MWI..ETHIOPIC SYLLABLE GURAGE MWEE
@@ -10333,7 +10557,7 @@ FFDA..FFDC ; XID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HA
31350..323AF ; XID_Continue # Lo [4192] CJK UNIFIED IDEOGRAPH-31350..CJK UNIFIED IDEOGRAPH-323AF
E0100..E01EF ; XID_Continue # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
-# Total code points: 140089
+# Total code points: 144522
# ================================================
@@ -10418,7 +10642,7 @@ E01F0..E0FFF ; Default_Ignorable_Code_Point # Cn [3600] <reserved-E01F0>..<rese
0825..0827 ; Grapheme_Extend # Mn [3] SAMARITAN VOWEL SIGN SHORT A..SAMARITAN VOWEL SIGN U
0829..082D ; Grapheme_Extend # Mn [5] SAMARITAN VOWEL SIGN LONG I..SAMARITAN MARK NEQUDAA
0859..085B ; Grapheme_Extend # Mn [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK
-0898..089F ; Grapheme_Extend # Mn [8] ARABIC SMALL HIGH WORD AL-JUZ..ARABIC HALF MADDA OVER MADDA
+0897..089F ; Grapheme_Extend # Mn [9] ARABIC PEPET..ARABIC HALF MADDA OVER MADDA
08CA..08E1 ; Grapheme_Extend # Mn [24] ARABIC SMALL HIGH FARSI YEH..ARABIC SMALL HIGH SIGN SAFHA
08E3..0902 ; Grapheme_Extend # Mn [32] ARABIC TURNED DAMMA BELOW..DEVANAGARI SIGN ANUSVARA
093A ; Grapheme_Extend # Mn DEVANAGARI VOWEL SIGN OE
@@ -10475,8 +10699,11 @@ E01F0..E0FFF ; Default_Ignorable_Code_Point # Cn [3600] <reserved-E01F0>..<rese
0C81 ; Grapheme_Extend # Mn KANNADA SIGN CANDRABINDU
0CBC ; Grapheme_Extend # Mn KANNADA SIGN NUKTA
0CBF ; Grapheme_Extend # Mn KANNADA VOWEL SIGN I
+0CC0 ; Grapheme_Extend # Mc KANNADA VOWEL SIGN II
0CC2 ; Grapheme_Extend # Mc KANNADA VOWEL SIGN UU
0CC6 ; Grapheme_Extend # Mn KANNADA VOWEL SIGN E
+0CC7..0CC8 ; Grapheme_Extend # Mc [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI
+0CCA..0CCB ; Grapheme_Extend # Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO
0CCC..0CCD ; Grapheme_Extend # Mn [2] KANNADA VOWEL SIGN AU..KANNADA SIGN VIRAMA
0CD5..0CD6 ; Grapheme_Extend # Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK
0CE2..0CE3 ; Grapheme_Extend # Mn [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL
@@ -10522,7 +10749,9 @@ E01F0..E0FFF ; Default_Ignorable_Code_Point # Cn [3600] <reserved-E01F0>..<rese
109D ; Grapheme_Extend # Mn MYANMAR VOWEL SIGN AITON AI
135D..135F ; Grapheme_Extend # Mn [3] ETHIOPIC COMBINING GEMINATION AND VOWEL LENGTH MARK..ETHIOPIC COMBINING GEMINATION MARK
1712..1714 ; Grapheme_Extend # Mn [3] TAGALOG VOWEL SIGN I..TAGALOG SIGN VIRAMA
+1715 ; Grapheme_Extend # Mc TAGALOG SIGN PAMUDPOD
1732..1733 ; Grapheme_Extend # Mn [2] HANUNOO VOWEL SIGN I..HANUNOO VOWEL SIGN U
+1734 ; Grapheme_Extend # Mc HANUNOO SIGN PAMUDPOD
1752..1753 ; Grapheme_Extend # Mn [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U
1772..1773 ; Grapheme_Extend # Mn [2] TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U
17B4..17B5 ; Grapheme_Extend # Mn [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA
@@ -10554,17 +10783,22 @@ E01F0..E0FFF ; Default_Ignorable_Code_Point # Cn [3600] <reserved-E01F0>..<rese
1B34 ; Grapheme_Extend # Mn BALINESE SIGN REREKAN
1B35 ; Grapheme_Extend # Mc BALINESE VOWEL SIGN TEDUNG
1B36..1B3A ; Grapheme_Extend # Mn [5] BALINESE VOWEL SIGN ULU..BALINESE VOWEL SIGN RA REPA
+1B3B ; Grapheme_Extend # Mc BALINESE VOWEL SIGN RA REPA TEDUNG
1B3C ; Grapheme_Extend # Mn BALINESE VOWEL SIGN LA LENGA
+1B3D ; Grapheme_Extend # Mc BALINESE VOWEL SIGN LA LENGA TEDUNG
1B42 ; Grapheme_Extend # Mn BALINESE VOWEL SIGN PEPET
+1B43..1B44 ; Grapheme_Extend # Mc [2] BALINESE VOWEL SIGN PEPET TEDUNG..BALINESE ADEG ADEG
1B6B..1B73 ; Grapheme_Extend # Mn [9] BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG
1B80..1B81 ; Grapheme_Extend # Mn [2] SUNDANESE SIGN PANYECEK..SUNDANESE SIGN PANGLAYAR
1BA2..1BA5 ; Grapheme_Extend # Mn [4] SUNDANESE CONSONANT SIGN PANYAKRA..SUNDANESE VOWEL SIGN PANYUKU
1BA8..1BA9 ; Grapheme_Extend # Mn [2] SUNDANESE VOWEL SIGN PAMEPET..SUNDANESE VOWEL SIGN PANEULEUNG
+1BAA ; Grapheme_Extend # Mc SUNDANESE SIGN PAMAAEH
1BAB..1BAD ; Grapheme_Extend # Mn [3] SUNDANESE SIGN VIRAMA..SUNDANESE CONSONANT SIGN PASANGAN WA
1BE6 ; Grapheme_Extend # Mn BATAK SIGN TOMPI
1BE8..1BE9 ; Grapheme_Extend # Mn [2] BATAK VOWEL SIGN PAKPAK E..BATAK VOWEL SIGN EE
1BED ; Grapheme_Extend # Mn BATAK VOWEL SIGN KARO O
1BEF..1BF1 ; Grapheme_Extend # Mn [3] BATAK VOWEL SIGN U FOR SIMALUNGUN SA..BATAK CONSONANT SIGN H
+1BF2..1BF3 ; Grapheme_Extend # Mc [2] BATAK PANGOLAT..BATAK PANONGONAN
1C2C..1C33 ; Grapheme_Extend # Mn [8] LEPCHA VOWEL SIGN E..LEPCHA CONSONANT SIGN T
1C36..1C37 ; Grapheme_Extend # Mn [2] LEPCHA SIGN RAN..LEPCHA SIGN NUKTA
1CD0..1CD2 ; Grapheme_Extend # Mn [3] VEDIC TONE KARSHANA..VEDIC TONE PRENKHA
@@ -10601,10 +10835,12 @@ A8E0..A8F1 ; Grapheme_Extend # Mn [18] COMBINING DEVANAGARI DIGIT ZERO..COMB
A8FF ; Grapheme_Extend # Mn DEVANAGARI VOWEL SIGN AY
A926..A92D ; Grapheme_Extend # Mn [8] KAYAH LI VOWEL UE..KAYAH LI TONE CALYA PLOPHU
A947..A951 ; Grapheme_Extend # Mn [11] REJANG VOWEL SIGN I..REJANG CONSONANT SIGN R
+A953 ; Grapheme_Extend # Mc REJANG VIRAMA
A980..A982 ; Grapheme_Extend # Mn [3] JAVANESE SIGN PANYANGGA..JAVANESE SIGN LAYAR
A9B3 ; Grapheme_Extend # Mn JAVANESE SIGN CECAK TELU
A9B6..A9B9 ; Grapheme_Extend # Mn [4] JAVANESE VOWEL SIGN WULU..JAVANESE VOWEL SIGN SUKU MENDUT
A9BC..A9BD ; Grapheme_Extend # Mn [2] JAVANESE VOWEL SIGN PEPET..JAVANESE CONSONANT SIGN KERET
+A9C0 ; Grapheme_Extend # Mc JAVANESE PANGKON
A9E5 ; Grapheme_Extend # Mn MYANMAR SIGN SHAN SAW
AA29..AA2E ; Grapheme_Extend # Mn [6] CHAM VOWEL SIGN AA..CHAM VOWEL SIGN OE
AA31..AA32 ; Grapheme_Extend # Mn [2] CHAM VOWEL SIGN AU..CHAM VOWEL SIGN UE
@@ -10636,8 +10872,9 @@ FF9E..FF9F ; Grapheme_Extend # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK.
10A3F ; Grapheme_Extend # Mn KHAROSHTHI VIRAMA
10AE5..10AE6 ; Grapheme_Extend # Mn [2] MANICHAEAN ABBREVIATION MARK ABOVE..MANICHAEAN ABBREVIATION MARK BELOW
10D24..10D27 ; Grapheme_Extend # Mn [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI
+10D69..10D6D ; Grapheme_Extend # Mn [5] GARAY VOWEL SIGN E..GARAY CONSONANT NASALIZATION MARK
10EAB..10EAC ; Grapheme_Extend # Mn [2] YEZIDI COMBINING HAMZA MARK..YEZIDI COMBINING MADDA MARK
-10EFD..10EFF ; Grapheme_Extend # Mn [3] ARABIC SMALL LOW WORD SAKTA..ARABIC SMALL LOW WORD MADDA
+10EFC..10EFF ; Grapheme_Extend # Mn [4] ARABIC COMBINING ALEF OVERLAY..ARABIC SMALL LOW WORD MADDA
10F46..10F50 ; Grapheme_Extend # Mn [11] SOGDIAN COMBINING DOT BELOW..SOGDIAN COMBINING STROKE BELOW
10F82..10F85 ; Grapheme_Extend # Mn [4] OLD UYGHUR COMBINING DOT ABOVE..OLD UYGHUR COMBINING TWO DOTS BELOW
11001 ; Grapheme_Extend # Mn BRAHMI SIGN ANUSVARA
@@ -10654,10 +10891,12 @@ FF9E..FF9F ; Grapheme_Extend # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK.
11173 ; Grapheme_Extend # Mn MAHAJANI SIGN NUKTA
11180..11181 ; Grapheme_Extend # Mn [2] SHARADA SIGN CANDRABINDU..SHARADA SIGN ANUSVARA
111B6..111BE ; Grapheme_Extend # Mn [9] SHARADA VOWEL SIGN U..SHARADA VOWEL SIGN O
+111C0 ; Grapheme_Extend # Mc SHARADA SIGN VIRAMA
111C9..111CC ; Grapheme_Extend # Mn [4] SHARADA SANDHI MARK..SHARADA EXTRA SHORT VOWEL MARK
111CF ; Grapheme_Extend # Mn SHARADA SIGN INVERTED CANDRABINDU
1122F..11231 ; Grapheme_Extend # Mn [3] KHOJKI VOWEL SIGN U..KHOJKI VOWEL SIGN AI
11234 ; Grapheme_Extend # Mn KHOJKI SIGN ANUSVARA
+11235 ; Grapheme_Extend # Mc KHOJKI SIGN VIRAMA
11236..11237 ; Grapheme_Extend # Mn [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA
1123E ; Grapheme_Extend # Mn KHOJKI SIGN SUKUN
11241 ; Grapheme_Extend # Mn KHOJKI VOWEL SIGN VOCALIC R
@@ -10667,9 +10906,20 @@ FF9E..FF9F ; Grapheme_Extend # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK.
1133B..1133C ; Grapheme_Extend # Mn [2] COMBINING BINDU BELOW..GRANTHA SIGN NUKTA
1133E ; Grapheme_Extend # Mc GRANTHA VOWEL SIGN AA
11340 ; Grapheme_Extend # Mn GRANTHA VOWEL SIGN II
+1134D ; Grapheme_Extend # Mc GRANTHA SIGN VIRAMA
11357 ; Grapheme_Extend # Mc GRANTHA AU LENGTH MARK
11366..1136C ; Grapheme_Extend # Mn [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX
11370..11374 ; Grapheme_Extend # Mn [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA
+113B8 ; Grapheme_Extend # Mc TULU-TIGALARI VOWEL SIGN AA
+113BB..113C0 ; Grapheme_Extend # Mn [6] TULU-TIGALARI VOWEL SIGN U..TULU-TIGALARI VOWEL SIGN VOCALIC LL
+113C2 ; Grapheme_Extend # Mc TULU-TIGALARI VOWEL SIGN EE
+113C5 ; Grapheme_Extend # Mc TULU-TIGALARI VOWEL SIGN AI
+113C7..113C9 ; Grapheme_Extend # Mc [3] TULU-TIGALARI VOWEL SIGN OO..TULU-TIGALARI AU LENGTH MARK
+113CE ; Grapheme_Extend # Mn TULU-TIGALARI SIGN VIRAMA
+113CF ; Grapheme_Extend # Mc TULU-TIGALARI SIGN LOOPED VIRAMA
+113D0 ; Grapheme_Extend # Mn TULU-TIGALARI CONJOINER
+113D2 ; Grapheme_Extend # Mn TULU-TIGALARI GEMINATION MARK
+113E1..113E2 ; Grapheme_Extend # Mn [2] TULU-TIGALARI VEDIC TONE SVARITA..TULU-TIGALARI VEDIC TONE ANUDATTA
11438..1143F ; Grapheme_Extend # Mn [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI
11442..11444 ; Grapheme_Extend # Mn [3] NEWA SIGN VIRAMA..NEWA SIGN ANUSVARA
11446 ; Grapheme_Extend # Mn NEWA SIGN NUKTA
@@ -10691,14 +10941,17 @@ FF9E..FF9F ; Grapheme_Extend # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK.
116AB ; Grapheme_Extend # Mn TAKRI SIGN ANUSVARA
116AD ; Grapheme_Extend # Mn TAKRI VOWEL SIGN AA
116B0..116B5 ; Grapheme_Extend # Mn [6] TAKRI VOWEL SIGN U..TAKRI VOWEL SIGN AU
+116B6 ; Grapheme_Extend # Mc TAKRI SIGN VIRAMA
116B7 ; Grapheme_Extend # Mn TAKRI SIGN NUKTA
-1171D..1171F ; Grapheme_Extend # Mn [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA
+1171D ; Grapheme_Extend # Mn AHOM CONSONANT SIGN MEDIAL LA
+1171F ; Grapheme_Extend # Mn AHOM CONSONANT SIGN MEDIAL LIGATING RA
11722..11725 ; Grapheme_Extend # Mn [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU
11727..1172B ; Grapheme_Extend # Mn [5] AHOM VOWEL SIGN AW..AHOM SIGN KILLER
1182F..11837 ; Grapheme_Extend # Mn [9] DOGRA VOWEL SIGN U..DOGRA SIGN ANUSVARA
11839..1183A ; Grapheme_Extend # Mn [2] DOGRA SIGN VIRAMA..DOGRA SIGN NUKTA
11930 ; Grapheme_Extend # Mc DIVES AKURU VOWEL SIGN AA
1193B..1193C ; Grapheme_Extend # Mn [2] DIVES AKURU SIGN ANUSVARA..DIVES AKURU SIGN CANDRABINDU
+1193D ; Grapheme_Extend # Mc DIVES AKURU SIGN HALANTA
1193E ; Grapheme_Extend # Mn DIVES AKURU VIRAMA
11943 ; Grapheme_Extend # Mn DIVES AKURU SIGN NUKTA
119D4..119D7 ; Grapheme_Extend # Mn [4] NANDINAGARI VOWEL SIGN U..NANDINAGARI VOWEL SIGN VOCALIC RR
@@ -10731,20 +10984,25 @@ FF9E..FF9F ; Grapheme_Extend # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK.
11F00..11F01 ; Grapheme_Extend # Mn [2] KAWI SIGN CANDRABINDU..KAWI SIGN ANUSVARA
11F36..11F3A ; Grapheme_Extend # Mn [5] KAWI VOWEL SIGN I..KAWI VOWEL SIGN VOCALIC R
11F40 ; Grapheme_Extend # Mn KAWI VOWEL SIGN EU
+11F41 ; Grapheme_Extend # Mc KAWI SIGN KILLER
11F42 ; Grapheme_Extend # Mn KAWI CONJOINER
+11F5A ; Grapheme_Extend # Mn KAWI SIGN NUKTA
13440 ; Grapheme_Extend # Mn EGYPTIAN HIEROGLYPH MIRROR HORIZONTALLY
13447..13455 ; Grapheme_Extend # Mn [15] EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP START..EGYPTIAN HIEROGLYPH MODIFIER DAMAGED
+1611E..16129 ; Grapheme_Extend # Mn [12] GURUNG KHEMA VOWEL SIGN AA..GURUNG KHEMA VOWEL LENGTH MARK
+1612D..1612F ; Grapheme_Extend # Mn [3] GURUNG KHEMA SIGN ANUSVARA..GURUNG KHEMA SIGN THOLHOMA
16AF0..16AF4 ; Grapheme_Extend # Mn [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE
16B30..16B36 ; Grapheme_Extend # Mn [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM
16F4F ; Grapheme_Extend # Mn MIAO SIGN CONSONANT MODIFIER BAR
16F8F..16F92 ; Grapheme_Extend # Mn [4] MIAO TONE RIGHT..MIAO TONE BELOW
16FE4 ; Grapheme_Extend # Mn KHITAN SMALL SCRIPT FILLER
+16FF0..16FF1 ; Grapheme_Extend # Mc [2] VIETNAMESE ALTERNATE READING MARK CA..VIETNAMESE ALTERNATE READING MARK NHAY
1BC9D..1BC9E ; Grapheme_Extend # Mn [2] DUPLOYAN THICK LETTER SELECTOR..DUPLOYAN DOUBLE MARK
1CF00..1CF2D ; Grapheme_Extend # Mn [46] ZNAMENNY COMBINING MARK GORAZDO NIZKO S KRYZHEM ON LEFT..ZNAMENNY COMBINING MARK KRYZH ON LEFT
1CF30..1CF46 ; Grapheme_Extend # Mn [23] ZNAMENNY COMBINING TONAL RANGE MARK MRACHNO..ZNAMENNY PRIZNAK MODIFIER ROG
-1D165 ; Grapheme_Extend # Mc MUSICAL SYMBOL COMBINING STEM
+1D165..1D166 ; Grapheme_Extend # Mc [2] MUSICAL SYMBOL COMBINING STEM..MUSICAL SYMBOL COMBINING SPRECHGESANG STEM
1D167..1D169 ; Grapheme_Extend # Mn [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3
-1D16E..1D172 ; Grapheme_Extend # Mc [5] MUSICAL SYMBOL COMBINING FLAG-1..MUSICAL SYMBOL COMBINING FLAG-5
+1D16D..1D172 ; Grapheme_Extend # Mc [6] MUSICAL SYMBOL COMBINING AUGMENTATION DOT..MUSICAL SYMBOL COMBINING FLAG-5
1D17B..1D182 ; Grapheme_Extend # Mn [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE
1D185..1D18B ; Grapheme_Extend # Mn [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE
1D1AA..1D1AD ; Grapheme_Extend # Mn [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO
@@ -10765,12 +11023,13 @@ FF9E..FF9F ; Grapheme_Extend # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK.
1E2AE ; Grapheme_Extend # Mn TOTO SIGN RISING TONE
1E2EC..1E2EF ; Grapheme_Extend # Mn [4] WANCHO TONE TUP..WANCHO TONE KOINI
1E4EC..1E4EF ; Grapheme_Extend # Mn [4] NAG MUNDARI SIGN MUHOR..NAG MUNDARI SIGN SUTUH
+1E5EE..1E5EF ; Grapheme_Extend # Mn [2] OL ONAL SIGN MU..OL ONAL SIGN IKIR
1E8D0..1E8D6 ; Grapheme_Extend # Mn [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS
1E944..1E94A ; Grapheme_Extend # Mn [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA
E0020..E007F ; Grapheme_Extend # Cf [96] TAG SPACE..CANCEL TAG
E0100..E01EF ; Grapheme_Extend # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
-# Total code points: 2125
+# Total code points: 2193
# ================================================
@@ -11062,10 +11321,8 @@ E0100..E01EF ; Grapheme_Extend # Mn [240] VARIATION SELECTOR-17..VARIATION SELE
0CB5..0CB9 ; Grapheme_Base # Lo [5] KANNADA LETTER VA..KANNADA LETTER HA
0CBD ; Grapheme_Base # Lo KANNADA SIGN AVAGRAHA
0CBE ; Grapheme_Base # Mc KANNADA VOWEL SIGN AA
-0CC0..0CC1 ; Grapheme_Base # Mc [2] KANNADA VOWEL SIGN II..KANNADA VOWEL SIGN U
+0CC1 ; Grapheme_Base # Mc KANNADA VOWEL SIGN U
0CC3..0CC4 ; Grapheme_Base # Mc [2] KANNADA VOWEL SIGN VOCALIC R..KANNADA VOWEL SIGN VOCALIC RR
-0CC7..0CC8 ; Grapheme_Base # Mc [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI
-0CCA..0CCB ; Grapheme_Base # Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO
0CDD..0CDE ; Grapheme_Base # Lo [2] KANNADA LETTER NAKAARA POLLU..KANNADA LETTER FA
0CE0..0CE1 ; Grapheme_Base # Lo [2] KANNADA LETTER VOCALIC RR..KANNADA LETTER VOCALIC LL
0CE6..0CEF ; Grapheme_Base # Nd [10] KANNADA DIGIT ZERO..KANNADA DIGIT NINE
@@ -11214,9 +11471,7 @@ E0100..E01EF ; Grapheme_Extend # Mn [240] VARIATION SELECTOR-17..VARIATION SELE
16EE..16F0 ; Grapheme_Base # Nl [3] RUNIC ARLAUG SYMBOL..RUNIC BELGTHOR SYMBOL
16F1..16F8 ; Grapheme_Base # Lo [8] RUNIC LETTER K..RUNIC LETTER FRANKS CASKET AESC
1700..1711 ; Grapheme_Base # Lo [18] TAGALOG LETTER A..TAGALOG LETTER HA
-1715 ; Grapheme_Base # Mc TAGALOG SIGN PAMUDPOD
171F..1731 ; Grapheme_Base # Lo [19] TAGALOG LETTER ARCHAIC RA..HANUNOO LETTER HA
-1734 ; Grapheme_Base # Mc HANUNOO SIGN PAMUDPOD
1735..1736 ; Grapheme_Base # Po [2] PHILIPPINE SINGLE PUNCTUATION..PHILIPPINE DOUBLE PUNCTUATION
1740..1751 ; Grapheme_Base # Lo [18] BUHID LETTER A..BUHID LETTER HA
1760..176C ; Grapheme_Base # Lo [13] TAGBANWA LETTER A..TAGBANWA LETTER YA
@@ -11274,27 +11529,24 @@ E0100..E01EF ; Grapheme_Extend # Mn [240] VARIATION SELECTOR-17..VARIATION SELE
1AA8..1AAD ; Grapheme_Base # Po [6] TAI THAM SIGN KAAN..TAI THAM SIGN CAANG
1B04 ; Grapheme_Base # Mc BALINESE SIGN BISAH
1B05..1B33 ; Grapheme_Base # Lo [47] BALINESE LETTER AKARA..BALINESE LETTER HA
-1B3B ; Grapheme_Base # Mc BALINESE VOWEL SIGN RA REPA TEDUNG
-1B3D..1B41 ; Grapheme_Base # Mc [5] BALINESE VOWEL SIGN LA LENGA TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG
-1B43..1B44 ; Grapheme_Base # Mc [2] BALINESE VOWEL SIGN PEPET TEDUNG..BALINESE ADEG ADEG
+1B3E..1B41 ; Grapheme_Base # Mc [4] BALINESE VOWEL SIGN TALING..BALINESE VOWEL SIGN TALING REPA TEDUNG
1B45..1B4C ; Grapheme_Base # Lo [8] BALINESE LETTER KAF SASAK..BALINESE LETTER ARCHAIC JNYA
+1B4E..1B4F ; Grapheme_Base # Po [2] BALINESE INVERTED CARIK SIKI..BALINESE INVERTED CARIK PAREREN
1B50..1B59 ; Grapheme_Base # Nd [10] BALINESE DIGIT ZERO..BALINESE DIGIT NINE
1B5A..1B60 ; Grapheme_Base # Po [7] BALINESE PANTI..BALINESE PAMENENG
1B61..1B6A ; Grapheme_Base # So [10] BALINESE MUSICAL SYMBOL DONG..BALINESE MUSICAL SYMBOL DANG GEDE
1B74..1B7C ; Grapheme_Base # So [9] BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DUG..BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PING
-1B7D..1B7E ; Grapheme_Base # Po [2] BALINESE PANTI LANTANG..BALINESE PAMADA LANTANG
+1B7D..1B7F ; Grapheme_Base # Po [3] BALINESE PANTI LANTANG..BALINESE PANTI BAWAK
1B82 ; Grapheme_Base # Mc SUNDANESE SIGN PANGWISAD
1B83..1BA0 ; Grapheme_Base # Lo [30] SUNDANESE LETTER A..SUNDANESE LETTER HA
1BA1 ; Grapheme_Base # Mc SUNDANESE CONSONANT SIGN PAMINGKAL
1BA6..1BA7 ; Grapheme_Base # Mc [2] SUNDANESE VOWEL SIGN PANAELAENG..SUNDANESE VOWEL SIGN PANOLONG
-1BAA ; Grapheme_Base # Mc SUNDANESE SIGN PAMAAEH
1BAE..1BAF ; Grapheme_Base # Lo [2] SUNDANESE LETTER KHA..SUNDANESE LETTER SYA
1BB0..1BB9 ; Grapheme_Base # Nd [10] SUNDANESE DIGIT ZERO..SUNDANESE DIGIT NINE
1BBA..1BE5 ; Grapheme_Base # Lo [44] SUNDANESE AVAGRAHA..BATAK LETTER U
1BE7 ; Grapheme_Base # Mc BATAK VOWEL SIGN E
1BEA..1BEC ; Grapheme_Base # Mc [3] BATAK VOWEL SIGN I..BATAK VOWEL SIGN O
1BEE ; Grapheme_Base # Mc BATAK VOWEL SIGN U
-1BF2..1BF3 ; Grapheme_Base # Mc [2] BATAK PANGOLAT..BATAK PANONGONAN
1BFC..1BFF ; Grapheme_Base # Po [4] BATAK SYMBOL BINDU NA METEK..BATAK SYMBOL BINDU PANGOLAT
1C00..1C23 ; Grapheme_Base # Lo [36] LEPCHA LETTER KA..LEPCHA LETTER A
1C24..1C2B ; Grapheme_Base # Mc [8] LEPCHA SUBJOINED LETTER YA..LEPCHA VOWEL SIGN UU
@@ -11306,7 +11558,7 @@ E0100..E01EF ; Grapheme_Extend # Mn [240] VARIATION SELECTOR-17..VARIATION SELE
1C5A..1C77 ; Grapheme_Base # Lo [30] OL CHIKI LETTER LA..OL CHIKI LETTER OH
1C78..1C7D ; Grapheme_Base # Lm [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD
1C7E..1C7F ; Grapheme_Base # Po [2] OL CHIKI PUNCTUATION MUCAAD..OL CHIKI PUNCTUATION DOUBLE MUCAAD
-1C80..1C88 ; Grapheme_Base # L& [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK
+1C80..1C8A ; Grapheme_Base # L& [11] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER TJE
1C90..1CBA ; Grapheme_Base # L& [43] GEORGIAN MTAVRULI CAPITAL LETTER AN..GEORGIAN MTAVRULI CAPITAL LETTER AIN
1CBD..1CBF ; Grapheme_Base # L& [3] GEORGIAN MTAVRULI CAPITAL LETTER AEN..GEORGIAN MTAVRULI CAPITAL LETTER LABIAL SIGN
1CC0..1CC7 ; Grapheme_Base # Po [8] SUNDANESE PUNCTUATION BINDU SURYA..SUNDANESE PUNCTUATION BINDU BA SATANGA
@@ -11461,7 +11713,7 @@ E0100..E01EF ; Grapheme_Extend # Mn [240] VARIATION SELECTOR-17..VARIATION SELE
239B..23B3 ; Grapheme_Base # Sm [25] LEFT PARENTHESIS UPPER HOOK..SUMMATION BOTTOM
23B4..23DB ; Grapheme_Base # So [40] TOP SQUARE BRACKET..FUSE
23DC..23E1 ; Grapheme_Base # Sm [6] TOP PARENTHESIS..BOTTOM TORTOISE SHELL BRACKET
-23E2..2426 ; Grapheme_Base # So [69] WHITE TRAPEZIUM..SYMBOL FOR SUBSTITUTE FORM TWO
+23E2..2429 ; Grapheme_Base # So [72] WHITE TRAPEZIUM..SYMBOL FOR DELETE MEDIUM SHADE FORM
2440..244A ; Grapheme_Base # So [11] OCR HOOK..OCR DOUBLE BACKSLASH
2460..249B ; Grapheme_Base # No [60] CIRCLED DIGIT ONE..NUMBER TWENTY FULL STOP
249C..24E9 ; Grapheme_Base # So [78] PARENTHESIZED LATIN SMALL LETTER A..CIRCLED LATIN SMALL LETTER Z
@@ -11676,7 +11928,7 @@ E0100..E01EF ; Grapheme_Extend # Mn [240] VARIATION SELECTOR-17..VARIATION SELE
3192..3195 ; Grapheme_Base # No [4] IDEOGRAPHIC ANNOTATION ONE MARK..IDEOGRAPHIC ANNOTATION FOUR MARK
3196..319F ; Grapheme_Base # So [10] IDEOGRAPHIC ANNOTATION TOP MARK..IDEOGRAPHIC ANNOTATION MAN MARK
31A0..31BF ; Grapheme_Base # Lo [32] BOPOMOFO LETTER BU..BOPOMOFO LETTER AH
-31C0..31E3 ; Grapheme_Base # So [36] CJK STROKE T..CJK STROKE Q
+31C0..31E5 ; Grapheme_Base # So [38] CJK STROKE T..CJK STROKE SZP
31EF ; Grapheme_Base # So IDEOGRAPHIC DESCRIPTION CHARACTER SUBTRACTION
31F0..31FF ; Grapheme_Base # Lo [16] KATAKANA LETTER SMALL KU..KATAKANA LETTER SMALL RO
3200..321E ; Grapheme_Base # So [31] PARENTHESIZED HANGUL KIYEOK..PARENTHESIZED KOREAN CHARACTER O HU
@@ -11725,10 +11977,10 @@ A788 ; Grapheme_Base # Lm MODIFIER LETTER LOW CIRCUMFLEX ACCENT
A789..A78A ; Grapheme_Base # Sk [2] MODIFIER LETTER COLON..MODIFIER LETTER SHORT EQUALS SIGN
A78B..A78E ; Grapheme_Base # L& [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT
A78F ; Grapheme_Base # Lo LATIN LETTER SINOLOGICAL DOT
-A790..A7CA ; Grapheme_Base # L& [59] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY
+A790..A7CD ; Grapheme_Base # L& [62] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER S WITH DIAGONAL STROKE
A7D0..A7D1 ; Grapheme_Base # L& [2] LATIN CAPITAL LETTER CLOSED INSULAR G..LATIN SMALL LETTER CLOSED INSULAR G
A7D3 ; Grapheme_Base # L& LATIN SMALL LETTER DOUBLE THORN
-A7D5..A7D9 ; Grapheme_Base # L& [5] LATIN SMALL LETTER DOUBLE WYNN..LATIN SMALL LETTER SIGMOID S
+A7D5..A7DC ; Grapheme_Base # L& [8] LATIN SMALL LETTER DOUBLE WYNN..LATIN CAPITAL LETTER LAMBDA WITH STROKE
A7F2..A7F4 ; Grapheme_Base # Lm [3] MODIFIER LETTER CAPITAL C..MODIFIER LETTER CAPITAL Q
A7F5..A7F6 ; Grapheme_Base # L& [2] LATIN CAPITAL LETTER REVERSED HALF H..LATIN SMALL LETTER REVERSED HALF H
A7F7 ; Grapheme_Base # Lo LATIN EPIGRAPHIC LETTER SIDEWAYS I
@@ -11761,14 +12013,14 @@ A900..A909 ; Grapheme_Base # Nd [10] KAYAH LI DIGIT ZERO..KAYAH LI DIGIT NIN
A90A..A925 ; Grapheme_Base # Lo [28] KAYAH LI LETTER KA..KAYAH LI LETTER OO
A92E..A92F ; Grapheme_Base # Po [2] KAYAH LI SIGN CWI..KAYAH LI SIGN SHYA
A930..A946 ; Grapheme_Base # Lo [23] REJANG LETTER KA..REJANG LETTER A
-A952..A953 ; Grapheme_Base # Mc [2] REJANG CONSONANT SIGN H..REJANG VIRAMA
+A952 ; Grapheme_Base # Mc REJANG CONSONANT SIGN H
A95F ; Grapheme_Base # Po REJANG SECTION MARK
A960..A97C ; Grapheme_Base # Lo [29] HANGUL CHOSEONG TIKEUT-MIEUM..HANGUL CHOSEONG SSANGYEORINHIEUH
A983 ; Grapheme_Base # Mc JAVANESE SIGN WIGNYAN
A984..A9B2 ; Grapheme_Base # Lo [47] JAVANESE LETTER A..JAVANESE LETTER HA
A9B4..A9B5 ; Grapheme_Base # Mc [2] JAVANESE VOWEL SIGN TARUNG..JAVANESE VOWEL SIGN TOLONG
A9BA..A9BB ; Grapheme_Base # Mc [2] JAVANESE VOWEL SIGN TALING..JAVANESE VOWEL SIGN DIRGA MURE
-A9BE..A9C0 ; Grapheme_Base # Mc [3] JAVANESE CONSONANT SIGN PENGKAL..JAVANESE PANGKON
+A9BE..A9BF ; Grapheme_Base # Mc [2] JAVANESE CONSONANT SIGN PENGKAL..JAVANESE CONSONANT SIGN CAKRA
A9C1..A9CD ; Grapheme_Base # Po [13] JAVANESE LEFT RERENGGAN..JAVANESE TURNED PADA PISELEH
A9CF ; Grapheme_Base # Lm JAVANESE PANGRANGKEP
A9D0..A9D9 ; Grapheme_Base # Nd [10] JAVANESE DIGIT ZERO..JAVANESE DIGIT NINE
@@ -12000,6 +12252,7 @@ FFFC..FFFD ; Grapheme_Base # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEME
105A3..105B1 ; Grapheme_Base # L& [15] VITHKUQI SMALL LETTER HA..VITHKUQI SMALL LETTER RE
105B3..105B9 ; Grapheme_Base # L& [7] VITHKUQI SMALL LETTER SE..VITHKUQI SMALL LETTER XE
105BB..105BC ; Grapheme_Base # L& [2] VITHKUQI SMALL LETTER Y..VITHKUQI SMALL LETTER ZE
+105C0..105F3 ; Grapheme_Base # Lo [52] TODHRI LETTER A..TODHRI LETTER OO
10600..10736 ; Grapheme_Base # Lo [311] LINEAR A SIGN AB001..LINEAR A SIGN A664
10740..10755 ; Grapheme_Base # Lo [22] LINEAR A SIGN A701 A..LINEAR A SIGN A732 JE
10760..10767 ; Grapheme_Base # Lo [8] LINEAR A SIGN A800..LINEAR A SIGN A807
@@ -12063,10 +12316,20 @@ FFFC..FFFD ; Grapheme_Base # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEME
10CFA..10CFF ; Grapheme_Base # No [6] OLD HUNGARIAN NUMBER ONE..OLD HUNGARIAN NUMBER ONE THOUSAND
10D00..10D23 ; Grapheme_Base # Lo [36] HANIFI ROHINGYA LETTER A..HANIFI ROHINGYA MARK NA KHONNA
10D30..10D39 ; Grapheme_Base # Nd [10] HANIFI ROHINGYA DIGIT ZERO..HANIFI ROHINGYA DIGIT NINE
+10D40..10D49 ; Grapheme_Base # Nd [10] GARAY DIGIT ZERO..GARAY DIGIT NINE
+10D4A..10D4D ; Grapheme_Base # Lo [4] GARAY VOWEL SIGN A..GARAY VOWEL SIGN EE
+10D4E ; Grapheme_Base # Lm GARAY VOWEL LENGTH MARK
+10D4F ; Grapheme_Base # Lo GARAY SUKUN
+10D50..10D65 ; Grapheme_Base # L& [22] GARAY CAPITAL LETTER A..GARAY CAPITAL LETTER OLD NA
+10D6E ; Grapheme_Base # Pd GARAY HYPHEN
+10D6F ; Grapheme_Base # Lm GARAY REDUPLICATION MARK
+10D70..10D85 ; Grapheme_Base # L& [22] GARAY SMALL LETTER A..GARAY SMALL LETTER OLD NA
+10D8E..10D8F ; Grapheme_Base # Sm [2] GARAY PLUS SIGN..GARAY MINUS SIGN
10E60..10E7E ; Grapheme_Base # No [31] RUMI DIGIT ONE..RUMI FRACTION TWO THIRDS
10E80..10EA9 ; Grapheme_Base # Lo [42] YEZIDI LETTER ELIF..YEZIDI LETTER ET
10EAD ; Grapheme_Base # Pd YEZIDI HYPHENATION MARK
10EB0..10EB1 ; Grapheme_Base # Lo [2] YEZIDI LETTER LAM WITH DOT ABOVE..YEZIDI LETTER YOT WITH CIRCUMFLEX ABOVE
+10EC2..10EC4 ; Grapheme_Base # Lo [3] ARABIC LETTER DAL WITH TWO DOTS VERTICALLY BELOW..ARABIC LETTER KAF WITH TWO DOTS VERTICALLY BELOW
10F00..10F1C ; Grapheme_Base # Lo [29] OLD SOGDIAN LETTER ALEPH..OLD SOGDIAN LETTER FINAL TAW WITH VERTICAL TAIL
10F1D..10F26 ; Grapheme_Base # No [10] OLD SOGDIAN NUMBER ONE..OLD SOGDIAN FRACTION ONE HALF
10F27 ; Grapheme_Base # Lo OLD SOGDIAN LIGATURE AYIN-DALETH
@@ -12107,7 +12370,7 @@ FFFC..FFFD ; Grapheme_Base # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEME
11182 ; Grapheme_Base # Mc SHARADA SIGN VISARGA
11183..111B2 ; Grapheme_Base # Lo [48] SHARADA LETTER A..SHARADA LETTER HA
111B3..111B5 ; Grapheme_Base # Mc [3] SHARADA VOWEL SIGN AA..SHARADA VOWEL SIGN II
-111BF..111C0 ; Grapheme_Base # Mc [2] SHARADA VOWEL SIGN AU..SHARADA SIGN VIRAMA
+111BF ; Grapheme_Base # Mc SHARADA VOWEL SIGN AU
111C1..111C4 ; Grapheme_Base # Lo [4] SHARADA SIGN AVAGRAHA..SHARADA OM
111C5..111C8 ; Grapheme_Base # Po [4] SHARADA DANDA..SHARADA SEPARATOR
111CD ; Grapheme_Base # Po SHARADA SUTRA MARK
@@ -12122,7 +12385,6 @@ FFFC..FFFD ; Grapheme_Base # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEME
11213..1122B ; Grapheme_Base # Lo [25] KHOJKI LETTER NYA..KHOJKI LETTER LLA
1122C..1122E ; Grapheme_Base # Mc [3] KHOJKI VOWEL SIGN AA..KHOJKI VOWEL SIGN II
11232..11233 ; Grapheme_Base # Mc [2] KHOJKI VOWEL SIGN O..KHOJKI VOWEL SIGN AU
-11235 ; Grapheme_Base # Mc KHOJKI SIGN VIRAMA
11238..1123D ; Grapheme_Base # Po [6] KHOJKI DANDA..KHOJKI ABBREVIATION SIGN
1123F..11240 ; Grapheme_Base # Lo [2] KHOJKI LETTER QA..KHOJKI LETTER SHORT I
11280..11286 ; Grapheme_Base # Lo [7] MULTANI LETTER A..MULTANI LETTER GA
@@ -12145,10 +12407,22 @@ FFFC..FFFD ; Grapheme_Base # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEME
1133F ; Grapheme_Base # Mc GRANTHA VOWEL SIGN I
11341..11344 ; Grapheme_Base # Mc [4] GRANTHA VOWEL SIGN U..GRANTHA VOWEL SIGN VOCALIC RR
11347..11348 ; Grapheme_Base # Mc [2] GRANTHA VOWEL SIGN EE..GRANTHA VOWEL SIGN AI
-1134B..1134D ; Grapheme_Base # Mc [3] GRANTHA VOWEL SIGN OO..GRANTHA SIGN VIRAMA
+1134B..1134C ; Grapheme_Base # Mc [2] GRANTHA VOWEL SIGN OO..GRANTHA VOWEL SIGN AU
11350 ; Grapheme_Base # Lo GRANTHA OM
1135D..11361 ; Grapheme_Base # Lo [5] GRANTHA SIGN PLUTA..GRANTHA LETTER VOCALIC LL
11362..11363 ; Grapheme_Base # Mc [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL
+11380..11389 ; Grapheme_Base # Lo [10] TULU-TIGALARI LETTER A..TULU-TIGALARI LETTER VOCALIC LL
+1138B ; Grapheme_Base # Lo TULU-TIGALARI LETTER EE
+1138E ; Grapheme_Base # Lo TULU-TIGALARI LETTER AI
+11390..113B5 ; Grapheme_Base # Lo [38] TULU-TIGALARI LETTER OO..TULU-TIGALARI LETTER LLLA
+113B7 ; Grapheme_Base # Lo TULU-TIGALARI SIGN AVAGRAHA
+113B9..113BA ; Grapheme_Base # Mc [2] TULU-TIGALARI VOWEL SIGN I..TULU-TIGALARI VOWEL SIGN II
+113CA ; Grapheme_Base # Mc TULU-TIGALARI SIGN CANDRA ANUNASIKA
+113CC..113CD ; Grapheme_Base # Mc [2] TULU-TIGALARI SIGN ANUSVARA..TULU-TIGALARI SIGN VISARGA
+113D1 ; Grapheme_Base # Lo TULU-TIGALARI REPHA
+113D3 ; Grapheme_Base # Lo TULU-TIGALARI SIGN PLUTA
+113D4..113D5 ; Grapheme_Base # Po [2] TULU-TIGALARI DANDA..TULU-TIGALARI DOUBLE DANDA
+113D7..113D8 ; Grapheme_Base # Po [2] TULU-TIGALARI SIGN OM PUSHPIKA..TULU-TIGALARI SIGN SHRII PUSHPIKA
11400..11434 ; Grapheme_Base # Lo [53] NEWA LETTER A..NEWA LETTER HA
11435..11437 ; Grapheme_Base # Mc [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II
11440..11441 ; Grapheme_Base # Mc [2] NEWA VOWEL SIGN O..NEWA VOWEL SIGN AU
@@ -12186,11 +12460,12 @@ FFFC..FFFD ; Grapheme_Base # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEME
11680..116AA ; Grapheme_Base # Lo [43] TAKRI LETTER A..TAKRI LETTER RRA
116AC ; Grapheme_Base # Mc TAKRI SIGN VISARGA
116AE..116AF ; Grapheme_Base # Mc [2] TAKRI VOWEL SIGN I..TAKRI VOWEL SIGN II
-116B6 ; Grapheme_Base # Mc TAKRI SIGN VIRAMA
116B8 ; Grapheme_Base # Lo TAKRI LETTER ARCHAIC KHA
116B9 ; Grapheme_Base # Po TAKRI ABBREVIATION SIGN
116C0..116C9 ; Grapheme_Base # Nd [10] TAKRI DIGIT ZERO..TAKRI DIGIT NINE
+116D0..116E3 ; Grapheme_Base # Nd [20] MYANMAR PAO DIGIT ZERO..MYANMAR EASTERN PWO KAREN DIGIT NINE
11700..1171A ; Grapheme_Base # Lo [27] AHOM LETTER KA..AHOM LETTER ALTERNATE BA
+1171E ; Grapheme_Base # Mc AHOM CONSONANT SIGN MEDIAL RA
11720..11721 ; Grapheme_Base # Mc [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA
11726 ; Grapheme_Base # Mc AHOM VOWEL SIGN E
11730..11739 ; Grapheme_Base # Nd [10] AHOM DIGIT ZERO..AHOM DIGIT NINE
@@ -12212,7 +12487,6 @@ FFFC..FFFD ; Grapheme_Base # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEME
11918..1192F ; Grapheme_Base # Lo [24] DIVES AKURU LETTER DDA..DIVES AKURU LETTER ZA
11931..11935 ; Grapheme_Base # Mc [5] DIVES AKURU VOWEL SIGN I..DIVES AKURU VOWEL SIGN E
11937..11938 ; Grapheme_Base # Mc [2] DIVES AKURU VOWEL SIGN AI..DIVES AKURU VOWEL SIGN O
-1193D ; Grapheme_Base # Mc DIVES AKURU SIGN HALANTA
1193F ; Grapheme_Base # Lo DIVES AKURU PREFIXED NASAL SIGN
11940 ; Grapheme_Base # Mc DIVES AKURU MEDIAL YA
11941 ; Grapheme_Base # Lo DIVES AKURU INITIAL RA
@@ -12241,6 +12515,9 @@ FFFC..FFFD ; Grapheme_Base # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEME
11A9E..11AA2 ; Grapheme_Base # Po [5] SOYOMBO HEAD MARK WITH MOON AND SUN AND TRIPLE FLAME..SOYOMBO TERMINAL MARK-2
11AB0..11AF8 ; Grapheme_Base # Lo [73] CANADIAN SYLLABICS NATTILIK HI..PAU CIN HAU GLOTTAL STOP FINAL
11B00..11B09 ; Grapheme_Base # Po [10] DEVANAGARI HEAD MARK..DEVANAGARI SIGN MINDU
+11BC0..11BE0 ; Grapheme_Base # Lo [33] SUNUWAR LETTER DEVI..SUNUWAR LETTER KLOKO
+11BE1 ; Grapheme_Base # Po SUNUWAR SIGN PVO
+11BF0..11BF9 ; Grapheme_Base # Nd [10] SUNUWAR DIGIT ZERO..SUNUWAR DIGIT NINE
11C00..11C08 ; Grapheme_Base # Lo [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L
11C0A..11C2E ; Grapheme_Base # Lo [37] BHAIKSUKI LETTER E..BHAIKSUKI LETTER HA
11C2F ; Grapheme_Base # Mc BHAIKSUKI VOWEL SIGN AA
@@ -12276,7 +12553,6 @@ FFFC..FFFD ; Grapheme_Base # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEME
11F12..11F33 ; Grapheme_Base # Lo [34] KAWI LETTER KA..KAWI LETTER JNYA
11F34..11F35 ; Grapheme_Base # Mc [2] KAWI VOWEL SIGN AA..KAWI VOWEL SIGN ALTERNATE AA
11F3E..11F3F ; Grapheme_Base # Mc [2] KAWI VOWEL SIGN E..KAWI VOWEL SIGN AI
-11F41 ; Grapheme_Base # Mc KAWI SIGN KILLER
11F43..11F4F ; Grapheme_Base # Po [13] KAWI DANDA..KAWI PUNCTUATION CLOSING SPIRAL
11F50..11F59 ; Grapheme_Base # Nd [10] KAWI DIGIT ZERO..KAWI DIGIT NINE
11FB0 ; Grapheme_Base # Lo LISU LETTER YHA
@@ -12293,7 +12569,11 @@ FFFC..FFFD ; Grapheme_Base # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEME
12FF1..12FF2 ; Grapheme_Base # Po [2] CYPRO-MINOAN SIGN CM301..CYPRO-MINOAN SIGN CM302
13000..1342F ; Grapheme_Base # Lo [1072] EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH V011D
13441..13446 ; Grapheme_Base # Lo [6] EGYPTIAN HIEROGLYPH FULL BLANK..EGYPTIAN HIEROGLYPH WIDE LOST SIGN
+13460..143FA ; Grapheme_Base # Lo [3995] EGYPTIAN HIEROGLYPH-13460..EGYPTIAN HIEROGLYPH-143FA
14400..14646 ; Grapheme_Base # Lo [583] ANATOLIAN HIEROGLYPH A001..ANATOLIAN HIEROGLYPH A530
+16100..1611D ; Grapheme_Base # Lo [30] GURUNG KHEMA LETTER A..GURUNG KHEMA LETTER SA
+1612A..1612C ; Grapheme_Base # Mc [3] GURUNG KHEMA CONSONANT SIGN MEDIAL YA..GURUNG KHEMA CONSONANT SIGN MEDIAL HA
+16130..16139 ; Grapheme_Base # Nd [10] GURUNG KHEMA DIGIT ZERO..GURUNG KHEMA DIGIT NINE
16800..16A38 ; Grapheme_Base # Lo [569] BAMUM LETTER PHASE-A NGKUE MFON..BAMUM LETTER PHASE-F VUEQ
16A40..16A5E ; Grapheme_Base # Lo [31] MRO LETTER TA..MRO LETTER TEK
16A60..16A69 ; Grapheme_Base # Nd [10] MRO DIGIT ZERO..MRO DIGIT NINE
@@ -12312,6 +12592,11 @@ FFFC..FFFD ; Grapheme_Base # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEME
16B5B..16B61 ; Grapheme_Base # No [7] PAHAWH HMONG NUMBER TENS..PAHAWH HMONG NUMBER TRILLIONS
16B63..16B77 ; Grapheme_Base # Lo [21] PAHAWH HMONG SIGN VOS LUB..PAHAWH HMONG SIGN CIM NRES TOS
16B7D..16B8F ; Grapheme_Base # Lo [19] PAHAWH HMONG CLAN SIGN TSHEEJ..PAHAWH HMONG CLAN SIGN VWJ
+16D40..16D42 ; Grapheme_Base # Lm [3] KIRAT RAI SIGN ANUSVARA..KIRAT RAI SIGN VISARGA
+16D43..16D6A ; Grapheme_Base # Lo [40] KIRAT RAI LETTER A..KIRAT RAI VOWEL SIGN AU
+16D6B..16D6C ; Grapheme_Base # Lm [2] KIRAT RAI SIGN VIRAMA..KIRAT RAI SIGN SAAT
+16D6D..16D6F ; Grapheme_Base # Po [3] KIRAT RAI SIGN YUPI..KIRAT RAI DOUBLE DANDA
+16D70..16D79 ; Grapheme_Base # Nd [10] KIRAT RAI DIGIT ZERO..KIRAT RAI DIGIT NINE
16E40..16E7F ; Grapheme_Base # L& [64] MEDEFAIDRIN CAPITAL LETTER M..MEDEFAIDRIN SMALL LETTER Y
16E80..16E96 ; Grapheme_Base # No [23] MEDEFAIDRIN DIGIT ZERO..MEDEFAIDRIN DIGIT THREE ALTERNATE FORM
16E97..16E9A ; Grapheme_Base # Po [4] MEDEFAIDRIN COMMA..MEDEFAIDRIN EXCLAMATION OH
@@ -12322,10 +12607,9 @@ FFFC..FFFD ; Grapheme_Base # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEME
16FE0..16FE1 ; Grapheme_Base # Lm [2] TANGUT ITERATION MARK..NUSHU ITERATION MARK
16FE2 ; Grapheme_Base # Po OLD CHINESE HOOK MARK
16FE3 ; Grapheme_Base # Lm OLD CHINESE ITERATION MARK
-16FF0..16FF1 ; Grapheme_Base # Mc [2] VIETNAMESE ALTERNATE READING MARK CA..VIETNAMESE ALTERNATE READING MARK NHAY
17000..187F7 ; Grapheme_Base # Lo [6136] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187F7
18800..18CD5 ; Grapheme_Base # Lo [1238] TANGUT COMPONENT-001..KHITAN SMALL SCRIPT CHARACTER-18CD5
-18D00..18D08 ; Grapheme_Base # Lo [9] TANGUT IDEOGRAPH-18D00..TANGUT IDEOGRAPH-18D08
+18CFF..18D08 ; Grapheme_Base # Lo [10] KHITAN SMALL SCRIPT CHARACTER-18CFF..TANGUT IDEOGRAPH-18D08
1AFF0..1AFF3 ; Grapheme_Base # Lm [4] KATAKANA LETTER MINNAN TONE-2..KATAKANA LETTER MINNAN TONE-5
1AFF5..1AFFB ; Grapheme_Base # Lm [7] KATAKANA LETTER MINNAN TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-5
1AFFD..1AFFE ; Grapheme_Base # Lm [2] KATAKANA LETTER MINNAN NASALIZED TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-8
@@ -12341,13 +12625,14 @@ FFFC..FFFD ; Grapheme_Base # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEME
1BC90..1BC99 ; Grapheme_Base # Lo [10] DUPLOYAN AFFIX LOW ACUTE..DUPLOYAN AFFIX LOW ARROW
1BC9C ; Grapheme_Base # So DUPLOYAN SIGN O WITH CROSS
1BC9F ; Grapheme_Base # Po DUPLOYAN PUNCTUATION CHINOOK FULL STOP
+1CC00..1CCEF ; Grapheme_Base # So [240] UP-POINTING GO-KART..OUTLINED LATIN CAPITAL LETTER Z
+1CCF0..1CCF9 ; Grapheme_Base # Nd [10] OUTLINED DIGIT ZERO..OUTLINED DIGIT NINE
+1CD00..1CEB3 ; Grapheme_Base # So [436] BLOCK OCTANT-3..BLACK RIGHT TRIANGLE CARET
1CF50..1CFC3 ; Grapheme_Base # So [116] ZNAMENNY NEUME KRYUK..ZNAMENNY NEUME PAUK
1D000..1D0F5 ; Grapheme_Base # So [246] BYZANTINE MUSICAL SYMBOL PSILI..BYZANTINE MUSICAL SYMBOL GORGON NEO KATO
1D100..1D126 ; Grapheme_Base # So [39] MUSICAL SYMBOL SINGLE BARLINE..MUSICAL SYMBOL DRUM CLEF-2
1D129..1D164 ; Grapheme_Base # So [60] MUSICAL SYMBOL MULTIPLE MEASURE REST..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
-1D166 ; Grapheme_Base # Mc MUSICAL SYMBOL COMBINING SPRECHGESANG STEM
1D16A..1D16C ; Grapheme_Base # So [3] MUSICAL SYMBOL FINGERED TREMOLO-1..MUSICAL SYMBOL FINGERED TREMOLO-3
-1D16D ; Grapheme_Base # Mc MUSICAL SYMBOL COMBINING AUGMENTATION DOT
1D183..1D184 ; Grapheme_Base # So [2] MUSICAL SYMBOL ARPEGGIATO UP..MUSICAL SYMBOL ARPEGGIATO DOWN
1D18C..1D1A9 ; Grapheme_Base # So [30] MUSICAL SYMBOL RINFORZANDO..MUSICAL SYMBOL DEGREE SLASH
1D1AE..1D1EA ; Grapheme_Base # So [61] MUSICAL SYMBOL PEDAL MARK..MUSICAL SYMBOL KORON
@@ -12421,6 +12706,10 @@ FFFC..FFFD ; Grapheme_Base # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEME
1E4D0..1E4EA ; Grapheme_Base # Lo [27] NAG MUNDARI LETTER O..NAG MUNDARI LETTER ELL
1E4EB ; Grapheme_Base # Lm NAG MUNDARI SIGN OJOD
1E4F0..1E4F9 ; Grapheme_Base # Nd [10] NAG MUNDARI DIGIT ZERO..NAG MUNDARI DIGIT NINE
+1E5D0..1E5ED ; Grapheme_Base # Lo [30] OL ONAL LETTER O..OL ONAL LETTER EG
+1E5F0 ; Grapheme_Base # Lo OL ONAL SIGN HODDOND
+1E5F1..1E5FA ; Grapheme_Base # Nd [10] OL ONAL DIGIT ZERO..OL ONAL DIGIT NINE
+1E5FF ; Grapheme_Base # Po OL ONAL ABBREVIATION SIGN
1E7E0..1E7E6 ; Grapheme_Base # Lo [7] ETHIOPIC SYLLABLE HHYA..ETHIOPIC SYLLABLE HHYO
1E7E8..1E7EB ; Grapheme_Base # Lo [4] ETHIOPIC SYLLABLE GURAGE HHWA..ETHIOPIC SYLLABLE HHWE
1E7ED..1E7EE ; Grapheme_Base # Lo [2] ETHIOPIC SYLLABLE GURAGE MWI..ETHIOPIC SYLLABLE GURAGE MWEE
@@ -12500,18 +12789,18 @@ FFFC..FFFD ; Grapheme_Base # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEME
1F850..1F859 ; Grapheme_Base # So [10] LEFTWARDS SANS-SERIF ARROW..UP DOWN SANS-SERIF ARROW
1F860..1F887 ; Grapheme_Base # So [40] WIDE-HEADED LEFTWARDS LIGHT BARB ARROW..WIDE-HEADED SOUTH WEST VERY HEAVY BARB ARROW
1F890..1F8AD ; Grapheme_Base # So [30] LEFTWARDS TRIANGLE ARROWHEAD..WHITE ARROW SHAFT WIDTH TWO THIRDS
-1F8B0..1F8B1 ; Grapheme_Base # So [2] ARROW POINTING UPWARDS THEN NORTH WEST..ARROW POINTING RIGHTWARDS THEN CURVING SOUTH WEST
+1F8B0..1F8BB ; Grapheme_Base # So [12] ARROW POINTING UPWARDS THEN NORTH WEST..SOUTH WEST ARROW FROM BAR
+1F8C0..1F8C1 ; Grapheme_Base # So [2] LEFTWARDS ARROW FROM DOWNWARDS ARROW..RIGHTWARDS ARROW FROM DOWNWARDS ARROW
1F900..1FA53 ; Grapheme_Base # So [340] CIRCLED CROSS FORMEE WITH FOUR DOTS..BLACK CHESS KNIGHT-BISHOP
1FA60..1FA6D ; Grapheme_Base # So [14] XIANGQI RED GENERAL..XIANGQI BLACK SOLDIER
1FA70..1FA7C ; Grapheme_Base # So [13] BALLET SHOES..CRUTCH
-1FA80..1FA88 ; Grapheme_Base # So [9] YO-YO..FLUTE
-1FA90..1FABD ; Grapheme_Base # So [46] RINGED PLANET..WING
-1FABF..1FAC5 ; Grapheme_Base # So [7] GOOSE..PERSON WITH CROWN
-1FACE..1FADB ; Grapheme_Base # So [14] MOOSE..PEA POD
-1FAE0..1FAE8 ; Grapheme_Base # So [9] MELTING FACE..SHAKING FACE
+1FA80..1FA89 ; Grapheme_Base # So [10] YO-YO..HARP
+1FA8F..1FAC6 ; Grapheme_Base # So [56] SHOVEL..FINGERPRINT
+1FACE..1FADC ; Grapheme_Base # So [15] MOOSE..ROOT VEGETABLE
+1FADF..1FAE9 ; Grapheme_Base # So [11] SPLATTER..FACE WITH BAGS UNDER EYES
1FAF0..1FAF8 ; Grapheme_Base # So [9] HAND WITH INDEX FINGER AND THUMB CROSSED..RIGHTWARDS PUSHING HAND
1FB00..1FB92 ; Grapheme_Base # So [147] BLOCK SEXTANT-1..UPPER HALF INVERSE MEDIUM SHADE AND LOWER HALF BLOCK
-1FB94..1FBCA ; Grapheme_Base # So [55] LEFT HALF INVERSE MEDIUM SHADE AND RIGHT HALF BLOCK..WHITE UP-POINTING CHEVRON
+1FB94..1FBEF ; Grapheme_Base # So [92] LEFT HALF INVERSE MEDIUM SHADE AND RIGHT HALF BLOCK..TOP LEFT JUSTIFIED LOWER RIGHT QUARTER BLACK CIRCLE
1FBF0..1FBF9 ; Grapheme_Base # Nd [10] SEGMENTED DIGIT ZERO..SEGMENTED DIGIT NINE
20000..2A6DF ; Grapheme_Base # Lo [42720] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6DF
2A700..2B739 ; Grapheme_Base # Lo [4154] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B739
@@ -12523,7 +12812,7 @@ FFFC..FFFD ; Grapheme_Base # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEME
30000..3134A ; Grapheme_Base # Lo [4939] CJK UNIFIED IDEOGRAPH-30000..CJK UNIFIED IDEOGRAPH-3134A
31350..323AF ; Grapheme_Base # Lo [4192] CJK UNIFIED IDEOGRAPH-31350..CJK UNIFIED IDEOGRAPH-323AF
-# Total code points: 147613
+# Total code points: 152730
# ================================================
@@ -12573,6 +12862,9 @@ ABED ; Grapheme_Link # Mn MEETEI MAYEK APUN IYEK
11235 ; Grapheme_Link # Mc KHOJKI SIGN VIRAMA
112EA ; Grapheme_Link # Mn KHUDAWADI SIGN VIRAMA
1134D ; Grapheme_Link # Mc GRANTHA SIGN VIRAMA
+113CE ; Grapheme_Link # Mn TULU-TIGALARI SIGN VIRAMA
+113CF ; Grapheme_Link # Mc TULU-TIGALARI SIGN LOOPED VIRAMA
+113D0 ; Grapheme_Link # Mn TULU-TIGALARI CONJOINER
11442 ; Grapheme_Link # Mn NEWA SIGN VIRAMA
114C2 ; Grapheme_Link # Mn TIRHUTA SIGN VIRAMA
115BF ; Grapheme_Link # Mn SIDDHAM SIGN VIRAMA
@@ -12591,8 +12883,9 @@ ABED ; Grapheme_Link # Mn MEETEI MAYEK APUN IYEK
11D97 ; Grapheme_Link # Mn GUNJALA GONDI VIRAMA
11F41 ; Grapheme_Link # Mc KAWI SIGN KILLER
11F42 ; Grapheme_Link # Mn KAWI CONJOINER
+1612F ; Grapheme_Link # Mn GURUNG KHEMA SIGN THOLHOMA
-# Total code points: 65
+# Total code points: 69
# ================================================
@@ -12656,9 +12949,9 @@ ABED ; Grapheme_Link # Mn MEETEI MAYEK APUN IYEK
# Indic_Conjunct_Break=Extend
-0300..034E ; InCB; Extend # Mn [79] COMBINING GRAVE ACCENT..COMBINING UPWARDS ARROW BELOW
-0350..036F ; InCB; Extend # Mn [32] COMBINING RIGHT ARROWHEAD ABOVE..COMBINING LATIN SMALL LETTER X
+0300..036F ; InCB; Extend # Mn [112] COMBINING GRAVE ACCENT..COMBINING LATIN SMALL LETTER X
0483..0487 ; InCB; Extend # Mn [5] COMBINING CYRILLIC TITLO..COMBINING CYRILLIC POKRYTIE
+0488..0489 ; InCB; Extend # Me [2] COMBINING CYRILLIC HUNDRED THOUSANDS SIGN..COMBINING CYRILLIC MILLIONS SIGN
0591..05BD ; InCB; Extend # Mn [45] HEBREW ACCENT ETNAHTA..HEBREW POINT METEG
05BF ; InCB; Extend # Mn HEBREW POINT RAFE
05C1..05C2 ; InCB; Extend # Mn [2] HEBREW POINT SHIN DOT..HEBREW POINT SIN DOT
@@ -12673,6 +12966,7 @@ ABED ; Grapheme_Link # Mn MEETEI MAYEK APUN IYEK
06EA..06ED ; InCB; Extend # Mn [4] ARABIC EMPTY CENTRE LOW STOP..ARABIC SMALL LOW MEEM
0711 ; InCB; Extend # Mn SYRIAC LETTER SUPERSCRIPT ALAPH
0730..074A ; InCB; Extend # Mn [27] SYRIAC PTHAHA ABOVE..SYRIAC BARREKH
+07A6..07B0 ; InCB; Extend # Mn [11] THAANA ABAFILI..THAANA SUKUN
07EB..07F3 ; InCB; Extend # Mn [9] NKO COMBINING SHORT HIGH TONE..NKO COMBINING DOUBLE DOT ABOVE
07FD ; InCB; Extend # Mn NKO DANTAYALAN
0816..0819 ; InCB; Extend # Mn [4] SAMARITAN MARK IN..SAMARITAN MARK DAGESH
@@ -12680,55 +12974,160 @@ ABED ; Grapheme_Link # Mn MEETEI MAYEK APUN IYEK
0825..0827 ; InCB; Extend # Mn [3] SAMARITAN VOWEL SIGN SHORT A..SAMARITAN VOWEL SIGN U
0829..082D ; InCB; Extend # Mn [5] SAMARITAN VOWEL SIGN LONG I..SAMARITAN MARK NEQUDAA
0859..085B ; InCB; Extend # Mn [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK
-0898..089F ; InCB; Extend # Mn [8] ARABIC SMALL HIGH WORD AL-JUZ..ARABIC HALF MADDA OVER MADDA
+0897..089F ; InCB; Extend # Mn [9] ARABIC PEPET..ARABIC HALF MADDA OVER MADDA
08CA..08E1 ; InCB; Extend # Mn [24] ARABIC SMALL HIGH FARSI YEH..ARABIC SMALL HIGH SIGN SAFHA
-08E3..08FF ; InCB; Extend # Mn [29] ARABIC TURNED DAMMA BELOW..ARABIC MARK SIDEWAYS NOON GHUNNA
+08E3..0902 ; InCB; Extend # Mn [32] ARABIC TURNED DAMMA BELOW..DEVANAGARI SIGN ANUSVARA
+093A ; InCB; Extend # Mn DEVANAGARI VOWEL SIGN OE
093C ; InCB; Extend # Mn DEVANAGARI SIGN NUKTA
-0951..0954 ; InCB; Extend # Mn [4] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI ACUTE ACCENT
+0941..0948 ; InCB; Extend # Mn [8] DEVANAGARI VOWEL SIGN U..DEVANAGARI VOWEL SIGN AI
+0951..0957 ; InCB; Extend # Mn [7] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI VOWEL SIGN UUE
+0962..0963 ; InCB; Extend # Mn [2] DEVANAGARI VOWEL SIGN VOCALIC L..DEVANAGARI VOWEL SIGN VOCALIC LL
+0981 ; InCB; Extend # Mn BENGALI SIGN CANDRABINDU
09BC ; InCB; Extend # Mn BENGALI SIGN NUKTA
+09BE ; InCB; Extend # Mc BENGALI VOWEL SIGN AA
+09C1..09C4 ; InCB; Extend # Mn [4] BENGALI VOWEL SIGN U..BENGALI VOWEL SIGN VOCALIC RR
+09D7 ; InCB; Extend # Mc BENGALI AU LENGTH MARK
+09E2..09E3 ; InCB; Extend # Mn [2] BENGALI VOWEL SIGN VOCALIC L..BENGALI VOWEL SIGN VOCALIC LL
09FE ; InCB; Extend # Mn BENGALI SANDHI MARK
+0A01..0A02 ; InCB; Extend # Mn [2] GURMUKHI SIGN ADAK BINDI..GURMUKHI SIGN BINDI
0A3C ; InCB; Extend # Mn GURMUKHI SIGN NUKTA
+0A41..0A42 ; InCB; Extend # Mn [2] GURMUKHI VOWEL SIGN U..GURMUKHI VOWEL SIGN UU
+0A47..0A48 ; InCB; Extend # Mn [2] GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI
+0A4B..0A4D ; InCB; Extend # Mn [3] GURMUKHI VOWEL SIGN OO..GURMUKHI SIGN VIRAMA
+0A51 ; InCB; Extend # Mn GURMUKHI SIGN UDAAT
+0A70..0A71 ; InCB; Extend # Mn [2] GURMUKHI TIPPI..GURMUKHI ADDAK
+0A75 ; InCB; Extend # Mn GURMUKHI SIGN YAKASH
+0A81..0A82 ; InCB; Extend # Mn [2] GUJARATI SIGN CANDRABINDU..GUJARATI SIGN ANUSVARA
0ABC ; InCB; Extend # Mn GUJARATI SIGN NUKTA
+0AC1..0AC5 ; InCB; Extend # Mn [5] GUJARATI VOWEL SIGN U..GUJARATI VOWEL SIGN CANDRA E
+0AC7..0AC8 ; InCB; Extend # Mn [2] GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN AI
+0AE2..0AE3 ; InCB; Extend # Mn [2] GUJARATI VOWEL SIGN VOCALIC L..GUJARATI VOWEL SIGN VOCALIC LL
+0AFA..0AFF ; InCB; Extend # Mn [6] GUJARATI SIGN SUKUN..GUJARATI SIGN TWO-CIRCLE NUKTA ABOVE
+0B01 ; InCB; Extend # Mn ORIYA SIGN CANDRABINDU
0B3C ; InCB; Extend # Mn ORIYA SIGN NUKTA
+0B3E ; InCB; Extend # Mc ORIYA VOWEL SIGN AA
+0B3F ; InCB; Extend # Mn ORIYA VOWEL SIGN I
+0B41..0B44 ; InCB; Extend # Mn [4] ORIYA VOWEL SIGN U..ORIYA VOWEL SIGN VOCALIC RR
+0B55..0B56 ; InCB; Extend # Mn [2] ORIYA SIGN OVERLINE..ORIYA AI LENGTH MARK
+0B57 ; InCB; Extend # Mc ORIYA AU LENGTH MARK
+0B62..0B63 ; InCB; Extend # Mn [2] ORIYA VOWEL SIGN VOCALIC L..ORIYA VOWEL SIGN VOCALIC LL
+0B82 ; InCB; Extend # Mn TAMIL SIGN ANUSVARA
+0BBE ; InCB; Extend # Mc TAMIL VOWEL SIGN AA
+0BC0 ; InCB; Extend # Mn TAMIL VOWEL SIGN II
+0BCD ; InCB; Extend # Mn TAMIL SIGN VIRAMA
+0BD7 ; InCB; Extend # Mc TAMIL AU LENGTH MARK
+0C00 ; InCB; Extend # Mn TELUGU SIGN COMBINING CANDRABINDU ABOVE
+0C04 ; InCB; Extend # Mn TELUGU SIGN COMBINING ANUSVARA ABOVE
0C3C ; InCB; Extend # Mn TELUGU SIGN NUKTA
+0C3E..0C40 ; InCB; Extend # Mn [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II
+0C46..0C48 ; InCB; Extend # Mn [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI
+0C4A..0C4C ; InCB; Extend # Mn [3] TELUGU VOWEL SIGN O..TELUGU VOWEL SIGN AU
0C55..0C56 ; InCB; Extend # Mn [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK
+0C62..0C63 ; InCB; Extend # Mn [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL
+0C81 ; InCB; Extend # Mn KANNADA SIGN CANDRABINDU
0CBC ; InCB; Extend # Mn KANNADA SIGN NUKTA
+0CBF ; InCB; Extend # Mn KANNADA VOWEL SIGN I
+0CC0 ; InCB; Extend # Mc KANNADA VOWEL SIGN II
+0CC2 ; InCB; Extend # Mc KANNADA VOWEL SIGN UU
+0CC6 ; InCB; Extend # Mn KANNADA VOWEL SIGN E
+0CC7..0CC8 ; InCB; Extend # Mc [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI
+0CCA..0CCB ; InCB; Extend # Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO
+0CCC..0CCD ; InCB; Extend # Mn [2] KANNADA VOWEL SIGN AU..KANNADA SIGN VIRAMA
+0CD5..0CD6 ; InCB; Extend # Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK
+0CE2..0CE3 ; InCB; Extend # Mn [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL
+0D00..0D01 ; InCB; Extend # Mn [2] MALAYALAM SIGN COMBINING ANUSVARA ABOVE..MALAYALAM SIGN CANDRABINDU
0D3B..0D3C ; InCB; Extend # Mn [2] MALAYALAM SIGN VERTICAL BAR VIRAMA..MALAYALAM SIGN CIRCULAR VIRAMA
-0E38..0E3A ; InCB; Extend # Mn [3] THAI CHARACTER SARA U..THAI CHARACTER PHINTHU
-0E48..0E4B ; InCB; Extend # Mn [4] THAI CHARACTER MAI EK..THAI CHARACTER MAI CHATTAWA
-0EB8..0EBA ; InCB; Extend # Mn [3] LAO VOWEL SIGN U..LAO SIGN PALI VIRAMA
-0EC8..0ECB ; InCB; Extend # Mn [4] LAO TONE MAI EK..LAO TONE MAI CATAWA
+0D3E ; InCB; Extend # Mc MALAYALAM VOWEL SIGN AA
+0D41..0D44 ; InCB; Extend # Mn [4] MALAYALAM VOWEL SIGN U..MALAYALAM VOWEL SIGN VOCALIC RR
+0D57 ; InCB; Extend # Mc MALAYALAM AU LENGTH MARK
+0D62..0D63 ; InCB; Extend # Mn [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL
+0D81 ; InCB; Extend # Mn SINHALA SIGN CANDRABINDU
+0DCA ; InCB; Extend # Mn SINHALA SIGN AL-LAKUNA
+0DCF ; InCB; Extend # Mc SINHALA VOWEL SIGN AELA-PILLA
+0DD2..0DD4 ; InCB; Extend # Mn [3] SINHALA VOWEL SIGN KETTI IS-PILLA..SINHALA VOWEL SIGN KETTI PAA-PILLA
+0DD6 ; InCB; Extend # Mn SINHALA VOWEL SIGN DIGA PAA-PILLA
+0DDF ; InCB; Extend # Mc SINHALA VOWEL SIGN GAYANUKITTA
+0E31 ; InCB; Extend # Mn THAI CHARACTER MAI HAN-AKAT
+0E34..0E3A ; InCB; Extend # Mn [7] THAI CHARACTER SARA I..THAI CHARACTER PHINTHU
+0E47..0E4E ; InCB; Extend # Mn [8] THAI CHARACTER MAITAIKHU..THAI CHARACTER YAMAKKAN
+0EB1 ; InCB; Extend # Mn LAO VOWEL SIGN MAI KAN
+0EB4..0EBC ; InCB; Extend # Mn [9] LAO VOWEL SIGN I..LAO SEMIVOWEL SIGN LO
+0EC8..0ECE ; InCB; Extend # Mn [7] LAO TONE MAI EK..LAO YAMAKKAN
0F18..0F19 ; InCB; Extend # Mn [2] TIBETAN ASTROLOGICAL SIGN -KHYUD PA..TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS
0F35 ; InCB; Extend # Mn TIBETAN MARK NGAS BZUNG NYI ZLA
0F37 ; InCB; Extend # Mn TIBETAN MARK NGAS BZUNG SGOR RTAGS
0F39 ; InCB; Extend # Mn TIBETAN MARK TSA -PHRU
-0F71..0F72 ; InCB; Extend # Mn [2] TIBETAN VOWEL SIGN AA..TIBETAN VOWEL SIGN I
-0F74 ; InCB; Extend # Mn TIBETAN VOWEL SIGN U
-0F7A..0F7D ; InCB; Extend # Mn [4] TIBETAN VOWEL SIGN E..TIBETAN VOWEL SIGN OO
-0F80 ; InCB; Extend # Mn TIBETAN VOWEL SIGN REVERSED I
-0F82..0F84 ; InCB; Extend # Mn [3] TIBETAN SIGN NYI ZLA NAA DA..TIBETAN MARK HALANTA
+0F71..0F7E ; InCB; Extend # Mn [14] TIBETAN VOWEL SIGN AA..TIBETAN SIGN RJES SU NGA RO
+0F80..0F84 ; InCB; Extend # Mn [5] TIBETAN VOWEL SIGN REVERSED I..TIBETAN MARK HALANTA
0F86..0F87 ; InCB; Extend # Mn [2] TIBETAN SIGN LCI RTAGS..TIBETAN SIGN YANG RTAGS
+0F8D..0F97 ; InCB; Extend # Mn [11] TIBETAN SUBJOINED SIGN LCE TSA CAN..TIBETAN SUBJOINED LETTER JA
+0F99..0FBC ; InCB; Extend # Mn [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA
0FC6 ; InCB; Extend # Mn TIBETAN SYMBOL PADMA GDAN
-1037 ; InCB; Extend # Mn MYANMAR SIGN DOT BELOW
+102D..1030 ; InCB; Extend # Mn [4] MYANMAR VOWEL SIGN I..MYANMAR VOWEL SIGN UU
+1032..1037 ; InCB; Extend # Mn [6] MYANMAR VOWEL SIGN AI..MYANMAR SIGN DOT BELOW
1039..103A ; InCB; Extend # Mn [2] MYANMAR SIGN VIRAMA..MYANMAR SIGN ASAT
+103D..103E ; InCB; Extend # Mn [2] MYANMAR CONSONANT SIGN MEDIAL WA..MYANMAR CONSONANT SIGN MEDIAL HA
+1058..1059 ; InCB; Extend # Mn [2] MYANMAR VOWEL SIGN VOCALIC L..MYANMAR VOWEL SIGN VOCALIC LL
+105E..1060 ; InCB; Extend # Mn [3] MYANMAR CONSONANT SIGN MON MEDIAL NA..MYANMAR CONSONANT SIGN MON MEDIAL LA
+1071..1074 ; InCB; Extend # Mn [4] MYANMAR VOWEL SIGN GEBA KAREN I..MYANMAR VOWEL SIGN KAYAH EE
+1082 ; InCB; Extend # Mn MYANMAR CONSONANT SIGN SHAN MEDIAL WA
+1085..1086 ; InCB; Extend # Mn [2] MYANMAR VOWEL SIGN SHAN E ABOVE..MYANMAR VOWEL SIGN SHAN FINAL Y
108D ; InCB; Extend # Mn MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE
+109D ; InCB; Extend # Mn MYANMAR VOWEL SIGN AITON AI
135D..135F ; InCB; Extend # Mn [3] ETHIOPIC COMBINING GEMINATION AND VOWEL LENGTH MARK..ETHIOPIC COMBINING GEMINATION MARK
-1714 ; InCB; Extend # Mn TAGALOG SIGN VIRAMA
-17D2 ; InCB; Extend # Mn KHMER SIGN COENG
+1712..1714 ; InCB; Extend # Mn [3] TAGALOG VOWEL SIGN I..TAGALOG SIGN VIRAMA
+1715 ; InCB; Extend # Mc TAGALOG SIGN PAMUDPOD
+1732..1733 ; InCB; Extend # Mn [2] HANUNOO VOWEL SIGN I..HANUNOO VOWEL SIGN U
+1734 ; InCB; Extend # Mc HANUNOO SIGN PAMUDPOD
+1752..1753 ; InCB; Extend # Mn [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U
+1772..1773 ; InCB; Extend # Mn [2] TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U
+17B4..17B5 ; InCB; Extend # Mn [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA
+17B7..17BD ; InCB; Extend # Mn [7] KHMER VOWEL SIGN I..KHMER VOWEL SIGN UA
+17C6 ; InCB; Extend # Mn KHMER SIGN NIKAHIT
+17C9..17D3 ; InCB; Extend # Mn [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT
17DD ; InCB; Extend # Mn KHMER SIGN ATTHACAN
+180B..180D ; InCB; Extend # Mn [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE
+180F ; InCB; Extend # Mn MONGOLIAN FREE VARIATION SELECTOR FOUR
+1885..1886 ; InCB; Extend # Mn [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA
18A9 ; InCB; Extend # Mn MONGOLIAN LETTER ALI GALI DAGALGA
+1920..1922 ; InCB; Extend # Mn [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U
+1927..1928 ; InCB; Extend # Mn [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O
+1932 ; InCB; Extend # Mn LIMBU SMALL LETTER ANUSVARA
1939..193B ; InCB; Extend # Mn [3] LIMBU SIGN MUKPHRENG..LIMBU SIGN SA-I
1A17..1A18 ; InCB; Extend # Mn [2] BUGINESE VOWEL SIGN I..BUGINESE VOWEL SIGN U
+1A1B ; InCB; Extend # Mn BUGINESE VOWEL SIGN AE
+1A56 ; InCB; Extend # Mn TAI THAM CONSONANT SIGN MEDIAL LA
+1A58..1A5E ; InCB; Extend # Mn [7] TAI THAM SIGN MAI KANG LAI..TAI THAM CONSONANT SIGN SA
1A60 ; InCB; Extend # Mn TAI THAM SIGN SAKOT
-1A75..1A7C ; InCB; Extend # Mn [8] TAI THAM SIGN TONE-1..TAI THAM SIGN KHUEN-LUE KARAN
+1A62 ; InCB; Extend # Mn TAI THAM VOWEL SIGN MAI SAT
+1A65..1A6C ; InCB; Extend # Mn [8] TAI THAM VOWEL SIGN I..TAI THAM VOWEL SIGN OA BELOW
+1A73..1A7C ; InCB; Extend # Mn [10] TAI THAM VOWEL SIGN OA ABOVE..TAI THAM SIGN KHUEN-LUE KARAN
1A7F ; InCB; Extend # Mn TAI THAM COMBINING CRYPTOGRAMMIC DOT
1AB0..1ABD ; InCB; Extend # Mn [14] COMBINING DOUBLED CIRCUMFLEX ACCENT..COMBINING PARENTHESES BELOW
+1ABE ; InCB; Extend # Me COMBINING PARENTHESES OVERLAY
1ABF..1ACE ; InCB; Extend # Mn [16] COMBINING LATIN SMALL LETTER W BELOW..COMBINING LATIN SMALL LETTER INSULAR T
+1B00..1B03 ; InCB; Extend # Mn [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG
1B34 ; InCB; Extend # Mn BALINESE SIGN REREKAN
+1B35 ; InCB; Extend # Mc BALINESE VOWEL SIGN TEDUNG
+1B36..1B3A ; InCB; Extend # Mn [5] BALINESE VOWEL SIGN ULU..BALINESE VOWEL SIGN RA REPA
+1B3B ; InCB; Extend # Mc BALINESE VOWEL SIGN RA REPA TEDUNG
+1B3C ; InCB; Extend # Mn BALINESE VOWEL SIGN LA LENGA
+1B3D ; InCB; Extend # Mc BALINESE VOWEL SIGN LA LENGA TEDUNG
+1B42 ; InCB; Extend # Mn BALINESE VOWEL SIGN PEPET
+1B43..1B44 ; InCB; Extend # Mc [2] BALINESE VOWEL SIGN PEPET TEDUNG..BALINESE ADEG ADEG
1B6B..1B73 ; InCB; Extend # Mn [9] BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG
-1BAB ; InCB; Extend # Mn SUNDANESE SIGN VIRAMA
+1B80..1B81 ; InCB; Extend # Mn [2] SUNDANESE SIGN PANYECEK..SUNDANESE SIGN PANGLAYAR
+1BA2..1BA5 ; InCB; Extend # Mn [4] SUNDANESE CONSONANT SIGN PANYAKRA..SUNDANESE VOWEL SIGN PANYUKU
+1BA8..1BA9 ; InCB; Extend # Mn [2] SUNDANESE VOWEL SIGN PAMEPET..SUNDANESE VOWEL SIGN PANEULEUNG
+1BAA ; InCB; Extend # Mc SUNDANESE SIGN PAMAAEH
+1BAB..1BAD ; InCB; Extend # Mn [3] SUNDANESE SIGN VIRAMA..SUNDANESE CONSONANT SIGN PASANGAN WA
1BE6 ; InCB; Extend # Mn BATAK SIGN TOMPI
-1C37 ; InCB; Extend # Mn LEPCHA SIGN NUKTA
+1BE8..1BE9 ; InCB; Extend # Mn [2] BATAK VOWEL SIGN PAKPAK E..BATAK VOWEL SIGN EE
+1BED ; InCB; Extend # Mn BATAK VOWEL SIGN KARO O
+1BEF..1BF1 ; InCB; Extend # Mn [3] BATAK VOWEL SIGN U FOR SIMALUNGUN SA..BATAK CONSONANT SIGN H
+1BF2..1BF3 ; InCB; Extend # Mc [2] BATAK PANGOLAT..BATAK PANONGONAN
+1C2C..1C33 ; InCB; Extend # Mn [8] LEPCHA VOWEL SIGN E..LEPCHA CONSONANT SIGN T
+1C36..1C37 ; InCB; Extend # Mn [2] LEPCHA SIGN RAN..LEPCHA SIGN NUKTA
1CD0..1CD2 ; InCB; Extend # Mn [3] VEDIC TONE KARSHANA..VEDIC TONE PRENKHA
1CD4..1CE0 ; InCB; Extend # Mn [13] VEDIC SIGN YAJURVEDIC MIDLINE SVARITA..VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA
1CE2..1CE8 ; InCB; Extend # Mn [7] VEDIC SIGN VISARGA SVARITA..VEDIC SIGN VISARGA ANUDATTA WITH TAIL
@@ -12738,7 +13137,9 @@ ABED ; Grapheme_Link # Mn MEETEI MAYEK APUN IYEK
1DC0..1DFF ; InCB; Extend # Mn [64] COMBINING DOTTED GRAVE ACCENT..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
200D ; InCB; Extend # Cf ZERO WIDTH JOINER
20D0..20DC ; InCB; Extend # Mn [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE
+20DD..20E0 ; InCB; Extend # Me [4] COMBINING ENCLOSING CIRCLE..COMBINING ENCLOSING CIRCLE BACKSLASH
20E1 ; InCB; Extend # Mn COMBINING LEFT RIGHT ARROW ABOVE
+20E2..20E4 ; InCB; Extend # Me [3] COMBINING ENCLOSING SCREEN..COMBINING ENCLOSING UPWARD POINTING TRIANGLE
20E5..20F0 ; InCB; Extend # Mn [12] COMBINING REVERSE SOLIDUS OVERLAY..COMBINING ASTERISK ABOVE
2CEF..2CF1 ; InCB; Extend # Mn [3] COPTIC COMBINING NI ABOVE..COPTIC COMBINING SPIRITUS LENIS
2D7F ; InCB; Extend # Mn TIFINAGH CONSONANT JOINER
@@ -12747,73 +13148,198 @@ ABED ; Grapheme_Link # Mn MEETEI MAYEK APUN IYEK
302E..302F ; InCB; Extend # Mc [2] HANGUL SINGLE DOT TONE MARK..HANGUL DOUBLE DOT TONE MARK
3099..309A ; InCB; Extend # Mn [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
A66F ; InCB; Extend # Mn COMBINING CYRILLIC VZMET
+A670..A672 ; InCB; Extend # Me [3] COMBINING CYRILLIC TEN MILLIONS SIGN..COMBINING CYRILLIC THOUSAND MILLIONS SIGN
A674..A67D ; InCB; Extend # Mn [10] COMBINING CYRILLIC LETTER UKRAINIAN IE..COMBINING CYRILLIC PAYEROK
A69E..A69F ; InCB; Extend # Mn [2] COMBINING CYRILLIC LETTER EF..COMBINING CYRILLIC LETTER IOTIFIED E
A6F0..A6F1 ; InCB; Extend # Mn [2] BAMUM COMBINING MARK KOQNDON..BAMUM COMBINING MARK TUKWENTIS
+A802 ; InCB; Extend # Mn SYLOTI NAGRI SIGN DVISVARA
+A806 ; InCB; Extend # Mn SYLOTI NAGRI SIGN HASANTA
+A80B ; InCB; Extend # Mn SYLOTI NAGRI SIGN ANUSVARA
+A825..A826 ; InCB; Extend # Mn [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E
A82C ; InCB; Extend # Mn SYLOTI NAGRI SIGN ALTERNATE HASANTA
+A8C4..A8C5 ; InCB; Extend # Mn [2] SAURASHTRA SIGN VIRAMA..SAURASHTRA SIGN CANDRABINDU
A8E0..A8F1 ; InCB; Extend # Mn [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA
-A92B..A92D ; InCB; Extend # Mn [3] KAYAH LI TONE PLOPHU..KAYAH LI TONE CALYA PLOPHU
+A8FF ; InCB; Extend # Mn DEVANAGARI VOWEL SIGN AY
+A926..A92D ; InCB; Extend # Mn [8] KAYAH LI VOWEL UE..KAYAH LI TONE CALYA PLOPHU
+A947..A951 ; InCB; Extend # Mn [11] REJANG VOWEL SIGN I..REJANG CONSONANT SIGN R
+A953 ; InCB; Extend # Mc REJANG VIRAMA
+A980..A982 ; InCB; Extend # Mn [3] JAVANESE SIGN PANYANGGA..JAVANESE SIGN LAYAR
A9B3 ; InCB; Extend # Mn JAVANESE SIGN CECAK TELU
+A9B6..A9B9 ; InCB; Extend # Mn [4] JAVANESE VOWEL SIGN WULU..JAVANESE VOWEL SIGN SUKU MENDUT
+A9BC..A9BD ; InCB; Extend # Mn [2] JAVANESE VOWEL SIGN PEPET..JAVANESE CONSONANT SIGN KERET
+A9C0 ; InCB; Extend # Mc JAVANESE PANGKON
+A9E5 ; InCB; Extend # Mn MYANMAR SIGN SHAN SAW
+AA29..AA2E ; InCB; Extend # Mn [6] CHAM VOWEL SIGN AA..CHAM VOWEL SIGN OE
+AA31..AA32 ; InCB; Extend # Mn [2] CHAM VOWEL SIGN AU..CHAM VOWEL SIGN UE
+AA35..AA36 ; InCB; Extend # Mn [2] CHAM CONSONANT SIGN LA..CHAM CONSONANT SIGN WA
+AA43 ; InCB; Extend # Mn CHAM CONSONANT SIGN FINAL NG
+AA4C ; InCB; Extend # Mn CHAM CONSONANT SIGN FINAL M
+AA7C ; InCB; Extend # Mn MYANMAR SIGN TAI LAING TONE-2
AAB0 ; InCB; Extend # Mn TAI VIET MAI KANG
AAB2..AAB4 ; InCB; Extend # Mn [3] TAI VIET VOWEL I..TAI VIET VOWEL U
AAB7..AAB8 ; InCB; Extend # Mn [2] TAI VIET MAI KHIT..TAI VIET VOWEL IA
AABE..AABF ; InCB; Extend # Mn [2] TAI VIET VOWEL AM..TAI VIET TONE MAI EK
AAC1 ; InCB; Extend # Mn TAI VIET TONE MAI THO
+AAEC..AAED ; InCB; Extend # Mn [2] MEETEI MAYEK VOWEL SIGN UU..MEETEI MAYEK VOWEL SIGN AAI
AAF6 ; InCB; Extend # Mn MEETEI MAYEK VIRAMA
+ABE5 ; InCB; Extend # Mn MEETEI MAYEK VOWEL SIGN ANAP
+ABE8 ; InCB; Extend # Mn MEETEI MAYEK VOWEL SIGN UNAP
ABED ; InCB; Extend # Mn MEETEI MAYEK APUN IYEK
FB1E ; InCB; Extend # Mn HEBREW POINT JUDEO-SPANISH VARIKA
+FE00..FE0F ; InCB; Extend # Mn [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16
FE20..FE2F ; InCB; Extend # Mn [16] COMBINING LIGATURE LEFT HALF..COMBINING CYRILLIC TITLO RIGHT HALF
+FF9E..FF9F ; InCB; Extend # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
101FD ; InCB; Extend # Mn PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE
102E0 ; InCB; Extend # Mn COPTIC EPACT THOUSANDS MARK
10376..1037A ; InCB; Extend # Mn [5] COMBINING OLD PERMIC LETTER AN..COMBINING OLD PERMIC LETTER SII
-10A0D ; InCB; Extend # Mn KHAROSHTHI SIGN DOUBLE RING BELOW
-10A0F ; InCB; Extend # Mn KHAROSHTHI SIGN VISARGA
+10A01..10A03 ; InCB; Extend # Mn [3] KHAROSHTHI VOWEL SIGN I..KHAROSHTHI VOWEL SIGN VOCALIC R
+10A05..10A06 ; InCB; Extend # Mn [2] KHAROSHTHI VOWEL SIGN E..KHAROSHTHI VOWEL SIGN O
+10A0C..10A0F ; InCB; Extend # Mn [4] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI SIGN VISARGA
10A38..10A3A ; InCB; Extend # Mn [3] KHAROSHTHI SIGN BAR ABOVE..KHAROSHTHI SIGN DOT BELOW
10A3F ; InCB; Extend # Mn KHAROSHTHI VIRAMA
10AE5..10AE6 ; InCB; Extend # Mn [2] MANICHAEAN ABBREVIATION MARK ABOVE..MANICHAEAN ABBREVIATION MARK BELOW
10D24..10D27 ; InCB; Extend # Mn [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI
+10D69..10D6D ; InCB; Extend # Mn [5] GARAY VOWEL SIGN E..GARAY CONSONANT NASALIZATION MARK
10EAB..10EAC ; InCB; Extend # Mn [2] YEZIDI COMBINING HAMZA MARK..YEZIDI COMBINING MADDA MARK
-10EFD..10EFF ; InCB; Extend # Mn [3] ARABIC SMALL LOW WORD SAKTA..ARABIC SMALL LOW WORD MADDA
+10EFC..10EFF ; InCB; Extend # Mn [4] ARABIC COMBINING ALEF OVERLAY..ARABIC SMALL LOW WORD MADDA
10F46..10F50 ; InCB; Extend # Mn [11] SOGDIAN COMBINING DOT BELOW..SOGDIAN COMBINING STROKE BELOW
10F82..10F85 ; InCB; Extend # Mn [4] OLD UYGHUR COMBINING DOT ABOVE..OLD UYGHUR COMBINING TWO DOTS BELOW
+11001 ; InCB; Extend # Mn BRAHMI SIGN ANUSVARA
+11038..11046 ; InCB; Extend # Mn [15] BRAHMI VOWEL SIGN AA..BRAHMI VIRAMA
11070 ; InCB; Extend # Mn BRAHMI SIGN OLD TAMIL VIRAMA
-1107F ; InCB; Extend # Mn BRAHMI NUMBER JOINER
-110BA ; InCB; Extend # Mn KAITHI SIGN NUKTA
+11073..11074 ; InCB; Extend # Mn [2] BRAHMI VOWEL SIGN OLD TAMIL SHORT E..BRAHMI VOWEL SIGN OLD TAMIL SHORT O
+1107F..11081 ; InCB; Extend # Mn [3] BRAHMI NUMBER JOINER..KAITHI SIGN ANUSVARA
+110B3..110B6 ; InCB; Extend # Mn [4] KAITHI VOWEL SIGN U..KAITHI VOWEL SIGN AI
+110B9..110BA ; InCB; Extend # Mn [2] KAITHI SIGN VIRAMA..KAITHI SIGN NUKTA
+110C2 ; InCB; Extend # Mn KAITHI VOWEL SIGN VOCALIC R
11100..11102 ; InCB; Extend # Mn [3] CHAKMA SIGN CANDRABINDU..CHAKMA SIGN VISARGA
-11133..11134 ; InCB; Extend # Mn [2] CHAKMA VIRAMA..CHAKMA MAAYYAA
+11127..1112B ; InCB; Extend # Mn [5] CHAKMA VOWEL SIGN A..CHAKMA VOWEL SIGN UU
+1112D..11134 ; InCB; Extend # Mn [8] CHAKMA VOWEL SIGN AI..CHAKMA MAAYYAA
11173 ; InCB; Extend # Mn MAHAJANI SIGN NUKTA
-111CA ; InCB; Extend # Mn SHARADA SIGN NUKTA
-11236 ; InCB; Extend # Mn KHOJKI SIGN NUKTA
-112E9..112EA ; InCB; Extend # Mn [2] KHUDAWADI SIGN NUKTA..KHUDAWADI SIGN VIRAMA
+11180..11181 ; InCB; Extend # Mn [2] SHARADA SIGN CANDRABINDU..SHARADA SIGN ANUSVARA
+111B6..111BE ; InCB; Extend # Mn [9] SHARADA VOWEL SIGN U..SHARADA VOWEL SIGN O
+111C0 ; InCB; Extend # Mc SHARADA SIGN VIRAMA
+111C9..111CC ; InCB; Extend # Mn [4] SHARADA SANDHI MARK..SHARADA EXTRA SHORT VOWEL MARK
+111CF ; InCB; Extend # Mn SHARADA SIGN INVERTED CANDRABINDU
+1122F..11231 ; InCB; Extend # Mn [3] KHOJKI VOWEL SIGN U..KHOJKI VOWEL SIGN AI
+11234 ; InCB; Extend # Mn KHOJKI SIGN ANUSVARA
+11235 ; InCB; Extend # Mc KHOJKI SIGN VIRAMA
+11236..11237 ; InCB; Extend # Mn [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA
+1123E ; InCB; Extend # Mn KHOJKI SIGN SUKUN
+11241 ; InCB; Extend # Mn KHOJKI VOWEL SIGN VOCALIC R
+112DF ; InCB; Extend # Mn KHUDAWADI SIGN ANUSVARA
+112E3..112EA ; InCB; Extend # Mn [8] KHUDAWADI VOWEL SIGN U..KHUDAWADI SIGN VIRAMA
+11300..11301 ; InCB; Extend # Mn [2] GRANTHA SIGN COMBINING ANUSVARA ABOVE..GRANTHA SIGN CANDRABINDU
1133B..1133C ; InCB; Extend # Mn [2] COMBINING BINDU BELOW..GRANTHA SIGN NUKTA
+1133E ; InCB; Extend # Mc GRANTHA VOWEL SIGN AA
+11340 ; InCB; Extend # Mn GRANTHA VOWEL SIGN II
+1134D ; InCB; Extend # Mc GRANTHA SIGN VIRAMA
+11357 ; InCB; Extend # Mc GRANTHA AU LENGTH MARK
11366..1136C ; InCB; Extend # Mn [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX
11370..11374 ; InCB; Extend # Mn [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA
+113B8 ; InCB; Extend # Mc TULU-TIGALARI VOWEL SIGN AA
+113BB..113C0 ; InCB; Extend # Mn [6] TULU-TIGALARI VOWEL SIGN U..TULU-TIGALARI VOWEL SIGN VOCALIC LL
+113C2 ; InCB; Extend # Mc TULU-TIGALARI VOWEL SIGN EE
+113C5 ; InCB; Extend # Mc TULU-TIGALARI VOWEL SIGN AI
+113C7..113C9 ; InCB; Extend # Mc [3] TULU-TIGALARI VOWEL SIGN OO..TULU-TIGALARI AU LENGTH MARK
+113CE ; InCB; Extend # Mn TULU-TIGALARI SIGN VIRAMA
+113CF ; InCB; Extend # Mc TULU-TIGALARI SIGN LOOPED VIRAMA
+113D0 ; InCB; Extend # Mn TULU-TIGALARI CONJOINER
+113D2 ; InCB; Extend # Mn TULU-TIGALARI GEMINATION MARK
+113E1..113E2 ; InCB; Extend # Mn [2] TULU-TIGALARI VEDIC TONE SVARITA..TULU-TIGALARI VEDIC TONE ANUDATTA
+11438..1143F ; InCB; Extend # Mn [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI
+11442..11444 ; InCB; Extend # Mn [3] NEWA SIGN VIRAMA..NEWA SIGN ANUSVARA
11446 ; InCB; Extend # Mn NEWA SIGN NUKTA
1145E ; InCB; Extend # Mn NEWA SANDHI MARK
-114C3 ; InCB; Extend # Mn TIRHUTA SIGN NUKTA
-115C0 ; InCB; Extend # Mn SIDDHAM SIGN NUKTA
+114B0 ; InCB; Extend # Mc TIRHUTA VOWEL SIGN AA
+114B3..114B8 ; InCB; Extend # Mn [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL
+114BA ; InCB; Extend # Mn TIRHUTA VOWEL SIGN SHORT E
+114BD ; InCB; Extend # Mc TIRHUTA VOWEL SIGN SHORT O
+114BF..114C0 ; InCB; Extend # Mn [2] TIRHUTA SIGN CANDRABINDU..TIRHUTA SIGN ANUSVARA
+114C2..114C3 ; InCB; Extend # Mn [2] TIRHUTA SIGN VIRAMA..TIRHUTA SIGN NUKTA
+115AF ; InCB; Extend # Mc SIDDHAM VOWEL SIGN AA
+115B2..115B5 ; InCB; Extend # Mn [4] SIDDHAM VOWEL SIGN U..SIDDHAM VOWEL SIGN VOCALIC RR
+115BC..115BD ; InCB; Extend # Mn [2] SIDDHAM SIGN CANDRABINDU..SIDDHAM SIGN ANUSVARA
+115BF..115C0 ; InCB; Extend # Mn [2] SIDDHAM SIGN VIRAMA..SIDDHAM SIGN NUKTA
+115DC..115DD ; InCB; Extend # Mn [2] SIDDHAM VOWEL SIGN ALTERNATE U..SIDDHAM VOWEL SIGN ALTERNATE UU
+11633..1163A ; InCB; Extend # Mn [8] MODI VOWEL SIGN U..MODI VOWEL SIGN AI
+1163D ; InCB; Extend # Mn MODI SIGN ANUSVARA
+1163F..11640 ; InCB; Extend # Mn [2] MODI SIGN VIRAMA..MODI SIGN ARDHACANDRA
+116AB ; InCB; Extend # Mn TAKRI SIGN ANUSVARA
+116AD ; InCB; Extend # Mn TAKRI VOWEL SIGN AA
+116B0..116B5 ; InCB; Extend # Mn [6] TAKRI VOWEL SIGN U..TAKRI VOWEL SIGN AU
+116B6 ; InCB; Extend # Mc TAKRI SIGN VIRAMA
116B7 ; InCB; Extend # Mn TAKRI SIGN NUKTA
-1172B ; InCB; Extend # Mn AHOM SIGN KILLER
-1183A ; InCB; Extend # Mn DOGRA SIGN NUKTA
+1171D ; InCB; Extend # Mn AHOM CONSONANT SIGN MEDIAL LA
+1171F ; InCB; Extend # Mn AHOM CONSONANT SIGN MEDIAL LIGATING RA
+11722..11725 ; InCB; Extend # Mn [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU
+11727..1172B ; InCB; Extend # Mn [5] AHOM VOWEL SIGN AW..AHOM SIGN KILLER
+1182F..11837 ; InCB; Extend # Mn [9] DOGRA VOWEL SIGN U..DOGRA SIGN ANUSVARA
+11839..1183A ; InCB; Extend # Mn [2] DOGRA SIGN VIRAMA..DOGRA SIGN NUKTA
+11930 ; InCB; Extend # Mc DIVES AKURU VOWEL SIGN AA
+1193B..1193C ; InCB; Extend # Mn [2] DIVES AKURU SIGN ANUSVARA..DIVES AKURU SIGN CANDRABINDU
+1193D ; InCB; Extend # Mc DIVES AKURU SIGN HALANTA
1193E ; InCB; Extend # Mn DIVES AKURU VIRAMA
11943 ; InCB; Extend # Mn DIVES AKURU SIGN NUKTA
-11A34 ; InCB; Extend # Mn ZANABAZAR SQUARE SIGN VIRAMA
+119D4..119D7 ; InCB; Extend # Mn [4] NANDINAGARI VOWEL SIGN U..NANDINAGARI VOWEL SIGN VOCALIC RR
+119DA..119DB ; InCB; Extend # Mn [2] NANDINAGARI VOWEL SIGN E..NANDINAGARI VOWEL SIGN AI
+119E0 ; InCB; Extend # Mn NANDINAGARI SIGN VIRAMA
+11A01..11A0A ; InCB; Extend # Mn [10] ZANABAZAR SQUARE VOWEL SIGN I..ZANABAZAR SQUARE VOWEL LENGTH MARK
+11A33..11A38 ; InCB; Extend # Mn [6] ZANABAZAR SQUARE FINAL CONSONANT MARK..ZANABAZAR SQUARE SIGN ANUSVARA
+11A3B..11A3E ; InCB; Extend # Mn [4] ZANABAZAR SQUARE CLUSTER-FINAL LETTER YA..ZANABAZAR SQUARE CLUSTER-FINAL LETTER VA
11A47 ; InCB; Extend # Mn ZANABAZAR SQUARE SUBJOINER
-11A99 ; InCB; Extend # Mn SOYOMBO SUBJOINER
-11D42 ; InCB; Extend # Mn MASARAM GONDI SIGN NUKTA
-11D44..11D45 ; InCB; Extend # Mn [2] MASARAM GONDI SIGN HALANTA..MASARAM GONDI VIRAMA
+11A51..11A56 ; InCB; Extend # Mn [6] SOYOMBO VOWEL SIGN I..SOYOMBO VOWEL SIGN OE
+11A59..11A5B ; InCB; Extend # Mn [3] SOYOMBO VOWEL SIGN VOCALIC R..SOYOMBO VOWEL LENGTH MARK
+11A8A..11A96 ; InCB; Extend # Mn [13] SOYOMBO FINAL CONSONANT SIGN G..SOYOMBO SIGN ANUSVARA
+11A98..11A99 ; InCB; Extend # Mn [2] SOYOMBO GEMINATION MARK..SOYOMBO SUBJOINER
+11C30..11C36 ; InCB; Extend # Mn [7] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN VOCALIC L
+11C38..11C3D ; InCB; Extend # Mn [6] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI SIGN ANUSVARA
+11C3F ; InCB; Extend # Mn BHAIKSUKI SIGN VIRAMA
+11C92..11CA7 ; InCB; Extend # Mn [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA
+11CAA..11CB0 ; InCB; Extend # Mn [7] MARCHEN SUBJOINED LETTER RA..MARCHEN VOWEL SIGN AA
+11CB2..11CB3 ; InCB; Extend # Mn [2] MARCHEN VOWEL SIGN U..MARCHEN VOWEL SIGN E
+11CB5..11CB6 ; InCB; Extend # Mn [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU
+11D31..11D36 ; InCB; Extend # Mn [6] MASARAM GONDI VOWEL SIGN AA..MASARAM GONDI VOWEL SIGN VOCALIC R
+11D3A ; InCB; Extend # Mn MASARAM GONDI VOWEL SIGN E
+11D3C..11D3D ; InCB; Extend # Mn [2] MASARAM GONDI VOWEL SIGN AI..MASARAM GONDI VOWEL SIGN O
+11D3F..11D45 ; InCB; Extend # Mn [7] MASARAM GONDI VOWEL SIGN AU..MASARAM GONDI VIRAMA
+11D47 ; InCB; Extend # Mn MASARAM GONDI RA-KARA
+11D90..11D91 ; InCB; Extend # Mn [2] GUNJALA GONDI VOWEL SIGN EE..GUNJALA GONDI VOWEL SIGN AI
+11D95 ; InCB; Extend # Mn GUNJALA GONDI SIGN ANUSVARA
11D97 ; InCB; Extend # Mn GUNJALA GONDI VIRAMA
+11EF3..11EF4 ; InCB; Extend # Mn [2] MAKASAR VOWEL SIGN I..MAKASAR VOWEL SIGN U
+11F00..11F01 ; InCB; Extend # Mn [2] KAWI SIGN CANDRABINDU..KAWI SIGN ANUSVARA
+11F36..11F3A ; InCB; Extend # Mn [5] KAWI VOWEL SIGN I..KAWI VOWEL SIGN VOCALIC R
+11F40 ; InCB; Extend # Mn KAWI VOWEL SIGN EU
+11F41 ; InCB; Extend # Mc KAWI SIGN KILLER
11F42 ; InCB; Extend # Mn KAWI CONJOINER
+11F5A ; InCB; Extend # Mn KAWI SIGN NUKTA
+13440 ; InCB; Extend # Mn EGYPTIAN HIEROGLYPH MIRROR HORIZONTALLY
+13447..13455 ; InCB; Extend # Mn [15] EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP START..EGYPTIAN HIEROGLYPH MODIFIER DAMAGED
+1611E..16129 ; InCB; Extend # Mn [12] GURUNG KHEMA VOWEL SIGN AA..GURUNG KHEMA VOWEL LENGTH MARK
+1612D..1612F ; InCB; Extend # Mn [3] GURUNG KHEMA SIGN ANUSVARA..GURUNG KHEMA SIGN THOLHOMA
16AF0..16AF4 ; InCB; Extend # Mn [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE
16B30..16B36 ; InCB; Extend # Mn [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM
-1BC9E ; InCB; Extend # Mn DUPLOYAN DOUBLE MARK
-1D165 ; InCB; Extend # Mc MUSICAL SYMBOL COMBINING STEM
+16F4F ; InCB; Extend # Mn MIAO SIGN CONSONANT MODIFIER BAR
+16F8F..16F92 ; InCB; Extend # Mn [4] MIAO TONE RIGHT..MIAO TONE BELOW
+16FE4 ; InCB; Extend # Mn KHITAN SMALL SCRIPT FILLER
+16FF0..16FF1 ; InCB; Extend # Mc [2] VIETNAMESE ALTERNATE READING MARK CA..VIETNAMESE ALTERNATE READING MARK NHAY
+1BC9D..1BC9E ; InCB; Extend # Mn [2] DUPLOYAN THICK LETTER SELECTOR..DUPLOYAN DOUBLE MARK
+1CF00..1CF2D ; InCB; Extend # Mn [46] ZNAMENNY COMBINING MARK GORAZDO NIZKO S KRYZHEM ON LEFT..ZNAMENNY COMBINING MARK KRYZH ON LEFT
+1CF30..1CF46 ; InCB; Extend # Mn [23] ZNAMENNY COMBINING TONAL RANGE MARK MRACHNO..ZNAMENNY PRIZNAK MODIFIER ROG
+1D165..1D166 ; InCB; Extend # Mc [2] MUSICAL SYMBOL COMBINING STEM..MUSICAL SYMBOL COMBINING SPRECHGESANG STEM
1D167..1D169 ; InCB; Extend # Mn [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3
-1D16E..1D172 ; InCB; Extend # Mc [5] MUSICAL SYMBOL COMBINING FLAG-1..MUSICAL SYMBOL COMBINING FLAG-5
+1D16D..1D172 ; InCB; Extend # Mc [6] MUSICAL SYMBOL COMBINING AUGMENTATION DOT..MUSICAL SYMBOL COMBINING FLAG-5
1D17B..1D182 ; InCB; Extend # Mn [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE
1D185..1D18B ; InCB; Extend # Mn [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE
1D1AA..1D1AD ; InCB; Extend # Mn [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO
1D242..1D244 ; InCB; Extend # Mn [3] COMBINING GREEK MUSICAL TRISEME..COMBINING GREEK MUSICAL PENTASEME
+1DA00..1DA36 ; InCB; Extend # Mn [55] SIGNWRITING HEAD RIM..SIGNWRITING AIR SUCKING IN
+1DA3B..1DA6C ; InCB; Extend # Mn [50] SIGNWRITING MOUTH CLOSED NEUTRAL..SIGNWRITING EXCITEMENT
+1DA75 ; InCB; Extend # Mn SIGNWRITING UPPER BODY TILTING FROM HIP JOINTS
+1DA84 ; InCB; Extend # Mn SIGNWRITING LOCATION HEAD NECK
+1DA9B..1DA9F ; InCB; Extend # Mn [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6
+1DAA1..1DAAF ; InCB; Extend # Mn [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16
1E000..1E006 ; InCB; Extend # Mn [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE
1E008..1E018 ; InCB; Extend # Mn [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU
1E01B..1E021 ; InCB; Extend # Mn [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI
@@ -12824,9 +13350,13 @@ FE20..FE2F ; InCB; Extend # Mn [16] COMBINING LIGATURE LEFT HALF..COMBINING
1E2AE ; InCB; Extend # Mn TOTO SIGN RISING TONE
1E2EC..1E2EF ; InCB; Extend # Mn [4] WANCHO TONE TUP..WANCHO TONE KOINI
1E4EC..1E4EF ; InCB; Extend # Mn [4] NAG MUNDARI SIGN MUHOR..NAG MUNDARI SIGN SUTUH
+1E5EE..1E5EF ; InCB; Extend # Mn [2] OL ONAL SIGN MU..OL ONAL SIGN IKIR
1E8D0..1E8D6 ; InCB; Extend # Mn [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS
1E944..1E94A ; InCB; Extend # Mn [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA
+1F3FB..1F3FF ; InCB; Extend # Sk [5] EMOJI MODIFIER FITZPATRICK TYPE-1-2..EMOJI MODIFIER FITZPATRICK TYPE-6
+E0020..E007F ; InCB; Extend # Cf [96] TAG SPACE..CANCEL TAG
+E0100..E01EF ; InCB; Extend # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
-# Total code points: 884
+# Total code points: 2192
# EOF
diff --git a/localedata/unicode-gen/EastAsianWidth.txt b/localedata/unicode-gen/EastAsianWidth.txt
index 02df4df..99f7a31 100644
--- a/localedata/unicode-gen/EastAsianWidth.txt
+++ b/localedata/unicode-gen/EastAsianWidth.txt
@@ -1,8 +1,8 @@
-# EastAsianWidth-15.1.0.txt
-# Date: 2023-07-28, 23:34:08 GMT
-# © 2023 Unicode®, Inc.
+# EastAsianWidth-16.0.0.txt
+# Date: 2024-04-30, 21:48:20 GMT
+# © 2024 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
+# For terms of use and license, see https://www.unicode.org/terms_of_use.html
#
# Unicode Character Database
# For documentation, see https://www.unicode.org/reports/tr44/
@@ -334,7 +334,7 @@
0888 ; N # Sk ARABIC RAISED ROUND DOT
0889..088E ; N # Lo [6] ARABIC LETTER NOON WITH INVERTED SMALL V..ARABIC VERTICAL TAIL
0890..0891 ; N # Cf [2] ARABIC POUND MARK ABOVE..ARABIC PIASTRE MARK ABOVE
-0898..089F ; N # Mn [8] ARABIC SMALL HIGH WORD AL-JUZ..ARABIC HALF MADDA OVER MADDA
+0897..089F ; N # Mn [9] ARABIC PEPET..ARABIC HALF MADDA OVER MADDA
08A0..08C8 ; N # Lo [41] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER GRAF
08C9 ; N # Lm ARABIC SMALL FARSI YEH
08CA..08E1 ; N # Mn [24] ARABIC SMALL HIGH FARSI YEH..ARABIC SMALL HIGH SIGN SAFHA
@@ -819,12 +819,13 @@
1B42 ; N # Mn BALINESE VOWEL SIGN PEPET
1B43..1B44 ; N # Mc [2] BALINESE VOWEL SIGN PEPET TEDUNG..BALINESE ADEG ADEG
1B45..1B4C ; N # Lo [8] BALINESE LETTER KAF SASAK..BALINESE LETTER ARCHAIC JNYA
+1B4E..1B4F ; N # Po [2] BALINESE INVERTED CARIK SIKI..BALINESE INVERTED CARIK PAREREN
1B50..1B59 ; N # Nd [10] BALINESE DIGIT ZERO..BALINESE DIGIT NINE
1B5A..1B60 ; N # Po [7] BALINESE PANTI..BALINESE PAMENENG
1B61..1B6A ; N # So [10] BALINESE MUSICAL SYMBOL DONG..BALINESE MUSICAL SYMBOL DANG GEDE
1B6B..1B73 ; N # Mn [9] BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG
1B74..1B7C ; N # So [9] BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DUG..BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PING
-1B7D..1B7E ; N # Po [2] BALINESE PANTI LANTANG..BALINESE PAMADA LANTANG
+1B7D..1B7F ; N # Po [3] BALINESE PANTI LANTANG..BALINESE PANTI BAWAK
1B80..1B81 ; N # Mn [2] SUNDANESE SIGN PANYECEK..SUNDANESE SIGN PANGLAYAR
1B82 ; N # Mc SUNDANESE SIGN PANGWISAD
1B83..1BA0 ; N # Lo [30] SUNDANESE LETTER A..SUNDANESE LETTER HA
@@ -859,7 +860,7 @@
1C5A..1C77 ; N # Lo [30] OL CHIKI LETTER LA..OL CHIKI LETTER OH
1C78..1C7D ; N # Lm [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD
1C7E..1C7F ; N # Po [2] OL CHIKI PUNCTUATION MUCAAD..OL CHIKI PUNCTUATION DOUBLE MUCAAD
-1C80..1C88 ; N # Ll [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK
+1C80..1C8A ; N # L& [11] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER TJE
1C90..1CBA ; N # Lu [43] GEORGIAN MTAVRULI CAPITAL LETTER AN..GEORGIAN MTAVRULI CAPITAL LETTER AIN
1CBD..1CBF ; N # Lu [3] GEORGIAN MTAVRULI CAPITAL LETTER AEN..GEORGIAN MTAVRULI CAPITAL LETTER LABIAL SIGN
1CC0..1CC7 ; N # Po [8] SUNDANESE PUNCTUATION BINDU SURYA..SUNDANESE PUNCTUATION BINDU BA SATANGA
@@ -1142,7 +1143,7 @@
23F1..23F2 ; N # So [2] STOPWATCH..TIMER CLOCK
23F3 ; W # So HOURGLASS WITH FLOWING SAND
23F4..23FF ; N # So [12] BLACK MEDIUM LEFT-POINTING TRIANGLE..OBSERVER EYE SYMBOL
-2400..2426 ; N # So [39] SYMBOL FOR NULL..SYMBOL FOR SUBSTITUTE FORM TWO
+2400..2429 ; N # So [42] SYMBOL FOR NULL..SYMBOL FOR DELETE MEDIUM SHADE FORM
2440..244A ; N # So [11] OCR HOOK..OCR DOUBLE BACKSLASH
2460..249B ; A # No [60] CIRCLED DIGIT ONE..NUMBER TWENTY FULL STOP
249C..24E9 ; A # So [78] PARENTHESIZED LATIN SMALL LETTER A..CIRCLED LATIN SMALL LETTER Z
@@ -1195,7 +1196,9 @@
261C ; A # So WHITE LEFT POINTING INDEX
261D ; N # So WHITE UP POINTING INDEX
261E ; A # So WHITE RIGHT POINTING INDEX
-261F..263F ; N # So [33] WHITE DOWN POINTING INDEX..MERCURY
+261F..262F ; N # So [17] WHITE DOWN POINTING INDEX..YIN YANG
+2630..2637 ; W # So [8] TRIGRAM FOR HEAVEN..TRIGRAM FOR EARTH
+2638..263F ; N # So [8] WHEEL OF DHARMA..MERCURY
2640 ; A # So FEMALE SIGN
2641 ; N # So EARTH
2642 ; A # So MALE SIGN
@@ -1213,7 +1216,9 @@
266F ; A # Sm MUSIC SHARP SIGN
2670..267E ; N # So [15] WEST SYRIAC CROSS..PERMANENT PAPER SIGN
267F ; W # So WHEELCHAIR SYMBOL
-2680..2692 ; N # So [19] DIE FACE-1..HAMMER AND PICK
+2680..2689 ; N # So [10] DIE FACE-1..BLACK CIRCLE WITH TWO WHITE DOTS
+268A..268F ; W # So [6] MONOGRAM FOR YANG..DIGRAM FOR GREATER YIN
+2690..2692 ; N # So [3] WHITE FLAG..HAMMER AND PICK
2693 ; W # So ANCHOR
2694..269D ; N # So [10] CROSSED SWORDS..OUTLINED WHITE STAR
269E..269F ; A # So [2] THREE LINES CONVERGING RIGHT..THREE LINES CONVERGING LEFT
@@ -1487,7 +1492,7 @@
3192..3195 ; W # No [4] IDEOGRAPHIC ANNOTATION ONE MARK..IDEOGRAPHIC ANNOTATION FOUR MARK
3196..319F ; W # So [10] IDEOGRAPHIC ANNOTATION TOP MARK..IDEOGRAPHIC ANNOTATION MAN MARK
31A0..31BF ; W # Lo [32] BOPOMOFO LETTER BU..BOPOMOFO LETTER AH
-31C0..31E3 ; W # So [36] CJK STROKE T..CJK STROKE Q
+31C0..31E5 ; W # So [38] CJK STROKE T..CJK STROKE SZP
31EF ; W # So IDEOGRAPHIC DESCRIPTION CHARACTER SUBTRACTION
31F0..31FF ; W # Lo [16] KATAKANA LETTER SMALL KU..KATAKANA LETTER SMALL RO
3200..321E ; W # So [31] PARENTHESIZED HANGUL KIYEOK..PARENTHESIZED KOREAN CHARACTER O HU
@@ -1503,7 +1508,7 @@
32C0..32FF ; W # So [64] IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY..SQUARE ERA NAME REIWA
3300..33FF ; W # So [256] SQUARE APAATO..SQUARE GAL
3400..4DBF ; W # Lo [6592] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DBF
-4DC0..4DFF ; N # So [64] HEXAGRAM FOR THE CREATIVE HEAVEN..HEXAGRAM FOR BEFORE COMPLETION
+4DC0..4DFF ; W # So [64] HEXAGRAM FOR THE CREATIVE HEAVEN..HEXAGRAM FOR BEFORE COMPLETION
4E00..9FFF ; W # Lo [20992] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FFF
A000..A014 ; W # Lo [21] YI SYLLABLE IT..YI SYLLABLE E
A015 ; W # Lm YI SYLLABLE WU
@@ -1543,10 +1548,10 @@ A788 ; N # Lm MODIFIER LETTER LOW CIRCUMFLEX ACCENT
A789..A78A ; N # Sk [2] MODIFIER LETTER COLON..MODIFIER LETTER SHORT EQUALS SIGN
A78B..A78E ; N # L& [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT
A78F ; N # Lo LATIN LETTER SINOLOGICAL DOT
-A790..A7CA ; N # L& [59] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY
+A790..A7CD ; N # L& [62] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER S WITH DIAGONAL STROKE
A7D0..A7D1 ; N # L& [2] LATIN CAPITAL LETTER CLOSED INSULAR G..LATIN SMALL LETTER CLOSED INSULAR G
A7D3 ; N # Ll LATIN SMALL LETTER DOUBLE THORN
-A7D5..A7D9 ; N # L& [5] LATIN SMALL LETTER DOUBLE WYNN..LATIN SMALL LETTER SIGMOID S
+A7D5..A7DC ; N # L& [8] LATIN SMALL LETTER DOUBLE WYNN..LATIN CAPITAL LETTER LAMBDA WITH STROKE
A7F2..A7F4 ; N # Lm [3] MODIFIER LETTER CAPITAL C..MODIFIER LETTER CAPITAL Q
A7F5..A7F6 ; N # L& [2] LATIN CAPITAL LETTER REVERSED HALF H..LATIN SMALL LETTER REVERSED HALF H
A7F7 ; N # Lo LATIN EPIGRAPHIC LETTER SIDEWAYS I
@@ -1870,6 +1875,7 @@ FFFD ; A # So REPLACEMENT CHARACTER
105A3..105B1 ; N # Ll [15] VITHKUQI SMALL LETTER HA..VITHKUQI SMALL LETTER RE
105B3..105B9 ; N # Ll [7] VITHKUQI SMALL LETTER SE..VITHKUQI SMALL LETTER XE
105BB..105BC ; N # Ll [2] VITHKUQI SMALL LETTER Y..VITHKUQI SMALL LETTER ZE
+105C0..105F3 ; N # Lo [52] TODHRI LETTER A..TODHRI LETTER OO
10600..10736 ; N # Lo [311] LINEAR A SIGN AB001..LINEAR A SIGN A664
10740..10755 ; N # Lo [22] LINEAR A SIGN A701 A..LINEAR A SIGN A732 JE
10760..10767 ; N # Lo [8] LINEAR A SIGN A800..LINEAR A SIGN A807
@@ -1942,12 +1948,23 @@ FFFD ; A # So REPLACEMENT CHARACTER
10D00..10D23 ; N # Lo [36] HANIFI ROHINGYA LETTER A..HANIFI ROHINGYA MARK NA KHONNA
10D24..10D27 ; N # Mn [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI
10D30..10D39 ; N # Nd [10] HANIFI ROHINGYA DIGIT ZERO..HANIFI ROHINGYA DIGIT NINE
+10D40..10D49 ; N # Nd [10] GARAY DIGIT ZERO..GARAY DIGIT NINE
+10D4A..10D4D ; N # Lo [4] GARAY VOWEL SIGN A..GARAY VOWEL SIGN EE
+10D4E ; N # Lm GARAY VOWEL LENGTH MARK
+10D4F ; N # Lo GARAY SUKUN
+10D50..10D65 ; N # Lu [22] GARAY CAPITAL LETTER A..GARAY CAPITAL LETTER OLD NA
+10D69..10D6D ; N # Mn [5] GARAY VOWEL SIGN E..GARAY CONSONANT NASALIZATION MARK
+10D6E ; N # Pd GARAY HYPHEN
+10D6F ; N # Lm GARAY REDUPLICATION MARK
+10D70..10D85 ; N # Ll [22] GARAY SMALL LETTER A..GARAY SMALL LETTER OLD NA
+10D8E..10D8F ; N # Sm [2] GARAY PLUS SIGN..GARAY MINUS SIGN
10E60..10E7E ; N # No [31] RUMI DIGIT ONE..RUMI FRACTION TWO THIRDS
10E80..10EA9 ; N # Lo [42] YEZIDI LETTER ELIF..YEZIDI LETTER ET
10EAB..10EAC ; N # Mn [2] YEZIDI COMBINING HAMZA MARK..YEZIDI COMBINING MADDA MARK
10EAD ; N # Pd YEZIDI HYPHENATION MARK
10EB0..10EB1 ; N # Lo [2] YEZIDI LETTER LAM WITH DOT ABOVE..YEZIDI LETTER YOT WITH CIRCUMFLEX ABOVE
-10EFD..10EFF ; N # Mn [3] ARABIC SMALL LOW WORD SAKTA..ARABIC SMALL LOW WORD MADDA
+10EC2..10EC4 ; N # Lo [3] ARABIC LETTER DAL WITH TWO DOTS VERTICALLY BELOW..ARABIC LETTER KAF WITH TWO DOTS VERTICALLY BELOW
+10EFC..10EFF ; N # Mn [4] ARABIC COMBINING ALEF OVERLAY..ARABIC SMALL LOW WORD MADDA
10F00..10F1C ; N # Lo [29] OLD SOGDIAN LETTER ALEPH..OLD SOGDIAN LETTER FINAL TAW WITH VERTICAL TAIL
10F1D..10F26 ; N # No [10] OLD SOGDIAN NUMBER ONE..OLD SOGDIAN FRACTION ONE HALF
10F27 ; N # Lo OLD SOGDIAN LIGATURE AYIN-DALETH
@@ -2064,6 +2081,26 @@ FFFD ; A # So REPLACEMENT CHARACTER
11362..11363 ; N # Mc [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL
11366..1136C ; N # Mn [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX
11370..11374 ; N # Mn [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA
+11380..11389 ; N # Lo [10] TULU-TIGALARI LETTER A..TULU-TIGALARI LETTER VOCALIC LL
+1138B ; N # Lo TULU-TIGALARI LETTER EE
+1138E ; N # Lo TULU-TIGALARI LETTER AI
+11390..113B5 ; N # Lo [38] TULU-TIGALARI LETTER OO..TULU-TIGALARI LETTER LLLA
+113B7 ; N # Lo TULU-TIGALARI SIGN AVAGRAHA
+113B8..113BA ; N # Mc [3] TULU-TIGALARI VOWEL SIGN AA..TULU-TIGALARI VOWEL SIGN II
+113BB..113C0 ; N # Mn [6] TULU-TIGALARI VOWEL SIGN U..TULU-TIGALARI VOWEL SIGN VOCALIC LL
+113C2 ; N # Mc TULU-TIGALARI VOWEL SIGN EE
+113C5 ; N # Mc TULU-TIGALARI VOWEL SIGN AI
+113C7..113CA ; N # Mc [4] TULU-TIGALARI VOWEL SIGN OO..TULU-TIGALARI SIGN CANDRA ANUNASIKA
+113CC..113CD ; N # Mc [2] TULU-TIGALARI SIGN ANUSVARA..TULU-TIGALARI SIGN VISARGA
+113CE ; N # Mn TULU-TIGALARI SIGN VIRAMA
+113CF ; N # Mc TULU-TIGALARI SIGN LOOPED VIRAMA
+113D0 ; N # Mn TULU-TIGALARI CONJOINER
+113D1 ; N # Lo TULU-TIGALARI REPHA
+113D2 ; N # Mn TULU-TIGALARI GEMINATION MARK
+113D3 ; N # Lo TULU-TIGALARI SIGN PLUTA
+113D4..113D5 ; N # Po [2] TULU-TIGALARI DANDA..TULU-TIGALARI DOUBLE DANDA
+113D7..113D8 ; N # Po [2] TULU-TIGALARI SIGN OM PUSHPIKA..TULU-TIGALARI SIGN SHRII PUSHPIKA
+113E1..113E2 ; N # Mn [2] TULU-TIGALARI VEDIC TONE SVARITA..TULU-TIGALARI VEDIC TONE ANUDATTA
11400..11434 ; N # Lo [53] NEWA LETTER A..NEWA LETTER HA
11435..11437 ; N # Mc [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II
11438..1143F ; N # Mn [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI
@@ -2123,8 +2160,11 @@ FFFD ; A # So REPLACEMENT CHARACTER
116B8 ; N # Lo TAKRI LETTER ARCHAIC KHA
116B9 ; N # Po TAKRI ABBREVIATION SIGN
116C0..116C9 ; N # Nd [10] TAKRI DIGIT ZERO..TAKRI DIGIT NINE
+116D0..116E3 ; N # Nd [20] MYANMAR PAO DIGIT ZERO..MYANMAR EASTERN PWO KAREN DIGIT NINE
11700..1171A ; N # Lo [27] AHOM LETTER KA..AHOM LETTER ALTERNATE BA
-1171D..1171F ; N # Mn [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA
+1171D ; N # Mn AHOM CONSONANT SIGN MEDIAL LA
+1171E ; N # Mc AHOM CONSONANT SIGN MEDIAL RA
+1171F ; N # Mn AHOM CONSONANT SIGN MEDIAL LIGATING RA
11720..11721 ; N # Mc [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA
11722..11725 ; N # Mn [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU
11726 ; N # Mc AHOM VOWEL SIGN E
@@ -2195,6 +2235,9 @@ FFFD ; A # So REPLACEMENT CHARACTER
11AB0..11ABF ; N # Lo [16] CANADIAN SYLLABICS NATTILIK HI..CANADIAN SYLLABICS SPA
11AC0..11AF8 ; N # Lo [57] PAU CIN HAU LETTER PA..PAU CIN HAU GLOTTAL STOP FINAL
11B00..11B09 ; N # Po [10] DEVANAGARI HEAD MARK..DEVANAGARI SIGN MINDU
+11BC0..11BE0 ; N # Lo [33] SUNUWAR LETTER DEVI..SUNUWAR LETTER KLOKO
+11BE1 ; N # Po SUNUWAR SIGN PVO
+11BF0..11BF9 ; N # Nd [10] SUNUWAR DIGIT ZERO..SUNUWAR DIGIT NINE
11C00..11C08 ; N # Lo [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L
11C0A..11C2E ; N # Lo [37] BHAIKSUKI LETTER E..BHAIKSUKI LETTER HA
11C2F ; N # Mc BHAIKSUKI VOWEL SIGN AA
@@ -2253,6 +2296,7 @@ FFFD ; A # So REPLACEMENT CHARACTER
11F42 ; N # Mn KAWI CONJOINER
11F43..11F4F ; N # Po [13] KAWI DANDA..KAWI PUNCTUATION CLOSING SPIRAL
11F50..11F59 ; N # Nd [10] KAWI DIGIT ZERO..KAWI DIGIT NINE
+11F5A ; N # Mn KAWI SIGN NUKTA
11FB0 ; N # Lo LISU LETTER YHA
11FC0..11FD4 ; N # No [21] TAMIL FRACTION ONE THREE-HUNDRED-AND-TWENTIETH..TAMIL FRACTION DOWNSCALING FACTOR KIIZH
11FD5..11FDC ; N # So [8] TAMIL SIGN NEL..TAMIL SIGN MUKKURUNI
@@ -2270,7 +2314,13 @@ FFFD ; A # So REPLACEMENT CHARACTER
13440 ; N # Mn EGYPTIAN HIEROGLYPH MIRROR HORIZONTALLY
13441..13446 ; N # Lo [6] EGYPTIAN HIEROGLYPH FULL BLANK..EGYPTIAN HIEROGLYPH WIDE LOST SIGN
13447..13455 ; N # Mn [15] EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP START..EGYPTIAN HIEROGLYPH MODIFIER DAMAGED
+13460..143FA ; N # Lo [3995] EGYPTIAN HIEROGLYPH-13460..EGYPTIAN HIEROGLYPH-143FA
14400..14646 ; N # Lo [583] ANATOLIAN HIEROGLYPH A001..ANATOLIAN HIEROGLYPH A530
+16100..1611D ; N # Lo [30] GURUNG KHEMA LETTER A..GURUNG KHEMA LETTER SA
+1611E..16129 ; N # Mn [12] GURUNG KHEMA VOWEL SIGN AA..GURUNG KHEMA VOWEL LENGTH MARK
+1612A..1612C ; N # Mc [3] GURUNG KHEMA CONSONANT SIGN MEDIAL YA..GURUNG KHEMA CONSONANT SIGN MEDIAL HA
+1612D..1612F ; N # Mn [3] GURUNG KHEMA SIGN ANUSVARA..GURUNG KHEMA SIGN THOLHOMA
+16130..16139 ; N # Nd [10] GURUNG KHEMA DIGIT ZERO..GURUNG KHEMA DIGIT NINE
16800..16A38 ; N # Lo [569] BAMUM LETTER PHASE-A NGKUE MFON..BAMUM LETTER PHASE-F VUEQ
16A40..16A5E ; N # Lo [31] MRO LETTER TA..MRO LETTER TEK
16A60..16A69 ; N # Nd [10] MRO DIGIT ZERO..MRO DIGIT NINE
@@ -2291,6 +2341,11 @@ FFFD ; A # So REPLACEMENT CHARACTER
16B5B..16B61 ; N # No [7] PAHAWH HMONG NUMBER TENS..PAHAWH HMONG NUMBER TRILLIONS
16B63..16B77 ; N # Lo [21] PAHAWH HMONG SIGN VOS LUB..PAHAWH HMONG SIGN CIM NRES TOS
16B7D..16B8F ; N # Lo [19] PAHAWH HMONG CLAN SIGN TSHEEJ..PAHAWH HMONG CLAN SIGN VWJ
+16D40..16D42 ; N # Lm [3] KIRAT RAI SIGN ANUSVARA..KIRAT RAI SIGN VISARGA
+16D43..16D6A ; N # Lo [40] KIRAT RAI LETTER A..KIRAT RAI VOWEL SIGN AU
+16D6B..16D6C ; N # Lm [2] KIRAT RAI SIGN VIRAMA..KIRAT RAI SIGN SAAT
+16D6D..16D6F ; N # Po [3] KIRAT RAI SIGN YUPI..KIRAT RAI DOUBLE DANDA
+16D70..16D79 ; N # Nd [10] KIRAT RAI DIGIT ZERO..KIRAT RAI DIGIT NINE
16E40..16E7F ; N # L& [64] MEDEFAIDRIN CAPITAL LETTER M..MEDEFAIDRIN SMALL LETTER Y
16E80..16E96 ; N # No [23] MEDEFAIDRIN DIGIT ZERO..MEDEFAIDRIN DIGIT THREE ALTERNATE FORM
16E97..16E9A ; N # Po [4] MEDEFAIDRIN COMMA..MEDEFAIDRIN EXCLAMATION OH
@@ -2308,6 +2363,7 @@ FFFD ; A # So REPLACEMENT CHARACTER
17000..187F7 ; W # Lo [6136] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187F7
18800..18AFF ; W # Lo [768] TANGUT COMPONENT-001..TANGUT COMPONENT-768
18B00..18CD5 ; W # Lo [470] KHITAN SMALL SCRIPT CHARACTER-18B00..KHITAN SMALL SCRIPT CHARACTER-18CD5
+18CFF ; W # Lo KHITAN SMALL SCRIPT CHARACTER-18CFF
18D00..18D08 ; W # Lo [9] TANGUT IDEOGRAPH-18D00..TANGUT IDEOGRAPH-18D08
1AFF0..1AFF3 ; W # Lm [4] KATAKANA LETTER MINNAN TONE-2..KATAKANA LETTER MINNAN TONE-5
1AFF5..1AFFB ; W # Lm [7] KATAKANA LETTER MINNAN TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-5
@@ -2327,6 +2383,9 @@ FFFD ; A # So REPLACEMENT CHARACTER
1BC9D..1BC9E ; N # Mn [2] DUPLOYAN THICK LETTER SELECTOR..DUPLOYAN DOUBLE MARK
1BC9F ; N # Po DUPLOYAN PUNCTUATION CHINOOK FULL STOP
1BCA0..1BCA3 ; N # Cf [4] SHORTHAND FORMAT LETTER OVERLAP..SHORTHAND FORMAT UP STEP
+1CC00..1CCEF ; N # So [240] UP-POINTING GO-KART..OUTLINED LATIN CAPITAL LETTER Z
+1CCF0..1CCF9 ; N # Nd [10] OUTLINED DIGIT ZERO..OUTLINED DIGIT NINE
+1CD00..1CEB3 ; N # So [436] BLOCK OCTANT-3..BLACK RIGHT TRIANGLE CARET
1CF00..1CF2D ; N # Mn [46] ZNAMENNY COMBINING MARK GORAZDO NIZKO S KRYZHEM ON LEFT..ZNAMENNY COMBINING MARK KRYZH ON LEFT
1CF30..1CF46 ; N # Mn [23] ZNAMENNY COMBINING TONAL RANGE MARK MRACHNO..ZNAMENNY PRIZNAK MODIFIER ROG
1CF50..1CFC3 ; N # So [116] ZNAMENNY NEUME KRYUK..ZNAMENNY NEUME PAUK
@@ -2349,8 +2408,9 @@ FFFD ; A # So REPLACEMENT CHARACTER
1D245 ; N # So GREEK MUSICAL LEIMMA
1D2C0..1D2D3 ; N # No [20] KAKTOVIK NUMERAL ZERO..KAKTOVIK NUMERAL NINETEEN
1D2E0..1D2F3 ; N # No [20] MAYAN NUMERAL ZERO..MAYAN NUMERAL NINETEEN
-1D300..1D356 ; N # So [87] MONOGRAM FOR EARTH..TETRAGRAM FOR FOSTERING
-1D360..1D378 ; N # No [25] COUNTING ROD UNIT DIGIT ONE..TALLY MARK FIVE
+1D300..1D356 ; W # So [87] MONOGRAM FOR EARTH..TETRAGRAM FOR FOSTERING
+1D360..1D376 ; W # No [23] COUNTING ROD UNIT DIGIT ONE..IDEOGRAPHIC TALLY MARK FIVE
+1D377..1D378 ; N # No [2] TALLY MARK ONE..TALLY MARK FIVE
1D400..1D454 ; N # L& [85] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL ITALIC SMALL G
1D456..1D49C ; N # L& [71] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL SCRIPT CAPITAL A
1D49E..1D49F ; N # Lu [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D
@@ -2431,6 +2491,11 @@ FFFD ; A # So REPLACEMENT CHARACTER
1E4EB ; N # Lm NAG MUNDARI SIGN OJOD
1E4EC..1E4EF ; N # Mn [4] NAG MUNDARI SIGN MUHOR..NAG MUNDARI SIGN SUTUH
1E4F0..1E4F9 ; N # Nd [10] NAG MUNDARI DIGIT ZERO..NAG MUNDARI DIGIT NINE
+1E5D0..1E5ED ; N # Lo [30] OL ONAL LETTER O..OL ONAL LETTER EG
+1E5EE..1E5EF ; N # Mn [2] OL ONAL SIGN MU..OL ONAL SIGN IKIR
+1E5F0 ; N # Lo OL ONAL SIGN HODDOND
+1E5F1..1E5FA ; N # Nd [10] OL ONAL DIGIT ZERO..OL ONAL DIGIT NINE
+1E5FF ; N # Po OL ONAL ABBREVIATION SIGN
1E7E0..1E7E6 ; N # Lo [7] ETHIOPIC SYLLABLE HHYA..ETHIOPIC SYLLABLE HHYO
1E7E8..1E7EB ; N # Lo [4] ETHIOPIC SYLLABLE GURAGE HHWA..ETHIOPIC SYLLABLE HHWE
1E7ED..1E7EE ; N # Lo [2] ETHIOPIC SYLLABLE GURAGE MWI..ETHIOPIC SYLLABLE GURAGE MWEE
@@ -2574,7 +2639,8 @@ FFFD ; A # So REPLACEMENT CHARACTER
1F850..1F859 ; N # So [10] LEFTWARDS SANS-SERIF ARROW..UP DOWN SANS-SERIF ARROW
1F860..1F887 ; N # So [40] WIDE-HEADED LEFTWARDS LIGHT BARB ARROW..WIDE-HEADED SOUTH WEST VERY HEAVY BARB ARROW
1F890..1F8AD ; N # So [30] LEFTWARDS TRIANGLE ARROWHEAD..WHITE ARROW SHAFT WIDTH TWO THIRDS
-1F8B0..1F8B1 ; N # So [2] ARROW POINTING UPWARDS THEN NORTH WEST..ARROW POINTING RIGHTWARDS THEN CURVING SOUTH WEST
+1F8B0..1F8BB ; N # So [12] ARROW POINTING UPWARDS THEN NORTH WEST..SOUTH WEST ARROW FROM BAR
+1F8C0..1F8C1 ; N # So [2] LEFTWARDS ARROW FROM DOWNWARDS ARROW..RIGHTWARDS ARROW FROM DOWNWARDS ARROW
1F900..1F90B ; N # So [12] CIRCLED CROSS FORMEE WITH FOUR DOTS..DOWNWARD FACING NOTCHED HOOK WITH DOT
1F90C..1F93A ; W # So [47] PINCHED FINGERS..FENCER
1F93B ; N # So MODERN PENTATHLON
@@ -2584,14 +2650,13 @@ FFFD ; A # So REPLACEMENT CHARACTER
1FA00..1FA53 ; N # So [84] NEUTRAL CHESS KING..BLACK CHESS KNIGHT-BISHOP
1FA60..1FA6D ; N # So [14] XIANGQI RED GENERAL..XIANGQI BLACK SOLDIER
1FA70..1FA7C ; W # So [13] BALLET SHOES..CRUTCH
-1FA80..1FA88 ; W # So [9] YO-YO..FLUTE
-1FA90..1FABD ; W # So [46] RINGED PLANET..WING
-1FABF..1FAC5 ; W # So [7] GOOSE..PERSON WITH CROWN
-1FACE..1FADB ; W # So [14] MOOSE..PEA POD
-1FAE0..1FAE8 ; W # So [9] MELTING FACE..SHAKING FACE
+1FA80..1FA89 ; W # So [10] YO-YO..HARP
+1FA8F..1FAC6 ; W # So [56] SHOVEL..FINGERPRINT
+1FACE..1FADC ; W # So [15] MOOSE..ROOT VEGETABLE
+1FADF..1FAE9 ; W # So [11] SPLATTER..FACE WITH BAGS UNDER EYES
1FAF0..1FAF8 ; W # So [9] HAND WITH INDEX FINGER AND THUMB CROSSED..RIGHTWARDS PUSHING HAND
1FB00..1FB92 ; N # So [147] BLOCK SEXTANT-1..UPPER HALF INVERSE MEDIUM SHADE AND LOWER HALF BLOCK
-1FB94..1FBCA ; N # So [55] LEFT HALF INVERSE MEDIUM SHADE AND RIGHT HALF BLOCK..WHITE UP-POINTING CHEVRON
+1FB94..1FBEF ; N # So [92] LEFT HALF INVERSE MEDIUM SHADE AND RIGHT HALF BLOCK..TOP LEFT JUSTIFIED LOWER RIGHT QUARTER BLACK CIRCLE
1FBF0..1FBF9 ; N # Nd [10] SEGMENTED DIGIT ZERO..SEGMENTED DIGIT NINE
20000..2A6DF ; W # Lo [42720] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6DF
2A6E0..2A6FF ; W # Cn [32] <reserved-2A6E0>..<reserved-2A6FF>
diff --git a/localedata/unicode-gen/HangulSyllableType.txt b/localedata/unicode-gen/HangulSyllableType.txt
index 98dafb1..56b5eea 100644
--- a/localedata/unicode-gen/HangulSyllableType.txt
+++ b/localedata/unicode-gen/HangulSyllableType.txt
@@ -1,8 +1,8 @@
-# HangulSyllableType-15.1.0.txt
-# Date: 2023-01-05, 20:34:42 GMT
-# © 2023 Unicode®, Inc.
+# HangulSyllableType-16.0.0.txt
+# Date: 2024-04-30, 21:48:21 GMT
+# © 2024 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
+# For terms of use and license, see https://www.unicode.org/terms_of_use.html
#
# Unicode Character Database
# For documentation, see https://www.unicode.org/reports/tr44/
diff --git a/localedata/unicode-gen/Makefile b/localedata/unicode-gen/Makefile
index 48cefc2..c061311 100644
--- a/localedata/unicode-gen/Makefile
+++ b/localedata/unicode-gen/Makefile
@@ -36,7 +36,7 @@
# files for making modifications.
-UNICODE_VERSION = 15.1.0
+UNICODE_VERSION = 16.0.0
PYTHON3 = python3
WGET = wget
diff --git a/localedata/unicode-gen/UnicodeData.txt b/localedata/unicode-gen/UnicodeData.txt
index bdcc418..64258a3 100644
--- a/localedata/unicode-gen/UnicodeData.txt
+++ b/localedata/unicode-gen/UnicodeData.txt
@@ -409,7 +409,7 @@
0198;LATIN CAPITAL LETTER K WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER K HOOK;;;0199;
0199;LATIN SMALL LETTER K WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER K HOOK;;0198;;0198
019A;LATIN SMALL LETTER L WITH BAR;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED L;;023D;;023D
-019B;LATIN SMALL LETTER LAMBDA WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED LAMBDA;;;;
+019B;LATIN SMALL LETTER LAMBDA WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED LAMBDA;;A7DC;;A7DC
019C;LATIN CAPITAL LETTER TURNED M;Lu;0;L;;;;;N;;;;026F;
019D;LATIN CAPITAL LETTER N WITH LEFT HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER N HOOK;;;0272;
019E;LATIN SMALL LETTER N WITH LONG RIGHT LEG;Ll;0;L;;;;;N;;;0220;;0220
@@ -610,7 +610,7 @@
0261;LATIN SMALL LETTER SCRIPT G;Ll;0;L;;;;;N;;;A7AC;;A7AC
0262;LATIN LETTER SMALL CAPITAL G;Ll;0;L;;;;;N;;;;;
0263;LATIN SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;0194;;0194
-0264;LATIN SMALL LETTER RAMS HORN;Ll;0;L;;;;;N;LATIN SMALL LETTER BABY GAMMA;;;;
+0264;LATIN SMALL LETTER RAMS HORN;Ll;0;L;;;;;N;LATIN SMALL LETTER BABY GAMMA;;A7CB;;A7CB
0265;LATIN SMALL LETTER TURNED H;Ll;0;L;;;;;N;;;A78D;;A78D
0266;LATIN SMALL LETTER H WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER H HOOK;;A7AA;;A7AA
0267;LATIN SMALL LETTER HENG WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER HENG HOOK;;;;
@@ -2123,6 +2123,7 @@
088E;ARABIC VERTICAL TAIL;Lo;0;AL;;;;;N;;;;;
0890;ARABIC POUND MARK ABOVE;Cf;0;AN;;;;;N;;;;;
0891;ARABIC PIASTRE MARK ABOVE;Cf;0;AN;;;;;N;;;;;
+0897;ARABIC PEPET;Mn;230;NSM;;;;;N;;;;;
0898;ARABIC SMALL HIGH WORD AL-JUZ;Mn;230;NSM;;;;;N;;;;;
0899;ARABIC SMALL LOW WORD ISHMAAM;Mn;220;NSM;;;;;N;;;;;
089A;ARABIC SMALL LOW WORD IMAALA;Mn;220;NSM;;;;;N;;;;;
@@ -6213,6 +6214,8 @@
1B4A;BALINESE LETTER ZAL SASAK;Lo;0;L;;;;;N;;;;;
1B4B;BALINESE LETTER ASYURA SASAK;Lo;0;L;;;;;N;;;;;
1B4C;BALINESE LETTER ARCHAIC JNYA;Lo;0;L;;;;;N;;;;;
+1B4E;BALINESE INVERTED CARIK SIKI;Po;0;L;;;;;N;;;;;
+1B4F;BALINESE INVERTED CARIK PAREREN;Po;0;L;;;;;N;;;;;
1B50;BALINESE DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
1B51;BALINESE DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
1B52;BALINESE DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
@@ -6260,6 +6263,7 @@
1B7C;BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PING;So;0;L;;;;;N;;;;;
1B7D;BALINESE PANTI LANTANG;Po;0;L;;;;;N;;;;;
1B7E;BALINESE PAMADA LANTANG;Po;0;L;;;;;N;;;;;
+1B7F;BALINESE PANTI BAWAK;Po;0;L;;;;;N;;;;;
1B80;SUNDANESE SIGN PANYECEK;Mn;0;NSM;;;;;N;;;;;
1B81;SUNDANESE SIGN PANGLAYAR;Mn;0;NSM;;;;;N;;;;;
1B82;SUNDANESE SIGN PANGWISAD;Mc;0;L;;;;;N;;;;;
@@ -6511,6 +6515,8 @@
1C86;CYRILLIC SMALL LETTER TALL HARD SIGN;Ll;0;L;;;;;N;;;042A;;042A
1C87;CYRILLIC SMALL LETTER TALL YAT;Ll;0;L;;;;;N;;;0462;;0462
1C88;CYRILLIC SMALL LETTER UNBLENDED UK;Ll;0;L;;;;;N;;;A64A;;A64A
+1C89;CYRILLIC CAPITAL LETTER TJE;Lu;0;L;;;;;N;;;;1C8A;
+1C8A;CYRILLIC SMALL LETTER TJE;Ll;0;L;;;;;N;;;1C89;;1C89
1C90;GEORGIAN MTAVRULI CAPITAL LETTER AN;Lu;0;L;;;;;N;;;;10D0;
1C91;GEORGIAN MTAVRULI CAPITAL LETTER BAN;Lu;0;L;;;;;N;;;;10D1;
1C92;GEORGIAN MTAVRULI CAPITAL LETTER GAN;Lu;0;L;;;;;N;;;;10D2;
@@ -7933,7 +7939,7 @@
226A;MUCH LESS-THAN;Sm;0;ON;;;;;Y;MUCH LESS THAN;;;;
226B;MUCH GREATER-THAN;Sm;0;ON;;;;;Y;MUCH GREATER THAN;;;;
226C;BETWEEN;Sm;0;ON;;;;;N;;;;;
-226D;NOT EQUIVALENT TO;Sm;0;ON;224D 0338;;;;N;;;;;
+226D;NOT EQUIVALENT TO;Sm;0;ON;224D 0338;;;;Y;;;;;
226E;NOT LESS-THAN;Sm;0;ON;003C 0338;;;;Y;NOT LESS THAN;;;;
226F;NOT GREATER-THAN;Sm;0;ON;003E 0338;;;;Y;NOT GREATER THAN;;;;
2270;NEITHER LESS-THAN NOR EQUAL TO;Sm;0;ON;2264 0338;;;;Y;NEITHER LESS THAN NOR EQUAL TO;;;;
@@ -8375,6 +8381,9 @@
2424;SYMBOL FOR NEWLINE;So;0;ON;;;;;N;GRAPHIC FOR NEWLINE;;;;
2425;SYMBOL FOR DELETE FORM TWO;So;0;ON;;;;;N;;;;;
2426;SYMBOL FOR SUBSTITUTE FORM TWO;So;0;ON;;;;;N;;;;;
+2427;SYMBOL FOR DELETE SQUARE CHECKER BOARD FORM;So;0;ON;;;;;N;;;;;
+2428;SYMBOL FOR DELETE RECTANGULAR CHECKER BOARD FORM;So;0;ON;;;;;N;;;;;
+2429;SYMBOL FOR DELETE MEDIUM SHADE FORM;So;0;ON;;;;;N;;;;;
2440;OCR HOOK;So;0;ON;;;;;N;;;;;
2441;OCR CHAIR;So;0;ON;;;;;N;;;;;
2442;OCR FORK;So;0;ON;;;;;N;;;;;
@@ -11709,6 +11718,8 @@
31E1;CJK STROKE HZZZG;So;0;ON;;;;;N;;;;;
31E2;CJK STROKE PG;So;0;ON;;;;;N;;;;;
31E3;CJK STROKE Q;So;0;ON;;;;;N;;;;;
+31E4;CJK STROKE HXG;So;0;ON;;;;;N;;;;;
+31E5;CJK STROKE SZP;So;0;ON;;;;;N;;;;;
31EF;IDEOGRAPHIC DESCRIPTION CHARACTER SUBTRACTION;So;0;ON;;;;;N;;;;;
31F0;KATAKANA LETTER SMALL KU;Lo;0;L;;;;;N;;;;;
31F1;KATAKANA LETTER SMALL SI;Lo;0;L;;;;;N;;;;;
@@ -14260,6 +14271,9 @@ A7C7;LATIN CAPITAL LETTER D WITH SHORT STROKE OVERLAY;Lu;0;L;;;;;N;;;;A7C8;
A7C8;LATIN SMALL LETTER D WITH SHORT STROKE OVERLAY;Ll;0;L;;;;;N;;;A7C7;;A7C7
A7C9;LATIN CAPITAL LETTER S WITH SHORT STROKE OVERLAY;Lu;0;L;;;;;N;;;;A7CA;
A7CA;LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY;Ll;0;L;;;;;N;;;A7C9;;A7C9
+A7CB;LATIN CAPITAL LETTER RAMS HORN;Lu;0;L;;;;;N;;;;0264;
+A7CC;LATIN CAPITAL LETTER S WITH DIAGONAL STROKE;Lu;0;L;;;;;N;;;;A7CD;
+A7CD;LATIN SMALL LETTER S WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;A7CC;;A7CC
A7D0;LATIN CAPITAL LETTER CLOSED INSULAR G;Lu;0;L;;;;;N;;;;A7D1;
A7D1;LATIN SMALL LETTER CLOSED INSULAR G;Ll;0;L;;;;;N;;;A7D0;;A7D0
A7D3;LATIN SMALL LETTER DOUBLE THORN;Ll;0;L;;;;;N;;;;;
@@ -14268,6 +14282,9 @@ A7D6;LATIN CAPITAL LETTER MIDDLE SCOTS S;Lu;0;L;;;;;N;;;;A7D7;
A7D7;LATIN SMALL LETTER MIDDLE SCOTS S;Ll;0;L;;;;;N;;;A7D6;;A7D6
A7D8;LATIN CAPITAL LETTER SIGMOID S;Lu;0;L;;;;;N;;;;A7D9;
A7D9;LATIN SMALL LETTER SIGMOID S;Ll;0;L;;;;;N;;;A7D8;;A7D8
+A7DA;LATIN CAPITAL LETTER LAMBDA;Lu;0;L;;;;;N;;;;A7DB;
+A7DB;LATIN SMALL LETTER LAMBDA;Ll;0;L;;;;;N;;;A7DA;;A7DA
+A7DC;LATIN CAPITAL LETTER LAMBDA WITH STROKE;Lu;0;L;;;;;N;;;;019B;
A7F2;MODIFIER LETTER CAPITAL C;Lm;0;L;<super> 0043;;;;N;;;;;
A7F3;MODIFIER LETTER CAPITAL F;Lm;0;L;<super> 0046;;;;N;;;;;
A7F4;MODIFIER LETTER CAPITAL Q;Lm;0;L;<super> 0051;;;;N;;;;;
@@ -18001,6 +18018,58 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
105B9;VITHKUQI SMALL LETTER XE;Ll;0;L;;;;;N;;;10592;;10592
105BB;VITHKUQI SMALL LETTER Y;Ll;0;L;;;;;N;;;10594;;10594
105BC;VITHKUQI SMALL LETTER ZE;Ll;0;L;;;;;N;;;10595;;10595
+105C0;TODHRI LETTER A;Lo;0;L;;;;;N;;;;;
+105C1;TODHRI LETTER AS;Lo;0;L;;;;;N;;;;;
+105C2;TODHRI LETTER BA;Lo;0;L;;;;;N;;;;;
+105C3;TODHRI LETTER MBA;Lo;0;L;;;;;N;;;;;
+105C4;TODHRI LETTER CA;Lo;0;L;;;;;N;;;;;
+105C5;TODHRI LETTER CHA;Lo;0;L;;;;;N;;;;;
+105C6;TODHRI LETTER DA;Lo;0;L;;;;;N;;;;;
+105C7;TODHRI LETTER NDA;Lo;0;L;;;;;N;;;;;
+105C8;TODHRI LETTER DHA;Lo;0;L;;;;;N;;;;;
+105C9;TODHRI LETTER EI;Lo;0;L;105D2 0307;;;;N;;;;;
+105CA;TODHRI LETTER E;Lo;0;L;;;;;N;;;;;
+105CB;TODHRI LETTER FA;Lo;0;L;;;;;N;;;;;
+105CC;TODHRI LETTER GA;Lo;0;L;;;;;N;;;;;
+105CD;TODHRI LETTER NGA;Lo;0;L;;;;;N;;;;;
+105CE;TODHRI LETTER GJA;Lo;0;L;;;;;N;;;;;
+105CF;TODHRI LETTER NGJA;Lo;0;L;;;;;N;;;;;
+105D0;TODHRI LETTER HA;Lo;0;L;;;;;N;;;;;
+105D1;TODHRI LETTER HJA;Lo;0;L;;;;;N;;;;;
+105D2;TODHRI LETTER I;Lo;0;L;;;;;N;;;;;
+105D3;TODHRI LETTER JA;Lo;0;L;;;;;N;;;;;
+105D4;TODHRI LETTER KA;Lo;0;L;;;;;N;;;;;
+105D5;TODHRI LETTER LA;Lo;0;L;;;;;N;;;;;
+105D6;TODHRI LETTER LLA;Lo;0;L;;;;;N;;;;;
+105D7;TODHRI LETTER MA;Lo;0;L;;;;;N;;;;;
+105D8;TODHRI LETTER NA;Lo;0;L;;;;;N;;;;;
+105D9;TODHRI LETTER NJAN;Lo;0;L;;;;;N;;;;;
+105DA;TODHRI LETTER O;Lo;0;L;;;;;N;;;;;
+105DB;TODHRI LETTER PA;Lo;0;L;;;;;N;;;;;
+105DC;TODHRI LETTER QA;Lo;0;L;;;;;N;;;;;
+105DD;TODHRI LETTER RA;Lo;0;L;;;;;N;;;;;
+105DE;TODHRI LETTER RRA;Lo;0;L;;;;;N;;;;;
+105DF;TODHRI LETTER SA;Lo;0;L;;;;;N;;;;;
+105E0;TODHRI LETTER SHA;Lo;0;L;;;;;N;;;;;
+105E1;TODHRI LETTER SHTA;Lo;0;L;;;;;N;;;;;
+105E2;TODHRI LETTER TA;Lo;0;L;;;;;N;;;;;
+105E3;TODHRI LETTER THA;Lo;0;L;;;;;N;;;;;
+105E4;TODHRI LETTER U;Lo;0;L;105DA 0307;;;;N;;;;;
+105E5;TODHRI LETTER VA;Lo;0;L;;;;;N;;;;;
+105E6;TODHRI LETTER XA;Lo;0;L;;;;;N;;;;;
+105E7;TODHRI LETTER NXA;Lo;0;L;;;;;N;;;;;
+105E8;TODHRI LETTER XHA;Lo;0;L;;;;;N;;;;;
+105E9;TODHRI LETTER NXHA;Lo;0;L;;;;;N;;;;;
+105EA;TODHRI LETTER Y;Lo;0;L;;;;;N;;;;;
+105EB;TODHRI LETTER JY;Lo;0;L;;;;;N;;;;;
+105EC;TODHRI LETTER ZA;Lo;0;L;;;;;N;;;;;
+105ED;TODHRI LETTER ZHA;Lo;0;L;;;;;N;;;;;
+105EE;TODHRI LETTER GHA;Lo;0;L;;;;;N;;;;;
+105EF;TODHRI LETTER STA;Lo;0;L;;;;;N;;;;;
+105F0;TODHRI LETTER SKAN;Lo;0;L;;;;;N;;;;;
+105F1;TODHRI LETTER KHA;Lo;0;L;;;;;N;;;;;
+105F2;TODHRI LETTER PSA;Lo;0;L;;;;;N;;;;;
+105F3;TODHRI LETTER OO;Lo;0;L;;;;;N;;;;;
10600;LINEAR A SIGN AB001;Lo;0;L;;;;;N;;;;;
10601;LINEAR A SIGN AB002;Lo;0;L;;;;;N;;;;;
10602;LINEAR A SIGN AB003;Lo;0;L;;;;;N;;;;;
@@ -19322,6 +19391,75 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
10D37;HANIFI ROHINGYA DIGIT SEVEN;Nd;0;AN;;7;7;7;N;;;;;
10D38;HANIFI ROHINGYA DIGIT EIGHT;Nd;0;AN;;8;8;8;N;;;;;
10D39;HANIFI ROHINGYA DIGIT NINE;Nd;0;AN;;9;9;9;N;;;;;
+10D40;GARAY DIGIT ZERO;Nd;0;AN;;0;0;0;N;;;;;
+10D41;GARAY DIGIT ONE;Nd;0;AN;;1;1;1;N;;;;;
+10D42;GARAY DIGIT TWO;Nd;0;AN;;2;2;2;N;;;;;
+10D43;GARAY DIGIT THREE;Nd;0;AN;;3;3;3;N;;;;;
+10D44;GARAY DIGIT FOUR;Nd;0;AN;;4;4;4;N;;;;;
+10D45;GARAY DIGIT FIVE;Nd;0;AN;;5;5;5;N;;;;;
+10D46;GARAY DIGIT SIX;Nd;0;AN;;6;6;6;N;;;;;
+10D47;GARAY DIGIT SEVEN;Nd;0;AN;;7;7;7;N;;;;;
+10D48;GARAY DIGIT EIGHT;Nd;0;AN;;8;8;8;N;;;;;
+10D49;GARAY DIGIT NINE;Nd;0;AN;;9;9;9;N;;;;;
+10D4A;GARAY VOWEL SIGN A;Lo;0;R;;;;;N;;;;;
+10D4B;GARAY VOWEL SIGN I;Lo;0;R;;;;;N;;;;;
+10D4C;GARAY VOWEL SIGN O;Lo;0;R;;;;;N;;;;;
+10D4D;GARAY VOWEL SIGN EE;Lo;0;R;;;;;N;;;;;
+10D4E;GARAY VOWEL LENGTH MARK;Lm;0;R;;;;;N;;;;;
+10D4F;GARAY SUKUN;Lo;0;R;;;;;N;;;;;
+10D50;GARAY CAPITAL LETTER A;Lu;0;R;;;;;N;;;;10D70;
+10D51;GARAY CAPITAL LETTER CA;Lu;0;R;;;;;N;;;;10D71;
+10D52;GARAY CAPITAL LETTER MA;Lu;0;R;;;;;N;;;;10D72;
+10D53;GARAY CAPITAL LETTER KA;Lu;0;R;;;;;N;;;;10D73;
+10D54;GARAY CAPITAL LETTER BA;Lu;0;R;;;;;N;;;;10D74;
+10D55;GARAY CAPITAL LETTER JA;Lu;0;R;;;;;N;;;;10D75;
+10D56;GARAY CAPITAL LETTER SA;Lu;0;R;;;;;N;;;;10D76;
+10D57;GARAY CAPITAL LETTER WA;Lu;0;R;;;;;N;;;;10D77;
+10D58;GARAY CAPITAL LETTER LA;Lu;0;R;;;;;N;;;;10D78;
+10D59;GARAY CAPITAL LETTER GA;Lu;0;R;;;;;N;;;;10D79;
+10D5A;GARAY CAPITAL LETTER DA;Lu;0;R;;;;;N;;;;10D7A;
+10D5B;GARAY CAPITAL LETTER XA;Lu;0;R;;;;;N;;;;10D7B;
+10D5C;GARAY CAPITAL LETTER YA;Lu;0;R;;;;;N;;;;10D7C;
+10D5D;GARAY CAPITAL LETTER TA;Lu;0;R;;;;;N;;;;10D7D;
+10D5E;GARAY CAPITAL LETTER RA;Lu;0;R;;;;;N;;;;10D7E;
+10D5F;GARAY CAPITAL LETTER NYA;Lu;0;R;;;;;N;;;;10D7F;
+10D60;GARAY CAPITAL LETTER FA;Lu;0;R;;;;;N;;;;10D80;
+10D61;GARAY CAPITAL LETTER NA;Lu;0;R;;;;;N;;;;10D81;
+10D62;GARAY CAPITAL LETTER PA;Lu;0;R;;;;;N;;;;10D82;
+10D63;GARAY CAPITAL LETTER HA;Lu;0;R;;;;;N;;;;10D83;
+10D64;GARAY CAPITAL LETTER OLD KA;Lu;0;R;;;;;N;;;;10D84;
+10D65;GARAY CAPITAL LETTER OLD NA;Lu;0;R;;;;;N;;;;10D85;
+10D69;GARAY VOWEL SIGN E;Mn;230;NSM;;;;;N;;;;;
+10D6A;GARAY CONSONANT GEMINATION MARK;Mn;230;NSM;;;;;N;;;;;
+10D6B;GARAY COMBINING DOT ABOVE;Mn;230;NSM;;;;;N;;;;;
+10D6C;GARAY COMBINING DOUBLE DOT ABOVE;Mn;230;NSM;;;;;N;;;;;
+10D6D;GARAY CONSONANT NASALIZATION MARK;Mn;230;NSM;;;;;N;;;;;
+10D6E;GARAY HYPHEN;Pd;0;ON;;;;;N;;;;;
+10D6F;GARAY REDUPLICATION MARK;Lm;0;R;;;;;N;;;;;
+10D70;GARAY SMALL LETTER A;Ll;0;R;;;;;N;;;10D50;;10D50
+10D71;GARAY SMALL LETTER CA;Ll;0;R;;;;;N;;;10D51;;10D51
+10D72;GARAY SMALL LETTER MA;Ll;0;R;;;;;N;;;10D52;;10D52
+10D73;GARAY SMALL LETTER KA;Ll;0;R;;;;;N;;;10D53;;10D53
+10D74;GARAY SMALL LETTER BA;Ll;0;R;;;;;N;;;10D54;;10D54
+10D75;GARAY SMALL LETTER JA;Ll;0;R;;;;;N;;;10D55;;10D55
+10D76;GARAY SMALL LETTER SA;Ll;0;R;;;;;N;;;10D56;;10D56
+10D77;GARAY SMALL LETTER WA;Ll;0;R;;;;;N;;;10D57;;10D57
+10D78;GARAY SMALL LETTER LA;Ll;0;R;;;;;N;;;10D58;;10D58
+10D79;GARAY SMALL LETTER GA;Ll;0;R;;;;;N;;;10D59;;10D59
+10D7A;GARAY SMALL LETTER DA;Ll;0;R;;;;;N;;;10D5A;;10D5A
+10D7B;GARAY SMALL LETTER XA;Ll;0;R;;;;;N;;;10D5B;;10D5B
+10D7C;GARAY SMALL LETTER YA;Ll;0;R;;;;;N;;;10D5C;;10D5C
+10D7D;GARAY SMALL LETTER TA;Ll;0;R;;;;;N;;;10D5D;;10D5D
+10D7E;GARAY SMALL LETTER RA;Ll;0;R;;;;;N;;;10D5E;;10D5E
+10D7F;GARAY SMALL LETTER NYA;Ll;0;R;;;;;N;;;10D5F;;10D5F
+10D80;GARAY SMALL LETTER FA;Ll;0;R;;;;;N;;;10D60;;10D60
+10D81;GARAY SMALL LETTER NA;Ll;0;R;;;;;N;;;10D61;;10D61
+10D82;GARAY SMALL LETTER PA;Ll;0;R;;;;;N;;;10D62;;10D62
+10D83;GARAY SMALL LETTER HA;Ll;0;R;;;;;N;;;10D63;;10D63
+10D84;GARAY SMALL LETTER OLD KA;Ll;0;R;;;;;N;;;10D64;;10D64
+10D85;GARAY SMALL LETTER OLD NA;Ll;0;R;;;;;N;;;10D65;;10D65
+10D8E;GARAY PLUS SIGN;Sm;0;R;;;;;N;;;;;
+10D8F;GARAY MINUS SIGN;Sm;0;R;;;;;N;;;;;
10E60;RUMI DIGIT ONE;No;0;AN;;;1;1;N;;;;;
10E61;RUMI DIGIT TWO;No;0;AN;;;2;2;N;;;;;
10E62;RUMI DIGIT THREE;No;0;AN;;;3;3;N;;;;;
@@ -19400,6 +19538,10 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
10EAD;YEZIDI HYPHENATION MARK;Pd;0;R;;;;;N;;;;;
10EB0;YEZIDI LETTER LAM WITH DOT ABOVE;Lo;0;R;;;;;N;;;;;
10EB1;YEZIDI LETTER YOT WITH CIRCUMFLEX ABOVE;Lo;0;R;;;;;N;;;;;
+10EC2;ARABIC LETTER DAL WITH TWO DOTS VERTICALLY BELOW;Lo;0;AL;;;;;N;;;;;
+10EC3;ARABIC LETTER TAH WITH TWO DOTS VERTICALLY BELOW;Lo;0;AL;;;;;N;;;;;
+10EC4;ARABIC LETTER KAF WITH TWO DOTS VERTICALLY BELOW;Lo;0;AL;;;;;N;;;;;
+10EFC;ARABIC COMBINING ALEF OVERLAY;Mn;0;NSM;;;;;N;;;;;
10EFD;ARABIC SMALL LOW WORD SAKTA;Mn;220;NSM;;;;;N;;;;;
10EFE;ARABIC SMALL LOW WORD QASR;Mn;220;NSM;;;;;N;;;;;
10EFF;ARABIC SMALL LOW WORD MADDA;Mn;220;NSM;;;;;N;;;;;
@@ -20264,6 +20406,86 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
11372;COMBINING GRANTHA LETTER NA;Mn;230;NSM;;;;;N;;;;;
11373;COMBINING GRANTHA LETTER VI;Mn;230;NSM;;;;;N;;;;;
11374;COMBINING GRANTHA LETTER PA;Mn;230;NSM;;;;;N;;;;;
+11380;TULU-TIGALARI LETTER A;Lo;0;L;;;;;N;;;;;
+11381;TULU-TIGALARI LETTER AA;Lo;0;L;;;;;N;;;;;
+11382;TULU-TIGALARI LETTER I;Lo;0;L;;;;;N;;;;;
+11383;TULU-TIGALARI LETTER II;Lo;0;L;11382 113C9;;;;N;;;;;
+11384;TULU-TIGALARI LETTER U;Lo;0;L;;;;;N;;;;;
+11385;TULU-TIGALARI LETTER UU;Lo;0;L;11384 113BB;;;;N;;;;;
+11386;TULU-TIGALARI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+11387;TULU-TIGALARI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+11388;TULU-TIGALARI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+11389;TULU-TIGALARI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+1138B;TULU-TIGALARI LETTER EE;Lo;0;L;;;;;N;;;;;
+1138E;TULU-TIGALARI LETTER AI;Lo;0;L;1138B 113C2;;;;N;;;;;
+11390;TULU-TIGALARI LETTER OO;Lo;0;L;;;;;N;;;;;
+11391;TULU-TIGALARI LETTER AU;Lo;0;L;11390 113C9;;;;N;;;;;
+11392;TULU-TIGALARI LETTER KA;Lo;0;L;;;;;N;;;;;
+11393;TULU-TIGALARI LETTER KHA;Lo;0;L;;;;;N;;;;;
+11394;TULU-TIGALARI LETTER GA;Lo;0;L;;;;;N;;;;;
+11395;TULU-TIGALARI LETTER GHA;Lo;0;L;;;;;N;;;;;
+11396;TULU-TIGALARI LETTER NGA;Lo;0;L;;;;;N;;;;;
+11397;TULU-TIGALARI LETTER CA;Lo;0;L;;;;;N;;;;;
+11398;TULU-TIGALARI LETTER CHA;Lo;0;L;;;;;N;;;;;
+11399;TULU-TIGALARI LETTER JA;Lo;0;L;;;;;N;;;;;
+1139A;TULU-TIGALARI LETTER JHA;Lo;0;L;;;;;N;;;;;
+1139B;TULU-TIGALARI LETTER NYA;Lo;0;L;;;;;N;;;;;
+1139C;TULU-TIGALARI LETTER TTA;Lo;0;L;;;;;N;;;;;
+1139D;TULU-TIGALARI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+1139E;TULU-TIGALARI LETTER DDA;Lo;0;L;;;;;N;;;;;
+1139F;TULU-TIGALARI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+113A0;TULU-TIGALARI LETTER NNA;Lo;0;L;;;;;N;;;;;
+113A1;TULU-TIGALARI LETTER TA;Lo;0;L;;;;;N;;;;;
+113A2;TULU-TIGALARI LETTER THA;Lo;0;L;;;;;N;;;;;
+113A3;TULU-TIGALARI LETTER DA;Lo;0;L;;;;;N;;;;;
+113A4;TULU-TIGALARI LETTER DHA;Lo;0;L;;;;;N;;;;;
+113A5;TULU-TIGALARI LETTER NA;Lo;0;L;;;;;N;;;;;
+113A6;TULU-TIGALARI LETTER PA;Lo;0;L;;;;;N;;;;;
+113A7;TULU-TIGALARI LETTER PHA;Lo;0;L;;;;;N;;;;;
+113A8;TULU-TIGALARI LETTER BA;Lo;0;L;;;;;N;;;;;
+113A9;TULU-TIGALARI LETTER BHA;Lo;0;L;;;;;N;;;;;
+113AA;TULU-TIGALARI LETTER MA;Lo;0;L;;;;;N;;;;;
+113AB;TULU-TIGALARI LETTER YA;Lo;0;L;;;;;N;;;;;
+113AC;TULU-TIGALARI LETTER RA;Lo;0;L;;;;;N;;;;;
+113AD;TULU-TIGALARI LETTER LA;Lo;0;L;;;;;N;;;;;
+113AE;TULU-TIGALARI LETTER VA;Lo;0;L;;;;;N;;;;;
+113AF;TULU-TIGALARI LETTER SHA;Lo;0;L;;;;;N;;;;;
+113B0;TULU-TIGALARI LETTER SSA;Lo;0;L;;;;;N;;;;;
+113B1;TULU-TIGALARI LETTER SA;Lo;0;L;;;;;N;;;;;
+113B2;TULU-TIGALARI LETTER HA;Lo;0;L;;;;;N;;;;;
+113B3;TULU-TIGALARI LETTER LLA;Lo;0;L;;;;;N;;;;;
+113B4;TULU-TIGALARI LETTER RRA;Lo;0;L;;;;;N;;;;;
+113B5;TULU-TIGALARI LETTER LLLA;Lo;0;L;;;;;N;;;;;
+113B7;TULU-TIGALARI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
+113B8;TULU-TIGALARI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+113B9;TULU-TIGALARI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+113BA;TULU-TIGALARI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+113BB;TULU-TIGALARI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+113BC;TULU-TIGALARI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+113BD;TULU-TIGALARI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+113BE;TULU-TIGALARI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;
+113BF;TULU-TIGALARI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
+113C0;TULU-TIGALARI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
+113C2;TULU-TIGALARI VOWEL SIGN EE;Mc;0;L;;;;;N;;;;;
+113C5;TULU-TIGALARI VOWEL SIGN AI;Mc;0;L;113C2 113C2;;;;N;;;;;
+113C7;TULU-TIGALARI VOWEL SIGN OO;Mc;0;L;113C2 113B8;;;;N;;;;;
+113C8;TULU-TIGALARI VOWEL SIGN AU;Mc;0;L;113C2 113C9;;;;N;;;;;
+113C9;TULU-TIGALARI AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
+113CA;TULU-TIGALARI SIGN CANDRA ANUNASIKA;Mc;0;L;;;;;N;;;;;
+113CC;TULU-TIGALARI SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+113CD;TULU-TIGALARI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+113CE;TULU-TIGALARI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+113CF;TULU-TIGALARI SIGN LOOPED VIRAMA;Mc;9;L;;;;;N;;;;;
+113D0;TULU-TIGALARI CONJOINER;Mn;9;NSM;;;;;N;;;;;
+113D1;TULU-TIGALARI REPHA;Lo;0;L;;;;;N;;;;;
+113D2;TULU-TIGALARI GEMINATION MARK;Mn;0;NSM;;;;;N;;;;;
+113D3;TULU-TIGALARI SIGN PLUTA;Lo;0;L;;;;;N;;;;;
+113D4;TULU-TIGALARI DANDA;Po;0;L;;;;;N;;;;;
+113D5;TULU-TIGALARI DOUBLE DANDA;Po;0;L;;;;;N;;;;;
+113D7;TULU-TIGALARI SIGN OM PUSHPIKA;Po;0;L;;;;;N;;;;;
+113D8;TULU-TIGALARI SIGN SHRII PUSHPIKA;Po;0;L;;;;;N;;;;;
+113E1;TULU-TIGALARI VEDIC TONE SVARITA;Mn;0;NSM;;;;;N;;;;;
+113E2;TULU-TIGALARI VEDIC TONE ANUDATTA;Mn;0;NSM;;;;;N;;;;;
11400;NEWA LETTER A;Lo;0;L;;;;;N;;;;;
11401;NEWA LETTER AA;Lo;0;L;;;;;N;;;;;
11402;NEWA LETTER I;Lo;0;L;;;;;N;;;;;
@@ -20695,6 +20917,26 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
116C7;TAKRI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
116C8;TAKRI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
116C9;TAKRI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+116D0;MYANMAR PAO DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+116D1;MYANMAR PAO DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+116D2;MYANMAR PAO DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+116D3;MYANMAR PAO DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+116D4;MYANMAR PAO DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+116D5;MYANMAR PAO DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+116D6;MYANMAR PAO DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+116D7;MYANMAR PAO DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+116D8;MYANMAR PAO DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+116D9;MYANMAR PAO DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+116DA;MYANMAR EASTERN PWO KAREN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+116DB;MYANMAR EASTERN PWO KAREN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+116DC;MYANMAR EASTERN PWO KAREN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+116DD;MYANMAR EASTERN PWO KAREN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+116DE;MYANMAR EASTERN PWO KAREN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+116DF;MYANMAR EASTERN PWO KAREN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+116E0;MYANMAR EASTERN PWO KAREN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+116E1;MYANMAR EASTERN PWO KAREN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+116E2;MYANMAR EASTERN PWO KAREN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+116E3;MYANMAR EASTERN PWO KAREN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
11700;AHOM LETTER KA;Lo;0;L;;;;;N;;;;;
11701;AHOM LETTER KHA;Lo;0;L;;;;;N;;;;;
11702;AHOM LETTER NGA;Lo;0;L;;;;;N;;;;;
@@ -20723,7 +20965,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
11719;AHOM LETTER JHA;Lo;0;L;;;;;N;;;;;
1171A;AHOM LETTER ALTERNATE BA;Lo;0;L;;;;;N;;;;;
1171D;AHOM CONSONANT SIGN MEDIAL LA;Mn;0;NSM;;;;;N;;;;;
-1171E;AHOM CONSONANT SIGN MEDIAL RA;Mn;0;NSM;;;;;N;;;;;
+1171E;AHOM CONSONANT SIGN MEDIAL RA;Mc;0;L;;;;;N;;;;;
1171F;AHOM CONSONANT SIGN MEDIAL LIGATING RA;Mn;0;NSM;;;;;N;;;;;
11720;AHOM VOWEL SIGN A;Mc;0;L;;;;;N;;;;;
11721;AHOM VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
@@ -21279,6 +21521,50 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
11B07;DEVANAGARI SIGN WESTERN NINE-LIKE BHALE;Po;0;L;;;;;N;;;;;
11B08;DEVANAGARI SIGN REVERSED NINE-LIKE BHALE;Po;0;L;;;;;N;;;;;
11B09;DEVANAGARI SIGN MINDU;Po;0;L;;;;;N;;;;;
+11BC0;SUNUWAR LETTER DEVI;Lo;0;L;;;;;N;;;;;
+11BC1;SUNUWAR LETTER TASLA;Lo;0;L;;;;;N;;;;;
+11BC2;SUNUWAR LETTER EKO;Lo;0;L;;;;;N;;;;;
+11BC3;SUNUWAR LETTER IMAR;Lo;0;L;;;;;N;;;;;
+11BC4;SUNUWAR LETTER REU;Lo;0;L;;;;;N;;;;;
+11BC5;SUNUWAR LETTER UTTHI;Lo;0;L;;;;;N;;;;;
+11BC6;SUNUWAR LETTER KIK;Lo;0;L;;;;;N;;;;;
+11BC7;SUNUWAR LETTER MA;Lo;0;L;;;;;N;;;;;
+11BC8;SUNUWAR LETTER APPHO;Lo;0;L;;;;;N;;;;;
+11BC9;SUNUWAR LETTER PIP;Lo;0;L;;;;;N;;;;;
+11BCA;SUNUWAR LETTER GIL;Lo;0;L;;;;;N;;;;;
+11BCB;SUNUWAR LETTER HAMSO;Lo;0;L;;;;;N;;;;;
+11BCC;SUNUWAR LETTER CARMI;Lo;0;L;;;;;N;;;;;
+11BCD;SUNUWAR LETTER NAH;Lo;0;L;;;;;N;;;;;
+11BCE;SUNUWAR LETTER BUR;Lo;0;L;;;;;N;;;;;
+11BCF;SUNUWAR LETTER JYAH;Lo;0;L;;;;;N;;;;;
+11BD0;SUNUWAR LETTER LOACHA;Lo;0;L;;;;;N;;;;;
+11BD1;SUNUWAR LETTER OTTHI;Lo;0;L;;;;;N;;;;;
+11BD2;SUNUWAR LETTER SHYELE;Lo;0;L;;;;;N;;;;;
+11BD3;SUNUWAR LETTER VARCA;Lo;0;L;;;;;N;;;;;
+11BD4;SUNUWAR LETTER YAT;Lo;0;L;;;;;N;;;;;
+11BD5;SUNUWAR LETTER AVA;Lo;0;L;;;;;N;;;;;
+11BD6;SUNUWAR LETTER AAL;Lo;0;L;;;;;N;;;;;
+11BD7;SUNUWAR LETTER DONGA;Lo;0;L;;;;;N;;;;;
+11BD8;SUNUWAR LETTER THARI;Lo;0;L;;;;;N;;;;;
+11BD9;SUNUWAR LETTER PHAR;Lo;0;L;;;;;N;;;;;
+11BDA;SUNUWAR LETTER NGAR;Lo;0;L;;;;;N;;;;;
+11BDB;SUNUWAR LETTER KHA;Lo;0;L;;;;;N;;;;;
+11BDC;SUNUWAR LETTER SHYER;Lo;0;L;;;;;N;;;;;
+11BDD;SUNUWAR LETTER CHELAP;Lo;0;L;;;;;N;;;;;
+11BDE;SUNUWAR LETTER TENTU;Lo;0;L;;;;;N;;;;;
+11BDF;SUNUWAR LETTER THELE;Lo;0;L;;;;;N;;;;;
+11BE0;SUNUWAR LETTER KLOKO;Lo;0;L;;;;;N;;;;;
+11BE1;SUNUWAR SIGN PVO;Po;0;L;;;;;N;;;;;
+11BF0;SUNUWAR DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+11BF1;SUNUWAR DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+11BF2;SUNUWAR DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+11BF3;SUNUWAR DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+11BF4;SUNUWAR DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+11BF5;SUNUWAR DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+11BF6;SUNUWAR DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+11BF7;SUNUWAR DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+11BF8;SUNUWAR DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+11BF9;SUNUWAR DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
11C00;BHAIKSUKI LETTER A;Lo;0;L;;;;;N;;;;;
11C01;BHAIKSUKI LETTER AA;Lo;0;L;;;;;N;;;;;
11C02;BHAIKSUKI LETTER I;Lo;0;L;;;;;N;;;;;
@@ -21693,6 +21979,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
11F57;KAWI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
11F58;KAWI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
11F59;KAWI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+11F5A;KAWI SIGN NUKTA;Mn;0;NSM;;;;;N;;;;;
11FB0;LISU LETTER YHA;Lo;0;L;;;;;N;;;;;
11FC0;TAMIL FRACTION ONE THREE-HUNDRED-AND-TWENTIETH;No;0;L;;;;1/320;N;;;;;
11FC1;TAMIL FRACTION ONE ONE-HUNDRED-AND-SIXTIETH;No;0;L;;;;1/160;N;;;;;
@@ -24188,6 +24475,4001 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
13453;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP AND END;Mn;0;NSM;;;;;N;;;;;
13454;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT BOTTOM AND END;Mn;0;NSM;;;;;N;;;;;
13455;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED;Mn;0;NSM;;;;;N;;;;;
+13460;EGYPTIAN HIEROGLYPH-13460;Lo;0;L;;;;;N;;;;;
+13461;EGYPTIAN HIEROGLYPH-13461;Lo;0;L;;;;;N;;;;;
+13462;EGYPTIAN HIEROGLYPH-13462;Lo;0;L;;;;;N;;;;;
+13463;EGYPTIAN HIEROGLYPH-13463;Lo;0;L;;;;;N;;;;;
+13464;EGYPTIAN HIEROGLYPH-13464;Lo;0;L;;;;;N;;;;;
+13465;EGYPTIAN HIEROGLYPH-13465;Lo;0;L;;;;;N;;;;;
+13466;EGYPTIAN HIEROGLYPH-13466;Lo;0;L;;;;;N;;;;;
+13467;EGYPTIAN HIEROGLYPH-13467;Lo;0;L;;;;;N;;;;;
+13468;EGYPTIAN HIEROGLYPH-13468;Lo;0;L;;;;;N;;;;;
+13469;EGYPTIAN HIEROGLYPH-13469;Lo;0;L;;;;;N;;;;;
+1346A;EGYPTIAN HIEROGLYPH-1346A;Lo;0;L;;;;;N;;;;;
+1346B;EGYPTIAN HIEROGLYPH-1346B;Lo;0;L;;;;;N;;;;;
+1346C;EGYPTIAN HIEROGLYPH-1346C;Lo;0;L;;;;;N;;;;;
+1346D;EGYPTIAN HIEROGLYPH-1346D;Lo;0;L;;;;;N;;;;;
+1346E;EGYPTIAN HIEROGLYPH-1346E;Lo;0;L;;;;;N;;;;;
+1346F;EGYPTIAN HIEROGLYPH-1346F;Lo;0;L;;;;;N;;;;;
+13470;EGYPTIAN HIEROGLYPH-13470;Lo;0;L;;;;;N;;;;;
+13471;EGYPTIAN HIEROGLYPH-13471;Lo;0;L;;;;;N;;;;;
+13472;EGYPTIAN HIEROGLYPH-13472;Lo;0;L;;;;;N;;;;;
+13473;EGYPTIAN HIEROGLYPH-13473;Lo;0;L;;;;;N;;;;;
+13474;EGYPTIAN HIEROGLYPH-13474;Lo;0;L;;;;;N;;;;;
+13475;EGYPTIAN HIEROGLYPH-13475;Lo;0;L;;;;;N;;;;;
+13476;EGYPTIAN HIEROGLYPH-13476;Lo;0;L;;;;;N;;;;;
+13477;EGYPTIAN HIEROGLYPH-13477;Lo;0;L;;;;;N;;;;;
+13478;EGYPTIAN HIEROGLYPH-13478;Lo;0;L;;;;;N;;;;;
+13479;EGYPTIAN HIEROGLYPH-13479;Lo;0;L;;;;;N;;;;;
+1347A;EGYPTIAN HIEROGLYPH-1347A;Lo;0;L;;;;;N;;;;;
+1347B;EGYPTIAN HIEROGLYPH-1347B;Lo;0;L;;;;;N;;;;;
+1347C;EGYPTIAN HIEROGLYPH-1347C;Lo;0;L;;;;;N;;;;;
+1347D;EGYPTIAN HIEROGLYPH-1347D;Lo;0;L;;;;;N;;;;;
+1347E;EGYPTIAN HIEROGLYPH-1347E;Lo;0;L;;;;;N;;;;;
+1347F;EGYPTIAN HIEROGLYPH-1347F;Lo;0;L;;;;;N;;;;;
+13480;EGYPTIAN HIEROGLYPH-13480;Lo;0;L;;;;;N;;;;;
+13481;EGYPTIAN HIEROGLYPH-13481;Lo;0;L;;;;;N;;;;;
+13482;EGYPTIAN HIEROGLYPH-13482;Lo;0;L;;;;;N;;;;;
+13483;EGYPTIAN HIEROGLYPH-13483;Lo;0;L;;;;;N;;;;;
+13484;EGYPTIAN HIEROGLYPH-13484;Lo;0;L;;;;;N;;;;;
+13485;EGYPTIAN HIEROGLYPH-13485;Lo;0;L;;;;;N;;;;;
+13486;EGYPTIAN HIEROGLYPH-13486;Lo;0;L;;;;;N;;;;;
+13487;EGYPTIAN HIEROGLYPH-13487;Lo;0;L;;;;;N;;;;;
+13488;EGYPTIAN HIEROGLYPH-13488;Lo;0;L;;;;;N;;;;;
+13489;EGYPTIAN HIEROGLYPH-13489;Lo;0;L;;;;;N;;;;;
+1348A;EGYPTIAN HIEROGLYPH-1348A;Lo;0;L;;;;;N;;;;;
+1348B;EGYPTIAN HIEROGLYPH-1348B;Lo;0;L;;;;;N;;;;;
+1348C;EGYPTIAN HIEROGLYPH-1348C;Lo;0;L;;;;;N;;;;;
+1348D;EGYPTIAN HIEROGLYPH-1348D;Lo;0;L;;;;;N;;;;;
+1348E;EGYPTIAN HIEROGLYPH-1348E;Lo;0;L;;;;;N;;;;;
+1348F;EGYPTIAN HIEROGLYPH-1348F;Lo;0;L;;;;;N;;;;;
+13490;EGYPTIAN HIEROGLYPH-13490;Lo;0;L;;;;;N;;;;;
+13491;EGYPTIAN HIEROGLYPH-13491;Lo;0;L;;;;;N;;;;;
+13492;EGYPTIAN HIEROGLYPH-13492;Lo;0;L;;;;;N;;;;;
+13493;EGYPTIAN HIEROGLYPH-13493;Lo;0;L;;;;;N;;;;;
+13494;EGYPTIAN HIEROGLYPH-13494;Lo;0;L;;;;;N;;;;;
+13495;EGYPTIAN HIEROGLYPH-13495;Lo;0;L;;;;;N;;;;;
+13496;EGYPTIAN HIEROGLYPH-13496;Lo;0;L;;;;;N;;;;;
+13497;EGYPTIAN HIEROGLYPH-13497;Lo;0;L;;;;;N;;;;;
+13498;EGYPTIAN HIEROGLYPH-13498;Lo;0;L;;;;;N;;;;;
+13499;EGYPTIAN HIEROGLYPH-13499;Lo;0;L;;;;;N;;;;;
+1349A;EGYPTIAN HIEROGLYPH-1349A;Lo;0;L;;;;;N;;;;;
+1349B;EGYPTIAN HIEROGLYPH-1349B;Lo;0;L;;;;;N;;;;;
+1349C;EGYPTIAN HIEROGLYPH-1349C;Lo;0;L;;;;;N;;;;;
+1349D;EGYPTIAN HIEROGLYPH-1349D;Lo;0;L;;;;;N;;;;;
+1349E;EGYPTIAN HIEROGLYPH-1349E;Lo;0;L;;;;;N;;;;;
+1349F;EGYPTIAN HIEROGLYPH-1349F;Lo;0;L;;;;;N;;;;;
+134A0;EGYPTIAN HIEROGLYPH-134A0;Lo;0;L;;;;;N;;;;;
+134A1;EGYPTIAN HIEROGLYPH-134A1;Lo;0;L;;;;;N;;;;;
+134A2;EGYPTIAN HIEROGLYPH-134A2;Lo;0;L;;;;;N;;;;;
+134A3;EGYPTIAN HIEROGLYPH-134A3;Lo;0;L;;;;;N;;;;;
+134A4;EGYPTIAN HIEROGLYPH-134A4;Lo;0;L;;;;;N;;;;;
+134A5;EGYPTIAN HIEROGLYPH-134A5;Lo;0;L;;;;;N;;;;;
+134A6;EGYPTIAN HIEROGLYPH-134A6;Lo;0;L;;;;;N;;;;;
+134A7;EGYPTIAN HIEROGLYPH-134A7;Lo;0;L;;;;;N;;;;;
+134A8;EGYPTIAN HIEROGLYPH-134A8;Lo;0;L;;;;;N;;;;;
+134A9;EGYPTIAN HIEROGLYPH-134A9;Lo;0;L;;;;;N;;;;;
+134AA;EGYPTIAN HIEROGLYPH-134AA;Lo;0;L;;;;;N;;;;;
+134AB;EGYPTIAN HIEROGLYPH-134AB;Lo;0;L;;;;;N;;;;;
+134AC;EGYPTIAN HIEROGLYPH-134AC;Lo;0;L;;;;;N;;;;;
+134AD;EGYPTIAN HIEROGLYPH-134AD;Lo;0;L;;;;;N;;;;;
+134AE;EGYPTIAN HIEROGLYPH-134AE;Lo;0;L;;;;;N;;;;;
+134AF;EGYPTIAN HIEROGLYPH-134AF;Lo;0;L;;;;;N;;;;;
+134B0;EGYPTIAN HIEROGLYPH-134B0;Lo;0;L;;;;;N;;;;;
+134B1;EGYPTIAN HIEROGLYPH-134B1;Lo;0;L;;;;;N;;;;;
+134B2;EGYPTIAN HIEROGLYPH-134B2;Lo;0;L;;;;;N;;;;;
+134B3;EGYPTIAN HIEROGLYPH-134B3;Lo;0;L;;;;;N;;;;;
+134B4;EGYPTIAN HIEROGLYPH-134B4;Lo;0;L;;;;;N;;;;;
+134B5;EGYPTIAN HIEROGLYPH-134B5;Lo;0;L;;;;;N;;;;;
+134B6;EGYPTIAN HIEROGLYPH-134B6;Lo;0;L;;;;;N;;;;;
+134B7;EGYPTIAN HIEROGLYPH-134B7;Lo;0;L;;;;;N;;;;;
+134B8;EGYPTIAN HIEROGLYPH-134B8;Lo;0;L;;;;;N;;;;;
+134B9;EGYPTIAN HIEROGLYPH-134B9;Lo;0;L;;;;;N;;;;;
+134BA;EGYPTIAN HIEROGLYPH-134BA;Lo;0;L;;;;;N;;;;;
+134BB;EGYPTIAN HIEROGLYPH-134BB;Lo;0;L;;;;;N;;;;;
+134BC;EGYPTIAN HIEROGLYPH-134BC;Lo;0;L;;;;;N;;;;;
+134BD;EGYPTIAN HIEROGLYPH-134BD;Lo;0;L;;;;;N;;;;;
+134BE;EGYPTIAN HIEROGLYPH-134BE;Lo;0;L;;;;;N;;;;;
+134BF;EGYPTIAN HIEROGLYPH-134BF;Lo;0;L;;;;;N;;;;;
+134C0;EGYPTIAN HIEROGLYPH-134C0;Lo;0;L;;;;;N;;;;;
+134C1;EGYPTIAN HIEROGLYPH-134C1;Lo;0;L;;;;;N;;;;;
+134C2;EGYPTIAN HIEROGLYPH-134C2;Lo;0;L;;;;;N;;;;;
+134C3;EGYPTIAN HIEROGLYPH-134C3;Lo;0;L;;;;;N;;;;;
+134C4;EGYPTIAN HIEROGLYPH-134C4;Lo;0;L;;;;;N;;;;;
+134C5;EGYPTIAN HIEROGLYPH-134C5;Lo;0;L;;;;;N;;;;;
+134C6;EGYPTIAN HIEROGLYPH-134C6;Lo;0;L;;;;;N;;;;;
+134C7;EGYPTIAN HIEROGLYPH-134C7;Lo;0;L;;;;;N;;;;;
+134C8;EGYPTIAN HIEROGLYPH-134C8;Lo;0;L;;;;;N;;;;;
+134C9;EGYPTIAN HIEROGLYPH-134C9;Lo;0;L;;;;;N;;;;;
+134CA;EGYPTIAN HIEROGLYPH-134CA;Lo;0;L;;;;;N;;;;;
+134CB;EGYPTIAN HIEROGLYPH-134CB;Lo;0;L;;;;;N;;;;;
+134CC;EGYPTIAN HIEROGLYPH-134CC;Lo;0;L;;;;;N;;;;;
+134CD;EGYPTIAN HIEROGLYPH-134CD;Lo;0;L;;;;;N;;;;;
+134CE;EGYPTIAN HIEROGLYPH-134CE;Lo;0;L;;;;;N;;;;;
+134CF;EGYPTIAN HIEROGLYPH-134CF;Lo;0;L;;;;;N;;;;;
+134D0;EGYPTIAN HIEROGLYPH-134D0;Lo;0;L;;;;;N;;;;;
+134D1;EGYPTIAN HIEROGLYPH-134D1;Lo;0;L;;;;;N;;;;;
+134D2;EGYPTIAN HIEROGLYPH-134D2;Lo;0;L;;;;;N;;;;;
+134D3;EGYPTIAN HIEROGLYPH-134D3;Lo;0;L;;;;;N;;;;;
+134D4;EGYPTIAN HIEROGLYPH-134D4;Lo;0;L;;;;;N;;;;;
+134D5;EGYPTIAN HIEROGLYPH-134D5;Lo;0;L;;;;;N;;;;;
+134D6;EGYPTIAN HIEROGLYPH-134D6;Lo;0;L;;;;;N;;;;;
+134D7;EGYPTIAN HIEROGLYPH-134D7;Lo;0;L;;;;;N;;;;;
+134D8;EGYPTIAN HIEROGLYPH-134D8;Lo;0;L;;;;;N;;;;;
+134D9;EGYPTIAN HIEROGLYPH-134D9;Lo;0;L;;;;;N;;;;;
+134DA;EGYPTIAN HIEROGLYPH-134DA;Lo;0;L;;;;;N;;;;;
+134DB;EGYPTIAN HIEROGLYPH-134DB;Lo;0;L;;;;;N;;;;;
+134DC;EGYPTIAN HIEROGLYPH-134DC;Lo;0;L;;;;;N;;;;;
+134DD;EGYPTIAN HIEROGLYPH-134DD;Lo;0;L;;;;;N;;;;;
+134DE;EGYPTIAN HIEROGLYPH-134DE;Lo;0;L;;;;;N;;;;;
+134DF;EGYPTIAN HIEROGLYPH-134DF;Lo;0;L;;;;;N;;;;;
+134E0;EGYPTIAN HIEROGLYPH-134E0;Lo;0;L;;;;;N;;;;;
+134E1;EGYPTIAN HIEROGLYPH-134E1;Lo;0;L;;;;;N;;;;;
+134E2;EGYPTIAN HIEROGLYPH-134E2;Lo;0;L;;;;;N;;;;;
+134E3;EGYPTIAN HIEROGLYPH-134E3;Lo;0;L;;;;;N;;;;;
+134E4;EGYPTIAN HIEROGLYPH-134E4;Lo;0;L;;;;;N;;;;;
+134E5;EGYPTIAN HIEROGLYPH-134E5;Lo;0;L;;;;;N;;;;;
+134E6;EGYPTIAN HIEROGLYPH-134E6;Lo;0;L;;;;;N;;;;;
+134E7;EGYPTIAN HIEROGLYPH-134E7;Lo;0;L;;;;;N;;;;;
+134E8;EGYPTIAN HIEROGLYPH-134E8;Lo;0;L;;;;;N;;;;;
+134E9;EGYPTIAN HIEROGLYPH-134E9;Lo;0;L;;;;;N;;;;;
+134EA;EGYPTIAN HIEROGLYPH-134EA;Lo;0;L;;;;;N;;;;;
+134EB;EGYPTIAN HIEROGLYPH-134EB;Lo;0;L;;;;;N;;;;;
+134EC;EGYPTIAN HIEROGLYPH-134EC;Lo;0;L;;;;;N;;;;;
+134ED;EGYPTIAN HIEROGLYPH-134ED;Lo;0;L;;;;;N;;;;;
+134EE;EGYPTIAN HIEROGLYPH-134EE;Lo;0;L;;;;;N;;;;;
+134EF;EGYPTIAN HIEROGLYPH-134EF;Lo;0;L;;;;;N;;;;;
+134F0;EGYPTIAN HIEROGLYPH-134F0;Lo;0;L;;;;;N;;;;;
+134F1;EGYPTIAN HIEROGLYPH-134F1;Lo;0;L;;;;;N;;;;;
+134F2;EGYPTIAN HIEROGLYPH-134F2;Lo;0;L;;;;;N;;;;;
+134F3;EGYPTIAN HIEROGLYPH-134F3;Lo;0;L;;;;;N;;;;;
+134F4;EGYPTIAN HIEROGLYPH-134F4;Lo;0;L;;;;;N;;;;;
+134F5;EGYPTIAN HIEROGLYPH-134F5;Lo;0;L;;;;;N;;;;;
+134F6;EGYPTIAN HIEROGLYPH-134F6;Lo;0;L;;;;;N;;;;;
+134F7;EGYPTIAN HIEROGLYPH-134F7;Lo;0;L;;;;;N;;;;;
+134F8;EGYPTIAN HIEROGLYPH-134F8;Lo;0;L;;;;;N;;;;;
+134F9;EGYPTIAN HIEROGLYPH-134F9;Lo;0;L;;;;;N;;;;;
+134FA;EGYPTIAN HIEROGLYPH-134FA;Lo;0;L;;;;;N;;;;;
+134FB;EGYPTIAN HIEROGLYPH-134FB;Lo;0;L;;;;;N;;;;;
+134FC;EGYPTIAN HIEROGLYPH-134FC;Lo;0;L;;;;;N;;;;;
+134FD;EGYPTIAN HIEROGLYPH-134FD;Lo;0;L;;;;;N;;;;;
+134FE;EGYPTIAN HIEROGLYPH-134FE;Lo;0;L;;;;;N;;;;;
+134FF;EGYPTIAN HIEROGLYPH-134FF;Lo;0;L;;;;;N;;;;;
+13500;EGYPTIAN HIEROGLYPH-13500;Lo;0;L;;;;;N;;;;;
+13501;EGYPTIAN HIEROGLYPH-13501;Lo;0;L;;;;;N;;;;;
+13502;EGYPTIAN HIEROGLYPH-13502;Lo;0;L;;;;;N;;;;;
+13503;EGYPTIAN HIEROGLYPH-13503;Lo;0;L;;;;;N;;;;;
+13504;EGYPTIAN HIEROGLYPH-13504;Lo;0;L;;;;;N;;;;;
+13505;EGYPTIAN HIEROGLYPH-13505;Lo;0;L;;;;;N;;;;;
+13506;EGYPTIAN HIEROGLYPH-13506;Lo;0;L;;;;;N;;;;;
+13507;EGYPTIAN HIEROGLYPH-13507;Lo;0;L;;;;;N;;;;;
+13508;EGYPTIAN HIEROGLYPH-13508;Lo;0;L;;;;;N;;;;;
+13509;EGYPTIAN HIEROGLYPH-13509;Lo;0;L;;;;;N;;;;;
+1350A;EGYPTIAN HIEROGLYPH-1350A;Lo;0;L;;;;;N;;;;;
+1350B;EGYPTIAN HIEROGLYPH-1350B;Lo;0;L;;;;;N;;;;;
+1350C;EGYPTIAN HIEROGLYPH-1350C;Lo;0;L;;;;;N;;;;;
+1350D;EGYPTIAN HIEROGLYPH-1350D;Lo;0;L;;;;;N;;;;;
+1350E;EGYPTIAN HIEROGLYPH-1350E;Lo;0;L;;;;;N;;;;;
+1350F;EGYPTIAN HIEROGLYPH-1350F;Lo;0;L;;;;;N;;;;;
+13510;EGYPTIAN HIEROGLYPH-13510;Lo;0;L;;;;;N;;;;;
+13511;EGYPTIAN HIEROGLYPH-13511;Lo;0;L;;;;;N;;;;;
+13512;EGYPTIAN HIEROGLYPH-13512;Lo;0;L;;;;;N;;;;;
+13513;EGYPTIAN HIEROGLYPH-13513;Lo;0;L;;;;;N;;;;;
+13514;EGYPTIAN HIEROGLYPH-13514;Lo;0;L;;;;;N;;;;;
+13515;EGYPTIAN HIEROGLYPH-13515;Lo;0;L;;;;;N;;;;;
+13516;EGYPTIAN HIEROGLYPH-13516;Lo;0;L;;;;;N;;;;;
+13517;EGYPTIAN HIEROGLYPH-13517;Lo;0;L;;;;;N;;;;;
+13518;EGYPTIAN HIEROGLYPH-13518;Lo;0;L;;;;;N;;;;;
+13519;EGYPTIAN HIEROGLYPH-13519;Lo;0;L;;;;;N;;;;;
+1351A;EGYPTIAN HIEROGLYPH-1351A;Lo;0;L;;;;;N;;;;;
+1351B;EGYPTIAN HIEROGLYPH-1351B;Lo;0;L;;;;;N;;;;;
+1351C;EGYPTIAN HIEROGLYPH-1351C;Lo;0;L;;;;;N;;;;;
+1351D;EGYPTIAN HIEROGLYPH-1351D;Lo;0;L;;;;;N;;;;;
+1351E;EGYPTIAN HIEROGLYPH-1351E;Lo;0;L;;;;;N;;;;;
+1351F;EGYPTIAN HIEROGLYPH-1351F;Lo;0;L;;;;;N;;;;;
+13520;EGYPTIAN HIEROGLYPH-13520;Lo;0;L;;;;;N;;;;;
+13521;EGYPTIAN HIEROGLYPH-13521;Lo;0;L;;;;;N;;;;;
+13522;EGYPTIAN HIEROGLYPH-13522;Lo;0;L;;;;;N;;;;;
+13523;EGYPTIAN HIEROGLYPH-13523;Lo;0;L;;;;;N;;;;;
+13524;EGYPTIAN HIEROGLYPH-13524;Lo;0;L;;;;;N;;;;;
+13525;EGYPTIAN HIEROGLYPH-13525;Lo;0;L;;;;;N;;;;;
+13526;EGYPTIAN HIEROGLYPH-13526;Lo;0;L;;;;;N;;;;;
+13527;EGYPTIAN HIEROGLYPH-13527;Lo;0;L;;;;;N;;;;;
+13528;EGYPTIAN HIEROGLYPH-13528;Lo;0;L;;;;;N;;;;;
+13529;EGYPTIAN HIEROGLYPH-13529;Lo;0;L;;;;;N;;;;;
+1352A;EGYPTIAN HIEROGLYPH-1352A;Lo;0;L;;;;;N;;;;;
+1352B;EGYPTIAN HIEROGLYPH-1352B;Lo;0;L;;;;;N;;;;;
+1352C;EGYPTIAN HIEROGLYPH-1352C;Lo;0;L;;;;;N;;;;;
+1352D;EGYPTIAN HIEROGLYPH-1352D;Lo;0;L;;;;;N;;;;;
+1352E;EGYPTIAN HIEROGLYPH-1352E;Lo;0;L;;;;;N;;;;;
+1352F;EGYPTIAN HIEROGLYPH-1352F;Lo;0;L;;;;;N;;;;;
+13530;EGYPTIAN HIEROGLYPH-13530;Lo;0;L;;;;;N;;;;;
+13531;EGYPTIAN HIEROGLYPH-13531;Lo;0;L;;;;;N;;;;;
+13532;EGYPTIAN HIEROGLYPH-13532;Lo;0;L;;;;;N;;;;;
+13533;EGYPTIAN HIEROGLYPH-13533;Lo;0;L;;;;;N;;;;;
+13534;EGYPTIAN HIEROGLYPH-13534;Lo;0;L;;;;;N;;;;;
+13535;EGYPTIAN HIEROGLYPH-13535;Lo;0;L;;;;;N;;;;;
+13536;EGYPTIAN HIEROGLYPH-13536;Lo;0;L;;;;;N;;;;;
+13537;EGYPTIAN HIEROGLYPH-13537;Lo;0;L;;;;;N;;;;;
+13538;EGYPTIAN HIEROGLYPH-13538;Lo;0;L;;;;;N;;;;;
+13539;EGYPTIAN HIEROGLYPH-13539;Lo;0;L;;;;;N;;;;;
+1353A;EGYPTIAN HIEROGLYPH-1353A;Lo;0;L;;;;;N;;;;;
+1353B;EGYPTIAN HIEROGLYPH-1353B;Lo;0;L;;;;;N;;;;;
+1353C;EGYPTIAN HIEROGLYPH-1353C;Lo;0;L;;;;;N;;;;;
+1353D;EGYPTIAN HIEROGLYPH-1353D;Lo;0;L;;;;;N;;;;;
+1353E;EGYPTIAN HIEROGLYPH-1353E;Lo;0;L;;;;;N;;;;;
+1353F;EGYPTIAN HIEROGLYPH-1353F;Lo;0;L;;;;;N;;;;;
+13540;EGYPTIAN HIEROGLYPH-13540;Lo;0;L;;;;;N;;;;;
+13541;EGYPTIAN HIEROGLYPH-13541;Lo;0;L;;;;;N;;;;;
+13542;EGYPTIAN HIEROGLYPH-13542;Lo;0;L;;;;;N;;;;;
+13543;EGYPTIAN HIEROGLYPH-13543;Lo;0;L;;;;;N;;;;;
+13544;EGYPTIAN HIEROGLYPH-13544;Lo;0;L;;;;;N;;;;;
+13545;EGYPTIAN HIEROGLYPH-13545;Lo;0;L;;;;;N;;;;;
+13546;EGYPTIAN HIEROGLYPH-13546;Lo;0;L;;;;;N;;;;;
+13547;EGYPTIAN HIEROGLYPH-13547;Lo;0;L;;;;;N;;;;;
+13548;EGYPTIAN HIEROGLYPH-13548;Lo;0;L;;;;;N;;;;;
+13549;EGYPTIAN HIEROGLYPH-13549;Lo;0;L;;;;;N;;;;;
+1354A;EGYPTIAN HIEROGLYPH-1354A;Lo;0;L;;;;;N;;;;;
+1354B;EGYPTIAN HIEROGLYPH-1354B;Lo;0;L;;;;;N;;;;;
+1354C;EGYPTIAN HIEROGLYPH-1354C;Lo;0;L;;;;;N;;;;;
+1354D;EGYPTIAN HIEROGLYPH-1354D;Lo;0;L;;;;;N;;;;;
+1354E;EGYPTIAN HIEROGLYPH-1354E;Lo;0;L;;;;;N;;;;;
+1354F;EGYPTIAN HIEROGLYPH-1354F;Lo;0;L;;;;;N;;;;;
+13550;EGYPTIAN HIEROGLYPH-13550;Lo;0;L;;;;;N;;;;;
+13551;EGYPTIAN HIEROGLYPH-13551;Lo;0;L;;;;;N;;;;;
+13552;EGYPTIAN HIEROGLYPH-13552;Lo;0;L;;;;;N;;;;;
+13553;EGYPTIAN HIEROGLYPH-13553;Lo;0;L;;;;;N;;;;;
+13554;EGYPTIAN HIEROGLYPH-13554;Lo;0;L;;;;;N;;;;;
+13555;EGYPTIAN HIEROGLYPH-13555;Lo;0;L;;;;;N;;;;;
+13556;EGYPTIAN HIEROGLYPH-13556;Lo;0;L;;;;;N;;;;;
+13557;EGYPTIAN HIEROGLYPH-13557;Lo;0;L;;;;;N;;;;;
+13558;EGYPTIAN HIEROGLYPH-13558;Lo;0;L;;;;;N;;;;;
+13559;EGYPTIAN HIEROGLYPH-13559;Lo;0;L;;;;;N;;;;;
+1355A;EGYPTIAN HIEROGLYPH-1355A;Lo;0;L;;;;;N;;;;;
+1355B;EGYPTIAN HIEROGLYPH-1355B;Lo;0;L;;;;;N;;;;;
+1355C;EGYPTIAN HIEROGLYPH-1355C;Lo;0;L;;;;;N;;;;;
+1355D;EGYPTIAN HIEROGLYPH-1355D;Lo;0;L;;;;;N;;;;;
+1355E;EGYPTIAN HIEROGLYPH-1355E;Lo;0;L;;;;;N;;;;;
+1355F;EGYPTIAN HIEROGLYPH-1355F;Lo;0;L;;;;;N;;;;;
+13560;EGYPTIAN HIEROGLYPH-13560;Lo;0;L;;;;;N;;;;;
+13561;EGYPTIAN HIEROGLYPH-13561;Lo;0;L;;;;;N;;;;;
+13562;EGYPTIAN HIEROGLYPH-13562;Lo;0;L;;;;;N;;;;;
+13563;EGYPTIAN HIEROGLYPH-13563;Lo;0;L;;;;;N;;;;;
+13564;EGYPTIAN HIEROGLYPH-13564;Lo;0;L;;;;;N;;;;;
+13565;EGYPTIAN HIEROGLYPH-13565;Lo;0;L;;;;;N;;;;;
+13566;EGYPTIAN HIEROGLYPH-13566;Lo;0;L;;;;;N;;;;;
+13567;EGYPTIAN HIEROGLYPH-13567;Lo;0;L;;;;;N;;;;;
+13568;EGYPTIAN HIEROGLYPH-13568;Lo;0;L;;;;;N;;;;;
+13569;EGYPTIAN HIEROGLYPH-13569;Lo;0;L;;;;;N;;;;;
+1356A;EGYPTIAN HIEROGLYPH-1356A;Lo;0;L;;;;;N;;;;;
+1356B;EGYPTIAN HIEROGLYPH-1356B;Lo;0;L;;;;;N;;;;;
+1356C;EGYPTIAN HIEROGLYPH-1356C;Lo;0;L;;;;;N;;;;;
+1356D;EGYPTIAN HIEROGLYPH-1356D;Lo;0;L;;;;;N;;;;;
+1356E;EGYPTIAN HIEROGLYPH-1356E;Lo;0;L;;;;;N;;;;;
+1356F;EGYPTIAN HIEROGLYPH-1356F;Lo;0;L;;;;;N;;;;;
+13570;EGYPTIAN HIEROGLYPH-13570;Lo;0;L;;;;;N;;;;;
+13571;EGYPTIAN HIEROGLYPH-13571;Lo;0;L;;;;;N;;;;;
+13572;EGYPTIAN HIEROGLYPH-13572;Lo;0;L;;;;;N;;;;;
+13573;EGYPTIAN HIEROGLYPH-13573;Lo;0;L;;;;;N;;;;;
+13574;EGYPTIAN HIEROGLYPH-13574;Lo;0;L;;;;;N;;;;;
+13575;EGYPTIAN HIEROGLYPH-13575;Lo;0;L;;;;;N;;;;;
+13576;EGYPTIAN HIEROGLYPH-13576;Lo;0;L;;;;;N;;;;;
+13577;EGYPTIAN HIEROGLYPH-13577;Lo;0;L;;;;;N;;;;;
+13578;EGYPTIAN HIEROGLYPH-13578;Lo;0;L;;;;;N;;;;;
+13579;EGYPTIAN HIEROGLYPH-13579;Lo;0;L;;;;;N;;;;;
+1357A;EGYPTIAN HIEROGLYPH-1357A;Lo;0;L;;;;;N;;;;;
+1357B;EGYPTIAN HIEROGLYPH-1357B;Lo;0;L;;;;;N;;;;;
+1357C;EGYPTIAN HIEROGLYPH-1357C;Lo;0;L;;;;;N;;;;;
+1357D;EGYPTIAN HIEROGLYPH-1357D;Lo;0;L;;;;;N;;;;;
+1357E;EGYPTIAN HIEROGLYPH-1357E;Lo;0;L;;;;;N;;;;;
+1357F;EGYPTIAN HIEROGLYPH-1357F;Lo;0;L;;;;;N;;;;;
+13580;EGYPTIAN HIEROGLYPH-13580;Lo;0;L;;;;;N;;;;;
+13581;EGYPTIAN HIEROGLYPH-13581;Lo;0;L;;;;;N;;;;;
+13582;EGYPTIAN HIEROGLYPH-13582;Lo;0;L;;;;;N;;;;;
+13583;EGYPTIAN HIEROGLYPH-13583;Lo;0;L;;;;;N;;;;;
+13584;EGYPTIAN HIEROGLYPH-13584;Lo;0;L;;;;;N;;;;;
+13585;EGYPTIAN HIEROGLYPH-13585;Lo;0;L;;;;;N;;;;;
+13586;EGYPTIAN HIEROGLYPH-13586;Lo;0;L;;;;;N;;;;;
+13587;EGYPTIAN HIEROGLYPH-13587;Lo;0;L;;;;;N;;;;;
+13588;EGYPTIAN HIEROGLYPH-13588;Lo;0;L;;;;;N;;;;;
+13589;EGYPTIAN HIEROGLYPH-13589;Lo;0;L;;;;;N;;;;;
+1358A;EGYPTIAN HIEROGLYPH-1358A;Lo;0;L;;;;;N;;;;;
+1358B;EGYPTIAN HIEROGLYPH-1358B;Lo;0;L;;;;;N;;;;;
+1358C;EGYPTIAN HIEROGLYPH-1358C;Lo;0;L;;;;;N;;;;;
+1358D;EGYPTIAN HIEROGLYPH-1358D;Lo;0;L;;;;;N;;;;;
+1358E;EGYPTIAN HIEROGLYPH-1358E;Lo;0;L;;;;;N;;;;;
+1358F;EGYPTIAN HIEROGLYPH-1358F;Lo;0;L;;;;;N;;;;;
+13590;EGYPTIAN HIEROGLYPH-13590;Lo;0;L;;;;;N;;;;;
+13591;EGYPTIAN HIEROGLYPH-13591;Lo;0;L;;;;;N;;;;;
+13592;EGYPTIAN HIEROGLYPH-13592;Lo;0;L;;;;;N;;;;;
+13593;EGYPTIAN HIEROGLYPH-13593;Lo;0;L;;;;;N;;;;;
+13594;EGYPTIAN HIEROGLYPH-13594;Lo;0;L;;;;;N;;;;;
+13595;EGYPTIAN HIEROGLYPH-13595;Lo;0;L;;;;;N;;;;;
+13596;EGYPTIAN HIEROGLYPH-13596;Lo;0;L;;;;;N;;;;;
+13597;EGYPTIAN HIEROGLYPH-13597;Lo;0;L;;;;;N;;;;;
+13598;EGYPTIAN HIEROGLYPH-13598;Lo;0;L;;;;;N;;;;;
+13599;EGYPTIAN HIEROGLYPH-13599;Lo;0;L;;;;;N;;;;;
+1359A;EGYPTIAN HIEROGLYPH-1359A;Lo;0;L;;;;;N;;;;;
+1359B;EGYPTIAN HIEROGLYPH-1359B;Lo;0;L;;;;;N;;;;;
+1359C;EGYPTIAN HIEROGLYPH-1359C;Lo;0;L;;;;;N;;;;;
+1359D;EGYPTIAN HIEROGLYPH-1359D;Lo;0;L;;;;;N;;;;;
+1359E;EGYPTIAN HIEROGLYPH-1359E;Lo;0;L;;;;;N;;;;;
+1359F;EGYPTIAN HIEROGLYPH-1359F;Lo;0;L;;;;;N;;;;;
+135A0;EGYPTIAN HIEROGLYPH-135A0;Lo;0;L;;;;;N;;;;;
+135A1;EGYPTIAN HIEROGLYPH-135A1;Lo;0;L;;;;;N;;;;;
+135A2;EGYPTIAN HIEROGLYPH-135A2;Lo;0;L;;;;;N;;;;;
+135A3;EGYPTIAN HIEROGLYPH-135A3;Lo;0;L;;;;;N;;;;;
+135A4;EGYPTIAN HIEROGLYPH-135A4;Lo;0;L;;;;;N;;;;;
+135A5;EGYPTIAN HIEROGLYPH-135A5;Lo;0;L;;;;;N;;;;;
+135A6;EGYPTIAN HIEROGLYPH-135A6;Lo;0;L;;;;;N;;;;;
+135A7;EGYPTIAN HIEROGLYPH-135A7;Lo;0;L;;;;;N;;;;;
+135A8;EGYPTIAN HIEROGLYPH-135A8;Lo;0;L;;;;;N;;;;;
+135A9;EGYPTIAN HIEROGLYPH-135A9;Lo;0;L;;;;;N;;;;;
+135AA;EGYPTIAN HIEROGLYPH-135AA;Lo;0;L;;;;;N;;;;;
+135AB;EGYPTIAN HIEROGLYPH-135AB;Lo;0;L;;;;;N;;;;;
+135AC;EGYPTIAN HIEROGLYPH-135AC;Lo;0;L;;;;;N;;;;;
+135AD;EGYPTIAN HIEROGLYPH-135AD;Lo;0;L;;;;;N;;;;;
+135AE;EGYPTIAN HIEROGLYPH-135AE;Lo;0;L;;;;;N;;;;;
+135AF;EGYPTIAN HIEROGLYPH-135AF;Lo;0;L;;;;;N;;;;;
+135B0;EGYPTIAN HIEROGLYPH-135B0;Lo;0;L;;;;;N;;;;;
+135B1;EGYPTIAN HIEROGLYPH-135B1;Lo;0;L;;;;;N;;;;;
+135B2;EGYPTIAN HIEROGLYPH-135B2;Lo;0;L;;;;;N;;;;;
+135B3;EGYPTIAN HIEROGLYPH-135B3;Lo;0;L;;;;;N;;;;;
+135B4;EGYPTIAN HIEROGLYPH-135B4;Lo;0;L;;;;;N;;;;;
+135B5;EGYPTIAN HIEROGLYPH-135B5;Lo;0;L;;;;;N;;;;;
+135B6;EGYPTIAN HIEROGLYPH-135B6;Lo;0;L;;;;;N;;;;;
+135B7;EGYPTIAN HIEROGLYPH-135B7;Lo;0;L;;;;;N;;;;;
+135B8;EGYPTIAN HIEROGLYPH-135B8;Lo;0;L;;;;;N;;;;;
+135B9;EGYPTIAN HIEROGLYPH-135B9;Lo;0;L;;;;;N;;;;;
+135BA;EGYPTIAN HIEROGLYPH-135BA;Lo;0;L;;;;;N;;;;;
+135BB;EGYPTIAN HIEROGLYPH-135BB;Lo;0;L;;;;;N;;;;;
+135BC;EGYPTIAN HIEROGLYPH-135BC;Lo;0;L;;;;;N;;;;;
+135BD;EGYPTIAN HIEROGLYPH-135BD;Lo;0;L;;;;;N;;;;;
+135BE;EGYPTIAN HIEROGLYPH-135BE;Lo;0;L;;;;;N;;;;;
+135BF;EGYPTIAN HIEROGLYPH-135BF;Lo;0;L;;;;;N;;;;;
+135C0;EGYPTIAN HIEROGLYPH-135C0;Lo;0;L;;;;;N;;;;;
+135C1;EGYPTIAN HIEROGLYPH-135C1;Lo;0;L;;;;;N;;;;;
+135C2;EGYPTIAN HIEROGLYPH-135C2;Lo;0;L;;;;;N;;;;;
+135C3;EGYPTIAN HIEROGLYPH-135C3;Lo;0;L;;;;;N;;;;;
+135C4;EGYPTIAN HIEROGLYPH-135C4;Lo;0;L;;;;;N;;;;;
+135C5;EGYPTIAN HIEROGLYPH-135C5;Lo;0;L;;;;;N;;;;;
+135C6;EGYPTIAN HIEROGLYPH-135C6;Lo;0;L;;;;;N;;;;;
+135C7;EGYPTIAN HIEROGLYPH-135C7;Lo;0;L;;;;;N;;;;;
+135C8;EGYPTIAN HIEROGLYPH-135C8;Lo;0;L;;;;;N;;;;;
+135C9;EGYPTIAN HIEROGLYPH-135C9;Lo;0;L;;;;;N;;;;;
+135CA;EGYPTIAN HIEROGLYPH-135CA;Lo;0;L;;;;;N;;;;;
+135CB;EGYPTIAN HIEROGLYPH-135CB;Lo;0;L;;;;;N;;;;;
+135CC;EGYPTIAN HIEROGLYPH-135CC;Lo;0;L;;;;;N;;;;;
+135CD;EGYPTIAN HIEROGLYPH-135CD;Lo;0;L;;;;;N;;;;;
+135CE;EGYPTIAN HIEROGLYPH-135CE;Lo;0;L;;;;;N;;;;;
+135CF;EGYPTIAN HIEROGLYPH-135CF;Lo;0;L;;;;;N;;;;;
+135D0;EGYPTIAN HIEROGLYPH-135D0;Lo;0;L;;;;;N;;;;;
+135D1;EGYPTIAN HIEROGLYPH-135D1;Lo;0;L;;;;;N;;;;;
+135D2;EGYPTIAN HIEROGLYPH-135D2;Lo;0;L;;;;;N;;;;;
+135D3;EGYPTIAN HIEROGLYPH-135D3;Lo;0;L;;;;;N;;;;;
+135D4;EGYPTIAN HIEROGLYPH-135D4;Lo;0;L;;;;;N;;;;;
+135D5;EGYPTIAN HIEROGLYPH-135D5;Lo;0;L;;;;;N;;;;;
+135D6;EGYPTIAN HIEROGLYPH-135D6;Lo;0;L;;;;;N;;;;;
+135D7;EGYPTIAN HIEROGLYPH-135D7;Lo;0;L;;;;;N;;;;;
+135D8;EGYPTIAN HIEROGLYPH-135D8;Lo;0;L;;;;;N;;;;;
+135D9;EGYPTIAN HIEROGLYPH-135D9;Lo;0;L;;;;;N;;;;;
+135DA;EGYPTIAN HIEROGLYPH-135DA;Lo;0;L;;;;;N;;;;;
+135DB;EGYPTIAN HIEROGLYPH-135DB;Lo;0;L;;;;;N;;;;;
+135DC;EGYPTIAN HIEROGLYPH-135DC;Lo;0;L;;;;;N;;;;;
+135DD;EGYPTIAN HIEROGLYPH-135DD;Lo;0;L;;;;;N;;;;;
+135DE;EGYPTIAN HIEROGLYPH-135DE;Lo;0;L;;;;;N;;;;;
+135DF;EGYPTIAN HIEROGLYPH-135DF;Lo;0;L;;;;;N;;;;;
+135E0;EGYPTIAN HIEROGLYPH-135E0;Lo;0;L;;;;;N;;;;;
+135E1;EGYPTIAN HIEROGLYPH-135E1;Lo;0;L;;;;;N;;;;;
+135E2;EGYPTIAN HIEROGLYPH-135E2;Lo;0;L;;;;;N;;;;;
+135E3;EGYPTIAN HIEROGLYPH-135E3;Lo;0;L;;;;;N;;;;;
+135E4;EGYPTIAN HIEROGLYPH-135E4;Lo;0;L;;;;;N;;;;;
+135E5;EGYPTIAN HIEROGLYPH-135E5;Lo;0;L;;;;;N;;;;;
+135E6;EGYPTIAN HIEROGLYPH-135E6;Lo;0;L;;;;;N;;;;;
+135E7;EGYPTIAN HIEROGLYPH-135E7;Lo;0;L;;;;;N;;;;;
+135E8;EGYPTIAN HIEROGLYPH-135E8;Lo;0;L;;;;;N;;;;;
+135E9;EGYPTIAN HIEROGLYPH-135E9;Lo;0;L;;;;;N;;;;;
+135EA;EGYPTIAN HIEROGLYPH-135EA;Lo;0;L;;;;;N;;;;;
+135EB;EGYPTIAN HIEROGLYPH-135EB;Lo;0;L;;;;;N;;;;;
+135EC;EGYPTIAN HIEROGLYPH-135EC;Lo;0;L;;;;;N;;;;;
+135ED;EGYPTIAN HIEROGLYPH-135ED;Lo;0;L;;;;;N;;;;;
+135EE;EGYPTIAN HIEROGLYPH-135EE;Lo;0;L;;;;;N;;;;;
+135EF;EGYPTIAN HIEROGLYPH-135EF;Lo;0;L;;;;;N;;;;;
+135F0;EGYPTIAN HIEROGLYPH-135F0;Lo;0;L;;;;;N;;;;;
+135F1;EGYPTIAN HIEROGLYPH-135F1;Lo;0;L;;;;;N;;;;;
+135F2;EGYPTIAN HIEROGLYPH-135F2;Lo;0;L;;;;;N;;;;;
+135F3;EGYPTIAN HIEROGLYPH-135F3;Lo;0;L;;;;;N;;;;;
+135F4;EGYPTIAN HIEROGLYPH-135F4;Lo;0;L;;;;;N;;;;;
+135F5;EGYPTIAN HIEROGLYPH-135F5;Lo;0;L;;;;;N;;;;;
+135F6;EGYPTIAN HIEROGLYPH-135F6;Lo;0;L;;;;;N;;;;;
+135F7;EGYPTIAN HIEROGLYPH-135F7;Lo;0;L;;;;;N;;;;;
+135F8;EGYPTIAN HIEROGLYPH-135F8;Lo;0;L;;;;;N;;;;;
+135F9;EGYPTIAN HIEROGLYPH-135F9;Lo;0;L;;;;;N;;;;;
+135FA;EGYPTIAN HIEROGLYPH-135FA;Lo;0;L;;;;;N;;;;;
+135FB;EGYPTIAN HIEROGLYPH-135FB;Lo;0;L;;;;;N;;;;;
+135FC;EGYPTIAN HIEROGLYPH-135FC;Lo;0;L;;;;;N;;;;;
+135FD;EGYPTIAN HIEROGLYPH-135FD;Lo;0;L;;;;;N;;;;;
+135FE;EGYPTIAN HIEROGLYPH-135FE;Lo;0;L;;;;;N;;;;;
+135FF;EGYPTIAN HIEROGLYPH-135FF;Lo;0;L;;;;;N;;;;;
+13600;EGYPTIAN HIEROGLYPH-13600;Lo;0;L;;;;;N;;;;;
+13601;EGYPTIAN HIEROGLYPH-13601;Lo;0;L;;;;;N;;;;;
+13602;EGYPTIAN HIEROGLYPH-13602;Lo;0;L;;;;;N;;;;;
+13603;EGYPTIAN HIEROGLYPH-13603;Lo;0;L;;;;;N;;;;;
+13604;EGYPTIAN HIEROGLYPH-13604;Lo;0;L;;;;;N;;;;;
+13605;EGYPTIAN HIEROGLYPH-13605;Lo;0;L;;;;;N;;;;;
+13606;EGYPTIAN HIEROGLYPH-13606;Lo;0;L;;;;;N;;;;;
+13607;EGYPTIAN HIEROGLYPH-13607;Lo;0;L;;;;;N;;;;;
+13608;EGYPTIAN HIEROGLYPH-13608;Lo;0;L;;;;;N;;;;;
+13609;EGYPTIAN HIEROGLYPH-13609;Lo;0;L;;;;;N;;;;;
+1360A;EGYPTIAN HIEROGLYPH-1360A;Lo;0;L;;;;;N;;;;;
+1360B;EGYPTIAN HIEROGLYPH-1360B;Lo;0;L;;;;;N;;;;;
+1360C;EGYPTIAN HIEROGLYPH-1360C;Lo;0;L;;;;;N;;;;;
+1360D;EGYPTIAN HIEROGLYPH-1360D;Lo;0;L;;;;;N;;;;;
+1360E;EGYPTIAN HIEROGLYPH-1360E;Lo;0;L;;;;;N;;;;;
+1360F;EGYPTIAN HIEROGLYPH-1360F;Lo;0;L;;;;;N;;;;;
+13610;EGYPTIAN HIEROGLYPH-13610;Lo;0;L;;;;;N;;;;;
+13611;EGYPTIAN HIEROGLYPH-13611;Lo;0;L;;;;;N;;;;;
+13612;EGYPTIAN HIEROGLYPH-13612;Lo;0;L;;;;;N;;;;;
+13613;EGYPTIAN HIEROGLYPH-13613;Lo;0;L;;;;;N;;;;;
+13614;EGYPTIAN HIEROGLYPH-13614;Lo;0;L;;;;;N;;;;;
+13615;EGYPTIAN HIEROGLYPH-13615;Lo;0;L;;;;;N;;;;;
+13616;EGYPTIAN HIEROGLYPH-13616;Lo;0;L;;;;;N;;;;;
+13617;EGYPTIAN HIEROGLYPH-13617;Lo;0;L;;;;;N;;;;;
+13618;EGYPTIAN HIEROGLYPH-13618;Lo;0;L;;;;;N;;;;;
+13619;EGYPTIAN HIEROGLYPH-13619;Lo;0;L;;;;;N;;;;;
+1361A;EGYPTIAN HIEROGLYPH-1361A;Lo;0;L;;;;;N;;;;;
+1361B;EGYPTIAN HIEROGLYPH-1361B;Lo;0;L;;;;;N;;;;;
+1361C;EGYPTIAN HIEROGLYPH-1361C;Lo;0;L;;;;;N;;;;;
+1361D;EGYPTIAN HIEROGLYPH-1361D;Lo;0;L;;;;;N;;;;;
+1361E;EGYPTIAN HIEROGLYPH-1361E;Lo;0;L;;;;;N;;;;;
+1361F;EGYPTIAN HIEROGLYPH-1361F;Lo;0;L;;;;;N;;;;;
+13620;EGYPTIAN HIEROGLYPH-13620;Lo;0;L;;;;;N;;;;;
+13621;EGYPTIAN HIEROGLYPH-13621;Lo;0;L;;;;;N;;;;;
+13622;EGYPTIAN HIEROGLYPH-13622;Lo;0;L;;;;;N;;;;;
+13623;EGYPTIAN HIEROGLYPH-13623;Lo;0;L;;;;;N;;;;;
+13624;EGYPTIAN HIEROGLYPH-13624;Lo;0;L;;;;;N;;;;;
+13625;EGYPTIAN HIEROGLYPH-13625;Lo;0;L;;;;;N;;;;;
+13626;EGYPTIAN HIEROGLYPH-13626;Lo;0;L;;;;;N;;;;;
+13627;EGYPTIAN HIEROGLYPH-13627;Lo;0;L;;;;;N;;;;;
+13628;EGYPTIAN HIEROGLYPH-13628;Lo;0;L;;;;;N;;;;;
+13629;EGYPTIAN HIEROGLYPH-13629;Lo;0;L;;;;;N;;;;;
+1362A;EGYPTIAN HIEROGLYPH-1362A;Lo;0;L;;;;;N;;;;;
+1362B;EGYPTIAN HIEROGLYPH-1362B;Lo;0;L;;;;;N;;;;;
+1362C;EGYPTIAN HIEROGLYPH-1362C;Lo;0;L;;;;;N;;;;;
+1362D;EGYPTIAN HIEROGLYPH-1362D;Lo;0;L;;;;;N;;;;;
+1362E;EGYPTIAN HIEROGLYPH-1362E;Lo;0;L;;;;;N;;;;;
+1362F;EGYPTIAN HIEROGLYPH-1362F;Lo;0;L;;;;;N;;;;;
+13630;EGYPTIAN HIEROGLYPH-13630;Lo;0;L;;;;;N;;;;;
+13631;EGYPTIAN HIEROGLYPH-13631;Lo;0;L;;;;;N;;;;;
+13632;EGYPTIAN HIEROGLYPH-13632;Lo;0;L;;;;;N;;;;;
+13633;EGYPTIAN HIEROGLYPH-13633;Lo;0;L;;;;;N;;;;;
+13634;EGYPTIAN HIEROGLYPH-13634;Lo;0;L;;;;;N;;;;;
+13635;EGYPTIAN HIEROGLYPH-13635;Lo;0;L;;;;;N;;;;;
+13636;EGYPTIAN HIEROGLYPH-13636;Lo;0;L;;;;;N;;;;;
+13637;EGYPTIAN HIEROGLYPH-13637;Lo;0;L;;;;;N;;;;;
+13638;EGYPTIAN HIEROGLYPH-13638;Lo;0;L;;;;;N;;;;;
+13639;EGYPTIAN HIEROGLYPH-13639;Lo;0;L;;;;;N;;;;;
+1363A;EGYPTIAN HIEROGLYPH-1363A;Lo;0;L;;;;;N;;;;;
+1363B;EGYPTIAN HIEROGLYPH-1363B;Lo;0;L;;;;;N;;;;;
+1363C;EGYPTIAN HIEROGLYPH-1363C;Lo;0;L;;;;;N;;;;;
+1363D;EGYPTIAN HIEROGLYPH-1363D;Lo;0;L;;;;;N;;;;;
+1363E;EGYPTIAN HIEROGLYPH-1363E;Lo;0;L;;;;;N;;;;;
+1363F;EGYPTIAN HIEROGLYPH-1363F;Lo;0;L;;;;;N;;;;;
+13640;EGYPTIAN HIEROGLYPH-13640;Lo;0;L;;;;;N;;;;;
+13641;EGYPTIAN HIEROGLYPH-13641;Lo;0;L;;;;;N;;;;;
+13642;EGYPTIAN HIEROGLYPH-13642;Lo;0;L;;;;;N;;;;;
+13643;EGYPTIAN HIEROGLYPH-13643;Lo;0;L;;;;;N;;;;;
+13644;EGYPTIAN HIEROGLYPH-13644;Lo;0;L;;;;;N;;;;;
+13645;EGYPTIAN HIEROGLYPH-13645;Lo;0;L;;;;;N;;;;;
+13646;EGYPTIAN HIEROGLYPH-13646;Lo;0;L;;;;;N;;;;;
+13647;EGYPTIAN HIEROGLYPH-13647;Lo;0;L;;;;;N;;;;;
+13648;EGYPTIAN HIEROGLYPH-13648;Lo;0;L;;;;;N;;;;;
+13649;EGYPTIAN HIEROGLYPH-13649;Lo;0;L;;;;;N;;;;;
+1364A;EGYPTIAN HIEROGLYPH-1364A;Lo;0;L;;;;;N;;;;;
+1364B;EGYPTIAN HIEROGLYPH-1364B;Lo;0;L;;;;;N;;;;;
+1364C;EGYPTIAN HIEROGLYPH-1364C;Lo;0;L;;;;;N;;;;;
+1364D;EGYPTIAN HIEROGLYPH-1364D;Lo;0;L;;;;;N;;;;;
+1364E;EGYPTIAN HIEROGLYPH-1364E;Lo;0;L;;;;;N;;;;;
+1364F;EGYPTIAN HIEROGLYPH-1364F;Lo;0;L;;;;;N;;;;;
+13650;EGYPTIAN HIEROGLYPH-13650;Lo;0;L;;;;;N;;;;;
+13651;EGYPTIAN HIEROGLYPH-13651;Lo;0;L;;;;;N;;;;;
+13652;EGYPTIAN HIEROGLYPH-13652;Lo;0;L;;;;;N;;;;;
+13653;EGYPTIAN HIEROGLYPH-13653;Lo;0;L;;;;;N;;;;;
+13654;EGYPTIAN HIEROGLYPH-13654;Lo;0;L;;;;;N;;;;;
+13655;EGYPTIAN HIEROGLYPH-13655;Lo;0;L;;;;;N;;;;;
+13656;EGYPTIAN HIEROGLYPH-13656;Lo;0;L;;;;;N;;;;;
+13657;EGYPTIAN HIEROGLYPH-13657;Lo;0;L;;;;;N;;;;;
+13658;EGYPTIAN HIEROGLYPH-13658;Lo;0;L;;;;;N;;;;;
+13659;EGYPTIAN HIEROGLYPH-13659;Lo;0;L;;;;;N;;;;;
+1365A;EGYPTIAN HIEROGLYPH-1365A;Lo;0;L;;;;;N;;;;;
+1365B;EGYPTIAN HIEROGLYPH-1365B;Lo;0;L;;;;;N;;;;;
+1365C;EGYPTIAN HIEROGLYPH-1365C;Lo;0;L;;;;;N;;;;;
+1365D;EGYPTIAN HIEROGLYPH-1365D;Lo;0;L;;;;;N;;;;;
+1365E;EGYPTIAN HIEROGLYPH-1365E;Lo;0;L;;;;;N;;;;;
+1365F;EGYPTIAN HIEROGLYPH-1365F;Lo;0;L;;;;;N;;;;;
+13660;EGYPTIAN HIEROGLYPH-13660;Lo;0;L;;;;;N;;;;;
+13661;EGYPTIAN HIEROGLYPH-13661;Lo;0;L;;;;;N;;;;;
+13662;EGYPTIAN HIEROGLYPH-13662;Lo;0;L;;;;;N;;;;;
+13663;EGYPTIAN HIEROGLYPH-13663;Lo;0;L;;;;;N;;;;;
+13664;EGYPTIAN HIEROGLYPH-13664;Lo;0;L;;;;;N;;;;;
+13665;EGYPTIAN HIEROGLYPH-13665;Lo;0;L;;;;;N;;;;;
+13666;EGYPTIAN HIEROGLYPH-13666;Lo;0;L;;;;;N;;;;;
+13667;EGYPTIAN HIEROGLYPH-13667;Lo;0;L;;;;;N;;;;;
+13668;EGYPTIAN HIEROGLYPH-13668;Lo;0;L;;;;;N;;;;;
+13669;EGYPTIAN HIEROGLYPH-13669;Lo;0;L;;;;;N;;;;;
+1366A;EGYPTIAN HIEROGLYPH-1366A;Lo;0;L;;;;;N;;;;;
+1366B;EGYPTIAN HIEROGLYPH-1366B;Lo;0;L;;;;;N;;;;;
+1366C;EGYPTIAN HIEROGLYPH-1366C;Lo;0;L;;;;;N;;;;;
+1366D;EGYPTIAN HIEROGLYPH-1366D;Lo;0;L;;;;;N;;;;;
+1366E;EGYPTIAN HIEROGLYPH-1366E;Lo;0;L;;;;;N;;;;;
+1366F;EGYPTIAN HIEROGLYPH-1366F;Lo;0;L;;;;;N;;;;;
+13670;EGYPTIAN HIEROGLYPH-13670;Lo;0;L;;;;;N;;;;;
+13671;EGYPTIAN HIEROGLYPH-13671;Lo;0;L;;;;;N;;;;;
+13672;EGYPTIAN HIEROGLYPH-13672;Lo;0;L;;;;;N;;;;;
+13673;EGYPTIAN HIEROGLYPH-13673;Lo;0;L;;;;;N;;;;;
+13674;EGYPTIAN HIEROGLYPH-13674;Lo;0;L;;;;;N;;;;;
+13675;EGYPTIAN HIEROGLYPH-13675;Lo;0;L;;;;;N;;;;;
+13676;EGYPTIAN HIEROGLYPH-13676;Lo;0;L;;;;;N;;;;;
+13677;EGYPTIAN HIEROGLYPH-13677;Lo;0;L;;;;;N;;;;;
+13678;EGYPTIAN HIEROGLYPH-13678;Lo;0;L;;;;;N;;;;;
+13679;EGYPTIAN HIEROGLYPH-13679;Lo;0;L;;;;;N;;;;;
+1367A;EGYPTIAN HIEROGLYPH-1367A;Lo;0;L;;;;;N;;;;;
+1367B;EGYPTIAN HIEROGLYPH-1367B;Lo;0;L;;;;;N;;;;;
+1367C;EGYPTIAN HIEROGLYPH-1367C;Lo;0;L;;;;;N;;;;;
+1367D;EGYPTIAN HIEROGLYPH-1367D;Lo;0;L;;;;;N;;;;;
+1367E;EGYPTIAN HIEROGLYPH-1367E;Lo;0;L;;;;;N;;;;;
+1367F;EGYPTIAN HIEROGLYPH-1367F;Lo;0;L;;;;;N;;;;;
+13680;EGYPTIAN HIEROGLYPH-13680;Lo;0;L;;;;;N;;;;;
+13681;EGYPTIAN HIEROGLYPH-13681;Lo;0;L;;;;;N;;;;;
+13682;EGYPTIAN HIEROGLYPH-13682;Lo;0;L;;;;;N;;;;;
+13683;EGYPTIAN HIEROGLYPH-13683;Lo;0;L;;;;;N;;;;;
+13684;EGYPTIAN HIEROGLYPH-13684;Lo;0;L;;;;;N;;;;;
+13685;EGYPTIAN HIEROGLYPH-13685;Lo;0;L;;;;;N;;;;;
+13686;EGYPTIAN HIEROGLYPH-13686;Lo;0;L;;;;;N;;;;;
+13687;EGYPTIAN HIEROGLYPH-13687;Lo;0;L;;;;;N;;;;;
+13688;EGYPTIAN HIEROGLYPH-13688;Lo;0;L;;;;;N;;;;;
+13689;EGYPTIAN HIEROGLYPH-13689;Lo;0;L;;;;;N;;;;;
+1368A;EGYPTIAN HIEROGLYPH-1368A;Lo;0;L;;;;;N;;;;;
+1368B;EGYPTIAN HIEROGLYPH-1368B;Lo;0;L;;;;;N;;;;;
+1368C;EGYPTIAN HIEROGLYPH-1368C;Lo;0;L;;;;;N;;;;;
+1368D;EGYPTIAN HIEROGLYPH-1368D;Lo;0;L;;;;;N;;;;;
+1368E;EGYPTIAN HIEROGLYPH-1368E;Lo;0;L;;;;;N;;;;;
+1368F;EGYPTIAN HIEROGLYPH-1368F;Lo;0;L;;;;;N;;;;;
+13690;EGYPTIAN HIEROGLYPH-13690;Lo;0;L;;;;;N;;;;;
+13691;EGYPTIAN HIEROGLYPH-13691;Lo;0;L;;;;;N;;;;;
+13692;EGYPTIAN HIEROGLYPH-13692;Lo;0;L;;;;;N;;;;;
+13693;EGYPTIAN HIEROGLYPH-13693;Lo;0;L;;;;;N;;;;;
+13694;EGYPTIAN HIEROGLYPH-13694;Lo;0;L;;;;;N;;;;;
+13695;EGYPTIAN HIEROGLYPH-13695;Lo;0;L;;;;;N;;;;;
+13696;EGYPTIAN HIEROGLYPH-13696;Lo;0;L;;;;;N;;;;;
+13697;EGYPTIAN HIEROGLYPH-13697;Lo;0;L;;;;;N;;;;;
+13698;EGYPTIAN HIEROGLYPH-13698;Lo;0;L;;;;;N;;;;;
+13699;EGYPTIAN HIEROGLYPH-13699;Lo;0;L;;;;;N;;;;;
+1369A;EGYPTIAN HIEROGLYPH-1369A;Lo;0;L;;;;;N;;;;;
+1369B;EGYPTIAN HIEROGLYPH-1369B;Lo;0;L;;;;;N;;;;;
+1369C;EGYPTIAN HIEROGLYPH-1369C;Lo;0;L;;;;;N;;;;;
+1369D;EGYPTIAN HIEROGLYPH-1369D;Lo;0;L;;;;;N;;;;;
+1369E;EGYPTIAN HIEROGLYPH-1369E;Lo;0;L;;;;;N;;;;;
+1369F;EGYPTIAN HIEROGLYPH-1369F;Lo;0;L;;;;;N;;;;;
+136A0;EGYPTIAN HIEROGLYPH-136A0;Lo;0;L;;;;;N;;;;;
+136A1;EGYPTIAN HIEROGLYPH-136A1;Lo;0;L;;;;;N;;;;;
+136A2;EGYPTIAN HIEROGLYPH-136A2;Lo;0;L;;;;;N;;;;;
+136A3;EGYPTIAN HIEROGLYPH-136A3;Lo;0;L;;;;;N;;;;;
+136A4;EGYPTIAN HIEROGLYPH-136A4;Lo;0;L;;;;;N;;;;;
+136A5;EGYPTIAN HIEROGLYPH-136A5;Lo;0;L;;;;;N;;;;;
+136A6;EGYPTIAN HIEROGLYPH-136A6;Lo;0;L;;;;;N;;;;;
+136A7;EGYPTIAN HIEROGLYPH-136A7;Lo;0;L;;;;;N;;;;;
+136A8;EGYPTIAN HIEROGLYPH-136A8;Lo;0;L;;;;;N;;;;;
+136A9;EGYPTIAN HIEROGLYPH-136A9;Lo;0;L;;;;;N;;;;;
+136AA;EGYPTIAN HIEROGLYPH-136AA;Lo;0;L;;;;;N;;;;;
+136AB;EGYPTIAN HIEROGLYPH-136AB;Lo;0;L;;;;;N;;;;;
+136AC;EGYPTIAN HIEROGLYPH-136AC;Lo;0;L;;;;;N;;;;;
+136AD;EGYPTIAN HIEROGLYPH-136AD;Lo;0;L;;;;;N;;;;;
+136AE;EGYPTIAN HIEROGLYPH-136AE;Lo;0;L;;;;;N;;;;;
+136AF;EGYPTIAN HIEROGLYPH-136AF;Lo;0;L;;;;;N;;;;;
+136B0;EGYPTIAN HIEROGLYPH-136B0;Lo;0;L;;;;;N;;;;;
+136B1;EGYPTIAN HIEROGLYPH-136B1;Lo;0;L;;;;;N;;;;;
+136B2;EGYPTIAN HIEROGLYPH-136B2;Lo;0;L;;;;;N;;;;;
+136B3;EGYPTIAN HIEROGLYPH-136B3;Lo;0;L;;;;;N;;;;;
+136B4;EGYPTIAN HIEROGLYPH-136B4;Lo;0;L;;;;;N;;;;;
+136B5;EGYPTIAN HIEROGLYPH-136B5;Lo;0;L;;;;;N;;;;;
+136B6;EGYPTIAN HIEROGLYPH-136B6;Lo;0;L;;;;;N;;;;;
+136B7;EGYPTIAN HIEROGLYPH-136B7;Lo;0;L;;;;;N;;;;;
+136B8;EGYPTIAN HIEROGLYPH-136B8;Lo;0;L;;;;;N;;;;;
+136B9;EGYPTIAN HIEROGLYPH-136B9;Lo;0;L;;;;;N;;;;;
+136BA;EGYPTIAN HIEROGLYPH-136BA;Lo;0;L;;;;;N;;;;;
+136BB;EGYPTIAN HIEROGLYPH-136BB;Lo;0;L;;;;;N;;;;;
+136BC;EGYPTIAN HIEROGLYPH-136BC;Lo;0;L;;;;;N;;;;;
+136BD;EGYPTIAN HIEROGLYPH-136BD;Lo;0;L;;;;;N;;;;;
+136BE;EGYPTIAN HIEROGLYPH-136BE;Lo;0;L;;;;;N;;;;;
+136BF;EGYPTIAN HIEROGLYPH-136BF;Lo;0;L;;;;;N;;;;;
+136C0;EGYPTIAN HIEROGLYPH-136C0;Lo;0;L;;;;;N;;;;;
+136C1;EGYPTIAN HIEROGLYPH-136C1;Lo;0;L;;;;;N;;;;;
+136C2;EGYPTIAN HIEROGLYPH-136C2;Lo;0;L;;;;;N;;;;;
+136C3;EGYPTIAN HIEROGLYPH-136C3;Lo;0;L;;;;;N;;;;;
+136C4;EGYPTIAN HIEROGLYPH-136C4;Lo;0;L;;;;;N;;;;;
+136C5;EGYPTIAN HIEROGLYPH-136C5;Lo;0;L;;;;;N;;;;;
+136C6;EGYPTIAN HIEROGLYPH-136C6;Lo;0;L;;;;;N;;;;;
+136C7;EGYPTIAN HIEROGLYPH-136C7;Lo;0;L;;;;;N;;;;;
+136C8;EGYPTIAN HIEROGLYPH-136C8;Lo;0;L;;;;;N;;;;;
+136C9;EGYPTIAN HIEROGLYPH-136C9;Lo;0;L;;;;;N;;;;;
+136CA;EGYPTIAN HIEROGLYPH-136CA;Lo;0;L;;;;;N;;;;;
+136CB;EGYPTIAN HIEROGLYPH-136CB;Lo;0;L;;;;;N;;;;;
+136CC;EGYPTIAN HIEROGLYPH-136CC;Lo;0;L;;;;;N;;;;;
+136CD;EGYPTIAN HIEROGLYPH-136CD;Lo;0;L;;;;;N;;;;;
+136CE;EGYPTIAN HIEROGLYPH-136CE;Lo;0;L;;;;;N;;;;;
+136CF;EGYPTIAN HIEROGLYPH-136CF;Lo;0;L;;;;;N;;;;;
+136D0;EGYPTIAN HIEROGLYPH-136D0;Lo;0;L;;;;;N;;;;;
+136D1;EGYPTIAN HIEROGLYPH-136D1;Lo;0;L;;;;;N;;;;;
+136D2;EGYPTIAN HIEROGLYPH-136D2;Lo;0;L;;;;;N;;;;;
+136D3;EGYPTIAN HIEROGLYPH-136D3;Lo;0;L;;;;;N;;;;;
+136D4;EGYPTIAN HIEROGLYPH-136D4;Lo;0;L;;;;;N;;;;;
+136D5;EGYPTIAN HIEROGLYPH-136D5;Lo;0;L;;;;;N;;;;;
+136D6;EGYPTIAN HIEROGLYPH-136D6;Lo;0;L;;;;;N;;;;;
+136D7;EGYPTIAN HIEROGLYPH-136D7;Lo;0;L;;;;;N;;;;;
+136D8;EGYPTIAN HIEROGLYPH-136D8;Lo;0;L;;;;;N;;;;;
+136D9;EGYPTIAN HIEROGLYPH-136D9;Lo;0;L;;;;;N;;;;;
+136DA;EGYPTIAN HIEROGLYPH-136DA;Lo;0;L;;;;;N;;;;;
+136DB;EGYPTIAN HIEROGLYPH-136DB;Lo;0;L;;;;;N;;;;;
+136DC;EGYPTIAN HIEROGLYPH-136DC;Lo;0;L;;;;;N;;;;;
+136DD;EGYPTIAN HIEROGLYPH-136DD;Lo;0;L;;;;;N;;;;;
+136DE;EGYPTIAN HIEROGLYPH-136DE;Lo;0;L;;;;;N;;;;;
+136DF;EGYPTIAN HIEROGLYPH-136DF;Lo;0;L;;;;;N;;;;;
+136E0;EGYPTIAN HIEROGLYPH-136E0;Lo;0;L;;;;;N;;;;;
+136E1;EGYPTIAN HIEROGLYPH-136E1;Lo;0;L;;;;;N;;;;;
+136E2;EGYPTIAN HIEROGLYPH-136E2;Lo;0;L;;;;;N;;;;;
+136E3;EGYPTIAN HIEROGLYPH-136E3;Lo;0;L;;;;;N;;;;;
+136E4;EGYPTIAN HIEROGLYPH-136E4;Lo;0;L;;;;;N;;;;;
+136E5;EGYPTIAN HIEROGLYPH-136E5;Lo;0;L;;;;;N;;;;;
+136E6;EGYPTIAN HIEROGLYPH-136E6;Lo;0;L;;;;;N;;;;;
+136E7;EGYPTIAN HIEROGLYPH-136E7;Lo;0;L;;;;;N;;;;;
+136E8;EGYPTIAN HIEROGLYPH-136E8;Lo;0;L;;;;;N;;;;;
+136E9;EGYPTIAN HIEROGLYPH-136E9;Lo;0;L;;;;;N;;;;;
+136EA;EGYPTIAN HIEROGLYPH-136EA;Lo;0;L;;;;;N;;;;;
+136EB;EGYPTIAN HIEROGLYPH-136EB;Lo;0;L;;;;;N;;;;;
+136EC;EGYPTIAN HIEROGLYPH-136EC;Lo;0;L;;;;;N;;;;;
+136ED;EGYPTIAN HIEROGLYPH-136ED;Lo;0;L;;;;;N;;;;;
+136EE;EGYPTIAN HIEROGLYPH-136EE;Lo;0;L;;;;;N;;;;;
+136EF;EGYPTIAN HIEROGLYPH-136EF;Lo;0;L;;;;;N;;;;;
+136F0;EGYPTIAN HIEROGLYPH-136F0;Lo;0;L;;;;;N;;;;;
+136F1;EGYPTIAN HIEROGLYPH-136F1;Lo;0;L;;;;;N;;;;;
+136F2;EGYPTIAN HIEROGLYPH-136F2;Lo;0;L;;;;;N;;;;;
+136F3;EGYPTIAN HIEROGLYPH-136F3;Lo;0;L;;;;;N;;;;;
+136F4;EGYPTIAN HIEROGLYPH-136F4;Lo;0;L;;;;;N;;;;;
+136F5;EGYPTIAN HIEROGLYPH-136F5;Lo;0;L;;;;;N;;;;;
+136F6;EGYPTIAN HIEROGLYPH-136F6;Lo;0;L;;;;;N;;;;;
+136F7;EGYPTIAN HIEROGLYPH-136F7;Lo;0;L;;;;;N;;;;;
+136F8;EGYPTIAN HIEROGLYPH-136F8;Lo;0;L;;;;;N;;;;;
+136F9;EGYPTIAN HIEROGLYPH-136F9;Lo;0;L;;;;;N;;;;;
+136FA;EGYPTIAN HIEROGLYPH-136FA;Lo;0;L;;;;;N;;;;;
+136FB;EGYPTIAN HIEROGLYPH-136FB;Lo;0;L;;;;;N;;;;;
+136FC;EGYPTIAN HIEROGLYPH-136FC;Lo;0;L;;;;;N;;;;;
+136FD;EGYPTIAN HIEROGLYPH-136FD;Lo;0;L;;;;;N;;;;;
+136FE;EGYPTIAN HIEROGLYPH-136FE;Lo;0;L;;;;;N;;;;;
+136FF;EGYPTIAN HIEROGLYPH-136FF;Lo;0;L;;;;;N;;;;;
+13700;EGYPTIAN HIEROGLYPH-13700;Lo;0;L;;;;;N;;;;;
+13701;EGYPTIAN HIEROGLYPH-13701;Lo;0;L;;;;;N;;;;;
+13702;EGYPTIAN HIEROGLYPH-13702;Lo;0;L;;;;;N;;;;;
+13703;EGYPTIAN HIEROGLYPH-13703;Lo;0;L;;;;;N;;;;;
+13704;EGYPTIAN HIEROGLYPH-13704;Lo;0;L;;;;;N;;;;;
+13705;EGYPTIAN HIEROGLYPH-13705;Lo;0;L;;;;;N;;;;;
+13706;EGYPTIAN HIEROGLYPH-13706;Lo;0;L;;;;;N;;;;;
+13707;EGYPTIAN HIEROGLYPH-13707;Lo;0;L;;;;;N;;;;;
+13708;EGYPTIAN HIEROGLYPH-13708;Lo;0;L;;;;;N;;;;;
+13709;EGYPTIAN HIEROGLYPH-13709;Lo;0;L;;;;;N;;;;;
+1370A;EGYPTIAN HIEROGLYPH-1370A;Lo;0;L;;;;;N;;;;;
+1370B;EGYPTIAN HIEROGLYPH-1370B;Lo;0;L;;;;;N;;;;;
+1370C;EGYPTIAN HIEROGLYPH-1370C;Lo;0;L;;;;;N;;;;;
+1370D;EGYPTIAN HIEROGLYPH-1370D;Lo;0;L;;;;;N;;;;;
+1370E;EGYPTIAN HIEROGLYPH-1370E;Lo;0;L;;;;;N;;;;;
+1370F;EGYPTIAN HIEROGLYPH-1370F;Lo;0;L;;;;;N;;;;;
+13710;EGYPTIAN HIEROGLYPH-13710;Lo;0;L;;;;;N;;;;;
+13711;EGYPTIAN HIEROGLYPH-13711;Lo;0;L;;;;;N;;;;;
+13712;EGYPTIAN HIEROGLYPH-13712;Lo;0;L;;;;;N;;;;;
+13713;EGYPTIAN HIEROGLYPH-13713;Lo;0;L;;;;;N;;;;;
+13714;EGYPTIAN HIEROGLYPH-13714;Lo;0;L;;;;;N;;;;;
+13715;EGYPTIAN HIEROGLYPH-13715;Lo;0;L;;;;;N;;;;;
+13716;EGYPTIAN HIEROGLYPH-13716;Lo;0;L;;;;;N;;;;;
+13717;EGYPTIAN HIEROGLYPH-13717;Lo;0;L;;;;;N;;;;;
+13718;EGYPTIAN HIEROGLYPH-13718;Lo;0;L;;;;;N;;;;;
+13719;EGYPTIAN HIEROGLYPH-13719;Lo;0;L;;;;;N;;;;;
+1371A;EGYPTIAN HIEROGLYPH-1371A;Lo;0;L;;;;;N;;;;;
+1371B;EGYPTIAN HIEROGLYPH-1371B;Lo;0;L;;;;;N;;;;;
+1371C;EGYPTIAN HIEROGLYPH-1371C;Lo;0;L;;;;;N;;;;;
+1371D;EGYPTIAN HIEROGLYPH-1371D;Lo;0;L;;;;;N;;;;;
+1371E;EGYPTIAN HIEROGLYPH-1371E;Lo;0;L;;;;;N;;;;;
+1371F;EGYPTIAN HIEROGLYPH-1371F;Lo;0;L;;;;;N;;;;;
+13720;EGYPTIAN HIEROGLYPH-13720;Lo;0;L;;;;;N;;;;;
+13721;EGYPTIAN HIEROGLYPH-13721;Lo;0;L;;;;;N;;;;;
+13722;EGYPTIAN HIEROGLYPH-13722;Lo;0;L;;;;;N;;;;;
+13723;EGYPTIAN HIEROGLYPH-13723;Lo;0;L;;;;;N;;;;;
+13724;EGYPTIAN HIEROGLYPH-13724;Lo;0;L;;;;;N;;;;;
+13725;EGYPTIAN HIEROGLYPH-13725;Lo;0;L;;;;;N;;;;;
+13726;EGYPTIAN HIEROGLYPH-13726;Lo;0;L;;;;;N;;;;;
+13727;EGYPTIAN HIEROGLYPH-13727;Lo;0;L;;;;;N;;;;;
+13728;EGYPTIAN HIEROGLYPH-13728;Lo;0;L;;;;;N;;;;;
+13729;EGYPTIAN HIEROGLYPH-13729;Lo;0;L;;;;;N;;;;;
+1372A;EGYPTIAN HIEROGLYPH-1372A;Lo;0;L;;;;;N;;;;;
+1372B;EGYPTIAN HIEROGLYPH-1372B;Lo;0;L;;;;;N;;;;;
+1372C;EGYPTIAN HIEROGLYPH-1372C;Lo;0;L;;;;;N;;;;;
+1372D;EGYPTIAN HIEROGLYPH-1372D;Lo;0;L;;;;;N;;;;;
+1372E;EGYPTIAN HIEROGLYPH-1372E;Lo;0;L;;;;;N;;;;;
+1372F;EGYPTIAN HIEROGLYPH-1372F;Lo;0;L;;;;;N;;;;;
+13730;EGYPTIAN HIEROGLYPH-13730;Lo;0;L;;;;;N;;;;;
+13731;EGYPTIAN HIEROGLYPH-13731;Lo;0;L;;;;;N;;;;;
+13732;EGYPTIAN HIEROGLYPH-13732;Lo;0;L;;;;;N;;;;;
+13733;EGYPTIAN HIEROGLYPH-13733;Lo;0;L;;;;;N;;;;;
+13734;EGYPTIAN HIEROGLYPH-13734;Lo;0;L;;;;;N;;;;;
+13735;EGYPTIAN HIEROGLYPH-13735;Lo;0;L;;;;;N;;;;;
+13736;EGYPTIAN HIEROGLYPH-13736;Lo;0;L;;;;;N;;;;;
+13737;EGYPTIAN HIEROGLYPH-13737;Lo;0;L;;;;;N;;;;;
+13738;EGYPTIAN HIEROGLYPH-13738;Lo;0;L;;;;;N;;;;;
+13739;EGYPTIAN HIEROGLYPH-13739;Lo;0;L;;;;;N;;;;;
+1373A;EGYPTIAN HIEROGLYPH-1373A;Lo;0;L;;;;;N;;;;;
+1373B;EGYPTIAN HIEROGLYPH-1373B;Lo;0;L;;;;;N;;;;;
+1373C;EGYPTIAN HIEROGLYPH-1373C;Lo;0;L;;;;;N;;;;;
+1373D;EGYPTIAN HIEROGLYPH-1373D;Lo;0;L;;;;;N;;;;;
+1373E;EGYPTIAN HIEROGLYPH-1373E;Lo;0;L;;;;;N;;;;;
+1373F;EGYPTIAN HIEROGLYPH-1373F;Lo;0;L;;;;;N;;;;;
+13740;EGYPTIAN HIEROGLYPH-13740;Lo;0;L;;;;;N;;;;;
+13741;EGYPTIAN HIEROGLYPH-13741;Lo;0;L;;;;;N;;;;;
+13742;EGYPTIAN HIEROGLYPH-13742;Lo;0;L;;;;;N;;;;;
+13743;EGYPTIAN HIEROGLYPH-13743;Lo;0;L;;;;;N;;;;;
+13744;EGYPTIAN HIEROGLYPH-13744;Lo;0;L;;;;;N;;;;;
+13745;EGYPTIAN HIEROGLYPH-13745;Lo;0;L;;;;;N;;;;;
+13746;EGYPTIAN HIEROGLYPH-13746;Lo;0;L;;;;;N;;;;;
+13747;EGYPTIAN HIEROGLYPH-13747;Lo;0;L;;;;;N;;;;;
+13748;EGYPTIAN HIEROGLYPH-13748;Lo;0;L;;;;;N;;;;;
+13749;EGYPTIAN HIEROGLYPH-13749;Lo;0;L;;;;;N;;;;;
+1374A;EGYPTIAN HIEROGLYPH-1374A;Lo;0;L;;;;;N;;;;;
+1374B;EGYPTIAN HIEROGLYPH-1374B;Lo;0;L;;;;;N;;;;;
+1374C;EGYPTIAN HIEROGLYPH-1374C;Lo;0;L;;;;;N;;;;;
+1374D;EGYPTIAN HIEROGLYPH-1374D;Lo;0;L;;;;;N;;;;;
+1374E;EGYPTIAN HIEROGLYPH-1374E;Lo;0;L;;;;;N;;;;;
+1374F;EGYPTIAN HIEROGLYPH-1374F;Lo;0;L;;;;;N;;;;;
+13750;EGYPTIAN HIEROGLYPH-13750;Lo;0;L;;;;;N;;;;;
+13751;EGYPTIAN HIEROGLYPH-13751;Lo;0;L;;;;;N;;;;;
+13752;EGYPTIAN HIEROGLYPH-13752;Lo;0;L;;;;;N;;;;;
+13753;EGYPTIAN HIEROGLYPH-13753;Lo;0;L;;;;;N;;;;;
+13754;EGYPTIAN HIEROGLYPH-13754;Lo;0;L;;;;;N;;;;;
+13755;EGYPTIAN HIEROGLYPH-13755;Lo;0;L;;;;;N;;;;;
+13756;EGYPTIAN HIEROGLYPH-13756;Lo;0;L;;;;;N;;;;;
+13757;EGYPTIAN HIEROGLYPH-13757;Lo;0;L;;;;;N;;;;;
+13758;EGYPTIAN HIEROGLYPH-13758;Lo;0;L;;;;;N;;;;;
+13759;EGYPTIAN HIEROGLYPH-13759;Lo;0;L;;;;;N;;;;;
+1375A;EGYPTIAN HIEROGLYPH-1375A;Lo;0;L;;;;;N;;;;;
+1375B;EGYPTIAN HIEROGLYPH-1375B;Lo;0;L;;;;;N;;;;;
+1375C;EGYPTIAN HIEROGLYPH-1375C;Lo;0;L;;;;;N;;;;;
+1375D;EGYPTIAN HIEROGLYPH-1375D;Lo;0;L;;;;;N;;;;;
+1375E;EGYPTIAN HIEROGLYPH-1375E;Lo;0;L;;;;;N;;;;;
+1375F;EGYPTIAN HIEROGLYPH-1375F;Lo;0;L;;;;;N;;;;;
+13760;EGYPTIAN HIEROGLYPH-13760;Lo;0;L;;;;;N;;;;;
+13761;EGYPTIAN HIEROGLYPH-13761;Lo;0;L;;;;;N;;;;;
+13762;EGYPTIAN HIEROGLYPH-13762;Lo;0;L;;;;;N;;;;;
+13763;EGYPTIAN HIEROGLYPH-13763;Lo;0;L;;;;;N;;;;;
+13764;EGYPTIAN HIEROGLYPH-13764;Lo;0;L;;;;;N;;;;;
+13765;EGYPTIAN HIEROGLYPH-13765;Lo;0;L;;;;;N;;;;;
+13766;EGYPTIAN HIEROGLYPH-13766;Lo;0;L;;;;;N;;;;;
+13767;EGYPTIAN HIEROGLYPH-13767;Lo;0;L;;;;;N;;;;;
+13768;EGYPTIAN HIEROGLYPH-13768;Lo;0;L;;;;;N;;;;;
+13769;EGYPTIAN HIEROGLYPH-13769;Lo;0;L;;;;;N;;;;;
+1376A;EGYPTIAN HIEROGLYPH-1376A;Lo;0;L;;;;;N;;;;;
+1376B;EGYPTIAN HIEROGLYPH-1376B;Lo;0;L;;;;;N;;;;;
+1376C;EGYPTIAN HIEROGLYPH-1376C;Lo;0;L;;;;;N;;;;;
+1376D;EGYPTIAN HIEROGLYPH-1376D;Lo;0;L;;;;;N;;;;;
+1376E;EGYPTIAN HIEROGLYPH-1376E;Lo;0;L;;;;;N;;;;;
+1376F;EGYPTIAN HIEROGLYPH-1376F;Lo;0;L;;;;;N;;;;;
+13770;EGYPTIAN HIEROGLYPH-13770;Lo;0;L;;;;;N;;;;;
+13771;EGYPTIAN HIEROGLYPH-13771;Lo;0;L;;;;;N;;;;;
+13772;EGYPTIAN HIEROGLYPH-13772;Lo;0;L;;;;;N;;;;;
+13773;EGYPTIAN HIEROGLYPH-13773;Lo;0;L;;;;;N;;;;;
+13774;EGYPTIAN HIEROGLYPH-13774;Lo;0;L;;;;;N;;;;;
+13775;EGYPTIAN HIEROGLYPH-13775;Lo;0;L;;;;;N;;;;;
+13776;EGYPTIAN HIEROGLYPH-13776;Lo;0;L;;;;;N;;;;;
+13777;EGYPTIAN HIEROGLYPH-13777;Lo;0;L;;;;;N;;;;;
+13778;EGYPTIAN HIEROGLYPH-13778;Lo;0;L;;;;;N;;;;;
+13779;EGYPTIAN HIEROGLYPH-13779;Lo;0;L;;;;;N;;;;;
+1377A;EGYPTIAN HIEROGLYPH-1377A;Lo;0;L;;;;;N;;;;;
+1377B;EGYPTIAN HIEROGLYPH-1377B;Lo;0;L;;;;;N;;;;;
+1377C;EGYPTIAN HIEROGLYPH-1377C;Lo;0;L;;;;;N;;;;;
+1377D;EGYPTIAN HIEROGLYPH-1377D;Lo;0;L;;;;;N;;;;;
+1377E;EGYPTIAN HIEROGLYPH-1377E;Lo;0;L;;;;;N;;;;;
+1377F;EGYPTIAN HIEROGLYPH-1377F;Lo;0;L;;;;;N;;;;;
+13780;EGYPTIAN HIEROGLYPH-13780;Lo;0;L;;;;;N;;;;;
+13781;EGYPTIAN HIEROGLYPH-13781;Lo;0;L;;;;;N;;;;;
+13782;EGYPTIAN HIEROGLYPH-13782;Lo;0;L;;;;;N;;;;;
+13783;EGYPTIAN HIEROGLYPH-13783;Lo;0;L;;;;;N;;;;;
+13784;EGYPTIAN HIEROGLYPH-13784;Lo;0;L;;;;;N;;;;;
+13785;EGYPTIAN HIEROGLYPH-13785;Lo;0;L;;;;;N;;;;;
+13786;EGYPTIAN HIEROGLYPH-13786;Lo;0;L;;;;;N;;;;;
+13787;EGYPTIAN HIEROGLYPH-13787;Lo;0;L;;;;;N;;;;;
+13788;EGYPTIAN HIEROGLYPH-13788;Lo;0;L;;;;;N;;;;;
+13789;EGYPTIAN HIEROGLYPH-13789;Lo;0;L;;;;;N;;;;;
+1378A;EGYPTIAN HIEROGLYPH-1378A;Lo;0;L;;;;;N;;;;;
+1378B;EGYPTIAN HIEROGLYPH-1378B;Lo;0;L;;;;;N;;;;;
+1378C;EGYPTIAN HIEROGLYPH-1378C;Lo;0;L;;;;;N;;;;;
+1378D;EGYPTIAN HIEROGLYPH-1378D;Lo;0;L;;;;;N;;;;;
+1378E;EGYPTIAN HIEROGLYPH-1378E;Lo;0;L;;;;;N;;;;;
+1378F;EGYPTIAN HIEROGLYPH-1378F;Lo;0;L;;;;;N;;;;;
+13790;EGYPTIAN HIEROGLYPH-13790;Lo;0;L;;;;;N;;;;;
+13791;EGYPTIAN HIEROGLYPH-13791;Lo;0;L;;;;;N;;;;;
+13792;EGYPTIAN HIEROGLYPH-13792;Lo;0;L;;;;;N;;;;;
+13793;EGYPTIAN HIEROGLYPH-13793;Lo;0;L;;;;;N;;;;;
+13794;EGYPTIAN HIEROGLYPH-13794;Lo;0;L;;;;;N;;;;;
+13795;EGYPTIAN HIEROGLYPH-13795;Lo;0;L;;;;;N;;;;;
+13796;EGYPTIAN HIEROGLYPH-13796;Lo;0;L;;;;;N;;;;;
+13797;EGYPTIAN HIEROGLYPH-13797;Lo;0;L;;;;;N;;;;;
+13798;EGYPTIAN HIEROGLYPH-13798;Lo;0;L;;;;;N;;;;;
+13799;EGYPTIAN HIEROGLYPH-13799;Lo;0;L;;;;;N;;;;;
+1379A;EGYPTIAN HIEROGLYPH-1379A;Lo;0;L;;;;;N;;;;;
+1379B;EGYPTIAN HIEROGLYPH-1379B;Lo;0;L;;;;;N;;;;;
+1379C;EGYPTIAN HIEROGLYPH-1379C;Lo;0;L;;;;;N;;;;;
+1379D;EGYPTIAN HIEROGLYPH-1379D;Lo;0;L;;;;;N;;;;;
+1379E;EGYPTIAN HIEROGLYPH-1379E;Lo;0;L;;;;;N;;;;;
+1379F;EGYPTIAN HIEROGLYPH-1379F;Lo;0;L;;;;;N;;;;;
+137A0;EGYPTIAN HIEROGLYPH-137A0;Lo;0;L;;;;;N;;;;;
+137A1;EGYPTIAN HIEROGLYPH-137A1;Lo;0;L;;;;;N;;;;;
+137A2;EGYPTIAN HIEROGLYPH-137A2;Lo;0;L;;;;;N;;;;;
+137A3;EGYPTIAN HIEROGLYPH-137A3;Lo;0;L;;;;;N;;;;;
+137A4;EGYPTIAN HIEROGLYPH-137A4;Lo;0;L;;;;;N;;;;;
+137A5;EGYPTIAN HIEROGLYPH-137A5;Lo;0;L;;;;;N;;;;;
+137A6;EGYPTIAN HIEROGLYPH-137A6;Lo;0;L;;;;;N;;;;;
+137A7;EGYPTIAN HIEROGLYPH-137A7;Lo;0;L;;;;;N;;;;;
+137A8;EGYPTIAN HIEROGLYPH-137A8;Lo;0;L;;;;;N;;;;;
+137A9;EGYPTIAN HIEROGLYPH-137A9;Lo;0;L;;;;;N;;;;;
+137AA;EGYPTIAN HIEROGLYPH-137AA;Lo;0;L;;;;;N;;;;;
+137AB;EGYPTIAN HIEROGLYPH-137AB;Lo;0;L;;;;;N;;;;;
+137AC;EGYPTIAN HIEROGLYPH-137AC;Lo;0;L;;;;;N;;;;;
+137AD;EGYPTIAN HIEROGLYPH-137AD;Lo;0;L;;;;;N;;;;;
+137AE;EGYPTIAN HIEROGLYPH-137AE;Lo;0;L;;;;;N;;;;;
+137AF;EGYPTIAN HIEROGLYPH-137AF;Lo;0;L;;;;;N;;;;;
+137B0;EGYPTIAN HIEROGLYPH-137B0;Lo;0;L;;;;;N;;;;;
+137B1;EGYPTIAN HIEROGLYPH-137B1;Lo;0;L;;;;;N;;;;;
+137B2;EGYPTIAN HIEROGLYPH-137B2;Lo;0;L;;;;;N;;;;;
+137B3;EGYPTIAN HIEROGLYPH-137B3;Lo;0;L;;;;;N;;;;;
+137B4;EGYPTIAN HIEROGLYPH-137B4;Lo;0;L;;;;;N;;;;;
+137B5;EGYPTIAN HIEROGLYPH-137B5;Lo;0;L;;;;;N;;;;;
+137B6;EGYPTIAN HIEROGLYPH-137B6;Lo;0;L;;;;;N;;;;;
+137B7;EGYPTIAN HIEROGLYPH-137B7;Lo;0;L;;;;;N;;;;;
+137B8;EGYPTIAN HIEROGLYPH-137B8;Lo;0;L;;;;;N;;;;;
+137B9;EGYPTIAN HIEROGLYPH-137B9;Lo;0;L;;;;;N;;;;;
+137BA;EGYPTIAN HIEROGLYPH-137BA;Lo;0;L;;;;;N;;;;;
+137BB;EGYPTIAN HIEROGLYPH-137BB;Lo;0;L;;;;;N;;;;;
+137BC;EGYPTIAN HIEROGLYPH-137BC;Lo;0;L;;;;;N;;;;;
+137BD;EGYPTIAN HIEROGLYPH-137BD;Lo;0;L;;;;;N;;;;;
+137BE;EGYPTIAN HIEROGLYPH-137BE;Lo;0;L;;;;;N;;;;;
+137BF;EGYPTIAN HIEROGLYPH-137BF;Lo;0;L;;;;;N;;;;;
+137C0;EGYPTIAN HIEROGLYPH-137C0;Lo;0;L;;;;;N;;;;;
+137C1;EGYPTIAN HIEROGLYPH-137C1;Lo;0;L;;;;;N;;;;;
+137C2;EGYPTIAN HIEROGLYPH-137C2;Lo;0;L;;;;;N;;;;;
+137C3;EGYPTIAN HIEROGLYPH-137C3;Lo;0;L;;;;;N;;;;;
+137C4;EGYPTIAN HIEROGLYPH-137C4;Lo;0;L;;;;;N;;;;;
+137C5;EGYPTIAN HIEROGLYPH-137C5;Lo;0;L;;;;;N;;;;;
+137C6;EGYPTIAN HIEROGLYPH-137C6;Lo;0;L;;;;;N;;;;;
+137C7;EGYPTIAN HIEROGLYPH-137C7;Lo;0;L;;;;;N;;;;;
+137C8;EGYPTIAN HIEROGLYPH-137C8;Lo;0;L;;;;;N;;;;;
+137C9;EGYPTIAN HIEROGLYPH-137C9;Lo;0;L;;;;;N;;;;;
+137CA;EGYPTIAN HIEROGLYPH-137CA;Lo;0;L;;;;;N;;;;;
+137CB;EGYPTIAN HIEROGLYPH-137CB;Lo;0;L;;;;;N;;;;;
+137CC;EGYPTIAN HIEROGLYPH-137CC;Lo;0;L;;;;;N;;;;;
+137CD;EGYPTIAN HIEROGLYPH-137CD;Lo;0;L;;;;;N;;;;;
+137CE;EGYPTIAN HIEROGLYPH-137CE;Lo;0;L;;;;;N;;;;;
+137CF;EGYPTIAN HIEROGLYPH-137CF;Lo;0;L;;;;;N;;;;;
+137D0;EGYPTIAN HIEROGLYPH-137D0;Lo;0;L;;;;;N;;;;;
+137D1;EGYPTIAN HIEROGLYPH-137D1;Lo;0;L;;;;;N;;;;;
+137D2;EGYPTIAN HIEROGLYPH-137D2;Lo;0;L;;;;;N;;;;;
+137D3;EGYPTIAN HIEROGLYPH-137D3;Lo;0;L;;;;;N;;;;;
+137D4;EGYPTIAN HIEROGLYPH-137D4;Lo;0;L;;;;;N;;;;;
+137D5;EGYPTIAN HIEROGLYPH-137D5;Lo;0;L;;;;;N;;;;;
+137D6;EGYPTIAN HIEROGLYPH-137D6;Lo;0;L;;;;;N;;;;;
+137D7;EGYPTIAN HIEROGLYPH-137D7;Lo;0;L;;;;;N;;;;;
+137D8;EGYPTIAN HIEROGLYPH-137D8;Lo;0;L;;;;;N;;;;;
+137D9;EGYPTIAN HIEROGLYPH-137D9;Lo;0;L;;;;;N;;;;;
+137DA;EGYPTIAN HIEROGLYPH-137DA;Lo;0;L;;;;;N;;;;;
+137DB;EGYPTIAN HIEROGLYPH-137DB;Lo;0;L;;;;;N;;;;;
+137DC;EGYPTIAN HIEROGLYPH-137DC;Lo;0;L;;;;;N;;;;;
+137DD;EGYPTIAN HIEROGLYPH-137DD;Lo;0;L;;;;;N;;;;;
+137DE;EGYPTIAN HIEROGLYPH-137DE;Lo;0;L;;;;;N;;;;;
+137DF;EGYPTIAN HIEROGLYPH-137DF;Lo;0;L;;;;;N;;;;;
+137E0;EGYPTIAN HIEROGLYPH-137E0;Lo;0;L;;;;;N;;;;;
+137E1;EGYPTIAN HIEROGLYPH-137E1;Lo;0;L;;;;;N;;;;;
+137E2;EGYPTIAN HIEROGLYPH-137E2;Lo;0;L;;;;;N;;;;;
+137E3;EGYPTIAN HIEROGLYPH-137E3;Lo;0;L;;;;;N;;;;;
+137E4;EGYPTIAN HIEROGLYPH-137E4;Lo;0;L;;;;;N;;;;;
+137E5;EGYPTIAN HIEROGLYPH-137E5;Lo;0;L;;;;;N;;;;;
+137E6;EGYPTIAN HIEROGLYPH-137E6;Lo;0;L;;;;;N;;;;;
+137E7;EGYPTIAN HIEROGLYPH-137E7;Lo;0;L;;;;;N;;;;;
+137E8;EGYPTIAN HIEROGLYPH-137E8;Lo;0;L;;;;;N;;;;;
+137E9;EGYPTIAN HIEROGLYPH-137E9;Lo;0;L;;;;;N;;;;;
+137EA;EGYPTIAN HIEROGLYPH-137EA;Lo;0;L;;;;;N;;;;;
+137EB;EGYPTIAN HIEROGLYPH-137EB;Lo;0;L;;;;;N;;;;;
+137EC;EGYPTIAN HIEROGLYPH-137EC;Lo;0;L;;;;;N;;;;;
+137ED;EGYPTIAN HIEROGLYPH-137ED;Lo;0;L;;;;;N;;;;;
+137EE;EGYPTIAN HIEROGLYPH-137EE;Lo;0;L;;;;;N;;;;;
+137EF;EGYPTIAN HIEROGLYPH-137EF;Lo;0;L;;;;;N;;;;;
+137F0;EGYPTIAN HIEROGLYPH-137F0;Lo;0;L;;;;;N;;;;;
+137F1;EGYPTIAN HIEROGLYPH-137F1;Lo;0;L;;;;;N;;;;;
+137F2;EGYPTIAN HIEROGLYPH-137F2;Lo;0;L;;;;;N;;;;;
+137F3;EGYPTIAN HIEROGLYPH-137F3;Lo;0;L;;;;;N;;;;;
+137F4;EGYPTIAN HIEROGLYPH-137F4;Lo;0;L;;;;;N;;;;;
+137F5;EGYPTIAN HIEROGLYPH-137F5;Lo;0;L;;;;;N;;;;;
+137F6;EGYPTIAN HIEROGLYPH-137F6;Lo;0;L;;;;;N;;;;;
+137F7;EGYPTIAN HIEROGLYPH-137F7;Lo;0;L;;;;;N;;;;;
+137F8;EGYPTIAN HIEROGLYPH-137F8;Lo;0;L;;;;;N;;;;;
+137F9;EGYPTIAN HIEROGLYPH-137F9;Lo;0;L;;;;;N;;;;;
+137FA;EGYPTIAN HIEROGLYPH-137FA;Lo;0;L;;;;;N;;;;;
+137FB;EGYPTIAN HIEROGLYPH-137FB;Lo;0;L;;;;;N;;;;;
+137FC;EGYPTIAN HIEROGLYPH-137FC;Lo;0;L;;;;;N;;;;;
+137FD;EGYPTIAN HIEROGLYPH-137FD;Lo;0;L;;;;;N;;;;;
+137FE;EGYPTIAN HIEROGLYPH-137FE;Lo;0;L;;;;;N;;;;;
+137FF;EGYPTIAN HIEROGLYPH-137FF;Lo;0;L;;;;;N;;;;;
+13800;EGYPTIAN HIEROGLYPH-13800;Lo;0;L;;;;;N;;;;;
+13801;EGYPTIAN HIEROGLYPH-13801;Lo;0;L;;;;;N;;;;;
+13802;EGYPTIAN HIEROGLYPH-13802;Lo;0;L;;;;;N;;;;;
+13803;EGYPTIAN HIEROGLYPH-13803;Lo;0;L;;;;;N;;;;;
+13804;EGYPTIAN HIEROGLYPH-13804;Lo;0;L;;;;;N;;;;;
+13805;EGYPTIAN HIEROGLYPH-13805;Lo;0;L;;;;;N;;;;;
+13806;EGYPTIAN HIEROGLYPH-13806;Lo;0;L;;;;;N;;;;;
+13807;EGYPTIAN HIEROGLYPH-13807;Lo;0;L;;;;;N;;;;;
+13808;EGYPTIAN HIEROGLYPH-13808;Lo;0;L;;;;;N;;;;;
+13809;EGYPTIAN HIEROGLYPH-13809;Lo;0;L;;;;;N;;;;;
+1380A;EGYPTIAN HIEROGLYPH-1380A;Lo;0;L;;;;;N;;;;;
+1380B;EGYPTIAN HIEROGLYPH-1380B;Lo;0;L;;;;;N;;;;;
+1380C;EGYPTIAN HIEROGLYPH-1380C;Lo;0;L;;;;;N;;;;;
+1380D;EGYPTIAN HIEROGLYPH-1380D;Lo;0;L;;;;;N;;;;;
+1380E;EGYPTIAN HIEROGLYPH-1380E;Lo;0;L;;;;;N;;;;;
+1380F;EGYPTIAN HIEROGLYPH-1380F;Lo;0;L;;;;;N;;;;;
+13810;EGYPTIAN HIEROGLYPH-13810;Lo;0;L;;;;;N;;;;;
+13811;EGYPTIAN HIEROGLYPH-13811;Lo;0;L;;;;;N;;;;;
+13812;EGYPTIAN HIEROGLYPH-13812;Lo;0;L;;;;;N;;;;;
+13813;EGYPTIAN HIEROGLYPH-13813;Lo;0;L;;;;;N;;;;;
+13814;EGYPTIAN HIEROGLYPH-13814;Lo;0;L;;;;;N;;;;;
+13815;EGYPTIAN HIEROGLYPH-13815;Lo;0;L;;;;;N;;;;;
+13816;EGYPTIAN HIEROGLYPH-13816;Lo;0;L;;;;;N;;;;;
+13817;EGYPTIAN HIEROGLYPH-13817;Lo;0;L;;;;;N;;;;;
+13818;EGYPTIAN HIEROGLYPH-13818;Lo;0;L;;;;;N;;;;;
+13819;EGYPTIAN HIEROGLYPH-13819;Lo;0;L;;;;;N;;;;;
+1381A;EGYPTIAN HIEROGLYPH-1381A;Lo;0;L;;;;;N;;;;;
+1381B;EGYPTIAN HIEROGLYPH-1381B;Lo;0;L;;;;;N;;;;;
+1381C;EGYPTIAN HIEROGLYPH-1381C;Lo;0;L;;;;;N;;;;;
+1381D;EGYPTIAN HIEROGLYPH-1381D;Lo;0;L;;;;;N;;;;;
+1381E;EGYPTIAN HIEROGLYPH-1381E;Lo;0;L;;;;;N;;;;;
+1381F;EGYPTIAN HIEROGLYPH-1381F;Lo;0;L;;;;;N;;;;;
+13820;EGYPTIAN HIEROGLYPH-13820;Lo;0;L;;;;;N;;;;;
+13821;EGYPTIAN HIEROGLYPH-13821;Lo;0;L;;;;;N;;;;;
+13822;EGYPTIAN HIEROGLYPH-13822;Lo;0;L;;;;;N;;;;;
+13823;EGYPTIAN HIEROGLYPH-13823;Lo;0;L;;;;;N;;;;;
+13824;EGYPTIAN HIEROGLYPH-13824;Lo;0;L;;;;;N;;;;;
+13825;EGYPTIAN HIEROGLYPH-13825;Lo;0;L;;;;;N;;;;;
+13826;EGYPTIAN HIEROGLYPH-13826;Lo;0;L;;;;;N;;;;;
+13827;EGYPTIAN HIEROGLYPH-13827;Lo;0;L;;;;;N;;;;;
+13828;EGYPTIAN HIEROGLYPH-13828;Lo;0;L;;;;;N;;;;;
+13829;EGYPTIAN HIEROGLYPH-13829;Lo;0;L;;;;;N;;;;;
+1382A;EGYPTIAN HIEROGLYPH-1382A;Lo;0;L;;;;;N;;;;;
+1382B;EGYPTIAN HIEROGLYPH-1382B;Lo;0;L;;;;;N;;;;;
+1382C;EGYPTIAN HIEROGLYPH-1382C;Lo;0;L;;;;;N;;;;;
+1382D;EGYPTIAN HIEROGLYPH-1382D;Lo;0;L;;;;;N;;;;;
+1382E;EGYPTIAN HIEROGLYPH-1382E;Lo;0;L;;;;;N;;;;;
+1382F;EGYPTIAN HIEROGLYPH-1382F;Lo;0;L;;;;;N;;;;;
+13830;EGYPTIAN HIEROGLYPH-13830;Lo;0;L;;;;;N;;;;;
+13831;EGYPTIAN HIEROGLYPH-13831;Lo;0;L;;;;;N;;;;;
+13832;EGYPTIAN HIEROGLYPH-13832;Lo;0;L;;;;;N;;;;;
+13833;EGYPTIAN HIEROGLYPH-13833;Lo;0;L;;;;;N;;;;;
+13834;EGYPTIAN HIEROGLYPH-13834;Lo;0;L;;;;;N;;;;;
+13835;EGYPTIAN HIEROGLYPH-13835;Lo;0;L;;;;;N;;;;;
+13836;EGYPTIAN HIEROGLYPH-13836;Lo;0;L;;;;;N;;;;;
+13837;EGYPTIAN HIEROGLYPH-13837;Lo;0;L;;;;;N;;;;;
+13838;EGYPTIAN HIEROGLYPH-13838;Lo;0;L;;;;;N;;;;;
+13839;EGYPTIAN HIEROGLYPH-13839;Lo;0;L;;;;;N;;;;;
+1383A;EGYPTIAN HIEROGLYPH-1383A;Lo;0;L;;;;;N;;;;;
+1383B;EGYPTIAN HIEROGLYPH-1383B;Lo;0;L;;;;;N;;;;;
+1383C;EGYPTIAN HIEROGLYPH-1383C;Lo;0;L;;;;;N;;;;;
+1383D;EGYPTIAN HIEROGLYPH-1383D;Lo;0;L;;;;;N;;;;;
+1383E;EGYPTIAN HIEROGLYPH-1383E;Lo;0;L;;;;;N;;;;;
+1383F;EGYPTIAN HIEROGLYPH-1383F;Lo;0;L;;;;;N;;;;;
+13840;EGYPTIAN HIEROGLYPH-13840;Lo;0;L;;;;;N;;;;;
+13841;EGYPTIAN HIEROGLYPH-13841;Lo;0;L;;;;;N;;;;;
+13842;EGYPTIAN HIEROGLYPH-13842;Lo;0;L;;;;;N;;;;;
+13843;EGYPTIAN HIEROGLYPH-13843;Lo;0;L;;;;;N;;;;;
+13844;EGYPTIAN HIEROGLYPH-13844;Lo;0;L;;;;;N;;;;;
+13845;EGYPTIAN HIEROGLYPH-13845;Lo;0;L;;;;;N;;;;;
+13846;EGYPTIAN HIEROGLYPH-13846;Lo;0;L;;;;;N;;;;;
+13847;EGYPTIAN HIEROGLYPH-13847;Lo;0;L;;;;;N;;;;;
+13848;EGYPTIAN HIEROGLYPH-13848;Lo;0;L;;;;;N;;;;;
+13849;EGYPTIAN HIEROGLYPH-13849;Lo;0;L;;;;;N;;;;;
+1384A;EGYPTIAN HIEROGLYPH-1384A;Lo;0;L;;;;;N;;;;;
+1384B;EGYPTIAN HIEROGLYPH-1384B;Lo;0;L;;;;;N;;;;;
+1384C;EGYPTIAN HIEROGLYPH-1384C;Lo;0;L;;;;;N;;;;;
+1384D;EGYPTIAN HIEROGLYPH-1384D;Lo;0;L;;;;;N;;;;;
+1384E;EGYPTIAN HIEROGLYPH-1384E;Lo;0;L;;;;;N;;;;;
+1384F;EGYPTIAN HIEROGLYPH-1384F;Lo;0;L;;;;;N;;;;;
+13850;EGYPTIAN HIEROGLYPH-13850;Lo;0;L;;;;;N;;;;;
+13851;EGYPTIAN HIEROGLYPH-13851;Lo;0;L;;;;;N;;;;;
+13852;EGYPTIAN HIEROGLYPH-13852;Lo;0;L;;;;;N;;;;;
+13853;EGYPTIAN HIEROGLYPH-13853;Lo;0;L;;;;;N;;;;;
+13854;EGYPTIAN HIEROGLYPH-13854;Lo;0;L;;;;;N;;;;;
+13855;EGYPTIAN HIEROGLYPH-13855;Lo;0;L;;;;;N;;;;;
+13856;EGYPTIAN HIEROGLYPH-13856;Lo;0;L;;;;;N;;;;;
+13857;EGYPTIAN HIEROGLYPH-13857;Lo;0;L;;;;;N;;;;;
+13858;EGYPTIAN HIEROGLYPH-13858;Lo;0;L;;;;;N;;;;;
+13859;EGYPTIAN HIEROGLYPH-13859;Lo;0;L;;;;;N;;;;;
+1385A;EGYPTIAN HIEROGLYPH-1385A;Lo;0;L;;;;;N;;;;;
+1385B;EGYPTIAN HIEROGLYPH-1385B;Lo;0;L;;;;;N;;;;;
+1385C;EGYPTIAN HIEROGLYPH-1385C;Lo;0;L;;;;;N;;;;;
+1385D;EGYPTIAN HIEROGLYPH-1385D;Lo;0;L;;;;;N;;;;;
+1385E;EGYPTIAN HIEROGLYPH-1385E;Lo;0;L;;;;;N;;;;;
+1385F;EGYPTIAN HIEROGLYPH-1385F;Lo;0;L;;;;;N;;;;;
+13860;EGYPTIAN HIEROGLYPH-13860;Lo;0;L;;;;;N;;;;;
+13861;EGYPTIAN HIEROGLYPH-13861;Lo;0;L;;;;;N;;;;;
+13862;EGYPTIAN HIEROGLYPH-13862;Lo;0;L;;;;;N;;;;;
+13863;EGYPTIAN HIEROGLYPH-13863;Lo;0;L;;;;;N;;;;;
+13864;EGYPTIAN HIEROGLYPH-13864;Lo;0;L;;;;;N;;;;;
+13865;EGYPTIAN HIEROGLYPH-13865;Lo;0;L;;;;;N;;;;;
+13866;EGYPTIAN HIEROGLYPH-13866;Lo;0;L;;;;;N;;;;;
+13867;EGYPTIAN HIEROGLYPH-13867;Lo;0;L;;;;;N;;;;;
+13868;EGYPTIAN HIEROGLYPH-13868;Lo;0;L;;;;;N;;;;;
+13869;EGYPTIAN HIEROGLYPH-13869;Lo;0;L;;;;;N;;;;;
+1386A;EGYPTIAN HIEROGLYPH-1386A;Lo;0;L;;;;;N;;;;;
+1386B;EGYPTIAN HIEROGLYPH-1386B;Lo;0;L;;;;;N;;;;;
+1386C;EGYPTIAN HIEROGLYPH-1386C;Lo;0;L;;;;;N;;;;;
+1386D;EGYPTIAN HIEROGLYPH-1386D;Lo;0;L;;;;;N;;;;;
+1386E;EGYPTIAN HIEROGLYPH-1386E;Lo;0;L;;;;;N;;;;;
+1386F;EGYPTIAN HIEROGLYPH-1386F;Lo;0;L;;;;;N;;;;;
+13870;EGYPTIAN HIEROGLYPH-13870;Lo;0;L;;;;;N;;;;;
+13871;EGYPTIAN HIEROGLYPH-13871;Lo;0;L;;;;;N;;;;;
+13872;EGYPTIAN HIEROGLYPH-13872;Lo;0;L;;;;;N;;;;;
+13873;EGYPTIAN HIEROGLYPH-13873;Lo;0;L;;;;;N;;;;;
+13874;EGYPTIAN HIEROGLYPH-13874;Lo;0;L;;;;;N;;;;;
+13875;EGYPTIAN HIEROGLYPH-13875;Lo;0;L;;;;;N;;;;;
+13876;EGYPTIAN HIEROGLYPH-13876;Lo;0;L;;;;;N;;;;;
+13877;EGYPTIAN HIEROGLYPH-13877;Lo;0;L;;;;;N;;;;;
+13878;EGYPTIAN HIEROGLYPH-13878;Lo;0;L;;;;;N;;;;;
+13879;EGYPTIAN HIEROGLYPH-13879;Lo;0;L;;;;;N;;;;;
+1387A;EGYPTIAN HIEROGLYPH-1387A;Lo;0;L;;;;;N;;;;;
+1387B;EGYPTIAN HIEROGLYPH-1387B;Lo;0;L;;;;;N;;;;;
+1387C;EGYPTIAN HIEROGLYPH-1387C;Lo;0;L;;;;;N;;;;;
+1387D;EGYPTIAN HIEROGLYPH-1387D;Lo;0;L;;;;;N;;;;;
+1387E;EGYPTIAN HIEROGLYPH-1387E;Lo;0;L;;;;;N;;;;;
+1387F;EGYPTIAN HIEROGLYPH-1387F;Lo;0;L;;;;;N;;;;;
+13880;EGYPTIAN HIEROGLYPH-13880;Lo;0;L;;;;;N;;;;;
+13881;EGYPTIAN HIEROGLYPH-13881;Lo;0;L;;;;;N;;;;;
+13882;EGYPTIAN HIEROGLYPH-13882;Lo;0;L;;;;;N;;;;;
+13883;EGYPTIAN HIEROGLYPH-13883;Lo;0;L;;;;;N;;;;;
+13884;EGYPTIAN HIEROGLYPH-13884;Lo;0;L;;;;;N;;;;;
+13885;EGYPTIAN HIEROGLYPH-13885;Lo;0;L;;;;;N;;;;;
+13886;EGYPTIAN HIEROGLYPH-13886;Lo;0;L;;;;;N;;;;;
+13887;EGYPTIAN HIEROGLYPH-13887;Lo;0;L;;;;;N;;;;;
+13888;EGYPTIAN HIEROGLYPH-13888;Lo;0;L;;;;;N;;;;;
+13889;EGYPTIAN HIEROGLYPH-13889;Lo;0;L;;;;;N;;;;;
+1388A;EGYPTIAN HIEROGLYPH-1388A;Lo;0;L;;;;;N;;;;;
+1388B;EGYPTIAN HIEROGLYPH-1388B;Lo;0;L;;;;;N;;;;;
+1388C;EGYPTIAN HIEROGLYPH-1388C;Lo;0;L;;;;;N;;;;;
+1388D;EGYPTIAN HIEROGLYPH-1388D;Lo;0;L;;;;;N;;;;;
+1388E;EGYPTIAN HIEROGLYPH-1388E;Lo;0;L;;;;;N;;;;;
+1388F;EGYPTIAN HIEROGLYPH-1388F;Lo;0;L;;;;;N;;;;;
+13890;EGYPTIAN HIEROGLYPH-13890;Lo;0;L;;;;;N;;;;;
+13891;EGYPTIAN HIEROGLYPH-13891;Lo;0;L;;;;;N;;;;;
+13892;EGYPTIAN HIEROGLYPH-13892;Lo;0;L;;;;;N;;;;;
+13893;EGYPTIAN HIEROGLYPH-13893;Lo;0;L;;;;;N;;;;;
+13894;EGYPTIAN HIEROGLYPH-13894;Lo;0;L;;;;;N;;;;;
+13895;EGYPTIAN HIEROGLYPH-13895;Lo;0;L;;;;;N;;;;;
+13896;EGYPTIAN HIEROGLYPH-13896;Lo;0;L;;;;;N;;;;;
+13897;EGYPTIAN HIEROGLYPH-13897;Lo;0;L;;;;;N;;;;;
+13898;EGYPTIAN HIEROGLYPH-13898;Lo;0;L;;;;;N;;;;;
+13899;EGYPTIAN HIEROGLYPH-13899;Lo;0;L;;;;;N;;;;;
+1389A;EGYPTIAN HIEROGLYPH-1389A;Lo;0;L;;;;;N;;;;;
+1389B;EGYPTIAN HIEROGLYPH-1389B;Lo;0;L;;;;;N;;;;;
+1389C;EGYPTIAN HIEROGLYPH-1389C;Lo;0;L;;;;;N;;;;;
+1389D;EGYPTIAN HIEROGLYPH-1389D;Lo;0;L;;;;;N;;;;;
+1389E;EGYPTIAN HIEROGLYPH-1389E;Lo;0;L;;;;;N;;;;;
+1389F;EGYPTIAN HIEROGLYPH-1389F;Lo;0;L;;;;;N;;;;;
+138A0;EGYPTIAN HIEROGLYPH-138A0;Lo;0;L;;;;;N;;;;;
+138A1;EGYPTIAN HIEROGLYPH-138A1;Lo;0;L;;;;;N;;;;;
+138A2;EGYPTIAN HIEROGLYPH-138A2;Lo;0;L;;;;;N;;;;;
+138A3;EGYPTIAN HIEROGLYPH-138A3;Lo;0;L;;;;;N;;;;;
+138A4;EGYPTIAN HIEROGLYPH-138A4;Lo;0;L;;;;;N;;;;;
+138A5;EGYPTIAN HIEROGLYPH-138A5;Lo;0;L;;;;;N;;;;;
+138A6;EGYPTIAN HIEROGLYPH-138A6;Lo;0;L;;;;;N;;;;;
+138A7;EGYPTIAN HIEROGLYPH-138A7;Lo;0;L;;;;;N;;;;;
+138A8;EGYPTIAN HIEROGLYPH-138A8;Lo;0;L;;;;;N;;;;;
+138A9;EGYPTIAN HIEROGLYPH-138A9;Lo;0;L;;;;;N;;;;;
+138AA;EGYPTIAN HIEROGLYPH-138AA;Lo;0;L;;;;;N;;;;;
+138AB;EGYPTIAN HIEROGLYPH-138AB;Lo;0;L;;;;;N;;;;;
+138AC;EGYPTIAN HIEROGLYPH-138AC;Lo;0;L;;;;;N;;;;;
+138AD;EGYPTIAN HIEROGLYPH-138AD;Lo;0;L;;;;;N;;;;;
+138AE;EGYPTIAN HIEROGLYPH-138AE;Lo;0;L;;;;;N;;;;;
+138AF;EGYPTIAN HIEROGLYPH-138AF;Lo;0;L;;;;;N;;;;;
+138B0;EGYPTIAN HIEROGLYPH-138B0;Lo;0;L;;;;;N;;;;;
+138B1;EGYPTIAN HIEROGLYPH-138B1;Lo;0;L;;;;;N;;;;;
+138B2;EGYPTIAN HIEROGLYPH-138B2;Lo;0;L;;;;;N;;;;;
+138B3;EGYPTIAN HIEROGLYPH-138B3;Lo;0;L;;;;;N;;;;;
+138B4;EGYPTIAN HIEROGLYPH-138B4;Lo;0;L;;;;;N;;;;;
+138B5;EGYPTIAN HIEROGLYPH-138B5;Lo;0;L;;;;;N;;;;;
+138B6;EGYPTIAN HIEROGLYPH-138B6;Lo;0;L;;;;;N;;;;;
+138B7;EGYPTIAN HIEROGLYPH-138B7;Lo;0;L;;;;;N;;;;;
+138B8;EGYPTIAN HIEROGLYPH-138B8;Lo;0;L;;;;;N;;;;;
+138B9;EGYPTIAN HIEROGLYPH-138B9;Lo;0;L;;;;;N;;;;;
+138BA;EGYPTIAN HIEROGLYPH-138BA;Lo;0;L;;;;;N;;;;;
+138BB;EGYPTIAN HIEROGLYPH-138BB;Lo;0;L;;;;;N;;;;;
+138BC;EGYPTIAN HIEROGLYPH-138BC;Lo;0;L;;;;;N;;;;;
+138BD;EGYPTIAN HIEROGLYPH-138BD;Lo;0;L;;;;;N;;;;;
+138BE;EGYPTIAN HIEROGLYPH-138BE;Lo;0;L;;;;;N;;;;;
+138BF;EGYPTIAN HIEROGLYPH-138BF;Lo;0;L;;;;;N;;;;;
+138C0;EGYPTIAN HIEROGLYPH-138C0;Lo;0;L;;;;;N;;;;;
+138C1;EGYPTIAN HIEROGLYPH-138C1;Lo;0;L;;;;;N;;;;;
+138C2;EGYPTIAN HIEROGLYPH-138C2;Lo;0;L;;;;;N;;;;;
+138C3;EGYPTIAN HIEROGLYPH-138C3;Lo;0;L;;;;;N;;;;;
+138C4;EGYPTIAN HIEROGLYPH-138C4;Lo;0;L;;;;;N;;;;;
+138C5;EGYPTIAN HIEROGLYPH-138C5;Lo;0;L;;;;;N;;;;;
+138C6;EGYPTIAN HIEROGLYPH-138C6;Lo;0;L;;;;;N;;;;;
+138C7;EGYPTIAN HIEROGLYPH-138C7;Lo;0;L;;;;;N;;;;;
+138C8;EGYPTIAN HIEROGLYPH-138C8;Lo;0;L;;;;;N;;;;;
+138C9;EGYPTIAN HIEROGLYPH-138C9;Lo;0;L;;;;;N;;;;;
+138CA;EGYPTIAN HIEROGLYPH-138CA;Lo;0;L;;;;;N;;;;;
+138CB;EGYPTIAN HIEROGLYPH-138CB;Lo;0;L;;;;;N;;;;;
+138CC;EGYPTIAN HIEROGLYPH-138CC;Lo;0;L;;;;;N;;;;;
+138CD;EGYPTIAN HIEROGLYPH-138CD;Lo;0;L;;;;;N;;;;;
+138CE;EGYPTIAN HIEROGLYPH-138CE;Lo;0;L;;;;;N;;;;;
+138CF;EGYPTIAN HIEROGLYPH-138CF;Lo;0;L;;;;;N;;;;;
+138D0;EGYPTIAN HIEROGLYPH-138D0;Lo;0;L;;;;;N;;;;;
+138D1;EGYPTIAN HIEROGLYPH-138D1;Lo;0;L;;;;;N;;;;;
+138D2;EGYPTIAN HIEROGLYPH-138D2;Lo;0;L;;;;;N;;;;;
+138D3;EGYPTIAN HIEROGLYPH-138D3;Lo;0;L;;;;;N;;;;;
+138D4;EGYPTIAN HIEROGLYPH-138D4;Lo;0;L;;;;;N;;;;;
+138D5;EGYPTIAN HIEROGLYPH-138D5;Lo;0;L;;;;;N;;;;;
+138D6;EGYPTIAN HIEROGLYPH-138D6;Lo;0;L;;;;;N;;;;;
+138D7;EGYPTIAN HIEROGLYPH-138D7;Lo;0;L;;;;;N;;;;;
+138D8;EGYPTIAN HIEROGLYPH-138D8;Lo;0;L;;;;;N;;;;;
+138D9;EGYPTIAN HIEROGLYPH-138D9;Lo;0;L;;;;;N;;;;;
+138DA;EGYPTIAN HIEROGLYPH-138DA;Lo;0;L;;;;;N;;;;;
+138DB;EGYPTIAN HIEROGLYPH-138DB;Lo;0;L;;;;;N;;;;;
+138DC;EGYPTIAN HIEROGLYPH-138DC;Lo;0;L;;;;;N;;;;;
+138DD;EGYPTIAN HIEROGLYPH-138DD;Lo;0;L;;;;;N;;;;;
+138DE;EGYPTIAN HIEROGLYPH-138DE;Lo;0;L;;;;;N;;;;;
+138DF;EGYPTIAN HIEROGLYPH-138DF;Lo;0;L;;;;;N;;;;;
+138E0;EGYPTIAN HIEROGLYPH-138E0;Lo;0;L;;;;;N;;;;;
+138E1;EGYPTIAN HIEROGLYPH-138E1;Lo;0;L;;;;;N;;;;;
+138E2;EGYPTIAN HIEROGLYPH-138E2;Lo;0;L;;;;;N;;;;;
+138E3;EGYPTIAN HIEROGLYPH-138E3;Lo;0;L;;;;;N;;;;;
+138E4;EGYPTIAN HIEROGLYPH-138E4;Lo;0;L;;;;;N;;;;;
+138E5;EGYPTIAN HIEROGLYPH-138E5;Lo;0;L;;;;;N;;;;;
+138E6;EGYPTIAN HIEROGLYPH-138E6;Lo;0;L;;;;;N;;;;;
+138E7;EGYPTIAN HIEROGLYPH-138E7;Lo;0;L;;;;;N;;;;;
+138E8;EGYPTIAN HIEROGLYPH-138E8;Lo;0;L;;;;;N;;;;;
+138E9;EGYPTIAN HIEROGLYPH-138E9;Lo;0;L;;;;;N;;;;;
+138EA;EGYPTIAN HIEROGLYPH-138EA;Lo;0;L;;;;;N;;;;;
+138EB;EGYPTIAN HIEROGLYPH-138EB;Lo;0;L;;;;;N;;;;;
+138EC;EGYPTIAN HIEROGLYPH-138EC;Lo;0;L;;;;;N;;;;;
+138ED;EGYPTIAN HIEROGLYPH-138ED;Lo;0;L;;;;;N;;;;;
+138EE;EGYPTIAN HIEROGLYPH-138EE;Lo;0;L;;;;;N;;;;;
+138EF;EGYPTIAN HIEROGLYPH-138EF;Lo;0;L;;;;;N;;;;;
+138F0;EGYPTIAN HIEROGLYPH-138F0;Lo;0;L;;;;;N;;;;;
+138F1;EGYPTIAN HIEROGLYPH-138F1;Lo;0;L;;;;;N;;;;;
+138F2;EGYPTIAN HIEROGLYPH-138F2;Lo;0;L;;;;;N;;;;;
+138F3;EGYPTIAN HIEROGLYPH-138F3;Lo;0;L;;;;;N;;;;;
+138F4;EGYPTIAN HIEROGLYPH-138F4;Lo;0;L;;;;;N;;;;;
+138F5;EGYPTIAN HIEROGLYPH-138F5;Lo;0;L;;;;;N;;;;;
+138F6;EGYPTIAN HIEROGLYPH-138F6;Lo;0;L;;;;;N;;;;;
+138F7;EGYPTIAN HIEROGLYPH-138F7;Lo;0;L;;;;;N;;;;;
+138F8;EGYPTIAN HIEROGLYPH-138F8;Lo;0;L;;;;;N;;;;;
+138F9;EGYPTIAN HIEROGLYPH-138F9;Lo;0;L;;;;;N;;;;;
+138FA;EGYPTIAN HIEROGLYPH-138FA;Lo;0;L;;;;;N;;;;;
+138FB;EGYPTIAN HIEROGLYPH-138FB;Lo;0;L;;;;;N;;;;;
+138FC;EGYPTIAN HIEROGLYPH-138FC;Lo;0;L;;;;;N;;;;;
+138FD;EGYPTIAN HIEROGLYPH-138FD;Lo;0;L;;;;;N;;;;;
+138FE;EGYPTIAN HIEROGLYPH-138FE;Lo;0;L;;;;;N;;;;;
+138FF;EGYPTIAN HIEROGLYPH-138FF;Lo;0;L;;;;;N;;;;;
+13900;EGYPTIAN HIEROGLYPH-13900;Lo;0;L;;;;;N;;;;;
+13901;EGYPTIAN HIEROGLYPH-13901;Lo;0;L;;;;;N;;;;;
+13902;EGYPTIAN HIEROGLYPH-13902;Lo;0;L;;;;;N;;;;;
+13903;EGYPTIAN HIEROGLYPH-13903;Lo;0;L;;;;;N;;;;;
+13904;EGYPTIAN HIEROGLYPH-13904;Lo;0;L;;;;;N;;;;;
+13905;EGYPTIAN HIEROGLYPH-13905;Lo;0;L;;;;;N;;;;;
+13906;EGYPTIAN HIEROGLYPH-13906;Lo;0;L;;;;;N;;;;;
+13907;EGYPTIAN HIEROGLYPH-13907;Lo;0;L;;;;;N;;;;;
+13908;EGYPTIAN HIEROGLYPH-13908;Lo;0;L;;;;;N;;;;;
+13909;EGYPTIAN HIEROGLYPH-13909;Lo;0;L;;;;;N;;;;;
+1390A;EGYPTIAN HIEROGLYPH-1390A;Lo;0;L;;;;;N;;;;;
+1390B;EGYPTIAN HIEROGLYPH-1390B;Lo;0;L;;;;;N;;;;;
+1390C;EGYPTIAN HIEROGLYPH-1390C;Lo;0;L;;;;;N;;;;;
+1390D;EGYPTIAN HIEROGLYPH-1390D;Lo;0;L;;;;;N;;;;;
+1390E;EGYPTIAN HIEROGLYPH-1390E;Lo;0;L;;;;;N;;;;;
+1390F;EGYPTIAN HIEROGLYPH-1390F;Lo;0;L;;;;;N;;;;;
+13910;EGYPTIAN HIEROGLYPH-13910;Lo;0;L;;;;;N;;;;;
+13911;EGYPTIAN HIEROGLYPH-13911;Lo;0;L;;;;;N;;;;;
+13912;EGYPTIAN HIEROGLYPH-13912;Lo;0;L;;;;;N;;;;;
+13913;EGYPTIAN HIEROGLYPH-13913;Lo;0;L;;;;;N;;;;;
+13914;EGYPTIAN HIEROGLYPH-13914;Lo;0;L;;;;;N;;;;;
+13915;EGYPTIAN HIEROGLYPH-13915;Lo;0;L;;;;;N;;;;;
+13916;EGYPTIAN HIEROGLYPH-13916;Lo;0;L;;;;;N;;;;;
+13917;EGYPTIAN HIEROGLYPH-13917;Lo;0;L;;;;;N;;;;;
+13918;EGYPTIAN HIEROGLYPH-13918;Lo;0;L;;;;;N;;;;;
+13919;EGYPTIAN HIEROGLYPH-13919;Lo;0;L;;;;;N;;;;;
+1391A;EGYPTIAN HIEROGLYPH-1391A;Lo;0;L;;;;;N;;;;;
+1391B;EGYPTIAN HIEROGLYPH-1391B;Lo;0;L;;;;;N;;;;;
+1391C;EGYPTIAN HIEROGLYPH-1391C;Lo;0;L;;;;;N;;;;;
+1391D;EGYPTIAN HIEROGLYPH-1391D;Lo;0;L;;;;;N;;;;;
+1391E;EGYPTIAN HIEROGLYPH-1391E;Lo;0;L;;;;;N;;;;;
+1391F;EGYPTIAN HIEROGLYPH-1391F;Lo;0;L;;;;;N;;;;;
+13920;EGYPTIAN HIEROGLYPH-13920;Lo;0;L;;;;;N;;;;;
+13921;EGYPTIAN HIEROGLYPH-13921;Lo;0;L;;;;;N;;;;;
+13922;EGYPTIAN HIEROGLYPH-13922;Lo;0;L;;;;;N;;;;;
+13923;EGYPTIAN HIEROGLYPH-13923;Lo;0;L;;;;;N;;;;;
+13924;EGYPTIAN HIEROGLYPH-13924;Lo;0;L;;;;;N;;;;;
+13925;EGYPTIAN HIEROGLYPH-13925;Lo;0;L;;;;;N;;;;;
+13926;EGYPTIAN HIEROGLYPH-13926;Lo;0;L;;;;;N;;;;;
+13927;EGYPTIAN HIEROGLYPH-13927;Lo;0;L;;;;;N;;;;;
+13928;EGYPTIAN HIEROGLYPH-13928;Lo;0;L;;;;;N;;;;;
+13929;EGYPTIAN HIEROGLYPH-13929;Lo;0;L;;;;;N;;;;;
+1392A;EGYPTIAN HIEROGLYPH-1392A;Lo;0;L;;;;;N;;;;;
+1392B;EGYPTIAN HIEROGLYPH-1392B;Lo;0;L;;;;;N;;;;;
+1392C;EGYPTIAN HIEROGLYPH-1392C;Lo;0;L;;;;;N;;;;;
+1392D;EGYPTIAN HIEROGLYPH-1392D;Lo;0;L;;;;;N;;;;;
+1392E;EGYPTIAN HIEROGLYPH-1392E;Lo;0;L;;;;;N;;;;;
+1392F;EGYPTIAN HIEROGLYPH-1392F;Lo;0;L;;;;;N;;;;;
+13930;EGYPTIAN HIEROGLYPH-13930;Lo;0;L;;;;;N;;;;;
+13931;EGYPTIAN HIEROGLYPH-13931;Lo;0;L;;;;;N;;;;;
+13932;EGYPTIAN HIEROGLYPH-13932;Lo;0;L;;;;;N;;;;;
+13933;EGYPTIAN HIEROGLYPH-13933;Lo;0;L;;;;;N;;;;;
+13934;EGYPTIAN HIEROGLYPH-13934;Lo;0;L;;;;;N;;;;;
+13935;EGYPTIAN HIEROGLYPH-13935;Lo;0;L;;;;;N;;;;;
+13936;EGYPTIAN HIEROGLYPH-13936;Lo;0;L;;;;;N;;;;;
+13937;EGYPTIAN HIEROGLYPH-13937;Lo;0;L;;;;;N;;;;;
+13938;EGYPTIAN HIEROGLYPH-13938;Lo;0;L;;;;;N;;;;;
+13939;EGYPTIAN HIEROGLYPH-13939;Lo;0;L;;;;;N;;;;;
+1393A;EGYPTIAN HIEROGLYPH-1393A;Lo;0;L;;;;;N;;;;;
+1393B;EGYPTIAN HIEROGLYPH-1393B;Lo;0;L;;;;;N;;;;;
+1393C;EGYPTIAN HIEROGLYPH-1393C;Lo;0;L;;;;;N;;;;;
+1393D;EGYPTIAN HIEROGLYPH-1393D;Lo;0;L;;;;;N;;;;;
+1393E;EGYPTIAN HIEROGLYPH-1393E;Lo;0;L;;;;;N;;;;;
+1393F;EGYPTIAN HIEROGLYPH-1393F;Lo;0;L;;;;;N;;;;;
+13940;EGYPTIAN HIEROGLYPH-13940;Lo;0;L;;;;;N;;;;;
+13941;EGYPTIAN HIEROGLYPH-13941;Lo;0;L;;;;;N;;;;;
+13942;EGYPTIAN HIEROGLYPH-13942;Lo;0;L;;;;;N;;;;;
+13943;EGYPTIAN HIEROGLYPH-13943;Lo;0;L;;;;;N;;;;;
+13944;EGYPTIAN HIEROGLYPH-13944;Lo;0;L;;;;;N;;;;;
+13945;EGYPTIAN HIEROGLYPH-13945;Lo;0;L;;;;;N;;;;;
+13946;EGYPTIAN HIEROGLYPH-13946;Lo;0;L;;;;;N;;;;;
+13947;EGYPTIAN HIEROGLYPH-13947;Lo;0;L;;;;;N;;;;;
+13948;EGYPTIAN HIEROGLYPH-13948;Lo;0;L;;;;;N;;;;;
+13949;EGYPTIAN HIEROGLYPH-13949;Lo;0;L;;;;;N;;;;;
+1394A;EGYPTIAN HIEROGLYPH-1394A;Lo;0;L;;;;;N;;;;;
+1394B;EGYPTIAN HIEROGLYPH-1394B;Lo;0;L;;;;;N;;;;;
+1394C;EGYPTIAN HIEROGLYPH-1394C;Lo;0;L;;;;;N;;;;;
+1394D;EGYPTIAN HIEROGLYPH-1394D;Lo;0;L;;;;;N;;;;;
+1394E;EGYPTIAN HIEROGLYPH-1394E;Lo;0;L;;;;;N;;;;;
+1394F;EGYPTIAN HIEROGLYPH-1394F;Lo;0;L;;;;;N;;;;;
+13950;EGYPTIAN HIEROGLYPH-13950;Lo;0;L;;;;;N;;;;;
+13951;EGYPTIAN HIEROGLYPH-13951;Lo;0;L;;;;;N;;;;;
+13952;EGYPTIAN HIEROGLYPH-13952;Lo;0;L;;;;;N;;;;;
+13953;EGYPTIAN HIEROGLYPH-13953;Lo;0;L;;;;;N;;;;;
+13954;EGYPTIAN HIEROGLYPH-13954;Lo;0;L;;;;;N;;;;;
+13955;EGYPTIAN HIEROGLYPH-13955;Lo;0;L;;;;;N;;;;;
+13956;EGYPTIAN HIEROGLYPH-13956;Lo;0;L;;;;;N;;;;;
+13957;EGYPTIAN HIEROGLYPH-13957;Lo;0;L;;;;;N;;;;;
+13958;EGYPTIAN HIEROGLYPH-13958;Lo;0;L;;;;;N;;;;;
+13959;EGYPTIAN HIEROGLYPH-13959;Lo;0;L;;;;;N;;;;;
+1395A;EGYPTIAN HIEROGLYPH-1395A;Lo;0;L;;;;;N;;;;;
+1395B;EGYPTIAN HIEROGLYPH-1395B;Lo;0;L;;;;;N;;;;;
+1395C;EGYPTIAN HIEROGLYPH-1395C;Lo;0;L;;;;;N;;;;;
+1395D;EGYPTIAN HIEROGLYPH-1395D;Lo;0;L;;;;;N;;;;;
+1395E;EGYPTIAN HIEROGLYPH-1395E;Lo;0;L;;;;;N;;;;;
+1395F;EGYPTIAN HIEROGLYPH-1395F;Lo;0;L;;;;;N;;;;;
+13960;EGYPTIAN HIEROGLYPH-13960;Lo;0;L;;;;;N;;;;;
+13961;EGYPTIAN HIEROGLYPH-13961;Lo;0;L;;;;;N;;;;;
+13962;EGYPTIAN HIEROGLYPH-13962;Lo;0;L;;;;;N;;;;;
+13963;EGYPTIAN HIEROGLYPH-13963;Lo;0;L;;;;;N;;;;;
+13964;EGYPTIAN HIEROGLYPH-13964;Lo;0;L;;;;;N;;;;;
+13965;EGYPTIAN HIEROGLYPH-13965;Lo;0;L;;;;;N;;;;;
+13966;EGYPTIAN HIEROGLYPH-13966;Lo;0;L;;;;;N;;;;;
+13967;EGYPTIAN HIEROGLYPH-13967;Lo;0;L;;;;;N;;;;;
+13968;EGYPTIAN HIEROGLYPH-13968;Lo;0;L;;;;;N;;;;;
+13969;EGYPTIAN HIEROGLYPH-13969;Lo;0;L;;;;;N;;;;;
+1396A;EGYPTIAN HIEROGLYPH-1396A;Lo;0;L;;;;;N;;;;;
+1396B;EGYPTIAN HIEROGLYPH-1396B;Lo;0;L;;;;;N;;;;;
+1396C;EGYPTIAN HIEROGLYPH-1396C;Lo;0;L;;;;;N;;;;;
+1396D;EGYPTIAN HIEROGLYPH-1396D;Lo;0;L;;;;;N;;;;;
+1396E;EGYPTIAN HIEROGLYPH-1396E;Lo;0;L;;;;;N;;;;;
+1396F;EGYPTIAN HIEROGLYPH-1396F;Lo;0;L;;;;;N;;;;;
+13970;EGYPTIAN HIEROGLYPH-13970;Lo;0;L;;;;;N;;;;;
+13971;EGYPTIAN HIEROGLYPH-13971;Lo;0;L;;;;;N;;;;;
+13972;EGYPTIAN HIEROGLYPH-13972;Lo;0;L;;;;;N;;;;;
+13973;EGYPTIAN HIEROGLYPH-13973;Lo;0;L;;;;;N;;;;;
+13974;EGYPTIAN HIEROGLYPH-13974;Lo;0;L;;;;;N;;;;;
+13975;EGYPTIAN HIEROGLYPH-13975;Lo;0;L;;;;;N;;;;;
+13976;EGYPTIAN HIEROGLYPH-13976;Lo;0;L;;;;;N;;;;;
+13977;EGYPTIAN HIEROGLYPH-13977;Lo;0;L;;;;;N;;;;;
+13978;EGYPTIAN HIEROGLYPH-13978;Lo;0;L;;;;;N;;;;;
+13979;EGYPTIAN HIEROGLYPH-13979;Lo;0;L;;;;;N;;;;;
+1397A;EGYPTIAN HIEROGLYPH-1397A;Lo;0;L;;;;;N;;;;;
+1397B;EGYPTIAN HIEROGLYPH-1397B;Lo;0;L;;;;;N;;;;;
+1397C;EGYPTIAN HIEROGLYPH-1397C;Lo;0;L;;;;;N;;;;;
+1397D;EGYPTIAN HIEROGLYPH-1397D;Lo;0;L;;;;;N;;;;;
+1397E;EGYPTIAN HIEROGLYPH-1397E;Lo;0;L;;;;;N;;;;;
+1397F;EGYPTIAN HIEROGLYPH-1397F;Lo;0;L;;;;;N;;;;;
+13980;EGYPTIAN HIEROGLYPH-13980;Lo;0;L;;;;;N;;;;;
+13981;EGYPTIAN HIEROGLYPH-13981;Lo;0;L;;;;;N;;;;;
+13982;EGYPTIAN HIEROGLYPH-13982;Lo;0;L;;;;;N;;;;;
+13983;EGYPTIAN HIEROGLYPH-13983;Lo;0;L;;;;;N;;;;;
+13984;EGYPTIAN HIEROGLYPH-13984;Lo;0;L;;;;;N;;;;;
+13985;EGYPTIAN HIEROGLYPH-13985;Lo;0;L;;;;;N;;;;;
+13986;EGYPTIAN HIEROGLYPH-13986;Lo;0;L;;;;;N;;;;;
+13987;EGYPTIAN HIEROGLYPH-13987;Lo;0;L;;;;;N;;;;;
+13988;EGYPTIAN HIEROGLYPH-13988;Lo;0;L;;;;;N;;;;;
+13989;EGYPTIAN HIEROGLYPH-13989;Lo;0;L;;;;;N;;;;;
+1398A;EGYPTIAN HIEROGLYPH-1398A;Lo;0;L;;;;;N;;;;;
+1398B;EGYPTIAN HIEROGLYPH-1398B;Lo;0;L;;;;;N;;;;;
+1398C;EGYPTIAN HIEROGLYPH-1398C;Lo;0;L;;;;;N;;;;;
+1398D;EGYPTIAN HIEROGLYPH-1398D;Lo;0;L;;;;;N;;;;;
+1398E;EGYPTIAN HIEROGLYPH-1398E;Lo;0;L;;;;;N;;;;;
+1398F;EGYPTIAN HIEROGLYPH-1398F;Lo;0;L;;;;;N;;;;;
+13990;EGYPTIAN HIEROGLYPH-13990;Lo;0;L;;;;;N;;;;;
+13991;EGYPTIAN HIEROGLYPH-13991;Lo;0;L;;;;;N;;;;;
+13992;EGYPTIAN HIEROGLYPH-13992;Lo;0;L;;;;;N;;;;;
+13993;EGYPTIAN HIEROGLYPH-13993;Lo;0;L;;;;;N;;;;;
+13994;EGYPTIAN HIEROGLYPH-13994;Lo;0;L;;;;;N;;;;;
+13995;EGYPTIAN HIEROGLYPH-13995;Lo;0;L;;;;;N;;;;;
+13996;EGYPTIAN HIEROGLYPH-13996;Lo;0;L;;;;;N;;;;;
+13997;EGYPTIAN HIEROGLYPH-13997;Lo;0;L;;;;;N;;;;;
+13998;EGYPTIAN HIEROGLYPH-13998;Lo;0;L;;;;;N;;;;;
+13999;EGYPTIAN HIEROGLYPH-13999;Lo;0;L;;;;;N;;;;;
+1399A;EGYPTIAN HIEROGLYPH-1399A;Lo;0;L;;;;;N;;;;;
+1399B;EGYPTIAN HIEROGLYPH-1399B;Lo;0;L;;;;;N;;;;;
+1399C;EGYPTIAN HIEROGLYPH-1399C;Lo;0;L;;;;;N;;;;;
+1399D;EGYPTIAN HIEROGLYPH-1399D;Lo;0;L;;;;;N;;;;;
+1399E;EGYPTIAN HIEROGLYPH-1399E;Lo;0;L;;;;;N;;;;;
+1399F;EGYPTIAN HIEROGLYPH-1399F;Lo;0;L;;;;;N;;;;;
+139A0;EGYPTIAN HIEROGLYPH-139A0;Lo;0;L;;;;;N;;;;;
+139A1;EGYPTIAN HIEROGLYPH-139A1;Lo;0;L;;;;;N;;;;;
+139A2;EGYPTIAN HIEROGLYPH-139A2;Lo;0;L;;;;;N;;;;;
+139A3;EGYPTIAN HIEROGLYPH-139A3;Lo;0;L;;;;;N;;;;;
+139A4;EGYPTIAN HIEROGLYPH-139A4;Lo;0;L;;;;;N;;;;;
+139A5;EGYPTIAN HIEROGLYPH-139A5;Lo;0;L;;;;;N;;;;;
+139A6;EGYPTIAN HIEROGLYPH-139A6;Lo;0;L;;;;;N;;;;;
+139A7;EGYPTIAN HIEROGLYPH-139A7;Lo;0;L;;;;;N;;;;;
+139A8;EGYPTIAN HIEROGLYPH-139A8;Lo;0;L;;;;;N;;;;;
+139A9;EGYPTIAN HIEROGLYPH-139A9;Lo;0;L;;;;;N;;;;;
+139AA;EGYPTIAN HIEROGLYPH-139AA;Lo;0;L;;;;;N;;;;;
+139AB;EGYPTIAN HIEROGLYPH-139AB;Lo;0;L;;;;;N;;;;;
+139AC;EGYPTIAN HIEROGLYPH-139AC;Lo;0;L;;;;;N;;;;;
+139AD;EGYPTIAN HIEROGLYPH-139AD;Lo;0;L;;;;;N;;;;;
+139AE;EGYPTIAN HIEROGLYPH-139AE;Lo;0;L;;;;;N;;;;;
+139AF;EGYPTIAN HIEROGLYPH-139AF;Lo;0;L;;;;;N;;;;;
+139B0;EGYPTIAN HIEROGLYPH-139B0;Lo;0;L;;;;;N;;;;;
+139B1;EGYPTIAN HIEROGLYPH-139B1;Lo;0;L;;;;;N;;;;;
+139B2;EGYPTIAN HIEROGLYPH-139B2;Lo;0;L;;;;;N;;;;;
+139B3;EGYPTIAN HIEROGLYPH-139B3;Lo;0;L;;;;;N;;;;;
+139B4;EGYPTIAN HIEROGLYPH-139B4;Lo;0;L;;;;;N;;;;;
+139B5;EGYPTIAN HIEROGLYPH-139B5;Lo;0;L;;;;;N;;;;;
+139B6;EGYPTIAN HIEROGLYPH-139B6;Lo;0;L;;;;;N;;;;;
+139B7;EGYPTIAN HIEROGLYPH-139B7;Lo;0;L;;;;;N;;;;;
+139B8;EGYPTIAN HIEROGLYPH-139B8;Lo;0;L;;;;;N;;;;;
+139B9;EGYPTIAN HIEROGLYPH-139B9;Lo;0;L;;;;;N;;;;;
+139BA;EGYPTIAN HIEROGLYPH-139BA;Lo;0;L;;;;;N;;;;;
+139BB;EGYPTIAN HIEROGLYPH-139BB;Lo;0;L;;;;;N;;;;;
+139BC;EGYPTIAN HIEROGLYPH-139BC;Lo;0;L;;;;;N;;;;;
+139BD;EGYPTIAN HIEROGLYPH-139BD;Lo;0;L;;;;;N;;;;;
+139BE;EGYPTIAN HIEROGLYPH-139BE;Lo;0;L;;;;;N;;;;;
+139BF;EGYPTIAN HIEROGLYPH-139BF;Lo;0;L;;;;;N;;;;;
+139C0;EGYPTIAN HIEROGLYPH-139C0;Lo;0;L;;;;;N;;;;;
+139C1;EGYPTIAN HIEROGLYPH-139C1;Lo;0;L;;;;;N;;;;;
+139C2;EGYPTIAN HIEROGLYPH-139C2;Lo;0;L;;;;;N;;;;;
+139C3;EGYPTIAN HIEROGLYPH-139C3;Lo;0;L;;;;;N;;;;;
+139C4;EGYPTIAN HIEROGLYPH-139C4;Lo;0;L;;;;;N;;;;;
+139C5;EGYPTIAN HIEROGLYPH-139C5;Lo;0;L;;;;;N;;;;;
+139C6;EGYPTIAN HIEROGLYPH-139C6;Lo;0;L;;;;;N;;;;;
+139C7;EGYPTIAN HIEROGLYPH-139C7;Lo;0;L;;;;;N;;;;;
+139C8;EGYPTIAN HIEROGLYPH-139C8;Lo;0;L;;;;;N;;;;;
+139C9;EGYPTIAN HIEROGLYPH-139C9;Lo;0;L;;;;;N;;;;;
+139CA;EGYPTIAN HIEROGLYPH-139CA;Lo;0;L;;;;;N;;;;;
+139CB;EGYPTIAN HIEROGLYPH-139CB;Lo;0;L;;;;;N;;;;;
+139CC;EGYPTIAN HIEROGLYPH-139CC;Lo;0;L;;;;;N;;;;;
+139CD;EGYPTIAN HIEROGLYPH-139CD;Lo;0;L;;;;;N;;;;;
+139CE;EGYPTIAN HIEROGLYPH-139CE;Lo;0;L;;;;;N;;;;;
+139CF;EGYPTIAN HIEROGLYPH-139CF;Lo;0;L;;;;;N;;;;;
+139D0;EGYPTIAN HIEROGLYPH-139D0;Lo;0;L;;;;;N;;;;;
+139D1;EGYPTIAN HIEROGLYPH-139D1;Lo;0;L;;;;;N;;;;;
+139D2;EGYPTIAN HIEROGLYPH-139D2;Lo;0;L;;;;;N;;;;;
+139D3;EGYPTIAN HIEROGLYPH-139D3;Lo;0;L;;;;;N;;;;;
+139D4;EGYPTIAN HIEROGLYPH-139D4;Lo;0;L;;;;;N;;;;;
+139D5;EGYPTIAN HIEROGLYPH-139D5;Lo;0;L;;;;;N;;;;;
+139D6;EGYPTIAN HIEROGLYPH-139D6;Lo;0;L;;;;;N;;;;;
+139D7;EGYPTIAN HIEROGLYPH-139D7;Lo;0;L;;;;;N;;;;;
+139D8;EGYPTIAN HIEROGLYPH-139D8;Lo;0;L;;;;;N;;;;;
+139D9;EGYPTIAN HIEROGLYPH-139D9;Lo;0;L;;;;;N;;;;;
+139DA;EGYPTIAN HIEROGLYPH-139DA;Lo;0;L;;;;;N;;;;;
+139DB;EGYPTIAN HIEROGLYPH-139DB;Lo;0;L;;;;;N;;;;;
+139DC;EGYPTIAN HIEROGLYPH-139DC;Lo;0;L;;;;;N;;;;;
+139DD;EGYPTIAN HIEROGLYPH-139DD;Lo;0;L;;;;;N;;;;;
+139DE;EGYPTIAN HIEROGLYPH-139DE;Lo;0;L;;;;;N;;;;;
+139DF;EGYPTIAN HIEROGLYPH-139DF;Lo;0;L;;;;;N;;;;;
+139E0;EGYPTIAN HIEROGLYPH-139E0;Lo;0;L;;;;;N;;;;;
+139E1;EGYPTIAN HIEROGLYPH-139E1;Lo;0;L;;;;;N;;;;;
+139E2;EGYPTIAN HIEROGLYPH-139E2;Lo;0;L;;;;;N;;;;;
+139E3;EGYPTIAN HIEROGLYPH-139E3;Lo;0;L;;;;;N;;;;;
+139E4;EGYPTIAN HIEROGLYPH-139E4;Lo;0;L;;;;;N;;;;;
+139E5;EGYPTIAN HIEROGLYPH-139E5;Lo;0;L;;;;;N;;;;;
+139E6;EGYPTIAN HIEROGLYPH-139E6;Lo;0;L;;;;;N;;;;;
+139E7;EGYPTIAN HIEROGLYPH-139E7;Lo;0;L;;;;;N;;;;;
+139E8;EGYPTIAN HIEROGLYPH-139E8;Lo;0;L;;;;;N;;;;;
+139E9;EGYPTIAN HIEROGLYPH-139E9;Lo;0;L;;;;;N;;;;;
+139EA;EGYPTIAN HIEROGLYPH-139EA;Lo;0;L;;;;;N;;;;;
+139EB;EGYPTIAN HIEROGLYPH-139EB;Lo;0;L;;;;;N;;;;;
+139EC;EGYPTIAN HIEROGLYPH-139EC;Lo;0;L;;;;;N;;;;;
+139ED;EGYPTIAN HIEROGLYPH-139ED;Lo;0;L;;;;;N;;;;;
+139EE;EGYPTIAN HIEROGLYPH-139EE;Lo;0;L;;;;;N;;;;;
+139EF;EGYPTIAN HIEROGLYPH-139EF;Lo;0;L;;;;;N;;;;;
+139F0;EGYPTIAN HIEROGLYPH-139F0;Lo;0;L;;;;;N;;;;;
+139F1;EGYPTIAN HIEROGLYPH-139F1;Lo;0;L;;;;;N;;;;;
+139F2;EGYPTIAN HIEROGLYPH-139F2;Lo;0;L;;;;;N;;;;;
+139F3;EGYPTIAN HIEROGLYPH-139F3;Lo;0;L;;;;;N;;;;;
+139F4;EGYPTIAN HIEROGLYPH-139F4;Lo;0;L;;;;;N;;;;;
+139F5;EGYPTIAN HIEROGLYPH-139F5;Lo;0;L;;;;;N;;;;;
+139F6;EGYPTIAN HIEROGLYPH-139F6;Lo;0;L;;;;;N;;;;;
+139F7;EGYPTIAN HIEROGLYPH-139F7;Lo;0;L;;;;;N;;;;;
+139F8;EGYPTIAN HIEROGLYPH-139F8;Lo;0;L;;;;;N;;;;;
+139F9;EGYPTIAN HIEROGLYPH-139F9;Lo;0;L;;;;;N;;;;;
+139FA;EGYPTIAN HIEROGLYPH-139FA;Lo;0;L;;;;;N;;;;;
+139FB;EGYPTIAN HIEROGLYPH-139FB;Lo;0;L;;;;;N;;;;;
+139FC;EGYPTIAN HIEROGLYPH-139FC;Lo;0;L;;;;;N;;;;;
+139FD;EGYPTIAN HIEROGLYPH-139FD;Lo;0;L;;;;;N;;;;;
+139FE;EGYPTIAN HIEROGLYPH-139FE;Lo;0;L;;;;;N;;;;;
+139FF;EGYPTIAN HIEROGLYPH-139FF;Lo;0;L;;;;;N;;;;;
+13A00;EGYPTIAN HIEROGLYPH-13A00;Lo;0;L;;;;;N;;;;;
+13A01;EGYPTIAN HIEROGLYPH-13A01;Lo;0;L;;;;;N;;;;;
+13A02;EGYPTIAN HIEROGLYPH-13A02;Lo;0;L;;;;;N;;;;;
+13A03;EGYPTIAN HIEROGLYPH-13A03;Lo;0;L;;;;;N;;;;;
+13A04;EGYPTIAN HIEROGLYPH-13A04;Lo;0;L;;;;;N;;;;;
+13A05;EGYPTIAN HIEROGLYPH-13A05;Lo;0;L;;;;;N;;;;;
+13A06;EGYPTIAN HIEROGLYPH-13A06;Lo;0;L;;;;;N;;;;;
+13A07;EGYPTIAN HIEROGLYPH-13A07;Lo;0;L;;;;;N;;;;;
+13A08;EGYPTIAN HIEROGLYPH-13A08;Lo;0;L;;;;;N;;;;;
+13A09;EGYPTIAN HIEROGLYPH-13A09;Lo;0;L;;;;;N;;;;;
+13A0A;EGYPTIAN HIEROGLYPH-13A0A;Lo;0;L;;;;;N;;;;;
+13A0B;EGYPTIAN HIEROGLYPH-13A0B;Lo;0;L;;;;;N;;;;;
+13A0C;EGYPTIAN HIEROGLYPH-13A0C;Lo;0;L;;;;;N;;;;;
+13A0D;EGYPTIAN HIEROGLYPH-13A0D;Lo;0;L;;;;;N;;;;;
+13A0E;EGYPTIAN HIEROGLYPH-13A0E;Lo;0;L;;;;;N;;;;;
+13A0F;EGYPTIAN HIEROGLYPH-13A0F;Lo;0;L;;;;;N;;;;;
+13A10;EGYPTIAN HIEROGLYPH-13A10;Lo;0;L;;;;;N;;;;;
+13A11;EGYPTIAN HIEROGLYPH-13A11;Lo;0;L;;;;;N;;;;;
+13A12;EGYPTIAN HIEROGLYPH-13A12;Lo;0;L;;;;;N;;;;;
+13A13;EGYPTIAN HIEROGLYPH-13A13;Lo;0;L;;;;;N;;;;;
+13A14;EGYPTIAN HIEROGLYPH-13A14;Lo;0;L;;;;;N;;;;;
+13A15;EGYPTIAN HIEROGLYPH-13A15;Lo;0;L;;;;;N;;;;;
+13A16;EGYPTIAN HIEROGLYPH-13A16;Lo;0;L;;;;;N;;;;;
+13A17;EGYPTIAN HIEROGLYPH-13A17;Lo;0;L;;;;;N;;;;;
+13A18;EGYPTIAN HIEROGLYPH-13A18;Lo;0;L;;;;;N;;;;;
+13A19;EGYPTIAN HIEROGLYPH-13A19;Lo;0;L;;;;;N;;;;;
+13A1A;EGYPTIAN HIEROGLYPH-13A1A;Lo;0;L;;;;;N;;;;;
+13A1B;EGYPTIAN HIEROGLYPH-13A1B;Lo;0;L;;;;;N;;;;;
+13A1C;EGYPTIAN HIEROGLYPH-13A1C;Lo;0;L;;;;;N;;;;;
+13A1D;EGYPTIAN HIEROGLYPH-13A1D;Lo;0;L;;;;;N;;;;;
+13A1E;EGYPTIAN HIEROGLYPH-13A1E;Lo;0;L;;;;;N;;;;;
+13A1F;EGYPTIAN HIEROGLYPH-13A1F;Lo;0;L;;;;;N;;;;;
+13A20;EGYPTIAN HIEROGLYPH-13A20;Lo;0;L;;;;;N;;;;;
+13A21;EGYPTIAN HIEROGLYPH-13A21;Lo;0;L;;;;;N;;;;;
+13A22;EGYPTIAN HIEROGLYPH-13A22;Lo;0;L;;;;;N;;;;;
+13A23;EGYPTIAN HIEROGLYPH-13A23;Lo;0;L;;;;;N;;;;;
+13A24;EGYPTIAN HIEROGLYPH-13A24;Lo;0;L;;;;;N;;;;;
+13A25;EGYPTIAN HIEROGLYPH-13A25;Lo;0;L;;;;;N;;;;;
+13A26;EGYPTIAN HIEROGLYPH-13A26;Lo;0;L;;;;;N;;;;;
+13A27;EGYPTIAN HIEROGLYPH-13A27;Lo;0;L;;;;;N;;;;;
+13A28;EGYPTIAN HIEROGLYPH-13A28;Lo;0;L;;;;;N;;;;;
+13A29;EGYPTIAN HIEROGLYPH-13A29;Lo;0;L;;;;;N;;;;;
+13A2A;EGYPTIAN HIEROGLYPH-13A2A;Lo;0;L;;;;;N;;;;;
+13A2B;EGYPTIAN HIEROGLYPH-13A2B;Lo;0;L;;;;;N;;;;;
+13A2C;EGYPTIAN HIEROGLYPH-13A2C;Lo;0;L;;;;;N;;;;;
+13A2D;EGYPTIAN HIEROGLYPH-13A2D;Lo;0;L;;;;;N;;;;;
+13A2E;EGYPTIAN HIEROGLYPH-13A2E;Lo;0;L;;;;;N;;;;;
+13A2F;EGYPTIAN HIEROGLYPH-13A2F;Lo;0;L;;;;;N;;;;;
+13A30;EGYPTIAN HIEROGLYPH-13A30;Lo;0;L;;;;;N;;;;;
+13A31;EGYPTIAN HIEROGLYPH-13A31;Lo;0;L;;;;;N;;;;;
+13A32;EGYPTIAN HIEROGLYPH-13A32;Lo;0;L;;;;;N;;;;;
+13A33;EGYPTIAN HIEROGLYPH-13A33;Lo;0;L;;;;;N;;;;;
+13A34;EGYPTIAN HIEROGLYPH-13A34;Lo;0;L;;;;;N;;;;;
+13A35;EGYPTIAN HIEROGLYPH-13A35;Lo;0;L;;;;;N;;;;;
+13A36;EGYPTIAN HIEROGLYPH-13A36;Lo;0;L;;;;;N;;;;;
+13A37;EGYPTIAN HIEROGLYPH-13A37;Lo;0;L;;;;;N;;;;;
+13A38;EGYPTIAN HIEROGLYPH-13A38;Lo;0;L;;;;;N;;;;;
+13A39;EGYPTIAN HIEROGLYPH-13A39;Lo;0;L;;;;;N;;;;;
+13A3A;EGYPTIAN HIEROGLYPH-13A3A;Lo;0;L;;;;;N;;;;;
+13A3B;EGYPTIAN HIEROGLYPH-13A3B;Lo;0;L;;;;;N;;;;;
+13A3C;EGYPTIAN HIEROGLYPH-13A3C;Lo;0;L;;;;;N;;;;;
+13A3D;EGYPTIAN HIEROGLYPH-13A3D;Lo;0;L;;;;;N;;;;;
+13A3E;EGYPTIAN HIEROGLYPH-13A3E;Lo;0;L;;;;;N;;;;;
+13A3F;EGYPTIAN HIEROGLYPH-13A3F;Lo;0;L;;;;;N;;;;;
+13A40;EGYPTIAN HIEROGLYPH-13A40;Lo;0;L;;;;;N;;;;;
+13A41;EGYPTIAN HIEROGLYPH-13A41;Lo;0;L;;;;;N;;;;;
+13A42;EGYPTIAN HIEROGLYPH-13A42;Lo;0;L;;;;;N;;;;;
+13A43;EGYPTIAN HIEROGLYPH-13A43;Lo;0;L;;;;;N;;;;;
+13A44;EGYPTIAN HIEROGLYPH-13A44;Lo;0;L;;;;;N;;;;;
+13A45;EGYPTIAN HIEROGLYPH-13A45;Lo;0;L;;;;;N;;;;;
+13A46;EGYPTIAN HIEROGLYPH-13A46;Lo;0;L;;;;;N;;;;;
+13A47;EGYPTIAN HIEROGLYPH-13A47;Lo;0;L;;;;;N;;;;;
+13A48;EGYPTIAN HIEROGLYPH-13A48;Lo;0;L;;;;;N;;;;;
+13A49;EGYPTIAN HIEROGLYPH-13A49;Lo;0;L;;;;;N;;;;;
+13A4A;EGYPTIAN HIEROGLYPH-13A4A;Lo;0;L;;;;;N;;;;;
+13A4B;EGYPTIAN HIEROGLYPH-13A4B;Lo;0;L;;;;;N;;;;;
+13A4C;EGYPTIAN HIEROGLYPH-13A4C;Lo;0;L;;;;;N;;;;;
+13A4D;EGYPTIAN HIEROGLYPH-13A4D;Lo;0;L;;;;;N;;;;;
+13A4E;EGYPTIAN HIEROGLYPH-13A4E;Lo;0;L;;;;;N;;;;;
+13A4F;EGYPTIAN HIEROGLYPH-13A4F;Lo;0;L;;;;;N;;;;;
+13A50;EGYPTIAN HIEROGLYPH-13A50;Lo;0;L;;;;;N;;;;;
+13A51;EGYPTIAN HIEROGLYPH-13A51;Lo;0;L;;;;;N;;;;;
+13A52;EGYPTIAN HIEROGLYPH-13A52;Lo;0;L;;;;;N;;;;;
+13A53;EGYPTIAN HIEROGLYPH-13A53;Lo;0;L;;;;;N;;;;;
+13A54;EGYPTIAN HIEROGLYPH-13A54;Lo;0;L;;;;;N;;;;;
+13A55;EGYPTIAN HIEROGLYPH-13A55;Lo;0;L;;;;;N;;;;;
+13A56;EGYPTIAN HIEROGLYPH-13A56;Lo;0;L;;;;;N;;;;;
+13A57;EGYPTIAN HIEROGLYPH-13A57;Lo;0;L;;;;;N;;;;;
+13A58;EGYPTIAN HIEROGLYPH-13A58;Lo;0;L;;;;;N;;;;;
+13A59;EGYPTIAN HIEROGLYPH-13A59;Lo;0;L;;;;;N;;;;;
+13A5A;EGYPTIAN HIEROGLYPH-13A5A;Lo;0;L;;;;;N;;;;;
+13A5B;EGYPTIAN HIEROGLYPH-13A5B;Lo;0;L;;;;;N;;;;;
+13A5C;EGYPTIAN HIEROGLYPH-13A5C;Lo;0;L;;;;;N;;;;;
+13A5D;EGYPTIAN HIEROGLYPH-13A5D;Lo;0;L;;;;;N;;;;;
+13A5E;EGYPTIAN HIEROGLYPH-13A5E;Lo;0;L;;;;;N;;;;;
+13A5F;EGYPTIAN HIEROGLYPH-13A5F;Lo;0;L;;;;;N;;;;;
+13A60;EGYPTIAN HIEROGLYPH-13A60;Lo;0;L;;;;;N;;;;;
+13A61;EGYPTIAN HIEROGLYPH-13A61;Lo;0;L;;;;;N;;;;;
+13A62;EGYPTIAN HIEROGLYPH-13A62;Lo;0;L;;;;;N;;;;;
+13A63;EGYPTIAN HIEROGLYPH-13A63;Lo;0;L;;;;;N;;;;;
+13A64;EGYPTIAN HIEROGLYPH-13A64;Lo;0;L;;;;;N;;;;;
+13A65;EGYPTIAN HIEROGLYPH-13A65;Lo;0;L;;;;;N;;;;;
+13A66;EGYPTIAN HIEROGLYPH-13A66;Lo;0;L;;;;;N;;;;;
+13A67;EGYPTIAN HIEROGLYPH-13A67;Lo;0;L;;;;;N;;;;;
+13A68;EGYPTIAN HIEROGLYPH-13A68;Lo;0;L;;;;;N;;;;;
+13A69;EGYPTIAN HIEROGLYPH-13A69;Lo;0;L;;;;;N;;;;;
+13A6A;EGYPTIAN HIEROGLYPH-13A6A;Lo;0;L;;;;;N;;;;;
+13A6B;EGYPTIAN HIEROGLYPH-13A6B;Lo;0;L;;;;;N;;;;;
+13A6C;EGYPTIAN HIEROGLYPH-13A6C;Lo;0;L;;;;;N;;;;;
+13A6D;EGYPTIAN HIEROGLYPH-13A6D;Lo;0;L;;;;;N;;;;;
+13A6E;EGYPTIAN HIEROGLYPH-13A6E;Lo;0;L;;;;;N;;;;;
+13A6F;EGYPTIAN HIEROGLYPH-13A6F;Lo;0;L;;;;;N;;;;;
+13A70;EGYPTIAN HIEROGLYPH-13A70;Lo;0;L;;;;;N;;;;;
+13A71;EGYPTIAN HIEROGLYPH-13A71;Lo;0;L;;;;;N;;;;;
+13A72;EGYPTIAN HIEROGLYPH-13A72;Lo;0;L;;;;;N;;;;;
+13A73;EGYPTIAN HIEROGLYPH-13A73;Lo;0;L;;;;;N;;;;;
+13A74;EGYPTIAN HIEROGLYPH-13A74;Lo;0;L;;;;;N;;;;;
+13A75;EGYPTIAN HIEROGLYPH-13A75;Lo;0;L;;;;;N;;;;;
+13A76;EGYPTIAN HIEROGLYPH-13A76;Lo;0;L;;;;;N;;;;;
+13A77;EGYPTIAN HIEROGLYPH-13A77;Lo;0;L;;;;;N;;;;;
+13A78;EGYPTIAN HIEROGLYPH-13A78;Lo;0;L;;;;;N;;;;;
+13A79;EGYPTIAN HIEROGLYPH-13A79;Lo;0;L;;;;;N;;;;;
+13A7A;EGYPTIAN HIEROGLYPH-13A7A;Lo;0;L;;;;;N;;;;;
+13A7B;EGYPTIAN HIEROGLYPH-13A7B;Lo;0;L;;;;;N;;;;;
+13A7C;EGYPTIAN HIEROGLYPH-13A7C;Lo;0;L;;;;;N;;;;;
+13A7D;EGYPTIAN HIEROGLYPH-13A7D;Lo;0;L;;;;;N;;;;;
+13A7E;EGYPTIAN HIEROGLYPH-13A7E;Lo;0;L;;;;;N;;;;;
+13A7F;EGYPTIAN HIEROGLYPH-13A7F;Lo;0;L;;;;;N;;;;;
+13A80;EGYPTIAN HIEROGLYPH-13A80;Lo;0;L;;;;;N;;;;;
+13A81;EGYPTIAN HIEROGLYPH-13A81;Lo;0;L;;;;;N;;;;;
+13A82;EGYPTIAN HIEROGLYPH-13A82;Lo;0;L;;;;;N;;;;;
+13A83;EGYPTIAN HIEROGLYPH-13A83;Lo;0;L;;;;;N;;;;;
+13A84;EGYPTIAN HIEROGLYPH-13A84;Lo;0;L;;;;;N;;;;;
+13A85;EGYPTIAN HIEROGLYPH-13A85;Lo;0;L;;;;;N;;;;;
+13A86;EGYPTIAN HIEROGLYPH-13A86;Lo;0;L;;;;;N;;;;;
+13A87;EGYPTIAN HIEROGLYPH-13A87;Lo;0;L;;;;;N;;;;;
+13A88;EGYPTIAN HIEROGLYPH-13A88;Lo;0;L;;;;;N;;;;;
+13A89;EGYPTIAN HIEROGLYPH-13A89;Lo;0;L;;;;;N;;;;;
+13A8A;EGYPTIAN HIEROGLYPH-13A8A;Lo;0;L;;;;;N;;;;;
+13A8B;EGYPTIAN HIEROGLYPH-13A8B;Lo;0;L;;;;;N;;;;;
+13A8C;EGYPTIAN HIEROGLYPH-13A8C;Lo;0;L;;;;;N;;;;;
+13A8D;EGYPTIAN HIEROGLYPH-13A8D;Lo;0;L;;;;;N;;;;;
+13A8E;EGYPTIAN HIEROGLYPH-13A8E;Lo;0;L;;;;;N;;;;;
+13A8F;EGYPTIAN HIEROGLYPH-13A8F;Lo;0;L;;;;;N;;;;;
+13A90;EGYPTIAN HIEROGLYPH-13A90;Lo;0;L;;;;;N;;;;;
+13A91;EGYPTIAN HIEROGLYPH-13A91;Lo;0;L;;;;;N;;;;;
+13A92;EGYPTIAN HIEROGLYPH-13A92;Lo;0;L;;;;;N;;;;;
+13A93;EGYPTIAN HIEROGLYPH-13A93;Lo;0;L;;;;;N;;;;;
+13A94;EGYPTIAN HIEROGLYPH-13A94;Lo;0;L;;;;;N;;;;;
+13A95;EGYPTIAN HIEROGLYPH-13A95;Lo;0;L;;;;;N;;;;;
+13A96;EGYPTIAN HIEROGLYPH-13A96;Lo;0;L;;;;;N;;;;;
+13A97;EGYPTIAN HIEROGLYPH-13A97;Lo;0;L;;;;;N;;;;;
+13A98;EGYPTIAN HIEROGLYPH-13A98;Lo;0;L;;;;;N;;;;;
+13A99;EGYPTIAN HIEROGLYPH-13A99;Lo;0;L;;;;;N;;;;;
+13A9A;EGYPTIAN HIEROGLYPH-13A9A;Lo;0;L;;;;;N;;;;;
+13A9B;EGYPTIAN HIEROGLYPH-13A9B;Lo;0;L;;;;;N;;;;;
+13A9C;EGYPTIAN HIEROGLYPH-13A9C;Lo;0;L;;;;;N;;;;;
+13A9D;EGYPTIAN HIEROGLYPH-13A9D;Lo;0;L;;;;;N;;;;;
+13A9E;EGYPTIAN HIEROGLYPH-13A9E;Lo;0;L;;;;;N;;;;;
+13A9F;EGYPTIAN HIEROGLYPH-13A9F;Lo;0;L;;;;;N;;;;;
+13AA0;EGYPTIAN HIEROGLYPH-13AA0;Lo;0;L;;;;;N;;;;;
+13AA1;EGYPTIAN HIEROGLYPH-13AA1;Lo;0;L;;;;;N;;;;;
+13AA2;EGYPTIAN HIEROGLYPH-13AA2;Lo;0;L;;;;;N;;;;;
+13AA3;EGYPTIAN HIEROGLYPH-13AA3;Lo;0;L;;;;;N;;;;;
+13AA4;EGYPTIAN HIEROGLYPH-13AA4;Lo;0;L;;;;;N;;;;;
+13AA5;EGYPTIAN HIEROGLYPH-13AA5;Lo;0;L;;;;;N;;;;;
+13AA6;EGYPTIAN HIEROGLYPH-13AA6;Lo;0;L;;;;;N;;;;;
+13AA7;EGYPTIAN HIEROGLYPH-13AA7;Lo;0;L;;;;;N;;;;;
+13AA8;EGYPTIAN HIEROGLYPH-13AA8;Lo;0;L;;;;;N;;;;;
+13AA9;EGYPTIAN HIEROGLYPH-13AA9;Lo;0;L;;;;;N;;;;;
+13AAA;EGYPTIAN HIEROGLYPH-13AAA;Lo;0;L;;;;;N;;;;;
+13AAB;EGYPTIAN HIEROGLYPH-13AAB;Lo;0;L;;;;;N;;;;;
+13AAC;EGYPTIAN HIEROGLYPH-13AAC;Lo;0;L;;;;;N;;;;;
+13AAD;EGYPTIAN HIEROGLYPH-13AAD;Lo;0;L;;;;;N;;;;;
+13AAE;EGYPTIAN HIEROGLYPH-13AAE;Lo;0;L;;;;;N;;;;;
+13AAF;EGYPTIAN HIEROGLYPH-13AAF;Lo;0;L;;;;;N;;;;;
+13AB0;EGYPTIAN HIEROGLYPH-13AB0;Lo;0;L;;;;;N;;;;;
+13AB1;EGYPTIAN HIEROGLYPH-13AB1;Lo;0;L;;;;;N;;;;;
+13AB2;EGYPTIAN HIEROGLYPH-13AB2;Lo;0;L;;;;;N;;;;;
+13AB3;EGYPTIAN HIEROGLYPH-13AB3;Lo;0;L;;;;;N;;;;;
+13AB4;EGYPTIAN HIEROGLYPH-13AB4;Lo;0;L;;;;;N;;;;;
+13AB5;EGYPTIAN HIEROGLYPH-13AB5;Lo;0;L;;;;;N;;;;;
+13AB6;EGYPTIAN HIEROGLYPH-13AB6;Lo;0;L;;;;;N;;;;;
+13AB7;EGYPTIAN HIEROGLYPH-13AB7;Lo;0;L;;;;;N;;;;;
+13AB8;EGYPTIAN HIEROGLYPH-13AB8;Lo;0;L;;;;;N;;;;;
+13AB9;EGYPTIAN HIEROGLYPH-13AB9;Lo;0;L;;;;;N;;;;;
+13ABA;EGYPTIAN HIEROGLYPH-13ABA;Lo;0;L;;;;;N;;;;;
+13ABB;EGYPTIAN HIEROGLYPH-13ABB;Lo;0;L;;;;;N;;;;;
+13ABC;EGYPTIAN HIEROGLYPH-13ABC;Lo;0;L;;;;;N;;;;;
+13ABD;EGYPTIAN HIEROGLYPH-13ABD;Lo;0;L;;;;;N;;;;;
+13ABE;EGYPTIAN HIEROGLYPH-13ABE;Lo;0;L;;;;;N;;;;;
+13ABF;EGYPTIAN HIEROGLYPH-13ABF;Lo;0;L;;;;;N;;;;;
+13AC0;EGYPTIAN HIEROGLYPH-13AC0;Lo;0;L;;;;;N;;;;;
+13AC1;EGYPTIAN HIEROGLYPH-13AC1;Lo;0;L;;;;;N;;;;;
+13AC2;EGYPTIAN HIEROGLYPH-13AC2;Lo;0;L;;;;;N;;;;;
+13AC3;EGYPTIAN HIEROGLYPH-13AC3;Lo;0;L;;;;;N;;;;;
+13AC4;EGYPTIAN HIEROGLYPH-13AC4;Lo;0;L;;;;;N;;;;;
+13AC5;EGYPTIAN HIEROGLYPH-13AC5;Lo;0;L;;;;;N;;;;;
+13AC6;EGYPTIAN HIEROGLYPH-13AC6;Lo;0;L;;;;;N;;;;;
+13AC7;EGYPTIAN HIEROGLYPH-13AC7;Lo;0;L;;;;;N;;;;;
+13AC8;EGYPTIAN HIEROGLYPH-13AC8;Lo;0;L;;;;;N;;;;;
+13AC9;EGYPTIAN HIEROGLYPH-13AC9;Lo;0;L;;;;;N;;;;;
+13ACA;EGYPTIAN HIEROGLYPH-13ACA;Lo;0;L;;;;;N;;;;;
+13ACB;EGYPTIAN HIEROGLYPH-13ACB;Lo;0;L;;;;;N;;;;;
+13ACC;EGYPTIAN HIEROGLYPH-13ACC;Lo;0;L;;;;;N;;;;;
+13ACD;EGYPTIAN HIEROGLYPH-13ACD;Lo;0;L;;;;;N;;;;;
+13ACE;EGYPTIAN HIEROGLYPH-13ACE;Lo;0;L;;;;;N;;;;;
+13ACF;EGYPTIAN HIEROGLYPH-13ACF;Lo;0;L;;;;;N;;;;;
+13AD0;EGYPTIAN HIEROGLYPH-13AD0;Lo;0;L;;;;;N;;;;;
+13AD1;EGYPTIAN HIEROGLYPH-13AD1;Lo;0;L;;;;;N;;;;;
+13AD2;EGYPTIAN HIEROGLYPH-13AD2;Lo;0;L;;;;;N;;;;;
+13AD3;EGYPTIAN HIEROGLYPH-13AD3;Lo;0;L;;;;;N;;;;;
+13AD4;EGYPTIAN HIEROGLYPH-13AD4;Lo;0;L;;;;;N;;;;;
+13AD5;EGYPTIAN HIEROGLYPH-13AD5;Lo;0;L;;;;;N;;;;;
+13AD6;EGYPTIAN HIEROGLYPH-13AD6;Lo;0;L;;;;;N;;;;;
+13AD7;EGYPTIAN HIEROGLYPH-13AD7;Lo;0;L;;;;;N;;;;;
+13AD8;EGYPTIAN HIEROGLYPH-13AD8;Lo;0;L;;;;;N;;;;;
+13AD9;EGYPTIAN HIEROGLYPH-13AD9;Lo;0;L;;;;;N;;;;;
+13ADA;EGYPTIAN HIEROGLYPH-13ADA;Lo;0;L;;;;;N;;;;;
+13ADB;EGYPTIAN HIEROGLYPH-13ADB;Lo;0;L;;;;;N;;;;;
+13ADC;EGYPTIAN HIEROGLYPH-13ADC;Lo;0;L;;;;;N;;;;;
+13ADD;EGYPTIAN HIEROGLYPH-13ADD;Lo;0;L;;;;;N;;;;;
+13ADE;EGYPTIAN HIEROGLYPH-13ADE;Lo;0;L;;;;;N;;;;;
+13ADF;EGYPTIAN HIEROGLYPH-13ADF;Lo;0;L;;;;;N;;;;;
+13AE0;EGYPTIAN HIEROGLYPH-13AE0;Lo;0;L;;;;;N;;;;;
+13AE1;EGYPTIAN HIEROGLYPH-13AE1;Lo;0;L;;;;;N;;;;;
+13AE2;EGYPTIAN HIEROGLYPH-13AE2;Lo;0;L;;;;;N;;;;;
+13AE3;EGYPTIAN HIEROGLYPH-13AE3;Lo;0;L;;;;;N;;;;;
+13AE4;EGYPTIAN HIEROGLYPH-13AE4;Lo;0;L;;;;;N;;;;;
+13AE5;EGYPTIAN HIEROGLYPH-13AE5;Lo;0;L;;;;;N;;;;;
+13AE6;EGYPTIAN HIEROGLYPH-13AE6;Lo;0;L;;;;;N;;;;;
+13AE7;EGYPTIAN HIEROGLYPH-13AE7;Lo;0;L;;;;;N;;;;;
+13AE8;EGYPTIAN HIEROGLYPH-13AE8;Lo;0;L;;;;;N;;;;;
+13AE9;EGYPTIAN HIEROGLYPH-13AE9;Lo;0;L;;;;;N;;;;;
+13AEA;EGYPTIAN HIEROGLYPH-13AEA;Lo;0;L;;;;;N;;;;;
+13AEB;EGYPTIAN HIEROGLYPH-13AEB;Lo;0;L;;;;;N;;;;;
+13AEC;EGYPTIAN HIEROGLYPH-13AEC;Lo;0;L;;;;;N;;;;;
+13AED;EGYPTIAN HIEROGLYPH-13AED;Lo;0;L;;;;;N;;;;;
+13AEE;EGYPTIAN HIEROGLYPH-13AEE;Lo;0;L;;;;;N;;;;;
+13AEF;EGYPTIAN HIEROGLYPH-13AEF;Lo;0;L;;;;;N;;;;;
+13AF0;EGYPTIAN HIEROGLYPH-13AF0;Lo;0;L;;;;;N;;;;;
+13AF1;EGYPTIAN HIEROGLYPH-13AF1;Lo;0;L;;;;;N;;;;;
+13AF2;EGYPTIAN HIEROGLYPH-13AF2;Lo;0;L;;;;;N;;;;;
+13AF3;EGYPTIAN HIEROGLYPH-13AF3;Lo;0;L;;;;;N;;;;;
+13AF4;EGYPTIAN HIEROGLYPH-13AF4;Lo;0;L;;;;;N;;;;;
+13AF5;EGYPTIAN HIEROGLYPH-13AF5;Lo;0;L;;;;;N;;;;;
+13AF6;EGYPTIAN HIEROGLYPH-13AF6;Lo;0;L;;;;;N;;;;;
+13AF7;EGYPTIAN HIEROGLYPH-13AF7;Lo;0;L;;;;;N;;;;;
+13AF8;EGYPTIAN HIEROGLYPH-13AF8;Lo;0;L;;;;;N;;;;;
+13AF9;EGYPTIAN HIEROGLYPH-13AF9;Lo;0;L;;;;;N;;;;;
+13AFA;EGYPTIAN HIEROGLYPH-13AFA;Lo;0;L;;;;;N;;;;;
+13AFB;EGYPTIAN HIEROGLYPH-13AFB;Lo;0;L;;;;;N;;;;;
+13AFC;EGYPTIAN HIEROGLYPH-13AFC;Lo;0;L;;;;;N;;;;;
+13AFD;EGYPTIAN HIEROGLYPH-13AFD;Lo;0;L;;;;;N;;;;;
+13AFE;EGYPTIAN HIEROGLYPH-13AFE;Lo;0;L;;;;;N;;;;;
+13AFF;EGYPTIAN HIEROGLYPH-13AFF;Lo;0;L;;;;;N;;;;;
+13B00;EGYPTIAN HIEROGLYPH-13B00;Lo;0;L;;;;;N;;;;;
+13B01;EGYPTIAN HIEROGLYPH-13B01;Lo;0;L;;;;;N;;;;;
+13B02;EGYPTIAN HIEROGLYPH-13B02;Lo;0;L;;;;;N;;;;;
+13B03;EGYPTIAN HIEROGLYPH-13B03;Lo;0;L;;;;;N;;;;;
+13B04;EGYPTIAN HIEROGLYPH-13B04;Lo;0;L;;;;;N;;;;;
+13B05;EGYPTIAN HIEROGLYPH-13B05;Lo;0;L;;;;;N;;;;;
+13B06;EGYPTIAN HIEROGLYPH-13B06;Lo;0;L;;;;;N;;;;;
+13B07;EGYPTIAN HIEROGLYPH-13B07;Lo;0;L;;;;;N;;;;;
+13B08;EGYPTIAN HIEROGLYPH-13B08;Lo;0;L;;;;;N;;;;;
+13B09;EGYPTIAN HIEROGLYPH-13B09;Lo;0;L;;;;;N;;;;;
+13B0A;EGYPTIAN HIEROGLYPH-13B0A;Lo;0;L;;;;;N;;;;;
+13B0B;EGYPTIAN HIEROGLYPH-13B0B;Lo;0;L;;;;;N;;;;;
+13B0C;EGYPTIAN HIEROGLYPH-13B0C;Lo;0;L;;;;;N;;;;;
+13B0D;EGYPTIAN HIEROGLYPH-13B0D;Lo;0;L;;;;;N;;;;;
+13B0E;EGYPTIAN HIEROGLYPH-13B0E;Lo;0;L;;;;;N;;;;;
+13B0F;EGYPTIAN HIEROGLYPH-13B0F;Lo;0;L;;;;;N;;;;;
+13B10;EGYPTIAN HIEROGLYPH-13B10;Lo;0;L;;;;;N;;;;;
+13B11;EGYPTIAN HIEROGLYPH-13B11;Lo;0;L;;;;;N;;;;;
+13B12;EGYPTIAN HIEROGLYPH-13B12;Lo;0;L;;;;;N;;;;;
+13B13;EGYPTIAN HIEROGLYPH-13B13;Lo;0;L;;;;;N;;;;;
+13B14;EGYPTIAN HIEROGLYPH-13B14;Lo;0;L;;;;;N;;;;;
+13B15;EGYPTIAN HIEROGLYPH-13B15;Lo;0;L;;;;;N;;;;;
+13B16;EGYPTIAN HIEROGLYPH-13B16;Lo;0;L;;;;;N;;;;;
+13B17;EGYPTIAN HIEROGLYPH-13B17;Lo;0;L;;;;;N;;;;;
+13B18;EGYPTIAN HIEROGLYPH-13B18;Lo;0;L;;;;;N;;;;;
+13B19;EGYPTIAN HIEROGLYPH-13B19;Lo;0;L;;;;;N;;;;;
+13B1A;EGYPTIAN HIEROGLYPH-13B1A;Lo;0;L;;;;;N;;;;;
+13B1B;EGYPTIAN HIEROGLYPH-13B1B;Lo;0;L;;;;;N;;;;;
+13B1C;EGYPTIAN HIEROGLYPH-13B1C;Lo;0;L;;;;;N;;;;;
+13B1D;EGYPTIAN HIEROGLYPH-13B1D;Lo;0;L;;;;;N;;;;;
+13B1E;EGYPTIAN HIEROGLYPH-13B1E;Lo;0;L;;;;;N;;;;;
+13B1F;EGYPTIAN HIEROGLYPH-13B1F;Lo;0;L;;;;;N;;;;;
+13B20;EGYPTIAN HIEROGLYPH-13B20;Lo;0;L;;;;;N;;;;;
+13B21;EGYPTIAN HIEROGLYPH-13B21;Lo;0;L;;;;;N;;;;;
+13B22;EGYPTIAN HIEROGLYPH-13B22;Lo;0;L;;;;;N;;;;;
+13B23;EGYPTIAN HIEROGLYPH-13B23;Lo;0;L;;;;;N;;;;;
+13B24;EGYPTIAN HIEROGLYPH-13B24;Lo;0;L;;;;;N;;;;;
+13B25;EGYPTIAN HIEROGLYPH-13B25;Lo;0;L;;;;;N;;;;;
+13B26;EGYPTIAN HIEROGLYPH-13B26;Lo;0;L;;;;;N;;;;;
+13B27;EGYPTIAN HIEROGLYPH-13B27;Lo;0;L;;;;;N;;;;;
+13B28;EGYPTIAN HIEROGLYPH-13B28;Lo;0;L;;;;;N;;;;;
+13B29;EGYPTIAN HIEROGLYPH-13B29;Lo;0;L;;;;;N;;;;;
+13B2A;EGYPTIAN HIEROGLYPH-13B2A;Lo;0;L;;;;;N;;;;;
+13B2B;EGYPTIAN HIEROGLYPH-13B2B;Lo;0;L;;;;;N;;;;;
+13B2C;EGYPTIAN HIEROGLYPH-13B2C;Lo;0;L;;;;;N;;;;;
+13B2D;EGYPTIAN HIEROGLYPH-13B2D;Lo;0;L;;;;;N;;;;;
+13B2E;EGYPTIAN HIEROGLYPH-13B2E;Lo;0;L;;;;;N;;;;;
+13B2F;EGYPTIAN HIEROGLYPH-13B2F;Lo;0;L;;;;;N;;;;;
+13B30;EGYPTIAN HIEROGLYPH-13B30;Lo;0;L;;;;;N;;;;;
+13B31;EGYPTIAN HIEROGLYPH-13B31;Lo;0;L;;;;;N;;;;;
+13B32;EGYPTIAN HIEROGLYPH-13B32;Lo;0;L;;;;;N;;;;;
+13B33;EGYPTIAN HIEROGLYPH-13B33;Lo;0;L;;;;;N;;;;;
+13B34;EGYPTIAN HIEROGLYPH-13B34;Lo;0;L;;;;;N;;;;;
+13B35;EGYPTIAN HIEROGLYPH-13B35;Lo;0;L;;;;;N;;;;;
+13B36;EGYPTIAN HIEROGLYPH-13B36;Lo;0;L;;;;;N;;;;;
+13B37;EGYPTIAN HIEROGLYPH-13B37;Lo;0;L;;;;;N;;;;;
+13B38;EGYPTIAN HIEROGLYPH-13B38;Lo;0;L;;;;;N;;;;;
+13B39;EGYPTIAN HIEROGLYPH-13B39;Lo;0;L;;;;;N;;;;;
+13B3A;EGYPTIAN HIEROGLYPH-13B3A;Lo;0;L;;;;;N;;;;;
+13B3B;EGYPTIAN HIEROGLYPH-13B3B;Lo;0;L;;;;;N;;;;;
+13B3C;EGYPTIAN HIEROGLYPH-13B3C;Lo;0;L;;;;;N;;;;;
+13B3D;EGYPTIAN HIEROGLYPH-13B3D;Lo;0;L;;;;;N;;;;;
+13B3E;EGYPTIAN HIEROGLYPH-13B3E;Lo;0;L;;;;;N;;;;;
+13B3F;EGYPTIAN HIEROGLYPH-13B3F;Lo;0;L;;;;;N;;;;;
+13B40;EGYPTIAN HIEROGLYPH-13B40;Lo;0;L;;;;;N;;;;;
+13B41;EGYPTIAN HIEROGLYPH-13B41;Lo;0;L;;;;;N;;;;;
+13B42;EGYPTIAN HIEROGLYPH-13B42;Lo;0;L;;;;;N;;;;;
+13B43;EGYPTIAN HIEROGLYPH-13B43;Lo;0;L;;;;;N;;;;;
+13B44;EGYPTIAN HIEROGLYPH-13B44;Lo;0;L;;;;;N;;;;;
+13B45;EGYPTIAN HIEROGLYPH-13B45;Lo;0;L;;;;;N;;;;;
+13B46;EGYPTIAN HIEROGLYPH-13B46;Lo;0;L;;;;;N;;;;;
+13B47;EGYPTIAN HIEROGLYPH-13B47;Lo;0;L;;;;;N;;;;;
+13B48;EGYPTIAN HIEROGLYPH-13B48;Lo;0;L;;;;;N;;;;;
+13B49;EGYPTIAN HIEROGLYPH-13B49;Lo;0;L;;;;;N;;;;;
+13B4A;EGYPTIAN HIEROGLYPH-13B4A;Lo;0;L;;;;;N;;;;;
+13B4B;EGYPTIAN HIEROGLYPH-13B4B;Lo;0;L;;;;;N;;;;;
+13B4C;EGYPTIAN HIEROGLYPH-13B4C;Lo;0;L;;;;;N;;;;;
+13B4D;EGYPTIAN HIEROGLYPH-13B4D;Lo;0;L;;;;;N;;;;;
+13B4E;EGYPTIAN HIEROGLYPH-13B4E;Lo;0;L;;;;;N;;;;;
+13B4F;EGYPTIAN HIEROGLYPH-13B4F;Lo;0;L;;;;;N;;;;;
+13B50;EGYPTIAN HIEROGLYPH-13B50;Lo;0;L;;;;;N;;;;;
+13B51;EGYPTIAN HIEROGLYPH-13B51;Lo;0;L;;;;;N;;;;;
+13B52;EGYPTIAN HIEROGLYPH-13B52;Lo;0;L;;;;;N;;;;;
+13B53;EGYPTIAN HIEROGLYPH-13B53;Lo;0;L;;;;;N;;;;;
+13B54;EGYPTIAN HIEROGLYPH-13B54;Lo;0;L;;;;;N;;;;;
+13B55;EGYPTIAN HIEROGLYPH-13B55;Lo;0;L;;;;;N;;;;;
+13B56;EGYPTIAN HIEROGLYPH-13B56;Lo;0;L;;;;;N;;;;;
+13B57;EGYPTIAN HIEROGLYPH-13B57;Lo;0;L;;;;;N;;;;;
+13B58;EGYPTIAN HIEROGLYPH-13B58;Lo;0;L;;;;;N;;;;;
+13B59;EGYPTIAN HIEROGLYPH-13B59;Lo;0;L;;;;;N;;;;;
+13B5A;EGYPTIAN HIEROGLYPH-13B5A;Lo;0;L;;;;;N;;;;;
+13B5B;EGYPTIAN HIEROGLYPH-13B5B;Lo;0;L;;;;;N;;;;;
+13B5C;EGYPTIAN HIEROGLYPH-13B5C;Lo;0;L;;;;;N;;;;;
+13B5D;EGYPTIAN HIEROGLYPH-13B5D;Lo;0;L;;;;;N;;;;;
+13B5E;EGYPTIAN HIEROGLYPH-13B5E;Lo;0;L;;;;;N;;;;;
+13B5F;EGYPTIAN HIEROGLYPH-13B5F;Lo;0;L;;;;;N;;;;;
+13B60;EGYPTIAN HIEROGLYPH-13B60;Lo;0;L;;;;;N;;;;;
+13B61;EGYPTIAN HIEROGLYPH-13B61;Lo;0;L;;;;;N;;;;;
+13B62;EGYPTIAN HIEROGLYPH-13B62;Lo;0;L;;;;;N;;;;;
+13B63;EGYPTIAN HIEROGLYPH-13B63;Lo;0;L;;;;;N;;;;;
+13B64;EGYPTIAN HIEROGLYPH-13B64;Lo;0;L;;;;;N;;;;;
+13B65;EGYPTIAN HIEROGLYPH-13B65;Lo;0;L;;;;;N;;;;;
+13B66;EGYPTIAN HIEROGLYPH-13B66;Lo;0;L;;;;;N;;;;;
+13B67;EGYPTIAN HIEROGLYPH-13B67;Lo;0;L;;;;;N;;;;;
+13B68;EGYPTIAN HIEROGLYPH-13B68;Lo;0;L;;;;;N;;;;;
+13B69;EGYPTIAN HIEROGLYPH-13B69;Lo;0;L;;;;;N;;;;;
+13B6A;EGYPTIAN HIEROGLYPH-13B6A;Lo;0;L;;;;;N;;;;;
+13B6B;EGYPTIAN HIEROGLYPH-13B6B;Lo;0;L;;;;;N;;;;;
+13B6C;EGYPTIAN HIEROGLYPH-13B6C;Lo;0;L;;;;;N;;;;;
+13B6D;EGYPTIAN HIEROGLYPH-13B6D;Lo;0;L;;;;;N;;;;;
+13B6E;EGYPTIAN HIEROGLYPH-13B6E;Lo;0;L;;;;;N;;;;;
+13B6F;EGYPTIAN HIEROGLYPH-13B6F;Lo;0;L;;;;;N;;;;;
+13B70;EGYPTIAN HIEROGLYPH-13B70;Lo;0;L;;;;;N;;;;;
+13B71;EGYPTIAN HIEROGLYPH-13B71;Lo;0;L;;;;;N;;;;;
+13B72;EGYPTIAN HIEROGLYPH-13B72;Lo;0;L;;;;;N;;;;;
+13B73;EGYPTIAN HIEROGLYPH-13B73;Lo;0;L;;;;;N;;;;;
+13B74;EGYPTIAN HIEROGLYPH-13B74;Lo;0;L;;;;;N;;;;;
+13B75;EGYPTIAN HIEROGLYPH-13B75;Lo;0;L;;;;;N;;;;;
+13B76;EGYPTIAN HIEROGLYPH-13B76;Lo;0;L;;;;;N;;;;;
+13B77;EGYPTIAN HIEROGLYPH-13B77;Lo;0;L;;;;;N;;;;;
+13B78;EGYPTIAN HIEROGLYPH-13B78;Lo;0;L;;;;;N;;;;;
+13B79;EGYPTIAN HIEROGLYPH-13B79;Lo;0;L;;;;;N;;;;;
+13B7A;EGYPTIAN HIEROGLYPH-13B7A;Lo;0;L;;;;;N;;;;;
+13B7B;EGYPTIAN HIEROGLYPH-13B7B;Lo;0;L;;;;;N;;;;;
+13B7C;EGYPTIAN HIEROGLYPH-13B7C;Lo;0;L;;;;;N;;;;;
+13B7D;EGYPTIAN HIEROGLYPH-13B7D;Lo;0;L;;;;;N;;;;;
+13B7E;EGYPTIAN HIEROGLYPH-13B7E;Lo;0;L;;;;;N;;;;;
+13B7F;EGYPTIAN HIEROGLYPH-13B7F;Lo;0;L;;;;;N;;;;;
+13B80;EGYPTIAN HIEROGLYPH-13B80;Lo;0;L;;;;;N;;;;;
+13B81;EGYPTIAN HIEROGLYPH-13B81;Lo;0;L;;;;;N;;;;;
+13B82;EGYPTIAN HIEROGLYPH-13B82;Lo;0;L;;;;;N;;;;;
+13B83;EGYPTIAN HIEROGLYPH-13B83;Lo;0;L;;;;;N;;;;;
+13B84;EGYPTIAN HIEROGLYPH-13B84;Lo;0;L;;;;;N;;;;;
+13B85;EGYPTIAN HIEROGLYPH-13B85;Lo;0;L;;;;;N;;;;;
+13B86;EGYPTIAN HIEROGLYPH-13B86;Lo;0;L;;;;;N;;;;;
+13B87;EGYPTIAN HIEROGLYPH-13B87;Lo;0;L;;;;;N;;;;;
+13B88;EGYPTIAN HIEROGLYPH-13B88;Lo;0;L;;;;;N;;;;;
+13B89;EGYPTIAN HIEROGLYPH-13B89;Lo;0;L;;;;;N;;;;;
+13B8A;EGYPTIAN HIEROGLYPH-13B8A;Lo;0;L;;;;;N;;;;;
+13B8B;EGYPTIAN HIEROGLYPH-13B8B;Lo;0;L;;;;;N;;;;;
+13B8C;EGYPTIAN HIEROGLYPH-13B8C;Lo;0;L;;;;;N;;;;;
+13B8D;EGYPTIAN HIEROGLYPH-13B8D;Lo;0;L;;;;;N;;;;;
+13B8E;EGYPTIAN HIEROGLYPH-13B8E;Lo;0;L;;;;;N;;;;;
+13B8F;EGYPTIAN HIEROGLYPH-13B8F;Lo;0;L;;;;;N;;;;;
+13B90;EGYPTIAN HIEROGLYPH-13B90;Lo;0;L;;;;;N;;;;;
+13B91;EGYPTIAN HIEROGLYPH-13B91;Lo;0;L;;;;;N;;;;;
+13B92;EGYPTIAN HIEROGLYPH-13B92;Lo;0;L;;;;;N;;;;;
+13B93;EGYPTIAN HIEROGLYPH-13B93;Lo;0;L;;;;;N;;;;;
+13B94;EGYPTIAN HIEROGLYPH-13B94;Lo;0;L;;;;;N;;;;;
+13B95;EGYPTIAN HIEROGLYPH-13B95;Lo;0;L;;;;;N;;;;;
+13B96;EGYPTIAN HIEROGLYPH-13B96;Lo;0;L;;;;;N;;;;;
+13B97;EGYPTIAN HIEROGLYPH-13B97;Lo;0;L;;;;;N;;;;;
+13B98;EGYPTIAN HIEROGLYPH-13B98;Lo;0;L;;;;;N;;;;;
+13B99;EGYPTIAN HIEROGLYPH-13B99;Lo;0;L;;;;;N;;;;;
+13B9A;EGYPTIAN HIEROGLYPH-13B9A;Lo;0;L;;;;;N;;;;;
+13B9B;EGYPTIAN HIEROGLYPH-13B9B;Lo;0;L;;;;;N;;;;;
+13B9C;EGYPTIAN HIEROGLYPH-13B9C;Lo;0;L;;;;;N;;;;;
+13B9D;EGYPTIAN HIEROGLYPH-13B9D;Lo;0;L;;;;;N;;;;;
+13B9E;EGYPTIAN HIEROGLYPH-13B9E;Lo;0;L;;;;;N;;;;;
+13B9F;EGYPTIAN HIEROGLYPH-13B9F;Lo;0;L;;;;;N;;;;;
+13BA0;EGYPTIAN HIEROGLYPH-13BA0;Lo;0;L;;;;;N;;;;;
+13BA1;EGYPTIAN HIEROGLYPH-13BA1;Lo;0;L;;;;;N;;;;;
+13BA2;EGYPTIAN HIEROGLYPH-13BA2;Lo;0;L;;;;;N;;;;;
+13BA3;EGYPTIAN HIEROGLYPH-13BA3;Lo;0;L;;;;;N;;;;;
+13BA4;EGYPTIAN HIEROGLYPH-13BA4;Lo;0;L;;;;;N;;;;;
+13BA5;EGYPTIAN HIEROGLYPH-13BA5;Lo;0;L;;;;;N;;;;;
+13BA6;EGYPTIAN HIEROGLYPH-13BA6;Lo;0;L;;;;;N;;;;;
+13BA7;EGYPTIAN HIEROGLYPH-13BA7;Lo;0;L;;;;;N;;;;;
+13BA8;EGYPTIAN HIEROGLYPH-13BA8;Lo;0;L;;;;;N;;;;;
+13BA9;EGYPTIAN HIEROGLYPH-13BA9;Lo;0;L;;;;;N;;;;;
+13BAA;EGYPTIAN HIEROGLYPH-13BAA;Lo;0;L;;;;;N;;;;;
+13BAB;EGYPTIAN HIEROGLYPH-13BAB;Lo;0;L;;;;;N;;;;;
+13BAC;EGYPTIAN HIEROGLYPH-13BAC;Lo;0;L;;;;;N;;;;;
+13BAD;EGYPTIAN HIEROGLYPH-13BAD;Lo;0;L;;;;;N;;;;;
+13BAE;EGYPTIAN HIEROGLYPH-13BAE;Lo;0;L;;;;;N;;;;;
+13BAF;EGYPTIAN HIEROGLYPH-13BAF;Lo;0;L;;;;;N;;;;;
+13BB0;EGYPTIAN HIEROGLYPH-13BB0;Lo;0;L;;;;;N;;;;;
+13BB1;EGYPTIAN HIEROGLYPH-13BB1;Lo;0;L;;;;;N;;;;;
+13BB2;EGYPTIAN HIEROGLYPH-13BB2;Lo;0;L;;;;;N;;;;;
+13BB3;EGYPTIAN HIEROGLYPH-13BB3;Lo;0;L;;;;;N;;;;;
+13BB4;EGYPTIAN HIEROGLYPH-13BB4;Lo;0;L;;;;;N;;;;;
+13BB5;EGYPTIAN HIEROGLYPH-13BB5;Lo;0;L;;;;;N;;;;;
+13BB6;EGYPTIAN HIEROGLYPH-13BB6;Lo;0;L;;;;;N;;;;;
+13BB7;EGYPTIAN HIEROGLYPH-13BB7;Lo;0;L;;;;;N;;;;;
+13BB8;EGYPTIAN HIEROGLYPH-13BB8;Lo;0;L;;;;;N;;;;;
+13BB9;EGYPTIAN HIEROGLYPH-13BB9;Lo;0;L;;;;;N;;;;;
+13BBA;EGYPTIAN HIEROGLYPH-13BBA;Lo;0;L;;;;;N;;;;;
+13BBB;EGYPTIAN HIEROGLYPH-13BBB;Lo;0;L;;;;;N;;;;;
+13BBC;EGYPTIAN HIEROGLYPH-13BBC;Lo;0;L;;;;;N;;;;;
+13BBD;EGYPTIAN HIEROGLYPH-13BBD;Lo;0;L;;;;;N;;;;;
+13BBE;EGYPTIAN HIEROGLYPH-13BBE;Lo;0;L;;;;;N;;;;;
+13BBF;EGYPTIAN HIEROGLYPH-13BBF;Lo;0;L;;;;;N;;;;;
+13BC0;EGYPTIAN HIEROGLYPH-13BC0;Lo;0;L;;;;;N;;;;;
+13BC1;EGYPTIAN HIEROGLYPH-13BC1;Lo;0;L;;;;;N;;;;;
+13BC2;EGYPTIAN HIEROGLYPH-13BC2;Lo;0;L;;;;;N;;;;;
+13BC3;EGYPTIAN HIEROGLYPH-13BC3;Lo;0;L;;;;;N;;;;;
+13BC4;EGYPTIAN HIEROGLYPH-13BC4;Lo;0;L;;;;;N;;;;;
+13BC5;EGYPTIAN HIEROGLYPH-13BC5;Lo;0;L;;;;;N;;;;;
+13BC6;EGYPTIAN HIEROGLYPH-13BC6;Lo;0;L;;;;;N;;;;;
+13BC7;EGYPTIAN HIEROGLYPH-13BC7;Lo;0;L;;;;;N;;;;;
+13BC8;EGYPTIAN HIEROGLYPH-13BC8;Lo;0;L;;;;;N;;;;;
+13BC9;EGYPTIAN HIEROGLYPH-13BC9;Lo;0;L;;;;;N;;;;;
+13BCA;EGYPTIAN HIEROGLYPH-13BCA;Lo;0;L;;;;;N;;;;;
+13BCB;EGYPTIAN HIEROGLYPH-13BCB;Lo;0;L;;;;;N;;;;;
+13BCC;EGYPTIAN HIEROGLYPH-13BCC;Lo;0;L;;;;;N;;;;;
+13BCD;EGYPTIAN HIEROGLYPH-13BCD;Lo;0;L;;;;;N;;;;;
+13BCE;EGYPTIAN HIEROGLYPH-13BCE;Lo;0;L;;;;;N;;;;;
+13BCF;EGYPTIAN HIEROGLYPH-13BCF;Lo;0;L;;;;;N;;;;;
+13BD0;EGYPTIAN HIEROGLYPH-13BD0;Lo;0;L;;;;;N;;;;;
+13BD1;EGYPTIAN HIEROGLYPH-13BD1;Lo;0;L;;;;;N;;;;;
+13BD2;EGYPTIAN HIEROGLYPH-13BD2;Lo;0;L;;;;;N;;;;;
+13BD3;EGYPTIAN HIEROGLYPH-13BD3;Lo;0;L;;;;;N;;;;;
+13BD4;EGYPTIAN HIEROGLYPH-13BD4;Lo;0;L;;;;;N;;;;;
+13BD5;EGYPTIAN HIEROGLYPH-13BD5;Lo;0;L;;;;;N;;;;;
+13BD6;EGYPTIAN HIEROGLYPH-13BD6;Lo;0;L;;;;;N;;;;;
+13BD7;EGYPTIAN HIEROGLYPH-13BD7;Lo;0;L;;;;;N;;;;;
+13BD8;EGYPTIAN HIEROGLYPH-13BD8;Lo;0;L;;;;;N;;;;;
+13BD9;EGYPTIAN HIEROGLYPH-13BD9;Lo;0;L;;;;;N;;;;;
+13BDA;EGYPTIAN HIEROGLYPH-13BDA;Lo;0;L;;;;;N;;;;;
+13BDB;EGYPTIAN HIEROGLYPH-13BDB;Lo;0;L;;;;;N;;;;;
+13BDC;EGYPTIAN HIEROGLYPH-13BDC;Lo;0;L;;;;;N;;;;;
+13BDD;EGYPTIAN HIEROGLYPH-13BDD;Lo;0;L;;;;;N;;;;;
+13BDE;EGYPTIAN HIEROGLYPH-13BDE;Lo;0;L;;;;;N;;;;;
+13BDF;EGYPTIAN HIEROGLYPH-13BDF;Lo;0;L;;;;;N;;;;;
+13BE0;EGYPTIAN HIEROGLYPH-13BE0;Lo;0;L;;;;;N;;;;;
+13BE1;EGYPTIAN HIEROGLYPH-13BE1;Lo;0;L;;;;;N;;;;;
+13BE2;EGYPTIAN HIEROGLYPH-13BE2;Lo;0;L;;;;;N;;;;;
+13BE3;EGYPTIAN HIEROGLYPH-13BE3;Lo;0;L;;;;;N;;;;;
+13BE4;EGYPTIAN HIEROGLYPH-13BE4;Lo;0;L;;;;;N;;;;;
+13BE5;EGYPTIAN HIEROGLYPH-13BE5;Lo;0;L;;;;;N;;;;;
+13BE6;EGYPTIAN HIEROGLYPH-13BE6;Lo;0;L;;;;;N;;;;;
+13BE7;EGYPTIAN HIEROGLYPH-13BE7;Lo;0;L;;;;;N;;;;;
+13BE8;EGYPTIAN HIEROGLYPH-13BE8;Lo;0;L;;;;;N;;;;;
+13BE9;EGYPTIAN HIEROGLYPH-13BE9;Lo;0;L;;;;;N;;;;;
+13BEA;EGYPTIAN HIEROGLYPH-13BEA;Lo;0;L;;;;;N;;;;;
+13BEB;EGYPTIAN HIEROGLYPH-13BEB;Lo;0;L;;;;;N;;;;;
+13BEC;EGYPTIAN HIEROGLYPH-13BEC;Lo;0;L;;;;;N;;;;;
+13BED;EGYPTIAN HIEROGLYPH-13BED;Lo;0;L;;;;;N;;;;;
+13BEE;EGYPTIAN HIEROGLYPH-13BEE;Lo;0;L;;;;;N;;;;;
+13BEF;EGYPTIAN HIEROGLYPH-13BEF;Lo;0;L;;;;;N;;;;;
+13BF0;EGYPTIAN HIEROGLYPH-13BF0;Lo;0;L;;;;;N;;;;;
+13BF1;EGYPTIAN HIEROGLYPH-13BF1;Lo;0;L;;;;;N;;;;;
+13BF2;EGYPTIAN HIEROGLYPH-13BF2;Lo;0;L;;;;;N;;;;;
+13BF3;EGYPTIAN HIEROGLYPH-13BF3;Lo;0;L;;;;;N;;;;;
+13BF4;EGYPTIAN HIEROGLYPH-13BF4;Lo;0;L;;;;;N;;;;;
+13BF5;EGYPTIAN HIEROGLYPH-13BF5;Lo;0;L;;;;;N;;;;;
+13BF6;EGYPTIAN HIEROGLYPH-13BF6;Lo;0;L;;;;;N;;;;;
+13BF7;EGYPTIAN HIEROGLYPH-13BF7;Lo;0;L;;;;;N;;;;;
+13BF8;EGYPTIAN HIEROGLYPH-13BF8;Lo;0;L;;;;;N;;;;;
+13BF9;EGYPTIAN HIEROGLYPH-13BF9;Lo;0;L;;;;;N;;;;;
+13BFA;EGYPTIAN HIEROGLYPH-13BFA;Lo;0;L;;;;;N;;;;;
+13BFB;EGYPTIAN HIEROGLYPH-13BFB;Lo;0;L;;;;;N;;;;;
+13BFC;EGYPTIAN HIEROGLYPH-13BFC;Lo;0;L;;;;;N;;;;;
+13BFD;EGYPTIAN HIEROGLYPH-13BFD;Lo;0;L;;;;;N;;;;;
+13BFE;EGYPTIAN HIEROGLYPH-13BFE;Lo;0;L;;;;;N;;;;;
+13BFF;EGYPTIAN HIEROGLYPH-13BFF;Lo;0;L;;;;;N;;;;;
+13C00;EGYPTIAN HIEROGLYPH-13C00;Lo;0;L;;;;;N;;;;;
+13C01;EGYPTIAN HIEROGLYPH-13C01;Lo;0;L;;;;;N;;;;;
+13C02;EGYPTIAN HIEROGLYPH-13C02;Lo;0;L;;;;;N;;;;;
+13C03;EGYPTIAN HIEROGLYPH-13C03;Lo;0;L;;;;;N;;;;;
+13C04;EGYPTIAN HIEROGLYPH-13C04;Lo;0;L;;;;;N;;;;;
+13C05;EGYPTIAN HIEROGLYPH-13C05;Lo;0;L;;;;;N;;;;;
+13C06;EGYPTIAN HIEROGLYPH-13C06;Lo;0;L;;;;;N;;;;;
+13C07;EGYPTIAN HIEROGLYPH-13C07;Lo;0;L;;;;;N;;;;;
+13C08;EGYPTIAN HIEROGLYPH-13C08;Lo;0;L;;;;;N;;;;;
+13C09;EGYPTIAN HIEROGLYPH-13C09;Lo;0;L;;;;;N;;;;;
+13C0A;EGYPTIAN HIEROGLYPH-13C0A;Lo;0;L;;;;;N;;;;;
+13C0B;EGYPTIAN HIEROGLYPH-13C0B;Lo;0;L;;;;;N;;;;;
+13C0C;EGYPTIAN HIEROGLYPH-13C0C;Lo;0;L;;;;;N;;;;;
+13C0D;EGYPTIAN HIEROGLYPH-13C0D;Lo;0;L;;;;;N;;;;;
+13C0E;EGYPTIAN HIEROGLYPH-13C0E;Lo;0;L;;;;;N;;;;;
+13C0F;EGYPTIAN HIEROGLYPH-13C0F;Lo;0;L;;;;;N;;;;;
+13C10;EGYPTIAN HIEROGLYPH-13C10;Lo;0;L;;;;;N;;;;;
+13C11;EGYPTIAN HIEROGLYPH-13C11;Lo;0;L;;;;;N;;;;;
+13C12;EGYPTIAN HIEROGLYPH-13C12;Lo;0;L;;;;;N;;;;;
+13C13;EGYPTIAN HIEROGLYPH-13C13;Lo;0;L;;;;;N;;;;;
+13C14;EGYPTIAN HIEROGLYPH-13C14;Lo;0;L;;;;;N;;;;;
+13C15;EGYPTIAN HIEROGLYPH-13C15;Lo;0;L;;;;;N;;;;;
+13C16;EGYPTIAN HIEROGLYPH-13C16;Lo;0;L;;;;;N;;;;;
+13C17;EGYPTIAN HIEROGLYPH-13C17;Lo;0;L;;;;;N;;;;;
+13C18;EGYPTIAN HIEROGLYPH-13C18;Lo;0;L;;;;;N;;;;;
+13C19;EGYPTIAN HIEROGLYPH-13C19;Lo;0;L;;;;;N;;;;;
+13C1A;EGYPTIAN HIEROGLYPH-13C1A;Lo;0;L;;;;;N;;;;;
+13C1B;EGYPTIAN HIEROGLYPH-13C1B;Lo;0;L;;;;;N;;;;;
+13C1C;EGYPTIAN HIEROGLYPH-13C1C;Lo;0;L;;;;;N;;;;;
+13C1D;EGYPTIAN HIEROGLYPH-13C1D;Lo;0;L;;;;;N;;;;;
+13C1E;EGYPTIAN HIEROGLYPH-13C1E;Lo;0;L;;;;;N;;;;;
+13C1F;EGYPTIAN HIEROGLYPH-13C1F;Lo;0;L;;;;;N;;;;;
+13C20;EGYPTIAN HIEROGLYPH-13C20;Lo;0;L;;;;;N;;;;;
+13C21;EGYPTIAN HIEROGLYPH-13C21;Lo;0;L;;;;;N;;;;;
+13C22;EGYPTIAN HIEROGLYPH-13C22;Lo;0;L;;;;;N;;;;;
+13C23;EGYPTIAN HIEROGLYPH-13C23;Lo;0;L;;;;;N;;;;;
+13C24;EGYPTIAN HIEROGLYPH-13C24;Lo;0;L;;;;;N;;;;;
+13C25;EGYPTIAN HIEROGLYPH-13C25;Lo;0;L;;;;;N;;;;;
+13C26;EGYPTIAN HIEROGLYPH-13C26;Lo;0;L;;;;;N;;;;;
+13C27;EGYPTIAN HIEROGLYPH-13C27;Lo;0;L;;;;;N;;;;;
+13C28;EGYPTIAN HIEROGLYPH-13C28;Lo;0;L;;;;;N;;;;;
+13C29;EGYPTIAN HIEROGLYPH-13C29;Lo;0;L;;;;;N;;;;;
+13C2A;EGYPTIAN HIEROGLYPH-13C2A;Lo;0;L;;;;;N;;;;;
+13C2B;EGYPTIAN HIEROGLYPH-13C2B;Lo;0;L;;;;;N;;;;;
+13C2C;EGYPTIAN HIEROGLYPH-13C2C;Lo;0;L;;;;;N;;;;;
+13C2D;EGYPTIAN HIEROGLYPH-13C2D;Lo;0;L;;;;;N;;;;;
+13C2E;EGYPTIAN HIEROGLYPH-13C2E;Lo;0;L;;;;;N;;;;;
+13C2F;EGYPTIAN HIEROGLYPH-13C2F;Lo;0;L;;;;;N;;;;;
+13C30;EGYPTIAN HIEROGLYPH-13C30;Lo;0;L;;;;;N;;;;;
+13C31;EGYPTIAN HIEROGLYPH-13C31;Lo;0;L;;;;;N;;;;;
+13C32;EGYPTIAN HIEROGLYPH-13C32;Lo;0;L;;;;;N;;;;;
+13C33;EGYPTIAN HIEROGLYPH-13C33;Lo;0;L;;;;;N;;;;;
+13C34;EGYPTIAN HIEROGLYPH-13C34;Lo;0;L;;;;;N;;;;;
+13C35;EGYPTIAN HIEROGLYPH-13C35;Lo;0;L;;;;;N;;;;;
+13C36;EGYPTIAN HIEROGLYPH-13C36;Lo;0;L;;;;;N;;;;;
+13C37;EGYPTIAN HIEROGLYPH-13C37;Lo;0;L;;;;;N;;;;;
+13C38;EGYPTIAN HIEROGLYPH-13C38;Lo;0;L;;;;;N;;;;;
+13C39;EGYPTIAN HIEROGLYPH-13C39;Lo;0;L;;;;;N;;;;;
+13C3A;EGYPTIAN HIEROGLYPH-13C3A;Lo;0;L;;;;;N;;;;;
+13C3B;EGYPTIAN HIEROGLYPH-13C3B;Lo;0;L;;;;;N;;;;;
+13C3C;EGYPTIAN HIEROGLYPH-13C3C;Lo;0;L;;;;;N;;;;;
+13C3D;EGYPTIAN HIEROGLYPH-13C3D;Lo;0;L;;;;;N;;;;;
+13C3E;EGYPTIAN HIEROGLYPH-13C3E;Lo;0;L;;;;;N;;;;;
+13C3F;EGYPTIAN HIEROGLYPH-13C3F;Lo;0;L;;;;;N;;;;;
+13C40;EGYPTIAN HIEROGLYPH-13C40;Lo;0;L;;;;;N;;;;;
+13C41;EGYPTIAN HIEROGLYPH-13C41;Lo;0;L;;;;;N;;;;;
+13C42;EGYPTIAN HIEROGLYPH-13C42;Lo;0;L;;;;;N;;;;;
+13C43;EGYPTIAN HIEROGLYPH-13C43;Lo;0;L;;;;;N;;;;;
+13C44;EGYPTIAN HIEROGLYPH-13C44;Lo;0;L;;;;;N;;;;;
+13C45;EGYPTIAN HIEROGLYPH-13C45;Lo;0;L;;;;;N;;;;;
+13C46;EGYPTIAN HIEROGLYPH-13C46;Lo;0;L;;;;;N;;;;;
+13C47;EGYPTIAN HIEROGLYPH-13C47;Lo;0;L;;;;;N;;;;;
+13C48;EGYPTIAN HIEROGLYPH-13C48;Lo;0;L;;;;;N;;;;;
+13C49;EGYPTIAN HIEROGLYPH-13C49;Lo;0;L;;;;;N;;;;;
+13C4A;EGYPTIAN HIEROGLYPH-13C4A;Lo;0;L;;;;;N;;;;;
+13C4B;EGYPTIAN HIEROGLYPH-13C4B;Lo;0;L;;;;;N;;;;;
+13C4C;EGYPTIAN HIEROGLYPH-13C4C;Lo;0;L;;;;;N;;;;;
+13C4D;EGYPTIAN HIEROGLYPH-13C4D;Lo;0;L;;;;;N;;;;;
+13C4E;EGYPTIAN HIEROGLYPH-13C4E;Lo;0;L;;;;;N;;;;;
+13C4F;EGYPTIAN HIEROGLYPH-13C4F;Lo;0;L;;;;;N;;;;;
+13C50;EGYPTIAN HIEROGLYPH-13C50;Lo;0;L;;;;;N;;;;;
+13C51;EGYPTIAN HIEROGLYPH-13C51;Lo;0;L;;;;;N;;;;;
+13C52;EGYPTIAN HIEROGLYPH-13C52;Lo;0;L;;;;;N;;;;;
+13C53;EGYPTIAN HIEROGLYPH-13C53;Lo;0;L;;;;;N;;;;;
+13C54;EGYPTIAN HIEROGLYPH-13C54;Lo;0;L;;;;;N;;;;;
+13C55;EGYPTIAN HIEROGLYPH-13C55;Lo;0;L;;;;;N;;;;;
+13C56;EGYPTIAN HIEROGLYPH-13C56;Lo;0;L;;;;;N;;;;;
+13C57;EGYPTIAN HIEROGLYPH-13C57;Lo;0;L;;;;;N;;;;;
+13C58;EGYPTIAN HIEROGLYPH-13C58;Lo;0;L;;;;;N;;;;;
+13C59;EGYPTIAN HIEROGLYPH-13C59;Lo;0;L;;;;;N;;;;;
+13C5A;EGYPTIAN HIEROGLYPH-13C5A;Lo;0;L;;;;;N;;;;;
+13C5B;EGYPTIAN HIEROGLYPH-13C5B;Lo;0;L;;;;;N;;;;;
+13C5C;EGYPTIAN HIEROGLYPH-13C5C;Lo;0;L;;;;;N;;;;;
+13C5D;EGYPTIAN HIEROGLYPH-13C5D;Lo;0;L;;;;;N;;;;;
+13C5E;EGYPTIAN HIEROGLYPH-13C5E;Lo;0;L;;;;;N;;;;;
+13C5F;EGYPTIAN HIEROGLYPH-13C5F;Lo;0;L;;;;;N;;;;;
+13C60;EGYPTIAN HIEROGLYPH-13C60;Lo;0;L;;;;;N;;;;;
+13C61;EGYPTIAN HIEROGLYPH-13C61;Lo;0;L;;;;;N;;;;;
+13C62;EGYPTIAN HIEROGLYPH-13C62;Lo;0;L;;;;;N;;;;;
+13C63;EGYPTIAN HIEROGLYPH-13C63;Lo;0;L;;;;;N;;;;;
+13C64;EGYPTIAN HIEROGLYPH-13C64;Lo;0;L;;;;;N;;;;;
+13C65;EGYPTIAN HIEROGLYPH-13C65;Lo;0;L;;;;;N;;;;;
+13C66;EGYPTIAN HIEROGLYPH-13C66;Lo;0;L;;;;;N;;;;;
+13C67;EGYPTIAN HIEROGLYPH-13C67;Lo;0;L;;;;;N;;;;;
+13C68;EGYPTIAN HIEROGLYPH-13C68;Lo;0;L;;;;;N;;;;;
+13C69;EGYPTIAN HIEROGLYPH-13C69;Lo;0;L;;;;;N;;;;;
+13C6A;EGYPTIAN HIEROGLYPH-13C6A;Lo;0;L;;;;;N;;;;;
+13C6B;EGYPTIAN HIEROGLYPH-13C6B;Lo;0;L;;;;;N;;;;;
+13C6C;EGYPTIAN HIEROGLYPH-13C6C;Lo;0;L;;;;;N;;;;;
+13C6D;EGYPTIAN HIEROGLYPH-13C6D;Lo;0;L;;;;;N;;;;;
+13C6E;EGYPTIAN HIEROGLYPH-13C6E;Lo;0;L;;;;;N;;;;;
+13C6F;EGYPTIAN HIEROGLYPH-13C6F;Lo;0;L;;;;;N;;;;;
+13C70;EGYPTIAN HIEROGLYPH-13C70;Lo;0;L;;;;;N;;;;;
+13C71;EGYPTIAN HIEROGLYPH-13C71;Lo;0;L;;;;;N;;;;;
+13C72;EGYPTIAN HIEROGLYPH-13C72;Lo;0;L;;;;;N;;;;;
+13C73;EGYPTIAN HIEROGLYPH-13C73;Lo;0;L;;;;;N;;;;;
+13C74;EGYPTIAN HIEROGLYPH-13C74;Lo;0;L;;;;;N;;;;;
+13C75;EGYPTIAN HIEROGLYPH-13C75;Lo;0;L;;;;;N;;;;;
+13C76;EGYPTIAN HIEROGLYPH-13C76;Lo;0;L;;;;;N;;;;;
+13C77;EGYPTIAN HIEROGLYPH-13C77;Lo;0;L;;;;;N;;;;;
+13C78;EGYPTIAN HIEROGLYPH-13C78;Lo;0;L;;;;;N;;;;;
+13C79;EGYPTIAN HIEROGLYPH-13C79;Lo;0;L;;;;;N;;;;;
+13C7A;EGYPTIAN HIEROGLYPH-13C7A;Lo;0;L;;;;;N;;;;;
+13C7B;EGYPTIAN HIEROGLYPH-13C7B;Lo;0;L;;;;;N;;;;;
+13C7C;EGYPTIAN HIEROGLYPH-13C7C;Lo;0;L;;;;;N;;;;;
+13C7D;EGYPTIAN HIEROGLYPH-13C7D;Lo;0;L;;;;;N;;;;;
+13C7E;EGYPTIAN HIEROGLYPH-13C7E;Lo;0;L;;;;;N;;;;;
+13C7F;EGYPTIAN HIEROGLYPH-13C7F;Lo;0;L;;;;;N;;;;;
+13C80;EGYPTIAN HIEROGLYPH-13C80;Lo;0;L;;;;;N;;;;;
+13C81;EGYPTIAN HIEROGLYPH-13C81;Lo;0;L;;;;;N;;;;;
+13C82;EGYPTIAN HIEROGLYPH-13C82;Lo;0;L;;;;;N;;;;;
+13C83;EGYPTIAN HIEROGLYPH-13C83;Lo;0;L;;;;;N;;;;;
+13C84;EGYPTIAN HIEROGLYPH-13C84;Lo;0;L;;;;;N;;;;;
+13C85;EGYPTIAN HIEROGLYPH-13C85;Lo;0;L;;;;;N;;;;;
+13C86;EGYPTIAN HIEROGLYPH-13C86;Lo;0;L;;;;;N;;;;;
+13C87;EGYPTIAN HIEROGLYPH-13C87;Lo;0;L;;;;;N;;;;;
+13C88;EGYPTIAN HIEROGLYPH-13C88;Lo;0;L;;;;;N;;;;;
+13C89;EGYPTIAN HIEROGLYPH-13C89;Lo;0;L;;;;;N;;;;;
+13C8A;EGYPTIAN HIEROGLYPH-13C8A;Lo;0;L;;;;;N;;;;;
+13C8B;EGYPTIAN HIEROGLYPH-13C8B;Lo;0;L;;;;;N;;;;;
+13C8C;EGYPTIAN HIEROGLYPH-13C8C;Lo;0;L;;;;;N;;;;;
+13C8D;EGYPTIAN HIEROGLYPH-13C8D;Lo;0;L;;;;;N;;;;;
+13C8E;EGYPTIAN HIEROGLYPH-13C8E;Lo;0;L;;;;;N;;;;;
+13C8F;EGYPTIAN HIEROGLYPH-13C8F;Lo;0;L;;;;;N;;;;;
+13C90;EGYPTIAN HIEROGLYPH-13C90;Lo;0;L;;;;;N;;;;;
+13C91;EGYPTIAN HIEROGLYPH-13C91;Lo;0;L;;;;;N;;;;;
+13C92;EGYPTIAN HIEROGLYPH-13C92;Lo;0;L;;;;;N;;;;;
+13C93;EGYPTIAN HIEROGLYPH-13C93;Lo;0;L;;;;;N;;;;;
+13C94;EGYPTIAN HIEROGLYPH-13C94;Lo;0;L;;;;;N;;;;;
+13C95;EGYPTIAN HIEROGLYPH-13C95;Lo;0;L;;;;;N;;;;;
+13C96;EGYPTIAN HIEROGLYPH-13C96;Lo;0;L;;;;;N;;;;;
+13C97;EGYPTIAN HIEROGLYPH-13C97;Lo;0;L;;;;;N;;;;;
+13C98;EGYPTIAN HIEROGLYPH-13C98;Lo;0;L;;;;;N;;;;;
+13C99;EGYPTIAN HIEROGLYPH-13C99;Lo;0;L;;;;;N;;;;;
+13C9A;EGYPTIAN HIEROGLYPH-13C9A;Lo;0;L;;;;;N;;;;;
+13C9B;EGYPTIAN HIEROGLYPH-13C9B;Lo;0;L;;;;;N;;;;;
+13C9C;EGYPTIAN HIEROGLYPH-13C9C;Lo;0;L;;;;;N;;;;;
+13C9D;EGYPTIAN HIEROGLYPH-13C9D;Lo;0;L;;;;;N;;;;;
+13C9E;EGYPTIAN HIEROGLYPH-13C9E;Lo;0;L;;;;;N;;;;;
+13C9F;EGYPTIAN HIEROGLYPH-13C9F;Lo;0;L;;;;;N;;;;;
+13CA0;EGYPTIAN HIEROGLYPH-13CA0;Lo;0;L;;;;;N;;;;;
+13CA1;EGYPTIAN HIEROGLYPH-13CA1;Lo;0;L;;;;;N;;;;;
+13CA2;EGYPTIAN HIEROGLYPH-13CA2;Lo;0;L;;;;;N;;;;;
+13CA3;EGYPTIAN HIEROGLYPH-13CA3;Lo;0;L;;;;;N;;;;;
+13CA4;EGYPTIAN HIEROGLYPH-13CA4;Lo;0;L;;;;;N;;;;;
+13CA5;EGYPTIAN HIEROGLYPH-13CA5;Lo;0;L;;;;;N;;;;;
+13CA6;EGYPTIAN HIEROGLYPH-13CA6;Lo;0;L;;;;;N;;;;;
+13CA7;EGYPTIAN HIEROGLYPH-13CA7;Lo;0;L;;;;;N;;;;;
+13CA8;EGYPTIAN HIEROGLYPH-13CA8;Lo;0;L;;;;;N;;;;;
+13CA9;EGYPTIAN HIEROGLYPH-13CA9;Lo;0;L;;;;;N;;;;;
+13CAA;EGYPTIAN HIEROGLYPH-13CAA;Lo;0;L;;;;;N;;;;;
+13CAB;EGYPTIAN HIEROGLYPH-13CAB;Lo;0;L;;;;;N;;;;;
+13CAC;EGYPTIAN HIEROGLYPH-13CAC;Lo;0;L;;;;;N;;;;;
+13CAD;EGYPTIAN HIEROGLYPH-13CAD;Lo;0;L;;;;;N;;;;;
+13CAE;EGYPTIAN HIEROGLYPH-13CAE;Lo;0;L;;;;;N;;;;;
+13CAF;EGYPTIAN HIEROGLYPH-13CAF;Lo;0;L;;;;;N;;;;;
+13CB0;EGYPTIAN HIEROGLYPH-13CB0;Lo;0;L;;;;;N;;;;;
+13CB1;EGYPTIAN HIEROGLYPH-13CB1;Lo;0;L;;;;;N;;;;;
+13CB2;EGYPTIAN HIEROGLYPH-13CB2;Lo;0;L;;;;;N;;;;;
+13CB3;EGYPTIAN HIEROGLYPH-13CB3;Lo;0;L;;;;;N;;;;;
+13CB4;EGYPTIAN HIEROGLYPH-13CB4;Lo;0;L;;;;;N;;;;;
+13CB5;EGYPTIAN HIEROGLYPH-13CB5;Lo;0;L;;;;;N;;;;;
+13CB6;EGYPTIAN HIEROGLYPH-13CB6;Lo;0;L;;;;;N;;;;;
+13CB7;EGYPTIAN HIEROGLYPH-13CB7;Lo;0;L;;;;;N;;;;;
+13CB8;EGYPTIAN HIEROGLYPH-13CB8;Lo;0;L;;;;;N;;;;;
+13CB9;EGYPTIAN HIEROGLYPH-13CB9;Lo;0;L;;;;;N;;;;;
+13CBA;EGYPTIAN HIEROGLYPH-13CBA;Lo;0;L;;;;;N;;;;;
+13CBB;EGYPTIAN HIEROGLYPH-13CBB;Lo;0;L;;;;;N;;;;;
+13CBC;EGYPTIAN HIEROGLYPH-13CBC;Lo;0;L;;;;;N;;;;;
+13CBD;EGYPTIAN HIEROGLYPH-13CBD;Lo;0;L;;;;;N;;;;;
+13CBE;EGYPTIAN HIEROGLYPH-13CBE;Lo;0;L;;;;;N;;;;;
+13CBF;EGYPTIAN HIEROGLYPH-13CBF;Lo;0;L;;;;;N;;;;;
+13CC0;EGYPTIAN HIEROGLYPH-13CC0;Lo;0;L;;;;;N;;;;;
+13CC1;EGYPTIAN HIEROGLYPH-13CC1;Lo;0;L;;;;;N;;;;;
+13CC2;EGYPTIAN HIEROGLYPH-13CC2;Lo;0;L;;;;;N;;;;;
+13CC3;EGYPTIAN HIEROGLYPH-13CC3;Lo;0;L;;;;;N;;;;;
+13CC4;EGYPTIAN HIEROGLYPH-13CC4;Lo;0;L;;;;;N;;;;;
+13CC5;EGYPTIAN HIEROGLYPH-13CC5;Lo;0;L;;;;;N;;;;;
+13CC6;EGYPTIAN HIEROGLYPH-13CC6;Lo;0;L;;;;;N;;;;;
+13CC7;EGYPTIAN HIEROGLYPH-13CC7;Lo;0;L;;;;;N;;;;;
+13CC8;EGYPTIAN HIEROGLYPH-13CC8;Lo;0;L;;;;;N;;;;;
+13CC9;EGYPTIAN HIEROGLYPH-13CC9;Lo;0;L;;;;;N;;;;;
+13CCA;EGYPTIAN HIEROGLYPH-13CCA;Lo;0;L;;;;;N;;;;;
+13CCB;EGYPTIAN HIEROGLYPH-13CCB;Lo;0;L;;;;;N;;;;;
+13CCC;EGYPTIAN HIEROGLYPH-13CCC;Lo;0;L;;;;;N;;;;;
+13CCD;EGYPTIAN HIEROGLYPH-13CCD;Lo;0;L;;;;;N;;;;;
+13CCE;EGYPTIAN HIEROGLYPH-13CCE;Lo;0;L;;;;;N;;;;;
+13CCF;EGYPTIAN HIEROGLYPH-13CCF;Lo;0;L;;;;;N;;;;;
+13CD0;EGYPTIAN HIEROGLYPH-13CD0;Lo;0;L;;;;;N;;;;;
+13CD1;EGYPTIAN HIEROGLYPH-13CD1;Lo;0;L;;;;;N;;;;;
+13CD2;EGYPTIAN HIEROGLYPH-13CD2;Lo;0;L;;;;;N;;;;;
+13CD3;EGYPTIAN HIEROGLYPH-13CD3;Lo;0;L;;;;;N;;;;;
+13CD4;EGYPTIAN HIEROGLYPH-13CD4;Lo;0;L;;;;;N;;;;;
+13CD5;EGYPTIAN HIEROGLYPH-13CD5;Lo;0;L;;;;;N;;;;;
+13CD6;EGYPTIAN HIEROGLYPH-13CD6;Lo;0;L;;;;;N;;;;;
+13CD7;EGYPTIAN HIEROGLYPH-13CD7;Lo;0;L;;;;;N;;;;;
+13CD8;EGYPTIAN HIEROGLYPH-13CD8;Lo;0;L;;;;;N;;;;;
+13CD9;EGYPTIAN HIEROGLYPH-13CD9;Lo;0;L;;;;;N;;;;;
+13CDA;EGYPTIAN HIEROGLYPH-13CDA;Lo;0;L;;;;;N;;;;;
+13CDB;EGYPTIAN HIEROGLYPH-13CDB;Lo;0;L;;;;;N;;;;;
+13CDC;EGYPTIAN HIEROGLYPH-13CDC;Lo;0;L;;;;;N;;;;;
+13CDD;EGYPTIAN HIEROGLYPH-13CDD;Lo;0;L;;;;;N;;;;;
+13CDE;EGYPTIAN HIEROGLYPH-13CDE;Lo;0;L;;;;;N;;;;;
+13CDF;EGYPTIAN HIEROGLYPH-13CDF;Lo;0;L;;;;;N;;;;;
+13CE0;EGYPTIAN HIEROGLYPH-13CE0;Lo;0;L;;;;;N;;;;;
+13CE1;EGYPTIAN HIEROGLYPH-13CE1;Lo;0;L;;;;;N;;;;;
+13CE2;EGYPTIAN HIEROGLYPH-13CE2;Lo;0;L;;;;;N;;;;;
+13CE3;EGYPTIAN HIEROGLYPH-13CE3;Lo;0;L;;;;;N;;;;;
+13CE4;EGYPTIAN HIEROGLYPH-13CE4;Lo;0;L;;;;;N;;;;;
+13CE5;EGYPTIAN HIEROGLYPH-13CE5;Lo;0;L;;;;;N;;;;;
+13CE6;EGYPTIAN HIEROGLYPH-13CE6;Lo;0;L;;;;;N;;;;;
+13CE7;EGYPTIAN HIEROGLYPH-13CE7;Lo;0;L;;;;;N;;;;;
+13CE8;EGYPTIAN HIEROGLYPH-13CE8;Lo;0;L;;;;;N;;;;;
+13CE9;EGYPTIAN HIEROGLYPH-13CE9;Lo;0;L;;;;;N;;;;;
+13CEA;EGYPTIAN HIEROGLYPH-13CEA;Lo;0;L;;;;;N;;;;;
+13CEB;EGYPTIAN HIEROGLYPH-13CEB;Lo;0;L;;;;;N;;;;;
+13CEC;EGYPTIAN HIEROGLYPH-13CEC;Lo;0;L;;;;;N;;;;;
+13CED;EGYPTIAN HIEROGLYPH-13CED;Lo;0;L;;;;;N;;;;;
+13CEE;EGYPTIAN HIEROGLYPH-13CEE;Lo;0;L;;;;;N;;;;;
+13CEF;EGYPTIAN HIEROGLYPH-13CEF;Lo;0;L;;;;;N;;;;;
+13CF0;EGYPTIAN HIEROGLYPH-13CF0;Lo;0;L;;;;;N;;;;;
+13CF1;EGYPTIAN HIEROGLYPH-13CF1;Lo;0;L;;;;;N;;;;;
+13CF2;EGYPTIAN HIEROGLYPH-13CF2;Lo;0;L;;;;;N;;;;;
+13CF3;EGYPTIAN HIEROGLYPH-13CF3;Lo;0;L;;;;;N;;;;;
+13CF4;EGYPTIAN HIEROGLYPH-13CF4;Lo;0;L;;;;;N;;;;;
+13CF5;EGYPTIAN HIEROGLYPH-13CF5;Lo;0;L;;;;;N;;;;;
+13CF6;EGYPTIAN HIEROGLYPH-13CF6;Lo;0;L;;;;;N;;;;;
+13CF7;EGYPTIAN HIEROGLYPH-13CF7;Lo;0;L;;;;;N;;;;;
+13CF8;EGYPTIAN HIEROGLYPH-13CF8;Lo;0;L;;;;;N;;;;;
+13CF9;EGYPTIAN HIEROGLYPH-13CF9;Lo;0;L;;;;;N;;;;;
+13CFA;EGYPTIAN HIEROGLYPH-13CFA;Lo;0;L;;;;;N;;;;;
+13CFB;EGYPTIAN HIEROGLYPH-13CFB;Lo;0;L;;;;;N;;;;;
+13CFC;EGYPTIAN HIEROGLYPH-13CFC;Lo;0;L;;;;;N;;;;;
+13CFD;EGYPTIAN HIEROGLYPH-13CFD;Lo;0;L;;;;;N;;;;;
+13CFE;EGYPTIAN HIEROGLYPH-13CFE;Lo;0;L;;;;;N;;;;;
+13CFF;EGYPTIAN HIEROGLYPH-13CFF;Lo;0;L;;;;;N;;;;;
+13D00;EGYPTIAN HIEROGLYPH-13D00;Lo;0;L;;;;;N;;;;;
+13D01;EGYPTIAN HIEROGLYPH-13D01;Lo;0;L;;;;;N;;;;;
+13D02;EGYPTIAN HIEROGLYPH-13D02;Lo;0;L;;;;;N;;;;;
+13D03;EGYPTIAN HIEROGLYPH-13D03;Lo;0;L;;;;;N;;;;;
+13D04;EGYPTIAN HIEROGLYPH-13D04;Lo;0;L;;;;;N;;;;;
+13D05;EGYPTIAN HIEROGLYPH-13D05;Lo;0;L;;;;;N;;;;;
+13D06;EGYPTIAN HIEROGLYPH-13D06;Lo;0;L;;;;;N;;;;;
+13D07;EGYPTIAN HIEROGLYPH-13D07;Lo;0;L;;;;;N;;;;;
+13D08;EGYPTIAN HIEROGLYPH-13D08;Lo;0;L;;;;;N;;;;;
+13D09;EGYPTIAN HIEROGLYPH-13D09;Lo;0;L;;;;;N;;;;;
+13D0A;EGYPTIAN HIEROGLYPH-13D0A;Lo;0;L;;;;;N;;;;;
+13D0B;EGYPTIAN HIEROGLYPH-13D0B;Lo;0;L;;;;;N;;;;;
+13D0C;EGYPTIAN HIEROGLYPH-13D0C;Lo;0;L;;;;;N;;;;;
+13D0D;EGYPTIAN HIEROGLYPH-13D0D;Lo;0;L;;;;;N;;;;;
+13D0E;EGYPTIAN HIEROGLYPH-13D0E;Lo;0;L;;;;;N;;;;;
+13D0F;EGYPTIAN HIEROGLYPH-13D0F;Lo;0;L;;;;;N;;;;;
+13D10;EGYPTIAN HIEROGLYPH-13D10;Lo;0;L;;;;;N;;;;;
+13D11;EGYPTIAN HIEROGLYPH-13D11;Lo;0;L;;;;;N;;;;;
+13D12;EGYPTIAN HIEROGLYPH-13D12;Lo;0;L;;;;;N;;;;;
+13D13;EGYPTIAN HIEROGLYPH-13D13;Lo;0;L;;;;;N;;;;;
+13D14;EGYPTIAN HIEROGLYPH-13D14;Lo;0;L;;;;;N;;;;;
+13D15;EGYPTIAN HIEROGLYPH-13D15;Lo;0;L;;;;;N;;;;;
+13D16;EGYPTIAN HIEROGLYPH-13D16;Lo;0;L;;;;;N;;;;;
+13D17;EGYPTIAN HIEROGLYPH-13D17;Lo;0;L;;;;;N;;;;;
+13D18;EGYPTIAN HIEROGLYPH-13D18;Lo;0;L;;;;;N;;;;;
+13D19;EGYPTIAN HIEROGLYPH-13D19;Lo;0;L;;;;;N;;;;;
+13D1A;EGYPTIAN HIEROGLYPH-13D1A;Lo;0;L;;;;;N;;;;;
+13D1B;EGYPTIAN HIEROGLYPH-13D1B;Lo;0;L;;;;;N;;;;;
+13D1C;EGYPTIAN HIEROGLYPH-13D1C;Lo;0;L;;;;;N;;;;;
+13D1D;EGYPTIAN HIEROGLYPH-13D1D;Lo;0;L;;;;;N;;;;;
+13D1E;EGYPTIAN HIEROGLYPH-13D1E;Lo;0;L;;;;;N;;;;;
+13D1F;EGYPTIAN HIEROGLYPH-13D1F;Lo;0;L;;;;;N;;;;;
+13D20;EGYPTIAN HIEROGLYPH-13D20;Lo;0;L;;;;;N;;;;;
+13D21;EGYPTIAN HIEROGLYPH-13D21;Lo;0;L;;;;;N;;;;;
+13D22;EGYPTIAN HIEROGLYPH-13D22;Lo;0;L;;;;;N;;;;;
+13D23;EGYPTIAN HIEROGLYPH-13D23;Lo;0;L;;;;;N;;;;;
+13D24;EGYPTIAN HIEROGLYPH-13D24;Lo;0;L;;;;;N;;;;;
+13D25;EGYPTIAN HIEROGLYPH-13D25;Lo;0;L;;;;;N;;;;;
+13D26;EGYPTIAN HIEROGLYPH-13D26;Lo;0;L;;;;;N;;;;;
+13D27;EGYPTIAN HIEROGLYPH-13D27;Lo;0;L;;;;;N;;;;;
+13D28;EGYPTIAN HIEROGLYPH-13D28;Lo;0;L;;;;;N;;;;;
+13D29;EGYPTIAN HIEROGLYPH-13D29;Lo;0;L;;;;;N;;;;;
+13D2A;EGYPTIAN HIEROGLYPH-13D2A;Lo;0;L;;;;;N;;;;;
+13D2B;EGYPTIAN HIEROGLYPH-13D2B;Lo;0;L;;;;;N;;;;;
+13D2C;EGYPTIAN HIEROGLYPH-13D2C;Lo;0;L;;;;;N;;;;;
+13D2D;EGYPTIAN HIEROGLYPH-13D2D;Lo;0;L;;;;;N;;;;;
+13D2E;EGYPTIAN HIEROGLYPH-13D2E;Lo;0;L;;;;;N;;;;;
+13D2F;EGYPTIAN HIEROGLYPH-13D2F;Lo;0;L;;;;;N;;;;;
+13D30;EGYPTIAN HIEROGLYPH-13D30;Lo;0;L;;;;;N;;;;;
+13D31;EGYPTIAN HIEROGLYPH-13D31;Lo;0;L;;;;;N;;;;;
+13D32;EGYPTIAN HIEROGLYPH-13D32;Lo;0;L;;;;;N;;;;;
+13D33;EGYPTIAN HIEROGLYPH-13D33;Lo;0;L;;;;;N;;;;;
+13D34;EGYPTIAN HIEROGLYPH-13D34;Lo;0;L;;;;;N;;;;;
+13D35;EGYPTIAN HIEROGLYPH-13D35;Lo;0;L;;;;;N;;;;;
+13D36;EGYPTIAN HIEROGLYPH-13D36;Lo;0;L;;;;;N;;;;;
+13D37;EGYPTIAN HIEROGLYPH-13D37;Lo;0;L;;;;;N;;;;;
+13D38;EGYPTIAN HIEROGLYPH-13D38;Lo;0;L;;;;;N;;;;;
+13D39;EGYPTIAN HIEROGLYPH-13D39;Lo;0;L;;;;;N;;;;;
+13D3A;EGYPTIAN HIEROGLYPH-13D3A;Lo;0;L;;;;;N;;;;;
+13D3B;EGYPTIAN HIEROGLYPH-13D3B;Lo;0;L;;;;;N;;;;;
+13D3C;EGYPTIAN HIEROGLYPH-13D3C;Lo;0;L;;;;;N;;;;;
+13D3D;EGYPTIAN HIEROGLYPH-13D3D;Lo;0;L;;;;;N;;;;;
+13D3E;EGYPTIAN HIEROGLYPH-13D3E;Lo;0;L;;;;;N;;;;;
+13D3F;EGYPTIAN HIEROGLYPH-13D3F;Lo;0;L;;;;;N;;;;;
+13D40;EGYPTIAN HIEROGLYPH-13D40;Lo;0;L;;;;;N;;;;;
+13D41;EGYPTIAN HIEROGLYPH-13D41;Lo;0;L;;;;;N;;;;;
+13D42;EGYPTIAN HIEROGLYPH-13D42;Lo;0;L;;;;;N;;;;;
+13D43;EGYPTIAN HIEROGLYPH-13D43;Lo;0;L;;;;;N;;;;;
+13D44;EGYPTIAN HIEROGLYPH-13D44;Lo;0;L;;;;;N;;;;;
+13D45;EGYPTIAN HIEROGLYPH-13D45;Lo;0;L;;;;;N;;;;;
+13D46;EGYPTIAN HIEROGLYPH-13D46;Lo;0;L;;;;;N;;;;;
+13D47;EGYPTIAN HIEROGLYPH-13D47;Lo;0;L;;;;;N;;;;;
+13D48;EGYPTIAN HIEROGLYPH-13D48;Lo;0;L;;;;;N;;;;;
+13D49;EGYPTIAN HIEROGLYPH-13D49;Lo;0;L;;;;;N;;;;;
+13D4A;EGYPTIAN HIEROGLYPH-13D4A;Lo;0;L;;;;;N;;;;;
+13D4B;EGYPTIAN HIEROGLYPH-13D4B;Lo;0;L;;;;;N;;;;;
+13D4C;EGYPTIAN HIEROGLYPH-13D4C;Lo;0;L;;;;;N;;;;;
+13D4D;EGYPTIAN HIEROGLYPH-13D4D;Lo;0;L;;;;;N;;;;;
+13D4E;EGYPTIAN HIEROGLYPH-13D4E;Lo;0;L;;;;;N;;;;;
+13D4F;EGYPTIAN HIEROGLYPH-13D4F;Lo;0;L;;;;;N;;;;;
+13D50;EGYPTIAN HIEROGLYPH-13D50;Lo;0;L;;;;;N;;;;;
+13D51;EGYPTIAN HIEROGLYPH-13D51;Lo;0;L;;;;;N;;;;;
+13D52;EGYPTIAN HIEROGLYPH-13D52;Lo;0;L;;;;;N;;;;;
+13D53;EGYPTIAN HIEROGLYPH-13D53;Lo;0;L;;;;;N;;;;;
+13D54;EGYPTIAN HIEROGLYPH-13D54;Lo;0;L;;;;;N;;;;;
+13D55;EGYPTIAN HIEROGLYPH-13D55;Lo;0;L;;;;;N;;;;;
+13D56;EGYPTIAN HIEROGLYPH-13D56;Lo;0;L;;;;;N;;;;;
+13D57;EGYPTIAN HIEROGLYPH-13D57;Lo;0;L;;;;;N;;;;;
+13D58;EGYPTIAN HIEROGLYPH-13D58;Lo;0;L;;;;;N;;;;;
+13D59;EGYPTIAN HIEROGLYPH-13D59;Lo;0;L;;;;;N;;;;;
+13D5A;EGYPTIAN HIEROGLYPH-13D5A;Lo;0;L;;;;;N;;;;;
+13D5B;EGYPTIAN HIEROGLYPH-13D5B;Lo;0;L;;;;;N;;;;;
+13D5C;EGYPTIAN HIEROGLYPH-13D5C;Lo;0;L;;;;;N;;;;;
+13D5D;EGYPTIAN HIEROGLYPH-13D5D;Lo;0;L;;;;;N;;;;;
+13D5E;EGYPTIAN HIEROGLYPH-13D5E;Lo;0;L;;;;;N;;;;;
+13D5F;EGYPTIAN HIEROGLYPH-13D5F;Lo;0;L;;;;;N;;;;;
+13D60;EGYPTIAN HIEROGLYPH-13D60;Lo;0;L;;;;;N;;;;;
+13D61;EGYPTIAN HIEROGLYPH-13D61;Lo;0;L;;;;;N;;;;;
+13D62;EGYPTIAN HIEROGLYPH-13D62;Lo;0;L;;;;;N;;;;;
+13D63;EGYPTIAN HIEROGLYPH-13D63;Lo;0;L;;;;;N;;;;;
+13D64;EGYPTIAN HIEROGLYPH-13D64;Lo;0;L;;;;;N;;;;;
+13D65;EGYPTIAN HIEROGLYPH-13D65;Lo;0;L;;;;;N;;;;;
+13D66;EGYPTIAN HIEROGLYPH-13D66;Lo;0;L;;;;;N;;;;;
+13D67;EGYPTIAN HIEROGLYPH-13D67;Lo;0;L;;;;;N;;;;;
+13D68;EGYPTIAN HIEROGLYPH-13D68;Lo;0;L;;;;;N;;;;;
+13D69;EGYPTIAN HIEROGLYPH-13D69;Lo;0;L;;;;;N;;;;;
+13D6A;EGYPTIAN HIEROGLYPH-13D6A;Lo;0;L;;;;;N;;;;;
+13D6B;EGYPTIAN HIEROGLYPH-13D6B;Lo;0;L;;;;;N;;;;;
+13D6C;EGYPTIAN HIEROGLYPH-13D6C;Lo;0;L;;;;;N;;;;;
+13D6D;EGYPTIAN HIEROGLYPH-13D6D;Lo;0;L;;;;;N;;;;;
+13D6E;EGYPTIAN HIEROGLYPH-13D6E;Lo;0;L;;;;;N;;;;;
+13D6F;EGYPTIAN HIEROGLYPH-13D6F;Lo;0;L;;;;;N;;;;;
+13D70;EGYPTIAN HIEROGLYPH-13D70;Lo;0;L;;;;;N;;;;;
+13D71;EGYPTIAN HIEROGLYPH-13D71;Lo;0;L;;;;;N;;;;;
+13D72;EGYPTIAN HIEROGLYPH-13D72;Lo;0;L;;;;;N;;;;;
+13D73;EGYPTIAN HIEROGLYPH-13D73;Lo;0;L;;;;;N;;;;;
+13D74;EGYPTIAN HIEROGLYPH-13D74;Lo;0;L;;;;;N;;;;;
+13D75;EGYPTIAN HIEROGLYPH-13D75;Lo;0;L;;;;;N;;;;;
+13D76;EGYPTIAN HIEROGLYPH-13D76;Lo;0;L;;;;;N;;;;;
+13D77;EGYPTIAN HIEROGLYPH-13D77;Lo;0;L;;;;;N;;;;;
+13D78;EGYPTIAN HIEROGLYPH-13D78;Lo;0;L;;;;;N;;;;;
+13D79;EGYPTIAN HIEROGLYPH-13D79;Lo;0;L;;;;;N;;;;;
+13D7A;EGYPTIAN HIEROGLYPH-13D7A;Lo;0;L;;;;;N;;;;;
+13D7B;EGYPTIAN HIEROGLYPH-13D7B;Lo;0;L;;;;;N;;;;;
+13D7C;EGYPTIAN HIEROGLYPH-13D7C;Lo;0;L;;;;;N;;;;;
+13D7D;EGYPTIAN HIEROGLYPH-13D7D;Lo;0;L;;;;;N;;;;;
+13D7E;EGYPTIAN HIEROGLYPH-13D7E;Lo;0;L;;;;;N;;;;;
+13D7F;EGYPTIAN HIEROGLYPH-13D7F;Lo;0;L;;;;;N;;;;;
+13D80;EGYPTIAN HIEROGLYPH-13D80;Lo;0;L;;;;;N;;;;;
+13D81;EGYPTIAN HIEROGLYPH-13D81;Lo;0;L;;;;;N;;;;;
+13D82;EGYPTIAN HIEROGLYPH-13D82;Lo;0;L;;;;;N;;;;;
+13D83;EGYPTIAN HIEROGLYPH-13D83;Lo;0;L;;;;;N;;;;;
+13D84;EGYPTIAN HIEROGLYPH-13D84;Lo;0;L;;;;;N;;;;;
+13D85;EGYPTIAN HIEROGLYPH-13D85;Lo;0;L;;;;;N;;;;;
+13D86;EGYPTIAN HIEROGLYPH-13D86;Lo;0;L;;;;;N;;;;;
+13D87;EGYPTIAN HIEROGLYPH-13D87;Lo;0;L;;;;;N;;;;;
+13D88;EGYPTIAN HIEROGLYPH-13D88;Lo;0;L;;;;;N;;;;;
+13D89;EGYPTIAN HIEROGLYPH-13D89;Lo;0;L;;;;;N;;;;;
+13D8A;EGYPTIAN HIEROGLYPH-13D8A;Lo;0;L;;;;;N;;;;;
+13D8B;EGYPTIAN HIEROGLYPH-13D8B;Lo;0;L;;;;;N;;;;;
+13D8C;EGYPTIAN HIEROGLYPH-13D8C;Lo;0;L;;;;;N;;;;;
+13D8D;EGYPTIAN HIEROGLYPH-13D8D;Lo;0;L;;;;;N;;;;;
+13D8E;EGYPTIAN HIEROGLYPH-13D8E;Lo;0;L;;;;;N;;;;;
+13D8F;EGYPTIAN HIEROGLYPH-13D8F;Lo;0;L;;;;;N;;;;;
+13D90;EGYPTIAN HIEROGLYPH-13D90;Lo;0;L;;;;;N;;;;;
+13D91;EGYPTIAN HIEROGLYPH-13D91;Lo;0;L;;;;;N;;;;;
+13D92;EGYPTIAN HIEROGLYPH-13D92;Lo;0;L;;;;;N;;;;;
+13D93;EGYPTIAN HIEROGLYPH-13D93;Lo;0;L;;;;;N;;;;;
+13D94;EGYPTIAN HIEROGLYPH-13D94;Lo;0;L;;;;;N;;;;;
+13D95;EGYPTIAN HIEROGLYPH-13D95;Lo;0;L;;;;;N;;;;;
+13D96;EGYPTIAN HIEROGLYPH-13D96;Lo;0;L;;;;;N;;;;;
+13D97;EGYPTIAN HIEROGLYPH-13D97;Lo;0;L;;;;;N;;;;;
+13D98;EGYPTIAN HIEROGLYPH-13D98;Lo;0;L;;;;;N;;;;;
+13D99;EGYPTIAN HIEROGLYPH-13D99;Lo;0;L;;;;;N;;;;;
+13D9A;EGYPTIAN HIEROGLYPH-13D9A;Lo;0;L;;;;;N;;;;;
+13D9B;EGYPTIAN HIEROGLYPH-13D9B;Lo;0;L;;;;;N;;;;;
+13D9C;EGYPTIAN HIEROGLYPH-13D9C;Lo;0;L;;;;;N;;;;;
+13D9D;EGYPTIAN HIEROGLYPH-13D9D;Lo;0;L;;;;;N;;;;;
+13D9E;EGYPTIAN HIEROGLYPH-13D9E;Lo;0;L;;;;;N;;;;;
+13D9F;EGYPTIAN HIEROGLYPH-13D9F;Lo;0;L;;;;;N;;;;;
+13DA0;EGYPTIAN HIEROGLYPH-13DA0;Lo;0;L;;;;;N;;;;;
+13DA1;EGYPTIAN HIEROGLYPH-13DA1;Lo;0;L;;;;;N;;;;;
+13DA2;EGYPTIAN HIEROGLYPH-13DA2;Lo;0;L;;;;;N;;;;;
+13DA3;EGYPTIAN HIEROGLYPH-13DA3;Lo;0;L;;;;;N;;;;;
+13DA4;EGYPTIAN HIEROGLYPH-13DA4;Lo;0;L;;;;;N;;;;;
+13DA5;EGYPTIAN HIEROGLYPH-13DA5;Lo;0;L;;;;;N;;;;;
+13DA6;EGYPTIAN HIEROGLYPH-13DA6;Lo;0;L;;;;;N;;;;;
+13DA7;EGYPTIAN HIEROGLYPH-13DA7;Lo;0;L;;;;;N;;;;;
+13DA8;EGYPTIAN HIEROGLYPH-13DA8;Lo;0;L;;;;;N;;;;;
+13DA9;EGYPTIAN HIEROGLYPH-13DA9;Lo;0;L;;;;;N;;;;;
+13DAA;EGYPTIAN HIEROGLYPH-13DAA;Lo;0;L;;;;;N;;;;;
+13DAB;EGYPTIAN HIEROGLYPH-13DAB;Lo;0;L;;;;;N;;;;;
+13DAC;EGYPTIAN HIEROGLYPH-13DAC;Lo;0;L;;;;;N;;;;;
+13DAD;EGYPTIAN HIEROGLYPH-13DAD;Lo;0;L;;;;;N;;;;;
+13DAE;EGYPTIAN HIEROGLYPH-13DAE;Lo;0;L;;;;;N;;;;;
+13DAF;EGYPTIAN HIEROGLYPH-13DAF;Lo;0;L;;;;;N;;;;;
+13DB0;EGYPTIAN HIEROGLYPH-13DB0;Lo;0;L;;;;;N;;;;;
+13DB1;EGYPTIAN HIEROGLYPH-13DB1;Lo;0;L;;;;;N;;;;;
+13DB2;EGYPTIAN HIEROGLYPH-13DB2;Lo;0;L;;;;;N;;;;;
+13DB3;EGYPTIAN HIEROGLYPH-13DB3;Lo;0;L;;;;;N;;;;;
+13DB4;EGYPTIAN HIEROGLYPH-13DB4;Lo;0;L;;;;;N;;;;;
+13DB5;EGYPTIAN HIEROGLYPH-13DB5;Lo;0;L;;;;;N;;;;;
+13DB6;EGYPTIAN HIEROGLYPH-13DB6;Lo;0;L;;;;;N;;;;;
+13DB7;EGYPTIAN HIEROGLYPH-13DB7;Lo;0;L;;;;;N;;;;;
+13DB8;EGYPTIAN HIEROGLYPH-13DB8;Lo;0;L;;;;;N;;;;;
+13DB9;EGYPTIAN HIEROGLYPH-13DB9;Lo;0;L;;;;;N;;;;;
+13DBA;EGYPTIAN HIEROGLYPH-13DBA;Lo;0;L;;;;;N;;;;;
+13DBB;EGYPTIAN HIEROGLYPH-13DBB;Lo;0;L;;;;;N;;;;;
+13DBC;EGYPTIAN HIEROGLYPH-13DBC;Lo;0;L;;;;;N;;;;;
+13DBD;EGYPTIAN HIEROGLYPH-13DBD;Lo;0;L;;;;;N;;;;;
+13DBE;EGYPTIAN HIEROGLYPH-13DBE;Lo;0;L;;;;;N;;;;;
+13DBF;EGYPTIAN HIEROGLYPH-13DBF;Lo;0;L;;;;;N;;;;;
+13DC0;EGYPTIAN HIEROGLYPH-13DC0;Lo;0;L;;;;;N;;;;;
+13DC1;EGYPTIAN HIEROGLYPH-13DC1;Lo;0;L;;;;;N;;;;;
+13DC2;EGYPTIAN HIEROGLYPH-13DC2;Lo;0;L;;;;;N;;;;;
+13DC3;EGYPTIAN HIEROGLYPH-13DC3;Lo;0;L;;;;;N;;;;;
+13DC4;EGYPTIAN HIEROGLYPH-13DC4;Lo;0;L;;;;;N;;;;;
+13DC5;EGYPTIAN HIEROGLYPH-13DC5;Lo;0;L;;;;;N;;;;;
+13DC6;EGYPTIAN HIEROGLYPH-13DC6;Lo;0;L;;;;;N;;;;;
+13DC7;EGYPTIAN HIEROGLYPH-13DC7;Lo;0;L;;;;;N;;;;;
+13DC8;EGYPTIAN HIEROGLYPH-13DC8;Lo;0;L;;;;;N;;;;;
+13DC9;EGYPTIAN HIEROGLYPH-13DC9;Lo;0;L;;;;;N;;;;;
+13DCA;EGYPTIAN HIEROGLYPH-13DCA;Lo;0;L;;;;;N;;;;;
+13DCB;EGYPTIAN HIEROGLYPH-13DCB;Lo;0;L;;;;;N;;;;;
+13DCC;EGYPTIAN HIEROGLYPH-13DCC;Lo;0;L;;;;;N;;;;;
+13DCD;EGYPTIAN HIEROGLYPH-13DCD;Lo;0;L;;;;;N;;;;;
+13DCE;EGYPTIAN HIEROGLYPH-13DCE;Lo;0;L;;;;;N;;;;;
+13DCF;EGYPTIAN HIEROGLYPH-13DCF;Lo;0;L;;;;;N;;;;;
+13DD0;EGYPTIAN HIEROGLYPH-13DD0;Lo;0;L;;;;;N;;;;;
+13DD1;EGYPTIAN HIEROGLYPH-13DD1;Lo;0;L;;;;;N;;;;;
+13DD2;EGYPTIAN HIEROGLYPH-13DD2;Lo;0;L;;;;;N;;;;;
+13DD3;EGYPTIAN HIEROGLYPH-13DD3;Lo;0;L;;;;;N;;;;;
+13DD4;EGYPTIAN HIEROGLYPH-13DD4;Lo;0;L;;;;;N;;;;;
+13DD5;EGYPTIAN HIEROGLYPH-13DD5;Lo;0;L;;;;;N;;;;;
+13DD6;EGYPTIAN HIEROGLYPH-13DD6;Lo;0;L;;;;;N;;;;;
+13DD7;EGYPTIAN HIEROGLYPH-13DD7;Lo;0;L;;;;;N;;;;;
+13DD8;EGYPTIAN HIEROGLYPH-13DD8;Lo;0;L;;;;;N;;;;;
+13DD9;EGYPTIAN HIEROGLYPH-13DD9;Lo;0;L;;;;;N;;;;;
+13DDA;EGYPTIAN HIEROGLYPH-13DDA;Lo;0;L;;;;;N;;;;;
+13DDB;EGYPTIAN HIEROGLYPH-13DDB;Lo;0;L;;;;;N;;;;;
+13DDC;EGYPTIAN HIEROGLYPH-13DDC;Lo;0;L;;;;;N;;;;;
+13DDD;EGYPTIAN HIEROGLYPH-13DDD;Lo;0;L;;;;;N;;;;;
+13DDE;EGYPTIAN HIEROGLYPH-13DDE;Lo;0;L;;;;;N;;;;;
+13DDF;EGYPTIAN HIEROGLYPH-13DDF;Lo;0;L;;;;;N;;;;;
+13DE0;EGYPTIAN HIEROGLYPH-13DE0;Lo;0;L;;;;;N;;;;;
+13DE1;EGYPTIAN HIEROGLYPH-13DE1;Lo;0;L;;;;;N;;;;;
+13DE2;EGYPTIAN HIEROGLYPH-13DE2;Lo;0;L;;;;;N;;;;;
+13DE3;EGYPTIAN HIEROGLYPH-13DE3;Lo;0;L;;;;;N;;;;;
+13DE4;EGYPTIAN HIEROGLYPH-13DE4;Lo;0;L;;;;;N;;;;;
+13DE5;EGYPTIAN HIEROGLYPH-13DE5;Lo;0;L;;;;;N;;;;;
+13DE6;EGYPTIAN HIEROGLYPH-13DE6;Lo;0;L;;;;;N;;;;;
+13DE7;EGYPTIAN HIEROGLYPH-13DE7;Lo;0;L;;;;;N;;;;;
+13DE8;EGYPTIAN HIEROGLYPH-13DE8;Lo;0;L;;;;;N;;;;;
+13DE9;EGYPTIAN HIEROGLYPH-13DE9;Lo;0;L;;;;;N;;;;;
+13DEA;EGYPTIAN HIEROGLYPH-13DEA;Lo;0;L;;;;;N;;;;;
+13DEB;EGYPTIAN HIEROGLYPH-13DEB;Lo;0;L;;;;;N;;;;;
+13DEC;EGYPTIAN HIEROGLYPH-13DEC;Lo;0;L;;;;;N;;;;;
+13DED;EGYPTIAN HIEROGLYPH-13DED;Lo;0;L;;;;;N;;;;;
+13DEE;EGYPTIAN HIEROGLYPH-13DEE;Lo;0;L;;;;;N;;;;;
+13DEF;EGYPTIAN HIEROGLYPH-13DEF;Lo;0;L;;;;;N;;;;;
+13DF0;EGYPTIAN HIEROGLYPH-13DF0;Lo;0;L;;;;;N;;;;;
+13DF1;EGYPTIAN HIEROGLYPH-13DF1;Lo;0;L;;;;;N;;;;;
+13DF2;EGYPTIAN HIEROGLYPH-13DF2;Lo;0;L;;;;;N;;;;;
+13DF3;EGYPTIAN HIEROGLYPH-13DF3;Lo;0;L;;;;;N;;;;;
+13DF4;EGYPTIAN HIEROGLYPH-13DF4;Lo;0;L;;;;;N;;;;;
+13DF5;EGYPTIAN HIEROGLYPH-13DF5;Lo;0;L;;;;;N;;;;;
+13DF6;EGYPTIAN HIEROGLYPH-13DF6;Lo;0;L;;;;;N;;;;;
+13DF7;EGYPTIAN HIEROGLYPH-13DF7;Lo;0;L;;;;;N;;;;;
+13DF8;EGYPTIAN HIEROGLYPH-13DF8;Lo;0;L;;;;;N;;;;;
+13DF9;EGYPTIAN HIEROGLYPH-13DF9;Lo;0;L;;;;;N;;;;;
+13DFA;EGYPTIAN HIEROGLYPH-13DFA;Lo;0;L;;;;;N;;;;;
+13DFB;EGYPTIAN HIEROGLYPH-13DFB;Lo;0;L;;;;;N;;;;;
+13DFC;EGYPTIAN HIEROGLYPH-13DFC;Lo;0;L;;;;;N;;;;;
+13DFD;EGYPTIAN HIEROGLYPH-13DFD;Lo;0;L;;;;;N;;;;;
+13DFE;EGYPTIAN HIEROGLYPH-13DFE;Lo;0;L;;;;;N;;;;;
+13DFF;EGYPTIAN HIEROGLYPH-13DFF;Lo;0;L;;;;;N;;;;;
+13E00;EGYPTIAN HIEROGLYPH-13E00;Lo;0;L;;;;;N;;;;;
+13E01;EGYPTIAN HIEROGLYPH-13E01;Lo;0;L;;;;;N;;;;;
+13E02;EGYPTIAN HIEROGLYPH-13E02;Lo;0;L;;;;;N;;;;;
+13E03;EGYPTIAN HIEROGLYPH-13E03;Lo;0;L;;;;;N;;;;;
+13E04;EGYPTIAN HIEROGLYPH-13E04;Lo;0;L;;;;;N;;;;;
+13E05;EGYPTIAN HIEROGLYPH-13E05;Lo;0;L;;;;;N;;;;;
+13E06;EGYPTIAN HIEROGLYPH-13E06;Lo;0;L;;;;;N;;;;;
+13E07;EGYPTIAN HIEROGLYPH-13E07;Lo;0;L;;;;;N;;;;;
+13E08;EGYPTIAN HIEROGLYPH-13E08;Lo;0;L;;;;;N;;;;;
+13E09;EGYPTIAN HIEROGLYPH-13E09;Lo;0;L;;;;;N;;;;;
+13E0A;EGYPTIAN HIEROGLYPH-13E0A;Lo;0;L;;;;;N;;;;;
+13E0B;EGYPTIAN HIEROGLYPH-13E0B;Lo;0;L;;;;;N;;;;;
+13E0C;EGYPTIAN HIEROGLYPH-13E0C;Lo;0;L;;;;;N;;;;;
+13E0D;EGYPTIAN HIEROGLYPH-13E0D;Lo;0;L;;;;;N;;;;;
+13E0E;EGYPTIAN HIEROGLYPH-13E0E;Lo;0;L;;;;;N;;;;;
+13E0F;EGYPTIAN HIEROGLYPH-13E0F;Lo;0;L;;;;;N;;;;;
+13E10;EGYPTIAN HIEROGLYPH-13E10;Lo;0;L;;;;;N;;;;;
+13E11;EGYPTIAN HIEROGLYPH-13E11;Lo;0;L;;;;;N;;;;;
+13E12;EGYPTIAN HIEROGLYPH-13E12;Lo;0;L;;;;;N;;;;;
+13E13;EGYPTIAN HIEROGLYPH-13E13;Lo;0;L;;;;;N;;;;;
+13E14;EGYPTIAN HIEROGLYPH-13E14;Lo;0;L;;;;;N;;;;;
+13E15;EGYPTIAN HIEROGLYPH-13E15;Lo;0;L;;;;;N;;;;;
+13E16;EGYPTIAN HIEROGLYPH-13E16;Lo;0;L;;;;;N;;;;;
+13E17;EGYPTIAN HIEROGLYPH-13E17;Lo;0;L;;;;;N;;;;;
+13E18;EGYPTIAN HIEROGLYPH-13E18;Lo;0;L;;;;;N;;;;;
+13E19;EGYPTIAN HIEROGLYPH-13E19;Lo;0;L;;;;;N;;;;;
+13E1A;EGYPTIAN HIEROGLYPH-13E1A;Lo;0;L;;;;;N;;;;;
+13E1B;EGYPTIAN HIEROGLYPH-13E1B;Lo;0;L;;;;;N;;;;;
+13E1C;EGYPTIAN HIEROGLYPH-13E1C;Lo;0;L;;;;;N;;;;;
+13E1D;EGYPTIAN HIEROGLYPH-13E1D;Lo;0;L;;;;;N;;;;;
+13E1E;EGYPTIAN HIEROGLYPH-13E1E;Lo;0;L;;;;;N;;;;;
+13E1F;EGYPTIAN HIEROGLYPH-13E1F;Lo;0;L;;;;;N;;;;;
+13E20;EGYPTIAN HIEROGLYPH-13E20;Lo;0;L;;;;;N;;;;;
+13E21;EGYPTIAN HIEROGLYPH-13E21;Lo;0;L;;;;;N;;;;;
+13E22;EGYPTIAN HIEROGLYPH-13E22;Lo;0;L;;;;;N;;;;;
+13E23;EGYPTIAN HIEROGLYPH-13E23;Lo;0;L;;;;;N;;;;;
+13E24;EGYPTIAN HIEROGLYPH-13E24;Lo;0;L;;;;;N;;;;;
+13E25;EGYPTIAN HIEROGLYPH-13E25;Lo;0;L;;;;;N;;;;;
+13E26;EGYPTIAN HIEROGLYPH-13E26;Lo;0;L;;;;;N;;;;;
+13E27;EGYPTIAN HIEROGLYPH-13E27;Lo;0;L;;;;;N;;;;;
+13E28;EGYPTIAN HIEROGLYPH-13E28;Lo;0;L;;;;;N;;;;;
+13E29;EGYPTIAN HIEROGLYPH-13E29;Lo;0;L;;;;;N;;;;;
+13E2A;EGYPTIAN HIEROGLYPH-13E2A;Lo;0;L;;;;;N;;;;;
+13E2B;EGYPTIAN HIEROGLYPH-13E2B;Lo;0;L;;;;;N;;;;;
+13E2C;EGYPTIAN HIEROGLYPH-13E2C;Lo;0;L;;;;;N;;;;;
+13E2D;EGYPTIAN HIEROGLYPH-13E2D;Lo;0;L;;;;;N;;;;;
+13E2E;EGYPTIAN HIEROGLYPH-13E2E;Lo;0;L;;;;;N;;;;;
+13E2F;EGYPTIAN HIEROGLYPH-13E2F;Lo;0;L;;;;;N;;;;;
+13E30;EGYPTIAN HIEROGLYPH-13E30;Lo;0;L;;;;;N;;;;;
+13E31;EGYPTIAN HIEROGLYPH-13E31;Lo;0;L;;;;;N;;;;;
+13E32;EGYPTIAN HIEROGLYPH-13E32;Lo;0;L;;;;;N;;;;;
+13E33;EGYPTIAN HIEROGLYPH-13E33;Lo;0;L;;;;;N;;;;;
+13E34;EGYPTIAN HIEROGLYPH-13E34;Lo;0;L;;;;;N;;;;;
+13E35;EGYPTIAN HIEROGLYPH-13E35;Lo;0;L;;;;;N;;;;;
+13E36;EGYPTIAN HIEROGLYPH-13E36;Lo;0;L;;;;;N;;;;;
+13E37;EGYPTIAN HIEROGLYPH-13E37;Lo;0;L;;;;;N;;;;;
+13E38;EGYPTIAN HIEROGLYPH-13E38;Lo;0;L;;;;;N;;;;;
+13E39;EGYPTIAN HIEROGLYPH-13E39;Lo;0;L;;;;;N;;;;;
+13E3A;EGYPTIAN HIEROGLYPH-13E3A;Lo;0;L;;;;;N;;;;;
+13E3B;EGYPTIAN HIEROGLYPH-13E3B;Lo;0;L;;;;;N;;;;;
+13E3C;EGYPTIAN HIEROGLYPH-13E3C;Lo;0;L;;;;;N;;;;;
+13E3D;EGYPTIAN HIEROGLYPH-13E3D;Lo;0;L;;;;;N;;;;;
+13E3E;EGYPTIAN HIEROGLYPH-13E3E;Lo;0;L;;;;;N;;;;;
+13E3F;EGYPTIAN HIEROGLYPH-13E3F;Lo;0;L;;;;;N;;;;;
+13E40;EGYPTIAN HIEROGLYPH-13E40;Lo;0;L;;;;;N;;;;;
+13E41;EGYPTIAN HIEROGLYPH-13E41;Lo;0;L;;;;;N;;;;;
+13E42;EGYPTIAN HIEROGLYPH-13E42;Lo;0;L;;;;;N;;;;;
+13E43;EGYPTIAN HIEROGLYPH-13E43;Lo;0;L;;;;;N;;;;;
+13E44;EGYPTIAN HIEROGLYPH-13E44;Lo;0;L;;;;;N;;;;;
+13E45;EGYPTIAN HIEROGLYPH-13E45;Lo;0;L;;;;;N;;;;;
+13E46;EGYPTIAN HIEROGLYPH-13E46;Lo;0;L;;;;;N;;;;;
+13E47;EGYPTIAN HIEROGLYPH-13E47;Lo;0;L;;;;;N;;;;;
+13E48;EGYPTIAN HIEROGLYPH-13E48;Lo;0;L;;;;;N;;;;;
+13E49;EGYPTIAN HIEROGLYPH-13E49;Lo;0;L;;;;;N;;;;;
+13E4A;EGYPTIAN HIEROGLYPH-13E4A;Lo;0;L;;;;;N;;;;;
+13E4B;EGYPTIAN HIEROGLYPH-13E4B;Lo;0;L;;;;;N;;;;;
+13E4C;EGYPTIAN HIEROGLYPH-13E4C;Lo;0;L;;;;;N;;;;;
+13E4D;EGYPTIAN HIEROGLYPH-13E4D;Lo;0;L;;;;;N;;;;;
+13E4E;EGYPTIAN HIEROGLYPH-13E4E;Lo;0;L;;;;;N;;;;;
+13E4F;EGYPTIAN HIEROGLYPH-13E4F;Lo;0;L;;;;;N;;;;;
+13E50;EGYPTIAN HIEROGLYPH-13E50;Lo;0;L;;;;;N;;;;;
+13E51;EGYPTIAN HIEROGLYPH-13E51;Lo;0;L;;;;;N;;;;;
+13E52;EGYPTIAN HIEROGLYPH-13E52;Lo;0;L;;;;;N;;;;;
+13E53;EGYPTIAN HIEROGLYPH-13E53;Lo;0;L;;;;;N;;;;;
+13E54;EGYPTIAN HIEROGLYPH-13E54;Lo;0;L;;;;;N;;;;;
+13E55;EGYPTIAN HIEROGLYPH-13E55;Lo;0;L;;;;;N;;;;;
+13E56;EGYPTIAN HIEROGLYPH-13E56;Lo;0;L;;;;;N;;;;;
+13E57;EGYPTIAN HIEROGLYPH-13E57;Lo;0;L;;;;;N;;;;;
+13E58;EGYPTIAN HIEROGLYPH-13E58;Lo;0;L;;;;;N;;;;;
+13E59;EGYPTIAN HIEROGLYPH-13E59;Lo;0;L;;;;;N;;;;;
+13E5A;EGYPTIAN HIEROGLYPH-13E5A;Lo;0;L;;;;;N;;;;;
+13E5B;EGYPTIAN HIEROGLYPH-13E5B;Lo;0;L;;;;;N;;;;;
+13E5C;EGYPTIAN HIEROGLYPH-13E5C;Lo;0;L;;;;;N;;;;;
+13E5D;EGYPTIAN HIEROGLYPH-13E5D;Lo;0;L;;;;;N;;;;;
+13E5E;EGYPTIAN HIEROGLYPH-13E5E;Lo;0;L;;;;;N;;;;;
+13E5F;EGYPTIAN HIEROGLYPH-13E5F;Lo;0;L;;;;;N;;;;;
+13E60;EGYPTIAN HIEROGLYPH-13E60;Lo;0;L;;;;;N;;;;;
+13E61;EGYPTIAN HIEROGLYPH-13E61;Lo;0;L;;;;;N;;;;;
+13E62;EGYPTIAN HIEROGLYPH-13E62;Lo;0;L;;;;;N;;;;;
+13E63;EGYPTIAN HIEROGLYPH-13E63;Lo;0;L;;;;;N;;;;;
+13E64;EGYPTIAN HIEROGLYPH-13E64;Lo;0;L;;;;;N;;;;;
+13E65;EGYPTIAN HIEROGLYPH-13E65;Lo;0;L;;;;;N;;;;;
+13E66;EGYPTIAN HIEROGLYPH-13E66;Lo;0;L;;;;;N;;;;;
+13E67;EGYPTIAN HIEROGLYPH-13E67;Lo;0;L;;;;;N;;;;;
+13E68;EGYPTIAN HIEROGLYPH-13E68;Lo;0;L;;;;;N;;;;;
+13E69;EGYPTIAN HIEROGLYPH-13E69;Lo;0;L;;;;;N;;;;;
+13E6A;EGYPTIAN HIEROGLYPH-13E6A;Lo;0;L;;;;;N;;;;;
+13E6B;EGYPTIAN HIEROGLYPH-13E6B;Lo;0;L;;;;;N;;;;;
+13E6C;EGYPTIAN HIEROGLYPH-13E6C;Lo;0;L;;;;;N;;;;;
+13E6D;EGYPTIAN HIEROGLYPH-13E6D;Lo;0;L;;;;;N;;;;;
+13E6E;EGYPTIAN HIEROGLYPH-13E6E;Lo;0;L;;;;;N;;;;;
+13E6F;EGYPTIAN HIEROGLYPH-13E6F;Lo;0;L;;;;;N;;;;;
+13E70;EGYPTIAN HIEROGLYPH-13E70;Lo;0;L;;;;;N;;;;;
+13E71;EGYPTIAN HIEROGLYPH-13E71;Lo;0;L;;;;;N;;;;;
+13E72;EGYPTIAN HIEROGLYPH-13E72;Lo;0;L;;;;;N;;;;;
+13E73;EGYPTIAN HIEROGLYPH-13E73;Lo;0;L;;;;;N;;;;;
+13E74;EGYPTIAN HIEROGLYPH-13E74;Lo;0;L;;;;;N;;;;;
+13E75;EGYPTIAN HIEROGLYPH-13E75;Lo;0;L;;;;;N;;;;;
+13E76;EGYPTIAN HIEROGLYPH-13E76;Lo;0;L;;;;;N;;;;;
+13E77;EGYPTIAN HIEROGLYPH-13E77;Lo;0;L;;;;;N;;;;;
+13E78;EGYPTIAN HIEROGLYPH-13E78;Lo;0;L;;;;;N;;;;;
+13E79;EGYPTIAN HIEROGLYPH-13E79;Lo;0;L;;;;;N;;;;;
+13E7A;EGYPTIAN HIEROGLYPH-13E7A;Lo;0;L;;;;;N;;;;;
+13E7B;EGYPTIAN HIEROGLYPH-13E7B;Lo;0;L;;;;;N;;;;;
+13E7C;EGYPTIAN HIEROGLYPH-13E7C;Lo;0;L;;;;;N;;;;;
+13E7D;EGYPTIAN HIEROGLYPH-13E7D;Lo;0;L;;;;;N;;;;;
+13E7E;EGYPTIAN HIEROGLYPH-13E7E;Lo;0;L;;;;;N;;;;;
+13E7F;EGYPTIAN HIEROGLYPH-13E7F;Lo;0;L;;;;;N;;;;;
+13E80;EGYPTIAN HIEROGLYPH-13E80;Lo;0;L;;;;;N;;;;;
+13E81;EGYPTIAN HIEROGLYPH-13E81;Lo;0;L;;;;;N;;;;;
+13E82;EGYPTIAN HIEROGLYPH-13E82;Lo;0;L;;;;;N;;;;;
+13E83;EGYPTIAN HIEROGLYPH-13E83;Lo;0;L;;;;;N;;;;;
+13E84;EGYPTIAN HIEROGLYPH-13E84;Lo;0;L;;;;;N;;;;;
+13E85;EGYPTIAN HIEROGLYPH-13E85;Lo;0;L;;;;;N;;;;;
+13E86;EGYPTIAN HIEROGLYPH-13E86;Lo;0;L;;;;;N;;;;;
+13E87;EGYPTIAN HIEROGLYPH-13E87;Lo;0;L;;;;;N;;;;;
+13E88;EGYPTIAN HIEROGLYPH-13E88;Lo;0;L;;;;;N;;;;;
+13E89;EGYPTIAN HIEROGLYPH-13E89;Lo;0;L;;;;;N;;;;;
+13E8A;EGYPTIAN HIEROGLYPH-13E8A;Lo;0;L;;;;;N;;;;;
+13E8B;EGYPTIAN HIEROGLYPH-13E8B;Lo;0;L;;;;;N;;;;;
+13E8C;EGYPTIAN HIEROGLYPH-13E8C;Lo;0;L;;;;;N;;;;;
+13E8D;EGYPTIAN HIEROGLYPH-13E8D;Lo;0;L;;;;;N;;;;;
+13E8E;EGYPTIAN HIEROGLYPH-13E8E;Lo;0;L;;;;;N;;;;;
+13E8F;EGYPTIAN HIEROGLYPH-13E8F;Lo;0;L;;;;;N;;;;;
+13E90;EGYPTIAN HIEROGLYPH-13E90;Lo;0;L;;;;;N;;;;;
+13E91;EGYPTIAN HIEROGLYPH-13E91;Lo;0;L;;;;;N;;;;;
+13E92;EGYPTIAN HIEROGLYPH-13E92;Lo;0;L;;;;;N;;;;;
+13E93;EGYPTIAN HIEROGLYPH-13E93;Lo;0;L;;;;;N;;;;;
+13E94;EGYPTIAN HIEROGLYPH-13E94;Lo;0;L;;;;;N;;;;;
+13E95;EGYPTIAN HIEROGLYPH-13E95;Lo;0;L;;;;;N;;;;;
+13E96;EGYPTIAN HIEROGLYPH-13E96;Lo;0;L;;;;;N;;;;;
+13E97;EGYPTIAN HIEROGLYPH-13E97;Lo;0;L;;;;;N;;;;;
+13E98;EGYPTIAN HIEROGLYPH-13E98;Lo;0;L;;;;;N;;;;;
+13E99;EGYPTIAN HIEROGLYPH-13E99;Lo;0;L;;;;;N;;;;;
+13E9A;EGYPTIAN HIEROGLYPH-13E9A;Lo;0;L;;;;;N;;;;;
+13E9B;EGYPTIAN HIEROGLYPH-13E9B;Lo;0;L;;;;;N;;;;;
+13E9C;EGYPTIAN HIEROGLYPH-13E9C;Lo;0;L;;;;;N;;;;;
+13E9D;EGYPTIAN HIEROGLYPH-13E9D;Lo;0;L;;;;;N;;;;;
+13E9E;EGYPTIAN HIEROGLYPH-13E9E;Lo;0;L;;;;;N;;;;;
+13E9F;EGYPTIAN HIEROGLYPH-13E9F;Lo;0;L;;;;;N;;;;;
+13EA0;EGYPTIAN HIEROGLYPH-13EA0;Lo;0;L;;;;;N;;;;;
+13EA1;EGYPTIAN HIEROGLYPH-13EA1;Lo;0;L;;;;;N;;;;;
+13EA2;EGYPTIAN HIEROGLYPH-13EA2;Lo;0;L;;;;;N;;;;;
+13EA3;EGYPTIAN HIEROGLYPH-13EA3;Lo;0;L;;;;;N;;;;;
+13EA4;EGYPTIAN HIEROGLYPH-13EA4;Lo;0;L;;;;;N;;;;;
+13EA5;EGYPTIAN HIEROGLYPH-13EA5;Lo;0;L;;;;;N;;;;;
+13EA6;EGYPTIAN HIEROGLYPH-13EA6;Lo;0;L;;;;;N;;;;;
+13EA7;EGYPTIAN HIEROGLYPH-13EA7;Lo;0;L;;;;;N;;;;;
+13EA8;EGYPTIAN HIEROGLYPH-13EA8;Lo;0;L;;;;;N;;;;;
+13EA9;EGYPTIAN HIEROGLYPH-13EA9;Lo;0;L;;;;;N;;;;;
+13EAA;EGYPTIAN HIEROGLYPH-13EAA;Lo;0;L;;;;;N;;;;;
+13EAB;EGYPTIAN HIEROGLYPH-13EAB;Lo;0;L;;;;;N;;;;;
+13EAC;EGYPTIAN HIEROGLYPH-13EAC;Lo;0;L;;;;;N;;;;;
+13EAD;EGYPTIAN HIEROGLYPH-13EAD;Lo;0;L;;;;;N;;;;;
+13EAE;EGYPTIAN HIEROGLYPH-13EAE;Lo;0;L;;;;;N;;;;;
+13EAF;EGYPTIAN HIEROGLYPH-13EAF;Lo;0;L;;;;;N;;;;;
+13EB0;EGYPTIAN HIEROGLYPH-13EB0;Lo;0;L;;;;;N;;;;;
+13EB1;EGYPTIAN HIEROGLYPH-13EB1;Lo;0;L;;;;;N;;;;;
+13EB2;EGYPTIAN HIEROGLYPH-13EB2;Lo;0;L;;;;;N;;;;;
+13EB3;EGYPTIAN HIEROGLYPH-13EB3;Lo;0;L;;;;;N;;;;;
+13EB4;EGYPTIAN HIEROGLYPH-13EB4;Lo;0;L;;;;;N;;;;;
+13EB5;EGYPTIAN HIEROGLYPH-13EB5;Lo;0;L;;;;;N;;;;;
+13EB6;EGYPTIAN HIEROGLYPH-13EB6;Lo;0;L;;;;;N;;;;;
+13EB7;EGYPTIAN HIEROGLYPH-13EB7;Lo;0;L;;;;;N;;;;;
+13EB8;EGYPTIAN HIEROGLYPH-13EB8;Lo;0;L;;;;;N;;;;;
+13EB9;EGYPTIAN HIEROGLYPH-13EB9;Lo;0;L;;;;;N;;;;;
+13EBA;EGYPTIAN HIEROGLYPH-13EBA;Lo;0;L;;;;;N;;;;;
+13EBB;EGYPTIAN HIEROGLYPH-13EBB;Lo;0;L;;;;;N;;;;;
+13EBC;EGYPTIAN HIEROGLYPH-13EBC;Lo;0;L;;;;;N;;;;;
+13EBD;EGYPTIAN HIEROGLYPH-13EBD;Lo;0;L;;;;;N;;;;;
+13EBE;EGYPTIAN HIEROGLYPH-13EBE;Lo;0;L;;;;;N;;;;;
+13EBF;EGYPTIAN HIEROGLYPH-13EBF;Lo;0;L;;;;;N;;;;;
+13EC0;EGYPTIAN HIEROGLYPH-13EC0;Lo;0;L;;;;;N;;;;;
+13EC1;EGYPTIAN HIEROGLYPH-13EC1;Lo;0;L;;;;;N;;;;;
+13EC2;EGYPTIAN HIEROGLYPH-13EC2;Lo;0;L;;;;;N;;;;;
+13EC3;EGYPTIAN HIEROGLYPH-13EC3;Lo;0;L;;;;;N;;;;;
+13EC4;EGYPTIAN HIEROGLYPH-13EC4;Lo;0;L;;;;;N;;;;;
+13EC5;EGYPTIAN HIEROGLYPH-13EC5;Lo;0;L;;;;;N;;;;;
+13EC6;EGYPTIAN HIEROGLYPH-13EC6;Lo;0;L;;;;;N;;;;;
+13EC7;EGYPTIAN HIEROGLYPH-13EC7;Lo;0;L;;;;;N;;;;;
+13EC8;EGYPTIAN HIEROGLYPH-13EC8;Lo;0;L;;;;;N;;;;;
+13EC9;EGYPTIAN HIEROGLYPH-13EC9;Lo;0;L;;;;;N;;;;;
+13ECA;EGYPTIAN HIEROGLYPH-13ECA;Lo;0;L;;;;;N;;;;;
+13ECB;EGYPTIAN HIEROGLYPH-13ECB;Lo;0;L;;;;;N;;;;;
+13ECC;EGYPTIAN HIEROGLYPH-13ECC;Lo;0;L;;;;;N;;;;;
+13ECD;EGYPTIAN HIEROGLYPH-13ECD;Lo;0;L;;;;;N;;;;;
+13ECE;EGYPTIAN HIEROGLYPH-13ECE;Lo;0;L;;;;;N;;;;;
+13ECF;EGYPTIAN HIEROGLYPH-13ECF;Lo;0;L;;;;;N;;;;;
+13ED0;EGYPTIAN HIEROGLYPH-13ED0;Lo;0;L;;;;;N;;;;;
+13ED1;EGYPTIAN HIEROGLYPH-13ED1;Lo;0;L;;;;;N;;;;;
+13ED2;EGYPTIAN HIEROGLYPH-13ED2;Lo;0;L;;;;;N;;;;;
+13ED3;EGYPTIAN HIEROGLYPH-13ED3;Lo;0;L;;;;;N;;;;;
+13ED4;EGYPTIAN HIEROGLYPH-13ED4;Lo;0;L;;;;;N;;;;;
+13ED5;EGYPTIAN HIEROGLYPH-13ED5;Lo;0;L;;;;;N;;;;;
+13ED6;EGYPTIAN HIEROGLYPH-13ED6;Lo;0;L;;;;;N;;;;;
+13ED7;EGYPTIAN HIEROGLYPH-13ED7;Lo;0;L;;;;;N;;;;;
+13ED8;EGYPTIAN HIEROGLYPH-13ED8;Lo;0;L;;;;;N;;;;;
+13ED9;EGYPTIAN HIEROGLYPH-13ED9;Lo;0;L;;;;;N;;;;;
+13EDA;EGYPTIAN HIEROGLYPH-13EDA;Lo;0;L;;;;;N;;;;;
+13EDB;EGYPTIAN HIEROGLYPH-13EDB;Lo;0;L;;;;;N;;;;;
+13EDC;EGYPTIAN HIEROGLYPH-13EDC;Lo;0;L;;;;;N;;;;;
+13EDD;EGYPTIAN HIEROGLYPH-13EDD;Lo;0;L;;;;;N;;;;;
+13EDE;EGYPTIAN HIEROGLYPH-13EDE;Lo;0;L;;;;;N;;;;;
+13EDF;EGYPTIAN HIEROGLYPH-13EDF;Lo;0;L;;;;;N;;;;;
+13EE0;EGYPTIAN HIEROGLYPH-13EE0;Lo;0;L;;;;;N;;;;;
+13EE1;EGYPTIAN HIEROGLYPH-13EE1;Lo;0;L;;;;;N;;;;;
+13EE2;EGYPTIAN HIEROGLYPH-13EE2;Lo;0;L;;;;;N;;;;;
+13EE3;EGYPTIAN HIEROGLYPH-13EE3;Lo;0;L;;;;;N;;;;;
+13EE4;EGYPTIAN HIEROGLYPH-13EE4;Lo;0;L;;;;;N;;;;;
+13EE5;EGYPTIAN HIEROGLYPH-13EE5;Lo;0;L;;;;;N;;;;;
+13EE6;EGYPTIAN HIEROGLYPH-13EE6;Lo;0;L;;;;;N;;;;;
+13EE7;EGYPTIAN HIEROGLYPH-13EE7;Lo;0;L;;;;;N;;;;;
+13EE8;EGYPTIAN HIEROGLYPH-13EE8;Lo;0;L;;;;;N;;;;;
+13EE9;EGYPTIAN HIEROGLYPH-13EE9;Lo;0;L;;;;;N;;;;;
+13EEA;EGYPTIAN HIEROGLYPH-13EEA;Lo;0;L;;;;;N;;;;;
+13EEB;EGYPTIAN HIEROGLYPH-13EEB;Lo;0;L;;;;;N;;;;;
+13EEC;EGYPTIAN HIEROGLYPH-13EEC;Lo;0;L;;;;;N;;;;;
+13EED;EGYPTIAN HIEROGLYPH-13EED;Lo;0;L;;;;;N;;;;;
+13EEE;EGYPTIAN HIEROGLYPH-13EEE;Lo;0;L;;;;;N;;;;;
+13EEF;EGYPTIAN HIEROGLYPH-13EEF;Lo;0;L;;;;;N;;;;;
+13EF0;EGYPTIAN HIEROGLYPH-13EF0;Lo;0;L;;;;;N;;;;;
+13EF1;EGYPTIAN HIEROGLYPH-13EF1;Lo;0;L;;;;;N;;;;;
+13EF2;EGYPTIAN HIEROGLYPH-13EF2;Lo;0;L;;;;;N;;;;;
+13EF3;EGYPTIAN HIEROGLYPH-13EF3;Lo;0;L;;;;;N;;;;;
+13EF4;EGYPTIAN HIEROGLYPH-13EF4;Lo;0;L;;;;;N;;;;;
+13EF5;EGYPTIAN HIEROGLYPH-13EF5;Lo;0;L;;;;;N;;;;;
+13EF6;EGYPTIAN HIEROGLYPH-13EF6;Lo;0;L;;;;;N;;;;;
+13EF7;EGYPTIAN HIEROGLYPH-13EF7;Lo;0;L;;;;;N;;;;;
+13EF8;EGYPTIAN HIEROGLYPH-13EF8;Lo;0;L;;;;;N;;;;;
+13EF9;EGYPTIAN HIEROGLYPH-13EF9;Lo;0;L;;;;;N;;;;;
+13EFA;EGYPTIAN HIEROGLYPH-13EFA;Lo;0;L;;;;;N;;;;;
+13EFB;EGYPTIAN HIEROGLYPH-13EFB;Lo;0;L;;;;;N;;;;;
+13EFC;EGYPTIAN HIEROGLYPH-13EFC;Lo;0;L;;;;;N;;;;;
+13EFD;EGYPTIAN HIEROGLYPH-13EFD;Lo;0;L;;;;;N;;;;;
+13EFE;EGYPTIAN HIEROGLYPH-13EFE;Lo;0;L;;;;;N;;;;;
+13EFF;EGYPTIAN HIEROGLYPH-13EFF;Lo;0;L;;;;;N;;;;;
+13F00;EGYPTIAN HIEROGLYPH-13F00;Lo;0;L;;;;;N;;;;;
+13F01;EGYPTIAN HIEROGLYPH-13F01;Lo;0;L;;;;;N;;;;;
+13F02;EGYPTIAN HIEROGLYPH-13F02;Lo;0;L;;;;;N;;;;;
+13F03;EGYPTIAN HIEROGLYPH-13F03;Lo;0;L;;;;;N;;;;;
+13F04;EGYPTIAN HIEROGLYPH-13F04;Lo;0;L;;;;;N;;;;;
+13F05;EGYPTIAN HIEROGLYPH-13F05;Lo;0;L;;;;;N;;;;;
+13F06;EGYPTIAN HIEROGLYPH-13F06;Lo;0;L;;;;;N;;;;;
+13F07;EGYPTIAN HIEROGLYPH-13F07;Lo;0;L;;;;;N;;;;;
+13F08;EGYPTIAN HIEROGLYPH-13F08;Lo;0;L;;;;;N;;;;;
+13F09;EGYPTIAN HIEROGLYPH-13F09;Lo;0;L;;;;;N;;;;;
+13F0A;EGYPTIAN HIEROGLYPH-13F0A;Lo;0;L;;;;;N;;;;;
+13F0B;EGYPTIAN HIEROGLYPH-13F0B;Lo;0;L;;;;;N;;;;;
+13F0C;EGYPTIAN HIEROGLYPH-13F0C;Lo;0;L;;;;;N;;;;;
+13F0D;EGYPTIAN HIEROGLYPH-13F0D;Lo;0;L;;;;;N;;;;;
+13F0E;EGYPTIAN HIEROGLYPH-13F0E;Lo;0;L;;;;;N;;;;;
+13F0F;EGYPTIAN HIEROGLYPH-13F0F;Lo;0;L;;;;;N;;;;;
+13F10;EGYPTIAN HIEROGLYPH-13F10;Lo;0;L;;;;;N;;;;;
+13F11;EGYPTIAN HIEROGLYPH-13F11;Lo;0;L;;;;;N;;;;;
+13F12;EGYPTIAN HIEROGLYPH-13F12;Lo;0;L;;;;;N;;;;;
+13F13;EGYPTIAN HIEROGLYPH-13F13;Lo;0;L;;;;;N;;;;;
+13F14;EGYPTIAN HIEROGLYPH-13F14;Lo;0;L;;;;;N;;;;;
+13F15;EGYPTIAN HIEROGLYPH-13F15;Lo;0;L;;;;;N;;;;;
+13F16;EGYPTIAN HIEROGLYPH-13F16;Lo;0;L;;;;;N;;;;;
+13F17;EGYPTIAN HIEROGLYPH-13F17;Lo;0;L;;;;;N;;;;;
+13F18;EGYPTIAN HIEROGLYPH-13F18;Lo;0;L;;;;;N;;;;;
+13F19;EGYPTIAN HIEROGLYPH-13F19;Lo;0;L;;;;;N;;;;;
+13F1A;EGYPTIAN HIEROGLYPH-13F1A;Lo;0;L;;;;;N;;;;;
+13F1B;EGYPTIAN HIEROGLYPH-13F1B;Lo;0;L;;;;;N;;;;;
+13F1C;EGYPTIAN HIEROGLYPH-13F1C;Lo;0;L;;;;;N;;;;;
+13F1D;EGYPTIAN HIEROGLYPH-13F1D;Lo;0;L;;;;;N;;;;;
+13F1E;EGYPTIAN HIEROGLYPH-13F1E;Lo;0;L;;;;;N;;;;;
+13F1F;EGYPTIAN HIEROGLYPH-13F1F;Lo;0;L;;;;;N;;;;;
+13F20;EGYPTIAN HIEROGLYPH-13F20;Lo;0;L;;;;;N;;;;;
+13F21;EGYPTIAN HIEROGLYPH-13F21;Lo;0;L;;;;;N;;;;;
+13F22;EGYPTIAN HIEROGLYPH-13F22;Lo;0;L;;;;;N;;;;;
+13F23;EGYPTIAN HIEROGLYPH-13F23;Lo;0;L;;;;;N;;;;;
+13F24;EGYPTIAN HIEROGLYPH-13F24;Lo;0;L;;;;;N;;;;;
+13F25;EGYPTIAN HIEROGLYPH-13F25;Lo;0;L;;;;;N;;;;;
+13F26;EGYPTIAN HIEROGLYPH-13F26;Lo;0;L;;;;;N;;;;;
+13F27;EGYPTIAN HIEROGLYPH-13F27;Lo;0;L;;;;;N;;;;;
+13F28;EGYPTIAN HIEROGLYPH-13F28;Lo;0;L;;;;;N;;;;;
+13F29;EGYPTIAN HIEROGLYPH-13F29;Lo;0;L;;;;;N;;;;;
+13F2A;EGYPTIAN HIEROGLYPH-13F2A;Lo;0;L;;;;;N;;;;;
+13F2B;EGYPTIAN HIEROGLYPH-13F2B;Lo;0;L;;;;;N;;;;;
+13F2C;EGYPTIAN HIEROGLYPH-13F2C;Lo;0;L;;;;;N;;;;;
+13F2D;EGYPTIAN HIEROGLYPH-13F2D;Lo;0;L;;;;;N;;;;;
+13F2E;EGYPTIAN HIEROGLYPH-13F2E;Lo;0;L;;;;;N;;;;;
+13F2F;EGYPTIAN HIEROGLYPH-13F2F;Lo;0;L;;;;;N;;;;;
+13F30;EGYPTIAN HIEROGLYPH-13F30;Lo;0;L;;;;;N;;;;;
+13F31;EGYPTIAN HIEROGLYPH-13F31;Lo;0;L;;;;;N;;;;;
+13F32;EGYPTIAN HIEROGLYPH-13F32;Lo;0;L;;;;;N;;;;;
+13F33;EGYPTIAN HIEROGLYPH-13F33;Lo;0;L;;;;;N;;;;;
+13F34;EGYPTIAN HIEROGLYPH-13F34;Lo;0;L;;;;;N;;;;;
+13F35;EGYPTIAN HIEROGLYPH-13F35;Lo;0;L;;;;;N;;;;;
+13F36;EGYPTIAN HIEROGLYPH-13F36;Lo;0;L;;;;;N;;;;;
+13F37;EGYPTIAN HIEROGLYPH-13F37;Lo;0;L;;;;;N;;;;;
+13F38;EGYPTIAN HIEROGLYPH-13F38;Lo;0;L;;;;;N;;;;;
+13F39;EGYPTIAN HIEROGLYPH-13F39;Lo;0;L;;;;;N;;;;;
+13F3A;EGYPTIAN HIEROGLYPH-13F3A;Lo;0;L;;;;;N;;;;;
+13F3B;EGYPTIAN HIEROGLYPH-13F3B;Lo;0;L;;;;;N;;;;;
+13F3C;EGYPTIAN HIEROGLYPH-13F3C;Lo;0;L;;;;;N;;;;;
+13F3D;EGYPTIAN HIEROGLYPH-13F3D;Lo;0;L;;;;;N;;;;;
+13F3E;EGYPTIAN HIEROGLYPH-13F3E;Lo;0;L;;;;;N;;;;;
+13F3F;EGYPTIAN HIEROGLYPH-13F3F;Lo;0;L;;;;;N;;;;;
+13F40;EGYPTIAN HIEROGLYPH-13F40;Lo;0;L;;;;;N;;;;;
+13F41;EGYPTIAN HIEROGLYPH-13F41;Lo;0;L;;;;;N;;;;;
+13F42;EGYPTIAN HIEROGLYPH-13F42;Lo;0;L;;;;;N;;;;;
+13F43;EGYPTIAN HIEROGLYPH-13F43;Lo;0;L;;;;;N;;;;;
+13F44;EGYPTIAN HIEROGLYPH-13F44;Lo;0;L;;;;;N;;;;;
+13F45;EGYPTIAN HIEROGLYPH-13F45;Lo;0;L;;;;;N;;;;;
+13F46;EGYPTIAN HIEROGLYPH-13F46;Lo;0;L;;;;;N;;;;;
+13F47;EGYPTIAN HIEROGLYPH-13F47;Lo;0;L;;;;;N;;;;;
+13F48;EGYPTIAN HIEROGLYPH-13F48;Lo;0;L;;;;;N;;;;;
+13F49;EGYPTIAN HIEROGLYPH-13F49;Lo;0;L;;;;;N;;;;;
+13F4A;EGYPTIAN HIEROGLYPH-13F4A;Lo;0;L;;;;;N;;;;;
+13F4B;EGYPTIAN HIEROGLYPH-13F4B;Lo;0;L;;;;;N;;;;;
+13F4C;EGYPTIAN HIEROGLYPH-13F4C;Lo;0;L;;;;;N;;;;;
+13F4D;EGYPTIAN HIEROGLYPH-13F4D;Lo;0;L;;;;;N;;;;;
+13F4E;EGYPTIAN HIEROGLYPH-13F4E;Lo;0;L;;;;;N;;;;;
+13F4F;EGYPTIAN HIEROGLYPH-13F4F;Lo;0;L;;;;;N;;;;;
+13F50;EGYPTIAN HIEROGLYPH-13F50;Lo;0;L;;;;;N;;;;;
+13F51;EGYPTIAN HIEROGLYPH-13F51;Lo;0;L;;;;;N;;;;;
+13F52;EGYPTIAN HIEROGLYPH-13F52;Lo;0;L;;;;;N;;;;;
+13F53;EGYPTIAN HIEROGLYPH-13F53;Lo;0;L;;;;;N;;;;;
+13F54;EGYPTIAN HIEROGLYPH-13F54;Lo;0;L;;;;;N;;;;;
+13F55;EGYPTIAN HIEROGLYPH-13F55;Lo;0;L;;;;;N;;;;;
+13F56;EGYPTIAN HIEROGLYPH-13F56;Lo;0;L;;;;;N;;;;;
+13F57;EGYPTIAN HIEROGLYPH-13F57;Lo;0;L;;;;;N;;;;;
+13F58;EGYPTIAN HIEROGLYPH-13F58;Lo;0;L;;;;;N;;;;;
+13F59;EGYPTIAN HIEROGLYPH-13F59;Lo;0;L;;;;;N;;;;;
+13F5A;EGYPTIAN HIEROGLYPH-13F5A;Lo;0;L;;;;;N;;;;;
+13F5B;EGYPTIAN HIEROGLYPH-13F5B;Lo;0;L;;;;;N;;;;;
+13F5C;EGYPTIAN HIEROGLYPH-13F5C;Lo;0;L;;;;;N;;;;;
+13F5D;EGYPTIAN HIEROGLYPH-13F5D;Lo;0;L;;;;;N;;;;;
+13F5E;EGYPTIAN HIEROGLYPH-13F5E;Lo;0;L;;;;;N;;;;;
+13F5F;EGYPTIAN HIEROGLYPH-13F5F;Lo;0;L;;;;;N;;;;;
+13F60;EGYPTIAN HIEROGLYPH-13F60;Lo;0;L;;;;;N;;;;;
+13F61;EGYPTIAN HIEROGLYPH-13F61;Lo;0;L;;;;;N;;;;;
+13F62;EGYPTIAN HIEROGLYPH-13F62;Lo;0;L;;;;;N;;;;;
+13F63;EGYPTIAN HIEROGLYPH-13F63;Lo;0;L;;;;;N;;;;;
+13F64;EGYPTIAN HIEROGLYPH-13F64;Lo;0;L;;;;;N;;;;;
+13F65;EGYPTIAN HIEROGLYPH-13F65;Lo;0;L;;;;;N;;;;;
+13F66;EGYPTIAN HIEROGLYPH-13F66;Lo;0;L;;;;;N;;;;;
+13F67;EGYPTIAN HIEROGLYPH-13F67;Lo;0;L;;;;;N;;;;;
+13F68;EGYPTIAN HIEROGLYPH-13F68;Lo;0;L;;;;;N;;;;;
+13F69;EGYPTIAN HIEROGLYPH-13F69;Lo;0;L;;;;;N;;;;;
+13F6A;EGYPTIAN HIEROGLYPH-13F6A;Lo;0;L;;;;;N;;;;;
+13F6B;EGYPTIAN HIEROGLYPH-13F6B;Lo;0;L;;;;;N;;;;;
+13F6C;EGYPTIAN HIEROGLYPH-13F6C;Lo;0;L;;;;;N;;;;;
+13F6D;EGYPTIAN HIEROGLYPH-13F6D;Lo;0;L;;;;;N;;;;;
+13F6E;EGYPTIAN HIEROGLYPH-13F6E;Lo;0;L;;;;;N;;;;;
+13F6F;EGYPTIAN HIEROGLYPH-13F6F;Lo;0;L;;;;;N;;;;;
+13F70;EGYPTIAN HIEROGLYPH-13F70;Lo;0;L;;;;;N;;;;;
+13F71;EGYPTIAN HIEROGLYPH-13F71;Lo;0;L;;;;;N;;;;;
+13F72;EGYPTIAN HIEROGLYPH-13F72;Lo;0;L;;;;;N;;;;;
+13F73;EGYPTIAN HIEROGLYPH-13F73;Lo;0;L;;;;;N;;;;;
+13F74;EGYPTIAN HIEROGLYPH-13F74;Lo;0;L;;;;;N;;;;;
+13F75;EGYPTIAN HIEROGLYPH-13F75;Lo;0;L;;;;;N;;;;;
+13F76;EGYPTIAN HIEROGLYPH-13F76;Lo;0;L;;;;;N;;;;;
+13F77;EGYPTIAN HIEROGLYPH-13F77;Lo;0;L;;;;;N;;;;;
+13F78;EGYPTIAN HIEROGLYPH-13F78;Lo;0;L;;;;;N;;;;;
+13F79;EGYPTIAN HIEROGLYPH-13F79;Lo;0;L;;;;;N;;;;;
+13F7A;EGYPTIAN HIEROGLYPH-13F7A;Lo;0;L;;;;;N;;;;;
+13F7B;EGYPTIAN HIEROGLYPH-13F7B;Lo;0;L;;;;;N;;;;;
+13F7C;EGYPTIAN HIEROGLYPH-13F7C;Lo;0;L;;;;;N;;;;;
+13F7D;EGYPTIAN HIEROGLYPH-13F7D;Lo;0;L;;;;;N;;;;;
+13F7E;EGYPTIAN HIEROGLYPH-13F7E;Lo;0;L;;;;;N;;;;;
+13F7F;EGYPTIAN HIEROGLYPH-13F7F;Lo;0;L;;;;;N;;;;;
+13F80;EGYPTIAN HIEROGLYPH-13F80;Lo;0;L;;;;;N;;;;;
+13F81;EGYPTIAN HIEROGLYPH-13F81;Lo;0;L;;;;;N;;;;;
+13F82;EGYPTIAN HIEROGLYPH-13F82;Lo;0;L;;;;;N;;;;;
+13F83;EGYPTIAN HIEROGLYPH-13F83;Lo;0;L;;;;;N;;;;;
+13F84;EGYPTIAN HIEROGLYPH-13F84;Lo;0;L;;;;;N;;;;;
+13F85;EGYPTIAN HIEROGLYPH-13F85;Lo;0;L;;;;;N;;;;;
+13F86;EGYPTIAN HIEROGLYPH-13F86;Lo;0;L;;;;;N;;;;;
+13F87;EGYPTIAN HIEROGLYPH-13F87;Lo;0;L;;;;;N;;;;;
+13F88;EGYPTIAN HIEROGLYPH-13F88;Lo;0;L;;;;;N;;;;;
+13F89;EGYPTIAN HIEROGLYPH-13F89;Lo;0;L;;;;;N;;;;;
+13F8A;EGYPTIAN HIEROGLYPH-13F8A;Lo;0;L;;;;;N;;;;;
+13F8B;EGYPTIAN HIEROGLYPH-13F8B;Lo;0;L;;;;;N;;;;;
+13F8C;EGYPTIAN HIEROGLYPH-13F8C;Lo;0;L;;;;;N;;;;;
+13F8D;EGYPTIAN HIEROGLYPH-13F8D;Lo;0;L;;;;;N;;;;;
+13F8E;EGYPTIAN HIEROGLYPH-13F8E;Lo;0;L;;;;;N;;;;;
+13F8F;EGYPTIAN HIEROGLYPH-13F8F;Lo;0;L;;;;;N;;;;;
+13F90;EGYPTIAN HIEROGLYPH-13F90;Lo;0;L;;;;;N;;;;;
+13F91;EGYPTIAN HIEROGLYPH-13F91;Lo;0;L;;;;;N;;;;;
+13F92;EGYPTIAN HIEROGLYPH-13F92;Lo;0;L;;;;;N;;;;;
+13F93;EGYPTIAN HIEROGLYPH-13F93;Lo;0;L;;;;;N;;;;;
+13F94;EGYPTIAN HIEROGLYPH-13F94;Lo;0;L;;;;;N;;;;;
+13F95;EGYPTIAN HIEROGLYPH-13F95;Lo;0;L;;;;;N;;;;;
+13F96;EGYPTIAN HIEROGLYPH-13F96;Lo;0;L;;;;;N;;;;;
+13F97;EGYPTIAN HIEROGLYPH-13F97;Lo;0;L;;;;;N;;;;;
+13F98;EGYPTIAN HIEROGLYPH-13F98;Lo;0;L;;;;;N;;;;;
+13F99;EGYPTIAN HIEROGLYPH-13F99;Lo;0;L;;;;;N;;;;;
+13F9A;EGYPTIAN HIEROGLYPH-13F9A;Lo;0;L;;;;;N;;;;;
+13F9B;EGYPTIAN HIEROGLYPH-13F9B;Lo;0;L;;;;;N;;;;;
+13F9C;EGYPTIAN HIEROGLYPH-13F9C;Lo;0;L;;;;;N;;;;;
+13F9D;EGYPTIAN HIEROGLYPH-13F9D;Lo;0;L;;;;;N;;;;;
+13F9E;EGYPTIAN HIEROGLYPH-13F9E;Lo;0;L;;;;;N;;;;;
+13F9F;EGYPTIAN HIEROGLYPH-13F9F;Lo;0;L;;;;;N;;;;;
+13FA0;EGYPTIAN HIEROGLYPH-13FA0;Lo;0;L;;;;;N;;;;;
+13FA1;EGYPTIAN HIEROGLYPH-13FA1;Lo;0;L;;;;;N;;;;;
+13FA2;EGYPTIAN HIEROGLYPH-13FA2;Lo;0;L;;;;;N;;;;;
+13FA3;EGYPTIAN HIEROGLYPH-13FA3;Lo;0;L;;;;;N;;;;;
+13FA4;EGYPTIAN HIEROGLYPH-13FA4;Lo;0;L;;;;;N;;;;;
+13FA5;EGYPTIAN HIEROGLYPH-13FA5;Lo;0;L;;;;;N;;;;;
+13FA6;EGYPTIAN HIEROGLYPH-13FA6;Lo;0;L;;;;;N;;;;;
+13FA7;EGYPTIAN HIEROGLYPH-13FA7;Lo;0;L;;;;;N;;;;;
+13FA8;EGYPTIAN HIEROGLYPH-13FA8;Lo;0;L;;;;;N;;;;;
+13FA9;EGYPTIAN HIEROGLYPH-13FA9;Lo;0;L;;;;;N;;;;;
+13FAA;EGYPTIAN HIEROGLYPH-13FAA;Lo;0;L;;;;;N;;;;;
+13FAB;EGYPTIAN HIEROGLYPH-13FAB;Lo;0;L;;;;;N;;;;;
+13FAC;EGYPTIAN HIEROGLYPH-13FAC;Lo;0;L;;;;;N;;;;;
+13FAD;EGYPTIAN HIEROGLYPH-13FAD;Lo;0;L;;;;;N;;;;;
+13FAE;EGYPTIAN HIEROGLYPH-13FAE;Lo;0;L;;;;;N;;;;;
+13FAF;EGYPTIAN HIEROGLYPH-13FAF;Lo;0;L;;;;;N;;;;;
+13FB0;EGYPTIAN HIEROGLYPH-13FB0;Lo;0;L;;;;;N;;;;;
+13FB1;EGYPTIAN HIEROGLYPH-13FB1;Lo;0;L;;;;;N;;;;;
+13FB2;EGYPTIAN HIEROGLYPH-13FB2;Lo;0;L;;;;;N;;;;;
+13FB3;EGYPTIAN HIEROGLYPH-13FB3;Lo;0;L;;;;;N;;;;;
+13FB4;EGYPTIAN HIEROGLYPH-13FB4;Lo;0;L;;;;;N;;;;;
+13FB5;EGYPTIAN HIEROGLYPH-13FB5;Lo;0;L;;;;;N;;;;;
+13FB6;EGYPTIAN HIEROGLYPH-13FB6;Lo;0;L;;;;;N;;;;;
+13FB7;EGYPTIAN HIEROGLYPH-13FB7;Lo;0;L;;;;;N;;;;;
+13FB8;EGYPTIAN HIEROGLYPH-13FB8;Lo;0;L;;;;;N;;;;;
+13FB9;EGYPTIAN HIEROGLYPH-13FB9;Lo;0;L;;;;;N;;;;;
+13FBA;EGYPTIAN HIEROGLYPH-13FBA;Lo;0;L;;;;;N;;;;;
+13FBB;EGYPTIAN HIEROGLYPH-13FBB;Lo;0;L;;;;;N;;;;;
+13FBC;EGYPTIAN HIEROGLYPH-13FBC;Lo;0;L;;;;;N;;;;;
+13FBD;EGYPTIAN HIEROGLYPH-13FBD;Lo;0;L;;;;;N;;;;;
+13FBE;EGYPTIAN HIEROGLYPH-13FBE;Lo;0;L;;;;;N;;;;;
+13FBF;EGYPTIAN HIEROGLYPH-13FBF;Lo;0;L;;;;;N;;;;;
+13FC0;EGYPTIAN HIEROGLYPH-13FC0;Lo;0;L;;;;;N;;;;;
+13FC1;EGYPTIAN HIEROGLYPH-13FC1;Lo;0;L;;;;;N;;;;;
+13FC2;EGYPTIAN HIEROGLYPH-13FC2;Lo;0;L;;;;;N;;;;;
+13FC3;EGYPTIAN HIEROGLYPH-13FC3;Lo;0;L;;;;;N;;;;;
+13FC4;EGYPTIAN HIEROGLYPH-13FC4;Lo;0;L;;;;;N;;;;;
+13FC5;EGYPTIAN HIEROGLYPH-13FC5;Lo;0;L;;;;;N;;;;;
+13FC6;EGYPTIAN HIEROGLYPH-13FC6;Lo;0;L;;;;;N;;;;;
+13FC7;EGYPTIAN HIEROGLYPH-13FC7;Lo;0;L;;;;;N;;;;;
+13FC8;EGYPTIAN HIEROGLYPH-13FC8;Lo;0;L;;;;;N;;;;;
+13FC9;EGYPTIAN HIEROGLYPH-13FC9;Lo;0;L;;;;;N;;;;;
+13FCA;EGYPTIAN HIEROGLYPH-13FCA;Lo;0;L;;;;;N;;;;;
+13FCB;EGYPTIAN HIEROGLYPH-13FCB;Lo;0;L;;;;;N;;;;;
+13FCC;EGYPTIAN HIEROGLYPH-13FCC;Lo;0;L;;;;;N;;;;;
+13FCD;EGYPTIAN HIEROGLYPH-13FCD;Lo;0;L;;;;;N;;;;;
+13FCE;EGYPTIAN HIEROGLYPH-13FCE;Lo;0;L;;;;;N;;;;;
+13FCF;EGYPTIAN HIEROGLYPH-13FCF;Lo;0;L;;;;;N;;;;;
+13FD0;EGYPTIAN HIEROGLYPH-13FD0;Lo;0;L;;;;;N;;;;;
+13FD1;EGYPTIAN HIEROGLYPH-13FD1;Lo;0;L;;;;;N;;;;;
+13FD2;EGYPTIAN HIEROGLYPH-13FD2;Lo;0;L;;;;;N;;;;;
+13FD3;EGYPTIAN HIEROGLYPH-13FD3;Lo;0;L;;;;;N;;;;;
+13FD4;EGYPTIAN HIEROGLYPH-13FD4;Lo;0;L;;;;;N;;;;;
+13FD5;EGYPTIAN HIEROGLYPH-13FD5;Lo;0;L;;;;;N;;;;;
+13FD6;EGYPTIAN HIEROGLYPH-13FD6;Lo;0;L;;;;;N;;;;;
+13FD7;EGYPTIAN HIEROGLYPH-13FD7;Lo;0;L;;;;;N;;;;;
+13FD8;EGYPTIAN HIEROGLYPH-13FD8;Lo;0;L;;;;;N;;;;;
+13FD9;EGYPTIAN HIEROGLYPH-13FD9;Lo;0;L;;;;;N;;;;;
+13FDA;EGYPTIAN HIEROGLYPH-13FDA;Lo;0;L;;;;;N;;;;;
+13FDB;EGYPTIAN HIEROGLYPH-13FDB;Lo;0;L;;;;;N;;;;;
+13FDC;EGYPTIAN HIEROGLYPH-13FDC;Lo;0;L;;;;;N;;;;;
+13FDD;EGYPTIAN HIEROGLYPH-13FDD;Lo;0;L;;;;;N;;;;;
+13FDE;EGYPTIAN HIEROGLYPH-13FDE;Lo;0;L;;;;;N;;;;;
+13FDF;EGYPTIAN HIEROGLYPH-13FDF;Lo;0;L;;;;;N;;;;;
+13FE0;EGYPTIAN HIEROGLYPH-13FE0;Lo;0;L;;;;;N;;;;;
+13FE1;EGYPTIAN HIEROGLYPH-13FE1;Lo;0;L;;;;;N;;;;;
+13FE2;EGYPTIAN HIEROGLYPH-13FE2;Lo;0;L;;;;;N;;;;;
+13FE3;EGYPTIAN HIEROGLYPH-13FE3;Lo;0;L;;;;;N;;;;;
+13FE4;EGYPTIAN HIEROGLYPH-13FE4;Lo;0;L;;;;;N;;;;;
+13FE5;EGYPTIAN HIEROGLYPH-13FE5;Lo;0;L;;;;;N;;;;;
+13FE6;EGYPTIAN HIEROGLYPH-13FE6;Lo;0;L;;;;;N;;;;;
+13FE7;EGYPTIAN HIEROGLYPH-13FE7;Lo;0;L;;;;;N;;;;;
+13FE8;EGYPTIAN HIEROGLYPH-13FE8;Lo;0;L;;;;;N;;;;;
+13FE9;EGYPTIAN HIEROGLYPH-13FE9;Lo;0;L;;;;;N;;;;;
+13FEA;EGYPTIAN HIEROGLYPH-13FEA;Lo;0;L;;;;;N;;;;;
+13FEB;EGYPTIAN HIEROGLYPH-13FEB;Lo;0;L;;;;;N;;;;;
+13FEC;EGYPTIAN HIEROGLYPH-13FEC;Lo;0;L;;;;;N;;;;;
+13FED;EGYPTIAN HIEROGLYPH-13FED;Lo;0;L;;;;;N;;;;;
+13FEE;EGYPTIAN HIEROGLYPH-13FEE;Lo;0;L;;;;;N;;;;;
+13FEF;EGYPTIAN HIEROGLYPH-13FEF;Lo;0;L;;;;;N;;;;;
+13FF0;EGYPTIAN HIEROGLYPH-13FF0;Lo;0;L;;;;;N;;;;;
+13FF1;EGYPTIAN HIEROGLYPH-13FF1;Lo;0;L;;;;;N;;;;;
+13FF2;EGYPTIAN HIEROGLYPH-13FF2;Lo;0;L;;;;;N;;;;;
+13FF3;EGYPTIAN HIEROGLYPH-13FF3;Lo;0;L;;;;;N;;;;;
+13FF4;EGYPTIAN HIEROGLYPH-13FF4;Lo;0;L;;;;;N;;;;;
+13FF5;EGYPTIAN HIEROGLYPH-13FF5;Lo;0;L;;;;;N;;;;;
+13FF6;EGYPTIAN HIEROGLYPH-13FF6;Lo;0;L;;;;;N;;;;;
+13FF7;EGYPTIAN HIEROGLYPH-13FF7;Lo;0;L;;;;;N;;;;;
+13FF8;EGYPTIAN HIEROGLYPH-13FF8;Lo;0;L;;;;;N;;;;;
+13FF9;EGYPTIAN HIEROGLYPH-13FF9;Lo;0;L;;;;;N;;;;;
+13FFA;EGYPTIAN HIEROGLYPH-13FFA;Lo;0;L;;;;;N;;;;;
+13FFB;EGYPTIAN HIEROGLYPH-13FFB;Lo;0;L;;;;;N;;;;;
+13FFC;EGYPTIAN HIEROGLYPH-13FFC;Lo;0;L;;;;;N;;;;;
+13FFD;EGYPTIAN HIEROGLYPH-13FFD;Lo;0;L;;;;;N;;;;;
+13FFE;EGYPTIAN HIEROGLYPH-13FFE;Lo;0;L;;;;;N;;;;;
+13FFF;EGYPTIAN HIEROGLYPH-13FFF;Lo;0;L;;;;;N;;;;;
+14000;EGYPTIAN HIEROGLYPH-14000;Lo;0;L;;;;;N;;;;;
+14001;EGYPTIAN HIEROGLYPH-14001;Lo;0;L;;;;;N;;;;;
+14002;EGYPTIAN HIEROGLYPH-14002;Lo;0;L;;;;;N;;;;;
+14003;EGYPTIAN HIEROGLYPH-14003;Lo;0;L;;;;;N;;;;;
+14004;EGYPTIAN HIEROGLYPH-14004;Lo;0;L;;;;;N;;;;;
+14005;EGYPTIAN HIEROGLYPH-14005;Lo;0;L;;;;;N;;;;;
+14006;EGYPTIAN HIEROGLYPH-14006;Lo;0;L;;;;;N;;;;;
+14007;EGYPTIAN HIEROGLYPH-14007;Lo;0;L;;;;;N;;;;;
+14008;EGYPTIAN HIEROGLYPH-14008;Lo;0;L;;;;;N;;;;;
+14009;EGYPTIAN HIEROGLYPH-14009;Lo;0;L;;;;;N;;;;;
+1400A;EGYPTIAN HIEROGLYPH-1400A;Lo;0;L;;;;;N;;;;;
+1400B;EGYPTIAN HIEROGLYPH-1400B;Lo;0;L;;;;;N;;;;;
+1400C;EGYPTIAN HIEROGLYPH-1400C;Lo;0;L;;;;;N;;;;;
+1400D;EGYPTIAN HIEROGLYPH-1400D;Lo;0;L;;;;;N;;;;;
+1400E;EGYPTIAN HIEROGLYPH-1400E;Lo;0;L;;;;;N;;;;;
+1400F;EGYPTIAN HIEROGLYPH-1400F;Lo;0;L;;;;;N;;;;;
+14010;EGYPTIAN HIEROGLYPH-14010;Lo;0;L;;;;;N;;;;;
+14011;EGYPTIAN HIEROGLYPH-14011;Lo;0;L;;;;;N;;;;;
+14012;EGYPTIAN HIEROGLYPH-14012;Lo;0;L;;;;;N;;;;;
+14013;EGYPTIAN HIEROGLYPH-14013;Lo;0;L;;;;;N;;;;;
+14014;EGYPTIAN HIEROGLYPH-14014;Lo;0;L;;;;;N;;;;;
+14015;EGYPTIAN HIEROGLYPH-14015;Lo;0;L;;;;;N;;;;;
+14016;EGYPTIAN HIEROGLYPH-14016;Lo;0;L;;;;;N;;;;;
+14017;EGYPTIAN HIEROGLYPH-14017;Lo;0;L;;;;;N;;;;;
+14018;EGYPTIAN HIEROGLYPH-14018;Lo;0;L;;;;;N;;;;;
+14019;EGYPTIAN HIEROGLYPH-14019;Lo;0;L;;;;;N;;;;;
+1401A;EGYPTIAN HIEROGLYPH-1401A;Lo;0;L;;;;;N;;;;;
+1401B;EGYPTIAN HIEROGLYPH-1401B;Lo;0;L;;;;;N;;;;;
+1401C;EGYPTIAN HIEROGLYPH-1401C;Lo;0;L;;;;;N;;;;;
+1401D;EGYPTIAN HIEROGLYPH-1401D;Lo;0;L;;;;;N;;;;;
+1401E;EGYPTIAN HIEROGLYPH-1401E;Lo;0;L;;;;;N;;;;;
+1401F;EGYPTIAN HIEROGLYPH-1401F;Lo;0;L;;;;;N;;;;;
+14020;EGYPTIAN HIEROGLYPH-14020;Lo;0;L;;;;;N;;;;;
+14021;EGYPTIAN HIEROGLYPH-14021;Lo;0;L;;;;;N;;;;;
+14022;EGYPTIAN HIEROGLYPH-14022;Lo;0;L;;;;;N;;;;;
+14023;EGYPTIAN HIEROGLYPH-14023;Lo;0;L;;;;;N;;;;;
+14024;EGYPTIAN HIEROGLYPH-14024;Lo;0;L;;;;;N;;;;;
+14025;EGYPTIAN HIEROGLYPH-14025;Lo;0;L;;;;;N;;;;;
+14026;EGYPTIAN HIEROGLYPH-14026;Lo;0;L;;;;;N;;;;;
+14027;EGYPTIAN HIEROGLYPH-14027;Lo;0;L;;;;;N;;;;;
+14028;EGYPTIAN HIEROGLYPH-14028;Lo;0;L;;;;;N;;;;;
+14029;EGYPTIAN HIEROGLYPH-14029;Lo;0;L;;;;;N;;;;;
+1402A;EGYPTIAN HIEROGLYPH-1402A;Lo;0;L;;;;;N;;;;;
+1402B;EGYPTIAN HIEROGLYPH-1402B;Lo;0;L;;;;;N;;;;;
+1402C;EGYPTIAN HIEROGLYPH-1402C;Lo;0;L;;;;;N;;;;;
+1402D;EGYPTIAN HIEROGLYPH-1402D;Lo;0;L;;;;;N;;;;;
+1402E;EGYPTIAN HIEROGLYPH-1402E;Lo;0;L;;;;;N;;;;;
+1402F;EGYPTIAN HIEROGLYPH-1402F;Lo;0;L;;;;;N;;;;;
+14030;EGYPTIAN HIEROGLYPH-14030;Lo;0;L;;;;;N;;;;;
+14031;EGYPTIAN HIEROGLYPH-14031;Lo;0;L;;;;;N;;;;;
+14032;EGYPTIAN HIEROGLYPH-14032;Lo;0;L;;;;;N;;;;;
+14033;EGYPTIAN HIEROGLYPH-14033;Lo;0;L;;;;;N;;;;;
+14034;EGYPTIAN HIEROGLYPH-14034;Lo;0;L;;;;;N;;;;;
+14035;EGYPTIAN HIEROGLYPH-14035;Lo;0;L;;;;;N;;;;;
+14036;EGYPTIAN HIEROGLYPH-14036;Lo;0;L;;;;;N;;;;;
+14037;EGYPTIAN HIEROGLYPH-14037;Lo;0;L;;;;;N;;;;;
+14038;EGYPTIAN HIEROGLYPH-14038;Lo;0;L;;;;;N;;;;;
+14039;EGYPTIAN HIEROGLYPH-14039;Lo;0;L;;;;;N;;;;;
+1403A;EGYPTIAN HIEROGLYPH-1403A;Lo;0;L;;;;;N;;;;;
+1403B;EGYPTIAN HIEROGLYPH-1403B;Lo;0;L;;;;;N;;;;;
+1403C;EGYPTIAN HIEROGLYPH-1403C;Lo;0;L;;;;;N;;;;;
+1403D;EGYPTIAN HIEROGLYPH-1403D;Lo;0;L;;;;;N;;;;;
+1403E;EGYPTIAN HIEROGLYPH-1403E;Lo;0;L;;;;;N;;;;;
+1403F;EGYPTIAN HIEROGLYPH-1403F;Lo;0;L;;;;;N;;;;;
+14040;EGYPTIAN HIEROGLYPH-14040;Lo;0;L;;;;;N;;;;;
+14041;EGYPTIAN HIEROGLYPH-14041;Lo;0;L;;;;;N;;;;;
+14042;EGYPTIAN HIEROGLYPH-14042;Lo;0;L;;;;;N;;;;;
+14043;EGYPTIAN HIEROGLYPH-14043;Lo;0;L;;;;;N;;;;;
+14044;EGYPTIAN HIEROGLYPH-14044;Lo;0;L;;;;;N;;;;;
+14045;EGYPTIAN HIEROGLYPH-14045;Lo;0;L;;;;;N;;;;;
+14046;EGYPTIAN HIEROGLYPH-14046;Lo;0;L;;;;;N;;;;;
+14047;EGYPTIAN HIEROGLYPH-14047;Lo;0;L;;;;;N;;;;;
+14048;EGYPTIAN HIEROGLYPH-14048;Lo;0;L;;;;;N;;;;;
+14049;EGYPTIAN HIEROGLYPH-14049;Lo;0;L;;;;;N;;;;;
+1404A;EGYPTIAN HIEROGLYPH-1404A;Lo;0;L;;;;;N;;;;;
+1404B;EGYPTIAN HIEROGLYPH-1404B;Lo;0;L;;;;;N;;;;;
+1404C;EGYPTIAN HIEROGLYPH-1404C;Lo;0;L;;;;;N;;;;;
+1404D;EGYPTIAN HIEROGLYPH-1404D;Lo;0;L;;;;;N;;;;;
+1404E;EGYPTIAN HIEROGLYPH-1404E;Lo;0;L;;;;;N;;;;;
+1404F;EGYPTIAN HIEROGLYPH-1404F;Lo;0;L;;;;;N;;;;;
+14050;EGYPTIAN HIEROGLYPH-14050;Lo;0;L;;;;;N;;;;;
+14051;EGYPTIAN HIEROGLYPH-14051;Lo;0;L;;;;;N;;;;;
+14052;EGYPTIAN HIEROGLYPH-14052;Lo;0;L;;;;;N;;;;;
+14053;EGYPTIAN HIEROGLYPH-14053;Lo;0;L;;;;;N;;;;;
+14054;EGYPTIAN HIEROGLYPH-14054;Lo;0;L;;;;;N;;;;;
+14055;EGYPTIAN HIEROGLYPH-14055;Lo;0;L;;;;;N;;;;;
+14056;EGYPTIAN HIEROGLYPH-14056;Lo;0;L;;;;;N;;;;;
+14057;EGYPTIAN HIEROGLYPH-14057;Lo;0;L;;;;;N;;;;;
+14058;EGYPTIAN HIEROGLYPH-14058;Lo;0;L;;;;;N;;;;;
+14059;EGYPTIAN HIEROGLYPH-14059;Lo;0;L;;;;;N;;;;;
+1405A;EGYPTIAN HIEROGLYPH-1405A;Lo;0;L;;;;;N;;;;;
+1405B;EGYPTIAN HIEROGLYPH-1405B;Lo;0;L;;;;;N;;;;;
+1405C;EGYPTIAN HIEROGLYPH-1405C;Lo;0;L;;;;;N;;;;;
+1405D;EGYPTIAN HIEROGLYPH-1405D;Lo;0;L;;;;;N;;;;;
+1405E;EGYPTIAN HIEROGLYPH-1405E;Lo;0;L;;;;;N;;;;;
+1405F;EGYPTIAN HIEROGLYPH-1405F;Lo;0;L;;;;;N;;;;;
+14060;EGYPTIAN HIEROGLYPH-14060;Lo;0;L;;;;;N;;;;;
+14061;EGYPTIAN HIEROGLYPH-14061;Lo;0;L;;;;;N;;;;;
+14062;EGYPTIAN HIEROGLYPH-14062;Lo;0;L;;;;;N;;;;;
+14063;EGYPTIAN HIEROGLYPH-14063;Lo;0;L;;;;;N;;;;;
+14064;EGYPTIAN HIEROGLYPH-14064;Lo;0;L;;;;;N;;;;;
+14065;EGYPTIAN HIEROGLYPH-14065;Lo;0;L;;;;;N;;;;;
+14066;EGYPTIAN HIEROGLYPH-14066;Lo;0;L;;;;;N;;;;;
+14067;EGYPTIAN HIEROGLYPH-14067;Lo;0;L;;;;;N;;;;;
+14068;EGYPTIAN HIEROGLYPH-14068;Lo;0;L;;;;;N;;;;;
+14069;EGYPTIAN HIEROGLYPH-14069;Lo;0;L;;;;;N;;;;;
+1406A;EGYPTIAN HIEROGLYPH-1406A;Lo;0;L;;;;;N;;;;;
+1406B;EGYPTIAN HIEROGLYPH-1406B;Lo;0;L;;;;;N;;;;;
+1406C;EGYPTIAN HIEROGLYPH-1406C;Lo;0;L;;;;;N;;;;;
+1406D;EGYPTIAN HIEROGLYPH-1406D;Lo;0;L;;;;;N;;;;;
+1406E;EGYPTIAN HIEROGLYPH-1406E;Lo;0;L;;;;;N;;;;;
+1406F;EGYPTIAN HIEROGLYPH-1406F;Lo;0;L;;;;;N;;;;;
+14070;EGYPTIAN HIEROGLYPH-14070;Lo;0;L;;;;;N;;;;;
+14071;EGYPTIAN HIEROGLYPH-14071;Lo;0;L;;;;;N;;;;;
+14072;EGYPTIAN HIEROGLYPH-14072;Lo;0;L;;;;;N;;;;;
+14073;EGYPTIAN HIEROGLYPH-14073;Lo;0;L;;;;;N;;;;;
+14074;EGYPTIAN HIEROGLYPH-14074;Lo;0;L;;;;;N;;;;;
+14075;EGYPTIAN HIEROGLYPH-14075;Lo;0;L;;;;;N;;;;;
+14076;EGYPTIAN HIEROGLYPH-14076;Lo;0;L;;;;;N;;;;;
+14077;EGYPTIAN HIEROGLYPH-14077;Lo;0;L;;;;;N;;;;;
+14078;EGYPTIAN HIEROGLYPH-14078;Lo;0;L;;;;;N;;;;;
+14079;EGYPTIAN HIEROGLYPH-14079;Lo;0;L;;;;;N;;;;;
+1407A;EGYPTIAN HIEROGLYPH-1407A;Lo;0;L;;;;;N;;;;;
+1407B;EGYPTIAN HIEROGLYPH-1407B;Lo;0;L;;;;;N;;;;;
+1407C;EGYPTIAN HIEROGLYPH-1407C;Lo;0;L;;;;;N;;;;;
+1407D;EGYPTIAN HIEROGLYPH-1407D;Lo;0;L;;;;;N;;;;;
+1407E;EGYPTIAN HIEROGLYPH-1407E;Lo;0;L;;;;;N;;;;;
+1407F;EGYPTIAN HIEROGLYPH-1407F;Lo;0;L;;;;;N;;;;;
+14080;EGYPTIAN HIEROGLYPH-14080;Lo;0;L;;;;;N;;;;;
+14081;EGYPTIAN HIEROGLYPH-14081;Lo;0;L;;;;;N;;;;;
+14082;EGYPTIAN HIEROGLYPH-14082;Lo;0;L;;;;;N;;;;;
+14083;EGYPTIAN HIEROGLYPH-14083;Lo;0;L;;;;;N;;;;;
+14084;EGYPTIAN HIEROGLYPH-14084;Lo;0;L;;;;;N;;;;;
+14085;EGYPTIAN HIEROGLYPH-14085;Lo;0;L;;;;;N;;;;;
+14086;EGYPTIAN HIEROGLYPH-14086;Lo;0;L;;;;;N;;;;;
+14087;EGYPTIAN HIEROGLYPH-14087;Lo;0;L;;;;;N;;;;;
+14088;EGYPTIAN HIEROGLYPH-14088;Lo;0;L;;;;;N;;;;;
+14089;EGYPTIAN HIEROGLYPH-14089;Lo;0;L;;;;;N;;;;;
+1408A;EGYPTIAN HIEROGLYPH-1408A;Lo;0;L;;;;;N;;;;;
+1408B;EGYPTIAN HIEROGLYPH-1408B;Lo;0;L;;;;;N;;;;;
+1408C;EGYPTIAN HIEROGLYPH-1408C;Lo;0;L;;;;;N;;;;;
+1408D;EGYPTIAN HIEROGLYPH-1408D;Lo;0;L;;;;;N;;;;;
+1408E;EGYPTIAN HIEROGLYPH-1408E;Lo;0;L;;;;;N;;;;;
+1408F;EGYPTIAN HIEROGLYPH-1408F;Lo;0;L;;;;;N;;;;;
+14090;EGYPTIAN HIEROGLYPH-14090;Lo;0;L;;;;;N;;;;;
+14091;EGYPTIAN HIEROGLYPH-14091;Lo;0;L;;;;;N;;;;;
+14092;EGYPTIAN HIEROGLYPH-14092;Lo;0;L;;;;;N;;;;;
+14093;EGYPTIAN HIEROGLYPH-14093;Lo;0;L;;;;;N;;;;;
+14094;EGYPTIAN HIEROGLYPH-14094;Lo;0;L;;;;;N;;;;;
+14095;EGYPTIAN HIEROGLYPH-14095;Lo;0;L;;;;;N;;;;;
+14096;EGYPTIAN HIEROGLYPH-14096;Lo;0;L;;;;;N;;;;;
+14097;EGYPTIAN HIEROGLYPH-14097;Lo;0;L;;;;;N;;;;;
+14098;EGYPTIAN HIEROGLYPH-14098;Lo;0;L;;;;;N;;;;;
+14099;EGYPTIAN HIEROGLYPH-14099;Lo;0;L;;;;;N;;;;;
+1409A;EGYPTIAN HIEROGLYPH-1409A;Lo;0;L;;;;;N;;;;;
+1409B;EGYPTIAN HIEROGLYPH-1409B;Lo;0;L;;;;;N;;;;;
+1409C;EGYPTIAN HIEROGLYPH-1409C;Lo;0;L;;;;;N;;;;;
+1409D;EGYPTIAN HIEROGLYPH-1409D;Lo;0;L;;;;;N;;;;;
+1409E;EGYPTIAN HIEROGLYPH-1409E;Lo;0;L;;;;;N;;;;;
+1409F;EGYPTIAN HIEROGLYPH-1409F;Lo;0;L;;;;;N;;;;;
+140A0;EGYPTIAN HIEROGLYPH-140A0;Lo;0;L;;;;;N;;;;;
+140A1;EGYPTIAN HIEROGLYPH-140A1;Lo;0;L;;;;;N;;;;;
+140A2;EGYPTIAN HIEROGLYPH-140A2;Lo;0;L;;;;;N;;;;;
+140A3;EGYPTIAN HIEROGLYPH-140A3;Lo;0;L;;;;;N;;;;;
+140A4;EGYPTIAN HIEROGLYPH-140A4;Lo;0;L;;;;;N;;;;;
+140A5;EGYPTIAN HIEROGLYPH-140A5;Lo;0;L;;;;;N;;;;;
+140A6;EGYPTIAN HIEROGLYPH-140A6;Lo;0;L;;;;;N;;;;;
+140A7;EGYPTIAN HIEROGLYPH-140A7;Lo;0;L;;;;;N;;;;;
+140A8;EGYPTIAN HIEROGLYPH-140A8;Lo;0;L;;;;;N;;;;;
+140A9;EGYPTIAN HIEROGLYPH-140A9;Lo;0;L;;;;;N;;;;;
+140AA;EGYPTIAN HIEROGLYPH-140AA;Lo;0;L;;;;;N;;;;;
+140AB;EGYPTIAN HIEROGLYPH-140AB;Lo;0;L;;;;;N;;;;;
+140AC;EGYPTIAN HIEROGLYPH-140AC;Lo;0;L;;;;;N;;;;;
+140AD;EGYPTIAN HIEROGLYPH-140AD;Lo;0;L;;;;;N;;;;;
+140AE;EGYPTIAN HIEROGLYPH-140AE;Lo;0;L;;;;;N;;;;;
+140AF;EGYPTIAN HIEROGLYPH-140AF;Lo;0;L;;;;;N;;;;;
+140B0;EGYPTIAN HIEROGLYPH-140B0;Lo;0;L;;;;;N;;;;;
+140B1;EGYPTIAN HIEROGLYPH-140B1;Lo;0;L;;;;;N;;;;;
+140B2;EGYPTIAN HIEROGLYPH-140B2;Lo;0;L;;;;;N;;;;;
+140B3;EGYPTIAN HIEROGLYPH-140B3;Lo;0;L;;;;;N;;;;;
+140B4;EGYPTIAN HIEROGLYPH-140B4;Lo;0;L;;;;;N;;;;;
+140B5;EGYPTIAN HIEROGLYPH-140B5;Lo;0;L;;;;;N;;;;;
+140B6;EGYPTIAN HIEROGLYPH-140B6;Lo;0;L;;;;;N;;;;;
+140B7;EGYPTIAN HIEROGLYPH-140B7;Lo;0;L;;;;;N;;;;;
+140B8;EGYPTIAN HIEROGLYPH-140B8;Lo;0;L;;;;;N;;;;;
+140B9;EGYPTIAN HIEROGLYPH-140B9;Lo;0;L;;;;;N;;;;;
+140BA;EGYPTIAN HIEROGLYPH-140BA;Lo;0;L;;;;;N;;;;;
+140BB;EGYPTIAN HIEROGLYPH-140BB;Lo;0;L;;;;;N;;;;;
+140BC;EGYPTIAN HIEROGLYPH-140BC;Lo;0;L;;;;;N;;;;;
+140BD;EGYPTIAN HIEROGLYPH-140BD;Lo;0;L;;;;;N;;;;;
+140BE;EGYPTIAN HIEROGLYPH-140BE;Lo;0;L;;;;;N;;;;;
+140BF;EGYPTIAN HIEROGLYPH-140BF;Lo;0;L;;;;;N;;;;;
+140C0;EGYPTIAN HIEROGLYPH-140C0;Lo;0;L;;;;;N;;;;;
+140C1;EGYPTIAN HIEROGLYPH-140C1;Lo;0;L;;;;;N;;;;;
+140C2;EGYPTIAN HIEROGLYPH-140C2;Lo;0;L;;;;;N;;;;;
+140C3;EGYPTIAN HIEROGLYPH-140C3;Lo;0;L;;;;;N;;;;;
+140C4;EGYPTIAN HIEROGLYPH-140C4;Lo;0;L;;;;;N;;;;;
+140C5;EGYPTIAN HIEROGLYPH-140C5;Lo;0;L;;;;;N;;;;;
+140C6;EGYPTIAN HIEROGLYPH-140C6;Lo;0;L;;;;;N;;;;;
+140C7;EGYPTIAN HIEROGLYPH-140C7;Lo;0;L;;;;;N;;;;;
+140C8;EGYPTIAN HIEROGLYPH-140C8;Lo;0;L;;;;;N;;;;;
+140C9;EGYPTIAN HIEROGLYPH-140C9;Lo;0;L;;;;;N;;;;;
+140CA;EGYPTIAN HIEROGLYPH-140CA;Lo;0;L;;;;;N;;;;;
+140CB;EGYPTIAN HIEROGLYPH-140CB;Lo;0;L;;;;;N;;;;;
+140CC;EGYPTIAN HIEROGLYPH-140CC;Lo;0;L;;;;;N;;;;;
+140CD;EGYPTIAN HIEROGLYPH-140CD;Lo;0;L;;;;;N;;;;;
+140CE;EGYPTIAN HIEROGLYPH-140CE;Lo;0;L;;;;;N;;;;;
+140CF;EGYPTIAN HIEROGLYPH-140CF;Lo;0;L;;;;;N;;;;;
+140D0;EGYPTIAN HIEROGLYPH-140D0;Lo;0;L;;;;;N;;;;;
+140D1;EGYPTIAN HIEROGLYPH-140D1;Lo;0;L;;;;;N;;;;;
+140D2;EGYPTIAN HIEROGLYPH-140D2;Lo;0;L;;;;;N;;;;;
+140D3;EGYPTIAN HIEROGLYPH-140D3;Lo;0;L;;;;;N;;;;;
+140D4;EGYPTIAN HIEROGLYPH-140D4;Lo;0;L;;;;;N;;;;;
+140D5;EGYPTIAN HIEROGLYPH-140D5;Lo;0;L;;;;;N;;;;;
+140D6;EGYPTIAN HIEROGLYPH-140D6;Lo;0;L;;;;;N;;;;;
+140D7;EGYPTIAN HIEROGLYPH-140D7;Lo;0;L;;;;;N;;;;;
+140D8;EGYPTIAN HIEROGLYPH-140D8;Lo;0;L;;;;;N;;;;;
+140D9;EGYPTIAN HIEROGLYPH-140D9;Lo;0;L;;;;;N;;;;;
+140DA;EGYPTIAN HIEROGLYPH-140DA;Lo;0;L;;;;;N;;;;;
+140DB;EGYPTIAN HIEROGLYPH-140DB;Lo;0;L;;;;;N;;;;;
+140DC;EGYPTIAN HIEROGLYPH-140DC;Lo;0;L;;;;;N;;;;;
+140DD;EGYPTIAN HIEROGLYPH-140DD;Lo;0;L;;;;;N;;;;;
+140DE;EGYPTIAN HIEROGLYPH-140DE;Lo;0;L;;;;;N;;;;;
+140DF;EGYPTIAN HIEROGLYPH-140DF;Lo;0;L;;;;;N;;;;;
+140E0;EGYPTIAN HIEROGLYPH-140E0;Lo;0;L;;;;;N;;;;;
+140E1;EGYPTIAN HIEROGLYPH-140E1;Lo;0;L;;;;;N;;;;;
+140E2;EGYPTIAN HIEROGLYPH-140E2;Lo;0;L;;;;;N;;;;;
+140E3;EGYPTIAN HIEROGLYPH-140E3;Lo;0;L;;;;;N;;;;;
+140E4;EGYPTIAN HIEROGLYPH-140E4;Lo;0;L;;;;;N;;;;;
+140E5;EGYPTIAN HIEROGLYPH-140E5;Lo;0;L;;;;;N;;;;;
+140E6;EGYPTIAN HIEROGLYPH-140E6;Lo;0;L;;;;;N;;;;;
+140E7;EGYPTIAN HIEROGLYPH-140E7;Lo;0;L;;;;;N;;;;;
+140E8;EGYPTIAN HIEROGLYPH-140E8;Lo;0;L;;;;;N;;;;;
+140E9;EGYPTIAN HIEROGLYPH-140E9;Lo;0;L;;;;;N;;;;;
+140EA;EGYPTIAN HIEROGLYPH-140EA;Lo;0;L;;;;;N;;;;;
+140EB;EGYPTIAN HIEROGLYPH-140EB;Lo;0;L;;;;;N;;;;;
+140EC;EGYPTIAN HIEROGLYPH-140EC;Lo;0;L;;;;;N;;;;;
+140ED;EGYPTIAN HIEROGLYPH-140ED;Lo;0;L;;;;;N;;;;;
+140EE;EGYPTIAN HIEROGLYPH-140EE;Lo;0;L;;;;;N;;;;;
+140EF;EGYPTIAN HIEROGLYPH-140EF;Lo;0;L;;;;;N;;;;;
+140F0;EGYPTIAN HIEROGLYPH-140F0;Lo;0;L;;;;;N;;;;;
+140F1;EGYPTIAN HIEROGLYPH-140F1;Lo;0;L;;;;;N;;;;;
+140F2;EGYPTIAN HIEROGLYPH-140F2;Lo;0;L;;;;;N;;;;;
+140F3;EGYPTIAN HIEROGLYPH-140F3;Lo;0;L;;;;;N;;;;;
+140F4;EGYPTIAN HIEROGLYPH-140F4;Lo;0;L;;;;;N;;;;;
+140F5;EGYPTIAN HIEROGLYPH-140F5;Lo;0;L;;;;;N;;;;;
+140F6;EGYPTIAN HIEROGLYPH-140F6;Lo;0;L;;;;;N;;;;;
+140F7;EGYPTIAN HIEROGLYPH-140F7;Lo;0;L;;;;;N;;;;;
+140F8;EGYPTIAN HIEROGLYPH-140F8;Lo;0;L;;;;;N;;;;;
+140F9;EGYPTIAN HIEROGLYPH-140F9;Lo;0;L;;;;;N;;;;;
+140FA;EGYPTIAN HIEROGLYPH-140FA;Lo;0;L;;;;;N;;;;;
+140FB;EGYPTIAN HIEROGLYPH-140FB;Lo;0;L;;;;;N;;;;;
+140FC;EGYPTIAN HIEROGLYPH-140FC;Lo;0;L;;;;;N;;;;;
+140FD;EGYPTIAN HIEROGLYPH-140FD;Lo;0;L;;;;;N;;;;;
+140FE;EGYPTIAN HIEROGLYPH-140FE;Lo;0;L;;;;;N;;;;;
+140FF;EGYPTIAN HIEROGLYPH-140FF;Lo;0;L;;;;;N;;;;;
+14100;EGYPTIAN HIEROGLYPH-14100;Lo;0;L;;;;;N;;;;;
+14101;EGYPTIAN HIEROGLYPH-14101;Lo;0;L;;;;;N;;;;;
+14102;EGYPTIAN HIEROGLYPH-14102;Lo;0;L;;;;;N;;;;;
+14103;EGYPTIAN HIEROGLYPH-14103;Lo;0;L;;;;;N;;;;;
+14104;EGYPTIAN HIEROGLYPH-14104;Lo;0;L;;;;;N;;;;;
+14105;EGYPTIAN HIEROGLYPH-14105;Lo;0;L;;;;;N;;;;;
+14106;EGYPTIAN HIEROGLYPH-14106;Lo;0;L;;;;;N;;;;;
+14107;EGYPTIAN HIEROGLYPH-14107;Lo;0;L;;;;;N;;;;;
+14108;EGYPTIAN HIEROGLYPH-14108;Lo;0;L;;;;;N;;;;;
+14109;EGYPTIAN HIEROGLYPH-14109;Lo;0;L;;;;;N;;;;;
+1410A;EGYPTIAN HIEROGLYPH-1410A;Lo;0;L;;;;;N;;;;;
+1410B;EGYPTIAN HIEROGLYPH-1410B;Lo;0;L;;;;;N;;;;;
+1410C;EGYPTIAN HIEROGLYPH-1410C;Lo;0;L;;;;;N;;;;;
+1410D;EGYPTIAN HIEROGLYPH-1410D;Lo;0;L;;;;;N;;;;;
+1410E;EGYPTIAN HIEROGLYPH-1410E;Lo;0;L;;;;;N;;;;;
+1410F;EGYPTIAN HIEROGLYPH-1410F;Lo;0;L;;;;;N;;;;;
+14110;EGYPTIAN HIEROGLYPH-14110;Lo;0;L;;;;;N;;;;;
+14111;EGYPTIAN HIEROGLYPH-14111;Lo;0;L;;;;;N;;;;;
+14112;EGYPTIAN HIEROGLYPH-14112;Lo;0;L;;;;;N;;;;;
+14113;EGYPTIAN HIEROGLYPH-14113;Lo;0;L;;;;;N;;;;;
+14114;EGYPTIAN HIEROGLYPH-14114;Lo;0;L;;;;;N;;;;;
+14115;EGYPTIAN HIEROGLYPH-14115;Lo;0;L;;;;;N;;;;;
+14116;EGYPTIAN HIEROGLYPH-14116;Lo;0;L;;;;;N;;;;;
+14117;EGYPTIAN HIEROGLYPH-14117;Lo;0;L;;;;;N;;;;;
+14118;EGYPTIAN HIEROGLYPH-14118;Lo;0;L;;;;;N;;;;;
+14119;EGYPTIAN HIEROGLYPH-14119;Lo;0;L;;;;;N;;;;;
+1411A;EGYPTIAN HIEROGLYPH-1411A;Lo;0;L;;;;;N;;;;;
+1411B;EGYPTIAN HIEROGLYPH-1411B;Lo;0;L;;;;;N;;;;;
+1411C;EGYPTIAN HIEROGLYPH-1411C;Lo;0;L;;;;;N;;;;;
+1411D;EGYPTIAN HIEROGLYPH-1411D;Lo;0;L;;;;;N;;;;;
+1411E;EGYPTIAN HIEROGLYPH-1411E;Lo;0;L;;;;;N;;;;;
+1411F;EGYPTIAN HIEROGLYPH-1411F;Lo;0;L;;;;;N;;;;;
+14120;EGYPTIAN HIEROGLYPH-14120;Lo;0;L;;;;;N;;;;;
+14121;EGYPTIAN HIEROGLYPH-14121;Lo;0;L;;;;;N;;;;;
+14122;EGYPTIAN HIEROGLYPH-14122;Lo;0;L;;;;;N;;;;;
+14123;EGYPTIAN HIEROGLYPH-14123;Lo;0;L;;;;;N;;;;;
+14124;EGYPTIAN HIEROGLYPH-14124;Lo;0;L;;;;;N;;;;;
+14125;EGYPTIAN HIEROGLYPH-14125;Lo;0;L;;;;;N;;;;;
+14126;EGYPTIAN HIEROGLYPH-14126;Lo;0;L;;;;;N;;;;;
+14127;EGYPTIAN HIEROGLYPH-14127;Lo;0;L;;;;;N;;;;;
+14128;EGYPTIAN HIEROGLYPH-14128;Lo;0;L;;;;;N;;;;;
+14129;EGYPTIAN HIEROGLYPH-14129;Lo;0;L;;;;;N;;;;;
+1412A;EGYPTIAN HIEROGLYPH-1412A;Lo;0;L;;;;;N;;;;;
+1412B;EGYPTIAN HIEROGLYPH-1412B;Lo;0;L;;;;;N;;;;;
+1412C;EGYPTIAN HIEROGLYPH-1412C;Lo;0;L;;;;;N;;;;;
+1412D;EGYPTIAN HIEROGLYPH-1412D;Lo;0;L;;;;;N;;;;;
+1412E;EGYPTIAN HIEROGLYPH-1412E;Lo;0;L;;;;;N;;;;;
+1412F;EGYPTIAN HIEROGLYPH-1412F;Lo;0;L;;;;;N;;;;;
+14130;EGYPTIAN HIEROGLYPH-14130;Lo;0;L;;;;;N;;;;;
+14131;EGYPTIAN HIEROGLYPH-14131;Lo;0;L;;;;;N;;;;;
+14132;EGYPTIAN HIEROGLYPH-14132;Lo;0;L;;;;;N;;;;;
+14133;EGYPTIAN HIEROGLYPH-14133;Lo;0;L;;;;;N;;;;;
+14134;EGYPTIAN HIEROGLYPH-14134;Lo;0;L;;;;;N;;;;;
+14135;EGYPTIAN HIEROGLYPH-14135;Lo;0;L;;;;;N;;;;;
+14136;EGYPTIAN HIEROGLYPH-14136;Lo;0;L;;;;;N;;;;;
+14137;EGYPTIAN HIEROGLYPH-14137;Lo;0;L;;;;;N;;;;;
+14138;EGYPTIAN HIEROGLYPH-14138;Lo;0;L;;;;;N;;;;;
+14139;EGYPTIAN HIEROGLYPH-14139;Lo;0;L;;;;;N;;;;;
+1413A;EGYPTIAN HIEROGLYPH-1413A;Lo;0;L;;;;;N;;;;;
+1413B;EGYPTIAN HIEROGLYPH-1413B;Lo;0;L;;;;;N;;;;;
+1413C;EGYPTIAN HIEROGLYPH-1413C;Lo;0;L;;;;;N;;;;;
+1413D;EGYPTIAN HIEROGLYPH-1413D;Lo;0;L;;;;;N;;;;;
+1413E;EGYPTIAN HIEROGLYPH-1413E;Lo;0;L;;;;;N;;;;;
+1413F;EGYPTIAN HIEROGLYPH-1413F;Lo;0;L;;;;;N;;;;;
+14140;EGYPTIAN HIEROGLYPH-14140;Lo;0;L;;;;;N;;;;;
+14141;EGYPTIAN HIEROGLYPH-14141;Lo;0;L;;;;;N;;;;;
+14142;EGYPTIAN HIEROGLYPH-14142;Lo;0;L;;;;;N;;;;;
+14143;EGYPTIAN HIEROGLYPH-14143;Lo;0;L;;;;;N;;;;;
+14144;EGYPTIAN HIEROGLYPH-14144;Lo;0;L;;;;;N;;;;;
+14145;EGYPTIAN HIEROGLYPH-14145;Lo;0;L;;;;;N;;;;;
+14146;EGYPTIAN HIEROGLYPH-14146;Lo;0;L;;;;;N;;;;;
+14147;EGYPTIAN HIEROGLYPH-14147;Lo;0;L;;;;;N;;;;;
+14148;EGYPTIAN HIEROGLYPH-14148;Lo;0;L;;;;;N;;;;;
+14149;EGYPTIAN HIEROGLYPH-14149;Lo;0;L;;;;;N;;;;;
+1414A;EGYPTIAN HIEROGLYPH-1414A;Lo;0;L;;;;;N;;;;;
+1414B;EGYPTIAN HIEROGLYPH-1414B;Lo;0;L;;;;;N;;;;;
+1414C;EGYPTIAN HIEROGLYPH-1414C;Lo;0;L;;;;;N;;;;;
+1414D;EGYPTIAN HIEROGLYPH-1414D;Lo;0;L;;;;;N;;;;;
+1414E;EGYPTIAN HIEROGLYPH-1414E;Lo;0;L;;;;;N;;;;;
+1414F;EGYPTIAN HIEROGLYPH-1414F;Lo;0;L;;;;;N;;;;;
+14150;EGYPTIAN HIEROGLYPH-14150;Lo;0;L;;;;;N;;;;;
+14151;EGYPTIAN HIEROGLYPH-14151;Lo;0;L;;;;;N;;;;;
+14152;EGYPTIAN HIEROGLYPH-14152;Lo;0;L;;;;;N;;;;;
+14153;EGYPTIAN HIEROGLYPH-14153;Lo;0;L;;;;;N;;;;;
+14154;EGYPTIAN HIEROGLYPH-14154;Lo;0;L;;;;;N;;;;;
+14155;EGYPTIAN HIEROGLYPH-14155;Lo;0;L;;;;;N;;;;;
+14156;EGYPTIAN HIEROGLYPH-14156;Lo;0;L;;;;;N;;;;;
+14157;EGYPTIAN HIEROGLYPH-14157;Lo;0;L;;;;;N;;;;;
+14158;EGYPTIAN HIEROGLYPH-14158;Lo;0;L;;;;;N;;;;;
+14159;EGYPTIAN HIEROGLYPH-14159;Lo;0;L;;;;;N;;;;;
+1415A;EGYPTIAN HIEROGLYPH-1415A;Lo;0;L;;;;;N;;;;;
+1415B;EGYPTIAN HIEROGLYPH-1415B;Lo;0;L;;;;;N;;;;;
+1415C;EGYPTIAN HIEROGLYPH-1415C;Lo;0;L;;;;;N;;;;;
+1415D;EGYPTIAN HIEROGLYPH-1415D;Lo;0;L;;;;;N;;;;;
+1415E;EGYPTIAN HIEROGLYPH-1415E;Lo;0;L;;;;;N;;;;;
+1415F;EGYPTIAN HIEROGLYPH-1415F;Lo;0;L;;;;;N;;;;;
+14160;EGYPTIAN HIEROGLYPH-14160;Lo;0;L;;;;;N;;;;;
+14161;EGYPTIAN HIEROGLYPH-14161;Lo;0;L;;;;;N;;;;;
+14162;EGYPTIAN HIEROGLYPH-14162;Lo;0;L;;;;;N;;;;;
+14163;EGYPTIAN HIEROGLYPH-14163;Lo;0;L;;;;;N;;;;;
+14164;EGYPTIAN HIEROGLYPH-14164;Lo;0;L;;;;;N;;;;;
+14165;EGYPTIAN HIEROGLYPH-14165;Lo;0;L;;;;;N;;;;;
+14166;EGYPTIAN HIEROGLYPH-14166;Lo;0;L;;;;;N;;;;;
+14167;EGYPTIAN HIEROGLYPH-14167;Lo;0;L;;;;;N;;;;;
+14168;EGYPTIAN HIEROGLYPH-14168;Lo;0;L;;;;;N;;;;;
+14169;EGYPTIAN HIEROGLYPH-14169;Lo;0;L;;;;;N;;;;;
+1416A;EGYPTIAN HIEROGLYPH-1416A;Lo;0;L;;;;;N;;;;;
+1416B;EGYPTIAN HIEROGLYPH-1416B;Lo;0;L;;;;;N;;;;;
+1416C;EGYPTIAN HIEROGLYPH-1416C;Lo;0;L;;;;;N;;;;;
+1416D;EGYPTIAN HIEROGLYPH-1416D;Lo;0;L;;;;;N;;;;;
+1416E;EGYPTIAN HIEROGLYPH-1416E;Lo;0;L;;;;;N;;;;;
+1416F;EGYPTIAN HIEROGLYPH-1416F;Lo;0;L;;;;;N;;;;;
+14170;EGYPTIAN HIEROGLYPH-14170;Lo;0;L;;;;;N;;;;;
+14171;EGYPTIAN HIEROGLYPH-14171;Lo;0;L;;;;;N;;;;;
+14172;EGYPTIAN HIEROGLYPH-14172;Lo;0;L;;;;;N;;;;;
+14173;EGYPTIAN HIEROGLYPH-14173;Lo;0;L;;;;;N;;;;;
+14174;EGYPTIAN HIEROGLYPH-14174;Lo;0;L;;;;;N;;;;;
+14175;EGYPTIAN HIEROGLYPH-14175;Lo;0;L;;;;;N;;;;;
+14176;EGYPTIAN HIEROGLYPH-14176;Lo;0;L;;;;;N;;;;;
+14177;EGYPTIAN HIEROGLYPH-14177;Lo;0;L;;;;;N;;;;;
+14178;EGYPTIAN HIEROGLYPH-14178;Lo;0;L;;;;;N;;;;;
+14179;EGYPTIAN HIEROGLYPH-14179;Lo;0;L;;;;;N;;;;;
+1417A;EGYPTIAN HIEROGLYPH-1417A;Lo;0;L;;;;;N;;;;;
+1417B;EGYPTIAN HIEROGLYPH-1417B;Lo;0;L;;;;;N;;;;;
+1417C;EGYPTIAN HIEROGLYPH-1417C;Lo;0;L;;;;;N;;;;;
+1417D;EGYPTIAN HIEROGLYPH-1417D;Lo;0;L;;;;;N;;;;;
+1417E;EGYPTIAN HIEROGLYPH-1417E;Lo;0;L;;;;;N;;;;;
+1417F;EGYPTIAN HIEROGLYPH-1417F;Lo;0;L;;;;;N;;;;;
+14180;EGYPTIAN HIEROGLYPH-14180;Lo;0;L;;;;;N;;;;;
+14181;EGYPTIAN HIEROGLYPH-14181;Lo;0;L;;;;;N;;;;;
+14182;EGYPTIAN HIEROGLYPH-14182;Lo;0;L;;;;;N;;;;;
+14183;EGYPTIAN HIEROGLYPH-14183;Lo;0;L;;;;;N;;;;;
+14184;EGYPTIAN HIEROGLYPH-14184;Lo;0;L;;;;;N;;;;;
+14185;EGYPTIAN HIEROGLYPH-14185;Lo;0;L;;;;;N;;;;;
+14186;EGYPTIAN HIEROGLYPH-14186;Lo;0;L;;;;;N;;;;;
+14187;EGYPTIAN HIEROGLYPH-14187;Lo;0;L;;;;;N;;;;;
+14188;EGYPTIAN HIEROGLYPH-14188;Lo;0;L;;;;;N;;;;;
+14189;EGYPTIAN HIEROGLYPH-14189;Lo;0;L;;;;;N;;;;;
+1418A;EGYPTIAN HIEROGLYPH-1418A;Lo;0;L;;;;;N;;;;;
+1418B;EGYPTIAN HIEROGLYPH-1418B;Lo;0;L;;;;;N;;;;;
+1418C;EGYPTIAN HIEROGLYPH-1418C;Lo;0;L;;;;;N;;;;;
+1418D;EGYPTIAN HIEROGLYPH-1418D;Lo;0;L;;;;;N;;;;;
+1418E;EGYPTIAN HIEROGLYPH-1418E;Lo;0;L;;;;;N;;;;;
+1418F;EGYPTIAN HIEROGLYPH-1418F;Lo;0;L;;;;;N;;;;;
+14190;EGYPTIAN HIEROGLYPH-14190;Lo;0;L;;;;;N;;;;;
+14191;EGYPTIAN HIEROGLYPH-14191;Lo;0;L;;;;;N;;;;;
+14192;EGYPTIAN HIEROGLYPH-14192;Lo;0;L;;;;;N;;;;;
+14193;EGYPTIAN HIEROGLYPH-14193;Lo;0;L;;;;;N;;;;;
+14194;EGYPTIAN HIEROGLYPH-14194;Lo;0;L;;;;;N;;;;;
+14195;EGYPTIAN HIEROGLYPH-14195;Lo;0;L;;;;;N;;;;;
+14196;EGYPTIAN HIEROGLYPH-14196;Lo;0;L;;;;;N;;;;;
+14197;EGYPTIAN HIEROGLYPH-14197;Lo;0;L;;;;;N;;;;;
+14198;EGYPTIAN HIEROGLYPH-14198;Lo;0;L;;;;;N;;;;;
+14199;EGYPTIAN HIEROGLYPH-14199;Lo;0;L;;;;;N;;;;;
+1419A;EGYPTIAN HIEROGLYPH-1419A;Lo;0;L;;;;;N;;;;;
+1419B;EGYPTIAN HIEROGLYPH-1419B;Lo;0;L;;;;;N;;;;;
+1419C;EGYPTIAN HIEROGLYPH-1419C;Lo;0;L;;;;;N;;;;;
+1419D;EGYPTIAN HIEROGLYPH-1419D;Lo;0;L;;;;;N;;;;;
+1419E;EGYPTIAN HIEROGLYPH-1419E;Lo;0;L;;;;;N;;;;;
+1419F;EGYPTIAN HIEROGLYPH-1419F;Lo;0;L;;;;;N;;;;;
+141A0;EGYPTIAN HIEROGLYPH-141A0;Lo;0;L;;;;;N;;;;;
+141A1;EGYPTIAN HIEROGLYPH-141A1;Lo;0;L;;;;;N;;;;;
+141A2;EGYPTIAN HIEROGLYPH-141A2;Lo;0;L;;;;;N;;;;;
+141A3;EGYPTIAN HIEROGLYPH-141A3;Lo;0;L;;;;;N;;;;;
+141A4;EGYPTIAN HIEROGLYPH-141A4;Lo;0;L;;;;;N;;;;;
+141A5;EGYPTIAN HIEROGLYPH-141A5;Lo;0;L;;;;;N;;;;;
+141A6;EGYPTIAN HIEROGLYPH-141A6;Lo;0;L;;;;;N;;;;;
+141A7;EGYPTIAN HIEROGLYPH-141A7;Lo;0;L;;;;;N;;;;;
+141A8;EGYPTIAN HIEROGLYPH-141A8;Lo;0;L;;;;;N;;;;;
+141A9;EGYPTIAN HIEROGLYPH-141A9;Lo;0;L;;;;;N;;;;;
+141AA;EGYPTIAN HIEROGLYPH-141AA;Lo;0;L;;;;;N;;;;;
+141AB;EGYPTIAN HIEROGLYPH-141AB;Lo;0;L;;;;;N;;;;;
+141AC;EGYPTIAN HIEROGLYPH-141AC;Lo;0;L;;;;;N;;;;;
+141AD;EGYPTIAN HIEROGLYPH-141AD;Lo;0;L;;;;;N;;;;;
+141AE;EGYPTIAN HIEROGLYPH-141AE;Lo;0;L;;;;;N;;;;;
+141AF;EGYPTIAN HIEROGLYPH-141AF;Lo;0;L;;;;;N;;;;;
+141B0;EGYPTIAN HIEROGLYPH-141B0;Lo;0;L;;;;;N;;;;;
+141B1;EGYPTIAN HIEROGLYPH-141B1;Lo;0;L;;;;;N;;;;;
+141B2;EGYPTIAN HIEROGLYPH-141B2;Lo;0;L;;;;;N;;;;;
+141B3;EGYPTIAN HIEROGLYPH-141B3;Lo;0;L;;;;;N;;;;;
+141B4;EGYPTIAN HIEROGLYPH-141B4;Lo;0;L;;;;;N;;;;;
+141B5;EGYPTIAN HIEROGLYPH-141B5;Lo;0;L;;;;;N;;;;;
+141B6;EGYPTIAN HIEROGLYPH-141B6;Lo;0;L;;;;;N;;;;;
+141B7;EGYPTIAN HIEROGLYPH-141B7;Lo;0;L;;;;;N;;;;;
+141B8;EGYPTIAN HIEROGLYPH-141B8;Lo;0;L;;;;;N;;;;;
+141B9;EGYPTIAN HIEROGLYPH-141B9;Lo;0;L;;;;;N;;;;;
+141BA;EGYPTIAN HIEROGLYPH-141BA;Lo;0;L;;;;;N;;;;;
+141BB;EGYPTIAN HIEROGLYPH-141BB;Lo;0;L;;;;;N;;;;;
+141BC;EGYPTIAN HIEROGLYPH-141BC;Lo;0;L;;;;;N;;;;;
+141BD;EGYPTIAN HIEROGLYPH-141BD;Lo;0;L;;;;;N;;;;;
+141BE;EGYPTIAN HIEROGLYPH-141BE;Lo;0;L;;;;;N;;;;;
+141BF;EGYPTIAN HIEROGLYPH-141BF;Lo;0;L;;;;;N;;;;;
+141C0;EGYPTIAN HIEROGLYPH-141C0;Lo;0;L;;;;;N;;;;;
+141C1;EGYPTIAN HIEROGLYPH-141C1;Lo;0;L;;;;;N;;;;;
+141C2;EGYPTIAN HIEROGLYPH-141C2;Lo;0;L;;;;;N;;;;;
+141C3;EGYPTIAN HIEROGLYPH-141C3;Lo;0;L;;;;;N;;;;;
+141C4;EGYPTIAN HIEROGLYPH-141C4;Lo;0;L;;;;;N;;;;;
+141C5;EGYPTIAN HIEROGLYPH-141C5;Lo;0;L;;;;;N;;;;;
+141C6;EGYPTIAN HIEROGLYPH-141C6;Lo;0;L;;;;;N;;;;;
+141C7;EGYPTIAN HIEROGLYPH-141C7;Lo;0;L;;;;;N;;;;;
+141C8;EGYPTIAN HIEROGLYPH-141C8;Lo;0;L;;;;;N;;;;;
+141C9;EGYPTIAN HIEROGLYPH-141C9;Lo;0;L;;;;;N;;;;;
+141CA;EGYPTIAN HIEROGLYPH-141CA;Lo;0;L;;;;;N;;;;;
+141CB;EGYPTIAN HIEROGLYPH-141CB;Lo;0;L;;;;;N;;;;;
+141CC;EGYPTIAN HIEROGLYPH-141CC;Lo;0;L;;;;;N;;;;;
+141CD;EGYPTIAN HIEROGLYPH-141CD;Lo;0;L;;;;;N;;;;;
+141CE;EGYPTIAN HIEROGLYPH-141CE;Lo;0;L;;;;;N;;;;;
+141CF;EGYPTIAN HIEROGLYPH-141CF;Lo;0;L;;;;;N;;;;;
+141D0;EGYPTIAN HIEROGLYPH-141D0;Lo;0;L;;;;;N;;;;;
+141D1;EGYPTIAN HIEROGLYPH-141D1;Lo;0;L;;;;;N;;;;;
+141D2;EGYPTIAN HIEROGLYPH-141D2;Lo;0;L;;;;;N;;;;;
+141D3;EGYPTIAN HIEROGLYPH-141D3;Lo;0;L;;;;;N;;;;;
+141D4;EGYPTIAN HIEROGLYPH-141D4;Lo;0;L;;;;;N;;;;;
+141D5;EGYPTIAN HIEROGLYPH-141D5;Lo;0;L;;;;;N;;;;;
+141D6;EGYPTIAN HIEROGLYPH-141D6;Lo;0;L;;;;;N;;;;;
+141D7;EGYPTIAN HIEROGLYPH-141D7;Lo;0;L;;;;;N;;;;;
+141D8;EGYPTIAN HIEROGLYPH-141D8;Lo;0;L;;;;;N;;;;;
+141D9;EGYPTIAN HIEROGLYPH-141D9;Lo;0;L;;;;;N;;;;;
+141DA;EGYPTIAN HIEROGLYPH-141DA;Lo;0;L;;;;;N;;;;;
+141DB;EGYPTIAN HIEROGLYPH-141DB;Lo;0;L;;;;;N;;;;;
+141DC;EGYPTIAN HIEROGLYPH-141DC;Lo;0;L;;;;;N;;;;;
+141DD;EGYPTIAN HIEROGLYPH-141DD;Lo;0;L;;;;;N;;;;;
+141DE;EGYPTIAN HIEROGLYPH-141DE;Lo;0;L;;;;;N;;;;;
+141DF;EGYPTIAN HIEROGLYPH-141DF;Lo;0;L;;;;;N;;;;;
+141E0;EGYPTIAN HIEROGLYPH-141E0;Lo;0;L;;;;;N;;;;;
+141E1;EGYPTIAN HIEROGLYPH-141E1;Lo;0;L;;;;;N;;;;;
+141E2;EGYPTIAN HIEROGLYPH-141E2;Lo;0;L;;;;;N;;;;;
+141E3;EGYPTIAN HIEROGLYPH-141E3;Lo;0;L;;;;;N;;;;;
+141E4;EGYPTIAN HIEROGLYPH-141E4;Lo;0;L;;;;;N;;;;;
+141E5;EGYPTIAN HIEROGLYPH-141E5;Lo;0;L;;;;;N;;;;;
+141E6;EGYPTIAN HIEROGLYPH-141E6;Lo;0;L;;;;;N;;;;;
+141E7;EGYPTIAN HIEROGLYPH-141E7;Lo;0;L;;;;;N;;;;;
+141E8;EGYPTIAN HIEROGLYPH-141E8;Lo;0;L;;;;;N;;;;;
+141E9;EGYPTIAN HIEROGLYPH-141E9;Lo;0;L;;;;;N;;;;;
+141EA;EGYPTIAN HIEROGLYPH-141EA;Lo;0;L;;;;;N;;;;;
+141EB;EGYPTIAN HIEROGLYPH-141EB;Lo;0;L;;;;;N;;;;;
+141EC;EGYPTIAN HIEROGLYPH-141EC;Lo;0;L;;;;;N;;;;;
+141ED;EGYPTIAN HIEROGLYPH-141ED;Lo;0;L;;;;;N;;;;;
+141EE;EGYPTIAN HIEROGLYPH-141EE;Lo;0;L;;;;;N;;;;;
+141EF;EGYPTIAN HIEROGLYPH-141EF;Lo;0;L;;;;;N;;;;;
+141F0;EGYPTIAN HIEROGLYPH-141F0;Lo;0;L;;;;;N;;;;;
+141F1;EGYPTIAN HIEROGLYPH-141F1;Lo;0;L;;;;;N;;;;;
+141F2;EGYPTIAN HIEROGLYPH-141F2;Lo;0;L;;;;;N;;;;;
+141F3;EGYPTIAN HIEROGLYPH-141F3;Lo;0;L;;;;;N;;;;;
+141F4;EGYPTIAN HIEROGLYPH-141F4;Lo;0;L;;;;;N;;;;;
+141F5;EGYPTIAN HIEROGLYPH-141F5;Lo;0;L;;;;;N;;;;;
+141F6;EGYPTIAN HIEROGLYPH-141F6;Lo;0;L;;;;;N;;;;;
+141F7;EGYPTIAN HIEROGLYPH-141F7;Lo;0;L;;;;;N;;;;;
+141F8;EGYPTIAN HIEROGLYPH-141F8;Lo;0;L;;;;;N;;;;;
+141F9;EGYPTIAN HIEROGLYPH-141F9;Lo;0;L;;;;;N;;;;;
+141FA;EGYPTIAN HIEROGLYPH-141FA;Lo;0;L;;;;;N;;;;;
+141FB;EGYPTIAN HIEROGLYPH-141FB;Lo;0;L;;;;;N;;;;;
+141FC;EGYPTIAN HIEROGLYPH-141FC;Lo;0;L;;;;;N;;;;;
+141FD;EGYPTIAN HIEROGLYPH-141FD;Lo;0;L;;;;;N;;;;;
+141FE;EGYPTIAN HIEROGLYPH-141FE;Lo;0;L;;;;;N;;;;;
+141FF;EGYPTIAN HIEROGLYPH-141FF;Lo;0;L;;;;;N;;;;;
+14200;EGYPTIAN HIEROGLYPH-14200;Lo;0;L;;;;;N;;;;;
+14201;EGYPTIAN HIEROGLYPH-14201;Lo;0;L;;;;;N;;;;;
+14202;EGYPTIAN HIEROGLYPH-14202;Lo;0;L;;;;;N;;;;;
+14203;EGYPTIAN HIEROGLYPH-14203;Lo;0;L;;;;;N;;;;;
+14204;EGYPTIAN HIEROGLYPH-14204;Lo;0;L;;;;;N;;;;;
+14205;EGYPTIAN HIEROGLYPH-14205;Lo;0;L;;;;;N;;;;;
+14206;EGYPTIAN HIEROGLYPH-14206;Lo;0;L;;;;;N;;;;;
+14207;EGYPTIAN HIEROGLYPH-14207;Lo;0;L;;;;;N;;;;;
+14208;EGYPTIAN HIEROGLYPH-14208;Lo;0;L;;;;;N;;;;;
+14209;EGYPTIAN HIEROGLYPH-14209;Lo;0;L;;;;;N;;;;;
+1420A;EGYPTIAN HIEROGLYPH-1420A;Lo;0;L;;;;;N;;;;;
+1420B;EGYPTIAN HIEROGLYPH-1420B;Lo;0;L;;;;;N;;;;;
+1420C;EGYPTIAN HIEROGLYPH-1420C;Lo;0;L;;;;;N;;;;;
+1420D;EGYPTIAN HIEROGLYPH-1420D;Lo;0;L;;;;;N;;;;;
+1420E;EGYPTIAN HIEROGLYPH-1420E;Lo;0;L;;;;;N;;;;;
+1420F;EGYPTIAN HIEROGLYPH-1420F;Lo;0;L;;;;;N;;;;;
+14210;EGYPTIAN HIEROGLYPH-14210;Lo;0;L;;;;;N;;;;;
+14211;EGYPTIAN HIEROGLYPH-14211;Lo;0;L;;;;;N;;;;;
+14212;EGYPTIAN HIEROGLYPH-14212;Lo;0;L;;;;;N;;;;;
+14213;EGYPTIAN HIEROGLYPH-14213;Lo;0;L;;;;;N;;;;;
+14214;EGYPTIAN HIEROGLYPH-14214;Lo;0;L;;;;;N;;;;;
+14215;EGYPTIAN HIEROGLYPH-14215;Lo;0;L;;;;;N;;;;;
+14216;EGYPTIAN HIEROGLYPH-14216;Lo;0;L;;;;;N;;;;;
+14217;EGYPTIAN HIEROGLYPH-14217;Lo;0;L;;;;;N;;;;;
+14218;EGYPTIAN HIEROGLYPH-14218;Lo;0;L;;;;;N;;;;;
+14219;EGYPTIAN HIEROGLYPH-14219;Lo;0;L;;;;;N;;;;;
+1421A;EGYPTIAN HIEROGLYPH-1421A;Lo;0;L;;;;;N;;;;;
+1421B;EGYPTIAN HIEROGLYPH-1421B;Lo;0;L;;;;;N;;;;;
+1421C;EGYPTIAN HIEROGLYPH-1421C;Lo;0;L;;;;;N;;;;;
+1421D;EGYPTIAN HIEROGLYPH-1421D;Lo;0;L;;;;;N;;;;;
+1421E;EGYPTIAN HIEROGLYPH-1421E;Lo;0;L;;;;;N;;;;;
+1421F;EGYPTIAN HIEROGLYPH-1421F;Lo;0;L;;;;;N;;;;;
+14220;EGYPTIAN HIEROGLYPH-14220;Lo;0;L;;;;;N;;;;;
+14221;EGYPTIAN HIEROGLYPH-14221;Lo;0;L;;;;;N;;;;;
+14222;EGYPTIAN HIEROGLYPH-14222;Lo;0;L;;;;;N;;;;;
+14223;EGYPTIAN HIEROGLYPH-14223;Lo;0;L;;;;;N;;;;;
+14224;EGYPTIAN HIEROGLYPH-14224;Lo;0;L;;;;;N;;;;;
+14225;EGYPTIAN HIEROGLYPH-14225;Lo;0;L;;;;;N;;;;;
+14226;EGYPTIAN HIEROGLYPH-14226;Lo;0;L;;;;;N;;;;;
+14227;EGYPTIAN HIEROGLYPH-14227;Lo;0;L;;;;;N;;;;;
+14228;EGYPTIAN HIEROGLYPH-14228;Lo;0;L;;;;;N;;;;;
+14229;EGYPTIAN HIEROGLYPH-14229;Lo;0;L;;;;;N;;;;;
+1422A;EGYPTIAN HIEROGLYPH-1422A;Lo;0;L;;;;;N;;;;;
+1422B;EGYPTIAN HIEROGLYPH-1422B;Lo;0;L;;;;;N;;;;;
+1422C;EGYPTIAN HIEROGLYPH-1422C;Lo;0;L;;;;;N;;;;;
+1422D;EGYPTIAN HIEROGLYPH-1422D;Lo;0;L;;;;;N;;;;;
+1422E;EGYPTIAN HIEROGLYPH-1422E;Lo;0;L;;;;;N;;;;;
+1422F;EGYPTIAN HIEROGLYPH-1422F;Lo;0;L;;;;;N;;;;;
+14230;EGYPTIAN HIEROGLYPH-14230;Lo;0;L;;;;;N;;;;;
+14231;EGYPTIAN HIEROGLYPH-14231;Lo;0;L;;;;;N;;;;;
+14232;EGYPTIAN HIEROGLYPH-14232;Lo;0;L;;;;;N;;;;;
+14233;EGYPTIAN HIEROGLYPH-14233;Lo;0;L;;;;;N;;;;;
+14234;EGYPTIAN HIEROGLYPH-14234;Lo;0;L;;;;;N;;;;;
+14235;EGYPTIAN HIEROGLYPH-14235;Lo;0;L;;;;;N;;;;;
+14236;EGYPTIAN HIEROGLYPH-14236;Lo;0;L;;;;;N;;;;;
+14237;EGYPTIAN HIEROGLYPH-14237;Lo;0;L;;;;;N;;;;;
+14238;EGYPTIAN HIEROGLYPH-14238;Lo;0;L;;;;;N;;;;;
+14239;EGYPTIAN HIEROGLYPH-14239;Lo;0;L;;;;;N;;;;;
+1423A;EGYPTIAN HIEROGLYPH-1423A;Lo;0;L;;;;;N;;;;;
+1423B;EGYPTIAN HIEROGLYPH-1423B;Lo;0;L;;;;;N;;;;;
+1423C;EGYPTIAN HIEROGLYPH-1423C;Lo;0;L;;;;;N;;;;;
+1423D;EGYPTIAN HIEROGLYPH-1423D;Lo;0;L;;;;;N;;;;;
+1423E;EGYPTIAN HIEROGLYPH-1423E;Lo;0;L;;;;;N;;;;;
+1423F;EGYPTIAN HIEROGLYPH-1423F;Lo;0;L;;;;;N;;;;;
+14240;EGYPTIAN HIEROGLYPH-14240;Lo;0;L;;;;;N;;;;;
+14241;EGYPTIAN HIEROGLYPH-14241;Lo;0;L;;;;;N;;;;;
+14242;EGYPTIAN HIEROGLYPH-14242;Lo;0;L;;;;;N;;;;;
+14243;EGYPTIAN HIEROGLYPH-14243;Lo;0;L;;;;;N;;;;;
+14244;EGYPTIAN HIEROGLYPH-14244;Lo;0;L;;;;;N;;;;;
+14245;EGYPTIAN HIEROGLYPH-14245;Lo;0;L;;;;;N;;;;;
+14246;EGYPTIAN HIEROGLYPH-14246;Lo;0;L;;;;;N;;;;;
+14247;EGYPTIAN HIEROGLYPH-14247;Lo;0;L;;;;;N;;;;;
+14248;EGYPTIAN HIEROGLYPH-14248;Lo;0;L;;;;;N;;;;;
+14249;EGYPTIAN HIEROGLYPH-14249;Lo;0;L;;;;;N;;;;;
+1424A;EGYPTIAN HIEROGLYPH-1424A;Lo;0;L;;;;;N;;;;;
+1424B;EGYPTIAN HIEROGLYPH-1424B;Lo;0;L;;;;;N;;;;;
+1424C;EGYPTIAN HIEROGLYPH-1424C;Lo;0;L;;;;;N;;;;;
+1424D;EGYPTIAN HIEROGLYPH-1424D;Lo;0;L;;;;;N;;;;;
+1424E;EGYPTIAN HIEROGLYPH-1424E;Lo;0;L;;;;;N;;;;;
+1424F;EGYPTIAN HIEROGLYPH-1424F;Lo;0;L;;;;;N;;;;;
+14250;EGYPTIAN HIEROGLYPH-14250;Lo;0;L;;;;;N;;;;;
+14251;EGYPTIAN HIEROGLYPH-14251;Lo;0;L;;;;;N;;;;;
+14252;EGYPTIAN HIEROGLYPH-14252;Lo;0;L;;;;;N;;;;;
+14253;EGYPTIAN HIEROGLYPH-14253;Lo;0;L;;;;;N;;;;;
+14254;EGYPTIAN HIEROGLYPH-14254;Lo;0;L;;;;;N;;;;;
+14255;EGYPTIAN HIEROGLYPH-14255;Lo;0;L;;;;;N;;;;;
+14256;EGYPTIAN HIEROGLYPH-14256;Lo;0;L;;;;;N;;;;;
+14257;EGYPTIAN HIEROGLYPH-14257;Lo;0;L;;;;;N;;;;;
+14258;EGYPTIAN HIEROGLYPH-14258;Lo;0;L;;;;;N;;;;;
+14259;EGYPTIAN HIEROGLYPH-14259;Lo;0;L;;;;;N;;;;;
+1425A;EGYPTIAN HIEROGLYPH-1425A;Lo;0;L;;;;;N;;;;;
+1425B;EGYPTIAN HIEROGLYPH-1425B;Lo;0;L;;;;;N;;;;;
+1425C;EGYPTIAN HIEROGLYPH-1425C;Lo;0;L;;;;;N;;;;;
+1425D;EGYPTIAN HIEROGLYPH-1425D;Lo;0;L;;;;;N;;;;;
+1425E;EGYPTIAN HIEROGLYPH-1425E;Lo;0;L;;;;;N;;;;;
+1425F;EGYPTIAN HIEROGLYPH-1425F;Lo;0;L;;;;;N;;;;;
+14260;EGYPTIAN HIEROGLYPH-14260;Lo;0;L;;;;;N;;;;;
+14261;EGYPTIAN HIEROGLYPH-14261;Lo;0;L;;;;;N;;;;;
+14262;EGYPTIAN HIEROGLYPH-14262;Lo;0;L;;;;;N;;;;;
+14263;EGYPTIAN HIEROGLYPH-14263;Lo;0;L;;;;;N;;;;;
+14264;EGYPTIAN HIEROGLYPH-14264;Lo;0;L;;;;;N;;;;;
+14265;EGYPTIAN HIEROGLYPH-14265;Lo;0;L;;;;;N;;;;;
+14266;EGYPTIAN HIEROGLYPH-14266;Lo;0;L;;;;;N;;;;;
+14267;EGYPTIAN HIEROGLYPH-14267;Lo;0;L;;;;;N;;;;;
+14268;EGYPTIAN HIEROGLYPH-14268;Lo;0;L;;;;;N;;;;;
+14269;EGYPTIAN HIEROGLYPH-14269;Lo;0;L;;;;;N;;;;;
+1426A;EGYPTIAN HIEROGLYPH-1426A;Lo;0;L;;;;;N;;;;;
+1426B;EGYPTIAN HIEROGLYPH-1426B;Lo;0;L;;;;;N;;;;;
+1426C;EGYPTIAN HIEROGLYPH-1426C;Lo;0;L;;;;;N;;;;;
+1426D;EGYPTIAN HIEROGLYPH-1426D;Lo;0;L;;;;;N;;;;;
+1426E;EGYPTIAN HIEROGLYPH-1426E;Lo;0;L;;;;;N;;;;;
+1426F;EGYPTIAN HIEROGLYPH-1426F;Lo;0;L;;;;;N;;;;;
+14270;EGYPTIAN HIEROGLYPH-14270;Lo;0;L;;;;;N;;;;;
+14271;EGYPTIAN HIEROGLYPH-14271;Lo;0;L;;;;;N;;;;;
+14272;EGYPTIAN HIEROGLYPH-14272;Lo;0;L;;;;;N;;;;;
+14273;EGYPTIAN HIEROGLYPH-14273;Lo;0;L;;;;;N;;;;;
+14274;EGYPTIAN HIEROGLYPH-14274;Lo;0;L;;;;;N;;;;;
+14275;EGYPTIAN HIEROGLYPH-14275;Lo;0;L;;;;;N;;;;;
+14276;EGYPTIAN HIEROGLYPH-14276;Lo;0;L;;;;;N;;;;;
+14277;EGYPTIAN HIEROGLYPH-14277;Lo;0;L;;;;;N;;;;;
+14278;EGYPTIAN HIEROGLYPH-14278;Lo;0;L;;;;;N;;;;;
+14279;EGYPTIAN HIEROGLYPH-14279;Lo;0;L;;;;;N;;;;;
+1427A;EGYPTIAN HIEROGLYPH-1427A;Lo;0;L;;;;;N;;;;;
+1427B;EGYPTIAN HIEROGLYPH-1427B;Lo;0;L;;;;;N;;;;;
+1427C;EGYPTIAN HIEROGLYPH-1427C;Lo;0;L;;;;;N;;;;;
+1427D;EGYPTIAN HIEROGLYPH-1427D;Lo;0;L;;;;;N;;;;;
+1427E;EGYPTIAN HIEROGLYPH-1427E;Lo;0;L;;;;;N;;;;;
+1427F;EGYPTIAN HIEROGLYPH-1427F;Lo;0;L;;;;;N;;;;;
+14280;EGYPTIAN HIEROGLYPH-14280;Lo;0;L;;;;;N;;;;;
+14281;EGYPTIAN HIEROGLYPH-14281;Lo;0;L;;;;;N;;;;;
+14282;EGYPTIAN HIEROGLYPH-14282;Lo;0;L;;;;;N;;;;;
+14283;EGYPTIAN HIEROGLYPH-14283;Lo;0;L;;;;;N;;;;;
+14284;EGYPTIAN HIEROGLYPH-14284;Lo;0;L;;;;;N;;;;;
+14285;EGYPTIAN HIEROGLYPH-14285;Lo;0;L;;;;;N;;;;;
+14286;EGYPTIAN HIEROGLYPH-14286;Lo;0;L;;;;;N;;;;;
+14287;EGYPTIAN HIEROGLYPH-14287;Lo;0;L;;;;;N;;;;;
+14288;EGYPTIAN HIEROGLYPH-14288;Lo;0;L;;;;;N;;;;;
+14289;EGYPTIAN HIEROGLYPH-14289;Lo;0;L;;;;;N;;;;;
+1428A;EGYPTIAN HIEROGLYPH-1428A;Lo;0;L;;;;;N;;;;;
+1428B;EGYPTIAN HIEROGLYPH-1428B;Lo;0;L;;;;;N;;;;;
+1428C;EGYPTIAN HIEROGLYPH-1428C;Lo;0;L;;;;;N;;;;;
+1428D;EGYPTIAN HIEROGLYPH-1428D;Lo;0;L;;;;;N;;;;;
+1428E;EGYPTIAN HIEROGLYPH-1428E;Lo;0;L;;;;;N;;;;;
+1428F;EGYPTIAN HIEROGLYPH-1428F;Lo;0;L;;;;;N;;;;;
+14290;EGYPTIAN HIEROGLYPH-14290;Lo;0;L;;;;;N;;;;;
+14291;EGYPTIAN HIEROGLYPH-14291;Lo;0;L;;;;;N;;;;;
+14292;EGYPTIAN HIEROGLYPH-14292;Lo;0;L;;;;;N;;;;;
+14293;EGYPTIAN HIEROGLYPH-14293;Lo;0;L;;;;;N;;;;;
+14294;EGYPTIAN HIEROGLYPH-14294;Lo;0;L;;;;;N;;;;;
+14295;EGYPTIAN HIEROGLYPH-14295;Lo;0;L;;;;;N;;;;;
+14296;EGYPTIAN HIEROGLYPH-14296;Lo;0;L;;;;;N;;;;;
+14297;EGYPTIAN HIEROGLYPH-14297;Lo;0;L;;;;;N;;;;;
+14298;EGYPTIAN HIEROGLYPH-14298;Lo;0;L;;;;;N;;;;;
+14299;EGYPTIAN HIEROGLYPH-14299;Lo;0;L;;;;;N;;;;;
+1429A;EGYPTIAN HIEROGLYPH-1429A;Lo;0;L;;;;;N;;;;;
+1429B;EGYPTIAN HIEROGLYPH-1429B;Lo;0;L;;;;;N;;;;;
+1429C;EGYPTIAN HIEROGLYPH-1429C;Lo;0;L;;;;;N;;;;;
+1429D;EGYPTIAN HIEROGLYPH-1429D;Lo;0;L;;;;;N;;;;;
+1429E;EGYPTIAN HIEROGLYPH-1429E;Lo;0;L;;;;;N;;;;;
+1429F;EGYPTIAN HIEROGLYPH-1429F;Lo;0;L;;;;;N;;;;;
+142A0;EGYPTIAN HIEROGLYPH-142A0;Lo;0;L;;;;;N;;;;;
+142A1;EGYPTIAN HIEROGLYPH-142A1;Lo;0;L;;;;;N;;;;;
+142A2;EGYPTIAN HIEROGLYPH-142A2;Lo;0;L;;;;;N;;;;;
+142A3;EGYPTIAN HIEROGLYPH-142A3;Lo;0;L;;;;;N;;;;;
+142A4;EGYPTIAN HIEROGLYPH-142A4;Lo;0;L;;;;;N;;;;;
+142A5;EGYPTIAN HIEROGLYPH-142A5;Lo;0;L;;;;;N;;;;;
+142A6;EGYPTIAN HIEROGLYPH-142A6;Lo;0;L;;;;;N;;;;;
+142A7;EGYPTIAN HIEROGLYPH-142A7;Lo;0;L;;;;;N;;;;;
+142A8;EGYPTIAN HIEROGLYPH-142A8;Lo;0;L;;;;;N;;;;;
+142A9;EGYPTIAN HIEROGLYPH-142A9;Lo;0;L;;;;;N;;;;;
+142AA;EGYPTIAN HIEROGLYPH-142AA;Lo;0;L;;;;;N;;;;;
+142AB;EGYPTIAN HIEROGLYPH-142AB;Lo;0;L;;;;;N;;;;;
+142AC;EGYPTIAN HIEROGLYPH-142AC;Lo;0;L;;;;;N;;;;;
+142AD;EGYPTIAN HIEROGLYPH-142AD;Lo;0;L;;;;;N;;;;;
+142AE;EGYPTIAN HIEROGLYPH-142AE;Lo;0;L;;;;;N;;;;;
+142AF;EGYPTIAN HIEROGLYPH-142AF;Lo;0;L;;;;;N;;;;;
+142B0;EGYPTIAN HIEROGLYPH-142B0;Lo;0;L;;;;;N;;;;;
+142B1;EGYPTIAN HIEROGLYPH-142B1;Lo;0;L;;;;;N;;;;;
+142B2;EGYPTIAN HIEROGLYPH-142B2;Lo;0;L;;;;;N;;;;;
+142B3;EGYPTIAN HIEROGLYPH-142B3;Lo;0;L;;;;;N;;;;;
+142B4;EGYPTIAN HIEROGLYPH-142B4;Lo;0;L;;;;;N;;;;;
+142B5;EGYPTIAN HIEROGLYPH-142B5;Lo;0;L;;;;;N;;;;;
+142B6;EGYPTIAN HIEROGLYPH-142B6;Lo;0;L;;;;;N;;;;;
+142B7;EGYPTIAN HIEROGLYPH-142B7;Lo;0;L;;;;;N;;;;;
+142B8;EGYPTIAN HIEROGLYPH-142B8;Lo;0;L;;;;;N;;;;;
+142B9;EGYPTIAN HIEROGLYPH-142B9;Lo;0;L;;;;;N;;;;;
+142BA;EGYPTIAN HIEROGLYPH-142BA;Lo;0;L;;;;;N;;;;;
+142BB;EGYPTIAN HIEROGLYPH-142BB;Lo;0;L;;;;;N;;;;;
+142BC;EGYPTIAN HIEROGLYPH-142BC;Lo;0;L;;;;;N;;;;;
+142BD;EGYPTIAN HIEROGLYPH-142BD;Lo;0;L;;;;;N;;;;;
+142BE;EGYPTIAN HIEROGLYPH-142BE;Lo;0;L;;;;;N;;;;;
+142BF;EGYPTIAN HIEROGLYPH-142BF;Lo;0;L;;;;;N;;;;;
+142C0;EGYPTIAN HIEROGLYPH-142C0;Lo;0;L;;;;;N;;;;;
+142C1;EGYPTIAN HIEROGLYPH-142C1;Lo;0;L;;;;;N;;;;;
+142C2;EGYPTIAN HIEROGLYPH-142C2;Lo;0;L;;;;;N;;;;;
+142C3;EGYPTIAN HIEROGLYPH-142C3;Lo;0;L;;;;;N;;;;;
+142C4;EGYPTIAN HIEROGLYPH-142C4;Lo;0;L;;;;;N;;;;;
+142C5;EGYPTIAN HIEROGLYPH-142C5;Lo;0;L;;;;;N;;;;;
+142C6;EGYPTIAN HIEROGLYPH-142C6;Lo;0;L;;;;;N;;;;;
+142C7;EGYPTIAN HIEROGLYPH-142C7;Lo;0;L;;;;;N;;;;;
+142C8;EGYPTIAN HIEROGLYPH-142C8;Lo;0;L;;;;;N;;;;;
+142C9;EGYPTIAN HIEROGLYPH-142C9;Lo;0;L;;;;;N;;;;;
+142CA;EGYPTIAN HIEROGLYPH-142CA;Lo;0;L;;;;;N;;;;;
+142CB;EGYPTIAN HIEROGLYPH-142CB;Lo;0;L;;;;;N;;;;;
+142CC;EGYPTIAN HIEROGLYPH-142CC;Lo;0;L;;;;;N;;;;;
+142CD;EGYPTIAN HIEROGLYPH-142CD;Lo;0;L;;;;;N;;;;;
+142CE;EGYPTIAN HIEROGLYPH-142CE;Lo;0;L;;;;;N;;;;;
+142CF;EGYPTIAN HIEROGLYPH-142CF;Lo;0;L;;;;;N;;;;;
+142D0;EGYPTIAN HIEROGLYPH-142D0;Lo;0;L;;;;;N;;;;;
+142D1;EGYPTIAN HIEROGLYPH-142D1;Lo;0;L;;;;;N;;;;;
+142D2;EGYPTIAN HIEROGLYPH-142D2;Lo;0;L;;;;;N;;;;;
+142D3;EGYPTIAN HIEROGLYPH-142D3;Lo;0;L;;;;;N;;;;;
+142D4;EGYPTIAN HIEROGLYPH-142D4;Lo;0;L;;;;;N;;;;;
+142D5;EGYPTIAN HIEROGLYPH-142D5;Lo;0;L;;;;;N;;;;;
+142D6;EGYPTIAN HIEROGLYPH-142D6;Lo;0;L;;;;;N;;;;;
+142D7;EGYPTIAN HIEROGLYPH-142D7;Lo;0;L;;;;;N;;;;;
+142D8;EGYPTIAN HIEROGLYPH-142D8;Lo;0;L;;;;;N;;;;;
+142D9;EGYPTIAN HIEROGLYPH-142D9;Lo;0;L;;;;;N;;;;;
+142DA;EGYPTIAN HIEROGLYPH-142DA;Lo;0;L;;;;;N;;;;;
+142DB;EGYPTIAN HIEROGLYPH-142DB;Lo;0;L;;;;;N;;;;;
+142DC;EGYPTIAN HIEROGLYPH-142DC;Lo;0;L;;;;;N;;;;;
+142DD;EGYPTIAN HIEROGLYPH-142DD;Lo;0;L;;;;;N;;;;;
+142DE;EGYPTIAN HIEROGLYPH-142DE;Lo;0;L;;;;;N;;;;;
+142DF;EGYPTIAN HIEROGLYPH-142DF;Lo;0;L;;;;;N;;;;;
+142E0;EGYPTIAN HIEROGLYPH-142E0;Lo;0;L;;;;;N;;;;;
+142E1;EGYPTIAN HIEROGLYPH-142E1;Lo;0;L;;;;;N;;;;;
+142E2;EGYPTIAN HIEROGLYPH-142E2;Lo;0;L;;;;;N;;;;;
+142E3;EGYPTIAN HIEROGLYPH-142E3;Lo;0;L;;;;;N;;;;;
+142E4;EGYPTIAN HIEROGLYPH-142E4;Lo;0;L;;;;;N;;;;;
+142E5;EGYPTIAN HIEROGLYPH-142E5;Lo;0;L;;;;;N;;;;;
+142E6;EGYPTIAN HIEROGLYPH-142E6;Lo;0;L;;;;;N;;;;;
+142E7;EGYPTIAN HIEROGLYPH-142E7;Lo;0;L;;;;;N;;;;;
+142E8;EGYPTIAN HIEROGLYPH-142E8;Lo;0;L;;;;;N;;;;;
+142E9;EGYPTIAN HIEROGLYPH-142E9;Lo;0;L;;;;;N;;;;;
+142EA;EGYPTIAN HIEROGLYPH-142EA;Lo;0;L;;;;;N;;;;;
+142EB;EGYPTIAN HIEROGLYPH-142EB;Lo;0;L;;;;;N;;;;;
+142EC;EGYPTIAN HIEROGLYPH-142EC;Lo;0;L;;;;;N;;;;;
+142ED;EGYPTIAN HIEROGLYPH-142ED;Lo;0;L;;;;;N;;;;;
+142EE;EGYPTIAN HIEROGLYPH-142EE;Lo;0;L;;;;;N;;;;;
+142EF;EGYPTIAN HIEROGLYPH-142EF;Lo;0;L;;;;;N;;;;;
+142F0;EGYPTIAN HIEROGLYPH-142F0;Lo;0;L;;;;;N;;;;;
+142F1;EGYPTIAN HIEROGLYPH-142F1;Lo;0;L;;;;;N;;;;;
+142F2;EGYPTIAN HIEROGLYPH-142F2;Lo;0;L;;;;;N;;;;;
+142F3;EGYPTIAN HIEROGLYPH-142F3;Lo;0;L;;;;;N;;;;;
+142F4;EGYPTIAN HIEROGLYPH-142F4;Lo;0;L;;;;;N;;;;;
+142F5;EGYPTIAN HIEROGLYPH-142F5;Lo;0;L;;;;;N;;;;;
+142F6;EGYPTIAN HIEROGLYPH-142F6;Lo;0;L;;;;;N;;;;;
+142F7;EGYPTIAN HIEROGLYPH-142F7;Lo;0;L;;;;;N;;;;;
+142F8;EGYPTIAN HIEROGLYPH-142F8;Lo;0;L;;;;;N;;;;;
+142F9;EGYPTIAN HIEROGLYPH-142F9;Lo;0;L;;;;;N;;;;;
+142FA;EGYPTIAN HIEROGLYPH-142FA;Lo;0;L;;;;;N;;;;;
+142FB;EGYPTIAN HIEROGLYPH-142FB;Lo;0;L;;;;;N;;;;;
+142FC;EGYPTIAN HIEROGLYPH-142FC;Lo;0;L;;;;;N;;;;;
+142FD;EGYPTIAN HIEROGLYPH-142FD;Lo;0;L;;;;;N;;;;;
+142FE;EGYPTIAN HIEROGLYPH-142FE;Lo;0;L;;;;;N;;;;;
+142FF;EGYPTIAN HIEROGLYPH-142FF;Lo;0;L;;;;;N;;;;;
+14300;EGYPTIAN HIEROGLYPH-14300;Lo;0;L;;;;;N;;;;;
+14301;EGYPTIAN HIEROGLYPH-14301;Lo;0;L;;;;;N;;;;;
+14302;EGYPTIAN HIEROGLYPH-14302;Lo;0;L;;;;;N;;;;;
+14303;EGYPTIAN HIEROGLYPH-14303;Lo;0;L;;;;;N;;;;;
+14304;EGYPTIAN HIEROGLYPH-14304;Lo;0;L;;;;;N;;;;;
+14305;EGYPTIAN HIEROGLYPH-14305;Lo;0;L;;;;;N;;;;;
+14306;EGYPTIAN HIEROGLYPH-14306;Lo;0;L;;;;;N;;;;;
+14307;EGYPTIAN HIEROGLYPH-14307;Lo;0;L;;;;;N;;;;;
+14308;EGYPTIAN HIEROGLYPH-14308;Lo;0;L;;;;;N;;;;;
+14309;EGYPTIAN HIEROGLYPH-14309;Lo;0;L;;;;;N;;;;;
+1430A;EGYPTIAN HIEROGLYPH-1430A;Lo;0;L;;;;;N;;;;;
+1430B;EGYPTIAN HIEROGLYPH-1430B;Lo;0;L;;;;;N;;;;;
+1430C;EGYPTIAN HIEROGLYPH-1430C;Lo;0;L;;;;;N;;;;;
+1430D;EGYPTIAN HIEROGLYPH-1430D;Lo;0;L;;;;;N;;;;;
+1430E;EGYPTIAN HIEROGLYPH-1430E;Lo;0;L;;;;;N;;;;;
+1430F;EGYPTIAN HIEROGLYPH-1430F;Lo;0;L;;;;;N;;;;;
+14310;EGYPTIAN HIEROGLYPH-14310;Lo;0;L;;;;;N;;;;;
+14311;EGYPTIAN HIEROGLYPH-14311;Lo;0;L;;;;;N;;;;;
+14312;EGYPTIAN HIEROGLYPH-14312;Lo;0;L;;;;;N;;;;;
+14313;EGYPTIAN HIEROGLYPH-14313;Lo;0;L;;;;;N;;;;;
+14314;EGYPTIAN HIEROGLYPH-14314;Lo;0;L;;;;;N;;;;;
+14315;EGYPTIAN HIEROGLYPH-14315;Lo;0;L;;;;;N;;;;;
+14316;EGYPTIAN HIEROGLYPH-14316;Lo;0;L;;;;;N;;;;;
+14317;EGYPTIAN HIEROGLYPH-14317;Lo;0;L;;;;;N;;;;;
+14318;EGYPTIAN HIEROGLYPH-14318;Lo;0;L;;;;;N;;;;;
+14319;EGYPTIAN HIEROGLYPH-14319;Lo;0;L;;;;;N;;;;;
+1431A;EGYPTIAN HIEROGLYPH-1431A;Lo;0;L;;;;;N;;;;;
+1431B;EGYPTIAN HIEROGLYPH-1431B;Lo;0;L;;;;;N;;;;;
+1431C;EGYPTIAN HIEROGLYPH-1431C;Lo;0;L;;;;;N;;;;;
+1431D;EGYPTIAN HIEROGLYPH-1431D;Lo;0;L;;;;;N;;;;;
+1431E;EGYPTIAN HIEROGLYPH-1431E;Lo;0;L;;;;;N;;;;;
+1431F;EGYPTIAN HIEROGLYPH-1431F;Lo;0;L;;;;;N;;;;;
+14320;EGYPTIAN HIEROGLYPH-14320;Lo;0;L;;;;;N;;;;;
+14321;EGYPTIAN HIEROGLYPH-14321;Lo;0;L;;;;;N;;;;;
+14322;EGYPTIAN HIEROGLYPH-14322;Lo;0;L;;;;;N;;;;;
+14323;EGYPTIAN HIEROGLYPH-14323;Lo;0;L;;;;;N;;;;;
+14324;EGYPTIAN HIEROGLYPH-14324;Lo;0;L;;;;;N;;;;;
+14325;EGYPTIAN HIEROGLYPH-14325;Lo;0;L;;;;;N;;;;;
+14326;EGYPTIAN HIEROGLYPH-14326;Lo;0;L;;;;;N;;;;;
+14327;EGYPTIAN HIEROGLYPH-14327;Lo;0;L;;;;;N;;;;;
+14328;EGYPTIAN HIEROGLYPH-14328;Lo;0;L;;;;;N;;;;;
+14329;EGYPTIAN HIEROGLYPH-14329;Lo;0;L;;;;;N;;;;;
+1432A;EGYPTIAN HIEROGLYPH-1432A;Lo;0;L;;;;;N;;;;;
+1432B;EGYPTIAN HIEROGLYPH-1432B;Lo;0;L;;;;;N;;;;;
+1432C;EGYPTIAN HIEROGLYPH-1432C;Lo;0;L;;;;;N;;;;;
+1432D;EGYPTIAN HIEROGLYPH-1432D;Lo;0;L;;;;;N;;;;;
+1432E;EGYPTIAN HIEROGLYPH-1432E;Lo;0;L;;;;;N;;;;;
+1432F;EGYPTIAN HIEROGLYPH-1432F;Lo;0;L;;;;;N;;;;;
+14330;EGYPTIAN HIEROGLYPH-14330;Lo;0;L;;;;;N;;;;;
+14331;EGYPTIAN HIEROGLYPH-14331;Lo;0;L;;;;;N;;;;;
+14332;EGYPTIAN HIEROGLYPH-14332;Lo;0;L;;;;;N;;;;;
+14333;EGYPTIAN HIEROGLYPH-14333;Lo;0;L;;;;;N;;;;;
+14334;EGYPTIAN HIEROGLYPH-14334;Lo;0;L;;;;;N;;;;;
+14335;EGYPTIAN HIEROGLYPH-14335;Lo;0;L;;;;;N;;;;;
+14336;EGYPTIAN HIEROGLYPH-14336;Lo;0;L;;;;;N;;;;;
+14337;EGYPTIAN HIEROGLYPH-14337;Lo;0;L;;;;;N;;;;;
+14338;EGYPTIAN HIEROGLYPH-14338;Lo;0;L;;;;;N;;;;;
+14339;EGYPTIAN HIEROGLYPH-14339;Lo;0;L;;;;;N;;;;;
+1433A;EGYPTIAN HIEROGLYPH-1433A;Lo;0;L;;;;;N;;;;;
+1433B;EGYPTIAN HIEROGLYPH-1433B;Lo;0;L;;;;;N;;;;;
+1433C;EGYPTIAN HIEROGLYPH-1433C;Lo;0;L;;;;;N;;;;;
+1433D;EGYPTIAN HIEROGLYPH-1433D;Lo;0;L;;;;;N;;;;;
+1433E;EGYPTIAN HIEROGLYPH-1433E;Lo;0;L;;;;;N;;;;;
+1433F;EGYPTIAN HIEROGLYPH-1433F;Lo;0;L;;;;;N;;;;;
+14340;EGYPTIAN HIEROGLYPH-14340;Lo;0;L;;;;;N;;;;;
+14341;EGYPTIAN HIEROGLYPH-14341;Lo;0;L;;;;;N;;;;;
+14342;EGYPTIAN HIEROGLYPH-14342;Lo;0;L;;;;;N;;;;;
+14343;EGYPTIAN HIEROGLYPH-14343;Lo;0;L;;;;;N;;;;;
+14344;EGYPTIAN HIEROGLYPH-14344;Lo;0;L;;;;;N;;;;;
+14345;EGYPTIAN HIEROGLYPH-14345;Lo;0;L;;;;;N;;;;;
+14346;EGYPTIAN HIEROGLYPH-14346;Lo;0;L;;;;;N;;;;;
+14347;EGYPTIAN HIEROGLYPH-14347;Lo;0;L;;;;;N;;;;;
+14348;EGYPTIAN HIEROGLYPH-14348;Lo;0;L;;;;;N;;;;;
+14349;EGYPTIAN HIEROGLYPH-14349;Lo;0;L;;;;;N;;;;;
+1434A;EGYPTIAN HIEROGLYPH-1434A;Lo;0;L;;;;;N;;;;;
+1434B;EGYPTIAN HIEROGLYPH-1434B;Lo;0;L;;;;;N;;;;;
+1434C;EGYPTIAN HIEROGLYPH-1434C;Lo;0;L;;;;;N;;;;;
+1434D;EGYPTIAN HIEROGLYPH-1434D;Lo;0;L;;;;;N;;;;;
+1434E;EGYPTIAN HIEROGLYPH-1434E;Lo;0;L;;;;;N;;;;;
+1434F;EGYPTIAN HIEROGLYPH-1434F;Lo;0;L;;;;;N;;;;;
+14350;EGYPTIAN HIEROGLYPH-14350;Lo;0;L;;;;;N;;;;;
+14351;EGYPTIAN HIEROGLYPH-14351;Lo;0;L;;;;;N;;;;;
+14352;EGYPTIAN HIEROGLYPH-14352;Lo;0;L;;;;;N;;;;;
+14353;EGYPTIAN HIEROGLYPH-14353;Lo;0;L;;;;;N;;;;;
+14354;EGYPTIAN HIEROGLYPH-14354;Lo;0;L;;;;;N;;;;;
+14355;EGYPTIAN HIEROGLYPH-14355;Lo;0;L;;;;;N;;;;;
+14356;EGYPTIAN HIEROGLYPH-14356;Lo;0;L;;;;;N;;;;;
+14357;EGYPTIAN HIEROGLYPH-14357;Lo;0;L;;;;;N;;;;;
+14358;EGYPTIAN HIEROGLYPH-14358;Lo;0;L;;;;;N;;;;;
+14359;EGYPTIAN HIEROGLYPH-14359;Lo;0;L;;;;;N;;;;;
+1435A;EGYPTIAN HIEROGLYPH-1435A;Lo;0;L;;;;;N;;;;;
+1435B;EGYPTIAN HIEROGLYPH-1435B;Lo;0;L;;;;;N;;;;;
+1435C;EGYPTIAN HIEROGLYPH-1435C;Lo;0;L;;;;;N;;;;;
+1435D;EGYPTIAN HIEROGLYPH-1435D;Lo;0;L;;;;;N;;;;;
+1435E;EGYPTIAN HIEROGLYPH-1435E;Lo;0;L;;;;;N;;;;;
+1435F;EGYPTIAN HIEROGLYPH-1435F;Lo;0;L;;;;;N;;;;;
+14360;EGYPTIAN HIEROGLYPH-14360;Lo;0;L;;;;;N;;;;;
+14361;EGYPTIAN HIEROGLYPH-14361;Lo;0;L;;;;;N;;;;;
+14362;EGYPTIAN HIEROGLYPH-14362;Lo;0;L;;;;;N;;;;;
+14363;EGYPTIAN HIEROGLYPH-14363;Lo;0;L;;;;;N;;;;;
+14364;EGYPTIAN HIEROGLYPH-14364;Lo;0;L;;;;;N;;;;;
+14365;EGYPTIAN HIEROGLYPH-14365;Lo;0;L;;;;;N;;;;;
+14366;EGYPTIAN HIEROGLYPH-14366;Lo;0;L;;;;;N;;;;;
+14367;EGYPTIAN HIEROGLYPH-14367;Lo;0;L;;;;;N;;;;;
+14368;EGYPTIAN HIEROGLYPH-14368;Lo;0;L;;;;;N;;;;;
+14369;EGYPTIAN HIEROGLYPH-14369;Lo;0;L;;;;;N;;;;;
+1436A;EGYPTIAN HIEROGLYPH-1436A;Lo;0;L;;;;;N;;;;;
+1436B;EGYPTIAN HIEROGLYPH-1436B;Lo;0;L;;;;;N;;;;;
+1436C;EGYPTIAN HIEROGLYPH-1436C;Lo;0;L;;;;;N;;;;;
+1436D;EGYPTIAN HIEROGLYPH-1436D;Lo;0;L;;;;;N;;;;;
+1436E;EGYPTIAN HIEROGLYPH-1436E;Lo;0;L;;;;;N;;;;;
+1436F;EGYPTIAN HIEROGLYPH-1436F;Lo;0;L;;;;;N;;;;;
+14370;EGYPTIAN HIEROGLYPH-14370;Lo;0;L;;;;;N;;;;;
+14371;EGYPTIAN HIEROGLYPH-14371;Lo;0;L;;;;;N;;;;;
+14372;EGYPTIAN HIEROGLYPH-14372;Lo;0;L;;;;;N;;;;;
+14373;EGYPTIAN HIEROGLYPH-14373;Lo;0;L;;;;;N;;;;;
+14374;EGYPTIAN HIEROGLYPH-14374;Lo;0;L;;;;;N;;;;;
+14375;EGYPTIAN HIEROGLYPH-14375;Lo;0;L;;;;;N;;;;;
+14376;EGYPTIAN HIEROGLYPH-14376;Lo;0;L;;;;;N;;;;;
+14377;EGYPTIAN HIEROGLYPH-14377;Lo;0;L;;;;;N;;;;;
+14378;EGYPTIAN HIEROGLYPH-14378;Lo;0;L;;;;;N;;;;;
+14379;EGYPTIAN HIEROGLYPH-14379;Lo;0;L;;;;;N;;;;;
+1437A;EGYPTIAN HIEROGLYPH-1437A;Lo;0;L;;;;;N;;;;;
+1437B;EGYPTIAN HIEROGLYPH-1437B;Lo;0;L;;;;;N;;;;;
+1437C;EGYPTIAN HIEROGLYPH-1437C;Lo;0;L;;;;;N;;;;;
+1437D;EGYPTIAN HIEROGLYPH-1437D;Lo;0;L;;;;;N;;;;;
+1437E;EGYPTIAN HIEROGLYPH-1437E;Lo;0;L;;;;;N;;;;;
+1437F;EGYPTIAN HIEROGLYPH-1437F;Lo;0;L;;;;;N;;;;;
+14380;EGYPTIAN HIEROGLYPH-14380;Lo;0;L;;;;;N;;;;;
+14381;EGYPTIAN HIEROGLYPH-14381;Lo;0;L;;;;;N;;;;;
+14382;EGYPTIAN HIEROGLYPH-14382;Lo;0;L;;;;;N;;;;;
+14383;EGYPTIAN HIEROGLYPH-14383;Lo;0;L;;;;;N;;;;;
+14384;EGYPTIAN HIEROGLYPH-14384;Lo;0;L;;;;;N;;;;;
+14385;EGYPTIAN HIEROGLYPH-14385;Lo;0;L;;;;;N;;;;;
+14386;EGYPTIAN HIEROGLYPH-14386;Lo;0;L;;;;;N;;;;;
+14387;EGYPTIAN HIEROGLYPH-14387;Lo;0;L;;;;;N;;;;;
+14388;EGYPTIAN HIEROGLYPH-14388;Lo;0;L;;;;;N;;;;;
+14389;EGYPTIAN HIEROGLYPH-14389;Lo;0;L;;;;;N;;;;;
+1438A;EGYPTIAN HIEROGLYPH-1438A;Lo;0;L;;;;;N;;;;;
+1438B;EGYPTIAN HIEROGLYPH-1438B;Lo;0;L;;;;;N;;;;;
+1438C;EGYPTIAN HIEROGLYPH-1438C;Lo;0;L;;;;;N;;;;;
+1438D;EGYPTIAN HIEROGLYPH-1438D;Lo;0;L;;;;;N;;;;;
+1438E;EGYPTIAN HIEROGLYPH-1438E;Lo;0;L;;;;;N;;;;;
+1438F;EGYPTIAN HIEROGLYPH-1438F;Lo;0;L;;;;;N;;;;;
+14390;EGYPTIAN HIEROGLYPH-14390;Lo;0;L;;;;;N;;;;;
+14391;EGYPTIAN HIEROGLYPH-14391;Lo;0;L;;;;;N;;;;;
+14392;EGYPTIAN HIEROGLYPH-14392;Lo;0;L;;;;;N;;;;;
+14393;EGYPTIAN HIEROGLYPH-14393;Lo;0;L;;;;;N;;;;;
+14394;EGYPTIAN HIEROGLYPH-14394;Lo;0;L;;;;;N;;;;;
+14395;EGYPTIAN HIEROGLYPH-14395;Lo;0;L;;;;;N;;;;;
+14396;EGYPTIAN HIEROGLYPH-14396;Lo;0;L;;;;;N;;;;;
+14397;EGYPTIAN HIEROGLYPH-14397;Lo;0;L;;;;;N;;;;;
+14398;EGYPTIAN HIEROGLYPH-14398;Lo;0;L;;;;;N;;;;;
+14399;EGYPTIAN HIEROGLYPH-14399;Lo;0;L;;;;;N;;;;;
+1439A;EGYPTIAN HIEROGLYPH-1439A;Lo;0;L;;;;;N;;;;;
+1439B;EGYPTIAN HIEROGLYPH-1439B;Lo;0;L;;;;;N;;;;;
+1439C;EGYPTIAN HIEROGLYPH-1439C;Lo;0;L;;;;;N;;;;;
+1439D;EGYPTIAN HIEROGLYPH-1439D;Lo;0;L;;;;;N;;;;;
+1439E;EGYPTIAN HIEROGLYPH-1439E;Lo;0;L;;;;;N;;;;;
+1439F;EGYPTIAN HIEROGLYPH-1439F;Lo;0;L;;;;;N;;;;;
+143A0;EGYPTIAN HIEROGLYPH-143A0;Lo;0;L;;;;;N;;;;;
+143A1;EGYPTIAN HIEROGLYPH-143A1;Lo;0;L;;;;;N;;;;;
+143A2;EGYPTIAN HIEROGLYPH-143A2;Lo;0;L;;;;;N;;;;;
+143A3;EGYPTIAN HIEROGLYPH-143A3;Lo;0;L;;;;;N;;;;;
+143A4;EGYPTIAN HIEROGLYPH-143A4;Lo;0;L;;;;;N;;;;;
+143A5;EGYPTIAN HIEROGLYPH-143A5;Lo;0;L;;;;;N;;;;;
+143A6;EGYPTIAN HIEROGLYPH-143A6;Lo;0;L;;;;;N;;;;;
+143A7;EGYPTIAN HIEROGLYPH-143A7;Lo;0;L;;;;;N;;;;;
+143A8;EGYPTIAN HIEROGLYPH-143A8;Lo;0;L;;;;;N;;;;;
+143A9;EGYPTIAN HIEROGLYPH-143A9;Lo;0;L;;;;;N;;;;;
+143AA;EGYPTIAN HIEROGLYPH-143AA;Lo;0;L;;;;;N;;;;;
+143AB;EGYPTIAN HIEROGLYPH-143AB;Lo;0;L;;;;;N;;;;;
+143AC;EGYPTIAN HIEROGLYPH-143AC;Lo;0;L;;;;;N;;;;;
+143AD;EGYPTIAN HIEROGLYPH-143AD;Lo;0;L;;;;;N;;;;;
+143AE;EGYPTIAN HIEROGLYPH-143AE;Lo;0;L;;;;;N;;;;;
+143AF;EGYPTIAN HIEROGLYPH-143AF;Lo;0;L;;;;;N;;;;;
+143B0;EGYPTIAN HIEROGLYPH-143B0;Lo;0;L;;;;;N;;;;;
+143B1;EGYPTIAN HIEROGLYPH-143B1;Lo;0;L;;;;;N;;;;;
+143B2;EGYPTIAN HIEROGLYPH-143B2;Lo;0;L;;;;;N;;;;;
+143B3;EGYPTIAN HIEROGLYPH-143B3;Lo;0;L;;;;;N;;;;;
+143B4;EGYPTIAN HIEROGLYPH-143B4;Lo;0;L;;;;;N;;;;;
+143B5;EGYPTIAN HIEROGLYPH-143B5;Lo;0;L;;;;;N;;;;;
+143B6;EGYPTIAN HIEROGLYPH-143B6;Lo;0;L;;;;;N;;;;;
+143B7;EGYPTIAN HIEROGLYPH-143B7;Lo;0;L;;;;;N;;;;;
+143B8;EGYPTIAN HIEROGLYPH-143B8;Lo;0;L;;;;;N;;;;;
+143B9;EGYPTIAN HIEROGLYPH-143B9;Lo;0;L;;;;;N;;;;;
+143BA;EGYPTIAN HIEROGLYPH-143BA;Lo;0;L;;;;;N;;;;;
+143BB;EGYPTIAN HIEROGLYPH-143BB;Lo;0;L;;;;;N;;;;;
+143BC;EGYPTIAN HIEROGLYPH-143BC;Lo;0;L;;;;;N;;;;;
+143BD;EGYPTIAN HIEROGLYPH-143BD;Lo;0;L;;;;;N;;;;;
+143BE;EGYPTIAN HIEROGLYPH-143BE;Lo;0;L;;;;;N;;;;;
+143BF;EGYPTIAN HIEROGLYPH-143BF;Lo;0;L;;;;;N;;;;;
+143C0;EGYPTIAN HIEROGLYPH-143C0;Lo;0;L;;;;;N;;;;;
+143C1;EGYPTIAN HIEROGLYPH-143C1;Lo;0;L;;;;;N;;;;;
+143C2;EGYPTIAN HIEROGLYPH-143C2;Lo;0;L;;;;;N;;;;;
+143C3;EGYPTIAN HIEROGLYPH-143C3;Lo;0;L;;;;;N;;;;;
+143C4;EGYPTIAN HIEROGLYPH-143C4;Lo;0;L;;;;;N;;;;;
+143C5;EGYPTIAN HIEROGLYPH-143C5;Lo;0;L;;;;;N;;;;;
+143C6;EGYPTIAN HIEROGLYPH-143C6;Lo;0;L;;;;;N;;;;;
+143C7;EGYPTIAN HIEROGLYPH-143C7;Lo;0;L;;;;;N;;;;;
+143C8;EGYPTIAN HIEROGLYPH-143C8;Lo;0;L;;;;;N;;;;;
+143C9;EGYPTIAN HIEROGLYPH-143C9;Lo;0;L;;;;;N;;;;;
+143CA;EGYPTIAN HIEROGLYPH-143CA;Lo;0;L;;;;;N;;;;;
+143CB;EGYPTIAN HIEROGLYPH-143CB;Lo;0;L;;;;;N;;;;;
+143CC;EGYPTIAN HIEROGLYPH-143CC;Lo;0;L;;;;;N;;;;;
+143CD;EGYPTIAN HIEROGLYPH-143CD;Lo;0;L;;;;;N;;;;;
+143CE;EGYPTIAN HIEROGLYPH-143CE;Lo;0;L;;;;;N;;;;;
+143CF;EGYPTIAN HIEROGLYPH-143CF;Lo;0;L;;;;;N;;;;;
+143D0;EGYPTIAN HIEROGLYPH-143D0;Lo;0;L;;;;;N;;;;;
+143D1;EGYPTIAN HIEROGLYPH-143D1;Lo;0;L;;;;;N;;;;;
+143D2;EGYPTIAN HIEROGLYPH-143D2;Lo;0;L;;;;;N;;;;;
+143D3;EGYPTIAN HIEROGLYPH-143D3;Lo;0;L;;;;;N;;;;;
+143D4;EGYPTIAN HIEROGLYPH-143D4;Lo;0;L;;;;;N;;;;;
+143D5;EGYPTIAN HIEROGLYPH-143D5;Lo;0;L;;;;;N;;;;;
+143D6;EGYPTIAN HIEROGLYPH-143D6;Lo;0;L;;;;;N;;;;;
+143D7;EGYPTIAN HIEROGLYPH-143D7;Lo;0;L;;;;;N;;;;;
+143D8;EGYPTIAN HIEROGLYPH-143D8;Lo;0;L;;;;;N;;;;;
+143D9;EGYPTIAN HIEROGLYPH-143D9;Lo;0;L;;;;;N;;;;;
+143DA;EGYPTIAN HIEROGLYPH-143DA;Lo;0;L;;;;;N;;;;;
+143DB;EGYPTIAN HIEROGLYPH-143DB;Lo;0;L;;;;;N;;;;;
+143DC;EGYPTIAN HIEROGLYPH-143DC;Lo;0;L;;;;;N;;;;;
+143DD;EGYPTIAN HIEROGLYPH-143DD;Lo;0;L;;;;;N;;;;;
+143DE;EGYPTIAN HIEROGLYPH-143DE;Lo;0;L;;;;;N;;;;;
+143DF;EGYPTIAN HIEROGLYPH-143DF;Lo;0;L;;;;;N;;;;;
+143E0;EGYPTIAN HIEROGLYPH-143E0;Lo;0;L;;;;;N;;;;;
+143E1;EGYPTIAN HIEROGLYPH-143E1;Lo;0;L;;;;;N;;;;;
+143E2;EGYPTIAN HIEROGLYPH-143E2;Lo;0;L;;;;;N;;;;;
+143E3;EGYPTIAN HIEROGLYPH-143E3;Lo;0;L;;;;;N;;;;;
+143E4;EGYPTIAN HIEROGLYPH-143E4;Lo;0;L;;;;;N;;;;;
+143E5;EGYPTIAN HIEROGLYPH-143E5;Lo;0;L;;;;;N;;;;;
+143E6;EGYPTIAN HIEROGLYPH-143E6;Lo;0;L;;;;;N;;;;;
+143E7;EGYPTIAN HIEROGLYPH-143E7;Lo;0;L;;;;;N;;;;;
+143E8;EGYPTIAN HIEROGLYPH-143E8;Lo;0;L;;;;;N;;;;;
+143E9;EGYPTIAN HIEROGLYPH-143E9;Lo;0;L;;;;;N;;;;;
+143EA;EGYPTIAN HIEROGLYPH-143EA;Lo;0;L;;;;;N;;;;;
+143EB;EGYPTIAN HIEROGLYPH-143EB;Lo;0;L;;;;;N;;;;;
+143EC;EGYPTIAN HIEROGLYPH-143EC;Lo;0;L;;;;;N;;;;;
+143ED;EGYPTIAN HIEROGLYPH-143ED;Lo;0;L;;;;;N;;;;;
+143EE;EGYPTIAN HIEROGLYPH-143EE;Lo;0;L;;;;;N;;;;;
+143EF;EGYPTIAN HIEROGLYPH-143EF;Lo;0;L;;;;;N;;;;;
+143F0;EGYPTIAN HIEROGLYPH-143F0;Lo;0;L;;;;;N;;;;;
+143F1;EGYPTIAN HIEROGLYPH-143F1;Lo;0;L;;;;;N;;;;;
+143F2;EGYPTIAN HIEROGLYPH-143F2;Lo;0;L;;;;;N;;;;;
+143F3;EGYPTIAN HIEROGLYPH-143F3;Lo;0;L;;;;;N;;;;;
+143F4;EGYPTIAN HIEROGLYPH-143F4;Lo;0;L;;;;;N;;;;;
+143F5;EGYPTIAN HIEROGLYPH-143F5;Lo;0;L;;;;;N;;;;;
+143F6;EGYPTIAN HIEROGLYPH-143F6;Lo;0;L;;;;;N;;;;;
+143F7;EGYPTIAN HIEROGLYPH-143F7;Lo;0;L;;;;;N;;;;;
+143F8;EGYPTIAN HIEROGLYPH-143F8;Lo;0;L;;;;;N;;;;;
+143F9;EGYPTIAN HIEROGLYPH-143F9;Lo;0;L;;;;;N;;;;;
+143FA;EGYPTIAN HIEROGLYPH-143FA;Lo;0;L;;;;;N;;;;;
14400;ANATOLIAN HIEROGLYPH A001;Lo;0;L;;;;;N;;;;;
14401;ANATOLIAN HIEROGLYPH A002;Lo;0;L;;;;;N;;;;;
14402;ANATOLIAN HIEROGLYPH A003;Lo;0;L;;;;;N;;;;;
@@ -24771,6 +29053,64 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
14644;ANATOLIAN HIEROGLYPH A528;Lo;0;L;;;;;N;;;;;
14645;ANATOLIAN HIEROGLYPH A529;Lo;0;L;;;;;N;;;;;
14646;ANATOLIAN HIEROGLYPH A530;Lo;0;L;;;;;N;;;;;
+16100;GURUNG KHEMA LETTER A;Lo;0;L;;;;;N;;;;;
+16101;GURUNG KHEMA LETTER KA;Lo;0;L;;;;;N;;;;;
+16102;GURUNG KHEMA LETTER KHA;Lo;0;L;;;;;N;;;;;
+16103;GURUNG KHEMA LETTER GA;Lo;0;L;;;;;N;;;;;
+16104;GURUNG KHEMA LETTER GHA;Lo;0;L;;;;;N;;;;;
+16105;GURUNG KHEMA LETTER NGA;Lo;0;L;;;;;N;;;;;
+16106;GURUNG KHEMA LETTER CA;Lo;0;L;;;;;N;;;;;
+16107;GURUNG KHEMA LETTER CHA;Lo;0;L;;;;;N;;;;;
+16108;GURUNG KHEMA LETTER JA;Lo;0;L;;;;;N;;;;;
+16109;GURUNG KHEMA LETTER JHA;Lo;0;L;;;;;N;;;;;
+1610A;GURUNG KHEMA LETTER HA;Lo;0;L;;;;;N;;;;;
+1610B;GURUNG KHEMA LETTER TTA;Lo;0;L;;;;;N;;;;;
+1610C;GURUNG KHEMA LETTER TTHA;Lo;0;L;;;;;N;;;;;
+1610D;GURUNG KHEMA LETTER DDA;Lo;0;L;;;;;N;;;;;
+1610E;GURUNG KHEMA LETTER DDHA;Lo;0;L;;;;;N;;;;;
+1610F;GURUNG KHEMA LETTER VA;Lo;0;L;;;;;N;;;;;
+16110;GURUNG KHEMA LETTER TA;Lo;0;L;;;;;N;;;;;
+16111;GURUNG KHEMA LETTER THA;Lo;0;L;;;;;N;;;;;
+16112;GURUNG KHEMA LETTER DA;Lo;0;L;;;;;N;;;;;
+16113;GURUNG KHEMA LETTER DHA;Lo;0;L;;;;;N;;;;;
+16114;GURUNG KHEMA LETTER NA;Lo;0;L;;;;;N;;;;;
+16115;GURUNG KHEMA LETTER PA;Lo;0;L;;;;;N;;;;;
+16116;GURUNG KHEMA LETTER PHA;Lo;0;L;;;;;N;;;;;
+16117;GURUNG KHEMA LETTER BA;Lo;0;L;;;;;N;;;;;
+16118;GURUNG KHEMA LETTER BHA;Lo;0;L;;;;;N;;;;;
+16119;GURUNG KHEMA LETTER MA;Lo;0;L;;;;;N;;;;;
+1611A;GURUNG KHEMA LETTER YA;Lo;0;L;;;;;N;;;;;
+1611B;GURUNG KHEMA LETTER RA;Lo;0;L;;;;;N;;;;;
+1611C;GURUNG KHEMA LETTER LA;Lo;0;L;;;;;N;;;;;
+1611D;GURUNG KHEMA LETTER SA;Lo;0;L;;;;;N;;;;;
+1611E;GURUNG KHEMA VOWEL SIGN AA;Mn;0;NSM;;;;;N;;;;;
+1611F;GURUNG KHEMA VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+16120;GURUNG KHEMA VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
+16121;GURUNG KHEMA VOWEL SIGN U;Mn;0;NSM;1611E 1611E;;;;N;;;;;
+16122;GURUNG KHEMA VOWEL SIGN UU;Mn;0;NSM;1611E 16129;;;;N;;;;;
+16123;GURUNG KHEMA VOWEL SIGN E;Mn;0;NSM;1611E 1611F;;;;N;;;;;
+16124;GURUNG KHEMA VOWEL SIGN EE;Mn;0;NSM;16129 1611F;;;;N;;;;;
+16125;GURUNG KHEMA VOWEL SIGN AI;Mn;0;NSM;1611E 16120;;;;N;;;;;
+16126;GURUNG KHEMA VOWEL SIGN O;Mn;0;NSM;16121 1611F;;;;N;;;;;
+16127;GURUNG KHEMA VOWEL SIGN OO;Mn;0;NSM;16122 1611F;;;;N;;;;;
+16128;GURUNG KHEMA VOWEL SIGN AU;Mn;0;NSM;16121 16120;;;;N;;;;;
+16129;GURUNG KHEMA VOWEL LENGTH MARK;Mn;0;NSM;;;;;N;;;;;
+1612A;GURUNG KHEMA CONSONANT SIGN MEDIAL YA;Mc;0;L;;;;;N;;;;;
+1612B;GURUNG KHEMA CONSONANT SIGN MEDIAL VA;Mc;0;L;;;;;N;;;;;
+1612C;GURUNG KHEMA CONSONANT SIGN MEDIAL HA;Mc;0;L;;;;;N;;;;;
+1612D;GURUNG KHEMA SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+1612E;GURUNG KHEMA CONSONANT SIGN MEDIAL RA;Mn;0;NSM;;;;;N;;;;;
+1612F;GURUNG KHEMA SIGN THOLHOMA;Mn;9;NSM;;;;;N;;;;;
+16130;GURUNG KHEMA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+16131;GURUNG KHEMA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+16132;GURUNG KHEMA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+16133;GURUNG KHEMA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+16134;GURUNG KHEMA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+16135;GURUNG KHEMA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+16136;GURUNG KHEMA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+16137;GURUNG KHEMA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+16138;GURUNG KHEMA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+16139;GURUNG KHEMA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
16800;BAMUM LETTER PHASE-A NGKUE MFON;Lo;0;L;;;;;N;;;;;
16801;BAMUM LETTER PHASE-A GBIEE FON;Lo;0;L;;;;;N;;;;;
16802;BAMUM LETTER PHASE-A PON MFON PIPAEMGBIEE;Lo;0;L;;;;;N;;;;;
@@ -25635,6 +29975,64 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
16B8D;PAHAWH HMONG CLAN SIGN TSWB;Lo;0;L;;;;;N;;;;;
16B8E;PAHAWH HMONG CLAN SIGN KWM;Lo;0;L;;;;;N;;;;;
16B8F;PAHAWH HMONG CLAN SIGN VWJ;Lo;0;L;;;;;N;;;;;
+16D40;KIRAT RAI SIGN ANUSVARA;Lm;0;L;;;;;N;;;;;
+16D41;KIRAT RAI SIGN TONPI;Lm;0;L;;;;;N;;;;;
+16D42;KIRAT RAI SIGN VISARGA;Lm;0;L;;;;;N;;;;;
+16D43;KIRAT RAI LETTER A;Lo;0;L;;;;;N;;;;;
+16D44;KIRAT RAI LETTER KA;Lo;0;L;;;;;N;;;;;
+16D45;KIRAT RAI LETTER KHA;Lo;0;L;;;;;N;;;;;
+16D46;KIRAT RAI LETTER GA;Lo;0;L;;;;;N;;;;;
+16D47;KIRAT RAI LETTER GHA;Lo;0;L;;;;;N;;;;;
+16D48;KIRAT RAI LETTER NGA;Lo;0;L;;;;;N;;;;;
+16D49;KIRAT RAI LETTER CA;Lo;0;L;;;;;N;;;;;
+16D4A;KIRAT RAI LETTER CHA;Lo;0;L;;;;;N;;;;;
+16D4B;KIRAT RAI LETTER JA;Lo;0;L;;;;;N;;;;;
+16D4C;KIRAT RAI LETTER JHA;Lo;0;L;;;;;N;;;;;
+16D4D;KIRAT RAI LETTER NYA;Lo;0;L;;;;;N;;;;;
+16D4E;KIRAT RAI LETTER TTA;Lo;0;L;;;;;N;;;;;
+16D4F;KIRAT RAI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+16D50;KIRAT RAI LETTER DDA;Lo;0;L;;;;;N;;;;;
+16D51;KIRAT RAI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+16D52;KIRAT RAI LETTER TA;Lo;0;L;;;;;N;;;;;
+16D53;KIRAT RAI LETTER THA;Lo;0;L;;;;;N;;;;;
+16D54;KIRAT RAI LETTER DA;Lo;0;L;;;;;N;;;;;
+16D55;KIRAT RAI LETTER DHA;Lo;0;L;;;;;N;;;;;
+16D56;KIRAT RAI LETTER NA;Lo;0;L;;;;;N;;;;;
+16D57;KIRAT RAI LETTER PA;Lo;0;L;;;;;N;;;;;
+16D58;KIRAT RAI LETTER PHA;Lo;0;L;;;;;N;;;;;
+16D59;KIRAT RAI LETTER BA;Lo;0;L;;;;;N;;;;;
+16D5A;KIRAT RAI LETTER BHA;Lo;0;L;;;;;N;;;;;
+16D5B;KIRAT RAI LETTER MA;Lo;0;L;;;;;N;;;;;
+16D5C;KIRAT RAI LETTER YA;Lo;0;L;;;;;N;;;;;
+16D5D;KIRAT RAI LETTER RA;Lo;0;L;;;;;N;;;;;
+16D5E;KIRAT RAI LETTER LA;Lo;0;L;;;;;N;;;;;
+16D5F;KIRAT RAI LETTER VA;Lo;0;L;;;;;N;;;;;
+16D60;KIRAT RAI LETTER SA;Lo;0;L;;;;;N;;;;;
+16D61;KIRAT RAI LETTER SHA;Lo;0;L;;;;;N;;;;;
+16D62;KIRAT RAI LETTER HA;Lo;0;L;;;;;N;;;;;
+16D63;KIRAT RAI VOWEL SIGN AA;Lo;0;L;;;;;N;;;;;
+16D64;KIRAT RAI VOWEL SIGN I;Lo;0;L;;;;;N;;;;;
+16D65;KIRAT RAI VOWEL SIGN U;Lo;0;L;;;;;N;;;;;
+16D66;KIRAT RAI VOWEL SIGN UE;Lo;0;L;;;;;N;;;;;
+16D67;KIRAT RAI VOWEL SIGN E;Lo;0;L;;;;;N;;;;;
+16D68;KIRAT RAI VOWEL SIGN AI;Lo;0;L;16D67 16D67;;;;N;;;;;
+16D69;KIRAT RAI VOWEL SIGN O;Lo;0;L;16D63 16D67;;;;N;;;;;
+16D6A;KIRAT RAI VOWEL SIGN AU;Lo;0;L;16D69 16D67;;;;N;;;;;
+16D6B;KIRAT RAI SIGN VIRAMA;Lm;0;L;;;;;N;;;;;
+16D6C;KIRAT RAI SIGN SAAT;Lm;0;L;;;;;N;;;;;
+16D6D;KIRAT RAI SIGN YUPI;Po;0;L;;;;;N;;;;;
+16D6E;KIRAT RAI DANDA;Po;0;L;;;;;N;;;;;
+16D6F;KIRAT RAI DOUBLE DANDA;Po;0;L;;;;;N;;;;;
+16D70;KIRAT RAI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+16D71;KIRAT RAI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+16D72;KIRAT RAI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+16D73;KIRAT RAI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+16D74;KIRAT RAI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+16D75;KIRAT RAI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+16D76;KIRAT RAI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+16D77;KIRAT RAI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+16D78;KIRAT RAI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+16D79;KIRAT RAI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
16E40;MEDEFAIDRIN CAPITAL LETTER M;Lu;0;L;;;;;N;;;;16E60;
16E41;MEDEFAIDRIN CAPITAL LETTER S;Lu;0;L;;;;;N;;;;16E61;
16E42;MEDEFAIDRIN CAPITAL LETTER V;Lu;0;L;;;;;N;;;;16E62;
@@ -27122,6 +31520,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
18CD3;KHITAN SMALL SCRIPT CHARACTER-18CD3;Lo;0;L;;;;;N;;;;;
18CD4;KHITAN SMALL SCRIPT CHARACTER-18CD4;Lo;0;L;;;;;N;;;;;
18CD5;KHITAN SMALL SCRIPT CHARACTER-18CD5;Lo;0;L;;;;;N;;;;;
+18CFF;KHITAN SMALL SCRIPT CHARACTER-18CFF;Lo;0;L;;;;;N;;;;;
18D00;<Tangut Ideograph Supplement, First>;Lo;0;L;;;;;N;;;;;
18D08;<Tangut Ideograph Supplement, Last>;Lo;0;L;;;;;N;;;;;
1AFF0;KATAKANA LETTER MINNAN TONE-2;Lm;0;L;;;;;N;;;;;
@@ -27980,6 +32379,692 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1BCA1;SHORTHAND FORMAT CONTINUING OVERLAP;Cf;0;BN;;;;;N;;;;;
1BCA2;SHORTHAND FORMAT DOWN STEP;Cf;0;BN;;;;;N;;;;;
1BCA3;SHORTHAND FORMAT UP STEP;Cf;0;BN;;;;;N;;;;;
+1CC00;UP-POINTING GO-KART;So;0;ON;;;;;N;;;;;
+1CC01;RIGHT-POINTING GO-KART;So;0;ON;;;;;N;;;;;
+1CC02;LEFT-POINTING STICK FIGURE;So;0;ON;;;;;N;;;;;
+1CC03;RIGHT-POINTING STICK FIGURE;So;0;ON;;;;;N;;;;;
+1CC04;DOWN-POINTING STICK FIGURE;So;0;ON;;;;;N;;;;;
+1CC05;LOWER HORIZONTAL RULER SEGMENT;So;0;ON;;;;;N;;;;;
+1CC06;RIGHT VERTICAL RULER SEGMENT;So;0;ON;;;;;N;;;;;
+1CC07;LOWER RIGHT RULER SEGMENT;So;0;ON;;;;;N;;;;;
+1CC08;ANTENNA;So;0;ON;;;;;N;;;;;
+1CC09;HORIZONTAL RESISTOR SEGMENT;So;0;ON;;;;;N;;;;;
+1CC0A;VERTICAL RESISTOR SEGMENT;So;0;ON;;;;;N;;;;;
+1CC0B;LEFT THIRD INDUCTOR;So;0;ON;;;;;N;;;;;
+1CC0C;MIDDLE THIRD INDUCTOR;So;0;ON;;;;;N;;;;;
+1CC0D;RIGHT THIRD INDUCTOR;So;0;ON;;;;;N;;;;;
+1CC0E;LEFT-POINTING DIODE;So;0;ON;;;;;N;;;;;
+1CC0F;RIGHT-POINTING DIODE;So;0;ON;;;;;N;;;;;
+1CC10;NPN TRANSISTOR;So;0;ON;;;;;N;;;;;
+1CC11;PNP TRANSISTOR;So;0;ON;;;;;N;;;;;
+1CC12;RECEPTACLE;So;0;ON;;;;;N;;;;;
+1CC13;HORIZONTAL CAPACITOR;So;0;ON;;;;;N;;;;;
+1CC14;VERTICAL CAPACITOR;So;0;ON;;;;;N;;;;;
+1CC15;LOGIC GATE OR;So;0;ON;;;;;N;;;;;
+1CC16;LOGIC GATE AND;So;0;ON;;;;;N;;;;;
+1CC17;LOGIC GATE INVERTED INPUTS;So;0;ON;;;;;N;;;;;
+1CC18;LOGIC GATE INVERTED OUTPUT;So;0;ON;;;;;N;;;;;
+1CC19;LOGIC GATE BUFFER;So;0;ON;;;;;N;;;;;
+1CC1A;LOGIC GATE BUFFER WITH INVERTED INPUT;So;0;ON;;;;;N;;;;;
+1CC1B;BOX DRAWINGS LIGHT HORIZONTAL AND UPPER RIGHT;So;0;ON;;;;;N;;;;;
+1CC1C;BOX DRAWINGS LIGHT HORIZONTAL AND LOWER RIGHT;So;0;ON;;;;;N;;;;;
+1CC1D;BOX DRAWINGS LIGHT TOP AND UPPER LEFT;So;0;ON;;;;;N;;;;;
+1CC1E;BOX DRAWINGS LIGHT BOTTOM AND LOWER LEFT;So;0;ON;;;;;N;;;;;
+1CC1F;BOX DRAWINGS DOUBLE DIAGONAL UPPER RIGHT TO LOWER LEFT;So;0;ON;;;;;N;;;;;
+1CC20;BOX DRAWINGS DOUBLE DIAGONAL UPPER LEFT TO LOWER RIGHT;So;0;ON;;;;;N;;;;;
+1CC21;SEPARATED BLOCK QUADRANT-1;So;0;ON;;;;;N;;;;;
+1CC22;SEPARATED BLOCK QUADRANT-2;So;0;ON;;;;;N;;;;;
+1CC23;SEPARATED BLOCK QUADRANT-12;So;0;ON;;;;;N;;;;;
+1CC24;SEPARATED BLOCK QUADRANT-3;So;0;ON;;;;;N;;;;;
+1CC25;SEPARATED BLOCK QUADRANT-13;So;0;ON;;;;;N;;;;;
+1CC26;SEPARATED BLOCK QUADRANT-23;So;0;ON;;;;;N;;;;;
+1CC27;SEPARATED BLOCK QUADRANT-123;So;0;ON;;;;;N;;;;;
+1CC28;SEPARATED BLOCK QUADRANT-4;So;0;ON;;;;;N;;;;;
+1CC29;SEPARATED BLOCK QUADRANT-14;So;0;ON;;;;;N;;;;;
+1CC2A;SEPARATED BLOCK QUADRANT-24;So;0;ON;;;;;N;;;;;
+1CC2B;SEPARATED BLOCK QUADRANT-124;So;0;ON;;;;;N;;;;;
+1CC2C;SEPARATED BLOCK QUADRANT-34;So;0;ON;;;;;N;;;;;
+1CC2D;SEPARATED BLOCK QUADRANT-134;So;0;ON;;;;;N;;;;;
+1CC2E;SEPARATED BLOCK QUADRANT-234;So;0;ON;;;;;N;;;;;
+1CC2F;SEPARATED BLOCK QUADRANT-1234;So;0;ON;;;;;N;;;;;
+1CC30;UPPER LEFT TWELFTH CIRCLE;So;0;ON;;;;;N;;;;;
+1CC31;UPPER CENTRE LEFT TWELFTH CIRCLE;So;0;ON;;;;;N;;;;;
+1CC32;UPPER CENTRE RIGHT TWELFTH CIRCLE;So;0;ON;;;;;N;;;;;
+1CC33;UPPER RIGHT TWELFTH CIRCLE;So;0;ON;;;;;N;;;;;
+1CC34;UPPER MIDDLE LEFT TWELFTH CIRCLE;So;0;ON;;;;;N;;;;;
+1CC35;UPPER LEFT QUARTER CIRCLE;So;0;ON;;;;;N;;;;;
+1CC36;UPPER RIGHT QUARTER CIRCLE;So;0;ON;;;;;N;;;;;
+1CC37;UPPER MIDDLE RIGHT TWELFTH CIRCLE;So;0;ON;;;;;N;;;;;
+1CC38;LOWER MIDDLE LEFT TWELFTH CIRCLE;So;0;ON;;;;;N;;;;;
+1CC39;LOWER LEFT QUARTER CIRCLE;So;0;ON;;;;;N;;;;;
+1CC3A;LOWER RIGHT QUARTER CIRCLE;So;0;ON;;;;;N;;;;;
+1CC3B;LOWER MIDDLE RIGHT TWELFTH CIRCLE;So;0;ON;;;;;N;;;;;
+1CC3C;LOWER LEFT TWELFTH CIRCLE;So;0;ON;;;;;N;;;;;
+1CC3D;LOWER CENTRE LEFT TWELFTH CIRCLE;So;0;ON;;;;;N;;;;;
+1CC3E;LOWER CENTRE RIGHT TWELFTH CIRCLE;So;0;ON;;;;;N;;;;;
+1CC3F;LOWER RIGHT TWELFTH CIRCLE;So;0;ON;;;;;N;;;;;
+1CC40;SPARSE HORIZONTAL FILL;So;0;ON;;;;;N;;;;;
+1CC41;SPARSE VERTICAL FILL;So;0;ON;;;;;N;;;;;
+1CC42;ORTHOGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;;
+1CC43;DIAGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;;
+1CC44;DENSE VERTICAL FILL;So;0;ON;;;;;N;;;;;
+1CC45;DENSE HORIZONTAL FILL;So;0;ON;;;;;N;;;;;
+1CC46;SPECKLE FILL FRAME-1;So;0;ON;;;;;N;;;;;
+1CC47;SPECKLE FILL FRAME-2;So;0;ON;;;;;N;;;;;
+1CC48;LEFT-FACING BASSINET;So;0;ON;;;;;N;;;;;
+1CC49;RIGHT-FACING BASSINET;So;0;ON;;;;;N;;;;;
+1CC4A;FLYING SAUCER WITH BEAMS;So;0;ON;;;;;N;;;;;
+1CC4B;FLYING SAUCER WITHOUT BEAMS;So;0;ON;;;;;N;;;;;
+1CC4C;ALIEN MONSTER OPEN JAWS;So;0;ON;;;;;N;;;;;
+1CC4D;ALIEN MONSTER CLOSED JAWS;So;0;ON;;;;;N;;;;;
+1CC4E;ALIEN SQUID OPEN TENTACLES;So;0;ON;;;;;N;;;;;
+1CC4F;ALIEN SQUID CLOSED TENTACLES;So;0;ON;;;;;N;;;;;
+1CC50;ALIEN CRAB STEPPING RIGHT;So;0;ON;;;;;N;;;;;
+1CC51;ALIEN CRAB STEPPING LEFT;So;0;ON;;;;;N;;;;;
+1CC52;ALIEN SPIDER CROUCHING;So;0;ON;;;;;N;;;;;
+1CC53;ALIEN SPIDER SPREAD;So;0;ON;;;;;N;;;;;
+1CC54;ALIEN MONSTER STEP-1;So;0;ON;;;;;N;;;;;
+1CC55;ALIEN MONSTER STEP-2;So;0;ON;;;;;N;;;;;
+1CC56;LEFT-POINTING ROCKET SHIP;So;0;ON;;;;;N;;;;;
+1CC57;UP-POINTING ROCKET SHIP;So;0;ON;;;;;N;;;;;
+1CC58;RIGHT-POINTING ROCKET SHIP;So;0;ON;;;;;N;;;;;
+1CC59;DOWN-POINTING ROCKET SHIP;So;0;ON;;;;;N;;;;;
+1CC5A;TOP HALF LEFT-FACING ROBOT;So;0;ON;;;;;N;;;;;
+1CC5B;TOP HALF FORWARD-FACING ROBOT;So;0;ON;;;;;N;;;;;
+1CC5C;TOP HALF RIGHT-FACING ROBOT;So;0;ON;;;;;N;;;;;
+1CC5D;BOTTOM HALF LEFT-FACING ROBOT;So;0;ON;;;;;N;;;;;
+1CC5E;BOTTOM HALF FORWARD-FACING ROBOT;So;0;ON;;;;;N;;;;;
+1CC5F;BOTTOM HALF RIGHT-FACING ROBOT;So;0;ON;;;;;N;;;;;
+1CC60;LEFT-POINTING ATOMIC BOMB;So;0;ON;;;;;N;;;;;
+1CC61;UP-POINTING ATOMIC BOMB;So;0;ON;;;;;N;;;;;
+1CC62;RIGHT-POINTING ATOMIC BOMB;So;0;ON;;;;;N;;;;;
+1CC63;DOWN-POINTING ATOMIC BOMB;So;0;ON;;;;;N;;;;;
+1CC64;MUSHROOM CLOUD;So;0;ON;;;;;N;;;;;
+1CC65;LEFT-POINTING RIFLE;So;0;ON;;;;;N;;;;;
+1CC66;UP-POINTING RIFLE;So;0;ON;;;;;N;;;;;
+1CC67;RIGHT-POINTING RIFLE;So;0;ON;;;;;N;;;;;
+1CC68;DOWN-POINTING RIFLE;So;0;ON;;;;;N;;;;;
+1CC69;EIGHT RAYS INWARD;So;0;ON;;;;;N;;;;;
+1CC6A;EIGHT RAYS OUTWARD;So;0;ON;;;;;N;;;;;
+1CC6B;BLACK LARGE CIRCLE MINUS LEFT QUARTER SECTION;So;0;ON;;;;;N;;;;;
+1CC6C;BLACK LARGE CIRCLE MINUS UPPER QUARTER SECTION;So;0;ON;;;;;N;;;;;
+1CC6D;BLACK LARGE CIRCLE MINUS RIGHT QUARTER SECTION;So;0;ON;;;;;N;;;;;
+1CC6E;BLACK LARGE CIRCLE MINUS LOWER QUARTER SECTION;So;0;ON;;;;;N;;;;;
+1CC6F;BLACK NEUTRAL FACE;So;0;ON;;;;;N;;;;;
+1CC70;LEFT-FACING SNAKE HEAD WITH OPEN MOUTH;So;0;ON;;;;;N;;;;;
+1CC71;UP-FACING SNAKE HEAD WITH OPEN MOUTH;So;0;ON;;;;;N;;;;;
+1CC72;RIGHT-FACING SNAKE HEAD WITH OPEN MOUTH;So;0;ON;;;;;N;;;;;
+1CC73;DOWN-FACING SNAKE HEAD WITH OPEN MOUTH;So;0;ON;;;;;N;;;;;
+1CC74;LEFT-FACING SNAKE HEAD WITH CLOSED MOUTH;So;0;ON;;;;;N;;;;;
+1CC75;UP-FACING SNAKE HEAD WITH CLOSED MOUTH;So;0;ON;;;;;N;;;;;
+1CC76;RIGHT-FACING SNAKE HEAD WITH CLOSED MOUTH;So;0;ON;;;;;N;;;;;
+1CC77;DOWN-FACING SNAKE HEAD WITH CLOSED MOUTH;So;0;ON;;;;;N;;;;;
+1CC78;LEFT-POINTING ENERGY WAVE;So;0;ON;;;;;N;;;;;
+1CC79;UP-POINTING ENERGY WAVE;So;0;ON;;;;;N;;;;;
+1CC7A;RIGHT-POINTING ENERGY WAVE;So;0;ON;;;;;N;;;;;
+1CC7B;DOWN-POINTING ENERGY WAVE;So;0;ON;;;;;N;;;;;
+1CC7C;SQUARE SPIRAL FROM TOP LEFT;So;0;ON;;;;;N;;;;;
+1CC7D;SQUARE SPIRAL FROM TOP RIGHT;So;0;ON;;;;;N;;;;;
+1CC7E;SQUARE SPIRAL FROM BOTTOM RIGHT;So;0;ON;;;;;N;;;;;
+1CC7F;SQUARE SPIRAL FROM BOTTOM LEFT;So;0;ON;;;;;N;;;;;
+1CC80;STRIPED LEFT-POINTING TRIANGLE;So;0;ON;;;;;N;;;;;
+1CC81;STRIPED UP-POINTING TRIANGLE;So;0;ON;;;;;N;;;;;
+1CC82;STRIPED RIGHT-POINTING TRIANGLE;So;0;ON;;;;;N;;;;;
+1CC83;STRIPED DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;;;;;
+1CC84;VERTICAL LADDER;So;0;ON;;;;;N;;;;;
+1CC85;HORIZONTAL LADDER;So;0;ON;;;;;N;;;;;
+1CC86;WHITE LOWER LEFT POINTER;So;0;ON;;;;;N;;;;;
+1CC87;WHITE LOWER RIGHT POINTER;So;0;ON;;;;;N;;;;;
+1CC88;TWO RINGS ALIGNED HORIZONTALLY;So;0;ON;;;;;N;;;;;
+1CC89;SQUARE FOUR CORNER SALTIRES;So;0;ON;;;;;N;;;;;
+1CC8A;SQUARE FOUR CORNER DIAGONALS;So;0;ON;;;;;N;;;;;
+1CC8B;SQUARE FOUR CORNER BLACK TRIANGLES;So;0;ON;;;;;N;;;;;
+1CC8C;SQUARE APERTURE;So;0;ON;;;;;N;;;;;
+1CC8D;INVERSE BLACK DIAMOND;So;0;ON;;;;;N;;;;;
+1CC8E;LEFT AND UPPER ONE EIGHTH BLOCK CONTAINING BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;;
+1CC8F;INVERSE BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;;
+1CC90;VERTICAL LINE WITH FOUR TICK MARKS;So;0;ON;;;;;N;;;;;
+1CC91;HORIZONTAL LINE WITH FOUR TICK MARKS;So;0;ON;;;;;N;;;;;
+1CC92;LEFT-FACING FISH;So;0;ON;;;;;N;;;;;
+1CC93;RIGHT-FACING FISH;So;0;ON;;;;;N;;;;;
+1CC94;LEFT-FACING FISH WITH OPEN MOUTH;So;0;ON;;;;;N;;;;;
+1CC95;RIGHT-FACING FISH WITH OPEN MOUTH;So;0;ON;;;;;N;;;;;
+1CC96;FLAPPING BIRD;So;0;ON;;;;;N;;;;;
+1CC97;LEFT-POINTING RACING CAR;So;0;ON;;;;;N;;;;;
+1CC98;UP-POINTING RACING CAR;So;0;ON;;;;;N;;;;;
+1CC99;RIGHT-POINTING RACING CAR;So;0;ON;;;;;N;;;;;
+1CC9A;DOWN-POINTING RACING CAR;So;0;ON;;;;;N;;;;;
+1CC9B;HORIZONTAL RACING CAR;So;0;ON;;;;;N;;;;;
+1CC9C;VERTICAL RACING CAR;So;0;ON;;;;;N;;;;;
+1CC9D;VERTICAL GO-KART;So;0;ON;;;;;N;;;;;
+1CC9E;LEFT-POINTING TANK;So;0;ON;;;;;N;;;;;
+1CC9F;RIGHT-POINTING TANK;So;0;ON;;;;;N;;;;;
+1CCA0;LEFT-POINTING ROCKET BOOSTER;So;0;ON;;;;;N;;;;;
+1CCA1;RIGHT-POINTING ROCKET BOOSTER;So;0;ON;;;;;N;;;;;
+1CCA2;LEFT-POINTING ROLLER COASTER CAR;So;0;ON;;;;;N;;;;;
+1CCA3;RIGHT-POINTING ROLLER COASTER CAR;So;0;ON;;;;;N;;;;;
+1CCA4;LEFT HALF FLYING SAUCER;So;0;ON;;;;;N;;;;;
+1CCA5;RIGHT HALF FLYING SAUCER;So;0;ON;;;;;N;;;;;
+1CCA6;UPPER LEFT QUADRANT FACE WITH OPEN EYES;So;0;ON;;;;;N;;;;;
+1CCA7;UPPER RIGHT QUADRANT FACE WITH OPEN EYES;So;0;ON;;;;;N;;;;;
+1CCA8;UPPER LEFT QUADRANT FACE WITH CLOSED EYES;So;0;ON;;;;;N;;;;;
+1CCA9;UPPER RIGHT QUADRANT FACE WITH CLOSED EYES;So;0;ON;;;;;N;;;;;
+1CCAA;LOWER LEFT QUADRANT SMILING FACE;So;0;ON;;;;;N;;;;;
+1CCAB;LOWER RIGHT QUADRANT SMILING FACE;So;0;ON;;;;;N;;;;;
+1CCAC;LOWER LEFT QUADRANT NEUTRAL FACE;So;0;ON;;;;;N;;;;;
+1CCAD;LOWER RIGHT QUADRANT NEUTRAL FACE;So;0;ON;;;;;N;;;;;
+1CCAE;LOWER LEFT QUADRANT FACE WITH OPEN MOUTH;So;0;ON;;;;;N;;;;;
+1CCAF;LOWER RIGHT QUADRANT FACE WITH OPEN MOUTH;So;0;ON;;;;;N;;;;;
+1CCB0;LOWER LEFT QUADRANT FROWNING FACE;So;0;ON;;;;;N;;;;;
+1CCB1;LOWER RIGHT QUADRANT FROWNING FACE;So;0;ON;;;;;N;;;;;
+1CCB2;UPPER LEFT QUADRANT TELEVISION;So;0;ON;;;;;N;;;;;
+1CCB3;UPPER RIGHT QUADRANT TELEVISION;So;0;ON;;;;;N;;;;;
+1CCB4;LOWER LEFT QUADRANT TELEVISION;So;0;ON;;;;;N;;;;;
+1CCB5;LOWER RIGHT QUADRANT TELEVISION;So;0;ON;;;;;N;;;;;
+1CCB6;UPPER LEFT QUADRANT MICROCOMPUTER;So;0;ON;;;;;N;;;;;
+1CCB7;UPPER RIGHT QUADRANT MICROCOMPUTER;So;0;ON;;;;;N;;;;;
+1CCB8;LOWER LEFT QUADRANT MICROCOMPUTER;So;0;ON;;;;;N;;;;;
+1CCB9;LOWER RIGHT QUADRANT MICROCOMPUTER;So;0;ON;;;;;N;;;;;
+1CCBA;UPPER LEFT QUADRANT CHESS KING;So;0;ON;;;;;N;;;;;
+1CCBB;UPPER RIGHT QUADRANT CHESS KING;So;0;ON;;;;;N;;;;;
+1CCBC;LOWER LEFT QUADRANT CHESS KING;So;0;ON;;;;;N;;;;;
+1CCBD;LOWER RIGHT QUADRANT CHESS KING;So;0;ON;;;;;N;;;;;
+1CCBE;UPPER LEFT QUADRANT CHESS QUEEN;So;0;ON;;;;;N;;;;;
+1CCBF;UPPER RIGHT QUADRANT CHESS QUEEN;So;0;ON;;;;;N;;;;;
+1CCC0;LOWER LEFT QUADRANT CHESS QUEEN;So;0;ON;;;;;N;;;;;
+1CCC1;LOWER RIGHT QUADRANT CHESS QUEEN;So;0;ON;;;;;N;;;;;
+1CCC2;UPPER LEFT QUADRANT CHESS ROOK;So;0;ON;;;;;N;;;;;
+1CCC3;UPPER RIGHT QUADRANT CHESS ROOK;So;0;ON;;;;;N;;;;;
+1CCC4;LOWER LEFT QUADRANT CHESS ROOK;So;0;ON;;;;;N;;;;;
+1CCC5;LOWER RIGHT QUADRANT CHESS ROOK;So;0;ON;;;;;N;;;;;
+1CCC6;UPPER LEFT QUADRANT CHESS BISHOP;So;0;ON;;;;;N;;;;;
+1CCC7;UPPER RIGHT QUADRANT CHESS BISHOP;So;0;ON;;;;;N;;;;;
+1CCC8;LOWER LEFT QUADRANT CHESS BISHOP;So;0;ON;;;;;N;;;;;
+1CCC9;LOWER RIGHT QUADRANT CHESS BISHOP;So;0;ON;;;;;N;;;;;
+1CCCA;UPPER LEFT QUADRANT CHESS KNIGHT;So;0;ON;;;;;N;;;;;
+1CCCB;UPPER RIGHT QUADRANT CHESS KNIGHT;So;0;ON;;;;;N;;;;;
+1CCCC;LOWER LEFT QUADRANT CHESS KNIGHT;So;0;ON;;;;;N;;;;;
+1CCCD;LOWER RIGHT QUADRANT CHESS KNIGHT;So;0;ON;;;;;N;;;;;
+1CCCE;UPPER LEFT QUADRANT CHESS PAWN;So;0;ON;;;;;N;;;;;
+1CCCF;UPPER RIGHT QUADRANT CHESS PAWN;So;0;ON;;;;;N;;;;;
+1CCD0;LOWER LEFT QUADRANT CHESS PAWN;So;0;ON;;;;;N;;;;;
+1CCD1;LOWER RIGHT QUADRANT CHESS PAWN;So;0;ON;;;;;N;;;;;
+1CCD2;UPPER LEFT QUADRANT STANDING KNIGHT;So;0;ON;;;;;N;;;;;
+1CCD3;UPPER RIGHT QUADRANT STANDING KNIGHT;So;0;ON;;;;;N;;;;;
+1CCD4;LOWER LEFT QUADRANT STANDING KNIGHT;So;0;ON;;;;;N;;;;;
+1CCD5;LOWER RIGHT QUADRANT STANDING KNIGHT;So;0;ON;;;;;N;;;;;
+1CCD6;OUTLINED LATIN CAPITAL LETTER A;So;0;L;<font> 0041;;;;N;;;;;
+1CCD7;OUTLINED LATIN CAPITAL LETTER B;So;0;L;<font> 0042;;;;N;;;;;
+1CCD8;OUTLINED LATIN CAPITAL LETTER C;So;0;L;<font> 0043;;;;N;;;;;
+1CCD9;OUTLINED LATIN CAPITAL LETTER D;So;0;L;<font> 0044;;;;N;;;;;
+1CCDA;OUTLINED LATIN CAPITAL LETTER E;So;0;L;<font> 0045;;;;N;;;;;
+1CCDB;OUTLINED LATIN CAPITAL LETTER F;So;0;L;<font> 0046;;;;N;;;;;
+1CCDC;OUTLINED LATIN CAPITAL LETTER G;So;0;L;<font> 0047;;;;N;;;;;
+1CCDD;OUTLINED LATIN CAPITAL LETTER H;So;0;L;<font> 0048;;;;N;;;;;
+1CCDE;OUTLINED LATIN CAPITAL LETTER I;So;0;L;<font> 0049;;;;N;;;;;
+1CCDF;OUTLINED LATIN CAPITAL LETTER J;So;0;L;<font> 004A;;;;N;;;;;
+1CCE0;OUTLINED LATIN CAPITAL LETTER K;So;0;L;<font> 004B;;;;N;;;;;
+1CCE1;OUTLINED LATIN CAPITAL LETTER L;So;0;L;<font> 004C;;;;N;;;;;
+1CCE2;OUTLINED LATIN CAPITAL LETTER M;So;0;L;<font> 004D;;;;N;;;;;
+1CCE3;OUTLINED LATIN CAPITAL LETTER N;So;0;L;<font> 004E;;;;N;;;;;
+1CCE4;OUTLINED LATIN CAPITAL LETTER O;So;0;L;<font> 004F;;;;N;;;;;
+1CCE5;OUTLINED LATIN CAPITAL LETTER P;So;0;L;<font> 0050;;;;N;;;;;
+1CCE6;OUTLINED LATIN CAPITAL LETTER Q;So;0;L;<font> 0051;;;;N;;;;;
+1CCE7;OUTLINED LATIN CAPITAL LETTER R;So;0;L;<font> 0052;;;;N;;;;;
+1CCE8;OUTLINED LATIN CAPITAL LETTER S;So;0;L;<font> 0053;;;;N;;;;;
+1CCE9;OUTLINED LATIN CAPITAL LETTER T;So;0;L;<font> 0054;;;;N;;;;;
+1CCEA;OUTLINED LATIN CAPITAL LETTER U;So;0;L;<font> 0055;;;;N;;;;;
+1CCEB;OUTLINED LATIN CAPITAL LETTER V;So;0;L;<font> 0056;;;;N;;;;;
+1CCEC;OUTLINED LATIN CAPITAL LETTER W;So;0;L;<font> 0057;;;;N;;;;;
+1CCED;OUTLINED LATIN CAPITAL LETTER X;So;0;L;<font> 0058;;;;N;;;;;
+1CCEE;OUTLINED LATIN CAPITAL LETTER Y;So;0;L;<font> 0059;;;;N;;;;;
+1CCEF;OUTLINED LATIN CAPITAL LETTER Z;So;0;L;<font> 005A;;;;N;;;;;
+1CCF0;OUTLINED DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;
+1CCF1;OUTLINED DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;
+1CCF2;OUTLINED DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;
+1CCF3;OUTLINED DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;
+1CCF4;OUTLINED DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;
+1CCF5;OUTLINED DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;
+1CCF6;OUTLINED DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;
+1CCF7;OUTLINED DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;
+1CCF8;OUTLINED DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;
+1CCF9;OUTLINED DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;
+1CD00;BLOCK OCTANT-3;So;0;ON;;;;;N;;;;;
+1CD01;BLOCK OCTANT-23;So;0;ON;;;;;N;;;;;
+1CD02;BLOCK OCTANT-123;So;0;ON;;;;;N;;;;;
+1CD03;BLOCK OCTANT-4;So;0;ON;;;;;N;;;;;
+1CD04;BLOCK OCTANT-14;So;0;ON;;;;;N;;;;;
+1CD05;BLOCK OCTANT-124;So;0;ON;;;;;N;;;;;
+1CD06;BLOCK OCTANT-34;So;0;ON;;;;;N;;;;;
+1CD07;BLOCK OCTANT-134;So;0;ON;;;;;N;;;;;
+1CD08;BLOCK OCTANT-234;So;0;ON;;;;;N;;;;;
+1CD09;BLOCK OCTANT-5;So;0;ON;;;;;N;;;;;
+1CD0A;BLOCK OCTANT-15;So;0;ON;;;;;N;;;;;
+1CD0B;BLOCK OCTANT-25;So;0;ON;;;;;N;;;;;
+1CD0C;BLOCK OCTANT-125;So;0;ON;;;;;N;;;;;
+1CD0D;BLOCK OCTANT-135;So;0;ON;;;;;N;;;;;
+1CD0E;BLOCK OCTANT-235;So;0;ON;;;;;N;;;;;
+1CD0F;BLOCK OCTANT-1235;So;0;ON;;;;;N;;;;;
+1CD10;BLOCK OCTANT-45;So;0;ON;;;;;N;;;;;
+1CD11;BLOCK OCTANT-145;So;0;ON;;;;;N;;;;;
+1CD12;BLOCK OCTANT-245;So;0;ON;;;;;N;;;;;
+1CD13;BLOCK OCTANT-1245;So;0;ON;;;;;N;;;;;
+1CD14;BLOCK OCTANT-345;So;0;ON;;;;;N;;;;;
+1CD15;BLOCK OCTANT-1345;So;0;ON;;;;;N;;;;;
+1CD16;BLOCK OCTANT-2345;So;0;ON;;;;;N;;;;;
+1CD17;BLOCK OCTANT-12345;So;0;ON;;;;;N;;;;;
+1CD18;BLOCK OCTANT-6;So;0;ON;;;;;N;;;;;
+1CD19;BLOCK OCTANT-16;So;0;ON;;;;;N;;;;;
+1CD1A;BLOCK OCTANT-26;So;0;ON;;;;;N;;;;;
+1CD1B;BLOCK OCTANT-126;So;0;ON;;;;;N;;;;;
+1CD1C;BLOCK OCTANT-36;So;0;ON;;;;;N;;;;;
+1CD1D;BLOCK OCTANT-136;So;0;ON;;;;;N;;;;;
+1CD1E;BLOCK OCTANT-236;So;0;ON;;;;;N;;;;;
+1CD1F;BLOCK OCTANT-1236;So;0;ON;;;;;N;;;;;
+1CD20;BLOCK OCTANT-146;So;0;ON;;;;;N;;;;;
+1CD21;BLOCK OCTANT-246;So;0;ON;;;;;N;;;;;
+1CD22;BLOCK OCTANT-1246;So;0;ON;;;;;N;;;;;
+1CD23;BLOCK OCTANT-346;So;0;ON;;;;;N;;;;;
+1CD24;BLOCK OCTANT-1346;So;0;ON;;;;;N;;;;;
+1CD25;BLOCK OCTANT-2346;So;0;ON;;;;;N;;;;;
+1CD26;BLOCK OCTANT-12346;So;0;ON;;;;;N;;;;;
+1CD27;BLOCK OCTANT-56;So;0;ON;;;;;N;;;;;
+1CD28;BLOCK OCTANT-156;So;0;ON;;;;;N;;;;;
+1CD29;BLOCK OCTANT-256;So;0;ON;;;;;N;;;;;
+1CD2A;BLOCK OCTANT-1256;So;0;ON;;;;;N;;;;;
+1CD2B;BLOCK OCTANT-356;So;0;ON;;;;;N;;;;;
+1CD2C;BLOCK OCTANT-1356;So;0;ON;;;;;N;;;;;
+1CD2D;BLOCK OCTANT-2356;So;0;ON;;;;;N;;;;;
+1CD2E;BLOCK OCTANT-12356;So;0;ON;;;;;N;;;;;
+1CD2F;BLOCK OCTANT-456;So;0;ON;;;;;N;;;;;
+1CD30;BLOCK OCTANT-1456;So;0;ON;;;;;N;;;;;
+1CD31;BLOCK OCTANT-2456;So;0;ON;;;;;N;;;;;
+1CD32;BLOCK OCTANT-12456;So;0;ON;;;;;N;;;;;
+1CD33;BLOCK OCTANT-3456;So;0;ON;;;;;N;;;;;
+1CD34;BLOCK OCTANT-13456;So;0;ON;;;;;N;;;;;
+1CD35;BLOCK OCTANT-23456;So;0;ON;;;;;N;;;;;
+1CD36;BLOCK OCTANT-17;So;0;ON;;;;;N;;;;;
+1CD37;BLOCK OCTANT-27;So;0;ON;;;;;N;;;;;
+1CD38;BLOCK OCTANT-127;So;0;ON;;;;;N;;;;;
+1CD39;BLOCK OCTANT-37;So;0;ON;;;;;N;;;;;
+1CD3A;BLOCK OCTANT-137;So;0;ON;;;;;N;;;;;
+1CD3B;BLOCK OCTANT-237;So;0;ON;;;;;N;;;;;
+1CD3C;BLOCK OCTANT-1237;So;0;ON;;;;;N;;;;;
+1CD3D;BLOCK OCTANT-47;So;0;ON;;;;;N;;;;;
+1CD3E;BLOCK OCTANT-147;So;0;ON;;;;;N;;;;;
+1CD3F;BLOCK OCTANT-247;So;0;ON;;;;;N;;;;;
+1CD40;BLOCK OCTANT-1247;So;0;ON;;;;;N;;;;;
+1CD41;BLOCK OCTANT-347;So;0;ON;;;;;N;;;;;
+1CD42;BLOCK OCTANT-1347;So;0;ON;;;;;N;;;;;
+1CD43;BLOCK OCTANT-2347;So;0;ON;;;;;N;;;;;
+1CD44;BLOCK OCTANT-12347;So;0;ON;;;;;N;;;;;
+1CD45;BLOCK OCTANT-157;So;0;ON;;;;;N;;;;;
+1CD46;BLOCK OCTANT-257;So;0;ON;;;;;N;;;;;
+1CD47;BLOCK OCTANT-1257;So;0;ON;;;;;N;;;;;
+1CD48;BLOCK OCTANT-357;So;0;ON;;;;;N;;;;;
+1CD49;BLOCK OCTANT-2357;So;0;ON;;;;;N;;;;;
+1CD4A;BLOCK OCTANT-12357;So;0;ON;;;;;N;;;;;
+1CD4B;BLOCK OCTANT-457;So;0;ON;;;;;N;;;;;
+1CD4C;BLOCK OCTANT-1457;So;0;ON;;;;;N;;;;;
+1CD4D;BLOCK OCTANT-12457;So;0;ON;;;;;N;;;;;
+1CD4E;BLOCK OCTANT-3457;So;0;ON;;;;;N;;;;;
+1CD4F;BLOCK OCTANT-13457;So;0;ON;;;;;N;;;;;
+1CD50;BLOCK OCTANT-23457;So;0;ON;;;;;N;;;;;
+1CD51;BLOCK OCTANT-67;So;0;ON;;;;;N;;;;;
+1CD52;BLOCK OCTANT-167;So;0;ON;;;;;N;;;;;
+1CD53;BLOCK OCTANT-267;So;0;ON;;;;;N;;;;;
+1CD54;BLOCK OCTANT-1267;So;0;ON;;;;;N;;;;;
+1CD55;BLOCK OCTANT-367;So;0;ON;;;;;N;;;;;
+1CD56;BLOCK OCTANT-1367;So;0;ON;;;;;N;;;;;
+1CD57;BLOCK OCTANT-2367;So;0;ON;;;;;N;;;;;
+1CD58;BLOCK OCTANT-12367;So;0;ON;;;;;N;;;;;
+1CD59;BLOCK OCTANT-467;So;0;ON;;;;;N;;;;;
+1CD5A;BLOCK OCTANT-1467;So;0;ON;;;;;N;;;;;
+1CD5B;BLOCK OCTANT-2467;So;0;ON;;;;;N;;;;;
+1CD5C;BLOCK OCTANT-12467;So;0;ON;;;;;N;;;;;
+1CD5D;BLOCK OCTANT-3467;So;0;ON;;;;;N;;;;;
+1CD5E;BLOCK OCTANT-13467;So;0;ON;;;;;N;;;;;
+1CD5F;BLOCK OCTANT-23467;So;0;ON;;;;;N;;;;;
+1CD60;BLOCK OCTANT-123467;So;0;ON;;;;;N;;;;;
+1CD61;BLOCK OCTANT-567;So;0;ON;;;;;N;;;;;
+1CD62;BLOCK OCTANT-1567;So;0;ON;;;;;N;;;;;
+1CD63;BLOCK OCTANT-2567;So;0;ON;;;;;N;;;;;
+1CD64;BLOCK OCTANT-12567;So;0;ON;;;;;N;;;;;
+1CD65;BLOCK OCTANT-3567;So;0;ON;;;;;N;;;;;
+1CD66;BLOCK OCTANT-13567;So;0;ON;;;;;N;;;;;
+1CD67;BLOCK OCTANT-23567;So;0;ON;;;;;N;;;;;
+1CD68;BLOCK OCTANT-123567;So;0;ON;;;;;N;;;;;
+1CD69;BLOCK OCTANT-4567;So;0;ON;;;;;N;;;;;
+1CD6A;BLOCK OCTANT-14567;So;0;ON;;;;;N;;;;;
+1CD6B;BLOCK OCTANT-24567;So;0;ON;;;;;N;;;;;
+1CD6C;BLOCK OCTANT-124567;So;0;ON;;;;;N;;;;;
+1CD6D;BLOCK OCTANT-34567;So;0;ON;;;;;N;;;;;
+1CD6E;BLOCK OCTANT-134567;So;0;ON;;;;;N;;;;;
+1CD6F;BLOCK OCTANT-234567;So;0;ON;;;;;N;;;;;
+1CD70;BLOCK OCTANT-1234567;So;0;ON;;;;;N;;;;;
+1CD71;BLOCK OCTANT-18;So;0;ON;;;;;N;;;;;
+1CD72;BLOCK OCTANT-28;So;0;ON;;;;;N;;;;;
+1CD73;BLOCK OCTANT-128;So;0;ON;;;;;N;;;;;
+1CD74;BLOCK OCTANT-38;So;0;ON;;;;;N;;;;;
+1CD75;BLOCK OCTANT-138;So;0;ON;;;;;N;;;;;
+1CD76;BLOCK OCTANT-238;So;0;ON;;;;;N;;;;;
+1CD77;BLOCK OCTANT-1238;So;0;ON;;;;;N;;;;;
+1CD78;BLOCK OCTANT-48;So;0;ON;;;;;N;;;;;
+1CD79;BLOCK OCTANT-148;So;0;ON;;;;;N;;;;;
+1CD7A;BLOCK OCTANT-248;So;0;ON;;;;;N;;;;;
+1CD7B;BLOCK OCTANT-1248;So;0;ON;;;;;N;;;;;
+1CD7C;BLOCK OCTANT-348;So;0;ON;;;;;N;;;;;
+1CD7D;BLOCK OCTANT-1348;So;0;ON;;;;;N;;;;;
+1CD7E;BLOCK OCTANT-2348;So;0;ON;;;;;N;;;;;
+1CD7F;BLOCK OCTANT-12348;So;0;ON;;;;;N;;;;;
+1CD80;BLOCK OCTANT-58;So;0;ON;;;;;N;;;;;
+1CD81;BLOCK OCTANT-158;So;0;ON;;;;;N;;;;;
+1CD82;BLOCK OCTANT-258;So;0;ON;;;;;N;;;;;
+1CD83;BLOCK OCTANT-1258;So;0;ON;;;;;N;;;;;
+1CD84;BLOCK OCTANT-358;So;0;ON;;;;;N;;;;;
+1CD85;BLOCK OCTANT-1358;So;0;ON;;;;;N;;;;;
+1CD86;BLOCK OCTANT-2358;So;0;ON;;;;;N;;;;;
+1CD87;BLOCK OCTANT-12358;So;0;ON;;;;;N;;;;;
+1CD88;BLOCK OCTANT-458;So;0;ON;;;;;N;;;;;
+1CD89;BLOCK OCTANT-1458;So;0;ON;;;;;N;;;;;
+1CD8A;BLOCK OCTANT-2458;So;0;ON;;;;;N;;;;;
+1CD8B;BLOCK OCTANT-12458;So;0;ON;;;;;N;;;;;
+1CD8C;BLOCK OCTANT-3458;So;0;ON;;;;;N;;;;;
+1CD8D;BLOCK OCTANT-13458;So;0;ON;;;;;N;;;;;
+1CD8E;BLOCK OCTANT-23458;So;0;ON;;;;;N;;;;;
+1CD8F;BLOCK OCTANT-123458;So;0;ON;;;;;N;;;;;
+1CD90;BLOCK OCTANT-168;So;0;ON;;;;;N;;;;;
+1CD91;BLOCK OCTANT-268;So;0;ON;;;;;N;;;;;
+1CD92;BLOCK OCTANT-1268;So;0;ON;;;;;N;;;;;
+1CD93;BLOCK OCTANT-368;So;0;ON;;;;;N;;;;;
+1CD94;BLOCK OCTANT-2368;So;0;ON;;;;;N;;;;;
+1CD95;BLOCK OCTANT-12368;So;0;ON;;;;;N;;;;;
+1CD96;BLOCK OCTANT-468;So;0;ON;;;;;N;;;;;
+1CD97;BLOCK OCTANT-1468;So;0;ON;;;;;N;;;;;
+1CD98;BLOCK OCTANT-12468;So;0;ON;;;;;N;;;;;
+1CD99;BLOCK OCTANT-3468;So;0;ON;;;;;N;;;;;
+1CD9A;BLOCK OCTANT-13468;So;0;ON;;;;;N;;;;;
+1CD9B;BLOCK OCTANT-23468;So;0;ON;;;;;N;;;;;
+1CD9C;BLOCK OCTANT-568;So;0;ON;;;;;N;;;;;
+1CD9D;BLOCK OCTANT-1568;So;0;ON;;;;;N;;;;;
+1CD9E;BLOCK OCTANT-2568;So;0;ON;;;;;N;;;;;
+1CD9F;BLOCK OCTANT-12568;So;0;ON;;;;;N;;;;;
+1CDA0;BLOCK OCTANT-3568;So;0;ON;;;;;N;;;;;
+1CDA1;BLOCK OCTANT-13568;So;0;ON;;;;;N;;;;;
+1CDA2;BLOCK OCTANT-23568;So;0;ON;;;;;N;;;;;
+1CDA3;BLOCK OCTANT-123568;So;0;ON;;;;;N;;;;;
+1CDA4;BLOCK OCTANT-4568;So;0;ON;;;;;N;;;;;
+1CDA5;BLOCK OCTANT-14568;So;0;ON;;;;;N;;;;;
+1CDA6;BLOCK OCTANT-24568;So;0;ON;;;;;N;;;;;
+1CDA7;BLOCK OCTANT-124568;So;0;ON;;;;;N;;;;;
+1CDA8;BLOCK OCTANT-34568;So;0;ON;;;;;N;;;;;
+1CDA9;BLOCK OCTANT-134568;So;0;ON;;;;;N;;;;;
+1CDAA;BLOCK OCTANT-234568;So;0;ON;;;;;N;;;;;
+1CDAB;BLOCK OCTANT-1234568;So;0;ON;;;;;N;;;;;
+1CDAC;BLOCK OCTANT-178;So;0;ON;;;;;N;;;;;
+1CDAD;BLOCK OCTANT-278;So;0;ON;;;;;N;;;;;
+1CDAE;BLOCK OCTANT-1278;So;0;ON;;;;;N;;;;;
+1CDAF;BLOCK OCTANT-378;So;0;ON;;;;;N;;;;;
+1CDB0;BLOCK OCTANT-1378;So;0;ON;;;;;N;;;;;
+1CDB1;BLOCK OCTANT-2378;So;0;ON;;;;;N;;;;;
+1CDB2;BLOCK OCTANT-12378;So;0;ON;;;;;N;;;;;
+1CDB3;BLOCK OCTANT-478;So;0;ON;;;;;N;;;;;
+1CDB4;BLOCK OCTANT-1478;So;0;ON;;;;;N;;;;;
+1CDB5;BLOCK OCTANT-2478;So;0;ON;;;;;N;;;;;
+1CDB6;BLOCK OCTANT-12478;So;0;ON;;;;;N;;;;;
+1CDB7;BLOCK OCTANT-3478;So;0;ON;;;;;N;;;;;
+1CDB8;BLOCK OCTANT-13478;So;0;ON;;;;;N;;;;;
+1CDB9;BLOCK OCTANT-23478;So;0;ON;;;;;N;;;;;
+1CDBA;BLOCK OCTANT-123478;So;0;ON;;;;;N;;;;;
+1CDBB;BLOCK OCTANT-578;So;0;ON;;;;;N;;;;;
+1CDBC;BLOCK OCTANT-1578;So;0;ON;;;;;N;;;;;
+1CDBD;BLOCK OCTANT-2578;So;0;ON;;;;;N;;;;;
+1CDBE;BLOCK OCTANT-12578;So;0;ON;;;;;N;;;;;
+1CDBF;BLOCK OCTANT-3578;So;0;ON;;;;;N;;;;;
+1CDC0;BLOCK OCTANT-13578;So;0;ON;;;;;N;;;;;
+1CDC1;BLOCK OCTANT-23578;So;0;ON;;;;;N;;;;;
+1CDC2;BLOCK OCTANT-123578;So;0;ON;;;;;N;;;;;
+1CDC3;BLOCK OCTANT-4578;So;0;ON;;;;;N;;;;;
+1CDC4;BLOCK OCTANT-14578;So;0;ON;;;;;N;;;;;
+1CDC5;BLOCK OCTANT-24578;So;0;ON;;;;;N;;;;;
+1CDC6;BLOCK OCTANT-124578;So;0;ON;;;;;N;;;;;
+1CDC7;BLOCK OCTANT-34578;So;0;ON;;;;;N;;;;;
+1CDC8;BLOCK OCTANT-134578;So;0;ON;;;;;N;;;;;
+1CDC9;BLOCK OCTANT-234578;So;0;ON;;;;;N;;;;;
+1CDCA;BLOCK OCTANT-1234578;So;0;ON;;;;;N;;;;;
+1CDCB;BLOCK OCTANT-678;So;0;ON;;;;;N;;;;;
+1CDCC;BLOCK OCTANT-1678;So;0;ON;;;;;N;;;;;
+1CDCD;BLOCK OCTANT-2678;So;0;ON;;;;;N;;;;;
+1CDCE;BLOCK OCTANT-12678;So;0;ON;;;;;N;;;;;
+1CDCF;BLOCK OCTANT-3678;So;0;ON;;;;;N;;;;;
+1CDD0;BLOCK OCTANT-13678;So;0;ON;;;;;N;;;;;
+1CDD1;BLOCK OCTANT-23678;So;0;ON;;;;;N;;;;;
+1CDD2;BLOCK OCTANT-123678;So;0;ON;;;;;N;;;;;
+1CDD3;BLOCK OCTANT-4678;So;0;ON;;;;;N;;;;;
+1CDD4;BLOCK OCTANT-14678;So;0;ON;;;;;N;;;;;
+1CDD5;BLOCK OCTANT-24678;So;0;ON;;;;;N;;;;;
+1CDD6;BLOCK OCTANT-124678;So;0;ON;;;;;N;;;;;
+1CDD7;BLOCK OCTANT-34678;So;0;ON;;;;;N;;;;;
+1CDD8;BLOCK OCTANT-134678;So;0;ON;;;;;N;;;;;
+1CDD9;BLOCK OCTANT-234678;So;0;ON;;;;;N;;;;;
+1CDDA;BLOCK OCTANT-1234678;So;0;ON;;;;;N;;;;;
+1CDDB;BLOCK OCTANT-15678;So;0;ON;;;;;N;;;;;
+1CDDC;BLOCK OCTANT-25678;So;0;ON;;;;;N;;;;;
+1CDDD;BLOCK OCTANT-125678;So;0;ON;;;;;N;;;;;
+1CDDE;BLOCK OCTANT-35678;So;0;ON;;;;;N;;;;;
+1CDDF;BLOCK OCTANT-235678;So;0;ON;;;;;N;;;;;
+1CDE0;BLOCK OCTANT-1235678;So;0;ON;;;;;N;;;;;
+1CDE1;BLOCK OCTANT-45678;So;0;ON;;;;;N;;;;;
+1CDE2;BLOCK OCTANT-145678;So;0;ON;;;;;N;;;;;
+1CDE3;BLOCK OCTANT-1245678;So;0;ON;;;;;N;;;;;
+1CDE4;BLOCK OCTANT-1345678;So;0;ON;;;;;N;;;;;
+1CDE5;BLOCK OCTANT-2345678;So;0;ON;;;;;N;;;;;
+1CDE6;TOP HALF STANDING PERSON;So;0;ON;;;;;N;;;;;
+1CDE7;BOTTOM HALF STANDING PERSON;So;0;ON;;;;;N;;;;;
+1CDE8;TOP HALF RIGHT-FACING RUNNER FRAME-1;So;0;ON;;;;;N;;;;;
+1CDE9;BOTTOM HALF RIGHT-FACING RUNNER FRAME-1;So;0;ON;;;;;N;;;;;
+1CDEA;TOP HALF RIGHT-FACING RUNNER FRAME-2;So;0;ON;;;;;N;;;;;
+1CDEB;BOTTOM HALF RIGHT-FACING RUNNER FRAME-2;So;0;ON;;;;;N;;;;;
+1CDEC;TOP HALF LEFT-FACING RUNNER FRAME-1;So;0;ON;;;;;N;;;;;
+1CDED;BOTTOM HALF LEFT-FACING RUNNER FRAME-1;So;0;ON;;;;;N;;;;;
+1CDEE;TOP HALF LEFT-FACING RUNNER FRAME-2;So;0;ON;;;;;N;;;;;
+1CDEF;BOTTOM HALF LEFT-FACING RUNNER FRAME-2;So;0;ON;;;;;N;;;;;
+1CDF0;TOP HALF FORWARD-FACING RUNNER;So;0;ON;;;;;N;;;;;
+1CDF1;BOTTOM HALF FORWARD-FACING RUNNER FRAME-1;So;0;ON;;;;;N;;;;;
+1CDF2;BOTTOM HALF FORWARD-FACING RUNNER FRAME-2;So;0;ON;;;;;N;;;;;
+1CDF3;BOTTOM HALF FORWARD-FACING RUNNER FRAME-3;So;0;ON;;;;;N;;;;;
+1CDF4;BOTTOM HALF FORWARD-FACING RUNNER FRAME-4;So;0;ON;;;;;N;;;;;
+1CDF5;MOON LANDER;So;0;ON;;;;;N;;;;;
+1CDF6;TOP HALF FLAILING ROBOT FRAME-1;So;0;ON;;;;;N;;;;;
+1CDF7;TOP HALF FLAILING ROBOT FRAME-2;So;0;ON;;;;;N;;;;;
+1CDF8;DOWN-POINTING AIRPLANE;So;0;ON;;;;;N;;;;;
+1CDF9;LEFT-POINTING AIRPLANE;So;0;ON;;;;;N;;;;;
+1CDFA;SMALL UP-POINTING AIRPLANE;So;0;ON;;;;;N;;;;;
+1CDFB;UP-POINTING FROG;So;0;ON;;;;;N;;;;;
+1CDFC;DOWN-POINTING FROG;So;0;ON;;;;;N;;;;;
+1CDFD;EXPLOSION FRAME-1;So;0;ON;;;;;N;;;;;
+1CDFE;EXPLOSION FRAME-2;So;0;ON;;;;;N;;;;;
+1CDFF;EXPLOSION FRAME-3;So;0;ON;;;;;N;;;;;
+1CE00;RIGHT HALF AND LEFT HALF WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+1CE01;LOWER HALF AND UPPER HALF WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+1CE02;EXPLOSION AT HORIZON;So;0;ON;;;;;N;;;;;
+1CE03;UPPER HALF HEAVY WHITE SQUARE;So;0;ON;;;;;N;;;;;
+1CE04;LOWER HALF HEAVY WHITE SQUARE;So;0;ON;;;;;N;;;;;
+1CE05;HEAVY WHITE SQUARE CONTAINING BLACK VERY SMALL SQUARE;So;0;ON;;;;;N;;;;;
+1CE06;WHITE VERTICAL RECTANGLE WITH HORIZONTAL BAR;So;0;ON;;;;;N;;;;;
+1CE07;TOP LEFT BLACK LEFT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;;;;;
+1CE08;FUNNEL;So;0;ON;;;;;N;;;;;
+1CE09;BOX DRAWINGS DOUBLE DIAGONAL LOWER LEFT TO MIDDLE CENTRE TO LOWER RIGHT;So;0;ON;;;;;N;;;;;
+1CE0A;BOX DRAWINGS DOUBLE DIAGONAL UPPER LEFT TO MIDDLE CENTRE TO UPPER RIGHT;So;0;ON;;;;;N;;;;;
+1CE0B;LEFT HALF WHITE ELLIPSE;So;0;ON;;;;;N;;;;;
+1CE0C;RIGHT HALF WHITE ELLIPSE;So;0;ON;;;;;N;;;;;
+1CE0D;LEFT HALF TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;;;;;
+1CE0E;RIGHT HALF TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;;;;;
+1CE0F;HORIZONTAL LINE WITH TICK MARK;So;0;ON;;;;;N;;;;;
+1CE10;LEFT HALF HORIZONTAL LINE WITH THREE TICK MARKS;So;0;ON;;;;;N;;;;;
+1CE11;RIGHT HALF HORIZONTAL LINE WITH THREE TICK MARKS;So;0;ON;;;;;N;;;;;
+1CE12;HORIZONTAL LINE WITH THREE TICK MARKS;So;0;ON;;;;;N;;;;;
+1CE13;LOWER HALF VERTICAL LINE WITH THREE TICK MARKS;So;0;ON;;;;;N;;;;;
+1CE14;UPPER HALF VERTICAL LINE WITH THREE TICK MARKS;So;0;ON;;;;;N;;;;;
+1CE15;VERTICAL LINE WITH THREE TICK MARKS;So;0;ON;;;;;N;;;;;
+1CE16;BOX DRAWINGS LIGHT VERTICAL AND TOP RIGHT;So;0;ON;;;;;N;;;;;
+1CE17;BOX DRAWINGS LIGHT VERTICAL AND BOTTOM RIGHT;So;0;ON;;;;;N;;;;;
+1CE18;BOX DRAWINGS LIGHT VERTICAL AND TOP LEFT;So;0;ON;;;;;N;;;;;
+1CE19;BOX DRAWINGS LIGHT VERTICAL AND BOTTOM LEFT;So;0;ON;;;;;N;;;;;
+1CE1A;LARGE TYPE PIECE UPPER LEFT ARC;So;0;ON;;;;;N;;;;;
+1CE1B;LARGE TYPE PIECE UPPER LEFT CORNER;So;0;ON;;;;;N;;;;;
+1CE1C;LARGE TYPE PIECE UPPER TERMINAL;So;0;ON;;;;;N;;;;;
+1CE1D;LARGE TYPE PIECE UPPER LEFT CROTCH;So;0;ON;;;;;N;;;;;
+1CE1E;LARGE TYPE PIECE LEFT ARM;So;0;ON;;;;;N;;;;;
+1CE1F;LARGE TYPE PIECE CROSSBAR;So;0;ON;;;;;N;;;;;
+1CE20;LARGE TYPE PIECE CROSSBAR WITH LOWER STEM;So;0;ON;;;;;N;;;;;
+1CE21;LARGE TYPE PIECE UPPER HALF VERTEX OF M;So;0;ON;;;;;N;;;;;
+1CE22;LARGE TYPE PIECE DIAGONAL LOWER LEFT;So;0;ON;;;;;N;;;;;
+1CE23;LARGE TYPE PIECE SHORT UPPER TERMINAL;So;0;ON;;;;;N;;;;;
+1CE24;LARGE TYPE PIECE UPPER RIGHT ARC;So;0;ON;;;;;N;;;;;
+1CE25;LARGE TYPE PIECE RIGHT ARM;So;0;ON;;;;;N;;;;;
+1CE26;LARGE TYPE PIECE UPPER RIGHT CROTCH;So;0;ON;;;;;N;;;;;
+1CE27;LARGE TYPE PIECE UPPER RIGHT CORNER;So;0;ON;;;;;N;;;;;
+1CE28;LARGE TYPE PIECE STEM WITH RIGHT CROSSBAR;So;0;ON;;;;;N;;;;;
+1CE29;LARGE TYPE PIECE STEM;So;0;ON;;;;;N;;;;;
+1CE2A;LARGE TYPE PIECE DIAGONAL UPPER RIGHT AND LOWER RIGHT;So;0;ON;;;;;N;;;;;
+1CE2B;LARGE TYPE PIECE DIAGONAL UPPER RIGHT;So;0;ON;;;;;N;;;;;
+1CE2C;LARGE TYPE PIECE DIAGONAL LOWER RIGHT;So;0;ON;;;;;N;;;;;
+1CE2D;LARGE TYPE PIECE SHORT LOWER TERMINAL;So;0;ON;;;;;N;;;;;
+1CE2E;LARGE TYPE PIECE LOWER LEFT AND UPPER LEFT ARC;So;0;ON;;;;;N;;;;;
+1CE2F;LARGE TYPE PIECE CENTRE OF K;So;0;ON;;;;;N;;;;;
+1CE30;LARGE TYPE PIECE LOWER HALF VERTEX OF M;So;0;ON;;;;;N;;;;;
+1CE31;LARGE TYPE PIECE UPPER HALF VERTEX OF W;So;0;ON;;;;;N;;;;;
+1CE32;LARGE TYPE PIECE CENTRE OF X;So;0;ON;;;;;N;;;;;
+1CE33;LARGE TYPE PIECE CENTRE OF Y;So;0;ON;;;;;N;;;;;
+1CE34;LARGE TYPE PIECE CENTRE OF Z WITH CROSSBAR;So;0;ON;;;;;N;;;;;
+1CE35;LARGE TYPE PIECE RAISED UPPER LEFT ARC;So;0;ON;;;;;N;;;;;
+1CE36;LARGE TYPE PIECE STEM WITH LEFT CROSSBAR;So;0;ON;;;;;N;;;;;
+1CE37;LARGE TYPE PIECE LOWER RIGHT AND UPPER RIGHT ARC;So;0;ON;;;;;N;;;;;
+1CE38;LARGE TYPE PIECE DIAGONAL UPPER LEFT AND LOWER LEFT;So;0;ON;;;;;N;;;;;
+1CE39;LARGE TYPE PIECE STEM WITH LEFT JOINT;So;0;ON;;;;;N;;;;;
+1CE3A;LARGE TYPE PIECE STEM WITH CROSSBAR;So;0;ON;;;;;N;;;;;
+1CE3B;LARGE TYPE PIECE DIAGONAL UPPER LEFT;So;0;ON;;;;;N;;;;;
+1CE3C;LARGE TYPE PIECE LOWER TERMINAL;So;0;ON;;;;;N;;;;;
+1CE3D;LARGE TYPE PIECE LOWER LEFT CORNER;So;0;ON;;;;;N;;;;;
+1CE3E;LARGE TYPE PIECE LOWER LEFT ARC;So;0;ON;;;;;N;;;;;
+1CE3F;LARGE TYPE PIECE LOWER LEFT CROTCH;So;0;ON;;;;;N;;;;;
+1CE40;LARGE TYPE PIECE CROSSBAR WITH UPPER STEM;So;0;ON;;;;;N;;;;;
+1CE41;LARGE TYPE PIECE VERTEX OF V;So;0;ON;;;;;N;;;;;
+1CE42;LARGE TYPE PIECE LOWER HALF VERTEX OF W;So;0;ON;;;;;N;;;;;
+1CE43;LARGE TYPE PIECE LOWER RIGHT ARC;So;0;ON;;;;;N;;;;;
+1CE44;LARGE TYPE PIECE LOWER RIGHT CORNER;So;0;ON;;;;;N;;;;;
+1CE45;LARGE TYPE PIECE LOWER RIGHT ARC WITH TAIL;So;0;ON;;;;;N;;;;;
+1CE46;LARGE TYPE PIECE LOWER RIGHT CROTCH;So;0;ON;;;;;N;;;;;
+1CE47;LARGE TYPE PIECE STEM-45;So;0;ON;;;;;N;;;;;
+1CE48;LARGE TYPE PIECE STEM-2345;So;0;ON;;;;;N;;;;;
+1CE49;LARGE TYPE PIECE STEM-4;So;0;ON;;;;;N;;;;;
+1CE4A;LARGE TYPE PIECE STEM-34;So;0;ON;;;;;N;;;;;
+1CE4B;LARGE TYPE PIECE STEM-234;So;0;ON;;;;;N;;;;;
+1CE4C;LARGE TYPE PIECE STEM-1234;So;0;ON;;;;;N;;;;;
+1CE4D;LARGE TYPE PIECE STEM-3;So;0;ON;;;;;N;;;;;
+1CE4E;LARGE TYPE PIECE STEM-23;So;0;ON;;;;;N;;;;;
+1CE4F;LARGE TYPE PIECE STEM-2;So;0;ON;;;;;N;;;;;
+1CE50;LARGE TYPE PIECE STEM-12;So;0;ON;;;;;N;;;;;
+1CE51;SEPARATED BLOCK SEXTANT-1;So;0;ON;;;;;N;;;;;
+1CE52;SEPARATED BLOCK SEXTANT-2;So;0;ON;;;;;N;;;;;
+1CE53;SEPARATED BLOCK SEXTANT-12;So;0;ON;;;;;N;;;;;
+1CE54;SEPARATED BLOCK SEXTANT-3;So;0;ON;;;;;N;;;;;
+1CE55;SEPARATED BLOCK SEXTANT-13;So;0;ON;;;;;N;;;;;
+1CE56;SEPARATED BLOCK SEXTANT-23;So;0;ON;;;;;N;;;;;
+1CE57;SEPARATED BLOCK SEXTANT-123;So;0;ON;;;;;N;;;;;
+1CE58;SEPARATED BLOCK SEXTANT-4;So;0;ON;;;;;N;;;;;
+1CE59;SEPARATED BLOCK SEXTANT-14;So;0;ON;;;;;N;;;;;
+1CE5A;SEPARATED BLOCK SEXTANT-24;So;0;ON;;;;;N;;;;;
+1CE5B;SEPARATED BLOCK SEXTANT-124;So;0;ON;;;;;N;;;;;
+1CE5C;SEPARATED BLOCK SEXTANT-34;So;0;ON;;;;;N;;;;;
+1CE5D;SEPARATED BLOCK SEXTANT-134;So;0;ON;;;;;N;;;;;
+1CE5E;SEPARATED BLOCK SEXTANT-234;So;0;ON;;;;;N;;;;;
+1CE5F;SEPARATED BLOCK SEXTANT-1234;So;0;ON;;;;;N;;;;;
+1CE60;SEPARATED BLOCK SEXTANT-5;So;0;ON;;;;;N;;;;;
+1CE61;SEPARATED BLOCK SEXTANT-15;So;0;ON;;;;;N;;;;;
+1CE62;SEPARATED BLOCK SEXTANT-25;So;0;ON;;;;;N;;;;;
+1CE63;SEPARATED BLOCK SEXTANT-125;So;0;ON;;;;;N;;;;;
+1CE64;SEPARATED BLOCK SEXTANT-35;So;0;ON;;;;;N;;;;;
+1CE65;SEPARATED BLOCK SEXTANT-135;So;0;ON;;;;;N;;;;;
+1CE66;SEPARATED BLOCK SEXTANT-235;So;0;ON;;;;;N;;;;;
+1CE67;SEPARATED BLOCK SEXTANT-1235;So;0;ON;;;;;N;;;;;
+1CE68;SEPARATED BLOCK SEXTANT-45;So;0;ON;;;;;N;;;;;
+1CE69;SEPARATED BLOCK SEXTANT-145;So;0;ON;;;;;N;;;;;
+1CE6A;SEPARATED BLOCK SEXTANT-245;So;0;ON;;;;;N;;;;;
+1CE6B;SEPARATED BLOCK SEXTANT-1245;So;0;ON;;;;;N;;;;;
+1CE6C;SEPARATED BLOCK SEXTANT-345;So;0;ON;;;;;N;;;;;
+1CE6D;SEPARATED BLOCK SEXTANT-1345;So;0;ON;;;;;N;;;;;
+1CE6E;SEPARATED BLOCK SEXTANT-2345;So;0;ON;;;;;N;;;;;
+1CE6F;SEPARATED BLOCK SEXTANT-12345;So;0;ON;;;;;N;;;;;
+1CE70;SEPARATED BLOCK SEXTANT-6;So;0;ON;;;;;N;;;;;
+1CE71;SEPARATED BLOCK SEXTANT-16;So;0;ON;;;;;N;;;;;
+1CE72;SEPARATED BLOCK SEXTANT-26;So;0;ON;;;;;N;;;;;
+1CE73;SEPARATED BLOCK SEXTANT-126;So;0;ON;;;;;N;;;;;
+1CE74;SEPARATED BLOCK SEXTANT-36;So;0;ON;;;;;N;;;;;
+1CE75;SEPARATED BLOCK SEXTANT-136;So;0;ON;;;;;N;;;;;
+1CE76;SEPARATED BLOCK SEXTANT-236;So;0;ON;;;;;N;;;;;
+1CE77;SEPARATED BLOCK SEXTANT-1236;So;0;ON;;;;;N;;;;;
+1CE78;SEPARATED BLOCK SEXTANT-46;So;0;ON;;;;;N;;;;;
+1CE79;SEPARATED BLOCK SEXTANT-146;So;0;ON;;;;;N;;;;;
+1CE7A;SEPARATED BLOCK SEXTANT-246;So;0;ON;;;;;N;;;;;
+1CE7B;SEPARATED BLOCK SEXTANT-1246;So;0;ON;;;;;N;;;;;
+1CE7C;SEPARATED BLOCK SEXTANT-346;So;0;ON;;;;;N;;;;;
+1CE7D;SEPARATED BLOCK SEXTANT-1346;So;0;ON;;;;;N;;;;;
+1CE7E;SEPARATED BLOCK SEXTANT-2346;So;0;ON;;;;;N;;;;;
+1CE7F;SEPARATED BLOCK SEXTANT-12346;So;0;ON;;;;;N;;;;;
+1CE80;SEPARATED BLOCK SEXTANT-56;So;0;ON;;;;;N;;;;;
+1CE81;SEPARATED BLOCK SEXTANT-156;So;0;ON;;;;;N;;;;;
+1CE82;SEPARATED BLOCK SEXTANT-256;So;0;ON;;;;;N;;;;;
+1CE83;SEPARATED BLOCK SEXTANT-1256;So;0;ON;;;;;N;;;;;
+1CE84;SEPARATED BLOCK SEXTANT-356;So;0;ON;;;;;N;;;;;
+1CE85;SEPARATED BLOCK SEXTANT-1356;So;0;ON;;;;;N;;;;;
+1CE86;SEPARATED BLOCK SEXTANT-2356;So;0;ON;;;;;N;;;;;
+1CE87;SEPARATED BLOCK SEXTANT-12356;So;0;ON;;;;;N;;;;;
+1CE88;SEPARATED BLOCK SEXTANT-456;So;0;ON;;;;;N;;;;;
+1CE89;SEPARATED BLOCK SEXTANT-1456;So;0;ON;;;;;N;;;;;
+1CE8A;SEPARATED BLOCK SEXTANT-2456;So;0;ON;;;;;N;;;;;
+1CE8B;SEPARATED BLOCK SEXTANT-12456;So;0;ON;;;;;N;;;;;
+1CE8C;SEPARATED BLOCK SEXTANT-3456;So;0;ON;;;;;N;;;;;
+1CE8D;SEPARATED BLOCK SEXTANT-13456;So;0;ON;;;;;N;;;;;
+1CE8E;SEPARATED BLOCK SEXTANT-23456;So;0;ON;;;;;N;;;;;
+1CE8F;SEPARATED BLOCK SEXTANT-123456;So;0;ON;;;;;N;;;;;
+1CE90;UPPER LEFT ONE SIXTEENTH BLOCK;So;0;ON;;;;;N;;;;;
+1CE91;UPPER CENTRE LEFT ONE SIXTEENTH BLOCK;So;0;ON;;;;;N;;;;;
+1CE92;UPPER CENTRE RIGHT ONE SIXTEENTH BLOCK;So;0;ON;;;;;N;;;;;
+1CE93;UPPER RIGHT ONE SIXTEENTH BLOCK;So;0;ON;;;;;N;;;;;
+1CE94;UPPER MIDDLE LEFT ONE SIXTEENTH BLOCK;So;0;ON;;;;;N;;;;;
+1CE95;UPPER MIDDLE CENTRE LEFT ONE SIXTEENTH BLOCK;So;0;ON;;;;;N;;;;;
+1CE96;UPPER MIDDLE CENTRE RIGHT ONE SIXTEENTH BLOCK;So;0;ON;;;;;N;;;;;
+1CE97;UPPER MIDDLE RIGHT ONE SIXTEENTH BLOCK;So;0;ON;;;;;N;;;;;
+1CE98;LOWER MIDDLE LEFT ONE SIXTEENTH BLOCK;So;0;ON;;;;;N;;;;;
+1CE99;LOWER MIDDLE CENTRE LEFT ONE SIXTEENTH BLOCK;So;0;ON;;;;;N;;;;;
+1CE9A;LOWER MIDDLE CENTRE RIGHT ONE SIXTEENTH BLOCK;So;0;ON;;;;;N;;;;;
+1CE9B;LOWER MIDDLE RIGHT ONE SIXTEENTH BLOCK;So;0;ON;;;;;N;;;;;
+1CE9C;LOWER LEFT ONE SIXTEENTH BLOCK;So;0;ON;;;;;N;;;;;
+1CE9D;LOWER CENTRE LEFT ONE SIXTEENTH BLOCK;So;0;ON;;;;;N;;;;;
+1CE9E;LOWER CENTRE RIGHT ONE SIXTEENTH BLOCK;So;0;ON;;;;;N;;;;;
+1CE9F;LOWER RIGHT ONE SIXTEENTH BLOCK;So;0;ON;;;;;N;;;;;
+1CEA0;RIGHT HALF LOWER ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+1CEA1;RIGHT THREE QUARTERS LOWER ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+1CEA2;LEFT THREE QUARTERS LOWER ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+1CEA3;LEFT HALF LOWER ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+1CEA4;LOWER HALF LEFT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+1CEA5;LOWER THREE QUARTERS LEFT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+1CEA6;UPPER THREE QUARTERS LEFT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+1CEA7;UPPER HALF LEFT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+1CEA8;LEFT HALF UPPER ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+1CEA9;LEFT THREE QUARTERS UPPER ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+1CEAA;RIGHT THREE QUARTERS UPPER ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+1CEAB;RIGHT HALF UPPER ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+1CEAC;UPPER HALF RIGHT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+1CEAD;UPPER THREE QUARTERS RIGHT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+1CEAE;LOWER THREE QUARTERS RIGHT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+1CEAF;LOWER HALF RIGHT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+1CEB0;HORIZONTAL ZIGZAG LINE;So;0;ON;;;;;N;;;;;
+1CEB1;KEYHOLE;So;0;ON;;;;;N;;;;;
+1CEB2;OLD PERSONAL COMPUTER WITH MONITOR IN PORTRAIT ORIENTATION;So;0;ON;;;;;N;;;;;
+1CEB3;BLACK RIGHT TRIANGLE CARET;So;0;ON;;;;;N;;;;;
1CF00;ZNAMENNY COMBINING MARK GORAZDO NIZKO S KRYZHEM ON LEFT;Mn;0;NSM;;;;;N;;;;;
1CF01;ZNAMENNY COMBINING MARK NIZKO S KRYZHEM ON LEFT;Mn;0;NSM;;;;;N;;;;;
1CF02;ZNAMENNY COMBINING MARK TSATA ON LEFT;Mn;0;NSM;;;;;N;;;;;
@@ -29545,7 +34630,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1D6BE;MATHEMATICAL BOLD CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
1D6BF;MATHEMATICAL BOLD CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
1D6C0;MATHEMATICAL BOLD CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
-1D6C1;MATHEMATICAL BOLD NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
+1D6C1;MATHEMATICAL BOLD NABLA;Sm;0;ON;<font> 2207;;;;N;;;;;
1D6C2;MATHEMATICAL BOLD SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
1D6C3;MATHEMATICAL BOLD SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
1D6C4;MATHEMATICAL BOLD SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
@@ -29603,7 +34688,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1D6F8;MATHEMATICAL ITALIC CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
1D6F9;MATHEMATICAL ITALIC CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
1D6FA;MATHEMATICAL ITALIC CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
-1D6FB;MATHEMATICAL ITALIC NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
+1D6FB;MATHEMATICAL ITALIC NABLA;Sm;0;ON;<font> 2207;;;;N;;;;;
1D6FC;MATHEMATICAL ITALIC SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
1D6FD;MATHEMATICAL ITALIC SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
1D6FE;MATHEMATICAL ITALIC SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
@@ -29661,7 +34746,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1D732;MATHEMATICAL BOLD ITALIC CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
1D733;MATHEMATICAL BOLD ITALIC CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
1D734;MATHEMATICAL BOLD ITALIC CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
-1D735;MATHEMATICAL BOLD ITALIC NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
+1D735;MATHEMATICAL BOLD ITALIC NABLA;Sm;0;ON;<font> 2207;;;;N;;;;;
1D736;MATHEMATICAL BOLD ITALIC SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
1D737;MATHEMATICAL BOLD ITALIC SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
1D738;MATHEMATICAL BOLD ITALIC SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
@@ -29719,7 +34804,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1D76C;MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
1D76D;MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
1D76E;MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
-1D76F;MATHEMATICAL SANS-SERIF BOLD NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
+1D76F;MATHEMATICAL SANS-SERIF BOLD NABLA;Sm;0;ON;<font> 2207;;;;N;;;;;
1D770;MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
1D771;MATHEMATICAL SANS-SERIF BOLD SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
1D772;MATHEMATICAL SANS-SERIF BOLD SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
@@ -29777,7 +34862,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1D7A6;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
1D7A7;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
1D7A8;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
-1D7A9;MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
+1D7A9;MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA;Sm;0;ON;<font> 2207;;;;N;;;;;
1D7AA;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
1D7AB;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
1D7AC;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
@@ -30875,6 +35960,50 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1E4F7;NAG MUNDARI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
1E4F8;NAG MUNDARI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
1E4F9;NAG MUNDARI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+1E5D0;OL ONAL LETTER O;Lo;0;L;;;;;N;;;;;
+1E5D1;OL ONAL LETTER OM;Lo;0;L;;;;;N;;;;;
+1E5D2;OL ONAL LETTER ONG;Lo;0;L;;;;;N;;;;;
+1E5D3;OL ONAL LETTER ORR;Lo;0;L;;;;;N;;;;;
+1E5D4;OL ONAL LETTER OO;Lo;0;L;;;;;N;;;;;
+1E5D5;OL ONAL LETTER OY;Lo;0;L;;;;;N;;;;;
+1E5D6;OL ONAL LETTER A;Lo;0;L;;;;;N;;;;;
+1E5D7;OL ONAL LETTER AD;Lo;0;L;;;;;N;;;;;
+1E5D8;OL ONAL LETTER AB;Lo;0;L;;;;;N;;;;;
+1E5D9;OL ONAL LETTER AH;Lo;0;L;;;;;N;;;;;
+1E5DA;OL ONAL LETTER AL;Lo;0;L;;;;;N;;;;;
+1E5DB;OL ONAL LETTER AW;Lo;0;L;;;;;N;;;;;
+1E5DC;OL ONAL LETTER I;Lo;0;L;;;;;N;;;;;
+1E5DD;OL ONAL LETTER IT;Lo;0;L;;;;;N;;;;;
+1E5DE;OL ONAL LETTER IP;Lo;0;L;;;;;N;;;;;
+1E5DF;OL ONAL LETTER ITT;Lo;0;L;;;;;N;;;;;
+1E5E0;OL ONAL LETTER ID;Lo;0;L;;;;;N;;;;;
+1E5E1;OL ONAL LETTER IN;Lo;0;L;;;;;N;;;;;
+1E5E2;OL ONAL LETTER U;Lo;0;L;;;;;N;;;;;
+1E5E3;OL ONAL LETTER UK;Lo;0;L;;;;;N;;;;;
+1E5E4;OL ONAL LETTER UDD;Lo;0;L;;;;;N;;;;;
+1E5E5;OL ONAL LETTER UJ;Lo;0;L;;;;;N;;;;;
+1E5E6;OL ONAL LETTER UNY;Lo;0;L;;;;;N;;;;;
+1E5E7;OL ONAL LETTER UR;Lo;0;L;;;;;N;;;;;
+1E5E8;OL ONAL LETTER E;Lo;0;L;;;;;N;;;;;
+1E5E9;OL ONAL LETTER ES;Lo;0;L;;;;;N;;;;;
+1E5EA;OL ONAL LETTER EH;Lo;0;L;;;;;N;;;;;
+1E5EB;OL ONAL LETTER EC;Lo;0;L;;;;;N;;;;;
+1E5EC;OL ONAL LETTER ENN;Lo;0;L;;;;;N;;;;;
+1E5ED;OL ONAL LETTER EG;Lo;0;L;;;;;N;;;;;
+1E5EE;OL ONAL SIGN MU;Mn;230;NSM;;;;;N;;;;;
+1E5EF;OL ONAL SIGN IKIR;Mn;220;NSM;;;;;N;;;;;
+1E5F0;OL ONAL SIGN HODDOND;Lo;0;L;;;;;N;;;;;
+1E5F1;OL ONAL DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+1E5F2;OL ONAL DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+1E5F3;OL ONAL DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+1E5F4;OL ONAL DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+1E5F5;OL ONAL DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+1E5F6;OL ONAL DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+1E5F7;OL ONAL DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+1E5F8;OL ONAL DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+1E5F9;OL ONAL DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+1E5FA;OL ONAL DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+1E5FF;OL ONAL ABBREVIATION SIGN;Po;0;L;;;;;N;;;;;
1E7E0;ETHIOPIC SYLLABLE HHYA;Lo;0;L;;;;;N;;;;;
1E7E1;ETHIOPIC SYLLABLE HHYU;Lo;0;L;;;;;N;;;;;
1E7E2;ETHIOPIC SYLLABLE HHYI;Lo;0;L;;;;;N;;;;;
@@ -33357,6 +38486,18 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1F8AD;WHITE ARROW SHAFT WIDTH TWO THIRDS;So;0;ON;;;;;N;;;;;
1F8B0;ARROW POINTING UPWARDS THEN NORTH WEST;So;0;ON;;;;;N;;;;;
1F8B1;ARROW POINTING RIGHTWARDS THEN CURVING SOUTH WEST;So;0;ON;;;;;N;;;;;
+1F8B2;RIGHTWARDS ARROW WITH LOWER HOOK;So;0;ON;;;;;N;;;;;
+1F8B3;DOWNWARDS BLACK ARROW TO BAR;So;0;ON;;;;;N;;;;;
+1F8B4;NEGATIVE SQUARED LEFTWARDS ARROW;So;0;ON;;;;;N;;;;;
+1F8B5;NEGATIVE SQUARED UPWARDS ARROW;So;0;ON;;;;;N;;;;;
+1F8B6;NEGATIVE SQUARED RIGHTWARDS ARROW;So;0;ON;;;;;N;;;;;
+1F8B7;NEGATIVE SQUARED DOWNWARDS ARROW;So;0;ON;;;;;N;;;;;
+1F8B8;NORTH WEST ARROW FROM BAR;So;0;ON;;;;;N;;;;;
+1F8B9;NORTH EAST ARROW FROM BAR;So;0;ON;;;;;N;;;;;
+1F8BA;SOUTH EAST ARROW FROM BAR;So;0;ON;;;;;N;;;;;
+1F8BB;SOUTH WEST ARROW FROM BAR;So;0;ON;;;;;N;;;;;
+1F8C0;LEFTWARDS ARROW FROM DOWNWARDS ARROW;So;0;ON;;;;;N;;;;;
+1F8C1;RIGHTWARDS ARROW FROM DOWNWARDS ARROW;So;0;ON;;;;;N;;;;;
1F900;CIRCLED CROSS FORMEE WITH FOUR DOTS;So;0;ON;;;;;N;;;;;
1F901;CIRCLED CROSS FORMEE WITH TWO DOTS;So;0;ON;;;;;N;;;;;
1F902;CIRCLED CROSS FORMEE;So;0;ON;;;;;N;;;;;
@@ -33733,6 +38874,8 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1FA86;NESTING DOLLS;So;0;ON;;;;;N;;;;;
1FA87;MARACAS;So;0;ON;;;;;N;;;;;
1FA88;FLUTE;So;0;ON;;;;;N;;;;;
+1FA89;HARP;So;0;ON;;;;;N;;;;;
+1FA8F;SHOVEL;So;0;ON;;;;;N;;;;;
1FA90;RINGED PLANET;So;0;ON;;;;;N;;;;;
1FA91;CHAIR;So;0;ON;;;;;N;;;;;
1FA92;RAZOR;So;0;ON;;;;;N;;;;;
@@ -33779,6 +38922,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1FABB;HYACINTH;So;0;ON;;;;;N;;;;;
1FABC;JELLYFISH;So;0;ON;;;;;N;;;;;
1FABD;WING;So;0;ON;;;;;N;;;;;
+1FABE;LEAFLESS TREE;So;0;ON;;;;;N;;;;;
1FABF;GOOSE;So;0;ON;;;;;N;;;;;
1FAC0;ANATOMICAL HEART;So;0;ON;;;;;N;;;;;
1FAC1;LUNGS;So;0;ON;;;;;N;;;;;
@@ -33786,6 +38930,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1FAC3;PREGNANT MAN;So;0;ON;;;;;N;;;;;
1FAC4;PREGNANT PERSON;So;0;ON;;;;;N;;;;;
1FAC5;PERSON WITH CROWN;So;0;ON;;;;;N;;;;;
+1FAC6;FINGERPRINT;So;0;ON;;;;;N;;;;;
1FACE;MOOSE;So;0;ON;;;;;N;;;;;
1FACF;DONKEY;So;0;ON;;;;;N;;;;;
1FAD0;BLUEBERRIES;So;0;ON;;;;;N;;;;;
@@ -33800,6 +38945,8 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1FAD9;JAR;So;0;ON;;;;;N;;;;;
1FADA;GINGER ROOT;So;0;ON;;;;;N;;;;;
1FADB;PEA POD;So;0;ON;;;;;N;;;;;
+1FADC;ROOT VEGETABLE;So;0;ON;;;;;N;;;;;
+1FADF;SPLATTER;So;0;ON;;;;;N;;;;;
1FAE0;MELTING FACE;So;0;ON;;;;;N;;;;;
1FAE1;SALUTING FACE;So;0;ON;;;;;N;;;;;
1FAE2;FACE WITH OPEN EYES AND HAND OVER MOUTH;So;0;ON;;;;;N;;;;;
@@ -33809,6 +38956,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1FAE6;BITING LIP;So;0;ON;;;;;N;;;;;
1FAE7;BUBBLES;So;0;ON;;;;;N;;;;;
1FAE8;SHAKING FACE;So;0;ON;;;;;N;;;;;
+1FAE9;FACE WITH BAGS UNDER EYES;So;0;ON;;;;;N;;;;;
1FAF0;HAND WITH INDEX FINGER AND THUMB CROSSED;So;0;ON;;;;;N;;;;;
1FAF1;RIGHTWARDS HAND;So;0;ON;;;;;N;;;;;
1FAF2;LEFTWARDS HAND;So;0;ON;;;;;N;;;;;
@@ -34020,6 +39168,43 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1FBC8;STICK FIGURE LEANING RIGHT;So;0;ON;;;;;N;;;;;
1FBC9;STICK FIGURE WITH DRESS;So;0;ON;;;;;N;;;;;
1FBCA;WHITE UP-POINTING CHEVRON;So;0;ON;;;;;N;;;;;
+1FBCB;WHITE CROSS MARK;So;0;ON;;;;;N;;;;;
+1FBCC;RAISED SMALL LEFT SQUARE BRACKET;So;0;ON;;;;;N;;;;;
+1FBCD;BLACK SMALL UP-POINTING CHEVRON;So;0;ON;;;;;N;;;;;
+1FBCE;LEFT TWO THIRDS BLOCK;So;0;ON;;;;;N;;;;;
+1FBCF;LEFT ONE THIRD BLOCK;So;0;ON;;;;;N;;;;;
+1FBD0;BOX DRAWINGS LIGHT DIAGONAL MIDDLE RIGHT TO LOWER LEFT;So;0;ON;;;;;N;;;;;
+1FBD1;BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO MIDDLE LEFT;So;0;ON;;;;;N;;;;;
+1FBD2;BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO MIDDLE RIGHT;So;0;ON;;;;;N;;;;;
+1FBD3;BOX DRAWINGS LIGHT DIAGONAL MIDDLE LEFT TO LOWER RIGHT;So;0;ON;;;;;N;;;;;
+1FBD4;BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER CENTRE;So;0;ON;;;;;N;;;;;
+1FBD5;BOX DRAWINGS LIGHT DIAGONAL UPPER CENTRE TO LOWER RIGHT;So;0;ON;;;;;N;;;;;
+1FBD6;BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER CENTRE;So;0;ON;;;;;N;;;;;
+1FBD7;BOX DRAWINGS LIGHT DIAGONAL UPPER CENTRE TO LOWER LEFT;So;0;ON;;;;;N;;;;;
+1FBD8;BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO MIDDLE CENTRE TO UPPER RIGHT;So;0;ON;;;;;N;;;;;
+1FBD9;BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO MIDDLE CENTRE TO LOWER RIGHT;So;0;ON;;;;;N;;;;;
+1FBDA;BOX DRAWINGS LIGHT DIAGONAL LOWER LEFT TO MIDDLE CENTRE TO LOWER RIGHT;So;0;ON;;;;;N;;;;;
+1FBDB;BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO MIDDLE CENTRE TO LOWER LEFT;So;0;ON;;;;;N;;;;;
+1FBDC;BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER CENTRE TO UPPER RIGHT;So;0;ON;;;;;N;;;;;
+1FBDD;BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO MIDDLE LEFT TO LOWER RIGHT;So;0;ON;;;;;N;;;;;
+1FBDE;BOX DRAWINGS LIGHT DIAGONAL LOWER LEFT TO UPPER CENTRE TO LOWER RIGHT;So;0;ON;;;;;N;;;;;
+1FBDF;BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO MIDDLE RIGHT TO LOWER LEFT;So;0;ON;;;;;N;;;;;
+1FBE0;TOP JUSTIFIED LOWER HALF WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+1FBE1;RIGHT JUSTIFIED LEFT HALF WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+1FBE2;BOTTOM JUSTIFIED UPPER HALF WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+1FBE3;LEFT JUSTIFIED RIGHT HALF WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+1FBE4;UPPER CENTRE ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+1FBE5;LOWER CENTRE ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+1FBE6;MIDDLE LEFT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+1FBE7;MIDDLE RIGHT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+1FBE8;TOP JUSTIFIED LOWER HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+1FBE9;RIGHT JUSTIFIED LEFT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+1FBEA;BOTTOM JUSTIFIED UPPER HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+1FBEB;LEFT JUSTIFIED RIGHT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+1FBEC;TOP RIGHT JUSTIFIED LOWER LEFT QUARTER BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+1FBED;BOTTOM LEFT JUSTIFIED UPPER RIGHT QUARTER BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+1FBEE;BOTTOM RIGHT JUSTIFIED UPPER LEFT QUARTER BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+1FBEF;TOP LEFT JUSTIFIED LOWER RIGHT QUARTER BLACK CIRCLE;So;0;ON;;;;;N;;;;;
1FBF0;SEGMENTED DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;
1FBF1;SEGMENTED DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;
1FBF2;SEGMENTED DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;
diff --git a/localedata/unicode-gen/ctype_compatibility.py b/localedata/unicode-gen/ctype_compatibility.py
index c3ac1b7..8907a5e 100755
--- a/localedata/unicode-gen/ctype_compatibility.py
+++ b/localedata/unicode-gen/ctype_compatibility.py
@@ -10,7 +10,7 @@
#
# The GNU C Library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
diff --git a/localedata/unicode-gen/ctype_compatibility_test_cases.py b/localedata/unicode-gen/ctype_compatibility_test_cases.py
index 5998e5a..7a94d89 100644
--- a/localedata/unicode-gen/ctype_compatibility_test_cases.py
+++ b/localedata/unicode-gen/ctype_compatibility_test_cases.py
@@ -9,7 +9,7 @@
#
# The GNU C Library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
diff --git a/localedata/unicode-gen/utf8_compatibility.py b/localedata/unicode-gen/utf8_compatibility.py
index 3256636..26e33ef 100755
--- a/localedata/unicode-gen/utf8_compatibility.py
+++ b/localedata/unicode-gen/utf8_compatibility.py
@@ -10,7 +10,7 @@
#
# The GNU C Library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
diff --git a/localedata/unicode-gen/utf8_gen.py b/localedata/unicode-gen/utf8_gen.py
index 1be197a..dd36db9 100755
--- a/localedata/unicode-gen/utf8_gen.py
+++ b/localedata/unicode-gen/utf8_gen.py
@@ -11,7 +11,7 @@
#
# The GNU C Library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
diff --git a/malloc/Makefile b/malloc/Makefile
index ccc96ef..1630aaf 100644
--- a/malloc/Makefile
+++ b/malloc/Makefile
@@ -420,8 +420,14 @@ $(objpfx)tst-mallocstate-malloc-check: $(objpfx)libc_malloc_debug.so
$(objpfx)tst-aligned-alloc-random.out: $(objpfx)tst-aligned_alloc-lib.so
$(objpfx)tst-aligned-alloc-random-thread: $(shared-thread-library)
+$(objpfx)tst-aligned-alloc-random-thread-malloc-check: $(shared-thread-library)
+$(objpfx)tst-aligned-alloc-random-thread-malloc-hugetlb1: $(shared-thread-library)
+$(objpfx)tst-aligned-alloc-random-thread-malloc-hugetlb2: $(shared-thread-library)
$(objpfx)tst-aligned-alloc-random-thread.out: $(objpfx)tst-aligned_alloc-lib.so
$(objpfx)tst-aligned-alloc-random-thread-cross: $(shared-thread-library)
+$(objpfx)tst-aligned-alloc-random-thread-cross-malloc-check: $(shared-thread-library)
+$(objpfx)tst-aligned-alloc-random-thread-cross-malloc-hugetlb1: $(shared-thread-library)
+$(objpfx)tst-aligned-alloc-random-thread-cross-malloc-hugetlb2: $(shared-thread-library)
$(objpfx)tst-aligned-alloc-random-thread-cross.out: $(objpfx)tst-aligned_alloc-lib.so
$(objpfx)tst-malloc-random.out: $(objpfx)tst-aligned_alloc-lib.so
diff --git a/manual/Makefile b/manual/Makefile
index a6c05db..6a4cfbe 100644
--- a/manual/Makefile
+++ b/manual/Makefile
@@ -69,6 +69,11 @@ chapters.% top-menu.%: libc-texinfo.sh $(texis-path) Makefile
'$(chapters)' \
'$(appendices) $(licenses)'
+# Verify validity of texinfo sources against project rules.
+tests-special += \
+ $(objpfx)check-deftype.out \
+ $(objpfx)check-safety.out \
+ # tests-special
$(objpfx)libc.dvi $(objpfx)libc.pdf $(objpfx)libc.info: \
$(addprefix $(objpfx),$(libc-texi-generated))
@@ -83,10 +88,19 @@ $(objpfx)summary.texi: $(objpfx)stamp-summary ;
$(objpfx)stamp-summary: summary.pl $(filter-out $(objpfx)summary.texi, \
$(texis-path))
$(SHELL) ./check-safety.sh $(filter-out $(objpfx)%, $(texis-path))
+ $(SHELL) ./check-deftype.sh $(filter-out $(objpfx)%, $(texis-path))
LC_ALL=C $(PERL) $^ > $(objpfx)summary-tmp
$(move-if-change) $(objpfx)summary-tmp $(objpfx)summary.texi
touch $@
+$(objpfx)check-safety.out: check-safety.sh
+ $(SHELL) $< > $@ ; \
+ $(evaluate-test)
+
+$(objpfx)check-deftype.out: check-deftype.sh
+ $(SHELL) $< > $@ ; \
+ $(evaluate-test)
+
# Generate a file which can be added to the `dir' content to provide direct
# access to the documentation of the function, variables, and other
# definitions.
@@ -152,10 +166,19 @@ $(objpfx)%.pdf: %.texinfo
# Distribution.
-minimal-dist = summary.pl texis.awk tsort.awk libc-texinfo.sh libc.texinfo \
- libm-err.texi stamp-libm-err check-safety.sh \
- $(filter-out summary.texi, $(nonexamples)) \
- $(patsubst %.c.texi,examples/%.c, $(examples))
+minimal-dist = \
+ $(filter-out summary.texi, $(nonexamples)) \
+ $(patsubst %.c.texi,examples/%.c, $(examples)) \
+ check-deftype.sh \
+ check-safety.sh \
+ libc-texinfo.sh \
+ libc.texinfo \
+ libm-err.texi \
+ stamp-libm-err \
+ summary.pl \
+ texis.awk \
+ tsort.awk \
+ # minimal-dist
indices = cp fn pg tp vr ky
generated-dirs += libc
diff --git a/manual/charset.texi b/manual/charset.texi
index 427db3b..3aaa62d 100644
--- a/manual/charset.texi
+++ b/manual/charset.texi
@@ -2422,11 +2422,11 @@ written into the buffer to signal how much output is available. If this
conversion step is not the last one, the element must not be modified.
The @code{__outbufend} element must not be modified.
-@item int __is_last
-This element is nonzero if this conversion step is the last one. This
-information is necessary for the recursion. See the description of the
-conversion function internals below. This element must never be
-modified.
+@item int __flags
+This field is a set of flags. The @code{__GCONV_IS_LAST} bit is set if
+this conversion step is the last one. This information is necessary for
+the recursion. See the description of the conversion function internals
+below. This element must never be modified.
@item int __invocation_counter
The conversion function can use this element to see how many calls of
@@ -2731,8 +2731,8 @@ Otherwise the function has to emit a byte sequence to bring the state
object into the initial state. Once this all happened the other
conversion modules in the chain of conversions have to get the same
chance. Whether another step follows can be determined from the
-@code{__is_last} element of the step data structure to which the first
-parameter points.
+@code{__GCONV_IS_LAST} flag in the @code{__flags} field of the step
+data structure to which the first parameter points.
The more interesting mode is when actual text has to be converted. The
first step in this case is to convert as much text as possible from the
@@ -2866,7 +2866,7 @@ gconv (struct __gconv_step *step, struct __gconv_step_data *data,
/* @r{Call the steps down the chain if there are any but only}
@r{if we successfully emitted the escape sequence.} */
- if (status == __GCONV_OK && ! data->__is_last)
+ if (status == __GCONV_OK && ! (data->__flags & __GCONV_IS_LAST))
status = fct (next_step, next_data, NULL, NULL,
written, 1);
@}
@@ -2892,7 +2892,7 @@ gconv (struct __gconv_step *step, struct __gconv_step_data *data,
/* @r{If this is the last step, leave the loop. There is}
@r{nothing we can do.} */
- if (data->__is_last)
+ if (data->__flags & __GCONV_IS_LAST)
@{
/* @r{Store information about how many bytes are}
@r{available.} */
diff --git a/manual/check-deftype.sh b/manual/check-deftype.sh
new file mode 100644
index 0000000..395c99a
--- /dev/null
+++ b/manual/check-deftype.sh
@@ -0,0 +1,50 @@
+#!/bin/sh
+
+# Copyright 2024 Free Software Foundation, Inc.
+# This file is part of the GNU C Library.
+
+# The GNU C Library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+
+# The GNU C Library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+
+# You should have received a copy of the GNU Lesser General Public
+# License along with the GNU C Library; if not, see
+# <https://www.gnu.org/licenses/>.
+
+# Check that the @deftypefun command is called with the expected
+# arguments and includes checking for common mistakes including
+# failure to include a space after the function name, or incorrect
+# quoting.
+
+success=:
+
+# If no arguments are given, take all *.texi files in the current directory.
+test $# != 0 || set *.texi
+
+# We search for all @deftypefun and @deftypefunx command uses.
+# Then we remove all of those that match our expectations.
+# A @deftypefun or @deftypefunx command takes 3 arguments:
+# - return type
+# - name
+# - arguments
+# This is different from @deftypefn which includes an additional
+# category which is implicit here.
+grep -n -r '^@deftypefun' "$@" |
+grep -v '^.*@deftypefunx\?'\
+' \({\?[a-zA-Z0-9_ *]*}\?\) \([a-zA-Z0-9_]*\) (.*)$' &&
+success=false
+
+# We search for all @deftypefn and @deftypefnx command uses.
+# We have 4 arguments in the command including the category.
+grep -n -r '^@deftypefn' "$@" |
+grep -v '^.*@deftypefnx\?'\
+' {\?[a-zA-Z ]*}\? \({\?[a-zA-Z0-9@{}_ *]*}\?\) \([a-zA-Z0-9_]*\) (.*)$' &&
+success=false
+
+$success
diff --git a/manual/filesys.texi b/manual/filesys.texi
index 47d9297..aabb683 100644
--- a/manual/filesys.texi
+++ b/manual/filesys.texi
@@ -15,6 +15,7 @@ access permissions and modification times.
@menu
* Working Directory:: This is used to resolve relative
file names.
+* Descriptor-Relative Access:: Ways to control file name lookup.
* Accessing Directories:: Finding out what files a directory
contains.
* Working with Directory Trees:: Apply actions to all files or a selectable
@@ -206,6 +207,151 @@ An I/O error occurred.
@end table
@end deftypefun
+@node Descriptor-Relative Access
+@section Descriptor-Relative Access
+@cindex file name resolution based on descriptors
+@cindex descriptor-based file name resolution
+@cindex @code{@dots{}at} functions
+
+Many functions that accept file names have @code{@dots{}at} variants
+which accept a file descriptor and a file name argument instead of just
+a file name argument. For example, @code{fstatat} is the
+descriptor-based variant of the @code{fstat} function. Most such
+functions also accept an additional flags argument which changes the
+behavior of the file name lookup based on the passed @code{AT_@dots{}}
+flags.
+
+There are several reasons to use descriptor-relative access:
+
+@itemize @bullet
+@item
+The working directory is a process-wide resource, so individual threads
+cannot change it without affecting other threads in the process.
+Explicitly specifying the directory against which relative paths are
+resolved can be a thread-safe alternative to changing the working
+directory.
+
+@item
+If a program wishes to access a directory tree which is being modified
+concurrently, perhaps even by a different user on the system, the
+program must avoid looking up file names with multiple components, in
+order to detect symbolic links, using the @code{O_NOFOLLOW} flag
+(@pxref{Open-time Flags}) or the @code{AT_SYMLINK_FOLLOW} flag
+(described below). Without directory-relative access, it is necessary
+to use the @code{fchdir} function to change the working directory
+(@pxref{Working Directory}), which is not thread-safe.
+
+@item
+Listing directory contents using the @code{readdir} or @code{readdir64}
+functions (@pxref{Reading/Closing Directory}) does not provide full file
+name paths. Using @code{@dots{}at} functions, it is possible to use the
+file names directly, without having to construct such full paths.
+
+@item
+Additional flags available with some of the @code{@dots{}at} functions
+provide access to functionality which is not available otherwise.
+@end itemize
+
+The file descriptor used by these @code{@dots{}at} functions has the
+following uses:
+
+@itemize @bullet
+@item
+It can be a file descriptor referring to a directory. Such a descriptor
+can be created explicitly using the @code{open} function and the
+@code{O_RDONLY} file access mode, with or without the @code{O_DIRECTORY}
+flag. @xref{Opening and Closing Files}. Or it can be created
+implicitly by @code{opendir} and retrieved using the @code{dirfd}
+function. @xref{Opening a Directory}.
+
+If a directory descriptor is used with one of the @code{@dots{}at}
+functions, a relative file name argument is resolved relative to
+directory referred to by the file descriptor, just as if that directory
+were the current working directory. Absolute file name arguments
+(starting with @samp{/}) are resolved against the file system root, and
+the descriptor argument is effectively ignored.
+
+This means that file name lookup is not constrained to the directory of
+the descriptor. For example, it is possible to access a file
+@file{example} in the descriptor's parent directory using a file name
+argument @code{"../example"}, or in the root directory using
+@code{"/example"}.
+
+If the file descriptor refers to a directory, the empty string @code{""}
+is not a valid file name argument. It is possible to use @code{"."} to
+refer to the directory itself. Also see @code{AT_EMPTY_PATH} below.
+
+@item
+@vindex @code{AT_FDCWD}
+The special value @code{AT_FDCWD}. This means that the current working
+directory is used for the lookup if the file name is a relative. For
+@code{@dots{}at} functions with an @code{AT_@dots{}} flags argument,
+this provides a shortcut to use those flags with regular (not
+descriptor-based) file name lookups.
+
+If @code{AT_FDCWD} is used, the empty string @code{""} is not a valid
+file name argument.
+
+@item
+An arbitrary file descriptor, along with an empty string @code{""} as
+the file name argument, and the @code{AT_EMPTY_PATH} flag. In this
+case, the operation uses the file descriptor directly, without further
+file name resolution. On Linux, this allows operations on descriptors
+opened with the @code{O_PATH} flag. For regular descriptors (opened
+without @code{O_PATH}), the same functionality is also available through
+the plain descriptor-based functions (for example, @code{fstat} instead
+of @code{fstatat}).
+
+This is a GNU extension.
+@end itemize
+
+@cindex file name resolution flags
+@cindex @code{AT_*} file name resolution flags
+The flags argument in @code{@dots{}at} functions can be a combination of
+the following flags, defined in @file{fcntl.h}. Not all such functions
+support all flags, and some (such as @code{openat}) do not accept a
+flags argument at all.
+
+In the flag descriptions below, the @dfn{effective final path component}
+refers to the final component (basename) of the full path constructed
+from the descriptor and file name arguments, using file name lookup, as
+described above.
+
+@vtable @code
+@item AT_EMPTY_PATH
+This flag is used with an empty file name @code{""} and a descriptor
+which does not necessarily refer to a directory. It is most useful with
+@code{O_PATH} descriptors, as described above. This flag is a GNU
+extension.
+
+@item AT_NO_AUTOMOUNT
+If the effective final path component refers to a potential file system
+mount point controlled by an auto-mounting service, the operation does
+not trigger auto-mounting and refers to the unmounted mount point
+instead. @xref{Mount-Unmount-Remount}. If a file system has already
+been mounted at the effective final path component, the operation
+applies to the file or directory in the mounted file system, not the
+underlying file system that was mounted over. This flag is a GNU
+extension.
+
+@item AT_SYMLINK_FOLLOW
+If the effective final path component is a symbolic link, the
+operation follows the symbolic link and operates on its target. (For
+most functions, this is the default behavior.)
+
+@item AT_SYMLINK_NOFOLLOW
+If the effective final path component is a symbolic link, the
+operation operates on the symbolic link, without following it. The
+difference in behavior enabled by this flag is similar to the difference
+between the @code{lstat} and @code{stat} functions, or the behavior
+activated by the @code{O_NOFOLLOW} argument to the @code{open} function.
+Even with the @code{AT_SYMLINK_NOFOLLOW} flag present, symbolic links in
+a non-final component of the file name are still followed.
+@end vtable
+
+@strong{Note:} There is no relationship between these flags and the type
+argument to the @code{getauxval} function (with @code{AT_@dots{}}
+constants defined in @file{elf.h}). @xref{Auxiliary Vector}.
@node Accessing Directories
@section Accessing Directories
@@ -1250,10 +1396,11 @@ A hardware error occurred while trying to read or write the to filesystem.
The @code{linkat} function is analogous to the @code{link} function,
except that it identifies its source and target using a combination of a
-file descriptor (referring to a directory) and a pathname. If a
-pathnames is not absolute, it is resolved relative to the corresponding
-file descriptor. The special file descriptor @code{AT_FDCWD} denotes
-the current directory.
+file descriptor (referring to a directory) and a file name.
+@xref{Descriptor-Relative Access}. For @code{linkat}, if a file name is
+not absolute, it is resolved relative to the corresponding file
+descriptor. As usual, the special value @code{AT_FDCWD} denotes the
+current directory.
The @var{flags} argument is a combination of the following flags:
@@ -2091,9 +2238,44 @@ function is available under the name @code{fstat} and so transparently
replaces the interface for small files on 32-bit machines.
@end deftypefun
-@c fstatat will call alloca and snprintf if the syscall is not
-@c available.
-@c @safety{@mtsafe{}@asunsafe{@ascuheap{}}@acunsafe{@acsmem{}}}
+@deftypefun int fstatat (int @var{filedes}, const char *@var{filename}, struct stat *@var{buf}, int @var{flags})
+@standards{POSIX.1, sys/stat.h}
+@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
+This function is a descriptor-relative version of the @code{fstat}
+function above. @xref{Descriptor-Relative Access}. The @var{flags}
+argument can contain a combination of the flags @code{AT_EMPTY_PATH},
+@code{AT_NO_AUTOMOUNT}, @code{AT_SYMLINK_NOFOLLOW}.
+
+Compared to @code{fstat}, the following additional error conditions can
+occur:
+
+@table @code
+@item EBADF
+The @var{filedes} argument is not a valid file descriptor.
+
+@item EINVAL
+The @var{flags} argument is not valid for this function.
+
+@item ENOTDIR
+The descriptor @var{filedes} is not associated with a directory, and
+@var{filename} is a relative file name.
+@end table
+
+When the sources are compiled with @code{_FILE_OFFSET_BITS == 64} this
+function is in fact @code{fstatat64} since the LFS interface transparently
+replaces the normal implementation.
+@end deftypefun
+
+@deftypefun int fstatat64 (int @var{filedes}, const char *@var{filename}, struct stat64 *@var{buf}, int @var{flags})
+@standards{GNU, sys/stat.h}
+@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
+This function is the large-file variant of @code{fstatat}, similar to
+how @code{fstat64} is the variant of @code{fstat}.
+
+When the sources are compiled with @code{_FILE_OFFSET_BITS == 64} this
+function is available under the name @code{fstatat} and so transparently
+replaces the interface for small files on 32-bit machines.
+@end deftypefun
@deftypefun int lstat (const char *@var{filename}, struct stat *@var{buf})
@standards{BSD, sys/stat.h}
diff --git a/manual/ipc.texi b/manual/ipc.texi
index 6a6e5ad..32c5ac0 100644
--- a/manual/ipc.texi
+++ b/manual/ipc.texi
@@ -20,7 +20,7 @@ by @theglibc{}.
@c Need descriptions for all of these functions.
@subsection System V Semaphores
-@deftypefun int semctl (int @var{semid}, int @var{semnum}, int @var{cmd});
+@deftypefun int semctl (int @var{semid}, int @var{semnum}, int @var{cmd})
@safety{@prelim{}@mtsafe{}@assafe{}@acunsafe{@acucorrupt{/linux}}}
@c syscall(ipc) ok
@c
@@ -30,35 +30,35 @@ by @theglibc{}.
@c semid_ds.
@end deftypefun
-@deftypefun int semget (key_t @var{key}, int @var{nsems}, int @var{semflg});
+@deftypefun int semget (key_t @var{key}, int @var{nsems}, int @var{semflg})
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
@c syscall(ipc) ok
@end deftypefun
-@deftypefun int semop (int @var{semid}, struct sembuf *@var{sops}, size_t @var{nsops});
+@deftypefun int semop (int @var{semid}, struct sembuf *@var{sops}, size_t @var{nsops})
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
@c syscall(ipc) ok
@end deftypefun
-@deftypefun int semtimedop (int @var{semid}, struct sembuf *@var{sops}, size_t @var{nsops}, const struct timespec *@var{timeout});
+@deftypefun int semtimedop (int @var{semid}, struct sembuf *@var{sops}, size_t @var{nsops}, const struct timespec *@var{timeout})
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
@c syscall(ipc) ok
@end deftypefun
@subsection POSIX Semaphores
-@deftypefun int sem_init (sem_t *@var{sem}, int @var{pshared}, unsigned int @var{value});
+@deftypefun int sem_init (sem_t *@var{sem}, int @var{pshared}, unsigned int @var{value})
@safety{@prelim{}@mtsafe{}@assafe{}@acunsafe{@acucorrupt{}}}
@c Does not atomically update sem_t therefore AC-unsafe
@c because it can leave sem_t partially initialized.
@end deftypefun
-@deftypefun int sem_destroy (sem_t *@var{sem});
+@deftypefun int sem_destroy (sem_t *@var{sem})
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
@c Function does nothing and is therefore always safe.
@end deftypefun
-@deftypefun sem_t *sem_open (const char *@var{name}, int @var{oflag}, ...);
+@deftypefun {sem_t *} sem_open (const char *@var{name}, int @var{oflag}, ...)
@safety{@prelim{}@mtsafe{}@asunsafe{@asuinit{}}@acunsafe{@acuinit{}}}
@c pthread_once asuinit
@c
@@ -67,7 +67,7 @@ by @theglibc{}.
@c shmfs on Linux.
@end deftypefun
-@deftypefun int sem_close (sem_t *@var{sem});
+@deftypefun int sem_close (sem_t *@var{sem})
@safety{@prelim{}@mtsafe{}@asunsafe{@asulock{}}@acunsafe{@aculock{}}}
@c lll_lock asulock aculock
@c twalk mtsrace{:root}
@@ -77,13 +77,13 @@ by @theglibc{}.
@c are not updated atomically.
@end deftypefun
-@deftypefun int sem_unlink (const char *@var{name});
+@deftypefun int sem_unlink (const char *@var{name})
@safety{@prelim{}@mtsafe{}@asunsafe{@asuinit{}}@acunsafe{@acucorrupt{}}}
@c pthread_once asuinit acucorrupt aculock
@c mempcpy acucorrupt
@end deftypefun
-@deftypefun int sem_wait (sem_t *@var{sem});
+@deftypefun int sem_wait (sem_t *@var{sem})
@safety{@prelim{}@mtsafe{}@assafe{}@acunsafe{@acucorrupt{}}}
@c atomic_fetch_add_relaxed (nwaiters) acucorrupt
@c
@@ -95,22 +95,22 @@ by @theglibc{}.
@c waiters count.
@end deftypefun
-@deftypefun int sem_timedwait (sem_t *@var{sem}, const struct timespec *@var{abstime});
+@deftypefun int sem_timedwait (sem_t *@var{sem}, const struct timespec *@var{abstime})
@safety{@prelim{}@mtsafe{}@assafe{}@acunsafe{@acucorrupt{}}}
@c Same safety issues as sem_wait.
@end deftypefun
-@deftypefun int sem_trywait (sem_t *@var{sem});
+@deftypefun int sem_trywait (sem_t *@var{sem})
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
@c All atomic operations are safe in all contexts.
@end deftypefun
-@deftypefun int sem_post (sem_t *@var{sem});
+@deftypefun int sem_post (sem_t *@var{sem})
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
@c Same safety as sem_trywait.
@end deftypefun
-@deftypefun int sem_getvalue (sem_t *@var{sem}, int *@var{sval});
+@deftypefun int sem_getvalue (sem_t *@var{sem}, int *@var{sval})
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
@c Atomic write of a value is safe in all contexts.
@end deftypefun
diff --git a/manual/llio.texi b/manual/llio.texi
index ea84196..e90fca0 100644
--- a/manual/llio.texi
+++ b/manual/llio.texi
@@ -181,6 +181,43 @@ new, extended API using 64 bit file sizes and offsets transparently
replaces the old API.
@end deftypefun
+@deftypefun int openat (int @var{filedes}, const char *@var{filename}, int @var{flags}[, mode_t @var{mode}])
+@standards{POSIX.1, fcntl.h}
+@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{@acsfd{}}}
+This function is the descriptor-relative variant of the @code{open}
+function. @xref{Descriptor-Relative Access}.
+
+Note that the @var{flags} argument of @code{openat} does not accept
+@code{AT_@dots{}} flags, only the flags described for the @code{open}
+function above.
+
+The @code{openat} function can fail for additional reasons:
+
+@table @code
+@item EBADF
+The @var{filedes} argument is not a valid file descriptor.
+
+@item ENOTDIR
+The descriptor @var{filedes} is not associated with a directory, and
+@var{filename} is a relative file name.
+@end table
+
+When the sources are compiled with @code{_FILE_OFFSET_BITS == 64} this
+function is in fact @code{openat64} since the LFS interface transparently
+replaces the normal implementation.
+@end deftypefun
+
+@deftypefun int openat64 (int @var{filedes}, const char *@var{filename}, int @var{flags}[, mode_t @var{mode}])
+@standards{GNU, fcntl.h}
+The large-file variant of the @code{openat}, similar to how
+@code{open64} is the large-file variant of @code{open}.
+
+When the sources are translated with @code{_FILE_OFFSET_BITS == 64} this
+function is actually available under the name @code{openat}. I.e., the
+new, extended API using 64 bit file sizes and offsets transparently
+replaces the old API.
+@end deftypefun
+
@deftypefn {Obsolete function} int creat (const char *@var{filename}, mode_t @var{mode})
@standards{POSIX.1, fcntl.h}
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{@acsfd{}}}
@@ -1344,6 +1381,19 @@ Per-IO synchronization as if the file was opened with @code{O_APPEND} flag.
@item RWF_NOAPPEND
This flag allows an offset to be honored, even if the file was opened with
@code{O_APPEND} flag.
+
+@item RWF_ATOMIC
+Indicate that the write is to be issued with torn-write prevention. The
+input buffer should follow some contraints: the total length should be
+power-of-2 in size and also sizes between @code{atomic_write_unit_min}
+and @code{atomic_write_unit_max}, the @code{struct iovec} count should be
+up to @code{atomic_write_segments_max}, and the offset should be
+naturally-aligned with regard to total write length.
+
+The @code{atomic_*} values can be obtained with @code{statx} along with
+@code{STATX_WRITE_ATOMIC} flag.
+
+This is a Linux-specific extension.
@end vtable
When the source file is compiled with @code{_FILE_OFFSET_BITS == 64} the
@@ -1725,6 +1775,15 @@ write dirty metadata out whenever dirty data is written out. Unlike
most other flags, this one will fail unless @code{MAP_SHARED_VALIDATE}
is also given.
+@item MAP_DROPPABLE
+Request the page to be never written out to swap, it will be zeroed
+under memory pressure (so kernel can just drop the page), it is inherited
+by fork, it is not counted against @code{mlock} budget, and if there is
+not enough memory to service a page fault there is no fatal error (so no
+signal is sent).
+
+The @code{MAP_DROPPABLE} flag is specific to Linux.
+
@end vtable
@code{mmap} returns the address of the new mapping, or
@@ -3807,7 +3866,9 @@ contains it is still needed), and permissions are checked when the
descriptor is used later on.
For example, such descriptors can be used with the @code{fexecve}
-function (@pxref{Executing a File}).
+function (@pxref{Executing a File}). Other applications involve the
+@samp{*at} function variants, along with the @code{AT_EMPTY_PATH} flag.
+@xref{Descriptor-Relative Access}.
This access mode is specific to Linux. On @gnuhurdsystems{}, it is
possible to use @code{O_EXEC} explicitly, or specify no access modes
@@ -4792,12 +4853,12 @@ of an IOCTL, see @ref{Out-of-Band Data}.
@manpagefunctionstub{poll,2}
@end deftypefun
-@deftypefun int epoll_create(int @var{size})
+@deftypefun int epoll_create (int @var{size})
@manpagefunctionstub{epoll_create,2}
@end deftypefun
-@deftypefun int epoll_wait(int @var{epfd}, struct epoll_event *@var{events}, int @var{maxevents}, int @var{timeout})
+@deftypefun int epoll_wait (int @var{epfd}, struct epoll_event *@var{events}, int @var{maxevents}, int @var{timeout})
@manpagefunctionstub{epoll_wait,2}
@end deftypefun
diff --git a/manual/macros.texi b/manual/macros.texi
index 579da3f..f48dd4e 100644
--- a/manual/macros.texi
+++ b/manual/macros.texi
@@ -282,10 +282,13 @@ cwd\comments\
@macro standardsx {element, standard, header}
@end macro
+@macro manpageurl {func, sec}
+@url{https://man7.org/linux/man-pages/man\sec\/\func\.\sec\.html}
+@end macro
+
@macro manpagefunctionstub {func,sec}
This documentation is a stub. For additional information on this
-function, consult the manual page
-@url{https://man7.org/linux/man-pages/man\sec\/\func\.\sec\.html}.
+function, consult the manual page @manpageurl{\func\,\sec\}.
@xref{Linux Kernel}.
@end macro
diff --git a/manual/memory.texi b/manual/memory.texi
index 3710d7e..58683ee 100644
--- a/manual/memory.texi
+++ b/manual/memory.texi
@@ -2935,7 +2935,7 @@ exceed the process' data storage limit.
@end deftypefun
-@deftypefun void *sbrk (ptrdiff_t @var{delta})
+@deftypefun {void *} sbrk (ptrdiff_t @var{delta})
@standards{BSD, unistd.h}
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
diff --git a/manual/resource.texi b/manual/resource.texi
index 25966bc..612520d 100644
--- a/manual/resource.texi
+++ b/manual/resource.texi
@@ -478,6 +478,7 @@ POSIX syntax had in mind.
* Absolute Priority:: The first tier of priority. Posix
* Realtime Scheduling:: Scheduling among the process nobility
* Basic Scheduling Functions:: Get/set scheduling policy, priority
+* Extensible Scheduling:: Parameterized scheduling policies.
* Traditional Scheduling:: Scheduling among the vulgar masses
* CPU Affinity:: Limiting execution to certain CPUs
@end menu
@@ -952,6 +953,120 @@ function, so there are no specific @code{errno} values.
@end deftypefun
+@node Extensible Scheduling
+@subsection Extensible Scheduling
+@cindex scheduling, extensible
+
+The type @code{struct sched_attr} and the functions @code{sched_setattr}
+and @code{sched_getattr} are used to implement scheduling policies with
+multiple parameters (not just priority and niceness).
+
+It is expected that these interfaces will be compatible with all future
+scheduling policies.
+
+For additional information about scheduling policies, consult consult
+the manual pages @manpageurl{sched,7} and @manpageurl{sched_setattr,2}.
+@xref{Linux Kernel}.
+
+@strong{Note:} Calling the @code{sched_setattr} function is incompatible
+with support for @code{PTHREAD_PRIO_PROTECT} mutexes.
+
+@deftp {Data Type} {struct sched_attr}
+@standards{Linux, sched.h}
+The @code{sched_attr} structure describes a parameterized scheduling policy.
+
+@strong{Portability note:} In the future, additional fields can be added
+to @code{struct sched_attr} at the end, so that the size of this data
+type changes. Do not use it in places where this matters, such as
+structure fields in installed header files, where such a change could
+impact the application binary interface (ABI).
+
+The following generic fields are available.
+
+@table @code
+@item size
+The actually used size of the data structure. See the description of
+the functions @code{sched_setattr} and @code{sched_getattr} below how this
+field is used to support extension of @code{struct sched_attr} with
+more fields.
+
+@item sched_policy
+The scheduling policy. This field determines which fields in the
+structure are used, and how the @code{sched_flags} field is interpreted.
+
+@item sched_flags
+Scheduling flags associated with the scheduling policy.
+@end table
+
+In addition to the generic fields, policy-specific fields are available.
+For additional information, consult the manual page
+@manpageurl{sched_setattr,2}. @xref{Linux Kernel}.
+@end deftp
+
+@deftypefun int sched_setaddr (pid_t @var{tid}, struct sched_attr *@var{attr}, unsigned int flags)
+@standards{Linux, sched.h}
+@safety{@mtsafe{}@assafe{}@acsafe{}}
+This functions applies the scheduling policy described by
+@code{*@var{attr}} to the thread @var{tid} (the value zero denotes the
+current thread).
+
+It is recommended to initialize unused fields to zero, either using
+@code{memset}, or using a structure initializer. The
+@code{@var{attr->size}} field should be set to @code{sizeof (struct
+sched_attr)}, to inform the kernel of the structure version in use.
+
+The @var{flags} argument must be zero. Other values may become
+available in the future.
+
+On failure, @code{sched_setattr} returns @math{-1} and sets
+@code{errno}. The following errors are related the way
+extensibility is handled.
+@table @code
+@item E2BIG
+A field in @code{*@var{attr}} has a non-zero value, but is unknown to
+the kernel. The application could try to apply a modified policy, where
+more fields are zero.
+
+@item EINVAL
+The policy in @code{@var{attr}->sched_policy} is unknown to the kernel,
+or flags are set in @code{@var{attr}->sched_flags} that the kernel does
+not know how to interpret. The application could try with fewer flags
+set, or a different scheduling policy.
+
+This error also occurs if @var{attr} is @code{NULL} or @var{flags} is
+not zero.
+
+@item EPERM
+The current thread is not sufficiently privileged to assign the policy,
+either because access to the policy is restricted in general, or because
+the current thread does not have the rights to change the scheduling
+policy of the thread @var{tid}.
+@end table
+
+Other error codes depend on the scheduling policy.
+@end deftypefun
+
+@deftypefun int sched_getaddr (pid_t @var{tid}, struct sched_attr *@var{attr}, unsigned int size, unsigned int flags)
+@standards{Linux, sched.h}
+@safety{@mtsafe{}@assafe{}@acsafe{}}
+This function obtains the scheduling policy of the thread @var{tid}
+(zero denotes the current thread) and store it in @code{*@var{attr}},
+which must have space for at least @var{size} bytes.
+
+The @var{flags} argument must be zero. Other values may become
+available in the future.
+
+Upon success, @code{@var{attr}->size} contains the size of the structure
+version used by the kernel. Fields with offsets greater or equal to
+@code{@var{attr}->size} are not updated by the kernel. To obtain
+predictable values for unknown fields, use @code{memset} to set
+all @var{size} bytes to zero prior to calling @code{sched_getattr}.
+
+On failure, @code{sched_getattr} returns @math{-1} and sets @code{errno}.
+If @code{errno} is @code{E2BIG}, this means that the buffer is not large
+large enough, and the application could retry with a larger buffer.
+@end deftypefun
+
@node Traditional Scheduling
@subsection Traditional Scheduling
@cindex scheduling, traditional
diff --git a/manual/startup.texi b/manual/startup.texi
index 747beed..95b0ed8 100644
--- a/manual/startup.texi
+++ b/manual/startup.texi
@@ -664,8 +664,12 @@ basis there may be information that is not available any other way.
This function is used to inquire about the entries in the auxiliary
vector. The @var{type} argument should be one of the @samp{AT_} symbols
defined in @file{elf.h}. If a matching entry is found, the value is
-returned; if the entry is not found, zero is returned and @code{errno} is
-set to @code{ENOENT}.
+returned; if the entry is not found, zero is returned and @code{errno}
+is set to @code{ENOENT}.
+
+@strong{Note:} There is no relationship between the @samp{AT_} contants
+defined in @file{elf.h} and the file name lookup flags in
+@file{fcntl.h}. @xref{Descriptor-Relative Access}.
@end deftypefun
For some platforms, the key @code{AT_HWCAP} is the easiest way to inquire
@@ -1010,10 +1014,7 @@ for this function is in @file{stdlib.h}.
@deftypefun void abort (void)
@standards{ISO, stdlib.h}
-@safety{@prelim{}@mtsafe{}@asunsafe{@asucorrupt{}}@acunsafe{@aculock{} @acucorrupt{}}}
-@c The implementation takes a recursive lock and attempts to support
-@c calls from signal handlers, but if we're in the middle of flushing or
-@c using streams, we may encounter them in inconsistent states.
+@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
The @code{abort} function causes abnormal program termination. This
does not execute cleanup functions registered with @code{atexit} or
@code{on_exit}.
@@ -1021,6 +1022,10 @@ does not execute cleanup functions registered with @code{atexit} or
This function actually terminates the process by raising a
@code{SIGABRT} signal, and your program can include a handler to
intercept this signal; see @ref{Signal Handling}.
+
+If either the signal handler does not terminate the process, or if the
+signal is blocked, @code{abort} will reset the signal disposition to the
+default @code{SIG_DFL} action and raise the signal again.
@end deftypefun
@node Termination Internals
diff --git a/manual/stdio.texi b/manual/stdio.texi
index 8517653..75aee8a 100644
--- a/manual/stdio.texi
+++ b/manual/stdio.texi
@@ -330,6 +330,14 @@ this ability, so using @code{freopen} is more portable.
When the sources are compiled with @code{_FILE_OFFSET_BITS == 64} on a
32 bit machine this function is in fact @code{freopen64} since the LFS
interface replaces transparently the old interface.
+
+@Theglibc{} only supports use of @code{freopen} on streams opened with
+@code{fopen} or @code{fopen64} and on the original values of the
+standard streams @code{stdin}, @code{stdout}, and @code{stderr}; such
+a stream may be reopened multiple times with @code{freopen}. If it is
+called on another kind of stream (opened with functions such as
+@code{popen}, @code{fmemopen}, @code{open_memstream}, and
+@code{fopencookie}), @code{freopen} fails and returns a null pointer.
@end deftypefun
@deftypefun {FILE *} freopen64 (const char *@var{filename}, const char *@var{opentype}, FILE *@var{stream})
@@ -1467,11 +1475,9 @@ program; usually @code{ungetc} is used only to unread a character that
was just read from the same stream. @Theglibc{} supports this
even on files opened in binary mode, but other systems might not.
-@Theglibc{} only supports one character of pushback---in other
-words, it does not work to call @code{ungetc} twice without doing input
-in between. Other systems might let you push back multiple characters;
-then reading from the stream retrieves the characters in the reverse
-order that they were pushed.
+@Theglibc{} supports pushing back multiple characters; subsequently
+reading from the stream retrieves the characters in the reverse order
+that they were pushed.
Pushing back characters doesn't alter the file; only the internal
buffering for the stream is affected. If a file positioning function
@@ -2356,6 +2362,29 @@ the easiest way to make sure you have all the right prototypes is to
just include @file{stdio.h}.
@pindex stdio.h
+The @code{printf} family shares the error codes listed below.
+Individual functions may report additional @code{errno} values if they
+fail.
+
+@table @code
+@item EOVERFLOW
+The number of written bytes would have exceeded @code{INT_MAX}, and thus
+could not be represented in the return type @code{int}.
+
+@item ENOMEM
+The function could not allocate memory during processing. Long argument
+lists and certain floating point conversions may require memory
+allocation, as does initialization of an output stream upon first use.
+
+@item EILSEQ
+POSIX specifies this error code should be used if a wide character is
+encountered that does not have a matching valid character. @Theglibc{}
+always performs transliteration, using a replacement character if
+necessary, so this error condition cannot occur on output. However,
+@theglibc{} uses @code{EILSEQ} to indicate that an input character
+sequence (wide or multi-byte) could not be converted successfully.
+@end table
+
@deftypefun int printf (const char *@var{template}, @dots{})
@standards{ISO, stdio.h}
@safety{@prelim{}@mtsafe{@mtslocale{}}@asunsafe{@asucorrupt{} @ascuheap{}}@acunsafe{@acsmem{} @aculock{} @acucorrupt{}}}
@@ -2502,6 +2531,26 @@ store the result in which case @code{-1} is returned. This was
changed in order to comply with the @w{ISO C99} standard.
@end deftypefun
+@deftypefun int dprintf (int @var{fd}, @var{template}, ...)
+@standards{POSIX, stdio.h}
+@safety{@mtsafe{@mtslocale{}}@asunsafe{@ascuheap{}}@acunsafe{@acsmem{}}}
+This function formats its arguments according to @var{template} and
+writes the result to the file descriptor @var{fd}, using the
+@code{write} function. It returns the number of bytes written, or a
+negative value if there was an error. In the error case, @code{errno}
+is set appropriately. The possible @code{errno} values depend on the
+type of the file descriptor @var{fd}, in addition to the general
+@code{printf} error codes.
+
+The number of calls to @code{write} is unspecified, and some @code{write}
+calls may have happened even if @code{dprintf} returns with an error.
+
+@strong{Portability Note:} POSIX does not require that this function is
+async-signal-safe, and @theglibc{} implementation is not. However, some
+other systems offer this function as an async-signal-safe alternative to
+@code{fprintf}. @xref{POSIX Safety Concepts}.
+@end deftypefun
+
@node Dynamic Output
@subsection Dynamically Allocating Formatted Output
@@ -2715,6 +2764,13 @@ The @code{obstack_vprintf} function is the equivalent of
as for @code{vprintf}.
@end deftypefun
+@deftypefun int vdprintf (int @var{fd}, const char *@var{template}, va_list @var{ap})
+@standards{POSIX, stdio.h}
+@safety{@mtsafe{@mtslocale{}}@asunsafe{@ascuheap{}}@acunsafe{@acsmem{}}}
+The @code{vdprintf} is the equivalent of @code{dprintf}, but processes
+an argument list.
+@end deftypefun
+
Here's an example showing how you might use @code{vfprintf}. This is a
function that prints error messages to the stream @code{stderr}, along
with a prefix indicating the name of the program
@@ -4112,6 +4168,15 @@ check indicators that are part of the internal state of the stream
object, indicators set if the appropriate condition was detected by a
previous I/O operation on that stream.
+The end of file and error conditions are mutually exclusive. For a
+narrow oriented stream, end of file is not considered an error. For
+wide oriented streams, reaching the end of the underlying file can
+result an error if the underlying file ends with an incomplete multibyte
+sequence. This is reported as an error by @code{ferror}, and not as an
+end of file by @code{feof}. End of file on wide oriented streams that
+does not fall into the middle of a multibyte sequence is reported via
+@code{feof}.
+
@deftypevr Macro int EOF
@standards{ISO, stdio.h}
This macro is an integer value that is returned by a number of narrow
diff --git a/manual/threads.texi b/manual/threads.texi
index 25e99c9..9ea137c 100644
--- a/manual/threads.texi
+++ b/manual/threads.texi
@@ -592,7 +592,7 @@ destructor for the thread-specific data is not called during destruction, nor
is it called during thread exit.
@end deftypefun
-@deftypefun void *pthread_getspecific (pthread_key_t @var{key})
+@deftypefun {void *} pthread_getspecific (pthread_key_t @var{key})
@standards{POSIX, pthread.h}
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
@c pthread_getspecific ok
diff --git a/manual/time.texi b/manual/time.texi
index 6b1080d..90bc9a2 100644
--- a/manual/time.texi
+++ b/manual/time.texi
@@ -532,6 +532,7 @@ Systems may support more than just these two POSIX clocks.
@deftypefun int clock_gettime (clockid_t @var{clock}, struct timespec *@var{ts})
@standards{POSIX.1, time.h}
+@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
Get the current time according to the clock identified by @var{clock},
storing it as seconds and nanoseconds in @code{*@var{ts}}.
@xref{Time Types}, for a description of @code{struct timespec}.
@@ -553,6 +554,7 @@ clock:
@deftypefun int clock_getres (clockid_t @var{clock}, struct timespec *@var{res})
@standards{POSIX.1, time.h}
+@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
Get the actual resolution of the clock identified by @var{clock},
storing it in @code{*@var{ts}}.
@@ -1827,7 +1829,7 @@ can be placed in the buffer @var{s} the return value is zero, with the
same problems indicated in the @code{strftime} documentation.
@end deftypefun
-@deftypefun {Deprecated function} {char *} asctime (const struct tm *@var{brokentime})
+@deftypefn {Deprecated function} {char *} asctime (const struct tm *@var{brokentime})
@standards{ISO, time.h}
@safety{@prelim{}@mtunsafe{@mtasurace{:asctime} @mtslocale{}}@asunsafe{}@acsafe{}}
@c asctime @mtasurace:asctime @mtslocale
@@ -1861,9 +1863,9 @@ string.)
@strong{Portability note:}
This obsolescent function is deprecated in C23.
Programs should instead use @code{strftime} or even @code{sprintf}.
-@end deftypefun
+@end deftypefn
-@deftypefun {Deprecated function} {char *} asctime_r (const struct tm *@var{brokentime}, char *@var{buffer})
+@deftypefn {Deprecated function} {char *} asctime_r (const struct tm *@var{brokentime}, char *@var{buffer})
@standards{???, time.h}
@safety{@prelim{}@mtsafe{@mtslocale{}}@assafe{}@acsafe{}}
@c asctime_r @mtslocale
@@ -1882,9 +1884,9 @@ it returns @code{NULL}.
@strong{Portability Note:}
POSIX.1-2024 removed this obsolescent function.
Programs should instead use @code{strftime} or even @code{sprintf}.
-@end deftypefun
+@end deftypefn
-@deftypefun {Deprecated function} {char *} ctime (const time_t *@var{time})
+@deftypefn {Deprecated function} {char *} ctime (const time_t *@var{time})
@standards{ISO, time.h}
@safety{@prelim{}@mtunsafe{@mtasurace{:tmbuf} @mtasurace{:asctime} @mtsenv{} @mtslocale{}}@asunsafe{@ascuheap{} @asulock{}}@acunsafe{@aculock{} @acsmem{} @acsfd{}}}
@c ctime @mtasurace:tmbuf @mtasurace:asctime @mtsenv @mtslocale @ascuheap @asulock @aculock @acsmem @acsfd
@@ -1907,9 +1909,9 @@ Calling @code{ctime} also sets the time zone state as if
@strong{Portability note:}
This obsolescent function is deprecated in C23.
Programs should instead use @code{strftime} or even @code{sprintf}.
-@end deftypefun
+@end deftypefn
-@deftypefun {Deprecated function} {char *} ctime_r (const time_t *@var{time}, char *@var{buffer})
+@deftypefn {Deprecated function} {char *} ctime_r (const time_t *@var{time}, char *@var{buffer})
@standards{???, time.h}
@safety{@prelim{}@mtsafe{@mtsenv{} @mtslocale{}}@asunsafe{@ascuheap{} @asulock{}}@acunsafe{@aculock{} @acsmem{} @acsfd{}}}
@c ctime_r @mtsenv @mtslocale @ascuheap @asulock @aculock @acsmem @acsfd
@@ -1933,7 +1935,7 @@ it returns @code{NULL}.
@strong{Portability Note:}
POSIX.1-2024 removed this obsolescent function.
Programs should instead use @code{strftime} or even @code{sprintf}.
-@end deftypefun
+@end deftypefn
@node Parsing Date and Time
@subsection Convert textual time and date information back
diff --git a/math/Makefile b/math/Makefile
index f06d370..b64c3ee 100644
--- a/math/Makefile
+++ b/math/Makefile
@@ -1077,6 +1077,7 @@ CFLAGS-test-flt-eval-method.c += -fexcess-precision=standard
CFLAGS-test-fe-snans-always-signal.c += $(config-cflags-signaling-nans)
CFLAGS-test-nan-const.c += -fno-builtin
+CFLAGS-test-nan-payload.c += -fno-builtin
CFLAGS-test-ceil-except-2.c += -fno-builtin
CFLAGS-test-floor-except-2.c += -fno-builtin
diff --git a/math/bits/mathcalls.h b/math/bits/mathcalls.h
index 6cb594b..92856be 100644
--- a/math/bits/mathcalls.h
+++ b/math/bits/mathcalls.h
@@ -126,7 +126,7 @@ __MATHCALL (log2p1,, (_Mdouble_ __x));
__MATHCALL (log10p1,, (_Mdouble_ __x));
/* Return log(1 + X). */
-__MATHCALL (logp1,, (_Mdouble_ __x));
+__MATHCALL_VEC (logp1,, (_Mdouble_ __x));
#endif
#if defined __USE_XOPEN_EXTENDED || defined __USE_ISOC99
diff --git a/math/test-nan-payload.c b/math/test-nan-payload.c
index 4a81dc3..413791e 100644
--- a/math/test-nan-payload.c
+++ b/math/test-nan-payload.c
@@ -16,6 +16,9 @@
License along with the GNU C Library; if not, see
<https://www.gnu.org/licenses/>. */
+#define _LIBC_TEST 1
+#define __STDC_WANT_IEC_60559_TYPES_EXT__
+#include <errno.h>
#include <float.h>
#include <math.h>
#include <stdio.h>
@@ -31,7 +34,7 @@
#define CHECK_IS_NAN(TYPE, A) \
do \
{ \
- if (isnan (A)) \
+ if (isnan (A) && !issignaling (A)) \
puts ("PASS: " #TYPE " " #A); \
else \
{ \
@@ -41,6 +44,19 @@
} \
while (0)
+#define CHECK_PAYLOAD(TYPE, FUNC, A, P) \
+ do \
+ { \
+ if (FUNC (&(A)) == (P)) \
+ puts ("PASS: " #TYPE " payload " #A); \
+ else \
+ { \
+ puts ("FAIL: " #TYPE " payload " #A); \
+ result = 1; \
+ } \
+ } \
+ while (0)
+
#define CHECK_SAME_NAN(TYPE, A, B) \
do \
{ \
@@ -67,33 +83,97 @@
} \
while (0)
+#define CLEAR_ERRNO \
+ do \
+ { \
+ errno = 12345; \
+ } \
+ while (0)
+
+#define CHECK_ERRNO(TYPE, A) \
+ do \
+ { \
+ if (errno == 12345) \
+ puts ("PASS: " #TYPE " " #A " errno"); \
+ else \
+ { \
+ puts ("FAIL: " #TYPE " " #A " errno"); \
+ result = 1; \
+ } \
+ } \
+ while (0)
+
/* Cannot test payloads by memcmp for formats where NaNs have padding
bits. */
#define CAN_TEST_EQ(MANT_DIG) ((MANT_DIG) != 64 && (MANT_DIG) != 106)
-#define RUN_TESTS(TYPE, SFUNC, FUNC, MANT_DIG) \
+#define RUN_TESTS(TYPE, SFUNC, FUNC, PLFUNC, MANT_DIG) \
do \
{ \
+ CLEAR_ERRNO; \
TYPE n123 = WRAP_NAN (FUNC, "123"); \
+ CHECK_ERRNO (TYPE, n123); \
CHECK_IS_NAN (TYPE, n123); \
+ CLEAR_ERRNO; \
TYPE s123 = WRAP_STRTO (SFUNC, "NAN(123)"); \
+ CHECK_ERRNO (TYPE, s123); \
CHECK_IS_NAN (TYPE, s123); \
+ CLEAR_ERRNO; \
TYPE n456 = WRAP_NAN (FUNC, "456"); \
+ CHECK_ERRNO (TYPE, n456); \
CHECK_IS_NAN (TYPE, n456); \
+ CLEAR_ERRNO; \
TYPE s456 = WRAP_STRTO (SFUNC, "NAN(456)"); \
+ CHECK_ERRNO (TYPE, s456); \
CHECK_IS_NAN (TYPE, s456); \
+ CLEAR_ERRNO; \
+ TYPE nh123 = WRAP_NAN (FUNC, "0x123"); \
+ CHECK_ERRNO (TYPE, nh123); \
+ CHECK_IS_NAN (TYPE, nh123); \
+ CLEAR_ERRNO; \
+ TYPE sh123 = WRAP_STRTO (SFUNC, "NAN(0x123)"); \
+ CHECK_ERRNO (TYPE, sh123); \
+ CHECK_IS_NAN (TYPE, sh123); \
+ CLEAR_ERRNO; \
TYPE n123x = WRAP_NAN (FUNC, "123)"); \
+ CHECK_ERRNO (TYPE, n123x); \
CHECK_IS_NAN (TYPE, n123x); \
+ CLEAR_ERRNO; \
TYPE nemp = WRAP_NAN (FUNC, ""); \
+ CHECK_ERRNO (TYPE, nemp); \
CHECK_IS_NAN (TYPE, nemp); \
+ CLEAR_ERRNO; \
TYPE semp = WRAP_STRTO (SFUNC, "NAN()"); \
+ CHECK_ERRNO (TYPE, semp); \
CHECK_IS_NAN (TYPE, semp); \
+ CLEAR_ERRNO; \
TYPE sx = WRAP_STRTO (SFUNC, "NAN"); \
+ CHECK_ERRNO (TYPE, sx); \
CHECK_IS_NAN (TYPE, sx); \
+ CLEAR_ERRNO; \
+ TYPE novf = WRAP_NAN (FUNC, "9999999999" \
+ "99999999999999999999" \
+ "9999999999"); \
+ CHECK_ERRNO (TYPE, novf); \
+ CHECK_IS_NAN (TYPE, novf); \
+ CLEAR_ERRNO; \
+ TYPE sovf = WRAP_STRTO (SFUNC, "NAN(9999999999" \
+ "99999999999999999999" \
+ "9999999999)"); \
+ CHECK_ERRNO (TYPE, sovf); \
+ CHECK_IS_NAN (TYPE, sovf); \
if (CAN_TEST_EQ (MANT_DIG)) \
CHECK_SAME_NAN (TYPE, n123, s123); \
+ CHECK_PAYLOAD (TYPE, PLFUNC, n123, 123); \
+ CHECK_PAYLOAD (TYPE, PLFUNC, s123, 123); \
if (CAN_TEST_EQ (MANT_DIG)) \
CHECK_SAME_NAN (TYPE, n456, s456); \
+ CHECK_PAYLOAD (TYPE, PLFUNC, n456, 456); \
+ CHECK_PAYLOAD (TYPE, PLFUNC, s456, 456); \
+ if (CAN_TEST_EQ (MANT_DIG)) \
+ CHECK_SAME_NAN (TYPE, nh123, sh123); \
+ CHECK_PAYLOAD (TYPE, PLFUNC, nh123, 0x123); \
+ CHECK_PAYLOAD (TYPE, PLFUNC, sh123, 0x123); \
if (CAN_TEST_EQ (MANT_DIG)) \
CHECK_SAME_NAN (TYPE, nemp, semp); \
if (CAN_TEST_EQ (MANT_DIG)) \
@@ -110,9 +190,31 @@ static int
do_test (void)
{
int result = 0;
- RUN_TESTS (float, strtof, nanf, FLT_MANT_DIG);
- RUN_TESTS (double, strtod, nan, DBL_MANT_DIG);
- RUN_TESTS (long double, strtold, nanl, LDBL_MANT_DIG);
+ RUN_TESTS (float, strtof, nanf, getpayloadf, FLT_MANT_DIG);
+ RUN_TESTS (double, strtod, nan, getpayload, DBL_MANT_DIG);
+ RUN_TESTS (long double, strtold, nanl, getpayloadl, LDBL_MANT_DIG);
+#if __HAVE_FLOAT16
+ RUN_TESTS (_Float16, strtof16, nanf16, getpayloadf16, FLT16_MANT_DIG);
+#endif
+#if __HAVE_FLOAT32
+ RUN_TESTS (_Float32, strtof32, nanf32, getpayloadf32, FLT32_MANT_DIG);
+#endif
+#if __HAVE_FLOAT64
+ RUN_TESTS (_Float64, strtof64, nanf64, getpayloadf64, FLT64_MANT_DIG);
+#endif
+#if __HAVE_FLOAT128
+ RUN_TESTS (_Float128, strtof128, nanf128, getpayloadf128, FLT128_MANT_DIG);
+#endif
+#if __HAVE_FLOAT32X
+ RUN_TESTS (_Float32x, strtof32x, nanf32x, getpayloadf32x, FLT32X_MANT_DIG);
+#endif
+#if __HAVE_FLOAT64X
+ RUN_TESTS (_Float64x, strtof64x, nanf64x, getpayloadf64x, FLT64X_MANT_DIG);
+#endif
+#if __HAVE_FLOAT128X
+ RUN_TESTS (_Float128x, strtof128x, nanf128x, getpayloadf128x,
+ FLT128X_MANT_DIG);
+#endif
return result;
}
diff --git a/math/w_tgammaf_compat.c b/math/w_tgammaf_compat.c
index 34e0e09..addbdb1 100644
--- a/math/w_tgammaf_compat.c
+++ b/math/w_tgammaf_compat.c
@@ -14,6 +14,7 @@
#include <errno.h>
#include <math.h>
+#include <stddef.h>
#include <math_private.h>
#include <math-svid-compat.h>
#include <libm-alias-float.h>
@@ -22,8 +23,7 @@
float
__tgammaf(float x)
{
- int local_signgam;
- float y = __ieee754_gammaf_r(x,&local_signgam);
+ float y = __ieee754_gammaf_r(x, NULL);
if(__glibc_unlikely (!isfinite (y) || y == 0)
&& (isfinite (x) || (isinf (x) && x < 0.0))
@@ -41,7 +41,7 @@ __tgammaf(float x)
/* tgammaf overflow */
return __kernel_standard_f(x, x, 140);
}
- return local_signgam < 0 ? - y : y;
+ return y;
}
libm_alias_float (__tgamma, tgamma)
#endif
diff --git a/misc/Makefile b/misc/Makefile
index 7b7f835..a932b1a 100644
--- a/misc/Makefile
+++ b/misc/Makefile
@@ -292,6 +292,12 @@ tests-static := tst-empty
tests-internal += tst-fd_to_filename
tests-static += tst-fd_to_filename
+# Tests with long run times.
+xtests += \
+ tst-mkstemp-fuse \
+ tst-mkstemp-fuse-parallel \
+ # xtests
+
ifeq ($(run-built-tests),yes)
ifeq (yes,$(build-shared))
ifneq ($(PERL),no)
@@ -375,3 +381,4 @@ $(objpfx)tst-select: $(librt)
$(objpfx)tst-select-time64: $(librt)
$(objpfx)tst-pselect: $(librt)
$(objpfx)tst-pselect-time64: $(librt)
+$(objpfx)tst-mkstemp-fuse-parallel: $(shared-thread-library)
diff --git a/misc/tst-mkstemp-fuse-parallel.c b/misc/tst-mkstemp-fuse-parallel.c
new file mode 100644
index 0000000..219f26c
--- /dev/null
+++ b/misc/tst-mkstemp-fuse-parallel.c
@@ -0,0 +1,219 @@
+/* FUSE-based test for mkstemp. Parallel collision statistics.
+ Copyright (C) 2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+#include <stdlib.h>
+
+#include <array_length.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <limits.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <string.h>
+#include <support/check.h>
+#include <support/fuse.h>
+#include <support/support.h>
+#include <support/xthread.h>
+#include <support/xunistd.h>
+
+/* The number of subprocesses that call mkstemp. */
+static pid_t processes[4];
+
+/* Enough space to record the expected number of replies (62**3) for
+ each process. */
+enum { results_allocated = array_length (processes) * 62 * 62 * 62 };
+
+/* The thread will store the results there. */
+static uint64_t *results;
+
+/* Currently used part of the results array. */
+static size_t results_used;
+
+/* Fail with EEXIST (so that mkstemp tries again). Record observed
+ names for later statistical analysis. */
+static void
+fuse_thread (struct support_fuse *f, void *closure)
+{
+ struct fuse_in_header *inh;
+ while ((inh = support_fuse_next (f)) != NULL)
+ {
+ if (support_fuse_handle_mountpoint (f)
+ || (inh->nodeid == 1 && support_fuse_handle_directory (f)))
+ continue;
+ if (inh->opcode != FUSE_LOOKUP || results_used >= results_allocated)
+ {
+ support_fuse_reply_error (f, EIO);
+ continue;
+ }
+
+ char *name = support_fuse_cast (LOOKUP, inh);
+ TEST_COMPARE_BLOB (name, 3, "new", 3);
+ TEST_COMPARE (strlen (name), 9);
+ /* Extract 8 bytes of the name: 'w', the X replacements, and the
+ null terminator. Treat it as an uint64_t for easy sorting
+ below. Endianess does not matter because the relative order
+ of the entries is not important; sorting is only used to find
+ duplicates. */
+ TEST_VERIFY_EXIT (results_used < results_allocated);
+ memcpy (&results[results_used], name + 2, 8);
+ ++results_used;
+ struct fuse_entry_out *out = support_fuse_prepare_entry (f, 2);
+ out->attr.mode = S_IFREG | 0600;
+ support_fuse_reply_prepared (f);
+ }
+}
+
+/* Used to sort the results array, to find duplicates. */
+static int
+results_sort (const void *a1, const void *b1)
+{
+ const uint64_t *a = a1;
+ const uint64_t *b = b1;
+ if (*a < *b)
+ return -1;
+ if (*a == *b)
+ return 0;
+ return 1;
+}
+
+/* Number of occurrences of certain streak lengths. */
+static size_t streak_lengths[6];
+
+/* Called for every encountered streak. */
+static inline void
+report_streak (uint64_t current, size_t length)
+{
+ if (length > 1)
+ {
+ printf ("info: name \"ne%.8s\" repeats: %zu\n",
+ (char *) &current, length);
+ TEST_VERIFY_EXIT (length < array_length (streak_lengths));
+ }
+ TEST_VERIFY_EXIT (length < array_length (streak_lengths));
+ ++streak_lengths[length];
+}
+
+static int
+do_test (void)
+{
+ support_fuse_init ();
+
+ results = xmalloc (results_allocated * sizeof (*results));
+
+ struct shared
+ {
+ /* Used to synchronize the start of all subprocesses, to make it
+ more likely to expose concurrency-related bugs. */
+ pthread_barrier_t barrier1;
+ pthread_barrier_t barrier2;
+
+ /* Filled in after fork. */
+ char mountpoint[4096];
+ };
+
+ /* Used to synchronize the start of all subprocesses, to make it
+ more likely to expose concurrency-related bugs. */
+ struct shared *pshared = support_shared_allocate (sizeof (*pshared));
+ {
+ pthread_barrierattr_t attr;
+ xpthread_barrierattr_init (&attr);
+ xpthread_barrierattr_setpshared (&attr, PTHREAD_PROCESS_SHARED);
+ xpthread_barrierattr_destroy (&attr);
+ xpthread_barrier_init (&pshared->barrier1, &attr,
+ array_length (processes) + 1);
+ xpthread_barrier_init (&pshared->barrier2, &attr,
+ array_length (processes) + 1);
+ xpthread_barrierattr_destroy (&attr);
+ }
+
+ for (int i = 0; i < array_length (processes); ++i)
+ {
+ processes[i] = xfork ();
+ if (processes[i] == 0)
+ {
+ /* Wait for mountpoint initialization. */
+ xpthread_barrier_wait (&pshared->barrier1);
+ char *path = xasprintf ("%s/newXXXXXX", pshared->mountpoint);
+
+ /* Park this process until all processes have started. */
+ xpthread_barrier_wait (&pshared->barrier2);
+ errno = 0;
+ TEST_COMPARE (mkstemp (path), -1);
+ TEST_COMPARE (errno, EEXIST);
+ free (path);
+ _exit (0);
+ }
+ }
+
+ /* Do this after the forking, to minimize initialization inteference. */
+ struct support_fuse *f = support_fuse_mount (fuse_thread, NULL);
+ TEST_VERIFY (strlcpy (pshared->mountpoint, support_fuse_mountpoint (f),
+ sizeof (pshared->mountpoint))
+ < sizeof (pshared->mountpoint));
+ xpthread_barrier_wait (&pshared->barrier1);
+
+ puts ("info: performing mkstemp calls");
+ xpthread_barrier_wait (&pshared->barrier2);
+
+ for (int i = 0; i < array_length (processes); ++i)
+ {
+ int status;
+ xwaitpid (processes[i], &status, 0);
+ TEST_COMPARE (status, 0);
+ }
+
+ support_fuse_unmount (f);
+ xpthread_barrier_destroy (&pshared->barrier2);
+ xpthread_barrier_destroy (&pshared->barrier1);
+
+ printf ("info: checking results (count %zu)\n", results_used);
+ qsort (results, results_used, sizeof (*results), results_sort);
+
+ uint64_t current = -1;
+ size_t streak = 0;
+ for (size_t i = 0; i < results_used; ++i)
+ if (results[i] == current)
+ ++streak;
+ else
+ {
+ report_streak (current, streak);
+ current = results[i];
+ streak = 1;
+ }
+ report_streak (current, streak);
+
+ puts ("info: repetition count distribution:");
+ for (int i = 1; i < array_length (streak_lengths); ++i)
+ printf (" length %d: %zu\n", i, streak_lengths[i]);
+ /* Some arbitrary threshold, hopefully unlikely enough. In over
+ 260,000 runs of a simulation of this test, at most 26 pairs were
+ observed, and only one three-way collisions. */
+ if (streak_lengths[2] > 30)
+ FAIL ("unexpected repetition count 2: %zu", streak_lengths[2]);
+ if (streak_lengths[3] > 2)
+ FAIL ("unexpected repetition count 3: %zu", streak_lengths[3]);
+ for (int i = 4; i < array_length (streak_lengths); ++i)
+ if (streak_lengths[i] > 0)
+ FAIL ("too many repeats of count %d: %zu", i, streak_lengths[i]);
+
+ free (results);
+
+ return 0;
+}
+
+#include <support/test-driver.c>
diff --git a/misc/tst-mkstemp-fuse.c b/misc/tst-mkstemp-fuse.c
new file mode 100644
index 0000000..5ac6a68
--- /dev/null
+++ b/misc/tst-mkstemp-fuse.c
@@ -0,0 +1,197 @@
+/* FUSE-based test for mkstemp.
+ Copyright (C) 2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+#include <stdlib.h>
+
+#include <errno.h>
+#include <fcntl.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <string.h>
+#include <support/check.h>
+#include <support/fuse.h>
+#include <support/support.h>
+#include <support/xunistd.h>
+
+/* Set to true in do_test to cause the first FUSE_CREATE attempt to fail. */
+static _Atomic bool simulate_creat_race;
+
+/* Basic tests with eventually successful creation. */
+static void
+fuse_thread_basic (struct support_fuse *f, void *closure)
+{
+ char *previous_name = NULL;
+ int state = 0;
+ struct fuse_in_header *inh;
+ while ((inh = support_fuse_next (f)) != NULL)
+ {
+ if (support_fuse_handle_mountpoint (f)
+ || (inh->nodeid == 1 && support_fuse_handle_directory (f)))
+ continue;
+
+ switch (inh->opcode)
+ {
+ case FUSE_LOOKUP:
+ /* File does not exist initially. */
+ TEST_COMPARE (inh->nodeid, 1);
+ if (simulate_creat_race)
+ {
+ if (state < 3)
+ ++state;
+ else
+ FAIL ("invalid state: %d", state);
+ }
+ else
+ {
+ TEST_COMPARE (state, 0);
+ state = 3;
+ }
+ support_fuse_reply_error (f, ENOENT);
+ break;
+ case FUSE_CREATE:
+ {
+ TEST_COMPARE (inh->nodeid, 1);
+ char *name;
+ struct fuse_create_in *p
+ = support_fuse_cast_name (CREATE, inh, &name);
+ /* Name follows after struct fuse_create_in. */
+ TEST_COMPARE (p->flags & O_ACCMODE, O_RDWR);
+ TEST_VERIFY (p->flags & O_EXCL);
+ TEST_VERIFY (p->flags & O_CREAT);
+ TEST_COMPARE (p->mode & 07777, 0600);
+ TEST_VERIFY (S_ISREG (p->mode));
+ TEST_COMPARE_BLOB (name, 3, "new", 3);
+
+ if (state != 3 && simulate_creat_race)
+ {
+ ++state;
+ support_fuse_reply_error (f, EEXIST);
+ }
+ else
+ {
+ if (previous_name != NULL)
+ /* This test has a very small probability of failure
+ due to a harmless collision (one in 62**6 tests). */
+ TEST_VERIFY (strcmp (name, previous_name) != 0);
+ TEST_COMPARE (state, 3);
+ ++state;
+ struct fuse_entry_out *entry;
+ struct fuse_open_out *open;
+ support_fuse_prepare_create (f, 2, &entry, &open);
+ entry->attr.mode = S_IFREG | 0600;
+ support_fuse_reply_prepared (f);
+ }
+ free (previous_name);
+ previous_name = xstrdup (name);
+ }
+ break;
+ case FUSE_FLUSH:
+ case FUSE_RELEASE:
+ TEST_COMPARE (state, 4);
+ TEST_COMPARE (inh->nodeid, 2);
+ support_fuse_reply_empty (f);
+ break;
+ default:
+ support_fuse_reply_error (f, EIO);
+ }
+ }
+ free (previous_name);
+}
+
+/* Reply that all files exist. */
+static void
+fuse_thread_eexist (struct support_fuse *f, void *closure)
+{
+ uint64_t counter = 0;
+ struct fuse_in_header *inh;
+ while ((inh = support_fuse_next (f)) != NULL)
+ {
+ if (support_fuse_handle_mountpoint (f)
+ || (inh->nodeid == 1 && support_fuse_handle_directory (f)))
+ continue;
+
+ switch (inh->opcode)
+ {
+ case FUSE_LOOKUP:
+ ++counter;
+ TEST_COMPARE (inh->nodeid, 1);
+ char *name = support_fuse_cast (LOOKUP, inh);
+ TEST_COMPARE_BLOB (name, 3, "new", 3);
+ TEST_COMPARE (strlen (name), 9);
+ for (int i = 3; i <= 8; ++i)
+ {
+ /* The glibc implementation uses letters and digits only. */
+ char ch = name[i];
+ TEST_VERIFY (('0' <= ch && ch <= '9')
+ || ('a' <= ch && ch <= 'z')
+ || ('A' <= ch && ch <= 'Z'));
+ }
+ struct fuse_entry_out out =
+ {
+ .nodeid = 2,
+ .attr = {
+ .mode = S_IFREG | 0600,
+ .ino = 2,
+ },
+ };
+ support_fuse_reply (f, &out, sizeof (out));
+ break;
+ default:
+ support_fuse_reply_error (f, EIO);
+ }
+ }
+ /* Verify that mkstemp has retried a lot. The current
+ implementation tries 62 * 62 * 62 times until it goves up. */
+ TEST_VERIFY (counter >= 200000);
+}
+
+static int
+do_test (void)
+{
+ support_fuse_init ();
+
+ for (int do_simulate_creat_race = 0; do_simulate_creat_race < 2;
+ ++do_simulate_creat_race)
+ {
+ simulate_creat_race = do_simulate_creat_race;
+ printf ("info: testing with simulate_creat_race == %d\n",
+ (int) simulate_creat_race);
+ struct support_fuse *f = support_fuse_mount (fuse_thread_basic, NULL);
+ char *path = xasprintf ("%s/newXXXXXX", support_fuse_mountpoint (f));
+ int fd = mkstemp (path);
+ TEST_VERIFY (fd > 2);
+ xclose (fd);
+ free (path);
+ support_fuse_unmount (f);
+ }
+
+ puts ("info: testing EEXIST failure case for mkstemp");
+ {
+ struct support_fuse *f = support_fuse_mount (fuse_thread_eexist, NULL);
+ char *path = xasprintf ("%s/newXXXXXX", support_fuse_mountpoint (f));
+ errno = 0;
+ TEST_COMPARE (mkstemp (path), -1);
+ TEST_COMPARE (errno, EEXIST);
+ free (path);
+ support_fuse_unmount (f);
+ }
+
+ return 0;
+}
+
+#include <support/test-driver.c>
diff --git a/misc/tst-preadvwritev2-common.c b/misc/tst-preadvwritev2-common.c
index 8e04ff7..4556421 100644
--- a/misc/tst-preadvwritev2-common.c
+++ b/misc/tst-preadvwritev2-common.c
@@ -37,8 +37,11 @@
#ifndef RWF_NOAPPEND
# define RWF_NOAPPEND 0
#endif
+#ifndef RWF_ATOMIC
+# define RWF_ATOMIC 0
+#endif
#define RWF_SUPPORTED (RWF_HIPRI | RWF_DSYNC | RWF_SYNC | RWF_NOWAIT \
- | RWF_APPEND | RWF_NOAPPEND)
+ | RWF_APPEND | RWF_NOAPPEND | RWF_ATOMIC)
/* Generic uio_lim.h does not define IOV_MAX. */
#ifndef IOV_MAX
diff --git a/nptl/Makefile b/nptl/Makefile
index c4c27e0..bf4c29b 100644
--- a/nptl/Makefile
+++ b/nptl/Makefile
@@ -204,6 +204,7 @@ routines = \
sem_timedwait \
sem_unlink \
sem_wait \
+ syscall_cancel \
tpp \
unwind \
vars \
@@ -235,7 +236,8 @@ CFLAGS-pthread_setcanceltype.c += -fexceptions -fasynchronous-unwind-tables
# These are internal functions which similar functionality as setcancelstate
# and setcanceltype.
-CFLAGS-cancellation.c += -fasynchronous-unwind-tables
+CFLAGS-cancellation.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-syscall_cancel.c += -fexceptions -fasynchronous-unwind-tables
# Calling pthread_exit() must cause the registered cancel handlers to
# be executed. Therefore exceptions have to be thrown through this
@@ -279,6 +281,7 @@ tests = \
tst-cancel7 \
tst-cancel17 \
tst-cancel24 \
+ tst-cancel31 \
tst-cond26 \
tst-context1 \
tst-default-attr \
@@ -404,7 +407,10 @@ xtests += tst-eintr1
test-srcs = tst-oddstacklimit
-gen-as-const-headers = unwindbuf.sym
+gen-as-const-headers = \
+ descr-const.sym \
+ unwindbuf.sym \
+ # gen-as-const-headers
gen-py-const-headers := nptl_lock_constants.pysym
pretty-printers := nptl-printers.py
diff --git a/nptl/cancellation.c b/nptl/cancellation.c
index 7ce60e7..e71008b 100644
--- a/nptl/cancellation.c
+++ b/nptl/cancellation.c
@@ -18,74 +18,93 @@
#include <setjmp.h>
#include <stdlib.h>
#include "pthreadP.h"
-#include <futex-internal.h>
-
-/* The next two functions are similar to pthread_setcanceltype() but
- more specialized for the use in the cancelable functions like write().
- They do not need to check parameters etc. These functions must be
- AS-safe, with the exception of the actual cancellation, because they
- are called by wrappers around AS-safe functions like write().*/
-int
-__pthread_enable_asynccancel (void)
+/* Called by the INTERNAL_SYSCALL_CANCEL macro, check for cancellation and
+ returns the syscall value or its negative error code. */
+long int
+__internal_syscall_cancel (__syscall_arg_t a1, __syscall_arg_t a2,
+ __syscall_arg_t a3, __syscall_arg_t a4,
+ __syscall_arg_t a5, __syscall_arg_t a6,
+ __SYSCALL_CANCEL7_ARG_DEF
+ __syscall_arg_t nr)
{
- struct pthread *self = THREAD_SELF;
- int oldval = atomic_load_relaxed (&self->cancelhandling);
+ long int result;
+ struct pthread *pd = THREAD_SELF;
- while (1)
+ /* If cancellation is not enabled, call the syscall directly and also
+ for thread terminatation to avoid call __syscall_do_cancel while
+ executing cleanup handlers. */
+ int ch = atomic_load_relaxed (&pd->cancelhandling);
+ if (SINGLE_THREAD_P || !cancel_enabled (ch) || cancel_exiting (ch))
{
- int newval = oldval | CANCELTYPE_BITMASK;
-
- if (newval == oldval)
- break;
+ result = INTERNAL_SYSCALL_NCS_CALL (nr, a1, a2, a3, a4, a5, a6
+ __SYSCALL_CANCEL7_ARCH_ARG7);
+ if (INTERNAL_SYSCALL_ERROR_P (result))
+ return -INTERNAL_SYSCALL_ERRNO (result);
+ return result;
+ }
- if (atomic_compare_exchange_weak_acquire (&self->cancelhandling,
- &oldval, newval))
- {
- if (cancel_enabled_and_canceled_and_async (newval))
- {
- self->result = PTHREAD_CANCELED;
- __do_cancel ();
- }
+ /* Call the arch-specific entry points that contains the globals markers
+ to be checked by SIGCANCEL handler. */
+ result = __syscall_cancel_arch (&pd->cancelhandling, nr, a1, a2, a3, a4, a5,
+ a6 __SYSCALL_CANCEL7_ARCH_ARG7);
- break;
- }
- }
+ /* If the cancellable syscall was interrupted by SIGCANCEL and it has no
+ side-effect, cancel the thread if cancellation is enabled. */
+ ch = atomic_load_relaxed (&pd->cancelhandling);
+ /* The behaviour here assumes that EINTR is returned only if there are no
+ visible side effects. POSIX Issue 7 has not yet provided any stronger
+ language for close, and in theory the close syscall could return EINTR
+ and leave the file descriptor open (conforming and leaks). It expects
+ that no such kernel is used with glibc. */
+ if (result == -EINTR && cancel_enabled_and_canceled (ch))
+ __syscall_do_cancel ();
- return oldval;
+ return result;
}
-libc_hidden_def (__pthread_enable_asynccancel)
-/* See the comment for __pthread_enable_asynccancel regarding
- the AS-safety of this function. */
-void
-__pthread_disable_asynccancel (int oldtype)
+/* Called by the SYSCALL_CANCEL macro, check for cancellation and return the
+ syscall expected success value (usually 0) or, in case of failure, -1 and
+ sets errno to syscall return value. */
+long int
+__syscall_cancel (__syscall_arg_t a1, __syscall_arg_t a2,
+ __syscall_arg_t a3, __syscall_arg_t a4,
+ __syscall_arg_t a5, __syscall_arg_t a6,
+ __SYSCALL_CANCEL7_ARG_DEF __syscall_arg_t nr)
{
- /* If asynchronous cancellation was enabled before we do not have
- anything to do. */
- if (oldtype & CANCELTYPE_BITMASK)
- return;
+ int r = __internal_syscall_cancel (a1, a2, a3, a4, a5, a6,
+ __SYSCALL_CANCEL7_ARG nr);
+ return __glibc_unlikely (INTERNAL_SYSCALL_ERROR_P (r))
+ ? SYSCALL_ERROR_LABEL (INTERNAL_SYSCALL_ERRNO (r))
+ : r;
+}
+/* Called by __syscall_cancel_arch or function above start the thread
+ cancellation. */
+_Noreturn void
+__syscall_do_cancel (void)
+{
struct pthread *self = THREAD_SELF;
- int newval;
+
+ /* Disable thread cancellation to avoid cancellable entrypoints calling
+ __syscall_do_cancel recursively. We atomic load relaxed to check the
+ state of cancelhandling, there is no particular ordering requirement
+ between the syscall call and the other thread setting our cancelhandling
+ with a atomic store acquire.
+
+ POSIX Issue 7 notes that the cancellation occurs asynchronously on the
+ target thread, that implies there is no ordering requirements. It does
+ not need a MO release store here. */
int oldval = atomic_load_relaxed (&self->cancelhandling);
- do
+ while (1)
{
- newval = oldval & ~CANCELTYPE_BITMASK;
+ int newval = oldval | CANCELSTATE_BITMASK;
+ if (oldval == newval)
+ break;
+ if (atomic_compare_exchange_weak_acquire (&self->cancelhandling,
+ &oldval, newval))
+ break;
}
- while (!atomic_compare_exchange_weak_acquire (&self->cancelhandling,
- &oldval, newval));
- /* We cannot return when we are being canceled. Upon return the
- thread might be things which would have to be undone. The
- following loop should loop until the cancellation signal is
- delivered. */
- while (__glibc_unlikely ((newval & (CANCELING_BITMASK | CANCELED_BITMASK))
- == CANCELING_BITMASK))
- {
- futex_wait_simple ((unsigned int *) &self->cancelhandling, newval,
- FUTEX_PRIVATE);
- newval = atomic_load_relaxed (&self->cancelhandling);
- }
+ __do_cancel (PTHREAD_CANCELED);
}
-libc_hidden_def (__pthread_disable_asynccancel)
diff --git a/nptl/cleanup_defer.c b/nptl/cleanup_defer.c
index dc08eda..db32c4f 100644
--- a/nptl/cleanup_defer.c
+++ b/nptl/cleanup_defer.c
@@ -82,10 +82,7 @@ ___pthread_unregister_cancel_restore (__pthread_unwind_buf_t *buf)
&cancelhandling, newval));
if (cancel_enabled_and_canceled (cancelhandling))
- {
- self->result = PTHREAD_CANCELED;
- __do_cancel ();
- }
+ __do_cancel (PTHREAD_CANCELED);
}
}
versioned_symbol (libc, ___pthread_unregister_cancel_restore,
diff --git a/nptl/descr-const.sym b/nptl/descr-const.sym
new file mode 100644
index 0000000..8608248
--- /dev/null
+++ b/nptl/descr-const.sym
@@ -0,0 +1,6 @@
+#include <tls.h>
+
+-- Not strictly offsets, these values are using thread cancellation by arch
+-- specific cancel entrypoint.
+TCB_CANCELED_BIT CANCELED_BIT
+TCB_CANCELED_BITMASK CANCELED_BITMASK
diff --git a/nptl/descr.h b/nptl/descr.h
index 8cef958..65d3baa 100644
--- a/nptl/descr.h
+++ b/nptl/descr.h
@@ -426,6 +426,24 @@ struct pthread
} __attribute ((aligned (TCB_ALIGNMENT)));
static inline bool
+cancel_enabled (int value)
+{
+ return (value & CANCELSTATE_BITMASK) == 0;
+}
+
+static inline bool
+cancel_async_enabled (int value)
+{
+ return (value & CANCELTYPE_BITMASK) != 0;
+}
+
+static inline bool
+cancel_exiting (int value)
+{
+ return (value & EXITING_BITMASK) != 0;
+}
+
+static inline bool
cancel_enabled_and_canceled (int value)
{
return (value & (CANCELSTATE_BITMASK | CANCELED_BITMASK | EXITING_BITMASK
diff --git a/nptl/libc-cleanup.c b/nptl/libc-cleanup.c
index fe042c8..20d746c 100644
--- a/nptl/libc-cleanup.c
+++ b/nptl/libc-cleanup.c
@@ -69,10 +69,7 @@ __libc_cleanup_pop_restore (struct _pthread_cleanup_buffer *buffer)
&cancelhandling, newval));
if (cancel_enabled_and_canceled (cancelhandling))
- {
- self->result = PTHREAD_CANCELED;
- __do_cancel ();
- }
+ __do_cancel (PTHREAD_CANCELED);
}
}
libc_hidden_def (__libc_cleanup_pop_restore)
diff --git a/nptl/pthread_cancel.c b/nptl/pthread_cancel.c
index 69701db..012c4eb 100644
--- a/nptl/pthread_cancel.c
+++ b/nptl/pthread_cancel.c
@@ -23,6 +23,7 @@
#include <sysdep.h>
#include <unistd.h>
#include <unwind-link.h>
+#include <cancellation-pc-check.h>
#include <stdio.h>
#include <gnu/lib-names.h>
#include <sys/single_threaded.h>
@@ -40,31 +41,16 @@ sigcancel_handler (int sig, siginfo_t *si, void *ctx)
|| si->si_code != SI_TKILL)
return;
+ /* Check if asynchronous cancellation mode is set or if interrupted
+ instruction pointer falls within the cancellable syscall bridge. For
+ interruptable syscalls with external side-effects (i.e. partial reads),
+ the kernel will set the IP to after __syscall_cancel_arch_end, thus
+ disabling the cancellation and allowing the process to handle such
+ conditions. */
struct pthread *self = THREAD_SELF;
-
int oldval = atomic_load_relaxed (&self->cancelhandling);
- while (1)
- {
- /* We are canceled now. When canceled by another thread this flag
- is already set but if the signal is directly send (internally or
- from another process) is has to be done here. */
- int newval = oldval | CANCELING_BITMASK | CANCELED_BITMASK;
-
- if (oldval == newval || (oldval & EXITING_BITMASK) != 0)
- /* Already canceled or exiting. */
- break;
-
- if (atomic_compare_exchange_weak_acquire (&self->cancelhandling,
- &oldval, newval))
- {
- self->result = PTHREAD_CANCELED;
-
- /* Make sure asynchronous cancellation is still enabled. */
- if ((oldval & CANCELTYPE_BITMASK) != 0)
- /* Run the registered destructors and terminate the thread. */
- __do_cancel ();
- }
- }
+ if (cancel_async_enabled (oldval) || cancellation_pc_check (ctx))
+ __syscall_do_cancel ();
}
int
@@ -106,15 +92,13 @@ __pthread_cancel (pthread_t th)
/* Some syscalls are never restarted after being interrupted by a signal
handler, regardless of the use of SA_RESTART (they always fail with
EINTR). So pthread_cancel cannot send SIGCANCEL unless the cancellation
- is enabled and set as asynchronous (in this case the cancellation will
- be acted in the cancellation handler instead by the syscall wrapper).
- Otherwise the target thread is set as 'cancelling' (CANCELING_BITMASK)
+ is enabled.
+ In this case the target thread is set as 'cancelled' (CANCELED_BITMASK)
by atomically setting 'cancelhandling' and the cancelation will be acted
upon on next cancellation entrypoing in the target thread.
- It also requires to atomically check if cancellation is enabled and
- asynchronous, so both cancellation state and type are tracked on
- 'cancelhandling'. */
+ It also requires to atomically check if cancellation is enabled, so the
+ state are also tracked on 'cancelhandling'. */
int result = 0;
int oldval = atomic_load_relaxed (&pd->cancelhandling);
@@ -122,19 +106,17 @@ __pthread_cancel (pthread_t th)
do
{
again:
- newval = oldval | CANCELING_BITMASK | CANCELED_BITMASK;
+ newval = oldval | CANCELED_BITMASK;
if (oldval == newval)
break;
- /* If the cancellation is handled asynchronously just send a
- signal. We avoid this if possible since it's more
- expensive. */
- if (cancel_enabled_and_canceled_and_async (newval))
+ /* Only send the SIGANCEL signal if cancellation is enabled, since some
+ syscalls are never restarted even with SA_RESTART. The signal
+ will act iff async cancellation is enabled. */
+ if (cancel_enabled (newval))
{
- /* Mark the cancellation as "in progress". */
- int newval2 = oldval | CANCELING_BITMASK;
if (!atomic_compare_exchange_weak_acquire (&pd->cancelhandling,
- &oldval, newval2))
+ &oldval, newval))
goto again;
if (pd == THREAD_SELF)
@@ -143,9 +125,8 @@ __pthread_cancel (pthread_t th)
pthread_create, so the signal handler may not have been
set up for a self-cancel. */
{
- pd->result = PTHREAD_CANCELED;
- if ((newval & CANCELTYPE_BITMASK) != 0)
- __do_cancel ();
+ if (cancel_async_enabled (newval))
+ __do_cancel (PTHREAD_CANCELED);
}
else
/* The cancellation handler will take care of marking the
@@ -154,19 +135,18 @@ __pthread_cancel (pthread_t th)
break;
}
-
- /* A single-threaded process should be able to kill itself, since
- there is nothing in the POSIX specification that says that it
- cannot. So we set multiple_threads to true so that cancellation
- points get executed. */
- THREAD_SETMEM (THREAD_SELF, header.multiple_threads, 1);
-#ifndef TLS_MULTIPLE_THREADS_IN_TCB
- __libc_single_threaded_internal = 0;
-#endif
}
while (!atomic_compare_exchange_weak_acquire (&pd->cancelhandling, &oldval,
newval));
+ /* A single-threaded process should be able to kill itself, since there is
+ nothing in the POSIX specification that says that it cannot. So we set
+ multiple_threads to true so that cancellation points get executed. */
+ THREAD_SETMEM (THREAD_SELF, header.multiple_threads, 1);
+#ifndef TLS_MULTIPLE_THREADS_IN_TCB
+ __libc_single_threaded_internal = 0;
+#endif
+
return result;
}
versioned_symbol (libc, __pthread_cancel, pthread_cancel, GLIBC_2_34);
diff --git a/nptl/pthread_exit.c b/nptl/pthread_exit.c
index dc2635f..600ab03 100644
--- a/nptl/pthread_exit.c
+++ b/nptl/pthread_exit.c
@@ -31,9 +31,7 @@ __pthread_exit (void *value)
" must be installed for pthread_exit to work\n");
}
- THREAD_SETMEM (THREAD_SELF, result, value);
-
- __do_cancel ();
+ __do_cancel (value);
}
libc_hidden_def (__pthread_exit)
weak_alias (__pthread_exit, pthread_exit)
diff --git a/nptl/pthread_kill.c b/nptl/pthread_kill.c
index 71e5a7b..fa5121a 100644
--- a/nptl/pthread_kill.c
+++ b/nptl/pthread_kill.c
@@ -69,6 +69,17 @@ __pthread_kill_implementation (pthread_t threadid, int signo, int no_tid)
return ret;
}
+/* Send the signal SIGNO to the caller. Used by abort and called where the
+ signals are being already blocked and there is no need to synchronize with
+ exit_lock. */
+int
+__pthread_raise_internal (int signo)
+{
+ /* Use the gettid syscall so it works after vfork. */
+ int ret = INTERNAL_SYSCALL_CALL (tgkill, __getpid (), __gettid(), signo);
+ return INTERNAL_SYSCALL_ERROR_P (ret) ? INTERNAL_SYSCALL_ERRNO (ret) : 0;
+}
+
int
__pthread_kill_internal (pthread_t threadid, int signo)
{
diff --git a/nptl/pthread_setcancelstate.c b/nptl/pthread_setcancelstate.c
index 18fb42a..787c45a 100644
--- a/nptl/pthread_setcancelstate.c
+++ b/nptl/pthread_setcancelstate.c
@@ -48,7 +48,7 @@ __pthread_setcancelstate (int state, int *oldstate)
&oldval, newval))
{
if (cancel_enabled_and_canceled_and_async (newval))
- __do_cancel ();
+ __do_cancel (PTHREAD_CANCELED);
break;
}
diff --git a/nptl/pthread_setcanceltype.c b/nptl/pthread_setcanceltype.c
index cf441ce..3b5b034 100644
--- a/nptl/pthread_setcanceltype.c
+++ b/nptl/pthread_setcanceltype.c
@@ -48,7 +48,7 @@ __pthread_setcanceltype (int type, int *oldtype)
if (cancel_enabled_and_canceled_and_async (newval))
{
THREAD_SETMEM (self, result, PTHREAD_CANCELED);
- __do_cancel ();
+ __do_cancel (PTHREAD_CANCELED);
}
break;
diff --git a/nptl/pthread_testcancel.c b/nptl/pthread_testcancel.c
index a0197b5..be0e8d5 100644
--- a/nptl/pthread_testcancel.c
+++ b/nptl/pthread_testcancel.c
@@ -25,10 +25,7 @@ ___pthread_testcancel (void)
struct pthread *self = THREAD_SELF;
int cancelhandling = atomic_load_relaxed (&self->cancelhandling);
if (cancel_enabled_and_canceled (cancelhandling))
- {
- self->result = PTHREAD_CANCELED;
- __do_cancel ();
- }
+ __do_cancel (PTHREAD_CANCELED);
}
versioned_symbol (libc, ___pthread_testcancel, pthread_testcancel, GLIBC_2_34);
libc_hidden_ver (___pthread_testcancel, __pthread_testcancel)
diff --git a/nptl/tst-cancel31.c b/nptl/tst-cancel31.c
new file mode 100644
index 0000000..f9cc824
--- /dev/null
+++ b/nptl/tst-cancel31.c
@@ -0,0 +1,100 @@
+/* Verify side-effects of cancellable syscalls (BZ #12683).
+ Copyright (C) 2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+/* This testcase checks if there is resource leakage if the syscall has
+ returned from kernelspace, but before userspace saves the return
+ value. The 'leaker' thread should be able to close the file descriptor
+ if the resource is already allocated, meaning that if the cancellation
+ signal arrives *after* the open syscal return from kernel, the
+ side-effect should be visible to application. */
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <stdlib.h>
+
+#include <support/xunistd.h>
+#include <support/xthread.h>
+#include <support/check.h>
+#include <support/temp_file.h>
+#include <support/support.h>
+#include <support/descriptors.h>
+
+static void *
+writeopener (void *arg)
+{
+ int fd;
+ for (;;)
+ {
+ fd = open (arg, O_WRONLY);
+ xclose (fd);
+ }
+ return NULL;
+}
+
+static void *
+leaker (void *arg)
+{
+ int fd = open (arg, O_RDONLY);
+ TEST_VERIFY_EXIT (fd > 0);
+ pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, 0);
+ xclose (fd);
+ return NULL;
+}
+
+static int
+do_test (void)
+{
+ enum {
+ iter_count = 1000
+ };
+
+ char *dir = support_create_temp_directory ("tst-cancel28");
+ char *name = xasprintf ("%s/fifo", dir);
+ TEST_COMPARE (mkfifo (name, 0600), 0);
+ add_temp_file (name);
+
+ struct support_descriptors *descrs = support_descriptors_list ();
+
+ srand (1);
+
+ xpthread_create (NULL, writeopener, name);
+ for (int i = 0; i < iter_count; i++)
+ {
+ pthread_t td = xpthread_create (NULL, leaker, name);
+ struct timespec ts =
+ { .tv_nsec = rand () % 100000, .tv_sec = 0 };
+ nanosleep (&ts, NULL);
+ /* Ignore pthread_cancel result because it might be the
+ case when pthread_cancel is called when thread is already
+ exited. */
+ pthread_cancel (td);
+ xpthread_join (td);
+ }
+
+ support_descriptors_check (descrs);
+
+ support_descriptors_free (descrs);
+
+ free (name);
+
+ return 0;
+}
+
+#include <support/test-driver.c>
diff --git a/nptl/tst-cancel7.c b/nptl/tst-cancel7.c
index d2350bd..3f874c2 100644
--- a/nptl/tst-cancel7.c
+++ b/nptl/tst-cancel7.c
@@ -38,6 +38,8 @@ static char *semfilename;
static sem_t *sem;
+static void do_cleanup (void);
+
static void *
tf (void *arg)
{
@@ -57,9 +59,6 @@ sl (void)
fprintf (f, "%lld\n", (long long) getpid ());
fflush (f);
- if (sem_post (sem) != 0)
- FAIL_EXIT1 ("sem_post: %m");
-
struct flock fl =
{
.l_type = F_WRLCK,
@@ -70,6 +69,9 @@ sl (void)
if (fcntl (fileno (f), F_SETLK, &fl) != 0)
FAIL_EXIT1 ("fcntl (F_SETFL): %m");
+ if (sem_post (sem) != 0)
+ FAIL_EXIT1 ("sem_post: %m");
+
sigset_t ss;
sigfillset (&ss);
sigsuspend (&ss);
@@ -108,6 +110,8 @@ do_prepare (int argc, char *argv[])
xwrite (fd, " ", 1);
xclose (fd);
+
+ atexit (do_cleanup);
}
@@ -116,7 +120,7 @@ do_test (void)
{
pthread_t th = xpthread_create (NULL, tf, NULL);
- /* Wait to cancel until after the pid is written. */
+ /* Wait to cancel until after the pid is written and file locked. */
if (sem_wait (sem) != 0)
FAIL_EXIT1 ("sem_wait: %m");
diff --git a/nptl/tst-setuid2.c b/nptl/tst-setuid2.c
index 33d4e39..c410423 100644
--- a/nptl/tst-setuid2.c
+++ b/nptl/tst-setuid2.c
@@ -76,7 +76,12 @@ run_on_thread (void (*func) (void))
static void
change_thread_ids (void)
{
+#ifdef __NR_setresuid32
+ /* Prefer 32-bit setresuid32 over 16-bit setresuid. */
+ long ret = syscall (__NR_setresuid32, 2001, 2002, 2003);
+#else
long ret = syscall (__NR_setresuid, 2001, 2002, 2003);
+#endif
if (ret != 0)
FAIL ("setresuid (2001, 2002, 2003): %ld", ret);
}
diff --git a/posix/fork.c b/posix/fork.c
index 298765a..c2b476f 100644
--- a/posix/fork.c
+++ b/posix/fork.c
@@ -84,6 +84,8 @@ __libc_fork (void)
fork_system_setup_after_fork ();
+ call_function_static_weak (__abort_fork_reset_child);
+
/* Release malloc locks. */
call_function_static_weak (__malloc_fork_unlock_child);
diff --git a/posix/tst-execveat.c b/posix/tst-execveat.c
index 4565d6b..dde034a 100644
--- a/posix/tst-execveat.c
+++ b/posix/tst-execveat.c
@@ -155,7 +155,7 @@ do_test (void)
tmp_sh = xasprintf ("%s/tmp_sh", tmp_dir);
add_temp_file (tmp_sh);
fd_out = xopen (symlink_name, O_CREAT | O_WRONLY, 0);
- xstat ("/bin/sh", &st);
+ xstat64 ("/bin/sh", &st);
fd = xopen ("/bin/sh", O_RDONLY, 0);
xcopy_file_range (fd, 0, fd_out, 0, st.st_size, 0);
xfchmod (fd_out, 0700);
diff --git a/rt/Makefile b/rt/Makefile
index 7b50c64..bc5f28c 100644
--- a/rt/Makefile
+++ b/rt/Makefile
@@ -77,6 +77,7 @@ tests := tst-shm tst-timer tst-timer2 \
tst-bz28213 \
tst-timer3 tst-timer4 tst-timer5 \
tst-cpuclock2 tst-cputimer1 tst-cputimer2 tst-cputimer3 \
+ tst-clock_nanosleep2 \
tst-shm-cancel \
tst-mqueue10
tests-internal := tst-timer-sigmask
@@ -84,6 +85,7 @@ tests-internal := tst-timer-sigmask
tests-time64 := \
tst-aio6-time64 \
tst-cpuclock2-time64 \
+ tst-clock_nanosleep2-time64 \
tst-mqueue1-time64 \
tst-mqueue2-time64 \
tst-mqueue4-time64 \
diff --git a/rt/tst-clock_nanosleep2-time64.c b/rt/tst-clock_nanosleep2-time64.c
new file mode 100644
index 0000000..8deb420
--- /dev/null
+++ b/rt/tst-clock_nanosleep2-time64.c
@@ -0,0 +1 @@
+#include "tst-clock_nanosleep2.c"
diff --git a/rt/tst-clock_nanosleep2.c b/rt/tst-clock_nanosleep2.c
new file mode 100644
index 0000000..e9b2a27
--- /dev/null
+++ b/rt/tst-clock_nanosleep2.c
@@ -0,0 +1,255 @@
+/* Test for clock_nanosleep parameter checks and sleep duration.
+ Copyright (C) 2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+/* This test has two primary goals - first, to validate that invalid
+ inputs to clock_nanosleep are caught, and second, to validate that
+ clock_nanosleep sleeps for at least the amount of time requested.
+ It is assumed that the system may sleep for an arbitrary additional
+ amount of time beyond the requested time. */
+
+#include <unistd.h>
+#include <stdint.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <time.h>
+#include <fcntl.h>
+#include <string.h>
+#include <errno.h>
+
+#include <support/xunistd.h>
+#include <support/check.h>
+#include <support/xthread.h>
+#include <support/timespec.h>
+
+/* This is 1 ms per test, we have 10 tests, so this file runs in on
+ the order of 0.01 seconds. */
+#define TEST_NSEC 1000000
+
+/* Nanoseconds per second. */
+#define NSECMAX 1000000000L
+
+static pthread_barrier_t barrier;
+
+/* This function is intended to rack up both user and system time. */
+static void *
+chew_cpu (void *arg)
+{
+ pthread_barrier_wait (&barrier);
+
+ while (1)
+ {
+ static volatile char buf[4096];
+ for (int i = 0; i < 100; ++i)
+ for (size_t j = 0; j < sizeof buf; ++j)
+ buf[j] = 0xaa;
+ int nullfd = xopen ("/dev/null", O_WRONLY, 0);
+ for (int i = 0; i < 100; ++i)
+ for (size_t j = 0; j < sizeof buf; ++j)
+ buf[j] = 0xbb;
+ xwrite (nullfd, (char *) buf, sizeof buf);
+ close (nullfd);
+ }
+
+ return NULL;
+}
+
+static void
+ptime_1 (const char *n, struct timespec t)
+{
+ /* This is only for debugging failed test cases. */
+ printf ("%12s: %lld.%09lld\n", n, (long long int) t.tv_sec,
+ (long long int) t.tv_nsec);
+}
+#define ptime(t) ptime_1 (#t, t)
+
+static void
+test_interval_1 (const char *n_clock, clockid_t t_clock)
+{
+ struct timespec me_before, me_after, quantum, me_sleep, me_slept;
+ long long int slept, min_slept;
+
+ /* Arbitrary to ensure our time period is sufficiently bigger than
+ the time step. */
+ TEST_VERIFY (clock_getres (t_clock, &quantum) == 0);
+ printf("Clock quantum: %lld ns, test time: %lld ns\n",
+ (long long int) quantum.tv_nsec, (long long int) TEST_NSEC);
+ TEST_VERIFY (quantum.tv_nsec <= TEST_NSEC / 10);
+
+ min_slept = TEST_NSEC;
+
+ me_sleep = make_timespec (0, min_slept);
+
+ printf ("test clock %s for %lld.%09lld sec relative\n",
+ n_clock, (long long int) me_sleep.tv_sec,
+ (long long int) me_sleep.tv_nsec);
+
+ TEST_COMPARE (clock_gettime (t_clock, &me_before), 0);
+ TEST_COMPARE (clock_nanosleep (t_clock, 0, &me_sleep, NULL), 0);
+ TEST_COMPARE (clock_gettime (t_clock, &me_after), 0);
+
+ me_slept = timespec_sub (me_after, me_before);
+ slept = support_timespec_ns (me_slept);
+
+ ptime (me_before);
+ ptime (me_after);
+ ptime (me_sleep);
+ ptime (me_slept);
+ printf ("test slept %lld nsec >= asked for %lld ?\n", slept, min_slept);
+
+ /* This is the important part - verify that the time slept is at
+ least as much as the time requested. */
+ TEST_VERIFY (slept >= min_slept);
+}
+
+static void
+test_abs_1 (const char *n_clock, clockid_t t_clock)
+{
+ struct timespec me_before, me_after, quantum, me_sleep;
+
+ /* Arbitrary to ensure our time period is sufficiently bigger than
+ the time step. */
+ TEST_VERIFY (clock_getres (t_clock, &quantum) == 0);
+ printf("Clock quantum: %lld ns, test time: %lld ns\n",
+ (long long int) quantum.tv_nsec, (long long int) TEST_NSEC);
+ TEST_VERIFY (quantum.tv_nsec <= TEST_NSEC / 10);
+
+ me_sleep = make_timespec (0, TEST_NSEC);
+
+ printf ("test clock %s for %lld.%09lld sec absolute\n",
+ n_clock, (long long int) me_sleep.tv_sec,
+ (long long int) me_sleep.tv_nsec);
+
+ TEST_COMPARE (clock_gettime (t_clock, &me_before), 0);
+ me_sleep = timespec_add (me_sleep, me_before);
+ TEST_COMPARE (clock_nanosleep (t_clock, TIMER_ABSTIME, &me_sleep, NULL), 0);
+ TEST_COMPARE (clock_gettime (t_clock, &me_after), 0);
+
+ ptime (me_before);
+ ptime (me_sleep);
+ ptime (me_after);
+
+ printf("test slept until %lld.%09lld after requested %lld.%09lld ?\n",
+ (long long int) me_after.tv_sec, (long long int) me_after.tv_nsec,
+ (long long int) me_sleep.tv_sec, (long long int) me_sleep.tv_nsec);
+
+ /* This is the important part - verify that the time slept is at
+ least as much as the time requested. */
+ TEST_TIMESPEC_EQUAL_OR_AFTER (me_after, me_sleep);
+}
+
+static void
+test_invalids_1 (const char *the_clock_name, int the_clock,
+ const char *flags_name, int flags)
+{
+ struct timespec me_before;
+
+ /* Note: do not use make_timespec() in case that function tries to
+ normalize the fields. */
+
+ printf ("%s: %s: test tv 0, 0\n", the_clock_name, flags_name);
+ me_before.tv_sec = 0;
+ me_before.tv_nsec = 0;
+ TEST_COMPARE (clock_nanosleep (the_clock, 0, &me_before, NULL), 0);
+
+ printf ("%s: %s: test tv -1, 0\n", the_clock_name, flags_name);
+ me_before.tv_sec = -1;
+ me_before.tv_nsec = 0;
+ TEST_COMPARE (clock_nanosleep (the_clock, 0, &me_before, NULL), EINVAL);
+
+ printf ("%s: %s: test tv 0, -1\n", the_clock_name, flags_name);
+ me_before.tv_sec = 0;
+ me_before.tv_nsec = -1;
+ TEST_COMPARE (clock_nanosleep (the_clock, 0, &me_before, NULL), EINVAL);
+
+ printf ("%s: %s: test tv -1, -1\n", the_clock_name, flags_name);
+ me_before.tv_sec = -1;
+ me_before.tv_nsec = -1;
+ TEST_COMPARE (clock_nanosleep (the_clock, 0, &me_before, NULL), EINVAL);
+
+ printf ("%s: %s: test tv 0, MAX\n", the_clock_name, flags_name);
+ me_before.tv_sec = 0;
+ me_before.tv_nsec = NSECMAX;
+ TEST_COMPARE (clock_nanosleep (the_clock, 0, &me_before, NULL), EINVAL);
+}
+
+static int
+do_test (void)
+{
+ pthread_t th;
+
+ pthread_barrier_init (&barrier, NULL, 2);
+
+ /* Test for proper error detection. */
+
+#define test_invalids(c, f) test_invalids_1 (#c, c, #f, f)
+ test_invalids (CLOCK_REALTIME, 0);
+#ifdef CLOCK_TAI
+ test_invalids (CLOCK_TAI, 0);
+#endif
+ test_invalids (CLOCK_MONOTONIC, 0);
+#ifdef CLOCK_BOOTTIME
+ test_invalids (CLOCK_BOOTTIME, 0);
+#endif
+ test_invalids (CLOCK_PROCESS_CPUTIME_ID, 0);
+ test_invalids (CLOCK_REALTIME, TIMER_ABSTIME);
+#ifdef CLOCK_TAI
+ test_invalids (CLOCK_TAI, TIMER_ABSTIME);
+#endif
+ test_invalids (CLOCK_MONOTONIC, TIMER_ABSTIME);
+#ifdef CLOCK_BOOTTIME
+ test_invalids (CLOCK_BOOTTIME, TIMER_ABSTIME);
+#endif
+ test_invalids (CLOCK_PROCESS_CPUTIME_ID, TIMER_ABSTIME);
+
+ /* Test for various clocks "working". */
+
+#define test_interval(c) test_interval_1 (#c, c)
+ test_interval (CLOCK_REALTIME);
+#ifdef CLOCK_TAI
+ test_interval (CLOCK_TAI);
+#endif
+ test_interval (CLOCK_MONOTONIC);
+#ifdef CLOCK_BOOTTIME
+ test_interval (CLOCK_BOOTTIME);
+#endif
+
+ th = xpthread_create (NULL, chew_cpu, NULL);
+ xpthread_barrier_wait (&barrier);
+ test_interval (CLOCK_PROCESS_CPUTIME_ID);
+ xpthread_cancel (th);
+
+#define test_abs(c) test_abs_1 (#c, c)
+ test_abs (CLOCK_REALTIME);
+#ifdef CLOCK_TAI
+ test_abs (CLOCK_TAI);
+#endif
+ test_abs (CLOCK_MONOTONIC);
+#ifdef CLOCK_BOOTTIME
+ test_abs (CLOCK_BOOTTIME);
+#endif
+
+ th = xpthread_create (NULL, chew_cpu, NULL);
+ xpthread_barrier_wait (&barrier);
+ test_abs (CLOCK_PROCESS_CPUTIME_ID);
+ xpthread_cancel (th);
+
+ return 0;
+}
+
+#include <support/test-driver.c>
diff --git a/scripts/build-many-glibcs.py b/scripts/build-many-glibcs.py
index 7882d7d..f81e6d9 100755
--- a/scripts/build-many-glibcs.py
+++ b/scripts/build-many-glibcs.py
@@ -189,9 +189,6 @@ class Context(object):
self.add_config(arch='arc',
os_name='linux-gnuhf',
gcc_cfg=['--disable-multilib', '--with-cpu=hs38_linux'])
- self.add_config(arch='arceb',
- os_name='linux-gnu',
- gcc_cfg=['--disable-multilib', '--with-cpu=hs38'])
self.add_config(arch='alpha',
os_name='linux-gnu')
self.add_config(arch='arm',
@@ -834,7 +831,7 @@ class Context(object):
'gcc': 'vcs-13',
'glibc': 'vcs-mainline',
'gmp': '6.3.0',
- 'linux': '6.10',
+ 'linux': '6.11',
'mpc': '1.3.1',
'mpfr': '4.2.1',
'mig': 'vcs-mainline',
diff --git a/scripts/cross-test-ssh.sh b/scripts/cross-test-ssh.sh
index 6f5e027..5103038 100755
--- a/scripts/cross-test-ssh.sh
+++ b/scripts/cross-test-ssh.sh
@@ -32,6 +32,9 @@ instead of ordinary 'ssh'.
If the '--timeoutfactor FACTOR' flag is present, set TIMEOUTFACTOR on
the remote machine to the specified FACTOR.
+If the '--glibctunables VALUE' flag is present, set GLIBC_TUNABLES on
+the remote machine to the specified VALUE.
+
If the '--allow-time-setting' flag is present, set
GLIBC_TEST_ALLOW_TIME_SETTING on the remote machine to indicate that
time can be safely adjusted (e.g. on a virtual machine).
@@ -66,6 +69,7 @@ appropriately."
ssh='ssh'
timeoutfactor=$TIMEOUTFACTOR
+glibctunables=$GLIBC_TUNABLES
while [ $# -gt 0 ]; do
case "$1" in
@@ -85,6 +89,14 @@ while [ $# -gt 0 ]; do
timeoutfactor="$1"
;;
+ "--glibctunables")
+ shift
+ if [ $# -lt 1 ]; then
+ break
+ fi
+ glibctunables="$1"
+ ;;
+
"--allow-time-setting")
settimeallowed="1"
;;
@@ -135,6 +147,12 @@ if [ "$timeoutfactor" ]; then
${command}"
fi
+# Add command to set glibc tunables, if required.
+if [ "$glibctunables" ]; then
+ command="export GLIBC_TUNABLES=$(bourne_quote "$glibctunables")
+${command}"
+fi
+
# Add command to set the info that time on target can be adjusted,
# if required.
# Serialize execution of this script on target to prevent from unintended
diff --git a/signal/sigaction.c b/signal/sigaction.c
index 811062a..81ae550 100644
--- a/signal/sigaction.c
+++ b/signal/sigaction.c
@@ -16,8 +16,9 @@
<https://www.gnu.org/licenses/>. */
#include <errno.h>
-#include <signal.h>
#include <internal-signals.h>
+#include <libc-lock.h>
+#include <signal.h>
/* If ACT is not NULL, change the action for SIG to *ACT.
If OACT is not NULL, put the old action for SIG in *OACT. */
@@ -30,7 +31,17 @@ __sigaction (int sig, const struct sigaction *act, struct sigaction *oact)
return -1;
}
- return __libc_sigaction (sig, act, oact);
+ internal_sigset_t set;
+
+ if (sig == SIGABRT)
+ __abort_lock_wrlock (&set);
+
+ int r = __libc_sigaction (sig, act, oact);
+
+ if (sig == SIGABRT)
+ __abort_lock_unlock (&set);
+
+ return r;
}
libc_hidden_def (__sigaction)
weak_alias (__sigaction, sigaction)
diff --git a/stdio-common/Makefile b/stdio-common/Makefile
index e4f0146..88105b3 100644
--- a/stdio-common/Makefile
+++ b/stdio-common/Makefile
@@ -207,8 +207,10 @@ tests := \
tst-cookie \
tst-dprintf-length \
tst-fdopen \
+ tst-fdopen2 \
tst-ferror \
tst-fgets \
+ tst-fgets2 \
tst-fileno \
tst-fmemopen \
tst-fmemopen2 \
@@ -216,8 +218,25 @@ tests := \
tst-fmemopen4 \
tst-fphex \
tst-fphex-wide \
+ tst-fread \
+ tst-freopen2 \
+ tst-freopen3 \
+ tst-freopen4 \
+ tst-freopen5 \
+ tst-freopen6 \
+ tst-freopen64-2 \
+ tst-freopen64-3 \
+ tst-freopen64-4 \
+ tst-freopen64-6 \
+ tst-freopen64-7 \
+ tst-freopen7 \
tst-fseek \
tst-fwrite \
+ tst-fwrite-memstrm \
+ tst-fwrite-overflow \
+ tst-fwrite-ro \
+ tst-getline \
+ tst-getline-enomem \
tst-gets \
tst-grouping \
tst-grouping2 \
@@ -254,6 +273,7 @@ tests := \
tst-swscanf \
tst-tmpnam \
tst-ungetc \
+ tst-ungetc-leak \
tst-unlockedio \
tst-vfprintf-mbs-prec \
tst-vfprintf-user-type \
@@ -312,14 +332,48 @@ tests-special += \
ifeq (yes,$(build-shared))
ifneq ($(PERL),no)
tests-special += \
+ $(objpfx)tst-freopen2-mem.out \
+ $(objpfx)tst-freopen3-mem.out \
+ $(objpfx)tst-freopen4-mem.out \
+ $(objpfx)tst-freopen5-mem.out \
+ $(objpfx)tst-freopen6-mem.out \
+ $(objpfx)tst-freopen64-2-mem.out \
+ $(objpfx)tst-freopen64-3-mem.out \
+ $(objpfx)tst-freopen64-4-mem.out \
+ $(objpfx)tst-freopen64-6-mem.out \
+ $(objpfx)tst-getline-enomem-mem.out \
+ $(objpfx)tst-getline-mem.out \
$(objpfx)tst-printf-bz18872-mem.out \
$(objpfx)tst-printf-bz25691-mem.out \
$(objpfx)tst-printf-fp-free-mem.out \
$(objpfx)tst-printf-fp-leak-mem.out \
+ $(objpfx)tst-ungetc-leak-mem.out \
$(objpfx)tst-vfprintf-width-prec-mem.out \
# tests-special
generated += \
+ tst-freopen2-mem.out \
+ tst-freopen2.mtrace \
+ tst-freopen3-mem.out \
+ tst-freopen3.mtrace \
+ tst-freopen4-mem.out \
+ tst-freopen4.mtrace \
+ tst-freopen5-mem.out \
+ tst-freopen5.mtrace \
+ tst-freopen6-mem.out \
+ tst-freopen6.mtrace \
+ tst-freopen64-2-mem.out \
+ tst-freopen64-2.mtrace \
+ tst-freopen64-3-mem.out \
+ tst-freopen64-3.mtrace \
+ tst-freopen64-4-mem.out \
+ tst-freopen64-4.mtrace \
+ tst-freopen64-6-mem.out \
+ tst-freopen64-6.mtrace \
+ tst-getline-enomem-mem.out \
+ tst-getline-enomem.mtrace \
+ tst-getline-mem.out \
+ tst-getline.mtrace \
tst-printf-bz18872-mem.out \
tst-printf-bz18872.c \
tst-printf-bz18872.mtrace \
@@ -330,6 +384,8 @@ generated += \
tst-printf-fp-leak-mem.out \
tst-printf-fp-leak.mtrace \
tst-scanf-bz27650.mtrace \
+ tst-ungetc-leak-mem.out \
+ tst-ungetc-leak.mtrace \
tst-vfprintf-width-prec-mem.out \
tst-vfprintf-width-prec.mtrace \
# generated
@@ -424,6 +480,42 @@ tst-printf-fp-leak-ENV = \
tst-scanf-bz27650-ENV = \
MALLOC_TRACE=$(objpfx)tst-scanf-bz27650.mtrace \
LD_PRELOAD=$(common-objpfx)malloc/libc_malloc_debug.so
+tst-ungetc-leak-ENV = \
+ MALLOC_TRACE=$(objpfx)tst-ungetc-leak.mtrace \
+ LD_PRELOAD=$(common-objpfx)malloc/libc_malloc_debug.so
+tst-getline-ENV = \
+ MALLOC_TRACE=$(objpfx)tst-getline.mtrace \
+ LD_PRELOAD=$(common-objpfx)malloc/libc_malloc_debug.so
+tst-getline-enomem-ENV = \
+ MALLOC_TRACE=$(objpfx)tst-getline-enomem.mtrace \
+ LD_PRELOAD=$(common-objpfx)malloc/libc_malloc_debug.so
+tst-freopen2-ENV = \
+ MALLOC_TRACE=$(objpfx)tst-freopen2.mtrace \
+ LD_PRELOAD=$(common-objpfx)malloc/libc_malloc_debug.so
+tst-freopen64-2-ENV = \
+ MALLOC_TRACE=$(objpfx)tst-freopen64-2.mtrace \
+ LD_PRELOAD=$(common-objpfx)malloc/libc_malloc_debug.so
+tst-freopen3-ENV = \
+ MALLOC_TRACE=$(objpfx)tst-freopen3.mtrace \
+ LD_PRELOAD=$(common-objpfx)malloc/libc_malloc_debug.so
+tst-freopen64-3-ENV = \
+ MALLOC_TRACE=$(objpfx)tst-freopen64-3.mtrace \
+ LD_PRELOAD=$(common-objpfx)malloc/libc_malloc_debug.so
+tst-freopen4-ENV = \
+ MALLOC_TRACE=$(objpfx)tst-freopen4.mtrace \
+ LD_PRELOAD=$(common-objpfx)malloc/libc_malloc_debug.so
+tst-freopen64-4-ENV = \
+ MALLOC_TRACE=$(objpfx)tst-freopen64-4.mtrace \
+ LD_PRELOAD=$(common-objpfx)malloc/libc_malloc_debug.so
+tst-freopen5-ENV = \
+ MALLOC_TRACE=$(objpfx)tst-freopen5.mtrace \
+ LD_PRELOAD=$(common-objpfx)malloc/libc_malloc_debug.so
+tst-freopen6-ENV = \
+ MALLOC_TRACE=$(objpfx)tst-freopen6.mtrace \
+ LD_PRELOAD=$(common-objpfx)malloc/libc_malloc_debug.so
+tst-freopen64-6-ENV = \
+ MALLOC_TRACE=$(objpfx)tst-freopen64-6.mtrace \
+ LD_PRELOAD=$(common-objpfx)malloc/libc_malloc_debug.so
$(objpfx)tst-unbputc.out: tst-unbputc.sh $(objpfx)tst-unbputc
$(SHELL) $< $(common-objpfx) '$(test-program-prefix)'; \
@@ -508,7 +600,7 @@ CFLAGS-tst-gets.c += -Wno-deprecated-declarations
# BZ #11319 was first fixed for regular vdprintf, then reopened because
# the fortified version had the same bug.
-CFLAGS-tst-bz11319-fortify2.c += $(no-fortify-source),-D_FORTIFY_SOURCE=2
+CFLAGS-tst-bz11319-fortify2.c += $(no-fortify-source) -D_FORTIFY_SOURCE=2
CFLAGS-tst-memstream-string.c += -fno-builtin-fprintf
@@ -533,3 +625,6 @@ $(objpfx)tst-setvbuf1-cmp.out: tst-setvbuf1.expect $(objpfx)tst-setvbuf1.out
$(objpfx)tst-printf-round: $(libm)
$(objpfx)tst-scanf-round: $(libm)
+
+$(objpfx)tst-freopen7: $(shared-thread-library)
+$(objpfx)tst-freopen64-7: $(shared-thread-library)
diff --git a/stdio-common/tst-fdopen2.c b/stdio-common/tst-fdopen2.c
new file mode 100644
index 0000000..0c6625f
--- /dev/null
+++ b/stdio-common/tst-fdopen2.c
@@ -0,0 +1,246 @@
+/* Test the fdopen function.
+ Copyright (C) 2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+#include <stdio.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <support/check.h>
+#include <support/support.h>
+#include <support/xunistd.h>
+#include <support/temp_file.h>
+
+char *tmp_dir;
+char *path_to_file;
+
+void
+prepare_tmp_dir (void)
+{
+ tmp_dir = support_create_temp_directory ("tst-fdopen2");
+ path_to_file = xasprintf ("%s/tst-fdopen2.txt", tmp_dir);
+}
+
+/* open temp file descriptor with mode. */
+int
+open_tmp_fd (int mode)
+{
+ int fd = xopen (path_to_file, mode, 0644);
+ return fd;
+}
+
+
+/* close and remove temp file with close. */
+void
+close_tmp_fd (int fd)
+{
+ xclose (fd);
+ xunlink (path_to_file);
+}
+
+/* close and remove temp file with fclose. */
+void
+close_tmp_fp (FILE *fp)
+{
+ fclose (fp);
+ xunlink (path_to_file);
+}
+
+/* test "w" fdopen mode. */
+void
+do_test_fdopen_w (void)
+{
+ int fd, ret;
+ FILE *fp;
+ fd = open_tmp_fd (O_WRONLY | O_CREAT | O_TRUNC);
+
+ /* test mode mismatch. */
+ fp = fdopen (fd, "r");
+ if (fp != NULL || errno != EINVAL)
+ {
+ close_tmp_fd (fd);
+ FAIL_EXIT1 ("fdopen (%d, r) should fail with EINVAL: %m", fd);
+ }
+
+ fp = fdopen (fd, "w");
+ if (fp == NULL)
+ {
+ close_tmp_fd (fd);
+ FAIL_EXIT1 ("fdopen (%d, w): %m", fd);
+ }
+
+ const void *buf = "AAAA";
+ ret = fwrite (buf, 1, 4, fp);
+ if (ret != 4)
+ {
+ close_tmp_fp (fp);
+ FAIL_EXIT1 ("fwrite (): %m");
+ }
+
+ unsigned char buf2[4];
+ rewind (fp);
+ clearerr (fp);
+ /* fread should fail in "w" mode */
+ ret = fread (buf2, 1, 4, fp);
+ if (ret != 0 || ferror (fp) == 0)
+ {
+ close_tmp_fp (fp);
+ FAIL_EXIT1 ("fread should fail in \"w\" mode");
+ }
+
+ fclose (fp);
+}
+
+/* test "r" fdopen mode. */
+void
+do_test_fdopen_r (void)
+{
+ int fd, ret;
+ FILE *fp;
+ fd = open_tmp_fd (O_RDONLY);
+
+ /* test mode mismatch. */
+ fp = fdopen (fd, "w");
+ if (fp != NULL || errno != EINVAL)
+ {
+ close_tmp_fd (fd);
+ FAIL_EXIT1 ("fdopen (%d, w) should fail with EINVAL: %m", fd);
+ }
+
+ fp = fdopen (fd, "r");
+ if (fp == NULL)
+ {
+ close_tmp_fd (fd);
+ FAIL_EXIT1 ("fdopen (%d, w): %m", fd);
+ }
+
+ const void *buf = "BBBB";
+ /* fwrite should fail in "r" mode. */
+ ret = fwrite (buf, 1, 4, fp);
+ if (ret != 0 || ferror (fp) == 0)
+ {
+ close_tmp_fp (fp);
+ FAIL_EXIT1 ("fwrite should fail in \"r\" mode");
+ }
+
+ unsigned char buf2[4];
+ ret = fread (buf2, 1, 4, fp);
+ if (ret != 4)
+ {
+ close_tmp_fp (fp);
+ FAIL_EXIT1 ("fread (): %m");
+ }
+
+ fclose (fp);
+}
+
+/* test "a" fdopen mode. */
+void
+do_test_fdopen_a (void)
+{
+ int fd, ret;
+ FILE *fp;
+ fd = open_tmp_fd (O_WRONLY | O_CREAT | O_APPEND);
+
+ /* test mode mismatch. */
+ fp = fdopen (fd, "r+");
+ if (fp != NULL || errno != EINVAL)
+ {
+ close_tmp_fd (fd);
+ FAIL_EXIT1 ("fdopen (%d, \"r+\") should fail with EINVAL: %m", fd);
+ }
+
+ fp = fdopen (fd, "a");
+ if (fp == NULL)
+ {
+ close_tmp_fd (fd);
+ FAIL_EXIT1 ("fdopen (%d, w): %m", fd);
+ }
+
+ const void *buf = "CCCC";
+ ret = fwrite (buf, 1, 4, fp);
+ if (ret != 4)
+ {
+ close_tmp_fp (fp);
+ FAIL_EXIT1 ("fwrite (): %m");
+ }
+
+ /* fread should fail in "a" mode. */
+ unsigned char buf2[4];
+ clearerr (fp);
+ ret = fread (buf2, 1, 4, fp);
+ if (ret != 0 || ferror (fp) == 0)
+ {
+ close_tmp_fp (fp);
+ FAIL_EXIT1 ("fread should fail \"a\" mode");
+ }
+
+ fclose (fp);
+}
+
+void
+do_test_fdopen_mode (int mode, const char *fmode)
+{
+ int fd, ret;
+ FILE *fp;
+ fd = open_tmp_fd (mode);
+
+ fp = fdopen (fd, fmode);
+ if (fp == NULL)
+ {
+ close_tmp_fd (fd);
+ FAIL_EXIT1 ("fdopen (%d, %s): %m", fd, fmode);
+ }
+
+ const void *buf = "EEEE";
+ ret = fwrite (buf, 1, 4, fp);
+ if (ret != 4)
+ {
+ close_tmp_fp (fp);
+ FAIL_EXIT1 ("fwrite () in mode:%s returns %d: %m", fmode, ret);
+ }
+
+ rewind (fp);
+ unsigned char buf2[4];
+ ret = fread (buf2, 1, 4, fp);
+ if (ret != 4)
+ {
+ close_tmp_fp (fp);
+ FAIL_EXIT1 ("fread () in mode:%s returns %d: %m", fmode, ret);
+ }
+
+ fclose (fp);
+}
+
+static int
+do_test (void)
+{
+
+ prepare_tmp_dir ();
+
+ do_test_fdopen_w ();
+ do_test_fdopen_r ();
+ do_test_fdopen_a ();
+
+ /* test r+ w+ a+ fdopen modes. */
+ do_test_fdopen_mode (O_RDWR, "r+");
+ do_test_fdopen_mode (O_RDWR | O_CREAT | O_TRUNC, "w+");
+ do_test_fdopen_mode (O_RDWR | O_CREAT | O_APPEND, "a+");
+ xunlink (path_to_file);
+ return 0;
+}
+
+#include <support/test-driver.c>
diff --git a/stdio-common/tst-fgets2.c b/stdio-common/tst-fgets2.c
new file mode 100644
index 0000000..5b78447
--- /dev/null
+++ b/stdio-common/tst-fgets2.c
@@ -0,0 +1,253 @@
+/* Test for additional fgets error handling.
+ Copyright (C) 2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+#include <libc-diag.h>
+#include <stdio.h>
+#include <error.h>
+#include <errno.h>
+#include <limits.h>
+#include <mcheck.h>
+#include <stddef.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <sys/types.h>
+
+#include <support/support.h>
+#include <support/check.h>
+
+/* This avoids compiler warnings about passing NULL where a valid
+ pointer is expected. */
+static void *volatile null = NULL;
+
+/* Implementation of our FILE stream backend. */
+
+static int bytes_read;
+static int cookie_valid = 0;
+struct Cookie {
+ const char *buffer;
+ int bufptr;
+ int bufsz;
+};
+
+#define VALIDATE_COOKIE() if (! cookie_valid) { \
+ FAIL ("call to %s after file closed", __FUNCTION__); \
+ return -1; \
+ }
+
+static ssize_t
+io_read (void *vcookie, char *buf, size_t size)
+{
+ struct Cookie *cookie = (struct Cookie *) vcookie;
+
+ VALIDATE_COOKIE ();
+
+ if (size > cookie->bufsz - cookie->bufptr)
+ size = cookie->bufsz - cookie->bufptr;
+
+ memcpy (buf, cookie->buffer + cookie->bufptr, size);
+ cookie->bufptr += size;
+ bytes_read += size;
+ return size;
+}
+
+static ssize_t
+io_write (void *vcookie, const char *buf, size_t size)
+{
+ VALIDATE_COOKIE ();
+ FAIL_EXIT1 ("io_write called");
+}
+
+static int
+io_seek (void *vcookie, off64_t *position, int whence)
+{
+ VALIDATE_COOKIE ();
+ FAIL_EXIT1 ("io_seek called");
+}
+
+static int
+io_clean (void *vcookie)
+{
+ struct Cookie *cookie = (struct Cookie *) vcookie;
+
+ VALIDATE_COOKIE ();
+
+ cookie->buffer = NULL;
+ cookie->bufsz = 0;
+ cookie->bufptr = 0;
+
+ cookie_valid = 0;
+ free (cookie);
+ return 0;
+}
+
+cookie_io_functions_t io_funcs = {
+ .read = io_read,
+ .write = io_write,
+ .seek = io_seek,
+ .close = io_clean
+};
+
+FILE *
+io_open (const char *buffer, int buflen, const char *mode, void **vcookie)
+{
+ FILE *f;
+ struct Cookie *cookie;
+
+ cookie = (struct Cookie *) xcalloc (1, sizeof (struct Cookie));
+ *vcookie = cookie;
+ cookie_valid = 1;
+
+ cookie->buffer = buffer;
+ cookie->bufsz = buflen;
+ bytes_read = 0;
+
+ f = fopencookie (cookie, mode, io_funcs);
+ if (f == NULL)
+ FAIL_EXIT1 ("fopencookie failed");
+
+ clearerr (f);
+ return f;
+}
+
+/* The test cases. */
+
+#define my_open(s,l,m) io_open (s, l, m, (void *) &cookie)
+
+#define TEST_COMPARE_0x11(buf, len) \
+ TEST_COMPARE_BLOB (buf + (len), sizeof (buf) - (len), \
+ buf2, sizeof (buf) - (len));
+
+#define check_flags(f, expected_eof, expected_err) \
+ { \
+ if (expected_eof) \
+ TEST_VERIFY (feof (f) != 0); \
+ else \
+ TEST_VERIFY (feof (f) == 0); \
+ if (expected_err) \
+ TEST_VERIFY (ferror (f) != 0); \
+ else \
+ TEST_VERIFY (ferror (f) == 0); \
+ }
+
+static int
+do_test (void)
+{
+ FILE *f;
+ struct Cookie *cookie;
+ char buf [10];
+ char buf2 [10];
+ char *returned_string;
+
+ memset (buf2, 0x11, sizeof (buf2));
+
+ printf ("testing base operation...\n");
+ f = my_open ("hello\n", 6, "r");
+ memset (buf, 0x11, sizeof (buf));
+ returned_string = fgets (buf, sizeof (buf) - 1, f);
+ TEST_VERIFY (returned_string == buf);
+ TEST_COMPARE_BLOB (buf, bytes_read + 1, "hello\n\0", 7);
+ TEST_COMPARE_0x11 (buf, bytes_read + 1);
+ check_flags (f, 0, 0);
+
+ fclose (f);
+
+ printf ("testing zero size file...\n");
+ f = my_open ("hello\n", 0, "r");
+ memset (buf, 0x11, sizeof (buf));
+ returned_string = fgets (buf, sizeof (buf) - 1, f);
+ TEST_VERIFY (returned_string == NULL);
+ TEST_VERIFY (bytes_read == 0);
+ check_flags (f, 1, 0);
+ fclose (f);
+
+ printf ("testing zero size buffer...\n");
+ f = my_open ("hello\n", 6, "r");
+ memset (buf, 0x11, sizeof (buf));
+ returned_string = fgets (buf, 0, f);
+ TEST_VERIFY (returned_string == NULL);
+ TEST_VERIFY (bytes_read == 0);
+ check_flags (f, 0, 0);
+ fclose (f);
+
+ printf ("testing NULL buffer with empty stream...\n");
+ f = my_open ("hello\n", 0, "r");
+ memset (buf, 0x11, sizeof (buf));
+
+ returned_string = fgets (null, sizeof (buf), f);
+
+ TEST_VERIFY (returned_string == NULL);
+ TEST_VERIFY (bytes_read == 0);
+ check_flags (f, 1, 0);
+ fclose (f);
+
+ printf ("testing embedded NUL...\n");
+ f = my_open ("hel\0lo\n", 7, "r");
+ memset (buf, 0x11, sizeof (buf));
+ returned_string = fgets (buf, sizeof (buf) - 1, f);
+ TEST_VERIFY (returned_string == buf);
+ TEST_COMPARE_BLOB (buf, bytes_read + 1, "hel\0lo\n\0", 8);
+ TEST_COMPARE_0x11 (buf, bytes_read + 1);
+ check_flags (f, 0, 0);
+ fclose (f);
+
+ printf ("testing writable stream...\n");
+ f = my_open ("hel\0lo\n", 7, "w");
+ memset (buf, 0x11, sizeof (buf));
+ returned_string = fgets (buf, sizeof (buf) - 1, f);
+ TEST_VERIFY (returned_string == NULL);
+ TEST_VERIFY (bytes_read == 0);
+ check_flags (f, 0, 1);
+ fclose (f);
+
+ printf ("testing closed fd stream...\n");
+ int fd = open ("/dev/null", O_RDONLY);
+ f = fdopen (fd, "r");
+ close (fd);
+ memset (buf, 0x11, sizeof (buf));
+ returned_string = fgets (buf, sizeof (buf) - 1, f);
+ TEST_VERIFY (returned_string == NULL);
+ TEST_VERIFY (bytes_read == 0);
+ check_flags (f, 0, 1);
+ fclose (f);
+
+#ifdef IO_DEBUG
+ /* These tests only pass if glibc is built with -DIO_DEBUG, but are
+ included for reference. */
+
+ printf ("testing NULL descriptor...\n");
+ memset (buf, 0x11, sizeof (buf));
+ returned_string = fgets (buf, sizeof (buf) - 1, null);
+ TEST_VERIFY (returned_string == NULL);
+ TEST_VERIFY (bytes_read == 0);
+
+ printf ("testing closed descriptor...\n");
+ f = my_open ("hello\n", 7, "r");
+ fclose (f);
+ memset (buf, 0x11, sizeof (buf));
+ returned_string = fgets (buf, sizeof (buf) - 1, f);
+ TEST_VERIFY (returned_string == NULL);
+ TEST_VERIFY (bytes_read == 0);
+#endif
+
+ return 0;
+}
+
+#include <support/test-driver.c>
diff --git a/stdio-common/tst-fread.c b/stdio-common/tst-fread.c
new file mode 100644
index 0000000..4d9a789
--- /dev/null
+++ b/stdio-common/tst-fread.c
@@ -0,0 +1,134 @@
+/* Test fread.
+ Copyright (C) 2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <support/check.h>
+#include <support/support.h>
+#include <support/temp_file.h>
+#include <support/test-driver.h>
+#include <support/xstdio.h>
+#include <support/xunistd.h>
+
+int
+do_test (void)
+{
+ char *temp_dir = support_create_temp_directory ("tst-fread");
+ char *file1 = xasprintf ("%s/file1", temp_dir);
+ support_write_file_string (file1, "file1");
+ add_temp_file (file1);
+ FILE *fp;
+ size_t ret;
+ char buf[1024];
+
+ verbose_printf ("test single-byte reads\n");
+ fp = xfopen (file1, "r");
+ memset (buf, 0, sizeof buf);
+ ret = fread (buf, 1, 2, fp);
+ TEST_COMPARE (ret, 2);
+ TEST_COMPARE (buf[0], 'f');
+ TEST_COMPARE (buf[1], 'i');
+ TEST_COMPARE (feof (fp), 0);
+ TEST_COMPARE (ftell (fp), 2);
+ memset (buf, 0, sizeof buf);
+ ret = fread (buf, 1, 3, fp);
+ TEST_COMPARE (ret, 3);
+ TEST_COMPARE (buf[0], 'l');
+ TEST_COMPARE (buf[1], 'e');
+ TEST_COMPARE (buf[2], '1');
+ TEST_COMPARE (ftell (fp), 5);
+ TEST_COMPARE (feof (fp), 0);
+ memset (buf, 0, sizeof buf);
+ ret = fread (buf, 1, 1, fp);
+ TEST_COMPARE (ret, 0);
+ TEST_COMPARE (!!feof (fp), 1);
+ TEST_COMPARE (ferror (fp), 0);
+ TEST_COMPARE (ftell (fp), 5);
+ xfclose (fp);
+
+ verbose_printf ("test single-byte reads, EOF part way through\n");
+ fp = xfopen (file1, "r");
+ memset (buf, 0, sizeof buf);
+ ret = fread (buf, 1, sizeof buf, fp);
+ TEST_COMPARE (ret, 5);
+ TEST_COMPARE (buf[0], 'f');
+ TEST_COMPARE (buf[1], 'i');
+ TEST_COMPARE (buf[2], 'l');
+ TEST_COMPARE (buf[3], 'e');
+ TEST_COMPARE (buf[4], '1');
+ TEST_COMPARE (!!feof (fp), 1);
+ TEST_COMPARE (ferror (fp), 0);
+ TEST_COMPARE (ftell (fp), 5);
+ xfclose (fp);
+
+ verbose_printf ("test multi-byte reads\n");
+ fp = xfopen (file1, "r");
+ memset (buf, 0, sizeof buf);
+ ret = fread (buf, 2, 2, fp);
+ TEST_COMPARE (ret, 2);
+ TEST_COMPARE (buf[0], 'f');
+ TEST_COMPARE (buf[1], 'i');
+ TEST_COMPARE (buf[2], 'l');
+ TEST_COMPARE (buf[3], 'e');
+ TEST_COMPARE (feof (fp), 0);
+ TEST_COMPARE (ftell (fp), 4);
+ memset (buf, 0, sizeof buf);
+ ret = fread (buf, 3, 3, fp);
+ TEST_COMPARE (ret, 0);
+ /* The bytes written for a partial element read are unspecified. */
+ TEST_COMPARE (!!feof (fp), 1);
+ TEST_COMPARE (ferror (fp), 0);
+ TEST_COMPARE (ftell (fp), 5);
+ xfclose (fp);
+
+ verbose_printf ("test read error\n");
+ fp = xfopen (file1, "r");
+ xclose (fileno (fp));
+ memset (buf, 0, sizeof buf);
+ ret = fread (buf, 1, sizeof buf, fp);
+ TEST_COMPARE (ret, 0);
+ TEST_COMPARE (feof (fp), 0);
+ TEST_COMPARE (!!ferror (fp), 1);
+ fclose (fp);
+
+ verbose_printf ("test zero size\n");
+ fp = xfopen (file1, "r");
+ ret = fread (buf, 0, SIZE_MAX, fp);
+ TEST_COMPARE (ret, 0);
+ TEST_COMPARE (feof (fp), 0);
+ TEST_COMPARE (ferror (fp), 0);
+ TEST_COMPARE (ftell (fp), 0);
+ xfclose (fp);
+
+ verbose_printf ("test zero items\n");
+ fp = xfopen (file1, "r");
+ ret = fread (buf, SIZE_MAX, 0, fp);
+ TEST_COMPARE (ret, 0);
+ TEST_COMPARE (feof (fp), 0);
+ TEST_COMPARE (ferror (fp), 0);
+ TEST_COMPARE (ftell (fp), 0);
+ xfclose (fp);
+
+ free (temp_dir);
+ free (file1);
+ return 0;
+}
+
+#include <support/test-driver.c>
diff --git a/stdio-common/tst-freopen2-main.c b/stdio-common/tst-freopen2-main.c
new file mode 100644
index 0000000..74c3125
--- /dev/null
+++ b/stdio-common/tst-freopen2-main.c
@@ -0,0 +1,519 @@
+/* Test freopen.
+ Copyright (C) 2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+#include <errno.h>
+#include <fcntl.h>
+#include <mcheck.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <wchar.h>
+
+#include <support/check.h>
+#include <support/descriptors.h>
+#include <support/file_contents.h>
+#include <support/support.h>
+#include <support/temp_file.h>
+#include <support/test-driver.h>
+#include <support/xstdio.h>
+
+#define START_TEST(DESC) \
+ do \
+ { \
+ fds = support_descriptors_list (); \
+ verbose_printf (DESC); \
+ } \
+ while (0)
+
+#define END_TEST \
+ do \
+ { \
+ support_descriptors_check (fds); \
+ support_descriptors_free (fds); \
+ } \
+ while (0)
+
+int
+do_test (void)
+{
+ mtrace ();
+ struct support_descriptors *fds;
+ char *temp_dir = support_create_temp_directory ("tst-freopen2");
+ char *file1 = xasprintf ("%s/file1", temp_dir);
+ support_write_file_string (file1, "file1");
+ add_temp_file (file1);
+ char *file2 = xasprintf ("%s/file2", temp_dir);
+ support_write_file_string (file2, "file2");
+ add_temp_file (file2);
+ char *file3 = xasprintf ("%s/file3", temp_dir);
+ char *file4 = xasprintf ("%s/file4", temp_dir);
+ char *file1a = xasprintf ("%s/file1a", temp_dir);
+ FILE *fp;
+ int ret;
+ wint_t wc;
+
+ /* Test each pair of old and new modes from r w a. */
+
+ START_TEST ("Testing r -> r\n");
+ fp = xfopen (file1, "r");
+ fp = FREOPEN (file2, "r", fp);
+ TEST_VERIFY_EXIT (fp != NULL);
+ TEST_COMPARE_FILE_STRING (fp, "file2");
+ xfclose (fp);
+ END_TEST;
+
+ START_TEST ("Testing r -> w\n");
+ fp = xfopen (file1, "r");
+ fp = FREOPEN (file2, "w", fp);
+ TEST_VERIFY_EXIT (fp != NULL);
+ ret = fputs ("File2new", fp);
+ TEST_VERIFY (ret >= 0);
+ xfclose (fp);
+ TEST_OPEN_AND_COMPARE_FILE_STRING (file1, "file1");
+ TEST_OPEN_AND_COMPARE_FILE_STRING (file2, "File2new");
+ END_TEST;
+
+ START_TEST ("Testing r -> a\n");
+ fp = xfopen (file1, "r");
+ fp = FREOPEN (file2, "a", fp);
+ TEST_VERIFY_EXIT (fp != NULL);
+ ret = fputs ("3", fp);
+ TEST_VERIFY (ret >= 0);
+ xfclose (fp);
+ TEST_OPEN_AND_COMPARE_FILE_STRING (file2, "File2new3");
+ END_TEST;
+
+ START_TEST ("Testing w -> r\n");
+ fp = xfopen (file1, "w");
+ fp = FREOPEN (file2, "r", fp);
+ TEST_VERIFY_EXIT (fp != NULL);
+ TEST_COMPARE_FILE_STRING (fp, "File2new3");
+ xfclose (fp);
+ END_TEST;
+
+ START_TEST ("Testing w -> w\n");
+ fp = xfopen (file1, "w");
+ fp = FREOPEN (file2, "w", fp);
+ TEST_VERIFY_EXIT (fp != NULL);
+ ret = fputs ("next", fp);
+ TEST_VERIFY (ret >= 0);
+ xfclose (fp);
+ TEST_OPEN_AND_COMPARE_FILE_STRING (file1, "");
+ TEST_OPEN_AND_COMPARE_FILE_STRING (file2, "next");
+ END_TEST;
+
+ START_TEST ("Testing w -> a\n");
+ fp = xfopen (file1, "w");
+ fp = FREOPEN (file2, "a", fp);
+ TEST_VERIFY_EXIT (fp != NULL);
+ ret = fputs ("4", fp);
+ TEST_VERIFY (ret >= 0);
+ xfclose (fp);
+ TEST_OPEN_AND_COMPARE_FILE_STRING (file2, "next4");
+ END_TEST;
+
+ START_TEST ("Testing a -> r\n");
+ fp = xfopen (file1, "a");
+ fp = FREOPEN (file2, "r", fp);
+ TEST_VERIFY_EXIT (fp != NULL);
+ TEST_COMPARE_FILE_STRING (fp, "next4");
+ xfclose (fp);
+ END_TEST;
+
+ START_TEST ("Testing a -> w\n");
+ fp = xfopen (file1, "a");
+ fp = FREOPEN (file2, "w", fp);
+ TEST_VERIFY_EXIT (fp != NULL);
+ ret = fputs ("another", fp);
+ TEST_VERIFY (ret >= 0);
+ xfclose (fp);
+ TEST_OPEN_AND_COMPARE_FILE_STRING (file2, "another");
+ END_TEST;
+
+ START_TEST ("Testing a -> a\n");
+ fp = xfopen (file1, "a");
+ fp = FREOPEN (file2, "a", fp);
+ TEST_VERIFY_EXIT (fp != NULL);
+ ret = fputs ("5", fp);
+ TEST_VERIFY (ret >= 0);
+ xfclose (fp);
+ TEST_OPEN_AND_COMPARE_FILE_STRING (file2, "another5");
+ END_TEST;
+
+ /* Test for file originally opened with fopen64. */
+ START_TEST ("Testing fopen64 a -> a\n");
+ fp = fopen64 (file1, "a");
+ TEST_VERIFY_EXIT (fp != NULL);
+ fp = FREOPEN (file2, "a", fp);
+ TEST_VERIFY_EXIT (fp != NULL);
+ ret = fputs ("64", fp);
+ TEST_VERIFY (ret >= 0);
+ xfclose (fp);
+ TEST_OPEN_AND_COMPARE_FILE_STRING (file2, "another564");
+ END_TEST;
+
+ /* Test calling freopen more than once on the same FILE *. */
+
+ START_TEST ("Testing r -> w -> r\n");
+ fp = xfopen (file1, "r");
+ fp = FREOPEN (file2, "w", fp);
+ TEST_VERIFY_EXIT (fp != NULL);
+ ret = fputs ("freopen-twice", fp);
+ TEST_VERIFY (ret >= 0);
+ fp = FREOPEN (file2, "r", fp);
+ TEST_VERIFY_EXIT (fp != NULL);
+ TEST_COMPARE_FILE_STRING (fp, "freopen-twice");
+ xfclose (fp);
+ TEST_OPEN_AND_COMPARE_FILE_STRING (file2, "freopen-twice");
+ END_TEST;
+
+ START_TEST ("Testing r -> w -> r (exactly one freopen64)\n");
+ fp = xfopen (file1, "r");
+ fp = OTHER_FREOPEN (file2, "w", fp);
+ TEST_VERIFY_EXIT (fp != NULL);
+ ret = fputs ("freopen-twice64", fp);
+ TEST_VERIFY (ret >= 0);
+ fp = FREOPEN (file2, "r", fp);
+ TEST_VERIFY_EXIT (fp != NULL);
+ TEST_COMPARE_FILE_STRING (fp, "freopen-twice64");
+ xfclose (fp);
+ TEST_OPEN_AND_COMPARE_FILE_STRING (file2, "freopen-twice64");
+ END_TEST;
+
+ /* Test changing to/from b (binary, no-op). */
+
+ START_TEST ("Testing rb -> r\n");
+ fp = xfopen (file1, "rb");
+ fp = FREOPEN (file2, "r", fp);
+ TEST_VERIFY_EXIT (fp != NULL);
+ TEST_COMPARE_FILE_STRING (fp, "freopen-twice64");
+ xfclose (fp);
+ END_TEST;
+
+ START_TEST ("Testing r -> rb\n");
+ fp = xfopen (file1, "r");
+ fp = FREOPEN (file2, "rb", fp);
+ TEST_VERIFY_EXIT (fp != NULL);
+ TEST_COMPARE_FILE_STRING (fp, "freopen-twice64");
+ xfclose (fp);
+ END_TEST;
+
+ /* Test changing to/from + (read-and-write). */
+
+ START_TEST ("Testing r -> w+\n");
+ fp = xfopen (file1, "r");
+ fp = FREOPEN (file2, "w+", fp);
+ TEST_VERIFY_EXIT (fp != NULL);
+ ret = fputs ("latest", fp);
+ TEST_VERIFY (ret >= 0);
+ ret = fseek (fp, 0, SEEK_SET);
+ TEST_COMPARE (ret, 0);
+ TEST_COMPARE_FILE_STRING (fp, "latest");
+ xfclose (fp);
+ TEST_OPEN_AND_COMPARE_FILE_STRING (file2, "latest");
+ END_TEST;
+
+ START_TEST ("Testing w -> a+\n");
+ fp = xfopen (file1, "w");
+ fp = FREOPEN (file2, "a+", fp);
+ TEST_VERIFY_EXIT (fp != NULL);
+ ret = fputs ("suffix", fp);
+ TEST_VERIFY (ret >= 0);
+ ret = fseek (fp, 0, SEEK_SET);
+ TEST_COMPARE (ret, 0);
+ TEST_COMPARE_FILE_STRING (fp, "latestsuffix");
+ xfclose (fp);
+ TEST_OPEN_AND_COMPARE_FILE_STRING (file2, "latestsuffix");
+ END_TEST;
+
+ START_TEST ("Testing a -> r+\n");
+ fp = xfopen (file1, "a");
+ fp = FREOPEN (file2, "r+", fp);
+ TEST_VERIFY_EXIT (fp != NULL);
+ TEST_COMPARE_FILE_STRING (fp, "latestsuffix");
+ ret = fseek (fp, 0, SEEK_SET);
+ TEST_COMPARE (ret, 0);
+ ret = fputs ("new", fp);
+ TEST_VERIFY (ret >= 0);
+ xfclose (fp);
+ TEST_OPEN_AND_COMPARE_FILE_STRING (file2, "newestsuffix");
+ END_TEST;
+
+ START_TEST ("Testing r+ -> w\n");
+ fp = xfopen (file1, "r+");
+ fp = FREOPEN (file2, "w", fp);
+ TEST_VERIFY_EXIT (fp != NULL);
+ ret = fputs ("plusto", fp);
+ TEST_VERIFY (ret >= 0);
+ ret = fseek (fp, 0, SEEK_SET);
+ TEST_COMPARE (ret, 0);
+ errno = 0;
+ TEST_COMPARE (fgetc (fp), EOF);
+ TEST_COMPARE (errno, EBADF);
+ clearerr (fp);
+ xfclose (fp);
+ TEST_OPEN_AND_COMPARE_FILE_STRING (file2, "plusto");
+ END_TEST;
+
+ START_TEST ("Testing w+ -> a\n");
+ fp = xfopen (file1, "w+");
+ fp = FREOPEN (file2, "a", fp);
+ TEST_VERIFY_EXIT (fp != NULL);
+ ret = fputs ("more", fp);
+ TEST_VERIFY (ret >= 0);
+ ret = fseek (fp, 0, SEEK_SET);
+ TEST_COMPARE (ret, 0);
+ errno = 0;
+ TEST_COMPARE (fgetc (fp), EOF);
+ TEST_COMPARE (errno, EBADF);
+ clearerr (fp);
+ xfclose (fp);
+ TEST_OPEN_AND_COMPARE_FILE_STRING (file2, "plustomore");
+ END_TEST;
+
+ START_TEST ("Testing a+ -> r\n");
+ fp = xfopen (file1, "a+");
+ fp = FREOPEN (file2, "rr", fp);
+ TEST_VERIFY_EXIT (fp != NULL);
+ TEST_COMPARE_FILE_STRING (fp, "plustomore");
+ ret = fputs ("2", fp);
+ TEST_COMPARE (ret, EOF);
+ clearerr (fp);
+ xfclose (fp);
+ TEST_OPEN_AND_COMPARE_FILE_STRING (file2, "plustomore");
+ END_TEST;
+
+ /* Test changing to/from e (FD_CLOEXEC). */
+
+ START_TEST ("Testing re -> r\n");
+ fp = xfopen (file1, "re");
+ ret = fcntl (fileno (fp), F_GETFD);
+ TEST_VERIFY (ret != -1);
+ TEST_COMPARE (ret & FD_CLOEXEC, FD_CLOEXEC);
+ fp = FREOPEN (file2, "r", fp);
+ TEST_VERIFY_EXIT (fp != NULL);
+ ret = fcntl (fileno (fp), F_GETFD);
+ TEST_VERIFY (ret != -1);
+ TEST_COMPARE (ret & FD_CLOEXEC, 0);
+ TEST_COMPARE_FILE_STRING (fp, "plustomore");
+ xfclose (fp);
+ END_TEST;
+
+ START_TEST ("Testing r -> re\n");
+ fp = xfopen (file1, "r");
+ ret = fcntl (fileno (fp), F_GETFD);
+ TEST_VERIFY (ret != -1);
+ TEST_COMPARE (ret & FD_CLOEXEC, 0);
+ fp = FREOPEN (file2, "re", fp);
+ TEST_VERIFY_EXIT (fp != NULL);
+ ret = fcntl (fileno (fp), F_GETFD);
+ TEST_VERIFY (ret != -1);
+ TEST_COMPARE (ret & FD_CLOEXEC, FD_CLOEXEC);
+ TEST_COMPARE_FILE_STRING (fp, "plustomore");
+ xfclose (fp);
+ END_TEST;
+
+ /* Test changing to/from m (mmap) (a no-op as far as testing
+ semantics is concerned). */
+
+ START_TEST ("Testing rm -> r\n");
+ fp = xfopen (file1, "rm");
+ fp = FREOPEN (file2, "r", fp);
+ TEST_VERIFY_EXIT (fp != NULL);
+ TEST_COMPARE_FILE_STRING (fp, "plustomore");
+ xfclose (fp);
+ END_TEST;
+
+ START_TEST ("Testing r -> rm\n");
+ fp = xfopen (file1, "r");
+ fp = FREOPEN (file2, "rm", fp);
+ TEST_VERIFY_EXIT (fp != NULL);
+ TEST_COMPARE_FILE_STRING (fp, "plustomore");
+ xfclose (fp);
+ END_TEST;
+
+ /* Test changing to/from x (O_EXCL). */
+
+ START_TEST ("Testing wx -> w\n");
+ fp = xfopen (file3, "wx");
+ add_temp_file (file3);
+ fp = FREOPEN (file2, "w", fp);
+ TEST_VERIFY_EXIT (fp != NULL);
+ ret = fputs ("wxtow", fp);
+ TEST_VERIFY (ret >= 0);
+ xfclose (fp);
+ TEST_OPEN_AND_COMPARE_FILE_STRING (file2, "wxtow");
+ END_TEST;
+
+ START_TEST ("Testing w -> wx (file does not exist)\n");
+ fp = xfopen (file1, "w");
+ fp = FREOPEN (file4, "wx", fp);
+ TEST_VERIFY_EXIT (fp != NULL);
+ add_temp_file (file4);
+ ret = fputs ("wtowx", fp);
+ TEST_VERIFY (ret >= 0);
+ xfclose (fp);
+ TEST_OPEN_AND_COMPARE_FILE_STRING (file4, "wtowx");
+ END_TEST;
+
+ /* Test with ,ccs=CHARSET. */
+
+ START_TEST ("testing w,ccs=utf-8 -> r\n");
+ fp = xfopen (file1, "w,ccs=utf-8");
+ ret = fputws (L"\xc0\xc1", fp);
+ TEST_VERIFY (ret >= 0);
+ fp = FREOPEN (file2, "r", fp);
+ TEST_VERIFY_EXIT (fp != NULL);
+ TEST_COMPARE_FILE_STRING (fp, "wxtow");
+ xfclose (fp);
+ END_TEST;
+
+ START_TEST ("testing w,ccs=iso-8859-1 -> r,ccs=utf-8\n");
+ fp = xfopen (file2, "w,ccs=iso-8859-1");
+ ret = fputws (L"\xc0\xc1", fp);
+ TEST_VERIFY (ret >= 0);
+ fp = FREOPEN (file1, "r,ccs=utf-8", fp);
+ TEST_VERIFY_EXIT (fp != NULL);
+ wc = fgetwc (fp);
+ TEST_COMPARE (wc, (wint_t) 0xc0);
+ wc = fgetwc (fp);
+ TEST_COMPARE (wc, (wint_t) 0xc1);
+ wc = fgetwc (fp);
+ TEST_COMPARE (wc, WEOF);
+ xfclose (fp);
+ END_TEST;
+
+ START_TEST ("testing r,ccs=utf-8 -> r\n");
+ fp = xfopen (file1, "r,ccs=utf-8");
+ fp = FREOPEN (file1, "r", fp);
+ TEST_VERIFY_EXIT (fp != NULL);
+ TEST_COMPARE_FILE_STRING (fp, "\u00c0\u00c1");
+ xfclose (fp);
+ END_TEST;
+
+ /* Test that errors closing the old file are ignored. */
+
+ START_TEST ("testing errors closing old file ignored\n");
+ fp = xfopen ("/dev/full", "w");
+ fputc ('x', fp);
+ fp = FREOPEN (file1, "r", fp);
+ TEST_VERIFY_EXIT (fp != NULL);
+ TEST_COMPARE_FILE_STRING (fp, "\u00c0\u00c1");
+ xfclose (fp);
+ END_TEST;
+
+ /* Test that error / EOF state from the old file are cleared. */
+
+ START_TEST ("testing error state from old file cleared\n");
+ fp = xfopen ("/dev/full", "w");
+ fputc ('x', fp);
+ fflush (fp);
+ TEST_VERIFY (ferror (fp));
+ TEST_VERIFY (!feof (fp));
+ fp = FREOPEN (file2, "w", fp);
+ TEST_VERIFY_EXIT (fp != NULL);
+ TEST_VERIFY (!ferror (fp));
+ TEST_VERIFY (!feof (fp));
+ xfclose (fp);
+ END_TEST;
+
+ START_TEST ("testing EOF state from old file cleared\n");
+ fp = xfopen ("/dev/null", "r");
+ fgetc (fp);
+ TEST_VERIFY (!ferror (fp));
+ TEST_VERIFY (feof (fp));
+ fp = FREOPEN (file2, "r", fp);
+ TEST_VERIFY_EXIT (fp != NULL);
+ TEST_VERIFY (!ferror (fp));
+ TEST_VERIFY (!feof (fp));
+ xfclose (fp);
+ END_TEST;
+
+ /* Test freopen with NULL, same mode (should flush content and reset
+ file offset). */
+
+ START_TEST ("testing freopen with NULL, same mode\n");
+ fp = xfopen (file1, "r+");
+ ret = fputs ("same mode", fp);
+ TEST_VERIFY (ret >= 0);
+ fp = FREOPEN (NULL, "r+", fp);
+ TEST_VERIFY_EXIT (fp != NULL);
+ TEST_COMPARE_FILE_STRING (fp, "same mode");
+ xfclose (fp);
+ END_TEST;
+
+ /* Test freopen with NULL, different mode. */
+
+ START_TEST ("testing freopen with NULL, different mode\n");
+ fp = xfopen (file1, "w");
+ ret = fputs ("different mode", fp);
+ TEST_VERIFY (ret >= 0);
+ fp = FREOPEN (NULL, "r", fp);
+ TEST_VERIFY_EXIT (fp != NULL);
+ TEST_COMPARE_FILE_STRING (fp, "different mode");
+ xfclose (fp);
+ END_TEST;
+
+ /* Test freopen with NULL, renamed file. This verifies that
+ reopening succeeds (and resets the file position indicator to
+ start of file) even when the original path could no longer be
+ opened. */
+
+ START_TEST ("testing freopen with NULL, renamed file\n");
+ fp = xfopen (file1, "r+");
+ ret = fputs ("file has been renamed", fp);
+ TEST_VERIFY (ret >= 0);
+ ret = rename (file1, file1a);
+ TEST_COMPARE (ret, 0);
+ fp = FREOPEN (NULL, "r+", fp);
+ TEST_VERIFY_EXIT (fp != NULL);
+ TEST_COMPARE_FILE_STRING (fp, "file has been renamed");
+ xfclose (fp);
+ ret = rename (file1a, file1);
+ TEST_COMPARE (ret, 0);
+ END_TEST;
+
+ /* Test freopen with NULL, deleted file. This verifies that
+ reopening succeeds (and resets the file position indicator to
+ start of file) even when the original path could no longer be
+ opened. */
+
+ START_TEST ("testing freopen with NULL, deleted file\n");
+ fp = xfopen (file1, "r+");
+ ret = fputs ("file has now been deleted", fp);
+ TEST_VERIFY (ret >= 0);
+ ret = remove (file1);
+ TEST_COMPARE (ret, 0);
+ fp = FREOPEN (NULL, "r+", fp);
+ TEST_VERIFY_EXIT (fp != NULL);
+ TEST_COMPARE_FILE_STRING (fp, "file has now been deleted");
+ xfclose (fp);
+ /* Recreate the file so it is present when expected for temporary
+ file deletion. */
+ support_write_file_string (file1, "file1");
+ END_TEST;
+
+ free (temp_dir);
+ free (file1);
+ free (file2);
+ free (file3);
+ free (file4);
+ free (file1a);
+ return 0;
+}
+
+#include <support/test-driver.c>
diff --git a/stdio-common/tst-freopen2.c b/stdio-common/tst-freopen2.c
new file mode 100644
index 0000000..11ec7a9
--- /dev/null
+++ b/stdio-common/tst-freopen2.c
@@ -0,0 +1,3 @@
+#define FREOPEN freopen
+#define OTHER_FREOPEN freopen64
+#include <tst-freopen2-main.c>
diff --git a/stdio-common/tst-freopen3-main.c b/stdio-common/tst-freopen3-main.c
new file mode 100644
index 0000000..990a6e5
--- /dev/null
+++ b/stdio-common/tst-freopen3-main.c
@@ -0,0 +1,92 @@
+/* Test freopen failure.
+ Copyright (C) 2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+#include <errno.h>
+#include <fcntl.h>
+#include <mcheck.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <support/check.h>
+#include <support/descriptors.h>
+#include <support/file_contents.h>
+#include <support/support.h>
+#include <support/temp_file.h>
+#include <support/test-driver.h>
+#include <support/xstdio.h>
+
+#define START_TEST(DESC) \
+ do \
+ { \
+ fds = support_descriptors_list (); \
+ verbose_printf (DESC); \
+ } \
+ while (0)
+
+#define END_TEST \
+ do \
+ { \
+ support_descriptors_check (fds); \
+ support_descriptors_free (fds); \
+ } \
+ while (0)
+
+int
+do_test (void)
+{
+ mtrace ();
+ struct support_descriptors *fds;
+ char *temp_dir = support_create_temp_directory ("tst-freopen3");
+ char *file1 = xasprintf ("%s/file1", temp_dir);
+ support_write_file_string (file1, "file1");
+ add_temp_file (file1);
+ char *file2 = xasprintf ("%s/file2", temp_dir);
+ support_write_file_string (file2, "file2");
+ add_temp_file (file2);
+ char *file_nodir = xasprintf ("%s/nodir/file", temp_dir);
+ FILE *fp;
+ int ret;
+ int fd;
+
+ START_TEST ("Testing w -> wx (file exists)\n");
+ fp = xfopen (file1, "w");
+ fp = FREOPEN (file2, "wx", fp);
+ TEST_VERIFY (fp == NULL);
+ END_TEST;
+
+ /* Test old file is closed even when opening the new file fails. */
+
+ START_TEST ("testing r -> r (opening new file fails)\n");
+ fp = xfopen (file1, "r");
+ fd = fileno (fp);
+ fp = FREOPEN (file_nodir, "r", fp);
+ TEST_VERIFY (fp == NULL);
+ errno = 0;
+ ret = fcntl (fd, F_GETFL);
+ TEST_COMPARE (ret, -1);
+ TEST_COMPARE (errno, EBADF);
+ END_TEST;
+
+ free (temp_dir);
+ free (file1);
+ free (file2);
+ free (file_nodir);
+ return 0;
+}
+
+#include <support/test-driver.c>
diff --git a/stdio-common/tst-freopen3.c b/stdio-common/tst-freopen3.c
new file mode 100644
index 0000000..5041b6b
--- /dev/null
+++ b/stdio-common/tst-freopen3.c
@@ -0,0 +1,2 @@
+#define FREOPEN freopen
+#include <tst-freopen3-main.c>
diff --git a/stdio-common/tst-freopen4-main.c b/stdio-common/tst-freopen4-main.c
new file mode 100644
index 0000000..7284677
--- /dev/null
+++ b/stdio-common/tst-freopen4-main.c
@@ -0,0 +1,102 @@
+/* Test freopen in chroot.
+ Copyright (C) 2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+#include <mcheck.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <support/check.h>
+#include <support/file_contents.h>
+#include <support/namespace.h>
+#include <support/support.h>
+#include <support/temp_file.h>
+#include <support/test-driver.h>
+#include <support/xstdio.h>
+#include <support/xunistd.h>
+
+int
+do_test (void)
+{
+ mtrace ();
+ char *temp_dir;
+ FILE *fp;
+ int ret;
+
+ /* These chroot tests verify that either reopening a renamed or
+ deleted file works even in the absence of /proc, or that it fails
+ (without memory leaks); thus, for example, such reopening does
+ not crash in the absence of /proc. */
+
+ support_become_root ();
+ if (!support_can_chroot ())
+ return EXIT_UNSUPPORTED;
+
+ temp_dir = support_create_temp_directory ("tst-freopen4");
+ xchroot (temp_dir);
+
+ /* Test freopen with NULL, renamed file. This verifies that
+ reopening succeeds (and resets the file position indicator to
+ start of file) even when the original path could no longer be
+ opened, or fails without a memory leak. (It is not possible to
+ use <support/descriptors.h> to test for file descriptor leaks
+ here, because that also depends on /proc.) */
+
+ verbose_printf ("testing freopen with NULL, renamed file\n");
+ fp = xfopen ("/file1", "w+");
+ ret = fputs ("file has been renamed", fp);
+ TEST_VERIFY (ret >= 0);
+ ret = rename ("/file1", "/file1a");
+ TEST_COMPARE (ret, 0);
+ fp = FREOPEN (NULL, "r+", fp);
+ if (fp != NULL)
+ {
+ puts ("freopen of renamed file succeeded");
+ TEST_COMPARE_FILE_STRING (fp, "file has been renamed");
+ xfclose (fp);
+ }
+ else
+ puts ("freopen of renamed file failed (OK)");
+ ret = rename ("/file1a", "/file1");
+ TEST_COMPARE (ret, 0);
+
+ /* Test freopen with NULL, deleted file. This verifies that
+ reopening succeeds (and resets the file position indicator to
+ start of file) even when the original path could no longer be
+ opened, or fails without a memory leak. */
+
+ verbose_printf ("testing freopen with NULL, deleted file\n");
+ fp = xfopen ("/file1", "r+");
+ ret = fputs ("file has now been deleted", fp);
+ TEST_VERIFY (ret >= 0);
+ ret = remove ("/file1");
+ TEST_COMPARE (ret, 0);
+ fp = FREOPEN (NULL, "r+", fp);
+ if (fp != NULL)
+ {
+ puts ("freopen of deleted file succeeded");
+ TEST_COMPARE_FILE_STRING (fp, "file has now been deleted");
+ xfclose (fp);
+ }
+ else
+ puts ("freopen of deleted file failed (OK)");
+
+ free (temp_dir);
+ return 0;
+}
+
+#include <support/test-driver.c>
diff --git a/stdio-common/tst-freopen4.c b/stdio-common/tst-freopen4.c
new file mode 100644
index 0000000..f39ec0d
--- /dev/null
+++ b/stdio-common/tst-freopen4.c
@@ -0,0 +1,2 @@
+#define FREOPEN freopen
+#include <tst-freopen4-main.c>
diff --git a/stdio-common/tst-freopen5.c b/stdio-common/tst-freopen5.c
new file mode 100644
index 0000000..f32626b
--- /dev/null
+++ b/stdio-common/tst-freopen5.c
@@ -0,0 +1,144 @@
+/* Test freopen and freopen64 with large offsets.
+ Copyright (C) 2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+#include <errno.h>
+#include <mcheck.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <support/check.h>
+#include <support/descriptors.h>
+#include <support/support.h>
+#include <support/temp_file.h>
+#include <support/test-driver.h>
+#include <support/xstdio.h>
+
+#define START_TEST(DESC) \
+ do \
+ { \
+ fds = support_descriptors_list (); \
+ verbose_printf (DESC); \
+ } \
+ while (0)
+
+#define END_TEST \
+ do \
+ { \
+ support_descriptors_check (fds); \
+ support_descriptors_free (fds); \
+ } \
+ while (0)
+
+int
+do_test (void)
+{
+ mtrace ();
+ struct support_descriptors *fds;
+ FILE *fp;
+ int ret;
+
+ char *temp_dir = support_create_temp_directory ("tst-freopen5");
+ /* This file is removed at the end of each test rather than left
+ around between tests to avoid problems with subsequent tests
+ reopening it as a large (2GB + 1 byte) file. */
+ char *file1 = xasprintf ("%s/file1", temp_dir);
+
+ /* fopen with freopen64: large offsets OK. */
+ START_TEST ("testing fopen with freopen64\n");
+ fp = fopen ("/dev/null", "r");
+ TEST_VERIFY_EXIT (fp != NULL);
+ fp = freopen64 (file1, "w", fp);
+ TEST_VERIFY_EXIT (fp != NULL);
+ setbuf (fp, NULL);
+ ret = fseeko64 (fp, 1LL << 32, SEEK_SET);
+ TEST_COMPARE (ret, 0);
+ ret = fputc ('x', fp);
+ TEST_COMPARE (ret, 'x');
+ xfclose (fp);
+ ret = remove (file1);
+ TEST_COMPARE (ret, 0);
+ END_TEST;
+
+ /* fopen64 with freopen64: large offsets OK. */
+ START_TEST ("testing fopen64 with freopen64\n");
+ fp = fopen64 ("/dev/null", "r");
+ TEST_VERIFY_EXIT (fp != NULL);
+ fp = freopen64 (file1, "w", fp);
+ TEST_VERIFY_EXIT (fp != NULL);
+ setbuf (fp, NULL);
+ ret = fseeko64 (fp, 1LL << 32, SEEK_SET);
+ TEST_COMPARE (ret, 0);
+ ret = fputc ('x', fp);
+ TEST_COMPARE (ret, 'x');
+ xfclose (fp);
+ ret = remove (file1);
+ TEST_COMPARE (ret, 0);
+ END_TEST;
+
+ /* fopen with freopen: large offsets not OK on 32-bit systems. */
+ START_TEST ("testing fopen with freopen\n");
+ fp = fopen ("/dev/null", "r");
+ TEST_VERIFY_EXIT (fp != NULL);
+ fp = freopen (file1, "w", fp);
+ TEST_VERIFY_EXIT (fp != NULL);
+ setbuf (fp, NULL);
+ ret = fseeko64 (fp, 1LL << 32, SEEK_SET);
+ TEST_COMPARE (ret, 0);
+ errno = 0;
+ ret = fputc ('x', fp);
+ if (sizeof (off_t) == 4)
+ {
+ TEST_COMPARE (ret, EOF);
+ TEST_COMPARE (errno, EFBIG);
+ }
+ else
+ TEST_COMPARE (ret, 'x');
+ fclose (fp);
+ ret = remove (file1);
+ TEST_COMPARE (ret, 0);
+ END_TEST;
+
+ /* fopen64 with freopen: large offsets not OK on 32-bit systems. */
+ START_TEST ("testing fopen64 with freopen\n");
+ fp = fopen64 ("/dev/null", "r");
+ TEST_VERIFY_EXIT (fp != NULL);
+ fp = freopen (file1, "w", fp);
+ TEST_VERIFY_EXIT (fp != NULL);
+ setbuf (fp, NULL);
+ ret = fseeko64 (fp, 1LL << 32, SEEK_SET);
+ TEST_COMPARE (ret, 0);
+ errno = 0;
+ ret = fputc ('x', fp);
+ if (sizeof (off_t) == 4)
+ {
+ TEST_COMPARE (ret, EOF);
+ TEST_COMPARE (errno, EFBIG);
+ }
+ else
+ TEST_COMPARE (ret, 'x');
+ fclose (fp);
+ ret = remove (file1);
+ TEST_COMPARE (ret, 0);
+ END_TEST;
+
+ free (temp_dir);
+ free (file1);
+ return 0;
+}
+
+#include <support/test-driver.c>
diff --git a/stdio-common/tst-freopen6-main.c b/stdio-common/tst-freopen6-main.c
new file mode 100644
index 0000000..f493f42
--- /dev/null
+++ b/stdio-common/tst-freopen6-main.c
@@ -0,0 +1,98 @@
+/* Test freopen of stdin / stdout / stderr.
+ Copyright (C) 2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+#include <errno.h>
+#include <mcheck.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#include <support/check.h>
+#include <support/file_contents.h>
+#include <support/support.h>
+#include <support/temp_file.h>
+#include <support/test-driver.h>
+#include <support/xstdio.h>
+
+int
+do_test (void)
+{
+ mtrace ();
+ char *temp_dir = support_create_temp_directory ("tst-freopen6");
+ char *file1 = xasprintf ("%s/file1", temp_dir);
+ support_write_file_string (file1, "file1");
+ add_temp_file (file1);
+ FILE *fp;
+ int ret;
+
+ verbose_printf ("Testing reopening stdin\n");
+ fp = FREOPEN (file1, "r", stdin);
+ TEST_VERIFY_EXIT (fp == stdin);
+ ret = getchar ();
+ TEST_COMPARE (ret, 'f');
+ ret = getchar ();
+ TEST_COMPARE (ret, 'i');
+ ret = getchar ();
+ TEST_COMPARE (ret, 'l');
+ ret = getchar ();
+ TEST_COMPARE (ret, 'e');
+ ret = getchar ();
+ TEST_COMPARE (ret, '1');
+ ret = getchar ();
+ TEST_COMPARE (ret, EOF);
+ xfclose (fp);
+
+ verbose_printf ("Testing reopening stderr\n");
+ fp = FREOPEN (file1, "w+", stderr);
+ TEST_VERIFY_EXIT (fp == stderr);
+ errno = EINVAL;
+ perror ("test");
+ ret = fseek (fp, 0, SEEK_SET);
+ TEST_COMPARE (ret, 0);
+ TEST_COMPARE_FILE_STRING (fp, "test: Invalid argument\n");
+ xfclose (fp);
+
+ verbose_printf ("Testing reopening stdout\n");
+ /* Defer checks until the old stdout has been restored to make it
+ more likely any errors are written to the old stdout (rather than
+ the temporary file used for the redirected stdout). */
+ int old_stdout = dup (STDOUT_FILENO);
+ TEST_VERIFY_EXIT (old_stdout != -1);
+ int ret_fseek = 0;
+ int ret_compare = 0;
+ fp = FREOPEN (file1, "w+", stdout);
+ int fp_eq_stdout = fp == stdout;
+ if (fp != NULL)
+ {
+ printf ("reopened\n");
+ ret_fseek = fseek (fp, 0, SEEK_SET);
+ ret_compare = support_compare_file_string (fp, "reopened\n");
+ }
+ xfclose (fp);
+ stdout = fdopen (old_stdout, "w");
+ TEST_VERIFY (fp_eq_stdout);
+ TEST_COMPARE (ret_fseek, 0);
+ TEST_COMPARE (ret_compare, 0);
+ xfclose (stdout);
+
+ free (temp_dir);
+ free (file1);
+ return 0;
+}
+
+#include <support/test-driver.c>
diff --git a/stdio-common/tst-freopen6.c b/stdio-common/tst-freopen6.c
new file mode 100644
index 0000000..8fd6957
--- /dev/null
+++ b/stdio-common/tst-freopen6.c
@@ -0,0 +1,2 @@
+#define FREOPEN freopen
+#include <tst-freopen6-main.c>
diff --git a/stdio-common/tst-freopen64-2.c b/stdio-common/tst-freopen64-2.c
new file mode 100644
index 0000000..88fdc64
--- /dev/null
+++ b/stdio-common/tst-freopen64-2.c
@@ -0,0 +1,3 @@
+#define FREOPEN freopen64
+#define OTHER_FREOPEN freopen
+#include <tst-freopen2-main.c>
diff --git a/stdio-common/tst-freopen64-3.c b/stdio-common/tst-freopen64-3.c
new file mode 100644
index 0000000..b91b6d2
--- /dev/null
+++ b/stdio-common/tst-freopen64-3.c
@@ -0,0 +1,2 @@
+#define FREOPEN freopen64
+#include <tst-freopen3-main.c>
diff --git a/stdio-common/tst-freopen64-4.c b/stdio-common/tst-freopen64-4.c
new file mode 100644
index 0000000..1411be2
--- /dev/null
+++ b/stdio-common/tst-freopen64-4.c
@@ -0,0 +1,2 @@
+#define FREOPEN freopen64
+#include <tst-freopen4-main.c>
diff --git a/stdio-common/tst-freopen64-6.c b/stdio-common/tst-freopen64-6.c
new file mode 100644
index 0000000..3ec509a
--- /dev/null
+++ b/stdio-common/tst-freopen64-6.c
@@ -0,0 +1,2 @@
+#define FREOPEN freopen64
+#include <tst-freopen6-main.c>
diff --git a/stdio-common/tst-freopen64-7.c b/stdio-common/tst-freopen64-7.c
new file mode 100644
index 0000000..f34c280
--- /dev/null
+++ b/stdio-common/tst-freopen64-7.c
@@ -0,0 +1,2 @@
+#define FREOPEN freopen64
+#include <tst-freopen7-main.c>
diff --git a/stdio-common/tst-freopen7-main.c b/stdio-common/tst-freopen7-main.c
new file mode 100644
index 0000000..965e0b4
--- /dev/null
+++ b/stdio-common/tst-freopen7-main.c
@@ -0,0 +1,155 @@
+/* Test freopen cancellation handling.
+ Copyright (C) 2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+#include <errno.h>
+#include <fcntl.h>
+#include <mcheck.h>
+#include <pthread.h>
+#include <semaphore.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <wchar.h>
+
+#include <support/check.h>
+#include <support/file_contents.h>
+#include <support/support.h>
+#include <support/temp_file.h>
+#include <support/test-driver.h>
+#include <support/xstdio.h>
+#include <support/xthread.h>
+#include <support/xunistd.h>
+
+char *file1, *file2, *file3, *fifo;
+
+sem_t sem;
+
+void *
+test_rc_to_r (void *p)
+{
+ int ret;
+ FILE *fp, *fp2;
+ ret = sem_post (&sem);
+ TEST_VERIFY_EXIT (ret == 0);
+ fp = xfopen (file1, "rc");
+ for (int i = 0; i < 1000000; i++)
+ {
+ fgetc (fp);
+ fseek (fp, 0, SEEK_SET);
+ }
+ fp2 = xfopen (file3, "wc");
+ fputs ("rc_to_r got to freopen", fp2);
+ xfclose (fp2);
+ /* Cancellation should occur at some point from here onwards
+ (possibly leaking memory and file descriptors associated with the
+ FILE). */
+ fp = FREOPEN (file2, "r", fp);
+ TEST_VERIFY_EXIT (fp != NULL);
+ for (;;)
+ {
+ fgetc (fp);
+ fseek (fp, 0, SEEK_SET);
+ }
+}
+
+void *
+test_r_to_rc (void *p)
+{
+ int ret;
+ FILE *fp;
+ fp = xfopen (file1, "r");
+ fp = FREOPEN (fifo, "rc", fp);
+ TEST_VERIFY_EXIT (fp != NULL);
+ ret = sem_post (&sem);
+ TEST_VERIFY_EXIT (ret == 0);
+ /* No cancellation should occur for I/O on fifo. */
+ ret = fgetc (fp);
+ /* At this point, the other thread has called pthread_cancel and
+ then written a byte to the fifo, so this thread is cancelled at
+ the next cancellation point. */
+ TEST_VERIFY (ret == 'x');
+ xfclose (fp);
+ fp = xfopen (file3, "wc");
+ fputs ("r_to_rc got to fclose", fp);
+ xfclose (fp);
+ pthread_testcancel ();
+ FAIL_EXIT1 ("test_r_to_rc not cancelled\n");
+}
+
+int
+do_test (void)
+{
+ char *temp_dir = support_create_temp_directory ("tst-freopen-cancel");
+ file1 = xasprintf ("%s/file1", temp_dir);
+ support_write_file_string (file1, "file1");
+ add_temp_file (file1);
+ file2 = xasprintf ("%s/file2", temp_dir);
+ support_write_file_string (file2, "file2");
+ add_temp_file (file2);
+ file3 = xasprintf ("%s/file3", temp_dir);
+ support_write_file_string (file3, "file3");
+ add_temp_file (file3);
+ fifo = xasprintf ("%s/fifo", temp_dir);
+ xmkfifo (fifo, 0666);
+ add_temp_file (fifo);
+ int ret;
+ pthread_t thr;
+ void *retval;
+
+ /* Test changing to/from c (cancellation disabled). */
+
+ verbose_printf ("Testing rc -> r\n");
+ ret = sem_init (&sem, 0, 0);
+ TEST_VERIFY_EXIT (ret == 0);
+ thr = xpthread_create (NULL, test_rc_to_r, NULL);
+ ret = sem_wait (&sem);
+ TEST_VERIFY_EXIT (ret == 0);
+ xpthread_cancel (thr);
+ ret = pthread_join (thr, &retval);
+ TEST_COMPARE (ret, 0);
+ TEST_VERIFY (retval == PTHREAD_CANCELED);
+ TEST_OPEN_AND_COMPARE_FILE_STRING (file3, "rc_to_r got to freopen");
+
+ verbose_printf ("Testing r -> rc\n");
+ ret = sem_init (&sem, 0, 0);
+ TEST_VERIFY_EXIT (ret == 0);
+ thr = xpthread_create (NULL, test_r_to_rc, NULL);
+ FILE *fp = xfopen (fifo, "w");
+ ret = sem_wait (&sem);
+ TEST_VERIFY_EXIT (ret == 0);
+ /* This call happens while, or before, the other thread is waiting
+ to read a character from the fifo. It thus verifies that
+ cancellation does not occur from the fgetc call in that thread
+ (it should instead occur only in pthread_testcancel call),
+ because the expected string is only written to file3 after that
+ thread closes the fifo. */
+ xpthread_cancel (thr);
+ fputc ('x', fp);
+ xfclose (fp);
+ ret = pthread_join (thr, &retval);
+ TEST_COMPARE (ret, 0);
+ TEST_VERIFY (retval == PTHREAD_CANCELED);
+ TEST_OPEN_AND_COMPARE_FILE_STRING (file3, "r_to_rc got to fclose");
+
+ free (temp_dir);
+ free (file1);
+ free (file2);
+ free (file3);
+ return 0;
+}
+
+#include <support/test-driver.c>
diff --git a/stdio-common/tst-freopen7.c b/stdio-common/tst-freopen7.c
new file mode 100644
index 0000000..03d0de7
--- /dev/null
+++ b/stdio-common/tst-freopen7.c
@@ -0,0 +1,2 @@
+#define FREOPEN freopen
+#include <tst-freopen7-main.c>
diff --git a/stdio-common/tst-fwrite-memstrm.c b/stdio-common/tst-fwrite-memstrm.c
new file mode 100644
index 0000000..7ee3831
--- /dev/null
+++ b/stdio-common/tst-fwrite-memstrm.c
@@ -0,0 +1,177 @@
+/* Test fwrite on a memory stream.
+ Copyright (C) 2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <support/check.h>
+#include <support/temp_file.h>
+#include <support/xstdio.h>
+#include <support/xunistd.h>
+
+void
+test_ro (void)
+{
+ FILE *f;
+ char *out;
+
+ /* Try to allocate a small buffer for this test. */
+ out = malloc (2);
+ TEST_VERIFY_EXIT (out != NULL);
+
+ /* Try to open the allocated buffer as a read-only stream. */
+ f = fmemopen (out, 2, "r");
+ TEST_VERIFY_EXIT (f != NULL);
+
+ /* Try to write to the temporary file with nmemb = 0, then check that
+ fwrite returns 0. No errors are expected from this. */
+ TEST_COMPARE (fwrite ("a", 1, 0, f), 0);
+ TEST_COMPARE (ferror (f), 0);
+
+ /* Try to write to the temporary file with size = 0, then check that
+ fwrite returns 0. No errors are expected from this. */
+ TEST_COMPARE (fwrite ("a", 0, 1, f), 0);
+ TEST_COMPARE (ferror (f), 0);
+
+ /* Try to write a single byte to the temporary file, then check that
+ fwrite returns 0. Check if an error was reported. */
+ TEST_COMPARE (fwrite ("a", 1, 1, f), 0);
+ TEST_COMPARE (ferror (f), 1);
+
+ clearerr (f);
+ xfclose (f);
+ free (out);
+}
+
+/* Length of the output buffer in bytes. */
+#define RWBUF_SIZE 16 * 1024
+/* Maximum number of bytes to be written in output buffer. The rest will be
+ used to check against overflow. */
+#define RWBUF_SIZE_WRITABLE RWBUF_SIZE-2048
+
+/* Use the following byte to identify areas that should have not been
+ modified. */
+#define KNOWN_BYTE 0xaa
+
+void
+test_one_rw (const char *in, size_t size, size_t nmemb,
+ size_t expected_ret)
+{
+ FILE *f;
+ char *out, *expected_out;
+ /* Total number of bytes expected to be written. */
+ size_t expected_bytes = size * nmemb;
+
+ printf ("Testing with size = %zd, nmemb = %zd\n", size, nmemb);
+
+ TEST_VERIFY_EXIT (expected_ret <= RWBUF_SIZE_WRITABLE);
+ TEST_VERIFY_EXIT (expected_bytes <= RWBUF_SIZE_WRITABLE);
+
+ /* Try to allocate a buffer for this test and initialize it with
+ known contents. */
+ out = malloc (RWBUF_SIZE);
+ TEST_VERIFY_EXIT (out != NULL);
+ memset (out, KNOWN_BYTE, RWBUF_SIZE);
+
+ /* Try to allocate a buffer and fill it with the contents that are expected
+ to be in memory after flushing/closing the memory stream. */
+ expected_out = malloc (RWBUF_SIZE);
+ TEST_VERIFY_EXIT (expected_out != NULL);
+ if (expected_bytes > 0)
+ {
+ memcpy (expected_out, in, expected_bytes);
+ expected_out[expected_bytes] = 0;
+ memset (expected_out + expected_bytes + 1, KNOWN_BYTE,
+ RWBUF_SIZE - expected_bytes - 1);
+ }
+ else
+ {
+ /* No changes to the output are expected. */
+ memset (expected_out, KNOWN_BYTE, RWBUF_SIZE);
+ }
+
+ /* Try to open the allocated buffer as a read-write stream. */
+ f = fmemopen (out, RWBUF_SIZE, "w");
+ TEST_VERIFY_EXIT (f != NULL);
+
+ /* Try to write to the memory stream. Check if fwrite() returns the
+ expected value. No errors are expected. */
+ TEST_COMPARE (fwrite (in, size, nmemb, f), expected_ret);
+ TEST_COMPARE (ferror (f), 0);
+
+ xfclose (f);
+
+ /* Ensure the output has the expected contents. */
+ TEST_COMPARE (memcmp (out, expected_out, expected_bytes), 0);
+
+ free (expected_out);
+ free (out);
+}
+
+void
+test_rw (void)
+{
+ char * in;
+ int i, j;
+ size_t size[] = {1, 8, 11, 16, 17, 0};
+ size_t nmemb[] = {32, 83, 278, 709, 4097, RWBUF_SIZE / 2,
+ RWBUF_SIZE_WRITABLE, 0};
+ size_t n;
+
+ /* Try to write to the temporary file with nmemb = 0, then check that
+ fwrite returns 0; */
+ test_one_rw ("a", 1, 0, 0);
+
+ /* Try to write to the temporary file with size = 0, then check that
+ fwrite returns 0; */
+ test_one_rw ("a", 0, 1, 0);
+
+ /* Try to write a single byte to the temporary file, then check that
+ fwrite returns 1; */
+ test_one_rw ("a", 1, 2, 2);
+
+ in = malloc (RWBUF_SIZE);
+ TEST_VERIFY_EXIT (in != NULL);
+ for (i = 0; i < RWBUF_SIZE / 2; i++)
+ in[i] = i % 0xff;
+
+ /* Test with all posibilities of size[] x nmemb[]. */
+ for (i = 0; nmemb[i] != 0; i++)
+ {
+ for (j = 0; size[j] != 0; j++)
+ {
+ n = nmemb[i] / size[j];
+ test_one_rw (in, size[j], n, n);
+ }
+ /* Run the test with a single item of maximum size. */
+ test_one_rw (in, nmemb[i], 1, 1);
+ }
+
+ free (in);
+}
+
+static int
+do_test (void)
+{
+ test_ro ();
+ test_rw ();
+
+ return 0;
+}
+
+#include <support/test-driver.c>
diff --git a/stdio-common/tst-fwrite-overflow.c b/stdio-common/tst-fwrite-overflow.c
new file mode 100644
index 0000000..fe503fd
--- /dev/null
+++ b/stdio-common/tst-fwrite-overflow.c
@@ -0,0 +1,130 @@
+/* Test the overflow of fwrite's internal buffer.
+ Copyright (C) 2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+/* stdio.h provides BUFSIZ, which is the size of fwrite's internal buffer. */
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <support/check.h>
+#include <support/temp_file.h>
+#include <support/support.h>
+#include <support/xstdio.h>
+#include <support/xunistd.h>
+
+/* Length of the buffers in bytes. */
+#define RWBUF_SIZE (2 * BUFSIZ)
+
+void
+test_one_rw (const char *in, size_t size, size_t nmemb, size_t blocks)
+{
+ int fd;
+ FILE *f;
+ char *out;
+ size_t written, to_write;
+ const size_t requested = size * nmemb;
+
+ printf ("Testing with size = %zd, nmemb = %zd, blocks = %zd\n",
+ size, nmemb, blocks);
+
+ TEST_VERIFY_EXIT (requested <= RWBUF_SIZE);
+ /* Ensure fwrite's internal buffer will overflow. */
+ TEST_VERIFY_EXIT (requested > BUFSIZ);
+
+ /* Create a temporary file and open it for reading and writing. */
+ fd = create_temp_file ("tst-fwrite-overflow", NULL);
+ TEST_VERIFY_EXIT (fd != -1);
+ f = fdopen (fd, "w+");
+ TEST_VERIFY_EXIT (f != NULL);
+
+ /* Call fwrite() as many times as needed, until all data is written,
+ limiting the amount of data written per call to block items. */
+ for (written = 0; written < nmemb; written += to_write)
+ {
+ if (written + blocks <= nmemb)
+ to_write = blocks;
+ else
+ to_write = nmemb - written;
+ /* Check if fwrite() returns the expected value. No errors are
+ expected. */
+ TEST_COMPARE (fwrite (in + size * written, size, to_write, f),
+ to_write);
+ TEST_COMPARE (ferror (f), 0);
+ }
+ TEST_VERIFY_EXIT (written == nmemb);
+
+ /* Ensure all the data is flushed to file. */
+ TEST_COMPARE (fflush (f), 0);
+
+ /* We have to check if the contents in the file are correct. Go back to
+ the beginning of the file. */
+ rewind (f);
+ /* Try to allocate a buffer and save the contents of the generated file to
+ it. */
+ out = xmalloc (RWBUF_SIZE);
+ TEST_COMPARE (fread (out, size, nmemb, f), nmemb);
+
+ /* Ensure the output has the expected contents. */
+ TEST_COMPARE (memcmp (out, in, requested), 0);
+
+ xfclose (f);
+ free (out);
+}
+
+static int
+do_test (void)
+{
+ char * in;
+ int i, j;
+ size_t nmemb[] = {BUFSIZ + 1, RWBUF_SIZE, 0};
+ /* Maximum number of items written for each fwrite call. */
+ size_t block[] = {100, 1024, 2047, 0};
+ /* The largest block must fit entirely in fwrite's buffer. */
+ _Static_assert (2047 < BUFSIZ,
+ "a block must fit in fwrite's internal buffer");
+
+ in = xmalloc (RWBUF_SIZE);
+ for (i = 0; i < RWBUF_SIZE; i++)
+ in[i] = i % 0xff;
+
+ for (i = 0; nmemb[i] != 0; i++)
+ for (j = 0; block[j] != 0; j++)
+ {
+ /* Run a test with an array of nmemb bytes. Write at most block
+ items per fwrite call. */
+ test_one_rw (in, 1, nmemb[i], block[j]);
+ /* Run a test that overflows fwrite's internal buffer in a single call
+ by writting a single item of nmemb bytes.
+ This call should not use the buffer and should be written directly
+ to the file. */
+ test_one_rw (in, nmemb[i], 1, nmemb[i]);
+ }
+
+ for (j = 0; block[j] != 0; j++)
+ {
+ /* Run a test with size=2 and the minimum nmemb value that still
+ overflows the buffer. Write at most block items per fwrite call. */
+ test_one_rw (in, 2, BUFSIZ / 2 + 1, block[j]);
+ /* Likewise, but size=3. */
+ test_one_rw (in, 3, BUFSIZ / 3 + 1, block[j]);
+ }
+
+ free (in);
+ return 0;
+}
+
+#include <support/test-driver.c>
diff --git a/stdio-common/tst-fwrite-ro.c b/stdio-common/tst-fwrite-ro.c
new file mode 100644
index 0000000..7013bee
--- /dev/null
+++ b/stdio-common/tst-fwrite-ro.c
@@ -0,0 +1,65 @@
+/* Test fwrite on a read-only stream.
+ Copyright (C) 2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+#include <stdio.h>
+#include <support/check.h>
+#include <support/temp_file.h>
+#include <support/xstdio.h>
+#include <support/xunistd.h>
+
+/* A small buffer size is enough to run this test. */
+#define BUFSIZE 4
+
+static int
+do_test (void)
+{
+ int fd;
+ FILE *f;
+ struct stat64 st;
+
+ /* Create a temporary file and open it in read-only mode. */
+ fd = create_temp_file ("tst-fwrite-ro", NULL);
+ TEST_VERIFY_EXIT (fd != -1);
+ f = fdopen (fd, "r");
+ TEST_VERIFY_EXIT (f != NULL);
+
+ /* Try to write to the temporary file with nmemb = 0, then check that
+ fwrite returns 0. No errors are expected from this. */
+ TEST_COMPARE (fwrite ("a", 1, 0, f), 0);
+ TEST_COMPARE (ferror (f), 0);
+
+ /* Try to write to the temporary file with size = 0, then check that
+ fwrite returns 0. No errors are expected from this. */
+ TEST_COMPARE (fwrite ("a", 0, 1, f), 0);
+ TEST_COMPARE (ferror (f), 0);
+
+ /* Try to write a single byte to the temporary file, then check that
+ fwrite returns 0. Check if an error was reported. */
+ TEST_COMPARE (fwrite ("a", 1, 1, f), 0);
+ TEST_COMPARE (ferror (f), 1);
+ clearerr (f);
+
+ xfstat64 (fd, &st);
+ TEST_COMPARE (st.st_size, 0);
+
+ xfclose (f);
+
+ return 0;
+}
+
+#include <support/test-driver.c>
diff --git a/stdio-common/tst-getline-enomem.c b/stdio-common/tst-getline-enomem.c
new file mode 100644
index 0000000..7fc70ea
--- /dev/null
+++ b/stdio-common/tst-getline-enomem.c
@@ -0,0 +1,78 @@
+/* Test getline: ENOMEM on allocation failure.
+ Copyright (C) 2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+#include <errno.h>
+#include <mcheck.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/resource.h>
+
+#include <support/check.h>
+#include <support/test-driver.h>
+
+/* Produce a stream of test data based on data in COOKIE (ignored),
+ storing up to SIZE bytes in BUF. */
+
+static ssize_t
+io_read (void *cookie, char *buf, size_t size)
+{
+ memset (buf, 'x', size);
+ return size;
+}
+
+/* Set up a test stream with fopencookie. */
+
+static FILE *
+open_test_stream (void)
+{
+ static cookie_io_functions_t io_funcs = { .read = io_read };
+ static int cookie;
+ FILE *fp = fopencookie (&cookie, "r", io_funcs);
+ TEST_VERIFY_EXIT (fp != NULL);
+ return fp;
+}
+
+int
+do_test (void)
+{
+ FILE *fp;
+ char *lineptr = NULL;
+ size_t size = 0;
+ ssize_t ret;
+ mtrace ();
+ /* Test ENOMEM (and error indicator for stream set) for memory
+ allocation failure. */
+ verbose_printf ("Testing memory allocation failure\n");
+ fp = open_test_stream ();
+ struct rlimit limit;
+ TEST_VERIFY_EXIT (getrlimit (RLIMIT_AS, &limit) == 0);
+ limit.rlim_cur = 32 * 1024 * 1024;
+ TEST_VERIFY_EXIT (setrlimit (RLIMIT_AS, &limit) == 0);
+ errno = 0;
+ ret = getline (&lineptr, &size, fp);
+ TEST_COMPARE (ret, -1);
+ TEST_COMPARE (errno, ENOMEM);
+ TEST_COMPARE (!!ferror (fp), 1);
+ TEST_COMPARE (feof (fp), 0);
+ free (lineptr);
+ fclose (fp);
+ return 0;
+}
+
+#include <support/test-driver.c>
diff --git a/stdio-common/tst-getline.c b/stdio-common/tst-getline.c
new file mode 100644
index 0000000..29eb7ce
--- /dev/null
+++ b/stdio-common/tst-getline.c
@@ -0,0 +1,451 @@
+/* Test getline.
+ Copyright (C) 2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+#include <errno.h>
+#include <fcntl.h>
+#include <malloc.h>
+#include <mcheck.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <support/check.h>
+#include <support/test-driver.h>
+#include <support/support.h>
+#include <support/xstdio.h>
+#include <support/xunistd.h>
+
+static struct test_data
+{
+ /* Input test data for fopencookie stream. */
+ const char *in_data;
+
+ /* The amount of test data left. */
+ size_t in_data_left;
+
+ /* Error number for forcing an error on next read. */
+ int in_error;
+
+ /* Error number for forcing an error (rather than EOF) after all
+ bytes read. */
+ int in_error_after;
+} the_cookie;
+
+/* Produce a stream of test data based on data in COOKIE, storing up
+ to SIZE bytes in BUF. */
+
+static ssize_t
+io_read (void *cookie, char *buf, size_t size)
+{
+ struct test_data *p = cookie;
+ if (p->in_error)
+ {
+ errno = p->in_error;
+ return -1;
+ }
+ if (size > p->in_data_left)
+ size = p->in_data_left;
+ memcpy (buf, p->in_data, size);
+ p->in_data += size;
+ p->in_data_left -= size;
+ if (p->in_data_left == 0)
+ p->in_error = p->in_error_after;
+ return size;
+}
+
+/* Set up a test stream with fopencookie. */
+
+static FILE *
+open_test_stream (const char *in_data, size_t size)
+{
+ static cookie_io_functions_t io_funcs = { .read = io_read };
+ the_cookie.in_data = in_data;
+ the_cookie.in_data_left = size;
+ the_cookie.in_error = 0;
+ the_cookie.in_error_after = 0;
+ FILE *fp = fopencookie (&the_cookie, "r", io_funcs);
+ TEST_VERIFY_EXIT (fp != NULL);
+ return fp;
+}
+
+/* Set up a test stream with fopencookie, using data from a string
+ literal. */
+#define OPEN_TEST_STREAM(IN_DATA) open_test_stream (IN_DATA, sizeof (IN_DATA))
+
+/* Wrap getline to verify that (as per the glibc manual), *LINEPTR is
+ returned as non-null and with at least *N bytes (even on error or
+ EOF). Also clear errno for the benefit of tests that check the
+ value of errno after the call. */
+
+ssize_t
+wrap_getline (char **lineptr, size_t *n, FILE *stream)
+{
+ errno = 0;
+ ssize_t ret = getline (lineptr, n, stream);
+ if (lineptr != NULL && n != NULL)
+ {
+ TEST_VERIFY (*lineptr != NULL);
+ TEST_VERIFY (malloc_usable_size (*lineptr) >= *n);
+ }
+ return ret;
+}
+
+int
+do_test (void)
+{
+ FILE *fp;
+ char *lineptr = NULL;
+ size_t size = 0;
+ ssize_t ret;
+ mtrace ();
+ /* Test failure with EINVAL (and error indicator for stream set) if
+ lineptr is a null pointer. */
+ verbose_printf ("Testing lineptr == NULL\n");
+ fp = OPEN_TEST_STREAM ("test");
+ ret = wrap_getline (NULL, &size, fp);
+ TEST_COMPARE (ret, -1);
+ TEST_COMPARE (errno, EINVAL);
+ TEST_COMPARE (!!ferror (fp), 1);
+ TEST_COMPARE (feof (fp), 0);
+ fclose (fp);
+ /* Test failure with EINVAL (and error indicator for stream set) if
+ n is a null pointer. */
+ verbose_printf ("Testing n == NULL\n");
+ fp = OPEN_TEST_STREAM ("test");
+ ret = wrap_getline (&lineptr, NULL, fp);
+ TEST_COMPARE (ret, -1);
+ TEST_COMPARE (errno, EINVAL);
+ TEST_COMPARE (!!ferror (fp), 1);
+ TEST_COMPARE (feof (fp), 0);
+ fclose (fp);
+ /* Test failure with EINVAL (and error indicator for stream set) if
+ both lineptr and n are null pointers. */
+ verbose_printf ("Testing lineptr == NULL and n == NULL\n");
+ fp = OPEN_TEST_STREAM ("test");
+ ret = wrap_getline (NULL, NULL, fp);
+ TEST_COMPARE (ret, -1);
+ TEST_COMPARE (errno, EINVAL);
+ TEST_COMPARE (!!ferror (fp), 1);
+ TEST_COMPARE (feof (fp), 0);
+ fclose (fp);
+ /* Test normal line, fitting in available space (including case with
+ null bytes). */
+ verbose_printf ("Testing normal nonempty input\n");
+ lineptr = xmalloc (10);
+ size = 10;
+ fp = OPEN_TEST_STREAM ("foo\nbar\0\n\0baz\nte\0st\n");
+ ret = wrap_getline (&lineptr, &size, fp);
+ TEST_COMPARE (ret, 4);
+ TEST_COMPARE_BLOB (lineptr, 5, "foo\n", 5);
+ ret = wrap_getline (&lineptr, &size, fp);
+ TEST_COMPARE (ret, 5);
+ TEST_COMPARE_BLOB (lineptr, 6, "bar\0\n", 6);
+ ret = wrap_getline (&lineptr, &size, fp);
+ TEST_COMPARE (ret, 5);
+ TEST_COMPARE_BLOB (lineptr, 6, "\0baz\n", 6);
+ ret = wrap_getline (&lineptr, &size, fp);
+ TEST_COMPARE (ret, 6);
+ TEST_COMPARE_BLOB (lineptr, 7, "te\0st\n", 7);
+ ret = wrap_getline (&lineptr, &size, fp);
+ TEST_COMPARE (ret, 1);
+ TEST_COMPARE_BLOB (lineptr, 1, "", 1);
+ ret = wrap_getline (&lineptr, &size, fp);
+ TEST_COMPARE (ret, -1);
+ TEST_COMPARE (ferror (fp), 0);
+ TEST_COMPARE (!!feof (fp), 1);
+ fclose (fp);
+ /* Test normal line, with reallocation (including case with null bytes). */
+ verbose_printf ("Testing normal nonempty input with reallocation\n");
+ free (lineptr);
+ lineptr = NULL;
+ size = 0;
+ fp = OPEN_TEST_STREAM ("foo\nbar\0\n\0baz\nte\0st\n"
+ "foo\nbar\0\n\0baz\nte\0st\n");
+ ret = wrap_getline (&lineptr, &size, fp);
+ TEST_COMPARE (ret, 4);
+ TEST_COMPARE_BLOB (lineptr, 5, "foo\n", 5);
+ free (lineptr);
+ lineptr = NULL;
+ size = 0;
+ ret = wrap_getline (&lineptr, &size, fp);
+ TEST_COMPARE (ret, 5);
+ TEST_COMPARE_BLOB (lineptr, 6, "bar\0\n", 6);
+ free (lineptr);
+ lineptr = NULL;
+ size = 0;
+ ret = wrap_getline (&lineptr, &size, fp);
+ TEST_COMPARE (ret, 5);
+ TEST_COMPARE_BLOB (lineptr, 6, "\0baz\n", 6);
+ free (lineptr);
+ lineptr = NULL;
+ size = 0;
+ ret = wrap_getline (&lineptr, &size, fp);
+ TEST_COMPARE (ret, 6);
+ TEST_COMPARE_BLOB (lineptr, 7, "te\0st\n", 7);
+ free (lineptr);
+ lineptr = xmalloc (1);
+ size = 1;
+ ret = wrap_getline (&lineptr, &size, fp);
+ TEST_COMPARE (ret, 4);
+ TEST_COMPARE_BLOB (lineptr, 5, "foo\n", 5);
+ free (lineptr);
+ lineptr = xmalloc (1);
+ size = 1;
+ ret = wrap_getline (&lineptr, &size, fp);
+ TEST_COMPARE (ret, 5);
+ TEST_COMPARE_BLOB (lineptr, 6, "bar\0\n", 6);
+ free (lineptr);
+ lineptr = xmalloc (1);
+ size = 1;
+ ret = wrap_getline (&lineptr, &size, fp);
+ TEST_COMPARE (ret, 5);
+ TEST_COMPARE_BLOB (lineptr, 6, "\0baz\n", 6);
+ free (lineptr);
+ lineptr = xmalloc (1);
+ size = 1;
+ ret = wrap_getline (&lineptr, &size, fp);
+ TEST_COMPARE (ret, 6);
+ TEST_COMPARE_BLOB (lineptr, 7, "te\0st\n", 7);
+ ret = wrap_getline (&lineptr, &size, fp);
+ TEST_COMPARE (ret, 1);
+ TEST_COMPARE_BLOB (lineptr, 1, "", 1);
+ ret = wrap_getline (&lineptr, &size, fp);
+ TEST_COMPARE (ret, -1);
+ TEST_COMPARE (ferror (fp), 0);
+ TEST_COMPARE (!!feof (fp), 1);
+ fclose (fp);
+ /* Test EOF before delimiter but after some bytes read, fitting in
+ available space (including case with null bytes). */
+ verbose_printf ("Testing EOF before delimiter\n");
+ free (lineptr);
+ lineptr = xmalloc (10);
+ size = 10;
+ fp = open_test_stream ("foo", 3);
+ ret = wrap_getline (&lineptr, &size, fp);
+ TEST_COMPARE (ret, 3);
+ TEST_COMPARE_BLOB (lineptr, 4, "foo", 4);
+ fclose (fp);
+ free (lineptr);
+ lineptr = xmalloc (10);
+ size = 10;
+ fp = open_test_stream ("bar\0", 4);
+ ret = wrap_getline (&lineptr, &size, fp);
+ TEST_COMPARE (ret, 4);
+ TEST_COMPARE_BLOB (lineptr, 5, "bar\0", 5);
+ fclose (fp);
+ free (lineptr);
+ lineptr = xmalloc (10);
+ size = 10;
+ fp = open_test_stream ("\0baz", 4);
+ ret = wrap_getline (&lineptr, &size, fp);
+ TEST_COMPARE (ret, 4);
+ TEST_COMPARE_BLOB (lineptr, 5, "\0baz", 5);
+ fclose (fp);
+ free (lineptr);
+ lineptr = xmalloc (10);
+ size = 10;
+ fp = open_test_stream ("te\0st", 5);
+ ret = wrap_getline (&lineptr, &size, fp);
+ TEST_COMPARE (ret, 5);
+ TEST_COMPARE_BLOB (lineptr, 6, "te\0st", 6);
+ fclose (fp);
+ /* Test EOF before delimiter but after some bytes read, with
+ reallocation (including case with null bytes). */
+ verbose_printf ("Testing EOF before delimiter with reallocation\n");
+ free (lineptr);
+ lineptr = NULL;
+ size = 0;
+ fp = open_test_stream ("foo", 3);
+ ret = wrap_getline (&lineptr, &size, fp);
+ TEST_COMPARE (ret, 3);
+ TEST_COMPARE_BLOB (lineptr, 4, "foo", 4);
+ fclose (fp);
+ free (lineptr);
+ lineptr = NULL;
+ size = 0;
+ fp = open_test_stream ("bar\0", 4);
+ ret = wrap_getline (&lineptr, &size, fp);
+ TEST_COMPARE (ret, 4);
+ TEST_COMPARE_BLOB (lineptr, 5, "bar\0", 5);
+ fclose (fp);
+ free (lineptr);
+ lineptr = NULL;
+ size = 0;
+ fp = open_test_stream ("\0baz", 4);
+ ret = wrap_getline (&lineptr, &size, fp);
+ TEST_COMPARE (ret, 4);
+ TEST_COMPARE_BLOB (lineptr, 5, "\0baz", 5);
+ fclose (fp);
+ free (lineptr);
+ lineptr = NULL;
+ size = 0;
+ fp = open_test_stream ("te\0st", 5);
+ ret = wrap_getline (&lineptr, &size, fp);
+ TEST_COMPARE (ret, 5);
+ TEST_COMPARE_BLOB (lineptr, 6, "te\0st", 6);
+ fclose (fp);
+ free (lineptr);
+ lineptr = xmalloc (1);
+ size = 1;
+ fp = open_test_stream ("foo", 3);
+ ret = wrap_getline (&lineptr, &size, fp);
+ TEST_COMPARE (ret, 3);
+ TEST_COMPARE_BLOB (lineptr, 4, "foo", 4);
+ fclose (fp);
+ free (lineptr);
+ lineptr = xmalloc (1);
+ size = 1;
+ fp = open_test_stream ("bar\0", 4);
+ ret = wrap_getline (&lineptr, &size, fp);
+ TEST_COMPARE (ret, 4);
+ TEST_COMPARE_BLOB (lineptr, 5, "bar\0", 5);
+ fclose (fp);
+ free (lineptr);
+ lineptr = xmalloc (1);
+ size = 1;
+ fp = open_test_stream ("\0baz", 4);
+ ret = wrap_getline (&lineptr, &size, fp);
+ TEST_COMPARE (ret, 4);
+ TEST_COMPARE_BLOB (lineptr, 5, "\0baz", 5);
+ fclose (fp);
+ free (lineptr);
+ lineptr = xmalloc (1);
+ size = 1;
+ fp = open_test_stream ("te\0st", 5);
+ ret = wrap_getline (&lineptr, &size, fp);
+ TEST_COMPARE (ret, 5);
+ TEST_COMPARE_BLOB (lineptr, 6, "te\0st", 6);
+ fclose (fp);
+ /* Test EOF with no bytes read (nothing is specified about anything
+ written to the buffer), including EOF again when already at end
+ of file. */
+ verbose_printf ("Testing EOF with no bytes read\n");
+ free (lineptr);
+ lineptr = NULL;
+ size = 0;
+ fp = open_test_stream ("", 0);
+ ret = wrap_getline (&lineptr, &size, fp);
+ TEST_COMPARE (ret, -1);
+ TEST_COMPARE (ferror (fp), 0);
+ TEST_COMPARE (!!feof (fp), 1);
+ ret = wrap_getline (&lineptr, &size, fp);
+ TEST_COMPARE (ret, -1);
+ TEST_COMPARE (ferror (fp), 0);
+ TEST_COMPARE (!!feof (fp), 1);
+ fclose (fp);
+ free (lineptr);
+ lineptr = xmalloc (1);
+ size = 1;
+ fp = open_test_stream ("", 0);
+ ret = wrap_getline (&lineptr, &size, fp);
+ TEST_COMPARE (ret, -1);
+ TEST_COMPARE (ferror (fp), 0);
+ TEST_COMPARE (!!feof (fp), 1);
+ ret = wrap_getline (&lineptr, &size, fp);
+ TEST_COMPARE (ret, -1);
+ TEST_COMPARE (ferror (fp), 0);
+ TEST_COMPARE (!!feof (fp), 1);
+ fclose (fp);
+ /* Test error occurring with no bytes read, including calling
+ wrap_getline again while the file is in error state. */
+ verbose_printf ("Testing error with no bytes read\n");
+ free (lineptr);
+ lineptr = NULL;
+ size = 0;
+ fp = open_test_stream ("", 0);
+ the_cookie.in_error = EINVAL;
+ ret = wrap_getline (&lineptr, &size, fp);
+ TEST_COMPARE (ret, -1);
+ TEST_COMPARE (errno, EINVAL);
+ TEST_COMPARE (!!ferror (fp), 1);
+ TEST_COMPARE (feof (fp), 0);
+ /* Make sure error state is sticky. */
+ the_cookie.in_error = 0;
+ ret = wrap_getline (&lineptr, &size, fp);
+ TEST_COMPARE (ret, -1);
+ TEST_COMPARE (!!ferror (fp), 1);
+ TEST_COMPARE (feof (fp), 0);
+ fclose (fp);
+ /* Test error occurring after some bytes read. Specifications are
+ ambiguous here; at least in the fopencookie case used for
+ testing, glibc returns the partial line (but with the error
+ indicator on the stream set). */
+ verbose_printf ("Testing error after some bytes read\n");
+ free (lineptr);
+ lineptr = NULL;
+ size = 0;
+ fp = open_test_stream ("foo", 3);
+ the_cookie.in_error_after = EINVAL;
+ ret = wrap_getline (&lineptr, &size, fp);
+ TEST_COMPARE (ret, 3);
+ TEST_COMPARE_BLOB (lineptr, 4, "foo", 4);
+ TEST_COMPARE (errno, EINVAL);
+ TEST_COMPARE (!!ferror (fp), 1);
+ TEST_COMPARE (feof (fp), 0);
+ /* Make sure error state is sticky. */
+ the_cookie.in_error = 0;
+ ret = wrap_getline (&lineptr, &size, fp);
+ TEST_COMPARE (ret, -1);
+ TEST_COMPARE (!!ferror (fp), 1);
+ TEST_COMPARE (feof (fp), 0);
+ fclose (fp);
+ /* Test EBADF error as a representative example of an fgetc error
+ resulting in an error from wrap_getline. We don't try to cover all
+ error cases for fgetc here. */
+ verbose_printf ("Testing EBADF error\n");
+ free (lineptr);
+ lineptr = NULL;
+ size = 0;
+ fp = xfopen ("/dev/null", "r");
+ xclose (fileno (fp));
+ ret = wrap_getline (&lineptr, &size, fp);
+ TEST_COMPARE (ret, -1);
+ TEST_COMPARE (errno, EBADF);
+ TEST_COMPARE (!!ferror (fp), 1);
+ TEST_COMPARE (feof (fp), 0);
+ fclose (fp);
+ /* Test EAGAIN error as an example of an fgetc error on a valid file
+ descriptor. */
+ verbose_printf ("Testing EAGAIN error\n");
+ free (lineptr);
+ lineptr = NULL;
+ size = 0;
+ int pipefd[2];
+ xpipe (pipefd);
+ ret = fcntl (pipefd[0], F_SETFL, O_NONBLOCK);
+ TEST_VERIFY_EXIT (ret == 0);
+ fp = fdopen (pipefd[0], "r");
+ TEST_VERIFY_EXIT (fp != NULL);
+ ret = wrap_getline (&lineptr, &size, fp);
+ TEST_COMPARE (ret, -1);
+ TEST_COMPARE (errno, EAGAIN);
+ TEST_COMPARE (!!ferror (fp), 1);
+ TEST_COMPARE (feof (fp), 0);
+ /* Make sure error state is sticky (even after more data is
+ available to read). */
+ xwrite (pipefd[1], "x\n", 2);
+ ret = wrap_getline (&lineptr, &size, fp);
+ TEST_COMPARE (ret, -1);
+ TEST_COMPARE (!!ferror (fp), 1);
+ TEST_COMPARE (feof (fp), 0);
+ fclose (fp);
+ free (lineptr);
+ return 0;
+}
+
+#include <support/test-driver.c>
diff --git a/stdio-common/tst-renameat2.c b/stdio-common/tst-renameat2.c
index b65afed..7f4345f 100644
--- a/stdio-common/tst-renameat2.c
+++ b/stdio-common/tst-renameat2.c
@@ -82,7 +82,7 @@ static void
check_size (const char *path, off64_t expected_size)
{
struct stat64 st;
- xstat (path, &st);
+ xstat64 (path, &st);
if (st.st_size != expected_size)
FAIL_EXIT1 ("file \"%s\": expected size %lld, actual size %lld",
path, (unsigned long long int) expected_size,
diff --git a/sysdeps/aarch64/memset-reg.h b/stdio-common/tst-ungetc-leak.c
index 6c7f60b..6c5152b 100644
--- a/sysdeps/aarch64/memset-reg.h
+++ b/stdio-common/tst-ungetc-leak.c
@@ -1,5 +1,5 @@
-/* Register aliases for memset to be used across implementations.
- Copyright (C) 2017-2024 Free Software Foundation, Inc.
+/* Test for memory leak with ungetc when stream is unused.
+ Copyright The GNU Toolchain Authors.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -16,15 +16,17 @@
License along with the GNU C Library; if not, see
<https://www.gnu.org/licenses/>. */
-#define dstin x0
-#define val x1
-#define valw w1
-#define count x2
-#define dst x3
-#define dstend x4
-#define tmp1 x5
-#define tmp1w w5
-#define tmp2 x6
-#define tmp2w w6
-#define zva_len x7
-#define zva_lenw w7
+#include <stdio.h>
+#include <mcheck.h>
+#include <support/check.h>
+#include <support/support.h>
+
+static int
+do_test (void)
+{
+ mtrace ();
+ TEST_COMPARE (ungetc('y', stdin), 'y');
+ return 0;
+}
+
+#include <support/test-driver.c>
diff --git a/stdio-common/tst-ungetc.c b/stdio-common/tst-ungetc.c
index 1344b2b..388b202 100644
--- a/stdio-common/tst-ungetc.c
+++ b/stdio-common/tst-ungetc.c
@@ -1,70 +1,74 @@
-/* Test for ungetc bugs. */
+/* Test for ungetc bugs.
+ Copyright (C) 1996-2024 Free Software Foundation, Inc.
+ Copyright The GNU Toolchain Authors.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
#include <stdio.h>
#include <stdlib.h>
-#include <unistd.h>
-
-#undef assert
-#define assert(x) \
- if (!(x)) \
- { \
- fputs ("test failed: " #x "\n", stderr); \
- retval = 1; \
- goto the_end; \
- }
+#include <support/check.h>
+#include <support/support.h>
+#include <support/temp_file.h>
+#include <support/xstdio.h>
+#include <support/xunistd.h>
-int
-main (int argc, char *argv[])
+static int
+do_test (void)
{
- char name[] = "/tmp/tst-ungetc.XXXXXX";
+ char *name = NULL;
FILE *fp = NULL;
- int retval = 0;
int c;
char buffer[64];
- int fd = mkstemp (name);
+ int fd = create_temp_file ("tst-ungetc.", &name);
if (fd == -1)
- {
- printf ("mkstemp failed: %m\n");
- return 1;
- }
- close (fd);
- fp = fopen (name, "w");
- assert (fp != NULL)
- fputs ("bla", fp);
- fclose (fp);
- fp = NULL;
+ FAIL_EXIT1 ("cannot create temporary file: %m");
+ xclose (fd);
- fp = fopen (name, "r");
- assert (fp != NULL);
- assert (ungetc ('z', fp) == 'z');
- assert (getc (fp) == 'z');
- assert (getc (fp) == 'b');
- assert (getc (fp) == 'l');
- assert (ungetc ('m', fp) == 'm');
- assert (getc (fp) == 'm');
- assert ((c = getc (fp)) == 'a');
- assert (getc (fp) == EOF);
- assert (ungetc (c, fp) == c);
- assert (feof (fp) == 0);
- assert (getc (fp) == c);
- assert (getc (fp) == EOF);
- fclose (fp);
- fp = NULL;
+ fp = xfopen (name, "w");
+ fputs ("bla", fp);
+ xfclose (fp);
- fp = fopen (name, "r");
- assert (fp != NULL);
- assert (getc (fp) == 'b');
- assert (getc (fp) == 'l');
- assert (ungetc ('b', fp) == 'b');
- assert (fread (buffer, 1, 64, fp) == 2);
- assert (buffer[0] == 'b');
- assert (buffer[1] == 'a');
+ fp = xfopen (name, "r");
+ TEST_VERIFY_EXIT (ungetc ('z', fp) == 'z');
+ TEST_VERIFY_EXIT (getc (fp) == 'z');
+ TEST_VERIFY_EXIT (getc (fp) == 'b');
+ TEST_VERIFY_EXIT (getc (fp) == 'l');
+ TEST_VERIFY_EXIT (ungetc ('m', fp) == 'm');
+ TEST_VERIFY_EXIT (ungetc ('n', fp) == 'n');
+ TEST_VERIFY_EXIT (getc (fp) == 'n');
+ TEST_VERIFY_EXIT (getc (fp) == 'm');
+ TEST_VERIFY_EXIT ((c = getc (fp)) == 'a');
+ TEST_VERIFY_EXIT (getc (fp) == EOF);
+ TEST_VERIFY_EXIT (ungetc (c, fp) == c);
+ TEST_VERIFY_EXIT (feof (fp) == 0);
+ TEST_VERIFY_EXIT (getc (fp) == c);
+ TEST_VERIFY_EXIT (getc (fp) == EOF);
+ xfclose (fp);
-the_end:
- if (fp != NULL)
- fclose (fp);
- unlink (name);
+ fp = xfopen (name, "r");
+ TEST_VERIFY_EXIT (getc (fp) == 'b');
+ TEST_VERIFY_EXIT (getc (fp) == 'l');
+ TEST_VERIFY_EXIT (ungetc ('b', fp) == 'b');
+ TEST_VERIFY_EXIT (fread (buffer, 1, 64, fp) == 2);
+ TEST_VERIFY_EXIT (buffer[0] == 'b');
+ TEST_VERIFY_EXIT (buffer[1] == 'a');
+ xfclose (fp);
- return retval;
+ return 0;
}
+
+#include <support/test-driver.c>
diff --git a/stdlib/abort.c b/stdlib/abort.c
index e2b84ba..f74ff3b 100644
--- a/stdlib/abort.c
+++ b/stdlib/abort.c
@@ -15,13 +15,11 @@
License along with the GNU C Library; if not, see
<https://www.gnu.org/licenses/>. */
-#include <libc-lock.h>
#include <signal.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
#include <internal-signals.h>
+#include <libc-lock.h>
+#include <pthreadP.h>
+#include <unistd.h>
/* Try to get a machine dependent instruction which will make the
program crash. This is used in case everything else fails. */
@@ -35,89 +33,63 @@
struct abort_msg_s *__abort_msg;
libc_hidden_def (__abort_msg)
-/* We must avoid to run in circles. Therefore we remember how far we
- already got. */
-static int stage;
+/* The lock is used to prevent multiple thread to change the SIGABRT
+ to SIG_IGN while abort tries to change to SIG_DFL, and to avoid
+ a new process to see a wrong disposition if there is a SIGABRT
+ handler installed. */
+__libc_rwlock_define_initialized (static, lock);
-/* We should be prepared for multiple threads trying to run abort. */
-__libc_lock_define_initialized_recursive (static, lock);
+void
+__abort_fork_reset_child (void)
+{
+ __libc_rwlock_init (lock);
+}
+void
+__abort_lock_rdlock (internal_sigset_t *set)
+{
+ internal_signal_block_all (set);
+ __libc_rwlock_rdlock (lock);
+}
+
+void
+__abort_lock_wrlock (internal_sigset_t *set)
+{
+ internal_signal_block_all (set);
+ __libc_rwlock_wrlock (lock);
+}
-/* Cause an abnormal program termination with core-dump. */
void
+__abort_lock_unlock (const internal_sigset_t *set)
+{
+ __libc_rwlock_unlock (lock);
+ internal_signal_restore_set (set);
+}
+
+/* Cause an abnormal program termination with core-dump. */
+_Noreturn void
abort (void)
{
- struct sigaction act;
-
- /* First acquire the lock. */
- __libc_lock_lock_recursive (lock);
-
- /* Now it's for sure we are alone. But recursive calls are possible. */
-
- /* Unblock SIGABRT. */
- if (stage == 0)
- {
- ++stage;
- internal_sigset_t sigs;
- internal_sigemptyset (&sigs);
- internal_sigaddset (&sigs, SIGABRT);
- internal_sigprocmask (SIG_UNBLOCK, &sigs, NULL);
- }
-
- /* Send signal which possibly calls a user handler. */
- if (stage == 1)
- {
- /* This stage is special: we must allow repeated calls of
- `abort' when a user defined handler for SIGABRT is installed.
- This is risky since the `raise' implementation might also
- fail but I don't see another possibility. */
- int save_stage = stage;
-
- stage = 0;
- __libc_lock_unlock_recursive (lock);
-
- raise (SIGABRT);
-
- __libc_lock_lock_recursive (lock);
- stage = save_stage + 1;
- }
-
- /* There was a handler installed. Now remove it. */
- if (stage == 2)
- {
- ++stage;
- memset (&act, '\0', sizeof (struct sigaction));
- act.sa_handler = SIG_DFL;
- __sigfillset (&act.sa_mask);
- act.sa_flags = 0;
- __sigaction (SIGABRT, &act, NULL);
- }
-
- /* Try again. */
- if (stage == 3)
- {
- ++stage;
- raise (SIGABRT);
- }
-
- /* Now try to abort using the system specific command. */
- if (stage == 4)
- {
- ++stage;
- ABORT_INSTRUCTION;
- }
-
- /* If we can't signal ourselves and the abort instruction failed, exit. */
- if (stage == 5)
- {
- ++stage;
- _exit (127);
- }
-
- /* If even this fails try to use the provided instruction to crash
- or otherwise make sure we never return. */
- while (1)
- /* Try for ever and ever. */
- ABORT_INSTRUCTION;
+ raise (SIGABRT);
+
+ /* There is a SIGABRT handle installed and it returned, or SIGABRT was
+ blocked or ignored. In this case use a AS-safe lock to prevent sigaction
+ to change the signal disposition again, set the handle to default
+ disposition, and re-raise the signal. Even if POSIX state this step is
+ optional, this a QoI by forcing the process termination through the
+ signal handler. */
+ __abort_lock_wrlock (NULL);
+
+ struct sigaction act = {.sa_handler = SIG_DFL, .sa_flags = 0 };
+ __sigfillset (&act.sa_mask);
+ __libc_sigaction (SIGABRT, &act, NULL);
+ __pthread_raise_internal (SIGABRT);
+ internal_signal_unblock_signal (SIGABRT);
+
+ /* This code should be unreachable, try the arch-specific code and the
+ syscall fallback. */
+ ABORT_INSTRUCTION;
+
+ _exit (127);
}
libc_hidden_def (abort)
diff --git a/stdlib/gen-tst-strtod-round.c b/stdlib/gen-tst-strtod-round.c
index e48bf4d..7ce735f 100644
--- a/stdlib/gen-tst-strtod-round.c
+++ b/stdlib/gen-tst-strtod-round.c
@@ -46,6 +46,7 @@ static int
string_to_fp (mpfr_t f, const char *s, mpfr_rnd_t rnd)
{
mpfr_clear_overflow ();
+ mpfr_clear_underflow ();
#ifdef WORKAROUND
mpfr_t f2;
mpfr_init2 (f2, 100000);
@@ -53,12 +54,16 @@ string_to_fp (mpfr_t f, const char *s, mpfr_rnd_t rnd)
int r = mpfr_set (f, f2, rnd);
r |= mpfr_subnormalize (f, r, rnd);
mpfr_clear (f2);
- return r0 | r;
+ r |= r0;
#else
int r = mpfr_strtofr (f, s, NULL, 0, rnd);
r |= mpfr_subnormalize (f, r, rnd);
- return r;
#endif
+ if (r == 0)
+ /* The MPFR underflow flag is set for exact subnormal results,
+ which is not wanted here. */
+ mpfr_clear_underflow ();
+ return r;
}
void
@@ -70,6 +75,21 @@ print_fp (FILE *fout, mpfr_t f, const char *suffix)
mpfr_fprintf (fout, "\t%Ra%s", f, suffix);
}
+static const char *
+suffix_to_print (bool overflow, bool underflow, bool underflow_before_rounding,
+ bool with_comma)
+{
+ if (overflow)
+ return with_comma ? ", true, false,\n" : ", true, false";
+ if (underflow)
+ return with_comma ? ", false, true,\n" : ", false, true";
+ if (underflow_before_rounding)
+ return (with_comma
+ ? ", false, !TININESS_AFTER_ROUNDING,\n"
+ : ", false, !TININESS_AFTER_ROUNDING");
+ return with_comma ? ", false, false,\n" : ", false, false";
+}
+
static void
round_str (FILE *fout, const char *s, int prec, int emin, int emax,
bool ibm_ld)
@@ -80,8 +100,11 @@ round_str (FILE *fout, const char *s, int prec, int emin, int emax,
mpfr_set_emin (emin);
mpfr_set_emax (emax);
mpfr_init (f);
+ string_to_fp (f, s, MPFR_RNDZ);
+ bool underflow_before_rounding = mpfr_underflow_p () != 0;
int r = string_to_fp (f, s, MPFR_RNDD);
bool overflow = mpfr_overflow_p () != 0;
+ bool underflow = mpfr_underflow_p () != 0;
if (ibm_ld)
{
assert (prec == 106 && emin == -1073 && emax == 1024);
@@ -97,19 +120,27 @@ round_str (FILE *fout, const char *s, int prec, int emin, int emax,
}
}
mpfr_fprintf (fout, "\t%s,\n", r ? "false" : "true");
- print_fp (fout, f, overflow ? ", true,\n" : ", false,\n");
+ print_fp (fout, f,
+ suffix_to_print (overflow, underflow, underflow_before_rounding,
+ true));
string_to_fp (f, s, MPFR_RNDN);
overflow = (mpfr_overflow_p () != 0
|| (ibm_ld && mpfr_cmpabs (f, max_value) > 0));
- print_fp (fout, f, overflow ? ", true,\n" : ", false,\n");
+ print_fp (fout, f,
+ suffix_to_print (overflow, underflow, underflow_before_rounding,
+ true));
string_to_fp (f, s, MPFR_RNDZ);
overflow = (mpfr_overflow_p () != 0
|| (ibm_ld && mpfr_cmpabs (f, max_value) > 0));
- print_fp (fout, f, overflow ? ", true,\n" : ", false,\n");
+ print_fp (fout, f,
+ suffix_to_print (overflow, underflow, underflow_before_rounding,
+ true));
string_to_fp (f, s, MPFR_RNDU);
overflow = (mpfr_overflow_p () != 0
|| (ibm_ld && mpfr_cmpabs (f, max_value) > 0));
- print_fp (fout, f, overflow ? ", true" : ", false");
+ print_fp (fout, f,
+ suffix_to_print (overflow, underflow, underflow_before_rounding,
+ false));
mpfr_clear (f);
if (ibm_ld)
mpfr_clear (max_value);
diff --git a/stdlib/strtod_l.c b/stdlib/strtod_l.c
index be515ce..beb97b3 100644
--- a/stdlib/strtod_l.c
+++ b/stdlib/strtod_l.c
@@ -222,6 +222,7 @@ round_and_return (mp_limb_t *retval, intmax_t exponent, int negative,
mp_size_t shift = MIN_EXP - 1 - exponent;
bool is_tiny = true;
+ bool old_half_bit = (round_limb & (((mp_limb_t) 1) << round_bit)) != 0;
more_bits |= (round_limb & ((((mp_limb_t) 1) << round_bit) - 1)) != 0;
if (shift == MANT_DIG)
@@ -292,6 +293,7 @@ round_and_return (mp_limb_t *retval, intmax_t exponent, int negative,
round_bit = shift - 1;
(void) __mpn_rshift (retval, retval, RETURN_LIMB_SIZE, shift);
}
+ more_bits |= old_half_bit;
/* This is a hook for the m68k long double format, where the
exponent bias is the same for normalized and denormalized
numbers. */
diff --git a/stdlib/strtod_nan_main.c b/stdlib/strtod_nan_main.c
index 4cb286d..39fb7e9 100644
--- a/stdlib/strtod_nan_main.c
+++ b/stdlib/strtod_nan_main.c
@@ -16,6 +16,7 @@
License along with the GNU C Library; if not, see
<https://www.gnu.org/licenses/>. */
+#include <errno.h>
#include <ieee754.h>
#include <locale.h>
#include <math.h>
@@ -50,7 +51,9 @@ STRTOD_NAN (const STRING_TYPE *str, STRING_TYPE **endptr, STRING_TYPE endc)
STRING_TYPE *endp;
unsigned long long int mant;
+ int save_errno = errno;
mant = STRTOULL (str, &endp, 0);
+ __set_errno (save_errno);
if (endp == cp)
SET_NAN_PAYLOAD (retval, mant);
diff --git a/stdlib/tst-strtod-round-data b/stdlib/tst-strtod-round-data
index 84ab705..9489fbc 100644
--- a/stdlib/tst-strtod-round-data
+++ b/stdlib/tst-strtod-round-data
@@ -265,3 +265,15 @@
1.000000000000000000000000000000000385185988877447170611195588516985463707620329643077639047987759113311767578125
1.0000000000000000000000000000000001925929944387235853055977942584927318538101648215388195239938795566558837890625
1.00000000000000000000000000000000009629649721936179265279889712924636592690508241076940976199693977832794189453125
+0x30000002222225p-1077
+0x0.7fffffffffffeap-1022
+0x0.7fffffffffffe9p-1022
+0x0.7ffffd4p-126
+0x0.7ffffffffffffffd4p-16382
+0x0.7ffffffffffffffd4p-16383
+0x0.7ffffffffffffffffffffffffffeap-16382
+0x0.7000004p-126
+0x0.70000000000002p-1022
+0x0.70000000000000004p-16382
+0x0.70000000000000004p-16383
+0x0.70000000000000000000000000002p-16382
diff --git a/stdlib/tst-strtod-round-data.h b/stdlib/tst-strtod-round-data.h
index 8899d15..ed50eb2 100644
--- a/stdlib/tst-strtod-round-data.h
+++ b/stdlib/tst-strtod-round-data.h
@@ -2,1852 +2,1852 @@
static const struct test tests[] = {
TEST ("3.518437208883201171875E+013",
false,
- 0x2p+44, false,
- 0x2p+44, false,
- 0x2p+44, false,
- 0x2.000004p+44, false,
- false,
- 0x2.0000000000002p+44, false,
- 0x2.0000000000004p+44, false,
- 0x2.0000000000002p+44, false,
- 0x2.0000000000004p+44, false,
- true,
- 0x2.0000000000003p+44, false,
- 0x2.0000000000003p+44, false,
- 0x2.0000000000003p+44, false,
- 0x2.0000000000003p+44, false,
- true,
- 0x2.0000000000003p+44, false,
- 0x2.0000000000003p+44, false,
- 0x2.0000000000003p+44, false,
- 0x2.0000000000003p+44, false,
- true,
- 0x2.0000000000003p+44, false,
- 0x2.0000000000003p+44, false,
- 0x2.0000000000003p+44, false,
- 0x2.0000000000003p+44, false,
- true,
- 0x2.0000000000003p+44, false,
- 0x2.0000000000003p+44, false,
- 0x2.0000000000003p+44, false,
- 0x2.0000000000003p+44, false),
+ 0x2p+44, false, false,
+ 0x2p+44, false, false,
+ 0x2p+44, false, false,
+ 0x2.000004p+44, false, false,
+ false,
+ 0x2.0000000000002p+44, false, false,
+ 0x2.0000000000004p+44, false, false,
+ 0x2.0000000000002p+44, false, false,
+ 0x2.0000000000004p+44, false, false,
+ true,
+ 0x2.0000000000003p+44, false, false,
+ 0x2.0000000000003p+44, false, false,
+ 0x2.0000000000003p+44, false, false,
+ 0x2.0000000000003p+44, false, false,
+ true,
+ 0x2.0000000000003p+44, false, false,
+ 0x2.0000000000003p+44, false, false,
+ 0x2.0000000000003p+44, false, false,
+ 0x2.0000000000003p+44, false, false,
+ true,
+ 0x2.0000000000003p+44, false, false,
+ 0x2.0000000000003p+44, false, false,
+ 0x2.0000000000003p+44, false, false,
+ 0x2.0000000000003p+44, false, false,
+ true,
+ 0x2.0000000000003p+44, false, false,
+ 0x2.0000000000003p+44, false, false,
+ 0x2.0000000000003p+44, false, false,
+ 0x2.0000000000003p+44, false, false),
TEST ("1.00000005960464477550",
false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1.000001p+0, false,
- 0x1.000001p+0, false,
- 0x1.000001p+0, false,
- 0x1.0000010000001p+0, false,
- false,
- 0x1.0000010000000002p+0, false,
- 0x1.0000010000000002p+0, false,
- 0x1.0000010000000002p+0, false,
- 0x1.0000010000000004p+0, false,
- false,
- 0x1.0000010000000002p+0, false,
- 0x1.0000010000000002p+0, false,
- 0x1.0000010000000002p+0, false,
- 0x1.0000010000000004p+0, false,
- false,
- 0x1.0000010000000002048242f2ffp+0, false,
- 0x1.0000010000000002048242f2ff8p+0, false,
- 0x1.0000010000000002048242f2ffp+0, false,
- 0x1.0000010000000002048242f2ff8p+0, false,
- false,
- 0x1.0000010000000002048242f2ff66p+0, false,
- 0x1.0000010000000002048242f2ff67p+0, false,
- 0x1.0000010000000002048242f2ff66p+0, false,
- 0x1.0000010000000002048242f2ff67p+0, false),
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1.000001p+0, false, false,
+ 0x1.000001p+0, false, false,
+ 0x1.000001p+0, false, false,
+ 0x1.0000010000001p+0, false, false,
+ false,
+ 0x1.0000010000000002p+0, false, false,
+ 0x1.0000010000000002p+0, false, false,
+ 0x1.0000010000000002p+0, false, false,
+ 0x1.0000010000000004p+0, false, false,
+ false,
+ 0x1.0000010000000002p+0, false, false,
+ 0x1.0000010000000002p+0, false, false,
+ 0x1.0000010000000002p+0, false, false,
+ 0x1.0000010000000004p+0, false, false,
+ false,
+ 0x1.0000010000000002048242f2ffp+0, false, false,
+ 0x1.0000010000000002048242f2ff8p+0, false, false,
+ 0x1.0000010000000002048242f2ffp+0, false, false,
+ 0x1.0000010000000002048242f2ff8p+0, false, false,
+ false,
+ 0x1.0000010000000002048242f2ff66p+0, false, false,
+ 0x1.0000010000000002048242f2ff67p+0, false, false,
+ 0x1.0000010000000002048242f2ff66p+0, false, false,
+ 0x1.0000010000000002048242f2ff67p+0, false, false),
TEST ("1.0000000596046447755",
false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1.000001p+0, false,
- 0x1.000001p+0, false,
- 0x1.000001p+0, false,
- 0x1.0000010000001p+0, false,
- false,
- 0x1.0000010000000002p+0, false,
- 0x1.0000010000000002p+0, false,
- 0x1.0000010000000002p+0, false,
- 0x1.0000010000000004p+0, false,
- false,
- 0x1.0000010000000002p+0, false,
- 0x1.0000010000000002p+0, false,
- 0x1.0000010000000002p+0, false,
- 0x1.0000010000000004p+0, false,
- false,
- 0x1.0000010000000002048242f2ffp+0, false,
- 0x1.0000010000000002048242f2ff8p+0, false,
- 0x1.0000010000000002048242f2ffp+0, false,
- 0x1.0000010000000002048242f2ff8p+0, false,
- false,
- 0x1.0000010000000002048242f2ff66p+0, false,
- 0x1.0000010000000002048242f2ff67p+0, false,
- 0x1.0000010000000002048242f2ff66p+0, false,
- 0x1.0000010000000002048242f2ff67p+0, false),
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1.000001p+0, false, false,
+ 0x1.000001p+0, false, false,
+ 0x1.000001p+0, false, false,
+ 0x1.0000010000001p+0, false, false,
+ false,
+ 0x1.0000010000000002p+0, false, false,
+ 0x1.0000010000000002p+0, false, false,
+ 0x1.0000010000000002p+0, false, false,
+ 0x1.0000010000000004p+0, false, false,
+ false,
+ 0x1.0000010000000002p+0, false, false,
+ 0x1.0000010000000002p+0, false, false,
+ 0x1.0000010000000002p+0, false, false,
+ 0x1.0000010000000004p+0, false, false,
+ false,
+ 0x1.0000010000000002048242f2ffp+0, false, false,
+ 0x1.0000010000000002048242f2ff8p+0, false, false,
+ 0x1.0000010000000002048242f2ffp+0, false, false,
+ 0x1.0000010000000002048242f2ff8p+0, false, false,
+ false,
+ 0x1.0000010000000002048242f2ff66p+0, false, false,
+ 0x1.0000010000000002048242f2ff67p+0, false, false,
+ 0x1.0000010000000002048242f2ff66p+0, false, false,
+ 0x1.0000010000000002048242f2ff67p+0, false, false),
TEST ("1.000000059604644776",
false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1.000001p+0, false,
- 0x1.000001p+0, false,
- 0x1.000001p+0, false,
- 0x1.0000010000001p+0, false,
- false,
- 0x1.000001000000000ap+0, false,
- 0x1.000001000000000cp+0, false,
- 0x1.000001000000000ap+0, false,
- 0x1.000001000000000cp+0, false,
- false,
- 0x1.000001000000000ap+0, false,
- 0x1.000001000000000cp+0, false,
- 0x1.000001000000000ap+0, false,
- 0x1.000001000000000cp+0, false,
- false,
- 0x1.000001000000000b3db12bdc21p+0, false,
- 0x1.000001000000000b3db12bdc21p+0, false,
- 0x1.000001000000000b3db12bdc21p+0, false,
- 0x1.000001000000000b3db12bdc218p+0, false,
- false,
- 0x1.000001000000000b3db12bdc213cp+0, false,
- 0x1.000001000000000b3db12bdc213dp+0, false,
- 0x1.000001000000000b3db12bdc213cp+0, false,
- 0x1.000001000000000b3db12bdc213dp+0, false),
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1.000001p+0, false, false,
+ 0x1.000001p+0, false, false,
+ 0x1.000001p+0, false, false,
+ 0x1.0000010000001p+0, false, false,
+ false,
+ 0x1.000001000000000ap+0, false, false,
+ 0x1.000001000000000cp+0, false, false,
+ 0x1.000001000000000ap+0, false, false,
+ 0x1.000001000000000cp+0, false, false,
+ false,
+ 0x1.000001000000000ap+0, false, false,
+ 0x1.000001000000000cp+0, false, false,
+ 0x1.000001000000000ap+0, false, false,
+ 0x1.000001000000000cp+0, false, false,
+ false,
+ 0x1.000001000000000b3db12bdc21p+0, false, false,
+ 0x1.000001000000000b3db12bdc21p+0, false, false,
+ 0x1.000001000000000b3db12bdc21p+0, false, false,
+ 0x1.000001000000000b3db12bdc218p+0, false, false,
+ false,
+ 0x1.000001000000000b3db12bdc213cp+0, false, false,
+ 0x1.000001000000000b3db12bdc213dp+0, false, false,
+ 0x1.000001000000000b3db12bdc213cp+0, false, false,
+ 0x1.000001000000000b3db12bdc213dp+0, false, false),
TEST ("1.000000059604644775",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1.000000fffffffp+0, false,
- 0x1.000001p+0, false,
- 0x1.000000fffffffp+0, false,
- 0x1.000001p+0, false,
- false,
- 0x1.000000fffffffff8p+0, false,
- 0x1.000000fffffffff8p+0, false,
- 0x1.000000fffffffff8p+0, false,
- 0x1.000000fffffffffap+0, false,
- false,
- 0x1.000000fffffffff8p+0, false,
- 0x1.000000fffffffff8p+0, false,
- 0x1.000000fffffffff8p+0, false,
- 0x1.000000fffffffffap+0, false,
- false,
- 0x1.000000fffffffff8cb535a09dd8p+0, false,
- 0x1.000000fffffffff8cb535a09dd8p+0, false,
- 0x1.000000fffffffff8cb535a09dd8p+0, false,
- 0x1.000000fffffffff8cb535a09dep+0, false,
- false,
- 0x1.000000fffffffff8cb535a09dd9p+0, false,
- 0x1.000000fffffffff8cb535a09dd91p+0, false,
- 0x1.000000fffffffff8cb535a09dd9p+0, false,
- 0x1.000000fffffffff8cb535a09dd91p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1.000000fffffffp+0, false, false,
+ 0x1.000001p+0, false, false,
+ 0x1.000000fffffffp+0, false, false,
+ 0x1.000001p+0, false, false,
+ false,
+ 0x1.000000fffffffff8p+0, false, false,
+ 0x1.000000fffffffff8p+0, false, false,
+ 0x1.000000fffffffff8p+0, false, false,
+ 0x1.000000fffffffffap+0, false, false,
+ false,
+ 0x1.000000fffffffff8p+0, false, false,
+ 0x1.000000fffffffff8p+0, false, false,
+ 0x1.000000fffffffff8p+0, false, false,
+ 0x1.000000fffffffffap+0, false, false,
+ false,
+ 0x1.000000fffffffff8cb535a09dd8p+0, false, false,
+ 0x1.000000fffffffff8cb535a09dd8p+0, false, false,
+ 0x1.000000fffffffff8cb535a09dd8p+0, false, false,
+ 0x1.000000fffffffff8cb535a09dep+0, false, false,
+ false,
+ 0x1.000000fffffffff8cb535a09dd9p+0, false, false,
+ 0x1.000000fffffffff8cb535a09dd91p+0, false, false,
+ 0x1.000000fffffffff8cb535a09dd9p+0, false, false,
+ 0x1.000000fffffffff8cb535a09dd91p+0, false, false),
TEST ("1.00000005960464478",
false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1.000001p+0, false,
- 0x1.000001p+0, false,
- 0x1.000001p+0, false,
- 0x1.0000010000001p+0, false,
- false,
- 0x1.0000010000000054p+0, false,
- 0x1.0000010000000056p+0, false,
- 0x1.0000010000000054p+0, false,
- 0x1.0000010000000056p+0, false,
- false,
- 0x1.0000010000000054p+0, false,
- 0x1.0000010000000056p+0, false,
- 0x1.0000010000000054p+0, false,
- 0x1.0000010000000056p+0, false,
- false,
- 0x1.0000010000000055072873252f8p+0, false,
- 0x1.0000010000000055072873253p+0, false,
- 0x1.0000010000000055072873252f8p+0, false,
- 0x1.0000010000000055072873253p+0, false,
- false,
- 0x1.0000010000000055072873252febp+0, false,
- 0x1.0000010000000055072873252febp+0, false,
- 0x1.0000010000000055072873252febp+0, false,
- 0x1.0000010000000055072873252fecp+0, false),
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1.000001p+0, false, false,
+ 0x1.000001p+0, false, false,
+ 0x1.000001p+0, false, false,
+ 0x1.0000010000001p+0, false, false,
+ false,
+ 0x1.0000010000000054p+0, false, false,
+ 0x1.0000010000000056p+0, false, false,
+ 0x1.0000010000000054p+0, false, false,
+ 0x1.0000010000000056p+0, false, false,
+ false,
+ 0x1.0000010000000054p+0, false, false,
+ 0x1.0000010000000056p+0, false, false,
+ 0x1.0000010000000054p+0, false, false,
+ 0x1.0000010000000056p+0, false, false,
+ false,
+ 0x1.0000010000000055072873252f8p+0, false, false,
+ 0x1.0000010000000055072873253p+0, false, false,
+ 0x1.0000010000000055072873252f8p+0, false, false,
+ 0x1.0000010000000055072873253p+0, false, false,
+ false,
+ 0x1.0000010000000055072873252febp+0, false, false,
+ 0x1.0000010000000055072873252febp+0, false, false,
+ 0x1.0000010000000055072873252febp+0, false, false,
+ 0x1.0000010000000055072873252fecp+0, false, false),
TEST ("1.0000000596046448",
false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1.000001p+0, false,
- 0x1.000001p+0, false,
- 0x1.000001p+0, false,
- 0x1.0000010000001p+0, false,
- false,
- 0x1.00000100000001c4p+0, false,
- 0x1.00000100000001c6p+0, false,
- 0x1.00000100000001c4p+0, false,
- 0x1.00000100000001c6p+0, false,
- false,
- 0x1.00000100000001c4p+0, false,
- 0x1.00000100000001c6p+0, false,
- 0x1.00000100000001c4p+0, false,
- 0x1.00000100000001c6p+0, false,
- false,
- 0x1.00000100000001c5f67cd79279p+0, false,
- 0x1.00000100000001c5f67cd792798p+0, false,
- 0x1.00000100000001c5f67cd79279p+0, false,
- 0x1.00000100000001c5f67cd792798p+0, false,
- false,
- 0x1.00000100000001c5f67cd7927953p+0, false,
- 0x1.00000100000001c5f67cd7927954p+0, false,
- 0x1.00000100000001c5f67cd7927953p+0, false,
- 0x1.00000100000001c5f67cd7927954p+0, false),
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1.000001p+0, false, false,
+ 0x1.000001p+0, false, false,
+ 0x1.000001p+0, false, false,
+ 0x1.0000010000001p+0, false, false,
+ false,
+ 0x1.00000100000001c4p+0, false, false,
+ 0x1.00000100000001c6p+0, false, false,
+ 0x1.00000100000001c4p+0, false, false,
+ 0x1.00000100000001c6p+0, false, false,
+ false,
+ 0x1.00000100000001c4p+0, false, false,
+ 0x1.00000100000001c6p+0, false, false,
+ 0x1.00000100000001c4p+0, false, false,
+ 0x1.00000100000001c6p+0, false, false,
+ false,
+ 0x1.00000100000001c5f67cd79279p+0, false, false,
+ 0x1.00000100000001c5f67cd792798p+0, false, false,
+ 0x1.00000100000001c5f67cd79279p+0, false, false,
+ 0x1.00000100000001c5f67cd792798p+0, false, false,
+ false,
+ 0x1.00000100000001c5f67cd7927953p+0, false, false,
+ 0x1.00000100000001c5f67cd7927954p+0, false, false,
+ 0x1.00000100000001c5f67cd7927953p+0, false, false,
+ 0x1.00000100000001c5f67cd7927954p+0, false, false),
TEST ("1.000000059604645",
false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1.0000010000001p+0, false,
- 0x1.0000010000001p+0, false,
- 0x1.0000010000001p+0, false,
- 0x1.0000010000002p+0, false,
- false,
- 0x1.000001000000102ep+0, false,
- 0x1.000001000000103p+0, false,
- 0x1.000001000000102ep+0, false,
- 0x1.000001000000103p+0, false,
- false,
- 0x1.000001000000102ep+0, false,
- 0x1.000001000000103p+0, false,
- 0x1.000001000000102ep+0, false,
- 0x1.000001000000103p+0, false,
- false,
- 0x1.000001000000102f4fc8c3d757p+0, false,
- 0x1.000001000000102f4fc8c3d7578p+0, false,
- 0x1.000001000000102f4fc8c3d757p+0, false,
- 0x1.000001000000102f4fc8c3d7578p+0, false,
- false,
- 0x1.000001000000102f4fc8c3d75769p+0, false,
- 0x1.000001000000102f4fc8c3d75769p+0, false,
- 0x1.000001000000102f4fc8c3d75769p+0, false,
- 0x1.000001000000102f4fc8c3d7576ap+0, false),
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1.0000010000001p+0, false, false,
+ 0x1.0000010000001p+0, false, false,
+ 0x1.0000010000001p+0, false, false,
+ 0x1.0000010000002p+0, false, false,
+ false,
+ 0x1.000001000000102ep+0, false, false,
+ 0x1.000001000000103p+0, false, false,
+ 0x1.000001000000102ep+0, false, false,
+ 0x1.000001000000103p+0, false, false,
+ false,
+ 0x1.000001000000102ep+0, false, false,
+ 0x1.000001000000103p+0, false, false,
+ 0x1.000001000000102ep+0, false, false,
+ 0x1.000001000000103p+0, false, false,
+ false,
+ 0x1.000001000000102f4fc8c3d757p+0, false, false,
+ 0x1.000001000000102f4fc8c3d7578p+0, false, false,
+ 0x1.000001000000102f4fc8c3d757p+0, false, false,
+ 0x1.000001000000102f4fc8c3d7578p+0, false, false,
+ false,
+ 0x1.000001000000102f4fc8c3d75769p+0, false, false,
+ 0x1.000001000000102f4fc8c3d75769p+0, false, false,
+ 0x1.000001000000102f4fc8c3d75769p+0, false, false,
+ 0x1.000001000000102f4fc8c3d7576ap+0, false, false),
TEST ("1.00000005960464",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1.000000fffffeap+0, false,
- 0x1.000000fffffeap+0, false,
- 0x1.000000fffffeap+0, false,
- 0x1.000000fffffebp+0, false,
- false,
- 0x1.000000fffffea7e4p+0, false,
- 0x1.000000fffffea7e6p+0, false,
- 0x1.000000fffffea7e4p+0, false,
- 0x1.000000fffffea7e6p+0, false,
- false,
- 0x1.000000fffffea7e4p+0, false,
- 0x1.000000fffffea7e6p+0, false,
- 0x1.000000fffffea7e4p+0, false,
- 0x1.000000fffffea7e6p+0, false,
- false,
- 0x1.000000fffffea7e5975eb11da7p+0, false,
- 0x1.000000fffffea7e5975eb11da78p+0, false,
- 0x1.000000fffffea7e5975eb11da7p+0, false,
- 0x1.000000fffffea7e5975eb11da78p+0, false,
- false,
- 0x1.000000fffffea7e5975eb11da74ap+0, false,
- 0x1.000000fffffea7e5975eb11da74bp+0, false,
- 0x1.000000fffffea7e5975eb11da74ap+0, false,
- 0x1.000000fffffea7e5975eb11da74bp+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1.000000fffffeap+0, false, false,
+ 0x1.000000fffffeap+0, false, false,
+ 0x1.000000fffffeap+0, false, false,
+ 0x1.000000fffffebp+0, false, false,
+ false,
+ 0x1.000000fffffea7e4p+0, false, false,
+ 0x1.000000fffffea7e6p+0, false, false,
+ 0x1.000000fffffea7e4p+0, false, false,
+ 0x1.000000fffffea7e6p+0, false, false,
+ false,
+ 0x1.000000fffffea7e4p+0, false, false,
+ 0x1.000000fffffea7e6p+0, false, false,
+ 0x1.000000fffffea7e4p+0, false, false,
+ 0x1.000000fffffea7e6p+0, false, false,
+ false,
+ 0x1.000000fffffea7e5975eb11da7p+0, false, false,
+ 0x1.000000fffffea7e5975eb11da78p+0, false, false,
+ 0x1.000000fffffea7e5975eb11da7p+0, false, false,
+ 0x1.000000fffffea7e5975eb11da78p+0, false, false,
+ false,
+ 0x1.000000fffffea7e5975eb11da74ap+0, false, false,
+ 0x1.000000fffffea7e5975eb11da74bp+0, false, false,
+ 0x1.000000fffffea7e5975eb11da74ap+0, false, false,
+ 0x1.000000fffffea7e5975eb11da74bp+0, false, false),
TEST ("1.0000000596046",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1.000000fffff36p+0, false,
- 0x1.000000fffff36p+0, false,
- 0x1.000000fffff36p+0, false,
- 0x1.000000fffff37p+0, false,
- false,
- 0x1.000000fffff36596p+0, false,
- 0x1.000000fffff36598p+0, false,
- 0x1.000000fffff36596p+0, false,
- 0x1.000000fffff36598p+0, false,
- false,
- 0x1.000000fffff36596p+0, false,
- 0x1.000000fffff36598p+0, false,
- 0x1.000000fffff36596p+0, false,
- 0x1.000000fffff36598p+0, false,
- false,
- 0x1.000000fffff36597d40e1b5026p+0, false,
- 0x1.000000fffff36597d40e1b50268p+0, false,
- 0x1.000000fffff36597d40e1b5026p+0, false,
- 0x1.000000fffff36597d40e1b50268p+0, false,
- false,
- 0x1.000000fffff36597d40e1b502655p+0, false,
- 0x1.000000fffff36597d40e1b502656p+0, false,
- 0x1.000000fffff36597d40e1b502655p+0, false,
- 0x1.000000fffff36597d40e1b502656p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1.000000fffff36p+0, false, false,
+ 0x1.000000fffff36p+0, false, false,
+ 0x1.000000fffff36p+0, false, false,
+ 0x1.000000fffff37p+0, false, false,
+ false,
+ 0x1.000000fffff36596p+0, false, false,
+ 0x1.000000fffff36598p+0, false, false,
+ 0x1.000000fffff36596p+0, false, false,
+ 0x1.000000fffff36598p+0, false, false,
+ false,
+ 0x1.000000fffff36596p+0, false, false,
+ 0x1.000000fffff36598p+0, false, false,
+ 0x1.000000fffff36596p+0, false, false,
+ 0x1.000000fffff36598p+0, false, false,
+ false,
+ 0x1.000000fffff36597d40e1b5026p+0, false, false,
+ 0x1.000000fffff36597d40e1b50268p+0, false, false,
+ 0x1.000000fffff36597d40e1b5026p+0, false, false,
+ 0x1.000000fffff36597d40e1b50268p+0, false, false,
+ false,
+ 0x1.000000fffff36597d40e1b502655p+0, false, false,
+ 0x1.000000fffff36597d40e1b502656p+0, false, false,
+ 0x1.000000fffff36597d40e1b502655p+0, false, false,
+ 0x1.000000fffff36597d40e1b502656p+0, false, false),
TEST ("1.000000059605",
false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1.000001000063fp+0, false,
- 0x1.000001000064p+0, false,
- 0x1.000001000063fp+0, false,
- 0x1.000001000064p+0, false,
- false,
- 0x1.000001000063fcap+0, false,
- 0x1.000001000063fca2p+0, false,
- 0x1.000001000063fcap+0, false,
- 0x1.000001000063fca2p+0, false,
- false,
- 0x1.000001000063fcap+0, false,
- 0x1.000001000063fca2p+0, false,
- 0x1.000001000063fcap+0, false,
- 0x1.000001000063fca2p+0, false,
- false,
- 0x1.000001000063fca17533f5572f8p+0, false,
- 0x1.000001000063fca17533f5573p+0, false,
- 0x1.000001000063fca17533f5572f8p+0, false,
- 0x1.000001000063fca17533f5573p+0, false,
- false,
- 0x1.000001000063fca17533f5572fe9p+0, false,
- 0x1.000001000063fca17533f5572feap+0, false,
- 0x1.000001000063fca17533f5572fe9p+0, false,
- 0x1.000001000063fca17533f5572feap+0, false),
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1.000001000063fp+0, false, false,
+ 0x1.000001000064p+0, false, false,
+ 0x1.000001000063fp+0, false, false,
+ 0x1.000001000064p+0, false, false,
+ false,
+ 0x1.000001000063fcap+0, false, false,
+ 0x1.000001000063fca2p+0, false, false,
+ 0x1.000001000063fcap+0, false, false,
+ 0x1.000001000063fca2p+0, false, false,
+ false,
+ 0x1.000001000063fcap+0, false, false,
+ 0x1.000001000063fca2p+0, false, false,
+ 0x1.000001000063fcap+0, false, false,
+ 0x1.000001000063fca2p+0, false, false,
+ false,
+ 0x1.000001000063fca17533f5572f8p+0, false, false,
+ 0x1.000001000063fca17533f5573p+0, false, false,
+ 0x1.000001000063fca17533f5572f8p+0, false, false,
+ 0x1.000001000063fca17533f5573p+0, false, false,
+ false,
+ 0x1.000001000063fca17533f5572fe9p+0, false, false,
+ 0x1.000001000063fca17533f5572feap+0, false, false,
+ 0x1.000001000063fca17533f5572fe9p+0, false, false,
+ 0x1.000001000063fca17533f5572feap+0, false, false),
TEST ("1.00000005960",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1.000000fffae49p+0, false,
- 0x1.000000fffae4ap+0, false,
- 0x1.000000fffae49p+0, false,
- 0x1.000000fffae4ap+0, false,
- false,
- 0x1.000000fffae49ca8p+0, false,
- 0x1.000000fffae49caap+0, false,
- 0x1.000000fffae49ca8p+0, false,
- 0x1.000000fffae49caap+0, false,
- false,
- 0x1.000000fffae49ca8p+0, false,
- 0x1.000000fffae49caap+0, false,
- 0x1.000000fffae49ca8p+0, false,
- 0x1.000000fffae49caap+0, false,
- false,
- 0x1.000000fffae49ca916dacfff38p+0, false,
- 0x1.000000fffae49ca916dacfff38p+0, false,
- 0x1.000000fffae49ca916dacfff38p+0, false,
- 0x1.000000fffae49ca916dacfff388p+0, false,
- false,
- 0x1.000000fffae49ca916dacfff382dp+0, false,
- 0x1.000000fffae49ca916dacfff382dp+0, false,
- 0x1.000000fffae49ca916dacfff382dp+0, false,
- 0x1.000000fffae49ca916dacfff382ep+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1.000000fffae49p+0, false, false,
+ 0x1.000000fffae4ap+0, false, false,
+ 0x1.000000fffae49p+0, false, false,
+ 0x1.000000fffae4ap+0, false, false,
+ false,
+ 0x1.000000fffae49ca8p+0, false, false,
+ 0x1.000000fffae49caap+0, false, false,
+ 0x1.000000fffae49ca8p+0, false, false,
+ 0x1.000000fffae49caap+0, false, false,
+ false,
+ 0x1.000000fffae49ca8p+0, false, false,
+ 0x1.000000fffae49caap+0, false, false,
+ 0x1.000000fffae49ca8p+0, false, false,
+ 0x1.000000fffae49caap+0, false, false,
+ false,
+ 0x1.000000fffae49ca916dacfff38p+0, false, false,
+ 0x1.000000fffae49ca916dacfff38p+0, false, false,
+ 0x1.000000fffae49ca916dacfff38p+0, false, false,
+ 0x1.000000fffae49ca916dacfff388p+0, false, false,
+ false,
+ 0x1.000000fffae49ca916dacfff382dp+0, false, false,
+ 0x1.000000fffae49ca916dacfff382dp+0, false, false,
+ 0x1.000000fffae49ca916dacfff382dp+0, false, false,
+ 0x1.000000fffae49ca916dacfff382ep+0, false, false),
TEST ("1.0000000596",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1.000000fffae49p+0, false,
- 0x1.000000fffae4ap+0, false,
- 0x1.000000fffae49p+0, false,
- 0x1.000000fffae4ap+0, false,
- false,
- 0x1.000000fffae49ca8p+0, false,
- 0x1.000000fffae49caap+0, false,
- 0x1.000000fffae49ca8p+0, false,
- 0x1.000000fffae49caap+0, false,
- false,
- 0x1.000000fffae49ca8p+0, false,
- 0x1.000000fffae49caap+0, false,
- 0x1.000000fffae49ca8p+0, false,
- 0x1.000000fffae49caap+0, false,
- false,
- 0x1.000000fffae49ca916dacfff38p+0, false,
- 0x1.000000fffae49ca916dacfff38p+0, false,
- 0x1.000000fffae49ca916dacfff38p+0, false,
- 0x1.000000fffae49ca916dacfff388p+0, false,
- false,
- 0x1.000000fffae49ca916dacfff382dp+0, false,
- 0x1.000000fffae49ca916dacfff382dp+0, false,
- 0x1.000000fffae49ca916dacfff382dp+0, false,
- 0x1.000000fffae49ca916dacfff382ep+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1.000000fffae49p+0, false, false,
+ 0x1.000000fffae4ap+0, false, false,
+ 0x1.000000fffae49p+0, false, false,
+ 0x1.000000fffae4ap+0, false, false,
+ false,
+ 0x1.000000fffae49ca8p+0, false, false,
+ 0x1.000000fffae49caap+0, false, false,
+ 0x1.000000fffae49ca8p+0, false, false,
+ 0x1.000000fffae49caap+0, false, false,
+ false,
+ 0x1.000000fffae49ca8p+0, false, false,
+ 0x1.000000fffae49caap+0, false, false,
+ 0x1.000000fffae49ca8p+0, false, false,
+ 0x1.000000fffae49caap+0, false, false,
+ false,
+ 0x1.000000fffae49ca916dacfff38p+0, false, false,
+ 0x1.000000fffae49ca916dacfff38p+0, false, false,
+ 0x1.000000fffae49ca916dacfff38p+0, false, false,
+ 0x1.000000fffae49ca916dacfff388p+0, false, false,
+ false,
+ 0x1.000000fffae49ca916dacfff382dp+0, false, false,
+ 0x1.000000fffae49ca916dacfff382dp+0, false, false,
+ 0x1.000000fffae49ca916dacfff382dp+0, false, false,
+ 0x1.000000fffae49ca916dacfff382ep+0, false, false),
TEST ("1.000000060",
false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1.00000101b2b29p+0, false,
- 0x1.00000101b2b2ap+0, false,
- 0x1.00000101b2b29p+0, false,
- 0x1.00000101b2b2ap+0, false,
- false,
- 0x1.00000101b2b29a46p+0, false,
- 0x1.00000101b2b29a46p+0, false,
- 0x1.00000101b2b29a46p+0, false,
- 0x1.00000101b2b29a48p+0, false,
- false,
- 0x1.00000101b2b29a46p+0, false,
- 0x1.00000101b2b29a46p+0, false,
- 0x1.00000101b2b29a46p+0, false,
- 0x1.00000101b2b29a48p+0, false,
- false,
- 0x1.00000101b2b29a4692b67b7ca3p+0, false,
- 0x1.00000101b2b29a4692b67b7ca3p+0, false,
- 0x1.00000101b2b29a4692b67b7ca3p+0, false,
- 0x1.00000101b2b29a4692b67b7ca38p+0, false,
- false,
- 0x1.00000101b2b29a4692b67b7ca313p+0, false,
- 0x1.00000101b2b29a4692b67b7ca314p+0, false,
- 0x1.00000101b2b29a4692b67b7ca313p+0, false,
- 0x1.00000101b2b29a4692b67b7ca314p+0, false),
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1.00000101b2b29p+0, false, false,
+ 0x1.00000101b2b2ap+0, false, false,
+ 0x1.00000101b2b29p+0, false, false,
+ 0x1.00000101b2b2ap+0, false, false,
+ false,
+ 0x1.00000101b2b29a46p+0, false, false,
+ 0x1.00000101b2b29a46p+0, false, false,
+ 0x1.00000101b2b29a46p+0, false, false,
+ 0x1.00000101b2b29a48p+0, false, false,
+ false,
+ 0x1.00000101b2b29a46p+0, false, false,
+ 0x1.00000101b2b29a46p+0, false, false,
+ 0x1.00000101b2b29a46p+0, false, false,
+ 0x1.00000101b2b29a48p+0, false, false,
+ false,
+ 0x1.00000101b2b29a4692b67b7ca3p+0, false, false,
+ 0x1.00000101b2b29a4692b67b7ca3p+0, false, false,
+ 0x1.00000101b2b29a4692b67b7ca3p+0, false, false,
+ 0x1.00000101b2b29a4692b67b7ca38p+0, false, false,
+ false,
+ 0x1.00000101b2b29a4692b67b7ca313p+0, false, false,
+ 0x1.00000101b2b29a4692b67b7ca314p+0, false, false,
+ 0x1.00000101b2b29a4692b67b7ca313p+0, false, false,
+ 0x1.00000101b2b29a4692b67b7ca314p+0, false, false),
TEST ("1.00000006",
false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1.00000101b2b29p+0, false,
- 0x1.00000101b2b2ap+0, false,
- 0x1.00000101b2b29p+0, false,
- 0x1.00000101b2b2ap+0, false,
- false,
- 0x1.00000101b2b29a46p+0, false,
- 0x1.00000101b2b29a46p+0, false,
- 0x1.00000101b2b29a46p+0, false,
- 0x1.00000101b2b29a48p+0, false,
- false,
- 0x1.00000101b2b29a46p+0, false,
- 0x1.00000101b2b29a46p+0, false,
- 0x1.00000101b2b29a46p+0, false,
- 0x1.00000101b2b29a48p+0, false,
- false,
- 0x1.00000101b2b29a4692b67b7ca3p+0, false,
- 0x1.00000101b2b29a4692b67b7ca3p+0, false,
- 0x1.00000101b2b29a4692b67b7ca3p+0, false,
- 0x1.00000101b2b29a4692b67b7ca38p+0, false,
- false,
- 0x1.00000101b2b29a4692b67b7ca313p+0, false,
- 0x1.00000101b2b29a4692b67b7ca314p+0, false,
- 0x1.00000101b2b29a4692b67b7ca313p+0, false,
- 0x1.00000101b2b29a4692b67b7ca314p+0, false),
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1.00000101b2b29p+0, false, false,
+ 0x1.00000101b2b2ap+0, false, false,
+ 0x1.00000101b2b29p+0, false, false,
+ 0x1.00000101b2b2ap+0, false, false,
+ false,
+ 0x1.00000101b2b29a46p+0, false, false,
+ 0x1.00000101b2b29a46p+0, false, false,
+ 0x1.00000101b2b29a46p+0, false, false,
+ 0x1.00000101b2b29a48p+0, false, false,
+ false,
+ 0x1.00000101b2b29a46p+0, false, false,
+ 0x1.00000101b2b29a46p+0, false, false,
+ 0x1.00000101b2b29a46p+0, false, false,
+ 0x1.00000101b2b29a48p+0, false, false,
+ false,
+ 0x1.00000101b2b29a4692b67b7ca3p+0, false, false,
+ 0x1.00000101b2b29a4692b67b7ca3p+0, false, false,
+ 0x1.00000101b2b29a4692b67b7ca3p+0, false, false,
+ 0x1.00000101b2b29a4692b67b7ca38p+0, false, false,
+ false,
+ 0x1.00000101b2b29a4692b67b7ca313p+0, false, false,
+ 0x1.00000101b2b29a4692b67b7ca314p+0, false, false,
+ 0x1.00000101b2b29a4692b67b7ca313p+0, false, false,
+ 0x1.00000101b2b29a4692b67b7ca314p+0, false, false),
TEST ("1.0000001",
false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1.000001ad7f29ap+0, false,
- 0x1.000001ad7f29bp+0, false,
- 0x1.000001ad7f29ap+0, false,
- 0x1.000001ad7f29bp+0, false,
- false,
- 0x1.000001ad7f29abcap+0, false,
- 0x1.000001ad7f29abcap+0, false,
- 0x1.000001ad7f29abcap+0, false,
- 0x1.000001ad7f29abccp+0, false,
- false,
- 0x1.000001ad7f29abcap+0, false,
- 0x1.000001ad7f29abcap+0, false,
- 0x1.000001ad7f29abcap+0, false,
- 0x1.000001ad7f29abccp+0, false,
- false,
- 0x1.000001ad7f29abcaf485787a65p+0, false,
- 0x1.000001ad7f29abcaf485787a65p+0, false,
- 0x1.000001ad7f29abcaf485787a65p+0, false,
- 0x1.000001ad7f29abcaf485787a658p+0, false,
- false,
- 0x1.000001ad7f29abcaf485787a652p+0, false,
- 0x1.000001ad7f29abcaf485787a6521p+0, false,
- 0x1.000001ad7f29abcaf485787a652p+0, false,
- 0x1.000001ad7f29abcaf485787a6521p+0, false),
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1.000001ad7f29ap+0, false, false,
+ 0x1.000001ad7f29bp+0, false, false,
+ 0x1.000001ad7f29ap+0, false, false,
+ 0x1.000001ad7f29bp+0, false, false,
+ false,
+ 0x1.000001ad7f29abcap+0, false, false,
+ 0x1.000001ad7f29abcap+0, false, false,
+ 0x1.000001ad7f29abcap+0, false, false,
+ 0x1.000001ad7f29abccp+0, false, false,
+ false,
+ 0x1.000001ad7f29abcap+0, false, false,
+ 0x1.000001ad7f29abcap+0, false, false,
+ 0x1.000001ad7f29abcap+0, false, false,
+ 0x1.000001ad7f29abccp+0, false, false,
+ false,
+ 0x1.000001ad7f29abcaf485787a65p+0, false, false,
+ 0x1.000001ad7f29abcaf485787a65p+0, false, false,
+ 0x1.000001ad7f29abcaf485787a65p+0, false, false,
+ 0x1.000001ad7f29abcaf485787a658p+0, false, false,
+ false,
+ 0x1.000001ad7f29abcaf485787a652p+0, false, false,
+ 0x1.000001ad7f29abcaf485787a6521p+0, false, false,
+ 0x1.000001ad7f29abcaf485787a652p+0, false, false,
+ 0x1.000001ad7f29abcaf485787a6521p+0, false, false),
TEST ("1.000000",
true,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- true,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- true,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- true,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- true,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- true,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ true,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ true,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ true,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ true,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ true,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false),
TEST ("1.00000000000000011113",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1.00000000000008p+0, false,
- 0x1.0000000000000802p+0, false,
- 0x1.00000000000008p+0, false,
- 0x1.0000000000000802p+0, false,
- false,
- 0x1.00000000000008p+0, false,
- 0x1.0000000000000802p+0, false,
- 0x1.00000000000008p+0, false,
- 0x1.0000000000000802p+0, false,
- false,
- 0x1.0000000000000801fc96557232p+0, false,
- 0x1.0000000000000801fc96557232p+0, false,
- 0x1.0000000000000801fc96557232p+0, false,
- 0x1.0000000000000801fc965572328p+0, false,
- false,
- 0x1.0000000000000801fc9655723222p+0, false,
- 0x1.0000000000000801fc9655723222p+0, false,
- 0x1.0000000000000801fc9655723222p+0, false,
- 0x1.0000000000000801fc9655723223p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1.00000000000008p+0, false, false,
+ 0x1.0000000000000802p+0, false, false,
+ 0x1.00000000000008p+0, false, false,
+ 0x1.0000000000000802p+0, false, false,
+ false,
+ 0x1.00000000000008p+0, false, false,
+ 0x1.0000000000000802p+0, false, false,
+ 0x1.00000000000008p+0, false, false,
+ 0x1.0000000000000802p+0, false, false,
+ false,
+ 0x1.0000000000000801fc96557232p+0, false, false,
+ 0x1.0000000000000801fc96557232p+0, false, false,
+ 0x1.0000000000000801fc96557232p+0, false, false,
+ 0x1.0000000000000801fc965572328p+0, false, false,
+ false,
+ 0x1.0000000000000801fc9655723222p+0, false, false,
+ 0x1.0000000000000801fc9655723222p+0, false, false,
+ 0x1.0000000000000801fc9655723222p+0, false, false,
+ 0x1.0000000000000801fc9655723223p+0, false, false),
TEST ("1.00000000000000011103",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1.00000000000008p+0, false,
- 0x1.00000000000008p+0, false,
- 0x1.00000000000008p+0, false,
- 0x1.0000000000000802p+0, false,
- false,
- 0x1.00000000000008p+0, false,
- 0x1.00000000000008p+0, false,
- 0x1.00000000000008p+0, false,
- 0x1.0000000000000802p+0, false,
- false,
- 0x1.00000000000008002459c076c48p+0, false,
- 0x1.00000000000008002459c076c5p+0, false,
- 0x1.00000000000008002459c076c48p+0, false,
- 0x1.00000000000008002459c076c5p+0, false,
- false,
- 0x1.00000000000008002459c076c4f7p+0, false,
- 0x1.00000000000008002459c076c4f8p+0, false,
- 0x1.00000000000008002459c076c4f7p+0, false,
- 0x1.00000000000008002459c076c4f8p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1.00000000000008p+0, false, false,
+ 0x1.00000000000008p+0, false, false,
+ 0x1.00000000000008p+0, false, false,
+ 0x1.0000000000000802p+0, false, false,
+ false,
+ 0x1.00000000000008p+0, false, false,
+ 0x1.00000000000008p+0, false, false,
+ 0x1.00000000000008p+0, false, false,
+ 0x1.0000000000000802p+0, false, false,
+ false,
+ 0x1.00000000000008002459c076c48p+0, false, false,
+ 0x1.00000000000008002459c076c5p+0, false, false,
+ 0x1.00000000000008002459c076c48p+0, false, false,
+ 0x1.00000000000008002459c076c5p+0, false, false,
+ false,
+ 0x1.00000000000008002459c076c4f7p+0, false, false,
+ 0x1.00000000000008002459c076c4f8p+0, false, false,
+ 0x1.00000000000008002459c076c4f7p+0, false, false,
+ 0x1.00000000000008002459c076c4f8p+0, false, false),
TEST ("1.00000000000000011102",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1.00000000000007fep+0, false,
- 0x1.00000000000008p+0, false,
- 0x1.00000000000007fep+0, false,
- 0x1.00000000000008p+0, false,
- false,
- 0x1.00000000000007fep+0, false,
- 0x1.00000000000008p+0, false,
- 0x1.00000000000007fep+0, false,
- 0x1.00000000000008p+0, false,
- false,
- 0x1.00000000000007fff5207e5dap+0, false,
- 0x1.00000000000007fff5207e5da08p+0, false,
- 0x1.00000000000007fff5207e5dap+0, false,
- 0x1.00000000000007fff5207e5da08p+0, false,
- false,
- 0x1.00000000000007fff5207e5da073p+0, false,
- 0x1.00000000000007fff5207e5da073p+0, false,
- 0x1.00000000000007fff5207e5da073p+0, false,
- 0x1.00000000000007fff5207e5da074p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1.00000000000007fep+0, false, false,
+ 0x1.00000000000008p+0, false, false,
+ 0x1.00000000000007fep+0, false, false,
+ 0x1.00000000000008p+0, false, false,
+ false,
+ 0x1.00000000000007fep+0, false, false,
+ 0x1.00000000000008p+0, false, false,
+ 0x1.00000000000007fep+0, false, false,
+ 0x1.00000000000008p+0, false, false,
+ false,
+ 0x1.00000000000007fff5207e5dap+0, false, false,
+ 0x1.00000000000007fff5207e5da08p+0, false, false,
+ 0x1.00000000000007fff5207e5dap+0, false, false,
+ 0x1.00000000000007fff5207e5da08p+0, false, false,
+ false,
+ 0x1.00000000000007fff5207e5da073p+0, false, false,
+ 0x1.00000000000007fff5207e5da073p+0, false, false,
+ 0x1.00000000000007fff5207e5da073p+0, false, false,
+ 0x1.00000000000007fff5207e5da074p+0, false, false),
TEST ("1.00000000000000011101",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1.00000000000007fep+0, false,
- 0x1.00000000000008p+0, false,
- 0x1.00000000000007fep+0, false,
- 0x1.00000000000008p+0, false,
- false,
- 0x1.00000000000007fep+0, false,
- 0x1.00000000000008p+0, false,
- 0x1.00000000000007fep+0, false,
- 0x1.00000000000008p+0, false,
- false,
- 0x1.00000000000007ffc5e73c447b8p+0, false,
- 0x1.00000000000007ffc5e73c447cp+0, false,
- 0x1.00000000000007ffc5e73c447b8p+0, false,
- 0x1.00000000000007ffc5e73c447cp+0, false,
- false,
- 0x1.00000000000007ffc5e73c447befp+0, false,
- 0x1.00000000000007ffc5e73c447befp+0, false,
- 0x1.00000000000007ffc5e73c447befp+0, false,
- 0x1.00000000000007ffc5e73c447bfp+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1.00000000000007fep+0, false, false,
+ 0x1.00000000000008p+0, false, false,
+ 0x1.00000000000007fep+0, false, false,
+ 0x1.00000000000008p+0, false, false,
+ false,
+ 0x1.00000000000007fep+0, false, false,
+ 0x1.00000000000008p+0, false, false,
+ 0x1.00000000000007fep+0, false, false,
+ 0x1.00000000000008p+0, false, false,
+ false,
+ 0x1.00000000000007ffc5e73c447b8p+0, false, false,
+ 0x1.00000000000007ffc5e73c447cp+0, false, false,
+ 0x1.00000000000007ffc5e73c447b8p+0, false, false,
+ 0x1.00000000000007ffc5e73c447cp+0, false, false,
+ false,
+ 0x1.00000000000007ffc5e73c447befp+0, false, false,
+ 0x1.00000000000007ffc5e73c447befp+0, false, false,
+ 0x1.00000000000007ffc5e73c447befp+0, false, false,
+ 0x1.00000000000007ffc5e73c447bfp+0, false, false),
TEST ("1.0000000000000001111",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1.00000000000008p+0, false,
- 0x1.0000000000000802p+0, false,
- 0x1.00000000000008p+0, false,
- 0x1.0000000000000802p+0, false,
- false,
- 0x1.00000000000008p+0, false,
- 0x1.0000000000000802p+0, false,
- 0x1.00000000000008p+0, false,
- 0x1.0000000000000802p+0, false,
- false,
- 0x1.00000000000008016eea8f26c48p+0, false,
- 0x1.00000000000008016eea8f26c48p+0, false,
- 0x1.00000000000008016eea8f26c48p+0, false,
- 0x1.00000000000008016eea8f26c5p+0, false,
- false,
- 0x1.00000000000008016eea8f26c495p+0, false,
- 0x1.00000000000008016eea8f26c496p+0, false,
- 0x1.00000000000008016eea8f26c495p+0, false,
- 0x1.00000000000008016eea8f26c496p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1.00000000000008p+0, false, false,
+ 0x1.0000000000000802p+0, false, false,
+ 0x1.00000000000008p+0, false, false,
+ 0x1.0000000000000802p+0, false, false,
+ false,
+ 0x1.00000000000008p+0, false, false,
+ 0x1.0000000000000802p+0, false, false,
+ 0x1.00000000000008p+0, false, false,
+ 0x1.0000000000000802p+0, false, false,
+ false,
+ 0x1.00000000000008016eea8f26c48p+0, false, false,
+ 0x1.00000000000008016eea8f26c48p+0, false, false,
+ 0x1.00000000000008016eea8f26c48p+0, false, false,
+ 0x1.00000000000008016eea8f26c5p+0, false, false,
+ false,
+ 0x1.00000000000008016eea8f26c495p+0, false, false,
+ 0x1.00000000000008016eea8f26c496p+0, false, false,
+ 0x1.00000000000008016eea8f26c495p+0, false, false,
+ 0x1.00000000000008016eea8f26c496p+0, false, false),
TEST ("1.000000000000000111",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1.00000000000007fep+0, false,
- 0x1.00000000000008p+0, false,
- 0x1.00000000000007fep+0, false,
- 0x1.00000000000008p+0, false,
- false,
- 0x1.00000000000007fep+0, false,
- 0x1.00000000000008p+0, false,
- 0x1.00000000000007fep+0, false,
- 0x1.00000000000008p+0, false,
- false,
- 0x1.00000000000007ff96adfa2b57p+0, false,
- 0x1.00000000000007ff96adfa2b578p+0, false,
- 0x1.00000000000007ff96adfa2b57p+0, false,
- 0x1.00000000000007ff96adfa2b578p+0, false,
- false,
- 0x1.00000000000007ff96adfa2b576ap+0, false,
- 0x1.00000000000007ff96adfa2b576bp+0, false,
- 0x1.00000000000007ff96adfa2b576ap+0, false,
- 0x1.00000000000007ff96adfa2b576bp+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1.00000000000007fep+0, false, false,
+ 0x1.00000000000008p+0, false, false,
+ 0x1.00000000000007fep+0, false, false,
+ 0x1.00000000000008p+0, false, false,
+ false,
+ 0x1.00000000000007fep+0, false, false,
+ 0x1.00000000000008p+0, false, false,
+ 0x1.00000000000007fep+0, false, false,
+ 0x1.00000000000008p+0, false, false,
+ false,
+ 0x1.00000000000007ff96adfa2b57p+0, false, false,
+ 0x1.00000000000007ff96adfa2b578p+0, false, false,
+ 0x1.00000000000007ff96adfa2b57p+0, false, false,
+ 0x1.00000000000007ff96adfa2b578p+0, false, false,
+ false,
+ 0x1.00000000000007ff96adfa2b576ap+0, false, false,
+ 0x1.00000000000007ff96adfa2b576bp+0, false, false,
+ 0x1.00000000000007ff96adfa2b576ap+0, false, false,
+ 0x1.00000000000007ff96adfa2b576bp+0, false, false),
TEST ("1.00000000000000011",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1.00000000000007ecp+0, false,
- 0x1.00000000000007eep+0, false,
- 0x1.00000000000007ecp+0, false,
- 0x1.00000000000007eep+0, false,
- false,
- 0x1.00000000000007ecp+0, false,
- 0x1.00000000000007eep+0, false,
- 0x1.00000000000007ecp+0, false,
- 0x1.00000000000007eep+0, false,
- false,
- 0x1.00000000000007ed24502859138p+0, false,
- 0x1.00000000000007ed24502859138p+0, false,
- 0x1.00000000000007ed24502859138p+0, false,
- 0x1.00000000000007ed2450285914p+0, false,
- false,
- 0x1.00000000000007ed2450285913bfp+0, false,
- 0x1.00000000000007ed2450285913bfp+0, false,
- 0x1.00000000000007ed2450285913bfp+0, false,
- 0x1.00000000000007ed2450285913cp+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1.00000000000007ecp+0, false, false,
+ 0x1.00000000000007eep+0, false, false,
+ 0x1.00000000000007ecp+0, false, false,
+ 0x1.00000000000007eep+0, false, false,
+ false,
+ 0x1.00000000000007ecp+0, false, false,
+ 0x1.00000000000007eep+0, false, false,
+ 0x1.00000000000007ecp+0, false, false,
+ 0x1.00000000000007eep+0, false, false,
+ false,
+ 0x1.00000000000007ed24502859138p+0, false, false,
+ 0x1.00000000000007ed24502859138p+0, false, false,
+ 0x1.00000000000007ed24502859138p+0, false, false,
+ 0x1.00000000000007ed2450285914p+0, false, false,
+ false,
+ 0x1.00000000000007ed2450285913bfp+0, false, false,
+ 0x1.00000000000007ed2450285913bfp+0, false, false,
+ 0x1.00000000000007ed2450285913bfp+0, false, false,
+ 0x1.00000000000007ed2450285913cp+0, false, false),
TEST ("1.0000000000000001",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1.0000000000000734p+0, false,
- 0x1.0000000000000734p+0, false,
- 0x1.0000000000000734p+0, false,
- 0x1.0000000000000736p+0, false,
- false,
- 0x1.0000000000000734p+0, false,
- 0x1.0000000000000734p+0, false,
- 0x1.0000000000000734p+0, false,
- 0x1.0000000000000736p+0, false,
- false,
- 0x1.0000000000000734aca5f6226fp+0, false,
- 0x1.0000000000000734aca5f6226fp+0, false,
- 0x1.0000000000000734aca5f6226fp+0, false,
- 0x1.0000000000000734aca5f6226f8p+0, false,
- false,
- 0x1.0000000000000734aca5f6226f0ap+0, false,
- 0x1.0000000000000734aca5f6226f0bp+0, false,
- 0x1.0000000000000734aca5f6226f0ap+0, false,
- 0x1.0000000000000734aca5f6226f0bp+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1.0000000000000734p+0, false, false,
+ 0x1.0000000000000734p+0, false, false,
+ 0x1.0000000000000734p+0, false, false,
+ 0x1.0000000000000736p+0, false, false,
+ false,
+ 0x1.0000000000000734p+0, false, false,
+ 0x1.0000000000000734p+0, false, false,
+ 0x1.0000000000000734p+0, false, false,
+ 0x1.0000000000000736p+0, false, false,
+ false,
+ 0x1.0000000000000734aca5f6226fp+0, false, false,
+ 0x1.0000000000000734aca5f6226fp+0, false, false,
+ 0x1.0000000000000734aca5f6226fp+0, false, false,
+ 0x1.0000000000000734aca5f6226f8p+0, false, false,
+ false,
+ 0x1.0000000000000734aca5f6226f0ap+0, false, false,
+ 0x1.0000000000000734aca5f6226f0bp+0, false, false,
+ 0x1.0000000000000734aca5f6226f0ap+0, false, false,
+ 0x1.0000000000000734aca5f6226f0bp+0, false, false),
TEST ("3929201589819414e-25",
false,
- 0x1.b0053p-32, false,
- 0x1.b00532p-32, false,
- 0x1.b0053p-32, false,
- 0x1.b00532p-32, false,
- false,
- 0x1.b005314e2421ep-32, false,
- 0x1.b005314e2421ep-32, false,
- 0x1.b005314e2421ep-32, false,
- 0x1.b005314e2421fp-32, false,
- false,
- 0x1.b005314e2421e7fep-32, false,
- 0x1.b005314e2421e8p-32, false,
- 0x1.b005314e2421e7fep-32, false,
- 0x1.b005314e2421e8p-32, false,
- false,
- 0x1.b005314e2421e7fep-32, false,
- 0x1.b005314e2421e8p-32, false,
- 0x1.b005314e2421e7fep-32, false,
- 0x1.b005314e2421e8p-32, false,
- false,
- 0x1.b005314e2421e7ffb472840c5ap-32, false,
- 0x1.b005314e2421e7ffb472840c5a8p-32, false,
- 0x1.b005314e2421e7ffb472840c5ap-32, false,
- 0x1.b005314e2421e7ffb472840c5a8p-32, false,
- false,
- 0x1.b005314e2421e7ffb472840c5a6ep-32, false,
- 0x1.b005314e2421e7ffb472840c5a6fp-32, false,
- 0x1.b005314e2421e7ffb472840c5a6ep-32, false,
- 0x1.b005314e2421e7ffb472840c5a6fp-32, false),
+ 0x1.b0053p-32, false, false,
+ 0x1.b00532p-32, false, false,
+ 0x1.b0053p-32, false, false,
+ 0x1.b00532p-32, false, false,
+ false,
+ 0x1.b005314e2421ep-32, false, false,
+ 0x1.b005314e2421ep-32, false, false,
+ 0x1.b005314e2421ep-32, false, false,
+ 0x1.b005314e2421fp-32, false, false,
+ false,
+ 0x1.b005314e2421e7fep-32, false, false,
+ 0x1.b005314e2421e8p-32, false, false,
+ 0x1.b005314e2421e7fep-32, false, false,
+ 0x1.b005314e2421e8p-32, false, false,
+ false,
+ 0x1.b005314e2421e7fep-32, false, false,
+ 0x1.b005314e2421e8p-32, false, false,
+ 0x1.b005314e2421e7fep-32, false, false,
+ 0x1.b005314e2421e8p-32, false, false,
+ false,
+ 0x1.b005314e2421e7ffb472840c5ap-32, false, false,
+ 0x1.b005314e2421e7ffb472840c5a8p-32, false, false,
+ 0x1.b005314e2421e7ffb472840c5ap-32, false, false,
+ 0x1.b005314e2421e7ffb472840c5a8p-32, false, false,
+ false,
+ 0x1.b005314e2421e7ffb472840c5a6ep-32, false, false,
+ 0x1.b005314e2421e7ffb472840c5a6fp-32, false, false,
+ 0x1.b005314e2421e7ffb472840c5a6ep-32, false, false,
+ 0x1.b005314e2421e7ffb472840c5a6fp-32, false, false),
TEST ("0.0000000000000000000000000000000000000000000021019476964872"
"256063855943749348741969203929128147736576356024258346866240"
"28790902229957282543182373046875",
false,
- 0x8p-152, false,
- 0x1p-148, false,
- 0x8p-152, false,
- 0x1p-148, false,
- true,
- 0xcp-152, false,
- 0xcp-152, false,
- 0xcp-152, false,
- 0xcp-152, false,
- true,
- 0xcp-152, false,
- 0xcp-152, false,
- 0xcp-152, false,
- 0xcp-152, false,
- true,
- 0xcp-152, false,
- 0xcp-152, false,
- 0xcp-152, false,
- 0xcp-152, false,
- true,
- 0xcp-152, false,
- 0xcp-152, false,
- 0xcp-152, false,
- 0xcp-152, false,
- true,
- 0xcp-152, false,
- 0xcp-152, false,
- 0xcp-152, false,
- 0xcp-152, false),
+ 0x8p-152, false, true,
+ 0x1p-148, false, true,
+ 0x8p-152, false, true,
+ 0x1p-148, false, true,
+ true,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ true,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ true,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ true,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ true,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false),
TEST ("1.00000005960464477539062499",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1.000000fffffffp+0, false,
- 0x1.000001p+0, false,
- 0x1.000000fffffffp+0, false,
- 0x1.000001p+0, false,
- false,
- 0x1.000000fffffffffep+0, false,
- 0x1.000001p+0, false,
- 0x1.000000fffffffffep+0, false,
- 0x1.000001p+0, false,
- false,
- 0x1.000000fffffffffep+0, false,
- 0x1.000001p+0, false,
- 0x1.000000fffffffffep+0, false,
- 0x1.000001p+0, false,
- false,
- 0x1.000000fffffffffffffffce7b78p+0, false,
- 0x1.000000fffffffffffffffce7b8p+0, false,
- 0x1.000000fffffffffffffffce7b78p+0, false,
- 0x1.000000fffffffffffffffce7b8p+0, false,
- false,
- 0x1.000000fffffffffffffffce7b7e7p+0, false,
- 0x1.000000fffffffffffffffce7b7e7p+0, false,
- 0x1.000000fffffffffffffffce7b7e7p+0, false,
- 0x1.000000fffffffffffffffce7b7e8p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1.000000fffffffp+0, false, false,
+ 0x1.000001p+0, false, false,
+ 0x1.000000fffffffp+0, false, false,
+ 0x1.000001p+0, false, false,
+ false,
+ 0x1.000000fffffffffep+0, false, false,
+ 0x1.000001p+0, false, false,
+ 0x1.000000fffffffffep+0, false, false,
+ 0x1.000001p+0, false, false,
+ false,
+ 0x1.000000fffffffffep+0, false, false,
+ 0x1.000001p+0, false, false,
+ 0x1.000000fffffffffep+0, false, false,
+ 0x1.000001p+0, false, false,
+ false,
+ 0x1.000000fffffffffffffffce7b78p+0, false, false,
+ 0x1.000000fffffffffffffffce7b8p+0, false, false,
+ 0x1.000000fffffffffffffffce7b78p+0, false, false,
+ 0x1.000000fffffffffffffffce7b8p+0, false, false,
+ false,
+ 0x1.000000fffffffffffffffce7b7e7p+0, false, false,
+ 0x1.000000fffffffffffffffce7b7e7p+0, false, false,
+ 0x1.000000fffffffffffffffce7b7e7p+0, false, false,
+ 0x1.000000fffffffffffffffce7b7e8p+0, false, false),
TEST ("1.000000059604644775390625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.000001p+0, false,
- 0x1.000001p+0, false,
- 0x1.000001p+0, false,
- 0x1.000001p+0, false,
- true,
- 0x1.000001p+0, false,
- 0x1.000001p+0, false,
- 0x1.000001p+0, false,
- 0x1.000001p+0, false,
- true,
- 0x1.000001p+0, false,
- 0x1.000001p+0, false,
- 0x1.000001p+0, false,
- 0x1.000001p+0, false,
- true,
- 0x1.000001p+0, false,
- 0x1.000001p+0, false,
- 0x1.000001p+0, false,
- 0x1.000001p+0, false,
- true,
- 0x1.000001p+0, false,
- 0x1.000001p+0, false,
- 0x1.000001p+0, false,
- 0x1.000001p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.000001p+0, false, false,
+ 0x1.000001p+0, false, false,
+ 0x1.000001p+0, false, false,
+ 0x1.000001p+0, false, false,
+ true,
+ 0x1.000001p+0, false, false,
+ 0x1.000001p+0, false, false,
+ 0x1.000001p+0, false, false,
+ 0x1.000001p+0, false, false,
+ true,
+ 0x1.000001p+0, false, false,
+ 0x1.000001p+0, false, false,
+ 0x1.000001p+0, false, false,
+ 0x1.000001p+0, false, false,
+ true,
+ 0x1.000001p+0, false, false,
+ 0x1.000001p+0, false, false,
+ 0x1.000001p+0, false, false,
+ 0x1.000001p+0, false, false,
+ true,
+ 0x1.000001p+0, false, false,
+ 0x1.000001p+0, false, false,
+ 0x1.000001p+0, false, false,
+ 0x1.000001p+0, false, false),
TEST ("1.00000005960464477539062501",
false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1.000001p+0, false,
- 0x1.000001p+0, false,
- 0x1.000001p+0, false,
- 0x1.0000010000001p+0, false,
- false,
- 0x1.000001p+0, false,
- 0x1.000001p+0, false,
- 0x1.000001p+0, false,
- 0x1.0000010000000002p+0, false,
- false,
- 0x1.000001p+0, false,
- 0x1.000001p+0, false,
- 0x1.000001p+0, false,
- 0x1.0000010000000002p+0, false,
- false,
- 0x1.00000100000000000000031848p+0, false,
- 0x1.00000100000000000000031848p+0, false,
- 0x1.00000100000000000000031848p+0, false,
- 0x1.000001000000000000000318488p+0, false,
- false,
- 0x1.0000010000000000000003184818p+0, false,
- 0x1.0000010000000000000003184819p+0, false,
- 0x1.0000010000000000000003184818p+0, false,
- 0x1.0000010000000000000003184819p+0, false),
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1.000001p+0, false, false,
+ 0x1.000001p+0, false, false,
+ 0x1.000001p+0, false, false,
+ 0x1.0000010000001p+0, false, false,
+ false,
+ 0x1.000001p+0, false, false,
+ 0x1.000001p+0, false, false,
+ 0x1.000001p+0, false, false,
+ 0x1.0000010000000002p+0, false, false,
+ false,
+ 0x1.000001p+0, false, false,
+ 0x1.000001p+0, false, false,
+ 0x1.000001p+0, false, false,
+ 0x1.0000010000000002p+0, false, false,
+ false,
+ 0x1.00000100000000000000031848p+0, false, false,
+ 0x1.00000100000000000000031848p+0, false, false,
+ 0x1.00000100000000000000031848p+0, false, false,
+ 0x1.000001000000000000000318488p+0, false, false,
+ false,
+ 0x1.0000010000000000000003184818p+0, false, false,
+ 0x1.0000010000000000000003184819p+0, false, false,
+ 0x1.0000010000000000000003184818p+0, false, false,
+ 0x1.0000010000000000000003184819p+0, false, false),
TEST ("1.00000011920928955078125",
true,
- 0x1.000002p+0, false,
- 0x1.000002p+0, false,
- 0x1.000002p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.000002p+0, false,
- 0x1.000002p+0, false,
- 0x1.000002p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.000002p+0, false,
- 0x1.000002p+0, false,
- 0x1.000002p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.000002p+0, false,
- 0x1.000002p+0, false,
- 0x1.000002p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.000002p+0, false,
- 0x1.000002p+0, false,
- 0x1.000002p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.000002p+0, false,
- 0x1.000002p+0, false,
- 0x1.000002p+0, false,
- 0x1.000002p+0, false),
+ 0x1.000002p+0, false, false,
+ 0x1.000002p+0, false, false,
+ 0x1.000002p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.000002p+0, false, false,
+ 0x1.000002p+0, false, false,
+ 0x1.000002p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.000002p+0, false, false,
+ 0x1.000002p+0, false, false,
+ 0x1.000002p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.000002p+0, false, false,
+ 0x1.000002p+0, false, false,
+ 0x1.000002p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.000002p+0, false, false,
+ 0x1.000002p+0, false, false,
+ 0x1.000002p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.000002p+0, false, false,
+ 0x1.000002p+0, false, false,
+ 0x1.000002p+0, false, false,
+ 0x1.000002p+0, false, false),
TEST ("1.00000017881393432617187499",
false,
- 0x1.000002p+0, false,
- 0x1.000002p+0, false,
- 0x1.000002p+0, false,
- 0x1.000004p+0, false,
- false,
- 0x1.000002fffffffp+0, false,
- 0x1.000003p+0, false,
- 0x1.000002fffffffp+0, false,
- 0x1.000003p+0, false,
- false,
- 0x1.000002fffffffffep+0, false,
- 0x1.000003p+0, false,
- 0x1.000002fffffffffep+0, false,
- 0x1.000003p+0, false,
- false,
- 0x1.000002fffffffffep+0, false,
- 0x1.000003p+0, false,
- 0x1.000002fffffffffep+0, false,
- 0x1.000003p+0, false,
- false,
- 0x1.000002fffffffffffffffce7b78p+0, false,
- 0x1.000002fffffffffffffffce7b8p+0, false,
- 0x1.000002fffffffffffffffce7b78p+0, false,
- 0x1.000002fffffffffffffffce7b8p+0, false,
- false,
- 0x1.000002fffffffffffffffce7b7e7p+0, false,
- 0x1.000002fffffffffffffffce7b7e7p+0, false,
- 0x1.000002fffffffffffffffce7b7e7p+0, false,
- 0x1.000002fffffffffffffffce7b7e8p+0, false),
+ 0x1.000002p+0, false, false,
+ 0x1.000002p+0, false, false,
+ 0x1.000002p+0, false, false,
+ 0x1.000004p+0, false, false,
+ false,
+ 0x1.000002fffffffp+0, false, false,
+ 0x1.000003p+0, false, false,
+ 0x1.000002fffffffp+0, false, false,
+ 0x1.000003p+0, false, false,
+ false,
+ 0x1.000002fffffffffep+0, false, false,
+ 0x1.000003p+0, false, false,
+ 0x1.000002fffffffffep+0, false, false,
+ 0x1.000003p+0, false, false,
+ false,
+ 0x1.000002fffffffffep+0, false, false,
+ 0x1.000003p+0, false, false,
+ 0x1.000002fffffffffep+0, false, false,
+ 0x1.000003p+0, false, false,
+ false,
+ 0x1.000002fffffffffffffffce7b78p+0, false, false,
+ 0x1.000002fffffffffffffffce7b8p+0, false, false,
+ 0x1.000002fffffffffffffffce7b78p+0, false, false,
+ 0x1.000002fffffffffffffffce7b8p+0, false, false,
+ false,
+ 0x1.000002fffffffffffffffce7b7e7p+0, false, false,
+ 0x1.000002fffffffffffffffce7b7e7p+0, false, false,
+ 0x1.000002fffffffffffffffce7b7e7p+0, false, false,
+ 0x1.000002fffffffffffffffce7b7e8p+0, false, false),
TEST ("1.000000178813934326171875",
false,
- 0x1.000002p+0, false,
- 0x1.000004p+0, false,
- 0x1.000002p+0, false,
- 0x1.000004p+0, false,
- true,
- 0x1.000003p+0, false,
- 0x1.000003p+0, false,
- 0x1.000003p+0, false,
- 0x1.000003p+0, false,
- true,
- 0x1.000003p+0, false,
- 0x1.000003p+0, false,
- 0x1.000003p+0, false,
- 0x1.000003p+0, false,
- true,
- 0x1.000003p+0, false,
- 0x1.000003p+0, false,
- 0x1.000003p+0, false,
- 0x1.000003p+0, false,
- true,
- 0x1.000003p+0, false,
- 0x1.000003p+0, false,
- 0x1.000003p+0, false,
- 0x1.000003p+0, false,
- true,
- 0x1.000003p+0, false,
- 0x1.000003p+0, false,
- 0x1.000003p+0, false,
- 0x1.000003p+0, false),
+ 0x1.000002p+0, false, false,
+ 0x1.000004p+0, false, false,
+ 0x1.000002p+0, false, false,
+ 0x1.000004p+0, false, false,
+ true,
+ 0x1.000003p+0, false, false,
+ 0x1.000003p+0, false, false,
+ 0x1.000003p+0, false, false,
+ 0x1.000003p+0, false, false,
+ true,
+ 0x1.000003p+0, false, false,
+ 0x1.000003p+0, false, false,
+ 0x1.000003p+0, false, false,
+ 0x1.000003p+0, false, false,
+ true,
+ 0x1.000003p+0, false, false,
+ 0x1.000003p+0, false, false,
+ 0x1.000003p+0, false, false,
+ 0x1.000003p+0, false, false,
+ true,
+ 0x1.000003p+0, false, false,
+ 0x1.000003p+0, false, false,
+ 0x1.000003p+0, false, false,
+ 0x1.000003p+0, false, false,
+ true,
+ 0x1.000003p+0, false, false,
+ 0x1.000003p+0, false, false,
+ 0x1.000003p+0, false, false,
+ 0x1.000003p+0, false, false),
TEST ("1.00000017881393432617187501",
false,
- 0x1.000002p+0, false,
- 0x1.000004p+0, false,
- 0x1.000002p+0, false,
- 0x1.000004p+0, false,
- false,
- 0x1.000003p+0, false,
- 0x1.000003p+0, false,
- 0x1.000003p+0, false,
- 0x1.0000030000001p+0, false,
- false,
- 0x1.000003p+0, false,
- 0x1.000003p+0, false,
- 0x1.000003p+0, false,
- 0x1.0000030000000002p+0, false,
- false,
- 0x1.000003p+0, false,
- 0x1.000003p+0, false,
- 0x1.000003p+0, false,
- 0x1.0000030000000002p+0, false,
- false,
- 0x1.00000300000000000000031848p+0, false,
- 0x1.00000300000000000000031848p+0, false,
- 0x1.00000300000000000000031848p+0, false,
- 0x1.000003000000000000000318488p+0, false,
- false,
- 0x1.0000030000000000000003184818p+0, false,
- 0x1.0000030000000000000003184819p+0, false,
- 0x1.0000030000000000000003184818p+0, false,
- 0x1.0000030000000000000003184819p+0, false),
+ 0x1.000002p+0, false, false,
+ 0x1.000004p+0, false, false,
+ 0x1.000002p+0, false, false,
+ 0x1.000004p+0, false, false,
+ false,
+ 0x1.000003p+0, false, false,
+ 0x1.000003p+0, false, false,
+ 0x1.000003p+0, false, false,
+ 0x1.0000030000001p+0, false, false,
+ false,
+ 0x1.000003p+0, false, false,
+ 0x1.000003p+0, false, false,
+ 0x1.000003p+0, false, false,
+ 0x1.0000030000000002p+0, false, false,
+ false,
+ 0x1.000003p+0, false, false,
+ 0x1.000003p+0, false, false,
+ 0x1.000003p+0, false, false,
+ 0x1.0000030000000002p+0, false, false,
+ false,
+ 0x1.00000300000000000000031848p+0, false, false,
+ 0x1.00000300000000000000031848p+0, false, false,
+ 0x1.00000300000000000000031848p+0, false, false,
+ 0x1.000003000000000000000318488p+0, false, false,
+ false,
+ 0x1.0000030000000000000003184818p+0, false, false,
+ 0x1.0000030000000000000003184819p+0, false, false,
+ 0x1.0000030000000000000003184818p+0, false, false,
+ 0x1.0000030000000000000003184819p+0, false, false),
TEST ("1.0000002384185791015625",
true,
- 0x1.000004p+0, false,
- 0x1.000004p+0, false,
- 0x1.000004p+0, false,
- 0x1.000004p+0, false,
- true,
- 0x1.000004p+0, false,
- 0x1.000004p+0, false,
- 0x1.000004p+0, false,
- 0x1.000004p+0, false,
- true,
- 0x1.000004p+0, false,
- 0x1.000004p+0, false,
- 0x1.000004p+0, false,
- 0x1.000004p+0, false,
- true,
- 0x1.000004p+0, false,
- 0x1.000004p+0, false,
- 0x1.000004p+0, false,
- 0x1.000004p+0, false,
- true,
- 0x1.000004p+0, false,
- 0x1.000004p+0, false,
- 0x1.000004p+0, false,
- 0x1.000004p+0, false,
- true,
- 0x1.000004p+0, false,
- 0x1.000004p+0, false,
- 0x1.000004p+0, false,
- 0x1.000004p+0, false),
+ 0x1.000004p+0, false, false,
+ 0x1.000004p+0, false, false,
+ 0x1.000004p+0, false, false,
+ 0x1.000004p+0, false, false,
+ true,
+ 0x1.000004p+0, false, false,
+ 0x1.000004p+0, false, false,
+ 0x1.000004p+0, false, false,
+ 0x1.000004p+0, false, false,
+ true,
+ 0x1.000004p+0, false, false,
+ 0x1.000004p+0, false, false,
+ 0x1.000004p+0, false, false,
+ 0x1.000004p+0, false, false,
+ true,
+ 0x1.000004p+0, false, false,
+ 0x1.000004p+0, false, false,
+ 0x1.000004p+0, false, false,
+ 0x1.000004p+0, false, false,
+ true,
+ 0x1.000004p+0, false, false,
+ 0x1.000004p+0, false, false,
+ 0x1.000004p+0, false, false,
+ 0x1.000004p+0, false, false,
+ true,
+ 0x1.000004p+0, false, false,
+ 0x1.000004p+0, false, false,
+ 0x1.000004p+0, false, false,
+ 0x1.000004p+0, false, false),
TEST ("1.08420217248550443400745280086994171142578125e-19",
true,
- 0x2p-64, false,
- 0x2p-64, false,
- 0x2p-64, false,
- 0x2p-64, false,
- true,
- 0x2p-64, false,
- 0x2p-64, false,
- 0x2p-64, false,
- 0x2p-64, false,
- true,
- 0x2p-64, false,
- 0x2p-64, false,
- 0x2p-64, false,
- 0x2p-64, false,
- true,
- 0x2p-64, false,
- 0x2p-64, false,
- 0x2p-64, false,
- 0x2p-64, false,
- true,
- 0x2p-64, false,
- 0x2p-64, false,
- 0x2p-64, false,
- 0x2p-64, false,
- true,
- 0x2p-64, false,
- 0x2p-64, false,
- 0x2p-64, false,
- 0x2p-64, false),
+ 0x2p-64, false, false,
+ 0x2p-64, false, false,
+ 0x2p-64, false, false,
+ 0x2p-64, false, false,
+ true,
+ 0x2p-64, false, false,
+ 0x2p-64, false, false,
+ 0x2p-64, false, false,
+ 0x2p-64, false, false,
+ true,
+ 0x2p-64, false, false,
+ 0x2p-64, false, false,
+ 0x2p-64, false, false,
+ 0x2p-64, false, false,
+ true,
+ 0x2p-64, false, false,
+ 0x2p-64, false, false,
+ 0x2p-64, false, false,
+ 0x2p-64, false, false,
+ true,
+ 0x2p-64, false, false,
+ 0x2p-64, false, false,
+ 0x2p-64, false, false,
+ 0x2p-64, false, false,
+ true,
+ 0x2p-64, false, false,
+ 0x2p-64, false, false,
+ 0x2p-64, false, false,
+ 0x2p-64, false, false),
TEST ("1.0842022371089897897127399001987457793916291848290711641311"
"645507812499e-19",
false,
- 0x2p-64, false,
- 0x2p-64, false,
- 0x2p-64, false,
- 0x2.000004p-64, false,
- false,
- 0x2.000001ffffffep-64, false,
- 0x2.000002p-64, false,
- 0x2.000001ffffffep-64, false,
- 0x2.000002p-64, false,
- false,
- 0x2.000001fffffffffcp-64, false,
- 0x2.000002p-64, false,
- 0x2.000001fffffffffcp-64, false,
- 0x2.000002p-64, false,
- false,
- 0x2.000001fffffffffcp-64, false,
- 0x2.000002p-64, false,
- 0x2.000001fffffffffcp-64, false,
- 0x2.000002p-64, false,
- false,
- 0x2.000001ffffffffffffffffffffp-64, false,
- 0x2.000002p-64, false,
- 0x2.000001ffffffffffffffffffffp-64, false,
- 0x2.000002p-64, false,
- false,
- 0x2.000001fffffffffffffffffffffep-64, false,
- 0x2.000002p-64, false,
- 0x2.000001fffffffffffffffffffffep-64, false,
- 0x2.000002p-64, false),
+ 0x2p-64, false, false,
+ 0x2p-64, false, false,
+ 0x2p-64, false, false,
+ 0x2.000004p-64, false, false,
+ false,
+ 0x2.000001ffffffep-64, false, false,
+ 0x2.000002p-64, false, false,
+ 0x2.000001ffffffep-64, false, false,
+ 0x2.000002p-64, false, false,
+ false,
+ 0x2.000001fffffffffcp-64, false, false,
+ 0x2.000002p-64, false, false,
+ 0x2.000001fffffffffcp-64, false, false,
+ 0x2.000002p-64, false, false,
+ false,
+ 0x2.000001fffffffffcp-64, false, false,
+ 0x2.000002p-64, false, false,
+ 0x2.000001fffffffffcp-64, false, false,
+ 0x2.000002p-64, false, false,
+ false,
+ 0x2.000001ffffffffffffffffffffp-64, false, false,
+ 0x2.000002p-64, false, false,
+ 0x2.000001ffffffffffffffffffffp-64, false, false,
+ 0x2.000002p-64, false, false,
+ false,
+ 0x2.000001fffffffffffffffffffffep-64, false, false,
+ 0x2.000002p-64, false, false,
+ 0x2.000001fffffffffffffffffffffep-64, false, false,
+ 0x2.000002p-64, false, false),
TEST ("1.0842022371089897897127399001987457793916291848290711641311"
"6455078125e-19",
false,
- 0x2p-64, false,
- 0x2p-64, false,
- 0x2p-64, false,
- 0x2.000004p-64, false,
- true,
- 0x2.000002p-64, false,
- 0x2.000002p-64, false,
- 0x2.000002p-64, false,
- 0x2.000002p-64, false,
- true,
- 0x2.000002p-64, false,
- 0x2.000002p-64, false,
- 0x2.000002p-64, false,
- 0x2.000002p-64, false,
- true,
- 0x2.000002p-64, false,
- 0x2.000002p-64, false,
- 0x2.000002p-64, false,
- 0x2.000002p-64, false,
- true,
- 0x2.000002p-64, false,
- 0x2.000002p-64, false,
- 0x2.000002p-64, false,
- 0x2.000002p-64, false,
- true,
- 0x2.000002p-64, false,
- 0x2.000002p-64, false,
- 0x2.000002p-64, false,
- 0x2.000002p-64, false),
+ 0x2p-64, false, false,
+ 0x2p-64, false, false,
+ 0x2p-64, false, false,
+ 0x2.000004p-64, false, false,
+ true,
+ 0x2.000002p-64, false, false,
+ 0x2.000002p-64, false, false,
+ 0x2.000002p-64, false, false,
+ 0x2.000002p-64, false, false,
+ true,
+ 0x2.000002p-64, false, false,
+ 0x2.000002p-64, false, false,
+ 0x2.000002p-64, false, false,
+ 0x2.000002p-64, false, false,
+ true,
+ 0x2.000002p-64, false, false,
+ 0x2.000002p-64, false, false,
+ 0x2.000002p-64, false, false,
+ 0x2.000002p-64, false, false,
+ true,
+ 0x2.000002p-64, false, false,
+ 0x2.000002p-64, false, false,
+ 0x2.000002p-64, false, false,
+ 0x2.000002p-64, false, false,
+ true,
+ 0x2.000002p-64, false, false,
+ 0x2.000002p-64, false, false,
+ 0x2.000002p-64, false, false,
+ 0x2.000002p-64, false, false),
TEST ("1.0842022371089897897127399001987457793916291848290711641311"
"645507812501e-19",
false,
- 0x2p-64, false,
- 0x2.000004p-64, false,
- 0x2p-64, false,
- 0x2.000004p-64, false,
- false,
- 0x2.000002p-64, false,
- 0x2.000002p-64, false,
- 0x2.000002p-64, false,
- 0x2.0000020000002p-64, false,
- false,
- 0x2.000002p-64, false,
- 0x2.000002p-64, false,
- 0x2.000002p-64, false,
- 0x2.0000020000000004p-64, false,
- false,
- 0x2.000002p-64, false,
- 0x2.000002p-64, false,
- 0x2.000002p-64, false,
- 0x2.0000020000000004p-64, false,
- false,
- 0x2.000002p-64, false,
- 0x2.000002p-64, false,
- 0x2.000002p-64, false,
- 0x2.00000200000000000000000001p-64, false,
- false,
- 0x2.000002p-64, false,
- 0x2.000002p-64, false,
- 0x2.000002p-64, false,
- 0x2.0000020000000000000000000002p-64, false),
+ 0x2p-64, false, false,
+ 0x2.000004p-64, false, false,
+ 0x2p-64, false, false,
+ 0x2.000004p-64, false, false,
+ false,
+ 0x2.000002p-64, false, false,
+ 0x2.000002p-64, false, false,
+ 0x2.000002p-64, false, false,
+ 0x2.0000020000002p-64, false, false,
+ false,
+ 0x2.000002p-64, false, false,
+ 0x2.000002p-64, false, false,
+ 0x2.000002p-64, false, false,
+ 0x2.0000020000000004p-64, false, false,
+ false,
+ 0x2.000002p-64, false, false,
+ 0x2.000002p-64, false, false,
+ 0x2.000002p-64, false, false,
+ 0x2.0000020000000004p-64, false, false,
+ false,
+ 0x2.000002p-64, false, false,
+ 0x2.000002p-64, false, false,
+ 0x2.000002p-64, false, false,
+ 0x2.00000200000000000000000001p-64, false, false,
+ false,
+ 0x2.000002p-64, false, false,
+ 0x2.000002p-64, false, false,
+ 0x2.000002p-64, false, false,
+ 0x2.0000020000000000000000000002p-64, false, false),
TEST ("1.0842023017324751454180269995275498473574771196581423282623"
"291015625e-19",
true,
- 0x2.000004p-64, false,
- 0x2.000004p-64, false,
- 0x2.000004p-64, false,
- 0x2.000004p-64, false,
- true,
- 0x2.000004p-64, false,
- 0x2.000004p-64, false,
- 0x2.000004p-64, false,
- 0x2.000004p-64, false,
- true,
- 0x2.000004p-64, false,
- 0x2.000004p-64, false,
- 0x2.000004p-64, false,
- 0x2.000004p-64, false,
- true,
- 0x2.000004p-64, false,
- 0x2.000004p-64, false,
- 0x2.000004p-64, false,
- 0x2.000004p-64, false,
- true,
- 0x2.000004p-64, false,
- 0x2.000004p-64, false,
- 0x2.000004p-64, false,
- 0x2.000004p-64, false,
- true,
- 0x2.000004p-64, false,
- 0x2.000004p-64, false,
- 0x2.000004p-64, false,
- 0x2.000004p-64, false),
+ 0x2.000004p-64, false, false,
+ 0x2.000004p-64, false, false,
+ 0x2.000004p-64, false, false,
+ 0x2.000004p-64, false, false,
+ true,
+ 0x2.000004p-64, false, false,
+ 0x2.000004p-64, false, false,
+ 0x2.000004p-64, false, false,
+ 0x2.000004p-64, false, false,
+ true,
+ 0x2.000004p-64, false, false,
+ 0x2.000004p-64, false, false,
+ 0x2.000004p-64, false, false,
+ 0x2.000004p-64, false, false,
+ true,
+ 0x2.000004p-64, false, false,
+ 0x2.000004p-64, false, false,
+ 0x2.000004p-64, false, false,
+ 0x2.000004p-64, false, false,
+ true,
+ 0x2.000004p-64, false, false,
+ 0x2.000004p-64, false, false,
+ 0x2.000004p-64, false, false,
+ 0x2.000004p-64, false, false,
+ true,
+ 0x2.000004p-64, false, false,
+ 0x2.000004p-64, false, false,
+ 0x2.000004p-64, false, false,
+ 0x2.000004p-64, false, false),
TEST ("1.0842023663559605011233140988563539153233250544872134923934"
"936523437499e-19",
false,
- 0x2.000004p-64, false,
- 0x2.000004p-64, false,
- 0x2.000004p-64, false,
- 0x2.000008p-64, false,
- false,
- 0x2.000005ffffffep-64, false,
- 0x2.000006p-64, false,
- 0x2.000005ffffffep-64, false,
- 0x2.000006p-64, false,
- false,
- 0x2.000005fffffffffcp-64, false,
- 0x2.000006p-64, false,
- 0x2.000005fffffffffcp-64, false,
- 0x2.000006p-64, false,
- false,
- 0x2.000005fffffffffcp-64, false,
- 0x2.000006p-64, false,
- 0x2.000005fffffffffcp-64, false,
- 0x2.000006p-64, false,
- false,
- 0x2.000005ffffffffffffffffffffp-64, false,
- 0x2.000006p-64, false,
- 0x2.000005ffffffffffffffffffffp-64, false,
- 0x2.000006p-64, false,
- false,
- 0x2.000005fffffffffffffffffffffep-64, false,
- 0x2.000006p-64, false,
- 0x2.000005fffffffffffffffffffffep-64, false,
- 0x2.000006p-64, false),
+ 0x2.000004p-64, false, false,
+ 0x2.000004p-64, false, false,
+ 0x2.000004p-64, false, false,
+ 0x2.000008p-64, false, false,
+ false,
+ 0x2.000005ffffffep-64, false, false,
+ 0x2.000006p-64, false, false,
+ 0x2.000005ffffffep-64, false, false,
+ 0x2.000006p-64, false, false,
+ false,
+ 0x2.000005fffffffffcp-64, false, false,
+ 0x2.000006p-64, false, false,
+ 0x2.000005fffffffffcp-64, false, false,
+ 0x2.000006p-64, false, false,
+ false,
+ 0x2.000005fffffffffcp-64, false, false,
+ 0x2.000006p-64, false, false,
+ 0x2.000005fffffffffcp-64, false, false,
+ 0x2.000006p-64, false, false,
+ false,
+ 0x2.000005ffffffffffffffffffffp-64, false, false,
+ 0x2.000006p-64, false, false,
+ 0x2.000005ffffffffffffffffffffp-64, false, false,
+ 0x2.000006p-64, false, false,
+ false,
+ 0x2.000005fffffffffffffffffffffep-64, false, false,
+ 0x2.000006p-64, false, false,
+ 0x2.000005fffffffffffffffffffffep-64, false, false,
+ 0x2.000006p-64, false, false),
TEST ("1.0842023663559605011233140988563539153233250544872134923934"
"9365234375e-19",
false,
- 0x2.000004p-64, false,
- 0x2.000008p-64, false,
- 0x2.000004p-64, false,
- 0x2.000008p-64, false,
- true,
- 0x2.000006p-64, false,
- 0x2.000006p-64, false,
- 0x2.000006p-64, false,
- 0x2.000006p-64, false,
- true,
- 0x2.000006p-64, false,
- 0x2.000006p-64, false,
- 0x2.000006p-64, false,
- 0x2.000006p-64, false,
- true,
- 0x2.000006p-64, false,
- 0x2.000006p-64, false,
- 0x2.000006p-64, false,
- 0x2.000006p-64, false,
- true,
- 0x2.000006p-64, false,
- 0x2.000006p-64, false,
- 0x2.000006p-64, false,
- 0x2.000006p-64, false,
- true,
- 0x2.000006p-64, false,
- 0x2.000006p-64, false,
- 0x2.000006p-64, false,
- 0x2.000006p-64, false),
+ 0x2.000004p-64, false, false,
+ 0x2.000008p-64, false, false,
+ 0x2.000004p-64, false, false,
+ 0x2.000008p-64, false, false,
+ true,
+ 0x2.000006p-64, false, false,
+ 0x2.000006p-64, false, false,
+ 0x2.000006p-64, false, false,
+ 0x2.000006p-64, false, false,
+ true,
+ 0x2.000006p-64, false, false,
+ 0x2.000006p-64, false, false,
+ 0x2.000006p-64, false, false,
+ 0x2.000006p-64, false, false,
+ true,
+ 0x2.000006p-64, false, false,
+ 0x2.000006p-64, false, false,
+ 0x2.000006p-64, false, false,
+ 0x2.000006p-64, false, false,
+ true,
+ 0x2.000006p-64, false, false,
+ 0x2.000006p-64, false, false,
+ 0x2.000006p-64, false, false,
+ 0x2.000006p-64, false, false,
+ true,
+ 0x2.000006p-64, false, false,
+ 0x2.000006p-64, false, false,
+ 0x2.000006p-64, false, false,
+ 0x2.000006p-64, false, false),
TEST ("1.0842023663559605011233140988563539153233250544872134923934"
"936523437501e-19",
false,
- 0x2.000004p-64, false,
- 0x2.000008p-64, false,
- 0x2.000004p-64, false,
- 0x2.000008p-64, false,
- false,
- 0x2.000006p-64, false,
- 0x2.000006p-64, false,
- 0x2.000006p-64, false,
- 0x2.0000060000002p-64, false,
- false,
- 0x2.000006p-64, false,
- 0x2.000006p-64, false,
- 0x2.000006p-64, false,
- 0x2.0000060000000004p-64, false,
- false,
- 0x2.000006p-64, false,
- 0x2.000006p-64, false,
- 0x2.000006p-64, false,
- 0x2.0000060000000004p-64, false,
- false,
- 0x2.000006p-64, false,
- 0x2.000006p-64, false,
- 0x2.000006p-64, false,
- 0x2.00000600000000000000000001p-64, false,
- false,
- 0x2.000006p-64, false,
- 0x2.000006p-64, false,
- 0x2.000006p-64, false,
- 0x2.0000060000000000000000000002p-64, false),
+ 0x2.000004p-64, false, false,
+ 0x2.000008p-64, false, false,
+ 0x2.000004p-64, false, false,
+ 0x2.000008p-64, false, false,
+ false,
+ 0x2.000006p-64, false, false,
+ 0x2.000006p-64, false, false,
+ 0x2.000006p-64, false, false,
+ 0x2.0000060000002p-64, false, false,
+ false,
+ 0x2.000006p-64, false, false,
+ 0x2.000006p-64, false, false,
+ 0x2.000006p-64, false, false,
+ 0x2.0000060000000004p-64, false, false,
+ false,
+ 0x2.000006p-64, false, false,
+ 0x2.000006p-64, false, false,
+ 0x2.000006p-64, false, false,
+ 0x2.0000060000000004p-64, false, false,
+ false,
+ 0x2.000006p-64, false, false,
+ 0x2.000006p-64, false, false,
+ 0x2.000006p-64, false, false,
+ 0x2.00000600000000000000000001p-64, false, false,
+ false,
+ 0x2.000006p-64, false, false,
+ 0x2.000006p-64, false, false,
+ 0x2.000006p-64, false, false,
+ 0x2.0000060000000000000000000002p-64, false, false),
TEST ("1.0842024309794458568286011981851579832891729893162846565246"
"58203125e-19",
true,
- 0x2.000008p-64, false,
- 0x2.000008p-64, false,
- 0x2.000008p-64, false,
- 0x2.000008p-64, false,
- true,
- 0x2.000008p-64, false,
- 0x2.000008p-64, false,
- 0x2.000008p-64, false,
- 0x2.000008p-64, false,
- true,
- 0x2.000008p-64, false,
- 0x2.000008p-64, false,
- 0x2.000008p-64, false,
- 0x2.000008p-64, false,
- true,
- 0x2.000008p-64, false,
- 0x2.000008p-64, false,
- 0x2.000008p-64, false,
- 0x2.000008p-64, false,
- true,
- 0x2.000008p-64, false,
- 0x2.000008p-64, false,
- 0x2.000008p-64, false,
- 0x2.000008p-64, false,
- true,
- 0x2.000008p-64, false,
- 0x2.000008p-64, false,
- 0x2.000008p-64, false,
- 0x2.000008p-64, false),
+ 0x2.000008p-64, false, false,
+ 0x2.000008p-64, false, false,
+ 0x2.000008p-64, false, false,
+ 0x2.000008p-64, false, false,
+ true,
+ 0x2.000008p-64, false, false,
+ 0x2.000008p-64, false, false,
+ 0x2.000008p-64, false, false,
+ 0x2.000008p-64, false, false,
+ true,
+ 0x2.000008p-64, false, false,
+ 0x2.000008p-64, false, false,
+ 0x2.000008p-64, false, false,
+ 0x2.000008p-64, false, false,
+ true,
+ 0x2.000008p-64, false, false,
+ 0x2.000008p-64, false, false,
+ 0x2.000008p-64, false, false,
+ 0x2.000008p-64, false, false,
+ true,
+ 0x2.000008p-64, false, false,
+ 0x2.000008p-64, false, false,
+ 0x2.000008p-64, false, false,
+ 0x2.000008p-64, false, false,
+ true,
+ 0x2.000008p-64, false, false,
+ 0x2.000008p-64, false, false,
+ 0x2.000008p-64, false, false,
+ 0x2.000008p-64, false, false),
TEST ("7.5231638452626400509999138382223723380394595633413601376560"
"1092018187046051025390625e-37",
true,
- 0x1p-120, false,
- 0x1p-120, false,
- 0x1p-120, false,
- 0x1p-120, false,
- true,
- 0x1p-120, false,
- 0x1p-120, false,
- 0x1p-120, false,
- 0x1p-120, false,
- true,
- 0x1p-120, false,
- 0x1p-120, false,
- 0x1p-120, false,
- 0x1p-120, false,
- true,
- 0x1p-120, false,
- 0x1p-120, false,
- 0x1p-120, false,
- 0x1p-120, false,
- true,
- 0x1p-120, false,
- 0x1p-120, false,
- 0x1p-120, false,
- 0x1p-120, false,
- true,
- 0x1p-120, false,
- 0x1p-120, false,
- 0x1p-120, false,
- 0x1p-120, false),
+ 0x1p-120, false, false,
+ 0x1p-120, false, false,
+ 0x1p-120, false, false,
+ 0x1p-120, false, false,
+ true,
+ 0x1p-120, false, false,
+ 0x1p-120, false, false,
+ 0x1p-120, false, false,
+ 0x1p-120, false, false,
+ true,
+ 0x1p-120, false, false,
+ 0x1p-120, false, false,
+ 0x1p-120, false, false,
+ 0x1p-120, false, false,
+ true,
+ 0x1p-120, false, false,
+ 0x1p-120, false, false,
+ 0x1p-120, false, false,
+ 0x1p-120, false, false,
+ true,
+ 0x1p-120, false, false,
+ 0x1p-120, false, false,
+ 0x1p-120, false, false,
+ 0x1p-120, false, false,
+ true,
+ 0x1p-120, false, false,
+ 0x1p-120, false, false,
+ 0x1p-120, false, false,
+ 0x1p-120, false, false),
TEST ("7.5231642936781486349413765338158389908126215730251815381410"
"578824437213052434003657253924757242202758789062499e-37",
false,
- 0x1p-120, false,
- 0x1p-120, false,
- 0x1p-120, false,
- 0x1.000002p-120, false,
- false,
- 0x1.000000fffffffp-120, false,
- 0x1.000001p-120, false,
- 0x1.000000fffffffp-120, false,
- 0x1.000001p-120, false,
- false,
- 0x1.000000fffffffffep-120, false,
- 0x1.000001p-120, false,
- 0x1.000000fffffffffep-120, false,
- 0x1.000001p-120, false,
- false,
- 0x1.000000fffffffffep-120, false,
- 0x1.000001p-120, false,
- 0x1.000000fffffffffep-120, false,
- 0x1.000001p-120, false,
- false,
- 0x1.000000ffffffffffffffffffff8p-120, false,
- 0x1.000001p-120, false,
- 0x1.000000ffffffffffffffffffff8p-120, false,
- 0x1.000001p-120, false,
- false,
- 0x1.000000ffffffffffffffffffffffp-120, false,
- 0x1.000001p-120, false,
- 0x1.000000ffffffffffffffffffffffp-120, false,
- 0x1.000001p-120, false),
+ 0x1p-120, false, false,
+ 0x1p-120, false, false,
+ 0x1p-120, false, false,
+ 0x1.000002p-120, false, false,
+ false,
+ 0x1.000000fffffffp-120, false, false,
+ 0x1.000001p-120, false, false,
+ 0x1.000000fffffffp-120, false, false,
+ 0x1.000001p-120, false, false,
+ false,
+ 0x1.000000fffffffffep-120, false, false,
+ 0x1.000001p-120, false, false,
+ 0x1.000000fffffffffep-120, false, false,
+ 0x1.000001p-120, false, false,
+ false,
+ 0x1.000000fffffffffep-120, false, false,
+ 0x1.000001p-120, false, false,
+ 0x1.000000fffffffffep-120, false, false,
+ 0x1.000001p-120, false, false,
+ false,
+ 0x1.000000ffffffffffffffffffff8p-120, false, false,
+ 0x1.000001p-120, false, false,
+ 0x1.000000ffffffffffffffffffff8p-120, false, false,
+ 0x1.000001p-120, false, false,
+ false,
+ 0x1.000000ffffffffffffffffffffffp-120, false, false,
+ 0x1.000001p-120, false, false,
+ 0x1.000000ffffffffffffffffffffffp-120, false, false,
+ 0x1.000001p-120, false, false),
TEST ("7.5231642936781486349413765338158389908126215730251815381410"
"5788244372130524340036572539247572422027587890625e-37",
false,
- 0x1p-120, false,
- 0x1p-120, false,
- 0x1p-120, false,
- 0x1.000002p-120, false,
- true,
- 0x1.000001p-120, false,
- 0x1.000001p-120, false,
- 0x1.000001p-120, false,
- 0x1.000001p-120, false,
- true,
- 0x1.000001p-120, false,
- 0x1.000001p-120, false,
- 0x1.000001p-120, false,
- 0x1.000001p-120, false,
- true,
- 0x1.000001p-120, false,
- 0x1.000001p-120, false,
- 0x1.000001p-120, false,
- 0x1.000001p-120, false,
- true,
- 0x1.000001p-120, false,
- 0x1.000001p-120, false,
- 0x1.000001p-120, false,
- 0x1.000001p-120, false,
- true,
- 0x1.000001p-120, false,
- 0x1.000001p-120, false,
- 0x1.000001p-120, false,
- 0x1.000001p-120, false),
+ 0x1p-120, false, false,
+ 0x1p-120, false, false,
+ 0x1p-120, false, false,
+ 0x1.000002p-120, false, false,
+ true,
+ 0x1.000001p-120, false, false,
+ 0x1.000001p-120, false, false,
+ 0x1.000001p-120, false, false,
+ 0x1.000001p-120, false, false,
+ true,
+ 0x1.000001p-120, false, false,
+ 0x1.000001p-120, false, false,
+ 0x1.000001p-120, false, false,
+ 0x1.000001p-120, false, false,
+ true,
+ 0x1.000001p-120, false, false,
+ 0x1.000001p-120, false, false,
+ 0x1.000001p-120, false, false,
+ 0x1.000001p-120, false, false,
+ true,
+ 0x1.000001p-120, false, false,
+ 0x1.000001p-120, false, false,
+ 0x1.000001p-120, false, false,
+ 0x1.000001p-120, false, false,
+ true,
+ 0x1.000001p-120, false, false,
+ 0x1.000001p-120, false, false,
+ 0x1.000001p-120, false, false,
+ 0x1.000001p-120, false, false),
TEST ("7.5231642936781486349413765338158389908126215730251815381410"
"578824437213052434003657253924757242202758789062501e-37",
false,
- 0x1p-120, false,
- 0x1.000002p-120, false,
- 0x1p-120, false,
- 0x1.000002p-120, false,
- false,
- 0x1.000001p-120, false,
- 0x1.000001p-120, false,
- 0x1.000001p-120, false,
- 0x1.0000010000001p-120, false,
- false,
- 0x1.000001p-120, false,
- 0x1.000001p-120, false,
- 0x1.000001p-120, false,
- 0x1.0000010000000002p-120, false,
- false,
- 0x1.000001p-120, false,
- 0x1.000001p-120, false,
- 0x1.000001p-120, false,
- 0x1.0000010000000002p-120, false,
- false,
- 0x1.000001p-120, false,
- 0x1.000001p-120, false,
- 0x1.000001p-120, false,
- 0x1.000001000000000000000000008p-120, false,
- false,
- 0x1.000001p-120, false,
- 0x1.000001p-120, false,
- 0x1.000001p-120, false,
- 0x1.0000010000000000000000000001p-120, false),
+ 0x1p-120, false, false,
+ 0x1.000002p-120, false, false,
+ 0x1p-120, false, false,
+ 0x1.000002p-120, false, false,
+ false,
+ 0x1.000001p-120, false, false,
+ 0x1.000001p-120, false, false,
+ 0x1.000001p-120, false, false,
+ 0x1.0000010000001p-120, false, false,
+ false,
+ 0x1.000001p-120, false, false,
+ 0x1.000001p-120, false, false,
+ 0x1.000001p-120, false, false,
+ 0x1.0000010000000002p-120, false, false,
+ false,
+ 0x1.000001p-120, false, false,
+ 0x1.000001p-120, false, false,
+ 0x1.000001p-120, false, false,
+ 0x1.0000010000000002p-120, false, false,
+ false,
+ 0x1.000001p-120, false, false,
+ 0x1.000001p-120, false, false,
+ 0x1.000001p-120, false, false,
+ 0x1.000001000000000000000000008p-120, false, false,
+ false,
+ 0x1.000001p-120, false, false,
+ 0x1.000001p-120, false, false,
+ 0x1.000001p-120, false, false,
+ 0x1.0000010000000000000000000001p-120, false, false),
TEST ("7.5231647420936572188828392294093056435857835827090029386261"
"048447055721499765468252007849514484405517578125e-37",
true,
- 0x1.000002p-120, false,
- 0x1.000002p-120, false,
- 0x1.000002p-120, false,
- 0x1.000002p-120, false,
- true,
- 0x1.000002p-120, false,
- 0x1.000002p-120, false,
- 0x1.000002p-120, false,
- 0x1.000002p-120, false,
- true,
- 0x1.000002p-120, false,
- 0x1.000002p-120, false,
- 0x1.000002p-120, false,
- 0x1.000002p-120, false,
- true,
- 0x1.000002p-120, false,
- 0x1.000002p-120, false,
- 0x1.000002p-120, false,
- 0x1.000002p-120, false,
- true,
- 0x1.000002p-120, false,
- 0x1.000002p-120, false,
- 0x1.000002p-120, false,
- 0x1.000002p-120, false,
- true,
- 0x1.000002p-120, false,
- 0x1.000002p-120, false,
- 0x1.000002p-120, false,
- 0x1.000002p-120, false),
+ 0x1.000002p-120, false, false,
+ 0x1.000002p-120, false, false,
+ 0x1.000002p-120, false, false,
+ 0x1.000002p-120, false, false,
+ true,
+ 0x1.000002p-120, false, false,
+ 0x1.000002p-120, false, false,
+ 0x1.000002p-120, false, false,
+ 0x1.000002p-120, false, false,
+ true,
+ 0x1.000002p-120, false, false,
+ 0x1.000002p-120, false, false,
+ 0x1.000002p-120, false, false,
+ 0x1.000002p-120, false, false,
+ true,
+ 0x1.000002p-120, false, false,
+ 0x1.000002p-120, false, false,
+ 0x1.000002p-120, false, false,
+ 0x1.000002p-120, false, false,
+ true,
+ 0x1.000002p-120, false, false,
+ 0x1.000002p-120, false, false,
+ 0x1.000002p-120, false, false,
+ 0x1.000002p-120, false, false,
+ true,
+ 0x1.000002p-120, false, false,
+ 0x1.000002p-120, false, false,
+ 0x1.000002p-120, false, false,
+ 0x1.000002p-120, false, false),
TEST ("7.5231651905091658028243019250027722963589455923928243391111"
"518069674229947096932846761774271726608276367187499e-37",
false,
- 0x1.000002p-120, false,
- 0x1.000002p-120, false,
- 0x1.000002p-120, false,
- 0x1.000004p-120, false,
- false,
- 0x1.000002fffffffp-120, false,
- 0x1.000003p-120, false,
- 0x1.000002fffffffp-120, false,
- 0x1.000003p-120, false,
- false,
- 0x1.000002fffffffffep-120, false,
- 0x1.000003p-120, false,
- 0x1.000002fffffffffep-120, false,
- 0x1.000003p-120, false,
- false,
- 0x1.000002fffffffffep-120, false,
- 0x1.000003p-120, false,
- 0x1.000002fffffffffep-120, false,
- 0x1.000003p-120, false,
- false,
- 0x1.000002ffffffffffffffffffff8p-120, false,
- 0x1.000003p-120, false,
- 0x1.000002ffffffffffffffffffff8p-120, false,
- 0x1.000003p-120, false,
- false,
- 0x1.000002ffffffffffffffffffffffp-120, false,
- 0x1.000003p-120, false,
- 0x1.000002ffffffffffffffffffffffp-120, false,
- 0x1.000003p-120, false),
+ 0x1.000002p-120, false, false,
+ 0x1.000002p-120, false, false,
+ 0x1.000002p-120, false, false,
+ 0x1.000004p-120, false, false,
+ false,
+ 0x1.000002fffffffp-120, false, false,
+ 0x1.000003p-120, false, false,
+ 0x1.000002fffffffp-120, false, false,
+ 0x1.000003p-120, false, false,
+ false,
+ 0x1.000002fffffffffep-120, false, false,
+ 0x1.000003p-120, false, false,
+ 0x1.000002fffffffffep-120, false, false,
+ 0x1.000003p-120, false, false,
+ false,
+ 0x1.000002fffffffffep-120, false, false,
+ 0x1.000003p-120, false, false,
+ 0x1.000002fffffffffep-120, false, false,
+ 0x1.000003p-120, false, false,
+ false,
+ 0x1.000002ffffffffffffffffffff8p-120, false, false,
+ 0x1.000003p-120, false, false,
+ 0x1.000002ffffffffffffffffffff8p-120, false, false,
+ 0x1.000003p-120, false, false,
+ false,
+ 0x1.000002ffffffffffffffffffffffp-120, false, false,
+ 0x1.000003p-120, false, false,
+ 0x1.000002ffffffffffffffffffffffp-120, false, false,
+ 0x1.000003p-120, false, false),
TEST ("7.5231651905091658028243019250027722963589455923928243391111"
"5180696742299470969328467617742717266082763671875e-37",
false,
- 0x1.000002p-120, false,
- 0x1.000004p-120, false,
- 0x1.000002p-120, false,
- 0x1.000004p-120, false,
- true,
- 0x1.000003p-120, false,
- 0x1.000003p-120, false,
- 0x1.000003p-120, false,
- 0x1.000003p-120, false,
- true,
- 0x1.000003p-120, false,
- 0x1.000003p-120, false,
- 0x1.000003p-120, false,
- 0x1.000003p-120, false,
- true,
- 0x1.000003p-120, false,
- 0x1.000003p-120, false,
- 0x1.000003p-120, false,
- 0x1.000003p-120, false,
- true,
- 0x1.000003p-120, false,
- 0x1.000003p-120, false,
- 0x1.000003p-120, false,
- 0x1.000003p-120, false,
- true,
- 0x1.000003p-120, false,
- 0x1.000003p-120, false,
- 0x1.000003p-120, false,
- 0x1.000003p-120, false),
+ 0x1.000002p-120, false, false,
+ 0x1.000004p-120, false, false,
+ 0x1.000002p-120, false, false,
+ 0x1.000004p-120, false, false,
+ true,
+ 0x1.000003p-120, false, false,
+ 0x1.000003p-120, false, false,
+ 0x1.000003p-120, false, false,
+ 0x1.000003p-120, false, false,
+ true,
+ 0x1.000003p-120, false, false,
+ 0x1.000003p-120, false, false,
+ 0x1.000003p-120, false, false,
+ 0x1.000003p-120, false, false,
+ true,
+ 0x1.000003p-120, false, false,
+ 0x1.000003p-120, false, false,
+ 0x1.000003p-120, false, false,
+ 0x1.000003p-120, false, false,
+ true,
+ 0x1.000003p-120, false, false,
+ 0x1.000003p-120, false, false,
+ 0x1.000003p-120, false, false,
+ 0x1.000003p-120, false, false,
+ true,
+ 0x1.000003p-120, false, false,
+ 0x1.000003p-120, false, false,
+ 0x1.000003p-120, false, false,
+ 0x1.000003p-120, false, false),
TEST ("7.5231651905091658028243019250027722963589455923928243391111"
"518069674229947096932846761774271726608276367187501e-37",
false,
- 0x1.000002p-120, false,
- 0x1.000004p-120, false,
- 0x1.000002p-120, false,
- 0x1.000004p-120, false,
- false,
- 0x1.000003p-120, false,
- 0x1.000003p-120, false,
- 0x1.000003p-120, false,
- 0x1.0000030000001p-120, false,
- false,
- 0x1.000003p-120, false,
- 0x1.000003p-120, false,
- 0x1.000003p-120, false,
- 0x1.0000030000000002p-120, false,
- false,
- 0x1.000003p-120, false,
- 0x1.000003p-120, false,
- 0x1.000003p-120, false,
- 0x1.0000030000000002p-120, false,
- false,
- 0x1.000003p-120, false,
- 0x1.000003p-120, false,
- 0x1.000003p-120, false,
- 0x1.000003000000000000000000008p-120, false,
- false,
- 0x1.000003p-120, false,
- 0x1.000003p-120, false,
- 0x1.000003p-120, false,
- 0x1.0000030000000000000000000001p-120, false),
+ 0x1.000002p-120, false, false,
+ 0x1.000004p-120, false, false,
+ 0x1.000002p-120, false, false,
+ 0x1.000004p-120, false, false,
+ false,
+ 0x1.000003p-120, false, false,
+ 0x1.000003p-120, false, false,
+ 0x1.000003p-120, false, false,
+ 0x1.0000030000001p-120, false, false,
+ false,
+ 0x1.000003p-120, false, false,
+ 0x1.000003p-120, false, false,
+ 0x1.000003p-120, false, false,
+ 0x1.0000030000000002p-120, false, false,
+ false,
+ 0x1.000003p-120, false, false,
+ 0x1.000003p-120, false, false,
+ 0x1.000003p-120, false, false,
+ 0x1.0000030000000002p-120, false, false,
+ false,
+ 0x1.000003p-120, false, false,
+ 0x1.000003p-120, false, false,
+ 0x1.000003p-120, false, false,
+ 0x1.000003000000000000000000008p-120, false, false,
+ false,
+ 0x1.000003p-120, false, false,
+ 0x1.000003p-120, false, false,
+ 0x1.000003p-120, false, false,
+ 0x1.0000030000000000000000000001p-120, false, false),
TEST ("7.5231656389246743867657646205962389491321076020766457395961"
"98769229273839442839744151569902896881103515625e-37",
true,
- 0x1.000004p-120, false,
- 0x1.000004p-120, false,
- 0x1.000004p-120, false,
- 0x1.000004p-120, false,
- true,
- 0x1.000004p-120, false,
- 0x1.000004p-120, false,
- 0x1.000004p-120, false,
- 0x1.000004p-120, false,
- true,
- 0x1.000004p-120, false,
- 0x1.000004p-120, false,
- 0x1.000004p-120, false,
- 0x1.000004p-120, false,
- true,
- 0x1.000004p-120, false,
- 0x1.000004p-120, false,
- 0x1.000004p-120, false,
- 0x1.000004p-120, false,
- true,
- 0x1.000004p-120, false,
- 0x1.000004p-120, false,
- 0x1.000004p-120, false,
- 0x1.000004p-120, false,
- true,
- 0x1.000004p-120, false,
- 0x1.000004p-120, false,
- 0x1.000004p-120, false,
- 0x1.000004p-120, false),
+ 0x1.000004p-120, false, false,
+ 0x1.000004p-120, false, false,
+ 0x1.000004p-120, false, false,
+ 0x1.000004p-120, false, false,
+ true,
+ 0x1.000004p-120, false, false,
+ 0x1.000004p-120, false, false,
+ 0x1.000004p-120, false, false,
+ 0x1.000004p-120, false, false,
+ true,
+ 0x1.000004p-120, false, false,
+ 0x1.000004p-120, false, false,
+ 0x1.000004p-120, false, false,
+ 0x1.000004p-120, false, false,
+ true,
+ 0x1.000004p-120, false, false,
+ 0x1.000004p-120, false, false,
+ 0x1.000004p-120, false, false,
+ 0x1.000004p-120, false, false,
+ true,
+ 0x1.000004p-120, false, false,
+ 0x1.000004p-120, false, false,
+ 0x1.000004p-120, false, false,
+ 0x1.000004p-120, false, false,
+ true,
+ 0x1.000004p-120, false, false,
+ 0x1.000004p-120, false, false,
+ 0x1.000004p-120, false, false,
+ 0x1.000004p-120, false, false),
TEST ("340282356779733661637539395458142568447.999",
false,
- 0xf.fffffp+124, false,
- 0xf.fffffp+124, false,
- 0xf.fffffp+124, false,
- INF, true,
- false,
- 0xf.fffff7ffffff8p+124, false,
- 0xf.fffff8p+124, false,
- 0xf.fffff7ffffff8p+124, false,
- 0xf.fffff8p+124, false,
- false,
- 0xf.fffff7fffffffffp+124, false,
- 0xf.fffff8p+124, false,
- 0xf.fffff7fffffffffp+124, false,
- 0xf.fffff8p+124, false,
- false,
- 0xf.fffff7fffffffffp+124, false,
- 0xf.fffff8p+124, false,
- 0xf.fffff7fffffffffp+124, false,
- 0xf.fffff8p+124, false,
- false,
- 0xf.fffff7fffffffffffffffffffcp+124, false,
- 0xf.fffff8p+124, false,
- 0xf.fffff7fffffffffffffffffffcp+124, false,
- 0xf.fffff8p+124, false,
- false,
- 0xf.fffff7fffffffffffffffffffff8p+124, false,
- 0xf.fffff8p+124, false,
- 0xf.fffff7fffffffffffffffffffff8p+124, false,
- 0xf.fffff8p+124, false),
+ 0xf.fffffp+124, false, false,
+ 0xf.fffffp+124, false, false,
+ 0xf.fffffp+124, false, false,
+ INF, true, false,
+ false,
+ 0xf.fffff7ffffff8p+124, false, false,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff7ffffff8p+124, false, false,
+ 0xf.fffff8p+124, false, false,
+ false,
+ 0xf.fffff7fffffffffp+124, false, false,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff7fffffffffp+124, false, false,
+ 0xf.fffff8p+124, false, false,
+ false,
+ 0xf.fffff7fffffffffp+124, false, false,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff7fffffffffp+124, false, false,
+ 0xf.fffff8p+124, false, false,
+ false,
+ 0xf.fffff7fffffffffffffffffffcp+124, false, false,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff7fffffffffffffffffffcp+124, false, false,
+ 0xf.fffff8p+124, false, false,
+ false,
+ 0xf.fffff7fffffffffffffffffffff8p+124, false, false,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff7fffffffffffffffffffff8p+124, false, false,
+ 0xf.fffff8p+124, false, false),
TEST ("340282356779733661637539395458142568448",
false,
- 0xf.fffffp+124, false,
- INF, true,
- 0xf.fffffp+124, false,
- INF, true,
- true,
- 0xf.fffff8p+124, false,
- 0xf.fffff8p+124, false,
- 0xf.fffff8p+124, false,
- 0xf.fffff8p+124, false,
- true,
- 0xf.fffff8p+124, false,
- 0xf.fffff8p+124, false,
- 0xf.fffff8p+124, false,
- 0xf.fffff8p+124, false,
- true,
- 0xf.fffff8p+124, false,
- 0xf.fffff8p+124, false,
- 0xf.fffff8p+124, false,
- 0xf.fffff8p+124, false,
- true,
- 0xf.fffff8p+124, false,
- 0xf.fffff8p+124, false,
- 0xf.fffff8p+124, false,
- 0xf.fffff8p+124, false,
- true,
- 0xf.fffff8p+124, false,
- 0xf.fffff8p+124, false,
- 0xf.fffff8p+124, false,
- 0xf.fffff8p+124, false),
+ 0xf.fffffp+124, false, false,
+ INF, true, false,
+ 0xf.fffffp+124, false, false,
+ INF, true, false,
+ true,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff8p+124, false, false,
+ true,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff8p+124, false, false,
+ true,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff8p+124, false, false,
+ true,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff8p+124, false, false,
+ true,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff8p+124, false, false),
TEST ("340282356779733661637539395458142568448.001",
false,
- 0xf.fffffp+124, false,
- INF, true,
- 0xf.fffffp+124, false,
- INF, true,
- false,
- 0xf.fffff8p+124, false,
- 0xf.fffff8p+124, false,
- 0xf.fffff8p+124, false,
- 0xf.fffff80000008p+124, false,
- false,
- 0xf.fffff8p+124, false,
- 0xf.fffff8p+124, false,
- 0xf.fffff8p+124, false,
- 0xf.fffff8000000001p+124, false,
- false,
- 0xf.fffff8p+124, false,
- 0xf.fffff8p+124, false,
- 0xf.fffff8p+124, false,
- 0xf.fffff8000000001p+124, false,
- false,
- 0xf.fffff8p+124, false,
- 0xf.fffff8p+124, false,
- 0xf.fffff8p+124, false,
- 0xf.fffff800000000000000000004p+124, false,
- false,
- 0xf.fffff8p+124, false,
- 0xf.fffff8p+124, false,
- 0xf.fffff8p+124, false,
- 0xf.fffff80000000000000000000008p+124, false),
+ 0xf.fffffp+124, false, false,
+ INF, true, false,
+ 0xf.fffffp+124, false, false,
+ INF, true, false,
+ false,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff80000008p+124, false, false,
+ false,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff8000000001p+124, false, false,
+ false,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff8000000001p+124, false, false,
+ false,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff800000000000000000004p+124, false, false,
+ false,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff80000000000000000000008p+124, false, false),
TEST ("-340282356779733661637539395458142568447.999",
false,
- -INF, true,
- -0xf.fffffp+124, false,
- -0xf.fffffp+124, false,
- -0xf.fffffp+124, false,
- false,
- -0xf.fffff8p+124, false,
- -0xf.fffff8p+124, false,
- -0xf.fffff7ffffff8p+124, false,
- -0xf.fffff7ffffff8p+124, false,
- false,
- -0xf.fffff8p+124, false,
- -0xf.fffff8p+124, false,
- -0xf.fffff7fffffffffp+124, false,
- -0xf.fffff7fffffffffp+124, false,
- false,
- -0xf.fffff8p+124, false,
- -0xf.fffff8p+124, false,
- -0xf.fffff7fffffffffp+124, false,
- -0xf.fffff7fffffffffp+124, false,
- false,
- -0xf.fffff8p+124, false,
- -0xf.fffff8p+124, false,
- -0xf.fffff7fffffffffffffffffffcp+124, false,
- -0xf.fffff7fffffffffffffffffffcp+124, false,
- false,
- -0xf.fffff8p+124, false,
- -0xf.fffff8p+124, false,
- -0xf.fffff7fffffffffffffffffffff8p+124, false,
- -0xf.fffff7fffffffffffffffffffff8p+124, false),
+ -INF, true, false,
+ -0xf.fffffp+124, false, false,
+ -0xf.fffffp+124, false, false,
+ -0xf.fffffp+124, false, false,
+ false,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff7ffffff8p+124, false, false,
+ -0xf.fffff7ffffff8p+124, false, false,
+ false,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff7fffffffffp+124, false, false,
+ -0xf.fffff7fffffffffp+124, false, false,
+ false,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff7fffffffffp+124, false, false,
+ -0xf.fffff7fffffffffp+124, false, false,
+ false,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff7fffffffffffffffffffcp+124, false, false,
+ -0xf.fffff7fffffffffffffffffffcp+124, false, false,
+ false,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff7fffffffffffffffffffff8p+124, false, false,
+ -0xf.fffff7fffffffffffffffffffff8p+124, false, false),
TEST ("-340282356779733661637539395458142568448",
false,
- -INF, true,
- -INF, true,
- -0xf.fffffp+124, false,
- -0xf.fffffp+124, false,
- true,
- -0xf.fffff8p+124, false,
- -0xf.fffff8p+124, false,
- -0xf.fffff8p+124, false,
- -0xf.fffff8p+124, false,
- true,
- -0xf.fffff8p+124, false,
- -0xf.fffff8p+124, false,
- -0xf.fffff8p+124, false,
- -0xf.fffff8p+124, false,
- true,
- -0xf.fffff8p+124, false,
- -0xf.fffff8p+124, false,
- -0xf.fffff8p+124, false,
- -0xf.fffff8p+124, false,
- true,
- -0xf.fffff8p+124, false,
- -0xf.fffff8p+124, false,
- -0xf.fffff8p+124, false,
- -0xf.fffff8p+124, false,
- true,
- -0xf.fffff8p+124, false,
- -0xf.fffff8p+124, false,
- -0xf.fffff8p+124, false,
- -0xf.fffff8p+124, false),
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffp+124, false, false,
+ -0xf.fffffp+124, false, false,
+ true,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff8p+124, false, false,
+ true,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff8p+124, false, false,
+ true,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff8p+124, false, false,
+ true,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff8p+124, false, false,
+ true,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff8p+124, false, false),
TEST ("-340282356779733661637539395458142568448.001",
false,
- -INF, true,
- -INF, true,
- -0xf.fffffp+124, false,
- -0xf.fffffp+124, false,
- false,
- -0xf.fffff80000008p+124, false,
- -0xf.fffff8p+124, false,
- -0xf.fffff8p+124, false,
- -0xf.fffff8p+124, false,
- false,
- -0xf.fffff8000000001p+124, false,
- -0xf.fffff8p+124, false,
- -0xf.fffff8p+124, false,
- -0xf.fffff8p+124, false,
- false,
- -0xf.fffff8000000001p+124, false,
- -0xf.fffff8p+124, false,
- -0xf.fffff8p+124, false,
- -0xf.fffff8p+124, false,
- false,
- -0xf.fffff800000000000000000004p+124, false,
- -0xf.fffff8p+124, false,
- -0xf.fffff8p+124, false,
- -0xf.fffff8p+124, false,
- false,
- -0xf.fffff80000000000000000000008p+124, false,
- -0xf.fffff8p+124, false,
- -0xf.fffff8p+124, false,
- -0xf.fffff8p+124, false),
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffp+124, false, false,
+ -0xf.fffffp+124, false, false,
+ false,
+ -0xf.fffff80000008p+124, false, false,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff8p+124, false, false,
+ false,
+ -0xf.fffff8000000001p+124, false, false,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff8p+124, false, false,
+ false,
+ -0xf.fffff8000000001p+124, false, false,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff8p+124, false, false,
+ false,
+ -0xf.fffff800000000000000000004p+124, false, false,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff8p+124, false, false,
+ false,
+ -0xf.fffff80000000000000000000008p+124, false, false,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff8p+124, false, false),
TEST ("179769313486231580793728971405303415079934132710037826936173"
"778980444968292764750946649017977587207096330286416692887910"
"946555547851940402630657488671505820681908902000708383676273"
@@ -1855,35 +1855,35 @@ static const struct test tests[] = {
"936475292719074168444365510704342711559699508093042880177904"
"174497791.999",
false,
- 0xf.fffffp+124, true,
- INF, true,
- 0xf.fffffp+124, true,
- INF, true,
- false,
- 0xf.ffffffffffff8p+1020, false,
- 0xf.ffffffffffff8p+1020, false,
- 0xf.ffffffffffff8p+1020, false,
- INF, true,
- false,
- 0xf.ffffffffffffbffp+1020, false,
- 0xf.ffffffffffffcp+1020, false,
- 0xf.ffffffffffffbffp+1020, false,
- 0xf.ffffffffffffcp+1020, false,
- false,
- 0xf.ffffffffffffbffp+1020, false,
- 0xf.ffffffffffffcp+1020, false,
- 0xf.ffffffffffffbffp+1020, false,
- 0xf.ffffffffffffcp+1020, false,
- false,
- 0xf.ffffffffffffbffffffffffffcp+1020, false,
- 0xf.ffffffffffffcp+1020, true,
- 0xf.ffffffffffffbffffffffffffcp+1020, false,
- 0xf.ffffffffffffcp+1020, true,
- false,
- 0xf.ffffffffffffbffffffffffffff8p+1020, false,
- 0xf.ffffffffffffcp+1020, false,
- 0xf.ffffffffffffbffffffffffffff8p+1020, false,
- 0xf.ffffffffffffcp+1020, false),
+ 0xf.fffffp+124, true, false,
+ INF, true, false,
+ 0xf.fffffp+124, true, false,
+ INF, true, false,
+ false,
+ 0xf.ffffffffffff8p+1020, false, false,
+ 0xf.ffffffffffff8p+1020, false, false,
+ 0xf.ffffffffffff8p+1020, false, false,
+ INF, true, false,
+ false,
+ 0xf.ffffffffffffbffp+1020, false, false,
+ 0xf.ffffffffffffcp+1020, false, false,
+ 0xf.ffffffffffffbffp+1020, false, false,
+ 0xf.ffffffffffffcp+1020, false, false,
+ false,
+ 0xf.ffffffffffffbffp+1020, false, false,
+ 0xf.ffffffffffffcp+1020, false, false,
+ 0xf.ffffffffffffbffp+1020, false, false,
+ 0xf.ffffffffffffcp+1020, false, false,
+ false,
+ 0xf.ffffffffffffbffffffffffffcp+1020, false, false,
+ 0xf.ffffffffffffcp+1020, true, false,
+ 0xf.ffffffffffffbffffffffffffcp+1020, false, false,
+ 0xf.ffffffffffffcp+1020, true, false,
+ false,
+ 0xf.ffffffffffffbffffffffffffff8p+1020, false, false,
+ 0xf.ffffffffffffcp+1020, false, false,
+ 0xf.ffffffffffffbffffffffffffff8p+1020, false, false,
+ 0xf.ffffffffffffcp+1020, false, false),
TEST ("179769313486231580793728971405303415079934132710037826936173"
"778980444968292764750946649017977587207096330286416692887910"
"946555547851940402630657488671505820681908902000708383676273"
@@ -1891,35 +1891,35 @@ static const struct test tests[] = {
"936475292719074168444365510704342711559699508093042880177904"
"174497792",
false,
- 0xf.fffffp+124, true,
- INF, true,
- 0xf.fffffp+124, true,
- INF, true,
- false,
- 0xf.ffffffffffff8p+1020, false,
- INF, true,
- 0xf.ffffffffffff8p+1020, false,
- INF, true,
- true,
- 0xf.ffffffffffffcp+1020, false,
- 0xf.ffffffffffffcp+1020, false,
- 0xf.ffffffffffffcp+1020, false,
- 0xf.ffffffffffffcp+1020, false,
- true,
- 0xf.ffffffffffffcp+1020, false,
- 0xf.ffffffffffffcp+1020, false,
- 0xf.ffffffffffffcp+1020, false,
- 0xf.ffffffffffffcp+1020, false,
- false,
- 0xf.ffffffffffffcp+1020, true,
- 0xf.ffffffffffffcp+1020, true,
- 0xf.ffffffffffffcp+1020, true,
- 0xf.ffffffffffffcp+1020, true,
- true,
- 0xf.ffffffffffffcp+1020, false,
- 0xf.ffffffffffffcp+1020, false,
- 0xf.ffffffffffffcp+1020, false,
- 0xf.ffffffffffffcp+1020, false),
+ 0xf.fffffp+124, true, false,
+ INF, true, false,
+ 0xf.fffffp+124, true, false,
+ INF, true, false,
+ false,
+ 0xf.ffffffffffff8p+1020, false, false,
+ INF, true, false,
+ 0xf.ffffffffffff8p+1020, false, false,
+ INF, true, false,
+ true,
+ 0xf.ffffffffffffcp+1020, false, false,
+ 0xf.ffffffffffffcp+1020, false, false,
+ 0xf.ffffffffffffcp+1020, false, false,
+ 0xf.ffffffffffffcp+1020, false, false,
+ true,
+ 0xf.ffffffffffffcp+1020, false, false,
+ 0xf.ffffffffffffcp+1020, false, false,
+ 0xf.ffffffffffffcp+1020, false, false,
+ 0xf.ffffffffffffcp+1020, false, false,
+ false,
+ 0xf.ffffffffffffcp+1020, true, false,
+ 0xf.ffffffffffffcp+1020, true, false,
+ 0xf.ffffffffffffcp+1020, true, false,
+ 0xf.ffffffffffffcp+1020, true, false,
+ true,
+ 0xf.ffffffffffffcp+1020, false, false,
+ 0xf.ffffffffffffcp+1020, false, false,
+ 0xf.ffffffffffffcp+1020, false, false,
+ 0xf.ffffffffffffcp+1020, false, false),
TEST ("179769313486231580793728971405303415079934132710037826936173"
"778980444968292764750946649017977587207096330286416692887910"
"946555547851940402630657488671505820681908902000708383676273"
@@ -1927,35 +1927,35 @@ static const struct test tests[] = {
"936475292719074168444365510704342711559699508093042880177904"
"174497792.001",
false,
- 0xf.fffffp+124, true,
- INF, true,
- 0xf.fffffp+124, true,
- INF, true,
- false,
- 0xf.ffffffffffff8p+1020, false,
- INF, true,
- 0xf.ffffffffffff8p+1020, false,
- INF, true,
- false,
- 0xf.ffffffffffffcp+1020, false,
- 0xf.ffffffffffffcp+1020, false,
- 0xf.ffffffffffffcp+1020, false,
- 0xf.ffffffffffffc01p+1020, false,
- false,
- 0xf.ffffffffffffcp+1020, false,
- 0xf.ffffffffffffcp+1020, false,
- 0xf.ffffffffffffcp+1020, false,
- 0xf.ffffffffffffc01p+1020, false,
- false,
- 0xf.ffffffffffffcp+1020, true,
- 0xf.ffffffffffffcp+1020, true,
- 0xf.ffffffffffffcp+1020, true,
- 0xf.ffffffffffffc0000000000004p+1020, true,
- false,
- 0xf.ffffffffffffcp+1020, false,
- 0xf.ffffffffffffcp+1020, false,
- 0xf.ffffffffffffcp+1020, false,
- 0xf.ffffffffffffc000000000000008p+1020, false),
+ 0xf.fffffp+124, true, false,
+ INF, true, false,
+ 0xf.fffffp+124, true, false,
+ INF, true, false,
+ false,
+ 0xf.ffffffffffff8p+1020, false, false,
+ INF, true, false,
+ 0xf.ffffffffffff8p+1020, false, false,
+ INF, true, false,
+ false,
+ 0xf.ffffffffffffcp+1020, false, false,
+ 0xf.ffffffffffffcp+1020, false, false,
+ 0xf.ffffffffffffcp+1020, false, false,
+ 0xf.ffffffffffffc01p+1020, false, false,
+ false,
+ 0xf.ffffffffffffcp+1020, false, false,
+ 0xf.ffffffffffffcp+1020, false, false,
+ 0xf.ffffffffffffcp+1020, false, false,
+ 0xf.ffffffffffffc01p+1020, false, false,
+ false,
+ 0xf.ffffffffffffcp+1020, true, false,
+ 0xf.ffffffffffffcp+1020, true, false,
+ 0xf.ffffffffffffcp+1020, true, false,
+ 0xf.ffffffffffffc0000000000004p+1020, true, false,
+ false,
+ 0xf.ffffffffffffcp+1020, false, false,
+ 0xf.ffffffffffffcp+1020, false, false,
+ 0xf.ffffffffffffcp+1020, false, false,
+ 0xf.ffffffffffffc000000000000008p+1020, false, false),
TEST ("-17976931348623158079372897140530341507993413271003782693617"
"377898044496829276475094664901797758720709633028641669288791"
"094655554785194040263065748867150582068190890200070838367627"
@@ -1963,35 +1963,35 @@ static const struct test tests[] = {
"493647529271907416844436551070434271155969950809304288017790"
"4174497791.999",
false,
- -INF, true,
- -INF, true,
- -0xf.fffffp+124, true,
- -0xf.fffffp+124, true,
- false,
- -INF, true,
- -0xf.ffffffffffff8p+1020, false,
- -0xf.ffffffffffff8p+1020, false,
- -0xf.ffffffffffff8p+1020, false,
- false,
- -0xf.ffffffffffffcp+1020, false,
- -0xf.ffffffffffffcp+1020, false,
- -0xf.ffffffffffffbffp+1020, false,
- -0xf.ffffffffffffbffp+1020, false,
- false,
- -0xf.ffffffffffffcp+1020, false,
- -0xf.ffffffffffffcp+1020, false,
- -0xf.ffffffffffffbffp+1020, false,
- -0xf.ffffffffffffbffp+1020, false,
- false,
- -0xf.ffffffffffffcp+1020, true,
- -0xf.ffffffffffffcp+1020, true,
- -0xf.ffffffffffffbffffffffffffcp+1020, false,
- -0xf.ffffffffffffbffffffffffffcp+1020, false,
- false,
- -0xf.ffffffffffffcp+1020, false,
- -0xf.ffffffffffffcp+1020, false,
- -0xf.ffffffffffffbffffffffffffff8p+1020, false,
- -0xf.ffffffffffffbffffffffffffff8p+1020, false),
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffp+124, true, false,
+ -0xf.fffffp+124, true, false,
+ false,
+ -INF, true, false,
+ -0xf.ffffffffffff8p+1020, false, false,
+ -0xf.ffffffffffff8p+1020, false, false,
+ -0xf.ffffffffffff8p+1020, false, false,
+ false,
+ -0xf.ffffffffffffcp+1020, false, false,
+ -0xf.ffffffffffffcp+1020, false, false,
+ -0xf.ffffffffffffbffp+1020, false, false,
+ -0xf.ffffffffffffbffp+1020, false, false,
+ false,
+ -0xf.ffffffffffffcp+1020, false, false,
+ -0xf.ffffffffffffcp+1020, false, false,
+ -0xf.ffffffffffffbffp+1020, false, false,
+ -0xf.ffffffffffffbffp+1020, false, false,
+ false,
+ -0xf.ffffffffffffcp+1020, true, false,
+ -0xf.ffffffffffffcp+1020, true, false,
+ -0xf.ffffffffffffbffffffffffffcp+1020, false, false,
+ -0xf.ffffffffffffbffffffffffffcp+1020, false, false,
+ false,
+ -0xf.ffffffffffffcp+1020, false, false,
+ -0xf.ffffffffffffcp+1020, false, false,
+ -0xf.ffffffffffffbffffffffffffff8p+1020, false, false,
+ -0xf.ffffffffffffbffffffffffffff8p+1020, false, false),
TEST ("-17976931348623158079372897140530341507993413271003782693617"
"377898044496829276475094664901797758720709633028641669288791"
"094655554785194040263065748867150582068190890200070838367627"
@@ -1999,35 +1999,35 @@ static const struct test tests[] = {
"493647529271907416844436551070434271155969950809304288017790"
"4174497792",
false,
- -INF, true,
- -INF, true,
- -0xf.fffffp+124, true,
- -0xf.fffffp+124, true,
- false,
- -INF, true,
- -INF, true,
- -0xf.ffffffffffff8p+1020, false,
- -0xf.ffffffffffff8p+1020, false,
- true,
- -0xf.ffffffffffffcp+1020, false,
- -0xf.ffffffffffffcp+1020, false,
- -0xf.ffffffffffffcp+1020, false,
- -0xf.ffffffffffffcp+1020, false,
- true,
- -0xf.ffffffffffffcp+1020, false,
- -0xf.ffffffffffffcp+1020, false,
- -0xf.ffffffffffffcp+1020, false,
- -0xf.ffffffffffffcp+1020, false,
- false,
- -0xf.ffffffffffffcp+1020, true,
- -0xf.ffffffffffffcp+1020, true,
- -0xf.ffffffffffffcp+1020, true,
- -0xf.ffffffffffffcp+1020, true,
- true,
- -0xf.ffffffffffffcp+1020, false,
- -0xf.ffffffffffffcp+1020, false,
- -0xf.ffffffffffffcp+1020, false,
- -0xf.ffffffffffffcp+1020, false),
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffp+124, true, false,
+ -0xf.fffffp+124, true, false,
+ false,
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.ffffffffffff8p+1020, false, false,
+ -0xf.ffffffffffff8p+1020, false, false,
+ true,
+ -0xf.ffffffffffffcp+1020, false, false,
+ -0xf.ffffffffffffcp+1020, false, false,
+ -0xf.ffffffffffffcp+1020, false, false,
+ -0xf.ffffffffffffcp+1020, false, false,
+ true,
+ -0xf.ffffffffffffcp+1020, false, false,
+ -0xf.ffffffffffffcp+1020, false, false,
+ -0xf.ffffffffffffcp+1020, false, false,
+ -0xf.ffffffffffffcp+1020, false, false,
+ false,
+ -0xf.ffffffffffffcp+1020, true, false,
+ -0xf.ffffffffffffcp+1020, true, false,
+ -0xf.ffffffffffffcp+1020, true, false,
+ -0xf.ffffffffffffcp+1020, true, false,
+ true,
+ -0xf.ffffffffffffcp+1020, false, false,
+ -0xf.ffffffffffffcp+1020, false, false,
+ -0xf.ffffffffffffcp+1020, false, false,
+ -0xf.ffffffffffffcp+1020, false, false),
TEST ("-17976931348623158079372897140530341507993413271003782693617"
"377898044496829276475094664901797758720709633028641669288791"
"094655554785194040263065748867150582068190890200070838367627"
@@ -2035,35 +2035,35 @@ static const struct test tests[] = {
"493647529271907416844436551070434271155969950809304288017790"
"4174497792.001",
false,
- -INF, true,
- -INF, true,
- -0xf.fffffp+124, true,
- -0xf.fffffp+124, true,
- false,
- -INF, true,
- -INF, true,
- -0xf.ffffffffffff8p+1020, false,
- -0xf.ffffffffffff8p+1020, false,
- false,
- -0xf.ffffffffffffc01p+1020, false,
- -0xf.ffffffffffffcp+1020, false,
- -0xf.ffffffffffffcp+1020, false,
- -0xf.ffffffffffffcp+1020, false,
- false,
- -0xf.ffffffffffffc01p+1020, false,
- -0xf.ffffffffffffcp+1020, false,
- -0xf.ffffffffffffcp+1020, false,
- -0xf.ffffffffffffcp+1020, false,
- false,
- -0xf.ffffffffffffc0000000000004p+1020, true,
- -0xf.ffffffffffffcp+1020, true,
- -0xf.ffffffffffffcp+1020, true,
- -0xf.ffffffffffffcp+1020, true,
- false,
- -0xf.ffffffffffffc000000000000008p+1020, false,
- -0xf.ffffffffffffcp+1020, false,
- -0xf.ffffffffffffcp+1020, false,
- -0xf.ffffffffffffcp+1020, false),
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffp+124, true, false,
+ -0xf.fffffp+124, true, false,
+ false,
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.ffffffffffff8p+1020, false, false,
+ -0xf.ffffffffffff8p+1020, false, false,
+ false,
+ -0xf.ffffffffffffc01p+1020, false, false,
+ -0xf.ffffffffffffcp+1020, false, false,
+ -0xf.ffffffffffffcp+1020, false, false,
+ -0xf.ffffffffffffcp+1020, false, false,
+ false,
+ -0xf.ffffffffffffc01p+1020, false, false,
+ -0xf.ffffffffffffcp+1020, false, false,
+ -0xf.ffffffffffffcp+1020, false, false,
+ -0xf.ffffffffffffcp+1020, false, false,
+ false,
+ -0xf.ffffffffffffc0000000000004p+1020, true, false,
+ -0xf.ffffffffffffcp+1020, true, false,
+ -0xf.ffffffffffffcp+1020, true, false,
+ -0xf.ffffffffffffcp+1020, true, false,
+ false,
+ -0xf.ffffffffffffc000000000000008p+1020, false, false,
+ -0xf.ffffffffffffcp+1020, false, false,
+ -0xf.ffffffffffffcp+1020, false, false,
+ -0xf.ffffffffffffcp+1020, false, false),
TEST ("118973149535723176505351158982948866796625400469556721895649"
"927756249918185172720476044944290457046138433056764616744328"
"666255526748948793023632513609765434237723241753648908036202"
@@ -2148,35 +2148,35 @@ static const struct test tests[] = {
"578031503869424406179027994752890226443351619365453243328968"
"8740976918527.999",
false,
- 0xf.fffffp+124, true,
- INF, true,
- 0xf.fffffp+124, true,
- INF, true,
- false,
- 0xf.ffffffffffff8p+1020, true,
- INF, true,
- 0xf.ffffffffffff8p+1020, true,
- INF, true,
- false,
- 0xf.fffffffffffffffp+16380, false,
- 0xf.fffffffffffffffp+16380, false,
- 0xf.fffffffffffffffp+16380, false,
- INF, true,
- false,
- 0xf.fffffffffffffffp+16380, false,
- 0xf.fffffffffffffffp+16380, false,
- 0xf.fffffffffffffffp+16380, false,
- INF, true,
- false,
- 0xf.fffffffffffffffffffffffffcp+1020, true,
- INF, true,
- 0xf.fffffffffffffffffffffffffcp+1020, true,
- INF, true,
- false,
- 0xf.fffffffffffffff7fffffffffff8p+16380, false,
- 0xf.fffffffffffffff8p+16380, false,
- 0xf.fffffffffffffff7fffffffffff8p+16380, false,
- 0xf.fffffffffffffff8p+16380, false),
+ 0xf.fffffp+124, true, false,
+ INF, true, false,
+ 0xf.fffffp+124, true, false,
+ INF, true, false,
+ false,
+ 0xf.ffffffffffff8p+1020, true, false,
+ INF, true, false,
+ 0xf.ffffffffffff8p+1020, true, false,
+ INF, true, false,
+ false,
+ 0xf.fffffffffffffffp+16380, false, false,
+ 0xf.fffffffffffffffp+16380, false, false,
+ 0xf.fffffffffffffffp+16380, false, false,
+ INF, true, false,
+ false,
+ 0xf.fffffffffffffffp+16380, false, false,
+ 0xf.fffffffffffffffp+16380, false, false,
+ 0xf.fffffffffffffffp+16380, false, false,
+ INF, true, false,
+ false,
+ 0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ INF, true, false,
+ 0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ INF, true, false,
+ false,
+ 0xf.fffffffffffffff7fffffffffff8p+16380, false, false,
+ 0xf.fffffffffffffff8p+16380, false, false,
+ 0xf.fffffffffffffff7fffffffffff8p+16380, false, false,
+ 0xf.fffffffffffffff8p+16380, false, false),
TEST ("118973149535723176505351158982948866796625400469556721895649"
"927756249918185172720476044944290457046138433056764616744328"
"666255526748948793023632513609765434237723241753648908036202"
@@ -2261,35 +2261,35 @@ static const struct test tests[] = {
"578031503869424406179027994752890226443351619365453243328968"
"8740976918528",
false,
- 0xf.fffffp+124, true,
- INF, true,
- 0xf.fffffp+124, true,
- INF, true,
- false,
- 0xf.ffffffffffff8p+1020, true,
- INF, true,
- 0xf.ffffffffffff8p+1020, true,
- INF, true,
- false,
- 0xf.fffffffffffffffp+16380, false,
- INF, true,
- 0xf.fffffffffffffffp+16380, false,
- INF, true,
- false,
- 0xf.fffffffffffffffp+16380, false,
- INF, true,
- 0xf.fffffffffffffffp+16380, false,
- INF, true,
- false,
- 0xf.fffffffffffffffffffffffffcp+1020, true,
- INF, true,
- 0xf.fffffffffffffffffffffffffcp+1020, true,
- INF, true,
- true,
- 0xf.fffffffffffffff8p+16380, false,
- 0xf.fffffffffffffff8p+16380, false,
- 0xf.fffffffffffffff8p+16380, false,
- 0xf.fffffffffffffff8p+16380, false),
+ 0xf.fffffp+124, true, false,
+ INF, true, false,
+ 0xf.fffffp+124, true, false,
+ INF, true, false,
+ false,
+ 0xf.ffffffffffff8p+1020, true, false,
+ INF, true, false,
+ 0xf.ffffffffffff8p+1020, true, false,
+ INF, true, false,
+ false,
+ 0xf.fffffffffffffffp+16380, false, false,
+ INF, true, false,
+ 0xf.fffffffffffffffp+16380, false, false,
+ INF, true, false,
+ false,
+ 0xf.fffffffffffffffp+16380, false, false,
+ INF, true, false,
+ 0xf.fffffffffffffffp+16380, false, false,
+ INF, true, false,
+ false,
+ 0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ INF, true, false,
+ 0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ INF, true, false,
+ true,
+ 0xf.fffffffffffffff8p+16380, false, false,
+ 0xf.fffffffffffffff8p+16380, false, false,
+ 0xf.fffffffffffffff8p+16380, false, false,
+ 0xf.fffffffffffffff8p+16380, false, false),
TEST ("118973149535723176505351158982948866796625400469556721895649"
"927756249918185172720476044944290457046138433056764616744328"
"666255526748948793023632513609765434237723241753648908036202"
@@ -2374,35 +2374,35 @@ static const struct test tests[] = {
"578031503869424406179027994752890226443351619365453243328968"
"8740976918528.001",
false,
- 0xf.fffffp+124, true,
- INF, true,
- 0xf.fffffp+124, true,
- INF, true,
- false,
- 0xf.ffffffffffff8p+1020, true,
- INF, true,
- 0xf.ffffffffffff8p+1020, true,
- INF, true,
- false,
- 0xf.fffffffffffffffp+16380, false,
- INF, true,
- 0xf.fffffffffffffffp+16380, false,
- INF, true,
- false,
- 0xf.fffffffffffffffp+16380, false,
- INF, true,
- 0xf.fffffffffffffffp+16380, false,
- INF, true,
- false,
- 0xf.fffffffffffffffffffffffffcp+1020, true,
- INF, true,
- 0xf.fffffffffffffffffffffffffcp+1020, true,
- INF, true,
- false,
- 0xf.fffffffffffffff8p+16380, false,
- 0xf.fffffffffffffff8p+16380, false,
- 0xf.fffffffffffffff8p+16380, false,
- 0xf.fffffffffffffff8000000000008p+16380, false),
+ 0xf.fffffp+124, true, false,
+ INF, true, false,
+ 0xf.fffffp+124, true, false,
+ INF, true, false,
+ false,
+ 0xf.ffffffffffff8p+1020, true, false,
+ INF, true, false,
+ 0xf.ffffffffffff8p+1020, true, false,
+ INF, true, false,
+ false,
+ 0xf.fffffffffffffffp+16380, false, false,
+ INF, true, false,
+ 0xf.fffffffffffffffp+16380, false, false,
+ INF, true, false,
+ false,
+ 0xf.fffffffffffffffp+16380, false, false,
+ INF, true, false,
+ 0xf.fffffffffffffffp+16380, false, false,
+ INF, true, false,
+ false,
+ 0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ INF, true, false,
+ 0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ INF, true, false,
+ false,
+ 0xf.fffffffffffffff8p+16380, false, false,
+ 0xf.fffffffffffffff8p+16380, false, false,
+ 0xf.fffffffffffffff8p+16380, false, false,
+ 0xf.fffffffffffffff8000000000008p+16380, false, false),
TEST ("-11897314953572317650535115898294886679662540046955672189564"
"992775624991818517272047604494429045704613843305676461674432"
"866625552674894879302363251360976543423772324175364890803620"
@@ -2487,35 +2487,35 @@ static const struct test tests[] = {
"557803150386942440617902799475289022644335161936545324332896"
"88740976918527.999",
false,
- -INF, true,
- -INF, true,
- -0xf.fffffp+124, true,
- -0xf.fffffp+124, true,
- false,
- -INF, true,
- -INF, true,
- -0xf.ffffffffffff8p+1020, true,
- -0xf.ffffffffffff8p+1020, true,
- false,
- -INF, true,
- -0xf.fffffffffffffffp+16380, false,
- -0xf.fffffffffffffffp+16380, false,
- -0xf.fffffffffffffffp+16380, false,
- false,
- -INF, true,
- -0xf.fffffffffffffffp+16380, false,
- -0xf.fffffffffffffffp+16380, false,
- -0xf.fffffffffffffffp+16380, false,
- false,
- -INF, true,
- -INF, true,
- -0xf.fffffffffffffffffffffffffcp+1020, true,
- -0xf.fffffffffffffffffffffffffcp+1020, true,
- false,
- -0xf.fffffffffffffff8p+16380, false,
- -0xf.fffffffffffffff8p+16380, false,
- -0xf.fffffffffffffff7fffffffffff8p+16380, false,
- -0xf.fffffffffffffff7fffffffffff8p+16380, false),
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffp+124, true, false,
+ -0xf.fffffp+124, true, false,
+ false,
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.ffffffffffff8p+1020, true, false,
+ -0xf.ffffffffffff8p+1020, true, false,
+ false,
+ -INF, true, false,
+ -0xf.fffffffffffffffp+16380, false, false,
+ -0xf.fffffffffffffffp+16380, false, false,
+ -0xf.fffffffffffffffp+16380, false, false,
+ false,
+ -INF, true, false,
+ -0xf.fffffffffffffffp+16380, false, false,
+ -0xf.fffffffffffffffp+16380, false, false,
+ -0xf.fffffffffffffffp+16380, false, false,
+ false,
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ -0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ false,
+ -0xf.fffffffffffffff8p+16380, false, false,
+ -0xf.fffffffffffffff8p+16380, false, false,
+ -0xf.fffffffffffffff7fffffffffff8p+16380, false, false,
+ -0xf.fffffffffffffff7fffffffffff8p+16380, false, false),
TEST ("-11897314953572317650535115898294886679662540046955672189564"
"992775624991818517272047604494429045704613843305676461674432"
"866625552674894879302363251360976543423772324175364890803620"
@@ -2600,35 +2600,35 @@ static const struct test tests[] = {
"557803150386942440617902799475289022644335161936545324332896"
"88740976918528",
false,
- -INF, true,
- -INF, true,
- -0xf.fffffp+124, true,
- -0xf.fffffp+124, true,
- false,
- -INF, true,
- -INF, true,
- -0xf.ffffffffffff8p+1020, true,
- -0xf.ffffffffffff8p+1020, true,
- false,
- -INF, true,
- -INF, true,
- -0xf.fffffffffffffffp+16380, false,
- -0xf.fffffffffffffffp+16380, false,
- false,
- -INF, true,
- -INF, true,
- -0xf.fffffffffffffffp+16380, false,
- -0xf.fffffffffffffffp+16380, false,
- false,
- -INF, true,
- -INF, true,
- -0xf.fffffffffffffffffffffffffcp+1020, true,
- -0xf.fffffffffffffffffffffffffcp+1020, true,
- true,
- -0xf.fffffffffffffff8p+16380, false,
- -0xf.fffffffffffffff8p+16380, false,
- -0xf.fffffffffffffff8p+16380, false,
- -0xf.fffffffffffffff8p+16380, false),
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffp+124, true, false,
+ -0xf.fffffp+124, true, false,
+ false,
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.ffffffffffff8p+1020, true, false,
+ -0xf.ffffffffffff8p+1020, true, false,
+ false,
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffffffffffffp+16380, false, false,
+ -0xf.fffffffffffffffp+16380, false, false,
+ false,
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffffffffffffp+16380, false, false,
+ -0xf.fffffffffffffffp+16380, false, false,
+ false,
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ -0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ true,
+ -0xf.fffffffffffffff8p+16380, false, false,
+ -0xf.fffffffffffffff8p+16380, false, false,
+ -0xf.fffffffffffffff8p+16380, false, false,
+ -0xf.fffffffffffffff8p+16380, false, false),
TEST ("-11897314953572317650535115898294886679662540046955672189564"
"992775624991818517272047604494429045704613843305676461674432"
"866625552674894879302363251360976543423772324175364890803620"
@@ -2713,35 +2713,35 @@ static const struct test tests[] = {
"557803150386942440617902799475289022644335161936545324332896"
"88740976918528.001",
false,
- -INF, true,
- -INF, true,
- -0xf.fffffp+124, true,
- -0xf.fffffp+124, true,
- false,
- -INF, true,
- -INF, true,
- -0xf.ffffffffffff8p+1020, true,
- -0xf.ffffffffffff8p+1020, true,
- false,
- -INF, true,
- -INF, true,
- -0xf.fffffffffffffffp+16380, false,
- -0xf.fffffffffffffffp+16380, false,
- false,
- -INF, true,
- -INF, true,
- -0xf.fffffffffffffffp+16380, false,
- -0xf.fffffffffffffffp+16380, false,
- false,
- -INF, true,
- -INF, true,
- -0xf.fffffffffffffffffffffffffcp+1020, true,
- -0xf.fffffffffffffffffffffffffcp+1020, true,
- false,
- -0xf.fffffffffffffff8000000000008p+16380, false,
- -0xf.fffffffffffffff8p+16380, false,
- -0xf.fffffffffffffff8p+16380, false,
- -0xf.fffffffffffffff8p+16380, false),
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffp+124, true, false,
+ -0xf.fffffp+124, true, false,
+ false,
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.ffffffffffff8p+1020, true, false,
+ -0xf.ffffffffffff8p+1020, true, false,
+ false,
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffffffffffffp+16380, false, false,
+ -0xf.fffffffffffffffp+16380, false, false,
+ false,
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffffffffffffp+16380, false, false,
+ -0xf.fffffffffffffffp+16380, false, false,
+ false,
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ -0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ false,
+ -0xf.fffffffffffffff8000000000008p+16380, false, false,
+ -0xf.fffffffffffffff8p+16380, false, false,
+ -0xf.fffffffffffffff8p+16380, false, false,
+ -0xf.fffffffffffffff8p+16380, false, false),
TEST ("118973149535723176508575932662800707347995686986910214150118"
"685272271246896789803961473130416053705672050873552479421805"
"932646640744124594447361172514341324846716679654551308018400"
@@ -2826,35 +2826,35 @@ static const struct test tests[] = {
"972233447491583165728635513802591543441145939539353470970452"
"5536550715391.999",
false,
- 0xf.fffffp+124, true,
- INF, true,
- 0xf.fffffp+124, true,
- INF, true,
- false,
- 0xf.ffffffffffff8p+1020, true,
- INF, true,
- 0xf.ffffffffffff8p+1020, true,
- INF, true,
- false,
- 0xf.fffffffffffffffp+16380, false,
- INF, true,
- 0xf.fffffffffffffffp+16380, false,
- INF, true,
- false,
- 0xf.fffffffffffffffp+16380, false,
- INF, true,
- 0xf.fffffffffffffffp+16380, false,
- INF, true,
- false,
- 0xf.fffffffffffffffffffffffffcp+1020, true,
- INF, true,
- 0xf.fffffffffffffffffffffffffcp+1020, true,
- INF, true,
- false,
- 0xf.fffffffffffffffffffffffffff8p+16380, false,
- 0xf.fffffffffffffffffffffffffff8p+16380, false,
- 0xf.fffffffffffffffffffffffffff8p+16380, false,
- INF, true),
+ 0xf.fffffp+124, true, false,
+ INF, true, false,
+ 0xf.fffffp+124, true, false,
+ INF, true, false,
+ false,
+ 0xf.ffffffffffff8p+1020, true, false,
+ INF, true, false,
+ 0xf.ffffffffffff8p+1020, true, false,
+ INF, true, false,
+ false,
+ 0xf.fffffffffffffffp+16380, false, false,
+ INF, true, false,
+ 0xf.fffffffffffffffp+16380, false, false,
+ INF, true, false,
+ false,
+ 0xf.fffffffffffffffp+16380, false, false,
+ INF, true, false,
+ 0xf.fffffffffffffffp+16380, false, false,
+ INF, true, false,
+ false,
+ 0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ INF, true, false,
+ 0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ INF, true, false,
+ false,
+ 0xf.fffffffffffffffffffffffffff8p+16380, false, false,
+ 0xf.fffffffffffffffffffffffffff8p+16380, false, false,
+ 0xf.fffffffffffffffffffffffffff8p+16380, false, false,
+ INF, true, false),
TEST ("118973149535723176508575932662800707347995686986910214150118"
"685272271246896789803961473130416053705672050873552479421805"
"932646640744124594447361172514341324846716679654551308018400"
@@ -2939,35 +2939,35 @@ static const struct test tests[] = {
"972233447491583165728635513802591543441145939539353470970452"
"5536550715392",
false,
- 0xf.fffffp+124, true,
- INF, true,
- 0xf.fffffp+124, true,
- INF, true,
- false,
- 0xf.ffffffffffff8p+1020, true,
- INF, true,
- 0xf.ffffffffffff8p+1020, true,
- INF, true,
- false,
- 0xf.fffffffffffffffp+16380, false,
- INF, true,
- 0xf.fffffffffffffffp+16380, false,
- INF, true,
- false,
- 0xf.fffffffffffffffp+16380, false,
- INF, true,
- 0xf.fffffffffffffffp+16380, false,
- INF, true,
- false,
- 0xf.fffffffffffffffffffffffffcp+1020, true,
- INF, true,
- 0xf.fffffffffffffffffffffffffcp+1020, true,
- INF, true,
- false,
- 0xf.fffffffffffffffffffffffffff8p+16380, false,
- INF, true,
- 0xf.fffffffffffffffffffffffffff8p+16380, false,
- INF, true),
+ 0xf.fffffp+124, true, false,
+ INF, true, false,
+ 0xf.fffffp+124, true, false,
+ INF, true, false,
+ false,
+ 0xf.ffffffffffff8p+1020, true, false,
+ INF, true, false,
+ 0xf.ffffffffffff8p+1020, true, false,
+ INF, true, false,
+ false,
+ 0xf.fffffffffffffffp+16380, false, false,
+ INF, true, false,
+ 0xf.fffffffffffffffp+16380, false, false,
+ INF, true, false,
+ false,
+ 0xf.fffffffffffffffp+16380, false, false,
+ INF, true, false,
+ 0xf.fffffffffffffffp+16380, false, false,
+ INF, true, false,
+ false,
+ 0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ INF, true, false,
+ 0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ INF, true, false,
+ false,
+ 0xf.fffffffffffffffffffffffffff8p+16380, false, false,
+ INF, true, false,
+ 0xf.fffffffffffffffffffffffffff8p+16380, false, false,
+ INF, true, false),
TEST ("118973149535723176508575932662800707347995686986910214150118"
"685272271246896789803961473130416053705672050873552479421805"
"932646640744124594447361172514341324846716679654551308018400"
@@ -3052,35 +3052,35 @@ static const struct test tests[] = {
"972233447491583165728635513802591543441145939539353470970452"
"5536550715392.001",
false,
- 0xf.fffffp+124, true,
- INF, true,
- 0xf.fffffp+124, true,
- INF, true,
- false,
- 0xf.ffffffffffff8p+1020, true,
- INF, true,
- 0xf.ffffffffffff8p+1020, true,
- INF, true,
- false,
- 0xf.fffffffffffffffp+16380, false,
- INF, true,
- 0xf.fffffffffffffffp+16380, false,
- INF, true,
- false,
- 0xf.fffffffffffffffp+16380, false,
- INF, true,
- 0xf.fffffffffffffffp+16380, false,
- INF, true,
- false,
- 0xf.fffffffffffffffffffffffffcp+1020, true,
- INF, true,
- 0xf.fffffffffffffffffffffffffcp+1020, true,
- INF, true,
- false,
- 0xf.fffffffffffffffffffffffffff8p+16380, false,
- INF, true,
- 0xf.fffffffffffffffffffffffffff8p+16380, false,
- INF, true),
+ 0xf.fffffp+124, true, false,
+ INF, true, false,
+ 0xf.fffffp+124, true, false,
+ INF, true, false,
+ false,
+ 0xf.ffffffffffff8p+1020, true, false,
+ INF, true, false,
+ 0xf.ffffffffffff8p+1020, true, false,
+ INF, true, false,
+ false,
+ 0xf.fffffffffffffffp+16380, false, false,
+ INF, true, false,
+ 0xf.fffffffffffffffp+16380, false, false,
+ INF, true, false,
+ false,
+ 0xf.fffffffffffffffp+16380, false, false,
+ INF, true, false,
+ 0xf.fffffffffffffffp+16380, false, false,
+ INF, true, false,
+ false,
+ 0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ INF, true, false,
+ 0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ INF, true, false,
+ false,
+ 0xf.fffffffffffffffffffffffffff8p+16380, false, false,
+ INF, true, false,
+ 0xf.fffffffffffffffffffffffffff8p+16380, false, false,
+ INF, true, false),
TEST ("-11897314953572317650857593266280070734799568698691021415011"
"868527227124689678980396147313041605370567205087355247942180"
"593264664074412459444736117251434132484671667965455130801840"
@@ -3165,35 +3165,35 @@ static const struct test tests[] = {
"097223344749158316572863551380259154344114593953935347097045"
"25536550715391.999",
false,
- -INF, true,
- -INF, true,
- -0xf.fffffp+124, true,
- -0xf.fffffp+124, true,
- false,
- -INF, true,
- -INF, true,
- -0xf.ffffffffffff8p+1020, true,
- -0xf.ffffffffffff8p+1020, true,
- false,
- -INF, true,
- -INF, true,
- -0xf.fffffffffffffffp+16380, false,
- -0xf.fffffffffffffffp+16380, false,
- false,
- -INF, true,
- -INF, true,
- -0xf.fffffffffffffffp+16380, false,
- -0xf.fffffffffffffffp+16380, false,
- false,
- -INF, true,
- -INF, true,
- -0xf.fffffffffffffffffffffffffcp+1020, true,
- -0xf.fffffffffffffffffffffffffcp+1020, true,
- false,
- -INF, true,
- -0xf.fffffffffffffffffffffffffff8p+16380, false,
- -0xf.fffffffffffffffffffffffffff8p+16380, false,
- -0xf.fffffffffffffffffffffffffff8p+16380, false),
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffp+124, true, false,
+ -0xf.fffffp+124, true, false,
+ false,
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.ffffffffffff8p+1020, true, false,
+ -0xf.ffffffffffff8p+1020, true, false,
+ false,
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffffffffffffp+16380, false, false,
+ -0xf.fffffffffffffffp+16380, false, false,
+ false,
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffffffffffffp+16380, false, false,
+ -0xf.fffffffffffffffp+16380, false, false,
+ false,
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ -0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ false,
+ -INF, true, false,
+ -0xf.fffffffffffffffffffffffffff8p+16380, false, false,
+ -0xf.fffffffffffffffffffffffffff8p+16380, false, false,
+ -0xf.fffffffffffffffffffffffffff8p+16380, false, false),
TEST ("-11897314953572317650857593266280070734799568698691021415011"
"868527227124689678980396147313041605370567205087355247942180"
"593264664074412459444736117251434132484671667965455130801840"
@@ -3278,35 +3278,35 @@ static const struct test tests[] = {
"097223344749158316572863551380259154344114593953935347097045"
"25536550715392",
false,
- -INF, true,
- -INF, true,
- -0xf.fffffp+124, true,
- -0xf.fffffp+124, true,
- false,
- -INF, true,
- -INF, true,
- -0xf.ffffffffffff8p+1020, true,
- -0xf.ffffffffffff8p+1020, true,
- false,
- -INF, true,
- -INF, true,
- -0xf.fffffffffffffffp+16380, false,
- -0xf.fffffffffffffffp+16380, false,
- false,
- -INF, true,
- -INF, true,
- -0xf.fffffffffffffffp+16380, false,
- -0xf.fffffffffffffffp+16380, false,
- false,
- -INF, true,
- -INF, true,
- -0xf.fffffffffffffffffffffffffcp+1020, true,
- -0xf.fffffffffffffffffffffffffcp+1020, true,
- false,
- -INF, true,
- -INF, true,
- -0xf.fffffffffffffffffffffffffff8p+16380, false,
- -0xf.fffffffffffffffffffffffffff8p+16380, false),
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffp+124, true, false,
+ -0xf.fffffp+124, true, false,
+ false,
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.ffffffffffff8p+1020, true, false,
+ -0xf.ffffffffffff8p+1020, true, false,
+ false,
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffffffffffffp+16380, false, false,
+ -0xf.fffffffffffffffp+16380, false, false,
+ false,
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffffffffffffp+16380, false, false,
+ -0xf.fffffffffffffffp+16380, false, false,
+ false,
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ -0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ false,
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffffffffffffffffffffffff8p+16380, false, false,
+ -0xf.fffffffffffffffffffffffffff8p+16380, false, false),
TEST ("-11897314953572317650857593266280070734799568698691021415011"
"868527227124689678980396147313041605370567205087355247942180"
"593264664074412459444736117251434132484671667965455130801840"
@@ -3391,419 +3391,419 @@ static const struct test tests[] = {
"097223344749158316572863551380259154344114593953935347097045"
"25536550715392.001",
false,
- -INF, true,
- -INF, true,
- -0xf.fffffp+124, true,
- -0xf.fffffp+124, true,
- false,
- -INF, true,
- -INF, true,
- -0xf.ffffffffffff8p+1020, true,
- -0xf.ffffffffffff8p+1020, true,
- false,
- -INF, true,
- -INF, true,
- -0xf.fffffffffffffffp+16380, false,
- -0xf.fffffffffffffffp+16380, false,
- false,
- -INF, true,
- -INF, true,
- -0xf.fffffffffffffffp+16380, false,
- -0xf.fffffffffffffffp+16380, false,
- false,
- -INF, true,
- -INF, true,
- -0xf.fffffffffffffffffffffffffcp+1020, true,
- -0xf.fffffffffffffffffffffffffcp+1020, true,
- false,
- -INF, true,
- -INF, true,
- -0xf.fffffffffffffffffffffffffff8p+16380, false,
- -0xf.fffffffffffffffffffffffffff8p+16380, false),
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffp+124, true, false,
+ -0xf.fffffp+124, true, false,
+ false,
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.ffffffffffff8p+1020, true, false,
+ -0xf.ffffffffffff8p+1020, true, false,
+ false,
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffffffffffffp+16380, false, false,
+ -0xf.fffffffffffffffp+16380, false, false,
+ false,
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffffffffffffp+16380, false, false,
+ -0xf.fffffffffffffffp+16380, false, false,
+ false,
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ -0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ false,
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffffffffffffffffffffffff8p+16380, false, false,
+ -0xf.fffffffffffffffffffffffffff8p+16380, false, false),
TEST ("2.1019476964872256063855943749348741969203929128147736576356"
"0242583468662402879090222995728254318237304687499e-45",
false,
- 0x8p-152, false,
- 0x8p-152, false,
- 0x8p-152, false,
- 0x1p-148, false,
- false,
- 0xb.ffffffffffff8p-152, false,
- 0xcp-152, false,
- 0xb.ffffffffffff8p-152, false,
- 0xcp-152, false,
- false,
- 0xb.fffffffffffffffp-152, false,
- 0xcp-152, false,
- 0xb.fffffffffffffffp-152, false,
- 0xcp-152, false,
- false,
- 0xb.fffffffffffffffp-152, false,
- 0xcp-152, false,
- 0xb.fffffffffffffffp-152, false,
- 0xcp-152, false,
- false,
- 0xb.fffffffffffffffffffffffffcp-152, false,
- 0xcp-152, false,
- 0xb.fffffffffffffffffffffffffcp-152, false,
- 0xcp-152, false,
- false,
- 0xb.fffffffffffffffffffffffffff8p-152, false,
- 0xcp-152, false,
- 0xb.fffffffffffffffffffffffffff8p-152, false,
- 0xcp-152, false),
+ 0x8p-152, false, true,
+ 0x8p-152, false, true,
+ 0x8p-152, false, true,
+ 0x1p-148, false, true,
+ false,
+ 0xb.ffffffffffff8p-152, false, false,
+ 0xcp-152, false, false,
+ 0xb.ffffffffffff8p-152, false, false,
+ 0xcp-152, false, false,
+ false,
+ 0xb.fffffffffffffffp-152, false, false,
+ 0xcp-152, false, false,
+ 0xb.fffffffffffffffp-152, false, false,
+ 0xcp-152, false, false,
+ false,
+ 0xb.fffffffffffffffp-152, false, false,
+ 0xcp-152, false, false,
+ 0xb.fffffffffffffffp-152, false, false,
+ 0xcp-152, false, false,
+ false,
+ 0xb.fffffffffffffffffffffffffcp-152, false, false,
+ 0xcp-152, false, false,
+ 0xb.fffffffffffffffffffffffffcp-152, false, false,
+ 0xcp-152, false, false,
+ false,
+ 0xb.fffffffffffffffffffffffffff8p-152, false, false,
+ 0xcp-152, false, false,
+ 0xb.fffffffffffffffffffffffffff8p-152, false, false,
+ 0xcp-152, false, false),
TEST ("2.1019476964872256063855943749348741969203929128147736576356"
"02425834686624028790902229957282543182373046875e-45",
false,
- 0x8p-152, false,
- 0x1p-148, false,
- 0x8p-152, false,
- 0x1p-148, false,
- true,
- 0xcp-152, false,
- 0xcp-152, false,
- 0xcp-152, false,
- 0xcp-152, false,
- true,
- 0xcp-152, false,
- 0xcp-152, false,
- 0xcp-152, false,
- 0xcp-152, false,
- true,
- 0xcp-152, false,
- 0xcp-152, false,
- 0xcp-152, false,
- 0xcp-152, false,
- true,
- 0xcp-152, false,
- 0xcp-152, false,
- 0xcp-152, false,
- 0xcp-152, false,
- true,
- 0xcp-152, false,
- 0xcp-152, false,
- 0xcp-152, false,
- 0xcp-152, false),
+ 0x8p-152, false, true,
+ 0x1p-148, false, true,
+ 0x8p-152, false, true,
+ 0x1p-148, false, true,
+ true,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ true,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ true,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ true,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ true,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false),
TEST ("2.1019476964872256063855943749348741969203929128147736576356"
"0242583468662402879090222995728254318237304687501e-45",
false,
- 0x8p-152, false,
- 0x1p-148, false,
- 0x8p-152, false,
- 0x1p-148, false,
- false,
- 0xcp-152, false,
- 0xcp-152, false,
- 0xcp-152, false,
- 0xc.0000000000008p-152, false,
- false,
- 0xcp-152, false,
- 0xcp-152, false,
- 0xcp-152, false,
- 0xc.000000000000001p-152, false,
- false,
- 0xcp-152, false,
- 0xcp-152, false,
- 0xcp-152, false,
- 0xc.000000000000001p-152, false,
- false,
- 0xcp-152, false,
- 0xcp-152, false,
- 0xcp-152, false,
- 0xc.00000000000000000000000004p-152, false,
- false,
- 0xcp-152, false,
- 0xcp-152, false,
- 0xcp-152, false,
- 0xc.0000000000000000000000000008p-152, false),
+ 0x8p-152, false, true,
+ 0x1p-148, false, true,
+ 0x8p-152, false, true,
+ 0x1p-148, false, true,
+ false,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ 0xc.0000000000008p-152, false, false,
+ false,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ 0xc.000000000000001p-152, false, false,
+ false,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ 0xc.000000000000001p-152, false, false,
+ false,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ 0xc.00000000000000000000000004p-152, false, false,
+ false,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ 0xc.0000000000000000000000000008p-152, false, false),
TEST ("-2.101947696487225606385594374934874196920392912814773657635"
"60242583468662402879090222995728254318237304687499e-45",
false,
- -0x1p-148, false,
- -0x8p-152, false,
- -0x8p-152, false,
- -0x8p-152, false,
- false,
- -0xcp-152, false,
- -0xcp-152, false,
- -0xb.ffffffffffff8p-152, false,
- -0xb.ffffffffffff8p-152, false,
- false,
- -0xcp-152, false,
- -0xcp-152, false,
- -0xb.fffffffffffffffp-152, false,
- -0xb.fffffffffffffffp-152, false,
- false,
- -0xcp-152, false,
- -0xcp-152, false,
- -0xb.fffffffffffffffp-152, false,
- -0xb.fffffffffffffffp-152, false,
- false,
- -0xcp-152, false,
- -0xcp-152, false,
- -0xb.fffffffffffffffffffffffffcp-152, false,
- -0xb.fffffffffffffffffffffffffcp-152, false,
- false,
- -0xcp-152, false,
- -0xcp-152, false,
- -0xb.fffffffffffffffffffffffffff8p-152, false,
- -0xb.fffffffffffffffffffffffffff8p-152, false),
+ -0x1p-148, false, true,
+ -0x8p-152, false, true,
+ -0x8p-152, false, true,
+ -0x8p-152, false, true,
+ false,
+ -0xcp-152, false, false,
+ -0xcp-152, false, false,
+ -0xb.ffffffffffff8p-152, false, false,
+ -0xb.ffffffffffff8p-152, false, false,
+ false,
+ -0xcp-152, false, false,
+ -0xcp-152, false, false,
+ -0xb.fffffffffffffffp-152, false, false,
+ -0xb.fffffffffffffffp-152, false, false,
+ false,
+ -0xcp-152, false, false,
+ -0xcp-152, false, false,
+ -0xb.fffffffffffffffp-152, false, false,
+ -0xb.fffffffffffffffp-152, false, false,
+ false,
+ -0xcp-152, false, false,
+ -0xcp-152, false, false,
+ -0xb.fffffffffffffffffffffffffcp-152, false, false,
+ -0xb.fffffffffffffffffffffffffcp-152, false, false,
+ false,
+ -0xcp-152, false, false,
+ -0xcp-152, false, false,
+ -0xb.fffffffffffffffffffffffffff8p-152, false, false,
+ -0xb.fffffffffffffffffffffffffff8p-152, false, false),
TEST ("-2.101947696487225606385594374934874196920392912814773657635"
"602425834686624028790902229957282543182373046875e-45",
false,
- -0x1p-148, false,
- -0x1p-148, false,
- -0x8p-152, false,
- -0x8p-152, false,
- true,
- -0xcp-152, false,
- -0xcp-152, false,
- -0xcp-152, false,
- -0xcp-152, false,
- true,
- -0xcp-152, false,
- -0xcp-152, false,
- -0xcp-152, false,
- -0xcp-152, false,
- true,
- -0xcp-152, false,
- -0xcp-152, false,
- -0xcp-152, false,
- -0xcp-152, false,
- true,
- -0xcp-152, false,
- -0xcp-152, false,
- -0xcp-152, false,
- -0xcp-152, false,
- true,
- -0xcp-152, false,
- -0xcp-152, false,
- -0xcp-152, false,
- -0xcp-152, false),
+ -0x1p-148, false, true,
+ -0x1p-148, false, true,
+ -0x8p-152, false, true,
+ -0x8p-152, false, true,
+ true,
+ -0xcp-152, false, false,
+ -0xcp-152, false, false,
+ -0xcp-152, false, false,
+ -0xcp-152, false, false,
+ true,
+ -0xcp-152, false, false,
+ -0xcp-152, false, false,
+ -0xcp-152, false, false,
+ -0xcp-152, false, false,
+ true,
+ -0xcp-152, false, false,
+ -0xcp-152, false, false,
+ -0xcp-152, false, false,
+ -0xcp-152, false, false,
+ true,
+ -0xcp-152, false, false,
+ -0xcp-152, false, false,
+ -0xcp-152, false, false,
+ -0xcp-152, false, false,
+ true,
+ -0xcp-152, false, false,
+ -0xcp-152, false, false,
+ -0xcp-152, false, false,
+ -0xcp-152, false, false),
TEST ("-2.101947696487225606385594374934874196920392912814773657635"
"60242583468662402879090222995728254318237304687501e-45",
false,
- -0x1p-148, false,
- -0x1p-148, false,
- -0x8p-152, false,
- -0x8p-152, false,
- false,
- -0xc.0000000000008p-152, false,
- -0xcp-152, false,
- -0xcp-152, false,
- -0xcp-152, false,
- false,
- -0xc.000000000000001p-152, false,
- -0xcp-152, false,
- -0xcp-152, false,
- -0xcp-152, false,
- false,
- -0xc.000000000000001p-152, false,
- -0xcp-152, false,
- -0xcp-152, false,
- -0xcp-152, false,
- false,
- -0xc.00000000000000000000000004p-152, false,
- -0xcp-152, false,
- -0xcp-152, false,
- -0xcp-152, false,
- false,
- -0xc.0000000000000000000000000008p-152, false,
- -0xcp-152, false,
- -0xcp-152, false,
- -0xcp-152, false),
+ -0x1p-148, false, true,
+ -0x1p-148, false, true,
+ -0x8p-152, false, true,
+ -0x8p-152, false, true,
+ false,
+ -0xc.0000000000008p-152, false, false,
+ -0xcp-152, false, false,
+ -0xcp-152, false, false,
+ -0xcp-152, false, false,
+ false,
+ -0xc.000000000000001p-152, false, false,
+ -0xcp-152, false, false,
+ -0xcp-152, false, false,
+ -0xcp-152, false, false,
+ false,
+ -0xc.000000000000001p-152, false, false,
+ -0xcp-152, false, false,
+ -0xcp-152, false, false,
+ -0xcp-152, false, false,
+ false,
+ -0xc.00000000000000000000000004p-152, false, false,
+ -0xcp-152, false, false,
+ -0xcp-152, false, false,
+ -0xcp-152, false, false,
+ false,
+ -0xc.0000000000000000000000000008p-152, false, false,
+ -0xcp-152, false, false,
+ -0xcp-152, false, false,
+ -0xcp-152, false, false),
TEST ("3.5032461608120426773093239582247903282006548546912894293926"
"7070972447770671465150371659547090530395507812499e-45",
false,
- 0x1p-148, false,
- 0x1p-148, false,
- 0x1p-148, false,
- 0x1.8p-148, false,
- false,
- 0x1.3ffffffffffffp-148, false,
- 0x1.4p-148, false,
- 0x1.3ffffffffffffp-148, false,
- 0x1.4p-148, false,
- false,
- 0x1.3ffffffffffffffep-148, false,
- 0x1.4p-148, false,
- 0x1.3ffffffffffffffep-148, false,
- 0x1.4p-148, false,
- false,
- 0x1.3ffffffffffffffep-148, false,
- 0x1.4p-148, false,
- 0x1.3ffffffffffffffep-148, false,
- 0x1.4p-148, false,
- false,
- 0x1.3fffffffffffffffffffffffff8p-148, false,
- 0x1.4p-148, false,
- 0x1.3fffffffffffffffffffffffff8p-148, false,
- 0x1.4p-148, false,
- false,
- 0x1.3fffffffffffffffffffffffffffp-148, false,
- 0x1.4p-148, false,
- 0x1.3fffffffffffffffffffffffffffp-148, false,
- 0x1.4p-148, false),
+ 0x1p-148, false, true,
+ 0x1p-148, false, true,
+ 0x1p-148, false, true,
+ 0x1.8p-148, false, true,
+ false,
+ 0x1.3ffffffffffffp-148, false, false,
+ 0x1.4p-148, false, false,
+ 0x1.3ffffffffffffp-148, false, false,
+ 0x1.4p-148, false, false,
+ false,
+ 0x1.3ffffffffffffffep-148, false, false,
+ 0x1.4p-148, false, false,
+ 0x1.3ffffffffffffffep-148, false, false,
+ 0x1.4p-148, false, false,
+ false,
+ 0x1.3ffffffffffffffep-148, false, false,
+ 0x1.4p-148, false, false,
+ 0x1.3ffffffffffffffep-148, false, false,
+ 0x1.4p-148, false, false,
+ false,
+ 0x1.3fffffffffffffffffffffffff8p-148, false, false,
+ 0x1.4p-148, false, false,
+ 0x1.3fffffffffffffffffffffffff8p-148, false, false,
+ 0x1.4p-148, false, false,
+ false,
+ 0x1.3fffffffffffffffffffffffffffp-148, false, false,
+ 0x1.4p-148, false, false,
+ 0x1.3fffffffffffffffffffffffffffp-148, false, false,
+ 0x1.4p-148, false, false),
TEST ("3.5032461608120426773093239582247903282006548546912894293926"
"70709724477706714651503716595470905303955078125e-45",
false,
- 0x1p-148, false,
- 0x1p-148, false,
- 0x1p-148, false,
- 0x1.8p-148, false,
- true,
- 0x1.4p-148, false,
- 0x1.4p-148, false,
- 0x1.4p-148, false,
- 0x1.4p-148, false,
- true,
- 0x1.4p-148, false,
- 0x1.4p-148, false,
- 0x1.4p-148, false,
- 0x1.4p-148, false,
- true,
- 0x1.4p-148, false,
- 0x1.4p-148, false,
- 0x1.4p-148, false,
- 0x1.4p-148, false,
- true,
- 0x1.4p-148, false,
- 0x1.4p-148, false,
- 0x1.4p-148, false,
- 0x1.4p-148, false,
- true,
- 0x1.4p-148, false,
- 0x1.4p-148, false,
- 0x1.4p-148, false,
- 0x1.4p-148, false),
+ 0x1p-148, false, true,
+ 0x1p-148, false, true,
+ 0x1p-148, false, true,
+ 0x1.8p-148, false, true,
+ true,
+ 0x1.4p-148, false, false,
+ 0x1.4p-148, false, false,
+ 0x1.4p-148, false, false,
+ 0x1.4p-148, false, false,
+ true,
+ 0x1.4p-148, false, false,
+ 0x1.4p-148, false, false,
+ 0x1.4p-148, false, false,
+ 0x1.4p-148, false, false,
+ true,
+ 0x1.4p-148, false, false,
+ 0x1.4p-148, false, false,
+ 0x1.4p-148, false, false,
+ 0x1.4p-148, false, false,
+ true,
+ 0x1.4p-148, false, false,
+ 0x1.4p-148, false, false,
+ 0x1.4p-148, false, false,
+ 0x1.4p-148, false, false,
+ true,
+ 0x1.4p-148, false, false,
+ 0x1.4p-148, false, false,
+ 0x1.4p-148, false, false,
+ 0x1.4p-148, false, false),
TEST ("3.5032461608120426773093239582247903282006548546912894293926"
"7070972447770671465150371659547090530395507812501e-45",
false,
- 0x1p-148, false,
- 0x1.8p-148, false,
- 0x1p-148, false,
- 0x1.8p-148, false,
- false,
- 0x1.4p-148, false,
- 0x1.4p-148, false,
- 0x1.4p-148, false,
- 0x1.4000000000001p-148, false,
- false,
- 0x1.4p-148, false,
- 0x1.4p-148, false,
- 0x1.4p-148, false,
- 0x1.4000000000000002p-148, false,
- false,
- 0x1.4p-148, false,
- 0x1.4p-148, false,
- 0x1.4p-148, false,
- 0x1.4000000000000002p-148, false,
- false,
- 0x1.4p-148, false,
- 0x1.4p-148, false,
- 0x1.4p-148, false,
- 0x1.400000000000000000000000008p-148, false,
- false,
- 0x1.4p-148, false,
- 0x1.4p-148, false,
- 0x1.4p-148, false,
- 0x1.4000000000000000000000000001p-148, false),
+ 0x1p-148, false, true,
+ 0x1.8p-148, false, true,
+ 0x1p-148, false, true,
+ 0x1.8p-148, false, true,
+ false,
+ 0x1.4p-148, false, false,
+ 0x1.4p-148, false, false,
+ 0x1.4p-148, false, false,
+ 0x1.4000000000001p-148, false, false,
+ false,
+ 0x1.4p-148, false, false,
+ 0x1.4p-148, false, false,
+ 0x1.4p-148, false, false,
+ 0x1.4000000000000002p-148, false, false,
+ false,
+ 0x1.4p-148, false, false,
+ 0x1.4p-148, false, false,
+ 0x1.4p-148, false, false,
+ 0x1.4000000000000002p-148, false, false,
+ false,
+ 0x1.4p-148, false, false,
+ 0x1.4p-148, false, false,
+ 0x1.4p-148, false, false,
+ 0x1.400000000000000000000000008p-148, false, false,
+ false,
+ 0x1.4p-148, false, false,
+ 0x1.4p-148, false, false,
+ 0x1.4p-148, false, false,
+ 0x1.4000000000000000000000000001p-148, false, false),
TEST ("-3.503246160812042677309323958224790328200654854691289429392"
"67070972447770671465150371659547090530395507812499e-45",
false,
- -0x1.8p-148, false,
- -0x1p-148, false,
- -0x1p-148, false,
- -0x1p-148, false,
- false,
- -0x1.4p-148, false,
- -0x1.4p-148, false,
- -0x1.3ffffffffffffp-148, false,
- -0x1.3ffffffffffffp-148, false,
- false,
- -0x1.4p-148, false,
- -0x1.4p-148, false,
- -0x1.3ffffffffffffffep-148, false,
- -0x1.3ffffffffffffffep-148, false,
- false,
- -0x1.4p-148, false,
- -0x1.4p-148, false,
- -0x1.3ffffffffffffffep-148, false,
- -0x1.3ffffffffffffffep-148, false,
- false,
- -0x1.4p-148, false,
- -0x1.4p-148, false,
- -0x1.3fffffffffffffffffffffffff8p-148, false,
- -0x1.3fffffffffffffffffffffffff8p-148, false,
- false,
- -0x1.4p-148, false,
- -0x1.4p-148, false,
- -0x1.3fffffffffffffffffffffffffffp-148, false,
- -0x1.3fffffffffffffffffffffffffffp-148, false),
+ -0x1.8p-148, false, true,
+ -0x1p-148, false, true,
+ -0x1p-148, false, true,
+ -0x1p-148, false, true,
+ false,
+ -0x1.4p-148, false, false,
+ -0x1.4p-148, false, false,
+ -0x1.3ffffffffffffp-148, false, false,
+ -0x1.3ffffffffffffp-148, false, false,
+ false,
+ -0x1.4p-148, false, false,
+ -0x1.4p-148, false, false,
+ -0x1.3ffffffffffffffep-148, false, false,
+ -0x1.3ffffffffffffffep-148, false, false,
+ false,
+ -0x1.4p-148, false, false,
+ -0x1.4p-148, false, false,
+ -0x1.3ffffffffffffffep-148, false, false,
+ -0x1.3ffffffffffffffep-148, false, false,
+ false,
+ -0x1.4p-148, false, false,
+ -0x1.4p-148, false, false,
+ -0x1.3fffffffffffffffffffffffff8p-148, false, false,
+ -0x1.3fffffffffffffffffffffffff8p-148, false, false,
+ false,
+ -0x1.4p-148, false, false,
+ -0x1.4p-148, false, false,
+ -0x1.3fffffffffffffffffffffffffffp-148, false, false,
+ -0x1.3fffffffffffffffffffffffffffp-148, false, false),
TEST ("-3.503246160812042677309323958224790328200654854691289429392"
"670709724477706714651503716595470905303955078125e-45",
false,
- -0x1.8p-148, false,
- -0x1p-148, false,
- -0x1p-148, false,
- -0x1p-148, false,
- true,
- -0x1.4p-148, false,
- -0x1.4p-148, false,
- -0x1.4p-148, false,
- -0x1.4p-148, false,
- true,
- -0x1.4p-148, false,
- -0x1.4p-148, false,
- -0x1.4p-148, false,
- -0x1.4p-148, false,
- true,
- -0x1.4p-148, false,
- -0x1.4p-148, false,
- -0x1.4p-148, false,
- -0x1.4p-148, false,
- true,
- -0x1.4p-148, false,
- -0x1.4p-148, false,
- -0x1.4p-148, false,
- -0x1.4p-148, false,
- true,
- -0x1.4p-148, false,
- -0x1.4p-148, false,
- -0x1.4p-148, false,
- -0x1.4p-148, false),
+ -0x1.8p-148, false, true,
+ -0x1p-148, false, true,
+ -0x1p-148, false, true,
+ -0x1p-148, false, true,
+ true,
+ -0x1.4p-148, false, false,
+ -0x1.4p-148, false, false,
+ -0x1.4p-148, false, false,
+ -0x1.4p-148, false, false,
+ true,
+ -0x1.4p-148, false, false,
+ -0x1.4p-148, false, false,
+ -0x1.4p-148, false, false,
+ -0x1.4p-148, false, false,
+ true,
+ -0x1.4p-148, false, false,
+ -0x1.4p-148, false, false,
+ -0x1.4p-148, false, false,
+ -0x1.4p-148, false, false,
+ true,
+ -0x1.4p-148, false, false,
+ -0x1.4p-148, false, false,
+ -0x1.4p-148, false, false,
+ -0x1.4p-148, false, false,
+ true,
+ -0x1.4p-148, false, false,
+ -0x1.4p-148, false, false,
+ -0x1.4p-148, false, false,
+ -0x1.4p-148, false, false),
TEST ("-3.503246160812042677309323958224790328200654854691289429392"
"67070972447770671465150371659547090530395507812501e-45",
false,
- -0x1.8p-148, false,
- -0x1.8p-148, false,
- -0x1p-148, false,
- -0x1p-148, false,
- false,
- -0x1.4000000000001p-148, false,
- -0x1.4p-148, false,
- -0x1.4p-148, false,
- -0x1.4p-148, false,
- false,
- -0x1.4000000000000002p-148, false,
- -0x1.4p-148, false,
- -0x1.4p-148, false,
- -0x1.4p-148, false,
- false,
- -0x1.4000000000000002p-148, false,
- -0x1.4p-148, false,
- -0x1.4p-148, false,
- -0x1.4p-148, false,
- false,
- -0x1.400000000000000000000000008p-148, false,
- -0x1.4p-148, false,
- -0x1.4p-148, false,
- -0x1.4p-148, false,
- false,
- -0x1.4000000000000000000000000001p-148, false,
- -0x1.4p-148, false,
- -0x1.4p-148, false,
- -0x1.4p-148, false),
+ -0x1.8p-148, false, true,
+ -0x1.8p-148, false, true,
+ -0x1p-148, false, true,
+ -0x1p-148, false, true,
+ false,
+ -0x1.4000000000001p-148, false, false,
+ -0x1.4p-148, false, false,
+ -0x1.4p-148, false, false,
+ -0x1.4p-148, false, false,
+ false,
+ -0x1.4000000000000002p-148, false, false,
+ -0x1.4p-148, false, false,
+ -0x1.4p-148, false, false,
+ -0x1.4p-148, false, false,
+ false,
+ -0x1.4000000000000002p-148, false, false,
+ -0x1.4p-148, false, false,
+ -0x1.4p-148, false, false,
+ -0x1.4p-148, false, false,
+ false,
+ -0x1.400000000000000000000000008p-148, false, false,
+ -0x1.4p-148, false, false,
+ -0x1.4p-148, false, false,
+ -0x1.4p-148, false, false,
+ false,
+ -0x1.4000000000000000000000000001p-148, false, false,
+ -0x1.4p-148, false, false,
+ -0x1.4p-148, false, false,
+ -0x1.4p-148, false, false),
TEST ("7.4109846876186981626485318930233205854758970392148714663837"
"852375101326090531312779794975454245398856969484704316857659"
"638998506553390969459816219401617281718945106978546710679176"
@@ -3818,35 +3818,35 @@ static const struct test tests[] = {
"337560846003984904972149117463085539556354188641513168478436"
"31308023759629577398300170898437499e-324",
false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-152, false,
- false,
- 0x4p-1076, false,
- 0x4p-1076, false,
- 0x4p-1076, false,
- 0x8p-1076, false,
- false,
- 0x5.fffffffffffffff8p-1076, false,
- 0x6p-1076, false,
- 0x5.fffffffffffffff8p-1076, false,
- 0x6p-1076, false,
- false,
- 0x5.fffffffffffffff8p-1076, false,
- 0x6p-1076, false,
- 0x5.fffffffffffffff8p-1076, false,
- 0x6p-1076, false,
- false,
- 0x4p-1076, false,
- 0x4p-1076, false,
- 0x4p-1076, false,
- 0x8p-1076, false,
- false,
- 0x5.fffffffffffffffffffffffffffcp-1076, false,
- 0x6p-1076, false,
- 0x5.fffffffffffffffffffffffffffcp-1076, false,
- 0x6p-1076, false),
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x4p-1076, false, true,
+ 0x4p-1076, false, true,
+ 0x4p-1076, false, true,
+ 0x8p-1076, false, true,
+ false,
+ 0x5.fffffffffffffff8p-1076, false, false,
+ 0x6p-1076, false, false,
+ 0x5.fffffffffffffff8p-1076, false, false,
+ 0x6p-1076, false, false,
+ false,
+ 0x5.fffffffffffffff8p-1076, false, false,
+ 0x6p-1076, false, false,
+ 0x5.fffffffffffffff8p-1076, false, false,
+ 0x6p-1076, false, false,
+ false,
+ 0x4p-1076, false, true,
+ 0x4p-1076, false, true,
+ 0x4p-1076, false, true,
+ 0x8p-1076, false, true,
+ false,
+ 0x5.fffffffffffffffffffffffffffcp-1076, false, false,
+ 0x6p-1076, false, false,
+ 0x5.fffffffffffffffffffffffffffcp-1076, false, false,
+ 0x6p-1076, false, false),
TEST ("7.4109846876186981626485318930233205854758970392148714663837"
"852375101326090531312779794975454245398856969484704316857659"
"638998506553390969459816219401617281718945106978546710679176"
@@ -3861,35 +3861,35 @@ static const struct test tests[] = {
"337560846003984904972149117463085539556354188641513168478436"
"313080237596295773983001708984375e-324",
false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-152, false,
- false,
- 0x4p-1076, false,
- 0x8p-1076, false,
- 0x4p-1076, false,
- 0x8p-1076, false,
- true,
- 0x6p-1076, false,
- 0x6p-1076, false,
- 0x6p-1076, false,
- 0x6p-1076, false,
- true,
- 0x6p-1076, false,
- 0x6p-1076, false,
- 0x6p-1076, false,
- 0x6p-1076, false,
- false,
- 0x4p-1076, false,
- 0x8p-1076, false,
- 0x4p-1076, false,
- 0x8p-1076, false,
- true,
- 0x6p-1076, false,
- 0x6p-1076, false,
- 0x6p-1076, false,
- 0x6p-1076, false),
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x4p-1076, false, true,
+ 0x8p-1076, false, true,
+ 0x4p-1076, false, true,
+ 0x8p-1076, false, true,
+ true,
+ 0x6p-1076, false, false,
+ 0x6p-1076, false, false,
+ 0x6p-1076, false, false,
+ 0x6p-1076, false, false,
+ true,
+ 0x6p-1076, false, false,
+ 0x6p-1076, false, false,
+ 0x6p-1076, false, false,
+ 0x6p-1076, false, false,
+ false,
+ 0x4p-1076, false, true,
+ 0x8p-1076, false, true,
+ 0x4p-1076, false, true,
+ 0x8p-1076, false, true,
+ true,
+ 0x6p-1076, false, false,
+ 0x6p-1076, false, false,
+ 0x6p-1076, false, false,
+ 0x6p-1076, false, false),
TEST ("7.4109846876186981626485318930233205854758970392148714663837"
"852375101326090531312779794975454245398856969484704316857659"
"638998506553390969459816219401617281718945106978546710679176"
@@ -3904,35 +3904,35 @@ static const struct test tests[] = {
"337560846003984904972149117463085539556354188641513168478436"
"31308023759629577398300170898437501e-324",
false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-152, false,
- false,
- 0x4p-1076, false,
- 0x8p-1076, false,
- 0x4p-1076, false,
- 0x8p-1076, false,
- false,
- 0x6p-1076, false,
- 0x6p-1076, false,
- 0x6p-1076, false,
- 0x6.0000000000000008p-1076, false,
- false,
- 0x6p-1076, false,
- 0x6p-1076, false,
- 0x6p-1076, false,
- 0x6.0000000000000008p-1076, false,
- false,
- 0x4p-1076, false,
- 0x8p-1076, false,
- 0x4p-1076, false,
- 0x8p-1076, false,
- false,
- 0x6p-1076, false,
- 0x6p-1076, false,
- 0x6p-1076, false,
- 0x6.0000000000000000000000000004p-1076, false),
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x4p-1076, false, true,
+ 0x8p-1076, false, true,
+ 0x4p-1076, false, true,
+ 0x8p-1076, false, true,
+ false,
+ 0x6p-1076, false, false,
+ 0x6p-1076, false, false,
+ 0x6p-1076, false, false,
+ 0x6.0000000000000008p-1076, false, false,
+ false,
+ 0x6p-1076, false, false,
+ 0x6p-1076, false, false,
+ 0x6p-1076, false, false,
+ 0x6.0000000000000008p-1076, false, false,
+ false,
+ 0x4p-1076, false, true,
+ 0x8p-1076, false, true,
+ 0x4p-1076, false, true,
+ 0x8p-1076, false, true,
+ false,
+ 0x6p-1076, false, false,
+ 0x6p-1076, false, false,
+ 0x6p-1076, false, false,
+ 0x6.0000000000000000000000000004p-1076, false, false),
TEST ("-7.410984687618698162648531893023320585475897039214871466383"
"785237510132609053131277979497545424539885696948470431685765"
"963899850655339096945981621940161728171894510697854671067917"
@@ -3947,35 +3947,35 @@ static const struct test tests[] = {
"433756084600398490497214911746308553955635418864151316847843"
"631308023759629577398300170898437499e-324",
false,
- -0x8p-152, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x8p-1076, false,
- -0x4p-1076, false,
- -0x4p-1076, false,
- -0x4p-1076, false,
- false,
- -0x6p-1076, false,
- -0x6p-1076, false,
- -0x5.fffffffffffffff8p-1076, false,
- -0x5.fffffffffffffff8p-1076, false,
- false,
- -0x6p-1076, false,
- -0x6p-1076, false,
- -0x5.fffffffffffffff8p-1076, false,
- -0x5.fffffffffffffff8p-1076, false,
- false,
- -0x8p-1076, false,
- -0x4p-1076, false,
- -0x4p-1076, false,
- -0x4p-1076, false,
- false,
- -0x6p-1076, false,
- -0x6p-1076, false,
- -0x5.fffffffffffffffffffffffffffcp-1076, false,
- -0x5.fffffffffffffffffffffffffffcp-1076, false),
+ -0x8p-152, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x8p-1076, false, true,
+ -0x4p-1076, false, true,
+ -0x4p-1076, false, true,
+ -0x4p-1076, false, true,
+ false,
+ -0x6p-1076, false, false,
+ -0x6p-1076, false, false,
+ -0x5.fffffffffffffff8p-1076, false, false,
+ -0x5.fffffffffffffff8p-1076, false, false,
+ false,
+ -0x6p-1076, false, false,
+ -0x6p-1076, false, false,
+ -0x5.fffffffffffffff8p-1076, false, false,
+ -0x5.fffffffffffffff8p-1076, false, false,
+ false,
+ -0x8p-1076, false, true,
+ -0x4p-1076, false, true,
+ -0x4p-1076, false, true,
+ -0x4p-1076, false, true,
+ false,
+ -0x6p-1076, false, false,
+ -0x6p-1076, false, false,
+ -0x5.fffffffffffffffffffffffffffcp-1076, false, false,
+ -0x5.fffffffffffffffffffffffffffcp-1076, false, false),
TEST ("-7.410984687618698162648531893023320585475897039214871466383"
"785237510132609053131277979497545424539885696948470431685765"
"963899850655339096945981621940161728171894510697854671067917"
@@ -3990,35 +3990,35 @@ static const struct test tests[] = {
"433756084600398490497214911746308553955635418864151316847843"
"6313080237596295773983001708984375e-324",
false,
- -0x8p-152, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x8p-1076, false,
- -0x8p-1076, false,
- -0x4p-1076, false,
- -0x4p-1076, false,
- true,
- -0x6p-1076, false,
- -0x6p-1076, false,
- -0x6p-1076, false,
- -0x6p-1076, false,
- true,
- -0x6p-1076, false,
- -0x6p-1076, false,
- -0x6p-1076, false,
- -0x6p-1076, false,
- false,
- -0x8p-1076, false,
- -0x8p-1076, false,
- -0x4p-1076, false,
- -0x4p-1076, false,
- true,
- -0x6p-1076, false,
- -0x6p-1076, false,
- -0x6p-1076, false,
- -0x6p-1076, false),
+ -0x8p-152, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x8p-1076, false, true,
+ -0x8p-1076, false, true,
+ -0x4p-1076, false, true,
+ -0x4p-1076, false, true,
+ true,
+ -0x6p-1076, false, false,
+ -0x6p-1076, false, false,
+ -0x6p-1076, false, false,
+ -0x6p-1076, false, false,
+ true,
+ -0x6p-1076, false, false,
+ -0x6p-1076, false, false,
+ -0x6p-1076, false, false,
+ -0x6p-1076, false, false,
+ false,
+ -0x8p-1076, false, true,
+ -0x8p-1076, false, true,
+ -0x4p-1076, false, true,
+ -0x4p-1076, false, true,
+ true,
+ -0x6p-1076, false, false,
+ -0x6p-1076, false, false,
+ -0x6p-1076, false, false,
+ -0x6p-1076, false, false),
TEST ("-7.410984687618698162648531893023320585475897039214871466383"
"785237510132609053131277979497545424539885696948470431685765"
"963899850655339096945981621940161728171894510697854671067917"
@@ -4033,35 +4033,35 @@ static const struct test tests[] = {
"433756084600398490497214911746308553955635418864151316847843"
"631308023759629577398300170898437501e-324",
false,
- -0x8p-152, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x8p-1076, false,
- -0x8p-1076, false,
- -0x4p-1076, false,
- -0x4p-1076, false,
- false,
- -0x6.0000000000000008p-1076, false,
- -0x6p-1076, false,
- -0x6p-1076, false,
- -0x6p-1076, false,
- false,
- -0x6.0000000000000008p-1076, false,
- -0x6p-1076, false,
- -0x6p-1076, false,
- -0x6p-1076, false,
- false,
- -0x8p-1076, false,
- -0x8p-1076, false,
- -0x4p-1076, false,
- -0x4p-1076, false,
- false,
- -0x6.0000000000000000000000000004p-1076, false,
- -0x6p-1076, false,
- -0x6p-1076, false,
- -0x6p-1076, false),
+ -0x8p-152, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x8p-1076, false, true,
+ -0x8p-1076, false, true,
+ -0x4p-1076, false, true,
+ -0x4p-1076, false, true,
+ false,
+ -0x6.0000000000000008p-1076, false, false,
+ -0x6p-1076, false, false,
+ -0x6p-1076, false, false,
+ -0x6p-1076, false, false,
+ false,
+ -0x6.0000000000000008p-1076, false, false,
+ -0x6p-1076, false, false,
+ -0x6p-1076, false, false,
+ -0x6p-1076, false, false,
+ false,
+ -0x8p-1076, false, true,
+ -0x8p-1076, false, true,
+ -0x4p-1076, false, true,
+ -0x4p-1076, false, true,
+ false,
+ -0x6.0000000000000000000000000004p-1076, false, false,
+ -0x6p-1076, false, false,
+ -0x6p-1076, false, false,
+ -0x6p-1076, false, false),
TEST ("5.4677992978237119037926089004291297245985762235403450155814"
"707305425575329500966052143410629387408077958710210208052966"
"529504784489330482549602621133847135082257338717668975178538"
@@ -4255,35 +4255,35 @@ static const struct test tests[] = {
"866268925981702690270202829595794350800918257913991744455922"
"683343374046671669930219650268554687499e-4951",
false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-152, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- false,
- 0x8p-16448, false,
- 0x8p-16448, false,
- 0x8p-16448, false,
- 0x1p-16444, false,
- false,
- 0x8p-16448, false,
- 0xcp-16448, false,
- 0x8p-16448, false,
- 0xcp-16448, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- false,
- 0xb.fffffffffffcp-16448, false,
- 0xcp-16448, false,
- 0xb.fffffffffffcp-16448, false,
- 0xcp-16448, false),
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x8p-16448, false, true,
+ 0x8p-16448, false, true,
+ 0x8p-16448, false, true,
+ 0x1p-16444, false, true,
+ false,
+ 0x8p-16448, false, true,
+ 0xcp-16448, false, true,
+ 0x8p-16448, false, true,
+ 0xcp-16448, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0xb.fffffffffffcp-16448, false, true,
+ 0xcp-16448, false, true,
+ 0xb.fffffffffffcp-16448, false, true,
+ 0xcp-16448, false, true),
TEST ("5.4677992978237119037926089004291297245985762235403450155814"
"707305425575329500966052143410629387408077958710210208052966"
"529504784489330482549602621133847135082257338717668975178538"
@@ -4477,35 +4477,35 @@ static const struct test tests[] = {
"866268925981702690270202829595794350800918257913991744455922"
"6833433740466716699302196502685546875e-4951",
false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-152, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- false,
- 0x8p-16448, false,
- 0x1p-16444, false,
- 0x8p-16448, false,
- 0x1p-16444, false,
- true,
- 0xcp-16448, false,
- 0xcp-16448, false,
- 0xcp-16448, false,
- 0xcp-16448, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- true,
- 0xcp-16448, false,
- 0xcp-16448, false,
- 0xcp-16448, false,
- 0xcp-16448, false),
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x8p-16448, false, true,
+ 0x1p-16444, false, true,
+ 0x8p-16448, false, true,
+ 0x1p-16444, false, true,
+ true,
+ 0xcp-16448, false, false,
+ 0xcp-16448, false, false,
+ 0xcp-16448, false, false,
+ 0xcp-16448, false, false,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ true,
+ 0xcp-16448, false, false,
+ 0xcp-16448, false, false,
+ 0xcp-16448, false, false,
+ 0xcp-16448, false, false),
TEST ("5.4677992978237119037926089004291297245985762235403450155814"
"707305425575329500966052143410629387408077958710210208052966"
"529504784489330482549602621133847135082257338717668975178538"
@@ -4699,35 +4699,35 @@ static const struct test tests[] = {
"866268925981702690270202829595794350800918257913991744455922"
"683343374046671669930219650268554687501e-4951",
false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-152, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- false,
- 0x8p-16448, false,
- 0x1p-16444, false,
- 0x8p-16448, false,
- 0x1p-16444, false,
- false,
- 0xcp-16448, false,
- 0xcp-16448, false,
- 0xcp-16448, false,
- 0x1p-16444, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- false,
- 0xcp-16448, false,
- 0xcp-16448, false,
- 0xcp-16448, false,
- 0xc.000000000004p-16448, false),
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x8p-16448, false, true,
+ 0x1p-16444, false, true,
+ 0x8p-16448, false, true,
+ 0x1p-16444, false, true,
+ false,
+ 0xcp-16448, false, true,
+ 0xcp-16448, false, true,
+ 0xcp-16448, false, true,
+ 0x1p-16444, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0xcp-16448, false, true,
+ 0xcp-16448, false, true,
+ 0xcp-16448, false, true,
+ 0xc.000000000004p-16448, false, true),
TEST ("-5.467799297823711903792608900429129724598576223540345015581"
"470730542557532950096605214341062938740807795871021020805296"
"652950478448933048254960262113384713508225733871766897517853"
@@ -4921,35 +4921,35 @@ static const struct test tests[] = {
"386626892598170269027020282959579435080091825791399174445592"
"2683343374046671669930219650268554687499e-4951",
false,
- -0x8p-152, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x1p-16444, false,
- -0x8p-16448, false,
- -0x8p-16448, false,
- -0x8p-16448, false,
- false,
- -0xcp-16448, false,
- -0xcp-16448, false,
- -0x8p-16448, false,
- -0x8p-16448, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0xcp-16448, false,
- -0xcp-16448, false,
- -0xb.fffffffffffcp-16448, false,
- -0xb.fffffffffffcp-16448, false),
+ -0x8p-152, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x1p-16444, false, true,
+ -0x8p-16448, false, true,
+ -0x8p-16448, false, true,
+ -0x8p-16448, false, true,
+ false,
+ -0xcp-16448, false, true,
+ -0xcp-16448, false, true,
+ -0x8p-16448, false, true,
+ -0x8p-16448, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0xcp-16448, false, true,
+ -0xcp-16448, false, true,
+ -0xb.fffffffffffcp-16448, false, true,
+ -0xb.fffffffffffcp-16448, false, true),
TEST ("-5.467799297823711903792608900429129724598576223540345015581"
"470730542557532950096605214341062938740807795871021020805296"
"652950478448933048254960262113384713508225733871766897517853"
@@ -5143,35 +5143,35 @@ static const struct test tests[] = {
"386626892598170269027020282959579435080091825791399174445592"
"26833433740466716699302196502685546875e-4951",
false,
- -0x8p-152, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x1p-16444, false,
- -0x1p-16444, false,
- -0x8p-16448, false,
- -0x8p-16448, false,
- true,
- -0xcp-16448, false,
- -0xcp-16448, false,
- -0xcp-16448, false,
- -0xcp-16448, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- true,
- -0xcp-16448, false,
- -0xcp-16448, false,
- -0xcp-16448, false,
- -0xcp-16448, false),
+ -0x8p-152, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x1p-16444, false, true,
+ -0x1p-16444, false, true,
+ -0x8p-16448, false, true,
+ -0x8p-16448, false, true,
+ true,
+ -0xcp-16448, false, false,
+ -0xcp-16448, false, false,
+ -0xcp-16448, false, false,
+ -0xcp-16448, false, false,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ true,
+ -0xcp-16448, false, false,
+ -0xcp-16448, false, false,
+ -0xcp-16448, false, false,
+ -0xcp-16448, false, false),
TEST ("-5.467799297823711903792608900429129724598576223540345015581"
"470730542557532950096605214341062938740807795871021020805296"
"652950478448933048254960262113384713508225733871766897517853"
@@ -5365,35 +5365,35 @@ static const struct test tests[] = {
"386626892598170269027020282959579435080091825791399174445592"
"2683343374046671669930219650268554687501e-4951",
false,
- -0x8p-152, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x1p-16444, false,
- -0x1p-16444, false,
- -0x8p-16448, false,
- -0x8p-16448, false,
- false,
- -0x1p-16444, false,
- -0xcp-16448, false,
- -0xcp-16448, false,
- -0xcp-16448, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0xc.000000000004p-16448, false,
- -0xcp-16448, false,
- -0xcp-16448, false,
- -0xcp-16448, false),
+ -0x8p-152, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x1p-16444, false, true,
+ -0x1p-16444, false, true,
+ -0x8p-16448, false, true,
+ -0x8p-16448, false, true,
+ false,
+ -0x1p-16444, false, true,
+ -0xcp-16448, false, true,
+ -0xcp-16448, false, true,
+ -0xcp-16448, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0xc.000000000004p-16448, false, true,
+ -0xcp-16448, false, true,
+ -0xcp-16448, false, true,
+ -0xcp-16448, false, true),
TEST ("5.4677992978237119037926089004291297245985762235403450155814"
"707305425575329500966052143410629387408077958710210208052966"
"529504784489330482549602621133847135082257338717668975178538"
@@ -5587,35 +5587,35 @@ static const struct test tests[] = {
"866268925981702690270202829595794350800918257913991744455922"
"683343374046671669930219650268554687499e-4951",
false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-152, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- false,
- 0x8p-16448, false,
- 0x8p-16448, false,
- 0x8p-16448, false,
- 0x1p-16444, false,
- false,
- 0x8p-16448, false,
- 0xcp-16448, false,
- 0x8p-16448, false,
- 0xcp-16448, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- false,
- 0xb.fffffffffffcp-16448, false,
- 0xcp-16448, false,
- 0xb.fffffffffffcp-16448, false,
- 0xcp-16448, false),
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x8p-16448, false, true,
+ 0x8p-16448, false, true,
+ 0x8p-16448, false, true,
+ 0x1p-16444, false, true,
+ false,
+ 0x8p-16448, false, true,
+ 0xcp-16448, false, true,
+ 0x8p-16448, false, true,
+ 0xcp-16448, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0xb.fffffffffffcp-16448, false, true,
+ 0xcp-16448, false, true,
+ 0xb.fffffffffffcp-16448, false, true,
+ 0xcp-16448, false, true),
TEST ("5.4677992978237119037926089004291297245985762235403450155814"
"707305425575329500966052143410629387408077958710210208052966"
"529504784489330482549602621133847135082257338717668975178538"
@@ -5809,35 +5809,35 @@ static const struct test tests[] = {
"866268925981702690270202829595794350800918257913991744455922"
"6833433740466716699302196502685546875e-4951",
false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-152, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- false,
- 0x8p-16448, false,
- 0x1p-16444, false,
- 0x8p-16448, false,
- 0x1p-16444, false,
- true,
- 0xcp-16448, false,
- 0xcp-16448, false,
- 0xcp-16448, false,
- 0xcp-16448, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- true,
- 0xcp-16448, false,
- 0xcp-16448, false,
- 0xcp-16448, false,
- 0xcp-16448, false),
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x8p-16448, false, true,
+ 0x1p-16444, false, true,
+ 0x8p-16448, false, true,
+ 0x1p-16444, false, true,
+ true,
+ 0xcp-16448, false, false,
+ 0xcp-16448, false, false,
+ 0xcp-16448, false, false,
+ 0xcp-16448, false, false,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ true,
+ 0xcp-16448, false, false,
+ 0xcp-16448, false, false,
+ 0xcp-16448, false, false,
+ 0xcp-16448, false, false),
TEST ("5.4677992978237119037926089004291297245985762235403450155814"
"707305425575329500966052143410629387408077958710210208052966"
"529504784489330482549602621133847135082257338717668975178538"
@@ -6031,35 +6031,35 @@ static const struct test tests[] = {
"866268925981702690270202829595794350800918257913991744455922"
"683343374046671669930219650268554687501e-4951",
false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-152, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- false,
- 0x8p-16448, false,
- 0x1p-16444, false,
- 0x8p-16448, false,
- 0x1p-16444, false,
- false,
- 0xcp-16448, false,
- 0xcp-16448, false,
- 0xcp-16448, false,
- 0x1p-16444, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- false,
- 0xcp-16448, false,
- 0xcp-16448, false,
- 0xcp-16448, false,
- 0xc.000000000004p-16448, false),
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x8p-16448, false, true,
+ 0x1p-16444, false, true,
+ 0x8p-16448, false, true,
+ 0x1p-16444, false, true,
+ false,
+ 0xcp-16448, false, true,
+ 0xcp-16448, false, true,
+ 0xcp-16448, false, true,
+ 0x1p-16444, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0xcp-16448, false, true,
+ 0xcp-16448, false, true,
+ 0xcp-16448, false, true,
+ 0xc.000000000004p-16448, false, true),
TEST ("-5.467799297823711903792608900429129724598576223540345015581"
"470730542557532950096605214341062938740807795871021020805296"
"652950478448933048254960262113384713508225733871766897517853"
@@ -6253,35 +6253,35 @@ static const struct test tests[] = {
"386626892598170269027020282959579435080091825791399174445592"
"2683343374046671669930219650268554687499e-4951",
false,
- -0x8p-152, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x1p-16444, false,
- -0x8p-16448, false,
- -0x8p-16448, false,
- -0x8p-16448, false,
- false,
- -0xcp-16448, false,
- -0xcp-16448, false,
- -0x8p-16448, false,
- -0x8p-16448, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0xcp-16448, false,
- -0xcp-16448, false,
- -0xb.fffffffffffcp-16448, false,
- -0xb.fffffffffffcp-16448, false),
+ -0x8p-152, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x1p-16444, false, true,
+ -0x8p-16448, false, true,
+ -0x8p-16448, false, true,
+ -0x8p-16448, false, true,
+ false,
+ -0xcp-16448, false, true,
+ -0xcp-16448, false, true,
+ -0x8p-16448, false, true,
+ -0x8p-16448, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0xcp-16448, false, true,
+ -0xcp-16448, false, true,
+ -0xb.fffffffffffcp-16448, false, true,
+ -0xb.fffffffffffcp-16448, false, true),
TEST ("-5.467799297823711903792608900429129724598576223540345015581"
"470730542557532950096605214341062938740807795871021020805296"
"652950478448933048254960262113384713508225733871766897517853"
@@ -6475,35 +6475,35 @@ static const struct test tests[] = {
"386626892598170269027020282959579435080091825791399174445592"
"26833433740466716699302196502685546875e-4951",
false,
- -0x8p-152, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x1p-16444, false,
- -0x1p-16444, false,
- -0x8p-16448, false,
- -0x8p-16448, false,
- true,
- -0xcp-16448, false,
- -0xcp-16448, false,
- -0xcp-16448, false,
- -0xcp-16448, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- true,
- -0xcp-16448, false,
- -0xcp-16448, false,
- -0xcp-16448, false,
- -0xcp-16448, false),
+ -0x8p-152, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x1p-16444, false, true,
+ -0x1p-16444, false, true,
+ -0x8p-16448, false, true,
+ -0x8p-16448, false, true,
+ true,
+ -0xcp-16448, false, false,
+ -0xcp-16448, false, false,
+ -0xcp-16448, false, false,
+ -0xcp-16448, false, false,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ true,
+ -0xcp-16448, false, false,
+ -0xcp-16448, false, false,
+ -0xcp-16448, false, false,
+ -0xcp-16448, false, false),
TEST ("-5.467799297823711903792608900429129724598576223540345015581"
"470730542557532950096605214341062938740807795871021020805296"
"652950478448933048254960262113384713508225733871766897517853"
@@ -6697,630 +6697,630 @@ static const struct test tests[] = {
"386626892598170269027020282959579435080091825791399174445592"
"2683343374046671669930219650268554687501e-4951",
false,
- -0x8p-152, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x1p-16444, false,
- -0x1p-16444, false,
- -0x8p-16448, false,
- -0x8p-16448, false,
- false,
- -0x1p-16444, false,
- -0xcp-16448, false,
- -0xcp-16448, false,
- -0xcp-16448, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0xc.000000000004p-16448, false,
- -0xcp-16448, false,
- -0xcp-16448, false,
- -0xcp-16448, false),
+ -0x8p-152, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x1p-16444, false, true,
+ -0x1p-16444, false, true,
+ -0x8p-16448, false, true,
+ -0x8p-16448, false, true,
+ false,
+ -0x1p-16444, false, true,
+ -0xcp-16448, false, true,
+ -0xcp-16448, false, true,
+ -0xcp-16448, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0xc.000000000004p-16448, false, true,
+ -0xcp-16448, false, true,
+ -0xcp-16448, false, true,
+ -0xcp-16448, false, true),
TEST ("-0x0.7p-149",
false,
- -0x8p-152, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- true,
- -0x3.8p-152, false,
- -0x3.8p-152, false,
- -0x3.8p-152, false,
- -0x3.8p-152, false,
- true,
- -0x3.8p-152, false,
- -0x3.8p-152, false,
- -0x3.8p-152, false,
- -0x3.8p-152, false,
- true,
- -0x3.8p-152, false,
- -0x3.8p-152, false,
- -0x3.8p-152, false,
- -0x3.8p-152, false,
- true,
- -0x3.8p-152, false,
- -0x3.8p-152, false,
- -0x3.8p-152, false,
- -0x3.8p-152, false,
- true,
- -0x3.8p-152, false,
- -0x3.8p-152, false,
- -0x3.8p-152, false,
- -0x3.8p-152, false),
+ -0x8p-152, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ true,
+ -0x3.8p-152, false, false,
+ -0x3.8p-152, false, false,
+ -0x3.8p-152, false, false,
+ -0x3.8p-152, false, false,
+ true,
+ -0x3.8p-152, false, false,
+ -0x3.8p-152, false, false,
+ -0x3.8p-152, false, false,
+ -0x3.8p-152, false, false,
+ true,
+ -0x3.8p-152, false, false,
+ -0x3.8p-152, false, false,
+ -0x3.8p-152, false, false,
+ -0x3.8p-152, false, false,
+ true,
+ -0x3.8p-152, false, false,
+ -0x3.8p-152, false, false,
+ -0x3.8p-152, false, false,
+ -0x3.8p-152, false, false,
+ true,
+ -0x3.8p-152, false, false,
+ -0x3.8p-152, false, false,
+ -0x3.8p-152, false, false,
+ -0x3.8p-152, false, false),
TEST ("-0x0.7p-1074",
false,
- -0x8p-152, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- true,
- -0x1.cp-1076, false,
- -0x1.cp-1076, false,
- -0x1.cp-1076, false,
- -0x1.cp-1076, false,
- true,
- -0x1.cp-1076, false,
- -0x1.cp-1076, false,
- -0x1.cp-1076, false,
- -0x1.cp-1076, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- true,
- -0x1.cp-1076, false,
- -0x1.cp-1076, false,
- -0x1.cp-1076, false,
- -0x1.cp-1076, false),
+ -0x8p-152, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ true,
+ -0x1.cp-1076, false, false,
+ -0x1.cp-1076, false, false,
+ -0x1.cp-1076, false, false,
+ -0x1.cp-1076, false, false,
+ true,
+ -0x1.cp-1076, false, false,
+ -0x1.cp-1076, false, false,
+ -0x1.cp-1076, false, false,
+ -0x1.cp-1076, false, false,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ true,
+ -0x1.cp-1076, false, false,
+ -0x1.cp-1076, false, false,
+ -0x1.cp-1076, false, false,
+ -0x1.cp-1076, false, false),
TEST ("-0x0.7p-16445",
false,
- -0x8p-152, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x8p-16448, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-16448, false,
- -0x4p-16448, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- true,
- -0x3.8p-16448, false,
- -0x3.8p-16448, false,
- -0x3.8p-16448, false,
- -0x3.8p-16448, false),
+ -0x8p-152, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x8p-16448, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-16448, false, true,
+ -0x4p-16448, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ true,
+ -0x3.8p-16448, false, false,
+ -0x3.8p-16448, false, false,
+ -0x3.8p-16448, false, false,
+ -0x3.8p-16448, false, false),
TEST ("-0x0.7p-16494",
false,
- -0x8p-152, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x8p-16448, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-16448, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-16496, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false),
+ -0x8p-152, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x8p-16448, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-16448, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-16496, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true),
TEST ("0x1p-150",
false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-152, false,
- true,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4p-152, false,
- true,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4p-152, false,
- true,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4p-152, false,
- true,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4p-152, false,
- true,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4p-152, false),
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ true,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ true,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ true,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ true,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ true,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false),
TEST ("0x1p-1075",
false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-152, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- true,
- 0x2p-1076, false,
- 0x2p-1076, false,
- 0x2p-1076, false,
- 0x2p-1076, false,
- true,
- 0x2p-1076, false,
- 0x2p-1076, false,
- 0x2p-1076, false,
- 0x2p-1076, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- true,
- 0x2p-1076, false,
- 0x2p-1076, false,
- 0x2p-1076, false,
- 0x2p-1076, false),
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ true,
+ 0x2p-1076, false, false,
+ 0x2p-1076, false, false,
+ 0x2p-1076, false, false,
+ 0x2p-1076, false, false,
+ true,
+ 0x2p-1076, false, false,
+ 0x2p-1076, false, false,
+ 0x2p-1076, false, false,
+ 0x2p-1076, false, false,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ true,
+ 0x2p-1076, false, false,
+ 0x2p-1076, false, false,
+ 0x2p-1076, false, false,
+ 0x2p-1076, false, false),
TEST ("0x1p-16446",
false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-152, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-16448, false,
- true,
- 0x4p-16448, false,
- 0x4p-16448, false,
- 0x4p-16448, false,
- 0x4p-16448, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- true,
- 0x4p-16448, false,
- 0x4p-16448, false,
- 0x4p-16448, false,
- 0x4p-16448, false),
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-16448, false, true,
+ true,
+ 0x4p-16448, false, false,
+ 0x4p-16448, false, false,
+ 0x4p-16448, false, false,
+ 0x4p-16448, false, false,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ true,
+ 0x4p-16448, false, false,
+ 0x4p-16448, false, false,
+ 0x4p-16448, false, false,
+ 0x4p-16448, false, false),
TEST ("0x1p-16495",
false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-152, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-16448, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-16448, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-16496, false),
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-16448, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-16448, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-16496, false, true),
TEST ("-0x1p-150",
false,
- -0x8p-152, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- true,
- -0x4p-152, false,
- -0x4p-152, false,
- -0x4p-152, false,
- -0x4p-152, false,
- true,
- -0x4p-152, false,
- -0x4p-152, false,
- -0x4p-152, false,
- -0x4p-152, false,
- true,
- -0x4p-152, false,
- -0x4p-152, false,
- -0x4p-152, false,
- -0x4p-152, false,
- true,
- -0x4p-152, false,
- -0x4p-152, false,
- -0x4p-152, false,
- -0x4p-152, false,
- true,
- -0x4p-152, false,
- -0x4p-152, false,
- -0x4p-152, false,
- -0x4p-152, false),
+ -0x8p-152, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ true,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ true,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ true,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ true,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ true,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false),
TEST ("-0x1p-1075",
false,
- -0x8p-152, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- true,
- -0x2p-1076, false,
- -0x2p-1076, false,
- -0x2p-1076, false,
- -0x2p-1076, false,
- true,
- -0x2p-1076, false,
- -0x2p-1076, false,
- -0x2p-1076, false,
- -0x2p-1076, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- true,
- -0x2p-1076, false,
- -0x2p-1076, false,
- -0x2p-1076, false,
- -0x2p-1076, false),
+ -0x8p-152, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ true,
+ -0x2p-1076, false, false,
+ -0x2p-1076, false, false,
+ -0x2p-1076, false, false,
+ -0x2p-1076, false, false,
+ true,
+ -0x2p-1076, false, false,
+ -0x2p-1076, false, false,
+ -0x2p-1076, false, false,
+ -0x2p-1076, false, false,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ true,
+ -0x2p-1076, false, false,
+ -0x2p-1076, false, false,
+ -0x2p-1076, false, false,
+ -0x2p-1076, false, false),
TEST ("-0x1p-16446",
false,
- -0x8p-152, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x8p-16448, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- true,
- -0x4p-16448, false,
- -0x4p-16448, false,
- -0x4p-16448, false,
- -0x4p-16448, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- true,
- -0x4p-16448, false,
- -0x4p-16448, false,
- -0x4p-16448, false,
- -0x4p-16448, false),
+ -0x8p-152, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x8p-16448, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ true,
+ -0x4p-16448, false, false,
+ -0x4p-16448, false, false,
+ -0x4p-16448, false, false,
+ -0x4p-16448, false, false,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ true,
+ -0x4p-16448, false, false,
+ -0x4p-16448, false, false,
+ -0x4p-16448, false, false,
+ -0x4p-16448, false, false),
TEST ("-0x1p-16495",
false,
- -0x8p-152, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x8p-16448, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-16448, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-16496, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false),
+ -0x8p-152, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x8p-16448, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-16448, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-16496, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true),
TEST (".70064923216240853546186479164495807e-45",
false,
- 0x0p+0, false,
- 0x8p-152, false,
- 0x0p+0, false,
- 0x8p-152, false,
- false,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4.0000000000004p-152, false,
- false,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4.0000000000000008p-152, false,
- false,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4.0000000000000008p-152, false,
- false,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4.00000000000000000000000002p-152, false,
- false,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4.0000000000000000000000000004p-152, false),
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4.0000000000004p-152, false, false,
+ false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4.0000000000000008p-152, false, false,
+ false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4.0000000000000008p-152, false, false,
+ false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4.00000000000000000000000002p-152, false, false,
+ false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4.0000000000000000000000000004p-152, false, false),
TEST ("7.0064923216240853546186479164495806564013097093825788587853"
"4141944895541342930300743319094181060791015624e-46",
false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-152, false,
- false,
- 0x3.ffffffffffffep-152, false,
- 0x4p-152, false,
- 0x3.ffffffffffffep-152, false,
- 0x4p-152, false,
- false,
- 0x3.fffffffffffffffcp-152, false,
- 0x4p-152, false,
- 0x3.fffffffffffffffcp-152, false,
- 0x4p-152, false,
- false,
- 0x3.fffffffffffffffcp-152, false,
- 0x4p-152, false,
- 0x3.fffffffffffffffcp-152, false,
- 0x4p-152, false,
- false,
- 0x3.ffffffffffffffffffffffffffp-152, false,
- 0x4p-152, false,
- 0x3.ffffffffffffffffffffffffffp-152, false,
- 0x4p-152, false,
- false,
- 0x3.fffffffffffffffffffffffffffep-152, false,
- 0x4p-152, false,
- 0x3.fffffffffffffffffffffffffffep-152, false,
- 0x4p-152, false),
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x3.ffffffffffffep-152, false, false,
+ 0x4p-152, false, false,
+ 0x3.ffffffffffffep-152, false, false,
+ 0x4p-152, false, false,
+ false,
+ 0x3.fffffffffffffffcp-152, false, false,
+ 0x4p-152, false, false,
+ 0x3.fffffffffffffffcp-152, false, false,
+ 0x4p-152, false, false,
+ false,
+ 0x3.fffffffffffffffcp-152, false, false,
+ 0x4p-152, false, false,
+ 0x3.fffffffffffffffcp-152, false, false,
+ 0x4p-152, false, false,
+ false,
+ 0x3.ffffffffffffffffffffffffffp-152, false, false,
+ 0x4p-152, false, false,
+ 0x3.ffffffffffffffffffffffffffp-152, false, false,
+ 0x4p-152, false, false,
+ false,
+ 0x3.fffffffffffffffffffffffffffep-152, false, false,
+ 0x4p-152, false, false,
+ 0x3.fffffffffffffffffffffffffffep-152, false, false,
+ 0x4p-152, false, false),
TEST ("7.0064923216240853546186479164495806564013097093825788587853"
"4141944895541342930300743319094181060791015625e-46",
false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-152, false,
- true,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4p-152, false,
- true,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4p-152, false,
- true,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4p-152, false,
- true,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4p-152, false,
- true,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4p-152, false),
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ true,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ true,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ true,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ true,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ true,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false),
TEST ("7.0064923216240853546186479164495806564013097093825788587853"
"4141944895541342930300743319094181060791015626e-46",
false,
- 0x0p+0, false,
- 0x8p-152, false,
- 0x0p+0, false,
- 0x8p-152, false,
- false,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4.0000000000004p-152, false,
- false,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4.0000000000000008p-152, false,
- false,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4.0000000000000008p-152, false,
- false,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4.00000000000000000000000002p-152, false,
- false,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4.0000000000000000000000000004p-152, false),
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4.0000000000004p-152, false, false,
+ false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4.0000000000000008p-152, false, false,
+ false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4.0000000000000008p-152, false, false,
+ false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4.00000000000000000000000002p-152, false, false,
+ false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4.0000000000000000000000000004p-152, false, false),
TEST ("-7.006492321624085354618647916449580656401309709382578858785"
"34141944895541342930300743319094181060791015624e-46",
false,
- -0x8p-152, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-152, false,
- -0x4p-152, false,
- -0x3.ffffffffffffep-152, false,
- -0x3.ffffffffffffep-152, false,
- false,
- -0x4p-152, false,
- -0x4p-152, false,
- -0x3.fffffffffffffffcp-152, false,
- -0x3.fffffffffffffffcp-152, false,
- false,
- -0x4p-152, false,
- -0x4p-152, false,
- -0x3.fffffffffffffffcp-152, false,
- -0x3.fffffffffffffffcp-152, false,
- false,
- -0x4p-152, false,
- -0x4p-152, false,
- -0x3.ffffffffffffffffffffffffffp-152, false,
- -0x3.ffffffffffffffffffffffffffp-152, false,
- false,
- -0x4p-152, false,
- -0x4p-152, false,
- -0x3.fffffffffffffffffffffffffffep-152, false,
- -0x3.fffffffffffffffffffffffffffep-152, false),
+ -0x8p-152, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ -0x3.ffffffffffffep-152, false, false,
+ -0x3.ffffffffffffep-152, false, false,
+ false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ -0x3.fffffffffffffffcp-152, false, false,
+ -0x3.fffffffffffffffcp-152, false, false,
+ false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ -0x3.fffffffffffffffcp-152, false, false,
+ -0x3.fffffffffffffffcp-152, false, false,
+ false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ -0x3.ffffffffffffffffffffffffffp-152, false, false,
+ -0x3.ffffffffffffffffffffffffffp-152, false, false,
+ false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ -0x3.fffffffffffffffffffffffffffep-152, false, false,
+ -0x3.fffffffffffffffffffffffffffep-152, false, false),
TEST ("-7.006492321624085354618647916449580656401309709382578858785"
"34141944895541342930300743319094181060791015625e-46",
false,
- -0x8p-152, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- true,
- -0x4p-152, false,
- -0x4p-152, false,
- -0x4p-152, false,
- -0x4p-152, false,
- true,
- -0x4p-152, false,
- -0x4p-152, false,
- -0x4p-152, false,
- -0x4p-152, false,
- true,
- -0x4p-152, false,
- -0x4p-152, false,
- -0x4p-152, false,
- -0x4p-152, false,
- true,
- -0x4p-152, false,
- -0x4p-152, false,
- -0x4p-152, false,
- -0x4p-152, false,
- true,
- -0x4p-152, false,
- -0x4p-152, false,
- -0x4p-152, false,
- -0x4p-152, false),
+ -0x8p-152, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ true,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ true,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ true,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ true,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ true,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false),
TEST ("-7.006492321624085354618647916449580656401309709382578858785"
"34141944895541342930300743319094181060791015626e-46",
false,
- -0x8p-152, false,
- -0x8p-152, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4.0000000000004p-152, false,
- -0x4p-152, false,
- -0x4p-152, false,
- -0x4p-152, false,
- false,
- -0x4.0000000000000008p-152, false,
- -0x4p-152, false,
- -0x4p-152, false,
- -0x4p-152, false,
- false,
- -0x4.0000000000000008p-152, false,
- -0x4p-152, false,
- -0x4p-152, false,
- -0x4p-152, false,
- false,
- -0x4.00000000000000000000000002p-152, false,
- -0x4p-152, false,
- -0x4p-152, false,
- -0x4p-152, false,
- false,
- -0x4.0000000000000000000000000004p-152, false,
- -0x4p-152, false,
- -0x4p-152, false,
- -0x4p-152, false),
+ -0x8p-152, false, true,
+ -0x8p-152, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4.0000000000004p-152, false, false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ false,
+ -0x4.0000000000000008p-152, false, false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ false,
+ -0x4.0000000000000008p-152, false, false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ false,
+ -0x4.00000000000000000000000002p-152, false, false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ false,
+ -0x4.0000000000000000000000000004p-152, false, false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false),
TEST ("2.4703282292062327208828439643411068618252990130716238221279"
"284125033775363510437593264991818081799618989828234772285886"
"546332835517796989819938739800539093906315035659515570226392"
@@ -7335,35 +7335,35 @@ static const struct test tests[] = {
"779186948667994968324049705821028513185451396213837722826145"
"437693412532098591327667236328124e-324",
false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-152, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- false,
- 0x1.fffffffffffffffep-1076, false,
- 0x2p-1076, false,
- 0x1.fffffffffffffffep-1076, false,
- 0x2p-1076, false,
- false,
- 0x1.fffffffffffffffep-1076, false,
- 0x2p-1076, false,
- 0x1.fffffffffffffffep-1076, false,
- 0x2p-1076, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- false,
- 0x1.ffffffffffffffffffffffffffffp-1076, false,
- 0x2p-1076, false,
- 0x1.ffffffffffffffffffffffffffffp-1076, false,
- 0x2p-1076, false),
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x1.fffffffffffffffep-1076, false, false,
+ 0x2p-1076, false, false,
+ 0x1.fffffffffffffffep-1076, false, false,
+ 0x2p-1076, false, false,
+ false,
+ 0x1.fffffffffffffffep-1076, false, false,
+ 0x2p-1076, false, false,
+ 0x1.fffffffffffffffep-1076, false, false,
+ 0x2p-1076, false, false,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x1.ffffffffffffffffffffffffffffp-1076, false, false,
+ 0x2p-1076, false, false,
+ 0x1.ffffffffffffffffffffffffffffp-1076, false, false,
+ 0x2p-1076, false, false),
TEST ("2.4703282292062327208828439643411068618252990130716238221279"
"284125033775363510437593264991818081799618989828234772285886"
"546332835517796989819938739800539093906315035659515570226392"
@@ -7378,35 +7378,35 @@ static const struct test tests[] = {
"779186948667994968324049705821028513185451396213837722826145"
"437693412532098591327667236328125e-324",
false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-152, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- true,
- 0x2p-1076, false,
- 0x2p-1076, false,
- 0x2p-1076, false,
- 0x2p-1076, false,
- true,
- 0x2p-1076, false,
- 0x2p-1076, false,
- 0x2p-1076, false,
- 0x2p-1076, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- true,
- 0x2p-1076, false,
- 0x2p-1076, false,
- 0x2p-1076, false,
- 0x2p-1076, false),
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ true,
+ 0x2p-1076, false, false,
+ 0x2p-1076, false, false,
+ 0x2p-1076, false, false,
+ 0x2p-1076, false, false,
+ true,
+ 0x2p-1076, false, false,
+ 0x2p-1076, false, false,
+ 0x2p-1076, false, false,
+ 0x2p-1076, false, false,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ true,
+ 0x2p-1076, false, false,
+ 0x2p-1076, false, false,
+ 0x2p-1076, false, false,
+ 0x2p-1076, false, false),
TEST ("2.4703282292062327208828439643411068618252990130716238221279"
"284125033775363510437593264991818081799618989828234772285886"
"546332835517796989819938739800539093906315035659515570226392"
@@ -7421,35 +7421,35 @@ static const struct test tests[] = {
"779186948667994968324049705821028513185451396213837722826145"
"437693412532098591327667236328126e-324",
false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-152, false,
- false,
- 0x0p+0, false,
- 0x4p-1076, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- false,
- 0x2p-1076, false,
- 0x2p-1076, false,
- 0x2p-1076, false,
- 0x2.0000000000000004p-1076, false,
- false,
- 0x2p-1076, false,
- 0x2p-1076, false,
- 0x2p-1076, false,
- 0x2.0000000000000004p-1076, false,
- false,
- 0x0p+0, false,
- 0x4p-1076, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- false,
- 0x2p-1076, false,
- 0x2p-1076, false,
- 0x2p-1076, false,
- 0x2.0000000000000000000000000002p-1076, false),
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x2p-1076, false, false,
+ 0x2p-1076, false, false,
+ 0x2p-1076, false, false,
+ 0x2.0000000000000004p-1076, false, false,
+ false,
+ 0x2p-1076, false, false,
+ 0x2p-1076, false, false,
+ 0x2p-1076, false, false,
+ 0x2.0000000000000004p-1076, false, false,
+ false,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x2p-1076, false, false,
+ 0x2p-1076, false, false,
+ 0x2p-1076, false, false,
+ 0x2.0000000000000000000000000002p-1076, false, false),
TEST ("-2.470328229206232720882843964341106861825299013071623822127"
"928412503377536351043759326499181808179961898982823477228588"
"654633283551779698981993873980053909390631503565951557022639"
@@ -7464,35 +7464,35 @@ static const struct test tests[] = {
"477918694866799496832404970582102851318545139621383772282614"
"5437693412532098591327667236328124e-324",
false,
- -0x8p-152, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x2p-1076, false,
- -0x2p-1076, false,
- -0x1.fffffffffffffffep-1076, false,
- -0x1.fffffffffffffffep-1076, false,
- false,
- -0x2p-1076, false,
- -0x2p-1076, false,
- -0x1.fffffffffffffffep-1076, false,
- -0x1.fffffffffffffffep-1076, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x2p-1076, false,
- -0x2p-1076, false,
- -0x1.ffffffffffffffffffffffffffffp-1076, false,
- -0x1.ffffffffffffffffffffffffffffp-1076, false),
+ -0x8p-152, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x2p-1076, false, false,
+ -0x2p-1076, false, false,
+ -0x1.fffffffffffffffep-1076, false, false,
+ -0x1.fffffffffffffffep-1076, false, false,
+ false,
+ -0x2p-1076, false, false,
+ -0x2p-1076, false, false,
+ -0x1.fffffffffffffffep-1076, false, false,
+ -0x1.fffffffffffffffep-1076, false, false,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x2p-1076, false, false,
+ -0x2p-1076, false, false,
+ -0x1.ffffffffffffffffffffffffffffp-1076, false, false,
+ -0x1.ffffffffffffffffffffffffffffp-1076, false, false),
TEST ("-2.470328229206232720882843964341106861825299013071623822127"
"928412503377536351043759326499181808179961898982823477228588"
"654633283551779698981993873980053909390631503565951557022639"
@@ -7507,35 +7507,35 @@ static const struct test tests[] = {
"477918694866799496832404970582102851318545139621383772282614"
"5437693412532098591327667236328125e-324",
false,
- -0x8p-152, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- true,
- -0x2p-1076, false,
- -0x2p-1076, false,
- -0x2p-1076, false,
- -0x2p-1076, false,
- true,
- -0x2p-1076, false,
- -0x2p-1076, false,
- -0x2p-1076, false,
- -0x2p-1076, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- true,
- -0x2p-1076, false,
- -0x2p-1076, false,
- -0x2p-1076, false,
- -0x2p-1076, false),
+ -0x8p-152, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ true,
+ -0x2p-1076, false, false,
+ -0x2p-1076, false, false,
+ -0x2p-1076, false, false,
+ -0x2p-1076, false, false,
+ true,
+ -0x2p-1076, false, false,
+ -0x2p-1076, false, false,
+ -0x2p-1076, false, false,
+ -0x2p-1076, false, false,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ true,
+ -0x2p-1076, false, false,
+ -0x2p-1076, false, false,
+ -0x2p-1076, false, false,
+ -0x2p-1076, false, false),
TEST ("-2.470328229206232720882843964341106861825299013071623822127"
"928412503377536351043759326499181808179961898982823477228588"
"654633283551779698981993873980053909390631503565951557022639"
@@ -7550,35 +7550,35 @@ static const struct test tests[] = {
"477918694866799496832404970582102851318545139621383772282614"
"5437693412532098591327667236328126e-324",
false,
- -0x8p-152, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x2.0000000000000004p-1076, false,
- -0x2p-1076, false,
- -0x2p-1076, false,
- -0x2p-1076, false,
- false,
- -0x2.0000000000000004p-1076, false,
- -0x2p-1076, false,
- -0x2p-1076, false,
- -0x2p-1076, false,
- false,
- -0x4p-1076, false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x2.0000000000000000000000000002p-1076, false,
- -0x2p-1076, false,
- -0x2p-1076, false,
- -0x2p-1076, false),
+ -0x8p-152, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x2.0000000000000004p-1076, false, false,
+ -0x2p-1076, false, false,
+ -0x2p-1076, false, false,
+ -0x2p-1076, false, false,
+ false,
+ -0x2.0000000000000004p-1076, false, false,
+ -0x2p-1076, false, false,
+ -0x2p-1076, false, false,
+ -0x2p-1076, false, false,
+ false,
+ -0x4p-1076, false, true,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x2.0000000000000000000000000002p-1076, false, false,
+ -0x2p-1076, false, false,
+ -0x2p-1076, false, false,
+ -0x2p-1076, false, false),
TEST ("1.8225997659412373012642029668097099081995254078467816718604"
"902435141858443166988684047803543129136025986236736736017655"
"509834928163110160849867540377949045027419112905889658392846"
@@ -7772,35 +7772,35 @@ static const struct test tests[] = {
"622089641993900896756734276531931450266972752637997248151974"
"2277811246822238899767398834228515624e-4951",
false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-152, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-16448, false,
- false,
- 0x0p+0, false,
- 0x4p-16448, false,
- 0x0p+0, false,
- 0x4p-16448, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- false,
- 0x3.fffffffffffcp-16448, false,
- 0x4p-16448, false,
- 0x3.fffffffffffcp-16448, false,
- 0x4p-16448, false),
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-16448, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x4p-16448, false, true,
+ 0x0p+0, false, true,
+ 0x4p-16448, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x3.fffffffffffcp-16448, false, true,
+ 0x4p-16448, false, true,
+ 0x3.fffffffffffcp-16448, false, true,
+ 0x4p-16448, false, true),
TEST ("1.8225997659412373012642029668097099081995254078467816718604"
"902435141858443166988684047803543129136025986236736736017655"
"509834928163110160849867540377949045027419112905889658392846"
@@ -7994,35 +7994,35 @@ static const struct test tests[] = {
"622089641993900896756734276531931450266972752637997248151974"
"2277811246822238899767398834228515625e-4951",
false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-152, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-16448, false,
- true,
- 0x4p-16448, false,
- 0x4p-16448, false,
- 0x4p-16448, false,
- 0x4p-16448, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- true,
- 0x4p-16448, false,
- 0x4p-16448, false,
- 0x4p-16448, false,
- 0x4p-16448, false),
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-16448, false, true,
+ true,
+ 0x4p-16448, false, false,
+ 0x4p-16448, false, false,
+ 0x4p-16448, false, false,
+ 0x4p-16448, false, false,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ true,
+ 0x4p-16448, false, false,
+ 0x4p-16448, false, false,
+ 0x4p-16448, false, false,
+ 0x4p-16448, false, false),
TEST ("1.8225997659412373012642029668097099081995254078467816718604"
"902435141858443166988684047803543129136025986236736736017655"
"509834928163110160849867540377949045027419112905889658392846"
@@ -8216,35 +8216,35 @@ static const struct test tests[] = {
"622089641993900896756734276531931450266972752637997248151974"
"2277811246822238899767398834228515626e-4951",
false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-152, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- false,
- 0x0p+0, false,
- 0x8p-16448, false,
- 0x0p+0, false,
- 0x8p-16448, false,
- false,
- 0x4p-16448, false,
- 0x4p-16448, false,
- 0x4p-16448, false,
- 0x8p-16448, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- false,
- 0x4p-16448, false,
- 0x4p-16448, false,
- 0x4p-16448, false,
- 0x4.000000000004p-16448, false),
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x8p-16448, false, true,
+ 0x0p+0, false, true,
+ 0x8p-16448, false, true,
+ false,
+ 0x4p-16448, false, true,
+ 0x4p-16448, false, true,
+ 0x4p-16448, false, true,
+ 0x8p-16448, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x4p-16448, false, true,
+ 0x4p-16448, false, true,
+ 0x4p-16448, false, true,
+ 0x4.000000000004p-16448, false, true),
TEST ("-1.822599765941237301264202966809709908199525407846781671860"
"490243514185844316698868404780354312913602598623673673601765"
"550983492816311016084986754037794904502741911290588965839284"
@@ -8438,35 +8438,35 @@ static const struct test tests[] = {
"462208964199390089675673427653193145026697275263799724815197"
"42277811246822238899767398834228515624e-4951",
false,
- -0x8p-152, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x8p-16448, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-16448, false,
- -0x4p-16448, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-16448, false,
- -0x4p-16448, false,
- -0x3.fffffffffffcp-16448, false,
- -0x3.fffffffffffcp-16448, false),
+ -0x8p-152, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x8p-16448, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-16448, false, true,
+ -0x4p-16448, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-16448, false, true,
+ -0x4p-16448, false, true,
+ -0x3.fffffffffffcp-16448, false, true,
+ -0x3.fffffffffffcp-16448, false, true),
TEST ("-1.822599765941237301264202966809709908199525407846781671860"
"490243514185844316698868404780354312913602598623673673601765"
"550983492816311016084986754037794904502741911290588965839284"
@@ -8660,35 +8660,35 @@ static const struct test tests[] = {
"462208964199390089675673427653193145026697275263799724815197"
"42277811246822238899767398834228515625e-4951",
false,
- -0x8p-152, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x8p-16448, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- true,
- -0x4p-16448, false,
- -0x4p-16448, false,
- -0x4p-16448, false,
- -0x4p-16448, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- true,
- -0x4p-16448, false,
- -0x4p-16448, false,
- -0x4p-16448, false,
- -0x4p-16448, false),
+ -0x8p-152, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x8p-16448, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ true,
+ -0x4p-16448, false, false,
+ -0x4p-16448, false, false,
+ -0x4p-16448, false, false,
+ -0x4p-16448, false, false,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ true,
+ -0x4p-16448, false, false,
+ -0x4p-16448, false, false,
+ -0x4p-16448, false, false,
+ -0x4p-16448, false, false),
TEST ("-1.822599765941237301264202966809709908199525407846781671860"
"490243514185844316698868404780354312913602598623673673601765"
"550983492816311016084986754037794904502741911290588965839284"
@@ -8882,35 +8882,35 @@ static const struct test tests[] = {
"462208964199390089675673427653193145026697275263799724815197"
"42277811246822238899767398834228515626e-4951",
false,
- -0x8p-152, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x8p-16448, false,
- -0x8p-16448, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x8p-16448, false,
- -0x4p-16448, false,
- -0x4p-16448, false,
- -0x4p-16448, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4.000000000004p-16448, false,
- -0x4p-16448, false,
- -0x4p-16448, false,
- -0x4p-16448, false),
+ -0x8p-152, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x8p-16448, false, true,
+ -0x8p-16448, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x8p-16448, false, true,
+ -0x4p-16448, false, true,
+ -0x4p-16448, false, true,
+ -0x4p-16448, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4.000000000004p-16448, false, true,
+ -0x4p-16448, false, true,
+ -0x4p-16448, false, true,
+ -0x4p-16448, false, true),
TEST ("9.1129988297061865063210148340485495409976270392339083593024"
"512175709292215834943420239017715645680129931183683680088277"
"549174640815550804249337701889745225137095564529448291964230"
@@ -9104,35 +9104,35 @@ static const struct test tests[] = {
"110448209969504483783671382659657251334863763189986240759871"
"1389056234111194498836994171142578124e-4952",
false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-152, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-16448, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-16448, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- false,
- 0x1.fffffffffffcp-16448, false,
- 0x2p-16448, false,
- 0x1.fffffffffffcp-16448, false,
- 0x2p-16448, false),
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-16448, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-16448, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x1.fffffffffffcp-16448, false, true,
+ 0x2p-16448, false, true,
+ 0x1.fffffffffffcp-16448, false, true,
+ 0x2p-16448, false, true),
TEST ("9.1129988297061865063210148340485495409976270392339083593024"
"512175709292215834943420239017715645680129931183683680088277"
"549174640815550804249337701889745225137095564529448291964230"
@@ -9326,35 +9326,35 @@ static const struct test tests[] = {
"110448209969504483783671382659657251334863763189986240759871"
"1389056234111194498836994171142578125e-4952",
false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-152, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-16448, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-16448, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- true,
- 0x2p-16448, false,
- 0x2p-16448, false,
- 0x2p-16448, false,
- 0x2p-16448, false),
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-16448, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-16448, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ true,
+ 0x2p-16448, false, false,
+ 0x2p-16448, false, false,
+ 0x2p-16448, false, false,
+ 0x2p-16448, false, false),
TEST ("9.1129988297061865063210148340485495409976270392339083593024"
"512175709292215834943420239017715645680129931183683680088277"
"549174640815550804249337701889745225137095564529448291964230"
@@ -9548,35 +9548,35 @@ static const struct test tests[] = {
"110448209969504483783671382659657251334863763189986240759871"
"1389056234111194498836994171142578126e-4952",
false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-152, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-16448, false,
- false,
- 0x0p+0, false,
- 0x4p-16448, false,
- 0x0p+0, false,
- 0x4p-16448, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- false,
- 0x2p-16448, false,
- 0x2p-16448, false,
- 0x2p-16448, false,
- 0x2.000000000004p-16448, false),
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-16448, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x4p-16448, false, true,
+ 0x0p+0, false, true,
+ 0x4p-16448, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x2p-16448, false, true,
+ 0x2p-16448, false, true,
+ 0x2p-16448, false, true,
+ 0x2.000000000004p-16448, false, true),
TEST ("-9.112998829706186506321014834048549540997627039233908359302"
"451217570929221583494342023901771564568012993118368368008827"
"754917464081555080424933770188974522513709556452944829196423"
@@ -9770,35 +9770,35 @@ static const struct test tests[] = {
"311044820996950448378367138265965725133486376318998624075987"
"11389056234111194498836994171142578124e-4952",
false,
- -0x8p-152, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x8p-16448, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-16448, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x2p-16448, false,
- -0x2p-16448, false,
- -0x1.fffffffffffcp-16448, false,
- -0x1.fffffffffffcp-16448, false),
+ -0x8p-152, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x8p-16448, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-16448, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x2p-16448, false, true,
+ -0x2p-16448, false, true,
+ -0x1.fffffffffffcp-16448, false, true,
+ -0x1.fffffffffffcp-16448, false, true),
TEST ("-9.112998829706186506321014834048549540997627039233908359302"
"451217570929221583494342023901771564568012993118368368008827"
"754917464081555080424933770188974522513709556452944829196423"
@@ -9992,35 +9992,35 @@ static const struct test tests[] = {
"311044820996950448378367138265965725133486376318998624075987"
"11389056234111194498836994171142578125e-4952",
false,
- -0x8p-152, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x8p-16448, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-16448, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- true,
- -0x2p-16448, false,
- -0x2p-16448, false,
- -0x2p-16448, false,
- -0x2p-16448, false),
+ -0x8p-152, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x8p-16448, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-16448, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ true,
+ -0x2p-16448, false, false,
+ -0x2p-16448, false, false,
+ -0x2p-16448, false, false,
+ -0x2p-16448, false, false),
TEST ("-9.112998829706186506321014834048549540997627039233908359302"
"451217570929221583494342023901771564568012993118368368008827"
"754917464081555080424933770188974522513709556452944829196423"
@@ -10214,35 +10214,35 @@ static const struct test tests[] = {
"311044820996950448378367138265965725133486376318998624075987"
"11389056234111194498836994171142578126e-4952",
false,
- -0x8p-152, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x8p-16448, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-16448, false,
- -0x4p-16448, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x2.000000000004p-16448, false,
- -0x2p-16448, false,
- -0x2p-16448, false,
- -0x2p-16448, false),
+ -0x8p-152, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x8p-16448, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-16448, false, true,
+ -0x4p-16448, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x2.000000000004p-16448, false, true,
+ -0x2p-16448, false, true,
+ -0x2p-16448, false, true,
+ -0x2p-16448, false, true),
TEST ("3.2375875597190125554622194791138232762497846690173405048449"
"421945985197700620596855088357456383249701279390707384240598"
"382936099431912710233425550359863089915213963553756674672083"
@@ -10437,35 +10437,35 @@ static const struct test tests[] = {
"182358152808745703724362178773168996492870519432472065091133"
"11767578124e-4966",
false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-152, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-16448, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-16448, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-16496, false),
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-16448, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-16448, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-16496, false, true),
TEST ("3.2375875597190125554622194791138232762497846690173405048449"
"421945985197700620596855088357456383249701279390707384240598"
"382936099431912710233425550359863089915213963553756674672083"
@@ -10660,35 +10660,35 @@ static const struct test tests[] = {
"182358152808745703724362178773168996492870519432472065091133"
"11767578125e-4966",
false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-152, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-16448, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-16448, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-16496, false),
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-16448, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-16448, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-16496, false, true),
TEST ("3.2375875597190125554622194791138232762497846690173405048449"
"421945985197700620596855088357456383249701279390707384240598"
"382936099431912710233425550359863089915213963553756674672083"
@@ -10883,35 +10883,35 @@ static const struct test tests[] = {
"182358152808745703724362178773168996492870519432472065091133"
"11767578126e-4966",
false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-152, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-16448, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-16448, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- false,
- 0x0p+0, false,
- 0x4p-16496, false,
- 0x0p+0, false,
- 0x4p-16496, false),
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-16448, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-16448, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x4p-16496, false, true,
+ 0x0p+0, false, true,
+ 0x4p-16496, false, true),
TEST ("-3.237587559719012555462219479113823276249784669017340504844"
"942194598519770062059685508835745638324970127939070738424059"
"838293609943191271023342555035986308991521396355375667467208"
@@ -11106,35 +11106,35 @@ static const struct test tests[] = {
"218235815280874570372436217877316899649287051943247206509113"
"311767578124e-4966",
false,
- -0x8p-152, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x8p-16448, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-16448, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-16496, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false),
+ -0x8p-152, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x8p-16448, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-16448, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-16496, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true),
TEST ("-3.237587559719012555462219479113823276249784669017340504844"
"942194598519770062059685508835745638324970127939070738424059"
"838293609943191271023342555035986308991521396355375667467208"
@@ -11329,35 +11329,35 @@ static const struct test tests[] = {
"218235815280874570372436217877316899649287051943247206509113"
"311767578125e-4966",
false,
- -0x8p-152, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x8p-16448, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-16448, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-16496, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false),
+ -0x8p-152, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x8p-16448, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-16448, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-16496, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true),
TEST ("-3.237587559719012555462219479113823276249784669017340504844"
"942194598519770062059685508835745638324970127939070738424059"
"838293609943191271023342555035986308991521396355375667467208"
@@ -11552,66 +11552,66 @@ static const struct test tests[] = {
"218235815280874570372436217877316899649287051943247206509113"
"311767578126e-4966",
false,
- -0x8p-152, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x8p-16448, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-16448, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-16496, false,
- -0x4p-16496, false,
- -0x0p+0, false,
- -0x0p+0, false),
+ -0x8p-152, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x8p-16448, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-16448, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-16496, false, true,
+ -0x4p-16496, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true),
TEST ("340282366920938463463374607431768211455",
false,
- 0xf.fffffp+124, false,
- INF, true,
- 0xf.fffffp+124, false,
- INF, true,
- false,
- 0xf.ffffffffffff8p+124, false,
- 0x1p+128, false,
- 0xf.ffffffffffff8p+124, false,
- 0x1p+128, false,
- false,
- 0xf.fffffffffffffffp+124, false,
- 0x1p+128, false,
- 0xf.fffffffffffffffp+124, false,
- 0x1p+128, false,
- false,
- 0xf.fffffffffffffffp+124, false,
- 0x1p+128, false,
- 0xf.fffffffffffffffp+124, false,
- 0x1p+128, false,
- false,
- 0xf.fffffffffffffffffffffffffcp+124, false,
- 0x1p+128, false,
- 0xf.fffffffffffffffffffffffffcp+124, false,
- 0x1p+128, false,
- false,
- 0xf.fffffffffffffffffffffffffff8p+124, false,
- 0x1p+128, false,
- 0xf.fffffffffffffffffffffffffff8p+124, false,
- 0x1p+128, false),
+ 0xf.fffffp+124, false, false,
+ INF, true, false,
+ 0xf.fffffp+124, false, false,
+ INF, true, false,
+ false,
+ 0xf.ffffffffffff8p+124, false, false,
+ 0x1p+128, false, false,
+ 0xf.ffffffffffff8p+124, false, false,
+ 0x1p+128, false, false,
+ false,
+ 0xf.fffffffffffffffp+124, false, false,
+ 0x1p+128, false, false,
+ 0xf.fffffffffffffffp+124, false, false,
+ 0x1p+128, false, false,
+ false,
+ 0xf.fffffffffffffffp+124, false, false,
+ 0x1p+128, false, false,
+ 0xf.fffffffffffffffp+124, false, false,
+ 0x1p+128, false, false,
+ false,
+ 0xf.fffffffffffffffffffffffffcp+124, false, false,
+ 0x1p+128, false, false,
+ 0xf.fffffffffffffffffffffffffcp+124, false, false,
+ 0x1p+128, false, false,
+ false,
+ 0xf.fffffffffffffffffffffffffff8p+124, false, false,
+ 0x1p+128, false, false,
+ 0xf.fffffffffffffffffffffffffff8p+124, false, false,
+ 0x1p+128, false, false),
TEST ("179769313486231590772930519078902473361797697894230657273430"
"081157732675805500963132708477322407536021120113879871393357"
"658789768814416622492847430639474124377767893424865485276302"
@@ -11619,35 +11619,35 @@ static const struct test tests[] = {
"540827237163350510684586298239947245938479716304835356329624"
"224137215",
false,
- 0xf.fffffp+124, true,
- INF, true,
- 0xf.fffffp+124, true,
- INF, true,
- false,
- 0xf.ffffffffffff8p+1020, false,
- INF, true,
- 0xf.ffffffffffff8p+1020, false,
- INF, true,
- false,
- 0xf.fffffffffffffffp+1020, false,
- 0x1p+1024, false,
- 0xf.fffffffffffffffp+1020, false,
- 0x1p+1024, false,
- false,
- 0xf.fffffffffffffffp+1020, false,
- 0x1p+1024, false,
- 0xf.fffffffffffffffp+1020, false,
- 0x1p+1024, false,
- false,
- 0xf.fffffffffffffffffffffffffcp+1020, true,
- INF, true,
- 0xf.fffffffffffffffffffffffffcp+1020, true,
- INF, true,
- false,
- 0xf.fffffffffffffffffffffffffff8p+1020, false,
- 0x1p+1024, false,
- 0xf.fffffffffffffffffffffffffff8p+1020, false,
- 0x1p+1024, false),
+ 0xf.fffffp+124, true, false,
+ INF, true, false,
+ 0xf.fffffp+124, true, false,
+ INF, true, false,
+ false,
+ 0xf.ffffffffffff8p+1020, false, false,
+ INF, true, false,
+ 0xf.ffffffffffff8p+1020, false, false,
+ INF, true, false,
+ false,
+ 0xf.fffffffffffffffp+1020, false, false,
+ 0x1p+1024, false, false,
+ 0xf.fffffffffffffffp+1020, false, false,
+ 0x1p+1024, false, false,
+ false,
+ 0xf.fffffffffffffffp+1020, false, false,
+ 0x1p+1024, false, false,
+ 0xf.fffffffffffffffp+1020, false, false,
+ 0x1p+1024, false, false,
+ false,
+ 0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ INF, true, false,
+ 0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ INF, true, false,
+ false,
+ 0xf.fffffffffffffffffffffffffff8p+1020, false, false,
+ 0x1p+1024, false, false,
+ 0xf.fffffffffffffffffffffffffff8p+1020, false, false,
+ 0x1p+1024, false, false),
TEST ("118973149535723176508575932662800713076344468709651023747267"
"482123326135818048368690448859547261203991511543748483930925"
"889766738130868742627452469834156500608087163436600489752214"
@@ -11732,66 +11732,66 @@ static const struct test tests[] = {
"047398248889922809181821393428829567971736994315246044702729"
"0669964066815",
false,
- 0xf.fffffp+124, true,
- INF, true,
- 0xf.fffffp+124, true,
- INF, true,
- false,
- 0xf.ffffffffffff8p+1020, true,
- INF, true,
- 0xf.ffffffffffff8p+1020, true,
- INF, true,
- false,
- 0xf.fffffffffffffffp+16380, false,
- INF, true,
- 0xf.fffffffffffffffp+16380, false,
- INF, true,
- false,
- 0xf.fffffffffffffffp+16380, false,
- INF, true,
- 0xf.fffffffffffffffp+16380, false,
- INF, true,
- false,
- 0xf.fffffffffffffffffffffffffcp+1020, true,
- INF, true,
- 0xf.fffffffffffffffffffffffffcp+1020, true,
- INF, true,
- false,
- 0xf.fffffffffffffffffffffffffff8p+16380, false,
- INF, true,
- 0xf.fffffffffffffffffffffffffff8p+16380, false,
- INF, true),
+ 0xf.fffffp+124, true, false,
+ INF, true, false,
+ 0xf.fffffp+124, true, false,
+ INF, true, false,
+ false,
+ 0xf.ffffffffffff8p+1020, true, false,
+ INF, true, false,
+ 0xf.ffffffffffff8p+1020, true, false,
+ INF, true, false,
+ false,
+ 0xf.fffffffffffffffp+16380, false, false,
+ INF, true, false,
+ 0xf.fffffffffffffffp+16380, false, false,
+ INF, true, false,
+ false,
+ 0xf.fffffffffffffffp+16380, false, false,
+ INF, true, false,
+ 0xf.fffffffffffffffp+16380, false, false,
+ INF, true, false,
+ false,
+ 0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ INF, true, false,
+ 0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ INF, true, false,
+ false,
+ 0xf.fffffffffffffffffffffffffff8p+16380, false, false,
+ INF, true, false,
+ 0xf.fffffffffffffffffffffffffff8p+16380, false, false,
+ INF, true, false),
TEST ("-340282366920938463463374607431768211455",
false,
- -INF, true,
- -INF, true,
- -0xf.fffffp+124, false,
- -0xf.fffffp+124, false,
- false,
- -0x1p+128, false,
- -0x1p+128, false,
- -0xf.ffffffffffff8p+124, false,
- -0xf.ffffffffffff8p+124, false,
- false,
- -0x1p+128, false,
- -0x1p+128, false,
- -0xf.fffffffffffffffp+124, false,
- -0xf.fffffffffffffffp+124, false,
- false,
- -0x1p+128, false,
- -0x1p+128, false,
- -0xf.fffffffffffffffp+124, false,
- -0xf.fffffffffffffffp+124, false,
- false,
- -0x1p+128, false,
- -0x1p+128, false,
- -0xf.fffffffffffffffffffffffffcp+124, false,
- -0xf.fffffffffffffffffffffffffcp+124, false,
- false,
- -0x1p+128, false,
- -0x1p+128, false,
- -0xf.fffffffffffffffffffffffffff8p+124, false,
- -0xf.fffffffffffffffffffffffffff8p+124, false),
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffp+124, false, false,
+ -0xf.fffffp+124, false, false,
+ false,
+ -0x1p+128, false, false,
+ -0x1p+128, false, false,
+ -0xf.ffffffffffff8p+124, false, false,
+ -0xf.ffffffffffff8p+124, false, false,
+ false,
+ -0x1p+128, false, false,
+ -0x1p+128, false, false,
+ -0xf.fffffffffffffffp+124, false, false,
+ -0xf.fffffffffffffffp+124, false, false,
+ false,
+ -0x1p+128, false, false,
+ -0x1p+128, false, false,
+ -0xf.fffffffffffffffp+124, false, false,
+ -0xf.fffffffffffffffp+124, false, false,
+ false,
+ -0x1p+128, false, false,
+ -0x1p+128, false, false,
+ -0xf.fffffffffffffffffffffffffcp+124, false, false,
+ -0xf.fffffffffffffffffffffffffcp+124, false, false,
+ false,
+ -0x1p+128, false, false,
+ -0x1p+128, false, false,
+ -0xf.fffffffffffffffffffffffffff8p+124, false, false,
+ -0xf.fffffffffffffffffffffffffff8p+124, false, false),
TEST ("-17976931348623159077293051907890247336179769789423065727343"
"008115773267580550096313270847732240753602112011387987139335"
"765878976881441662249284743063947412437776789342486548527630"
@@ -11799,35 +11799,35 @@ static const struct test tests[] = {
"054082723716335051068458629823994724593847971630483535632962"
"4224137215",
false,
- -INF, true,
- -INF, true,
- -0xf.fffffp+124, true,
- -0xf.fffffp+124, true,
- false,
- -INF, true,
- -INF, true,
- -0xf.ffffffffffff8p+1020, false,
- -0xf.ffffffffffff8p+1020, false,
- false,
- -0x1p+1024, false,
- -0x1p+1024, false,
- -0xf.fffffffffffffffp+1020, false,
- -0xf.fffffffffffffffp+1020, false,
- false,
- -0x1p+1024, false,
- -0x1p+1024, false,
- -0xf.fffffffffffffffp+1020, false,
- -0xf.fffffffffffffffp+1020, false,
- false,
- -INF, true,
- -INF, true,
- -0xf.fffffffffffffffffffffffffcp+1020, true,
- -0xf.fffffffffffffffffffffffffcp+1020, true,
- false,
- -0x1p+1024, false,
- -0x1p+1024, false,
- -0xf.fffffffffffffffffffffffffff8p+1020, false,
- -0xf.fffffffffffffffffffffffffff8p+1020, false),
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffp+124, true, false,
+ -0xf.fffffp+124, true, false,
+ false,
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.ffffffffffff8p+1020, false, false,
+ -0xf.ffffffffffff8p+1020, false, false,
+ false,
+ -0x1p+1024, false, false,
+ -0x1p+1024, false, false,
+ -0xf.fffffffffffffffp+1020, false, false,
+ -0xf.fffffffffffffffp+1020, false, false,
+ false,
+ -0x1p+1024, false, false,
+ -0x1p+1024, false, false,
+ -0xf.fffffffffffffffp+1020, false, false,
+ -0xf.fffffffffffffffp+1020, false, false,
+ false,
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ -0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ false,
+ -0x1p+1024, false, false,
+ -0x1p+1024, false, false,
+ -0xf.fffffffffffffffffffffffffff8p+1020, false, false,
+ -0xf.fffffffffffffffffffffffffff8p+1020, false, false),
TEST ("-11897314953572317650857593266280071307634446870965102374726"
"748212332613581804836869044885954726120399151154374848393092"
"588976673813086874262745246983415650060808716343660048975221"
@@ -11912,3529 +11912,3901 @@ static const struct test tests[] = {
"904739824888992280918182139342882956797173699431524604470272"
"90669964066815",
false,
- -INF, true,
- -INF, true,
- -0xf.fffffp+124, true,
- -0xf.fffffp+124, true,
- false,
- -INF, true,
- -INF, true,
- -0xf.ffffffffffff8p+1020, true,
- -0xf.ffffffffffff8p+1020, true,
- false,
- -INF, true,
- -INF, true,
- -0xf.fffffffffffffffp+16380, false,
- -0xf.fffffffffffffffp+16380, false,
- false,
- -INF, true,
- -INF, true,
- -0xf.fffffffffffffffp+16380, false,
- -0xf.fffffffffffffffp+16380, false,
- false,
- -INF, true,
- -INF, true,
- -0xf.fffffffffffffffffffffffffcp+1020, true,
- -0xf.fffffffffffffffffffffffffcp+1020, true,
- false,
- -INF, true,
- -INF, true,
- -0xf.fffffffffffffffffffffffffff8p+16380, false,
- -0xf.fffffffffffffffffffffffffff8p+16380, false),
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffp+124, true, false,
+ -0xf.fffffp+124, true, false,
+ false,
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.ffffffffffff8p+1020, true, false,
+ -0xf.ffffffffffff8p+1020, true, false,
+ false,
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffffffffffffp+16380, false, false,
+ -0xf.fffffffffffffffp+16380, false, false,
+ false,
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffffffffffffp+16380, false, false,
+ -0xf.fffffffffffffffp+16380, false, false,
+ false,
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ -0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ false,
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffffffffffffffffffffffff8p+16380, false, false,
+ -0xf.fffffffffffffffffffffffffff8p+16380, false, false),
TEST ("+0x.80000000000000000000000000000001p1025",
false,
- 0xf.fffffp+124, true,
- INF, true,
- 0xf.fffffp+124, true,
- INF, true,
- false,
- 0xf.ffffffffffff8p+1020, true,
- INF, true,
- 0xf.ffffffffffff8p+1020, true,
- INF, true,
- false,
- 0x1p+1024, false,
- 0x1p+1024, false,
- 0x1p+1024, false,
- 0x1.0000000000000002p+1024, false,
- false,
- 0x1p+1024, false,
- 0x1p+1024, false,
- 0x1p+1024, false,
- 0x1.0000000000000002p+1024, false,
- false,
- 0xf.fffffffffffffffffffffffffcp+1020, true,
- INF, true,
- 0xf.fffffffffffffffffffffffffcp+1020, true,
- INF, true,
- false,
- 0x1p+1024, false,
- 0x1p+1024, false,
- 0x1p+1024, false,
- 0x1.0000000000000000000000000001p+1024, false),
+ 0xf.fffffp+124, true, false,
+ INF, true, false,
+ 0xf.fffffp+124, true, false,
+ INF, true, false,
+ false,
+ 0xf.ffffffffffff8p+1020, true, false,
+ INF, true, false,
+ 0xf.ffffffffffff8p+1020, true, false,
+ INF, true, false,
+ false,
+ 0x1p+1024, false, false,
+ 0x1p+1024, false, false,
+ 0x1p+1024, false, false,
+ 0x1.0000000000000002p+1024, false, false,
+ false,
+ 0x1p+1024, false, false,
+ 0x1p+1024, false, false,
+ 0x1p+1024, false, false,
+ 0x1.0000000000000002p+1024, false, false,
+ false,
+ 0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ INF, true, false,
+ 0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ INF, true, false,
+ false,
+ 0x1p+1024, false, false,
+ 0x1p+1024, false, false,
+ 0x1p+1024, false, false,
+ 0x1.0000000000000000000000000001p+1024, false, false),
TEST ("1.5",
true,
- 0x1.8p+0, false,
- 0x1.8p+0, false,
- 0x1.8p+0, false,
- 0x1.8p+0, false,
- true,
- 0x1.8p+0, false,
- 0x1.8p+0, false,
- 0x1.8p+0, false,
- 0x1.8p+0, false,
- true,
- 0x1.8p+0, false,
- 0x1.8p+0, false,
- 0x1.8p+0, false,
- 0x1.8p+0, false,
- true,
- 0x1.8p+0, false,
- 0x1.8p+0, false,
- 0x1.8p+0, false,
- 0x1.8p+0, false,
- true,
- 0x1.8p+0, false,
- 0x1.8p+0, false,
- 0x1.8p+0, false,
- 0x1.8p+0, false,
- true,
- 0x1.8p+0, false,
- 0x1.8p+0, false,
- 0x1.8p+0, false,
- 0x1.8p+0, false),
+ 0x1.8p+0, false, false,
+ 0x1.8p+0, false, false,
+ 0x1.8p+0, false, false,
+ 0x1.8p+0, false, false,
+ true,
+ 0x1.8p+0, false, false,
+ 0x1.8p+0, false, false,
+ 0x1.8p+0, false, false,
+ 0x1.8p+0, false, false,
+ true,
+ 0x1.8p+0, false, false,
+ 0x1.8p+0, false, false,
+ 0x1.8p+0, false, false,
+ 0x1.8p+0, false, false,
+ true,
+ 0x1.8p+0, false, false,
+ 0x1.8p+0, false, false,
+ 0x1.8p+0, false, false,
+ 0x1.8p+0, false, false,
+ true,
+ 0x1.8p+0, false, false,
+ 0x1.8p+0, false, false,
+ 0x1.8p+0, false, false,
+ 0x1.8p+0, false, false,
+ true,
+ 0x1.8p+0, false, false,
+ 0x1.8p+0, false, false,
+ 0x1.8p+0, false, false,
+ 0x1.8p+0, false, false),
TEST ("1.25",
true,
- 0x1.4p+0, false,
- 0x1.4p+0, false,
- 0x1.4p+0, false,
- 0x1.4p+0, false,
- true,
- 0x1.4p+0, false,
- 0x1.4p+0, false,
- 0x1.4p+0, false,
- 0x1.4p+0, false,
- true,
- 0x1.4p+0, false,
- 0x1.4p+0, false,
- 0x1.4p+0, false,
- 0x1.4p+0, false,
- true,
- 0x1.4p+0, false,
- 0x1.4p+0, false,
- 0x1.4p+0, false,
- 0x1.4p+0, false,
- true,
- 0x1.4p+0, false,
- 0x1.4p+0, false,
- 0x1.4p+0, false,
- 0x1.4p+0, false,
- true,
- 0x1.4p+0, false,
- 0x1.4p+0, false,
- 0x1.4p+0, false,
- 0x1.4p+0, false),
+ 0x1.4p+0, false, false,
+ 0x1.4p+0, false, false,
+ 0x1.4p+0, false, false,
+ 0x1.4p+0, false, false,
+ true,
+ 0x1.4p+0, false, false,
+ 0x1.4p+0, false, false,
+ 0x1.4p+0, false, false,
+ 0x1.4p+0, false, false,
+ true,
+ 0x1.4p+0, false, false,
+ 0x1.4p+0, false, false,
+ 0x1.4p+0, false, false,
+ 0x1.4p+0, false, false,
+ true,
+ 0x1.4p+0, false, false,
+ 0x1.4p+0, false, false,
+ 0x1.4p+0, false, false,
+ 0x1.4p+0, false, false,
+ true,
+ 0x1.4p+0, false, false,
+ 0x1.4p+0, false, false,
+ 0x1.4p+0, false, false,
+ 0x1.4p+0, false, false,
+ true,
+ 0x1.4p+0, false, false,
+ 0x1.4p+0, false, false,
+ 0x1.4p+0, false, false,
+ 0x1.4p+0, false, false),
TEST ("1.125",
true,
- 0x1.2p+0, false,
- 0x1.2p+0, false,
- 0x1.2p+0, false,
- 0x1.2p+0, false,
- true,
- 0x1.2p+0, false,
- 0x1.2p+0, false,
- 0x1.2p+0, false,
- 0x1.2p+0, false,
- true,
- 0x1.2p+0, false,
- 0x1.2p+0, false,
- 0x1.2p+0, false,
- 0x1.2p+0, false,
- true,
- 0x1.2p+0, false,
- 0x1.2p+0, false,
- 0x1.2p+0, false,
- 0x1.2p+0, false,
- true,
- 0x1.2p+0, false,
- 0x1.2p+0, false,
- 0x1.2p+0, false,
- 0x1.2p+0, false,
- true,
- 0x1.2p+0, false,
- 0x1.2p+0, false,
- 0x1.2p+0, false,
- 0x1.2p+0, false),
+ 0x1.2p+0, false, false,
+ 0x1.2p+0, false, false,
+ 0x1.2p+0, false, false,
+ 0x1.2p+0, false, false,
+ true,
+ 0x1.2p+0, false, false,
+ 0x1.2p+0, false, false,
+ 0x1.2p+0, false, false,
+ 0x1.2p+0, false, false,
+ true,
+ 0x1.2p+0, false, false,
+ 0x1.2p+0, false, false,
+ 0x1.2p+0, false, false,
+ 0x1.2p+0, false, false,
+ true,
+ 0x1.2p+0, false, false,
+ 0x1.2p+0, false, false,
+ 0x1.2p+0, false, false,
+ 0x1.2p+0, false, false,
+ true,
+ 0x1.2p+0, false, false,
+ 0x1.2p+0, false, false,
+ 0x1.2p+0, false, false,
+ 0x1.2p+0, false, false,
+ true,
+ 0x1.2p+0, false, false,
+ 0x1.2p+0, false, false,
+ 0x1.2p+0, false, false,
+ 0x1.2p+0, false, false),
TEST ("1.0625",
true,
- 0x1.1p+0, false,
- 0x1.1p+0, false,
- 0x1.1p+0, false,
- 0x1.1p+0, false,
- true,
- 0x1.1p+0, false,
- 0x1.1p+0, false,
- 0x1.1p+0, false,
- 0x1.1p+0, false,
- true,
- 0x1.1p+0, false,
- 0x1.1p+0, false,
- 0x1.1p+0, false,
- 0x1.1p+0, false,
- true,
- 0x1.1p+0, false,
- 0x1.1p+0, false,
- 0x1.1p+0, false,
- 0x1.1p+0, false,
- true,
- 0x1.1p+0, false,
- 0x1.1p+0, false,
- 0x1.1p+0, false,
- 0x1.1p+0, false,
- true,
- 0x1.1p+0, false,
- 0x1.1p+0, false,
- 0x1.1p+0, false,
- 0x1.1p+0, false),
+ 0x1.1p+0, false, false,
+ 0x1.1p+0, false, false,
+ 0x1.1p+0, false, false,
+ 0x1.1p+0, false, false,
+ true,
+ 0x1.1p+0, false, false,
+ 0x1.1p+0, false, false,
+ 0x1.1p+0, false, false,
+ 0x1.1p+0, false, false,
+ true,
+ 0x1.1p+0, false, false,
+ 0x1.1p+0, false, false,
+ 0x1.1p+0, false, false,
+ 0x1.1p+0, false, false,
+ true,
+ 0x1.1p+0, false, false,
+ 0x1.1p+0, false, false,
+ 0x1.1p+0, false, false,
+ 0x1.1p+0, false, false,
+ true,
+ 0x1.1p+0, false, false,
+ 0x1.1p+0, false, false,
+ 0x1.1p+0, false, false,
+ 0x1.1p+0, false, false,
+ true,
+ 0x1.1p+0, false, false,
+ 0x1.1p+0, false, false,
+ 0x1.1p+0, false, false,
+ 0x1.1p+0, false, false),
TEST ("1.03125",
true,
- 0x1.08p+0, false,
- 0x1.08p+0, false,
- 0x1.08p+0, false,
- 0x1.08p+0, false,
- true,
- 0x1.08p+0, false,
- 0x1.08p+0, false,
- 0x1.08p+0, false,
- 0x1.08p+0, false,
- true,
- 0x1.08p+0, false,
- 0x1.08p+0, false,
- 0x1.08p+0, false,
- 0x1.08p+0, false,
- true,
- 0x1.08p+0, false,
- 0x1.08p+0, false,
- 0x1.08p+0, false,
- 0x1.08p+0, false,
- true,
- 0x1.08p+0, false,
- 0x1.08p+0, false,
- 0x1.08p+0, false,
- 0x1.08p+0, false,
- true,
- 0x1.08p+0, false,
- 0x1.08p+0, false,
- 0x1.08p+0, false,
- 0x1.08p+0, false),
+ 0x1.08p+0, false, false,
+ 0x1.08p+0, false, false,
+ 0x1.08p+0, false, false,
+ 0x1.08p+0, false, false,
+ true,
+ 0x1.08p+0, false, false,
+ 0x1.08p+0, false, false,
+ 0x1.08p+0, false, false,
+ 0x1.08p+0, false, false,
+ true,
+ 0x1.08p+0, false, false,
+ 0x1.08p+0, false, false,
+ 0x1.08p+0, false, false,
+ 0x1.08p+0, false, false,
+ true,
+ 0x1.08p+0, false, false,
+ 0x1.08p+0, false, false,
+ 0x1.08p+0, false, false,
+ 0x1.08p+0, false, false,
+ true,
+ 0x1.08p+0, false, false,
+ 0x1.08p+0, false, false,
+ 0x1.08p+0, false, false,
+ 0x1.08p+0, false, false,
+ true,
+ 0x1.08p+0, false, false,
+ 0x1.08p+0, false, false,
+ 0x1.08p+0, false, false,
+ 0x1.08p+0, false, false),
TEST ("1.015625",
true,
- 0x1.04p+0, false,
- 0x1.04p+0, false,
- 0x1.04p+0, false,
- 0x1.04p+0, false,
- true,
- 0x1.04p+0, false,
- 0x1.04p+0, false,
- 0x1.04p+0, false,
- 0x1.04p+0, false,
- true,
- 0x1.04p+0, false,
- 0x1.04p+0, false,
- 0x1.04p+0, false,
- 0x1.04p+0, false,
- true,
- 0x1.04p+0, false,
- 0x1.04p+0, false,
- 0x1.04p+0, false,
- 0x1.04p+0, false,
- true,
- 0x1.04p+0, false,
- 0x1.04p+0, false,
- 0x1.04p+0, false,
- 0x1.04p+0, false,
- true,
- 0x1.04p+0, false,
- 0x1.04p+0, false,
- 0x1.04p+0, false,
- 0x1.04p+0, false),
+ 0x1.04p+0, false, false,
+ 0x1.04p+0, false, false,
+ 0x1.04p+0, false, false,
+ 0x1.04p+0, false, false,
+ true,
+ 0x1.04p+0, false, false,
+ 0x1.04p+0, false, false,
+ 0x1.04p+0, false, false,
+ 0x1.04p+0, false, false,
+ true,
+ 0x1.04p+0, false, false,
+ 0x1.04p+0, false, false,
+ 0x1.04p+0, false, false,
+ 0x1.04p+0, false, false,
+ true,
+ 0x1.04p+0, false, false,
+ 0x1.04p+0, false, false,
+ 0x1.04p+0, false, false,
+ 0x1.04p+0, false, false,
+ true,
+ 0x1.04p+0, false, false,
+ 0x1.04p+0, false, false,
+ 0x1.04p+0, false, false,
+ 0x1.04p+0, false, false,
+ true,
+ 0x1.04p+0, false, false,
+ 0x1.04p+0, false, false,
+ 0x1.04p+0, false, false,
+ 0x1.04p+0, false, false),
TEST ("1.0078125",
true,
- 0x1.02p+0, false,
- 0x1.02p+0, false,
- 0x1.02p+0, false,
- 0x1.02p+0, false,
- true,
- 0x1.02p+0, false,
- 0x1.02p+0, false,
- 0x1.02p+0, false,
- 0x1.02p+0, false,
- true,
- 0x1.02p+0, false,
- 0x1.02p+0, false,
- 0x1.02p+0, false,
- 0x1.02p+0, false,
- true,
- 0x1.02p+0, false,
- 0x1.02p+0, false,
- 0x1.02p+0, false,
- 0x1.02p+0, false,
- true,
- 0x1.02p+0, false,
- 0x1.02p+0, false,
- 0x1.02p+0, false,
- 0x1.02p+0, false,
- true,
- 0x1.02p+0, false,
- 0x1.02p+0, false,
- 0x1.02p+0, false,
- 0x1.02p+0, false),
+ 0x1.02p+0, false, false,
+ 0x1.02p+0, false, false,
+ 0x1.02p+0, false, false,
+ 0x1.02p+0, false, false,
+ true,
+ 0x1.02p+0, false, false,
+ 0x1.02p+0, false, false,
+ 0x1.02p+0, false, false,
+ 0x1.02p+0, false, false,
+ true,
+ 0x1.02p+0, false, false,
+ 0x1.02p+0, false, false,
+ 0x1.02p+0, false, false,
+ 0x1.02p+0, false, false,
+ true,
+ 0x1.02p+0, false, false,
+ 0x1.02p+0, false, false,
+ 0x1.02p+0, false, false,
+ 0x1.02p+0, false, false,
+ true,
+ 0x1.02p+0, false, false,
+ 0x1.02p+0, false, false,
+ 0x1.02p+0, false, false,
+ 0x1.02p+0, false, false,
+ true,
+ 0x1.02p+0, false, false,
+ 0x1.02p+0, false, false,
+ 0x1.02p+0, false, false,
+ 0x1.02p+0, false, false),
TEST ("1.00390625",
true,
- 0x1.01p+0, false,
- 0x1.01p+0, false,
- 0x1.01p+0, false,
- 0x1.01p+0, false,
- true,
- 0x1.01p+0, false,
- 0x1.01p+0, false,
- 0x1.01p+0, false,
- 0x1.01p+0, false,
- true,
- 0x1.01p+0, false,
- 0x1.01p+0, false,
- 0x1.01p+0, false,
- 0x1.01p+0, false,
- true,
- 0x1.01p+0, false,
- 0x1.01p+0, false,
- 0x1.01p+0, false,
- 0x1.01p+0, false,
- true,
- 0x1.01p+0, false,
- 0x1.01p+0, false,
- 0x1.01p+0, false,
- 0x1.01p+0, false,
- true,
- 0x1.01p+0, false,
- 0x1.01p+0, false,
- 0x1.01p+0, false,
- 0x1.01p+0, false),
+ 0x1.01p+0, false, false,
+ 0x1.01p+0, false, false,
+ 0x1.01p+0, false, false,
+ 0x1.01p+0, false, false,
+ true,
+ 0x1.01p+0, false, false,
+ 0x1.01p+0, false, false,
+ 0x1.01p+0, false, false,
+ 0x1.01p+0, false, false,
+ true,
+ 0x1.01p+0, false, false,
+ 0x1.01p+0, false, false,
+ 0x1.01p+0, false, false,
+ 0x1.01p+0, false, false,
+ true,
+ 0x1.01p+0, false, false,
+ 0x1.01p+0, false, false,
+ 0x1.01p+0, false, false,
+ 0x1.01p+0, false, false,
+ true,
+ 0x1.01p+0, false, false,
+ 0x1.01p+0, false, false,
+ 0x1.01p+0, false, false,
+ 0x1.01p+0, false, false,
+ true,
+ 0x1.01p+0, false, false,
+ 0x1.01p+0, false, false,
+ 0x1.01p+0, false, false,
+ 0x1.01p+0, false, false),
TEST ("1.001953125",
true,
- 0x1.008p+0, false,
- 0x1.008p+0, false,
- 0x1.008p+0, false,
- 0x1.008p+0, false,
- true,
- 0x1.008p+0, false,
- 0x1.008p+0, false,
- 0x1.008p+0, false,
- 0x1.008p+0, false,
- true,
- 0x1.008p+0, false,
- 0x1.008p+0, false,
- 0x1.008p+0, false,
- 0x1.008p+0, false,
- true,
- 0x1.008p+0, false,
- 0x1.008p+0, false,
- 0x1.008p+0, false,
- 0x1.008p+0, false,
- true,
- 0x1.008p+0, false,
- 0x1.008p+0, false,
- 0x1.008p+0, false,
- 0x1.008p+0, false,
- true,
- 0x1.008p+0, false,
- 0x1.008p+0, false,
- 0x1.008p+0, false,
- 0x1.008p+0, false),
+ 0x1.008p+0, false, false,
+ 0x1.008p+0, false, false,
+ 0x1.008p+0, false, false,
+ 0x1.008p+0, false, false,
+ true,
+ 0x1.008p+0, false, false,
+ 0x1.008p+0, false, false,
+ 0x1.008p+0, false, false,
+ 0x1.008p+0, false, false,
+ true,
+ 0x1.008p+0, false, false,
+ 0x1.008p+0, false, false,
+ 0x1.008p+0, false, false,
+ 0x1.008p+0, false, false,
+ true,
+ 0x1.008p+0, false, false,
+ 0x1.008p+0, false, false,
+ 0x1.008p+0, false, false,
+ 0x1.008p+0, false, false,
+ true,
+ 0x1.008p+0, false, false,
+ 0x1.008p+0, false, false,
+ 0x1.008p+0, false, false,
+ 0x1.008p+0, false, false,
+ true,
+ 0x1.008p+0, false, false,
+ 0x1.008p+0, false, false,
+ 0x1.008p+0, false, false,
+ 0x1.008p+0, false, false),
TEST ("1.0009765625",
true,
- 0x1.004p+0, false,
- 0x1.004p+0, false,
- 0x1.004p+0, false,
- 0x1.004p+0, false,
- true,
- 0x1.004p+0, false,
- 0x1.004p+0, false,
- 0x1.004p+0, false,
- 0x1.004p+0, false,
- true,
- 0x1.004p+0, false,
- 0x1.004p+0, false,
- 0x1.004p+0, false,
- 0x1.004p+0, false,
- true,
- 0x1.004p+0, false,
- 0x1.004p+0, false,
- 0x1.004p+0, false,
- 0x1.004p+0, false,
- true,
- 0x1.004p+0, false,
- 0x1.004p+0, false,
- 0x1.004p+0, false,
- 0x1.004p+0, false,
- true,
- 0x1.004p+0, false,
- 0x1.004p+0, false,
- 0x1.004p+0, false,
- 0x1.004p+0, false),
+ 0x1.004p+0, false, false,
+ 0x1.004p+0, false, false,
+ 0x1.004p+0, false, false,
+ 0x1.004p+0, false, false,
+ true,
+ 0x1.004p+0, false, false,
+ 0x1.004p+0, false, false,
+ 0x1.004p+0, false, false,
+ 0x1.004p+0, false, false,
+ true,
+ 0x1.004p+0, false, false,
+ 0x1.004p+0, false, false,
+ 0x1.004p+0, false, false,
+ 0x1.004p+0, false, false,
+ true,
+ 0x1.004p+0, false, false,
+ 0x1.004p+0, false, false,
+ 0x1.004p+0, false, false,
+ 0x1.004p+0, false, false,
+ true,
+ 0x1.004p+0, false, false,
+ 0x1.004p+0, false, false,
+ 0x1.004p+0, false, false,
+ 0x1.004p+0, false, false,
+ true,
+ 0x1.004p+0, false, false,
+ 0x1.004p+0, false, false,
+ 0x1.004p+0, false, false,
+ 0x1.004p+0, false, false),
TEST ("1.00048828125",
true,
- 0x1.002p+0, false,
- 0x1.002p+0, false,
- 0x1.002p+0, false,
- 0x1.002p+0, false,
- true,
- 0x1.002p+0, false,
- 0x1.002p+0, false,
- 0x1.002p+0, false,
- 0x1.002p+0, false,
- true,
- 0x1.002p+0, false,
- 0x1.002p+0, false,
- 0x1.002p+0, false,
- 0x1.002p+0, false,
- true,
- 0x1.002p+0, false,
- 0x1.002p+0, false,
- 0x1.002p+0, false,
- 0x1.002p+0, false,
- true,
- 0x1.002p+0, false,
- 0x1.002p+0, false,
- 0x1.002p+0, false,
- 0x1.002p+0, false,
- true,
- 0x1.002p+0, false,
- 0x1.002p+0, false,
- 0x1.002p+0, false,
- 0x1.002p+0, false),
+ 0x1.002p+0, false, false,
+ 0x1.002p+0, false, false,
+ 0x1.002p+0, false, false,
+ 0x1.002p+0, false, false,
+ true,
+ 0x1.002p+0, false, false,
+ 0x1.002p+0, false, false,
+ 0x1.002p+0, false, false,
+ 0x1.002p+0, false, false,
+ true,
+ 0x1.002p+0, false, false,
+ 0x1.002p+0, false, false,
+ 0x1.002p+0, false, false,
+ 0x1.002p+0, false, false,
+ true,
+ 0x1.002p+0, false, false,
+ 0x1.002p+0, false, false,
+ 0x1.002p+0, false, false,
+ 0x1.002p+0, false, false,
+ true,
+ 0x1.002p+0, false, false,
+ 0x1.002p+0, false, false,
+ 0x1.002p+0, false, false,
+ 0x1.002p+0, false, false,
+ true,
+ 0x1.002p+0, false, false,
+ 0x1.002p+0, false, false,
+ 0x1.002p+0, false, false,
+ 0x1.002p+0, false, false),
TEST ("1.000244140625",
true,
- 0x1.001p+0, false,
- 0x1.001p+0, false,
- 0x1.001p+0, false,
- 0x1.001p+0, false,
- true,
- 0x1.001p+0, false,
- 0x1.001p+0, false,
- 0x1.001p+0, false,
- 0x1.001p+0, false,
- true,
- 0x1.001p+0, false,
- 0x1.001p+0, false,
- 0x1.001p+0, false,
- 0x1.001p+0, false,
- true,
- 0x1.001p+0, false,
- 0x1.001p+0, false,
- 0x1.001p+0, false,
- 0x1.001p+0, false,
- true,
- 0x1.001p+0, false,
- 0x1.001p+0, false,
- 0x1.001p+0, false,
- 0x1.001p+0, false,
- true,
- 0x1.001p+0, false,
- 0x1.001p+0, false,
- 0x1.001p+0, false,
- 0x1.001p+0, false),
+ 0x1.001p+0, false, false,
+ 0x1.001p+0, false, false,
+ 0x1.001p+0, false, false,
+ 0x1.001p+0, false, false,
+ true,
+ 0x1.001p+0, false, false,
+ 0x1.001p+0, false, false,
+ 0x1.001p+0, false, false,
+ 0x1.001p+0, false, false,
+ true,
+ 0x1.001p+0, false, false,
+ 0x1.001p+0, false, false,
+ 0x1.001p+0, false, false,
+ 0x1.001p+0, false, false,
+ true,
+ 0x1.001p+0, false, false,
+ 0x1.001p+0, false, false,
+ 0x1.001p+0, false, false,
+ 0x1.001p+0, false, false,
+ true,
+ 0x1.001p+0, false, false,
+ 0x1.001p+0, false, false,
+ 0x1.001p+0, false, false,
+ 0x1.001p+0, false, false,
+ true,
+ 0x1.001p+0, false, false,
+ 0x1.001p+0, false, false,
+ 0x1.001p+0, false, false,
+ 0x1.001p+0, false, false),
TEST ("1.0001220703125",
true,
- 0x1.0008p+0, false,
- 0x1.0008p+0, false,
- 0x1.0008p+0, false,
- 0x1.0008p+0, false,
- true,
- 0x1.0008p+0, false,
- 0x1.0008p+0, false,
- 0x1.0008p+0, false,
- 0x1.0008p+0, false,
- true,
- 0x1.0008p+0, false,
- 0x1.0008p+0, false,
- 0x1.0008p+0, false,
- 0x1.0008p+0, false,
- true,
- 0x1.0008p+0, false,
- 0x1.0008p+0, false,
- 0x1.0008p+0, false,
- 0x1.0008p+0, false,
- true,
- 0x1.0008p+0, false,
- 0x1.0008p+0, false,
- 0x1.0008p+0, false,
- 0x1.0008p+0, false,
- true,
- 0x1.0008p+0, false,
- 0x1.0008p+0, false,
- 0x1.0008p+0, false,
- 0x1.0008p+0, false),
+ 0x1.0008p+0, false, false,
+ 0x1.0008p+0, false, false,
+ 0x1.0008p+0, false, false,
+ 0x1.0008p+0, false, false,
+ true,
+ 0x1.0008p+0, false, false,
+ 0x1.0008p+0, false, false,
+ 0x1.0008p+0, false, false,
+ 0x1.0008p+0, false, false,
+ true,
+ 0x1.0008p+0, false, false,
+ 0x1.0008p+0, false, false,
+ 0x1.0008p+0, false, false,
+ 0x1.0008p+0, false, false,
+ true,
+ 0x1.0008p+0, false, false,
+ 0x1.0008p+0, false, false,
+ 0x1.0008p+0, false, false,
+ 0x1.0008p+0, false, false,
+ true,
+ 0x1.0008p+0, false, false,
+ 0x1.0008p+0, false, false,
+ 0x1.0008p+0, false, false,
+ 0x1.0008p+0, false, false,
+ true,
+ 0x1.0008p+0, false, false,
+ 0x1.0008p+0, false, false,
+ 0x1.0008p+0, false, false,
+ 0x1.0008p+0, false, false),
TEST ("1.00006103515625",
true,
- 0x1.0004p+0, false,
- 0x1.0004p+0, false,
- 0x1.0004p+0, false,
- 0x1.0004p+0, false,
- true,
- 0x1.0004p+0, false,
- 0x1.0004p+0, false,
- 0x1.0004p+0, false,
- 0x1.0004p+0, false,
- true,
- 0x1.0004p+0, false,
- 0x1.0004p+0, false,
- 0x1.0004p+0, false,
- 0x1.0004p+0, false,
- true,
- 0x1.0004p+0, false,
- 0x1.0004p+0, false,
- 0x1.0004p+0, false,
- 0x1.0004p+0, false,
- true,
- 0x1.0004p+0, false,
- 0x1.0004p+0, false,
- 0x1.0004p+0, false,
- 0x1.0004p+0, false,
- true,
- 0x1.0004p+0, false,
- 0x1.0004p+0, false,
- 0x1.0004p+0, false,
- 0x1.0004p+0, false),
+ 0x1.0004p+0, false, false,
+ 0x1.0004p+0, false, false,
+ 0x1.0004p+0, false, false,
+ 0x1.0004p+0, false, false,
+ true,
+ 0x1.0004p+0, false, false,
+ 0x1.0004p+0, false, false,
+ 0x1.0004p+0, false, false,
+ 0x1.0004p+0, false, false,
+ true,
+ 0x1.0004p+0, false, false,
+ 0x1.0004p+0, false, false,
+ 0x1.0004p+0, false, false,
+ 0x1.0004p+0, false, false,
+ true,
+ 0x1.0004p+0, false, false,
+ 0x1.0004p+0, false, false,
+ 0x1.0004p+0, false, false,
+ 0x1.0004p+0, false, false,
+ true,
+ 0x1.0004p+0, false, false,
+ 0x1.0004p+0, false, false,
+ 0x1.0004p+0, false, false,
+ 0x1.0004p+0, false, false,
+ true,
+ 0x1.0004p+0, false, false,
+ 0x1.0004p+0, false, false,
+ 0x1.0004p+0, false, false,
+ 0x1.0004p+0, false, false),
TEST ("1.000030517578125",
true,
- 0x1.0002p+0, false,
- 0x1.0002p+0, false,
- 0x1.0002p+0, false,
- 0x1.0002p+0, false,
- true,
- 0x1.0002p+0, false,
- 0x1.0002p+0, false,
- 0x1.0002p+0, false,
- 0x1.0002p+0, false,
- true,
- 0x1.0002p+0, false,
- 0x1.0002p+0, false,
- 0x1.0002p+0, false,
- 0x1.0002p+0, false,
- true,
- 0x1.0002p+0, false,
- 0x1.0002p+0, false,
- 0x1.0002p+0, false,
- 0x1.0002p+0, false,
- true,
- 0x1.0002p+0, false,
- 0x1.0002p+0, false,
- 0x1.0002p+0, false,
- 0x1.0002p+0, false,
- true,
- 0x1.0002p+0, false,
- 0x1.0002p+0, false,
- 0x1.0002p+0, false,
- 0x1.0002p+0, false),
+ 0x1.0002p+0, false, false,
+ 0x1.0002p+0, false, false,
+ 0x1.0002p+0, false, false,
+ 0x1.0002p+0, false, false,
+ true,
+ 0x1.0002p+0, false, false,
+ 0x1.0002p+0, false, false,
+ 0x1.0002p+0, false, false,
+ 0x1.0002p+0, false, false,
+ true,
+ 0x1.0002p+0, false, false,
+ 0x1.0002p+0, false, false,
+ 0x1.0002p+0, false, false,
+ 0x1.0002p+0, false, false,
+ true,
+ 0x1.0002p+0, false, false,
+ 0x1.0002p+0, false, false,
+ 0x1.0002p+0, false, false,
+ 0x1.0002p+0, false, false,
+ true,
+ 0x1.0002p+0, false, false,
+ 0x1.0002p+0, false, false,
+ 0x1.0002p+0, false, false,
+ 0x1.0002p+0, false, false,
+ true,
+ 0x1.0002p+0, false, false,
+ 0x1.0002p+0, false, false,
+ 0x1.0002p+0, false, false,
+ 0x1.0002p+0, false, false),
TEST ("1.0000152587890625",
true,
- 0x1.0001p+0, false,
- 0x1.0001p+0, false,
- 0x1.0001p+0, false,
- 0x1.0001p+0, false,
- true,
- 0x1.0001p+0, false,
- 0x1.0001p+0, false,
- 0x1.0001p+0, false,
- 0x1.0001p+0, false,
- true,
- 0x1.0001p+0, false,
- 0x1.0001p+0, false,
- 0x1.0001p+0, false,
- 0x1.0001p+0, false,
- true,
- 0x1.0001p+0, false,
- 0x1.0001p+0, false,
- 0x1.0001p+0, false,
- 0x1.0001p+0, false,
- true,
- 0x1.0001p+0, false,
- 0x1.0001p+0, false,
- 0x1.0001p+0, false,
- 0x1.0001p+0, false,
- true,
- 0x1.0001p+0, false,
- 0x1.0001p+0, false,
- 0x1.0001p+0, false,
- 0x1.0001p+0, false),
+ 0x1.0001p+0, false, false,
+ 0x1.0001p+0, false, false,
+ 0x1.0001p+0, false, false,
+ 0x1.0001p+0, false, false,
+ true,
+ 0x1.0001p+0, false, false,
+ 0x1.0001p+0, false, false,
+ 0x1.0001p+0, false, false,
+ 0x1.0001p+0, false, false,
+ true,
+ 0x1.0001p+0, false, false,
+ 0x1.0001p+0, false, false,
+ 0x1.0001p+0, false, false,
+ 0x1.0001p+0, false, false,
+ true,
+ 0x1.0001p+0, false, false,
+ 0x1.0001p+0, false, false,
+ 0x1.0001p+0, false, false,
+ 0x1.0001p+0, false, false,
+ true,
+ 0x1.0001p+0, false, false,
+ 0x1.0001p+0, false, false,
+ 0x1.0001p+0, false, false,
+ 0x1.0001p+0, false, false,
+ true,
+ 0x1.0001p+0, false, false,
+ 0x1.0001p+0, false, false,
+ 0x1.0001p+0, false, false,
+ 0x1.0001p+0, false, false),
TEST ("1.00000762939453125",
true,
- 0x1.00008p+0, false,
- 0x1.00008p+0, false,
- 0x1.00008p+0, false,
- 0x1.00008p+0, false,
- true,
- 0x1.00008p+0, false,
- 0x1.00008p+0, false,
- 0x1.00008p+0, false,
- 0x1.00008p+0, false,
- true,
- 0x1.00008p+0, false,
- 0x1.00008p+0, false,
- 0x1.00008p+0, false,
- 0x1.00008p+0, false,
- true,
- 0x1.00008p+0, false,
- 0x1.00008p+0, false,
- 0x1.00008p+0, false,
- 0x1.00008p+0, false,
- true,
- 0x1.00008p+0, false,
- 0x1.00008p+0, false,
- 0x1.00008p+0, false,
- 0x1.00008p+0, false,
- true,
- 0x1.00008p+0, false,
- 0x1.00008p+0, false,
- 0x1.00008p+0, false,
- 0x1.00008p+0, false),
+ 0x1.00008p+0, false, false,
+ 0x1.00008p+0, false, false,
+ 0x1.00008p+0, false, false,
+ 0x1.00008p+0, false, false,
+ true,
+ 0x1.00008p+0, false, false,
+ 0x1.00008p+0, false, false,
+ 0x1.00008p+0, false, false,
+ 0x1.00008p+0, false, false,
+ true,
+ 0x1.00008p+0, false, false,
+ 0x1.00008p+0, false, false,
+ 0x1.00008p+0, false, false,
+ 0x1.00008p+0, false, false,
+ true,
+ 0x1.00008p+0, false, false,
+ 0x1.00008p+0, false, false,
+ 0x1.00008p+0, false, false,
+ 0x1.00008p+0, false, false,
+ true,
+ 0x1.00008p+0, false, false,
+ 0x1.00008p+0, false, false,
+ 0x1.00008p+0, false, false,
+ 0x1.00008p+0, false, false,
+ true,
+ 0x1.00008p+0, false, false,
+ 0x1.00008p+0, false, false,
+ 0x1.00008p+0, false, false,
+ 0x1.00008p+0, false, false),
TEST ("1.000003814697265625",
true,
- 0x1.00004p+0, false,
- 0x1.00004p+0, false,
- 0x1.00004p+0, false,
- 0x1.00004p+0, false,
- true,
- 0x1.00004p+0, false,
- 0x1.00004p+0, false,
- 0x1.00004p+0, false,
- 0x1.00004p+0, false,
- true,
- 0x1.00004p+0, false,
- 0x1.00004p+0, false,
- 0x1.00004p+0, false,
- 0x1.00004p+0, false,
- true,
- 0x1.00004p+0, false,
- 0x1.00004p+0, false,
- 0x1.00004p+0, false,
- 0x1.00004p+0, false,
- true,
- 0x1.00004p+0, false,
- 0x1.00004p+0, false,
- 0x1.00004p+0, false,
- 0x1.00004p+0, false,
- true,
- 0x1.00004p+0, false,
- 0x1.00004p+0, false,
- 0x1.00004p+0, false,
- 0x1.00004p+0, false),
+ 0x1.00004p+0, false, false,
+ 0x1.00004p+0, false, false,
+ 0x1.00004p+0, false, false,
+ 0x1.00004p+0, false, false,
+ true,
+ 0x1.00004p+0, false, false,
+ 0x1.00004p+0, false, false,
+ 0x1.00004p+0, false, false,
+ 0x1.00004p+0, false, false,
+ true,
+ 0x1.00004p+0, false, false,
+ 0x1.00004p+0, false, false,
+ 0x1.00004p+0, false, false,
+ 0x1.00004p+0, false, false,
+ true,
+ 0x1.00004p+0, false, false,
+ 0x1.00004p+0, false, false,
+ 0x1.00004p+0, false, false,
+ 0x1.00004p+0, false, false,
+ true,
+ 0x1.00004p+0, false, false,
+ 0x1.00004p+0, false, false,
+ 0x1.00004p+0, false, false,
+ 0x1.00004p+0, false, false,
+ true,
+ 0x1.00004p+0, false, false,
+ 0x1.00004p+0, false, false,
+ 0x1.00004p+0, false, false,
+ 0x1.00004p+0, false, false),
TEST ("1.0000019073486328125",
true,
- 0x1.00002p+0, false,
- 0x1.00002p+0, false,
- 0x1.00002p+0, false,
- 0x1.00002p+0, false,
- true,
- 0x1.00002p+0, false,
- 0x1.00002p+0, false,
- 0x1.00002p+0, false,
- 0x1.00002p+0, false,
- true,
- 0x1.00002p+0, false,
- 0x1.00002p+0, false,
- 0x1.00002p+0, false,
- 0x1.00002p+0, false,
- true,
- 0x1.00002p+0, false,
- 0x1.00002p+0, false,
- 0x1.00002p+0, false,
- 0x1.00002p+0, false,
- true,
- 0x1.00002p+0, false,
- 0x1.00002p+0, false,
- 0x1.00002p+0, false,
- 0x1.00002p+0, false,
- true,
- 0x1.00002p+0, false,
- 0x1.00002p+0, false,
- 0x1.00002p+0, false,
- 0x1.00002p+0, false),
+ 0x1.00002p+0, false, false,
+ 0x1.00002p+0, false, false,
+ 0x1.00002p+0, false, false,
+ 0x1.00002p+0, false, false,
+ true,
+ 0x1.00002p+0, false, false,
+ 0x1.00002p+0, false, false,
+ 0x1.00002p+0, false, false,
+ 0x1.00002p+0, false, false,
+ true,
+ 0x1.00002p+0, false, false,
+ 0x1.00002p+0, false, false,
+ 0x1.00002p+0, false, false,
+ 0x1.00002p+0, false, false,
+ true,
+ 0x1.00002p+0, false, false,
+ 0x1.00002p+0, false, false,
+ 0x1.00002p+0, false, false,
+ 0x1.00002p+0, false, false,
+ true,
+ 0x1.00002p+0, false, false,
+ 0x1.00002p+0, false, false,
+ 0x1.00002p+0, false, false,
+ 0x1.00002p+0, false, false,
+ true,
+ 0x1.00002p+0, false, false,
+ 0x1.00002p+0, false, false,
+ 0x1.00002p+0, false, false,
+ 0x1.00002p+0, false, false),
TEST ("1.00000095367431640625",
true,
- 0x1.00001p+0, false,
- 0x1.00001p+0, false,
- 0x1.00001p+0, false,
- 0x1.00001p+0, false,
- true,
- 0x1.00001p+0, false,
- 0x1.00001p+0, false,
- 0x1.00001p+0, false,
- 0x1.00001p+0, false,
- true,
- 0x1.00001p+0, false,
- 0x1.00001p+0, false,
- 0x1.00001p+0, false,
- 0x1.00001p+0, false,
- true,
- 0x1.00001p+0, false,
- 0x1.00001p+0, false,
- 0x1.00001p+0, false,
- 0x1.00001p+0, false,
- true,
- 0x1.00001p+0, false,
- 0x1.00001p+0, false,
- 0x1.00001p+0, false,
- 0x1.00001p+0, false,
- true,
- 0x1.00001p+0, false,
- 0x1.00001p+0, false,
- 0x1.00001p+0, false,
- 0x1.00001p+0, false),
+ 0x1.00001p+0, false, false,
+ 0x1.00001p+0, false, false,
+ 0x1.00001p+0, false, false,
+ 0x1.00001p+0, false, false,
+ true,
+ 0x1.00001p+0, false, false,
+ 0x1.00001p+0, false, false,
+ 0x1.00001p+0, false, false,
+ 0x1.00001p+0, false, false,
+ true,
+ 0x1.00001p+0, false, false,
+ 0x1.00001p+0, false, false,
+ 0x1.00001p+0, false, false,
+ 0x1.00001p+0, false, false,
+ true,
+ 0x1.00001p+0, false, false,
+ 0x1.00001p+0, false, false,
+ 0x1.00001p+0, false, false,
+ 0x1.00001p+0, false, false,
+ true,
+ 0x1.00001p+0, false, false,
+ 0x1.00001p+0, false, false,
+ 0x1.00001p+0, false, false,
+ 0x1.00001p+0, false, false,
+ true,
+ 0x1.00001p+0, false, false,
+ 0x1.00001p+0, false, false,
+ 0x1.00001p+0, false, false,
+ 0x1.00001p+0, false, false),
TEST ("1.000000476837158203125",
true,
- 0x1.000008p+0, false,
- 0x1.000008p+0, false,
- 0x1.000008p+0, false,
- 0x1.000008p+0, false,
- true,
- 0x1.000008p+0, false,
- 0x1.000008p+0, false,
- 0x1.000008p+0, false,
- 0x1.000008p+0, false,
- true,
- 0x1.000008p+0, false,
- 0x1.000008p+0, false,
- 0x1.000008p+0, false,
- 0x1.000008p+0, false,
- true,
- 0x1.000008p+0, false,
- 0x1.000008p+0, false,
- 0x1.000008p+0, false,
- 0x1.000008p+0, false,
- true,
- 0x1.000008p+0, false,
- 0x1.000008p+0, false,
- 0x1.000008p+0, false,
- 0x1.000008p+0, false,
- true,
- 0x1.000008p+0, false,
- 0x1.000008p+0, false,
- 0x1.000008p+0, false,
- 0x1.000008p+0, false),
+ 0x1.000008p+0, false, false,
+ 0x1.000008p+0, false, false,
+ 0x1.000008p+0, false, false,
+ 0x1.000008p+0, false, false,
+ true,
+ 0x1.000008p+0, false, false,
+ 0x1.000008p+0, false, false,
+ 0x1.000008p+0, false, false,
+ 0x1.000008p+0, false, false,
+ true,
+ 0x1.000008p+0, false, false,
+ 0x1.000008p+0, false, false,
+ 0x1.000008p+0, false, false,
+ 0x1.000008p+0, false, false,
+ true,
+ 0x1.000008p+0, false, false,
+ 0x1.000008p+0, false, false,
+ 0x1.000008p+0, false, false,
+ 0x1.000008p+0, false, false,
+ true,
+ 0x1.000008p+0, false, false,
+ 0x1.000008p+0, false, false,
+ 0x1.000008p+0, false, false,
+ 0x1.000008p+0, false, false,
+ true,
+ 0x1.000008p+0, false, false,
+ 0x1.000008p+0, false, false,
+ 0x1.000008p+0, false, false,
+ 0x1.000008p+0, false, false),
TEST ("1.0000000298023223876953125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.0000008p+0, false,
- 0x1.0000008p+0, false,
- 0x1.0000008p+0, false,
- 0x1.0000008p+0, false,
- true,
- 0x1.0000008p+0, false,
- 0x1.0000008p+0, false,
- 0x1.0000008p+0, false,
- 0x1.0000008p+0, false,
- true,
- 0x1.0000008p+0, false,
- 0x1.0000008p+0, false,
- 0x1.0000008p+0, false,
- 0x1.0000008p+0, false,
- true,
- 0x1.0000008p+0, false,
- 0x1.0000008p+0, false,
- 0x1.0000008p+0, false,
- 0x1.0000008p+0, false,
- true,
- 0x1.0000008p+0, false,
- 0x1.0000008p+0, false,
- 0x1.0000008p+0, false,
- 0x1.0000008p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.0000008p+0, false, false,
+ 0x1.0000008p+0, false, false,
+ 0x1.0000008p+0, false, false,
+ 0x1.0000008p+0, false, false,
+ true,
+ 0x1.0000008p+0, false, false,
+ 0x1.0000008p+0, false, false,
+ 0x1.0000008p+0, false, false,
+ 0x1.0000008p+0, false, false,
+ true,
+ 0x1.0000008p+0, false, false,
+ 0x1.0000008p+0, false, false,
+ 0x1.0000008p+0, false, false,
+ 0x1.0000008p+0, false, false,
+ true,
+ 0x1.0000008p+0, false, false,
+ 0x1.0000008p+0, false, false,
+ 0x1.0000008p+0, false, false,
+ 0x1.0000008p+0, false, false,
+ true,
+ 0x1.0000008p+0, false, false,
+ 0x1.0000008p+0, false, false,
+ 0x1.0000008p+0, false, false,
+ 0x1.0000008p+0, false, false),
TEST ("1.00000001490116119384765625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.0000004p+0, false,
- 0x1.0000004p+0, false,
- 0x1.0000004p+0, false,
- 0x1.0000004p+0, false,
- true,
- 0x1.0000004p+0, false,
- 0x1.0000004p+0, false,
- 0x1.0000004p+0, false,
- 0x1.0000004p+0, false,
- true,
- 0x1.0000004p+0, false,
- 0x1.0000004p+0, false,
- 0x1.0000004p+0, false,
- 0x1.0000004p+0, false,
- true,
- 0x1.0000004p+0, false,
- 0x1.0000004p+0, false,
- 0x1.0000004p+0, false,
- 0x1.0000004p+0, false,
- true,
- 0x1.0000004p+0, false,
- 0x1.0000004p+0, false,
- 0x1.0000004p+0, false,
- 0x1.0000004p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.0000004p+0, false, false,
+ 0x1.0000004p+0, false, false,
+ 0x1.0000004p+0, false, false,
+ 0x1.0000004p+0, false, false,
+ true,
+ 0x1.0000004p+0, false, false,
+ 0x1.0000004p+0, false, false,
+ 0x1.0000004p+0, false, false,
+ 0x1.0000004p+0, false, false,
+ true,
+ 0x1.0000004p+0, false, false,
+ 0x1.0000004p+0, false, false,
+ 0x1.0000004p+0, false, false,
+ 0x1.0000004p+0, false, false,
+ true,
+ 0x1.0000004p+0, false, false,
+ 0x1.0000004p+0, false, false,
+ 0x1.0000004p+0, false, false,
+ 0x1.0000004p+0, false, false,
+ true,
+ 0x1.0000004p+0, false, false,
+ 0x1.0000004p+0, false, false,
+ 0x1.0000004p+0, false, false,
+ 0x1.0000004p+0, false, false),
TEST ("1.000000007450580596923828125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.0000002p+0, false,
- 0x1.0000002p+0, false,
- 0x1.0000002p+0, false,
- 0x1.0000002p+0, false,
- true,
- 0x1.0000002p+0, false,
- 0x1.0000002p+0, false,
- 0x1.0000002p+0, false,
- 0x1.0000002p+0, false,
- true,
- 0x1.0000002p+0, false,
- 0x1.0000002p+0, false,
- 0x1.0000002p+0, false,
- 0x1.0000002p+0, false,
- true,
- 0x1.0000002p+0, false,
- 0x1.0000002p+0, false,
- 0x1.0000002p+0, false,
- 0x1.0000002p+0, false,
- true,
- 0x1.0000002p+0, false,
- 0x1.0000002p+0, false,
- 0x1.0000002p+0, false,
- 0x1.0000002p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.0000002p+0, false, false,
+ 0x1.0000002p+0, false, false,
+ 0x1.0000002p+0, false, false,
+ 0x1.0000002p+0, false, false,
+ true,
+ 0x1.0000002p+0, false, false,
+ 0x1.0000002p+0, false, false,
+ 0x1.0000002p+0, false, false,
+ 0x1.0000002p+0, false, false,
+ true,
+ 0x1.0000002p+0, false, false,
+ 0x1.0000002p+0, false, false,
+ 0x1.0000002p+0, false, false,
+ 0x1.0000002p+0, false, false,
+ true,
+ 0x1.0000002p+0, false, false,
+ 0x1.0000002p+0, false, false,
+ 0x1.0000002p+0, false, false,
+ 0x1.0000002p+0, false, false,
+ true,
+ 0x1.0000002p+0, false, false,
+ 0x1.0000002p+0, false, false,
+ 0x1.0000002p+0, false, false,
+ 0x1.0000002p+0, false, false),
TEST ("1.0000000037252902984619140625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.0000001p+0, false,
- 0x1.0000001p+0, false,
- 0x1.0000001p+0, false,
- 0x1.0000001p+0, false,
- true,
- 0x1.0000001p+0, false,
- 0x1.0000001p+0, false,
- 0x1.0000001p+0, false,
- 0x1.0000001p+0, false,
- true,
- 0x1.0000001p+0, false,
- 0x1.0000001p+0, false,
- 0x1.0000001p+0, false,
- 0x1.0000001p+0, false,
- true,
- 0x1.0000001p+0, false,
- 0x1.0000001p+0, false,
- 0x1.0000001p+0, false,
- 0x1.0000001p+0, false,
- true,
- 0x1.0000001p+0, false,
- 0x1.0000001p+0, false,
- 0x1.0000001p+0, false,
- 0x1.0000001p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.0000001p+0, false, false,
+ 0x1.0000001p+0, false, false,
+ 0x1.0000001p+0, false, false,
+ 0x1.0000001p+0, false, false,
+ true,
+ 0x1.0000001p+0, false, false,
+ 0x1.0000001p+0, false, false,
+ 0x1.0000001p+0, false, false,
+ 0x1.0000001p+0, false, false,
+ true,
+ 0x1.0000001p+0, false, false,
+ 0x1.0000001p+0, false, false,
+ 0x1.0000001p+0, false, false,
+ 0x1.0000001p+0, false, false,
+ true,
+ 0x1.0000001p+0, false, false,
+ 0x1.0000001p+0, false, false,
+ 0x1.0000001p+0, false, false,
+ 0x1.0000001p+0, false, false,
+ true,
+ 0x1.0000001p+0, false, false,
+ 0x1.0000001p+0, false, false,
+ 0x1.0000001p+0, false, false,
+ 0x1.0000001p+0, false, false),
TEST ("1.00000000186264514923095703125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.00000008p+0, false,
- 0x1.00000008p+0, false,
- 0x1.00000008p+0, false,
- 0x1.00000008p+0, false,
- true,
- 0x1.00000008p+0, false,
- 0x1.00000008p+0, false,
- 0x1.00000008p+0, false,
- 0x1.00000008p+0, false,
- true,
- 0x1.00000008p+0, false,
- 0x1.00000008p+0, false,
- 0x1.00000008p+0, false,
- 0x1.00000008p+0, false,
- true,
- 0x1.00000008p+0, false,
- 0x1.00000008p+0, false,
- 0x1.00000008p+0, false,
- 0x1.00000008p+0, false,
- true,
- 0x1.00000008p+0, false,
- 0x1.00000008p+0, false,
- 0x1.00000008p+0, false,
- 0x1.00000008p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.00000008p+0, false, false,
+ 0x1.00000008p+0, false, false,
+ 0x1.00000008p+0, false, false,
+ 0x1.00000008p+0, false, false,
+ true,
+ 0x1.00000008p+0, false, false,
+ 0x1.00000008p+0, false, false,
+ 0x1.00000008p+0, false, false,
+ 0x1.00000008p+0, false, false,
+ true,
+ 0x1.00000008p+0, false, false,
+ 0x1.00000008p+0, false, false,
+ 0x1.00000008p+0, false, false,
+ 0x1.00000008p+0, false, false,
+ true,
+ 0x1.00000008p+0, false, false,
+ 0x1.00000008p+0, false, false,
+ 0x1.00000008p+0, false, false,
+ 0x1.00000008p+0, false, false,
+ true,
+ 0x1.00000008p+0, false, false,
+ 0x1.00000008p+0, false, false,
+ 0x1.00000008p+0, false, false,
+ 0x1.00000008p+0, false, false),
TEST ("1.000000000931322574615478515625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.00000004p+0, false,
- 0x1.00000004p+0, false,
- 0x1.00000004p+0, false,
- 0x1.00000004p+0, false,
- true,
- 0x1.00000004p+0, false,
- 0x1.00000004p+0, false,
- 0x1.00000004p+0, false,
- 0x1.00000004p+0, false,
- true,
- 0x1.00000004p+0, false,
- 0x1.00000004p+0, false,
- 0x1.00000004p+0, false,
- 0x1.00000004p+0, false,
- true,
- 0x1.00000004p+0, false,
- 0x1.00000004p+0, false,
- 0x1.00000004p+0, false,
- 0x1.00000004p+0, false,
- true,
- 0x1.00000004p+0, false,
- 0x1.00000004p+0, false,
- 0x1.00000004p+0, false,
- 0x1.00000004p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.00000004p+0, false, false,
+ 0x1.00000004p+0, false, false,
+ 0x1.00000004p+0, false, false,
+ 0x1.00000004p+0, false, false,
+ true,
+ 0x1.00000004p+0, false, false,
+ 0x1.00000004p+0, false, false,
+ 0x1.00000004p+0, false, false,
+ 0x1.00000004p+0, false, false,
+ true,
+ 0x1.00000004p+0, false, false,
+ 0x1.00000004p+0, false, false,
+ 0x1.00000004p+0, false, false,
+ 0x1.00000004p+0, false, false,
+ true,
+ 0x1.00000004p+0, false, false,
+ 0x1.00000004p+0, false, false,
+ 0x1.00000004p+0, false, false,
+ 0x1.00000004p+0, false, false,
+ true,
+ 0x1.00000004p+0, false, false,
+ 0x1.00000004p+0, false, false,
+ 0x1.00000004p+0, false, false,
+ 0x1.00000004p+0, false, false),
TEST ("1.0000000004656612873077392578125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.00000002p+0, false,
- 0x1.00000002p+0, false,
- 0x1.00000002p+0, false,
- 0x1.00000002p+0, false,
- true,
- 0x1.00000002p+0, false,
- 0x1.00000002p+0, false,
- 0x1.00000002p+0, false,
- 0x1.00000002p+0, false,
- true,
- 0x1.00000002p+0, false,
- 0x1.00000002p+0, false,
- 0x1.00000002p+0, false,
- 0x1.00000002p+0, false,
- true,
- 0x1.00000002p+0, false,
- 0x1.00000002p+0, false,
- 0x1.00000002p+0, false,
- 0x1.00000002p+0, false,
- true,
- 0x1.00000002p+0, false,
- 0x1.00000002p+0, false,
- 0x1.00000002p+0, false,
- 0x1.00000002p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.00000002p+0, false, false,
+ 0x1.00000002p+0, false, false,
+ 0x1.00000002p+0, false, false,
+ 0x1.00000002p+0, false, false,
+ true,
+ 0x1.00000002p+0, false, false,
+ 0x1.00000002p+0, false, false,
+ 0x1.00000002p+0, false, false,
+ 0x1.00000002p+0, false, false,
+ true,
+ 0x1.00000002p+0, false, false,
+ 0x1.00000002p+0, false, false,
+ 0x1.00000002p+0, false, false,
+ 0x1.00000002p+0, false, false,
+ true,
+ 0x1.00000002p+0, false, false,
+ 0x1.00000002p+0, false, false,
+ 0x1.00000002p+0, false, false,
+ 0x1.00000002p+0, false, false,
+ true,
+ 0x1.00000002p+0, false, false,
+ 0x1.00000002p+0, false, false,
+ 0x1.00000002p+0, false, false,
+ 0x1.00000002p+0, false, false),
TEST ("1.00000000023283064365386962890625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.00000001p+0, false,
- 0x1.00000001p+0, false,
- 0x1.00000001p+0, false,
- 0x1.00000001p+0, false,
- true,
- 0x1.00000001p+0, false,
- 0x1.00000001p+0, false,
- 0x1.00000001p+0, false,
- 0x1.00000001p+0, false,
- true,
- 0x1.00000001p+0, false,
- 0x1.00000001p+0, false,
- 0x1.00000001p+0, false,
- 0x1.00000001p+0, false,
- true,
- 0x1.00000001p+0, false,
- 0x1.00000001p+0, false,
- 0x1.00000001p+0, false,
- 0x1.00000001p+0, false,
- true,
- 0x1.00000001p+0, false,
- 0x1.00000001p+0, false,
- 0x1.00000001p+0, false,
- 0x1.00000001p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.00000001p+0, false, false,
+ 0x1.00000001p+0, false, false,
+ 0x1.00000001p+0, false, false,
+ 0x1.00000001p+0, false, false,
+ true,
+ 0x1.00000001p+0, false, false,
+ 0x1.00000001p+0, false, false,
+ 0x1.00000001p+0, false, false,
+ 0x1.00000001p+0, false, false,
+ true,
+ 0x1.00000001p+0, false, false,
+ 0x1.00000001p+0, false, false,
+ 0x1.00000001p+0, false, false,
+ 0x1.00000001p+0, false, false,
+ true,
+ 0x1.00000001p+0, false, false,
+ 0x1.00000001p+0, false, false,
+ 0x1.00000001p+0, false, false,
+ 0x1.00000001p+0, false, false,
+ true,
+ 0x1.00000001p+0, false, false,
+ 0x1.00000001p+0, false, false,
+ 0x1.00000001p+0, false, false,
+ 0x1.00000001p+0, false, false),
TEST ("1.000000000116415321826934814453125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.000000008p+0, false,
- 0x1.000000008p+0, false,
- 0x1.000000008p+0, false,
- 0x1.000000008p+0, false,
- true,
- 0x1.000000008p+0, false,
- 0x1.000000008p+0, false,
- 0x1.000000008p+0, false,
- 0x1.000000008p+0, false,
- true,
- 0x1.000000008p+0, false,
- 0x1.000000008p+0, false,
- 0x1.000000008p+0, false,
- 0x1.000000008p+0, false,
- true,
- 0x1.000000008p+0, false,
- 0x1.000000008p+0, false,
- 0x1.000000008p+0, false,
- 0x1.000000008p+0, false,
- true,
- 0x1.000000008p+0, false,
- 0x1.000000008p+0, false,
- 0x1.000000008p+0, false,
- 0x1.000000008p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.000000008p+0, false, false,
+ 0x1.000000008p+0, false, false,
+ 0x1.000000008p+0, false, false,
+ 0x1.000000008p+0, false, false,
+ true,
+ 0x1.000000008p+0, false, false,
+ 0x1.000000008p+0, false, false,
+ 0x1.000000008p+0, false, false,
+ 0x1.000000008p+0, false, false,
+ true,
+ 0x1.000000008p+0, false, false,
+ 0x1.000000008p+0, false, false,
+ 0x1.000000008p+0, false, false,
+ 0x1.000000008p+0, false, false,
+ true,
+ 0x1.000000008p+0, false, false,
+ 0x1.000000008p+0, false, false,
+ 0x1.000000008p+0, false, false,
+ 0x1.000000008p+0, false, false,
+ true,
+ 0x1.000000008p+0, false, false,
+ 0x1.000000008p+0, false, false,
+ 0x1.000000008p+0, false, false,
+ 0x1.000000008p+0, false, false),
TEST ("1.0000000000582076609134674072265625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.000000004p+0, false,
- 0x1.000000004p+0, false,
- 0x1.000000004p+0, false,
- 0x1.000000004p+0, false,
- true,
- 0x1.000000004p+0, false,
- 0x1.000000004p+0, false,
- 0x1.000000004p+0, false,
- 0x1.000000004p+0, false,
- true,
- 0x1.000000004p+0, false,
- 0x1.000000004p+0, false,
- 0x1.000000004p+0, false,
- 0x1.000000004p+0, false,
- true,
- 0x1.000000004p+0, false,
- 0x1.000000004p+0, false,
- 0x1.000000004p+0, false,
- 0x1.000000004p+0, false,
- true,
- 0x1.000000004p+0, false,
- 0x1.000000004p+0, false,
- 0x1.000000004p+0, false,
- 0x1.000000004p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.000000004p+0, false, false,
+ 0x1.000000004p+0, false, false,
+ 0x1.000000004p+0, false, false,
+ 0x1.000000004p+0, false, false,
+ true,
+ 0x1.000000004p+0, false, false,
+ 0x1.000000004p+0, false, false,
+ 0x1.000000004p+0, false, false,
+ 0x1.000000004p+0, false, false,
+ true,
+ 0x1.000000004p+0, false, false,
+ 0x1.000000004p+0, false, false,
+ 0x1.000000004p+0, false, false,
+ 0x1.000000004p+0, false, false,
+ true,
+ 0x1.000000004p+0, false, false,
+ 0x1.000000004p+0, false, false,
+ 0x1.000000004p+0, false, false,
+ 0x1.000000004p+0, false, false,
+ true,
+ 0x1.000000004p+0, false, false,
+ 0x1.000000004p+0, false, false,
+ 0x1.000000004p+0, false, false,
+ 0x1.000000004p+0, false, false),
TEST ("1.00000000002910383045673370361328125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.000000002p+0, false,
- 0x1.000000002p+0, false,
- 0x1.000000002p+0, false,
- 0x1.000000002p+0, false,
- true,
- 0x1.000000002p+0, false,
- 0x1.000000002p+0, false,
- 0x1.000000002p+0, false,
- 0x1.000000002p+0, false,
- true,
- 0x1.000000002p+0, false,
- 0x1.000000002p+0, false,
- 0x1.000000002p+0, false,
- 0x1.000000002p+0, false,
- true,
- 0x1.000000002p+0, false,
- 0x1.000000002p+0, false,
- 0x1.000000002p+0, false,
- 0x1.000000002p+0, false,
- true,
- 0x1.000000002p+0, false,
- 0x1.000000002p+0, false,
- 0x1.000000002p+0, false,
- 0x1.000000002p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.000000002p+0, false, false,
+ 0x1.000000002p+0, false, false,
+ 0x1.000000002p+0, false, false,
+ 0x1.000000002p+0, false, false,
+ true,
+ 0x1.000000002p+0, false, false,
+ 0x1.000000002p+0, false, false,
+ 0x1.000000002p+0, false, false,
+ 0x1.000000002p+0, false, false,
+ true,
+ 0x1.000000002p+0, false, false,
+ 0x1.000000002p+0, false, false,
+ 0x1.000000002p+0, false, false,
+ 0x1.000000002p+0, false, false,
+ true,
+ 0x1.000000002p+0, false, false,
+ 0x1.000000002p+0, false, false,
+ 0x1.000000002p+0, false, false,
+ 0x1.000000002p+0, false, false,
+ true,
+ 0x1.000000002p+0, false, false,
+ 0x1.000000002p+0, false, false,
+ 0x1.000000002p+0, false, false,
+ 0x1.000000002p+0, false, false),
TEST ("1.000000000014551915228366851806640625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.000000001p+0, false,
- 0x1.000000001p+0, false,
- 0x1.000000001p+0, false,
- 0x1.000000001p+0, false,
- true,
- 0x1.000000001p+0, false,
- 0x1.000000001p+0, false,
- 0x1.000000001p+0, false,
- 0x1.000000001p+0, false,
- true,
- 0x1.000000001p+0, false,
- 0x1.000000001p+0, false,
- 0x1.000000001p+0, false,
- 0x1.000000001p+0, false,
- true,
- 0x1.000000001p+0, false,
- 0x1.000000001p+0, false,
- 0x1.000000001p+0, false,
- 0x1.000000001p+0, false,
- true,
- 0x1.000000001p+0, false,
- 0x1.000000001p+0, false,
- 0x1.000000001p+0, false,
- 0x1.000000001p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.000000001p+0, false, false,
+ 0x1.000000001p+0, false, false,
+ 0x1.000000001p+0, false, false,
+ 0x1.000000001p+0, false, false,
+ true,
+ 0x1.000000001p+0, false, false,
+ 0x1.000000001p+0, false, false,
+ 0x1.000000001p+0, false, false,
+ 0x1.000000001p+0, false, false,
+ true,
+ 0x1.000000001p+0, false, false,
+ 0x1.000000001p+0, false, false,
+ 0x1.000000001p+0, false, false,
+ 0x1.000000001p+0, false, false,
+ true,
+ 0x1.000000001p+0, false, false,
+ 0x1.000000001p+0, false, false,
+ 0x1.000000001p+0, false, false,
+ 0x1.000000001p+0, false, false,
+ true,
+ 0x1.000000001p+0, false, false,
+ 0x1.000000001p+0, false, false,
+ 0x1.000000001p+0, false, false,
+ 0x1.000000001p+0, false, false),
TEST ("1.0000000000072759576141834259033203125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.0000000008p+0, false,
- 0x1.0000000008p+0, false,
- 0x1.0000000008p+0, false,
- 0x1.0000000008p+0, false,
- true,
- 0x1.0000000008p+0, false,
- 0x1.0000000008p+0, false,
- 0x1.0000000008p+0, false,
- 0x1.0000000008p+0, false,
- true,
- 0x1.0000000008p+0, false,
- 0x1.0000000008p+0, false,
- 0x1.0000000008p+0, false,
- 0x1.0000000008p+0, false,
- true,
- 0x1.0000000008p+0, false,
- 0x1.0000000008p+0, false,
- 0x1.0000000008p+0, false,
- 0x1.0000000008p+0, false,
- true,
- 0x1.0000000008p+0, false,
- 0x1.0000000008p+0, false,
- 0x1.0000000008p+0, false,
- 0x1.0000000008p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.0000000008p+0, false, false,
+ 0x1.0000000008p+0, false, false,
+ 0x1.0000000008p+0, false, false,
+ 0x1.0000000008p+0, false, false,
+ true,
+ 0x1.0000000008p+0, false, false,
+ 0x1.0000000008p+0, false, false,
+ 0x1.0000000008p+0, false, false,
+ 0x1.0000000008p+0, false, false,
+ true,
+ 0x1.0000000008p+0, false, false,
+ 0x1.0000000008p+0, false, false,
+ 0x1.0000000008p+0, false, false,
+ 0x1.0000000008p+0, false, false,
+ true,
+ 0x1.0000000008p+0, false, false,
+ 0x1.0000000008p+0, false, false,
+ 0x1.0000000008p+0, false, false,
+ 0x1.0000000008p+0, false, false,
+ true,
+ 0x1.0000000008p+0, false, false,
+ 0x1.0000000008p+0, false, false,
+ 0x1.0000000008p+0, false, false,
+ 0x1.0000000008p+0, false, false),
TEST ("1.00000000000363797880709171295166015625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.0000000004p+0, false,
- 0x1.0000000004p+0, false,
- 0x1.0000000004p+0, false,
- 0x1.0000000004p+0, false,
- true,
- 0x1.0000000004p+0, false,
- 0x1.0000000004p+0, false,
- 0x1.0000000004p+0, false,
- 0x1.0000000004p+0, false,
- true,
- 0x1.0000000004p+0, false,
- 0x1.0000000004p+0, false,
- 0x1.0000000004p+0, false,
- 0x1.0000000004p+0, false,
- true,
- 0x1.0000000004p+0, false,
- 0x1.0000000004p+0, false,
- 0x1.0000000004p+0, false,
- 0x1.0000000004p+0, false,
- true,
- 0x1.0000000004p+0, false,
- 0x1.0000000004p+0, false,
- 0x1.0000000004p+0, false,
- 0x1.0000000004p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.0000000004p+0, false, false,
+ 0x1.0000000004p+0, false, false,
+ 0x1.0000000004p+0, false, false,
+ 0x1.0000000004p+0, false, false,
+ true,
+ 0x1.0000000004p+0, false, false,
+ 0x1.0000000004p+0, false, false,
+ 0x1.0000000004p+0, false, false,
+ 0x1.0000000004p+0, false, false,
+ true,
+ 0x1.0000000004p+0, false, false,
+ 0x1.0000000004p+0, false, false,
+ 0x1.0000000004p+0, false, false,
+ 0x1.0000000004p+0, false, false,
+ true,
+ 0x1.0000000004p+0, false, false,
+ 0x1.0000000004p+0, false, false,
+ 0x1.0000000004p+0, false, false,
+ 0x1.0000000004p+0, false, false,
+ true,
+ 0x1.0000000004p+0, false, false,
+ 0x1.0000000004p+0, false, false,
+ 0x1.0000000004p+0, false, false,
+ 0x1.0000000004p+0, false, false),
TEST ("1.000000000001818989403545856475830078125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.0000000002p+0, false,
- 0x1.0000000002p+0, false,
- 0x1.0000000002p+0, false,
- 0x1.0000000002p+0, false,
- true,
- 0x1.0000000002p+0, false,
- 0x1.0000000002p+0, false,
- 0x1.0000000002p+0, false,
- 0x1.0000000002p+0, false,
- true,
- 0x1.0000000002p+0, false,
- 0x1.0000000002p+0, false,
- 0x1.0000000002p+0, false,
- 0x1.0000000002p+0, false,
- true,
- 0x1.0000000002p+0, false,
- 0x1.0000000002p+0, false,
- 0x1.0000000002p+0, false,
- 0x1.0000000002p+0, false,
- true,
- 0x1.0000000002p+0, false,
- 0x1.0000000002p+0, false,
- 0x1.0000000002p+0, false,
- 0x1.0000000002p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.0000000002p+0, false, false,
+ 0x1.0000000002p+0, false, false,
+ 0x1.0000000002p+0, false, false,
+ 0x1.0000000002p+0, false, false,
+ true,
+ 0x1.0000000002p+0, false, false,
+ 0x1.0000000002p+0, false, false,
+ 0x1.0000000002p+0, false, false,
+ 0x1.0000000002p+0, false, false,
+ true,
+ 0x1.0000000002p+0, false, false,
+ 0x1.0000000002p+0, false, false,
+ 0x1.0000000002p+0, false, false,
+ 0x1.0000000002p+0, false, false,
+ true,
+ 0x1.0000000002p+0, false, false,
+ 0x1.0000000002p+0, false, false,
+ 0x1.0000000002p+0, false, false,
+ 0x1.0000000002p+0, false, false,
+ true,
+ 0x1.0000000002p+0, false, false,
+ 0x1.0000000002p+0, false, false,
+ 0x1.0000000002p+0, false, false,
+ 0x1.0000000002p+0, false, false),
TEST ("1.0000000000009094947017729282379150390625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.0000000001p+0, false,
- 0x1.0000000001p+0, false,
- 0x1.0000000001p+0, false,
- 0x1.0000000001p+0, false,
- true,
- 0x1.0000000001p+0, false,
- 0x1.0000000001p+0, false,
- 0x1.0000000001p+0, false,
- 0x1.0000000001p+0, false,
- true,
- 0x1.0000000001p+0, false,
- 0x1.0000000001p+0, false,
- 0x1.0000000001p+0, false,
- 0x1.0000000001p+0, false,
- true,
- 0x1.0000000001p+0, false,
- 0x1.0000000001p+0, false,
- 0x1.0000000001p+0, false,
- 0x1.0000000001p+0, false,
- true,
- 0x1.0000000001p+0, false,
- 0x1.0000000001p+0, false,
- 0x1.0000000001p+0, false,
- 0x1.0000000001p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.0000000001p+0, false, false,
+ 0x1.0000000001p+0, false, false,
+ 0x1.0000000001p+0, false, false,
+ 0x1.0000000001p+0, false, false,
+ true,
+ 0x1.0000000001p+0, false, false,
+ 0x1.0000000001p+0, false, false,
+ 0x1.0000000001p+0, false, false,
+ 0x1.0000000001p+0, false, false,
+ true,
+ 0x1.0000000001p+0, false, false,
+ 0x1.0000000001p+0, false, false,
+ 0x1.0000000001p+0, false, false,
+ 0x1.0000000001p+0, false, false,
+ true,
+ 0x1.0000000001p+0, false, false,
+ 0x1.0000000001p+0, false, false,
+ 0x1.0000000001p+0, false, false,
+ 0x1.0000000001p+0, false, false,
+ true,
+ 0x1.0000000001p+0, false, false,
+ 0x1.0000000001p+0, false, false,
+ 0x1.0000000001p+0, false, false,
+ 0x1.0000000001p+0, false, false),
TEST ("1.00000000000045474735088646411895751953125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.00000000008p+0, false,
- 0x1.00000000008p+0, false,
- 0x1.00000000008p+0, false,
- 0x1.00000000008p+0, false,
- true,
- 0x1.00000000008p+0, false,
- 0x1.00000000008p+0, false,
- 0x1.00000000008p+0, false,
- 0x1.00000000008p+0, false,
- true,
- 0x1.00000000008p+0, false,
- 0x1.00000000008p+0, false,
- 0x1.00000000008p+0, false,
- 0x1.00000000008p+0, false,
- true,
- 0x1.00000000008p+0, false,
- 0x1.00000000008p+0, false,
- 0x1.00000000008p+0, false,
- 0x1.00000000008p+0, false,
- true,
- 0x1.00000000008p+0, false,
- 0x1.00000000008p+0, false,
- 0x1.00000000008p+0, false,
- 0x1.00000000008p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.00000000008p+0, false, false,
+ 0x1.00000000008p+0, false, false,
+ 0x1.00000000008p+0, false, false,
+ 0x1.00000000008p+0, false, false,
+ true,
+ 0x1.00000000008p+0, false, false,
+ 0x1.00000000008p+0, false, false,
+ 0x1.00000000008p+0, false, false,
+ 0x1.00000000008p+0, false, false,
+ true,
+ 0x1.00000000008p+0, false, false,
+ 0x1.00000000008p+0, false, false,
+ 0x1.00000000008p+0, false, false,
+ 0x1.00000000008p+0, false, false,
+ true,
+ 0x1.00000000008p+0, false, false,
+ 0x1.00000000008p+0, false, false,
+ 0x1.00000000008p+0, false, false,
+ 0x1.00000000008p+0, false, false,
+ true,
+ 0x1.00000000008p+0, false, false,
+ 0x1.00000000008p+0, false, false,
+ 0x1.00000000008p+0, false, false,
+ 0x1.00000000008p+0, false, false),
TEST ("1.000000000000227373675443232059478759765625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.00000000004p+0, false,
- 0x1.00000000004p+0, false,
- 0x1.00000000004p+0, false,
- 0x1.00000000004p+0, false,
- true,
- 0x1.00000000004p+0, false,
- 0x1.00000000004p+0, false,
- 0x1.00000000004p+0, false,
- 0x1.00000000004p+0, false,
- true,
- 0x1.00000000004p+0, false,
- 0x1.00000000004p+0, false,
- 0x1.00000000004p+0, false,
- 0x1.00000000004p+0, false,
- true,
- 0x1.00000000004p+0, false,
- 0x1.00000000004p+0, false,
- 0x1.00000000004p+0, false,
- 0x1.00000000004p+0, false,
- true,
- 0x1.00000000004p+0, false,
- 0x1.00000000004p+0, false,
- 0x1.00000000004p+0, false,
- 0x1.00000000004p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.00000000004p+0, false, false,
+ 0x1.00000000004p+0, false, false,
+ 0x1.00000000004p+0, false, false,
+ 0x1.00000000004p+0, false, false,
+ true,
+ 0x1.00000000004p+0, false, false,
+ 0x1.00000000004p+0, false, false,
+ 0x1.00000000004p+0, false, false,
+ 0x1.00000000004p+0, false, false,
+ true,
+ 0x1.00000000004p+0, false, false,
+ 0x1.00000000004p+0, false, false,
+ 0x1.00000000004p+0, false, false,
+ 0x1.00000000004p+0, false, false,
+ true,
+ 0x1.00000000004p+0, false, false,
+ 0x1.00000000004p+0, false, false,
+ 0x1.00000000004p+0, false, false,
+ 0x1.00000000004p+0, false, false,
+ true,
+ 0x1.00000000004p+0, false, false,
+ 0x1.00000000004p+0, false, false,
+ 0x1.00000000004p+0, false, false,
+ 0x1.00000000004p+0, false, false),
TEST ("1.0000000000001136868377216160297393798828125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.00000000002p+0, false,
- 0x1.00000000002p+0, false,
- 0x1.00000000002p+0, false,
- 0x1.00000000002p+0, false,
- true,
- 0x1.00000000002p+0, false,
- 0x1.00000000002p+0, false,
- 0x1.00000000002p+0, false,
- 0x1.00000000002p+0, false,
- true,
- 0x1.00000000002p+0, false,
- 0x1.00000000002p+0, false,
- 0x1.00000000002p+0, false,
- 0x1.00000000002p+0, false,
- true,
- 0x1.00000000002p+0, false,
- 0x1.00000000002p+0, false,
- 0x1.00000000002p+0, false,
- 0x1.00000000002p+0, false,
- true,
- 0x1.00000000002p+0, false,
- 0x1.00000000002p+0, false,
- 0x1.00000000002p+0, false,
- 0x1.00000000002p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.00000000002p+0, false, false,
+ 0x1.00000000002p+0, false, false,
+ 0x1.00000000002p+0, false, false,
+ 0x1.00000000002p+0, false, false,
+ true,
+ 0x1.00000000002p+0, false, false,
+ 0x1.00000000002p+0, false, false,
+ 0x1.00000000002p+0, false, false,
+ 0x1.00000000002p+0, false, false,
+ true,
+ 0x1.00000000002p+0, false, false,
+ 0x1.00000000002p+0, false, false,
+ 0x1.00000000002p+0, false, false,
+ 0x1.00000000002p+0, false, false,
+ true,
+ 0x1.00000000002p+0, false, false,
+ 0x1.00000000002p+0, false, false,
+ 0x1.00000000002p+0, false, false,
+ 0x1.00000000002p+0, false, false,
+ true,
+ 0x1.00000000002p+0, false, false,
+ 0x1.00000000002p+0, false, false,
+ 0x1.00000000002p+0, false, false,
+ 0x1.00000000002p+0, false, false),
TEST ("1.00000000000005684341886080801486968994140625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.00000000001p+0, false,
- 0x1.00000000001p+0, false,
- 0x1.00000000001p+0, false,
- 0x1.00000000001p+0, false,
- true,
- 0x1.00000000001p+0, false,
- 0x1.00000000001p+0, false,
- 0x1.00000000001p+0, false,
- 0x1.00000000001p+0, false,
- true,
- 0x1.00000000001p+0, false,
- 0x1.00000000001p+0, false,
- 0x1.00000000001p+0, false,
- 0x1.00000000001p+0, false,
- true,
- 0x1.00000000001p+0, false,
- 0x1.00000000001p+0, false,
- 0x1.00000000001p+0, false,
- 0x1.00000000001p+0, false,
- true,
- 0x1.00000000001p+0, false,
- 0x1.00000000001p+0, false,
- 0x1.00000000001p+0, false,
- 0x1.00000000001p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.00000000001p+0, false, false,
+ 0x1.00000000001p+0, false, false,
+ 0x1.00000000001p+0, false, false,
+ 0x1.00000000001p+0, false, false,
+ true,
+ 0x1.00000000001p+0, false, false,
+ 0x1.00000000001p+0, false, false,
+ 0x1.00000000001p+0, false, false,
+ 0x1.00000000001p+0, false, false,
+ true,
+ 0x1.00000000001p+0, false, false,
+ 0x1.00000000001p+0, false, false,
+ 0x1.00000000001p+0, false, false,
+ 0x1.00000000001p+0, false, false,
+ true,
+ 0x1.00000000001p+0, false, false,
+ 0x1.00000000001p+0, false, false,
+ 0x1.00000000001p+0, false, false,
+ 0x1.00000000001p+0, false, false,
+ true,
+ 0x1.00000000001p+0, false, false,
+ 0x1.00000000001p+0, false, false,
+ 0x1.00000000001p+0, false, false,
+ 0x1.00000000001p+0, false, false),
TEST ("1.000000000000028421709430404007434844970703125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.000000000008p+0, false,
- 0x1.000000000008p+0, false,
- 0x1.000000000008p+0, false,
- 0x1.000000000008p+0, false,
- true,
- 0x1.000000000008p+0, false,
- 0x1.000000000008p+0, false,
- 0x1.000000000008p+0, false,
- 0x1.000000000008p+0, false,
- true,
- 0x1.000000000008p+0, false,
- 0x1.000000000008p+0, false,
- 0x1.000000000008p+0, false,
- 0x1.000000000008p+0, false,
- true,
- 0x1.000000000008p+0, false,
- 0x1.000000000008p+0, false,
- 0x1.000000000008p+0, false,
- 0x1.000000000008p+0, false,
- true,
- 0x1.000000000008p+0, false,
- 0x1.000000000008p+0, false,
- 0x1.000000000008p+0, false,
- 0x1.000000000008p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.000000000008p+0, false, false,
+ 0x1.000000000008p+0, false, false,
+ 0x1.000000000008p+0, false, false,
+ 0x1.000000000008p+0, false, false,
+ true,
+ 0x1.000000000008p+0, false, false,
+ 0x1.000000000008p+0, false, false,
+ 0x1.000000000008p+0, false, false,
+ 0x1.000000000008p+0, false, false,
+ true,
+ 0x1.000000000008p+0, false, false,
+ 0x1.000000000008p+0, false, false,
+ 0x1.000000000008p+0, false, false,
+ 0x1.000000000008p+0, false, false,
+ true,
+ 0x1.000000000008p+0, false, false,
+ 0x1.000000000008p+0, false, false,
+ 0x1.000000000008p+0, false, false,
+ 0x1.000000000008p+0, false, false,
+ true,
+ 0x1.000000000008p+0, false, false,
+ 0x1.000000000008p+0, false, false,
+ 0x1.000000000008p+0, false, false,
+ 0x1.000000000008p+0, false, false),
TEST ("1.0000000000000142108547152020037174224853515625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.000000000004p+0, false,
- 0x1.000000000004p+0, false,
- 0x1.000000000004p+0, false,
- 0x1.000000000004p+0, false,
- true,
- 0x1.000000000004p+0, false,
- 0x1.000000000004p+0, false,
- 0x1.000000000004p+0, false,
- 0x1.000000000004p+0, false,
- true,
- 0x1.000000000004p+0, false,
- 0x1.000000000004p+0, false,
- 0x1.000000000004p+0, false,
- 0x1.000000000004p+0, false,
- true,
- 0x1.000000000004p+0, false,
- 0x1.000000000004p+0, false,
- 0x1.000000000004p+0, false,
- 0x1.000000000004p+0, false,
- true,
- 0x1.000000000004p+0, false,
- 0x1.000000000004p+0, false,
- 0x1.000000000004p+0, false,
- 0x1.000000000004p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.000000000004p+0, false, false,
+ 0x1.000000000004p+0, false, false,
+ 0x1.000000000004p+0, false, false,
+ 0x1.000000000004p+0, false, false,
+ true,
+ 0x1.000000000004p+0, false, false,
+ 0x1.000000000004p+0, false, false,
+ 0x1.000000000004p+0, false, false,
+ 0x1.000000000004p+0, false, false,
+ true,
+ 0x1.000000000004p+0, false, false,
+ 0x1.000000000004p+0, false, false,
+ 0x1.000000000004p+0, false, false,
+ 0x1.000000000004p+0, false, false,
+ true,
+ 0x1.000000000004p+0, false, false,
+ 0x1.000000000004p+0, false, false,
+ 0x1.000000000004p+0, false, false,
+ 0x1.000000000004p+0, false, false,
+ true,
+ 0x1.000000000004p+0, false, false,
+ 0x1.000000000004p+0, false, false,
+ 0x1.000000000004p+0, false, false,
+ 0x1.000000000004p+0, false, false),
TEST ("1.00000000000000710542735760100185871124267578125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.000000000002p+0, false,
- 0x1.000000000002p+0, false,
- 0x1.000000000002p+0, false,
- 0x1.000000000002p+0, false,
- true,
- 0x1.000000000002p+0, false,
- 0x1.000000000002p+0, false,
- 0x1.000000000002p+0, false,
- 0x1.000000000002p+0, false,
- true,
- 0x1.000000000002p+0, false,
- 0x1.000000000002p+0, false,
- 0x1.000000000002p+0, false,
- 0x1.000000000002p+0, false,
- true,
- 0x1.000000000002p+0, false,
- 0x1.000000000002p+0, false,
- 0x1.000000000002p+0, false,
- 0x1.000000000002p+0, false,
- true,
- 0x1.000000000002p+0, false,
- 0x1.000000000002p+0, false,
- 0x1.000000000002p+0, false,
- 0x1.000000000002p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.000000000002p+0, false, false,
+ 0x1.000000000002p+0, false, false,
+ 0x1.000000000002p+0, false, false,
+ 0x1.000000000002p+0, false, false,
+ true,
+ 0x1.000000000002p+0, false, false,
+ 0x1.000000000002p+0, false, false,
+ 0x1.000000000002p+0, false, false,
+ 0x1.000000000002p+0, false, false,
+ true,
+ 0x1.000000000002p+0, false, false,
+ 0x1.000000000002p+0, false, false,
+ 0x1.000000000002p+0, false, false,
+ 0x1.000000000002p+0, false, false,
+ true,
+ 0x1.000000000002p+0, false, false,
+ 0x1.000000000002p+0, false, false,
+ 0x1.000000000002p+0, false, false,
+ 0x1.000000000002p+0, false, false,
+ true,
+ 0x1.000000000002p+0, false, false,
+ 0x1.000000000002p+0, false, false,
+ 0x1.000000000002p+0, false, false,
+ 0x1.000000000002p+0, false, false),
TEST ("1.000000000000003552713678800500929355621337890625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.000000000001p+0, false,
- 0x1.000000000001p+0, false,
- 0x1.000000000001p+0, false,
- 0x1.000000000001p+0, false,
- true,
- 0x1.000000000001p+0, false,
- 0x1.000000000001p+0, false,
- 0x1.000000000001p+0, false,
- 0x1.000000000001p+0, false,
- true,
- 0x1.000000000001p+0, false,
- 0x1.000000000001p+0, false,
- 0x1.000000000001p+0, false,
- 0x1.000000000001p+0, false,
- true,
- 0x1.000000000001p+0, false,
- 0x1.000000000001p+0, false,
- 0x1.000000000001p+0, false,
- 0x1.000000000001p+0, false,
- true,
- 0x1.000000000001p+0, false,
- 0x1.000000000001p+0, false,
- 0x1.000000000001p+0, false,
- 0x1.000000000001p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.000000000001p+0, false, false,
+ 0x1.000000000001p+0, false, false,
+ 0x1.000000000001p+0, false, false,
+ 0x1.000000000001p+0, false, false,
+ true,
+ 0x1.000000000001p+0, false, false,
+ 0x1.000000000001p+0, false, false,
+ 0x1.000000000001p+0, false, false,
+ 0x1.000000000001p+0, false, false,
+ true,
+ 0x1.000000000001p+0, false, false,
+ 0x1.000000000001p+0, false, false,
+ 0x1.000000000001p+0, false, false,
+ 0x1.000000000001p+0, false, false,
+ true,
+ 0x1.000000000001p+0, false, false,
+ 0x1.000000000001p+0, false, false,
+ 0x1.000000000001p+0, false, false,
+ 0x1.000000000001p+0, false, false,
+ true,
+ 0x1.000000000001p+0, false, false,
+ 0x1.000000000001p+0, false, false,
+ 0x1.000000000001p+0, false, false,
+ 0x1.000000000001p+0, false, false),
TEST ("1.0000000000000017763568394002504646778106689453125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.0000000000008p+0, false,
- 0x1.0000000000008p+0, false,
- 0x1.0000000000008p+0, false,
- 0x1.0000000000008p+0, false,
- true,
- 0x1.0000000000008p+0, false,
- 0x1.0000000000008p+0, false,
- 0x1.0000000000008p+0, false,
- 0x1.0000000000008p+0, false,
- true,
- 0x1.0000000000008p+0, false,
- 0x1.0000000000008p+0, false,
- 0x1.0000000000008p+0, false,
- 0x1.0000000000008p+0, false,
- true,
- 0x1.0000000000008p+0, false,
- 0x1.0000000000008p+0, false,
- 0x1.0000000000008p+0, false,
- 0x1.0000000000008p+0, false,
- true,
- 0x1.0000000000008p+0, false,
- 0x1.0000000000008p+0, false,
- 0x1.0000000000008p+0, false,
- 0x1.0000000000008p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.0000000000008p+0, false, false,
+ 0x1.0000000000008p+0, false, false,
+ 0x1.0000000000008p+0, false, false,
+ 0x1.0000000000008p+0, false, false,
+ true,
+ 0x1.0000000000008p+0, false, false,
+ 0x1.0000000000008p+0, false, false,
+ 0x1.0000000000008p+0, false, false,
+ 0x1.0000000000008p+0, false, false,
+ true,
+ 0x1.0000000000008p+0, false, false,
+ 0x1.0000000000008p+0, false, false,
+ 0x1.0000000000008p+0, false, false,
+ 0x1.0000000000008p+0, false, false,
+ true,
+ 0x1.0000000000008p+0, false, false,
+ 0x1.0000000000008p+0, false, false,
+ 0x1.0000000000008p+0, false, false,
+ 0x1.0000000000008p+0, false, false,
+ true,
+ 0x1.0000000000008p+0, false, false,
+ 0x1.0000000000008p+0, false, false,
+ 0x1.0000000000008p+0, false, false,
+ 0x1.0000000000008p+0, false, false),
TEST ("1.00000000000000088817841970012523233890533447265625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.0000000000004p+0, false,
- 0x1.0000000000004p+0, false,
- 0x1.0000000000004p+0, false,
- 0x1.0000000000004p+0, false,
- true,
- 0x1.0000000000004p+0, false,
- 0x1.0000000000004p+0, false,
- 0x1.0000000000004p+0, false,
- 0x1.0000000000004p+0, false,
- true,
- 0x1.0000000000004p+0, false,
- 0x1.0000000000004p+0, false,
- 0x1.0000000000004p+0, false,
- 0x1.0000000000004p+0, false,
- true,
- 0x1.0000000000004p+0, false,
- 0x1.0000000000004p+0, false,
- 0x1.0000000000004p+0, false,
- 0x1.0000000000004p+0, false,
- true,
- 0x1.0000000000004p+0, false,
- 0x1.0000000000004p+0, false,
- 0x1.0000000000004p+0, false,
- 0x1.0000000000004p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.0000000000004p+0, false, false,
+ 0x1.0000000000004p+0, false, false,
+ 0x1.0000000000004p+0, false, false,
+ 0x1.0000000000004p+0, false, false,
+ true,
+ 0x1.0000000000004p+0, false, false,
+ 0x1.0000000000004p+0, false, false,
+ 0x1.0000000000004p+0, false, false,
+ 0x1.0000000000004p+0, false, false,
+ true,
+ 0x1.0000000000004p+0, false, false,
+ 0x1.0000000000004p+0, false, false,
+ 0x1.0000000000004p+0, false, false,
+ 0x1.0000000000004p+0, false, false,
+ true,
+ 0x1.0000000000004p+0, false, false,
+ 0x1.0000000000004p+0, false, false,
+ 0x1.0000000000004p+0, false, false,
+ 0x1.0000000000004p+0, false, false,
+ true,
+ 0x1.0000000000004p+0, false, false,
+ 0x1.0000000000004p+0, false, false,
+ 0x1.0000000000004p+0, false, false,
+ 0x1.0000000000004p+0, false, false),
TEST ("1.000000000000000444089209850062616169452667236328125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.0000000000002p+0, false,
- 0x1.0000000000002p+0, false,
- 0x1.0000000000002p+0, false,
- 0x1.0000000000002p+0, false,
- true,
- 0x1.0000000000002p+0, false,
- 0x1.0000000000002p+0, false,
- 0x1.0000000000002p+0, false,
- 0x1.0000000000002p+0, false,
- true,
- 0x1.0000000000002p+0, false,
- 0x1.0000000000002p+0, false,
- 0x1.0000000000002p+0, false,
- 0x1.0000000000002p+0, false,
- true,
- 0x1.0000000000002p+0, false,
- 0x1.0000000000002p+0, false,
- 0x1.0000000000002p+0, false,
- 0x1.0000000000002p+0, false,
- true,
- 0x1.0000000000002p+0, false,
- 0x1.0000000000002p+0, false,
- 0x1.0000000000002p+0, false,
- 0x1.0000000000002p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.0000000000002p+0, false, false,
+ 0x1.0000000000002p+0, false, false,
+ 0x1.0000000000002p+0, false, false,
+ 0x1.0000000000002p+0, false, false,
+ true,
+ 0x1.0000000000002p+0, false, false,
+ 0x1.0000000000002p+0, false, false,
+ 0x1.0000000000002p+0, false, false,
+ 0x1.0000000000002p+0, false, false,
+ true,
+ 0x1.0000000000002p+0, false, false,
+ 0x1.0000000000002p+0, false, false,
+ 0x1.0000000000002p+0, false, false,
+ 0x1.0000000000002p+0, false, false,
+ true,
+ 0x1.0000000000002p+0, false, false,
+ 0x1.0000000000002p+0, false, false,
+ 0x1.0000000000002p+0, false, false,
+ 0x1.0000000000002p+0, false, false,
+ true,
+ 0x1.0000000000002p+0, false, false,
+ 0x1.0000000000002p+0, false, false,
+ 0x1.0000000000002p+0, false, false,
+ 0x1.0000000000002p+0, false, false),
TEST ("1.0000000000000002220446049250313080847263336181640625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.0000000000001p+0, false,
- 0x1.0000000000001p+0, false,
- 0x1.0000000000001p+0, false,
- 0x1.0000000000001p+0, false,
- true,
- 0x1.0000000000001p+0, false,
- 0x1.0000000000001p+0, false,
- 0x1.0000000000001p+0, false,
- 0x1.0000000000001p+0, false,
- true,
- 0x1.0000000000001p+0, false,
- 0x1.0000000000001p+0, false,
- 0x1.0000000000001p+0, false,
- 0x1.0000000000001p+0, false,
- true,
- 0x1.0000000000001p+0, false,
- 0x1.0000000000001p+0, false,
- 0x1.0000000000001p+0, false,
- 0x1.0000000000001p+0, false,
- true,
- 0x1.0000000000001p+0, false,
- 0x1.0000000000001p+0, false,
- 0x1.0000000000001p+0, false,
- 0x1.0000000000001p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.0000000000001p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ true,
+ 0x1.0000000000001p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ true,
+ 0x1.0000000000001p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ true,
+ 0x1.0000000000001p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ true,
+ 0x1.0000000000001p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ 0x1.0000000000001p+0, false, false),
TEST ("1.00000000000000011102230246251565404236316680908203125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- true,
- 0x1.00000000000008p+0, false,
- 0x1.00000000000008p+0, false,
- 0x1.00000000000008p+0, false,
- 0x1.00000000000008p+0, false,
- true,
- 0x1.00000000000008p+0, false,
- 0x1.00000000000008p+0, false,
- 0x1.00000000000008p+0, false,
- 0x1.00000000000008p+0, false,
- true,
- 0x1.00000000000008p+0, false,
- 0x1.00000000000008p+0, false,
- 0x1.00000000000008p+0, false,
- 0x1.00000000000008p+0, false,
- true,
- 0x1.00000000000008p+0, false,
- 0x1.00000000000008p+0, false,
- 0x1.00000000000008p+0, false,
- 0x1.00000000000008p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ true,
+ 0x1.00000000000008p+0, false, false,
+ 0x1.00000000000008p+0, false, false,
+ 0x1.00000000000008p+0, false, false,
+ 0x1.00000000000008p+0, false, false,
+ true,
+ 0x1.00000000000008p+0, false, false,
+ 0x1.00000000000008p+0, false, false,
+ 0x1.00000000000008p+0, false, false,
+ 0x1.00000000000008p+0, false, false,
+ true,
+ 0x1.00000000000008p+0, false, false,
+ 0x1.00000000000008p+0, false, false,
+ 0x1.00000000000008p+0, false, false,
+ 0x1.00000000000008p+0, false, false,
+ true,
+ 0x1.00000000000008p+0, false, false,
+ 0x1.00000000000008p+0, false, false,
+ 0x1.00000000000008p+0, false, false,
+ 0x1.00000000000008p+0, false, false),
TEST ("1.000000000000000055511151231257827021181583404541015625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- true,
- 0x1.00000000000004p+0, false,
- 0x1.00000000000004p+0, false,
- 0x1.00000000000004p+0, false,
- 0x1.00000000000004p+0, false,
- true,
- 0x1.00000000000004p+0, false,
- 0x1.00000000000004p+0, false,
- 0x1.00000000000004p+0, false,
- 0x1.00000000000004p+0, false,
- true,
- 0x1.00000000000004p+0, false,
- 0x1.00000000000004p+0, false,
- 0x1.00000000000004p+0, false,
- 0x1.00000000000004p+0, false,
- true,
- 0x1.00000000000004p+0, false,
- 0x1.00000000000004p+0, false,
- 0x1.00000000000004p+0, false,
- 0x1.00000000000004p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ true,
+ 0x1.00000000000004p+0, false, false,
+ 0x1.00000000000004p+0, false, false,
+ 0x1.00000000000004p+0, false, false,
+ 0x1.00000000000004p+0, false, false,
+ true,
+ 0x1.00000000000004p+0, false, false,
+ 0x1.00000000000004p+0, false, false,
+ 0x1.00000000000004p+0, false, false,
+ 0x1.00000000000004p+0, false, false,
+ true,
+ 0x1.00000000000004p+0, false, false,
+ 0x1.00000000000004p+0, false, false,
+ 0x1.00000000000004p+0, false, false,
+ 0x1.00000000000004p+0, false, false,
+ true,
+ 0x1.00000000000004p+0, false, false,
+ 0x1.00000000000004p+0, false, false,
+ 0x1.00000000000004p+0, false, false,
+ 0x1.00000000000004p+0, false, false),
TEST ("1.0000000000000000277555756156289135105907917022705078125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- true,
- 0x1.00000000000002p+0, false,
- 0x1.00000000000002p+0, false,
- 0x1.00000000000002p+0, false,
- 0x1.00000000000002p+0, false,
- true,
- 0x1.00000000000002p+0, false,
- 0x1.00000000000002p+0, false,
- 0x1.00000000000002p+0, false,
- 0x1.00000000000002p+0, false,
- true,
- 0x1.00000000000002p+0, false,
- 0x1.00000000000002p+0, false,
- 0x1.00000000000002p+0, false,
- 0x1.00000000000002p+0, false,
- true,
- 0x1.00000000000002p+0, false,
- 0x1.00000000000002p+0, false,
- 0x1.00000000000002p+0, false,
- 0x1.00000000000002p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ true,
+ 0x1.00000000000002p+0, false, false,
+ 0x1.00000000000002p+0, false, false,
+ 0x1.00000000000002p+0, false, false,
+ 0x1.00000000000002p+0, false, false,
+ true,
+ 0x1.00000000000002p+0, false, false,
+ 0x1.00000000000002p+0, false, false,
+ 0x1.00000000000002p+0, false, false,
+ 0x1.00000000000002p+0, false, false,
+ true,
+ 0x1.00000000000002p+0, false, false,
+ 0x1.00000000000002p+0, false, false,
+ 0x1.00000000000002p+0, false, false,
+ 0x1.00000000000002p+0, false, false,
+ true,
+ 0x1.00000000000002p+0, false, false,
+ 0x1.00000000000002p+0, false, false,
+ 0x1.00000000000002p+0, false, false,
+ 0x1.00000000000002p+0, false, false),
TEST ("1.00000000000000001387778780781445675529539585113525390625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- true,
- 0x1.00000000000001p+0, false,
- 0x1.00000000000001p+0, false,
- 0x1.00000000000001p+0, false,
- 0x1.00000000000001p+0, false,
- true,
- 0x1.00000000000001p+0, false,
- 0x1.00000000000001p+0, false,
- 0x1.00000000000001p+0, false,
- 0x1.00000000000001p+0, false,
- true,
- 0x1.00000000000001p+0, false,
- 0x1.00000000000001p+0, false,
- 0x1.00000000000001p+0, false,
- 0x1.00000000000001p+0, false,
- true,
- 0x1.00000000000001p+0, false,
- 0x1.00000000000001p+0, false,
- 0x1.00000000000001p+0, false,
- 0x1.00000000000001p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ true,
+ 0x1.00000000000001p+0, false, false,
+ 0x1.00000000000001p+0, false, false,
+ 0x1.00000000000001p+0, false, false,
+ 0x1.00000000000001p+0, false, false,
+ true,
+ 0x1.00000000000001p+0, false, false,
+ 0x1.00000000000001p+0, false, false,
+ 0x1.00000000000001p+0, false, false,
+ 0x1.00000000000001p+0, false, false,
+ true,
+ 0x1.00000000000001p+0, false, false,
+ 0x1.00000000000001p+0, false, false,
+ 0x1.00000000000001p+0, false, false,
+ 0x1.00000000000001p+0, false, false,
+ true,
+ 0x1.00000000000001p+0, false, false,
+ 0x1.00000000000001p+0, false, false,
+ 0x1.00000000000001p+0, false, false,
+ 0x1.00000000000001p+0, false, false),
TEST ("1.000000000000000006938893903907228377647697925567626953125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- true,
- 0x1.000000000000008p+0, false,
- 0x1.000000000000008p+0, false,
- 0x1.000000000000008p+0, false,
- 0x1.000000000000008p+0, false,
- true,
- 0x1.000000000000008p+0, false,
- 0x1.000000000000008p+0, false,
- 0x1.000000000000008p+0, false,
- 0x1.000000000000008p+0, false,
- true,
- 0x1.000000000000008p+0, false,
- 0x1.000000000000008p+0, false,
- 0x1.000000000000008p+0, false,
- 0x1.000000000000008p+0, false,
- true,
- 0x1.000000000000008p+0, false,
- 0x1.000000000000008p+0, false,
- 0x1.000000000000008p+0, false,
- 0x1.000000000000008p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ true,
+ 0x1.000000000000008p+0, false, false,
+ 0x1.000000000000008p+0, false, false,
+ 0x1.000000000000008p+0, false, false,
+ 0x1.000000000000008p+0, false, false,
+ true,
+ 0x1.000000000000008p+0, false, false,
+ 0x1.000000000000008p+0, false, false,
+ 0x1.000000000000008p+0, false, false,
+ 0x1.000000000000008p+0, false, false,
+ true,
+ 0x1.000000000000008p+0, false, false,
+ 0x1.000000000000008p+0, false, false,
+ 0x1.000000000000008p+0, false, false,
+ 0x1.000000000000008p+0, false, false,
+ true,
+ 0x1.000000000000008p+0, false, false,
+ 0x1.000000000000008p+0, false, false,
+ 0x1.000000000000008p+0, false, false,
+ 0x1.000000000000008p+0, false, false),
TEST ("1.0000000000000000034694469519536141888238489627838134765625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- true,
- 0x1.000000000000004p+0, false,
- 0x1.000000000000004p+0, false,
- 0x1.000000000000004p+0, false,
- 0x1.000000000000004p+0, false,
- true,
- 0x1.000000000000004p+0, false,
- 0x1.000000000000004p+0, false,
- 0x1.000000000000004p+0, false,
- 0x1.000000000000004p+0, false,
- true,
- 0x1.000000000000004p+0, false,
- 0x1.000000000000004p+0, false,
- 0x1.000000000000004p+0, false,
- 0x1.000000000000004p+0, false,
- true,
- 0x1.000000000000004p+0, false,
- 0x1.000000000000004p+0, false,
- 0x1.000000000000004p+0, false,
- 0x1.000000000000004p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ true,
+ 0x1.000000000000004p+0, false, false,
+ 0x1.000000000000004p+0, false, false,
+ 0x1.000000000000004p+0, false, false,
+ 0x1.000000000000004p+0, false, false,
+ true,
+ 0x1.000000000000004p+0, false, false,
+ 0x1.000000000000004p+0, false, false,
+ 0x1.000000000000004p+0, false, false,
+ 0x1.000000000000004p+0, false, false,
+ true,
+ 0x1.000000000000004p+0, false, false,
+ 0x1.000000000000004p+0, false, false,
+ 0x1.000000000000004p+0, false, false,
+ 0x1.000000000000004p+0, false, false,
+ true,
+ 0x1.000000000000004p+0, false, false,
+ 0x1.000000000000004p+0, false, false,
+ 0x1.000000000000004p+0, false, false,
+ 0x1.000000000000004p+0, false, false),
TEST ("1.0000000000000000017347234759768070944119244813919067382812"
"5",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- true,
- 0x1.000000000000002p+0, false,
- 0x1.000000000000002p+0, false,
- 0x1.000000000000002p+0, false,
- 0x1.000000000000002p+0, false,
- true,
- 0x1.000000000000002p+0, false,
- 0x1.000000000000002p+0, false,
- 0x1.000000000000002p+0, false,
- 0x1.000000000000002p+0, false,
- true,
- 0x1.000000000000002p+0, false,
- 0x1.000000000000002p+0, false,
- 0x1.000000000000002p+0, false,
- 0x1.000000000000002p+0, false,
- true,
- 0x1.000000000000002p+0, false,
- 0x1.000000000000002p+0, false,
- 0x1.000000000000002p+0, false,
- 0x1.000000000000002p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ true,
+ 0x1.000000000000002p+0, false, false,
+ 0x1.000000000000002p+0, false, false,
+ 0x1.000000000000002p+0, false, false,
+ 0x1.000000000000002p+0, false, false,
+ true,
+ 0x1.000000000000002p+0, false, false,
+ 0x1.000000000000002p+0, false, false,
+ 0x1.000000000000002p+0, false, false,
+ 0x1.000000000000002p+0, false, false,
+ true,
+ 0x1.000000000000002p+0, false, false,
+ 0x1.000000000000002p+0, false, false,
+ 0x1.000000000000002p+0, false, false,
+ 0x1.000000000000002p+0, false, false,
+ true,
+ 0x1.000000000000002p+0, false, false,
+ 0x1.000000000000002p+0, false, false,
+ 0x1.000000000000002p+0, false, false,
+ 0x1.000000000000002p+0, false, false),
TEST ("1.0000000000000000008673617379884035472059622406959533691406"
"25",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- true,
- 0x1.000000000000001p+0, false,
- 0x1.000000000000001p+0, false,
- 0x1.000000000000001p+0, false,
- 0x1.000000000000001p+0, false,
- true,
- 0x1.000000000000001p+0, false,
- 0x1.000000000000001p+0, false,
- 0x1.000000000000001p+0, false,
- 0x1.000000000000001p+0, false,
- true,
- 0x1.000000000000001p+0, false,
- 0x1.000000000000001p+0, false,
- 0x1.000000000000001p+0, false,
- 0x1.000000000000001p+0, false,
- true,
- 0x1.000000000000001p+0, false,
- 0x1.000000000000001p+0, false,
- 0x1.000000000000001p+0, false,
- 0x1.000000000000001p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ true,
+ 0x1.000000000000001p+0, false, false,
+ 0x1.000000000000001p+0, false, false,
+ 0x1.000000000000001p+0, false, false,
+ 0x1.000000000000001p+0, false, false,
+ true,
+ 0x1.000000000000001p+0, false, false,
+ 0x1.000000000000001p+0, false, false,
+ 0x1.000000000000001p+0, false, false,
+ 0x1.000000000000001p+0, false, false,
+ true,
+ 0x1.000000000000001p+0, false, false,
+ 0x1.000000000000001p+0, false, false,
+ 0x1.000000000000001p+0, false, false,
+ 0x1.000000000000001p+0, false, false,
+ true,
+ 0x1.000000000000001p+0, false, false,
+ 0x1.000000000000001p+0, false, false,
+ 0x1.000000000000001p+0, false, false,
+ 0x1.000000000000001p+0, false, false),
TEST ("1.0000000000000000004336808689942017736029811203479766845703"
"125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- true,
- 0x1.0000000000000008p+0, false,
- 0x1.0000000000000008p+0, false,
- 0x1.0000000000000008p+0, false,
- 0x1.0000000000000008p+0, false,
- true,
- 0x1.0000000000000008p+0, false,
- 0x1.0000000000000008p+0, false,
- 0x1.0000000000000008p+0, false,
- 0x1.0000000000000008p+0, false,
- true,
- 0x1.0000000000000008p+0, false,
- 0x1.0000000000000008p+0, false,
- 0x1.0000000000000008p+0, false,
- 0x1.0000000000000008p+0, false,
- true,
- 0x1.0000000000000008p+0, false,
- 0x1.0000000000000008p+0, false,
- 0x1.0000000000000008p+0, false,
- 0x1.0000000000000008p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ true,
+ 0x1.0000000000000008p+0, false, false,
+ 0x1.0000000000000008p+0, false, false,
+ 0x1.0000000000000008p+0, false, false,
+ 0x1.0000000000000008p+0, false, false,
+ true,
+ 0x1.0000000000000008p+0, false, false,
+ 0x1.0000000000000008p+0, false, false,
+ 0x1.0000000000000008p+0, false, false,
+ 0x1.0000000000000008p+0, false, false,
+ true,
+ 0x1.0000000000000008p+0, false, false,
+ 0x1.0000000000000008p+0, false, false,
+ 0x1.0000000000000008p+0, false, false,
+ 0x1.0000000000000008p+0, false, false,
+ true,
+ 0x1.0000000000000008p+0, false, false,
+ 0x1.0000000000000008p+0, false, false,
+ 0x1.0000000000000008p+0, false, false,
+ 0x1.0000000000000008p+0, false, false),
TEST ("1.0000000000000000002168404344971008868014905601739883422851"
"5625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- true,
- 0x1.0000000000000004p+0, false,
- 0x1.0000000000000004p+0, false,
- 0x1.0000000000000004p+0, false,
- 0x1.0000000000000004p+0, false,
- true,
- 0x1.0000000000000004p+0, false,
- 0x1.0000000000000004p+0, false,
- 0x1.0000000000000004p+0, false,
- 0x1.0000000000000004p+0, false,
- true,
- 0x1.0000000000000004p+0, false,
- 0x1.0000000000000004p+0, false,
- 0x1.0000000000000004p+0, false,
- 0x1.0000000000000004p+0, false,
- true,
- 0x1.0000000000000004p+0, false,
- 0x1.0000000000000004p+0, false,
- 0x1.0000000000000004p+0, false,
- 0x1.0000000000000004p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ true,
+ 0x1.0000000000000004p+0, false, false,
+ 0x1.0000000000000004p+0, false, false,
+ 0x1.0000000000000004p+0, false, false,
+ 0x1.0000000000000004p+0, false, false,
+ true,
+ 0x1.0000000000000004p+0, false, false,
+ 0x1.0000000000000004p+0, false, false,
+ 0x1.0000000000000004p+0, false, false,
+ 0x1.0000000000000004p+0, false, false,
+ true,
+ 0x1.0000000000000004p+0, false, false,
+ 0x1.0000000000000004p+0, false, false,
+ 0x1.0000000000000004p+0, false, false,
+ 0x1.0000000000000004p+0, false, false,
+ true,
+ 0x1.0000000000000004p+0, false, false,
+ 0x1.0000000000000004p+0, false, false,
+ 0x1.0000000000000004p+0, false, false,
+ 0x1.0000000000000004p+0, false, false),
TEST ("1.0000000000000000001084202172485504434007452800869941711425"
"78125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- true,
- 0x1.0000000000000002p+0, false,
- 0x1.0000000000000002p+0, false,
- 0x1.0000000000000002p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.0000000000000002p+0, false,
- 0x1.0000000000000002p+0, false,
- 0x1.0000000000000002p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.0000000000000002p+0, false,
- 0x1.0000000000000002p+0, false,
- 0x1.0000000000000002p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.0000000000000002p+0, false,
- 0x1.0000000000000002p+0, false,
- 0x1.0000000000000002p+0, false,
- 0x1.0000000000000002p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ true,
+ 0x1.0000000000000002p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.0000000000000002p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.0000000000000002p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.0000000000000002p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ 0x1.0000000000000002p+0, false, false),
TEST ("1.0000000000000000000542101086242752217003726400434970855712"
"890625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.0000000000000001p+0, false,
- 0x1.0000000000000001p+0, false,
- 0x1.0000000000000001p+0, false,
- 0x1.0000000000000001p+0, false,
- true,
- 0x1.0000000000000001p+0, false,
- 0x1.0000000000000001p+0, false,
- 0x1.0000000000000001p+0, false,
- 0x1.0000000000000001p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.0000000000000001p+0, false, false,
+ 0x1.0000000000000001p+0, false, false,
+ 0x1.0000000000000001p+0, false, false,
+ 0x1.0000000000000001p+0, false, false,
+ true,
+ 0x1.0000000000000001p+0, false, false,
+ 0x1.0000000000000001p+0, false, false,
+ 0x1.0000000000000001p+0, false, false,
+ 0x1.0000000000000001p+0, false, false),
TEST ("1.0000000000000000000271050543121376108501863200217485427856"
"4453125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.00000000000000008p+0, false,
- 0x1.00000000000000008p+0, false,
- 0x1.00000000000000008p+0, false,
- 0x1.00000000000000008p+0, false,
- true,
- 0x1.00000000000000008p+0, false,
- 0x1.00000000000000008p+0, false,
- 0x1.00000000000000008p+0, false,
- 0x1.00000000000000008p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.00000000000000008p+0, false, false,
+ 0x1.00000000000000008p+0, false, false,
+ 0x1.00000000000000008p+0, false, false,
+ 0x1.00000000000000008p+0, false, false,
+ true,
+ 0x1.00000000000000008p+0, false, false,
+ 0x1.00000000000000008p+0, false, false,
+ 0x1.00000000000000008p+0, false, false,
+ 0x1.00000000000000008p+0, false, false),
TEST ("1.0000000000000000000135525271560688054250931600108742713928"
"22265625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.00000000000000004p+0, false,
- 0x1.00000000000000004p+0, false,
- 0x1.00000000000000004p+0, false,
- 0x1.00000000000000004p+0, false,
- true,
- 0x1.00000000000000004p+0, false,
- 0x1.00000000000000004p+0, false,
- 0x1.00000000000000004p+0, false,
- 0x1.00000000000000004p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.00000000000000004p+0, false, false,
+ 0x1.00000000000000004p+0, false, false,
+ 0x1.00000000000000004p+0, false, false,
+ 0x1.00000000000000004p+0, false, false,
+ true,
+ 0x1.00000000000000004p+0, false, false,
+ 0x1.00000000000000004p+0, false, false,
+ 0x1.00000000000000004p+0, false, false,
+ 0x1.00000000000000004p+0, false, false),
TEST ("1.0000000000000000000067762635780344027125465800054371356964"
"111328125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.00000000000000002p+0, false,
- 0x1.00000000000000002p+0, false,
- 0x1.00000000000000002p+0, false,
- 0x1.00000000000000002p+0, false,
- true,
- 0x1.00000000000000002p+0, false,
- 0x1.00000000000000002p+0, false,
- 0x1.00000000000000002p+0, false,
- 0x1.00000000000000002p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.00000000000000002p+0, false, false,
+ 0x1.00000000000000002p+0, false, false,
+ 0x1.00000000000000002p+0, false, false,
+ 0x1.00000000000000002p+0, false, false,
+ true,
+ 0x1.00000000000000002p+0, false, false,
+ 0x1.00000000000000002p+0, false, false,
+ 0x1.00000000000000002p+0, false, false,
+ 0x1.00000000000000002p+0, false, false),
TEST ("1.0000000000000000000033881317890172013562732900027185678482"
"0556640625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.00000000000000001p+0, false,
- 0x1.00000000000000001p+0, false,
- 0x1.00000000000000001p+0, false,
- 0x1.00000000000000001p+0, false,
- true,
- 0x1.00000000000000001p+0, false,
- 0x1.00000000000000001p+0, false,
- 0x1.00000000000000001p+0, false,
- 0x1.00000000000000001p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.00000000000000001p+0, false, false,
+ 0x1.00000000000000001p+0, false, false,
+ 0x1.00000000000000001p+0, false, false,
+ 0x1.00000000000000001p+0, false, false,
+ true,
+ 0x1.00000000000000001p+0, false, false,
+ 0x1.00000000000000001p+0, false, false,
+ 0x1.00000000000000001p+0, false, false,
+ 0x1.00000000000000001p+0, false, false),
TEST ("1.0000000000000000000016940658945086006781366450013592839241"
"02783203125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.000000000000000008p+0, false,
- 0x1.000000000000000008p+0, false,
- 0x1.000000000000000008p+0, false,
- 0x1.000000000000000008p+0, false,
- true,
- 0x1.000000000000000008p+0, false,
- 0x1.000000000000000008p+0, false,
- 0x1.000000000000000008p+0, false,
- 0x1.000000000000000008p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.000000000000000008p+0, false, false,
+ 0x1.000000000000000008p+0, false, false,
+ 0x1.000000000000000008p+0, false, false,
+ 0x1.000000000000000008p+0, false, false,
+ true,
+ 0x1.000000000000000008p+0, false, false,
+ 0x1.000000000000000008p+0, false, false,
+ 0x1.000000000000000008p+0, false, false,
+ 0x1.000000000000000008p+0, false, false),
TEST ("1.0000000000000000000008470329472543003390683225006796419620"
"513916015625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.000000000000000004p+0, false,
- 0x1.000000000000000004p+0, false,
- 0x1.000000000000000004p+0, false,
- 0x1.000000000000000004p+0, false,
- true,
- 0x1.000000000000000004p+0, false,
- 0x1.000000000000000004p+0, false,
- 0x1.000000000000000004p+0, false,
- 0x1.000000000000000004p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.000000000000000004p+0, false, false,
+ 0x1.000000000000000004p+0, false, false,
+ 0x1.000000000000000004p+0, false, false,
+ 0x1.000000000000000004p+0, false, false,
+ true,
+ 0x1.000000000000000004p+0, false, false,
+ 0x1.000000000000000004p+0, false, false,
+ 0x1.000000000000000004p+0, false, false,
+ 0x1.000000000000000004p+0, false, false),
TEST ("1.0000000000000000000004235164736271501695341612503398209810"
"2569580078125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.000000000000000002p+0, false,
- 0x1.000000000000000002p+0, false,
- 0x1.000000000000000002p+0, false,
- 0x1.000000000000000002p+0, false,
- true,
- 0x1.000000000000000002p+0, false,
- 0x1.000000000000000002p+0, false,
- 0x1.000000000000000002p+0, false,
- 0x1.000000000000000002p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.000000000000000002p+0, false, false,
+ 0x1.000000000000000002p+0, false, false,
+ 0x1.000000000000000002p+0, false, false,
+ 0x1.000000000000000002p+0, false, false,
+ true,
+ 0x1.000000000000000002p+0, false, false,
+ 0x1.000000000000000002p+0, false, false,
+ 0x1.000000000000000002p+0, false, false,
+ 0x1.000000000000000002p+0, false, false),
TEST ("1.0000000000000000000002117582368135750847670806251699104905"
"12847900390625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.000000000000000001p+0, false,
- 0x1.000000000000000001p+0, false,
- 0x1.000000000000000001p+0, false,
- 0x1.000000000000000001p+0, false,
- true,
- 0x1.000000000000000001p+0, false,
- 0x1.000000000000000001p+0, false,
- 0x1.000000000000000001p+0, false,
- 0x1.000000000000000001p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.000000000000000001p+0, false, false,
+ 0x1.000000000000000001p+0, false, false,
+ 0x1.000000000000000001p+0, false, false,
+ 0x1.000000000000000001p+0, false, false,
+ true,
+ 0x1.000000000000000001p+0, false, false,
+ 0x1.000000000000000001p+0, false, false,
+ 0x1.000000000000000001p+0, false, false,
+ 0x1.000000000000000001p+0, false, false),
TEST ("1.0000000000000000000001058791184067875423835403125849552452"
"564239501953125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.0000000000000000008p+0, false,
- 0x1.0000000000000000008p+0, false,
- 0x1.0000000000000000008p+0, false,
- 0x1.0000000000000000008p+0, false,
- true,
- 0x1.0000000000000000008p+0, false,
- 0x1.0000000000000000008p+0, false,
- 0x1.0000000000000000008p+0, false,
- 0x1.0000000000000000008p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.0000000000000000008p+0, false, false,
+ 0x1.0000000000000000008p+0, false, false,
+ 0x1.0000000000000000008p+0, false, false,
+ 0x1.0000000000000000008p+0, false, false,
+ true,
+ 0x1.0000000000000000008p+0, false, false,
+ 0x1.0000000000000000008p+0, false, false,
+ 0x1.0000000000000000008p+0, false, false,
+ 0x1.0000000000000000008p+0, false, false),
TEST ("1.0000000000000000000000529395592033937711917701562924776226"
"2821197509765625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.0000000000000000004p+0, false,
- 0x1.0000000000000000004p+0, false,
- 0x1.0000000000000000004p+0, false,
- 0x1.0000000000000000004p+0, false,
- true,
- 0x1.0000000000000000004p+0, false,
- 0x1.0000000000000000004p+0, false,
- 0x1.0000000000000000004p+0, false,
- 0x1.0000000000000000004p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.0000000000000000004p+0, false, false,
+ 0x1.0000000000000000004p+0, false, false,
+ 0x1.0000000000000000004p+0, false, false,
+ 0x1.0000000000000000004p+0, false, false,
+ true,
+ 0x1.0000000000000000004p+0, false, false,
+ 0x1.0000000000000000004p+0, false, false,
+ 0x1.0000000000000000004p+0, false, false,
+ 0x1.0000000000000000004p+0, false, false),
TEST ("1.0000000000000000000000264697796016968855958850781462388113"
"14105987548828125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.0000000000000000002p+0, false,
- 0x1.0000000000000000002p+0, false,
- 0x1.0000000000000000002p+0, false,
- 0x1.0000000000000000002p+0, false,
- true,
- 0x1.0000000000000000002p+0, false,
- 0x1.0000000000000000002p+0, false,
- 0x1.0000000000000000002p+0, false,
- 0x1.0000000000000000002p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.0000000000000000002p+0, false, false,
+ 0x1.0000000000000000002p+0, false, false,
+ 0x1.0000000000000000002p+0, false, false,
+ 0x1.0000000000000000002p+0, false, false,
+ true,
+ 0x1.0000000000000000002p+0, false, false,
+ 0x1.0000000000000000002p+0, false, false,
+ 0x1.0000000000000000002p+0, false, false,
+ 0x1.0000000000000000002p+0, false, false),
TEST ("1.0000000000000000000000132348898008484427979425390731194056"
"570529937744140625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.0000000000000000001p+0, false,
- 0x1.0000000000000000001p+0, false,
- 0x1.0000000000000000001p+0, false,
- 0x1.0000000000000000001p+0, false,
- true,
- 0x1.0000000000000000001p+0, false,
- 0x1.0000000000000000001p+0, false,
- 0x1.0000000000000000001p+0, false,
- 0x1.0000000000000000001p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.0000000000000000001p+0, false, false,
+ 0x1.0000000000000000001p+0, false, false,
+ 0x1.0000000000000000001p+0, false, false,
+ 0x1.0000000000000000001p+0, false, false,
+ true,
+ 0x1.0000000000000000001p+0, false, false,
+ 0x1.0000000000000000001p+0, false, false,
+ 0x1.0000000000000000001p+0, false, false,
+ 0x1.0000000000000000001p+0, false, false),
TEST ("1.0000000000000000000000066174449004242213989712695365597028"
"2852649688720703125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.00000000000000000008p+0, false,
- 0x1.00000000000000000008p+0, false,
- 0x1.00000000000000000008p+0, false,
- 0x1.00000000000000000008p+0, false,
- true,
- 0x1.00000000000000000008p+0, false,
- 0x1.00000000000000000008p+0, false,
- 0x1.00000000000000000008p+0, false,
- 0x1.00000000000000000008p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.00000000000000000008p+0, false, false,
+ 0x1.00000000000000000008p+0, false, false,
+ 0x1.00000000000000000008p+0, false, false,
+ 0x1.00000000000000000008p+0, false, false,
+ true,
+ 0x1.00000000000000000008p+0, false, false,
+ 0x1.00000000000000000008p+0, false, false,
+ 0x1.00000000000000000008p+0, false, false,
+ 0x1.00000000000000000008p+0, false, false),
TEST ("1.0000000000000000000000033087224502121106994856347682798514"
"14263248443603515625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.00000000000000000004p+0, false,
- 0x1.00000000000000000004p+0, false,
- 0x1.00000000000000000004p+0, false,
- 0x1.00000000000000000004p+0, false,
- true,
- 0x1.00000000000000000004p+0, false,
- 0x1.00000000000000000004p+0, false,
- 0x1.00000000000000000004p+0, false,
- 0x1.00000000000000000004p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.00000000000000000004p+0, false, false,
+ 0x1.00000000000000000004p+0, false, false,
+ 0x1.00000000000000000004p+0, false, false,
+ 0x1.00000000000000000004p+0, false, false,
+ true,
+ 0x1.00000000000000000004p+0, false, false,
+ 0x1.00000000000000000004p+0, false, false,
+ 0x1.00000000000000000004p+0, false, false,
+ 0x1.00000000000000000004p+0, false, false),
TEST ("1.0000000000000000000000016543612251060553497428173841399257"
"071316242218017578125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.00000000000000000002p+0, false,
- 0x1.00000000000000000002p+0, false,
- 0x1.00000000000000000002p+0, false,
- 0x1.00000000000000000002p+0, false,
- true,
- 0x1.00000000000000000002p+0, false,
- 0x1.00000000000000000002p+0, false,
- 0x1.00000000000000000002p+0, false,
- 0x1.00000000000000000002p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.00000000000000000002p+0, false, false,
+ 0x1.00000000000000000002p+0, false, false,
+ 0x1.00000000000000000002p+0, false, false,
+ 0x1.00000000000000000002p+0, false, false,
+ true,
+ 0x1.00000000000000000002p+0, false, false,
+ 0x1.00000000000000000002p+0, false, false,
+ 0x1.00000000000000000002p+0, false, false,
+ 0x1.00000000000000000002p+0, false, false),
TEST ("1.0000000000000000000000008271806125530276748714086920699628"
"5356581211090087890625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.00000000000000000001p+0, false,
- 0x1.00000000000000000001p+0, false,
- 0x1.00000000000000000001p+0, false,
- 0x1.00000000000000000001p+0, false,
- true,
- 0x1.00000000000000000001p+0, false,
- 0x1.00000000000000000001p+0, false,
- 0x1.00000000000000000001p+0, false,
- 0x1.00000000000000000001p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.00000000000000000001p+0, false, false,
+ 0x1.00000000000000000001p+0, false, false,
+ 0x1.00000000000000000001p+0, false, false,
+ 0x1.00000000000000000001p+0, false, false,
+ true,
+ 0x1.00000000000000000001p+0, false, false,
+ 0x1.00000000000000000001p+0, false, false,
+ 0x1.00000000000000000001p+0, false, false,
+ 0x1.00000000000000000001p+0, false, false),
TEST ("1.0000000000000000000000004135903062765138374357043460349814"
"26782906055450439453125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.000000000000000000008p+0, false,
- 0x1.000000000000000000008p+0, false,
- 0x1.000000000000000000008p+0, false,
- 0x1.000000000000000000008p+0, false,
- true,
- 0x1.000000000000000000008p+0, false,
- 0x1.000000000000000000008p+0, false,
- 0x1.000000000000000000008p+0, false,
- 0x1.000000000000000000008p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.000000000000000000008p+0, false, false,
+ 0x1.000000000000000000008p+0, false, false,
+ 0x1.000000000000000000008p+0, false, false,
+ 0x1.000000000000000000008p+0, false, false,
+ true,
+ 0x1.000000000000000000008p+0, false, false,
+ 0x1.000000000000000000008p+0, false, false,
+ 0x1.000000000000000000008p+0, false, false,
+ 0x1.000000000000000000008p+0, false, false),
TEST ("1.0000000000000000000000002067951531382569187178521730174907"
"133914530277252197265625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.000000000000000000004p+0, false,
- 0x1.000000000000000000004p+0, false,
- 0x1.000000000000000000004p+0, false,
- 0x1.000000000000000000004p+0, false,
- true,
- 0x1.000000000000000000004p+0, false,
- 0x1.000000000000000000004p+0, false,
- 0x1.000000000000000000004p+0, false,
- 0x1.000000000000000000004p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.000000000000000000004p+0, false, false,
+ 0x1.000000000000000000004p+0, false, false,
+ 0x1.000000000000000000004p+0, false, false,
+ 0x1.000000000000000000004p+0, false, false,
+ true,
+ 0x1.000000000000000000004p+0, false, false,
+ 0x1.000000000000000000004p+0, false, false,
+ 0x1.000000000000000000004p+0, false, false,
+ 0x1.000000000000000000004p+0, false, false),
TEST ("1.0000000000000000000000001033975765691284593589260865087453"
"5669572651386260986328125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.000000000000000000002p+0, false,
- 0x1.000000000000000000002p+0, false,
- 0x1.000000000000000000002p+0, false,
- 0x1.000000000000000000002p+0, false,
- true,
- 0x1.000000000000000000002p+0, false,
- 0x1.000000000000000000002p+0, false,
- 0x1.000000000000000000002p+0, false,
- 0x1.000000000000000000002p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.000000000000000000002p+0, false, false,
+ 0x1.000000000000000000002p+0, false, false,
+ 0x1.000000000000000000002p+0, false, false,
+ 0x1.000000000000000000002p+0, false, false,
+ true,
+ 0x1.000000000000000000002p+0, false, false,
+ 0x1.000000000000000000002p+0, false, false,
+ 0x1.000000000000000000002p+0, false, false,
+ 0x1.000000000000000000002p+0, false, false),
TEST ("1.0000000000000000000000000516987882845642296794630432543726"
"78347863256931304931640625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.000000000000000000001p+0, false,
- 0x1.000000000000000000001p+0, false,
- 0x1.000000000000000000001p+0, false,
- 0x1.000000000000000000001p+0, false,
- true,
- 0x1.000000000000000000001p+0, false,
- 0x1.000000000000000000001p+0, false,
- 0x1.000000000000000000001p+0, false,
- 0x1.000000000000000000001p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.000000000000000000001p+0, false, false,
+ 0x1.000000000000000000001p+0, false, false,
+ 0x1.000000000000000000001p+0, false, false,
+ 0x1.000000000000000000001p+0, false, false,
+ true,
+ 0x1.000000000000000000001p+0, false, false,
+ 0x1.000000000000000000001p+0, false, false,
+ 0x1.000000000000000000001p+0, false, false,
+ 0x1.000000000000000000001p+0, false, false),
TEST ("1.0000000000000000000000000258493941422821148397315216271863"
"391739316284656524658203125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.0000000000000000000008p+0, false,
- 0x1.0000000000000000000008p+0, false,
- 0x1.0000000000000000000008p+0, false,
- 0x1.0000000000000000000008p+0, false,
- true,
- 0x1.0000000000000000000008p+0, false,
- 0x1.0000000000000000000008p+0, false,
- 0x1.0000000000000000000008p+0, false,
- 0x1.0000000000000000000008p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.0000000000000000000008p+0, false, false,
+ 0x1.0000000000000000000008p+0, false, false,
+ 0x1.0000000000000000000008p+0, false, false,
+ 0x1.0000000000000000000008p+0, false, false,
+ true,
+ 0x1.0000000000000000000008p+0, false, false,
+ 0x1.0000000000000000000008p+0, false, false,
+ 0x1.0000000000000000000008p+0, false, false,
+ 0x1.0000000000000000000008p+0, false, false),
TEST ("1.0000000000000000000000000129246970711410574198657608135931"
"6958696581423282623291015625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.0000000000000000000004p+0, false,
- 0x1.0000000000000000000004p+0, false,
- 0x1.0000000000000000000004p+0, false,
- 0x1.0000000000000000000004p+0, false,
- true,
- 0x1.0000000000000000000004p+0, false,
- 0x1.0000000000000000000004p+0, false,
- 0x1.0000000000000000000004p+0, false,
- 0x1.0000000000000000000004p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.0000000000000000000004p+0, false, false,
+ 0x1.0000000000000000000004p+0, false, false,
+ 0x1.0000000000000000000004p+0, false, false,
+ 0x1.0000000000000000000004p+0, false, false,
+ true,
+ 0x1.0000000000000000000004p+0, false, false,
+ 0x1.0000000000000000000004p+0, false, false,
+ 0x1.0000000000000000000004p+0, false, false,
+ 0x1.0000000000000000000004p+0, false, false),
TEST ("1.0000000000000000000000000064623485355705287099328804067965"
"84793482907116413116455078125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.0000000000000000000002p+0, false,
- 0x1.0000000000000000000002p+0, false,
- 0x1.0000000000000000000002p+0, false,
- 0x1.0000000000000000000002p+0, false,
- true,
- 0x1.0000000000000000000002p+0, false,
- 0x1.0000000000000000000002p+0, false,
- 0x1.0000000000000000000002p+0, false,
- 0x1.0000000000000000000002p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.0000000000000000000002p+0, false, false,
+ 0x1.0000000000000000000002p+0, false, false,
+ 0x1.0000000000000000000002p+0, false, false,
+ 0x1.0000000000000000000002p+0, false, false,
+ true,
+ 0x1.0000000000000000000002p+0, false, false,
+ 0x1.0000000000000000000002p+0, false, false,
+ 0x1.0000000000000000000002p+0, false, false,
+ 0x1.0000000000000000000002p+0, false, false),
TEST ("1.0000000000000000000000000032311742677852643549664402033982"
"923967414535582065582275390625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.0000000000000000000001p+0, false,
- 0x1.0000000000000000000001p+0, false,
- 0x1.0000000000000000000001p+0, false,
- 0x1.0000000000000000000001p+0, false,
- true,
- 0x1.0000000000000000000001p+0, false,
- 0x1.0000000000000000000001p+0, false,
- 0x1.0000000000000000000001p+0, false,
- 0x1.0000000000000000000001p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.0000000000000000000001p+0, false, false,
+ 0x1.0000000000000000000001p+0, false, false,
+ 0x1.0000000000000000000001p+0, false, false,
+ 0x1.0000000000000000000001p+0, false, false,
+ true,
+ 0x1.0000000000000000000001p+0, false, false,
+ 0x1.0000000000000000000001p+0, false, false,
+ 0x1.0000000000000000000001p+0, false, false,
+ 0x1.0000000000000000000001p+0, false, false),
TEST ("1.0000000000000000000000000016155871338926321774832201016991"
"4619837072677910327911376953125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.00000000000000000000008p+0, false,
- 0x1.00000000000000000000008p+0, false,
- 0x1.00000000000000000000008p+0, false,
- 0x1.00000000000000000000008p+0, false,
- true,
- 0x1.00000000000000000000008p+0, false,
- 0x1.00000000000000000000008p+0, false,
- 0x1.00000000000000000000008p+0, false,
- 0x1.00000000000000000000008p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.00000000000000000000008p+0, false, false,
+ 0x1.00000000000000000000008p+0, false, false,
+ 0x1.00000000000000000000008p+0, false, false,
+ 0x1.00000000000000000000008p+0, false, false,
+ true,
+ 0x1.00000000000000000000008p+0, false, false,
+ 0x1.00000000000000000000008p+0, false, false,
+ 0x1.00000000000000000000008p+0, false, false,
+ 0x1.00000000000000000000008p+0, false, false),
TEST ("1.0000000000000000000000000008077935669463160887416100508495"
"73099185363389551639556884765625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.00000000000000000000004p+0, false,
- 0x1.00000000000000000000004p+0, false,
- 0x1.00000000000000000000004p+0, false,
- 0x1.00000000000000000000004p+0, false,
- true,
- 0x1.00000000000000000000004p+0, false,
- 0x1.00000000000000000000004p+0, false,
- 0x1.00000000000000000000004p+0, false,
- 0x1.00000000000000000000004p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.00000000000000000000004p+0, false, false,
+ 0x1.00000000000000000000004p+0, false, false,
+ 0x1.00000000000000000000004p+0, false, false,
+ 0x1.00000000000000000000004p+0, false, false,
+ true,
+ 0x1.00000000000000000000004p+0, false, false,
+ 0x1.00000000000000000000004p+0, false, false,
+ 0x1.00000000000000000000004p+0, false, false,
+ 0x1.00000000000000000000004p+0, false, false),
TEST ("1.0000000000000000000000000004038967834731580443708050254247"
"865495926816947758197784423828125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.00000000000000000000002p+0, false,
- 0x1.00000000000000000000002p+0, false,
- 0x1.00000000000000000000002p+0, false,
- 0x1.00000000000000000000002p+0, false,
- true,
- 0x1.00000000000000000000002p+0, false,
- 0x1.00000000000000000000002p+0, false,
- 0x1.00000000000000000000002p+0, false,
- 0x1.00000000000000000000002p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.00000000000000000000002p+0, false, false,
+ 0x1.00000000000000000000002p+0, false, false,
+ 0x1.00000000000000000000002p+0, false, false,
+ 0x1.00000000000000000000002p+0, false, false,
+ true,
+ 0x1.00000000000000000000002p+0, false, false,
+ 0x1.00000000000000000000002p+0, false, false,
+ 0x1.00000000000000000000002p+0, false, false,
+ 0x1.00000000000000000000002p+0, false, false),
TEST ("1.0000000000000000000000000002019483917365790221854025127123"
"9327479634084738790988922119140625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.00000000000000000000001p+0, false,
- 0x1.00000000000000000000001p+0, false,
- 0x1.00000000000000000000001p+0, false,
- 0x1.00000000000000000000001p+0, false,
- true,
- 0x1.00000000000000000000001p+0, false,
- 0x1.00000000000000000000001p+0, false,
- 0x1.00000000000000000000001p+0, false,
- 0x1.00000000000000000000001p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.00000000000000000000001p+0, false, false,
+ 0x1.00000000000000000000001p+0, false, false,
+ 0x1.00000000000000000000001p+0, false, false,
+ 0x1.00000000000000000000001p+0, false, false,
+ true,
+ 0x1.00000000000000000000001p+0, false, false,
+ 0x1.00000000000000000000001p+0, false, false,
+ 0x1.00000000000000000000001p+0, false, false,
+ 0x1.00000000000000000000001p+0, false, false),
TEST ("1.0000000000000000000000000001009741958682895110927012563561"
"96637398170423693954944610595703125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.000000000000000000000008p+0, false,
- 0x1.000000000000000000000008p+0, false,
- 0x1.000000000000000000000008p+0, false,
- 0x1.000000000000000000000008p+0, false,
- true,
- 0x1.000000000000000000000008p+0, false,
- 0x1.000000000000000000000008p+0, false,
- 0x1.000000000000000000000008p+0, false,
- 0x1.000000000000000000000008p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.000000000000000000000008p+0, false, false,
+ 0x1.000000000000000000000008p+0, false, false,
+ 0x1.000000000000000000000008p+0, false, false,
+ 0x1.000000000000000000000008p+0, false, false,
+ true,
+ 0x1.000000000000000000000008p+0, false, false,
+ 0x1.000000000000000000000008p+0, false, false,
+ 0x1.000000000000000000000008p+0, false, false,
+ 0x1.000000000000000000000008p+0, false, false),
TEST ("1.0000000000000000000000000000504870979341447555463506281780"
"983186990852118469774723052978515625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.000000000000000000000004p+0, false,
- 0x1.000000000000000000000004p+0, false,
- 0x1.000000000000000000000004p+0, false,
- 0x1.000000000000000000000004p+0, false,
- true,
- 0x1.000000000000000000000004p+0, false,
- 0x1.000000000000000000000004p+0, false,
- 0x1.000000000000000000000004p+0, false,
- 0x1.000000000000000000000004p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.000000000000000000000004p+0, false, false,
+ 0x1.000000000000000000000004p+0, false, false,
+ 0x1.000000000000000000000004p+0, false, false,
+ 0x1.000000000000000000000004p+0, false, false,
+ true,
+ 0x1.000000000000000000000004p+0, false, false,
+ 0x1.000000000000000000000004p+0, false, false,
+ 0x1.000000000000000000000004p+0, false, false,
+ 0x1.000000000000000000000004p+0, false, false),
TEST ("1.0000000000000000000000000000252435489670723777731753140890"
"4915934954260592348873615264892578125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.000000000000000000000002p+0, false,
- 0x1.000000000000000000000002p+0, false,
- 0x1.000000000000000000000002p+0, false,
- 0x1.000000000000000000000002p+0, false,
- true,
- 0x1.000000000000000000000002p+0, false,
- 0x1.000000000000000000000002p+0, false,
- 0x1.000000000000000000000002p+0, false,
- 0x1.000000000000000000000002p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.000000000000000000000002p+0, false, false,
+ 0x1.000000000000000000000002p+0, false, false,
+ 0x1.000000000000000000000002p+0, false, false,
+ 0x1.000000000000000000000002p+0, false, false,
+ true,
+ 0x1.000000000000000000000002p+0, false, false,
+ 0x1.000000000000000000000002p+0, false, false,
+ 0x1.000000000000000000000002p+0, false, false,
+ 0x1.000000000000000000000002p+0, false, false),
TEST ("1.0000000000000000000000000000126217744835361888865876570445"
"24579674771302961744368076324462890625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.000000000000000000000001p+0, false,
- 0x1.000000000000000000000001p+0, false,
- 0x1.000000000000000000000001p+0, false,
- 0x1.000000000000000000000001p+0, false,
- true,
- 0x1.000000000000000000000001p+0, false,
- 0x1.000000000000000000000001p+0, false,
- 0x1.000000000000000000000001p+0, false,
- 0x1.000000000000000000000001p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.000000000000000000000001p+0, false, false,
+ 0x1.000000000000000000000001p+0, false, false,
+ 0x1.000000000000000000000001p+0, false, false,
+ 0x1.000000000000000000000001p+0, false, false,
+ true,
+ 0x1.000000000000000000000001p+0, false, false,
+ 0x1.000000000000000000000001p+0, false, false,
+ 0x1.000000000000000000000001p+0, false, false,
+ 0x1.000000000000000000000001p+0, false, false),
TEST ("1.0000000000000000000000000000063108872417680944432938285222"
"622898373856514808721840381622314453125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.0000000000000000000000008p+0, false,
- 0x1.0000000000000000000000008p+0, false,
- 0x1.0000000000000000000000008p+0, false,
- 0x1.0000000000000000000000008p+0, false,
- true,
- 0x1.0000000000000000000000008p+0, false,
- 0x1.0000000000000000000000008p+0, false,
- 0x1.0000000000000000000000008p+0, false,
- 0x1.0000000000000000000000008p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.0000000000000000000000008p+0, false, false,
+ 0x1.0000000000000000000000008p+0, false, false,
+ 0x1.0000000000000000000000008p+0, false, false,
+ 0x1.0000000000000000000000008p+0, false, false,
+ true,
+ 0x1.0000000000000000000000008p+0, false, false,
+ 0x1.0000000000000000000000008p+0, false, false,
+ 0x1.0000000000000000000000008p+0, false, false,
+ 0x1.0000000000000000000000008p+0, false, false),
TEST ("1.0000000000000000000000000000031554436208840472216469142611"
"3114491869282574043609201908111572265625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.0000000000000000000000004p+0, false,
- 0x1.0000000000000000000000004p+0, false,
- 0x1.0000000000000000000000004p+0, false,
- 0x1.0000000000000000000000004p+0, false,
- true,
- 0x1.0000000000000000000000004p+0, false,
- 0x1.0000000000000000000000004p+0, false,
- 0x1.0000000000000000000000004p+0, false,
- 0x1.0000000000000000000000004p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.0000000000000000000000004p+0, false, false,
+ 0x1.0000000000000000000000004p+0, false, false,
+ 0x1.0000000000000000000000004p+0, false, false,
+ 0x1.0000000000000000000000004p+0, false, false,
+ true,
+ 0x1.0000000000000000000000004p+0, false, false,
+ 0x1.0000000000000000000000004p+0, false, false,
+ 0x1.0000000000000000000000004p+0, false, false,
+ 0x1.0000000000000000000000004p+0, false, false),
TEST ("1.0000000000000000000000000000015777218104420236108234571305"
"65572459346412870218046009540557861328125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.0000000000000000000000002p+0, false,
- 0x1.0000000000000000000000002p+0, false,
- 0x1.0000000000000000000000002p+0, false,
- 0x1.0000000000000000000000002p+0, false,
- true,
- 0x1.0000000000000000000000002p+0, false,
- 0x1.0000000000000000000000002p+0, false,
- 0x1.0000000000000000000000002p+0, false,
- 0x1.0000000000000000000000002p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.0000000000000000000000002p+0, false, false,
+ 0x1.0000000000000000000000002p+0, false, false,
+ 0x1.0000000000000000000000002p+0, false, false,
+ 0x1.0000000000000000000000002p+0, false, false,
+ true,
+ 0x1.0000000000000000000000002p+0, false, false,
+ 0x1.0000000000000000000000002p+0, false, false,
+ 0x1.0000000000000000000000002p+0, false, false,
+ 0x1.0000000000000000000000002p+0, false, false),
TEST ("1.0000000000000000000000000000007888609052210118054117285652"
"827862296732064351090230047702789306640625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.0000000000000000000000001p+0, false,
- 0x1.0000000000000000000000001p+0, false,
- 0x1.0000000000000000000000001p+0, false,
- 0x1.0000000000000000000000001p+0, false,
- true,
- 0x1.0000000000000000000000001p+0, false,
- 0x1.0000000000000000000000001p+0, false,
- 0x1.0000000000000000000000001p+0, false,
- 0x1.0000000000000000000000001p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.0000000000000000000000001p+0, false, false,
+ 0x1.0000000000000000000000001p+0, false, false,
+ 0x1.0000000000000000000000001p+0, false, false,
+ 0x1.0000000000000000000000001p+0, false, false,
+ true,
+ 0x1.0000000000000000000000001p+0, false, false,
+ 0x1.0000000000000000000000001p+0, false, false,
+ 0x1.0000000000000000000000001p+0, false, false,
+ 0x1.0000000000000000000000001p+0, false, false),
TEST ("1.0000000000000000000000000000003944304526105059027058642826"
"4139311483660321755451150238513946533203125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.00000000000000000000000008p+0, false,
- 0x1.00000000000000000000000008p+0, false,
- 0x1.00000000000000000000000008p+0, false,
- 0x1.00000000000000000000000008p+0, false,
- true,
- 0x1.00000000000000000000000008p+0, false,
- 0x1.00000000000000000000000008p+0, false,
- 0x1.00000000000000000000000008p+0, false,
- 0x1.00000000000000000000000008p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.00000000000000000000000008p+0, false, false,
+ 0x1.00000000000000000000000008p+0, false, false,
+ 0x1.00000000000000000000000008p+0, false, false,
+ 0x1.00000000000000000000000008p+0, false, false,
+ true,
+ 0x1.00000000000000000000000008p+0, false, false,
+ 0x1.00000000000000000000000008p+0, false, false,
+ 0x1.00000000000000000000000008p+0, false, false,
+ 0x1.00000000000000000000000008p+0, false, false),
TEST ("1.0000000000000000000000000000001972152263052529513529321413"
"20696557418301608777255751192569732666015625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.00000000000000000000000004p+0, false,
- 0x1.00000000000000000000000004p+0, false,
- 0x1.00000000000000000000000004p+0, false,
- 0x1.00000000000000000000000004p+0, false,
- true,
- 0x1.00000000000000000000000004p+0, false,
- 0x1.00000000000000000000000004p+0, false,
- 0x1.00000000000000000000000004p+0, false,
- 0x1.00000000000000000000000004p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.00000000000000000000000004p+0, false, false,
+ 0x1.00000000000000000000000004p+0, false, false,
+ 0x1.00000000000000000000000004p+0, false, false,
+ 0x1.00000000000000000000000004p+0, false, false,
+ true,
+ 0x1.00000000000000000000000004p+0, false, false,
+ 0x1.00000000000000000000000004p+0, false, false,
+ 0x1.00000000000000000000000004p+0, false, false,
+ 0x1.00000000000000000000000004p+0, false, false),
TEST ("1.0000000000000000000000000000000986076131526264756764660706"
"603482787091508043886278755962848663330078125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.00000000000000000000000002p+0, false,
- 0x1.00000000000000000000000002p+0, false,
- 0x1.00000000000000000000000002p+0, false,
- 0x1.00000000000000000000000002p+0, false,
- true,
- 0x1.00000000000000000000000002p+0, false,
- 0x1.00000000000000000000000002p+0, false,
- 0x1.00000000000000000000000002p+0, false,
- 0x1.00000000000000000000000002p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.00000000000000000000000002p+0, false, false,
+ 0x1.00000000000000000000000002p+0, false, false,
+ 0x1.00000000000000000000000002p+0, false, false,
+ 0x1.00000000000000000000000002p+0, false, false,
+ true,
+ 0x1.00000000000000000000000002p+0, false, false,
+ 0x1.00000000000000000000000002p+0, false, false,
+ 0x1.00000000000000000000000002p+0, false, false,
+ 0x1.00000000000000000000000002p+0, false, false),
TEST ("1.0000000000000000000000000000000493038065763132378382330353"
"3017413935457540219431393779814243316650390625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.00000000000000000000000001p+0, false,
- 0x1.00000000000000000000000001p+0, false,
- 0x1.00000000000000000000000001p+0, false,
- 0x1.00000000000000000000000001p+0, false,
- true,
- 0x1.00000000000000000000000001p+0, false,
- 0x1.00000000000000000000000001p+0, false,
- 0x1.00000000000000000000000001p+0, false,
- 0x1.00000000000000000000000001p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.00000000000000000000000001p+0, false, false,
+ 0x1.00000000000000000000000001p+0, false, false,
+ 0x1.00000000000000000000000001p+0, false, false,
+ 0x1.00000000000000000000000001p+0, false, false,
+ true,
+ 0x1.00000000000000000000000001p+0, false, false,
+ 0x1.00000000000000000000000001p+0, false, false,
+ 0x1.00000000000000000000000001p+0, false, false,
+ 0x1.00000000000000000000000001p+0, false, false),
TEST ("1.0000000000000000000000000000000246519032881566189191165176"
"65087069677287701097156968899071216583251953125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.000000000000000000000000008p+0, false,
- 0x1.000000000000000000000000008p+0, false,
- 0x1.000000000000000000000000008p+0, false,
- 0x1.000000000000000000000000008p+0, false,
- true,
- 0x1.000000000000000000000000008p+0, false,
- 0x1.000000000000000000000000008p+0, false,
- 0x1.000000000000000000000000008p+0, false,
- 0x1.000000000000000000000000008p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.000000000000000000000000008p+0, false, false,
+ 0x1.000000000000000000000000008p+0, false, false,
+ 0x1.000000000000000000000000008p+0, false, false,
+ 0x1.000000000000000000000000008p+0, false, false,
+ true,
+ 0x1.000000000000000000000000008p+0, false, false,
+ 0x1.000000000000000000000000008p+0, false, false,
+ 0x1.000000000000000000000000008p+0, false, false,
+ 0x1.000000000000000000000000008p+0, false, false),
TEST ("1.0000000000000000000000000000000123259516440783094595582588"
"325435348386438505485784844495356082916259765625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000000000000000000000000008p+0, false,
- true,
- 0x1.000000000000000000000000004p+0, false,
- 0x1.000000000000000000000000004p+0, false,
- 0x1.000000000000000000000000004p+0, false,
- 0x1.000000000000000000000000004p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000000000000000000000000008p+0, false, false,
+ true,
+ 0x1.000000000000000000000000004p+0, false, false,
+ 0x1.000000000000000000000000004p+0, false, false,
+ 0x1.000000000000000000000000004p+0, false, false,
+ 0x1.000000000000000000000000004p+0, false, false),
TEST ("1.0000000000000000000000000000000061629758220391547297791294"
"1627176741932192527428924222476780414581298828125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000000000000000000000000008p+0, false,
- true,
- 0x1.000000000000000000000000002p+0, false,
- 0x1.000000000000000000000000002p+0, false,
- 0x1.000000000000000000000000002p+0, false,
- 0x1.000000000000000000000000002p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000000000000000000000000008p+0, false, false,
+ true,
+ 0x1.000000000000000000000000002p+0, false, false,
+ 0x1.000000000000000000000000002p+0, false, false,
+ 0x1.000000000000000000000000002p+0, false, false,
+ 0x1.000000000000000000000000002p+0, false, false),
TEST ("1.0000000000000000000000000000000030814879110195773648895647"
"08135883709660962637144621112383902072906494140625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000000000000000000000000008p+0, false,
- true,
- 0x1.000000000000000000000000001p+0, false,
- 0x1.000000000000000000000000001p+0, false,
- 0x1.000000000000000000000000001p+0, false,
- 0x1.000000000000000000000000001p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000000000000000000000000008p+0, false, false,
+ true,
+ 0x1.000000000000000000000000001p+0, false, false,
+ 0x1.000000000000000000000000001p+0, false, false,
+ 0x1.000000000000000000000000001p+0, false, false,
+ 0x1.000000000000000000000000001p+0, false, false),
TEST ("1.0000000000000000000000000000000015407439555097886824447823"
"540679418548304813185723105561919510364532470703125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000000000000000000000000008p+0, false,
- true,
- 0x1.0000000000000000000000000008p+0, false,
- 0x1.0000000000000000000000000008p+0, false,
- 0x1.0000000000000000000000000008p+0, false,
- 0x1.0000000000000000000000000008p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000000000000000000000000008p+0, false, false,
+ true,
+ 0x1.0000000000000000000000000008p+0, false, false,
+ 0x1.0000000000000000000000000008p+0, false, false,
+ 0x1.0000000000000000000000000008p+0, false, false,
+ 0x1.0000000000000000000000000008p+0, false, false),
TEST ("1.0000000000000000000000000000000007703719777548943412223911"
"7703397092741524065928615527809597551822662353515625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000000000000000000000000008p+0, false,
- true,
- 0x1.0000000000000000000000000004p+0, false,
- 0x1.0000000000000000000000000004p+0, false,
- 0x1.0000000000000000000000000004p+0, false,
- 0x1.0000000000000000000000000004p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000000000000000000000000008p+0, false, false,
+ true,
+ 0x1.0000000000000000000000000004p+0, false, false,
+ 0x1.0000000000000000000000000004p+0, false, false,
+ 0x1.0000000000000000000000000004p+0, false, false,
+ 0x1.0000000000000000000000000004p+0, false, false),
TEST ("1.0000000000000000000000000000000003851859888774471706111955"
"88516985463707620329643077639047987759113311767578125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000000000000000000000000008p+0, false,
- true,
- 0x1.0000000000000000000000000002p+0, false,
- 0x1.0000000000000000000000000002p+0, false,
- 0x1.0000000000000000000000000002p+0, false,
- 0x1.0000000000000000000000000002p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000000000000000000000000008p+0, false, false,
+ true,
+ 0x1.0000000000000000000000000002p+0, false, false,
+ 0x1.0000000000000000000000000002p+0, false, false,
+ 0x1.0000000000000000000000000002p+0, false, false,
+ 0x1.0000000000000000000000000002p+0, false, false),
TEST ("1.0000000000000000000000000000000001925929944387235853055977"
"942584927318538101648215388195239938795566558837890625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000000000000000000000000008p+0, false,
- true,
- 0x1.0000000000000000000000000001p+0, false,
- 0x1.0000000000000000000000000001p+0, false,
- 0x1.0000000000000000000000000001p+0, false,
- 0x1.0000000000000000000000000001p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000000000000000000000000008p+0, false, false,
+ true,
+ 0x1.0000000000000000000000000001p+0, false, false,
+ 0x1.0000000000000000000000000001p+0, false, false,
+ 0x1.0000000000000000000000000001p+0, false, false,
+ 0x1.0000000000000000000000000001p+0, false, false),
TEST ("1.0000000000000000000000000000000000962964972193617926527988"
"9712924636592690508241076940976199693977832794189453125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000000000000000000000000008p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000000000000000001p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000000000000000000000000008p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000000000000000001p+0, false, false),
+ TEST ("0x30000002222225p-1077",
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x1.800000111111p-1024, false, true,
+ 0x1.8000001111114p-1024, false, true,
+ 0x1.800000111111p-1024, false, true,
+ 0x1.8000001111114p-1024, false, true,
+ true,
+ 0x1.80000011111128p-1024, false, false,
+ 0x1.80000011111128p-1024, false, false,
+ 0x1.80000011111128p-1024, false, false,
+ 0x1.80000011111128p-1024, false, false,
+ true,
+ 0x1.80000011111128p-1024, false, false,
+ 0x1.80000011111128p-1024, false, false,
+ 0x1.80000011111128p-1024, false, false,
+ 0x1.80000011111128p-1024, false, false,
+ false,
+ 0x1.800000111111p-1024, false, true,
+ 0x1.8000001111114p-1024, false, true,
+ 0x1.800000111111p-1024, false, true,
+ 0x1.8000001111114p-1024, false, true,
+ true,
+ 0x1.80000011111128p-1024, false, false,
+ 0x1.80000011111128p-1024, false, false,
+ 0x1.80000011111128p-1024, false, false,
+ 0x1.80000011111128p-1024, false, false),
+ TEST ("0x0.7fffffffffffeap-1022",
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x1.ffffffffffff8p-1024, false, true,
+ 0x1.ffffffffffffcp-1024, false, true,
+ 0x1.ffffffffffff8p-1024, false, true,
+ 0x1.ffffffffffffcp-1024, false, true,
+ true,
+ 0x1.ffffffffffffa8p-1024, false, false,
+ 0x1.ffffffffffffa8p-1024, false, false,
+ 0x1.ffffffffffffa8p-1024, false, false,
+ 0x1.ffffffffffffa8p-1024, false, false,
+ true,
+ 0x1.ffffffffffffa8p-1024, false, false,
+ 0x1.ffffffffffffa8p-1024, false, false,
+ 0x1.ffffffffffffa8p-1024, false, false,
+ 0x1.ffffffffffffa8p-1024, false, false,
+ false,
+ 0x1.ffffffffffff8p-1024, false, true,
+ 0x1.ffffffffffffcp-1024, false, true,
+ 0x1.ffffffffffff8p-1024, false, true,
+ 0x1.ffffffffffffcp-1024, false, true,
+ true,
+ 0x1.ffffffffffffa8p-1024, false, false,
+ 0x1.ffffffffffffa8p-1024, false, false,
+ 0x1.ffffffffffffa8p-1024, false, false,
+ 0x1.ffffffffffffa8p-1024, false, false),
+ TEST ("0x0.7fffffffffffe9p-1022",
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x1.ffffffffffff8p-1024, false, true,
+ 0x1.ffffffffffffcp-1024, false, true,
+ 0x1.ffffffffffff8p-1024, false, true,
+ 0x1.ffffffffffffcp-1024, false, true,
+ true,
+ 0x1.ffffffffffffa4p-1024, false, false,
+ 0x1.ffffffffffffa4p-1024, false, false,
+ 0x1.ffffffffffffa4p-1024, false, false,
+ 0x1.ffffffffffffa4p-1024, false, false,
+ true,
+ 0x1.ffffffffffffa4p-1024, false, false,
+ 0x1.ffffffffffffa4p-1024, false, false,
+ 0x1.ffffffffffffa4p-1024, false, false,
+ 0x1.ffffffffffffa4p-1024, false, false,
+ false,
+ 0x1.ffffffffffff8p-1024, false, true,
+ 0x1.ffffffffffffcp-1024, false, true,
+ 0x1.ffffffffffff8p-1024, false, true,
+ 0x1.ffffffffffffcp-1024, false, true,
+ true,
+ 0x1.ffffffffffffa4p-1024, false, false,
+ 0x1.ffffffffffffa4p-1024, false, false,
+ 0x1.ffffffffffffa4p-1024, false, false,
+ 0x1.ffffffffffffa4p-1024, false, false),
+ TEST ("0x0.7ffffd4p-126",
+ false,
+ 0x1.fffffp-128, false, true,
+ 0x1.fffff8p-128, false, true,
+ 0x1.fffffp-128, false, true,
+ 0x1.fffff8p-128, false, true,
+ true,
+ 0x1.fffff5p-128, false, false,
+ 0x1.fffff5p-128, false, false,
+ 0x1.fffff5p-128, false, false,
+ 0x1.fffff5p-128, false, false,
+ true,
+ 0x1.fffff5p-128, false, false,
+ 0x1.fffff5p-128, false, false,
+ 0x1.fffff5p-128, false, false,
+ 0x1.fffff5p-128, false, false,
+ true,
+ 0x1.fffff5p-128, false, false,
+ 0x1.fffff5p-128, false, false,
+ 0x1.fffff5p-128, false, false,
+ 0x1.fffff5p-128, false, false,
+ true,
+ 0x1.fffff5p-128, false, false,
+ 0x1.fffff5p-128, false, false,
+ 0x1.fffff5p-128, false, false,
+ 0x1.fffff5p-128, false, false,
+ true,
+ 0x1.fffff5p-128, false, false,
+ 0x1.fffff5p-128, false, false,
+ 0x1.fffff5p-128, false, false,
+ 0x1.fffff5p-128, false, false),
+ TEST ("0x0.7ffffffffffffffd4p-16382",
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x1.fffffffffffffffp-16384, false, true,
+ 0x1.fffffffffffffff8p-16384, false, true,
+ 0x1.fffffffffffffffp-16384, false, true,
+ 0x1.fffffffffffffff8p-16384, false, true,
+ false,
+ 0x1.fffffffffffffff4p-16384, false, true,
+ 0x1.fffffffffffffff4p-16384, false, true,
+ 0x1.fffffffffffffff4p-16384, false, true,
+ 0x1.fffffffffffffff8p-16384, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ true,
+ 0x1.fffffffffffffff5p-16384, false, false,
+ 0x1.fffffffffffffff5p-16384, false, false,
+ 0x1.fffffffffffffff5p-16384, false, false,
+ 0x1.fffffffffffffff5p-16384, false, false),
+ TEST ("0x0.7ffffffffffffffd4p-16383",
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0xf.ffffffffffffff8p-16388, false, true,
+ 0xf.ffffffffffffff8p-16388, false, true,
+ 0xf.ffffffffffffff8p-16388, false, true,
+ 0x1p-16384, false, true,
+ false,
+ 0xf.ffffffffffffff8p-16388, false, true,
+ 0xf.ffffffffffffffcp-16388, false, true,
+ 0xf.ffffffffffffff8p-16388, false, true,
+ 0xf.ffffffffffffffcp-16388, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ true,
+ 0xf.ffffffffffffffa8p-16388, false, false,
+ 0xf.ffffffffffffffa8p-16388, false, false,
+ 0xf.ffffffffffffffa8p-16388, false, false,
+ 0xf.ffffffffffffffa8p-16388, false, false),
+ TEST ("0x0.7ffffffffffffffffffffffffffeap-16382",
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x1.fffffffffffffff8p-16384, false, true,
+ 0x2p-16384, false, true,
+ 0x1.fffffffffffffff8p-16384, false, true,
+ 0x2p-16384, false, true,
+ false,
+ 0x1.fffffffffffffffcp-16384, false, true,
+ 0x2p-16384, false, true,
+ 0x1.fffffffffffffffcp-16384, false, true,
+ 0x2p-16384, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x1.fffffffffffffffffffffffffff8p-16384, false, true,
+ 0x1.fffffffffffffffffffffffffffcp-16384, false, true,
+ 0x1.fffffffffffffffffffffffffff8p-16384, false, true,
+ 0x1.fffffffffffffffffffffffffffcp-16384, false, true),
+ TEST ("0x0.7000004p-126",
+ false,
+ 0x1.cp-128, false, true,
+ 0x1.cp-128, false, true,
+ 0x1.cp-128, false, true,
+ 0x1.c00008p-128, false, true,
+ true,
+ 0x1.c00001p-128, false, false,
+ 0x1.c00001p-128, false, false,
+ 0x1.c00001p-128, false, false,
+ 0x1.c00001p-128, false, false,
+ true,
+ 0x1.c00001p-128, false, false,
+ 0x1.c00001p-128, false, false,
+ 0x1.c00001p-128, false, false,
+ 0x1.c00001p-128, false, false,
+ true,
+ 0x1.c00001p-128, false, false,
+ 0x1.c00001p-128, false, false,
+ 0x1.c00001p-128, false, false,
+ 0x1.c00001p-128, false, false,
+ true,
+ 0x1.c00001p-128, false, false,
+ 0x1.c00001p-128, false, false,
+ 0x1.c00001p-128, false, false,
+ 0x1.c00001p-128, false, false,
+ true,
+ 0x1.c00001p-128, false, false,
+ 0x1.c00001p-128, false, false,
+ 0x1.c00001p-128, false, false,
+ 0x1.c00001p-128, false, false),
+ TEST ("0x0.70000000000002p-1022",
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x1.cp-1024, false, true,
+ 0x1.cp-1024, false, true,
+ 0x1.cp-1024, false, true,
+ 0x1.c000000000004p-1024, false, true,
+ true,
+ 0x1.c0000000000008p-1024, false, false,
+ 0x1.c0000000000008p-1024, false, false,
+ 0x1.c0000000000008p-1024, false, false,
+ 0x1.c0000000000008p-1024, false, false,
+ true,
+ 0x1.c0000000000008p-1024, false, false,
+ 0x1.c0000000000008p-1024, false, false,
+ 0x1.c0000000000008p-1024, false, false,
+ 0x1.c0000000000008p-1024, false, false,
+ false,
+ 0x1.cp-1024, false, true,
+ 0x1.cp-1024, false, true,
+ 0x1.cp-1024, false, true,
+ 0x1.c000000000004p-1024, false, true,
+ true,
+ 0x1.c0000000000008p-1024, false, false,
+ 0x1.c0000000000008p-1024, false, false,
+ 0x1.c0000000000008p-1024, false, false,
+ 0x1.c0000000000008p-1024, false, false),
+ TEST ("0x0.70000000000000004p-16382",
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x1.cp-16384, false, true,
+ 0x1.cp-16384, false, true,
+ 0x1.cp-16384, false, true,
+ 0x1.c000000000000008p-16384, false, true,
+ false,
+ 0x1.cp-16384, false, true,
+ 0x1.cp-16384, false, true,
+ 0x1.cp-16384, false, true,
+ 0x1.c000000000000004p-16384, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ true,
+ 0x1.c000000000000001p-16384, false, false,
+ 0x1.c000000000000001p-16384, false, false,
+ 0x1.c000000000000001p-16384, false, false,
+ 0x1.c000000000000001p-16384, false, false),
+ TEST ("0x0.70000000000000004p-16383",
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0xep-16388, false, true,
+ 0xep-16388, false, true,
+ 0xep-16388, false, true,
+ 0xe.000000000000008p-16388, false, true,
+ false,
+ 0xep-16388, false, true,
+ 0xep-16388, false, true,
+ 0xep-16388, false, true,
+ 0xe.000000000000004p-16388, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ true,
+ 0xe.0000000000000008p-16388, false, false,
+ 0xe.0000000000000008p-16388, false, false,
+ 0xe.0000000000000008p-16388, false, false,
+ 0xe.0000000000000008p-16388, false, false),
+ TEST ("0x0.70000000000000000000000000002p-16382",
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x1.cp-16384, false, true,
+ 0x1.cp-16384, false, true,
+ 0x1.cp-16384, false, true,
+ 0x1.c000000000000008p-16384, false, true,
+ false,
+ 0x1.cp-16384, false, true,
+ 0x1.cp-16384, false, true,
+ 0x1.cp-16384, false, true,
+ 0x1.c000000000000004p-16384, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x1.cp-16384, false, true,
+ 0x1.cp-16384, false, true,
+ 0x1.cp-16384, false, true,
+ 0x1.c000000000000000000000000004p-16384, false, true),
};
diff --git a/stdlib/tst-strtod-round-skeleton.c b/stdlib/tst-strtod-round-skeleton.c
index 6fba4b5..be081ba 100644
--- a/stdlib/tst-strtod-round-skeleton.c
+++ b/stdlib/tst-strtod-round-skeleton.c
@@ -21,6 +21,7 @@
declared in the headers. */
#define _LIBC_TEST 1
#define __STDC_WANT_IEC_60559_TYPES_EXT__
+#include <errno.h>
#include <fenv.h>
#include <float.h>
#include <math.h>
@@ -29,6 +30,7 @@
#include <stdlib.h>
#include <string.h>
#include <math-tests.h>
+#include <tininess.h>
#include "tst-strtod.h"
@@ -138,16 +140,26 @@
gen-tst-strtod-round utility to select the appropriately
rounded long double value for a given format. */
#define TEST(s, \
- fx, fd, fdo, fn, fno, fz, fzo, fu, fuo, \
- dx, dd, ddo, dn, dno, dz, dzo, du, duo, \
- ld64ix, ld64id, ld64ido, ld64in, ld64ino, \
- ld64iz, ld64izo, ld64iu, ld64iuo, \
- ld64mx, ld64md, ld64mdo, ld64mn, ld64mno, \
- ld64mz, ld64mzo, ld64mu, ld64muo, \
- ld106x, ld106d, ld106do, ld106n, ld106no, \
- ld106z, ld106zo, ld106u, ld106uo, \
- ld113x, ld113d, ld113do, ld113n, ld113no, \
- ld113z, ld113zo, ld113u, ld113uo) \
+ fx, fd, fdo, fdu, fn, fno, fnu, \
+ fz, fzo, fzu, fu, fuo, fuu, \
+ dx, dd, ddo, ddu, dn, dno, dnu, \
+ dz, dzo, dzu, du, duo, duu, \
+ ld64ix, ld64id, ld64ido, ld64idu, \
+ ld64in, ld64ino, ld64inu, \
+ ld64iz, ld64izo, ld64izu, \
+ ld64iu, ld64iuo, ld64iuu, \
+ ld64mx, ld64md, ld64mdo, ld64mdu, \
+ ld64mn, ld64mno, ld64mnu, \
+ ld64mz, ld64mzo, ld64mzu, \
+ ld64mu, ld64muo, ld64muu, \
+ ld106x, ld106d, ld106do, ld106du, \
+ ld106n, ld106no, ld106nu, \
+ ld106z, ld106zo, ld106zu, \
+ ld106u, ld106uo, ld106uu, \
+ ld113x, ld113d, ld113do, ld113du, \
+ ld113n, ld113no, ld113nu, \
+ ld113z, ld113zo, ld113zu, \
+ ld113u, ld113uo, ld113uu) \
{ \
L_ (s), \
{ XNTRY (fx, dx, ld64ix, ld64mx, ld106x, ld113x) }, \
@@ -162,6 +174,12 @@
{ XNTRY (fdo, ddo, ld64ido, ld64mdo, ld106do, ld113do) }, \
{ XNTRY (fzo, dzo, ld64izo, ld64mzo, ld106zo, ld113zo) }, \
{ XNTRY (fuo, duo, ld64iuo, ld64muo, ld106uo, ld113uo) } \
+ }, \
+ { \
+ { XNTRY (fnu, dnu, ld64inu, ld64mnu, ld106nu, ld113nu) }, \
+ { XNTRY (fdu, ddu, ld64idu, ld64mdu, ld106du, ld113du) }, \
+ { XNTRY (fzu, dzu, ld64izu, ld64mzu, ld106zu, ld113zu) }, \
+ { XNTRY (fuu, duu, ld64iuu, ld64muu, ld106uu, ld113uu) } \
} \
}
@@ -180,11 +198,17 @@ struct test_overflow
STRUCT_FOREACH_FLOAT_BOOL
};
+struct test_underflow
+ {
+ STRUCT_FOREACH_FLOAT_BOOL
+ };
+
struct test {
const CHAR *s;
struct test_exactness exact;
struct test_results r[4];
struct test_overflow o[4];
+ struct test_underflow u[4];
};
/* Include the generated test data. */
@@ -202,10 +226,16 @@ struct test {
# define FE_OVERFLOW 0
#endif
+#ifndef FE_UNDERFLOW
+# define FE_UNDERFLOW 0
+#endif
+
#define GEN_ONE_TEST(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \
{ \
feclearexcept (FE_ALL_EXCEPT); \
+ errno = 12345; \
FTYPE f = STRTO (FSUF) (s, NULL); \
+ int new_errno = errno; \
if (f != expected->FSUF \
|| (copysign ## CSUF) (1.0 ## LSUF, f) \
!= (copysign ## CSUF) (1.0 ## LSUF, expected->FSUF)) \
@@ -254,6 +284,48 @@ struct test {
printf ("ignoring this exception error\n"); \
} \
} \
+ if (overflow->FSUF && new_errno != ERANGE) \
+ { \
+ printf (FNPFXS "to" #FSUF \
+ " (" STRM ") left errno == %d," \
+ " not %d (ERANGE)\n", \
+ s, new_errno, ERANGE); \
+ result = 1; \
+ } \
+ if (FE_UNDERFLOW != 0) \
+ { \
+ bool underflow_raised \
+ = fetestexcept (FE_UNDERFLOW) != 0; \
+ if (underflow_raised != underflow->FSUF) \
+ { \
+ printf (FNPFXS "to" #FSUF \
+ " (" STRM ") underflow %d " \
+ "not %d\n", s, underflow_raised, \
+ underflow->FSUF); \
+ if (EXCEPTION_TESTS (FTYPE)) \
+ result = 1; \
+ else \
+ printf ("ignoring this exception error\n"); \
+ } \
+ } \
+ if (underflow->FSUF && new_errno != ERANGE) \
+ { \
+ printf (FNPFXS "to" #FSUF \
+ " (" STRM ") left errno == %d," \
+ " not %d (ERANGE)\n", \
+ s, new_errno, ERANGE); \
+ result = 1; \
+ } \
+ if (!overflow->FSUF \
+ && !underflow->FSUF \
+ && new_errno != 12345) \
+ { \
+ printf (FNPFXS "to" #FSUF \
+ " (" STRM ") set errno == %d," \
+ " should be unchanged\n", \
+ s, new_errno); \
+ result = 1; \
+ } \
} \
}
@@ -261,6 +333,7 @@ static int
test_in_one_mode (const CHAR *s, const struct test_results *expected,
const struct test_exactness *exact,
const struct test_overflow *overflow,
+ const struct test_underflow *underflow,
const char *mode_name, int rnd_mode)
{
int result = 0;
@@ -296,6 +369,7 @@ do_test (void)
{
result |= test_in_one_mode (tests[i].s, &tests[i].r[modes[0].rnd_i],
&tests[i].exact, &tests[i].o[modes[0].rnd_i],
+ &tests[i].u[modes[0].rnd_i],
modes[0].mode_name, modes[0].rnd_mode);
for (const struct fetestmodes *m = &modes[1]; m->mode_name != NULL; m++)
{
@@ -303,7 +377,9 @@ do_test (void)
{
result |= test_in_one_mode (tests[i].s, &tests[i].r[m->rnd_i],
&tests[i].exact,
- &tests[i].o[m->rnd_i], m->mode_name,
+ &tests[i].o[m->rnd_i],
+ &tests[i].u[m->rnd_i],
+ m->mode_name,
m->rnd_mode);
fesetround (save_round_mode);
}
diff --git a/stdlib/tst-strtod-underflow.c b/stdlib/tst-strtod-underflow.c
index a5ced18..8598b95 100644
--- a/stdlib/tst-strtod-underflow.c
+++ b/stdlib/tst-strtod-underflow.c
@@ -17,6 +17,10 @@
License along with the GNU C Library; if not, see
<https://www.gnu.org/licenses/>. */
+/* Defining _LIBC_TEST ensures long double math functions are
+ declared in the headers. */
+#define _LIBC_TEST 1
+#define __STDC_WANT_IEC_60559_TYPES_EXT__
#include <errno.h>
#include <fenv.h>
#include <float.h>
@@ -25,6 +29,60 @@
#include <stdlib.h>
#include <tininess.h>
+#include "tst-strtod.h"
+
+/* Logic for selecting between tests for different formats is as in
+ tst-strtod-skeleton.c, but here it is selecting string inputs with
+ different underflow properties, rather than generated test
+ data. */
+
+#define _CONCAT(a, b) a ## b
+#define CONCAT(a, b) _CONCAT (a, b)
+
+#define MEMBER(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \
+ const char *s_ ## FSUF;
+
+#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
+# define CHOOSE_ld(f,d,...) d
+#elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384 && LDBL_MIN_EXP == -16381
+# define CHOOSE_ld(f,d,ld64i,...) ld64i
+#elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384 && LDBL_MIN_EXP == -16382
+# define CHOOSE_ld(f,d,ld64i,ld64m,...) ld64m
+#elif LDBL_MANT_DIG == 106 && LDBL_MAX_EXP == 1024
+# define CHOOSE_ld(f,d,ld64i,ld64m,ld106,...) ld106
+#elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384
+# define CHOOSE_ld(f,d,ld64i,ld64m,ld106,ld113,...) ld113
+#else
+# error "unknown long double format"
+#endif
+
+#define CHOOSE_f(f,...) f
+#define CHOOSE_f32(f,...) f
+#define CHOOSE_d(f,d,...) d
+#define CHOOSE_f64(f,d,...) d
+#define CHOOSE_f32x(f,d,...) d
+#define CHOOSE_f128(f,d,ld64i,ld64m,ld106,ld113,...) ld113
+
+#if __HAVE_FLOAT64X
+# if FLT64X_MANT_DIG == 113 && FLT64X_MAX_EXP == 16384
+# define CHOOSE_f64x(f,d,ld64i,ld64m,ld106,ld113,...) ld113
+# elif (FLT64X_MANT_DIG == 64 \
+ && FLT64X_MAX_EXP == 16384 \
+ && FLT64X_MIN_EXP == -16381)
+# define CHOOSE_f64x(f,d,ld64i,...) ld64i
+# else
+# error "unknown _Float64x format"
+# endif
+#endif
+
+#define _XNTRY(FSUF, FTYPE, FTOSTR, LSUF, CSUF, ...) \
+ CHOOSE_ ## FSUF (__VA_ARGS__),
+#define XNTRY(...) \
+ GEN_TEST_STRTOD_FOREACH (_XNTRY, __VA_ARGS__)
+
+#define TEST(f, d, ld64i, ld64m, ld106, ld113, u) \
+ { XNTRY(f, d, ld64i, ld64m, ld106, ld113) u }
+
enum underflow_case
{
/* Result is exact or outside the subnormal range. */
@@ -55,38 +113,194 @@ enum underflow_case
struct test
{
- const char *s;
+ GEN_TEST_STRTOD_FOREACH (MEMBER)
enum underflow_case c;
};
static const struct test tests[] =
{
- { "0x1p-1022", UNDERFLOW_NONE },
- { "-0x1p-1022", UNDERFLOW_NONE },
- { "0x0p-10000000000000000000000000", UNDERFLOW_NONE },
- { "-0x0p-10000000000000000000000000", UNDERFLOW_NONE },
- { "0x1p-10000000000000000000000000", UNDERFLOW_ALWAYS },
- { "-0x1p-10000000000000000000000000", UNDERFLOW_ALWAYS },
- { "0x1.000000000000000000001p-1022", UNDERFLOW_NONE },
- { "-0x1.000000000000000000001p-1022", UNDERFLOW_NONE },
- { "0x1p-1075", UNDERFLOW_ALWAYS },
- { "-0x1p-1075", UNDERFLOW_ALWAYS },
- { "0x1p-1023", UNDERFLOW_NONE },
- { "-0x1p-1023", UNDERFLOW_NONE },
- { "0x1p-1074", UNDERFLOW_NONE },
- { "-0x1p-1074", UNDERFLOW_NONE },
- { "0x1.ffffffffffffep-1023", UNDERFLOW_NONE },
- { "-0x1.ffffffffffffep-1023", UNDERFLOW_NONE },
- { "0x1.fffffffffffffp-1023", UNDERFLOW_ALWAYS },
- { "-0x1.fffffffffffffp-1023", UNDERFLOW_ALWAYS },
- { "0x1.fffffffffffff0001p-1023", UNDERFLOW_EXCEPT_UPWARD },
- { "-0x1.fffffffffffff0001p-1023", UNDERFLOW_EXCEPT_DOWNWARD },
- { "0x1.fffffffffffff7fffp-1023", UNDERFLOW_EXCEPT_UPWARD },
- { "-0x1.fffffffffffff7fffp-1023", UNDERFLOW_EXCEPT_DOWNWARD },
- { "0x1.fffffffffffff8p-1023", UNDERFLOW_ONLY_DOWNWARD_ZERO },
- { "-0x1.fffffffffffff8p-1023", UNDERFLOW_ONLY_UPWARD_ZERO },
- { "0x1.fffffffffffffffffp-1023", UNDERFLOW_ONLY_DOWNWARD_ZERO },
- { "-0x1.fffffffffffffffffp-1023", UNDERFLOW_ONLY_UPWARD_ZERO },
+ TEST ("0x1p-126",
+ "0x1p-1022",
+ "0x1p-16382",
+ "0x1p-16383",
+ "0x1p-969",
+ "0x1p-16382",
+ UNDERFLOW_NONE),
+ TEST ("-0x1p-126",
+ "-0x1p-1022",
+ "-0x1p-16382",
+ "-0x1p-16383",
+ "-0x1p-969",
+ "-0x1p-16382",
+ UNDERFLOW_NONE),
+ TEST ("0x0p-10000000000000000000000000",
+ "0x0p-10000000000000000000000000",
+ "0x0p-10000000000000000000000000",
+ "0x0p-10000000000000000000000000",
+ "0x0p-10000000000000000000000000",
+ "0x0p-10000000000000000000000000",
+ UNDERFLOW_NONE),
+ TEST ("-0x0p-10000000000000000000000000",
+ "-0x0p-10000000000000000000000000",
+ "-0x0p-10000000000000000000000000",
+ "-0x0p-10000000000000000000000000",
+ "-0x0p-10000000000000000000000000",
+ "-0x0p-10000000000000000000000000",
+ UNDERFLOW_NONE),
+ TEST ("0x1p-10000000000000000000000000",
+ "0x1p-10000000000000000000000000",
+ "0x1p-10000000000000000000000000",
+ "0x1p-10000000000000000000000000",
+ "0x1p-10000000000000000000000000",
+ "0x1p-10000000000000000000000000",
+ UNDERFLOW_ALWAYS),
+ TEST ("-0x1p-10000000000000000000000000",
+ "-0x1p-10000000000000000000000000",
+ "-0x1p-10000000000000000000000000",
+ "-0x1p-10000000000000000000000000",
+ "-0x1p-10000000000000000000000000",
+ "-0x1p-10000000000000000000000000",
+ UNDERFLOW_ALWAYS),
+ TEST ("0x1.000000000000000000001p-126",
+ "0x1.000000000000000000001p-1022",
+ "0x1.000000000000000000001p-16382",
+ "0x1.000000000000000000001p-16383",
+ "0x1.000000000000000000001p-969",
+ "0x1.00000000000000000000000000000000000000001p-16382",
+ UNDERFLOW_NONE),
+ TEST ("-0x1.000000000000000000001p-126",
+ "-0x1.000000000000000000001p-1022",
+ "-0x1.000000000000000000001p-16382",
+ "-0x1.000000000000000000001p-16383",
+ "-0x1.000000000000000000001p-969",
+ "-0x1.00000000000000000000000000000000000000001p-16382",
+ UNDERFLOW_NONE),
+ TEST ("0x1p-150",
+ "0x1p-1075",
+ "0x1p-16446",
+ "0x1p-16447",
+ "0x1p-1075",
+ "0x1p-16495",
+ UNDERFLOW_ALWAYS),
+ TEST ("-0x1p-150",
+ "-0x1p-1075",
+ "-0x1p-16446",
+ "-0x1p-16447",
+ "-0x1p-1075",
+ "-0x1p-16495",
+ UNDERFLOW_ALWAYS),
+ TEST ("0x1p-127",
+ "0x1p-1023",
+ "0x1p-16383",
+ "0x1p-16384",
+ "0x1p-970",
+ "0x1p-16383",
+ UNDERFLOW_NONE),
+ TEST ("-0x1p-127",
+ "-0x1p-1023",
+ "-0x1p-16383",
+ "-0x1p-16384",
+ "-0x1p-970",
+ "-0x1p-16383",
+ UNDERFLOW_NONE),
+ TEST ("0x1p-149",
+ "0x1p-1074",
+ "0x1p-16445",
+ "0x1p-16446",
+ "0x1p-1074",
+ "0x1p-16494",
+ UNDERFLOW_NONE),
+ TEST ("-0x1p-149",
+ "-0x1p-1074",
+ "-0x1p-16445",
+ "-0x1p-16446",
+ "-0x1p-1074",
+ "-0x1p-16494",
+ UNDERFLOW_NONE),
+ TEST ("0x1.fffffcp-127",
+ "0x1.ffffffffffffep-1023",
+ "0x1.fffffffffffffffcp-16383",
+ "0x1.fffffffffffffffcp-16384",
+ "0x1.ffffffffffffffffffffffffffp-970",
+ "0x1.fffffffffffffffffffffffffffep-16383",
+ UNDERFLOW_NONE),
+ TEST ("-0x1.fffffcp-127",
+ "-0x1.ffffffffffffep-1023",
+ "-0x1.fffffffffffffffcp-16383",
+ "-0x1.fffffffffffffffcp-16384",
+ "-0x1.ffffffffffffffffffffffffffp-970",
+ "-0x1.fffffffffffffffffffffffffffep-16383",
+ UNDERFLOW_NONE),
+ TEST ("0x1.fffffep-127",
+ "0x1.fffffffffffffp-1023",
+ "0x1.fffffffffffffffep-16383",
+ "0x1.fffffffffffffffep-16384",
+ "0x1.ffffffffffffffffffffffffff8p-970",
+ "0x1.ffffffffffffffffffffffffffffp-16383",
+ UNDERFLOW_ALWAYS),
+ TEST ("-0x1.fffffep-127",
+ "-0x1.fffffffffffffp-1023",
+ "-0x1.fffffffffffffffep-16383",
+ "-0x1.fffffffffffffffep-16384",
+ "-0x1.ffffffffffffffffffffffffff8p-970",
+ "-0x1.ffffffffffffffffffffffffffffp-16383",
+ UNDERFLOW_ALWAYS),
+ TEST ("0x1.fffffe0001p-127",
+ "0x1.fffffffffffff0001p-1023",
+ "0x1.fffffffffffffffe0001p-16383",
+ "0x1.fffffffffffffffe0001p-16384",
+ "0x1.ffffffffffffffffffffffffff80001p-970",
+ "0x1.ffffffffffffffffffffffffffff0001p-16383",
+ UNDERFLOW_EXCEPT_UPWARD),
+ TEST ("-0x1.fffffe0001p-127",
+ "-0x1.fffffffffffff0001p-1023",
+ "-0x1.fffffffffffffffe0001p-16383",
+ "-0x1.fffffffffffffffe0001p-16384",
+ "-0x1.ffffffffffffffffffffffffff80001p-970",
+ "-0x1.ffffffffffffffffffffffffffff0001p-16383",
+ UNDERFLOW_EXCEPT_DOWNWARD),
+ TEST ("0x1.fffffeffffp-127",
+ "0x1.fffffffffffff7fffp-1023",
+ "0x1.fffffffffffffffeffffp-16383",
+ "0x1.fffffffffffffffeffffp-16384",
+ "0x1.ffffffffffffffffffffffffffbffffp-970",
+ "0x1.ffffffffffffffffffffffffffff7fffp-16383",
+ UNDERFLOW_EXCEPT_UPWARD),
+ TEST ("-0x1.fffffeffffp-127",
+ "-0x1.fffffffffffff7fffp-1023",
+ "-0x1.fffffffffffffffeffffp-16383",
+ "-0x1.fffffffffffffffeffffp-16384",
+ "-0x1.ffffffffffffffffffffffffffbffffp-970",
+ "-0x1.ffffffffffffffffffffffffffff7fffp-16383",
+ UNDERFLOW_EXCEPT_DOWNWARD),
+ TEST ("0x1.ffffffp-127",
+ "0x1.fffffffffffff8p-1023",
+ "0x1.ffffffffffffffffp-16383",
+ "0x1.ffffffffffffffffp-16384",
+ "0x1.ffffffffffffffffffffffffffcp-970",
+ "0x1.ffffffffffffffffffffffffffff8p-16383",
+ UNDERFLOW_ONLY_DOWNWARD_ZERO),
+ TEST ("-0x1.ffffffp-127",
+ "-0x1.fffffffffffff8p-1023",
+ "-0x1.ffffffffffffffffp-16383",
+ "-0x1.ffffffffffffffffp-16384",
+ "-0x1.ffffffffffffffffffffffffffcp-970",
+ "-0x1.ffffffffffffffffffffffffffff8p-16383",
+ UNDERFLOW_ONLY_UPWARD_ZERO),
+ TEST ("0x1.ffffffffffp-127",
+ "0x1.fffffffffffffffffp-1023",
+ "0x1.ffffffffffffffffffffp-16383",
+ "0x1.ffffffffffffffffffffp-16384",
+ "0x1.ffffffffffffffffffffffffffffffp-970",
+ "0x1.ffffffffffffffffffffffffffffffffp-16383",
+ UNDERFLOW_ONLY_DOWNWARD_ZERO),
+ TEST ("-0x1.ffffffffffp-127",
+ "-0x1.fffffffffffffffffp-1023",
+ "-0x1.ffffffffffffffffffffp-16383",
+ "-0x1.ffffffffffffffffffffp-16384",
+ "-0x1.ffffffffffffffffffffffffffffffp-970",
+ "-0x1.ffffffffffffffffffffffffffffffffp-16383",
+ UNDERFLOW_ONLY_UPWARD_ZERO),
};
/* Return whether to expect underflow from a particular testcase, in a
@@ -133,39 +347,62 @@ static bool support_underflow_exception = false;
volatile double d = DBL_MIN;
volatile double dd;
-static int
-test_in_one_mode (const char *s, enum underflow_case c, int rm,
- const char *mode_name)
+static bool
+test_got_fe_underflow (void)
{
- int result = 0;
- feclearexcept (FE_ALL_EXCEPT);
- errno = 0;
- double d = strtod (s, NULL);
- int got_errno = errno;
#ifdef FE_UNDERFLOW
- bool got_fe_underflow = fetestexcept (FE_UNDERFLOW) != 0;
+ return fetestexcept (FE_UNDERFLOW) != 0;
#else
- bool got_fe_underflow = false;
+ return false;
#endif
- printf ("strtod (%s) (%s) returned %a, errno = %d, %sunderflow exception\n",
- s, mode_name, d, got_errno, got_fe_underflow ? "" : "no ");
- bool this_expect_underflow = expect_underflow (c, rm);
- if (got_errno != 0 && got_errno != ERANGE)
- {
- puts ("FAIL: errno neither 0 nor ERANGE");
- result = 1;
- }
- else if (this_expect_underflow != (errno == ERANGE))
- {
- puts ("FAIL: underflow from errno differs from expectations");
- result = 1;
- }
- if (support_underflow_exception && got_fe_underflow != this_expect_underflow)
- {
- puts ("FAIL: underflow from exceptions differs from expectations");
- result = 1;
- }
- return result;
+}
+
+#define TEST_STRTOD(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \
+static int \
+test_strto ## FSUF (int i, int rm, const char *mode_name) \
+{ \
+ const char *s = tests[i].s_ ## FSUF; \
+ enum underflow_case c = tests[i].c; \
+ int result = 0; \
+ feclearexcept (FE_ALL_EXCEPT); \
+ errno = 0; \
+ FTYPE d = strto ## FSUF (s, NULL); \
+ int got_errno = errno; \
+ bool got_fe_underflow = test_got_fe_underflow (); \
+ char buf[FSTRLENMAX]; \
+ FTOSTR (buf, sizeof (buf), "%a", d); \
+ printf ("strto" #FSUF \
+ " (%s) (%s) returned %s, errno = %d, " \
+ "%sunderflow exception\n", \
+ s, mode_name, buf, got_errno, \
+ got_fe_underflow ? "" : "no "); \
+ bool this_expect_underflow = expect_underflow (c, rm); \
+ if (got_errno != 0 && got_errno != ERANGE) \
+ { \
+ puts ("FAIL: errno neither 0 nor ERANGE"); \
+ result = 1; \
+ } \
+ else if (this_expect_underflow != (errno == ERANGE)) \
+ { \
+ puts ("FAIL: underflow from errno differs from expectations"); \
+ result = 1; \
+ } \
+ if (support_underflow_exception \
+ && got_fe_underflow != this_expect_underflow) \
+ { \
+ puts ("FAIL: underflow from exceptions " \
+ "differs from expectations"); \
+ result = 1; \
+ } \
+ return result; \
+}
+
+GEN_TEST_STRTOD_FOREACH (TEST_STRTOD)
+
+static int
+test_in_one_mode (size_t i, int rm, const char *mode_name)
+{
+ return STRTOD_TEST_FOREACH (test_strto, i, rm, mode_name);
}
static int
@@ -191,12 +428,12 @@ do_test (void)
#endif
for (size_t i = 0; i < sizeof (tests) / sizeof (tests[0]); i++)
{
- result |= test_in_one_mode (tests[i].s, tests[i].c, fe_tonearest,
+ result |= test_in_one_mode (i, fe_tonearest,
"default rounding mode");
#ifdef FE_DOWNWARD
if (!fesetround (FE_DOWNWARD))
{
- result |= test_in_one_mode (tests[i].s, tests[i].c, FE_DOWNWARD,
+ result |= test_in_one_mode (i, FE_DOWNWARD,
"FE_DOWNWARD");
fesetround (save_round_mode);
}
@@ -204,7 +441,7 @@ do_test (void)
#ifdef FE_TOWARDZERO
if (!fesetround (FE_TOWARDZERO))
{
- result |= test_in_one_mode (tests[i].s, tests[i].c, FE_TOWARDZERO,
+ result |= test_in_one_mode (i, FE_TOWARDZERO,
"FE_TOWARDZERO");
fesetround (save_round_mode);
}
@@ -212,7 +449,7 @@ do_test (void)
#ifdef FE_UPWARD
if (!fesetround (FE_UPWARD))
{
- result |= test_in_one_mode (tests[i].s, tests[i].c, FE_UPWARD,
+ result |= test_in_one_mode (i, FE_UPWARD,
"FE_UPWARD");
fesetround (save_round_mode);
}
diff --git a/stdlib/tst-strtod1i.c b/stdlib/tst-strtod1i.c
index 9d6bb76..44ae026 100644
--- a/stdlib/tst-strtod1i.c
+++ b/stdlib/tst-strtod1i.c
@@ -25,60 +25,91 @@
#include <string.h>
#include <math.h>
-/* Perform a few tests in a locale with thousands separators. */
-static int
-do_test (void)
-{
- static const struct
- {
- const char *loc;
- const char *str;
- double exp;
- ptrdiff_t nread;
- } tests[] =
- {
- { "de_DE.UTF-8", "1,5", 1.5, 3 },
- { "de_DE.UTF-8", "1.5", 1.0, 1 },
- { "de_DE.UTF-8", "1.500", 1500.0, 5 },
- { "de_DE.UTF-8", "36.893.488.147.419.103.232", 0x1.0p65, 26 }
- };
-#define ntests (sizeof (tests) / sizeof (tests[0]))
- size_t n;
- int result = 0;
-
- puts ("\nLocale tests");
+#include "tst-strtod.h"
- for (n = 0; n < ntests; ++n)
- {
- double d;
- char *endp;
+/* This tests internal interfaces, which are only defined for types
+ with distinct ABIs, so disable testing for types without distinct
+ ABIs. */
+#undef IF_FLOAT32
+#define IF_FLOAT32(x)
+#undef IF_FLOAT64
+#define IF_FLOAT64(x)
+#undef IF_FLOAT32X
+#define IF_FLOAT32X(x)
+#undef IF_FLOAT64X
+#define IF_FLOAT64X(x)
+#if !__HAVE_DISTINCT_FLOAT128
+# undef IF_FLOAT128
+# define IF_FLOAT128(x)
+#endif
- if (setlocale (LC_ALL, tests[n].loc) == NULL)
- {
- printf ("cannot set locale %s\n", tests[n].loc);
- result = 1;
- continue;
- }
+#define ntests (sizeof (tests) / sizeof (tests[0]))
- d = __strtod_internal (tests[n].str, &endp, 1);
- if (d != tests[n].exp)
- {
- printf ("strtod(\"%s\") returns %g and not %g\n",
- tests[n].str, d, tests[n].exp);
- result = 1;
- }
- else if (endp - tests[n].str != tests[n].nread)
- {
- printf ("strtod(\"%s\") read %td bytes and not %td\n",
- tests[n].str, endp - tests[n].str, tests[n].nread);
- result = 1;
- }
- }
+/* Perform a few tests in a locale with thousands separators. */
+#define TEST_STRTOD(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \
+static int \
+test_strto ## FSUF (void) \
+{ \
+ static const struct \
+ { \
+ const char *loc; \
+ const char *str; \
+ FTYPE exp; \
+ ptrdiff_t nread; \
+ } tests[] = \
+ { \
+ { "de_DE.UTF-8", "1,5", 1.5 ## LSUF, 3 }, \
+ { "de_DE.UTF-8", "1.5", 1.0 ## LSUF, 1 }, \
+ { "de_DE.UTF-8", "1.500", 1500.0 ## LSUF, 5 }, \
+ { "de_DE.UTF-8", "36.893.488.147.419.103.232", 0x1.0p65 ## LSUF, 26 } \
+ }; \
+ size_t n; \
+ int result = 0; \
+ \
+ puts ("\nLocale tests"); \
+ \
+ for (n = 0; n < ntests; ++n) \
+ { \
+ FTYPE d; \
+ char *endp; \
+ \
+ if (setlocale (LC_ALL, tests[n].loc) == NULL) \
+ { \
+ printf ("cannot set locale %s\n", tests[n].loc); \
+ result = 1; \
+ continue; \
+ } \
+ \
+ d = __strto ## FSUF ## _internal (tests[n].str, &endp, 1); \
+ if (d != tests[n].exp) \
+ { \
+ char buf1[FSTRLENMAX], buf2[FSTRLENMAX]; \
+ FTOSTR (buf1, sizeof (buf1), "%g", d); \
+ FTOSTR (buf2, sizeof (buf2), "%g", tests[n].exp); \
+ printf ("strto" # FSUF "(\"%s\") returns %s and not %s\n", \
+ tests[n].str, buf1, buf2); \
+ result = 1; \
+ } \
+ else if (endp - tests[n].str != tests[n].nread) \
+ { \
+ printf ("strto" # FSUF "(\"%s\") read %td bytes and not %td\n", \
+ tests[n].str, endp - tests[n].str, tests[n].nread); \
+ result = 1; \
+ } \
+ } \
+ \
+ if (result == 0) \
+ puts ("all OK"); \
+ \
+ return result ? EXIT_FAILURE : EXIT_SUCCESS; \
+}
- if (result == 0)
- puts ("all OK");
+GEN_TEST_STRTOD_FOREACH (TEST_STRTOD)
- return result ? EXIT_FAILURE : EXIT_SUCCESS;
+static int
+do_test (void)
+{
+ return STRTOD_TEST_FOREACH (test_strto);
}
#include <support/test-driver.c>
diff --git a/stdlib/tst-strtod2.c b/stdlib/tst-strtod2.c
index a7df82e..d00bc13 100644
--- a/stdlib/tst-strtod2.c
+++ b/stdlib/tst-strtod2.c
@@ -1,43 +1,112 @@
+#include <math.h>
#include <stdio.h>
#include <stdlib.h>
-struct test
-{
- const char *str;
- double result;
- size_t offset;
-} tests[] =
-{
- { "0xy", 0.0, 1 },
- { "0x.y", 0.0, 1 },
- { "0x0.y", 0.0, 4 },
- { "0x.0y", 0.0, 4 },
- { ".y", 0.0, 0 },
- { "0.y", 0.0, 2 },
- { ".0y", 0.0, 2 }
-};
+#include "tst-strtod.h"
+
+#define TEST_STRTOD(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \
+struct test_strto ## FSUF \
+{ \
+ const char *str; \
+ FTYPE result; \
+ size_t offset; \
+} tests_strto ## FSUF[] = \
+{ \
+ { "0xy", 0.0 ## LSUF, 1 }, \
+ { "0x.y", 0.0 ## LSUF, 1 }, \
+ { "0x0.y", 0.0 ## LSUF, 4 }, \
+ { "0x.0y", 0.0 ## LSUF, 4 }, \
+ { ".y", 0.0 ## LSUF, 0 }, \
+ { "0.y", 0.0 ## LSUF, 2 }, \
+ { ".0y", 0.0 ## LSUF, 2 }, \
+ { "1.0e", 1.0 ## LSUF, 3 }, \
+ { "1.0e+", 1.0 ## LSUF, 3 }, \
+ { "1.0e-", 1.0 ## LSUF, 3 }, \
+ { "1.0ex", 1.0 ## LSUF, 3 }, \
+ { "1.0e+x", 1.0 ## LSUF, 3 }, \
+ { "1.0e-x", 1.0 ## LSUF, 3 }, \
+ { "0x1p", 1.0 ## LSUF, 3 }, \
+ { "0x1p+", 1.0 ## LSUF, 3 }, \
+ { "0x1p-", 1.0 ## LSUF, 3 }, \
+ { "0x1px", 1.0 ## LSUF, 3 }, \
+ { "0x1p+x", 1.0 ## LSUF, 3 }, \
+ { "0x1p-x", 1.0 ## LSUF, 3 }, \
+ { "", 0.0 ## LSUF, 0 }, \
+ { ".", 0.0 ## LSUF, 0 }, \
+ { "-", 0.0 ## LSUF, 0 }, \
+ { "-.", 0.0 ## LSUF, 0 }, \
+ { ".e", 0.0 ## LSUF, 0 }, \
+ { "-.e", 0.0 ## LSUF, 0 }, \
+ { " \t", 0.0 ## LSUF, 0 }, \
+ { " \t.", 0.0 ## LSUF, 0 }, \
+ { " \t-", 0.0 ## LSUF, 0 }, \
+ { " \t-.", 0.0 ## LSUF, 0 }, \
+ { " \t.e", 0.0 ## LSUF, 0 }, \
+ { " \t-.e", 0.0 ## LSUF, 0 }, \
+ { " \t\f\r\n\v1", 1.0 ## LSUF, 7 }, \
+ { " \t\f\r\n\v-1.5e2", -150.0 ## LSUF, 12 }, \
+ { "INFx", INFINITY, 3 }, \
+ { "infx", INFINITY, 3 }, \
+ { "INFINITx", INFINITY, 3 }, \
+ { "infinitx", INFINITY, 3 }, \
+ { "INFINITYY", INFINITY, 8 }, \
+ { "infinityy", INFINITY, 8 }, \
+ { "NANx", NAN, 3 }, \
+ { "nanx", NAN, 3 }, \
+ { "NAN(", NAN, 3 }, \
+ { "nan(", NAN, 3 }, \
+ { "NAN(x", NAN, 3 }, \
+ { "nan(x", NAN, 3 }, \
+ { "NAN(x)y", NAN, 6 }, \
+ { "nan(x)y", NAN, 6 }, \
+ { "NAN(*)y", NAN, 3 }, \
+ { "nan(*)y", NAN, 3 } \
+}; \
+ \
+static int \
+compare_strto ## FSUF (FTYPE x, FTYPE y) \
+{ \
+ if (isnan (x) && isnan (y)) \
+ return 1; \
+ return x == y; \
+} \
+ \
+static int \
+test_strto ## FSUF (void) \
+{ \
+ int status = 0; \
+ for (size_t i = 0; \
+ i < sizeof (tests_strto ## FSUF) / sizeof (tests_strto ## FSUF[0]); \
+ ++i) \
+ { \
+ char *ep; \
+ FTYPE r = strto ## FSUF (tests_strto ## FSUF[i].str, &ep); \
+ if (!compare_strto ## FSUF (r, tests_strto ## FSUF[i].result)) \
+ { \
+ char buf1[FSTRLENMAX], buf2[FSTRLENMAX]; \
+ FTOSTR (buf1, sizeof (buf1), "%g", r); \
+ FTOSTR (buf2, sizeof (buf2), "%g", tests_strto ## FSUF[i].result); \
+ printf ("test %zu r = %s, expect %s\n", i, buf1, buf2); \
+ status = 1; \
+ } \
+ if (ep != tests_strto ## FSUF[i].str + tests_strto ## FSUF[i].offset) \
+ { \
+ printf ("test %zu strto" #FSUF \
+ " parsed %tu characters, expected %zu\n", \
+ i, ep - tests_strto ## FSUF[i].str, \
+ tests_strto ## FSUF[i].offset); \
+ status = 1; \
+ } \
+ } \
+ return status; \
+}
+
+GEN_TEST_STRTOD_FOREACH (TEST_STRTOD)
static int
do_test (void)
{
- int status = 0;
- for (size_t i = 0; i < sizeof (tests) / sizeof (tests[0]); ++i)
- {
- char *ep;
- double r = strtod (tests[i].str, &ep);
- if (r != tests[i].result)
- {
- printf ("test %zu r = %g, expect %g\n", i, r, tests[i].result);
- status = 1;
- }
- if (ep != tests[i].str + tests[i].offset)
- {
- printf ("test %zu strtod parsed %tu characters, expected %zu\n",
- i, ep - tests[i].str, tests[i].offset);
- status = 1;
- }
- }
- return status;
+ return STRTOD_TEST_FOREACH (test_strto);
}
#define TEST_FUNCTION do_test ()
diff --git a/stdlib/tst-strtod3.c b/stdlib/tst-strtod3.c
index 23abec1..0d662d8 100644
--- a/stdlib/tst-strtod3.c
+++ b/stdlib/tst-strtod3.c
@@ -3,19 +3,73 @@
#include <stdlib.h>
#include <string.h>
-static const struct
-{
- const char *in;
- const char *out;
- double expected;
-} tests[] =
- {
- { "000,,,e1", ",,,e1", 0.0 },
- { "000e1", "", 0.0 },
- { "000,1e1", ",1e1", 0.0 }
- };
-#define NTESTS (sizeof (tests) / sizeof (tests[0]))
+#include "tst-strtod.h"
+
+/* This tests internal interfaces, which are only defined for types
+ with distinct ABIs, so disable testing for types without distinct
+ ABIs. */
+#undef IF_FLOAT32
+#define IF_FLOAT32(x)
+#undef IF_FLOAT64
+#define IF_FLOAT64(x)
+#undef IF_FLOAT32X
+#define IF_FLOAT32X(x)
+#undef IF_FLOAT64X
+#define IF_FLOAT64X(x)
+#if !__HAVE_DISTINCT_FLOAT128
+# undef IF_FLOAT128
+# define IF_FLOAT128(x)
+#endif
+#define TEST_STRTOD(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \
+static const struct \
+{ \
+ const char *in; \
+ const char *out; \
+ FTYPE expected; \
+} tests_strto ## FSUF[] = \
+ { \
+ { "000,,,e1", ",,,e1", 0.0 ## LSUF }, \
+ { "000e1", "", 0.0 ## LSUF }, \
+ { "000,1e1", ",1e1", 0.0 ## LSUF } \
+ }; \
+ \
+static int \
+test_strto ## FSUF (void) \
+{ \
+ int status = 0; \
+ \
+ for (int i = 0; \
+ i < sizeof (tests_strto ## FSUF) / sizeof (tests_strto ## FSUF[0]); \
+ ++i) \
+ { \
+ char *ep; \
+ FTYPE r = __strto ## FSUF ## _internal (tests_strto ## FSUF[i].in, \
+ &ep, 1); \
+ \
+ if (strcmp (ep, tests_strto ## FSUF[i].out) != 0) \
+ { \
+ printf ("%d: got rest string \"%s\", expected \"%s\"\n", \
+ i, ep, tests_strto ## FSUF[i].out); \
+ status = 1; \
+ } \
+ \
+ if (r != tests_strto ## FSUF[i].expected) \
+ { \
+ char buf1[FSTRLENMAX], buf2[FSTRLENMAX]; \
+ FTOSTR (buf1, sizeof (buf1), "%g", r); \
+ FTOSTR (buf2, sizeof (buf2), "%g", \
+ tests_strto ## FSUF[i].expected); \
+ printf ("%d: got wrong results %s, expected %s\n", \
+ i, buf1, buf2); \
+ status = 1; \
+ } \
+ } \
+ \
+ return status; \
+}
+
+GEN_TEST_STRTOD_FOREACH (TEST_STRTOD)
static int
do_test (void)
@@ -26,29 +80,7 @@ do_test (void)
return 1;
}
- int status = 0;
-
- for (int i = 0; i < NTESTS; ++i)
- {
- char *ep;
- double r = __strtod_internal (tests[i].in, &ep, 1);
-
- if (strcmp (ep, tests[i].out) != 0)
- {
- printf ("%d: got rest string \"%s\", expected \"%s\"\n",
- i, ep, tests[i].out);
- status = 1;
- }
-
- if (r != tests[i].expected)
- {
- printf ("%d: got wrong results %g, expected %g\n",
- i, r, tests[i].expected);
- status = 1;
- }
- }
-
- return status;
+ return STRTOD_TEST_FOREACH (test_strto);
}
#define TEST_FUNCTION do_test ()
diff --git a/stdlib/tst-strtod4.c b/stdlib/tst-strtod4.c
index 6cc4e84..dfd3f05 100644
--- a/stdlib/tst-strtod4.c
+++ b/stdlib/tst-strtod4.c
@@ -3,22 +3,76 @@
#include <stdlib.h>
#include <string.h>
+#include "tst-strtod.h"
+
+/* This tests internal interfaces, which are only defined for types
+ with distinct ABIs, so disable testing for types without distinct
+ ABIs. */
+#undef IF_FLOAT32
+#define IF_FLOAT32(x)
+#undef IF_FLOAT64
+#define IF_FLOAT64(x)
+#undef IF_FLOAT32X
+#define IF_FLOAT32X(x)
+#undef IF_FLOAT64X
+#define IF_FLOAT64X(x)
+#if !__HAVE_DISTINCT_FLOAT128
+# undef IF_FLOAT128
+# define IF_FLOAT128(x)
+#endif
+
#define NNBSP "\xe2\x80\xaf"
-static const struct
-{
- const char *in;
- const char *out;
- double expected;
-} tests[] =
- {
- { "000"NNBSP"000"NNBSP"000", "", 0.0 },
- { "1"NNBSP"000"NNBSP"000,5x", "x", 1000000.5 },
- /* Bug 30964 */
- { "10"NNBSP NNBSP"200", NNBSP NNBSP"200", 10.0 }
- };
-#define NTESTS (sizeof (tests) / sizeof (tests[0]))
+#define TEST_STRTOD(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \
+static const struct \
+{ \
+ const char *in; \
+ const char *out; \
+ FTYPE expected; \
+} tests_strto ## FSUF[] = \
+ { \
+ { "000"NNBSP"000"NNBSP"000", "", 0.0 ## LSUF }, \
+ { "1"NNBSP"000"NNBSP"000,5x", "x", 1000000.5 ## LSUF }, \
+ /* Bug 30964 */ \
+ { "10"NNBSP NNBSP"200", NNBSP NNBSP"200", 10.0 ## LSUF } \
+ }; \
+ \
+static int \
+test_strto ## FSUF (void) \
+{ \
+ int status = 0; \
+ \
+ for (int i = 0; \
+ i < sizeof (tests_strto ## FSUF) / sizeof (tests_strto ## FSUF[0]); \
+ ++i) \
+ { \
+ char *ep; \
+ FTYPE r = __strto ## FSUF ## _internal (tests_strto ## FSUF[i].in, \
+ &ep, 1); \
+ \
+ if (strcmp (ep, tests_strto ## FSUF[i].out) != 0) \
+ { \
+ printf ("%d: got rest string \"%s\", expected \"%s\"\n", \
+ i, ep, tests_strto ## FSUF[i].out); \
+ status = 1; \
+ } \
+ \
+ if (r != tests_strto ## FSUF[i].expected) \
+ { \
+ char buf1[FSTRLENMAX], buf2[FSTRLENMAX]; \
+ FTOSTR (buf1, sizeof (buf1), "%g", r); \
+ FTOSTR (buf2, sizeof (buf2), "%g", \
+ tests_strto ## FSUF[i].expected); \
+ printf ("%d: got wrong results %s, expected %s\n", \
+ i, buf1, buf2); \
+ status = 1; \
+ } \
+ } \
+ \
+ return status; \
+}
+GEN_TEST_STRTOD_FOREACH (TEST_STRTOD)
static int
do_test (void)
@@ -29,29 +83,7 @@ do_test (void)
return 1;
}
- int status = 0;
-
- for (int i = 0; i < NTESTS; ++i)
- {
- char *ep;
- double r = __strtod_internal (tests[i].in, &ep, 1);
-
- if (strcmp (ep, tests[i].out) != 0)
- {
- printf ("%d: got rest string \"%s\", expected \"%s\"\n",
- i, ep, tests[i].out);
- status = 1;
- }
-
- if (r != tests[i].expected)
- {
- printf ("%d: got wrong results %g, expected %g\n",
- i, r, tests[i].expected);
- status = 1;
- }
- }
-
- return status;
+ return STRTOD_TEST_FOREACH (test_strto);
}
#define TEST_FUNCTION do_test ()
diff --git a/stdlib/tst-strtod5.c b/stdlib/tst-strtod5.c
index 29153ec..7eb9b3a 100644
--- a/stdlib/tst-strtod5.c
+++ b/stdlib/tst-strtod5.c
@@ -22,35 +22,75 @@
#include <string.h>
#include <math.h>
+#include "tst-strtod.h"
+
#define NBSP "\xc2\xa0"
-static const struct
-{
- const char *in;
- double expected;
-} tests[] =
- {
- { "0", 0.0 },
- { "000", 0.0 },
- { "-0", -0.0 },
- { "-000", -0.0 },
- { "0,", 0.0 },
- { "-0,", -0.0 },
- { "0,0", 0.0 },
- { "-0,0", -0.0 },
- { "0e-10", 0.0 },
- { "-0e-10", -0.0 },
- { "0,e-10", 0.0 },
- { "-0,e-10", -0.0 },
- { "0,0e-10", 0.0 },
- { "-0,0e-10", -0.0 },
- { "0e-1000000", 0.0 },
- { "-0e-1000000", -0.0 },
- { "0,0e-1000000", 0.0 },
- { "-0,0e-1000000", -0.0 },
- };
-#define NTESTS (sizeof (tests) / sizeof (tests[0]))
+#define TEST_STRTOD(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \
+static const struct \
+{ \
+ const char *in; \
+ FTYPE expected; \
+} tests_strto ## FSUF[] = \
+ { \
+ { "0", 0.0 ## LSUF }, \
+ { "000", 0.0 ## LSUF }, \
+ { "-0", -0.0 ## LSUF }, \
+ { "-000", -0.0 ## LSUF }, \
+ { "0,", 0.0 ## LSUF }, \
+ { "-0,", -0.0 ## LSUF }, \
+ { "0,0", 0.0 ## LSUF }, \
+ { "-0,0", -0.0 ## LSUF }, \
+ { "0e-10", 0.0 ## LSUF }, \
+ { "-0e-10", -0.0 ## LSUF }, \
+ { "0,e-10", 0.0 ## LSUF }, \
+ { "-0,e-10", -0.0 ## LSUF }, \
+ { "0,0e-10", 0.0 ## LSUF }, \
+ { "-0,0e-10", -0.0 ## LSUF }, \
+ { "0e-1000000", 0.0 ## LSUF }, \
+ { "-0e-1000000", -0.0 ## LSUF }, \
+ { "0,0e-1000000", 0.0 ## LSUF }, \
+ { "-0,0e-1000000", -0.0 ## LSUF }, \
+ }; \
+ \
+ \
+static int \
+test_strto ## FSUF (void) \
+{ \
+ int status = 0; \
+ \
+ for (int i = 0; \
+ i < sizeof (tests_strto ## FSUF) / sizeof (tests_strto ## FSUF[0]); \
+ ++i) \
+ { \
+ char *ep; \
+ FTYPE r = strto ## FSUF (tests_strto ## FSUF[i].in, &ep); \
+ \
+ if (*ep != '\0') \
+ { \
+ printf ("%d: got rest string \"%s\", expected \"\"\n", i, ep); \
+ status = 1; \
+ } \
+ \
+ if (r != tests_strto ## FSUF[i].expected \
+ || (copysign ## CSUF (10.0 ## LSUF, r) \
+ != copysign ## CSUF (10.0 ## LSUF, \
+ tests_strto ## FSUF[i].expected))) \
+ { \
+ char buf1[FSTRLENMAX], buf2[FSTRLENMAX]; \
+ FTOSTR (buf1, sizeof (buf1), "%g", r); \
+ FTOSTR (buf2, sizeof (buf2), "%g", \
+ tests_strto ## FSUF[i].expected); \
+ printf ("%d: got wrong results %s, expected %s\n", \
+ i, buf1, buf2); \
+ status = 1; \
+ } \
+ } \
+ \
+ return status; \
+}
+GEN_TEST_STRTOD_FOREACH (TEST_STRTOD)
static int
do_test (void)
@@ -61,29 +101,7 @@ do_test (void)
return 1;
}
- int status = 0;
-
- for (int i = 0; i < NTESTS; ++i)
- {
- char *ep;
- double r = strtod (tests[i].in, &ep);
-
- if (*ep != '\0')
- {
- printf ("%d: got rest string \"%s\", expected \"\"\n", i, ep);
- status = 1;
- }
-
- if (r != tests[i].expected
- || copysign (10.0, r) != copysign (10.0, tests[i].expected))
- {
- printf ("%d: got wrong results %g, expected %g\n",
- i, r, tests[i].expected);
- status = 1;
- }
- }
-
- return status;
+ return STRTOD_TEST_FOREACH (test_strto);
}
#include <support/test-driver.c>
diff --git a/stdlib/tst-strtod5i.c b/stdlib/tst-strtod5i.c
index ee54e34..136aede 100644
--- a/stdlib/tst-strtod5i.c
+++ b/stdlib/tst-strtod5i.c
@@ -16,52 +16,112 @@
License along with the GNU C Library; if not, see
<https://www.gnu.org/licenses/>. */
+/* Defining _LIBC_TEST ensures long double math functions are
+ declared in the headers. */
+#define _LIBC_TEST 1
#include <locale.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
+#include "tst-strtod.h"
+
+/* This tests internal interfaces, which are only defined for types
+ with distinct ABIs, so disable testing for types without distinct
+ ABIs. */
+#undef IF_FLOAT32
+#define IF_FLOAT32(x)
+#undef IF_FLOAT64
+#define IF_FLOAT64(x)
+#undef IF_FLOAT32X
+#define IF_FLOAT32X(x)
+#undef IF_FLOAT64X
+#define IF_FLOAT64X(x)
+#if !__HAVE_DISTINCT_FLOAT128
+# undef IF_FLOAT128
+# define IF_FLOAT128(x)
+#endif
+
#define NNBSP "\xe2\x80\xaf"
-static const struct
-{
- const char *in;
- int group;
- double expected;
-} tests[] =
- {
- { "0", 0, 0.0 },
- { "000", 0, 0.0 },
- { "-0", 0, -0.0 },
- { "-000", 0, -0.0 },
- { "0,", 0, 0.0 },
- { "-0,", 0, -0.0 },
- { "0,0", 0, 0.0 },
- { "-0,0", 0, -0.0 },
- { "0e-10", 0, 0.0 },
- { "-0e-10", 0, -0.0 },
- { "0,e-10", 0, 0.0 },
- { "-0,e-10", 0, -0.0 },
- { "0,0e-10", 0, 0.0 },
- { "-0,0e-10", 0, -0.0 },
- { "0e-1000000", 0, 0.0 },
- { "-0e-1000000", 0, -0.0 },
- { "0,0e-1000000", 0, 0.0 },
- { "-0,0e-1000000", 0, -0.0 },
- { "0", 1, 0.0 },
- { "000", 1, 0.0 },
- { "-0", 1, -0.0 },
- { "-000", 1, -0.0 },
- { "0e-10", 1, 0.0 },
- { "-0e-10", 1, -0.0 },
- { "0e-1000000", 1, 0.0 },
- { "-0e-1000000", 1, -0.0 },
- { "000"NNBSP"000"NNBSP"000", 1, 0.0 },
- { "-000"NNBSP"000"NNBSP"000", 1, -0.0 }
- };
-#define NTESTS (sizeof (tests) / sizeof (tests[0]))
+#define TEST_STRTOD(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \
+static const struct \
+{ \
+ const char *in; \
+ int group; \
+ FTYPE expected; \
+} tests_strto ## FSUF[] = \
+ { \
+ { "0", 0, 0.0 ## LSUF }, \
+ { "000", 0, 0.0 ## LSUF }, \
+ { "-0", 0, -0.0 ## LSUF }, \
+ { "-000", 0, -0.0 ## LSUF }, \
+ { "0,", 0, 0.0 ## LSUF }, \
+ { "-0,", 0, -0.0 ## LSUF }, \
+ { "0,0", 0, 0.0 ## LSUF }, \
+ { "-0,0", 0, -0.0 ## LSUF }, \
+ { "0e-10", 0, 0.0 ## LSUF }, \
+ { "-0e-10", 0, -0.0 ## LSUF }, \
+ { "0,e-10", 0, 0.0 ## LSUF }, \
+ { "-0,e-10", 0, -0.0 ## LSUF }, \
+ { "0,0e-10", 0, 0.0 ## LSUF }, \
+ { "-0,0e-10", 0, -0.0 ## LSUF }, \
+ { "0e-1000000", 0, 0.0 ## LSUF }, \
+ { "-0e-1000000", 0, -0.0 ## LSUF }, \
+ { "0,0e-1000000", 0, 0.0 ## LSUF }, \
+ { "-0,0e-1000000", 0, -0.0 ## LSUF }, \
+ { "0", 1, 0.0 ## LSUF }, \
+ { "000", 1, 0.0 ## LSUF }, \
+ { "-0", 1, -0.0 ## LSUF }, \
+ { "-000", 1, -0.0 ## LSUF }, \
+ { "0e-10", 1, 0.0 ## LSUF }, \
+ { "-0e-10", 1, -0.0 ## LSUF }, \
+ { "0e-1000000", 1, 0.0 ## LSUF }, \
+ { "-0e-1000000", 1, -0.0 ## LSUF }, \
+ { "000"NNBSP"000"NNBSP"000", 1, 0.0 ## LSUF }, \
+ { "-000"NNBSP"000"NNBSP"000", 1, -0.0 ## LSUF } \
+ }; \
+ \
+static int \
+test_strto ## FSUF (void) \
+{ \
+ int status = 0; \
+ \
+ for (int i = 0; \
+ i < sizeof (tests_strto ## FSUF) / sizeof (tests_strto ## FSUF[0]); \
+ ++i) \
+ { \
+ char *ep; \
+ FTYPE r = __strto ## FSUF ## _internal (tests_strto ## FSUF[i].in, \
+ &ep, \
+ tests_strto ## FSUF[i].group); \
+ \
+ if (*ep != '\0') \
+ { \
+ printf ("%d: got rest string \"%s\", expected \"\"\n", i, ep); \
+ status = 1; \
+ } \
+ \
+ if (r != tests_strto ## FSUF[i].expected \
+ || (copysign ## CSUF (10.0 ## LSUF, r) \
+ != copysign ## CSUF (10.0 ## LSUF, \
+ tests_strto ## FSUF[i].expected))) \
+ { \
+ char buf1[FSTRLENMAX], buf2[FSTRLENMAX]; \
+ FTOSTR (buf1, sizeof (buf1), "%g", r); \
+ FTOSTR (buf2, sizeof (buf2), "%g", \
+ tests_strto ## FSUF[i].expected); \
+ printf ("%d: got wrong results %s, expected %s\n", \
+ i, buf1, buf2); \
+ status = 1; \
+ } \
+ } \
+ \
+ return status; \
+}
+GEN_TEST_STRTOD_FOREACH (TEST_STRTOD)
static int
do_test (void)
@@ -72,29 +132,7 @@ do_test (void)
return 1;
}
- int status = 0;
-
- for (int i = 0; i < NTESTS; ++i)
- {
- char *ep;
- double r = __strtod_internal (tests[i].in, &ep, tests[i].group);
-
- if (*ep != '\0')
- {
- printf ("%d: got rest string \"%s\", expected \"\"\n", i, ep);
- status = 1;
- }
-
- if (r != tests[i].expected
- || copysign (10.0, r) != copysign (10.0, tests[i].expected))
- {
- printf ("%d: got wrong results %g, expected %g\n",
- i, r, tests[i].expected);
- status = 1;
- }
- }
-
- return status;
+ return STRTOD_TEST_FOREACH (test_strto);
}
#include <support/test-driver.c>
diff --git a/stdlib/tst-system.c b/stdlib/tst-system.c
index 47c742f..b5b630a 100644
--- a/stdlib/tst-system.c
+++ b/stdlib/tst-system.c
@@ -169,7 +169,7 @@ do_test (void)
{
struct stat64 st;
- xstat (_PATH_BSHELL, &st);
+ xstat64 (_PATH_BSHELL, &st);
mode_t mode = st.st_mode;
xchmod (_PATH_BSHELL, mode & ~(S_IXUSR | S_IXGRP | S_IXOTH));
diff --git a/string/strerror_l.c b/string/strerror_l.c
index 15cce26..70456e5 100644
--- a/string/strerror_l.c
+++ b/string/strerror_l.c
@@ -20,7 +20,7 @@
#include <stdio.h>
#include <string.h>
#include <tls-internal.h>
-
+#include <libc-internal.h>
static const char *
translate (const char *str, locale_t loc)
@@ -31,6 +31,12 @@ translate (const char *str, locale_t loc)
return res;
}
+static char *
+unknown_error (locale_t loc)
+{
+ return (char *) translate ("Unknown error", loc);
+}
+
/* Return a string describing the errno code in ERRNUM. */
char *
@@ -40,18 +46,25 @@ __strerror_l (int errnum, locale_t loc)
char *err = (char *) __get_errlist (errnum);
if (__glibc_unlikely (err == NULL))
{
- struct tls_internal_t *tls_internal = __glibc_tls_internal ();
- free (tls_internal->strerror_l_buf);
- if (__asprintf (&tls_internal->strerror_l_buf, "%s%d",
- translate ("Unknown error ", loc), errnum) > 0)
- err = tls_internal->strerror_l_buf;
- else
+ if (__libc_initial)
{
- /* The memory was freed above. */
- tls_internal->strerror_l_buf = NULL;
- /* Provide a fallback translation. */
- err = (char *) translate ("Unknown error", loc);
+ struct tls_internal_t *tls_internal = __glibc_tls_internal ();
+ free (tls_internal->strerror_l_buf);
+ if (__asprintf (&tls_internal->strerror_l_buf, "%s%d",
+ translate ("Unknown error ", loc), errnum) > 0)
+ err = tls_internal->strerror_l_buf;
+ else
+ {
+ /* The memory was freed above. */
+ tls_internal->strerror_l_buf = NULL;
+ /* Provide a fallback translation. */
+ err = unknown_error (loc);
+ }
}
+ else
+ /* Secondary namespaces use a different malloc, so cannot
+ participate in the buffer management. */
+ err = unknown_error (loc);
}
else
err = (char *) translate (err, loc);
diff --git a/string/strsignal.c b/string/strsignal.c
index 3114601..d9b0365 100644
--- a/string/strsignal.c
+++ b/string/strsignal.c
@@ -21,6 +21,7 @@
#include <string.h>
#include <libintl.h>
#include <tls-internal.h>
+#include <libc-internal.h>
/* Return a string describing the meaning of the signal number SIGNUM. */
char *
@@ -30,21 +31,28 @@ strsignal (int signum)
if (desc != NULL)
return _(desc);
- struct tls_internal_t *tls_internal = __glibc_tls_internal ();
- free (tls_internal->strsignal_buf);
+ if (__libc_initial)
+ {
+ struct tls_internal_t *tls_internal = __glibc_tls_internal ();
+ free (tls_internal->strsignal_buf);
- int r;
+ int r;
#ifdef SIGRTMIN
- if (signum >= SIGRTMIN && signum <= SIGRTMAX)
- r = __asprintf (&tls_internal->strsignal_buf, _("Real-time signal %d"),
- signum - SIGRTMIN);
- else
+ if (signum >= SIGRTMIN && signum <= SIGRTMAX)
+ r = __asprintf (&tls_internal->strsignal_buf, _("Real-time signal %d"),
+ signum - SIGRTMIN);
+ else
#endif
- r = __asprintf (&tls_internal->strsignal_buf, _("Unknown signal %d"),
- signum);
-
- if (r == -1)
- tls_internal->strsignal_buf = NULL;
-
- return tls_internal->strsignal_buf;
+ r = __asprintf (&tls_internal->strsignal_buf, _("Unknown signal %d"),
+ signum);
+
+ if (r >= 0)
+ return tls_internal->strsignal_buf;
+ else
+ tls_internal->strsignal_buf = NULL;
+ }
+ /* Fall through on asprintf error, and for !__libc_initial:
+ secondary namespaces use a different malloc and cannot
+ participate in the buffer management. */
+ return _("Unknown signal");
}
diff --git a/string/test-strchr.c b/string/test-strchr.c
index c795eac..72b17af 100644
--- a/string/test-strchr.c
+++ b/string/test-strchr.c
@@ -255,6 +255,69 @@ check1 (void)
check_result (impl, s, c, exp_result);
}
+static void
+check2 (void)
+{
+ CHAR *s = (CHAR *) (buf1 + getpagesize () - 4 * sizeof (CHAR));
+ CHAR *s_begin = (CHAR *) (buf1 + getpagesize () - 64);
+#ifndef USE_FOR_STRCHRNUL
+ CHAR *exp_result = NULL;
+#else
+ CHAR *exp_result = s + 1;
+#endif
+ CHAR val = 0x12;
+ for (; s_begin != s; ++s_begin)
+ *s_begin = val;
+
+ s[0] = val + 1;
+ s[1] = 0;
+ s[2] = val + 1;
+ s[3] = val + 1;
+
+ {
+ FOR_EACH_IMPL (impl, 0)
+ check_result (impl, s, val, exp_result);
+ }
+ s[3] = val;
+ {
+ FOR_EACH_IMPL (impl, 0)
+ check_result (impl, s, val, exp_result);
+ }
+ exp_result = s;
+ s[0] = val;
+ {
+ FOR_EACH_IMPL (impl, 0)
+ check_result (impl, s, val, exp_result);
+ }
+
+ s[3] = val + 1;
+ {
+ FOR_EACH_IMPL (impl, 0)
+ check_result (impl, s, val, exp_result);
+ }
+
+ s[0] = val + 1;
+ s[1] = val + 1;
+ s[2] = val + 1;
+ s[3] = val + 1;
+ s[4] = val;
+ exp_result = s + 4;
+ {
+ FOR_EACH_IMPL (impl, 0)
+ check_result (impl, s, val, exp_result);
+ }
+ s[4] = 0;
+#ifndef USE_FOR_STRCHRNUL
+ exp_result = NULL;
+#else
+ exp_result = s + 4;
+#endif
+ {
+ FOR_EACH_IMPL (impl, 0)
+ check_result (impl, s, val, exp_result);
+ }
+}
+
int
test_main (void)
{
@@ -263,7 +326,7 @@ test_main (void)
test_init ();
check1 ();
-
+ check2 ();
printf ("%20s", "");
FOR_EACH_IMPL (impl, 0)
printf ("\t%s", impl->name);
diff --git a/support/Makefile b/support/Makefile
index aa57207..84e2419 100644
--- a/support/Makefile
+++ b/support/Makefile
@@ -42,15 +42,15 @@ libsupport-routines = \
resolv_test \
set_fortify_handler \
support-open-dev-null-range \
- support-xfstat \
- support-xfstat-time64 \
- support-xstat \
- support-xstat-time64 \
support_become_root \
support_can_chroot \
support_capture_subprocess \
support_capture_subprocess_check \
+ support_check_stat_fd \
+ support_check_stat_path \
support_chroot \
+ support_compare_file_bytes \
+ support_compare_file_string \
support_copy_file \
support_copy_file_range \
support_create_timer \
@@ -64,9 +64,12 @@ libsupport-routines = \
support_format_herrno \
support_format_hostent \
support_format_netent \
+ support_fuse \
support_isolate_in_subprocess \
support_mutex_pi_monotonic \
support_need_proc \
+ support_open_and_compare_file_bytes \
+ support_open_and_compare_file_string \
support_openpty \
support_path_support_time64 \
support_paths \
@@ -75,6 +78,9 @@ libsupport-routines = \
support_quote_blob \
support_quote_blob_wide \
support_quote_string \
+ support_readdir \
+ support_readdir_check \
+ support_readdir_r_check \
support_record_failure \
support_run_diff \
support_select_modifies_timeout \
@@ -117,6 +123,7 @@ libsupport-routines = \
xclock_settime_time64 \
xclone \
xclose \
+ xclosedir \
xconnect \
xcopy_file_range \
xdlfcn \
@@ -124,6 +131,7 @@ libsupport-routines = \
xdup2 \
xfchmod \
xfclose \
+ xfdopendir \
xfgets \
xfopen \
xfork \
@@ -135,8 +143,6 @@ libsupport-routines = \
xgetsockname \
xlisten \
xlseek \
- xlstat \
- xlstat-time64 \
xmalloc \
xmemstream \
xmkdir \
@@ -147,6 +153,7 @@ libsupport-routines = \
xmunmap \
xnewlocale \
xopen \
+ xopendir \
xpipe \
xpoll \
xposix_memalign \
@@ -210,6 +217,7 @@ libsupport-routines = \
xsignal \
xsigstack \
xsocket \
+ xstatx \
xstrdup \
xstrndup \
xsymlink \
@@ -321,15 +329,18 @@ tests = \
tst-support_capture_subprocess \
tst-support_descriptors \
tst-support_format_dns_packet \
+ tst-support_fuse \
tst-support_quote_blob \
tst-support_quote_blob_wide \
tst-support_quote_string \
+ tst-support_readdir \
tst-support_record_failure \
tst-test_compare \
tst-test_compare_blob \
tst-test_compare_string \
tst-test_compare_string_wide \
tst-timespec \
+ tst-xdirent \
tst-xreadlink \
tst-xsigstack \
# tests
diff --git a/support/bundled/README b/support/bundled/README
new file mode 100644
index 0000000..e861b3d
--- /dev/null
+++ b/support/bundled/README
@@ -0,0 +1,5 @@
+This subtree contains bundled files included verbatim from other
+sources. They are used for building the support/ infrastructure.
+
+linux/
+ Select files from the Linux 6.10 source tree.
diff --git a/support/bundled/linux/COPYING b/support/bundled/linux/COPYING
new file mode 100644
index 0000000..a635a38
--- /dev/null
+++ b/support/bundled/linux/COPYING
@@ -0,0 +1,20 @@
+The Linux Kernel is provided under:
+
+ SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
+
+Being under the terms of the GNU General Public License version 2 only,
+according with:
+
+ LICENSES/preferred/GPL-2.0
+
+With an explicit syscall exception, as stated at:
+
+ LICENSES/exceptions/Linux-syscall-note
+
+In addition, other licenses may also apply. Please see:
+
+ Documentation/process/license-rules.rst
+
+for more details.
+
+All contributions to the Linux Kernel are subject to this COPYING file.
diff --git a/support/bundled/linux/LICENSES/exceptions/Linux-syscall-note b/support/bundled/linux/LICENSES/exceptions/Linux-syscall-note
new file mode 100644
index 0000000..adbe756
--- /dev/null
+++ b/support/bundled/linux/LICENSES/exceptions/Linux-syscall-note
@@ -0,0 +1,24 @@
+SPDX-Exception-Identifier: Linux-syscall-note
+SPDX-URL: https://spdx.org/licenses/Linux-syscall-note.html
+SPDX-Licenses: GPL-2.0, GPL-2.0+, GPL-1.0+, LGPL-2.0, LGPL-2.0+, LGPL-2.1, LGPL-2.1+, GPL-2.0-only, GPL-2.0-or-later
+Usage-Guide:
+ This exception is used together with one of the above SPDX-Licenses
+ to mark user space API (uapi) header files so they can be included
+ into non GPL compliant user space application code.
+ To use this exception add it with the keyword WITH to one of the
+ identifiers in the SPDX-Licenses tag:
+ SPDX-License-Identifier: <SPDX-License> WITH Linux-syscall-note
+License-Text:
+
+ NOTE! This copyright does *not* cover user programs that use kernel
+ services by normal system calls - this is merely considered normal use
+ of the kernel, and does *not* fall under the heading of "derived work".
+ Also note that the GPL below is copyrighted by the Free Software
+ Foundation, but the instance of code that it refers to (the Linux
+ kernel) is copyrighted by me and others who actually wrote it.
+
+ Also note that the only valid version of the GPL as far as the kernel
+ is concerned is _this_ particular version of the license (ie v2, not
+ v2.2 or v3.x or whatever), unless explicitly otherwise stated.
+
+ Linus Torvalds
diff --git a/support/bundled/linux/LICENSES/preferred/GPL-2.0 b/support/bundled/linux/LICENSES/preferred/GPL-2.0
new file mode 100644
index 0000000..ff0812f
--- /dev/null
+++ b/support/bundled/linux/LICENSES/preferred/GPL-2.0
@@ -0,0 +1,359 @@
+Valid-License-Identifier: GPL-2.0
+Valid-License-Identifier: GPL-2.0-only
+Valid-License-Identifier: GPL-2.0+
+Valid-License-Identifier: GPL-2.0-or-later
+SPDX-URL: https://spdx.org/licenses/GPL-2.0.html
+Usage-Guide:
+ To use this license in source code, put one of the following SPDX
+ tag/value pairs into a comment according to the placement
+ guidelines in the licensing rules documentation.
+ For 'GNU General Public License (GPL) version 2 only' use:
+ SPDX-License-Identifier: GPL-2.0
+ or
+ SPDX-License-Identifier: GPL-2.0-only
+ For 'GNU General Public License (GPL) version 2 or any later version' use:
+ SPDX-License-Identifier: GPL-2.0+
+ or
+ SPDX-License-Identifier: GPL-2.0-or-later
+License-Text:
+
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/support/bundled/linux/include/uapi/linux/fuse.h b/support/bundled/linux/include/uapi/linux/fuse.h
new file mode 100644
index 0000000..d08b99d
--- /dev/null
+++ b/support/bundled/linux/include/uapi/linux/fuse.h
@@ -0,0 +1,1189 @@
+/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-2-Clause) */
+/*
+ This file defines the kernel interface of FUSE
+ Copyright (C) 2001-2008 Miklos Szeredi <miklos@szeredi.hu>
+
+ This program can be distributed under the terms of the GNU GPL.
+ See the file COPYING.
+
+ This -- and only this -- header file may also be distributed under
+ the terms of the BSD Licence as follows:
+
+ Copyright (C) 2001-2007 Miklos Szeredi. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ SUCH DAMAGE.
+*/
+
+/*
+ * This file defines the kernel interface of FUSE
+ *
+ * Protocol changelog:
+ *
+ * 7.1:
+ * - add the following messages:
+ * FUSE_SETATTR, FUSE_SYMLINK, FUSE_MKNOD, FUSE_MKDIR, FUSE_UNLINK,
+ * FUSE_RMDIR, FUSE_RENAME, FUSE_LINK, FUSE_OPEN, FUSE_READ, FUSE_WRITE,
+ * FUSE_RELEASE, FUSE_FSYNC, FUSE_FLUSH, FUSE_SETXATTR, FUSE_GETXATTR,
+ * FUSE_LISTXATTR, FUSE_REMOVEXATTR, FUSE_OPENDIR, FUSE_READDIR,
+ * FUSE_RELEASEDIR
+ * - add padding to messages to accommodate 32-bit servers on 64-bit kernels
+ *
+ * 7.2:
+ * - add FOPEN_DIRECT_IO and FOPEN_KEEP_CACHE flags
+ * - add FUSE_FSYNCDIR message
+ *
+ * 7.3:
+ * - add FUSE_ACCESS message
+ * - add FUSE_CREATE message
+ * - add filehandle to fuse_setattr_in
+ *
+ * 7.4:
+ * - add frsize to fuse_kstatfs
+ * - clean up request size limit checking
+ *
+ * 7.5:
+ * - add flags and max_write to fuse_init_out
+ *
+ * 7.6:
+ * - add max_readahead to fuse_init_in and fuse_init_out
+ *
+ * 7.7:
+ * - add FUSE_INTERRUPT message
+ * - add POSIX file lock support
+ *
+ * 7.8:
+ * - add lock_owner and flags fields to fuse_release_in
+ * - add FUSE_BMAP message
+ * - add FUSE_DESTROY message
+ *
+ * 7.9:
+ * - new fuse_getattr_in input argument of GETATTR
+ * - add lk_flags in fuse_lk_in
+ * - add lock_owner field to fuse_setattr_in, fuse_read_in and fuse_write_in
+ * - add blksize field to fuse_attr
+ * - add file flags field to fuse_read_in and fuse_write_in
+ * - Add ATIME_NOW and MTIME_NOW flags to fuse_setattr_in
+ *
+ * 7.10
+ * - add nonseekable open flag
+ *
+ * 7.11
+ * - add IOCTL message
+ * - add unsolicited notification support
+ * - add POLL message and NOTIFY_POLL notification
+ *
+ * 7.12
+ * - add umask flag to input argument of create, mknod and mkdir
+ * - add notification messages for invalidation of inodes and
+ * directory entries
+ *
+ * 7.13
+ * - make max number of background requests and congestion threshold
+ * tunables
+ *
+ * 7.14
+ * - add splice support to fuse device
+ *
+ * 7.15
+ * - add store notify
+ * - add retrieve notify
+ *
+ * 7.16
+ * - add BATCH_FORGET request
+ * - FUSE_IOCTL_UNRESTRICTED shall now return with array of 'struct
+ * fuse_ioctl_iovec' instead of ambiguous 'struct iovec'
+ * - add FUSE_IOCTL_32BIT flag
+ *
+ * 7.17
+ * - add FUSE_FLOCK_LOCKS and FUSE_RELEASE_FLOCK_UNLOCK
+ *
+ * 7.18
+ * - add FUSE_IOCTL_DIR flag
+ * - add FUSE_NOTIFY_DELETE
+ *
+ * 7.19
+ * - add FUSE_FALLOCATE
+ *
+ * 7.20
+ * - add FUSE_AUTO_INVAL_DATA
+ *
+ * 7.21
+ * - add FUSE_READDIRPLUS
+ * - send the requested events in POLL request
+ *
+ * 7.22
+ * - add FUSE_ASYNC_DIO
+ *
+ * 7.23
+ * - add FUSE_WRITEBACK_CACHE
+ * - add time_gran to fuse_init_out
+ * - add reserved space to fuse_init_out
+ * - add FATTR_CTIME
+ * - add ctime and ctimensec to fuse_setattr_in
+ * - add FUSE_RENAME2 request
+ * - add FUSE_NO_OPEN_SUPPORT flag
+ *
+ * 7.24
+ * - add FUSE_LSEEK for SEEK_HOLE and SEEK_DATA support
+ *
+ * 7.25
+ * - add FUSE_PARALLEL_DIROPS
+ *
+ * 7.26
+ * - add FUSE_HANDLE_KILLPRIV
+ * - add FUSE_POSIX_ACL
+ *
+ * 7.27
+ * - add FUSE_ABORT_ERROR
+ *
+ * 7.28
+ * - add FUSE_COPY_FILE_RANGE
+ * - add FOPEN_CACHE_DIR
+ * - add FUSE_MAX_PAGES, add max_pages to init_out
+ * - add FUSE_CACHE_SYMLINKS
+ *
+ * 7.29
+ * - add FUSE_NO_OPENDIR_SUPPORT flag
+ *
+ * 7.30
+ * - add FUSE_EXPLICIT_INVAL_DATA
+ * - add FUSE_IOCTL_COMPAT_X32
+ *
+ * 7.31
+ * - add FUSE_WRITE_KILL_PRIV flag
+ * - add FUSE_SETUPMAPPING and FUSE_REMOVEMAPPING
+ * - add map_alignment to fuse_init_out, add FUSE_MAP_ALIGNMENT flag
+ *
+ * 7.32
+ * - add flags to fuse_attr, add FUSE_ATTR_SUBMOUNT, add FUSE_SUBMOUNTS
+ *
+ * 7.33
+ * - add FUSE_HANDLE_KILLPRIV_V2, FUSE_WRITE_KILL_SUIDGID, FATTR_KILL_SUIDGID
+ * - add FUSE_OPEN_KILL_SUIDGID
+ * - extend fuse_setxattr_in, add FUSE_SETXATTR_EXT
+ * - add FUSE_SETXATTR_ACL_KILL_SGID
+ *
+ * 7.34
+ * - add FUSE_SYNCFS
+ *
+ * 7.35
+ * - add FOPEN_NOFLUSH
+ *
+ * 7.36
+ * - extend fuse_init_in with reserved fields, add FUSE_INIT_EXT init flag
+ * - add flags2 to fuse_init_in and fuse_init_out
+ * - add FUSE_SECURITY_CTX init flag
+ * - add security context to create, mkdir, symlink, and mknod requests
+ * - add FUSE_HAS_INODE_DAX, FUSE_ATTR_DAX
+ *
+ * 7.37
+ * - add FUSE_TMPFILE
+ *
+ * 7.38
+ * - add FUSE_EXPIRE_ONLY flag to fuse_notify_inval_entry
+ * - add FOPEN_PARALLEL_DIRECT_WRITES
+ * - add total_extlen to fuse_in_header
+ * - add FUSE_MAX_NR_SECCTX
+ * - add extension header
+ * - add FUSE_EXT_GROUPS
+ * - add FUSE_CREATE_SUPP_GROUP
+ * - add FUSE_HAS_EXPIRE_ONLY
+ *
+ * 7.39
+ * - add FUSE_DIRECT_IO_ALLOW_MMAP
+ * - add FUSE_STATX and related structures
+ *
+ * 7.40
+ * - add max_stack_depth to fuse_init_out, add FUSE_PASSTHROUGH init flag
+ * - add backing_id to fuse_open_out, add FOPEN_PASSTHROUGH open flag
+ * - add FUSE_NO_EXPORT_SUPPORT init flag
+ * - add FUSE_NOTIFY_RESEND, add FUSE_HAS_RESEND init flag
+ */
+
+#ifndef _LINUX_FUSE_H
+#define _LINUX_FUSE_H
+
+#ifdef __KERNEL__
+#include <linux/types.h>
+#else
+#include <stdint.h>
+#endif
+
+/*
+ * Version negotiation:
+ *
+ * Both the kernel and userspace send the version they support in the
+ * INIT request and reply respectively.
+ *
+ * If the major versions match then both shall use the smallest
+ * of the two minor versions for communication.
+ *
+ * If the kernel supports a larger major version, then userspace shall
+ * reply with the major version it supports, ignore the rest of the
+ * INIT message and expect a new INIT message from the kernel with a
+ * matching major version.
+ *
+ * If the library supports a larger major version, then it shall fall
+ * back to the major protocol version sent by the kernel for
+ * communication and reply with that major version (and an arbitrary
+ * supported minor version).
+ */
+
+/** Version number of this interface */
+#define FUSE_KERNEL_VERSION 7
+
+/** Minor version number of this interface */
+#define FUSE_KERNEL_MINOR_VERSION 40
+
+/** The node ID of the root inode */
+#define FUSE_ROOT_ID 1
+
+/* Make sure all structures are padded to 64bit boundary, so 32bit
+ userspace works under 64bit kernels */
+
+struct fuse_attr {
+ uint64_t ino;
+ uint64_t size;
+ uint64_t blocks;
+ uint64_t atime;
+ uint64_t mtime;
+ uint64_t ctime;
+ uint32_t atimensec;
+ uint32_t mtimensec;
+ uint32_t ctimensec;
+ uint32_t mode;
+ uint32_t nlink;
+ uint32_t uid;
+ uint32_t gid;
+ uint32_t rdev;
+ uint32_t blksize;
+ uint32_t flags;
+};
+
+/*
+ * The following structures are bit-for-bit compatible with the statx(2) ABI in
+ * Linux.
+ */
+struct fuse_sx_time {
+ int64_t tv_sec;
+ uint32_t tv_nsec;
+ int32_t __reserved;
+};
+
+struct fuse_statx {
+ uint32_t mask;
+ uint32_t blksize;
+ uint64_t attributes;
+ uint32_t nlink;
+ uint32_t uid;
+ uint32_t gid;
+ uint16_t mode;
+ uint16_t __spare0[1];
+ uint64_t ino;
+ uint64_t size;
+ uint64_t blocks;
+ uint64_t attributes_mask;
+ struct fuse_sx_time atime;
+ struct fuse_sx_time btime;
+ struct fuse_sx_time ctime;
+ struct fuse_sx_time mtime;
+ uint32_t rdev_major;
+ uint32_t rdev_minor;
+ uint32_t dev_major;
+ uint32_t dev_minor;
+ uint64_t __spare2[14];
+};
+
+struct fuse_kstatfs {
+ uint64_t blocks;
+ uint64_t bfree;
+ uint64_t bavail;
+ uint64_t files;
+ uint64_t ffree;
+ uint32_t bsize;
+ uint32_t namelen;
+ uint32_t frsize;
+ uint32_t padding;
+ uint32_t spare[6];
+};
+
+struct fuse_file_lock {
+ uint64_t start;
+ uint64_t end;
+ uint32_t type;
+ uint32_t pid; /* tgid */
+};
+
+/**
+ * Bitmasks for fuse_setattr_in.valid
+ */
+#define FATTR_MODE (1 << 0)
+#define FATTR_UID (1 << 1)
+#define FATTR_GID (1 << 2)
+#define FATTR_SIZE (1 << 3)
+#define FATTR_ATIME (1 << 4)
+#define FATTR_MTIME (1 << 5)
+#define FATTR_FH (1 << 6)
+#define FATTR_ATIME_NOW (1 << 7)
+#define FATTR_MTIME_NOW (1 << 8)
+#define FATTR_LOCKOWNER (1 << 9)
+#define FATTR_CTIME (1 << 10)
+#define FATTR_KILL_SUIDGID (1 << 11)
+
+/**
+ * Flags returned by the OPEN request
+ *
+ * FOPEN_DIRECT_IO: bypass page cache for this open file
+ * FOPEN_KEEP_CACHE: don't invalidate the data cache on open
+ * FOPEN_NONSEEKABLE: the file is not seekable
+ * FOPEN_CACHE_DIR: allow caching this directory
+ * FOPEN_STREAM: the file is stream-like (no file position at all)
+ * FOPEN_NOFLUSH: don't flush data cache on close (unless FUSE_WRITEBACK_CACHE)
+ * FOPEN_PARALLEL_DIRECT_WRITES: Allow concurrent direct writes on the same inode
+ * FOPEN_PASSTHROUGH: passthrough read/write io for this open file
+ */
+#define FOPEN_DIRECT_IO (1 << 0)
+#define FOPEN_KEEP_CACHE (1 << 1)
+#define FOPEN_NONSEEKABLE (1 << 2)
+#define FOPEN_CACHE_DIR (1 << 3)
+#define FOPEN_STREAM (1 << 4)
+#define FOPEN_NOFLUSH (1 << 5)
+#define FOPEN_PARALLEL_DIRECT_WRITES (1 << 6)
+#define FOPEN_PASSTHROUGH (1 << 7)
+
+/**
+ * INIT request/reply flags
+ *
+ * FUSE_ASYNC_READ: asynchronous read requests
+ * FUSE_POSIX_LOCKS: remote locking for POSIX file locks
+ * FUSE_FILE_OPS: kernel sends file handle for fstat, etc... (not yet supported)
+ * FUSE_ATOMIC_O_TRUNC: handles the O_TRUNC open flag in the filesystem
+ * FUSE_EXPORT_SUPPORT: filesystem handles lookups of "." and ".."
+ * FUSE_BIG_WRITES: filesystem can handle write size larger than 4kB
+ * FUSE_DONT_MASK: don't apply umask to file mode on create operations
+ * FUSE_SPLICE_WRITE: kernel supports splice write on the device
+ * FUSE_SPLICE_MOVE: kernel supports splice move on the device
+ * FUSE_SPLICE_READ: kernel supports splice read on the device
+ * FUSE_FLOCK_LOCKS: remote locking for BSD style file locks
+ * FUSE_HAS_IOCTL_DIR: kernel supports ioctl on directories
+ * FUSE_AUTO_INVAL_DATA: automatically invalidate cached pages
+ * FUSE_DO_READDIRPLUS: do READDIRPLUS (READDIR+LOOKUP in one)
+ * FUSE_READDIRPLUS_AUTO: adaptive readdirplus
+ * FUSE_ASYNC_DIO: asynchronous direct I/O submission
+ * FUSE_WRITEBACK_CACHE: use writeback cache for buffered writes
+ * FUSE_NO_OPEN_SUPPORT: kernel supports zero-message opens
+ * FUSE_PARALLEL_DIROPS: allow parallel lookups and readdir
+ * FUSE_HANDLE_KILLPRIV: fs handles killing suid/sgid/cap on write/chown/trunc
+ * FUSE_POSIX_ACL: filesystem supports posix acls
+ * FUSE_ABORT_ERROR: reading the device after abort returns ECONNABORTED
+ * FUSE_MAX_PAGES: init_out.max_pages contains the max number of req pages
+ * FUSE_CACHE_SYMLINKS: cache READLINK responses
+ * FUSE_NO_OPENDIR_SUPPORT: kernel supports zero-message opendir
+ * FUSE_EXPLICIT_INVAL_DATA: only invalidate cached pages on explicit request
+ * FUSE_MAP_ALIGNMENT: init_out.map_alignment contains log2(byte alignment) for
+ * foffset and moffset fields in struct
+ * fuse_setupmapping_out and fuse_removemapping_one.
+ * FUSE_SUBMOUNTS: kernel supports auto-mounting directory submounts
+ * FUSE_HANDLE_KILLPRIV_V2: fs kills suid/sgid/cap on write/chown/trunc.
+ * Upon write/truncate suid/sgid is only killed if caller
+ * does not have CAP_FSETID. Additionally upon
+ * write/truncate sgid is killed only if file has group
+ * execute permission. (Same as Linux VFS behavior).
+ * FUSE_SETXATTR_EXT: Server supports extended struct fuse_setxattr_in
+ * FUSE_INIT_EXT: extended fuse_init_in request
+ * FUSE_INIT_RESERVED: reserved, do not use
+ * FUSE_SECURITY_CTX: add security context to create, mkdir, symlink, and
+ * mknod
+ * FUSE_HAS_INODE_DAX: use per inode DAX
+ * FUSE_CREATE_SUPP_GROUP: add supplementary group info to create, mkdir,
+ * symlink and mknod (single group that matches parent)
+ * FUSE_HAS_EXPIRE_ONLY: kernel supports expiry-only entry invalidation
+ * FUSE_DIRECT_IO_ALLOW_MMAP: allow shared mmap in FOPEN_DIRECT_IO mode.
+ * FUSE_NO_EXPORT_SUPPORT: explicitly disable export support
+ * FUSE_HAS_RESEND: kernel supports resending pending requests, and the high bit
+ * of the request ID indicates resend requests
+ */
+#define FUSE_ASYNC_READ (1 << 0)
+#define FUSE_POSIX_LOCKS (1 << 1)
+#define FUSE_FILE_OPS (1 << 2)
+#define FUSE_ATOMIC_O_TRUNC (1 << 3)
+#define FUSE_EXPORT_SUPPORT (1 << 4)
+#define FUSE_BIG_WRITES (1 << 5)
+#define FUSE_DONT_MASK (1 << 6)
+#define FUSE_SPLICE_WRITE (1 << 7)
+#define FUSE_SPLICE_MOVE (1 << 8)
+#define FUSE_SPLICE_READ (1 << 9)
+#define FUSE_FLOCK_LOCKS (1 << 10)
+#define FUSE_HAS_IOCTL_DIR (1 << 11)
+#define FUSE_AUTO_INVAL_DATA (1 << 12)
+#define FUSE_DO_READDIRPLUS (1 << 13)
+#define FUSE_READDIRPLUS_AUTO (1 << 14)
+#define FUSE_ASYNC_DIO (1 << 15)
+#define FUSE_WRITEBACK_CACHE (1 << 16)
+#define FUSE_NO_OPEN_SUPPORT (1 << 17)
+#define FUSE_PARALLEL_DIROPS (1 << 18)
+#define FUSE_HANDLE_KILLPRIV (1 << 19)
+#define FUSE_POSIX_ACL (1 << 20)
+#define FUSE_ABORT_ERROR (1 << 21)
+#define FUSE_MAX_PAGES (1 << 22)
+#define FUSE_CACHE_SYMLINKS (1 << 23)
+#define FUSE_NO_OPENDIR_SUPPORT (1 << 24)
+#define FUSE_EXPLICIT_INVAL_DATA (1 << 25)
+#define FUSE_MAP_ALIGNMENT (1 << 26)
+#define FUSE_SUBMOUNTS (1 << 27)
+#define FUSE_HANDLE_KILLPRIV_V2 (1 << 28)
+#define FUSE_SETXATTR_EXT (1 << 29)
+#define FUSE_INIT_EXT (1 << 30)
+#define FUSE_INIT_RESERVED (1 << 31)
+/* bits 32..63 get shifted down 32 bits into the flags2 field */
+#define FUSE_SECURITY_CTX (1ULL << 32)
+#define FUSE_HAS_INODE_DAX (1ULL << 33)
+#define FUSE_CREATE_SUPP_GROUP (1ULL << 34)
+#define FUSE_HAS_EXPIRE_ONLY (1ULL << 35)
+#define FUSE_DIRECT_IO_ALLOW_MMAP (1ULL << 36)
+#define FUSE_PASSTHROUGH (1ULL << 37)
+#define FUSE_NO_EXPORT_SUPPORT (1ULL << 38)
+#define FUSE_HAS_RESEND (1ULL << 39)
+
+/* Obsolete alias for FUSE_DIRECT_IO_ALLOW_MMAP */
+#define FUSE_DIRECT_IO_RELAX FUSE_DIRECT_IO_ALLOW_MMAP
+
+/**
+ * CUSE INIT request/reply flags
+ *
+ * CUSE_UNRESTRICTED_IOCTL: use unrestricted ioctl
+ */
+#define CUSE_UNRESTRICTED_IOCTL (1 << 0)
+
+/**
+ * Release flags
+ */
+#define FUSE_RELEASE_FLUSH (1 << 0)
+#define FUSE_RELEASE_FLOCK_UNLOCK (1 << 1)
+
+/**
+ * Getattr flags
+ */
+#define FUSE_GETATTR_FH (1 << 0)
+
+/**
+ * Lock flags
+ */
+#define FUSE_LK_FLOCK (1 << 0)
+
+/**
+ * WRITE flags
+ *
+ * FUSE_WRITE_CACHE: delayed write from page cache, file handle is guessed
+ * FUSE_WRITE_LOCKOWNER: lock_owner field is valid
+ * FUSE_WRITE_KILL_SUIDGID: kill suid and sgid bits
+ */
+#define FUSE_WRITE_CACHE (1 << 0)
+#define FUSE_WRITE_LOCKOWNER (1 << 1)
+#define FUSE_WRITE_KILL_SUIDGID (1 << 2)
+
+/* Obsolete alias; this flag implies killing suid/sgid only. */
+#define FUSE_WRITE_KILL_PRIV FUSE_WRITE_KILL_SUIDGID
+
+/**
+ * Read flags
+ */
+#define FUSE_READ_LOCKOWNER (1 << 1)
+
+/**
+ * Ioctl flags
+ *
+ * FUSE_IOCTL_COMPAT: 32bit compat ioctl on 64bit machine
+ * FUSE_IOCTL_UNRESTRICTED: not restricted to well-formed ioctls, retry allowed
+ * FUSE_IOCTL_RETRY: retry with new iovecs
+ * FUSE_IOCTL_32BIT: 32bit ioctl
+ * FUSE_IOCTL_DIR: is a directory
+ * FUSE_IOCTL_COMPAT_X32: x32 compat ioctl on 64bit machine (64bit time_t)
+ *
+ * FUSE_IOCTL_MAX_IOV: maximum of in_iovecs + out_iovecs
+ */
+#define FUSE_IOCTL_COMPAT (1 << 0)
+#define FUSE_IOCTL_UNRESTRICTED (1 << 1)
+#define FUSE_IOCTL_RETRY (1 << 2)
+#define FUSE_IOCTL_32BIT (1 << 3)
+#define FUSE_IOCTL_DIR (1 << 4)
+#define FUSE_IOCTL_COMPAT_X32 (1 << 5)
+
+#define FUSE_IOCTL_MAX_IOV 256
+
+/**
+ * Poll flags
+ *
+ * FUSE_POLL_SCHEDULE_NOTIFY: request poll notify
+ */
+#define FUSE_POLL_SCHEDULE_NOTIFY (1 << 0)
+
+/**
+ * Fsync flags
+ *
+ * FUSE_FSYNC_FDATASYNC: Sync data only, not metadata
+ */
+#define FUSE_FSYNC_FDATASYNC (1 << 0)
+
+/**
+ * fuse_attr flags
+ *
+ * FUSE_ATTR_SUBMOUNT: Object is a submount root
+ * FUSE_ATTR_DAX: Enable DAX for this file in per inode DAX mode
+ */
+#define FUSE_ATTR_SUBMOUNT (1 << 0)
+#define FUSE_ATTR_DAX (1 << 1)
+
+/**
+ * Open flags
+ * FUSE_OPEN_KILL_SUIDGID: Kill suid and sgid if executable
+ */
+#define FUSE_OPEN_KILL_SUIDGID (1 << 0)
+
+/**
+ * setxattr flags
+ * FUSE_SETXATTR_ACL_KILL_SGID: Clear SGID when system.posix_acl_access is set
+ */
+#define FUSE_SETXATTR_ACL_KILL_SGID (1 << 0)
+
+/**
+ * notify_inval_entry flags
+ * FUSE_EXPIRE_ONLY
+ */
+#define FUSE_EXPIRE_ONLY (1 << 0)
+
+/**
+ * extension type
+ * FUSE_MAX_NR_SECCTX: maximum value of &fuse_secctx_header.nr_secctx
+ * FUSE_EXT_GROUPS: &fuse_supp_groups extension
+ */
+enum fuse_ext_type {
+ /* Types 0..31 are reserved for fuse_secctx_header */
+ FUSE_MAX_NR_SECCTX = 31,
+ FUSE_EXT_GROUPS = 32,
+};
+
+enum fuse_opcode {
+ FUSE_LOOKUP = 1,
+ FUSE_FORGET = 2, /* no reply */
+ FUSE_GETATTR = 3,
+ FUSE_SETATTR = 4,
+ FUSE_READLINK = 5,
+ FUSE_SYMLINK = 6,
+ FUSE_MKNOD = 8,
+ FUSE_MKDIR = 9,
+ FUSE_UNLINK = 10,
+ FUSE_RMDIR = 11,
+ FUSE_RENAME = 12,
+ FUSE_LINK = 13,
+ FUSE_OPEN = 14,
+ FUSE_READ = 15,
+ FUSE_WRITE = 16,
+ FUSE_STATFS = 17,
+ FUSE_RELEASE = 18,
+ FUSE_FSYNC = 20,
+ FUSE_SETXATTR = 21,
+ FUSE_GETXATTR = 22,
+ FUSE_LISTXATTR = 23,
+ FUSE_REMOVEXATTR = 24,
+ FUSE_FLUSH = 25,
+ FUSE_INIT = 26,
+ FUSE_OPENDIR = 27,
+ FUSE_READDIR = 28,
+ FUSE_RELEASEDIR = 29,
+ FUSE_FSYNCDIR = 30,
+ FUSE_GETLK = 31,
+ FUSE_SETLK = 32,
+ FUSE_SETLKW = 33,
+ FUSE_ACCESS = 34,
+ FUSE_CREATE = 35,
+ FUSE_INTERRUPT = 36,
+ FUSE_BMAP = 37,
+ FUSE_DESTROY = 38,
+ FUSE_IOCTL = 39,
+ FUSE_POLL = 40,
+ FUSE_NOTIFY_REPLY = 41,
+ FUSE_BATCH_FORGET = 42,
+ FUSE_FALLOCATE = 43,
+ FUSE_READDIRPLUS = 44,
+ FUSE_RENAME2 = 45,
+ FUSE_LSEEK = 46,
+ FUSE_COPY_FILE_RANGE = 47,
+ FUSE_SETUPMAPPING = 48,
+ FUSE_REMOVEMAPPING = 49,
+ FUSE_SYNCFS = 50,
+ FUSE_TMPFILE = 51,
+ FUSE_STATX = 52,
+
+ /* CUSE specific operations */
+ CUSE_INIT = 4096,
+
+ /* Reserved opcodes: helpful to detect structure endian-ness */
+ CUSE_INIT_BSWAP_RESERVED = 1048576, /* CUSE_INIT << 8 */
+ FUSE_INIT_BSWAP_RESERVED = 436207616, /* FUSE_INIT << 24 */
+};
+
+enum fuse_notify_code {
+ FUSE_NOTIFY_POLL = 1,
+ FUSE_NOTIFY_INVAL_INODE = 2,
+ FUSE_NOTIFY_INVAL_ENTRY = 3,
+ FUSE_NOTIFY_STORE = 4,
+ FUSE_NOTIFY_RETRIEVE = 5,
+ FUSE_NOTIFY_DELETE = 6,
+ FUSE_NOTIFY_RESEND = 7,
+ FUSE_NOTIFY_CODE_MAX,
+};
+
+/* The read buffer is required to be at least 8k, but may be much larger */
+#define FUSE_MIN_READ_BUFFER 8192
+
+#define FUSE_COMPAT_ENTRY_OUT_SIZE 120
+
+struct fuse_entry_out {
+ uint64_t nodeid; /* Inode ID */
+ uint64_t generation; /* Inode generation: nodeid:gen must
+ be unique for the fs's lifetime */
+ uint64_t entry_valid; /* Cache timeout for the name */
+ uint64_t attr_valid; /* Cache timeout for the attributes */
+ uint32_t entry_valid_nsec;
+ uint32_t attr_valid_nsec;
+ struct fuse_attr attr;
+};
+
+struct fuse_forget_in {
+ uint64_t nlookup;
+};
+
+struct fuse_forget_one {
+ uint64_t nodeid;
+ uint64_t nlookup;
+};
+
+struct fuse_batch_forget_in {
+ uint32_t count;
+ uint32_t dummy;
+};
+
+struct fuse_getattr_in {
+ uint32_t getattr_flags;
+ uint32_t dummy;
+ uint64_t fh;
+};
+
+#define FUSE_COMPAT_ATTR_OUT_SIZE 96
+
+struct fuse_attr_out {
+ uint64_t attr_valid; /* Cache timeout for the attributes */
+ uint32_t attr_valid_nsec;
+ uint32_t dummy;
+ struct fuse_attr attr;
+};
+
+struct fuse_statx_in {
+ uint32_t getattr_flags;
+ uint32_t reserved;
+ uint64_t fh;
+ uint32_t sx_flags;
+ uint32_t sx_mask;
+};
+
+struct fuse_statx_out {
+ uint64_t attr_valid; /* Cache timeout for the attributes */
+ uint32_t attr_valid_nsec;
+ uint32_t flags;
+ uint64_t spare[2];
+ struct fuse_statx stat;
+};
+
+#define FUSE_COMPAT_MKNOD_IN_SIZE 8
+
+struct fuse_mknod_in {
+ uint32_t mode;
+ uint32_t rdev;
+ uint32_t umask;
+ uint32_t padding;
+};
+
+struct fuse_mkdir_in {
+ uint32_t mode;
+ uint32_t umask;
+};
+
+struct fuse_rename_in {
+ uint64_t newdir;
+};
+
+struct fuse_rename2_in {
+ uint64_t newdir;
+ uint32_t flags;
+ uint32_t padding;
+};
+
+struct fuse_link_in {
+ uint64_t oldnodeid;
+};
+
+struct fuse_setattr_in {
+ uint32_t valid;
+ uint32_t padding;
+ uint64_t fh;
+ uint64_t size;
+ uint64_t lock_owner;
+ uint64_t atime;
+ uint64_t mtime;
+ uint64_t ctime;
+ uint32_t atimensec;
+ uint32_t mtimensec;
+ uint32_t ctimensec;
+ uint32_t mode;
+ uint32_t unused4;
+ uint32_t uid;
+ uint32_t gid;
+ uint32_t unused5;
+};
+
+struct fuse_open_in {
+ uint32_t flags;
+ uint32_t open_flags; /* FUSE_OPEN_... */
+};
+
+struct fuse_create_in {
+ uint32_t flags;
+ uint32_t mode;
+ uint32_t umask;
+ uint32_t open_flags; /* FUSE_OPEN_... */
+};
+
+struct fuse_open_out {
+ uint64_t fh;
+ uint32_t open_flags;
+ int32_t backing_id;
+};
+
+struct fuse_release_in {
+ uint64_t fh;
+ uint32_t flags;
+ uint32_t release_flags;
+ uint64_t lock_owner;
+};
+
+struct fuse_flush_in {
+ uint64_t fh;
+ uint32_t unused;
+ uint32_t padding;
+ uint64_t lock_owner;
+};
+
+struct fuse_read_in {
+ uint64_t fh;
+ uint64_t offset;
+ uint32_t size;
+ uint32_t read_flags;
+ uint64_t lock_owner;
+ uint32_t flags;
+ uint32_t padding;
+};
+
+#define FUSE_COMPAT_WRITE_IN_SIZE 24
+
+struct fuse_write_in {
+ uint64_t fh;
+ uint64_t offset;
+ uint32_t size;
+ uint32_t write_flags;
+ uint64_t lock_owner;
+ uint32_t flags;
+ uint32_t padding;
+};
+
+struct fuse_write_out {
+ uint32_t size;
+ uint32_t padding;
+};
+
+#define FUSE_COMPAT_STATFS_SIZE 48
+
+struct fuse_statfs_out {
+ struct fuse_kstatfs st;
+};
+
+struct fuse_fsync_in {
+ uint64_t fh;
+ uint32_t fsync_flags;
+ uint32_t padding;
+};
+
+#define FUSE_COMPAT_SETXATTR_IN_SIZE 8
+
+struct fuse_setxattr_in {
+ uint32_t size;
+ uint32_t flags;
+ uint32_t setxattr_flags;
+ uint32_t padding;
+};
+
+struct fuse_getxattr_in {
+ uint32_t size;
+ uint32_t padding;
+};
+
+struct fuse_getxattr_out {
+ uint32_t size;
+ uint32_t padding;
+};
+
+struct fuse_lk_in {
+ uint64_t fh;
+ uint64_t owner;
+ struct fuse_file_lock lk;
+ uint32_t lk_flags;
+ uint32_t padding;
+};
+
+struct fuse_lk_out {
+ struct fuse_file_lock lk;
+};
+
+struct fuse_access_in {
+ uint32_t mask;
+ uint32_t padding;
+};
+
+struct fuse_init_in {
+ uint32_t major;
+ uint32_t minor;
+ uint32_t max_readahead;
+ uint32_t flags;
+ uint32_t flags2;
+ uint32_t unused[11];
+};
+
+#define FUSE_COMPAT_INIT_OUT_SIZE 8
+#define FUSE_COMPAT_22_INIT_OUT_SIZE 24
+
+struct fuse_init_out {
+ uint32_t major;
+ uint32_t minor;
+ uint32_t max_readahead;
+ uint32_t flags;
+ uint16_t max_background;
+ uint16_t congestion_threshold;
+ uint32_t max_write;
+ uint32_t time_gran;
+ uint16_t max_pages;
+ uint16_t map_alignment;
+ uint32_t flags2;
+ uint32_t max_stack_depth;
+ uint32_t unused[6];
+};
+
+#define CUSE_INIT_INFO_MAX 4096
+
+struct cuse_init_in {
+ uint32_t major;
+ uint32_t minor;
+ uint32_t unused;
+ uint32_t flags;
+};
+
+struct cuse_init_out {
+ uint32_t major;
+ uint32_t minor;
+ uint32_t unused;
+ uint32_t flags;
+ uint32_t max_read;
+ uint32_t max_write;
+ uint32_t dev_major; /* chardev major */
+ uint32_t dev_minor; /* chardev minor */
+ uint32_t spare[10];
+};
+
+struct fuse_interrupt_in {
+ uint64_t unique;
+};
+
+struct fuse_bmap_in {
+ uint64_t block;
+ uint32_t blocksize;
+ uint32_t padding;
+};
+
+struct fuse_bmap_out {
+ uint64_t block;
+};
+
+struct fuse_ioctl_in {
+ uint64_t fh;
+ uint32_t flags;
+ uint32_t cmd;
+ uint64_t arg;
+ uint32_t in_size;
+ uint32_t out_size;
+};
+
+struct fuse_ioctl_iovec {
+ uint64_t base;
+ uint64_t len;
+};
+
+struct fuse_ioctl_out {
+ int32_t result;
+ uint32_t flags;
+ uint32_t in_iovs;
+ uint32_t out_iovs;
+};
+
+struct fuse_poll_in {
+ uint64_t fh;
+ uint64_t kh;
+ uint32_t flags;
+ uint32_t events;
+};
+
+struct fuse_poll_out {
+ uint32_t revents;
+ uint32_t padding;
+};
+
+struct fuse_notify_poll_wakeup_out {
+ uint64_t kh;
+};
+
+struct fuse_fallocate_in {
+ uint64_t fh;
+ uint64_t offset;
+ uint64_t length;
+ uint32_t mode;
+ uint32_t padding;
+};
+
+/**
+ * FUSE request unique ID flag
+ *
+ * Indicates whether this is a resend request. The receiver should handle this
+ * request accordingly.
+ */
+#define FUSE_UNIQUE_RESEND (1ULL << 63)
+
+struct fuse_in_header {
+ uint32_t len;
+ uint32_t opcode;
+ uint64_t unique;
+ uint64_t nodeid;
+ uint32_t uid;
+ uint32_t gid;
+ uint32_t pid;
+ uint16_t total_extlen; /* length of extensions in 8byte units */
+ uint16_t padding;
+};
+
+struct fuse_out_header {
+ uint32_t len;
+ int32_t error;
+ uint64_t unique;
+};
+
+struct fuse_dirent {
+ uint64_t ino;
+ uint64_t off;
+ uint32_t namelen;
+ uint32_t type;
+ char name[];
+};
+
+/* Align variable length records to 64bit boundary */
+#define FUSE_REC_ALIGN(x) \
+ (((x) + sizeof(uint64_t) - 1) & ~(sizeof(uint64_t) - 1))
+
+#define FUSE_NAME_OFFSET offsetof(struct fuse_dirent, name)
+#define FUSE_DIRENT_ALIGN(x) FUSE_REC_ALIGN(x)
+#define FUSE_DIRENT_SIZE(d) \
+ FUSE_DIRENT_ALIGN(FUSE_NAME_OFFSET + (d)->namelen)
+
+struct fuse_direntplus {
+ struct fuse_entry_out entry_out;
+ struct fuse_dirent dirent;
+};
+
+#define FUSE_NAME_OFFSET_DIRENTPLUS \
+ offsetof(struct fuse_direntplus, dirent.name)
+#define FUSE_DIRENTPLUS_SIZE(d) \
+ FUSE_DIRENT_ALIGN(FUSE_NAME_OFFSET_DIRENTPLUS + (d)->dirent.namelen)
+
+struct fuse_notify_inval_inode_out {
+ uint64_t ino;
+ int64_t off;
+ int64_t len;
+};
+
+struct fuse_notify_inval_entry_out {
+ uint64_t parent;
+ uint32_t namelen;
+ uint32_t flags;
+};
+
+struct fuse_notify_delete_out {
+ uint64_t parent;
+ uint64_t child;
+ uint32_t namelen;
+ uint32_t padding;
+};
+
+struct fuse_notify_store_out {
+ uint64_t nodeid;
+ uint64_t offset;
+ uint32_t size;
+ uint32_t padding;
+};
+
+struct fuse_notify_retrieve_out {
+ uint64_t notify_unique;
+ uint64_t nodeid;
+ uint64_t offset;
+ uint32_t size;
+ uint32_t padding;
+};
+
+/* Matches the size of fuse_write_in */
+struct fuse_notify_retrieve_in {
+ uint64_t dummy1;
+ uint64_t offset;
+ uint32_t size;
+ uint32_t dummy2;
+ uint64_t dummy3;
+ uint64_t dummy4;
+};
+
+struct fuse_backing_map {
+ int32_t fd;
+ uint32_t flags;
+ uint64_t padding;
+};
+
+/* Device ioctls: */
+#define FUSE_DEV_IOC_MAGIC 229
+#define FUSE_DEV_IOC_CLONE _IOR(FUSE_DEV_IOC_MAGIC, 0, uint32_t)
+#define FUSE_DEV_IOC_BACKING_OPEN _IOW(FUSE_DEV_IOC_MAGIC, 1, \
+ struct fuse_backing_map)
+#define FUSE_DEV_IOC_BACKING_CLOSE _IOW(FUSE_DEV_IOC_MAGIC, 2, uint32_t)
+
+struct fuse_lseek_in {
+ uint64_t fh;
+ uint64_t offset;
+ uint32_t whence;
+ uint32_t padding;
+};
+
+struct fuse_lseek_out {
+ uint64_t offset;
+};
+
+struct fuse_copy_file_range_in {
+ uint64_t fh_in;
+ uint64_t off_in;
+ uint64_t nodeid_out;
+ uint64_t fh_out;
+ uint64_t off_out;
+ uint64_t len;
+ uint64_t flags;
+};
+
+#define FUSE_SETUPMAPPING_FLAG_WRITE (1ull << 0)
+#define FUSE_SETUPMAPPING_FLAG_READ (1ull << 1)
+struct fuse_setupmapping_in {
+ /* An already open handle */
+ uint64_t fh;
+ /* Offset into the file to start the mapping */
+ uint64_t foffset;
+ /* Length of mapping required */
+ uint64_t len;
+ /* Flags, FUSE_SETUPMAPPING_FLAG_* */
+ uint64_t flags;
+ /* Offset in Memory Window */
+ uint64_t moffset;
+};
+
+struct fuse_removemapping_in {
+ /* number of fuse_removemapping_one follows */
+ uint32_t count;
+};
+
+struct fuse_removemapping_one {
+ /* Offset into the dax window start the unmapping */
+ uint64_t moffset;
+ /* Length of mapping required */
+ uint64_t len;
+};
+
+#define FUSE_REMOVEMAPPING_MAX_ENTRY \
+ (PAGE_SIZE / sizeof(struct fuse_removemapping_one))
+
+struct fuse_syncfs_in {
+ uint64_t padding;
+};
+
+/*
+ * For each security context, send fuse_secctx with size of security context
+ * fuse_secctx will be followed by security context name and this in turn
+ * will be followed by actual context label.
+ * fuse_secctx, name, context
+ */
+struct fuse_secctx {
+ uint32_t size;
+ uint32_t padding;
+};
+
+/*
+ * Contains the information about how many fuse_secctx structures are being
+ * sent and what's the total size of all security contexts (including
+ * size of fuse_secctx_header).
+ *
+ */
+struct fuse_secctx_header {
+ uint32_t size;
+ uint32_t nr_secctx;
+};
+
+/**
+ * struct fuse_ext_header - extension header
+ * @size: total size of this extension including this header
+ * @type: type of extension
+ *
+ * This is made compatible with fuse_secctx_header by using type values >
+ * FUSE_MAX_NR_SECCTX
+ */
+struct fuse_ext_header {
+ uint32_t size;
+ uint32_t type;
+};
+
+/**
+ * struct fuse_supp_groups - Supplementary group extension
+ * @nr_groups: number of supplementary groups
+ * @groups: flexible array of group IDs
+ */
+struct fuse_supp_groups {
+ uint32_t nr_groups;
+ uint32_t groups[];
+};
+
+#endif /* _LINUX_FUSE_H */
diff --git a/support/file_contents.h b/support/file_contents.h
new file mode 100644
index 0000000..9b2d750
--- /dev/null
+++ b/support/file_contents.h
@@ -0,0 +1,63 @@
+/* Functionality for checking file contents.
+ Copyright (C) 2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+#ifndef SUPPORT_FILE_CONTENTS_H
+#define SUPPORT_FILE_CONTENTS_H
+
+#include <support/check.h>
+#include <stdio.h>
+
+__BEGIN_DECLS
+
+/* Check that an already-open file has exactly the given bytes,
+ starting at the current location in the file. The file position
+ indicator is updated to point after the bytes compared. Return 0
+ if equal, 1 otherwise or on read error. */
+int support_compare_file_bytes (FILE *fp, const char *contents, size_t length);
+
+/* Check that an already-open file has exactly the given string as
+ contents, starting at the current offset. The file position
+ indicator is updated to point after the bytes compared. Return 0
+ if equal, 1 otherwise or on read error. */
+int support_compare_file_string (FILE *fp, const char *contents);
+
+/* Check that a not-currently-open file has exactly the given bytes.
+ Return 0 if equal, 1 otherwise or on read error. */
+int support_open_and_compare_file_bytes (const char *file,
+ const char *contents,
+ size_t length);
+
+/* Check that a not-currently-open file has exactly the given string
+ as contents, starting at the current offset. Return 0 if equal, 1
+ otherwise or on read error. */
+int support_open_and_compare_file_string (const char *file,
+ const char *contents);
+
+/* Compare bytes read from an open file with the given string. The
+ file position indicator is updated to point after the bytes
+ compared. */
+#define TEST_COMPARE_FILE_STRING(FP, CONTENTS) \
+ TEST_COMPARE (support_compare_file_string (FP, CONTENTS), 0)
+
+/* Read a file and compare bytes read from it with the given string. */
+#define TEST_OPEN_AND_COMPARE_FILE_STRING(FILE, CONTENTS) \
+ TEST_COMPARE (support_open_and_compare_file_string (FILE, CONTENTS), 0)
+
+__END_DECLS
+
+#endif /* SUPPORT_FILE_CONTENTS_H */
diff --git a/support/fuse.h b/support/fuse.h
new file mode 100644
index 0000000..1c862be
--- /dev/null
+++ b/support/fuse.h
@@ -0,0 +1,217 @@
+/* Facilities for FUSE-backed file system tests.
+ Copyright (C) 2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+/* To run FUSE tests under valgrind, pass the
+ --sim-hints=fuse-compatible option to valgrind. This option tells
+ valgrind that additional system calls effectively call back into
+ the current program. */
+
+#ifndef SUPPORT_FUSE_H
+#define SUPPORT_FUSE_H
+
+#include <stdbool.h>
+#include <stddef.h>
+#include <stdint.h>
+#include <stdlib.h>
+
+#include <support/bundled/linux/include/uapi/linux/fuse.h>
+
+/* This function must be called furst, before support_fuse_mount, to
+ prepare unprivileged mounting. */
+void support_fuse_init (void);
+
+/* This function can be called instead of support_fuse_init. It does
+ not use mount and user namespaces, so it requires root privileges,
+ and cleanup after testing may be incomplete. This is intended only
+ for test development. */
+void support_fuse_init_no_namespace (void);
+
+/* Opaque type for tracking FUSE mount state. */
+struct support_fuse;
+
+/* This function disables a mount point created using
+ support_fuse_mount. */
+void support_fuse_unmount (struct support_fuse *) __nonnull ((1));
+
+/* This function is called on a separate thread after calling
+ support_fuse_mount. F is the mount state, and CLOSURE the argument
+ that was passed to support_fuse_mount. The callback function is
+ expected to call support_fuse_next to read packets from the kernel
+ and handle them according to the test's need. */
+typedef void (*support_fuse_callback) (struct support_fuse *f, void *closure);
+
+/* This function creates a new mount point, implemented by CALLBACK.
+ CLOSURE is passed to CALLBACK as the second argument. */
+struct support_fuse *support_fuse_mount (support_fuse_callback callback,
+ void *closure)
+ __nonnull ((1)) __attr_dealloc (support_fuse_unmount, 1);
+
+/* This function returns the path to the mount point for F. The
+ returned string is valid until support_fuse_unmount (F) is called. */
+const char * support_fuse_mountpoint (struct support_fuse *f) __nonnull ((1));
+
+
+/* Renders the OPCODE as a string (FUSE_* constant. The caller must
+ free the returned string. */
+char * support_fuse_opcode (uint32_t opcode) __attr_dealloc_free;
+
+/* Use to provide a checked cast facility. Use the
+ support_fuse_in_cast macro below. */
+void *support_fuse_cast_internal (struct fuse_in_header *, uint32_t)
+ __nonnull ((1));
+void *support_fuse_cast_name_internal (struct fuse_in_header *, uint32_t,
+ size_t skip, char **name)
+ __nonnull ((1));
+
+/* The macro expansion support_fuse_in_cast (P, TYPE) casts the
+ pointer INH to the appropriate type corresponding to the FUSE_TYPE
+ opcode. It fails (terminates the process) if INH->opcode does not
+ match FUSE_TYPE. The type of the returned pointer matches that of
+ the FUSE_* constant.
+
+ Maintenance note: Adding support for additional struct fuse_*_in
+ types is generally easy, except when there is trailing data after
+ the struct (see below for support_fuse_cast_name, for example), and
+ the kernel has changed struct sizes over time. This has happened
+ recently with struct fuse_setxattr_in, and would require special
+ handling if implemented. */
+#define support_fuse_payload_type_INIT struct fuse_init_in
+#define support_fuse_payload_type_LOOKUP char
+#define support_fuse_payload_type_OPEN struct fuse_open_in
+#define support_fuse_payload_type_READ struct fuse_read_in
+#define support_fuse_payload_type_SETATTR struct fuse_setattr_in
+#define support_fuse_payload_type_WRITE struct fuse_write_in
+#define support_fuse_cast(typ, inh) \
+ ((support_fuse_payload_type_##typ *) \
+ support_fuse_cast_internal ((inh), FUSE_##typ))
+
+/* Same as support_fuse_cast, but also writes the passed name to *NAMEP. */
+#define support_fuse_payload_name_type_CREATE struct fuse_create_in
+#define support_fuse_payload_name_type_MKDIR struct fuse_mkdir_in
+#define support_fuse_cast_name(typ, inh, namep) \
+ ((support_fuse_payload_name_type_##typ *) \
+ support_fuse_cast_name_internal \
+ ((inh), FUSE_##typ, sizeof (support_fuse_payload_name_type_##typ), \
+ (namep)))
+
+/* This function should be called from the callback function. It
+ returns NULL if the mount point has been unmounted. The result can
+ be cast using support_fuse_in_cast. The pointer is invalidated
+ with the next call to support_fuse_next.
+
+ Typical use involves handling some basics using the
+ support_fuse_handle_* building blocks, following by a switch
+ statement on the result member of the returned struct, to implement
+ what a particular test needs. Casts to payload data should be made
+ using support_fuse_in_cast.
+
+ By default, FUSE_FORGET responses are filtered. See
+ support_fuse_filter_forget for turning that off. */
+struct fuse_in_header *support_fuse_next (struct support_fuse *f)
+ __nonnull ((1));
+
+/* This function can be called from a callback function to handle
+ basic aspects of directories (OPENDIR, GETATTR, RELEASEDIR).
+ inh->nodeid is used as the inode number for the directory. This
+ function must be called after support_fuse_next. */
+bool support_fuse_handle_directory (struct support_fuse *f) __nonnull ((1));
+
+/* This function can be called from a callback function to handle
+ access to the mount point itself, after call support_fuse_next. */
+bool support_fuse_handle_mountpoint (struct support_fuse *f) __nonnull ((1));
+
+/* If FILTER_ENABLED, future support_fuse_next calls will not return
+ FUSE_FORGET events (and simply discared them, as they require no
+ reply). If !FILTER_ENABLED, the callback needs to handle
+ FUSE_FORGET events and call support_fuse_no_reply. */
+void support_fuse_filter_forget (struct support_fuse *f, bool filter_enabled)
+ __nonnull ((1));
+
+/* This function should be called from the callback function after
+ support_fuse_next returned a non-null pointer. It sends out a
+ response packet on the FUSE device with the supplied payload data. */
+void support_fuse_reply (struct support_fuse *f,
+ const void *payload, size_t payload_size)
+ __nonnull ((1)) __attr_access ((__read_only__, 2, 3));
+
+/* This function should be called from the callback function. It
+ replies to a request with an error indicator. ERROR must be positive. */
+void support_fuse_reply_error (struct support_fuse *f, uint32_t error)
+ __nonnull ((1));
+
+/* This function should be called from the callback function. It
+ sends out an empty (but success-indicating) reply packet. */
+void support_fuse_reply_empty (struct support_fuse *f) __nonnull ((1));
+
+/* Do not send a reply. Only to be used after a support_fuse_next
+ call that returned a FUSE_FORGET event. */
+void support_fuse_no_reply (struct support_fuse *f) __nonnull ((1));
+
+/* Specific reponse preparation functions. The returned object can be
+ updated as needed. If a NODEID argument is present, it will be
+ used to set the inode and FUSE nodeid fields. Without such an
+ argument, it is initialized from the current request (if the reply
+ requires this field). This function must be called after
+ support_fuse_next. The actual response must be sent using
+ support_fuse_reply_prepared (or a support_fuse_reply_error call can
+ be used to cancel the response). */
+struct fuse_entry_out *support_fuse_prepare_entry (struct support_fuse *f,
+ uint64_t nodeid)
+ __nonnull ((1));
+struct fuse_attr_out *support_fuse_prepare_attr (struct support_fuse *f)
+ __nonnull ((1));
+
+/* Similar to the other support_fuse_prepare_* functions, but it
+ prepares for two response packets. They can be updated through the
+ pointers written to *OUT_ENTRY and *OUT_OPEN prior to calling
+ support_fuse_reply_prepared. */
+void support_fuse_prepare_create (struct support_fuse *f,
+ uint64_t nodeid,
+ struct fuse_entry_out **out_entry,
+ struct fuse_open_out **out_open)
+ __nonnull ((1, 3, 4));
+
+
+/* Prepare sending a directory stream. Must be called after
+ support_fuse_next and before support_fuse_dirstream_add. */
+struct support_fuse_dirstream;
+struct support_fuse_dirstream *support_fuse_prepare_readdir (struct
+ support_fuse *f);
+
+/* Adds directory using D_INO, D_OFF, D_TYPE, D_NAME to the directory
+ stream D. Must be called after support_fuse_prepare_readdir.
+
+ D_OFF is the offset of the next directory entry, not the current
+ one. The first entry has offset zero. The first requested offset
+ can be obtained from the READ payload (struct fuse_read_in) prior
+ to calling this function.
+
+ Returns true if the entry could be added to the buffer, or false if
+ there was insufficient room. Sending the buffer is delayed until
+ support_fuse_reply_prepared is called. */
+bool support_fuse_dirstream_add (struct support_fuse_dirstream *d,
+ uint64_t d_ino, uint64_t d_off,
+ uint32_t d_type,
+ const char *d_name);
+
+/* Send a prepared response. Must be called after one of the
+ support_fuse_prepare_* functions and before the next
+ support_fuse_next call. */
+void support_fuse_reply_prepared (struct support_fuse *f) __nonnull ((1));
+
+#endif /* SUPPORT_FUSE_H */
diff --git a/support/readdir.h b/support/readdir.h
new file mode 100644
index 0000000..7d7c765
--- /dev/null
+++ b/support/readdir.h
@@ -0,0 +1,85 @@
+/* Type-generic wrapper for readdir functions.
+ Copyright (C) 2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+#ifndef SUPPORT_READDIR_H
+#define SUPPORT_READDIR_H
+
+#include <dirent.h>
+#include <stdbool.h>
+#include <stdint.h>
+
+__BEGIN_DECLS
+
+/* Definition independent of _FILE_OFFSET_BITS. */
+struct support_dirent
+{
+ uint64_t d_ino;
+ uint64_t d_off; /* 0 if d_off is not supported. */
+ uint32_t d_type;
+ char *d_name;
+};
+
+/* Operation to be performed by support_readdir below. */
+enum support_readdir_op
+ {
+ SUPPORT_READDIR,
+ SUPPORT_READDIR64,
+ SUPPORT_READDIR_R,
+ SUPPORT_READDIR64_R,
+ SUPPORT_READDIR64_COMPAT,
+ SUPPORT_READDIR64_R_COMPAT,
+ };
+
+/* Returns the last supported function. May exclude
+ SUPPORT_READDIR64_R_COMPAT if not implemented. */
+enum support_readdir_op support_readdir_op_last (void);
+
+/* Returns the name of the function that corresponds to the OP constant. */
+const char *support_readdir_function (enum support_readdir_op op);
+
+/* Returns the d_ino field width for OP, in bits. */
+unsigned int support_readdir_inode_width (enum support_readdir_op op);
+
+/* Returns the d_off field width for OP, in bits. Zero if not present. */
+unsigned int support_readdir_offset_width (enum support_readdir_op op);
+
+/* Returns true if OP is an _r variant with name length restrictions. */
+bool support_readdir_r_variant (enum support_readdir_op op);
+
+/* First, free E->d_name and set the field to NULL. Then call the
+ readdir variant as specified by OP. If successfully, copy fields
+ to E, make a copy of the entry name using strdup, and write its
+ addres sto E->d_name.
+
+ Return true if an entry was read, or false if the end of the
+ directory stream was reached. Terminates the process upon error.
+ The caller is expected to free E->d_name if the function is not
+ called again for this E.
+
+ Note that this function assumes that E->d_name has been initialized
+ to NULL or has been allocated by a previous call to this function. */
+bool support_readdir (DIR *stream, enum support_readdir_op op,
+ struct support_dirent *e) __nonnull ((1, 3));
+
+/* Checks that the readdir operation OP fails with errno value EXPECTED. */
+void support_readdir_expect_error (DIR *stream, enum support_readdir_op op,
+ int expected) __nonnull ((1));
+
+__END_DECLS
+
+#endif /* SUPPORT_READDIR_H */
diff --git a/support/support-xfstat.c b/support/support_check_stat_fd.c
index ab4b01c..4c12adf 100644
--- a/support/support-xfstat.c
+++ b/support/support_check_stat_fd.c
@@ -1,5 +1,5 @@
-/* fstat64 with error checking.
- Copyright (C) 2017-2024 Free Software Foundation, Inc.
+/* Error checking for descriptor-based stat functions.
+ Copyright (C) 2024 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -18,11 +18,10 @@
#include <support/check.h>
#include <support/xunistd.h>
-#include <sys/stat.h>
void
-xfstat (int fd, struct stat64 *result)
+support_check_stat_fd (const char *name, int fd, int result)
{
- if (fstat64 (fd, result) != 0)
- FAIL_EXIT1 ("fstat64 (%d): %m", fd);
+ if (result != 0)
+ FAIL_EXIT1 ("%s (%d): %m", name, fd);
}
diff --git a/support/xlstat.c b/support/support_check_stat_path.c
index 87df988..3cf72af 100644
--- a/support/xlstat.c
+++ b/support/support_check_stat_path.c
@@ -1,4 +1,4 @@
-/* lstat64 with error checking.
+/* Error checking for path-based stat functions.
Copyright (C) 2017-2024 Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -18,11 +18,10 @@
#include <support/check.h>
#include <support/xunistd.h>
-#include <sys/stat.h>
void
-xlstat (const char *path, struct stat64 *result)
+support_check_stat_path (const char *name, const char *path, int result)
{
- if (lstat64 (path, result) != 0)
- FAIL_EXIT1 ("lstat64 (\"%s\"): %m", path);
+ if (result != 0)
+ FAIL_EXIT1 ("%s (\"%s\"): %m", name, path);
}
diff --git a/elf/dl-symaddr.c b/support/support_compare_file_bytes.c
index b0299fd..e261e1d 100644
--- a/elf/dl-symaddr.c
+++ b/support/support_compare_file_bytes.c
@@ -1,5 +1,5 @@
-/* Get the symbol address. Generic version.
- Copyright (C) 1999-2024 Free Software Foundation, Inc.
+/* Compare bytes from an open file.
+ Copyright (C) 2024 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -16,18 +16,27 @@
License along with the GNU C Library; if not, see
<https://www.gnu.org/licenses/>. */
-#include <ldsodefs.h>
-#include <dl-fptr.h>
+#include <stdio.h>
-void *
-_dl_symbol_address (struct link_map *map, const ElfW(Sym) *ref)
-{
- ElfW(Addr) value = SYMBOL_ADDRESS (map, ref, false);
+#include <support/file_contents.h>
+
+/* Check that an already-open file has exactly the given bytes,
+ starting at the current offset. */
- /* Return the pointer to function descriptor. */
- if (ELFW(ST_TYPE) (ref->st_info) == STT_FUNC)
- return (void *) _dl_make_fptr (map, ref, value);
- else
- return (void *) value;
+int
+support_compare_file_bytes (FILE *fp, const char *contents, size_t length)
+{
+ int c;
+ while (length > 0)
+ {
+ c = getc (fp);
+ if (c == EOF || (unsigned char) c != (unsigned char) contents[0])
+ return 1;
+ contents++;
+ length--;
+ }
+ c = getc (fp);
+ if (c != EOF || ferror (fp))
+ return 1;
+ return 0;
}
-rtld_hidden_def (_dl_symbol_address)
diff --git a/support/support_compare_file_string.c b/support/support_compare_file_string.c
new file mode 100644
index 0000000..04513c3
--- /dev/null
+++ b/support/support_compare_file_string.c
@@ -0,0 +1,28 @@
+/* Compare string from an open file.
+ Copyright (C) 2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+#include <stdio.h>
+#include <string.h>
+
+#include <support/file_contents.h>
+
+int
+support_compare_file_string (FILE *fp, const char *contents)
+{
+ return support_compare_file_bytes (fp, contents, strlen (contents));
+}
diff --git a/support/support_format_addrinfo.c b/support/support_format_addrinfo.c
index cbc7291..77f4db3 100644
--- a/support/support_format_addrinfo.c
+++ b/support/support_format_addrinfo.c
@@ -22,6 +22,7 @@
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
+#include <string.h>
#include <support/support.h>
#include <support/xmemstream.h>
diff --git a/support/support_fuse.c b/support/support_fuse.c
new file mode 100644
index 0000000..f6c063b
--- /dev/null
+++ b/support/support_fuse.c
@@ -0,0 +1,706 @@
+/* Facilities for FUSE-backed file system tests.
+ Copyright (C) 2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+#include <support/fuse.h>
+
+#include <dirent.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <string.h>
+#include <sys/sysmacros.h>
+#include <sys/uio.h>
+#include <unistd.h>
+
+#include <array_length.h>
+#include <support/check.h>
+#include <support/namespace.h>
+#include <support/support.h>
+#include <support/test-driver.h>
+#include <support/xdirent.h>
+#include <support/xthread.h>
+#include <support/xunistd.h>
+
+#ifdef __linux__
+# include <sys/mount.h>
+#else
+/* Fallback definitions that mark the test as unsupported. */
+# define mount(...) ({ FAIL_UNSUPPORTED ("mount"); -1; })
+# define umount(...) ({ FAIL_UNSUPPORTED ("mount"); -1; })
+#endif
+
+struct support_fuse
+{
+ char *mountpoint;
+ void *buffer_start; /* Begin of allocation. */
+ void *buffer_next; /* Next read position. */
+ void *buffer_limit; /* End of buffered data. */
+ void *buffer_end; /* End of allocation. */
+ struct fuse_in_header *inh; /* Most recent request (support_fuse_next). */
+ union /* Space for prepared responses. */
+ {
+ struct fuse_attr_out attr;
+ struct fuse_entry_out entry;
+ struct
+ {
+ struct fuse_entry_out entry;
+ struct fuse_open_out open;
+ } create;
+ } prepared;
+ void *prepared_pointer; /* NULL if inactive. */
+ size_t prepared_size; /* 0 if inactive. */
+
+ /* Used for preparing readdir responses. Already used-up area for
+ the current request is counted by prepared_size. */
+ void *readdir_buffer;
+ size_t readdir_buffer_size;
+
+ pthread_t handler; /* Thread handling requests. */
+ uid_t uid; /* Cached value for the current process. */
+ uid_t gid; /* Cached value for the current process. */
+ int fd; /* FUSE file descriptor. */
+ int connection; /* Entry under /sys/fs/fuse/connections. */
+ bool filter_forget; /* Controls FUSE_FORGET event dropping. */
+ _Atomic bool disconnected;
+};
+
+struct fuse_thread_wrapper_args
+{
+ struct support_fuse *f;
+ support_fuse_callback callback;
+ void *closure;
+};
+
+/* Set by support_fuse_init to indicate that support_fuse_mount may be
+ called. */
+static bool support_fuse_init_called;
+
+/* Allocate the read buffer in F with SIZE bytes capacity. Does not
+ free the previously allocated buffer. */
+static void support_fuse_allocate (struct support_fuse *f, size_t size)
+ __nonnull ((1));
+
+/* Internal mkdtemp replacement */
+static char * support_fuse_mkdir (const char *prefix) __nonnull ((1));
+
+/* Low-level allocation function for support_fuse_mount. Does not
+ perform the mount. */
+static struct support_fuse *support_fuse_open (void);
+
+/* Thread wrapper function for use with pthread_create. Uses struct
+ fuse_thread_wrapper_args. */
+static void *support_fuse_thread_wrapper (void *closure) __nonnull ((1));
+
+/* Initial step before preparing a reply. SIZE must be the size of
+ the F->prepared member that is going to be used. */
+static void support_fuse_prepare_1 (struct support_fuse *f, size_t size);
+
+/* Similar to support_fuse_reply_error, but not check that ERROR is
+ not zero. */
+static void support_fuse_reply_error_1 (struct support_fuse *f,
+ uint32_t error) __nonnull ((1));
+
+/* Path to the directory containing mount points. Initialized by an
+ ELF constructor. All mountpoints are collected there so that the
+ test wrapper can clean them up without keeping track of them
+ individually. */
+static char *support_fuse_mountpoints;
+
+/* PID of the process that should clean up the mount points in the ELF
+ destructor. */
+static pid_t support_fuse_cleanup_pid;
+
+static void
+support_fuse_allocate (struct support_fuse *f, size_t size)
+{
+ f->buffer_start = xmalloc (size);
+ f->buffer_end = f->buffer_start + size;
+ f->buffer_limit = f->buffer_start;
+ f->buffer_next = f->buffer_limit;
+}
+
+void
+support_fuse_filter_forget (struct support_fuse *f, bool filter)
+{
+ f->filter_forget = filter;
+}
+
+void *
+support_fuse_cast_internal (struct fuse_in_header *p, uint32_t expected)
+{
+ if (expected != p->opcode
+ && !(expected == FUSE_READ && p->opcode == FUSE_READDIR))
+ {
+ char *expected1 = support_fuse_opcode (expected);
+ char *actual = support_fuse_opcode (p->opcode);
+ FAIL_EXIT1 ("attempt to cast %s to %s", actual, expected1);
+ }
+ return p + 1;
+}
+
+void *
+support_fuse_cast_name_internal (struct fuse_in_header *p, uint32_t expected,
+ size_t skip, char **name)
+{
+ char *result = support_fuse_cast_internal (p, expected);
+ *name = result + skip;
+ return result;
+}
+
+bool
+support_fuse_dirstream_add (struct support_fuse_dirstream *d,
+ uint64_t d_ino, uint64_t d_off,
+ uint32_t d_type, const char *d_name)
+{
+ struct support_fuse *f = (struct support_fuse *) d;
+ size_t structlen = offsetof (struct fuse_dirent, name);
+ size_t namelen = strlen (d_name); /* No null termination. */
+ size_t required_size = FUSE_DIRENT_ALIGN (structlen + namelen);
+ if (f->readdir_buffer_size - f->prepared_size < required_size)
+ return false;
+ struct fuse_dirent entry =
+ {
+ .ino = d_ino,
+ .off = d_off,
+ .type = d_type,
+ .namelen = namelen,
+ };
+ memcpy (f->readdir_buffer + f->prepared_size, &entry, structlen);
+ /* Use strncpy to write padding and avoid passing uninitialized
+ bytes to the read system call. */
+ strncpy (f->readdir_buffer + f->prepared_size + structlen, d_name,
+ required_size - structlen);
+ f->prepared_size += required_size;
+ return true;
+}
+
+bool
+support_fuse_handle_directory (struct support_fuse *f)
+{
+ TEST_VERIFY (f->inh != NULL);
+ switch (f->inh->opcode)
+ {
+ case FUSE_OPENDIR:
+ {
+ struct fuse_open_out out =
+ {
+ };
+ support_fuse_reply (f, &out, sizeof (out));
+ }
+ return true;
+ case FUSE_RELEASEDIR:
+ support_fuse_reply_empty (f);
+ return true;
+ case FUSE_GETATTR:
+ {
+ struct fuse_attr_out *out = support_fuse_prepare_attr (f);
+ out->attr.mode = S_IFDIR | 0700;
+ support_fuse_reply_prepared (f);
+ }
+ return true;
+ default:
+ return false;
+ }
+}
+
+bool
+support_fuse_handle_mountpoint (struct support_fuse *f)
+{
+ TEST_VERIFY (f->inh != NULL);
+ /* 1 is the root node. */
+ if (f->inh->opcode == FUSE_GETATTR && f->inh->nodeid == 1)
+ return support_fuse_handle_directory (f);
+ return false;
+}
+
+void
+support_fuse_init (void)
+{
+ support_fuse_init_called = true;
+
+ support_become_root ();
+ if (!support_enter_mount_namespace ())
+ FAIL_UNSUPPORTED ("mount namespaces not supported");
+}
+
+void
+support_fuse_init_no_namespace (void)
+{
+ support_fuse_init_called = true;
+}
+
+static char *
+support_fuse_mkdir (const char *prefix)
+{
+ /* Do not use mkdtemp to avoid interfering with its tests. */
+ unsigned int counter = 1;
+ unsigned int pid = getpid ();
+ while (true)
+ {
+ char *path = xasprintf ("%s%u.%u/", prefix, pid, counter);
+ if (mkdir (path, 0700) == 0)
+ return path;
+ if (errno != EEXIST)
+ FAIL_EXIT1 ("mkdir (\"%s\"): %m", path);
+ free (path);
+ ++counter;
+ }
+}
+
+struct support_fuse *
+support_fuse_mount (support_fuse_callback callback, void *closure)
+{
+ TEST_VERIFY_EXIT (support_fuse_init_called);
+
+ /* Request at least minor version 12 because it changed struct sizes. */
+ enum { min_version = 12 };
+
+ struct support_fuse *f = support_fuse_open ();
+ char *mount_options
+ = xasprintf ("fd=%d,rootmode=040700,user_id=%u,group_id=%u",
+ f->fd, f->uid, f->gid);
+ if (mount ("fuse", f->mountpoint, "fuse.glibc",
+ MS_NOSUID|MS_NODEV, mount_options)
+ != 0)
+ FAIL_EXIT1 ("FUSE mount on %s: %m", f->mountpoint);
+ free (mount_options);
+
+ /* Retry with an older FUSE version. */
+ while (true)
+ {
+ struct fuse_in_header *inh = support_fuse_next (f);
+ struct fuse_init_in *init_in = support_fuse_cast (INIT, inh);
+ if (init_in->major < 7
+ || (init_in->major == 7 && init_in->minor < min_version))
+ FAIL_UNSUPPORTED ("kernel FUSE version is %u.%u, too old",
+ init_in->major, init_in->minor);
+ if (init_in->major > 7)
+ {
+ uint32_t major = 7;
+ support_fuse_reply (f, &major, sizeof (major));
+ continue;
+ }
+ TEST_VERIFY (init_in->flags & FUSE_DONT_MASK);
+ struct fuse_init_out out =
+ {
+ .major = 7,
+ .minor = min_version,
+ /* Request that the kernel does not apply umask. */
+ .flags = FUSE_DONT_MASK,
+ };
+ support_fuse_reply (f, &out, sizeof (out));
+
+ {
+ struct fuse_thread_wrapper_args args =
+ {
+ .f = f,
+ .callback = callback,
+ .closure = closure,
+ };
+ f->handler = xpthread_create (NULL,
+ support_fuse_thread_wrapper, &args);
+ struct stat64 st;
+ xstat64 (f->mountpoint, &st);
+ f->connection = minor (st.st_dev);
+ /* Got a reply from the thread, safe to deallocate args. */
+ }
+
+ return f;
+ }
+}
+
+const char *
+support_fuse_mountpoint (struct support_fuse *f)
+{
+ return f->mountpoint;
+}
+
+void
+support_fuse_no_reply (struct support_fuse *f)
+{
+ TEST_VERIFY (f->inh != NULL);
+ TEST_COMPARE (f->inh->opcode, FUSE_FORGET);
+ f->inh = NULL;
+}
+
+char *
+support_fuse_opcode (uint32_t op)
+{
+ const char *result;
+ switch (op)
+ {
+#define X(n) case n: result = #n; break
+ X(FUSE_LOOKUP);
+ X(FUSE_FORGET);
+ X(FUSE_GETATTR);
+ X(FUSE_SETATTR);
+ X(FUSE_READLINK);
+ X(FUSE_SYMLINK);
+ X(FUSE_MKNOD);
+ X(FUSE_MKDIR);
+ X(FUSE_UNLINK);
+ X(FUSE_RMDIR);
+ X(FUSE_RENAME);
+ X(FUSE_LINK);
+ X(FUSE_OPEN);
+ X(FUSE_READ);
+ X(FUSE_WRITE);
+ X(FUSE_STATFS);
+ X(FUSE_RELEASE);
+ X(FUSE_FSYNC);
+ X(FUSE_SETXATTR);
+ X(FUSE_GETXATTR);
+ X(FUSE_LISTXATTR);
+ X(FUSE_REMOVEXATTR);
+ X(FUSE_FLUSH);
+ X(FUSE_INIT);
+ X(FUSE_OPENDIR);
+ X(FUSE_READDIR);
+ X(FUSE_RELEASEDIR);
+ X(FUSE_FSYNCDIR);
+ X(FUSE_GETLK);
+ X(FUSE_SETLK);
+ X(FUSE_SETLKW);
+ X(FUSE_ACCESS);
+ X(FUSE_CREATE);
+ X(FUSE_INTERRUPT);
+ X(FUSE_BMAP);
+ X(FUSE_DESTROY);
+ X(FUSE_IOCTL);
+ X(FUSE_POLL);
+ X(FUSE_NOTIFY_REPLY);
+ X(FUSE_BATCH_FORGET);
+ X(FUSE_FALLOCATE);
+ X(FUSE_READDIRPLUS);
+ X(FUSE_RENAME2);
+ X(FUSE_LSEEK);
+ X(FUSE_COPY_FILE_RANGE);
+ X(FUSE_SETUPMAPPING);
+ X(FUSE_REMOVEMAPPING);
+ X(FUSE_SYNCFS);
+ X(FUSE_TMPFILE);
+ X(FUSE_STATX);
+#undef X
+ default:
+ return xasprintf ("FUSE_unknown_%u", op);
+ }
+ return xstrdup (result);
+}
+
+static struct support_fuse *
+support_fuse_open (void)
+{
+ struct support_fuse *result = xmalloc (sizeof (*result));
+ result->mountpoint = support_fuse_mkdir (support_fuse_mountpoints);
+ result->inh = NULL;
+ result->prepared_pointer = NULL;
+ result->prepared_size = 0;
+ result->readdir_buffer = NULL;
+ result->readdir_buffer_size = 0;
+ result->uid = getuid ();
+ result->gid = getgid ();
+ result->fd = open ("/dev/fuse", O_RDWR, 0);
+ if (result->fd < 0)
+ {
+ if (errno == ENOENT || errno == ENODEV || errno == EPERM
+ || errno == EACCES)
+ FAIL_UNSUPPORTED ("cannot open /dev/fuse: %m");
+ else
+ FAIL_EXIT1 ("cannot open /dev/fuse: %m");
+ }
+ result->connection = -1;
+ result->filter_forget = true;
+ result->disconnected = false;
+ support_fuse_allocate (result, FUSE_MIN_READ_BUFFER);
+ return result;
+}
+
+static void
+support_fuse_prepare_1 (struct support_fuse *f, size_t size)
+{
+ TEST_VERIFY (f->prepared_pointer == NULL);
+ f->prepared_size = size;
+ memset (&f->prepared, 0, size);
+ f->prepared_pointer = &f->prepared;
+}
+
+struct fuse_attr_out *
+support_fuse_prepare_attr (struct support_fuse *f)
+{
+ support_fuse_prepare_1 (f, sizeof (f->prepared.attr));
+ f->prepared.attr.attr.uid = f->uid;
+ f->prepared.attr.attr.gid = f->gid;
+ f->prepared.attr.attr.ino = f->inh->nodeid;
+ return &f->prepared.attr;
+}
+
+void
+support_fuse_prepare_create (struct support_fuse *f,
+ uint64_t nodeid,
+ struct fuse_entry_out **out_entry,
+ struct fuse_open_out **out_open)
+{
+ support_fuse_prepare_1 (f, sizeof (f->prepared.create));
+ f->prepared.create.entry.nodeid = nodeid;
+ f->prepared.create.entry.attr.uid = f->uid;
+ f->prepared.create.entry.attr.gid = f->gid;
+ f->prepared.create.entry.attr.ino = nodeid;
+ *out_entry = &f->prepared.create.entry;
+ *out_open = &f->prepared.create.open;
+}
+
+struct fuse_entry_out *
+support_fuse_prepare_entry (struct support_fuse *f, uint64_t nodeid)
+{
+ support_fuse_prepare_1 (f, sizeof (f->prepared.entry));
+ f->prepared.entry.nodeid = nodeid;
+ f->prepared.entry.attr.uid = f->uid;
+ f->prepared.entry.attr.gid = f->gid;
+ f->prepared.entry.attr.ino = nodeid;
+ return &f->prepared.entry;
+}
+
+struct support_fuse_dirstream *
+support_fuse_prepare_readdir (struct support_fuse *f)
+{
+ support_fuse_prepare_1 (f, 0);
+ struct fuse_read_in *p = support_fuse_cast (READ, f->inh);
+ if (p->size > f->readdir_buffer_size)
+ {
+ free (f->readdir_buffer);
+ f->readdir_buffer = xmalloc (p->size);
+ f->readdir_buffer_size = p->size;
+ }
+ f->prepared_pointer = f->readdir_buffer;
+ return (struct support_fuse_dirstream *) f;
+}
+
+struct fuse_in_header *
+support_fuse_next (struct support_fuse *f)
+{
+ TEST_VERIFY (f->inh == NULL);
+ while (true)
+ {
+ if (f->buffer_next < f->buffer_limit)
+ {
+ f->inh = f->buffer_next;
+ f->buffer_next = (void *) f->buffer_next + f->inh->len;
+ /* Suppress FUSE_FORGET responses if requested. */
+ if (f->filter_forget && f->inh->opcode == FUSE_FORGET)
+ {
+ f->inh = NULL;
+ continue;
+ }
+ return f->inh;
+ }
+ ssize_t ret = read (f->fd, f->buffer_start,
+ f->buffer_end - f->buffer_start);
+ if (ret == 0)
+ FAIL_EXIT (1, "unexpected EOF on FUSE device");
+ if (ret < 0 && errno == EINVAL)
+ {
+ /* Increase buffer size. */
+ size_t new_size = 2 * (size_t) (f->buffer_end - f->buffer_start);
+ free (f->buffer_start);
+ support_fuse_allocate (f, new_size);
+ continue;
+ }
+ if (ret < 0)
+ {
+ if (f->disconnected)
+ /* Unmount detected. */
+ return NULL;
+ FAIL_EXIT1 ("read error on FUSE device: %m");
+ }
+ /* Read was successful, make [next, limit) the active buffer area. */
+ f->buffer_next = f->buffer_start;
+ f->buffer_limit = (void *) f->buffer_start + ret;
+ }
+}
+
+void
+support_fuse_reply (struct support_fuse *f,
+ const void *payload, size_t payload_size)
+{
+ TEST_VERIFY_EXIT (f->inh != NULL);
+ TEST_VERIFY (f->prepared_pointer == NULL);
+ struct fuse_out_header outh =
+ {
+ .len = sizeof (outh) + payload_size,
+ .unique = f->inh->unique,
+ };
+ struct iovec iov[] =
+ {
+ { &outh, sizeof (outh) },
+ { (void *) payload, payload_size },
+ };
+ ssize_t ret = writev (f->fd, iov, array_length (iov));
+ if (ret < 0)
+ {
+ if (!f->disconnected)
+ /* Some kernels produce write errors upon disconnect. */
+ FAIL_EXIT1 ("FUSE write failed for %s response"
+ " (%zu bytes payload): %m",
+ support_fuse_opcode (f->inh->opcode), payload_size);
+ }
+ else if (ret != sizeof (outh) + payload_size)
+ FAIL_EXIT1 ("FUSE write short for %s response (%zu bytes payload):"
+ " %zd bytes",
+ support_fuse_opcode (f->inh->opcode), payload_size, ret);
+ f->inh = NULL;
+}
+
+void
+support_fuse_reply_empty (struct support_fuse *f)
+{
+ support_fuse_reply_error_1 (f, 0);
+}
+
+static void
+support_fuse_reply_error_1 (struct support_fuse *f, uint32_t error)
+{
+ TEST_VERIFY_EXIT (f->inh != NULL);
+ struct fuse_out_header outh =
+ {
+ .len = sizeof (outh),
+ .error = -error,
+ .unique = f->inh->unique,
+ };
+ ssize_t ret = write (f->fd, &outh, sizeof (outh));
+ if (ret < 0)
+ {
+ /* Some kernels produce write errors upon disconnect. */
+ if (!f->disconnected)
+ FAIL_EXIT1 ("FUSE write failed for %s error response: %m",
+ support_fuse_opcode (f->inh->opcode));
+ }
+ else if (ret != sizeof (outh))
+ FAIL_EXIT1 ("FUSE write short for %s error response: %zd bytes",
+ support_fuse_opcode (f->inh->opcode), ret);
+ f->inh = NULL;
+ f->prepared_pointer = NULL;
+ f->prepared_size = 0;
+}
+
+void
+support_fuse_reply_error (struct support_fuse *f, uint32_t error)
+{
+ TEST_VERIFY (error > 0);
+ support_fuse_reply_error_1 (f, error);
+}
+
+void
+support_fuse_reply_prepared (struct support_fuse *f)
+{
+ TEST_VERIFY_EXIT (f->prepared_pointer != NULL);
+ /* Re-use the non-prepared reply function. It requires
+ f->prepared_* to be non-null, so reset the fields before the call. */
+ void *prepared_pointer = f->prepared_pointer;
+ size_t prepared_size = f->prepared_size;
+ f->prepared_pointer = NULL;
+ f->prepared_size = 0;
+ support_fuse_reply (f, prepared_pointer, prepared_size);
+}
+
+static void *
+support_fuse_thread_wrapper (void *closure)
+{
+ struct fuse_thread_wrapper_args args
+ = *(struct fuse_thread_wrapper_args *) closure;
+
+ /* Handle the initial stat call. */
+ struct fuse_in_header *inh = support_fuse_next (args.f);
+ if (inh == NULL || !support_fuse_handle_mountpoint (args.f))
+ {
+ support_fuse_reply_error (args.f, EIO);
+ return NULL;
+ }
+
+ args.callback (args.f, args.closure);
+ return NULL;
+}
+
+void
+support_fuse_unmount (struct support_fuse *f)
+{
+ /* Signal the unmount to the handler thread. Some kernels report
+ not just ENODEV errors on read. */
+ f->disconnected = true;
+
+ {
+ char *path = xasprintf ("/sys/fs/fuse/connections/%d/abort",
+ f->connection);
+ /* Some kernels do not support these files under /sys. */
+ int fd = open (path, O_RDWR | O_TRUNC);
+ if (fd >= 0)
+ {
+ TEST_COMPARE (write (fd, "1", 1), 1);
+ xclose (fd);
+ }
+ free (path);
+ }
+ if (umount (f->mountpoint) != 0)
+ FAIL ("FUSE: umount (\"%s\"): %m", f->mountpoint);
+ xpthread_join (f->handler);
+ if (rmdir (f->mountpoint) != 0)
+ FAIL ("FUSE: rmdir (\"%s\"): %m", f->mountpoint);
+ xclose (f->fd);
+ free (f->buffer_start);
+ free (f->mountpoint);
+ free (f->readdir_buffer);
+ free (f);
+}
+
+static void __attribute__ ((constructor))
+init (void)
+{
+ /* The test_dir test driver variable is not yet set at this point. */
+ const char *tmpdir = getenv ("TMPDIR");
+ if (tmpdir == NULL || tmpdir[0] == '\0')
+ tmpdir = "/tmp";
+
+ char *prefix = xasprintf ("%s/glibc-tst-fuse.", tmpdir);
+ support_fuse_mountpoints = support_fuse_mkdir (prefix);
+ free (prefix);
+ support_fuse_cleanup_pid = getpid ();
+}
+
+static void __attribute__ ((destructor))
+fini (void)
+{
+ if (support_fuse_cleanup_pid != getpid ()
+ || support_fuse_mountpoints == NULL)
+ return;
+ DIR *dir = xopendir (support_fuse_mountpoints);
+ while (true)
+ {
+ struct dirent64 *e = readdir64 (dir);
+ if (e == NULL)
+ /* Ignore errors. */
+ break;
+ if (*e->d_name == '.')
+ /* Skip "." and "..". No hidden files expected. */
+ continue;
+ if (unlinkat (dirfd (dir), e->d_name, AT_REMOVEDIR) != 0)
+ break;
+ rewinddir (dir);
+ }
+ xclosedir (dir);
+ rmdir (support_fuse_mountpoints);
+ free (support_fuse_mountpoints);
+ support_fuse_mountpoints = NULL;
+}
diff --git a/support/support-xfstat-time64.c b/support/support_open_and_compare_file_bytes.c
index 589a69b..f804ed8 100644
--- a/support/support-xfstat-time64.c
+++ b/support/support_open_and_compare_file_bytes.c
@@ -1,5 +1,5 @@
-/* 64-bit time_t stat with error checking.
- Copyright (C) 2021-2024 Free Software Foundation, Inc.
+/* Compare bytes from a file.
+ Copyright (C) 2024 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -16,17 +16,18 @@
License along with the GNU C Library; if not, see
<https://www.gnu.org/licenses/>. */
-/* NB: Non-standard file name to avoid sysdeps override for xstat. */
+#include <support/file_contents.h>
+#include <support/xstdio.h>
-#include <support/check.h>
-#include <support/xunistd.h>
-#include <sys/stat.h>
+/* Check that a not-currently-open file has exactly the given
+ bytes. */
-#if __TIMESIZE != 64
-void
-xfstat_time64 (int fd, struct __stat64_t64 *result)
+int
+support_open_and_compare_file_bytes (const char *file, const char *contents,
+ size_t length)
{
- if (__fstat64_time64 (fd, result) != 0)
- FAIL_EXIT1 ("__fstat64_time64 (%d): %m", fd);
+ FILE *fp = xfopen (file, "r");
+ int ret = support_compare_file_bytes (fp, contents, length);
+ xfclose (fp);
+ return ret;
}
-#endif
diff --git a/support/support_open_and_compare_file_string.c b/support/support_open_and_compare_file_string.c
new file mode 100644
index 0000000..2b596d4
--- /dev/null
+++ b/support/support_open_and_compare_file_string.c
@@ -0,0 +1,32 @@
+/* Compare string from a file.
+ Copyright (C) 2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+#include <string.h>
+
+#include <support/file_contents.h>
+#include <support/xstdio.h>
+
+/* Check that a not-currently-open file has exactly the given string
+ as contents, starting at the current offset. */
+
+int
+support_open_and_compare_file_string (const char *file, const char *contents)
+{
+ return support_open_and_compare_file_bytes (file, contents,
+ strlen (contents));
+}
diff --git a/support/support_readdir.c b/support/support_readdir.c
new file mode 100644
index 0000000..10d8084
--- /dev/null
+++ b/support/support_readdir.c
@@ -0,0 +1,318 @@
+/* Type-generic wrapper for readdir functions.
+ Copyright (C) 2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+#include <support/readdir.h>
+
+#include <dlfcn.h>
+#include <stddef.h>
+#include <stdlib.h>
+#include <support/check.h>
+#include <support/support.h>
+#include <support/xdirent.h>
+
+/* Copied from <olddirent.h>. */
+struct __old_dirent64
+ {
+ __ino_t d_ino;
+ __off64_t d_off;
+ unsigned short int d_reclen;
+ unsigned char d_type;
+ char d_name[256];
+ };
+
+static struct __old_dirent64 *(*readdir64_compat) (DIR *);
+static int (*readdir64_r_compat) (DIR *, struct __old_dirent64 *,
+ struct __old_dirent64 **);
+
+static void __attribute__ ((constructor))
+init (void)
+{
+ /* These compat symbols exists on alpha, i386, m67k , powerpc, s390,
+ sparc. at the same GLIBC_2.1 version. */
+ readdir64_compat = dlvsym (RTLD_DEFAULT, "readdir64", "GLIBC_2.1");
+ readdir64_r_compat = dlvsym (RTLD_DEFAULT, "readdir64_r", "GLIBC_2.1");
+}
+
+enum support_readdir_op
+support_readdir_op_last (void)
+{
+ if (readdir64_r_compat != NULL)
+ {
+ TEST_VERIFY (readdir64_compat != NULL);
+ return SUPPORT_READDIR64_R_COMPAT;
+ }
+ else
+ return SUPPORT_READDIR64_R;
+}
+
+const char *
+support_readdir_function (enum support_readdir_op op)
+{
+ switch (op)
+ {
+ case SUPPORT_READDIR:
+ return "readdir";
+ case SUPPORT_READDIR64:
+ return "readdir64";
+ case SUPPORT_READDIR_R:
+ return "readdir_r";
+ case SUPPORT_READDIR64_R:
+ return "readdir64_r";
+ case SUPPORT_READDIR64_COMPAT:
+ return "readdir64@GBLIC_2.1";
+ case SUPPORT_READDIR64_R_COMPAT:
+ return "readdir64_r@GBLIC_2.1";
+ }
+ FAIL_EXIT1 ("invalid support_readdir_op constant: %d", op);
+}
+
+unsigned int
+support_readdir_inode_width (enum support_readdir_op op)
+{
+ switch (op)
+ {
+ case SUPPORT_READDIR:
+ case SUPPORT_READDIR_R:
+ return sizeof ((struct dirent) { 0, }.d_ino) * 8;
+ case SUPPORT_READDIR64:
+ case SUPPORT_READDIR64_R:
+ return sizeof ((struct dirent64) { 0, }.d_ino) * 8;
+ case SUPPORT_READDIR64_COMPAT:
+ case SUPPORT_READDIR64_R_COMPAT:
+ return sizeof ((struct __old_dirent64) { 0, }.d_ino) * 8;
+ }
+ FAIL_EXIT1 ("invalid support_readdir_op constant: %d", op);
+}
+
+unsigned int
+support_readdir_offset_width (enum support_readdir_op op)
+{
+#ifdef _DIRENT_HAVE_D_OFF
+ switch (op)
+ {
+ case SUPPORT_READDIR:
+ case SUPPORT_READDIR_R:
+ return sizeof ((struct dirent) { 0, }.d_off) * 8;
+ case SUPPORT_READDIR64:
+ case SUPPORT_READDIR64_R:
+ return sizeof ((struct dirent64) { 0, }.d_off) * 8;
+ case SUPPORT_READDIR64_COMPAT:
+ case SUPPORT_READDIR64_R_COMPAT:
+ return sizeof ((struct __old_dirent64) { 0, }.d_off) * 8;
+ }
+#else
+ switch (op)
+ {
+ case SUPPORT_READDIR:
+ case SUPPORT_READDIR_R:
+ case SUPPORT_READDIR64:
+ case SUPPORT_READDIR64_R:
+ case SUPPORT_READDIR64_COMPAT:
+ case SUPPORT_READDIR64_R_COMPAT:
+ return 0;
+ }
+#endif
+ FAIL_EXIT1 ("invalid support_readdir_op constant: %d", op);
+}
+
+bool
+support_readdir_r_variant (enum support_readdir_op op)
+{
+ switch (op)
+ {
+ case SUPPORT_READDIR:
+ case SUPPORT_READDIR64:
+ case SUPPORT_READDIR64_COMPAT:
+ return false;
+ case SUPPORT_READDIR_R:
+ case SUPPORT_READDIR64_R:
+ case SUPPORT_READDIR64_R_COMPAT:
+ return true;
+ }
+ FAIL_EXIT1 ("invalid support_readdir_op constant: %d", op);
+}
+
+static bool
+copy_dirent (struct support_dirent *dst, struct dirent *src)
+{
+ if (src == NULL)
+ return false;
+ dst->d_ino = src->d_ino;
+#ifdef _DIRENT_HAVE_D_OFF
+ dst->d_off = src->d_off;
+#else
+ dst->d_off = 0;
+#endif
+ dst->d_type = src->d_type;
+ dst->d_name = xstrdup (src->d_name);
+ return true;
+}
+
+static bool
+copy_dirent64 (struct support_dirent *dst, struct dirent64 *src)
+{
+ if (src == NULL)
+ return false;
+ dst->d_ino = src->d_ino;
+#ifdef _DIRENT_HAVE_D_OFF
+ dst->d_off = src->d_off;
+#else
+ dst->d_off = 0;
+#endif
+ dst->d_type = src->d_type;
+ dst->d_name = xstrdup (src->d_name);
+ return true;
+}
+
+static bool
+copy_old_dirent64 (struct support_dirent *dst, struct __old_dirent64 *src)
+{
+ if (src == NULL)
+ return false;
+ dst->d_ino = src->d_ino;
+#ifdef _DIRENT_HAVE_D_OFF
+ dst->d_off = src->d_off;
+#else
+ dst->d_off = 0;
+#endif
+ dst->d_type = src->d_type;
+ dst->d_name = xstrdup (src->d_name);
+ return true;
+}
+
+bool
+support_readdir (DIR *stream, enum support_readdir_op op,
+ struct support_dirent *e)
+{
+ free (e->d_name);
+ e->d_name = NULL;
+ switch (op)
+ {
+ case SUPPORT_READDIR:
+ return copy_dirent (e, xreaddir (stream));
+ case SUPPORT_READDIR64:
+ return copy_dirent64 (e, xreaddir64 (stream));
+
+ /* The functions readdir_r, readdir64_r were deprecated in glibc 2.24. */
+ DIAG_PUSH_NEEDS_COMMENT;
+ DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wdeprecated-declarations");
+
+ case SUPPORT_READDIR_R:
+ {
+ struct dirent buf;
+ if (!xreaddir_r (stream, &buf))
+ return false;
+ return copy_dirent (e, &buf);
+ }
+ case SUPPORT_READDIR64_R:
+ {
+ struct dirent64 buf;
+ if (!xreaddir64_r (stream, &buf))
+ return false;
+ return copy_dirent64 (e, &buf);
+ }
+
+ DIAG_POP_NEEDS_COMMENT;
+
+ case SUPPORT_READDIR64_COMPAT:
+ if (readdir64_compat == NULL)
+ FAIL_EXIT1 ("readdir64 compat function not implemented");
+ return copy_old_dirent64 (e, readdir64_compat (stream));
+
+ case SUPPORT_READDIR64_R_COMPAT:
+ {
+ if (readdir64_r_compat == NULL)
+ FAIL_EXIT1 ("readdir64_r compat function not implemented");
+ struct __old_dirent64 buf;
+ struct __old_dirent64 *e1;
+ int ret = readdir64_r_compat (stream, &buf, &e1);
+ if (ret != 0)
+ {
+ errno = ret;
+ FAIL ("readdir64_r@GLIBC_2.1: %m");
+ return false;
+ }
+ if (e1 == NULL)
+ return false;
+ return copy_old_dirent64 (e, e1);
+ }
+ }
+ FAIL_EXIT1 ("support_readdir: invalid op argument %d", (int) op);
+}
+
+void
+support_readdir_expect_error (DIR *stream, enum support_readdir_op op,
+ int expected)
+{
+ switch (op)
+ {
+ case SUPPORT_READDIR:
+ errno = 0;
+ TEST_VERIFY (readdir (stream) == NULL);
+ TEST_COMPARE (errno, expected);
+ return;
+ case SUPPORT_READDIR64:
+ errno = 0;
+ TEST_VERIFY (readdir64 (stream) == NULL);
+ TEST_COMPARE (errno, expected);
+ return;
+
+ /* The functions readdir_r, readdir64_r were deprecated in glibc 2.24. */
+ DIAG_PUSH_NEEDS_COMMENT;
+ DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wdeprecated-declarations");
+
+ case SUPPORT_READDIR_R:
+ {
+ struct dirent buf;
+ struct dirent *e;
+ errno = readdir_r (stream, &buf, &e);
+ TEST_COMPARE (errno, expected);;
+ }
+ return;
+ case SUPPORT_READDIR64_R:
+ {
+ struct dirent64 buf;
+ struct dirent64 *e;
+ errno = readdir64_r (stream, &buf, &e);
+ TEST_COMPARE (errno, expected);;
+ }
+ return;
+
+ DIAG_POP_NEEDS_COMMENT;
+
+ case SUPPORT_READDIR64_COMPAT:
+ if (readdir64_compat == NULL)
+ FAIL_EXIT1 ("readdir64_r compat function not implemented");
+ errno = 0;
+ TEST_VERIFY (readdir64_compat (stream) == NULL);
+ TEST_COMPARE (errno, expected);
+ return;
+ case SUPPORT_READDIR64_R_COMPAT:
+ {
+ if (readdir64_r_compat == NULL)
+ FAIL_EXIT1 ("readdir64_r compat function not implemented");
+ struct __old_dirent64 buf;
+ struct __old_dirent64 *e;
+ errno = readdir64_r_compat (stream, &buf, &e);
+ TEST_COMPARE (errno, expected);
+ }
+ return;
+ }
+ FAIL_EXIT1 ("support_readdir_expect_error: invalid op argument %d",
+ (int) op);
+}
diff --git a/support/support_readdir_check.c b/support/support_readdir_check.c
new file mode 100644
index 0000000..5687004
--- /dev/null
+++ b/support/support_readdir_check.c
@@ -0,0 +1,30 @@
+/* Error-checking helper for xreaddir, xreaddir64.
+ Copyright (C) 2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+#include <support/xdirent.h>
+
+#include <support/check.h>
+
+void *
+support_readdir_check (const char *name, void *result, int saved_errno)
+{
+ if (result == NULL && errno != 0)
+ FAIL_EXIT1 ("%s: %m", name);
+ errno = saved_errno;
+ return result;
+}
diff --git a/support/support-xstat-time64.c b/support/support_readdir_r_check.c
index 4519487..6bbb0d0 100644
--- a/support/support-xstat-time64.c
+++ b/support/support_readdir_r_check.c
@@ -1,5 +1,5 @@
-/* 64-bit time_t stat with error checking.
- Copyright (C) 2021-2024 Free Software Foundation, Inc.
+/* Error-checking helper for xreaddir_r, xreaddir64_r.
+ Copyright (C) 2024 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -16,17 +16,20 @@
License along with the GNU C Library; if not, see
<https://www.gnu.org/licenses/>. */
-/* NB: Non-standard file name to avoid sysdeps override for xstat. */
+#include <support/xdirent.h>
#include <support/check.h>
-#include <support/xunistd.h>
-#include <sys/stat.h>
-#if __TIMESIZE != 64
-void
-xstat_time64 (const char *path, struct __stat64_t64 *result)
+int
+support_readdir_r_check (const char *name, int result, void *buf, void *ptr)
{
- if (__stat64_time64 (path, result) != 0)
- FAIL_EXIT1 ("__stat64_time64 (\"%s\"): %m", path);
+ if (result != 0)
+ {
+ errno = result;
+ FAIL_EXIT1 ("%s: %m", name);
+ }
+ if (buf != ptr)
+ FAIL_EXIT1 ("%s: buffer pointer and returned pointer differ: %p != %p",
+ name, buf, ptr);
+ return result;
}
-#endif
diff --git a/support/support_test_compare_failure.c b/support/support_test_compare_failure.c
index ae73d20..dba79e4 100644
--- a/support/support_test_compare_failure.c
+++ b/support/support_test_compare_failure.c
@@ -17,7 +17,9 @@
<https://www.gnu.org/licenses/>. */
#include <errno.h>
+#include <limits.h>
#include <stdio.h>
+#include <string.h>
#include <support/check.h>
static void
@@ -31,7 +33,14 @@ report (const char *which, const char *expr, long long value, int positive,
printf ("%lld", value);
unsigned long long mask
= (~0ULL) >> (8 * (sizeof (unsigned long long) - size));
- printf (" (0x%llx); from: %s\n", (unsigned long long) value & mask, expr);
+ const char *errno_constant = NULL;
+ if (strcmp (expr, "errno") == 0
+ && positive && (unsigned long long int) value <= INT_MAX)
+ errno_constant = strerrorname_np (value);
+ printf (" (0x%llx", (unsigned long long) value & mask);
+ if (errno_constant != NULL)
+ printf (", %s", errno_constant);
+ printf ("); from: %s\n", expr);
}
void
diff --git a/support/test-driver.c b/support/test-driver.c
index f4c3e4d..04ceebc 100644
--- a/support/test-driver.c
+++ b/support/test-driver.c
@@ -155,6 +155,7 @@ main (int argc, char **argv)
{
CMDLINE_OPTIONS
TEST_DEFAULT_OPTIONS
+ { 0, }
};
test_config.options = &options;
#endif
diff --git a/support/timespec-add.c b/support/timespec-add.c
index 55fd812..57b968c 100644
--- a/support/timespec-add.c
+++ b/support/timespec-add.c
@@ -20,7 +20,6 @@
/* Return the sum of two timespec values A and B. On overflow, return
an extremal value. This assumes 0 <= tv_nsec < TIMESPEC_HZ. */
-#include <config.h>
#include "timespec.h"
#include "intprops.h"
diff --git a/support/timespec-sub.c b/support/timespec-sub.c
index 7d89c14..2897343 100644
--- a/support/timespec-sub.c
+++ b/support/timespec-sub.c
@@ -21,7 +21,6 @@
overflow, return an extremal value. This assumes 0 <= tv_nsec <
TIMESPEC_HZ. */
-#include <config.h>
#include "timespec.h"
#include "intprops.h"
diff --git a/support/tst-support_fuse.c b/support/tst-support_fuse.c
new file mode 100644
index 0000000..9ee637c
--- /dev/null
+++ b/support/tst-support_fuse.c
@@ -0,0 +1,349 @@
+/* Facilities for FUSE-backed file system tests.
+ Copyright (C) 2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+#include <support/fuse.h>
+
+#include <dirent.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <string.h>
+#include <support/check.h>
+#include <support/support.h>
+#include <support/xdirent.h>
+#include <support/xunistd.h>
+
+static void
+fuse_thread (struct support_fuse *f, void *closure)
+{
+ /* Turn on returning FUSE_FORGET responses. */
+ support_fuse_filter_forget (f, false);
+
+ /* Inode and nodeid for "file" and "new". */
+ enum { NODE_FILE = 2, NODE_NEW, NODE_SUBDIR, NODE_SYMLINK };
+ struct fuse_in_header *inh;
+ while ((inh = support_fuse_next (f)) != NULL)
+ {
+ {
+ char *opcode = support_fuse_opcode (inh->opcode);
+ printf ("info: (T) event %s(%llu) len=%u nodeid=%llu\n",
+ opcode, (unsigned long long int) inh->unique, inh->len,
+ (unsigned long long int) inh->nodeid);
+ free (opcode);
+ }
+
+ /* Handle mountpoint and basic directory operation for the root (1). */
+ if (support_fuse_handle_mountpoint (f)
+ || (inh->nodeid == 1 && support_fuse_handle_directory (f)))
+ continue;
+
+ switch (inh->opcode)
+ {
+ case FUSE_READDIR:
+ /* Implementation of getdents64. */
+ if (inh->nodeid == 1)
+ {
+ struct support_fuse_dirstream *d
+ = support_fuse_prepare_readdir (f);
+ TEST_COMPARE (support_fuse_cast (READ, inh)->offset, 0);
+ TEST_VERIFY (support_fuse_dirstream_add (d, 1, 1, DT_DIR, "."));
+ TEST_VERIFY (support_fuse_dirstream_add (d, 1, 2, DT_DIR, ".."));
+ TEST_VERIFY (support_fuse_dirstream_add (d, NODE_FILE, 3, DT_REG,
+ "file"));
+ support_fuse_reply_prepared (f);
+ }
+ else
+ support_fuse_reply_error (f, EIO);
+ break;
+ case FUSE_LOOKUP:
+ /* Part of the implementation of open. */
+ {
+ char *name = support_fuse_cast (LOOKUP, inh);
+ printf (" name: %s\n", name);
+ if (inh->nodeid == 1 && strcmp (name, "file") == 0)
+ {
+ struct fuse_entry_out *out
+ = support_fuse_prepare_entry (f, NODE_FILE);
+ out->attr.mode = S_IFREG | 0600;
+ support_fuse_reply_prepared (f);
+ }
+ else if (inh->nodeid == 1 && strcmp (name, "symlink") == 0)
+ {
+ struct fuse_entry_out *out
+ = support_fuse_prepare_entry (f, NODE_SYMLINK);
+ out->attr.mode = S_IFLNK | 0777;
+ support_fuse_reply_prepared (f);
+ }
+ else
+ support_fuse_reply_error (f, ENOENT);
+ }
+ break;
+ case FUSE_OPEN:
+ /* Implementation of open. */
+ {
+ struct fuse_open_in *p = support_fuse_cast (OPEN, inh);
+ if (inh->nodeid == NODE_FILE)
+ {
+ TEST_VERIFY (!(p->flags & O_EXCL));
+ struct fuse_open_out out = { 0, };
+ support_fuse_reply (f, &out, sizeof (out));
+ }
+ else
+ support_fuse_reply_error (f, ENOENT);
+ }
+ break;
+ case FUSE_GETATTR:
+ /* Happens after open. */
+ if (inh->nodeid == NODE_FILE)
+ {
+ struct fuse_attr_out *out = support_fuse_prepare_attr (f);
+ out->attr.mode = S_IFREG | 0600;
+ out->attr.size = strlen ("Hello, world!");
+ support_fuse_reply_prepared (f);
+ }
+ else
+ support_fuse_reply_error (f, ENOENT);
+ break;
+ case FUSE_READ:
+ /* Implementation of read. */
+ if (inh->nodeid == NODE_FILE)
+ {
+ struct fuse_read_in *p = support_fuse_cast (READ, inh);
+ TEST_COMPARE (p->offset, 0);
+ TEST_VERIFY (p->size >= strlen ("Hello, world!"));
+ support_fuse_reply (f,
+ "Hello, world!", strlen ("Hello, world!"));
+ }
+ else
+ support_fuse_reply_error (f, EIO);
+ break;
+ case FUSE_FLUSH:
+ /* Sent in response to close. */
+ support_fuse_reply_empty (f);
+ break;
+ case FUSE_GETXATTR:
+ /* This happens as part of a open-for-write operation.
+ Signal no support for extended attributes. */
+ support_fuse_reply_error (f, ENOSYS);
+ break;
+ case FUSE_SETATTR:
+ /* This happens as part of a open-for-write operation to
+ implement O_TRUNC. */
+ if (inh->nodeid == NODE_FILE)
+ {
+ struct fuse_setattr_in *p = support_fuse_cast (SETATTR, inh);
+ /* FATTR_LOCKOWNER may also be set. */
+ TEST_COMPARE ((p->valid) & ~ FATTR_LOCKOWNER, FATTR_SIZE);
+ TEST_COMPARE (p->size, 0);
+ struct fuse_attr_out *out = support_fuse_prepare_attr (f);
+ out->attr.mode = S_IFREG | 0600;
+ support_fuse_reply_prepared (f);
+ }
+ else
+ support_fuse_reply_error (f, EIO);
+ break;
+ case FUSE_WRITE:
+ /* Implementation of write. */
+ if (inh->nodeid == NODE_FILE)
+ {
+ struct fuse_write_in *p = support_fuse_cast (WRITE, inh);
+ TEST_COMPARE (p->offset, 0);
+ /* Write payload follows after struct fuse_write_in. */
+ TEST_COMPARE_BLOB (p + 1, p->size,
+ "Good day to you too.",
+ strlen ("Good day to you too."));
+ struct fuse_write_out out =
+ {
+ .size = p->size,
+ };
+ support_fuse_reply (f, &out, sizeof (out));
+ }
+ else
+ support_fuse_reply_error (f, EIO);
+ break;
+ case FUSE_CREATE:
+ /* Implementation of O_CREAT. */
+ if (inh->nodeid == 1)
+ {
+ char *name;
+ struct fuse_create_in *p
+ = support_fuse_cast_name (CREATE, inh, &name);
+ TEST_VERIFY (S_ISREG (p->mode));
+ TEST_COMPARE (p->mode & 07777, 0600);
+ TEST_COMPARE_STRING (name, "new");
+ struct fuse_entry_out *out_entry;
+ struct fuse_open_out *out_open;
+ support_fuse_prepare_create (f, NODE_NEW, &out_entry, &out_open);
+ out_entry->attr.mode = S_IFREG | 0600;
+ support_fuse_reply_prepared (f);
+ }
+ else
+ support_fuse_reply_error (f, EIO);
+ break;
+ case FUSE_MKDIR:
+ /* Implementation of mkdir. */
+ {
+ if (inh->nodeid == 1)
+ {
+ char *name;
+ struct fuse_mkdir_in *p
+ = support_fuse_cast_name (MKDIR, inh, &name);
+ TEST_COMPARE (p->mode, 01234);
+ TEST_COMPARE_STRING (name, "subdir");
+ struct fuse_entry_out *out
+ = support_fuse_prepare_entry (f, NODE_SUBDIR);
+ out->attr.mode = S_IFDIR | p->mode;
+ support_fuse_reply_prepared (f);
+ }
+ else
+ support_fuse_reply_error (f, EIO);
+ }
+ break;
+ case FUSE_READLINK:
+ /* Implementation of readlink. */
+ TEST_COMPARE (inh->nodeid, NODE_SYMLINK);
+ if (inh->nodeid == NODE_SYMLINK)
+ support_fuse_reply (f, "target-of-symbolic-link",
+ strlen ("target-of-symbolic-link"));
+ else
+ support_fuse_reply_error (f, EINVAL);
+ break;
+ case FUSE_FORGET:
+ support_fuse_no_reply (f);
+ break;
+ default:
+ support_fuse_reply_error (f, EIO);
+ }
+ }
+}
+
+static int
+do_test (void)
+{
+ support_fuse_init ();
+
+ struct support_fuse *f = support_fuse_mount (fuse_thread, NULL);
+
+ printf ("info: Attributes of mountpoint/root directory %s\n",
+ support_fuse_mountpoint (f));
+ {
+ struct statx st;
+ xstatx (AT_FDCWD, support_fuse_mountpoint (f), 0, STATX_BASIC_STATS, &st);
+ TEST_COMPARE (st.stx_uid, getuid ());
+ TEST_COMPARE (st.stx_gid, getgid ());
+ TEST_VERIFY (S_ISDIR (st.stx_mode));
+ TEST_COMPARE (st.stx_mode & 07777, 0700);
+ }
+
+ printf ("info: List directory %s\n", support_fuse_mountpoint (f));
+ {
+ DIR *dir = xopendir (support_fuse_mountpoint (f));
+
+ struct dirent *e = xreaddir (dir);
+ TEST_COMPARE (e->d_ino, 1);
+#ifdef _DIRENT_HAVE_D_OFF
+ TEST_COMPARE (e->d_off, 1);
+#endif
+ TEST_COMPARE (e->d_type, DT_DIR);
+ TEST_COMPARE_STRING (e->d_name, ".");
+
+ e = xreaddir (dir);
+ TEST_COMPARE (e->d_ino, 1);
+#ifdef _DIRENT_HAVE_D_OFF
+ TEST_COMPARE (e->d_off, 2);
+#endif
+ TEST_COMPARE (e->d_type, DT_DIR);
+ TEST_COMPARE_STRING (e->d_name, "..");
+
+ e = xreaddir (dir);
+ TEST_COMPARE (e->d_ino, 2);
+#ifdef _DIRENT_HAVE_D_OFF
+ TEST_COMPARE (e->d_off, 3);
+#endif
+ TEST_COMPARE (e->d_type, DT_REG);
+ TEST_COMPARE_STRING (e->d_name, "file");
+
+ TEST_COMPARE (closedir (dir), 0);
+ }
+
+ char *file_path = xasprintf ("%s/file", support_fuse_mountpoint (f));
+
+ printf ("info: Attributes of file %s\n", file_path);
+ {
+ struct statx st;
+ xstatx (AT_FDCWD, file_path, 0, STATX_BASIC_STATS, &st);
+ TEST_COMPARE (st.stx_uid, getuid ());
+ TEST_COMPARE (st.stx_gid, getgid ());
+ TEST_VERIFY (S_ISREG (st.stx_mode));
+ TEST_COMPARE (st.stx_mode & 07777, 0600);
+ TEST_COMPARE (st.stx_size, strlen ("Hello, world!"));
+ }
+
+ printf ("info: Read from %s\n", file_path);
+ {
+ int fd = xopen (file_path, O_RDONLY, 0);
+ char buf[64];
+ ssize_t len = read (fd, buf, sizeof (buf));
+ if (len < 0)
+ FAIL_EXIT1 ("read: %m");
+ TEST_COMPARE_BLOB (buf, len, "Hello, world!", strlen ("Hello, world!"));
+ xclose (fd);
+ }
+
+ printf ("info: Write to %s\n", file_path);
+ {
+ int fd = xopen (file_path, O_WRONLY | O_TRUNC, 0);
+ xwrite (fd, "Good day to you too.", strlen ("Good day to you too."));
+ xclose (fd);
+ }
+
+ printf ("info: Attempt O_EXCL creation of existing %s\n", file_path);
+ /* O_EXCL creation shall fail. */
+ errno = 0;
+ TEST_COMPARE (open64 (file_path, O_RDWR | O_EXCL | O_CREAT, 0600), -1);
+ TEST_COMPARE (errno, EEXIST);
+
+ free (file_path);
+
+ {
+ char *new_path = xasprintf ("%s/new", support_fuse_mountpoint (f));
+ printf ("info: Test successful O_EXCL creation at %s\n", new_path);
+ int fd = xopen (new_path, O_RDWR | O_EXCL | O_CREAT, 0600);
+ xclose (fd);
+ free (new_path);
+ }
+
+ {
+ char *subdir_path = xasprintf ("%s/subdir", support_fuse_mountpoint (f));
+ xmkdir (subdir_path, 01234);
+ free (subdir_path);
+ }
+
+ {
+ char *symlink_path = xasprintf ("%s/symlink", support_fuse_mountpoint (f));
+ char *target = xreadlink (symlink_path);
+ TEST_COMPARE_STRING (target, "target-of-symbolic-link");
+ free (target);
+ free (symlink_path);
+ }
+
+ support_fuse_unmount (f);
+ return 0;
+}
+
+#include <support/test-driver.c>
diff --git a/support/tst-support_readdir.c b/support/tst-support_readdir.c
new file mode 100644
index 0000000..66be94f
--- /dev/null
+++ b/support/tst-support_readdir.c
@@ -0,0 +1,73 @@
+/* Test the support_readdir function.
+ Copyright (C) 2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+#include <support/readdir.h>
+
+#include <fcntl.h>
+#include <stdlib.h>
+#include <string.h>
+#include <support/check.h>
+#include <support/xdirent.h>
+#include <support/xunistd.h>
+
+static int
+do_test (void)
+{
+ DIR *reference_stream = xopendir (".");
+ struct dirent64 *reference = xreaddir64 (reference_stream);
+
+ for (enum support_readdir_op op = 0; op <= support_readdir_op_last (); ++op)
+ {
+ DIR *stream = xopendir (".");
+ struct support_dirent e;
+ memset (&e, 0xcc, sizeof (e));
+ e.d_name = NULL;
+ TEST_VERIFY (support_readdir (stream, op, &e));
+ TEST_COMPARE (e.d_ino, reference->d_ino);
+#ifdef _DIRENT_HAVE_D_OFF
+ TEST_VERIFY (support_readdir_offset_width (op) != 0);
+ TEST_COMPARE (e.d_off, reference->d_off);
+#else
+ TEST_COMPARE (support_readdir_offset_width (op), 0);
+ TEST_COMPARE (e.d_off, 0);
+#endif
+ TEST_COMPARE (e.d_type, reference->d_type);
+ TEST_COMPARE_STRING (e.d_name, reference->d_name);
+ free (e.d_name);
+ xclosedir (stream);
+ }
+
+ xclosedir (reference_stream);
+
+ /* Error injection test. */
+ int devnull = xopen ("/dev/null", O_RDONLY, 0);
+ for (enum support_readdir_op op = 0; op <= support_readdir_op_last (); ++op)
+ {
+ DIR *stream = xopendir (".");
+ /* A descriptor incompatible with readdir. */
+ xdup2 (devnull, dirfd (stream));
+ errno = -1;
+ support_readdir_expect_error (stream, op, ENOTDIR);
+ xclosedir (stream);
+ }
+ xclose (devnull);
+
+ return 0;
+}
+
+#include <support/test-driver.c>
diff --git a/support/tst-xdirent.c b/support/tst-xdirent.c
new file mode 100644
index 0000000..6424831
--- /dev/null
+++ b/support/tst-xdirent.c
@@ -0,0 +1,76 @@
+/* Compile test for error-checking wrappers for <dirent.h>
+ Copyright (C) 2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+#include <support/xdirent.h>
+
+#include <libc-diag.h>
+#include <support/check.h>
+#include <unistd.h>
+
+static int
+do_test (void)
+{
+ {
+ DIR *d = xopendir (".");
+ struct dirent *e = xreaddir (d);
+ /* Assume that the "." special entry always comes first. */
+ TEST_COMPARE_STRING (e->d_name, ".");
+ while (xreaddir (d) != NULL)
+ ;
+ xclosedir (d);
+ }
+
+ {
+ DIR *d = xopendir (".");
+ struct dirent64 *e = xreaddir64 (d);
+ TEST_COMPARE_STRING (e->d_name, ".");
+ while (xreaddir64 (d) != NULL)
+ ;
+ xclosedir (d);
+ }
+
+ /* The functions readdir_r, readdir64_r were deprecated in glibc 2.24. */
+ DIAG_PUSH_NEEDS_COMMENT;
+ DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wdeprecated-declarations");
+
+ {
+ DIR *d = xopendir (".");
+ struct dirent buf = { 0, };
+ TEST_VERIFY (xreaddir_r (d, &buf));
+ TEST_COMPARE_STRING (buf.d_name, ".");
+ while (xreaddir_r (d, &buf))
+ ;
+ xclosedir (d);
+ }
+
+ {
+ DIR *d = xopendir (".");
+ struct dirent64 buf = { 0, };
+ TEST_VERIFY (xreaddir64_r (d, &buf));
+ TEST_COMPARE_STRING (buf.d_name, ".");
+ while (xreaddir64_r (d, &buf))
+ ;
+ xclosedir (d);
+ }
+
+ DIAG_POP_NEEDS_COMMENT;
+
+ return 0;
+}
+
+#include <support/test-driver.c>
diff --git a/support/xclosedir.c b/support/xclosedir.c
new file mode 100644
index 0000000..b490df5
--- /dev/null
+++ b/support/xclosedir.c
@@ -0,0 +1,28 @@
+/* Error-checking wrapper for closedir.
+ Copyright (C) 2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+#include <support/xdirent.h>
+
+#include <support/check.h>
+
+void
+xclosedir (DIR *dir)
+{
+ if (closedir (dir) != 0)
+ FAIL_EXIT1 ("closedir: %m");
+}
diff --git a/support/xdirent.h b/support/xdirent.h
new file mode 100644
index 0000000..8465d70
--- /dev/null
+++ b/support/xdirent.h
@@ -0,0 +1,86 @@
+/* Error-checking wrappers for <dirent.h>
+ Copyright (C) 2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+#ifndef SUPPORT_XDIRENT_H
+#define SUPPORT_XDIRENT_H
+
+#include <dirent.h>
+#include <errno.h>
+#include <libc-diag.h>
+#include <stdbool.h>
+#include <stddef.h>
+
+__BEGIN_DECLS
+
+DIR *xopendir (const char *path);
+DIR *xfdopendir (int fd);
+void xclosedir (DIR *);
+
+void *support_readdir_check (const char *, void *, int);
+
+static __attribute__ ((unused)) struct dirent *
+xreaddir (DIR *stream)
+{
+ int saved_errno = errno;
+ errno = 0;
+ struct dirent *result = readdir (stream);
+ return support_readdir_check ("readdir", result, saved_errno);
+}
+
+static __attribute__ ((unused)) struct dirent64 *
+xreaddir64 (DIR *stream)
+{
+ int saved_errno = errno;
+ errno = 0;
+ struct dirent64 *result = readdir64 (stream);
+ return support_readdir_check ("readdir64", result, saved_errno);
+}
+
+/* The functions readdir_r, readdir64_r were deprecated in glibc 2.24. */
+DIAG_PUSH_NEEDS_COMMENT;
+DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wdeprecated-declarations");
+
+int support_readdir_r_check (const char *, int, void *, void *);
+
+static __attribute__ ((unused)) bool
+xreaddir_r (DIR *stream, struct dirent *buf)
+{
+ struct dirent *ptr;
+ int ret = readdir_r (stream, buf, &ptr);
+ if (ret == 0 && ptr == NULL)
+ return false;
+ support_readdir_r_check ("readdir_r", ret, buf, ptr);
+ return true;
+}
+
+static __attribute__ ((unused)) bool
+xreaddir64_r (DIR *stream, struct dirent64 *buf)
+{
+ struct dirent64 *ptr;
+ int ret = readdir64_r (stream, buf, &ptr);
+ if (ret == 0 && ptr == NULL)
+ return false;
+ support_readdir_r_check ("readdir64_r", ret, buf, ptr);
+ return true;
+}
+
+DIAG_POP_NEEDS_COMMENT;
+
+__END_DECLS
+
+#endif /* SUPPORT_XDIRENT_H */
diff --git a/support/xfdopendir.c b/support/xfdopendir.c
new file mode 100644
index 0000000..d881d28
--- /dev/null
+++ b/support/xfdopendir.c
@@ -0,0 +1,30 @@
+/* Error-checking wrapper for fdopendir.
+ Copyright (C) 2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+#include <support/xdirent.h>
+
+#include <support/check.h>
+
+DIR *
+xfdopendir (int fd)
+{
+ DIR *result = fdopendir (fd);
+ if (result == NULL)
+ FAIL_EXIT1 ("fdopendir (%d): %m", fd);
+ return result;
+}
diff --git a/support/xopendir.c b/support/xopendir.c
new file mode 100644
index 0000000..e4aee07
--- /dev/null
+++ b/support/xopendir.c
@@ -0,0 +1,30 @@
+/* Error-checking wrapper for opendir.
+ Copyright (C) 2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+#include <support/xdirent.h>
+
+#include <support/check.h>
+
+DIR *
+xopendir (const char *path)
+{
+ DIR *result = opendir (path);
+ if (result == NULL)
+ FAIL_EXIT1 ("opendir (\"%s\"): %m", path);
+ return result;
+}
diff --git a/support/support-xstat.c b/support/xstatx.c
index ce866f7..621f244 100644
--- a/support/support-xstat.c
+++ b/support/xstatx.c
@@ -1,5 +1,5 @@
-/* stat64 with error checking.
- Copyright (C) 2017-2024 Free Software Foundation, Inc.
+/* Error-checking wrapper for statx.
+ Copyright (C) 2024 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -16,15 +16,17 @@
License along with the GNU C Library; if not, see
<https://www.gnu.org/licenses/>. */
-/* NB: Non-standard file name to avoid sysdeps override for xstat. */
+#include <support/xunistd.h>
+#include <fcntl.h>
#include <support/check.h>
-#include <support/xunistd.h>
#include <sys/stat.h>
void
-xstat (const char *path, struct stat64 *result)
+xstatx (int fd, const char *path, int flags, unsigned int mask,
+ struct statx *stx)
{
- if (stat64 (path, result) != 0)
- FAIL_EXIT1 ("stat64 (\"%s\"): %m", path);
+ if (statx (fd, path, flags, mask, stx) != 0)
+ FAIL_EXIT1 ("statx (AT_FDCWD, \"%s\", 0x%x, 0x%x): %m",
+ path, (unsigned int) flags, mask);
}
diff --git a/support/xunistd.h b/support/xunistd.h
index 13be9a4..204951b 100644
--- a/support/xunistd.h
+++ b/support/xunistd.h
@@ -29,28 +29,28 @@
__BEGIN_DECLS
-struct stat64;
+struct statx;
pid_t xfork (void);
pid_t xwaitpid (pid_t, int *status, int flags);
void xpipe (int[2]);
void xdup2 (int, int);
int xopen (const char *path, int flags, mode_t);
-#ifndef __USE_TIME64_REDIRECTS
-# ifdef __USE_FILE_OFFSET64
-void xstat (const char *path, struct stat *);
-void xlstat (const char *path, struct stat *);
-void xfstat (int fd, struct stat *);
-# else
-void xstat (const char *path, struct stat64 *);
-void xlstat (const char *path, struct stat64 *);
-void xfstat (int fd, struct stat64 *);
-# endif
-#else
-void __REDIRECT (xstat, (const char *path, struct stat *), xstat_time64);
-void __REDIRECT (xlstat, (const char *path, struct stat *), xlstat_time64);
-void __REDIRECT (xfstat, (int fd, struct stat *), xfstat_time64);
-#endif
+void support_check_stat_fd (const char *name, int fd, int result);
+void support_check_stat_path (const char *name, const char *path, int result);
+#define xstat(path, st) \
+ (support_check_stat_path ("stat", (path), stat ((path), (st))))
+#define xfstat(fd, st) \
+ (support_check_stat_fd ("fstat", (fd), fstat ((fd), (st))))
+#define xlstat(path, st) \
+ (support_check_stat_path ("lstat", (path), lstat ((path), (st))))
+#define xstat64(path, st) \
+ (support_check_stat_path ("stat64", (path), stat64 ((path), (st))))
+#define xfstat64(fd, st) \
+ (support_check_stat_fd ("fstat64", (fd), fstat64 ((fd), (st))))
+#define xlstat64(path, st) \
+ (support_check_stat_path ("lstat64", (path), lstat64 ((path), (st))))
+void xstatx (int, const char *, int, unsigned int, struct statx *);
void xmkdir (const char *path, mode_t);
void xchroot (const char *path);
void xunlink (const char *path);
diff --git a/sysdeps/aarch64/fpu/Versions b/sysdeps/aarch64/fpu/Versions
index cc15ce2..015211f 100644
--- a/sysdeps/aarch64/fpu/Versions
+++ b/sysdeps/aarch64/fpu/Versions
@@ -135,4 +135,11 @@ libmvec {
_ZGVsMxv_tanh;
_ZGVsMxv_tanhf;
}
+ GLIBC_2.41 {
+ _ZGVnN2v_logp1;
+ _ZGVnN2v_logp1f;
+ _ZGVnN4v_logp1f;
+ _ZGVsMxv_logp1;
+ _ZGVsMxv_logp1f;
+ }
}
diff --git a/sysdeps/aarch64/fpu/acoshf_advsimd.c b/sysdeps/aarch64/fpu/acoshf_advsimd.c
index 8916dcbf4..004474a 100644
--- a/sysdeps/aarch64/fpu/acoshf_advsimd.c
+++ b/sysdeps/aarch64/fpu/acoshf_advsimd.c
@@ -25,35 +25,32 @@ const static struct data
{
struct v_log1pf_data log1pf_consts;
uint32x4_t one;
- uint16x4_t thresh;
-} data = {
- .log1pf_consts = V_LOG1PF_CONSTANTS_TABLE,
- .one = V4 (0x3f800000),
- .thresh = V4 (0x2000) /* top(asuint(SquareLim) - asuint(1)). */
-};
+} data = { .log1pf_consts = V_LOG1PF_CONSTANTS_TABLE, .one = V4 (0x3f800000) };
+
+#define Thresh vdup_n_u16 (0x2000) /* top(asuint(SquareLim) - asuint(1)). */
static float32x4_t NOINLINE VPCS_ATTR
special_case (float32x4_t x, float32x4_t y, uint16x4_t special,
- const struct v_log1pf_data d)
+ const struct v_log1pf_data *d)
{
return v_call_f32 (acoshf, x, log1pf_inline (y, d), vmovl_u16 (special));
}
/* Vector approximation for single-precision acosh, based on log1p. Maximum
error depends on WANT_SIMD_EXCEPT. With SIMD fp exceptions enabled, it
- is 2.78 ULP:
- __v_acoshf(0x1.07887p+0) got 0x1.ef9e9cp-3
- want 0x1.ef9ea2p-3.
+ is 3.00 ULP:
+ _ZGVnN4v_acoshf(0x1.01df3ap+0) got 0x1.ef0a82p-4
+ want 0x1.ef0a7cp-4.
With exceptions disabled, we can compute u with a shorter dependency chain,
- which gives maximum error of 3.07 ULP:
- __v_acoshf(0x1.01f83ep+0) got 0x1.fbc7fap-4
- want 0x1.fbc7f4p-4. */
+ which gives maximum error of 3.22 ULP:
+ _ZGVnN4v_acoshf(0x1.007ef2p+0) got 0x1.fdcdccp-5
+ want 0x1.fdcdd2p-5. */
VPCS_ATTR float32x4_t NOINLINE V_NAME_F1 (acosh) (float32x4_t x)
{
const struct data *d = ptr_barrier (&data);
uint32x4_t ix = vreinterpretq_u32_f32 (x);
- uint16x4_t special = vcge_u16 (vsubhn_u32 (ix, d->one), d->thresh);
+ uint16x4_t special = vcge_u16 (vsubhn_u32 (ix, d->one), Thresh);
#if WANT_SIMD_EXCEPT
/* Mask special lanes with 1 to side-step spurious invalid or overflow. Use
@@ -64,15 +61,16 @@ VPCS_ATTR float32x4_t NOINLINE V_NAME_F1 (acosh) (float32x4_t x)
float32x4_t xm1 = v_zerofy_f32 (vsubq_f32 (x, v_f32 (1)), p);
float32x4_t u = vfmaq_f32 (vaddq_f32 (xm1, xm1), xm1, xm1);
#else
- float32x4_t xm1 = vsubq_f32 (x, v_f32 (1));
- float32x4_t u = vmulq_f32 (xm1, vaddq_f32 (x, v_f32 (1.0f)));
+ float32x4_t xm1 = vsubq_f32 (x, vreinterpretq_f32_u32 (d->one));
+ float32x4_t u
+ = vmulq_f32 (xm1, vaddq_f32 (x, vreinterpretq_f32_u32 (d->one)));
#endif
float32x4_t y = vaddq_f32 (xm1, vsqrtq_f32 (u));
if (__glibc_unlikely (v_any_u16h (special)))
- return special_case (x, y, special, d->log1pf_consts);
- return log1pf_inline (y, d->log1pf_consts);
+ return special_case (x, y, special, &d->log1pf_consts);
+ return log1pf_inline (y, &d->log1pf_consts);
}
libmvec_hidden_def (V_NAME_F1 (acosh))
HALF_WIDTH_ALIAS_F1 (acosh)
diff --git a/sysdeps/aarch64/fpu/advsimd_f32_protos.h b/sysdeps/aarch64/fpu/advsimd_f32_protos.h
index 097d403..5909bb4 100644
--- a/sysdeps/aarch64/fpu/advsimd_f32_protos.h
+++ b/sysdeps/aarch64/fpu/advsimd_f32_protos.h
@@ -36,6 +36,7 @@ libmvec_hidden_proto (V_NAME_F2(hypot));
libmvec_hidden_proto (V_NAME_F1(log10));
libmvec_hidden_proto (V_NAME_F1(log1p));
libmvec_hidden_proto (V_NAME_F1(log2));
+libmvec_hidden_proto (V_NAME_F1(logp1));
libmvec_hidden_proto (V_NAME_F1(log));
libmvec_hidden_proto (V_NAME_F2(pow));
libmvec_hidden_proto (V_NAME_F1(sin));
diff --git a/sysdeps/aarch64/fpu/asinhf_advsimd.c b/sysdeps/aarch64/fpu/asinhf_advsimd.c
index 09fd8a6..eb789b9 100644
--- a/sysdeps/aarch64/fpu/asinhf_advsimd.c
+++ b/sysdeps/aarch64/fpu/asinhf_advsimd.c
@@ -20,16 +20,16 @@
#include "v_math.h"
#include "v_log1pf_inline.h"
-#define SignMask v_u32 (0x80000000)
-
const static struct data
{
struct v_log1pf_data log1pf_consts;
+ float32x4_t one;
uint32x4_t big_bound;
#if WANT_SIMD_EXCEPT
uint32x4_t tiny_bound;
#endif
} data = {
+ .one = V4 (1),
.log1pf_consts = V_LOG1PF_CONSTANTS_TABLE,
.big_bound = V4 (0x5f800000), /* asuint(0x1p64). */
#if WANT_SIMD_EXCEPT
@@ -38,20 +38,27 @@ const static struct data
};
static float32x4_t NOINLINE VPCS_ATTR
-special_case (float32x4_t x, float32x4_t y, uint32x4_t special)
+special_case (float32x4_t x, uint32x4_t sign, float32x4_t y,
+ uint32x4_t special, const struct data *d)
{
- return v_call_f32 (asinhf, x, y, special);
+ return v_call_f32 (
+ asinhf, x,
+ vreinterpretq_f32_u32 (veorq_u32 (
+ sign, vreinterpretq_u32_f32 (log1pf_inline (y, &d->log1pf_consts)))),
+ special);
}
/* Single-precision implementation of vector asinh(x), using vector log1p.
- Worst-case error is 2.66 ULP, at roughly +/-0.25:
- __v_asinhf(0x1.01b04p-2) got 0x1.fe163ep-3 want 0x1.fe1638p-3. */
+ Worst-case error is 2.59 ULP:
+ _ZGVnN4v_asinhf(0x1.d86124p-3) got 0x1.d449bep-3
+ want 0x1.d449c4p-3. */
VPCS_ATTR float32x4_t NOINLINE V_NAME_F1 (asinh) (float32x4_t x)
{
const struct data *dat = ptr_barrier (&data);
- uint32x4_t iax = vbicq_u32 (vreinterpretq_u32_f32 (x), SignMask);
- float32x4_t ax = vreinterpretq_f32_u32 (iax);
+ float32x4_t ax = vabsq_f32 (x);
+ uint32x4_t iax = vreinterpretq_u32_f32 (ax);
uint32x4_t special = vcgeq_u32 (iax, dat->big_bound);
+ uint32x4_t sign = veorq_u32 (vreinterpretq_u32_f32 (x), iax);
float32x4_t special_arg = x;
#if WANT_SIMD_EXCEPT
@@ -68,13 +75,13 @@ VPCS_ATTR float32x4_t NOINLINE V_NAME_F1 (asinh) (float32x4_t x)
/* asinh(x) = log(x + sqrt(x * x + 1)).
For positive x, asinh(x) = log1p(x + x * x / (1 + sqrt(x * x + 1))). */
float32x4_t d
- = vaddq_f32 (v_f32 (1), vsqrtq_f32 (vfmaq_f32 (v_f32 (1), x, x)));
- float32x4_t y = log1pf_inline (
- vaddq_f32 (ax, vdivq_f32 (vmulq_f32 (ax, ax), d)), dat->log1pf_consts);
+ = vaddq_f32 (v_f32 (1), vsqrtq_f32 (vfmaq_f32 (dat->one, ax, ax)));
+ float32x4_t y = vaddq_f32 (ax, vdivq_f32 (vmulq_f32 (ax, ax), d));
if (__glibc_unlikely (v_any_u32 (special)))
- return special_case (special_arg, vbslq_f32 (SignMask, x, y), special);
- return vbslq_f32 (SignMask, x, y);
+ return special_case (special_arg, sign, y, special, dat);
+ return vreinterpretq_f32_u32 (veorq_u32 (
+ sign, vreinterpretq_u32_f32 (log1pf_inline (y, &dat->log1pf_consts))));
}
libmvec_hidden_def (V_NAME_F1 (asinh))
HALF_WIDTH_ALIAS_F1 (asinh)
diff --git a/sysdeps/aarch64/fpu/atanhf_advsimd.c b/sysdeps/aarch64/fpu/atanhf_advsimd.c
index ae488f7..818b6c9 100644
--- a/sysdeps/aarch64/fpu/atanhf_advsimd.c
+++ b/sysdeps/aarch64/fpu/atanhf_advsimd.c
@@ -40,15 +40,17 @@ const static struct data
#define Half v_u32 (0x3f000000)
static float32x4_t NOINLINE VPCS_ATTR
-special_case (float32x4_t x, float32x4_t y, uint32x4_t special)
+special_case (float32x4_t x, float32x4_t halfsign, float32x4_t y,
+ uint32x4_t special)
{
- return v_call_f32 (atanhf, x, y, special);
+ return v_call_f32 (atanhf, vbslq_f32 (AbsMask, x, halfsign),
+ vmulq_f32 (halfsign, y), special);
}
/* Approximation for vector single-precision atanh(x) using modified log1p.
- The maximum error is 3.08 ULP:
- __v_atanhf(0x1.ff215p-5) got 0x1.ffcb7cp-5
- want 0x1.ffcb82p-5. */
+ The maximum error is 2.93 ULP:
+ _ZGVnN4v_atanhf(0x1.f43d7p-5) got 0x1.f4dcfep-5
+ want 0x1.f4dcf8p-5. */
VPCS_ATTR float32x4_t NOINLINE V_NAME_F1 (atanh) (float32x4_t x)
{
const struct data *d = ptr_barrier (&data);
@@ -68,11 +70,19 @@ VPCS_ATTR float32x4_t NOINLINE V_NAME_F1 (atanh) (float32x4_t x)
uint32x4_t special = vcgeq_u32 (iax, d->one);
#endif
- float32x4_t y = vdivq_f32 (vaddq_f32 (ax, ax), vsubq_f32 (v_f32 (1), ax));
- y = log1pf_inline (y, d->log1pf_consts);
+ float32x4_t y = vdivq_f32 (vaddq_f32 (ax, ax),
+ vsubq_f32 (vreinterpretq_f32_u32 (d->one), ax));
+ y = log1pf_inline (y, &d->log1pf_consts);
+ /* If exceptions not required, pass ax to special-case for shorter dependency
+ chain. If exceptions are required ax will have been zerofied, so have to
+ pass x. */
if (__glibc_unlikely (v_any_u32 (special)))
- return special_case (x, vmulq_f32 (halfsign, y), special);
+#if WANT_SIMD_EXCEPT
+ return special_case (x, halfsign, y, special);
+#else
+ return special_case (ax, halfsign, y, special);
+#endif
return vmulq_f32 (halfsign, y);
}
libmvec_hidden_def (V_NAME_F1 (atanh))
diff --git a/sysdeps/aarch64/fpu/bits/math-vector.h b/sysdeps/aarch64/fpu/bits/math-vector.h
index 7484150..f295fe1 100644
--- a/sysdeps/aarch64/fpu/bits/math-vector.h
+++ b/sysdeps/aarch64/fpu/bits/math-vector.h
@@ -113,6 +113,10 @@
# define __DECL_SIMD_log2 __DECL_SIMD_aarch64
# undef __DECL_SIMD_log2f
# define __DECL_SIMD_log2f __DECL_SIMD_aarch64
+# undef __DECL_SIMD_logp1
+# define __DECL_SIMD_logp1 __DECL_SIMD_aarch64
+# undef __DECL_SIMD_logp1f
+# define __DECL_SIMD_logp1f __DECL_SIMD_aarch64
# undef __DECL_SIMD_pow
# define __DECL_SIMD_pow __DECL_SIMD_aarch64
# undef __DECL_SIMD_powf
@@ -180,6 +184,7 @@ __vpcs __f32x4_t _ZGVnN4v_logf (__f32x4_t);
__vpcs __f32x4_t _ZGVnN4v_log10f (__f32x4_t);
__vpcs __f32x4_t _ZGVnN4v_log1pf (__f32x4_t);
__vpcs __f32x4_t _ZGVnN4v_log2f (__f32x4_t);
+__vpcs __f32x4_t _ZGVnN4v_logp1f (__f32x4_t);
__vpcs __f32x4_t _ZGVnN4vv_powf (__f32x4_t, __f32x4_t);
__vpcs __f32x4_t _ZGVnN4v_sinf (__f32x4_t);
__vpcs __f32x4_t _ZGVnN4v_sinhf (__f32x4_t);
@@ -207,6 +212,7 @@ __vpcs __f64x2_t _ZGVnN2v_log (__f64x2_t);
__vpcs __f64x2_t _ZGVnN2v_log10 (__f64x2_t);
__vpcs __f64x2_t _ZGVnN2v_log1p (__f64x2_t);
__vpcs __f64x2_t _ZGVnN2v_log2 (__f64x2_t);
+__vpcs __f64x2_t _ZGVnN2v_logp1 (__f64x2_t);
__vpcs __f64x2_t _ZGVnN2vv_pow (__f64x2_t, __f64x2_t);
__vpcs __f64x2_t _ZGVnN2v_sin (__f64x2_t);
__vpcs __f64x2_t _ZGVnN2v_sinh (__f64x2_t);
@@ -239,6 +245,7 @@ __sv_f32_t _ZGVsMxv_logf (__sv_f32_t, __sv_bool_t);
__sv_f32_t _ZGVsMxv_log10f (__sv_f32_t, __sv_bool_t);
__sv_f32_t _ZGVsMxv_log1pf (__sv_f32_t, __sv_bool_t);
__sv_f32_t _ZGVsMxv_log2f (__sv_f32_t, __sv_bool_t);
+__sv_f32_t _ZGVsMxv_logp1f (__sv_f32_t, __sv_bool_t);
__sv_f32_t _ZGVsMxvv_powf (__sv_f32_t, __sv_f32_t, __sv_bool_t);
__sv_f32_t _ZGVsMxv_sinf (__sv_f32_t, __sv_bool_t);
__sv_f32_t _ZGVsMxv_sinhf (__sv_f32_t, __sv_bool_t);
@@ -266,6 +273,7 @@ __sv_f64_t _ZGVsMxv_log (__sv_f64_t, __sv_bool_t);
__sv_f64_t _ZGVsMxv_log10 (__sv_f64_t, __sv_bool_t);
__sv_f64_t _ZGVsMxv_log1p (__sv_f64_t, __sv_bool_t);
__sv_f64_t _ZGVsMxv_log2 (__sv_f64_t, __sv_bool_t);
+__sv_f64_t _ZGVsMxv_logp1 (__sv_f64_t, __sv_bool_t);
__sv_f64_t _ZGVsMxvv_pow (__sv_f64_t, __sv_f64_t, __sv_bool_t);
__sv_f64_t _ZGVsMxv_sin (__sv_f64_t, __sv_bool_t);
__sv_f64_t _ZGVsMxv_sinh (__sv_f64_t, __sv_bool_t);
diff --git a/sysdeps/aarch64/fpu/cos_advsimd.c b/sysdeps/aarch64/fpu/cos_advsimd.c
index 3924c9c..11a89b1 100644
--- a/sysdeps/aarch64/fpu/cos_advsimd.c
+++ b/sysdeps/aarch64/fpu/cos_advsimd.c
@@ -22,7 +22,7 @@
static const struct data
{
float64x2_t poly[7];
- float64x2_t range_val, shift, inv_pi, half_pi, pi_1, pi_2, pi_3;
+ float64x2_t range_val, inv_pi, pi_1, pi_2, pi_3;
} data = {
/* Worst-case error is 3.3 ulp in [-pi/2, pi/2]. */
.poly = { V2 (-0x1.555555555547bp-3), V2 (0x1.1111111108a4dp-7),
@@ -30,11 +30,9 @@ static const struct data
V2 (-0x1.ae633919987c6p-26), V2 (0x1.60e277ae07cecp-33),
V2 (-0x1.9e9540300a1p-41) },
.inv_pi = V2 (0x1.45f306dc9c883p-2),
- .half_pi = V2 (0x1.921fb54442d18p+0),
.pi_1 = V2 (0x1.921fb54442d18p+1),
.pi_2 = V2 (0x1.1a62633145c06p-53),
.pi_3 = V2 (0x1.c1cd129024e09p-106),
- .shift = V2 (0x1.8p52),
.range_val = V2 (0x1p23)
};
@@ -68,10 +66,9 @@ float64x2_t VPCS_ATTR V_NAME_D1 (cos) (float64x2_t x)
#endif
/* n = rint((|x|+pi/2)/pi) - 0.5. */
- n = vfmaq_f64 (d->shift, d->inv_pi, vaddq_f64 (r, d->half_pi));
- odd = vshlq_n_u64 (vreinterpretq_u64_f64 (n), 63);
- n = vsubq_f64 (n, d->shift);
- n = vsubq_f64 (n, v_f64 (0.5));
+ n = vrndaq_f64 (vfmaq_f64 (v_f64 (0.5), r, d->inv_pi));
+ odd = vshlq_n_u64 (vreinterpretq_u64_s64 (vcvtq_s64_f64 (n)), 63);
+ n = vsubq_f64 (n, v_f64 (0.5f));
/* r = |x| - n*pi (range reduction into -pi/2 .. pi/2). */
r = vfmsq_f64 (r, d->pi_1, n);
diff --git a/sysdeps/aarch64/fpu/cosf_advsimd.c b/sysdeps/aarch64/fpu/cosf_advsimd.c
index d0c285b..85a1b37 100644
--- a/sysdeps/aarch64/fpu/cosf_advsimd.c
+++ b/sysdeps/aarch64/fpu/cosf_advsimd.c
@@ -22,7 +22,7 @@
static const struct data
{
float32x4_t poly[4];
- float32x4_t range_val, inv_pi, half_pi, shift, pi_1, pi_2, pi_3;
+ float32x4_t range_val, inv_pi, pi_1, pi_2, pi_3;
} data = {
/* 1.886 ulp error. */
.poly = { V4 (-0x1.555548p-3f), V4 (0x1.110df4p-7f), V4 (-0x1.9f42eap-13f),
@@ -33,8 +33,6 @@ static const struct data
.pi_3 = V4 (-0x1.ee59dap-49f),
.inv_pi = V4 (0x1.45f306p-2f),
- .shift = V4 (0x1.8p+23f),
- .half_pi = V4 (0x1.921fb6p0f),
.range_val = V4 (0x1p20f)
};
@@ -69,9 +67,8 @@ float32x4_t VPCS_ATTR NOINLINE V_NAME_F1 (cos) (float32x4_t x)
#endif
/* n = rint((|x|+pi/2)/pi) - 0.5. */
- n = vfmaq_f32 (d->shift, d->inv_pi, vaddq_f32 (r, d->half_pi));
- odd = vshlq_n_u32 (vreinterpretq_u32_f32 (n), 31);
- n = vsubq_f32 (n, d->shift);
+ n = vrndaq_f32 (vfmaq_f32 (v_f32 (0.5), r, d->inv_pi));
+ odd = vshlq_n_u32 (vreinterpretq_u32_s32 (vcvtq_s32_f32 (n)), 31);
n = vsubq_f32 (n, v_f32 (0.5f));
/* r = |x| - n*pi (range reduction into -pi/2 .. pi/2). */
diff --git a/sysdeps/aarch64/fpu/coshf_sve.c b/sysdeps/aarch64/fpu/coshf_sve.c
index e5d8a29..7ad6efa 100644
--- a/sysdeps/aarch64/fpu/coshf_sve.c
+++ b/sysdeps/aarch64/fpu/coshf_sve.c
@@ -23,37 +23,42 @@
static const struct data
{
struct sv_expf_data expf_consts;
- uint32_t special_bound;
+ float special_bound;
} data = {
.expf_consts = SV_EXPF_DATA,
/* 0x1.5a92d8p+6: expf overflows above this, so have to use special case. */
- .special_bound = 0x42ad496c,
+ .special_bound = 0x1.5a92d8p+6,
};
static svfloat32_t NOINLINE
-special_case (svfloat32_t x, svfloat32_t y, svbool_t pg)
+special_case (svfloat32_t x, svfloat32_t half_e, svfloat32_t half_over_e,
+ svbool_t pg)
{
- return sv_call_f32 (coshf, x, y, pg);
+ return sv_call_f32 (coshf, x, svadd_x (svptrue_b32 (), half_e, half_over_e),
+ pg);
}
/* Single-precision vector cosh, using vector expf.
- Maximum error is 1.89 ULP:
- _ZGVsMxv_coshf (-0x1.65898cp+6) got 0x1.f00aep+127
- want 0x1.f00adcp+127. */
+ Maximum error is 2.77 ULP:
+ _ZGVsMxv_coshf(-0x1.5b38f4p+1) got 0x1.e45946p+2
+ want 0x1.e4594cp+2. */
svfloat32_t SV_NAME_F1 (cosh) (svfloat32_t x, svbool_t pg)
{
const struct data *d = ptr_barrier (&data);
- svfloat32_t ax = svabs_x (pg, x);
- svbool_t special = svcmpge (pg, svreinterpret_u32 (ax), d->special_bound);
+ svbool_t special = svacge (pg, x, d->special_bound);
- /* Calculate cosh by exp(x) / 2 + exp(-x) / 2. */
- svfloat32_t t = expf_inline (ax, pg, &d->expf_consts);
- svfloat32_t half_t = svmul_x (pg, t, 0.5);
- svfloat32_t half_over_t = svdivr_x (pg, t, 0.5);
+ /* Calculate cosh by exp(x) / 2 + exp(-x) / 2.
+ Note that x is passed to exp here, rather than |x|. This is to avoid using
+ destructive unary ABS for better register usage. However it means the
+ routine is not exactly symmetrical, as the exp helper is slightly less
+ accurate in the negative range. */
+ svfloat32_t e = expf_inline (x, pg, &d->expf_consts);
+ svfloat32_t half_e = svmul_x (svptrue_b32 (), e, 0.5);
+ svfloat32_t half_over_e = svdivr_x (pg, e, 0.5);
if (__glibc_unlikely (svptest_any (pg, special)))
- return special_case (x, svadd_x (pg, half_t, half_over_t), special);
+ return special_case (x, half_e, half_over_e, special);
- return svadd_x (pg, half_t, half_over_t);
+ return svadd_x (svptrue_b32 (), half_e, half_over_e);
}
diff --git a/sysdeps/aarch64/fpu/exp10f_sve.c b/sysdeps/aarch64/fpu/exp10f_sve.c
index e09b2f3..8aa3fa9 100644
--- a/sysdeps/aarch64/fpu/exp10f_sve.c
+++ b/sysdeps/aarch64/fpu/exp10f_sve.c
@@ -18,74 +18,83 @@
<https://www.gnu.org/licenses/>. */
#include "sv_math.h"
-#include "poly_sve_f32.h"
-/* For x < -SpecialBound, the result is subnormal and not handled correctly by
+/* For x < -Thres, the result is subnormal and not handled correctly by
FEXPA. */
-#define SpecialBound 37.9
+#define Thres 37.9
static const struct data
{
- float poly[5];
- float shift, log10_2, log2_10_hi, log2_10_lo, special_bound;
+ float log2_10_lo, c0, c2, c4;
+ float c1, c3, log10_2;
+ float shift, log2_10_hi, thres;
} data = {
/* Coefficients generated using Remez algorithm with minimisation of relative
error.
rel error: 0x1.89dafa3p-24
abs error: 0x1.167d55p-23 in [-log10(2)/2, log10(2)/2]
maxerr: 0.52 +0.5 ulp. */
- .poly = { 0x1.26bb16p+1f, 0x1.5350d2p+1f, 0x1.04744ap+1f, 0x1.2d8176p+0f,
- 0x1.12b41ap-1f },
+ .c0 = 0x1.26bb16p+1f,
+ .c1 = 0x1.5350d2p+1f,
+ .c2 = 0x1.04744ap+1f,
+ .c3 = 0x1.2d8176p+0f,
+ .c4 = 0x1.12b41ap-1f,
/* 1.5*2^17 + 127, a shift value suitable for FEXPA. */
- .shift = 0x1.903f8p17f,
+ .shift = 0x1.803f8p17f,
.log10_2 = 0x1.a934fp+1,
.log2_10_hi = 0x1.344136p-2,
.log2_10_lo = -0x1.ec10cp-27,
- .special_bound = SpecialBound,
+ .thres = Thres,
};
-static svfloat32_t NOINLINE
-special_case (svfloat32_t x, svfloat32_t y, svbool_t special)
+static inline svfloat32_t
+sv_exp10f_inline (svfloat32_t x, const svbool_t pg, const struct data *d)
{
- return sv_call_f32 (exp10f, x, y, special);
-}
-
-/* Single-precision SVE exp10f routine. Implements the same algorithm
- as AdvSIMD exp10f.
- Worst case error is 1.02 ULPs.
- _ZGVsMxv_exp10f(-0x1.040488p-4) got 0x1.ba5f9ep-1
- want 0x1.ba5f9cp-1. */
-svfloat32_t SV_NAME_F1 (exp10) (svfloat32_t x, const svbool_t pg)
-{
- const struct data *d = ptr_barrier (&data);
/* exp10(x) = 2^(n/N) * 10^r = 2^n * (1 + poly (r)),
with poly(r) in [1/sqrt(2), sqrt(2)] and
x = r + n * log10(2) / N, with r in [-log10(2)/2N, log10(2)/2N]. */
- /* Load some constants in quad-word chunks to minimise memory access (last
- lane is wasted). */
- svfloat32_t log10_2_and_inv = svld1rq (svptrue_b32 (), &d->log10_2);
+ svfloat32_t lane_consts = svld1rq (svptrue_b32 (), &d->log2_10_lo);
/* n = round(x/(log10(2)/N)). */
svfloat32_t shift = sv_f32 (d->shift);
- svfloat32_t z = svmla_lane (shift, x, log10_2_and_inv, 0);
- svfloat32_t n = svsub_x (pg, z, shift);
+ svfloat32_t z = svmad_x (pg, sv_f32 (d->log10_2), x, shift);
+ svfloat32_t n = svsub_x (svptrue_b32 (), z, shift);
/* r = x - n*log10(2)/N. */
- svfloat32_t r = svmls_lane (x, n, log10_2_and_inv, 1);
- r = svmls_lane (r, n, log10_2_and_inv, 2);
+ svfloat32_t r = svmsb_x (pg, sv_f32 (d->log2_10_hi), n, x);
+ r = svmls_lane (r, n, lane_consts, 0);
- svbool_t special = svacgt (pg, x, d->special_bound);
svfloat32_t scale = svexpa (svreinterpret_u32 (z));
/* Polynomial evaluation: poly(r) ~ exp10(r)-1. */
- svfloat32_t r2 = svmul_x (pg, r, r);
- svfloat32_t poly
- = svmla_x (pg, svmul_x (pg, r, d->poly[0]),
- sv_pairwise_poly_3_f32_x (pg, r, r2, d->poly + 1), r2);
-
- if (__glibc_unlikely (svptest_any (pg, special)))
- return special_case (x, svmla_x (pg, scale, scale, poly), special);
+ svfloat32_t p12 = svmla_lane (sv_f32 (d->c1), r, lane_consts, 2);
+ svfloat32_t p34 = svmla_lane (sv_f32 (d->c3), r, lane_consts, 3);
+ svfloat32_t r2 = svmul_x (svptrue_b32 (), r, r);
+ svfloat32_t p14 = svmla_x (pg, p12, p34, r2);
+ svfloat32_t p0 = svmul_lane (r, lane_consts, 1);
+ svfloat32_t poly = svmla_x (pg, p0, r2, p14);
return svmla_x (pg, scale, scale, poly);
}
+
+static svfloat32_t NOINLINE
+special_case (svfloat32_t x, svbool_t special, const struct data *d)
+{
+ return sv_call_f32 (exp10f, x, sv_exp10f_inline (x, svptrue_b32 (), d),
+ special);
+}
+
+/* Single-precision SVE exp10f routine. Implements the same algorithm
+ as AdvSIMD exp10f.
+ Worst case error is 1.02 ULPs.
+ _ZGVsMxv_exp10f(-0x1.040488p-4) got 0x1.ba5f9ep-1
+ want 0x1.ba5f9cp-1. */
+svfloat32_t SV_NAME_F1 (exp10) (svfloat32_t x, const svbool_t pg)
+{
+ const struct data *d = ptr_barrier (&data);
+ svbool_t special = svacgt (pg, x, d->thres);
+ if (__glibc_unlikely (svptest_any (special, special)))
+ return special_case (x, special, d);
+ return sv_exp10f_inline (x, pg, d);
+}
diff --git a/sysdeps/aarch64/fpu/exp2f_sve.c b/sysdeps/aarch64/fpu/exp2f_sve.c
index 8a686e3..c6216be 100644
--- a/sysdeps/aarch64/fpu/exp2f_sve.c
+++ b/sysdeps/aarch64/fpu/exp2f_sve.c
@@ -24,54 +24,64 @@
static const struct data
{
- float poly[5];
+ float c0, c2, c4, c1, c3;
float shift, thres;
} data = {
- /* Coefficients copied from the polynomial in AdvSIMD variant, reversed for
- compatibility with polynomial helpers. */
- .poly = { 0x1.62e422p-1f, 0x1.ebf9bcp-3f, 0x1.c6bd32p-5f, 0x1.3ce9e4p-7f,
- 0x1.59977ap-10f },
+ /* Coefficients copied from the polynomial in AdvSIMD variant. */
+ .c0 = 0x1.62e422p-1f,
+ .c1 = 0x1.ebf9bcp-3f,
+ .c2 = 0x1.c6bd32p-5f,
+ .c3 = 0x1.3ce9e4p-7f,
+ .c4 = 0x1.59977ap-10f,
/* 1.5*2^17 + 127. */
- .shift = 0x1.903f8p17f,
+ .shift = 0x1.803f8p17f,
/* Roughly 87.3. For x < -Thres, the result is subnormal and not handled
correctly by FEXPA. */
.thres = Thres,
};
-static svfloat32_t NOINLINE
-special_case (svfloat32_t x, svfloat32_t y, svbool_t special)
-{
- return sv_call_f32 (exp2f, x, y, special);
-}
-
-/* Single-precision SVE exp2f routine. Implements the same algorithm
- as AdvSIMD exp2f.
- Worst case error is 1.04 ULPs.
- SV_NAME_F1 (exp2)(0x1.943b9p-1) got 0x1.ba7eb2p+0
- want 0x1.ba7ebp+0. */
-svfloat32_t SV_NAME_F1 (exp2) (svfloat32_t x, const svbool_t pg)
+static inline svfloat32_t
+sv_exp2f_inline (svfloat32_t x, const svbool_t pg, const struct data *d)
{
- const struct data *d = ptr_barrier (&data);
/* exp2(x) = 2^n (1 + poly(r)), with 1 + poly(r) in [1/sqrt(2),sqrt(2)]
x = n + r, with r in [-1/2, 1/2]. */
- svfloat32_t shift = sv_f32 (d->shift);
- svfloat32_t z = svadd_x (pg, x, shift);
- svfloat32_t n = svsub_x (pg, z, shift);
- svfloat32_t r = svsub_x (pg, x, n);
+ svfloat32_t z = svadd_x (svptrue_b32 (), x, d->shift);
+ svfloat32_t n = svsub_x (svptrue_b32 (), z, d->shift);
+ svfloat32_t r = svsub_x (svptrue_b32 (), x, n);
- svbool_t special = svacgt (pg, x, d->thres);
svfloat32_t scale = svexpa (svreinterpret_u32 (z));
/* Polynomial evaluation: poly(r) ~ exp2(r)-1.
Evaluate polynomial use hybrid scheme - offset ESTRIN by 1 for
coefficients 1 to 4, and apply most significant coefficient directly. */
- svfloat32_t r2 = svmul_x (pg, r, r);
- svfloat32_t p14 = sv_pairwise_poly_3_f32_x (pg, r, r2, d->poly + 1);
- svfloat32_t p0 = svmul_x (pg, r, d->poly[0]);
+ svfloat32_t even_coeffs = svld1rq (svptrue_b32 (), &d->c0);
+ svfloat32_t r2 = svmul_x (svptrue_b32 (), r, r);
+ svfloat32_t p12 = svmla_lane (sv_f32 (d->c1), r, even_coeffs, 1);
+ svfloat32_t p34 = svmla_lane (sv_f32 (d->c3), r, even_coeffs, 2);
+ svfloat32_t p14 = svmla_x (pg, p12, r2, p34);
+ svfloat32_t p0 = svmul_lane (r, even_coeffs, 0);
svfloat32_t poly = svmla_x (pg, p0, r2, p14);
- if (__glibc_unlikely (svptest_any (pg, special)))
- return special_case (x, svmla_x (pg, scale, scale, poly), special);
-
return svmla_x (pg, scale, scale, poly);
}
+
+static svfloat32_t NOINLINE
+special_case (svfloat32_t x, svbool_t special, const struct data *d)
+{
+ return sv_call_f32 (exp2f, x, sv_exp2f_inline (x, svptrue_b32 (), d),
+ special);
+}
+
+/* Single-precision SVE exp2f routine. Implements the same algorithm
+ as AdvSIMD exp2f.
+ Worst case error is 1.04 ULPs.
+ _ZGVsMxv_exp2f(-0x1.af994ap-3) got 0x1.ba6a66p-1
+ want 0x1.ba6a64p-1. */
+svfloat32_t SV_NAME_F1 (exp2) (svfloat32_t x, const svbool_t pg)
+{
+ const struct data *d = ptr_barrier (&data);
+ svbool_t special = svacgt (pg, x, d->thres);
+ if (__glibc_unlikely (svptest_any (special, special)))
+ return special_case (x, special, d);
+ return sv_exp2f_inline (x, pg, d);
+}
diff --git a/sysdeps/aarch64/fpu/expf_advsimd.c b/sysdeps/aarch64/fpu/expf_advsimd.c
index 99d2e64..5c9cb72 100644
--- a/sysdeps/aarch64/fpu/expf_advsimd.c
+++ b/sysdeps/aarch64/fpu/expf_advsimd.c
@@ -22,7 +22,7 @@
static const struct data
{
float32x4_t poly[5];
- float32x4_t shift, inv_ln2, ln2_hi, ln2_lo;
+ float32x4_t inv_ln2, ln2_hi, ln2_lo;
uint32x4_t exponent_bias;
#if !WANT_SIMD_EXCEPT
float32x4_t special_bound, scale_thresh;
@@ -31,7 +31,6 @@ static const struct data
/* maxerr: 1.45358 +0.5 ulp. */
.poly = { V4 (0x1.0e4020p-7f), V4 (0x1.573e2ep-5f), V4 (0x1.555e66p-3f),
V4 (0x1.fffdb6p-2f), V4 (0x1.ffffecp-1f) },
- .shift = V4 (0x1.8p23f),
.inv_ln2 = V4 (0x1.715476p+0f),
.ln2_hi = V4 (0x1.62e4p-1f),
.ln2_lo = V4 (0x1.7f7d1cp-20f),
@@ -85,7 +84,7 @@ special_case (float32x4_t poly, float32x4_t n, uint32x4_t e, uint32x4_t cmp1,
float32x4_t VPCS_ATTR NOINLINE V_NAME_F1 (exp) (float32x4_t x)
{
const struct data *d = ptr_barrier (&data);
- float32x4_t n, r, r2, scale, p, q, poly, z;
+ float32x4_t n, r, r2, scale, p, q, poly;
uint32x4_t cmp, e;
#if WANT_SIMD_EXCEPT
@@ -104,11 +103,10 @@ float32x4_t VPCS_ATTR NOINLINE V_NAME_F1 (exp) (float32x4_t x)
/* exp(x) = 2^n (1 + poly(r)), with 1 + poly(r) in [1/sqrt(2),sqrt(2)]
x = ln2*n + r, with r in [-ln2/2, ln2/2]. */
- z = vfmaq_f32 (d->shift, x, d->inv_ln2);
- n = vsubq_f32 (z, d->shift);
+ n = vrndaq_f32 (vmulq_f32 (x, d->inv_ln2));
r = vfmsq_f32 (x, n, d->ln2_hi);
r = vfmsq_f32 (r, n, d->ln2_lo);
- e = vshlq_n_u32 (vreinterpretq_u32_f32 (z), 23);
+ e = vshlq_n_u32 (vreinterpretq_u32_s32 (vcvtq_s32_f32 (n)), 23);
scale = vreinterpretq_f32_u32 (vaddq_u32 (e, d->exponent_bias));
#if !WANT_SIMD_EXCEPT
diff --git a/sysdeps/aarch64/fpu/expf_sve.c b/sysdeps/aarch64/fpu/expf_sve.c
index 3ba79bc..da93e01 100644
--- a/sysdeps/aarch64/fpu/expf_sve.c
+++ b/sysdeps/aarch64/fpu/expf_sve.c
@@ -18,33 +18,25 @@
<https://www.gnu.org/licenses/>. */
#include "sv_math.h"
+#include "sv_expf_inline.h"
+
+/* Roughly 87.3. For x < -Thres, the result is subnormal and not handled
+ correctly by FEXPA. */
+#define Thres 0x1.5d5e2ap+6f
static const struct data
{
- float poly[5];
- float inv_ln2, ln2_hi, ln2_lo, shift, thres;
+ struct sv_expf_data d;
+ float thres;
} data = {
- /* Coefficients copied from the polynomial in AdvSIMD variant, reversed for
- compatibility with polynomial helpers. */
- .poly = { 0x1.ffffecp-1f, 0x1.fffdb6p-2f, 0x1.555e66p-3f, 0x1.573e2ep-5f,
- 0x1.0e4020p-7f },
- .inv_ln2 = 0x1.715476p+0f,
- .ln2_hi = 0x1.62e4p-1f,
- .ln2_lo = 0x1.7f7d1cp-20f,
- /* 1.5*2^17 + 127. */
- .shift = 0x1.903f8p17f,
- /* Roughly 87.3. For x < -Thres, the result is subnormal and not handled
- correctly by FEXPA. */
- .thres = 0x1.5d5e2ap+6f,
+ .d = SV_EXPF_DATA,
+ .thres = Thres,
};
-#define C(i) sv_f32 (d->poly[i])
-#define ExponentBias 0x3f800000
-
static svfloat32_t NOINLINE
-special_case (svfloat32_t x, svfloat32_t y, svbool_t special)
+special_case (svfloat32_t x, svbool_t special, const struct sv_expf_data *d)
{
- return sv_call_f32 (expf, x, y, special);
+ return sv_call_f32 (expf, x, expf_inline (x, svptrue_b32 (), d), special);
}
/* Optimised single-precision SVE exp function.
@@ -54,36 +46,8 @@ special_case (svfloat32_t x, svfloat32_t y, svbool_t special)
svfloat32_t SV_NAME_F1 (exp) (svfloat32_t x, const svbool_t pg)
{
const struct data *d = ptr_barrier (&data);
-
- /* exp(x) = 2^n (1 + poly(r)), with 1 + poly(r) in [1/sqrt(2),sqrt(2)]
- x = ln2*n + r, with r in [-ln2/2, ln2/2]. */
-
- /* Load some constants in quad-word chunks to minimise memory access (last
- lane is wasted). */
- svfloat32_t invln2_and_ln2 = svld1rq (svptrue_b32 (), &d->inv_ln2);
-
- /* n = round(x/(ln2/N)). */
- svfloat32_t z = svmla_lane (sv_f32 (d->shift), x, invln2_and_ln2, 0);
- svfloat32_t n = svsub_x (pg, z, d->shift);
-
- /* r = x - n*ln2/N. */
- svfloat32_t r = svmls_lane (x, n, invln2_and_ln2, 1);
- r = svmls_lane (r, n, invln2_and_ln2, 2);
-
- /* scale = 2^(n/N). */
svbool_t is_special_case = svacgt (pg, x, d->thres);
- svfloat32_t scale = svexpa (svreinterpret_u32 (z));
-
- /* y = exp(r) - 1 ~= r + C0 r^2 + C1 r^3 + C2 r^4 + C3 r^5 + C4 r^6. */
- svfloat32_t p12 = svmla_x (pg, C (1), C (2), r);
- svfloat32_t p34 = svmla_x (pg, C (3), C (4), r);
- svfloat32_t r2 = svmul_x (pg, r, r);
- svfloat32_t p14 = svmla_x (pg, p12, p34, r2);
- svfloat32_t p0 = svmul_x (pg, r, C (0));
- svfloat32_t poly = svmla_x (pg, p0, r2, p14);
-
if (__glibc_unlikely (svptest_any (pg, is_special_case)))
- return special_case (x, svmla_x (pg, scale, scale, poly), is_special_case);
-
- return svmla_x (pg, scale, scale, poly);
+ return special_case (x, is_special_case, &d->d);
+ return expf_inline (x, pg, &d->d);
}
diff --git a/sysdeps/aarch64/fpu/expm1f_advsimd.c b/sysdeps/aarch64/fpu/expm1f_advsimd.c
index a0616ec..8303ca2 100644
--- a/sysdeps/aarch64/fpu/expm1f_advsimd.c
+++ b/sysdeps/aarch64/fpu/expm1f_advsimd.c
@@ -18,27 +18,18 @@
<https://www.gnu.org/licenses/>. */
#include "v_math.h"
-#include "poly_advsimd_f32.h"
+#include "v_expm1f_inline.h"
static const struct data
{
- float32x4_t poly[5];
- float invln2_and_ln2[4];
- float32x4_t shift;
- int32x4_t exponent_bias;
+ struct v_expm1f_data d;
#if WANT_SIMD_EXCEPT
uint32x4_t thresh;
#else
float32x4_t oflow_bound;
#endif
} data = {
- /* Generated using fpminimax with degree=5 in [-log(2)/2, log(2)/2]. */
- .poly = { V4 (0x1.fffffep-2), V4 (0x1.5554aep-3), V4 (0x1.555736p-5),
- V4 (0x1.12287cp-7), V4 (0x1.6b55a2p-10) },
- /* Stores constants: invln2, ln2_hi, ln2_lo, 0. */
- .invln2_and_ln2 = { 0x1.715476p+0f, 0x1.62e4p-1f, 0x1.7f7d1cp-20f, 0 },
- .shift = V4 (0x1.8p23f),
- .exponent_bias = V4 (0x3f800000),
+ .d = V_EXPM1F_DATA,
#if !WANT_SIMD_EXCEPT
/* Value above which expm1f(x) should overflow. Absolute value of the
underflow bound is greater than this, so it catches both cases - there is
@@ -55,67 +46,38 @@ static const struct data
#define TinyBound v_u32 (0x34000000 << 1)
static float32x4_t VPCS_ATTR NOINLINE
-special_case (float32x4_t x, float32x4_t y, uint32x4_t special)
+special_case (float32x4_t x, uint32x4_t special, const struct data *d)
{
- return v_call_f32 (expm1f, x, y, special);
+ return v_call_f32 (
+ expm1f, x, expm1f_inline (v_zerofy_f32 (x, special), &d->d), special);
}
/* Single-precision vector exp(x) - 1 function.
- The maximum error is 1.51 ULP:
- _ZGVnN4v_expm1f (0x1.8baa96p-2) got 0x1.e2fb9p-2
- want 0x1.e2fb94p-2. */
+ The maximum error is 1.62 ULP:
+ _ZGVnN4v_expm1f(0x1.85f83p-2) got 0x1.da9f4p-2
+ want 0x1.da9f44p-2. */
float32x4_t VPCS_ATTR NOINLINE V_NAME_F1 (expm1) (float32x4_t x)
{
const struct data *d = ptr_barrier (&data);
- uint32x4_t ix = vreinterpretq_u32_f32 (x);
#if WANT_SIMD_EXCEPT
+ uint32x4_t ix = vreinterpretq_u32_f32 (x);
/* If fp exceptions are to be triggered correctly, fall back to scalar for
|x| < 2^-23, |x| > oflow_bound, Inf & NaN. Add ix to itself for
shift-left by 1, and compare with thresh which was left-shifted offline -
this is effectively an absolute compare. */
uint32x4_t special
= vcgeq_u32 (vsubq_u32 (vaddq_u32 (ix, ix), TinyBound), d->thresh);
- if (__glibc_unlikely (v_any_u32 (special)))
- x = v_zerofy_f32 (x, special);
#else
/* Handles very large values (+ve and -ve), +/-NaN, +/-Inf. */
uint32x4_t special = vcagtq_f32 (x, d->oflow_bound);
#endif
- /* Reduce argument to smaller range:
- Let i = round(x / ln2)
- and f = x - i * ln2, then f is in [-ln2/2, ln2/2].
- exp(x) - 1 = 2^i * (expm1(f) + 1) - 1
- where 2^i is exact because i is an integer. */
- float32x4_t invln2_and_ln2 = vld1q_f32 (d->invln2_and_ln2);
- float32x4_t j
- = vsubq_f32 (vfmaq_laneq_f32 (d->shift, x, invln2_and_ln2, 0), d->shift);
- int32x4_t i = vcvtq_s32_f32 (j);
- float32x4_t f = vfmsq_laneq_f32 (x, j, invln2_and_ln2, 1);
- f = vfmsq_laneq_f32 (f, j, invln2_and_ln2, 2);
-
- /* Approximate expm1(f) using polynomial.
- Taylor expansion for expm1(x) has the form:
- x + ax^2 + bx^3 + cx^4 ....
- So we calculate the polynomial P(f) = a + bf + cf^2 + ...
- and assemble the approximation expm1(f) ~= f + f^2 * P(f). */
- float32x4_t p = v_horner_4_f32 (f, d->poly);
- p = vfmaq_f32 (f, vmulq_f32 (f, f), p);
-
- /* Assemble the result.
- expm1(x) ~= 2^i * (p + 1) - 1
- Let t = 2^i. */
- int32x4_t u = vaddq_s32 (vshlq_n_s32 (i, 23), d->exponent_bias);
- float32x4_t t = vreinterpretq_f32_s32 (u);
-
if (__glibc_unlikely (v_any_u32 (special)))
- return special_case (vreinterpretq_f32_u32 (ix),
- vfmaq_f32 (vsubq_f32 (t, v_f32 (1.0f)), p, t),
- special);
+ return special_case (x, special, d);
/* expm1(x) ~= p * t + (t - 1). */
- return vfmaq_f32 (vsubq_f32 (t, v_f32 (1.0f)), p, t);
+ return expm1f_inline (x, &d->d);
}
libmvec_hidden_def (V_NAME_F1 (expm1))
HALF_WIDTH_ALIAS_F1 (expm1)
diff --git a/sysdeps/aarch64/fpu/log10f_advsimd.c b/sysdeps/aarch64/fpu/log10f_advsimd.c
index 9347422..82228b5 100644
--- a/sysdeps/aarch64/fpu/log10f_advsimd.c
+++ b/sysdeps/aarch64/fpu/log10f_advsimd.c
@@ -22,11 +22,11 @@
static const struct data
{
- uint32x4_t min_norm;
+ uint32x4_t off, offset_lower_bound;
uint16x8_t special_bound;
+ uint32x4_t mantissa_mask;
float32x4_t poly[8];
float32x4_t inv_ln10, ln2;
- uint32x4_t off, mantissa_mask;
} data = {
/* Use order 9 for log10(1+x), i.e. order 8 for log10(1+x)/x, with x in
[-1/3, 1/3] (offset=2/3). Max. relative error: 0x1.068ee468p-25. */
@@ -35,18 +35,22 @@ static const struct data
V4 (-0x1.0fc92cp-4f), V4 (0x1.f5f76ap-5f) },
.ln2 = V4 (0x1.62e43p-1f),
.inv_ln10 = V4 (0x1.bcb7b2p-2f),
- .min_norm = V4 (0x00800000),
- .special_bound = V8 (0x7f00), /* asuint32(inf) - min_norm. */
+ /* Lower bound is the smallest positive normal float 0x00800000. For
+ optimised register use subnormals are detected after offset has been
+ subtracted, so lower bound is 0x0080000 - offset (which wraps around). */
+ .offset_lower_bound = V4 (0x00800000 - 0x3f2aaaab),
+ .special_bound = V8 (0x7f00), /* top16(asuint32(inf) - 0x00800000). */
.off = V4 (0x3f2aaaab), /* 0.666667. */
.mantissa_mask = V4 (0x007fffff),
};
static float32x4_t VPCS_ATTR NOINLINE
-special_case (float32x4_t x, float32x4_t y, float32x4_t p, float32x4_t r2,
- uint16x4_t cmp)
+special_case (float32x4_t y, uint32x4_t u_off, float32x4_t p, float32x4_t r2,
+ uint16x4_t cmp, const struct data *d)
{
/* Fall back to scalar code. */
- return v_call_f32 (log10f, x, vfmaq_f32 (y, p, r2), vmovl_u16 (cmp));
+ return v_call_f32 (log10f, vreinterpretq_f32_u32 (vaddq_u32 (u_off, d->off)),
+ vfmaq_f32 (y, p, r2), vmovl_u16 (cmp));
}
/* Fast implementation of AdvSIMD log10f,
@@ -58,15 +62,21 @@ special_case (float32x4_t x, float32x4_t y, float32x4_t p, float32x4_t r2,
float32x4_t VPCS_ATTR NOINLINE V_NAME_F1 (log10) (float32x4_t x)
{
const struct data *d = ptr_barrier (&data);
- uint32x4_t u = vreinterpretq_u32_f32 (x);
- uint16x4_t special = vcge_u16 (vsubhn_u32 (u, d->min_norm),
- vget_low_u16 (d->special_bound));
+
+ /* To avoid having to mov x out of the way, keep u after offset has been
+ applied, and recover x by adding the offset back in the special-case
+ handler. */
+ uint32x4_t u_off = vreinterpretq_u32_f32 (x);
/* x = 2^n * (1+r), where 2/3 < 1+r < 4/3. */
- u = vsubq_u32 (u, d->off);
+ u_off = vsubq_u32 (u_off, d->off);
float32x4_t n = vcvtq_f32_s32 (
- vshrq_n_s32 (vreinterpretq_s32_u32 (u), 23)); /* signextend. */
- u = vaddq_u32 (vandq_u32 (u, d->mantissa_mask), d->off);
+ vshrq_n_s32 (vreinterpretq_s32_u32 (u_off), 23)); /* signextend. */
+
+ uint16x4_t special = vcge_u16 (vsubhn_u32 (u_off, d->offset_lower_bound),
+ vget_low_u16 (d->special_bound));
+
+ uint32x4_t u = vaddq_u32 (vandq_u32 (u_off, d->mantissa_mask), d->off);
float32x4_t r = vsubq_f32 (vreinterpretq_f32_u32 (u), v_f32 (1.0f));
/* y = log10(1+r) + n * log10(2). */
@@ -77,7 +87,7 @@ float32x4_t VPCS_ATTR NOINLINE V_NAME_F1 (log10) (float32x4_t x)
y = vmulq_f32 (y, d->inv_ln10);
if (__glibc_unlikely (v_any_u16h (special)))
- return special_case (x, y, poly, r2, special);
+ return special_case (y, u_off, poly, r2, special, d);
return vfmaq_f32 (y, poly, r2);
}
libmvec_hidden_def (V_NAME_F1 (log10))
diff --git a/sysdeps/aarch64/fpu/log10f_sve.c b/sysdeps/aarch64/fpu/log10f_sve.c
index bdbb49c..7913679 100644
--- a/sysdeps/aarch64/fpu/log10f_sve.c
+++ b/sysdeps/aarch64/fpu/log10f_sve.c
@@ -24,6 +24,7 @@ static const struct data
float poly_0246[4];
float poly_1357[4];
float ln2, inv_ln10;
+ uint32_t off, lower;
} data = {
.poly_1357 = {
/* Coefficients copied from the AdvSIMD routine, then rearranged so that coeffs
@@ -35,18 +36,23 @@ static const struct data
-0x1.0fc92cp-4f },
.ln2 = 0x1.62e43p-1f,
.inv_ln10 = 0x1.bcb7b2p-2f,
+ .off = 0x3f2aaaab,
+ /* Lower bound is the smallest positive normal float 0x00800000. For
+ optimised register use subnormals are detected after offset has been
+ subtracted, so lower bound is 0x0080000 - offset (which wraps around). */
+ .lower = 0x00800000 - 0x3f2aaaab
};
-#define Min 0x00800000
-#define Max 0x7f800000
-#define Thres 0x7f000000 /* Max - Min. */
-#define Offset 0x3f2aaaab /* 0.666667. */
+#define Thres 0x7f000000 /* asuint32(inf) - 0x00800000. */
#define MantissaMask 0x007fffff
static svfloat32_t NOINLINE
-special_case (svfloat32_t x, svfloat32_t y, svbool_t special)
+special_case (svuint32_t u_off, svfloat32_t p, svfloat32_t r2, svfloat32_t y,
+ svbool_t cmp)
{
- return sv_call_f32 (log10f, x, y, special);
+ return sv_call_f32 (
+ log10f, svreinterpret_f32 (svadd_x (svptrue_b32 (), u_off, data.off)),
+ svmla_x (svptrue_b32 (), p, r2, y), cmp);
}
/* Optimised implementation of SVE log10f using the same algorithm and
@@ -57,23 +63,25 @@ special_case (svfloat32_t x, svfloat32_t y, svbool_t special)
svfloat32_t SV_NAME_F1 (log10) (svfloat32_t x, const svbool_t pg)
{
const struct data *d = ptr_barrier (&data);
- svuint32_t ix = svreinterpret_u32 (x);
- svbool_t special = svcmpge (pg, svsub_x (pg, ix, Min), Thres);
+
+ svuint32_t u_off = svreinterpret_u32 (x);
+
+ u_off = svsub_x (pg, u_off, d->off);
+ svbool_t special = svcmpge (pg, svsub_x (pg, u_off, d->lower), Thres);
/* x = 2^n * (1+r), where 2/3 < 1+r < 4/3. */
- ix = svsub_x (pg, ix, Offset);
svfloat32_t n = svcvt_f32_x (
- pg, svasr_x (pg, svreinterpret_s32 (ix), 23)); /* signextend. */
- ix = svand_x (pg, ix, MantissaMask);
- ix = svadd_x (pg, ix, Offset);
+ pg, svasr_x (pg, svreinterpret_s32 (u_off), 23)); /* signextend. */
+ svuint32_t ix = svand_x (pg, u_off, MantissaMask);
+ ix = svadd_x (pg, ix, d->off);
svfloat32_t r = svsub_x (pg, svreinterpret_f32 (ix), 1.0f);
/* y = log10(1+r) + n*log10(2)
log10(1+r) ~ r * InvLn(10) + P(r)
where P(r) is a polynomial. Use order 9 for log10(1+x), i.e. order 8 for
log10(1+x)/x, with x in [-1/3, 1/3] (offset=2/3). */
- svfloat32_t r2 = svmul_x (pg, r, r);
- svfloat32_t r4 = svmul_x (pg, r2, r2);
+ svfloat32_t r2 = svmul_x (svptrue_b32 (), r, r);
+ svfloat32_t r4 = svmul_x (svptrue_b32 (), r2, r2);
svfloat32_t p_1357 = svld1rq (svptrue_b32 (), &d->poly_1357[0]);
svfloat32_t q_01 = svmla_lane (sv_f32 (d->poly_0246[0]), r, p_1357, 0);
svfloat32_t q_23 = svmla_lane (sv_f32 (d->poly_0246[1]), r, p_1357, 1);
@@ -88,7 +96,6 @@ svfloat32_t SV_NAME_F1 (log10) (svfloat32_t x, const svbool_t pg)
hi = svmul_x (pg, hi, d->inv_ln10);
if (__glibc_unlikely (svptest_any (pg, special)))
- return special_case (x, svmla_x (svnot_z (pg, special), hi, r2, y),
- special);
- return svmla_x (pg, hi, r2, y);
+ return special_case (u_off, hi, r2, y, special);
+ return svmla_x (svptrue_b32 (), hi, r2, y);
}
diff --git a/sysdeps/aarch64/fpu/log1p_advsimd.c b/sysdeps/aarch64/fpu/log1p_advsimd.c
index ffc418f..114064c 100644
--- a/sysdeps/aarch64/fpu/log1p_advsimd.c
+++ b/sysdeps/aarch64/fpu/log1p_advsimd.c
@@ -127,3 +127,5 @@ VPCS_ATTR float64x2_t V_NAME_D1 (log1p) (float64x2_t x)
return vfmaq_f64 (y, f2, p);
}
+
+strong_alias (V_NAME_D1 (log1p), V_NAME_D1 (logp1))
diff --git a/sysdeps/aarch64/fpu/log1p_sve.c b/sysdeps/aarch64/fpu/log1p_sve.c
index 04f7e57..b21cfb2 100644
--- a/sysdeps/aarch64/fpu/log1p_sve.c
+++ b/sysdeps/aarch64/fpu/log1p_sve.c
@@ -116,3 +116,5 @@ svfloat64_t SV_NAME_D1 (log1p) (svfloat64_t x, svbool_t pg)
return y;
}
+
+strong_alias (SV_NAME_D1 (log1p), SV_NAME_D1 (logp1))
diff --git a/sysdeps/aarch64/fpu/log1pf_advsimd.c b/sysdeps/aarch64/fpu/log1pf_advsimd.c
index dc15334..00006fc 100644
--- a/sysdeps/aarch64/fpu/log1pf_advsimd.c
+++ b/sysdeps/aarch64/fpu/log1pf_advsimd.c
@@ -18,113 +18,81 @@
<https://www.gnu.org/licenses/>. */
#include "v_math.h"
-#include "poly_advsimd_f32.h"
+#include "v_log1pf_inline.h"
+
+#if WANT_SIMD_EXCEPT
const static struct data
{
- float32x4_t poly[8], ln2;
- uint32x4_t tiny_bound, minus_one, four, thresh;
- int32x4_t three_quarters;
+ uint32x4_t minus_one, thresh;
+ struct v_log1pf_data d;
} data = {
- .poly = { /* Generated using FPMinimax in [-0.25, 0.5]. First two coefficients
- (1, -0.5) are not stored as they can be generated more
- efficiently. */
- V4 (0x1.5555aap-2f), V4 (-0x1.000038p-2f), V4 (0x1.99675cp-3f),
- V4 (-0x1.54ef78p-3f), V4 (0x1.28a1f4p-3f), V4 (-0x1.0da91p-3f),
- V4 (0x1.abcb6p-4f), V4 (-0x1.6f0d5ep-5f) },
- .ln2 = V4 (0x1.62e43p-1f),
- .tiny_bound = V4 (0x34000000), /* asuint32(0x1p-23). ulp=0.5 at 0x1p-23. */
- .thresh = V4 (0x4b800000), /* asuint32(INFINITY) - tiny_bound. */
+ .d = V_LOG1PF_CONSTANTS_TABLE,
+ .thresh = V4 (0x4b800000), /* asuint32(INFINITY) - TinyBound. */
.minus_one = V4 (0xbf800000),
- .four = V4 (0x40800000),
- .three_quarters = V4 (0x3f400000)
};
-static inline float32x4_t
-eval_poly (float32x4_t m, const float32x4_t *p)
-{
- /* Approximate log(1+m) on [-0.25, 0.5] using split Estrin scheme. */
- float32x4_t p_12 = vfmaq_f32 (v_f32 (-0.5), m, p[0]);
- float32x4_t p_34 = vfmaq_f32 (p[1], m, p[2]);
- float32x4_t p_56 = vfmaq_f32 (p[3], m, p[4]);
- float32x4_t p_78 = vfmaq_f32 (p[5], m, p[6]);
-
- float32x4_t m2 = vmulq_f32 (m, m);
- float32x4_t p_02 = vfmaq_f32 (m, m2, p_12);
- float32x4_t p_36 = vfmaq_f32 (p_34, m2, p_56);
- float32x4_t p_79 = vfmaq_f32 (p_78, m2, p[7]);
-
- float32x4_t m4 = vmulq_f32 (m2, m2);
- float32x4_t p_06 = vfmaq_f32 (p_02, m4, p_36);
- return vfmaq_f32 (p_06, m4, vmulq_f32 (m4, p_79));
-}
+/* asuint32(0x1p-23). ulp=0.5 at 0x1p-23. */
+# define TinyBound v_u32 (0x34000000)
static float32x4_t NOINLINE VPCS_ATTR
-special_case (float32x4_t x, float32x4_t y, uint32x4_t special)
+special_case (float32x4_t x, uint32x4_t cmp, const struct data *d)
{
- return v_call_f32 (log1pf, x, y, special);
+ /* Side-step special lanes so fenv exceptions are not triggered
+ inadvertently. */
+ float32x4_t x_nospecial = v_zerofy_f32 (x, cmp);
+ return v_call_f32 (log1pf, x, log1pf_inline (x_nospecial, &d->d), cmp);
}
-/* Vector log1pf approximation using polynomial on reduced interval. Accuracy
- is roughly 2.02 ULP:
- log1pf(0x1.21e13ap-2) got 0x1.fe8028p-3 want 0x1.fe802cp-3. */
+/* Vector log1pf approximation using polynomial on reduced interval. Worst-case
+ error is 1.69 ULP:
+ _ZGVnN4v_log1pf(0x1.04418ap-2) got 0x1.cfcbd8p-3
+ want 0x1.cfcbdcp-3. */
VPCS_ATTR float32x4_t V_NAME_F1 (log1p) (float32x4_t x)
{
const struct data *d = ptr_barrier (&data);
-
uint32x4_t ix = vreinterpretq_u32_f32 (x);
uint32x4_t ia = vreinterpretq_u32_f32 (vabsq_f32 (x));
+
uint32x4_t special_cases
- = vorrq_u32 (vcgeq_u32 (vsubq_u32 (ia, d->tiny_bound), d->thresh),
+ = vorrq_u32 (vcgeq_u32 (vsubq_u32 (ia, TinyBound), d->thresh),
vcgeq_u32 (ix, d->minus_one));
- float32x4_t special_arg = x;
-#if WANT_SIMD_EXCEPT
if (__glibc_unlikely (v_any_u32 (special_cases)))
- /* Side-step special lanes so fenv exceptions are not triggered
- inadvertently. */
- x = v_zerofy_f32 (x, special_cases);
-#endif
+ return special_case (x, special_cases, d);
- /* With x + 1 = t * 2^k (where t = m + 1 and k is chosen such that m
- is in [-0.25, 0.5]):
- log1p(x) = log(t) + log(2^k) = log1p(m) + k*log(2).
-
- We approximate log1p(m) with a polynomial, then scale by
- k*log(2). Instead of doing this directly, we use an intermediate
- scale factor s = 4*k*log(2) to ensure the scale is representable
- as a normalised fp32 number. */
+ return log1pf_inline (x, &d->d);
+}
- float32x4_t m = vaddq_f32 (x, v_f32 (1.0f));
+#else
- /* Choose k to scale x to the range [-1/4, 1/2]. */
- int32x4_t k
- = vandq_s32 (vsubq_s32 (vreinterpretq_s32_f32 (m), d->three_quarters),
- v_s32 (0xff800000));
- uint32x4_t ku = vreinterpretq_u32_s32 (k);
+const static struct v_log1pf_data data = V_LOG1PF_CONSTANTS_TABLE;
- /* Scale x by exponent manipulation. */
- float32x4_t m_scale
- = vreinterpretq_f32_u32 (vsubq_u32 (vreinterpretq_u32_f32 (x), ku));
+static float32x4_t NOINLINE VPCS_ATTR
+special_case (float32x4_t x, uint32x4_t cmp)
+{
+ return v_call_f32 (log1pf, x, log1pf_inline (x, ptr_barrier (&data)), cmp);
+}
- /* Scale up to ensure that the scale factor is representable as normalised
- fp32 number, and scale m down accordingly. */
- float32x4_t s = vreinterpretq_f32_u32 (vsubq_u32 (d->four, ku));
- m_scale = vaddq_f32 (m_scale, vfmaq_f32 (v_f32 (-1.0f), v_f32 (0.25f), s));
+/* Vector log1pf approximation using polynomial on reduced interval. Worst-case
+ error is 1.63 ULP:
+ _ZGVnN4v_log1pf(0x1.216d12p-2) got 0x1.fdcb12p-3
+ want 0x1.fdcb16p-3. */
+VPCS_ATTR float32x4_t V_NAME_F1 (log1p) (float32x4_t x)
+{
+ uint32x4_t special_cases = vornq_u32 (vcleq_f32 (x, v_f32 (-1)),
+ vcaleq_f32 (x, v_f32 (0x1p127f)));
- /* Evaluate polynomial on the reduced interval. */
- float32x4_t p = eval_poly (m_scale, d->poly);
+ if (__glibc_unlikely (v_any_u32 (special_cases)))
+ return special_case (x, special_cases);
- /* The scale factor to be applied back at the end - by multiplying float(k)
- by 2^-23 we get the unbiased exponent of k. */
- float32x4_t scale_back = vcvtq_f32_s32 (vshrq_n_s32 (k, 23));
+ return log1pf_inline (x, ptr_barrier (&data));
+}
- /* Apply the scaling back. */
- float32x4_t y = vfmaq_f32 (p, scale_back, d->ln2);
+#endif
- if (__glibc_unlikely (v_any_u32 (special_cases)))
- return special_case (special_arg, y, special_cases);
- return y;
-}
libmvec_hidden_def (V_NAME_F1 (log1p))
HALF_WIDTH_ALIAS_F1 (log1p)
+strong_alias (V_NAME_F1 (log1p), V_NAME_F1 (logp1))
+libmvec_hidden_def (V_NAME_F1 (logp1))
+HALF_WIDTH_ALIAS_F1 (logp1)
diff --git a/sysdeps/aarch64/fpu/log1pf_sve.c b/sysdeps/aarch64/fpu/log1pf_sve.c
index f645cc9..5256d5e 100644
--- a/sysdeps/aarch64/fpu/log1pf_sve.c
+++ b/sysdeps/aarch64/fpu/log1pf_sve.c
@@ -98,3 +98,5 @@ svfloat32_t SV_NAME_F1 (log1p) (svfloat32_t x, svbool_t pg)
return y;
}
+
+strong_alias (SV_NAME_F1 (log1p), SV_NAME_F1 (logp1))
diff --git a/sysdeps/aarch64/fpu/log2f_advsimd.c b/sysdeps/aarch64/fpu/log2f_advsimd.c
index db21836..84effe4 100644
--- a/sysdeps/aarch64/fpu/log2f_advsimd.c
+++ b/sysdeps/aarch64/fpu/log2f_advsimd.c
@@ -22,9 +22,9 @@
static const struct data
{
- uint32x4_t min_norm;
+ uint32x4_t off, offset_lower_bound;
uint16x8_t special_bound;
- uint32x4_t off, mantissa_mask;
+ uint32x4_t mantissa_mask;
float32x4_t poly[9];
} data = {
/* Coefficients generated using Remez algorithm approximate
@@ -34,18 +34,22 @@ static const struct data
V4 (-0x1.715458p-1f), V4 (0x1.ec701cp-2f), V4 (-0x1.7171a4p-2f),
V4 (0x1.27a0b8p-2f), V4 (-0x1.e5143ep-3f), V4 (0x1.9d8ecap-3f),
V4 (-0x1.c675bp-3f), V4 (0x1.9e495p-3f) },
- .min_norm = V4 (0x00800000),
- .special_bound = V8 (0x7f00), /* asuint32(inf) - min_norm. */
+ /* Lower bound is the smallest positive normal float 0x00800000. For
+ optimised register use subnormals are detected after offset has been
+ subtracted, so lower bound is 0x0080000 - offset (which wraps around). */
+ .offset_lower_bound = V4 (0x00800000 - 0x3f2aaaab),
+ .special_bound = V8 (0x7f00), /* top16(asuint32(inf) - 0x00800000). */
.off = V4 (0x3f2aaaab), /* 0.666667. */
.mantissa_mask = V4 (0x007fffff),
};
static float32x4_t VPCS_ATTR NOINLINE
-special_case (float32x4_t x, float32x4_t n, float32x4_t p, float32x4_t r,
- uint16x4_t cmp)
+special_case (float32x4_t n, uint32x4_t u_off, float32x4_t p, float32x4_t r,
+ uint16x4_t cmp, const struct data *d)
{
/* Fall back to scalar code. */
- return v_call_f32 (log2f, x, vfmaq_f32 (n, p, r), vmovl_u16 (cmp));
+ return v_call_f32 (log2f, vreinterpretq_f32_u32 (vaddq_u32 (u_off, d->off)),
+ vfmaq_f32 (n, p, r), vmovl_u16 (cmp));
}
/* Fast implementation for single precision AdvSIMD log2,
@@ -56,15 +60,21 @@ special_case (float32x4_t x, float32x4_t n, float32x4_t p, float32x4_t r,
float32x4_t VPCS_ATTR NOINLINE V_NAME_F1 (log2) (float32x4_t x)
{
const struct data *d = ptr_barrier (&data);
- uint32x4_t u = vreinterpretq_u32_f32 (x);
- uint16x4_t special = vcge_u16 (vsubhn_u32 (u, d->min_norm),
- vget_low_u16 (d->special_bound));
+
+ /* To avoid having to mov x out of the way, keep u after offset has been
+ applied, and recover x by adding the offset back in the special-case
+ handler. */
+ uint32x4_t u_off = vreinterpretq_u32_f32 (x);
/* x = 2^n * (1+r), where 2/3 < 1+r < 4/3. */
- u = vsubq_u32 (u, d->off);
+ u_off = vsubq_u32 (u_off, d->off);
float32x4_t n = vcvtq_f32_s32 (
- vshrq_n_s32 (vreinterpretq_s32_u32 (u), 23)); /* signextend. */
- u = vaddq_u32 (vandq_u32 (u, d->mantissa_mask), d->off);
+ vshrq_n_s32 (vreinterpretq_s32_u32 (u_off), 23)); /* signextend. */
+
+ uint16x4_t special = vcge_u16 (vsubhn_u32 (u_off, d->offset_lower_bound),
+ vget_low_u16 (d->special_bound));
+
+ uint32x4_t u = vaddq_u32 (vandq_u32 (u_off, d->mantissa_mask), d->off);
float32x4_t r = vsubq_f32 (vreinterpretq_f32_u32 (u), v_f32 (1.0f));
/* y = log2(1+r) + n. */
@@ -72,7 +82,7 @@ float32x4_t VPCS_ATTR NOINLINE V_NAME_F1 (log2) (float32x4_t x)
float32x4_t p = v_pw_horner_8_f32 (r, r2, d->poly);
if (__glibc_unlikely (v_any_u16h (special)))
- return special_case (x, n, p, r, special);
+ return special_case (n, u_off, p, r, special, d);
return vfmaq_f32 (n, p, r);
}
libmvec_hidden_def (V_NAME_F1 (log2))
diff --git a/sysdeps/aarch64/fpu/log2f_sve.c b/sysdeps/aarch64/fpu/log2f_sve.c
index 5031c42..939d89b 100644
--- a/sysdeps/aarch64/fpu/log2f_sve.c
+++ b/sysdeps/aarch64/fpu/log2f_sve.c
@@ -23,6 +23,7 @@ static const struct data
{
float poly_02468[5];
float poly_1357[4];
+ uint32_t off, lower;
} data = {
.poly_1357 = {
/* Coefficients copied from the AdvSIMD routine, then rearranged so that coeffs
@@ -32,18 +33,23 @@ static const struct data
},
.poly_02468 = { 0x1.715476p0f, 0x1.ec701cp-2f, 0x1.27a0b8p-2f,
0x1.9d8ecap-3f, 0x1.9e495p-3f },
+ .off = 0x3f2aaaab,
+ /* Lower bound is the smallest positive normal float 0x00800000. For
+ optimised register use subnormals are detected after offset has been
+ subtracted, so lower bound is 0x0080000 - offset (which wraps around). */
+ .lower = 0x00800000 - 0x3f2aaaab
};
-#define Min (0x00800000)
-#define Max (0x7f800000)
-#define Thres (0x7f000000) /* Max - Min. */
+#define Thresh (0x7f000000) /* asuint32(inf) - 0x00800000. */
#define MantissaMask (0x007fffff)
-#define Off (0x3f2aaaab) /* 0.666667. */
static svfloat32_t NOINLINE
-special_case (svfloat32_t x, svfloat32_t y, svbool_t cmp)
+special_case (svuint32_t u_off, svfloat32_t p, svfloat32_t r2, svfloat32_t y,
+ svbool_t cmp)
{
- return sv_call_f32 (log2f, x, y, cmp);
+ return sv_call_f32 (
+ log2f, svreinterpret_f32 (svadd_x (svptrue_b32 (), u_off, data.off)),
+ svmla_x (svptrue_b32 (), p, r2, y), cmp);
}
/* Optimised implementation of SVE log2f, using the same algorithm
@@ -55,19 +61,20 @@ svfloat32_t SV_NAME_F1 (log2) (svfloat32_t x, const svbool_t pg)
{
const struct data *d = ptr_barrier (&data);
- svuint32_t u = svreinterpret_u32 (x);
- svbool_t special = svcmpge (pg, svsub_x (pg, u, Min), Thres);
+ svuint32_t u_off = svreinterpret_u32 (x);
+
+ u_off = svsub_x (pg, u_off, d->off);
+ svbool_t special = svcmpge (pg, svsub_x (pg, u_off, d->lower), Thresh);
/* x = 2^n * (1+r), where 2/3 < 1+r < 4/3. */
- u = svsub_x (pg, u, Off);
svfloat32_t n = svcvt_f32_x (
- pg, svasr_x (pg, svreinterpret_s32 (u), 23)); /* Sign-extend. */
- u = svand_x (pg, u, MantissaMask);
- u = svadd_x (pg, u, Off);
+ pg, svasr_x (pg, svreinterpret_s32 (u_off), 23)); /* Sign-extend. */
+ svuint32_t u = svand_x (pg, u_off, MantissaMask);
+ u = svadd_x (pg, u, d->off);
svfloat32_t r = svsub_x (pg, svreinterpret_f32 (u), 1.0f);
/* y = log2(1+r) + n. */
- svfloat32_t r2 = svmul_x (pg, r, r);
+ svfloat32_t r2 = svmul_x (svptrue_b32 (), r, r);
/* Evaluate polynomial using pairwise Horner scheme. */
svfloat32_t p_1357 = svld1rq (svptrue_b32 (), &d->poly_1357[0]);
@@ -81,6 +88,6 @@ svfloat32_t SV_NAME_F1 (log2) (svfloat32_t x, const svbool_t pg)
y = svmla_x (pg, q_01, r2, y);
if (__glibc_unlikely (svptest_any (pg, special)))
- return special_case (x, svmla_x (svnot_z (pg, special), n, r, y), special);
- return svmla_x (pg, n, r, y);
+ return special_case (u_off, n, r, y, special);
+ return svmla_x (svptrue_b32 (), n, r, y);
}
diff --git a/sysdeps/aarch64/fpu/logf_advsimd.c b/sysdeps/aarch64/fpu/logf_advsimd.c
index 3c0d0fc..c20dbfd 100644
--- a/sysdeps/aarch64/fpu/logf_advsimd.c
+++ b/sysdeps/aarch64/fpu/logf_advsimd.c
@@ -21,20 +21,22 @@
static const struct data
{
- uint32x4_t min_norm;
+ uint32x4_t off, offset_lower_bound;
uint16x8_t special_bound;
+ uint32x4_t mantissa_mask;
float32x4_t poly[7];
- float32x4_t ln2, tiny_bound;
- uint32x4_t off, mantissa_mask;
+ float32x4_t ln2;
} data = {
/* 3.34 ulp error. */
.poly = { V4 (-0x1.3e737cp-3f), V4 (0x1.5a9aa2p-3f), V4 (-0x1.4f9934p-3f),
V4 (0x1.961348p-3f), V4 (-0x1.00187cp-2f), V4 (0x1.555d7cp-2f),
V4 (-0x1.ffffc8p-2f) },
.ln2 = V4 (0x1.62e43p-1f),
- .tiny_bound = V4 (0x1p-126),
- .min_norm = V4 (0x00800000),
- .special_bound = V8 (0x7f00), /* asuint32(inf) - min_norm. */
+ /* Lower bound is the smallest positive normal float 0x00800000. For
+ optimised register use subnormals are detected after offset has been
+ subtracted, so lower bound is 0x0080000 - offset (which wraps around). */
+ .offset_lower_bound = V4 (0x00800000 - 0x3f2aaaab),
+ .special_bound = V8 (0x7f00), /* top16(asuint32(inf) - 0x00800000). */
.off = V4 (0x3f2aaaab), /* 0.666667. */
.mantissa_mask = V4 (0x007fffff)
};
@@ -42,32 +44,37 @@ static const struct data
#define P(i) d->poly[7 - i]
static float32x4_t VPCS_ATTR NOINLINE
-special_case (float32x4_t x, float32x4_t y, float32x4_t r2, float32x4_t p,
- uint16x4_t cmp)
+special_case (float32x4_t p, uint32x4_t u_off, float32x4_t y, float32x4_t r2,
+ uint16x4_t cmp, const struct data *d)
{
/* Fall back to scalar code. */
- return v_call_f32 (logf, x, vfmaq_f32 (p, y, r2), vmovl_u16 (cmp));
+ return v_call_f32 (logf, vreinterpretq_f32_u32 (vaddq_u32 (u_off, d->off)),
+ vfmaq_f32 (p, y, r2), vmovl_u16 (cmp));
}
float32x4_t VPCS_ATTR NOINLINE V_NAME_F1 (log) (float32x4_t x)
{
const struct data *d = ptr_barrier (&data);
float32x4_t n, p, q, r, r2, y;
- uint32x4_t u;
+ uint32x4_t u, u_off;
uint16x4_t cmp;
- u = vreinterpretq_u32_f32 (x);
- cmp = vcge_u16 (vsubhn_u32 (u, d->min_norm),
- vget_low_u16 (d->special_bound));
+ /* To avoid having to mov x out of the way, keep u after offset has been
+ applied, and recover x by adding the offset back in the special-case
+ handler. */
+ u_off = vreinterpretq_u32_f32 (x);
/* x = 2^n * (1+r), where 2/3 < 1+r < 4/3. */
- u = vsubq_u32 (u, d->off);
+ u_off = vsubq_u32 (u_off, d->off);
n = vcvtq_f32_s32 (
- vshrq_n_s32 (vreinterpretq_s32_u32 (u), 23)); /* signextend. */
- u = vandq_u32 (u, d->mantissa_mask);
+ vshrq_n_s32 (vreinterpretq_s32_u32 (u_off), 23)); /* signextend. */
+ u = vandq_u32 (u_off, d->mantissa_mask);
u = vaddq_u32 (u, d->off);
r = vsubq_f32 (vreinterpretq_f32_u32 (u), v_f32 (1.0f));
+ cmp = vcge_u16 (vsubhn_u32 (u_off, d->offset_lower_bound),
+ vget_low_u16 (d->special_bound));
+
/* y = log(1+r) + n*ln2. */
r2 = vmulq_f32 (r, r);
/* n*ln2 + r + r2*(P1 + r*P2 + r2*(P3 + r*P4 + r2*(P5 + r*P6 + r2*P7))). */
@@ -80,7 +87,7 @@ float32x4_t VPCS_ATTR NOINLINE V_NAME_F1 (log) (float32x4_t x)
p = vfmaq_f32 (r, d->ln2, n);
if (__glibc_unlikely (v_any_u16h (cmp)))
- return special_case (x, y, r2, p, cmp);
+ return special_case (p, u_off, y, r2, cmp, d);
return vfmaq_f32 (p, y, r2);
}
libmvec_hidden_def (V_NAME_F1 (log))
diff --git a/sysdeps/aarch64/fpu/logf_sve.c b/sysdeps/aarch64/fpu/logf_sve.c
index d64e810..5b93246 100644
--- a/sysdeps/aarch64/fpu/logf_sve.c
+++ b/sysdeps/aarch64/fpu/logf_sve.c
@@ -24,6 +24,7 @@ static const struct data
float poly_0135[4];
float poly_246[3];
float ln2;
+ uint32_t off, lower;
} data = {
.poly_0135 = {
/* Coefficients copied from the AdvSIMD routine in math/, then rearranged so
@@ -32,19 +33,24 @@ static const struct data
-0x1.3e737cp-3f, 0x1.5a9aa2p-3f, 0x1.961348p-3f, 0x1.555d7cp-2f
},
.poly_246 = { -0x1.4f9934p-3f, -0x1.00187cp-2f, -0x1.ffffc8p-2f },
- .ln2 = 0x1.62e43p-1f
+ .ln2 = 0x1.62e43p-1f,
+ .off = 0x3f2aaaab,
+ /* Lower bound is the smallest positive normal float 0x00800000. For
+ optimised register use subnormals are detected after offset has been
+ subtracted, so lower bound is 0x0080000 - offset (which wraps around). */
+ .lower = 0x00800000 - 0x3f2aaaab
};
-#define Min (0x00800000)
-#define Max (0x7f800000)
-#define Thresh (0x7f000000) /* Max - Min. */
+#define Thresh (0x7f000000) /* asuint32(inf) - 0x00800000. */
#define Mask (0x007fffff)
-#define Off (0x3f2aaaab) /* 0.666667. */
static svfloat32_t NOINLINE
-special_case (svfloat32_t x, svfloat32_t y, svbool_t cmp)
+special_case (svuint32_t u_off, svfloat32_t p, svfloat32_t r2, svfloat32_t y,
+ svbool_t cmp)
{
- return sv_call_f32 (logf, x, y, cmp);
+ return sv_call_f32 (
+ logf, svreinterpret_f32 (svadd_x (svptrue_b32 (), u_off, data.off)),
+ svmla_x (svptrue_b32 (), p, r2, y), cmp);
}
/* Optimised implementation of SVE logf, using the same algorithm and
@@ -55,19 +61,21 @@ svfloat32_t SV_NAME_F1 (log) (svfloat32_t x, const svbool_t pg)
{
const struct data *d = ptr_barrier (&data);
- svuint32_t u = svreinterpret_u32 (x);
- svbool_t cmp = svcmpge (pg, svsub_x (pg, u, Min), Thresh);
+ svuint32_t u_off = svreinterpret_u32 (x);
+
+ u_off = svsub_x (pg, u_off, d->off);
+ svbool_t cmp = svcmpge (pg, svsub_x (pg, u_off, d->lower), Thresh);
/* x = 2^n * (1+r), where 2/3 < 1+r < 4/3. */
- u = svsub_x (pg, u, Off);
svfloat32_t n = svcvt_f32_x (
- pg, svasr_x (pg, svreinterpret_s32 (u), 23)); /* Sign-extend. */
- u = svand_x (pg, u, Mask);
- u = svadd_x (pg, u, Off);
+ pg, svasr_x (pg, svreinterpret_s32 (u_off), 23)); /* Sign-extend. */
+
+ svuint32_t u = svand_x (pg, u_off, Mask);
+ u = svadd_x (pg, u, d->off);
svfloat32_t r = svsub_x (pg, svreinterpret_f32 (u), 1.0f);
/* y = log(1+r) + n*ln2. */
- svfloat32_t r2 = svmul_x (pg, r, r);
+ svfloat32_t r2 = svmul_x (svptrue_b32 (), r, r);
/* n*ln2 + r + r2*(P6 + r*P5 + r2*(P4 + r*P3 + r2*(P2 + r*P1 + r2*P0))). */
svfloat32_t p_0135 = svld1rq (svptrue_b32 (), &d->poly_0135[0]);
svfloat32_t p = svmla_lane (sv_f32 (d->poly_246[0]), r, p_0135, 1);
@@ -80,6 +88,6 @@ svfloat32_t SV_NAME_F1 (log) (svfloat32_t x, const svbool_t pg)
p = svmla_x (pg, r, n, d->ln2);
if (__glibc_unlikely (svptest_any (pg, cmp)))
- return special_case (x, svmla_x (svnot_z (pg, cmp), p, r2, y), cmp);
+ return special_case (u_off, p, r2, y, cmp);
return svmla_x (pg, p, r2, y);
}
diff --git a/sysdeps/aarch64/fpu/sin_advsimd.c b/sysdeps/aarch64/fpu/sin_advsimd.c
index a0d9d3b..718125c 100644
--- a/sysdeps/aarch64/fpu/sin_advsimd.c
+++ b/sysdeps/aarch64/fpu/sin_advsimd.c
@@ -22,7 +22,7 @@
static const struct data
{
float64x2_t poly[7];
- float64x2_t range_val, inv_pi, shift, pi_1, pi_2, pi_3;
+ float64x2_t range_val, inv_pi, pi_1, pi_2, pi_3;
} data = {
.poly = { V2 (-0x1.555555555547bp-3), V2 (0x1.1111111108a4dp-7),
V2 (-0x1.a01a019936f27p-13), V2 (0x1.71de37a97d93ep-19),
@@ -34,12 +34,13 @@ static const struct data
.pi_1 = V2 (0x1.921fb54442d18p+1),
.pi_2 = V2 (0x1.1a62633145c06p-53),
.pi_3 = V2 (0x1.c1cd129024e09p-106),
- .shift = V2 (0x1.8p52),
};
#if WANT_SIMD_EXCEPT
-# define TinyBound v_u64 (0x3000000000000000) /* asuint64 (0x1p-255). */
-# define Thresh v_u64 (0x1160000000000000) /* RangeVal - TinyBound. */
+/* asuint64(0x1p-253)), below which multiply by inv_pi underflows. */
+# define TinyBound v_u64 (0x3020000000000000)
+/* RangeVal - TinyBound. */
+# define Thresh v_u64 (0x1160000000000000)
#endif
#define C(i) d->poly[i]
@@ -72,16 +73,15 @@ float64x2_t VPCS_ATTR V_NAME_D1 (sin) (float64x2_t x)
fenv). These lanes will be fixed by special-case handler later. */
uint64x2_t ir = vreinterpretq_u64_f64 (vabsq_f64 (x));
cmp = vcgeq_u64 (vsubq_u64 (ir, TinyBound), Thresh);
- r = vbslq_f64 (cmp, vreinterpretq_f64_u64 (cmp), x);
+ r = vreinterpretq_f64_u64 (vbicq_u64 (vreinterpretq_u64_f64 (x), cmp));
#else
r = x;
cmp = vcageq_f64 (x, d->range_val);
#endif
/* n = rint(|x|/pi). */
- n = vfmaq_f64 (d->shift, d->inv_pi, r);
- odd = vshlq_n_u64 (vreinterpretq_u64_f64 (n), 63);
- n = vsubq_f64 (n, d->shift);
+ n = vrndaq_f64 (vmulq_f64 (r, d->inv_pi));
+ odd = vshlq_n_u64 (vreinterpretq_u64_s64 (vcvtq_s64_f64 (n)), 63);
/* r = |x| - n*pi (range reduction into -pi/2 .. pi/2). */
r = vfmsq_f64 (r, d->pi_1, n);
diff --git a/sysdeps/aarch64/fpu/sinf_advsimd.c b/sysdeps/aarch64/fpu/sinf_advsimd.c
index 375dfc3..6ee9a23 100644
--- a/sysdeps/aarch64/fpu/sinf_advsimd.c
+++ b/sysdeps/aarch64/fpu/sinf_advsimd.c
@@ -22,7 +22,7 @@
static const struct data
{
float32x4_t poly[4];
- float32x4_t range_val, inv_pi, shift, pi_1, pi_2, pi_3;
+ float32x4_t range_val, inv_pi, pi_1, pi_2, pi_3;
} data = {
/* 1.886 ulp error. */
.poly = { V4 (-0x1.555548p-3f), V4 (0x1.110df4p-7f), V4 (-0x1.9f42eap-13f),
@@ -33,13 +33,14 @@ static const struct data
.pi_3 = V4 (-0x1.ee59dap-49f),
.inv_pi = V4 (0x1.45f306p-2f),
- .shift = V4 (0x1.8p+23f),
.range_val = V4 (0x1p20f)
};
#if WANT_SIMD_EXCEPT
-# define TinyBound v_u32 (0x21000000) /* asuint32(0x1p-61f). */
-# define Thresh v_u32 (0x28800000) /* RangeVal - TinyBound. */
+/* asuint32(0x1p-59f), below which multiply by inv_pi underflows. */
+# define TinyBound v_u32 (0x22000000)
+/* RangeVal - TinyBound. */
+# define Thresh v_u32 (0x27800000)
#endif
#define C(i) d->poly[i]
@@ -64,23 +65,22 @@ float32x4_t VPCS_ATTR NOINLINE V_NAME_F1 (sin) (float32x4_t x)
/* If fenv exceptions are to be triggered correctly, set any special lanes
to 1 (which is neutral w.r.t. fenv). These lanes will be fixed by
special-case handler later. */
- r = vbslq_f32 (cmp, vreinterpretq_f32_u32 (cmp), x);
+ r = vreinterpretq_f32_u32 (vbicq_u32 (vreinterpretq_u32_f32 (x), cmp));
#else
r = x;
cmp = vcageq_f32 (x, d->range_val);
#endif
- /* n = rint(|x|/pi) */
- n = vfmaq_f32 (d->shift, d->inv_pi, r);
- odd = vshlq_n_u32 (vreinterpretq_u32_f32 (n), 31);
- n = vsubq_f32 (n, d->shift);
+ /* n = rint(|x|/pi). */
+ n = vrndaq_f32 (vmulq_f32 (r, d->inv_pi));
+ odd = vshlq_n_u32 (vreinterpretq_u32_s32 (vcvtq_s32_f32 (n)), 31);
- /* r = |x| - n*pi (range reduction into -pi/2 .. pi/2) */
+ /* r = |x| - n*pi (range reduction into -pi/2 .. pi/2). */
r = vfmsq_f32 (r, d->pi_1, n);
r = vfmsq_f32 (r, d->pi_2, n);
r = vfmsq_f32 (r, d->pi_3, n);
- /* y = sin(r) */
+ /* y = sin(r). */
r2 = vmulq_f32 (r, r);
y = vfmaq_f32 (C (2), C (3), r2);
y = vfmaq_f32 (C (1), y, r2);
diff --git a/sysdeps/aarch64/fpu/sinhf_advsimd.c b/sysdeps/aarch64/fpu/sinhf_advsimd.c
index 6bb7482..c6ed759 100644
--- a/sysdeps/aarch64/fpu/sinhf_advsimd.c
+++ b/sysdeps/aarch64/fpu/sinhf_advsimd.c
@@ -23,15 +23,13 @@
static const struct data
{
struct v_expm1f_data expm1f_consts;
- uint32x4_t halff;
#if WANT_SIMD_EXCEPT
uint32x4_t tiny_bound, thresh;
#else
- uint32x4_t oflow_bound;
+ float32x4_t oflow_bound;
#endif
} data = {
.expm1f_consts = V_EXPM1F_DATA,
- .halff = V4 (0x3f000000),
#if WANT_SIMD_EXCEPT
/* 0x1.6a09e8p-32, below which expm1f underflows. */
.tiny_bound = V4 (0x2fb504f4),
@@ -39,14 +37,15 @@ static const struct data
.thresh = V4 (0x12fbbbb3),
#else
/* 0x1.61814ep+6, above which expm1f helper overflows. */
- .oflow_bound = V4 (0x42b0c0a7),
+ .oflow_bound = V4 (0x1.61814ep+6),
#endif
};
static float32x4_t NOINLINE VPCS_ATTR
-special_case (float32x4_t x, float32x4_t y, uint32x4_t special)
+special_case (float32x4_t x, float32x4_t t, float32x4_t halfsign,
+ uint32x4_t special)
{
- return v_call_f32 (sinhf, x, y, special);
+ return v_call_f32 (sinhf, x, vmulq_f32 (t, halfsign), special);
}
/* Approximation for vector single-precision sinh(x) using expm1.
@@ -60,15 +59,15 @@ float32x4_t VPCS_ATTR NOINLINE V_NAME_F1 (sinh) (float32x4_t x)
uint32x4_t ix = vreinterpretq_u32_f32 (x);
float32x4_t ax = vabsq_f32 (x);
- uint32x4_t iax = vreinterpretq_u32_f32 (ax);
- uint32x4_t sign = veorq_u32 (ix, iax);
- float32x4_t halfsign = vreinterpretq_f32_u32 (vorrq_u32 (sign, d->halff));
+ float32x4_t halfsign = vreinterpretq_f32_u32 (
+ vbslq_u32 (v_u32 (0x80000000), ix, vreinterpretq_u32_f32 (v_f32 (0.5))));
#if WANT_SIMD_EXCEPT
- uint32x4_t special = vcgeq_u32 (vsubq_u32 (iax, d->tiny_bound), d->thresh);
+ uint32x4_t special = vcgeq_u32 (
+ vsubq_u32 (vreinterpretq_u32_f32 (ax), d->tiny_bound), d->thresh);
ax = v_zerofy_f32 (ax, special);
#else
- uint32x4_t special = vcgeq_u32 (iax, d->oflow_bound);
+ uint32x4_t special = vcageq_f32 (x, d->oflow_bound);
#endif
/* Up to the point that expm1f overflows, we can use it to calculate sinhf
@@ -80,7 +79,7 @@ float32x4_t VPCS_ATTR NOINLINE V_NAME_F1 (sinh) (float32x4_t x)
/* Fall back to the scalar variant for any lanes that should trigger an
exception. */
if (__glibc_unlikely (v_any_u32 (special)))
- return special_case (x, vmulq_f32 (t, halfsign), special);
+ return special_case (x, t, halfsign, special);
return vmulq_f32 (t, halfsign);
}
diff --git a/sysdeps/aarch64/fpu/sv_expf_inline.h b/sysdeps/aarch64/fpu/sv_expf_inline.h
index 23963b5..6166df6 100644
--- a/sysdeps/aarch64/fpu/sv_expf_inline.h
+++ b/sysdeps/aarch64/fpu/sv_expf_inline.h
@@ -24,19 +24,20 @@
struct sv_expf_data
{
- float poly[5];
- float inv_ln2, ln2_hi, ln2_lo, shift;
+ float c1, c3, inv_ln2;
+ float ln2_lo, c0, c2, c4;
+ float ln2_hi, shift;
};
/* Coefficients copied from the polynomial in AdvSIMD variant, reversed for
compatibility with polynomial helpers. Shift is 1.5*2^17 + 127. */
#define SV_EXPF_DATA \
{ \
- .poly = { 0x1.ffffecp-1f, 0x1.fffdb6p-2f, 0x1.555e66p-3f, 0x1.573e2ep-5f, \
- 0x1.0e4020p-7f }, \
- \
- .inv_ln2 = 0x1.715476p+0f, .ln2_hi = 0x1.62e4p-1f, \
- .ln2_lo = 0x1.7f7d1cp-20f, .shift = 0x1.803f8p17f, \
+ /* Coefficients copied from the polynomial in AdvSIMD variant. */ \
+ .c0 = 0x1.ffffecp-1f, .c1 = 0x1.fffdb6p-2f, .c2 = 0x1.555e66p-3f, \
+ .c3 = 0x1.573e2ep-5f, .c4 = 0x1.0e4020p-7f, .inv_ln2 = 0x1.715476p+0f, \
+ .ln2_hi = 0x1.62e4p-1f, .ln2_lo = 0x1.7f7d1cp-20f, \
+ .shift = 0x1.803f8p17f, \
}
#define C(i) sv_f32 (d->poly[i])
@@ -47,26 +48,25 @@ expf_inline (svfloat32_t x, const svbool_t pg, const struct sv_expf_data *d)
/* exp(x) = 2^n (1 + poly(r)), with 1 + poly(r) in [1/sqrt(2),sqrt(2)]
x = ln2*n + r, with r in [-ln2/2, ln2/2]. */
- /* Load some constants in quad-word chunks to minimise memory access. */
- svfloat32_t c4_invln2_and_ln2 = svld1rq (svptrue_b32 (), &d->poly[4]);
+ svfloat32_t lane_consts = svld1rq (svptrue_b32 (), &d->ln2_lo);
/* n = round(x/(ln2/N)). */
- svfloat32_t z = svmla_lane (sv_f32 (d->shift), x, c4_invln2_and_ln2, 1);
+ svfloat32_t z = svmad_x (pg, sv_f32 (d->inv_ln2), x, d->shift);
svfloat32_t n = svsub_x (pg, z, d->shift);
/* r = x - n*ln2/N. */
- svfloat32_t r = svmls_lane (x, n, c4_invln2_and_ln2, 2);
- r = svmls_lane (r, n, c4_invln2_and_ln2, 3);
+ svfloat32_t r = svmsb_x (pg, sv_f32 (d->ln2_hi), n, x);
+ r = svmls_lane (r, n, lane_consts, 0);
/* scale = 2^(n/N). */
- svfloat32_t scale = svexpa (svreinterpret_u32_f32 (z));
+ svfloat32_t scale = svexpa (svreinterpret_u32 (z));
/* y = exp(r) - 1 ~= r + C0 r^2 + C1 r^3 + C2 r^4 + C3 r^5 + C4 r^6. */
- svfloat32_t p12 = svmla_x (pg, C (1), C (2), r);
- svfloat32_t p34 = svmla_lane (C (3), r, c4_invln2_and_ln2, 0);
- svfloat32_t r2 = svmul_f32_x (pg, r, r);
+ svfloat32_t p12 = svmla_lane (sv_f32 (d->c1), r, lane_consts, 2);
+ svfloat32_t p34 = svmla_lane (sv_f32 (d->c3), r, lane_consts, 3);
+ svfloat32_t r2 = svmul_x (svptrue_b32 (), r, r);
svfloat32_t p14 = svmla_x (pg, p12, p34, r2);
- svfloat32_t p0 = svmul_f32_x (pg, r, C (0));
+ svfloat32_t p0 = svmul_lane (r, lane_consts, 1);
svfloat32_t poly = svmla_x (pg, p0, r2, p14);
return svmla_x (pg, scale, scale, poly);
diff --git a/sysdeps/aarch64/fpu/tanhf_advsimd.c b/sysdeps/aarch64/fpu/tanhf_advsimd.c
index 50defd6..3ced9b7 100644
--- a/sysdeps/aarch64/fpu/tanhf_advsimd.c
+++ b/sysdeps/aarch64/fpu/tanhf_advsimd.c
@@ -28,13 +28,16 @@ static const struct data
/* 0x1.205966p+3, above which tanhf rounds to 1 (or -1 for negative). */
.boring_bound = V4 (0x41102cb3),
.large_bound = V4 (0x7f800000),
- .onef = V4 (0x3f800000),
};
static float32x4_t NOINLINE VPCS_ATTR
-special_case (float32x4_t x, float32x4_t y, uint32x4_t special)
+special_case (float32x4_t x, uint32x4_t is_boring, float32x4_t boring,
+ float32x4_t q, uint32x4_t special)
{
- return v_call_f32 (tanhf, x, y, special);
+ return v_call_f32 (
+ tanhf, x,
+ vbslq_f32 (is_boring, boring, vdivq_f32 (q, vaddq_f32 (q, v_f32 (2.0)))),
+ special);
}
/* Approximation for single-precision vector tanh(x), using a simplified
@@ -50,7 +53,9 @@ float32x4_t VPCS_ATTR NOINLINE V_NAME_F1 (tanh) (float32x4_t x)
uint32x4_t iax = vreinterpretq_u32_f32 (ax);
uint32x4_t sign = veorq_u32 (ix, iax);
uint32x4_t is_boring = vcgtq_u32 (iax, d->boring_bound);
- float32x4_t boring = vreinterpretq_f32_u32 (vorrq_u32 (sign, d->onef));
+ /* expm1 exponent bias is 1.0f reinterpreted to int. */
+ float32x4_t boring = vreinterpretq_f32_u32 (vorrq_u32 (
+ sign, vreinterpretq_u32_s32 (d->expm1f_consts.exponent_bias)));
#if WANT_SIMD_EXCEPT
/* If fp exceptions are to be triggered properly, set all special and boring
@@ -66,10 +71,12 @@ float32x4_t VPCS_ATTR NOINLINE V_NAME_F1 (tanh) (float32x4_t x)
/* tanh(x) = (e^2x - 1) / (e^2x + 1). */
float32x4_t q = expm1f_inline (vmulq_n_f32 (x, 2), &d->expm1f_consts);
- float32x4_t y = vdivq_f32 (q, vaddq_f32 (q, v_f32 (2.0)));
+
if (__glibc_unlikely (v_any_u32 (special)))
- return special_case (vreinterpretq_f32_u32 (ix),
- vbslq_f32 (is_boring, boring, y), special);
+ return special_case (vreinterpretq_f32_u32 (ix), is_boring, boring, q,
+ special);
+
+ float32x4_t y = vdivq_f32 (q, vaddq_f32 (q, v_f32 (2.0)));
return vbslq_f32 (is_boring, boring, y);
}
libmvec_hidden_def (V_NAME_F1 (tanh))
diff --git a/sysdeps/aarch64/fpu/v_expm1f_inline.h b/sysdeps/aarch64/fpu/v_expm1f_inline.h
index 59b552d..1daedfd 100644
--- a/sysdeps/aarch64/fpu/v_expm1f_inline.h
+++ b/sysdeps/aarch64/fpu/v_expm1f_inline.h
@@ -21,48 +21,47 @@
#define AARCH64_FPU_V_EXPM1F_INLINE_H
#include "v_math.h"
-#include "poly_advsimd_f32.h"
+#include "math_config.h"
struct v_expm1f_data
{
- float32x4_t poly[5];
- float invln2_and_ln2[4];
- float32x4_t shift;
+ float32x4_t c0, c2;
int32x4_t exponent_bias;
+ float c1, c3, inv_ln2, c4;
+ float ln2_hi, ln2_lo;
};
/* Coefficients generated using fpminimax with degree=5 in [-log(2)/2,
- log(2)/2]. Exponent bias is asuint(1.0f).
- invln2_and_ln2 Stores constants: invln2, ln2_lo, ln2_hi, 0. */
+ log(2)/2]. Exponent bias is asuint(1.0f). */
#define V_EXPM1F_DATA \
{ \
- .poly = { V4 (0x1.fffffep-2), V4 (0x1.5554aep-3), V4 (0x1.555736p-5), \
- V4 (0x1.12287cp-7), V4 (0x1.6b55a2p-10) }, \
- .shift = V4 (0x1.8p23f), .exponent_bias = V4 (0x3f800000), \
- .invln2_and_ln2 = { 0x1.715476p+0f, 0x1.62e4p-1f, 0x1.7f7d1cp-20f, 0 }, \
+ .c0 = V4 (0x1.fffffep-2), .c1 = 0x1.5554aep-3, .c2 = V4 (0x1.555736p-5), \
+ .c3 = 0x1.12287cp-7, .c4 = 0x1.6b55a2p-10, \
+ .exponent_bias = V4 (0x3f800000), .inv_ln2 = 0x1.715476p+0f, \
+ .ln2_hi = 0x1.62e4p-1f, .ln2_lo = 0x1.7f7d1cp-20f, \
}
static inline float32x4_t
expm1f_inline (float32x4_t x, const struct v_expm1f_data *d)
{
- /* Helper routine for calculating exp(x) - 1.
- Copied from v_expm1f_1u6.c, with all special-case handling removed - the
- calling routine should handle special values if required. */
+ /* Helper routine for calculating exp(x) - 1. */
+
+ float32x2_t ln2 = vld1_f32 (&d->ln2_hi);
+ float32x4_t lane_consts = vld1q_f32 (&d->c1);
/* Reduce argument: f in [-ln2/2, ln2/2], i is exact. */
- float32x4_t invln2_and_ln2 = vld1q_f32 (d->invln2_and_ln2);
- float32x4_t j
- = vsubq_f32 (vfmaq_laneq_f32 (d->shift, x, invln2_and_ln2, 0), d->shift);
+ float32x4_t j = vrndaq_f32 (vmulq_laneq_f32 (x, lane_consts, 2));
int32x4_t i = vcvtq_s32_f32 (j);
- float32x4_t f = vfmsq_laneq_f32 (x, j, invln2_and_ln2, 1);
- f = vfmsq_laneq_f32 (f, j, invln2_and_ln2, 2);
+ float32x4_t f = vfmsq_lane_f32 (x, j, ln2, 0);
+ f = vfmsq_lane_f32 (f, j, ln2, 1);
- /* Approximate expm1(f) with polynomial P, expm1(f) ~= f + f^2 * P(f).
- Uses Estrin scheme, where the main _ZGVnN4v_expm1f routine uses
- Horner. */
+ /* Approximate expm1(f) with polynomial P, expm1(f) ~= f + f^2 * P(f). */
float32x4_t f2 = vmulq_f32 (f, f);
float32x4_t f4 = vmulq_f32 (f2, f2);
- float32x4_t p = v_estrin_4_f32 (f, f2, f4, d->poly);
+ float32x4_t p01 = vfmaq_laneq_f32 (d->c0, f, lane_consts, 0);
+ float32x4_t p23 = vfmaq_laneq_f32 (d->c2, f, lane_consts, 1);
+ float32x4_t p = vfmaq_f32 (p01, f2, p23);
+ p = vfmaq_laneq_f32 (p, f4, lane_consts, 3);
p = vfmaq_f32 (f, f2, p);
/* t = 2^i. */
diff --git a/sysdeps/aarch64/fpu/v_log1pf_inline.h b/sysdeps/aarch64/fpu/v_log1pf_inline.h
index 643a6cd..73e45a9 100644
--- a/sysdeps/aarch64/fpu/v_log1pf_inline.h
+++ b/sysdeps/aarch64/fpu/v_log1pf_inline.h
@@ -25,54 +25,81 @@
struct v_log1pf_data
{
- float32x4_t poly[8], ln2;
uint32x4_t four;
int32x4_t three_quarters;
+ float c0, c3, c5, c7;
+ float32x4_t c4, c6, c1, c2, ln2;
};
/* Polynomial generated using FPMinimax in [-0.25, 0.5]. First two coefficients
(1, -0.5) are not stored as they can be generated more efficiently. */
#define V_LOG1PF_CONSTANTS_TABLE \
{ \
- .poly \
- = { V4 (0x1.5555aap-2f), V4 (-0x1.000038p-2f), V4 (0x1.99675cp-3f), \
- V4 (-0x1.54ef78p-3f), V4 (0x1.28a1f4p-3f), V4 (-0x1.0da91p-3f), \
- V4 (0x1.abcb6p-4f), V4 (-0x1.6f0d5ep-5f) }, \
- .ln2 = V4 (0x1.62e43p-1f), .four = V4 (0x40800000), \
- .three_quarters = V4 (0x3f400000) \
+ .c0 = 0x1.5555aap-2f, .c1 = V4 (-0x1.000038p-2f), \
+ .c2 = V4 (0x1.99675cp-3f), .c3 = -0x1.54ef78p-3f, \
+ .c4 = V4 (0x1.28a1f4p-3f), .c5 = -0x1.0da91p-3f, \
+ .c6 = V4 (0x1.abcb6p-4f), .c7 = -0x1.6f0d5ep-5f, \
+ .ln2 = V4 (0x1.62e43p-1f), .four = V4 (0x40800000), \
+ .three_quarters = V4 (0x3f400000) \
}
static inline float32x4_t
-eval_poly (float32x4_t m, const float32x4_t *c)
+eval_poly (float32x4_t m, const struct v_log1pf_data *d)
{
- /* Approximate log(1+m) on [-0.25, 0.5] using pairwise Horner (main routine
- uses split Estrin, but this way reduces register pressure in the calling
- routine). */
- float32x4_t q = vfmaq_f32 (v_f32 (-0.5), m, c[0]);
+ /* Approximate log(1+m) on [-0.25, 0.5] using pairwise Horner. */
+ float32x4_t c0357 = vld1q_f32 (&d->c0);
+ float32x4_t q = vfmaq_laneq_f32 (v_f32 (-0.5), m, c0357, 0);
float32x4_t m2 = vmulq_f32 (m, m);
- q = vfmaq_f32 (m, m2, q);
- float32x4_t p = v_pw_horner_6_f32 (m, m2, c + 1);
+ float32x4_t p67 = vfmaq_laneq_f32 (d->c6, m, c0357, 3);
+ float32x4_t p45 = vfmaq_laneq_f32 (d->c4, m, c0357, 2);
+ float32x4_t p23 = vfmaq_laneq_f32 (d->c2, m, c0357, 1);
+ float32x4_t p = vfmaq_f32 (p45, m2, p67);
+ p = vfmaq_f32 (p23, m2, p);
+ p = vfmaq_f32 (d->c1, m, p);
p = vmulq_f32 (m2, p);
- return vfmaq_f32 (q, m2, p);
+ p = vfmaq_f32 (m, m2, p);
+ return vfmaq_f32 (p, m2, q);
}
static inline float32x4_t
-log1pf_inline (float32x4_t x, const struct v_log1pf_data d)
+log1pf_inline (float32x4_t x, const struct v_log1pf_data *d)
{
- /* Helper for calculating log(x + 1). Copied from log1pf_2u1.c, with no
- special-case handling. See that file for details of the algorithm. */
+ /* Helper for calculating log(x + 1). */
+
+ /* With x + 1 = t * 2^k (where t = m + 1 and k is chosen such that m
+ is in [-0.25, 0.5]):
+ log1p(x) = log(t) + log(2^k) = log1p(m) + k*log(2).
+
+ We approximate log1p(m) with a polynomial, then scale by
+ k*log(2). Instead of doing this directly, we use an intermediate
+ scale factor s = 4*k*log(2) to ensure the scale is representable
+ as a normalised fp32 number. */
float32x4_t m = vaddq_f32 (x, v_f32 (1.0f));
+
+ /* Choose k to scale x to the range [-1/4, 1/2]. */
int32x4_t k
- = vandq_s32 (vsubq_s32 (vreinterpretq_s32_f32 (m), d.three_quarters),
+ = vandq_s32 (vsubq_s32 (vreinterpretq_s32_f32 (m), d->three_quarters),
v_s32 (0xff800000));
uint32x4_t ku = vreinterpretq_u32_s32 (k);
- float32x4_t s = vreinterpretq_f32_u32 (vsubq_u32 (d.four, ku));
+
+ /* Scale up to ensure that the scale factor is representable as normalised
+ fp32 number, and scale m down accordingly. */
+ float32x4_t s = vreinterpretq_f32_u32 (vsubq_u32 (d->four, ku));
+
+ /* Scale x by exponent manipulation. */
float32x4_t m_scale
= vreinterpretq_f32_u32 (vsubq_u32 (vreinterpretq_u32_f32 (x), ku));
m_scale = vaddq_f32 (m_scale, vfmaq_f32 (v_f32 (-1.0f), v_f32 (0.25f), s));
- float32x4_t p = eval_poly (m_scale, d.poly);
+
+ /* Evaluate polynomial on the reduced interval. */
+ float32x4_t p = eval_poly (m_scale, d);
+
+ /* The scale factor to be applied back at the end - by multiplying float(k)
+ by 2^-23 we get the unbiased exponent of k. */
float32x4_t scale_back = vmulq_f32 (vcvtq_f32_s32 (k), v_f32 (0x1.0p-23f));
- return vfmaq_f32 (p, scale_back, d.ln2);
+
+ /* Apply the scaling back. */
+ return vfmaq_f32 (p, scale_back, d->ln2);
}
#endif
diff --git a/sysdeps/aarch64/libm-test-ulps b/sysdeps/aarch64/libm-test-ulps
index 846fb2c..8c333fc 100644
--- a/sysdeps/aarch64/libm-test-ulps
+++ b/sysdeps/aarch64/libm-test-ulps
@@ -1653,22 +1653,18 @@ ldouble: 3
Function: "tgamma":
double: 9
-float: 8
ldouble: 4
Function: "tgamma_downward":
double: 9
-float: 7
ldouble: 5
Function: "tgamma_towardzero":
double: 9
-float: 7
ldouble: 5
Function: "tgamma_upward":
double: 9
-float: 8
ldouble: 4
Function: "y0":
diff --git a/sysdeps/aarch64/memset.S b/sysdeps/aarch64/memset.S
index 7ef77ee..b76dde1 100644
--- a/sysdeps/aarch64/memset.S
+++ b/sysdeps/aarch64/memset.S
@@ -1,4 +1,5 @@
-/* Copyright (C) 2012-2024 Free Software Foundation, Inc.
+/* Generic optimized memset using SIMD.
+ Copyright (C) 2012-2024 Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -17,7 +18,6 @@
<https://www.gnu.org/licenses/>. */
#include <sysdep.h>
-#include "memset-reg.h"
#ifndef MEMSET
# define MEMSET memset
@@ -25,130 +25,131 @@
/* Assumptions:
*
- * ARMv8-a, AArch64, unaligned accesses
+ * ARMv8-a, AArch64, Advanced SIMD, unaligned accesses.
*
*/
-ENTRY (MEMSET)
+#define dstin x0
+#define valw w1
+#define count x2
+#define dst x3
+#define dstend x4
+#define zva_val x5
+#define off x3
+#define dstend2 x5
+ENTRY (MEMSET)
PTR_ARG (0)
SIZE_ARG (2)
dup v0.16B, valw
+ cmp count, 16
+ b.lo L(set_small)
+
add dstend, dstin, count
+ cmp count, 64
+ b.hs L(set_128)
- cmp count, 96
- b.hi L(set_long)
- cmp count, 16
- b.hs L(set_medium)
- mov val, v0.D[0]
+ /* Set 16..63 bytes. */
+ mov off, 16
+ and off, off, count, lsr 1
+ sub dstend2, dstend, off
+ str q0, [dstin]
+ str q0, [dstin, off]
+ str q0, [dstend2, -16]
+ str q0, [dstend, -16]
+ ret
+ .p2align 4
/* Set 0..15 bytes. */
- tbz count, 3, 1f
- str val, [dstin]
- str val, [dstend, -8]
- ret
- nop
-1: tbz count, 2, 2f
- str valw, [dstin]
- str valw, [dstend, -4]
+L(set_small):
+ add dstend, dstin, count
+ cmp count, 4
+ b.lo 2f
+ lsr off, count, 3
+ sub dstend2, dstend, off, lsl 2
+ str s0, [dstin]
+ str s0, [dstin, off, lsl 2]
+ str s0, [dstend2, -4]
+ str s0, [dstend, -4]
ret
+
+ /* Set 0..3 bytes. */
2: cbz count, 3f
+ lsr off, count, 1
strb valw, [dstin]
- tbz count, 1, 3f
- strh valw, [dstend, -2]
+ strb valw, [dstin, off]
+ strb valw, [dstend, -1]
3: ret
- /* Set 17..96 bytes. */
-L(set_medium):
- str q0, [dstin]
- tbnz count, 6, L(set96)
- str q0, [dstend, -16]
- tbz count, 5, 1f
- str q0, [dstin, 16]
- str q0, [dstend, -32]
-1: ret
-
.p2align 4
- /* Set 64..96 bytes. Write 64 bytes from the start and
- 32 bytes from the end. */
-L(set96):
- str q0, [dstin, 16]
+L(set_128):
+ bic dst, dstin, 15
+ cmp count, 128
+ b.hi L(set_long)
+ stp q0, q0, [dstin]
stp q0, q0, [dstin, 32]
+ stp q0, q0, [dstend, -64]
stp q0, q0, [dstend, -32]
ret
- .p2align 3
- nop
+ .p2align 4
L(set_long):
- and valw, valw, 255
- bic dst, dstin, 15
str q0, [dstin]
- cmp count, 256
- ccmp valw, 0, 0, cs
- b.eq L(try_zva)
-L(no_zva):
- sub count, dstend, dst /* Count is 16 too large. */
- sub dst, dst, 16 /* Dst is biased by -32. */
- sub count, count, 64 + 16 /* Adjust count and bias for loop. */
-1: stp q0, q0, [dst, 32]
- stp q0, q0, [dst, 64]!
-L(tail64):
- subs count, count, 64
- b.hi 1b
-2: stp q0, q0, [dstend, -64]
+ str q0, [dst, 16]
+ tst valw, 255
+ b.ne L(no_zva)
+#ifndef ZVA64_ONLY
+ mrs zva_val, dczid_el0
+ and zva_val, zva_val, 31
+ cmp zva_val, 4 /* ZVA size is 64 bytes. */
+ b.ne L(zva_128)
+#endif
+ stp q0, q0, [dst, 32]
+ bic dst, dstin, 63
+ sub count, dstend, dst /* Count is now 64 too large. */
+ sub count, count, 64 + 64 /* Adjust count and bias for loop. */
+
+ /* Write last bytes before ZVA loop. */
+ stp q0, q0, [dstend, -64]
stp q0, q0, [dstend, -32]
+
+ .p2align 4
+L(zva64_loop):
+ add dst, dst, 64
+ dc zva, dst
+ subs count, count, 64
+ b.hi L(zva64_loop)
ret
-L(try_zva):
-#ifndef ZVA64_ONLY
.p2align 3
- mrs tmp1, dczid_el0
- tbnz tmp1w, 4, L(no_zva)
- and tmp1w, tmp1w, 15
- cmp tmp1w, 4 /* ZVA size is 64 bytes. */
- b.ne L(zva_128)
- nop
-#endif
- /* Write the first and last 64 byte aligned block using stp rather
- than using DC ZVA. This is faster on some cores.
- */
- .p2align 4
-L(zva_64):
- str q0, [dst, 16]
+L(no_zva):
+ sub count, dstend, dst /* Count is 32 too large. */
+ sub count, count, 64 + 32 /* Adjust count and bias for loop. */
+L(no_zva_loop):
stp q0, q0, [dst, 32]
- bic dst, dst, 63
stp q0, q0, [dst, 64]
- stp q0, q0, [dst, 96]
- sub count, dstend, dst /* Count is now 128 too large. */
- sub count, count, 128+64+64 /* Adjust count and bias for loop. */
- add dst, dst, 128
-1: dc zva, dst
add dst, dst, 64
subs count, count, 64
- b.hi 1b
- stp q0, q0, [dst, 0]
- stp q0, q0, [dst, 32]
+ b.hi L(no_zva_loop)
stp q0, q0, [dstend, -64]
stp q0, q0, [dstend, -32]
ret
#ifndef ZVA64_ONLY
- .p2align 3
+ .p2align 4
L(zva_128):
- cmp tmp1w, 5 /* ZVA size is 128 bytes. */
- b.ne L(zva_other)
+ cmp zva_val, 5 /* ZVA size is 128 bytes. */
+ b.ne L(no_zva)
- str q0, [dst, 16]
stp q0, q0, [dst, 32]
stp q0, q0, [dst, 64]
stp q0, q0, [dst, 96]
bic dst, dst, 127
sub count, dstend, dst /* Count is now 128 too large. */
- sub count, count, 128+128 /* Adjust count and bias for loop. */
- add dst, dst, 128
-1: dc zva, dst
- add dst, dst, 128
+ sub count, count, 128 + 128 /* Adjust count and bias for loop. */
+1: add dst, dst, 128
+ dc zva, dst
subs count, count, 128
b.hi 1b
stp q0, q0, [dstend, -128]
@@ -156,35 +157,6 @@ L(zva_128):
stp q0, q0, [dstend, -64]
stp q0, q0, [dstend, -32]
ret
-
-L(zva_other):
- mov tmp2w, 4
- lsl zva_lenw, tmp2w, tmp1w
- add tmp1, zva_len, 64 /* Max alignment bytes written. */
- cmp count, tmp1
- blo L(no_zva)
-
- sub tmp2, zva_len, 1
- add tmp1, dst, zva_len
- add dst, dst, 16
- subs count, tmp1, dst /* Actual alignment bytes to write. */
- bic tmp1, tmp1, tmp2 /* Aligned dc zva start address. */
- beq 2f
-1: stp q0, q0, [dst], 64
- stp q0, q0, [dst, -32]
- subs count, count, 64
- b.hi 1b
-2: mov dst, tmp1
- sub count, dstend, tmp1 /* Remaining bytes to write. */
- subs count, count, zva_len
- b.lo 4f
-3: dc zva, dst
- add dst, dst, zva_len
- subs count, count, zva_len
- b.hs 3b
-4: add count, count, zva_len
- sub dst, dst, 32 /* Bias dst for tail loop. */
- b L(tail64)
#endif
END (MEMSET)
diff --git a/sysdeps/aarch64/multiarch/memset_a64fx.S b/sysdeps/aarch64/multiarch/memset_a64fx.S
index 2e6d882..f665b5a 100644
--- a/sysdeps/aarch64/multiarch/memset_a64fx.S
+++ b/sysdeps/aarch64/multiarch/memset_a64fx.S
@@ -18,7 +18,6 @@
<https://www.gnu.org/licenses/>. */
#include <sysdep.h>
-#include <sysdeps/aarch64/memset-reg.h>
/* Assumptions:
*
@@ -36,6 +35,14 @@
.arch armv8.2-a+sve
+#define dstin x0
+#define valw w1
+#define count x2
+#define dst x3
+#define dstend x4
+#define tmp1 x5
+#define tmp2 x6
+
.macro st1b_unroll first=0, last=7
st1b z0.b, p0, [dst, \first, mul vl]
.if \last-\first
diff --git a/sysdeps/aarch64/multiarch/memset_emag.S b/sysdeps/aarch64/multiarch/memset_emag.S
index 6d714ed..cf1b25f 100644
--- a/sysdeps/aarch64/multiarch/memset_emag.S
+++ b/sysdeps/aarch64/multiarch/memset_emag.S
@@ -18,7 +18,6 @@
<https://www.gnu.org/licenses/>. */
#include <sysdep.h>
-#include "memset-reg.h"
/* Assumptions:
*
@@ -26,6 +25,13 @@
*
*/
+#define dstin x0
+#define val x1
+#define valw w1
+#define count x2
+#define dst x3
+#define dstend x4
+
ENTRY (__memset_emag)
PTR_ARG (0)
diff --git a/sysdeps/aarch64/multiarch/memset_kunpeng.S b/sysdeps/aarch64/multiarch/memset_kunpeng.S
index 7b21550..f815c20 100644
--- a/sysdeps/aarch64/multiarch/memset_kunpeng.S
+++ b/sysdeps/aarch64/multiarch/memset_kunpeng.S
@@ -18,7 +18,6 @@
<https://www.gnu.org/licenses/>. */
#include <sysdep.h>
-#include <sysdeps/aarch64/memset-reg.h>
/* Assumptions:
*
@@ -26,6 +25,12 @@
*
*/
+#define dstin x0
+#define valw w1
+#define count x2
+#define dst x3
+#define dstend x4
+
ENTRY (__memset_kunpeng)
PTR_ARG (0)
diff --git a/sysdeps/aarch64/multiarch/memset_oryon1.S b/sysdeps/aarch64/multiarch/memset_oryon1.S
index b43a43b..6fa28a9 100644
--- a/sysdeps/aarch64/multiarch/memset_oryon1.S
+++ b/sysdeps/aarch64/multiarch/memset_oryon1.S
@@ -19,12 +19,18 @@
<https://www.gnu.org/licenses/>. */
#include <sysdep.h>
-#include "memset-reg.h"
/* Assumptions:
ARMv8-a, AArch64, unaligned accesses
*/
+#define dstin x0
+#define val x1
+#define valw w1
+#define count x2
+#define dst x3
+#define dstend x4
+
ENTRY (__memset_oryon1)
PTR_ARG (0)
diff --git a/sysdeps/alpha/fpu/libm-test-ulps b/sysdeps/alpha/fpu/libm-test-ulps
index e28c2af..5c61754 100644
--- a/sysdeps/alpha/fpu/libm-test-ulps
+++ b/sysdeps/alpha/fpu/libm-test-ulps
@@ -1410,22 +1410,18 @@ ldouble: 3
Function: "tgamma":
double: 9
-float: 8
ldouble: 4
Function: "tgamma_downward":
double: 9
-float: 7
ldouble: 5
Function: "tgamma_towardzero":
double: 9
-float: 7
ldouble: 5
Function: "tgamma_upward":
double: 9
-float: 8
ldouble: 4
Function: "y0":
diff --git a/sysdeps/arc/bits/endianness.h b/sysdeps/arc/bits/endianness.h
index 8f17ca8..4a6e7d4 100644
--- a/sysdeps/arc/bits/endianness.h
+++ b/sysdeps/arc/bits/endianness.h
@@ -5,11 +5,7 @@
# error "Never use <bits/endian.h> directly; include <endian.h> instead."
#endif
-/* ARC has selectable endianness. */
-#ifdef __BIG_ENDIAN__
-# define __BYTE_ORDER __BIG_ENDIAN
-#else
-# define __BYTE_ORDER __LITTLE_ENDIAN
-#endif
+/* Only little-endian ARC is supported. */
+#define __BYTE_ORDER __LITTLE_ENDIAN
#endif /* bits/endianness.h */
diff --git a/sysdeps/arc/configure b/sysdeps/arc/configure
index 08e4f23..b419298 100644
--- a/sysdeps/arc/configure
+++ b/sysdeps/arc/configure
@@ -10,7 +10,7 @@ libc_cv_asm_line_sep='`'
printf "%s\n" "#define ASM_LINE_SEP $libc_cv_asm_line_sep" >>confdefs.h
-# For big endian ABI, generate a symbol for selecting right dynamic linker
+# ARC big endian ABI is no longer supported.
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep -e" >&5
@@ -175,13 +175,8 @@ fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_arc_be" >&5
printf "%s\n" "$libc_cv_arc_be" >&6; }
if test $libc_cv_arc_be = yes; then
- # For shlib-versions.
- printf "%s\n" "#define HAVE_ARC_BE 1" >>confdefs.h
-
- config_vars="$config_vars
-default-abi = arcbe"
-else
- config_vars="$config_vars
-default-abi = arcle"
+ as_fn_error $? "big-endian not supported" "$LINENO" 5
fi
+config_vars="$config_vars
+default-abi = arcle"
diff --git a/sysdeps/arc/configure.ac b/sysdeps/arc/configure.ac
index 619da4e..48dc6f5 100644
--- a/sysdeps/arc/configure.ac
+++ b/sysdeps/arc/configure.ac
@@ -9,7 +9,7 @@ libc_cv_have_sdata_section=no
libc_cv_asm_line_sep='`'
AC_DEFINE_UNQUOTED(ASM_LINE_SEP, $libc_cv_asm_line_sep)
-# For big endian ABI, generate a symbol for selecting right dynamic linker
+# ARC big endian ABI is no longer supported.
AC_CACHE_CHECK([for big endian],
[libc_cv_arc_be],
[AC_EGREP_CPP(yes,[#ifdef __BIG_ENDIAN__
@@ -17,9 +17,6 @@ AC_CACHE_CHECK([for big endian],
#endif
], libc_cv_arc_be=yes, libc_cv_arc_be=no)])
if test $libc_cv_arc_be = yes; then
- # For shlib-versions.
- AC_DEFINE(HAVE_ARC_BE)
- LIBC_CONFIG_VAR([default-abi], [arcbe])
-else
- LIBC_CONFIG_VAR([default-abi], [arcle])
+ AC_MSG_ERROR([big-endian not supported])
fi
+LIBC_CONFIG_VAR([default-abi], [arcle])
diff --git a/sysdeps/arc/fpu/libm-test-ulps b/sysdeps/arc/fpu/libm-test-ulps
index 41c8ef1..d1665b9 100644
--- a/sysdeps/arc/fpu/libm-test-ulps
+++ b/sysdeps/arc/fpu/libm-test-ulps
@@ -787,6 +787,22 @@ Function: "exp10_upward":
double: 4
float: 1
+Function: "exp10m1":
+double: 4
+float: 2
+
+Function: "exp10m1_downward":
+double: 3
+float: 3
+
+Function: "exp10m1_towardzero":
+double: 2
+float: 3
+
+Function: "exp10m1_upward":
+double: 5
+float: 3
+
Function: "exp2":
double: 1
float: 1
@@ -801,6 +817,22 @@ Function: "exp2_upward":
double: 2
float: 1
+Function: "exp2m1":
+double: 2
+float: 2
+
+Function: "exp2m1_downward":
+double: 3
+float: 3
+
+Function: "exp2m1_towardzero":
+double: 3
+float: 2
+
+Function: "exp2m1_upward":
+double: 3
+float: 3
+
Function: "exp_downward":
double: 1
float: 1
@@ -943,6 +975,22 @@ Function: "log10_upward":
double: 3
float: 4
+Function: "log10p1":
+double: 2
+float: 2
+
+Function: "log10p1_downward":
+double: 2
+float: 3
+
+Function: "log10p1_towardzero":
+double: 3
+float: 2
+
+Function: "log10p1_upward":
+double: 2
+float: 3
+
Function: "log1p":
double: 1
float: 1
@@ -971,6 +1019,22 @@ Function: "log2_upward":
double: 1
float: 1
+Function: "log2p1":
+double: 2
+float: 2
+
+Function: "log2p1_downward":
+double: 2
+float: 2
+
+Function: "log2p1_towardzero":
+double: 2
+float: 2
+
+Function: "log2p1_upward":
+double: 2
+float: 2
+
Function: "log_towardzero":
double: 1
float: 1
@@ -1093,19 +1157,15 @@ float: 3
Function: "tgamma":
double: 9
-float: 9
Function: "tgamma_downward":
double: 9
-float: 9
Function: "tgamma_towardzero":
double: 9
-float: 8
Function: "tgamma_upward":
double: 9
-float: 9
Function: "y0":
double: 3
diff --git a/sysdeps/arc/nofpu/libm-test-ulps b/sysdeps/arc/nofpu/libm-test-ulps
index d3f4595..e768024 100644
--- a/sysdeps/arc/nofpu/libm-test-ulps
+++ b/sysdeps/arc/nofpu/libm-test-ulps
@@ -192,9 +192,17 @@ Function: "exp10":
double: 2
float: 1
+Function: "exp10m1":
+double: 3
+float: 2
+
Function: "exp2":
double: 1
+Function: "exp2m1":
+double: 2
+float: 2
+
Function: "expm1":
double: 1
float: 1
@@ -205,6 +213,7 @@ float: 7
Function: "hypot":
double: 1
+float: 1
Function: "j0":
double: 2
@@ -226,6 +235,10 @@ Function: "log10":
double: 2
float: 2
+Function: "log10p1":
+double: 1
+float: 2
+
Function: "log1p":
double: 1
float: 1
@@ -234,6 +247,10 @@ Function: "log2":
double: 2
float: 1
+Function: "log2p1":
+double: 1
+float: 2
+
Function: "logp1":
double: 1
float: 1
@@ -262,7 +279,6 @@ float: 2
Function: "tgamma":
double: 9
-float: 8
Function: "y0":
double: 3
diff --git a/sysdeps/arm/libm-test-ulps b/sysdeps/arm/libm-test-ulps
index 100e9d1..21fe98a 100644
--- a/sysdeps/arm/libm-test-ulps
+++ b/sysdeps/arm/libm-test-ulps
@@ -1152,19 +1152,15 @@ float: 3
Function: "tgamma":
double: 9
-float: 8
Function: "tgamma_downward":
double: 9
-float: 7
Function: "tgamma_towardzero":
double: 9
-float: 7
Function: "tgamma_upward":
double: 9
-float: 8
Function: "y0":
double: 3
diff --git a/sysdeps/csky/fpu/libm-test-ulps b/sysdeps/csky/fpu/libm-test-ulps
index fc634f8..151df00 100644
--- a/sysdeps/csky/fpu/libm-test-ulps
+++ b/sysdeps/csky/fpu/libm-test-ulps
@@ -1061,19 +1061,15 @@ float: 3
Function: "tgamma":
double: 9
-float: 8
Function: "tgamma_downward":
double: 8
-float: 7
Function: "tgamma_towardzero":
double: 9
-float: 7
Function: "tgamma_upward":
double: 9
-float: 8
Function: "y0":
double: 3
diff --git a/sysdeps/csky/nofpu/libm-test-ulps b/sysdeps/csky/nofpu/libm-test-ulps
index a1e28c8..48697a7 100644
--- a/sysdeps/csky/nofpu/libm-test-ulps
+++ b/sysdeps/csky/nofpu/libm-test-ulps
@@ -1092,19 +1092,15 @@ float: 3
Function: "tgamma":
double: 9
-float: 8
Function: "tgamma_downward":
double: 5
-float: 5
Function: "tgamma_towardzero":
double: 5
-float: 4
Function: "tgamma_upward":
double: 4
-float: 4
Function: "y0":
double: 3
diff --git a/sysdeps/generic/internal-signals.h b/sysdeps/generic/internal-signals.h
index 3db100b..e031a96 100644
--- a/sysdeps/generic/internal-signals.h
+++ b/sysdeps/generic/internal-signals.h
@@ -20,6 +20,7 @@
# define __INTERNAL_SIGNALS_H
#include <signal.h>
+#include <internal-sigset.h>
#include <sigsetops.h>
#include <stdbool.h>
#include <stddef.h>
@@ -39,10 +40,32 @@ clear_internal_signals (sigset_t *set)
{
}
-typedef sigset_t internal_sigset_t;
-
#define internal_sigemptyset(__s) __sigemptyset (__s)
+#define internal_sigfillset(__s) __sigfillset (__s)
#define internal_sigaddset(__s, __i) __sigaddset (__s, __i)
#define internal_sigprocmask(__h, __s, __o) __sigprocmask (__h, __s, __o)
+static inline void
+internal_signal_block_all (internal_sigset_t *oset)
+{
+ internal_sigset_t set;
+ internal_sigfillset (&set);
+ internal_sigprocmask (SIG_BLOCK, &set, oset);
+}
+
+static inline void
+internal_signal_restore_set (const internal_sigset_t *set)
+{
+ internal_sigprocmask (SIG_SETMASK, set, NULL);
+}
+
+static inline void
+internal_signal_unblock_signal (int sig)
+{
+ internal_sigset_t set;
+ internal_sigemptyset (&set);
+ internal_sigaddset (&set, sig);
+ internal_sigprocmask (SIG_UNBLOCK, &set, NULL);
+}
+
#endif /* __INTERNAL_SIGNALS_H */
diff --git a/sysdeps/generic/internal-sigset.h b/sysdeps/generic/internal-sigset.h
new file mode 100644
index 0000000..80279ff
--- /dev/null
+++ b/sysdeps/generic/internal-sigset.h
@@ -0,0 +1,26 @@
+/* Internal sigset_t definition.
+ Copyright (C) 2022-2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+#ifndef _INTERNAL_SIGSET_H
+#define _INTERNAL_SIGSET_H
+
+#include <signal.h>
+
+typedef sigset_t internal_sigset_t;
+
+#endif
diff --git a/sysdeps/generic/syscall_types.h b/sysdeps/generic/syscall_types.h
new file mode 100644
index 0000000..2ddeaa2
--- /dev/null
+++ b/sysdeps/generic/syscall_types.h
@@ -0,0 +1,25 @@
+/* Types and macros used for syscall issuing.
+ Copyright (C) 2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+#ifndef _SYSCALL_TYPES_H
+#define _SYSCALL_TYPES_H
+
+typedef long int __syscall_arg_t;
+#define __SSC(__x) ((__syscall_arg_t) (__x))
+
+#endif
diff --git a/sysdeps/hppa/dl-fptr.h b/sysdeps/hppa/dl-fptr.h
index 7c5eb0b..b7fd9cf 100644
--- a/sysdeps/hppa/dl-fptr.h
+++ b/sysdeps/hppa/dl-fptr.h
@@ -19,7 +19,28 @@
#ifndef dl_hppa_fptr_h
#define dl_hppa_fptr_h 1
-#include <sysdeps/generic/dl-fptr.h>
+/* An FDESC is a function descriptor. */
+
+struct fdesc
+ {
+ ElfW(Addr) ip; /* code entry point */
+ ElfW(Addr) gp; /* global pointer */
+ };
+
+struct fdesc_table
+ {
+ struct fdesc_table *next;
+ unsigned int len; /* # of entries in fdesc table */
+ volatile unsigned int first_unused; /* index of first available entry */
+ struct fdesc fdesc[0];
+ };
+
+struct link_map;
+
+extern ElfW(Addr) _dl_boot_fptr_table [];
+
+extern ElfW(Addr) _dl_make_fptr (struct link_map *, const ElfW(Sym) *,
+ ElfW(Addr));
/* Initialize function pointer code. Call before relocation processing. */
extern void _dl_fptr_init (void);
diff --git a/sysdeps/hppa/fpu/libm-test-ulps b/sysdeps/hppa/fpu/libm-test-ulps
index ea5101f..57c1155 100644
--- a/sysdeps/hppa/fpu/libm-test-ulps
+++ b/sysdeps/hppa/fpu/libm-test-ulps
@@ -797,20 +797,20 @@ double: 2
float: 1
Function: "exp10m1":
-double: 2
-float: 1
+double: 4
+float: 2
Function: "exp10m1_downward":
-double: 1
-float: 1
+double: 3
+float: 3
Function: "exp10m1_towardzero":
-double: 1
-float: 1
+double: 2
+float: 3
Function: "exp10m1_upward":
-double: 3
-float: 1
+double: 5
+float: 4
Function: "exp2":
double: 1
@@ -829,20 +829,20 @@ double: 1
float: 1
Function: "exp2m1":
-double: 1
-float: 1
+double: 2
+float: 2
Function: "exp2m1_downward":
-double: 2
-float: 1
+double: 3
+float: 3
Function: "exp2m1_towardzero":
-double: 2
-float: 1
+double: 3
+float: 2
Function: "exp2m1_upward":
-double: 1
-float: 1
+double: 3
+float: 3
Function: "exp_downward":
double: 1
@@ -992,20 +992,20 @@ double: 2
float: 2
Function: "log10p1":
-double: 1
-float: 1
+double: 2
+float: 2
Function: "log10p1_downward":
double: 2
-float: 1
+float: 3
Function: "log10p1_towardzero":
-double: 2
+double: 3
float: 2
Function: "log10p1_upward":
double: 2
-float: 1
+float: 3
Function: "log1p":
double: 1
@@ -1181,20 +1181,16 @@ float: 3
Function: "tgamma":
double: 9
-float: 8
ldouble: 1
Function: "tgamma_downward":
double: 9
-float: 7
Function: "tgamma_towardzero":
double: 9
-float: 7
Function: "tgamma_upward":
double: 9
-float: 8
Function: "y0":
double: 3
diff --git a/sysdeps/htl/pthreadP.h b/sysdeps/htl/pthreadP.h
index cf8a2ef..b0c9ceb 100644
--- a/sysdeps/htl/pthreadP.h
+++ b/sysdeps/htl/pthreadP.h
@@ -92,6 +92,8 @@ int __pthread_attr_setstack (pthread_attr_t *__attr, void *__stackaddr,
int __pthread_attr_getstack (const pthread_attr_t *, void **, size_t *);
void __pthread_testcancel (void);
+#define __pthread_raise_internal(__sig) raise (__sig)
+
libc_hidden_proto (__pthread_self)
#if IS_IN (libpthread)
diff --git a/sysdeps/i386/fpu/libm-test-ulps b/sysdeps/i386/fpu/libm-test-ulps
index 7da1379..d13b05a 100644
--- a/sysdeps/i386/fpu/libm-test-ulps
+++ b/sysdeps/i386/fpu/libm-test-ulps
@@ -1431,7 +1431,7 @@ ldouble: 4
Function: "log10p1_downward":
double: 2
-float: 1
+float: 3
float128: 4
ldouble: 8
@@ -1443,7 +1443,7 @@ ldouble: 8
Function: "log10p1_upward":
double: 2
-float: 2
+float: 3
float128: 4
ldouble: 6
@@ -1512,7 +1512,7 @@ float128: 2
ldouble: 3
Function: "log2p1_upward":
-double: 1
+double: 2
float: 2
float128: 3
ldouble: 5
@@ -1699,25 +1699,21 @@ ldouble: 4
Function: "tgamma":
double: 9
-float: 8
float128: 4
ldouble: 5
Function: "tgamma_downward":
double: 9
-float: 7
float128: 5
ldouble: 6
Function: "tgamma_towardzero":
double: 9
-float: 7
float128: 5
ldouble: 6
Function: "tgamma_upward":
double: 9
-float: 8
float128: 4
ldouble: 5
diff --git a/sysdeps/i386/i686/fpu/multiarch/libm-test-ulps b/sysdeps/i386/i686/fpu/multiarch/libm-test-ulps
index 2c7497b..0a813aa 100644
--- a/sysdeps/i386/i686/fpu/multiarch/libm-test-ulps
+++ b/sysdeps/i386/i686/fpu/multiarch/libm-test-ulps
@@ -1215,7 +1215,7 @@ Function: "exp2m1_towardzero":
double: 3
float: 2
float128: 4
-ldouble: 5
+ldouble: 6
Function: "exp2m1_upward":
double: 3
@@ -1701,25 +1701,21 @@ ldouble: 4
Function: "tgamma":
double: 9
-float: 8
float128: 4
ldouble: 5
Function: "tgamma_downward":
double: 9
-float: 7
float128: 5
ldouble: 6
Function: "tgamma_towardzero":
double: 9
-float: 7
float128: 5
ldouble: 6
Function: "tgamma_upward":
double: 8
-float: 8
float128: 4
ldouble: 5
diff --git a/sysdeps/i386/i686/multiarch/s_fma-fma.c b/sysdeps/i386/i686/multiarch/s_fma-fma.c
index 9d17f67..6c3fbc0 100644
--- a/sysdeps/i386/i686/multiarch/s_fma-fma.c
+++ b/sysdeps/i386/i686/multiarch/s_fma-fma.c
@@ -9,7 +9,7 @@
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
diff --git a/sysdeps/i386/i686/multiarch/s_fma.c b/sysdeps/i386/i686/multiarch/s_fma.c
index 978345b..3ae111a 100644
--- a/sysdeps/i386/i686/multiarch/s_fma.c
+++ b/sysdeps/i386/i686/multiarch/s_fma.c
@@ -9,7 +9,7 @@
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
diff --git a/sysdeps/i386/i686/multiarch/s_fmaf-fma.c b/sysdeps/i386/i686/multiarch/s_fmaf-fma.c
index f049a60..aff92fa 100644
--- a/sysdeps/i386/i686/multiarch/s_fmaf-fma.c
+++ b/sysdeps/i386/i686/multiarch/s_fmaf-fma.c
@@ -9,7 +9,7 @@
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
diff --git a/sysdeps/i386/i686/multiarch/s_fmaf.c b/sysdeps/i386/i686/multiarch/s_fmaf.c
index e92ebb1..c9be682 100644
--- a/sysdeps/i386/i686/multiarch/s_fmaf.c
+++ b/sysdeps/i386/i686/multiarch/s_fmaf.c
@@ -9,7 +9,7 @@
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
diff --git a/sysdeps/ieee754/dbl-64/gamma_productf.c b/sysdeps/ieee754/dbl-64/gamma_productf.c
index f3596ee..1cc8931 100644
--- a/sysdeps/ieee754/dbl-64/gamma_productf.c
+++ b/sysdeps/ieee754/dbl-64/gamma_productf.c
@@ -1,44 +1 @@
-/* Compute a product of X, X+1, ..., with an error estimate.
- Copyright (C) 2013-2024 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <https://www.gnu.org/licenses/>. */
-
-#include <math.h>
-#include <math-narrow-eval.h>
-#include <math_private.h>
-#include <float.h>
-
-/* Compute the product of X + X_EPS, X + X_EPS + 1, ..., X + X_EPS + N
- - 1, in the form R * (1 + *EPS) where the return value R is an
- approximation to the product and *EPS is set to indicate the
- approximate error in the return value. X is such that all the
- values X + 1, ..., X + N - 1 are exactly representable, and X_EPS /
- X is small enough that factors quadratic in it can be
- neglected. */
-
-float
-__gamma_productf (float x, float x_eps, int n, float *eps)
-{
- double x_full = (double) x + (double) x_eps;
- double ret = x_full;
- for (int i = 1; i < n; i++)
- ret *= x_full + i;
-
- float fret = math_narrow_eval ((float) ret);
- *eps = (ret - fret) / fret;
-
- return fret;
-}
+/* Not needed. */
diff --git a/sysdeps/ieee754/flt-32/e_gammaf_r.c b/sysdeps/ieee754/flt-32/e_gammaf_r.c
index a9730d6..90ed3b4 100644
--- a/sysdeps/ieee754/flt-32/e_gammaf_r.c
+++ b/sysdeps/ieee754/flt-32/e_gammaf_r.c
@@ -1,215 +1,150 @@
-/* Implementation of gamma function according to ISO C.
- Copyright (C) 1997-2024 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
+/* Implementation of the gamma function for binary32.
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+Copyright (c) 2023-2024 Alexei Sibidanov.
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+The original version of this file was copied from the CORE-MATH
+project (file src/binary32/tgamma/tgammaf.c, revision a48e352).
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <https://www.gnu.org/licenses/>. */
+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:
-#include <math.h>
-#include <math-narrow-eval.h>
-#include <math_private.h>
-#include <fenv_private.h>
-#include <math-underflow.h>
-#include <float.h>
-#include <libm-alias-finite.h>
-
-/* Coefficients B_2k / 2k(2k-1) of x^-(2k-1) inside exp in Stirling's
- approximation to gamma function. */
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
-static const float gamma_coeff[] =
- {
- 0x1.555556p-4f,
- -0xb.60b61p-12f,
- 0x3.403404p-12f,
- };
+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.
+ */
-#define NCOEFF (sizeof (gamma_coeff) / sizeof (gamma_coeff[0]))
+/* Changes with respect to the original CORE-MATH code:
+ - removed the dealing with errno
+ (this is done in the wrapper math/w_tgammaf_compat.c)
+ - usage of math_narrow_eval to deal with underflow/overflow
+ - deal with signgamp
+ */
-/* Return gamma (X), for positive X less than 42, in the form R *
- 2^(*EXP2_ADJ), where R is the return value and *EXP2_ADJ is set to
- avoid overflow or underflow in intermediate calculations. */
+#include <math.h>
+#include <float.h>
+#include <stdint.h>
+#include <stddef.h>
+#include <libm-alias-finite.h>
+#include <math-narrow-eval.h>
-static float
-gammaf_positive (float x, int *exp2_adj)
-{
- int local_signgam;
- if (x < 0.5f)
- {
- *exp2_adj = 0;
- return __ieee754_expf (__ieee754_lgammaf_r (x + 1, &local_signgam)) / x;
- }
- else if (x <= 1.5f)
- {
- *exp2_adj = 0;
- return __ieee754_expf (__ieee754_lgammaf_r (x, &local_signgam));
- }
- else if (x < 2.5f)
- {
- *exp2_adj = 0;
- float x_adj = x - 1;
- return (__ieee754_expf (__ieee754_lgammaf_r (x_adj, &local_signgam))
- * x_adj);
- }
- else
- {
- float eps = 0;
- float x_eps = 0;
- float x_adj = x;
- float prod = 1;
- if (x < 4.0f)
- {
- /* Adjust into the range for applying Stirling's
- approximation. */
- float n = ceilf (4.0f - x);
- x_adj = math_narrow_eval (x + n);
- x_eps = (x - (x_adj - n));
- prod = __gamma_productf (x_adj - n, x_eps, n, &eps);
- }
- /* The result is now gamma (X_ADJ + X_EPS) / (PROD * (1 + EPS)).
- Compute gamma (X_ADJ + X_EPS) using Stirling's approximation,
- starting by computing pow (X_ADJ, X_ADJ) with a power of 2
- factored out. */
- float exp_adj = -eps;
- float x_adj_int = roundf (x_adj);
- float x_adj_frac = x_adj - x_adj_int;
- int x_adj_log2;
- float x_adj_mant = __frexpf (x_adj, &x_adj_log2);
- if (x_adj_mant < M_SQRT1_2f)
- {
- x_adj_log2--;
- x_adj_mant *= 2.0f;
- }
- *exp2_adj = x_adj_log2 * (int) x_adj_int;
- float ret = (__ieee754_powf (x_adj_mant, x_adj)
- * __ieee754_exp2f (x_adj_log2 * x_adj_frac)
- * __ieee754_expf (-x_adj)
- * sqrtf (2 * M_PIf / x_adj)
- / prod);
- exp_adj += x_eps * __ieee754_logf (x_adj);
- float bsum = gamma_coeff[NCOEFF - 1];
- float x_adj2 = x_adj * x_adj;
- for (size_t i = 1; i <= NCOEFF - 1; i++)
- bsum = bsum / x_adj2 + gamma_coeff[NCOEFF - 1 - i];
- exp_adj += bsum / x_adj;
- return ret + ret * __expm1f (exp_adj);
- }
-}
+typedef union {float f; uint32_t u;} b32u32_u;
+typedef union {double f; uint64_t u;} b64u64_u;
float
__ieee754_gammaf_r (float x, int *signgamp)
{
- int32_t hx;
- float ret;
+ /* The wrapper in math/w_tgamma_template.c expects *signgamp to be set to a
+ non-negative value if the returned value is gamma(x), and to a negative
+ value if it is -gamma(x).
+ Since the code here directly computes gamma(x), we set it to 1.
+ */
+ if (signgamp != NULL)
+ *signgamp = 1;
- GET_FLOAT_WORD (hx, x);
+ /* List of exceptional cases. Each entry contains the 32-bit encoding u of x,
+ a binary32 approximation f of gamma(x), and a correction term df. */
+ static const struct {uint32_t u; float f, df;} tb[] = {
+ {0x27de86a9u, 0x1.268266p+47f, 0x1p22f}, // x = 0x1.bd0d52p-48
+ {0x27e05475u, 0x1.242422p+47f, 0x1p22f}, // x = 0x1.c0a8eap-48
+ {0xb63befb3u, -0x1.5cb6e4p+18f, 0x1p-7f}, // x = -0x1.77df66p-19
+ {0x3c7bb570u, 0x1.021d9p+6f, 0x1p-19f}, // x = 0x1.f76aep-7
+ {0x41e886d1u, 0x1.33136ap+98f, 0x1p73f}, // x = 0x1.d10da2p+4
+ {0xc067d177u, 0x1.f6850cp-3f, 0x1p-28f}, // x = -0x1.cfa2eep+1
+ {0xbd99da31u, -0x1.befe66p+3, -0x1p-22f}, // x = -0x1.33b462p-4
+ {0xbf54c45au, -0x1.a6b4ecp+2, +0x1p-23f}, // x = -0x1.a988b4p-1
+ {0x41ee77feu, 0x1.d3631cp+101, -0x1p-76f}, // x = 0x1.dceffcp+4
+ {0x3f843a64u, 0x1.f6c638p-1, 0x1p-26f}, // x = 0x1.0874c8p+0
+ };
- if (__glibc_unlikely ((hx & 0x7fffffff) == 0))
- {
- /* Return value for x == 0 is Inf with divide by zero exception. */
- *signgamp = 0;
- return 1.0 / x;
+ b32u32_u t = {.f = x};
+ uint32_t ax = t.u<<1;
+ if(__builtin_expect(ax>=(0xffu<<24), 0)){ /* x=NaN or +/-Inf */
+ if(ax==(0xffu<<24)){ /* x=+/-Inf */
+ if(t.u>>31){ /* x=-Inf */
+ return x / x; /* will raise the "Invalid operation" exception */
+ }
+ return x; /* x=+Inf */
}
- if (__builtin_expect (hx < 0, 0)
- && (uint32_t) hx < 0xff800000 && rintf (x) == x)
- {
- /* Return value for integer x < 0 is NaN with invalid exception. */
- *signgamp = 0;
- return (x - x) / (x - x);
+ return x + x; /* x=NaN, where x+x ensures the "Invalid operation"
+ exception is set if x is sNaN */
+ }
+ double z = x;
+ if(__builtin_expect(ax<0x6d000000u, 0)){ /* |x| < 0x1p-18 */
+ volatile double d = (0x1.fa658c23b1578p-1 - 0x1.d0a118f324b63p-1*z)*z - 0x1.2788cfc6fb619p-1;
+ double f = 1.0/z + d;
+ float r = f;
+ b64u64_u rt = {.f = f};
+ if(((rt.u+2)&0xfffffff) < 4){
+ for(unsigned i=0;i<sizeof(tb)/sizeof(tb[0]);i++)
+ if(t.u==tb[i].u) return tb[i].f + tb[i].df;
}
- if (__glibc_unlikely (hx == 0xff800000))
- {
- /* x == -Inf. According to ISO this is NaN. */
- *signgamp = 0;
- return x - x;
+ return r;
+ }
+ float fx = __builtin_floorf(x);
+ if(__builtin_expect(x >= 0x1.18522p+5f, 0)){
+ /* Overflow case. The original CORE-MATH code returns 0x1p127f * 0x1p127f,
+ but apparently some compilers replace this by +Inf. */
+ return math_narrow_eval (x * 0x1p127f);
+ }
+ /* compute k only after the overflow check, otherwise the case to integer
+ might overflow */
+ int k = fx;
+ if(__builtin_expect(fx==x, 0)){ /* x is integer */
+ if(x == 0.0f){
+ return 1.0f/x;
}
- if (__glibc_unlikely ((hx & 0x7f800000) == 0x7f800000))
- {
- /* Positive infinity (return positive infinity) or NaN (return
- NaN). */
- *signgamp = 0;
- return x + x;
+ if(x < 0.0f){
+ return 0.0f / 0.0f; /* should raise the "Invalid operation" exception */
}
+ double t0 = 1, x0 = 1;
+ for(int i=1; i<k; i++, x0 += 1.0) t0 *= x0;
+ return t0;
+ }
+ if(__builtin_expect(x<-42.0f, 0)){ /* negative non-integer */
+ /* For x < -42, x non-integer, |gamma(x)| < 2^-151. */
+ static const float sgn[2] = {0x1p-127f, -0x1p-127f};
+ /* Underflows always happens */
+ return math_narrow_eval (0x1p-127f * sgn[k&1]);
+ }
+ /* The array c[] stores a degree-15 polynomial approximation for gamma(x). */
+ static const double c[] =
+ {0x1.c9a76be577123p+0, 0x1.8f2754ddcf90dp+0, 0x1.0d1191949419bp+0, 0x1.e1f42cf0ae4a1p-2,
+ 0x1.82b358a3ab638p-3, 0x1.e1f2b30cd907bp-5, 0x1.240f6d4071bd8p-6, 0x1.1522c9f3cd012p-8,
+ 0x1.1fd0051a0525bp-10, 0x1.9808a8b96c37ep-13, 0x1.b3f78e01152b5p-15, 0x1.49c85a7e1fd04p-18,
+ 0x1.471ca49184475p-19, -0x1.368f0b7ed9e36p-23, 0x1.882222f9049efp-23, -0x1.a69ed2042842cp-25};
- if (x >= 36.0f)
- {
- /* Overflow. */
- *signgamp = 0;
- ret = math_narrow_eval (FLT_MAX * FLT_MAX);
- return ret;
- }
- else
- {
- SET_RESTORE_ROUNDF (FE_TONEAREST);
- if (x > 0.0f)
- {
- *signgamp = 0;
- int exp2_adj;
- float tret = gammaf_positive (x, &exp2_adj);
- ret = __scalbnf (tret, exp2_adj);
- }
- else if (x >= -FLT_EPSILON / 4.0f)
- {
- *signgamp = 0;
- ret = 1.0f / x;
- }
- else
- {
- float tx = truncf (x);
- *signgamp = (tx == 2.0f * truncf (tx / 2.0f)) ? -1 : 1;
- if (x <= -42.0f)
- /* Underflow. */
- ret = FLT_MIN * FLT_MIN;
- else
- {
- float frac = tx - x;
- if (frac > 0.5f)
- frac = 1.0f - frac;
- float sinpix = (frac <= 0.25f
- ? __sinf (M_PIf * frac)
- : __cosf (M_PIf * (0.5f - frac)));
- int exp2_adj;
- float tret = M_PIf / (-x * sinpix
- * gammaf_positive (-x, &exp2_adj));
- ret = __scalbnf (tret, -exp2_adj);
- math_check_force_underflow_nonneg (ret);
- }
- }
- ret = math_narrow_eval (ret);
- }
- if (isinf (ret) && x != 0)
- {
- if (*signgamp < 0)
- {
- ret = math_narrow_eval (-copysignf (FLT_MAX, ret) * FLT_MAX);
- ret = -ret;
- }
- else
- ret = math_narrow_eval (copysignf (FLT_MAX, ret) * FLT_MAX);
- return ret;
- }
- else if (ret == 0)
- {
- if (*signgamp < 0)
- {
- ret = math_narrow_eval (-copysignf (FLT_MIN, ret) * FLT_MIN);
- ret = -ret;
- }
- else
- ret = math_narrow_eval (copysignf (FLT_MIN, ret) * FLT_MIN);
- return ret;
+ double m = z - 0x1.7p+1, i = __builtin_roundeven(m), step = __builtin_copysign(1.0,i);
+ double d = m - i, d2 = d*d, d4 = d2*d2, d8 = d4*d4;
+ double f = (c[0] + d*c[1]) + d2*(c[2] + d*c[3]) + d4*((c[4] + d*c[5]) + d2*(c[6] + d*c[7]))
+ + d8*((c[8] + d*c[9]) + d2*(c[10] + d*c[11]) + d4*((c[12] + d*c[13]) + d2*(c[14] + d*c[15])));
+ int jm = __builtin_fabs(i);
+ double w = 1;
+ if(jm){
+ z -= 0.5 + step*0.5;
+ w = z;
+ for(int j=jm-1; j; j--) {z -= step; w *= z;}
+ }
+ if(i<=-0.5) w = 1/w;
+ f *= w;
+ b64u64_u rt = {.f = f};
+ float r = f;
+ /* Deal with exceptional cases. */
+ if(__builtin_expect(((rt.u+2)&0xfffffff) < 8, 0)){
+ for(unsigned j=0;j<sizeof(tb)/sizeof(tb[0]);j++) {
+ if(t.u==tb[j].u) return tb[j].f + tb[j].df;
}
- else
- return ret;
+ }
+ return r;
}
libm_alias_finite (__ieee754_gammaf_r, __gammaf_r)
diff --git a/sysdeps/ieee754/flt-32/math_config.h b/sysdeps/ieee754/flt-32/math_config.h
index 729f22c..dc07ebd 100644
--- a/sysdeps/ieee754/flt-32/math_config.h
+++ b/sysdeps/ieee754/flt-32/math_config.h
@@ -166,9 +166,9 @@ extern const struct exp2f_data
uint64_t tab[1 << EXP2F_TABLE_BITS];
double shift_scaled;
double poly[EXP2F_POLY_ORDER];
- double shift;
double invln2_scaled;
double poly_scaled[EXP2F_POLY_ORDER];
+ double shift;
} __exp2f_data attribute_hidden;
#define LOGF_TABLE_BITS 4
diff --git a/sysdeps/loongarch/dl-machine.h b/sysdeps/loongarch/dl-machine.h
index ab6f1da..a15d8e0 100644
--- a/sysdeps/loongarch/dl-machine.h
+++ b/sysdeps/loongarch/dl-machine.h
@@ -223,6 +223,13 @@ elf_machine_rela (struct link_map *map, struct r_scope_elem *scope[],
{
td->arg = _dl_make_tlsdesc_dynamic (sym_map,
sym->st_value + reloc->r_addend);
+# ifndef __loongarch_soft_float
+ if (RTLD_SUPPORT_LASX)
+ td->entry = _dl_tlsdesc_dynamic_lasx;
+ else if (RTLD_SUPPORT_LSX)
+ td->entry = _dl_tlsdesc_dynamic_lsx;
+ else
+# endif
td->entry = _dl_tlsdesc_dynamic;
}
else
diff --git a/sysdeps/loongarch/dl-tlsdesc-dynamic.h b/sysdeps/loongarch/dl-tlsdesc-dynamic.h
new file mode 100644
index 0000000..3daf991
--- /dev/null
+++ b/sysdeps/loongarch/dl-tlsdesc-dynamic.h
@@ -0,0 +1,222 @@
+/* Thread-local storage handling in the ELF dynamic linker.
+ LoongArch version.
+ Copyright (C) 2024 Free Software Foundation, Inc.
+
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+#define FRAME_SIZE (-((-14 * SZREG) & ALMASK))
+
+ /* Handler for dynamic TLS symbols.
+ Prototype:
+ _dl_tlsdesc_dynamic (tlsdesc *) ;
+
+ The second word of the descriptor points to a
+ tlsdesc_dynamic_arg structure.
+
+ Returns the offset between the thread pointer and the
+ object referenced by the argument.
+
+ ptrdiff_t
+ _dl_tlsdesc_dynamic (struct tlsdesc *tdp)
+ {
+ struct tlsdesc_dynamic_arg *td = tdp->arg;
+ dtv_t *dtv = *(dtv_t **)((char *)__thread_pointer - SIZE_OF_TCB);
+ if (__glibc_likely (td->gen_count <= dtv[0].counter
+ && (dtv[td->tlsinfo.ti_module].pointer.val
+ != TLS_DTV_UNALLOCATED),
+ 1))
+ return dtv[td->tlsinfo.ti_module].pointer.val
+ + td->tlsinfo.ti_offset
+ - __thread_pointer;
+
+ return ___tls_get_addr (&td->tlsinfo) - __thread_pointer;
+ } */
+ .hidden _dl_tlsdesc_dynamic
+ .global _dl_tlsdesc_dynamic
+ .type _dl_tlsdesc_dynamic,%function
+ cfi_startproc
+ .align 2
+_dl_tlsdesc_dynamic:
+ /* Save just enough registers to support fast path, if we fall
+ into slow path we will save additional registers. */
+ ADDI sp, sp, -32
+ cfi_adjust_cfa_offset (32)
+ REG_S t0, sp, 0
+ REG_S t1, sp, 8
+ REG_S t2, sp, 16
+ cfi_rel_offset (12, 0)
+ cfi_rel_offset (13, 8)
+ cfi_rel_offset (14, 16)
+
+/* Runtime Storage Layout of Thread-Local Storage
+ TP point to the start of TLS block.
+
+ dtv
+Low address TCB ----------------> dtv0(counter)
+ TP --> static_block0 <----- dtv1
+ static_block1 <----- dtv2
+ static_block2 <----- dtv3
+ dynamic_block0 <----- dtv4
+Hign address dynamic_block1 <----- dtv5 */
+
+ REG_L t0, tp, -SIZE_OF_TCB /* t0 = dtv */
+ REG_L a0, a0, TLSDESC_ARG /* a0(td) = tdp->arg */
+ REG_L t1, a0, TLSDESC_GEN_COUNT /* t1 = td->gen_count */
+ REG_L t2, t0, DTV_COUNTER /* t2 = dtv[0].counter */
+ /* If dtv[0].counter < td->gen_count, goto slow path. */
+ bltu t2, t1, .Lslow
+
+ REG_L t1, a0, TLSDESC_MODID /* t1 = td->tlsinfo.ti_module */
+ /* t1 = t1 * sizeof(dtv_t) = t1 * (2 * sizeof(void*)) */
+ slli.d t1, t1, 4
+ add.d t1, t1, t0 /* t1 = dtv[td->tlsinfo.ti_module] */
+ REG_L t1, t1, 0 /* t1 = dtv[td->tlsinfo.ti_module].pointer.val */
+ li.d t2, TLS_DTV_UNALLOCATED
+ /* If dtv[td->tlsinfo.ti_module].pointer.val is TLS_DTV_UNALLOCATED,
+ goto slow path. */
+ beq t1, t2, .Lslow
+
+ cfi_remember_state
+ REG_L t2, a0, TLSDESC_MODOFF /* t2 = td->tlsinfo.ti_offset */
+ /* dtv[td->tlsinfo.ti_module].pointer.val + td->tlsinfo.ti_offset */
+ add.d a0, t1, t2
+.Lret:
+ sub.d a0, a0, tp
+ REG_L t0, sp, 0
+ REG_L t1, sp, 8
+ REG_L t2, sp, 16
+ ADDI sp, sp, 32
+ cfi_adjust_cfa_offset (-32)
+ RET
+
+.Lslow:
+ /* This is the slow path. We need to call __tls_get_addr() which
+ means we need to save and restore all the register that the
+ callee will trash. */
+
+ /* Save the remaining registers that we must treat as caller save. */
+ cfi_restore_state
+ ADDI sp, sp, -FRAME_SIZE
+ cfi_adjust_cfa_offset (FRAME_SIZE)
+ REG_S ra, sp, 0 * SZREG
+ REG_S a1, sp, 1 * SZREG
+ REG_S a2, sp, 2 * SZREG
+ REG_S a3, sp, 3 * SZREG
+ REG_S a4, sp, 4 * SZREG
+ REG_S a5, sp, 5 * SZREG
+ REG_S a6, sp, 6 * SZREG
+ REG_S a7, sp, 7 * SZREG
+ REG_S t3, sp, 8 * SZREG
+ REG_S t4, sp, 9 * SZREG
+ REG_S t5, sp, 10 * SZREG
+ REG_S t6, sp, 11 * SZREG
+ REG_S t7, sp, 12 * SZREG
+ REG_S t8, sp, 13 * SZREG
+ cfi_rel_offset (1, 0 * SZREG)
+ cfi_rel_offset (5, 1 * SZREG)
+ cfi_rel_offset (6, 2 * SZREG)
+ cfi_rel_offset (7, 3 * SZREG)
+ cfi_rel_offset (8, 4 * SZREG)
+ cfi_rel_offset (9, 5 * SZREG)
+ cfi_rel_offset (10, 6 * SZREG)
+ cfi_rel_offset (11, 7 * SZREG)
+ cfi_rel_offset (15, 8 * SZREG)
+ cfi_rel_offset (16, 9 * SZREG)
+ cfi_rel_offset (17, 10 * SZREG)
+ cfi_rel_offset (18, 11 * SZREG)
+ cfi_rel_offset (19, 12 * SZREG)
+ cfi_rel_offset (20, 13 * SZREG)
+
+#ifndef __loongarch_soft_float
+
+ /* Save fcsr0 register.
+ Only one physical fcsr0 register, fcsr1-fcsr3 are aliases
+ of some fields in fcsr0. */
+ movfcsr2gr t0, fcsr0
+ st.w t0, sp, FRAME_SIZE + 24 /* Use the spare slot above t2. */
+
+#ifdef USE_LASX
+ #define V_REG_S xvst
+ #define V_REG_L xvld
+ #define V_SPACE (-((-32 * SZXREG) & ALMASK)) /* Space for LASX registers. */
+ #define V_REG(n) $xr##n
+ #define V_REGS 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16, \
+ 17,18,19,20,21,22,23,24,25,26,27,28,29,30,31
+ #define V_REGSZ SZXREG
+#elif defined USE_LSX
+ #define V_REG_S vst
+ #define V_REG_L vld
+ #define V_SPACE (-((-32 * SZVREG) & ALMASK)) /* Space for LSX registers. */
+ #define V_REG(n) $vr##n
+ #define V_REGS 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16, \
+ 17,18,19,20,21,22,23,24,25,26,27,28,29,30,31
+ #define V_REGSZ SZVREG
+#else
+ #define V_REG_S fst.d
+ #define V_REG_L fld.d
+ #define V_SPACE (-((-24 * SZFREG) & ALMASK)) /* Space for FLOAT registers. */
+ #define V_REG(n) $f##n
+ #define V_REGS 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23
+ #define V_REGSZ SZFREG
+#endif
+
+ ADDI sp, sp, -V_SPACE
+ cfi_adjust_cfa_offset (V_SPACE)
+ .irp i,V_REGS
+ V_REG_S V_REG(\i), sp, \i * V_REGSZ
+ .endr
+
+#endif /* #ifndef __loongarch_soft_float */
+
+ bl HIDDEN_JUMPTARGET(__tls_get_addr)
+ ADDI a0, a0, -TLS_DTV_OFFSET
+
+#ifndef __loongarch_soft_float
+
+ .irp i,V_REGS
+ V_REG_L V_REG(\i), sp, \i * V_REGSZ
+ .endr
+ ADDI sp, sp, V_SPACE
+ cfi_adjust_cfa_offset (-V_SPACE)
+
+ /* Restore fcsr0 register. */
+ ld.w t0, sp, FRAME_SIZE + 24
+ movgr2fcsr fcsr0, t0
+
+#endif /* #ifndef __loongarch_soft_float */
+
+ REG_L ra, sp, 0 * SZREG
+ REG_L a1, sp, 1 * SZREG
+ REG_L a2, sp, 2 * SZREG
+ REG_L a3, sp, 3 * SZREG
+ REG_L a4, sp, 4 * SZREG
+ REG_L a5, sp, 5 * SZREG
+ REG_L a6, sp, 6 * SZREG
+ REG_L a7, sp, 7 * SZREG
+ REG_L t3, sp, 8 * SZREG
+ REG_L t4, sp, 9 * SZREG
+ REG_L t5, sp, 10 * SZREG
+ REG_L t6, sp, 11 * SZREG
+ REG_L t7, sp, 12 * SZREG
+ REG_L t8, sp, 13 * SZREG
+ ADDI sp, sp, FRAME_SIZE
+ cfi_adjust_cfa_offset (-FRAME_SIZE)
+
+ b .Lret
+ cfi_endproc
+ .size _dl_tlsdesc_dynamic, .-_dl_tlsdesc_dynamic
+ .hidden HIDDEN_JUMPTARGET(__tls_get_addr)
diff --git a/sysdeps/loongarch/dl-tlsdesc.S b/sysdeps/loongarch/dl-tlsdesc.S
index a6627cc..be76c07 100644
--- a/sysdeps/loongarch/dl-tlsdesc.S
+++ b/sysdeps/loongarch/dl-tlsdesc.S
@@ -59,376 +59,46 @@ _dl_tlsdesc_undefweak:
cfi_endproc
.size _dl_tlsdesc_undefweak, .-_dl_tlsdesc_undefweak
-
#ifdef SHARED
-#define FRAME_SIZE (-((-14 * SZREG) & ALMASK))
-#define FRAME_SIZE_LSX (-((-32 * SZVREG) & ALMASK))
-#define FRAME_SIZE_LASX (-((-32 * SZXREG) & ALMASK))
-#define FRAME_SIZE_FLOAT (-((-24 * SZFREG) & ALMASK))
-
- /* Handler for dynamic TLS symbols.
- Prototype:
- _dl_tlsdesc_dynamic (tlsdesc *) ;
-
- The second word of the descriptor points to a
- tlsdesc_dynamic_arg structure.
-
- Returns the offset between the thread pointer and the
- object referenced by the argument.
-
- ptrdiff_t
- _dl_tlsdesc_dynamic (struct tlsdesc *tdp)
- {
- struct tlsdesc_dynamic_arg *td = tdp->arg;
- dtv_t *dtv = *(dtv_t **)((char *)__thread_pointer - SIZE_OF_TCB);
- if (__glibc_likely (td->gen_count <= dtv[0].counter
- && (dtv[td->tlsinfo.ti_module].pointer.val
- != TLS_DTV_UNALLOCATED),
- 1))
- return dtv[td->tlsinfo.ti_module].pointer.val
- + td->tlsinfo.ti_offset
- - __thread_pointer;
-
- return ___tls_get_addr (&td->tlsinfo) - __thread_pointer;
- } */
- .hidden _dl_tlsdesc_dynamic
- .global _dl_tlsdesc_dynamic
- .type _dl_tlsdesc_dynamic,%function
- cfi_startproc
- .align 2
-_dl_tlsdesc_dynamic:
- /* Save just enough registers to support fast path, if we fall
- into slow path we will save additional registers. */
- ADDI sp, sp, -32
- REG_S t0, sp, 0
- REG_S t1, sp, 8
- REG_S t2, sp, 16
-
-/* Runtime Storage Layout of Thread-Local Storage
- TP point to the start of TLS block.
-
- dtv
-Low address TCB ----------------> dtv0(counter)
- TP --> static_block0 <----- dtv1
- static_block1 <----- dtv2
- static_block2 <----- dtv3
- dynamic_block0 <----- dtv4
-Hign address dynamic_block1 <----- dtv5 */
-
- REG_L t0, tp, -SIZE_OF_TCB /* t0 = dtv */
- REG_L a0, a0, TLSDESC_ARG /* a0(td) = tdp->arg */
- REG_L t1, a0, TLSDESC_GEN_COUNT /* t1 = td->gen_count */
- REG_L t2, t0, DTV_COUNTER /* t2 = dtv[0].counter */
- /* If dtv[0].counter < td->gen_count, goto slow path. */
- bltu t2, t1, .Lslow
-
- REG_L t1, a0, TLSDESC_MODID /* t1 = td->tlsinfo.ti_module */
- /* t1 = t1 * sizeof(dtv_t) = t1 * (2 * sizeof(void*)) */
- slli.d t1, t1, 4
- add.d t1, t1, t0 /* t1 = dtv[td->tlsinfo.ti_module] */
- REG_L t1, t1, 0 /* t1 = dtv[td->tlsinfo.ti_module].pointer.val */
- li.d t2, TLS_DTV_UNALLOCATED
- /* If dtv[td->tlsinfo.ti_module].pointer.val is TLS_DTV_UNALLOCATED,
- goto slow path. */
- beq t1, t2, .Lslow
-
- REG_L t2, a0, TLSDESC_MODOFF /* t2 = td->tlsinfo.ti_offset */
- /* dtv[td->tlsinfo.ti_module].pointer.val + td->tlsinfo.ti_offset */
- add.d a0, t1, t2
-.Lret:
- sub.d a0, a0, tp
- REG_L t0, sp, 0
- REG_L t1, sp, 8
- REG_L t2, sp, 16
- ADDI sp, sp, 32
- RET
-
-.Lslow:
- /* This is the slow path. We need to call __tls_get_addr() which
- means we need to save and restore all the register that the
- callee will trash. */
-
- /* Save the remaining registers that we must treat as caller save. */
- ADDI sp, sp, -FRAME_SIZE
- REG_S ra, sp, 0 * SZREG
- REG_S a1, sp, 1 * SZREG
- REG_S a2, sp, 2 * SZREG
- REG_S a3, sp, 3 * SZREG
- REG_S a4, sp, 4 * SZREG
- REG_S a5, sp, 5 * SZREG
- REG_S a6, sp, 6 * SZREG
- REG_S a7, sp, 7 * SZREG
- REG_S t3, sp, 8 * SZREG
- REG_S t4, sp, 9 * SZREG
- REG_S t5, sp, 10 * SZREG
- REG_S t6, sp, 11 * SZREG
- REG_S t7, sp, 12 * SZREG
- REG_S t8, sp, 13 * SZREG
-
#ifndef __loongarch_soft_float
- /* Save fcsr0 register.
- Only one physical fcsr0 register, fcsr1-fcsr3 are aliases
- of some fields in fcsr0. */
- movfcsr2gr t0, fcsr0
- st.w t0, sp, FRAME_SIZE + 24 /* Use the spare slot above t2 */
-
- /* Whether support LASX. */
- la.global t0, _rtld_global_ro
- REG_L t0, t0, GLRO_DL_HWCAP_OFFSET
- andi t1, t0, HWCAP_LOONGARCH_LASX
- beqz t1, .Llsx
-
- /* Save 256-bit vector registers.
- FIXME: Without vector ABI, save all vector registers. */
- ADDI sp, sp, -FRAME_SIZE_LASX
- xvst xr0, sp, 0*SZXREG
- xvst xr1, sp, 1*SZXREG
- xvst xr2, sp, 2*SZXREG
- xvst xr3, sp, 3*SZXREG
- xvst xr4, sp, 4*SZXREG
- xvst xr5, sp, 5*SZXREG
- xvst xr6, sp, 6*SZXREG
- xvst xr7, sp, 7*SZXREG
- xvst xr8, sp, 8*SZXREG
- xvst xr9, sp, 9*SZXREG
- xvst xr10, sp, 10*SZXREG
- xvst xr11, sp, 11*SZXREG
- xvst xr12, sp, 12*SZXREG
- xvst xr13, sp, 13*SZXREG
- xvst xr14, sp, 14*SZXREG
- xvst xr15, sp, 15*SZXREG
- xvst xr16, sp, 16*SZXREG
- xvst xr17, sp, 17*SZXREG
- xvst xr18, sp, 18*SZXREG
- xvst xr19, sp, 19*SZXREG
- xvst xr20, sp, 20*SZXREG
- xvst xr21, sp, 21*SZXREG
- xvst xr22, sp, 22*SZXREG
- xvst xr23, sp, 23*SZXREG
- xvst xr24, sp, 24*SZXREG
- xvst xr25, sp, 25*SZXREG
- xvst xr26, sp, 26*SZXREG
- xvst xr27, sp, 27*SZXREG
- xvst xr28, sp, 28*SZXREG
- xvst xr29, sp, 29*SZXREG
- xvst xr30, sp, 30*SZXREG
- xvst xr31, sp, 31*SZXREG
- b .Ltga
-
-.Llsx:
- /* Whether support LSX. */
- andi t1, t0, HWCAP_LOONGARCH_LSX
- beqz t1, .Lfloat
-
- /* Save 128-bit vector registers. */
- ADDI sp, sp, -FRAME_SIZE_LSX
- vst vr0, sp, 0*SZVREG
- vst vr1, sp, 1*SZVREG
- vst vr2, sp, 2*SZVREG
- vst vr3, sp, 3*SZVREG
- vst vr4, sp, 4*SZVREG
- vst vr5, sp, 5*SZVREG
- vst vr6, sp, 6*SZVREG
- vst vr7, sp, 7*SZVREG
- vst vr8, sp, 8*SZVREG
- vst vr9, sp, 9*SZVREG
- vst vr10, sp, 10*SZVREG
- vst vr11, sp, 11*SZVREG
- vst vr12, sp, 12*SZVREG
- vst vr13, sp, 13*SZVREG
- vst vr14, sp, 14*SZVREG
- vst vr15, sp, 15*SZVREG
- vst vr16, sp, 16*SZVREG
- vst vr17, sp, 17*SZVREG
- vst vr18, sp, 18*SZVREG
- vst vr19, sp, 19*SZVREG
- vst vr20, sp, 20*SZVREG
- vst vr21, sp, 21*SZVREG
- vst vr22, sp, 22*SZVREG
- vst vr23, sp, 23*SZVREG
- vst vr24, sp, 24*SZVREG
- vst vr25, sp, 25*SZVREG
- vst vr26, sp, 26*SZVREG
- vst vr27, sp, 27*SZVREG
- vst vr28, sp, 28*SZVREG
- vst vr29, sp, 29*SZVREG
- vst vr30, sp, 30*SZVREG
- vst vr31, sp, 31*SZVREG
- b .Ltga
-
-.Lfloat:
- /* Save float registers. */
- ADDI sp, sp, -FRAME_SIZE_FLOAT
- FREG_S fa0, sp, 0*SZFREG
- FREG_S fa1, sp, 1*SZFREG
- FREG_S fa2, sp, 2*SZFREG
- FREG_S fa3, sp, 3*SZFREG
- FREG_S fa4, sp, 4*SZFREG
- FREG_S fa5, sp, 5*SZFREG
- FREG_S fa6, sp, 6*SZFREG
- FREG_S fa7, sp, 7*SZFREG
- FREG_S ft0, sp, 8*SZFREG
- FREG_S ft1, sp, 9*SZFREG
- FREG_S ft2, sp, 10*SZFREG
- FREG_S ft3, sp, 11*SZFREG
- FREG_S ft4, sp, 12*SZFREG
- FREG_S ft5, sp, 13*SZFREG
- FREG_S ft6, sp, 14*SZFREG
- FREG_S ft7, sp, 15*SZFREG
- FREG_S ft8, sp, 16*SZFREG
- FREG_S ft9, sp, 17*SZFREG
- FREG_S ft10, sp, 18*SZFREG
- FREG_S ft11, sp, 19*SZFREG
- FREG_S ft12, sp, 20*SZFREG
- FREG_S ft13, sp, 21*SZFREG
- FREG_S ft14, sp, 22*SZFREG
- FREG_S ft15, sp, 23*SZFREG
-
-#endif /* #ifndef __loongarch_soft_float */
-
-.Ltga:
- bl HIDDEN_JUMPTARGET(__tls_get_addr)
- ADDI a0, a0, -TLS_DTV_OFFSET
-
-#ifndef __loongarch_soft_float
-
- la.global t0, _rtld_global_ro
- REG_L t0, t0, GLRO_DL_HWCAP_OFFSET
- andi t1, t0, HWCAP_LOONGARCH_LASX
- beqz t1, .Llsx1
-
- /* Restore 256-bit vector registers. */
- xvld xr0, sp, 0*SZXREG
- xvld xr1, sp, 1*SZXREG
- xvld xr2, sp, 2*SZXREG
- xvld xr3, sp, 3*SZXREG
- xvld xr4, sp, 4*SZXREG
- xvld xr5, sp, 5*SZXREG
- xvld xr6, sp, 6*SZXREG
- xvld xr7, sp, 7*SZXREG
- xvld xr8, sp, 8*SZXREG
- xvld xr9, sp, 9*SZXREG
- xvld xr10, sp, 10*SZXREG
- xvld xr11, sp, 11*SZXREG
- xvld xr12, sp, 12*SZXREG
- xvld xr13, sp, 13*SZXREG
- xvld xr14, sp, 14*SZXREG
- xvld xr15, sp, 15*SZXREG
- xvld xr16, sp, 16*SZXREG
- xvld xr17, sp, 17*SZXREG
- xvld xr18, sp, 18*SZXREG
- xvld xr19, sp, 19*SZXREG
- xvld xr20, sp, 20*SZXREG
- xvld xr21, sp, 21*SZXREG
- xvld xr22, sp, 22*SZXREG
- xvld xr23, sp, 23*SZXREG
- xvld xr24, sp, 24*SZXREG
- xvld xr25, sp, 25*SZXREG
- xvld xr26, sp, 26*SZXREG
- xvld xr27, sp, 27*SZXREG
- xvld xr28, sp, 28*SZXREG
- xvld xr29, sp, 29*SZXREG
- xvld xr30, sp, 30*SZXREG
- xvld xr31, sp, 31*SZXREG
- ADDI sp, sp, FRAME_SIZE_LASX
- b .Lfcsr
-
-.Llsx1:
- andi t1, t0, HWCAP_LOONGARCH_LSX
- beqz t1, .Lfloat1
-
- /* Restore 128-bit vector registers. */
- vld vr0, sp, 0*SZVREG
- vld vr1, sp, 1*SZVREG
- vld vr2, sp, 2*SZVREG
- vld vr3, sp, 3*SZVREG
- vld vr4, sp, 4*SZVREG
- vld vr5, sp, 5*SZVREG
- vld vr6, sp, 6*SZVREG
- vld vr7, sp, 7*SZVREG
- vld vr8, sp, 8*SZVREG
- vld vr9, sp, 9*SZVREG
- vld vr10, sp, 10*SZVREG
- vld vr11, sp, 11*SZVREG
- vld vr12, sp, 12*SZVREG
- vld vr13, sp, 13*SZVREG
- vld vr14, sp, 14*SZVREG
- vld vr15, sp, 15*SZVREG
- vld vr16, sp, 16*SZVREG
- vld vr17, sp, 17*SZVREG
- vld vr18, sp, 18*SZVREG
- vld vr19, sp, 19*SZVREG
- vld vr20, sp, 20*SZVREG
- vld vr21, sp, 21*SZVREG
- vld vr22, sp, 22*SZVREG
- vld vr23, sp, 23*SZVREG
- vld vr24, sp, 24*SZVREG
- vld vr25, sp, 25*SZVREG
- vld vr26, sp, 26*SZVREG
- vld vr27, sp, 27*SZVREG
- vld vr28, sp, 28*SZVREG
- vld vr29, sp, 29*SZVREG
- vld vr30, sp, 30*SZVREG
- vld vr31, sp, 31*SZVREG
- ADDI sp, sp, FRAME_SIZE_LSX
- b .Lfcsr
-
-.Lfloat1:
- /* Restore float registers. */
- FREG_L fa0, sp, 0*SZFREG
- FREG_L fa1, sp, 1*SZFREG
- FREG_L fa2, sp, 2*SZFREG
- FREG_L fa3, sp, 3*SZFREG
- FREG_L fa4, sp, 4*SZFREG
- FREG_L fa5, sp, 5*SZFREG
- FREG_L fa6, sp, 6*SZFREG
- FREG_L fa7, sp, 7*SZFREG
- FREG_L ft0, sp, 8*SZFREG
- FREG_L ft1, sp, 9*SZFREG
- FREG_L ft2, sp, 10*SZFREG
- FREG_L ft3, sp, 11*SZFREG
- FREG_L ft4, sp, 12*SZFREG
- FREG_L ft5, sp, 13*SZFREG
- FREG_L ft6, sp, 14*SZFREG
- FREG_L ft7, sp, 15*SZFREG
- FREG_L ft8, sp, 16*SZFREG
- FREG_L ft9, sp, 17*SZFREG
- FREG_L ft10, sp, 18*SZFREG
- FREG_L ft11, sp, 19*SZFREG
- FREG_L ft12, sp, 20*SZFREG
- FREG_L ft13, sp, 21*SZFREG
- FREG_L ft14, sp, 22*SZFREG
- FREG_L ft15, sp, 23*SZFREG
- ADDI sp, sp, FRAME_SIZE_FLOAT
-
-.Lfcsr:
- /* Restore fcsr0 register. */
- ld.w t0, sp, FRAME_SIZE + 24
- movgr2fcsr fcsr0, t0
+#define USE_LASX
+#define _dl_tlsdesc_dynamic _dl_tlsdesc_dynamic_lasx
+#define Lret Lret_lasx
+#define Lslow Lslow_lasx
+#include "dl-tlsdesc-dynamic.h"
+#undef FRAME_SIZE
+#undef V_REG_S
+#undef V_REG_L
+#undef V_SPACE
+#undef V_REG
+#undef V_REGS
+#undef V_REGSZ
+#undef USE_LASX
+#undef _dl_tlsdesc_dynamic
+#undef Lret
+#undef Lslow
+
+#define USE_LSX
+#define _dl_tlsdesc_dynamic _dl_tlsdesc_dynamic_lsx
+#define Lret Lret_lsx
+#define Lslow Lslow_lsx
+#include "dl-tlsdesc-dynamic.h"
+#undef FRAME_SIZE
+#undef V_REG_S
+#undef V_REG_L
+#undef V_SPACE
+#undef V_REG
+#undef V_REGS
+#undef V_REGSZ
+#undef USE_LSX
+#undef _dl_tlsdesc_dynamic
+#undef Lret
+#undef Lslow
#endif /* #ifndef __loongarch_soft_float */
- REG_L ra, sp, 0 * SZREG
- REG_L a1, sp, 1 * SZREG
- REG_L a2, sp, 2 * SZREG
- REG_L a3, sp, 3 * SZREG
- REG_L a4, sp, 4 * SZREG
- REG_L a5, sp, 5 * SZREG
- REG_L a6, sp, 6 * SZREG
- REG_L a7, sp, 7 * SZREG
- REG_L t3, sp, 8 * SZREG
- REG_L t4, sp, 9 * SZREG
- REG_L t5, sp, 10 * SZREG
- REG_L t6, sp, 11 * SZREG
- REG_L t7, sp, 12 * SZREG
- REG_L t8, sp, 13 * SZREG
- ADDI sp, sp, FRAME_SIZE
-
- b .Lret
- cfi_endproc
- .size _dl_tlsdesc_dynamic, .-_dl_tlsdesc_dynamic
- .hidden HIDDEN_JUMPTARGET(__tls_get_addr)
+#include "dl-tlsdesc-dynamic.h"
#endif /* #ifdef SHARED */
diff --git a/sysdeps/loongarch/dl-tlsdesc.h b/sysdeps/loongarch/dl-tlsdesc.h
index ff8c69c..45c43a5 100644
--- a/sysdeps/loongarch/dl-tlsdesc.h
+++ b/sysdeps/loongarch/dl-tlsdesc.h
@@ -43,6 +43,10 @@ extern ptrdiff_t attribute_hidden _dl_tlsdesc_undefweak (struct tlsdesc *);
#ifdef SHARED
extern void *_dl_make_tlsdesc_dynamic (struct link_map *, size_t);
+#ifndef __loongarch_soft_float
+extern ptrdiff_t attribute_hidden _dl_tlsdesc_dynamic_lasx (struct tlsdesc *);
+extern ptrdiff_t attribute_hidden _dl_tlsdesc_dynamic_lsx (struct tlsdesc *);
+#endif
extern ptrdiff_t attribute_hidden _dl_tlsdesc_dynamic (struct tlsdesc *);
#endif
diff --git a/sysdeps/loongarch/lp64/libm-test-ulps b/sysdeps/loongarch/lp64/libm-test-ulps
index 80f8aaf..75e21ee 100644
--- a/sysdeps/loongarch/lp64/libm-test-ulps
+++ b/sysdeps/loongarch/lp64/libm-test-ulps
@@ -976,24 +976,24 @@ float: 1
ldouble: 3
Function: "exp10m1":
-double: 2
-float: 1
-ldouble: 1
+double: 4
+float: 2
+ldouble: 3
Function: "exp10m1_downward":
-double: 1
-float: 1
-ldouble: 3
+double: 3
+float: 3
+ldouble: 6
Function: "exp10m1_towardzero":
-double: 1
-float: 1
-ldouble: 3
+double: 2
+float: 3
+ldouble: 6
Function: "exp10m1_upward":
-double: 3
-float: 1
-ldouble: 3
+double: 5
+float: 3
+ldouble: 6
Function: "exp2":
double: 1
@@ -1013,24 +1013,24 @@ float: 1
ldouble: 2
Function: "exp2m1":
-double: 1
-float: 1
-ldouble: 1
+double: 2
+float: 2
+ldouble: 2
Function: "exp2m1_downward":
-double: 1
-float: 1
-ldouble: 2
+double: 3
+float: 3
+ldouble: 3
Function: "exp2m1_towardzero":
-double: 2
-float: 1
-ldouble: 2
+double: 3
+float: 2
+ldouble: 4
Function: "exp2m1_upward":
-double: 1
-float: 1
-ldouble: 2
+double: 3
+float: 3
+ldouble: 5
Function: "exp_downward":
double: 1
@@ -1206,24 +1206,24 @@ float: 2
ldouble: 1
Function: "log10p1":
-double: 1
-float: 1
+double: 2
+float: 2
ldouble: 3
Function: "log10p1_downward":
double: 2
-float: 1
-ldouble: 2
+float: 3
+ldouble: 4
Function: "log10p1_towardzero":
-double: 2
+double: 3
float: 2
-ldouble: 2
+ldouble: 3
Function: "log10p1_upward":
double: 2
-float: 1
-ldouble: 3
+float: 3
+ldouble: 4
Function: "log1p":
double: 1
@@ -1432,22 +1432,18 @@ ldouble: 3
Function: "tgamma":
double: 9
-float: 8
ldouble: 4
Function: "tgamma_downward":
double: 9
-float: 7
ldouble: 5
Function: "tgamma_towardzero":
double: 9
-float: 7
ldouble: 5
Function: "tgamma_upward":
double: 9
-float: 8
ldouble: 4
Function: "y0":
diff --git a/sysdeps/loongarch/tlsdesc.sym b/sysdeps/loongarch/tlsdesc.sym
index 213d0b3..9f80fce 100644
--- a/sysdeps/loongarch/tlsdesc.sym
+++ b/sysdeps/loongarch/tlsdesc.sym
@@ -4,12 +4,6 @@
#include <link.h>
#include <dl-tlsdesc.h>
-#define SHARED 1
-
-#include <ldsodefs.h>
-
-#define GLRO_offsetof(name) offsetof (struct rtld_global_ro, _##name)
-
--
-- Abuse tls.h macros to derive offsets relative to the thread register.
@@ -23,6 +17,3 @@ DTV_COUNTER offsetof(dtv_t, counter)
TLS_DTV_UNALLOCATED TLS_DTV_UNALLOCATED
TLS_DTV_OFFSET TLS_DTV_OFFSET
SIZE_OF_TCB sizeof(tcbhead_t)
-GLRO_DL_HWCAP_OFFSET GLRO_offsetof (dl_hwcap)
-HWCAP_LOONGARCH_LSX HWCAP_LOONGARCH_LSX
-HWCAP_LOONGARCH_LASX HWCAP_LOONGARCH_LASX
diff --git a/sysdeps/m68k/coldfire/fpu/libm-test-ulps b/sysdeps/m68k/coldfire/fpu/libm-test-ulps
index 1b25a70..ae05498 100644
--- a/sysdeps/m68k/coldfire/fpu/libm-test-ulps
+++ b/sysdeps/m68k/coldfire/fpu/libm-test-ulps
@@ -146,7 +146,6 @@ double: 1
Function: "tgamma":
double: 1
-float: 1
Function: "y0":
double: 2
diff --git a/sysdeps/m68k/m680x0/fpu/libm-test-ulps b/sysdeps/m68k/m680x0/fpu/libm-test-ulps
index 6eacfb6..73e98eb 100644
--- a/sysdeps/m68k/m680x0/fpu/libm-test-ulps
+++ b/sysdeps/m68k/m680x0/fpu/libm-test-ulps
@@ -1208,22 +1208,18 @@ float: 1
Function: "tgamma":
double: 3
-float: 9
ldouble: 9
Function: "tgamma_downward":
double: 3
-float: 9
ldouble: 9
Function: "tgamma_towardzero":
double: 3
-float: 9
ldouble: 9
Function: "tgamma_upward":
double: 2
-float: 9
ldouble: 9
Function: "y0":
diff --git a/sysdeps/mach/hurd/faccessat.c b/sysdeps/mach/hurd/faccessat.c
index 998e319..6d3d123 100644
--- a/sysdeps/mach/hurd/faccessat.c
+++ b/sysdeps/mach/hurd/faccessat.c
@@ -185,6 +185,15 @@ __faccessat_common (int fd, const char *file, int type, int at_flags,
return errfunc (err);
}
+ /* If all we wanted was to check for a file existing at the path,
+ then we already got our answer, and we don't need to call
+ file_check_access (). */
+ if (type == F_OK)
+ {
+ __mach_port_deallocate (__mach_task_self (), io);
+ return 0;
+ }
+
/* Find out what types of access we are allowed to this file. */
err = __file_check_access (io, &allowed);
__mach_port_deallocate (__mach_task_self (), io);
diff --git a/sysdeps/mach/hurd/fcntl.c b/sysdeps/mach/hurd/fcntl.c
index 9451ed5..2583f54 100644
--- a/sysdeps/mach/hurd/fcntl.c
+++ b/sysdeps/mach/hurd/fcntl.c
@@ -148,6 +148,7 @@ __libc_fcntl (int fd, int cmd, ...)
cmd = F_SETLKW64;
break;
default:
+ va_end (ap);
return __hurd_fail (EINVAL);
}
@@ -204,7 +205,10 @@ __libc_fcntl (int fd, int cmd, ...)
&& fl->l_start != fl64.l_start)
|| (sizeof fl->l_len != sizeof fl64.l_len
&& fl->l_len != fl64.l_len))
- return __hurd_fail (EOVERFLOW);
+ {
+ va_end (ap);
+ return __hurd_fail (EOVERFLOW);
+ }
}
result = err ? __hurd_dfail (fd, err) : 0;
diff --git a/sysdeps/mach/hurd/x86_64/vm_param.h b/sysdeps/mach/hurd/x86_64/vm_param.h
index 460445f..a6e63a3 100644
--- a/sysdeps/mach/hurd/x86_64/vm_param.h
+++ b/sysdeps/mach/hurd/x86_64/vm_param.h
@@ -15,7 +15,7 @@
License along with the GNU C Library; if not, see
<https://www.gnu.org/licenses/>. */
-#ifndef _X86_86_VM_PARAM_H
+#ifndef _X86_64_VM_PARAM_H
#define _X86_64_VM_PARAM_H
/* Arbitrary start of the brk. This is after usual binary and library mappings. */
diff --git a/sysdeps/mach/sleep.c b/sysdeps/mach/sleep.c
index 572be15..aa750c1 100644
--- a/sysdeps/mach/sleep.c
+++ b/sysdeps/mach/sleep.c
@@ -43,6 +43,9 @@ __sleep (unsigned int seconds)
after = time_now ();
__mach_port_destroy (__mach_task_self (), recv);
+ if (after - before > seconds)
+ return 0;
+
return seconds - (after - before);
}
weak_alias (__sleep, sleep)
diff --git a/sysdeps/microblaze/libm-test-ulps b/sysdeps/microblaze/libm-test-ulps
index d3666eb..98ea940 100644
--- a/sysdeps/microblaze/libm-test-ulps
+++ b/sysdeps/microblaze/libm-test-ulps
@@ -257,7 +257,6 @@ float: 2
Function: "tgamma":
double: 5
-float: 4
Function: "y0":
double: 2
diff --git a/sysdeps/mips/mips32/libm-test-ulps b/sysdeps/mips/mips32/libm-test-ulps
index 83772d5..cc1600c 100644
--- a/sysdeps/mips/mips32/libm-test-ulps
+++ b/sysdeps/mips/mips32/libm-test-ulps
@@ -778,20 +778,20 @@ double: 2
float: 1
Function: "exp10m1":
-double: 2
-float: 1
+double: 3
+float: 2
Function: "exp10m1_downward":
-double: 1
-float: 1
+double: 3
+float: 3
Function: "exp10m1_towardzero":
-double: 1
-float: 1
+double: 2
+float: 3
Function: "exp10m1_upward":
-double: 3
-float: 1
+double: 4
+float: 4
Function: "exp2":
double: 1
@@ -810,20 +810,20 @@ double: 1
float: 1
Function: "exp2m1":
-double: 1
-float: 1
+double: 2
+float: 2
Function: "exp2m1_downward":
-double: 2
-float: 1
+double: 3
+float: 3
Function: "exp2m1_towardzero":
-double: 2
-float: 1
+double: 3
+float: 2
Function: "exp2m1_upward":
-double: 1
-float: 1
+double: 3
+float: 3
Function: "exp_downward":
double: 1
@@ -967,19 +967,19 @@ float: 2
Function: "log10p1":
double: 1
-float: 1
+float: 2
Function: "log10p1_downward":
double: 2
-float: 1
+float: 3
Function: "log10p1_towardzero":
-double: 2
+double: 3
float: 2
Function: "log10p1_upward":
double: 2
-float: 1
+float: 3
Function: "log1p":
double: 1
@@ -1156,19 +1156,15 @@ float: 3
Function: "tgamma":
double: 9
-float: 8
Function: "tgamma_downward":
double: 9
-float: 7
Function: "tgamma_towardzero":
double: 9
-float: 7
Function: "tgamma_upward":
double: 9
-float: 8
Function: "y0":
double: 3
diff --git a/sysdeps/mips/mips64/libm-test-ulps b/sysdeps/mips/mips64/libm-test-ulps
index 0addfd6..88dbb20 100644
--- a/sysdeps/mips/mips64/libm-test-ulps
+++ b/sysdeps/mips/mips64/libm-test-ulps
@@ -977,24 +977,24 @@ float: 1
ldouble: 3
Function: "exp10m1":
-double: 2
-float: 1
-ldouble: 1
+double: 3
+float: 2
+ldouble: 3
Function: "exp10m1_downward":
-double: 1
-float: 1
-ldouble: 3
+double: 3
+float: 3
+ldouble: 6
Function: "exp10m1_towardzero":
-double: 1
-float: 1
-ldouble: 3
+double: 2
+float: 3
+ldouble: 6
Function: "exp10m1_upward":
-double: 3
-float: 1
-ldouble: 3
+double: 4
+float: 4
+ldouble: 6
Function: "exp2":
double: 1
@@ -1017,24 +1017,24 @@ float: 1
ldouble: 2
Function: "exp2m1":
-double: 1
-float: 1
-ldouble: 1
-
-Function: "exp2m1_downward":
double: 2
-float: 1
+float: 2
ldouble: 2
+Function: "exp2m1_downward":
+double: 3
+float: 3
+ldouble: 3
+
Function: "exp2m1_towardzero":
-double: 2
-float: 1
-ldouble: 2
+double: 3
+float: 2
+ldouble: 4
Function: "exp2m1_upward":
-double: 1
-float: 1
-ldouble: 2
+double: 3
+float: 3
+ldouble: 5
Function: "exp_downward":
double: 1
@@ -1212,23 +1212,23 @@ ldouble: 1
Function: "log10p1":
double: 1
-float: 1
+float: 2
ldouble: 3
Function: "log10p1_downward":
double: 2
-float: 1
-ldouble: 2
+float: 3
+ldouble: 4
Function: "log10p1_towardzero":
-double: 2
+double: 3
float: 2
-ldouble: 2
+ldouble: 3
Function: "log10p1_upward":
double: 2
-float: 1
-ldouble: 3
+float: 3
+ldouble: 4
Function: "log1p":
double: 1
@@ -1444,22 +1444,18 @@ ldouble: 3
Function: "tgamma":
double: 9
-float: 8
ldouble: 4
Function: "tgamma_downward":
double: 9
-float: 7
ldouble: 5
Function: "tgamma_towardzero":
double: 9
-float: 7
ldouble: 5
Function: "tgamma_upward":
double: 9
-float: 8
ldouble: 4
Function: "y0":
diff --git a/sysdeps/nios2/libm-test-ulps b/sysdeps/nios2/libm-test-ulps
index c8d1a72..df6e932 100644
--- a/sysdeps/nios2/libm-test-ulps
+++ b/sysdeps/nios2/libm-test-ulps
@@ -266,7 +266,6 @@ float: 2
Function: "tgamma":
double: 9
-float: 8
Function: "y0":
double: 3
diff --git a/sysdeps/nptl/_Fork.c b/sysdeps/nptl/_Fork.c
index ef199dd..52c90e6 100644
--- a/sysdeps/nptl/_Fork.c
+++ b/sysdeps/nptl/_Fork.c
@@ -17,11 +17,18 @@
<https://www.gnu.org/licenses/>. */
#include <arch-fork.h>
+#include <libc-lock.h>
#include <pthreadP.h>
pid_t
_Fork (void)
{
+ /* Block all signals to avoid revealing the inconsistent TCB state
+ to a signal handler after fork. The abort lock should AS-safe
+ to avoid deadlock if _Fork is called from a signal handler. */
+ internal_sigset_t original_sigmask;
+ __abort_lock_rdlock (&original_sigmask);
+
pid_t pid = arch_fork (&THREAD_SELF->tid);
if (pid == 0)
{
@@ -44,6 +51,8 @@ _Fork (void)
INTERNAL_SYSCALL_CALL (set_robust_list, &self->robust_head,
sizeof (struct robust_list_head));
}
+
+ __abort_lock_unlock (&original_sigmask);
return pid;
}
libc_hidden_def (_Fork)
diff --git a/sysdeps/nptl/cancellation-pc-check.h b/sysdeps/nptl/cancellation-pc-check.h
new file mode 100644
index 0000000..cb38ad6
--- /dev/null
+++ b/sysdeps/nptl/cancellation-pc-check.h
@@ -0,0 +1,54 @@
+/* Architecture specific code for pthread cancellation handling.
+ Copyright (C) 2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#ifndef _NPTL_CANCELLATION_PC_CHECK
+#define _NPTL_CANCELLATION_PC_CHECK
+
+#include <sigcontextinfo.h>
+
+/* For syscalls with side-effects (e.g read that might return partial read),
+ the kernel cannot restart the syscall when interrupted by a signal, it must
+ return from the call with whatever partial result. In this case, the saved
+ program counter is set just after the syscall instruction, so the SIGCANCEL
+ handler should not act on cancellation.
+
+ The __syscall_cancel_arch function, used for all cancellable syscalls,
+ contains two extra markers, __syscall_cancel_arch_start and
+ __syscall_cancel_arch_end. The former points to just before the initial
+ conditional branch that checks if the thread has received a cancellation
+ request, while former points to the instruction after the one responsible
+ to issue the syscall.
+
+ The function check if the program counter (PC) from ucontext_t CTX is
+ within the start and then end boundary from the __syscall_cancel_arch
+ bridge. Return TRUE if the PC is within the boundary, meaning the
+ syscall does not have any side effects; or FALSE otherwise. */
+
+static __always_inline bool
+cancellation_pc_check (void *ctx)
+{
+ /* Both are defined in syscall_cancel.S. */
+ extern const char __syscall_cancel_arch_start[1];
+ extern const char __syscall_cancel_arch_end[1];
+
+ uintptr_t pc = sigcontext_get_pc (ctx);
+ return pc >= (uintptr_t) __syscall_cancel_arch_start
+ && pc < (uintptr_t) __syscall_cancel_arch_end;
+}
+
+#endif
diff --git a/sysdeps/nptl/lowlevellock-futex.h b/sysdeps/nptl/lowlevellock-futex.h
index 278213a..c205806 100644
--- a/sysdeps/nptl/lowlevellock-futex.h
+++ b/sysdeps/nptl/lowlevellock-futex.h
@@ -21,7 +21,6 @@
#ifndef __ASSEMBLER__
# include <sysdep.h>
-# include <sysdep-cancel.h>
# include <kernel-features.h>
#endif
@@ -120,21 +119,10 @@
nr_wake, nr_move, mutex, val)
/* Like lll_futex_wait, but acting as a cancellable entrypoint. */
-# define lll_futex_wait_cancel(futexp, val, private) \
- ({ \
- int __oldtype = LIBC_CANCEL_ASYNC (); \
- long int __err = lll_futex_wait (futexp, val, LLL_SHARED); \
- LIBC_CANCEL_RESET (__oldtype); \
- __err; \
- })
-
-/* Like lll_futex_timed_wait, but acting as a cancellable entrypoint. */
-# define lll_futex_timed_wait_cancel(futexp, val, timeout, private) \
- ({ \
- int __oldtype = LIBC_CANCEL_ASYNC (); \
- long int __err = lll_futex_timed_wait (futexp, val, timeout, private); \
- LIBC_CANCEL_RESET (__oldtype); \
- __err; \
+# define lll_futex_wait_cancel(futexp, val, private) \
+ ({ \
+ int __op = __lll_private_flag (FUTEX_WAIT, private); \
+ INTERNAL_SYSCALL_CANCEL (futex, futexp, __op, val, NULL); \
})
#endif /* !__ASSEMBLER__ */
diff --git a/sysdeps/nptl/pthreadP.h b/sysdeps/nptl/pthreadP.h
index 30e8a2d..c2db165 100644
--- a/sysdeps/nptl/pthreadP.h
+++ b/sysdeps/nptl/pthreadP.h
@@ -261,10 +261,12 @@ libc_hidden_proto (__pthread_unregister_cancel)
/* Called when a thread reacts on a cancellation request. */
static inline void
__attribute ((noreturn, always_inline))
-__do_cancel (void)
+__do_cancel (void *result)
{
struct pthread *self = THREAD_SELF;
+ self->result = result;
+
/* Make sure we get no more cancellations. */
atomic_fetch_or_relaxed (&self->cancelhandling, EXITING_BITMASK);
@@ -272,6 +274,13 @@ __do_cancel (void)
THREAD_GETMEM (self, cleanup_jmp_buf));
}
+extern long int __syscall_cancel_arch (volatile int *, __syscall_arg_t nr,
+ __syscall_arg_t arg1, __syscall_arg_t arg2, __syscall_arg_t arg3,
+ __syscall_arg_t arg4, __syscall_arg_t arg5, __syscall_arg_t arg6
+ __SYSCALL_CANCEL7_ARCH_ARG_DEF) attribute_hidden;
+
+extern _Noreturn void __syscall_do_cancel (void) attribute_hidden;
+
/* Internal prototypes. */
@@ -508,6 +517,7 @@ libc_hidden_proto (__pthread_kill)
extern int __pthread_cancel (pthread_t th);
extern int __pthread_kill_internal (pthread_t threadid, int signo)
attribute_hidden;
+extern int __pthread_raise_internal (int signo) attribute_hidden;
extern void __pthread_exit (void *value) __attribute__ ((__noreturn__));
libc_hidden_proto (__pthread_exit)
extern int __pthread_join (pthread_t threadid, void **thread_return);
diff --git a/sysdeps/or1k/fpu/libm-test-ulps b/sysdeps/or1k/fpu/libm-test-ulps
index 59b9f07..4ccb136 100644
--- a/sysdeps/or1k/fpu/libm-test-ulps
+++ b/sysdeps/or1k/fpu/libm-test-ulps
@@ -1066,19 +1066,15 @@ float: 3
Function: "tgamma":
double: 9
-float: 8
Function: "tgamma_downward":
double: 9
-float: 9
Function: "tgamma_towardzero":
double: 9
-float: 8
Function: "tgamma_upward":
double: 9
-float: 8
Function: "y0":
double: 3
diff --git a/sysdeps/or1k/nofpu/libm-test-ulps b/sysdeps/or1k/nofpu/libm-test-ulps
index 726855f..7087cf9 100644
--- a/sysdeps/or1k/nofpu/libm-test-ulps
+++ b/sysdeps/or1k/nofpu/libm-test-ulps
@@ -1064,19 +1064,15 @@ float: 3
Function: "tgamma":
double: 9
-float: 8
Function: "tgamma_downward":
double: 9
-float: 9
Function: "tgamma_towardzero":
double: 9
-float: 8
Function: "tgamma_upward":
double: 9
-float: 8
Function: "y0":
double: 3
diff --git a/sysdeps/posix/profil.c b/sysdeps/posix/profil.c
index 3b3c87e..6f4aa00 100644
--- a/sysdeps/posix/profil.c
+++ b/sysdeps/posix/profil.c
@@ -82,7 +82,7 @@ __profil (u_short *sample_buffer, size_t size, size_t offset, u_int scale)
if (__setitimer (ITIMER_PROF, &otimer, NULL) < 0)
return -1;
samples = NULL;
- return __sigaction (SIGPROF, &oact, NULL);
+ return __libc_sigaction (SIGPROF, &oact, NULL);
}
if (samples)
@@ -90,7 +90,7 @@ __profil (u_short *sample_buffer, size_t size, size_t offset, u_int scale)
/* Was already turned on. Restore old timer and signal handler
first. */
if (__setitimer (ITIMER_PROF, &otimer, NULL) < 0
- || __sigaction (SIGPROF, &oact, NULL) < 0)
+ || __libc_sigaction (SIGPROF, &oact, NULL) < 0)
return -1;
}
#else
@@ -114,7 +114,7 @@ __profil (u_short *sample_buffer, size_t size, size_t offset, u_int scale)
#endif
act.sa_flags |= SA_RESTART;
__sigfillset (&act.sa_mask);
- if (__sigaction (SIGPROF, &act, oact_ptr) < 0)
+ if (__libc_sigaction (SIGPROF, &act, oact_ptr) < 0)
return -1;
timer.it_value.tv_sec = 0;
diff --git a/sysdeps/posix/tempname.c b/sysdeps/posix/tempname.c
index c00fe0c..fc30958 100644
--- a/sysdeps/posix/tempname.c
+++ b/sysdeps/posix/tempname.c
@@ -117,6 +117,8 @@ random_bits (random_value *r, random_value s)
succeed. */
#if !_LIBC
*r = mix_random_values (v, clock ());
+#else
+ *r = v;
#endif
return false;
}
diff --git a/sysdeps/powerpc/fpu/libm-test-ulps b/sysdeps/powerpc/fpu/libm-test-ulps
index 70b0720..dcefbce 100644
--- a/sysdeps/powerpc/fpu/libm-test-ulps
+++ b/sysdeps/powerpc/fpu/libm-test-ulps
@@ -1187,26 +1187,26 @@ ldouble: 4
Function: "exp10m1":
double: 4
float: 2
-float128: 1
+float128: 3
ldouble: 4
Function: "exp10m1_downward":
double: 3
float: 3
-float128: 3
+float128: 6
ldouble: 9
Function: "exp10m1_towardzero":
double: 2
float: 3
-float128: 3
+float128: 6
ldouble: 9
Function: "exp10m1_upward":
double: 5
float: 3
-float128: 3
-ldouble: 7
+float128: 6
+ldouble: 8
Function: "exp2":
double: 1
@@ -1232,25 +1232,25 @@ ldouble: 2
Function: "exp2m1":
double: 2
float: 2
-float128: 1
+float128: 2
ldouble: 3
Function: "exp2m1_downward":
double: 3
float: 3
-float128: 2
+float128: 3
ldouble: 7
Function: "exp2m1_towardzero":
double: 3
float: 2
-float128: 2
+float128: 4
ldouble: 8
Function: "exp2m1_upward":
double: 3
float: 3
-float128: 2
+float128: 5
ldouble: 9
Function: "exp_downward":
@@ -1515,19 +1515,19 @@ ldouble: 3
Function: "log10p1_downward":
double: 2
float: 3
-float128: 2
+float128: 4
ldouble: 6
Function: "log10p1_towardzero":
double: 3
float: 2
-float128: 2
+float128: 3
ldouble: 6
Function: "log10p1_upward":
double: 2
float: 3
-float128: 3
+float128: 4
ldouble: 6
Function: "log1p":
@@ -1828,25 +1828,21 @@ ldouble: 6
Function: "tgamma":
double: 9
-float: 8
float128: 4
ldouble: 5
Function: "tgamma_downward":
double: 9
-float: 7
float128: 5
ldouble: 6
Function: "tgamma_towardzero":
double: 9
-float: 7
float128: 5
ldouble: 5
Function: "tgamma_upward":
double: 9
-float: 8
float128: 4
ldouble: 5
diff --git a/sysdeps/powerpc/nofpu/libm-test-ulps b/sysdeps/powerpc/nofpu/libm-test-ulps
index dc9b499..14be978 100644
--- a/sysdeps/powerpc/nofpu/libm-test-ulps
+++ b/sysdeps/powerpc/nofpu/libm-test-ulps
@@ -986,24 +986,24 @@ float: 1
ldouble: 4
Function: "exp10m1":
-double: 2
-float: 1
+double: 3
+float: 2
ldouble: 3
Function: "exp10m1_downward":
-double: 1
-float: 1
+double: 3
+float: 3
ldouble: 9
Function: "exp10m1_towardzero":
-double: 1
-float: 1
+double: 2
+float: 3
ldouble: 9
Function: "exp10m1_upward":
-double: 3
-float: 1
-ldouble: 4
+double: 4
+float: 4
+ldouble: 10
Function: "exp2":
double: 1
@@ -1026,24 +1026,24 @@ float: 1
ldouble: 2
Function: "exp2m1":
-double: 1
-float: 1
+double: 2
+float: 2
ldouble: 2
Function: "exp2m1_downward":
-double: 2
-float: 1
-ldouble: 3
+double: 3
+float: 3
+ldouble: 7
Function: "exp2m1_towardzero":
-double: 2
-float: 1
-ldouble: 3
+double: 3
+float: 2
+ldouble: 8
Function: "exp2m1_upward":
-double: 1
-float: 1
-ldouble: 3
+double: 3
+float: 3
+ldouble: 9
Function: "exp_downward":
double: 1
@@ -1269,23 +1269,23 @@ ldouble: 2
Function: "log10p1":
double: 1
-float: 1
+float: 2
ldouble: 3
Function: "log10p1_downward":
double: 2
-float: 1
-ldouble: 4
+float: 3
+ldouble: 6
Function: "log10p1_towardzero":
-double: 2
+double: 3
float: 2
-ldouble: 4
+ldouble: 6
Function: "log10p1_upward":
double: 2
-float: 1
-ldouble: 3
+float: 3
+ldouble: 6
Function: "log1p":
double: 1
@@ -1560,22 +1560,18 @@ ldouble: 6
Function: "tgamma":
double: 9
-float: 8
ldouble: 5
Function: "tgamma_downward":
double: 9
-float: 7
ldouble: 5
Function: "tgamma_towardzero":
double: 9
-float: 7
ldouble: 5
Function: "tgamma_upward":
double: 9
-float: 8
ldouble: 4
Function: "y0":
diff --git a/sysdeps/powerpc/powerpc32/sysdep.h b/sysdeps/powerpc/powerpc32/sysdep.h
index 62de4ca..852a755 100644
--- a/sysdeps/powerpc/powerpc32/sysdep.h
+++ b/sysdeps/powerpc/powerpc32/sysdep.h
@@ -104,6 +104,9 @@ GOT_LABEL: ; \
# define JUMPTARGET(name) name
#endif
+#define TAIL_CALL_NO_RETURN(__func) \
+ b __func@local
+
#if defined SHARED && defined PIC && !defined NO_HIDDEN
# undef HIDDEN_JUMPTARGET
# define HIDDEN_JUMPTARGET(name) __GI_##name##@local
diff --git a/sysdeps/powerpc/powerpc64/le/Makefile b/sysdeps/powerpc/powerpc64/le/Makefile
index 9d568d4..b77775c 100644
--- a/sysdeps/powerpc/powerpc64/le/Makefile
+++ b/sysdeps/powerpc/powerpc64/le/Makefile
@@ -129,6 +129,10 @@ CFLAGS-tst-strtod-round.c += $(type-float128-CFLAGS)
CFLAGS-tst-wcstod-round.c += $(type-float128-CFLAGS)
CFLAGS-tst-strtod-nan-locale.c += $(type-float128-CFLAGS)
CFLAGS-tst-wcstod-nan-locale.c += $(type-float128-CFLAGS)
+CFLAGS-tst-strtod1i.c += $(type-float128-CFLAGS)
+CFLAGS-tst-strtod3.c += $(type-float128-CFLAGS)
+CFLAGS-tst-strtod4.c += $(type-float128-CFLAGS)
+CFLAGS-tst-strtod5i.c += $(type-float128-CFLAGS)
CFLAGS-tst-strtod6.c += $(type-float128-CFLAGS)
CFLAGS-tst-strfrom.c += $(type-float128-CFLAGS)
CFLAGS-tst-strfrom-locale.c += $(type-float128-CFLAGS)
diff --git a/sysdeps/powerpc/powerpc64/le/power9/strcpy.S b/sysdeps/powerpc/powerpc64/le/power9/strcpy.S
index 603bde1..2f50625 100644
--- a/sysdeps/powerpc/powerpc64/le/power9/strcpy.S
+++ b/sysdeps/powerpc/powerpc64/le/power9/strcpy.S
@@ -42,22 +42,48 @@
if USE_AS_STPCPY is defined.
- The implementation can load bytes past a null terminator, but only
- up to the next 16B boundary, so it never crosses a page. */
+ This implementation never reads across a page boundary, but may
+ read beyond the NUL terminator. */
-/* Load quadword at addr+offset to vreg, check for null bytes,
+/* Load 4 quadwords, merge into one VR for speed and check for NUL
+ and branch to label if NUL is found. */
+#define CHECK_64B(offset,addr,label) \
+ lxv 32+v4,(offset+0)(addr); \
+ lxv 32+v5,(offset+16)(addr); \
+ lxv 32+v6,(offset+32)(addr); \
+ lxv 32+v7,(offset+48)(addr); \
+ vminub v14,v4,v5; \
+ vminub v15,v6,v7; \
+ vminub v16,v14,v15; \
+ vcmpequb. v0,v16,v18; \
+ beq cr6,$+12; \
+ li r7,offset; \
+ b L(label); \
+ stxv 32+v4,(offset+0)(r11); \
+ stxv 32+v5,(offset+16)(r11); \
+ stxv 32+v6,(offset+32)(r11); \
+ stxv 32+v7,(offset+48)(r11)
+
+/* Load quadword at addr+offset to vreg, check for NUL bytes,
and branch to label if any are found. */
-#define CHECK16(vreg,offset,addr,label) \
- lxv vreg+32,offset(addr); \
- vcmpequb. v6,vreg,v18; \
+#define CHECK_16B(vreg,offset,addr,label) \
+ lxv vreg+32,offset(addr); \
+ vcmpequb. v15,vreg,v18; \
bne cr6,L(label);
-.machine power9
+/* Store vreg2 with length if NUL is found. */
+#define STORE_WITH_LEN(vreg1,vreg2,reg) \
+ vctzlsbb r8,vreg1; \
+ addi r9,r8,1; \
+ sldi r9,r9,56; \
+ stxvl 32+vreg2,reg,r9;
+
+.machine power9
ENTRY_TOCLESS (FUNC_NAME, 4)
CALL_MCOUNT 2
- vspltisb v18,0 /* Zeroes in v18 */
- vspltisb v19,-1 /* 0xFF bytes in v19 */
+ vspltisb v18,0 /* Zeroes in v18. */
+ vspltisb v19,-1 /* 0xFF bytes in v19. */
/* Next 16B-aligned address. Prepare address for L(loop). */
addi r5,r4,16
@@ -70,14 +96,11 @@ ENTRY_TOCLESS (FUNC_NAME, 4)
lvsr v1,0,r4
vperm v0,v19,v0,v1
- vcmpequb. v6,v0,v18 /* 0xff if byte is NULL, 0x00 otherwise */
+ vcmpequb. v6,v0,v18 /* 0xff if byte is NUL, 0x00 otherwise. */
beq cr6,L(no_null)
- /* There's a null byte. */
- vctzlsbb r8,v6 /* Number of trailing zeroes */
- addi r9,r8,1 /* Add null byte. */
- sldi r10,r9,56 /* stxvl wants size in top 8 bits. */
- stxvl 32+v0,r3,r10 /* Partial store */
+ /* There's a NUL byte. */
+ STORE_WITH_LEN(v6,v0,r3)
#ifdef USE_AS_STPCPY
/* stpcpy returns the dest address plus the size not counting the
@@ -87,17 +110,22 @@ ENTRY_TOCLESS (FUNC_NAME, 4)
blr
L(no_null):
- sldi r10,r8,56 /* stxvl wants size in top 8 bits */
- stxvl 32+v0,r3,r10 /* Partial store */
+ sldi r10,r8,56 /* stxvl wants size in top 8 bits. */
+ stxvl 32+v0,r3,r10 /* Partial store. */
+/* The main loop is optimized for longer strings(> 512 bytes),
+ so checking the first bytes in 16B chunks benefits shorter
+ strings a lot. */
.p2align 4
-L(loop):
- CHECK16(v0,0,r5,tail1)
- CHECK16(v1,16,r5,tail2)
- CHECK16(v2,32,r5,tail3)
- CHECK16(v3,48,r5,tail4)
- CHECK16(v4,64,r5,tail5)
- CHECK16(v5,80,r5,tail6)
+L(aligned):
+ CHECK_16B(v0,0,r5,tail1)
+ CHECK_16B(v1,16,r5,tail2)
+ CHECK_16B(v2,32,r5,tail3)
+ CHECK_16B(v3,48,r5,tail4)
+ CHECK_16B(v4,64,r5,tail5)
+ CHECK_16B(v5,80,r5,tail6)
+ CHECK_16B(v6,96,r5,tail7)
+ CHECK_16B(v7,112,r5,tail8)
stxv 32+v0,0(r11)
stxv 32+v1,16(r11)
@@ -105,21 +133,146 @@ L(loop):
stxv 32+v3,48(r11)
stxv 32+v4,64(r11)
stxv 32+v5,80(r11)
+ stxv 32+v6,96(r11)
+ stxv 32+v7,112(r11)
- addi r5,r5,96
- addi r11,r11,96
+ addi r11,r11,128
+
+ CHECK_16B(v0,128,r5,tail1)
+ CHECK_16B(v1,128+16,r5,tail2)
+ CHECK_16B(v2,128+32,r5,tail3)
+ CHECK_16B(v3,128+48,r5,tail4)
+ CHECK_16B(v4,128+64,r5,tail5)
+ CHECK_16B(v5,128+80,r5,tail6)
+ CHECK_16B(v6,128+96,r5,tail7)
+ CHECK_16B(v7,128+112,r5,tail8)
+
+ stxv 32+v0,0(r11)
+ stxv 32+v1,16(r11)
+ stxv 32+v2,32(r11)
+ stxv 32+v3,48(r11)
+ stxv 32+v4,64(r11)
+ stxv 32+v5,80(r11)
+ stxv 32+v6,96(r11)
+ stxv 32+v7,112(r11)
+
+ addi r11,r11,128
+
+ CHECK_16B(v0,256,r5,tail1)
+ CHECK_16B(v1,256+16,r5,tail2)
+ CHECK_16B(v2,256+32,r5,tail3)
+ CHECK_16B(v3,256+48,r5,tail4)
+ CHECK_16B(v4,256+64,r5,tail5)
+ CHECK_16B(v5,256+80,r5,tail6)
+ CHECK_16B(v6,256+96,r5,tail7)
+ CHECK_16B(v7,256+112,r5,tail8)
+
+ stxv 32+v0,0(r11)
+ stxv 32+v1,16(r11)
+ stxv 32+v2,32(r11)
+ stxv 32+v3,48(r11)
+ stxv 32+v4,64(r11)
+ stxv 32+v5,80(r11)
+ stxv 32+v6,96(r11)
+ stxv 32+v7,112(r11)
+
+ addi r11,r11,128
+
+ CHECK_16B(v0,384,r5,tail1)
+ CHECK_16B(v1,384+16,r5,tail2)
+ CHECK_16B(v2,384+32,r5,tail3)
+ CHECK_16B(v3,384+48,r5,tail4)
+ CHECK_16B(v4,384+64,r5,tail5)
+ CHECK_16B(v5,384+80,r5,tail6)
+ CHECK_16B(v6,384+96,r5,tail7)
+ CHECK_16B(v7,384+112,r5,tail8)
+
+ stxv 32+v0,0(r11)
+ stxv 32+v1,16(r11)
+ stxv 32+v2,32(r11)
+ stxv 32+v3,48(r11)
+ stxv 32+v4,64(r11)
+ stxv 32+v5,80(r11)
+ stxv 32+v6,96(r11)
+ stxv 32+v7,112(r11)
+
+ /* Align src pointer down to a 64B boundary. */
+ addi r5,r4,512
+ clrrdi r5,r5,6
+ subf r7,r4,r5
+ add r11,r3,r7
+
+/* Switch to a more aggressive approach checking 64B each time. */
+ .p2align 5
+L(strcpy_loop):
+ CHECK_64B(0,r5,tail_64b)
+ CHECK_64B(64,r5,tail_64b)
+ CHECK_64B(128,r5,tail_64b)
+ CHECK_64B(192,r5,tail_64b)
+
+ CHECK_64B(256,r5,tail_64b)
+ CHECK_64B(256+64,r5,tail_64b)
+ CHECK_64B(256+128,r5,tail_64b)
+ CHECK_64B(256+192,r5,tail_64b)
+ addi r5,r5,512
+ addi r11,r11,512
+
+ b L(strcpy_loop)
+
+ .p2align 5
+L(tail_64b):
+ /* OK, we found a NUL byte. Let's look for it in the current 64-byte
+ block and mark it in its corresponding VR. */
+ add r11,r11,r7
+ vcmpequb. v8,v4,v18
+ beq cr6,L(no_null_16B)
+ /* There's a NUL byte. */
+ STORE_WITH_LEN(v8,v4,r11)
+#ifdef USE_AS_STPCPY
+ add r3,r11,r8
+#endif
+ blr
+
+L(no_null_16B):
+ stxv 32+v4,0(r11)
+ vcmpequb. v8,v5,v18
+ beq cr6,L(no_null_32B)
+ /* There's a NUL byte. */
+ addi r11,r11,16
+ STORE_WITH_LEN(v8,v5,r11)
+#ifdef USE_AS_STPCPY
+ add r3,r11,r8
+#endif
+ blr
- b L(loop)
+L(no_null_32B):
+ stxv 32+v5,16(r11)
+ vcmpequb. v8,v6,v18
+ beq cr6,L(no_null_48B)
+ /* There's a NUL byte. */
+ addi r11,r11,32
+ STORE_WITH_LEN(v8,v6,r11)
+#ifdef USE_AS_STPCPY
+ add r3,r11,r8
+#endif
+ blr
+
+L(no_null_48B):
+ stxv 32+v6,32(r11)
+ vcmpequb. v8,v7,v18;
+ /* There's a NUL byte. */
+ addi r11,r11,48
+ STORE_WITH_LEN(v8,v7,r11)
+#ifdef USE_AS_STPCPY
+ add r3,r11,r8
+#endif
+ blr
.p2align 4
L(tail1):
- vctzlsbb r8,v6 /* Number of trailing zeroes */
- addi r9,r8,1 /* Add null terminator */
- sldi r9,r9,56 /* stxvl wants size in top 8 bits */
- stxvl 32+v0,r11,r9 /* Partial store */
+ /* There's a NUL byte. */
+ STORE_WITH_LEN(v15,v0,r11)
#ifdef USE_AS_STPCPY
- /* stpcpy returns the dest address plus the size not counting the
- final '\0'. */
add r3,r11,r8
#endif
blr
@@ -127,11 +280,9 @@ L(tail1):
.p2align 4
L(tail2):
stxv 32+v0,0(r11)
- vctzlsbb r8,v6
- addi r9,r8,1
- sldi r9,r9,56
+ /* There's a NUL byte. */
addi r11,r11,16
- stxvl 32+v1,r11,r9
+ STORE_WITH_LEN(v15,v1,r11)
#ifdef USE_AS_STPCPY
add r3,r11,r8
#endif
@@ -141,11 +292,8 @@ L(tail2):
L(tail3):
stxv 32+v0,0(r11)
stxv 32+v1,16(r11)
- vctzlsbb r8,v6
- addi r9,r8,1
- sldi r9,r9,56
addi r11,r11,32
- stxvl 32+v2,r11,r9
+ STORE_WITH_LEN(v15,v2,r11)
#ifdef USE_AS_STPCPY
add r3,r11,r8
#endif
@@ -156,11 +304,8 @@ L(tail4):
stxv 32+v0,0(r11)
stxv 32+v1,16(r11)
stxv 32+v2,32(r11)
- vctzlsbb r8,v6
- addi r9,r8,1
- sldi r9,r9,56
addi r11,r11,48
- stxvl 32+v3,r11,r9
+ STORE_WITH_LEN(v15,v3,r11)
#ifdef USE_AS_STPCPY
add r3,r11,r8
#endif
@@ -172,11 +317,8 @@ L(tail5):
stxv 32+v1,16(r11)
stxv 32+v2,32(r11)
stxv 32+v3,48(r11)
- vctzlsbb r8,v6
- addi r9,r8,1
- sldi r9,r9,56
addi r11,r11,64
- stxvl 32+v4,r11,r9
+ STORE_WITH_LEN(v15,v4,r11)
#ifdef USE_AS_STPCPY
add r3,r11,r8
#endif
@@ -189,11 +331,39 @@ L(tail6):
stxv 32+v2,32(r11)
stxv 32+v3,48(r11)
stxv 32+v4,64(r11)
- vctzlsbb r8,v6
- addi r9,r8,1
- sldi r9,r9,56
addi r11,r11,80
- stxvl 32+v5,r11,r9
+ STORE_WITH_LEN(v15,v5,r11)
+#ifdef USE_AS_STPCPY
+ add r3,r11,r8
+#endif
+ blr
+
+ .p2align 4
+L(tail7):
+ stxv 32+v0,0(r11)
+ stxv 32+v1,16(r11)
+ stxv 32+v2,32(r11)
+ stxv 32+v3,48(r11)
+ stxv 32+v4,64(r11)
+ stxv 32+v5,80(r11)
+ addi r11,r11,96
+ STORE_WITH_LEN(v15,v6,r11)
+#ifdef USE_AS_STPCPY
+ add r3,r11,r8
+#endif
+ blr
+
+ .p2align 4
+L(tail8):
+ stxv 32+v0,0(r11)
+ stxv 32+v1,16(r11)
+ stxv 32+v2,32(r11)
+ stxv 32+v3,48(r11)
+ stxv 32+v4,64(r11)
+ stxv 32+v5,80(r11)
+ stxv 32+v6,96(r11)
+ addi r11,r11,112
+ STORE_WITH_LEN(v15,v7,r11)
#ifdef USE_AS_STPCPY
add r3,r11,r8
#endif
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcat-power7.c b/sysdeps/powerpc/powerpc64/multiarch/strcat-power7.c
index d453b65..6eda080 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/strcat-power7.c
+++ b/sysdeps/powerpc/powerpc64/multiarch/strcat-power7.c
@@ -8,12 +8,12 @@
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, see
- <https://www.gnu.org/licenses/ >. */
+ <https://www.gnu.org/licenses/>. */
#include <string.h>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcat-power8.c b/sysdeps/powerpc/powerpc64/multiarch/strcat-power8.c
index 0a77812..b9cbce2 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/strcat-power8.c
+++ b/sysdeps/powerpc/powerpc64/multiarch/strcat-power8.c
@@ -8,12 +8,12 @@
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, see
- <https://www.gnu.org/licenses/ >. */
+ <https://www.gnu.org/licenses/>. */
#include <string.h>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcat-ppc64.c b/sysdeps/powerpc/powerpc64/multiarch/strcat-ppc64.c
index fd3b08d..67f7d40 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/strcat-ppc64.c
+++ b/sysdeps/powerpc/powerpc64/multiarch/strcat-ppc64.c
@@ -8,12 +8,12 @@
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, see
- <https://www.gnu.org/licenses/ >. */
+ <https://www.gnu.org/licenses/>. */
#include <string.h>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncat-power7.c b/sysdeps/powerpc/powerpc64/multiarch/strncat-power7.c
index a848fcd..f3bccf2 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/strncat-power7.c
+++ b/sysdeps/powerpc/powerpc64/multiarch/strncat-power7.c
@@ -8,12 +8,12 @@
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, see
- <https://www.gnu.org/licenses/ >. */
+ <https://www.gnu.org/licenses/>. */
#include <string.h>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncat-power8.c b/sysdeps/powerpc/powerpc64/multiarch/strncat-power8.c
index a31b918..3b0ea87 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/strncat-power8.c
+++ b/sysdeps/powerpc/powerpc64/multiarch/strncat-power8.c
@@ -13,7 +13,7 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, see
- <https://www.gnu.org/licenses/ >. */
+ <https://www.gnu.org/licenses/>. */
#include <string.h>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncat-ppc64.c b/sysdeps/powerpc/powerpc64/multiarch/strncat-ppc64.c
index 7f4c9f1..b467fde 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/strncat-ppc64.c
+++ b/sysdeps/powerpc/powerpc64/multiarch/strncat-ppc64.c
@@ -8,12 +8,12 @@
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, see
- <https://www.gnu.org/licenses/ >. */
+ <https://www.gnu.org/licenses/>. */
#include <string.h>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncpy.c b/sysdeps/powerpc/powerpc64/multiarch/strncpy.c
index af855e6..6e4e2ea 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/strncpy.c
+++ b/sysdeps/powerpc/powerpc64/multiarch/strncpy.c
@@ -9,12 +9,12 @@
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, see
- <https://www.gnu.org/licenses/ >. */
+ <https://www.gnu.org/licenses/>. */
/* Define multiple versions only for definition in libc. */
#if IS_IN (libc)
diff --git a/sysdeps/powerpc/powerpc64/sysdep.h b/sysdeps/powerpc/powerpc64/sysdep.h
index c363939..c439b06 100644
--- a/sysdeps/powerpc/powerpc64/sysdep.h
+++ b/sysdeps/powerpc/powerpc64/sysdep.h
@@ -353,6 +353,25 @@ LT_LABELSUFFIX(name,_name_end): ; \
DO_CALL (SYS_ify (syscall_name))
#ifdef SHARED
+# define TAIL_CALL_NO_RETURN(__func) \
+ b JUMPTARGET (NOTOC (__func))
+#else
+# define TAIL_CALL_NO_RETURN(__func) \
+ .ifdef .Local ## __func; \
+ b .Local ## __func; \
+ .else; \
+.Local ## __func: \
+ mflr 0; \
+ std 0,FRAME_LR_SAVE(1); \
+ stdu 1,-FRAME_MIN_SIZE(1); \
+ cfi_adjust_cfa_offset(FRAME_MIN_SIZE); \
+ cfi_offset(lr,FRAME_LR_SAVE); \
+ bl JUMPTARGET(__func); \
+ nop; \
+ .endif
+#endif
+
+#ifdef SHARED
#define TAIL_CALL_SYSCALL_ERROR \
b JUMPTARGET (NOTOC (__syscall_error))
#else
diff --git a/sysdeps/pthread/tst-cancel2.c b/sysdeps/pthread/tst-cancel2.c
index ac38b50..b4f7098 100644
--- a/sysdeps/pthread/tst-cancel2.c
+++ b/sysdeps/pthread/tst-cancel2.c
@@ -32,6 +32,10 @@ tf (void *arg)
char buf[100000];
while (write (fd[1], buf, sizeof (buf)) > 0);
+ /* The write can return -1/EPIPE if the pipe was closed before the
+ thread calls write, which signals a side-effect that must be
+ signaled to the thread. */
+ pthread_testcancel ();
return (void *) 42l;
}
diff --git a/sysdeps/riscv/nofpu/libm-test-ulps b/sysdeps/riscv/nofpu/libm-test-ulps
index 9ad64d1..4adad13 100644
--- a/sysdeps/riscv/nofpu/libm-test-ulps
+++ b/sysdeps/riscv/nofpu/libm-test-ulps
@@ -1361,22 +1361,18 @@ ldouble: 3
Function: "tgamma":
double: 9
-float: 8
ldouble: 4
Function: "tgamma_downward":
double: 5
-float: 5
ldouble: 5
Function: "tgamma_towardzero":
double: 5
-float: 4
ldouble: 5
Function: "tgamma_upward":
double: 4
-float: 4
ldouble: 4
Function: "y0":
diff --git a/sysdeps/riscv/rvd/libm-test-ulps b/sysdeps/riscv/rvd/libm-test-ulps
index 1e6c092..07a8794 100644
--- a/sysdeps/riscv/rvd/libm-test-ulps
+++ b/sysdeps/riscv/rvd/libm-test-ulps
@@ -976,24 +976,24 @@ float: 1
ldouble: 3
Function: "exp10m1":
-double: 2
-float: 1
-ldouble: 1
+double: 4
+float: 2
+ldouble: 3
Function: "exp10m1_downward":
-double: 1
-float: 1
-ldouble: 3
+double: 3
+float: 3
+ldouble: 6
Function: "exp10m1_towardzero":
-double: 1
-float: 1
-ldouble: 3
+double: 2
+float: 3
+ldouble: 6
Function: "exp10m1_upward":
-double: 3
-float: 1
-ldouble: 3
+double: 5
+float: 3
+ldouble: 6
Function: "exp2":
double: 1
@@ -1013,24 +1013,24 @@ float: 1
ldouble: 2
Function: "exp2m1":
-double: 1
-float: 1
-ldouble: 1
+double: 2
+float: 2
+ldouble: 2
Function: "exp2m1_downward":
-double: 1
-float: 1
-ldouble: 2
+double: 3
+float: 3
+ldouble: 3
Function: "exp2m1_towardzero":
-double: 2
-float: 1
-ldouble: 2
+double: 3
+float: 2
+ldouble: 4
Function: "exp2m1_upward":
-double: 1
-float: 1
-ldouble: 2
+double: 3
+float: 3
+ldouble: 5
Function: "exp_downward":
double: 1
@@ -1206,24 +1206,24 @@ float: 2
ldouble: 1
Function: "log10p1":
-double: 1
-float: 1
+double: 2
+float: 2
ldouble: 3
Function: "log10p1_downward":
double: 2
-float: 1
-ldouble: 2
+float: 3
+ldouble: 4
Function: "log10p1_towardzero":
-double: 2
+double: 3
float: 2
-ldouble: 2
+ldouble: 3
Function: "log10p1_upward":
double: 2
-float: 1
-ldouble: 3
+float: 3
+ldouble: 4
Function: "log1p":
double: 1
@@ -1431,22 +1431,18 @@ ldouble: 3
Function: "tgamma":
double: 9
-float: 8
ldouble: 4
Function: "tgamma_downward":
double: 9
-float: 7
ldouble: 5
Function: "tgamma_towardzero":
double: 9
-float: 7
ldouble: 5
Function: "tgamma_upward":
double: 8
-float: 8
ldouble: 4
Function: "y0":
diff --git a/sysdeps/riscv/start.S b/sysdeps/riscv/start.S
index ede186e..fd6f1ca 100644
--- a/sysdeps/riscv/start.S
+++ b/sysdeps/riscv/start.S
@@ -87,6 +87,7 @@ load_gp:
ret
.section .preinit_array,"aw"
+ .align PTRLOG
.dc.a load_gp
/* Define a symbol for the first piece of initialized data. */
diff --git a/sysdeps/s390/fpu/libm-test-ulps b/sysdeps/s390/fpu/libm-test-ulps
index 9ac3db4..6e4084a 100644
--- a/sysdeps/s390/fpu/libm-test-ulps
+++ b/sysdeps/s390/fpu/libm-test-ulps
@@ -977,24 +977,24 @@ float: 1
ldouble: 3
Function: "exp10m1":
-double: 2
-float: 1
-ldouble: 1
+double: 4
+float: 2
+ldouble: 3
Function: "exp10m1_downward":
-double: 1
-float: 1
-ldouble: 3
+double: 3
+float: 3
+ldouble: 6
Function: "exp10m1_towardzero":
-double: 1
-float: 1
-ldouble: 3
+double: 2
+float: 3
+ldouble: 6
Function: "exp10m1_upward":
-double: 3
-float: 1
-ldouble: 3
+double: 5
+float: 3
+ldouble: 6
Function: "exp2":
double: 1
@@ -1014,24 +1014,24 @@ float: 1
ldouble: 2
Function: "exp2m1":
-double: 1
-float: 1
-ldouble: 1
+double: 2
+float: 2
+ldouble: 2
Function: "exp2m1_downward":
-double: 1
-float: 1
-ldouble: 2
+double: 3
+float: 3
+ldouble: 3
Function: "exp2m1_towardzero":
-double: 2
-float: 1
-ldouble: 2
+double: 3
+float: 2
+ldouble: 4
Function: "exp2m1_upward":
-double: 1
-float: 1
-ldouble: 2
+double: 3
+float: 3
+ldouble: 5
Function: "exp_downward":
double: 1
@@ -1207,24 +1207,24 @@ float: 2
ldouble: 1
Function: "log10p1":
-double: 1
-float: 1
+double: 2
+float: 2
ldouble: 3
Function: "log10p1_downward":
double: 2
-float: 1
-ldouble: 2
+float: 3
+ldouble: 4
Function: "log10p1_towardzero":
-double: 2
+double: 3
float: 2
-ldouble: 2
+ldouble: 3
Function: "log10p1_upward":
double: 2
-float: 1
-ldouble: 3
+float: 3
+ldouble: 4
Function: "log1p":
double: 1
@@ -1429,22 +1429,18 @@ ldouble: 3
Function: "tgamma":
double: 9
-float: 8
ldouble: 4
Function: "tgamma_downward":
double: 9
-float: 7
ldouble: 5
Function: "tgamma_towardzero":
double: 9
-float: 7
ldouble: 5
Function: "tgamma_upward":
double: 9
-float: 8
ldouble: 4
Function: "y0":
diff --git a/sysdeps/s390/utf16-utf32-z9.c b/sysdeps/s390/utf16-utf32-z9.c
index 51dd979..9ac8a82 100644
--- a/sysdeps/s390/utf16-utf32-z9.c
+++ b/sysdeps/s390/utf16-utf32-z9.c
@@ -397,8 +397,8 @@ gconv_end (struct __gconv_step *data)
{ \
register const unsigned char* pInput asm ("8") = inptr; \
register size_t inlen asm ("9") = inend - inptr; \
- register unsigned char* pOutput asm ("10") = outptr; \
- register size_t outlen asm ("11") = outend - outptr; \
+ register unsigned char* pOutput asm ("6") = outptr; \
+ register size_t outlen asm ("7") = outend - outptr; \
unsigned long tmp, tmp2, tmp3; \
asm volatile (".machine push\n\t" \
".machine \"z13\"\n\t" \
@@ -707,8 +707,8 @@ gconv_end (struct __gconv_step *data)
{ \
register const unsigned char* pInput asm ("8") = inptr; \
register size_t inlen asm ("9") = inend - inptr; \
- register unsigned char* pOutput asm ("10") = outptr; \
- register size_t outlen asm ("11") = outend - outptr; \
+ register unsigned char* pOutput asm ("6") = outptr; \
+ register size_t outlen asm ("7") = outend - outptr; \
unsigned long tmp, tmp2, tmp3; \
asm volatile (".machine push\n\t" \
".machine \"z13\"\n\t" \
diff --git a/sysdeps/s390/utf8-utf16-z9.c b/sysdeps/s390/utf8-utf16-z9.c
index 421747f..d19fc3c 100644
--- a/sysdeps/s390/utf8-utf16-z9.c
+++ b/sysdeps/s390/utf8-utf16-z9.c
@@ -170,8 +170,8 @@ gconv_end (struct __gconv_step *data)
{ \
register const unsigned char* pInput __asm__ ("8") = inptr; \
register size_t inlen __asm__ ("9") = inend - inptr; \
- register unsigned char* pOutput __asm__ ("10") = outptr; \
- register size_t outlen __asm__("11") = outend - outptr; \
+ register unsigned char* pOutput __asm__ ("6") = outptr; \
+ register size_t outlen __asm__("7") = outend - outptr; \
unsigned long cc = 0; \
\
__asm__ __volatile__ (".machine push \n\t" \
@@ -242,8 +242,8 @@ gconv_end (struct __gconv_step *data)
{ \
register const unsigned char* pInput asm ("8") = inptr; \
register size_t inlen asm ("9") = inend - inptr; \
- register unsigned char* pOutput asm ("10") = outptr; \
- register size_t outlen asm("11") = outend - outptr; \
+ register unsigned char* pOutput asm ("6") = outptr; \
+ register size_t outlen asm("7") = outend - outptr; \
unsigned long tmp, tmp2, tmp3; \
asm volatile (".machine push\n\t" \
".machine \"z13\"\n\t" \
@@ -818,8 +818,8 @@ gconv_end (struct __gconv_step *data)
{ \
register const unsigned char* pInput asm ("8") = inptr; \
register size_t inlen asm ("9") = inend - inptr; \
- register unsigned char* pOutput asm ("10") = outptr; \
- register size_t outlen asm ("11") = outend - outptr; \
+ register unsigned char* pOutput asm ("6") = outptr; \
+ register size_t outlen asm ("7") = outend - outptr; \
unsigned long tmp, tmp2, tmp3; \
asm volatile (".machine push\n\t" \
".machine \"z13\"\n\t" \
diff --git a/sysdeps/s390/utf8-utf32-z9.c b/sysdeps/s390/utf8-utf32-z9.c
index 9c4189a..e4323d6 100644
--- a/sysdeps/s390/utf8-utf32-z9.c
+++ b/sysdeps/s390/utf8-utf32-z9.c
@@ -170,8 +170,8 @@ gconv_end (struct __gconv_step *data)
{ \
register const unsigned char* pInput __asm__ ("8") = inptr; \
register size_t inlen __asm__ ("9") = inend - inptr; \
- register unsigned char* pOutput __asm__ ("10") = outptr; \
- register size_t outlen __asm__("11") = outend - outptr; \
+ register unsigned char* pOutput __asm__ ("6") = outptr; \
+ register size_t outlen __asm__("7") = outend - outptr; \
unsigned long cc = 0; \
\
__asm__ __volatile__ (".machine push \n\t" \
@@ -475,8 +475,8 @@ gconv_end (struct __gconv_step *data)
{ \
register const unsigned char* pInput asm ("8") = inptr; \
register size_t inlen asm ("9") = inend - inptr; \
- register unsigned char* pOutput asm ("10") = outptr; \
- register size_t outlen asm("11") = outend - outptr; \
+ register unsigned char* pOutput asm ("6") = outptr; \
+ register size_t outlen asm("7") = outend - outptr; \
unsigned long tmp, tmp2, tmp3; \
asm volatile (".machine push\n\t" \
".machine \"z13\"\n\t" \
@@ -864,8 +864,8 @@ gconv_end (struct __gconv_step *data)
{ \
register const unsigned char* pInput asm ("8") = inptr; \
register size_t inlen asm ("9") = inend - inptr; \
- register unsigned char* pOutput asm ("10") = outptr; \
- register size_t outlen asm ("11") = outend - outptr; \
+ register unsigned char* pOutput asm ("6") = outptr; \
+ register size_t outlen asm ("7") = outend - outptr; \
unsigned long tmp, tmp2; \
asm volatile (".machine push\n\t" \
".machine \"z13\"\n\t" \
diff --git a/sysdeps/sh/libm-test-ulps b/sysdeps/sh/libm-test-ulps
index 3c84259..36f21ed 100644
--- a/sysdeps/sh/libm-test-ulps
+++ b/sysdeps/sh/libm-test-ulps
@@ -532,11 +532,9 @@ float: 2
Function: "tgamma":
double: 9
-float: 8
Function: "tgamma_towardzero":
double: 9
-float: 7
Function: "y0":
double: 3
diff --git a/sysdeps/sh/sysdep.h b/sysdeps/sh/sysdep.h
index 0c9e562..377d29b 100644
--- a/sysdeps/sh/sysdep.h
+++ b/sysdeps/sh/sysdep.h
@@ -24,6 +24,7 @@
#define ALIGNARG(log2) log2
#define ASM_SIZE_DIRECTIVE(name) .size name,.-name
+#define L(label) .L##label
#ifdef SHARED
#define PLTJMP(_x) _x##@PLT
diff --git a/sysdeps/sparc/fpu/libm-test-ulps b/sysdeps/sparc/fpu/libm-test-ulps
index 1bb8b7c..ccb6c79 100644
--- a/sysdeps/sparc/fpu/libm-test-ulps
+++ b/sysdeps/sparc/fpu/libm-test-ulps
@@ -1444,22 +1444,18 @@ ldouble: 3
Function: "tgamma":
double: 9
-float: 8
ldouble: 4
Function: "tgamma_downward":
double: 9
-float: 7
ldouble: 5
Function: "tgamma_towardzero":
double: 9
-float: 7
ldouble: 5
Function: "tgamma_upward":
double: 9
-float: 8
ldouble: 4
Function: "y0":
diff --git a/sysdeps/unix/sysdep.h b/sysdeps/unix/sysdep.h
index a19e841..adc8d71 100644
--- a/sysdeps/unix/sysdep.h
+++ b/sysdeps/unix/sysdep.h
@@ -24,6 +24,9 @@
#define SYSCALL__(name, args) PSEUDO (__##name, name, args)
#define SYSCALL(name, args) PSEUDO (name, name, args)
+#ifndef __ASSEMBLER__
+# include <errno.h>
+
#define __SYSCALL_CONCAT_X(a,b) a##b
#define __SYSCALL_CONCAT(a,b) __SYSCALL_CONCAT_X (a, b)
@@ -108,42 +111,148 @@
#define INLINE_SYSCALL_CALL(...) \
__INLINE_SYSCALL_DISP (__INLINE_SYSCALL, __VA_ARGS__)
-#if IS_IN (rtld)
-/* All cancellation points are compiled out in the dynamic loader. */
-# define NO_SYSCALL_CANCEL_CHECKING 1
+#define __INTERNAL_SYSCALL_NCS0(name) \
+ INTERNAL_SYSCALL_NCS (name, 0)
+#define __INTERNAL_SYSCALL_NCS1(name, a1) \
+ INTERNAL_SYSCALL_NCS (name, 1, a1)
+#define __INTERNAL_SYSCALL_NCS2(name, a1, a2) \
+ INTERNAL_SYSCALL_NCS (name, 2, a1, a2)
+#define __INTERNAL_SYSCALL_NCS3(name, a1, a2, a3) \
+ INTERNAL_SYSCALL_NCS (name, 3, a1, a2, a3)
+#define __INTERNAL_SYSCALL_NCS4(name, a1, a2, a3, a4) \
+ INTERNAL_SYSCALL_NCS (name, 4, a1, a2, a3, a4)
+#define __INTERNAL_SYSCALL_NCS5(name, a1, a2, a3, a4, a5) \
+ INTERNAL_SYSCALL_NCS (name, 5, a1, a2, a3, a4, a5)
+#define __INTERNAL_SYSCALL_NCS6(name, a1, a2, a3, a4, a5, a6) \
+ INTERNAL_SYSCALL_NCS (name, 6, a1, a2, a3, a4, a5, a6)
+#define __INTERNAL_SYSCALL_NCS7(name, a1, a2, a3, a4, a5, a6, a7) \
+ INTERNAL_SYSCALL_NCS (name, 7, a1, a2, a3, a4, a5, a6, a7)
+
+/* Issue a syscall defined by syscall number plus any other argument required.
+ It is similar to INTERNAL_SYSCALL_NCS macro, but without the need to pass
+ the expected argument number as third parameter. */
+#define INTERNAL_SYSCALL_NCS_CALL(...) \
+ __INTERNAL_SYSCALL_DISP (__INTERNAL_SYSCALL_NCS, __VA_ARGS__)
+
+/* Cancellation macros. */
+#include <syscall_types.h>
+
+/* Adjust both the __syscall_cancel and the SYSCALL_CANCEL macro to support
+ 7 arguments instead of default 6 (curently only mip32). It avoid add
+ the requirement to each architecture to support 7 argument macros
+ {INTERNAL,INLINE}_SYSCALL. */
+#ifdef HAVE_CANCELABLE_SYSCALL_WITH_7_ARGS
+# define __SYSCALL_CANCEL7_ARG_DEF __syscall_arg_t a7,
+# define __SYSCALL_CANCEL7_ARCH_ARG_DEF ,__syscall_arg_t a7
+# define __SYSCALL_CANCEL7_ARG 0,
+# define __SYSCALL_CANCEL7_ARG7 a7,
+# define __SYSCALL_CANCEL7_ARCH_ARG7 , a7
#else
-# define NO_SYSCALL_CANCEL_CHECKING SINGLE_THREAD_P
+# define __SYSCALL_CANCEL7_ARG_DEF
+# define __SYSCALL_CANCEL7_ARCH_ARG_DEF
+# define __SYSCALL_CANCEL7_ARG
+# define __SYSCALL_CANCEL7_ARG7
+# define __SYSCALL_CANCEL7_ARCH_ARG7
#endif
+long int __internal_syscall_cancel (__syscall_arg_t a1, __syscall_arg_t a2,
+ __syscall_arg_t a3, __syscall_arg_t a4,
+ __syscall_arg_t a5, __syscall_arg_t a6,
+ __SYSCALL_CANCEL7_ARG_DEF
+ __syscall_arg_t nr) attribute_hidden;
-#define SYSCALL_CANCEL(...) \
- ({ \
- long int sc_ret; \
- if (NO_SYSCALL_CANCEL_CHECKING) \
- sc_ret = INLINE_SYSCALL_CALL (__VA_ARGS__); \
- else \
- { \
- int sc_cancel_oldtype = LIBC_CANCEL_ASYNC (); \
- sc_ret = INLINE_SYSCALL_CALL (__VA_ARGS__); \
- LIBC_CANCEL_RESET (sc_cancel_oldtype); \
- } \
- sc_ret; \
- })
+long int __syscall_cancel (__syscall_arg_t arg1, __syscall_arg_t arg2,
+ __syscall_arg_t arg3, __syscall_arg_t arg4,
+ __syscall_arg_t arg5, __syscall_arg_t arg6,
+ __SYSCALL_CANCEL7_ARG_DEF
+ __syscall_arg_t nr) attribute_hidden;
-/* Issue a syscall defined by syscall number plus any other argument
- required. Any error will be returned unmodified (including errno). */
-#define INTERNAL_SYSCALL_CANCEL(...) \
- ({ \
- long int sc_ret; \
- if (NO_SYSCALL_CANCEL_CHECKING) \
- sc_ret = INTERNAL_SYSCALL_CALL (__VA_ARGS__); \
- else \
- { \
- int sc_cancel_oldtype = LIBC_CANCEL_ASYNC (); \
- sc_ret = INTERNAL_SYSCALL_CALL (__VA_ARGS__); \
- LIBC_CANCEL_RESET (sc_cancel_oldtype); \
- } \
- sc_ret; \
- })
+#define __SYSCALL_CANCEL0(name) \
+ __syscall_cancel (0, 0, 0, 0, 0, 0, __SYSCALL_CANCEL7_ARG __NR_##name)
+#define __SYSCALL_CANCEL1(name, a1) \
+ __syscall_cancel (__SSC (a1), 0, 0, 0, 0, 0, \
+ __SYSCALL_CANCEL7_ARG __NR_##name)
+#define __SYSCALL_CANCEL2(name, a1, a2) \
+ __syscall_cancel (__SSC (a1), __SSC (a2), 0, 0, 0, 0, \
+ __SYSCALL_CANCEL7_ARG __NR_##name)
+#define __SYSCALL_CANCEL3(name, a1, a2, a3) \
+ __syscall_cancel (__SSC (a1), __SSC (a2), __SSC (a3), 0, 0, 0, \
+ __SYSCALL_CANCEL7_ARG __NR_##name)
+#define __SYSCALL_CANCEL4(name, a1, a2, a3, a4) \
+ __syscall_cancel (__SSC (a1), __SSC (a2), __SSC (a3), \
+ __SSC(a4), 0, 0, __SYSCALL_CANCEL7_ARG __NR_##name)
+#define __SYSCALL_CANCEL5(name, a1, a2, a3, a4, a5) \
+ __syscall_cancel (__SSC (a1), __SSC (a2), __SSC (a3), __SSC(a4), \
+ __SSC (a5), 0, __SYSCALL_CANCEL7_ARG __NR_##name)
+#define __SYSCALL_CANCEL6(name, a1, a2, a3, a4, a5, a6) \
+ __syscall_cancel (__SSC (a1), __SSC (a2), __SSC (a3), __SSC (a4), \
+ __SSC (a5), __SSC (a6), __SYSCALL_CANCEL7_ARG \
+ __NR_##name)
+#define __SYSCALL_CANCEL7(name, a1, a2, a3, a4, a5, a6, a7) \
+ __syscall_cancel (__SSC (a1), __SSC (a2), __SSC (a3), __SSC (a4), \
+ __SSC (a5), __SSC (a6), __SSC (a7), __NR_##name)
+
+#define __SYSCALL_CANCEL_NARGS_X(a,b,c,d,e,f,g,h,n,...) n
+#define __SYSCALL_CANCEL_NARGS(...) \
+ __SYSCALL_CANCEL_NARGS_X (__VA_ARGS__,7,6,5,4,3,2,1,0,)
+#define __SYSCALL_CANCEL_CONCAT_X(a,b) a##b
+#define __SYSCALL_CANCEL_CONCAT(a,b) __SYSCALL_CANCEL_CONCAT_X (a, b)
+#define __SYSCALL_CANCEL_DISP(b,...) \
+ __SYSCALL_CANCEL_CONCAT (b,__SYSCALL_CANCEL_NARGS(__VA_ARGS__))(__VA_ARGS__)
+
+/* Issue a cancellable syscall defined first argument plus any other argument
+ required. If and error occurs its value, the macro returns -1 and sets
+ errno accordingly. */
+#define __SYSCALL_CANCEL_CALL(...) \
+ __SYSCALL_CANCEL_DISP (__SYSCALL_CANCEL, __VA_ARGS__)
+
+#define __INTERNAL_SYSCALL_CANCEL0(name) \
+ __internal_syscall_cancel (0, 0, 0, 0, 0, 0, __SYSCALL_CANCEL7_ARG \
+ __NR_##name)
+#define __INTERNAL_SYSCALL_CANCEL1(name, a1) \
+ __internal_syscall_cancel (__SSC (a1), 0, 0, 0, 0, 0, \
+ __SYSCALL_CANCEL7_ARG __NR_##name)
+#define __INTERNAL_SYSCALL_CANCEL2(name, a1, a2) \
+ __internal_syscall_cancel (__SSC (a1), __SSC (a2), 0, 0, 0, 0, \
+ __SYSCALL_CANCEL7_ARG __NR_##name)
+#define __INTERNAL_SYSCALL_CANCEL3(name, a1, a2, a3) \
+ __internal_syscall_cancel (__SSC (a1), __SSC (a2), __SSC (a3), 0, \
+ 0, 0, __SYSCALL_CANCEL7_ARG __NR_##name)
+#define __INTERNAL_SYSCALL_CANCEL4(name, a1, a2, a3, a4) \
+ __internal_syscall_cancel (__SSC (a1), __SSC (a2), __SSC (a3), \
+ __SSC(a4), 0, 0, \
+ __SYSCALL_CANCEL7_ARG __NR_##name)
+#define __INTERNAL_SYSCALL_CANCEL5(name, a1, a2, a3, a4, a5) \
+ __internal_syscall_cancel (__SSC (a1), __SSC (a2), __SSC (a3), \
+ __SSC(a4), __SSC (a5), 0, \
+ __SYSCALL_CANCEL7_ARG __NR_##name)
+#define __INTERNAL_SYSCALL_CANCEL6(name, a1, a2, a3, a4, a5, a6) \
+ __internal_syscall_cancel (__SSC (a1), __SSC (a2), __SSC (a3), \
+ __SSC (a4), __SSC (a5), __SSC (a6), \
+ __SYSCALL_CANCEL7_ARG __NR_##name)
+#define __INTERNAL_SYSCALL_CANCEL7(name, a1, a2, a3, a4, a5, a6, a7) \
+ __internal_syscall_cancel (__SSC (a1), __SSC (a2), __SSC (a3), \
+ __SSC (a4), __SSC (a5), __SSC (a6), \
+ __SSC (a7), __NR_##name)
+
+/* Issue a cancellable syscall defined by syscall number NAME plus any other
+ argument required. If an error occurs its value is returned as an negative
+ number unmodified and errno is not set. */
+#define __INTERNAL_SYSCALL_CANCEL_CALL(...) \
+ __SYSCALL_CANCEL_DISP (__INTERNAL_SYSCALL_CANCEL, __VA_ARGS__)
+
+#if IS_IN (rtld)
+/* The loader does not need to handle thread cancellation, use direct
+ syscall instead. */
+# define INTERNAL_SYSCALL_CANCEL(...) INTERNAL_SYSCALL_CALL(__VA_ARGS__)
+# define SYSCALL_CANCEL(...) INLINE_SYSCALL_CALL (__VA_ARGS__)
+#else
+# define INTERNAL_SYSCALL_CANCEL(...) \
+ __INTERNAL_SYSCALL_CANCEL_CALL (__VA_ARGS__)
+# define SYSCALL_CANCEL(...) \
+ __SYSCALL_CANCEL_CALL (__VA_ARGS__)
+#endif
+
+#endif /* __ASSEMBLER__ */
/* Machine-dependent sysdep.h files are expected to define the macro
PSEUDO (function_name, syscall_name) to emit assembly code to define the
diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile
index 59998c7..7df51a3 100644
--- a/sysdeps/unix/sysv/linux/Makefile
+++ b/sysdeps/unix/sysv/linux/Makefile
@@ -95,6 +95,8 @@ sysdep_routines += \
process_vm_writev \
pselect32 \
readahead \
+ sched_getattr \
+ sched_setattr \
setfsgid \
setfsuid \
setvmaname \
@@ -224,6 +226,7 @@ tests += \
tst-process_mrelease \
tst-quota \
tst-rlimit-infinity \
+ tst-sched_setattr \
tst-scm_rights \
tst-sigtimedwait \
tst-sync_file_range \
@@ -395,6 +398,16 @@ $(objpfx)tst-mount-compile.out: ../sysdeps/unix/sysv/linux/tst-mount-compile.py
< /dev/null > $@ 2>&1; $(evaluate-test)
$(objpfx)tst-mount-compile.out: $(sysdeps-linux-python-deps)
+tests-special += \
+ $(objpfx)tst-sched-consts.out \
+ # tests-special
+$(objpfx)tst-sched-consts.out: ../sysdeps/unix/sysv/linux/tst-sched-consts.py
+ $(sysdeps-linux-python) \
+ ../sysdeps/unix/sysv/linux/tst-sched-consts.py \
+ $(sysdeps-linux-python-cc) \
+ < /dev/null > $@ 2>&1; $(evaluate-test)
+$(objpfx)tst-sched-consts.out: $(sysdeps-linux-python-deps)
+
tst-rseq-disable-ENV = GLIBC_TUNABLES=glibc.pthread.rseq=0
endif # $(subdir) == misc
diff --git a/sysdeps/unix/sysv/linux/Versions b/sysdeps/unix/sysv/linux/Versions
index 268ba1b..213ff5f 100644
--- a/sysdeps/unix/sysv/linux/Versions
+++ b/sysdeps/unix/sysv/linux/Versions
@@ -328,6 +328,10 @@ libc {
posix_spawnattr_getcgroup_np;
posix_spawnattr_setcgroup_np;
}
+ GLIBC_2.41 {
+ sched_getattr;
+ sched_setattr;
+ }
GLIBC_PRIVATE {
# functions used in other libraries
__syscall_rt_sigqueueinfo;
diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
index 68eeca1..38db77e 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
@@ -2748,3 +2748,5 @@ GLIBC_2.39 stdc_trailing_zeros_ui F
GLIBC_2.39 stdc_trailing_zeros_ul F
GLIBC_2.39 stdc_trailing_zeros_ull F
GLIBC_2.39 stdc_trailing_zeros_us F
+GLIBC_2.41 sched_getattr F
+GLIBC_2.41 sched_setattr F
diff --git a/sysdeps/unix/sysv/linux/aarch64/libmvec.abilist b/sysdeps/unix/sysv/linux/aarch64/libmvec.abilist
index b685106..98687ca 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libmvec.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libmvec.abilist
@@ -128,3 +128,8 @@ GLIBC_2.40 _ZGVsMxvv_hypot F
GLIBC_2.40 _ZGVsMxvv_hypotf F
GLIBC_2.40 _ZGVsMxvv_pow F
GLIBC_2.40 _ZGVsMxvv_powf F
+GLIBC_2.41 _ZGVnN2v_logp1 F
+GLIBC_2.41 _ZGVnN2v_logp1f F
+GLIBC_2.41 _ZGVnN4v_logp1f F
+GLIBC_2.41 _ZGVsMxv_logp1 F
+GLIBC_2.41 _ZGVsMxv_logp1f F
diff --git a/sysdeps/unix/sysv/linux/aarch64/syscall_cancel.S b/sysdeps/unix/sysv/linux/aarch64/syscall_cancel.S
new file mode 100644
index 0000000..e91a431
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/aarch64/syscall_cancel.S
@@ -0,0 +1,59 @@
+/* Cancellable syscall wrapper. Linux/AArch64 version.
+ Copyright (C) 2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <sysdep.h>
+#include <descr-const.h>
+
+/* long int [x0] __syscall_cancel_arch (int *cancelhandling [x0],
+ long int nr [x1],
+ long int arg1 [x2],
+ long int arg2 [x3],
+ long int arg3 [x4],
+ long int arg4 [x5],
+ long int arg5 [x6],
+ long int arg6 [x7]) */
+
+ENTRY (__syscall_cancel_arch)
+
+ .globl __syscall_cancel_arch_start
+__syscall_cancel_arch_start:
+
+ /* if (*cancelhandling & CANCELED_BITMASK)
+ __syscall_do_cancel() */
+ ldr w0, [x0]
+ tbnz w0, TCB_CANCELED_BIT, 1f
+
+ /* Issue a 6 argument syscall, the nr [x1] being the syscall
+ number. */
+ mov x8, x1
+ mov x0, x2
+ mov x1, x3
+ mov x2, x4
+ mov x3, x5
+ mov x4, x6
+ mov x5, x7
+ svc 0x0
+
+ .globl __syscall_cancel_arch_end
+__syscall_cancel_arch_end:
+ ret
+
+1:
+ b __syscall_do_cancel
+
+END (__syscall_cancel_arch)
diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
index 34c187b..637bfce 100644
--- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
@@ -3095,6 +3095,8 @@ GLIBC_2.4 wcstold F
GLIBC_2.4 wcstold_l F
GLIBC_2.4 wprintf F
GLIBC_2.4 wscanf F
+GLIBC_2.41 sched_getattr F
+GLIBC_2.41 sched_setattr F
GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F
GLIBC_2.5 inet6_opt_find F
diff --git a/sysdeps/unix/sysv/linux/alpha/syscall_cancel.S b/sysdeps/unix/sysv/linux/alpha/syscall_cancel.S
new file mode 100644
index 0000000..377eef4
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/alpha/syscall_cancel.S
@@ -0,0 +1,80 @@
+/* Cancellable syscall wrapper. Linux/alpha version.
+ Copyright (C) 2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <sysdep.h>
+#include <descr-const.h>
+
+/* long int __syscall_cancel_arch (int *ch,
+ __syscall_arg_t nr,
+ __syscall_arg_t arg1,
+ __syscall_arg_t arg2,
+ __syscall_arg_t arg3,
+ __syscall_arg_t arg4,
+ __syscall_arg_t arg5,
+ __syscall_arg_t arg6) */
+
+ .set noreorder
+ .set noat
+ .set nomacro
+ENTRY (__syscall_cancel_arch)
+ .frame sp, 16, ra, 0
+ .mask 0x4000000,-16
+ cfi_startproc
+ ldah gp, 0(t12)
+ lda gp, 0(gp)
+ lda sp, -16(sp)
+ cfi_def_cfa_offset (16)
+ mov a1, v0
+ stq ra, 0(sp)
+ cfi_offset (26, -16)
+ .prologue 1
+
+ .global __syscall_cancel_arch_start
+__syscall_cancel_arch_start:
+ ldl t0, 0(a0)
+ addl zero, t0, t0
+ /* if (*ch & CANCELED_BITMASK) */
+ and t0, TCB_CANCELED_BITMASK, t0
+ bne t0, 1f
+ mov a2, a0
+ mov a3, a1
+ mov a4, a2
+ ldq a4, 16(sp)
+ mov a5, a3
+ ldq a5, 24(sp)
+ .set macro
+ callsys
+ .set nomacro
+
+ .global __syscall_cancel_arch_end
+__syscall_cancel_arch_end:
+ subq zero, v0, t0
+ ldq ra, 0(sp)
+ cmovne a3, t0, v0
+ lda sp, 16(sp)
+ cfi_remember_state
+ cfi_restore (26)
+ cfi_def_cfa_offset (0)
+ ret zero, (ra), 1
+ .align 4
+1:
+ cfi_restore_state
+ ldq t12, __syscall_do_cancel(gp) !literal!2
+ jsr ra, (t12), __syscall_do_cancel !lituse_jsr!2
+ cfi_endproc
+END (__syscall_cancel_arch)
diff --git a/sysdeps/unix/sysv/linux/arc/Makefile b/sysdeps/unix/sysv/linux/arc/Makefile
index eca9a9f..dd3da52 100644
--- a/sysdeps/unix/sysv/linux/arc/Makefile
+++ b/sysdeps/unix/sysv/linux/arc/Makefile
@@ -11,12 +11,3 @@ ifeq ($(subdir),misc)
sysdep_headers += sys/cachectl.h
sysdep_routines += cacheflush
endif
-
-abi-variants := arcle arcbe
-
-ifeq (,$(filter $(default-abi),$(abi-variants)))
-$(error Unknown ABI $(default-abi), must be one of $(abi-variants))
-endif
-
-abi-arcle-condition := !defined __BIG_ENDIAN__
-abi-arcbe-condition := defined __BIG_ENDIAN__
diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
index 916c18e..4a305cf 100644
--- a/sysdeps/unix/sysv/linux/arc/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
@@ -2509,3 +2509,5 @@ GLIBC_2.39 stdc_trailing_zeros_ui F
GLIBC_2.39 stdc_trailing_zeros_ul F
GLIBC_2.39 stdc_trailing_zeros_ull F
GLIBC_2.39 stdc_trailing_zeros_us F
+GLIBC_2.41 sched_getattr F
+GLIBC_2.41 sched_setattr F
diff --git a/sysdeps/unix/sysv/linux/arc/shlib-versions b/sysdeps/unix/sysv/linux/arc/shlib-versions
index 343c0a0..62c1bd5 100644
--- a/sysdeps/unix/sysv/linux/arc/shlib-versions
+++ b/sysdeps/unix/sysv/linux/arc/shlib-versions
@@ -1,7 +1,3 @@
DEFAULT GLIBC_2.32
-%ifdef HAVE_ARC_BE
-ld=ld-linux-arceb.so.2
-%else
ld=ld-linux-arc.so.2
-%endif
diff --git a/sysdeps/unix/sysv/linux/arc/syscall_cancel.S b/sysdeps/unix/sysv/linux/arc/syscall_cancel.S
new file mode 100644
index 0000000..fa02af4
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/arc/syscall_cancel.S
@@ -0,0 +1,56 @@
+/* Cancellable syscall wrapper. Linux/ARC version.
+ Copyright (C) 2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <sysdep.h>
+#include <descr-const.h>
+
+/* long int __syscall_cancel_arch (int *cancelhandling,
+ __syscall_arg_t nr,
+ __syscall_arg_t arg1,
+ __syscall_arg_t arg2,
+ __syscall_arg_t arg3,
+ __syscall_arg_t arg4,
+ __syscall_arg_t arg5,
+ __syscall_arg_t arg6) */
+
+ENTRY (__syscall_cancel_arch)
+
+ .globl __syscall_cancel_arch_start
+__syscall_cancel_arch_start:
+ ld_s r12,[r0]
+ bbit1 r12, TCB_CANCELED_BITMASK, 1f
+ mov_s r8, r1
+ mov_s r0, r2
+ mov_s r1, r3
+ mov_s r2, r4
+ mov_s r3, r5
+ mov_s r4, r6
+ mov_s r5, r7
+ trap_s 0
+
+ .globl __syscall_cancel_arch_end
+__syscall_cancel_arch_end:
+ j_s [blink]
+
+ .align 4
+1: push_s blink
+ cfi_def_cfa_offset (4)
+ cfi_offset (31, -4)
+ bl @__syscall_do_cancel
+
+END (__syscall_cancel_arch)
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
index ea95de2..1d54f71 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -2801,6 +2801,8 @@ GLIBC_2.4 xdrstdio_create F
GLIBC_2.4 xencrypt F
GLIBC_2.4 xprt_register F
GLIBC_2.4 xprt_unregister F
+GLIBC_2.41 sched_getattr F
+GLIBC_2.41 sched_setattr F
GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F
GLIBC_2.5 inet6_opt_find F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
index 1cdbc98..ff7e8bc 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -2798,6 +2798,8 @@ GLIBC_2.4 xdrstdio_create F
GLIBC_2.4 xencrypt F
GLIBC_2.4 xprt_register F
GLIBC_2.4 xprt_unregister F
+GLIBC_2.41 sched_getattr F
+GLIBC_2.41 sched_setattr F
GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F
GLIBC_2.5 inet6_opt_find F
diff --git a/sysdeps/unix/sysv/linux/arm/syscall_cancel.S b/sysdeps/unix/sysv/linux/arm/syscall_cancel.S
new file mode 100644
index 0000000..6b89930
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/arm/syscall_cancel.S
@@ -0,0 +1,78 @@
+/* Cancellable syscall wrapper. Linux/arm version.
+ Copyright (C) 2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <sysdep.h>
+#include <descr-const.h>
+
+/* long int [r0] __syscall_cancel_arch (int *cancelhandling [r0],
+ long int nr [r1],
+ long int arg1 [r2],
+ long int arg2 [r3],
+ long int arg3 [SP],
+ long int arg4 [SP+4],
+ long int arg5 [SP+8],
+ long int arg6 [SP+12]) */
+
+ .syntax unified
+
+ENTRY (__syscall_cancel_arch)
+ .fnstart
+ mov ip, sp
+ stmfd sp!, {r4, r5, r6, r7, lr}
+ .save {r4, r5, r6, r7, lr}
+
+ cfi_adjust_cfa_offset (20)
+ cfi_rel_offset (r4, 0)
+ cfi_rel_offset (r5, 4)
+ cfi_rel_offset (r6, 8)
+ cfi_rel_offset (r7, 12)
+ cfi_rel_offset (lr, 16)
+
+ .globl __syscall_cancel_arch_start
+__syscall_cancel_arch_start:
+
+ /* if (*cancelhandling & CANCELED_BITMASK)
+ __syscall_do_cancel() */
+ ldr r0, [r0]
+ tst r0, #TCB_CANCELED_BITMASK
+ bne 1f
+
+ /* Issue a 6 argument syscall, the nr [r1] being the syscall
+ number. */
+ mov r7, r1
+ mov r0, r2
+ mov r1, r3
+ ldmfd ip, {r2, r3, r4, r5, r6}
+ svc 0x0
+
+ .globl __syscall_cancel_arch_end
+__syscall_cancel_arch_end:
+ ldmfd sp!, {r4, r5, r6, r7, lr}
+ cfi_adjust_cfa_offset (-20)
+ cfi_restore (r4)
+ cfi_restore (r5)
+ cfi_restore (r6)
+ cfi_restore (r7)
+ cfi_restore (lr)
+ BX (lr)
+
+1:
+ ldmfd sp!, {r4, r5, r6, r7, lr}
+ b __syscall_do_cancel
+ .fnend
+END (__syscall_cancel_arch)
diff --git a/sysdeps/unix/sysv/linux/bits/mman-linux.h b/sysdeps/unix/sysv/linux/bits/mman-linux.h
index 522333c..161a885 100644
--- a/sysdeps/unix/sysv/linux/bits/mman-linux.h
+++ b/sysdeps/unix/sysv/linux/bits/mman-linux.h
@@ -43,6 +43,7 @@
#define MAP_PRIVATE 0x02 /* Changes are private. */
#define MAP_SHARED_VALIDATE 0x03 /* Share changes and validate
extension flags. */
+#define MAP_DROPPABLE 0x08 /* Zero memory under memory pressure. */
#define MAP_TYPE 0x0f /* Mask for type of mapping. */
/* Other flags. */
diff --git a/sysdeps/unix/sysv/linux/bits/sched.h b/sysdeps/unix/sysv/linux/bits/sched.h
index a53e136..a02cb69 100644
--- a/sysdeps/unix/sysv/linux/bits/sched.h
+++ b/sysdeps/unix/sysv/linux/bits/sched.h
@@ -29,15 +29,58 @@
#define SCHED_FIFO 1
#define SCHED_RR 2
#ifdef __USE_GNU
+# define SCHED_NORMAL SCHED_OTHER
# define SCHED_BATCH 3
# define SCHED_ISO 4
# define SCHED_IDLE 5
# define SCHED_DEADLINE 6
+/* Flags that can be used in policy values. */
# define SCHED_RESET_ON_FORK 0x40000000
-#endif
-#ifdef __USE_GNU
+/* Flags for the sched_flags field in struct sched_attr. */
+#define SCHED_FLAG_RESET_ON_FORK 0x01
+#define SCHED_FLAG_RECLAIM 0x02
+#define SCHED_FLAG_DL_OVERRUN 0x04
+#define SCHED_FLAG_KEEP_POLICY 0x08
+#define SCHED_FLAG_KEEP_PARAMS 0x10
+#define SCHED_FLAG_UTIL_CLAMP_MIN 0x20
+#define SCHED_FLAG_UTIL_CLAMP_MAX 0x40
+
+/* Combinations of sched_flags fields. */
+#define SCHED_FLAG_KEEP_ALL 0x18
+#define SCHED_FLAG_UTIL_CLAMP 0x60
+
+/* Use "" to work around incorrect macro expansion of the
+ __has_include argument (GCC PR 80005). */
+# ifdef __has_include
+# if __has_include ("linux/sched/types.h")
+/* Some older Linux versions defined sched_param in <linux/sched/types.h>. */
+# define sched_param __glibc_mask_sched_param
+# include <linux/sched/types.h>
+# undef sched_param
+# endif
+# endif
+# ifndef SCHED_ATTR_SIZE_VER0
+# include <linux/types.h>
+# define SCHED_ATTR_SIZE_VER0 48
+# define SCHED_ATTR_SIZE_VER1 56
+struct sched_attr
+{
+ __u32 size;
+ __u32 sched_policy;
+ __u64 sched_flags;
+ __s32 sched_nice;
+ __u32 sched_priority;
+ __u64 sched_runtime;
+ __u64 sched_deadline;
+ __u64 sched_period;
+ __u32 sched_util_min;
+ __u32 sched_util_max;
+ /* Additional fields may be added at the end. */
+};
+# endif /* !SCHED_ATTR_SIZE_VER0 */
+
/* Cloning flags. */
# define CSIGNAL 0x000000ff /* Signal mask to be sent at exit. */
# define CLONE_VM 0x00000100 /* Set if VM shared between processes. */
@@ -97,6 +140,17 @@ extern int getcpu (unsigned int *, unsigned int *) __THROW;
/* Switch process to namespace of type NSTYPE indicated by FD. */
extern int setns (int __fd, int __nstype) __THROW;
+
+/* Apply the scheduling attributes from *ATTR to the process or thread TID. */
+int sched_setattr (pid_t tid, struct sched_attr *attr, unsigned int flags)
+ __THROW __nonnull ((2));
+
+/* Obtain the scheduling attributes of the process or thread TID and
+ store it in *ATTR. */
+int sched_getattr (pid_t tid, struct sched_attr *attr, unsigned int size,
+ unsigned int flags)
+ __THROW __nonnull ((2)) __attr_access ((__write_only__, 2, 3));
+
#endif
__END_DECLS
diff --git a/sysdeps/unix/sysv/linux/bits/uio-ext.h b/sysdeps/unix/sysv/linux/bits/uio-ext.h
index ead7a09..85ed21b 100644
--- a/sysdeps/unix/sysv/linux/bits/uio-ext.h
+++ b/sysdeps/unix/sysv/linux/bits/uio-ext.h
@@ -48,6 +48,8 @@ extern ssize_t process_vm_writev (pid_t __pid, const struct iovec *__lvec,
#define RWF_NOWAIT 0x00000008 /* per-IO nonblocking mode. */
#define RWF_APPEND 0x00000010 /* per-IO O_APPEND. */
#define RWF_NOAPPEND 0x00000020 /* per-IO negation of O_APPEND */
+#define RWF_ATOMIC 0x00000040 /* Write is to be issued with torn-write
+ prevention. */
__END_DECLS
diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
index 96d4596..c3ed654 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -2785,3 +2785,5 @@ GLIBC_2.39 stdc_trailing_zeros_ui F
GLIBC_2.39 stdc_trailing_zeros_ul F
GLIBC_2.39 stdc_trailing_zeros_ull F
GLIBC_2.39 stdc_trailing_zeros_us F
+GLIBC_2.41 sched_getattr F
+GLIBC_2.41 sched_setattr F
diff --git a/sysdeps/unix/sysv/linux/csky/syscall_cancel.S b/sysdeps/unix/sysv/linux/csky/syscall_cancel.S
new file mode 100644
index 0000000..2989765
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/csky/syscall_cancel.S
@@ -0,0 +1,114 @@
+/* Cancellable syscall wrapper. Linux/csky version.
+ Copyright (C) 2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <sysdep.h>
+#include <descr-const.h>
+
+/* long int __syscall_cancel_arch (int *cancelhandling,
+ __syscall_arg_t nr,
+ __syscall_arg_t arg1,
+ __syscall_arg_t arg2,
+ __syscall_arg_t arg3,
+ __syscall_arg_t arg4,
+ __syscall_arg_t arg5,
+ __syscall_arg_t arg6) */
+
+#ifdef SHARED
+# define STACK_ADJ 4
+#else
+# define STACK_ADJ 0
+#endif
+
+ENTRY (__syscall_cancel_arch)
+ subi sp, sp, 16 + STACK_ADJ
+ cfi_def_cfa_offset (16 + STACK_ADJ)
+#ifdef SHARED
+ st.w gb, (sp, 16)
+ lrw t1, 1f@GOTPC
+ cfi_offset (gb, -4)
+ grs gb, 1f
+1:
+#endif
+ st.w lr, (sp, 12)
+ st.w l3, (sp, 8)
+ st.w l1, (sp, 4)
+ st.w l0, (sp, 0)
+#ifdef SHARED
+ addu gb, gb, t1
+#endif
+ subi sp, sp, 16
+ cfi_def_cfa_offset (32 + STACK_ADJ)
+ cfi_offset (lr, -( 4 + STACK_ADJ))
+ cfi_offset (l3, -( 8 + STACK_ADJ))
+ cfi_offset (l1, -(12 + STACK_ADJ))
+ cfi_offset (l0, -(16 + STACK_ADJ))
+
+ mov l3, a1
+ mov a1, a3
+ ld.w a3, (sp, 32 + STACK_ADJ)
+ st.w a3, (sp, 0)
+ ld.w a3, (sp, 36 + STACK_ADJ)
+ st.w a3, (sp, 4)
+ ld.w a3, (sp, 40 + STACK_ADJ)
+ st.w a3, (sp, 8)
+ ld.w a3, (sp, 44 + STACK_ADJ)
+ st.w a3, (sp, 12)
+
+ .globl __syscall_cancel_arch_start
+__syscall_cancel_arch_start:
+ ld.w t0, (a0, 0)
+ andi t0, t0, TCB_CANCELED_BITMASK
+ jbnez t0, 2f
+ mov a0, a2
+ ld.w a3, (sp, 4)
+ ld.w a2, (sp, 0)
+ ld.w l0, (sp, 8)
+ ld.w l1, (sp, 12)
+ trap 0
+
+ .globl __syscall_cancel_arch_end
+__syscall_cancel_arch_end:
+ addi sp, sp, 16
+ cfi_remember_state
+ cfi_def_cfa_offset (16 + STACK_ADJ)
+#ifdef SHARED
+ ld.w gb, (sp, 16)
+ cfi_restore (gb)
+#endif
+ ld.w lr, (sp, 12)
+ cfi_restore (lr)
+ ld.w l3, (sp, 8)
+ cfi_restore (l3)
+ ld.w l1, (sp, 4)
+ cfi_restore (l1)
+ ld.w l0, (sp, 0)
+ cfi_restore (l0)
+ addi sp, sp, 16
+ cfi_def_cfa_offset (0)
+ rts
+
+2:
+ cfi_restore_state
+#ifdef SHARED
+ lrw a3, __syscall_do_cancel@GOTOFF
+ addu a3, a3, gb
+ jsr a3
+#else
+ jbsr __syscall_do_cancel
+#endif
+END (__syscall_cancel_arch)
diff --git a/sysdeps/unix/sysv/linux/getdents64.c b/sysdeps/unix/sysv/linux/getdents64.c
index 227fbf2..795bd93 100644
--- a/sysdeps/unix/sysv/linux/getdents64.c
+++ b/sysdeps/unix/sysv/linux/getdents64.c
@@ -33,100 +33,3 @@ __getdents64 (int fd, void *buf, size_t nbytes)
}
libc_hidden_def (__getdents64)
weak_alias (__getdents64, getdents64)
-
-#if _DIRENT_MATCHES_DIRENT64
-strong_alias (__getdents64, __getdents)
-#else
-# include <shlib-compat.h>
-
-# if SHLIB_COMPAT(libc, GLIBC_2_1, GLIBC_2_2)
-# include <olddirent.h>
-# include <unistd.h>
-
-static ssize_t
-handle_overflow (int fd, __off64_t offset, ssize_t count)
-{
- /* If this is the first entry in the buffer, we can report the
- error. */
- if (offset == 0)
- {
- __set_errno (EOVERFLOW);
- return -1;
- }
-
- /* Otherwise, seek to the overflowing entry, so that the next call
- will report the error, and return the data read so far. */
- if (__lseek64 (fd, offset, SEEK_SET) != 0)
- return -1;
- return count;
-}
-
-ssize_t
-__old_getdents64 (int fd, char *buf, size_t nbytes)
-{
- /* We do not move the individual directory entries. This is only
- possible if the target type (struct __old_dirent64) is smaller
- than the source type. */
- _Static_assert (offsetof (struct __old_dirent64, d_name)
- <= offsetof (struct dirent64, d_name),
- "__old_dirent64 is larger than dirent64");
- _Static_assert (__alignof__ (struct __old_dirent64)
- <= __alignof__ (struct dirent64),
- "alignment of __old_dirent64 is larger than dirent64");
-
- ssize_t retval = INLINE_SYSCALL_CALL (getdents64, fd, buf, nbytes);
- if (retval > 0)
- {
- /* This is the marker for the first entry. Offset 0 is reserved
- for the first entry (see rewinddir). Here, we use it as a
- marker for the first entry in the buffer. We never actually
- seek to offset 0 because handle_overflow reports the error
- directly, so it does not matter that the offset is incorrect
- if entries have been read from the descriptor before (so that
- the descriptor is not actually at offset 0). */
- __off64_t previous_offset = 0;
-
- char *p = buf;
- char *end = buf + retval;
- while (p < end)
- {
- struct dirent64 *source = (struct dirent64 *) p;
-
- /* Copy out the fixed-size data. */
- __ino_t ino = source->d_ino;
- __off64_t offset = source->d_off;
- unsigned int reclen = source->d_reclen;
- unsigned char type = source->d_type;
-
- /* Check for ino_t overflow. */
- if (__glibc_unlikely (ino != source->d_ino))
- return handle_overflow (fd, previous_offset, p - buf);
-
- /* Convert to the target layout. Use a separate struct and
- memcpy to side-step aliasing issues. */
- struct __old_dirent64 result;
- result.d_ino = ino;
- result.d_off = offset;
- result.d_reclen = reclen;
- result.d_type = type;
-
- /* Write the fixed-sized part of the result to the
- buffer. */
- size_t result_name_offset = offsetof (struct __old_dirent64, d_name);
- memcpy (p, &result, result_name_offset);
-
- /* Adjust the position of the name if necessary. Copy
- everything until the end of the record, including the
- terminating NUL byte. */
- if (result_name_offset != offsetof (struct dirent64, d_name))
- memmove (p + result_name_offset, source->d_name,
- reclen - offsetof (struct dirent64, d_name));
-
- p += reclen;
- previous_offset = offset;
- }
- }
- return retval;
-}
-# endif /* SHLIB_COMPAT(libc, GLIBC_2_1, GLIBC_2_2) */
-#endif /* _DIRENT_MATCHES_DIRENT64 */
diff --git a/sysdeps/unix/sysv/linux/gettimeofday.c b/sysdeps/unix/sysv/linux/gettimeofday.c
index 7ab147c..5ca8916 100644
--- a/sysdeps/unix/sysv/linux/gettimeofday.c
+++ b/sysdeps/unix/sysv/linux/gettimeofday.c
@@ -37,11 +37,11 @@ __gettimeofday_syscall (struct timeval *restrict tv, void *restrict tz)
}
# undef INIT_ARCH
-# define INIT_ARCH() \
- void *vdso_gettimeofday = dl_vdso_vsym (HAVE_GETTIMEOFDAY_VSYSCALL)
+# define INIT_ARCH()
libc_ifunc (__gettimeofday,
- vdso_gettimeofday ? VDSO_IFUNC_RET (vdso_gettimeofday)
- : (void *) __gettimeofday_syscall)
+ GLRO(dl_vdso_gettimeofday) != NULL
+ ? VDSO_IFUNC_RET (GLRO(dl_vdso_gettimeofday))
+ : (void *) __gettimeofday_syscall)
# else
int
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index fbcd60c..8de7644 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -2821,6 +2821,8 @@ GLIBC_2.4 sys_errlist D 0x400
GLIBC_2.4 sys_nerr D 0x4
GLIBC_2.4 unlinkat F
GLIBC_2.4 unshare F
+GLIBC_2.41 sched_getattr F
+GLIBC_2.41 sched_setattr F
GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F
GLIBC_2.5 inet6_opt_find F
diff --git a/sysdeps/unix/sysv/linux/hppa/syscall_cancel.S b/sysdeps/unix/sysv/linux/hppa/syscall_cancel.S
new file mode 100644
index 0000000..b9c1974
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/hppa/syscall_cancel.S
@@ -0,0 +1,81 @@
+/* Cancellable syscall wrapper. Linux/hppa version.
+ Copyright (C) 2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library. If not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <sysdep.h>
+#include <descr-const.h>
+
+/* long int __syscall_cancel_arch (int *cancelhandling,
+ long int nr,
+ long int arg1,
+ long int arg2,
+ long int arg3,
+ long int arg4,
+ long int arg5,
+ long int arg6) */
+
+ .text
+ENTRY(__syscall_cancel_arch)
+ stw %r2,-20(%r30)
+ ldo 128(%r30),%r30
+ cfi_def_cfa_offset (-128)
+ cfi_offset (2, -20)
+ ldw -180(%r30),%r28
+ copy %r26,%r20
+ stw %r28,-108(%r30)
+ ldw -184(%r30),%r28
+ copy %r24,%r26
+ stw %r28,-112(%r30)
+ ldw -188(%r30),%r28
+ stw %r28,-116(%r30)
+ ldw -192(%r30),%r28
+ stw %r4,-104(%r30)
+ stw %r28,-120(%r30)
+ copy %r25,%r28
+ copy %r23,%r25
+#ifdef __PIC__
+ stw %r19,-32(%r30)
+#endif
+ cfi_offset (4, 24)
+
+ .global __syscall_cancel_arch_start
+__syscall_cancel_arch_start:
+ ldw 0(%r20),%r20
+ bb,< %r20,31-TCB_CANCELED_BIT,1f
+ ldw -120(%r30),%r21
+ ldw -116(%r30),%r22
+ ldw -112(%r30),%r23
+ ldw -108(%r30),%r24
+ copy %r19, %r4
+ ble 0x100(%sr2, %r0)
+
+ .global __syscall_cancel_arch_end
+__syscall_cancel_arch_end:
+
+ copy %r28,%r20
+ copy %r4,%r19
+
+ ldw -148(%r30),%r2
+ ldw -104(%r30),%r4
+ bv %r0(%r2)
+ ldo -128(%r30),%r30
+1:
+ bl __syscall_do_cancel,%r2
+ nop
+ nop
+
+END(__syscall_cancel_arch)
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index c989b43..4fedf77 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -3005,6 +3005,8 @@ GLIBC_2.4 sys_errlist D 0x210
GLIBC_2.4 sys_nerr D 0x4
GLIBC_2.4 unlinkat F
GLIBC_2.4 unshare F
+GLIBC_2.41 sched_getattr F
+GLIBC_2.41 sched_setattr F
GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F
GLIBC_2.5 inet6_opt_find F
diff --git a/sysdeps/unix/sysv/linux/i386/syscall_cancel.S b/sysdeps/unix/sysv/linux/i386/syscall_cancel.S
new file mode 100644
index 0000000..46fb746
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/i386/syscall_cancel.S
@@ -0,0 +1,104 @@
+/* Cancellable syscall wrapper. Linux/i686 version.
+ Copyright (C) 2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <sysdep.h>
+#include <descr-const.h>
+
+/* long int [eax] __syscall_cancel_arch (int *cancelhandling [SP],
+ long int nr [SP+4],
+ long int arg1 [SP+8],
+ long int arg2 [SP+12],
+ long int arg3 [SP+16],
+ long int arg4 [SP+20],
+ long int arg5 [SP+24],
+ long int arg6 [SP+28]) */
+
+ENTRY (__syscall_cancel_arch)
+ pushl %ebp
+ cfi_def_cfa_offset (8)
+ cfi_offset (ebp, -8)
+ pushl %edi
+ cfi_def_cfa_offset (12)
+ cfi_offset (edi, -12)
+ pushl %esi
+ cfi_def_cfa_offset (16)
+ cfi_offset (esi, -16)
+ pushl %ebx
+ cfi_def_cfa_offset (20)
+ cfi_offset (ebx, -20)
+
+ .global __syscall_cancel_arch_start
+__syscall_cancel_arch_start:
+
+ /* if (*cancelhandling & CANCELED_BITMASK)
+ __syscall_do_cancel() */
+ movl 20(%esp), %eax
+ testb $TCB_CANCELED_BITMASK, (%eax)
+ jne 1f
+
+ /* Issue a 6 argument syscall, the nr [%eax] being the syscall
+ number. */
+ movl 24(%esp), %eax
+ movl 28(%esp), %ebx
+ movl 32(%esp), %ecx
+ movl 36(%esp), %edx
+ movl 40(%esp), %esi
+ movl 44(%esp), %edi
+ movl 48(%esp), %ebp
+
+ /* We can not use the vDSO helper for syscall (__kernel_vsyscall)
+ because the returned PC from kernel will point to the vDSO page
+ instead of the expected __syscall_cancel_arch_{start,end}
+ marks. */
+ int $0x80
+
+ .global __syscall_cancel_arch_end
+__syscall_cancel_arch_end:
+
+ popl %ebx
+ cfi_restore (ebx)
+ cfi_def_cfa_offset (16)
+ popl %esi
+ cfi_restore (esi)
+ cfi_def_cfa_offset (12)
+ popl %edi
+ cfi_restore (edi)
+ cfi_def_cfa_offset (8)
+ popl %ebp
+ cfi_restore (ebp)
+ cfi_def_cfa_offset (4)
+ ret
+
+1:
+ /* Although the __syscall_do_cancel do not return, we need to stack
+ being set correctly for unwind. */
+ popl %ebx
+ cfi_restore (ebx)
+ cfi_def_cfa_offset (16)
+ popl %esi
+ cfi_restore (esi)
+ cfi_def_cfa_offset (12)
+ popl %edi
+ cfi_restore (edi)
+ cfi_def_cfa_offset (8)
+ popl %ebp
+ cfi_restore (ebp)
+ cfi_def_cfa_offset (4)
+ jmp __syscall_do_cancel
+
+END (__syscall_cancel_arch)
diff --git a/sysdeps/unix/sysv/linux/include/bits/mman-shared.h b/sysdeps/unix/sysv/linux/include/bits/mman-shared.h
new file mode 100644
index 0000000..7c14b5d
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/include/bits/mman-shared.h
@@ -0,0 +1,16 @@
+#include <sysdeps/unix/sysv/linux/bits/mman-shared.h>
+
+#ifndef _ISOMAC
+
+extern __typeof (pkey_alloc) __pkey_alloc;
+libc_hidden_proto (__pkey_alloc)
+extern __typeof (pkey_free) __pkey_free;
+libc_hidden_proto (__pkey_free)
+extern __typeof (pkey_mprotect) __pkey_mprotect;
+libc_hidden_proto (__pkey_mprotect)
+extern __typeof (pkey_get) __pkey_get;
+libc_hidden_proto (__pkey_get)
+extern __typeof (pkey_set) __pkey_set;
+libc_hidden_proto (__pkey_set)
+
+#endif
diff --git a/sysdeps/unix/sysv/linux/internal-signals.h b/sysdeps/unix/sysv/linux/internal-signals.h
index a6fae59..6e3a3d7 100644
--- a/sysdeps/unix/sysv/linux/internal-signals.h
+++ b/sysdeps/unix/sysv/linux/internal-signals.h
@@ -90,6 +90,15 @@ internal_signal_restore_set (const internal_sigset_t *set)
__NSIG_BYTES);
}
+static inline void
+internal_signal_unblock_signal (int sig)
+{
+ internal_sigset_t set;
+ internal_sigemptyset (&set);
+ internal_sigaddset (&set, sig);
+ INTERNAL_SYSCALL_CALL (rt_sigprocmask, SIG_UNBLOCK, &set, NULL,
+ __NSIG_BYTES);
+}
/* It is used on timer_create code directly on sigwaitinfo call, so it can not
use the internal_sigset_t definitions. */
diff --git a/sysdeps/unix/sysv/linux/internal-sigset.h b/sysdeps/unix/sysv/linux/internal-sigset.h
index 5d7020b..4b19aff 100644
--- a/sysdeps/unix/sysv/linux/internal-sigset.h
+++ b/sysdeps/unix/sysv/linux/internal-sigset.h
@@ -21,7 +21,7 @@
#include <sigsetops.h>
-typedef struct
+typedef struct _internal_sigset_t
{
unsigned long int __val[__NSIG_WORDS];
} internal_sigset_t;
diff --git a/sysdeps/unix/sysv/linux/loongarch/fixup-asm-unistd.h b/sysdeps/unix/sysv/linux/loongarch/fixup-asm-unistd.h
new file mode 100644
index 0000000..0062756
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/loongarch/fixup-asm-unistd.h
@@ -0,0 +1,21 @@
+/* Regularize <asm/unistd.h> definitions. LoongArch version.
+ Copyright (C) 2024 Free Software Foundation, Inc.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+/* To avoid the messy usage of the fstat, newfstatat, and statx system calls, we
+only use statx. */
+#undef __NR_fstat
+#undef __NR_newfstatat
diff --git a/sysdeps/unix/sysv/linux/loongarch/lp64/libc.abilist b/sysdeps/unix/sysv/linux/loongarch/lp64/libc.abilist
index 0023ec1..0024282 100644
--- a/sysdeps/unix/sysv/linux/loongarch/lp64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/loongarch/lp64/libc.abilist
@@ -2269,3 +2269,5 @@ GLIBC_2.39 stdc_trailing_zeros_ui F
GLIBC_2.39 stdc_trailing_zeros_ul F
GLIBC_2.39 stdc_trailing_zeros_ull F
GLIBC_2.39 stdc_trailing_zeros_us F
+GLIBC_2.41 sched_getattr F
+GLIBC_2.41 sched_setattr F
diff --git a/sysdeps/unix/sysv/linux/loongarch/syscall_cancel.S b/sysdeps/unix/sysv/linux/loongarch/syscall_cancel.S
new file mode 100644
index 0000000..edea963
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/loongarch/syscall_cancel.S
@@ -0,0 +1,50 @@
+/* Cancellable syscall wrapper. Linux/loongarch version.
+ Copyright (C) 2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <sysdep.h>
+#include <descr-const.h>
+
+ENTRY (__syscall_cancel_arch)
+
+ .global __syscall_cancel_arch_start
+__syscall_cancel_arch_start:
+
+ /* if (*cancelhandling & CANCELED_BITMASK)
+ __syscall_do_cancel() */
+ ld.w t0, a0, 0
+ andi t0, t0, TCB_CANCELED_BITMASK
+ bnez t0, 1f
+
+ /* Issue a 6 argument syscall. */
+ move t1, a1
+ move a0, a2
+ move a1, a3
+ move a2, a4
+ move a3, a5
+ move a4, a6
+ move a5, a7
+ move a7, t1
+ syscall 0
+
+ .global __syscall_cancel_arch_end
+__syscall_cancel_arch_end:
+ jr ra
+1:
+ b __syscall_do_cancel
+
+END (__syscall_cancel_arch)
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index d9bd6a9..142595e 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -2781,6 +2781,8 @@ GLIBC_2.4 xdrstdio_create F
GLIBC_2.4 xencrypt F
GLIBC_2.4 xprt_register F
GLIBC_2.4 xprt_unregister F
+GLIBC_2.41 sched_getattr F
+GLIBC_2.41 sched_setattr F
GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F
GLIBC_2.5 inet6_opt_find F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
index 439796d..85e7746 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -2948,6 +2948,8 @@ GLIBC_2.4 sys_errlist D 0x210
GLIBC_2.4 sys_nerr D 0x4
GLIBC_2.4 unlinkat F
GLIBC_2.4 unshare F
+GLIBC_2.41 sched_getattr F
+GLIBC_2.41 sched_setattr F
GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F
GLIBC_2.5 inet6_opt_find F
diff --git a/sysdeps/unix/sysv/linux/m68k/syscall_cancel.S b/sysdeps/unix/sysv/linux/m68k/syscall_cancel.S
new file mode 100644
index 0000000..8923bcc
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/m68k/syscall_cancel.S
@@ -0,0 +1,84 @@
+/* Cancellable syscall wrapper. Linux/m68k version.
+ Copyright (C) 2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <sysdep.h>
+#include <descr-const.h>
+
+/* long int __syscall_cancel_arch (int *cancelhandling,
+ __syscall_arg_t nr,
+ __syscall_arg_t arg1,
+ __syscall_arg_t arg2,
+ __syscall_arg_t arg3,
+ __syscall_arg_t arg4,
+ __syscall_arg_t arg5,
+ __syscall_arg_t arg6) */
+
+
+ENTRY (__syscall_cancel_arch)
+#ifdef __mcoldfire__
+ lea (-16,%sp),%sp
+ movem.l %d2-%d5,(%sp)
+#else
+ movem.l %d2-%d5,-(%sp)
+#endif
+ cfi_def_cfa_offset (20)
+ cfi_offset (2, -20)
+ cfi_offset (3, -16)
+ cfi_offset (4, -12)
+ cfi_offset (5, -8)
+
+ .global __syscall_cancel_arch_start
+__syscall_cancel_arch_start:
+
+ move.l 20(%sp),%a0
+ move.l (%a0),%d0
+#ifdef __mcoldfire__
+ move.w %d0,%ccr
+ jeq 1f
+#else
+ btst #TCB_CANCELED_BIT,%d0
+ jne 1f
+#endif
+
+ move.l 48(%sp),%a0
+ move.l 44(%sp),%d5
+ move.l 40(%sp),%d4
+ move.l 36(%sp),%d3
+ move.l 32(%sp),%d2
+ move.l 28(%sp),%d1
+ move.l 24(%sp),%d0
+ trap #0
+
+ .global __syscall_cancel_arch_end
+__syscall_cancel_arch_end:
+
+#ifdef __mcoldfire__
+ movem.l (%sp),%d2-%d5
+ lea (16,%sp),%sp
+#else
+ movem.l (%sp)+,%d2-%d5
+#endif
+ rts
+
+1:
+#ifdef PIC
+ bsr.l __syscall_do_cancel
+#else
+ jsr __syscall_do_cancel
+#endif
+END (__syscall_cancel_arch)
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index 1069d32..91dc1b8 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -2834,3 +2834,5 @@ GLIBC_2.39 stdc_trailing_zeros_ui F
GLIBC_2.39 stdc_trailing_zeros_ul F
GLIBC_2.39 stdc_trailing_zeros_ull F
GLIBC_2.39 stdc_trailing_zeros_us F
+GLIBC_2.41 sched_getattr F
+GLIBC_2.41 sched_setattr F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index 17abe08..3440e90 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
@@ -2831,3 +2831,5 @@ GLIBC_2.39 stdc_trailing_zeros_ui F
GLIBC_2.39 stdc_trailing_zeros_ul F
GLIBC_2.39 stdc_trailing_zeros_ull F
GLIBC_2.39 stdc_trailing_zeros_us F
+GLIBC_2.41 sched_getattr F
+GLIBC_2.41 sched_setattr F
diff --git a/sysdeps/unix/sysv/linux/microblaze/syscall_cancel.S b/sysdeps/unix/sysv/linux/microblaze/syscall_cancel.S
new file mode 100644
index 0000000..1f9d202
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/microblaze/syscall_cancel.S
@@ -0,0 +1,61 @@
+/* Cancellable syscall wrapper. Linux/microblaze version.
+ Copyright (C) 2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <sysdep.h>
+#include <descr-const.h>
+
+/* long int __syscall_cancel_arch (int *cancelhandling,
+ long int nr,
+ long int arg1,
+ long int arg2,
+ long int arg3,
+ long int arg4,
+ long int arg5,
+ long int arg6) */
+
+ENTRY (__syscall_cancel_arch)
+
+ .globl __syscall_cancel_arch_start
+__syscall_cancel_arch_start:
+
+ lwi r3,r5,0
+ andi r3,r3,TCB_CANCELED_BITMASK
+ bneid r3,1f
+ addk r12,r6,r0
+
+ addk r5,r7,r0
+ addk r6,r8,r0
+ addk r7,r9,r0
+ addk r8,r10,r0
+ lwi r9,r1,56
+ lwi r10,r1,60
+ brki r14,8
+
+ .globl __syscall_cancel_arch_end
+__syscall_cancel_arch_end:
+
+ nop
+ lwi r15,r1,0
+ rtsd r15,8
+ addik r1,r1,28
+
+1:
+ brlid r15, __syscall_do_cancel
+ nop
+
+END (__syscall_cancel_arch)
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index 799e508..5ee7b8c 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -2909,6 +2909,8 @@ GLIBC_2.4 renameat F
GLIBC_2.4 symlinkat F
GLIBC_2.4 unlinkat F
GLIBC_2.4 unshare F
+GLIBC_2.41 sched_getattr F
+GLIBC_2.41 sched_setattr F
GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F
GLIBC_2.5 inet6_opt_find F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index 1c10996..6cb6328 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -2907,6 +2907,8 @@ GLIBC_2.4 renameat F
GLIBC_2.4 symlinkat F
GLIBC_2.4 unlinkat F
GLIBC_2.4 unshare F
+GLIBC_2.41 sched_getattr F
+GLIBC_2.41 sched_setattr F
GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F
GLIBC_2.5 inet6_opt_find F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/syscall_cancel.S b/sysdeps/unix/sysv/linux/mips/mips32/syscall_cancel.S
new file mode 100644
index 0000000..eb3b2ed
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/mips32/syscall_cancel.S
@@ -0,0 +1,128 @@
+/* Cancellable syscall wrapper. Linux/mips32 version.
+ Copyright (C) 2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <sysdep.h>
+#include <sys/asm.h>
+#include <descr-const.h>
+
+/* long int __syscall_cancel_arch (int *cancelhandling,
+ __syscall_arg_t nr,
+ __syscall_arg_t arg1,
+ __syscall_arg_t arg2,
+ __syscall_arg_t arg3,
+ __syscall_arg_t arg4,
+ __syscall_arg_t arg5,
+ __syscall_arg_t arg6,
+ __syscall_arg_t arg7) */
+
+#define FRAME_SIZE 56
+
+NESTED (__syscall_cancel_arch, FRAME_SIZE, fp)
+ .mask 0xc0070000,-SZREG
+ .fmask 0x00000000,0
+
+ PTR_ADDIU sp, -FRAME_SIZE
+ cfi_def_cfa_offset (FRAME_SIZE)
+
+ sw fp, 48(sp)
+ sw ra, 52(sp)
+ sw s2, 44(sp)
+ sw s1, 40(sp)
+ sw s0, 36(sp)
+#ifdef __PIC__
+ .cprestore 16
+#endif
+ cfi_offset (ra, -4)
+ cfi_offset (fp, -8)
+ cfi_offset (s2, -12)
+ cfi_offset (s1, -16)
+ cfi_offset (s0, -20)
+
+ move fp ,sp
+ cfi_def_cfa_register (fp)
+
+ .globl __syscall_cancel_arch_start
+__syscall_cancel_arch_start:
+
+ lw v0, 0(a0)
+ andi v0, v0, TCB_CANCELED_BITMASK
+ bne v0, zero, 2f
+
+ addiu sp, sp, -16
+ addiu v0, sp, 16
+ sw v0, 24(fp)
+
+ move s0, a1
+ move a0, a2
+ move a1, a3
+ lw a2, 72(fp)
+ lw a3, 76(fp)
+ lw v0, 84(fp)
+ lw s1, 80(fp)
+ lw s2, 88(fp)
+
+ .set noreorder
+ subu sp, 32
+ sw s1, 16(sp)
+ sw v0, 20(sp)
+ sw s2, 24(sp)
+ move v0, s0
+ syscall
+
+ .globl __syscall_cancel_arch_end
+__syscall_cancel_arch_end:
+ addiu sp, sp, 32
+ .set reorder
+
+ beq a3, zero, 1f
+ subu v0, zero, v0
+1:
+ move sp, fp
+ cfi_remember_state
+ cfi_def_cfa_register (sp)
+ lw ra, 52(fp)
+ lw fp, 48(sp)
+ lw s2, 44(sp)
+ lw s1, 40(sp)
+ lw s0, 36(sp)
+
+ .set noreorder
+ .set nomacro
+ jr ra
+ addiu sp,sp,FRAME_SIZE
+
+ .set macro
+ .set reorder
+
+ cfi_def_cfa_offset (0)
+ cfi_restore (s0)
+ cfi_restore (s1)
+ cfi_restore (s2)
+ cfi_restore (fp)
+ cfi_restore (ra)
+
+2:
+ cfi_restore_state
+#ifdef __PIC__
+ PTR_LA t9, __syscall_do_cancel
+ jalr t9
+#else
+ jal __syscall_do_cancel
+#endif
+
+END (__syscall_cancel_arch)
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/sysdep.h b/sysdeps/unix/sysv/linux/mips/mips32/sysdep.h
index 1827caf..47a1b97 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/sysdep.h
+++ b/sysdeps/unix/sysv/linux/mips/mips32/sysdep.h
@@ -18,6 +18,10 @@
#ifndef _LINUX_MIPS_MIPS32_SYSDEP_H
#define _LINUX_MIPS_MIPS32_SYSDEP_H 1
+/* mips32 have cancelable syscalls with 7 arguments (currently only
+ sync_file_range). */
+#define HAVE_CANCELABLE_SYSCALL_WITH_7_ARGS 1
+
/* There is some commonality. */
#include <sysdeps/unix/sysv/linux/mips/sysdep.h>
#include <sysdeps/unix/sysv/linux/sysdep.h>
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index 03d9655..ae7474c 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -2915,6 +2915,8 @@ GLIBC_2.4 renameat F
GLIBC_2.4 symlinkat F
GLIBC_2.4 unlinkat F
GLIBC_2.4 unshare F
+GLIBC_2.41 sched_getattr F
+GLIBC_2.41 sched_setattr F
GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F
GLIBC_2.5 inet6_opt_find F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/syscall_types.h b/sysdeps/unix/sysv/linux/mips/mips64/n32/syscall_types.h
new file mode 100644
index 0000000..b3a8b0b
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/syscall_types.h
@@ -0,0 +1,28 @@
+/* Types and macros used for syscall issuing. MIPS64n32 version.
+ Copyright (C) 2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+#ifndef _SYSCALL_TYPES_H
+#define _SYSCALL_TYPES_H
+
+typedef long long int __syscall_arg_t;
+
+/* Convert X to a long long, without losing any bits if it is one
+ already or warning if it is a 32-bit pointer. */
+#define __SSC(__x) ((__syscall_arg_t) (__typeof__ ((__x) - (__x))) (__x))
+
+#endif
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index 05e402e..cdf040d 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
@@ -2817,6 +2817,8 @@ GLIBC_2.4 renameat F
GLIBC_2.4 symlinkat F
GLIBC_2.4 unlinkat F
GLIBC_2.4 unshare F
+GLIBC_2.41 sched_getattr F
+GLIBC_2.41 sched_setattr F
GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F
GLIBC_2.5 inet6_opt_find F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/syscall_cancel.S b/sysdeps/unix/sysv/linux/mips/mips64/syscall_cancel.S
new file mode 100644
index 0000000..cfc0596
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/mips64/syscall_cancel.S
@@ -0,0 +1,112 @@
+/* Cancellable syscall wrapper. Linux/mips64 version.
+ Copyright (C) 2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <sysdep.h>
+#include <sys/asm.h>
+#include <descr-const.h>
+
+/* long int __syscall_cancel_arch (int *cancelhandling,
+ __syscall_arg_t nr,
+ __syscall_arg_t arg1,
+ __syscall_arg_t arg2,
+ __syscall_arg_t arg3,
+ __syscall_arg_t arg4,
+ __syscall_arg_t arg5,
+ __syscall_arg_t arg6,
+ __syscall_arg_t arg7) */
+
+#define FRAME_SIZE 32
+
+ .text
+NESTED (__syscall_cancel_arch, FRAME_SIZE, ra)
+ .mask 0x90010000, -SZREG
+ .fmask 0x00000000, 0
+ LONG_ADDIU sp, sp, -FRAME_SIZE
+ cfi_def_cfa_offset (FRAME_SIZE)
+ sd gp, 16(sp)
+ cfi_offset (gp, -16)
+ lui gp, %hi(%neg(%gp_rel(__syscall_cancel_arch)))
+ LONG_ADDU gp, gp, t9
+ sd ra, 24(sp)
+ sd s0, 8(sp)
+ cfi_offset (ra, -8)
+ cfi_offset (s0, -24)
+ LONG_ADDIU gp, gp, %lo(%neg(%gp_rel(__syscall_cancel_arch)))
+
+ .global __syscall_cancel_arch_start
+__syscall_cancel_arch_start:
+
+ lw v0, 0(a0)
+ andi v0, v0, TCB_CANCELED_BITMASK
+ .set noreorder
+ .set nomacro
+ bne v0, zero, 2f
+ move s0, a1
+ .set macro
+ .set reorder
+
+ move a0, a2
+ move a1, a3
+ move a2, a4
+ move a3, a5
+ move a4, a6
+ move a5, a7
+
+ .set noreorder
+ move v0, s0
+ syscall
+ .set reorder
+
+ .global __syscall_cancel_arch_end
+__syscall_cancel_arch_end:
+
+ .set noreorder
+ .set nomacro
+#if __mips_isa_rev >= 6
+ beqzc $7, 1f
+#else
+ bnel a3, zero, 1f
+#endif
+ SUBU v0, zero, v0
+ .set macro
+ .set reorder
+
+1:
+ ld ra, 24(sp)
+ ld gp, 16(sp)
+ ld s0, 8(sp)
+
+ .set noreorder
+ .set nomacro
+ jr ra
+ LONG_ADDIU sp, sp, FRAME_SIZE
+ .set macro
+ .set reorder
+
+ cfi_remember_state
+ cfi_def_cfa_offset (0)
+ cfi_restore (s0)
+ cfi_restore (gp)
+ cfi_restore (ra)
+ .align 3
+2:
+ cfi_restore_state
+ LONG_L t9, %got_disp(__syscall_do_cancel)(gp)
+ .reloc 3f, R_MIPS_JALR, __syscall_do_cancel
+3: jalr t9
+END (__syscall_cancel_arch)
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/sysdep.h b/sysdeps/unix/sysv/linux/mips/mips64/sysdep.h
index 0a1711d..0438bed 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/sysdep.h
+++ b/sysdeps/unix/sysv/linux/mips/mips64/sysdep.h
@@ -44,15 +44,7 @@
#undef HAVE_INTERNAL_BRK_ADDR_SYMBOL
#define HAVE_INTERNAL_BRK_ADDR_SYMBOL 1
-#if _MIPS_SIM == _ABIN32
-/* Convert X to a long long, without losing any bits if it is one
- already or warning if it is a 32-bit pointer. */
-# define ARGIFY(X) ((long long int) (__typeof__ ((X) - (X))) (X))
-typedef long long int __syscall_arg_t;
-#else
-# define ARGIFY(X) ((long int) (X))
-typedef long int __syscall_arg_t;
-#endif
+#include <syscall_types.h>
/* Note that the original Linux syscall restart convention required the
instruction immediately preceding SYSCALL to initialize $v0 with the
@@ -120,7 +112,7 @@ typedef long int __syscall_arg_t;
long int _sys_result; \
\
{ \
- __syscall_arg_t _arg1 = ARGIFY (arg1); \
+ __syscall_arg_t _arg1 = __SSC (arg1); \
register __syscall_arg_t __s0 asm ("$16") __attribute__ ((unused))\
= (number); \
register __syscall_arg_t __v0 asm ("$2"); \
@@ -144,8 +136,8 @@ typedef long int __syscall_arg_t;
long int _sys_result; \
\
{ \
- __syscall_arg_t _arg1 = ARGIFY (arg1); \
- __syscall_arg_t _arg2 = ARGIFY (arg2); \
+ __syscall_arg_t _arg1 = __SSC (arg1); \
+ __syscall_arg_t _arg2 = __SSC (arg2); \
register __syscall_arg_t __s0 asm ("$16") __attribute__ ((unused))\
= (number); \
register __syscall_arg_t __v0 asm ("$2"); \
@@ -170,9 +162,9 @@ typedef long int __syscall_arg_t;
long int _sys_result; \
\
{ \
- __syscall_arg_t _arg1 = ARGIFY (arg1); \
- __syscall_arg_t _arg2 = ARGIFY (arg2); \
- __syscall_arg_t _arg3 = ARGIFY (arg3); \
+ __syscall_arg_t _arg1 = __SSC (arg1); \
+ __syscall_arg_t _arg2 = __SSC (arg2); \
+ __syscall_arg_t _arg3 = __SSC (arg3); \
register __syscall_arg_t __s0 asm ("$16") __attribute__ ((unused))\
= (number); \
register __syscall_arg_t __v0 asm ("$2"); \
@@ -199,10 +191,10 @@ typedef long int __syscall_arg_t;
long int _sys_result; \
\
{ \
- __syscall_arg_t _arg1 = ARGIFY (arg1); \
- __syscall_arg_t _arg2 = ARGIFY (arg2); \
- __syscall_arg_t _arg3 = ARGIFY (arg3); \
- __syscall_arg_t _arg4 = ARGIFY (arg4); \
+ __syscall_arg_t _arg1 = __SSC (arg1); \
+ __syscall_arg_t _arg2 = __SSC (arg2); \
+ __syscall_arg_t _arg3 = __SSC (arg3); \
+ __syscall_arg_t _arg4 = __SSC (arg4); \
register __syscall_arg_t __s0 asm ("$16") __attribute__ ((unused))\
= (number); \
register __syscall_arg_t __v0 asm ("$2"); \
@@ -229,11 +221,11 @@ typedef long int __syscall_arg_t;
long int _sys_result; \
\
{ \
- __syscall_arg_t _arg1 = ARGIFY (arg1); \
- __syscall_arg_t _arg2 = ARGIFY (arg2); \
- __syscall_arg_t _arg3 = ARGIFY (arg3); \
- __syscall_arg_t _arg4 = ARGIFY (arg4); \
- __syscall_arg_t _arg5 = ARGIFY (arg5); \
+ __syscall_arg_t _arg1 = __SSC (arg1); \
+ __syscall_arg_t _arg2 = __SSC (arg2); \
+ __syscall_arg_t _arg3 = __SSC (arg3); \
+ __syscall_arg_t _arg4 = __SSC (arg4); \
+ __syscall_arg_t _arg5 = __SSC (arg5); \
register __syscall_arg_t __s0 asm ("$16") __attribute__ ((unused))\
= (number); \
register __syscall_arg_t __v0 asm ("$2"); \
@@ -261,12 +253,12 @@ typedef long int __syscall_arg_t;
long int _sys_result; \
\
{ \
- __syscall_arg_t _arg1 = ARGIFY (arg1); \
- __syscall_arg_t _arg2 = ARGIFY (arg2); \
- __syscall_arg_t _arg3 = ARGIFY (arg3); \
- __syscall_arg_t _arg4 = ARGIFY (arg4); \
- __syscall_arg_t _arg5 = ARGIFY (arg5); \
- __syscall_arg_t _arg6 = ARGIFY (arg6); \
+ __syscall_arg_t _arg1 = __SSC (arg1); \
+ __syscall_arg_t _arg2 = __SSC (arg2); \
+ __syscall_arg_t _arg3 = __SSC (arg3); \
+ __syscall_arg_t _arg4 = __SSC (arg4); \
+ __syscall_arg_t _arg5 = __SSC (arg5); \
+ __syscall_arg_t _arg6 = __SSC (arg6); \
register __syscall_arg_t __s0 asm ("$16") __attribute__ ((unused))\
= (number); \
register __syscall_arg_t __v0 asm ("$2"); \
diff --git a/sysdeps/unix/sysv/linux/nios2/arch-syscall.h b/sysdeps/unix/sysv/linux/nios2/arch-syscall.h
index f94e212..b1d0fb6 100644
--- a/sysdeps/unix/sysv/linux/nios2/arch-syscall.h
+++ b/sysdeps/unix/sysv/linux/nios2/arch-syscall.h
@@ -24,6 +24,7 @@
#define __NR_clock_settime 112
#define __NR_clock_settime64 404
#define __NR_clone 220
+#define __NR_clone3 435
#define __NR_close 57
#define __NR_close_range 436
#define __NR_connect 203
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index 3aa8176..773d4c5 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -2873,3 +2873,5 @@ GLIBC_2.39 stdc_trailing_zeros_ui F
GLIBC_2.39 stdc_trailing_zeros_ul F
GLIBC_2.39 stdc_trailing_zeros_ull F
GLIBC_2.39 stdc_trailing_zeros_us F
+GLIBC_2.41 sched_getattr F
+GLIBC_2.41 sched_setattr F
diff --git a/sysdeps/unix/sysv/linux/nios2/syscall_cancel.S b/sysdeps/unix/sysv/linux/nios2/syscall_cancel.S
new file mode 100644
index 0000000..19d0795
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/nios2/syscall_cancel.S
@@ -0,0 +1,95 @@
+/* Cancellable syscall wrapper. Linux/nios2 version.
+ Copyright (C) 2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <sysdep.h>
+#include <descr-const.h>
+
+/* long int __syscall_cancel_arch (int *cancelhandling,
+ __syscall_arg_t nr,
+ __syscall_arg_t arg1,
+ __syscall_arg_t arg2,
+ __syscall_arg_t arg3,
+ __syscall_arg_t arg4,
+ __syscall_arg_t arg5,
+ __syscall_arg_t arg6) */
+
+ENTRY (__syscall_cancel_arch)
+#ifdef SHARED
+ addi sp, sp, -8
+ stw r22, 0(sp)
+ nextpc r22
+1:
+ movhi r8, %hiadj(_gp_got - 1b)
+ addi r8, r8, %lo(_gp_got - 1b)
+ stw ra, 4(sp)
+ add r22, r22, r8
+#else
+ addi sp, sp, -4
+ cfi_def_cfa_offset (4)
+ stw ra, 0(sp)
+ cfi_offset (31, -4)
+#endif
+
+ .globl __syscall_cancel_arch_start
+__syscall_cancel_arch_start:
+ ldw r3, 0(r4)
+ andi r3, r3, TCB_CANCELED_BITMASK
+ bne r3, zero, 3f
+ mov r10, r6
+ mov r2, r5
+#ifdef SHARED
+# define STACK_ADJ 4
+#else
+# define STACK_ADJ 0
+#endif
+ ldw r9, (16 + STACK_ADJ)(sp)
+ mov r5, r7
+ ldw r8, (12 + STACK_ADJ)(sp)
+ ldw r7, (8 + STACK_ADJ)(sp)
+ ldw r6, (4 + STACK_ADJ)(sp)
+ mov r4, r10
+ trap
+
+ .globl __syscall_cancel_arch_end
+__syscall_cancel_arch_end:
+ beq r7, zero, 2f
+ sub r2, zero, r2
+2:
+#ifdef SHARED
+ ldw ra, 4(sp)
+ ldw r22, 0(sp)
+ addi sp, sp, 8
+#else
+ ldw ra, (0 + STACK_ADJ)(sp)
+ cfi_remember_state
+ cfi_restore (31)
+ addi sp, sp, 4
+ cfi_def_cfa_offset (0)
+#endif
+ ret
+
+3:
+#ifdef SHARED
+ ldw r2, %call(__syscall_do_cancel)(r22)
+ callr r2
+#else
+ cfi_restore_state
+ call __syscall_do_cancel
+#endif
+
+END (__syscall_cancel_arch)
diff --git a/sysdeps/unix/sysv/linux/olddirent.h b/sysdeps/unix/sysv/linux/olddirent.h
index 239f790..065ca41 100644
--- a/sysdeps/unix/sysv/linux/olddirent.h
+++ b/sysdeps/unix/sysv/linux/olddirent.h
@@ -34,8 +34,6 @@ extern struct __old_dirent64 *__old_readdir64 (DIR *__dirp);
libc_hidden_proto (__old_readdir64);
extern int __old_readdir64_r (DIR *__dirp, struct __old_dirent64 *__entry,
struct __old_dirent64 **__result);
-extern __ssize_t __old_getdents64 (int __fd, char *__buf, size_t __nbytes)
- attribute_hidden;
int __old_scandir64 (const char * __dir,
struct __old_dirent64 *** __namelist,
int (*__selector) (const struct __old_dirent64 *),
diff --git a/sysdeps/unix/sysv/linux/or1k/libc.abilist b/sysdeps/unix/sysv/linux/or1k/libc.abilist
index 959e59e..c356a11 100644
--- a/sysdeps/unix/sysv/linux/or1k/libc.abilist
+++ b/sysdeps/unix/sysv/linux/or1k/libc.abilist
@@ -2259,3 +2259,5 @@ GLIBC_2.40 getcontext F
GLIBC_2.40 makecontext F
GLIBC_2.40 setcontext F
GLIBC_2.40 swapcontext F
+GLIBC_2.41 sched_getattr F
+GLIBC_2.41 sched_setattr F
diff --git a/sysdeps/unix/sysv/linux/or1k/syscall_cancel.S b/sysdeps/unix/sysv/linux/or1k/syscall_cancel.S
new file mode 100644
index 0000000..876f5e0
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/or1k/syscall_cancel.S
@@ -0,0 +1,63 @@
+/* Cancellable syscall wrapper. Linux/or1k version.
+ Copyright (C) 2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <sysdep.h>
+#include <descr-const.h>
+
+ENTRY (__syscall_cancel_arch)
+ l.addi r1, r1, -4
+ cfi_def_cfa_offset (4)
+ l.sw 0(r1), r9
+ cfi_offset (9, -4)
+
+ .global __syscall_cancel_arch_start
+__syscall_cancel_arch_start:
+
+ /* if (*cancelhandling & CANCELED_BITMASK)
+ __syscall_do_cancel() */
+ l.movhi r19, hi(0)
+ l.lwz r17, 0(r3)
+ l.andi r17, r17, 8
+ l.sfeq r17, r19
+ l.bnf 1f
+
+ /* Issue a 6 argument syscall. */
+ l.or r11, r4, r4
+ l.or r3, r5, r5
+ l.or r4, r6, r6
+ l.or r5, r7, r7
+ l.or r6, r8, r8
+ l.lwz r7, 4(r1)
+ l.lwz r8, 8(r1)
+ l.sys 1
+ l.nop
+
+ .global __syscall_cancel_arch_end
+__syscall_cancel_arch_end:
+
+ l.lwz r9, 0(r1)
+ l.jr r9
+ l.addi r1, r1, 4
+ cfi_remember_state
+ cfi_def_cfa_offset (0)
+ cfi_restore (9)
+1:
+ cfi_restore_state
+ l.jal __syscall_do_cancel
+ l.nop
+END (__syscall_cancel_arch)
diff --git a/sysdeps/unix/sysv/linux/pkey_get.c b/sysdeps/unix/sysv/linux/pkey_get.c
index 743bd09..ed9b629 100644
--- a/sysdeps/unix/sysv/linux/pkey_get.c
+++ b/sysdeps/unix/sysv/linux/pkey_get.c
@@ -17,10 +17,13 @@
<https://www.gnu.org/licenses/>. */
#include <errno.h>
+#include <sys/mman.h>
int
-pkey_get (int key)
+__pkey_get (int key)
{
__set_errno (ENOSYS);
return -1;
}
+libc_hidden_def (__pkey_get)
+weak_alias (__pkey_get, pkey_get)
diff --git a/sysdeps/unix/sysv/linux/pkey_mprotect.c b/sysdeps/unix/sysv/linux/pkey_mprotect.c
index b7afa79..e321a7e 100644
--- a/sysdeps/unix/sysv/linux/pkey_mprotect.c
+++ b/sysdeps/unix/sysv/linux/pkey_mprotect.c
@@ -22,7 +22,7 @@
#include <sysdep.h>
int
-pkey_mprotect (void *addr, size_t len, int prot, int pkey)
+__pkey_mprotect (void *addr, size_t len, int prot, int pkey)
{
if (pkey == -1)
/* If the key is -1, the system call is precisely equivalent to
@@ -30,3 +30,5 @@ pkey_mprotect (void *addr, size_t len, int prot, int pkey)
return __mprotect (addr, len, prot);
return INLINE_SYSCALL_CALL (pkey_mprotect, addr, len, prot, pkey);
}
+libc_hidden_def (__pkey_mprotect)
+weak_alias (__pkey_mprotect, pkey_mprotect)
diff --git a/sysdeps/unix/sysv/linux/pkey_set.c b/sysdeps/unix/sysv/linux/pkey_set.c
index d5d59e3..30463ef 100644
--- a/sysdeps/unix/sysv/linux/pkey_set.c
+++ b/sysdeps/unix/sysv/linux/pkey_set.c
@@ -17,10 +17,13 @@
<https://www.gnu.org/licenses/>. */
#include <errno.h>
+#include <sys/mman.h>
int
-pkey_set (int key, unsigned int access_rights)
+__pkey_set (int key, unsigned int access_rights)
{
__set_errno (ENOSYS);
return -1;
}
+libc_hidden_def (__pkey_set)
+weak_alias (__pkey_set, pkey_set)
diff --git a/sysdeps/unix/sysv/linux/powerpc/cancellation-pc-check.h b/sysdeps/unix/sysv/linux/powerpc/cancellation-pc-check.h
new file mode 100644
index 0000000..1175e1a
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/powerpc/cancellation-pc-check.h
@@ -0,0 +1,65 @@
+/* Architecture specific code for pthread cancellation handling.
+ Linux/PowerPC version.
+ Copyright (C) 2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#ifndef _NPTL_CANCELLATION_PC_CHECK
+#define _NPTL_CANCELLATION_PC_CHECK
+
+#include <sigcontextinfo.h>
+
+/* For syscalls with side-effects (e.g read that might return partial read),
+ the kernel cannot restart the syscall when interrupted by a signal, it must
+ return from the call with whatever partial result. In this case, the saved
+ program counter is set just after the syscall instruction, so the SIGCANCEL
+ handler should not act on cancellation.
+
+ The __syscall_cancel_arch function, used for all cancellable syscalls,
+ contains two extra markers, __syscall_cancel_arch_start and
+ __syscall_cancel_arch_end. The former points to just before the initial
+ conditional branch that checks if the thread has received a cancellation
+ request, while former points to the instruction after the one responsible
+ to issue the syscall.
+
+ The function check if the program counter (PC) from ucontext_t CTX is
+ within the start and then end boundary from the __syscall_cancel_arch
+ bridge. Return TRUE if the PC is within the boundary, meaning the
+ syscall does not have any side effects; or FALSE otherwise. */
+
+static __always_inline bool
+cancellation_pc_check (void *ctx)
+{
+ /* Both are defined in syscall_cancel.S. */
+ extern const char __syscall_cancel_arch_start[1];
+ extern const char __syscall_cancel_arch_end_sc[1];
+#if defined(USE_PPC_SVC) && defined(__powerpc64__)
+ extern const char __syscall_cancel_arch_end_svc[1];
+#endif
+
+ uintptr_t pc = sigcontext_get_pc (ctx);
+
+ return pc >= (uintptr_t) __syscall_cancel_arch_start
+#if defined(USE_PPC_SVC) && defined(__powerpc64__)
+ && THREAD_GET_HWCAP() & PPC_FEATURE2_SCV
+ ? pc < (uintptr_t) __syscall_cancel_arch_end_sc
+ : pc < (uintptr_t) __syscall_cancel_arch_end_svc;
+#else
+ && pc < (uintptr_t) __syscall_cancel_arch_end_sc;
+#endif
+}
+
+#endif
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index 9714305..7937f94 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -3138,6 +3138,8 @@ GLIBC_2.4 wcstold F
GLIBC_2.4 wcstold_l F
GLIBC_2.4 wprintf F
GLIBC_2.4 wscanf F
+GLIBC_2.41 sched_getattr F
+GLIBC_2.41 sched_setattr F
GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F
GLIBC_2.5 inet6_opt_find F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index 0beb52c..d6e35f3 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -3183,6 +3183,8 @@ GLIBC_2.4 wcstold F
GLIBC_2.4 wcstold_l F
GLIBC_2.4 wprintf F
GLIBC_2.4 wscanf F
+GLIBC_2.41 sched_getattr F
+GLIBC_2.41 sched_setattr F
GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F
GLIBC_2.5 inet6_opt_find F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
index cfc2ebd..2268d68 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
@@ -2892,6 +2892,8 @@ GLIBC_2.4 wcstold F
GLIBC_2.4 wcstold_l F
GLIBC_2.4 wprintf F
GLIBC_2.4 wscanf F
+GLIBC_2.41 sched_getattr F
+GLIBC_2.41 sched_setattr F
GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F
GLIBC_2.5 inet6_opt_find F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
index 8c9efc5..7f61b14 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
@@ -2968,3 +2968,5 @@ GLIBC_2.39 stdc_trailing_zeros_ui F
GLIBC_2.39 stdc_trailing_zeros_ul F
GLIBC_2.39 stdc_trailing_zeros_ull F
GLIBC_2.39 stdc_trailing_zeros_us F
+GLIBC_2.41 sched_getattr F
+GLIBC_2.41 sched_setattr F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/pkey_get.c b/sysdeps/unix/sysv/linux/powerpc/powerpc64/pkey_get.c
index 217ecd0..ac9ea3a 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/pkey_get.c
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/pkey_get.c
@@ -21,7 +21,7 @@
#include <sys/mman.h>
int
-pkey_get (int key)
+__pkey_get (int key)
{
if (key < 0 || key > PKEY_MAX)
{
@@ -40,3 +40,5 @@ pkey_get (int key)
return PKEY_DISABLE_WRITE;
return 0;
}
+libc_hidden_def (__pkey_get)
+weak_alias (__pkey_get, pkey_get)
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/pkey_set.c b/sysdeps/unix/sysv/linux/powerpc/powerpc64/pkey_set.c
index cc67b0a..ac10b5d 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/pkey_set.c
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/pkey_set.c
@@ -21,7 +21,7 @@
#include <sys/mman.h>
int
-pkey_set (int key, unsigned int rights)
+__pkey_set (int key, unsigned int rights)
{
if (key < 0 || key > PKEY_MAX || rights > 3)
{
@@ -46,3 +46,5 @@ pkey_set (int key, unsigned int rights)
pkey_write (amr);
return 0;
}
+libc_hidden_def (__pkey_set)
+weak_alias (__pkey_set, pkey_set)
diff --git a/sysdeps/unix/sysv/linux/powerpc/syscall_cancel.S b/sysdeps/unix/sysv/linux/powerpc/syscall_cancel.S
new file mode 100644
index 0000000..1f119d0
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/powerpc/syscall_cancel.S
@@ -0,0 +1,86 @@
+/* Cancellable syscall wrapper. Linux/powerpc version.
+ Copyright (C) 2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <sysdep.h>
+#include <descr-const.h>
+
+/* long int [r3] __syscall_cancel_arch (int *cancelhandling [r3],
+ long int nr [r4],
+ long int arg1 [r5],
+ long int arg2 [r6],
+ long int arg3 [r7],
+ long int arg4 [r8],
+ long int arg5 [r9],
+ long int arg6 [r10]) */
+
+ENTRY (__syscall_cancel_arch)
+
+ .globl __syscall_cancel_arch_start
+__syscall_cancel_arch_start:
+
+ /* if (*cancelhandling & CANCELED_BITMASK)
+ __syscall_do_cancel() */
+ lwz r0,0(r3)
+ andi. r0,r0,TCB_CANCELED_BITMASK
+ bne 1f
+
+ /* Issue a 6 argument syscall, the nr [r4] being the syscall
+ number. */
+ mr r0,r4
+ mr r3,r5
+ mr r4,r6
+ mr r5,r7
+ mr r6,r8
+ mr r7,r9
+ mr r8,r10
+
+#if defined(USE_PPC_SVC) && defined(__powerpc64__)
+ CHECK_SCV_SUPPORT r9 0f
+
+ stdu r1, -SCV_FRAME_SIZE(r1)
+ cfi_adjust_cfa_offset (SCV_FRAME_SIZE)
+ .machine "push"
+ .machine "power9"
+ scv 0
+ .machine "pop"
+ .globl __syscall_cancel_arch_end_svc
+__syscall_cancel_arch_end_svc:
+ ld r9, SCV_FRAME_SIZE + FRAME_LR_SAVE(r1)
+ mtlr r9
+ addi r1, r1, SCV_FRAME_SIZE
+ cfi_restore (lr)
+ li r9, -4095
+ cmpld r3, r9
+ bnslr+
+ neg r3,r3
+ blr
+0:
+#endif
+ sc
+ .globl __syscall_cancel_arch_end_sc
+__syscall_cancel_arch_end_sc:
+ bnslr+
+ neg r3,r3
+ blr
+
+ /* Although the __syscall_do_cancel do not return, we need to stack
+ being set correctly for unwind. */
+1:
+ TAIL_CALL_NO_RETURN (__syscall_do_cancel)
+
+END (__syscall_cancel_arch)
diff --git a/sysdeps/unix/sysv/linux/readdir64.c b/sysdeps/unix/sysv/linux/readdir64.c
index e6f5108..e6b8867 100644
--- a/sysdeps/unix/sysv/linux/readdir64.c
+++ b/sysdeps/unix/sysv/linux/readdir64.c
@@ -26,17 +26,13 @@
#undef __readdir
#undef readdir
-/* Read a directory entry from DIRP. */
-struct dirent64 *
-__readdir64 (DIR *dirp)
+/* Read a directory entry from DIRP. No locking. */
+static struct dirent64 *
+__readdir64_unlocked (DIR *dirp)
{
struct dirent64 *dp;
int saved_errno = errno;
-#if IS_IN (libc)
- __libc_lock_lock (dirp->lock);
-#endif
-
if (dirp->offset >= dirp->size)
{
/* We've emptied out our buffer. Refill it. */
@@ -53,9 +49,6 @@ __readdir64 (DIR *dirp)
do not set errno in that case, to indicate success. */
if (bytes == 0 || errno == ENOENT)
__set_errno (saved_errno);
-#if IS_IN (libc)
- __libc_lock_unlock (dirp->lock);
-#endif
return NULL;
}
dirp->size = (size_t) bytes;
@@ -68,10 +61,16 @@ __readdir64 (DIR *dirp)
dirp->offset += dp->d_reclen;
dirp->filepos = dp->d_off;
-#if IS_IN (libc)
- __libc_lock_unlock (dirp->lock);
-#endif
+ return dp;
+}
+/* Read a directory entry from DIRP. */
+struct dirent64 *
+__readdir64 (DIR *dirp)
+{
+ __libc_lock_lock (dirp->lock);
+ struct dirent64 *dp = __readdir64_unlocked (dirp);
+ __libc_lock_unlock (dirp->lock);
return dp;
}
libc_hidden_def (__readdir64)
@@ -99,45 +98,54 @@ __old_readdir64 (DIR *dirp)
struct __old_dirent64 *dp;
int saved_errno = errno;
-#if IS_IN (libc)
__libc_lock_lock (dirp->lock);
-#endif
- if (dirp->offset >= dirp->size)
+ while (1)
{
- /* We've emptied out our buffer. Refill it. */
+ errno = 0;
+ struct dirent64 *newdp = __readdir64_unlocked (dirp);
+ if (newdp == NULL)
+ {
+ if (errno == 0 && dirp->errcode != 0)
+ __set_errno (dirp->errcode);
+ else if (errno == 0)
+ __set_errno (saved_errno);
+ dp = NULL;
+ break;
+ }
- size_t maxread = dirp->allocation;
- ssize_t bytes;
+ /* Convert to the target layout. Use a separate struct and
+ memcpy to side-step aliasing issues. */
+ struct __old_dirent64 result;
+ result.d_ino = newdp->d_ino;
+ result.d_off = newdp->d_off;
+ result.d_reclen = newdp->d_reclen;
+ result.d_type = newdp->d_type;
- bytes = __old_getdents64 (dirp->fd, dirp->data, maxread);
- if (bytes <= 0)
+ /* Check for ino_t overflow. */
+ if (__glibc_unlikely (result.d_ino != newdp->d_ino))
{
- /* Linux may fail with ENOENT on some file systems if the
- directory inode is marked as dead (deleted). POSIX
- treats this as a regular end-of-directory condition, so
- do not set errno in that case, to indicate success. */
- if (bytes == 0 || errno == ENOENT)
- __set_errno (saved_errno);
-#if IS_IN (libc)
- __libc_lock_unlock (dirp->lock);
-#endif
- return NULL;
+ dirp->errcode = ENAMETOOLONG;
+ continue;
}
- dirp->size = (size_t) bytes;
- /* Reset the offset into the buffer. */
- dirp->offset = 0;
- }
+ /* Overwrite the fixed-sized part. */
+ dp = (struct __old_dirent64 *) newdp;
+ memcpy (dp, &result, offsetof (struct __old_dirent64, d_name));
- dp = (struct __old_dirent64 *) &dirp->data[dirp->offset];
- dirp->offset += dp->d_reclen;
- dirp->filepos = dp->d_off;
+ /* Move the name. */
+ _Static_assert (offsetof (struct __old_dirent64, d_name)
+ <= offsetof (struct dirent64, d_name),
+ "old struct must be smaller");
+ if (offsetof (struct __old_dirent64, d_name)
+ != offsetof (struct dirent64, d_name))
+ memmove (dp->d_name, newdp->d_name, strlen (newdp->d_name) + 1);
-#if IS_IN (libc)
- __libc_lock_unlock (dirp->lock);
-#endif
+ __set_errno (saved_errno);
+ break;
+ }
+ __libc_lock_unlock (dirp->lock);
return dp;
}
libc_hidden_def (__old_readdir64)
diff --git a/sysdeps/unix/sysv/linux/readdir64_r.c b/sysdeps/unix/sysv/linux/readdir64_r.c
index e87882e..c42a161 100644
--- a/sysdeps/unix/sysv/linux/readdir64_r.c
+++ b/sysdeps/unix/sysv/linux/readdir64_r.c
@@ -37,7 +37,7 @@ __readdir64_r (DIR *dirp, struct dirent64 *entry, struct dirent64 **result)
__libc_lock_lock (dirp->lock);
- do
+ while (1)
{
if (dirp->offset >= dirp->size)
{
@@ -79,26 +79,21 @@ __readdir64_r (DIR *dirp, struct dirent64 *entry, struct dirent64 **result)
dirp->filepos = dp->d_off;
- if (reclen > offsetof (struct dirent64, d_name) + NAME_MAX + 1)
+ if (reclen <= offsetof (struct dirent64, d_name) + NAME_MAX + 1)
+ break;
+
+ /* The record is very long. It could still fit into the
+ caller-supplied buffer if we can skip padding at the end. */
+ size_t namelen = _D_EXACT_NAMLEN (dp);
+ if (namelen <= NAME_MAX)
{
- /* The record is very long. It could still fit into the
- caller-supplied buffer if we can skip padding at the
- end. */
- size_t namelen = _D_EXACT_NAMLEN (dp);
- if (namelen <= NAME_MAX)
- reclen = offsetof (struct dirent64, d_name) + namelen + 1;
- else
- {
- /* The name is too long. Ignore this file. */
- dirp->errcode = ENAMETOOLONG;
- dp->d_ino = 0;
- continue;
- }
+ reclen = offsetof (struct dirent64, d_name) + namelen + 1;
+ break;
}
- /* Skip deleted and ignored files. */
+ /* The name is too long. Ignore this file. */
+ dirp->errcode = ENAMETOOLONG;
}
- while (dp->d_ino == 0);
if (dp != NULL)
{
@@ -135,91 +130,37 @@ attribute_compat_text_section
__old_readdir64_r (DIR *dirp, struct __old_dirent64 *entry,
struct __old_dirent64 **result)
{
- struct __old_dirent64 *dp;
- size_t reclen;
- const int saved_errno = errno;
- int ret;
-
- __libc_lock_lock (dirp->lock);
-
- do
+ while (1)
{
- if (dirp->offset >= dirp->size)
- {
- /* We've emptied out our buffer. Refill it. */
-
- size_t maxread = dirp->allocation;
- ssize_t bytes;
-
- maxread = dirp->allocation;
-
- bytes = __old_getdents64 (dirp->fd, dirp->data, maxread);
- if (bytes <= 0)
- {
- /* On some systems getdents fails with ENOENT when the
- open directory has been rmdir'd already. POSIX.1
- requires that we treat this condition like normal EOF. */
- if (bytes < 0 && errno == ENOENT)
- {
- bytes = 0;
- __set_errno (saved_errno);
- }
- if (bytes < 0)
- dirp->errcode = errno;
-
- dp = NULL;
- break;
- }
- dirp->size = (size_t) bytes;
+ struct dirent64 new_entry;
+ struct dirent64 *newp;
+ int ret = __readdir64_r (dirp, &new_entry, &newp);
- /* Reset the offset into the buffer. */
- dirp->offset = 0;
+ if (ret != 0)
+ return ret;
+ else if (newp == NULL)
+ {
+ *result = NULL;
+ return 0;
}
-
- dp = (struct __old_dirent64 *) &dirp->data[dirp->offset];
-
- reclen = dp->d_reclen;
-
- dirp->offset += reclen;
-
- dirp->filepos = dp->d_off;
-
- if (reclen > offsetof (struct __old_dirent64, d_name) + NAME_MAX + 1)
+ else
{
- /* The record is very long. It could still fit into the
- caller-supplied buffer if we can skip padding at the
- end. */
- size_t namelen = _D_EXACT_NAMLEN (dp);
- if (namelen <= NAME_MAX)
- reclen = offsetof (struct __old_dirent64, d_name) + namelen + 1;
- else
+ entry->d_ino = newp->d_ino;
+ if (entry->d_ino != newp->d_ino)
{
- /* The name is too long. Ignore this file. */
- dirp->errcode = ENAMETOOLONG;
- dp->d_ino = 0;
+ dirp->errcode = EOVERFLOW;
continue;
}
+ size_t namelen = strlen (newp->d_name);
+ entry->d_off = newp->d_off;
+ entry->d_reclen = (offsetof (struct __old_dirent64, d_name)
+ + namelen + 1);
+ entry->d_type = newp->d_type;
+ memcpy (entry->d_name, newp->d_name, namelen + 1);
+ *result = entry;
+ return 0;
}
-
- /* Skip deleted and ignored files. */
}
- while (dp->d_ino == 0);
-
- if (dp != NULL)
- {
- *result = memcpy (entry, dp, reclen);
- entry->d_reclen = reclen;
- ret = 0;
- }
- else
- {
- *result = NULL;
- ret = dirp->errcode;
- }
-
- __libc_lock_unlock (dirp->lock);
-
- return ret;
}
compat_symbol (libc, __old_readdir64_r, readdir64_r, GLIBC_2_1);
diff --git a/sysdeps/unix/sysv/linux/readdir_r.c b/sysdeps/unix/sysv/linux/readdir_r.c
index ffd5262..1d59568 100644
--- a/sysdeps/unix/sysv/linux/readdir_r.c
+++ b/sysdeps/unix/sysv/linux/readdir_r.c
@@ -25,14 +25,22 @@ __readdir_r (DIR *dirp, struct dirent *entry, struct dirent **result)
{
struct dirent *dp;
size_t reclen;
+ int saved_errno = errno;
__libc_lock_lock (dirp->lock);
while (1)
{
+ /* If errno is changed from 0, the NULL return value indicates
+ an actual error. It overrides a pending ENAMETOOLONG error. */
+ __set_errno (0);
dp = __readdir_unlocked (dirp);
if (dp == NULL)
- break;
+ {
+ if (errno != 0)
+ dirp->errcode = errno;
+ break;
+ }
reclen = dp->d_reclen;
if (reclen <= offsetof (struct dirent, d_name) + NAME_MAX + 1)
@@ -61,6 +69,7 @@ __readdir_r (DIR *dirp, struct dirent *entry, struct dirent **result)
__libc_lock_unlock (dirp->lock);
+ __set_errno (saved_errno);
return dp != NULL ? 0 : dirp->errcode;
}
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
index 6397a9c..4187241 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
@@ -2512,3 +2512,5 @@ GLIBC_2.39 stdc_trailing_zeros_ul F
GLIBC_2.39 stdc_trailing_zeros_ull F
GLIBC_2.39 stdc_trailing_zeros_us F
GLIBC_2.40 __riscv_hwprobe F
+GLIBC_2.41 sched_getattr F
+GLIBC_2.41 sched_setattr F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
index 71bbf94..8935bec 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
@@ -2712,3 +2712,5 @@ GLIBC_2.39 stdc_trailing_zeros_ul F
GLIBC_2.39 stdc_trailing_zeros_ull F
GLIBC_2.39 stdc_trailing_zeros_us F
GLIBC_2.40 __riscv_hwprobe F
+GLIBC_2.41 sched_getattr F
+GLIBC_2.41 sched_setattr F
diff --git a/sysdeps/unix/sysv/linux/riscv/syscall_cancel.S b/sysdeps/unix/sysv/linux/riscv/syscall_cancel.S
new file mode 100644
index 0000000..742c748
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/riscv/syscall_cancel.S
@@ -0,0 +1,67 @@
+/* Cancellable syscall wrapper. Linux/riscv version.
+ Copyright (C) 2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <sysdep.h>
+#include <descr-const.h>
+
+/* long int __syscall_cancel_arch (int *cancelhandling,
+ __syscall_arg_t nr,
+ __syscall_arg_t arg1,
+ __syscall_arg_t arg2,
+ __syscall_arg_t arg3,
+ __syscall_arg_t arg4,
+ __syscall_arg_t arg5,
+ __syscall_arg_t arg6) */
+
+#ifdef SHARED
+ .option pic
+#else
+ .option nopic
+#endif
+
+ENTRY (__syscall_cancel_arch)
+
+ .globl __syscall_cancel_arch_start
+__syscall_cancel_arch_start:
+ lw t1, 0(a0)
+ /* if (*ch & CANCELED_BITMASK) */
+ andi t1, t1, TCB_CANCELED_BITMASK
+ bne t1, zero, 1f
+
+ mv t3, a1
+ mv a0, a2
+ mv a1, a3
+ mv a2, a4
+ mv a3, a5
+ mv a4, a6
+ mv a5, a7
+ mv a7, t3
+ scall
+
+ .globl __syscall_cancel_arch_end
+__syscall_cancel_arch_end:
+ ret
+
+1:
+ addi sp, sp, -16
+ cfi_def_cfa_offset (16)
+ REG_S ra, (16-SZREG)(sp)
+ cfi_offset (ra, -SZREG)
+ call __syscall_do_cancel
+
+END (__syscall_cancel_arch)
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index a7467e2..e69dc7c 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -3136,6 +3136,8 @@ GLIBC_2.4 wcstold F
GLIBC_2.4 wcstold_l F
GLIBC_2.4 wprintf F
GLIBC_2.4 wscanf F
+GLIBC_2.41 sched_getattr F
+GLIBC_2.41 sched_setattr F
GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F
GLIBC_2.5 inet6_opt_find F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/syscall_cancel.S b/sysdeps/unix/sysv/linux/s390/s390-32/syscall_cancel.S
new file mode 100644
index 0000000..9e0ad2a
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/syscall_cancel.S
@@ -0,0 +1,62 @@
+/* Cancellable syscall wrapper. Linux/s390 version.
+ Copyright (C) 2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <sysdep.h>
+#include <descr-const.h>
+
+/* long int __syscall_cancel_arch (int *cancelhandling,
+ __syscall_arg_t nr,
+ __syscall_arg_t arg1,
+ __syscall_arg_t arg2,
+ __syscall_arg_t arg3,
+ __syscall_arg_t arg4,
+ __syscall_arg_t arg5,
+ __syscall_arg_t arg6) */
+
+ENTRY (__syscall_cancel_arch)
+ stm %r6,%r7,24(%r15)
+ cfi_offset (%r6, -72)
+ cfi_offset (%r7, -68)
+
+ .globl __syscall_cancel_arch_start
+__syscall_cancel_arch_start:
+ /* if (*cancelhandling & CANCELED_BITMASK)
+ __syscall_do_cancel() */
+ tm 3(%r2),TCB_CANCELED_BITMASK
+ jne 1f
+
+ /* Issue a 6 argument syscall, the nr [%r1] being the syscall
+ number. */
+ lr %r1,%r3
+ lr %r2,%r4
+ lr %r3,%r5
+ lr %r4,%r6
+ lm %r5,%r7,96(%r15)
+ svc 0
+
+ .globl __syscall_cancel_arch_end
+__syscall_cancel_arch_end:
+ lm %r6,%r7,24(%r15)
+ cfi_remember_state
+ cfi_restore (%r7)
+ cfi_restore (%r6)
+ br %r14
+1:
+ cfi_restore_state
+ jg __syscall_do_cancel
+END (__syscall_cancel_arch)
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
index fd1cb29..7d86000 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
@@ -2929,6 +2929,8 @@ GLIBC_2.4 wcstold F
GLIBC_2.4 wcstold_l F
GLIBC_2.4 wprintf F
GLIBC_2.4 wscanf F
+GLIBC_2.41 sched_getattr F
+GLIBC_2.41 sched_setattr F
GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F
GLIBC_2.5 inet6_opt_find F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/syscall_cancel.S b/sysdeps/unix/sysv/linux/s390/s390-64/syscall_cancel.S
new file mode 100644
index 0000000..e1620ad
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/syscall_cancel.S
@@ -0,0 +1,62 @@
+/* Cancellable syscall wrapper. Linux/s390x version.
+ Copyright (C) 2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <sysdep.h>
+#include <descr-const.h>
+
+/* long int __syscall_cancel_arch (int *cancelhandling,
+ __syscall_arg_t nr,
+ __syscall_arg_t arg1,
+ __syscall_arg_t arg2,
+ __syscall_arg_t arg3,
+ __syscall_arg_t arg4,
+ __syscall_arg_t arg5,
+ __syscall_arg_t arg6) */
+
+ENTRY (__syscall_cancel_arch)
+ stmg %r6,%r7,48(%r15)
+ cfi_offset (%r6, -112)
+ cfi_offset (%r7, -104)
+
+ .globl __syscall_cancel_arch_start
+__syscall_cancel_arch_start:
+ /* if (*cancelhandling & CANCELED_BITMASK)
+ __syscall_do_cancel() */
+ tm 3(%r2),TCB_CANCELED_BITMASK
+ jne 1f
+
+ /* Issue a 6 argument syscall, the nr [%r1] being the syscall
+ number. */
+ lgr %r1,%r3
+ lgr %r2,%r4
+ lgr %r3,%r5
+ lgr %r4,%r6
+ lmg %r5,%r7,160(%r15)
+ svc 0
+
+ .globl __syscall_cancel_arch_end
+__syscall_cancel_arch_end:
+ lmg %r6,%r7,48(%r15)
+ cfi_remember_state
+ cfi_restore (%r7)
+ cfi_restore (%r6)
+ br %r14
+1:
+ cfi_restore_state
+ jg __syscall_do_cancel
+END (__syscall_cancel_arch)
diff --git a/sysdeps/unix/sysv/linux/sched_getattr.c b/sysdeps/unix/sysv/linux/sched_getattr.c
new file mode 100644
index 0000000..e6b9970
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/sched_getattr.c
@@ -0,0 +1,27 @@
+/* Reading scheduling policy and attributes.
+ Copyright (C) 2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public License as
+ published by the Free Software Foundation; either version 2.1 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+#include <sched.h>
+#include <sysdep.h>
+
+int
+sched_getattr (pid_t pid, struct sched_attr *attr, unsigned int size,
+ unsigned int flags)
+{
+ return INLINE_SYSCALL_CALL (sched_getattr, pid, attr, size, flags);
+}
diff --git a/sysdeps/unix/sysv/linux/sched_setattr.c b/sysdeps/unix/sysv/linux/sched_setattr.c
new file mode 100644
index 0000000..25403fb
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/sched_setattr.c
@@ -0,0 +1,26 @@
+/* Setting scheduling policy and attributes.
+ Copyright (C) 2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public License as
+ published by the Free Software Foundation; either version 2.1 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+#include <sched.h>
+#include <sysdep.h>
+
+int
+sched_setattr (pid_t pid, struct sched_attr *attr, unsigned int flags)
+{
+ return INLINE_SYSCALL_CALL (sched_setattr, pid, attr, flags);
+}
diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
index ff6e6b1..fcb8161 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
@@ -2828,6 +2828,8 @@ GLIBC_2.4 sys_errlist D 0x210
GLIBC_2.4 sys_nerr D 0x4
GLIBC_2.4 unlinkat F
GLIBC_2.4 unshare F
+GLIBC_2.41 sched_getattr F
+GLIBC_2.41 sched_setattr F
GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F
GLIBC_2.5 inet6_opt_find F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index 449d92b..3fd078d 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
@@ -2825,6 +2825,8 @@ GLIBC_2.4 sys_errlist D 0x210
GLIBC_2.4 sys_nerr D 0x4
GLIBC_2.4 unlinkat F
GLIBC_2.4 unshare F
+GLIBC_2.41 sched_getattr F
+GLIBC_2.41 sched_setattr F
GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F
GLIBC_2.5 inet6_opt_find F
diff --git a/sysdeps/unix/sysv/linux/sh/syscall_cancel.S b/sysdeps/unix/sysv/linux/sh/syscall_cancel.S
new file mode 100644
index 0000000..2afd239
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/sh/syscall_cancel.S
@@ -0,0 +1,126 @@
+/* Cancellable syscall wrapper. Linux/sh version.
+ Copyright (C) 2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <sysdep.h>
+#include <descr-const.h>
+
+/* long int __syscall_cancel_arch (int *cancelhandling,
+ long int nr,
+ long int arg1,
+ long int arg2,
+ long int arg3,
+ long int arg4,
+ long int arg5,
+ long int arg6) */
+
+ENTRY (__syscall_cancel_arch)
+
+#ifdef SHARED
+ mov.l r12,@-r15
+ cfi_def_cfa_offset (4)
+ cfi_offset (12, -4)
+ mova L(GT),r0
+ mov.l L(GT),r12
+ sts.l pr,@-r15
+ cfi_def_cfa_offset (8)
+ cfi_offset (17, -8)
+ add r0,r12
+#else
+ sts.l pr,@-r15
+ cfi_def_cfa_offset (4)
+ cfi_offset (17, -4)
+#endif
+
+ .globl __syscall_cancel_arch_start
+__syscall_cancel_arch_start:
+
+ /* if (*cancelhandling & CANCELED_BITMASK)
+ __syscall_do_cancel() */
+ mov.l @r4,r0
+ tst #TCB_CANCELED_BITMASK,r0
+ bf/s 1f
+
+ /* Issue a 6 argument syscall. */
+ mov r5,r3
+ mov r6,r4
+ mov r7,r5
+#ifdef SHARED
+ mov.l @(8,r15),r6
+ mov.l @(12,r15),r7
+ mov.l @(16,r15),r0
+ mov.l @(20,r15),r1
+#else
+ mov.l @(4,r15),r6
+ mov.l @(8,r15),r7
+ mov.l @(12,r15),r0
+ mov.l @(16,r15),r1
+#endif
+ trapa #0x16
+
+ .globl __syscall_cancel_arch_end
+__syscall_cancel_arch_end:
+
+ /* The additional or is a workaround for a hardware issue:
+ http://documentation.renesas.com/eng/products/mpumcu/tu/tnsh7456ae.pdf
+ */
+ or r0,r0
+ or r0,r0
+ or r0,r0
+ or r0,r0
+ or r0,r0
+
+ lds.l @r15+,pr
+ cfi_remember_state
+ cfi_restore (17)
+#ifdef SHARED
+ cfi_def_cfa_offset (4)
+ rts
+ mov.l @r15+,r12
+ cfi_def_cfa_offset (0)
+ cfi_restore (12)
+ .align 1
+1:
+ cfi_restore_state
+ mov.l L(SC),r1
+ bsrf r1
+L(M):
+ nop
+
+ .align 2
+L(GT):
+ .long _GLOBAL_OFFSET_TABLE_
+L(SC):
+ .long __syscall_do_cancel-(L(M)+2)
+#else
+ cfi_def_cfa_offset (0)
+ rts
+ nop
+
+ .align 1
+1:
+ cfi_restore_state
+ mov.l 2f,r1
+ jsr @r1
+ nop
+
+ .align 2
+2:
+ .long __syscall_do_cancel
+#endif
+
+END (__syscall_cancel_arch)
diff --git a/sysdeps/unix/sysv/linux/socketcall.h b/sysdeps/unix/sysv/linux/socketcall.h
index 537fa43..0efa5ee 100644
--- a/sysdeps/unix/sysv/linux/socketcall.h
+++ b/sysdeps/unix/sysv/linux/socketcall.h
@@ -88,14 +88,33 @@
sc_ret; \
})
-
-#define SOCKETCALL_CANCEL(name, args...) \
- ({ \
- int oldtype = LIBC_CANCEL_ASYNC (); \
- long int sc_ret = __SOCKETCALL (SOCKOP_##name, args); \
- LIBC_CANCEL_RESET (oldtype); \
- sc_ret; \
- })
+#define __SOCKETCALL_CANCEL1(__name, __a1) \
+ SYSCALL_CANCEL (socketcall, __name, \
+ ((long int [1]) { (long int) __a1 }))
+#define __SOCKETCALL_CANCEL2(__name, __a1, __a2) \
+ SYSCALL_CANCEL (socketcall, __name, \
+ ((long int [2]) { (long int) __a1, (long int) __a2 }))
+#define __SOCKETCALL_CANCEL3(__name, __a1, __a2, __a3) \
+ SYSCALL_CANCEL (socketcall, __name, \
+ ((long int [3]) { (long int) __a1, (long int) __a2, (long int) __a3 }))
+#define __SOCKETCALL_CANCEL4(__name, __a1, __a2, __a3, __a4) \
+ SYSCALL_CANCEL (socketcall, __name, \
+ ((long int [4]) { (long int) __a1, (long int) __a2, (long int) __a3, \
+ (long int) __a4 }))
+#define __SOCKETCALL_CANCEL5(__name, __a1, __a2, __a3, __a4, __a5) \
+ SYSCALL_CANCEL (socketcall, __name, \
+ ((long int [5]) { (long int) __a1, (long int) __a2, (long int) __a3, \
+ (long int) __a4, (long int) __a5 }))
+#define __SOCKETCALL_CANCEL6(__name, __a1, __a2, __a3, __a4, __a5, __a6) \
+ SYSCALL_CANCEL (socketcall, __name, \
+ ((long int [6]) { (long int) __a1, (long int) __a2, (long int) __a3, \
+ (long int) __a4, (long int) __a5, (long int) __a6 }))
+
+#define __SOCKETCALL_CANCEL(...) __SOCKETCALL_DISP (__SOCKETCALL_CANCEL,\
+ __VA_ARGS__)
+
+#define SOCKETCALL_CANCEL(name, args...) \
+ __SOCKETCALL_CANCEL (SOCKOP_##name, args)
#endif /* sys/socketcall.h */
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/clone.S b/sysdeps/unix/sysv/linux/sparc/sparc32/clone.S
index c9cf9bb..c84244f 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/clone.S
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/clone.S
@@ -29,7 +29,11 @@
ENTRY (__clone)
save %sp,-96,%sp
save %sp,-96,%sp
+#ifdef __sparcv9
flushw
+#else
+ ta 3
+#endif
restore
cfi_def_cfa_register(%fp)
cfi_window_save
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index e615be7..1ce1fe9 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -3157,6 +3157,8 @@ GLIBC_2.4 wcstold F
GLIBC_2.4 wcstold_l F
GLIBC_2.4 wprintf F
GLIBC_2.4 wscanf F
+GLIBC_2.41 sched_getattr F
+GLIBC_2.41 sched_setattr F
GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F
GLIBC_2.5 inet6_opt_find F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/syscall_cancel.S b/sysdeps/unix/sysv/linux/sparc/sparc32/syscall_cancel.S
new file mode 100644
index 0000000..0db93c7
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/syscall_cancel.S
@@ -0,0 +1,80 @@
+/* Cancellable syscall wrapper. Linux/sparc32 version.
+ Copyright (C) 2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <sysdep.h>
+#include <descr-const.h>
+
+/* long int __syscall_cancel_arch (int *cancelhandling,
+ long int nr,
+ long int arg1,
+ long int arg2,
+ long int arg3,
+ long int arg4,
+ long int arg5,
+ long int arg6) */
+
+ENTRY (__syscall_cancel_arch)
+ save %sp, -96, %sp
+
+ cfi_window_save
+ cfi_register (%o7, %i7)
+ cfi_def_cfa_register (%fp)
+
+ .globl __syscall_cancel_arch_start
+__syscall_cancel_arch_start:
+
+ /* if (*cancelhandling & CANCELED_BITMASK)
+ __syscall_do_cancel() */
+ ld [%i0], %g2
+ andcc %g2, TCB_CANCELED_BITMASK, %g0
+#ifdef __sparcv9
+ bne,pn %icc, 2f
+#else
+ bne 2f
+#endif
+ /* Issue a 6 argument syscall. */
+ mov %i1, %g1
+ mov %i2, %o0
+ mov %i3, %o1
+ mov %i4, %o2
+ mov %i5, %o3
+ ld [%fp+92], %o4
+ ld [%fp+96], %o5
+ ta 0x10
+
+ .globl __syscall_cancel_arch_end
+__syscall_cancel_arch_end:
+ bcc 1f
+ nop
+ sub %g0, %o0, %o0
+1:
+ mov %o0, %i0
+#ifdef __sparcv9
+ return %i7+8
+ nop
+#else
+ jmp %i7+8
+ restore
+#endif
+
+2:
+ call __syscall_do_cancel, 0
+ nop
+ nop
+
+END (__syscall_cancel_arch)
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
index bd36431..07507b8 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
@@ -2793,6 +2793,8 @@ GLIBC_2.4 sys_errlist D 0x430
GLIBC_2.4 sys_nerr D 0x4
GLIBC_2.4 unlinkat F
GLIBC_2.4 unshare F
+GLIBC_2.41 sched_getattr F
+GLIBC_2.41 sched_setattr F
GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F
GLIBC_2.5 inet6_opt_find F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/syscall_cancel.S b/sysdeps/unix/sysv/linux/sparc/sparc64/syscall_cancel.S
new file mode 100644
index 0000000..21b0728
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/syscall_cancel.S
@@ -0,0 +1,74 @@
+/* Cancellable syscall wrapper. Linux/sparc64 version.
+ Copyright (C) 2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <sysdep.h>
+#include <descr-const.h>
+
+ .register %g2, #scratch
+
+/* long int __syscall_cancel_arch (int *cancelhandling,
+ long int nr,
+ long int arg1,
+ long int arg2,
+ long int arg3,
+ long int arg4,
+ long int arg5,
+ long int arg6) */
+
+ENTRY (__syscall_cancel_arch)
+ save %sp, -176, %sp
+
+ cfi_window_save
+ cfi_register (%o7, %i7)
+ cfi_def_cfa_register (%fp)
+
+ .globl __syscall_cancel_arch_start
+__syscall_cancel_arch_start:
+
+ /* if (*cancelhandling & CANCELED_BITMASK)
+ __syscall_do_cancel() */
+ lduw [%i0], %g2
+ andcc %g2, TCB_CANCELED_BITMASK, %g0
+ bne,pn %xcc, 2f
+ /* Issue a 6 argument syscall. */
+ mov %i1, %g1
+ mov %i2, %o0
+ mov %i3, %o1
+ mov %i4, %o2
+ mov %i5, %o3
+ ldx [%fp + STACK_BIAS + 176], %o4
+ ldx [%fp + STACK_BIAS + 184], %o5
+ ta 0x6d
+
+ .global __syscall_cancel_arch_end
+__syscall_cancel_arch_end:
+
+ bcc,pt %xcc, 1f
+ nop
+ sub %g0, %o0, %o0
+1:
+ mov %o0, %i0
+ return %i7+8
+ nop
+
+2:
+ call __syscall_do_cancel, 0
+ nop
+ nop
+
+END (__syscall_cancel_arch)
diff --git a/sysdeps/unix/sysv/linux/spawni.c b/sysdeps/unix/sysv/linux/spawni.c
index f57e928..1edf62c 100644
--- a/sysdeps/unix/sysv/linux/spawni.c
+++ b/sysdeps/unix/sysv/linux/spawni.c
@@ -383,7 +383,11 @@ __spawnix (int *pid, const char *file,
args.pidfd = 0;
args.xflags = xflags;
- internal_signal_block_all (&args.oldmask);
+ /* Avoid the potential issues if caller sets a SIG_IGN for SIGABRT, calls
+ abort, and another thread issues posix_spawn just after the sigaction
+ returns. With default options (not setting POSIX_SPAWN_SETSIGDEF), the
+ process can still see SIG_DFL for SIGABRT, where it should be SIG_IGN. */
+ __abort_lock_rdlock (&args.oldmask);
/* The clone flags used will create a new child that will run in the same
memory space (CLONE_VM) and the execution of calling thread will be
@@ -474,7 +478,7 @@ __spawnix (int *pid, const char *file,
if ((ec == 0) && (pid != NULL))
*pid = use_pidfd ? args.pidfd : new_pid;
- internal_signal_restore_set (&args.oldmask);
+ __abort_lock_unlock (&args.oldmask);
__pthread_setcancelstate (state, NULL);
diff --git a/sysdeps/unix/sysv/linux/sys/pidfd.h b/sysdeps/unix/sysv/linux/sys/pidfd.h
index 9f88d29..85d9769 100644
--- a/sysdeps/unix/sysv/linux/sys/pidfd.h
+++ b/sysdeps/unix/sysv/linux/sys/pidfd.h
@@ -20,6 +20,7 @@
#include <fcntl.h>
#include <bits/types/siginfo_t.h>
+#include <sys/ioctl.h>
#define PIDFD_NONBLOCK O_NONBLOCK
#define PIDFD_THREAD O_EXCL
@@ -28,6 +29,19 @@
#define PIDFD_SIGNAL_THREAD_GROUP (1UL << 1)
#define PIDFD_SIGNAL_PROCESS_GROUP (1UL << 2)
+#define PIDFS_IOCTL_MAGIC 0xFF
+
+#define PIDFD_GET_CGROUP_NAMESPACE _IO(PIDFS_IOCTL_MAGIC, 1)
+#define PIDFD_GET_IPC_NAMESPACE _IO(PIDFS_IOCTL_MAGIC, 2)
+#define PIDFD_GET_MNT_NAMESPACE _IO(PIDFS_IOCTL_MAGIC, 3)
+#define PIDFD_GET_NET_NAMESPACE _IO(PIDFS_IOCTL_MAGIC, 4)
+#define PIDFD_GET_PID_NAMESPACE _IO(PIDFS_IOCTL_MAGIC, 5)
+#define PIDFD_GET_PID_FOR_CHILDREN_NAMESPACE _IO(PIDFS_IOCTL_MAGIC, 6)
+#define PIDFD_GET_TIME_NAMESPACE _IO(PIDFS_IOCTL_MAGIC, 7)
+#define PIDFD_GET_TIME_FOR_CHILDREN_NAMESPACE _IO(PIDFS_IOCTL_MAGIC, 8)
+#define PIDFD_GET_USER_NAMESPACE _IO(PIDFS_IOCTL_MAGIC, 9)
+#define PIDFD_GET_UTS_NAMESPACE _IO(PIDFS_IOCTL_MAGIC, 10)
+
/* Returns a file descriptor that refers to the process PID. The
close-on-exec is set on the file descriptor. */
extern int pidfd_open (__pid_t __pid, unsigned int __flags) __THROW;
diff --git a/sysdeps/unix/sysv/linux/syscall-names.list b/sysdeps/unix/sysv/linux/syscall-names.list
index 7871f93..aa5b479 100644
--- a/sysdeps/unix/sysv/linux/syscall-names.list
+++ b/sysdeps/unix/sysv/linux/syscall-names.list
@@ -21,8 +21,8 @@
# This file can list all potential system calls. The names are only
# used if the installed kernel headers also provide them.
-# The list of system calls is current as of Linux 6.10.
-kernel 6.10
+# The list of system calls is current as of Linux 6.11.
+kernel 6.11
FAST_atomic_update
FAST_cmpxchg
@@ -653,6 +653,7 @@ uname
unlink
unlinkat
unshare
+uretprobe
uselib
userfaultfd
usr26
diff --git a/sysdeps/unix/sysv/linux/syscall_cancel.c b/sysdeps/unix/sysv/linux/syscall_cancel.c
new file mode 100644
index 0000000..5fa0706
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/syscall_cancel.c
@@ -0,0 +1,73 @@
+/* Pthread cancellation syscall bridge. Default Linux version.
+ Copyright (C) 2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <sysdep.h>
+#include <pthreadP.h>
+
+#warning "This implementation should be use just as reference or for bootstrapping"
+
+/* This is the generic version of the cancellable syscall code which
+ adds the label guards (__syscall_cancel_arch_{start,end}) used on SIGCANCEL
+ handler to check if the cancelled syscall have side-effects that need to be
+ returned to the caller.
+
+ This implementation should be used as a reference one to document the
+ implementation constraints:
+
+ 1. The __syscall_cancel_arch_start should point just before the test
+ that thread is already cancelled,
+ 2. The __syscall_cancel_arch_end should point to the immediate next
+ instruction after the syscall one.
+ 3. It should return the syscall value or a negative result if is has
+ failed, similar to INTERNAL_SYSCALL_CALL.
+
+ The __syscall_cancel_arch_end one is because the kernel will signal
+ interrupted syscall with side effects by setting the signal frame program
+ counter (on the ucontext_t third argument from SA_SIGINFO signal handler)
+ right after the syscall instruction.
+
+ For some architecture, the INTERNAL_SYSCALL_NCS macro use more instructions
+ to get the error condition from kernel (as for powerpc and sparc that
+ checks for the conditional register), or uses an out of the line helper
+ (ARM thumb), or uses a kernel helper gate (i686 or ia64). In this case
+ the architecture should either adjust the macro or provide a custom
+ __syscall_cancel_arch implementation. */
+
+long int
+__syscall_cancel_arch (volatile int *ch, __syscall_arg_t nr,
+ __syscall_arg_t a1, __syscall_arg_t a2,
+ __syscall_arg_t a3, __syscall_arg_t a4,
+ __syscall_arg_t a5, __syscall_arg_t a6
+ __SYSCALL_CANCEL7_ARG_DEF)
+{
+#define ADD_LABEL(__label) \
+ asm volatile ( \
+ ".global " __label "\t\n" \
+ __label ":\n");
+
+ ADD_LABEL ("__syscall_cancel_arch_start");
+ if (__glibc_unlikely (*ch & CANCELED_BITMASK))
+ __syscall_do_cancel();
+
+ long int result = INTERNAL_SYSCALL_NCS_CALL (nr, a1, a2, a3, a4, a5, a6
+ __SYSCALL_CANCEL7_ARG7);
+ ADD_LABEL ("__syscall_cancel_arch_end");
+ if (__glibc_unlikely (INTERNAL_SYSCALL_ERROR_P (result)))
+ return -INTERNAL_SYSCALL_ERRNO (result);
+ return result;
+}
diff --git a/sysdeps/unix/sysv/linux/syscalls.list b/sysdeps/unix/sysv/linux/syscalls.list
index 9ac42c3..f1cfe8d 100644
--- a/sysdeps/unix/sysv/linux/syscalls.list
+++ b/sysdeps/unix/sysv/linux/syscalls.list
@@ -102,8 +102,8 @@ name_to_handle_at EXTRA name_to_handle_at i:isppi name_to_handle_at
setns EXTRA setns i:ii setns
memfd_create EXTRA memfd_create i:si memfd_create
-pkey_alloc EXTRA pkey_alloc i:ii pkey_alloc
-pkey_free EXTRA pkey_free i:i pkey_free
+pkey_alloc EXTRA pkey_alloc i:ii __pkey_alloc pkey_alloc
+pkey_free EXTRA pkey_free i:i __pkey_free pkey_free
gettid EXTRA gettid Ei: __gettid gettid
tgkill EXTRA tgkill i:iii __tgkill tgkill
close_range - close_range i:iii __close_range close_range
diff --git a/sysdeps/unix/sysv/linux/sysdep-cancel.h b/sysdeps/unix/sysv/linux/sysdep-cancel.h
index c48a50f..3f1543f 100644
--- a/sysdeps/unix/sysv/linux/sysdep-cancel.h
+++ b/sysdeps/unix/sysv/linux/sysdep-cancel.h
@@ -21,17 +21,5 @@
#define _SYSDEP_CANCEL_H
#include <sysdep.h>
-#include <tls.h>
-#include <errno.h>
-
-/* Set cancellation mode to asynchronous. */
-extern int __pthread_enable_asynccancel (void);
-libc_hidden_proto (__pthread_enable_asynccancel)
-#define LIBC_CANCEL_ASYNC() __pthread_enable_asynccancel ()
-
-/* Reset to previous cancellation mode. */
-extern void __pthread_disable_asynccancel (int oldtype);
-libc_hidden_proto (__pthread_disable_asynccancel)
-#define LIBC_CANCEL_RESET(oldtype) __pthread_disable_asynccancel (oldtype)
#endif
diff --git a/sysdeps/unix/sysv/linux/time.c b/sysdeps/unix/sysv/linux/time.c
index f8b0cee..a56ef6f 100644
--- a/sysdeps/unix/sysv/linux/time.c
+++ b/sysdeps/unix/sysv/linux/time.c
@@ -33,11 +33,10 @@ time_syscall (time_t *t)
}
# undef INIT_ARCH
-# define INIT_ARCH() \
- void *vdso_time = dl_vdso_vsym (HAVE_TIME_VSYSCALL);
+# define INIT_ARCH()
libc_ifunc (time,
- vdso_time ? VDSO_IFUNC_RET (vdso_time)
- : (void *) time_syscall);
+ GLRO(dl_vdso_time) != NULL ? VDSO_IFUNC_RET (GLRO(dl_vdso_time))
+ : (void *) time_syscall);
# else
time_t
diff --git a/sysdeps/unix/sysv/linux/tst-mman-consts.py b/sysdeps/unix/sysv/linux/tst-mman-consts.py
index a1137eb..2191bea 100644
--- a/sysdeps/unix/sysv/linux/tst-mman-consts.py
+++ b/sysdeps/unix/sysv/linux/tst-mman-consts.py
@@ -33,7 +33,7 @@ def main():
help='C compiler (including options) to use')
args = parser.parse_args()
linux_version_headers = glibcsyscalls.linux_kernel_version(args.cc)
- linux_version_glibc = (6, 10)
+ linux_version_glibc = (6, 11)
sys.exit(glibcextract.compare_macro_consts(
'#define _GNU_SOURCE 1\n'
'#include <sys/mman.h>\n',
diff --git a/sysdeps/unix/sysv/linux/tst-mount-consts.py b/sysdeps/unix/sysv/linux/tst-mount-consts.py
index 675f179..b71d8a4 100755
--- a/sysdeps/unix/sysv/linux/tst-mount-consts.py
+++ b/sysdeps/unix/sysv/linux/tst-mount-consts.py
@@ -42,7 +42,7 @@ def main():
# Constants in glibc were updated to match Linux v6.10. When glibc
# constants are updated this value should be updated to match the
# released kernel version from which the constants were taken.
- linux_version_glibc = (6, 10)
+ linux_version_glibc = (6, 11)
def check(cte, exclude=None):
return glibcextract.compare_macro_consts(
'#include <sys/mount.h>\n',
diff --git a/sysdeps/unix/sysv/linux/tst-pidfd-consts.py b/sysdeps/unix/sysv/linux/tst-pidfd-consts.py
index 9824fd2..9d53102 100644
--- a/sysdeps/unix/sysv/linux/tst-pidfd-consts.py
+++ b/sysdeps/unix/sysv/linux/tst-pidfd-consts.py
@@ -39,7 +39,7 @@ def main():
sys.exit (77)
linux_version_headers = glibcsyscalls.linux_kernel_version(args.cc)
- linux_version_glibc = (6, 10)
+ linux_version_glibc = (6, 11)
sys.exit(glibcextract.compare_macro_consts(
'#include <sys/pidfd.h>\n',
'#include <asm/fcntl.h>\n'
diff --git a/sysdeps/unix/sysv/linux/tst-rseq-nptl.c b/sysdeps/unix/sysv/linux/tst-rseq-nptl.c
index b9f4984..2a246c4 100644
--- a/sysdeps/unix/sysv/linux/tst-rseq-nptl.c
+++ b/sysdeps/unix/sysv/linux/tst-rseq-nptl.c
@@ -28,6 +28,11 @@
#include <sys/rseq.h>
#include <unistd.h>
+/* Set this in 'do_test' only so as to invoke the destructor test in
+ the test process only and not 'support_test_main' parent. Otherwise
+ the test harness may hang in the destructor if something goes wrong. */
+static int run_destructor_test;
+
#ifdef RSEQ_SIG
# include <array_length.h>
# include <errno.h>
@@ -236,6 +241,9 @@ do_rseq_test (void)
static void __attribute__ ((destructor))
do_rseq_destructor_test (void)
{
+ if (!run_destructor_test)
+ return;
+
/* Cannot use deferred failure reporting after main returns. */
if (do_rseq_test ())
FAIL_EXIT1 ("rseq not registered within destructor");
@@ -254,6 +262,7 @@ do_rseq_test (void)
static int
do_test (void)
{
+ run_destructor_test = 1;
return do_rseq_test ();
}
diff --git a/sysdeps/unix/sysv/linux/tst-sched-consts.py b/sysdeps/unix/sysv/linux/tst-sched-consts.py
new file mode 100644
index 0000000..f06ac40
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/tst-sched-consts.py
@@ -0,0 +1,56 @@
+#!/usr/bin/python3
+# Test that glibc's sched.h constants match the kernel's.
+# Copyright (C) 2018-2024 Free Software Foundation, Inc.
+# This file is part of the GNU C Library.
+#
+# The GNU C Library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# The GNU C Library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with the GNU C Library; if not, see
+# <https://www.gnu.org/licenses/>.
+
+import argparse
+import sys
+
+import glibcextract
+import glibcsyscalls
+
+
+def main():
+ """The main entry point."""
+ parser = argparse.ArgumentParser(
+ description="Test that glibc's sched.h constants "
+ "match the kernel's.")
+ parser.add_argument('--cc', metavar='CC',
+ help='C compiler (including options) to use')
+ args = parser.parse_args()
+ linux_version_headers = glibcsyscalls.linux_kernel_version(args.cc)
+ linux_version_glibc = (6, 11)
+ sys.exit(glibcextract.compare_macro_consts(
+ '#define _GNU_SOURCE 1\n'
+ '#include <sched.h>\n',
+ '#define _GNU_SOURCE 1\n'
+ '#include <linux/sched.h>\n'
+ '#include <linux/sched/types.h>\n',
+ args.cc,
+ 'SCHED_.*',
+ # SCHED_ISO is reserved, but not implemented in the kernel.
+ # SCHED_OTHER is the standard name for SCHED_NORMAL.
+ # SCHED_FLAG_ALL will receive more and more flags, so
+ # exposing it to userspace does not seem useful.
+ 'SCHED_ISO'
+ '|SCHED_OTHER'
+ '|SCHED_FLAG_ALL',
+ linux_version_glibc > linux_version_headers,
+ linux_version_headers > linux_version_glibc))
+
+if __name__ == '__main__':
+ main()
diff --git a/sysdeps/unix/sysv/linux/tst-sched_setattr.c b/sysdeps/unix/sysv/linux/tst-sched_setattr.c
new file mode 100644
index 0000000..fbb73c3
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/tst-sched_setattr.c
@@ -0,0 +1,107 @@
+/* Tests for sched_setattr and sched_getattr.
+ Copyright (C) 2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public License as
+ published by the Free Software Foundation; either version 2.1 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+#include <sched.h>
+
+#include <errno.h>
+#include <stddef.h>
+#include <string.h>
+#include <support/check.h>
+#include <sys/resource.h>
+#include <unistd.h>
+
+/* Padding struct to detect unexpected writes. */
+union
+{
+ struct sched_attr attr;
+ /* Hopefully the kernel will never need as much. */
+ unsigned char padding[4096];
+} u;
+
+static void
+check_unused (void)
+{
+ TEST_VERIFY (u.attr.size < sizeof (u));
+ for (unsigned int i = u.attr.size; i < sizeof (u); ++i)
+ TEST_COMPARE (u.padding[i], 0xcc);
+}
+
+static int
+do_test (void)
+{
+ _Static_assert (SCHED_OTHER == SCHED_NORMAL,
+ "SCHED_OTHER, SCHED_NORMAL values");
+ TEST_VERIFY (sizeof (struct sched_attr) < sizeof (u));
+
+ /* Check that reading and re-applying the current policy works. */
+ memset (&u, 0xcc, sizeof (u));
+ /* Compiler barrier to bypass write access attribute. */
+ volatile unsigned int size = sizeof (u);
+ TEST_COMPARE (sched_getattr (0, (struct sched_attr *) &u, size, 0), 0);
+ check_unused ();
+ TEST_COMPARE (sched_setattr (0, &u.attr, 0), 0); /* Apply unchanged. */
+
+ /* Try to switch to the SCHED_OTHER policy. */
+ memset (&u, 0, sizeof (u));
+ u.attr.size = sizeof (u); /* With padding, kernel should accept zeroes. */
+ u.attr.sched_policy = SCHED_OTHER; /* Should be the default. */
+ {
+ errno = 0;
+ int prio = getpriority (PRIO_PROCESS, 0);
+ if (errno != 0)
+ prio = 0;
+ u.attr.sched_nice = prio;
+ }
+ TEST_COMPARE (sched_setattr (0, &u.attr, 0), 0);
+
+ /* Non-zero values not known to the kernel result in an E2BIG error. */
+ memset (&u, 0, sizeof (u));
+ TEST_COMPARE (sched_getattr (0, (struct sched_attr *) &u, size, 0), 0);
+ u.padding[u.attr.size] = 0xcc;
+ u.attr.size = sizeof (u);
+ errno = 0;
+ TEST_COMPARE (sched_setattr (0, &u.attr, 0), -1);
+ TEST_COMPARE (errno, E2BIG);
+
+ memset (&u, 0xcc, sizeof (u));
+ TEST_COMPARE (sched_getattr (0, (struct sched_attr *) &u, size, 0), 0);
+ TEST_COMPARE (u.attr.sched_policy, SCHED_OTHER);
+ check_unused ();
+
+ /* Raise the niceless level to 19 and observe its effect. */
+ TEST_COMPARE (nice (19), 19);
+ TEST_COMPARE (sched_getattr (0, &u.attr, sizeof (u.attr), 0), 0);
+ TEST_COMPARE (u.attr.sched_policy, SCHED_OTHER);
+ TEST_COMPARE (u.attr.sched_nice, 19);
+ check_unused ();
+
+ /* Invalid buffer arguments result in EINVAL (not EFAULT). */
+ {
+ errno = 0;
+ void *volatile null_pointer = NULL; /* compiler barrier. */
+ TEST_COMPARE (sched_setattr (0, null_pointer, 0), -1);
+ TEST_COMPARE (errno, EINVAL);
+ errno = 0;
+ TEST_COMPARE (sched_getattr (0, null_pointer, size, 0), -1);
+ TEST_COMPARE (errno, EINVAL);
+ }
+
+ return 0;
+}
+
+#include <support/test-driver.c>
diff --git a/sysdeps/unix/sysv/linux/tst-skeleton-affinity.c b/sysdeps/unix/sysv/linux/tst-skeleton-affinity.c
index 31a15b3..2f921ed 100644
--- a/sysdeps/unix/sysv/linux/tst-skeleton-affinity.c
+++ b/sysdeps/unix/sysv/linux/tst-skeleton-affinity.c
@@ -157,7 +157,7 @@ test_size (const struct conf *conf, size_t size)
if (setaffinity (kernel_size, initial_set) < 0)
{
printf ("error: size %zu: setaffinity: %m\n", size);
- return true;
+ return false;
}
/* Use one-CPU set to test switching between CPUs. */
diff --git a/sysdeps/unix/sysv/linux/x86/pkey_get.c b/sysdeps/unix/sysv/linux/x86/pkey_get.c
index eb988a5..0fb52ba 100644
--- a/sysdeps/unix/sysv/linux/x86/pkey_get.c
+++ b/sysdeps/unix/sysv/linux/x86/pkey_get.c
@@ -18,9 +18,10 @@
#include <arch-pkey.h>
#include <errno.h>
+#include <sys/mman.h>
int
-pkey_get (int key)
+__pkey_get (int key)
{
if (key < 0 || key > 15)
{
@@ -31,3 +32,5 @@ pkey_get (int key)
return (pkru >> (2 * key)) & 3;
return 0;
}
+libc_hidden_def (__pkey_get)
+weak_alias (__pkey_get, pkey_get)
diff --git a/sysdeps/unix/sysv/linux/x86/pkey_set.c b/sysdeps/unix/sysv/linux/x86/pkey_set.c
index 3fd2c95..51e3d68 100644
--- a/sysdeps/unix/sysv/linux/x86/pkey_set.c
+++ b/sysdeps/unix/sysv/linux/x86/pkey_set.c
@@ -18,9 +18,10 @@
#include <arch-pkey.h>
#include <errno.h>
+#include <sys/mman.h>
int
-pkey_set (int key, unsigned int rights)
+__pkey_set (int key, unsigned int rights)
{
if (key < 0 || key > 15 || rights > 3)
{
@@ -33,3 +34,5 @@ pkey_set (int key, unsigned int rights)
pkey_write (pkru);
return 0;
}
+libc_hidden_def (__pkey_set)
+weak_alias (__pkey_set, pkey_set)
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/arch-syscall.h b/sysdeps/unix/sysv/linux/x86_64/64/arch-syscall.h
index 5d86e75..dfc10d0 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/arch-syscall.h
+++ b/sysdeps/unix/sysv/linux/x86_64/64/arch-syscall.h
@@ -359,6 +359,7 @@
#define __NR_unlink 87
#define __NR_unlinkat 263
#define __NR_unshare 272
+#define __NR_uretprobe 335
#define __NR_uselib 134
#define __NR_userfaultfd 323
#define __NR_ustat 136
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
index aea7848..5acf49d 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
@@ -2744,6 +2744,8 @@ GLIBC_2.4 sys_errlist D 0x420
GLIBC_2.4 sys_nerr D 0x4
GLIBC_2.4 unlinkat F
GLIBC_2.4 unshare F
+GLIBC_2.41 sched_getattr F
+GLIBC_2.41 sched_setattr F
GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F
GLIBC_2.5 inet6_opt_find F
diff --git a/sysdeps/unix/sysv/linux/x86_64/syscall_cancel.S b/sysdeps/unix/sysv/linux/x86_64/syscall_cancel.S
new file mode 100644
index 0000000..cda9d20
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/x86_64/syscall_cancel.S
@@ -0,0 +1,57 @@
+/* Cancellable syscall wrapper. Linux/x86_64 version.
+ Copyright (C) 2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <sysdep.h>
+#include <descr-const.h>
+
+/* long int [rax] __syscall_cancel_arch (volatile int *cancelhandling [%rdi],
+ __syscall_arg_t nr [%rsi],
+ __syscall_arg_t arg1 [%rdx],
+ __syscall_arg_t arg2 [%rcx],
+ __syscall_arg_t arg3 [%r8],
+ __syscall_arg_t arg4 [%r9],
+ __syscall_arg_t arg5 [SP+8],
+ __syscall_arg_t arg6 [SP+16]) */
+
+ENTRY (__syscall_cancel_arch)
+ .globl __syscall_cancel_arch_start
+__syscall_cancel_arch_start:
+
+ /* if (*cancelhandling & CANCELED_BITMASK)
+ __syscall_do_cancel() */
+ mov (%rdi),%eax
+ testb $TCB_CANCELED_BITMASK, (%rdi)
+ jne __syscall_do_cancel
+
+ /* Issue a 6 argument syscall, the nr [%rax] being the syscall
+ number. */
+ mov %rdi,%r11
+ mov %rsi,%rax
+ mov %rdx,%rdi
+ mov %rcx,%rsi
+ mov %r8,%rdx
+ mov %r9,%r10
+ mov 8(%rsp),%r8
+ mov 16(%rsp),%r9
+ mov %r11,8(%rsp)
+ syscall
+
+ .globl __syscall_cancel_arch_end
+__syscall_cancel_arch_end:
+ ret
+END (__syscall_cancel_arch)
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/arch-syscall.h b/sysdeps/unix/sysv/linux/x86_64/x32/arch-syscall.h
index 6c35068..9340daa 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/arch-syscall.h
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/arch-syscall.h
@@ -351,6 +351,7 @@
#define __NR_unlink 1073741911
#define __NR_unlinkat 1073742087
#define __NR_unshare 1073742096
+#define __NR_uretprobe 1073742159
#define __NR_userfaultfd 1073742147
#define __NR_ustat 1073741960
#define __NR_utime 1073741956
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
index 4ab3681..02d1bb9 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
@@ -2763,3 +2763,5 @@ GLIBC_2.39 stdc_trailing_zeros_ui F
GLIBC_2.39 stdc_trailing_zeros_ul F
GLIBC_2.39 stdc_trailing_zeros_ull F
GLIBC_2.39 stdc_trailing_zeros_us F
+GLIBC_2.41 sched_getattr F
+GLIBC_2.41 sched_setattr F
diff --git a/support/xlstat-time64.c b/sysdeps/unix/sysv/linux/x86_64/x32/syscall_types.h
index 2bc3ca6..ac20197 100644
--- a/support/xlstat-time64.c
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/syscall_types.h
@@ -1,5 +1,5 @@
-/* 64-bit time_t stat with error checking.
- Copyright (C) 2021-2024 Free Software Foundation, Inc.
+/* Types and macros used for syscall issuing. x86_64/x32 version.
+ Copyright (C) 2023 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -16,17 +16,19 @@
License along with the GNU C Library; if not, see
<https://www.gnu.org/licenses/>. */
-/* NB: Non-standard file name to avoid sysdeps override for xstat. */
+#ifndef _SYSCALL_TYPES_H
+#define _SYSCALL_TYPES_H
-#include <support/check.h>
-#include <support/xunistd.h>
-#include <sys/stat.h>
+#include <libc-diag.h>
+
+typedef long long int __syscall_arg_t;
+
+/* Syscall arguments for x32 follows x86_64 ABI, however pointers are 32 bits
+ should be zero extended. */
+#define __SSC(__x) \
+ ({ \
+ TYPEFY (__x, __tmp) = ARGIFY (__x); \
+ (__syscall_arg_t) __tmp; \
+ })
-#if __TIMESIZE != 64
-void
-xlstat_time64 (const char *path, struct __stat64_t64 *result)
-{
- if (__lstat64_time64 (path, result) != 0)
- FAIL_EXIT1 ("__lstat64_time64 (\"%s\"): %m", path);
-}
#endif
diff --git a/sysdeps/x86/cpu-features.c b/sysdeps/x86/cpu-features.c
index 18ed008..1f30e23 100644
--- a/sysdeps/x86/cpu-features.c
+++ b/sysdeps/x86/cpu-features.c
@@ -756,6 +756,12 @@ init_cpu_features (struct cpu_features *cpu_features)
unsigned int stepping = 0;
enum cpu_features_kind kind;
+ /* Default is avoid non-temporal memset for non Intel/AMD/Hygon hardware. This is,
+ as of writing this, we only have benchmarks indicatings it profitability
+ on Intel/AMD/Hygon. */
+ cpu_features->preferred[index_arch_Avoid_Non_Temporal_Memset]
+ |= bit_arch_Avoid_Non_Temporal_Memset;
+
cpu_features->cachesize_non_temporal_divisor = 4;
#if !HAS_CPUID
if (__get_cpuid_max (0, 0) == 0)
@@ -781,6 +787,11 @@ init_cpu_features (struct cpu_features *cpu_features)
update_active (cpu_features);
+ /* Benchmarks indicate non-temporal memset can be profitable on Intel
+ hardware. */
+ cpu_features->preferred[index_arch_Avoid_Non_Temporal_Memset]
+ &= ~bit_arch_Avoid_Non_Temporal_Memset;
+
if (family == 0x06)
{
model += extended_model;
@@ -975,9 +986,8 @@ https://www.intel.com/content/www/us/en/support/articles/000059422/processors.ht
cpu_features->preferred[index_arch_Avoid_Short_Distance_REP_MOVSB]
|= bit_arch_Avoid_Short_Distance_REP_MOVSB;
}
- /* This spells out "AuthenticAMD" or "HygonGenuine". */
- else if ((ebx == 0x68747541 && ecx == 0x444d4163 && edx == 0x69746e65)
- || (ebx == 0x6f677948 && ecx == 0x656e6975 && edx == 0x6e65476e))
+ /* This spells out "AuthenticAMD". */
+ else if (ebx == 0x68747541 && ecx == 0x444d4163 && edx == 0x69746e65)
{
unsigned int extended_model;
@@ -992,6 +1002,11 @@ https://www.intel.com/content/www/us/en/support/articles/000059422/processors.ht
ecx = cpu_features->features[CPUID_INDEX_1].cpuid.ecx;
+ /* Benchmarks indicate non-temporal memset can be profitable on AMD
+ hardware. */
+ cpu_features->preferred[index_arch_Avoid_Non_Temporal_Memset]
+ &= ~bit_arch_Avoid_Non_Temporal_Memset;
+
if (CPU_FEATURE_USABLE_P (cpu_features, AVX))
{
/* Since the FMA4 bit is in CPUID_INDEX_80000001 and
@@ -1088,6 +1103,25 @@ https://www.intel.com/content/www/us/en/support/articles/000059422/processors.ht
}
}
}
+ /* This spells out "HygonGenuine". */
+ else if (ebx == 0x6f677948 && ecx == 0x656e6975 && edx == 0x6e65476e)
+ {
+ unsigned int extended_model;
+
+ kind = arch_kind_hygon;
+
+ get_common_indices (cpu_features, &family, &model, &extended_model,
+ &stepping);
+
+ get_extended_indices (cpu_features);
+
+ update_active (cpu_features);
+
+ /* Benchmarks indicate non-temporal memset can be profitable on Hygon
+ hardware. */
+ cpu_features->preferred[index_arch_Avoid_Non_Temporal_Memset]
+ &= ~bit_arch_Avoid_Non_Temporal_Memset;
+ }
else
{
kind = arch_kind_other;
@@ -1103,6 +1137,10 @@ https://www.intel.com/content/www/us/en/support/articles/000059422/processors.ht
if (CPU_FEATURES_CPU_P (cpu_features, CMOV))
cpu_features->preferred[index_arch_I686] |= bit_arch_I686;
+ /* No ERMS, we want to avoid stosb for memset. */
+ if (!CPU_FEATURE_USABLE_P (cpu_features, ERMS))
+ cpu_features->preferred[index_arch_Avoid_STOSB] |= bit_arch_Avoid_STOSB;
+
#if !HAS_CPUID
no_cpuid:
#endif
diff --git a/sysdeps/x86/cpu-tunables.c b/sysdeps/x86/cpu-tunables.c
index ccc6b64..cd36de2 100644
--- a/sysdeps/x86/cpu-tunables.c
+++ b/sysdeps/x86/cpu-tunables.c
@@ -193,6 +193,8 @@ TUNABLE_CALLBACK (set_hwcaps) (tunable_val_t *valp)
11);
CHECK_GLIBC_IFUNC_PREFERRED_BOTH (n, cpu_features, Prefer_FSRM,
11);
+ CHECK_GLIBC_IFUNC_PREFERRED_BOTH (n, cpu_features, Avoid_STOSB,
+ 11);
CHECK_GLIBC_IFUNC_PREFERRED_NEED_BOTH (n, cpu_features,
Slow_SSE4_2,
SSE4_2,
diff --git a/sysdeps/x86/dl-cacheinfo.h b/sysdeps/x86/dl-cacheinfo.h
index a1c03b8..e957950 100644
--- a/sysdeps/x86/dl-cacheinfo.h
+++ b/sysdeps/x86/dl-cacheinfo.h
@@ -567,6 +567,48 @@ handle_zhaoxin (int name)
return 0;
}
+static long int __attribute__ ((noinline))
+handle_hygon (int name)
+{
+ unsigned int eax;
+ unsigned int ebx;
+ unsigned int ecx;
+ unsigned int edx;
+ unsigned int count = 0x1;
+
+ if (name >= _SC_LEVEL3_CACHE_SIZE)
+ count = 0x3;
+ else if (name >= _SC_LEVEL2_CACHE_SIZE)
+ count = 0x2;
+ else if (name >= _SC_LEVEL1_DCACHE_SIZE)
+ count = 0x0;
+
+ /* Use __cpuid__ '0x8000_001D' to compute cache details. */
+ __cpuid_count (0x8000001D, count, eax, ebx, ecx, edx);
+
+ switch (name)
+ {
+ case _SC_LEVEL1_ICACHE_ASSOC:
+ case _SC_LEVEL1_DCACHE_ASSOC:
+ case _SC_LEVEL2_CACHE_ASSOC:
+ case _SC_LEVEL3_CACHE_ASSOC:
+ return ((ebx >> 22) & 0x3ff) + 1;
+ case _SC_LEVEL1_ICACHE_LINESIZE:
+ case _SC_LEVEL1_DCACHE_LINESIZE:
+ case _SC_LEVEL2_CACHE_LINESIZE:
+ case _SC_LEVEL3_CACHE_LINESIZE:
+ return (ebx & 0xfff) + 1;
+ case _SC_LEVEL1_ICACHE_SIZE:
+ case _SC_LEVEL1_DCACHE_SIZE:
+ case _SC_LEVEL2_CACHE_SIZE:
+ case _SC_LEVEL3_CACHE_SIZE:
+ return (((ebx >> 22) & 0x3ff) + 1) * ((ebx & 0xfff) + 1) * (ecx + 1);
+ default:
+ __builtin_unreachable ();
+ }
+ return -1;
+}
+
static void
get_common_cache_info (long int *shared_ptr, long int * shared_per_thread_ptr, unsigned int *threads_ptr,
long int core)
@@ -889,6 +931,24 @@ dl_init_cacheinfo (struct cpu_features *cpu_features)
shared_per_thread = shared;
}
+ else if (cpu_features->basic.kind == arch_kind_hygon)
+ {
+ data = handle_hygon (_SC_LEVEL1_DCACHE_SIZE);
+ shared = handle_hygon (_SC_LEVEL3_CACHE_SIZE);
+ shared_per_thread = shared;
+
+ level1_icache_size = handle_hygon (_SC_LEVEL1_ICACHE_SIZE);
+ level1_icache_linesize = handle_hygon (_SC_LEVEL1_ICACHE_LINESIZE);
+ level1_dcache_size = data;
+ level1_dcache_assoc = handle_hygon (_SC_LEVEL1_DCACHE_ASSOC);
+ level1_dcache_linesize = handle_hygon (_SC_LEVEL1_DCACHE_LINESIZE);
+ level2_cache_size = handle_hygon (_SC_LEVEL2_CACHE_SIZE);;
+ level2_cache_assoc = handle_hygon (_SC_LEVEL2_CACHE_ASSOC);
+ level2_cache_linesize = handle_hygon (_SC_LEVEL2_CACHE_LINESIZE);
+ level3_cache_size = shared;
+ level3_cache_assoc = handle_hygon (_SC_LEVEL3_CACHE_ASSOC);
+ level3_cache_linesize = handle_hygon (_SC_LEVEL3_CACHE_LINESIZE);
+ }
cpu_features->level1_icache_size = level1_icache_size;
cpu_features->level1_icache_linesize = level1_icache_linesize;
@@ -988,14 +1048,6 @@ dl_init_cacheinfo (struct cpu_features *cpu_features)
if (CPU_FEATURE_USABLE_P (cpu_features, FSRM))
rep_movsb_threshold = 2112;
- /* Non-temporal stores are more performant on Intel and AMD hardware above
- non_temporal_threshold. Enable this for both Intel and AMD hardware. */
- unsigned long int memset_non_temporal_threshold = SIZE_MAX;
- if (!CPU_FEATURES_ARCH_P (cpu_features, Avoid_Non_Temporal_Memset)
- && (cpu_features->basic.kind == arch_kind_intel
- || cpu_features->basic.kind == arch_kind_amd))
- memset_non_temporal_threshold = non_temporal_threshold;
-
/* For AMD CPUs that support ERMS (Zen3+), REP MOVSB is in a lot of
cases slower than the vectorized path (and for some alignments,
it is really slow, check BZ #30994). */
@@ -1017,6 +1069,13 @@ dl_init_cacheinfo (struct cpu_features *cpu_features)
if (tunable_size != 0)
shared = tunable_size;
+ /* Non-temporal stores are more performant on some hardware above
+ non_temporal_threshold. Currently Prefer_Non_Temporal is set for for both
+ Intel, AMD and Hygon hardware. */
+ unsigned long int memset_non_temporal_threshold = SIZE_MAX;
+ if (!CPU_FEATURES_ARCH_P (cpu_features, Avoid_Non_Temporal_Memset))
+ memset_non_temporal_threshold = non_temporal_threshold;
+
tunable_size = TUNABLE_GET (x86_non_temporal_threshold, long int, NULL);
if (tunable_size > minimum_non_temporal_threshold
&& tunable_size <= maximum_non_temporal_threshold)
@@ -1042,18 +1101,42 @@ dl_init_cacheinfo (struct cpu_features *cpu_features)
slightly better than ERMS. */
rep_stosb_threshold = SIZE_MAX;
+ /*
+ For memset, the non-temporal implementation is only accessed through the
+ stosb code. ie:
+ ```
+ if (size >= rep_stosb_thresh)
+ {
+ if (size >= non_temporal_thresh)
+ {
+ do_non_temporal ();
+ }
+ do_stosb ();
+ }
+ do_normal_vec_loop ();
+ ```
+ So if we prefer non-temporal, set `rep_stosb_thresh = non_temporal_thresh`
+ to enable the implementation. If `rep_stosb_thresh = non_temporal_thresh`,
+ `rep stosb` will never be used.
+ */
+ TUNABLE_SET_WITH_BOUNDS (x86_memset_non_temporal_threshold,
+ memset_non_temporal_threshold,
+ minimum_non_temporal_threshold, SIZE_MAX);
+ /* Do `rep_stosb_thresh = non_temporal_thresh` after setting/getting the
+ final value of `x86_memset_non_temporal_threshold`. In some cases this can
+ be a matter of correctness. */
+ if (CPU_FEATURES_ARCH_P (cpu_features, Avoid_STOSB))
+ rep_stosb_threshold
+ = TUNABLE_GET (x86_memset_non_temporal_threshold, long int, NULL);
+ TUNABLE_SET_WITH_BOUNDS (x86_rep_stosb_threshold, rep_stosb_threshold, 1,
+ SIZE_MAX);
TUNABLE_SET_WITH_BOUNDS (x86_data_cache_size, data, 0, SIZE_MAX);
TUNABLE_SET_WITH_BOUNDS (x86_shared_cache_size, shared, 0, SIZE_MAX);
TUNABLE_SET_WITH_BOUNDS (x86_non_temporal_threshold, non_temporal_threshold,
minimum_non_temporal_threshold,
maximum_non_temporal_threshold);
- TUNABLE_SET_WITH_BOUNDS (x86_memset_non_temporal_threshold,
- memset_non_temporal_threshold,
- minimum_non_temporal_threshold, SIZE_MAX);
TUNABLE_SET_WITH_BOUNDS (x86_rep_movsb_threshold, rep_movsb_threshold,
minimum_rep_movsb_threshold, SIZE_MAX);
- TUNABLE_SET_WITH_BOUNDS (x86_rep_stosb_threshold, rep_stosb_threshold, 1,
- SIZE_MAX);
unsigned long int rep_movsb_stop_threshold;
/* Setting the upper bound of ERMS to the computed value of
diff --git a/sysdeps/x86/include/cpu-features-preferred_feature_index_1.def b/sysdeps/x86/include/cpu-features-preferred_feature_index_1.def
index 61bbbc2..2a58000 100644
--- a/sysdeps/x86/include/cpu-features-preferred_feature_index_1.def
+++ b/sysdeps/x86/include/cpu-features-preferred_feature_index_1.def
@@ -34,3 +34,4 @@ BIT (MathVec_Prefer_No_AVX512)
BIT (Prefer_FSRM)
BIT (Avoid_Short_Distance_REP_MOVSB)
BIT (Avoid_Non_Temporal_Memset)
+BIT (Avoid_STOSB)
diff --git a/sysdeps/x86/include/cpu-features.h b/sysdeps/x86/include/cpu-features.h
index aaae44f..b8e790c 100644
--- a/sysdeps/x86/include/cpu-features.h
+++ b/sysdeps/x86/include/cpu-features.h
@@ -881,6 +881,7 @@ enum cpu_features_kind
arch_kind_intel,
arch_kind_amd,
arch_kind_zhaoxin,
+ arch_kind_hygon,
arch_kind_other
};
diff --git a/sysdeps/x86/tst-hwcap-tunables.c b/sysdeps/x86/tst-hwcap-tunables.c
index 9430728..1920f50 100644
--- a/sysdeps/x86/tst-hwcap-tunables.c
+++ b/sysdeps/x86/tst-hwcap-tunables.c
@@ -60,7 +60,8 @@ static const struct test_t
/* Disable everything. */
"-Prefer_ERMS,-Prefer_FSRM,-AVX,-AVX2,-AVX512F,-AVX512VL,"
"-SSE4_1,-SSE4_2,-SSSE3,-Fast_Unaligned_Load,-ERMS,"
- "-AVX_Fast_Unaligned_Load,-Avoid_Non_Temporal_Memset",
+ "-AVX_Fast_Unaligned_Load,-Avoid_Non_Temporal_Memset,"
+ "-Avoid_STOSB",
test_1,
array_length (test_1)
},
@@ -68,7 +69,8 @@ static const struct test_t
/* Same as before, but with some empty suboptions. */
",-,-Prefer_ERMS,-Prefer_FSRM,-AVX,-AVX2,-AVX512F,-AVX512VL,"
"-SSE4_1,-SSE4_2,-SSSE3,-Fast_Unaligned_Load,,-,"
- "-ERMS,-AVX_Fast_Unaligned_Load,-Avoid_Non_Temporal_Memset,-,",
+ "-ERMS,-AVX_Fast_Unaligned_Load,-Avoid_Non_Temporal_Memset,"
+ "-Avoid_STOSB,-,",
test_1,
array_length (test_1)
}
diff --git a/sysdeps/x86_64/fpu/libm-test-ulps b/sysdeps/x86_64/fpu/libm-test-ulps
index c2e36dc..80d0125 100644
--- a/sysdeps/x86_64/fpu/libm-test-ulps
+++ b/sysdeps/x86_64/fpu/libm-test-ulps
@@ -2263,25 +2263,21 @@ double: 1
Function: "tgamma":
double: 9
-float: 8
float128: 4
ldouble: 5
Function: "tgamma_downward":
double: 9
-float: 7
float128: 5
ldouble: 6
Function: "tgamma_towardzero":
double: 9
-float: 7
float128: 5
ldouble: 6
Function: "tgamma_upward":
double: 9
-float: 8
float128: 4
ldouble: 5
diff --git a/sysdeps/x86_64/fpu/multiarch/s_fma.c b/sysdeps/x86_64/fpu/multiarch/s_fma.c
index 10e6e62..92409a2 100644
--- a/sysdeps/x86_64/fpu/multiarch/s_fma.c
+++ b/sysdeps/x86_64/fpu/multiarch/s_fma.c
@@ -9,7 +9,7 @@
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
diff --git a/sysdeps/x86_64/fpu/multiarch/s_fmaf.c b/sysdeps/x86_64/fpu/multiarch/s_fmaf.c
index 85725e2..b5b63fd 100644
--- a/sysdeps/x86_64/fpu/multiarch/s_fmaf.c
+++ b/sysdeps/x86_64/fpu/multiarch/s_fmaf.c
@@ -9,7 +9,7 @@
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
diff --git a/sysdeps/x86_64/multiarch/ifunc-memset.h b/sysdeps/x86_64/multiarch/ifunc-memset.h
index 7a637ef..8dc3d7a 100644
--- a/sysdeps/x86_64/multiarch/ifunc-memset.h
+++ b/sysdeps/x86_64/multiarch/ifunc-memset.h
@@ -46,6 +46,13 @@ extern __typeof (REDIRECT_NAME) OPTIMIZE (sse2_unaligned)
extern __typeof (REDIRECT_NAME) OPTIMIZE (sse2_unaligned_erms)
attribute_hidden;
+static inline int
+prefer_erms_nt_impl (const struct cpu_features *cpu_features)
+{
+ return CPU_FEATURE_USABLE_P (cpu_features, ERMS)
+ || !CPU_FEATURES_ARCH_P (cpu_features, Avoid_Non_Temporal_Memset);
+}
+
static inline void *
IFUNC_SELECTOR (void)
{
@@ -61,7 +68,7 @@ IFUNC_SELECTOR (void)
&& X86_ISA_CPU_FEATURE_USABLE_P (cpu_features, AVX512BW)
&& X86_ISA_CPU_FEATURE_USABLE_P (cpu_features, BMI2))
{
- if (CPU_FEATURE_USABLE_P (cpu_features, ERMS))
+ if (prefer_erms_nt_impl (cpu_features))
return OPTIMIZE (avx512_unaligned_erms);
return OPTIMIZE (avx512_unaligned);
@@ -76,7 +83,7 @@ IFUNC_SELECTOR (void)
&& X86_ISA_CPU_FEATURE_USABLE_P (cpu_features, AVX512BW)
&& X86_ISA_CPU_FEATURE_USABLE_P (cpu_features, BMI2))
{
- if (CPU_FEATURE_USABLE_P (cpu_features, ERMS))
+ if (prefer_erms_nt_impl (cpu_features))
return OPTIMIZE (evex_unaligned_erms);
return OPTIMIZE (evex_unaligned);
@@ -84,7 +91,7 @@ IFUNC_SELECTOR (void)
if (CPU_FEATURE_USABLE_P (cpu_features, RTM))
{
- if (CPU_FEATURE_USABLE_P (cpu_features, ERMS))
+ if (prefer_erms_nt_impl (cpu_features))
return OPTIMIZE (avx2_unaligned_erms_rtm);
return OPTIMIZE (avx2_unaligned_rtm);
@@ -93,14 +100,15 @@ IFUNC_SELECTOR (void)
if (X86_ISA_CPU_FEATURES_ARCH_P (cpu_features,
Prefer_No_VZEROUPPER, !))
{
- if (CPU_FEATURE_USABLE_P (cpu_features, ERMS))
+ if (prefer_erms_nt_impl (cpu_features))
return OPTIMIZE (avx2_unaligned_erms);
return OPTIMIZE (avx2_unaligned);
}
}
- if (CPU_FEATURE_USABLE_P (cpu_features, ERMS))
+ if (CPU_FEATURE_USABLE_P (cpu_features, ERMS)
+ || !CPU_FEATURES_ARCH_P (cpu_features, Avoid_Non_Temporal_Memset))
return OPTIMIZE (sse2_unaligned_erms);
return OPTIMIZE (sse2_unaligned);
diff --git a/sysdeps/x86_64/multiarch/strchr-evex-base.S b/sysdeps/x86_64/multiarch/strchr-evex-base.S
index 04e2c0e..3a0b7c9 100644
--- a/sysdeps/x86_64/multiarch/strchr-evex-base.S
+++ b/sysdeps/x86_64/multiarch/strchr-evex-base.S
@@ -124,13 +124,13 @@ L(page_cross):
VPCMPNE %VMM(1), %VMM(0), %k1
VPTEST %VMM(1), %VMM(1), %k0{%k1}
KMOV %k0, %VRAX
-# ifdef USE_AS_WCSCHR
+ sar %cl, %VRAX
+#ifdef USE_AS_WCSCHR
sub $VEC_MATCH_MASK, %VRAX
-# else
+#else
inc %VRAX
-# endif
+#endif
/* Ignore number of character for alignment adjustment. */
- shr %cl, %VRAX
jz L(align_more)
bsf %VRAX, %VRAX
diff --git a/sysdeps/x86_64/multiarch/strcmp-evex.S b/sysdeps/x86_64/multiarch/strcmp-evex.S
index 06730ab..cea034f 100644
--- a/sysdeps/x86_64/multiarch/strcmp-evex.S
+++ b/sysdeps/x86_64/multiarch/strcmp-evex.S
@@ -209,7 +209,9 @@
returned. */
.section SECTION(.text), "ax", @progbits
- .align 16
+ /* Align 64 bytes here. This is to get the L(loop) block ideally
+ aligned for the DSB. */
+ .align 64
.type STRCMP, @function
.globl STRCMP
# ifdef USE_AS_STRCASECMP_L
@@ -509,9 +511,7 @@ L(ret4):
ret
# endif
- /* 32 byte align here ensures the main loop is ideally aligned
- for DSB. */
- .p2align 5
+ .p2align 4,, 4
L(more_3x_vec):
/* Safe to compare 4x vectors. */
VMOVU (VEC_SIZE)(%rdi), %VMM(0)
@@ -1426,10 +1426,9 @@ L(less_32_till_page):
L(ret_zero_page_cross_slow_case0):
xorl %eax, %eax
ret
-# endif
-
-
+# else
.p2align 4,, 10
+# endif
L(less_16_till_page):
cmpl $((VEC_SIZE - 8) / SIZE_OF_CHAR), %eax
ja L(less_8_till_page)
@@ -1482,8 +1481,12 @@ L(less_16_till_page):
# endif
jmp L(prepare_loop_aligned)
-
-
+# ifndef USE_AS_STRNCMP
+ /* Fits in aligning bytes. */
+L(ret_zero_4_loop):
+ xorl %eax, %eax
+ ret
+# endif
.p2align 4,, 10
L(less_8_till_page):
@@ -1554,6 +1557,7 @@ L(ret_less_8_wcs):
# ifdef USE_AS_STRNCMP
.p2align 4,, 2
+L(ret_zero_4_loop):
L(ret_zero_page_cross_slow_case1):
xorl %eax, %eax
ret
@@ -1586,10 +1590,6 @@ L(less_4_loop):
subq $-(CHAR_PER_VEC * 4), %rdx
# endif
jmp L(prepare_loop_aligned)
-
-L(ret_zero_4_loop):
- xorl %eax, %eax
- ret
L(ret_less_4_loop):
xorl %r8d, %eax
subl %r8d, %eax
diff --git a/sysdeps/x86_64/multiarch/strnlen-evex-base.S b/sysdeps/x86_64/multiarch/strnlen-evex-base.S
new file mode 100644
index 0000000..1c2cfdf
--- /dev/null
+++ b/sysdeps/x86_64/multiarch/strnlen-evex-base.S
@@ -0,0 +1,462 @@
+/* strnlen/wcsnlen optimized with 256/512-bit EVEX instructions.
+ Copyright (C) 2022-2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+
+#include <isa-level.h>
+
+#if ISA_SHOULD_BUILD (4)
+
+# include <sysdep.h>
+
+#ifdef USE_AS_WCSLEN
+# define VPCMPEQ vpcmpeqd
+# define VPTESTN vptestnmd
+# define VPMINU vpminud
+# define CHAR_SIZE 4
+#else
+# define VPCMPEQ vpcmpeqb
+# define VPTESTN vptestnmb
+# define VPMINU vpminub
+# define CHAR_SIZE 1
+#endif
+
+#define XZERO VMM_128(0)
+#define VZERO VMM(0)
+#define PAGE_SIZE 4096
+#define CHAR_PER_VEC (VEC_SIZE / CHAR_SIZE)
+
+#if CHAR_PER_VEC == 32
+# define SUB_SHORT(imm, reg) subb $(imm), %VGPR_SZ(reg, 8)
+#else
+# define SUB_SHORT(imm, reg) subl $(imm), %VGPR_SZ(reg, 32)
+#endif
+
+#ifdef USE_AS_WCSLEN
+/* For wide-character, we care more about limitting code size
+ than optimally aligning targets, so just cap nop padding
+ reasonably low. */
+# define P2ALIGN(...) .p2align 4,, 6
+# define P2ALIGN_CLAMPED(...) P2ALIGN(__VA_ARGS__)
+#else
+# define P2ALIGN(x) .p2align x
+# define P2ALIGN_CLAMPED(x, y) .p2align x,, y
+#endif
+
+ .section SECTION(.text), "ax", @progbits
+ /* Aligning entry point to 64 byte, provides better performance for
+ one vector length string. */
+ENTRY_P2ALIGN(STRNLEN, 6)
+ /* rdi is pointer to array, rsi is the upper limit. */
+
+ /* Check zero length. */
+ test %RSI_LP, %RSI_LP
+ jz L(zero)
+
+#ifdef __ILP32__
+ /* Clear the upper 32 bits. */
+ movl %esi, %esi
+#endif
+
+ vpxorq %XZERO, %XZERO, %XZERO
+
+ /* Check that we won't cross a page boundary with our first load. */
+ movl %edi, %eax
+ shll $20, %eax
+ cmpl $((PAGE_SIZE - VEC_SIZE) << 20), %eax
+ ja L(crosses_page_boundary)
+
+ /* Check the first VEC_SIZE bytes. Each bit in K0 represents a
+ null byte. */
+ VPCMPEQ (%rdi), %VZERO, %k0
+ KMOV %k0, %VRCX
+
+ /* If src (rcx) is zero, bsf does not change the result. NB:
+ Must use 64-bit bsf here so that upper bits of len are not
+ cleared. */
+ movq %rsi, %rax
+ bsfq %rcx, %rax
+
+ /* If rax > CHAR_PER_VEC then rcx must have been zero (no null
+ CHAR) and rsi must be > CHAR_PER_VEC. */
+ cmpq $CHAR_PER_VEC, %rax
+ ja L(more_1x_vec)
+
+ /* Check if first match in bounds. */
+ cmpq %rax, %rsi
+ cmovb %esi, %eax
+ ret
+
+#if VEC_SIZE == 32
+ P2ALIGN_CLAMPED(4, 2)
+L(zero):
+L(max_0):
+ movl %esi, %eax
+ ret
+#endif
+
+ P2ALIGN_CLAMPED(4, 10)
+L(more_1x_vec):
+L(cross_page_continue):
+ /* After this calculation, rax stores the number of elements
+ left to be processed The complexity comes from the fact some
+ elements get read twice due to alignment and we need to be
+ sure we don't count them twice (else, it would just be rsi -
+ CHAR_PER_VEC). */
+
+#ifdef USE_AS_WCSLEN
+ /* Need to compute directly for wcslen as CHAR_SIZE * rsi can
+ overflow. */
+ movq %rdi, %rax
+ andq $(VEC_SIZE * -1), %rdi
+ subq %rdi, %rax
+ sarq $2, %rax
+ leaq -(CHAR_PER_VEC * 1)(%rax, %rsi), %rax
+#else
+ /* Calculate ptr + N - VEC_SIZE, then mask off the low bits,
+ then subtract ptr to get the new aligned limit value. */
+ leaq (VEC_SIZE * -1)(%rsi, %rdi), %rax
+ andq $(VEC_SIZE * -1), %rdi
+ subq %rdi, %rax
+#endif
+
+ VPCMPEQ VEC_SIZE(%rdi), %VZERO, %k0
+
+ /* Checking here is faster for 256-bit but not 512-bit */
+#if VEC_SIZE == 0
+ KMOV %k0, %VRDX
+ test %VRDX, %VRDX
+ jnz L(last_vec_check)
+#endif
+
+ cmpq $(CHAR_PER_VEC * 2), %rax
+ ja L(more_2x_vec)
+
+L(last_2x_vec_or_less):
+
+ /* Checking here is faster for 512-bit but not 256-bit */
+#if VEC_SIZE != 0
+ KMOV %k0, %VRDX
+ test %VRDX, %VRDX
+ jnz L(last_vec_check)
+#endif
+
+ /* Check for the end of data. */
+ SUB_SHORT (CHAR_PER_VEC, rax)
+ jbe L(max_0)
+
+ /* Check the final remaining vector. */
+ VPCMPEQ (VEC_SIZE * 2)(%rdi), %VZERO, %k0
+ KMOV %k0, %VRDX
+ test %VRDX, %VRDX
+#if VEC_SIZE == 32
+ jz L(max_0)
+#else
+ jnz L(last_vec_check)
+ P2ALIGN_CLAMPED(4, 2)
+L(zero):
+L(max_0):
+ movl %esi, %eax
+ ret
+
+#endif
+ P2ALIGN_CLAMPED(4, 4)
+L(last_vec_check):
+ bsf %VRDX, %VRDX
+ sub %eax, %edx
+ lea (%rsi, %rdx), %eax
+ cmovae %esi, %eax
+ ret
+
+
+#if VEC_SIZE == 32
+ P2ALIGN_CLAMPED(4, 8)
+#endif
+L(last_4x_vec_or_less):
+ addl $(CHAR_PER_VEC * -4), %eax
+ VPCMPEQ (VEC_SIZE * 5)(%rdi), %VZERO, %k0
+
+#if VEC_SIZE == 64
+ KMOV %k0, %VRDX
+ test %VRDX, %VRDX
+ jnz L(last_vec_check)
+#endif
+
+ subq $(VEC_SIZE * -4), %rdi
+ cmpl $(CHAR_PER_VEC * 2), %eax
+ jbe L(last_2x_vec_or_less)
+
+ P2ALIGN_CLAMPED(4, 6)
+L(more_2x_vec):
+ /* Remaining length >= 2 * CHAR_PER_VEC so do VEC0/VEC1 without
+ rechecking bounds. */
+
+ /* Already checked in 256-bit case */
+#if VEC_SIZE != 0
+ KMOV %k0, %VRDX
+
+ test %VRDX, %VRDX
+ jnz L(first_vec_x1)
+#endif
+
+ VPCMPEQ (VEC_SIZE * 2)(%rdi), %VZERO, %k0
+ KMOV %k0, %VRDX
+
+ test %VRDX, %VRDX
+ jnz L(first_vec_x2)
+
+ cmpq $(CHAR_PER_VEC * 4), %rax
+ ja L(more_4x_vec)
+
+
+ VPCMPEQ (VEC_SIZE * 3)(%rdi), %VZERO, %k0
+ KMOV %k0, %VRDX
+ addl $(CHAR_PER_VEC * -2), %eax
+ test %VRDX, %VRDX
+ jnz L(last_vec_check)
+
+ subb $(CHAR_PER_VEC), %al
+ jbe L(max_1)
+
+ VPCMPEQ (VEC_SIZE * 4)(%rdi), %VZERO, %k0
+ KMOV %k0, %VRDX
+
+ test %VRDX, %VRDX
+ jnz L(last_vec_check)
+L(max_1):
+ movl %esi, %eax
+ ret
+
+
+ P2ALIGN_CLAMPED(4, 14)
+L(first_vec_x2):
+#if VEC_SIZE == 64
+ /* If VEC_SIZE == 64 we can fit logic for full return label in
+ spare bytes before next cache line. */
+ bsf %VRDX, %VRDX
+ sub %eax, %esi
+ leal (CHAR_PER_VEC * 1)(%rsi, %rdx), %eax
+ ret
+ P2ALIGN_CLAMPED(4, 6)
+#else
+ addl $CHAR_PER_VEC, %esi
+#endif
+L(first_vec_x1):
+ bsf %VRDX, %VRDX
+ sub %eax, %esi
+ leal (CHAR_PER_VEC * 0)(%rsi, %rdx), %eax
+ ret
+
+#if VEC_SIZE == 64
+ P2ALIGN_CLAMPED(4, 6)
+L(first_vec_x4):
+# if VEC_SIZE == 64
+ /* If VEC_SIZE == 64 we can fit logic for full return label in
+ spare bytes before next cache line. */
+ bsf %VRDX, %VRDX
+ sub %eax, %esi
+ leal (CHAR_PER_VEC * 3)(%rsi, %rdx), %eax
+ ret
+ P2ALIGN_CLAMPED(4, 6)
+# else
+ addl $CHAR_PER_VEC, %esi
+# endif
+L(first_vec_x3):
+ bsf %VRDX, %VRDX
+ sub %eax, %esi
+ leal (CHAR_PER_VEC * 2)(%rsi, %rdx), %eax
+ ret
+#endif
+
+ P2ALIGN_CLAMPED(6, 20)
+L(more_4x_vec):
+ VPCMPEQ (VEC_SIZE * 3)(%rdi), %VZERO, %k0
+ KMOV %k0, %VRDX
+ test %VRDX, %VRDX
+ jnz L(first_vec_x3)
+
+ VPCMPEQ (VEC_SIZE * 4)(%rdi), %VZERO, %k0
+ KMOV %k0, %VRDX
+ test %VRDX, %VRDX
+ jnz L(first_vec_x4)
+
+ /* Check if at last VEC_SIZE * 4 length before aligning for the
+ loop. */
+ cmpq $(CHAR_PER_VEC * 8), %rax
+ jbe L(last_4x_vec_or_less)
+
+
+ /* Compute number of words checked after aligning. */
+#ifdef USE_AS_WCSLEN
+ /* Need to compute directly for wcslen as CHAR_SIZE * rsi can
+ overflow. */
+ leaq (VEC_SIZE * -3)(%rdi), %rdx
+#else
+ leaq (VEC_SIZE * -3)(%rdi, %rax), %rax
+#endif
+
+ subq $(VEC_SIZE * -1), %rdi
+
+ /* Align data to VEC_SIZE * 4. */
+#if VEC_SIZE == 64
+ /* Saves code size. No evex512 processor has partial register
+ stalls. If that change this can be replaced with `andq
+ $-(VEC_SIZE * 4), %rdi`. */
+ xorb %dil, %dil
+#else
+ andq $-(VEC_SIZE * 4), %rdi
+#endif
+
+#ifdef USE_AS_WCSLEN
+ subq %rdi, %rdx
+ sarq $2, %rdx
+ addq %rdx, %rax
+#else
+ subq %rdi, %rax
+#endif
+
+ // mov %rdi, %rdx
+
+ P2ALIGN(6)
+L(loop):
+ /* VPMINU and VPCMP combination provide better performance as
+ compared to alternative combinations. */
+ VMOVA (VEC_SIZE * 4)(%rdi), %VMM(1)
+ VPMINU (VEC_SIZE * 5)(%rdi), %VMM(1), %VMM(2)
+ VMOVA (VEC_SIZE * 6)(%rdi), %VMM(3)
+ VPMINU (VEC_SIZE * 7)(%rdi), %VMM(3), %VMM(4)
+
+ VPTESTN %VMM(2), %VMM(2), %k0
+ VPTESTN %VMM(4), %VMM(4), %k1
+
+ subq $-(VEC_SIZE * 4), %rdi
+ KORTEST %k0, %k1
+
+ jnz L(loopend)
+ subq $(CHAR_PER_VEC * 4), %rax
+ ja L(loop)
+ mov %rsi, %rax
+ ret
+
+
+#if VEC_SIZE == 32
+ P2ALIGN_CLAMPED(4, 6)
+L(first_vec_x4):
+# if VEC_SIZE == 64
+ /* If VEC_SIZE == 64 we can fit logic for full return label in
+ spare bytes before next cache line. */
+ bsf %VRDX, %VRDX
+ sub %eax, %esi
+ leal (CHAR_PER_VEC * 3)(%rsi, %rdx), %eax
+ ret
+ P2ALIGN_CLAMPED(4, 6)
+# else
+ addl $CHAR_PER_VEC, %esi
+# endif
+L(first_vec_x3):
+ bsf %VRDX, %VRDX
+ sub %eax, %esi
+ leal (CHAR_PER_VEC * 2)(%rsi, %rdx), %eax
+ ret
+#endif
+
+
+ P2ALIGN_CLAMPED(4, 11)
+L(loopend):
+ /* We found a null terminator in one of the 4 vectors. */
+
+ /* Check the first vector. */
+ movq %rax, %r8
+ VPTESTN %VMM(1), %VMM(1), %k2
+ KMOV %k2, %VRCX
+ bsf %rcx, %r8
+
+ cmpq $(CHAR_PER_VEC), %r8
+ jbe L(end_vec)
+
+ /* Check the second vector. */
+ subq $(CHAR_PER_VEC), %rax
+ movq %rax, %r8
+ KMOV %k0, %VRCX
+ bsf %rcx, %r8
+
+ cmpq $(CHAR_PER_VEC), %r8
+ jbe L(end_vec)
+
+ /* Check the third vector. */
+ subq $(CHAR_PER_VEC), %rax
+ movq %rax, %r8
+ VPTESTN %VMM(3), %VMM(3), %k2
+ KMOV %k2, %VRCX
+ bsf %rcx, %r8
+
+ cmpq $(CHAR_PER_VEC), %r8
+ jbe L(end_vec)
+
+ /* It is in the fourth vector. */
+ subq $(CHAR_PER_VEC), %rax
+ movq %rax, %r8
+ KMOV %k1, %VRCX
+ bsf %rcx, %r8
+
+ P2ALIGN_CLAMPED(4, 3)
+L(end_vec):
+ /* Get the number that has been processed. */
+ movq %rsi, %rcx
+ subq %rax, %rcx
+
+ /* Add that to the offset we found the null terminator at. */
+ leaq (%r8, %rcx), %rax
+
+ /* Take the min of that and the limit. */
+ cmpq %rsi, %rax
+ cmovnb %rsi, %rax
+ ret
+
+ P2ALIGN_CLAMPED(4, 11)
+L(crosses_page_boundary):
+ /* Align data backwards to VEC_SIZE. */
+ shrl $20, %eax
+ movq %rdi, %rcx
+ andq $-VEC_SIZE, %rcx
+ VPCMPEQ (%rcx), %VZERO, %k0
+
+ KMOV %k0, %VRCX
+#ifdef USE_AS_WCSLEN
+ shrl $2, %eax
+ andl $(CHAR_PER_VEC - 1), %eax
+#endif
+ /* By this point rax contains number of bytes we need to skip. */
+ shrx %VRAX, %VRCX, %VRCX
+
+ /* Calculates CHAR_PER_VEC - eax and stores in eax. */
+ negl %eax
+ andl $(CHAR_PER_VEC - 1), %eax
+
+ movq %rsi, %rdx
+ bsf %VRCX, %VRDX
+ cmpq %rax, %rdx
+ ja L(cross_page_continue)
+
+ /* The vector had a null terminator or we are at the limit. */
+ movl %edx, %eax
+ cmpq %rdx, %rsi
+ cmovb %esi, %eax
+ ret
+
+END(STRNLEN)
+#endif
diff --git a/sysdeps/x86_64/multiarch/strnlen-evex.S b/sysdeps/x86_64/multiarch/strnlen-evex.S
index 91b1683..c412889 100644
--- a/sysdeps/x86_64/multiarch/strnlen-evex.S
+++ b/sysdeps/x86_64/multiarch/strnlen-evex.S
@@ -1,423 +1,7 @@
-/* strnlen/wcsnlen optimized with 256-bit EVEX instructions.
- Copyright (C) 2022-2024 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <https://www.gnu.org/licenses/>. */
-
-#include <isa-level.h>
-#include <sysdep.h>
-
-#if ISA_SHOULD_BUILD (4)
-
-# ifndef VEC_SIZE
-# include "x86-evex256-vecs.h"
-# endif
-
-
-# ifndef STRNLEN
-# define STRNLEN __strnlen_evex
-# endif
-
-# ifdef USE_AS_WCSLEN
-# define VPCMPEQ vpcmpeqd
-# define VPCMPNEQ vpcmpneqd
-# define VPTESTN vptestnmd
-# define VPTEST vptestmd
-# define VPMINU vpminud
-# define CHAR_SIZE 4
-
-# else
-# define VPCMPEQ vpcmpeqb
-# define VPCMPNEQ vpcmpneqb
-# define VPTESTN vptestnmb
-# define VPTEST vptestmb
-# define VPMINU vpminub
-# define CHAR_SIZE 1
-
-# define REG_WIDTH VEC_SIZE
-# endif
-
-# define CHAR_PER_VEC (VEC_SIZE / CHAR_SIZE)
-
-# include "reg-macros.h"
-
-# if CHAR_PER_VEC == 32
-# define SUB_SHORT(imm, reg) subb $(imm), %VGPR_SZ(reg, 8)
-# else
-# define SUB_SHORT(imm, reg) subl $(imm), %VGPR_SZ(reg, 32)
-# endif
-
-
-
-# if CHAR_PER_VEC == 64
-# define FALLTHROUGH_RETURN_OFFSET (CHAR_PER_VEC * 3)
-# else
-# define FALLTHROUGH_RETURN_OFFSET (CHAR_PER_VEC * 2)
-# endif
-
-
-# define XZERO VMM_128(0)
-# define VZERO VMM(0)
-# define PAGE_SIZE 4096
-
- .section SECTION(.text), "ax", @progbits
-ENTRY_P2ALIGN (STRNLEN, 6)
- /* Check zero length. */
- test %RSI_LP, %RSI_LP
- jz L(zero)
-# ifdef __ILP32__
- /* Clear the upper 32 bits. */
- movl %esi, %esi
-# endif
-
- movl %edi, %eax
- vpxorq %XZERO, %XZERO, %XZERO
- andl $(PAGE_SIZE - 1), %eax
- cmpl $(PAGE_SIZE - VEC_SIZE), %eax
- ja L(cross_page_boundary)
-
- /* Check the first VEC_SIZE bytes. Each bit in K0 represents a
- null byte. */
- VPCMPEQ (%rdi), %VZERO, %k0
-
- KMOV %k0, %VRCX
- movq %rsi, %rax
-
- /* If src (rcx) is zero, bsf does not change the result. NB:
- Must use 64-bit bsf here so that upper bits of len are not
- cleared. */
- bsfq %rcx, %rax
- /* If rax > CHAR_PER_VEC then rcx must have been zero (no null
- CHAR) and rsi must be > CHAR_PER_VEC. */
- cmpq $CHAR_PER_VEC, %rax
- ja L(more_1x_vec)
- /* Check if first match in bounds. */
- cmpq %rax, %rsi
- cmovb %esi, %eax
- ret
-
-
-# if CHAR_PER_VEC != 32
- .p2align 4,, 2
-L(zero):
-L(max_0):
- movl %esi, %eax
- ret
-# endif
-
- /* Aligned more for strnlen compares remaining length vs 2 *
- CHAR_PER_VEC, 4 * CHAR_PER_VEC, and 8 * CHAR_PER_VEC before
- going to the loop. */
- .p2align 4,, 10
-L(more_1x_vec):
-L(cross_page_continue):
- /* Compute number of words checked after aligning. */
-# ifdef USE_AS_WCSLEN
- /* Need to compute directly for wcslen as CHAR_SIZE * rsi can
- overflow. */
- movq %rdi, %rax
- andq $(VEC_SIZE * -1), %rdi
- subq %rdi, %rax
- sarq $2, %rax
- leaq -(CHAR_PER_VEC * 1)(%rax, %rsi), %rax
-# else
- leaq (VEC_SIZE * -1)(%rsi, %rdi), %rax
- andq $(VEC_SIZE * -1), %rdi
- subq %rdi, %rax
-# endif
-
-
- VPCMPEQ VEC_SIZE(%rdi), %VZERO, %k0
-
- cmpq $(CHAR_PER_VEC * 2), %rax
- ja L(more_2x_vec)
-
-L(last_2x_vec_or_less):
- KMOV %k0, %VRDX
- test %VRDX, %VRDX
- jnz L(last_vec_check)
-
- /* Check the end of data. */
- SUB_SHORT (CHAR_PER_VEC, rax)
- jbe L(max_0)
- VPCMPEQ (VEC_SIZE * 2)(%rdi), %VZERO, %k0
- KMOV %k0, %VRDX
- test %VRDX, %VRDX
- jz L(max_0)
- /* Best place for LAST_VEC_CHECK if ZMM. */
- .p2align 4,, 8
-L(last_vec_check):
- bsf %VRDX, %VRDX
- sub %eax, %edx
- lea (%rsi, %rdx), %eax
- cmovae %esi, %eax
- ret
-
-# if CHAR_PER_VEC == 32
- .p2align 4,, 2
-L(zero):
-L(max_0):
- movl %esi, %eax
- ret
-# endif
-
- .p2align 4,, 8
-L(last_4x_vec_or_less):
- addl $(CHAR_PER_VEC * -4), %eax
- VPCMPEQ (VEC_SIZE * 5)(%rdi), %VZERO, %k0
- subq $(VEC_SIZE * -4), %rdi
- cmpl $(CHAR_PER_VEC * 2), %eax
- jbe L(last_2x_vec_or_less)
-
- .p2align 4,, 6
-L(more_2x_vec):
- /* Remaining length >= 2 * CHAR_PER_VEC so do VEC0/VEC1 without
- rechecking bounds. */
-
- KMOV %k0, %VRDX
-
- test %VRDX, %VRDX
- jnz L(first_vec_x1)
-
- VPCMPEQ (VEC_SIZE * 2)(%rdi), %VZERO, %k0
- KMOV %k0, %VRDX
- test %VRDX, %VRDX
- jnz L(first_vec_x2)
-
- cmpq $(CHAR_PER_VEC * 4), %rax
- ja L(more_4x_vec)
-
-
- VPCMPEQ (VEC_SIZE * 3)(%rdi), %VZERO, %k0
- KMOV %k0, %VRDX
- addl $(CHAR_PER_VEC * -2), %eax
- test %VRDX, %VRDX
- jnz L(last_vec_check)
-
- subl $(CHAR_PER_VEC), %eax
- jbe L(max_1)
-
- VPCMPEQ (VEC_SIZE * 4)(%rdi), %VZERO, %k0
- KMOV %k0, %VRDX
-
- test %VRDX, %VRDX
- jnz L(last_vec_check)
-L(max_1):
- movl %esi, %eax
- ret
-
- .p2align 4,, 3
-L(first_vec_x2):
-# if VEC_SIZE == 64
- /* If VEC_SIZE == 64 we can fit logic for full return label in
- spare bytes before next cache line. */
- bsf %VRDX, %VRDX
- sub %eax, %esi
- leal (CHAR_PER_VEC * 1)(%rsi, %rdx), %eax
- ret
- .p2align 4,, 6
-# else
- addl $CHAR_PER_VEC, %esi
-# endif
-L(first_vec_x1):
- bsf %VRDX, %VRDX
- sub %eax, %esi
- leal (CHAR_PER_VEC * 0)(%rsi, %rdx), %eax
- ret
-
-
- .p2align 4,, 6
-L(first_vec_x4):
-# if VEC_SIZE == 64
- /* If VEC_SIZE == 64 we can fit logic for full return label in
- spare bytes before next cache line. */
- bsf %VRDX, %VRDX
- sub %eax, %esi
- leal (CHAR_PER_VEC * 3)(%rsi, %rdx), %eax
- ret
- .p2align 4,, 6
-# else
- addl $CHAR_PER_VEC, %esi
-# endif
-L(first_vec_x3):
- bsf %VRDX, %VRDX
- sub %eax, %esi
- leal (CHAR_PER_VEC * 2)(%rsi, %rdx), %eax
- ret
-
- .p2align 4,, 5
-L(more_4x_vec):
- VPCMPEQ (VEC_SIZE * 3)(%rdi), %VZERO, %k0
- KMOV %k0, %VRDX
- test %VRDX, %VRDX
- jnz L(first_vec_x3)
-
- VPCMPEQ (VEC_SIZE * 4)(%rdi), %VZERO, %k0
- KMOV %k0, %VRDX
- test %VRDX, %VRDX
- jnz L(first_vec_x4)
-
- /* Check if at last VEC_SIZE * 4 length before aligning for the
- loop. */
- cmpq $(CHAR_PER_VEC * 8), %rax
- jbe L(last_4x_vec_or_less)
-
-
- /* Compute number of words checked after aligning. */
-# ifdef USE_AS_WCSLEN
- /* Need to compute directly for wcslen as CHAR_SIZE * rsi can
- overflow. */
- leaq (VEC_SIZE * -3)(%rdi), %rdx
-# else
- leaq (VEC_SIZE * -3)(%rdi, %rax), %rax
-# endif
-
- subq $(VEC_SIZE * -1), %rdi
-
- /* Align data to VEC_SIZE * 4. */
-# if VEC_SIZE == 64
- /* Saves code size. No evex512 processor has partial register
- stalls. If that change this can be replaced with `andq
- $-(VEC_SIZE * 4), %rdi`. */
- xorb %dil, %dil
-# else
- andq $-(VEC_SIZE * 4), %rdi
-# endif
-
-# ifdef USE_AS_WCSLEN
- subq %rdi, %rdx
- sarq $2, %rdx
- addq %rdx, %rax
-# else
- subq %rdi, %rax
-# endif
- /* Compare 4 * VEC at a time forward. */
- .p2align 4,, 11
-L(loop_4x_vec):
- VMOVA (VEC_SIZE * 4)(%rdi), %VMM(1)
- VPMINU (VEC_SIZE * 5)(%rdi), %VMM(1), %VMM(2)
- VMOVA (VEC_SIZE * 6)(%rdi), %VMM(3)
- VPMINU (VEC_SIZE * 7)(%rdi), %VMM(3), %VMM(4)
- VPTESTN %VMM(2), %VMM(2), %k0
- VPTESTN %VMM(4), %VMM(4), %k2
- subq $-(VEC_SIZE * 4), %rdi
- /* Break if at end of length. */
- subq $(CHAR_PER_VEC * 4), %rax
- jbe L(loop_len_end)
-
-
- KORTEST %k0, %k2
- jz L(loop_4x_vec)
-
-
-L(loop_last_4x_vec):
- movq %rsi, %rcx
- subq %rax, %rsi
- VPTESTN %VMM(1), %VMM(1), %k1
- KMOV %k1, %VRDX
- test %VRDX, %VRDX
- jnz L(last_vec_x0)
-
- KMOV %k0, %VRDX
- test %VRDX, %VRDX
- jnz L(last_vec_x1)
-
- VPTESTN %VMM(3), %VMM(3), %k0
-
- /* Separate logic for VEC_SIZE == 64 and VEC_SIZE == 32 for
- returning last 2x VEC. For VEC_SIZE == 64 we test each VEC
- individually, for VEC_SIZE == 32 we combine them in a single
- 64-bit GPR. */
-# if CHAR_PER_VEC == 64
- KMOV %k0, %VRDX
- test %VRDX, %VRDX
- jnz L(last_vec_x2)
- KMOV %k2, %VRDX
-# else
- /* We can only combine last 2x VEC masks if CHAR_PER_VEC <= 32.
- */
- kmovd %k2, %edx
- kmovd %k0, %eax
- salq $CHAR_PER_VEC, %rdx
- orq %rax, %rdx
-# endif
-
- /* first_vec_x3 for strlen-ZMM and first_vec_x2 for strlen-YMM.
- */
- bsfq %rdx, %rdx
- leaq (FALLTHROUGH_RETURN_OFFSET - CHAR_PER_VEC * 4)(%rsi, %rdx), %rax
- cmpq %rax, %rcx
- cmovb %rcx, %rax
- ret
-
- /* Handle last 4x VEC after loop. All VECs have been loaded. */
- .p2align 4,, 4
-L(loop_len_end):
- KORTEST %k0, %k2
- jnz L(loop_last_4x_vec)
- movq %rsi, %rax
- ret
-
-
-# if CHAR_PER_VEC == 64
- /* Since we can't combine the last 2x VEC for VEC_SIZE == 64
- need return label for it. */
- .p2align 4,, 8
-L(last_vec_x2):
- bsf %VRDX, %VRDX
- leaq (CHAR_PER_VEC * -2)(%rsi, %rdx), %rax
- cmpq %rax, %rcx
- cmovb %rcx, %rax
- ret
-# endif
-
-
- .p2align 4,, 10
-L(last_vec_x1):
- addq $CHAR_PER_VEC, %rsi
-L(last_vec_x0):
- bsf %VRDX, %VRDX
- leaq (CHAR_PER_VEC * -4)(%rsi, %rdx), %rax
- cmpq %rax, %rcx
- cmovb %rcx, %rax
- ret
-
-
- .p2align 4,, 8
-L(cross_page_boundary):
- /* Align data to VEC_SIZE. */
- movq %rdi, %rcx
- andq $-VEC_SIZE, %rcx
- VPCMPEQ (%rcx), %VZERO, %k0
-
- KMOV %k0, %VRCX
-# ifdef USE_AS_WCSLEN
- shrl $2, %eax
- andl $(CHAR_PER_VEC - 1), %eax
-# endif
- shrx %VRAX, %VRCX, %VRCX
-
- negl %eax
- andl $(CHAR_PER_VEC - 1), %eax
- movq %rsi, %rdx
- bsf %VRCX, %VRDX
- cmpq %rax, %rdx
- ja L(cross_page_continue)
- movl %edx, %eax
- cmpq %rdx, %rsi
- cmovb %esi, %eax
- ret
-END (STRNLEN)
+#ifndef STRNLEN
+#define STRNLEN __strnlen_evex
#endif
+
+#include "x86-evex256-vecs.h"
+#include "reg-macros.h"
+#include "strnlen-evex-base.S"
diff --git a/sysdeps/x86_64/multiarch/strnlen-evex512.S b/sysdeps/x86_64/multiarch/strnlen-evex512.S
index f8e5588..8ef5407 100644
--- a/sysdeps/x86_64/multiarch/strnlen-evex512.S
+++ b/sysdeps/x86_64/multiarch/strnlen-evex512.S
@@ -1,264 +1,7 @@
-/* Placeholder function, not used by any processor at the moment.
- Copyright (C) 2022-2024 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <https://www.gnu.org/licenses/>. */
-
#ifndef STRNLEN
#define STRNLEN __strnlen_evex512
#endif
#include "x86-evex512-vecs.h"
#include "reg-macros.h"
-
-#include <isa-level.h>
-
-#if ISA_SHOULD_BUILD (4)
-
-# include <sysdep.h>
-
-# ifdef USE_AS_WCSLEN
-# define VPCMPEQ vpcmpeqd
-# define VPTESTN vptestnmd
-# define VPMINU vpminud
-# define CHAR_SIZE 4
-# else
-# define VPCMPEQ vpcmpeqb
-# define VPTESTN vptestnmb
-# define VPMINU vpminub
-# define CHAR_SIZE 1
-# endif
-
-# define PAGE_SIZE 4096
-# define CHAR_PER_VEC (VEC_SIZE / CHAR_SIZE)
-
- .section SECTION(.text),"ax",@progbits
-/* Aligning entry point to 64 byte, provides better performance for
- one vector length string. */
-ENTRY_P2ALIGN (STRNLEN, 6)
- /* Check zero length. */
- test %RSI_LP, %RSI_LP
- jz L(ret_max)
-# ifdef __ILP32__
- /* Clear the upper 32 bits. */
- movl %esi, %esi
-# endif
-
- movl %edi, %eax
- vpxorq %VMM_128(0), %VMM_128(0), %VMM_128(0)
- sall $20, %eax
- cmpl $((PAGE_SIZE - VEC_SIZE) << 20), %eax
- ja L(page_cross)
-
- /* Compare [w]char for null, mask bit will be set for match. */
- VPCMPEQ (%rdi), %VMM(0), %k0
- KMOV %k0, %VRCX
- /* Store max length in rax. */
- mov %rsi, %rax
- /* If rcx is 0, rax will have max length. We can not use VRCX
- and VRAX here for evex256 because, upper 32 bits may be
- undefined for ecx and eax. */
- bsfq %rcx, %rax
- cmp $CHAR_PER_VEC, %rax
- ja L(align_more)
- cmpq %rax, %rsi
- cmovb %esi, %eax
- ret
-
- /* At this point vector max length reached. */
- .p2align 4,,3
-L(ret_max):
- movq %rsi, %rax
- ret
-
-L(align_more):
- mov %rdi, %rax
- /* Align rax to VEC_SIZE. */
- andq $-VEC_SIZE, %rax
- movq %rdi, %rdx
- subq %rax, %rdx
-# ifdef USE_AS_WCSLEN
- shr $2, %VRDX
-# endif
- /* At this point rdx contains [w]chars already compared. */
- leaq -CHAR_PER_VEC(%rsi, %rdx), %rdx
- /* At this point rdx contains number of w[char] needs to go.
- Now onwards rdx will keep decrementing with each compare. */
-
- /* Loop unroll 4 times for 4 vector loop. */
- VPCMPEQ VEC_SIZE(%rax), %VMM(0), %k0
- subq $-VEC_SIZE, %rax
- KMOV %k0, %VRCX
- test %VRCX, %VRCX
- jnz L(ret_vec_x1)
-
- subq $CHAR_PER_VEC, %rdx
- jbe L(ret_max)
-
- VPCMPEQ VEC_SIZE(%rax), %VMM(0), %k0
- KMOV %k0, %VRCX
- test %VRCX, %VRCX
- jnz L(ret_vec_x2)
-
- subq $CHAR_PER_VEC, %rdx
- jbe L(ret_max)
-
- VPCMPEQ (VEC_SIZE * 2)(%rax), %VMM(0), %k0
- KMOV %k0, %VRCX
- test %VRCX, %VRCX
- jnz L(ret_vec_x3)
-
- subq $CHAR_PER_VEC, %rdx
- jbe L(ret_max)
-
- VPCMPEQ (VEC_SIZE * 3)(%rax), %VMM(0), %k0
- KMOV %k0, %VRCX
- test %VRCX, %VRCX
- jnz L(ret_vec_x4)
-
- subq $CHAR_PER_VEC, %rdx
- jbe L(ret_max)
- /* Save pointer before 4 x VEC_SIZE alignment. */
- movq %rax, %rcx
-
- /* Align address to VEC_SIZE * 4 for loop. */
- andq $-(VEC_SIZE * 4), %rax
-
- subq %rax, %rcx
-# ifdef USE_AS_WCSLEN
- shr $2, %VRCX
-# endif
- /* rcx contains number of [w]char will be recompared due to
- alignment fixes. rdx must be incremented by rcx to offset
- alignment adjustment. */
- addq %rcx, %rdx
- /* Need jump as we don't want to add/subtract rdx for first
- iteration of 4 x VEC_SIZE aligned loop. */
-
- .p2align 4,,11
-L(loop):
- /* VPMINU and VPCMP combination provide better performance as
- compared to alternative combinations. */
- VMOVA (VEC_SIZE * 4)(%rax), %VMM(1)
- VPMINU (VEC_SIZE * 5)(%rax), %VMM(1), %VMM(2)
- VMOVA (VEC_SIZE * 6)(%rax), %VMM(3)
- VPMINU (VEC_SIZE * 7)(%rax), %VMM(3), %VMM(4)
-
- VPTESTN %VMM(2), %VMM(2), %k0
- VPTESTN %VMM(4), %VMM(4), %k1
-
- subq $-(VEC_SIZE * 4), %rax
- KORTEST %k0, %k1
-
- jnz L(loopend)
- subq $(CHAR_PER_VEC * 4), %rdx
- ja L(loop)
- mov %rsi, %rax
- ret
-
-L(loopend):
-
- VPTESTN %VMM(1), %VMM(1), %k2
- KMOV %k2, %VRCX
- test %VRCX, %VRCX
- jnz L(ret_vec_x1)
-
- KMOV %k0, %VRCX
- /* At this point, if k0 is non zero, null char must be in the
- second vector. */
- test %VRCX, %VRCX
- jnz L(ret_vec_x2)
-
- VPTESTN %VMM(3), %VMM(3), %k3
- KMOV %k3, %VRCX
- test %VRCX, %VRCX
- jnz L(ret_vec_x3)
- /* At this point null [w]char must be in the fourth vector so no
- need to check. */
- KMOV %k1, %VRCX
-
- /* Fourth, third, second vector terminating are pretty much
- same, implemented this way to avoid branching and reuse code
- from pre loop exit condition. */
-L(ret_vec_x4):
- bsf %VRCX, %VRCX
- subq %rdi, %rax
-# ifdef USE_AS_WCSLEN
- subq $-(VEC_SIZE * 3), %rax
- shrq $2, %rax
- addq %rcx, %rax
-# else
- leaq (VEC_SIZE * 3)(%rcx, %rax), %rax
-# endif
-
- cmpq %rsi, %rax
- cmovnb %rsi, %rax
- ret
-
-L(ret_vec_x3):
- bsf %VRCX, %VRCX
- subq %rdi, %rax
-# ifdef USE_AS_WCSLEN
- subq $-(VEC_SIZE * 2), %rax
- shrq $2, %rax
- addq %rcx, %rax
-# else
- leaq (VEC_SIZE * 2)(%rcx, %rax), %rax
-# endif
- cmpq %rsi, %rax
- cmovnb %rsi, %rax
- ret
-
-L(ret_vec_x2):
- subq $-VEC_SIZE, %rax
-L(ret_vec_x1):
- bsf %VRCX, %VRCX
- subq %rdi, %rax
-# ifdef USE_AS_WCSLEN
- shrq $2, %rax
-# endif
- addq %rcx, %rax
- cmpq %rsi, %rax
- cmovnb %rsi, %rax
- ret
-
-L(page_cross):
- mov %rdi, %rax
- movl %edi, %ecx
- andl $(VEC_SIZE - 1), %ecx
-# ifdef USE_AS_WCSLEN
- sarl $2, %ecx
-# endif
- /* ecx contains number of w[char] to be skipped as a result
- of address alignment. */
- andq $-VEC_SIZE, %rax
- VPCMPEQ (%rax), %VMM(0), %k0
- KMOV %k0, %VRDX
- /* Ignore number of character for alignment adjustment. */
- shr %cl, %VRDX
- jnz L(page_cross_end)
- movl $CHAR_PER_VEC, %eax
- sub %ecx, %eax
- cmp %rax, %rsi
- ja L(align_more)
-
-L(page_cross_end):
- bsf %VRDX, %VRAX
- cmpq %rsi, %rax
- cmovnb %esi, %eax
- ret
-
-END (STRNLEN)
-#endif
+#include "strnlen-evex-base.S" \ No newline at end of file
diff --git a/sysdeps/x86_64/nptl/tcb-offsets.sym b/sysdeps/x86_64/nptl/tcb-offsets.sym
index 2bbd563..988a4b8 100644
--- a/sysdeps/x86_64/nptl/tcb-offsets.sym
+++ b/sysdeps/x86_64/nptl/tcb-offsets.sym
@@ -13,6 +13,3 @@ MULTIPLE_THREADS_OFFSET offsetof (tcbhead_t, multiple_threads)
POINTER_GUARD offsetof (tcbhead_t, pointer_guard)
FEATURE_1_OFFSET offsetof (tcbhead_t, feature_1)
SSP_BASE_OFFSET offsetof (tcbhead_t, ssp_base)
-
--- Not strictly offsets, but these values are also used in the TCB.
-TCB_CANCELED_BITMASK CANCELED_BITMASK
diff --git a/timezone/private.h b/timezone/private.h
index 0dac6af..c330410 100644
--- a/timezone/private.h
+++ b/timezone/private.h
@@ -19,19 +19,22 @@
/* PORT_TO_C89 means the code should work even if the underlying
compiler and library support only C89 plus C99's 'long long'
- and perhaps a few other extensions to C89. SUPPORT_C89 means the
- tzcode library should support C89 callers in addition to the usual
- support for C99-and-later callers; however, C89 support can trigger
- latent bugs in C99-and-later callers. These macros are obsolescent,
- and the plan is to remove them along with any code needed only when
- they are nonzero. A good time to do that might be in the year 2029
+ and perhaps a few other extensions to C89.
+
+ This macro is obsolescent, and the plan is to remove it along with
+ associated code. A good time to do that might be in the year 2029
because RHEL 7 (whose GCC defaults to C89) extended life cycle
support (ELS) is scheduled to end on 2028-06-30. */
#ifndef PORT_TO_C89
# define PORT_TO_C89 0
#endif
+
+/* SUPPORT_C89 means the tzcode library should support C89 callers
+ in addition to the usual support for C99-and-later callers.
+ This defaults to 1 as POSIX requires, even though that can trigger
+ latent bugs in callers. */
#ifndef SUPPORT_C89
-# define SUPPORT_C89 0
+# define SUPPORT_C89 1
#endif
#ifndef __STDC_VERSION__
@@ -69,10 +72,6 @@
** You can override these in your C compiler options, e.g. '-DHAVE_GETTEXT=1'.
*/
-#ifndef HAVE_DECL_ASCTIME_R
-# define HAVE_DECL_ASCTIME_R 1
-#endif
-
#if !defined HAVE__GENERIC && defined __has_extension
# if !__has_extension(c_generic_selections)
# define HAVE__GENERIC 0
@@ -236,6 +235,31 @@
# include <unistd.h> /* for R_OK, and other POSIX goodness */
#endif /* HAVE_UNISTD_H */
+/* SUPPORT_POSIX2008 means the tzcode library should support
+ POSIX.1-2017-and-earlier callers in addition to the usual support for
+ POSIX.1-2024-and-later callers; however, this can be
+ incompatible with POSIX.1-2024-and-later callers.
+ This macro is obsolescent, and the plan is to remove it
+ along with any code needed only when it is nonzero.
+ A good time to do that might be in the year 2034.
+ This macro's name is SUPPORT_POSIX2008 because _POSIX_VERSION == 200809
+ in POSIX.1-2017, a minor revision of POSIX.1-2008. */
+#ifndef SUPPORT_POSIX2008
+# if defined _POSIX_VERSION && _POSIX_VERSION <= 200809
+# define SUPPORT_POSIX2008 1
+# else
+# define SUPPORT_POSIX2008 0
+# endif
+#endif
+
+#ifndef HAVE_DECL_ASCTIME_R
+# if SUPPORT_POSIX2008
+# define HAVE_DECL_ASCTIME_R 1
+# else
+# define HAVE_DECL_ASCTIME_R 0
+# endif
+#endif
+
#ifndef HAVE_STRFTIME_L
# if _POSIX_VERSION < 200809
# define HAVE_STRFTIME_L 0
@@ -460,14 +484,6 @@ typedef unsigned long uintmax_t;
# define ckd_mul(r, a, b) __builtin_mul_overflow(a, b, r)
#endif
-#if 3 <= __GNUC__
-# define ATTRIBUTE_MALLOC __attribute__((malloc))
-# define ATTRIBUTE_FORMAT(spec) __attribute__((format spec))
-#else
-# define ATTRIBUTE_MALLOC /* empty */
-# define ATTRIBUTE_FORMAT(spec) /* empty */
-#endif
-
#if (defined __has_c_attribute \
&& (202311 <= __STDC_VERSION__ || !defined __STRICT_ANSI__))
# define HAVE___HAS_C_ATTRIBUTE true
@@ -535,24 +551,27 @@ typedef unsigned long uintmax_t;
# endif
#endif
#ifndef ATTRIBUTE_REPRODUCIBLE
-# if 3 <= __GNUC__
-# define ATTRIBUTE_REPRODUCIBLE __attribute__((pure))
-# else
-# define ATTRIBUTE_REPRODUCIBLE /* empty */
-# endif
+# define ATTRIBUTE_REPRODUCIBLE /* empty */
#endif
-#if HAVE___HAS_C_ATTRIBUTE
-# if __has_c_attribute(unsequenced)
-# define ATTRIBUTE_UNSEQUENCED [[unsequenced]]
-# endif
+/* GCC attributes that are useful in tzcode.
+ __attribute__((pure)) is stricter than [[reproducible]],
+ so the latter is an adequate substitute in non-GCC C23 platforms. */
+#if __GNUC__ < 3
+# define ATTRIBUTE_FORMAT(spec) /* empty */
+# define ATTRIBUTE_PURE ATTRIBUTE_REPRODUCIBLE
+#else
+# define ATTRIBUTE_FORMAT(spec) __attribute__((format spec))
+# define ATTRIBUTE_PURE __attribute__((pure))
#endif
-#ifndef ATTRIBUTE_UNSEQUENCED
-# if 3 <= __GNUC__
-# define ATTRIBUTE_UNSEQUENCED __attribute__((const))
-# else
-# define ATTRIBUTE_UNSEQUENCED /* empty */
-# endif
+
+/* Avoid GCC bug 114833 <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114833>.
+ Remove this macro and its uses when the bug is fixed in a GCC release,
+ because only the latest GCC matters for $(GCC_DEBUG_FLAGS). */
+#ifdef GCC_LINT
+# define ATTRIBUTE_PURE_114833 ATTRIBUTE_PURE
+#else
+# define ATTRIBUTE_PURE_114833 /* empty */
#endif
#if (__STDC_VERSION__ < 199901 && !defined restrict \
@@ -604,12 +623,8 @@ typedef time_tz tz_time_t;
# undef asctime
# define asctime tz_asctime
-# undef asctime_r
-# define asctime_r tz_asctime_r
# undef ctime
# define ctime tz_ctime
-# undef ctime_r
-# define ctime_r tz_ctime_r
# undef difftime
# define difftime tz_difftime
# undef gmtime
@@ -654,6 +669,12 @@ typedef time_tz tz_time_t;
# define tzfree tz_tzfree
# undef tzset
# define tzset tz_tzset
+# if SUPPORT_POSIX2008
+# undef asctime_r
+# define asctime_r tz_asctime_r
+# undef ctime_r
+# define ctime_r tz_ctime_r
+# endif
# if HAVE_STRFTIME_L
# undef strftime_l
# define strftime_l tz_strftime_l
@@ -679,10 +700,12 @@ typedef time_tz tz_time_t;
# define DEPRECATED_IN_C23 ATTRIBUTE_DEPRECATED
# endif
DEPRECATED_IN_C23 char *asctime(struct tm const *);
-char *asctime_r(struct tm const *restrict, char *restrict);
DEPRECATED_IN_C23 char *ctime(time_t const *);
+#if SUPPORT_POSIX2008
+char *asctime_r(struct tm const *restrict, char *restrict);
char *ctime_r(time_t const *, char *);
-ATTRIBUTE_UNSEQUENCED double difftime(time_t, time_t);
+#endif
+double difftime(time_t, time_t);
size_t strftime(char *restrict, size_t, char const *restrict,
struct tm const *restrict);
# if HAVE_STRFTIME_L
@@ -713,7 +736,7 @@ void tzset(void);
time_t timegm(struct tm *);
#endif
-#if !HAVE_DECL_ASCTIME_R && !defined asctime_r
+#if !HAVE_DECL_ASCTIME_R && !defined asctime_r && SUPPORT_POSIX2008
extern char *asctime_r(struct tm const *restrict, char *restrict);
#endif
@@ -798,10 +821,10 @@ timezone_t tzalloc(char const *);
void tzfree(timezone_t);
# if STD_INSPIRED
# if TZ_TIME_T || !defined posix2time_z
-ATTRIBUTE_REPRODUCIBLE time_t posix2time_z(timezone_t, time_t);
+ATTRIBUTE_PURE time_t posix2time_z(timezone_t, time_t);
# endif
# if TZ_TIME_T || !defined time2posix_z
-ATTRIBUTE_REPRODUCIBLE time_t time2posix_z(timezone_t, time_t);
+ATTRIBUTE_PURE time_t time2posix_z(timezone_t, time_t);
# endif
# endif
#endif
@@ -973,8 +996,9 @@ enum {
/* How many years to generate (in zic.c) or search through (in localtime.c).
This is two years larger than the obvious 400, to avoid edge cases.
- E.g., suppose a non-POSIX.1-2017 rule applies from 2012 on with transitions
- in March and September, plus one-off transitions in November 2013.
+ E.g., suppose a rule applies from 2012 on with transitions
+ in March and September, plus one-off transitions in November 2013,
+ and suppose the rule cannot be expressed as a proleptic TZ string.
If zic looked only at the last 400 years, it would set max_year=2413,
with the intent that the 400 years 2014 through 2413 will be repeated.
The last transition listed in the tzfile would be in 2413-09,
diff --git a/timezone/tzfile.h b/timezone/tzfile.h
index 3155010..b1541466 100644
--- a/timezone/tzfile.h
+++ b/timezone/tzfile.h
@@ -76,14 +76,16 @@ struct tzhead {
** If tzh_version is '2' or greater, the above is followed by a second instance
** of tzhead and a second instance of the data in which each coded transition
** time uses 8 rather than 4 chars,
-** then a POSIX-TZ-environment-variable-style string for use in handling
+** then a POSIX.1-2017 proleptic TZ string for use in handling
** instants after the last transition time stored in the file
** (with nothing between the newlines if there is no POSIX.1-2017
** representation for such instants).
**
-** If tz_version is '3' or greater, the above is extended as follows.
+** If tz_version is '3' or greater, the TZ string can be any POSIX.1-2024
+** proleptic TZ string, which means the above is extended as follows.
** First, the TZ string's hour offset may range from -167
-** through 167 as compared to the POSIX-required 0 through 24.
+** through 167 as compared to the range 0 through 24 required
+** by POSIX.1-2017 and earlier.
** Second, its DST start time may be January 1 at 00:00 and its stop
** time December 31 at 24:00 plus the difference between DST and
** standard time, indicating DST all year.
diff --git a/timezone/tzselect.ksh b/timezone/tzselect.ksh
index 38941bb..ca3d82c 100755
--- a/timezone/tzselect.ksh
+++ b/timezone/tzselect.ksh
@@ -20,12 +20,6 @@ REPORT_BUGS_TO=tz@iana.org
# Korn Shell <http://www.kornshell.com/>
# MirBSD Korn Shell <http://www.mirbsd.org/mksh.htm>
#
-# For portability to Solaris 10 /bin/sh (supported by Oracle through
-# January 2027) this script avoids some POSIX features and common
-# extensions, such as $(...), $((...)), ! CMD, unquoted ^, ${#ID},
-# ${ID##PAT}, ${ID%%PAT}, and $10. Although some of these constructs
-# work sometimes, it's simpler to avoid them entirely.
-#
# This script also uses several features of POSIX awk.
# If your host lacks awk, or has an old awk that does not conform to POSIX,
# you can use any of the following free programs instead:
@@ -45,7 +39,6 @@ set -f
# Specify default values for environment variables if they are unset.
: ${AWK=awk}
-: ${PWD=`pwd`}
: ${TZDIR=$PWD}
# Output one argument as-is to standard output, with trailing newline.
@@ -54,13 +47,6 @@ say() {
printf '%s\n' "$1"
}
-# Check for awk POSIX compliance.
-($AWK -v x=y 'BEGIN { exit 123 }') <>/dev/null >&0 2>&0
-[ $? = 123 ] || {
- say >&2 "$0: Sorry, your '$AWK' program is not POSIX compatible."
- exit 1
-}
-
coord=
location_limit=10
zonetabtype=zone1970
@@ -117,8 +103,7 @@ then
else
doselect() {
# Field width of the prompt numbers.
- print_nargs_length="BEGIN {print length(\"$#\");}"
- select_width=`$AWK "$print_nargs_length"`
+ select_width=${##}
select_i=
@@ -129,14 +114,14 @@ else
select_i=0
for select_word
do
- select_i=`$AWK "BEGIN { print $select_i + 1 }"`
+ select_i=$(($select_i + 1))
printf >&2 "%${select_width}d) %s\\n" $select_i "$select_word"
done;;
*[!0-9]*)
echo >&2 'Please enter a number in range.';;
*)
if test 1 -le $select_i && test $select_i -le $#; then
- shift `$AWK "BEGIN { print $select_i - 1 }"`
+ shift $(($select_i - 1))
select_result=$1
break
fi
@@ -170,7 +155,7 @@ do
esac
done
-shift `$AWK "BEGIN { print $OPTIND - 1 }"`
+shift $(($OPTIND - 1))
case $# in
0) ;;
*) say >&2 "$0: $1: unknown argument"; exit 1
@@ -178,11 +163,13 @@ esac
# translit=true to try transliteration.
# This is false if U+12345 CUNEIFORM SIGN URU TIMES KI has length 1
-# which means awk (and presumably the shell) do not need transliteration.
-if $AWK 'BEGIN { u12345 = "\360\222\215\205"; exit length(u12345) == 1 }'; then
- translit=true
-else
- translit=false
+# which means the shell and (presumably) awk do not need transliteration.
+# It is true if the byte string has some other length in characters, or
+# if this is a POSIX.1-2017 or earlier shell that does not support $'...'.
+CUNEIFORM_SIGN_URU_TIMES_KI=$'\360\222\215\205'
+if test ${#CUNEIFORM_SIGN_URU_TIMES_KI} = 1
+then translit=false
+else translit=true
fi
# Read into shell variable $1 the contents of file $2.
@@ -192,10 +179,10 @@ fi
# if that does not work, fall back on 'cat'.
read_file() {
{ $translit && {
- eval "$1=\`(iconv -f UTF-8 -t //TRANSLIT) 2>/dev/null <\"\$2\"\`" ||
- eval "$1=\`(iconv -f UTF-8) 2>/dev/null <\"\$2\"\`"
+ eval "$1=\$( (iconv -f UTF-8 -t //TRANSLIT) 2>/dev/null <\"\$2\")" ||
+ eval "$1=\$( (iconv -f UTF-8) 2>/dev/null <\"\$2\")"
}; } ||
- eval "$1=\`cat <\"\$2\"\`" || {
+ eval "$1=\$(cat <\"\$2\")" || {
say >&2 "$0: time zone files are not set up correctly"
exit 1
}
@@ -403,7 +390,7 @@ while
echo >&2 \
'Please select a continent, ocean, "coord", "TZ", "time", or "now".'
- quoted_continents=`
+ quoted_continents=$(
$AWK '
function handle_entry(entry) {
entry = substr(entry, 1, index(entry, "/") - 1)
@@ -433,12 +420,12 @@ while
sort -u |
tr '\n' ' '
echo ''
- `
+ )
eval '
doselect '"$quoted_continents"' \
"coord - I want to use geographical coordinates." \
- "TZ - I want to specify the timezone using a POSIX.1-2017 TZ string." \
+ "TZ - I want to specify the timezone using a proleptic TZ string." \
"time - I know local time already." \
"now - Like \"time\", but configure only for timestamps from now on."
continent=$select_result
@@ -462,16 +449,17 @@ while
case $continent in
TZ)
- # Ask the user for a POSIX.1-2017 TZ string. Check that it conforms.
+ # Ask the user for a proleptic TZ string. Check that it conforms.
check_POSIX_TZ_string='
BEGIN {
tz = substr(ARGV[1], 2)
ARGV[1] = ""
tzname = ("(<[[:alnum:]+-][[:alnum:]+-][[:alnum:]+-]+>" \
"|[[:alpha:]][[:alpha:]][[:alpha:]]+)")
- time = ("(2[0-4]|[0-1]?[0-9])" \
- "(:[0-5][0-9](:[0-5][0-9])?)?")
- offset = "[-+]?" time
+ sign = "[-+]?"
+ hhmm = "(:[0-5][0-9](:[0-5][0-9])?)?"
+ offset = sign "(2[0-4]|[0-1]?[0-9])" hhmm
+ time = sign "(16[0-7]|(1[0-5]|[0-9]?)[0-9])" hhmm
mdate = "M([1-9]|1[0-2])\\.[1-5]\\.[0-6]"
jdate = ("((J[1-9]|[0-9]|J?[1-9][0-9]" \
"|J?[1-2][0-9][0-9])|J?3[0-5][0-9]|J?36[0-5])")
@@ -492,7 +480,7 @@ while
read tz
$AWK "$check_POSIX_TZ_string" ="$tz"
do
- say >&2 "'$tz' is not a conforming POSIX.1-2017 timezone string."
+ say >&2 "'$tz' is not a conforming POSIX proleptic TZ string."
done
TZ_for_date=$tz;;
*)
@@ -507,14 +495,14 @@ while
'74 degrees 3 minutes west.'
read coord
esac
- distance_table=`
+ distance_table=$(
$AWK \
"$output_distances_or_times" \
="$coord" ="$TZ_COUNTRY_TABLE" ="$TZ_ZONE_TABLE" |
sort -n |
$AWK "{print} NR == $location_limit { exit }"
- `
- regions=`
+ )
+ regions=$(
$AWK '
BEGIN {
distance_table = substr(ARGV[1], 2)
@@ -526,13 +514,13 @@ while
}
}
' ="$distance_table"
- `
+ )
echo >&2 'Please select one of the following timezones,'
echo >&2 'listed roughly in increasing order' \
"of distance from $coord".
doselect $regions
region=$select_result
- tz=`
+ tz=$(
$AWK '
BEGIN {
distance_table = substr(ARGV[1], 2)
@@ -546,22 +534,22 @@ while
}
}
' ="$distance_table" ="$region"
- `;;
+ );;
*)
case $continent in
now|time)
minute_format='%a %b %d %H:%M'
- old_minute=`TZ=UTC0 date +"$minute_format"`
+ old_minute=$(TZ=UTC0 date +"$minute_format")
for i in 1 2 3
do
- time_table_command=`
+ time_table_command=$(
$AWK \
-v output_times=1 \
"$output_distances_or_times" \
= = ="$TZ_ZONE_TABLE"
- `
- time_table=`eval "$time_table_command"`
- new_minute=`TZ=UTC0 date +"$minute_format"`
+ )
+ time_table=$(eval "$time_table_command")
+ new_minute=$(TZ=UTC0 date +"$minute_format")
case $old_minute in
"$new_minute") break
esac
@@ -569,11 +557,11 @@ while
done
echo >&2 "The system says Universal Time is $new_minute."
echo >&2 "Assuming that's correct, what is the local time?"
- sorted_table=`say "$time_table" | sort -k2n -k2,5 -k1n` || {
+ sorted_table=$(say "$time_table" | sort -k2n -k2,5 -k1n) || {
say >&2 "$0: cannot sort time table"
exit 1
}
- eval doselect `
+ eval doselect $(
$AWK '
BEGIN {
sorted_table = substr(ARGV[1], 2)
@@ -590,10 +578,10 @@ while
}
}
' ="$sorted_table"
- `
+ )
time=$select_result
continent_re='^'
- zone_table=`
+ zone_table=$(
$AWK '
BEGIN {
time = substr(ARGV[1], 2)
@@ -609,13 +597,13 @@ while
}
}
' ="$time" ="$time_table"
- `
- countries=`
+ )
+ countries=$(
$AWK \
"$output_country_list" \
="$continent_re" ="$TZ_COUNTRY_TABLE" ="$zone_table" |
sort -f
- `
+ )
;;
*)
continent_re="^$continent/"
@@ -623,16 +611,16 @@ while
esac
# Get list of names of countries in the continent or ocean.
- countries=`
+ countries=$(
$AWK \
"$output_country_list" \
="$continent_re" ="$TZ_COUNTRY_TABLE" ="$zone_table" |
sort -f
- `
+ )
# If all zone table entries have comments, and there are
# at most 22 entries, asked based on those comments.
# This fits the prompt onto old-fashioned 24-line screens.
- regions=`
+ regions=$(
$AWK '
BEGIN {
TZ_ZONE_TABLE = substr(ARGV[1], 2)
@@ -653,7 +641,7 @@ while
print comment[i]
}
' ="$zone_table"
- `
+ )
# If there's more than one country, ask the user which one.
case $countries in
@@ -669,7 +657,7 @@ while
# Get list of timezones in the country.
- regions=`
+ regions=$(
$AWK '
BEGIN {
country = substr(ARGV[1], 2)
@@ -696,7 +684,7 @@ while
}
}
' ="$country" ="$TZ_COUNTRY_TABLE" ="$zone_table"
- `
+ )
# If there's more than one region, ask the user which one.
case $regions in
@@ -707,7 +695,7 @@ while
esac
# Determine tz from country and region.
- tz=`
+ tz=$(
$AWK '
BEGIN {
country = substr(ARGV[1], 2)
@@ -735,7 +723,7 @@ while
}
}
' ="$country" ="$region" ="$TZ_COUNTRY_TABLE" ="$zone_table"
- `
+ )
esac
# Make sure the corresponding zoneinfo file exists.
@@ -754,14 +742,11 @@ while
extra_info=
for i in 1 2 3 4 5 6 7 8
do
- TZdate=`LANG=C TZ="$TZ_for_date" date`
- UTdate=`LANG=C TZ=UTC0 date`
- if $AWK '
- function getsecs(d) {
- return match(d, /.*:[0-5][0-9]/) ? substr(d, RLENGTH - 1, 2) : ""
- }
- BEGIN { exit getsecs(ARGV[1]) != getsecs(ARGV[2]) }
- ' ="$TZdate" ="$UTdate"
+ TZdate=$(LANG=C TZ="$TZ_for_date" date)
+ UTdate=$(LANG=C TZ=UTC0 date)
+ TZsecsetc=${TZdate##*[0-5][0-9]:}
+ UTsecsetc=${UTdate##*[0-5][0-9]:}
+ if test "${TZsecsetc%%[!0-9]*}" = "${UTsecsetc%%[!0-9]*}"
then
extra_info="
Selected time is now: $TZdate.
@@ -801,7 +786,7 @@ done
case $SHELL in
*csh) file=.login line="setenv TZ '$tz'";;
-*) file=.profile line="TZ='$tz'; export TZ"
+*) file=.profile line="export TZ='$tz'"
esac
test -t 1 && say >&2 "
diff --git a/timezone/zdump.c b/timezone/zdump.c
index 7d99cc7..e817873 100644
--- a/timezone/zdump.c
+++ b/timezone/zdump.c
@@ -89,7 +89,7 @@ static bool warned;
static bool errout;
static char const *abbr(struct tm const *);
-ATTRIBUTE_REPRODUCIBLE static intmax_t delta(struct tm *, struct tm *);
+static intmax_t delta(struct tm *, struct tm *);
static void dumptime(struct tm const *);
static time_t hunt(timezone_t, time_t, time_t, bool);
static void show(timezone_t, char *, time_t, bool);
@@ -97,7 +97,7 @@ static void showextrema(timezone_t, char *, time_t, struct tm *, time_t);
static void showtrans(char const *, struct tm const *, time_t, char const *,
char const *);
static const char *tformat(void);
-ATTRIBUTE_REPRODUCIBLE static time_t yeartot(intmax_t);
+ATTRIBUTE_PURE_114833 static time_t yeartot(intmax_t);
/* Is C an ASCII digit? */
static bool
@@ -134,7 +134,7 @@ size_overflow(void)
/* Return A + B, exiting if the result would overflow either ptrdiff_t
or size_t. A and B are both nonnegative. */
-ATTRIBUTE_REPRODUCIBLE static ptrdiff_t
+ATTRIBUTE_PURE_114833 static ptrdiff_t
sumsize(ptrdiff_t a, ptrdiff_t b)
{
#ifdef ckd_add
@@ -162,7 +162,7 @@ xstrsize(char const *str)
/* Return a pointer to a newly allocated buffer of size SIZE, exiting
on failure. SIZE should be positive. */
-ATTRIBUTE_MALLOC static void *
+static void *
xmalloc(ptrdiff_t size)
{
void *p = malloc(size);
@@ -932,7 +932,7 @@ showextrema(timezone_t tz, char *zone, time_t lo, struct tm *lotmp, time_t hi)
# include <stdarg.h>
/* A substitute for snprintf that is good enough for zdump. */
-ATTRIBUTE_FORMAT((printf, 3, 4)) static int
+static int
my_snprintf(char *s, size_t size, char const *format, ...)
{
int n;
diff --git a/timezone/zic.c b/timezone/zic.c
index 00f00e3..cf8e79d 100644
--- a/timezone/zic.c
+++ b/timezone/zic.c
@@ -470,7 +470,7 @@ size_overflow(void)
memory_exhausted(_("size overflow"));
}
-ATTRIBUTE_REPRODUCIBLE static ptrdiff_t
+ATTRIBUTE_PURE_114833 static ptrdiff_t
size_sum(size_t a, size_t b)
{
#ifdef ckd_add
@@ -484,7 +484,7 @@ size_sum(size_t a, size_t b)
size_overflow();
}
-ATTRIBUTE_REPRODUCIBLE static ptrdiff_t
+ATTRIBUTE_PURE_114833 static ptrdiff_t
size_product(ptrdiff_t nitems, ptrdiff_t itemsize)
{
#ifdef ckd_mul
@@ -499,7 +499,7 @@ size_product(ptrdiff_t nitems, ptrdiff_t itemsize)
size_overflow();
}
-ATTRIBUTE_REPRODUCIBLE static ptrdiff_t
+ATTRIBUTE_PURE_114833 static ptrdiff_t
align_to(ptrdiff_t size, ptrdiff_t alignment)
{
ptrdiff_t lo_bits = alignment - 1, sum = size_sum(size, lo_bits);
@@ -523,7 +523,7 @@ memcheck(void *ptr)
return ptr;
}
-ATTRIBUTE_MALLOC static void *
+static void *
emalloc(size_t size)
{
return memcheck(malloc(size));
@@ -535,7 +535,7 @@ erealloc(void *ptr, size_t size)
return memcheck(realloc(ptr, size));
}
-ATTRIBUTE_MALLOC static char *
+static char *
estrdup(char const *str)
{
return memcheck(strdup(str));
@@ -1435,7 +1435,7 @@ relname(char const *target, char const *linkname)
/* Return true if A and B must have the same parent dir if A and B exist.
Return false if this is not necessarily true (though it might be true).
Keep it simple, and do not inspect the file system. */
-static bool
+ATTRIBUTE_PURE_114833 static bool
same_parent_dirs(char const *a, char const *b)
{
for (; *a == *b; a++, b++)
@@ -2982,10 +2982,10 @@ rule_cmp(struct rule const *a, struct rule const *b)
return a->r_dayofmonth - b->r_dayofmonth;
}
-/* Store into RESULT a POSIX.1-2017 TZ string that represent the future
+/* Store into RESULT a proleptic TZ string that represent the future
predictions for the zone ZPFIRST with ZONECOUNT entries. Return a
compatibility indicator (a TZDB release year) if successful, a
- negative integer if no such TZ string exissts. */
+ negative integer if no such TZ string exists. */
static int
stringzone(char *result, struct zone const *zpfirst, ptrdiff_t zonecount)
{
@@ -3177,8 +3177,7 @@ outzone(const struct zone *zpfirst, ptrdiff_t zonecount)
if (noise) {
if (!*envvar)
warning("%s %s",
- _("no POSIX.1-2017 environment variable"
- " for zone"),
+ _("no proleptic TZ string for zone"),
zpfirst->z_name);
else if (compat != 0) {
/* Circa-COMPAT clients, and earlier clients, might
@@ -3442,7 +3441,7 @@ outzone(const struct zone *zpfirst, ptrdiff_t zonecount)
if (do_extend) {
/*
** If we're extending the explicitly listed observations for
- ** 400 years because we can't fill the POSIX.1-2017 TZ field,
+ ** 400 years because we can't fill the proleptic TZ field,
** check whether we actually ended up explicitly listing
** observations through that period. If there aren't any
** near the end of the 400-year period, add a redundant
@@ -3627,7 +3626,7 @@ lowerit(char a)
}
/* case-insensitive equality */
-ATTRIBUTE_REPRODUCIBLE static bool
+ATTRIBUTE_PURE_114833 static bool
ciequal(register const char *ap, register const char *bp)
{
while (lowerit(*ap) == lowerit(*bp++))
@@ -3636,7 +3635,7 @@ ciequal(register const char *ap, register const char *bp)
return false;
}
-ATTRIBUTE_REPRODUCIBLE static bool
+ATTRIBUTE_PURE_114833 static bool
itsabbr(register const char *abbr, register const char *word)
{
if (lowerit(*abbr) != lowerit(*word))
@@ -3652,7 +3651,7 @@ itsabbr(register const char *abbr, register const char *word)
/* Return true if ABBR is an initial prefix of WORD, ignoring ASCII case. */
-ATTRIBUTE_REPRODUCIBLE static bool
+ATTRIBUTE_PURE_114833 static bool
ciprefix(char const *abbr, char const *word)
{
do
@@ -3762,7 +3761,7 @@ time_overflow(void)
exit(EXIT_FAILURE);
}
-ATTRIBUTE_REPRODUCIBLE static zic_t
+ATTRIBUTE_PURE_114833 static zic_t
oadd(zic_t t1, zic_t t2)
{
#ifdef ckd_add
@@ -3776,7 +3775,7 @@ oadd(zic_t t1, zic_t t2)
time_overflow();
}
-ATTRIBUTE_REPRODUCIBLE static zic_t
+ATTRIBUTE_PURE_114833 static zic_t
tadd(zic_t t1, zic_t t2)
{
#ifdef ckd_add
diff --git a/wcsmbs/Makefile b/wcsmbs/Makefile
index 63adf0e..37a44e6 100644
--- a/wcsmbs/Makefile
+++ b/wcsmbs/Makefile
@@ -264,7 +264,7 @@ CFLAGS-wcstod_l.c += $(strtox-CFLAGS) $(config-cflags-wno-ignored-attributes)
CFLAGS-wcstold_l.c += $(strtox-CFLAGS) $(config-cflags-wno-ignored-attributes)
CFLAGS-wcstof128_l.c += $(strtox-CFLAGS)
CFLAGS-wcstof_l.c += $(strtox-CFLAGS) $(config-cflags-wno-ignored-attributes)
-CPPFLAGS-tst-wchar-h.c += $(no-fortify-source),-D_FORTIFY_SOURCE=2
+CPPFLAGS-tst-wchar-h.c += $(no-fortify-source) -D_FORTIFY_SOURCE=2
CFLAGS-wcschr.c += $(config-cflags-wno-ignored-attributes)
CFLAGS-wmemchr.c += $(config-cflags-wno-ignored-attributes)