/* Generated by re2c */
#line 1 "encodings/unicode_group_Lm_u_encoding_policy_substitute.re"
// re2c $INPUT -o $OUTPUT -u --encoding-policy substitute
#include <stdio.h>

#define YYCTYPE unsigned int
bool scan(const YYCTYPE * start, const YYCTYPE * const limit)
{
	__attribute__((unused)) const YYCTYPE * YYMARKER; // silence compiler warnings when YYMARKER is not used
#	define YYCURSOR start
Lm:
	
#line 14 "encodings/unicode_group_Lm_u_encoding_policy_substitute.c"
{
	YYCTYPE yych;
	yych = *YYCURSOR;
	if (yych <= 0x00002C7D) {
		if (yych <= 0x00000828) {
			if (yych <= 0x00000558) {
				if (yych <= 0x000002EB) {
					if (yych <= 0x000002C5) {
						if (yych <= 0x000002AF) goto yy1;
						if (yych <= 0x000002C1) goto yy2;
					} else {
						if (yych <= 0x000002D1) goto yy2;
						if (yych <= 0x000002DF) goto yy1;
						if (yych <= 0x000002E4) goto yy2;
					}
				} else {
					if (yych <= 0x00000373) {
						if (yych == 0x000002ED) goto yy1;
						if (yych <= 0x000002EE) goto yy2;
					} else {
						if (yych <= 0x00000374) goto yy2;
						if (yych == 0x0000037A) goto yy2;
					}
				}
			} else {
				if (yych <= 0x000007F5) {
					if (yych <= 0x00000640) {
						if (yych <= 0x00000559) goto yy2;
						if (yych >= 0x00000640) goto yy2;
					} else {
						if (yych <= 0x000006E4) goto yy1;
						if (yych <= 0x000006E6) goto yy2;
						if (yych >= 0x000007F4) goto yy2;
					}
				} else {
					if (yych <= 0x0000081A) {
						if (yych == 0x000007FA) goto yy2;
						if (yych >= 0x0000081A) goto yy2;
					} else {
						if (yych == 0x00000824) goto yy2;
						if (yych >= 0x00000828) goto yy2;
					}
				}
			}
		} else {
			if (yych <= 0x00001C77) {
				if (yych <= 0x000010FB) {
					if (yych <= 0x00000E45) {
						if (yych == 0x00000971) goto yy2;
					} else {
						if (yych <= 0x00000E46) goto yy2;
						if (yych == 0x00000EC6) goto yy2;
					}
				} else {
					if (yych <= 0x00001842) {
						if (yych <= 0x000010FC) goto yy2;
						if (yych == 0x000017D7) goto yy2;
					} else {
						if (yych <= 0x00001843) goto yy2;
						if (yych == 0x00001AA7) goto yy2;
					}
				}
			} else {
				if (yych <= 0x00001DBF) {
					if (yych <= 0x00001D6A) {
						if (yych <= 0x00001C7D) goto yy2;
						if (yych >= 0x00001D2C) goto yy2;
					} else {
						if (yych == 0x00001D78) goto yy2;
						if (yych >= 0x00001D9B) goto yy2;
					}
				} else {
					if (yych <= 0x0000207F) {
						if (yych == 0x00002071) goto yy2;
						if (yych >= 0x0000207F) goto yy2;
					} else {
						if (yych <= 0x0000208F) goto yy1;
						if (yych <= 0x0000209C) goto yy2;
						if (yych >= 0x00002C7C) goto yy2;
					}
				}
			}
		}
	} else {
		if (yych <= 0x0000A788) {
			if (yych <= 0x0000A014) {
				if (yych <= 0x00003030) {
					if (yych <= 0x00002E2E) {
						if (yych == 0x00002D6F) goto yy2;
					} else {
						if (yych <= 0x00002E2F) goto yy2;
						if (yych == 0x00003005) goto yy2;
					}
				} else {
					if (yych <= 0x0000309C) {
						if (yych <= 0x00003035) goto yy2;
						if (yych == 0x0000303B) goto yy2;
					} else {
						if (yych <= 0x0000309E) goto yy2;
						if (yych <= 0x000030FB) goto yy1;
						if (yych <= 0x000030FE) goto yy2;
					}
				}
			} else {
				if (yych <= 0x0000A67F) {
					if (yych <= 0x0000A4FD) {
						if (yych <= 0x0000A015) goto yy2;
						if (yych >= 0x0000A4F8) goto yy2;
					} else {
						if (yych == 0x0000A60C) goto yy2;
						if (yych >= 0x0000A67F) goto yy2;
					}
				} else {
					if (yych <= 0x0000A71F) {
						if (yych <= 0x0000A69B) goto yy1;
						if (yych <= 0x0000A69D) goto yy2;
						if (yych >= 0x0000A717) goto yy2;
					} else {
						if (yych == 0x0000A770) goto yy2;
						if (yych >= 0x0000A788) goto yy2;
					}
				}
			}
		} else {
			if (yych <= 0x0000FF6F) {
				if (yych <= 0x0000AA6F) {
					if (yych <= 0x0000A9CE) {
						if (yych <= 0x0000A7F7) goto yy1;
						if (yych <= 0x0000A7F9) goto yy2;
					} else {
						if (yych <= 0x0000A9CF) goto yy2;
						if (yych == 0x0000A9E6) goto yy2;
					}
				} else {
					if (yych <= 0x0000AAF2) {
						if (yych <= 0x0000AA70) goto yy2;
						if (yych == 0x0000AADD) goto yy2;
					} else {
						if (yych <= 0x0000AAF4) goto yy2;
						if (yych <= 0x0000AB5B) goto yy1;
						if (yych <= 0x0000AB5F) goto yy2;
					}
				}
			} else {
				if (yych <= 0x00016FDF) {
					if (yych <= 0x00016B3F) {
						if (yych <= 0x0000FF70) goto yy2;
						if (yych <= 0x0000FF9D) goto yy1;
						if (yych <= 0x0000FF9F) goto yy2;
					} else {
						if (yych <= 0x00016B43) goto yy2;
						if (yych <= 0x00016F92) goto yy1;
						if (yych <= 0x00016F9F) goto yy2;
					}
				} else {
					if (yych <= 0x0001E136) {
						if (yych == 0x00016FE2) goto yy1;
						if (yych <= 0x00016FE3) goto yy2;
					} else {
						if (yych <= 0x0001E13D) goto yy2;
						if (yych == 0x0001E94B) goto yy2;
					}
				}
			}
		}
	}
yy1:
	++YYCURSOR;
#line 14 "encodings/unicode_group_Lm_u_encoding_policy_substitute.re"
	{ return YYCURSOR == limit; }
#line 185 "encodings/unicode_group_Lm_u_encoding_policy_substitute.c"
yy2:
	++YYCURSOR;
#line 13 "encodings/unicode_group_Lm_u_encoding_policy_substitute.re"
	{ goto Lm; }
#line 190 "encodings/unicode_group_Lm_u_encoding_policy_substitute.c"
}
#line 15 "encodings/unicode_group_Lm_u_encoding_policy_substitute.re"

}
static const unsigned int chars_Lm [] = {0x2b0,0x2c1,  0x2c6,0x2d1,  0x2e0,0x2e4,  0x2ec,0x2ec,  0x2ee,0x2ee,  0x374,0x374,  0x37a,0x37a,  0x559,0x559,  0x640,0x640,  0x6e5,0x6e6,  0x7f4,0x7f5,  0x7fa,0x7fa,  0x81a,0x81a,  0x824,0x824,  0x828,0x828,  0x971,0x971,  0xe46,0xe46,  0xec6,0xec6,  0x10fc,0x10fc,  0x17d7,0x17d7,  0x1843,0x1843,  0x1aa7,0x1aa7,  0x1c78,0x1c7d,  0x1d2c,0x1d6a,  0x1d78,0x1d78,  0x1d9b,0x1dbf,  0x2071,0x2071,  0x207f,0x207f,  0x2090,0x209c,  0x2c7c,0x2c7d,  0x2d6f,0x2d6f,  0x2e2f,0x2e2f,  0x3005,0x3005,  0x3031,0x3035,  0x303b,0x303b,  0x309d,0x309e,  0x30fc,0x30fe,  0xa015,0xa015,  0xa4f8,0xa4fd,  0xa60c,0xa60c,  0xa67f,0xa67f,  0xa69c,0xa69d,  0xa717,0xa71f,  0xa770,0xa770,  0xa788,0xa788,  0xa7f8,0xa7f9,  0xa9cf,0xa9cf,  0xa9e6,0xa9e6,  0xaa70,0xaa70,  0xaadd,0xaadd,  0xaaf3,0xaaf4,  0xab5c,0xab5f,  0xff70,0xff70,  0xff9e,0xff9f,  0x16b40,0x16b43,  0x16f93,0x16f9f,  0x16fe0,0x16fe1,  0x16fe3,0x16fe3,  0x1e137,0x1e13d,  0x1e94b,0x1e94b,  0x0,0x0};
static unsigned int encode_utf32 (const unsigned int * ranges, unsigned int ranges_count, unsigned int * s)
{
	unsigned int * const s_start = s;
	for (unsigned int i = 0; i < ranges_count; i += 2)
		for (unsigned int j = ranges[i]; j <= ranges[i + 1]; ++j)
			*s++ = j;
	return s - s_start;
}

int main ()
{
	unsigned int * buffer_Lm = new unsigned int [260];
	YYCTYPE * s = (YYCTYPE *) buffer_Lm;
	unsigned int buffer_len = encode_utf32 (chars_Lm, sizeof (chars_Lm) / sizeof (unsigned int), buffer_Lm);
	/* convert 32-bit code units to YYCTYPE; reuse the same buffer */
	for (unsigned int i = 0; i < buffer_len; ++i) s[i] = buffer_Lm[i];
	if (!scan (s, s + buffer_len))
		printf("test 'Lm' failed\n");
	delete [] buffer_Lm;
	return 0;
}
