This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
regen/regcharclass.pl: Mark intermediate macros as internal
[perl5.git] / regcharclass.h
1 /* -*- buffer-read-only: t -*-
2  *
3  *    regcharclass.h
4  *
5  *    Copyright (C) 2007, 2011 by Larry Wall and others
6  *
7  *    You may distribute under the terms of either the GNU General Public
8  *    License or the Artistic License, as specified in the README file.
9  *
10  * !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!!
11  * This file is built by regen/regcharclass.pl.
12  * Any changes made here will be lost!
13  * WARNING: These macros are for internal Perl core use only, and may be
14  * changed or removed without notice.
15  */
16
17
18 #ifndef PERL_REGCHARCLASS_H_ /* Guard against nested #includes */
19 #define PERL_REGCHARCLASS_H_
20
21 #if 'A' == 65 /* ASCII/Latin1 */
22 /*
23         LNBREAK: Line Break: \R
24
25         "\x0D\x0A"      # CRLF - Network (Windows) line ending
26         \p{VertSpace}
27 */
28 /*** GENERATED CODE ***/
29 #define is_LNBREAK_safe(s,e,is_utf8)                                        \
30 ( ((e)-(s) > 2) ?                                                           \
31     ( ( inRANGE_helper_(U8, ((const U8*)s)[0], '\n', '\f') ) ? 1            \
32     : ( '\r' == ((const U8*)s)[0] ) ?                                       \
33         ( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
34     : ( is_utf8 ) ?                                                         \
35         ( ( 0xC2 == ((const U8*)s)[0] ) ?                                   \
36             ( ( 0x85 == ((const U8*)s)[1] ) ? 2 : 0 )                       \
37         : ( ( ( 0xE2 == ((const U8*)s)[0] ) && ( 0x80 == ((const U8*)s)[1] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0xA8, 0xA9) ) ) ? 3 : 0 )\
38     : ( 0x85 == ((const U8*)s)[0] ) )                                       \
39 : ((e)-(s) > 1) ?                                                           \
40     ( ( inRANGE_helper_(U8, ((const U8*)s)[0], '\n', '\f') ) ? 1            \
41     : ( '\r' == ((const U8*)s)[0] ) ?                                       \
42         ( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
43     : ( is_utf8 ) ?                                                         \
44         ( ( ( 0xC2 == ((const U8*)s)[0] ) && ( 0x85 == ((const U8*)s)[1] ) ) ? 2 : 0 )\
45     : ( 0x85 == ((const U8*)s)[0] ) )                                       \
46 : ((e)-(s) > 0) ?                                                           \
47     ( ( inRANGE_helper_(U8, ((const U8*)s)[0], '\n', '\r') ) ? 1            \
48     : ( !( is_utf8 ) ) ?                                                    \
49         ( 0x85 == ((const U8*)s)[0] )                                       \
50     : 0 )                                                                   \
51 : 0 )
52
53 /*** GENERATED CODE ***/
54 #define is_LNBREAK_utf8_safe(s,e)                                           \
55 ( ((e)-(s) > 2) ?                                                           \
56     ( ( inRANGE_helper_(U8, ((const U8*)s)[0], '\n', '\f') ) ? 1            \
57     : ( '\r' == ((const U8*)s)[0] ) ?                                       \
58         ( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
59     : ( 0xC2 == ((const U8*)s)[0] ) ?                                       \
60         ( ( 0x85 == ((const U8*)s)[1] ) ? 2 : 0 )                           \
61     : ( ( ( 0xE2 == ((const U8*)s)[0] ) && ( 0x80 == ((const U8*)s)[1] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0xA8, 0xA9) ) ) ? 3 : 0 )\
62 : ((e)-(s) > 1) ?                                                           \
63     ( ( inRANGE_helper_(U8, ((const U8*)s)[0], '\n', '\f') ) ? 1            \
64     : ( '\r' == ((const U8*)s)[0] ) ?                                       \
65         ( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
66     : ( ( 0xC2 == ((const U8*)s)[0] ) && ( 0x85 == ((const U8*)s)[1] ) ) ? 2 : 0 )\
67 : ((e)-(s) > 0) ?                                                           \
68     ( inRANGE_helper_(U8, ((const U8*)s)[0], '\n', '\r') )                  \
69 : 0 )
70
71 /*** GENERATED CODE ***/
72 #define is_LNBREAK_latin1_safe(s,e)                                         \
73 ( ((e)-(s) > 1) ?                                                           \
74     ( ( inRANGE_helper_(U8, ((const U8*)s)[0], '\n', '\f') || 0x85 == ((const U8*)s)[0] ) ? 1\
75     : ( '\r' == ((const U8*)s)[0] ) ?                                       \
76         ( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
77     : 0 )                                                                   \
78 : ((e)-(s) > 0) ?                                                           \
79     ( inRANGE_helper_(U8, ((const U8*)s)[0], '\n', '\r') || 0x85 == ((const U8*)s)[0] )\
80 : 0 )
81
82 /*
83         HORIZWS: Horizontal Whitespace: \h \H
84
85         \p{HorizSpace}
86 */
87 /*** GENERATED CODE ***/
88 #define is_HORIZWS_high(s)                                                  \
89 ( ( 0xE1 == ((const U8*)s)[0] ) ?                                           \
90     ( ( ( 0x9A == ((const U8*)s)[1] ) && ( 0x80 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
91 : ( 0xE2 == ((const U8*)s)[0] ) ?                                           \
92     ( ( 0x80 == ((const U8*)s)[1] ) ?                                       \
93         ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x80, 0x8A) || 0xAF == ((const U8*)s)[2] ) ? 3 : 0 )\
94     : ( ( 0x81 == ((const U8*)s)[1] ) && ( 0x9F == ((const U8*)s)[2] ) ) ? 3 : 0 )\
95 : ( ( ( 0xE3 == ((const U8*)s)[0] ) && ( 0x80 == ((const U8*)s)[1] ) ) && ( 0x80 == ((const U8*)s)[2] ) ) ? 3 : 0 )
96
97 /*** GENERATED CODE ***/
98 #define is_HORIZWS_cp_high(cp)                                              \
99 ( 0x1680 == cp || ( 0x1680 < cp &&                                          \
100 ( inRANGE_helper_(UV, cp, 0x2000, 0x200A) || ( 0x200A < cp &&               \
101 ( 0x202F == cp || ( 0x202F < cp &&                                          \
102 ( 0x205F == cp || 0x3000 == cp ) ) ) ) ) ) )
103
104 /*
105         VERTWS: Vertical Whitespace: \v \V
106
107         \p{VertSpace}
108 */
109 /*** GENERATED CODE ***/
110 #define is_VERTWS_high(s)                                                   \
111 ( ( ( ( 0xE2 == ((const U8*)s)[0] ) && ( 0x80 == ((const U8*)s)[1] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0xA8, 0xA9) ) ) ? 3 : 0 )
112
113 /*** GENERATED CODE ***/
114 #define is_VERTWS_cp_high(cp)                                               \
115 ( inRANGE_helper_(UV, cp, 0x2028, 0x2029) )
116
117 /*
118         XDIGIT: Hexadecimal digits
119
120         \p{XDigit}
121 */
122 /*** GENERATED CODE ***/
123 #define is_XDIGIT_high(s)                                                   \
124 ( ( 0xEF == ((const U8*)s)[0] ) ?                                           \
125     ( ( 0xBC == ((const U8*)s)[1] ) ?                                       \
126         ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x90, 0x99) || inRANGE_helper_(U8, ((const U8*)s)[2], 0xA1, 0xA6) ) ? 3 : 0 )\
127     : ( ( 0xBD == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x81, 0x86) ) ) ? 3 : 0 )\
128 : 0 )
129
130 /*** GENERATED CODE ***/
131 #define is_XDIGIT_cp_high(cp)                                               \
132 ( inRANGE_helper_(UV, cp, 0xFF10, 0xFF19) || ( 0xFF19 < cp &&               \
133 ( inRANGE_helper_(UV, cp, 0xFF21, 0xFF26) || inRANGE_helper_(UV, cp, 0xFF41, 0xFF46) ) ) )
134
135 /*
136         XPERLSPACE: \p{XPerlSpace}
137
138         \p{XPerlSpace}
139 */
140 /*** GENERATED CODE ***/
141 #define is_XPERLSPACE_high(s)                                               \
142 ( ( 0xE1 == ((const U8*)s)[0] ) ?                                           \
143     ( ( ( 0x9A == ((const U8*)s)[1] ) && ( 0x80 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
144 : ( 0xE2 == ((const U8*)s)[0] ) ?                                           \
145     ( ( 0x80 == ((const U8*)s)[1] ) ?                                       \
146         ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x80, 0x8A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0xA8, 0xA9) || 0xAF == ((const U8*)s)[2] ) ? 3 : 0 )\
147     : ( ( 0x81 == ((const U8*)s)[1] ) && ( 0x9F == ((const U8*)s)[2] ) ) ? 3 : 0 )\
148 : ( ( ( 0xE3 == ((const U8*)s)[0] ) && ( 0x80 == ((const U8*)s)[1] ) ) && ( 0x80 == ((const U8*)s)[2] ) ) ? 3 : 0 )
149
150 /*** GENERATED CODE ***/
151 #define is_XPERLSPACE_cp_high(cp)                                           \
152 ( 0x1680 == cp || ( 0x1680 < cp &&                                          \
153 ( inRANGE_helper_(UV, cp, 0x2000, 0x200A) || ( 0x200A < cp &&               \
154 ( inRANGE_helper_(UV, cp, 0x2028, 0x2029) || ( 0x2029 < cp &&               \
155 ( 0x202F == cp || ( 0x202F < cp &&                                          \
156 ( 0x205F == cp || 0x3000 == cp ) ) ) ) ) ) ) ) )
157
158 /*
159         NONCHAR: Non character code points
160
161         \p{_Perl_Nchar}
162 */
163 /*** GENERATED CODE ***/
164 #define is_NONCHAR_utf8_safe(s,e)                                           \
165 ( ( ( LIKELY((e) > (s)) ) && ( LIKELY(((e) - (s)) >= UTF8SKIP(s)) ) ) ? ( ( 0xEF == ((const U8*)s)[0] ) ?\
166             ( ( 0xB7 == ((const U8*)s)[1] ) ?                               \
167                 ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x90, 0xAF) ) ? 3 : 0 )\
168             : ( ( 0xBF == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0xBE, 0xBF) ) ) ? 3 : 0 )\
169         : ( 0xF0 == ((const U8*)s)[0] ) ?                                   \
170             ( ( ( ( ((const U8*)s)[1] == 0x9F || ( ( ((const U8*)s)[1] & 0xEF ) == 0xAF ) ) && ( 0xBF == ((const U8*)s)[2] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0xBE, 0xBF) ) ) ? 4 : 0 )\
171         : ( inRANGE_helper_(U8, ((const U8*)s)[0], 0xF1, 0xF3) ) ?          \
172             ( ( ( ( ( ((const U8*)s)[1] & 0xCF ) == 0x8F ) && ( 0xBF == ((const U8*)s)[2] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0xBE, 0xBF) ) ) ? 4 : 0 )\
173         : ( ( ( ( 0xF4 == ((const U8*)s)[0] ) && ( 0x8F == ((const U8*)s)[1] ) ) && ( 0xBF == ((const U8*)s)[2] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0xBE, 0xBF) ) ) ? 4 : 0 ) : 0 )
174
175 /*
176         SURROGATE: Surrogate code points
177
178         \p{_Perl_Surrogate}
179 */
180 /*** GENERATED CODE ***/
181 #define is_SURROGATE_utf8_safe(s,e)                                         \
182 ( ( ( ( ( ((e) - (s)) >= 3 ) && ( 0xED == ((const U8*)s)[0] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[1], 0xA0, 0xBF) ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x80, 0xBF) ) ) ? 3 : 0 )
183
184 /*
185         QUOTEMETA: Meta-characters that \Q should quote
186
187         \p{_Perl_Quotemeta}
188 */
189 /*** GENERATED CODE ***/
190 #define is_QUOTEMETA_high(s)                                                \
191 ( ( 0xCD == ((const U8*)s)[0] ) ?                                           \
192     ( ( 0x8F == ((const U8*)s)[1] ) ? 2 : 0 )                               \
193 : ( 0xD8 == ((const U8*)s)[0] ) ?                                           \
194     ( ( 0x9C == ((const U8*)s)[1] ) ? 2 : 0 )                               \
195 : ( 0xE1 == ((const U8*)s)[0] ) ?                                           \
196     ( ( 0x85 == ((const U8*)s)[1] ) ?                                       \
197         ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x9F, 0xA0) ) ? 3 : 0 )  \
198     : ( 0x9A == ((const U8*)s)[1] ) ?                                       \
199         ( ( 0x80 == ((const U8*)s)[2] ) ? 3 : 0 )                           \
200     : ( 0x9E == ((const U8*)s)[1] ) ?                                       \
201         ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0xB4, 0xB5) ) ? 3 : 0 )  \
202     : ( ( 0xA0 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x8B, 0x8E) ) ) ? 3 : 0 )\
203 : ( 0xE2 == ((const U8*)s)[0] ) ?                                           \
204     ( ( 0x80 == ((const U8*)s)[1] ) ?                                       \
205         ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x80, 0xBE) ) ? 3 : 0 )  \
206     : ( 0x81 == ((const U8*)s)[1] ) ?                                       \
207         ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x81, 0x93) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x95, 0xAF) ) ? 3 : 0 )\
208     : ( 0x86 == ((const U8*)s)[1] ) ?                                       \
209         ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x90, 0xBF) ) ? 3 : 0 )  \
210     : ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x87, 0x90) || inRANGE_helper_(U8, ((const U8*)s)[1], 0x94, 0x9C) || inRANGE_helper_(U8, ((const U8*)s)[1], 0x9F, 0xAF) || inRANGE_helper_(U8, ((const U8*)s)[1], 0xB8, 0xB9) ) ?\
211         3                                                                   \
212     : ( 0x91 == ((const U8*)s)[1] ) ?                                       \
213         ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x80, 0x9F) ) ? 3 : 0 )  \
214     : ( 0x9D == ((const U8*)s)[1] ) ?                                       \
215         ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x80, 0xB5) ) ? 3 : 0 )  \
216     : ( ( 0x9E == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x94, 0xBF) ) ) ? 3 : 0 )\
217 : ( 0xE3 == ((const U8*)s)[0] ) ?                                           \
218     ( ( 0x80 == ((const U8*)s)[1] ) ?                                       \
219         ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x80, 0x83) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x88, 0xA0) || 0xB0 == ((const U8*)s)[2] ) ? 3 : 0 )\
220     : ( ( 0x85 == ((const U8*)s)[1] ) && ( 0xA4 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
221 : ( 0xEF == ((const U8*)s)[0] ) ?                                           \
222     ( ( 0xB4 == ((const U8*)s)[1] ) ?                                       \
223         ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0xBE, 0xBF) ) ? 3 : 0 )  \
224     : ( 0xB8 == ((const U8*)s)[1] ) ?                                       \
225         ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x80, 0x8F) ) ? 3 : 0 )  \
226     : ( 0xB9 == ((const U8*)s)[1] ) ?                                       \
227         ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x85, 0x86) ) ? 3 : 0 )  \
228     : ( 0xBB == ((const U8*)s)[1] ) ?                                       \
229         ( ( 0xBF == ((const U8*)s)[2] ) ? 3 : 0 )                           \
230     : ( 0xBE == ((const U8*)s)[1] ) ?                                       \
231         ( ( 0xA0 == ((const U8*)s)[2] ) ? 3 : 0 )                           \
232     : ( ( 0xBF == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0xB0, 0xB8) ) ) ? 3 : 0 )\
233 : ( 0xF0 == ((const U8*)s)[0] ) ?                                           \
234     ( ( 0x9B == ((const U8*)s)[1] ) ?                                       \
235         ( ( ( 0xB2 == ((const U8*)s)[2] ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0xA0, 0xA3) ) ) ? 4 : 0 )\
236     : ( ( ( 0x9D == ((const U8*)s)[1] ) && ( 0x85 == ((const U8*)s)[2] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0xB3, 0xBA) ) ) ? 4 : 0 )\
237 : ( ( 0xF3 == ((const U8*)s)[0] ) && ( 0xA0 == ((const U8*)s)[1] ) ) ? 4 : 0 )
238
239 /*
240         MULTI_CHAR_FOLD: multi-char strings that are folded to by a single character
241
242         %regcharclass_multi_char_folds::multi_char_folds('u', 'a')
243 */
244 /*** GENERATED CODE ***/
245 #define is_MULTI_CHAR_FOLD_utf8_safe_part0_(s,e)                            \
246 ( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ?                                 \
247             ( ( ( ( ((const U8*)s)[2] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[2] & 0xDF ) == 'L' ) ) ? 3 : 2 )\
248         : ( ( ( ((const U8*)s)[1] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[1] & 0xDF ) == 'L' ) ) ? 2 : 0 )
249
250
251 /*** GENERATED CODE ***/
252 #define is_MULTI_CHAR_FOLD_utf8_safe_part1_(s,e)                            \
253 ( ( ( ((const U8*)s)[0] & 0xDF ) == 'H' ) ?                                 \
254         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0xB1 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
255     : ( ( ((const U8*)s)[0] & 0xDF ) == 'I' ) ?                             \
256         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x87 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
257     : ( ( ((const U8*)s)[0] & 0xDF ) == 'J' ) ?                             \
258         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8C == ((const U8*)s)[2] ) ) ? 3 : 0 )\
259     : ( ( ((const U8*)s)[0] & 0xDF ) == 'S' ) ?                             \
260         ( ( inRANGE_helper_(U8, ((const U8*)s)[1], 'S', 'T') || inRANGE_helper_(U8, ((const U8*)s)[1], 's', 't') ) ? 2\
261         : ( ( 0xC5 == ((const U8*)s)[1] ) && ( 0xBF == ((const U8*)s)[2] ) ) ? 3 : 0 )\
262     : ( ( ((const U8*)s)[0] & 0xDF ) == 'T' ) ?                             \
263         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x88 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
264     : ( ( ( ((const U8*)s)[0] & 0xDF ) == 'W' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'Y' ) ) ?\
265         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8A == ((const U8*)s)[2] ) ) ? 3 : 0 )\
266     : ( 0xC5 == ((const U8*)s)[0] ) ?                                       \
267         ( ( 0xBF == ((const U8*)s)[1] ) ?                                   \
268             ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 'S', 'T') || inRANGE_helper_(U8, ((const U8*)s)[2], 's', 't') ) ? 3\
269             : ( ( 0xC5 == ((const U8*)s)[2] ) && ( 0xBF == ((const U8*)s)[3] ) ) ? 4 : 0 )\
270         : 0 )                                                               \
271     : ( 0xCA == ((const U8*)s)[0] ) ?                                       \
272         ( ( ( 0xBC == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xDF ) == 'N' ) ) ? 3 : 0 )\
273     : ( 0xCE == ((const U8*)s)[0] ) ?                                       \
274         ( ( ( ((const U8*)s)[1] & 0xFD ) == 0xAC ) ?                        \
275             ( ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
276         : ( 0xB1 == ((const U8*)s)[1] || 0xB7 == ((const U8*)s)[1] ) ?      \
277             ( ( 0xCD == ((const U8*)s)[2] ) ?                               \
278                 ( ( 0x82 == ((const U8*)s)[3] ) ?                           \
279                     ( ( ( 0xCE == ((const U8*)s)[4] ) && ( 0xB9 == ((const U8*)s)[5] ) ) ? 6 : 4 )\
280                 : 0 )                                                       \
281             : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
282         : ( 0xB9 == ((const U8*)s)[1] ) ?                                   \
283             ( ( 0xCC == ((const U8*)s)[2] ) ?                               \
284                 ( ( 0x88 == ((const U8*)s)[3] ) ?                           \
285                     ( ( 0xCC == ((const U8*)s)[4] ) ?                       \
286                         ( ( inRANGE_helper_(U8, ((const U8*)s)[5], 0x80, 0x81) ) ? 6 : 0 )\
287                     : ( ( 0xCD == ((const U8*)s)[4] ) && ( 0x82 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
288                 : 0 )                                                       \
289             : ( ( 0xCD == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
290         : 0 )                                                               \
291     : ( 0xCF == ((const U8*)s)[0] ) ?                                       \
292         ( ( 0x81 == ((const U8*)s)[1] ) ?                                   \
293             ( ( ( 0xCC == ((const U8*)s)[2] ) && ( 0x93 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
294         : ( 0x85 == ((const U8*)s)[1] ) ?                                   \
295             ( ( 0xCC == ((const U8*)s)[2] ) ?                               \
296                 ( ( 0x88 == ((const U8*)s)[3] ) ?                           \
297                     ( ( 0xCC == ((const U8*)s)[4] ) ?                       \
298                         ( ( inRANGE_helper_(U8, ((const U8*)s)[5], 0x80, 0x81) ) ? 6 : 0 )\
299                     : ( ( 0xCD == ((const U8*)s)[4] ) && ( 0x82 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
300                 : ( 0x93 == ((const U8*)s)[3] ) ?                           \
301                     ( ( 0xCC == ((const U8*)s)[4] ) ?                       \
302                         ( ( inRANGE_helper_(U8, ((const U8*)s)[5], 0x80, 0x81) ) ? 6 : 4 )\
303                     : ( ( 0xCD == ((const U8*)s)[4] ) && ( 0x82 == ((const U8*)s)[5] ) ) ? 6 : 4 )\
304                 : 0 )                                                       \
305             : ( ( 0xCD == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
306         : ( 0x89 == ((const U8*)s)[1] ) ?                                   \
307             ( ( 0xCD == ((const U8*)s)[2] ) ?                               \
308                 ( ( 0x82 == ((const U8*)s)[3] ) ?                           \
309                     ( ( ( 0xCE == ((const U8*)s)[4] ) && ( 0xB9 == ((const U8*)s)[5] ) ) ? 6 : 4 )\
310                 : 0 )                                                       \
311             : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
312         : ( ( ( 0x8E == ((const U8*)s)[1] ) && ( 0xCE == ((const U8*)s)[2] ) ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
313     : ( 0xD5 == ((const U8*)s)[0] ) ?                                       \
314         ( ( 0xA5 == ((const U8*)s)[1] ) ?                                   \
315             ( ( ( 0xD6 == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
316         : ( 0xB4 == ((const U8*)s)[1] ) ?                                   \
317             ( ( ( 0xD5 == ((const U8*)s)[2] ) && ( ( ( ((const U8*)s)[3] & 0xF7 ) == 0xA5 ) || ((const U8*)s)[3] == 0xAB || ((const U8*)s)[3] == 0xB6 ) ) ? 4 : 0 )\
318         : ( ( ( 0xBE == ((const U8*)s)[1] ) && ( 0xD5 == ((const U8*)s)[2] ) ) && ( 0xB6 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
319     : ( 0xE1 == ((const U8*)s)[0] ) ?                                       \
320         ( ( 0xBC == ((const U8*)s)[1] ) ?                                   \
321             ( ( ( ( ( ((const U8*)s)[2] & 0xD8 ) == 0x80 ) && ( 0xCE == ((const U8*)s)[3] ) ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
322         : ( ( ( ( 0xBD == ((const U8*)s)[1] ) && ( ( ( ((const U8*)s)[2] & 0xF8 ) == 0xA0 ) || ( ( ((const U8*)s)[2] & 0xFB ) == 0xB0 ) || ((const U8*)s)[2] == 0xBC ) ) && ( 0xCE == ((const U8*)s)[3] ) ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
323     : 0 )
324
325
326 /*** GENERATED CODE ***/
327 #define is_MULTI_CHAR_FOLD_utf8_safe_part2_(s,e)                            \
328 ( ( ( ((const U8*)s)[0] & 0xDF ) == 'A' ) ?                                 \
329         ( ( ( 0xCA == ((const U8*)s)[1] ) && ( 0xBE == ((const U8*)s)[2] ) ) ? 3 : 0 )\
330     : ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
331         ( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ?                         \
332             ( ( ( ( ((const U8*)s)[2] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[2] & 0xDF ) == 'L' ) ) ? 3 : 2 )\
333         : ( ( ( ((const U8*)s)[1] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[1] & 0xDF ) == 'L' ) ) ? 2 : 0 )\
334     : ( ( ((const U8*)s)[0] & 0xDF ) == 'H' ) ?                             \
335         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0xB1 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
336     : ( ( ((const U8*)s)[0] & 0xDF ) == 'I' ) ?                             \
337         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x87 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
338     : ( ( ((const U8*)s)[0] & 0xDF ) == 'J' ) ?                             \
339         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8C == ((const U8*)s)[2] ) ) ? 3 : 0 )\
340     : ( ( ((const U8*)s)[0] & 0xDF ) == 'S' ) ?                             \
341         ( ( inRANGE_helper_(U8, ((const U8*)s)[1], 'S', 'T') || inRANGE_helper_(U8, ((const U8*)s)[1], 's', 't') ) ? 2\
342         : ( ( 0xC5 == ((const U8*)s)[1] ) && ( 0xBF == ((const U8*)s)[2] ) ) ? 3 : 0 )\
343     : ( ( ((const U8*)s)[0] & 0xDF ) == 'T' ) ?                             \
344         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x88 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
345     : ( ( ( ((const U8*)s)[0] & 0xDF ) == 'W' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'Y' ) ) ?\
346         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8A == ((const U8*)s)[2] ) ) ? 3 : 0 )\
347     : ( 0xC5 == ((const U8*)s)[0] ) ?                                       \
348         ( ( 0xBF == ((const U8*)s)[1] ) ?                                   \
349             ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 'S', 'T') || inRANGE_helper_(U8, ((const U8*)s)[2], 's', 't') ) ? 3\
350             : ( ( 0xC5 == ((const U8*)s)[2] ) && ( 0xBF == ((const U8*)s)[3] ) ) ? 4 : 0 )\
351         : 0 )                                                               \
352     : ( 0xCA == ((const U8*)s)[0] ) ?                                       \
353         ( ( ( 0xBC == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xDF ) == 'N' ) ) ? 3 : 0 )\
354     : ( 0xCE == ((const U8*)s)[0] ) ?                                       \
355         ( ( ( ((const U8*)s)[1] & 0xFD ) == 0xAC ) ?                        \
356             ( ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
357         : ( 0xB1 == ((const U8*)s)[1] || 0xB7 == ((const U8*)s)[1] ) ?      \
358             ( ( 0xCD == ((const U8*)s)[2] ) ?                               \
359                 ( ( 0x82 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
360             : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
361         : ( ( ( 0xB9 == ((const U8*)s)[1] ) && ( 0xCD == ((const U8*)s)[2] ) ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
362     : ( 0xCF == ((const U8*)s)[0] ) ?                                       \
363         ( ( 0x81 == ((const U8*)s)[1] ) ?                                   \
364             ( ( ( 0xCC == ((const U8*)s)[2] ) && ( 0x93 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
365         : ( 0x85 == ((const U8*)s)[1] ) ?                                   \
366             ( ( 0xCC == ((const U8*)s)[2] ) ?                               \
367                 ( ( 0x93 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
368             : ( ( 0xCD == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
369         : ( 0x89 == ((const U8*)s)[1] ) ?                                   \
370             ( ( 0xCD == ((const U8*)s)[2] ) ?                               \
371                 ( ( 0x82 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
372             : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
373         : ( ( ( 0x8E == ((const U8*)s)[1] ) && ( 0xCE == ((const U8*)s)[2] ) ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
374     : ( 0xD5 == ((const U8*)s)[0] ) ?                                       \
375         ( ( 0xA5 == ((const U8*)s)[1] ) ?                                   \
376             ( ( ( 0xD6 == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
377         : ( 0xB4 == ((const U8*)s)[1] ) ?                                   \
378             ( ( ( 0xD5 == ((const U8*)s)[2] ) && ( ( ( ((const U8*)s)[3] & 0xF7 ) == 0xA5 ) || ((const U8*)s)[3] == 0xAB || ((const U8*)s)[3] == 0xB6 ) ) ? 4 : 0 )\
379         : ( ( ( 0xBE == ((const U8*)s)[1] ) && ( 0xD5 == ((const U8*)s)[2] ) ) && ( 0xB6 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
380     : 0 )
381
382
383 /*** GENERATED CODE ***/
384 #define is_MULTI_CHAR_FOLD_utf8_safe_part3_(s,e)                            \
385 ( ((e)-(s) > 2) ?                                                           \
386     ( ( ( ((const U8*)s)[0] & 0xDF ) == 'A' ) ?                             \
387         ( ( ( 0xCA == ((const U8*)s)[1] ) && ( 0xBE == ((const U8*)s)[2] ) ) ? 3 : 0 )\
388     : ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
389         ( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ?                         \
390             ( ( ( ( ((const U8*)s)[2] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[2] & 0xDF ) == 'L' ) ) ? 3 : 2 )\
391         : ( ( ( ((const U8*)s)[1] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[1] & 0xDF ) == 'L' ) ) ? 2 : 0 )\
392     : ( ( ((const U8*)s)[0] & 0xDF ) == 'H' ) ?                             \
393         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0xB1 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
394     : ( ( ((const U8*)s)[0] & 0xDF ) == 'I' ) ?                             \
395         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x87 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
396     : ( ( ((const U8*)s)[0] & 0xDF ) == 'J' ) ?                             \
397         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8C == ((const U8*)s)[2] ) ) ? 3 : 0 )\
398     : ( ( ((const U8*)s)[0] & 0xDF ) == 'S' ) ?                             \
399         ( ( inRANGE_helper_(U8, ((const U8*)s)[1], 'S', 'T') || inRANGE_helper_(U8, ((const U8*)s)[1], 's', 't') ) ? 2\
400         : ( ( 0xC5 == ((const U8*)s)[1] ) && ( 0xBF == ((const U8*)s)[2] ) ) ? 3 : 0 )\
401     : ( ( ((const U8*)s)[0] & 0xDF ) == 'T' ) ?                             \
402         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x88 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
403     : ( ( ( ((const U8*)s)[0] & 0xDF ) == 'W' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'Y' ) ) ?\
404         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8A == ((const U8*)s)[2] ) ) ? 3 : 0 )\
405     : ( 0xC5 == ((const U8*)s)[0] ) ?                                       \
406         ( ( ( 0xBF == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 'S', 'T') || inRANGE_helper_(U8, ((const U8*)s)[2], 's', 't') ) ) ? 3 : 0 )\
407     : ( ( ( 0xCA == ((const U8*)s)[0] ) && ( 0xBC == ((const U8*)s)[1] ) ) && ( ( ((const U8*)s)[2] & 0xDF ) == 'N' ) ) ? 3 : 0 )\
408 : ((e)-(s) > 1) ?                                                           \
409     ( ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
410         ( ( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) || ( ( ((const U8*)s)[1] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[1] & 0xDF ) == 'L' ) ) ? 2 : 0 )\
411     : ( ( ( ((const U8*)s)[0] & 0xDF ) == 'S' ) && ( inRANGE_helper_(U8, ((const U8*)s)[1], 'S', 'T') || inRANGE_helper_(U8, ((const U8*)s)[1], 's', 't') ) ) ? 2 : 0 )\
412 : 0 )
413
414
415 /*** GENERATED CODE ***/
416 #define is_MULTI_CHAR_FOLD_utf8_safe(s,e)                                   \
417 ( ((e)-(s) > 5) ?                                                           \
418     ( ( ( ((const U8*)s)[0] & 0xDF ) == 'A' ) ?                             \
419         ( ( ( 0xCA == ((const U8*)s)[1] ) && ( 0xBE == ((const U8*)s)[2] ) ) ? 3 : 0 )\
420     : ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ? is_MULTI_CHAR_FOLD_utf8_safe_part0_(s,e) : is_MULTI_CHAR_FOLD_utf8_safe_part1_(s,e) )\
421 : ((e)-(s) > 4) ?                                                           \
422     ( ( ( ((const U8*)s)[0] & 0xDF ) == 'A' ) ?                             \
423         ( ( ( 0xCA == ((const U8*)s)[1] ) && ( 0xBE == ((const U8*)s)[2] ) ) ? 3 : 0 )\
424     : ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
425         ( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ?                         \
426             ( ( ( ( ((const U8*)s)[2] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[2] & 0xDF ) == 'L' ) ) ? 3 : 2 )\
427         : ( ( ( ((const U8*)s)[1] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[1] & 0xDF ) == 'L' ) ) ? 2 : 0 )\
428     : ( ( ((const U8*)s)[0] & 0xDF ) == 'H' ) ?                             \
429         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0xB1 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
430     : ( ( ((const U8*)s)[0] & 0xDF ) == 'I' ) ?                             \
431         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x87 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
432     : ( ( ((const U8*)s)[0] & 0xDF ) == 'J' ) ?                             \
433         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8C == ((const U8*)s)[2] ) ) ? 3 : 0 )\
434     : ( ( ((const U8*)s)[0] & 0xDF ) == 'S' ) ?                             \
435         ( ( inRANGE_helper_(U8, ((const U8*)s)[1], 'S', 'T') || inRANGE_helper_(U8, ((const U8*)s)[1], 's', 't') ) ? 2\
436         : ( ( 0xC5 == ((const U8*)s)[1] ) && ( 0xBF == ((const U8*)s)[2] ) ) ? 3 : 0 )\
437     : ( ( ((const U8*)s)[0] & 0xDF ) == 'T' ) ?                             \
438         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x88 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
439     : ( ( ( ((const U8*)s)[0] & 0xDF ) == 'W' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'Y' ) ) ?\
440         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8A == ((const U8*)s)[2] ) ) ? 3 : 0 )\
441     : ( 0xC5 == ((const U8*)s)[0] ) ?                                       \
442         ( ( 0xBF == ((const U8*)s)[1] ) ?                                   \
443             ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 'S', 'T') || inRANGE_helper_(U8, ((const U8*)s)[2], 's', 't') ) ? 3\
444             : ( ( 0xC5 == ((const U8*)s)[2] ) && ( 0xBF == ((const U8*)s)[3] ) ) ? 4 : 0 )\
445         : 0 )                                                               \
446     : ( 0xCA == ((const U8*)s)[0] ) ?                                       \
447         ( ( ( 0xBC == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xDF ) == 'N' ) ) ? 3 : 0 )\
448     : ( 0xCE == ((const U8*)s)[0] ) ?                                       \
449         ( ( ( ((const U8*)s)[1] & 0xFD ) == 0xAC ) ?                        \
450             ( ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
451         : ( 0xB1 == ((const U8*)s)[1] || 0xB7 == ((const U8*)s)[1] ) ?      \
452             ( ( 0xCD == ((const U8*)s)[2] ) ?                               \
453                 ( ( 0x82 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
454             : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
455         : ( ( ( 0xB9 == ((const U8*)s)[1] ) && ( 0xCD == ((const U8*)s)[2] ) ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
456     : ( 0xCF == ((const U8*)s)[0] ) ?                                       \
457         ( ( 0x81 == ((const U8*)s)[1] ) ?                                   \
458             ( ( ( 0xCC == ((const U8*)s)[2] ) && ( 0x93 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
459         : ( 0x85 == ((const U8*)s)[1] ) ?                                   \
460             ( ( 0xCC == ((const U8*)s)[2] ) ?                               \
461                 ( ( 0x93 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
462             : ( ( 0xCD == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
463         : ( 0x89 == ((const U8*)s)[1] ) ?                                   \
464             ( ( 0xCD == ((const U8*)s)[2] ) ?                               \
465                 ( ( 0x82 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
466             : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
467         : ( ( ( 0x8E == ((const U8*)s)[1] ) && ( 0xCE == ((const U8*)s)[2] ) ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
468     : ( 0xD5 == ((const U8*)s)[0] ) ?                                       \
469         ( ( 0xA5 == ((const U8*)s)[1] ) ?                                   \
470             ( ( ( 0xD6 == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
471         : ( 0xB4 == ((const U8*)s)[1] ) ?                                   \
472             ( ( ( 0xD5 == ((const U8*)s)[2] ) && ( ( ( ((const U8*)s)[3] & 0xF7 ) == 0xA5 ) || ((const U8*)s)[3] == 0xAB || ((const U8*)s)[3] == 0xB6 ) ) ? 4 : 0 )\
473         : ( ( ( 0xBE == ((const U8*)s)[1] ) && ( 0xD5 == ((const U8*)s)[2] ) ) && ( 0xB6 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
474     : ( 0xE1 == ((const U8*)s)[0] ) ?                                       \
475         ( ( 0xBC == ((const U8*)s)[1] ) ?                                   \
476             ( ( ( ( ( ((const U8*)s)[2] & 0xD8 ) == 0x80 ) && ( 0xCE == ((const U8*)s)[3] ) ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
477         : ( ( ( ( 0xBD == ((const U8*)s)[1] ) && ( ( ( ((const U8*)s)[2] & 0xF8 ) == 0xA0 ) || ( ( ((const U8*)s)[2] & 0xFB ) == 0xB0 ) || ((const U8*)s)[2] == 0xBC ) ) && ( 0xCE == ((const U8*)s)[3] ) ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
478     : 0 )                                                                   \
479 : ((e)-(s) > 3) ? is_MULTI_CHAR_FOLD_utf8_safe_part2_(s,e) : is_MULTI_CHAR_FOLD_utf8_safe_part3_(s,e) )
480
481 /*** GENERATED CODE ***/
482 #define what_MULTI_CHAR_FOLD_utf8_safe_part0_(s,e)                          \
483 ( ( 0x81 == ((const U8*)s)[1] ) ?                                           \
484             ( ( ( 0xCC == ((const U8*)s)[2] ) && ( 0x93 == ((const U8*)s)[3] ) ) ? 0x1FE4 : 0 )\
485         : ( 0x85 == ((const U8*)s)[1] ) ?                                   \
486             ( ( 0xCC == ((const U8*)s)[2] ) ?                               \
487                 ( ( 0x88 == ((const U8*)s)[3] ) ?                           \
488                     ( ( 0xCC == ((const U8*)s)[4] ) ?                       \
489                         ( ( 0x80 == ((const U8*)s)[5] ) ? 0x1FE2            \
490                         : ( 0x81 == ((const U8*)s)[5] ) ? 0x3B0 : 0 )       \
491                     : ( ( 0xCD == ((const U8*)s)[4] ) && ( 0x82 == ((const U8*)s)[5] ) ) ? 0x1FE7 : 0 )\
492                 : ( 0x93 == ((const U8*)s)[3] ) ?                           \
493                     ( ( 0xCC == ((const U8*)s)[4] ) ?                       \
494                         ( ( 0x80 == ((const U8*)s)[5] ) ? 0x1F52            \
495                         : ( 0x81 == ((const U8*)s)[5] ) ? 0x1F54 : 0x1F50 ) \
496                     : ( ( 0xCD == ((const U8*)s)[4] ) && ( 0x82 == ((const U8*)s)[5] ) ) ? 0x1F56 : 0x1F50 )\
497                 : 0 )                                                       \
498             : ( ( 0xCD == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 0x1FE6 : 0 )\
499         : ( 0x89 == ((const U8*)s)[1] ) ?                                   \
500             ( ( 0xCD == ((const U8*)s)[2] ) ?                               \
501                 ( ( 0x82 == ((const U8*)s)[3] ) ?                           \
502                     ( ( ( 0xCE == ((const U8*)s)[4] ) && ( 0xB9 == ((const U8*)s)[5] ) ) ? 0x1FF7 : 0x1FF6 )\
503                 : 0 )                                                       \
504             : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 0x1FF3 : 0 )\
505         : ( ( ( 0x8E == ((const U8*)s)[1] ) && ( 0xCE == ((const U8*)s)[2] ) ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 0x1FF4 : 0 )
506
507
508 /*** GENERATED CODE ***/
509 #define what_MULTI_CHAR_FOLD_utf8_safe_part1_(s,e)                          \
510 ( ( 0xD5 == ((const U8*)s)[0] ) ?                                           \
511         ( ( 0xA5 == ((const U8*)s)[1] ) ?                                   \
512             ( ( ( 0xD6 == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 0x587 : 0 )\
513         : ( 0xB4 == ((const U8*)s)[1] ) ?                                   \
514             ( ( 0xD5 == ((const U8*)s)[2] ) ?                               \
515                 ( ( 0xA5 == ((const U8*)s)[3] ) ? 0xFB14                    \
516                 : ( 0xAB == ((const U8*)s)[3] ) ? 0xFB15                    \
517                 : ( 0xAD == ((const U8*)s)[3] ) ? 0xFB17                    \
518                 : ( 0xB6 == ((const U8*)s)[3] ) ? 0xFB13 : 0 )              \
519             : 0 )                                                           \
520         : ( ( ( 0xBE == ((const U8*)s)[1] ) && ( 0xD5 == ((const U8*)s)[2] ) ) && ( 0xB6 == ((const U8*)s)[3] ) ) ? 0xFB16 : 0 )\
521     : ( 0xE1 == ((const U8*)s)[0] ) ?                                       \
522         ( ( 0xBC == ((const U8*)s)[1] ) ?                                   \
523             ( ( 0x80 == ((const U8*)s)[2] ) ?                               \
524                 ( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F80 : 0 )\
525             : ( 0x81 == ((const U8*)s)[2] ) ?                               \
526                 ( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F81 : 0 )\
527             : ( 0x82 == ((const U8*)s)[2] ) ?                               \
528                 ( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F82 : 0 )\
529             : ( 0x83 == ((const U8*)s)[2] ) ?                               \
530                 ( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F83 : 0 )\
531             : ( 0x84 == ((const U8*)s)[2] ) ?                               \
532                 ( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F84 : 0 )\
533             : ( 0x85 == ((const U8*)s)[2] ) ?                               \
534                 ( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F85 : 0 )\
535             : ( 0x86 == ((const U8*)s)[2] ) ?                               \
536                 ( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F86 : 0 )\
537             : ( 0x87 == ((const U8*)s)[2] ) ?                               \
538                 ( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F87 : 0 )\
539             : ( 0xA0 == ((const U8*)s)[2] ) ?                               \
540                 ( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F90 : 0 )\
541             : ( 0xA1 == ((const U8*)s)[2] ) ?                               \
542                 ( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F91 : 0 )\
543             : ( 0xA2 == ((const U8*)s)[2] ) ?                               \
544                 ( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F92 : 0 )\
545             : ( 0xA3 == ((const U8*)s)[2] ) ?                               \
546                 ( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F93 : 0 )\
547             : ( 0xA4 == ((const U8*)s)[2] ) ?                               \
548                 ( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F94 : 0 )\
549             : ( 0xA5 == ((const U8*)s)[2] ) ?                               \
550                 ( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F95 : 0 )\
551             : ( 0xA6 == ((const U8*)s)[2] ) ?                               \
552                 ( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F96 : 0 )\
553             : ( ( ( 0xA7 == ((const U8*)s)[2] ) && ( 0xCE == ((const U8*)s)[3] ) ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F97 : 0 )\
554         : ( 0xBD == ((const U8*)s)[1] ) ?                                   \
555             ( ( 0xA0 == ((const U8*)s)[2] ) ?                               \
556                 ( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1FA0 : 0 )\
557             : ( 0xA1 == ((const U8*)s)[2] ) ?                               \
558                 ( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1FA1 : 0 )\
559             : ( 0xA2 == ((const U8*)s)[2] ) ?                               \
560                 ( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1FA2 : 0 )\
561             : ( 0xA3 == ((const U8*)s)[2] ) ?                               \
562                 ( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1FA3 : 0 )\
563             : ( 0xA4 == ((const U8*)s)[2] ) ?                               \
564                 ( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1FA4 : 0 )\
565             : ( 0xA5 == ((const U8*)s)[2] ) ?                               \
566                 ( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1FA5 : 0 )\
567             : ( 0xA6 == ((const U8*)s)[2] ) ?                               \
568                 ( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1FA6 : 0 )\
569             : ( 0xA7 == ((const U8*)s)[2] ) ?                               \
570                 ( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1FA7 : 0 )\
571             : ( 0xB0 == ((const U8*)s)[2] ) ?                               \
572                 ( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1FB2 : 0 )\
573             : ( 0xB4 == ((const U8*)s)[2] ) ?                               \
574                 ( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1FC2 : 0 )\
575             : ( ( ( 0xBC == ((const U8*)s)[2] ) && ( 0xCE == ((const U8*)s)[3] ) ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1FF2 : 0 )\
576         : 0 )                                                               \
577     : 0 )
578
579
580 /*** GENERATED CODE ***/
581 #define what_MULTI_CHAR_FOLD_utf8_safe_part2_(s,e)                          \
582 ( ( 0x81 == ((const U8*)s)[1] ) ?                                           \
583             ( ( ( 0xCC == ((const U8*)s)[2] ) && ( 0x93 == ((const U8*)s)[3] ) ) ? 0x1FE4 : 0 )\
584         : ( 0x85 == ((const U8*)s)[1] ) ?                                   \
585             ( ( 0xCC == ((const U8*)s)[2] ) ?                               \
586                 ( ( 0x93 == ((const U8*)s)[3] ) ? 0x1F50 : 0 )              \
587             : ( ( 0xCD == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 0x1FE6 : 0 )\
588         : ( 0x89 == ((const U8*)s)[1] ) ?                                   \
589             ( ( 0xCD == ((const U8*)s)[2] ) ?                               \
590                 ( ( 0x82 == ((const U8*)s)[3] ) ? 0x1FF6 : 0 )              \
591             : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 0x1FF3 : 0 )\
592         : ( ( ( 0x8E == ((const U8*)s)[1] ) && ( 0xCE == ((const U8*)s)[2] ) ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 0x1FF4 : 0 )
593
594
595 /*** GENERATED CODE ***/
596 #define what_MULTI_CHAR_FOLD_utf8_safe_part3_(s,e)                          \
597 ( ( 0xD5 == ((const U8*)s)[0] ) ?                                           \
598         ( ( 0xA5 == ((const U8*)s)[1] ) ?                                   \
599             ( ( ( 0xD6 == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 0x587 : 0 )\
600         : ( 0xB4 == ((const U8*)s)[1] ) ?                                   \
601             ( ( 0xD5 == ((const U8*)s)[2] ) ?                               \
602                 ( ( 0xA5 == ((const U8*)s)[3] ) ? 0xFB14                    \
603                 : ( 0xAB == ((const U8*)s)[3] ) ? 0xFB15                    \
604                 : ( 0xAD == ((const U8*)s)[3] ) ? 0xFB17                    \
605                 : ( 0xB6 == ((const U8*)s)[3] ) ? 0xFB13 : 0 )              \
606             : 0 )                                                           \
607         : ( ( ( 0xBE == ((const U8*)s)[1] ) && ( 0xD5 == ((const U8*)s)[2] ) ) && ( 0xB6 == ((const U8*)s)[3] ) ) ? 0xFB16 : 0 )\
608     : ( 0xE1 == ((const U8*)s)[0] ) ?                                       \
609         ( ( 0xBC == ((const U8*)s)[1] ) ?                                   \
610             ( ( 0x80 == ((const U8*)s)[2] ) ?                               \
611                 ( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F80 : 0 )\
612             : ( 0x81 == ((const U8*)s)[2] ) ?                               \
613                 ( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F81 : 0 )\
614             : ( 0x82 == ((const U8*)s)[2] ) ?                               \
615                 ( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F82 : 0 )\
616             : ( 0x83 == ((const U8*)s)[2] ) ?                               \
617                 ( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F83 : 0 )\
618             : ( 0x84 == ((const U8*)s)[2] ) ?                               \
619                 ( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F84 : 0 )\
620             : ( 0x85 == ((const U8*)s)[2] ) ?                               \
621                 ( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F85 : 0 )\
622             : ( 0x86 == ((const U8*)s)[2] ) ?                               \
623                 ( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F86 : 0 )\
624             : ( 0x87 == ((const U8*)s)[2] ) ?                               \
625                 ( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F87 : 0 )\
626             : ( 0xA0 == ((const U8*)s)[2] ) ?                               \
627                 ( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F90 : 0 )\
628             : ( 0xA1 == ((const U8*)s)[2] ) ?                               \
629                 ( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F91 : 0 )\
630             : ( 0xA2 == ((const U8*)s)[2] ) ?                               \
631                 ( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F92 : 0 )\
632             : ( 0xA3 == ((const U8*)s)[2] ) ?                               \
633                 ( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F93 : 0 )\
634             : ( 0xA4 == ((const U8*)s)[2] ) ?                               \
635                 ( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F94 : 0 )\
636             : ( 0xA5 == ((const U8*)s)[2] ) ?                               \
637                 ( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F95 : 0 )\
638             : ( 0xA6 == ((const U8*)s)[2] ) ?                               \
639                 ( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F96 : 0 )\
640             : ( ( ( 0xA7 == ((const U8*)s)[2] ) && ( 0xCE == ((const U8*)s)[3] ) ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F97 : 0 )\
641         : ( 0xBD == ((const U8*)s)[1] ) ?                                   \
642             ( ( 0xA0 == ((const U8*)s)[2] ) ?                               \
643                 ( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1FA0 : 0 )\
644             : ( 0xA1 == ((const U8*)s)[2] ) ?                               \
645                 ( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1FA1 : 0 )\
646             : ( 0xA2 == ((const U8*)s)[2] ) ?                               \
647                 ( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1FA2 : 0 )\
648             : ( 0xA3 == ((const U8*)s)[2] ) ?                               \
649                 ( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1FA3 : 0 )\
650             : ( 0xA4 == ((const U8*)s)[2] ) ?                               \
651                 ( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1FA4 : 0 )\
652             : ( 0xA5 == ((const U8*)s)[2] ) ?                               \
653                 ( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1FA5 : 0 )\
654             : ( 0xA6 == ((const U8*)s)[2] ) ?                               \
655                 ( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1FA6 : 0 )\
656             : ( 0xA7 == ((const U8*)s)[2] ) ?                               \
657                 ( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1FA7 : 0 )\
658             : ( 0xB0 == ((const U8*)s)[2] ) ?                               \
659                 ( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1FB2 : 0 )\
660             : ( 0xB4 == ((const U8*)s)[2] ) ?                               \
661                 ( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1FC2 : 0 )\
662             : ( ( ( 0xBC == ((const U8*)s)[2] ) && ( 0xCE == ((const U8*)s)[3] ) ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1FF2 : 0 )\
663         : 0 )                                                               \
664     : 0 )
665
666
667 /*** GENERATED CODE ***/
668 #define what_MULTI_CHAR_FOLD_utf8_safe_part4_(s,e)                          \
669 ( ( ( ((const U8*)s)[0] & 0xDF ) == 'A' ) ?                                 \
670         ( ( ( 0xCA == ((const U8*)s)[1] ) && ( 0xBE == ((const U8*)s)[2] ) ) ? 0x1E9A : 0 )\
671     : ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
672         ( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ?                         \
673             ( ( ( ((const U8*)s)[2] & 0xDF ) == 'I' ) ? 0xFB03              \
674             : ( ( ((const U8*)s)[2] & 0xDF ) == 'L' ) ? 0xFB04 : 0xFB00 )   \
675         : ( ( ((const U8*)s)[1] & 0xDF ) == 'I' ) ? 0xFB01                  \
676         : ( ( ((const U8*)s)[1] & 0xDF ) == 'L' ) ? 0xFB02 : 0 )            \
677     : ( ( ((const U8*)s)[0] & 0xDF ) == 'H' ) ?                             \
678         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0xB1 == ((const U8*)s)[2] ) ) ? 0x1E96 : 0 )\
679     : ( ( ((const U8*)s)[0] & 0xDF ) == 'I' ) ?                             \
680         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x87 == ((const U8*)s)[2] ) ) ? 0x130 : 0 )\
681     : ( ( ((const U8*)s)[0] & 0xDF ) == 'J' ) ?                             \
682         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8C == ((const U8*)s)[2] ) ) ? 0x1F0 : 0 )\
683     : ( ( ((const U8*)s)[0] & 0xDF ) == 'S' ) ?                             \
684         ( ( ( ((const U8*)s)[1] & 0xDF ) == 'S' ) ? 0xDF                    \
685         : ( ( ((const U8*)s)[1] & 0xDF ) == 'T' ) ? 0xFB05                  \
686         : ( ( 0xC5 == ((const U8*)s)[1] ) && ( 0xBF == ((const U8*)s)[2] ) ) ? 0xDF : 0 )\
687     : ( ( ((const U8*)s)[0] & 0xDF ) == 'T' ) ?                             \
688         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x88 == ((const U8*)s)[2] ) ) ? 0x1E97 : 0 )\
689     : ( ( ((const U8*)s)[0] & 0xDF ) == 'W' ) ?                             \
690         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8A == ((const U8*)s)[2] ) ) ? 0x1E98 : 0 )\
691     : ( ( ((const U8*)s)[0] & 0xDF ) == 'Y' ) ?                             \
692         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8A == ((const U8*)s)[2] ) ) ? 0x1E99 : 0 )\
693     : ( 0xC5 == ((const U8*)s)[0] ) ?                                       \
694         ( ( 0xBF == ((const U8*)s)[1] ) ?                                   \
695             ( ( ( ((const U8*)s)[2] & 0xDF ) == 'S' ) ? 0xDF                \
696             : ( ( ((const U8*)s)[2] & 0xDF ) == 'T' ) ? 0xFB05              \
697             : ( ( 0xC5 == ((const U8*)s)[2] ) && ( 0xBF == ((const U8*)s)[3] ) ) ? 0xDF : 0 )\
698         : 0 )                                                               \
699     : ( 0xCA == ((const U8*)s)[0] ) ?                                       \
700         ( ( ( 0xBC == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xDF ) == 'N' ) ) ? 0x149 : 0 )\
701     : ( 0xCE == ((const U8*)s)[0] ) ?                                       \
702         ( ( 0xAC == ((const U8*)s)[1] ) ?                                   \
703             ( ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 0x1FB4 : 0 )\
704         : ( 0xAE == ((const U8*)s)[1] ) ?                                   \
705             ( ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 0x1FC4 : 0 )\
706         : ( 0xB1 == ((const U8*)s)[1] ) ?                                   \
707             ( ( 0xCD == ((const U8*)s)[2] ) ?                               \
708                 ( ( 0x82 == ((const U8*)s)[3] ) ? 0x1FB6 : 0 )              \
709             : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 0x1FB3 : 0 )\
710         : ( 0xB7 == ((const U8*)s)[1] ) ?                                   \
711             ( ( 0xCD == ((const U8*)s)[2] ) ?                               \
712                 ( ( 0x82 == ((const U8*)s)[3] ) ? 0x1FC6 : 0 )              \
713             : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 0x1FC3 : 0 )\
714         : ( ( ( 0xB9 == ((const U8*)s)[1] ) && ( 0xCD == ((const U8*)s)[2] ) ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 0x1FD6 : 0 )\
715     : ( 0xCF == ((const U8*)s)[0] ) ?                                       \
716         ( ( 0x81 == ((const U8*)s)[1] ) ?                                   \
717             ( ( ( 0xCC == ((const U8*)s)[2] ) && ( 0x93 == ((const U8*)s)[3] ) ) ? 0x1FE4 : 0 )\
718         : ( 0x85 == ((const U8*)s)[1] ) ?                                   \
719             ( ( 0xCC == ((const U8*)s)[2] ) ?                               \
720                 ( ( 0x93 == ((const U8*)s)[3] ) ? 0x1F50 : 0 )              \
721             : ( ( 0xCD == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 0x1FE6 : 0 )\
722         : ( 0x89 == ((const U8*)s)[1] ) ?                                   \
723             ( ( 0xCD == ((const U8*)s)[2] ) ?                               \
724                 ( ( 0x82 == ((const U8*)s)[3] ) ? 0x1FF6 : 0 )              \
725             : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 0x1FF3 : 0 )\
726         : ( ( ( 0x8E == ((const U8*)s)[1] ) && ( 0xCE == ((const U8*)s)[2] ) ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 0x1FF4 : 0 )\
727     : ( 0xD5 == ((const U8*)s)[0] ) ?                                       \
728         ( ( 0xA5 == ((const U8*)s)[1] ) ?                                   \
729             ( ( ( 0xD6 == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 0x587 : 0 )\
730         : ( 0xB4 == ((const U8*)s)[1] ) ?                                   \
731             ( ( 0xD5 == ((const U8*)s)[2] ) ?                               \
732                 ( ( 0xA5 == ((const U8*)s)[3] ) ? 0xFB14                    \
733                 : ( 0xAB == ((const U8*)s)[3] ) ? 0xFB15                    \
734                 : ( 0xAD == ((const U8*)s)[3] ) ? 0xFB17                    \
735                 : ( 0xB6 == ((const U8*)s)[3] ) ? 0xFB13 : 0 )              \
736             : 0 )                                                           \
737         : ( ( ( 0xBE == ((const U8*)s)[1] ) && ( 0xD5 == ((const U8*)s)[2] ) ) && ( 0xB6 == ((const U8*)s)[3] ) ) ? 0xFB16 : 0 )\
738     : 0 )
739
740
741 /*** GENERATED CODE ***/
742 #define what_MULTI_CHAR_FOLD_utf8_safe_part5_(s,e)                          \
743 ( ((e)-(s) > 2) ?                                                           \
744     ( ( ( ((const U8*)s)[0] & 0xDF ) == 'A' ) ?                             \
745         ( ( ( 0xCA == ((const U8*)s)[1] ) && ( 0xBE == ((const U8*)s)[2] ) ) ? 0x1E9A : 0 )\
746     : ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
747         ( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ?                         \
748             ( ( ( ((const U8*)s)[2] & 0xDF ) == 'I' ) ? 0xFB03              \
749             : ( ( ((const U8*)s)[2] & 0xDF ) == 'L' ) ? 0xFB04 : 0xFB00 )   \
750         : ( ( ((const U8*)s)[1] & 0xDF ) == 'I' ) ? 0xFB01                  \
751         : ( ( ((const U8*)s)[1] & 0xDF ) == 'L' ) ? 0xFB02 : 0 )            \
752     : ( ( ((const U8*)s)[0] & 0xDF ) == 'H' ) ?                             \
753         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0xB1 == ((const U8*)s)[2] ) ) ? 0x1E96 : 0 )\
754     : ( ( ((const U8*)s)[0] & 0xDF ) == 'I' ) ?                             \
755         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x87 == ((const U8*)s)[2] ) ) ? 0x130 : 0 )\
756     : ( ( ((const U8*)s)[0] & 0xDF ) == 'J' ) ?                             \
757         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8C == ((const U8*)s)[2] ) ) ? 0x1F0 : 0 )\
758     : ( ( ((const U8*)s)[0] & 0xDF ) == 'S' ) ?                             \
759         ( ( ( ((const U8*)s)[1] & 0xDF ) == 'S' ) ? 0xDF                    \
760         : ( ( ((const U8*)s)[1] & 0xDF ) == 'T' ) ? 0xFB05                  \
761         : ( ( 0xC5 == ((const U8*)s)[1] ) && ( 0xBF == ((const U8*)s)[2] ) ) ? 0xDF : 0 )\
762     : ( ( ((const U8*)s)[0] & 0xDF ) == 'T' ) ?                             \
763         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x88 == ((const U8*)s)[2] ) ) ? 0x1E97 : 0 )\
764     : ( ( ((const U8*)s)[0] & 0xDF ) == 'W' ) ?                             \
765         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8A == ((const U8*)s)[2] ) ) ? 0x1E98 : 0 )\
766     : ( ( ((const U8*)s)[0] & 0xDF ) == 'Y' ) ?                             \
767         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8A == ((const U8*)s)[2] ) ) ? 0x1E99 : 0 )\
768     : ( 0xC5 == ((const U8*)s)[0] ) ?                                       \
769         ( ( 0xBF == ((const U8*)s)[1] ) ?                                   \
770             ( ( ( ((const U8*)s)[2] & 0xDF ) == 'S' ) ? 0xDF                \
771             : ( ( ((const U8*)s)[2] & 0xDF ) == 'T' ) ? 0xFB05 : 0 )        \
772         : 0 )                                                               \
773     : ( ( ( 0xCA == ((const U8*)s)[0] ) && ( 0xBC == ((const U8*)s)[1] ) ) && ( ( ((const U8*)s)[2] & 0xDF ) == 'N' ) ) ? 0x149 : 0 )\
774 : ((e)-(s) > 1) ?                                                           \
775     ( ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
776         ( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ? 0xFB00                  \
777         : ( ( ((const U8*)s)[1] & 0xDF ) == 'I' ) ? 0xFB01                  \
778         : ( ( ((const U8*)s)[1] & 0xDF ) == 'L' ) ? 0xFB02 : 0 )            \
779     : ( ( ((const U8*)s)[0] & 0xDF ) == 'S' ) ?                             \
780         ( ( ( ((const U8*)s)[1] & 0xDF ) == 'S' ) ? 0xDF                    \
781         : ( ( ((const U8*)s)[1] & 0xDF ) == 'T' ) ? 0xFB05 : 0 )            \
782     : 0 )                                                                   \
783 : 0 )
784
785
786 /*** GENERATED CODE ***/
787 #define what_MULTI_CHAR_FOLD_utf8_safe_part6_(s,e)                          \
788 ( ( ( ((const U8*)s)[0] & 0xDF ) == 'A' ) ?                                 \
789         ( ( ( 0xCA == ((const U8*)s)[1] ) && ( 0xBE == ((const U8*)s)[2] ) ) ? 0x1E9A : 0 )\
790     : ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
791         ( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ?                         \
792             ( ( ( ((const U8*)s)[2] & 0xDF ) == 'I' ) ? 0xFB03              \
793             : ( ( ((const U8*)s)[2] & 0xDF ) == 'L' ) ? 0xFB04 : 0xFB00 )   \
794         : ( ( ((const U8*)s)[1] & 0xDF ) == 'I' ) ? 0xFB01                  \
795         : ( ( ((const U8*)s)[1] & 0xDF ) == 'L' ) ? 0xFB02 : 0 )            \
796     : ( ( ((const U8*)s)[0] & 0xDF ) == 'H' ) ?                             \
797         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0xB1 == ((const U8*)s)[2] ) ) ? 0x1E96 : 0 )\
798     : ( ( ((const U8*)s)[0] & 0xDF ) == 'I' ) ?                             \
799         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x87 == ((const U8*)s)[2] ) ) ? 0x130 : 0 )\
800     : ( ( ((const U8*)s)[0] & 0xDF ) == 'J' ) ?                             \
801         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8C == ((const U8*)s)[2] ) ) ? 0x1F0 : 0 )\
802     : ( ( ((const U8*)s)[0] & 0xDF ) == 'S' ) ?                             \
803         ( ( ( ((const U8*)s)[1] & 0xDF ) == 'S' ) ? 0xDF                    \
804         : ( ( ((const U8*)s)[1] & 0xDF ) == 'T' ) ? 0xFB05                  \
805         : ( ( 0xC5 == ((const U8*)s)[1] ) && ( 0xBF == ((const U8*)s)[2] ) ) ? 0xDF : 0 )\
806     : ( ( ((const U8*)s)[0] & 0xDF ) == 'T' ) ?                             \
807         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x88 == ((const U8*)s)[2] ) ) ? 0x1E97 : 0 )\
808     : ( ( ((const U8*)s)[0] & 0xDF ) == 'W' ) ?                             \
809         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8A == ((const U8*)s)[2] ) ) ? 0x1E98 : 0 )\
810     : ( ( ((const U8*)s)[0] & 0xDF ) == 'Y' ) ?                             \
811         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8A == ((const U8*)s)[2] ) ) ? 0x1E99 : 0 )\
812     : ( 0xC5 == ((const U8*)s)[0] ) ?                                       \
813         ( ( 0xBF == ((const U8*)s)[1] ) ?                                   \
814             ( ( ( ((const U8*)s)[2] & 0xDF ) == 'S' ) ? 0xDF                \
815             : ( ( ((const U8*)s)[2] & 0xDF ) == 'T' ) ? 0xFB05              \
816             : ( ( 0xC5 == ((const U8*)s)[2] ) && ( 0xBF == ((const U8*)s)[3] ) ) ? 0xDF : 0 )\
817         : 0 )                                                               \
818     : ( 0xCA == ((const U8*)s)[0] ) ?                                       \
819         ( ( ( 0xBC == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xDF ) == 'N' ) ) ? 0x149 : 0 )\
820     : ( 0xCE == ((const U8*)s)[0] ) ?                                       \
821         ( ( 0xAC == ((const U8*)s)[1] ) ?                                   \
822             ( ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 0x1FB4 : 0 )\
823         : ( 0xAE == ((const U8*)s)[1] ) ?                                   \
824             ( ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 0x1FC4 : 0 )\
825         : ( 0xB1 == ((const U8*)s)[1] ) ?                                   \
826             ( ( 0xCD == ((const U8*)s)[2] ) ?                               \
827                 ( ( 0x82 == ((const U8*)s)[3] ) ?                           \
828                     ( ( ( 0xCE == ((const U8*)s)[4] ) && ( 0xB9 == ((const U8*)s)[5] ) ) ? 0x1FB7 : 0x1FB6 )\
829                 : 0 )                                                       \
830             : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 0x1FB3 : 0 )\
831         : ( 0xB7 == ((const U8*)s)[1] ) ?                                   \
832             ( ( 0xCD == ((const U8*)s)[2] ) ?                               \
833                 ( ( 0x82 == ((const U8*)s)[3] ) ?                           \
834                     ( ( ( 0xCE == ((const U8*)s)[4] ) && ( 0xB9 == ((const U8*)s)[5] ) ) ? 0x1FC7 : 0x1FC6 )\
835                 : 0 )                                                       \
836             : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 0x1FC3 : 0 )\
837         : ( 0xB9 == ((const U8*)s)[1] ) ?                                   \
838             ( ( 0xCC == ((const U8*)s)[2] ) ?                               \
839                 ( ( 0x88 == ((const U8*)s)[3] ) ?                           \
840                     ( ( 0xCC == ((const U8*)s)[4] ) ?                       \
841                         ( ( 0x80 == ((const U8*)s)[5] ) ? 0x1FD2            \
842                         : ( 0x81 == ((const U8*)s)[5] ) ? 0x390 : 0 )       \
843                     : ( ( 0xCD == ((const U8*)s)[4] ) && ( 0x82 == ((const U8*)s)[5] ) ) ? 0x1FD7 : 0 )\
844                 : 0 )                                                       \
845             : ( ( 0xCD == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 0x1FD6 : 0 )\
846         : 0 )                                                               \
847     : ( 0xCF == ((const U8*)s)[0] ) ? what_MULTI_CHAR_FOLD_utf8_safe_part0_(s,e) : what_MULTI_CHAR_FOLD_utf8_safe_part1_(s,e) )
848
849
850 /*** GENERATED CODE ***/
851 #define what_MULTI_CHAR_FOLD_utf8_safe_part7_(s,e)                          \
852 ( ((e)-(s) > 4) ?                                                           \
853     ( ( ( ((const U8*)s)[0] & 0xDF ) == 'A' ) ?                             \
854         ( ( ( 0xCA == ((const U8*)s)[1] ) && ( 0xBE == ((const U8*)s)[2] ) ) ? 0x1E9A : 0 )\
855     : ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
856         ( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ?                         \
857             ( ( ( ((const U8*)s)[2] & 0xDF ) == 'I' ) ? 0xFB03              \
858             : ( ( ((const U8*)s)[2] & 0xDF ) == 'L' ) ? 0xFB04 : 0xFB00 )   \
859         : ( ( ((const U8*)s)[1] & 0xDF ) == 'I' ) ? 0xFB01                  \
860         : ( ( ((const U8*)s)[1] & 0xDF ) == 'L' ) ? 0xFB02 : 0 )            \
861     : ( ( ((const U8*)s)[0] & 0xDF ) == 'H' ) ?                             \
862         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0xB1 == ((const U8*)s)[2] ) ) ? 0x1E96 : 0 )\
863     : ( ( ((const U8*)s)[0] & 0xDF ) == 'I' ) ?                             \
864         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x87 == ((const U8*)s)[2] ) ) ? 0x130 : 0 )\
865     : ( ( ((const U8*)s)[0] & 0xDF ) == 'J' ) ?                             \
866         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8C == ((const U8*)s)[2] ) ) ? 0x1F0 : 0 )\
867     : ( ( ((const U8*)s)[0] & 0xDF ) == 'S' ) ?                             \
868         ( ( ( ((const U8*)s)[1] & 0xDF ) == 'S' ) ? 0xDF                    \
869         : ( ( ((const U8*)s)[1] & 0xDF ) == 'T' ) ? 0xFB05                  \
870         : ( ( 0xC5 == ((const U8*)s)[1] ) && ( 0xBF == ((const U8*)s)[2] ) ) ? 0xDF : 0 )\
871     : ( ( ((const U8*)s)[0] & 0xDF ) == 'T' ) ?                             \
872         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x88 == ((const U8*)s)[2] ) ) ? 0x1E97 : 0 )\
873     : ( ( ((const U8*)s)[0] & 0xDF ) == 'W' ) ?                             \
874         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8A == ((const U8*)s)[2] ) ) ? 0x1E98 : 0 )\
875     : ( ( ((const U8*)s)[0] & 0xDF ) == 'Y' ) ?                             \
876         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8A == ((const U8*)s)[2] ) ) ? 0x1E99 : 0 )\
877     : ( 0xC5 == ((const U8*)s)[0] ) ?                                       \
878         ( ( 0xBF == ((const U8*)s)[1] ) ?                                   \
879             ( ( ( ((const U8*)s)[2] & 0xDF ) == 'S' ) ? 0xDF                \
880             : ( ( ((const U8*)s)[2] & 0xDF ) == 'T' ) ? 0xFB05              \
881             : ( ( 0xC5 == ((const U8*)s)[2] ) && ( 0xBF == ((const U8*)s)[3] ) ) ? 0xDF : 0 )\
882         : 0 )                                                               \
883     : ( 0xCA == ((const U8*)s)[0] ) ?                                       \
884         ( ( ( 0xBC == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xDF ) == 'N' ) ) ? 0x149 : 0 )\
885     : ( 0xCE == ((const U8*)s)[0] ) ?                                       \
886         ( ( 0xAC == ((const U8*)s)[1] ) ?                                   \
887             ( ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 0x1FB4 : 0 )\
888         : ( 0xAE == ((const U8*)s)[1] ) ?                                   \
889             ( ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 0x1FC4 : 0 )\
890         : ( 0xB1 == ((const U8*)s)[1] ) ?                                   \
891             ( ( 0xCD == ((const U8*)s)[2] ) ?                               \
892                 ( ( 0x82 == ((const U8*)s)[3] ) ? 0x1FB6 : 0 )              \
893             : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 0x1FB3 : 0 )\
894         : ( 0xB7 == ((const U8*)s)[1] ) ?                                   \
895             ( ( 0xCD == ((const U8*)s)[2] ) ?                               \
896                 ( ( 0x82 == ((const U8*)s)[3] ) ? 0x1FC6 : 0 )              \
897             : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 0x1FC3 : 0 )\
898         : ( ( ( 0xB9 == ((const U8*)s)[1] ) && ( 0xCD == ((const U8*)s)[2] ) ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 0x1FD6 : 0 )\
899     : ( 0xCF == ((const U8*)s)[0] ) ? what_MULTI_CHAR_FOLD_utf8_safe_part2_(s,e) : what_MULTI_CHAR_FOLD_utf8_safe_part3_(s,e) )\
900 : ((e)-(s) > 3) ? what_MULTI_CHAR_FOLD_utf8_safe_part4_(s,e) : what_MULTI_CHAR_FOLD_utf8_safe_part5_(s,e) )
901
902
903 /*** GENERATED CODE ***/
904 #define what_MULTI_CHAR_FOLD_utf8_safe(s,e)                                 \
905 ( ((e)-(s) > 5) ? what_MULTI_CHAR_FOLD_utf8_safe_part6_(s,e) : what_MULTI_CHAR_FOLD_utf8_safe_part7_(s,e) )
906
907 /*
908         MULTI_CHAR_FOLD: multi-char strings that are folded to by a single character
909
910         %regcharclass_multi_char_folds::multi_char_folds('l', 'a')
911 */
912 /*** GENERATED CODE ***/
913 #define is_MULTI_CHAR_FOLD_latin1_safe(s,e)                                 \
914 ( ((e)-(s) > 2) ?                                                           \
915     ( ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
916         ( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ?                         \
917             ( ( ( ( ((const U8*)s)[2] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[2] & 0xDF ) == 'L' ) ) ? 3 : 2 )\
918         : ( ( ( ((const U8*)s)[1] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[1] & 0xDF ) == 'L' ) ) ? 2 : 0 )\
919     : ( ( ( ((const U8*)s)[0] & 0xDF ) == 'S' ) && ( inRANGE_helper_(U8, ((const U8*)s)[1], 'S', 'T') || inRANGE_helper_(U8, ((const U8*)s)[1], 's', 't') ) ) ? 2 : 0 )\
920 : ((e)-(s) > 1) ?                                                           \
921     ( ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
922         ( ( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) || ( ( ((const U8*)s)[1] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[1] & 0xDF ) == 'L' ) ) ? 2 : 0 )\
923     : ( ( ( ((const U8*)s)[0] & 0xDF ) == 'S' ) && ( inRANGE_helper_(U8, ((const U8*)s)[1], 'S', 'T') || inRANGE_helper_(U8, ((const U8*)s)[1], 's', 't') ) ) ? 2 : 0 )\
924 : 0 )
925
926 /*** GENERATED CODE ***/
927 #define what_MULTI_CHAR_FOLD_latin1_safe(s,e)                               \
928 ( ((e)-(s) > 2) ?                                                           \
929     ( ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
930         ( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ?                         \
931             ( ( ( ((const U8*)s)[2] & 0xDF ) == 'I' ) ? 0xFB03              \
932             : ( ( ((const U8*)s)[2] & 0xDF ) == 'L' ) ? 0xFB04 : 0xFB00 )   \
933         : ( ( ((const U8*)s)[1] & 0xDF ) == 'I' ) ? 0xFB01                  \
934         : ( ( ((const U8*)s)[1] & 0xDF ) == 'L' ) ? 0xFB02 : 0 )            \
935     : ( ( ((const U8*)s)[0] & 0xDF ) == 'S' ) ?                             \
936         ( ( ( ((const U8*)s)[1] & 0xDF ) == 'S' ) ? 0xDF                    \
937         : ( ( ((const U8*)s)[1] & 0xDF ) == 'T' ) ? 0xFB05 : 0 )            \
938     : 0 )                                                                   \
939 : ((e)-(s) > 1) ?                                                           \
940     ( ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
941         ( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ? 0xFB00                  \
942         : ( ( ((const U8*)s)[1] & 0xDF ) == 'I' ) ? 0xFB01                  \
943         : ( ( ((const U8*)s)[1] & 0xDF ) == 'L' ) ? 0xFB02 : 0 )            \
944     : ( ( ((const U8*)s)[0] & 0xDF ) == 'S' ) ?                             \
945         ( ( ( ((const U8*)s)[1] & 0xDF ) == 'S' ) ? 0xDF                    \
946         : ( ( ((const U8*)s)[1] & 0xDF ) == 'T' ) ? 0xFB05 : 0 )            \
947     : 0 )                                                                   \
948 : 0 )
949
950 /*
951         THREE_CHAR_FOLD: A three-character multi-char fold
952
953         %regcharclass_multi_char_folds::multi_char_folds('u', '3')
954 */
955 /*** GENERATED CODE ***/
956 #define is_THREE_CHAR_FOLD_utf8_safe(s,e)                                   \
957 ( ((e)-(s) > 5) ?                                                           \
958     ( ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
959         ( ( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) && ( ( ( ((const U8*)s)[2] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[2] & 0xDF ) == 'L' ) ) ) ? 3 : 0 )\
960     : ( 0xCE == ((const U8*)s)[0] ) ?                                       \
961         ( ( 0xB1 == ((const U8*)s)[1] || 0xB7 == ((const U8*)s)[1] ) ?      \
962             ( ( ( ( ( 0xCD == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) && ( 0xCE == ((const U8*)s)[4] ) ) && ( 0xB9 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
963         : ( ( ( 0xB9 == ((const U8*)s)[1] ) && ( 0xCC == ((const U8*)s)[2] ) ) && ( 0x88 == ((const U8*)s)[3] ) ) ? ( ( 0xCC == ((const U8*)s)[4] ) ?\
964                         ( ( inRANGE_helper_(U8, ((const U8*)s)[5], 0x80, 0x81) ) ? 6 : 0 )\
965                     : ( ( 0xCD == ((const U8*)s)[4] ) && ( 0x82 == ((const U8*)s)[5] ) ) ? 6 : 0 ) : 0 )\
966     : ( 0xCF == ((const U8*)s)[0] ) ?                                       \
967         ( ( 0x85 == ((const U8*)s)[1] ) ?                                   \
968             ( ( ( 0xCC == ((const U8*)s)[2] ) && ( 0x88 == ((const U8*)s)[3] || 0x93 == ((const U8*)s)[3] ) ) ? ( ( 0xCC == ((const U8*)s)[4] ) ?\
969                         ( ( inRANGE_helper_(U8, ((const U8*)s)[5], 0x80, 0x81) ) ? 6 : 0 )\
970                     : ( ( 0xCD == ((const U8*)s)[4] ) && ( 0x82 == ((const U8*)s)[5] ) ) ? 6 : 0 ) : 0 )\
971         : ( ( ( ( ( 0x89 == ((const U8*)s)[1] ) && ( 0xCD == ((const U8*)s)[2] ) ) && ( 0x82 == ((const U8*)s)[3] ) ) && ( 0xCE == ((const U8*)s)[4] ) ) && ( 0xB9 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
972     : 0 )                                                                   \
973 : ( ( ( ((e)-(s) > 2) && ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ) && ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ) && ( ( ( ((const U8*)s)[2] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[2] & 0xDF ) == 'L' ) ) ) ? 3 : 0 )
974
975 /*
976         THREE_CHAR_FOLD: A three-character multi-char fold
977
978         %regcharclass_multi_char_folds::multi_char_folds('l', '3')
979 */
980 /*** GENERATED CODE ***/
981 #define is_THREE_CHAR_FOLD_latin1_safe(s,e)                                 \
982 ( ( ( ( ( ((e) - (s)) >= 3 ) && ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ) && ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ) && ( ( ( ((const U8*)s)[2] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[2] & 0xDF ) == 'L' ) ) ) ? 3 : 0 )
983
984 /*
985         THREE_CHAR_FOLD_HEAD: The first two of three-character multi-char folds
986
987         %regcharclass_multi_char_folds::multi_char_folds('u', 'h')
988 */
989 /*** GENERATED CODE ***/
990 #define is_THREE_CHAR_FOLD_HEAD_utf8_safe(s,e)                              \
991 ( ((e)-(s) > 3) ?                                                           \
992     ( ( ( ( ((const U8*)s)[0] & 0xDF ) == 'A' ) || ( ( ((const U8*)s)[0] & 0xDE ) == 'H' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'J' ) || ( ( ((const U8*)s)[0] & 0xDB ) == 'S' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'T' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'Y' ) ) ? 1\
993     : ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
994         ( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ? 2 : 1 )                 \
995     : ( 0xC5 == ((const U8*)s)[0] ) ?                                       \
996         ( ( 0xBF == ((const U8*)s)[1] ) ? 2 : 0 )                           \
997     : ( 0xCA == ((const U8*)s)[0] ) ?                                       \
998         ( ( 0xBC == ((const U8*)s)[1] ) ? 2 : 0 )                           \
999     : ( 0xCE == ((const U8*)s)[0] ) ?                                       \
1000         ( ( ( ((const U8*)s)[1] & 0xFD ) == 0xAC ) ? 2                      \
1001         : ( 0xB1 == ((const U8*)s)[1] || 0xB7 == ((const U8*)s)[1] ) ?      \
1002             ( ( ( 0xCD == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 2 )\
1003         : ( 0xB9 == ((const U8*)s)[1] ) ?                                   \
1004             ( ( ( 0xCC == ((const U8*)s)[2] ) && ( 0x88 == ((const U8*)s)[3] ) ) ? 4 : 2 )\
1005         : 0 )                                                               \
1006     : ( 0xCF == ((const U8*)s)[0] ) ?                                       \
1007         ( ( 0x81 == ((const U8*)s)[1] || 0x8E == ((const U8*)s)[1] ) ? 2    \
1008         : ( 0x85 == ((const U8*)s)[1] ) ?                                   \
1009             ( ( ( 0xCC == ((const U8*)s)[2] ) && ( 0x88 == ((const U8*)s)[3] || 0x93 == ((const U8*)s)[3] ) ) ? 4 : 2 )\
1010         : ( 0x89 == ((const U8*)s)[1] ) ?                                   \
1011             ( ( ( 0xCD == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 2 )\
1012         : 0 )                                                               \
1013     : ( 0xD5 == ((const U8*)s)[0] ) ?                                       \
1014         ( ( 0xA5 == ((const U8*)s)[1] || 0xB4 == ((const U8*)s)[1] || 0xBE == ((const U8*)s)[1] ) ? 2 : 0 )\
1015     : ( 0xE1 == ((const U8*)s)[0] ) ?                                       \
1016         ( ( 0xBC == ((const U8*)s)[1] ) ?                                   \
1017             ( ( ( ((const U8*)s)[2] & 0xD8 ) == 0x80 ) ? 3 : 0 )            \
1018         : ( ( 0xBD == ((const U8*)s)[1] ) && ( ( ( ((const U8*)s)[2] & 0xF8 ) == 0xA0 ) || ( ( ((const U8*)s)[2] & 0xFB ) == 0xB0 ) || ((const U8*)s)[2] == 0xBC ) ) ? 3 : 0 )\
1019     : 0 )                                                                   \
1020 : ((e)-(s) > 2) ?                                                           \
1021     ( ( ( ( ((const U8*)s)[0] & 0xDF ) == 'A' ) || ( ( ((const U8*)s)[0] & 0xDE ) == 'H' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'J' ) || ( ( ((const U8*)s)[0] & 0xDB ) == 'S' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'T' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'Y' ) ) ? 1\
1022     : ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
1023         ( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ? 2 : 1 )                 \
1024     : ( 0xC5 == ((const U8*)s)[0] ) ?                                       \
1025         ( ( 0xBF == ((const U8*)s)[1] ) ? 2 : 0 )                           \
1026     : ( 0xCA == ((const U8*)s)[0] ) ?                                       \
1027         ( ( 0xBC == ((const U8*)s)[1] ) ? 2 : 0 )                           \
1028     : ( 0xCE == ((const U8*)s)[0] ) ?                                       \
1029         ( ( ( ( ((const U8*)s)[1] & 0xFD ) == 0xAC ) || ( ( ((const U8*)s)[1] & 0xF7 ) == 0xB1 ) || ((const U8*)s)[1] == 0xB7 ) ? 2 : 0 )\
1030     : ( 0xCF == ((const U8*)s)[0] ) ?                                       \
1031         ( ( ( ( ((const U8*)s)[1] & 0xFB ) == 0x81 ) || ((const U8*)s)[1] == 0x89 || ((const U8*)s)[1] == 0x8E ) ? 2 : 0 )\
1032     : ( 0xD5 == ((const U8*)s)[0] ) ?                                       \
1033         ( ( 0xA5 == ((const U8*)s)[1] || 0xB4 == ((const U8*)s)[1] || 0xBE == ((const U8*)s)[1] ) ? 2 : 0 )\
1034     : ( 0xE1 == ((const U8*)s)[0] ) ?                                       \
1035         ( ( 0xBC == ((const U8*)s)[1] ) ?                                   \
1036             ( ( ( ((const U8*)s)[2] & 0xD8 ) == 0x80 ) ? 3 : 0 )            \
1037         : ( ( 0xBD == ((const U8*)s)[1] ) && ( ( ( ((const U8*)s)[2] & 0xF8 ) == 0xA0 ) || ( ( ((const U8*)s)[2] & 0xFB ) == 0xB0 ) || ((const U8*)s)[2] == 0xBC ) ) ? 3 : 0 )\
1038     : 0 )                                                                   \
1039 : ((e)-(s) > 1) ?                                                           \
1040     ( ( ( ( ((const U8*)s)[0] & 0xDF ) == 'A' ) || ( ( ((const U8*)s)[0] & 0xDE ) == 'H' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'J' ) || ( ( ((const U8*)s)[0] & 0xDB ) == 'S' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'T' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'Y' ) ) ? 1\
1041     : ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
1042         ( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ? 2 : 1 )                 \
1043     : ( 0xC5 == ((const U8*)s)[0] ) ?                                       \
1044         ( ( 0xBF == ((const U8*)s)[1] ) ? 2 : 0 )                           \
1045     : ( 0xCA == ((const U8*)s)[0] ) ?                                       \
1046         ( ( 0xBC == ((const U8*)s)[1] ) ? 2 : 0 )                           \
1047     : ( 0xCE == ((const U8*)s)[0] ) ?                                       \
1048         ( ( ( ( ((const U8*)s)[1] & 0xFD ) == 0xAC ) || ( ( ((const U8*)s)[1] & 0xF7 ) == 0xB1 ) || ((const U8*)s)[1] == 0xB7 ) ? 2 : 0 )\
1049     : ( 0xCF == ((const U8*)s)[0] ) ?                                       \
1050         ( ( ( ( ((const U8*)s)[1] & 0xFB ) == 0x81 ) || ((const U8*)s)[1] == 0x89 || ((const U8*)s)[1] == 0x8E ) ? 2 : 0 )\
1051     : ( ( 0xD5 == ((const U8*)s)[0] ) && ( 0xA5 == ((const U8*)s)[1] || 0xB4 == ((const U8*)s)[1] || 0xBE == ((const U8*)s)[1] ) ) ? 2 : 0 )\
1052 : ((e)-(s) > 0) ?                                                           \
1053     ( ( ( ((const U8*)s)[0] & 0xDF ) == 'A' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) || ( ( ((const U8*)s)[0] & 0xDE ) == 'H' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'J' ) || ( ( ((const U8*)s)[0] & 0xDB ) == 'S' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'T' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'Y' ) )\
1054 : 0 )
1055
1056 /*
1057         THREE_CHAR_FOLD_HEAD: The first two of three-character multi-char folds
1058
1059         %regcharclass_multi_char_folds::multi_char_folds('l', 'h')
1060 */
1061 /*** GENERATED CODE ***/
1062 #define is_THREE_CHAR_FOLD_HEAD_latin1_safe(s,e)                            \
1063 ( ((e)-(s) > 1) ?                                                           \
1064     ( ( ( ( ((const U8*)s)[0] & 0xDF ) == 'A' ) || ( ( ((const U8*)s)[0] & 0xDE ) == 'H' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'J' ) || ( ( ((const U8*)s)[0] & 0xDB ) == 'S' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'T' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'Y' ) ) ? 1\
1065     : ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
1066         ( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ? 2 : 1 )                 \
1067     : 0 )                                                                   \
1068 : ((e)-(s) > 0) ?                                                           \
1069     ( ( ( ((const U8*)s)[0] & 0xDF ) == 'A' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) || ( ( ((const U8*)s)[0] & 0xDE ) == 'H' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'J' ) || ( ( ((const U8*)s)[0] & 0xDB ) == 'S' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'T' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'Y' ) )\
1070 : 0 )
1071
1072 /*
1073         FOLDS_TO_MULTI: characters that fold to multi-char strings
1074
1075         \p{_Perl_Folds_To_Multi_Char}
1076 */
1077 /*** GENERATED CODE ***/
1078 #define is_FOLDS_TO_MULTI_utf8(s)                                           \
1079 ( ( 0xC3 == ((const U8*)s)[0] ) ?                                           \
1080     ( ( 0x9F == ((const U8*)s)[1] ) ? 2 : 0 )                               \
1081 : ( 0xC4 == ((const U8*)s)[0] || 0xC7 == ((const U8*)s)[0] ) ?              \
1082     ( ( 0xB0 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
1083 : ( 0xC5 == ((const U8*)s)[0] ) ?                                           \
1084     ( ( 0x89 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
1085 : ( 0xCE == ((const U8*)s)[0] ) ?                                           \
1086     ( ( ( ((const U8*)s)[1] & 0xDF ) == 0x90 ) ? 2 : 0 )                    \
1087 : ( 0xD6 == ((const U8*)s)[0] ) ?                                           \
1088     ( ( 0x87 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
1089 : ( 0xE1 == ((const U8*)s)[0] ) ?                                           \
1090     ( ( 0xBA == ((const U8*)s)[1] ) ?                                       \
1091         ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x96, 0x9A) || 0x9E == ((const U8*)s)[2] ) ? 3 : 0 )\
1092     : ( 0xBD == ((const U8*)s)[1] ) ?                                       \
1093         ( ( ( ((const U8*)s)[2] & 0xF9 ) == 0x90 ) ? 3 : 0 )                \
1094     : ( 0xBE == ((const U8*)s)[1] ) ?                                       \
1095         ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x80, 0xAF) || inRANGE_helper_(U8, ((const U8*)s)[2], 0xB2, 0xB4) || inRANGE_helper_(U8, ((const U8*)s)[2], 0xB6, 0xB7) || 0xBC == ((const U8*)s)[2] ) ? 3 : 0 )\
1096     : ( ( 0xBF == ((const U8*)s)[1] ) && ( ( ( ((const U8*)s)[2] & 0xCA ) == 0x82 ) || ( ( ((const U8*)s)[2] & 0xF7 ) == 0x84 ) || ((const U8*)s)[2] == 0xA4 || ( ( ((const U8*)s)[2] & 0xF7 ) == 0xB4 ) ) ) ? 3 : 0 )\
1097 : ( ( ( 0xEF == ((const U8*)s)[0] ) && ( 0xAC == ((const U8*)s)[1] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x80, 0x86) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x93, 0x97) ) ) ? 3 : 0 )
1098
1099 /*
1100         PROBLEMATIC_LOCALE_FOLD: characters whose fold is problematic under locale
1101
1102         \p{_Perl_Problematic_Locale_Folds}
1103 */
1104 /*** GENERATED CODE ***/
1105 #define is_PROBLEMATIC_LOCALE_FOLD_utf8(s)                                  \
1106 ( ( ((const U8*)s)[0] <= 0x7F ) ? 1                                         \
1107 : ( inRANGE_helper_(U8, ((const U8*)s)[0], 0xC2, 0xC3) ) ?                  \
1108     2                                                                       \
1109 : ( 0xC4 == ((const U8*)s)[0] ) ?                                           \
1110     ( ( inRANGE_helper_(U8, ((const U8*)s)[1], 0xB0, 0xB1) ) ? 2 : 0 )      \
1111 : ( 0xC5 == ((const U8*)s)[0] ) ?                                           \
1112     ( ( 0x89 == ((const U8*)s)[1] || 0xB8 == ((const U8*)s)[1] || 0xBF == ((const U8*)s)[1] ) ? 2 : 0 )\
1113 : ( 0xC7 == ((const U8*)s)[0] ) ?                                           \
1114     ( ( 0xB0 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
1115 : ( 0xCC == ((const U8*)s)[0] ) ?                                           \
1116     ( ( 0x87 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
1117 : ( 0xCE == ((const U8*)s)[0] ) ?                                           \
1118     ( ( ( ((const U8*)s)[1] & 0xDF ) == 0x9C ) ? 2 : 0 )                    \
1119 : ( 0xE1 == ((const U8*)s)[0] ) ?                                           \
1120     ( ( ( 0xBA == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x96, 0x9A) || 0x9E == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1121 : ( 0xE2 == ((const U8*)s)[0] ) ?                                           \
1122     ( ( ( 0x84 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0xAA, 0xAB) ) ) ? 3 : 0 )\
1123 : ( ( ( 0xEF == ((const U8*)s)[0] ) && ( 0xAC == ((const U8*)s)[1] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x80, 0x86) ) ) ? 3 : 0 )
1124
1125 /*** GENERATED CODE ***/
1126 #define is_PROBLEMATIC_LOCALE_FOLD_cp(cp)                                   \
1127 ( cp <= 0xFF || ( 0xFF < cp &&                                              \
1128 ( inRANGE_helper_(UV, cp, 0x130, 0x131) || ( 0x131 < cp &&                  \
1129 ( 0x149 == cp || ( 0x149 < cp &&                                            \
1130 ( 0x178 == cp || ( 0x178 < cp &&                                            \
1131 ( 0x17F == cp || ( 0x17F < cp &&                                            \
1132 ( 0x1F0 == cp || ( 0x1F0 < cp &&                                            \
1133 ( 0x307 == cp || ( 0x307 < cp &&                                            \
1134 ( 0x39C == cp || ( 0x39C < cp &&                                            \
1135 ( 0x3BC == cp || ( 0x3BC < cp &&                                            \
1136 ( inRANGE_helper_(UV, cp, 0x1E96, 0x1E9A) || ( 0x1E9A < cp &&               \
1137 ( 0x1E9E == cp || ( 0x1E9E < cp &&                                          \
1138 ( inRANGE_helper_(UV, cp, 0x212A, 0x212B) || inRANGE_helper_(UV, cp, 0xFB00, 0xFB06) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )
1139
1140 /*
1141         PROBLEMATIC_LOCALE_FOLDEDS_START: The first folded character of folds which are problematic under locale
1142
1143         \p{_Perl_Problematic_Locale_Foldeds_Start}
1144 */
1145 /*** GENERATED CODE ***/
1146 #define is_PROBLEMATIC_LOCALE_FOLDEDS_START_utf8(s)                         \
1147 ( ( ((const U8*)s)[0] <= 0x7F ) ? 1                                         \
1148 : ( inRANGE_helper_(U8, ((const U8*)s)[0], 0xC2, 0xC3) ) ?                  \
1149     2                                                                       \
1150 : ( 0xC4 == ((const U8*)s)[0] ) ?                                           \
1151     ( ( inRANGE_helper_(U8, ((const U8*)s)[1], 0xB0, 0xB1) ) ? 2 : 0 )      \
1152 : ( 0xC5 == ((const U8*)s)[0] ) ?                                           \
1153     ( ( 0x89 == ((const U8*)s)[1] || 0xB8 == ((const U8*)s)[1] || 0xBF == ((const U8*)s)[1] ) ? 2 : 0 )\
1154 : ( 0xC7 == ((const U8*)s)[0] ) ?                                           \
1155     ( ( 0xB0 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
1156 : ( 0xCA == ((const U8*)s)[0] ) ?                                           \
1157     ( ( 0xBC == ((const U8*)s)[1] ) ? 2 : 0 )                               \
1158 : ( 0xCE == ((const U8*)s)[0] ) ?                                           \
1159     ( ( ( ((const U8*)s)[1] & 0xDF ) == 0x9C ) ? 2 : 0 )                    \
1160 : ( 0xE1 == ((const U8*)s)[0] ) ?                                           \
1161     ( ( ( 0xBA == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x96, 0x9A) || 0x9E == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1162 : ( 0xE2 == ((const U8*)s)[0] ) ?                                           \
1163     ( ( ( 0x84 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0xAA, 0xAB) ) ) ? 3 : 0 )\
1164 : ( ( ( 0xEF == ((const U8*)s)[0] ) && ( 0xAC == ((const U8*)s)[1] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x80, 0x86) ) ) ? 3 : 0 )
1165
1166 /*** GENERATED CODE ***/
1167 #define is_PROBLEMATIC_LOCALE_FOLDEDS_START_cp(cp)                          \
1168 ( cp <= 0xFF || ( 0xFF < cp &&                                              \
1169 ( inRANGE_helper_(UV, cp, 0x130, 0x131) || ( 0x131 < cp &&                  \
1170 ( 0x149 == cp || ( 0x149 < cp &&                                            \
1171 ( 0x178 == cp || ( 0x178 < cp &&                                            \
1172 ( 0x17F == cp || ( 0x17F < cp &&                                            \
1173 ( 0x1F0 == cp || ( 0x1F0 < cp &&                                            \
1174 ( 0x2BC == cp || ( 0x2BC < cp &&                                            \
1175 ( 0x39C == cp || ( 0x39C < cp &&                                            \
1176 ( 0x3BC == cp || ( 0x3BC < cp &&                                            \
1177 ( inRANGE_helper_(UV, cp, 0x1E96, 0x1E9A) || ( 0x1E9A < cp &&               \
1178 ( 0x1E9E == cp || ( 0x1E9E < cp &&                                          \
1179 ( inRANGE_helper_(UV, cp, 0x212A, 0x212B) || inRANGE_helper_(UV, cp, 0xFB00, 0xFB06) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )
1180
1181 /*
1182         PATWS: pattern white space
1183
1184         \p{_Perl_PatWS}
1185 */
1186 /*** GENERATED CODE ***/
1187 #define is_PATWS_safe(s,e,is_utf8)                                          \
1188 ( ( LIKELY((e) > (s)) ) ?                                                   \
1189     ( ( inRANGE_helper_(U8, ((const U8*)s)[0], '\t', '\r') || ' ' == ((const U8*)s)[0] ) ? 1\
1190     : (! is_utf8 ) ?                                                        \
1191             ( 0x85 == ((const U8*)s)[0] )                                   \
1192         : ( LIKELY(((e) - (s)) >= UTF8SKIP(s)) ) ?                          \
1193             ( ( 0xC2 == ((const U8*)s)[0] ) ?                               \
1194                 ( ( 0x85 == ((const U8*)s)[1] ) ? 2 : 0 )                   \
1195             : ( ( ( 0xE2 == ((const U8*)s)[0] ) && ( 0x80 == ((const U8*)s)[1] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x8E, 0x8F) || inRANGE_helper_(U8, ((const U8*)s)[2], 0xA8, 0xA9) ) ) ? 3 : 0 )\
1196         : 0 )                                                               \
1197 : 0 )
1198
1199 /*
1200         HANGUL_ED: Hangul syllables whose first character is \xED
1201
1202         0xD000 - 0xD7FF
1203 */
1204 /*** GENERATED CODE ***/
1205 #define is_HANGUL_ED_utf8_safe(s,e)                                         \
1206 ( ( ( ( ( ((e) - (s)) >= 3 ) && ( 0xED == ((const U8*)s)[0] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x80, 0x9F) ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x80, 0xBF) ) ) ? 3 : 0 )
1207
1208 #endif  /* ASCII/Latin1 */
1209
1210 #if 'A' == 193 /* EBCDIC 1047 */ \
1211      && '\\' == 224 && '[' == 173 && ']' == 189 && '{' == 192 && '}' == 208 \
1212      && '^' == 95 && '~' == 161 && '!' == 90 && '#' == 123 && '|' == 79 \
1213      && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
1214 /*
1215         LNBREAK: Line Break: \R
1216
1217         "\x0D\x0A"      # CRLF - Network (Windows) line ending
1218         \p{VertSpace}
1219 */
1220 /*** GENERATED CODE ***/
1221 #define is_LNBREAK_safe(s,e,is_utf8)                                        \
1222 ( ((e)-(s) > 2) ?                                                           \
1223     ( ( inRANGE_helper_(U8, ((const U8*)s)[0], '\v', '\f') || '\n' == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] ) ? 1\
1224     : ( '\r' == ((const U8*)s)[0] ) ?                                       \
1225         ( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
1226     : ( ( ( ( is_utf8 ) && ( 0xCA == ((const U8*)s)[0] ) ) && ( 0x42 == ((const U8*)s)[1] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x49, 0x4A) ) ) ? 3 : 0 )\
1227 : ((e)-(s) > 1) ?                                                           \
1228     ( ( inRANGE_helper_(U8, ((const U8*)s)[0], '\v', '\f') || '\n' == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] ) ? 1\
1229     : ( '\r' == ((const U8*)s)[0] ) ?                                       \
1230         ( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
1231     : 0 )                                                                   \
1232 : ((e)-(s) > 0) ?                                                           \
1233     ( inRANGE_helper_(U8, ((const U8*)s)[0], '\v', '\r') || '\n' == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] )\
1234 : 0 )
1235
1236 /*** GENERATED CODE ***/
1237 #define is_LNBREAK_utf8_safe(s,e)                                           \
1238 ( ((e)-(s) > 2) ?                                                           \
1239     ( ( inRANGE_helper_(U8, ((const U8*)s)[0], '\v', '\f') || '\n' == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] ) ? 1\
1240     : ( '\r' == ((const U8*)s)[0] ) ?                                       \
1241         ( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
1242     : ( ( ( 0xCA == ((const U8*)s)[0] ) && ( 0x42 == ((const U8*)s)[1] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x49, 0x4A) ) ) ? 3 : 0 )\
1243 : ((e)-(s) > 1) ?                                                           \
1244     ( ( inRANGE_helper_(U8, ((const U8*)s)[0], '\v', '\f') || '\n' == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] ) ? 1\
1245     : ( '\r' == ((const U8*)s)[0] ) ?                                       \
1246         ( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
1247     : 0 )                                                                   \
1248 : ((e)-(s) > 0) ?                                                           \
1249     ( inRANGE_helper_(U8, ((const U8*)s)[0], '\v', '\r') || '\n' == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] )\
1250 : 0 )
1251
1252 /*** GENERATED CODE ***/
1253 #define is_LNBREAK_latin1_safe(s,e)                                         \
1254 ( ((e)-(s) > 1) ?                                                           \
1255     ( ( inRANGE_helper_(U8, ((const U8*)s)[0], '\v', '\f') || '\n' == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] ) ? 1\
1256     : ( '\r' == ((const U8*)s)[0] ) ?                                       \
1257         ( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
1258     : 0 )                                                                   \
1259 : ((e)-(s) > 0) ?                                                           \
1260     ( inRANGE_helper_(U8, ((const U8*)s)[0], '\v', '\r') || '\n' == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] )\
1261 : 0 )
1262
1263 /*
1264         HORIZWS: Horizontal Whitespace: \h \H
1265
1266         \p{HorizSpace}
1267 */
1268 /*** GENERATED CODE ***/
1269 #define is_HORIZWS_high(s)                                                  \
1270 ( ( 0xBC == ((const U8*)s)[0] ) ?                                           \
1271     ( ( ( 0x63 == ((const U8*)s)[1] ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1272 : ( 0xCA == ((const U8*)s)[0] ) ?                                           \
1273     ( ( 0x41 == ((const U8*)s)[1] ) ?                                       \
1274         ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x4A) || 0x51 == ((const U8*)s)[2] ) ? 3 : 0 )\
1275     : ( 0x42 == ((const U8*)s)[1] ) ?                                       \
1276         ( ( 0x56 == ((const U8*)s)[2] ) ? 3 : 0 )                           \
1277     : ( ( 0x43 == ((const U8*)s)[1] ) && ( 0x73 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1278 : ( ( ( 0xCE == ((const U8*)s)[0] ) && ( 0x41 == ((const U8*)s)[1] ) ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )
1279
1280 /*** GENERATED CODE ***/
1281 #define is_HORIZWS_cp_high(cp)                                              \
1282 ( 0x1680 == cp || ( 0x1680 < cp &&                                          \
1283 ( inRANGE_helper_(UV, cp, 0x2000, 0x200A) || ( 0x200A < cp &&               \
1284 ( 0x202F == cp || ( 0x202F < cp &&                                          \
1285 ( 0x205F == cp || 0x3000 == cp ) ) ) ) ) ) )
1286
1287 /*
1288         VERTWS: Vertical Whitespace: \v \V
1289
1290         \p{VertSpace}
1291 */
1292 /*** GENERATED CODE ***/
1293 #define is_VERTWS_high(s)                                                   \
1294 ( ( ( ( 0xCA == ((const U8*)s)[0] ) && ( 0x42 == ((const U8*)s)[1] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x49, 0x4A) ) ) ? 3 : 0 )
1295
1296 /*** GENERATED CODE ***/
1297 #define is_VERTWS_cp_high(cp)                                               \
1298 ( inRANGE_helper_(UV, cp, 0x2028, 0x2029) )
1299
1300 /*
1301         XDIGIT: Hexadecimal digits
1302
1303         \p{XDigit}
1304 */
1305 /*** GENERATED CODE ***/
1306 #define is_XDIGIT_high(s)                                                   \
1307 ( ( ( 0xDD == ((const U8*)s)[0] ) && ( 0x73 == ((const U8*)s)[1] ) ) ? ( ( 0x67 == ((const U8*)s)[2] ) ?\
1308             ( ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x57, 0x59) || inRANGE_helper_(U8, ((const U8*)s)[3], 0x62, 0x68) ) ? 4 : 0 )\
1309         : ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x68, 0x69) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x42, 0x47) ) ) ? 4 : 0 ) : 0 )
1310
1311 /*** GENERATED CODE ***/
1312 #define is_XDIGIT_cp_high(cp)                                               \
1313 ( inRANGE_helper_(UV, cp, 0xFF10, 0xFF19) || ( 0xFF19 < cp &&               \
1314 ( inRANGE_helper_(UV, cp, 0xFF21, 0xFF26) || inRANGE_helper_(UV, cp, 0xFF41, 0xFF46) ) ) )
1315
1316 /*
1317         XPERLSPACE: \p{XPerlSpace}
1318
1319         \p{XPerlSpace}
1320 */
1321 /*** GENERATED CODE ***/
1322 #define is_XPERLSPACE_high(s)                                               \
1323 ( ( 0xBC == ((const U8*)s)[0] ) ?                                           \
1324     ( ( ( 0x63 == ((const U8*)s)[1] ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1325 : ( 0xCA == ((const U8*)s)[0] ) ?                                           \
1326     ( ( 0x41 == ((const U8*)s)[1] ) ?                                       \
1327         ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x4A) || 0x51 == ((const U8*)s)[2] ) ? 3 : 0 )\
1328     : ( 0x42 == ((const U8*)s)[1] ) ?                                       \
1329         ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x49, 0x4A) || 0x56 == ((const U8*)s)[2] ) ? 3 : 0 )\
1330     : ( ( 0x43 == ((const U8*)s)[1] ) && ( 0x73 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1331 : ( ( ( 0xCE == ((const U8*)s)[0] ) && ( 0x41 == ((const U8*)s)[1] ) ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )
1332
1333 /*** GENERATED CODE ***/
1334 #define is_XPERLSPACE_cp_high(cp)                                           \
1335 ( 0x1680 == cp || ( 0x1680 < cp &&                                          \
1336 ( inRANGE_helper_(UV, cp, 0x2000, 0x200A) || ( 0x200A < cp &&               \
1337 ( inRANGE_helper_(UV, cp, 0x2028, 0x2029) || ( 0x2029 < cp &&               \
1338 ( 0x202F == cp || ( 0x202F < cp &&                                          \
1339 ( 0x205F == cp || 0x3000 == cp ) ) ) ) ) ) ) ) )
1340
1341 /*
1342         NONCHAR: Non character code points
1343
1344         \p{_Perl_Nchar}
1345 */
1346 /*** GENERATED CODE ***/
1347 #define is_NONCHAR_utf8_safe(s,e)                                           \
1348 ( ( ( LIKELY((e) > (s)) ) && ( LIKELY(((e) - (s)) >= UTF8SKIP(s)) ) ) ? ( ( 0xDD == ((const U8*)s)[0] ) ?\
1349             ( ( 0x73 == ((const U8*)s)[1] ) ?                               \
1350                 ( ( 0x55 == ((const U8*)s)[2] ) ?                           \
1351                     ( ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x57, 0x59) || inRANGE_helper_(U8, ((const U8*)s)[3], 0x62, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[3], 0x70, 0x73) ) ? 4 : 0 )\
1352                 : ( 0x56 == ((const U8*)s)[2] ) ?                           \
1353                     ( ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x41, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[3], 0x51, 0x56) ) ? 4 : 0 )\
1354                 : ( ( 0x73 == ((const U8*)s)[2] ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x72, 0x73) ) ) ? 4 : 0 )\
1355             : 0 )                                                           \
1356         : ( 0xDF == ((const U8*)s)[0] || 0xEA == ((const U8*)s)[0] || 0xEC == ((const U8*)s)[0] ) ?\
1357             ( ( ( ( 0x73 == ((const U8*)s)[1] ) && ( 0x73 == ((const U8*)s)[2] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x72, 0x73) ) ) ? 4 : 0 )\
1358         : ( 0xED == ((const U8*)s)[0] ) ?                                   \
1359             ( ( ( ( ( ((const U8*)s)[1] == 0x4A || ((const U8*)s)[1] == 0x52 || ( ( ((const U8*)s)[1] & 0xFD ) == 0x54 ) || ((const U8*)s)[1] == 0x58 || ((const U8*)s)[1] == 0x62 || ( ( ((const U8*)s)[1] & 0xFD ) == 0x64 ) || ( ( ((const U8*)s)[1] & 0xFD ) == 0x68 ) || ( ( ((const U8*)s)[1] & 0xFD ) == 0x71 ) ) && ( 0x73 == ((const U8*)s)[2] ) ) && ( 0x73 == ((const U8*)s)[3] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[4], 0x72, 0x73) ) ) ? 5 : 0 )\
1360         : ( ( ( ( ( 0xEE == ((const U8*)s)[0] ) && ( 0x42 == ((const U8*)s)[1] ) ) && ( 0x73 == ((const U8*)s)[2] ) ) && ( 0x73 == ((const U8*)s)[3] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[4], 0x72, 0x73) ) ) ? 5 : 0 ) : 0 )
1361
1362 /*
1363         SURROGATE: Surrogate code points
1364
1365         \p{_Perl_Surrogate}
1366 */
1367 /*** GENERATED CODE ***/
1368 #define is_SURROGATE_utf8_safe(s,e)                                         \
1369 ( ( ( ( ( ( ((e) - (s)) >= 4 ) && ( 0xDD == ((const U8*)s)[0] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x65, 0x66) ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x51, 0x59) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x62, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x70, 0x73) ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x41, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[3], 0x51, 0x59) || inRANGE_helper_(U8, ((const U8*)s)[3], 0x62, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[3], 0x70, 0x73) ) ) ? 4 : 0 )
1370
1371 /*
1372         QUOTEMETA: Meta-characters that \Q should quote
1373
1374         \p{_Perl_Quotemeta}
1375 */
1376 /*** GENERATED CODE ***/
1377 #define is_QUOTEMETA_high_part0_(s)                                         \
1378 ( ( 0x63 == ((const U8*)s)[1] ) ?                                           \
1379         ( ( 0x41 == ((const U8*)s)[2] ) ? 3 : 0 )                           \
1380     : ( ( 0x71 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x63, 0x64) ) ) ? 3 : 0 )
1381
1382
1383 /*** GENERATED CODE ***/
1384 #define is_QUOTEMETA_high_part1_(s)                                         \
1385 ( ( 0xBE == ((const U8*)s)[0] ) ?                                           \
1386     ( ( ( 0x41 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x52, 0x55) ) ) ? 3 : 0 )\
1387 : ( 0xCA == ((const U8*)s)[0] ) ?                                           \
1388     ( ( 0x41 == ((const U8*)s)[1] || inRANGE_helper_(U8, ((const U8*)s)[1], 0x54, 0x59) || inRANGE_helper_(U8, ((const U8*)s)[1], 0x62, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[1], 0x70, 0x73) ) ?\
1389         ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x51, 0x59) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x62, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x70, 0x73) ) ? 3 : 0 )\
1390     : ( 0x42 == ((const U8*)s)[1] ) ?                                       \
1391         ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x51, 0x59) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x62, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x70, 0x72) ) ? 3 : 0 )\
1392     : ( 0x43 == ((const U8*)s)[1] ) ?                                       \
1393         ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x42, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x51, 0x59) || 0x62 == ((const U8*)s)[2] || inRANGE_helper_(U8, ((const U8*)s)[2], 0x64, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x70, 0x73) ) ? 3 : 0 )\
1394     : ( 0x44 == ((const U8*)s)[1] ) ?                                       \
1395         ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x51, 0x56) ) ? 3 : 0 )\
1396     : ( ( 0x53 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x57, 0x59) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x62, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x70, 0x73) ) ) ? 3 : 0 )\
1397 : ( 0xCB == ((const U8*)s)[0] ) ?                                           \
1398     ( ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x41, 0x43) || inRANGE_helper_(U8, ((const U8*)s)[1], 0x49, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[1], 0x51, 0x59) || inRANGE_helper_(U8, ((const U8*)s)[1], 0x62, 0x69) || inRANGE_helper_(U8, ((const U8*)s)[1], 0x71, 0x73) ) ?\
1399         ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x51, 0x59) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x62, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x70, 0x73) ) ? 3 : 0 )\
1400     : ( 0x6A == ((const U8*)s)[1] ) ?                                       \
1401         ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x51, 0x59) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x62, 0x64) ) ? 3 : 0 )\
1402     : ( ( 0x70 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x63, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x70, 0x73) ) ) ? 3 : 0 )\
1403 : ( 0xCC == ((const U8*)s)[0] ) ?                                           \
1404     ( ( ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x41, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[1], 0x51, 0x59) || inRANGE_helper_(U8, ((const U8*)s)[1], 0x62, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[1], 0x70, 0x73) ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x51, 0x59) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x62, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x70, 0x73) ) ) ? 3 : 0 )\
1405 : ( 0xCD == ((const U8*)s)[0] ) ?                                           \
1406     ( ( ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x57, 0x59) || 0x62 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x51, 0x59) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x62, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x70, 0x73) ) ) ? 3 : 0 )\
1407 : ( 0xCE == ((const U8*)s)[0] ) ?                                           \
1408     ( ( 0x41 == ((const U8*)s)[1] ) ?                                       \
1409         ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x44) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x49, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x51, 0x59) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x62, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x70, 0x73) ) ? 3 : 0 )\
1410     : ( 0x42 == ((const U8*)s)[1] ) ?                                       \
1411         ( ( 0x41 == ((const U8*)s)[2] || 0x57 == ((const U8*)s)[2] ) ? 3 : 0 )\
1412     : ( ( 0x52 == ((const U8*)s)[1] ) && ( 0x45 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1413 : ( 0xDD == ((const U8*)s)[0] ) ?                                           \
1414     ( ( 0x73 == ((const U8*)s)[1] ) ?                                       \
1415         ( ( 0x4A == ((const U8*)s)[2] ) ?                                   \
1416             ( ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x72, 0x73) ) ? 4 : 0 )\
1417         : ( 0x57 == ((const U8*)s)[2] ) ?                                   \
1418             ( ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x41, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[3], 0x51, 0x56) ) ? 4 : 0 )\
1419         : ( 0x59 == ((const U8*)s)[2] ) ?                                   \
1420             ( ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x46, 0x47) ) ? 4 : 0 )\
1421         : ( 0x66 == ((const U8*)s)[2] ) ?                                   \
1422             ( ( 0x73 == ((const U8*)s)[3] ) ? 4 : 0 )                       \
1423         : ( 0x71 == ((const U8*)s)[2] ) ?                                   \
1424             ( ( 0x41 == ((const U8*)s)[3] ) ? 4 : 0 )                       \
1425         : ( ( 0x73 == ((const U8*)s)[2] ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x57, 0x59) || inRANGE_helper_(U8, ((const U8*)s)[3], 0x62, 0x67) ) ) ? 4 : 0 )\
1426     : 0 )                                                                   \
1427 : ( 0xDF == ((const U8*)s)[0] ) ?                                           \
1428     ( ( 0x56 == ((const U8*)s)[1] ) ?                                       \
1429         ( ( ( 0x46 == ((const U8*)s)[2] ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x41, 0x44) ) ) ? 4 : 0 )\
1430     : ( ( ( 0x63 == ((const U8*)s)[1] ) && ( 0x52 == ((const U8*)s)[2] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x62, 0x69) ) ) ? 4 : 0 )\
1431 : ( ( ( ( ( 0xED == ((const U8*)s)[0] ) && ( 0x70 == ((const U8*)s)[1] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x44) ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x41, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[3], 0x51, 0x59) || inRANGE_helper_(U8, ((const U8*)s)[3], 0x62, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[3], 0x70, 0x73) ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[4], 0x41, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[4], 0x51, 0x59) || inRANGE_helper_(U8, ((const U8*)s)[4], 0x62, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[4], 0x70, 0x73) ) ) ? 5 : 0 )
1432
1433
1434 /*** GENERATED CODE ***/
1435 #define is_QUOTEMETA_high(s)                                                \
1436 ( ( 0xB1 == ((const U8*)s)[0] ) ?                                           \
1437     ( ( 0x56 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
1438 : ( 0xB8 == ((const U8*)s)[0] ) ?                                           \
1439     ( ( ( 0x57 == ((const U8*)s)[1] ) && ( 0x70 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1440 : ( 0xBB == ((const U8*)s)[0] ) ?                                           \
1441     ( ( 0x51 == ((const U8*)s)[1] ) ?                                       \
1442         ( ( 0x73 == ((const U8*)s)[2] ) ? 3 : 0 )                           \
1443     : ( ( 0x52 == ((const U8*)s)[1] ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1444 : ( 0xBC == ((const U8*)s)[0] ) ? is_QUOTEMETA_high_part0_(s) : is_QUOTEMETA_high_part1_(s) )
1445
1446 /*
1447         MULTI_CHAR_FOLD: multi-char strings that are folded to by a single character
1448
1449         %regcharclass_multi_char_folds::multi_char_folds('u', 'a')
1450 */
1451 /*** GENERATED CODE ***/
1452 #define is_MULTI_CHAR_FOLD_utf8_safe_part0_(s,e)                            \
1453 ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 3 : 0 )
1454
1455
1456 /*** GENERATED CODE ***/
1457 #define is_MULTI_CHAR_FOLD_utf8_safe_part1_(s,e)                            \
1458 ( ( 0x8F == ((const U8*)s)[0] ) ?                                           \
1459         ( ( 0x73 == ((const U8*)s)[1] ) ?                                   \
1460             ( ( 0x8F == ((const U8*)s)[2] ) ?                               \
1461                 ( ( 0x73 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
1462             : ( ( ((const U8*)s)[2] & 0xBE ) == 's' ) ? 3 : 0 )             \
1463         : 0 )                                                               \
1464     : ( ( ((const U8*)s)[0] & 0xBF ) == 'j' ) ?                             \
1465         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1466     : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
1467         ( ( 0x8F == ((const U8*)s)[1] ) ?                                   \
1468             ( ( 0x73 == ((const U8*)s)[2] ) ? 3 : 0 )                       \
1469         : ( ( ((const U8*)s)[1] & 0xBE ) == 's' ) ? 2 : 0 )                 \
1470     : ( ( ((const U8*)s)[0] & 0xBF ) == 't' ) ?                             \
1471         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1472     : ( ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ?\
1473         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1474     : ( 0xAB == ((const U8*)s)[0] ) ?                                       \
1475         ( ( ( 0x70 == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xBF ) == 'n' ) ) ? 3 : 0 )\
1476     : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
1477         ( ( 0x53 == ((const U8*)s)[1] || 0x55 == ((const U8*)s)[1] ) ?      \
1478             ( ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1479         : ( 0x58 == ((const U8*)s)[1] || 0x66 == ((const U8*)s)[1] ) ?      \
1480             ( ( 0xB1 == ((const U8*)s)[2] ) ?                               \
1481                 ( ( 0x43 == ((const U8*)s)[3] ) ?                           \
1482                     ( ( ( 0xB4 == ((const U8*)s)[4] ) && ( 0x68 == ((const U8*)s)[5] ) ) ? 6 : 4 )\
1483                 : 0 )                                                       \
1484             : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1485         : ( 0x68 == ((const U8*)s)[1] ) ?                                   \
1486             ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
1487                 ( ( 0x49 == ((const U8*)s)[3] ) ?                           \
1488                     ( ( 0xAF == ((const U8*)s)[4] ) ?                       \
1489                         ( ( inRANGE_helper_(U8, ((const U8*)s)[5], 0x41, 0x42) ) ? 6 : 0 )\
1490                     : ( ( 0xB1 == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
1491                 : 0 )                                                       \
1492             : ( ( 0xB1 == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1493         : 0 )                                                               \
1494     : ( 0xB5 == ((const U8*)s)[0] ) ?                                       \
1495         ( ( 0x42 == ((const U8*)s)[1] ) ?                                   \
1496             ( ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x62 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1497         : ( 0x46 == ((const U8*)s)[1] ) ?                                   \
1498             ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
1499                 ( ( 0x49 == ((const U8*)s)[3] ) ?                           \
1500                     ( ( 0xAF == ((const U8*)s)[4] ) ?                       \
1501                         ( ( inRANGE_helper_(U8, ((const U8*)s)[5], 0x41, 0x42) ) ? 6 : 0 )\
1502                     : ( ( 0xB1 == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
1503                 : ( 0x62 == ((const U8*)s)[3] ) ?                           \
1504                     ( ( 0xAF == ((const U8*)s)[4] ) ?                       \
1505                         ( ( inRANGE_helper_(U8, ((const U8*)s)[5], 0x41, 0x42) ) ? 6 : 4 )\
1506                     : ( ( 0xB1 == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 4 )\
1507                 : 0 )                                                       \
1508             : ( ( 0xB1 == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1509         : ( 0x4A == ((const U8*)s)[1] ) ?                                   \
1510             ( ( 0xB1 == ((const U8*)s)[2] ) ?                               \
1511                 ( ( 0x43 == ((const U8*)s)[3] ) ?                           \
1512                     ( ( ( 0xB4 == ((const U8*)s)[4] ) && ( 0x68 == ((const U8*)s)[5] ) ) ? 6 : 4 )\
1513                 : 0 )                                                       \
1514             : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1515         : ( ( ( 0x55 == ((const U8*)s)[1] ) && ( 0xB4 == ((const U8*)s)[2] ) ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1516     : ( 0xB8 == ((const U8*)s)[0] ) ?                                       \
1517         ( ( 0x52 == ((const U8*)s)[1] ) ?                                   \
1518             ( ( 0x46 == ((const U8*)s)[2] ) ?                               \
1519                 ( ( ( ( 0xB8 == ((const U8*)s)[3] ) && ( 0x53 == ((const U8*)s)[4] ) ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
1520             : ( 0x63 == ((const U8*)s)[2] ) ?                               \
1521                 ( ( ( ( 0xB8 == ((const U8*)s)[3] ) && ( 0x52 == ((const U8*)s)[4] ) ) && ( 0x46 == ((const U8*)s)[5] || 0x52 == ((const U8*)s)[5] || 0x54 == ((const U8*)s)[5] || 0x65 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
1522             : ( ( ( ( 0x72 == ((const U8*)s)[2] ) && ( 0xB8 == ((const U8*)s)[3] ) ) && ( 0x52 == ((const U8*)s)[4] ) ) && ( 0x65 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
1523         : 0 )                                                               \
1524     : ( 0xBF == ((const U8*)s)[0] ) ?                                       \
1525         ( ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x67, 0x68) ) ?          \
1526             ( ( ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x48) ) && ( 0xB4 == ((const U8*)s)[3] ) ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
1527         : ( ( ( ( 0x6A == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x48) || 0x57 == ((const U8*)s)[2] || 0x63 == ((const U8*)s)[2] || 0x70 == ((const U8*)s)[2] ) ) && ( 0xB4 == ((const U8*)s)[3] ) ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
1528     : 0 )
1529
1530
1531 /*** GENERATED CODE ***/
1532 #define is_MULTI_CHAR_FOLD_utf8_safe_part2_(s,e)                            \
1533 ( ( ( ((const U8*)s)[0] & 0xBF ) == 'a' ) ?                                 \
1534         ( ( ( 0xAB == ((const U8*)s)[1] ) && ( 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1535     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
1536         ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                         \
1537             ( ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ? 3 : 2 )\
1538         : ( ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ) ? 2 : 0 )\
1539     : ( ( ((const U8*)s)[0] & 0xBF ) == 'h' ) ?                             \
1540         ( ( ( 0xB0 == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1541     : ( ( ((const U8*)s)[0] & 0xBF ) == 'i' ) ?                             \
1542         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1543     : ( 0x8F == ((const U8*)s)[0] ) ?                                       \
1544         ( ( 0x73 == ((const U8*)s)[1] ) ?                                   \
1545             ( ( 0x8F == ((const U8*)s)[2] ) ?                               \
1546                 ( ( 0x73 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
1547             : ( ( ((const U8*)s)[2] & 0xBE ) == 's' ) ? 3 : 0 )             \
1548         : 0 )                                                               \
1549     : ( ( ((const U8*)s)[0] & 0xBF ) == 'j' ) ?                             \
1550         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1551     : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
1552         ( ( 0x8F == ((const U8*)s)[1] ) ?                                   \
1553             ( ( 0x73 == ((const U8*)s)[2] ) ? 3 : 0 )                       \
1554         : ( ( ((const U8*)s)[1] & 0xBE ) == 's' ) ? 2 : 0 )                 \
1555     : ( ( ((const U8*)s)[0] & 0xBF ) == 't' ) ?                             \
1556         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1557     : ( ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ?\
1558         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1559     : ( 0xAB == ((const U8*)s)[0] ) ?                                       \
1560         ( ( ( 0x70 == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xBF ) == 'n' ) ) ? 3 : 0 )\
1561     : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
1562         ( ( 0x53 == ((const U8*)s)[1] || 0x55 == ((const U8*)s)[1] ) ?      \
1563             ( ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1564         : ( 0x58 == ((const U8*)s)[1] || 0x66 == ((const U8*)s)[1] ) ?      \
1565             ( ( 0xB1 == ((const U8*)s)[2] ) ?                               \
1566                 ( ( 0x43 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
1567             : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1568         : ( ( ( 0x68 == ((const U8*)s)[1] ) && ( 0xB1 == ((const U8*)s)[2] ) ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1569     : ( 0xB5 == ((const U8*)s)[0] ) ?                                       \
1570         ( ( 0x42 == ((const U8*)s)[1] ) ?                                   \
1571             ( ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x62 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1572         : ( 0x46 == ((const U8*)s)[1] ) ?                                   \
1573             ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
1574                 ( ( 0x62 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
1575             : ( ( 0xB1 == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1576         : ( 0x4A == ((const U8*)s)[1] ) ?                                   \
1577             ( ( 0xB1 == ((const U8*)s)[2] ) ?                               \
1578                 ( ( 0x43 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
1579             : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1580         : ( ( ( 0x55 == ((const U8*)s)[1] ) && ( 0xB4 == ((const U8*)s)[2] ) ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1581     : ( 0xBF == ((const U8*)s)[0] ) ?                                       \
1582         ( ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x67, 0x68) ) ?          \
1583             ( ( ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x48) ) && ( 0xB4 == ((const U8*)s)[3] ) ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
1584         : ( ( ( ( 0x6A == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x48) || 0x57 == ((const U8*)s)[2] || 0x63 == ((const U8*)s)[2] || 0x70 == ((const U8*)s)[2] ) ) && ( 0xB4 == ((const U8*)s)[3] ) ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
1585     : 0 )
1586
1587
1588 /*** GENERATED CODE ***/
1589 #define is_MULTI_CHAR_FOLD_utf8_safe_part3_(s,e)                            \
1590 ( ((e)-(s) > 3) ?                                                           \
1591     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'a' ) ?                             \
1592         ( ( ( 0xAB == ((const U8*)s)[1] ) && ( 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1593     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
1594         ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                         \
1595             ( ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ? 3 : 2 )\
1596         : ( ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ) ? 2 : 0 )\
1597     : ( ( ((const U8*)s)[0] & 0xBF ) == 'h' ) ?                             \
1598         ( ( ( 0xB0 == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1599     : ( ( ((const U8*)s)[0] & 0xBF ) == 'i' ) ?                             \
1600         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1601     : ( 0x8F == ((const U8*)s)[0] ) ?                                       \
1602         ( ( 0x73 == ((const U8*)s)[1] ) ?                                   \
1603             ( ( 0x8F == ((const U8*)s)[2] ) ?                               \
1604                 ( ( 0x73 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
1605             : ( ( ((const U8*)s)[2] & 0xBE ) == 's' ) ? 3 : 0 )             \
1606         : 0 )                                                               \
1607     : ( ( ((const U8*)s)[0] & 0xBF ) == 'j' ) ?                             \
1608         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1609     : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
1610         ( ( 0x8F == ((const U8*)s)[1] ) ?                                   \
1611             ( ( 0x73 == ((const U8*)s)[2] ) ? 3 : 0 )                       \
1612         : ( ( ((const U8*)s)[1] & 0xBE ) == 's' ) ? 2 : 0 )                 \
1613     : ( ( ((const U8*)s)[0] & 0xBF ) == 't' ) ?                             \
1614         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1615     : ( ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ?\
1616         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1617     : ( 0xAB == ((const U8*)s)[0] ) ?                                       \
1618         ( ( ( 0x70 == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xBF ) == 'n' ) ) ? 3 : 0 )\
1619     : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
1620         ( ( 0x53 == ((const U8*)s)[1] || 0x55 == ((const U8*)s)[1] ) ?      \
1621             ( ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1622         : ( 0x58 == ((const U8*)s)[1] || 0x66 == ((const U8*)s)[1] ) ?      \
1623             ( ( 0xB1 == ((const U8*)s)[2] ) ?                               \
1624                 ( ( 0x43 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
1625             : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1626         : ( ( ( 0x68 == ((const U8*)s)[1] ) && ( 0xB1 == ((const U8*)s)[2] ) ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1627     : ( 0xB5 == ((const U8*)s)[0] ) ?                                       \
1628         ( ( 0x42 == ((const U8*)s)[1] ) ?                                   \
1629             ( ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x62 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1630         : ( 0x46 == ((const U8*)s)[1] ) ?                                   \
1631             ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
1632                 ( ( 0x62 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
1633             : ( ( 0xB1 == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1634         : ( 0x4A == ((const U8*)s)[1] ) ?                                   \
1635             ( ( 0xB1 == ((const U8*)s)[2] ) ?                               \
1636                 ( ( 0x43 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
1637             : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1638         : ( ( ( 0x55 == ((const U8*)s)[1] ) && ( 0xB4 == ((const U8*)s)[2] ) ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1639     : 0 )                                                                   \
1640 : ((e)-(s) > 2) ?                                                           \
1641     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'a' ) ?                             \
1642         ( ( ( 0xAB == ((const U8*)s)[1] ) && ( 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1643     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
1644         ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                         \
1645             ( ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ? 3 : 2 )\
1646         : ( ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ) ? 2 : 0 )\
1647     : ( ( ((const U8*)s)[0] & 0xBF ) == 'h' ) ?                             \
1648         ( ( ( 0xB0 == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1649     : ( ( ((const U8*)s)[0] & 0xBF ) == 'i' ) ?                             \
1650         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1651     : ( 0x8F == ((const U8*)s)[0] ) ?                                       \
1652         ( ( ( 0x73 == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xBE ) == 's' ) ) ? 3 : 0 )\
1653     : ( ( ((const U8*)s)[0] & 0xBF ) == 'j' ) ?                             \
1654         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1655     : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
1656         ( ( 0x8F == ((const U8*)s)[1] ) ?                                   \
1657             ( ( 0x73 == ((const U8*)s)[2] ) ? 3 : 0 )                       \
1658         : ( ( ((const U8*)s)[1] & 0xBE ) == 's' ) ? 2 : 0 )                 \
1659     : ( ( ((const U8*)s)[0] & 0xBF ) == 't' ) ?                             \
1660         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1661     : ( ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ?\
1662         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1663     : ( ( ( 0xAB == ((const U8*)s)[0] ) && ( 0x70 == ((const U8*)s)[1] ) ) && ( ( ((const U8*)s)[2] & 0xBF ) == 'n' ) ) ? 3 : 0 )\
1664 : ((e)-(s) > 1) ?                                                           \
1665     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
1666         ( ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ) ? 2 : 0 )\
1667     : ( ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) && ( ( ((const U8*)s)[1] & 0xBE ) == 's' ) ) ? 2 : 0 )\
1668 : 0 )
1669
1670
1671 /*** GENERATED CODE ***/
1672 #define is_MULTI_CHAR_FOLD_utf8_safe(s,e)                                   \
1673 ( ((e)-(s) > 5) ?                                                           \
1674     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'a' ) ?                             \
1675         ( ( ( 0xAB == ((const U8*)s)[1] ) && ( 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1676     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
1677         ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                         \
1678             ( ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ? 3 : 2 )\
1679         : ( ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ) ? 2 : 0 )\
1680     : ( ( ((const U8*)s)[0] & 0xBF ) == 'h' ) ?                             \
1681         ( ( ( 0xB0 == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1682     : ( ( ((const U8*)s)[0] & 0xBF ) == 'i' ) ? is_MULTI_CHAR_FOLD_utf8_safe_part0_(s,e) : is_MULTI_CHAR_FOLD_utf8_safe_part1_(s,e) )\
1683 : ((e)-(s) > 4) ? is_MULTI_CHAR_FOLD_utf8_safe_part2_(s,e) : is_MULTI_CHAR_FOLD_utf8_safe_part3_(s,e) )
1684
1685 /*** GENERATED CODE ***/
1686 #define what_MULTI_CHAR_FOLD_utf8_safe_part0_(s,e)                          \
1687 ( ( 0x52 == ((const U8*)s)[1] ) ?                                           \
1688             ( ( 0x46 == ((const U8*)s)[2] ) ?                               \
1689                 ( ( ( ( 0xB8 == ((const U8*)s)[3] ) && ( 0x53 == ((const U8*)s)[4] ) ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 0x587 : 0 )\
1690             : ( 0x63 == ((const U8*)s)[2] ) ?                               \
1691                 ( ( ( 0xB8 == ((const U8*)s)[3] ) && ( 0x52 == ((const U8*)s)[4] ) ) ? ( ( 0x46 == ((const U8*)s)[5] ) ? 0xFB14\
1692                         : ( 0x52 == ((const U8*)s)[5] ) ? 0xFB15            \
1693                         : ( 0x54 == ((const U8*)s)[5] ) ? 0xFB17            \
1694                         : ( 0x65 == ((const U8*)s)[5] ) ? 0xFB13 : 0 ) : 0 )\
1695             : ( ( ( ( 0x72 == ((const U8*)s)[2] ) && ( 0xB8 == ((const U8*)s)[3] ) ) && ( 0x52 == ((const U8*)s)[4] ) ) && ( 0x65 == ((const U8*)s)[5] ) ) ? 0xFB16 : 0 )\
1696         : 0 )
1697
1698
1699 /*** GENERATED CODE ***/
1700 #define what_MULTI_CHAR_FOLD_utf8_safe_part1_(s,e)                          \
1701 ( ( 0xBF == ((const U8*)s)[0] ) ?                                           \
1702         ( ( 0x67 == ((const U8*)s)[1] ) ?                                   \
1703             ( ( 0x41 == ((const U8*)s)[2] ) ?                               \
1704                 ( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F80 : 0 )\
1705             : ( 0x42 == ((const U8*)s)[2] ) ?                               \
1706                 ( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F81 : 0 )\
1707             : ( 0x43 == ((const U8*)s)[2] ) ?                               \
1708                 ( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F82 : 0 )\
1709             : ( 0x44 == ((const U8*)s)[2] ) ?                               \
1710                 ( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F83 : 0 )\
1711             : ( 0x45 == ((const U8*)s)[2] ) ?                               \
1712                 ( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F84 : 0 )\
1713             : ( 0x46 == ((const U8*)s)[2] ) ?                               \
1714                 ( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F85 : 0 )\
1715             : ( 0x47 == ((const U8*)s)[2] ) ?                               \
1716                 ( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F86 : 0 )\
1717             : ( ( ( 0x48 == ((const U8*)s)[2] ) && ( 0xB4 == ((const U8*)s)[3] ) ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F87 : 0 )\
1718         : ( 0x68 == ((const U8*)s)[1] ) ?                                   \
1719             ( ( 0x41 == ((const U8*)s)[2] ) ?                               \
1720                 ( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F90 : 0 )\
1721             : ( 0x42 == ((const U8*)s)[2] ) ?                               \
1722                 ( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F91 : 0 )\
1723             : ( 0x43 == ((const U8*)s)[2] ) ?                               \
1724                 ( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F92 : 0 )\
1725             : ( 0x44 == ((const U8*)s)[2] ) ?                               \
1726                 ( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F93 : 0 )\
1727             : ( 0x45 == ((const U8*)s)[2] ) ?                               \
1728                 ( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F94 : 0 )\
1729             : ( 0x46 == ((const U8*)s)[2] ) ?                               \
1730                 ( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F95 : 0 )\
1731             : ( 0x47 == ((const U8*)s)[2] ) ?                               \
1732                 ( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F96 : 0 )\
1733             : ( ( ( 0x48 == ((const U8*)s)[2] ) && ( 0xB4 == ((const U8*)s)[3] ) ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F97 : 0 )\
1734         : ( 0x6A == ((const U8*)s)[1] ) ?                                   \
1735             ( ( 0x41 == ((const U8*)s)[2] ) ?                               \
1736                 ( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1FA0 : 0 )\
1737             : ( 0x42 == ((const U8*)s)[2] ) ?                               \
1738                 ( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1FA1 : 0 )\
1739             : ( 0x43 == ((const U8*)s)[2] ) ?                               \
1740                 ( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1FA2 : 0 )\
1741             : ( 0x44 == ((const U8*)s)[2] ) ?                               \
1742                 ( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1FA3 : 0 )\
1743             : ( 0x45 == ((const U8*)s)[2] ) ?                               \
1744                 ( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1FA4 : 0 )\
1745             : ( 0x46 == ((const U8*)s)[2] ) ?                               \
1746                 ( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1FA5 : 0 )\
1747             : ( 0x47 == ((const U8*)s)[2] ) ?                               \
1748                 ( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1FA6 : 0 )\
1749             : ( 0x48 == ((const U8*)s)[2] ) ?                               \
1750                 ( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1FA7 : 0 )\
1751             : ( 0x57 == ((const U8*)s)[2] ) ?                               \
1752                 ( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1FB2 : 0 )\
1753             : ( 0x63 == ((const U8*)s)[2] ) ?                               \
1754                 ( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1FC2 : 0 )\
1755             : ( ( ( 0x70 == ((const U8*)s)[2] ) && ( 0xB4 == ((const U8*)s)[3] ) ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1FF2 : 0 )\
1756         : 0 )                                                               \
1757     : 0 )
1758
1759
1760 /*** GENERATED CODE ***/
1761 #define what_MULTI_CHAR_FOLD_utf8_safe_part2_(s,e)                          \
1762 ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                                 \
1763             ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) ? 0xFB03              \
1764             : ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ? 0xFB04 : 0xFB00 )   \
1765         : ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) ? 0xFB01                  \
1766         : ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ? 0xFB02 : 0 )
1767
1768
1769 /*** GENERATED CODE ***/
1770 #define what_MULTI_CHAR_FOLD_utf8_safe_part3_(s,e)                          \
1771 ( ( ( ((const U8*)s)[0] & 0xBF ) == 'h' ) ?                                 \
1772         ( ( ( 0xB0 == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 0x1E96 : 0 )\
1773     : ( ( ((const U8*)s)[0] & 0xBF ) == 'i' ) ?                             \
1774         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 0x130 : 0 )\
1775     : ( 0x8F == ((const U8*)s)[0] ) ?                                       \
1776         ( ( 0x73 == ((const U8*)s)[1] ) ?                                   \
1777             ( ( 0x8F == ((const U8*)s)[2] ) ?                               \
1778                 ( ( 0x73 == ((const U8*)s)[3] ) ? 0x59 : 0 )                \
1779             : ( ( ((const U8*)s)[2] & 0xBF ) == 's' ) ? 0x59                \
1780             : ( ( ((const U8*)s)[2] & 0xBF ) == 't' ) ? 0xFB05 : 0 )        \
1781         : 0 )                                                               \
1782     : ( ( ((const U8*)s)[0] & 0xBF ) == 'j' ) ?                             \
1783         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 0x1F0 : 0 )\
1784     : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
1785         ( ( 0x8F == ((const U8*)s)[1] ) ?                                   \
1786             ( ( 0x73 == ((const U8*)s)[2] ) ? 0x59 : 0 )                    \
1787         : ( ( ((const U8*)s)[1] & 0xBF ) == 's' ) ? 0x59                    \
1788         : ( ( ((const U8*)s)[1] & 0xBF ) == 't' ) ? 0xFB05 : 0 )            \
1789     : ( ( ((const U8*)s)[0] & 0xBF ) == 't' ) ?                             \
1790         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 0x1E97 : 0 )\
1791     : ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) ?                             \
1792         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 0x1E98 : 0 )\
1793     : ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ?                             \
1794         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 0x1E99 : 0 )\
1795     : ( 0xAB == ((const U8*)s)[0] ) ?                                       \
1796         ( ( ( 0x70 == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xBF ) == 'n' ) ) ? 0x149 : 0 )\
1797     : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
1798         ( ( 0x53 == ((const U8*)s)[1] ) ?                                   \
1799             ( ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 0x1FB4 : 0 )\
1800         : ( 0x55 == ((const U8*)s)[1] ) ?                                   \
1801             ( ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 0x1FC4 : 0 )\
1802         : ( 0x58 == ((const U8*)s)[1] ) ?                                   \
1803             ( ( 0xB1 == ((const U8*)s)[2] ) ?                               \
1804                 ( ( 0x43 == ((const U8*)s)[3] ) ?                           \
1805                     ( ( ( 0xB4 == ((const U8*)s)[4] ) && ( 0x68 == ((const U8*)s)[5] ) ) ? 0x1FB7 : 0x1FB6 )\
1806                 : 0 )                                                       \
1807             : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 0x1FB3 : 0 )\
1808         : ( 0x66 == ((const U8*)s)[1] ) ?                                   \
1809             ( ( 0xB1 == ((const U8*)s)[2] ) ?                               \
1810                 ( ( 0x43 == ((const U8*)s)[3] ) ?                           \
1811                     ( ( ( 0xB4 == ((const U8*)s)[4] ) && ( 0x68 == ((const U8*)s)[5] ) ) ? 0x1FC7 : 0x1FC6 )\
1812                 : 0 )                                                       \
1813             : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 0x1FC3 : 0 )\
1814         : ( 0x68 == ((const U8*)s)[1] ) ?                                   \
1815             ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
1816                 ( ( 0x49 == ((const U8*)s)[3] ) ?                           \
1817                     ( ( 0xAF == ((const U8*)s)[4] ) ?                       \
1818                         ( ( 0x41 == ((const U8*)s)[5] ) ? 0x1FD2            \
1819                         : ( 0x42 == ((const U8*)s)[5] ) ? 0x390 : 0 )       \
1820                     : ( ( 0xB1 == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 0x1FD7 : 0 )\
1821                 : 0 )                                                       \
1822             : ( ( 0xB1 == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 0x1FD6 : 0 )\
1823         : 0 )                                                               \
1824     : ( 0xB5 == ((const U8*)s)[0] ) ?                                       \
1825         ( ( 0x42 == ((const U8*)s)[1] ) ?                                   \
1826             ( ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x62 == ((const U8*)s)[3] ) ) ? 0x1FE4 : 0 )\
1827         : ( 0x46 == ((const U8*)s)[1] ) ?                                   \
1828             ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
1829                 ( ( 0x49 == ((const U8*)s)[3] ) ?                           \
1830                     ( ( 0xAF == ((const U8*)s)[4] ) ?                       \
1831                         ( ( 0x41 == ((const U8*)s)[5] ) ? 0x1FE2            \
1832                         : ( 0x42 == ((const U8*)s)[5] ) ? 0x3B0 : 0 )       \
1833                     : ( ( 0xB1 == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 0x1FE7 : 0 )\
1834                 : ( 0x62 == ((const U8*)s)[3] ) ?                           \
1835                     ( ( 0xAF == ((const U8*)s)[4] ) ?                       \
1836                         ( ( 0x41 == ((const U8*)s)[5] ) ? 0x1F52            \
1837                         : ( 0x42 == ((const U8*)s)[5] ) ? 0x1F54 : 0x1F50 ) \
1838                     : ( ( 0xB1 == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 0x1F56 : 0x1F50 )\
1839                 : 0 )                                                       \
1840             : ( ( 0xB1 == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 0x1FE6 : 0 )\
1841         : ( 0x4A == ((const U8*)s)[1] ) ?                                   \
1842             ( ( 0xB1 == ((const U8*)s)[2] ) ?                               \
1843                 ( ( 0x43 == ((const U8*)s)[3] ) ?                           \
1844                     ( ( ( 0xB4 == ((const U8*)s)[4] ) && ( 0x68 == ((const U8*)s)[5] ) ) ? 0x1FF7 : 0x1FF6 )\
1845                 : 0 )                                                       \
1846             : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 0x1FF3 : 0 )\
1847         : ( ( ( 0x55 == ((const U8*)s)[1] ) && ( 0xB4 == ((const U8*)s)[2] ) ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 0x1FF4 : 0 )\
1848     : ( 0xB8 == ((const U8*)s)[0] ) ? what_MULTI_CHAR_FOLD_utf8_safe_part0_(s,e) : what_MULTI_CHAR_FOLD_utf8_safe_part1_(s,e) )
1849
1850
1851 /*** GENERATED CODE ***/
1852 #define what_MULTI_CHAR_FOLD_utf8_safe_part4_(s,e)                          \
1853 ( ( 0x42 == ((const U8*)s)[1] ) ?                                           \
1854             ( ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x62 == ((const U8*)s)[3] ) ) ? 0x1FE4 : 0 )\
1855         : ( 0x46 == ((const U8*)s)[1] ) ?                                   \
1856             ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
1857                 ( ( 0x62 == ((const U8*)s)[3] ) ? 0x1F50 : 0 )              \
1858             : ( ( 0xB1 == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 0x1FE6 : 0 )\
1859         : ( 0x4A == ((const U8*)s)[1] ) ?                                   \
1860             ( ( 0xB1 == ((const U8*)s)[2] ) ?                               \
1861                 ( ( 0x43 == ((const U8*)s)[3] ) ? 0x1FF6 : 0 )              \
1862             : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 0x1FF3 : 0 )\
1863         : ( ( ( 0x55 == ((const U8*)s)[1] ) && ( 0xB4 == ((const U8*)s)[2] ) ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 0x1FF4 : 0 )
1864
1865
1866 /*** GENERATED CODE ***/
1867 #define what_MULTI_CHAR_FOLD_utf8_safe_part5_(s,e)                          \
1868 ( ( 0xBF == ((const U8*)s)[0] ) ?                                           \
1869         ( ( 0x67 == ((const U8*)s)[1] ) ?                                   \
1870             ( ( 0x41 == ((const U8*)s)[2] ) ?                               \
1871                 ( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F80 : 0 )\
1872             : ( 0x42 == ((const U8*)s)[2] ) ?                               \
1873                 ( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F81 : 0 )\
1874             : ( 0x43 == ((const U8*)s)[2] ) ?                               \
1875                 ( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F82 : 0 )\
1876             : ( 0x44 == ((const U8*)s)[2] ) ?                               \
1877                 ( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F83 : 0 )\
1878             : ( 0x45 == ((const U8*)s)[2] ) ?                               \
1879                 ( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F84 : 0 )\
1880             : ( 0x46 == ((const U8*)s)[2] ) ?                               \
1881                 ( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F85 : 0 )\
1882             : ( 0x47 == ((const U8*)s)[2] ) ?                               \
1883                 ( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F86 : 0 )\
1884             : ( ( ( 0x48 == ((const U8*)s)[2] ) && ( 0xB4 == ((const U8*)s)[3] ) ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F87 : 0 )\
1885         : ( 0x68 == ((const U8*)s)[1] ) ?                                   \
1886             ( ( 0x41 == ((const U8*)s)[2] ) ?                               \
1887                 ( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F90 : 0 )\
1888             : ( 0x42 == ((const U8*)s)[2] ) ?                               \
1889                 ( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F91 : 0 )\
1890             : ( 0x43 == ((const U8*)s)[2] ) ?                               \
1891                 ( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F92 : 0 )\
1892             : ( 0x44 == ((const U8*)s)[2] ) ?                               \
1893                 ( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F93 : 0 )\
1894             : ( 0x45 == ((const U8*)s)[2] ) ?                               \
1895                 ( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F94 : 0 )\
1896             : ( 0x46 == ((const U8*)s)[2] ) ?                               \
1897                 ( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F95 : 0 )\
1898             : ( 0x47 == ((const U8*)s)[2] ) ?                               \
1899                 ( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F96 : 0 )\
1900             : ( ( ( 0x48 == ((const U8*)s)[2] ) && ( 0xB4 == ((const U8*)s)[3] ) ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F97 : 0 )\
1901         : ( 0x6A == ((const U8*)s)[1] ) ?                                   \
1902             ( ( 0x41 == ((const U8*)s)[2] ) ?                               \
1903                 ( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1FA0 : 0 )\
1904             : ( 0x42 == ((const U8*)s)[2] ) ?                               \
1905                 ( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1FA1 : 0 )\
1906             : ( 0x43 == ((const U8*)s)[2] ) ?                               \
1907                 ( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1FA2 : 0 )\
1908             : ( 0x44 == ((const U8*)s)[2] ) ?                               \
1909                 ( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1FA3 : 0 )\
1910             : ( 0x45 == ((const U8*)s)[2] ) ?                               \
1911                 ( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1FA4 : 0 )\
1912             : ( 0x46 == ((const U8*)s)[2] ) ?                               \
1913                 ( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1FA5 : 0 )\
1914             : ( 0x47 == ((const U8*)s)[2] ) ?                               \
1915                 ( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1FA6 : 0 )\
1916             : ( 0x48 == ((const U8*)s)[2] ) ?                               \
1917                 ( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1FA7 : 0 )\
1918             : ( 0x57 == ((const U8*)s)[2] ) ?                               \
1919                 ( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1FB2 : 0 )\
1920             : ( 0x63 == ((const U8*)s)[2] ) ?                               \
1921                 ( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1FC2 : 0 )\
1922             : ( ( ( 0x70 == ((const U8*)s)[2] ) && ( 0xB4 == ((const U8*)s)[3] ) ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1FF2 : 0 )\
1923         : 0 )                                                               \
1924     : 0 )
1925
1926
1927 /*** GENERATED CODE ***/
1928 #define what_MULTI_CHAR_FOLD_utf8_safe_part6_(s,e)                          \
1929 ( ( ( ((const U8*)s)[0] & 0xBF ) == 'a' ) ?                                 \
1930         ( ( ( 0xAB == ((const U8*)s)[1] ) && ( 0x72 == ((const U8*)s)[2] ) ) ? 0x1E9A : 0 )\
1931     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
1932         ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                         \
1933             ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) ? 0xFB03              \
1934             : ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ? 0xFB04 : 0xFB00 )   \
1935         : ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) ? 0xFB01                  \
1936         : ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ? 0xFB02 : 0 )            \
1937     : ( ( ((const U8*)s)[0] & 0xBF ) == 'h' ) ?                             \
1938         ( ( ( 0xB0 == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 0x1E96 : 0 )\
1939     : ( ( ((const U8*)s)[0] & 0xBF ) == 'i' ) ?                             \
1940         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 0x130 : 0 )\
1941     : ( 0x8F == ((const U8*)s)[0] ) ?                                       \
1942         ( ( 0x73 == ((const U8*)s)[1] ) ?                                   \
1943             ( ( 0x8F == ((const U8*)s)[2] ) ?                               \
1944                 ( ( 0x73 == ((const U8*)s)[3] ) ? 0x59 : 0 )                \
1945             : ( ( ((const U8*)s)[2] & 0xBF ) == 's' ) ? 0x59                \
1946             : ( ( ((const U8*)s)[2] & 0xBF ) == 't' ) ? 0xFB05 : 0 )        \
1947         : 0 )                                                               \
1948     : ( ( ((const U8*)s)[0] & 0xBF ) == 'j' ) ?                             \
1949         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 0x1F0 : 0 )\
1950     : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
1951         ( ( 0x8F == ((const U8*)s)[1] ) ?                                   \
1952             ( ( 0x73 == ((const U8*)s)[2] ) ? 0x59 : 0 )                    \
1953         : ( ( ((const U8*)s)[1] & 0xBF ) == 's' ) ? 0x59                    \
1954         : ( ( ((const U8*)s)[1] & 0xBF ) == 't' ) ? 0xFB05 : 0 )            \
1955     : ( ( ((const U8*)s)[0] & 0xBF ) == 't' ) ?                             \
1956         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 0x1E97 : 0 )\
1957     : ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) ?                             \
1958         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 0x1E98 : 0 )\
1959     : ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ?                             \
1960         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 0x1E99 : 0 )\
1961     : ( 0xAB == ((const U8*)s)[0] ) ?                                       \
1962         ( ( ( 0x70 == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xBF ) == 'n' ) ) ? 0x149 : 0 )\
1963     : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
1964         ( ( 0x53 == ((const U8*)s)[1] ) ?                                   \
1965             ( ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 0x1FB4 : 0 )\
1966         : ( 0x55 == ((const U8*)s)[1] ) ?                                   \
1967             ( ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 0x1FC4 : 0 )\
1968         : ( 0x58 == ((const U8*)s)[1] ) ?                                   \
1969             ( ( 0xB1 == ((const U8*)s)[2] ) ?                               \
1970                 ( ( 0x43 == ((const U8*)s)[3] ) ? 0x1FB6 : 0 )              \
1971             : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 0x1FB3 : 0 )\
1972         : ( 0x66 == ((const U8*)s)[1] ) ?                                   \
1973             ( ( 0xB1 == ((const U8*)s)[2] ) ?                               \
1974                 ( ( 0x43 == ((const U8*)s)[3] ) ? 0x1FC6 : 0 )              \
1975             : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 0x1FC3 : 0 )\
1976         : ( ( ( 0x68 == ((const U8*)s)[1] ) && ( 0xB1 == ((const U8*)s)[2] ) ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 0x1FD6 : 0 )\
1977     : ( 0xB5 == ((const U8*)s)[0] ) ?                                       \
1978         ( ( 0x42 == ((const U8*)s)[1] ) ?                                   \
1979             ( ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x62 == ((const U8*)s)[3] ) ) ? 0x1FE4 : 0 )\
1980         : ( 0x46 == ((const U8*)s)[1] ) ?                                   \
1981             ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
1982                 ( ( 0x62 == ((const U8*)s)[3] ) ? 0x1F50 : 0 )              \
1983             : ( ( 0xB1 == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 0x1FE6 : 0 )\
1984         : ( 0x4A == ((const U8*)s)[1] ) ?                                   \
1985             ( ( 0xB1 == ((const U8*)s)[2] ) ?                               \
1986                 ( ( 0x43 == ((const U8*)s)[3] ) ? 0x1FF6 : 0 )              \
1987             : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 0x1FF3 : 0 )\
1988         : ( ( ( 0x55 == ((const U8*)s)[1] ) && ( 0xB4 == ((const U8*)s)[2] ) ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 0x1FF4 : 0 )\
1989     : 0 )
1990
1991
1992 /*** GENERATED CODE ***/
1993 #define what_MULTI_CHAR_FOLD_utf8_safe_part7_(s,e)                          \
1994 ( ((e)-(s) > 2) ?                                                           \
1995     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'a' ) ?                             \
1996         ( ( ( 0xAB == ((const U8*)s)[1] ) && ( 0x72 == ((const U8*)s)[2] ) ) ? 0x1E9A : 0 )\
1997     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
1998         ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                         \
1999             ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) ? 0xFB03              \
2000             : ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ? 0xFB04 : 0xFB00 )   \
2001         : ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) ? 0xFB01                  \
2002         : ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ? 0xFB02 : 0 )            \
2003     : ( ( ((const U8*)s)[0] & 0xBF ) == 'h' ) ?                             \
2004         ( ( ( 0xB0 == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 0x1E96 : 0 )\
2005     : ( ( ((const U8*)s)[0] & 0xBF ) == 'i' ) ?                             \
2006         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 0x130 : 0 )\
2007     : ( 0x8F == ((const U8*)s)[0] ) ?                                       \
2008         ( ( 0x73 == ((const U8*)s)[1] ) ?                                   \
2009             ( ( ( ((const U8*)s)[2] & 0xBF ) == 's' ) ? 0x59                \
2010             : ( ( ((const U8*)s)[2] & 0xBF ) == 't' ) ? 0xFB05 : 0 )        \
2011         : 0 )                                                               \
2012     : ( ( ((const U8*)s)[0] & 0xBF ) == 'j' ) ?                             \
2013         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 0x1F0 : 0 )\
2014     : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
2015         ( ( 0x8F == ((const U8*)s)[1] ) ?                                   \
2016             ( ( 0x73 == ((const U8*)s)[2] ) ? 0x59 : 0 )                    \
2017         : ( ( ((const U8*)s)[1] & 0xBF ) == 's' ) ? 0x59                    \
2018         : ( ( ((const U8*)s)[1] & 0xBF ) == 't' ) ? 0xFB05 : 0 )            \
2019     : ( ( ((const U8*)s)[0] & 0xBF ) == 't' ) ?                             \
2020         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 0x1E97 : 0 )\
2021     : ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) ?                             \
2022         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 0x1E98 : 0 )\
2023     : ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ?                             \
2024         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 0x1E99 : 0 )\
2025     : ( ( ( 0xAB == ((const U8*)s)[0] ) && ( 0x70 == ((const U8*)s)[1] ) ) && ( ( ((const U8*)s)[2] & 0xBF ) == 'n' ) ) ? 0x149 : 0 )\
2026 : ((e)-(s) > 1) ?                                                           \
2027     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
2028         ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ? 0xFB00                  \
2029         : ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) ? 0xFB01                  \
2030         : ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ? 0xFB02 : 0 )            \
2031     : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
2032         ( ( ( ((const U8*)s)[1] & 0xBF ) == 's' ) ? 0x59                    \
2033         : ( ( ((const U8*)s)[1] & 0xBF ) == 't' ) ? 0xFB05 : 0 )            \
2034     : 0 )                                                                   \
2035 : 0 )
2036
2037
2038 /*** GENERATED CODE ***/
2039 #define what_MULTI_CHAR_FOLD_utf8_safe(s,e)                                 \
2040 ( ((e)-(s) > 5) ?                                                           \
2041     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'a' ) ?                             \
2042         ( ( ( 0xAB == ((const U8*)s)[1] ) && ( 0x72 == ((const U8*)s)[2] ) ) ? 0x1E9A : 0 )\
2043     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ? what_MULTI_CHAR_FOLD_utf8_safe_part2_(s,e) : what_MULTI_CHAR_FOLD_utf8_safe_part3_(s,e) )\
2044 : ((e)-(s) > 4) ?                                                           \
2045     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'a' ) ?                             \
2046         ( ( ( 0xAB == ((const U8*)s)[1] ) && ( 0x72 == ((const U8*)s)[2] ) ) ? 0x1E9A : 0 )\
2047     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
2048         ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                         \
2049             ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) ? 0xFB03              \
2050             : ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ? 0xFB04 : 0xFB00 )   \
2051         : ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) ? 0xFB01                  \
2052         : ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ? 0xFB02 : 0 )            \
2053     : ( ( ((const U8*)s)[0] & 0xBF ) == 'h' ) ?                             \
2054         ( ( ( 0xB0 == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 0x1E96 : 0 )\
2055     : ( ( ((const U8*)s)[0] & 0xBF ) == 'i' ) ?                             \
2056         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 0x130 : 0 )\
2057     : ( 0x8F == ((const U8*)s)[0] ) ?                                       \
2058         ( ( 0x73 == ((const U8*)s)[1] ) ?                                   \
2059             ( ( 0x8F == ((const U8*)s)[2] ) ?                               \
2060                 ( ( 0x73 == ((const U8*)s)[3] ) ? 0x59 : 0 )                \
2061             : ( ( ((const U8*)s)[2] & 0xBF ) == 's' ) ? 0x59                \
2062             : ( ( ((const U8*)s)[2] & 0xBF ) == 't' ) ? 0xFB05 : 0 )        \
2063         : 0 )                                                               \
2064     : ( ( ((const U8*)s)[0] & 0xBF ) == 'j' ) ?                             \
2065         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 0x1F0 : 0 )\
2066     : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
2067         ( ( 0x8F == ((const U8*)s)[1] ) ?                                   \
2068             ( ( 0x73 == ((const U8*)s)[2] ) ? 0x59 : 0 )                    \
2069         : ( ( ((const U8*)s)[1] & 0xBF ) == 's' ) ? 0x59                    \
2070         : ( ( ((const U8*)s)[1] & 0xBF ) == 't' ) ? 0xFB05 : 0 )            \
2071     : ( ( ((const U8*)s)[0] & 0xBF ) == 't' ) ?                             \
2072         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 0x1E97 : 0 )\
2073     : ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) ?                             \
2074         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 0x1E98 : 0 )\
2075     : ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ?                             \
2076         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 0x1E99 : 0 )\
2077     : ( 0xAB == ((const U8*)s)[0] ) ?                                       \
2078         ( ( ( 0x70 == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xBF ) == 'n' ) ) ? 0x149 : 0 )\
2079     : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
2080         ( ( 0x53 == ((const U8*)s)[1] ) ?                                   \
2081             ( ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 0x1FB4 : 0 )\
2082         : ( 0x55 == ((const U8*)s)[1] ) ?                                   \
2083             ( ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 0x1FC4 : 0 )\
2084         : ( 0x58 == ((const U8*)s)[1] ) ?                                   \
2085             ( ( 0xB1 == ((const U8*)s)[2] ) ?                               \
2086                 ( ( 0x43 == ((const U8*)s)[3] ) ? 0x1FB6 : 0 )              \
2087             : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 0x1FB3 : 0 )\
2088         : ( 0x66 == ((const U8*)s)[1] ) ?                                   \
2089             ( ( 0xB1 == ((const U8*)s)[2] ) ?                               \
2090                 ( ( 0x43 == ((const U8*)s)[3] ) ? 0x1FC6 : 0 )              \
2091             : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 0x1FC3 : 0 )\
2092         : ( ( ( 0x68 == ((const U8*)s)[1] ) && ( 0xB1 == ((const U8*)s)[2] ) ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 0x1FD6 : 0 )\
2093     : ( 0xB5 == ((const U8*)s)[0] ) ? what_MULTI_CHAR_FOLD_utf8_safe_part4_(s,e) : what_MULTI_CHAR_FOLD_utf8_safe_part5_(s,e) )\
2094 : ((e)-(s) > 3) ? what_MULTI_CHAR_FOLD_utf8_safe_part6_(s,e) : what_MULTI_CHAR_FOLD_utf8_safe_part7_(s,e) )
2095
2096 /*
2097         MULTI_CHAR_FOLD: multi-char strings that are folded to by a single character
2098
2099         %regcharclass_multi_char_folds::multi_char_folds('l', 'a')
2100 */
2101 /*** GENERATED CODE ***/
2102 #define is_MULTI_CHAR_FOLD_latin1_safe(s,e)                                 \
2103 ( ((e)-(s) > 2) ?                                                           \
2104     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
2105         ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                         \
2106             ( ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ? 3 : 2 )\
2107         : ( ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ) ? 2 : 0 )\
2108     : ( ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) && ( ( ((const U8*)s)[1] & 0xBE ) == 's' ) ) ? 2 : 0 )\
2109 : ((e)-(s) > 1) ?                                                           \
2110     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
2111         ( ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ) ? 2 : 0 )\
2112     : ( ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) && ( ( ((const U8*)s)[1] & 0xBE ) == 's' ) ) ? 2 : 0 )\
2113 : 0 )
2114
2115 /*** GENERATED CODE ***/
2116 #define what_MULTI_CHAR_FOLD_latin1_safe(s,e)                               \
2117 ( ((e)-(s) > 2) ?                                                           \
2118     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
2119         ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                         \
2120             ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) ? 0xFB03              \
2121             : ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ? 0xFB04 : 0xFB00 )   \
2122         : ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) ? 0xFB01                  \
2123         : ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ? 0xFB02 : 0 )            \
2124     : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
2125         ( ( ( ((const U8*)s)[1] & 0xBF ) == 's' ) ? 0x59                    \
2126         : ( ( ((const U8*)s)[1] & 0xBF ) == 't' ) ? 0xFB05 : 0 )            \
2127     : 0 )                                                                   \
2128 : ((e)-(s) > 1) ?                                                           \
2129     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
2130         ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ? 0xFB00                  \
2131         : ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) ? 0xFB01                  \
2132         : ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ? 0xFB02 : 0 )            \
2133     : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
2134         ( ( ( ((const U8*)s)[1] & 0xBF ) == 's' ) ? 0x59                    \
2135         : ( ( ((const U8*)s)[1] & 0xBF ) == 't' ) ? 0xFB05 : 0 )            \
2136     : 0 )                                                                   \
2137 : 0 )
2138
2139 /*
2140         THREE_CHAR_FOLD: A three-character multi-char fold
2141
2142         %regcharclass_multi_char_folds::multi_char_folds('u', '3')
2143 */
2144 /*** GENERATED CODE ***/
2145 #define is_THREE_CHAR_FOLD_utf8_safe(s,e)                                   \
2146 ( ((e)-(s) > 5) ?                                                           \
2147     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
2148         ( ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) && ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ) ? 3 : 0 )\
2149     : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
2150         ( ( 0x58 == ((const U8*)s)[1] || 0x66 == ((const U8*)s)[1] ) ?      \
2151             ( ( ( ( ( 0xB1 == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) && ( 0xB4 == ((const U8*)s)[4] ) ) && ( 0x68 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
2152         : ( ( ( 0x68 == ((const U8*)s)[1] ) && ( 0xAF == ((const U8*)s)[2] ) ) && ( 0x49 == ((const U8*)s)[3] ) ) ? ( ( 0xAF == ((const U8*)s)[4] ) ?\
2153                         ( ( inRANGE_helper_(U8, ((const U8*)s)[5], 0x41, 0x42) ) ? 6 : 0 )\
2154                     : ( ( 0xB1 == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 0 ) : 0 )\
2155     : ( 0xB5 == ((const U8*)s)[0] ) ?                                       \
2156         ( ( 0x46 == ((const U8*)s)[1] ) ?                                   \
2157             ( ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x49 == ((const U8*)s)[3] || 0x62 == ((const U8*)s)[3] ) ) ? ( ( 0xAF == ((const U8*)s)[4] ) ?\
2158                         ( ( inRANGE_helper_(U8, ((const U8*)s)[5], 0x41, 0x42) ) ? 6 : 0 )\
2159                     : ( ( 0xB1 == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 0 ) : 0 )\
2160         : ( ( ( ( ( 0x4A == ((const U8*)s)[1] ) && ( 0xB1 == ((const U8*)s)[2] ) ) && ( 0x43 == ((const U8*)s)[3] ) ) && ( 0xB4 == ((const U8*)s)[4] ) ) && ( 0x68 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
2161     : 0 )                                                                   \
2162 : ( ( ( ((e)-(s) > 2) && ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ) && ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ) && ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ) ? 3 : 0 )
2163
2164 /*
2165         THREE_CHAR_FOLD: A three-character multi-char fold
2166
2167         %regcharclass_multi_char_folds::multi_char_folds('l', '3')
2168 */
2169 /*** GENERATED CODE ***/
2170 #define is_THREE_CHAR_FOLD_latin1_safe(s,e)                                 \
2171 ( ( ( ( ( ((e) - (s)) >= 3 ) && ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ) && ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ) && ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ) ? 3 : 0 )
2172
2173 /*
2174         THREE_CHAR_FOLD_HEAD: The first two of three-character multi-char folds
2175
2176         %regcharclass_multi_char_folds::multi_char_folds('u', 'h')
2177 */
2178 /*** GENERATED CODE ***/
2179 #define is_THREE_CHAR_FOLD_HEAD_utf8_safe(s,e)                              \
2180 ( ((e)-(s) > 3) ?                                                           \
2181     ( ( ( ( ((const U8*)s)[0] & 0xAF ) == 'a' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 'h' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 's' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ? 1\
2182     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
2183         ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ? 2 : 1 )                 \
2184     : ( 0x8F == ((const U8*)s)[0] ) ?                                       \
2185         ( ( 0x73 == ((const U8*)s)[1] ) ? 2 : 0 )                           \
2186     : ( 0xAB == ((const U8*)s)[0] ) ?                                       \
2187         ( ( 0x70 == ((const U8*)s)[1] ) ? 2 : 0 )                           \
2188     : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
2189         ( ( 0x53 == ((const U8*)s)[1] || 0x55 == ((const U8*)s)[1] ) ? 2    \
2190         : ( 0x58 == ((const U8*)s)[1] || 0x66 == ((const U8*)s)[1] ) ?      \
2191             ( ( ( 0xB1 == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 2 )\
2192         : ( 0x68 == ((const U8*)s)[1] ) ?                                   \
2193             ( ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x49 == ((const U8*)s)[3] ) ) ? 4 : 2 )\
2194         : 0 )                                                               \
2195     : ( 0xB5 == ((const U8*)s)[0] ) ?                                       \
2196         ( ( 0x42 == ((const U8*)s)[1] || 0x55 == ((const U8*)s)[1] ) ? 2    \
2197         : ( 0x46 == ((const U8*)s)[1] ) ?                                   \
2198             ( ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x49 == ((const U8*)s)[3] || 0x62 == ((const U8*)s)[3] ) ) ? 4 : 2 )\
2199         : ( 0x4A == ((const U8*)s)[1] ) ?                                   \
2200             ( ( ( 0xB1 == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 2 )\
2201         : 0 )                                                               \
2202     : ( 0xB8 == ((const U8*)s)[0] ) ?                                       \
2203         ( ( ( 0x52 == ((const U8*)s)[1] ) && ( 0x46 == ((const U8*)s)[2] || 0x63 == ((const U8*)s)[2] || 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
2204     : ( 0xBF == ((const U8*)s)[0] ) ?                                       \
2205         ( ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x67, 0x68) ) ?          \
2206             ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x48) ) ? 3 : 0 )\
2207         : ( ( 0x6A == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x48) || 0x57 == ((const U8*)s)[2] || 0x63 == ((const U8*)s)[2] || 0x70 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
2208     : 0 )                                                                   \
2209 : ((e)-(s) > 2) ?                                                           \
2210     ( ( ( ( ((const U8*)s)[0] & 0xAF ) == 'a' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 'h' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 's' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ? 1\
2211     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
2212         ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ? 2 : 1 )                 \
2213     : ( 0x8F == ((const U8*)s)[0] ) ?                                       \
2214         ( ( 0x73 == ((const U8*)s)[1] ) ? 2 : 0 )                           \
2215     : ( 0xAB == ((const U8*)s)[0] ) ?                                       \
2216         ( ( 0x70 == ((const U8*)s)[1] ) ? 2 : 0 )                           \
2217     : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
2218         ( ( 0x53 == ((const U8*)s)[1] || 0x55 == ((const U8*)s)[1] || 0x58 == ((const U8*)s)[1] || 0x66 == ((const U8*)s)[1] || 0x68 == ((const U8*)s)[1] ) ? 2 : 0 )\
2219     : ( 0xB5 == ((const U8*)s)[0] ) ?                                       \
2220         ( ( ( ( ((const U8*)s)[1] & 0xFB ) == 0x42 ) || ((const U8*)s)[1] == 0x4A || ((const U8*)s)[1] == 0x55 ) ? 2 : 0 )\
2221     : ( 0xB8 == ((const U8*)s)[0] ) ?                                       \
2222         ( ( ( 0x52 == ((const U8*)s)[1] ) && ( 0x46 == ((const U8*)s)[2] || 0x63 == ((const U8*)s)[2] || 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
2223     : ( 0xBF == ((const U8*)s)[0] ) ?                                       \
2224         ( ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x67, 0x68) ) ?          \
2225             ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x48) ) ? 3 : 0 )\
2226         : ( ( 0x6A == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x48) || 0x57 == ((const U8*)s)[2] || 0x63 == ((const U8*)s)[2] || 0x70 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
2227     : 0 )                                                                   \
2228 : ((e)-(s) > 1) ?                                                           \
2229     ( ( ( ( ((const U8*)s)[0] & 0xAF ) == 'a' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 'h' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 's' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ? 1\
2230     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
2231         ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ? 2 : 1 )                 \
2232     : ( 0x8F == ((const U8*)s)[0] ) ?                                       \
2233         ( ( 0x73 == ((const U8*)s)[1] ) ? 2 : 0 )                           \
2234     : ( 0xAB == ((const U8*)s)[0] ) ?                                       \
2235         ( ( 0x70 == ((const U8*)s)[1] ) ? 2 : 0 )                           \
2236     : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
2237         ( ( 0x53 == ((const U8*)s)[1] || 0x55 == ((const U8*)s)[1] || 0x58 == ((const U8*)s)[1] || 0x66 == ((const U8*)s)[1] || 0x68 == ((const U8*)s)[1] ) ? 2 : 0 )\
2238     : ( ( 0xB5 == ((const U8*)s)[0] ) && ( ( ( ((const U8*)s)[1] & 0xFB ) == 0x42 ) || ((const U8*)s)[1] == 0x4A || ((const U8*)s)[1] == 0x55 ) ) ? 2 : 0 )\
2239 : ((e)-(s) > 0) ?                                                           \
2240     ( ( ( ((const U8*)s)[0] & 0xAF ) == 'a' ) || ( ( ((const U8*)s)[0] & 0x9F ) == 'f' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 'h' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 's' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) )\
2241 : 0 )
2242
2243 /*
2244         THREE_CHAR_FOLD_HEAD: The first two of three-character multi-char folds
2245
2246         %regcharclass_multi_char_folds::multi_char_folds('l', 'h')
2247 */
2248 /*** GENERATED CODE ***/
2249 #define is_THREE_CHAR_FOLD_HEAD_latin1_safe(s,e)                            \
2250 ( ((e)-(s) > 1) ?                                                           \
2251     ( ( ( ( ((const U8*)s)[0] & 0xAF ) == 'a' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 'h' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 's' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ? 1\
2252     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
2253         ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ? 2 : 1 )                 \
2254     : 0 )                                                                   \
2255 : ((e)-(s) > 0) ?                                                           \
2256     ( ( ( ((const U8*)s)[0] & 0xAF ) == 'a' ) || ( ( ((const U8*)s)[0] & 0x9F ) == 'f' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 'h' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 's' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) )\
2257 : 0 )
2258
2259 /*
2260         FOLDS_TO_MULTI: characters that fold to multi-char strings
2261
2262         \p{_Perl_Folds_To_Multi_Char}
2263 */
2264 /*** GENERATED CODE ***/
2265 #define is_FOLDS_TO_MULTI_utf8(s)                                           \
2266 ( ( 0x8A == ((const U8*)s)[0] ) ?                                           \
2267     ( ( 0x73 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
2268 : ( 0x8D == ((const U8*)s)[0] || 0x9C == ((const U8*)s)[0] || inRANGE_helper_(U8, ((const U8*)s)[0], 0xB3, 0xB4) ) ?\
2269     ( ( 0x57 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
2270 : ( 0x8E == ((const U8*)s)[0] ) ?                                           \
2271     ( ( 0x4A == ((const U8*)s)[1] ) ? 2 : 0 )                               \
2272 : ( 0xB8 == ((const U8*)s)[0] ) ?                                           \
2273     ( ( ( 0x53 == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
2274 : ( 0xBF == ((const U8*)s)[0] ) ?                                           \
2275     ( ( 0x63 == ((const U8*)s)[1] ) ?                                       \
2276         ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x65, 0x69) || 0x72 == ((const U8*)s)[2] ) ? 3 : 0 )\
2277     : ( 0x69 == ((const U8*)s)[1] ) ?                                       \
2278         ( ( 0x57 == ((const U8*)s)[2] || 0x59 == ((const U8*)s)[2] || 0x63 == ((const U8*)s)[2] || 0x65 == ((const U8*)s)[2] ) ? 3 : 0 )\
2279     : ( 0x70 == ((const U8*)s)[1] ) ?                                       \
2280         ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x51, 0x59) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x62, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x70, 0x73) ) ? 3 : 0 )\
2281     : ( 0x71 == ((const U8*)s)[1] ) ?                                       \
2282         ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x51, 0x56) || 0x59 == ((const U8*)s)[2] || inRANGE_helper_(U8, ((const U8*)s)[2], 0x62, 0x63) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x65, 0x66) || 0x70 == ((const U8*)s)[2] ) ? 3 : 0 )\
2283     : ( 0x72 == ((const U8*)s)[1] ) ?                                       \
2284         ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x43, 0x45) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x47, 0x48) || 0x53 == ((const U8*)s)[2] || 0x59 == ((const U8*)s)[2] || 0x62 == ((const U8*)s)[2] || inRANGE_helper_(U8, ((const U8*)s)[2], 0x65, 0x66) ) ? 3 : 0 )\
2285     : ( ( 0x73 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x43, 0x45) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x47, 0x48) || 0x59 == ((const U8*)s)[2] || inRANGE_helper_(U8, ((const U8*)s)[2], 0x62, 0x63) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x65, 0x66) || 0x70 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
2286 : ( ( ( ( 0xDD == ((const U8*)s)[0] ) && ( 0x72 == ((const U8*)s)[1] ) ) && ( 0x67 == ((const U8*)s)[2] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x41, 0x47) || inRANGE_helper_(U8, ((const U8*)s)[3], 0x62, 0x66) ) ) ? 4 : 0 )
2287
2288 /*
2289         PROBLEMATIC_LOCALE_FOLD: characters whose fold is problematic under locale
2290
2291         \p{_Perl_Problematic_Locale_Folds}
2292 */
2293 /*** GENERATED CODE ***/
2294 #define is_PROBLEMATIC_LOCALE_FOLD_utf8(s)                                  \
2295 ( ( ( ((const U8*)s)[0] <= ' ' ) || inRANGE_helper_(U8, ((const U8*)s)[0], '.', '&') || inRANGE_helper_(U8, ((const U8*)s)[0], '!', '/') || inRANGE_helper_(U8, ((const U8*)s)[0], ',', '?') || inRANGE_helper_(U8, ((const U8*)s)[0], '`', '"') || inRANGE_helper_(U8, ((const U8*)s)[0], 'a', 'i') || inRANGE_helper_(U8, ((const U8*)s)[0], 'j', 'r') || inRANGE_helper_(U8, ((const U8*)s)[0], '~', 'z') || '[' == ((const U8*)s)[0] || ']' == ((const U8*)s)[0] || inRANGE_helper_(U8, ((const U8*)s)[0], '{', 'I') || inRANGE_helper_(U8, ((const U8*)s)[0], '}', 'R') || '\\' == ((const U8*)s)[0] || inRANGE_helper_(U8, ((const U8*)s)[0], 'S', 'Z') || inRANGE_helper_(U8, ((const U8*)s)[0], '0', '9') || 0xFF == ((const U8*)s)[0] ) ? 1\
2296 : ( 0x80 == ((const U8*)s)[0] || inRANGE_helper_(U8, ((const U8*)s)[0], 0x8A, 0x8B) ) ?\
2297     ( ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x41, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[1], 0x51, 0x59) || inRANGE_helper_(U8, ((const U8*)s)[1], 0x62, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[1], 0x70, 0x73) ) ? 2 : 0 )\
2298 : ( 0x8D == ((const U8*)s)[0] ) ?                                           \
2299     ( ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x57, 0x58) ) ? 2 : 0 )      \
2300 : ( 0x8E == ((const U8*)s)[0] ) ?                                           \
2301     ( ( 0x4A == ((const U8*)s)[1] ) ? 2 : 0 )                               \
2302 : ( 0x8F == ((const U8*)s)[0] ) ?                                           \
2303     ( ( 0x67 == ((const U8*)s)[1] || 0x73 == ((const U8*)s)[1] ) ? 2 : 0 )  \
2304 : ( 0x9C == ((const U8*)s)[0] ) ?                                           \
2305     ( ( 0x57 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
2306 : ( 0xAF == ((const U8*)s)[0] ) ?                                           \
2307     ( ( 0x48 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
2308 : ( inRANGE_helper_(U8, ((const U8*)s)[0], 0xB3, 0xB4) ) ?                  \
2309     ( ( 0x70 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
2310 : ( 0xBF == ((const U8*)s)[0] ) ?                                           \
2311     ( ( ( 0x63 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x65, 0x69) || 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
2312 : ( 0xCA == ((const U8*)s)[0] ) ?                                           \
2313     ( ( ( 0x4A == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x51, 0x52) ) ) ? 3 : 0 )\
2314 : ( ( ( ( 0xDD == ((const U8*)s)[0] ) && ( 0x72 == ((const U8*)s)[1] ) ) && ( 0x67 == ((const U8*)s)[2] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x41, 0x47) ) ) ? 4 : 0 )
2315
2316 /*** GENERATED CODE ***/
2317 #define is_PROBLEMATIC_LOCALE_FOLD_cp(cp)                                   \
2318 ( cp <= 0xFF || ( 0xFF < cp &&                                              \
2319 ( inRANGE_helper_(UV, cp, 0x130, 0x131) || ( 0x131 < cp &&                  \
2320 ( 0x149 == cp || ( 0x149 < cp &&                                            \
2321 ( 0x178 == cp || ( 0x178 < cp &&                                            \
2322 ( 0x17F == cp || ( 0x17F < cp &&                                            \
2323 ( 0x1F0 == cp || ( 0x1F0 < cp &&                                            \
2324 ( 0x307 == cp || ( 0x307 < cp &&                                            \
2325 ( 0x39C == cp || ( 0x39C < cp &&                                            \
2326 ( 0x3BC == cp || ( 0x3BC < cp &&                                            \
2327 ( inRANGE_helper_(UV, cp, 0x1E96, 0x1E9A) || ( 0x1E9A < cp &&               \
2328 ( 0x1E9E == cp || ( 0x1E9E < cp &&                                          \
2329 ( inRANGE_helper_(UV, cp, 0x212A, 0x212B) || inRANGE_helper_(UV, cp, 0xFB00, 0xFB06) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )
2330
2331 /*
2332         PROBLEMATIC_LOCALE_FOLDEDS_START: The first folded character of folds which are problematic under locale
2333
2334         \p{_Perl_Problematic_Locale_Foldeds_Start}
2335 */
2336 /*** GENERATED CODE ***/
2337 #define is_PROBLEMATIC_LOCALE_FOLDEDS_START_utf8(s)                         \
2338 ( ( ( ((const U8*)s)[0] <= ' ' ) || inRANGE_helper_(U8, ((const U8*)s)[0], '.', '&') || inRANGE_helper_(U8, ((const U8*)s)[0], '!', '/') || inRANGE_helper_(U8, ((const U8*)s)[0], ',', '?') || inRANGE_helper_(U8, ((const U8*)s)[0], '`', '"') || inRANGE_helper_(U8, ((const U8*)s)[0], 'a', 'i') || inRANGE_helper_(U8, ((const U8*)s)[0], 'j', 'r') || inRANGE_helper_(U8, ((const U8*)s)[0], '~', 'z') || '[' == ((const U8*)s)[0] || ']' == ((const U8*)s)[0] || inRANGE_helper_(U8, ((const U8*)s)[0], '{', 'I') || inRANGE_helper_(U8, ((const U8*)s)[0], '}', 'R') || '\\' == ((const U8*)s)[0] || inRANGE_helper_(U8, ((const U8*)s)[0], 'S', 'Z') || inRANGE_helper_(U8, ((const U8*)s)[0], '0', '9') || 0xFF == ((const U8*)s)[0] ) ? 1\
2339 : ( 0x80 == ((const U8*)s)[0] || inRANGE_helper_(U8, ((const U8*)s)[0], 0x8A, 0x8B) ) ?\
2340     ( ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x41, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[1], 0x51, 0x59) || inRANGE_helper_(U8, ((const U8*)s)[1], 0x62, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[1], 0x70, 0x73) ) ? 2 : 0 )\
2341 : ( 0x8D == ((const U8*)s)[0] ) ?                                           \
2342     ( ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x57, 0x58) ) ? 2 : 0 )      \
2343 : ( 0x8E == ((const U8*)s)[0] ) ?                                           \
2344     ( ( 0x4A == ((const U8*)s)[1] ) ? 2 : 0 )                               \
2345 : ( 0x8F == ((const U8*)s)[0] ) ?                                           \
2346     ( ( 0x67 == ((const U8*)s)[1] || 0x73 == ((const U8*)s)[1] ) ? 2 : 0 )  \
2347 : ( 0x9C == ((const U8*)s)[0] ) ?                                           \
2348     ( ( 0x57 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
2349 : ( 0xAB == ((const U8*)s)[0] || inRANGE_helper_(U8, ((const U8*)s)[0], 0xB3, 0xB4) ) ?\
2350     ( ( 0x70 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
2351 : ( 0xBF == ((const U8*)s)[0] ) ?                                           \
2352     ( ( ( 0x63 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x65, 0x69) || 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
2353 : ( 0xCA == ((const U8*)s)[0] ) ?                                           \
2354     ( ( ( 0x4A == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x51, 0x52) ) ) ? 3 : 0 )\
2355 : ( ( ( ( 0xDD == ((const U8*)s)[0] ) && ( 0x72 == ((const U8*)s)[1] ) ) && ( 0x67 == ((const U8*)s)[2] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x41, 0x47) ) ) ? 4 : 0 )
2356
2357 /*** GENERATED CODE ***/
2358 #define is_PROBLEMATIC_LOCALE_FOLDEDS_START_cp(cp)                          \
2359 ( cp <= 0xFF || ( 0xFF < cp &&                                              \
2360 ( inRANGE_helper_(UV, cp, 0x130, 0x131) || ( 0x131 < cp &&                  \
2361 ( 0x149 == cp || ( 0x149 < cp &&                                            \
2362 ( 0x178 == cp || ( 0x178 < cp &&                                            \
2363 ( 0x17F == cp || ( 0x17F < cp &&                                            \
2364 ( 0x1F0 == cp || ( 0x1F0 < cp &&                                            \
2365 ( 0x2BC == cp || ( 0x2BC < cp &&                                            \
2366 ( 0x39C == cp || ( 0x39C < cp &&                                            \
2367 ( 0x3BC == cp || ( 0x3BC < cp &&                                            \
2368 ( inRANGE_helper_(UV, cp, 0x1E96, 0x1E9A) || ( 0x1E9A < cp &&               \
2369 ( 0x1E9E == cp || ( 0x1E9E < cp &&                                          \
2370 ( inRANGE_helper_(UV, cp, 0x212A, 0x212B) || inRANGE_helper_(UV, cp, 0xFB00, 0xFB06) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )
2371
2372 /*
2373         PATWS: pattern white space
2374
2375         \p{_Perl_PatWS}
2376 */
2377 /*** GENERATED CODE ***/
2378 #define is_PATWS_safe(s,e,is_utf8)                                          \
2379 ( ( LIKELY((e) > (s)) ) ?                                                   \
2380     ( ( '\t' == ((const U8*)s)[0] || inRANGE_helper_(U8, ((const U8*)s)[0], '\v', '\r') || '\n' == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] || ' ' == ((const U8*)s)[0] ) ? 1\
2381     : ( ( is_utf8 && LIKELY(((e) - (s)) >= UTF8SKIP(s)) ) && ( 0xCA == ((const U8*)s)[0] ) ) ? ( ( 0x41 == ((const U8*)s)[1] ) ?\
2382                     ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x55, 0x56) ) ? 3 : 0 )\
2383                 : ( ( 0x42 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x49, 0x4A) ) ) ? 3 : 0 ) : 0 )\
2384 : 0 )
2385
2386 #endif  /* EBCDIC 1047 */
2387
2388 #if 'A' == 193 /* EBCDIC 037 */ \
2389      && '\\' == 224 && '[' == 186 && ']' == 187 && '{' == 192 && '}' == 208 \
2390      && '^' == 176 && '~' == 161 && '!' == 90 && '#' == 123 && '|' == 79 \
2391      && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
2392 /*
2393         LNBREAK: Line Break: \R
2394
2395         "\x0D\x0A"      # CRLF - Network (Windows) line ending
2396         \p{VertSpace}
2397 */
2398 /*** GENERATED CODE ***/
2399 #define is_LNBREAK_safe(s,e,is_utf8)                                        \
2400 ( ((e)-(s) > 2) ?                                                           \
2401     ( ( inRANGE_helper_(U8, ((const U8*)s)[0], '\v', '\f') || 0x15 == ((const U8*)s)[0] || '\n' == ((const U8*)s)[0] ) ? 1\
2402     : ( '\r' == ((const U8*)s)[0] ) ?                                       \
2403         ( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
2404     : ( ( ( ( is_utf8 ) && ( 0xCA == ((const U8*)s)[0] ) ) && ( 0x42 == ((const U8*)s)[1] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x49, 0x4A) ) ) ? 3 : 0 )\
2405 : ((e)-(s) > 1) ?                                                           \
2406     ( ( inRANGE_helper_(U8, ((const U8*)s)[0], '\v', '\f') || 0x15 == ((const U8*)s)[0] || '\n' == ((const U8*)s)[0] ) ? 1\
2407     : ( '\r' == ((const U8*)s)[0] ) ?                                       \
2408         ( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
2409     : 0 )                                                                   \
2410 : ((e)-(s) > 0) ?                                                           \
2411     ( inRANGE_helper_(U8, ((const U8*)s)[0], '\v', '\r') || 0x15 == ((const U8*)s)[0] || '\n' == ((const U8*)s)[0] )\
2412 : 0 )
2413
2414 /*** GENERATED CODE ***/
2415 #define is_LNBREAK_utf8_safe(s,e)                                           \
2416 ( ((e)-(s) > 2) ?                                                           \
2417     ( ( inRANGE_helper_(U8, ((const U8*)s)[0], '\v', '\f') || 0x15 == ((const U8*)s)[0] || '\n' == ((const U8*)s)[0] ) ? 1\
2418     : ( '\r' == ((const U8*)s)[0] ) ?                                       \
2419         ( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
2420     : ( ( ( 0xCA == ((const U8*)s)[0] ) && ( 0x42 == ((const U8*)s)[1] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x49, 0x4A) ) ) ? 3 : 0 )\
2421 : ((e)-(s) > 1) ?                                                           \
2422     ( ( inRANGE_helper_(U8, ((const U8*)s)[0], '\v', '\f') || 0x15 == ((const U8*)s)[0] || '\n' == ((const U8*)s)[0] ) ? 1\
2423     : ( '\r' == ((const U8*)s)[0] ) ?                                       \
2424         ( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
2425     : 0 )                                                                   \
2426 : ((e)-(s) > 0) ?                                                           \
2427     ( inRANGE_helper_(U8, ((const U8*)s)[0], '\v', '\r') || 0x15 == ((const U8*)s)[0] || '\n' == ((const U8*)s)[0] )\
2428 : 0 )
2429
2430 /*** GENERATED CODE ***/
2431 #define is_LNBREAK_latin1_safe(s,e)                                         \
2432 ( ((e)-(s) > 1) ?                                                           \
2433     ( ( inRANGE_helper_(U8, ((const U8*)s)[0], '\v', '\f') || 0x15 == ((const U8*)s)[0] || '\n' == ((const U8*)s)[0] ) ? 1\
2434     : ( '\r' == ((const U8*)s)[0] ) ?                                       \
2435         ( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
2436     : 0 )                                                                   \
2437 : ((e)-(s) > 0) ?                                                           \
2438     ( inRANGE_helper_(U8, ((const U8*)s)[0], '\v', '\r') || 0x15 == ((const U8*)s)[0] || '\n' == ((const U8*)s)[0] )\
2439 : 0 )
2440
2441 /*
2442         HORIZWS: Horizontal Whitespace: \h \H
2443
2444         \p{HorizSpace}
2445 */
2446 /*** GENERATED CODE ***/
2447 #define is_HORIZWS_high(s)                                                  \
2448 ( ( 0xBD == ((const U8*)s)[0] ) ?                                           \
2449     ( ( ( 0x62 == ((const U8*)s)[1] ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
2450 : ( 0xCA == ((const U8*)s)[0] ) ?                                           \
2451     ( ( 0x41 == ((const U8*)s)[1] ) ?                                       \
2452         ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x4A) || 0x51 == ((const U8*)s)[2] ) ? 3 : 0 )\
2453     : ( 0x42 == ((const U8*)s)[1] ) ?                                       \
2454         ( ( 0x56 == ((const U8*)s)[2] ) ? 3 : 0 )                           \
2455     : ( ( 0x43 == ((const U8*)s)[1] ) && ( 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
2456 : ( ( ( 0xCE == ((const U8*)s)[0] ) && ( 0x41 == ((const U8*)s)[1] ) ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )
2457
2458 /*** GENERATED CODE ***/
2459 #define is_HORIZWS_cp_high(cp)                                              \
2460 ( 0x1680 == cp || ( 0x1680 < cp &&                                          \
2461 ( inRANGE_helper_(UV, cp, 0x2000, 0x200A) || ( 0x200A < cp &&               \
2462 ( 0x202F == cp || ( 0x202F < cp &&                                          \
2463 ( 0x205F == cp || 0x3000 == cp ) ) ) ) ) ) )
2464
2465 /*
2466         VERTWS: Vertical Whitespace: \v \V
2467
2468         \p{VertSpace}
2469 */
2470 /*** GENERATED CODE ***/
2471 #define is_VERTWS_high(s)                                                   \
2472 ( ( ( ( 0xCA == ((const U8*)s)[0] ) && ( 0x42 == ((const U8*)s)[1] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x49, 0x4A) ) ) ? 3 : 0 )
2473
2474 /*** GENERATED CODE ***/
2475 #define is_VERTWS_cp_high(cp)                                               \
2476 ( inRANGE_helper_(UV, cp, 0x2028, 0x2029) )
2477
2478 /*
2479         XDIGIT: Hexadecimal digits
2480
2481         \p{XDigit}
2482 */
2483 /*** GENERATED CODE ***/
2484 #define is_XDIGIT_high(s)                                                   \
2485 ( ( ( 0xDD == ((const U8*)s)[0] ) && ( 0x72 == ((const U8*)s)[1] ) ) ? ( ( 0x66 == ((const U8*)s)[2] ) ?\
2486             ( ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x57, 0x59) || 0x5F == ((const U8*)s)[3] || inRANGE_helper_(U8, ((const U8*)s)[3], 0x62, 0x67) ) ? 4 : 0 )\
2487         : ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x67, 0x68) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x42, 0x47) ) ) ? 4 : 0 ) : 0 )
2488
2489 /*** GENERATED CODE ***/
2490 #define is_XDIGIT_cp_high(cp)                                               \
2491 ( inRANGE_helper_(UV, cp, 0xFF10, 0xFF19) || ( 0xFF19 < cp &&               \
2492 ( inRANGE_helper_(UV, cp, 0xFF21, 0xFF26) || inRANGE_helper_(UV, cp, 0xFF41, 0xFF46) ) ) )
2493
2494 /*
2495         XPERLSPACE: \p{XPerlSpace}
2496
2497         \p{XPerlSpace}
2498 */
2499 /*** GENERATED CODE ***/
2500 #define is_XPERLSPACE_high(s)                                               \
2501 ( ( 0xBD == ((const U8*)s)[0] ) ?                                           \
2502     ( ( ( 0x62 == ((const U8*)s)[1] ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
2503 : ( 0xCA == ((const U8*)s)[0] ) ?                                           \
2504     ( ( 0x41 == ((const U8*)s)[1] ) ?                                       \
2505         ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x4A) || 0x51 == ((const U8*)s)[2] ) ? 3 : 0 )\
2506     : ( 0x42 == ((const U8*)s)[1] ) ?                                       \
2507         ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x49, 0x4A) || 0x56 == ((const U8*)s)[2] ) ? 3 : 0 )\
2508     : ( ( 0x43 == ((const U8*)s)[1] ) && ( 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
2509 : ( ( ( 0xCE == ((const U8*)s)[0] ) && ( 0x41 == ((const U8*)s)[1] ) ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )
2510
2511 /*** GENERATED CODE ***/
2512 #define is_XPERLSPACE_cp_high(cp)                                           \
2513 ( 0x1680 == cp || ( 0x1680 < cp &&                                          \
2514 ( inRANGE_helper_(UV, cp, 0x2000, 0x200A) || ( 0x200A < cp &&               \
2515 ( inRANGE_helper_(UV, cp, 0x2028, 0x2029) || ( 0x2029 < cp &&               \
2516 ( 0x202F == cp || ( 0x202F < cp &&                                          \
2517 ( 0x205F == cp || 0x3000 == cp ) ) ) ) ) ) ) ) )
2518
2519 /*
2520         NONCHAR: Non character code points
2521
2522         \p{_Perl_Nchar}
2523 */
2524 /*** GENERATED CODE ***/
2525 #define is_NONCHAR_utf8_safe(s,e)                                           \
2526 ( ( ( LIKELY((e) > (s)) ) && ( LIKELY(((e) - (s)) >= UTF8SKIP(s)) ) ) ? ( ( 0xDD == ((const U8*)s)[0] ) ?\
2527             ( ( 0x72 == ((const U8*)s)[1] ) ?                               \
2528                 ( ( 0x55 == ((const U8*)s)[2] ) ?                           \
2529                     ( ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x57, 0x59) || 0x5F == ((const U8*)s)[3] || inRANGE_helper_(U8, ((const U8*)s)[3], 0x62, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[3], 0x70, 0x72) ) ? 4 : 0 )\
2530                 : ( 0x56 == ((const U8*)s)[2] ) ?                           \
2531                     ( ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x41, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[3], 0x51, 0x56) ) ? 4 : 0 )\
2532                 : ( ( 0x72 == ((const U8*)s)[2] ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x71, 0x72) ) ) ? 4 : 0 )\
2533             : 0 )                                                           \
2534         : ( 0xDF == ((const U8*)s)[0] || 0xEA == ((const U8*)s)[0] || 0xEC == ((const U8*)s)[0] ) ?\
2535             ( ( ( ( 0x72 == ((const U8*)s)[1] ) && ( 0x72 == ((const U8*)s)[2] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x71, 0x72) ) ) ? 4 : 0 )\
2536         : ( 0xED == ((const U8*)s)[0] ) ?                                   \
2537             ( ( ( ( ( ((const U8*)s)[1] == 0x4A || ((const U8*)s)[1] == 0x52 || ( ( ((const U8*)s)[1] & 0xFD ) == 0x54 ) || ((const U8*)s)[1] == 0x58 || ((const U8*)s)[1] == 0x5F || ((const U8*)s)[1] == 0x63 || ( ( ((const U8*)s)[1] & 0xFD ) == 0x65 ) || ((const U8*)s)[1] == 0x69 || ( ( ((const U8*)s)[1] & 0xFD ) == 0x70 ) ) && ( 0x72 == ((const U8*)s)[2] ) ) && ( 0x72 == ((const U8*)s)[3] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[4], 0x71, 0x72) ) ) ? 5 : 0 )\
2538         : ( ( ( ( ( 0xEE == ((const U8*)s)[0] ) && ( 0x42 == ((const U8*)s)[1] ) ) && ( 0x72 == ((const U8*)s)[2] ) ) && ( 0x72 == ((const U8*)s)[3] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[4], 0x71, 0x72) ) ) ? 5 : 0 ) : 0 )
2539
2540 /*
2541         SURROGATE: Surrogate code points
2542
2543         \p{_Perl_Surrogate}
2544 */
2545 /*** GENERATED CODE ***/
2546 #define is_SURROGATE_utf8_safe(s,e)                                         \
2547 ( ( ( ( ( ( ((e) - (s)) >= 4 ) && ( 0xDD == ((const U8*)s)[0] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x64, 0x65) ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x51, 0x59) || 0x5F == ((const U8*)s)[2] || inRANGE_helper_(U8, ((const U8*)s)[2], 0x62, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x70, 0x72) ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x41, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[3], 0x51, 0x59) || 0x5F == ((const U8*)s)[3] || inRANGE_helper_(U8, ((const U8*)s)[3], 0x62, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[3], 0x70, 0x72) ) ) ? 4 : 0 )
2548
2549 /*
2550         QUOTEMETA: Meta-characters that \Q should quote
2551
2552         \p{_Perl_Quotemeta}
2553 */
2554 /*** GENERATED CODE ***/
2555 #define is_QUOTEMETA_high_part0_(s)                                         \
2556 ( ( 0x41 == ((const U8*)s)[1] || inRANGE_helper_(U8, ((const U8*)s)[1], 0x54, 0x59) || 0x5F == ((const U8*)s)[1] || inRANGE_helper_(U8, ((const U8*)s)[1], 0x62, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[1], 0x70, 0x72) ) ?\
2557         ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x51, 0x59) || 0x5F == ((const U8*)s)[2] || inRANGE_helper_(U8, ((const U8*)s)[2], 0x62, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x70, 0x72) ) ? 3 : 0 )\
2558     : ( 0x42 == ((const U8*)s)[1] ) ?                                       \
2559         ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x51, 0x59) || 0x5F == ((const U8*)s)[2] || inRANGE_helper_(U8, ((const U8*)s)[2], 0x62, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x70, 0x71) ) ? 3 : 0 )\
2560     : ( 0x43 == ((const U8*)s)[1] ) ?                                       \
2561         ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x42, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x51, 0x59) || 0x5F == ((const U8*)s)[2] || inRANGE_helper_(U8, ((const U8*)s)[2], 0x63, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x70, 0x72) ) ? 3 : 0 )\
2562     : ( 0x44 == ((const U8*)s)[1] ) ?                                       \
2563         ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x51, 0x56) ) ? 3 : 0 )\
2564     : ( ( 0x53 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x57, 0x59) || 0x5F == ((const U8*)s)[2] || inRANGE_helper_(U8, ((const U8*)s)[2], 0x62, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x70, 0x72) ) ) ? 3 : 0 )
2565
2566
2567 /*** GENERATED CODE ***/
2568 #define is_QUOTEMETA_high_part1_(s)                                         \
2569 ( ( 0xCB == ((const U8*)s)[0] ) ?                                           \
2570     ( ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x41, 0x43) || inRANGE_helper_(U8, ((const U8*)s)[1], 0x49, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[1], 0x51, 0x59) || 0x5F == ((const U8*)s)[1] || inRANGE_helper_(U8, ((const U8*)s)[1], 0x62, 0x68) || inRANGE_helper_(U8, ((const U8*)s)[1], 0x70, 0x72) ) ?\
2571         ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x51, 0x59) || 0x5F == ((const U8*)s)[2] || inRANGE_helper_(U8, ((const U8*)s)[2], 0x62, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x70, 0x72) ) ? 3 : 0 )\
2572     : ( 0x69 == ((const U8*)s)[1] ) ?                                       \
2573         ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x51, 0x59) || 0x5F == ((const U8*)s)[2] || inRANGE_helper_(U8, ((const U8*)s)[2], 0x62, 0x63) ) ? 3 : 0 )\
2574     : ( ( 0x6A == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x62, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x70, 0x72) ) ) ? 3 : 0 )\
2575 : ( 0xCC == ((const U8*)s)[0] ) ?                                           \
2576     ( ( ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x41, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[1], 0x51, 0x59) || 0x5F == ((const U8*)s)[1] || inRANGE_helper_(U8, ((const U8*)s)[1], 0x62, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[1], 0x70, 0x72) ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x51, 0x59) || 0x5F == ((const U8*)s)[2] || inRANGE_helper_(U8, ((const U8*)s)[2], 0x62, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x70, 0x72) ) ) ? 3 : 0 )\
2577 : ( 0xCD == ((const U8*)s)[0] ) ?                                           \
2578     ( ( ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x57, 0x59) || 0x5F == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x51, 0x59) || 0x5F == ((const U8*)s)[2] || inRANGE_helper_(U8, ((const U8*)s)[2], 0x62, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x70, 0x72) ) ) ? 3 : 0 )\
2579 : ( 0xCE == ((const U8*)s)[0] ) ?                                           \
2580     ( ( 0x41 == ((const U8*)s)[1] ) ?                                       \
2581         ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x44) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x49, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x51, 0x59) || 0x5F == ((const U8*)s)[2] || inRANGE_helper_(U8, ((const U8*)s)[2], 0x62, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x70, 0x72) ) ? 3 : 0 )\
2582     : ( 0x42 == ((const U8*)s)[1] ) ?                                       \
2583         ( ( 0x41 == ((const U8*)s)[2] || 0x57 == ((const U8*)s)[2] ) ? 3 : 0 )\
2584     : ( ( 0x52 == ((const U8*)s)[1] ) && ( 0x45 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
2585 : ( 0xDD == ((const U8*)s)[0] ) ?                                           \
2586     ( ( 0x72 == ((const U8*)s)[1] ) ?                                       \
2587         ( ( 0x4A == ((const U8*)s)[2] ) ?                                   \
2588             ( ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x71, 0x72) ) ? 4 : 0 )\
2589         : ( 0x57 == ((const U8*)s)[2] ) ?                                   \
2590             ( ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x41, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[3], 0x51, 0x56) ) ? 4 : 0 )\
2591         : ( 0x59 == ((con