/* Generated by re2c */
#line 1 "encodings/unicode_group_L__x.re"
// re2c $INPUT -o $OUTPUT -x
#include <stdint.h>
#include <stdio.h>
#include "utf16.h"
#define YYCTYPE uint16_t

bool scan(const YYCTYPE* start, const YYCTYPE* const limit) {
	__attribute__((unused)) const YYCTYPE* YYMARKER;
#define YYCURSOR start
L_:

#line 15 "encodings/unicode_group_L__x.c"
{
	YYCTYPE yych;
	yych = *YYCURSOR;
	if (yych <= 0x1FCC) {
		if (yych <= 0x10CC) {
			if (yych <= 0x037D) {
				if (yych <= 0x01BA) {
					if (yych <= 0x00B5) {
						if (yych <= '`') {
							if (yych <= '@') goto yy1;
							if (yych <= 'Z') goto yy3;
						} else {
							if (yych <= 'z') goto yy3;
							if (yych >= 0x00B5) goto yy3;
						}
					} else {
						if (yych <= 0x00D7) {
							if (yych <= 0x00BF) goto yy1;
							if (yych <= 0x00D6) goto yy3;
						} else {
							if (yych != 0x00F7) goto yy3;
						}
					}
				} else {
					if (yych <= 0x02AF) {
						if (yych <= 0x01C3) {
							if (yych <= 0x01BB) goto yy1;
							if (yych <= 0x01BF) goto yy3;
						} else {
							if (yych <= 0x0293) goto yy3;
							if (yych >= 0x0296) goto yy3;
						}
					} else {
						if (yych <= 0x0375) {
							if (yych <= 0x036F) goto yy1;
							if (yych <= 0x0373) goto yy3;
						} else {
							if (yych <= 0x0377) goto yy3;
							if (yych >= 0x037B) goto yy3;
						}
					}
				}
			} else {
				if (yych <= 0x03F5) {
					if (yych <= 0x038A) {
						if (yych <= 0x0385) {
							if (yych == 0x037F) goto yy3;
						} else {
							if (yych != 0x0387) goto yy3;
						}
					} else {
						if (yych <= 0x038D) {
							if (yych == 0x038C) goto yy3;
						} else {
							if (yych != 0x03A2) goto yy3;
						}
					}
				} else {
					if (yych <= 0x0556) {
						if (yych <= 0x0489) {
							if (yych <= 0x03F6) goto yy1;
							if (yych <= 0x0481) goto yy3;
						} else {
							if (yych != 0x0530) goto yy3;
						}
					} else {
						if (yych <= 0x109F) {
							if (yych <= 0x055F) goto yy1;
							if (yych <= 0x0588) goto yy3;
						} else {
							if (yych == 0x10C6) goto yy1;
							if (yych <= 0x10C7) goto yy3;
						}
					}
				}
			}
		} else {
			if (yych <= 0x1F17) {
				if (yych <= 0x1C8F) {
					if (yych <= 0x139F) {
						if (yych <= 0x10FA) {
							if (yych <= 0x10CD) goto yy3;
							if (yych >= 0x10D0) goto yy3;
						} else {
							if (yych <= 0x10FC) goto yy1;
							if (yych <= 0x10FF) goto yy3;
						}
					} else {
						if (yych <= 0x13FD) {
							if (yych <= 0x13F5) goto yy3;
							if (yych >= 0x13F8) goto yy3;
						} else {
							if (yych <= 0x1C7F) goto yy1;
							if (yych <= 0x1C8A) goto yy3;
						}
					}
				} else {
					if (yych <= 0x1D6A) {
						if (yych <= 0x1CBF) {
							if (yych <= 0x1CBA) goto yy3;
							if (yych >= 0x1CBD) goto yy3;
						} else {
							if (yych <= 0x1CFF) goto yy1;
							if (yych <= 0x1D2B) goto yy3;
						}
					} else {
						if (yych <= 0x1D9A) {
							if (yych != 0x1D78) goto yy3;
						} else {
							if (yych <= 0x1DFF) goto yy1;
							if (yych <= 0x1F15) goto yy3;
						}
					}
				}
			} else {
				if (yych <= 0x1F5C) {
					if (yych <= 0x1F4F) {
						if (yych <= 0x1F45) {
							if (yych <= 0x1F1D) goto yy3;
							if (yych >= 0x1F20) goto yy3;
						} else {
							if (yych <= 0x1F47) goto yy1;
							if (yych <= 0x1F4D) goto yy3;
						}
					} else {
						if (yych <= 0x1F59) {
							if (yych != 0x1F58) goto yy3;
						} else {
							if (yych == 0x1F5B) goto yy3;
						}
					}
				} else {
					if (yych <= 0x1FB5) {
						if (yych <= 0x1F7D) {
							if (yych != 0x1F5E) goto yy3;
						} else {
							if (yych <= 0x1F7F) goto yy1;
							if (yych <= 0x1FB4) goto yy3;
						}
					} else {
						if (yych <= 0x1FBE) {
							if (yych != 0x1FBD) goto yy3;
						} else {
							if (yych <= 0x1FC1) goto yy1;
							if (yych != 0x1FC5) goto yy3;
						}
					}
				}
			}
		}
	} else {
		if (yych <= 0x2CFF) {
			if (yych <= 0x2126) {
				if (yych <= 0x2102) {
					if (yych <= 0x1FEC) {
						if (yych <= 0x1FD5) {
							if (yych <= 0x1FCF) goto yy1;
							if (yych <= 0x1FD3) goto yy3;
						} else {
							if (yych <= 0x1FDB) goto yy3;
							if (yych >= 0x1FE0) goto yy3;
						}
					} else {
						if (yych <= 0x1FF5) {
							if (yych <= 0x1FF1) goto yy1;
							if (yych <= 0x1FF4) goto yy3;
						} else {
							if (yych <= 0x1FFC) goto yy3;
							if (yych >= 0x2102) goto yy3;
						}
					}
				} else {
					if (yych <= 0x2115) {
						if (yych <= 0x2109) {
							if (yych == 0x2107) goto yy3;
						} else {
							if (yych != 0x2114) goto yy3;
						}
					} else {
						if (yych <= 0x2123) {
							if (yych <= 0x2118) goto yy1;
							if (yych <= 0x211D) goto yy3;
						} else {
							if (yych != 0x2125) goto yy3;
						}
					}
				}
			} else {
				if (yych <= 0x2149) {
					if (yych <= 0x2134) {
						if (yych <= 0x2129) {
							if (yych == 0x2128) goto yy3;
						} else {
							if (yych != 0x212E) goto yy3;
						}
					} else {
						if (yych <= 0x213B) {
							if (yych == 0x2139) goto yy3;
						} else {
							if (yych <= 0x213F) goto yy3;
							if (yych >= 0x2145) goto yy3;
						}
					}
				} else {
					if (yych <= 0x2C7B) {
						if (yych <= 0x2182) {
							if (yych == 0x214E) goto yy3;
						} else {
							if (yych <= 0x2184) goto yy3;
							if (yych >= 0x2C00) goto yy3;
						}
					} else {
						if (yych <= 0x2CEA) {
							if (yych <= 0x2C7D) goto yy1;
							if (yych <= 0x2CE4) goto yy3;
						} else {
							if (yych <= 0x2CEE) goto yy3;
							if (yych <= 0x2CF1) goto yy1;
							if (yych <= 0x2CF3) goto yy3;
						}
					}
				}
			}
		} else {
			if (yych <= 0xAB68) {
				if (yych <= 0xA770) {
					if (yych <= 0xA63F) {
						if (yych <= 0x2D27) {
							if (yych != 0x2D26) goto yy3;
						} else {
							if (yych == 0x2D2D) goto yy3;
						}
					} else {
						if (yych <= 0xA69B) {
							if (yych <= 0xA66D) goto yy3;
							if (yych >= 0xA680) goto yy3;
						} else {
							if (yych <= 0xA721) goto yy1;
							if (yych <= 0xA76F) goto yy3;
						}
					}
				} else {
					if (yych <= 0xA7F4) {
						if (yych <= 0xA78E) {
							if (yych <= 0xA787) goto yy3;
							if (yych >= 0xA78B) goto yy3;
						} else {
							if (yych <= 0xA78F) goto yy1;
							if (yych <= 0xA7DC) goto yy3;
						}
					} else {
						if (yych <= 0xA7FA) {
							if (yych <= 0xA7F6) goto yy3;
							if (yych >= 0xA7FA) goto yy3;
						} else {
							if (yych <= 0xAB2F) goto yy1;
							if (yych <= 0xAB5A) goto yy3;
							if (yych >= 0xAB60) goto yy3;
						}
					}
				}
			} else {
				if (yych <= 0xD835) {
					if (yych <= 0xD803) {
						if (yych <= 0xD800) {
							if (yych <= 0xAB6F) goto yy1;
							if (yych <= 0xABBF) goto yy3;
						} else {
							if (yych <= 0xD801) goto yy4;
							if (yych >= 0xD803) goto yy5;
						}
					} else {
						if (yych <= 0xD81A) {
							if (yych == 0xD806) goto yy6;
						} else {
							if (yych <= 0xD81B) goto yy7;
							if (yych >= 0xD835) goto yy8;
						}
					}
				} else {
					if (yych <= 0xFB06) {
						if (yych <= 0xD839) {
							if (yych == 0xD837) goto yy9;
						} else {
							if (yych <= 0xD83A) goto yy10;
							if (yych >= 0xFB00) goto yy3;
						}
					} else {
						if (yych <= 0xFF20) {
							if (yych <= 0xFB12) goto yy1;
							if (yych <= 0xFB17) goto yy3;
						} else {
							if (yych <= 0xFF3A) goto yy3;
							if (yych <= 0xFF40) goto yy1;
							if (yych <= 0xFF5A) goto yy3;
						}
					}
				}
			}
		}
	}
yy1:
	++YYCURSOR;
yy2:
#line 15 "encodings/unicode_group_L__x.re"
	{ return YYCURSOR - 1 == limit; }
#line 322 "encodings/unicode_group_L__x.c"
yy3:
	++YYCURSOR;
#line 14 "encodings/unicode_group_L__x.re"
	{ goto L_; }
#line 327 "encodings/unicode_group_L__x.c"
yy4:
	yych = *++YYCURSOR;
	if (yych <= 0xDD8B) {
		if (yych <= 0xDCD7) {
			if (yych <= 0xDC4F) {
				if (yych <= 0xDBFF) goto yy2;
				goto yy3;
			} else {
				if (yych <= 0xDCAF) goto yy2;
				if (yych <= 0xDCD3) goto yy3;
				goto yy2;
			}
		} else {
			if (yych <= 0xDD7A) {
				if (yych <= 0xDCFB) goto yy3;
				if (yych <= 0xDD6F) goto yy2;
				goto yy3;
			} else {
				if (yych <= 0xDD7B) goto yy2;
				if (yych <= 0xDD8A) goto yy3;
				goto yy2;
			}
		}
	} else {
		if (yych <= 0xDDA2) {
			if (yych <= 0xDD95) {
				if (yych == 0xDD93) goto yy2;
				goto yy3;
			} else {
				if (yych <= 0xDD96) goto yy2;
				if (yych <= 0xDDA1) goto yy3;
				goto yy2;
			}
		} else {
			if (yych <= 0xDDB9) {
				if (yych == 0xDDB2) goto yy2;
				goto yy3;
			} else {
				if (yych <= 0xDDBA) goto yy2;
				if (yych <= 0xDDBC) goto yy3;
				goto yy2;
			}
		}
	}
yy5:
	yych = *++YYCURSOR;
	if (yych <= 0xDCF2) {
		if (yych <= 0xDC7F) goto yy2;
		if (yych <= 0xDCB2) goto yy3;
		if (yych <= 0xDCBF) goto yy2;
		goto yy3;
	} else {
		if (yych <= 0xDD65) {
			if (yych <= 0xDD4F) goto yy2;
			goto yy3;
		} else {
			if (yych <= 0xDD6F) goto yy2;
			if (yych <= 0xDD85) goto yy3;
			goto yy2;
		}
	}
yy6:
	yych = *++YYCURSOR;
	if (yych <= 0xDC9F) goto yy2;
	if (yych <= 0xDCDF) goto yy3;
	goto yy2;
yy7:
	yych = *++YYCURSOR;
	if (yych <= 0xDE9F) {
		if (yych <= 0xDE3F) goto yy2;
		if (yych <= 0xDE7F) goto yy3;
		goto yy2;
	} else {
		if (yych <= 0xDEB8) goto yy3;
		if (yych <= 0xDEBA) goto yy2;
		if (yych <= 0xDED3) goto yy3;
		goto yy2;
	}
yy8:
	yych = *++YYCURSOR;
	if (yych <= 0xDD3E) {
		if (yych <= 0xDCBA) {
			if (yych <= 0xDCA1) {
				if (yych <= 0xDC55) {
					if (yych <= 0xDBFF) goto yy2;
					if (yych <= 0xDC54) goto yy3;
					goto yy2;
				} else {
					if (yych == 0xDC9D) goto yy2;
					if (yych <= 0xDC9F) goto yy3;
					goto yy2;
				}
			} else {
				if (yych <= 0xDCA8) {
					if (yych <= 0xDCA2) goto yy3;
					if (yych <= 0xDCA4) goto yy2;
					if (yych <= 0xDCA6) goto yy3;
					goto yy2;
				} else {
					if (yych == 0xDCAD) goto yy2;
					if (yych <= 0xDCB9) goto yy3;
					goto yy2;
				}
			}
		} else {
			if (yych <= 0xDD0A) {
				if (yych <= 0xDCC3) {
					if (yych == 0xDCBC) goto yy2;
					goto yy3;
				} else {
					if (yych <= 0xDCC4) goto yy2;
					if (yych == 0xDD06) goto yy2;
					goto yy3;
				}
			} else {
				if (yych <= 0xDD1C) {
					if (yych <= 0xDD0C) goto yy2;
					if (yych == 0xDD15) goto yy2;
					goto yy3;
				} else {
					if (yych <= 0xDD1D) goto yy2;
					if (yych == 0xDD3A) goto yy2;
					goto yy3;
				}
			}
		}
	} else {
		if (yych <= 0xDEFB) {
			if (yych <= 0xDD51) {
				if (yych <= 0xDD45) {
					if (yych <= 0xDD3F) goto yy2;
					if (yych <= 0xDD44) goto yy3;
					goto yy2;
				} else {
					if (yych <= 0xDD46) goto yy3;
					if (yych <= 0xDD49) goto yy2;
					if (yych <= 0xDD50) goto yy3;
					goto yy2;
				}
			} else {
				if (yych <= 0xDEC1) {
					if (yych <= 0xDEA5) goto yy3;
					if (yych <= 0xDEA7) goto yy2;
					if (yych <= 0xDEC0) goto yy3;
					goto yy2;
				} else {
					if (yych == 0xDEDB) goto yy2;
					if (yych <= 0xDEFA) goto yy3;
					goto yy2;
				}
			}
		} else {
			if (yych <= 0xDF6F) {
				if (yych <= 0xDF35) {
					if (yych == 0xDF15) goto yy2;
					if (yych <= 0xDF34) goto yy3;
					goto yy2;
				} else {
					if (yych == 0xDF4F) goto yy2;
					if (yych <= 0xDF6E) goto yy3;
					goto yy2;
				}
			} else {
				if (yych <= 0xDFA9) {
					if (yych == 0xDF89) goto yy2;
					if (yych <= 0xDFA8) goto yy3;
					goto yy2;
				} else {
					if (yych == 0xDFC3) goto yy2;
					if (yych <= 0xDFCB) goto yy3;
					goto yy2;
				}
			}
		}
	}
yy9:
	yych = *++YYCURSOR;
	if (yych <= 0xDF0A) {
		if (yych <= 0xDEFF) goto yy2;
		if (yych <= 0xDF09) goto yy3;
		goto yy2;
	} else {
		if (yych <= 0xDF1E) goto yy3;
		if (yych <= 0xDF24) goto yy2;
		if (yych <= 0xDF2A) goto yy3;
		goto yy2;
	}
yy10:
	yych = *++YYCURSOR;
	if (yych <= 0xDCFF) goto yy2;
	if (yych <= 0xDD43) goto yy3;
	goto yy2;
}
#line 16 "encodings/unicode_group_L__x.re"

}

static const uint32_t chars_L_[] = {0x41,0x5a,0x61,0x7a,0xb5,0xb5,0xc0,0xd6,0xd8,0xf6,0xf8,0x1ba,0x1bc,0x1bf,0x1c4,0x293,0x296,0x2af,0x370,0x373,0x376,0x377,0x37b,0x37d,0x37f,0x37f,0x386,0x386,0x388,0x38a,0x38c,0x38c,0x38e,0x3a1,0x3a3,0x3f5,0x3f7,0x481,0x48a,0x52f,0x531,0x556,0x560,0x588,0x10a0,0x10c5,0x10c7,0x10c7,0x10cd,0x10cd,0x10d0,0x10fa,0x10fd,0x10ff,0x13a0,0x13f5,0x13f8,0x13fd,0x1c80,0x1c8a,0x1c90,0x1cba,0x1cbd,0x1cbf,0x1d00,0x1d2b,0x1d6b,0x1d77,0x1d79,0x1d9a,0x1e00,0x1f15,0x1f18,0x1f1d,0x1f20,0x1f45,0x1f48,0x1f4d,0x1f50,0x1f57,0x1f59,0x1f59,0x1f5b,0x1f5b,0x1f5d,0x1f5d,0x1f5f,0x1f7d,0x1f80,0x1fb4,0x1fb6,0x1fbc,0x1fbe,0x1fbe,0x1fc2,0x1fc4,0x1fc6,0x1fcc,0x1fd0,0x1fd3,0x1fd6,0x1fdb,0x1fe0,0x1fec,0x1ff2,0x1ff4,0x1ff6,0x1ffc,0x2102,0x2102,0x2107,0x2107,0x210a,0x2113,0x2115,0x2115,0x2119,0x211d,0x2124,0x2124,0x2126,0x2126,0x2128,0x2128,0x212a,0x212d,0x212f,0x2134,0x2139,0x2139,0x213c,0x213f,0x2145,0x2149,0x214e,0x214e,0x2183,0x2184,0x2c00,0x2c7b,0x2c7e,0x2ce4,0x2ceb,0x2cee,0x2cf2,0x2cf3,0x2d00,0x2d25,0x2d27,0x2d27,0x2d2d,0x2d2d,0xa640,0xa66d,0xa680,0xa69b,0xa722,0xa76f,0xa771,0xa787,0xa78b,0xa78e,0xa790,0xa7dc,0xa7f5,0xa7f6,0xa7fa,0xa7fa,0xab30,0xab5a,0xab60,0xab68,0xab70,0xabbf,0xfb00,0xfb06,0xfb13,0xfb17,0xff21,0xff3a,0xff41,0xff5a,0x10400,0x1044f,0x104b0,0x104d3,0x104d8,0x104fb,0x10570,0x1057a,0x1057c,0x1058a,0x1058c,0x10592,0x10594,0x10595,0x10597,0x105a1,0x105a3,0x105b1,0x105b3,0x105b9,0x105bb,0x105bc,0x10c80,0x10cb2,0x10cc0,0x10cf2,0x10d50,0x10d65,0x10d70,0x10d85,0x118a0,0x118df,0x16e40,0x16e7f,0x16ea0,0x16eb8,0x16ebb,0x16ed3,0x1d400,0x1d454,0x1d456,0x1d49c,0x1d49e,0x1d49f,0x1d4a2,0x1d4a2,0x1d4a5,0x1d4a6,0x1d4a9,0x1d4ac,0x1d4ae,0x1d4b9,0x1d4bb,0x1d4bb,0x1d4bd,0x1d4c3,0x1d4c5,0x1d505,0x1d507,0x1d50a,0x1d50d,0x1d514,0x1d516,0x1d51c,0x1d51e,0x1d539,0x1d53b,0x1d53e,0x1d540,0x1d544,0x1d546,0x1d546,0x1d54a,0x1d550,0x1d552,0x1d6a5,0x1d6a8,0x1d6c0,0x1d6c2,0x1d6da,0x1d6dc,0x1d6fa,0x1d6fc,0x1d714,0x1d716,0x1d734,0x1d736,0x1d74e,0x1d750,0x1d76e,0x1d770,0x1d788,0x1d78a,0x1d7a8,0x1d7aa,0x1d7c2,0x1d7c4,0x1d7cb,0x1df00,0x1df09,0x1df0b,0x1df1e,0x1df25,0x1df2a,0x1e900,0x1e943,};

static uint32_t encode_utf16(const uint32_t* ranges, uint32_t ranges_count, uint16_t* s) {
	uint16_t* const s0 = s;
	for (uint32_t i = 0; i < ranges_count; i += 2)
		for (uint32_t j = ranges[i]; j <= ranges[i + 1]; ++j)
			if (j <= re2c::utf16::MAX_1WORD_RUNE) {
				*s++ = j;
			} else {
				*s++ = re2c::utf16::lead_surr(j);
				*s++ = re2c::utf16::trail_surr(j);
			}
	for (uint32_t i = 0; i < 2; ++i) s[i] = 0;
	return s - s0;
}

int main() {
	YYCTYPE* buffer_L_ = new YYCTYPE[8402];
	uint32_t buffer_L__len = encode_utf16(chars_L_, sizeof(chars_L_) / sizeof(uint32_t), buffer_L_);
	if (!scan(buffer_L_, buffer_L_ + buffer_L__len)) printf("test 'L_' failed\n");
	delete[] buffer_L_;
	return 0;
}
