From 0dc2b0949942f6d0116882ccb04ff5d9aefe8af5 Mon Sep 17 00:00:00 2001 From: eabdullin Date: Wed, 29 May 2024 14:45:31 +0000 Subject: [PATCH] import CS python-idna-2.10-4.module_el8+1051+5bea6413 --- SOURCES/CVE-2024-3651.patch | 2844 +++++++++++++++++++++++++++++++++++ SPECS/python-idna.spec | 12 +- 2 files changed, 2855 insertions(+), 1 deletion(-) create mode 100644 SOURCES/CVE-2024-3651.patch diff --git a/SOURCES/CVE-2024-3651.patch b/SOURCES/CVE-2024-3651.patch new file mode 100644 index 0000000..23ffda6 --- /dev/null +++ b/SOURCES/CVE-2024-3651.patch @@ -0,0 +1,2844 @@ +From 0259d17a2384735176621ca053959bd79be6b8d6 Mon Sep 17 00:00:00 2001 +From: Lumir Balhar +Date: Tue, 23 Apr 2024 11:19:25 +0200 +Subject: [PATCH] CVE-2024-3651 + +--- + idna/core.py | 16 +- + idna/idnadata.py | 2351 ++++++++++++++++++++++++++++++++++++++++++++-- + tools/idna-data | 13 +- + 3 files changed, 2291 insertions(+), 89 deletions(-) + +diff --git a/idna/core.py b/idna/core.py +index 41ec5c7..5f54c89 100644 +--- a/idna/core.py ++++ b/idna/core.py +@@ -161,9 +161,11 @@ def valid_contextj(label, pos): + joining_type = idnadata.joining_types.get(ord(label[i])) + if joining_type == ord('T'): + continue +- if joining_type in [ord('L'), ord('D')]: ++ elif joining_type in [ord('L'), ord('D')]: + ok = True + break ++ else: ++ break + + if not ok: + return False +@@ -173,9 +175,11 @@ def valid_contextj(label, pos): + joining_type = idnadata.joining_types.get(ord(label[i])) + if joining_type == ord('T'): + continue +- if joining_type in [ord('R'), ord('D')]: ++ elif joining_type in [ord('R'), ord('D')]: + ok = True + break ++ else: ++ break + return ok + + if cp_value == 0x200d: +@@ -247,12 +251,8 @@ def check_label(label): + if intranges_contain(cp_value, idnadata.codepoint_classes['PVALID']): + continue + elif intranges_contain(cp_value, idnadata.codepoint_classes['CONTEXTJ']): +- try: +- if not valid_contextj(label, pos): +- raise InvalidCodepointContext('Joiner {0} not allowed at position {1} in {2}'.format( +- _unot(cp_value), pos+1, repr(label))) +- except ValueError: +- raise IDNAError('Unknown codepoint adjacent to joiner {0} at position {1} in {2}'.format( ++ if not valid_contextj(label, pos): ++ raise InvalidCodepointContext('Joiner {} not allowed at position {} in {}'.format( + _unot(cp_value), pos+1, repr(label))) + elif intranges_contain(cp_value, idnadata.codepoint_classes['CONTEXTO']): + if not valid_contexto(label, pos): +diff --git a/idna/idnadata.py b/idna/idnadata.py +index a284e4c..c61dcf9 100644 +--- a/idna/idnadata.py ++++ b/idna/idnadata.py +@@ -1,6 +1,6 @@ + # This file is automatically generated by tools/idna-data + +-__version__ = "13.0.0" ++__version__ = '15.1.0' + scripts = { + 'Greek': ( + 0x37000000374, +@@ -49,17 +49,20 @@ scripts = { + 0x30210000302a, + 0x30380000303c, + 0x340000004dc0, +- 0x4e0000009ffd, ++ 0x4e000000a000, + 0xf9000000fa6e, + 0xfa700000fada, ++ 0x16fe200016fe4, + 0x16ff000016ff2, +- 0x200000002a6de, +- 0x2a7000002b735, ++ 0x200000002a6e0, ++ 0x2a7000002b73a, + 0x2b7400002b81e, + 0x2b8200002cea2, + 0x2ceb00002ebe1, ++ 0x2ebf00002ee5e, + 0x2f8000002fa1e, + 0x300000003134b, ++ 0x31350000323b0, + ), + 'Hebrew': ( + 0x591000005c8, +@@ -75,7 +78,8 @@ scripts = { + 'Hiragana': ( + 0x304100003097, + 0x309d000030a0, +- 0x1b0010001b11f, ++ 0x1b0010001b120, ++ 0x1b1320001b133, + 0x1b1500001b153, + 0x1f2000001f201, + ), +@@ -87,21 +91,200 @@ scripts = { + 0x330000003358, + 0xff660000ff70, + 0xff710000ff9e, ++ 0x1aff00001aff4, ++ 0x1aff50001affc, ++ 0x1affd0001afff, + 0x1b0000001b001, ++ 0x1b1200001b123, ++ 0x1b1550001b156, + 0x1b1640001b168, + ), + } + joining_types = { +- 0x600: 85, +- 0x601: 85, +- 0x602: 85, +- 0x603: 85, +- 0x604: 85, +- 0x605: 85, +- 0x608: 85, +- 0x60b: 85, ++ 0xad: 84, ++ 0x300: 84, ++ 0x301: 84, ++ 0x302: 84, ++ 0x303: 84, ++ 0x304: 84, ++ 0x305: 84, ++ 0x306: 84, ++ 0x307: 84, ++ 0x308: 84, ++ 0x309: 84, ++ 0x30a: 84, ++ 0x30b: 84, ++ 0x30c: 84, ++ 0x30d: 84, ++ 0x30e: 84, ++ 0x30f: 84, ++ 0x310: 84, ++ 0x311: 84, ++ 0x312: 84, ++ 0x313: 84, ++ 0x314: 84, ++ 0x315: 84, ++ 0x316: 84, ++ 0x317: 84, ++ 0x318: 84, ++ 0x319: 84, ++ 0x31a: 84, ++ 0x31b: 84, ++ 0x31c: 84, ++ 0x31d: 84, ++ 0x31e: 84, ++ 0x31f: 84, ++ 0x320: 84, ++ 0x321: 84, ++ 0x322: 84, ++ 0x323: 84, ++ 0x324: 84, ++ 0x325: 84, ++ 0x326: 84, ++ 0x327: 84, ++ 0x328: 84, ++ 0x329: 84, ++ 0x32a: 84, ++ 0x32b: 84, ++ 0x32c: 84, ++ 0x32d: 84, ++ 0x32e: 84, ++ 0x32f: 84, ++ 0x330: 84, ++ 0x331: 84, ++ 0x332: 84, ++ 0x333: 84, ++ 0x334: 84, ++ 0x335: 84, ++ 0x336: 84, ++ 0x337: 84, ++ 0x338: 84, ++ 0x339: 84, ++ 0x33a: 84, ++ 0x33b: 84, ++ 0x33c: 84, ++ 0x33d: 84, ++ 0x33e: 84, ++ 0x33f: 84, ++ 0x340: 84, ++ 0x341: 84, ++ 0x342: 84, ++ 0x343: 84, ++ 0x344: 84, ++ 0x345: 84, ++ 0x346: 84, ++ 0x347: 84, ++ 0x348: 84, ++ 0x349: 84, ++ 0x34a: 84, ++ 0x34b: 84, ++ 0x34c: 84, ++ 0x34d: 84, ++ 0x34e: 84, ++ 0x34f: 84, ++ 0x350: 84, ++ 0x351: 84, ++ 0x352: 84, ++ 0x353: 84, ++ 0x354: 84, ++ 0x355: 84, ++ 0x356: 84, ++ 0x357: 84, ++ 0x358: 84, ++ 0x359: 84, ++ 0x35a: 84, ++ 0x35b: 84, ++ 0x35c: 84, ++ 0x35d: 84, ++ 0x35e: 84, ++ 0x35f: 84, ++ 0x360: 84, ++ 0x361: 84, ++ 0x362: 84, ++ 0x363: 84, ++ 0x364: 84, ++ 0x365: 84, ++ 0x366: 84, ++ 0x367: 84, ++ 0x368: 84, ++ 0x369: 84, ++ 0x36a: 84, ++ 0x36b: 84, ++ 0x36c: 84, ++ 0x36d: 84, ++ 0x36e: 84, ++ 0x36f: 84, ++ 0x483: 84, ++ 0x484: 84, ++ 0x485: 84, ++ 0x486: 84, ++ 0x487: 84, ++ 0x488: 84, ++ 0x489: 84, ++ 0x591: 84, ++ 0x592: 84, ++ 0x593: 84, ++ 0x594: 84, ++ 0x595: 84, ++ 0x596: 84, ++ 0x597: 84, ++ 0x598: 84, ++ 0x599: 84, ++ 0x59a: 84, ++ 0x59b: 84, ++ 0x59c: 84, ++ 0x59d: 84, ++ 0x59e: 84, ++ 0x59f: 84, ++ 0x5a0: 84, ++ 0x5a1: 84, ++ 0x5a2: 84, ++ 0x5a3: 84, ++ 0x5a4: 84, ++ 0x5a5: 84, ++ 0x5a6: 84, ++ 0x5a7: 84, ++ 0x5a8: 84, ++ 0x5a9: 84, ++ 0x5aa: 84, ++ 0x5ab: 84, ++ 0x5ac: 84, ++ 0x5ad: 84, ++ 0x5ae: 84, ++ 0x5af: 84, ++ 0x5b0: 84, ++ 0x5b1: 84, ++ 0x5b2: 84, ++ 0x5b3: 84, ++ 0x5b4: 84, ++ 0x5b5: 84, ++ 0x5b6: 84, ++ 0x5b7: 84, ++ 0x5b8: 84, ++ 0x5b9: 84, ++ 0x5ba: 84, ++ 0x5bb: 84, ++ 0x5bc: 84, ++ 0x5bd: 84, ++ 0x5bf: 84, ++ 0x5c1: 84, ++ 0x5c2: 84, ++ 0x5c4: 84, ++ 0x5c5: 84, ++ 0x5c7: 84, ++ 0x610: 84, ++ 0x611: 84, ++ 0x612: 84, ++ 0x613: 84, ++ 0x614: 84, ++ 0x615: 84, ++ 0x616: 84, ++ 0x617: 84, ++ 0x618: 84, ++ 0x619: 84, ++ 0x61a: 84, ++ 0x61c: 84, + 0x620: 68, +- 0x621: 85, + 0x622: 82, + 0x623: 82, + 0x624: 82, +@@ -143,12 +326,33 @@ joining_types = { + 0x648: 82, + 0x649: 68, + 0x64a: 68, ++ 0x64b: 84, ++ 0x64c: 84, ++ 0x64d: 84, ++ 0x64e: 84, ++ 0x64f: 84, ++ 0x650: 84, ++ 0x651: 84, ++ 0x652: 84, ++ 0x653: 84, ++ 0x654: 84, ++ 0x655: 84, ++ 0x656: 84, ++ 0x657: 84, ++ 0x658: 84, ++ 0x659: 84, ++ 0x65a: 84, ++ 0x65b: 84, ++ 0x65c: 84, ++ 0x65d: 84, ++ 0x65e: 84, ++ 0x65f: 84, + 0x66e: 68, + 0x66f: 68, ++ 0x670: 84, + 0x671: 82, + 0x672: 82, + 0x673: 82, +- 0x674: 85, + 0x675: 82, + 0x676: 82, + 0x677: 82, +@@ -245,7 +449,25 @@ joining_types = { + 0x6d2: 82, + 0x6d3: 82, + 0x6d5: 82, +- 0x6dd: 85, ++ 0x6d6: 84, ++ 0x6d7: 84, ++ 0x6d8: 84, ++ 0x6d9: 84, ++ 0x6da: 84, ++ 0x6db: 84, ++ 0x6dc: 84, ++ 0x6df: 84, ++ 0x6e0: 84, ++ 0x6e1: 84, ++ 0x6e2: 84, ++ 0x6e3: 84, ++ 0x6e4: 84, ++ 0x6e7: 84, ++ 0x6e8: 84, ++ 0x6ea: 84, ++ 0x6eb: 84, ++ 0x6ec: 84, ++ 0x6ed: 84, + 0x6ee: 82, + 0x6ef: 82, + 0x6fa: 68, +@@ -254,6 +476,7 @@ joining_types = { + 0x6ff: 68, + 0x70f: 84, + 0x710: 82, ++ 0x711: 84, + 0x712: 68, + 0x713: 68, + 0x714: 68, +@@ -284,6 +507,33 @@ joining_types = { + 0x72d: 68, + 0x72e: 68, + 0x72f: 82, ++ 0x730: 84, ++ 0x731: 84, ++ 0x732: 84, ++ 0x733: 84, ++ 0x734: 84, ++ 0x735: 84, ++ 0x736: 84, ++ 0x737: 84, ++ 0x738: 84, ++ 0x739: 84, ++ 0x73a: 84, ++ 0x73b: 84, ++ 0x73c: 84, ++ 0x73d: 84, ++ 0x73e: 84, ++ 0x73f: 84, ++ 0x740: 84, ++ 0x741: 84, ++ 0x742: 84, ++ 0x743: 84, ++ 0x744: 84, ++ 0x745: 84, ++ 0x746: 84, ++ 0x747: 84, ++ 0x748: 84, ++ 0x749: 84, ++ 0x74a: 84, + 0x74d: 82, + 0x74e: 68, + 0x74f: 68, +@@ -335,6 +585,17 @@ joining_types = { + 0x77d: 68, + 0x77e: 68, + 0x77f: 68, ++ 0x7a6: 84, ++ 0x7a7: 84, ++ 0x7a8: 84, ++ 0x7a9: 84, ++ 0x7aa: 84, ++ 0x7ab: 84, ++ 0x7ac: 84, ++ 0x7ad: 84, ++ 0x7ae: 84, ++ 0x7af: 84, ++ 0x7b0: 84, + 0x7ca: 68, + 0x7cb: 68, + 0x7cc: 68, +@@ -368,7 +629,38 @@ joining_types = { + 0x7e8: 68, + 0x7e9: 68, + 0x7ea: 68, ++ 0x7eb: 84, ++ 0x7ec: 84, ++ 0x7ed: 84, ++ 0x7ee: 84, ++ 0x7ef: 84, ++ 0x7f0: 84, ++ 0x7f1: 84, ++ 0x7f2: 84, ++ 0x7f3: 84, + 0x7fa: 67, ++ 0x7fd: 84, ++ 0x816: 84, ++ 0x817: 84, ++ 0x818: 84, ++ 0x819: 84, ++ 0x81b: 84, ++ 0x81c: 84, ++ 0x81d: 84, ++ 0x81e: 84, ++ 0x81f: 84, ++ 0x820: 84, ++ 0x821: 84, ++ 0x822: 84, ++ 0x823: 84, ++ 0x825: 84, ++ 0x826: 84, ++ 0x827: 84, ++ 0x829: 84, ++ 0x82a: 84, ++ 0x82b: 84, ++ 0x82c: 84, ++ 0x82d: 84, + 0x840: 82, + 0x841: 68, + 0x842: 68, +@@ -394,17 +686,55 @@ joining_types = { + 0x856: 82, + 0x857: 82, + 0x858: 82, ++ 0x859: 84, ++ 0x85a: 84, ++ 0x85b: 84, + 0x860: 68, +- 0x861: 85, + 0x862: 68, + 0x863: 68, + 0x864: 68, + 0x865: 68, +- 0x866: 85, + 0x867: 82, + 0x868: 68, + 0x869: 82, + 0x86a: 82, ++ 0x870: 82, ++ 0x871: 82, ++ 0x872: 82, ++ 0x873: 82, ++ 0x874: 82, ++ 0x875: 82, ++ 0x876: 82, ++ 0x877: 82, ++ 0x878: 82, ++ 0x879: 82, ++ 0x87a: 82, ++ 0x87b: 82, ++ 0x87c: 82, ++ 0x87d: 82, ++ 0x87e: 82, ++ 0x87f: 82, ++ 0x880: 82, ++ 0x881: 82, ++ 0x882: 82, ++ 0x883: 67, ++ 0x884: 67, ++ 0x885: 67, ++ 0x886: 68, ++ 0x889: 68, ++ 0x88a: 68, ++ 0x88b: 68, ++ 0x88c: 68, ++ 0x88d: 68, ++ 0x88e: 82, ++ 0x898: 84, ++ 0x899: 84, ++ 0x89a: 84, ++ 0x89b: 84, ++ 0x89c: 84, ++ 0x89d: 84, ++ 0x89e: 84, ++ 0x89f: 84, + 0x8a0: 68, + 0x8a1: 68, + 0x8a2: 68, +@@ -418,7 +748,6 @@ joining_types = { + 0x8aa: 82, + 0x8ab: 82, + 0x8ac: 82, +- 0x8ad: 85, + 0x8ae: 82, + 0x8af: 68, + 0x8b0: 68, +@@ -426,6 +755,7 @@ joining_types = { + 0x8b2: 82, + 0x8b3: 68, + 0x8b4: 68, ++ 0x8b5: 68, + 0x8b6: 68, + 0x8b7: 68, + 0x8b8: 68, +@@ -444,11 +774,358 @@ joining_types = { + 0x8c5: 68, + 0x8c6: 68, + 0x8c7: 68, +- 0x8e2: 85, +- 0x1806: 85, ++ 0x8c8: 68, ++ 0x8ca: 84, ++ 0x8cb: 84, ++ 0x8cc: 84, ++ 0x8cd: 84, ++ 0x8ce: 84, ++ 0x8cf: 84, ++ 0x8d0: 84, ++ 0x8d1: 84, ++ 0x8d2: 84, ++ 0x8d3: 84, ++ 0x8d4: 84, ++ 0x8d5: 84, ++ 0x8d6: 84, ++ 0x8d7: 84, ++ 0x8d8: 84, ++ 0x8d9: 84, ++ 0x8da: 84, ++ 0x8db: 84, ++ 0x8dc: 84, ++ 0x8dd: 84, ++ 0x8de: 84, ++ 0x8df: 84, ++ 0x8e0: 84, ++ 0x8e1: 84, ++ 0x8e3: 84, ++ 0x8e4: 84, ++ 0x8e5: 84, ++ 0x8e6: 84, ++ 0x8e7: 84, ++ 0x8e8: 84, ++ 0x8e9: 84, ++ 0x8ea: 84, ++ 0x8eb: 84, ++ 0x8ec: 84, ++ 0x8ed: 84, ++ 0x8ee: 84, ++ 0x8ef: 84, ++ 0x8f0: 84, ++ 0x8f1: 84, ++ 0x8f2: 84, ++ 0x8f3: 84, ++ 0x8f4: 84, ++ 0x8f5: 84, ++ 0x8f6: 84, ++ 0x8f7: 84, ++ 0x8f8: 84, ++ 0x8f9: 84, ++ 0x8fa: 84, ++ 0x8fb: 84, ++ 0x8fc: 84, ++ 0x8fd: 84, ++ 0x8fe: 84, ++ 0x8ff: 84, ++ 0x900: 84, ++ 0x901: 84, ++ 0x902: 84, ++ 0x93a: 84, ++ 0x93c: 84, ++ 0x941: 84, ++ 0x942: 84, ++ 0x943: 84, ++ 0x944: 84, ++ 0x945: 84, ++ 0x946: 84, ++ 0x947: 84, ++ 0x948: 84, ++ 0x94d: 84, ++ 0x951: 84, ++ 0x952: 84, ++ 0x953: 84, ++ 0x954: 84, ++ 0x955: 84, ++ 0x956: 84, ++ 0x957: 84, ++ 0x962: 84, ++ 0x963: 84, ++ 0x981: 84, ++ 0x9bc: 84, ++ 0x9c1: 84, ++ 0x9c2: 84, ++ 0x9c3: 84, ++ 0x9c4: 84, ++ 0x9cd: 84, ++ 0x9e2: 84, ++ 0x9e3: 84, ++ 0x9fe: 84, ++ 0xa01: 84, ++ 0xa02: 84, ++ 0xa3c: 84, ++ 0xa41: 84, ++ 0xa42: 84, ++ 0xa47: 84, ++ 0xa48: 84, ++ 0xa4b: 84, ++ 0xa4c: 84, ++ 0xa4d: 84, ++ 0xa51: 84, ++ 0xa70: 84, ++ 0xa71: 84, ++ 0xa75: 84, ++ 0xa81: 84, ++ 0xa82: 84, ++ 0xabc: 84, ++ 0xac1: 84, ++ 0xac2: 84, ++ 0xac3: 84, ++ 0xac4: 84, ++ 0xac5: 84, ++ 0xac7: 84, ++ 0xac8: 84, ++ 0xacd: 84, ++ 0xae2: 84, ++ 0xae3: 84, ++ 0xafa: 84, ++ 0xafb: 84, ++ 0xafc: 84, ++ 0xafd: 84, ++ 0xafe: 84, ++ 0xaff: 84, ++ 0xb01: 84, ++ 0xb3c: 84, ++ 0xb3f: 84, ++ 0xb41: 84, ++ 0xb42: 84, ++ 0xb43: 84, ++ 0xb44: 84, ++ 0xb4d: 84, ++ 0xb55: 84, ++ 0xb56: 84, ++ 0xb62: 84, ++ 0xb63: 84, ++ 0xb82: 84, ++ 0xbc0: 84, ++ 0xbcd: 84, ++ 0xc00: 84, ++ 0xc04: 84, ++ 0xc3c: 84, ++ 0xc3e: 84, ++ 0xc3f: 84, ++ 0xc40: 84, ++ 0xc46: 84, ++ 0xc47: 84, ++ 0xc48: 84, ++ 0xc4a: 84, ++ 0xc4b: 84, ++ 0xc4c: 84, ++ 0xc4d: 84, ++ 0xc55: 84, ++ 0xc56: 84, ++ 0xc62: 84, ++ 0xc63: 84, ++ 0xc81: 84, ++ 0xcbc: 84, ++ 0xcbf: 84, ++ 0xcc6: 84, ++ 0xccc: 84, ++ 0xccd: 84, ++ 0xce2: 84, ++ 0xce3: 84, ++ 0xd00: 84, ++ 0xd01: 84, ++ 0xd3b: 84, ++ 0xd3c: 84, ++ 0xd41: 84, ++ 0xd42: 84, ++ 0xd43: 84, ++ 0xd44: 84, ++ 0xd4d: 84, ++ 0xd62: 84, ++ 0xd63: 84, ++ 0xd81: 84, ++ 0xdca: 84, ++ 0xdd2: 84, ++ 0xdd3: 84, ++ 0xdd4: 84, ++ 0xdd6: 84, ++ 0xe31: 84, ++ 0xe34: 84, ++ 0xe35: 84, ++ 0xe36: 84, ++ 0xe37: 84, ++ 0xe38: 84, ++ 0xe39: 84, ++ 0xe3a: 84, ++ 0xe47: 84, ++ 0xe48: 84, ++ 0xe49: 84, ++ 0xe4a: 84, ++ 0xe4b: 84, ++ 0xe4c: 84, ++ 0xe4d: 84, ++ 0xe4e: 84, ++ 0xeb1: 84, ++ 0xeb4: 84, ++ 0xeb5: 84, ++ 0xeb6: 84, ++ 0xeb7: 84, ++ 0xeb8: 84, ++ 0xeb9: 84, ++ 0xeba: 84, ++ 0xebb: 84, ++ 0xebc: 84, ++ 0xec8: 84, ++ 0xec9: 84, ++ 0xeca: 84, ++ 0xecb: 84, ++ 0xecc: 84, ++ 0xecd: 84, ++ 0xece: 84, ++ 0xf18: 84, ++ 0xf19: 84, ++ 0xf35: 84, ++ 0xf37: 84, ++ 0xf39: 84, ++ 0xf71: 84, ++ 0xf72: 84, ++ 0xf73: 84, ++ 0xf74: 84, ++ 0xf75: 84, ++ 0xf76: 84, ++ 0xf77: 84, ++ 0xf78: 84, ++ 0xf79: 84, ++ 0xf7a: 84, ++ 0xf7b: 84, ++ 0xf7c: 84, ++ 0xf7d: 84, ++ 0xf7e: 84, ++ 0xf80: 84, ++ 0xf81: 84, ++ 0xf82: 84, ++ 0xf83: 84, ++ 0xf84: 84, ++ 0xf86: 84, ++ 0xf87: 84, ++ 0xf8d: 84, ++ 0xf8e: 84, ++ 0xf8f: 84, ++ 0xf90: 84, ++ 0xf91: 84, ++ 0xf92: 84, ++ 0xf93: 84, ++ 0xf94: 84, ++ 0xf95: 84, ++ 0xf96: 84, ++ 0xf97: 84, ++ 0xf99: 84, ++ 0xf9a: 84, ++ 0xf9b: 84, ++ 0xf9c: 84, ++ 0xf9d: 84, ++ 0xf9e: 84, ++ 0xf9f: 84, ++ 0xfa0: 84, ++ 0xfa1: 84, ++ 0xfa2: 84, ++ 0xfa3: 84, ++ 0xfa4: 84, ++ 0xfa5: 84, ++ 0xfa6: 84, ++ 0xfa7: 84, ++ 0xfa8: 84, ++ 0xfa9: 84, ++ 0xfaa: 84, ++ 0xfab: 84, ++ 0xfac: 84, ++ 0xfad: 84, ++ 0xfae: 84, ++ 0xfaf: 84, ++ 0xfb0: 84, ++ 0xfb1: 84, ++ 0xfb2: 84, ++ 0xfb3: 84, ++ 0xfb4: 84, ++ 0xfb5: 84, ++ 0xfb6: 84, ++ 0xfb7: 84, ++ 0xfb8: 84, ++ 0xfb9: 84, ++ 0xfba: 84, ++ 0xfbb: 84, ++ 0xfbc: 84, ++ 0xfc6: 84, ++ 0x102d: 84, ++ 0x102e: 84, ++ 0x102f: 84, ++ 0x1030: 84, ++ 0x1032: 84, ++ 0x1033: 84, ++ 0x1034: 84, ++ 0x1035: 84, ++ 0x1036: 84, ++ 0x1037: 84, ++ 0x1039: 84, ++ 0x103a: 84, ++ 0x103d: 84, ++ 0x103e: 84, ++ 0x1058: 84, ++ 0x1059: 84, ++ 0x105e: 84, ++ 0x105f: 84, ++ 0x1060: 84, ++ 0x1071: 84, ++ 0x1072: 84, ++ 0x1073: 84, ++ 0x1074: 84, ++ 0x1082: 84, ++ 0x1085: 84, ++ 0x1086: 84, ++ 0x108d: 84, ++ 0x109d: 84, ++ 0x135d: 84, ++ 0x135e: 84, ++ 0x135f: 84, ++ 0x1712: 84, ++ 0x1713: 84, ++ 0x1714: 84, ++ 0x1732: 84, ++ 0x1733: 84, ++ 0x1752: 84, ++ 0x1753: 84, ++ 0x1772: 84, ++ 0x1773: 84, ++ 0x17b4: 84, ++ 0x17b5: 84, ++ 0x17b7: 84, ++ 0x17b8: 84, ++ 0x17b9: 84, ++ 0x17ba: 84, ++ 0x17bb: 84, ++ 0x17bc: 84, ++ 0x17bd: 84, ++ 0x17c6: 84, ++ 0x17c9: 84, ++ 0x17ca: 84, ++ 0x17cb: 84, ++ 0x17cc: 84, ++ 0x17cd: 84, ++ 0x17ce: 84, ++ 0x17cf: 84, ++ 0x17d0: 84, ++ 0x17d1: 84, ++ 0x17d2: 84, ++ 0x17d3: 84, ++ 0x17dd: 84, + 0x1807: 68, + 0x180a: 67, +- 0x180e: 85, ++ 0x180b: 84, ++ 0x180c: 84, ++ 0x180d: 84, ++ 0x180f: 84, + 0x1820: 68, + 0x1821: 68, + 0x1822: 68, +@@ -538,11 +1215,6 @@ joining_types = { + 0x1876: 68, + 0x1877: 68, + 0x1878: 68, +- 0x1880: 85, +- 0x1881: 85, +- 0x1882: 85, +- 0x1883: 85, +- 0x1884: 85, + 0x1885: 84, + 0x1886: 84, + 0x1887: 68, +@@ -579,14 +1251,339 @@ joining_types = { + 0x18a6: 68, + 0x18a7: 68, + 0x18a8: 68, ++ 0x18a9: 84, + 0x18aa: 68, +- 0x200c: 85, ++ 0x1920: 84, ++ 0x1921: 84, ++ 0x1922: 84, ++ 0x1927: 84, ++ 0x1928: 84, ++ 0x1932: 84, ++ 0x1939: 84, ++ 0x193a: 84, ++ 0x193b: 84, ++ 0x1a17: 84, ++ 0x1a18: 84, ++ 0x1a1b: 84, ++ 0x1a56: 84, ++ 0x1a58: 84, ++ 0x1a59: 84, ++ 0x1a5a: 84, ++ 0x1a5b: 84, ++ 0x1a5c: 84, ++ 0x1a5d: 84, ++ 0x1a5e: 84, ++ 0x1a60: 84, ++ 0x1a62: 84, ++ 0x1a65: 84, ++ 0x1a66: 84, ++ 0x1a67: 84, ++ 0x1a68: 84, ++ 0x1a69: 84, ++ 0x1a6a: 84, ++ 0x1a6b: 84, ++ 0x1a6c: 84, ++ 0x1a73: 84, ++ 0x1a74: 84, ++ 0x1a75: 84, ++ 0x1a76: 84, ++ 0x1a77: 84, ++ 0x1a78: 84, ++ 0x1a79: 84, ++ 0x1a7a: 84, ++ 0x1a7b: 84, ++ 0x1a7c: 84, ++ 0x1a7f: 84, ++ 0x1ab0: 84, ++ 0x1ab1: 84, ++ 0x1ab2: 84, ++ 0x1ab3: 84, ++ 0x1ab4: 84, ++ 0x1ab5: 84, ++ 0x1ab6: 84, ++ 0x1ab7: 84, ++ 0x1ab8: 84, ++ 0x1ab9: 84, ++ 0x1aba: 84, ++ 0x1abb: 84, ++ 0x1abc: 84, ++ 0x1abd: 84, ++ 0x1abe: 84, ++ 0x1abf: 84, ++ 0x1ac0: 84, ++ 0x1ac1: 84, ++ 0x1ac2: 84, ++ 0x1ac3: 84, ++ 0x1ac4: 84, ++ 0x1ac5: 84, ++ 0x1ac6: 84, ++ 0x1ac7: 84, ++ 0x1ac8: 84, ++ 0x1ac9: 84, ++ 0x1aca: 84, ++ 0x1acb: 84, ++ 0x1acc: 84, ++ 0x1acd: 84, ++ 0x1ace: 84, ++ 0x1b00: 84, ++ 0x1b01: 84, ++ 0x1b02: 84, ++ 0x1b03: 84, ++ 0x1b34: 84, ++ 0x1b36: 84, ++ 0x1b37: 84, ++ 0x1b38: 84, ++ 0x1b39: 84, ++ 0x1b3a: 84, ++ 0x1b3c: 84, ++ 0x1b42: 84, ++ 0x1b6b: 84, ++ 0x1b6c: 84, ++ 0x1b6d: 84, ++ 0x1b6e: 84, ++ 0x1b6f: 84, ++ 0x1b70: 84, ++ 0x1b71: 84, ++ 0x1b72: 84, ++ 0x1b73: 84, ++ 0x1b80: 84, ++ 0x1b81: 84, ++ 0x1ba2: 84, ++ 0x1ba3: 84, ++ 0x1ba4: 84, ++ 0x1ba5: 84, ++ 0x1ba8: 84, ++ 0x1ba9: 84, ++ 0x1bab: 84, ++ 0x1bac: 84, ++ 0x1bad: 84, ++ 0x1be6: 84, ++ 0x1be8: 84, ++ 0x1be9: 84, ++ 0x1bed: 84, ++ 0x1bef: 84, ++ 0x1bf0: 84, ++ 0x1bf1: 84, ++ 0x1c2c: 84, ++ 0x1c2d: 84, ++ 0x1c2e: 84, ++ 0x1c2f: 84, ++ 0x1c30: 84, ++ 0x1c31: 84, ++ 0x1c32: 84, ++ 0x1c33: 84, ++ 0x1c36: 84, ++ 0x1c37: 84, ++ 0x1cd0: 84, ++ 0x1cd1: 84, ++ 0x1cd2: 84, ++ 0x1cd4: 84, ++ 0x1cd5: 84, ++ 0x1cd6: 84, ++ 0x1cd7: 84, ++ 0x1cd8: 84, ++ 0x1cd9: 84, ++ 0x1cda: 84, ++ 0x1cdb: 84, ++ 0x1cdc: 84, ++ 0x1cdd: 84, ++ 0x1cde: 84, ++ 0x1cdf: 84, ++ 0x1ce0: 84, ++ 0x1ce2: 84, ++ 0x1ce3: 84, ++ 0x1ce4: 84, ++ 0x1ce5: 84, ++ 0x1ce6: 84, ++ 0x1ce7: 84, ++ 0x1ce8: 84, ++ 0x1ced: 84, ++ 0x1cf4: 84, ++ 0x1cf8: 84, ++ 0x1cf9: 84, ++ 0x1dc0: 84, ++ 0x1dc1: 84, ++ 0x1dc2: 84, ++ 0x1dc3: 84, ++ 0x1dc4: 84, ++ 0x1dc5: 84, ++ 0x1dc6: 84, ++ 0x1dc7: 84, ++ 0x1dc8: 84, ++ 0x1dc9: 84, ++ 0x1dca: 84, ++ 0x1dcb: 84, ++ 0x1dcc: 84, ++ 0x1dcd: 84, ++ 0x1dce: 84, ++ 0x1dcf: 84, ++ 0x1dd0: 84, ++ 0x1dd1: 84, ++ 0x1dd2: 84, ++ 0x1dd3: 84, ++ 0x1dd4: 84, ++ 0x1dd5: 84, ++ 0x1dd6: 84, ++ 0x1dd7: 84, ++ 0x1dd8: 84, ++ 0x1dd9: 84, ++ 0x1dda: 84, ++ 0x1ddb: 84, ++ 0x1ddc: 84, ++ 0x1ddd: 84, ++ 0x1dde: 84, ++ 0x1ddf: 84, ++ 0x1de0: 84, ++ 0x1de1: 84, ++ 0x1de2: 84, ++ 0x1de3: 84, ++ 0x1de4: 84, ++ 0x1de5: 84, ++ 0x1de6: 84, ++ 0x1de7: 84, ++ 0x1de8: 84, ++ 0x1de9: 84, ++ 0x1dea: 84, ++ 0x1deb: 84, ++ 0x1dec: 84, ++ 0x1ded: 84, ++ 0x1dee: 84, ++ 0x1def: 84, ++ 0x1df0: 84, ++ 0x1df1: 84, ++ 0x1df2: 84, ++ 0x1df3: 84, ++ 0x1df4: 84, ++ 0x1df5: 84, ++ 0x1df6: 84, ++ 0x1df7: 84, ++ 0x1df8: 84, ++ 0x1df9: 84, ++ 0x1dfa: 84, ++ 0x1dfb: 84, ++ 0x1dfc: 84, ++ 0x1dfd: 84, ++ 0x1dfe: 84, ++ 0x1dff: 84, ++ 0x200b: 84, + 0x200d: 67, +- 0x202f: 85, +- 0x2066: 85, +- 0x2067: 85, +- 0x2068: 85, +- 0x2069: 85, ++ 0x200e: 84, ++ 0x200f: 84, ++ 0x202a: 84, ++ 0x202b: 84, ++ 0x202c: 84, ++ 0x202d: 84, ++ 0x202e: 84, ++ 0x2060: 84, ++ 0x2061: 84, ++ 0x2062: 84, ++ 0x2063: 84, ++ 0x2064: 84, ++ 0x206a: 84, ++ 0x206b: 84, ++ 0x206c: 84, ++ 0x206d: 84, ++ 0x206e: 84, ++ 0x206f: 84, ++ 0x20d0: 84, ++ 0x20d1: 84, ++ 0x20d2: 84, ++ 0x20d3: 84, ++ 0x20d4: 84, ++ 0x20d5: 84, ++ 0x20d6: 84, ++ 0x20d7: 84, ++ 0x20d8: 84, ++ 0x20d9: 84, ++ 0x20da: 84, ++ 0x20db: 84, ++ 0x20dc: 84, ++ 0x20dd: 84, ++ 0x20de: 84, ++ 0x20df: 84, ++ 0x20e0: 84, ++ 0x20e1: 84, ++ 0x20e2: 84, ++ 0x20e3: 84, ++ 0x20e4: 84, ++ 0x20e5: 84, ++ 0x20e6: 84, ++ 0x20e7: 84, ++ 0x20e8: 84, ++ 0x20e9: 84, ++ 0x20ea: 84, ++ 0x20eb: 84, ++ 0x20ec: 84, ++ 0x20ed: 84, ++ 0x20ee: 84, ++ 0x20ef: 84, ++ 0x20f0: 84, ++ 0x2cef: 84, ++ 0x2cf0: 84, ++ 0x2cf1: 84, ++ 0x2d7f: 84, ++ 0x2de0: 84, ++ 0x2de1: 84, ++ 0x2de2: 84, ++ 0x2de3: 84, ++ 0x2de4: 84, ++ 0x2de5: 84, ++ 0x2de6: 84, ++ 0x2de7: 84, ++ 0x2de8: 84, ++ 0x2de9: 84, ++ 0x2dea: 84, ++ 0x2deb: 84, ++ 0x2dec: 84, ++ 0x2ded: 84, ++ 0x2dee: 84, ++ 0x2def: 84, ++ 0x2df0: 84, ++ 0x2df1: 84, ++ 0x2df2: 84, ++ 0x2df3: 84, ++ 0x2df4: 84, ++ 0x2df5: 84, ++ 0x2df6: 84, ++ 0x2df7: 84, ++ 0x2df8: 84, ++ 0x2df9: 84, ++ 0x2dfa: 84, ++ 0x2dfb: 84, ++ 0x2dfc: 84, ++ 0x2dfd: 84, ++ 0x2dfe: 84, ++ 0x2dff: 84, ++ 0x302a: 84, ++ 0x302b: 84, ++ 0x302c: 84, ++ 0x302d: 84, ++ 0x3099: 84, ++ 0x309a: 84, ++ 0xa66f: 84, ++ 0xa670: 84, ++ 0xa671: 84, ++ 0xa672: 84, ++ 0xa674: 84, ++ 0xa675: 84, ++ 0xa676: 84, ++ 0xa677: 84, ++ 0xa678: 84, ++ 0xa679: 84, ++ 0xa67a: 84, ++ 0xa67b: 84, ++ 0xa67c: 84, ++ 0xa67d: 84, ++ 0xa69e: 84, ++ 0xa69f: 84, ++ 0xa6f0: 84, ++ 0xa6f1: 84, ++ 0xa802: 84, ++ 0xa806: 84, ++ 0xa80b: 84, ++ 0xa825: 84, ++ 0xa826: 84, ++ 0xa82c: 84, + 0xa840: 68, + 0xa841: 68, + 0xa842: 68, +@@ -638,20 +1635,151 @@ joining_types = { + 0xa870: 68, + 0xa871: 68, + 0xa872: 76, +- 0xa873: 85, ++ 0xa8c4: 84, ++ 0xa8c5: 84, ++ 0xa8e0: 84, ++ 0xa8e1: 84, ++ 0xa8e2: 84, ++ 0xa8e3: 84, ++ 0xa8e4: 84, ++ 0xa8e5: 84, ++ 0xa8e6: 84, ++ 0xa8e7: 84, ++ 0xa8e8: 84, ++ 0xa8e9: 84, ++ 0xa8ea: 84, ++ 0xa8eb: 84, ++ 0xa8ec: 84, ++ 0xa8ed: 84, ++ 0xa8ee: 84, ++ 0xa8ef: 84, ++ 0xa8f0: 84, ++ 0xa8f1: 84, ++ 0xa8ff: 84, ++ 0xa926: 84, ++ 0xa927: 84, ++ 0xa928: 84, ++ 0xa929: 84, ++ 0xa92a: 84, ++ 0xa92b: 84, ++ 0xa92c: 84, ++ 0xa92d: 84, ++ 0xa947: 84, ++ 0xa948: 84, ++ 0xa949: 84, ++ 0xa94a: 84, ++ 0xa94b: 84, ++ 0xa94c: 84, ++ 0xa94d: 84, ++ 0xa94e: 84, ++ 0xa94f: 84, ++ 0xa950: 84, ++ 0xa951: 84, ++ 0xa980: 84, ++ 0xa981: 84, ++ 0xa982: 84, ++ 0xa9b3: 84, ++ 0xa9b6: 84, ++ 0xa9b7: 84, ++ 0xa9b8: 84, ++ 0xa9b9: 84, ++ 0xa9bc: 84, ++ 0xa9bd: 84, ++ 0xa9e5: 84, ++ 0xaa29: 84, ++ 0xaa2a: 84, ++ 0xaa2b: 84, ++ 0xaa2c: 84, ++ 0xaa2d: 84, ++ 0xaa2e: 84, ++ 0xaa31: 84, ++ 0xaa32: 84, ++ 0xaa35: 84, ++ 0xaa36: 84, ++ 0xaa43: 84, ++ 0xaa4c: 84, ++ 0xaa7c: 84, ++ 0xaab0: 84, ++ 0xaab2: 84, ++ 0xaab3: 84, ++ 0xaab4: 84, ++ 0xaab7: 84, ++ 0xaab8: 84, ++ 0xaabe: 84, ++ 0xaabf: 84, ++ 0xaac1: 84, ++ 0xaaec: 84, ++ 0xaaed: 84, ++ 0xaaf6: 84, ++ 0xabe5: 84, ++ 0xabe8: 84, ++ 0xabed: 84, ++ 0xfb1e: 84, ++ 0xfe00: 84, ++ 0xfe01: 84, ++ 0xfe02: 84, ++ 0xfe03: 84, ++ 0xfe04: 84, ++ 0xfe05: 84, ++ 0xfe06: 84, ++ 0xfe07: 84, ++ 0xfe08: 84, ++ 0xfe09: 84, ++ 0xfe0a: 84, ++ 0xfe0b: 84, ++ 0xfe0c: 84, ++ 0xfe0d: 84, ++ 0xfe0e: 84, ++ 0xfe0f: 84, ++ 0xfe20: 84, ++ 0xfe21: 84, ++ 0xfe22: 84, ++ 0xfe23: 84, ++ 0xfe24: 84, ++ 0xfe25: 84, ++ 0xfe26: 84, ++ 0xfe27: 84, ++ 0xfe28: 84, ++ 0xfe29: 84, ++ 0xfe2a: 84, ++ 0xfe2b: 84, ++ 0xfe2c: 84, ++ 0xfe2d: 84, ++ 0xfe2e: 84, ++ 0xfe2f: 84, ++ 0xfeff: 84, ++ 0xfff9: 84, ++ 0xfffa: 84, ++ 0xfffb: 84, ++ 0x101fd: 84, ++ 0x102e0: 84, ++ 0x10376: 84, ++ 0x10377: 84, ++ 0x10378: 84, ++ 0x10379: 84, ++ 0x1037a: 84, ++ 0x10a01: 84, ++ 0x10a02: 84, ++ 0x10a03: 84, ++ 0x10a05: 84, ++ 0x10a06: 84, ++ 0x10a0c: 84, ++ 0x10a0d: 84, ++ 0x10a0e: 84, ++ 0x10a0f: 84, ++ 0x10a38: 84, ++ 0x10a39: 84, ++ 0x10a3a: 84, ++ 0x10a3f: 84, + 0x10ac0: 68, + 0x10ac1: 68, + 0x10ac2: 68, + 0x10ac3: 68, + 0x10ac4: 68, + 0x10ac5: 82, +- 0x10ac6: 85, + 0x10ac7: 82, +- 0x10ac8: 85, + 0x10ac9: 82, + 0x10aca: 82, +- 0x10acb: 85, +- 0x10acc: 85, + 0x10acd: 76, + 0x10ace: 82, + 0x10acf: 82, +@@ -673,9 +1801,9 @@ joining_types = { + 0x10adf: 68, + 0x10ae0: 68, + 0x10ae1: 82, +- 0x10ae2: 85, +- 0x10ae3: 85, + 0x10ae4: 82, ++ 0x10ae5: 84, ++ 0x10ae6: 84, + 0x10aeb: 68, + 0x10aec: 68, + 0x10aed: 68, +@@ -705,7 +1833,6 @@ joining_types = { + 0x10bac: 82, + 0x10bad: 68, + 0x10bae: 68, +- 0x10baf: 85, + 0x10d00: 76, + 0x10d01: 68, + 0x10d02: 68, +@@ -742,6 +1869,15 @@ joining_types = { + 0x10d21: 68, + 0x10d22: 82, + 0x10d23: 68, ++ 0x10d24: 84, ++ 0x10d25: 84, ++ 0x10d26: 84, ++ 0x10d27: 84, ++ 0x10eab: 84, ++ 0x10eac: 84, ++ 0x10efd: 84, ++ 0x10efe: 84, ++ 0x10eff: 84, + 0x10f30: 68, + 0x10f31: 68, + 0x10f32: 68, +@@ -763,19 +1899,49 @@ joining_types = { + 0x10f42: 68, + 0x10f43: 68, + 0x10f44: 68, +- 0x10f45: 85, ++ 0x10f46: 84, ++ 0x10f47: 84, ++ 0x10f48: 84, ++ 0x10f49: 84, ++ 0x10f4a: 84, ++ 0x10f4b: 84, ++ 0x10f4c: 84, ++ 0x10f4d: 84, ++ 0x10f4e: 84, ++ 0x10f4f: 84, ++ 0x10f50: 84, + 0x10f51: 68, + 0x10f52: 68, + 0x10f53: 68, + 0x10f54: 82, ++ 0x10f70: 68, ++ 0x10f71: 68, ++ 0x10f72: 68, ++ 0x10f73: 68, ++ 0x10f74: 82, ++ 0x10f75: 82, ++ 0x10f76: 68, ++ 0x10f77: 68, ++ 0x10f78: 68, ++ 0x10f79: 68, ++ 0x10f7a: 68, ++ 0x10f7b: 68, ++ 0x10f7c: 68, ++ 0x10f7d: 68, ++ 0x10f7e: 68, ++ 0x10f7f: 68, ++ 0x10f80: 68, ++ 0x10f81: 68, ++ 0x10f82: 84, ++ 0x10f83: 84, ++ 0x10f84: 84, ++ 0x10f85: 84, + 0x10fb0: 68, +- 0x10fb1: 85, + 0x10fb2: 68, + 0x10fb3: 68, + 0x10fb4: 82, + 0x10fb5: 82, + 0x10fb6: 82, +- 0x10fb7: 85, + 0x10fb8: 68, + 0x10fb9: 82, + 0x10fba: 82, +@@ -784,20 +1950,668 @@ joining_types = { + 0x10fbd: 82, + 0x10fbe: 68, + 0x10fbf: 68, +- 0x10fc0: 85, + 0x10fc1: 68, + 0x10fc2: 82, + 0x10fc3: 82, + 0x10fc4: 68, +- 0x10fc5: 85, +- 0x10fc6: 85, +- 0x10fc7: 85, +- 0x10fc8: 85, + 0x10fc9: 82, + 0x10fca: 68, + 0x10fcb: 76, +- 0x110bd: 85, +- 0x110cd: 85, ++ 0x11001: 84, ++ 0x11038: 84, ++ 0x11039: 84, ++ 0x1103a: 84, ++ 0x1103b: 84, ++ 0x1103c: 84, ++ 0x1103d: 84, ++ 0x1103e: 84, ++ 0x1103f: 84, ++ 0x11040: 84, ++ 0x11041: 84, ++ 0x11042: 84, ++ 0x11043: 84, ++ 0x11044: 84, ++ 0x11045: 84, ++ 0x11046: 84, ++ 0x11070: 84, ++ 0x11073: 84, ++ 0x11074: 84, ++ 0x1107f: 84, ++ 0x11080: 84, ++ 0x11081: 84, ++ 0x110b3: 84, ++ 0x110b4: 84, ++ 0x110b5: 84, ++ 0x110b6: 84, ++ 0x110b9: 84, ++ 0x110ba: 84, ++ 0x110c2: 84, ++ 0x11100: 84, ++ 0x11101: 84, ++ 0x11102: 84, ++ 0x11127: 84, ++ 0x11128: 84, ++ 0x11129: 84, ++ 0x1112a: 84, ++ 0x1112b: 84, ++ 0x1112d: 84, ++ 0x1112e: 84, ++ 0x1112f: 84, ++ 0x11130: 84, ++ 0x11131: 84, ++ 0x11132: 84, ++ 0x11133: 84, ++ 0x11134: 84, ++ 0x11173: 84, ++ 0x11180: 84, ++ 0x11181: 84, ++ 0x111b6: 84, ++ 0x111b7: 84, ++ 0x111b8: 84, ++ 0x111b9: 84, ++ 0x111ba: 84, ++ 0x111bb: 84, ++ 0x111bc: 84, ++ 0x111bd: 84, ++ 0x111be: 84, ++ 0x111c9: 84, ++ 0x111ca: 84, ++ 0x111cb: 84, ++ 0x111cc: 84, ++ 0x111cf: 84, ++ 0x1122f: 84, ++ 0x11230: 84, ++ 0x11231: 84, ++ 0x11234: 84, ++ 0x11236: 84, ++ 0x11237: 84, ++ 0x1123e: 84, ++ 0x11241: 84, ++ 0x112df: 84, ++ 0x112e3: 84, ++ 0x112e4: 84, ++ 0x112e5: 84, ++ 0x112e6: 84, ++ 0x112e7: 84, ++ 0x112e8: 84, ++ 0x112e9: 84, ++ 0x112ea: 84, ++ 0x11300: 84, ++ 0x11301: 84, ++ 0x1133b: 84, ++ 0x1133c: 84, ++ 0x11340: 84, ++ 0x11366: 84, ++ 0x11367: 84, ++ 0x11368: 84, ++ 0x11369: 84, ++ 0x1136a: 84, ++ 0x1136b: 84, ++ 0x1136c: 84, ++ 0x11370: 84, ++ 0x11371: 84, ++ 0x11372: 84, ++ 0x11373: 84, ++ 0x11374: 84, ++ 0x11438: 84, ++ 0x11439: 84, ++ 0x1143a: 84, ++ 0x1143b: 84, ++ 0x1143c: 84, ++ 0x1143d: 84, ++ 0x1143e: 84, ++ 0x1143f: 84, ++ 0x11442: 84, ++ 0x11443: 84, ++ 0x11444: 84, ++ 0x11446: 84, ++ 0x1145e: 84, ++ 0x114b3: 84, ++ 0x114b4: 84, ++ 0x114b5: 84, ++ 0x114b6: 84, ++ 0x114b7: 84, ++ 0x114b8: 84, ++ 0x114ba: 84, ++ 0x114bf: 84, ++ 0x114c0: 84, ++ 0x114c2: 84, ++ 0x114c3: 84, ++ 0x115b2: 84, ++ 0x115b3: 84, ++ 0x115b4: 84, ++ 0x115b5: 84, ++ 0x115bc: 84, ++ 0x115bd: 84, ++ 0x115bf: 84, ++ 0x115c0: 84, ++ 0x115dc: 84, ++ 0x115dd: 84, ++ 0x11633: 84, ++ 0x11634: 84, ++ 0x11635: 84, ++ 0x11636: 84, ++ 0x11637: 84, ++ 0x11638: 84, ++ 0x11639: 84, ++ 0x1163a: 84, ++ 0x1163d: 84, ++ 0x1163f: 84, ++ 0x11640: 84, ++ 0x116ab: 84, ++ 0x116ad: 84, ++ 0x116b0: 84, ++ 0x116b1: 84, ++ 0x116b2: 84, ++ 0x116b3: 84, ++ 0x116b4: 84, ++ 0x116b5: 84, ++ 0x116b7: 84, ++ 0x1171d: 84, ++ 0x1171e: 84, ++ 0x1171f: 84, ++ 0x11722: 84, ++ 0x11723: 84, ++ 0x11724: 84, ++ 0x11725: 84, ++ 0x11727: 84, ++ 0x11728: 84, ++ 0x11729: 84, ++ 0x1172a: 84, ++ 0x1172b: 84, ++ 0x1182f: 84, ++ 0x11830: 84, ++ 0x11831: 84, ++ 0x11832: 84, ++ 0x11833: 84, ++ 0x11834: 84, ++ 0x11835: 84, ++ 0x11836: 84, ++ 0x11837: 84, ++ 0x11839: 84, ++ 0x1183a: 84, ++ 0x1193b: 84, ++ 0x1193c: 84, ++ 0x1193e: 84, ++ 0x11943: 84, ++ 0x119d4: 84, ++ 0x119d5: 84, ++ 0x119d6: 84, ++ 0x119d7: 84, ++ 0x119da: 84, ++ 0x119db: 84, ++ 0x119e0: 84, ++ 0x11a01: 84, ++ 0x11a02: 84, ++ 0x11a03: 84, ++ 0x11a04: 84, ++ 0x11a05: 84, ++ 0x11a06: 84, ++ 0x11a07: 84, ++ 0x11a08: 84, ++ 0x11a09: 84, ++ 0x11a0a: 84, ++ 0x11a33: 84, ++ 0x11a34: 84, ++ 0x11a35: 84, ++ 0x11a36: 84, ++ 0x11a37: 84, ++ 0x11a38: 84, ++ 0x11a3b: 84, ++ 0x11a3c: 84, ++ 0x11a3d: 84, ++ 0x11a3e: 84, ++ 0x11a47: 84, ++ 0x11a51: 84, ++ 0x11a52: 84, ++ 0x11a53: 84, ++ 0x11a54: 84, ++ 0x11a55: 84, ++ 0x11a56: 84, ++ 0x11a59: 84, ++ 0x11a5a: 84, ++ 0x11a5b: 84, ++ 0x11a8a: 84, ++ 0x11a8b: 84, ++ 0x11a8c: 84, ++ 0x11a8d: 84, ++ 0x11a8e: 84, ++ 0x11a8f: 84, ++ 0x11a90: 84, ++ 0x11a91: 84, ++ 0x11a92: 84, ++ 0x11a93: 84, ++ 0x11a94: 84, ++ 0x11a95: 84, ++ 0x11a96: 84, ++ 0x11a98: 84, ++ 0x11a99: 84, ++ 0x11c30: 84, ++ 0x11c31: 84, ++ 0x11c32: 84, ++ 0x11c33: 84, ++ 0x11c34: 84, ++ 0x11c35: 84, ++ 0x11c36: 84, ++ 0x11c38: 84, ++ 0x11c39: 84, ++ 0x11c3a: 84, ++ 0x11c3b: 84, ++ 0x11c3c: 84, ++ 0x11c3d: 84, ++ 0x11c3f: 84, ++ 0x11c92: 84, ++ 0x11c93: 84, ++ 0x11c94: 84, ++ 0x11c95: 84, ++ 0x11c96: 84, ++ 0x11c97: 84, ++ 0x11c98: 84, ++ 0x11c99: 84, ++ 0x11c9a: 84, ++ 0x11c9b: 84, ++ 0x11c9c: 84, ++ 0x11c9d: 84, ++ 0x11c9e: 84, ++ 0x11c9f: 84, ++ 0x11ca0: 84, ++ 0x11ca1: 84, ++ 0x11ca2: 84, ++ 0x11ca3: 84, ++ 0x11ca4: 84, ++ 0x11ca5: 84, ++ 0x11ca6: 84, ++ 0x11ca7: 84, ++ 0x11caa: 84, ++ 0x11cab: 84, ++ 0x11cac: 84, ++ 0x11cad: 84, ++ 0x11cae: 84, ++ 0x11caf: 84, ++ 0x11cb0: 84, ++ 0x11cb2: 84, ++ 0x11cb3: 84, ++ 0x11cb5: 84, ++ 0x11cb6: 84, ++ 0x11d31: 84, ++ 0x11d32: 84, ++ 0x11d33: 84, ++ 0x11d34: 84, ++ 0x11d35: 84, ++ 0x11d36: 84, ++ 0x11d3a: 84, ++ 0x11d3c: 84, ++ 0x11d3d: 84, ++ 0x11d3f: 84, ++ 0x11d40: 84, ++ 0x11d41: 84, ++ 0x11d42: 84, ++ 0x11d43: 84, ++ 0x11d44: 84, ++ 0x11d45: 84, ++ 0x11d47: 84, ++ 0x11d90: 84, ++ 0x11d91: 84, ++ 0x11d95: 84, ++ 0x11d97: 84, ++ 0x11ef3: 84, ++ 0x11ef4: 84, ++ 0x11f00: 84, ++ 0x11f01: 84, ++ 0x11f36: 84, ++ 0x11f37: 84, ++ 0x11f38: 84, ++ 0x11f39: 84, ++ 0x11f3a: 84, ++ 0x11f40: 84, ++ 0x11f42: 84, ++ 0x13430: 84, ++ 0x13431: 84, ++ 0x13432: 84, ++ 0x13433: 84, ++ 0x13434: 84, ++ 0x13435: 84, ++ 0x13436: 84, ++ 0x13437: 84, ++ 0x13438: 84, ++ 0x13439: 84, ++ 0x1343a: 84, ++ 0x1343b: 84, ++ 0x1343c: 84, ++ 0x1343d: 84, ++ 0x1343e: 84, ++ 0x1343f: 84, ++ 0x13440: 84, ++ 0x13447: 84, ++ 0x13448: 84, ++ 0x13449: 84, ++ 0x1344a: 84, ++ 0x1344b: 84, ++ 0x1344c: 84, ++ 0x1344d: 84, ++ 0x1344e: 84, ++ 0x1344f: 84, ++ 0x13450: 84, ++ 0x13451: 84, ++ 0x13452: 84, ++ 0x13453: 84, ++ 0x13454: 84, ++ 0x13455: 84, ++ 0x16af0: 84, ++ 0x16af1: 84, ++ 0x16af2: 84, ++ 0x16af3: 84, ++ 0x16af4: 84, ++ 0x16b30: 84, ++ 0x16b31: 84, ++ 0x16b32: 84, ++ 0x16b33: 84, ++ 0x16b34: 84, ++ 0x16b35: 84, ++ 0x16b36: 84, ++ 0x16f4f: 84, ++ 0x16f8f: 84, ++ 0x16f90: 84, ++ 0x16f91: 84, ++ 0x16f92: 84, ++ 0x16fe4: 84, ++ 0x1bc9d: 84, ++ 0x1bc9e: 84, ++ 0x1bca0: 84, ++ 0x1bca1: 84, ++ 0x1bca2: 84, ++ 0x1bca3: 84, ++ 0x1cf00: 84, ++ 0x1cf01: 84, ++ 0x1cf02: 84, ++ 0x1cf03: 84, ++ 0x1cf04: 84, ++ 0x1cf05: 84, ++ 0x1cf06: 84, ++ 0x1cf07: 84, ++ 0x1cf08: 84, ++ 0x1cf09: 84, ++ 0x1cf0a: 84, ++ 0x1cf0b: 84, ++ 0x1cf0c: 84, ++ 0x1cf0d: 84, ++ 0x1cf0e: 84, ++ 0x1cf0f: 84, ++ 0x1cf10: 84, ++ 0x1cf11: 84, ++ 0x1cf12: 84, ++ 0x1cf13: 84, ++ 0x1cf14: 84, ++ 0x1cf15: 84, ++ 0x1cf16: 84, ++ 0x1cf17: 84, ++ 0x1cf18: 84, ++ 0x1cf19: 84, ++ 0x1cf1a: 84, ++ 0x1cf1b: 84, ++ 0x1cf1c: 84, ++ 0x1cf1d: 84, ++ 0x1cf1e: 84, ++ 0x1cf1f: 84, ++ 0x1cf20: 84, ++ 0x1cf21: 84, ++ 0x1cf22: 84, ++ 0x1cf23: 84, ++ 0x1cf24: 84, ++ 0x1cf25: 84, ++ 0x1cf26: 84, ++ 0x1cf27: 84, ++ 0x1cf28: 84, ++ 0x1cf29: 84, ++ 0x1cf2a: 84, ++ 0x1cf2b: 84, ++ 0x1cf2c: 84, ++ 0x1cf2d: 84, ++ 0x1cf30: 84, ++ 0x1cf31: 84, ++ 0x1cf32: 84, ++ 0x1cf33: 84, ++ 0x1cf34: 84, ++ 0x1cf35: 84, ++ 0x1cf36: 84, ++ 0x1cf37: 84, ++ 0x1cf38: 84, ++ 0x1cf39: 84, ++ 0x1cf3a: 84, ++ 0x1cf3b: 84, ++ 0x1cf3c: 84, ++ 0x1cf3d: 84, ++ 0x1cf3e: 84, ++ 0x1cf3f: 84, ++ 0x1cf40: 84, ++ 0x1cf41: 84, ++ 0x1cf42: 84, ++ 0x1cf43: 84, ++ 0x1cf44: 84, ++ 0x1cf45: 84, ++ 0x1cf46: 84, ++ 0x1d167: 84, ++ 0x1d168: 84, ++ 0x1d169: 84, ++ 0x1d173: 84, ++ 0x1d174: 84, ++ 0x1d175: 84, ++ 0x1d176: 84, ++ 0x1d177: 84, ++ 0x1d178: 84, ++ 0x1d179: 84, ++ 0x1d17a: 84, ++ 0x1d17b: 84, ++ 0x1d17c: 84, ++ 0x1d17d: 84, ++ 0x1d17e: 84, ++ 0x1d17f: 84, ++ 0x1d180: 84, ++ 0x1d181: 84, ++ 0x1d182: 84, ++ 0x1d185: 84, ++ 0x1d186: 84, ++ 0x1d187: 84, ++ 0x1d188: 84, ++ 0x1d189: 84, ++ 0x1d18a: 84, ++ 0x1d18b: 84, ++ 0x1d1aa: 84, ++ 0x1d1ab: 84, ++ 0x1d1ac: 84, ++ 0x1d1ad: 84, ++ 0x1d242: 84, ++ 0x1d243: 84, ++ 0x1d244: 84, ++ 0x1da00: 84, ++ 0x1da01: 84, ++ 0x1da02: 84, ++ 0x1da03: 84, ++ 0x1da04: 84, ++ 0x1da05: 84, ++ 0x1da06: 84, ++ 0x1da07: 84, ++ 0x1da08: 84, ++ 0x1da09: 84, ++ 0x1da0a: 84, ++ 0x1da0b: 84, ++ 0x1da0c: 84, ++ 0x1da0d: 84, ++ 0x1da0e: 84, ++ 0x1da0f: 84, ++ 0x1da10: 84, ++ 0x1da11: 84, ++ 0x1da12: 84, ++ 0x1da13: 84, ++ 0x1da14: 84, ++ 0x1da15: 84, ++ 0x1da16: 84, ++ 0x1da17: 84, ++ 0x1da18: 84, ++ 0x1da19: 84, ++ 0x1da1a: 84, ++ 0x1da1b: 84, ++ 0x1da1c: 84, ++ 0x1da1d: 84, ++ 0x1da1e: 84, ++ 0x1da1f: 84, ++ 0x1da20: 84, ++ 0x1da21: 84, ++ 0x1da22: 84, ++ 0x1da23: 84, ++ 0x1da24: 84, ++ 0x1da25: 84, ++ 0x1da26: 84, ++ 0x1da27: 84, ++ 0x1da28: 84, ++ 0x1da29: 84, ++ 0x1da2a: 84, ++ 0x1da2b: 84, ++ 0x1da2c: 84, ++ 0x1da2d: 84, ++ 0x1da2e: 84, ++ 0x1da2f: 84, ++ 0x1da30: 84, ++ 0x1da31: 84, ++ 0x1da32: 84, ++ 0x1da33: 84, ++ 0x1da34: 84, ++ 0x1da35: 84, ++ 0x1da36: 84, ++ 0x1da3b: 84, ++ 0x1da3c: 84, ++ 0x1da3d: 84, ++ 0x1da3e: 84, ++ 0x1da3f: 84, ++ 0x1da40: 84, ++ 0x1da41: 84, ++ 0x1da42: 84, ++ 0x1da43: 84, ++ 0x1da44: 84, ++ 0x1da45: 84, ++ 0x1da46: 84, ++ 0x1da47: 84, ++ 0x1da48: 84, ++ 0x1da49: 84, ++ 0x1da4a: 84, ++ 0x1da4b: 84, ++ 0x1da4c: 84, ++ 0x1da4d: 84, ++ 0x1da4e: 84, ++ 0x1da4f: 84, ++ 0x1da50: 84, ++ 0x1da51: 84, ++ 0x1da52: 84, ++ 0x1da53: 84, ++ 0x1da54: 84, ++ 0x1da55: 84, ++ 0x1da56: 84, ++ 0x1da57: 84, ++ 0x1da58: 84, ++ 0x1da59: 84, ++ 0x1da5a: 84, ++ 0x1da5b: 84, ++ 0x1da5c: 84, ++ 0x1da5d: 84, ++ 0x1da5e: 84, ++ 0x1da5f: 84, ++ 0x1da60: 84, ++ 0x1da61: 84, ++ 0x1da62: 84, ++ 0x1da63: 84, ++ 0x1da64: 84, ++ 0x1da65: 84, ++ 0x1da66: 84, ++ 0x1da67: 84, ++ 0x1da68: 84, ++ 0x1da69: 84, ++ 0x1da6a: 84, ++ 0x1da6b: 84, ++ 0x1da6c: 84, ++ 0x1da75: 84, ++ 0x1da84: 84, ++ 0x1da9b: 84, ++ 0x1da9c: 84, ++ 0x1da9d: 84, ++ 0x1da9e: 84, ++ 0x1da9f: 84, ++ 0x1daa1: 84, ++ 0x1daa2: 84, ++ 0x1daa3: 84, ++ 0x1daa4: 84, ++ 0x1daa5: 84, ++ 0x1daa6: 84, ++ 0x1daa7: 84, ++ 0x1daa8: 84, ++ 0x1daa9: 84, ++ 0x1daaa: 84, ++ 0x1daab: 84, ++ 0x1daac: 84, ++ 0x1daad: 84, ++ 0x1daae: 84, ++ 0x1daaf: 84, ++ 0x1e000: 84, ++ 0x1e001: 84, ++ 0x1e002: 84, ++ 0x1e003: 84, ++ 0x1e004: 84, ++ 0x1e005: 84, ++ 0x1e006: 84, ++ 0x1e008: 84, ++ 0x1e009: 84, ++ 0x1e00a: 84, ++ 0x1e00b: 84, ++ 0x1e00c: 84, ++ 0x1e00d: 84, ++ 0x1e00e: 84, ++ 0x1e00f: 84, ++ 0x1e010: 84, ++ 0x1e011: 84, ++ 0x1e012: 84, ++ 0x1e013: 84, ++ 0x1e014: 84, ++ 0x1e015: 84, ++ 0x1e016: 84, ++ 0x1e017: 84, ++ 0x1e018: 84, ++ 0x1e01b: 84, ++ 0x1e01c: 84, ++ 0x1e01d: 84, ++ 0x1e01e: 84, ++ 0x1e01f: 84, ++ 0x1e020: 84, ++ 0x1e021: 84, ++ 0x1e023: 84, ++ 0x1e024: 84, ++ 0x1e026: 84, ++ 0x1e027: 84, ++ 0x1e028: 84, ++ 0x1e029: 84, ++ 0x1e02a: 84, ++ 0x1e08f: 84, ++ 0x1e130: 84, ++ 0x1e131: 84, ++ 0x1e132: 84, ++ 0x1e133: 84, ++ 0x1e134: 84, ++ 0x1e135: 84, ++ 0x1e136: 84, ++ 0x1e2ae: 84, ++ 0x1e2ec: 84, ++ 0x1e2ed: 84, ++ 0x1e2ee: 84, ++ 0x1e2ef: 84, ++ 0x1e4ec: 84, ++ 0x1e4ed: 84, ++ 0x1e4ee: 84, ++ 0x1e4ef: 84, ++ 0x1e8d0: 84, ++ 0x1e8d1: 84, ++ 0x1e8d2: 84, ++ 0x1e8d3: 84, ++ 0x1e8d4: 84, ++ 0x1e8d5: 84, ++ 0x1e8d6: 84, + 0x1e900: 68, + 0x1e901: 68, + 0x1e902: 68, +@@ -866,7 +2680,351 @@ joining_types = { + 0x1e941: 68, + 0x1e942: 68, + 0x1e943: 68, ++ 0x1e944: 84, ++ 0x1e945: 84, ++ 0x1e946: 84, ++ 0x1e947: 84, ++ 0x1e948: 84, ++ 0x1e949: 84, ++ 0x1e94a: 84, + 0x1e94b: 84, ++ 0xe0001: 84, ++ 0xe0020: 84, ++ 0xe0021: 84, ++ 0xe0022: 84, ++ 0xe0023: 84, ++ 0xe0024: 84, ++ 0xe0025: 84, ++ 0xe0026: 84, ++ 0xe0027: 84, ++ 0xe0028: 84, ++ 0xe0029: 84, ++ 0xe002a: 84, ++ 0xe002b: 84, ++ 0xe002c: 84, ++ 0xe002d: 84, ++ 0xe002e: 84, ++ 0xe002f: 84, ++ 0xe0030: 84, ++ 0xe0031: 84, ++ 0xe0032: 84, ++ 0xe0033: 84, ++ 0xe0034: 84, ++ 0xe0035: 84, ++ 0xe0036: 84, ++ 0xe0037: 84, ++ 0xe0038: 84, ++ 0xe0039: 84, ++ 0xe003a: 84, ++ 0xe003b: 84, ++ 0xe003c: 84, ++ 0xe003d: 84, ++ 0xe003e: 84, ++ 0xe003f: 84, ++ 0xe0040: 84, ++ 0xe0041: 84, ++ 0xe0042: 84, ++ 0xe0043: 84, ++ 0xe0044: 84, ++ 0xe0045: 84, ++ 0xe0046: 84, ++ 0xe0047: 84, ++ 0xe0048: 84, ++ 0xe0049: 84, ++ 0xe004a: 84, ++ 0xe004b: 84, ++ 0xe004c: 84, ++ 0xe004d: 84, ++ 0xe004e: 84, ++ 0xe004f: 84, ++ 0xe0050: 84, ++ 0xe0051: 84, ++ 0xe0052: 84, ++ 0xe0053: 84, ++ 0xe0054: 84, ++ 0xe0055: 84, ++ 0xe0056: 84, ++ 0xe0057: 84, ++ 0xe0058: 84, ++ 0xe0059: 84, ++ 0xe005a: 84, ++ 0xe005b: 84, ++ 0xe005c: 84, ++ 0xe005d: 84, ++ 0xe005e: 84, ++ 0xe005f: 84, ++ 0xe0060: 84, ++ 0xe0061: 84, ++ 0xe0062: 84, ++ 0xe0063: 84, ++ 0xe0064: 84, ++ 0xe0065: 84, ++ 0xe0066: 84, ++ 0xe0067: 84, ++ 0xe0068: 84, ++ 0xe0069: 84, ++ 0xe006a: 84, ++ 0xe006b: 84, ++ 0xe006c: 84, ++ 0xe006d: 84, ++ 0xe006e: 84, ++ 0xe006f: 84, ++ 0xe0070: 84, ++ 0xe0071: 84, ++ 0xe0072: 84, ++ 0xe0073: 84, ++ 0xe0074: 84, ++ 0xe0075: 84, ++ 0xe0076: 84, ++ 0xe0077: 84, ++ 0xe0078: 84, ++ 0xe0079: 84, ++ 0xe007a: 84, ++ 0xe007b: 84, ++ 0xe007c: 84, ++ 0xe007d: 84, ++ 0xe007e: 84, ++ 0xe007f: 84, ++ 0xe0100: 84, ++ 0xe0101: 84, ++ 0xe0102: 84, ++ 0xe0103: 84, ++ 0xe0104: 84, ++ 0xe0105: 84, ++ 0xe0106: 84, ++ 0xe0107: 84, ++ 0xe0108: 84, ++ 0xe0109: 84, ++ 0xe010a: 84, ++ 0xe010b: 84, ++ 0xe010c: 84, ++ 0xe010d: 84, ++ 0xe010e: 84, ++ 0xe010f: 84, ++ 0xe0110: 84, ++ 0xe0111: 84, ++ 0xe0112: 84, ++ 0xe0113: 84, ++ 0xe0114: 84, ++ 0xe0115: 84, ++ 0xe0116: 84, ++ 0xe0117: 84, ++ 0xe0118: 84, ++ 0xe0119: 84, ++ 0xe011a: 84, ++ 0xe011b: 84, ++ 0xe011c: 84, ++ 0xe011d: 84, ++ 0xe011e: 84, ++ 0xe011f: 84, ++ 0xe0120: 84, ++ 0xe0121: 84, ++ 0xe0122: 84, ++ 0xe0123: 84, ++ 0xe0124: 84, ++ 0xe0125: 84, ++ 0xe0126: 84, ++ 0xe0127: 84, ++ 0xe0128: 84, ++ 0xe0129: 84, ++ 0xe012a: 84, ++ 0xe012b: 84, ++ 0xe012c: 84, ++ 0xe012d: 84, ++ 0xe012e: 84, ++ 0xe012f: 84, ++ 0xe0130: 84, ++ 0xe0131: 84, ++ 0xe0132: 84, ++ 0xe0133: 84, ++ 0xe0134: 84, ++ 0xe0135: 84, ++ 0xe0136: 84, ++ 0xe0137: 84, ++ 0xe0138: 84, ++ 0xe0139: 84, ++ 0xe013a: 84, ++ 0xe013b: 84, ++ 0xe013c: 84, ++ 0xe013d: 84, ++ 0xe013e: 84, ++ 0xe013f: 84, ++ 0xe0140: 84, ++ 0xe0141: 84, ++ 0xe0142: 84, ++ 0xe0143: 84, ++ 0xe0144: 84, ++ 0xe0145: 84, ++ 0xe0146: 84, ++ 0xe0147: 84, ++ 0xe0148: 84, ++ 0xe0149: 84, ++ 0xe014a: 84, ++ 0xe014b: 84, ++ 0xe014c: 84, ++ 0xe014d: 84, ++ 0xe014e: 84, ++ 0xe014f: 84, ++ 0xe0150: 84, ++ 0xe0151: 84, ++ 0xe0152: 84, ++ 0xe0153: 84, ++ 0xe0154: 84, ++ 0xe0155: 84, ++ 0xe0156: 84, ++ 0xe0157: 84, ++ 0xe0158: 84, ++ 0xe0159: 84, ++ 0xe015a: 84, ++ 0xe015b: 84, ++ 0xe015c: 84, ++ 0xe015d: 84, ++ 0xe015e: 84, ++ 0xe015f: 84, ++ 0xe0160: 84, ++ 0xe0161: 84, ++ 0xe0162: 84, ++ 0xe0163: 84, ++ 0xe0164: 84, ++ 0xe0165: 84, ++ 0xe0166: 84, ++ 0xe0167: 84, ++ 0xe0168: 84, ++ 0xe0169: 84, ++ 0xe016a: 84, ++ 0xe016b: 84, ++ 0xe016c: 84, ++ 0xe016d: 84, ++ 0xe016e: 84, ++ 0xe016f: 84, ++ 0xe0170: 84, ++ 0xe0171: 84, ++ 0xe0172: 84, ++ 0xe0173: 84, ++ 0xe0174: 84, ++ 0xe0175: 84, ++ 0xe0176: 84, ++ 0xe0177: 84, ++ 0xe0178: 84, ++ 0xe0179: 84, ++ 0xe017a: 84, ++ 0xe017b: 84, ++ 0xe017c: 84, ++ 0xe017d: 84, ++ 0xe017e: 84, ++ 0xe017f: 84, ++ 0xe0180: 84, ++ 0xe0181: 84, ++ 0xe0182: 84, ++ 0xe0183: 84, ++ 0xe0184: 84, ++ 0xe0185: 84, ++ 0xe0186: 84, ++ 0xe0187: 84, ++ 0xe0188: 84, ++ 0xe0189: 84, ++ 0xe018a: 84, ++ 0xe018b: 84, ++ 0xe018c: 84, ++ 0xe018d: 84, ++ 0xe018e: 84, ++ 0xe018f: 84, ++ 0xe0190: 84, ++ 0xe0191: 84, ++ 0xe0192: 84, ++ 0xe0193: 84, ++ 0xe0194: 84, ++ 0xe0195: 84, ++ 0xe0196: 84, ++ 0xe0197: 84, ++ 0xe0198: 84, ++ 0xe0199: 84, ++ 0xe019a: 84, ++ 0xe019b: 84, ++ 0xe019c: 84, ++ 0xe019d: 84, ++ 0xe019e: 84, ++ 0xe019f: 84, ++ 0xe01a0: 84, ++ 0xe01a1: 84, ++ 0xe01a2: 84, ++ 0xe01a3: 84, ++ 0xe01a4: 84, ++ 0xe01a5: 84, ++ 0xe01a6: 84, ++ 0xe01a7: 84, ++ 0xe01a8: 84, ++ 0xe01a9: 84, ++ 0xe01aa: 84, ++ 0xe01ab: 84, ++ 0xe01ac: 84, ++ 0xe01ad: 84, ++ 0xe01ae: 84, ++ 0xe01af: 84, ++ 0xe01b0: 84, ++ 0xe01b1: 84, ++ 0xe01b2: 84, ++ 0xe01b3: 84, ++ 0xe01b4: 84, ++ 0xe01b5: 84, ++ 0xe01b6: 84, ++ 0xe01b7: 84, ++ 0xe01b8: 84, ++ 0xe01b9: 84, ++ 0xe01ba: 84, ++ 0xe01bb: 84, ++ 0xe01bc: 84, ++ 0xe01bd: 84, ++ 0xe01be: 84, ++ 0xe01bf: 84, ++ 0xe01c0: 84, ++ 0xe01c1: 84, ++ 0xe01c2: 84, ++ 0xe01c3: 84, ++ 0xe01c4: 84, ++ 0xe01c5: 84, ++ 0xe01c6: 84, ++ 0xe01c7: 84, ++ 0xe01c8: 84, ++ 0xe01c9: 84, ++ 0xe01ca: 84, ++ 0xe01cb: 84, ++ 0xe01cc: 84, ++ 0xe01cd: 84, ++ 0xe01ce: 84, ++ 0xe01cf: 84, ++ 0xe01d0: 84, ++ 0xe01d1: 84, ++ 0xe01d2: 84, ++ 0xe01d3: 84, ++ 0xe01d4: 84, ++ 0xe01d5: 84, ++ 0xe01d6: 84, ++ 0xe01d7: 84, ++ 0xe01d8: 84, ++ 0xe01d9: 84, ++ 0xe01da: 84, ++ 0xe01db: 84, ++ 0xe01dc: 84, ++ 0xe01dd: 84, ++ 0xe01de: 84, ++ 0xe01df: 84, ++ 0xe01e0: 84, ++ 0xe01e1: 84, ++ 0xe01e2: 84, ++ 0xe01e3: 84, ++ 0xe01e4: 84, ++ 0xe01e5: 84, ++ 0xe01e6: 84, ++ 0xe01e7: 84, ++ 0xe01e8: 84, ++ 0xe01e9: 84, ++ 0xe01ea: 84, ++ 0xe01eb: 84, ++ 0xe01ec: 84, ++ 0xe01ed: 84, ++ 0xe01ee: 84, ++ 0xe01ef: 84, + } + codepoint_classes = { + 'PVALID': ( +@@ -1168,9 +3326,9 @@ codepoint_classes = { + 0x8000000082e, + 0x8400000085c, + 0x8600000086b, +- 0x8a0000008b5, +- 0x8b6000008c8, +- 0x8d3000008e2, ++ 0x87000000888, ++ 0x8890000088f, ++ 0x898000008e2, + 0x8e300000958, + 0x96000000964, + 0x96600000970, +@@ -1252,11 +3410,12 @@ codepoint_classes = { + 0xc0e00000c11, + 0xc1200000c29, + 0xc2a00000c3a, +- 0xc3d00000c45, ++ 0xc3c00000c45, + 0xc4600000c49, + 0xc4a00000c4e, + 0xc5500000c57, + 0xc5800000c5b, ++ 0xc5d00000c5e, + 0xc6000000c64, + 0xc6600000c70, + 0xc8000000c84, +@@ -1269,10 +3428,10 @@ codepoint_classes = { + 0xcc600000cc9, + 0xcca00000cce, + 0xcd500000cd7, +- 0xcde00000cdf, ++ 0xcdd00000cdf, + 0xce000000ce4, + 0xce600000cf0, +- 0xcf100000cf3, ++ 0xcf100000cf4, + 0xd0000000d0d, + 0xd0e00000d11, + 0xd1200000d45, +@@ -1307,7 +3466,7 @@ codepoint_classes = { + 0xeb400000ebe, + 0xec000000ec5, + 0xec600000ec7, +- 0xec800000ece, ++ 0xec800000ecf, + 0xed000000eda, + 0xede00000ee0, + 0xf0000000f01, +@@ -1366,9 +3525,8 @@ codepoint_classes = { + 0x16810000169b, + 0x16a0000016eb, + 0x16f1000016f9, +- 0x17000000170d, +- 0x170e00001715, +- 0x172000001735, ++ 0x170000001716, ++ 0x171f00001735, + 0x174000001754, + 0x17600000176d, + 0x176e00001771, +@@ -1397,8 +3555,8 @@ codepoint_classes = { + 0x1a9000001a9a, + 0x1aa700001aa8, + 0x1ab000001abe, +- 0x1abf00001ac1, +- 0x1b0000001b4c, ++ 0x1abf00001acf, ++ 0x1b0000001b4d, + 0x1b5000001b5a, + 0x1b6b00001b74, + 0x1b8000001bf4, +@@ -1413,8 +3571,7 @@ codepoint_classes = { + 0x1d4e00001d4f, + 0x1d6b00001d78, + 0x1d7900001d9b, +- 0x1dc000001dfa, +- 0x1dfb00001e00, ++ 0x1dc000001e00, + 0x1e0100001e02, + 0x1e0300001e04, + 0x1e0500001e06, +@@ -1563,7 +3720,7 @@ codepoint_classes = { + 0x1ff600001ff7, + 0x214e0000214f, + 0x218400002185, +- 0x2c3000002c5f, ++ 0x2c3000002c60, + 0x2c6100002c62, + 0x2c6500002c67, + 0x2c6800002c69, +@@ -1652,8 +3809,7 @@ codepoint_classes = { + 0x31a0000031c0, + 0x31f000003200, + 0x340000004dc0, +- 0x4e0000009ffd, +- 0xa0000000a48d, ++ 0x4e000000a48d, + 0xa4d00000a4fe, + 0xa5000000a60d, + 0xa6100000a62c, +@@ -1766,9 +3922,15 @@ codepoint_classes = { + 0xa7bb0000a7bc, + 0xa7bd0000a7be, + 0xa7bf0000a7c0, ++ 0xa7c10000a7c2, + 0xa7c30000a7c4, + 0xa7c80000a7c9, + 0xa7ca0000a7cb, ++ 0xa7d10000a7d2, ++ 0xa7d30000a7d4, ++ 0xa7d50000a7d6, ++ 0xa7d70000a7d8, ++ 0xa7d90000a7da, + 0xa7f60000a7f8, + 0xa7fa0000a828, + 0xa82c0000a82d, +@@ -1796,7 +3958,7 @@ codepoint_classes = { + 0xab200000ab27, + 0xab280000ab2f, + 0xab300000ab5b, +- 0xab600000ab6a, ++ 0xab600000ab69, + 0xabc00000abeb, + 0xabec0000abee, + 0xabf00000abfa, +@@ -1834,9 +3996,14 @@ codepoint_classes = { + 0x104d8000104fc, + 0x1050000010528, + 0x1053000010564, ++ 0x10597000105a2, ++ 0x105a3000105b2, ++ 0x105b3000105ba, ++ 0x105bb000105bd, + 0x1060000010737, + 0x1074000010756, + 0x1076000010768, ++ 0x1078000010781, + 0x1080000010806, + 0x1080800010809, + 0x1080a00010836, +@@ -1873,14 +4040,16 @@ codepoint_classes = { + 0x10e8000010eaa, + 0x10eab00010ead, + 0x10eb000010eb2, +- 0x10f0000010f1d, ++ 0x10efd00010f1d, + 0x10f2700010f28, + 0x10f3000010f51, ++ 0x10f7000010f86, + 0x10fb000010fc5, + 0x10fe000010ff7, + 0x1100000011047, +- 0x1106600011070, ++ 0x1106600011076, + 0x1107f000110bb, ++ 0x110c2000110c3, + 0x110d0000110e9, + 0x110f0000110fa, + 0x1110000011135, +@@ -1894,7 +4063,7 @@ codepoint_classes = { + 0x111dc000111dd, + 0x1120000011212, + 0x1121300011238, +- 0x1123e0001123f, ++ 0x1123e00011242, + 0x1128000011287, + 0x1128800011289, + 0x1128a0001128e, +@@ -1934,6 +4103,7 @@ codepoint_classes = { + 0x117000001171b, + 0x1171d0001172c, + 0x117300001173a, ++ 0x1174000011747, + 0x118000001183b, + 0x118c0000118ea, + 0x118ff00011907, +@@ -1952,7 +4122,7 @@ codepoint_classes = { + 0x11a4700011a48, + 0x11a5000011a9a, + 0x11a9d00011a9e, +- 0x11ac000011af9, ++ 0x11ab000011af9, + 0x11c0000011c09, + 0x11c0a00011c37, + 0x11c3800011c41, +@@ -1974,14 +4144,22 @@ codepoint_classes = { + 0x11d9300011d99, + 0x11da000011daa, + 0x11ee000011ef7, ++ 0x11f0000011f11, ++ 0x11f1200011f3b, ++ 0x11f3e00011f43, ++ 0x11f5000011f5a, + 0x11fb000011fb1, + 0x120000001239a, + 0x1248000012544, +- 0x130000001342f, ++ 0x12f9000012ff1, ++ 0x1300000013430, ++ 0x1344000013456, + 0x1440000014647, + 0x1680000016a39, + 0x16a4000016a5f, + 0x16a6000016a6a, ++ 0x16a7000016abf, ++ 0x16ac000016aca, + 0x16ad000016aee, + 0x16af000016af5, + 0x16b0000016b37, +@@ -1999,8 +4177,13 @@ codepoint_classes = { + 0x17000000187f8, + 0x1880000018cd6, + 0x18d0000018d09, +- 0x1b0000001b11f, ++ 0x1aff00001aff4, ++ 0x1aff50001affc, ++ 0x1affd0001afff, ++ 0x1b0000001b123, ++ 0x1b1320001b133, + 0x1b1500001b153, ++ 0x1b1550001b156, + 0x1b1640001b168, + 0x1b1700001b2fc, + 0x1bc000001bc6b, +@@ -2008,33 +4191,45 @@ codepoint_classes = { + 0x1bc800001bc89, + 0x1bc900001bc9a, + 0x1bc9d0001bc9f, ++ 0x1cf000001cf2e, ++ 0x1cf300001cf47, + 0x1da000001da37, + 0x1da3b0001da6d, + 0x1da750001da76, + 0x1da840001da85, + 0x1da9b0001daa0, + 0x1daa10001dab0, ++ 0x1df000001df1f, ++ 0x1df250001df2b, + 0x1e0000001e007, + 0x1e0080001e019, + 0x1e01b0001e022, + 0x1e0230001e025, + 0x1e0260001e02b, ++ 0x1e08f0001e090, + 0x1e1000001e12d, + 0x1e1300001e13e, + 0x1e1400001e14a, + 0x1e14e0001e14f, ++ 0x1e2900001e2af, + 0x1e2c00001e2fa, ++ 0x1e4d00001e4fa, ++ 0x1e7e00001e7e7, ++ 0x1e7e80001e7ec, ++ 0x1e7ed0001e7ef, ++ 0x1e7f00001e7ff, + 0x1e8000001e8c5, + 0x1e8d00001e8d7, + 0x1e9220001e94c, + 0x1e9500001e95a, +- 0x1fbf00001fbfa, +- 0x200000002a6de, +- 0x2a7000002b735, ++ 0x200000002a6e0, ++ 0x2a7000002b73a, + 0x2b7400002b81e, + 0x2b8200002cea2, + 0x2ceb00002ebe1, ++ 0x2ebf00002ee5e, + 0x300000003134b, ++ 0x31350000323b0, + ), + 'CONTEXTJ': ( + 0x200c0000200e, +diff --git a/tools/idna-data b/tools/idna-data +index 8f1695b..5bb8dc7 100755 +--- a/tools/idna-data ++++ b/tools/idna-data +@@ -238,11 +238,18 @@ class UnicodeData(object): + def _load_arabicshaping(self): + + self.ucd_as = {} +- f_as = self._ucdfile('ArabicShaping.txt') ++ f_as = self._ucdfile('extracted/DerivedJoiningType.txt') + for line in f_as.splitlines(): +- result = re.match('^(?P[0-9A-F]{4,6})\s*;\s*.*?\s*;\s*(?P\S+)\s*;', line) ++ result = re.match( ++ r'^(?P[0-9A-F]{4,6})(|\.\.(?P[0-9A-F]{4,6}))\s*;\s*(?P\S+)\s*(|\#.*)$', ++ line) + if result: +- self.ucd_as[int(result.group('cp'), 16)] = result.group('jt') ++ if result.group('end'): ++ for i in hexrange(result.group('start'), result.group('end')): ++ self.ucd_as[i] = result.group('jt') ++ else: ++ i = hexvalue(result.group('start')) ++ self.ucd_as[i] = result.group('jt') + + def _load_scripts(self): + +-- +2.44.0 + diff --git a/SPECS/python-idna.spec b/SPECS/python-idna.spec index 77daed8..c100d89 100644 --- a/SPECS/python-idna.spec +++ b/SPECS/python-idna.spec @@ -2,12 +2,18 @@ Name: python-%{srcname} Version: 2.10 -Release: 3%{?dist} +Release: 4%{?dist} Summary: Internationalized Domain Names in Applications (IDNA) License: BSD and Python and Unicode URL: https://github.com/kjd/idna Source0: https://pypi.io/packages/source/i/%{srcname}/%{srcname}-%{version}.tar.gz + +# Security fix for CVE-2024-3651 +# Upstream: https://github.com/kjd/idna/commit/5beb28b9dd77912c0dd656d8b0fdba3eb80222e7 +# Tracking bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2274779 +Patch: CVE-2024-3651.patch + BuildArch: noarch # Exclude i686 arch. Due to a modularity issue it's being added to the # x86_64 compose of CRB, but we don't want to ship it at all. @@ -65,6 +71,10 @@ rm -rf %{srcname}.egg-info %changelog +* Thu May 09 2024 Charalampos Stratakis - 2.10-4 +- Security fix for CVE-2024-3651 +Resolves: RHEL-32705 + * Wed Jan 13 2021 Tomas Orsava - 2.10-3 - Convert from Fedora to the python39 module in RHEL8 - Resolves: rhbz#1877430