From 78b68aa4a18ee2dd402edc6c8ae4942e368429a7 Mon Sep 17 00:00:00 2001
From: Slaven Rezic <slaven@rezic.de>
Date: Tue, 14 May 2019 23:24:41 +0200
Subject: [PATCH] fix for 5.29.x failures (PR #8)

---
 lib/Net/IDN/UTS46/_Mapping.pm | 776 ++++++++++++++++++++++--------------------
 t/uts46_to_ascii-trans.t      |  92 ++---
 t/uts46_to_ascii.t            |  92 ++---
 t/uts46_to_unicode.t          | 124 +++----
 4 files changed, 558 insertions(+), 526 deletions(-)

diff --git a/lib/Net/IDN/UTS46/_Mapping.pm b/lib/Net/IDN/UTS46/_Mapping.pm
index 71f6156..d31e65b 100644
--- a/lib/Net/IDN/UTS46/_Mapping.pm
+++ b/lib/Net/IDN/UTS46/_Mapping.pm
@@ -28,271 +28,291 @@ sub _mk_prop {
 
 1;
 
-our @DISALLOWED = (
-  0x0080, 0x009F, 0x0378, 0x0379, 0x0380, 0x0383, 0x038B, undef,  0x038D, undef,  0x03A2, undef,  0x04C0, undef,  0x0530, undef, 
-  0x0557, 0x0558, 0x0560, undef,  0x0588, undef,  0x058B, 0x058C, 0x0590, undef,  0x05C8, 0x05CF, 0x05EB, 0x05EF, 0x05F5, 0x0605,
-  0x061C, 0x061D, 0x06DD, undef,  0x070E, 0x070F, 0x074B, 0x074C, 0x07B2, 0x07BF, 0x07FB, 0x07FF, 0x082E, 0x082F, 0x083F, undef, 
-  0x085C, 0x085D, 0x085F, undef,  0x086B, 0x089F, 0x08B5, undef,  0x08BE, 0x08D3, 0x08E2, undef,  0x0984, undef,  0x098D, 0x098E,
-  0x0991, 0x0992, 0x09A9, undef,  0x09B1, undef,  0x09B3, 0x09B5, 0x09BA, 0x09BB, 0x09C5, 0x09C6, 0x09C9, 0x09CA, 0x09CF, 0x09D6,
-  0x09D8, 0x09DB, 0x09DE, undef,  0x09E4, 0x09E5, 0x09FE, 0x0A00, 0x0A04, undef,  0x0A0B, 0x0A0E, 0x0A11, 0x0A12, 0x0A29, undef, 
-  0x0A31, undef,  0x0A34, undef,  0x0A37, undef,  0x0A3A, 0x0A3B, 0x0A3D, undef,  0x0A43, 0x0A46, 0x0A49, 0x0A4A, 0x0A4E, 0x0A50,
-  0x0A52, 0x0A58, 0x0A5D, undef,  0x0A5F, 0x0A65, 0x0A76, 0x0A80, 0x0A84, undef,  0x0A8E, undef,  0x0A92, undef,  0x0AA9, undef, 
-  0x0AB1, undef,  0x0AB4, undef,  0x0ABA, 0x0ABB, 0x0AC6, undef,  0x0ACA, undef,  0x0ACE, 0x0ACF, 0x0AD1, 0x0ADF, 0x0AE4, 0x0AE5,
-  0x0AF2, 0x0AF8, 0x0B00, undef,  0x0B04, undef,  0x0B0D, 0x0B0E, 0x0B11, 0x0B12, 0x0B29, undef,  0x0B31, undef,  0x0B34, undef, 
-  0x0B3A, 0x0B3B, 0x0B45, 0x0B46, 0x0B49, 0x0B4A, 0x0B4E, 0x0B55, 0x0B58, 0x0B5B, 0x0B5E, undef,  0x0B64, 0x0B65, 0x0B78, 0x0B81,
-  0x0B84, undef,  0x0B8B, 0x0B8D, 0x0B91, undef,  0x0B96, 0x0B98, 0x0B9B, undef,  0x0B9D, undef,  0x0BA0, 0x0BA2, 0x0BA5, 0x0BA7,
-  0x0BAB, 0x0BAD, 0x0BBA, 0x0BBD, 0x0BC3, 0x0BC5, 0x0BC9, undef,  0x0BCE, 0x0BCF, 0x0BD1, 0x0BD6, 0x0BD8, 0x0BE5, 0x0BFB, 0x0BFF,
-  0x0C04, undef,  0x0C0D, undef,  0x0C11, undef,  0x0C29, undef,  0x0C3A, 0x0C3C, 0x0C45, undef,  0x0C49, undef,  0x0C4E, 0x0C54,
-  0x0C57, undef,  0x0C5B, 0x0C5F, 0x0C64, 0x0C65, 0x0C70, 0x0C77, 0x0C84, undef,  0x0C8D, undef,  0x0C91, undef,  0x0CA9, undef, 
-  0x0CB4, undef,  0x0CBA, 0x0CBB, 0x0CC5, undef,  0x0CC9, undef,  0x0CCE, 0x0CD4, 0x0CD7, 0x0CDD, 0x0CDF, undef,  0x0CE4, 0x0CE5,
-  0x0CF0, undef,  0x0CF3, 0x0CFF, 0x0D04, undef,  0x0D0D, undef,  0x0D11, undef,  0x0D45, undef,  0x0D49, undef,  0x0D50, 0x0D53,
-  0x0D64, 0x0D65, 0x0D80, 0x0D81, 0x0D84, undef,  0x0D97, 0x0D99, 0x0DB2, undef,  0x0DBC, undef,  0x0DBE, 0x0DBF, 0x0DC7, 0x0DC9,
-  0x0DCB, 0x0DCE, 0x0DD5, undef,  0x0DD7, undef,  0x0DE0, 0x0DE5, 0x0DF0, 0x0DF1, 0x0DF5, 0x0E00, 0x0E3B, 0x0E3E, 0x0E5C, 0x0E80,
-  0x0E83, undef,  0x0E85, 0x0E86, 0x0E89, undef,  0x0E8B, 0x0E8C, 0x0E8E, 0x0E93, 0x0E98, undef,  0x0EA0, undef,  0x0EA4, undef, 
-  0x0EA6, undef,  0x0EA8, 0x0EA9, 0x0EAC, undef,  0x0EBA, undef,  0x0EBE, 0x0EBF, 0x0EC5, undef,  0x0EC7, undef,  0x0ECE, 0x0ECF,
-  0x0EDA, 0x0EDB, 0x0EE0, 0x0EFF, 0x0F48, undef,  0x0F6D, 0x0F70, 0x0F98, undef,  0x0FBD, undef,  0x0FCD, undef,  0x0FDB, 0x0FFF,
-  0x10A0, 0x10C6, 0x10C8, 0x10CC, 0x10CE, 0x10CF, 0x115F, 0x1160, 0x1249, undef,  0x124E, 0x124F, 0x1257, undef,  0x1259, undef, 
-  0x125E, 0x125F, 0x1289, undef,  0x128E, 0x128F, 0x12B1, undef,  0x12B6, 0x12B7, 0x12BF, undef,  0x12C1, undef,  0x12C6, 0x12C7,
-  0x12D7, undef,  0x1311, undef,  0x1316, 0x1317, 0x135B, 0x135C, 0x137D, 0x137F, 0x139A, 0x139F, 0x13F6, 0x13F7, 0x13FE, 0x13FF,
-  0x1680, undef,  0x169D, 0x169F, 0x16F9, 0x16FF, 0x170D, undef,  0x1715, 0x171F, 0x1737, 0x173F, 0x1754, 0x175F, 0x176D, undef, 
-  0x1771, undef,  0x1774, 0x177F, 0x17B4, 0x17B5, 0x17DE, 0x17DF, 0x17EA, 0x17EF, 0x17FA, 0x17FF, 0x1806, undef,  0x180E, 0x180F,
-  0x181A, 0x181F, 0x1878, 0x187F, 0x18AB, 0x18AF, 0x18F6, 0x18FF, 0x191F, undef,  0x192C, 0x192F, 0x193C, 0x193F, 0x1941, 0x1943,
-  0x196E, 0x196F, 0x1975, 0x197F, 0x19AC, 0x19AF, 0x19CA, 0x19CF, 0x19DB, 0x19DD, 0x1A1C, 0x1A1D, 0x1A5F, undef,  0x1A7D, 0x1A7E,
-  0x1A8A, 0x1A8F, 0x1A9A, 0x1A9F, 0x1AAE, 0x1AAF, 0x1ABF, 0x1AFF, 0x1B4C, 0x1B4F, 0x1B7D, 0x1B7F, 0x1BF4, 0x1BFB, 0x1C38, 0x1C3A,
-  0x1C4A, 0x1C4C, 0x1C89, 0x1CBF, 0x1CC8, 0x1CCF, 0x1CFA, 0x1CFF, 0x1DFA, undef,  0x1F16, 0x1F17, 0x1F1E, 0x1F1F, 0x1F46, 0x1F47,
-  0x1F4E, 0x1F4F, 0x1F58, undef,  0x1F5A, undef,  0x1F5C, undef,  0x1F5E, undef,  0x1F7E, 0x1F7F, 0x1FB5, undef,  0x1FC5, undef, 
-  0x1FD4, 0x1FD5, 0x1FDC, undef,  0x1FF0, 0x1FF1, 0x1FF5, undef,  0x1FFF, undef,  0x200E, 0x200F, 0x2024, 0x2026, 0x2028, 0x202E,
-  0x2061, 0x2063, 0x2065, 0x206F, 0x2072, 0x2073, 0x208F, undef,  0x209D, 0x209F, 0x20C0, 0x20CF, 0x20F1, 0x20FF, 0x2132, undef, 
-  0x2183, undef,  0x218C, 0x218F, 0x2427, 0x243F, 0x244B, 0x245F, 0x2488, 0x249B, 0x2B74, 0x2B75, 0x2B96, 0x2B97, 0x2BBA, 0x2BBC,
-  0x2BC9, undef,  0x2BD3, 0x2BEB, 0x2BF0, 0x2BFF, 0x2C2F, undef,  0x2C5F, undef,  0x2CF4, 0x2CF8, 0x2D26, undef,  0x2D28, 0x2D2C,
-  0x2D2E, 0x2D2F, 0x2D68, 0x2D6E, 0x2D71, 0x2D7E, 0x2D97, 0x2D9F, 0x2DA7, undef,  0x2DAF, undef,  0x2DB7, undef,  0x2DBF, undef, 
-  0x2DC7, undef,  0x2DCF, undef,  0x2DD7, undef,  0x2DDF, undef,  0x2E4A, 0x2E7F, 0x2E9A, undef,  0x2EF4, 0x2EFF, 0x2FD6, 0x2FFF,
-  0x3040, undef,  0x3097, 0x3098, 0x3100, 0x3104, 0x312F, 0x3130, 0x3164, undef,  0x318F, undef,  0x31BB, 0x31BF, 0x31E4, 0x31EF,
-  0x321F, undef,  0x32FF, undef,  0x33C2, undef,  0x33C7, undef,  0x33D8, undef,  0x4DB6, 0x4DBF, 0x9FEB, 0x9FFF, 0xA48D, 0xA48F,
-  0xA4C7, 0xA4CF, 0xA62C, 0xA63F, 0xA6F8, 0xA6FF, 0xA7AF, undef,  0xA7B8, 0xA7F6, 0xA82C, 0xA82F, 0xA83A, 0xA83F, 0xA878, 0xA87F,
-  0xA8C6, 0xA8CD, 0xA8DA, 0xA8DF, 0xA8FE, 0xA8FF, 0xA954, 0xA95E, 0xA97D, 0xA97F, 0xA9CE, undef,  0xA9DA, 0xA9DD, 0xA9FF, undef, 
-  0xAA37, 0xAA3F, 0xAA4E, 0xAA4F, 0xAA5A, 0xAA5B, 0xAAC3, 0xAADA, 0xAAF7, 0xAB00, 0xAB07, 0xAB08, 0xAB0F, 0xAB10, 0xAB17, 0xAB1F,
-  0xAB27, undef,  0xAB2F, undef,  0xAB66, 0xAB6F, 0xABEE, 0xABEF, 0xABFA, 0xABFF, 0xD7A4, 0xD7AF, 0xD7C7, 0xD7CA, 0xD7FC, 0xF8FF,
-  0xFA6E, 0xFA6F, 0xFADA, 0xFAFF, 0xFB07, 0xFB12, 0xFB18, 0xFB1C, 0xFB37, undef,  0xFB3D, undef,  0xFB3F, undef,  0xFB42, undef, 
-  0xFB45, undef,  0xFBC2, 0xFBD2, 0xFD40, 0xFD4F, 0xFD90, 0xFD91, 0xFDC8, 0xFDEF, 0xFDFE, 0xFDFF, 0xFE12, undef,  0xFE19, 0xFE1F,
-  0xFE30, undef,  0xFE52, 0xFE53, 0xFE67, undef,  0xFE6C, 0xFE6F, 0xFE75, undef,  0xFEFD, 0xFEFE, 0xFF00, undef,  0xFFA0, undef, 
-  0xFFBF, 0xFFC1, 0xFFC8, 0xFFC9, 0xFFD0, 0xFFD1, 0xFFD8, 0xFFD9, 0xFFDD, 0xFFDF, 0xFFE7, undef,  0xFFEF, 0xFFFF, 0x1000C, undef, 
-  0x10027, undef,  0x1003B, undef,  0x1003E, undef,  0x1004E, 0x1004F, 0x1005E, 0x1007F, 0x100FB, 0x100FF, 0x10103, 0x10106, 0x10134, 0x10136,
-  0x1018F, undef,  0x1019C, 0x1019F, 0x101A1, 0x101CF, 0x101FE, 0x1027F, 0x1029D, 0x1029F, 0x102D1, 0x102DF, 0x102FC, 0x102FF, 0x10324, 0x1032C,
-  0x1034B, 0x1034F, 0x1037B, 0x1037F, 0x1039E, undef,  0x103C4, 0x103C7, 0x103D6, 0x103FF, 0x1049E, 0x1049F, 0x104AA, 0x104AF, 0x104D4, 0x104D7,
-  0x104FC, 0x104FF, 0x10528, 0x1052F, 0x10564, 0x1056E, 0x10570, 0x105FF, 0x10737, 0x1073F, 0x10756, 0x1075F, 0x10768, 0x107FF, 0x10806, 0x10807,
-  0x10809, undef,  0x10836, undef,  0x10839, 0x1083B, 0x1083D, 0x1083E, 0x10856, undef,  0x1089F, 0x108A6, 0x108B0, 0x108DF, 0x108F3, undef, 
-  0x108F6, 0x108FA, 0x1091C, 0x1091E, 0x1093A, 0x1093E, 0x10940, 0x1097F, 0x109B8, 0x109BB, 0x109D0, 0x109D1, 0x10A04, undef,  0x10A07, 0x10A0B,
-  0x10A14, undef,  0x10A18, undef,  0x10A34, 0x10A37, 0x10A3B, 0x10A3E, 0x10A48, 0x10A4F, 0x10A59, 0x10A5F, 0x10AA0, 0x10ABF, 0x10AE7, 0x10AEA,
-  0x10AF7, 0x10AFF, 0x10B36, 0x10B38, 0x10B56, 0x10B57, 0x10B73, 0x10B77, 0x10B92, 0x10B98, 0x10B9D, 0x10BA8, 0x10BB0, 0x10BFF, 0x10C49, 0x10C7F,
-  0x10CB3, 0x10CBF, 0x10CF3, 0x10CF9, 0x10D00, 0x10E5F, 0x10E7F, 0x10FFF, 0x1104E, 0x11051, 0x11070, 0x1107E, 0x110BD, undef,  0x110C2, 0x110CF,
-  0x110E9, 0x110EF, 0x110FA, 0x110FF, 0x11135, undef,  0x11144, 0x1114F, 0x11177, 0x1117F, 0x111CE, 0x111CF, 0x111E0, undef,  0x111F5, 0x111FF,
-  0x11212, undef,  0x1123F, 0x1127F, 0x11287, undef,  0x11289, undef,  0x1128E, undef,  0x1129E, undef,  0x112AA, 0x112AF, 0x112EB, 0x112EF,
-  0x112FA, 0x112FF, 0x11304, undef,  0x1130D, 0x1130E, 0x11311, 0x11312, 0x11329, undef,  0x11331, undef,  0x11334, undef,  0x1133A, 0x1133B,
-  0x11345, 0x11346, 0x11349, 0x1134A, 0x1134E, 0x1134F, 0x11351, 0x11356, 0x11358, 0x1135C, 0x11364, 0x11365, 0x1136D, 0x1136F, 0x11375, 0x113FF,
-  0x1145A, undef,  0x1145C, undef,  0x1145E, 0x1147F, 0x114C8, 0x114CF, 0x114DA, 0x1157F, 0x115B6, 0x115B7, 0x115DE, 0x115FF, 0x11645, 0x1164F,
-  0x1165A, 0x1165F, 0x1166D, 0x1167F, 0x116B8, 0x116BF, 0x116CA, 0x116FF, 0x1171A, 0x1171C, 0x1172C, 0x1172F, 0x11740, 0x1189F, 0x118F3, 0x118FE,
-  0x11900, 0x119FF, 0x11A48, 0x11A4F, 0x11A84, 0x11A85, 0x11A9D, undef,  0x11AA3, 0x11ABF, 0x11AF9, 0x11BFF, 0x11C09, undef,  0x11C37, undef, 
-  0x11C46, 0x11C4F, 0x11C6D, 0x11C6F, 0x11C90, 0x11C91, 0x11CA8, undef,  0x11CB7, 0x11CFF, 0x11D07, undef,  0x11D0A, undef,  0x11D37, 0x11D39,
-  0x11D3B, undef,  0x11D3E, undef,  0x11D48, 0x11D4F, 0x11D5A, 0x11FFF, 0x1239A, 0x123FF, 0x1246F, undef,  0x12475, 0x1247F, 0x12544, 0x12FFF,
-  0x1342F, 0x143FF, 0x14647, 0x167FF, 0x16A39, 0x16A3F, 0x16A5F, undef,  0x16A6A, 0x16A6D, 0x16A70, 0x16ACF, 0x16AEE, 0x16AEF, 0x16AF6, 0x16AFF,
-  0x16B46, 0x16B4F, 0x16B5A, undef,  0x16B62, undef,  0x16B78, 0x16B7C, 0x16B90, 0x16EFF, 0x16F45, 0x16F4F, 0x16F7F, 0x16F8E, 0x16FA0, 0x16FDF,
-  0x16FE2, 0x16FFF, 0x187ED, 0x187FF, 0x18AF3, 0x1AFFF, 0x1B11F, 0x1B16F, 0x1B2FC, 0x1BBFF, 0x1BC6B, 0x1BC6F, 0x1BC7D, 0x1BC7F, 0x1BC89, 0x1BC8F,
-  0x1BC9A, 0x1BC9B, 0x1BCA4, 0x1CFFF, 0x1D0F6, 0x1D0FF, 0x1D127, 0x1D128, 0x1D173, 0x1D17A, 0x1D1E9, 0x1D1FF, 0x1D246, 0x1D2FF, 0x1D357, 0x1D35F,
-  0x1D372, 0x1D3FF, 0x1D455, undef,  0x1D49D, undef,  0x1D4A0, 0x1D4A1, 0x1D4A3, 0x1D4A4, 0x1D4A7, 0x1D4A8, 0x1D4AD, undef,  0x1D4BA, undef, 
-  0x1D4BC, undef,  0x1D4C4, undef,  0x1D506, undef,  0x1D50B, 0x1D50C, 0x1D515, undef,  0x1D51D, undef,  0x1D53A, undef,  0x1D53F, undef, 
-  0x1D545, undef,  0x1D547, 0x1D549, 0x1D551, undef,  0x1D6A6, 0x1D6A7, 0x1D7CC, 0x1D7CD, 0x1DA8C, 0x1DA9A, 0x1DAA0, undef,  0x1DAB0, 0x1DFFF,
-  0x1E007, undef,  0x1E019, 0x1E01A, 0x1E022, undef,  0x1E025, undef,  0x1E02B, 0x1E7FF, 0x1E8C5, 0x1E8C6, 0x1E8D7, 0x1E8FF, 0x1E94B, 0x1E94F,
-  0x1E95A, 0x1E95D, 0x1E960, 0x1EDFF, 0x1EE04, undef,  0x1EE20, undef,  0x1EE23, undef,  0x1EE25, 0x1EE26, 0x1EE28, undef,  0x1EE33, undef, 
-  0x1EE38, undef,  0x1EE3A, undef,  0x1EE3C, 0x1EE41, 0x1EE43, 0x1EE46, 0x1EE48, undef,  0x1EE4A, undef,  0x1EE4C, undef,  0x1EE50, undef, 
-  0x1EE53, undef,  0x1EE55, 0x1EE56, 0x1EE58, undef,  0x1EE5A, undef,  0x1EE5C, undef,  0x1EE5E, undef,  0x1EE60, undef,  0x1EE63, undef, 
-  0x1EE65, 0x1EE66, 0x1EE6B, undef,  0x1EE73, undef,  0x1EE78, undef,  0x1EE7D, undef,  0x1EE7F, undef,  0x1EE8A, undef,  0x1EE9C, 0x1EEA0,
-  0x1EEA4, undef,  0x1EEAA, undef,  0x1EEBC, 0x1EEEF, 0x1EEF2, 0x1EFFF, 0x1F02C, 0x1F02F, 0x1F094, 0x1F09F, 0x1F0AF, 0x1F0B0, 0x1F0C0, undef, 
-  0x1F0D0, undef,  0x1F0F6, 0x1F100, 0x1F10D, 0x1F10F, 0x1F12F, undef,  0x1F16C, 0x1F16F, 0x1F1AD, 0x1F1E5, 0x1F203, 0x1F20F, 0x1F23C, 0x1F23F,
-  0x1F249, 0x1F24F, 0x1F252, 0x1F25F, 0x1F266, 0x1F2FF, 0x1F6D5, 0x1F6DF, 0x1F6ED, 0x1F6EF, 0x1F6F9, 0x1F6FF, 0x1F774, 0x1F77F, 0x1F7D5, 0x1F7FF,
-  0x1F80C, 0x1F80F, 0x1F848, 0x1F84F, 0x1F85A, 0x1F85F, 0x1F888, 0x1F88F, 0x1F8AE, 0x1F8FF, 0x1F90C, 0x1F90F, 0x1F93F, undef,  0x1F94D, 0x1F94F,
-  0x1F96C, 0x1F97F, 0x1F998, 0x1F9BF, 0x1F9C1, 0x1F9CF, 0x1F9E7, 0x1FFFF, 0x2A6D7, 0x2A6FF, 0x2B735, 0x2B73F, 0x2B81E, 0x2B81F, 0x2CEA2, 0x2CEAF,
-  0x2EBE1, 0x2F7FF, 0x2F868, undef,  0x2F874, undef,  0x2F91F, undef,  0x2F95F, undef,  0x2F9BF, undef,  0x2FA1E, 0xE00FF, 0xE01F0, 0x10FFFF,
-);
+our @DISALLOWED;
+BEGIN {
+  @DISALLOWED = (
+     0x0080, 0x009F, 0x0378, 0x0379, 0x0380, 0x0383, 0x038B, undef,  0x038D, undef,  0x03A2, undef,  0x04C0, undef,  0x0530, undef, 
+     0x0557, 0x0558, 0x0560, undef,  0x0588, undef,  0x058B, 0x058C, 0x0590, undef,  0x05C8, 0x05CF, 0x05EB, 0x05EF, 0x05F5, 0x0605,
+     0x061C, 0x061D, 0x06DD, undef,  0x070E, 0x070F, 0x074B, 0x074C, 0x07B2, 0x07BF, 0x07FB, 0x07FF, 0x082E, 0x082F, 0x083F, undef, 
+     0x085C, 0x085D, 0x085F, undef,  0x086B, 0x089F, 0x08B5, undef,  0x08BE, 0x08D3, 0x08E2, undef,  0x0984, undef,  0x098D, 0x098E,
+     0x0991, 0x0992, 0x09A9, undef,  0x09B1, undef,  0x09B3, 0x09B5, 0x09BA, 0x09BB, 0x09C5, 0x09C6, 0x09C9, 0x09CA, 0x09CF, 0x09D6,
+     0x09D8, 0x09DB, 0x09DE, undef,  0x09E4, 0x09E5, 0x09FE, 0x0A00, 0x0A04, undef,  0x0A0B, 0x0A0E, 0x0A11, 0x0A12, 0x0A29, undef, 
+     0x0A31, undef,  0x0A34, undef,  0x0A37, undef,  0x0A3A, 0x0A3B, 0x0A3D, undef,  0x0A43, 0x0A46, 0x0A49, 0x0A4A, 0x0A4E, 0x0A50,
+     0x0A52, 0x0A58, 0x0A5D, undef,  0x0A5F, 0x0A65, 0x0A76, 0x0A80, 0x0A84, undef,  0x0A8E, undef,  0x0A92, undef,  0x0AA9, undef, 
+     0x0AB1, undef,  0x0AB4, undef,  0x0ABA, 0x0ABB, 0x0AC6, undef,  0x0ACA, undef,  0x0ACE, 0x0ACF, 0x0AD1, 0x0ADF, 0x0AE4, 0x0AE5,
+     0x0AF2, 0x0AF8, 0x0B00, undef,  0x0B04, undef,  0x0B0D, 0x0B0E, 0x0B11, 0x0B12, 0x0B29, undef,  0x0B31, undef,  0x0B34, undef, 
+     0x0B3A, 0x0B3B, 0x0B45, 0x0B46, 0x0B49, 0x0B4A, 0x0B4E, 0x0B55, 0x0B58, 0x0B5B, 0x0B5E, undef,  0x0B64, 0x0B65, 0x0B78, 0x0B81,
+     0x0B84, undef,  0x0B8B, 0x0B8D, 0x0B91, undef,  0x0B96, 0x0B98, 0x0B9B, undef,  0x0B9D, undef,  0x0BA0, 0x0BA2, 0x0BA5, 0x0BA7,
+     0x0BAB, 0x0BAD, 0x0BBA, 0x0BBD, 0x0BC3, 0x0BC5, 0x0BC9, undef,  0x0BCE, 0x0BCF, 0x0BD1, 0x0BD6, 0x0BD8, 0x0BE5, 0x0BFB, 0x0BFF,
+     0x0C04, undef,  0x0C0D, undef,  0x0C11, undef,  0x0C29, undef,  0x0C3A, 0x0C3C, 0x0C45, undef,  0x0C49, undef,  0x0C4E, 0x0C54,
+     0x0C57, undef,  0x0C5B, 0x0C5F, 0x0C64, 0x0C65, 0x0C70, 0x0C77, 0x0C84, undef,  0x0C8D, undef,  0x0C91, undef,  0x0CA9, undef, 
+     0x0CB4, undef,  0x0CBA, 0x0CBB, 0x0CC5, undef,  0x0CC9, undef,  0x0CCE, 0x0CD4, 0x0CD7, 0x0CDD, 0x0CDF, undef,  0x0CE4, 0x0CE5,
+     0x0CF0, undef,  0x0CF3, 0x0CFF, 0x0D04, undef,  0x0D0D, undef,  0x0D11, undef,  0x0D45, undef,  0x0D49, undef,  0x0D50, 0x0D53,
+     0x0D64, 0x0D65, 0x0D80, 0x0D81, 0x0D84, undef,  0x0D97, 0x0D99, 0x0DB2, undef,  0x0DBC, undef,  0x0DBE, 0x0DBF, 0x0DC7, 0x0DC9,
+     0x0DCB, 0x0DCE, 0x0DD5, undef,  0x0DD7, undef,  0x0DE0, 0x0DE5, 0x0DF0, 0x0DF1, 0x0DF5, 0x0E00, 0x0E3B, 0x0E3E, 0x0E5C, 0x0E80,
+     0x0E83, undef,  0x0E85, 0x0E86, 0x0E89, undef,  0x0E8B, 0x0E8C, 0x0E8E, 0x0E93, 0x0E98, undef,  0x0EA0, undef,  0x0EA4, undef, 
+     0x0EA6, undef,  0x0EA8, 0x0EA9, 0x0EAC, undef,  0x0EBA, undef,  0x0EBE, 0x0EBF, 0x0EC5, undef,  0x0EC7, undef,  0x0ECE, 0x0ECF,
+     0x0EDA, 0x0EDB, 0x0EE0, 0x0EFF, 0x0F48, undef,  0x0F6D, 0x0F70, 0x0F98, undef,  0x0FBD, undef,  0x0FCD, undef,  0x0FDB, 0x0FFF,
+     0x10A0, 0x10C6, 0x10C8, 0x10CC, 0x10CE, 0x10CF, 0x115F, 0x1160, 0x1249, undef,  0x124E, 0x124F, 0x1257, undef,  0x1259, undef, 
+     0x125E, 0x125F, 0x1289, undef,  0x128E, 0x128F, 0x12B1, undef,  0x12B6, 0x12B7, 0x12BF, undef,  0x12C1, undef,  0x12C6, 0x12C7,
+     0x12D7, undef,  0x1311, undef,  0x1316, 0x1317, 0x135B, 0x135C, 0x137D, 0x137F, 0x139A, 0x139F, 0x13F6, 0x13F7, 0x13FE, 0x13FF,
+     0x1680, undef,  0x169D, 0x169F, 0x16F9, 0x16FF, 0x170D, undef,  0x1715, 0x171F, 0x1737, 0x173F, 0x1754, 0x175F, 0x176D, undef, 
+     0x1771, undef,  0x1774, 0x177F, 0x17B4, 0x17B5, 0x17DE, 0x17DF, 0x17EA, 0x17EF, 0x17FA, 0x17FF, 0x1806, undef,  0x180E, 0x180F,
+     0x181A, 0x181F, 0x1878, 0x187F, 0x18AB, 0x18AF, 0x18F6, 0x18FF, 0x191F, undef,  0x192C, 0x192F, 0x193C, 0x193F, 0x1941, 0x1943,
+     0x196E, 0x196F, 0x1975, 0x197F, 0x19AC, 0x19AF, 0x19CA, 0x19CF, 0x19DB, 0x19DD, 0x1A1C, 0x1A1D, 0x1A5F, undef,  0x1A7D, 0x1A7E,
+     0x1A8A, 0x1A8F, 0x1A9A, 0x1A9F, 0x1AAE, 0x1AAF, 0x1ABF, 0x1AFF, 0x1B4C, 0x1B4F, 0x1B7D, 0x1B7F, 0x1BF4, 0x1BFB, 0x1C38, 0x1C3A,
+     0x1C4A, 0x1C4C, 0x1C89, 0x1CBF, 0x1CC8, 0x1CCF, 0x1CFA, 0x1CFF, 0x1DFA, undef,  0x1F16, 0x1F17, 0x1F1E, 0x1F1F, 0x1F46, 0x1F47,
+     0x1F4E, 0x1F4F, 0x1F58, undef,  0x1F5A, undef,  0x1F5C, undef,  0x1F5E, undef,  0x1F7E, 0x1F7F, 0x1FB5, undef,  0x1FC5, undef, 
+     0x1FD4, 0x1FD5, 0x1FDC, undef,  0x1FF0, 0x1FF1, 0x1FF5, undef,  0x1FFF, undef,  0x200E, 0x200F, 0x2024, 0x2026, 0x2028, 0x202E,
+     0x2061, 0x2063, 0x2065, 0x206F, 0x2072, 0x2073, 0x208F, undef,  0x209D, 0x209F, 0x20C0, 0x20CF, 0x20F1, 0x20FF, 0x2132, undef, 
+     0x2183, undef,  0x218C, 0x218F, 0x2427, 0x243F, 0x244B, 0x245F, 0x2488, 0x249B, 0x2B74, 0x2B75, 0x2B96, 0x2B97, 0x2BBA, 0x2BBC,
+     0x2BC9, undef,  0x2BD3, 0x2BEB, 0x2BF0, 0x2BFF, 0x2C2F, undef,  0x2C5F, undef,  0x2CF4, 0x2CF8, 0x2D26, undef,  0x2D28, 0x2D2C,
+     0x2D2E, 0x2D2F, 0x2D68, 0x2D6E, 0x2D71, 0x2D7E, 0x2D97, 0x2D9F, 0x2DA7, undef,  0x2DAF, undef,  0x2DB7, undef,  0x2DBF, undef, 
+     0x2DC7, undef,  0x2DCF, undef,  0x2DD7, undef,  0x2DDF, undef,  0x2E4A, 0x2E7F, 0x2E9A, undef,  0x2EF4, 0x2EFF, 0x2FD6, 0x2FFF,
+     0x3040, undef,  0x3097, 0x3098, 0x3100, 0x3104, 0x312F, 0x3130, 0x3164, undef,  0x318F, undef,  0x31BB, 0x31BF, 0x31E4, 0x31EF,
+     0x321F, undef,  0x32FF, undef,  0x33C2, undef,  0x33C7, undef,  0x33D8, undef,  0x4DB6, 0x4DBF, 0x9FEB, 0x9FFF, 0xA48D, 0xA48F,
+     0xA4C7, 0xA4CF, 0xA62C, 0xA63F, 0xA6F8, 0xA6FF, 0xA7AF, undef,  0xA7B8, 0xA7F6, 0xA82C, 0xA82F, 0xA83A, 0xA83F, 0xA878, 0xA87F,
+     0xA8C6, 0xA8CD, 0xA8DA, 0xA8DF, 0xA8FE, 0xA8FF, 0xA954, 0xA95E, 0xA97D, 0xA97F, 0xA9CE, undef,  0xA9DA, 0xA9DD, 0xA9FF, undef, 
+     0xAA37, 0xAA3F, 0xAA4E, 0xAA4F, 0xAA5A, 0xAA5B, 0xAAC3, 0xAADA, 0xAAF7, 0xAB00, 0xAB07, 0xAB08, 0xAB0F, 0xAB10, 0xAB17, 0xAB1F,
+     0xAB27, undef,  0xAB2F, undef,  0xAB66, 0xAB6F, 0xABEE, 0xABEF, 0xABFA, 0xABFF, 0xD7A4, 0xD7AF, 0xD7C7, 0xD7CA, 0xD7FC, 0xF8FF,
+     0xFA6E, 0xFA6F, 0xFADA, 0xFAFF, 0xFB07, 0xFB12, 0xFB18, 0xFB1C, 0xFB37, undef,  0xFB3D, undef,  0xFB3F, undef,  0xFB42, undef, 
+     0xFB45, undef,  0xFBC2, 0xFBD2, 0xFD40, 0xFD4F, 0xFD90, 0xFD91, 0xFDC8, 0xFDEF, 0xFDFE, 0xFDFF, 0xFE12, undef,  0xFE19, 0xFE1F,
+     0xFE30, undef,  0xFE52, 0xFE53, 0xFE67, undef,  0xFE6C, 0xFE6F, 0xFE75, undef,  0xFEFD, 0xFEFE, 0xFF00, undef,  0xFFA0, undef, 
+     0xFFBF, 0xFFC1, 0xFFC8, 0xFFC9, 0xFFD0, 0xFFD1, 0xFFD8, 0xFFD9, 0xFFDD, 0xFFDF, 0xFFE7, undef,  0xFFEF, 0xFFFF, 0x1000C, undef, 
+     0x10027, undef,  0x1003B, undef,  0x1003E, undef,  0x1004E, 0x1004F, 0x1005E, 0x1007F, 0x100FB, 0x100FF, 0x10103, 0x10106, 0x10134, 0x10136,
+     0x1018F, undef,  0x1019C, 0x1019F, 0x101A1, 0x101CF, 0x101FE, 0x1027F, 0x1029D, 0x1029F, 0x102D1, 0x102DF, 0x102FC, 0x102FF, 0x10324, 0x1032C,
+     0x1034B, 0x1034F, 0x1037B, 0x1037F, 0x1039E, undef,  0x103C4, 0x103C7, 0x103D6, 0x103FF, 0x1049E, 0x1049F, 0x104AA, 0x104AF, 0x104D4, 0x104D7,
+     0x104FC, 0x104FF, 0x10528, 0x1052F, 0x10564, 0x1056E, 0x10570, 0x105FF, 0x10737, 0x1073F, 0x10756, 0x1075F, 0x10768, 0x107FF, 0x10806, 0x10807,
+     0x10809, undef,  0x10836, undef,  0x10839, 0x1083B, 0x1083D, 0x1083E, 0x10856, undef,  0x1089F, 0x108A6, 0x108B0, 0x108DF, 0x108F3, undef, 
+     0x108F6, 0x108FA, 0x1091C, 0x1091E, 0x1093A, 0x1093E, 0x10940, 0x1097F, 0x109B8, 0x109BB, 0x109D0, 0x109D1, 0x10A04, undef,  0x10A07, 0x10A0B,
+     0x10A14, undef,  0x10A18, undef,  0x10A34, 0x10A37, 0x10A3B, 0x10A3E, 0x10A48, 0x10A4F, 0x10A59, 0x10A5F, 0x10AA0, 0x10ABF, 0x10AE7, 0x10AEA,
+     0x10AF7, 0x10AFF, 0x10B36, 0x10B38, 0x10B56, 0x10B57, 0x10B73, 0x10B77, 0x10B92, 0x10B98, 0x10B9D, 0x10BA8, 0x10BB0, 0x10BFF, 0x10C49, 0x10C7F,
+     0x10CB3, 0x10CBF, 0x10CF3, 0x10CF9, 0x10D00, 0x10E5F, 0x10E7F, 0x10FFF, 0x1104E, 0x11051, 0x11070, 0x1107E, 0x110BD, undef,  0x110C2, 0x110CF,
+     0x110E9, 0x110EF, 0x110FA, 0x110FF, 0x11135, undef,  0x11144, 0x1114F, 0x11177, 0x1117F, 0x111CE, 0x111CF, 0x111E0, undef,  0x111F5, 0x111FF,
+     0x11212, undef,  0x1123F, 0x1127F, 0x11287, undef,  0x11289, undef,  0x1128E, undef,  0x1129E, undef,  0x112AA, 0x112AF, 0x112EB, 0x112EF,
+     0x112FA, 0x112FF, 0x11304, undef,  0x1130D, 0x1130E, 0x11311, 0x11312, 0x11329, undef,  0x11331, undef,  0x11334, undef,  0x1133A, 0x1133B,
+     0x11345, 0x11346, 0x11349, 0x1134A, 0x1134E, 0x1134F, 0x11351, 0x11356, 0x11358, 0x1135C, 0x11364, 0x11365, 0x1136D, 0x1136F, 0x11375, 0x113FF,
+     0x1145A, undef,  0x1145C, undef,  0x1145E, 0x1147F, 0x114C8, 0x114CF, 0x114DA, 0x1157F, 0x115B6, 0x115B7, 0x115DE, 0x115FF, 0x11645, 0x1164F,
+     0x1165A, 0x1165F, 0x1166D, 0x1167F, 0x116B8, 0x116BF, 0x116CA, 0x116FF, 0x1171A, 0x1171C, 0x1172C, 0x1172F, 0x11740, 0x1189F, 0x118F3, 0x118FE,
+     0x11900, 0x119FF, 0x11A48, 0x11A4F, 0x11A84, 0x11A85, 0x11A9D, undef,  0x11AA3, 0x11ABF, 0x11AF9, 0x11BFF, 0x11C09, undef,  0x11C37, undef, 
+     0x11C46, 0x11C4F, 0x11C6D, 0x11C6F, 0x11C90, 0x11C91, 0x11CA8, undef,  0x11CB7, 0x11CFF, 0x11D07, undef,  0x11D0A, undef,  0x11D37, 0x11D39,
+     0x11D3B, undef,  0x11D3E, undef,  0x11D48, 0x11D4F, 0x11D5A, 0x11FFF, 0x1239A, 0x123FF, 0x1246F, undef,  0x12475, 0x1247F, 0x12544, 0x12FFF,
+     0x1342F, 0x143FF, 0x14647, 0x167FF, 0x16A39, 0x16A3F, 0x16A5F, undef,  0x16A6A, 0x16A6D, 0x16A70, 0x16ACF, 0x16AEE, 0x16AEF, 0x16AF6, 0x16AFF,
+     0x16B46, 0x16B4F, 0x16B5A, undef,  0x16B62, undef,  0x16B78, 0x16B7C, 0x16B90, 0x16EFF, 0x16F45, 0x16F4F, 0x16F7F, 0x16F8E, 0x16FA0, 0x16FDF,
+     0x16FE2, 0x16FFF, 0x187ED, 0x187FF, 0x18AF3, 0x1AFFF, 0x1B11F, 0x1B16F, 0x1B2FC, 0x1BBFF, 0x1BC6B, 0x1BC6F, 0x1BC7D, 0x1BC7F, 0x1BC89, 0x1BC8F,
+     0x1BC9A, 0x1BC9B, 0x1BCA4, 0x1CFFF, 0x1D0F6, 0x1D0FF, 0x1D127, 0x1D128, 0x1D173, 0x1D17A, 0x1D1E9, 0x1D1FF, 0x1D246, 0x1D2FF, 0x1D357, 0x1D35F,
+     0x1D372, 0x1D3FF, 0x1D455, undef,  0x1D49D, undef,  0x1D4A0, 0x1D4A1, 0x1D4A3, 0x1D4A4, 0x1D4A7, 0x1D4A8, 0x1D4AD, undef,  0x1D4BA, undef, 
+     0x1D4BC, undef,  0x1D4C4, undef,  0x1D506, undef,  0x1D50B, 0x1D50C, 0x1D515, undef,  0x1D51D, undef,  0x1D53A, undef,  0x1D53F, undef, 
+     0x1D545, undef,  0x1D547, 0x1D549, 0x1D551, undef,  0x1D6A6, 0x1D6A7, 0x1D7CC, 0x1D7CD, 0x1DA8C, 0x1DA9A, 0x1DAA0, undef,  0x1DAB0, 0x1DFFF,
+     0x1E007, undef,  0x1E019, 0x1E01A, 0x1E022, undef,  0x1E025, undef,  0x1E02B, 0x1E7FF, 0x1E8C5, 0x1E8C6, 0x1E8D7, 0x1E8FF, 0x1E94B, 0x1E94F,
+     0x1E95A, 0x1E95D, 0x1E960, 0x1EDFF, 0x1EE04, undef,  0x1EE20, undef,  0x1EE23, undef,  0x1EE25, 0x1EE26, 0x1EE28, undef,  0x1EE33, undef, 
+     0x1EE38, undef,  0x1EE3A, undef,  0x1EE3C, 0x1EE41, 0x1EE43, 0x1EE46, 0x1EE48, undef,  0x1EE4A, undef,  0x1EE4C, undef,  0x1EE50, undef, 
+     0x1EE53, undef,  0x1EE55, 0x1EE56, 0x1EE58, undef,  0x1EE5A, undef,  0x1EE5C, undef,  0x1EE5E, undef,  0x1EE60, undef,  0x1EE63, undef, 
+     0x1EE65, 0x1EE66, 0x1EE6B, undef,  0x1EE73, undef,  0x1EE78, undef,  0x1EE7D, undef,  0x1EE7F, undef,  0x1EE8A, undef,  0x1EE9C, 0x1EEA0,
+     0x1EEA4, undef,  0x1EEAA, undef,  0x1EEBC, 0x1EEEF, 0x1EEF2, 0x1EFFF, 0x1F02C, 0x1F02F, 0x1F094, 0x1F09F, 0x1F0AF, 0x1F0B0, 0x1F0C0, undef, 
+     0x1F0D0, undef,  0x1F0F6, 0x1F100, 0x1F10D, 0x1F10F, 0x1F12F, undef,  0x1F16C, 0x1F16F, 0x1F1AD, 0x1F1E5, 0x1F203, 0x1F20F, 0x1F23C, 0x1F23F,
+     0x1F249, 0x1F24F, 0x1F252, 0x1F25F, 0x1F266, 0x1F2FF, 0x1F6D5, 0x1F6DF, 0x1F6ED, 0x1F6EF, 0x1F6F9, 0x1F6FF, 0x1F774, 0x1F77F, 0x1F7D5, 0x1F7FF,
+     0x1F80C, 0x1F80F, 0x1F848, 0x1F84F, 0x1F85A, 0x1F85F, 0x1F888, 0x1F88F, 0x1F8AE, 0x1F8FF, 0x1F90C, 0x1F90F, 0x1F93F, undef,  0x1F94D, 0x1F94F,
+     0x1F96C, 0x1F97F, 0x1F998, 0x1F9BF, 0x1F9C1, 0x1F9CF, 0x1F9E7, 0x1FFFF, 0x2A6D7, 0x2A6FF, 0x2B735, 0x2B73F, 0x2B81E, 0x2B81F, 0x2CEA2, 0x2CEAF,
+     0x2EBE1, 0x2F7FF, 0x2F868, undef,  0x2F874, undef,  0x2F91F, undef,  0x2F95F, undef,  0x2F9BF, undef,  0x2FA1E, 0xE00FF, 0xE01F0, 0x10FFFF,
+  );
+
+}
 sub IsDisallowed { return _mk_prop(@DISALLOWED); };
 
-our @DISALLOWEDSTD3VALID = (
-  0x0000, 0x002C, 0x002F, undef,  0x003A, 0x0040, 0x005B, 0x0060, 0x007B, 0x007F, 0x2260, undef,  0x226E, 0x226F,
-);
+our @DISALLOWEDSTD3VALID;
+BEGIN {
+  @DISALLOWEDSTD3VALID = (
+     0x0000, 0x002C, 0x002F, undef,  0x003A, 0x0040, 0x005B, 0x0060, 0x007B, 0x007F, 0x2260, undef,  0x226E, 0x226F,
+  );
+
+}
 sub IsDisallowedSTD3Valid { return _mk_prop(@DISALLOWEDSTD3VALID); };
 
-our @VALID = (
-  0x002D, 0x002E, 0x0030, 0x0039, 0x0061, 0x007A, 0x00A1, 0x00A7, 0x00A9, undef,  0x00AB, 0x00AC, 0x00AE, undef,  0x00B0, 0x00B1,
-  0x00B6, 0x00B7, 0x00BB, undef,  0x00BF, undef,  0x00D7, undef,  0x00E0, 0x00FF, 0x0101, undef,  0x0103, undef,  0x0105, undef, 
-  0x0107, undef,  0x0109, undef,  0x010B, undef,  0x010D, undef,  0x010F, undef,  0x0111, undef,  0x0113, undef,  0x0115, undef, 
-  0x0117, undef,  0x0119, undef,  0x011B, undef,  0x011D, undef,  0x011F, undef,  0x0121, undef,  0x0123, undef,  0x0125, undef, 
-  0x0127, undef,  0x0129, undef,  0x012B, undef,  0x012D, undef,  0x012F, undef,  0x0131, undef,  0x0135, undef,  0x0137, 0x0138,
-  0x013A, undef,  0x013C, undef,  0x013E, undef,  0x0142, undef,  0x0144, undef,  0x0146, undef,  0x0148, undef,  0x014B, undef, 
-  0x014D, undef,  0x014F, undef,  0x0151, undef,  0x0153, undef,  0x0155, undef,  0x0157, undef,  0x0159, undef,  0x015B, undef, 
-  0x015D, undef,  0x015F, undef,  0x0161, undef,  0x0163, undef,  0x0165, undef,  0x0167, undef,  0x0169, undef,  0x016B, undef, 
-  0x016D, undef,  0x016F, undef,  0x0171, undef,  0x0173, undef,  0x0175, undef,  0x0177, undef,  0x017A, undef,  0x017C, undef, 
-  0x017E, undef,  0x0180, undef,  0x0183, undef,  0x0185, undef,  0x0188, undef,  0x018C, 0x018D, 0x0192, undef,  0x0195, undef, 
-  0x0199, 0x019B, 0x019E, undef,  0x01A1, undef,  0x01A3, undef,  0x01A5, undef,  0x01A8, undef,  0x01AA, 0x01AB, 0x01AD, undef, 
-  0x01B0, undef,  0x01B4, undef,  0x01B6, undef,  0x01B9, 0x01BB, 0x01BD, 0x01C3, 0x01CE, undef,  0x01D0, undef,  0x01D2, undef, 
-  0x01D4, undef,  0x01D6, undef,  0x01D8, undef,  0x01DA, undef,  0x01DC, 0x01DD, 0x01DF, undef,  0x01E1, undef,  0x01E3, undef, 
-  0x01E5, undef,  0x01E7, undef,  0x01E9, undef,  0x01EB, undef,  0x01ED, undef,  0x01EF, 0x01F0, 0x01F5, undef,  0x01F9, undef, 
-  0x01FB, undef,  0x01FD, undef,  0x01FF, undef,  0x0201, undef,  0x0203, undef,  0x0205, undef,  0x0207, undef,  0x0209, undef, 
-  0x020B, undef,  0x020D, undef,  0x020F, undef,  0x0211, undef,  0x0213, undef,  0x0215, undef,  0x0217, undef,  0x0219, undef, 
-  0x021B, undef,  0x021D, undef,  0x021F, undef,  0x0221, undef,  0x0223, undef,  0x0225, undef,  0x0227, undef,  0x0229, undef, 
-  0x022B, undef,  0x022D, undef,  0x022F, undef,  0x0231, undef,  0x0233, 0x0239, 0x023C, undef,  0x023F, 0x0240, 0x0242, undef, 
-  0x0247, undef,  0x0249, undef,  0x024B, undef,  0x024D, undef,  0x024F, 0x02AF, 0x02B9, 0x02D7, 0x02DE, 0x02DF, 0x02E5, 0x033F,
-  0x0342, undef,  0x0346, 0x034E, 0x0350, 0x036F, 0x0371, undef,  0x0373, undef,  0x0375, undef,  0x0377, undef,  0x037B, 0x037D,
-  0x0390, undef,  0x03AC, 0x03C1, 0x03C3, 0x03CE, 0x03D7, undef,  0x03D9, undef,  0x03DB, undef,  0x03DD, undef,  0x03DF, undef, 
-  0x03E1, undef,  0x03E3, undef,  0x03E5, undef,  0x03E7, undef,  0x03E9, undef,  0x03EB, undef,  0x03ED, undef,  0x03EF, undef, 
-  0x03F3, undef,  0x03F6, undef,  0x03F8, undef,  0x03FB, 0x03FC, 0x0430, 0x045F, 0x0461, undef,  0x0463, undef,  0x0465, undef, 
-  0x0467, undef,  0x0469, undef,  0x046B, undef,  0x046D, undef,  0x046F, undef,  0x0471, undef,  0x0473, undef,  0x0475, undef, 
-  0x0477, undef,  0x0479, undef,  0x047B, undef,  0x047D, undef,  0x047F, undef,  0x0481, 0x0489, 0x048B, undef,  0x048D, undef, 
-  0x048F, undef,  0x0491, undef,  0x0493, undef,  0x0495, undef,  0x0497, undef,  0x0499, undef,  0x049B, undef,  0x049D, undef, 
-  0x049F, undef,  0x04A1, undef,  0x04A3, undef,  0x04A5, undef,  0x04A7, undef,  0x04A9, undef,  0x04AB, undef,  0x04AD, undef, 
-  0x04AF, undef,  0x04B1, undef,  0x04B3, undef,  0x04B5, undef,  0x04B7, undef,  0x04B9, undef,  0x04BB, undef,  0x04BD, undef, 
-  0x04BF, undef,  0x04C2, undef,  0x04C4, undef,  0x04C6, undef,  0x04C8, undef,  0x04CA, undef,  0x04CC, undef,  0x04CE, 0x04CF,
-  0x04D1, undef,  0x04D3, undef,  0x04D5, undef,  0x04D7, undef,  0x04D9, undef,  0x04DB, undef,  0x04DD, undef,  0x04DF, undef, 
-  0x04E1, undef,  0x04E3, undef,  0x04E5, undef,  0x04E7, undef,  0x04E9, undef,  0x04EB, undef,  0x04ED, undef,  0x04EF, undef, 
-  0x04F1, undef,  0x04F3, undef,  0x04F5, undef,  0x04F7, undef,  0x04F9, undef,  0x04FB, undef,  0x04FD, undef,  0x04FF, undef, 
-  0x0501, undef,  0x0503, undef,  0x0505, undef,  0x0507, undef,  0x0509, undef,  0x050B, undef,  0x050D, undef,  0x050F, undef, 
-  0x0511, undef,  0x0513, undef,  0x0515, undef,  0x0517, undef,  0x0519, undef,  0x051B, undef,  0x051D, undef,  0x051F, undef, 
-  0x0521, undef,  0x0523, undef,  0x0525, undef,  0x0527, undef,  0x0529, undef,  0x052B, undef,  0x052D, undef,  0x052F, undef, 
-  0x0559, 0x055F, 0x0561, 0x0586, 0x0589, 0x058A, 0x058D, 0x058F, 0x0591, 0x05C7, 0x05D0, 0x05EA, 0x05F0, 0x05F4, 0x0606, 0x061B,
-  0x061E, 0x0674, 0x0679, 0x06DC, 0x06DE, 0x070D, 0x0710, 0x074A, 0x074D, 0x07B1, 0x07C0, 0x07FA, 0x0800, 0x082D, 0x0830, 0x083E,
-  0x0840, 0x085B, 0x085E, undef,  0x0860, 0x086A, 0x08A0, 0x08B4, 0x08B6, 0x08BD, 0x08D4, 0x08E1, 0x08E3, 0x0957, 0x0960, 0x0983,
-  0x0985, 0x098C, 0x098F, 0x0990, 0x0993, 0x09A8, 0x09AA, 0x09B0, 0x09B2, undef,  0x09B6, 0x09B9, 0x09BC, 0x09C4, 0x09C7, 0x09C8,
-  0x09CB, 0x09CE, 0x09D7, undef,  0x09E0, 0x09E3, 0x09E6, 0x09FD, 0x0A01, 0x0A03, 0x0A05, 0x0A0A, 0x0A0F, 0x0A10, 0x0A13, 0x0A28,
-  0x0A2A, 0x0A30, 0x0A32, undef,  0x0A35, undef,  0x0A38, 0x0A39, 0x0A3C, undef,  0x0A3E, 0x0A42, 0x0A47, 0x0A48, 0x0A4B, 0x0A4D,
-  0x0A51, undef,  0x0A5C, undef,  0x0A66, 0x0A75, 0x0A81, 0x0A83, 0x0A85, 0x0A8D, 0x0A8F, 0x0A91, 0x0A93, 0x0AA8, 0x0AAA, 0x0AB0,
-  0x0AB2, 0x0AB3, 0x0AB5, 0x0AB9, 0x0ABC, 0x0AC5, 0x0AC7, 0x0AC9, 0x0ACB, 0x0ACD, 0x0AD0, undef,  0x0AE0, 0x0AE3, 0x0AE6, 0x0AF1,
-  0x0AF9, 0x0AFF, 0x0B01, 0x0B03, 0x0B05, 0x0B0C, 0x0B0F, 0x0B10, 0x0B13, 0x0B28, 0x0B2A, 0x0B30, 0x0B32, 0x0B33, 0x0B35, 0x0B39,
-  0x0B3C, 0x0B44, 0x0B47, 0x0B48, 0x0B4B, 0x0B4D, 0x0B56, 0x0B57, 0x0B5F, 0x0B63, 0x0B66, 0x0B77, 0x0B82, 0x0B83, 0x0B85, 0x0B8A,
-  0x0B8E, 0x0B90, 0x0B92, 0x0B95, 0x0B99, 0x0B9A, 0x0B9C, undef,  0x0B9E, 0x0B9F, 0x0BA3, 0x0BA4, 0x0BA8, 0x0BAA, 0x0BAE, 0x0BB9,
-  0x0BBE, 0x0BC2, 0x0BC6, 0x0BC8, 0x0BCA, 0x0BCD, 0x0BD0, undef,  0x0BD7, undef,  0x0BE6, 0x0BFA, 0x0C00, 0x0C03, 0x0C05, 0x0C0C,
-  0x0C0E, 0x0C10, 0x0C12, 0x0C28, 0x0C2A, 0x0C39, 0x0C3D, 0x0C44, 0x0C46, 0x0C48, 0x0C4A, 0x0C4D, 0x0C55, 0x0C56, 0x0C58, 0x0C5A,
-  0x0C60, 0x0C63, 0x0C66, 0x0C6F, 0x0C78, 0x0C83, 0x0C85, 0x0C8C, 0x0C8E, 0x0C90, 0x0C92, 0x0CA8, 0x0CAA, 0x0CB3, 0x0CB5, 0x0CB9,
-  0x0CBC, 0x0CC4, 0x0CC6, 0x0CC8, 0x0CCA, 0x0CCD, 0x0CD5, 0x0CD6, 0x0CDE, undef,  0x0CE0, 0x0CE3, 0x0CE6, 0x0CEF, 0x0CF1, 0x0CF2,
-  0x0D00, 0x0D03, 0x0D05, 0x0D0C, 0x0D0E, 0x0D10, 0x0D12, 0x0D44, 0x0D46, 0x0D48, 0x0D4A, 0x0D4F, 0x0D54, 0x0D63, 0x0D66, 0x0D7F,
-  0x0D82, 0x0D83, 0x0D85, 0x0D96, 0x0D9A, 0x0DB1, 0x0DB3, 0x0DBB, 0x0DBD, undef,  0x0DC0, 0x0DC6, 0x0DCA, undef,  0x0DCF, 0x0DD4,
-  0x0DD6, undef,  0x0DD8, 0x0DDF, 0x0DE6, 0x0DEF, 0x0DF2, 0x0DF4, 0x0E01, 0x0E32, 0x0E34, 0x0E3A, 0x0E3F, 0x0E5B, 0x0E81, 0x0E82,
-  0x0E84, undef,  0x0E87, 0x0E88, 0x0E8A, undef,  0x0E8D, undef,  0x0E94, 0x0E97, 0x0E99, 0x0E9F, 0x0EA1, 0x0EA3, 0x0EA5, undef, 
-  0x0EA7, undef,  0x0EAA, 0x0EAB, 0x0EAD, 0x0EB2, 0x0EB4, 0x0EB9, 0x0EBB, 0x0EBD, 0x0EC0, 0x0EC4, 0x0EC6, undef,  0x0EC8, 0x0ECD,
-  0x0ED0, 0x0ED9, 0x0EDE, 0x0EDF, 0x0F00, 0x0F0B, 0x0F0D, 0x0F42, 0x0F44, 0x0F47, 0x0F49, 0x0F4C, 0x0F4E, 0x0F51, 0x0F53, 0x0F56,
-  0x0F58, 0x0F5B, 0x0F5D, 0x0F68, 0x0F6A, 0x0F6C, 0x0F71, 0x0F72, 0x0F74, undef,  0x0F7A, 0x0F80, 0x0F82, 0x0F92, 0x0F94, 0x0F97,
-  0x0F99, 0x0F9C, 0x0F9E, 0x0FA1, 0x0FA3, 0x0FA6, 0x0FA8, 0x0FAB, 0x0FAD, 0x0FB8, 0x0FBA, 0x0FBC, 0x0FBE, 0x0FCC, 0x0FCE, 0x0FDA,
-  0x1000, 0x109F, 0x10D0, 0x10FB, 0x10FD, 0x115E, 0x1161, 0x1248, 0x124A, 0x124D, 0x1250, 0x1256, 0x1258, undef,  0x125A, 0x125D,
-  0x1260, 0x1288, 0x128A, 0x128D, 0x1290, 0x12B0, 0x12B2, 0x12B5, 0x12B8, 0x12BE, 0x12C0, undef,  0x12C2, 0x12C5, 0x12C8, 0x12D6,
-  0x12D8, 0x1310, 0x1312, 0x1315, 0x1318, 0x135A, 0x135D, 0x137C, 0x1380, 0x1399, 0x13A0, 0x13F5, 0x1400, 0x167F, 0x1681, 0x169C,
-  0x16A0, 0x16F8, 0x1700, 0x170C, 0x170E, 0x1714, 0x1720, 0x1736, 0x1740, 0x1753, 0x1760, 0x176C, 0x176E, 0x1770, 0x1772, 0x1773,
-  0x1780, 0x17B3, 0x17B6, 0x17DD, 0x17E0, 0x17E9, 0x17F0, 0x17F9, 0x1800, 0x1805, 0x1807, 0x180A, 0x1810, 0x1819, 0x1820, 0x1877,
-  0x1880, 0x18AA, 0x18B0, 0x18F5, 0x1900, 0x191E, 0x1920, 0x192B, 0x1930, 0x193B, 0x1940, undef,  0x1944, 0x196D, 0x1970, 0x1974,
-  0x1980, 0x19AB, 0x19B0, 0x19C9, 0x19D0, 0x19DA, 0x19DE, 0x1A1B, 0x1A1E, 0x1A5E, 0x1A60, 0x1A7C, 0x1A7F, 0x1A89, 0x1A90, 0x1A99,
-  0x1AA0, 0x1AAD, 0x1AB0, 0x1ABE, 0x1B00, 0x1B4B, 0x1B50, 0x1B7C, 0x1B80, 0x1BF3, 0x1BFC, 0x1C37, 0x1C3B, 0x1C49, 0x1C4D, 0x1C7F,
-  0x1CC0, 0x1CC7, 0x1CD0, 0x1CF9, 0x1D00, 0x1D2B, 0x1D2F, undef,  0x1D3B, undef,  0x1D4E, undef,  0x1D6B, 0x1D77, 0x1D79, 0x1D9A,
-  0x1DC0, 0x1DF9, 0x1DFB, 0x1DFF, 0x1E01, undef,  0x1E03, undef,  0x1E05, undef,  0x1E07, undef,  0x1E09, undef,  0x1E0B, undef, 
-  0x1E0D, undef,  0x1E0F, undef,  0x1E11, undef,  0x1E13, undef,  0x1E15, undef,  0x1E17, undef,  0x1E19, undef,  0x1E1B, undef, 
-  0x1E1D, undef,  0x1E1F, undef,  0x1E21, undef,  0x1E23, undef,  0x1E25, undef,  0x1E27, undef,  0x1E29, undef,  0x1E2B, undef, 
-  0x1E2D, undef,  0x1E2F, undef,  0x1E31, undef,  0x1E33, undef,  0x1E35, undef,  0x1E37, undef,  0x1E39, undef,  0x1E3B, undef, 
-  0x1E3D, undef,  0x1E3F, undef,  0x1E41, undef,  0x1E43, undef,  0x1E45, undef,  0x1E47, undef,  0x1E49, undef,  0x1E4B, undef, 
-  0x1E4D, undef,  0x1E4F, undef,  0x1E51, undef,  0x1E53, undef,  0x1E55, undef,  0x1E57, undef,  0x1E59, undef,  0x1E5B, undef, 
-  0x1E5D, undef,  0x1E5F, undef,  0x1E61, undef,  0x1E63, undef,  0x1E65, undef,  0x1E67, undef,  0x1E69, undef,  0x1E6B, undef, 
-  0x1E6D, undef,  0x1E6F, undef,  0x1E71, undef,  0x1E73, undef,  0x1E75, undef,  0x1E77, undef,  0x1E79, undef,  0x1E7B, undef, 
-  0x1E7D, undef,  0x1E7F, undef,  0x1E81, undef,  0x1E83, undef,  0x1E85, undef,  0x1E87, undef,  0x1E89, undef,  0x1E8B, undef, 
-  0x1E8D, undef,  0x1E8F, undef,  0x1E91, undef,  0x1E93, undef,  0x1E95, 0x1E99, 0x1E9C, 0x1E9D, 0x1E9F, undef,  0x1EA1, undef, 
-  0x1EA3, undef,  0x1EA5, undef,  0x1EA7, undef,  0x1EA9, undef,  0x1EAB, undef,  0x1EAD, undef,  0x1EAF, undef,  0x1EB1, undef, 
-  0x1EB3, undef,  0x1EB5, undef,  0x1EB7, undef,  0x1EB9, undef,  0x1EBB, undef,  0x1EBD, undef,  0x1EBF, undef,  0x1EC1, undef, 
-  0x1EC3, undef,  0x1EC5, undef,  0x1EC7, undef,  0x1EC9, undef,  0x1ECB, undef,  0x1ECD, undef,  0x1ECF, undef,  0x1ED1, undef, 
-  0x1ED3, undef,  0x1ED5, undef,  0x1ED7, undef,  0x1ED9, undef,  0x1EDB, undef,  0x1EDD, undef,  0x1EDF, undef,  0x1EE1, undef, 
-  0x1EE3, undef,  0x1EE5, undef,  0x1EE7, undef,  0x1EE9, undef,  0x1EEB, undef,  0x1EED, undef,  0x1EEF, undef,  0x1EF1, undef, 
-  0x1EF3, undef,  0x1EF5, undef,  0x1EF7, undef,  0x1EF9, undef,  0x1EFB, undef,  0x1EFD, undef,  0x1EFF, 0x1F07, 0x1F10, 0x1F15,
-  0x1F20, 0x1F27, 0x1F30, 0x1F37, 0x1F40, 0x1F45, 0x1F50, 0x1F57, 0x1F60, 0x1F67, 0x1F70, undef,  0x1F72, undef,  0x1F74, undef, 
-  0x1F76, undef,  0x1F78, undef,  0x1F7A, undef,  0x1F7C, undef,  0x1FB0, 0x1FB1, 0x1FB6, undef,  0x1FC6, undef,  0x1FD0, 0x1FD2,
-  0x1FD6, 0x1FD7, 0x1FE0, 0x1FE2, 0x1FE4, 0x1FE7, 0x1FF6, undef,  0x2010, undef,  0x2012, 0x2016, 0x2018, 0x2023, 0x2027, undef, 
-  0x2030, 0x2032, 0x2035, undef,  0x2038, 0x203B, 0x203D, undef,  0x203F, 0x2046, 0x204A, 0x2056, 0x2058, 0x205E, 0x20A0, 0x20A7,
-  0x20A9, 0x20BF, 0x20D0, 0x20F0, 0x2104, undef,  0x2108, undef,  0x2114, undef,  0x2117, 0x2118, 0x211E, 0x211F, 0x2123, undef, 
-  0x2125, undef,  0x2127, undef,  0x2129, undef,  0x212E, undef,  0x213A, undef,  0x2141, 0x2144, 0x214A, 0x214F, 0x2180, 0x2182,
-  0x2184, 0x2188, 0x218A, 0x218B, 0x2190, 0x222B, 0x222E, undef,  0x2231, 0x225F, 0x2261, 0x226D, 0x2270, 0x2328, 0x232B, 0x2426,
-  0x2440, 0x244A, 0x24EB, 0x2A0B, 0x2A0D, 0x2A73, 0x2A77, 0x2ADB, 0x2ADD, 0x2B73, 0x2B76, 0x2B95, 0x2B98, 0x2BB9, 0x2BBD, 0x2BC8,
-  0x2BCA, 0x2BD2, 0x2BEC, 0x2BEF, 0x2C30, 0x2C5E, 0x2C61, undef,  0x2C65, 0x2C66, 0x2C68, undef,  0x2C6A, undef,  0x2C6C, undef, 
-  0x2C71, undef,  0x2C73, 0x2C74, 0x2C76, 0x2C7B, 0x2C81, undef,  0x2C83, undef,  0x2C85, undef,  0x2C87, undef,  0x2C89, undef, 
-  0x2C8B, undef,  0x2C8D, undef,  0x2C8F, undef,  0x2C91, undef,  0x2C93, undef,  0x2C95, undef,  0x2C97, undef,  0x2C99, undef, 
-  0x2C9B, undef,  0x2C9D, undef,  0x2C9F, undef,  0x2CA1, undef,  0x2CA3, undef,  0x2CA5, undef,  0x2CA7, undef,  0x2CA9, undef, 
-  0x2CAB, undef,  0x2CAD, undef,  0x2CAF, undef,  0x2CB1, undef,  0x2CB3, undef,  0x2CB5, undef,  0x2CB7, undef,  0x2CB9, undef, 
-  0x2CBB, undef,  0x2CBD, undef,  0x2CBF, undef,  0x2CC1, undef,  0x2CC3, undef,  0x2CC5, undef,  0x2CC7, undef,  0x2CC9, undef, 
-  0x2CCB, undef,  0x2CCD, undef,  0x2CCF, undef,  0x2CD1, undef,  0x2CD3, undef,  0x2CD5, undef,  0x2CD7, undef,  0x2CD9, undef, 
-  0x2CDB, undef,  0x2CDD, undef,  0x2CDF, undef,  0x2CE1, undef,  0x2CE3, 0x2CEA, 0x2CEC, undef,  0x2CEE, 0x2CF1, 0x2CF3, undef, 
-  0x2CF9, 0x2D25, 0x2D27, undef,  0x2D2D, undef,  0x2D30, 0x2D67, 0x2D70, undef,  0x2D7F, 0x2D96, 0x2DA0, 0x2DA6, 0x2DA8, 0x2DAE,
-  0x2DB0, 0x2DB6, 0x2DB8, 0x2DBE, 0x2DC0, 0x2DC6, 0x2DC8, 0x2DCE, 0x2DD0, 0x2DD6, 0x2DD8, 0x2DDE, 0x2DE0, 0x2E49, 0x2E80, 0x2E99,
-  0x2E9B, 0x2E9E, 0x2EA0, 0x2EF2, 0x3001, undef,  0x3003, 0x3035, 0x3037, undef,  0x303B, 0x303F, 0x3041, 0x3096, 0x3099, 0x309A,
-  0x309D, 0x309E, 0x30A0, 0x30FE, 0x3105, 0x312E, 0x3190, 0x3191, 0x31A0, 0x31BA, 0x31C0, 0x31E3, 0x31F0, 0x31FF, 0x3248, 0x324F,
-  0x327F, undef,  0x3400, 0x4DB5, 0x4DC0, 0x9FEA, 0xA000, 0xA48C, 0xA490, 0xA4C6, 0xA4D0, 0xA62B, 0xA641, undef,  0xA643, undef, 
-  0xA645, undef,  0xA647, undef,  0xA649, undef,  0xA64B, undef,  0xA64D, undef,  0xA64F, undef,  0xA651, undef,  0xA653, undef, 
-  0xA655, undef,  0xA657, undef,  0xA659, undef,  0xA65B, undef,  0xA65D, undef,  0xA65F, undef,  0xA661, undef,  0xA663, undef, 
-  0xA665, undef,  0xA667, undef,  0xA669, undef,  0xA66B, undef,  0xA66D, 0xA67F, 0xA681, undef,  0xA683, undef,  0xA685, undef, 
-  0xA687, undef,  0xA689, undef,  0xA68B, undef,  0xA68D, undef,  0xA68F, undef,  0xA691, undef,  0xA693, undef,  0xA695, undef, 
-  0xA697, undef,  0xA699, undef,  0xA69B, undef,  0xA69E, 0xA6F7, 0xA700, 0xA721, 0xA723, undef,  0xA725, undef,  0xA727, undef, 
-  0xA729, undef,  0xA72B, undef,  0xA72D, undef,  0xA72F, 0xA731, 0xA733, undef,  0xA735, undef,  0xA737, undef,  0xA739, undef, 
-  0xA73B, undef,  0xA73D, undef,  0xA73F, undef,  0xA741, undef,  0xA743, undef,  0xA745, undef,  0xA747, undef,  0xA749, undef, 
-  0xA74B, undef,  0xA74D, undef,  0xA74F, undef,  0xA751, undef,  0xA753, undef,  0xA755, undef,  0xA757, undef,  0xA759, undef, 
-  0xA75B, undef,  0xA75D, undef,  0xA75F, undef,  0xA761, undef,  0xA763, undef,  0xA765, undef,  0xA767, undef,  0xA769, undef, 
-  0xA76B, undef,  0xA76D, undef,  0xA76F, undef,  0xA771, 0xA778, 0xA77A, undef,  0xA77C, undef,  0xA77F, undef,  0xA781, undef, 
-  0xA783, undef,  0xA785, undef,  0xA787, 0xA78A, 0xA78C, undef,  0xA78E, 0xA78F, 0xA791, undef,  0xA793, 0xA795, 0xA797, undef, 
-  0xA799, undef,  0xA79B, undef,  0xA79D, undef,  0xA79F, undef,  0xA7A1, undef,  0xA7A3, undef,  0xA7A5, undef,  0xA7A7, undef, 
-  0xA7A9, undef,  0xA7B5, undef,  0xA7B7, undef,  0xA7F7, undef,  0xA7FA, 0xA82B, 0xA830, 0xA839, 0xA840, 0xA877, 0xA880, 0xA8C5,
-  0xA8CE, 0xA8D9, 0xA8E0, 0xA8FD, 0xA900, 0xA953, 0xA95F, 0xA97C, 0xA980, 0xA9CD, 0xA9CF, 0xA9D9, 0xA9DE, 0xA9FE, 0xAA00, 0xAA36,
-  0xAA40, 0xAA4D, 0xAA50, 0xAA59, 0xAA5C, 0xAAC2, 0xAADB, 0xAAF6, 0xAB01, 0xAB06, 0xAB09, 0xAB0E, 0xAB11, 0xAB16, 0xAB20, 0xAB26,
-  0xAB28, 0xAB2E, 0xAB30, 0xAB5B, 0xAB60, 0xAB65, 0xABC0, 0xABED, 0xABF0, 0xABF9, 0xAC00, 0xD7A3, 0xD7B0, 0xD7C6, 0xD7CB, 0xD7FB,
-  0xFA0E, 0xFA0F, 0xFA11, undef,  0xFA13, 0xFA14, 0xFA1F, undef,  0xFA21, undef,  0xFA23, 0xFA24, 0xFA27, 0xFA29, 0xFB1E, undef, 
-  0xFBB2, 0xFBC1, 0xFD3E, 0xFD3F, 0xFDFD, undef,  0xFE20, 0xFE2F, 0xFE45, 0xFE46, 0xFE73, undef,  0x10000, 0x1000B, 0x1000D, 0x10026,
-  0x10028, 0x1003A, 0x1003C, 0x1003D, 0x1003F, 0x1004D, 0x10050, 0x1005D, 0x10080, 0x100FA, 0x10100, 0x10102, 0x10107, 0x10133, 0x10137, 0x1018E,
-  0x10190, 0x1019B, 0x101A0, undef,  0x101D0, 0x101FD, 0x10280, 0x1029C, 0x102A0, 0x102D0, 0x102E0, 0x102FB, 0x10300, 0x10323, 0x1032D, 0x1034A,
-  0x10350, 0x1037A, 0x10380, 0x1039D, 0x1039F, 0x103C3, 0x103C8, 0x103D5, 0x10428, 0x1049D, 0x104A0, 0x104A9, 0x104D8, 0x104FB, 0x10500, 0x10527,
-  0x10530, 0x10563, 0x1056F, undef,  0x10600, 0x10736, 0x10740, 0x10755, 0x10760, 0x10767, 0x10800, 0x10805, 0x10808, undef,  0x1080A, 0x10835,
-  0x10837, 0x10838, 0x1083C, undef,  0x1083F, 0x10855, 0x10857, 0x1089E, 0x108A7, 0x108AF, 0x108E0, 0x108F2, 0x108F4, 0x108F5, 0x108FB, 0x1091B,
-  0x1091F, 0x10939, 0x1093F, undef,  0x10980, 0x109B7, 0x109BC, 0x109CF, 0x109D2, 0x10A03, 0x10A05, 0x10A06, 0x10A0C, 0x10A13, 0x10A15, 0x10A17,
-  0x10A19, 0x10A33, 0x10A38, 0x10A3A, 0x10A3F, 0x10A47, 0x10A50, 0x10A58, 0x10A60, 0x10A9F, 0x10AC0, 0x10AE6, 0x10AEB, 0x10AF6, 0x10B00, 0x10B35,
-  0x10B39, 0x10B55, 0x10B58, 0x10B72, 0x10B78, 0x10B91, 0x10B99, 0x10B9C, 0x10BA9, 0x10BAF, 0x10C00, 0x10C48, 0x10CC0, 0x10CF2, 0x10CFA, 0x10CFF,
-  0x10E60, 0x10E7E, 0x11000, 0x1104D, 0x11052, 0x1106F, 0x1107F, 0x110BC, 0x110BE, 0x110C1, 0x110D0, 0x110E8, 0x110F0, 0x110F9, 0x11100, 0x11134,
-  0x11136, 0x11143, 0x11150, 0x11176, 0x11180, 0x111CD, 0x111D0, 0x111DF, 0x111E1, 0x111F4, 0x11200, 0x11211, 0x11213, 0x1123E, 0x11280, 0x11286,
-  0x11288, undef,  0x1128A, 0x1128D, 0x1128F, 0x1129D, 0x1129F, 0x112A9, 0x112B0, 0x112EA, 0x112F0, 0x112F9, 0x11300, 0x11303, 0x11305, 0x1130C,
-  0x1130F, 0x11310, 0x11313, 0x11328, 0x1132A, 0x11330, 0x11332, 0x11333, 0x11335, 0x11339, 0x1133C, 0x11344, 0x11347, 0x11348, 0x1134B, 0x1134D,
-  0x11350, undef,  0x11357, undef,  0x1135D, 0x11363, 0x11366, 0x1136C, 0x11370, 0x11374, 0x11400, 0x11459, 0x1145B, undef,  0x1145D, undef, 
-  0x11480, 0x114C7, 0x114D0, 0x114D9, 0x11580, 0x115B5, 0x115B8, 0x115DD, 0x11600, 0x11644, 0x11650, 0x11659, 0x11660, 0x1166C, 0x11680, 0x116B7,
-  0x116C0, 0x116C9, 0x11700, 0x11719, 0x1171D, 0x1172B, 0x11730, 0x1173F, 0x118C0, 0x118F2, 0x118FF, undef,  0x11A00, 0x11A47, 0x11A50, 0x11A83,
-  0x11A86, 0x11A9C, 0x11A9E, 0x11AA2, 0x11AC0, 0x11AF8, 0x11C00, 0x11C08, 0x11C0A, 0x11C36, 0x11C38, 0x11C45, 0x11C50, 0x11C6C, 0x11C70, 0x11C8F,
-  0x11C92, 0x11CA7, 0x11CA9, 0x11CB6, 0x11D00, 0x11D06, 0x11D08, 0x11D09, 0x11D0B, 0x11D36, 0x11D3A, undef,  0x11D3C, 0x11D3D, 0x11D3F, 0x11D47,
-  0x11D50, 0x11D59, 0x12000, 0x12399, 0x12400, 0x1246E, 0x12470, 0x12474, 0x12480, 0x12543, 0x13000, 0x1342E, 0x14400, 0x14646, 0x16800, 0x16A38,
-  0x16A40, 0x16A5E, 0x16A60, 0x16A69, 0x16A6E, 0x16A6F, 0x16AD0, 0x16AED, 0x16AF0, 0x16AF5, 0x16B00, 0x16B45, 0x16B50, 0x16B59, 0x16B5B, 0x16B61,
-  0x16B63, 0x16B77, 0x16B7D, 0x16B8F, 0x16F00, 0x16F44, 0x16F50, 0x16F7E, 0x16F8F, 0x16F9F, 0x16FE0, 0x16FE1, 0x17000, 0x187EC, 0x18800, 0x18AF2,
-  0x1B000, 0x1B11E, 0x1B170, 0x1B2FB, 0x1BC00, 0x1BC6A, 0x1BC70, 0x1BC7C, 0x1BC80, 0x1BC88, 0x1BC90, 0x1BC99, 0x1BC9C, 0x1BC9F, 0x1D000, 0x1D0F5,
-  0x1D100, 0x1D126, 0x1D129, 0x1D15D, 0x1D165, 0x1D172, 0x1D17B, 0x1D1BA, 0x1D1C1, 0x1D1E8, 0x1D200, 0x1D245, 0x1D300, 0x1D356, 0x1D360, 0x1D371,
-  0x1D800, 0x1DA8B, 0x1DA9B, 0x1DA9F, 0x1DAA1, 0x1DAAF, 0x1E000, 0x1E006, 0x1E008, 0x1E018, 0x1E01B, 0x1E021, 0x1E023, 0x1E024, 0x1E026, 0x1E02A,
-  0x1E800, 0x1E8C4, 0x1E8C7, 0x1E8D6, 0x1E922, 0x1E94A, 0x1E950, 0x1E959, 0x1E95E, 0x1E95F, 0x1EEF0, 0x1EEF1, 0x1F000, 0x1F02B, 0x1F030, 0x1F093,
-  0x1F0A0, 0x1F0AE, 0x1F0B1, 0x1F0BF, 0x1F0C1, 0x1F0CF, 0x1F0D1, 0x1F0F5, 0x1F10B, 0x1F10C, 0x1F150, 0x1F169, 0x1F170, 0x1F18F, 0x1F191, 0x1F1AC,
-  0x1F1E6, 0x1F1FF, 0x1F260, 0x1F265, 0x1F300, 0x1F6D4, 0x1F6E0, 0x1F6EC, 0x1F6F0, 0x1F6F8, 0x1F700, 0x1F773, 0x1F780, 0x1F7D4, 0x1F800, 0x1F80B,
-  0x1F810, 0x1F847, 0x1F850, 0x1F859, 0x1F860, 0x1F887, 0x1F890, 0x1F8AD, 0x1F900, 0x1F90B, 0x1F910, 0x1F93E, 0x1F940, 0x1F94C, 0x1F950, 0x1F96B,
-  0x1F980, 0x1F997, 0x1F9C0, undef,  0x1F9D0, 0x1F9E6, 0x20000, 0x2A6D6, 0x2A700, 0x2B734, 0x2B740, 0x2B81D, 0x2B820, 0x2CEA1, 0x2CEB0, 0x2EBE0,
-);
+our @VALID;
+BEGIN {
+  @VALID = (
+     0x002D, 0x002E, 0x0030, 0x0039, 0x0061, 0x007A, 0x00A1, 0x00A7, 0x00A9, undef,  0x00AB, 0x00AC, 0x00AE, undef,  0x00B0, 0x00B1,
+     0x00B6, 0x00B7, 0x00BB, undef,  0x00BF, undef,  0x00D7, undef,  0x00E0, 0x00FF, 0x0101, undef,  0x0103, undef,  0x0105, undef, 
+     0x0107, undef,  0x0109, undef,  0x010B, undef,  0x010D, undef,  0x010F, undef,  0x0111, undef,  0x0113, undef,  0x0115, undef, 
+     0x0117, undef,  0x0119, undef,  0x011B, undef,  0x011D, undef,  0x011F, undef,  0x0121, undef,  0x0123, undef,  0x0125, undef, 
+     0x0127, undef,  0x0129, undef,  0x012B, undef,  0x012D, undef,  0x012F, undef,  0x0131, undef,  0x0135, undef,  0x0137, 0x0138,
+     0x013A, undef,  0x013C, undef,  0x013E, undef,  0x0142, undef,  0x0144, undef,  0x0146, undef,  0x0148, undef,  0x014B, undef, 
+     0x014D, undef,  0x014F, undef,  0x0151, undef,  0x0153, undef,  0x0155, undef,  0x0157, undef,  0x0159, undef,  0x015B, undef, 
+     0x015D, undef,  0x015F, undef,  0x0161, undef,  0x0163, undef,  0x0165, undef,  0x0167, undef,  0x0169, undef,  0x016B, undef, 
+     0x016D, undef,  0x016F, undef,  0x0171, undef,  0x0173, undef,  0x0175, undef,  0x0177, undef,  0x017A, undef,  0x017C, undef, 
+     0x017E, undef,  0x0180, undef,  0x0183, undef,  0x0185, undef,  0x0188, undef,  0x018C, 0x018D, 0x0192, undef,  0x0195, undef, 
+     0x0199, 0x019B, 0x019E, undef,  0x01A1, undef,  0x01A3, undef,  0x01A5, undef,  0x01A8, undef,  0x01AA, 0x01AB, 0x01AD, undef, 
+     0x01B0, undef,  0x01B4, undef,  0x01B6, undef,  0x01B9, 0x01BB, 0x01BD, 0x01C3, 0x01CE, undef,  0x01D0, undef,  0x01D2, undef, 
+     0x01D4, undef,  0x01D6, undef,  0x01D8, undef,  0x01DA, undef,  0x01DC, 0x01DD, 0x01DF, undef,  0x01E1, undef,  0x01E3, undef, 
+     0x01E5, undef,  0x01E7, undef,  0x01E9, undef,  0x01EB, undef,  0x01ED, undef,  0x01EF, 0x01F0, 0x01F5, undef,  0x01F9, undef, 
+     0x01FB, undef,  0x01FD, undef,  0x01FF, undef,  0x0201, undef,  0x0203, undef,  0x0205, undef,  0x0207, undef,  0x0209, undef, 
+     0x020B, undef,  0x020D, undef,  0x020F, undef,  0x0211, undef,  0x0213, undef,  0x0215, undef,  0x0217, undef,  0x0219, undef, 
+     0x021B, undef,  0x021D, undef,  0x021F, undef,  0x0221, undef,  0x0223, undef,  0x0225, undef,  0x0227, undef,  0x0229, undef, 
+     0x022B, undef,  0x022D, undef,  0x022F, undef,  0x0231, undef,  0x0233, 0x0239, 0x023C, undef,  0x023F, 0x0240, 0x0242, undef, 
+     0x0247, undef,  0x0249, undef,  0x024B, undef,  0x024D, undef,  0x024F, 0x02AF, 0x02B9, 0x02D7, 0x02DE, 0x02DF, 0x02E5, 0x033F,
+     0x0342, undef,  0x0346, 0x034E, 0x0350, 0x036F, 0x0371, undef,  0x0373, undef,  0x0375, undef,  0x0377, undef,  0x037B, 0x037D,
+     0x0390, undef,  0x03AC, 0x03C1, 0x03C3, 0x03CE, 0x03D7, undef,  0x03D9, undef,  0x03DB, undef,  0x03DD, undef,  0x03DF, undef, 
+     0x03E1, undef,  0x03E3, undef,  0x03E5, undef,  0x03E7, undef,  0x03E9, undef,  0x03EB, undef,  0x03ED, undef,  0x03EF, undef, 
+     0x03F3, undef,  0x03F6, undef,  0x03F8, undef,  0x03FB, 0x03FC, 0x0430, 0x045F, 0x0461, undef,  0x0463, undef,  0x0465, undef, 
+     0x0467, undef,  0x0469, undef,  0x046B, undef,  0x046D, undef,  0x046F, undef,  0x0471, undef,  0x0473, undef,  0x0475, undef, 
+     0x0477, undef,  0x0479, undef,  0x047B, undef,  0x047D, undef,  0x047F, undef,  0x0481, 0x0489, 0x048B, undef,  0x048D, undef, 
+     0x048F, undef,  0x0491, undef,  0x0493, undef,  0x0495, undef,  0x0497, undef,  0x0499, undef,  0x049B, undef,  0x049D, undef, 
+     0x049F, undef,  0x04A1, undef,  0x04A3, undef,  0x04A5, undef,  0x04A7, undef,  0x04A9, undef,  0x04AB, undef,  0x04AD, undef, 
+     0x04AF, undef,  0x04B1, undef,  0x04B3, undef,  0x04B5, undef,  0x04B7, undef,  0x04B9, undef,  0x04BB, undef,  0x04BD, undef, 
+     0x04BF, undef,  0x04C2, undef,  0x04C4, undef,  0x04C6, undef,  0x04C8, undef,  0x04CA, undef,  0x04CC, undef,  0x04CE, 0x04CF,
+     0x04D1, undef,  0x04D3, undef,  0x04D5, undef,  0x04D7, undef,  0x04D9, undef,  0x04DB, undef,  0x04DD, undef,  0x04DF, undef, 
+     0x04E1, undef,  0x04E3, undef,  0x04E5, undef,  0x04E7, undef,  0x04E9, undef,  0x04EB, undef,  0x04ED, undef,  0x04EF, undef, 
+     0x04F1, undef,  0x04F3, undef,  0x04F5, undef,  0x04F7, undef,  0x04F9, undef,  0x04FB, undef,  0x04FD, undef,  0x04FF, undef, 
+     0x0501, undef,  0x0503, undef,  0x0505, undef,  0x0507, undef,  0x0509, undef,  0x050B, undef,  0x050D, undef,  0x050F, undef, 
+     0x0511, undef,  0x0513, undef,  0x0515, undef,  0x0517, undef,  0x0519, undef,  0x051B, undef,  0x051D, undef,  0x051F, undef, 
+     0x0521, undef,  0x0523, undef,  0x0525, undef,  0x0527, undef,  0x0529, undef,  0x052B, undef,  0x052D, undef,  0x052F, undef, 
+     0x0559, 0x055F, 0x0561, 0x0586, 0x0589, 0x058A, 0x058D, 0x058F, 0x0591, 0x05C7, 0x05D0, 0x05EA, 0x05F0, 0x05F4, 0x0606, 0x061B,
+     0x061E, 0x0674, 0x0679, 0x06DC, 0x06DE, 0x070D, 0x0710, 0x074A, 0x074D, 0x07B1, 0x07C0, 0x07FA, 0x0800, 0x082D, 0x0830, 0x083E,
+     0x0840, 0x085B, 0x085E, undef,  0x0860, 0x086A, 0x08A0, 0x08B4, 0x08B6, 0x08BD, 0x08D4, 0x08E1, 0x08E3, 0x0957, 0x0960, 0x0983,
+     0x0985, 0x098C, 0x098F, 0x0990, 0x0993, 0x09A8, 0x09AA, 0x09B0, 0x09B2, undef,  0x09B6, 0x09B9, 0x09BC, 0x09C4, 0x09C7, 0x09C8,
+     0x09CB, 0x09CE, 0x09D7, undef,  0x09E0, 0x09E3, 0x09E6, 0x09FD, 0x0A01, 0x0A03, 0x0A05, 0x0A0A, 0x0A0F, 0x0A10, 0x0A13, 0x0A28,
+     0x0A2A, 0x0A30, 0x0A32, undef,  0x0A35, undef,  0x0A38, 0x0A39, 0x0A3C, undef,  0x0A3E, 0x0A42, 0x0A47, 0x0A48, 0x0A4B, 0x0A4D,
+     0x0A51, undef,  0x0A5C, undef,  0x0A66, 0x0A75, 0x0A81, 0x0A83, 0x0A85, 0x0A8D, 0x0A8F, 0x0A91, 0x0A93, 0x0AA8, 0x0AAA, 0x0AB0,
+     0x0AB2, 0x0AB3, 0x0AB5, 0x0AB9, 0x0ABC, 0x0AC5, 0x0AC7, 0x0AC9, 0x0ACB, 0x0ACD, 0x0AD0, undef,  0x0AE0, 0x0AE3, 0x0AE6, 0x0AF1,
+     0x0AF9, 0x0AFF, 0x0B01, 0x0B03, 0x0B05, 0x0B0C, 0x0B0F, 0x0B10, 0x0B13, 0x0B28, 0x0B2A, 0x0B30, 0x0B32, 0x0B33, 0x0B35, 0x0B39,
+     0x0B3C, 0x0B44, 0x0B47, 0x0B48, 0x0B4B, 0x0B4D, 0x0B56, 0x0B57, 0x0B5F, 0x0B63, 0x0B66, 0x0B77, 0x0B82, 0x0B83, 0x0B85, 0x0B8A,
+     0x0B8E, 0x0B90, 0x0B92, 0x0B95, 0x0B99, 0x0B9A, 0x0B9C, undef,  0x0B9E, 0x0B9F, 0x0BA3, 0x0BA4, 0x0BA8, 0x0BAA, 0x0BAE, 0x0BB9,
+     0x0BBE, 0x0BC2, 0x0BC6, 0x0BC8, 0x0BCA, 0x0BCD, 0x0BD0, undef,  0x0BD7, undef,  0x0BE6, 0x0BFA, 0x0C00, 0x0C03, 0x0C05, 0x0C0C,
+     0x0C0E, 0x0C10, 0x0C12, 0x0C28, 0x0C2A, 0x0C39, 0x0C3D, 0x0C44, 0x0C46, 0x0C48, 0x0C4A, 0x0C4D, 0x0C55, 0x0C56, 0x0C58, 0x0C5A,
+     0x0C60, 0x0C63, 0x0C66, 0x0C6F, 0x0C78, 0x0C83, 0x0C85, 0x0C8C, 0x0C8E, 0x0C90, 0x0C92, 0x0CA8, 0x0CAA, 0x0CB3, 0x0CB5, 0x0CB9,
+     0x0CBC, 0x0CC4, 0x0CC6, 0x0CC8, 0x0CCA, 0x0CCD, 0x0CD5, 0x0CD6, 0x0CDE, undef,  0x0CE0, 0x0CE3, 0x0CE6, 0x0CEF, 0x0CF1, 0x0CF2,
+     0x0D00, 0x0D03, 0x0D05, 0x0D0C, 0x0D0E, 0x0D10, 0x0D12, 0x0D44, 0x0D46, 0x0D48, 0x0D4A, 0x0D4F, 0x0D54, 0x0D63, 0x0D66, 0x0D7F,
+     0x0D82, 0x0D83, 0x0D85, 0x0D96, 0x0D9A, 0x0DB1, 0x0DB3, 0x0DBB, 0x0DBD, undef,  0x0DC0, 0x0DC6, 0x0DCA, undef,  0x0DCF, 0x0DD4,
+     0x0DD6, undef,  0x0DD8, 0x0DDF, 0x0DE6, 0x0DEF, 0x0DF2, 0x0DF4, 0x0E01, 0x0E32, 0x0E34, 0x0E3A, 0x0E3F, 0x0E5B, 0x0E81, 0x0E82,
+     0x0E84, undef,  0x0E87, 0x0E88, 0x0E8A, undef,  0x0E8D, undef,  0x0E94, 0x0E97, 0x0E99, 0x0E9F, 0x0EA1, 0x0EA3, 0x0EA5, undef, 
+     0x0EA7, undef,  0x0EAA, 0x0EAB, 0x0EAD, 0x0EB2, 0x0EB4, 0x0EB9, 0x0EBB, 0x0EBD, 0x0EC0, 0x0EC4, 0x0EC6, undef,  0x0EC8, 0x0ECD,
+     0x0ED0, 0x0ED9, 0x0EDE, 0x0EDF, 0x0F00, 0x0F0B, 0x0F0D, 0x0F42, 0x0F44, 0x0F47, 0x0F49, 0x0F4C, 0x0F4E, 0x0F51, 0x0F53, 0x0F56,
+     0x0F58, 0x0F5B, 0x0F5D, 0x0F68, 0x0F6A, 0x0F6C, 0x0F71, 0x0F72, 0x0F74, undef,  0x0F7A, 0x0F80, 0x0F82, 0x0F92, 0x0F94, 0x0F97,
+     0x0F99, 0x0F9C, 0x0F9E, 0x0FA1, 0x0FA3, 0x0FA6, 0x0FA8, 0x0FAB, 0x0FAD, 0x0FB8, 0x0FBA, 0x0FBC, 0x0FBE, 0x0FCC, 0x0FCE, 0x0FDA,
+     0x1000, 0x109F, 0x10D0, 0x10FB, 0x10FD, 0x115E, 0x1161, 0x1248, 0x124A, 0x124D, 0x1250, 0x1256, 0x1258, undef,  0x125A, 0x125D,
+     0x1260, 0x1288, 0x128A, 0x128D, 0x1290, 0x12B0, 0x12B2, 0x12B5, 0x12B8, 0x12BE, 0x12C0, undef,  0x12C2, 0x12C5, 0x12C8, 0x12D6,
+     0x12D8, 0x1310, 0x1312, 0x1315, 0x1318, 0x135A, 0x135D, 0x137C, 0x1380, 0x1399, 0x13A0, 0x13F5, 0x1400, 0x167F, 0x1681, 0x169C,
+     0x16A0, 0x16F8, 0x1700, 0x170C, 0x170E, 0x1714, 0x1720, 0x1736, 0x1740, 0x1753, 0x1760, 0x176C, 0x176E, 0x1770, 0x1772, 0x1773,
+     0x1780, 0x17B3, 0x17B6, 0x17DD, 0x17E0, 0x17E9, 0x17F0, 0x17F9, 0x1800, 0x1805, 0x1807, 0x180A, 0x1810, 0x1819, 0x1820, 0x1877,
+     0x1880, 0x18AA, 0x18B0, 0x18F5, 0x1900, 0x191E, 0x1920, 0x192B, 0x1930, 0x193B, 0x1940, undef,  0x1944, 0x196D, 0x1970, 0x1974,
+     0x1980, 0x19AB, 0x19B0, 0x19C9, 0x19D0, 0x19DA, 0x19DE, 0x1A1B, 0x1A1E, 0x1A5E, 0x1A60, 0x1A7C, 0x1A7F, 0x1A89, 0x1A90, 0x1A99,
+     0x1AA0, 0x1AAD, 0x1AB0, 0x1ABE, 0x1B00, 0x1B4B, 0x1B50, 0x1B7C, 0x1B80, 0x1BF3, 0x1BFC, 0x1C37, 0x1C3B, 0x1C49, 0x1C4D, 0x1C7F,
+     0x1CC0, 0x1CC7, 0x1CD0, 0x1CF9, 0x1D00, 0x1D2B, 0x1D2F, undef,  0x1D3B, undef,  0x1D4E, undef,  0x1D6B, 0x1D77, 0x1D79, 0x1D9A,
+     0x1DC0, 0x1DF9, 0x1DFB, 0x1DFF, 0x1E01, undef,  0x1E03, undef,  0x1E05, undef,  0x1E07, undef,  0x1E09, undef,  0x1E0B, undef, 
+     0x1E0D, undef,  0x1E0F, undef,  0x1E11, undef,  0x1E13, undef,  0x1E15, undef,  0x1E17, undef,  0x1E19, undef,  0x1E1B, undef, 
+     0x1E1D, undef,  0x1E1F, undef,  0x1E21, undef,  0x1E23, undef,  0x1E25, undef,  0x1E27, undef,  0x1E29, undef,  0x1E2B, undef, 
+     0x1E2D, undef,  0x1E2F, undef,  0x1E31, undef,  0x1E33, undef,  0x1E35, undef,  0x1E37, undef,  0x1E39, undef,  0x1E3B, undef, 
+     0x1E3D, undef,  0x1E3F, undef,  0x1E41, undef,  0x1E43, undef,  0x1E45, undef,  0x1E47, undef,  0x1E49, undef,  0x1E4B, undef, 
+     0x1E4D, undef,  0x1E4F, undef,  0x1E51, undef,  0x1E53, undef,  0x1E55, undef,  0x1E57, undef,  0x1E59, undef,  0x1E5B, undef, 
+     0x1E5D, undef,  0x1E5F, undef,  0x1E61, undef,  0x1E63, undef,  0x1E65, undef,  0x1E67, undef,  0x1E69, undef,  0x1E6B, undef, 
+     0x1E6D, undef,  0x1E6F, undef,  0x1E71, undef,  0x1E73, undef,  0x1E75, undef,  0x1E77, undef,  0x1E79, undef,  0x1E7B, undef, 
+     0x1E7D, undef,  0x1E7F, undef,  0x1E81, undef,  0x1E83, undef,  0x1E85, undef,  0x1E87, undef,  0x1E89, undef,  0x1E8B, undef, 
+     0x1E8D, undef,  0x1E8F, undef,  0x1E91, undef,  0x1E93, undef,  0x1E95, 0x1E99, 0x1E9C, 0x1E9D, 0x1E9F, undef,  0x1EA1, undef, 
+     0x1EA3, undef,  0x1EA5, undef,  0x1EA7, undef,  0x1EA9, undef,  0x1EAB, undef,  0x1EAD, undef,  0x1EAF, undef,  0x1EB1, undef, 
+     0x1EB3, undef,  0x1EB5, undef,  0x1EB7, undef,  0x1EB9, undef,  0x1EBB, undef,  0x1EBD, undef,  0x1EBF, undef,  0x1EC1, undef, 
+     0x1EC3, undef,  0x1EC5, undef,  0x1EC7, undef,  0x1EC9, undef,  0x1ECB, undef,  0x1ECD, undef,  0x1ECF, undef,  0x1ED1, undef, 
+     0x1ED3, undef,  0x1ED5, undef,  0x1ED7, undef,  0x1ED9, undef,  0x1EDB, undef,  0x1EDD, undef,  0x1EDF, undef,  0x1EE1, undef, 
+     0x1EE3, undef,  0x1EE5, undef,  0x1EE7, undef,  0x1EE9, undef,  0x1EEB, undef,  0x1EED, undef,  0x1EEF, undef,  0x1EF1, undef, 
+     0x1EF3, undef,  0x1EF5, undef,  0x1EF7, undef,  0x1EF9, undef,  0x1EFB, undef,  0x1EFD, undef,  0x1EFF, 0x1F07, 0x1F10, 0x1F15,
+     0x1F20, 0x1F27, 0x1F30, 0x1F37, 0x1F40, 0x1F45, 0x1F50, 0x1F57, 0x1F60, 0x1F67, 0x1F70, undef,  0x1F72, undef,  0x1F74, undef, 
+     0x1F76, undef,  0x1F78, undef,  0x1F7A, undef,  0x1F7C, undef,  0x1FB0, 0x1FB1, 0x1FB6, undef,  0x1FC6, undef,  0x1FD0, 0x1FD2,
+     0x1FD6, 0x1FD7, 0x1FE0, 0x1FE2, 0x1FE4, 0x1FE7, 0x1FF6, undef,  0x2010, undef,  0x2012, 0x2016, 0x2018, 0x2023, 0x2027, undef, 
+     0x2030, 0x2032, 0x2035, undef,  0x2038, 0x203B, 0x203D, undef,  0x203F, 0x2046, 0x204A, 0x2056, 0x2058, 0x205E, 0x20A0, 0x20A7,
+     0x20A9, 0x20BF, 0x20D0, 0x20F0, 0x2104, undef,  0x2108, undef,  0x2114, undef,  0x2117, 0x2118, 0x211E, 0x211F, 0x2123, undef, 
+     0x2125, undef,  0x2127, undef,  0x2129, undef,  0x212E, undef,  0x213A, undef,  0x2141, 0x2144, 0x214A, 0x214F, 0x2180, 0x2182,
+     0x2184, 0x2188, 0x218A, 0x218B, 0x2190, 0x222B, 0x222E, undef,  0x2231, 0x225F, 0x2261, 0x226D, 0x2270, 0x2328, 0x232B, 0x2426,
+     0x2440, 0x244A, 0x24EB, 0x2A0B, 0x2A0D, 0x2A73, 0x2A77, 0x2ADB, 0x2ADD, 0x2B73, 0x2B76, 0x2B95, 0x2B98, 0x2BB9, 0x2BBD, 0x2BC8,
+     0x2BCA, 0x2BD2, 0x2BEC, 0x2BEF, 0x2C30, 0x2C5E, 0x2C61, undef,  0x2C65, 0x2C66, 0x2C68, undef,  0x2C6A, undef,  0x2C6C, undef, 
+     0x2C71, undef,  0x2C73, 0x2C74, 0x2C76, 0x2C7B, 0x2C81, undef,  0x2C83, undef,  0x2C85, undef,  0x2C87, undef,  0x2C89, undef, 
+     0x2C8B, undef,  0x2C8D, undef,  0x2C8F, undef,  0x2C91, undef,  0x2C93, undef,  0x2C95, undef,  0x2C97, undef,  0x2C99, undef, 
+     0x2C9B, undef,  0x2C9D, undef,  0x2C9F, undef,  0x2CA1, undef,  0x2CA3, undef,  0x2CA5, undef,  0x2CA7, undef,  0x2CA9, undef, 
+     0x2CAB, undef,  0x2CAD, undef,  0x2CAF, undef,  0x2CB1, undef,  0x2CB3, undef,  0x2CB5, undef,  0x2CB7, undef,  0x2CB9, undef, 
+     0x2CBB, undef,  0x2CBD, undef,  0x2CBF, undef,  0x2CC1, undef,  0x2CC3, undef,  0x2CC5, undef,  0x2CC7, undef,  0x2CC9, undef, 
+     0x2CCB, undef,  0x2CCD, undef,  0x2CCF, undef,  0x2CD1, undef,  0x2CD3, undef,  0x2CD5, undef,  0x2CD7, undef,  0x2CD9, undef, 
+     0x2CDB, undef,  0x2CDD, undef,  0x2CDF, undef,  0x2CE1, undef,  0x2CE3, 0x2CEA, 0x2CEC, undef,  0x2CEE, 0x2CF1, 0x2CF3, undef, 
+     0x2CF9, 0x2D25, 0x2D27, undef,  0x2D2D, undef,  0x2D30, 0x2D67, 0x2D70, undef,  0x2D7F, 0x2D96, 0x2DA0, 0x2DA6, 0x2DA8, 0x2DAE,
+     0x2DB0, 0x2DB6, 0x2DB8, 0x2DBE, 0x2DC0, 0x2DC6, 0x2DC8, 0x2DCE, 0x2DD0, 0x2DD6, 0x2DD8, 0x2DDE, 0x2DE0, 0x2E49, 0x2E80, 0x2E99,
+     0x2E9B, 0x2E9E, 0x2EA0, 0x2EF2, 0x3001, undef,  0x3003, 0x3035, 0x3037, undef,  0x303B, 0x303F, 0x3041, 0x3096, 0x3099, 0x309A,
+     0x309D, 0x309E, 0x30A0, 0x30FE, 0x3105, 0x312E, 0x3190, 0x3191, 0x31A0, 0x31BA, 0x31C0, 0x31E3, 0x31F0, 0x31FF, 0x3248, 0x324F,
+     0x327F, undef,  0x3400, 0x4DB5, 0x4DC0, 0x9FEA, 0xA000, 0xA48C, 0xA490, 0xA4C6, 0xA4D0, 0xA62B, 0xA641, undef,  0xA643, undef, 
+     0xA645, undef,  0xA647, undef,  0xA649, undef,  0xA64B, undef,  0xA64D, undef,  0xA64F, undef,  0xA651, undef,  0xA653, undef, 
+     0xA655, undef,  0xA657, undef,  0xA659, undef,  0xA65B, undef,  0xA65D, undef,  0xA65F, undef,  0xA661, undef,  0xA663, undef, 
+     0xA665, undef,  0xA667, undef,  0xA669, undef,  0xA66B, undef,  0xA66D, 0xA67F, 0xA681, undef,  0xA683, undef,  0xA685, undef, 
+     0xA687, undef,  0xA689, undef,  0xA68B, undef,  0xA68D, undef,  0xA68F, undef,  0xA691, undef,  0xA693, undef,  0xA695, undef, 
+     0xA697, undef,  0xA699, undef,  0xA69B, undef,  0xA69E, 0xA6F7, 0xA700, 0xA721, 0xA723, undef,  0xA725, undef,  0xA727, undef, 
+     0xA729, undef,  0xA72B, undef,  0xA72D, undef,  0xA72F, 0xA731, 0xA733, undef,  0xA735, undef,  0xA737, undef,  0xA739, undef, 
+     0xA73B, undef,  0xA73D, undef,  0xA73F, undef,  0xA741, undef,  0xA743, undef,  0xA745, undef,  0xA747, undef,  0xA749, undef, 
+     0xA74B, undef,  0xA74D, undef,  0xA74F, undef,  0xA751, undef,  0xA753, undef,  0xA755, undef,  0xA757, undef,  0xA759, undef, 
+     0xA75B, undef,  0xA75D, undef,  0xA75F, undef,  0xA761, undef,  0xA763, undef,  0xA765, undef,  0xA767, undef,  0xA769, undef, 
+     0xA76B, undef,  0xA76D, undef,  0xA76F, undef,  0xA771, 0xA778, 0xA77A, undef,  0xA77C, undef,  0xA77F, undef,  0xA781, undef, 
+     0xA783, undef,  0xA785, undef,  0xA787, 0xA78A, 0xA78C, undef,  0xA78E, 0xA78F, 0xA791, undef,  0xA793, 0xA795, 0xA797, undef, 
+     0xA799, undef,  0xA79B, undef,  0xA79D, undef,  0xA79F, undef,  0xA7A1, undef,  0xA7A3, undef,  0xA7A5, undef,  0xA7A7, undef, 
+     0xA7A9, undef,  0xA7B5, undef,  0xA7B7, undef,  0xA7F7, undef,  0xA7FA, 0xA82B, 0xA830, 0xA839, 0xA840, 0xA877, 0xA880, 0xA8C5,
+     0xA8CE, 0xA8D9, 0xA8E0, 0xA8FD, 0xA900, 0xA953, 0xA95F, 0xA97C, 0xA980, 0xA9CD, 0xA9CF, 0xA9D9, 0xA9DE, 0xA9FE, 0xAA00, 0xAA36,
+     0xAA40, 0xAA4D, 0xAA50, 0xAA59, 0xAA5C, 0xAAC2, 0xAADB, 0xAAF6, 0xAB01, 0xAB06, 0xAB09, 0xAB0E, 0xAB11, 0xAB16, 0xAB20, 0xAB26,
+     0xAB28, 0xAB2E, 0xAB30, 0xAB5B, 0xAB60, 0xAB65, 0xABC0, 0xABED, 0xABF0, 0xABF9, 0xAC00, 0xD7A3, 0xD7B0, 0xD7C6, 0xD7CB, 0xD7FB,
+     0xFA0E, 0xFA0F, 0xFA11, undef,  0xFA13, 0xFA14, 0xFA1F, undef,  0xFA21, undef,  0xFA23, 0xFA24, 0xFA27, 0xFA29, 0xFB1E, undef, 
+     0xFBB2, 0xFBC1, 0xFD3E, 0xFD3F, 0xFDFD, undef,  0xFE20, 0xFE2F, 0xFE45, 0xFE46, 0xFE73, undef,  0x10000, 0x1000B, 0x1000D, 0x10026,
+     0x10028, 0x1003A, 0x1003C, 0x1003D, 0x1003F, 0x1004D, 0x10050, 0x1005D, 0x10080, 0x100FA, 0x10100, 0x10102, 0x10107, 0x10133, 0x10137, 0x1018E,
+     0x10190, 0x1019B, 0x101A0, undef,  0x101D0, 0x101FD, 0x10280, 0x1029C, 0x102A0, 0x102D0, 0x102E0, 0x102FB, 0x10300, 0x10323, 0x1032D, 0x1034A,
+     0x10350, 0x1037A, 0x10380, 0x1039D, 0x1039F, 0x103C3, 0x103C8, 0x103D5, 0x10428, 0x1049D, 0x104A0, 0x104A9, 0x104D8, 0x104FB, 0x10500, 0x10527,
+     0x10530, 0x10563, 0x1056F, undef,  0x10600, 0x10736, 0x10740, 0x10755, 0x10760, 0x10767, 0x10800, 0x10805, 0x10808, undef,  0x1080A, 0x10835,
+     0x10837, 0x10838, 0x1083C, undef,  0x1083F, 0x10855, 0x10857, 0x1089E, 0x108A7, 0x108AF, 0x108E0, 0x108F2, 0x108F4, 0x108F5, 0x108FB, 0x1091B,
+     0x1091F, 0x10939, 0x1093F, undef,  0x10980, 0x109B7, 0x109BC, 0x109CF, 0x109D2, 0x10A03, 0x10A05, 0x10A06, 0x10A0C, 0x10A13, 0x10A15, 0x10A17,
+     0x10A19, 0x10A33, 0x10A38, 0x10A3A, 0x10A3F, 0x10A47, 0x10A50, 0x10A58, 0x10A60, 0x10A9F, 0x10AC0, 0x10AE6, 0x10AEB, 0x10AF6, 0x10B00, 0x10B35,
+     0x10B39, 0x10B55, 0x10B58, 0x10B72, 0x10B78, 0x10B91, 0x10B99, 0x10B9C, 0x10BA9, 0x10BAF, 0x10C00, 0x10C48, 0x10CC0, 0x10CF2, 0x10CFA, 0x10CFF,
+     0x10E60, 0x10E7E, 0x11000, 0x1104D, 0x11052, 0x1106F, 0x1107F, 0x110BC, 0x110BE, 0x110C1, 0x110D0, 0x110E8, 0x110F0, 0x110F9, 0x11100, 0x11134,
+     0x11136, 0x11143, 0x11150, 0x11176, 0x11180, 0x111CD, 0x111D0, 0x111DF, 0x111E1, 0x111F4, 0x11200, 0x11211, 0x11213, 0x1123E, 0x11280, 0x11286,
+     0x11288, undef,  0x1128A, 0x1128D, 0x1128F, 0x1129D, 0x1129F, 0x112A9, 0x112B0, 0x112EA, 0x112F0, 0x112F9, 0x11300, 0x11303, 0x11305, 0x1130C,
+     0x1130F, 0x11310, 0x11313, 0x11328, 0x1132A, 0x11330, 0x11332, 0x11333, 0x11335, 0x11339, 0x1133C, 0x11344, 0x11347, 0x11348, 0x1134B, 0x1134D,
+     0x11350, undef,  0x11357, undef,  0x1135D, 0x11363, 0x11366, 0x1136C, 0x11370, 0x11374, 0x11400, 0x11459, 0x1145B, undef,  0x1145D, undef, 
+     0x11480, 0x114C7, 0x114D0, 0x114D9, 0x11580, 0x115B5, 0x115B8, 0x115DD, 0x11600, 0x11644, 0x11650, 0x11659, 0x11660, 0x1166C, 0x11680, 0x116B7,
+     0x116C0, 0x116C9, 0x11700, 0x11719, 0x1171D, 0x1172B, 0x11730, 0x1173F, 0x118C0, 0x118F2, 0x118FF, undef,  0x11A00, 0x11A47, 0x11A50, 0x11A83,
+     0x11A86, 0x11A9C, 0x11A9E, 0x11AA2, 0x11AC0, 0x11AF8, 0x11C00, 0x11C08, 0x11C0A, 0x11C36, 0x11C38, 0x11C45, 0x11C50, 0x11C6C, 0x11C70, 0x11C8F,
+     0x11C92, 0x11CA7, 0x11CA9, 0x11CB6, 0x11D00, 0x11D06, 0x11D08, 0x11D09, 0x11D0B, 0x11D36, 0x11D3A, undef,  0x11D3C, 0x11D3D, 0x11D3F, 0x11D47,
+     0x11D50, 0x11D59, 0x12000, 0x12399, 0x12400, 0x1246E, 0x12470, 0x12474, 0x12480, 0x12543, 0x13000, 0x1342E, 0x14400, 0x14646, 0x16800, 0x16A38,
+     0x16A40, 0x16A5E, 0x16A60, 0x16A69, 0x16A6E, 0x16A6F, 0x16AD0, 0x16AED, 0x16AF0, 0x16AF5, 0x16B00, 0x16B45, 0x16B50, 0x16B59, 0x16B5B, 0x16B61,
+     0x16B63, 0x16B77, 0x16B7D, 0x16B8F, 0x16F00, 0x16F44, 0x16F50, 0x16F7E, 0x16F8F, 0x16F9F, 0x16FE0, 0x16FE1, 0x17000, 0x187EC, 0x18800, 0x18AF2,
+     0x1B000, 0x1B11E, 0x1B170, 0x1B2FB, 0x1BC00, 0x1BC6A, 0x1BC70, 0x1BC7C, 0x1BC80, 0x1BC88, 0x1BC90, 0x1BC99, 0x1BC9C, 0x1BC9F, 0x1D000, 0x1D0F5,
+     0x1D100, 0x1D126, 0x1D129, 0x1D15D, 0x1D165, 0x1D172, 0x1D17B, 0x1D1BA, 0x1D1C1, 0x1D1E8, 0x1D200, 0x1D245, 0x1D300, 0x1D356, 0x1D360, 0x1D371,
+     0x1D800, 0x1DA8B, 0x1DA9B, 0x1DA9F, 0x1DAA1, 0x1DAAF, 0x1E000, 0x1E006, 0x1E008, 0x1E018, 0x1E01B, 0x1E021, 0x1E023, 0x1E024, 0x1E026, 0x1E02A,
+     0x1E800, 0x1E8C4, 0x1E8C7, 0x1E8D6, 0x1E922, 0x1E94A, 0x1E950, 0x1E959, 0x1E95E, 0x1E95F, 0x1EEF0, 0x1EEF1, 0x1F000, 0x1F02B, 0x1F030, 0x1F093,
+     0x1F0A0, 0x1F0AE, 0x1F0B1, 0x1F0BF, 0x1F0C1, 0x1F0CF, 0x1F0D1, 0x1F0F5, 0x1F10B, 0x1F10C, 0x1F150, 0x1F169, 0x1F170, 0x1F18F, 0x1F191, 0x1F1AC,
+     0x1F1E6, 0x1F1FF, 0x1F260, 0x1F265, 0x1F300, 0x1F6D4, 0x1F6E0, 0x1F6EC, 0x1F6F0, 0x1F6F8, 0x1F700, 0x1F773, 0x1F780, 0x1F7D4, 0x1F800, 0x1F80B,
+     0x1F810, 0x1F847, 0x1F850, 0x1F859, 0x1F860, 0x1F887, 0x1F890, 0x1F8AD, 0x1F900, 0x1F90B, 0x1F910, 0x1F93E, 0x1F940, 0x1F94C, 0x1F950, 0x1F96B,
+     0x1F980, 0x1F997, 0x1F9C0, undef,  0x1F9D0, 0x1F9E6, 0x20000, 0x2A6D6, 0x2A700, 0x2B734, 0x2B740, 0x2B81D, 0x2B820, 0x2CEA1, 0x2CEB0, 0x2EBE0,
+  );
+
+}
 sub IsValid { return _mk_prop(@VALID); };
 
-our @_DISALLOWEDASSIGNED = (
-  0x0080, 0x009F, 0x04C0, undef,  0x0600, 0x0605, 0x061C, undef,  0x06DD, undef,  0x070F, undef,  0x08E2, undef,  0x10A0, 0x10C5,
-  0x115F, 0x1160, 0x1680, undef,  0x17B4, 0x17B5, 0x1806, undef,  0x180E, undef,  0x200E, 0x200F, 0x2024, 0x2026, 0x2028, 0x202E,
-  0x2061, 0x2063, 0x2066, 0x206F, 0x2132, undef,  0x2183, undef,  0x2488, 0x249B, 0x2FF0, 0x2FFB, 0x3164, undef,  0x33C2, undef, 
-  0x33C7, undef,  0x33D8, undef,  0xD800, 0xF8FF, 0xFDD0, 0xFDEF, 0xFE12, undef,  0xFE19, undef,  0xFE30, undef,  0xFE52, undef, 
-  0xFFA0, undef,  0xFFF9, 0xFFFF, 0x110BD, undef,  0x1D173, 0x1D17A, 0x1F100, undef,  0x1FFFE, 0x1FFFF, 0x2F868, undef,  0x2F874, undef, 
-  0x2F91F, undef,  0x2F95F, undef,  0x2F9BF, undef,  0x2FFFE, 0x2FFFF, 0x3FFFE, 0x3FFFF, 0x4FFFE, 0x4FFFF, 0x5FFFE, 0x5FFFF, 0x6FFFE, 0x6FFFF,
-  0x7FFFE, 0x7FFFF, 0x8FFFE, 0x8FFFF, 0x9FFFE, 0x9FFFF, 0xAFFFE, 0xAFFFF, 0xBFFFE, 0xBFFFF, 0xCFFFE, 0xCFFFF, 0xDFFFE, 0xDFFFF, 0xE0001, undef, 
-  0xE0020, 0xE007F, 0xEFFFE, 0x10FFFF,
-);
+our @_DISALLOWEDASSIGNED;
+BEGIN {
+  @_DISALLOWEDASSIGNED = (
+     0x0080, 0x009F, 0x04C0, undef,  0x0600, 0x0605, 0x061C, undef,  0x06DD, undef,  0x070F, undef,  0x08E2, undef,  0x10A0, 0x10C5,
+     0x115F, 0x1160, 0x1680, undef,  0x17B4, 0x17B5, 0x1806, undef,  0x180E, undef,  0x200E, 0x200F, 0x2024, 0x2026, 0x2028, 0x202E,
+     0x2061, 0x2063, 0x2066, 0x206F, 0x2132, undef,  0x2183, undef,  0x2488, 0x249B, 0x2FF0, 0x2FFB, 0x3164, undef,  0x33C2, undef, 
+     0x33C7, undef,  0x33D8, undef,  0xD800, 0xF8FF, 0xFDD0, 0xFDEF, 0xFE12, undef,  0xFE19, undef,  0xFE30, undef,  0xFE52, undef, 
+     0xFFA0, undef,  0xFFF9, 0xFFFF, 0x110BD, undef,  0x1D173, 0x1D17A, 0x1F100, undef,  0x1FFFE, 0x1FFFF, 0x2F868, undef,  0x2F874, undef, 
+     0x2F91F, undef,  0x2F95F, undef,  0x2F9BF, undef,  0x2FFFE, 0x2FFFF, 0x3FFFE, 0x3FFFF, 0x4FFFE, 0x4FFFF, 0x5FFFE, 0x5FFFF, 0x6FFFE, 0x6FFFF,
+     0x7FFFE, 0x7FFFF, 0x8FFFE, 0x8FFFF, 0x9FFFE, 0x9FFFF, 0xAFFFE, 0xAFFFF, 0xBFFFE, 0xBFFFF, 0xCFFFE, 0xCFFFF, 0xDFFFE, 0xDFFFF, 0xE0001, undef, 
+     0xE0020, 0xE007F, 0xEFFFE, 0x10FFFF,
+  );
+
+}
 sub Is_DisallowedAssigned { return _mk_prop(@_DISALLOWEDASSIGNED); };
 
 our %DEVIATION = (
   0x00DF => "ss", 0x03C2 => "σ", 0x200C => "", 0x200D => "",);
 
-our @DEVIATION = (
-  0x00DF, undef,  0x03C2, undef,  0x200C, 0x200D,
-);
+our @DEVIATION;
+BEGIN {
+  @DEVIATION = (
+     0x00DF, undef,  0x03C2, undef,  0x200C, 0x200D,
+  );
+
+}
 sub IsDeviation { return _mk_prop(@DEVIATION); };
 sub MapDeviation { my $l = shift;
   $l =~ s/[\x{200C}\x{200D}]//g;
@@ -341,16 +361,20 @@ our %DISALLOWEDSTD3MAPPED = (
   0x1F11A => "\(k\)", 0x1F11B => "\(l\)", 0x1F11C => "\(m\)", 0x1F11D => "\(n\)", 0x1F11E => "\(o\)", 0x1F11F => "\(p\)", 0x1F120 => "\(q\)", 0x1F121 => "\(r\)",
   0x1F122 => "\(s\)", 0x1F123 => "\(t\)", 0x1F124 => "\(u\)", 0x1F125 => "\(v\)", 0x1F126 => "\(w\)", 0x1F127 => "\(x\)", 0x1F128 => "\(y\)", 0x1F129 => "\(z\)",);
 
-our @DISALLOWEDSTD3MAPPED = (
-  0x00A0, undef,  0x00A8, undef,  0x00AF, undef,  0x00B4, undef,  0x00B8, undef,  0x02D8, 0x02DD, 0x037A, undef,  0x037E, undef, 
-  0x0384, 0x0385, 0x1FBD, undef,  0x1FBF, 0x1FC1, 0x1FCD, 0x1FCF, 0x1FDD, 0x1FDF, 0x1FED, 0x1FEF, 0x1FFD, 0x1FFE, 0x2000, 0x200A,
-  0x2017, undef,  0x202F, undef,  0x203C, undef,  0x203E, undef,  0x2047, 0x2049, 0x205F, undef,  0x207A, undef,  0x207C, 0x207E,
-  0x208A, undef,  0x208C, 0x208E, 0x2100, 0x2101, 0x2105, 0x2106, 0x2474, 0x2487, 0x249C, 0x24B5, 0x2A74, 0x2A76, 0x3000, undef, 
-  0x309B, 0x309C, 0x3200, 0x321E, 0x3220, 0x3243, 0xFB29, undef,  0xFC5E, 0xFC63, 0xFDFA, 0xFDFB, 0xFE10, undef,  0xFE13, 0xFE16,
-  0xFE33, 0xFE38, 0xFE47, 0xFE50, 0xFE54, 0xFE57, 0xFE59, 0xFE5C, 0xFE5F, 0xFE62, 0xFE64, 0xFE66, 0xFE68, 0xFE6B, 0xFE70, undef, 
-  0xFE72, undef,  0xFE74, undef,  0xFE76, undef,  0xFE78, undef,  0xFE7A, undef,  0xFE7C, undef,  0xFE7E, undef,  0xFF01, 0xFF0C,
-  0xFF0F, undef,  0xFF1A, 0xFF20, 0xFF3B, 0xFF40, 0xFF5B, 0xFF5E, 0xFFE3, undef,  0x1F101, 0x1F10A, 0x1F110, 0x1F129,
-);
+our @DISALLOWEDSTD3MAPPED;
+BEGIN {
+  @DISALLOWEDSTD3MAPPED = (
+     0x00A0, undef,  0x00A8, undef,  0x00AF, undef,  0x00B4, undef,  0x00B8, undef,  0x02D8, 0x02DD, 0x037A, undef,  0x037E, undef, 
+     0x0384, 0x0385, 0x1FBD, undef,  0x1FBF, 0x1FC1, 0x1FCD, 0x1FCF, 0x1FDD, 0x1FDF, 0x1FED, 0x1FEF, 0x1FFD, 0x1FFE, 0x2000, 0x200A,
+     0x2017, undef,  0x202F, undef,  0x203C, undef,  0x203E, undef,  0x2047, 0x2049, 0x205F, undef,  0x207A, undef,  0x207C, 0x207E,
+     0x208A, undef,  0x208C, 0x208E, 0x2100, 0x2101, 0x2105, 0x2106, 0x2474, 0x2487, 0x249C, 0x24B5, 0x2A74, 0x2A76, 0x3000, undef, 
+     0x309B, 0x309C, 0x3200, 0x321E, 0x3220, 0x3243, 0xFB29, undef,  0xFC5E, 0xFC63, 0xFDFA, 0xFDFB, 0xFE10, undef,  0xFE13, 0xFE16,
+     0xFE33, 0xFE38, 0xFE47, 0xFE50, 0xFE54, 0xFE57, 0xFE59, 0xFE5C, 0xFE5F, 0xFE62, 0xFE64, 0xFE66, 0xFE68, 0xFE6B, 0xFE70, undef, 
+     0xFE72, undef,  0xFE74, undef,  0xFE76, undef,  0xFE78, undef,  0xFE7A, undef,  0xFE7C, undef,  0xFE7E, undef,  0xFF01, 0xFF0C,
+     0xFF0F, undef,  0xFF1A, 0xFF20, 0xFF3B, 0xFF40, 0xFF5B, 0xFF5E, 0xFFE3, undef,  0x1F101, 0x1F10A, 0x1F110, 0x1F129,
+  );
+
+}
 sub IsDisallowedSTD3Mapped { return _mk_prop(@DISALLOWEDSTD3MAPPED); };
 sub MapDisallowedSTD3Mapped { my $l = shift;
   $l =~ tr/\x{00A0}\x{037E}\x{1FEF}\x{2000}\x{2001}\x{2002}\x{2003}\x{2004}\x{2005}\x{2006}\x{2007}\x{2008}\x{2009}\x{200A}\x{202F}\x{205F}\x{207A}\x{207C}\x{207D}\x{207E}\x{208A}\x{208C}\x{208D}\x{208E}\x{3000}\x{FB29}\x{FE10}\x{FE13}\x{FE14}\x{FE15}\x{FE16}\x{FE33}\x{FE34}\x{FE35}\x{FE36}\x{FE37}\x{FE38}\x{FE47}\x{FE48}\x{FE4D}\x{FE4E}\x{FE4F}\x{FE50}\x{FE54}\x{FE55}\x{FE56}\x{FE57}\x{FE59}\x{FE5A}\x{FE5B}\x{FE5C}\x{FE5F}\x{FE60}\x{FE61}\x{FE62}\x{FE64}\x{FE65}\x{FE66}\x{FE68}\x{FE69}\x{FE6A}\x{FE6B}\x{FF01}\x{FF02}\x{FF03}\x{FF04}\x{FF05}\x{FF06}\x{FF07}\x{FF08}\x{FF09}\x{FF0A}\x{FF0B}\x{FF0C}\x{FF0F}\x{FF1A}\x{FF1B}\x{FF1C}\x{FF1D}\x{FF1E}\x{FF1F}\x{FF20}\x{FF3B}\x{FF3C}\x{FF3D}\x{FF3E}\x{FF3F}\x{FF40}\x{FF5B}\x{FF5C}\x{FF5D}\x{FF5E}/ \;\`             \+\=\(\)\+\=\(\) \+\,\:\;\!\?__\(\)\{\}\[\]___\,\;\:\?\!\(\)\{\}\#\&\*\+\<\>\=\\\$\%\@\!\"\#\$\%\&\'\(\)\*\+\,\/\:\;\<\=\>\?\@\[\\\]\^_\`\{\|\}\~/;
@@ -394,10 +418,14 @@ our %IGNORED = (
   0xE01E3 => "", 0xE01E4 => "", 0xE01E5 => "", 0xE01E6 => "", 0xE01E7 => "", 0xE01E8 => "", 0xE01E9 => "", 0xE01EA => "",
   0xE01EB => "", 0xE01EC => "", 0xE01ED => "", 0xE01EE => "", 0xE01EF => "",);
 
-our @IGNORED = (
-  0x00AD, undef,  0x034F, undef,  0x180B, 0x180D, 0x200B, undef,  0x2060, undef,  0x2064, undef,  0xFE00, 0xFE0F, 0xFEFF, undef, 
-  0x1BCA0, 0x1BCA3, 0xE0100, 0xE01EF,
-);
+our @IGNORED;
+BEGIN {
+  @IGNORED = (
+     0x00AD, undef,  0x034F, undef,  0x180B, 0x180D, 0x200B, undef,  0x2060, undef,  0x2064, undef,  0xFE00, 0xFE0F, 0xFEFF, undef, 
+     0x1BCA0, 0x1BCA3, 0xE0100, 0xE01EF,
+  );
+
+}
 sub IsIgnored { return _mk_prop(@IGNORED); };
 sub MapIgnored { my $l = shift;
   $l =~ s/\p{IsIgnored}//g;
@@ -1115,110 +1143,114 @@ our %MAPPED = (
   0x2FA0E => "䳭", 0x2FA0F => "鵧", 0x2FA10 => "𪃎", 0x2FA11 => "䳸", 0x2FA12 => "𪄅", 0x2FA13 => "𪈎", 0x2FA14 => "𪊑", 0x2FA15 => "麻",
   0x2FA16 => "䵖", 0x2FA17 => "黹", 0x2FA18 => "黾", 0x2FA19 => "鼅", 0x2FA1A => "鼏", 0x2FA1B => "鼖", 0x2FA1C => "鼻", 0x2FA1D => "𪘀",);
 
-our @MAPPED = (
-  0x0041, 0x005A, 0x00AA, undef,  0x00B2, 0x00B3, 0x00B5, undef,  0x00B9, 0x00BA, 0x00BC, 0x00BE, 0x00C0, 0x00D6, 0x00D8, 0x00DE,
-  0x0100, undef,  0x0102, undef,  0x0104, undef,  0x0106, undef,  0x0108, undef,  0x010A, undef,  0x010C, undef,  0x010E, undef, 
-  0x0110, undef,  0x0112, undef,  0x0114, undef,  0x0116, undef,  0x0118, undef,  0x011A, undef,  0x011C, undef,  0x011E, undef, 
-  0x0120, undef,  0x0122, undef,  0x0124, undef,  0x0126, undef,  0x0128, undef,  0x012A, undef,  0x012C, undef,  0x012E, undef, 
-  0x0130, undef,  0x0132, 0x0134, 0x0136, undef,  0x0139, undef,  0x013B, undef,  0x013D, undef,  0x013F, 0x0141, 0x0143, undef, 
-  0x0145, undef,  0x0147, undef,  0x0149, 0x014A, 0x014C, undef,  0x014E, undef,  0x0150, undef,  0x0152, undef,  0x0154, undef, 
-  0x0156, undef,  0x0158, undef,  0x015A, undef,  0x015C, undef,  0x015E, undef,  0x0160, undef,  0x0162, undef,  0x0164, undef, 
-  0x0166, undef,  0x0168, undef,  0x016A, undef,  0x016C, undef,  0x016E, undef,  0x0170, undef,  0x0172, undef,  0x0174, undef, 
-  0x0176, undef,  0x0178, 0x0179, 0x017B, undef,  0x017D, undef,  0x017F, undef,  0x0181, 0x0182, 0x0184, undef,  0x0186, 0x0187,
-  0x0189, 0x018B, 0x018E, 0x0191, 0x0193, 0x0194, 0x0196, 0x0198, 0x019C, 0x019D, 0x019F, 0x01A0, 0x01A2, undef,  0x01A4, undef, 
-  0x01A6, 0x01A7, 0x01A9, undef,  0x01AC, undef,  0x01AE, 0x01AF, 0x01B1, 0x01B3, 0x01B5, undef,  0x01B7, 0x01B8, 0x01BC, undef, 
-  0x01C4, 0x01CD, 0x01CF, undef,  0x01D1, undef,  0x01D3, undef,  0x01D5, undef,  0x01D7, undef,  0x01D9, undef,  0x01DB, undef, 
-  0x01DE, undef,  0x01E0, undef,  0x01E2, undef,  0x01E4, undef,  0x01E6, undef,  0x01E8, undef,  0x01EA, undef,  0x01EC, undef, 
-  0x01EE, undef,  0x01F1, 0x01F4, 0x01F6, 0x01F8, 0x01FA, undef,  0x01FC, undef,  0x01FE, undef,  0x0200, undef,  0x0202, undef, 
-  0x0204, undef,  0x0206, undef,  0x0208, undef,  0x020A, undef,  0x020C, undef,  0x020E, undef,  0x0210, undef,  0x0212, undef, 
-  0x0214, undef,  0x0216, undef,  0x0218, undef,  0x021A, undef,  0x021C, undef,  0x021E, undef,  0x0220, undef,  0x0222, undef, 
-  0x0224, undef,  0x0226, undef,  0x0228, undef,  0x022A, undef,  0x022C, undef,  0x022E, undef,  0x0230, undef,  0x0232, undef, 
-  0x023A, 0x023B, 0x023D, 0x023E, 0x0241, undef,  0x0243, 0x0246, 0x0248, undef,  0x024A, undef,  0x024C, undef,  0x024E, undef, 
-  0x02B0, 0x02B8, 0x02E0, 0x02E4, 0x0340, 0x0341, 0x0343, 0x0345, 0x0370, undef,  0x0372, undef,  0x0374, undef,  0x0376, undef, 
-  0x037F, undef,  0x0386, 0x038A, 0x038C, undef,  0x038E, 0x038F, 0x0391, 0x03A1, 0x03A3, 0x03AB, 0x03CF, 0x03D6, 0x03D8, undef, 
-  0x03DA, undef,  0x03DC, undef,  0x03DE, undef,  0x03E0, undef,  0x03E2, undef,  0x03E4, undef,  0x03E6, undef,  0x03E8, undef, 
-  0x03EA, undef,  0x03EC, undef,  0x03EE, undef,  0x03F0, 0x03F2, 0x03F4, 0x03F5, 0x03F7, undef,  0x03F9, 0x03FA, 0x03FD, 0x042F,
-  0x0460, undef,  0x0462, undef,  0x0464, undef,  0x0466, undef,  0x0468, undef,  0x046A, undef,  0x046C, undef,  0x046E, undef, 
-  0x0470, undef,  0x0472, undef,  0x0474, undef,  0x0476, undef,  0x0478, undef,  0x047A, undef,  0x047C, undef,  0x047E, undef, 
-  0x0480, undef,  0x048A, undef,  0x048C, undef,  0x048E, undef,  0x0490, undef,  0x0492, undef,  0x0494, undef,  0x0496, undef, 
-  0x0498, undef,  0x049A, undef,  0x049C, undef,  0x049E, undef,  0x04A0, undef,  0x04A2, undef,  0x04A4, undef,  0x04A6, undef, 
-  0x04A8, undef,  0x04AA, undef,  0x04AC, undef,  0x04AE, undef,  0x04B0, undef,  0x04B2, undef,  0x04B4, undef,  0x04B6, undef, 
-  0x04B8, undef,  0x04BA, undef,  0x04BC, undef,  0x04BE, undef,  0x04C1, undef,  0x04C3, undef,  0x04C5, undef,  0x04C7, undef, 
-  0x04C9, undef,  0x04CB, undef,  0x04CD, undef,  0x04D0, undef,  0x04D2, undef,  0x04D4, undef,  0x04D6, undef,  0x04D8, undef, 
-  0x04DA, undef,  0x04DC, undef,  0x04DE, undef,  0x04E0, undef,  0x04E2, undef,  0x04E4, undef,  0x04E6, undef,  0x04E8, undef, 
-  0x04EA, undef,  0x04EC, undef,  0x04EE, undef,  0x04F0, undef,  0x04F2, undef,  0x04F4, undef,  0x04F6, undef,  0x04F8, undef, 
-  0x04FA, undef,  0x04FC, undef,  0x04FE, undef,  0x0500, undef,  0x0502, undef,  0x0504, undef,  0x0506, undef,  0x0508, undef, 
-  0x050A, undef,  0x050C, undef,  0x050E, undef,  0x0510, undef,  0x0512, undef,  0x0514, undef,  0x0516, undef,  0x0518, undef, 
-  0x051A, undef,  0x051C, undef,  0x051E, undef,  0x0520, undef,  0x0522, undef,  0x0524, undef,  0x0526, undef,  0x0528, undef, 
-  0x052A, undef,  0x052C, undef,  0x052E, undef,  0x0531, 0x0556, 0x0587, undef,  0x0675, 0x0678, 0x0958, 0x095F, 0x09DC, 0x09DD,
-  0x09DF, undef,  0x0A33, undef,  0x0A36, undef,  0x0A59, 0x0A5B, 0x0A5E, undef,  0x0B5C, 0x0B5D, 0x0E33, undef,  0x0EB3, undef, 
-  0x0EDC, 0x0EDD, 0x0F0C, undef,  0x0F43, undef,  0x0F4D, undef,  0x0F52, undef,  0x0F57, undef,  0x0F5C, undef,  0x0F69, undef, 
-  0x0F73, undef,  0x0F75, 0x0F79, 0x0F81, undef,  0x0F93, undef,  0x0F9D, undef,  0x0FA2, undef,  0x0FA7, undef,  0x0FAC, undef, 
-  0x0FB9, undef,  0x10C7, undef,  0x10CD, undef,  0x10FC, undef,  0x13F8, 0x13FD, 0x1C80, 0x1C88, 0x1D2C, 0x1D2E, 0x1D30, 0x1D3A,
-  0x1D3C, 0x1D4D, 0x1D4F, 0x1D6A, 0x1D78, undef,  0x1D9B, 0x1DBF, 0x1E00, undef,  0x1E02, undef,  0x1E04, undef,  0x1E06, undef, 
-  0x1E08, undef,  0x1E0A, undef,  0x1E0C, undef,  0x1E0E, undef,  0x1E10, undef,  0x1E12, undef,  0x1E14, undef,  0x1E16, undef, 
-  0x1E18, undef,  0x1E1A, undef,  0x1E1C, undef,  0x1E1E, undef,  0x1E20, undef,  0x1E22, undef,  0x1E24, undef,  0x1E26, undef, 
-  0x1E28, undef,  0x1E2A, undef,  0x1E2C, undef,  0x1E2E, undef,  0x1E30, undef,  0x1E32, undef,  0x1E34, undef,  0x1E36, undef, 
-  0x1E38, undef,  0x1E3A, undef,  0x1E3C, undef,  0x1E3E, undef,  0x1E40, undef,  0x1E42, undef,  0x1E44, undef,  0x1E46, undef, 
-  0x1E48, undef,  0x1E4A, undef,  0x1E4C, undef,  0x1E4E, undef,  0x1E50, undef,  0x1E52, undef,  0x1E54, undef,  0x1E56, undef, 
-  0x1E58, undef,  0x1E5A, undef,  0x1E5C, undef,  0x1E5E, undef,  0x1E60, undef,  0x1E62, undef,  0x1E64, undef,  0x1E66, undef, 
-  0x1E68, undef,  0x1E6A, undef,  0x1E6C, undef,  0x1E6E, undef,  0x1E70, undef,  0x1E72, undef,  0x1E74, undef,  0x1E76, undef, 
-  0x1E78, undef,  0x1E7A, undef,  0x1E7C, undef,  0x1E7E, undef,  0x1E80, undef,  0x1E82, undef,  0x1E84, undef,  0x1E86, undef, 
-  0x1E88, undef,  0x1E8A, undef,  0x1E8C, undef,  0x1E8E, undef,  0x1E90, undef,  0x1E92, undef,  0x1E94, undef,  0x1E9A, 0x1E9B,
-  0x1E9E, undef,  0x1EA0, undef,  0x1EA2, undef,  0x1EA4, undef,  0x1EA6, undef,  0x1EA8, undef,  0x1EAA, undef,  0x1EAC, undef, 
-  0x1EAE, undef,  0x1EB0, undef,  0x1EB2, undef,  0x1EB4, undef,  0x1EB6, undef,  0x1EB8, undef,  0x1EBA, undef,  0x1EBC, undef, 
-  0x1EBE, undef,  0x1EC0, undef,  0x1EC2, undef,  0x1EC4, undef,  0x1EC6, undef,  0x1EC8, undef,  0x1ECA, undef,  0x1ECC, undef, 
-  0x1ECE, undef,  0x1ED0, undef,  0x1ED2, undef,  0x1ED4, undef,  0x1ED6, undef,  0x1ED8, undef,  0x1EDA, undef,  0x1EDC, undef, 
-  0x1EDE, undef,  0x1EE0, undef,  0x1EE2, undef,  0x1EE4, undef,  0x1EE6, undef,  0x1EE8, undef,  0x1EEA, undef,  0x1EEC, undef, 
-  0x1EEE, undef,  0x1EF0, undef,  0x1EF2, undef,  0x1EF4, undef,  0x1EF6, undef,  0x1EF8, undef,  0x1EFA, undef,  0x1EFC, undef, 
-  0x1EFE, undef,  0x1F08, 0x1F0F, 0x1F18, 0x1F1D, 0x1F28, 0x1F2F, 0x1F38, 0x1F3F, 0x1F48, 0x1F4D, 0x1F59, undef,  0x1F5B, undef, 
-  0x1F5D, undef,  0x1F5F, undef,  0x1F68, 0x1F6F, 0x1F71, undef,  0x1F73, undef,  0x1F75, undef,  0x1F77, undef,  0x1F79, undef, 
-  0x1F7B, undef,  0x1F7D, undef,  0x1F80, 0x1FAF, 0x1FB2, 0x1FB4, 0x1FB7, 0x1FBC, 0x1FBE, undef,  0x1FC2, 0x1FC4, 0x1FC7, 0x1FCC,
-  0x1FD3, undef,  0x1FD8, 0x1FDB, 0x1FE3, undef,  0x1FE8, 0x1FEC, 0x1FF2, 0x1FF4, 0x1FF7, 0x1FFC, 0x2011, undef,  0x2033, 0x2034,
-  0x2036, 0x2037, 0x2057, undef,  0x2070, 0x2071, 0x2074, 0x2079, 0x207B, undef,  0x207F, 0x2089, 0x208B, undef,  0x2090, 0x209C,
-  0x20A8, undef,  0x2102, 0x2103, 0x2107, undef,  0x2109, 0x2113, 0x2115, 0x2116, 0x2119, 0x211D, 0x2120, 0x2122, 0x2124, undef, 
-  0x2126, undef,  0x2128, undef,  0x212A, 0x212D, 0x212F, 0x2131, 0x2133, 0x2139, 0x213B, 0x2140, 0x2145, 0x2149, 0x2150, 0x217F,
-  0x2189, undef,  0x222C, 0x222D, 0x222F, 0x2230, 0x2329, 0x232A, 0x2460, 0x2473, 0x24B6, 0x24EA, 0x2A0C, undef,  0x2ADC, undef, 
-  0x2C00, 0x2C2E, 0x2C60, undef,  0x2C62, 0x2C64, 0x2C67, undef,  0x2C69, undef,  0x2C6B, undef,  0x2C6D, 0x2C70, 0x2C72, undef, 
-  0x2C75, undef,  0x2C7C, 0x2C80, 0x2C82, undef,  0x2C84, undef,  0x2C86, undef,  0x2C88, undef,  0x2C8A, undef,  0x2C8C, undef, 
-  0x2C8E, undef,  0x2C90, undef,  0x2C92, undef,  0x2C94, undef,  0x2C96, undef,  0x2C98, undef,  0x2C9A, undef,  0x2C9C, undef, 
-  0x2C9E, undef,  0x2CA0, undef,  0x2CA2, undef,  0x2CA4, undef,  0x2CA6, undef,  0x2CA8, undef,  0x2CAA, undef,  0x2CAC, undef, 
-  0x2CAE, undef,  0x2CB0, undef,  0x2CB2, undef,  0x2CB4, undef,  0x2CB6, undef,  0x2CB8, undef,  0x2CBA, undef,  0x2CBC, undef, 
-  0x2CBE, undef,  0x2CC0, undef,  0x2CC2, undef,  0x2CC4, undef,  0x2CC6, undef,  0x2CC8, undef,  0x2CCA, undef,  0x2CCC, undef, 
-  0x2CCE, undef,  0x2CD0, undef,  0x2CD2, undef,  0x2CD4, undef,  0x2CD6, undef,  0x2CD8, undef,  0x2CDA, undef,  0x2CDC, undef, 
-  0x2CDE, undef,  0x2CE0, undef,  0x2CE2, undef,  0x2CEB, undef,  0x2CED, undef,  0x2CF2, undef,  0x2D6F, undef,  0x2E9F, undef, 
-  0x2EF3, undef,  0x2F00, 0x2FD5, 0x3002, undef,  0x3036, undef,  0x3038, 0x303A, 0x309F, undef,  0x30FF, undef,  0x3131, 0x3163,
-  0x3165, 0x318E, 0x3192, 0x319F, 0x3244, 0x3247, 0x3250, 0x327E, 0x3280, 0x32FE, 0x3300, 0x33C1, 0x33C3, 0x33C6, 0x33C8, 0x33D7,
-  0x33D9, 0x33FF, 0xA640, undef,  0xA642, undef,  0xA644, undef,  0xA646, undef,  0xA648, undef,  0xA64A, undef,  0xA64C, undef, 
-  0xA64E, undef,  0xA650, undef,  0xA652, undef,  0xA654, undef,  0xA656, undef,  0xA658, undef,  0xA65A, undef,  0xA65C, undef, 
-  0xA65E, undef,  0xA660, undef,  0xA662, undef,  0xA664, undef,  0xA666, undef,  0xA668, undef,  0xA66A, undef,  0xA66C, undef, 
-  0xA680, undef,  0xA682, undef,  0xA684, undef,  0xA686, undef,  0xA688, undef,  0xA68A, undef,  0xA68C, undef,  0xA68E, undef, 
-  0xA690, undef,  0xA692, undef,  0xA694, undef,  0xA696, undef,  0xA698, undef,  0xA69A, undef,  0xA69C, 0xA69D, 0xA722, undef, 
-  0xA724, undef,  0xA726, undef,  0xA728, undef,  0xA72A, undef,  0xA72C, undef,  0xA72E, undef,  0xA732, undef,  0xA734, undef, 
-  0xA736, undef,  0xA738, undef,  0xA73A, undef,  0xA73C, undef,  0xA73E, undef,  0xA740, undef,  0xA742, undef,  0xA744, undef, 
-  0xA746, undef,  0xA748, undef,  0xA74A, undef,  0xA74C, undef,  0xA74E, undef,  0xA750, undef,  0xA752, undef,  0xA754, undef, 
-  0xA756, undef,  0xA758, undef,  0xA75A, undef,  0xA75C, undef,  0xA75E, undef,  0xA760, undef,  0xA762, undef,  0xA764, undef, 
-  0xA766, undef,  0xA768, undef,  0xA76A, undef,  0xA76C, undef,  0xA76E, undef,  0xA770, undef,  0xA779, undef,  0xA77B, undef, 
-  0xA77D, 0xA77E, 0xA780, undef,  0xA782, undef,  0xA784, undef,  0xA786, undef,  0xA78B, undef,  0xA78D, undef,  0xA790, undef, 
-  0xA792, undef,  0xA796, undef,  0xA798, undef,  0xA79A, undef,  0xA79C, undef,  0xA79E, undef,  0xA7A0, undef,  0xA7A2, undef, 
-  0xA7A4, undef,  0xA7A6, undef,  0xA7A8, undef,  0xA7AA, 0xA7AE, 0xA7B0, 0xA7B4, 0xA7B6, undef,  0xA7F8, 0xA7F9, 0xAB5C, 0xAB5F,
-  0xAB70, 0xABBF, 0xF900, 0xFA0D, 0xFA10, undef,  0xFA12, undef,  0xFA15, 0xFA1E, 0xFA20, undef,  0xFA22, undef,  0xFA25, 0xFA26,
-  0xFA2A, 0xFA6D, 0xFA70, 0xFAD9, 0xFB00, 0xFB06, 0xFB13, 0xFB17, 0xFB1D, undef,  0xFB1F, 0xFB28, 0xFB2A, 0xFB36, 0xFB38, 0xFB3C,
-  0xFB3E, undef,  0xFB40, 0xFB41, 0xFB43, 0xFB44, 0xFB46, 0xFBB1, 0xFBD3, 0xFC5D, 0xFC64, 0xFD3D, 0xFD50, 0xFD8F, 0xFD92, 0xFDC7,
-  0xFDF0, 0xFDF9, 0xFDFC, undef,  0xFE11, undef,  0xFE17, 0xFE18, 0xFE31, 0xFE32, 0xFE39, 0xFE44, 0xFE51, undef,  0xFE58, undef, 
-  0xFE5D, 0xFE5E, 0xFE63, undef,  0xFE71, undef,  0xFE77, undef,  0xFE79, undef,  0xFE7B, undef,  0xFE7D, undef,  0xFE7F, 0xFEFC,
-  0xFF0D, 0xFF0E, 0xFF10, 0xFF19, 0xFF21, 0xFF3A, 0xFF41, 0xFF5A, 0xFF5F, 0xFF9F, 0xFFA1, 0xFFBE, 0xFFC2, 0xFFC7, 0xFFCA, 0xFFCF,
-  0xFFD2, 0xFFD7, 0xFFDA, 0xFFDC, 0xFFE0, 0xFFE2, 0xFFE4, 0xFFE6, 0xFFE8, 0xFFEE, 0x10400, 0x10427, 0x104B0, 0x104D3, 0x10C80, 0x10CB2,
-  0x118A0, 0x118BF, 0x1D15E, 0x1D164, 0x1D1BB, 0x1D1C0, 0x1D400, 0x1D454, 0x1D456, 0x1D49C, 0x1D49E, 0x1D49F, 0x1D4A2, undef,  0x1D4A5, 0x1D4A6,
-  0x1D4A9, 0x1D4AC, 0x1D4AE, 0x1D4B9, 0x1D4BB, undef,  0x1D4BD, 0x1D4C3, 0x1D4C5, 0x1D505, 0x1D507, 0x1D50A, 0x1D50D, 0x1D514, 0x1D516, 0x1D51C,
-  0x1D51E, 0x1D539, 0x1D53B, 0x1D53E, 0x1D540, 0x1D544, 0x1D546, undef,  0x1D54A, 0x1D550, 0x1D552, 0x1D6A5, 0x1D6A8, 0x1D7CB, 0x1D7CE, 0x1D7FF,
-  0x1E900, 0x1E921, 0x1EE00, 0x1EE03, 0x1EE05, 0x1EE1F, 0x1EE21, 0x1EE22, 0x1EE24, undef,  0x1EE27, undef,  0x1EE29, 0x1EE32, 0x1EE34, 0x1EE37,
-  0x1EE39, undef,  0x1EE3B, undef,  0x1EE42, undef,  0x1EE47, undef,  0x1EE49, undef,  0x1EE4B, undef,  0x1EE4D, 0x1EE4F, 0x1EE51, 0x1EE52,
-  0x1EE54, undef,  0x1EE57, undef,  0x1EE59, undef,  0x1EE5B, undef,  0x1EE5D, undef,  0x1EE5F, undef,  0x1EE61, 0x1EE62, 0x1EE64, undef, 
-  0x1EE67, 0x1EE6A, 0x1EE6C, 0x1EE72, 0x1EE74, 0x1EE77, 0x1EE79, 0x1EE7C, 0x1EE7E, undef,  0x1EE80, 0x1EE89, 0x1EE8B, 0x1EE9B, 0x1EEA1, 0x1EEA3,
-  0x1EEA5, 0x1EEA9, 0x1EEAB, 0x1EEBB, 0x1F12A, 0x1F12E, 0x1F130, 0x1F14F, 0x1F16A, 0x1F16B, 0x1F190, undef,  0x1F200, 0x1F202, 0x1F210, 0x1F23B,
-  0x1F240, 0x1F248, 0x1F250, 0x1F251, 0x2F800, 0x2F867, 0x2F869, 0x2F873, 0x2F875, 0x2F91E, 0x2F920, 0x2F95E, 0x2F960, 0x2F9BE, 0x2F9C0, 0x2FA1D,
-);
+our @MAPPED;
+BEGIN {
+  @MAPPED = (
+     0x0041, 0x005A, 0x00AA, undef,  0x00B2, 0x00B3, 0x00B5, undef,  0x00B9, 0x00BA, 0x00BC, 0x00BE, 0x00C0, 0x00D6, 0x00D8, 0x00DE,
+     0x0100, undef,  0x0102, undef,  0x0104, undef,  0x0106, undef,  0x0108, undef,  0x010A, undef,  0x010C, undef,  0x010E, undef, 
+     0x0110, undef,  0x0112, undef,  0x0114, undef,  0x0116, undef,  0x0118, undef,  0x011A, undef,  0x011C, undef,  0x011E, undef, 
+     0x0120, undef,  0x0122, undef,  0x0124, undef,  0x0126, undef,  0x0128, undef,  0x012A, undef,  0x012C, undef,  0x012E, undef, 
+     0x0130, undef,  0x0132, 0x0134, 0x0136, undef,  0x0139, undef,  0x013B, undef,  0x013D, undef,  0x013F, 0x0141, 0x0143, undef, 
+     0x0145, undef,  0x0147, undef,  0x0149, 0x014A, 0x014C, undef,  0x014E, undef,  0x0150, undef,  0x0152, undef,  0x0154, undef, 
+     0x0156, undef,  0x0158, undef,  0x015A, undef,  0x015C, undef,  0x015E, undef,  0x0160, undef,  0x0162, undef,  0x0164, undef, 
+     0x0166, undef,  0x0168, undef,  0x016A, undef,  0x016C, undef,  0x016E, undef,  0x0170, undef,  0x0172, undef,  0x0174, undef, 
+     0x0176, undef,  0x0178, 0x0179, 0x017B, undef,  0x017D, undef,  0x017F, undef,  0x0181, 0x0182, 0x0184, undef,  0x0186, 0x0187,
+     0x0189, 0x018B, 0x018E, 0x0191, 0x0193, 0x0194, 0x0196, 0x0198, 0x019C, 0x019D, 0x019F, 0x01A0, 0x01A2, undef,  0x01A4, undef, 
+     0x01A6, 0x01A7, 0x01A9, undef,  0x01AC, undef,  0x01AE, 0x01AF, 0x01B1, 0x01B3, 0x01B5, undef,  0x01B7, 0x01B8, 0x01BC, undef, 
+     0x01C4, 0x01CD, 0x01CF, undef,  0x01D1, undef,  0x01D3, undef,  0x01D5, undef,  0x01D7, undef,  0x01D9, undef,  0x01DB, undef, 
+     0x01DE, undef,  0x01E0, undef,  0x01E2, undef,  0x01E4, undef,  0x01E6, undef,  0x01E8, undef,  0x01EA, undef,  0x01EC, undef, 
+     0x01EE, undef,  0x01F1, 0x01F4, 0x01F6, 0x01F8, 0x01FA, undef,  0x01FC, undef,  0x01FE, undef,  0x0200, undef,  0x0202, undef, 
+     0x0204, undef,  0x0206, undef,  0x0208, undef,  0x020A, undef,  0x020C, undef,  0x020E, undef,  0x0210, undef,  0x0212, undef, 
+     0x0214, undef,  0x0216, undef,  0x0218, undef,  0x021A, undef,  0x021C, undef,  0x021E, undef,  0x0220, undef,  0x0222, undef, 
+     0x0224, undef,  0x0226, undef,  0x0228, undef,  0x022A, undef,  0x022C, undef,  0x022E, undef,  0x0230, undef,  0x0232, undef, 
+     0x023A, 0x023B, 0x023D, 0x023E, 0x0241, undef,  0x0243, 0x0246, 0x0248, undef,  0x024A, undef,  0x024C, undef,  0x024E, undef, 
+     0x02B0, 0x02B8, 0x02E0, 0x02E4, 0x0340, 0x0341, 0x0343, 0x0345, 0x0370, undef,  0x0372, undef,  0x0374, undef,  0x0376, undef, 
+     0x037F, undef,  0x0386, 0x038A, 0x038C, undef,  0x038E, 0x038F, 0x0391, 0x03A1, 0x03A3, 0x03AB, 0x03CF, 0x03D6, 0x03D8, undef, 
+     0x03DA, undef,  0x03DC, undef,  0x03DE, undef,  0x03E0, undef,  0x03E2, undef,  0x03E4, undef,  0x03E6, undef,  0x03E8, undef, 
+     0x03EA, undef,  0x03EC, undef,  0x03EE, undef,  0x03F0, 0x03F2, 0x03F4, 0x03F5, 0x03F7, undef,  0x03F9, 0x03FA, 0x03FD, 0x042F,
+     0x0460, undef,  0x0462, undef,  0x0464, undef,  0x0466, undef,  0x0468, undef,  0x046A, undef,  0x046C, undef,  0x046E, undef, 
+     0x0470, undef,  0x0472, undef,  0x0474, undef,  0x0476, undef,  0x0478, undef,  0x047A, undef,  0x047C, undef,  0x047E, undef, 
+     0x0480, undef,  0x048A, undef,  0x048C, undef,  0x048E, undef,  0x0490, undef,  0x0492, undef,  0x0494, undef,  0x0496, undef, 
+     0x0498, undef,  0x049A, undef,  0x049C, undef,  0x049E, undef,  0x04A0, undef,  0x04A2, undef,  0x04A4, undef,  0x04A6, undef, 
+     0x04A8, undef,  0x04AA, undef,  0x04AC, undef,  0x04AE, undef,  0x04B0, undef,  0x04B2, undef,  0x04B4, undef,  0x04B6, undef, 
+     0x04B8, undef,  0x04BA, undef,  0x04BC, undef,  0x04BE, undef,  0x04C1, undef,  0x04C3, undef,  0x04C5, undef,  0x04C7, undef, 
+     0x04C9, undef,  0x04CB, undef,  0x04CD, undef,  0x04D0, undef,  0x04D2, undef,  0x04D4, undef,  0x04D6, undef,  0x04D8, undef, 
+     0x04DA, undef,  0x04DC, undef,  0x04DE, undef,  0x04E0, undef,  0x04E2, undef,  0x04E4, undef,  0x04E6, undef,  0x04E8, undef, 
+     0x04EA, undef,  0x04EC, undef,  0x04EE, undef,  0x04F0, undef,  0x04F2, undef,  0x04F4, undef,  0x04F6, undef,  0x04F8, undef, 
+     0x04FA, undef,  0x04FC, undef,  0x04FE, undef,  0x0500, undef,  0x0502, undef,  0x0504, undef,  0x0506, undef,  0x0508, undef, 
+     0x050A, undef,  0x050C, undef,  0x050E, undef,  0x0510, undef,  0x0512, undef,  0x0514, undef,  0x0516, undef,  0x0518, undef, 
+     0x051A, undef,  0x051C, undef,  0x051E, undef,  0x0520, undef,  0x0522, undef,  0x0524, undef,  0x0526, undef,  0x0528, undef, 
+     0x052A, undef,  0x052C, undef,  0x052E, undef,  0x0531, 0x0556, 0x0587, undef,  0x0675, 0x0678, 0x0958, 0x095F, 0x09DC, 0x09DD,
+     0x09DF, undef,  0x0A33, undef,  0x0A36, undef,  0x0A59, 0x0A5B, 0x0A5E, undef,  0x0B5C, 0x0B5D, 0x0E33, undef,  0x0EB3, undef, 
+     0x0EDC, 0x0EDD, 0x0F0C, undef,  0x0F43, undef,  0x0F4D, undef,  0x0F52, undef,  0x0F57, undef,  0x0F5C, undef,  0x0F69, undef, 
+     0x0F73, undef,  0x0F75, 0x0F79, 0x0F81, undef,  0x0F93, undef,  0x0F9D, undef,  0x0FA2, undef,  0x0FA7, undef,  0x0FAC, undef, 
+     0x0FB9, undef,  0x10C7, undef,  0x10CD, undef,  0x10FC, undef,  0x13F8, 0x13FD, 0x1C80, 0x1C88, 0x1D2C, 0x1D2E, 0x1D30, 0x1D3A,
+     0x1D3C, 0x1D4D, 0x1D4F, 0x1D6A, 0x1D78, undef,  0x1D9B, 0x1DBF, 0x1E00, undef,  0x1E02, undef,  0x1E04, undef,  0x1E06, undef, 
+     0x1E08, undef,  0x1E0A, undef,  0x1E0C, undef,  0x1E0E, undef,  0x1E10, undef,  0x1E12, undef,  0x1E14, undef,  0x1E16, undef, 
+     0x1E18, undef,  0x1E1A, undef,  0x1E1C, undef,  0x1E1E, undef,  0x1E20, undef,  0x1E22, undef,  0x1E24, undef,  0x1E26, undef, 
+     0x1E28, undef,  0x1E2A, undef,  0x1E2C, undef,  0x1E2E, undef,  0x1E30, undef,  0x1E32, undef,  0x1E34, undef,  0x1E36, undef, 
+     0x1E38, undef,  0x1E3A, undef,  0x1E3C, undef,  0x1E3E, undef,  0x1E40, undef,  0x1E42, undef,  0x1E44, undef,  0x1E46, undef, 
+     0x1E48, undef,  0x1E4A, undef,  0x1E4C, undef,  0x1E4E, undef,  0x1E50, undef,  0x1E52, undef,  0x1E54, undef,  0x1E56, undef, 
+     0x1E58, undef,  0x1E5A, undef,  0x1E5C, undef,  0x1E5E, undef,  0x1E60, undef,  0x1E62, undef,  0x1E64, undef,  0x1E66, undef, 
+     0x1E68, undef,  0x1E6A, undef,  0x1E6C, undef,  0x1E6E, undef,  0x1E70, undef,  0x1E72, undef,  0x1E74, undef,  0x1E76, undef, 
+     0x1E78, undef,  0x1E7A, undef,  0x1E7C, undef,  0x1E7E, undef,  0x1E80, undef,  0x1E82, undef,  0x1E84, undef,  0x1E86, undef, 
+     0x1E88, undef,  0x1E8A, undef,  0x1E8C, undef,  0x1E8E, undef,  0x1E90, undef,  0x1E92, undef,  0x1E94, undef,  0x1E9A, 0x1E9B,
+     0x1E9E, undef,  0x1EA0, undef,  0x1EA2, undef,  0x1EA4, undef,  0x1EA6, undef,  0x1EA8, undef,  0x1EAA, undef,  0x1EAC, undef, 
+     0x1EAE, undef,  0x1EB0, undef,  0x1EB2, undef,  0x1EB4, undef,  0x1EB6, undef,  0x1EB8, undef,  0x1EBA, undef,  0x1EBC, undef, 
+     0x1EBE, undef,  0x1EC0, undef,  0x1EC2, undef,  0x1EC4, undef,  0x1EC6, undef,  0x1EC8, undef,  0x1ECA, undef,  0x1ECC, undef, 
+     0x1ECE, undef,  0x1ED0, undef,  0x1ED2, undef,  0x1ED4, undef,  0x1ED6, undef,  0x1ED8, undef,  0x1EDA, undef,  0x1EDC, undef, 
+     0x1EDE, undef,  0x1EE0, undef,  0x1EE2, undef,  0x1EE4, undef,  0x1EE6, undef,  0x1EE8, undef,  0x1EEA, undef,  0x1EEC, undef, 
+     0x1EEE, undef,  0x1EF0, undef,  0x1EF2, undef,  0x1EF4, undef,  0x1EF6, undef,  0x1EF8, undef,  0x1EFA, undef,  0x1EFC, undef, 
+     0x1EFE, undef,  0x1F08, 0x1F0F, 0x1F18, 0x1F1D, 0x1F28, 0x1F2F, 0x1F38, 0x1F3F, 0x1F48, 0x1F4D, 0x1F59, undef,  0x1F5B, undef, 
+     0x1F5D, undef,  0x1F5F, undef,  0x1F68, 0x1F6F, 0x1F71, undef,  0x1F73, undef,  0x1F75, undef,  0x1F77, undef,  0x1F79, undef, 
+     0x1F7B, undef,  0x1F7D, undef,  0x1F80, 0x1FAF, 0x1FB2, 0x1FB4, 0x1FB7, 0x1FBC, 0x1FBE, undef,  0x1FC2, 0x1FC4, 0x1FC7, 0x1FCC,
+     0x1FD3, undef,  0x1FD8, 0x1FDB, 0x1FE3, undef,  0x1FE8, 0x1FEC, 0x1FF2, 0x1FF4, 0x1FF7, 0x1FFC, 0x2011, undef,  0x2033, 0x2034,
+     0x2036, 0x2037, 0x2057, undef,  0x2070, 0x2071, 0x2074, 0x2079, 0x207B, undef,  0x207F, 0x2089, 0x208B, undef,  0x2090, 0x209C,
+     0x20A8, undef,  0x2102, 0x2103, 0x2107, undef,  0x2109, 0x2113, 0x2115, 0x2116, 0x2119, 0x211D, 0x2120, 0x2122, 0x2124, undef, 
+     0x2126, undef,  0x2128, undef,  0x212A, 0x212D, 0x212F, 0x2131, 0x2133, 0x2139, 0x213B, 0x2140, 0x2145, 0x2149, 0x2150, 0x217F,
+     0x2189, undef,  0x222C, 0x222D, 0x222F, 0x2230, 0x2329, 0x232A, 0x2460, 0x2473, 0x24B6, 0x24EA, 0x2A0C, undef,  0x2ADC, undef, 
+     0x2C00, 0x2C2E, 0x2C60, undef,  0x2C62, 0x2C64, 0x2C67, undef,  0x2C69, undef,  0x2C6B, undef,  0x2C6D, 0x2C70, 0x2C72, undef, 
+     0x2C75, undef,  0x2C7C, 0x2C80, 0x2C82, undef,  0x2C84, undef,  0x2C86, undef,  0x2C88, undef,  0x2C8A, undef,  0x2C8C, undef, 
+     0x2C8E, undef,  0x2C90, undef,  0x2C92, undef,  0x2C94, undef,  0x2C96, undef,  0x2C98, undef,  0x2C9A, undef,  0x2C9C, undef, 
+     0x2C9E, undef,  0x2CA0, undef,  0x2CA2, undef,  0x2CA4, undef,  0x2CA6, undef,  0x2CA8, undef,  0x2CAA, undef,  0x2CAC, undef, 
+     0x2CAE, undef,  0x2CB0, undef,  0x2CB2, undef,  0x2CB4, undef,  0x2CB6, undef,  0x2CB8, undef,  0x2CBA, undef,  0x2CBC, undef, 
+     0x2CBE, undef,  0x2CC0, undef,  0x2CC2, undef,  0x2CC4, undef,  0x2CC6, undef,  0x2CC8, undef,  0x2CCA, undef,  0x2CCC, undef, 
+     0x2CCE, undef,  0x2CD0, undef,  0x2CD2, undef,  0x2CD4, undef,  0x2CD6, undef,  0x2CD8, undef,  0x2CDA, undef,  0x2CDC, undef, 
+     0x2CDE, undef,  0x2CE0, undef,  0x2CE2, undef,  0x2CEB, undef,  0x2CED, undef,  0x2CF2, undef,  0x2D6F, undef,  0x2E9F, undef, 
+     0x2EF3, undef,  0x2F00, 0x2FD5, 0x3002, undef,  0x3036, undef,  0x3038, 0x303A, 0x309F, undef,  0x30FF, undef,  0x3131, 0x3163,
+     0x3165, 0x318E, 0x3192, 0x319F, 0x3244, 0x3247, 0x3250, 0x327E, 0x3280, 0x32FE, 0x3300, 0x33C1, 0x33C3, 0x33C6, 0x33C8, 0x33D7,
+     0x33D9, 0x33FF, 0xA640, undef,  0xA642, undef,  0xA644, undef,  0xA646, undef,  0xA648, undef,  0xA64A, undef,  0xA64C, undef, 
+     0xA64E, undef,  0xA650, undef,  0xA652, undef,  0xA654, undef,  0xA656, undef,  0xA658, undef,  0xA65A, undef,  0xA65C, undef, 
+     0xA65E, undef,  0xA660, undef,  0xA662, undef,  0xA664, undef,  0xA666, undef,  0xA668, undef,  0xA66A, undef,  0xA66C, undef, 
+     0xA680, undef,  0xA682, undef,  0xA684, undef,  0xA686, undef,  0xA688, undef,  0xA68A, undef,  0xA68C, undef,  0xA68E, undef, 
+     0xA690, undef,  0xA692, undef,  0xA694, undef,  0xA696, undef,  0xA698, undef,  0xA69A, undef,  0xA69C, 0xA69D, 0xA722, undef, 
+     0xA724, undef,  0xA726, undef,  0xA728, undef,  0xA72A, undef,  0xA72C, undef,  0xA72E, undef,  0xA732, undef,  0xA734, undef, 
+     0xA736, undef,  0xA738, undef,  0xA73A, undef,  0xA73C, undef,  0xA73E, undef,  0xA740, undef,  0xA742, undef,  0xA744, undef, 
+     0xA746, undef,  0xA748, undef,  0xA74A, undef,  0xA74C, undef,  0xA74E, undef,  0xA750, undef,  0xA752, undef,  0xA754, undef, 
+     0xA756, undef,  0xA758, undef,  0xA75A, undef,  0xA75C, undef,  0xA75E, undef,  0xA760, undef,  0xA762, undef,  0xA764, undef, 
+     0xA766, undef,  0xA768, undef,  0xA76A, undef,  0xA76C, undef,  0xA76E, undef,  0xA770, undef,  0xA779, undef,  0xA77B, undef, 
+     0xA77D, 0xA77E, 0xA780, undef,  0xA782, undef,  0xA784, undef,  0xA786, undef,  0xA78B, undef,  0xA78D, undef,  0xA790, undef, 
+     0xA792, undef,  0xA796, undef,  0xA798, undef,  0xA79A, undef,  0xA79C, undef,  0xA79E, undef,  0xA7A0, undef,  0xA7A2, undef, 
+     0xA7A4, undef,  0xA7A6, undef,  0xA7A8, undef,  0xA7AA, 0xA7AE, 0xA7B0, 0xA7B4, 0xA7B6, undef,  0xA7F8, 0xA7F9, 0xAB5C, 0xAB5F,
+     0xAB70, 0xABBF, 0xF900, 0xFA0D, 0xFA10, undef,  0xFA12, undef,  0xFA15, 0xFA1E, 0xFA20, undef,  0xFA22, undef,  0xFA25, 0xFA26,
+     0xFA2A, 0xFA6D, 0xFA70, 0xFAD9, 0xFB00, 0xFB06, 0xFB13, 0xFB17, 0xFB1D, undef,  0xFB1F, 0xFB28, 0xFB2A, 0xFB36, 0xFB38, 0xFB3C,
+     0xFB3E, undef,  0xFB40, 0xFB41, 0xFB43, 0xFB44, 0xFB46, 0xFBB1, 0xFBD3, 0xFC5D, 0xFC64, 0xFD3D, 0xFD50, 0xFD8F, 0xFD92, 0xFDC7,
+     0xFDF0, 0xFDF9, 0xFDFC, undef,  0xFE11, undef,  0xFE17, 0xFE18, 0xFE31, 0xFE32, 0xFE39, 0xFE44, 0xFE51, undef,  0xFE58, undef, 
+     0xFE5D, 0xFE5E, 0xFE63, undef,  0xFE71, undef,  0xFE77, undef,  0xFE79, undef,  0xFE7B, undef,  0xFE7D, undef,  0xFE7F, 0xFEFC,
+     0xFF0D, 0xFF0E, 0xFF10, 0xFF19, 0xFF21, 0xFF3A, 0xFF41, 0xFF5A, 0xFF5F, 0xFF9F, 0xFFA1, 0xFFBE, 0xFFC2, 0xFFC7, 0xFFCA, 0xFFCF,
+     0xFFD2, 0xFFD7, 0xFFDA, 0xFFDC, 0xFFE0, 0xFFE2, 0xFFE4, 0xFFE6, 0xFFE8, 0xFFEE, 0x10400, 0x10427, 0x104B0, 0x104D3, 0x10C80, 0x10CB2,
+     0x118A0, 0x118BF, 0x1D15E, 0x1D164, 0x1D1BB, 0x1D1C0, 0x1D400, 0x1D454, 0x1D456, 0x1D49C, 0x1D49E, 0x1D49F, 0x1D4A2, undef,  0x1D4A5, 0x1D4A6,
+     0x1D4A9, 0x1D4AC, 0x1D4AE, 0x1D4B9, 0x1D4BB, undef,  0x1D4BD, 0x1D4C3, 0x1D4C5, 0x1D505, 0x1D507, 0x1D50A, 0x1D50D, 0x1D514, 0x1D516, 0x1D51C,
+     0x1D51E, 0x1D539, 0x1D53B, 0x1D53E, 0x1D540, 0x1D544, 0x1D546, undef,  0x1D54A, 0x1D550, 0x1D552, 0x1D6A5, 0x1D6A8, 0x1D7CB, 0x1D7CE, 0x1D7FF,
+     0x1E900, 0x1E921, 0x1EE00, 0x1EE03, 0x1EE05, 0x1EE1F, 0x1EE21, 0x1EE22, 0x1EE24, undef,  0x1EE27, undef,  0x1EE29, 0x1EE32, 0x1EE34, 0x1EE37,
+     0x1EE39, undef,  0x1EE3B, undef,  0x1EE42, undef,  0x1EE47, undef,  0x1EE49, undef,  0x1EE4B, undef,  0x1EE4D, 0x1EE4F, 0x1EE51, 0x1EE52,
+     0x1EE54, undef,  0x1EE57, undef,  0x1EE59, undef,  0x1EE5B, undef,  0x1EE5D, undef,  0x1EE5F, undef,  0x1EE61, 0x1EE62, 0x1EE64, undef, 
+     0x1EE67, 0x1EE6A, 0x1EE6C, 0x1EE72, 0x1EE74, 0x1EE77, 0x1EE79, 0x1EE7C, 0x1EE7E, undef,  0x1EE80, 0x1EE89, 0x1EE8B, 0x1EE9B, 0x1EEA1, 0x1EEA3,
+     0x1EEA5, 0x1EEA9, 0x1EEAB, 0x1EEBB, 0x1F12A, 0x1F12E, 0x1F130, 0x1F14F, 0x1F16A, 0x1F16B, 0x1F190, undef,  0x1F200, 0x1F202, 0x1F210, 0x1F23B,
+     0x1F240, 0x1F248, 0x1F250, 0x1F251, 0x2F800, 0x2F867, 0x2F869, 0x2F873, 0x2F875, 0x2F91E, 0x2F920, 0x2F95E, 0x2F960, 0x2F9BE, 0x2F9C0, 0x2FA1D,
+  );
+
+}
 sub IsMapped { return _mk_prop(@MAPPED); };
 sub MapMapped { my $l = shift;
   $l =~ tr/ABCDEFGHIJKLMNOPQRSTUVWXYZª\x{00B2}\x{00B3}µ\x{00B9}ºÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞĀĂĄĆĈĊČĎĐĒĔĖĘĚĜĞĠĢĤĦĨĪĬĮĴĶĹĻĽŁŃŅŇŊŌŎŐŒŔŖŘŚŜŞŠŢŤŦŨŪŬŮŰŲŴŶŸŹŻŽſƁƂƄƆƇƉƊƋƎƏƐƑƓƔƖƗƘƜƝƟƠƢƤƦƧƩƬƮƯƱƲƳƵƷƸƼǍǏǑǓǕǗǙǛǞǠǢǤǦǨǪǬǮǴǶǷǸǺǼǾȀȂȄȆȈȊȌȎȐȒȔȖȘȚȜȞȠȢȤȦȨȪȬȮȰȲȺȻȽȾɁɃɄɅɆɈɊɌɎʰʱʲʳʴʵʶʷʸˠˡˢˣˤ\x{0340}\x{0341}\x{0343}ͅͰͲʹͶͿΆ\x{0387}ΈΉΊΌΎΏΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩΪΫϏϐϑϒϓϔϕϖϘϚϜϞϠϢϤϦϨϪϬϮϰϱϲϴϵϷϹϺϽϾϿЀЁЂЃЄЅІЇЈЉЊЋЌЍЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯѠѢѤѦѨѪѬѮѰѲѴѶѸѺѼѾҀҊҌҎҐҒҔҖҘҚҜҞҠҢҤҦҨҪҬҮҰҲҴҶҸҺҼҾӁӃӅӇӉӋӍӐӒӔӖӘӚӜӞӠӢӤӦӨӪӬӮӰӲӴӶӸӺӼӾԀԂԄԆԈԊԌԎԐԒԔԖԘԚԜԞԠԢԤԦԨԪԬԮԱԲԳԴԵԶԷԸԹԺԻԼԽԾԿՀՁՂՃՄՅՆՇՈՉՊՋՌՍՎՏՐՑՒՓՔՕՖ\x{0F0C}ჇჍჼᏸᏹᏺᏻᏼᏽᲀᲁᲂᲃᲄᲅᲆᲇᲈᴬᴭᴮᴰᴱᴲᴳᴴᴵᴶᴷᴸᴹᴺᴼᴽᴾᴿᵀᵁᵂᵃᵄᵅᵆᵇᵈᵉᵊᵋᵌᵍᵏᵐᵑᵒᵓᵔᵕᵖᵗᵘᵙᵚᵛᵜᵝᵞᵟᵠᵡᵢᵣᵤᵥᵦᵧᵨᵩᵪᵸᶛᶜᶝᶞᶟᶠᶡᶢᶣᶤᶥᶦᶧᶨᶩᶪᶫᶬᶭᶮᶯᶰᶱᶲᶳᶴᶵᶶᶷᶸᶹᶺᶻᶼᶽᶾᶿḀḂḄḆḈḊḌḎḐḒḔḖḘḚḜḞḠḢḤḦḨḪḬḮḰḲḴḶḸḺḼḾṀṂṄṆṈṊṌṎṐṒṔṖṘṚṜṞṠṢṤṦṨṪṬṮṰṲṴṶṸṺṼṾẀẂẄẆẈẊẌẎẐẒẔẛẠẢẤẦẨẪẬẮẰẲẴẶẸẺẼẾỀỂỄỆỈỊỌỎỐỒỔỖỘỚỜỞỠỢỤỦỨỪỬỮỰỲỴỶỸỺỼỾἈἉἊἋἌἍἎἏἘἙἚἛἜἝἨἩἪἫἬἭἮἯἸἹἺἻἼἽἾἿὈὉὊὋὌὍὙὛὝὟὨὩὪὫὬὭὮὯάέήίόύώᾸᾹᾺΆιῈΈῊΉΐῘῙῚΊΰῨῩῪΎῬῸΌῺΏ\x{2011}\x{2070}ⁱ\x{2074}\x{2075}\x{2076}\x{2077}\x{2078}\x{2079}\x{207B}ⁿ\x{2080}\x{2081}\x{2082}\x{2083}\x{2084}\x{2085}\x{2086}\x{2087}\x{2088}\x{2089}\x{208B}ₐₑₒₓₔₕₖₗₘₙₚₛₜℂℇℊℋℌℍℎℏℐℑℒℓℕℙℚℛℜℝℤΩℨKÅℬℭℯℰℱℳℴℵℶℷℸℹℼℽℾℿ\x{2140}ⅅⅆⅇⅈⅉⅠⅤⅩⅬⅭⅮⅯⅰⅴⅹⅼⅽⅾⅿ\x{2329}\x{232A}\x{2460}\x{2461}\x{2462}\x{2463}\x{2464}\x{2465}\x{2466}\x{2467}\x{2468}ⒶⒷⒸⒹⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ\x{24EA}ⰀⰁⰂⰃⰄⰅⰆⰇⰈⰉⰊⰋⰌⰍⰎⰏⰐⰑⰒⰓⰔⰕⰖⰗⰘⰙⰚⰛⰜⰝⰞⰟⰠⰡⰢⰣⰤⰥⰦⰧⰨⰩⰪⰫⰬⰭⰮⱠⱢⱣⱤⱧⱩⱫⱭⱮⱯⱰⱲⱵⱼⱽⱾⱿⲀⲂⲄⲆⲈⲊⲌⲎⲐⲒⲔⲖⲘⲚⲜⲞⲠⲢⲤⲦⲨⲪⲬⲮⲰⲲⲴⲶⲸⲺⲼⲾⳀⳂⳄⳆⳈⳊⳌⳎⳐⳒⳔⳖⳘⳚⳜⳞⳠⳢⳫⳭⳲⵯ\x{2E9F}\x{2EF3}\x{2F00}\x{2F01}\x{2F02}\x{2F03}\x{2F04}\x{2F05}\x{2F06}\x{2F07}\x{2F08}\x{2F09}\x{2F0A}\x{2F0B}\x{2F0C}\x{2F0D}\x{2F0E}\x{2F0F}\x{2F10}\x{2F11}\x{2F12}\x{2F13}\x{2F14}\x{2F15}\x{2F16}\x{2F17}\x{2F18}\x{2F19}\x{2F1A}\x{2F1B}\x{2F1C}\x{2F1D}\x{2F1E}\x{2F1F}\x{2F20}\x{2F21}\x{2F22}\x{2F23}\x{2F24}\x{2F25}\x{2F26}\x{2F27}\x{2F28}\x{2F29}\x{2F2A}\x{2F2B}\x{2F2C}\x{2F2D}\x{2F2E}\x{2F2F}\x{2F30}\x{2F31}\x{2F32}\x{2F33}\x{2F34}\x{2F35}\x{2F36}\x{2F37}\x{2F38}\x{2F39}\x{2F3A}\x{2F3B}\x{2F3C}\x{2F3D}\x{2F3E}\x{2F3F}\x{2F40}\x{2F41}\x{2F42}\x{2F43}\x{2F44}\x{2F45}\x{2F46}\x{2F47}\x{2F48}\x{2F49}\x{2F4A}\x{2F4B}\x{2F4C}\x{2F4D}\x{2F4E}\x{2F4F}\x{2F50}\x{2F51}\x{2F52}\x{2F53}\x{2F54}\x{2F55}\x{2F56}\x{2F57}\x{2F58}\x{2F59}\x{2F5A}\x{2F5B}\x{2F5C}\x{2F5D}\x{2F5E}\x{2F5F}\x{2F60}\x{2F61}\x{2F62}\x{2F63}\x{2F64}\x{2F65}\x{2F66}\x{2F67}\x{2F68}\x{2F69}\x{2F6A}\x{2F6B}\x{2F6C}\x{2F6D}\x{2F6E}\x{2F6F}\x{2F70}\x{2F71}\x{2F72}\x{2F73}\x{2F74}\x{2F75}\x{2F76}\x{2F77}\x{2F78}\x{2F79}\x{2F7A}\x{2F7B}\x{2F7C}\x{2F7D}\x{2F7E}\x{2F7F}\x{2F80}\x{2F81}\x{2F82}\x{2F83}\x{2F84}\x{2F85}\x{2F86}\x{2F87}\x{2F88}\x{2F89}\x{2F8A}\x{2F8B}\x{2F8C}\x{2F8D}\x{2F8E}\x{2F8F}\x{2F90}\x{2F91}\x{2F92}\x{2F93}\x{2F94}\x{2F95}\x{2F96}\x{2F97}\x{2F98}\x{2F99}\x{2F9A}\x{2F9B}\x{2F9C}\x{2F9D}\x{2F9E}\x{2F9F}\x{2FA0}\x{2FA1}\x{2FA2}\x{2FA3}\x{2FA4}\x{2FA5}\x{2FA6}\x{2FA7}\x{2FA8}\x{2FA9}\x{2FAA}\x{2FAB}\x{2FAC}\x{2FAD}\x{2FAE}\x{2FAF}\x{2FB0}\x{2FB1}\x{2FB2}\x{2FB3}\x{2FB4}\x{2FB5}\x{2FB6}\x{2FB7}\x{2FB8}\x{2FB9}\x{2FBA}\x{2FBB}\x{2FBC}\x{2FBD}\x{2FBE}\x{2FBF}\x{2FC0}\x{2FC1}\x{2FC2}\x{2FC3}\x{2FC4}\x{2FC5}\x{2FC6}\x{2FC7}\x{2FC8}\x{2FC9}\x{2FCA}\x{2FCB}\x{2FCC}\x{2FCD}\x{2FCE}\x{2FCF}\x{2FD0}\x{2FD1}\x{2FD2}\x{2FD3}\x{2FD4}\x{2FD5}\x{3002}\x{3036}〸〹〺ㄱㄲㄳㄴㄵㄶㄷㄸㄹㄺㄻㄼㄽㄾㄿㅀㅁㅂㅃㅄㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎㅏㅐㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜㅝㅞㅟㅠㅡㅢㅣㅥㅦㅧㅨㅩㅪㅫㅬㅭㅮㅯㅰㅱㅲㅳㅴㅵㅶㅷㅸㅹㅺㅻㅼㅽㅾㅿㆀㆁㆂㆃㆄㆅㆆㆇㆈㆉㆊㆋㆌㆍㆎ\x{3192}\x{3193}\x{3194}\x{3195}\x{3196}\x{3197}\x{3198}\x{3199}\x{319A}\x{319B}\x{319C}\x{319D}\x{319E}\x{319F}\x{3244}\x{3245}\x{3246}\x{3247}\x{3260}\x{3261}\x{3262}\x{3263}\x{3264}\x{3265}\x{3266}\x{3267}\x{3268}\x{3269}\x{326A}\x{326B}\x{326C}\x{326D}\x{326E}\x{326F}\x{3270}\x{3271}\x{3272}\x{3273}\x{3274}\x{3275}\x{3276}\x{3277}\x{3278}\x{3279}\x{327A}\x{327B}\x{327E}\x{3280}\x{3281}\x{3282}\x{3283}\x{3284}\x{3285}\x{3286}\x{3287}\x{3288}\x{3289}\x{328A}\x{328B}\x{328C}\x{328D}\x{328E}\x{328F}\x{3290}\x{3291}\x{3292}\x{3293}\x{3294}\x{3295}\x{3296}\x{3297}\x{3298}\x{3299}\x{329A}\x{329B}\x{329C}\x{329D}\x{329E}\x{329F}\x{32A0}\x{32A1}\x{32A2}\x{32A3}\x{32A4}\x{32A5}\x{32A6}\x{32A7}\x{32A8}\x{32A9}\x{32AA}\x{32AB}\x{32AC}\x{32AD}\x{32AE}\x{32AF}\x{32B0}\x{32D0}\x{32D1}\x{32D2}\x{32D3}\x{32D4}\x{32D5}\x{32D6}\x{32D7}\x{32D8}\x{32D9}\x{32DA}\x{32DB}\x{32DC}\x{32DD}\x{32DE}\x{32DF}\x{32E0}\x{32E1}\x{32E2}\x{32E3}\x{32E4}\x{32E5}\x{32E6}\x{32E7}\x{32E8}\x{32E9}\x{32EA}\x{32EB}\x{32EC}\x{32ED}\x{32EE}\x{32EF}\x{32F0}\x{32F1}\x{32F2}\x{32F3}\x{32F4}\x{32F5}\x{32F6}\x{32F7}\x{32F8}\x{32F9}\x{32FA}\x{32FB}\x{32FC}\x{32FD}\x{32FE}ꙀꙂꙄꙆꙈꙊꙌꙎꙐꙒꙔꙖꙘꙚꙜꙞꙠꙢꙤꙦꙨꙪꙬꚀꚂꚄꚆꚈꚊꚌꚎꚐꚒꚔꚖꚘꚚꚜꚝꜢꜤꜦꜨꜪꜬꜮꜲꜴꜶꜸꜺꜼꜾꝀꝂꝄꝆꝈꝊꝌꝎꝐꝒꝔꝖꝘꝚꝜꝞꝠꝢꝤꝦꝨꝪꝬꝮꝰꝹꝻꝽꝾꞀꞂꞄꞆꞋꞍꞐꞒꞖꞘꞚꞜꞞꞠꞢꞤꞦꞨꞪꞫꞬꞭꞮꞰꞱꞲꞳꞴꞶꟸꟹꭜꭝꭞꭟꭰꭱꭲꭳꭴꭵꭶꭷꭸꭹꭺꭻꭼꭽꭾꭿꮀꮁꮂꮃꮄꮅꮆꮇꮈꮉꮊꮋꮌꮍꮎꮏꮐꮑꮒꮓꮔꮕꮖꮗꮘꮙꮚꮛꮜꮝꮞꮟꮠꮡꮢꮣꮤꮥꮦꮧꮨꮩꮪꮫꮬꮭꮮꮯꮰꮱꮲꮳꮴꮵꮶꮷꮸꮹꮺꮻꮼꮽꮾꮿ豈更車賈滑串句龜龜契金喇奈懶癩羅蘿螺裸邏樂洛烙珞落酪駱亂卵欄爛蘭鸞嵐濫藍襤拉臘蠟廊朗浪狼郎來冷勞擄櫓爐盧老蘆虜路露魯鷺碌祿綠菉錄鹿論壟弄籠聾牢磊賂雷壘屢樓淚漏累縷陋勒肋凜凌稜綾菱陵讀拏樂諾丹寧怒率異北磻便復不泌數索參塞省葉說殺辰沈拾若掠略亮兩凉梁糧良諒量勵呂女廬旅濾礪閭驪麗黎力曆歷轢年憐戀撚漣煉璉秊練聯輦蓮連鍊列劣咽烈裂說廉念捻殮簾獵令囹寧嶺怜玲瑩羚聆鈴零靈領例禮醴隸惡了僚寮尿料樂燎療蓼遼龍暈阮劉杻柳流溜琉留硫紐類六戮陸倫崙淪輪律慄栗率隆利吏履易李梨泥理痢罹裏裡里離匿溺吝燐璘藺隣鱗麟林淋臨立笠粒狀炙識什茶刺切度拓糖宅洞暴輻行降見廓兀嗀塚晴凞猪益礼神祥福靖精羽蘒諸逸都飯飼館鶴郞隷侮僧免勉勤卑喝嘆器塀墨層屮悔慨憎懲敏既暑梅海渚漢煮爫琢碑社祉祈祐祖祝禍禎穀突節練縉繁署者臭艹艹著褐視謁謹賓贈辶逸難響頻恵𤋮舘並况全侀充冀勇勺喝啕喙嗢塚墳奄奔婢嬨廒廙彩徭惘慎愈憎慠懲戴揄搜摒敖晴朗望杖歹殺流滛滋漢瀞煮瞧爵犯猪瑱甆画瘝瘟益盛直睊着磌窱節类絛練缾者荒華蝹襁覆視調諸請謁諾諭謹變贈輸遲醙鉶陼難靖韛響頋頻鬒龜𢡊𢡄𣏕㮝䀘䀹𥉉𥳐𧻓齃龎ﬠﬡﬢﬣﬤﬥﬦﬧﬨﭐﭑﭒﭓﭔﭕﭖﭗﭘﭙﭚﭛﭜﭝﭞﭟﭠﭡﭢﭣﭤﭥﭦﭧﭨﭩﭪﭫﭬﭭﭮﭯﭰﭱﭲﭳﭴﭵﭶﭷﭸﭹﭺﭻﭼﭽﭾﭿﮀﮁﮂﮃﮄﮅﮆﮇﮈﮉﮊﮋﮌﮍﮎﮏﮐﮑﮒﮓﮔﮕﮖﮗﮘﮙﮚﮛﮜﮝﮞﮟﮠﮡﮢﮣﮤﮥﮦﮧﮨﮩﮪﮫﮬﮭﮮﮯﮰﮱﯓﯔﯕﯖﯗﯘﯙﯚﯛﯜﯞﯟﯠﯡﯢﯣﯤﯥﯦﯧﯨﯩﯼﯽﯾﯿ\x{FE11}\x{FE17}\x{FE18}\x{FE31}\x{FE32}\x{FE39}\x{FE3A}\x{FE3B}\x{FE3C}\x{FE3D}\x{FE3E}\x{FE3F}\x{FE40}\x{FE41}\x{FE42}\x{FE43}\x{FE44}\x{FE51}\x{FE58}\x{FE5D}\x{FE5E}\x{FE63}ﺀﺁﺂﺃﺄﺅﺆﺇﺈﺉﺊﺋﺌﺍﺎﺏﺐﺑﺒﺓﺔﺕﺖﺗﺘﺙﺚﺛﺜﺝﺞﺟﺠﺡﺢﺣﺤﺥﺦﺧﺨﺩﺪﺫﺬﺭﺮﺯﺰﺱﺲﺳﺴﺵﺶﺷﺸﺹﺺﺻﺼﺽﺾﺿﻀﻁﻂﻃﻄﻅﻆﻇﻈﻉﻊﻋﻌﻍﻎﻏﻐﻑﻒﻓﻔﻕﻖﻗﻘﻙﻚﻛﻜﻝﻞﻟﻠﻡﻢﻣﻤﻥﻦﻧﻨﻩﻪﻫﻬﻭﻮﻯﻰﻱﻲﻳﻴ\x{FF0D}\x{FF0E}0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\x{FF5F}\x{FF60}\x{FF61}\x{FF62}\x{FF63}\x{FF64}\x{FF65}ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゙゚ᄀᄁᆪᄂᆬᆭᄃᄄᄅᆰᆱᆲᆳᆴᆵᄚᄆᄇᄈᄡᄉᄊᄋᄌᄍᄎᄏᄐᄑ하ᅢᅣᅤᅥᅦᅧᅨᅩᅪᅫᅬᅭᅮᅯᅰᅱᅲᅳᅴᅵ\x{FFE0}\x{FFE1}\x{FFE2}\x{FFE4}\x{FFE5}\x{FFE6}\x{FFE8}\x{FFE9}\x{FFEA}\x{FFEB}\x{FFEC}\x{FFED}\x{FFEE}𐐀𐐁𐐂𐐃𐐄𐐅𐐆𐐇𐐈𐐉𐐊𐐋𐐌𐐍𐐎𐐏𐐐𐐑𐐒𐐓𐐔𐐕𐐖𐐗𐐘𐐙𐐚𐐛𐐜𐐝𐐞𐐟𐐠𐐡𐐢𐐣𐐤𐐥𐐦𐐧𐒰𐒱𐒲𐒳𐒴𐒵𐒶𐒷𐒸𐒹𐒺𐒻𐒼𐒽𐒾𐒿𐓀𐓁𐓂𐓃𐓄𐓅𐓆𐓇𐓈𐓉𐓊𐓋𐓌𐓍𐓎𐓏𐓐𐓑𐓒𐓓𐲀𐲁𐲂𐲃𐲄𐲅𐲆𐲇𐲈𐲉𐲊𐲋𐲌𐲍𐲎𐲏𐲐𐲑𐲒𐲓𐲔𐲕𐲖𐲗𐲘𐲙𐲚𐲛𐲜𐲝𐲞𐲟𐲠𐲡𐲢𐲣𐲤𐲥𐲦𐲧𐲨𐲩𐲪𐲫𐲬𐲭𐲮𐲯𐲰𐲱𐲲𑢠𑢡𑢢𑢣𑢤𑢥𑢦𑢧𑢨𑢩𑢪𑢫𑢬𑢭𑢮𑢯𑢰𑢱𑢲𑢳𑢴𑢵𑢶𑢷𑢸𑢹𑢺𑢻𑢼𑢽𑢾𑢿𝐀𝐁𝐂𝐃𝐄𝐅𝐆𝐇𝐈𝐉𝐊𝐋𝐌𝐍𝐎𝐏𝐐𝐑𝐒𝐓𝐔𝐕𝐖𝐗𝐘𝐙𝐚𝐛𝐜𝐝𝐞𝐟𝐠𝐡𝐢𝐣𝐤𝐥𝐦𝐧𝐨𝐩𝐪𝐫𝐬𝐭𝐮𝐯𝐰𝐱𝐲𝐳𝐴𝐵𝐶𝐷𝐸𝐹𝐺𝐻𝐼𝐽𝐾𝐿𝑀𝑁𝑂𝑃𝑄𝑅𝑆𝑇𝑈𝑉𝑊𝑋𝑌𝑍𝑎𝑏𝑐𝑑𝑒𝑓𝑔𝑖𝑗𝑘𝑙𝑚𝑛𝑜𝑝𝑞𝑟𝑠𝑡𝑢𝑣𝑤𝑥𝑦𝑧𝑨𝑩𝑪𝑫𝑬𝑭𝑮𝑯𝑰𝑱𝑲𝑳𝑴𝑵𝑶𝑷𝑸𝑹𝑺𝑻𝑼𝑽𝑾𝑿𝒀𝒁𝒂𝒃𝒄𝒅𝒆𝒇𝒈𝒉𝒊𝒋𝒌𝒍𝒎𝒏𝒐𝒑𝒒𝒓𝒔𝒕𝒖𝒗𝒘𝒙𝒚𝒛𝒜𝒞𝒟𝒢𝒥𝒦𝒩𝒪𝒫𝒬𝒮𝒯𝒰𝒱𝒲𝒳𝒴𝒵𝒶𝒷𝒸𝒹𝒻𝒽𝒾𝒿𝓀𝓁𝓂𝓃𝓅𝓆𝓇𝓈𝓉𝓊𝓋𝓌𝓍𝓎𝓏𝓐𝓑𝓒𝓓𝓔𝓕𝓖𝓗𝓘𝓙𝓚𝓛𝓜𝓝𝓞𝓟𝓠𝓡𝓢𝓣𝓤𝓥𝓦𝓧𝓨𝓩𝓪𝓫𝓬𝓭𝓮𝓯𝓰𝓱𝓲𝓳𝓴𝓵𝓶𝓷𝓸𝓹𝓺𝓻𝓼𝓽𝓾𝓿𝔀𝔁𝔂𝔃𝔄𝔅𝔇𝔈𝔉𝔊𝔍𝔎𝔏𝔐𝔑𝔒𝔓𝔔𝔖𝔗𝔘𝔙𝔚𝔛𝔜𝔞𝔟𝔠𝔡𝔢𝔣𝔤𝔥𝔦𝔧𝔨𝔩𝔪𝔫𝔬𝔭𝔮𝔯𝔰𝔱𝔲𝔳𝔴𝔵𝔶𝔷𝔸𝔹𝔻𝔼𝔽𝔾𝕀𝕁𝕂𝕃𝕄𝕆𝕊𝕋𝕌𝕍𝕎𝕏𝕐𝕒𝕓𝕔𝕕𝕖𝕗𝕘𝕙𝕚𝕛𝕜𝕝𝕞𝕟𝕠𝕡𝕢𝕣𝕤𝕥𝕦𝕧𝕨𝕩𝕪𝕫𝕬𝕭𝕮𝕯𝕰𝕱𝕲𝕳𝕴𝕵𝕶𝕷𝕸𝕹𝕺𝕻𝕼𝕽𝕾𝕿𝖀𝖁𝖂𝖃𝖄𝖅𝖆𝖇𝖈𝖉𝖊𝖋𝖌𝖍𝖎𝖏𝖐𝖑𝖒𝖓𝖔𝖕𝖖𝖗𝖘𝖙𝖚𝖛𝖜𝖝𝖞𝖟𝖠𝖡𝖢𝖣𝖤𝖥𝖦𝖧𝖨𝖩𝖪𝖫𝖬𝖭𝖮𝖯𝖰𝖱𝖲𝖳𝖴𝖵𝖶𝖷𝖸𝖹𝖺𝖻𝖼𝖽𝖾𝖿𝗀𝗁𝗂𝗃𝗄𝗅𝗆𝗇𝗈𝗉𝗊𝗋𝗌𝗍𝗎𝗏𝗐𝗑𝗒𝗓𝗔𝗕𝗖𝗗𝗘𝗙𝗚𝗛𝗜𝗝𝗞𝗟𝗠𝗡𝗢𝗣𝗤𝗥𝗦𝗧𝗨𝗩𝗪𝗫𝗬𝗭𝗮𝗯𝗰𝗱𝗲𝗳𝗴𝗵𝗶𝗷𝗸𝗹𝗺𝗻𝗼𝗽𝗾𝗿𝘀𝘁𝘂𝘃𝘄𝘅𝘆𝘇𝘈𝘉𝘊𝘋𝘌𝘍𝘎𝘏𝘐𝘑𝘒𝘓𝘔𝘕𝘖𝘗𝘘𝘙𝘚𝘛𝘜𝘝𝘞𝘟𝘠𝘡𝘢𝘣𝘤𝘥𝘦𝘧𝘨𝘩𝘪𝘫𝘬𝘭𝘮𝘯𝘰𝘱𝘲𝘳𝘴𝘵𝘶𝘷𝘸𝘹𝘺𝘻𝘼𝘽𝘾𝘿𝙀𝙁𝙂𝙃𝙄𝙅𝙆𝙇𝙈𝙉𝙊𝙋𝙌𝙍𝙎𝙏𝙐𝙑𝙒𝙓𝙔𝙕𝙖𝙗𝙘𝙙𝙚𝙛𝙜𝙝𝙞𝙟𝙠𝙡𝙢𝙣𝙤𝙥𝙦𝙧𝙨𝙩𝙪𝙫𝙬𝙭𝙮𝙯𝙰𝙱𝙲𝙳𝙴𝙵𝙶𝙷𝙸𝙹𝙺𝙻𝙼𝙽𝙾𝙿𝚀𝚁𝚂𝚃𝚄𝚅𝚆𝚇𝚈𝚉𝚊𝚋𝚌𝚍𝚎𝚏𝚐𝚑𝚒𝚓𝚔𝚕𝚖𝚗𝚘𝚙𝚚𝚛𝚜𝚝𝚞𝚟𝚠𝚡𝚢𝚣𝚤𝚥𝚨𝚩𝚪𝚫𝚬𝚭𝚮𝚯𝚰𝚱𝚲𝚳𝚴𝚵𝚶𝚷𝚸𝚹𝚺𝚻𝚼𝚽𝚾𝚿𝛀\x{1D6C1}𝛂𝛃𝛄𝛅𝛆𝛇𝛈𝛉𝛊𝛋𝛌𝛍𝛎𝛏𝛐𝛑𝛒𝛓𝛔𝛕𝛖𝛗𝛘𝛙𝛚\x{1D6DB}𝛜𝛝𝛞𝛟𝛠𝛡𝛢𝛣𝛤𝛥𝛦𝛧𝛨𝛩𝛪𝛫𝛬𝛭𝛮𝛯𝛰𝛱𝛲𝛳𝛴𝛵𝛶𝛷𝛸𝛹𝛺\x{1D6FB}𝛼𝛽𝛾𝛿𝜀𝜁𝜂𝜃𝜄𝜅𝜆𝜇𝜈𝜉𝜊𝜋𝜌𝜍𝜎𝜏𝜐𝜑𝜒𝜓𝜔\x{1D715}𝜖𝜗𝜘𝜙𝜚𝜛𝜜𝜝𝜞𝜟𝜠𝜡𝜢𝜣𝜤𝜥𝜦𝜧𝜨𝜩𝜪𝜫𝜬𝜭𝜮𝜯𝜰𝜱𝜲𝜳𝜴\x{1D735}𝜶𝜷𝜸𝜹𝜺𝜻𝜼𝜽𝜾𝜿𝝀𝝁𝝂𝝃𝝄𝝅𝝆𝝇𝝈𝝉𝝊𝝋𝝌𝝍𝝎\x{1D74F}𝝐𝝑𝝒𝝓𝝔𝝕𝝖𝝗𝝘𝝙𝝚𝝛𝝜𝝝𝝞𝝟𝝠𝝡𝝢𝝣𝝤𝝥𝝦𝝧𝝨𝝩𝝪𝝫𝝬𝝭𝝮\x{1D76F}𝝰𝝱𝝲𝝳𝝴𝝵𝝶𝝷𝝸𝝹𝝺𝝻𝝼𝝽𝝾𝝿𝞀𝞁𝞂𝞃𝞄𝞅𝞆𝞇𝞈\x{1D789}𝞊𝞋𝞌𝞍𝞎𝞏𝞐𝞑𝞒𝞓𝞔𝞕𝞖𝞗𝞘𝞙𝞚𝞛𝞜𝞝𝞞𝞟𝞠𝞡𝞢𝞣𝞤𝞥𝞦𝞧𝞨\x{1D7A9}𝞪𝞫𝞬𝞭𝞮𝞯𝞰𝞱𝞲𝞳𝞴𝞵𝞶𝞷𝞸𝞹𝞺𝞻𝞼𝞽𝞾𝞿𝟀𝟁𝟂\x{1D7C3}𝟄𝟅𝟆𝟇𝟈𝟉𝟊𝟋𝟎𝟏𝟐𝟑𝟒𝟓𝟔𝟕𝟖𝟗𝟘𝟙𝟚𝟛𝟜𝟝𝟞𝟟𝟠𝟡𝟢𝟣𝟤𝟥𝟦𝟧𝟨𝟩𝟪𝟫𝟬𝟭𝟮𝟯𝟰𝟱𝟲𝟳𝟴𝟵𝟶𝟷𝟸𝟹𝟺𝟻𝟼𝟽𝟾𝟿𞤀𞤁𞤂𞤃𞤄𞤅𞤆𞤇𞤈𞤉𞤊𞤋𞤌𞤍𞤎𞤏𞤐𞤑𞤒𞤓𞤔𞤕𞤖𞤗𞤘𞤙𞤚𞤛𞤜𞤝𞤞𞤟𞤠𞤡𞸀𞸁𞸂𞸃𞸅𞸆𞸇𞸈𞸉𞸊𞸋𞸌𞸍𞸎𞸏𞸐𞸑𞸒𞸓𞸔𞸕𞸖𞸗𞸘𞸙𞸚𞸛𞸜𞸝𞸞𞸟𞸡𞸢𞸤𞸧𞸩𞸪𞸫𞸬𞸭𞸮𞸯𞸰𞸱𞸲𞸴𞸵𞸶𞸷𞸹𞸻𞹂𞹇𞹉𞹋𞹍𞹎𞹏𞹑𞹒𞹔𞹗𞹙𞹛𞹝𞹟𞹡𞹢𞹤𞹧𞹨𞹩𞹪𞹬𞹭𞹮𞹯𞹰𞹱𞹲𞹴𞹵𞹶𞹷𞹹𞹺𞹻𞹼𞹾𞺀𞺁𞺂𞺃𞺄𞺅𞺆𞺇𞺈𞺉𞺋𞺌𞺍𞺎𞺏𞺐𞺑𞺒𞺓𞺔𞺕𞺖𞺗𞺘𞺙𞺚𞺛𞺡𞺢𞺣𞺥𞺦𞺧𞺨𞺩𞺫𞺬𞺭𞺮𞺯𞺰𞺱𞺲𞺳𞺴𞺵𞺶𞺷𞺸𞺹𞺺𞺻\x{1F12B}\x{1F12C}🄰🄱🄲🄳🄴🄵🄶🄷🄸🄹🄺🄻🄼🄽🄾🄿🅀🅁🅂🅃🅄🅅🅆🅇🅈🅉\x{1F202}\x{1F210}\x{1F211}\x{1F212}\x{1F213}\x{1F214}\x{1F215}\x{1F216}\x{1F217}\x{1F218}\x{1F219}\x{1F21A}\x{1F21B}\x{1F21C}\x{1F21D}\x{1F21E}\x{1F21F}\x{1F220}\x{1F221}\x{1F222}\x{1F223}\x{1F224}\x{1F225}\x{1F226}\x{1F227}\x{1F228}\x{1F229}\x{1F22A}\x{1F22B}\x{1F22C}\x{1F22D}\x{1F22E}\x{1F22F}\x{1F230}\x{1F231}\x{1F232}\x{1F233}\x{1F234}\x{1F235}\x{1F236}\x{1F237}\x{1F238}\x{1F239}\x{1F23A}\x{1F23B}\x{1F250}\x{1F251}丽丸乁𠄢你侮侻倂偺備僧像㒞𠘺免兔兤具𠔜㒹內再𠕋冗冤仌冬况𩇟凵刃㓟刻剆割剷㔕勇勉勤勺包匆北卉卑博即卽卿卿卿𠨬灰及叟𠭣叫叱吆咞吸呈周咢哶唐啓啣善善喙喫喳嗂圖嘆圗噑噴切壮城埴堍型堲報墬𡓤売壷夆多夢奢𡚨𡛪姬娛娧姘婦㛮嬈嬾嬾𡧈寃寘寧寳𡬘寿将尢㞁屠屮峀岍𡷤嵃𡷦嵮嵫嵼巡巢㠯巽帨帽幩㡢𢆃㡼庰庳庶廊𪎒廾𢌱𢌱舁弢弢㣇𣊸𦇚形彫㣣徚忍志忹悁㤺㤜悔𢛔惇慈慌慎慌慺憎憲憤憯懞懲懶成戛扝抱拔捐𢬌挽拼捨掃揤𢯱搢揅掩㨮摩摾撝摷㩬敏敬𣀊旣書晉㬙暑㬈㫤冒冕最暜肭䏙朗望朡杞杓𣏃㭉柺枅桒梅𣑭梎栟椔㮝楂榣槪檨𣚣櫛㰘次𣢧歔㱎歲殟殺殻𣪍𡴋𣫺汎𣲼沿泍汧洖派海流浩浸涅𣴞洴港湮㴳滋滇𣻑淹潮𣽞𣾎濆瀹瀞瀛㶖灊災灷炭𠔥煅𤉣熜爨爵牐𤘈犀犕𤜵𤠔獺王㺬玥㺸㺸瑇瑜瑱璅瓊㼛甤𤰶甾𤲒異𢆟瘐𤾡𤾸𥁄㿼䀈直𥃳𥃲𥄙𥄳眞真真睊䀹瞋䁆䂖𥐝硎碌磌䃣𥘦祖𥚚𥛅福秫䄯穀穊穏𥥼𥪧𥪧䈂𥮫篆築䈧𥲀糒䊠糨糣紀𥾆絣䌁緇縂繅䌴𦈨𦉇䍙𦋙罺𦌾羕翺者𦓚𦔣聠𦖨聰𣍟䏕育脃䐋脾媵𦞧𦞵𣎓𣎜舁舄辞䑫芑芋芝劳花芳芽苦𦬼若茝荣莭茣莽菧著荓菊菌菜𦰶𦵫𦳕䔫蓱蓳蔖𧏊蕤𦼬䕝䕡𦾱𧃒䕫虐虜虧虩蚩蚈蜎蛢蝹蜨蝫螆蟡蠁䗹衠衣𧙧裗裞䘵裺㒻𧢮𧥦䚾䛇誠諭變豕𧲨貫賁贛起𧼯𠠄跋趼跰𠣞軔輸𨗒𨗭邔郱鄑𨜮鄛鈸鋗鋘鉼鏹鐕𨯺開䦕閷𨵷䧦雃嶲霣𩅅𩈚䩮䩶韠𩐊䪲𩒖頋頋頩𩖶飢䬳餩馧駂駾䯎𩬰鬒鱀鳽䳎䳭鵧𪃎䳸𪄅𪈎𪊑麻䵖黹黾鼅鼏鼖鼻𪘀/abcdefghijklmnopqrstuvwxyza23μ1oàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþāăąćĉċčďđēĕėęěĝğġģĥħĩīĭįĵķĺļľłńņňŋōŏőœŕŗřśŝşšţťŧũūŭůűųŵŷÿźżžsɓƃƅɔƈɖɗƌǝəɛƒɠɣɩɨƙɯɲɵơƣƥʀƨʃƭʈưʊʋƴƶʒƹƽǎǐǒǔǖǘǚǜǟǡǣǥǧǩǫǭǯǵƕƿǹǻǽǿȁȃȅȇȉȋȍȏȑȓȕȗșțȝȟƞȣȥȧȩȫȭȯȱȳⱥȼƚⱦɂƀʉʌɇɉɋɍɏhɦjrɹɻʁwyɣlsxʕ\x{0300}\x{0301}\x{0313}ιͱͳʹͷϳά\x{00B7}έήίόύώαβγδεζηθικλμνξοπρστυφχψωϊϋϗβθυύϋφπϙϛϝϟϡϣϥϧϩϫϭϯκρσθεϸσϻͻͼͽѐёђѓєѕіїјљњћќѝўџабвгдежзийклмнопрстуфхцчшщъыьэюяѡѣѥѧѩѫѭѯѱѳѵѷѹѻѽѿҁҋҍҏґғҕҗҙқҝҟҡңҥҧҩҫҭүұҳҵҷҹһҽҿӂӄӆӈӊӌӎӑӓӕӗәӛӝӟӡӣӥӧөӫӭӯӱӳӵӷӹӻӽӿԁԃԅԇԉԋԍԏԑԓԕԗԙԛԝԟԡԣԥԧԩԫԭԯաբգդեզէըթժիլխծկհձղճմյնշոչպջռսվտրցւփքօֆ\x{0F0B}ⴧⴭნᏰᏱᏲᏳᏴᏵвдосттъѣꙋaæbdeǝghijklmnoȣprtuwaɐɑᴂbdeəɛɜgkmŋoɔᴖᴗptuᴝɯvᴥβγδφχiruvβγρφχнɒcɕðɜfɟɡɥɨɩɪᵻʝɭᶅʟɱɰɲɳɴɵɸʂʃƫʉʊᴜʋʌzʐʑʒθḁḃḅḇḉḋḍḏḑḓḕḗḙḛḝḟḡḣḥḧḩḫḭḯḱḳḵḷḹḻḽḿṁṃṅṇṉṋṍṏṑṓṕṗṙṛṝṟṡṣṥṧṩṫṭṯṱṳṵṷṹṻṽṿẁẃẅẇẉẋẍẏẑẓẕṡạảấầẩẫậắằẳẵặẹẻẽếềểễệỉịọỏốồổỗộớờởỡợụủứừửữựỳỵỷỹỻỽỿἀἁἂἃἄἅἆἇἐἑἒἓἔἕἠἡἢἣἤἥἦἧἰἱἲἳἴἵἶἷὀὁὂὃὄὅὑὓὕὗὠὡὢὣὤὥὦὧάέήίόύώᾰᾱὰάιὲέὴήΐῐῑὶίΰῠῡὺύῥὸόὼώ\x{2010}0i456789\x{2212}n0123456789\x{2212}aeoxəhklmnpstcɛghhhhħiillnpqrrrzωzkåbceefmoאבגדiπγγπ\x{2211}ddeijivxlcdmivxlcdm\x{3008}\x{3009}123456789abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz0ⰰⰱⰲⰳⰴⰵⰶⰷⰸⰹⰺⰻⰼⰽⰾⰿⱀⱁⱂⱃⱄⱅⱆⱇⱈⱉⱊⱋⱌⱍⱎⱏⱐⱑⱒⱓⱔⱕⱖⱗⱘⱙⱚⱛⱜⱝⱞⱡɫᵽɽⱨⱪⱬɑɱɐɒⱳⱶjvȿɀⲁⲃⲅⲇⲉⲋⲍⲏⲑⲓⲕⲗⲙⲛⲝⲟⲡⲣⲥⲧⲩⲫⲭⲯⲱⲳⲵⲷⲹⲻⲽⲿⳁⳃⳅⳇⳉⳋⳍⳏⳑⳓⳕⳗⳙⳛⳝⳟⳡⳣⳬⳮⳳⵡ母龟一丨丶丿乙亅二亠人儿入八冂冖冫几凵刀力勹匕匚匸十卜卩厂厶又口囗土士夂夊夕大女子宀寸小尢尸屮山巛工己巾干幺广廴廾弋弓彐彡彳心戈戶手支攴文斗斤方无日曰月木欠止歹殳毋比毛氏气水火爪父爻爿片牙牛犬玄玉瓜瓦甘生用田疋疒癶白皮皿目矛矢石示禸禾穴立竹米糸缶网羊羽老而耒耳聿肉臣自至臼舌舛舟艮色艸虍虫血行衣襾見角言谷豆豕豸貝赤走足身車辛辰辵邑酉釆里金長門阜隶隹雨靑非面革韋韭音頁風飛食首香馬骨高髟鬥鬯鬲鬼魚鳥鹵鹿麥麻黃黍黑黹黽鼎鼓鼠鼻齊齒龍龜龠\.\x{3012}十卄卅ᄀᄁᆪᄂᆬᆭᄃᄄᄅᆰᆱᆲᆳᆴᆵᄚᄆᄇᄈᄡᄉᄊᄋᄌᄍᄎᄏᄐᄑ하ᅢᅣᅤᅥᅦᅧᅨᅩᅪᅫᅬᅭᅮᅯᅰᅱᅲᅳᅴᅵᄔᄕᇇᇈᇌᇎᇓᇗᇙᄜᇝᇟᄝᄞᄠᄢᄣᄧᄩᄫᄬᄭᄮᄯᄲᄶᅀᅇᅌᇱᇲᅗᅘᅙᆄᆅᆈᆑᆒᆔᆞᆡ一二三四上中下甲乙丙丁天地人問幼文箏ᄀᄂᄃᄅᄆᄇᄉᄋᄌᄎᄏᄐᄑᄒ가나다라마바사아자차카타파하우一二三四五六七八九十月火水木金土日株有社名特財祝労秘男女適優印注項休写正上中下左右医宗学監企資協夜アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲꙁꙃꙅꙇꙉꙋꙍꙏꙑꙓꙕꙗꙙꙛꙝꙟꙡꙣꙥꙧꙩꙫꙭꚁꚃꚅꚇꚉꚋꚍꚏꚑꚓꚕꚗꚙꚛъьꜣꜥꜧꜩꜫꜭꜯꜳꜵꜷꜹꜻꜽꜿꝁꝃꝅꝇꝉꝋꝍꝏꝑꝓꝕꝗꝙꝛꝝꝟꝡꝣꝥꝧꝩꝫꝭꝯꝯꝺꝼᵹꝿꞁꞃꞅꞇꞌɥꞑꞓꞗꞙꞛꞝꞟꞡꞣꞥꞧꞩɦɜɡɬɪʞʇʝꭓꞵꞷħœꜧꬷɫꭒᎠᎡᎢᎣᎤᎥᎦᎧᎨᎩᎪᎫᎬᎭᎮᎯᎰᎱᎲᎳᎴᎵᎶᎷᎸᎹᎺᎻᎼᎽᎾᎿᏀᏁᏂᏃᏄᏅᏆᏇᏈᏉᏊᏋᏌᏍᏎᏏᏐᏑᏒᏓᏔᏕᏖᏗᏘᏙᏚᏛᏜᏝᏞᏟᏠᏡᏢᏣᏤᏥᏦᏧᏨᏩᏪᏫᏬᏭᏮᏯ豈更車賈滑串句龜龜契金喇奈懶癩羅蘿螺裸邏樂洛烙珞落酪駱亂卵欄爛蘭鸞嵐濫藍襤拉臘蠟廊朗浪狼郎來冷勞擄櫓爐盧老蘆虜路露魯鷺碌祿綠菉錄鹿論壟弄籠聾牢磊賂雷壘屢樓淚漏累縷陋勒肋凜凌稜綾菱陵讀拏樂諾丹寧怒率異北磻便復不泌數索參塞省葉說殺辰沈拾若掠略亮兩凉梁糧良諒量勵呂女廬旅濾礪閭驪麗黎力曆歷轢年憐戀撚漣煉璉秊練聯輦蓮連鍊列劣咽烈裂說廉念捻殮簾獵令囹寧嶺怜玲瑩羚聆鈴零靈領例禮醴隸惡了僚寮尿料樂燎療蓼遼龍暈阮劉杻柳流溜琉留硫紐類六戮陸倫崙淪輪律慄栗率隆利吏履易李梨泥理痢罹裏裡里離匿溺吝燐璘藺隣鱗麟林淋臨立笠粒狀炙識什茶刺切度拓糖宅洞暴輻行降見廓兀嗀塚晴凞猪益礼神祥福靖精羽蘒諸逸都飯飼館鶴郞隷侮僧免勉勤卑喝嘆器塀墨層屮悔慨憎懲敏既暑梅海渚漢煮爫琢碑社祉祈祐祖祝禍禎穀突節練縉繁署者臭艹艹著褐視謁謹賓贈辶逸難響頻恵𤋮舘並况全侀充冀勇勺喝啕喙嗢塚墳奄奔婢嬨廒廙彩徭惘慎愈憎慠懲戴揄搜摒敖晴朗望杖歹殺流滛滋漢瀞煮瞧爵犯猪瑱甆画瘝瘟益盛直睊着磌窱節类絛練缾者荒華蝹襁覆視調諸請謁諾諭謹變贈輸遲醙鉶陼難靖韛響頋頻鬒龜𢡊𢡄𣏕㮝䀘䀹𥉉𥳐𧻓齃龎עאדהכלםרתٱٱٻٻٻٻپپپپڀڀڀڀٺٺٺٺٿٿٿٿٹٹٹٹڤڤڤڤڦڦڦڦڄڄڄڄڃڃڃڃچچچچڇڇڇڇڍڍڌڌڎڎڈڈژژڑڑککککگگگگڳڳڳڳڱڱڱڱںںڻڻڻڻۀۀہہہہھھھھےےۓۓڭڭڭڭۇۇۆۆۈۈۋۋۅۅۉۉېېېېىىیییی\x{3001}\x{3016}\x{3017}\x{2014}\x{2013}\x{3014}\x{3015}\x{3010}\x{3011}\x{300A}\x{300B}\x{3008}\x{3009}\x{300C}\x{300D}\x{300E}\x{300F}\x{3001}\x{2014}\x{3014}\x{3015}\-ءآآأأؤؤإإئئئئااببببةةتتتتثثثثججججححححخخخخددذذررززسسسسششششصصصصضضضضططططظظظظععععغغغغففففققققككككللللممممننننههههووىىيييي\-\.0123456789abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz\x{2985}\x{2986}\.\x{300C}\x{300D}\x{3001}\x{30FB}ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン\x{3099}\x{309A}ᄀᄁᆪᄂᆬᆭᄃᄄᄅᆰᆱᆲᆳᆴᆵᄚᄆᄇᄈᄡᄉᄊᄋᄌᄍᄎᄏᄐᄑ하ᅢᅣᅤᅥᅦᅧᅨᅩᅪᅫᅬᅭᅮᅯᅰᅱᅲᅳᅴᅵ\x{00A2}\x{00A3}\x{00AC}\x{00A6}\x{00A5}\x{20A9}\x{2502}\x{2190}\x{2191}\x{2192}\x{2193}\x{25A0}\x{25CB}𐐨𐐩𐐪𐐫𐐬𐐭𐐮𐐯𐐰𐐱𐐲𐐳𐐴𐐵𐐶𐐷𐐸𐐹𐐺𐐻𐐼𐐽𐐾𐐿𐑀𐑁𐑂𐑃𐑄𐑅𐑆𐑇𐑈𐑉𐑊𐑋𐑌𐑍𐑎𐑏𐓘𐓙𐓚𐓛𐓜𐓝𐓞𐓟𐓠𐓡𐓢𐓣𐓤𐓥𐓦𐓧𐓨𐓩𐓪𐓫𐓬𐓭𐓮𐓯𐓰𐓱𐓲𐓳𐓴𐓵𐓶𐓷𐓸𐓹𐓺𐓻𐳀𐳁𐳂𐳃𐳄𐳅𐳆𐳇𐳈𐳉𐳊𐳋𐳌𐳍𐳎𐳏𐳐𐳑𐳒𐳓𐳔𐳕𐳖𐳗𐳘𐳙𐳚𐳛𐳜𐳝𐳞𐳟𐳠𐳡𐳢𐳣𐳤𐳥𐳦𐳧𐳨𐳩𐳪𐳫𐳬𐳭𐳮𐳯𐳰𐳱𐳲𑣀𑣁𑣂𑣃𑣄𑣅𑣆𑣇𑣈𑣉𑣊𑣋𑣌𑣍𑣎𑣏𑣐𑣑𑣒𑣓𑣔𑣕𑣖𑣗𑣘𑣙𑣚𑣛𑣜𑣝𑣞𑣟abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefgijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzacdgjknopqstuvwxyzabcdfhijklmnpqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabdefgjklmnopqstuvwxyabcdefghijklmnopqrstuvwxyzabdefgijklmostuvwxyabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzıȷαβγδεζηθικλμνξοπρθστυφχψω\x{2207}αβγδεζηθικλμνξοπρσστυφχψω\x{2202}εθκφρπαβγδεζηθικλμνξοπρθστυφχψω\x{2207}αβγδεζηθικλμνξοπρσστυφχψω\x{2202}εθκφρπαβγδεζηθικλμνξοπρθστυφχψω\x{2207}αβγδεζηθικλμνξοπρσστυφχψω\x{2202}εθκφρπαβγδεζηθικλμνξοπρθστυφχψω\x{2207}αβγδεζηθικλμνξοπρσστυφχψω\x{2202}εθκφρπαβγδεζηθικλμνξοπρθστυφχψω\x{2207}αβγδεζηθικλμνξοπρσστυφχψω\x{2202}εθκφρπϝϝ01234567890123456789012345678901234567890123456789𞤢𞤣𞤤𞤥𞤦𞤧𞤨𞤩𞤪𞤫𞤬𞤭𞤮𞤯𞤰𞤱𞤲𞤳𞤴𞤵𞤶𞤷𞤸𞤹𞤺𞤻𞤼𞤽𞤾𞤿𞥀𞥁𞥂𞥃ابجدوزحطيكلمنسعفصقرشتثخذضظغٮںڡٯبجهحيكلمنسعفصقشتثخضغجحيلنسعصقشخضغںٯبجهحطيكمنسعفصقشتثخضظغٮڡابجدهوزحطيلمنسعفصقرشتثخذضظغبجدوزحطيلمنسعفصقرشتثخذضظغcrabcdefghijklmnopqrstuvwxyzサ手字双デ二多解天交映無料前後再新初終生販声吹演投捕一三遊左中右指走打禁空合満有月申割営配得可丽丸乁𠄢你侮侻倂偺備僧像㒞𠘺免兔兤具𠔜㒹內再𠕋冗冤仌冬况𩇟凵刃㓟刻剆割剷㔕勇勉勤勺包匆北卉卑博即卽卿卿卿𠨬灰及叟𠭣叫叱吆咞吸呈周咢哶唐啓啣善善喙喫喳嗂圖嘆圗噑噴切壮城埴堍型堲報墬𡓤売壷夆多夢奢𡚨𡛪姬娛娧姘婦㛮嬈嬾嬾𡧈寃寘寧寳𡬘寿将尢㞁屠屮峀岍𡷤嵃𡷦嵮嵫嵼巡巢㠯巽帨帽幩㡢𢆃㡼庰庳庶廊𪎒廾𢌱𢌱舁弢弢㣇𣊸𦇚形彫㣣徚忍志忹悁㤺㤜悔𢛔惇慈慌慎慌慺憎憲憤憯懞懲懶成戛扝抱拔捐𢬌挽拼捨掃揤𢯱搢揅掩㨮摩摾撝摷㩬敏敬𣀊旣書晉㬙暑㬈㫤冒冕最暜肭䏙朗望朡杞杓𣏃㭉柺枅桒梅𣑭梎栟椔㮝楂榣槪檨𣚣櫛㰘次𣢧歔㱎歲殟殺殻𣪍𡴋𣫺汎𣲼沿泍汧洖派海流浩浸涅𣴞洴港湮㴳滋滇𣻑淹潮𣽞𣾎濆瀹瀞瀛㶖灊災灷炭𠔥煅𤉣熜爨爵牐𤘈犀犕𤜵𤠔獺王㺬玥㺸㺸瑇瑜瑱璅瓊㼛甤𤰶甾𤲒異𢆟瘐𤾡𤾸𥁄㿼䀈直𥃳𥃲𥄙𥄳眞真真睊䀹瞋䁆䂖𥐝硎碌磌䃣𥘦祖𥚚𥛅福秫䄯穀穊穏𥥼𥪧𥪧䈂𥮫篆築䈧𥲀糒䊠糨糣紀𥾆絣䌁緇縂繅䌴𦈨𦉇䍙𦋙罺𦌾羕翺者𦓚𦔣聠𦖨聰𣍟䏕育脃䐋脾媵𦞧𦞵𣎓𣎜舁舄辞䑫芑芋芝劳花芳芽苦𦬼若茝荣莭茣莽菧著荓菊菌菜𦰶𦵫𦳕䔫蓱蓳蔖𧏊蕤𦼬䕝䕡𦾱𧃒䕫虐虜虧虩蚩蚈蜎蛢蝹蜨蝫螆蟡蠁䗹衠衣𧙧裗裞䘵裺㒻𧢮𧥦䚾䛇誠諭變豕𧲨貫賁贛起𧼯𠠄跋趼跰𠣞軔輸𨗒𨗭邔郱鄑𨜮鄛鈸鋗鋘鉼鏹鐕𨯺開䦕閷𨵷䧦雃嶲霣𩅅𩈚䩮䩶韠𩐊䪲𩒖頋頋頩𩖶飢䬳餩馧駂駾䯎𩬰鬒鱀鳽䳎䳭鵧𪃎䳸𪄅𪈎𪊑麻䵖黹黾鼅鼏鼖鼻𪘀/;
diff --git a/t/uts46_to_ascii-trans.t b/t/uts46_to_ascii-trans.t
index dfd20eb..d76da1c 100644
--- a/t/uts46_to_ascii-trans.t
+++ b/t/uts46_to_ascii-trans.t
@@ -918,10 +918,10 @@ is(eval{uts46_to_ascii("xn--osd925cvyn.xn--73g3065g", %p)},	undef,	"to_ascii\(\'
 is(eval{uts46_to_ascii("xn--pnd26a55x.xn--f3g7465g", %p)},	undef,	"to_ascii\(\'xn\-\-pnd26a55x\.xn\-\-f3g7465g\'\)\ throws\ error\ V5\ V6\ \[data\/IdnaTest\.txt\:1157\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("\x{1BF3}ⴑ\x{115F}.𑄴ⅎ", %p)},	undef,	"to_ascii\(\'\\u1BF3ⴑ\\u115F.𑄴ⅎ\'\)\ throws\ error\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:1158\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("\x{1BF3}Ⴑ\x{115F}.𑄴ⅎ", %p)},	undef,	"to_ascii\(\'\\u1BF3Ⴑ\\u115F.𑄴ⅎ\'\)\ throws\ error\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:1159\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("𜉆。Ⴃ𐴣𐹹똯", %p)},	undef,	"to_ascii\(\'\?\。Ⴃ\?𐹹똯\'\)\ throws\ error\ B5\ P1\ V6\ \[data\/IdnaTest\.txt\:1160\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("𜉆。Ⴃ𐴣𐹹똯", %p)},	undef,	"to_ascii\(\'\?\。Ⴃ\?𐹹똯\'\)\ throws\ error\ B5\ P1\ V6\ \[data\/IdnaTest\.txt\:1161\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("𜉆。ⴃ𐴣𐹹똯", %p)},	undef,	"to_ascii\(\'\?\。ⴃ\?𐹹똯\'\)\ throws\ error\ B5\ P1\ V6\ \[data\/IdnaTest\.txt\:1162\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("𜉆。ⴃ𐴣𐹹똯", %p)},	undef,	"to_ascii\(\'\?\。ⴃ\?𐹹똯\'\)\ throws\ error\ B5\ P1\ V6\ \[data\/IdnaTest\.txt\:1163\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("𜉆。Ⴃ𐴣𐹹똯", %p)},	undef,	"to_ascii\(\'\?\。Ⴃ𐴣𐹹똯\'\)\ throws\ error\ B5\ P1\ V6\ \[data\/IdnaTest\.txt\:1160\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("𜉆。Ⴃ𐴣𐹹똯", %p)},	undef,	"to_ascii\(\'\?\。Ⴃ𐴣𐹹똯\'\)\ throws\ error\ B5\ P1\ V6\ \[data\/IdnaTest\.txt\:1161\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("𜉆。ⴃ𐴣𐹹똯", %p)},	undef,	"to_ascii\(\'\?\。ⴃ𐴣𐹹똯\'\)\ throws\ error\ B5\ P1\ V6\ \[data\/IdnaTest\.txt\:1162\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("𜉆。ⴃ𐴣𐹹똯", %p)},	undef,	"to_ascii\(\'\?\。ⴃ𐴣𐹹똯\'\)\ throws\ error\ B5\ P1\ V6\ \[data\/IdnaTest\.txt\:1163\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--187g.xn--ukjy205b8rscdeb", %p)},	undef,	"to_ascii\(\'xn\-\-187g\.xn\-\-ukjy205b8rscdeb\'\)\ throws\ error\ B5\ V6\ \[data\/IdnaTest\.txt\:1164\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--187g.xn--bnd4785f8r8bdeb", %p)},	undef,	"to_ascii\(\'xn\-\-187g\.xn\-\-bnd4785f8r8bdeb\'\)\ throws\ error\ B5\ V6\ \[data\/IdnaTest\.txt\:1165\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("𐫀。⳻󠙾󠄷\x{3164}", %p)},	undef,	"to_ascii\(\'𐫀。⳻\?\󠄷\\u3164\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:1166\]") or ($@ and diag($@));
@@ -1088,12 +1088,12 @@ is(eval{uts46_to_ascii("xn--tlvq3513e.xn--hib9228d", %p)},	undef,	"to_ascii\(\'x
 is(eval{uts46_to_ascii("󠄚≯ꡢ。\x{0891}\x{1DFF}", %p)},	undef,	"to_ascii\(\'\󠄚\≯ꡢ\。\\u0891\\u1DFF\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:1381\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("󠄚>\x{0338}ꡢ。\x{0891}\x{1DFF}", %p)},	undef,	"to_ascii\(\'\󠄚\>\\u0338ꡢ\。\\u0891\\u1DFF\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:1382\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--hdh7783c.xn--9xb680i", %p)},	undef,	"to_ascii\(\'xn\-\-hdh7783c\.xn\-\-9xb680i\'\)\ throws\ error\ B1\ V6\ \[data\/IdnaTest\.txt\:1383\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("\x{FDC3}𮁱\x{0B4D}𐨿.󐧤Ⴗ", %p)},	undef,	"to_ascii\(\'\\uFDC3\?\\u0B4D𐨿\.\?Ⴗ\'\)\ throws\ error\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:1384\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("\x{0643}\x{0645}\x{0645}𮁱\x{0B4D}𐨿.󐧤Ⴗ", %p)},	undef,	"to_ascii\(\'\\u0643\\u0645\\u0645\?\\u0B4D𐨿\.\?Ⴗ\'\)\ throws\ error\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:1385\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("\x{0643}\x{0645}\x{0645}𮁱\x{0B4D}𐨿.󐧤ⴗ", %p)},	undef,	"to_ascii\(\'\\u0643\\u0645\\u0645\?\\u0B4D𐨿\.\?ⴗ\'\)\ throws\ error\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:1386\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("\x{FDC3}𮁱\x{0B4D}𐨿.󐧤Ⴗ", %p)},	undef,	"to_ascii\(\'\\uFDC3𮁱\\u0B4D𐨿\.\?Ⴗ\'\)\ throws\ error\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:1384\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("\x{0643}\x{0645}\x{0645}𮁱\x{0B4D}𐨿.󐧤Ⴗ", %p)},	undef,	"to_ascii\(\'\\u0643\\u0645\\u0645𮁱\\u0B4D𐨿\.\?Ⴗ\'\)\ throws\ error\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:1385\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("\x{0643}\x{0645}\x{0645}𮁱\x{0B4D}𐨿.󐧤ⴗ", %p)},	undef,	"to_ascii\(\'\\u0643\\u0645\\u0645𮁱\\u0B4D𐨿\.\?ⴗ\'\)\ throws\ error\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:1386\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--fhbea662czx68a2tju.xn--fljz2846h", %p)},	undef,	"to_ascii\(\'xn\-\-fhbea662czx68a2tju\.xn\-\-fljz2846h\'\)\ throws\ error\ B2\ B3\ V6\ \[data\/IdnaTest\.txt\:1387\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--fhbea662czx68a2tju.xn--vnd55511o", %p)},	undef,	"to_ascii\(\'xn\-\-fhbea662czx68a2tju\.xn\-\-vnd55511o\'\)\ throws\ error\ B2\ B3\ V6\ \[data\/IdnaTest\.txt\:1388\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("\x{FDC3}𮁱\x{0B4D}𐨿.󐧤ⴗ", %p)},	undef,	"to_ascii\(\'\\uFDC3\?\\u0B4D𐨿\.\?ⴗ\'\)\ throws\ error\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:1389\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("\x{FDC3}𮁱\x{0B4D}𐨿.󐧤ⴗ", %p)},	undef,	"to_ascii\(\'\\uFDC3𮁱\\u0B4D𐨿\.\?ⴗ\'\)\ throws\ error\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:1389\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("𞀨。\x{1B44}򡛨𞎇", %p)},	undef,	"to_ascii\(\'𞀨。\\u1B44\?\?\'\)\ throws\ error\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:1390\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("𞀨。\x{1B44}򡛨𞎇", %p)},	undef,	"to_ascii\(\'𞀨\。\\u1B44\?\?\'\)\ throws\ error\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:1391\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--mi4h.xn--1uf6843smg20c", %p)},	undef,	"to_ascii\(\'xn\-\-mi4h\.xn\-\-1uf6843smg20c\'\)\ throws\ error\ V5\ V6\ \[data\/IdnaTest\.txt\:1392\]") or ($@ and diag($@));
@@ -1218,8 +1218,8 @@ is(eval{uts46_to_ascii("xn--f-tgn9761i.xn--7656e.xn--fqb4175k", %p)},	undef,	"to
 is(eval{uts46_to_ascii("\x{200D}f𑓂。󠺨︒\x{077E}𐹢", %p)},	undef,	"to_ascii\(\'\\u200Df𑓂\。\?︒\\u077E𐹢\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:1538\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--f-kq9i.xn--fqb1637j8hky9452a", %p)},	undef,	"to_ascii\(\'xn\-\-f\-kq9i\.xn\-\-fqb1637j8hky9452a\'\)\ throws\ error\ B1\ V6\ \[data\/IdnaTest\.txt\:1540\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--f-tgn9761i.xn--fqb1637j8hky9452a", %p)},	undef,	"to_ascii\(\'xn\-\-f\-tgn9761i\.xn\-\-fqb1637j8hky9452a\'\)\ throws\ error\ B1\ C2\ V6\ \[data\/IdnaTest\.txt\:1541\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("\x{0845}🄇𐼗︒。𐹻𑜫", %p)},	undef,	"to_ascii\(\'\\u0845🄇\?︒。𐹻𑜫\'\)\ throws\ error\ B1\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:1542\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("\x{0845}6,𐼗。。𐹻𑜫", %p)},	undef,	"to_ascii\(\'\\u08456\,\?\。\。𐹻𑜫\'\)\ throws\ error\ B1\ P1\ V6\ A4_2\ \[data\/IdnaTest\.txt\:1543\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("\x{0845}🄇𐼗︒。𐹻𑜫", %p)},	undef,	"to_ascii\(\'\\u0845🄇𐼗︒。𐹻𑜫\'\)\ throws\ error\ B1\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:1542\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("\x{0845}6,𐼗。。𐹻𑜫", %p)},	undef,	"to_ascii\(\'\\u08456\,𐼗\。\。𐹻𑜫\'\)\ throws\ error\ B1\ P1\ V6\ A4_2\ \[data\/IdnaTest\.txt\:1543\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--6,-r4e4420y..xn--zo0di2m", %p)},	undef,	"to_ascii\(\'xn\-\-6\,\-r4e4420y\.\.xn\-\-zo0di2m\'\)\ throws\ error\ B1\ P1\ V6\ A4_2\ \[data\/IdnaTest\.txt\:1544\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--3vb4696jpxkjh7s.xn--zo0di2m", %p)},	undef,	"to_ascii\(\'xn\-\-3vb4696jpxkjh7s\.xn\-\-zo0di2m\'\)\ throws\ error\ B1\ B3\ V6\ \[data\/IdnaTest\.txt\:1545\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("𐹈.\x{1DC0}𑈱𐦭", %p)},	undef,	"to_ascii\(\'\?\.\\u1DC0𑈱𐦭\'\)\ throws\ error\ B1\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:1546\]") or ($@ and diag($@));
@@ -1312,8 +1312,8 @@ is(eval{uts46_to_ascii("𵋅。Ss𬵩\x{200D}", %p)},	undef,	"to_ascii\(\'\?\。
 is(eval{uts46_to_ascii("xn--ey1p.xn--ss-eq36b", %p)},	undef,	"to_ascii\(\'xn\-\-ey1p\.xn\-\-ss\-eq36b\'\)\ throws\ error\ V6\ \[data\/IdnaTest\.txt\:1663\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--ey1p.xn--ss-n1tx0508a", %p)},	undef,	"to_ascii\(\'xn\-\-ey1p\.xn\-\-ss\-n1tx0508a\'\)\ throws\ error\ C2\ V6\ \[data\/IdnaTest\.txt\:1664\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--ey1p.xn--zca870nz438b", %p)},	undef,	"to_ascii\(\'xn\-\-ey1p\.xn\-\-zca870nz438b\'\)\ throws\ error\ C2\ V6\ \[data\/IdnaTest\.txt\:1665\]") or ($@ and diag($@));
-SKIP: { skip sprintf("requires Unicode® v10.0 (perl v5.28.0) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v10.0; is(eval{uts46_to_ascii("\x{200C}𭉝。\x{07F1}\x{0301}𞹻", %p)},	undef,	"to_ascii\(\'\\u200C\?\。\\u07F1\\u0301𞹻\'\)\ throws\ error\ B1\ V5\ \[data\/IdnaTest\.txt\:1666\]") or ($@ and diag($@)); }
-SKIP: { skip sprintf("requires Unicode® v10.0 (perl v5.28.0) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v10.0; is(eval{uts46_to_ascii("\x{200C}𭉝。\x{07F1}\x{0301}\x{063A}", %p)},	undef,	"to_ascii\(\'\\u200C\?\。\\u07F1\\u0301\\u063A\'\)\ throws\ error\ B1\ V5\ \[data\/IdnaTest\.txt\:1668\]") or ($@ and diag($@)); }
+SKIP: { skip sprintf("requires Unicode® v10.0 (perl v5.28.0) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v10.0; is(eval{uts46_to_ascii("\x{200C}𭉝。\x{07F1}\x{0301}𞹻", %p)},	undef,	"to_ascii\(\'\\u200C𭉝\。\\u07F1\\u0301𞹻\'\)\ throws\ error\ B1\ V5\ \[data\/IdnaTest\.txt\:1666\]") or ($@ and diag($@)); }
+SKIP: { skip sprintf("requires Unicode® v10.0 (perl v5.28.0) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v10.0; is(eval{uts46_to_ascii("\x{200C}𭉝。\x{07F1}\x{0301}\x{063A}", %p)},	undef,	"to_ascii\(\'\\u200C𭉝\。\\u07F1\\u0301\\u063A\'\)\ throws\ error\ B1\ V5\ \[data\/IdnaTest\.txt\:1668\]") or ($@ and diag($@)); }
 is(eval{uts46_to_ascii("xn--634m.xn--lsa46nuub", %p)},	undef,	"to_ascii\(\'xn\-\-634m\.xn\-\-lsa46nuub\'\)\ throws\ error\ B1\ V5\ \[data\/IdnaTest\.txt\:1670\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--0ugy003y.xn--lsa46nuub", %p)},	undef,	"to_ascii\(\'xn\-\-0ugy003y\.xn\-\-lsa46nuub\'\)\ throws\ error\ B1\ C1\ V5\ \[data\/IdnaTest\.txt\:1671\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("𞼌\x{200C}𑈶。𐹡", %p)},	undef,	"to_ascii\(\'\?\\u200C𑈶\。𐹡\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:1672\]") or ($@ and diag($@));
@@ -1585,20 +1585,20 @@ is(eval{uts46_to_ascii("𐶭⾆。\x{200C}𑚶򟱃𞰘", %p)},	undef,	"to_ascii\
 is(eval{uts46_to_ascii("𐶭舌。\x{200C}𑚶򟱃𞰘", %p)},	undef,	"to_ascii\(\'\?舌\。\\u200C𑚶\?\?\'\)\ throws\ error\ B2\ B3\ B5\ B6\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:1996\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--tc1ao37z.xn--6e2dw557azds2d", %p)},	undef,	"to_ascii\(\'xn\-\-tc1ao37z\.xn\-\-6e2dw557azds2d\'\)\ throws\ error\ B2\ B3\ B5\ B6\ V5\ V6\ \[data\/IdnaTest\.txt\:1998\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--tc1ao37z.xn--0ugx728gi1nfwqz2e", %p)},	undef,	"to_ascii\(\'xn\-\-tc1ao37z\.xn\-\-0ugx728gi1nfwqz2e\'\)\ throws\ error\ B1\ B2\ B3\ C1\ V6\ \[data\/IdnaTest\.txt\:1999\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("\x{200C}Ⴠ-.𝟷ς𞴺ς", %p)},	undef,	"to_ascii\(\'\\u200CჀ\-\.𝟷ς\?ς\'\)\ throws\ error\ B1\ B6\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2000\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("\x{200C}Ⴠ-.1ς𞴺ς", %p)},	undef,	"to_ascii\(\'\\u200CჀ\-\.1ς\?ς\'\)\ throws\ error\ B1\ B6\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2002\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("\x{200C}ⴠ-.1ς𞴺ς", %p)},	undef,	"to_ascii\(\'\\u200Cⴠ\-\.1ς\?ς\'\)\ throws\ error\ B1\ B6\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2004\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("\x{200C}Ⴠ-.1Σ𞴺Σ", %p)},	undef,	"to_ascii\(\'\\u200CჀ\-\.1Σ\?Σ\'\)\ throws\ error\ B1\ B6\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2006\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("\x{200C}ⴠ-.1σ𞴺σ", %p)},	undef,	"to_ascii\(\'\\u200Cⴠ\-\.1σ\?σ\'\)\ throws\ error\ B1\ B6\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2008\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("\x{200C}Ⴠ-.𝟷ς𞴺ς", %p)},	undef,	"to_ascii\(\'\\u200CჀ\-\.𝟷ς𞴺ς\'\)\ throws\ error\ B1\ B6\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2000\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("\x{200C}Ⴠ-.1ς𞴺ς", %p)},	undef,	"to_ascii\(\'\\u200CჀ\-\.1ς𞴺ς\'\)\ throws\ error\ B1\ B6\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2002\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("\x{200C}ⴠ-.1ς𞴺ς", %p)},	undef,	"to_ascii\(\'\\u200Cⴠ\-\.1ς𞴺ς\'\)\ throws\ error\ B1\ B6\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2004\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("\x{200C}Ⴠ-.1Σ𞴺Σ", %p)},	undef,	"to_ascii\(\'\\u200CჀ\-\.1Σ𞴺Σ\'\)\ throws\ error\ B1\ B6\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2006\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("\x{200C}ⴠ-.1σ𞴺σ", %p)},	undef,	"to_ascii\(\'\\u200Cⴠ\-\.1σ𞴺σ\'\)\ throws\ error\ B1\ B6\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2008\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn----2ws.xn--1-0mba52321c", %p)},	undef,	"to_ascii\(\'xn\-\-\-\-2ws\.xn\-\-1\-0mba52321c\'\)\ throws\ error\ B1\ B6\ V3\ V6\ \[data\/IdnaTest\.txt\:2010\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn----rgn530d.xn--1-0mba52321c", %p)},	undef,	"to_ascii\(\'xn\-\-\-\-rgn530d\.xn\-\-1\-0mba52321c\'\)\ throws\ error\ B1\ C1\ V3\ V6\ \[data\/IdnaTest\.txt\:2011\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn----z1g.xn--1-0mba52321c", %p)},	undef,	"to_ascii\(\'xn\-\-\-\-z1g\.xn\-\-1\-0mba52321c\'\)\ throws\ error\ B1\ B6\ V3\ V6\ \[data\/IdnaTest\.txt\:2012\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn----z1g168i.xn--1-0mba52321c", %p)},	undef,	"to_ascii\(\'xn\-\-\-\-z1g168i\.xn\-\-1\-0mba52321c\'\)\ throws\ error\ B1\ C1\ V3\ V6\ \[data\/IdnaTest\.txt\:2013\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn----rgn530d.xn--1-ymba92321c", %p)},	undef,	"to_ascii\(\'xn\-\-\-\-rgn530d\.xn\-\-1\-ymba92321c\'\)\ throws\ error\ B1\ C1\ V3\ V6\ \[data\/IdnaTest\.txt\:2014\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn----z1g168i.xn--1-ymba92321c", %p)},	undef,	"to_ascii\(\'xn\-\-\-\-z1g168i\.xn\-\-1\-ymba92321c\'\)\ throws\ error\ B1\ C1\ V3\ V6\ \[data\/IdnaTest\.txt\:2015\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("\x{200C}ⴠ-.𝟷ς𞴺ς", %p)},	undef,	"to_ascii\(\'\\u200Cⴠ\-\.𝟷ς\?ς\'\)\ throws\ error\ B1\ B6\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2016\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("\x{200C}Ⴠ-.𝟷Σ𞴺Σ", %p)},	undef,	"to_ascii\(\'\\u200CჀ\-\.𝟷Σ\?Σ\'\)\ throws\ error\ B1\ B6\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2018\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("\x{200C}ⴠ-.𝟷σ𞴺σ", %p)},	undef,	"to_ascii\(\'\\u200Cⴠ\-\.𝟷σ\?σ\'\)\ throws\ error\ B1\ B6\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2020\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("\x{200C}ⴠ-.𝟷ς𞴺ς", %p)},	undef,	"to_ascii\(\'\\u200Cⴠ\-\.𝟷ς𞴺ς\'\)\ throws\ error\ B1\ B6\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2016\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("\x{200C}Ⴠ-.𝟷Σ𞴺Σ", %p)},	undef,	"to_ascii\(\'\\u200CჀ\-\.𝟷Σ𞴺Σ\'\)\ throws\ error\ B1\ B6\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2018\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("\x{200C}ⴠ-.𝟷σ𞴺σ", %p)},	undef,	"to_ascii\(\'\\u200Cⴠ\-\.𝟷σ𞴺σ\'\)\ throws\ error\ B1\ B6\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2020\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("𑲘󠄒𓑡。𝟪Ⴜ", %p)},	undef,	"to_ascii\(\'𑲘\󠄒\?。𝟪Ⴜ\'\)\ throws\ error\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:2022\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("𑲘󠄒𓑡。8Ⴜ", %p)},	undef,	"to_ascii\(\'𑲘\󠄒\?\。8Ⴜ\'\)\ throws\ error\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:2023\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("𑲘󠄒𓑡。8ⴜ", %p)},	undef,	"to_ascii\(\'𑲘\󠄒\?\。8ⴜ\'\)\ throws\ error\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:2024\]") or ($@ and diag($@));
@@ -1952,10 +1952,10 @@ is(eval{uts46_to_ascii("𐹰.\x{0600}", %p)},	undef,	"to_ascii\(\'𐹰\.\\u0600\
 is(eval{uts46_to_ascii("xn--oo0d.xn--ifb", %p)},	undef,	"to_ascii\(\'xn\-\-oo0d\.xn\-\-ifb\'\)\ throws\ error\ B1\ V6\ \[data\/IdnaTest\.txt\:2464\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("-\x{08A8}.ð± –", %p)},	undef,	"to_ascii\(\'\-\\u08A8\.\?\'\)\ throws\ error\ B1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2465\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn----mod.xn--5o9n", %p)},	undef,	"to_ascii\(\'xn\-\-\-\-mod\.xn\-\-5o9n\'\)\ throws\ error\ B1\ V3\ V6\ \[data\/IdnaTest\.txt\:2466\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("≯𞱸󠇀。誆⒈", %p)},	undef,	"to_ascii\(\'\≯\?\󠇀\。誆⒈\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:2467\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii(">\x{0338}𞱸󠇀。誆⒈", %p)},	undef,	"to_ascii\(\'\>\\u0338\?\󠇀\。誆⒈\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:2468\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("≯𞱸󠇀。誆1.", %p)},	undef,	"to_ascii\(\'\≯\?\󠇀\。誆1\.\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:2469\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii(">\x{0338}𞱸󠇀。誆1.", %p)},	undef,	"to_ascii\(\'\>\\u0338\?\󠇀\。誆1\.\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:2470\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("≯𞱸󠇀。誆⒈", %p)},	undef,	"to_ascii\(\'\≯𞱸\󠇀\。誆⒈\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:2467\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii(">\x{0338}𞱸󠇀。誆⒈", %p)},	undef,	"to_ascii\(\'\>\\u0338𞱸\󠇀\。誆⒈\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:2468\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("≯𞱸󠇀。誆1.", %p)},	undef,	"to_ascii\(\'\≯𞱸\󠇀\。誆1\.\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:2469\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii(">\x{0338}𞱸󠇀。誆1.", %p)},	undef,	"to_ascii\(\'\>\\u0338𞱸\󠇀\。誆1\.\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:2470\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--hdh7151p.xn--1-dy1d.", %p)},	undef,	"to_ascii\(\'xn\-\-hdh7151p\.xn\-\-1\-dy1d\.\'\)\ throws\ error\ B1\ V6\ \[data\/IdnaTest\.txt\:2471\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--hdh7151p.xn--tsh1248a", %p)},	undef,	"to_ascii\(\'xn\-\-hdh7151p\.xn\-\-tsh1248a\'\)\ throws\ error\ B1\ V6\ \[data\/IdnaTest\.txt\:2472\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("\x{0616}𞥙䐊\x{0650}.︒\x{0645}↺\x{069C}", %p)},	undef,	"to_ascii\(\'\\u0616𞥙䐊\\u0650.︒\\u0645\↺\\u069C\'\)\ throws\ error\ B1\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:2473\]") or ($@ and diag($@));
@@ -2038,8 +2038,8 @@ is(eval{uts46_to_ascii("xn--1t56e.xn--2nd141ghl2a", %p)},	undef,	"to_ascii\(\'xn
 is(eval{uts46_to_ascii("xn--1t56e.xn--2nd159e9vb743e", %p)},	undef,	"to_ascii\(\'xn\-\-1t56e\.xn\-\-2nd159e9vb743e\'\)\ throws\ error\ C2\ V6\ \[data\/IdnaTest\.txt\:2567\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("󠳛.\x{200D}䤫=\x{0338}ⴞ", %p)},	undef,	"to_ascii\(\'\?.\\u200D䤫\=\\u0338ⴞ\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:2568\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("󠳛.\x{200D}䤫≠ⴞ", %p)},	undef,	"to_ascii\(\'\?.\\u200D䤫\≠ⴞ\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:2570\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("𐽘𑈵.𐹣🕥", %p)},	undef,	"to_ascii\(\'\?𑈵.𐹣🕥\'\)\ throws\ error\ B1\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:2572\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("𐽘𑈵.𐹣🕥", %p)},	undef,	"to_ascii\(\'\?𑈵\.𐹣🕥\'\)\ throws\ error\ B1\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:2573\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("𐽘𑈵.𐹣🕥", %p)},	undef,	"to_ascii\(\'𐽘𑈵.𐹣🕥\'\)\ throws\ error\ B1\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:2572\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("𐽘𑈵.𐹣🕥", %p)},	undef,	"to_ascii\(\'𐽘𑈵\.𐹣🕥\'\)\ throws\ error\ B1\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:2573\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--bv0d02c.xn--bo0dq650b", %p)},	undef,	"to_ascii\(\'xn\-\-bv0d02c\.xn\-\-bo0dq650b\'\)\ throws\ error\ B1\ B2\ B3\ V6\ \[data\/IdnaTest\.txt\:2574\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("⒊⒈𑁄。9", %p)},	undef,	"to_ascii\(\'⒊⒈𑁄\。9\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:2575\]") or ($@ and diag($@));
 SKIP: { skip sprintf("requires Unicode® v6.0 (perl v5.13.7) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v6.0; is(eval{uts46_to_ascii("3.1.𑁄。9", %p)},	undef,	"to_ascii\(\'3\.1\.𑁄\。9\'\)\ throws\ error\ V5\ \[data\/IdnaTest\.txt\:2576\]") or ($@ and diag($@)); }
@@ -2108,10 +2108,10 @@ SKIP: { skip sprintf("requires Unicode® v7.0 (perl v5.21.1) or higher, only v%v
 SKIP: { skip sprintf("requires Unicode® v7.0 (perl v5.21.1) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v7.0; is(eval{uts46_to_ascii("𐋵。\x{0643}\x{0645}", %p)},	undef,	"to_ascii\(\'𐋵\。\\u0643\\u0645\'\)\ throws\ error\ B1\ \[data\/IdnaTest\.txt\:2655\]") or ($@ and diag($@)); }
 is(eval{uts46_to_ascii("xn--p97c.xn--fhbe", %p)},	undef,	"to_ascii\(\'xn\-\-p97c\.xn\-\-fhbe\'\)\ throws\ error\ B1\ \[data\/IdnaTest\.txt\:2656\]") or ($@ and diag($@));
 SKIP: { skip sprintf("requires Unicode® v7.0 (perl v5.21.1) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v7.0; is(eval{uts46_to_ascii("𐋵.\x{0643}\x{0645}", %p)},	undef,	"to_ascii\(\'𐋵\.\\u0643\\u0645\'\)\ throws\ error\ B1\ \[data\/IdnaTest\.txt\:2657\]") or ($@ and diag($@)); }
-is(eval{uts46_to_ascii("≮𝅶.񱲁\x{AAEC}⹈󰥭", %p)},	undef,	"to_ascii\(\'\≮\?.\?\\uAAEC\?\?\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:2658\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("<\x{0338}𝅶.񱲁\x{AAEC}⹈󰥭", %p)},	undef,	"to_ascii\(\'\<\\u0338\?.\?\\uAAEC\?\?\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:2659\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("≮𝅶.񱲁\x{AAEC}⹈󰥭", %p)},	undef,	"to_ascii\(\'\≮\?\.\?\\uAAEC\?\?\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:2660\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("<\x{0338}𝅶.񱲁\x{AAEC}⹈󰥭", %p)},	undef,	"to_ascii\(\'\<\\u0338\?\.\?\\uAAEC\?\?\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:2661\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("≮𝅶.񱲁\x{AAEC}⹈󰥭", %p)},	undef,	"to_ascii\(\'\≮\?.\?\\uAAEC\⹈\?\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:2658\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("<\x{0338}𝅶.񱲁\x{AAEC}⹈󰥭", %p)},	undef,	"to_ascii\(\'\<\\u0338\?.\?\\uAAEC\⹈\?\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:2659\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("≮𝅶.񱲁\x{AAEC}⹈󰥭", %p)},	undef,	"to_ascii\(\'\≮\?\.\?\\uAAEC\⹈\?\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:2660\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("<\x{0338}𝅶.񱲁\x{AAEC}⹈󰥭", %p)},	undef,	"to_ascii\(\'\<\\u0338\?\.\?\\uAAEC\⹈\?\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:2661\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--gdh0880o.xn--4tjx101bsg00ds9pyc", %p)},	undef,	"to_ascii\(\'xn\-\-gdh0880o\.xn\-\-4tjx101bsg00ds9pyc\'\)\ throws\ error\ V6\ \[data\/IdnaTest\.txt\:2662\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("\x{2DF0}\x{0358}ᢕ.\x{0361}𐹷󠴍", %p)},	undef,	"to_ascii\(\'\\u2DF0\\u0358ᢕ.\\u0361𐹷\?\'\)\ throws\ error\ B1\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:2663\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("\x{2DF0}\x{0358}ᢕ.\x{0361}𐹷󠴍", %p)},	undef,	"to_ascii\(\'\\u2DF0\\u0358ᢕ\.\\u0361𐹷\?\'\)\ throws\ error\ B1\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:2664\]") or ($@ and diag($@));
@@ -2221,8 +2221,8 @@ is(eval{uts46_to_ascii("ᡙ\x{200C}。≯𐋲≠", %p)},	undef,	"to_ascii\(\'ᡙ
 is(eval{uts46_to_ascii("ᡙ\x{200C}。>\x{0338}𐋲=\x{0338}", %p)},	undef,	"to_ascii\(\'ᡙ\\u200C\。\>\\u0338𐋲\=\\u0338\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:2802\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--p8e.xn--1ch3a7084l", %p)},	undef,	"to_ascii\(\'xn\-\-p8e\.xn\-\-1ch3a7084l\'\)\ throws\ error\ V6\ \[data\/IdnaTest\.txt\:2804\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--p8e650b.xn--1ch3a7084l", %p)},	undef,	"to_ascii\(\'xn\-\-p8e650b\.xn\-\-1ch3a7084l\'\)\ throws\ error\ C1\ V6\ \[data\/IdnaTest\.txt\:2805\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("𐹧𞲄󠁭񆼩。\x{034E}🄀", %p)},	undef,	"to_ascii\(\'𐹧\?\?\?\。\\u034E🄀\'\)\ throws\ error\ B1\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:2806\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("𐹧𞲄󠁭񆼩。\x{034E}0.", %p)},	undef,	"to_ascii\(\'𐹧\?\?\?\。\\u034E0\.\'\)\ throws\ error\ B1\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:2807\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("𐹧𞲄󠁭񆼩。\x{034E}🄀", %p)},	undef,	"to_ascii\(\'𐹧𞲄\?\?\。\\u034E🄀\'\)\ throws\ error\ B1\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:2806\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("𐹧𞲄󠁭񆼩。\x{034E}0.", %p)},	undef,	"to_ascii\(\'𐹧𞲄\?\?\。\\u034E0\.\'\)\ throws\ error\ B1\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:2807\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--fo0dw409aq58qrn69d.xn--0-bgb.", %p)},	undef,	"to_ascii\(\'xn\-\-fo0dw409aq58qrn69d\.xn\-\-0\-bgb\.\'\)\ throws\ error\ B1\ V5\ V6\ \[data\/IdnaTest\.txt\:2808\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--fo0dw409aq58qrn69d.xn--sua6883w", %p)},	undef,	"to_ascii\(\'xn\-\-fo0dw409aq58qrn69d\.xn\-\-sua6883w\'\)\ throws\ error\ B1\ V5\ V6\ \[data\/IdnaTest\.txt\:2809\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("Ⴄ.\x{200D}\x{0721}󻣋ς", %p)},	undef,	"to_ascii\(\'Ⴄ.\\u200D\\u0721\?ς\'\)\ throws\ error\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:2810\]") or ($@ and diag($@));
@@ -3042,8 +3042,8 @@ is(eval{uts46_to_ascii("ቬ򔠼񁗶。𐨬8", %p)},	undef,	"to_ascii\(\'ቬ\?\?\
 is(eval{uts46_to_ascii("xn--d0d41273c887z.xn--8-ob5i", %p)},	undef,	"to_ascii\(\'xn\-\-d0d41273c887z\.xn\-\-8\-ob5i\'\)\ throws\ error\ V6\ \[data\/IdnaTest\.txt\:3833\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("𐱲。蔫\x{0766}", %p)},	undef,	"to_ascii\(\'\?\。蔫\\u0766\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:3834\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--389c.xn--qpb7055d", %p)},	undef,	"to_ascii\(\'xn\-\-389c\.xn\-\-qpb7055d\'\)\ throws\ error\ B5\ B6\ V6\ \[data\/IdnaTest\.txt\:3835\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("򒲧₃。ꡚ𛇑󠄳\x{0647}", %p)},	undef,	"to_ascii\(\'\?₃。ꡚ\?\󠄳\\u0647\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:3836\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("򒲧3。ꡚ𛇑󠄳\x{0647}", %p)},	undef,	"to_ascii\(\'\?3\。ꡚ\?\󠄳\\u0647\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:3837\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("򒲧₃。ꡚ𛇑󠄳\x{0647}", %p)},	undef,	"to_ascii\(\'\?₃。ꡚ𛇑\󠄳\\u0647\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:3836\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("򒲧3。ꡚ𛇑󠄳\x{0647}", %p)},	undef,	"to_ascii\(\'\?3\。ꡚ𛇑\󠄳\\u0647\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:3837\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--3-ep59g.xn--jhb5904fcp0h", %p)},	undef,	"to_ascii\(\'xn\-\-3\-ep59g\.xn\-\-jhb5904fcp0h\'\)\ throws\ error\ B5\ B6\ V6\ \[data\/IdnaTest\.txt\:3838\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("蓸\x{0642}≠.ß", %p)},	undef,	"to_ascii\(\'蓸\\u0642\≠\.ß\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:3839\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("蓸\x{0642}=\x{0338}.ß", %p)},	undef,	"to_ascii\(\'蓸\\u0642\=\\u0338\.ß\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:3841\]") or ($@ and diag($@));
@@ -4114,8 +4114,8 @@ is(eval{uts46_to_ascii("xn--xx5gy2741c.xn--re6hw266j", %p)},	undef,	"to_ascii\(\
 is(eval{uts46_to_ascii("𛜯󠊛.𞤑񏥾", %p)},	undef,	"to_ascii\(\'\?\?.𞤑\?\'\)\ throws\ error\ B2\ B3\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:5175\]") or ($@ and diag($@));
 SKIP: { skip sprintf("requires Unicode® v7.0 (perl v5.21.1) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v7.0; is(eval{uts46_to_ascii("\x{071C}𐫒\x{062E}.𐋲", %p)},	undef,	"to_ascii\(\'\\u071C𐫒\\u062E\.𐋲\'\)\ throws\ error\ B1\ \[data\/IdnaTest\.txt\:5176\]") or ($@ and diag($@)); }
 is(eval{uts46_to_ascii("xn--tgb98b8643d.xn--m97c", %p)},	undef,	"to_ascii\(\'xn\-\-tgb98b8643d\.xn\-\-m97c\'\)\ throws\ error\ B1\ \[data\/IdnaTest\.txt\:5177\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("𐼑𞤓\x{0637}\x{08E2}.\x{DF56}", %p)},	undef,	"to_ascii\(\'\?𞤓\\u0637\\u08E2\.\\uDF56\'\)\ throws\ error\ P1\ V6\ A3\ \[data\/IdnaTest\.txt\:5178\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("𐼑𞤵\x{0637}\x{08E2}.\x{DF56}", %p)},	undef,	"to_ascii\(\'\?𞤵\\u0637\\u08E2\.\\uDF56\'\)\ throws\ error\ P1\ V6\ A3\ \[data\/IdnaTest\.txt\:5179\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("𐼑𞤓\x{0637}\x{08E2}.\x{DF56}", %p)},	undef,	"to_ascii\(\'𐼑𞤓\\u0637\\u08E2\.\\uDF56\'\)\ throws\ error\ P1\ V6\ A3\ \[data\/IdnaTest\.txt\:5178\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("𐼑𞤵\x{0637}\x{08E2}.\x{DF56}", %p)},	undef,	"to_ascii\(\'𐼑𞤵\\u0637\\u08E2\.\\uDF56\'\)\ throws\ error\ P1\ V6\ A3\ \[data\/IdnaTest\.txt\:5179\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--2gb08k9w69agm0g.\x{DF56}", %p)},	undef,	"to_ascii\(\'xn\-\-2gb08k9w69agm0g\.\\uDF56\'\)\ throws\ error\ P1\ V6\ A3\ \[data\/IdnaTest\.txt\:5180\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("XN--2GB08K9W69AGM0G.\x{DF56}", %p)},	undef,	"to_ascii\(\'XN\-\-2GB08K9W69AGM0G\.\\uDF56\'\)\ throws\ error\ P1\ V6\ A3\ \[data\/IdnaTest\.txt\:5181\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("Xn--2Gb08k9w69agm0g.\x{DF56}", %p)},	undef,	"to_ascii\(\'Xn\-\-2Gb08k9w69agm0g\.\\uDF56\'\)\ throws\ error\ P1\ V6\ A3\ \[data\/IdnaTest\.txt\:5182\]") or ($@ and diag($@));
@@ -4473,7 +4473,7 @@ is(eval{uts46_to_ascii("xn--lgb32f2753cosb.xn--jkb91hlz1a", %p)},	undef,	"to_asc
 is(eval{uts46_to_ascii("xn--lgb32f2753cosb.xn--jkb91hlz1azih", %p)},	undef,	"to_ascii\(\'xn\-\-lgb32f2753cosb\.xn\-\-jkb91hlz1azih\'\)\ throws\ error\ B2\ B3\ V6\ \[data\/IdnaTest\.txt\:5642\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("\x{0816}.𐨕𚚕", %p)},	undef,	"to_ascii\(\'\\u0816\.𐨕\?\'\)\ throws\ error\ B1\ B2\ B3\ B6\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:5643\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--rub.xn--tr9c248x", %p)},	undef,	"to_ascii\(\'xn\-\-rub\.xn\-\-tr9c248x\'\)\ throws\ error\ B1\ B2\ B3\ B6\ V5\ V6\ \[data\/IdnaTest\.txt\:5644\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("--。𽊆\x{0767}𐽋𞠬", %p)},	undef,	"to_ascii\(\'\-\-\。\?\\u0767\?𞠬\'\)\ throws\ error\ B1\ B5\ B6\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:5645\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("--。𽊆\x{0767}𐽋𞠬", %p)},	undef,	"to_ascii\(\'\-\-\。\?\\u0767𐽋𞠬\'\)\ throws\ error\ B1\ B5\ B6\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:5645\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("--.xn--rpb6226k77pfh58p", %p)},	undef,	"to_ascii\(\'\-\-\.xn\-\-rpb6226k77pfh58p\'\)\ throws\ error\ B1\ B5\ B6\ V3\ V6\ \[data\/IdnaTest\.txt\:5646\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("򛭦𐋥𹸐.≯\x{08B0}\x{08A6}󔛣", %p)},	undef,	"to_ascii\(\'\?𐋥\?\.\≯\\u08B0\\u08A6\?\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:5647\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("򛭦𐋥𹸐.>\x{0338}\x{08B0}\x{08A6}󔛣", %p)},	undef,	"to_ascii\(\'\?𐋥\?\.\>\\u0338\\u08B0\\u08A6\?\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:5648\]") or ($@ and diag($@));
@@ -5565,14 +5565,14 @@ is(eval{uts46_to_ascii("񗑿\x{A806}₄򩞆。𲩧󠒹Σ", %p)},	undef,	"to_asci
 is(eval{uts46_to_ascii("񗑿\x{A806}₄򩞆。𲩧󠒹σ", %p)},	undef,	"to_ascii\(\'\?\\uA806₄\?。\?\?σ\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:7003\]") or ($@ and diag($@));
 SKIP: { skip sprintf("requires Unicode® v7.0 (perl v5.21.1) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v7.0; is(eval{uts46_to_ascii("󠆀\x{0723}。\x{1DF4}\x{0775}", %p)},	undef,	"to_ascii\(\'\󠆀\\u0723\。\\u1DF4\\u0775\'\)\ throws\ error\ B1\ V5\ \[data\/IdnaTest\.txt\:7004\]") or ($@ and diag($@)); }
 is(eval{uts46_to_ascii("xn--tnb.xn--5pb136i", %p)},	undef,	"to_ascii\(\'xn\-\-tnb\.xn\-\-5pb136i\'\)\ throws\ error\ B1\ V5\ \[data\/IdnaTest\.txt\:7005\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("𐹱\x{0842}𝪨。𬼖Ⴑ\x{200D}", %p)},	undef,	"to_ascii\(\'𐹱\\u0842𝪨。\?Ⴑ\\u200D\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:7006\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("𐹱\x{0842}𝪨。𬼖Ⴑ\x{200D}", %p)},	undef,	"to_ascii\(\'𐹱\\u0842𝪨\。\?Ⴑ\\u200D\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:7008\]") or ($@ and diag($@));
-SKIP: { skip sprintf("requires Unicode® v10.0 (perl v5.28.0) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v10.0; is(eval{uts46_to_ascii("𐹱\x{0842}𝪨。𬼖ⴑ\x{200D}", %p)},	undef,	"to_ascii\(\'𐹱\\u0842𝪨\。\?ⴑ\\u200D\'\)\ throws\ error\ B1\ \[data\/IdnaTest\.txt\:7010\]") or ($@ and diag($@)); }
+is(eval{uts46_to_ascii("𐹱\x{0842}𝪨。𬼖Ⴑ\x{200D}", %p)},	undef,	"to_ascii\(\'𐹱\\u0842𝪨。𬼖Ⴑ\\u200D\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:7006\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("𐹱\x{0842}𝪨。𬼖Ⴑ\x{200D}", %p)},	undef,	"to_ascii\(\'𐹱\\u0842𝪨\。𬼖Ⴑ\\u200D\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:7008\]") or ($@ and diag($@));
+SKIP: { skip sprintf("requires Unicode® v10.0 (perl v5.28.0) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v10.0; is(eval{uts46_to_ascii("𐹱\x{0842}𝪨。𬼖ⴑ\x{200D}", %p)},	undef,	"to_ascii\(\'𐹱\\u0842𝪨\。𬼖ⴑ\\u200D\'\)\ throws\ error\ B1\ \[data\/IdnaTest\.txt\:7010\]") or ($@ and diag($@)); }
 is(eval{uts46_to_ascii("xn--0vb1535kdb6e.xn--8kjz186s", %p)},	undef,	"to_ascii\(\'xn\-\-0vb1535kdb6e\.xn\-\-8kjz186s\'\)\ throws\ error\ B1\ \[data\/IdnaTest\.txt\:7012\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--0vb1535kdb6e.xn--1ug742c5714c", %p)},	undef,	"to_ascii\(\'xn\-\-0vb1535kdb6e\.xn\-\-1ug742c5714c\'\)\ throws\ error\ B1\ B6\ C2\ \[data\/IdnaTest\.txt\:7013\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--0vb1535kdb6e.xn--pnd93707a", %p)},	undef,	"to_ascii\(\'xn\-\-0vb1535kdb6e\.xn\-\-pnd93707a\'\)\ throws\ error\ B1\ V6\ \[data\/IdnaTest\.txt\:7014\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--0vb1535kdb6e.xn--pnd879eqy33c", %p)},	undef,	"to_ascii\(\'xn\-\-0vb1535kdb6e\.xn\-\-pnd879eqy33c\'\)\ throws\ error\ B1\ B6\ C2\ V6\ \[data\/IdnaTest\.txt\:7015\]") or ($@ and diag($@));
-SKIP: { skip sprintf("requires Unicode® v10.0 (perl v5.28.0) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v10.0; is(eval{uts46_to_ascii("𐹱\x{0842}𝪨。𬼖ⴑ\x{200D}", %p)},	undef,	"to_ascii\(\'𐹱\\u0842𝪨。\?ⴑ\\u200D\'\)\ throws\ error\ B1\ \[data\/IdnaTest\.txt\:7016\]") or ($@ and diag($@)); }
+SKIP: { skip sprintf("requires Unicode® v10.0 (perl v5.28.0) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v10.0; is(eval{uts46_to_ascii("𐹱\x{0842}𝪨。𬼖ⴑ\x{200D}", %p)},	undef,	"to_ascii\(\'𐹱\\u0842𝪨。𬼖ⴑ\\u200D\'\)\ throws\ error\ B1\ \[data\/IdnaTest\.txt\:7016\]") or ($@ and diag($@)); }
 is(eval{uts46_to_ascii("\x{1714}𐭪󠙘\x{200D}。-𐹴", %p)},	undef,	"to_ascii\(\'\\u1714𐭪\?\\u200D。\-𐹴\'\)\ throws\ error\ B1\ P1\ V3\ V5\ V6\ \[data\/IdnaTest\.txt\:7018\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("\x{1714}𐭪󠙘\x{200D}。-𐹴", %p)},	undef,	"to_ascii\(\'\\u1714𐭪\?\\u200D\。\-𐹴\'\)\ throws\ error\ B1\ P1\ V3\ V5\ V6\ \[data\/IdnaTest\.txt\:7020\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--fze4126jujt0g.xn----c36i", %p)},	undef,	"to_ascii\(\'xn\-\-fze4126jujt0g\.xn\-\-\-\-c36i\'\)\ throws\ error\ B1\ V3\ V5\ V6\ \[data\/IdnaTest\.txt\:7022\]") or ($@ and diag($@));
@@ -6070,11 +6070,11 @@ is(eval{uts46_to_ascii("xn--ie8c.xn--2g51a", %p)},	undef,	"to_ascii\(\'xn\-\-ie8
 is(eval{uts46_to_ascii("xn--ie8c.xn--0ug03366c", %p)},	undef,	"to_ascii\(\'xn\-\-ie8c\.xn\-\-0ug03366c\'\)\ throws\ error\ C1\ V5\ V6\ \[data\/IdnaTest\.txt\:7658\]") or ($@ and diag($@));
 SKIP: { skip sprintf("requires Unicode® v5.1 (perl v5.10.1) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v5.1; is(eval{uts46_to_ascii("\x{063D}\x{06E3}.𐨎", %p)},	undef,	"to_ascii\(\'\\u063D\\u06E3\.𐨎\'\)\ throws\ error\ B1\ B3\ B6\ V5\ \[data\/IdnaTest\.txt\:7659\]") or ($@ and diag($@)); }
 is(eval{uts46_to_ascii("xn--8gb64a.xn--mr9c", %p)},	undef,	"to_ascii\(\'xn\-\-8gb64a\.xn\-\-mr9c\'\)\ throws\ error\ B1\ B3\ B6\ V5\ \[data\/IdnaTest\.txt\:7660\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("漦Ⴙς.񡻀𐴄", %p)},	undef,	"to_ascii\(\'漦Ⴙς\.\?\?\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7661\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("漦ⴙς.񡻀𐴄", %p)},	undef,	"to_ascii\(\'漦ⴙς\.\?\?\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7663\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("漦ႹΣ.񡻀𐴄", %p)},	undef,	"to_ascii\(\'漦ႹΣ\.\?\?\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7665\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("漦ⴙσ.񡻀𐴄", %p)},	undef,	"to_ascii\(\'漦ⴙσ\.\?\?\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7666\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("漦Ⴙσ.񡻀𐴄", %p)},	undef,	"to_ascii\(\'漦Ⴙσ\.\?\?\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7667\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("漦Ⴙς.񡻀𐴄", %p)},	undef,	"to_ascii\(\'漦Ⴙς\.\?𐴄\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7661\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("漦ⴙς.񡻀𐴄", %p)},	undef,	"to_ascii\(\'漦ⴙς\.\?𐴄\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7663\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("漦ႹΣ.񡻀𐴄", %p)},	undef,	"to_ascii\(\'漦ႹΣ\.\?𐴄\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7665\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("漦ⴙσ.񡻀𐴄", %p)},	undef,	"to_ascii\(\'漦ⴙσ\.\?𐴄\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7666\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("漦Ⴙσ.񡻀𐴄", %p)},	undef,	"to_ascii\(\'漦Ⴙσ\.\?𐴄\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7667\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--4xa947d717e.xn--9d0d3162t", %p)},	undef,	"to_ascii\(\'xn\-\-4xa947d717e\.xn\-\-9d0d3162t\'\)\ throws\ error\ B5\ B6\ V6\ \[data\/IdnaTest\.txt\:7668\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--4xa772sl47b.xn--9d0d3162t", %p)},	undef,	"to_ascii\(\'xn\-\-4xa772sl47b\.xn\-\-9d0d3162t\'\)\ throws\ error\ B5\ B6\ V6\ \[data\/IdnaTest\.txt\:7669\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--3xa972sl47b.xn--9d0d3162t", %p)},	undef,	"to_ascii\(\'xn\-\-3xa972sl47b\.xn\-\-9d0d3162t\'\)\ throws\ error\ B5\ B6\ V6\ \[data\/IdnaTest\.txt\:7670\]") or ($@ and diag($@));
diff --git a/t/uts46_to_ascii.t b/t/uts46_to_ascii.t
index d60fd2a..798fa69 100644
--- a/t/uts46_to_ascii.t
+++ b/t/uts46_to_ascii.t
@@ -918,10 +918,10 @@ is(eval{uts46_to_ascii("xn--osd925cvyn.xn--73g3065g", %p)},	undef,	"to_ascii\(\'
 is(eval{uts46_to_ascii("xn--pnd26a55x.xn--f3g7465g", %p)},	undef,	"to_ascii\(\'xn\-\-pnd26a55x\.xn\-\-f3g7465g\'\)\ throws\ error\ V5\ V6\ \[data\/IdnaTest\.txt\:1157\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("\x{1BF3}ⴑ\x{115F}.𑄴ⅎ", %p)},	undef,	"to_ascii\(\'\\u1BF3ⴑ\\u115F.𑄴ⅎ\'\)\ throws\ error\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:1158\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("\x{1BF3}Ⴑ\x{115F}.𑄴ⅎ", %p)},	undef,	"to_ascii\(\'\\u1BF3Ⴑ\\u115F.𑄴ⅎ\'\)\ throws\ error\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:1159\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("𜉆。Ⴃ𐴣𐹹똯", %p)},	undef,	"to_ascii\(\'\?\。Ⴃ\?𐹹똯\'\)\ throws\ error\ B5\ P1\ V6\ \[data\/IdnaTest\.txt\:1160\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("𜉆。Ⴃ𐴣𐹹똯", %p)},	undef,	"to_ascii\(\'\?\。Ⴃ\?𐹹똯\'\)\ throws\ error\ B5\ P1\ V6\ \[data\/IdnaTest\.txt\:1161\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("𜉆。ⴃ𐴣𐹹똯", %p)},	undef,	"to_ascii\(\'\?\。ⴃ\?𐹹똯\'\)\ throws\ error\ B5\ P1\ V6\ \[data\/IdnaTest\.txt\:1162\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("𜉆。ⴃ𐴣𐹹똯", %p)},	undef,	"to_ascii\(\'\?\。ⴃ\?𐹹똯\'\)\ throws\ error\ B5\ P1\ V6\ \[data\/IdnaTest\.txt\:1163\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("𜉆。Ⴃ𐴣𐹹똯", %p)},	undef,	"to_ascii\(\'\?\。Ⴃ𐴣𐹹똯\'\)\ throws\ error\ B5\ P1\ V6\ \[data\/IdnaTest\.txt\:1160\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("𜉆。Ⴃ𐴣𐹹똯", %p)},	undef,	"to_ascii\(\'\?\。Ⴃ𐴣𐹹똯\'\)\ throws\ error\ B5\ P1\ V6\ \[data\/IdnaTest\.txt\:1161\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("𜉆。ⴃ𐴣𐹹똯", %p)},	undef,	"to_ascii\(\'\?\。ⴃ𐴣𐹹똯\'\)\ throws\ error\ B5\ P1\ V6\ \[data\/IdnaTest\.txt\:1162\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("𜉆。ⴃ𐴣𐹹똯", %p)},	undef,	"to_ascii\(\'\?\。ⴃ𐴣𐹹똯\'\)\ throws\ error\ B5\ P1\ V6\ \[data\/IdnaTest\.txt\:1163\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--187g.xn--ukjy205b8rscdeb", %p)},	undef,	"to_ascii\(\'xn\-\-187g\.xn\-\-ukjy205b8rscdeb\'\)\ throws\ error\ B5\ V6\ \[data\/IdnaTest\.txt\:1164\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--187g.xn--bnd4785f8r8bdeb", %p)},	undef,	"to_ascii\(\'xn\-\-187g\.xn\-\-bnd4785f8r8bdeb\'\)\ throws\ error\ B5\ V6\ \[data\/IdnaTest\.txt\:1165\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("𐫀。⳻󠙾󠄷\x{3164}", %p)},	undef,	"to_ascii\(\'𐫀。⳻\?\󠄷\\u3164\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:1166\]") or ($@ and diag($@));
@@ -1088,12 +1088,12 @@ is(eval{uts46_to_ascii("xn--tlvq3513e.xn--hib9228d", %p)},	undef,	"to_ascii\(\'x
 is(eval{uts46_to_ascii("󠄚≯ꡢ。\x{0891}\x{1DFF}", %p)},	undef,	"to_ascii\(\'\󠄚\≯ꡢ\。\\u0891\\u1DFF\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:1381\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("󠄚>\x{0338}ꡢ。\x{0891}\x{1DFF}", %p)},	undef,	"to_ascii\(\'\󠄚\>\\u0338ꡢ\。\\u0891\\u1DFF\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:1382\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--hdh7783c.xn--9xb680i", %p)},	undef,	"to_ascii\(\'xn\-\-hdh7783c\.xn\-\-9xb680i\'\)\ throws\ error\ B1\ V6\ \[data\/IdnaTest\.txt\:1383\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("\x{FDC3}𮁱\x{0B4D}𐨿.󐧤Ⴗ", %p)},	undef,	"to_ascii\(\'\\uFDC3\?\\u0B4D𐨿\.\?Ⴗ\'\)\ throws\ error\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:1384\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("\x{0643}\x{0645}\x{0645}𮁱\x{0B4D}𐨿.󐧤Ⴗ", %p)},	undef,	"to_ascii\(\'\\u0643\\u0645\\u0645\?\\u0B4D𐨿\.\?Ⴗ\'\)\ throws\ error\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:1385\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("\x{0643}\x{0645}\x{0645}𮁱\x{0B4D}𐨿.󐧤ⴗ", %p)},	undef,	"to_ascii\(\'\\u0643\\u0645\\u0645\?\\u0B4D𐨿\.\?ⴗ\'\)\ throws\ error\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:1386\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("\x{FDC3}𮁱\x{0B4D}𐨿.󐧤Ⴗ", %p)},	undef,	"to_ascii\(\'\\uFDC3𮁱\\u0B4D𐨿\.\?Ⴗ\'\)\ throws\ error\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:1384\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("\x{0643}\x{0645}\x{0645}𮁱\x{0B4D}𐨿.󐧤Ⴗ", %p)},	undef,	"to_ascii\(\'\\u0643\\u0645\\u0645𮁱\\u0B4D𐨿\.\?Ⴗ\'\)\ throws\ error\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:1385\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("\x{0643}\x{0645}\x{0645}𮁱\x{0B4D}𐨿.󐧤ⴗ", %p)},	undef,	"to_ascii\(\'\\u0643\\u0645\\u0645𮁱\\u0B4D𐨿\.\?ⴗ\'\)\ throws\ error\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:1386\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--fhbea662czx68a2tju.xn--fljz2846h", %p)},	undef,	"to_ascii\(\'xn\-\-fhbea662czx68a2tju\.xn\-\-fljz2846h\'\)\ throws\ error\ B2\ B3\ V6\ \[data\/IdnaTest\.txt\:1387\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--fhbea662czx68a2tju.xn--vnd55511o", %p)},	undef,	"to_ascii\(\'xn\-\-fhbea662czx68a2tju\.xn\-\-vnd55511o\'\)\ throws\ error\ B2\ B3\ V6\ \[data\/IdnaTest\.txt\:1388\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("\x{FDC3}𮁱\x{0B4D}𐨿.󐧤ⴗ", %p)},	undef,	"to_ascii\(\'\\uFDC3\?\\u0B4D𐨿\.\?ⴗ\'\)\ throws\ error\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:1389\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("\x{FDC3}𮁱\x{0B4D}𐨿.󐧤ⴗ", %p)},	undef,	"to_ascii\(\'\\uFDC3𮁱\\u0B4D𐨿\.\?ⴗ\'\)\ throws\ error\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:1389\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("𞀨。\x{1B44}򡛨𞎇", %p)},	undef,	"to_ascii\(\'𞀨。\\u1B44\?\?\'\)\ throws\ error\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:1390\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("𞀨。\x{1B44}򡛨𞎇", %p)},	undef,	"to_ascii\(\'𞀨\。\\u1B44\?\?\'\)\ throws\ error\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:1391\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--mi4h.xn--1uf6843smg20c", %p)},	undef,	"to_ascii\(\'xn\-\-mi4h\.xn\-\-1uf6843smg20c\'\)\ throws\ error\ V5\ V6\ \[data\/IdnaTest\.txt\:1392\]") or ($@ and diag($@));
@@ -1218,8 +1218,8 @@ is(eval{uts46_to_ascii("xn--f-tgn9761i.xn--7656e.xn--fqb4175k", %p)},	undef,	"to
 is(eval{uts46_to_ascii("\x{200D}f𑓂。󠺨︒\x{077E}𐹢", %p)},	undef,	"to_ascii\(\'\\u200Df𑓂\。\?︒\\u077E𐹢\'\)\ throws\ error\ B1\ C2\ P1\ V6\ \[data\/IdnaTest\.txt\:1539\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--f-kq9i.xn--fqb1637j8hky9452a", %p)},	undef,	"to_ascii\(\'xn\-\-f\-kq9i\.xn\-\-fqb1637j8hky9452a\'\)\ throws\ error\ B1\ V6\ \[data\/IdnaTest\.txt\:1540\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--f-tgn9761i.xn--fqb1637j8hky9452a", %p)},	undef,	"to_ascii\(\'xn\-\-f\-tgn9761i\.xn\-\-fqb1637j8hky9452a\'\)\ throws\ error\ B1\ C2\ V6\ \[data\/IdnaTest\.txt\:1541\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("\x{0845}🄇𐼗︒。𐹻𑜫", %p)},	undef,	"to_ascii\(\'\\u0845🄇\?︒。𐹻𑜫\'\)\ throws\ error\ B1\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:1542\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("\x{0845}6,𐼗。。𐹻𑜫", %p)},	undef,	"to_ascii\(\'\\u08456\,\?\。\。𐹻𑜫\'\)\ throws\ error\ B1\ P1\ V6\ A4_2\ \[data\/IdnaTest\.txt\:1543\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("\x{0845}🄇𐼗︒。𐹻𑜫", %p)},	undef,	"to_ascii\(\'\\u0845🄇𐼗︒。𐹻𑜫\'\)\ throws\ error\ B1\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:1542\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("\x{0845}6,𐼗。。𐹻𑜫", %p)},	undef,	"to_ascii\(\'\\u08456\,𐼗\。\。𐹻𑜫\'\)\ throws\ error\ B1\ P1\ V6\ A4_2\ \[data\/IdnaTest\.txt\:1543\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--6,-r4e4420y..xn--zo0di2m", %p)},	undef,	"to_ascii\(\'xn\-\-6\,\-r4e4420y\.\.xn\-\-zo0di2m\'\)\ throws\ error\ B1\ P1\ V6\ A4_2\ \[data\/IdnaTest\.txt\:1544\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--3vb4696jpxkjh7s.xn--zo0di2m", %p)},	undef,	"to_ascii\(\'xn\-\-3vb4696jpxkjh7s\.xn\-\-zo0di2m\'\)\ throws\ error\ B1\ B3\ V6\ \[data\/IdnaTest\.txt\:1545\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("𐹈.\x{1DC0}𑈱𐦭", %p)},	undef,	"to_ascii\(\'\?\.\\u1DC0𑈱𐦭\'\)\ throws\ error\ B1\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:1546\]") or ($@ and diag($@));
@@ -1312,8 +1312,8 @@ is(eval{uts46_to_ascii("𵋅。Ss𬵩\x{200D}", %p)},	undef,	"to_ascii\(\'\?\。
 is(eval{uts46_to_ascii("xn--ey1p.xn--ss-eq36b", %p)},	undef,	"to_ascii\(\'xn\-\-ey1p\.xn\-\-ss\-eq36b\'\)\ throws\ error\ V6\ \[data\/IdnaTest\.txt\:1663\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--ey1p.xn--ss-n1tx0508a", %p)},	undef,	"to_ascii\(\'xn\-\-ey1p\.xn\-\-ss\-n1tx0508a\'\)\ throws\ error\ C2\ V6\ \[data\/IdnaTest\.txt\:1664\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--ey1p.xn--zca870nz438b", %p)},	undef,	"to_ascii\(\'xn\-\-ey1p\.xn\-\-zca870nz438b\'\)\ throws\ error\ C2\ V6\ \[data\/IdnaTest\.txt\:1665\]") or ($@ and diag($@));
-SKIP: { skip sprintf("requires Unicode® v10.0 (perl v5.28.0) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v10.0; is(eval{uts46_to_ascii("\x{200C}𭉝。\x{07F1}\x{0301}𞹻", %p)},	undef,	"to_ascii\(\'\\u200C\?\。\\u07F1\\u0301𞹻\'\)\ throws\ error\ B1\ C1\ V5\ \[data\/IdnaTest\.txt\:1667\]") or ($@ and diag($@)); }
-SKIP: { skip sprintf("requires Unicode® v10.0 (perl v5.28.0) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v10.0; is(eval{uts46_to_ascii("\x{200C}𭉝。\x{07F1}\x{0301}\x{063A}", %p)},	undef,	"to_ascii\(\'\\u200C\?\。\\u07F1\\u0301\\u063A\'\)\ throws\ error\ B1\ C1\ V5\ \[data\/IdnaTest\.txt\:1669\]") or ($@ and diag($@)); }
+SKIP: { skip sprintf("requires Unicode® v10.0 (perl v5.28.0) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v10.0; is(eval{uts46_to_ascii("\x{200C}𭉝。\x{07F1}\x{0301}𞹻", %p)},	undef,	"to_ascii\(\'\\u200C𭉝\。\\u07F1\\u0301𞹻\'\)\ throws\ error\ B1\ C1\ V5\ \[data\/IdnaTest\.txt\:1667\]") or ($@ and diag($@)); }
+SKIP: { skip sprintf("requires Unicode® v10.0 (perl v5.28.0) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v10.0; is(eval{uts46_to_ascii("\x{200C}𭉝。\x{07F1}\x{0301}\x{063A}", %p)},	undef,	"to_ascii\(\'\\u200C𭉝\。\\u07F1\\u0301\\u063A\'\)\ throws\ error\ B1\ C1\ V5\ \[data\/IdnaTest\.txt\:1669\]") or ($@ and diag($@)); }
 is(eval{uts46_to_ascii("xn--634m.xn--lsa46nuub", %p)},	undef,	"to_ascii\(\'xn\-\-634m\.xn\-\-lsa46nuub\'\)\ throws\ error\ B1\ V5\ \[data\/IdnaTest\.txt\:1670\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--0ugy003y.xn--lsa46nuub", %p)},	undef,	"to_ascii\(\'xn\-\-0ugy003y\.xn\-\-lsa46nuub\'\)\ throws\ error\ B1\ C1\ V5\ \[data\/IdnaTest\.txt\:1671\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("𞼌\x{200C}𑈶。𐹡", %p)},	undef,	"to_ascii\(\'\?\\u200C𑈶\。𐹡\'\)\ throws\ error\ B1\ B3\ C1\ P1\ V6\ \[data\/IdnaTest\.txt\:1673\]") or ($@ and diag($@));
@@ -1585,20 +1585,20 @@ is(eval{uts46_to_ascii("𐶭⾆。\x{200C}𑚶򟱃𞰘", %p)},	undef,	"to_ascii\
 is(eval{uts46_to_ascii("𐶭舌。\x{200C}𑚶򟱃𞰘", %p)},	undef,	"to_ascii\(\'\?舌\。\\u200C𑚶\?\?\'\)\ throws\ error\ B1\ B2\ B3\ C1\ P1\ V6\ \[data\/IdnaTest\.txt\:1997\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--tc1ao37z.xn--6e2dw557azds2d", %p)},	undef,	"to_ascii\(\'xn\-\-tc1ao37z\.xn\-\-6e2dw557azds2d\'\)\ throws\ error\ B2\ B3\ B5\ B6\ V5\ V6\ \[data\/IdnaTest\.txt\:1998\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--tc1ao37z.xn--0ugx728gi1nfwqz2e", %p)},	undef,	"to_ascii\(\'xn\-\-tc1ao37z\.xn\-\-0ugx728gi1nfwqz2e\'\)\ throws\ error\ B1\ B2\ B3\ C1\ V6\ \[data\/IdnaTest\.txt\:1999\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("\x{200C}Ⴠ-.𝟷ς𞴺ς", %p)},	undef,	"to_ascii\(\'\\u200CჀ\-\.𝟷ς\?ς\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2001\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("\x{200C}Ⴠ-.1ς𞴺ς", %p)},	undef,	"to_ascii\(\'\\u200CჀ\-\.1ς\?ς\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2003\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("\x{200C}ⴠ-.1ς𞴺ς", %p)},	undef,	"to_ascii\(\'\\u200Cⴠ\-\.1ς\?ς\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2005\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("\x{200C}Ⴠ-.1Σ𞴺Σ", %p)},	undef,	"to_ascii\(\'\\u200CჀ\-\.1Σ\?Σ\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2007\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("\x{200C}ⴠ-.1σ𞴺σ", %p)},	undef,	"to_ascii\(\'\\u200Cⴠ\-\.1σ\?σ\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2009\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("\x{200C}Ⴠ-.𝟷ς𞴺ς", %p)},	undef,	"to_ascii\(\'\\u200CჀ\-\.𝟷ς𞴺ς\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2001\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("\x{200C}Ⴠ-.1ς𞴺ς", %p)},	undef,	"to_ascii\(\'\\u200CჀ\-\.1ς𞴺ς\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2003\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("\x{200C}ⴠ-.1ς𞴺ς", %p)},	undef,	"to_ascii\(\'\\u200Cⴠ\-\.1ς𞴺ς\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2005\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("\x{200C}Ⴠ-.1Σ𞴺Σ", %p)},	undef,	"to_ascii\(\'\\u200CჀ\-\.1Σ𞴺Σ\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2007\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("\x{200C}ⴠ-.1σ𞴺σ", %p)},	undef,	"to_ascii\(\'\\u200Cⴠ\-\.1σ𞴺σ\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2009\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn----2ws.xn--1-0mba52321c", %p)},	undef,	"to_ascii\(\'xn\-\-\-\-2ws\.xn\-\-1\-0mba52321c\'\)\ throws\ error\ B1\ B6\ V3\ V6\ \[data\/IdnaTest\.txt\:2010\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn----rgn530d.xn--1-0mba52321c", %p)},	undef,	"to_ascii\(\'xn\-\-\-\-rgn530d\.xn\-\-1\-0mba52321c\'\)\ throws\ error\ B1\ C1\ V3\ V6\ \[data\/IdnaTest\.txt\:2011\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn----z1g.xn--1-0mba52321c", %p)},	undef,	"to_ascii\(\'xn\-\-\-\-z1g\.xn\-\-1\-0mba52321c\'\)\ throws\ error\ B1\ B6\ V3\ V6\ \[data\/IdnaTest\.txt\:2012\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn----z1g168i.xn--1-0mba52321c", %p)},	undef,	"to_ascii\(\'xn\-\-\-\-z1g168i\.xn\-\-1\-0mba52321c\'\)\ throws\ error\ B1\ C1\ V3\ V6\ \[data\/IdnaTest\.txt\:2013\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn----rgn530d.xn--1-ymba92321c", %p)},	undef,	"to_ascii\(\'xn\-\-\-\-rgn530d\.xn\-\-1\-ymba92321c\'\)\ throws\ error\ B1\ C1\ V3\ V6\ \[data\/IdnaTest\.txt\:2014\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn----z1g168i.xn--1-ymba92321c", %p)},	undef,	"to_ascii\(\'xn\-\-\-\-z1g168i\.xn\-\-1\-ymba92321c\'\)\ throws\ error\ B1\ C1\ V3\ V6\ \[data\/IdnaTest\.txt\:2015\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("\x{200C}ⴠ-.𝟷ς𞴺ς", %p)},	undef,	"to_ascii\(\'\\u200Cⴠ\-\.𝟷ς\?ς\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2017\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("\x{200C}Ⴠ-.𝟷Σ𞴺Σ", %p)},	undef,	"to_ascii\(\'\\u200CჀ\-\.𝟷Σ\?Σ\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2019\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("\x{200C}ⴠ-.𝟷σ𞴺σ", %p)},	undef,	"to_ascii\(\'\\u200Cⴠ\-\.𝟷σ\?σ\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2021\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("\x{200C}ⴠ-.𝟷ς𞴺ς", %p)},	undef,	"to_ascii\(\'\\u200Cⴠ\-\.𝟷ς𞴺ς\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2017\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("\x{200C}Ⴠ-.𝟷Σ𞴺Σ", %p)},	undef,	"to_ascii\(\'\\u200CჀ\-\.𝟷Σ𞴺Σ\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2019\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("\x{200C}ⴠ-.𝟷σ𞴺σ", %p)},	undef,	"to_ascii\(\'\\u200Cⴠ\-\.𝟷σ𞴺σ\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2021\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("𑲘󠄒𓑡。𝟪Ⴜ", %p)},	undef,	"to_ascii\(\'𑲘\󠄒\?。𝟪Ⴜ\'\)\ throws\ error\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:2022\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("𑲘󠄒𓑡。8Ⴜ", %p)},	undef,	"to_ascii\(\'𑲘\󠄒\?\。8Ⴜ\'\)\ throws\ error\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:2023\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("𑲘󠄒𓑡。8ⴜ", %p)},	undef,	"to_ascii\(\'𑲘\󠄒\?\。8ⴜ\'\)\ throws\ error\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:2024\]") or ($@ and diag($@));
@@ -1952,10 +1952,10 @@ is(eval{uts46_to_ascii("𐹰.\x{0600}", %p)},	undef,	"to_ascii\(\'𐹰\.\\u0600\
 is(eval{uts46_to_ascii("xn--oo0d.xn--ifb", %p)},	undef,	"to_ascii\(\'xn\-\-oo0d\.xn\-\-ifb\'\)\ throws\ error\ B1\ V6\ \[data\/IdnaTest\.txt\:2464\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("-\x{08A8}.ð± –", %p)},	undef,	"to_ascii\(\'\-\\u08A8\.\?\'\)\ throws\ error\ B1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2465\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn----mod.xn--5o9n", %p)},	undef,	"to_ascii\(\'xn\-\-\-\-mod\.xn\-\-5o9n\'\)\ throws\ error\ B1\ V3\ V6\ \[data\/IdnaTest\.txt\:2466\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("≯𞱸󠇀。誆⒈", %p)},	undef,	"to_ascii\(\'\≯\?\󠇀\。誆⒈\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:2467\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii(">\x{0338}𞱸󠇀。誆⒈", %p)},	undef,	"to_ascii\(\'\>\\u0338\?\󠇀\。誆⒈\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:2468\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("≯𞱸󠇀。誆1.", %p)},	undef,	"to_ascii\(\'\≯\?\󠇀\。誆1\.\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:2469\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii(">\x{0338}𞱸󠇀。誆1.", %p)},	undef,	"to_ascii\(\'\>\\u0338\?\󠇀\。誆1\.\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:2470\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("≯𞱸󠇀。誆⒈", %p)},	undef,	"to_ascii\(\'\≯𞱸\󠇀\。誆⒈\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:2467\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii(">\x{0338}𞱸󠇀。誆⒈", %p)},	undef,	"to_ascii\(\'\>\\u0338𞱸\󠇀\。誆⒈\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:2468\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("≯𞱸󠇀。誆1.", %p)},	undef,	"to_ascii\(\'\≯𞱸\󠇀\。誆1\.\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:2469\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii(">\x{0338}𞱸󠇀。誆1.", %p)},	undef,	"to_ascii\(\'\>\\u0338𞱸\󠇀\。誆1\.\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:2470\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--hdh7151p.xn--1-dy1d.", %p)},	undef,	"to_ascii\(\'xn\-\-hdh7151p\.xn\-\-1\-dy1d\.\'\)\ throws\ error\ B1\ V6\ \[data\/IdnaTest\.txt\:2471\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--hdh7151p.xn--tsh1248a", %p)},	undef,	"to_ascii\(\'xn\-\-hdh7151p\.xn\-\-tsh1248a\'\)\ throws\ error\ B1\ V6\ \[data\/IdnaTest\.txt\:2472\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("\x{0616}𞥙䐊\x{0650}.︒\x{0645}↺\x{069C}", %p)},	undef,	"to_ascii\(\'\\u0616𞥙䐊\\u0650.︒\\u0645\↺\\u069C\'\)\ throws\ error\ B1\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:2473\]") or ($@ and diag($@));
@@ -2038,8 +2038,8 @@ is(eval{uts46_to_ascii("xn--1t56e.xn--2nd141ghl2a", %p)},	undef,	"to_ascii\(\'xn
 is(eval{uts46_to_ascii("xn--1t56e.xn--2nd159e9vb743e", %p)},	undef,	"to_ascii\(\'xn\-\-1t56e\.xn\-\-2nd159e9vb743e\'\)\ throws\ error\ C2\ V6\ \[data\/IdnaTest\.txt\:2567\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("󠳛.\x{200D}䤫=\x{0338}ⴞ", %p)},	undef,	"to_ascii\(\'\?.\\u200D䤫\=\\u0338ⴞ\'\)\ throws\ error\ C2\ P1\ V6\ \[data\/IdnaTest\.txt\:2569\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("󠳛.\x{200D}䤫≠ⴞ", %p)},	undef,	"to_ascii\(\'\?.\\u200D䤫\≠ⴞ\'\)\ throws\ error\ C2\ P1\ V6\ \[data\/IdnaTest\.txt\:2571\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("𐽘𑈵.𐹣🕥", %p)},	undef,	"to_ascii\(\'\?𑈵.𐹣🕥\'\)\ throws\ error\ B1\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:2572\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("𐽘𑈵.𐹣🕥", %p)},	undef,	"to_ascii\(\'\?𑈵\.𐹣🕥\'\)\ throws\ error\ B1\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:2573\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("𐽘𑈵.𐹣🕥", %p)},	undef,	"to_ascii\(\'𐽘𑈵.𐹣🕥\'\)\ throws\ error\ B1\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:2572\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("𐽘𑈵.𐹣🕥", %p)},	undef,	"to_ascii\(\'𐽘𑈵\.𐹣🕥\'\)\ throws\ error\ B1\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:2573\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--bv0d02c.xn--bo0dq650b", %p)},	undef,	"to_ascii\(\'xn\-\-bv0d02c\.xn\-\-bo0dq650b\'\)\ throws\ error\ B1\ B2\ B3\ V6\ \[data\/IdnaTest\.txt\:2574\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("⒊⒈𑁄。9", %p)},	undef,	"to_ascii\(\'⒊⒈𑁄\。9\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:2575\]") or ($@ and diag($@));
 SKIP: { skip sprintf("requires Unicode® v6.0 (perl v5.13.7) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v6.0; is(eval{uts46_to_ascii("3.1.𑁄。9", %p)},	undef,	"to_ascii\(\'3\.1\.𑁄\。9\'\)\ throws\ error\ V5\ \[data\/IdnaTest\.txt\:2576\]") or ($@ and diag($@)); }
@@ -2108,10 +2108,10 @@ SKIP: { skip sprintf("requires Unicode® v7.0 (perl v5.21.1) or higher, only v%v
 SKIP: { skip sprintf("requires Unicode® v7.0 (perl v5.21.1) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v7.0; is(eval{uts46_to_ascii("𐋵。\x{0643}\x{0645}", %p)},	undef,	"to_ascii\(\'𐋵\。\\u0643\\u0645\'\)\ throws\ error\ B1\ \[data\/IdnaTest\.txt\:2655\]") or ($@ and diag($@)); }
 is(eval{uts46_to_ascii("xn--p97c.xn--fhbe", %p)},	undef,	"to_ascii\(\'xn\-\-p97c\.xn\-\-fhbe\'\)\ throws\ error\ B1\ \[data\/IdnaTest\.txt\:2656\]") or ($@ and diag($@));
 SKIP: { skip sprintf("requires Unicode® v7.0 (perl v5.21.1) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v7.0; is(eval{uts46_to_ascii("𐋵.\x{0643}\x{0645}", %p)},	undef,	"to_ascii\(\'𐋵\.\\u0643\\u0645\'\)\ throws\ error\ B1\ \[data\/IdnaTest\.txt\:2657\]") or ($@ and diag($@)); }
-is(eval{uts46_to_ascii("≮𝅶.񱲁\x{AAEC}⹈󰥭", %p)},	undef,	"to_ascii\(\'\≮\?.\?\\uAAEC\?\?\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:2658\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("<\x{0338}𝅶.񱲁\x{AAEC}⹈󰥭", %p)},	undef,	"to_ascii\(\'\<\\u0338\?.\?\\uAAEC\?\?\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:2659\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("≮𝅶.񱲁\x{AAEC}⹈󰥭", %p)},	undef,	"to_ascii\(\'\≮\?\.\?\\uAAEC\?\?\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:2660\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("<\x{0338}𝅶.񱲁\x{AAEC}⹈󰥭", %p)},	undef,	"to_ascii\(\'\<\\u0338\?\.\?\\uAAEC\?\?\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:2661\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("≮𝅶.񱲁\x{AAEC}⹈󰥭", %p)},	undef,	"to_ascii\(\'\≮\?.\?\\uAAEC\⹈\?\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:2658\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("<\x{0338}𝅶.񱲁\x{AAEC}⹈󰥭", %p)},	undef,	"to_ascii\(\'\<\\u0338\?.\?\\uAAEC\⹈\?\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:2659\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("≮𝅶.񱲁\x{AAEC}⹈󰥭", %p)},	undef,	"to_ascii\(\'\≮\?\.\?\\uAAEC\⹈\?\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:2660\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("<\x{0338}𝅶.񱲁\x{AAEC}⹈󰥭", %p)},	undef,	"to_ascii\(\'\<\\u0338\?\.\?\\uAAEC\⹈\?\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:2661\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--gdh0880o.xn--4tjx101bsg00ds9pyc", %p)},	undef,	"to_ascii\(\'xn\-\-gdh0880o\.xn\-\-4tjx101bsg00ds9pyc\'\)\ throws\ error\ V6\ \[data\/IdnaTest\.txt\:2662\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("\x{2DF0}\x{0358}ᢕ.\x{0361}𐹷󠴍", %p)},	undef,	"to_ascii\(\'\\u2DF0\\u0358ᢕ.\\u0361𐹷\?\'\)\ throws\ error\ B1\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:2663\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("\x{2DF0}\x{0358}ᢕ.\x{0361}𐹷󠴍", %p)},	undef,	"to_ascii\(\'\\u2DF0\\u0358ᢕ\.\\u0361𐹷\?\'\)\ throws\ error\ B1\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:2664\]") or ($@ and diag($@));
@@ -2221,8 +2221,8 @@ is(eval{uts46_to_ascii("ᡙ\x{200C}。≯𐋲≠", %p)},	undef,	"to_ascii\(\'ᡙ
 is(eval{uts46_to_ascii("ᡙ\x{200C}。>\x{0338}𐋲=\x{0338}", %p)},	undef,	"to_ascii\(\'ᡙ\\u200C\。\>\\u0338𐋲\=\\u0338\'\)\ throws\ error\ C1\ P1\ V6\ \[data\/IdnaTest\.txt\:2803\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--p8e.xn--1ch3a7084l", %p)},	undef,	"to_ascii\(\'xn\-\-p8e\.xn\-\-1ch3a7084l\'\)\ throws\ error\ V6\ \[data\/IdnaTest\.txt\:2804\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--p8e650b.xn--1ch3a7084l", %p)},	undef,	"to_ascii\(\'xn\-\-p8e650b\.xn\-\-1ch3a7084l\'\)\ throws\ error\ C1\ V6\ \[data\/IdnaTest\.txt\:2805\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("𐹧𞲄󠁭񆼩。\x{034E}🄀", %p)},	undef,	"to_ascii\(\'𐹧\?\?\?\。\\u034E🄀\'\)\ throws\ error\ B1\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:2806\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("𐹧𞲄󠁭񆼩。\x{034E}0.", %p)},	undef,	"to_ascii\(\'𐹧\?\?\?\。\\u034E0\.\'\)\ throws\ error\ B1\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:2807\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("𐹧𞲄󠁭񆼩。\x{034E}🄀", %p)},	undef,	"to_ascii\(\'𐹧𞲄\?\?\。\\u034E🄀\'\)\ throws\ error\ B1\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:2806\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("𐹧𞲄󠁭񆼩。\x{034E}0.", %p)},	undef,	"to_ascii\(\'𐹧𞲄\?\?\。\\u034E0\.\'\)\ throws\ error\ B1\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:2807\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--fo0dw409aq58qrn69d.xn--0-bgb.", %p)},	undef,	"to_ascii\(\'xn\-\-fo0dw409aq58qrn69d\.xn\-\-0\-bgb\.\'\)\ throws\ error\ B1\ V5\ V6\ \[data\/IdnaTest\.txt\:2808\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--fo0dw409aq58qrn69d.xn--sua6883w", %p)},	undef,	"to_ascii\(\'xn\-\-fo0dw409aq58qrn69d\.xn\-\-sua6883w\'\)\ throws\ error\ B1\ V5\ V6\ \[data\/IdnaTest\.txt\:2809\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("Ⴄ.\x{200D}\x{0721}󻣋ς", %p)},	undef,	"to_ascii\(\'Ⴄ.\\u200D\\u0721\?ς\'\)\ throws\ error\ B1\ C2\ P1\ V6\ \[data\/IdnaTest\.txt\:2811\]") or ($@ and diag($@));
@@ -3042,8 +3042,8 @@ is(eval{uts46_to_ascii("ቬ򔠼񁗶。𐨬8", %p)},	undef,	"to_ascii\(\'ቬ\?\?\
 is(eval{uts46_to_ascii("xn--d0d41273c887z.xn--8-ob5i", %p)},	undef,	"to_ascii\(\'xn\-\-d0d41273c887z\.xn\-\-8\-ob5i\'\)\ throws\ error\ V6\ \[data\/IdnaTest\.txt\:3833\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("𐱲。蔫\x{0766}", %p)},	undef,	"to_ascii\(\'\?\。蔫\\u0766\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:3834\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--389c.xn--qpb7055d", %p)},	undef,	"to_ascii\(\'xn\-\-389c\.xn\-\-qpb7055d\'\)\ throws\ error\ B5\ B6\ V6\ \[data\/IdnaTest\.txt\:3835\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("򒲧₃。ꡚ𛇑󠄳\x{0647}", %p)},	undef,	"to_ascii\(\'\?₃。ꡚ\?\󠄳\\u0647\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:3836\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("򒲧3。ꡚ𛇑󠄳\x{0647}", %p)},	undef,	"to_ascii\(\'\?3\。ꡚ\?\󠄳\\u0647\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:3837\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("򒲧₃。ꡚ𛇑󠄳\x{0647}", %p)},	undef,	"to_ascii\(\'\?₃。ꡚ𛇑\󠄳\\u0647\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:3836\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("򒲧3。ꡚ𛇑󠄳\x{0647}", %p)},	undef,	"to_ascii\(\'\?3\。ꡚ𛇑\󠄳\\u0647\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:3837\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--3-ep59g.xn--jhb5904fcp0h", %p)},	undef,	"to_ascii\(\'xn\-\-3\-ep59g\.xn\-\-jhb5904fcp0h\'\)\ throws\ error\ B5\ B6\ V6\ \[data\/IdnaTest\.txt\:3838\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("蓸\x{0642}≠.ß", %p)},	undef,	"to_ascii\(\'蓸\\u0642\≠\.ß\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:3840\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("蓸\x{0642}=\x{0338}.ß", %p)},	undef,	"to_ascii\(\'蓸\\u0642\=\\u0338\.ß\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:3842\]") or ($@ and diag($@));
@@ -4114,8 +4114,8 @@ is(eval{uts46_to_ascii("xn--xx5gy2741c.xn--re6hw266j", %p)},	undef,	"to_ascii\(\
 is(eval{uts46_to_ascii("𛜯󠊛.𞤑񏥾", %p)},	undef,	"to_ascii\(\'\?\?.𞤑\?\'\)\ throws\ error\ B2\ B3\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:5175\]") or ($@ and diag($@));
 SKIP: { skip sprintf("requires Unicode® v7.0 (perl v5.21.1) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v7.0; is(eval{uts46_to_ascii("\x{071C}𐫒\x{062E}.𐋲", %p)},	undef,	"to_ascii\(\'\\u071C𐫒\\u062E\.𐋲\'\)\ throws\ error\ B1\ \[data\/IdnaTest\.txt\:5176\]") or ($@ and diag($@)); }
 is(eval{uts46_to_ascii("xn--tgb98b8643d.xn--m97c", %p)},	undef,	"to_ascii\(\'xn\-\-tgb98b8643d\.xn\-\-m97c\'\)\ throws\ error\ B1\ \[data\/IdnaTest\.txt\:5177\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("𐼑𞤓\x{0637}\x{08E2}.\x{DF56}", %p)},	undef,	"to_ascii\(\'\?𞤓\\u0637\\u08E2\.\\uDF56\'\)\ throws\ error\ P1\ V6\ A3\ \[data\/IdnaTest\.txt\:5178\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("𐼑𞤵\x{0637}\x{08E2}.\x{DF56}", %p)},	undef,	"to_ascii\(\'\?𞤵\\u0637\\u08E2\.\\uDF56\'\)\ throws\ error\ P1\ V6\ A3\ \[data\/IdnaTest\.txt\:5179\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("𐼑𞤓\x{0637}\x{08E2}.\x{DF56}", %p)},	undef,	"to_ascii\(\'𐼑𞤓\\u0637\\u08E2\.\\uDF56\'\)\ throws\ error\ P1\ V6\ A3\ \[data\/IdnaTest\.txt\:5178\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("𐼑𞤵\x{0637}\x{08E2}.\x{DF56}", %p)},	undef,	"to_ascii\(\'𐼑𞤵\\u0637\\u08E2\.\\uDF56\'\)\ throws\ error\ P1\ V6\ A3\ \[data\/IdnaTest\.txt\:5179\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--2gb08k9w69agm0g.\x{DF56}", %p)},	undef,	"to_ascii\(\'xn\-\-2gb08k9w69agm0g\.\\uDF56\'\)\ throws\ error\ P1\ V6\ A3\ \[data\/IdnaTest\.txt\:5180\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("XN--2GB08K9W69AGM0G.\x{DF56}", %p)},	undef,	"to_ascii\(\'XN\-\-2GB08K9W69AGM0G\.\\uDF56\'\)\ throws\ error\ P1\ V6\ A3\ \[data\/IdnaTest\.txt\:5181\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("Xn--2Gb08k9w69agm0g.\x{DF56}", %p)},	undef,	"to_ascii\(\'Xn\-\-2Gb08k9w69agm0g\.\\uDF56\'\)\ throws\ error\ P1\ V6\ A3\ \[data\/IdnaTest\.txt\:5182\]") or ($@ and diag($@));
@@ -4473,7 +4473,7 @@ is(eval{uts46_to_ascii("xn--lgb32f2753cosb.xn--jkb91hlz1a", %p)},	undef,	"to_asc
 is(eval{uts46_to_ascii("xn--lgb32f2753cosb.xn--jkb91hlz1azih", %p)},	undef,	"to_ascii\(\'xn\-\-lgb32f2753cosb\.xn\-\-jkb91hlz1azih\'\)\ throws\ error\ B2\ B3\ V6\ \[data\/IdnaTest\.txt\:5642\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("\x{0816}.𐨕𚚕", %p)},	undef,	"to_ascii\(\'\\u0816\.𐨕\?\'\)\ throws\ error\ B1\ B2\ B3\ B6\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:5643\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--rub.xn--tr9c248x", %p)},	undef,	"to_ascii\(\'xn\-\-rub\.xn\-\-tr9c248x\'\)\ throws\ error\ B1\ B2\ B3\ B6\ V5\ V6\ \[data\/IdnaTest\.txt\:5644\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("--。𽊆\x{0767}𐽋𞠬", %p)},	undef,	"to_ascii\(\'\-\-\。\?\\u0767\?𞠬\'\)\ throws\ error\ B1\ B5\ B6\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:5645\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("--。𽊆\x{0767}𐽋𞠬", %p)},	undef,	"to_ascii\(\'\-\-\。\?\\u0767𐽋𞠬\'\)\ throws\ error\ B1\ B5\ B6\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:5645\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("--.xn--rpb6226k77pfh58p", %p)},	undef,	"to_ascii\(\'\-\-\.xn\-\-rpb6226k77pfh58p\'\)\ throws\ error\ B1\ B5\ B6\ V3\ V6\ \[data\/IdnaTest\.txt\:5646\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("򛭦𐋥𹸐.≯\x{08B0}\x{08A6}󔛣", %p)},	undef,	"to_ascii\(\'\?𐋥\?\.\≯\\u08B0\\u08A6\?\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:5647\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("򛭦𐋥𹸐.>\x{0338}\x{08B0}\x{08A6}󔛣", %p)},	undef,	"to_ascii\(\'\?𐋥\?\.\>\\u0338\\u08B0\\u08A6\?\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:5648\]") or ($@ and diag($@));
@@ -5565,14 +5565,14 @@ is(eval{uts46_to_ascii("񗑿\x{A806}₄򩞆。𲩧󠒹Σ", %p)},	undef,	"to_asci
 is(eval{uts46_to_ascii("񗑿\x{A806}₄򩞆。𲩧󠒹σ", %p)},	undef,	"to_ascii\(\'\?\\uA806₄\?。\?\?σ\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:7003\]") or ($@ and diag($@));
 SKIP: { skip sprintf("requires Unicode® v7.0 (perl v5.21.1) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v7.0; is(eval{uts46_to_ascii("󠆀\x{0723}。\x{1DF4}\x{0775}", %p)},	undef,	"to_ascii\(\'\󠆀\\u0723\。\\u1DF4\\u0775\'\)\ throws\ error\ B1\ V5\ \[data\/IdnaTest\.txt\:7004\]") or ($@ and diag($@)); }
 is(eval{uts46_to_ascii("xn--tnb.xn--5pb136i", %p)},	undef,	"to_ascii\(\'xn\-\-tnb\.xn\-\-5pb136i\'\)\ throws\ error\ B1\ V5\ \[data\/IdnaTest\.txt\:7005\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("𐹱\x{0842}𝪨。𬼖Ⴑ\x{200D}", %p)},	undef,	"to_ascii\(\'𐹱\\u0842𝪨。\?Ⴑ\\u200D\'\)\ throws\ error\ B1\ B6\ C2\ P1\ V6\ \[data\/IdnaTest\.txt\:7007\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("𐹱\x{0842}𝪨。𬼖Ⴑ\x{200D}", %p)},	undef,	"to_ascii\(\'𐹱\\u0842𝪨\。\?Ⴑ\\u200D\'\)\ throws\ error\ B1\ B6\ C2\ P1\ V6\ \[data\/IdnaTest\.txt\:7009\]") or ($@ and diag($@));
-SKIP: { skip sprintf("requires Unicode® v10.0 (perl v5.28.0) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v10.0; is(eval{uts46_to_ascii("𐹱\x{0842}𝪨。𬼖ⴑ\x{200D}", %p)},	undef,	"to_ascii\(\'𐹱\\u0842𝪨\。\?ⴑ\\u200D\'\)\ throws\ error\ B1\ B6\ C2\ \[data\/IdnaTest\.txt\:7011\]") or ($@ and diag($@)); }
+is(eval{uts46_to_ascii("𐹱\x{0842}𝪨。𬼖Ⴑ\x{200D}", %p)},	undef,	"to_ascii\(\'𐹱\\u0842𝪨。𬼖Ⴑ\\u200D\'\)\ throws\ error\ B1\ B6\ C2\ P1\ V6\ \[data\/IdnaTest\.txt\:7007\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("𐹱\x{0842}𝪨。𬼖Ⴑ\x{200D}", %p)},	undef,	"to_ascii\(\'𐹱\\u0842𝪨\。𬼖Ⴑ\\u200D\'\)\ throws\ error\ B1\ B6\ C2\ P1\ V6\ \[data\/IdnaTest\.txt\:7009\]") or ($@ and diag($@));
+SKIP: { skip sprintf("requires Unicode® v10.0 (perl v5.28.0) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v10.0; is(eval{uts46_to_ascii("𐹱\x{0842}𝪨。𬼖ⴑ\x{200D}", %p)},	undef,	"to_ascii\(\'𐹱\\u0842𝪨\。𬼖ⴑ\\u200D\'\)\ throws\ error\ B1\ B6\ C2\ \[data\/IdnaTest\.txt\:7011\]") or ($@ and diag($@)); }
 is(eval{uts46_to_ascii("xn--0vb1535kdb6e.xn--8kjz186s", %p)},	undef,	"to_ascii\(\'xn\-\-0vb1535kdb6e\.xn\-\-8kjz186s\'\)\ throws\ error\ B1\ \[data\/IdnaTest\.txt\:7012\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--0vb1535kdb6e.xn--1ug742c5714c", %p)},	undef,	"to_ascii\(\'xn\-\-0vb1535kdb6e\.xn\-\-1ug742c5714c\'\)\ throws\ error\ B1\ B6\ C2\ \[data\/IdnaTest\.txt\:7013\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--0vb1535kdb6e.xn--pnd93707a", %p)},	undef,	"to_ascii\(\'xn\-\-0vb1535kdb6e\.xn\-\-pnd93707a\'\)\ throws\ error\ B1\ V6\ \[data\/IdnaTest\.txt\:7014\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--0vb1535kdb6e.xn--pnd879eqy33c", %p)},	undef,	"to_ascii\(\'xn\-\-0vb1535kdb6e\.xn\-\-pnd879eqy33c\'\)\ throws\ error\ B1\ B6\ C2\ V6\ \[data\/IdnaTest\.txt\:7015\]") or ($@ and diag($@));
-SKIP: { skip sprintf("requires Unicode® v10.0 (perl v5.28.0) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v10.0; is(eval{uts46_to_ascii("𐹱\x{0842}𝪨。𬼖ⴑ\x{200D}", %p)},	undef,	"to_ascii\(\'𐹱\\u0842𝪨。\?ⴑ\\u200D\'\)\ throws\ error\ B1\ B6\ C2\ \[data\/IdnaTest\.txt\:7017\]") or ($@ and diag($@)); }
+SKIP: { skip sprintf("requires Unicode® v10.0 (perl v5.28.0) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v10.0; is(eval{uts46_to_ascii("𐹱\x{0842}𝪨。𬼖ⴑ\x{200D}", %p)},	undef,	"to_ascii\(\'𐹱\\u0842𝪨。𬼖ⴑ\\u200D\'\)\ throws\ error\ B1\ B6\ C2\ \[data\/IdnaTest\.txt\:7017\]") or ($@ and diag($@)); }
 is(eval{uts46_to_ascii("\x{1714}𐭪󠙘\x{200D}。-𐹴", %p)},	undef,	"to_ascii\(\'\\u1714𐭪\?\\u200D。\-𐹴\'\)\ throws\ error\ B1\ C2\ P1\ V3\ V5\ V6\ \[data\/IdnaTest\.txt\:7019\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("\x{1714}𐭪󠙘\x{200D}。-𐹴", %p)},	undef,	"to_ascii\(\'\\u1714𐭪\?\\u200D\。\-𐹴\'\)\ throws\ error\ B1\ C2\ P1\ V3\ V5\ V6\ \[data\/IdnaTest\.txt\:7021\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--fze4126jujt0g.xn----c36i", %p)},	undef,	"to_ascii\(\'xn\-\-fze4126jujt0g\.xn\-\-\-\-c36i\'\)\ throws\ error\ B1\ V3\ V5\ V6\ \[data\/IdnaTest\.txt\:7022\]") or ($@ and diag($@));
@@ -6070,11 +6070,11 @@ is(eval{uts46_to_ascii("xn--ie8c.xn--2g51a", %p)},	undef,	"to_ascii\(\'xn\-\-ie8
 is(eval{uts46_to_ascii("xn--ie8c.xn--0ug03366c", %p)},	undef,	"to_ascii\(\'xn\-\-ie8c\.xn\-\-0ug03366c\'\)\ throws\ error\ C1\ V5\ V6\ \[data\/IdnaTest\.txt\:7658\]") or ($@ and diag($@));
 SKIP: { skip sprintf("requires Unicode® v5.1 (perl v5.10.1) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v5.1; is(eval{uts46_to_ascii("\x{063D}\x{06E3}.𐨎", %p)},	undef,	"to_ascii\(\'\\u063D\\u06E3\.𐨎\'\)\ throws\ error\ B1\ B3\ B6\ V5\ \[data\/IdnaTest\.txt\:7659\]") or ($@ and diag($@)); }
 is(eval{uts46_to_ascii("xn--8gb64a.xn--mr9c", %p)},	undef,	"to_ascii\(\'xn\-\-8gb64a\.xn\-\-mr9c\'\)\ throws\ error\ B1\ B3\ B6\ V5\ \[data\/IdnaTest\.txt\:7660\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("漦Ⴙς.񡻀𐴄", %p)},	undef,	"to_ascii\(\'漦Ⴙς\.\?\?\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7662\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("漦ⴙς.񡻀𐴄", %p)},	undef,	"to_ascii\(\'漦ⴙς\.\?\?\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7664\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("漦ႹΣ.񡻀𐴄", %p)},	undef,	"to_ascii\(\'漦ႹΣ\.\?\?\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7665\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("漦ⴙσ.񡻀𐴄", %p)},	undef,	"to_ascii\(\'漦ⴙσ\.\?\?\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7666\]") or ($@ and diag($@));
-is(eval{uts46_to_ascii("漦Ⴙσ.񡻀𐴄", %p)},	undef,	"to_ascii\(\'漦Ⴙσ\.\?\?\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7667\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("漦Ⴙς.񡻀𐴄", %p)},	undef,	"to_ascii\(\'漦Ⴙς\.\?𐴄\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7662\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("漦ⴙς.񡻀𐴄", %p)},	undef,	"to_ascii\(\'漦ⴙς\.\?𐴄\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7664\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("漦ႹΣ.񡻀𐴄", %p)},	undef,	"to_ascii\(\'漦ႹΣ\.\?𐴄\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7665\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("漦ⴙσ.񡻀𐴄", %p)},	undef,	"to_ascii\(\'漦ⴙσ\.\?𐴄\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7666\]") or ($@ and diag($@));
+is(eval{uts46_to_ascii("漦Ⴙσ.񡻀𐴄", %p)},	undef,	"to_ascii\(\'漦Ⴙσ\.\?𐴄\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7667\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--4xa947d717e.xn--9d0d3162t", %p)},	undef,	"to_ascii\(\'xn\-\-4xa947d717e\.xn\-\-9d0d3162t\'\)\ throws\ error\ B5\ B6\ V6\ \[data\/IdnaTest\.txt\:7668\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--4xa772sl47b.xn--9d0d3162t", %p)},	undef,	"to_ascii\(\'xn\-\-4xa772sl47b\.xn\-\-9d0d3162t\'\)\ throws\ error\ B5\ B6\ V6\ \[data\/IdnaTest\.txt\:7669\]") or ($@ and diag($@));
 is(eval{uts46_to_ascii("xn--3xa972sl47b.xn--9d0d3162t", %p)},	undef,	"to_ascii\(\'xn\-\-3xa972sl47b\.xn\-\-9d0d3162t\'\)\ throws\ error\ B5\ B6\ V6\ \[data\/IdnaTest\.txt\:7670\]") or ($@ and diag($@));
diff --git a/t/uts46_to_unicode.t b/t/uts46_to_unicode.t
index c3d505b..3842e97 100644
--- a/t/uts46_to_unicode.t
+++ b/t/uts46_to_unicode.t
@@ -1093,10 +1093,10 @@ is(eval{uts46_to_unicode("xn--osd925cvyn.xn--73g3065g", %p)},	undef,	"to_unicode
 is(eval{uts46_to_unicode("xn--pnd26a55x.xn--f3g7465g", %p)},	undef,	"to_unicode\(\'xn\-\-pnd26a55x\.xn\-\-f3g7465g\'\)\ throws\ error\ V5\ V6\ \[data\/IdnaTest\.txt\:1157\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("\x{1BF3}ⴑ\x{115F}.𑄴ⅎ", %p)},	undef,	"to_unicode\(\'\\u1BF3ⴑ\\u115F.𑄴ⅎ\'\)\ throws\ error\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:1158\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("\x{1BF3}Ⴑ\x{115F}.𑄴ⅎ", %p)},	undef,	"to_unicode\(\'\\u1BF3Ⴑ\\u115F.𑄴ⅎ\'\)\ throws\ error\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:1159\]") or ($@ and diag($@));
-is(eval{uts46_to_unicode("𜉆。Ⴃ𐴣𐹹똯", %p)},	undef,	"to_unicode\(\'\?\。Ⴃ\?𐹹똯\'\)\ throws\ error\ B5\ P1\ V6\ \[data\/IdnaTest\.txt\:1160\]") or ($@ and diag($@));
-is(eval{uts46_to_unicode("𜉆。Ⴃ𐴣𐹹똯", %p)},	undef,	"to_unicode\(\'\?\。Ⴃ\?𐹹똯\'\)\ throws\ error\ B5\ P1\ V6\ \[data\/IdnaTest\.txt\:1161\]") or ($@ and diag($@));
-is(eval{uts46_to_unicode("𜉆。ⴃ𐴣𐹹똯", %p)},	undef,	"to_unicode\(\'\?\。ⴃ\?𐹹똯\'\)\ throws\ error\ B5\ P1\ V6\ \[data\/IdnaTest\.txt\:1162\]") or ($@ and diag($@));
-is(eval{uts46_to_unicode("𜉆。ⴃ𐴣𐹹똯", %p)},	undef,	"to_unicode\(\'\?\。ⴃ\?𐹹똯\'\)\ throws\ error\ B5\ P1\ V6\ \[data\/IdnaTest\.txt\:1163\]") or ($@ and diag($@));
+is(eval{uts46_to_unicode("𜉆。Ⴃ𐴣𐹹똯", %p)},	undef,	"to_unicode\(\'\?\。Ⴃ𐴣𐹹똯\'\)\ throws\ error\ B5\ P1\ V6\ \[data\/IdnaTest\.txt\:1160\]") or ($@ and diag($@));
+is(eval{uts46_to_unicode("𜉆。Ⴃ𐴣𐹹똯", %p)},	undef,	"to_unicode\(\'\?\。Ⴃ𐴣𐹹똯\'\)\ throws\ error\ B5\ P1\ V6\ \[data\/IdnaTest\.txt\:1161\]") or ($@ and diag($@));
+is(eval{uts46_to_unicode("𜉆。ⴃ𐴣𐹹똯", %p)},	undef,	"to_unicode\(\'\?\。ⴃ𐴣𐹹똯\'\)\ throws\ error\ B5\ P1\ V6\ \[data\/IdnaTest\.txt\:1162\]") or ($@ and diag($@));
+is(eval{uts46_to_unicode("𜉆。ⴃ𐴣𐹹똯", %p)},	undef,	"to_unicode\(\'\?\。ⴃ𐴣𐹹똯\'\)\ throws\ error\ B5\ P1\ V6\ \[data\/IdnaTest\.txt\:1163\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("xn--187g.xn--ukjy205b8rscdeb", %p)},	undef,	"to_unicode\(\'xn\-\-187g\.xn\-\-ukjy205b8rscdeb\'\)\ throws\ error\ B5\ V6\ \[data\/IdnaTest\.txt\:1164\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("xn--187g.xn--bnd4785f8r8bdeb", %p)},	undef,	"to_unicode\(\'xn\-\-187g\.xn\-\-bnd4785f8r8bdeb\'\)\ throws\ error\ B5\ V6\ \[data\/IdnaTest\.txt\:1165\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("𐫀。⳻󠙾󠄷\x{3164}", %p)},	undef,	"to_unicode\(\'𐫀。⳻\?\󠄷\\u3164\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:1166\]") or ($@ and diag($@));
@@ -1317,12 +1317,12 @@ is(eval{uts46_to_unicode("xn--tlvq3513e.xn--hib9228d", %p)},	undef,	"to_unicode\
 is(eval{uts46_to_unicode("󠄚≯ꡢ。\x{0891}\x{1DFF}", %p)},	undef,	"to_unicode\(\'\󠄚\≯ꡢ\。\\u0891\\u1DFF\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:1381\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("󠄚>\x{0338}ꡢ。\x{0891}\x{1DFF}", %p)},	undef,	"to_unicode\(\'\󠄚\>\\u0338ꡢ\。\\u0891\\u1DFF\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:1382\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("xn--hdh7783c.xn--9xb680i", %p)},	undef,	"to_unicode\(\'xn\-\-hdh7783c\.xn\-\-9xb680i\'\)\ throws\ error\ B1\ V6\ \[data\/IdnaTest\.txt\:1383\]") or ($@ and diag($@));
-is(eval{uts46_to_unicode("\x{FDC3}𮁱\x{0B4D}𐨿.󐧤Ⴗ", %p)},	undef,	"to_unicode\(\'\\uFDC3\?\\u0B4D𐨿\.\?Ⴗ\'\)\ throws\ error\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:1384\]") or ($@ and diag($@));
-is(eval{uts46_to_unicode("\x{0643}\x{0645}\x{0645}𮁱\x{0B4D}𐨿.󐧤Ⴗ", %p)},	undef,	"to_unicode\(\'\\u0643\\u0645\\u0645\?\\u0B4D𐨿\.\?Ⴗ\'\)\ throws\ error\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:1385\]") or ($@ and diag($@));
-is(eval{uts46_to_unicode("\x{0643}\x{0645}\x{0645}𮁱\x{0B4D}𐨿.󐧤ⴗ", %p)},	undef,	"to_unicode\(\'\\u0643\\u0645\\u0645\?\\u0B4D𐨿\.\?ⴗ\'\)\ throws\ error\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:1386\]") or ($@ and diag($@));
+is(eval{uts46_to_unicode("\x{FDC3}𮁱\x{0B4D}𐨿.󐧤Ⴗ", %p)},	undef,	"to_unicode\(\'\\uFDC3𮁱\\u0B4D𐨿\.\?Ⴗ\'\)\ throws\ error\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:1384\]") or ($@ and diag($@));
+is(eval{uts46_to_unicode("\x{0643}\x{0645}\x{0645}𮁱\x{0B4D}𐨿.󐧤Ⴗ", %p)},	undef,	"to_unicode\(\'\\u0643\\u0645\\u0645𮁱\\u0B4D𐨿\.\?Ⴗ\'\)\ throws\ error\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:1385\]") or ($@ and diag($@));
+is(eval{uts46_to_unicode("\x{0643}\x{0645}\x{0645}𮁱\x{0B4D}𐨿.󐧤ⴗ", %p)},	undef,	"to_unicode\(\'\\u0643\\u0645\\u0645𮁱\\u0B4D𐨿\.\?ⴗ\'\)\ throws\ error\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:1386\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("xn--fhbea662czx68a2tju.xn--fljz2846h", %p)},	undef,	"to_unicode\(\'xn\-\-fhbea662czx68a2tju\.xn\-\-fljz2846h\'\)\ throws\ error\ B2\ B3\ V6\ \[data\/IdnaTest\.txt\:1387\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("xn--fhbea662czx68a2tju.xn--vnd55511o", %p)},	undef,	"to_unicode\(\'xn\-\-fhbea662czx68a2tju\.xn\-\-vnd55511o\'\)\ throws\ error\ B2\ B3\ V6\ \[data\/IdnaTest\.txt\:1388\]") or ($@ and diag($@));
-is(eval{uts46_to_unicode("\x{FDC3}𮁱\x{0B4D}𐨿.󐧤ⴗ", %p)},	undef,	"to_unicode\(\'\\uFDC3\?\\u0B4D𐨿\.\?ⴗ\'\)\ throws\ error\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:1389\]") or ($@ and diag($@));
+is(eval{uts46_to_unicode("\x{FDC3}𮁱\x{0B4D}𐨿.󐧤ⴗ", %p)},	undef,	"to_unicode\(\'\\uFDC3𮁱\\u0B4D𐨿\.\?ⴗ\'\)\ throws\ error\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:1389\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("𞀨。\x{1B44}򡛨𞎇", %p)},	undef,	"to_unicode\(\'𞀨。\\u1B44\?\?\'\)\ throws\ error\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:1390\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("𞀨。\x{1B44}򡛨𞎇", %p)},	undef,	"to_unicode\(\'𞀨\。\\u1B44\?\?\'\)\ throws\ error\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:1391\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("xn--mi4h.xn--1uf6843smg20c", %p)},	undef,	"to_unicode\(\'xn\-\-mi4h\.xn\-\-1uf6843smg20c\'\)\ throws\ error\ V5\ V6\ \[data\/IdnaTest\.txt\:1392\]") or ($@ and diag($@));
@@ -1475,8 +1475,8 @@ is(eval{uts46_to_unicode("\x{200D}f𑓂。󠺨︒\x{077E}𐹢", %p)},	undef,	"to
 is(eval{uts46_to_unicode("\x{200D}f𑓂。󠺨︒\x{077E}𐹢", %p)},	undef,	"to_unicode\(\'\\u200Df𑓂\。\?︒\\u077E𐹢\'\)\ throws\ error\ B1\ C2\ P1\ V6\ \[data\/IdnaTest\.txt\:1539\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("xn--f-kq9i.xn--fqb1637j8hky9452a", %p)},	undef,	"to_unicode\(\'xn\-\-f\-kq9i\.xn\-\-fqb1637j8hky9452a\'\)\ throws\ error\ B1\ V6\ \[data\/IdnaTest\.txt\:1540\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("xn--f-tgn9761i.xn--fqb1637j8hky9452a", %p)},	undef,	"to_unicode\(\'xn\-\-f\-tgn9761i\.xn\-\-fqb1637j8hky9452a\'\)\ throws\ error\ B1\ C2\ V6\ \[data\/IdnaTest\.txt\:1541\]") or ($@ and diag($@));
-is(eval{uts46_to_unicode("\x{0845}🄇𐼗︒。𐹻𑜫", %p)},	undef,	"to_unicode\(\'\\u0845🄇\?︒。𐹻𑜫\'\)\ throws\ error\ B1\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:1542\]") or ($@ and diag($@));
-is(eval{uts46_to_unicode("\x{0845}6,𐼗。。𐹻𑜫", %p)},	undef,	"to_unicode\(\'\\u08456\,\?\。\。𐹻𑜫\'\)\ throws\ error\ B1\ P1\ V6\ A4_2\ \[data\/IdnaTest\.txt\:1543\]") or ($@ and diag($@));
+is(eval{uts46_to_unicode("\x{0845}🄇𐼗︒。𐹻𑜫", %p)},	undef,	"to_unicode\(\'\\u0845🄇𐼗︒。𐹻𑜫\'\)\ throws\ error\ B1\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:1542\]") or ($@ and diag($@));
+is(eval{uts46_to_unicode("\x{0845}6,𐼗。。𐹻𑜫", %p)},	undef,	"to_unicode\(\'\\u08456\,𐼗\。\。𐹻𑜫\'\)\ throws\ error\ B1\ P1\ V6\ A4_2\ \[data\/IdnaTest\.txt\:1543\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("xn--6,-r4e4420y..xn--zo0di2m", %p)},	undef,	"to_unicode\(\'xn\-\-6\,\-r4e4420y\.\.xn\-\-zo0di2m\'\)\ throws\ error\ B1\ P1\ V6\ A4_2\ \[data\/IdnaTest\.txt\:1544\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("xn--3vb4696jpxkjh7s.xn--zo0di2m", %p)},	undef,	"to_unicode\(\'xn\-\-3vb4696jpxkjh7s\.xn\-\-zo0di2m\'\)\ throws\ error\ B1\ B3\ V6\ \[data\/IdnaTest\.txt\:1545\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("𐹈.\x{1DC0}𑈱𐦭", %p)},	undef,	"to_unicode\(\'\?\.\\u1DC0𑈱𐦭\'\)\ throws\ error\ B1\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:1546\]") or ($@ and diag($@));
@@ -1599,10 +1599,10 @@ is(eval{uts46_to_unicode("𵋅。Ss𬵩\x{200D}", %p)},	undef,	"to_unicode\(\'\?
 is(eval{uts46_to_unicode("xn--ey1p.xn--ss-eq36b", %p)},	undef,	"to_unicode\(\'xn\-\-ey1p\.xn\-\-ss\-eq36b\'\)\ throws\ error\ V6\ \[data\/IdnaTest\.txt\:1663\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("xn--ey1p.xn--ss-n1tx0508a", %p)},	undef,	"to_unicode\(\'xn\-\-ey1p\.xn\-\-ss\-n1tx0508a\'\)\ throws\ error\ C2\ V6\ \[data\/IdnaTest\.txt\:1664\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("xn--ey1p.xn--zca870nz438b", %p)},	undef,	"to_unicode\(\'xn\-\-ey1p\.xn\-\-zca870nz438b\'\)\ throws\ error\ C2\ V6\ \[data\/IdnaTest\.txt\:1665\]") or ($@ and diag($@));
-SKIP: { skip sprintf("requires Unicode® v10.0 (perl v5.28.0) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v10.0; is(eval{uts46_to_unicode("\x{200C}𭉝。\x{07F1}\x{0301}𞹻", %p)},	undef,	"to_unicode\(\'\\u200C\?\。\\u07F1\\u0301𞹻\'\)\ throws\ error\ B1\ C1\ V5\ \[data\/IdnaTest\.txt\:1666\]") or ($@ and diag($@)); }
-SKIP: { skip sprintf("requires Unicode® v10.0 (perl v5.28.0) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v10.0; is(eval{uts46_to_unicode("\x{200C}𭉝。\x{07F1}\x{0301}𞹻", %p)},	undef,	"to_unicode\(\'\\u200C\?\。\\u07F1\\u0301𞹻\'\)\ throws\ error\ B1\ C1\ V5\ \[data\/IdnaTest\.txt\:1667\]") or ($@ and diag($@)); }
-SKIP: { skip sprintf("requires Unicode® v10.0 (perl v5.28.0) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v10.0; is(eval{uts46_to_unicode("\x{200C}𭉝。\x{07F1}\x{0301}\x{063A}", %p)},	undef,	"to_unicode\(\'\\u200C\?\。\\u07F1\\u0301\\u063A\'\)\ throws\ error\ B1\ C1\ V5\ \[data\/IdnaTest\.txt\:1668\]") or ($@ and diag($@)); }
-SKIP: { skip sprintf("requires Unicode® v10.0 (perl v5.28.0) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v10.0; is(eval{uts46_to_unicode("\x{200C}𭉝。\x{07F1}\x{0301}\x{063A}", %p)},	undef,	"to_unicode\(\'\\u200C\?\。\\u07F1\\u0301\\u063A\'\)\ throws\ error\ B1\ C1\ V5\ \[data\/IdnaTest\.txt\:1669\]") or ($@ and diag($@)); }
+SKIP: { skip sprintf("requires Unicode® v10.0 (perl v5.28.0) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v10.0; is(eval{uts46_to_unicode("\x{200C}𭉝。\x{07F1}\x{0301}𞹻", %p)},	undef,	"to_unicode\(\'\\u200C𭉝\。\\u07F1\\u0301𞹻\'\)\ throws\ error\ B1\ C1\ V5\ \[data\/IdnaTest\.txt\:1666\]") or ($@ and diag($@)); }
+SKIP: { skip sprintf("requires Unicode® v10.0 (perl v5.28.0) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v10.0; is(eval{uts46_to_unicode("\x{200C}𭉝。\x{07F1}\x{0301}𞹻", %p)},	undef,	"to_unicode\(\'\\u200C𭉝\。\\u07F1\\u0301𞹻\'\)\ throws\ error\ B1\ C1\ V5\ \[data\/IdnaTest\.txt\:1667\]") or ($@ and diag($@)); }
+SKIP: { skip sprintf("requires Unicode® v10.0 (perl v5.28.0) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v10.0; is(eval{uts46_to_unicode("\x{200C}𭉝。\x{07F1}\x{0301}\x{063A}", %p)},	undef,	"to_unicode\(\'\\u200C𭉝\。\\u07F1\\u0301\\u063A\'\)\ throws\ error\ B1\ C1\ V5\ \[data\/IdnaTest\.txt\:1668\]") or ($@ and diag($@)); }
+SKIP: { skip sprintf("requires Unicode® v10.0 (perl v5.28.0) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v10.0; is(eval{uts46_to_unicode("\x{200C}𭉝。\x{07F1}\x{0301}\x{063A}", %p)},	undef,	"to_unicode\(\'\\u200C𭉝\。\\u07F1\\u0301\\u063A\'\)\ throws\ error\ B1\ C1\ V5\ \[data\/IdnaTest\.txt\:1669\]") or ($@ and diag($@)); }
 is(eval{uts46_to_unicode("xn--634m.xn--lsa46nuub", %p)},	undef,	"to_unicode\(\'xn\-\-634m\.xn\-\-lsa46nuub\'\)\ throws\ error\ B1\ V5\ \[data\/IdnaTest\.txt\:1670\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("xn--0ugy003y.xn--lsa46nuub", %p)},	undef,	"to_unicode\(\'xn\-\-0ugy003y\.xn\-\-lsa46nuub\'\)\ throws\ error\ B1\ C1\ V5\ \[data\/IdnaTest\.txt\:1671\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("𞼌\x{200C}𑈶。𐹡", %p)},	undef,	"to_unicode\(\'\?\\u200C𑈶\。𐹡\'\)\ throws\ error\ B1\ B3\ C1\ P1\ V6\ \[data\/IdnaTest\.txt\:1672\]") or ($@ and diag($@));
@@ -1933,28 +1933,28 @@ is(eval{uts46_to_unicode("𐶭舌。\x{200C}𑚶򟱃𞰘", %p)},	undef,	"to_unic
 is(eval{uts46_to_unicode("𐶭舌。\x{200C}𑚶򟱃𞰘", %p)},	undef,	"to_unicode\(\'\?舌\。\\u200C𑚶\?\?\'\)\ throws\ error\ B1\ B2\ B3\ C1\ P1\ V6\ \[data\/IdnaTest\.txt\:1997\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("xn--tc1ao37z.xn--6e2dw557azds2d", %p)},	undef,	"to_unicode\(\'xn\-\-tc1ao37z\.xn\-\-6e2dw557azds2d\'\)\ throws\ error\ B2\ B3\ B5\ B6\ V5\ V6\ \[data\/IdnaTest\.txt\:1998\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("xn--tc1ao37z.xn--0ugx728gi1nfwqz2e", %p)},	undef,	"to_unicode\(\'xn\-\-tc1ao37z\.xn\-\-0ugx728gi1nfwqz2e\'\)\ throws\ error\ B1\ B2\ B3\ C1\ V6\ \[data\/IdnaTest\.txt\:1999\]") or ($@ and diag($@));
-is(eval{uts46_to_unicode("\x{200C}Ⴠ-.𝟷ς𞴺ς", %p)},	undef,	"to_unicode\(\'\\u200CჀ\-\.𝟷ς\?ς\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2000\]") or ($@ and diag($@));
-is(eval{uts46_to_unicode("\x{200C}Ⴠ-.𝟷ς𞴺ς", %p)},	undef,	"to_unicode\(\'\\u200CჀ\-\.𝟷ς\?ς\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2001\]") or ($@ and diag($@));
-is(eval{uts46_to_unicode("\x{200C}Ⴠ-.1ς𞴺ς", %p)},	undef,	"to_unicode\(\'\\u200CჀ\-\.1ς\?ς\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2002\]") or ($@ and diag($@));
-is(eval{uts46_to_unicode("\x{200C}Ⴠ-.1ς𞴺ς", %p)},	undef,	"to_unicode\(\'\\u200CჀ\-\.1ς\?ς\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2003\]") or ($@ and diag($@));
-is(eval{uts46_to_unicode("\x{200C}ⴠ-.1ς𞴺ς", %p)},	undef,	"to_unicode\(\'\\u200Cⴠ\-\.1ς\?ς\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2004\]") or ($@ and diag($@));
-is(eval{uts46_to_unicode("\x{200C}ⴠ-.1ς𞴺ς", %p)},	undef,	"to_unicode\(\'\\u200Cⴠ\-\.1ς\?ς\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2005\]") or ($@ and diag($@));
-is(eval{uts46_to_unicode("\x{200C}Ⴠ-.1Σ𞴺Σ", %p)},	undef,	"to_unicode\(\'\\u200CჀ\-\.1Σ\?Σ\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2006\]") or ($@ and diag($@));
-is(eval{uts46_to_unicode("\x{200C}Ⴠ-.1Σ𞴺Σ", %p)},	undef,	"to_unicode\(\'\\u200CჀ\-\.1Σ\?Σ\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2007\]") or ($@ and diag($@));
-is(eval{uts46_to_unicode("\x{200C}ⴠ-.1σ𞴺σ", %p)},	undef,	"to_unicode\(\'\\u200Cⴠ\-\.1σ\?σ\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2008\]") or ($@ and diag($@));
-is(eval{uts46_to_unicode("\x{200C}ⴠ-.1σ𞴺σ", %p)},	undef,	"to_unicode\(\'\\u200Cⴠ\-\.1σ\?σ\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2009\]") or ($@ and diag($@));
+is(eval{uts46_to_unicode("\x{200C}Ⴠ-.𝟷ς𞴺ς", %p)},	undef,	"to_unicode\(\'\\u200CჀ\-\.𝟷ς𞴺ς\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2000\]") or ($@ and diag($@));
+is(eval{uts46_to_unicode("\x{200C}Ⴠ-.𝟷ς𞴺ς", %p)},	undef,	"to_unicode\(\'\\u200CჀ\-\.𝟷ς𞴺ς\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2001\]") or ($@ and diag($@));
+is(eval{uts46_to_unicode("\x{200C}Ⴠ-.1ς𞴺ς", %p)},	undef,	"to_unicode\(\'\\u200CჀ\-\.1ς𞴺ς\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2002\]") or ($@ and diag($@));
+is(eval{uts46_to_unicode("\x{200C}Ⴠ-.1ς𞴺ς", %p)},	undef,	"to_unicode\(\'\\u200CჀ\-\.1ς𞴺ς\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2003\]") or ($@ and diag($@));
+is(eval{uts46_to_unicode("\x{200C}ⴠ-.1ς𞴺ς", %p)},	undef,	"to_unicode\(\'\\u200Cⴠ\-\.1ς𞴺ς\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2004\]") or ($@ and diag($@));
+is(eval{uts46_to_unicode("\x{200C}ⴠ-.1ς𞴺ς", %p)},	undef,	"to_unicode\(\'\\u200Cⴠ\-\.1ς𞴺ς\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2005\]") or ($@ and diag($@));
+is(eval{uts46_to_unicode("\x{200C}Ⴠ-.1Σ𞴺Σ", %p)},	undef,	"to_unicode\(\'\\u200CჀ\-\.1Σ𞴺Σ\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2006\]") or ($@ and diag($@));
+is(eval{uts46_to_unicode("\x{200C}Ⴠ-.1Σ𞴺Σ", %p)},	undef,	"to_unicode\(\'\\u200CჀ\-\.1Σ𞴺Σ\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2007\]") or ($@ and diag($@));
+is(eval{uts46_to_unicode("\x{200C}ⴠ-.1σ𞴺σ", %p)},	undef,	"to_unicode\(\'\\u200Cⴠ\-\.1σ𞴺σ\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2008\]") or ($@ and diag($@));
+is(eval{uts46_to_unicode("\x{200C}ⴠ-.1σ𞴺σ", %p)},	undef,	"to_unicode\(\'\\u200Cⴠ\-\.1σ𞴺σ\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2009\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("xn----2ws.xn--1-0mba52321c", %p)},	undef,	"to_unicode\(\'xn\-\-\-\-2ws\.xn\-\-1\-0mba52321c\'\)\ throws\ error\ B1\ B6\ V3\ V6\ \[data\/IdnaTest\.txt\:2010\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("xn----rgn530d.xn--1-0mba52321c", %p)},	undef,	"to_unicode\(\'xn\-\-\-\-rgn530d\.xn\-\-1\-0mba52321c\'\)\ throws\ error\ B1\ C1\ V3\ V6\ \[data\/IdnaTest\.txt\:2011\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("xn----z1g.xn--1-0mba52321c", %p)},	undef,	"to_unicode\(\'xn\-\-\-\-z1g\.xn\-\-1\-0mba52321c\'\)\ throws\ error\ B1\ B6\ V3\ V6\ \[data\/IdnaTest\.txt\:2012\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("xn----z1g168i.xn--1-0mba52321c", %p)},	undef,	"to_unicode\(\'xn\-\-\-\-z1g168i\.xn\-\-1\-0mba52321c\'\)\ throws\ error\ B1\ C1\ V3\ V6\ \[data\/IdnaTest\.txt\:2013\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("xn----rgn530d.xn--1-ymba92321c", %p)},	undef,	"to_unicode\(\'xn\-\-\-\-rgn530d\.xn\-\-1\-ymba92321c\'\)\ throws\ error\ B1\ C1\ V3\ V6\ \[data\/IdnaTest\.txt\:2014\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("xn----z1g168i.xn--1-ymba92321c", %p)},	undef,	"to_unicode\(\'xn\-\-\-\-z1g168i\.xn\-\-1\-ymba92321c\'\)\ throws\ error\ B1\ C1\ V3\ V6\ \[data\/IdnaTest\.txt\:2015\]") or ($@ and diag($@));
-is(eval{uts46_to_unicode("\x{200C}ⴠ-.𝟷ς𞴺ς", %p)},	undef,	"to_unicode\(\'\\u200Cⴠ\-\.𝟷ς\?ς\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2016\]") or ($@ and diag($@));
-is(eval{uts46_to_unicode("\x{200C}ⴠ-.𝟷ς𞴺ς", %p)},	undef,	"to_unicode\(\'\\u200Cⴠ\-\.𝟷ς\?ς\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2017\]") or ($@ and diag($@));
-is(eval{uts46_to_unicode("\x{200C}Ⴠ-.𝟷Σ𞴺Σ", %p)},	undef,	"to_unicode\(\'\\u200CჀ\-\.𝟷Σ\?Σ\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2018\]") or ($@ and diag($@));
-is(eval{uts46_to_unicode("\x{200C}Ⴠ-.𝟷Σ𞴺Σ", %p)},	undef,	"to_unicode\(\'\\u200CჀ\-\.𝟷Σ\?Σ\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2019\]") or ($@ and diag($@));
-is(eval{uts46_to_unicode("\x{200C}ⴠ-.𝟷σ𞴺σ", %p)},	undef,	"to_unicode\(\'\\u200Cⴠ\-\.𝟷σ\?σ\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2020\]") or ($@ and diag($@));
-is(eval{uts46_to_unicode("\x{200C}ⴠ-.𝟷σ𞴺σ", %p)},	undef,	"to_unicode\(\'\\u200Cⴠ\-\.𝟷σ\?σ\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2021\]") or ($@ and diag($@));
+is(eval{uts46_to_unicode("\x{200C}ⴠ-.𝟷ς𞴺ς", %p)},	undef,	"to_unicode\(\'\\u200Cⴠ\-\.𝟷ς𞴺ς\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2016\]") or ($@ and diag($@));
+is(eval{uts46_to_unicode("\x{200C}ⴠ-.𝟷ς𞴺ς", %p)},	undef,	"to_unicode\(\'\\u200Cⴠ\-\.𝟷ς𞴺ς\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2017\]") or ($@ and diag($@));
+is(eval{uts46_to_unicode("\x{200C}Ⴠ-.𝟷Σ𞴺Σ", %p)},	undef,	"to_unicode\(\'\\u200CჀ\-\.𝟷Σ𞴺Σ\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2018\]") or ($@ and diag($@));
+is(eval{uts46_to_unicode("\x{200C}Ⴠ-.𝟷Σ𞴺Σ", %p)},	undef,	"to_unicode\(\'\\u200CჀ\-\.𝟷Σ𞴺Σ\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2019\]") or ($@ and diag($@));
+is(eval{uts46_to_unicode("\x{200C}ⴠ-.𝟷σ𞴺σ", %p)},	undef,	"to_unicode\(\'\\u200Cⴠ\-\.𝟷σ𞴺σ\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2020\]") or ($@ and diag($@));
+is(eval{uts46_to_unicode("\x{200C}ⴠ-.𝟷σ𞴺σ", %p)},	undef,	"to_unicode\(\'\\u200Cⴠ\-\.𝟷σ𞴺σ\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2021\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("𑲘󠄒𓑡。𝟪Ⴜ", %p)},	undef,	"to_unicode\(\'𑲘\󠄒\?。𝟪Ⴜ\'\)\ throws\ error\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:2022\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("𑲘󠄒𓑡。8Ⴜ", %p)},	undef,	"to_unicode\(\'𑲘\󠄒\?\。8Ⴜ\'\)\ throws\ error\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:2023\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("𑲘󠄒𓑡。8ⴜ", %p)},	undef,	"to_unicode\(\'𑲘\󠄒\?\。8ⴜ\'\)\ throws\ error\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:2024\]") or ($@ and diag($@));
@@ -2400,10 +2400,10 @@ is(eval{uts46_to_unicode("𐹰.\x{0600}", %p)},	undef,	"to_unicode\(\'𐹰\.\\u0
 is(eval{uts46_to_unicode("xn--oo0d.xn--ifb", %p)},	undef,	"to_unicode\(\'xn\-\-oo0d\.xn\-\-ifb\'\)\ throws\ error\ B1\ V6\ \[data\/IdnaTest\.txt\:2464\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("-\x{08A8}.ð± –", %p)},	undef,	"to_unicode\(\'\-\\u08A8\.\?\'\)\ throws\ error\ B1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2465\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("xn----mod.xn--5o9n", %p)},	undef,	"to_unicode\(\'xn\-\-\-\-mod\.xn\-\-5o9n\'\)\ throws\ error\ B1\ V3\ V6\ \[data\/IdnaTest\.txt\:2466\]") or ($@ and diag($@));
-is(eval{uts46_to_unicode("≯𞱸󠇀。誆⒈", %p)},	undef,	"to_unicode\(\'\≯\?\󠇀\。誆⒈\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:2467\]") or ($@ and diag($@));
-is(eval{uts46_to_unicode(">\x{0338}𞱸󠇀。誆⒈", %p)},	undef,	"to_unicode\(\'\>\\u0338\?\󠇀\。誆⒈\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:2468\]") or ($@ and diag($@));
-is(eval{uts46_to_unicode("≯𞱸󠇀。誆1.", %p)},	undef,	"to_unicode\(\'\≯\?\󠇀\。誆1\.\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:2469\]") or ($@ and diag($@));
-is(eval{uts46_to_unicode(">\x{0338}𞱸󠇀。誆1.", %p)},	undef,	"to_unicode\(\'\>\\u0338\?\󠇀\。誆1\.\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:2470\]") or ($@ and diag($@));
+is(eval{uts46_to_unicode("≯𞱸󠇀。誆⒈", %p)},	undef,	"to_unicode\(\'\≯𞱸\󠇀\。誆⒈\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:2467\]") or ($@ and diag($@));
+is(eval{uts46_to_unicode(">\x{0338}𞱸󠇀。誆⒈", %p)},	undef,	"to_unicode\(\'\>\\u0338𞱸\󠇀\。誆⒈\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:2468\]") or ($@ and diag($@));
+is(eval{uts46_to_unicode("≯𞱸󠇀。誆1.", %p)},	undef,	"to_unicode\(\'\≯𞱸\󠇀\。誆1\.\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:2469\]") or ($@ and diag($@));
+is(eval{uts46_to_unicode(">\x{0338}𞱸󠇀。誆1.", %p)},	undef,	"to_unicode\(\'\>\\u0338𞱸\󠇀\。誆1\.\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:2470\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("xn--hdh7151p.xn--1-dy1d.", %p)},	undef,	"to_unicode\(\'xn\-\-hdh7151p\.xn\-\-1\-dy1d\.\'\)\ throws\ error\ B1\ V6\ \[data\/IdnaTest\.txt\:2471\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("xn--hdh7151p.xn--tsh1248a", %p)},	undef,	"to_unicode\(\'xn\-\-hdh7151p\.xn\-\-tsh1248a\'\)\ throws\ error\ B1\ V6\ \[data\/IdnaTest\.txt\:2472\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("\x{0616}𞥙䐊\x{0650}.︒\x{0645}↺\x{069C}", %p)},	undef,	"to_unicode\(\'\\u0616𞥙䐊\\u0650.︒\\u0645\↺\\u069C\'\)\ throws\ error\ B1\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:2473\]") or ($@ and diag($@));
@@ -2505,8 +2505,8 @@ is(eval{uts46_to_unicode("󠳛.\x{200D}䤫=\x{0338}ⴞ", %p)},	undef,	"to_unic
 is(eval{uts46_to_unicode("󠳛.\x{200D}䤫=\x{0338}ⴞ", %p)},	undef,	"to_unicode\(\'\?.\\u200D䤫\=\\u0338ⴞ\'\)\ throws\ error\ C2\ P1\ V6\ \[data\/IdnaTest\.txt\:2569\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("󠳛.\x{200D}䤫≠ⴞ", %p)},	undef,	"to_unicode\(\'\?.\\u200D䤫\≠ⴞ\'\)\ throws\ error\ C2\ P1\ V6\ \[data\/IdnaTest\.txt\:2570\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("󠳛.\x{200D}䤫≠ⴞ", %p)},	undef,	"to_unicode\(\'\?.\\u200D䤫\≠ⴞ\'\)\ throws\ error\ C2\ P1\ V6\ \[data\/IdnaTest\.txt\:2571\]") or ($@ and diag($@));
-is(eval{uts46_to_unicode("𐽘𑈵.𐹣🕥", %p)},	undef,	"to_unicode\(\'\?𑈵.𐹣🕥\'\)\ throws\ error\ B1\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:2572\]") or ($@ and diag($@));
-is(eval{uts46_to_unicode("𐽘𑈵.𐹣🕥", %p)},	undef,	"to_unicode\(\'\?𑈵\.𐹣🕥\'\)\ throws\ error\ B1\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:2573\]") or ($@ and diag($@));
+is(eval{uts46_to_unicode("𐽘𑈵.𐹣🕥", %p)},	undef,	"to_unicode\(\'𐽘𑈵.𐹣🕥\'\)\ throws\ error\ B1\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:2572\]") or ($@ and diag($@));
+is(eval{uts46_to_unicode("𐽘𑈵.𐹣🕥", %p)},	undef,	"to_unicode\(\'𐽘𑈵\.𐹣🕥\'\)\ throws\ error\ B1\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:2573\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("xn--bv0d02c.xn--bo0dq650b", %p)},	undef,	"to_unicode\(\'xn\-\-bv0d02c\.xn\-\-bo0dq650b\'\)\ throws\ error\ B1\ B2\ B3\ V6\ \[data\/IdnaTest\.txt\:2574\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("⒊⒈𑁄。9", %p)},	undef,	"to_unicode\(\'⒊⒈𑁄\。9\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:2575\]") or ($@ and diag($@));
 SKIP: { skip sprintf("requires Unicode® v6.0 (perl v5.13.7) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v6.0; is(eval{uts46_to_unicode("3.1.𑁄。9", %p)},	undef,	"to_unicode\(\'3\.1\.𑁄\。9\'\)\ throws\ error\ V5\ \[data\/IdnaTest\.txt\:2576\]") or ($@ and diag($@)); }
@@ -2591,10 +2591,10 @@ SKIP: { skip sprintf("requires Unicode® v7.0 (perl v5.21.1) or higher, only v%v
 SKIP: { skip sprintf("requires Unicode® v7.0 (perl v5.21.1) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v7.0; is(eval{uts46_to_unicode("𐋵。\x{0643}\x{0645}", %p)},	undef,	"to_unicode\(\'𐋵\。\\u0643\\u0645\'\)\ throws\ error\ B1\ \[data\/IdnaTest\.txt\:2655\]") or ($@ and diag($@)); }
 is(eval{uts46_to_unicode("xn--p97c.xn--fhbe", %p)},	undef,	"to_unicode\(\'xn\-\-p97c\.xn\-\-fhbe\'\)\ throws\ error\ B1\ \[data\/IdnaTest\.txt\:2656\]") or ($@ and diag($@));
 SKIP: { skip sprintf("requires Unicode® v7.0 (perl v5.21.1) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v7.0; is(eval{uts46_to_unicode("𐋵.\x{0643}\x{0645}", %p)},	undef,	"to_unicode\(\'𐋵\.\\u0643\\u0645\'\)\ throws\ error\ B1\ \[data\/IdnaTest\.txt\:2657\]") or ($@ and diag($@)); }
-is(eval{uts46_to_unicode("≮𝅶.񱲁\x{AAEC}⹈󰥭", %p)},	undef,	"to_unicode\(\'\≮\?.\?\\uAAEC\?\?\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:2658\]") or ($@ and diag($@));
-is(eval{uts46_to_unicode("<\x{0338}𝅶.񱲁\x{AAEC}⹈󰥭", %p)},	undef,	"to_unicode\(\'\<\\u0338\?.\?\\uAAEC\?\?\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:2659\]") or ($@ and diag($@));
-is(eval{uts46_to_unicode("≮𝅶.񱲁\x{AAEC}⹈󰥭", %p)},	undef,	"to_unicode\(\'\≮\?\.\?\\uAAEC\?\?\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:2660\]") or ($@ and diag($@));
-is(eval{uts46_to_unicode("<\x{0338}𝅶.񱲁\x{AAEC}⹈󰥭", %p)},	undef,	"to_unicode\(\'\<\\u0338\?\.\?\\uAAEC\?\?\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:2661\]") or ($@ and diag($@));
+is(eval{uts46_to_unicode("≮𝅶.񱲁\x{AAEC}⹈󰥭", %p)},	undef,	"to_unicode\(\'\≮\?.\?\\uAAEC\⹈\?\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:2658\]") or ($@ and diag($@));
+is(eval{uts46_to_unicode("<\x{0338}𝅶.񱲁\x{AAEC}⹈󰥭", %p)},	undef,	"to_unicode\(\'\<\\u0338\?.\?\\uAAEC\⹈\?\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:2659\]") or ($@ and diag($@));
+is(eval{uts46_to_unicode("≮𝅶.񱲁\x{AAEC}⹈󰥭", %p)},	undef,	"to_unicode\(\'\≮\?\.\?\\uAAEC\⹈\?\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:2660\]") or ($@ and diag($@));
+is(eval{uts46_to_unicode("<\x{0338}𝅶.񱲁\x{AAEC}⹈󰥭", %p)},	undef,	"to_unicode\(\'\<\\u0338\?\.\?\\uAAEC\⹈\?\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:2661\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("xn--gdh0880o.xn--4tjx101bsg00ds9pyc", %p)},	undef,	"to_unicode\(\'xn\-\-gdh0880o\.xn\-\-4tjx101bsg00ds9pyc\'\)\ throws\ error\ V6\ \[data\/IdnaTest\.txt\:2662\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("\x{2DF0}\x{0358}ᢕ.\x{0361}𐹷󠴍", %p)},	undef,	"to_unicode\(\'\\u2DF0\\u0358ᢕ.\\u0361𐹷\?\'\)\ throws\ error\ B1\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:2663\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("\x{2DF0}\x{0358}ᢕ.\x{0361}𐹷󠴍", %p)},	undef,	"to_unicode\(\'\\u2DF0\\u0358ᢕ\.\\u0361𐹷\?\'\)\ throws\ error\ B1\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:2664\]") or ($@ and diag($@));
@@ -2739,8 +2739,8 @@ is(eval{uts46_to_unicode("ᡙ\x{200C}。>\x{0338}𐋲=\x{0338}", %p)},	undef,	"t
 is(eval{uts46_to_unicode("ᡙ\x{200C}。>\x{0338}𐋲=\x{0338}", %p)},	undef,	"to_unicode\(\'ᡙ\\u200C\。\>\\u0338𐋲\=\\u0338\'\)\ throws\ error\ C1\ P1\ V6\ \[data\/IdnaTest\.txt\:2803\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("xn--p8e.xn--1ch3a7084l", %p)},	undef,	"to_unicode\(\'xn\-\-p8e\.xn\-\-1ch3a7084l\'\)\ throws\ error\ V6\ \[data\/IdnaTest\.txt\:2804\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("xn--p8e650b.xn--1ch3a7084l", %p)},	undef,	"to_unicode\(\'xn\-\-p8e650b\.xn\-\-1ch3a7084l\'\)\ throws\ error\ C1\ V6\ \[data\/IdnaTest\.txt\:2805\]") or ($@ and diag($@));
-is(eval{uts46_to_unicode("𐹧𞲄󠁭񆼩。\x{034E}🄀", %p)},	undef,	"to_unicode\(\'𐹧\?\?\?\。\\u034E🄀\'\)\ throws\ error\ B1\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:2806\]") or ($@ and diag($@));
-is(eval{uts46_to_unicode("𐹧𞲄󠁭񆼩。\x{034E}0.", %p)},	undef,	"to_unicode\(\'𐹧\?\?\?\。\\u034E0\.\'\)\ throws\ error\ B1\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:2807\]") or ($@ and diag($@));
+is(eval{uts46_to_unicode("𐹧𞲄󠁭񆼩。\x{034E}🄀", %p)},	undef,	"to_unicode\(\'𐹧𞲄\?\?\。\\u034E🄀\'\)\ throws\ error\ B1\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:2806\]") or ($@ and diag($@));
+is(eval{uts46_to_unicode("𐹧𞲄󠁭񆼩。\x{034E}0.", %p)},	undef,	"to_unicode\(\'𐹧𞲄\?\?\。\\u034E0\.\'\)\ throws\ error\ B1\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:2807\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("xn--fo0dw409aq58qrn69d.xn--0-bgb.", %p)},	undef,	"to_unicode\(\'xn\-\-fo0dw409aq58qrn69d\.xn\-\-0\-bgb\.\'\)\ throws\ error\ B1\ V5\ V6\ \[data\/IdnaTest\.txt\:2808\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("xn--fo0dw409aq58qrn69d.xn--sua6883w", %p)},	undef,	"to_unicode\(\'xn\-\-fo0dw409aq58qrn69d\.xn\-\-sua6883w\'\)\ throws\ error\ B1\ V5\ V6\ \[data\/IdnaTest\.txt\:2809\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("Ⴄ.\x{200D}\x{0721}󻣋ς", %p)},	undef,	"to_unicode\(\'Ⴄ.\\u200D\\u0721\?ς\'\)\ throws\ error\ B1\ C2\ P1\ V6\ \[data\/IdnaTest\.txt\:2810\]") or ($@ and diag($@));
@@ -3769,8 +3769,8 @@ is(eval{uts46_to_unicode("ቬ򔠼񁗶。𐨬8", %p)},	undef,	"to_unicode\(\'ቬ\
 is(eval{uts46_to_unicode("xn--d0d41273c887z.xn--8-ob5i", %p)},	undef,	"to_unicode\(\'xn\-\-d0d41273c887z\.xn\-\-8\-ob5i\'\)\ throws\ error\ V6\ \[data\/IdnaTest\.txt\:3833\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("𐱲。蔫\x{0766}", %p)},	undef,	"to_unicode\(\'\?\。蔫\\u0766\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:3834\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("xn--389c.xn--qpb7055d", %p)},	undef,	"to_unicode\(\'xn\-\-389c\.xn\-\-qpb7055d\'\)\ throws\ error\ B5\ B6\ V6\ \[data\/IdnaTest\.txt\:3835\]") or ($@ and diag($@));
-is(eval{uts46_to_unicode("򒲧₃。ꡚ𛇑󠄳\x{0647}", %p)},	undef,	"to_unicode\(\'\?₃。ꡚ\?\󠄳\\u0647\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:3836\]") or ($@ and diag($@));
-is(eval{uts46_to_unicode("򒲧3。ꡚ𛇑󠄳\x{0647}", %p)},	undef,	"to_unicode\(\'\?3\。ꡚ\?\󠄳\\u0647\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:3837\]") or ($@ and diag($@));
+is(eval{uts46_to_unicode("򒲧₃。ꡚ𛇑󠄳\x{0647}", %p)},	undef,	"to_unicode\(\'\?₃。ꡚ𛇑\󠄳\\u0647\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:3836\]") or ($@ and diag($@));
+is(eval{uts46_to_unicode("򒲧3。ꡚ𛇑󠄳\x{0647}", %p)},	undef,	"to_unicode\(\'\?3\。ꡚ𛇑\󠄳\\u0647\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:3837\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("xn--3-ep59g.xn--jhb5904fcp0h", %p)},	undef,	"to_unicode\(\'xn\-\-3\-ep59g\.xn\-\-jhb5904fcp0h\'\)\ throws\ error\ B5\ B6\ V6\ \[data\/IdnaTest\.txt\:3838\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("蓸\x{0642}≠.ß", %p)},	undef,	"to_unicode\(\'蓸\\u0642\≠\.ß\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:3839\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("蓸\x{0642}≠.ß", %p)},	undef,	"to_unicode\(\'蓸\\u0642\≠\.ß\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:3840\]") or ($@ and diag($@));
@@ -5111,8 +5111,8 @@ is(eval{uts46_to_unicode("xn--xx5gy2741c.xn--re6hw266j", %p)},	undef,	"to_unicod
 is(eval{uts46_to_unicode("𛜯󠊛.𞤑񏥾", %p)},	undef,	"to_unicode\(\'\?\?.𞤑\?\'\)\ throws\ error\ B2\ B3\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:5175\]") or ($@ and diag($@));
 SKIP: { skip sprintf("requires Unicode® v7.0 (perl v5.21.1) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v7.0; is(eval{uts46_to_unicode("\x{071C}𐫒\x{062E}.𐋲", %p)},	undef,	"to_unicode\(\'\\u071C𐫒\\u062E\.𐋲\'\)\ throws\ error\ B1\ \[data\/IdnaTest\.txt\:5176\]") or ($@ and diag($@)); }
 is(eval{uts46_to_unicode("xn--tgb98b8643d.xn--m97c", %p)},	undef,	"to_unicode\(\'xn\-\-tgb98b8643d\.xn\-\-m97c\'\)\ throws\ error\ B1\ \[data\/IdnaTest\.txt\:5177\]") or ($@ and diag($@));
-is(eval{uts46_to_unicode("𐼑𞤓\x{0637}\x{08E2}.\x{DF56}", %p)},	undef,	"to_unicode\(\'\?𞤓\\u0637\\u08E2\.\\uDF56\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:5178\]") or ($@ and diag($@));
-is(eval{uts46_to_unicode("𐼑𞤵\x{0637}\x{08E2}.\x{DF56}", %p)},	undef,	"to_unicode\(\'\?𞤵\\u0637\\u08E2\.\\uDF56\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:5179\]") or ($@ and diag($@));
+is(eval{uts46_to_unicode("𐼑𞤓\x{0637}\x{08E2}.\x{DF56}", %p)},	undef,	"to_unicode\(\'𐼑𞤓\\u0637\\u08E2\.\\uDF56\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:5178\]") or ($@ and diag($@));
+is(eval{uts46_to_unicode("𐼑𞤵\x{0637}\x{08E2}.\x{DF56}", %p)},	undef,	"to_unicode\(\'𐼑𞤵\\u0637\\u08E2\.\\uDF56\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:5179\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("xn--2gb08k9w69agm0g.\x{DF56}", %p)},	undef,	"to_unicode\(\'xn\-\-2gb08k9w69agm0g\.\\uDF56\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:5180\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("XN--2GB08K9W69AGM0G.\x{DF56}", %p)},	undef,	"to_unicode\(\'XN\-\-2GB08K9W69AGM0G\.\\uDF56\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:5181\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("Xn--2Gb08k9w69agm0g.\x{DF56}", %p)},	undef,	"to_unicode\(\'Xn\-\-2Gb08k9w69agm0g\.\\uDF56\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:5182\]") or ($@ and diag($@));
@@ -5578,7 +5578,7 @@ is(eval{uts46_to_unicode("xn--lgb32f2753cosb.xn--jkb91hlz1a", %p)},	undef,	"to_u
 is(eval{uts46_to_unicode("xn--lgb32f2753cosb.xn--jkb91hlz1azih", %p)},	undef,	"to_unicode\(\'xn\-\-lgb32f2753cosb\.xn\-\-jkb91hlz1azih\'\)\ throws\ error\ B2\ B3\ V6\ \[data\/IdnaTest\.txt\:5642\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("\x{0816}.𐨕𚚕", %p)},	undef,	"to_unicode\(\'\\u0816\.𐨕\?\'\)\ throws\ error\ B1\ B2\ B3\ B6\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:5643\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("xn--rub.xn--tr9c248x", %p)},	undef,	"to_unicode\(\'xn\-\-rub\.xn\-\-tr9c248x\'\)\ throws\ error\ B1\ B2\ B3\ B6\ V5\ V6\ \[data\/IdnaTest\.txt\:5644\]") or ($@ and diag($@));
-is(eval{uts46_to_unicode("--。𽊆\x{0767}𐽋𞠬", %p)},	undef,	"to_unicode\(\'\-\-\。\?\\u0767\?𞠬\'\)\ throws\ error\ B1\ B5\ B6\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:5645\]") or ($@ and diag($@));
+is(eval{uts46_to_unicode("--。𽊆\x{0767}𐽋𞠬", %p)},	undef,	"to_unicode\(\'\-\-\。\?\\u0767𐽋𞠬\'\)\ throws\ error\ B1\ B5\ B6\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:5645\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("--.xn--rpb6226k77pfh58p", %p)},	undef,	"to_unicode\(\'\-\-\.xn\-\-rpb6226k77pfh58p\'\)\ throws\ error\ B1\ B5\ B6\ V3\ V6\ \[data\/IdnaTest\.txt\:5646\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("򛭦𐋥𹸐.≯\x{08B0}\x{08A6}󔛣", %p)},	undef,	"to_unicode\(\'\?𐋥\?\.\≯\\u08B0\\u08A6\?\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:5647\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("򛭦𐋥𹸐.>\x{0338}\x{08B0}\x{08A6}󔛣", %p)},	undef,	"to_unicode\(\'\?𐋥\?\.\>\\u0338\\u08B0\\u08A6\?\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:5648\]") or ($@ and diag($@));
@@ -6939,18 +6939,18 @@ is(eval{uts46_to_unicode("񗑿\x{A806}₄򩞆。𲩧󠒹Σ", %p)},	undef,	"to_un
 is(eval{uts46_to_unicode("񗑿\x{A806}₄򩞆。𲩧󠒹σ", %p)},	undef,	"to_unicode\(\'\?\\uA806₄\?。\?\?σ\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:7003\]") or ($@ and diag($@));
 SKIP: { skip sprintf("requires Unicode® v7.0 (perl v5.21.1) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v7.0; is(eval{uts46_to_unicode("󠆀\x{0723}。\x{1DF4}\x{0775}", %p)},	undef,	"to_unicode\(\'\󠆀\\u0723\。\\u1DF4\\u0775\'\)\ throws\ error\ B1\ V5\ \[data\/IdnaTest\.txt\:7004\]") or ($@ and diag($@)); }
 is(eval{uts46_to_unicode("xn--tnb.xn--5pb136i", %p)},	undef,	"to_unicode\(\'xn\-\-tnb\.xn\-\-5pb136i\'\)\ throws\ error\ B1\ V5\ \[data\/IdnaTest\.txt\:7005\]") or ($@ and diag($@));
-is(eval{uts46_to_unicode("𐹱\x{0842}𝪨。𬼖Ⴑ\x{200D}", %p)},	undef,	"to_unicode\(\'𐹱\\u0842𝪨。\?Ⴑ\\u200D\'\)\ throws\ error\ B1\ B6\ C2\ P1\ V6\ \[data\/IdnaTest\.txt\:7006\]") or ($@ and diag($@));
-is(eval{uts46_to_unicode("𐹱\x{0842}𝪨。𬼖Ⴑ\x{200D}", %p)},	undef,	"to_unicode\(\'𐹱\\u0842𝪨。\?Ⴑ\\u200D\'\)\ throws\ error\ B1\ B6\ C2\ P1\ V6\ \[data\/IdnaTest\.txt\:7007\]") or ($@ and diag($@));
-is(eval{uts46_to_unicode("𐹱\x{0842}𝪨。𬼖Ⴑ\x{200D}", %p)},	undef,	"to_unicode\(\'𐹱\\u0842𝪨\。\?Ⴑ\\u200D\'\)\ throws\ error\ B1\ B6\ C2\ P1\ V6\ \[data\/IdnaTest\.txt\:7008\]") or ($@ and diag($@));
-is(eval{uts46_to_unicode("𐹱\x{0842}𝪨。𬼖Ⴑ\x{200D}", %p)},	undef,	"to_unicode\(\'𐹱\\u0842𝪨\。\?Ⴑ\\u200D\'\)\ throws\ error\ B1\ B6\ C2\ P1\ V6\ \[data\/IdnaTest\.txt\:7009\]") or ($@ and diag($@));
-SKIP: { skip sprintf("requires Unicode® v10.0 (perl v5.28.0) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v10.0; is(eval{uts46_to_unicode("𐹱\x{0842}𝪨。𬼖ⴑ\x{200D}", %p)},	undef,	"to_unicode\(\'𐹱\\u0842𝪨\。\?ⴑ\\u200D\'\)\ throws\ error\ B1\ B6\ C2\ \[data\/IdnaTest\.txt\:7010\]") or ($@ and diag($@)); }
-SKIP: { skip sprintf("requires Unicode® v10.0 (perl v5.28.0) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v10.0; is(eval{uts46_to_unicode("𐹱\x{0842}𝪨。𬼖ⴑ\x{200D}", %p)},	undef,	"to_unicode\(\'𐹱\\u0842𝪨\。\?ⴑ\\u200D\'\)\ throws\ error\ B1\ B6\ C2\ \[data\/IdnaTest\.txt\:7011\]") or ($@ and diag($@)); }
+is(eval{uts46_to_unicode("𐹱\x{0842}𝪨。𬼖Ⴑ\x{200D}", %p)},	undef,	"to_unicode\(\'𐹱\\u0842𝪨。𬼖Ⴑ\\u200D\'\)\ throws\ error\ B1\ B6\ C2\ P1\ V6\ \[data\/IdnaTest\.txt\:7006\]") or ($@ and diag($@));
+is(eval{uts46_to_unicode("𐹱\x{0842}𝪨。𬼖Ⴑ\x{200D}", %p)},	undef,	"to_unicode\(\'𐹱\\u0842𝪨。𬼖Ⴑ\\u200D\'\)\ throws\ error\ B1\ B6\ C2\ P1\ V6\ \[data\/IdnaTest\.txt\:7007\]") or ($@ and diag($@));
+is(eval{uts46_to_unicode("𐹱\x{0842}𝪨。𬼖Ⴑ\x{200D}", %p)},	undef,	"to_unicode\(\'𐹱\\u0842𝪨\。𬼖Ⴑ\\u200D\'\)\ throws\ error\ B1\ B6\ C2\ P1\ V6\ \[data\/IdnaTest\.txt\:7008\]") or ($@ and diag($@));
+is(eval{uts46_to_unicode("𐹱\x{0842}𝪨。𬼖Ⴑ\x{200D}", %p)},	undef,	"to_unicode\(\'𐹱\\u0842𝪨\。𬼖Ⴑ\\u200D\'\)\ throws\ error\ B1\ B6\ C2\ P1\ V6\ \[data\/IdnaTest\.txt\:7009\]") or ($@ and diag($@));
+SKIP: { skip sprintf("requires Unicode® v10.0 (perl v5.28.0) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v10.0; is(eval{uts46_to_unicode("𐹱\x{0842}𝪨。𬼖ⴑ\x{200D}", %p)},	undef,	"to_unicode\(\'𐹱\\u0842𝪨\。𬼖ⴑ\\u200D\'\)\ throws\ error\ B1\ B6\ C2\ \[data\/IdnaTest\.txt\:7010\]") or ($@ and diag($@)); }
+SKIP: { skip sprintf("requires Unicode® v10.0 (perl v5.28.0) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v10.0; is(eval{uts46_to_unicode("𐹱\x{0842}𝪨。𬼖ⴑ\x{200D}", %p)},	undef,	"to_unicode\(\'𐹱\\u0842𝪨\。𬼖ⴑ\\u200D\'\)\ throws\ error\ B1\ B6\ C2\ \[data\/IdnaTest\.txt\:7011\]") or ($@ and diag($@)); }
 is(eval{uts46_to_unicode("xn--0vb1535kdb6e.xn--8kjz186s", %p)},	undef,	"to_unicode\(\'xn\-\-0vb1535kdb6e\.xn\-\-8kjz186s\'\)\ throws\ error\ B1\ \[data\/IdnaTest\.txt\:7012\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("xn--0vb1535kdb6e.xn--1ug742c5714c", %p)},	undef,	"to_unicode\(\'xn\-\-0vb1535kdb6e\.xn\-\-1ug742c5714c\'\)\ throws\ error\ B1\ B6\ C2\ \[data\/IdnaTest\.txt\:7013\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("xn--0vb1535kdb6e.xn--pnd93707a", %p)},	undef,	"to_unicode\(\'xn\-\-0vb1535kdb6e\.xn\-\-pnd93707a\'\)\ throws\ error\ B1\ V6\ \[data\/IdnaTest\.txt\:7014\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("xn--0vb1535kdb6e.xn--pnd879eqy33c", %p)},	undef,	"to_unicode\(\'xn\-\-0vb1535kdb6e\.xn\-\-pnd879eqy33c\'\)\ throws\ error\ B1\ B6\ C2\ V6\ \[data\/IdnaTest\.txt\:7015\]") or ($@ and diag($@));
-SKIP: { skip sprintf("requires Unicode® v10.0 (perl v5.28.0) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v10.0; is(eval{uts46_to_unicode("𐹱\x{0842}𝪨。𬼖ⴑ\x{200D}", %p)},	undef,	"to_unicode\(\'𐹱\\u0842𝪨。\?ⴑ\\u200D\'\)\ throws\ error\ B1\ B6\ C2\ \[data\/IdnaTest\.txt\:7016\]") or ($@ and diag($@)); }
-SKIP: { skip sprintf("requires Unicode® v10.0 (perl v5.28.0) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v10.0; is(eval{uts46_to_unicode("𐹱\x{0842}𝪨。𬼖ⴑ\x{200D}", %p)},	undef,	"to_unicode\(\'𐹱\\u0842𝪨。\?ⴑ\\u200D\'\)\ throws\ error\ B1\ B6\ C2\ \[data\/IdnaTest\.txt\:7017\]") or ($@ and diag($@)); }
+SKIP: { skip sprintf("requires Unicode® v10.0 (perl v5.28.0) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v10.0; is(eval{uts46_to_unicode("𐹱\x{0842}𝪨。𬼖ⴑ\x{200D}", %p)},	undef,	"to_unicode\(\'𐹱\\u0842𝪨。𬼖ⴑ\\u200D\'\)\ throws\ error\ B1\ B6\ C2\ \[data\/IdnaTest\.txt\:7016\]") or ($@ and diag($@)); }
+SKIP: { skip sprintf("requires Unicode® v10.0 (perl v5.28.0) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v10.0; is(eval{uts46_to_unicode("𐹱\x{0842}𝪨。𬼖ⴑ\x{200D}", %p)},	undef,	"to_unicode\(\'𐹱\\u0842𝪨。𬼖ⴑ\\u200D\'\)\ throws\ error\ B1\ B6\ C2\ \[data\/IdnaTest\.txt\:7017\]") or ($@ and diag($@)); }
 is(eval{uts46_to_unicode("\x{1714}𐭪󠙘\x{200D}。-𐹴", %p)},	undef,	"to_unicode\(\'\\u1714𐭪\?\\u200D。\-𐹴\'\)\ throws\ error\ B1\ C2\ P1\ V3\ V5\ V6\ \[data\/IdnaTest\.txt\:7018\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("\x{1714}𐭪󠙘\x{200D}。-𐹴", %p)},	undef,	"to_unicode\(\'\\u1714𐭪\?\\u200D。\-𐹴\'\)\ throws\ error\ B1\ C2\ P1\ V3\ V5\ V6\ \[data\/IdnaTest\.txt\:7019\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("\x{1714}𐭪󠙘\x{200D}。-𐹴", %p)},	undef,	"to_unicode\(\'\\u1714𐭪\?\\u200D\。\-𐹴\'\)\ throws\ error\ B1\ C2\ P1\ V3\ V5\ V6\ \[data\/IdnaTest\.txt\:7020\]") or ($@ and diag($@));
@@ -7594,13 +7594,13 @@ is(eval{uts46_to_unicode("xn--ie8c.xn--2g51a", %p)},	undef,	"to_unicode\(\'xn\-\
 is(eval{uts46_to_unicode("xn--ie8c.xn--0ug03366c", %p)},	undef,	"to_unicode\(\'xn\-\-ie8c\.xn\-\-0ug03366c\'\)\ throws\ error\ C1\ V5\ V6\ \[data\/IdnaTest\.txt\:7658\]") or ($@ and diag($@));
 SKIP: { skip sprintf("requires Unicode® v5.1 (perl v5.10.1) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v5.1; is(eval{uts46_to_unicode("\x{063D}\x{06E3}.𐨎", %p)},	undef,	"to_unicode\(\'\\u063D\\u06E3\.𐨎\'\)\ throws\ error\ B1\ B3\ B6\ V5\ \[data\/IdnaTest\.txt\:7659\]") or ($@ and diag($@)); }
 is(eval{uts46_to_unicode("xn--8gb64a.xn--mr9c", %p)},	undef,	"to_unicode\(\'xn\-\-8gb64a\.xn\-\-mr9c\'\)\ throws\ error\ B1\ B3\ B6\ V5\ \[data\/IdnaTest\.txt\:7660\]") or ($@ and diag($@));
-is(eval{uts46_to_unicode("漦Ⴙς.񡻀𐴄", %p)},	undef,	"to_unicode\(\'漦Ⴙς\.\?\?\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7661\]") or ($@ and diag($@));
-is(eval{uts46_to_unicode("漦Ⴙς.񡻀𐴄", %p)},	undef,	"to_unicode\(\'漦Ⴙς\.\?\?\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7662\]") or ($@ and diag($@));
-is(eval{uts46_to_unicode("漦ⴙς.񡻀𐴄", %p)},	undef,	"to_unicode\(\'漦ⴙς\.\?\?\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7663\]") or ($@ and diag($@));
-is(eval{uts46_to_unicode("漦ⴙς.񡻀𐴄", %p)},	undef,	"to_unicode\(\'漦ⴙς\.\?\?\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7664\]") or ($@ and diag($@));
-is(eval{uts46_to_unicode("漦ႹΣ.񡻀𐴄", %p)},	undef,	"to_unicode\(\'漦ႹΣ\.\?\?\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7665\]") or ($@ and diag($@));
-is(eval{uts46_to_unicode("漦ⴙσ.񡻀𐴄", %p)},	undef,	"to_unicode\(\'漦ⴙσ\.\?\?\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7666\]") or ($@ and diag($@));
-is(eval{uts46_to_unicode("漦Ⴙσ.񡻀𐴄", %p)},	undef,	"to_unicode\(\'漦Ⴙσ\.\?\?\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7667\]") or ($@ and diag($@));
+is(eval{uts46_to_unicode("漦Ⴙς.񡻀𐴄", %p)},	undef,	"to_unicode\(\'漦Ⴙς\.\?𐴄\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7661\]") or ($@ and diag($@));
+is(eval{uts46_to_unicode("漦Ⴙς.񡻀𐴄", %p)},	undef,	"to_unicode\(\'漦Ⴙς\.\?𐴄\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7662\]") or ($@ and diag($@));
+is(eval{uts46_to_unicode("漦ⴙς.񡻀𐴄", %p)},	undef,	"to_unicode\(\'漦ⴙς\.\?𐴄\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7663\]") or ($@ and diag($@));
+is(eval{uts46_to_unicode("漦ⴙς.񡻀𐴄", %p)},	undef,	"to_unicode\(\'漦ⴙς\.\?𐴄\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7664\]") or ($@ and diag($@));
+is(eval{uts46_to_unicode("漦ႹΣ.񡻀𐴄", %p)},	undef,	"to_unicode\(\'漦ႹΣ\.\?𐴄\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7665\]") or ($@ and diag($@));
+is(eval{uts46_to_unicode("漦ⴙσ.񡻀𐴄", %p)},	undef,	"to_unicode\(\'漦ⴙσ\.\?𐴄\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7666\]") or ($@ and diag($@));
+is(eval{uts46_to_unicode("漦Ⴙσ.񡻀𐴄", %p)},	undef,	"to_unicode\(\'漦Ⴙσ\.\?𐴄\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7667\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("xn--4xa947d717e.xn--9d0d3162t", %p)},	undef,	"to_unicode\(\'xn\-\-4xa947d717e\.xn\-\-9d0d3162t\'\)\ throws\ error\ B5\ B6\ V6\ \[data\/IdnaTest\.txt\:7668\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("xn--4xa772sl47b.xn--9d0d3162t", %p)},	undef,	"to_unicode\(\'xn\-\-4xa772sl47b\.xn\-\-9d0d3162t\'\)\ throws\ error\ B5\ B6\ V6\ \[data\/IdnaTest\.txt\:7669\]") or ($@ and diag($@));
 is(eval{uts46_to_unicode("xn--3xa972sl47b.xn--9d0d3162t", %p)},	undef,	"to_unicode\(\'xn\-\-3xa972sl47b\.xn\-\-9d0d3162t\'\)\ throws\ error\ B5\ B6\ V6\ \[data\/IdnaTest\.txt\:7670\]") or ($@ and diag($@));
-- 
2.1.4