From ee1ac8f16d0b881336e886b54566851c78b070cc Mon Sep 17 00:00:00 2001
From: Michael Paquier <michael@paquier.xyz>
Date: Fri, 3 Mar 2017 14:40:23 +0900
Subject: [PATCH 10/10] Consider characters excluded from composition in
 conversion tables

Noted by Kyotaro Horiguchi.
---
 src/common/utf_norm_generate.pl     | 111 ++++++++++++++++++++++++
 src/include/common/utf_norm_table.h | 164 +-----------------------------------
 2 files changed, 113 insertions(+), 162 deletions(-)

diff --git a/src/common/utf_norm_generate.pl b/src/common/utf_norm_generate.pl
index 73c7925572..e03316e074 100644
--- a/src/common/utf_norm_generate.pl
+++ b/src/common/utf_norm_generate.pl
@@ -43,6 +43,93 @@ my $input_file = $ARGV[0];
 my $output_file = $ARGV[1];
 my $output_base = basename($output_file);
 
+# Script-specific and post composition that need to be excluded from the tables
+# generated per http://www.unicode.org/reports/tr15/.
+my @no_recomp_codes = (
+	'0958',  # DEVANAGARI LETTER QA
+	'0959',  # DEVANAGARI LETTER KHHA
+	'095A',  # DEVANAGARI LETTER GHHA
+	'095B',  # DEVANAGARI LETTER ZA
+	'095C',  # DEVANAGARI LETTER DDDHA
+	'095D',  # DEVANAGARI LETTER RHA
+	'095E',  # DEVANAGARI LETTER FA
+	'095F',  # DEVANAGARI LETTER YYA
+	'09DC',  # BENGALI LETTER RRA
+	'09DD',  # BENGALI LETTER RHA
+	'09DF',  # BENGALI LETTER YYA
+	'0A33',  # GURMUKHI LETTER LLA
+	'0A36',  # GURMUKHI LETTER SHA
+	'0A59',  # GURMUKHI LETTER KHHA
+	'0A5A',  # GURMUKHI LETTER GHHA
+	'0A5B',  # GURMUKHI LETTER ZA
+	'0A5E',  # GURMUKHI LETTER FA
+	'0B5C',  # ORIYA LETTER RRA
+	'0B5D',  # ORIYA LETTER RHA
+	'0F43',  # TIBETAN LETTER GHA
+	'0F4D',  # TIBETAN LETTER DDHA
+	'0F52',  # TIBETAN LETTER DHA
+	'0F57',  # TIBETAN LETTER BHA
+	'0F5C',  # TIBETAN LETTER DZHA
+	'0F69',  # TIBETAN LETTER KSSA
+	'0F76',  # TIBETAN VOWEL SIGN VOCALIC R
+	'0F78',  # TIBETAN VOWEL SIGN VOCALIC L
+	'0F93',  # TIBETAN SUBJOINED LETTER GHA
+	'0F9D',  # TIBETAN SUBJOINED LETTER DDHA
+	'0FA2',  # TIBETAN SUBJOINED LETTER DHA
+	'0FA7',  # TIBETAN SUBJOINED LETTER BHA
+	'0FAC',  # TIBETAN SUBJOINED LETTER DZHA
+	'0FB9',  # TIBETAN SUBJOINED LETTER KSSA
+	# 'FB1D' # HEBREW LETTER YOD WITH HIRIQ:  see below for $OPTYWH
+	'FB1F',  # HEBREW LIGATURE YIDDISH YOD YOD PATAH
+	'FB2A',  # HEBREW LETTER SHIN WITH SHIN DOT
+	'FB2B',  # HEBREW LETTER SHIN WITH SIN DOT
+	'FB2C',  # HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT
+	'FB2D',  # HEBREW LETTER SHIN WITH DAGESH AND SIN DOT
+	'FB2E',  # HEBREW LETTER ALEF WITH PATAH
+	'FB2F',  # HEBREW LETTER ALEF WITH QAMATS
+	'FB30',  # HEBREW LETTER ALEF WITH MAPIQ
+	'FB31',  # HEBREW LETTER BET WITH DAGESH
+	'FB32',  # HEBREW LETTER GIMEL WITH DAGESH
+	'FB33',  # HEBREW LETTER DALET WITH DAGESH
+	'FB34',  # HEBREW LETTER HE WITH MAPIQ
+	'FB35',  # HEBREW LETTER VAV WITH DAGESH
+	'FB36',  # HEBREW LETTER ZAYIN WITH DAGESH
+	'FB38',  # HEBREW LETTER TET WITH DAGESH
+	'FB39',  # HEBREW LETTER YOD WITH DAGESH
+	'FB3A',  # HEBREW LETTER FINAL KAF WITH DAGESH
+	'FB3B',  # HEBREW LETTER KAF WITH DAGESH
+	'FB3C',  # HEBREW LETTER LAMED WITH DAGESH
+	'FB3E',  # HEBREW LETTER MEM WITH DAGESH
+	'FB40',  # HEBREW LETTER NUN WITH DAGESH
+	'FB41',  # HEBREW LETTER SAMEKH WITH DAGESH
+	'FB43',  # HEBREW LETTER FINAL PE WITH DAGESH
+	'FB44',  # HEBREW LETTER PE WITH DAGESH
+	'FB46',  # HEBREW LETTER TSADI WITH DAGESH
+	'FB47',  # HEBREW LETTER QOF WITH DAGESH
+	'FB48',  # HEBREW LETTER RESH WITH DAGESH
+	'FB49',  # HEBREW LETTER SHIN WITH DAGESH
+	'FB4A',  # HEBREW LETTER TAV WITH DAGESH
+	'FB4B',  # HEBREW LETTER VAV WITH HOLAM
+	'FB4C',  # HEBREW LETTER BET WITH RAFE
+	'FB4D',  # HEBREW LETTER KAF WITH RAFE
+	'FB4E',  # HEBREW LETTER PE WITH RAFE
+	## post composition exclusion
+	'2ADC',  #  FORKING
+	'1D15E', # MUSICAL SYMBOL HALF NOTE
+	'1D15F', # MUSICAL SYMBOL QUARTER NOTE
+	'1D160', # MUSICAL SYMBOL EIGHTH NOTE
+	'1D161', # MUSICAL SYMBOL SIXTEENTH NOTE
+	'1D162', # MUSICAL SYMBOL THIRTY-SECOND NOTE
+	'1D163', # MUSICAL SYMBOL SIXTY-FOURTH NOTE
+	'1D164', # MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
+	'1D1BB', # MUSICAL SYMBOL MINIMA
+	'1D1BC', # MUSICAL SYMBOL MINIMA BLACK
+	'1D1BD', # MUSICAL SYMBOL SEMIMINIMA WHITE
+	'1D1BE', # MUSICAL SYMBOL SEMIMINIMA BLACK
+	'1D1BF', # MUSICAL SYMBOL FUSA WHITE
+	'1D1C0'  # MUSICAL SYMBOL FUSA BLACK
+    );
+
 # Count number of lines in input file to get size of table.
 my $input_lines = 0;
 open(my $FH, $input_file) or die "Could not open input file $input_file: $!.";
@@ -54,6 +141,18 @@ while (my $line = <$FH>)
 	# Skip codes longer than 4 bytes, or 8 characters.
 	next if length($code) > 8;
 
+    # Skip codes that cannot be composed
+	my $found_no_recomp = 0;
+	foreach my $lcode  (@no_recomp_codes)
+	{
+		if ($lcode eq $elts[0])
+		{
+			$found_no_recomp = 1;
+			last;
+		}
+	}
+	next if $found_no_recomp;
+
 	# Skip characters with no decompositions and a class of 0.
 	next if $elts[3] eq '0' && $elts[5] eq '';
 
@@ -116,6 +215,18 @@ while ( my $line = <$INPUT> )
 	# Skip codes longer than 4 bytes, or 8 characters.
 	next if length($code) > 8;
 
+    # Skip codes that cannot be composed
+	my $found_no_recomp = 0;
+	foreach my $lcode (@no_recomp_codes)
+	{
+		if ($lcode eq $elts[0])
+		{
+			$found_no_recomp = 1;
+			last;
+		}
+	}
+	next if $found_no_recomp;
+
 	# Skip characters with no decompositions and a class of 0.
 	# to reduce the table size.
 	next if $elts[3] eq '0' && $elts[5] eq '';
diff --git a/src/include/common/utf_norm_table.h b/src/include/common/utf_norm_table.h
index e84f9fd693..9fa3b7ca99 100644
--- a/src/include/common/utf_norm_table.h
+++ b/src/include/common/utf_norm_table.h
@@ -24,7 +24,7 @@ typedef struct
 } pg_utf_decomposition;
 
 /* conversion table */
-static const pg_utf_decomposition UtfDecompMain[ 6532 ] =
+static const pg_utf_decomposition UtfDecompMain[ 6452 ] =
 {
 	{0xc2a0, 0x00, 1},
 	{0xc2a8, 0x00, 2},
@@ -766,29 +766,12 @@ static const pg_utf_decomposition UtfDecompMain[ 6532 ] =
 	{0xe0a592, 0xdc, 0},
 	{0xe0a593, 0xe6, 0},
 	{0xe0a594, 0xe6, 0},
-	{0xe0a598, 0x00, 2},
-	{0xe0a599, 0x00, 2},
-	{0xe0a59a, 0x00, 2},
-	{0xe0a59b, 0x00, 2},
-	{0xe0a59c, 0x00, 2},
-	{0xe0a59d, 0x00, 2},
-	{0xe0a59e, 0x00, 2},
-	{0xe0a59f, 0x00, 2},
 	{0xe0a6bc, 0x07, 0},
 	{0xe0a78b, 0x00, 2},
 	{0xe0a78c, 0x00, 2},
 	{0xe0a78d, 0x09, 0},
-	{0xe0a79c, 0x00, 2},
-	{0xe0a79d, 0x00, 2},
-	{0xe0a79f, 0x00, 2},
-	{0xe0a8b3, 0x00, 2},
-	{0xe0a8b6, 0x00, 2},
 	{0xe0a8bc, 0x07, 0},
 	{0xe0a98d, 0x09, 0},
-	{0xe0a999, 0x00, 2},
-	{0xe0a99a, 0x00, 2},
-	{0xe0a99b, 0x00, 2},
-	{0xe0a99e, 0x00, 2},
 	{0xe0aabc, 0x07, 0},
 	{0xe0ab8d, 0x09, 0},
 	{0xe0acbc, 0x07, 0},
@@ -796,8 +779,6 @@ static const pg_utf_decomposition UtfDecompMain[ 6532 ] =
 	{0xe0ad8b, 0x00, 2},
 	{0xe0ad8c, 0x00, 2},
 	{0xe0ad8d, 0x09, 0},
-	{0xe0ad9c, 0x00, 2},
-	{0xe0ad9d, 0x00, 2},
 	{0xe0ae94, 0x00, 2},
 	{0xe0af8a, 0x00, 2},
 	{0xe0af8b, 0x00, 2},
@@ -846,20 +827,12 @@ static const pg_utf_decomposition UtfDecompMain[ 6532 ] =
 	{0xe0bcb5, 0xdc, 0},
 	{0xe0bcb7, 0xdc, 0},
 	{0xe0bcb9, 0xd8, 0},
-	{0xe0bd83, 0x00, 2},
-	{0xe0bd8d, 0x00, 2},
-	{0xe0bd92, 0x00, 2},
-	{0xe0bd97, 0x00, 2},
-	{0xe0bd9c, 0x00, 2},
-	{0xe0bda9, 0x00, 2},
 	{0xe0bdb1, 0x81, 0},
 	{0xe0bdb2, 0x82, 0},
 	{0xe0bdb3, 0x00, 2},
 	{0xe0bdb4, 0x84, 0},
 	{0xe0bdb5, 0x00, 2},
-	{0xe0bdb6, 0x00, 2},
 	{0xe0bdb7, 0x00, 2},
-	{0xe0bdb8, 0x00, 2},
 	{0xe0bdb9, 0x00, 2},
 	{0xe0bdba, 0x82, 0},
 	{0xe0bdbb, 0x82, 0},
@@ -872,12 +845,6 @@ static const pg_utf_decomposition UtfDecompMain[ 6532 ] =
 	{0xe0be84, 0x09, 0},
 	{0xe0be86, 0xe6, 0},
 	{0xe0be87, 0xe6, 0},
-	{0xe0be93, 0x00, 2},
-	{0xe0be9d, 0x00, 2},
-	{0xe0bea2, 0x00, 2},
-	{0xe0bea7, 0x00, 2},
-	{0xe0beac, 0x00, 2},
-	{0xe0beb9, 0x00, 2},
 	{0xe0bf86, 0xdc, 0},
 	{0xe180a6, 0x00, 2},
 	{0xe180b7, 0x07, 0},
@@ -2008,7 +1975,6 @@ static const pg_utf_decomposition UtfDecompMain[ 6532 ] =
 	{0xe2a9b4, 0x00, 3},
 	{0xe2a9b5, 0x00, 2},
 	{0xe2a9b6, 0x00, 3},
-	{0xe2ab9c, 0x00, 2},
 	{0xe2b1bc, 0x00, 1},
 	{0xe2b1bd, 0x00, 1},
 	{0xe2b3af, 0xe6, 0},
@@ -3483,7 +3449,6 @@ static const pg_utf_decomposition UtfDecompMain[ 6532 ] =
 	{0xefac97, 0x00, 2},
 	{0xefac9d, 0x00, 2},
 	{0xefac9e, 0x1a, 0},
-	{0xefac9f, 0x00, 2},
 	{0xefaca0, 0x00, 1},
 	{0xefaca1, 0x00, 1},
 	{0xefaca2, 0x00, 1},
@@ -3494,38 +3459,6 @@ static const pg_utf_decomposition UtfDecompMain[ 6532 ] =
 	{0xefaca7, 0x00, 1},
 	{0xefaca8, 0x00, 1},
 	{0xefaca9, 0x00, 1},
-	{0xefacaa, 0x00, 2},
-	{0xefacab, 0x00, 2},
-	{0xefacac, 0x00, 2},
-	{0xefacad, 0x00, 2},
-	{0xefacae, 0x00, 2},
-	{0xefacaf, 0x00, 2},
-	{0xefacb0, 0x00, 2},
-	{0xefacb1, 0x00, 2},
-	{0xefacb2, 0x00, 2},
-	{0xefacb3, 0x00, 2},
-	{0xefacb4, 0x00, 2},
-	{0xefacb5, 0x00, 2},
-	{0xefacb6, 0x00, 2},
-	{0xefacb8, 0x00, 2},
-	{0xefacb9, 0x00, 2},
-	{0xefacba, 0x00, 2},
-	{0xefacbb, 0x00, 2},
-	{0xefacbc, 0x00, 2},
-	{0xefacbe, 0x00, 2},
-	{0xefad80, 0x00, 2},
-	{0xefad81, 0x00, 2},
-	{0xefad83, 0x00, 2},
-	{0xefad84, 0x00, 2},
-	{0xefad86, 0x00, 2},
-	{0xefad87, 0x00, 2},
-	{0xefad88, 0x00, 2},
-	{0xefad89, 0x00, 2},
-	{0xefad8a, 0x00, 2},
-	{0xefad8b, 0x00, 2},
-	{0xefad8c, 0x00, 2},
-	{0xefad8d, 0x00, 2},
-	{0xefad8e, 0x00, 2},
 	{0xefad8f, 0x00, 2},
 	{0xefad90, 0x00, 1},
 	{0xefad91, 0x00, 1},
@@ -4646,13 +4579,6 @@ static const pg_utf_decomposition UtfDecompMain[ 6532 ] =
 	{0xe19ab335, 0xe6, 0},
 	{0xe19ab336, 0xe6, 0},
 	{0xe1af8945, 0x01, 0},
-	{0xe1b49545, 0x00, 2},
-	{0xe1b49546, 0x00, 2},
-	{0xe1b49630, 0x00, 2},
-	{0xe1b49631, 0x00, 2},
-	{0xe1b49632, 0x00, 2},
-	{0xe1b49633, 0x00, 2},
-	{0xe1b49634, 0x00, 2},
 	{0xe1b49635, 0xd8, 0},
 	{0xe1b49636, 0xd8, 0},
 	{0xe1b49637, 0x01, 0},
@@ -4683,12 +4609,6 @@ static const pg_utf_decomposition UtfDecompMain[ 6532 ] =
 	{0xe1b49a42, 0xe6, 0},
 	{0xe1b49a43, 0xe6, 0},
 	{0xe1b49a44, 0xe6, 0},
-	{0xe1b49b42, 0x00, 2},
-	{0xe1b49b43, 0x00, 2},
-	{0xe1b49b44, 0x00, 2},
-	{0xe1b49b45, 0x00, 2},
-	{0xe1b49b46, 0x00, 2},
-	{0xe1b49c30, 0x00, 2},
 	{0xe1b4a432, 0xe6, 0},
 	{0xe1b4a433, 0xe6, 0},
 	{0xe1b4a434, 0xe6, 0},
@@ -10146,7 +10066,7 @@ typedef struct
 	uint32	decomp[2];	/* size of decomposition code list */
 } pg_utf_decomposition_size_2;
 
-static const pg_utf_decomposition_size_2 UtfDecomp_2 [ 1671 ] =
+static const pg_utf_decomposition_size_2 UtfDecomp_2 [ 1591 ] =
 {
 	{0xc2a8, {0x20, 0xcc88}},
 	{0xc2af, {0x20, 0xcc84}},
@@ -10521,30 +10441,11 @@ static const pg_utf_decomposition_size_2 UtfDecomp_2 [ 1671 ] =
 	{0xe0a4a9, {0xe0a4a8, 0xe0a4bc}},
 	{0xe0a4b1, {0xe0a4b0, 0xe0a4bc}},
 	{0xe0a4b4, {0xe0a4b3, 0xe0a4bc}},
-	{0xe0a598, {0xe0a495, 0xe0a4bc}},
-	{0xe0a599, {0xe0a496, 0xe0a4bc}},
-	{0xe0a59a, {0xe0a497, 0xe0a4bc}},
-	{0xe0a59b, {0xe0a49c, 0xe0a4bc}},
-	{0xe0a59c, {0xe0a4a1, 0xe0a4bc}},
-	{0xe0a59d, {0xe0a4a2, 0xe0a4bc}},
-	{0xe0a59e, {0xe0a4ab, 0xe0a4bc}},
-	{0xe0a59f, {0xe0a4af, 0xe0a4bc}},
 	{0xe0a78b, {0xe0a787, 0xe0a6be}},
 	{0xe0a78c, {0xe0a787, 0xe0a797}},
-	{0xe0a79c, {0xe0a6a1, 0xe0a6bc}},
-	{0xe0a79d, {0xe0a6a2, 0xe0a6bc}},
-	{0xe0a79f, {0xe0a6af, 0xe0a6bc}},
-	{0xe0a8b3, {0xe0a8b2, 0xe0a8bc}},
-	{0xe0a8b6, {0xe0a8b8, 0xe0a8bc}},
-	{0xe0a999, {0xe0a896, 0xe0a8bc}},
-	{0xe0a99a, {0xe0a897, 0xe0a8bc}},
-	{0xe0a99b, {0xe0a89c, 0xe0a8bc}},
-	{0xe0a99e, {0xe0a8ab, 0xe0a8bc}},
 	{0xe0ad88, {0xe0ad87, 0xe0ad96}},
 	{0xe0ad8b, {0xe0ad87, 0xe0acbe}},
 	{0xe0ad8c, {0xe0ad87, 0xe0ad97}},
-	{0xe0ad9c, {0xe0aca1, 0xe0acbc}},
-	{0xe0ad9d, {0xe0aca2, 0xe0acbc}},
 	{0xe0ae94, {0xe0ae92, 0xe0af97}},
 	{0xe0af8a, {0xe0af86, 0xe0aebe}},
 	{0xe0af8b, {0xe0af87, 0xe0aebe}},
@@ -10566,25 +10467,11 @@ static const pg_utf_decomposition_size_2 UtfDecomp_2 [ 1671 ] =
 	{0xe0bab3, {0xe0bb8d, 0xe0bab2}},
 	{0xe0bb9c, {0xe0baab, 0xe0ba99}},
 	{0xe0bb9d, {0xe0baab, 0xe0baa1}},
-	{0xe0bd83, {0xe0bd82, 0xe0beb7}},
-	{0xe0bd8d, {0xe0bd8c, 0xe0beb7}},
-	{0xe0bd92, {0xe0bd91, 0xe0beb7}},
-	{0xe0bd97, {0xe0bd96, 0xe0beb7}},
-	{0xe0bd9c, {0xe0bd9b, 0xe0beb7}},
-	{0xe0bda9, {0xe0bd80, 0xe0beb5}},
 	{0xe0bdb3, {0xe0bdb1, 0xe0bdb2}},
 	{0xe0bdb5, {0xe0bdb1, 0xe0bdb4}},
-	{0xe0bdb6, {0xe0beb2, 0xe0be80}},
 	{0xe0bdb7, {0xe0beb2, 0xe0be81}},
-	{0xe0bdb8, {0xe0beb3, 0xe0be80}},
 	{0xe0bdb9, {0xe0beb3, 0xe0be81}},
 	{0xe0be81, {0xe0bdb1, 0xe0be80}},
-	{0xe0be93, {0xe0be92, 0xe0beb7}},
-	{0xe0be9d, {0xe0be9c, 0xe0beb7}},
-	{0xe0bea2, {0xe0bea1, 0xe0beb7}},
-	{0xe0bea7, {0xe0bea6, 0xe0beb7}},
-	{0xe0beac, {0xe0beab, 0xe0beb7}},
-	{0xe0beb9, {0xe0be90, 0xe0beb5}},
 	{0xe180a6, {0xe180a5, 0xe180ae}},
 	{0xe1ac86, {0xe1ac85, 0xe1acb5}},
 	{0xe1ac88, {0xe1ac87, 0xe1acb5}},
@@ -11149,7 +11036,6 @@ static const pg_utf_decomposition_size_2 UtfDecomp_2 [ 1671 ] =
 	{0xe2928f, {0x38, 0x2e}},
 	{0xe29290, {0x39, 0x2e}},
 	{0xe2a9b5, {0x3d, 0x3d}},
-	{0xe2ab9c, {0xe2ab9d, 0xccb8}},
 	{0xe3818c, {0xe3818b, 0xe38299}},
 	{0xe3818e, {0xe3818d, 0xe38299}},
 	{0xe38190, {0xe3818f, 0xe38299}},
@@ -11388,39 +11274,6 @@ static const pg_utf_decomposition_size_2 UtfDecomp_2 [ 1671 ] =
 	{0xefac96, {0xd5be, 0xd5b6}},
 	{0xefac97, {0xd5b4, 0xd5ad}},
 	{0xefac9d, {0xd799, 0xd6b4}},
-	{0xefac9f, {0xd7b2, 0xd6b7}},
-	{0xefacaa, {0xd7a9, 0xd781}},
-	{0xefacab, {0xd7a9, 0xd782}},
-	{0xefacac, {0xefad89, 0xd781}},
-	{0xefacad, {0xefad89, 0xd782}},
-	{0xefacae, {0xd790, 0xd6b7}},
-	{0xefacaf, {0xd790, 0xd6b8}},
-	{0xefacb0, {0xd790, 0xd6bc}},
-	{0xefacb1, {0xd791, 0xd6bc}},
-	{0xefacb2, {0xd792, 0xd6bc}},
-	{0xefacb3, {0xd793, 0xd6bc}},
-	{0xefacb4, {0xd794, 0xd6bc}},
-	{0xefacb5, {0xd795, 0xd6bc}},
-	{0xefacb6, {0xd796, 0xd6bc}},
-	{0xefacb8, {0xd798, 0xd6bc}},
-	{0xefacb9, {0xd799, 0xd6bc}},
-	{0xefacba, {0xd79a, 0xd6bc}},
-	{0xefacbb, {0xd79b, 0xd6bc}},
-	{0xefacbc, {0xd79c, 0xd6bc}},
-	{0xefacbe, {0xd79e, 0xd6bc}},
-	{0xefad80, {0xd7a0, 0xd6bc}},
-	{0xefad81, {0xd7a1, 0xd6bc}},
-	{0xefad83, {0xd7a3, 0xd6bc}},
-	{0xefad84, {0xd7a4, 0xd6bc}},
-	{0xefad86, {0xd7a6, 0xd6bc}},
-	{0xefad87, {0xd7a7, 0xd6bc}},
-	{0xefad88, {0xd7a8, 0xd6bc}},
-	{0xefad89, {0xd7a9, 0xd6bc}},
-	{0xefad8a, {0xd7aa, 0xd6bc}},
-	{0xefad8b, {0xd795, 0xd6b9}},
-	{0xefad8c, {0xd791, 0xd6bf}},
-	{0xefad8d, {0xd79b, 0xd6bf}},
-	{0xefad8e, {0xd7a4, 0xd6bf}},
 	{0xefad8f, {0xd790, 0xd79c}},
 	{0xefafaa, {0xd8a6, 0xd8a7}},
 	{0xefafab, {0xd8a6, 0xd8a7}},
@@ -11783,19 +11636,6 @@ static const pg_utf_decomposition_size_2 UtfDecomp_2 [ 1671 ] =
 	{0xe1858b45, {0xe1858b39, 0xe1858b44}},
 	{0xe1859b41, {0xe1859b38, 0xe1859a46}},
 	{0xe1859b42, {0xe1859b39, 0xe1859a46}},
-	{0xe1b49545, {0xe1b49537, 0xe1b49635}},
-	{0xe1b49546, {0xe1b49538, 0xe1b49635}},
-	{0xe1b49630, {0xe1b49546, 0xe1b49645}},
-	{0xe1b49631, {0xe1b49546, 0xe1b49646}},
-	{0xe1b49632, {0xe1b49546, 0xe1b49730}},
-	{0xe1b49633, {0xe1b49546, 0xe1b49731}},
-	{0xe1b49634, {0xe1b49546, 0xe1b49732}},
-	{0xe1b49b42, {0xe1b49b39, 0xe1b49635}},
-	{0xe1b49b43, {0xe1b49b41, 0xe1b49635}},
-	{0xe1b49b44, {0xe1b49b42, 0xe1b49645}},
-	{0xe1b49b45, {0xe1b49b43, 0xe1b49645}},
-	{0xe1b49b46, {0xe1b49b42, 0xe1b49646}},
-	{0xe1b49c30, {0xe1b49b43, 0xe1b49646}},
 	{0xe1bc9030, {0x30, 0x2e}},
 	{0xe1bc9031, {0x30, 0x2c}},
 	{0xe1bc9032, {0x31, 0x2c}},
-- 
2.12.0

