Commit 365a9805a5 for perl
commit 365a9805a5df1e48950b0c8a5f311a585dcdc17a
Author: Karl Williamson <khw@cpan.org>
Date: Thu Sep 17 10:07:51 2026 -0600
Update break rules for Unicode 18.0
Unicode made minor changes in their rules for breaking lines, etc. This
updates to correspond
diff --git a/charclass_invlists.inc b/charclass_invlists.inc
index f6d30d7335..3bcc9b5b4b 100644
--- a/charclass_invlists.inc
+++ b/charclass_invlists.inc
@@ -502101,12 +502101,12 @@ UNI_wb_values
* the below table to denote the DFA to execute for the corresponding
* cell. '_v_' in the names shows where the candidate break position
* is. */
-#define GCB_NOBREAK 0
-#define GCB_BREAKABLE 1
-#define GCB_InCB_Consonant_then_InCB_Extend_or_InCB_Linker_v_InCB_Consonant 2
-#define GCB_EB_or_EBG_then_Extend_v_EM 3
-#define GCB_ExtPict_then_Extend_then_ZWJ_v_ExtPict 4
-#define GCB_various_then_RI_v_RI 5
+#define GCB_NOBREAK 0
+#define GCB_BREAKABLE 1
+#define GCB_InCB_Linker_then_InCB_Extend_v_InCB_Consonant 2
+#define GCB_EB_or_EBG_then_Extend_v_EM 3
+#define GCB_ExtPict_then_Extend_then_ZWJ_v_ExtPict 4
+#define GCB_various_then_RI_v_RI 5
static const U8 GCB_table[21][21] = {
@@ -502129,13 +502129,13 @@ static const U8 GCB_table[21][21] = {
// 5 5 9 9 9 5 9a 9 2
/* EX*/ { 1, 1, 1, 1, 0, 1, 0, 0, 1,1, 1, 1, 1, 1, 1, 0,1,1, 0,1,0 },
// 5 5 9 9 9 5 9a 9 2
-/*ICX*/ { 1, 1, 1, 1, 0, 5, 0, 0, 1,1, 1, 1, 1, 1, 1, 0,1,1, 0,1,0 },
-// 5 5 9 9c 9 9 5 9a 9 2
+/*ICX*/ { 1, 1, 1, 1, 0, 1, 0, 0, 1,1, 1, 1, 1, 1, 1, 0,1,1, 0,1,0 },
+// 5 5 9 9 9 5 9a 9 2
/*IEE*/ { 1, 1, 1, 1, 0, 5, 0, 0, 1,1, 1, 1, 1, 1, 1, 0,1,1, 0,1,0 },
// 5 5 9 9c 9 9 5 9a 9 2
-/*ILE*/ { 1, 1, 1, 1, 0, 5, 0, 0, 1,1, 1, 1, 1, 1, 1, 0,1,1, 0,1,0 },
+/*ILE*/ { 1, 1, 1, 1, 0, 0, 0, 0, 1,1, 1, 1, 1, 1, 1, 0,1,1, 0,1,0 },
// 5 5 9 9c 9 9 5 9a 9 2
-/*ILX*/ { 1, 1, 1, 1, 0, 5, 0, 0, 1,1, 1, 1, 1, 1, 1, 0,1,1, 0,1,0 },
+/*ILX*/ { 1, 1, 1, 1, 0, 0, 0, 0, 1,1, 1, 1, 1, 1, 1, 0,1,1, 0,1,0 },
// 5 5 9 9c 9 9 5 9a 9 2
/* L */ { 1, 1, 1, 1, 0, 1, 0, 0, 1,0, 1, 0, 0, 1, 1, 0,1,0, 0,1,0 },
// 5 5 9 9 9 6 5 6 6 9a 6 9 2
@@ -502170,7 +502170,7 @@ static const U8 GCB_dfa_table[] = {
4, /* [2] GCB_ExtPict_then_Extend_then_ZWJ_v_ExtPict (Rule GCB11) */
0, /* if matches, return 0 */
1, /* else return 1 (Rule GCB99) */
- 2, /* [5] GCB_InCB_Consonant_then_InCB_Extend_or_InCB_Linker_v_InCB_Consonant (Rule GCB9c) */
+ 2, /* [5] GCB_InCB_Linker_then_InCB_Extend_v_InCB_Consonant (Rule GCB9c) */
0, /* if matches, return 0 */
1, /* else return 1 (Rule GCB99) */
5, /* [8] GCB_various_then_RI_v_RI (Rules GCB12, GCB13) */
@@ -502366,8 +502366,8 @@ static const U8 LB_table[70][70] = {
// 28 28 21 6 20 13 9 13 6 28a 21 13 12a 9 22 21 13 13 21 13 12 21 21 22 15 6 6 21 19 19a 19 7 13 28 28 11 7 9 3
/* B2*/ { 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0,1,0 },
// 17 21 6 20 13 9 13 6 21 13 12a 9 22 21 13 13 21 13 12 21 21 22 15 6 6 21 19 19a 19 7 13 11 7 9 3
-/* BA*/ { 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0,1,0 },
-// 21 6 20 13 9 13 6 21 13 9 22 21 13 13 21 13 21 21 22 15 6 6 21 19 19a 19 7 13 11 7 9 3
+/* BA*/ { 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0,1,0 },
+// 21 6 20 13 9 13 6 21 13 12a 9 22 21 13 13 21 13 12 21 21 22 15 6 6 21 19 19a 19 7 13 11 7 9 3
/* BB*/ { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1,0 },
// 21 21 21 21 21 21 21 6 20 21 21 13 9 13 6 21 21 21 13 21 12a 21 9 21 21 21 21 21 13 21 21 21 21 21 13 21 21 13 12 21 21 21 21 21 21 21 15 21 21 21 6 6 21 21 21 19 19a 21 21 19 21 7 13 21 21 11 7 9 3
/* BK*/ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,1,0 },
@@ -502390,8 +502390,8 @@ static const U8 LB_table[70][70] = {
// 28 28 28 21 6 20 28 13 9 13 6 28 28 21 13 12a 9 22 24 24 21 13 28 28 13 21 13 12 21 28 21 22 15 6 6 21 23 30 19 19a 24 24 19 7 13 28 28 11 7 9 3
/*EAA*/ { 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0,1,0 },
// 28 21 6 20 28 13 9 13 6 28 28 21 13 12a 9 22 24 24 21 13 28 28 13 21 13 12 21 28 21 22 15 6 6 21 23 30 19 19a 24 24 19 7 13 11 7 9 3
-/*EAB*/ { 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 29, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0,1,0 },
-// 21 6 20 13 9 13 6 21 13 9 22 21 13 13 21 13 21 21 22 15 6 6 21 19 19a 19 7 13 11 7 9 3
+/*EAB*/ { 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 29, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0,1,0 },
+// 21 6 20 13 9 13 6 21 13 12a 9 22 21 13 13 21 13 12 21 21 22 15 6 6 21 19 19a 19 7 13 11 7 9 3
/*EAC*/ { 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 17, 17, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 29,17,17, 0, 1, 0, 0, 1, 1, 0, 0, 0,1,0 },
// 21 6 20 13 9 13 6 21 13 12a 9 22 25 25 16 13 13 16 13 12 21 21 22 15 6 6 16 19 19a 25 25 19 7 13 11 7 9 3
/*EAE*/ { 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 29, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0,1,0 },
@@ -502812,9 +502812,9 @@ static const U8 WB_dfa_table[] = {
* e015a6d4bde8dd0f8b72bf15ac9a4f588146ce6bc0bf8980e9dae8302cdbdc28 lib/unicore/extracted/DLineBreak.txt
* 3dade4d96bd00d71b10022bf70b370090f3ca947f977ad4dc2854e06c4d074f6 lib/unicore/extracted/DNumType.txt
* c84f084f83ec6852e1db6e7ef15f340a3af2df8cf0c386ac0d076c2cebd189e6 lib/unicore/extracted/DNumValues.txt
- * 6b9a50d93d42d337e8104c5ba5be7d61946b91d7e85182f084e0ff2df261401b lib/unicore/mktables
+ * 50f73270fdef0981edb4e24be003f71001cf76876591fc8703276d65ef488c9b lib/unicore/mktables
* a0079d7556b20c2de1fdc3d492797a91b8ec8a06006f94460006185cb6380962 lib/unicore/version
* 0a6b5ab33bb1026531f816efe81aea1a8ffcd34a27cbea37dd6a70a63d73c844 regen/charset_translations.pl
* 6bbb462516a4ea79e28d58cf387f0b4b63ba83c7d381cd61bdda0b188e148082 regen/mk_PL_charclass.pl
- * 96b3ff442d0c9122f1bce72b7bc46c2ead13c3028c250f65aca689cd5e142d58 regen/mk_invlists.pl
+ * e0db8fe02138f978cc88968bd89e4f8e5d9fffe540499ba788dead2a5ecf5e37 regen/mk_invlists.pl
* ex: set ro ft=c: */
diff --git a/lib/unicore/mktables b/lib/unicore/mktables
index 4d513d9da2..600c0c2955 100644
--- a/lib/unicore/mktables
+++ b/lib/unicore/mktables
@@ -50,7 +50,7 @@ sub NON_ASCII_PLATFORM { ord("A") != 65 }
# expected, a warning will be generated. If an older version is being
# compiled, any bounds tests that fail in the generated test file (-maketest
# option) will be marked as TODO.
-my $version_of_mk_invlist_bounds = v17.0.0;
+my $version_of_mk_invlist_bounds = v18.0.0;
##########################################################################
#
diff --git a/lib/unicore/uni_keywords.pl b/lib/unicore/uni_keywords.pl
index 9be352af24..d295b0a209 100644
--- a/lib/unicore/uni_keywords.pl
+++ b/lib/unicore/uni_keywords.pl
@@ -1451,9 +1451,9 @@
# e015a6d4bde8dd0f8b72bf15ac9a4f588146ce6bc0bf8980e9dae8302cdbdc28 lib/unicore/extracted/DLineBreak.txt
# 3dade4d96bd00d71b10022bf70b370090f3ca947f977ad4dc2854e06c4d074f6 lib/unicore/extracted/DNumType.txt
# c84f084f83ec6852e1db6e7ef15f340a3af2df8cf0c386ac0d076c2cebd189e6 lib/unicore/extracted/DNumValues.txt
-# 6b9a50d93d42d337e8104c5ba5be7d61946b91d7e85182f084e0ff2df261401b lib/unicore/mktables
+# 50f73270fdef0981edb4e24be003f71001cf76876591fc8703276d65ef488c9b lib/unicore/mktables
# a0079d7556b20c2de1fdc3d492797a91b8ec8a06006f94460006185cb6380962 lib/unicore/version
# 0a6b5ab33bb1026531f816efe81aea1a8ffcd34a27cbea37dd6a70a63d73c844 regen/charset_translations.pl
# 6bbb462516a4ea79e28d58cf387f0b4b63ba83c7d381cd61bdda0b188e148082 regen/mk_PL_charclass.pl
-# 96b3ff442d0c9122f1bce72b7bc46c2ead13c3028c250f65aca689cd5e142d58 regen/mk_invlists.pl
+# e0db8fe02138f978cc88968bd89e4f8e5d9fffe540499ba788dead2a5ecf5e37 regen/mk_invlists.pl
# ex: set ro ft=perl:
diff --git a/regcharclass.h b/regcharclass.h
index e75ecbe026..2495a4e77e 100644
--- a/regcharclass.h
+++ b/regcharclass.h
@@ -4000,7 +4000,7 @@
* e015a6d4bde8dd0f8b72bf15ac9a4f588146ce6bc0bf8980e9dae8302cdbdc28 lib/unicore/extracted/DLineBreak.txt
* 3dade4d96bd00d71b10022bf70b370090f3ca947f977ad4dc2854e06c4d074f6 lib/unicore/extracted/DNumType.txt
* c84f084f83ec6852e1db6e7ef15f340a3af2df8cf0c386ac0d076c2cebd189e6 lib/unicore/extracted/DNumValues.txt
- * 6b9a50d93d42d337e8104c5ba5be7d61946b91d7e85182f084e0ff2df261401b lib/unicore/mktables
+ * 50f73270fdef0981edb4e24be003f71001cf76876591fc8703276d65ef488c9b lib/unicore/mktables
* a0079d7556b20c2de1fdc3d492797a91b8ec8a06006f94460006185cb6380962 lib/unicore/version
* 0a6b5ab33bb1026531f816efe81aea1a8ffcd34a27cbea37dd6a70a63d73c844 regen/charset_translations.pl
* 852a8a7814f08a155d79fead2656fe2b4450ab17a2bce8a1127016119c9c3bc3 regen/regcharclass.pl
diff --git a/regen/mk_invlists.pl b/regen/mk_invlists.pl
index b1f1b0fe54..bbc81acc8f 100644
--- a/regen/mk_invlists.pl
+++ b/regen/mk_invlists.pl
@@ -2273,7 +2273,7 @@ sub output_GCB_table() {
enum => 1,
match_return => 1,
},
- GCB_InCB_Consonant_then_InCB_Extend_or_InCB_Linker_v_InCB_Consonant => {
+ GCB_InCB_Linker_then_InCB_Extend_v_InCB_Consonant => {
enum => $gcb_enum++,
match_return => 'GCB_NOBREAK',
rule => '9c',
@@ -2359,13 +2359,13 @@ sub output_GCB_table() {
# GB9b Prepend ×
set_gcb_nobreak('Prepend', '*', '9b');
- # GB9c \p{InCB=Consonant} [ \p{InCB=Extend} \p{InCB=Linker} ]*
- # \p{InCB=Linker} [ \p{InCB=Extend} \p{InCB=Linker} ]*
- # × \p{InCB=Consonant}
- $dfa = 'GCB_InCB_Consonant_then_InCB_Extend_or_InCB_Linker_v_InCB_Consonant';
- add_gcb_dfa( [ qw(InCB_Consonant
- InCB_Linker
- InCB_Extend) ], 'InCB_Consonant', $dfa, '9c');
+ # Do not break within certain combinations with Indic_Conjunct_Break
+ # (InCB)=Linker.
+ # GB9c \p{InCB=Linker} \p{InCB=Extend}* × \p{InCB=Consonant}
+ $dfa = 'GCB_InCB_Linker_then_InCB_Extend_v_InCB_Consonant';
+ $rule = '9c';
+ set_gcb_nobreak('InCB_Linker', 'InCB_Consonant', $rule);
+ add_gcb_dfa( 'InCB_Extend', 'InCB_Consonant', $dfa, '9c');
# GB10 ( E_Base | E_Base_GAZ ) Extend* × E_Modifier
$rule = 10;
@@ -2687,8 +2687,9 @@ sub output_LB_table() {
# LB12a Do not break before NBSP and related characters, except after
# spaces and hyphens.
- # [^SP BA HY] × GL
- set_lb_nobreak([ qw(^ SP BA HY HH) ], 'GL', '12a');
+ # [^SP HY HH] × GL
+ set_lb_nobreak([ qw(^ SP HY HH) ], 'GL', '12a');
+
# LB13 Do not break before ‘]’ or ‘!’ or ‘;’ or ‘/’, even after spaces, as
# tailored by example 7 in http://www.unicode.org/reports/tr14/#Examples
diff --git a/regexec.c b/regexec.c
index f8953af6ea..a41a7ae512 100644
--- a/regexec.c
+++ b/regexec.c
@@ -5333,24 +5333,14 @@ S_isGCB(pTHX_ const GCB_enum before, const GCB_enum after, const U8 * const strb
* if the input matches what the DFA expects and then 'break's out of
* the switch. */
- case GCB_InCB_Consonant_then_InCB_Extend_or_InCB_Linker_v_InCB_Consonant: ;
- /* GB9c \p{InCB=Consonant} [ \p{InCB=Extend} \p{InCB=Linker} ]*
- * \p{InCB=Linker} [ \p{InCB=Extend} \p{InCB=Linker} ]*
- * × \p{InCB=Consonant}
- *
- * This translates to, we can have any number of Linker and
- * Extend characters in a row, immediately preceded by a
- * Consonant, as long as there is at least one Linker. */
- bool has_linker;
- has_linker = false;
- while (isGCB_InCB_Linker(prev) || isGCB_InCB_Extend(prev)) {
- if (isGCB_InCB_Linker(prev)) {
- has_linker = true;
- }
+ case GCB_InCB_Linker_then_InCB_Extend_v_InCB_Consonant:
+ /* GB9c \p{InCB=Linker} \p{InCB=Extend}* × \p{InCB=Consonant}
+ * */
+ while (isGCB_InCB_Extend(prev)) {
prev = backup_one_GCB(strbeg, &prev_pos, utf8_target);
}
- matched = has_linker && isGCB_InCB_Consonant(prev);
+ matched = isGCB_InCB_Linker(prev);
break;
case GCB_various_then_RI_v_RI: ;
diff --git a/regexp_constants.h b/regexp_constants.h
index c70cd7d6ef..cb89a59673 100644
--- a/regexp_constants.h
+++ b/regexp_constants.h
@@ -83,9 +83,9 @@
* e015a6d4bde8dd0f8b72bf15ac9a4f588146ce6bc0bf8980e9dae8302cdbdc28 lib/unicore/extracted/DLineBreak.txt
* 3dade4d96bd00d71b10022bf70b370090f3ca947f977ad4dc2854e06c4d074f6 lib/unicore/extracted/DNumType.txt
* c84f084f83ec6852e1db6e7ef15f340a3af2df8cf0c386ac0d076c2cebd189e6 lib/unicore/extracted/DNumValues.txt
- * 6b9a50d93d42d337e8104c5ba5be7d61946b91d7e85182f084e0ff2df261401b lib/unicore/mktables
+ * 50f73270fdef0981edb4e24be003f71001cf76876591fc8703276d65ef488c9b lib/unicore/mktables
* a0079d7556b20c2de1fdc3d492797a91b8ec8a06006f94460006185cb6380962 lib/unicore/version
* 0a6b5ab33bb1026531f816efe81aea1a8ffcd34a27cbea37dd6a70a63d73c844 regen/charset_translations.pl
* 6bbb462516a4ea79e28d58cf387f0b4b63ba83c7d381cd61bdda0b188e148082 regen/mk_PL_charclass.pl
- * 96b3ff442d0c9122f1bce72b7bc46c2ead13c3028c250f65aca689cd5e142d58 regen/mk_invlists.pl
+ * e0db8fe02138f978cc88968bd89e4f8e5d9fffe540499ba788dead2a5ecf5e37 regen/mk_invlists.pl
* ex: set ro ft=c: */
diff --git a/uni_keywords.h b/uni_keywords.h
index ba406b0774..be637c50af 100644
--- a/uni_keywords.h
+++ b/uni_keywords.h
@@ -8283,10 +8283,10 @@ match_uniprop( const unsigned char * const key, const U16 key_len ) {
* e015a6d4bde8dd0f8b72bf15ac9a4f588146ce6bc0bf8980e9dae8302cdbdc28 lib/unicore/extracted/DLineBreak.txt
* 3dade4d96bd00d71b10022bf70b370090f3ca947f977ad4dc2854e06c4d074f6 lib/unicore/extracted/DNumType.txt
* c84f084f83ec6852e1db6e7ef15f340a3af2df8cf0c386ac0d076c2cebd189e6 lib/unicore/extracted/DNumValues.txt
- * 6b9a50d93d42d337e8104c5ba5be7d61946b91d7e85182f084e0ff2df261401b lib/unicore/mktables
+ * 50f73270fdef0981edb4e24be003f71001cf76876591fc8703276d65ef488c9b lib/unicore/mktables
* a0079d7556b20c2de1fdc3d492797a91b8ec8a06006f94460006185cb6380962 lib/unicore/version
* 0a6b5ab33bb1026531f816efe81aea1a8ffcd34a27cbea37dd6a70a63d73c844 regen/charset_translations.pl
* 6bbb462516a4ea79e28d58cf387f0b4b63ba83c7d381cd61bdda0b188e148082 regen/mk_PL_charclass.pl
- * 96b3ff442d0c9122f1bce72b7bc46c2ead13c3028c250f65aca689cd5e142d58 regen/mk_invlists.pl
+ * e0db8fe02138f978cc88968bd89e4f8e5d9fffe540499ba788dead2a5ecf5e37 regen/mk_invlists.pl
* a6ce8aefad005c081d4e04523e1f1f1a5a1bed5414ca4a421b5b16b73bfce6a4 regen/mph.pl
* ex: set ro ft=c: */