((first_unit & 0b1000'0000) == 0b0000'0000)
return{
static_cast<uint32_t>(first_unit), 1};
253 else if((first_unit & 0b1110'0000) == 0b1100'0000)
return{
static_cast<uint32_t>(first_unit & 0b0001'1111), 2};
254 else if((first_unit & 0b1111'0000) == 0b1110'0000)
return{
static_cast<uint32_t>(first_unit & 0b0000'1111), 3};
255 else if((first_unit & 0b1111'1000) == 0b1111'0000)
return{
static_cast<uint32_t>(first_unit & 0b0000'0111), 4};
256 else if((first_unit & 0b1111'1100) == 0b1111'1000)
return{
static_cast<uint32_t>(first_unit & 0b0000'0011), 5};
257 else if((first_unit & 0b1111'1100) == 0b1111'1100)
return{
static_cast<uint32_t>(first_unit & 0b0000'0001), 6};
262 if((unit & 0b1100'0000) == 0b1000'0000)
returnunit & 0b0011'1111;
270 if((first_unit & 0b1111110000000000) == 0b1101'1000'0000'0000)
return{
static_cast<uint32_t>(first_unit & 0b0000001111111111), 2};
271 else return{first_unit, 1};
278 template<
typenameT> constexpr
fixed_string(
const T(&input)[
N+1]) noexcept {
279 ifconstexpr (std::is_same_v<T, char>) {
280 #ifdef CTRE_STRING_IS_UTF8 282 for(
size_t i{0};
i<
N; ++
i) {
283 if((
i== (
N-1)) && (input[
i] == 0))
break;
285 switch(
info.length) {
311 for(
size_t i{0};
i<
N; ++
i) {
313 if((
i== (
N-1)) && (input[
i] == 0))
break;
318}
else ifconstexpr (std::is_same_v<T, char8_t>) {
320 for(
size_t i{0};
i<
N; ++
i) {
321 if((
i== (
N-1)) && (input[
i] == 0))
break;
323 switch(
info.length) {
349}
else ifconstexpr (std::is_same_v<T, char16_t>) {
351 for(
size_t i{0};
i<
N; ++
i) {
353 if(
info.length == 2) {
355 if((input[
i] & 0b1111'1100'0000'0000) == 0b1101'1100'0000'0000) {
356 content[
out++] = ((
info.value << 10) | (input[
i] & 0b0000'0011'1111'1111)) + 0x10000;
363 if((
i== (
N-1)) && (input[
i] == 0))
break;
368}
else ifconstexpr (std::is_same_v<T, wchar_t> || std::is_same_v<T, char32_t>) {
369 for(
size_t i{0};
i<
N; ++
i) {
370 content[
i] =
static_cast<char32_t
>(input[
i]);
371 if((
i== (
N-1)) && (input[
i] == 0))
break;
377 for(
size_t i{0};
i<
N; ++
i) {
399 if(
real_size!= rhs.size())
return false;
401 if(
content[
i] != rhs[
i])
return false;
405constexpr
operatorstd::basic_string_view<char32_t>()
constnoexcept {
406 returnstd::basic_string_view<char32_t>{
content,
size()};
411 staticconstexpr char32_t
empty[1] = {0};
437constexpr
operatorstd::basic_string_view<char32_t>()
constnoexcept {
438 returnstd::basic_string_view<char32_t>{
empty, 0};
449 #ifndef CTLL__TYPE_STACK__HPP 450 #define CTLL__TYPE_STACK__HPP 452 #ifndef CTLL__UTILITIES__HPP 453 #define CTLL__UTILITIES__HPP 455 #include <type_traits> 457 #if defined __cpp_nontype_template_parameter_class 458 #define CTLL_CNTTP_COMPILER_CHECK 1 459 #elif defined __cpp_nontype_template_args 461 #if __cpp_nontype_template_args >= 201911L 462 #define CTLL_CNTTP_COMPILER_CHECK 1 463 #elif __cpp_nontype_template_args >= 201411L 465 #if defined __apple_build_version__ 466 #if defined __clang_major__ && __clang_major__ >= 13 468 #if __cplusplus > 201703L 469 #define CTLL_CNTTP_COMPILER_CHECK 1 474 #if defined __clang_major__ && __clang_major__ >= 12 476 #if __cplusplus > 201703L 477 #define CTLL_CNTTP_COMPILER_CHECK 1 484 #ifndef CTLL_CNTTP_COMPILER_CHECK 485 #define CTLL_CNTTP_COMPILER_CHECK 0 489 #define CTLL_FORCE_INLINE __forceinline 491 #define CTLL_FORCE_INLINE __attribute__((always_inline)) 499 template<
typenameA,
typename>
using type=
A;
503 template<
typename,
typenameB>
using type=
B;
514 template<
typename... Ts>
struct list{ };
521 template<
typename... Ts> constexpr
auto size(
list<Ts...>) noexcept {
return sizeof...(Ts); }
525 template<
typename... Ts> constexpr
bool empty(
list<Ts...>) noexcept {
return false; }
550 template<
typenameT = _nothing> constexpr
auto front(
empty_list,
T=
T()) noexcept ->
T{
return{}; }
570 staticconstexpr
auto check(
T) {
returnstd::true_type{}; }
571 staticconstexpr
auto check(...) {
returnstd::false_type{}; }
584 return list<Ts...,
T>{};
590 returndecltype((
list<>{} + ... + matcher.
select(Ts{}))){};
597 #ifndef CTLL__GRAMMARS__HPP 598 #define CTLL__GRAMMARS__HPP 603 template<auto v>
struct term{
617 template<
typename... Ts>
using push=
list<Ts...>;
620 struct accept{ constexpr
explicit operator bool() noexcept {
return true; } };
621 struct reject{ constexpr
explicit operator bool() noexcept {
return false; } };
653 template<auto A, decltype(A) B>
struct range{
654constexpr
inline range() noexcept { }
656 template<auto V,
typename= std::enable_if_t<(A <= V) && (V <= B)>> constexpr inline range(term<V>) noexcept;
660 template<auto V, auto... Set>
structcontains {
661 staticconstexpr
bool value= ((Set == V) || ... ||
false);
666 template<
auto... Def>
struct set{
667constexpr
inline set() noexcept { }
669 template<
autoV,
typename= std::enable_if_t<contains<V, Def...>
::value>> constexpr
inline set(
term<V>) noexcept;
671 template<
autoV,
typename= std::enable_if_t<((Def == V) || ... ||
false)>> constexpr
inline set(
term<V>) noexcept;
680 template<
autoV,
typename= std::enable_if_t<!contains<V, Def...>
::value>> constexpr
inline neg_set(
term<V>) noexcept;
682 template<
autoV,
typename= std::enable_if_t<!((Def == V) || ... ||
false)>> constexpr
inline neg_set(
term<V>) noexcept;
689 using typenameGrammar::_start;
698 template<
typenameExpected, auto V>
staticconstexpr
auto rule(Expected,
term<V>) -> std::enable_if_t<std::is_constructible_v<Expected, term<V>>,
ctll::pop_input>;
714 #ifndef CTLL__ACTIONS__HPP 715 #define CTLL__ACTIONS__HPP 722 template<
typenameAction,
typenameInputSymbol,
typenameSubject>
staticconstexpr
auto apply(Action, InputSymbol, Subject
subject) {
727 template<
typenameActions>
struct identity:
publicActions {
728 usingActions::apply;
735 usingActions::apply;
737 template<
typenameAction, auto V,
typenameSubject> constexpr
static auto apply(Action,
term<V>, Subject) -> Subject {
return{}; }
738 template<
typenameAction,
typenameSubject> constexpr
static auto apply(Action,
epsilon, Subject) -> Subject {
return{}; }
758 #if CTLL_CNTTP_COMPILER_CHECK 759 template<
typenameGrammar, ctll::fixed_
stringinput,
typenameActionSelector = empty_actions,
boolIgnoreUnknownActions = false>
struct parser{
761 template<
typenameGrammar, const auto & input,
typenameActionSelector = empty_actions,
boolIgnoreUnknownActions = false>
struct parser{
765 #if CTLL_CNTTP_COMPILER_CHECK 766 staticconstexpr
auto _input= input;
768 staticconstexpr
auto&
_input= input;
777 template<
size_tPos,
typenameStack,
typenameSubject, decision Decision>
struct results{
786 #if CTLL_CNTTP_COMPILER_CHECK 787 staticconstexpr
auto _input= input;
789 staticconstexpr
auto&
_input= input;
796 staticconstexpr
size_tposition =
Pos;
810 ifconstexpr (
Pos< input.size()) {
811constexpr
auto value= input[
Pos];
824 ifconstexpr (
Pos== 0) {
827}
else ifconstexpr ((
Pos-1) < input.size()) {
828constexpr
auto value= input[
Pos-1];
839 template<
size_tPos,
typenameTerminal,
typenameStack,
typenameSubject>
844 template<
size_tPos,
typenameTerminal,
typenameStack,
typenameSubject>
849 template<
size_tPos,
typenameTerminal,
typenameStack,
typenameSubject>
854 template<
size_t Pos,
typename... Content,
typenameTerminal,
typenameStack,
typenameSubject>
859 template<
size_tPos,
typenameTerminal,
typenameStack,
typenameSubject>
861 returndecide<Pos>(stack,
subject);
865 template<
size_t Pos,
autoV,
typename... Content,
typenameStack,
typenameSubject>
867constexpr
autolocal_input = input;
872 template<
size_t Pos,
autoV,
typename... Content,
auto T,
typenameStack,
typenameSubject>
874constexpr
autolocal_input = input;
878 template<
size_tPos,
typenameStack,
typenameSubject>
staticconstexpr
auto decide(Stack previous_stack, Subject previous_subject) noexcept {
882[[maybe_unused]]
autostack = decltype(
ctll::pop_front(previous_stack))();
885 ifconstexpr (std::is_base_of_v<
ctll::action, decltype(top_symbol)>) {
886 auto subject= Actions::apply(top_symbol, get_previous_term<Pos>(), previous_subject);
892 returndecide<Pos>(stack,
subject);
896 autocurrent_term = get_current_term<Pos>();
897 autorule = decltype(
grammar::rule(top_symbol,current_term))();
898 returnmove<Pos>(rule, current_term, stack, previous_subject);
903 template<
typenameSubject,
size_t...
Pos>
staticconstexpr
auto trampoline_decide(Subject, std::index_sequence<Pos...>) noexcept {
915 template<
typenameSubject = empty_subject>
using output= decltype(trampoline_decide<Subject>());
916 template<
typenameSubject = empty_subject>
static inlineconstexpr
bool correct_with= trampoline_decide<Subject>();
926 #ifndef CTRE__PCRE_ACTIONS__HPP 927 #define CTRE__PCRE_ACTIONS__HPP 929 #ifndef CTRE__PCRE__HPP 930 #define CTRE__PCRE__HPP 942 structbackslash_range {};
944 structblock_name2 {};
946 structclass_named_name {};
949 structcontent_in_capture {};
955 structhexdec_repeat {};
962 structmode_switch2 {};
968 structproperty_name2 {};
969 structproperty_name {};
970 structproperty_value2 {};
971 structproperty_value {};
974 structs {};
using_start = s;
1032 structpush_assert_subject_end_with_lineend:
ctll::action{};
1040 structpush_character_return_carriage:
ctll::action{};
1067 using_others =
ctll::neg_set<
'!',
'$',
'\x28',
'\x29',
'*',
'+',
',',
'-',
'.',
'/',
':',
'<',
'=',
'>',
'?',
'A',
'B',
'C',
'D',
'E',
'F',
'G',
'H',
'I',
'J',
'K',
'L',
'M',
'N',
'O',
'P',
'Q',
'R',
'S',
'T',
'U',
'V',
'W',
'X',
'Y',
'Z',
'[',
'\\',
'0',
'\"',
']',
'^',
'_',
'a',
'b',
'c',
'd',
'e',
'f',
'g',
'h',
'i',
'j',
'k',
'l',
'm',
'n',
'o',
'p',
'q',
'r',
's',
't',
'u',
'v',
'w',
'x',
'y',
'z',
'\x7B',
'|',
'\x7D',
'1',
'2',
'3',
'4',
'5',
'6',
'7',
'8',
'9'>;
1073 staticconstexpr
autorule(s,
ctll::set<
'!',
',',
'/',
':',
'<',
'0',
'-',
'=',
'>',
'A',
'B',
'C',
'D',
'E',
'F',
'G',
'H',
'I',
'J',
'K',
'L',
'M',
'N',
'O',
'P',
'Q',
'R',
'S',
'T',
'U',
'V',
'W',
'X',
'Y',
'Z',
'\"',
']',
'_',
'a',
'b',
'c',
'd',
'e',
'f',
'g',
'h',
'i',
'j',
'k',
'l',
'm',
'n',
'o',
'p',
'q',
'r',
's',
't',
'u',
'v',
'w',
'x',
'y',
'z',
'1',
'2',
'3',
'4',
'5',
'6',
'7',
'8',
'9'>) ->
ctll::push<ctll::anything, push_character, repeat, string2, content2>;
1085 staticconstexpr
autorule(
a,
ctll::set<
'!',
',',
'/',
':',
'<',
'0',
'-',
'=',
'>',
'A',
'B',
'C',
'D',
'E',
'F',
'G',
'H',
'I',
'J',
'K',
'L',
'M',
'N',
'O',
'P',
'Q',
'R',
'S',
'T',
'U',
'V',
'W',
'X',
'Y',
'Z',
'\"',
']',
'_',
'a',
'b',
'c',
'd',
'e',
'f',
'g',
'h',
'i',
'j',
'k',
'l',
'm',
'n',
'o',
'p',
'q',
'r',
's',
't',
'u',
'v',
'w',
'x',
'y',
'z',
'1',
'2',
'3',
'4',
'5',
'6',
'7',
'8',
'9'>) ->
ctll::push<ctll::anything, push_character, repeat, string2, content2, make_alternate>;
1106 staticconstexpr
autorule(backslash,
ctll::set<'1','2','3','4','5','6','7','8','9'>) ->
ctll::push<ctll::anything, create_number, make_back_reference>;
1115 staticconstexpr
autorule(backslash,
ctll::set<
'$',
'\x28',
'\x29',
'*',
'+',
'-',
'.',
'/',
'<',
'>',
'?',
'[',
'\\',
'\"',
']',
'^',
'\x7B',
'|',
'\x7D'>) ->
ctll::push<ctll::anything, push_character>;
1128 staticconstexpr
autorule(backslash_range,
ctll::set<
'$',
'\x28',
'\x29',
'*',
'+',
'-',
'.',
'/',
'<',
'>',
'?',
'[',
'\\',
'\"',
']',
'^',
'\x7B',
'|',
'\x7D'>) ->
ctll::push<ctll::anything, push_character>;
1143 staticconstexpr
autorule(block,
ctll::set<
'!',
',',
'/',
':',
'<',
'0',
'-',
'=',
'>',
'A',
'B',
'C',
'D',
'E',
'F',
'G',
'H',
'I',
'J',
'K',
'L',
'M',
'N',
'O',
'P',
'Q',
'R',
'S',
'T',
'U',
'V',
'W',
'X',
'Y',
'Z',
'\"',
']',
'_',
'a',
'b',
'c',
'd',
'e',
'f',
'g',
'h',
'i',
'j',
'k',
'l',
'm',
'n',
'o',
'p',
'q',
'r',
's',
't',
'u',
'v',
'w',
'x',
'y',
'z',
'1',
'2',
'3',
'4',
'5',
'6',
'7',
'8',
'9'>) ->
ctll::push<ctll::anything, push_character, repeat, string2, content2, make_capture, ctll::term<'\x29'>>;
1150 staticconstexpr
autorule(block_name2,
ctll::set<'>','\x7D
'>) -> ctll::epsilon; 1151 static constexpr auto rule(block_name2, ctll::set<'0
','A','B','C','D','E','F','G','H','I
','J','K
','L
','M','N','O
','P','Q
','R','S','T','U','V
','W','X
','Y
','Z','_','a','b','c
','d
','e
','f','g','h
','i','j
','k
','l','m
','n','o
','p
','q
','r','s
','t','u
','v
','w
','x
','y
','z
','1',
'2',
'3',
'4',
'5',
'6',
'7',
'8',
'9'>) ->
ctll::push<ctll::anything, push_name, block_name2>;
1155 staticconstexpr
autorule(c,
ctll::set<
'!',
'0',
'$',
'\x28',
'\x29',
'*',
'+',
',',
'.',
'/',
':',
'<',
'=',
'>',
'?',
'A',
'B',
'C',
'D',
'E',
'F',
'G',
'H',
'I',
'J',
'K',
'L',
'M',
'N',
'O',
'P',
'Q',
'R',
'S',
'T',
'U',
'V',
'W',
'X',
'Y',
'Z',
'\"',
'_',
'a',
'b',
'c',
'd',
'e',
'f',
'g',
'h',
'i',
'j',
'k',
'l',
'm',
'n',
'o',
'p',
'q',
'r',
's',
't',
'u',
'v',
'w',
'x',
'y',
'z',
'\x7B',
'|',
'\x7D',
'1',
'2',
'3',
'4',
'5',
'6',
'7',
'8',
'9'>) ->
ctll::push<ctll::anything, push_character, range, set_start, set2b, set_make, ctll::term<']'>>;
1181 staticconstexpr
autorule(content,
ctll::set<
'!',
',',
'/',
':',
'<',
'0',
'-',
'=',
'>',
'A',
'B',
'C',
'D',
'E',
'F',
'G',
'H',
'I',
'J',
'K',
'L',
'M',
'N',
'O',
'P',
'Q',
'R',
'S',
'T',
'U',
'V',
'W',
'X',
'Y',
'Z',
'\"',
']',
'_',
'a',
'b',
'c',
'd',
'e',
'f',
'g',
'h',
'i',
'j',
'k',
'l',
'm',
'n',
'o',
'p',
'q',
'r',
's',
't',
'u',
'v',
'w',
'x',
'y',
'z',
'1',
'2',
'3',
'4',
'5',
'6',
'7',
'8',
'9'>) ->
ctll::push<ctll::anything, push_character, repeat, string2, content2>;
1191 staticconstexpr
autorule(content_in_capture,
ctll::set<
'!',
',',
'/',
':',
'<',
'0',
'-',
'=',
'>',
'A',
'B',
'C',
'D',
'E',
'F',
'G',
'H',
'I',
'J',
'K',
'L',
'M',
'N',
'O',
'P',
'Q',
'R',
'S',
'T',
'U',
'V',
'W',
'X',
'Y',
'Z',
'\"',
']',
'_',
'a',
'b',
'c',
'd',
'e',
'f',
'g',
'h',
'i',
'j',
'k',
'l',
'm',
'n',
'o',
'p',
'q',
'r',
's',
't',
'u',
'v',
'w',
'x',
'y',
'z',
'1',
'2',
'3',
'4',
'5',
'6',
'7',
'8',
'9'>) ->
ctll::push<ctll::anything, push_character, repeat, string2, content2>;
1204 staticconstexpr
autorule(d,
ctll::term<'>'>) -> ctll::push<ctll::anything, reset_capture, start_atomic, content_in_capture, make_atomic, ctll::term<'\x29
'>>; 1205 static constexpr auto rule(d, ctll::term<'!
'>) -> ctll::push<ctll::anything, reset_capture, start_lookahead_negative, content_in_capture, look_finish, ctll::term<'\x29
'>>; 1206 static constexpr auto rule(d, ctll::term<'=
'>) -> ctll::push<ctll::anything, reset_capture, start_lookahead_positive, content_in_capture, look_finish, ctll::term<'\x29
'>>; 1208 static constexpr auto rule(e, ctll::term<'d
'>) -> ctll::push<ctll::anything, class_digit>; 1209 static constexpr auto rule(e, ctll::term<'h
'>) -> ctll::push<ctll::anything, class_horizontal_space>; 1210 static constexpr auto rule(e, ctll::term<'H'>) -> ctll::push<ctll::anything, class_non_horizontal_space>; 1211 static constexpr auto rule(e, ctll::term<'V
'>) -> ctll::push<ctll::anything, class_non_vertical_space>; 1212 static constexpr auto rule(e, ctll::term<'D'>) -> ctll::push<ctll::anything, class_nondigit>; 1213 static constexpr auto rule(e, ctll::term<'N'>) -> ctll::push<ctll::anything, class_nonnewline>; 1214 static constexpr auto rule(e, ctll::term<'S'>) -> ctll::push<ctll::anything, class_nonspace>; 1215 static constexpr auto rule(e, ctll::term<'W'>) -> ctll::push<ctll::anything, class_nonword>; 1216 static constexpr auto rule(e, ctll::term<'s
'>) -> ctll::push<ctll::anything, class_space>; 1217 static constexpr auto rule(e, ctll::term<'v
'>) -> ctll::push<ctll::anything, class_vertical_space>; 1218 static constexpr auto rule(e, ctll::term<'w
'>) -> ctll::push<ctll::anything, class_word>; 1219 static constexpr auto rule(e, ctll::term<'p
'>) -> ctll::push<ctll::anything, ctll::term<'\x7B
'>, property_name, ctll::term<'\x7D
'>, make_property>; 1220 static constexpr auto rule(e, ctll::term<'P'>) -> ctll::push<ctll::anything, ctll::term<'\x7B
'>, property_name, ctll::term<'\x7D
'>, make_property_negative>; 1221 static constexpr auto rule(e, ctll::term<'u
'>) -> ctll::push<ctll::anything, k, range>; 1222 static constexpr auto rule(e, ctll::term<'x
'>) -> ctll::push<ctll::anything, l, range>; 1223 static constexpr auto rule(e, ctll::set<'$
','\x28
','\x29
','*
','+
','-
','.
','/
','<
','>
','?
','[
','\\
','\
"',']','^','\x7B','|','\x7D'>) -> ctll::push<ctll::anything, push_character, range>; 1224 static constexpr auto rule(e, ctll::term<'a'>) -> ctll::push<ctll::anything, push_character_alarm, range>; 1225 static constexpr auto rule(e, ctll::term<'e'>) -> ctll::push<ctll::anything, push_character_escape, range>; 1226 static constexpr auto rule(e, ctll::term<'f'>) -> ctll::push<ctll::anything, push_character_formfeed, range>; 1227 static constexpr auto rule(e, ctll::term<'n'>) -> ctll::push<ctll::anything, push_character_newline, range>; 1228 static constexpr auto rule(e, ctll::term<'0'>) -> ctll::push<ctll::anything, push_character_null, range>; 1229 static constexpr auto rule(e, ctll::term<'r'>) -> ctll::push<ctll::anything, push_character_return_carriage, range>; 1230 static constexpr auto rule(e, ctll::term<'t'>) -> ctll::push<ctll::anything, push_character_tab, range>; 1232 static constexpr auto rule(f, ctll::term<'d'>) -> ctll::push<ctll::anything, class_digit>; 1233 static constexpr auto rule(f, ctll::term<'h'>) -> ctll::push<ctll::anything, class_horizontal_space>; 1234 static constexpr auto rule(f, ctll::term<'H'>) -> ctll::push<ctll::anything, class_non_horizontal_space>; 1235 static constexpr auto rule(f, ctll::term<'V'>) -> ctll::push<ctll::anything, class_non_vertical_space>; 1236 static constexpr auto rule(f, ctll::term<'D'>) -> ctll::push<ctll::anything, class_nondigit>; 1237 static constexpr auto rule(f, ctll::term<'N'>) -> ctll::push<ctll::anything, class_nonnewline>; 1238 static constexpr auto rule(f, ctll::term<'S'>) -> ctll::push<ctll::anything, class_nonspace>; 1239 static constexpr auto rule(f, ctll::term<'W'>) -> ctll::push<ctll::anything, class_nonword>; 1240 static constexpr auto rule(f, ctll::term<'s'>) -> ctll::push<ctll::anything, class_space>; 1241 static constexpr auto rule(f, ctll::term<'v'>) -> ctll::push<ctll::anything, class_vertical_space>; 1242 static constexpr auto rule(f, ctll::term<'w'>) -> ctll::push<ctll::anything, class_word>; 1243 static constexpr auto rule(f, ctll::term<'p'>) -> ctll::push<ctll::anything, ctll::term<'\x7B'>, property_name, ctll::term<'\x7D'>, make_property>; 1244 static constexpr auto rule(f, ctll::term<'P'>) -> ctll::push<ctll::anything, ctll::term<'\x7B'>, property_name, ctll::term<'\x7D'>, make_property_negative>; 1245 static constexpr auto rule(f, ctll::term<'u'>) -> ctll::push<ctll::anything, k, range>; 1246 static constexpr auto rule(f, ctll::term<'x'>) -> ctll::push<ctll::anything, l, range>; 1247 static constexpr auto rule(f, ctll::set<'$','\x28','\x29','*','+','-','.','/','<','>','?','[','\\','\"',']','^','\x7B','|','\x7D'>) -> ctll::push<ctll::anything, push_character, range>; 1248 static constexpr auto rule(f, ctll::term<'a'>) -> ctll::push<ctll::anything, push_character_alarm, range>; 1249 static constexpr auto rule(f, ctll::term<'e'>) -> ctll::push<ctll::anything, push_character_escape, range>; 1250 static constexpr auto rule(f, ctll::term<'f'>) -> ctll::push<ctll::anything, push_character_formfeed, range>; 1251 static constexpr auto rule(f, ctll::term<'n'>) -> ctll::push<ctll::anything, push_character_newline, range>; 1252 static constexpr auto rule(f, ctll::term<'0'>) -> ctll::push<ctll::anything, push_character_null, range>; 1253 static constexpr auto rule(f, ctll::term<'r'>) -> ctll::push<ctll::anything, push_character_return_carriage, range>; 1254 static constexpr auto rule(f, ctll::term<'t'>) -> ctll::push<ctll::anything, push_character_tab, range>; 1256 static constexpr auto rule(g, ctll::term<'s'>) -> ctll::push<ctll::anything, ctll::term<'c'>, ctll::term<'i'>, ctll::term<'i'>, class_named_ascii>; 1257 static constexpr auto rule(g, ctll::term<'l'>) -> ctll::push<ctll::anything, p>; 1259 static constexpr auto rule(h, ctll::term<'r'>) -> ctll::push<ctll::anything, ctll::term<'i'>, ctll::term<'n'>, ctll::term<'t'>, class_named_print>; 1260 static constexpr auto rule(h, ctll::term<'u'>) -> ctll::push<ctll::anything, ctll::term<'n'>, ctll::term<'c'>, ctll::term<'t'>, class_named_punct>; 1262 static constexpr auto rule(hexdec_repeat, ctll::term<'\x7D'>) -> ctll::epsilon; 1263 static constexpr auto rule(hexdec_repeat, ctll::set<'0','A','B','C','D','E','F','a','b','c','d','e','f','1','2','3','4','5','6','7','8','9'>) -> ctll::push<ctll::anything, push_hexdec, hexdec_repeat>; 1265 static constexpr auto rule(i, ctll::term<'^'>) -> ctll::push<ctll::anything, class_named_name, negate_class_named, ctll::term<':'>, ctll::term<']'>>; 1266 static constexpr auto rule(i, ctll::term<'x'>) -> ctll::push<ctll::anything, ctll::term<'d'>, ctll::term<'i'>, ctll::term<'g'>, ctll::term<'i'>, ctll::term<'t'>, class_named_xdigit, ctll::term<':'>, ctll::term<']'>>; 1267 static constexpr auto rule(i, ctll::term<'d'>) -> ctll::push<ctll::anything, ctll::term<'i'>, ctll::term<'g'>, ctll::term<'i'>, ctll::term<'t'>, class_named_digit, ctll::term<':'>, ctll::term<']'>>; 1268 static constexpr auto rule(i, ctll::term<'b'>) -> ctll::push<ctll::anything, ctll::term<'l'>, ctll::term<'a'>, ctll::term<'n'>, ctll::term<'k'>, class_named_blank, ctll::term<':'>, ctll::term<']'>>; 1269 static constexpr auto rule(i, ctll::term<'c'>) -> ctll::push<ctll::anything, ctll::term<'n'>, ctll::term<'t'>, ctll::term<'r'>, ctll::term<'l'>, class_named_cntrl, ctll::term<':'>, ctll::term<']'>>; 1270 static constexpr auto rule(i, ctll::term<'w'>) -> ctll::push<ctll::anything, ctll::term<'o'>, ctll::term<'r'>, ctll::term<'d'>, class_named_word, ctll::term<':'>, ctll::term<']'>>; 1271 static constexpr auto rule(i, ctll::term<'l'>) -> ctll::push<ctll::anything, ctll::term<'o'>, ctll::term<'w'>, ctll::term<'e'>, ctll::term<'r'>, class_named_lower, ctll::term<':'>, ctll::term<']'>>; 1272 static constexpr auto rule(i, ctll::term<'s'>) -> ctll::push<ctll::anything, ctll::term<'p'>, ctll::term<'a'>, ctll::term<'c'>, ctll::term<'e'>, class_named_space, ctll::term<':'>, ctll::term<']'>>; 1273 static constexpr auto rule(i, ctll::term<'u'>) -> ctll::push<ctll::anything, ctll::term<'p'>, ctll::term<'p'>, ctll::term<'e'>, ctll::term<'r'>, class_named_upper, ctll::term<':'>, ctll::term<']'>>; 1274 static constexpr auto rule(i, ctll::term<'g'>) -> ctll::push<ctll::anything, ctll::term<'r'>, ctll::term<'a'>, ctll::term<'p'>, ctll::term<'h'>, class_named_graph, ctll::term<':'>, ctll::term<']'>>; 1275 static constexpr auto rule(i, ctll::term<'a'>) -> ctll::push<ctll::anything, g, ctll::term<':'>, ctll::term<']'>>; 1276 static constexpr auto rule(i, ctll::term<'p'>) -> ctll::push<ctll::anything, h, ctll::term<':'>, ctll::term<']'>>; 1278 static constexpr auto rule(j, ctll::term<'\\'>) -> ctll::push<ctll::anything, backslash_range, make_range>; 1279 static constexpr auto rule(j, ctll::set<'!','$','\x28','\x29','*','+',',','.','/',':','<','=','>','?','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','\"','^','0','_','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','\x7B','|','\x7D','1','2','3','4','5','6','7','8','9'>) -> ctll::push<ctll::anything, push_character, make_range>; 1280 static constexpr auto rule(j, _others) -> ctll::push<ctll::anything, push_character, make_range>; 1281 static constexpr auto rule(j, ctll::set<'-','[',']'>) -> ctll::reject; 1283 static constexpr auto rule(k, ctll::term<'\x7B'>) -> ctll::push<create_hexdec, ctll::anything, ctll::set<'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','a','b','c','d','e','f'>, push_hexdec, hexdec_repeat, ctll::term<'\x7D'>, finish_hexdec>; 1284 static constexpr auto rule(k, ctll::set<'0','A','B','C','D','E','F','a','b','c','d','e','f','1','2','3','4','5','6','7','8','9'>) -> ctll::push<create_hexdec, ctll::anything, push_hexdec, ctll::set<'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','a','b','c','d','e','f'>, push_hexdec, ctll::set<'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','a','b','c','d','e','f'>, push_hexdec, ctll::set<'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','a','b','c','d','e','f'>, push_hexdec, finish_hexdec>; 1286 static constexpr auto rule(l, ctll::term<'\x7B'>) -> ctll::push<create_hexdec, ctll::anything, ctll::set<'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','a','b','c','d','e','f'>, push_hexdec, hexdec_repeat, ctll::term<'\x7D'>, finish_hexdec>; 1287 static constexpr auto rule(l, ctll::set<'0','A','B','C','D','E','F','a','b','c','d','e','f','1','2','3','4','5','6','7','8','9'>) -> ctll::push<create_hexdec, ctll::anything, push_hexdec, ctll::set<'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','a','b','c','d','e','f'>, push_hexdec, finish_hexdec>; 1289 static constexpr auto rule(m, ctll::set<'0','1','2','3','4','5','6','7','8','9'>) -> ctll::push<ctll::anything, create_number, number2, ctll::term<'\x7D'>, make_back_reference>; 1290 static constexpr auto rule(m, ctll::term<'-'>) -> ctll::push<ctll::anything, number, ctll::term<'\x7D'>, make_relative_back_reference>; 1291 static constexpr auto rule(m, ctll::set<'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','_','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'>) -> ctll::push<ctll::anything, push_name, block_name2, ctll::term<'\x7D'>, make_back_reference>; 1293 static constexpr auto rule(mod, ctll::set<'!','$','\x28','\x29',',','-','.','/','0',':','<','=','>','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','[','\\','\"',']','^','_','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','|','1','2','3','4','5','6','7','8','9'>) -> ctll::epsilon; 1294 static constexpr auto rule(mod, ctll::epsilon) -> ctll::epsilon; 1295 static constexpr auto rule(mod, _others) -> ctll::epsilon; 1296 static constexpr auto rule(mod, ctll::term<'?'>) -> ctll::push<ctll::anything, make_lazy>; 1297 static constexpr auto rule(mod, ctll::term<'+'>) -> ctll::push<ctll::anything, make_possessive>; 1298 static constexpr auto rule(mod, ctll::set<'*','\x7B','\x7D'>) -> ctll::reject; 1300 static constexpr auto rule(mode_switch2, ctll::term<'i'>) -> ctll::push<ctll::anything, mode_case_insensitive, mode_switch2>; 1301 static constexpr auto rule(mode_switch2, ctll::term<'c'>) -> ctll::push<ctll::anything, mode_case_sensitive, mode_switch2>; 1302 static constexpr auto rule(mode_switch2, ctll::term<'m'>) -> ctll::push<ctll::anything, mode_multiline, mode_switch2>; 1303 static constexpr auto rule(mode_switch2, ctll::term<'s'>) -> ctll::push<ctll::anything, mode_singleline, mode_switch2>; 1304 static constexpr auto rule(mode_switch2, ctll::term<'\x29'>) -> ctll::push<ctll::anything>; 1306 static constexpr auto rule(n, ctll::set<'0','1','2','3','4','5','6','7','8','9'>) -> ctll::push<ctll::anything, create_number, number2, repeat_ab, ctll::term<'\x7D'>, mod>; 1307 static constexpr auto rule(n, ctll::term<'\x7D'>) -> ctll::push<repeat_at_least, ctll::anything, mod>; 1309 static constexpr auto rule(number2, ctll::set<',','\x7D'>) -> ctll::epsilon; 1310 static constexpr auto rule(number2, ctll::set<'0','1','2','3','4','5','6','7','8','9'>) -> ctll::push<ctll::anything, push_number, number2>; 1312 static constexpr auto rule(number, ctll::set<'0','1','2','3','4','5','6','7','8','9'>) -> ctll::push<ctll::anything, create_number, number2>; 1314 static constexpr auto rule(o, ctll::set<'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','_','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'>) -> ctll::push<ctll::anything, push_name, block_name2, ctll::term<'>'>, content_in_capture, make_capture_with_name, ctll::term<'\x29'>>; 1315 static constexpr auto rule(o, ctll::term<'!'>) -> ctll::push<ctll::anything, reset_capture, start_lookbehind_negative, content_in_capture, look_finish, ctll::term<'\x29'>>; 1316 static constexpr auto rule(o, ctll::term<'='>) -> ctll::push<ctll::anything, reset_capture, start_lookbehind_positive, content_in_capture, look_finish, ctll::term<'\x29'>>; 1318 static constexpr auto rule(p, ctll::term<'p'>) -> ctll::push<ctll::anything, ctll::term<'h'>, ctll::term<'a'>, class_named_alpha>; 1319 static constexpr auto rule(p, ctll::term<'n'>) -> ctll::push<ctll::anything, ctll::term<'u'>, ctll::term<'m'>, class_named_alnum>; 1321 static constexpr auto rule(property_name2, ctll::term<'\x7D'>) -> ctll::epsilon; 1322 static constexpr auto rule(property_name2, ctll::term<'='>) -> ctll::push<ctll::anything, property_value>; 1323 static constexpr auto rule(property_name2, ctll::set<'0','.','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','_','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','1','2','3','4','5','6','7','8','9'>) -> ctll::push<ctll::anything, push_property_name, property_name2>; 1325 static constexpr auto rule(property_name, ctll::set<'0','.','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','_','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','1','2','3','4','5','6','7','8','9'>) -> ctll::push<ctll::anything, push_property_name, property_name2>; 1327 static constexpr auto rule(property_value2, ctll::term<'\x7D'>) -> ctll::epsilon; 1328 static constexpr auto rule(property_value2, ctll::set<'0','.','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','_','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','1','2','3','4','5','6','7','8','9'>) -> ctll::push<ctll::anything, push_property_value, property_value2>; 1330 static constexpr auto rule(property_value, ctll::set<'0','.','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','_','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','1','2','3','4','5','6','7','8','9'>) -> ctll::push<ctll::anything, push_property_value, property_value2>; 1332 static constexpr auto rule(range, ctll::set<'!','$','\x28','\x29','*','+',',','.','/','0',':','<','=','>','?','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','[','\\','\"',']','^','_','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','\x7B','|','\x7D','1','2','3','4','5','6','7','8','9'>) -> ctll::epsilon; 1333 static constexpr auto rule(range, ctll::epsilon) -> ctll::epsilon; 1334 static constexpr auto rule(range, _others) -> ctll::epsilon; 1335 static constexpr auto rule(range, ctll::term<'-'>) -> ctll::push<ctll::anything, j>; 1337 static constexpr auto rule(repeat, ctll::set<'!','$','\x28','\x29',',','-','.','/','0',':','<','=','>','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','[','\\','\"',']','^','_','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','|','1','2','3','4','5','6','7','8','9'>) -> ctll::epsilon; 1338 static constexpr auto rule(repeat, ctll::epsilon) -> ctll::epsilon; 1339 static constexpr auto rule(repeat, _others) -> ctll::epsilon; 1340 static constexpr auto rule(repeat, ctll::term<'?'>) -> ctll::push<ctll::anything, make_optional, mod>; 1341 static constexpr auto rule(repeat, ctll::term<'\x7B'>) -> ctll::push<ctll::anything, number, b>; 1342 static constexpr auto rule(repeat, ctll::term<'+'>) -> ctll::push<ctll::anything, repeat_plus, mod>; 1343 static constexpr auto rule(repeat, ctll::term<'*'>) -> ctll::push<ctll::anything, repeat_star, mod>; 1344 static constexpr auto rule(repeat, ctll::term<'\x7D'>) -> ctll::reject; 1346 static constexpr auto rule(set2a, ctll::term<']'>) -> ctll::epsilon; 1347 static constexpr auto rule(set2a, ctll::term<'['>) -> ctll::push<ctll::anything, ctll::term<':'>, i, range, set_start, set2b>; 1348 static constexpr auto rule(set2a, ctll::term<'\\'>) -> ctll::push<ctll::anything, f, set_start, set2b>; 1349 static constexpr auto rule(set2a, ctll::set<'!','$','\x28','\x29','*','+',',','.','/',':','<','=','>','?','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','\"','^','0','_','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','\x7B','|','\x7D','1','2','3','4','5','6','7','8','9'>) -> ctll::push<ctll::anything, push_character, range, set_start, set2b>; 1350 static constexpr auto rule(set2a, _others) -> ctll::push<ctll::anything, push_character, range, set_start, set2b>; 1351 static constexpr auto rule(set2a, ctll::term<'-'>) -> ctll::reject; 1353 static constexpr auto rule(set2b, ctll::term<']'>) -> ctll::epsilon; 1354 static constexpr auto rule(set2b, ctll::term<'['>) -> ctll::push<ctll::anything, ctll::term<':'>, i, range, set_combine, set2b>; 1355 static constexpr auto rule(set2b, ctll::term<'\\'>) -> ctll::push<ctll::anything, f, set_combine, set2b>; 1356 static constexpr auto rule(set2b, ctll::set<'!','$','\x28','\x29','*','+',',','.','/',':','<','=','>','?','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','\"','^','0','_','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','\x7B','|','\x7D','1','2','3','4','5','6','7','8','9'>) -> ctll::push<ctll::anything, push_character, range, set_combine, set2b>; 1357 static constexpr auto rule(set2b, _others) -> ctll::push<ctll::anything, push_character, range, set_combine, set2b>; 1358 static constexpr auto rule(set2b, ctll::term<'-'>) -> ctll::reject; 1360 static constexpr auto rule(string2, ctll::set<'\x29','|'>) -> ctll::epsilon; 1361 static constexpr auto rule(string2, ctll::epsilon) -> ctll::epsilon; 1362 static constexpr auto rule(string2, ctll::term<'\\'>) -> ctll::push<ctll::anything, backslash, repeat, string2, make_sequence>; 1363 static constexpr auto rule(string2, ctll::term<'['>) -> ctll::push<ctll::anything, c, repeat, string2, make_sequence>; 1364 static constexpr auto rule(string2, ctll::term<'\x28'>) -> ctll::push<ctll::anything, prepare_capture, block, repeat, string2, make_sequence>; 1365 static constexpr auto rule(string2, ctll::term<'^'>) -> ctll::push<ctll::anything, push_assert_begin, repeat, string2, make_sequence>; 1366 static constexpr auto rule(string2, ctll::term<'$'>) -> ctll::push<ctll::anything, push_assert_end, repeat, string2, make_sequence>; 1367 static constexpr auto rule(string2, ctll::set<'!',',','/',':','<','0','-','=','>','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','\"',']','_','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','1','2','3','4','5','6','7','8','9'>) -> ctll::push<ctll::anything, push_character, repeat, string2, make_sequence>; 1368 static constexpr auto rule(string2, _others) -> ctll::push<ctll::anything, push_character, repeat, string2, make_sequence>; 1369 static constexpr auto rule(string2, ctll::term<'.'>) -> ctll::push<ctll::anything, push_character_anything, repeat, string2, make_sequence>; 1370 static constexpr auto rule(string2, ctll::set<'*','+','?','\x7B','\x7D'>) -> ctll::reject; 1376 #endif //CTRE__PCRE__HPP 1378 #ifndef CTRE__ROTATE__HPP 1379 #define CTRE__ROTATE__HPP 1381 #ifndef CTRE__ATOMS__HPP 1382 #define CTRE__ATOMS__HPP 1384 #ifndef CTRE__ATOMS_CHARACTERS__HPP 1385 #define CTRE__ATOMS_CHARACTERS__HPP 1387 #ifndef CTRE__UTILITY__HPP 1388 #define CTRE__UTILITY__HPP 1390 #define CTRE_CNTTP_COMPILER_CHECK CTLL_CNTTP_COMPILER_CHECK 1393 #if __has_cpp_attribute(likely) 1394 #define CTRE_LIKELY [[likely]] 1399 #if __has_cpp_attribute(unlikely) 1400 #define CTRE_UNLIKELY [[unlikely]] 1402 #define CTRE_UNLIKELY 1406 #define CTRE_UNLIKELY 1410 #define CTRE_FORCE_INLINE __forceinline 1411 #if _MSC_VER >= 1930 1412 #define CTRE_FLATTEN [[msvc::flatten]] 1414 #define CTRE_FLATTEN 1417 #define CTRE_FORCE_INLINE inline __attribute__((always_inline)) 1418 #define CTRE_FLATTEN __attribute__((flatten)) 1423 #ifndef CTRE_V2__CTRE__FLAGS_AND_MODES__HPP 1424 #define CTRE_V2__CTRE__FLAGS_AND_MODES__HPP 1428 struct singleline { }; 1429 struct multiline { }; 1431 struct case_sensitive { }; 1432 struct case_insensitive { }; 1434 using ci = case_insensitive; 1435 using cs = case_sensitive; 1437 template <typename... Flags> struct flag_list { }; 1440 bool block_empty_match = false; 1441 bool multiline = false; 1442 bool case_insensitive = false; 1444 constexpr flags() = default; 1445 constexpr flags(const flags &) = default; 1446 constexpr flags(flags &&) = default; 1448 constexpr CTRE_FORCE_INLINE flags(ctre::singleline v) noexcept { set_flag(v); } 1449 constexpr CTRE_FORCE_INLINE flags(ctre::multiline v) noexcept { set_flag(v); } 1450 constexpr CTRE_FORCE_INLINE flags(ctre::case_sensitive v) noexcept { set_flag(v); } 1451 constexpr CTRE_FORCE_INLINE flags(ctre::case_insensitive v) noexcept { set_flag(v); } 1454 template <typename... Args> constexpr CTRE_FORCE_INLINE flags(ctll::list<Args...>) noexcept { 1455 (this->set_flag(Args{}), ...); 1458 constexpr friend CTRE_FORCE_INLINE auto operator+(flags f, pcre::mode_case_insensitive) noexcept { 1459 f.case_insensitive = true; 1463 constexpr friend CTRE_FORCE_INLINE auto operator+(flags f, pcre::mode_case_sensitive) noexcept { 1464 f.case_insensitive = false; 1468 constexpr friend CTRE_FORCE_INLINE auto operator+(flags f, pcre::mode_singleline) noexcept { 1469 f.multiline = false; 1473 constexpr friend CTRE_FORCE_INLINE auto operator+(flags f, pcre::mode_multiline) noexcept { 1478 constexpr CTRE_FORCE_INLINE void set_flag(ctre::singleline) noexcept { 1482 constexpr CTRE_FORCE_INLINE void set_flag(ctre::multiline) noexcept { 1486 constexpr CTRE_FORCE_INLINE void set_flag(ctre::case_insensitive) noexcept { 1487 case_insensitive = true; 1490 constexpr CTRE_FORCE_INLINE void set_flag(ctre::case_sensitive) noexcept { 1491 case_insensitive = false; 1495 constexpr CTRE_FORCE_INLINE auto not_empty_match(flags f) { 1496 f.block_empty_match = true; 1500 constexpr CTRE_FORCE_INLINE auto consumed_something(flags f, bool condition = true) { 1501 if (condition) f.block_empty_match = false; 1505 constexpr CTRE_FORCE_INLINE bool cannot_be_empty_match(flags f) { 1506 return f.block_empty_match; 1509 constexpr CTRE_FORCE_INLINE bool multiline_mode(flags f) { 1513 constexpr CTRE_FORCE_INLINE bool is_case_insensitive(flags f) { 1514 return f.case_insensitive; 1524 // sfinae check for types here 1526 template <typename T> class MatchesCharacter { 1527 template <typename Y, typename CharT> static auto test(CharT c) -> decltype(Y::match_char(c, std::declval<const flags &>()), std::true_type()); 1528 template <typename> static auto test(...) -> std::false_type; 1530 template <typename CharT> static inline constexpr bool value = decltype(test<T>(std::declval<CharT>()))(); 1533 template <typename T> constexpr CTRE_FORCE_INLINE bool is_ascii_alpha(T v) { 1534 return ((v >= static_cast<T>('a') && v <= static_cast<T>('z')) || (v >= static_cast<T>('A') && v <= static_cast<T>('Z'))); 1537 template <typename T> constexpr CTRE_FORCE_INLINE bool is_ascii_alpha_lowercase(T v) { 1538 return (v >= static_cast<T>('a')) && (v <= static_cast<T>('z')); 1541 template <typename T> constexpr CTRE_FORCE_INLINE bool is_ascii_alpha_uppercase(T v) { 1542 return (v >= static_cast<T>('A')) && v <= (static_cast<T>('Z')); 1545 template <auto V> struct character { 1546 template <typename CharT> CTRE_FORCE_INLINE static constexpr bool match_char(CharT value, const flags & f) noexcept { 1547 if constexpr (is_ascii_alpha(V)) { 1548 if (is_case_insensitive(f)) { 1549 if (value == (V ^ static_cast<decltype(V)>(0x20))) { 1558 template <typename... Content> struct negative_set { 1559 template <typename CharT> CTRE_FORCE_INLINE static constexpr bool match_char(CharT value, const flags & f) noexcept { 1560 return !(Content::match_char(value, f) || ... || false); 1564 template <typename... Content> struct set { 1565 template <typename CharT> CTRE_FORCE_INLINE static constexpr bool match_char(CharT value, const flags & f) noexcept { 1566 return (Content::match_char(value, f) || ... || false); 1570 template <auto... Cs> struct enumeration : set<character<Cs>...> { }; 1572 template <typename... Content> struct negate { 1573 template <typename CharT> CTRE_FORCE_INLINE static constexpr bool match_char(CharT value, const flags & f) noexcept { 1574 return !(Content::match_char(value, f) || ... || false); 1578 template <auto A, auto B> struct char_range { 1579 template <typename CharT> CTRE_FORCE_INLINE static constexpr bool match_char(CharT value, const flags & f) noexcept { 1580 if constexpr (is_ascii_alpha_lowercase(A) && is_ascii_alpha_lowercase(B)) { 1581 if (is_case_insensitive(f)) { 1582 if (value >= (A ^ static_cast<decltype(A)>(0x20)) && value <= (B ^ static_cast<decltype(B)>(0x20))) { 1586 } else if constexpr (is_ascii_alpha_uppercase(A) && is_ascii_alpha_uppercase(B)) { 1587 if (is_case_insensitive(f)) { 1588 if (value >= (A ^ static_cast<decltype(A)>(0x20)) && value <= (B ^ static_cast<decltype(B)>(0x20))) { 1593 return (value >= A) && (value <= B); 1596 using word_chars = set<char_range<'A','Z'>, char_range<'a','z'>, char_range<'0','9'>, character<'_'> >; 1598 using space_chars = enumeration<' ', '\t', '\n', '\v', '\f', '\r'>; 1600 using vertical_space_chars = enumeration< 1601 char{0x000A}, // Linefeed (LF) 1602 char{0x000B}, // Vertical tab (VT) 1603 char{0x000C}, // Form feed (FF) 1604 char{0x000D}, // Carriage return (CR) 1605 char32_t{0x0085}, // Next line (NEL) 1606 char32_t{0x2028}, // Line separator 1607 char32_t{0x2029} // Paragraph separator 1610 using horizontal_space_chars = enumeration< 1611 char{0x0009}, // Horizontal tab (HT) 1612 char{0x0020}, // Space 1613 char32_t{0x00A0}, // Non-break space 1614 char32_t{0x1680}, // Ogham space mark 1615 char32_t{0x180E}, // Mongolian vowel separator 1616 char32_t{0x2000}, // En quad 1617 char32_t{0x2001}, // Em quad 1618 char32_t{0x2002}, // En space 1619 char32_t{0x2003}, // Em space 1620 char32_t{0x2004}, // Three-per-em space 1621 char32_t{0x2005}, // Four-per-em space 1622 char32_t{0x2006}, // Six-per-em space 1623 char32_t{0x2007}, // Figure space 1624 char32_t{0x2008}, // Punctuation space 1625 char32_t{0x2009}, // Thin space 1626 char32_t{0x200A}, // Hair space 1627 char32_t{0x202F}, // Narrow no-break space 1628 char32_t{0x205F}, // Medium mathematical space 1629 char32_t{0x3000} // Ideographic space 1632 using alphanum_chars = set<char_range<'A','Z'>, char_range<'a','z'>, char_range<'0','9'> >; 1634 using alpha_chars = set<char_range<'A','Z'>, char_range<'a','z'> >; 1636 using xdigit_chars = set<char_range<'A','F'>, char_range<'a','f'>, char_range<'0','9'> >; 1639 = enumeration<'!', '"', '#
', '$
', '%
', '&
', '\
'',
'(',
')',
'*',
'+',
',',
'-',
1640 '.',
'/',
':',
';',
'<',
'=',
'>',
'?',
'@',
'[',
'\\',
']',
1641 '^',
'_',
'`',
'{',
'|',
'}',
'~'>;
1643 usingdigit_chars = char_range<'0','9'>;
1645 usingascii_chars = char_range<'\x00','\x7F'>;
1658 structstart_mark { };
1659 structend_mark { };
1660 structend_cycle_mark { };
1661 structend_lookahead_mark { };
1662 structend_lookbehind_mark { };
1663 template<
size_tId>
structnumeric_mark { };
1668 template<
auto... Str>
struct string{ };
1669 template<
typename... Opts>
structselect { };
1670 template<
typename... Content>
structsequence { };
1673 template<
size_t a,
size_t b,
typename... Content>
structrepeat { };
1674 template<
typename... Content>
using plus= repeat<1,0,Content...>;
1675 template<
typename... Content>
usingstar = repeat<0,0,Content...>;
1677 template<
size_t a,
size_t b,
typename... Content>
structlazy_repeat { };
1678 template<
typename... Content>
usinglazy_plus = lazy_repeat<1,0,Content...>;
1679 template<
typename... Content>
usinglazy_star = lazy_repeat<0,0,Content...>;
1681 template<
size_t a,
size_t b,
typename... Content>
structpossessive_repeat { };
1682 template<
typename... Content>
usingpossessive_plus = possessive_repeat<1,0,Content...>;
1683 template<
typename... Content>
usingpossessive_star = possessive_repeat<0,0,Content...>;
1685 template<
typename... Content>
usingoptional = repeat<0,1,Content...>;
1686 template<
typename... Content>
usinglazy_optional = lazy_repeat<0,1,Content...>;
1687 template<
typename... Content>
usingpossessive_optional = possessive_repeat<0,1,Content...>;
1689 template<
size_tIndex,
typename... Content>
structcapture { };
1691 template<
size_tIndex,
typenameName,
typename... Content>
structcapture_with_name { };
1693 template<
size_tIndex>
structback_reference { };
1694 template<
typenameName>
structback_reference_with_name { };
1696 template<
typenameType>
structlook_start { };
1698 template<
typename... Content>
structlookahead_positive { };
1699 template<
typename... Content>
structlookahead_negative { };
1701 template<
typename... Content>
structlookbehind_positive { };
1702 template<
typename... Content>
structlookbehind_negative { };
1704 structatomic_start { };
1706 template<
typename... Content>
structatomic_group { };
1708 template<
typename... Content>
structboundary { };
1709 template<
typename... Content>
structnot_boundary { };
1711 usingword_boundary = boundary<word_chars>;
1712 usingnot_word_boundary = not_boundary<word_chars>;
1714 structassert_subject_begin { };
1715 structassert_subject_end { };
1716 structassert_subject_end_line{ };
1717 structassert_line_begin { };
1718 structassert_line_end { };
1720 template<
typename>
structmode_switch { };
1726 #ifndef CTRE__ATOMS_UNICODE__HPP 1727 #define CTRE__ATOMS_UNICODE__HPP 1730 #ifndef H_COR3NTIN_UNICODE_SYNOPSYS 1731 #define H_COR3NTIN_UNICODE_SYNOPSYS 1733 #include <string_view> 1737 enum classcategory;
1738 enum classproperty;
1739 enum class version: unsigned char;
1743struct script_extensions_view {
1744constexpr script_extensions_view(char32_t);
1749constexpr iterator(char32_t c);
1752constexpr iterator& operator++(
int);
1754constexpr iterator operator++();
1765constexpr iterator begin()
const;
1766constexpr sentinel end()
const;
1772 structnumeric_value {
1774constexpr
double value()
const;
1775constexpr
long longnumerator()
const;
1776constexpr
intdenominator()
const;
1780constexpr numeric_value() =
default;
1781constexpr numeric_value(
long long n,
int16_td);
1785 friendconstexpr numeric_value cp_numeric_value(char32_t cp);
1788constexpr category cp_category(char32_t cp);
1789constexpr script cp_script(char32_t cp);
1790constexpr script_extensions_view cp_script_extensions(char32_t cp);
1791constexpr
versioncp_age(char32_t cp);
1792constexpr block cp_block(char32_t cp);
1793constexpr
boolcp_is_valid(char32_t cp);
1794constexpr
boolcp_is_assigned(char32_t cp);
1795constexpr
boolcp_is_ascii(char32_t cp);
1796constexpr numeric_value cp_numeric_value(char32_t cp);
1799constexpr
boolcp_script_is(char32_t);
1801constexpr
boolcp_property_is(char32_t);
1803constexpr
boolcp_category_is(char32_t);
1807 enum classbinary_prop;
1808constexpr
intpropnamecomp(std::string_view sa, std::string_view sb);
1809constexpr binary_prop binary_prop_from_string(std::string_view s);
1811 template<binary_prop p>
1812constexpr
boolget_binary_prop(char32_t) =
delete;
1814constexpr script script_from_string(std::string_view s);
1815constexpr block block_from_string(std::string_view s);
1816constexpr
versionage_from_string(std::string_view
a);
1817constexpr category category_from_string(std::string_view
a);
1819constexpr
boolis_unassigned(category cat);
1820constexpr
boolis_unknown(script s);
1821constexpr
boolis_unknown(block
b);
1822constexpr
boolis_unassigned(
versionv);
1823constexpr
boolis_unknown(binary_prop s);
1833 template<
auto... Str>
structproperty_name { };
1834 template<
auto... Str>
structproperty_value { };
1836 template<
size_tSz> constexpr std::string_view get_string_view(
const char(&
arr)[Sz]) noexcept {
1837 returnstd::string_view(
arr, Sz);
1842 template<
typenameT, T Type>
structbinary_property;
1843 template<
typenameT, T Type, auto Value>
structproperty;
1845 template<auto Type>
usingmake_binary_property = binary_property<std::remove_const_t<decltype(
Type)>,
Type>;
1846 template<auto Type, auto Value>
usingmake_property =
property<std::remove_const_t<decltype(
Type)>,
Type,
Value>;
1849 template<uni::detail::binary_prop Property>
structbinary_property<uni::detail::binary_prop, Property> {
1850 template<
typenameCharT>
inline staticconstexpr
boolmatch_char(CharT c,
const flags&) noexcept {
1851 returnuni::detail::get_binary_prop<Property>(
static_cast<char32_t
>(c));
1857 enum classproperty_type {
1858script, script_extension, age, block, unknown
1863 template<uni::script Script>
structbinary_property<uni::script, Script> {
1864 template<
typenameCharT>
inline staticconstexpr
boolmatch_char(CharT c,
const flags&) noexcept {
1865 returnuni::cp_script(c) == Script;
1869 template<uni::script Script>
structproperty<property_type, property_type::script_extension, Script> {
1870 template<
typenameCharT>
inline staticconstexpr
boolmatch_char(CharT c,
const flags&) noexcept {
1871 for(uni::script sc: uni::cp_script_extensions(c)) {
1872 if(sc == Script)
return true;
1878 template<uni::version Age>
structbinary_property<uni::
version, Age> {
1879 template<
typenameCharT>
inline staticconstexpr
boolmatch_char(CharT c,
const flags&) noexcept {
1880 returnuni::cp_age(c) <= Age;
1884 template<uni::block Block>
structbinary_property<uni::block,
Block> {
1885 template<
typenameCharT>
inline staticconstexpr
boolmatch_char(CharT c,
const flags&) noexcept {
1886 returnuni::cp_block(c) ==
Block;
1892 template<
typename=
void>
1893constexpr property_type property_type_from_name(std::string_view
str) noexcept {
1894 using namespacestd::string_view_literals;
1895 if(uni::detail::propnamecomp(
str,
"script"sv) == 0 || uni::detail::propnamecomp(
str,
"sc"sv) == 0) {
1896 returnproperty_type::script;
1897}
else if(uni::detail::propnamecomp(
str,
"script_extension"sv) == 0 || uni::detail::propnamecomp(
str,
"scx"sv) == 0) {
1898 returnproperty_type::script_extension;
1899}
else if(uni::detail::propnamecomp(
str,
"age"sv) == 0) {
1900 returnproperty_type::age;
1901}
else if(uni::detail::propnamecomp(
str,
"block"sv) == 0) {
1902 returnproperty_type::block;
1904 returnproperty_type::unknown;
1908 template<property_type Property>
structproperty_type_builder {
1909 template<
auto...
Value>
staticconstexpr
autoget() {
1914 template<
auto... Name>
structproperty_builder {
1915 staticconstexpr
charname[
sizeof...(Name)]{
static_cast<char>(Name)...};
1916 staticconstexpr property_type
type= property_type_from_name(get_string_view(name));
1918 usinghelper = property_type_builder<type>;
1920 template<
auto...
Value>
staticconstexpr
autoget() {
1921 returnhelper::template get<
Value...>();
1927 template<>
structproperty_type_builder<property_type::script> {
1928 template<
auto...
Value>
staticconstexpr
autoget() {
1929constexpr
char value[
sizeof...(Value)]{
static_cast<char>(
Value)...};
1930constexpr
autosc = uni::detail::script_from_string(get_string_view(
value));
1931 ifconstexpr (uni::detail::is_unknown(sc)) {
1934 returnmake_binary_property<sc>();
1939 template<>
structproperty_type_builder<property_type::script_extension> {
1940 template<
auto...
Value>
staticconstexpr
autoget() {
1941constexpr
char value[
sizeof...(Value)]{
static_cast<char>(
Value)...};
1942constexpr
autosc = uni::detail::script_from_string(get_string_view(
value));
1943 ifconstexpr (uni::detail::is_unknown(sc)) {
1946 returnmake_property<property_type::script_extension, sc>();
1951 template<>
structproperty_type_builder<property_type::age> {
1952 template<
auto...
Value>
staticconstexpr
autoget() {
1953constexpr
char value[
sizeof...(Value)]{
static_cast<char>(
Value)...};
1954constexpr
autoage = uni::detail::age_from_string(get_string_view(
value));
1955 ifconstexpr (uni::detail::is_unassigned(age)) {
1958 returnmake_binary_property<age>();
1963 template<>
structproperty_type_builder<property_type::block> {
1964 template<
auto...
Value>
staticconstexpr
autoget() {
1965constexpr
char value[
sizeof...(Value)]{
static_cast<char>(
Value)...};
1966constexpr
autoblock = uni::detail::block_from_string(get_string_view(
value));
1967 ifconstexpr (uni::detail::is_unknown(block)) {
1970 returnmake_binary_property<block>();
1982 template<
size_tIndex,
typename... Content>
autoconvert_to_capture(
ctll::list<Content...>) -> capture<Index, Content...>;
1983 template<
size_tIndex,
typenameName,
typename... Content>
autoconvert_to_named_capture(
ctll::list<Content...>) -> capture_with_name<Index, Name, Content...>;
1984 template<
template<size_t, size_t,
typename...>
typenameCycleType,
size_t A,
size_t B,
typename... Content>
autoconvert_to_repeat(
ctll::list<Content...>) -> CycleType<
A,
B, Content...>;
1985 template<
template<
typename...>
typenameListType,
typename... Content>
autoconvert_to_basic_list(
ctll::list<Content...>) -> ListType<Content...>;
1987 template<auto V>
structrotate_value {
1988 template<
auto... Vs>
friendconstexpr
auto operator+(string<Vs...>, rotate_value<V>) noexcept ->
string<V, Vs...> {
return{}; }
1991 structrotate_for_lookbehind {
1994 template<auto V>
static auto rotate(character<V>) -> character<V>;
1995 template<
typename... Content>
static auto rotate(negative_set<Content...>) -> negative_set<Content...>;
1997 template<
auto... Cs>
static auto rotate(enumeration<Cs...>) -> enumeration<Cs...>;
1998 template<
typename... Content>
static auto rotate(negate<Content...>) -> negate<Content...>;
1999 template<auto A, auto B>
static auto rotate(char_range<A,B>) -> char_range<A,B>;
2002 template<
auto... Str>
static auto rotate(property_name<Str...>) -> property_name<Str...>;
2003 template<
auto... Str>
static auto rotate(property_value<Str...>) -> property_value<Str...>;
2004 template<
typenameT, T Type>
static auto rotate(binary_property<T, Type>) -> binary_property<T, Type>;
2005 template<
typenameT, T Type, auto Value>
static auto rotate(property<T, Type, Value>) -> property<T, Type, Value>;
2008 static auto rotate(accept) -> accept;
2009 static auto rotate(reject) -> reject;
2010 static auto rotate(start_mark) -> start_mark;
2011 static auto rotate(end_mark) -> end_mark;
2012 static auto rotate(end_cycle_mark) -> end_cycle_mark;
2013 static auto rotate(end_lookahead_mark) -> end_lookahead_mark;
2014 static auto rotate(end_lookbehind_mark) -> end_lookbehind_mark;
2015 template<
size_tId>
static auto rotate(numeric_mark<Id>) -> numeric_mark<Id>;
2016 static auto rotate(any) -> any;
2018 template<
typename... Content>
static auto rotate(select<Content...>) -> select<Content...>;
2021 template<
size_t a,
size_t b,
typename... Content>
static auto rotate(repeat<a,b,Content...>) -> decltype(ctre::convert_to_repeat<repeat, a, b>(
ctll::rotate(
ctll::list<decltype(
rotate(Content{}))...>{})));
2022 template<
size_t a,
size_t b,
typename... Content>
static auto rotate(lazy_repeat<a,b,Content...>) -> decltype(ctre::convert_to_repeat<lazy_repeat, a, b>(
ctll::rotate(
ctll::list<decltype(
rotate(Content{}))...>{})));
2023 template<
size_t a,
size_t b,
typename... Content>
static auto rotate(possessive_repeat<a,b,Content...>) -> decltype(ctre::convert_to_repeat<possessive_repeat, a, b>(
ctll::rotate(
ctll::list<decltype(
rotate(Content{}))...>{})));
2025 template<
size_tIndex,
typename... Content>
static auto rotate(capture<Index, Content...>) {
2029 template<
size_tIndex,
typenameName,
typename... Content>
static auto rotate(capture_with_name<Index, Name, Content...>) {
2033 template<
size_tIndex>
static auto rotate(back_reference<Index>) -> back_reference<Index>;
2034 template<
typenameName>
static auto rotate(back_reference_with_name<Name>) -> back_reference_with_name<Name>;
2036 template<
typename... Content>
static auto rotate(look_start<Content...>) -> look_start<Content...>;
2038 template<
auto... Str>
static auto rotate(string<Str...>) -> decltype((string<>{} + ... + rotate_value<Str>{}));
2040 template<
typename... Content>
static auto rotate(sequence<Content...>) {
2045 template<
typename... Content>
static auto rotate(lookahead_positive<Content...>) -> lookahead_positive<Content...>;
2046 template<
typename... Content>
static auto rotate(lookahead_negative<Content...>) -> lookahead_negative<Content...>;
2047 template<
typename... Content>
static auto rotate(lookbehind_positive<Content...>) -> lookbehind_positive<Content...>;
2048 template<
typename... Content>
static auto rotate(lookbehind_negative<Content...>) -> lookbehind_negative<Content...>;
2050 static auto rotate(atomic_start) -> atomic_start;
2052 template<
typename... Content>
static auto rotate(atomic_group<Content...>) {
2056 template<
typename... Content>
static auto rotate(boundary<Content...>) -> boundary<Content...>;
2057 template<
typename... Content>
static auto rotate(not_boundary<Content...>) -> not_boundary<Content...>;
2059 static auto rotate(assert_subject_begin) -> assert_subject_begin;
2060 static auto rotate(assert_subject_end) -> assert_subject_end;
2061 static auto rotate(assert_subject_end_line) -> assert_subject_end_line;
2062 static auto rotate(assert_line_begin) -> assert_line_begin;
2063 static auto rotate(assert_line_end) -> assert_line_end;
2071 #ifndef CTRE__ID__HPP 2072 #define CTRE__ID__HPP 2074 #include <type_traits> 2078 template<
auto... Name>
structid {
2081 friendconstexpr
auto operator==(id<Name...>, id<Name...>) noexcept -> std::true_type {
return{}; }
2083 template<
auto... Other>
friendconstexpr
auto operator==(id<Name...>, id<Other...>) noexcept -> std::false_type {
return{}; }
2085 template<
typenameT>
friendconstexpr
auto operator==(id<Name...>,
T) noexcept -> std::false_type {
return{}; }
2087 template<
typenameT>
friendconstexpr
auto operator==(
T, id<Name...>) noexcept -> std::false_type {
return{}; }
2099 template<
size_tCounter>
structpcre_parameters {
2100 staticconstexpr
size_tcurrent_counter = Counter;
2103 template<
typenameStack = ctll::list<>,
typenameParameters = pcre_parameters<0>,
typenameMode = ctll::list<>>
structpcre_context {
2104 usingstack_type = Stack;
2105 usingparameters_type = Parameters;
2106 usingmode_list = Mode;
2107 staticconstexpr
inline autostack = stack_type();
2108 staticconstexpr
inline autoparameters = parameters_type();
2109 staticconstexpr
inline auto mode= mode_list();
2110constexpr pcre_context() noexcept { }
2111constexpr pcre_context(Stack, Parameters) noexcept { }
2112constexpr pcre_context(Stack, Parameters, Mode) noexcept { }
2115 template<
typename... Content,
typenameParameters> pcre_context(
ctll::list<Content...>, Parameters) -> pcre_context<
ctll::list<Content...>, Parameters>;
2117 template<
size_tValue>
struct number{ };
2119 template<
size_tId>
structcapture_id { };
2121 structpcre_actions {
2123 #ifndef CTRE__ACTIONS__ASSERTS__HPP 2124 #define CTRE__ACTIONS__ASSERTS__HPP 2127 template<
autoV,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::push_assert_begin,
ctll::term<V>, pcre_context<
ctll::list<Ts...>, Parameters>
subject) {
2132 template<
autoV,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::push_assert_end,
ctll::term<V>, pcre_context<
ctll::list<Ts...>, Parameters>
subject) {
2137 template<
autoV,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::push_assert_subject_begin,
ctll::term<V>, pcre_context<
ctll::list<Ts...>, Parameters>
subject) {
2142 template<
autoV,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::push_assert_subject_end,
ctll::term<V>, pcre_context<
ctll::list<Ts...>, Parameters>
subject) {
2147 template<
autoV,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::push_assert_subject_end_with_lineend,
ctll::term<V>, pcre_context<
ctll::list<Ts...>, Parameters>
subject) {
2153 #ifndef CTRE__ACTIONS__ATOMIC_GROUP__HPP 2154 #define CTRE__ACTIONS__ATOMIC_GROUP__HPP 2157 template<
autoV,
typename... Ts,
size_tCounter>
staticconstexpr
autoapply(pcre::start_atomic,
ctll::term<V>, pcre_context<
ctll::list<Ts...>, pcre_parameters<Counter>>) {
2158 returnpcre_context{
ctll::list<atomic_start, Ts...>(), pcre_parameters<Counter>()};
2167 template<
autoV,
typename... Atomic,
typename... Ts,
size_tCounter>
staticconstexpr
autoapply(pcre::make_atomic,
ctll::term<V>, pcre_context<
ctll::list<sequence<Atomic...>, atomic_start, Ts...>, pcre_parameters<Counter>>) {
2168 returnpcre_context{
ctll::list<atomic_group<Atomic...>, Ts...>(), pcre_parameters<Counter>()};
2173 #ifndef CTRE__ACTIONS__BACKREFERENCE__HPP 2174 #define CTRE__ACTIONS__BACKREFERENCE__HPP 2177 template<
auto... Str,
autoV,
typename... Ts,
size_tCounter>
staticconstexpr
autoapply(pcre::make_back_reference,
ctll::term<V>, pcre_context<
ctll::list<id<Str...>, Ts...>, pcre_parameters<Counter>>) {
2182 template<
autoV,
size_tId,
typename... Ts,
size_tCounter>
staticconstexpr
autoapply(pcre::make_back_reference,
ctll::term<V>, pcre_context<
ctll::list<number<Id>, Ts...>, pcre_parameters<Counter>>) {
2184 ifconstexpr (Counter < Id) {
2192 template<
autoV,
size_tId,
typename... Ts,
size_tCounter>
staticconstexpr
autoapply(pcre::make_relative_back_reference,
ctll::term<V>, [[maybe_unused]] pcre_context<
ctll::list<number<Id>, Ts...>, pcre_parameters<Counter>>) {
2194 ifconstexpr (Counter < Id) {
2197constexpr
size_tabsolute_id = (Counter + 1) - Id;
2204 #ifndef CTRE__ACTIONS__BOUNDARIES__HPP 2205 #define CTRE__ACTIONS__BOUNDARIES__HPP 2208 template<
autoV,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::push_word_boundary,
ctll::term<V>, pcre_context<
ctll::list<Ts...>, Parameters>
subject) {
2213 template<
autoV,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::push_not_word_boundary,
ctll::term<V>, pcre_context<
ctll::list<Ts...>, Parameters>
subject) {
2219 #ifndef CTRE__ACTIONS__CAPTURE__HPP 2220 #define CTRE__ACTIONS__CAPTURE__HPP 2223 template<
autoV,
typename... Ts,
size_tCounter>
staticconstexpr
autoapply(pcre::prepare_capture,
ctll::term<V>, pcre_context<
ctll::list<Ts...>, pcre_parameters<Counter>>) {
2228 template<
autoV,
typename... Ts,
size_tId,
size_tCounter>
staticconstexpr
autoapply(pcre::reset_capture,
ctll::term<V>, pcre_context<
ctll::list<capture_id<Id>, Ts...>, pcre_parameters<Counter>>) {
2229 returnpcre_context{
ctll::list<Ts...>(), pcre_parameters<Counter-1>()};
2233 template<
autoV,
typename A,
size_tId,
typename... Ts,
size_tCounter>
staticconstexpr
autoapply(pcre::make_capture,
ctll::term<V>, pcre_context<
ctll::list<
A, capture_id<Id>, Ts...>, pcre_parameters<Counter>>) {
2237 template<
autoV,
typename... Content,
size_tId,
typename... Ts,
size_tCounter>
staticconstexpr
autoapply(pcre::make_capture,
ctll::term<V>, pcre_context<
ctll::list<sequence<Content...>, capture_id<Id>, Ts...>, pcre_parameters<Counter>>) {
2245 template<
auto... Str,
autoV,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::push_name,
ctll::term<V>, pcre_context<
ctll::list<id<Str...>, Ts...>, Parameters>
subject) {
2249 template<
auto... Str,
autoV,
typename A,
size_tId,
typename... Ts,
size_tCounter>
staticconstexpr
autoapply(pcre::make_capture_with_name,
ctll::term<V>, pcre_context<
ctll::list<
A, id<Str...>, capture_id<Id>, Ts...>, pcre_parameters<Counter>>) {
2253 template<
auto... Str,
autoV,
typename... Content,
size_tId,
typename... Ts,
size_tCounter>
staticconstexpr
autoapply(pcre::make_capture_with_name,
ctll::term<V>, pcre_context<
ctll::list<sequence<Content...>, id<Str...>, capture_id<Id>, Ts...>, pcre_parameters<Counter>>) {
2259 #ifndef CTRE__ACTIONS__CHARACTERS__HPP 2260 #define CTRE__ACTIONS__CHARACTERS__HPP 2263 template<
autoV,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::push_character,
ctll::term<V>, pcre_context<
ctll::list<Ts...>, Parameters>
subject) {
2267 template<
autoV,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::push_character_anything,
ctll::term<V>, pcre_context<
ctll::list<Ts...>, Parameters>
subject) {
2271 template<
autoV,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::push_character_alarm,
ctll::term<V>, pcre_context<
ctll::list<Ts...>, Parameters>
subject) {
2275 template<
autoV,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::push_character_escape,
ctll::term<V>, pcre_context<
ctll::list<Ts...>, Parameters>
subject) {
2279 template<
autoV,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::push_character_formfeed,
ctll::term<V>, pcre_context<
ctll::list<Ts...>, Parameters>
subject) {
2283 template<
autoV,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::push_character_newline,
ctll::term<V>, pcre_context<
ctll::list<Ts...>, Parameters>
subject) {
2287 template<
autoV,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::push_character_null,
ctll::term<V>, pcre_context<
ctll::list<Ts...>, Parameters>
subject) {
2291 template<
autoV,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::push_character_return_carriage,
ctll::term<V>, pcre_context<
ctll::list<Ts...>, Parameters>
subject) {
2295 template<
autoV,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::push_character_tab,
ctll::term<V>, pcre_context<
ctll::list<Ts...>, Parameters>
subject) {
2301 #ifndef CTRE__ACTIONS__CLASS__HPP 2302 #define CTRE__ACTIONS__CLASS__HPP 2309 template<
autoV,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::class_nondigit,
ctll::term<V>, pcre_context<
ctll::list<Ts...>, Parameters>
subject) {
2317 template<
autoV,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::class_nonspace,
ctll::term<V>, pcre_context<
ctll::list<Ts...>, Parameters>
subject) {
2322 template<
autoV,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::class_horizontal_space,
ctll::term<V>, pcre_context<
ctll::list<Ts...>, Parameters>
subject) {
2326 template<
autoV,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::class_non_horizontal_space,
ctll::term<V>, pcre_context<
ctll::list<Ts...>, Parameters>
subject) {
2330 template<
autoV,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::class_vertical_space,
ctll::term<V>, pcre_context<
ctll::list<Ts...>, Parameters>
subject) {
2334 template<
autoV,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::class_non_vertical_space,
ctll::term<V>, pcre_context<
ctll::list<Ts...>, Parameters>
subject) {
2347 template<
autoV,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::class_nonnewline,
ctll::term<V>, pcre_context<
ctll::list<Ts...>, Parameters>
subject) {
2353 #ifndef CTRE__ACTIONS__FUSION__HPP 2354 #define CTRE__ACTIONS__FUSION__HPP 2356 staticconstexpr
size_tcombine_max_repeat_length(
size_t A,
size_t B) {
2357 if(
A&&
B)
return A+
B;
2361 template<
size_tMinA,
size_tMaxA,
size_tMinB,
size_tMaxB,
typename... Content>
staticconstexpr
autocombine_repeat(repeat<MinA, MaxA, Content...>, repeat<MinB, MaxB, Content...>) {
2362 returnrepeat<MinA + MinB, combine_max_repeat_length(MaxA, MaxB), Content...>();
2365 template<
size_tMinA,
size_tMaxA,
size_tMinB,
size_tMaxB,
typename... Content>
staticconstexpr
autocombine_repeat(lazy_repeat<MinA, MaxA, Content...>, lazy_repeat<MinB, MaxB, Content...>) {
2366 returnlazy_repeat<MinA + MinB, combine_max_repeat_length(MaxA, MaxB), Content...>();
2369 template<
size_tMinA,
size_tMaxA,
size_tMinB,
size_tMaxB,
typename... Content>
staticconstexpr
autocombine_repeat(possessive_repeat<MinA, MaxA, Content...>, possessive_repeat<MinB, MaxB, Content...>) {
2370[[maybe_unused]] constexpr
boolfirst_is_unbounded = (MaxA == 0);
2371[[maybe_unused]] constexpr
boolsecond_is_nonempty = (MinB > 0);
2372[[maybe_unused]] constexpr
boolsecond_can_be_empty = (MinB == 0);
2374 ifconstexpr (first_is_unbounded && second_is_nonempty) {
2376 returnsequence<reject, Content...>();
2377}
else ifconstexpr (first_is_unbounded) {
2378 returnpossessive_repeat<MinA, MaxA, Content...>();
2379}
else ifconstexpr (second_can_be_empty) {
2380 returnpossessive_repeat<MinA, combine_max_repeat_length(MaxA, MaxB), Content...>();
2382 returnpossessive_repeat<MaxA + MinB, combine_max_repeat_length(MaxA, MaxB), Content...>();
2387 template<
autoV,
size_tMinA,
size_tMaxA,
size_tMinB,
size_tMaxB,
typename... Content,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::make_sequence,
ctll::term<V>, pcre_context<
ctll::list<repeat<MinB, MaxB, Content...>, repeat<MinA, MaxA, Content...>, Ts...>, Parameters>
subject) {
2392 template<
autoV,
size_tMinA,
size_tMaxA,
size_tMinB,
size_tMaxB,
typename... Content,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::make_sequence,
ctll::term<V>, pcre_context<
ctll::list<lazy_repeat<MinB, MaxB, Content...>, lazy_repeat<MinA, MaxA, Content...>, Ts...>, Parameters>
subject) {
2397 template<
autoV,
size_tMinA,
size_tMaxA,
size_tMinB,
size_tMaxB,
typename... Content,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::make_sequence,
ctll::term<V>, pcre_context<
ctll::list<possessive_repeat<MinB, MaxB, Content...>, possessive_repeat<MinA, MaxA, Content...>, Ts...>, Parameters>
subject) {
2402 template<
autoV,
size_tMinA,
size_tMaxA,
size_tMinB,
size_tMaxB,
typename... Content,
typename... As,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::make_sequence,
ctll::term<V>, pcre_context<
ctll::list<sequence<repeat<MinB, MaxB, Content...>, As...>,repeat<MinA, MaxA, Content...>,Ts...>, Parameters>
subject) {
2403 using result= decltype(combine_repeat(repeat<MinB, MaxB, Content...>(), repeat<MinA, MaxA, Content...>()));
2409 template<
autoV,
size_tMinA,
size_tMaxA,
size_tMinB,
size_tMaxB,
typename... Content,
typename... As,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::make_sequence,
ctll::term<V>, pcre_context<
ctll::list<sequence<lazy_repeat<MinB, MaxB, Content...>, As...>,lazy_repeat<MinA, MaxA, Content...>,Ts...>, Parameters>
subject) {
2410 using result= decltype(combine_repeat(lazy_repeat<MinB, MaxB, Content...>(), lazy_repeat<MinA, MaxA, Content...>()));
2416 template<
autoV,
size_tMinA,
size_tMaxA,
size_tMinB,
size_tMaxB,
typename... Content,
typename... As,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::make_sequence,
ctll::term<V>, pcre_context<
ctll::list<sequence<possessive_repeat<MinB, MaxB, Content...>, As...>,possessive_repeat<MinA, MaxA, Content...>,Ts...>, Parameters>
subject) {
2417 using result= decltype(combine_repeat(possessive_repeat<MinB, MaxB, Content...>(), possessive_repeat<MinA, MaxA, Content...>()));
2424 #ifndef CTRE__ACTIONS__HEXDEC__HPP 2425 #define CTRE__ACTIONS__HEXDEC__HPP 2432 template<
autoV,
size_t N,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::push_hexdec,
ctll::term<V>, pcre_context<
ctll::list<number<N>, Ts...>, Parameters>
subject) {
2433constexpr
autoprevious =
N<< 4ull;
2434 ifconstexpr (V >=
'a'&& V <=
'f') {
2436}
else ifconstexpr (V >=
'A'&& V <=
'F') {
2443 template<
autoV,
size_t N,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::finish_hexdec,
ctll::term<V>, pcre_context<
ctll::list<number<N>, Ts...>, Parameters>
subject) {
2445 ifconstexpr (
N<= max_char) {
2454 #ifndef CTRE__ACTIONS__LOOKAHEAD__HPP 2455 #define CTRE__ACTIONS__LOOKAHEAD__HPP 2458 template<
autoV,
typename... Ts,
size_tCounter>
staticconstexpr
autoapply(pcre::start_lookahead_positive,
ctll::term<V>, pcre_context<
ctll::list<Ts...>, pcre_parameters<Counter>>) {
2463 template<
autoV,
typenameLook,
typename... Ts,
size_tCounter>
staticconstexpr
autoapply(pcre::look_finish,
ctll::term<V>, pcre_context<
ctll::list<Look, look_start<lookahead_positive<>>, Ts...>, pcre_parameters<Counter>>) {
2468 template<
autoV,
typename... Look,
typename... Ts,
size_tCounter>
staticconstexpr
autoapply(pcre::look_finish,
ctll::term<V>, pcre_context<
ctll::list<ctre::sequence<Look...>, look_start<lookahead_positive<>>, Ts...>, pcre_parameters<Counter>>) {
2469 returnpcre_context{
ctll::list<lookahead_positive<Look...>, Ts...>(), pcre_parameters<Counter>()};
2473 template<
autoV,
typename... Ts,
size_tCounter>
staticconstexpr
autoapply(pcre::start_lookahead_negative,
ctll::term<V>, pcre_context<
ctll::list<Ts...>, pcre_parameters<Counter>>) {
2478 template<
autoV,
typenameLook,
typename... Ts,
size_tCounter>
staticconstexpr
autoapply(pcre::look_finish,
ctll::term<V>, pcre_context<
ctll::list<Look, look_start<lookahead_negative<>>, Ts...>, pcre_parameters<Counter>>) {
2483 template<
autoV,
typename... Look,
typename... Ts,
size_tCounter>
staticconstexpr
autoapply(pcre::look_finish,
ctll::term<V>, pcre_context<
ctll::list<ctre::sequence<Look...>, look_start<lookahead_negative<>>, Ts...>, pcre_parameters<Counter>>) {
2484 returnpcre_context{
ctll::list<lookahead_negative<Look...>, Ts...>(), pcre_parameters<Counter>()};
2490 template<
autoV,
typename... Ts,
size_tCounter>
staticconstexpr
autoapply(pcre::start_lookbehind_positive,
ctll::term<V>, pcre_context<
ctll::list<Ts...>, pcre_parameters<Counter>>) {
2495 template<
autoV,
typenameLook,
typename... Ts,
size_tCounter>
staticconstexpr
autoapply(pcre::look_finish,
ctll::term<V>, pcre_context<
ctll::list<Look, look_start<lookbehind_positive<>>, Ts...>, pcre_parameters<Counter>>) {
2500 template<
autoV,
typename... Look,
typename... Ts,
size_tCounter>
staticconstexpr
autoapply(pcre::look_finish,
ctll::term<V>, pcre_context<
ctll::list<ctre::sequence<Look...>, look_start<lookbehind_positive<>>, Ts...>, pcre_parameters<Counter>>) {
2502 returnpcre_context{
ctll::list<my_lookbehind, Ts...>(), pcre_parameters<Counter>()};
2506 template<
autoV,
typename... Ts,
size_tCounter>
staticconstexpr
autoapply(pcre::start_lookbehind_negative,
ctll::term<V>, pcre_context<
ctll::list<Ts...>, pcre_parameters<Counter>>) {
2511 template<
autoV,
typenameLook,
typename... Ts,
size_tCounter>
staticconstexpr
autoapply(pcre::look_finish,
ctll::term<V>, pcre_context<
ctll::list<Look, look_start<lookbehind_negative<>>, Ts...>, pcre_parameters<Counter>>) {
2516 template<
autoV,
typename... Look,
typename... Ts,
size_tCounter>
staticconstexpr
autoapply(pcre::look_finish,
ctll::term<V>, pcre_context<
ctll::list<ctre::sequence<Look...>, look_start<lookbehind_negative<>>, Ts...>, pcre_parameters<Counter>>) {
2518 returnpcre_context{
ctll::list<my_lookbehind, Ts...>(), pcre_parameters<Counter>()};
2523 #ifndef CTRE__ACTIONS__NAMED_CLASS__HPP 2524 #define CTRE__ACTIONS__NAMED_CLASS__HPP 2527 template<
autoV,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::class_named_alnum,
ctll::term<V>, pcre_context<
ctll::list<Ts...>, Parameters>
subject) {
2531 template<
autoV,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::class_named_alpha,
ctll::term<V>, pcre_context<
ctll::list<Ts...>, Parameters>
subject) {
2535 template<
autoV,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::class_named_digit,
ctll::term<V>, pcre_context<
ctll::list<Ts...>, Parameters>
subject) {
2539 template<
autoV,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::class_named_ascii,
ctll::term<V>, pcre_context<
ctll::list<Ts...>, Parameters>
subject) {
2543 template<
autoV,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::class_named_blank,
ctll::term<V>, pcre_context<
ctll::list<Ts...>, Parameters>
subject) {
2547 template<
autoV,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::class_named_cntrl,
ctll::term<V>, pcre_context<
ctll::list<Ts...>, Parameters>
subject) {
2548 returnpcre_context{
ctll::push_front(ctre::set<ctre::char_range<'\x00','\x1F'>, ctre::character<'\x7F'>>(),
subject.stack),
subject.parameters};
2551 template<
autoV,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::class_named_graph,
ctll::term<V>, pcre_context<
ctll::list<Ts...>, Parameters>
subject) {
2555 template<
autoV,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::class_named_lower,
ctll::term<V>, pcre_context<
ctll::list<Ts...>, Parameters>
subject) {
2559 template<
autoV,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::class_named_upper,
ctll::term<V>, pcre_context<
ctll::list<Ts...>, Parameters>
subject) {
2563 template<
autoV,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::class_named_print,
ctll::term<V>, pcre_context<
ctll::list<Ts...>, Parameters>
subject) {
2567 template<
autoV,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::class_named_space,
ctll::term<V>, pcre_context<
ctll::list<Ts...>, Parameters>
subject) {
2571 template<
autoV,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::class_named_word,
ctll::term<V>, pcre_context<
ctll::list<Ts...>, Parameters>
subject) {
2575 template<
autoV,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::class_named_punct,
ctll::term<V>, pcre_context<
ctll::list<Ts...>, Parameters>
subject) {
2579 template<
autoV,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::class_named_xdigit,
ctll::term<V>, pcre_context<
ctll::list<Ts...>, Parameters>
subject) {
2585 #ifndef CTRE__ACTIONS__OPTIONS__HPP 2586 #define CTRE__ACTIONS__OPTIONS__HPP 2603 template<
autoV,
typename A,
typename... Bs,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::make_alternate,
ctll::term<V>, pcre_context<
ctll::list<ctre::select<Bs...>,
A, Ts...>, Parameters>
subject) {
2612 template<
autoV,
typename... Content,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::make_optional,
ctll::term<V>, pcre_context<
ctll::list<sequence<Content...>, Ts...>, Parameters>
subject) {
2617 template<
autoV,
typename A,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::make_optional,
ctll::term<V>, pcre_context<
ctll::list<optional<A>, Ts...>, Parameters>
subject) {
2622 template<
autoV,
typename A,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::make_optional,
ctll::term<V>, pcre_context<
ctll::list<lazy_optional<A>, Ts...>, Parameters>
subject) {
2627 template<
autoV,
typename... Subject,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::make_lazy,
ctll::term<V>, pcre_context<
ctll::list<optional<Subject...>, Ts...>, Parameters>
subject) {
2632 template<
autoV,
typename... Subject,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::make_lazy,
ctll::term<V>, pcre_context<
ctll::list<lazy_optional<Subject...>, Ts...>, Parameters>
subject) {
2638 #ifndef CTRE__ACTIONS__PROPERTIES__HPP 2639 #define CTRE__ACTIONS__PROPERTIES__HPP 2642 template<
autoV,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::push_property_name,
ctll::term<V>, pcre_context<
ctll::list<Ts...>, Parameters>
subject) {
2646 template<
auto... Str,
autoV,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::push_property_name,
ctll::term<V>, pcre_context<
ctll::list<property_name<Str...>, Ts...>, Parameters>
subject) {
2651 template<
autoV,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::push_property_value,
ctll::term<V>, pcre_context<
ctll::list<Ts...>, Parameters>
subject) {
2655 template<
auto... Str,
autoV,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::push_property_value,
ctll::term<V>, pcre_context<
ctll::list<property_value<Str...>, Ts...>, Parameters>
subject) {
2660 template<
autoV,
auto... Name,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::make_property,
ctll::term<V>, [[maybe_unused]] pcre_context<
ctll::list<property_name<Name...>, Ts...>, Parameters>
subject) {
2662constexpr
charname[
sizeof...(Name)]{
static_cast<char>(Name)...};
2663constexpr
autop = uni::detail::binary_prop_from_string(get_string_view(name));
2665 ifconstexpr (uni::detail::is_unknown(p)) {
2673 template<
autoV,
auto...
Value,
auto... Name,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::make_property,
ctll::term<V>, [[maybe_unused]] pcre_context<
ctll::list<property_value<Value...>, property_name<Name...>, Ts...>, Parameters>
subject) {
2675constexpr
autoprop = property_builder<Name...>::template get<
Value...>();
2677 ifconstexpr (std::is_same_v<decltype(prop),
ctll::reject>) {
2685 template<
autoV,
auto... Name,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::make_property_negative,
ctll::term<V>, [[maybe_unused]] pcre_context<
ctll::list<property_name<Name...>, Ts...>, Parameters>
subject) {
2687constexpr
charname[
sizeof...(Name)]{
static_cast<char>(Name)...};
2688constexpr
autop = uni::detail::binary_prop_from_string(get_string_view(name));
2690 ifconstexpr (uni::detail::is_unknown(p)) {
2698 template<
autoV,
auto...
Value,
auto... Name,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::make_property_negative,
ctll::term<V>, [[maybe_unused]] pcre_context<
ctll::list<property_value<Value...>, property_name<Name...>, Ts...>, Parameters>
subject) {
2700constexpr
autoprop = property_builder<Name...>::template get<
Value...>();
2702 ifconstexpr (std::is_same_v<decltype(prop),
ctll::reject>) {
2711 #ifndef CTRE__ACTIONS__REPEAT__HPP 2712 #define CTRE__ACTIONS__REPEAT__HPP 2719 template<
autoV,
typename... Content,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::repeat_plus,
ctll::term<V>, pcre_context<
ctll::list<sequence<Content...>, Ts...>, Parameters>
subject) {
2728 template<
autoV,
typename... Content,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::repeat_star,
ctll::term<V>, pcre_context<
ctll::list<sequence<Content...>, Ts...>, Parameters>
subject) {
2737 template<
autoV,
size_t N,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::push_number,
ctll::term<V>, pcre_context<
ctll::list<number<N>, Ts...>, Parameters>
subject) {
2738constexpr
size_tprevious =
N* 10ull;
2743 template<
autoV,
typenameSubject,
size_t A,
size_t B,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::repeat_ab,
ctll::term<V>, pcre_context<
ctll::list<number<B>, number<A>, Subject, Ts...>, Parameters>
subject) {
2747 template<
autoV,
typename... Content,
size_t A,
size_t B,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::repeat_ab,
ctll::term<V>, pcre_context<
ctll::list<number<B>, number<A>, sequence<Content...>, Ts...>, Parameters>
subject) {
2752 template<
autoV,
typenameSubject,
size_t A,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::repeat_exactly,
ctll::term<V>, pcre_context<
ctll::list<number<A>, Subject, Ts...>, Parameters>
subject) {
2756 template<
autoV,
typename... Content,
size_t A,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::repeat_exactly,
ctll::term<V>, pcre_context<
ctll::list<number<A>, sequence<Content...>, Ts...>, Parameters>
subject) {
2761 template<
autoV,
typenameSubject,
size_t A,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::repeat_at_least,
ctll::term<V>, pcre_context<
ctll::list<number<A>, Subject, Ts...>, Parameters>
subject) {
2765 template<
autoV,
typename... Content,
size_t A,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::repeat_at_least,
ctll::term<V>, pcre_context<
ctll::list<number<A>, sequence<Content...>, Ts...>, Parameters>
subject) {
2770 template<
autoV,
typename... Subject,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::make_lazy,
ctll::term<V>, pcre_context<
ctll::list<plus<Subject...>, Ts...>, Parameters>
subject) {
2775 template<
autoV,
typename... Subject,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::make_lazy,
ctll::term<V>, pcre_context<
ctll::list<star<Subject...>, Ts...>, Parameters>
subject) {
2780 template<
autoV,
typename... Subject,
size_t A,
size_t B,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::make_lazy,
ctll::term<V>, pcre_context<
ctll::list<repeat<A,B,Subject...>, Ts...>, Parameters>
subject) {
2785 template<
autoV,
typename... Subject,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::make_possessive,
ctll::term<V>, pcre_context<
ctll::list<plus<Subject...>, Ts...>, Parameters>
subject) {
2790 template<
autoV,
typename... Subject,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::make_possessive,
ctll::term<V>, pcre_context<
ctll::list<star<Subject...>, Ts...>, Parameters>
subject) {
2795 template<
autoV,
typename... Subject,
size_t A,
size_t B,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::make_possessive,
ctll::term<V>, pcre_context<
ctll::list<repeat<A,B,Subject...>, Ts...>, Parameters>
subject) {
2801 #ifndef CTRE__ACTIONS__SEQUENCE__HPP 2802 #define CTRE__ACTIONS__SEQUENCE__HPP 2809 template<
autoV,
typename A,
typename... Bs,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::make_sequence,
ctll::term<V>, pcre_context<
ctll::list<sequence<Bs...>,
A,Ts...>, Parameters>
subject) {
2814 template<
autoV,
auto A,
auto B,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::make_sequence,
ctll::term<V>, pcre_context<
ctll::list<character<B>,character<A>,Ts...>, Parameters>
subject) {
2818 template<
autoV,
auto A,
auto... Bs,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::make_sequence,
ctll::term<V>, pcre_context<
ctll::list<string<Bs...>,character<A>,Ts...>, Parameters>
subject) {
2823 template<
autoV,
auto A,
auto B,
typename... Sq,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::make_sequence,
ctll::term<V>, pcre_context<
ctll::list<sequence<character<B>,Sq...>,character<A>,Ts...>, Parameters>
subject) {
2827 template<
autoV,
auto A,
auto... Bs,
typename... Sq,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::make_sequence,
ctll::term<V>, pcre_context<
ctll::list<sequence<string<Bs...>,Sq...>,character<A>,Ts...>, Parameters>
subject) {
2833 #ifndef CTRE__ACTIONS__SET__HPP 2834 #define CTRE__ACTIONS__SET__HPP 2838 template<
template<
typename...>
typenameSetType,
typename T,
typename... As,
boolExists = (std::is_same_v<T, As> || ... ||
false)>
staticconstexpr
autopush_back_into_set(
T, SetType<As...>) ->
ctll::conditional<Exists, SetType<As...>, SetType<As...,
T>> {
return{}; }
2861 template<
autoV,
typename... Content,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::set_make_negative,
ctll::term<V>, pcre_context<
ctll::list<
set<Content...>, Ts...>, Parameters>
subject) {
2865 template<
autoV,
typename A,
typename... Content,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::set_combine,
ctll::term<V>, pcre_context<
ctll::list<
A,
set<Content...>,Ts...>, Parameters>
subject) {
2877 template<
autoV,
typename A,
typename... Content,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::set_combine,
ctll::term<V>, pcre_context<
ctll::list<
A,negative_set<Content...>,Ts...>, Parameters>
subject) {
2888 template<
autoV,
typename A,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::negate_class_named,
ctll::term<V>, pcre_context<
ctll::list<A, Ts...>, Parameters>
subject) {
2893 template<
autoV,
auto B,
auto A,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::make_range,
ctll::term<V>, pcre_context<
ctll::list<character<B>,character<A>, Ts...>, Parameters>
subject) {
2899 #ifndef CTRE__ACTIONS__MODE__HPP 2900 #define CTRE__ACTIONS__MODE__HPP 2903 template<
typenameMode,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply_mode(Mode,
ctll::list<Ts...>, Parameters) {
2904 returnpcre_context<ctll::list<mode_switch<Mode>, Ts...>, Parameters>{};
2907 template<
typenameMode,
typename... Ts,
size_tId,
size_tCounter>
staticconstexpr
autoapply_mode(Mode,
ctll::list<capture_id<Id>, Ts...>, pcre_parameters<Counter>) {
2908 returnpcre_context<ctll::list<mode_switch<Mode>, Ts...>, pcre_parameters<Counter-1>>{};
2912 template<
autoV,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::mode_case_insensitive
mode,
ctll::term<V>,pcre_context<
ctll::list<Ts...>, Parameters>) {
2916 template<
autoV,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::mode_case_sensitive
mode,
ctll::term<V>,pcre_context<
ctll::list<Ts...>, Parameters>) {
2920 template<
autoV,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::mode_singleline
mode,
ctll::term<V>,pcre_context<
ctll::list<Ts...>, Parameters>) {
2924 template<
autoV,
typename... Ts,
typenameParameters>
staticconstexpr
autoapply(pcre::mode_multiline
mode,
ctll::term<V>,pcre_context<
ctll::list<Ts...>, Parameters>) {
2938 #ifndef CTRE__EVALUATION__HPP 2939 #define CTRE__EVALUATION__HPP 2941 #ifndef CTRE__STARTS_WITH_ANCHOR__HPP 2942 #define CTRE__STARTS_WITH_ANCHOR__HPP 2946 template<
typename... Content>
2951 template<
typename... Content>
2957 template<
typename... Content>
2963 template<
typenameCharLike,
typename... Content>
2964constexpr
boolstarts_with_anchor(
const flags&
f,
ctll::list<boundary<CharLike>, Content...>) noexcept {
2969 template<
typename... Options,
typename... Content>
2970constexpr
boolstarts_with_anchor(
const flags&
f,
ctll::list<select<Options...>, Content...>) noexcept {
2975 template<
typename... Optional,
typename... Content>
2976constexpr
boolstarts_with_anchor(
const flags&
f,
ctll::list<optional<Optional...>, Content...>) noexcept {
2981 template<
typename... Optional,
typename... Content>
2982constexpr
boolstarts_with_anchor(
const flags&
f,
ctll::list<lazy_optional<Optional...>, Content...>) noexcept {
2987 template<
typename... Seq,
typename... Content>
2988constexpr
boolstarts_with_anchor(
const flags&
f,
ctll::list<sequence<Seq...>, Content...>) noexcept {
2993 template<
size_t A,
size_t B,
typename... Seq,
typename... Content>
2994constexpr
boolstarts_with_anchor(
const flags&
f,
ctll::list<repeat<A, B, Seq...>, Content...>) noexcept {
2999 template<
size_t A,
size_t B,
typename... Seq,
typename... Content>
3000constexpr
boolstarts_with_anchor(
const flags&
f,
ctll::list<lazy_repeat<A, B, Seq...>, Content...>) noexcept {
3005 template<
size_t A,
size_t B,
typename... Seq,
typename... Content>
3006constexpr
boolstarts_with_anchor(
const flags&
f,
ctll::list<possessive_repeat<A, B, Seq...>, Content...>) noexcept {
3011 template<
size_tIndex,
typename... Seq,
typename... Content>
3012constexpr
boolstarts_with_anchor(
const flags&
f,
ctll::list<capture<Index, Seq...>, Content...>) noexcept {
3017 template<
size_tIndex,
typename... Seq,
typename... Content>
3018constexpr
boolstarts_with_anchor(
const flags&
f,
ctll::list<capture_with_name<Index, Seq...>, Content...>) noexcept {
3027 #ifndef CTRE__RETURN_TYPE__HPP 3028 #define CTRE__RETURN_TYPE__HPP 3030 #ifndef CTRE__UTF8__HPP 3031 #define CTRE__UTF8__HPP 3033 #if __cpp_char8_t >= 201811 3035 #include <string_view> 3038 #if __cpp_lib_char8_t >= 201811L 3039 #define CTRE_ENABLE_UTF8_RANGE 3044 structutf8_iterator {
3045 usingself_type = utf8_iterator;
3047 usingreference = char8_t;
3048 using pointer=
constchar8_t *;
3049 usingiterator_category = std::bidirectional_iterator_tag;
3050 usingdifference_type =
int;
3054 usingself_type = utf8_iterator;
3056 usingreference = char8_t &;
3057 using pointer=
constchar8_t *;
3058 usingiterator_category = std::bidirectional_iterator_tag;
3059 usingdifference_type =
int;
3062 autooperator++() noexcept -> self_type &;
3063 autooperator++(
int) noexcept -> self_type;
3065 auto operator--(
int) noexcept -> self_type;
3067 auto operator*() noexcept -> reference;
3069 friendconstexpr
auto operator==(self_type,
constchar8_t * other_ptr) noexcept {
3070 return*other_ptr == char8_t{0};
3074 constchar8_t * ptr{
nullptr};
3075 constchar8_t * end{
nullptr};
3077constexpr
friend bool operator!=(
constutf8_iterator & lhs, sentinel) {
3078 returnlhs.ptr < lhs.end;
3081constexpr
friend bool operator!=(sentinel,
constutf8_iterator & rhs) {
3082 returnrhs.ptr < rhs.end;
3085constexpr
friend bool operator!=(
constutf8_iterator & lhs,
constutf8_iterator & rhs) {
3086 returnlhs.ptr != rhs.ptr;
3089constexpr
friend bool operator==(
constutf8_iterator & lhs, sentinel) {
3090 returnlhs.ptr >= lhs.end;
3093constexpr
friend bool operator==(sentinel,
constutf8_iterator & rhs) {
3094 returnrhs.ptr >= rhs.end;
3097constexpr utf8_iterator & operator=(
constchar8_t * rhs) {
3102constexpr
operator constchar8_t *()
constnoexcept {
3106constexpr utf8_iterator & operator++() noexcept {
3114ptr += ((0x3A55000000000000ull >> ((*ptr >> 2) & 0b111110u)) & 0b11u) + 1;
3118constexpr utf8_iterator &
operator--() noexcept {
3125 while((*ptr & 0b11000000u) == 0b10'000000) {
3132constexpr utf8_iterator
operator--(
int) noexcept {
3133 auto self= *
this;
3138constexpr utf8_iterator operator++(
int) noexcept {
3139 auto self= *
this;
3144constexpr utf8_iterator
operator+(
unsignedstep)
constnoexcept {
3145utf8_iterator
result= *
this;
3153constexpr utf8_iterator
operator-(
unsignedstep)
constnoexcept {
3154utf8_iterator
result= *
this;
3162constexpr char32_t
operator*()
constnoexcept {
3163constexpr char32_t mojibake = 0xFFFDull;
3166 if(!(*ptr & 0b1000'0000u)) CTRE_LIKELY {
3171 const unsignedlength = ((0x3A55000000000000ull >> ((*ptr >> 2) & 0b111110u)) & 0b11u);
3176 if(!length) CTRE_UNLIKELY {
3181 if(((ptr + length) >= end)) CTRE_UNLIKELY {
3185 if((ptr[1] & 0b1100'0000u) != 0b1000'0000) CTRE_UNLIKELY {
3189 constchar8_t
mask=
static_cast<char8_t
>(0b0011'1111u >> length);
3198char32_t
result=
static_cast<char32_t
>((ptr[0] &
mask) << 6u) | (ptr[1] & 0b0011'1111u);
3201 if(length == 1) CTRE_LIKELY {
3205 if((ptr[2] & 0b1100'0000u) != 0b1000'0000) CTRE_UNLIKELY {
3211 if(length == 2) CTRE_LIKELY {
3215 if((ptr[3] & 0b1100'0000u) != 0b1000'0000) CTRE_UNLIKELY {
3219 return(
result<< 6) | (ptr[3] & 0b0011'1111u);
3223 #ifdef CTRE_ENABLE_UTF8_RANGE 3225std::u8string_view range;
3226constexpr utf8_range(std::u8string_view
r) noexcept: range{
r} { }
3228constexpr
autobegin()
constnoexcept {
3229 returnutf8_iterator{range.data(), range.data() + range.size()};
3231constexpr
autoend()
constnoexcept {
3232 returnutf8_iterator::sentinel{};
3243 #include <type_traits> 3245 #include <string_view> 3249 #if __has_include(<charconv>) 3255constexpr
autois_random_accessible_f(
conststd::random_access_iterator_tag &) {
returnstd::true_type{}; }
3256constexpr
autois_random_accessible_f(...) {
returnstd::false_type{}; }
3258 template<
typenameT> constexpr
autois_reverse_iterator_f(
conststd::reverse_iterator<T> &) {
returnstd::true_type{}; }
3259constexpr
autois_reverse_iterator_f(...) {
returnstd::false_type{}; }
3261 template<
typenameT> constexpr
boolis_random_accessible = decltype(is_random_accessible_f(std::declval<const T &>())){};
3262 template<
typenameT> constexpr
boolis_reverse_iterator = decltype(is_reverse_iterator_f(std::declval<const T &>())){};
3264 structnot_matched_tag_t { };
3266constexpr
inline autonot_matched = not_matched_tag_t{};
3268 template<
size_tId,
typenameName =
void>
structcaptured_content {
3269 template<
typenameIterator>
classstorage {
3273 bool_matched{
false};
3279constexpr CTRE_FORCE_INLINE storage() noexcept {}
3281constexpr CTRE_FORCE_INLINE
voidmatched() noexcept {
3284constexpr CTRE_FORCE_INLINE
voidunmatch() noexcept {
3287constexpr CTRE_FORCE_INLINE
voidset_start(Iterator pos) noexcept {
3290constexpr CTRE_FORCE_INLINE storage & set_end(Iterator pos) noexcept {
3294constexpr CTRE_FORCE_INLINE Iterator get_end()
constnoexcept {
3299constexpr
autobegin()
constnoexcept {
3302constexpr
autoend()
constnoexcept {
3306constexpr
explicitCTRE_FORCE_INLINE
operator bool()
constnoexcept {
3310 template<
typenameIt = Iterator> constexpr CTRE_FORCE_INLINE
const auto* data_unsafe()
constnoexcept {
3311static_assert(!is_reverse_iterator<It>,
"Iterator in your capture must not be reverse!");
3313 #if __cpp_char8_t >= 201811 3314 ifconstexpr (std::is_same_v<Iterator, utf8_iterator>) {
3324 template<
typenameIt = Iterator> constexpr CTRE_FORCE_INLINE
const auto*
data()
constnoexcept {
3325constexpr
boolmust_be_contiguous_nonreverse_iterator = is_random_accessible<typename std::iterator_traits<It>::iterator_category> && !is_reverse_iterator<It>;
3327static_assert(must_be_contiguous_nonreverse_iterator,
"To access result as a pointer you need to provide a random access iterator/range to regex (which is not reverse iterator based).");
3329 returndata_unsafe();
3332constexpr CTRE_FORCE_INLINE
auto size()
constnoexcept {
3333 return static_cast<size_t>(std::distance(begin(), end()));
3336constexpr CTRE_FORCE_INLINE
size_tunit_size()
constnoexcept {
3337 #if __cpp_char8_t >= 201811 3338 ifconstexpr (std::is_same_v<Iterator, utf8_iterator>) {
3339 return static_cast<size_t>(std::distance(_begin.ptr, _end.ptr));
3341 return static_cast<size_t>(std::distance(begin(), end()));
3344 return static_cast<size_t>(std::distance(begin(), end()));
3348 #if __has_include(<charconv>) 3349 template<
typenameR =
int> constexpr CTRE_FORCE_INLINE
autoto_number(
intbase = 10)
constnoexcept ->
R{
3351 const autoview = to_view();
3352std::from_chars(view.data(), view.data() + view.size(),
result, base);
3357 template<
typenameT>
structidentify;
3359 template<
typenameIt = Iterator> constexpr CTRE_FORCE_INLINE
autoto_view()
constnoexcept {
3361constexpr
boolmust_be_nonreverse_contiguous_iterator = is_random_accessible<typename std::iterator_traits<std::remove_const_t<It>>::iterator_category> && !is_reverse_iterator<It>;
3363static_assert(must_be_nonreverse_contiguous_iterator,
"To convert capture into a basic_string_view you need to provide a pointer or a contiguous non-reverse iterator/range to regex.");
3365 returnstd::basic_string_view<char_type>(data_unsafe(),
static_cast<size_t>(unit_size()));
3368constexpr CTRE_FORCE_INLINE std::basic_string<char_type> to_string()
constnoexcept {
3369 #if __cpp_char8_t >= 201811 3370 ifconstexpr (std::is_same_v<Iterator, utf8_iterator>) {
3371 returnstd::basic_string<char_type>(data_unsafe(),
static_cast<size_t>(unit_size()));
3373 returnstd::basic_string<char_type>(begin(), end());
3376 returnstd::basic_string<char_type>(begin(), end());
3380constexpr CTRE_FORCE_INLINE
autoview()
constnoexcept {
3384constexpr CTRE_FORCE_INLINE
auto str()
constnoexcept {
3388constexpr CTRE_FORCE_INLINE
operatorstd::basic_string_view<char_type>()
constnoexcept {
3392constexpr CTRE_FORCE_INLINE
explicit operatorstd::basic_string<char_type>()
constnoexcept {
3396constexpr CTRE_FORCE_INLINE
static size_tget_id() noexcept {
3400 friendCTRE_FORCE_INLINE constexpr
bool operator==(
conststorage & lhs, std::basic_string_view<char_type> rhs) noexcept {
3401 return bool(lhs) ? lhs.view() == rhs :
false;
3403 friendCTRE_FORCE_INLINE constexpr
bool operator!=(
conststorage & lhs, std::basic_string_view<char_type> rhs) noexcept {
3404 return bool(lhs) ? lhs.view() != rhs :
false;
3406 friendCTRE_FORCE_INLINE constexpr
bool operator==(std::basic_string_view<char_type> lhs,
conststorage & rhs) noexcept {
3407 return bool(rhs) ? lhs == rhs.view() :
false;
3409 friendCTRE_FORCE_INLINE constexpr
bool operator!=(std::basic_string_view<char_type> lhs,
conststorage & rhs) noexcept {
3410 return bool(rhs) ? lhs != rhs.view() :
false;
3412 friendCTRE_FORCE_INLINE std::ostream &
operator<<(std::ostream &
str,
conststorage & rhs) {
3413 return str<< rhs.view();
3418 structcapture_not_exists_tag { };
3420 staticconstexpr
inline autocapture_not_exists = capture_not_exists_tag{};
3422 template<
typename... Captures>
structcaptures;
3424 template<
typenameHead,
typename... Tail>
structcaptures<Head, Tail...>: captures<Tail...> {
3426constexpr CTRE_FORCE_INLINE captures() noexcept { }
3427 template<
size_t id> CTRE_FORCE_INLINE
staticconstexpr
boolexists() noexcept {
3428 ifconstexpr (
id== Head::get_id()) {
3431 returncaptures<Tail...>::template exists<id>();
3434 template<
typenameName> CTRE_FORCE_INLINE
staticconstexpr
boolexists() noexcept {
3435 ifconstexpr (std::is_same_v<Name, typename Head::name>) {
3438 returncaptures<Tail...>::template exists<Name>();
3441 #if CTRE_CNTTP_COMPILER_CHECK 3442 template<ctll::fixed_
stringName> CTRE_FORCE_INLINE
staticconstexpr
boolexists() noexcept {
3444 template<const auto & Name> CTRE_FORCE_INLINE
staticconstexpr
boolexists() noexcept {
3446 ifconstexpr (std::is_same_v<typename Head::name, void>) {
3447 returncaptures<Tail...>::template exists<Name>();
3449 ifconstexpr (Head::name::name.is_same_as(Name)) {
3452 returncaptures<Tail...>::template exists<Name>();
3456 template<
size_t id> CTRE_FORCE_INLINE constexpr
auto& select() noexcept {
3457 ifconstexpr (
id== Head::get_id()) {
3460 returncaptures<Tail...>::template select<id>();
3463 template<
typenameName> CTRE_FORCE_INLINE constexpr
auto& select() noexcept {
3464 ifconstexpr (std::is_same_v<Name, typename Head::name>) {
3467 returncaptures<Tail...>::template select<Name>();
3470 template<
size_t id> CTRE_FORCE_INLINE constexpr
auto& select()
constnoexcept {
3471 ifconstexpr (
id== Head::get_id()) {
3474 returncaptures<Tail...>::template select<id>();
3477 template<
typenameName> CTRE_FORCE_INLINE constexpr
auto& select()
constnoexcept {
3478 ifconstexpr (std::is_same_v<Name, typename Head::name>) {
3481 returncaptures<Tail...>::template select<Name>();
3484 #if CTRE_CNTTP_COMPILER_CHECK 3485 template<ctll::fixed_
stringName> CTRE_FORCE_INLINE constexpr
auto& select()
constnoexcept {
3487 template<const auto & Name> CTRE_FORCE_INLINE constexpr
auto& select()
constnoexcept {
3489 ifconstexpr (std::is_same_v<typename Head::name, void>) {
3490 returncaptures<Tail...>::template select<Name>();
3492 ifconstexpr (Head::name::name.is_same_as(Name)) {
3495 returncaptures<Tail...>::template select<Name>();
3501 template<>
structcaptures<> {
3502constexpr CTRE_FORCE_INLINE captures() noexcept { }
3503 template<
size_t> CTRE_FORCE_INLINE
staticconstexpr
boolexists() noexcept {
3506 template<
typename> CTRE_FORCE_INLINE
staticconstexpr
boolexists() noexcept {
3509 #if CTRE_CNTTP_COMPILER_CHECK 3510 template<ctll::fixed_
string> CTRE_FORCE_INLINE
staticconstexpr
boolexists() noexcept {
3512 template<const auto &> CTRE_FORCE_INLINE
staticconstexpr
boolexists() noexcept {
3516 template<
size_t> CTRE_FORCE_INLINE constexpr
auto& select()
constnoexcept {
3517 returncapture_not_exists;
3519 template<
typename> CTRE_FORCE_INLINE constexpr
auto& select()
constnoexcept {
3520 returncapture_not_exists;
3522 #if CTRE_CNTTP_COMPILER_CHECK 3523 template<ctll::fixed_
string> CTRE_FORCE_INLINE constexpr
auto& select()
constnoexcept {
3525 template<const auto &> CTRE_FORCE_INLINE constexpr
auto& select()
constnoexcept {
3527 returncapture_not_exists;
3531 template<
typenameIterator,
typename... Captures>
classregex_results {
3532captures<captured_content<0>::template storage<Iterator>,
typenameCaptures::template storage<Iterator>...> _captures{};
3536constexpr CTRE_FORCE_INLINE regex_results() noexcept { }
3537constexpr CTRE_FORCE_INLINE regex_results(not_matched_tag_t) noexcept { }
3542template <size_t Id, typename = std::enable_if_t<decltype(_captures)::template exists<Id>()>> CTRE_FORCE_INLINE constexpr
autoget()
constnoexcept {
3543 return_captures.template select<Id>();
3545template <typename Name, typename = std::enable_if_t<decltype(_captures)::template exists<Name>()>> CTRE_FORCE_INLINE constexpr
autoget()
constnoexcept {
3546 return_captures.template select<Name>();
3548 #if CTRE_CNTTP_COMPILER_CHECK 3549template <ctll::fixed_string Name, typename = std::enable_if_t<decltype(_captures)::template exists<Name>()>> CTRE_FORCE_INLINE constexpr
autoget()
constnoexcept {
3551template <const auto & Name, typename = std::enable_if_t<decltype(_captures)::template exists<Name>()>> CTRE_FORCE_INLINE constexpr
autoget()
constnoexcept {
3553 return_captures.template select<Name>();
3555 staticconstexpr
size_t count() noexcept {
3556 return sizeof...(Captures) + 1;
3558constexpr CTRE_FORCE_INLINE regex_results & matched() noexcept {
3559_captures.template select<0>().matched();
3562constexpr CTRE_FORCE_INLINE regex_results & unmatch() noexcept {
3563_captures.template select<0>().unmatch();
3566constexpr CTRE_FORCE_INLINE
operator bool()
constnoexcept {
3567 return bool(_captures.template select<0>());
3570constexpr CTRE_FORCE_INLINE
operatorstd::basic_string_view<char_type>()
constnoexcept {
3574constexpr CTRE_FORCE_INLINE
explicit operatorstd::basic_string<char_type>()
constnoexcept {
3578 #if __has_include(<charconv>) 3579 template<
typenameR =
int> constexpr CTRE_FORCE_INLINE
autoto_number(
intbase = 10)
constnoexcept ->
R{
3580 return_captures.template select<0>().template to_number<R>(base);
3584constexpr CTRE_FORCE_INLINE
autoto_view()
constnoexcept {
3585 return_captures.template select<0>().to_view();
3588constexpr CTRE_FORCE_INLINE
autoto_string()
constnoexcept {
3589 return_captures.template select<0>().to_string();
3592constexpr CTRE_FORCE_INLINE
autoview()
constnoexcept {
3593 return_captures.template select<0>().view();
3596constexpr CTRE_FORCE_INLINE
auto str()
constnoexcept {
3597 return_captures.template select<0>().to_string();
3600constexpr CTRE_FORCE_INLINE
size_t size()
constnoexcept {
3601 return_captures.template select<0>().size();
3604constexpr CTRE_FORCE_INLINE
const auto*
data()
constnoexcept {
3605 return_captures.template select<0>().data();
3608constexpr CTRE_FORCE_INLINE regex_results & set_start_mark(Iterator pos) noexcept {
3609_captures.template select<0>().set_start(pos);
3612constexpr CTRE_FORCE_INLINE regex_results & set_end_mark(Iterator pos) noexcept {
3613_captures.template select<0>().set_end(pos);
3616constexpr CTRE_FORCE_INLINE Iterator get_end_position()
constnoexcept {
3617 return_captures.template select<0>().get_end();
3619 template<
size_tId> CTRE_FORCE_INLINE constexpr regex_results & start_capture(Iterator pos) noexcept {
3620_captures.template select<Id>().set_start(pos);
3623 template<
size_tId> CTRE_FORCE_INLINE constexpr regex_results & end_capture(Iterator pos) noexcept {
3624_captures.template select<Id>().set_end(pos).matched();
3627constexpr
autobegin()
constnoexcept {
3628 return_captures.template select<0>().begin();
3630constexpr
autoend()
constnoexcept {
3631 return_captures.template select<0>().end();
3633 friendCTRE_FORCE_INLINE constexpr
bool operator==(
constregex_results & lhs, std::basic_string_view<char_type> rhs) noexcept {
3634 return bool(lhs) ? lhs.view() == rhs :
false;
3636 friendCTRE_FORCE_INLINE constexpr
bool operator!=(
constregex_results & lhs, std::basic_string_view<char_type> rhs) noexcept {
3637 return bool(lhs) ? lhs.view() != rhs :
true;
3639 friendCTRE_FORCE_INLINE constexpr
bool operator==(std::basic_string_view<char_type> lhs,
constregex_results & rhs) noexcept {
3640 return bool(rhs) ? lhs == rhs.view() :
false;
3642 friendCTRE_FORCE_INLINE constexpr
bool operator!=(std::basic_string_view<char_type> lhs,
constregex_results & rhs) noexcept {
3643 return bool(rhs) ? lhs != rhs.view() :
true;
3645 friendCTRE_FORCE_INLINE std::ostream &
operator<<(std::ostream &
str,
constregex_results & rhs) {
3646 return str<< rhs.view();
3650 template<
size_tId,
typenameIterator,
typename... Captures> constexpr
autoget(
constregex_results<Iterator, Captures...> &
results) noexcept {
3651 return results.template get<Id>();
3654 template<
typenameIterator,
typename... Captures> regex_results(Iterator,
ctll::list<Captures...>) -> regex_results<Iterator, Captures...>;
3656 template<
typenameResultIterator,
typenamePattern>
usingreturn_type = decltype(regex_results(std::declval<ResultIterator>(), find_captures(
Pattern{})));
3664 #pragma clang diagnostic push 3665 #pragma clang diagnostic ignored "-Wmismatched-tags" 3669 template<
typename... Captures>
structtuple_size<ctre::regex_results<Captures...>> :
publicstd::integral_constant<size_t, ctre::regex_results<Captures...>::count()> { };
3671 template<
size_t N,
typename... Captures>
structtuple_element<
N, ctre::regex_results<Captures...>> {
3673 using type= decltype(
3674std::declval<
constctre::regex_results<Captures...> &>().
templateget<N>()
3680 #pragma clang diagnostic pop 3686 #ifndef CTRE__FIND_CAPTURES__HPP 3687 #define CTRE__FIND_CAPTURES__HPP 3691 template<
typenamePattern> constexpr
autofind_captures(
Pattern) noexcept {
3699 template<
auto... String,
typename... Tail,
typenameOutput> constexpr
autofind_captures(
ctll::list<string<String...>, Tail...>, Output
output) noexcept {
3703 template<
typename... Options,
typename... Tail,
typenameOutput> constexpr
autofind_captures(
ctll::list<select<Options...>, Tail...>, Output
output) noexcept {
3707 template<
typename... Content,
typename... Tail,
typenameOutput> constexpr
autofind_captures(
ctll::list<optional<Content...>, Tail...>, Output
output) noexcept {
3711 template<
typename... Content,
typename... Tail,
typenameOutput> constexpr
autofind_captures(
ctll::list<lazy_optional<Content...>, Tail...>, Output
output) noexcept {
3715 template<
typename... Content,
typename... Tail,
typenameOutput> constexpr
autofind_captures(
ctll::list<sequence<Content...>, Tail...>, Output
output) noexcept {
3736 template<
typename... Content,
typename... Tail,
typenameOutput> constexpr
autofind_captures(
ctll::list<plus<Content...>, Tail...>, Output
output) noexcept {
3740 template<
typename... Content,
typename... Tail,
typenameOutput> constexpr
autofind_captures(
ctll::list<star<Content...>, Tail...>, Output
output) noexcept {
3744 template<
size_t A,
size_t B,
typename... Content,
typename... Tail,
typenameOutput> constexpr
autofind_captures(
ctll::list<repeat<A,B,Content...>, Tail...>, Output
output) noexcept {
3748 template<
typename... Content,
typename... Tail,
typenameOutput> constexpr
autofind_captures(
ctll::list<lazy_plus<Content...>, Tail...>, Output
output) noexcept {
3752 template<
typename... Content,
typename... Tail,
typenameOutput> constexpr
autofind_captures(
ctll::list<lazy_star<Content...>, Tail...>, Output
output) noexcept {
3756 template<
size_t A,
size_t B,
typename... Content,
typename... Tail,
typenameOutput> constexpr
autofind_captures(
ctll::list<lazy_repeat<A,B,Content...>, Tail...>, Output
output) noexcept {
3760 template<
typename... Content,
typename... Tail,
typenameOutput> constexpr
autofind_captures(
ctll::list<possessive_plus<Content...>, Tail...>, Output
output) noexcept {
3764 template<
typename... Content,
typename... Tail,
typenameOutput> constexpr
autofind_captures(
ctll::list<possessive_star<Content...>, Tail...>, Output
output) noexcept {
3768 template<
size_t A,
size_t B,
typename... Content,
typename... Tail,
typenameOutput> constexpr
autofind_captures(
ctll::list<possessive_repeat<A,B,Content...>, Tail...>, Output
output) noexcept {
3772 template<
typename... Content,
typename... Tail,
typenameOutput> constexpr
autofind_captures(
ctll::list<lookahead_positive<Content...>, Tail...>, Output
output) noexcept {
3776 template<
typename... Content,
typename... Tail,
typenameOutput> constexpr
autofind_captures(
ctll::list<lookahead_negative<Content...>, Tail...>, Output
output) noexcept {
3780 template<
size_tId,
typename... Content,
typename... Tail,
typename... Output> constexpr
autofind_captures(
ctll::list<capture<Id,Content...>, Tail...>,
ctll::list<Output...>) noexcept {
3784 template<
size_tId,
typenameName,
typename... Content,
typename... Tail,
typename... Output> constexpr
autofind_captures(
ctll::list<capture_with_name<Id,Name,Content...>, Tail...>,
ctll::list<Output...>) noexcept {
3792 #ifndef CTRE__FIRST__HPP 3793 #define CTRE__FIRST__HPP 3797 structcan_be_anything {};
3800 template<
typename... Content>
3805 template<
typename... Content,
typename... Tail>
3810 template<
typename... Content,
typename... Tail>
3815 template<
typename... Content,
typename... Tail>
3820 template<
typename... Content,
typename... Tail>
3825 template<
typename... Content,
size_tId,
typename... Tail>
3831 template<
typename... Content,
typename... Tail>
3837 template<
typename... Content,
typenameCharLike,
typename... Tail>
3843 template<
typename... Content,
typename... Tail>
3848 template<
typename... Content,
typename... Tail>
3853 template<
typename... Content,
typename... Tail>
3859 template<
typename... Content,
typename... Tail>
3865 template<
typename... Content,
typename... Tail>
3872 template<
typename... Content,
typename... Seq,
typename... Tail>
3878 template<
typename... Content,
typename... Seq,
typename... Tail>
3884 template<
typename... Content,
typename... Seq,
typename... Tail>
3890 template<
typename... Content,
typename... Seq,
typename... Tail>
3896 template<
typename... Content,
typename... Seq,
typename... Tail>
3902 template<
typename... Content,
typename... Seq,
typename... Tail>
3908 template<
typename... Content,
typename... Seq,
typename... Tail>
3914 template<
typename... Content,
size_t A,
size_t B,
typename... Seq,
typename... Tail>
3919 template<
typename... Content,
size_t B,
typename... Seq,
typename... Tail>
3925 template<
typename... Content,
size_t A,
size_t B,
typename... Seq,
typename... Tail>
3930 template<
typename... Content,
size_t B,
typename... Seq,
typename... Tail>
3936 template<
typename... Content,
size_t A,
size_t B,
typename... Seq,
typename... Tail>
3941 template<
typename... Content,
size_t B,
typename... Seq,
typename... Tail>
3947 template<
typename... Content,
typename... Seq,
typename... Tail>
3953 template<
typename... Content,
typename... Seq,
typename... Tail>
3959 template<
typename... Content,
typename... Seq,
typename... Tail>
3965 template<
typename... Content,
typename... Seq,
typename... Tail>
3971 template<
typename... Content,
size_tId,
typename... Seq,
typename... Tail>
3976 template<
typename... Content,
size_tId,
typenameName,
typename... Seq,
typename... Tail>
3982 template<
typename... Content,
size_tId,
typename... Tail>
3987 template<
typename... Content,
typenameName,
typename... Tail>
3993 template<
typename... Content,
autoFirst,
auto... String,
typename... Tail>
3995 return ctll::list<Content..., character<First>>{};
3998 template<
typename... Content,
typename... Tail>
4004 template<
typename... Content,
typename... Opt,
typename... Tail>
4009 template<
typename... Content,
typename... Opt,
typename... Tail>
4015 template<
typename... Content,
typenameSHead,
typename... STail,
typename... Tail>
4020 template<
typename... Content,
typename... Tail>
4026 template<
typename... Content,
typenamePropertyType, PropertyType Property,
typename... Tail>
4031 template<
typename... Content,
typenamePropertyType, PropertyType Property,
auto Value,
typename... Tail>
4038 template<
typename... Content,
autoV,
typename... Tail>
4040 return ctll::list<Content..., character<V>>{};
4043 template<
typename... Content,
auto... Values,
typename... Tail>
4045 return ctll::list<Content..., character<Values>...>{};
4048 template<
typename... Content,
typename... SetContent,
typename... Tail>
4050 return ctll::list<Content..., SetContent...>{};
4053 template<
typename... Content,
auto A,
auto B,
typename... Tail>
4055 return ctll::list<Content..., char_range<A,B>>{};
4058 template<
typename... Content,
typename... Tail>
4064 template<
typename... Content,
typename... SetContent,
typename... Tail>
4066 return ctll::list<Content..., negative_set<SetContent...>>{};
4069 template<
typename... Content,
typename... SetContent,
typename... Tail>
4071 return ctll::list<Content..., negative_set<SetContent...>>{};
4075 template<
typename... Content> constexpr
autocalculate_first(Content...) noexcept {
4080 template<
typename... Content> constexpr
size_tcalculate_size_of_first(ctre::negative_set<Content...>) {
4081 return1 + calculate_size_of_first(ctre::set<Content...>{});
4084 template<
auto... V> constexpr
size_tcalculate_size_of_first(ctre::enumeration<V...>) {
4085 return sizeof...(V);
4088constexpr
size_tcalculate_size_of_first(...) {
4093 return(calculate_size_of_first(Content{}) + ... + 0);
4096 template<
typename... Content> constexpr
size_tcalculate_size_of_first(ctre::set<Content...>) {
4097 return(calculate_size_of_first(Content{}) + ... + 0);
4100 template<auto A,
typenameCB> constexpr
int64_tnegative_helper(ctre::character<A>,
CB& cb,
int64_tstart) {
4113 template<auto A, auto B,
typenameCB> constexpr
int64_tnegative_helper(ctre::char_range<A,B>,
CB& cb,
int64_tstart) {
4126 template<
autoHead,
auto... Tail,
typename CB> constexpr
int64_tnegative_helper(ctre::enumeration<Head, Tail...>,
CB& cb,
int64_tstart) {
4127 int64_tnstart = negative_helper(ctre::character<Head>{}, cb, start);
4128 returnnegative_helper(ctre::enumeration<Tail...>{}, cb, nstart);
4131 template<
typenameCB> constexpr
int64_tnegative_helper(ctre::enumeration<>,
CB&,
int64_tstart) {
4135 template<
typenameCB> constexpr
int64_tnegative_helper(ctre::set<>,
CB&,
int64_tstart) {
4139 template<
typenamePropertyType, PropertyType Property,
typenameCB>
4140constexpr
autonegative_helper(ctre::binary_property<PropertyType, Property>,
CB&&,
int64_tstart) {
4144 template<
typenamePropertyType, PropertyType Property, auto Value,
typenameCB>
4145constexpr
autonegative_helper(ctre::property<PropertyType, Property, Value>,
CB&&,
int64_tstart) {
4149 template<
typenameHead,
typename... Rest,
typename CB> constexpr
int64_tnegative_helper(ctre::set<Head, Rest...>,
CB& cb,
int64_tstart) {
4150start = negative_helper(Head{}, cb, start);
4151 returnnegative_helper(ctre::set<Rest...>{}, cb, start);
4155start = negative_helper(Head{}, cb, start);
4156negative_helper(ctre::negative_set<Rest...>{}, std::forward<CB>(cb), start);
4167 template<
size_tCapacity>
classpoint_set {
4171constexpr
bool operator<(
constpoint & rhs)
const{
4172 returnlow < rhs.low;
4174constexpr point() { }
4177point points[Capacity+1]{};
4179constexpr point * begin() {
4182constexpr point * begin()
const{
4185constexpr point * end() {
4186 returnpoints + used;
4188constexpr point * end()
const{
4189 returnpoints + used;
4191constexpr point * lower_bound(point obj) {
4192 auto first= begin();
4196 while(
count!= 0) {
4198 autostep =
count/ 2;
4199std::advance(it, step);
4209constexpr point * insert_point(
int64_tposition,
int64_tother) {
4210point obj{position, other};
4211 autoit = lower_bound(obj);
4236constexpr point_set() { }
4238insert_point(low, high);
4242 for(
auto r: *
this) {
4243 if(
r.low <= low && low <=
r.high) {
4245}
else if(
r.low <= high && high <=
r.high) {
4247}
else if(low <=
r.low &&
r.low <= high) {
4249}
else if(low <=
r.high &&
r.high <= high) {
4257 template<auto V> constexpr
bool check(ctre::character<V>) {
4260 template<auto A, auto B> constexpr
bool check(ctre::char_range<A,B>) {
4263constexpr
bool check(can_be_anything) {
4266 template<
typename... Content> constexpr
bool check(ctre::negative_set<Content...> nset) {
4267 boolcollision =
false;
4269collision |= this->
check(low, high);
4273 template<
auto... V> constexpr
bool check(ctre::enumeration<V...>) {
4275 return(
check(V,V) || ... ||
false);
4278 return(
check(Content{}) || ... ||
false);
4280 template<
typename... Content> constexpr
bool check(ctre::set<Content...>) {
4281 return(
check(Content{}) || ... ||
false);
4285 template<auto V> constexpr
voidpopulate(ctre::character<V>) {
4288 template<auto A, auto B> constexpr
voidpopulate(ctre::char_range<A,B>) {
4291constexpr
voidpopulate(...) {
4296 template<
typename... Content> constexpr
voidpopulate(ctre::negative_set<Content...> nset) {
4298this->insert(low, high);
4301 template<
typename... Content> constexpr
voidpopulate(ctre::set<Content...>) {
4302(populate(Content{}), ...);
4305(populate(Content{}), ...);
4310constexpr
size_tcapacity = calculate_size_of_first(rhs);
4312point_set<capacity>
set;
4315 return set.check(lhs);
4326 #ifndef CTRE_MSVC_GREEDY_WORKAROUND 4327 #define CTRE_MSVC_GREEDY_WORKAROUND 4333 template<
size_tLimit> constexpr CTRE_FORCE_INLINE
boolless_than_or_infinite([[maybe_unused]]
size_t i) noexcept {
4334 ifconstexpr (Limit == 0) {
4342 template<
size_tLimit> constexpr CTRE_FORCE_INLINE
boolless_than([[maybe_unused]]
size_t i) noexcept {
4343 ifconstexpr (Limit == 0) {
4351constexpr
boolis_bidirectional(
conststd::bidirectional_iterator_tag &) {
return true; }
4352constexpr
boolis_bidirectional(...) {
return false; }
4355 template<
typenameR,
typenameBeginIterator,
typenameIterator,
typenameEndIterator>
4356constexpr CTRE_FORCE_INLINE
Revaluate(
constBeginIterator, Iterator,
constEndIterator,
flags,
R, ...) noexcept {
4361 template<
typenameR,
typenameBeginIterator,
typenameIterator,
typenameEndIterator>
4362constexpr CTRE_FORCE_INLINE
Revaluate(
constBeginIterator, Iterator,
constEndIterator,
flags,
Rcaptures,
ctll::list<accept>) noexcept {
4363 returncaptures.matched();
4367 template<
typename R,
typename... Rest,
typenameBeginIterator,
typenameIterator,
typenameEndIterator>
4373 template<
typename R,
typenameBeginIterator,
typenameIterator,
typenameEndIterator,
typename... Tail>
4379 template<
typename R,
typenameBeginIterator,
typenameIterator,
typenameEndIterator,
typename... Tail>
4385 template<
typename R,
typenameBeginIterator,
typenameIterator,
typenameEndIterator,
typename... Tail>
4386constexpr CTRE_FORCE_INLINE
Revaluate(
constBeginIterator, Iterator current,
constEndIterator, [[maybe_unused]]
const flags&
f,
Rcaptures,
ctll::list<end_cycle_mark>) noexcept {
4387 if(cannot_be_empty_match(
f)) {
4391 returncaptures.set_end_mark(current).matched();
4396 template<
typename R,
typenameBeginIterator,
typenameIterator,
typenameEndIterator,
typenameCharacterLike,
typename... Tail,
typename= std::enable_if_t<(MatchesCharacter<CharacterLike>::template value<decltype(*std::declval<Iterator>())>)>>
4398 if(current ==
last)
returnnot_matched;
4399 if(!CharacterLike::match_char(*current,
f))
returnnot_matched;
4404 template<
typename R,
typenameBeginIterator,
typenameIterator,
typenameEndIterator,
typename... Tail>
4405constexpr CTRE_FORCE_INLINE
Revaluate(
constBeginIterator begin, Iterator current,
constEndIterator
last,
const flags&
f,
Rcaptures,
ctll::list<any, Tail...>) noexcept {
4406 if(current ==
last)
returnnot_matched;
4408 if(multiline_mode(
f)) {
4410 if(*current ==
'\n')
returnnot_matched;
4416 template<
auto... String,
typenameIterator,
typenameEndIterator> constexpr CTRE_FORCE_INLINE
boolmatch_string([[maybe_unused]] Iterator & current, [[maybe_unused]]
constEndIterator
last, [[maybe_unused]]
const flags&
f) {
4417 return((current !=
last&& character<String>::match_char(*current++,
f)) && ... &&
true);
4420 template<
typename R,
typenameBeginIterator,
typenameIterator,
typenameEndIterator,
auto... String,
typename... Tail>
4421constexpr CTRE_FORCE_INLINE
Revaluate(
constBeginIterator begin, Iterator current,
constEndIterator
last, [[maybe_unused]]
const flags&
f,
Rcaptures,
ctll::list<string<String...>, Tail...>) noexcept {
4422 if(!match_string<String...>(current,
last,
f)) {
4426 returnevaluate(begin, current,
last, consumed_something(
f,
sizeof...(String) > 0), captures,
ctll::list<Tail...>());
4430 template<
typename R,
typenameBeginIterator,
typenameIterator,
typenameEndIterator,
typenameHeadOptions,
typename... TailOptions,
typename... Tail>
4431constexpr CTRE_FORCE_INLINE
Revaluate(
constBeginIterator begin, Iterator current,
constEndIterator
last,
const flags&
f,
Rcaptures,
ctll::list<select<HeadOptions, TailOptions...>, Tail...>) noexcept {
4435 returnevaluate(begin, current,
last,
f, captures,
ctll::list<select<TailOptions...>, Tail...>());
4439 template<
typename R,
typenameBeginIterator,
typenameIterator,
typenameEndIterator,
typename... Tail>
4440constexpr CTRE_FORCE_INLINE
Revaluate(
constBeginIterator, Iterator,
constEndIterator,
flags,
R,
ctll::list<select<>, Tail...>) noexcept {
4446 template<
typename R,
typenameBeginIterator,
typenameIterator,
typenameEndIterator,
typenameHeadContent,
typename... TailContent,
typename... Tail>
4447constexpr CTRE_FORCE_INLINE
Revaluate(
constBeginIterator begin, Iterator current,
constEndIterator
last,
const flags&
f,
Rcaptures,
ctll::list<sequence<HeadContent, TailContent...>, Tail...>) noexcept {
4448 ifconstexpr (
sizeof...(TailContent) > 0) {
4449 returnevaluate(begin, current,
last,
f, captures,
ctll::list<HeadContent, sequence<TailContent...>, Tail...>());
4456 template<
typename R,
typenameBeginIterator,
typenameIterator,
typenameEndIterator,
typename... Tail>
4462 template<
typename R,
typenameBeginIterator,
typenameIterator,
typenameEndIterator,
typename... Tail>
4464 if(begin != current) {
4470 template<
typename R,
typenameBeginIterator,
typenameIterator,
typenameEndIterator,
typename... Tail>
4472 if(
last!= current) {
4478 template<
typename R,
typenameBeginIterator,
typenameIterator,
typenameEndIterator,
typename... Tail>
4480 if(multiline_mode(
f)) {
4481 if(
last== current) {
4483}
else if(*current ==
'\n'&&
std::next(current) ==
last) {
4489 if(
last!= current) {
4496 template<
typename R,
typenameBeginIterator,
typenameIterator,
typenameEndIterator,
typename... Tail>
4498 if(multiline_mode(
f)) {
4499 if(begin == current) {
4501}
else if(*
std::prev(current) ==
'\n') {
4507 if(begin != current) {
4514 template<
typename R,
typenameBeginIterator,
typenameIterator,
typenameEndIterator,
typename... Tail>
4516 if(multiline_mode(
f)) {
4517 if(
last== current) {
4519}
else if(*current ==
'\n') {
4525 if(
last!= current) {
4532 if(
last!= current) {
4539 template<
typename R,
typenameBeginIterator,
typenameIterator,
typenameEndIterator,
typenameCharacterLike,
typename... Tail>
4540constexpr CTRE_FORCE_INLINE
Revaluate(
constBeginIterator begin, Iterator current,
constEndIterator
last,
const flags&
f,
Rcaptures,
ctll::list<boundary<CharacterLike>, Tail...>) noexcept {
4543 boolbefore =
false;
4544 boolafter =
false;
4546static_assert(is_bidirectional(
typenamestd::iterator_traits<Iterator>::iterator_category{}),
"To use boundary in regex you need to provide bidirectional iterator or range.");
4548 if(
last!= current) {
4549after = CharacterLike::match_char(*current,
f);
4551 if(begin != current) {
4552before = CharacterLike::match_char(*
std::prev(current),
f);
4555 if(before == after)
returnnot_matched;
4561 template<
typename R,
typenameBeginIterator,
typenameIterator,
typenameEndIterator,
typenameCharacterLike,
typename... Tail>
4562constexpr CTRE_FORCE_INLINE
Revaluate(
constBeginIterator begin, Iterator current,
constEndIterator
last,
const flags&
f,
Rcaptures,
ctll::list<not_boundary<CharacterLike>, Tail...>) noexcept {
4565 boolbefore =
false;
4566 boolafter =
false;
4568static_assert(is_bidirectional(
typenamestd::iterator_traits<Iterator>::iterator_category{}),
"To use boundary in regex you need to provide bidirectional iterator or range.");
4570 if(
last!= current) {
4571after = CharacterLike::match_char(*current,
f);
4573 if(begin != current) {
4574before = CharacterLike::match_char(*
std::prev(current),
f);
4577 if(before != after)
returnnot_matched;
4583 template<
typename R,
typenameBeginIterator,
typenameIterator,
typenameEndIterator,
size_t A,
size_t B,
typename... Content,
typename... Tail>
4584constexpr CTRE_FORCE_INLINE
Revaluate(
constBeginIterator begin, Iterator current,
constEndIterator
last, [[maybe_unused]]
const flags&
f,
Rcaptures,
ctll::list<lazy_repeat<A,B,Content...>, Tail...>) noexcept {
4586 ifconstexpr (
B!= 0 &&
A>
B) {
4589 constIterator backup_current = current;
4593 while(less_than<A>(
i)) {
4596 if(!outer_result)
returnnot_matched;
4598captures = outer_result.unmatch();
4599current = outer_result.get_end_position();
4604 if(
autoouter_result = evaluate(begin, current,
last, consumed_something(
f, backup_current != current), captures,
ctll::list<Tail...>())) {
4605 returnouter_result;
4608 while(less_than_or_infinite<B>(
i)) {
4611 if(!inner_result)
returnnot_matched;
4613 autoouter_result = evaluate(begin, inner_result.get_end_position(),
last, consumed_something(
f), inner_result.unmatch(),
ctll::list<Tail...>());
4616 returnouter_result;
4619captures = inner_result.unmatch();
4620current = inner_result.get_end_position();
4631 template<
typename R,
typenameBeginIterator,
typenameIterator,
typenameEndIterator,
size_t A,
size_t B,
typename... Content,
typename... Tail>
4632constexpr CTRE_FORCE_INLINE
Revaluate(
constBeginIterator begin, Iterator current,
constEndIterator
last, [[maybe_unused]]
const flags&
f,
Rcaptures,
ctll::list<possessive_repeat<A,B,Content...>, Tail...>) noexcept {
4634 ifconstexpr ((
B!= 0) && (
A>
B)) {
4637 const autobackup_current = current;
4639 for(
size_t i{0}; less_than_or_infinite<B>(
i); ++
i) {
4643 if(!inner_result) {
4644 if(!less_than<A>(
i))
break;
4648captures = inner_result.unmatch();
4649current = inner_result.get_end_position();
4652 returnevaluate(begin, current,
last, consumed_something(
f, backup_current != current), captures,
ctll::list<Tail...>());
4657 template<
typename R,
typenameBeginIterator,
typenameIterator,
typenameEndIterator,
size_t A,
size_t B,
typename... Content,
typename... Tail>
4658 #ifdef CTRE_MSVC_GREEDY_WORKAROUND 4659constexpr
inline voidevaluate_recursive(
R&
result,
size_t i,
constBeginIterator begin, Iterator current,
constEndIterator
last, [[maybe_unused]]
const flags&
f,
Rcaptures,
ctll::list<repeat<A,B,Content...>, Tail...> stack) noexcept {
4661constexpr
inline Revaluate_recursive(
size_t i,
constBeginIterator begin, Iterator current,
constEndIterator
last, [[maybe_unused]]
const flags&
f,
Rcaptures,
ctll::list<repeat<A,B,Content...>, Tail...> stack) noexcept {
4663 if(less_than_or_infinite<B>(
i)) {
4673 autotmp_current = current;
4674tmp_current = inner_result.get_end_position();
4675 #ifdef CTRE_MSVC_GREEDY_WORKAROUND 4676evaluate_recursive(
result,
i+1, begin, tmp_current,
last,
f, inner_result.unmatch(), stack);
4681 if(
autorec_result = evaluate_recursive(
i+1, begin, tmp_current,
last,
f, inner_result.unmatch(), stack)) {
4687 #ifdef CTRE_MSVC_GREEDY_WORKAROUND 4695 template<
typename R,
typenameBeginIterator,
typenameIterator,
typenameEndIterator,
size_t A,
size_t B,
typename... Content,
typename... Tail>
4696constexpr CTRE_FORCE_INLINE
Revaluate(
constBeginIterator begin, Iterator current,
constEndIterator
last, [[maybe_unused]]
const flags&
f,
Rcaptures, [[maybe_unused]]
ctll::list<repeat<A,B,Content...>, Tail...> stack) {
4698 ifconstexpr ((
B!= 0) && (
A>
B)) {
4702 #ifndef CTRE_DISABLE_GREEDY_OPT 4703 else ifconstexpr (!collides(calculate_first(Content{}...), calculate_first(Tail{}...))) {
4704 returnevaluate(begin, current,
last,
f, captures,
ctll::list<possessive_repeat<A,B,Content...>, Tail...>());
4710 while(less_than<A>(
i)) {
4713 if(!inner_result)
returnnot_matched;
4715captures = inner_result.unmatch();
4716current = inner_result.get_end_position();
4721 #ifdef CTRE_MSVC_GREEDY_WORKAROUND 4723evaluate_recursive(
result,
i, begin, current,
last,
f, captures, stack);
4726 returnevaluate_recursive(
i, begin, current,
last,
f, captures, stack);
4733 template<
typename R,
typenameBeginIterator,
typenameIterator,
typenameEndIterator,
size_tId,
typename... Content,
typename... Tail>
4734constexpr CTRE_FORCE_INLINE
Revaluate(
constBeginIterator begin, Iterator current,
constEndIterator
last,
const flags&
f,
Rcaptures,
ctll::list<capture<Id, Content...>, Tail...>) noexcept {
4735 returnevaluate(begin, current,
last,
f, captures.template start_capture<Id>(current),
ctll::list<sequence<Content...>, numeric_mark<Id>, Tail...>());
4739 template<
typename R,
typenameBeginIterator,
typenameIterator,
typenameEndIterator,
size_tId,
typename... Tail>
4740constexpr CTRE_FORCE_INLINE
Revaluate(
constBeginIterator begin, Iterator current,
constEndIterator
last,
const flags&
f,
Rcaptures,
ctll::list<numeric_mark<Id>, Tail...>) noexcept {
4745 template<
typename R,
typenameBeginIterator,
typenameIterator,
typenameEndIterator,
size_tId,
typenameName,
typename... Content,
typename... Tail>
4746constexpr CTRE_FORCE_INLINE
Revaluate(
constBeginIterator begin, Iterator current,
constEndIterator
last,
const flags&
f,
Rcaptures,
ctll::list<capture_with_name<Id, Name, Content...>, Tail...>) noexcept {
4747 returnevaluate(begin, current,
last,
f, captures.template start_capture<Id>(current),
ctll::list<sequence<Content...>, numeric_mark<Id>, Tail...>());
4751 template<
typenameIterator>
structstring_match {
4756 template<
typenameIterator,
typenameEndIterator> constexpr CTRE_FORCE_INLINE string_match<Iterator> match_against_range(Iterator current,
constEndIterator
last, Iterator range_current,
constIterator range_end,
flags) noexcept {
4757 while(
last!= current && range_end != range_current) {
4758 if(*current == *range_current) {
4762 return{current,
false};
4765 return{current, range_current == range_end};
4769 template<
typename R,
typenameId,
typenameBeginIterator,
typenameIterator,
typenameEndIterator,
typename... Tail>
4770constexpr CTRE_FORCE_INLINE
Revaluate(
constBeginIterator begin, Iterator current,
constEndIterator
last,
const flags&
f,
Rcaptures,
ctll::list<back_reference_with_name<Id>, Tail...>) noexcept {
4772 if(
const autoref = captures.template get<Id>()) {
4773 if(
auto result= match_against_range(current,
last, ref.begin(), ref.end(),
f);
result.match) {
4781 template<
typename R,
size_tId,
typenameBeginIterator,
typenameIterator,
typenameEndIterator,
typename... Tail>
4782constexpr CTRE_FORCE_INLINE
Revaluate(
constBeginIterator begin, Iterator current,
constEndIterator
last,
const flags&
f,
Rcaptures,
ctll::list<back_reference<Id>, Tail...>) noexcept {
4784 if(
const autoref = captures.template get<Id>()) {
4785 if(
auto result= match_against_range(current,
last, ref.begin(), ref.end(),
f);
result.match) {
4793 template<
typename R,
typenameBeginIterator,
typenameIterator,
typenameEndIterator,
typename... Tail>
4796 returncaptures.matched();
4799 template<
typename R,
typenameBeginIterator,
typenameIterator,
typenameEndIterator,
typename... Tail>
4802 returncaptures.matched();
4806 template<
typename R,
typenameBeginIterator,
typenameIterator,
typenameEndIterator,
typename... Content,
typename... Tail>
4807constexpr CTRE_FORCE_INLINE
Revaluate(
constBeginIterator begin, Iterator current,
constEndIterator
last,
const flags&
f,
Rcaptures,
ctll::list<lookahead_positive<Content...>, Tail...>) noexcept {
4809 if(
autolookahead_result = evaluate(begin, current,
last,
f, captures,
ctll::list<sequence<Content...>, end_lookahead_mark>())) {
4810captures = lookahead_result.unmatch();
4818 template<
typename R,
typenameBeginIterator,
typenameIterator,
typenameEndIterator,
typename... Content,
typename... Tail>
4819constexpr CTRE_FORCE_INLINE
Revaluate(
constBeginIterator begin, Iterator current,
constEndIterator
last,
const flags&
f,
Rcaptures,
ctll::list<lookahead_negative<Content...>, Tail...>) noexcept {
4821 if(
autolookahead_result = evaluate(begin, current,
last,
f, captures,
ctll::list<sequence<Content...>, end_lookahead_mark>())) {
4829constexpr
boolis_at_least_bidirectional(std::input_iterator_tag) {
4833constexpr
boolis_at_least_bidirectional(std::bidirectional_iterator_tag) {
4837 template<
typename R,
typenameBeginIterator,
typenameIterator,
typenameEndIterator,
typename... Content,
typename... Tail>
4838constexpr CTRE_FORCE_INLINE
Revaluate(
constBeginIterator begin, Iterator current,
constEndIterator
last,
const flags&
f,
Rcaptures,
ctll::list<lookbehind_positive<Content...>, Tail...>) noexcept {
4839static_assert(is_at_least_bidirectional(
typenamestd::iterator_traits<Iterator>::iterator_category{}),
"to use lookbehind you must provide bi-directional iterator");
4841 if(
autolookbehind_result = evaluate(std::make_reverse_iterator(
last), std::make_reverse_iterator(current), std::make_reverse_iterator(begin),
f, captures,
ctll::list<sequence<Content...>, end_lookbehind_mark>())) {
4842captures = lookbehind_result.unmatch();
4850 template<
typename R,
typenameBeginIterator,
typenameIterator,
typenameEndIterator,
typename... Content,
typename... Tail>
4851constexpr CTRE_FORCE_INLINE
Revaluate(
constBeginIterator begin, Iterator current,
constEndIterator
last,
const flags&
f,
Rcaptures,
ctll::list<lookbehind_negative<Content...>, Tail...>) noexcept {
4852static_assert(is_at_least_bidirectional(
typenamestd::iterator_traits<Iterator>::iterator_category{}),
"to use negative lookbehind you must provide bi-directional iterator");
4854 if(
autolookbehind_result = evaluate(std::make_reverse_iterator(
last), std::make_reverse_iterator(current), std::make_reverse_iterator(begin),
f, captures,
ctll::list<sequence<Content...>, end_lookbehind_mark>())) {
4862 template<
typename R,
typenameBeginIterator,
typenameIterator,
typenameEndIterator,
typenameMode,
typename... Tail>
4863constexpr CTRE_FORCE_INLINE
Revaluate(
constBeginIterator begin, Iterator current,
constEndIterator
last,
const flags&
f,
Rcaptures,
ctll::list<mode_switch<Mode>, Tail...>) noexcept {
4864 returnevaluate(begin, current,
last,
f+ Mode{}, captures,
ctll::list<Tail...>());
4871 #ifndef CTRE__WRAPPER__HPP 4872 #define CTRE__WRAPPER__HPP 4874 #ifndef CTRE_V2__CTRE__RANGE__HPP 4875 #define CTRE_V2__CTRE__RANGE__HPP 4877 #ifndef CTRE_V2__CTRE__ITERATOR__HPP 4878 #define CTRE_V2__CTRE__ITERATOR__HPP 4886 structregex_end_iterator {
4887constexpr regex_end_iterator() noexcept { }
4890 template<
typenameBeginIterator,
typenameEndIterator,
typenameRE,
typenameResultIterator = BeginIterator>
structregex_iterator {
4891 using value_type= decltype(RE::template exec_with_result_iterator<ResultIterator>(std::declval<BeginIterator>(), std::declval<EndIterator>()));
4892 usingiterator_category = std::forward_iterator_tag;
4895 usingdifference_type =
int;
4897BeginIterator orig_begin{};
4898BeginIterator current{};
4902constexpr CTRE_FORCE_INLINE regex_iterator() noexcept =
default;
4903constexpr CTRE_FORCE_INLINE regex_iterator(
constregex_iterator &) noexcept =
default;
4904constexpr CTRE_FORCE_INLINE regex_iterator(regex_iterator &&) noexcept =
default;
4906constexpr CTRE_FORCE_INLINE regex_iterator(BeginIterator begin, EndIterator
last) noexcept: orig_begin{begin}, current{begin}, end{
last}, current_match{RE::template exec_with_result_iterator<ResultIterator>(current,
last)} {
4907 if(current_match) {
4908current = current_match.template get<0>().end();
4912constexpr CTRE_FORCE_INLINE regex_iterator & operator=(
constregex_iterator &) noexcept =
default;
4913constexpr CTRE_FORCE_INLINE regex_iterator & operator=(regex_iterator &&) noexcept =
default;
4916 returncurrent_match;
4918constexpr CTRE_FORCE_INLINE regex_iterator & operator++() noexcept {
4919 if(current == end) {
4920current_match = decltype(current_match){};
4924current_match = RE::template exec_with_result_iterator<ResultIterator>(orig_begin, current, end);
4926 if(current_match) {
4927current = current_match.template get<0>().end();
4931constexpr CTRE_FORCE_INLINE regex_iterator operator++(
int) noexcept {
4932 autoprevious = *
this;
4936 friendconstexpr CTRE_FORCE_INLINE
bool operator==(
constregex_iterator<BeginIterator, EndIterator, RE, ResultIterator> & left,
constregex_iterator<BeginIterator, EndIterator, RE, ResultIterator> & right) noexcept {
4937 returnleft.current == right.current;
4939 friendconstexpr CTRE_FORCE_INLINE
bool operator!=(
constregex_iterator<BeginIterator, EndIterator, RE, ResultIterator> & left,
constregex_iterator<BeginIterator, EndIterator, RE, ResultIterator> & right) noexcept {
4940 return!(left.current == right.current);
4942 friendconstexpr CTRE_FORCE_INLINE
bool operator<(
constregex_iterator<BeginIterator, EndIterator, RE, ResultIterator> & left,
constregex_iterator<BeginIterator, EndIterator, RE, ResultIterator> & right) noexcept {
4943 returnleft.current < right.current;
4945 friendconstexpr CTRE_FORCE_INLINE
bool operator>(
constregex_iterator<BeginIterator, EndIterator, RE, ResultIterator> & left,
constregex_iterator<BeginIterator, EndIterator, RE, ResultIterator> & right) noexcept {
4946 returnleft.current > right.current;
4948 friendconstexpr CTRE_FORCE_INLINE
bool operator<=(
constregex_iterator<BeginIterator, EndIterator, RE, ResultIterator> & left,
constregex_iterator<BeginIterator, EndIterator, RE, ResultIterator> & right) noexcept {
4949 returnleft.current <= right.current;
4951 friendconstexpr CTRE_FORCE_INLINE
bool operator>=(
constregex_iterator<BeginIterator, EndIterator, RE, ResultIterator> & left,
constregex_iterator<BeginIterator, EndIterator, RE, ResultIterator> & right) noexcept {
4952 returnleft.current >= right.current;
4954 friendconstexpr CTRE_FORCE_INLINE
bool operator==(
constregex_iterator<BeginIterator, EndIterator, RE, ResultIterator> & left, regex_end_iterator) noexcept {
4955 return!
bool(left.current_match);
4957 friendconstexpr CTRE_FORCE_INLINE
bool operator==(regex_end_iterator,
constregex_iterator<BeginIterator, EndIterator, RE, ResultIterator> & right) noexcept {
4958 return!
bool(right.current_match);
4960 friendconstexpr CTRE_FORCE_INLINE
bool operator!=(
constregex_iterator<BeginIterator, EndIterator, RE, ResultIterator> & left, regex_end_iterator) noexcept {
4961 return bool(left.current_match);
4963 friendconstexpr CTRE_FORCE_INLINE
bool operator!=(regex_end_iterator,
constregex_iterator<BeginIterator, EndIterator, RE, ResultIterator> & right) noexcept {
4964 return bool(right.current_match);
4968 template<
typenameBeginIterator,
typenameEndIterator,
typenameRE,
typenameResultIterator = BeginIterator>
structregex_split_iterator {
4969 using value_type= decltype(RE::template exec_with_result_iterator<ResultIterator>(std::declval<BeginIterator>(), std::declval<EndIterator>()));
4970 usingiterator_category = std::forward_iterator_tag;
4973 usingdifference_type =
int;
4975BeginIterator orig_begin{};
4976BeginIterator current{};
4979 boollast_match{
false};
4981constexpr CTRE_FORCE_INLINE
voidmodify_match() {
4982 auto tmp= current_match.template get<0>().end();
4983current_match.set_end_mark(current_match.template get<0>().begin());
4984current_match.set_start_mark(current);
4988constexpr CTRE_FORCE_INLINE
voidmatch_rest() {
4990current_match.set_start_mark(current);
4991current_match.matched();
4992current = current_match.template get<0>().end();
4996constexpr CTRE_FORCE_INLINE regex_split_iterator() noexcept =
default;
4997constexpr CTRE_FORCE_INLINE regex_split_iterator(
constregex_split_iterator &) noexcept =
default;
4998constexpr CTRE_FORCE_INLINE regex_split_iterator(regex_split_iterator &&) noexcept =
default;
5000constexpr CTRE_FORCE_INLINE regex_split_iterator(BeginIterator begin, EndIterator
last) noexcept: orig_begin{begin}, current{begin}, end{
last}, current_match{RE::template exec_with_result_iterator<ResultIterator>(current,
last)} {
5001 if(current_match) {
5008constexpr CTRE_FORCE_INLINE regex_split_iterator & operator=(
constregex_split_iterator &) noexcept =
default;
5009constexpr CTRE_FORCE_INLINE regex_split_iterator & operator=(regex_split_iterator &&) noexcept =
default;
5012 returncurrent_match;
5014constexpr CTRE_FORCE_INLINE regex_split_iterator & operator++() noexcept {
5015 if(current == end && last_match) {
5016current_match = decltype(current_match){};
5020current_match = RE::template exec_with_result_iterator<ResultIterator>(orig_begin, current, end);
5022 if(current_match) {
5029constexpr CTRE_FORCE_INLINE regex_split_iterator operator++(
int) noexcept {
5030 autoprevious = *
this;
5034 friendconstexpr CTRE_FORCE_INLINE
bool operator==(
constregex_split_iterator<BeginIterator, EndIterator, RE, ResultIterator> & left,
constregex_split_iterator<BeginIterator, EndIterator, RE, ResultIterator> & right) noexcept {
5035 returnleft.current == right.current;
5037 friendconstexpr CTRE_FORCE_INLINE
bool operator!=(
constregex_split_iterator<BeginIterator, EndIterator, RE, ResultIterator> & left,
constregex_split_iterator<BeginIterator, EndIterator, RE, ResultIterator> & right) noexcept {
5038 return!(left.current == right.current);
5040 friendconstexpr CTRE_FORCE_INLINE
bool operator<(
constregex_split_iterator<BeginIterator, EndIterator, RE, ResultIterator> & left,
constregex_split_iterator<BeginIterator, EndIterator, RE, ResultIterator> & right) noexcept {
5041 returnleft.current < right.current;
5043 friendconstexpr CTRE_FORCE_INLINE
bool operator>(
constregex_split_iterator<BeginIterator, EndIterator, RE, ResultIterator> & left,
constregex_split_iterator<BeginIterator, EndIterator, RE, ResultIterator> & right) noexcept {
5044 returnleft.current > right.current;
5046 friendconstexpr CTRE_FORCE_INLINE
bool operator<=(
constregex_split_iterator<BeginIterator, EndIterator, RE, ResultIterator> & left,
constregex_split_iterator<BeginIterator, EndIterator, RE, ResultIterator> & right) noexcept {
5047 returnleft.current <= right.current;
5049 friendconstexpr CTRE_FORCE_INLINE
bool operator>=(
constregex_split_iterator<BeginIterator, EndIterator, RE, ResultIterator> & left,
constregex_split_iterator<BeginIterator, EndIterator, RE, ResultIterator> & right) noexcept {
5050 returnleft.current >= right.current;
5052 friendconstexpr CTRE_FORCE_INLINE
bool operator==(
constregex_split_iterator<BeginIterator, EndIterator, RE, ResultIterator> & left, regex_end_iterator) noexcept {
5053 return!
bool(left.current_match);
5055 friendconstexpr CTRE_FORCE_INLINE
bool operator==(regex_end_iterator,
constregex_split_iterator<BeginIterator, EndIterator, RE, ResultIterator> & right) noexcept {
5056 return!
bool(right.current_match);
5058 friendconstexpr CTRE_FORCE_INLINE
bool operator!=(
constregex_split_iterator<BeginIterator, EndIterator, RE, ResultIterator> & left, regex_end_iterator) noexcept {
5059 return bool(left.current_match);
5061 friendconstexpr CTRE_FORCE_INLINE
bool operator!=(regex_end_iterator,
constregex_split_iterator<BeginIterator, EndIterator, RE, ResultIterator> & right) noexcept {
5062 return bool(right.current_match);
5072 template<
typename> constexpr
boolis_range =
false;
5074 template<
typenameBeginIterator,
typenameEndIterator,
typenameRE,
typenameResultIterator = BeginIterator>
structregex_range {
5075BeginIterator _begin;
5078constexpr CTRE_FORCE_INLINE regex_range(BeginIterator begin, EndIterator end) noexcept: _begin{begin}, _end{end} { }
5080constexpr CTRE_FORCE_INLINE
autobegin()
constnoexcept {
5081 returnregex_iterator<BeginIterator, EndIterator, RE, ResultIterator>(_begin, _end);
5083constexpr CTRE_FORCE_INLINE
autoend()
constnoexcept {
5084 returnregex_end_iterator{};
5088 template<
typename... Ts> constexpr
boolis_range<regex_range<Ts...>> =
true;
5090 template<
typenameBeginIterator,
typenameEndIterator,
typenameRE,
typenameResultIterator = BeginIterator>
structregex_split_range {
5091BeginIterator _begin;
5094constexpr CTRE_FORCE_INLINE regex_split_range(BeginIterator begin, EndIterator end) noexcept: _begin{begin}, _end{end} { }
5096constexpr CTRE_FORCE_INLINE
autobegin()
constnoexcept {
5097 returnregex_split_iterator<BeginIterator, EndIterator, RE, ResultIterator>(_begin, _end);
5099constexpr CTRE_FORCE_INLINE
autoend()
constnoexcept {
5100 returnregex_end_iterator{};
5104 template<
typename... Ts> constexpr
boolis_range<regex_split_range<Ts...>> =
true;
5106 template<
typenameRange,
typenameRE>
structmulti_subject_range {
5107 structend_iterator { };
5109 usingfirst_type = decltype(std::declval<Range>().begin());
5110 usinglast_type = decltype(std::declval<Range>().end());
5114 usingiterator_category = std::forward_iterator_tag;
5117 usingdifference_type =
int;
5119first_type
first{};
5123constexpr CTRE_FORCE_INLINE iterator() noexcept =
default;
5124constexpr CTRE_FORCE_INLINE iterator(first_type
f, last_type
l) noexcept:
first{
f},
last{
l}, current_result{find_first()} { }
5126constexpr CTRE_FORCE_INLINE
value_typefind_first() noexcept {
5128 if(
autores = RE::exec(*
first))
returnres;
5135 returncurrent_result;
5138constexpr CTRE_FORCE_INLINE iterator & operator++() noexcept {
5140current_result = find_first();
5143constexpr CTRE_FORCE_INLINE iterator operator++(
int) noexcept {
5144 autoprevious = *
this;
5149 friendconstexpr CTRE_FORCE_INLINE
bool operator==(
constiterator & left,
constiterator & right) noexcept {
5150 returnleft.first == right.first;
5152 friendconstexpr CTRE_FORCE_INLINE
bool operator!=(
constiterator & left,
constiterator & right) noexcept {
5153 return!(left.first == right.first);
5155 friendconstexpr CTRE_FORCE_INLINE
bool operator<(
constiterator & left,
constiterator & right) noexcept {
5156 returnleft.first < right.first;
5158 friendconstexpr CTRE_FORCE_INLINE
bool operator>(
constiterator & left,
constiterator & right) noexcept {
5159 returnleft.first > right.first;
5161 friendconstexpr CTRE_FORCE_INLINE
bool operator<=(
constiterator & left,
constiterator & right) noexcept {
5162 returnleft.first <= right.first;
5164 friendconstexpr CTRE_FORCE_INLINE
bool operator>=(
constiterator & left,
constiterator & right) noexcept {
5165 returnleft.first >= right.first;
5167 friendconstexpr CTRE_FORCE_INLINE
bool operator==(
constiterator & left, end_iterator) noexcept {
5168 returnleft.first == left.last;
5170 friendconstexpr CTRE_FORCE_INLINE
bool operator==(end_iterator,
constiterator & right) noexcept {
5171 returnright.first == right.last;
5173 friendconstexpr CTRE_FORCE_INLINE
bool operator!=(
constiterator & left, end_iterator) noexcept {
5174 returnleft.first != left.last;
5176 friendconstexpr CTRE_FORCE_INLINE
bool operator!=(end_iterator,
constiterator & right) noexcept {
5177 returnright.first == right.last;
5183constexpr CTRE_FORCE_INLINE multi_subject_range() noexcept =
default;
5184constexpr CTRE_FORCE_INLINE multi_subject_range(Range
r) noexcept: range{
r} { }
5186constexpr CTRE_FORCE_INLINE
autobegin()
constnoexcept {
5187 returniterator{range.begin(), range.end()};
5189constexpr CTRE_FORCE_INLINE
autoend()
constnoexcept {
5190 returnend_iterator{};
5195 template<
typename... Ts> constexpr
boolis_range<multi_subject_range<Ts...>> =
true;
5199 #if defined __cpp_lib_ranges && __cpp_lib_ranges >= 201911 5200 namespacestd::ranges {
5202 template<
typename... Ts>
inlineconstexpr
boolenable_borrowed_range<::ctre::regex_range<Ts...>> =
true;
5203 template<
typename... Ts>
inlineconstexpr
boolenable_borrowed_range<::ctre::regex_split_range<Ts...>> =
true;
5204 template<
typenameRange,
typenameRE>
inlineconstexpr
boolenable_borrowed_range<::ctre::multi_subject_range<Range, RE>> = enable_borrowed_range<Range>;
5205 template<
typenameRange,
typenameRE>
inlineconstexpr
boolenable_view<::ctre::multi_subject_range<Range, RE>> =
true;
5212 #include <string_view> 5216 template<
typenameRE,
typenameMethod =
void,
typenameModifier = singleline>
structregular_expression;
5218 structzero_terminated_string_end_iterator {
5220 usingself_type = zero_terminated_string_end_iterator;
5222 usingreference =
char&;
5224 usingiterator_category = std::bidirectional_iterator_tag;
5225 usingdifference_type =
int;
5228 autooperator++() noexcept -> self_type &;
5229 autooperator++(
int) noexcept -> self_type;
5231 auto operator--(
int) noexcept -> self_type;
5233 auto operator*() noexcept -> reference;
5235constexpr CTRE_FORCE_INLINE
friend bool operator==(
const char* ptr, zero_terminated_string_end_iterator) noexcept {
5236 return*ptr ==
'\0';
5238constexpr CTRE_FORCE_INLINE
friend bool operator==(
const wchar_t* ptr, zero_terminated_string_end_iterator) noexcept {
5241constexpr CTRE_FORCE_INLINE
friend bool operator!=(
const char* ptr, zero_terminated_string_end_iterator) noexcept {
5242 return*ptr !=
'\0';
5244constexpr CTRE_FORCE_INLINE
friend bool operator!=(
const wchar_t* ptr, zero_terminated_string_end_iterator) noexcept {
5247constexpr CTRE_FORCE_INLINE
friend bool operator==(zero_terminated_string_end_iterator,
const char* ptr) noexcept {
5248 return*ptr ==
'\0';
5250constexpr CTRE_FORCE_INLINE
friend bool operator==(zero_terminated_string_end_iterator,
const wchar_t* ptr) noexcept {
5253constexpr CTRE_FORCE_INLINE
friend bool operator!=(zero_terminated_string_end_iterator,
const char* ptr) noexcept {
5254 return*ptr !=
'\0';
5256constexpr CTRE_FORCE_INLINE
friend bool operator!=(zero_terminated_string_end_iterator,
const wchar_t* ptr) noexcept {
5261 template<
typenameT>
classRangeLikeType {
5262 template<
typenameY>
static auto test(Y *) -> decltype(std::declval<const Y &>().begin(), std::declval<const Y &>().end(), std::true_type());
5263 template<
typename>
static auto test(...) -> std::false_type;
5265 static inlineconstexpr
bool value= decltype(
test<std::remove_reference_t<std::remove_const_t<T>>>(
nullptr))::
value;
5268 structmatch_method {
5269 template<
typenameModifier = singleline,
typenameResultIterator =
void,
typenameRE,
typenameIteratorBegin,
typenameIteratorEnd> constexpr CTRE_FORCE_INLINE
static autoexec(IteratorBegin orig_begin, IteratorBegin begin, IteratorEnd end, RE) noexcept {
5270 usingresult_iterator = std::conditional_t<std::is_same_v<ResultIterator, void>, IteratorBegin, ResultIterator>;
5272 returnevaluate(orig_begin, begin, end, Modifier{}, return_type<result_iterator, RE>{},
ctll::list<start_mark, RE, assert_subject_end, end_mark, accept>());
5275 template<
typenameModifier = singleline,
typenameResultIterator =
void,
typenameRE,
typenameIteratorBegin,
typenameIteratorEnd> constexpr CTRE_FORCE_INLINE
static autoexec(IteratorBegin begin, IteratorEnd end, RE) noexcept {
5276 returnexec<Modifier, ResultIterator>(begin, begin, end, RE{});
5280 structsearch_method {
5281 template<
typenameModifier = singleline,
typenameResultIterator =
void,
typenameRE,
typenameIteratorBegin,
typenameIteratorEnd> constexpr CTRE_FORCE_INLINE
static autoexec(IteratorBegin orig_begin, IteratorBegin begin, IteratorEnd end, RE) noexcept {
5282 usingresult_iterator = std::conditional_t<std::is_same_v<ResultIterator, void>, IteratorBegin, ResultIterator>;
5284constexpr
boolfixed = starts_with_anchor(Modifier{},
ctll::list<RE>{});
5288 for(; end != it && !fixed; ++it) {
5299 if(!
out)
out.set_end_mark(it);
5303 template<
typenameModifier = singleline,
typenameResultIterator =
void,
typenameRE,
typenameIteratorBegin,
typenameIteratorEnd> constexpr CTRE_FORCE_INLINE
static autoexec(IteratorBegin begin, IteratorEnd end, RE) noexcept {
5304 returnexec<Modifier, ResultIterator>(begin, begin, end, RE{});
5308 structstarts_with_method {
5309 template<
typenameModifier = singleline,
typenameResultIterator =
void,
typenameRE,
typenameIteratorBegin,
typenameIteratorEnd> constexpr CTRE_FORCE_INLINE
static autoexec(IteratorBegin orig_begin, IteratorBegin begin, IteratorEnd end, RE) noexcept {
5310 usingresult_iterator = std::conditional_t<std::is_same_v<ResultIterator, void>, IteratorBegin, ResultIterator>;
5314 template<
typenameModifier = singleline,
typenameResultIterator =
void,
typenameRE,
typenameIteratorBegin,
typenameIteratorEnd> constexpr CTRE_FORCE_INLINE
static autoexec(IteratorBegin begin, IteratorEnd end, RE) noexcept {
5315 returnexec<Modifier, ResultIterator>(begin, begin, end, RE{});
5320 structrange_method {
5321 template<
typenameModifier = singleline,
typenameResultIterator =
void,
typenameRE,
typenameIteratorBegin,
typenameIteratorEnd> constexpr CTRE_FORCE_INLINE
static autoexec(IteratorBegin begin, IteratorEnd end, RE) noexcept {
5322 usingresult_iterator = std::conditional_t<std::is_same_v<ResultIterator, void>, IteratorBegin, ResultIterator>;
5323 usingwrapped_regex = regular_expression<RE, search_method, Modifier>;
5325 returnregex_range<IteratorBegin, IteratorEnd, wrapped_regex, result_iterator>(begin, end);
5329 structtokenize_method {
5330 template<
typenameModifier = singleline,
typenameResultIterator =
void,
typenameRE,
typenameIteratorBegin,
typenameIteratorEnd> constexpr CTRE_FORCE_INLINE
static autoexec(IteratorBegin begin, IteratorEnd end, RE) noexcept {
5331 usingresult_iterator = std::conditional_t<std::is_same_v<ResultIterator, void>, IteratorBegin, ResultIterator>;
5332 usingwrapped_regex = regular_expression<RE, starts_with_method, Modifier>;
5334 returnregex_range<IteratorBegin, IteratorEnd, wrapped_regex, result_iterator>(begin, end);
5338 structsplit_method {
5339 template<
typenameModifier = singleline,
typenameResultIterator =
void,
typenameRE,
typenameIteratorBegin,
typenameIteratorEnd> constexpr CTRE_FORCE_INLINE
static autoexec(IteratorBegin begin, IteratorEnd end, RE) noexcept {
5340 usingresult_iterator = std::conditional_t<std::is_same_v<ResultIterator, void>, IteratorBegin, ResultIterator>;
5341 usingwrapped_regex = regular_expression<RE, search_method, Modifier>;
5343 returnregex_split_range<IteratorBegin, IteratorEnd, wrapped_regex, result_iterator>(begin, end);
5347 structiterator_method {
5348 template<
typenameModifier = singleline,
typenameResultIterator =
void,
typenameRE,
typenameIteratorBegin,
typenameIteratorEnd> constexpr CTRE_FORCE_INLINE
static autoexec(IteratorBegin begin, IteratorEnd end, RE) noexcept {
5349 usingresult_iterator = std::conditional_t<std::is_same_v<ResultIterator, void>, IteratorBegin, ResultIterator>;
5350 usingwrapped_regex = regular_expression<RE, search_method, Modifier>;
5352 returnregex_iterator<IteratorBegin, IteratorEnd, wrapped_regex, result_iterator>(begin, end);
5354constexpr CTRE_FORCE_INLINE
static autoexec() noexcept {
5355 returnregex_end_iterator{};
5359 template<
typenameRE,
typenameMethod,
typenameModifier>
structregular_expression {
5360constexpr CTRE_FORCE_INLINE regular_expression() noexcept { }
5361constexpr CTRE_FORCE_INLINE regular_expression(RE) noexcept { }
5363 template<
typenameResultIterator,
typenameIteratorBegin,
typenameIteratorEnd> constexpr CTRE_FORCE_INLINE
static autoexec_with_result_iterator(IteratorBegin orig_begin, IteratorBegin begin, IteratorEnd end) noexcept {
5364 returnMethod::template exec<Modifier, ResultIterator>(orig_begin, begin, end, RE{});
5366 template<
typenameResultIterator,
typenameIteratorBegin,
typenameIteratorEnd> constexpr CTRE_FORCE_INLINE
static autoexec_with_result_iterator(IteratorBegin begin, IteratorEnd end) noexcept {
5367 returnMethod::template exec<Modifier, ResultIterator>(begin, end, RE{});
5369 template<
typenameRange> constexpr CTRE_FORCE_INLINE
static automulti_exec(Range && range) noexcept {
5370 returnmulti_subject_range<Range, regular_expression>{std::forward<Range>(range)};
5372constexpr CTRE_FORCE_INLINE
static autoexec() noexcept {
5373 returnMethod::exec();
5375 template<
typenameIteratorBegin,
typenameIteratorEnd> constexpr CTRE_FORCE_INLINE
static autoexec(IteratorBegin begin, IteratorEnd end) noexcept {
5376 returnMethod::template exec<Modifier>(begin, end, RE{});
5378 staticconstexpr CTRE_FORCE_INLINE
autoexec(
const char* s) noexcept {
5379 returnMethod::template exec<Modifier>(s, zero_terminated_string_end_iterator(), RE{});
5381 staticconstexpr CTRE_FORCE_INLINE
autoexec(
const wchar_t* s) noexcept {
5382 returnMethod::template exec<Modifier>(s, zero_terminated_string_end_iterator(), RE{});
5384 staticconstexpr CTRE_FORCE_INLINE
autoexec(std::string_view sv) noexcept {
5385 returnexec(sv.begin(), sv.end());
5387 staticconstexpr CTRE_FORCE_INLINE
autoexec(std::wstring_view sv) noexcept {
5388 returnexec(sv.begin(), sv.end());
5390 #ifdef CTRE_ENABLE_UTF8_RANGE 5391 staticconstexpr CTRE_FORCE_INLINE
autoexec(std::u8string_view sv) noexcept {
5392 returnexec_with_result_iterator<const char8_t *>(utf8_range(sv).begin(), utf8_range(sv).end());
5395 staticconstexpr CTRE_FORCE_INLINE
autoexec(std::u16string_view sv) noexcept {
5396 returnexec(sv.begin(), sv.end());
5398 staticconstexpr CTRE_FORCE_INLINE
autoexec(std::u32string_view sv) noexcept {
5399 returnexec(sv.begin(), sv.end());
5402 returnexec(std::begin(range), std::end(range));
5406 template<
typename... Args> CTRE_FORCE_INLINE constexpr
autooperator()(Args && ... args)
constnoexcept {
5407 returnexec(std::forward<Args>(args)...);
5410 template<
typename... Args> CTRE_FORCE_INLINE constexpr
autotry_extract(Args && ... args)
constnoexcept {
5411 returnexec(std::forward<Args>(args)...);
5415 template<
typename... Args>
staticconstexpr CTRE_FORCE_INLINE
auto match(Args && ... args) noexcept {
5416 returnregular_expression<RE, match_method, singleline>::exec(std::forward<Args>(args)...);
5418 template<
typename... Args>
staticconstexpr CTRE_FORCE_INLINE
autosearch(Args && ... args) noexcept {
5419 returnregular_expression<RE, search_method, singleline>::exec(std::forward<Args>(args)...);
5421 template<
typename... Args>
staticconstexpr CTRE_FORCE_INLINE
autostarts_with(Args && ... args) noexcept {
5422 returnregular_expression<RE, starts_with_method, singleline>::exec(std::forward<Args>(args)...);
5424 template<
typename... Args>
staticconstexpr CTRE_FORCE_INLINE
autorange(Args && ... args) noexcept {
5425 returnregular_expression<RE, range_method, singleline>::exec(std::forward<Args>(args)...);
5427 template<
typename... Args>
staticconstexpr CTRE_FORCE_INLINE
auto split(Args && ... args) noexcept {
5428 returnregular_expression<RE, split_method, singleline>::exec(std::forward<Args>(args)...);
5430 template<
typename... Args>
staticconstexpr CTRE_FORCE_INLINE
autotokenize(Args && ... args) noexcept {
5431 returnregular_expression<RE, tokenize_method, singleline>::exec(std::forward<Args>(args)...);
5433 template<
typename... Args>
staticconstexpr CTRE_FORCE_INLINE
autoiterator(Args && ... args) noexcept {
5434 returnregular_expression<RE, iterator_method, singleline>::exec(std::forward<Args>(args)...);
5437 template<
typename... Args>
staticconstexpr CTRE_FORCE_INLINE
automultiline_match(Args && ... args) noexcept {
5438 returnregular_expression<RE, match_method, multiline>::exec(std::forward<Args>(args)...);
5440 template<
typename... Args>
staticconstexpr CTRE_FORCE_INLINE
automultiline_search(Args && ... args) noexcept {
5441 returnregular_expression<RE, search_method, multiline>::exec(std::forward<Args>(args)...);
5443 template<
typename... Args>
staticconstexpr CTRE_FORCE_INLINE
automultiline_starts_with(Args && ... args) noexcept {
5444 returnregular_expression<RE, starts_with_method, multiline>::exec(std::forward<Args>(args)...);
5446 template<
typename... Args>
staticconstexpr CTRE_FORCE_INLINE
automultiline_range(Args && ... args) noexcept {
5447 returnregular_expression<RE, range_method, multiline>::exec(std::forward<Args>(args)...);
5449 template<
typename... Args>
staticconstexpr CTRE_FORCE_INLINE
automultiline_split(Args && ... args) noexcept {
5450 returnregular_expression<RE, split_method, multiline>::exec(std::forward<Args>(args)...);
5452 template<
typename... Args>
staticconstexpr CTRE_FORCE_INLINE
automultiline_tokenize(Args && ... args) noexcept {
5453 returnregular_expression<RE, tokenize_method, multiline>::exec(std::forward<Args>(args)...);
5455 template<
typename... Args>
staticconstexpr CTRE_FORCE_INLINE
automultiline_iterator(Args && ... args) noexcept {
5456 returnregular_expression<RE, iterator_method, multiline>::exec(std::forward<Args>(args)...);
5461 template<
typenameRange,
typenameRE,
typenameModifier> constexpr
auto operator|(Range && range, regular_expression<RE, range_method, Modifier> re) noexcept {
5462 returnre.exec(std::forward<Range>(range));
5465 template<
typenameRange,
typenameRE,
typenameModifier> constexpr
auto operator|(Range && range, regular_expression<RE, tokenize_method, Modifier> re) noexcept {
5466 returnre.exec(std::forward<Range>(range));
5469 template<
typenameRange,
typenameRE,
typenameModifier> constexpr
auto operator|(Range && range, regular_expression<RE, split_method, Modifier> re) noexcept {
5470 returnre.exec(std::forward<Range>(range));
5473 template<
typenameRange,
typenameRE,
typenameModifier> constexpr
auto operator|(Range && range, regular_expression<RE, iterator_method, Modifier> re) noexcept =
delete;
5475 template<
typenameRange,
typenameRE,
typenameMethod,
typenameModifier> constexpr
auto operator|(Range && range, regular_expression<RE, Method, Modifier> re) noexcept {
5476 returnre.multi_exec(std::forward<Range>(range));
5480 template<
size_t>
structproblem_at_position;
5482 template<>
structproblem_at_position<~static_cast<size_t>(0)> {
5483constexpr
operator bool()
constnoexcept {
5488 #if CTRE_CNTTP_COMPILER_CHECK 5489 #define CTRE_REGEX_INPUT_TYPE ctll::fixed_string 5490 #define CTRE_REGEX_TEMPLATE_COPY_TYPE auto 5492 #define CTRE_REGEX_INPUT_TYPE const auto & 5493 #define CTRE_REGEX_TEMPLATE_COPY_TYPE const auto & 5496 template<CTRE_REGEX_TEMPLATE_COPY_TYPE input>
structregex_builder {
5497 staticconstexpr
auto_input = input;
5500 staticconstexpr
auto n= result::is_correct ? ~static_cast<size_t>(0) : result::position;
5502static_assert(result::is_correct && problem_at_position<n>{},
"Regular Expression contains syntax error.");
5523 staticconstexpr
inline autosentinel = regex_end_iterator();
5541 staticconstexpr
inline automultiline_sentinel = regex_end_iterator();
5554 #if !CTRE_CNTTP_COMPILER_CHECK 5555 template<
typenameCharT, CharT... input>
static inlineconstexpr
auto_fixed_string_reference =
ctll::fixed_string<
sizeof...(input)>({input...});
5558 namespaceliterals {
5563 #pragma clang diagnostic push 5564 #pragma clang diagnostic ignored "-Wgnu-string-literal-operator-template" 5565 #define CTRE_ENABLE_LITERALS 5570 #if _MSVC_LANG >= 202002L 5571 #define CTRE_ENABLE_LITERALS 5574 #define CTRE_ENABLE_LITERALS 5578 #ifdef __INTEL_COMPILER 5580 #elif defined __GNUC__ 5582 #define CTRE_ENABLE_LITERALS 5583 #elif __GNUC__ >= 10 5584 #if !CTRE_CNTTP_COMPILER_CHECK 5587 #define CTRE_ENABLE_LITERALS 5592 #ifdef CTRE_ENABLE_LITERALS 5597 #if !CTRE_CNTTP_COMPILER_CHECK 5598 template<
typenameCharT, CharT... charpack> CTRE_FLATTEN constexpr CTRE_FORCE_INLINE
auto operator""_ctre() noexcept {
5599constexpr
auto& _input = _fixed_string_reference<CharT, charpack...>;
5601 template<ctll::fixed_
stringinput> CTRE_FLATTEN constexpr CTRE_FORCE_INLINE
auto operator""_ctre() noexcept {
5602constexpr
auto_input = input;
5605static_assert(
tmp(),
"Regular Expression contains syntax error.");
5606 ifconstexpr (
tmp()) {
5607 usingre = decltype(
front(
typenametmp::output_type::stack_type()));
5608 returnctre::regular_expression(re());
5610 returnctre::regular_expression(reject());
5615 #if !CTRE_CNTTP_COMPILER_CHECK 5616 template<
typenameCharT, CharT... charpack> CTRE_FLATTEN constexpr CTRE_FORCE_INLINE
auto operator""_ctre_id() noexcept {
5617 return id<charpack...>();
5625 namespacetest_literals {
5627 #ifdef CTRE_ENABLE_LITERALS 5629 #if !CTRE_CNTTP_COMPILER_CHECK 5630 template<
typenameCharT, CharT... charpack> CTRE_FLATTEN constexpr
inline auto operator""_ctre_test() noexcept {
5631constexpr
auto& _input = _fixed_string_reference<CharT, charpack...>;
5633 template<ctll::fixed_
stringinput> CTRE_FLATTEN constexpr
inline auto operator""_ctre_test() noexcept {
5634constexpr
auto_input = input;
5639 #if !CTRE_CNTTP_COMPILER_CHECK 5640 template<
typenameCharT, CharT... charpack> CTRE_FLATTEN constexpr
inline auto operator""_ctre_gen() noexcept {
5641constexpr
auto& _input = _fixed_string_reference<CharT, charpack...>;
5643 template<ctll::fixed_
stringinput> CTRE_FLATTEN constexpr
inline auto operator""_ctre_gen() noexcept {
5644constexpr
auto_input = input;
5647static_assert(
tmp(),
"Regular Expression contains syntax error.");
5648 return typenametmp::output_type::stack_type();
5651 #if !CTRE_CNTTP_COMPILER_CHECK 5652 template<
typenameCharT, CharT... charpack> CTRE_FLATTEN constexpr CTRE_FORCE_INLINE
auto operator""_ctre_syntax() noexcept {
5653constexpr
auto& _input = _fixed_string_reference<CharT, charpack...>;
5655 template<ctll::fixed_
stringinput> CTRE_FLATTEN constexpr CTRE_FORCE_INLINE
auto operator""_ctre_syntax() noexcept {
5656constexpr
auto_input = input;
5664 #pragma clang diagnostic pop 5675 #ifndef CTRE_V2__CTRE__FUNCTIONS__HPP 5676 #define CTRE_V2__CTRE__FUNCTIONS__HPP 5680 #if !CTRE_CNTTP_COMPILER_CHECK 5685constexpr pattern(
constCharT (&input)[
N]) noexcept: parent(input) { }
5688 template<
typenameCharT,
size_tN> pattern(
constCharT (&)[
N]) -> pattern<CharT, N>;
5694constexpr
fixed_string(
constCharT (&input)[
N]) noexcept: parent(input) { }
5697 template<
typenameCharT,
size_tN>
fixed_string(
constCharT (&)[
N]) -> fixed_string<CharT, N>;
5700 #if CTRE_CNTTP_COMPILER_CHECK 5701 template<ctll::fixed_
stringinput,
typenameModifier =
void> CTRE_FLATTEN constexpr CTRE_FORCE_INLINE
autore() noexcept {
5702constexpr
auto_input = input;
5704 template<auto & input,
typenameModifier =
void> CTRE_FLATTEN constexpr CTRE_FORCE_INLINE
autore() noexcept {
5705constexpr
auto& _input = input;
5709static_assert(
tmp(),
"Regular Expression contains syntax error.");
5710 usingregex = decltype(
front(
typenametmp::output_type::stack_type()));
5711 returnctre::regular_expression<regex, Modifier, singleline>();
5718 #ifndef CTRE_V2__CTRE__OPERATORS__HPP 5719 #define CTRE_V2__CTRE__OPERATORS__HPP 5721 template<
typenameA,
typenameB> constexpr
auto operator|(ctre::regular_expression<A>, ctre::regular_expression<B>) -> ctre::regular_expression<ctre::select<A,B>> {
5725 template<
typenameA,
typenameB> constexpr
auto operator>>(ctre::regular_expression<A>, ctre::regular_expression<B>) -> ctre::regular_expression<ctre::sequence<A,B>> {
5733 #ifndef CTRE_V2__UNICODE_CODE_DB__HPP 5734 #define CTRE_V2__UNICODE_CODE_DB__HPP 5736 #define CTRE_UNICODE_SYNOPSYS_WAS_INCLUDED 5738 #include <string_view> 5740 #ifndef CTRE_UNICODE_SYNOPSYS_WAS_INCLUDED 5742 enum classcategory;
5743 enum classproperty;
5744 enum class version: unsigned char;
5748struct script_extensions_view {
5749constexpr script_extensions_view(char32_t);
5754constexpr iterator(char32_t c);
5757constexpr iterator& operator++(
int);
5759constexpr iterator operator++();
5770constexpr iterator begin()
const;
5771constexpr sentinel end()
const;
5777 structnumeric_value {
5779constexpr
double value()
const;
5780constexpr
long longnumerator()
const;
5781constexpr
intdenominator()
const;
5785constexpr numeric_value() =
default;
5786constexpr numeric_value(
long long n,
int16_td);
5790 friendconstexpr numeric_value cp_numeric_value(char32_t cp);
5793constexpr category cp_category(char32_t cp);
5794constexpr script cp_script(char32_t cp);
5795constexpr script_extensions_view cp_script_extensions(char32_t cp);
5796constexpr
versioncp_age(char32_t cp);
5797constexpr block cp_block(char32_t cp);
5798constexpr
boolcp_is_valid(char32_t cp);
5799constexpr
boolcp_is_assigned(char32_t cp);
5800constexpr
boolcp_is_ascii(char32_t cp);
5801constexpr numeric_value cp_numeric_value(char32_t cp);
5804constexpr
boolcp_script_is(char32_t);
5806constexpr
boolcp_property_is(char32_t);
5808constexpr
boolcp_category_is(char32_t);
5811 enum classbinary_prop;
5812constexpr
intpropnamecomp(std::string_view sa, std::string_view sb);
5813constexpr binary_prop binary_prop_from_string(std::string_view s);
5815 template<binary_prop p>
5816constexpr
boolget_binary_prop(char32_t) =
delete;
5818constexpr script script_from_string(std::string_view s);
5819constexpr block block_from_string(std::string_view s);
5820constexpr
versionage_from_string(std::string_view
a);
5821constexpr category category_from_string(std::string_view
a);
5823constexpr
boolis_unassigned(category cat);
5824constexpr
boolis_unknown(script s);
5825constexpr
boolis_unknown(block
b);
5826constexpr
boolis_unassigned(
versionv);
5827constexpr
boolis_unknown(binary_prop s);
5833 #include <algorithm> 5834 #include <string_view> 5836 namespaceuni::detail {
5838 template<
classForwardIt,
classT,
classCompare>
5840ForwardIt it =
first;
5841 typenamestd::iterator_traits<ForwardIt>::difference_type
count= std::distance(
first,
last);
5842 typenamestd::iterator_traits<ForwardIt>::difference_type step =
count/ 2;
5844 while(
count> 0) {
5847std::advance(it, step);
5848 if(!comp(
value, *it)) {
5857 template<
classForwardIt,
classT,
classCompare>
5859ForwardIt it =
first;
5860 typenamestd::iterator_traits<ForwardIt>::difference_type
count= std::distance(
first,
last);
5861 typenamestd::iterator_traits<ForwardIt>::difference_type step =
count/ 2;
5863 while(
count> 0) {
5866std::advance(it, step);
5867 if(comp(*it,
value)) {
5876 template<
classForwardIt,
classT>
5877constexpr ForwardIt lower_bound(ForwardIt
first, ForwardIt
last,
const T&
value) {
5878ForwardIt it =
first;
5879 typenamestd::iterator_traits<ForwardIt>::difference_type
count= std::distance(
first,
last);
5880 typenamestd::iterator_traits<ForwardIt>::difference_type step =
count/ 2;
5882 while(
count> 0) {
5885std::advance(it, step);
5895 template<
classForwardIt,
classT>
5896constexpr
boolbinary_search(ForwardIt
first, ForwardIt
last,
const T&
value) {
5900 template<
typenameT, auto N>
5901 structcompact_range {
5903constexpr
T value(char32_t cp,
Tdefault_value)
const{
5904 const autoend = std::end(_data);
5906detail::upper_bound(std::begin(_data), end, cp, [](char32_t local_cp,
uint32_tv) {
5907char32_t c = (v >> 8);
5908 returnlocal_cp < c;
5911 returndefault_value;
5916 template<
class T,
class...
U>
5917compact_range(
T,
U...) -> compact_range<
T,
sizeof...(U) + 1>;
5919 template<
typenameT, auto N>
5920 structcompact_list {
5922constexpr
T value(char32_t cp,
Tdefault_value)
const{
5923 const autoend = std::end(_data);
5925detail::lower_bound(std::begin(_data), end, cp, [](
uint32_tv, char32_t local_cp) {
5926char32_t c = (v >> 8);
5927 returnc < local_cp;
5929 if(it == end || ((*it) >> 8) != cp)
5930 returndefault_value;
5934 template<
class T,
class...
U>
5935compact_list(
T,
U...) -> compact_list<
T,
sizeof...(U) + 1>;
5937 template<
typenameT, std::
size_tN>
5942 template<
typenameT>
5947 template<
typenameT, std::
size_tN>
5950 template<std::size_t r1_s, std::size_t r2_s,
int16_tr2_t_f,
int16_tr2_t_b, std::size_t r3_s,
5952 int16_tr5_t_b, std::size_t r6_s>
5961array_t<std::uint64_t, r3_s>
r3;
5964array_t<std::uint8_t, r4_s>
r4;
5965array_t<std::uint8_t, r5_s>
r5;
5966array_t<std::uint64_t, r6_s>
r6;
5968constexpr
bool lookup(char32_t u)
const{
5971 ifconstexpr(r1_s == 0) {
5974 returntrie_range_leaf(c,
r1[std::size_t(c >> 6)]);
5976}
else if(c < 0x10000) {
5977 ifconstexpr(r3_s == 0) {
5980std::size_t
i= (std::size_t(c >> 6) - 0x20);
5982 if(
i>= r2_t_f &&
i< r2_t_f + r2_s)
5983child =
r2[
i- r2_t_f];
5984 returntrie_range_leaf(c,
r3[child]);
5987 ifconstexpr(r6_s == 0)
5989std::size_t i4 = (c >> 12) - 0x10;
5991 ifconstexpr(r4_s > 0) {
5992 if(i4 >= r4_t_f && i4 < r4_t_f + r4_s)
5993child =
r4[i4 - r4_t_f];
5996std::size_t i5 =
static_cast<std::size_t
>(std::size_t(child << 6) +
5997(std::size_t(c >> 6) & std::size_t(0x3f)));
5999 ifconstexpr(r5_s != 0) {
6000 if(i5 >= std::size_t(r5_t_f) && i5 < std::size_t(r5_t_f) + r5_s)
6001 leaf=
r5[i5 - std::size_t(r5_t_f)];
6003 returntrie_range_leaf(c,
r6[
leaf]);
6008 return(chunk >> (c & 0b111111)) & 0b1;
6012 template<std::
size_tsize>
6015constexpr
bool lookup(char32_t u)
const{
6016 ifconstexpr(
size< 20) {
6017 for(
autoit = std::begin(
data); it != std::end(
data); ++it) {
6020 if(it == std::end(
data))
6025 returndetail::binary_search(std::begin(
data), std::end(
data), u);
6031 structrange_array {
6033constexpr
bool lookup(char32_t cp)
const{
6034 const autoend = std::end(_data);
6036detail::upper_bound(std::begin(_data), end, cp, [](char32_t local_cp,
uint32_tv) {
6037char32_t c = (v >> 8);
6038 returnlocal_cp < c;
6043 return(*it) & 0xFF;
6047 template<
class...
U>
6048range_array(
U...) -> range_array<
sizeof...(U)>;
6050constexpr
charpropcharnorm(
char a) {
6051 if(
a>=
'A'&&
a<=
'Z')
6052 return static_cast<char>(
a+ char(32));
6053 if(
a==
' '||
a==
'-')
6058constexpr
intpropcharcomp(
char a,
char b) {
6059 a= propcharnorm(
a);
6060 b= propcharnorm(
b);
6068constexpr
intpropnamecomp(std::string_view sa, std::string_view sb) {
6070 const char*
a= sa.data();
6071 const char*
b= sb.data();
6073 const char* ae = sa.data() + sa.size();
6074 const char* be = sb.data() + sb.size();
6076 for(;
a!= ae &&
b!= be;
a++,
b++) {
6077 autores = propcharcomp(*
a, *
b);
6081 if(sa.size() < sb.size())
6083 else if(sb.size() < sa.size())
6088 template<
typenameA,
typenameB>
6094 template<
typenameA,
typenameB>
6095pair(
A,
B) -> pair<A, B>;
6097 structstring_with_idx {
6107 return static_cast<double>(numerator()) /
static_cast<double>(_d);
6110constexpr
long longnumeric_value::numerator()
const{
6114constexpr
intnumeric_value::denominator()
const{
6122constexpr numeric_value::numeric_value(
long long n,
int16_td) : _n(
n), _d(d) {}
6153latest_version = v14_0
6155 enum classcategory {
6173lowercase_letter = ll,
6175modifier_letter = lm,
6179titlecase_letter =
lt,
6181uppercase_letter = lu,
6187enclosing_mark = me,
6189nonspacing_mark = mn,
6193decimal_number = nd,
6201connector_punctuation = pc,
6203dash_punctuation = pd,
6205close_punctuation = pe,
6207final_punctuation = pf,
6209initial_punctuation =
pi,
6211other_punctuation = po,
6213open_punctuation = ps,
6217currency_symbol = sc,
6219modifier_symbol = sk,
6227line_separator = zl,
6229paragraph_separator = zp,
6231space_separator = zs,
6238ascii = basic_latin,
6240latin_1_sup = latin_1_supplement,
6242latin_ext_a = latin_extended_a,
6244latin_ext_b = latin_extended_b,
6246ipa_ext = ipa_extensions,
6247spacing_modifier_letters,
6248modifier_letters = spacing_modifier_letters,
6249combining_diacritical_marks,
6250diacriticals = combining_diacritical_marks,
6252greek = greek_and_coptic,
6254cyrillic_supplement,
6255cyrillic_sup = cyrillic_supplement,
6261arabic_sup = arabic_supplement,
6267syriac_sup = syriac_supplement,
6269arabic_ext_b = arabic_extended_b,
6271arabic_ext_a = arabic_extended_a,
6290ethiopic_supplement,
6291ethiopic_sup = ethiopic_supplement,
6293unified_canadian_aboriginal_syllabics,
6294ucas = unified_canadian_aboriginal_syllabics,
6303unified_canadian_aboriginal_syllabics_extended,
6304ucas_ext = unified_canadian_aboriginal_syllabics_extended,
6311combining_diacritical_marks_extended,
6312diacriticals_ext = combining_diacritical_marks_extended,
6318cyrillic_extended_c,
6319cyrillic_ext_c = cyrillic_extended_c,
6321georgian_ext = georgian_extended,
6322sundanese_supplement,
6323sundanese_sup = sundanese_supplement,
6325vedic_ext = vedic_extensions,
6326phonetic_extensions,
6327phonetic_ext = phonetic_extensions,
6328phonetic_extensions_supplement,
6329phonetic_ext_sup = phonetic_extensions_supplement,
6330combining_diacritical_marks_supplement,
6331diacriticals_sup = combining_diacritical_marks_supplement,
6332latin_extended_additional,
6333latin_ext_additional = latin_extended_additional,
6335greek_ext = greek_extended,
6336general_punctuation,
6337punctuation = general_punctuation,
6338superscripts_and_subscripts,
6339super_and_sub = superscripts_and_subscripts,
6341combining_diacritical_marks_for_symbols,
6342diacriticals_for_symbols = combining_diacritical_marks_for_symbols,
6346mathematical_operators,
6347math_operators = mathematical_operators,
6348miscellaneous_technical,
6349misc_technical = miscellaneous_technical,
6351optical_character_recognition,
6352ocr = optical_character_recognition,
6353enclosed_alphanumerics,
6354enclosed_alphanum = enclosed_alphanumerics,
6358miscellaneous_symbols,
6359misc_symbols = miscellaneous_symbols,
6361miscellaneous_mathematical_symbols_a,
6362misc_math_symbols_a = miscellaneous_mathematical_symbols_a,
6363supplemental_arrows_a,
6364sup_arrows_a = supplemental_arrows_a,
6366braille = braille_patterns,
6367supplemental_arrows_b,
6368sup_arrows_b = supplemental_arrows_b,
6369miscellaneous_mathematical_symbols_b,
6370misc_math_symbols_b = miscellaneous_mathematical_symbols_b,
6371supplemental_mathematical_operators,
6372sup_math_operators = supplemental_mathematical_operators,
6373miscellaneous_symbols_and_arrows,
6374misc_arrows = miscellaneous_symbols_and_arrows,
6377latin_ext_c = latin_extended_c,
6379georgian_supplement,
6380georgian_sup = georgian_supplement,
6383ethiopic_ext = ethiopic_extended,
6384cyrillic_extended_a,
6385cyrillic_ext_a = cyrillic_extended_a,
6386supplemental_punctuation,
6387sup_punctuation = supplemental_punctuation,
6388cjk_radicals_supplement,
6389cjk_radicals_sup = cjk_radicals_supplement,
6391kangxi = kangxi_radicals,
6392ideographic_description_characters,
6393idc = ideographic_description_characters,
6394cjk_symbols_and_punctuation,
6395cjk_symbols = cjk_symbols_and_punctuation,
6399hangul_compatibility_jamo,
6400compat_jamo = hangul_compatibility_jamo,
6403bopomofo_ext = bopomofo_extended,
6405katakana_phonetic_extensions,
6406katakana_ext = katakana_phonetic_extensions,
6407enclosed_cjk_letters_and_months,
6408enclosed_cjk = enclosed_cjk_letters_and_months,
6410cjk_compat = cjk_compatibility,
6411cjk_unified_ideographs_extension_a,
6412cjk_ext_a = cjk_unified_ideographs_extension_a,
6413yijing_hexagram_symbols,
6414yijing = yijing_hexagram_symbols,
6415cjk_unified_ideographs,
6416cjk = cjk_unified_ideographs,
6421cyrillic_extended_b,
6422cyrillic_ext_b = cyrillic_extended_b,
6424modifier_tone_letters,
6426latin_ext_d = latin_extended_d,
6428common_indic_number_forms,
6429indic_number_forms = common_indic_number_forms,
6432devanagari_extended,
6433devanagari_ext = devanagari_extended,
6436hangul_jamo_extended_a,
6437jamo_ext_a = hangul_jamo_extended_a,
6440myanmar_ext_b = myanmar_extended_b,
6443myanmar_ext_a = myanmar_extended_a,
6445meetei_mayek_extensions,
6446meetei_mayek_ext = meetei_mayek_extensions,
6447ethiopic_extended_a,
6448ethiopic_ext_a = ethiopic_extended_a,
6450latin_ext_e = latin_extended_e,
6451cherokee_supplement,
6452cherokee_sup = cherokee_supplement,
6455hangul = hangul_syllables,
6456hangul_jamo_extended_b,
6457jamo_ext_b = hangul_jamo_extended_b,
6459high_private_use_surrogates,
6460high_pu_surrogates = high_private_use_surrogates,
6463pua = private_use_area,
6464cjk_compatibility_ideographs,
6465cjk_compat_ideographs = cjk_compatibility_ideographs,
6466alphabetic_presentation_forms,
6467alphabetic_pf = alphabetic_presentation_forms,
6468arabic_presentation_forms_a,
6469arabic_pf_a = arabic_presentation_forms_a,
6470variation_selectors,
6471vs = variation_selectors,
6473combining_half_marks,
6474half_marks = combining_half_marks,
6475cjk_compatibility_forms,
6476cjk_compat_forms = cjk_compatibility_forms,
6477small_form_variants,
6478small_forms = small_form_variants,
6479arabic_presentation_forms_b,
6480arabic_pf_b = arabic_presentation_forms_b,
6481halfwidth_and_fullwidth_forms,
6482half_and_full_forms = halfwidth_and_fullwidth_forms,
6487ancient_greek_numbers,
6490phaistos = phaistos_disc,
6493coptic_epact_numbers,
6508latin_ext_f = latin_extended_f,
6516meroitic_hieroglyphs,
6523inscriptional_parthian,
6524inscriptional_pahlavi,
6529rumi_numeral_symbols,
6530rumi = rumi_numeral_symbols,
6543sinhala_archaic_numbers,
6552mongolian_supplement,
6553mongolian_sup = mongolian_supplement,
6562unified_canadian_aboriginal_syllabics_extended_a,
6563ucas_ext_a = unified_canadian_aboriginal_syllabics_extended_a,
6571lisu_sup = lisu_supplement,
6573tamil_sup = tamil_supplement,
6575cuneiform_numbers_and_punctuation,
6576cuneiform_numbers = cuneiform_numbers_and_punctuation,
6577early_dynastic_cuneiform,
6579egyptian_hieroglyphs,
6580egyptian_hieroglyph_format_controls,
6581anatolian_hieroglyphs,
6583bamum_sup = bamum_supplement,
6590ideographic_symbols_and_punctuation,
6591ideographic_symbols = ideographic_symbols_and_punctuation,
6594khitan_small_script,
6596tangut_sup = tangut_supplement,
6598kana_ext_b = kana_extended_b,
6600kana_sup = kana_supplement,
6602kana_ext_a = kana_extended_a,
6603small_kana_extension,
6604small_kana_ext = small_kana_extension,
6607shorthand_format_controls,
6608znamenny_musical_notation,
6609znamenny_music = znamenny_musical_notation,
6610byzantine_musical_symbols,
6611byzantine_music = byzantine_musical_symbols,
6613music = musical_symbols,
6614ancient_greek_musical_notation,
6615ancient_greek_music = ancient_greek_musical_notation,
6617tai_xuan_jing_symbols,
6618tai_xuan_jing = tai_xuan_jing_symbols,
6619counting_rod_numerals,
6620counting_rod = counting_rod_numerals,
6621mathematical_alphanumeric_symbols,
6622math_alphanum = mathematical_alphanumeric_symbols,
6625latin_ext_g = latin_extended_g,
6626glagolitic_supplement,
6627glagolitic_sup = glagolitic_supplement,
6628nyiakeng_puachue_hmong,
6631ethiopic_extended_b,
6632ethiopic_ext_b = ethiopic_extended_b,
6635indic_siyaq_numbers,
6636ottoman_siyaq_numbers,
6637arabic_mathematical_alphabetic_symbols,
6638arabic_math = arabic_mathematical_alphabetic_symbols,
6640mahjong = mahjong_tiles,
6642domino = domino_tiles,
6644enclosed_alphanumeric_supplement,
6645enclosed_alphanum_sup = enclosed_alphanumeric_supplement,
6646enclosed_ideographic_supplement,
6647enclosed_ideographic_sup = enclosed_ideographic_supplement,
6648miscellaneous_symbols_and_pictographs,
6649misc_pictographs = miscellaneous_symbols_and_pictographs,
6651ornamental_dingbats,
6652transport_and_map_symbols,
6653transport_and_map = transport_and_map_symbols,
6655alchemical = alchemical_symbols,
6656geometric_shapes_extended,
6657geometric_shapes_ext = geometric_shapes_extended,
6658supplemental_arrows_c,
6659sup_arrows_c = supplemental_arrows_c,
6660supplemental_symbols_and_pictographs,
6661sup_symbols_and_pictographs = supplemental_symbols_and_pictographs,
6663symbols_and_pictographs_extended_a,
6664symbols_and_pictographs_ext_a = symbols_and_pictographs_extended_a,
6665symbols_for_legacy_computing,
6666cjk_unified_ideographs_extension_b,
6667cjk_ext_b = cjk_unified_ideographs_extension_b,
6668cjk_unified_ideographs_extension_c,
6669cjk_ext_c = cjk_unified_ideographs_extension_c,
6670cjk_unified_ideographs_extension_d,
6671cjk_ext_d = cjk_unified_ideographs_extension_d,
6672cjk_unified_ideographs_extension_e,
6673cjk_ext_e = cjk_unified_ideographs_extension_e,
6674cjk_unified_ideographs_extension_f,
6675cjk_ext_f = cjk_unified_ideographs_extension_f,
6676cjk_compatibility_ideographs_supplement,
6677cjk_compat_ideographs_sup = cjk_compatibility_ideographs_supplement,
6678cjk_unified_ideographs_extension_g,
6679cjk_ext_g = cjk_unified_ideographs_extension_g,
6681variation_selectors_supplement,
6682vs_sup = variation_selectors_supplement,
6683supplementary_private_use_area_a,
6684sup_pua_a = supplementary_private_use_area_a,
6685supplementary_private_use_area_b,
6686sup_pua_b = supplementary_private_use_area_b,
6693caucasian_albanian = aghb,
6698imperial_aramaic = armi,
6728canadian_aboriginal = cans,
6739cypro_minoan = cpmn,
6755egyptian_hieroglyphs = egyp,
6767gunjala_gondi = gong,
6769masaram_gondi = gonm,
6793anatolian_hieroglyphs = hluw,
6795pahawh_hmong = hmng,
6797nyiakeng_puachue_hmong = hmnp,
6799katakana_or_hiragana = hrkt,
6801old_hungarian = hung,
6817khitan_small_script = kits,
6854mende_kikakui = mend,
6856meroitic_cursive = merc,
6858meroitic_hieroglyphs = mero,
6867meetei_mayek = mtei,
6875old_north_arabian = narb,
6906inscriptional_pahlavi = phli,
6908psalter_pahlavi = phlp,
6914inscriptional_parthian = prti,
6918hanifi_rohingya = rohg,
6924old_south_arabian = sarb,
6944sora_sompeng = sora,
6950syloti_nagri = sylo,
7002zanabazar_square = zanb,
7011 namespacedetail::tables {
7012 staticconstexpr
const char* age_strings[] = {
7013 "unassigned",
"1.1",
"2.0",
"2.1",
"3.0",
"3.1",
"3.2",
"4.0",
"4.1",
7014 "5.0",
"5.1",
"5.2",
"6.0",
"6.1",
"6.2",
"6.3",
"7.0",
"8.0",
7015 "9.0",
"10.0",
"11.0",
"12.0",
"12.1",
"13.0",
"14.0"};
7016 staticconstexpr compact_range age_data = {
70170x00000001, 0x0001F604, 0x0001FA01, 0x00021804, 0x00022006, 0x00022107, 0x00022204,
70180x00023407, 0x00023708, 0x00024209, 0x00025001, 0x0002A904, 0x0002AE07, 0x0002B001,
70190x0002DF04, 0x0002E001, 0x0002EA04, 0x0002EF07, 0x00030001, 0x00034604, 0x00034F06,
70200x00035007, 0x00035808, 0x00035D07, 0x00036001, 0x00036204, 0x00036306, 0x0003700A,
70210x00037401, 0x0003760A, 0x00037800, 0x00037A01, 0x00037B09, 0x00037E01, 0x00037F10,
70220x00038000, 0x00038401, 0x00038B00, 0x00038C01, 0x00038D00, 0x00038E01, 0x0003A200,
70230x0003A301, 0x0003CF0A, 0x0003D001, 0x0003D704, 0x0003D806, 0x0003DA01, 0x0003DB04,
70240x0003DC01, 0x0003DD04, 0x0003DE01, 0x0003DF04, 0x0003E001, 0x0003E104, 0x0003E201,
70250x0003F405, 0x0003F606, 0x0003F707, 0x0003FC08, 0x00040004, 0x00040101, 0x00040D04,
70260x00040E01, 0x00045004, 0x00045101, 0x00045D04, 0x00045E01, 0x0004870A, 0x00048804,
70270x00048A06, 0x00048C04, 0x00049001, 0x0004C506, 0x0004C701, 0x0004C906, 0x0004CB01,
70280x0004CD06, 0x0004CF09, 0x0004D001, 0x0004EC04, 0x0004EE01, 0x0004F608, 0x0004F801,
70290x0004FA09, 0x00050006, 0x00051009, 0x0005140A, 0x0005240B, 0x0005260C, 0x00052810,
70300x00053000, 0x00053101, 0x00055700, 0x00055901, 0x00056014, 0x00056101, 0x00058814,
70310x00058901, 0x00058A04, 0x00058B00, 0x00058D10, 0x00058F0D, 0x00059000, 0x00059102,
70320x0005A208, 0x0005A302, 0x0005B001, 0x0005BA09, 0x0005BB01, 0x0005C402, 0x0005C508,
70330x0005C800, 0x0005D001, 0x0005EB00, 0x0005EF14, 0x0005F001, 0x0005F500, 0x00060007,
70340x0006040D, 0x00060510, 0x0006060A, 0x00060B08, 0x00060C01, 0x00060D07, 0x0006160A,
70350x00061B01, 0x00061C0F, 0x00061D18, 0x00061E08, 0x00061F01, 0x0006200C, 0x00062101,
70360x00063B0A, 0x00064001, 0x00065304, 0x00065607, 0x00065908, 0x00065F0C, 0x00066001,
70370x00066E06, 0x00067001, 0x0006B804, 0x0006BA01, 0x0006BF04, 0x0006C001, 0x0006CF04,
70380x0006D001, 0x0006EE07, 0x0006F001, 0x0006FA04, 0x0006FF07, 0x00070004, 0x00070E00,
70390x00070F04, 0x00072D07, 0x00073004, 0x00074B00, 0x00074D07, 0x00075008, 0x00076E0A,
70400x00078004, 0x0007B106, 0x0007B200, 0x0007C009, 0x0007FB00, 0x0007FD14, 0x0008000B,
70410x00082E00, 0x0008300B, 0x00083F00, 0x0008400C, 0x00085C00, 0x00085E0C, 0x00085F00,
70420x00086013, 0x00086B00, 0x00087018, 0x00088F00, 0x00089018, 0x00089200, 0x00089818,
70430x0008A00D, 0x0008A110, 0x0008A20D, 0x0008AD10, 0x0008B311, 0x0008B518, 0x0008B612,
70440x0008BE17, 0x0008C818, 0x0008D314, 0x0008D412, 0x0008E311, 0x0008E40D, 0x0008FF10,
70450x0009000B, 0x00090101, 0x00090407, 0x00090501, 0x00093A0C, 0x00093C01, 0x00094E0B,
70460x00094F0C, 0x00095001, 0x0009550B, 0x0009560C, 0x00095801, 0x0009710A, 0x0009730C,
70470x00097810, 0x0009790B, 0x00097B09, 0x00097D08, 0x00097E09, 0x00098010, 0x00098101,
70480x00098400, 0x00098501, 0x00098D00, 0x00098F01, 0x00099100, 0x00099301, 0x0009A900,
70490x0009AA01, 0x0009B100, 0x0009B201, 0x0009B300, 0x0009B601, 0x0009BA00, 0x0009BC01,
70500x0009BD07, 0x0009BE01, 0x0009C500, 0x0009C701, 0x0009C900, 0x0009CB01, 0x0009CE08,
70510x0009CF00, 0x0009D701, 0x0009D800, 0x0009DC01, 0x0009DE00, 0x0009DF01, 0x0009E400,
70520x0009E601, 0x0009FB0B, 0x0009FC13, 0x0009FE14, 0x0009FF00, 0x000A0107, 0x000A0201,
70530x000A0307, 0x000A0400, 0x000A0501, 0x000A0B00, 0x000A0F01, 0x000A1100, 0x000A1301,
70540x000A2900, 0x000A2A01, 0x000A3100, 0x000A3201, 0x000A3400, 0x000A3501, 0x000A3700,
70550x000A3801, 0x000A3A00, 0x000A3C01, 0x000A3D00, 0x000A3E01, 0x000A4300, 0x000A4701,
70560x000A4900, 0x000A4B01, 0x000A4E00, 0x000A510A, 0x000A5200, 0x000A5901, 0x000A5D00,
70570x000A5E01, 0x000A5F00, 0x000A6601, 0x000A750A, 0x000A7614, 0x000A7700, 0x000A8101,
70580x000A8400, 0x000A8501, 0x000A8C07, 0x000A8D01, 0x000A8E00, 0x000A8F01, 0x000A9200,
70590x000A9301, 0x000AA900, 0x000AAA01, 0x000AB100, 0x000AB201, 0x000AB400, 0x000AB501,
70600x000ABA00, 0x000ABC01, 0x000AC600, 0x000AC701, 0x000ACA00, 0x000ACB01, 0x000ACE00,
70610x000AD001, 0x000AD100, 0x000AE001, 0x000AE107, 0x000AE400, 0x000AE601, 0x000AF00D,
70620x000AF107, 0x000AF200, 0x000AF911, 0x000AFA13, 0x000B0000, 0x000B0101, 0x000B0400,
70630x000B0501, 0x000B0D00, 0x000B0F01, 0x000B1100, 0x000B1301, 0x000B2900, 0x000B2A01,
70640x000B3100, 0x000B3201, 0x000B3400, 0x000B3507, 0x000B3601, 0x000B3A00, 0x000B3C01,
70650x000B440A, 0x000B4500, 0x000B4701, 0x000B4900, 0x000B4B01, 0x000B4E00, 0x000B5517,
70660x000B5601, 0x000B5800, 0x000B5C01, 0x000B5E00, 0x000B5F01, 0x000B620A, 0x000B6400,
70670x000B6601, 0x000B7107, 0x000B720C, 0x000B7800, 0x000B8201, 0x000B8400, 0x000B8501,
70680x000B8B00, 0x000B8E01, 0x000B9100, 0x000B9201, 0x000B9600, 0x000B9901, 0x000B9B00,
70690x000B9C01, 0x000B9D00, 0x000B9E01, 0x000BA000, 0x000BA301, 0x000BA500, 0x000BA801,
70700x000BAB00, 0x000BAE01, 0x000BB608, 0x000BB701, 0x000BBA00, 0x000BBE01, 0x000BC300,
70710x000BC601, 0x000BC900, 0x000BCA01, 0x000BCE00, 0x000BD00A, 0x000BD100, 0x000BD701,
70720x000BD800, 0x000BE608, 0x000BE701, 0x000BF307, 0x000BFB00, 0x000C0010, 0x000C0101,
70730x000C0414, 0x000C0501, 0x000C0D00, 0x000C0E01, 0x000C1100, 0x000C1201, 0x000C2900,
70740x000C2A01, 0x000C3410, 0x000C3501, 0x000C3A00, 0x000C3C18, 0x000C3D0A, 0x000C3E01,
70750x000C4500, 0x000C4601, 0x000C4900, 0x000C4A01, 0x000C4E00, 0x000C5501, 0x000C5700,
70760x000C580A, 0x000C5A11, 0x000C5B00, 0x000C5D18, 0x000C5E00, 0x000C6001, 0x000C620A,
70770x000C6400, 0x000C6601, 0x000C7000, 0x000C7715, 0x000C780A, 0x000C8012, 0x000C8110,
70780x000C8201, 0x000C8414, 0x000C8501, 0x000C8D00, 0x000C8E01, 0x000C9100, 0x000C9201,
70790x000CA900, 0x000CAA01, 0x000CB400, 0x000CB501, 0x000CBA00, 0x000CBC07, 0x000CBE01,
70800x000CC500, 0x000CC601, 0x000CC900, 0x000CCA01, 0x000CCE00, 0x000CD501, 0x000CD700,
70810x000CDD18, 0x000CDE01, 0x000CDF00, 0x000CE001, 0x000CE209, 0x000CE400, 0x000CE601,
70820x000CF000, 0x000CF109, 0x000CF300, 0x000D0013, 0x000D0110, 0x000D0201, 0x000D0417,
70830x000D0501, 0x000D0D00, 0x000D0E01, 0x000D1100, 0x000D1201, 0x000D290C, 0x000D2A01,
70840x000D3A0C, 0x000D3B13, 0x000D3D0A, 0x000D3E01, 0x000D440A, 0x000D4500, 0x000D4601,
70850x000D4900, 0x000D4A01, 0x000D4E0C, 0x000D4F12, 0x000D5000, 0x000D5412, 0x000D5701,
70860x000D5812, 0x000D5F11, 0x000D6001, 0x000D620A, 0x000D6400, 0x000D6601, 0x000D700A,
70870x000D7612, 0x000D790A, 0x000D8000, 0x000D8117, 0x000D8204, 0x000D8400, 0x000D8504,
70880x000D9700, 0x000D9A04, 0x000DB200, 0x000DB304, 0x000DBC00, 0x000DBD04, 0x000DBE00,
70890x000DC004, 0x000DC700, 0x000DCA04, 0x000DCB00, 0x000DCF04, 0x000DD500, 0x000DD604,
70900x000DD700, 0x000DD804, 0x000DE000, 0x000DE610, 0x000DF000, 0x000DF204, 0x000DF500,
70910x000E0101, 0x000E3B00, 0x000E3F01, 0x000E5C00, 0x000E8101, 0x000E8300, 0x000E8401,
70920x000E8500, 0x000E8615, 0x000E8701, 0x000E8915, 0x000E8A01, 0x000E8B00, 0x000E8C15,
70930x000E8D01, 0x000E8E15, 0x000E9401, 0x000E9815, 0x000E9901, 0x000EA015, 0x000EA101,
70940x000EA400, 0x000EA501, 0x000EA600, 0x000EA701, 0x000EA815, 0x000EAA01, 0x000EAC15,
70950x000EAD01, 0x000EBA15, 0x000EBB01, 0x000EBE00, 0x000EC001, 0x000EC500, 0x000EC601,
70960x000EC700, 0x000EC801, 0x000ECE00, 0x000ED001, 0x000EDA00, 0x000EDC01, 0x000EDE0D,
70970x000EE000, 0x000F0002, 0x000F4800, 0x000F4902, 0x000F6A04, 0x000F6B0A, 0x000F6D00,
70980x000F7102, 0x000F8C0C, 0x000F9002, 0x000F9604, 0x000F9702, 0x000F9800, 0x000F9902,
70990x000FAE04, 0x000FB102, 0x000FB804, 0x000FB902, 0x000FBA04, 0x000FBD00, 0x000FBE04,
71000x000FCD00, 0x000FCE0A, 0x000FCF04, 0x000FD008, 0x000FD20A, 0x000FD50B, 0x000FD90C,
71010x000FDB00, 0x00100004, 0x0010220A, 0x00102304, 0x0010280A, 0x00102904, 0x00102B0A,
71020x00102C04, 0x0010330A, 0x00103604, 0x00103A0A, 0x00104004, 0x00105A0A, 0x00109A0B,
71030x00109E0A, 0x0010A001, 0x0010C600, 0x0010C70D, 0x0010C800, 0x0010CD0D, 0x0010CE00,
71040x0010D001, 0x0010F706, 0x0010F908, 0x0010FB01, 0x0010FC08, 0x0010FD0D, 0x00110001,
71050x00115A0B, 0x00115F01, 0x0011A30B, 0x0011A801, 0x0011FA0B, 0x00120004, 0x00120708,
71060x00120804, 0x00124708, 0x00124804, 0x00124900, 0x00124A04, 0x00124E00, 0x00125004,
71070x00125700, 0x00125804, 0x00125900, 0x00125A04, 0x00125E00, 0x00126004, 0x00128708,
71080x00128804, 0x00128900, 0x00128A04, 0x00128E00, 0x00129004, 0x0012AF08, 0x0012B004,
71090x0012B100, 0x0012B204, 0x0012B600, 0x0012B804, 0x0012BF00, 0x0012C004, 0x0012C100,
71100x0012C204, 0x0012C600, 0x0012C804, 0x0012CF08, 0x0012D004, 0x0012D700, 0x0012D804,
71110x0012EF08, 0x0012F004, 0x00130F08, 0x00131004, 0x00131100, 0x00131204, 0x00131600,
71120x00131804, 0x00131F08, 0x00132004, 0x00134708, 0x00134804, 0x00135B00, 0x00135D0C,
71130x00135F08, 0x00136104, 0x00137D00, 0x00138008, 0x00139A00, 0x0013A004, 0x0013F511,
71140x0013F600, 0x0013F811, 0x0013FE00, 0x0014000B, 0x00140104, 0x0016770B, 0x00168004,
71150x00169D00, 0x0016A004, 0x0016F110, 0x0016F900, 0x00170006, 0x00170D18, 0x00170E06,
71160x00171518, 0x00171600, 0x00171F18, 0x00172006, 0x00173700, 0x00174006, 0x00175400,
71170x00176006, 0x00176D00, 0x00176E06, 0x00177100, 0x00177206, 0x00177400, 0x00178004,
71180x0017DD07, 0x0017DE00, 0x0017E004, 0x0017EA00, 0x0017F007, 0x0017FA00, 0x00180004,
71190x00180F18, 0x00181004, 0x00181A00, 0x00182004, 0x00187814, 0x00187900, 0x00188004,
71200x0018AA0A, 0x0018AB00, 0x0018B00B, 0x0018F600, 0x00190007, 0x00191D10, 0x00191F00,
71210x00192007, 0x00192C00, 0x00193007, 0x00193C00, 0x00194007, 0x00194100, 0x00194407,
71220x00196E00, 0x00197007, 0x00197500, 0x00198008, 0x0019AA0B, 0x0019AC00, 0x0019B008,
71230x0019CA00, 0x0019D008, 0x0019DA0B, 0x0019DB00, 0x0019DE08, 0x0019E007, 0x001A0008,
71240x001A1C00, 0x001A1E08, 0x001A200B, 0x001A5F00, 0x001A600B, 0x001A7D00, 0x001A7F0B,
71250x001A8A00, 0x001A900B, 0x001A9A00, 0x001AA00B, 0x001AAE00, 0x001AB010, 0x001ABF17,
71260x001AC118, 0x001ACF00, 0x001B0009, 0x001B4C18, 0x001B4D00, 0x001B5009, 0x001B7D18,
71270x001B7F00, 0x001B800A, 0x001BAB0D, 0x001BAE0A, 0x001BBA0D, 0x001BC00C, 0x001BF400,
71280x001BFC0C, 0x001C000A, 0x001C3800, 0x001C3B0A, 0x001C4A00, 0x001C4D0A, 0x001C8012,
71290x001C8900, 0x001C9014, 0x001CBB00, 0x001CBD14, 0x001CC00D, 0x001CC800, 0x001CD00B,
71300x001CF30D, 0x001CF713, 0x001CF810, 0x001CFA15, 0x001CFB00, 0x001D0007, 0x001D6C08,
71310x001DC409, 0x001DCB0A, 0x001DE710, 0x001DF613, 0x001DFA18, 0x001DFB12, 0x001DFC0C,
71320x001DFD0B, 0x001DFE09, 0x001E0001, 0x001E9B02, 0x001E9C0A, 0x001EA001, 0x001EFA0A,
71330x001F0001, 0x001F1600, 0x001F1801, 0x001F1E00, 0x001F2001, 0x001F4600, 0x001F4801,
71340x001F4E00, 0x001F5001, 0x001F5800, 0x001F5901, 0x001F5A00, 0x001F5B01, 0x001F5C00,
71350x001F5D01, 0x001F5E00, 0x001F5F01, 0x001F7E00, 0x001F8001, 0x001FB500, 0x001FB601,
71360x001FC500, 0x001FC601, 0x001FD400, 0x001FD601, 0x001FDC00, 0x001FDD01, 0x001FF000,
71370x001FF201, 0x001FF500, 0x001FF601, 0x001FFF00, 0x00200001, 0x00202F04, 0x00203001,
71380x00204706, 0x00204804, 0x00204E06, 0x00205307, 0x00205508, 0x00205706, 0x00205808,
71390x00205F06, 0x0020640A, 0x00206500, 0x0020660F, 0x00206A01, 0x00207106, 0x00207200,
71400x00207401, 0x00208F00, 0x00209008, 0x0020950C, 0x00209D00, 0x0020A001, 0x0020AB02,
71410x0020AC03, 0x0020AD04, 0x0020B006, 0x0020B208, 0x0020B60B, 0x0020B90C, 0x0020BA0E,
71420x0020BB10, 0x0020BE11, 0x0020BF13, 0x0020C018, 0x0020C100, 0x0020D001, 0x0020E204,
71430x0020E406, 0x0020EB08, 0x0020EC09, 0x0020F00A, 0x0020F100, 0x00210001, 0x00213904,
71440x00213B07, 0x00213C08, 0x00213D06, 0x00214C08, 0x00214D09, 0x00214F0A, 0x0021500B,
71450x00215301, 0x00218304, 0x00218409, 0x0021850A, 0x0021890B, 0x00218A11, 0x00218C00,
71460x00219001, 0x0021EB04, 0x0021F406, 0x00220001, 0x0022F206, 0x00230001, 0x00230104,
71470x00230201, 0x00237B04, 0x00237C06, 0x00237D04, 0x00239B06, 0x0023CF07, 0x0023D108,
71480x0023DC09, 0x0023E80B, 0x0023E90C, 0x0023F410, 0x0023FB12, 0x0023FF13, 0x00240001,
71490x00242504, 0x00242700, 0x00244001, 0x00244B00, 0x00246001, 0x0024EB06, 0x0024FF07,
71500x00250001, 0x00259606, 0x0025A001, 0x0025F004, 0x0025F806, 0x00260001, 0x00261407,
71510x00261606, 0x00261808, 0x00261904, 0x00261A01, 0x00267004, 0x00267206, 0x00267E08,
71520x00268006, 0x00268A07, 0x00269208, 0x00269D0A, 0x00269E0B, 0x0026A007, 0x0026A208,
71530x0026B209, 0x0026B30A, 0x0026BD0B, 0x0026C00A, 0x0026C40B, 0x0026CE0C, 0x0026CF0B,
71540x0026E20C, 0x0026E30B, 0x0026E40C, 0x0026E80B, 0x00270010, 0x00270101, 0x0027050C,
71550x00270601, 0x00270A0C, 0x00270C01, 0x0027280C, 0x00272901, 0x00274C0C, 0x00274D01,
71560x00274E0C, 0x00274F01, 0x0027530C, 0x00275601, 0x0027570B, 0x00275801, 0x00275F0C,
71570x00276101, 0x00276806, 0x00277601, 0x0027950C, 0x00279801, 0x0027B00C, 0x0027B101,
71580x0027BF0C, 0x0027C008, 0x0027C709, 0x0027CB0D, 0x0027CC0A, 0x0027CD0D, 0x0027CE0C,
71590x0027D006, 0x0027EC0A, 0x0027F006, 0x00280004, 0x00290006, 0x002B0007, 0x002B0E08,
71600x002B1409, 0x002B1B0A, 0x002B2009, 0x002B240A, 0x002B4D10, 0x002B500A, 0x002B550B,
71610x002B5A10, 0x002B7400, 0x002B7610, 0x002B9600, 0x002B9717, 0x002B9810, 0x002BBA14,
71620x002BBD10, 0x002BC915, 0x002BCA10, 0x002BD213, 0x002BD314, 0x002BEC11, 0x002BF014,
71630x002BFF15, 0x002C0008, 0x002C2F18, 0x002C3008, 0x002C5F18, 0x002C6009, 0x002C6D0A,
71640x002C700B, 0x002C710A, 0x002C7409, 0x002C780A, 0x002C7E0B, 0x002C8008, 0x002CEB0B,
71650x002CF20D, 0x002CF400, 0x002CF908, 0x002D2600, 0x002D270D, 0x002D2800, 0x002D2D0D,
71660x002D2E00, 0x002D3008, 0x002D660D, 0x002D6800, 0x002D6F08, 0x002D700C, 0x002D7100,
71670x002D7F0C, 0x002D8008, 0x002D9700, 0x002DA008, 0x002DA700, 0x002DA808, 0x002DAF00,
71680x002DB008, 0x002DB700, 0x002DB808, 0x002DBF00, 0x002DC008, 0x002DC700, 0x002DC808,
71690x002DCF00, 0x002DD008, 0x002DD700, 0x002DD808, 0x002DDF00, 0x002DE00A, 0x002E0008,
71700x002E180A, 0x002E1C08, 0x002E1E0A, 0x002E310B, 0x002E320D, 0x002E3C10, 0x002E4312,
71710x002E4513, 0x002E4A14, 0x002E4F15, 0x002E5017, 0x002E5318, 0x002E5E00, 0x002E8004,
71720x002E9A00, 0x002E9B04, 0x002EF400, 0x002F0004, 0x002FD600, 0x002FF004, 0x002FFC00,
71730x00300001, 0x00303804, 0x00303B06, 0x00303E04, 0x00303F01, 0x00304000, 0x00304101,
71740x00309506, 0x00309700, 0x00309901, 0x00309F06, 0x0030A101, 0x0030FF06, 0x00310000,
71750x00310501, 0x00312D0A, 0x00312E13, 0x00312F14, 0x00313000, 0x00313101, 0x00318F00,
71760x00319001, 0x0031A004, 0x0031B80C, 0x0031BB17, 0x0031C008, 0x0031D00A, 0x0031E400,
71770x0031F006, 0x00320001, 0x00321D07, 0x00321F00, 0x00322001, 0x0032440B, 0x00325007,
71780x00325106, 0x00326001, 0x00327C07, 0x00327E08, 0x00327F01, 0x0032B106, 0x0032C001,
71790x0032CC07, 0x0032D001, 0x0032FF16, 0x00330001, 0x00337707, 0x00337B01, 0x0033DE07,
71800x0033E001, 0x0033FF07, 0x00340004, 0x004DB617, 0x004DC007, 0x004E0001, 0x009FA608,
71810x009FBC0A, 0x009FC40B, 0x009FCC0D, 0x009FCD11, 0x009FD613, 0x009FEB14, 0x009FF017,
71820x009FFD18, 0x00A00004, 0x00A48D00, 0x00A49004, 0x00A4A206, 0x00A4A404, 0x00A4B406,
71830x00A4B504, 0x00A4C106, 0x00A4C204, 0x00A4C506, 0x00A4C604, 0x00A4C700, 0x00A4D00B,
71840x00A5000A, 0x00A62C00, 0x00A6400A, 0x00A6600C, 0x00A6620A, 0x00A6740D, 0x00A67C0A,
71850x00A69810, 0x00A69E11, 0x00A69F0D, 0x00A6A00B, 0x00A6F800, 0x00A70008, 0x00A71709,
71860x00A71B0A, 0x00A72009, 0x00A7220A, 0x00A78D0C, 0x00A78F11, 0x00A7900C, 0x00A7920D,
71870x00A79410, 0x00A7A00C, 0x00A7AA0D, 0x00A7AB10, 0x00A7AE12, 0x00A7AF14, 0x00A7B010,
71880x00A7B211, 0x00A7B814, 0x00A7BA15, 0x00A7C018, 0x00A7C215, 0x00A7C717, 0x00A7CB00,
71890x00A7D018, 0x00A7D200, 0x00A7D318, 0x00A7D400, 0x00A7D518, 0x00A7DA00, 0x00A7F218,
71900x00A7F517, 0x00A7F710, 0x00A7F80D, 0x00A7FA0C, 0x00A7FB0A, 0x00A80008, 0x00A82C17,
71910x00A82D00, 0x00A8300B, 0x00A83A00, 0x00A84009, 0x00A87800, 0x00A8800A, 0x00A8C512,
71920x00A8C600, 0x00A8CE0A, 0x00A8DA00, 0x00A8E00B, 0x00A8FC11, 0x00A8FE14, 0x00A9000A,
71930x00A95400, 0x00A95F0A, 0x00A9600B, 0x00A97D00, 0x00A9800B, 0x00A9CE00, 0x00A9CF0B,
71940x00A9DA00, 0x00A9DE0B, 0x00A9E010, 0x00A9FF00, 0x00AA000A, 0x00AA3700, 0x00AA400A,
71950x00AA4E00, 0x00AA500A, 0x00AA5A00, 0x00AA5C0A, 0x00AA600B, 0x00AA7C10, 0x00AA800B,
71960x00AAC300, 0x00AADB0B, 0x00AAE00D, 0x00AAF700, 0x00AB010C, 0x00AB0700, 0x00AB090C,
71970x00AB0F00, 0x00AB110C, 0x00AB1700, 0x00AB200C, 0x00AB2700, 0x00AB280C, 0x00AB2F00,
71980x00AB3010, 0x00AB6011, 0x00AB6410, 0x00AB6615, 0x00AB6817, 0x00AB6C00, 0x00AB7011,
71990x00ABC00B, 0x00ABEE00, 0x00ABF00B, 0x00ABFA00, 0x00AC0002, 0x00D7A400, 0x00D7B00B,
72000x00D7C700, 0x00D7CB0B, 0x00D7FC00, 0x00D80002, 0x00E00001, 0x00FA2E0D, 0x00FA3006,
72010x00FA6B0B, 0x00FA6E00, 0x00FA7008, 0x00FADA00, 0x00FB0001, 0x00FB0700, 0x00FB1301,
72020x00FB1800, 0x00FB1D04, 0x00FB1E01, 0x00FB3700, 0x00FB3801, 0x00FB3D00, 0x00FB3E01,
72030x00FB3F00, 0x00FB4001, 0x00FB4200, 0x00FB4301, 0x00FB4500, 0x00FB4601, 0x00FBB20C,
72040x00FBC218, 0x00FBC300, 0x00FBD301, 0x00FD4018, 0x00FD5001, 0x00FD9000, 0x00FD9201,
72050x00FDC800, 0x00FDCF18, 0x00FDD000, 0x00FDF001, 0x00FDFC06, 0x00FDFD07, 0x00FDFE18,
72060x00FE0006, 0x00FE1008, 0x00FE1A00, 0x00FE2001, 0x00FE240A, 0x00FE2710, 0x00FE2E11,
72070x00FE3001, 0x00FE4506, 0x00FE4707, 0x00FE4901, 0x00FE5300, 0x00FE5401, 0x00FE6700,
72080x00FE6801, 0x00FE6C00, 0x00FE7001, 0x00FE7306, 0x00FE7401, 0x00FE7500, 0x00FE7601,
72090x00FEFD00, 0x00FEFF01, 0x00FF0000, 0x00FF0101, 0x00FF5F06, 0x00FF6101, 0x00FFBF00,
72100x00FFC201, 0x00FFC800, 0x00FFCA01, 0x00FFD000, 0x00FFD201, 0x00FFD800, 0x00FFDA01,
72110x00FFDD00, 0x00FFE001, 0x00FFE700, 0x00FFE801, 0x00FFEF00, 0x00FFF904, 0x00FFFC03,
72120x00FFFD01, 0x00FFFE00, 0x01000007, 0x01000C00, 0x01000D07, 0x01002700, 0x01002807,
72130x01003B00, 0x01003C07, 0x01003E00, 0x01003F07, 0x01004E00, 0x01005007, 0x01005E00,
72140x01008007, 0x0100FB00, 0x01010007, 0x01010300, 0x01010707, 0x01013400, 0x01013707,
72150x01014008, 0x01018B10, 0x01018D12, 0x01018F00, 0x0101900A, 0x01019C17, 0x01019D00,
72160x0101A010, 0x0101A100, 0x0101D00A, 0x0101FE00, 0x0102800A, 0x01029D00, 0x0102A00A,
72170x0102D100, 0x0102E010, 0x0102FC00, 0x01030005, 0x01031F10, 0x01032005, 0x01032400,
72180x01032D13, 0x01033005, 0x01034B00, 0x01035010, 0x01037B00, 0x01038007, 0x01039E00,
72190x01039F07, 0x0103A008, 0x0103C400, 0x0103C808, 0x0103D600, 0x01040005, 0x01042607,
72200x01042805, 0x01044E07, 0x01049E00, 0x0104A007, 0x0104AA00, 0x0104B012, 0x0104D400,
72210x0104D812, 0x0104FC00, 0x01050010, 0x01052800, 0x01053010, 0x01056400, 0x01056F10,
72220x01057018, 0x01057B00, 0x01057C18, 0x01058B00, 0x01058C18, 0x01059300, 0x01059418,
72230x01059600, 0x01059718, 0x0105A200, 0x0105A318, 0x0105B200, 0x0105B318, 0x0105BA00,
72240x0105BB18, 0x0105BD00, 0x01060010, 0x01073700, 0x01074010, 0x01075600, 0x01076010,
72250x01076800, 0x01078018, 0x01078600, 0x01078718, 0x0107B100, 0x0107B218, 0x0107BB00,
72260x01080007, 0x01080600, 0x01080807, 0x01080900, 0x01080A07, 0x01083600, 0x01083707,
72270x01083900, 0x01083C07, 0x01083D00, 0x01083F07, 0x0108400B, 0x01085600, 0x0108570B,
72280x01086010, 0x01089F00, 0x0108A710, 0x0108B000, 0x0108E011, 0x0108F300, 0x0108F411,
72290x0108F600, 0x0108FB11, 0x01090009, 0x01091A0B, 0x01091C00, 0x01091F09, 0x0109200A,
72300x01093A00, 0x01093F0A, 0x01094000, 0x0109800D, 0x0109B800, 0x0109BC11, 0x0109BE0D,
72310x0109C011, 0x0109D000, 0x0109D211, 0x010A0008, 0x010A0400, 0x010A0508, 0x010A0700,
72320x010A0C08, 0x010A1400, 0x010A1508, 0x010A1800, 0x010A1908, 0x010A3414, 0x010A3600,
72330x010A3808, 0x010A3B00, 0x010A3F08, 0x010A4814, 0x010A4900, 0x010A5008, 0x010A5900,
72340x010A600B, 0x010A8010, 0x010AA000, 0x010AC010, 0x010AE700, 0x010AEB10, 0x010AF700,
72350x010B000B, 0x010B3600, 0x010B390B, 0x010B5600, 0x010B580B, 0x010B7300, 0x010B780B,
72360x010B8010, 0x010B9200, 0x010B9910, 0x010B9D00, 0x010BA910, 0x010BB000, 0x010C000B,
72370x010C4900, 0x010C8011, 0x010CB300, 0x010CC011, 0x010CF300, 0x010CFA11, 0x010D0014,
72380x010D2800, 0x010D3014, 0x010D3A00, 0x010E600B, 0x010E7F00, 0x010E8017, 0x010EAA00,
72390x010EAB17, 0x010EAE00, 0x010EB017, 0x010EB200, 0x010F0014, 0x010F2800, 0x010F3014,
72400x010F5A00, 0x010F7018, 0x010F8A00, 0x010FB017, 0x010FCC00, 0x010FE015, 0x010FF700,
72410x0110000C, 0x01104E00, 0x0110520C, 0x01107018, 0x01107600, 0x01107F10, 0x0110800B,
72420x0110C218, 0x0110C300, 0x0110CD14, 0x0110CE00, 0x0110D00D, 0x0110E900, 0x0110F00D,
72430x0110FA00, 0x0111000D, 0x01113500, 0x0111360D, 0x01114414, 0x01114717, 0x01114800,
72440x01115010, 0x01117700, 0x0111800D, 0x0111C911, 0x0111CD10, 0x0111CE17, 0x0111D00D,
72450x0111DA10, 0x0111DB11, 0x0111E000, 0x0111E110, 0x0111F500, 0x01120010, 0x01121200,
72460x01121310, 0x01123E12, 0x01123F00, 0x01128011, 0x01128700, 0x01128811, 0x01128900,
72470x01128A11, 0x01128E00, 0x01128F11, 0x01129E00, 0x01129F11, 0x0112AA00, 0x0112B010,
72480x0112EB00, 0x0112F010, 0x0112FA00, 0x01130011, 0x01130110, 0x01130400, 0x01130510,
72490x01130D00, 0x01130F10, 0x01131100, 0x01131310, 0x01132900, 0x01132A10, 0x01133100,
72500x01133210, 0x01133400, 0x01133510, 0x01133A00, 0x01133B14, 0x01133C10, 0x01134500,
72510x01134710, 0x01134900, 0x01134B10, 0x01134E00, 0x01135011, 0x01135100, 0x01135710,
72520x01135800, 0x01135D10, 0x01136400, 0x01136610, 0x01136D00, 0x01137010, 0x01137500,
72530x01140012, 0x01145A17, 0x01145B12, 0x01145C00, 0x01145D12, 0x01145E14, 0x01145F15,
72540x01146017, 0x01146200, 0x01148010, 0x0114C800, 0x0114D010, 0x0114DA00, 0x01158010,
72550x0115B600, 0x0115B810, 0x0115CA11, 0x0115DE00, 0x01160010, 0x01164500, 0x01165010,
72560x01165A00, 0x01166012, 0x01166D00, 0x0116800D, 0x0116B815, 0x0116B918, 0x0116BA00,
72570x0116C00D, 0x0116CA00, 0x01170011, 0x01171A14, 0x01171B00, 0x01171D11, 0x01172C00,
72580x01173011, 0x01174018, 0x01174700, 0x01180014, 0x01183C00, 0x0118A010, 0x0118F300,
72590x0118FF10, 0x01190017, 0x01190700, 0x01190917, 0x01190A00, 0x01190C17, 0x01191400,
72600x01191517, 0x01191700, 0x01191817, 0x01193600, 0x01193717, 0x01193900, 0x01193B17,
72610x01194700, 0x01195017, 0x01195A00, 0x0119A015, 0x0119A800, 0x0119AA15, 0x0119D800,
72620x0119DA15, 0x0119E500, 0x011A0013, 0x011A4800, 0x011A5013, 0x011A8415, 0x011A8613,
72630x011A9D14, 0x011A9E13, 0x011AA300, 0x011AB018, 0x011AC010, 0x011AF900, 0x011C0012,
72640x011C0900, 0x011C0A12, 0x011C3700, 0x011C3812, 0x011C4600, 0x011C5012, 0x011C6D00,
72650x011C7012, 0x011C9000, 0x011C9212, 0x011CA800, 0x011CA912, 0x011CB700, 0x011D0013,
72660x011D0700, 0x011D0813, 0x011D0A00, 0x011D0B13, 0x011D3700, 0x011D3A13, 0x011D3B00,
72670x011D3C13, 0x011D3E00, 0x011D3F13, 0x011D4800, 0x011D5013, 0x011D5A00, 0x011D6014,
72680x011D6600, 0x011D6714, 0x011D6900, 0x011D6A14, 0x011D8F00, 0x011D9014, 0x011D9200,
72690x011D9314, 0x011D9900, 0x011DA014, 0x011DAA00, 0x011EE014, 0x011EF900, 0x011FB017,
72700x011FB100, 0x011FC015, 0x011FF200, 0x011FFF15, 0x01200009, 0x01236F10, 0x01239911,
72710x01239A00, 0x01240009, 0x01246310, 0x01246F00, 0x01247009, 0x01247410, 0x01247500,
72720x01248011, 0x01254400, 0x012F9018, 0x012FF300, 0x0130000B, 0x01342F00, 0x01343015,
72730x01343900, 0x01440011, 0x01464700, 0x0168000C, 0x016A3900, 0x016A4010, 0x016A5F00,
72740x016A6010, 0x016A6A00, 0x016A6E10, 0x016A7018, 0x016ABF00, 0x016AC018, 0x016ACA00,
72750x016AD010, 0x016AEE00, 0x016AF010, 0x016AF600, 0x016B0010, 0x016B4600, 0x016B5010,
72760x016B5A00, 0x016B5B10, 0x016B6200, 0x016B6310, 0x016B7800, 0x016B7D10, 0x016B9000,
72770x016E4014, 0x016E9B00, 0x016F000D, 0x016F4515, 0x016F4B00, 0x016F4F15, 0x016F500D,
72780x016F7F15, 0x016F8800, 0x016F8F0D, 0x016FA000, 0x016FE012, 0x016FE113, 0x016FE215,
72790x016FE417, 0x016FE500, 0x016FF017, 0x016FF200, 0x01700012, 0x0187ED14, 0x0187F215,
72800x0187F800, 0x01880012, 0x018AF317, 0x018CD600, 0x018D0017, 0x018D0900, 0x01AFF018,
72810x01AFF400, 0x01AFF518, 0x01AFFC00, 0x01AFFD18, 0x01AFFF00, 0x01B0000C, 0x01B00213,
72820x01B11F18, 0x01B12300, 0x01B15015, 0x01B15300, 0x01B16415, 0x01B16800, 0x01B17013,
72830x01B2FC00, 0x01BC0010, 0x01BC6B00, 0x01BC7010, 0x01BC7D00, 0x01BC8010, 0x01BC8900,
72840x01BC9010, 0x01BC9A00, 0x01BC9C10, 0x01BCA400, 0x01CF0018, 0x01CF2E00, 0x01CF3018,
72850x01CF4700, 0x01CF5018, 0x01CFC400, 0x01D00005, 0x01D0F600, 0x01D10005, 0x01D12700,
72860x01D1290A, 0x01D12A05, 0x01D1DE11, 0x01D1E918, 0x01D1EB00, 0x01D20008, 0x01D24600,
72870x01D2E014, 0x01D2F400, 0x01D30007, 0x01D35700, 0x01D36009, 0x01D37214, 0x01D37900,
72880x01D40005, 0x01D45500, 0x01D45605, 0x01D49D00, 0x01D49E05, 0x01D4A000, 0x01D4A205,
72890x01D4A300, 0x01D4A505, 0x01D4A700, 0x01D4A905, 0x01D4AD00, 0x01D4AE05, 0x01D4BA00,
72900x01D4BB05, 0x01D4BC00, 0x01D4BD05, 0x01D4C107, 0x01D4C205, 0x01D4C400, 0x01D4C505,
72910x01D50600, 0x01D50705, 0x01D50B00, 0x01D50D05, 0x01D51500, 0x01D51605, 0x01D51D00,
72920x01D51E05, 0x01D53A00, 0x01D53B05, 0x01D53F00, 0x01D54005, 0x01D54500, 0x01D54605,
72930x01D54700, 0x01D54A05, 0x01D55100, 0x01D55205, 0x01D6A408, 0x01D6A600, 0x01D6A805,
72940x01D7CA09, 0x01D7CC00, 0x01D7CE05, 0x01D80011, 0x01DA8C00, 0x01DA9B11, 0x01DAA000,
72950x01DAA111, 0x01DAB000, 0x01DF0018, 0x01DF1F00, 0x01E00012, 0x01E00700, 0x01E00812,
72960x01E01900, 0x01E01B12, 0x01E02200, 0x01E02312, 0x01E02500, 0x01E02612, 0x01E02B00,
72970x01E10015, 0x01E12D00, 0x01E13015, 0x01E13E00, 0x01E14015, 0x01E14A00, 0x01E14E15,
72980x01E15000, 0x01E29018, 0x01E2AF00, 0x01E2C015, 0x01E2FA00, 0x01E2FF15, 0x01E30000,
72990x01E7E018, 0x01E7E700, 0x01E7E818, 0x01E7EC00, 0x01E7ED18, 0x01E7EF00, 0x01E7F018,
73000x01E7FF00, 0x01E80010, 0x01E8C500, 0x01E8C710, 0x01E8D700, 0x01E90012, 0x01E94B15,
73010x01E94C00, 0x01E95012, 0x01E95A00, 0x01E95E12, 0x01E96000, 0x01EC7114, 0x01ECB500,
73020x01ED0115, 0x01ED3E00, 0x01EE000D, 0x01EE0400, 0x01EE050D, 0x01EE2000, 0x01EE210D,
73030x01EE2300, 0x01EE240D, 0x01EE2500, 0x01EE270D, 0x01EE2800, 0x01EE290D, 0x01EE3300,
73040x01EE340D, 0x01EE3800, 0x01EE390D, 0x01EE3A00, 0x01EE3B0D, 0x01EE3C00, 0x01EE420D,
73050x01EE4300, 0x01EE470D, 0x01EE4800, 0x01EE490D, 0x01EE4A00, 0x01EE4B0D, 0x01EE4C00,
73060x01EE4D0D, 0x01EE5000, 0x01EE510D, 0x01EE5300, 0x01EE540D, 0x01EE5500, 0x01EE570D,
73070x01EE5800, 0x01EE590D, 0x01EE5A00, 0x01EE5B0D, 0x01EE5C00, 0x01EE5D0D, 0x01EE5E00,
73080x01EE5F0D, 0x01EE6000, 0x01EE610D, 0x01EE6300, 0x01EE640D, 0x01EE6500, 0x01EE670D,
73090x01EE6B00, 0x01EE6C0D, 0x01EE7300, 0x01EE740D, 0x01EE7800, 0x01EE790D, 0x01EE7D00,
73100x01EE7E0D, 0x01EE7F00, 0x01EE800D, 0x01EE8A00, 0x01EE8B0D, 0x01EE9C00, 0x01EEA10D,
73110x01EEA400, 0x01EEA50D, 0x01EEAA00, 0x01EEAB0D, 0x01EEBC00, 0x01EEF00D, 0x01EEF200,
73120x01F0000A, 0x01F02C00, 0x01F0300A, 0x01F09400, 0x01F0A00C, 0x01F0AF00, 0x01F0B10C,
73130x01F0BF10, 0x01F0C000, 0x01F0C10C, 0x01F0D000, 0x01F0D10C, 0x01F0E010, 0x01F0F600,
73140x01F1000B, 0x01F10B10, 0x01F10D17, 0x01F1100B, 0x01F12F14, 0x01F1300C, 0x01F1310B,
73150x01F1320C, 0x01F13D0B, 0x01F13E0C, 0x01F13F0B, 0x01F1400C, 0x01F1420B, 0x01F1430C,
73160x01F1460B, 0x01F1470C, 0x01F14A0B, 0x01F14F0C, 0x01F1570B, 0x01F1580C, 0x01F15F0B,
73170x01F1600C, 0x01F16A0D, 0x01F16C15, 0x01F16D17, 0x01F1700C, 0x01F1790B, 0x01F17A0C,
73180x01F17B0B, 0x01F17D0C, 0x01F17F0B, 0x01F1800C, 0x01F18A0B, 0x01F18E0C, 0x01F1900B,
73190x01F1910C, 0x01F19B12, 0x01F1AD17, 0x01F1AE00, 0x01F1E60C, 0x01F2000B, 0x01F2010C,
73200x01F20300, 0x01F2100B, 0x01F2320C, 0x01F23B12, 0x01F23C00, 0x01F2400B, 0x01F24900,
73210x01F2500C, 0x01F25200, 0x01F26013, 0x01F26600, 0x01F3000C, 0x01F32110, 0x01F32D11,
73220x01F3300C, 0x01F33610, 0x01F3370C, 0x01F37D10, 0x01F37E11, 0x01F3800C, 0x01F39410,
73230x01F3A00C, 0x01F3C510, 0x01F3C60C, 0x01F3CB10, 0x01F3CF11, 0x01F3D410, 0x01F3E00C,
73240x01F3F110, 0x01F3F811, 0x01F4000C, 0x01F43F10, 0x01F4400C, 0x01F44110, 0x01F4420C,
73250x01F4F810, 0x01F4F90C, 0x01F4FD10, 0x01F4FF11, 0x01F5000C, 0x01F53E10, 0x01F5400D,
73260x01F54410, 0x01F54B11, 0x01F5500C, 0x01F56810, 0x01F57A12, 0x01F57B10, 0x01F5A412,
73270x01F5A510, 0x01F5FB0C, 0x01F6000D, 0x01F6010C, 0x01F6110D, 0x01F6120C, 0x01F6150D,
73280x01F6160C, 0x01F6170D, 0x01F6180C, 0x01F6190D, 0x01F61A0C, 0x01F61B0D, 0x01F61C0C,
73290x01F61F0D, 0x01F6200C, 0x01F6260D, 0x01F6280C, 0x01F62C0D, 0x01F62D0C, 0x01F62E0D,
73300x01F6300C, 0x01F6340D, 0x01F6350C, 0x01F64110, 0x01F64311, 0x01F6450C, 0x01F65010,
73310x01F6800C, 0x01F6C610, 0x01F6D011, 0x01F6D112, 0x01F6D313, 0x01F6D515, 0x01F6D617,
73320x01F6D800, 0x01F6DD18, 0x01F6E010, 0x01F6ED00, 0x01F6F010, 0x01F6F412, 0x01F6F713,
73330x01F6F914, 0x01F6FA15, 0x01F6FB17, 0x01F6FD00, 0x01F7000C, 0x01F77400, 0x01F78010,
73340x01F7D514, 0x01F7D900, 0x01F7E015, 0x01F7EC00, 0x01F7F018, 0x01F7F100, 0x01F80010,
73350x01F80C00, 0x01F81010, 0x01F84800, 0x01F85010, 0x01F85A00, 0x01F86010, 0x01F88800,
73360x01F89010, 0x01F8AE00, 0x01F8B017, 0x01F8B200, 0x01F90013, 0x01F90C17, 0x01F90D15,
73370x01F91011, 0x01F91912, 0x01F91F13, 0x01F92012, 0x01F92813, 0x01F93012, 0x01F93113,
73380x01F93312, 0x01F93F15, 0x01F94012, 0x01F94C13, 0x01F94D14, 0x01F95012, 0x01F95F13,
73390x01F96C14, 0x01F97115, 0x01F97217, 0x01F97314, 0x01F97717, 0x01F97918, 0x01F97A14,
73400x01F97B15, 0x01F97C14, 0x01F98011, 0x01F98512, 0x01F99213, 0x01F99814, 0x01F9A317,
73410x01F9A515, 0x01F9AB17, 0x01F9AE15, 0x01F9B014, 0x01F9BA15, 0x01F9C011, 0x01F9C114,
73420x01F9C315, 0x01F9CB17, 0x01F9CC18, 0x01F9CD15, 0x01F9D013, 0x01F9E714, 0x01FA0015,
73430x01FA5400, 0x01FA6014, 0x01FA6E00, 0x01FA7015, 0x01FA7417, 0x01FA7500, 0x01FA7815,
73440x01FA7B18, 0x01FA7D00, 0x01FA8015, 0x01FA8317, 0x01FA8700, 0x01FA9015, 0x01FA9617,
73450x01FAA918, 0x01FAAD00, 0x01FAB017, 0x01FAB718, 0x01FABB00, 0x01FAC017, 0x01FAC318,
73460x01FAC600, 0x01FAD017, 0x01FAD718, 0x01FADA00, 0x01FAE018, 0x01FAE800, 0x01FAF018,
73470x01FAF700, 0x01FB0017, 0x01FB9300, 0x01FB9417, 0x01FBCB00, 0x01FBF017, 0x01FBFA00,
73480x02000005, 0x02A6D717, 0x02A6DE18, 0x02A6E000, 0x02A7000B, 0x02B73518, 0x02B73900,
73490x02B7400C, 0x02B81E00, 0x02B82011, 0x02CEA200, 0x02CEB013, 0x02EBE100, 0x02F80005,
73500x02FA1E00, 0x03000017, 0x03134B00, 0x0E000105, 0x0E000200, 0x0E002005, 0x0E008000,
73510x0E010007, 0x0E01F000, 0x0F000002, 0x0FFFFE00, 0x10000002, 0x10FFFE00, 0xFFFFFFFF};
7352 staticconstexpr string_with_idx categories_names[] = {
7353string_with_idx{
"c", 0},
7354string_with_idx{
"cased_letter", 7},
7355string_with_idx{
"cc", 1},
7356string_with_idx{
"cf", 2},
7357string_with_idx{
"close_punctuation", 24},
7358string_with_idx{
"cn", 3},
7359string_with_idx{
"co", 4},
7360string_with_idx{
"connector_punctuation", 22},
7361string_with_idx{
"control", 1},
7362string_with_idx{
"cs", 5},
7363string_with_idx{
"currency_symbol", 30},
7364string_with_idx{
"dash_punctuation", 23},
7365string_with_idx{
"decimal_number", 18},
7366string_with_idx{
"enclosing_mark", 15},
7367string_with_idx{
"final_punctuation", 25},
7368string_with_idx{
"format", 2},
7369string_with_idx{
"initial_punctuation", 26},
7370string_with_idx{
"l", 6},
7371string_with_idx{
"lc", 7},
7372string_with_idx{
"letter", 6},
7373string_with_idx{
"letter_number", 19},
7374string_with_idx{
"line_separator", 35},
7375string_with_idx{
"ll", 8},
7376string_with_idx{
"lm", 9},
7377string_with_idx{
"lo", 10},
7378string_with_idx{
"lowercase_letter", 8},
7379string_with_idx{
"lt", 11},
7380string_with_idx{
"lu", 12},
7381string_with_idx{
"m", 13},
7382string_with_idx{
"mark", 13},
7383string_with_idx{
"math_symbol", 32},
7384string_with_idx{
"mc", 14},
7385string_with_idx{
"me", 15},
7386string_with_idx{
"mn", 16},
7387string_with_idx{
"modifier_letter", 9},
7388string_with_idx{
"modifier_symbol", 31},
7389string_with_idx{
"n", 17},
7390string_with_idx{
"nd", 18},
7391string_with_idx{
"nl", 19},
7392string_with_idx{
"no", 20},
7393string_with_idx{
"nonspacing_mark", 16},
7394string_with_idx{
"number", 17},
7395string_with_idx{
"open_punctuation", 28},
7396string_with_idx{
"other", 0},
7397string_with_idx{
"other_letter", 10},
7398string_with_idx{
"other_number", 20},
7399string_with_idx{
"other_punctuation", 27},
7400string_with_idx{
"other_symbol", 33},
7401string_with_idx{
"p", 21},
7402string_with_idx{
"paragraph_separator", 36},
7403string_with_idx{
"pc", 22},
7404string_with_idx{
"pd", 23},
7405string_with_idx{
"pe", 24},
7406string_with_idx{
"pf", 25},
7407string_with_idx{
"pi", 26},
7408string_with_idx{
"po", 27},
7409string_with_idx{
"private_use", 4},
7410string_with_idx{
"ps", 28},
7411string_with_idx{
"punctuation", 21},
7412string_with_idx{
"s", 29},
7413string_with_idx{
"sc", 30},
7414string_with_idx{
"separator", 34},
7415string_with_idx{
"sk", 31},
7416string_with_idx{
"sm", 32},
7417string_with_idx{
"so", 33},
7418string_with_idx{
"space_separator", 37},
7419string_with_idx{
"spacing_mark", 14},
7420string_with_idx{
"surrogate", 5},
7421string_with_idx{
"symbol", 29},
7422string_with_idx{
"titlecase_letter", 11},
7423string_with_idx{
"unassigned", 3},
7424string_with_idx{
"uppercase_letter", 12},
7425string_with_idx{
"z", 34},
7426string_with_idx{
"zl", 35},
7427string_with_idx{
"zp", 36},
7428string_with_idx{
"zs", 37}};
7429 staticconstexpr range_array cat_cc = {0x00000001, 0x00002000, 0x00007F01, 0x0000A000};
7430 staticconstexpr range_array cat_zs = {0x00000000, 0x00002001, 0x00002100, 0x0000A001,
74310x0000A100, 0x00168001, 0x00168100, 0x00200001,
74320x00200B00, 0x00202F01, 0x00203000, 0x00205F01,
74330x00206000, 0x00300001, 0x00300100};
7434 staticconstexpr bool_trie<32, 991, 1, 0, 51, 255, 1, 0, 482, 4, 26, 43> cat_po{
7435{0x8c00d4ee00000000, 0x0000000010000001, 0x80c0008200000000, 0x0000000000000000,
74360x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
74370x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
74380x0000000000000000, 0x4000000000000000, 0x0000000000000080, 0x0000000000000000,
74390x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
74400x0000000000000000, 0x00000000fc000000, 0x0000000000000200, 0x0018000000000049,
74410x00000000e8003600, 0x00003c0000000000, 0x0000000000000000, 0x0000000000100000,
74420x0000000000003fff, 0x0000000000000000, 0x0000000000000000, 0x0380000000000000},
7443{1, 2, 2, 2, 3, 2, 4, 2, 5, 2, 6, 2, 2, 2, 2, 2, 7, 8, 2, 2, 2, 2, 9, 2,
744410, 2, 2, 11, 2, 12, 13, 2, 14, 2, 15, 2, 2, 2, 2, 2, 2, 2, 2, 2, 16, 2, 2, 2,
74452, 2, 2, 2, 2, 2, 2, 2, 17, 2, 18, 19, 2, 2, 20, 21, 2, 2, 2, 2, 22, 2, 2, 23,
74462, 24, 2, 2, 25, 2, 26, 27, 28, 2, 29, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 30,
744731, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
74482, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
74492, 2, 32, 2, 6, 2, 2, 33, 34, 2, 2, 2, 2, 2, 2, 35, 2, 2, 15, 2, 2, 2, 2, 2,
74502, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
74512, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
74522, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
74532, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
74542, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
74552, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
74562, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
74572, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
74582, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
74592, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
74602, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
74612, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
74622, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
74632, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
74642, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
74652, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
74662, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
74672, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
74682, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
74692, 2, 28, 2, 2, 2, 2, 36, 37, 2, 38, 2, 2, 2, 2, 2, 39, 2, 40, 41, 42, 2, 43, 2,
747044, 2, 45, 2, 2, 2, 46, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
74712, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
74722, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
74732, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
74742, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
74752, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
74762, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
74772, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
74782, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
74792, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
74802, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
74812, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
74822, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
74832, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 47,
748448, 2, 2, 49, 50, 2, 2},
7485{0x7fff000000000000, 0x0000000040000000, 0x0000000000000000, 0x0001003000000000,
74860x2000000000000000, 0x0040000000000000, 0x0001000000000000, 0x0080000000000000,
74870x0000000000000010, 0x0010000000000000, 0x000000000c008000, 0x000000000017fff0,
74880x0000000000000020, 0x00000000061f0000, 0x000000000000fc00, 0x0800000000000000,
74890x000001ff00000000, 0x0000400000000000, 0x0000380000000000, 0x0060000000000000,
74900x0000000007700000, 0x00000000000007bf, 0x0000000000000030, 0x00000000c0000000,
74910x00003f7f00000000, 0x60000001fc000000, 0xf000000000000000, 0xf800000000000000,
74920xc000000000000000, 0x00000000000800ff, 0x79ff00ff00c00000, 0x000000007febff8e,
74930xde00000000000000, 0xf3ff7c00cb7fc9c3, 0x00000000001cfffa, 0x200000000000000e,
74940x000000000000e000, 0x4008000000000000, 0x00fc000000000000, 0x00f0000000000000,
74950x170000000000c000, 0x0000c00000000000, 0x0000000080000000, 0x00000000c0003ffe,
74960x00000000f0000000, 0x00030000c0000000, 0x0000080000000000, 0x00010000027f0000,
74970x00000d0380f71e60, 0x100000018c00d4ee, 0x0000003200000000},
7498{1, 2, 3, 3, 3, 4, 3, 3, 3, 3, 5, 3, 6, 7, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
74993, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
75003, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
75013, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
75023, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
75033, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
75043, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
75053, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
75063, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3},
7507{1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0,
75080, 0, 0, 0, 0, 0, 5, 0, 0, 6, 0, 0, 0, 0, 7, 0, 8, 9, 0, 10, 0, 0, 0,
75090, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 12, 0, 0, 13, 14, 15, 0, 16, 0, 17, 18,
75100, 19, 0, 0, 0, 0, 0, 0, 20, 0, 21, 0, 0, 0, 22, 0, 23, 24, 0, 25, 0, 0, 0,
751126, 0, 0, 0, 0, 27, 0, 28, 29, 30, 31, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0,
75120, 0, 0, 0, 33, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
75130, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
75140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
75150, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
75160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
75170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
75180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
75190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 37, 38, 39, 0,
75200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0,
75210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
75220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0,
75230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
75240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
75250, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
75260, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
75270, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42},
7528{0x0000000000000000, 0x0000000000000007, 0x0000000080000000, 0x0000000000010000,
75290x0000800000000000, 0x0000000000800000, 0x8000000080000000, 0x8000000001ff0000,
75300x007f000000000000, 0xfe00000000000000, 0x000000001e000000, 0x0000000003e00000,
75310x00000000000003c0, 0x0000000000003f80, 0xd800000000000000, 0x0000000000000003,
75320x003000000000000f, 0x00000000e80021e0, 0x3f00000000000000, 0x0000020000000000,
75330x000000002c00f800, 0x0000000000000040, 0x0000000000fffffe, 0x00001fff0000000e,
75340x0200000000000000, 0x7000000000000000, 0x0800000000000000, 0x0000000000000070,
75350x0000000400000000, 0x8000000000000000, 0x000000000000007f, 0x00000007dc000000,
75360x000300000000003e, 0x0180000000000000, 0x001f000000000000, 0x0006000000000000,
75370x0000c00000000000, 0x0020000000000000, 0x0f80000000000000, 0x0000000000000010,
75380x0000000007800000, 0x0000000000000f80, 0x00000000c0000000}};
7539 staticconstexpr range_array cat_sc = {
75400x00000000, 0x00002401, 0x00002500, 0x0000A201, 0x0000A600, 0x00058F01, 0x00059000,
75410x00060B01, 0x00060C00, 0x0007FE01, 0x00080000, 0x0009F201, 0x0009F400, 0x0009FB01,
75420x0009FC00, 0x000AF101, 0x000AF200, 0x000BF901, 0x000BFA00, 0x000E3F01, 0x000E4000,
75430x0017DB01, 0x0017DC00, 0x0020A001, 0x0020C100, 0x00A83801, 0x00A83900, 0x00FDFC01,
75440x00FDFD00, 0x00FE6901, 0x00FE6A00, 0x00FF0401, 0x00FF0500, 0x00FFE001, 0x00FFE200,
75450x00FFE501, 0x00FFE700, 0x011FDD01, 0x011FE100, 0x01E2FF01, 0x01E30000, 0x01ECB001,
7547 staticconstexpr bool_trie<32, 962, 28, 2, 19, 0, 0, 0, 0, 0, 0, 0> cat_ps{
7548{0x0000010000000000, 0x0800000008000000, 0x0000000000000000, 0x0000000000000000,
75490x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
75500x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
75510x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
75520x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
75530x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
75540x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
75550x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000},
7556{1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
75570, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
75580, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0,
75590, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 8, 0, 0, 0, 0, 0, 0, 9, 10, 0, 0, 0, 0,
75600, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 12, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0,
75610, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
75620, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
75630, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
75640, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
75650, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
75660, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
75670, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
75680, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
75690, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
75700, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
75710, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
75720, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
75730, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
75740, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
75750, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
75760, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
75770, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
75780, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
75790, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
75800, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
75810, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
75820, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
75830, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
75840, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
75850, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
75860, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
75870, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
75880, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
75890, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
759014, 0, 0, 0, 15, 16, 0, 0, 17, 18},
7591{0x0000000000000000, 0x1400000000000000, 0x0000000008000000, 0x0000000044000000,
75920x2000000000000020, 0x0000000000002000, 0x0000020000000500, 0x0015550000000000,
75930x0000554000000020, 0x0000000000aaaaa8, 0x1000000005000000, 0x0000015400000000,
75940x000000000aa00004, 0x0000000025515500, 0x8000000000000000, 0xaaa0000000800000,
75950x000000002a00008a, 0x0800000000000100, 0x0000000488000000},
7599 staticconstexpr bool_trie<32, 962, 28, 2, 18, 0, 0, 0, 0, 0, 0, 0> cat_pe{
7600{0x0000020000000000, 0x2000000020000000, 0x0000000000000000, 0x0000000000000000,
76010x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
76020x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
76030x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
76040x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
76050x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
76060x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
76070x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000},
7608{1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
76090, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
76100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0,
76110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 7, 0, 0, 0, 0, 0, 0, 8, 9, 0, 0, 0, 0,
76120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 11, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0,
76130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
76140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
76150, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
76160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
76170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
76180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
76190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
76200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
76210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
76220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
76230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
76240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
76250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
76260, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
76270, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
76280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
76290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
76300, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
76310, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
76320, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
76330, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
76340, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
76350, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
76360, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
76370, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
76380, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
76390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
76400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
76410, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
764213, 0, 0, 0, 14, 15, 0, 0, 16, 17},
7643{0x0000000000000000, 0x2800000000000000, 0x0000000010000000, 0x4000000000000040,
76440x0000000000004000, 0x0000040000000a00, 0x002aaa0000000000, 0x0000aa8000000040,
76450x0000000001555550, 0x200000000a000000, 0x000002a800000000, 0x0000000015400000,
76460x00000000caa2aa00, 0x4000000000000000, 0x5540000001000000, 0x0000000054000115,
76470x2000000000000200, 0x0000000920000000},
7651 staticconstexpr bool_trie<32, 895, 97, 0, 25, 2, 13, 241, 97, 91, 4, 7> cat_sm{
7652{0x7000080000000000, 0x5000000000000000, 0x0002100000000000, 0x0080000000800000,
76530x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
76540x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
76550x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0040000000000000,
76560x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
76570x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
76580x00000000000001c0, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
76590x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000},
7660{1, 2, 0, 3, 4, 5, 6, 7, 7, 7, 7, 8, 9, 10, 11, 0, 0, 0, 0, 0, 0, 12, 13, 0, 14, 0,
76610, 0, 0, 0, 15, 0, 0, 0, 0, 7, 7, 16, 17, 7, 7, 7, 7, 18, 19, 0, 0, 0, 0, 0, 0, 0,
76620, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
76630, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
76640, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
76650, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
76660, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
76670, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
76680, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
76690, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
76700, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
76710, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
76720, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
76730, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
76740, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
76750, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
76760, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
76770, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
76780, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
76790, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
76800, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
76810, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
76820, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
76830, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
76840, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
76850, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
76860, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
76870, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
76880, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
76890, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
76900, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
76910, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
76920, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
76930, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0,
76940, 0, 0, 0, 21, 0, 0, 22, 23, 0, 24},
7695{0x0000000000000000, 0x1c00000000040010, 0x0000000000001c00, 0x0000000001000000,
76960x000000000000081f, 0x000040490c1f0000, 0xfff000000014c000, 0xffffffffffffffff,
76970x0000000300000000, 0x1000000000000000, 0x000ffffff8000000, 0x00000003f0000000,
76980x0080000000000000, 0xff00000000000002, 0x0000800000000000, 0xffff003fffffff9f,
76990xfffffffffe000007, 0xcffffffff0ffffff, 0xffff000000000000, 0x0000000000001f9f,
77000x0000020000000000, 0x0000007400000000, 0x0000000070000800, 0x0000000050000000,
77010x00001e0400000000},
7703{1, 2, 3, 4, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
77040, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
77050, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
77060, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6},
7707{0x0000000000000000, 0x0800000008000002, 0x0020000000200000, 0x0000800000008000,
77080x0000020000000200, 0x0000000000000008, 0x0003000000000000}};
7709 staticconstexpr flat_array<26> cat_pd{{0x1400, 0x1806, 0x058A, 0xFF0D, 0x2010, 0x2011, 0x2012,
77100x2013, 0x2014, 0x2015, 0x2E17, 0x2E1A, 0x301C, 0x30A0,
77110x002D, 0x10EAD, 0x3030, 0xFE31, 0xFE32, 0x2E3A, 0x2E3B,
77120x05BE, 0x2E40, 0xFE58, 0x2E5D, 0xFE63}};
7713 staticconstexpr bool_trie<32, 984, 5, 3, 9, 255, 1, 0, 414, 18, 16, 8> cat_nd{
7714{0x03ff000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
77150x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
77160x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
77170x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
77180x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
77190x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
77200x0000000000000000, 0x000003ff00000000, 0x0000000000000000, 0x03ff000000000000,
77210x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x00000000000003ff},
7722{1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 2, 0, 2, 3, 0, 0, 0, 0, 4, 2,
77230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2,
77240, 0, 0, 0, 5, 0, 2, 0, 0, 6, 0, 0, 2, 7, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
77250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
77260, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
77270, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
77280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
77290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
77300, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
77310, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
77320, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
77330, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
77340, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
77350, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
77360, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
77370, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
77380, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
77390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
77400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
77410, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
77420, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0,
77430, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 8, 0, 2, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,
77440, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
77450, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
77460, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
77470, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
77480, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
77490, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
77500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
77510, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
77520, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
77530, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
77540, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2},
7755{0x0000000000000000, 0x0000ffc000000000, 0x0000000003ff0000, 0x000003ff00000000,
77560x00000000000003ff, 0x000000000000ffc0, 0x0000000003ff03ff, 0x03ff000000000000,
77570x03ff000003ff0000},
7758{1, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 4, 5, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
77592, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
77602, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
77612, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
77622, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
77632, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
77642, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
77652, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
77662, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2},
7767{1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
77680, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 2, 4, 0, 0, 5, 0, 0, 0, 2, 0, 0,
77690, 0, 0, 5, 0, 5, 0, 0, 0, 0, 0, 5, 0, 6, 2, 0, 0, 0, 0, 0, 0, 1, 0, 5, 0, 0, 0, 0, 0, 0,
77700, 0, 0, 0, 0, 5, 0, 0, 0, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
77710, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
77720, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
77730, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
77740, 0, 0, 0, 0, 1, 0, 6, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
77750, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,
77760, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
77770, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
77780, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
77790, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
77800, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2},
7781{0x0000000000000000, 0x000003ff00000000, 0x03ff000000000000, 0x0000ffc000000000,
77820xffc0000000000000, 0x0000000003ff0000, 0x00000000000003ff, 0xffffffffffffc000}};
7783 staticconstexpr bool_trie<32, 955, 34, 3, 24, 255, 1, 0, 341, 16, 27, 26> cat_lu{
7784{0x0000000000000000, 0x0000000007fffffe, 0x0000000000000000, 0x000000007f7fffff,
77850xaa55555555555555, 0x2b555555555554aa, 0x11aed2d5b1dbced6, 0x55d255554aaaa490,
77860x6c05555555555555, 0x000000000000557a, 0x0000000000000000, 0x0000000000000000,
77870x0000000000000000, 0x8045000000000000, 0x00000ffbfffed740, 0xe6905555551c8000,
77880x0000ffffffffffff, 0x5555555500000000, 0x5555555555555401, 0x5555555555552aab,
77890xfffe555555555555, 0x00000000007fffff, 0x0000000000000000, 0x0000000000000000,
77900x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
77910x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000},
7792{1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
77930, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0,
77940, 0, 5, 5, 6, 5, 7, 8, 9, 10, 0, 0, 0, 0, 11, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0,
77950, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
77960, 0, 0, 0, 0, 0, 14, 15, 5, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
77970, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
77980, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
77990, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78020, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78030, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78040, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78050, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78060, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78070, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78080, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78090, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78150, 17, 18, 0, 19, 20, 21, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78260, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78270, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23},
7829{0x0000000000000000, 0xffffffff00000000, 0x00000000000020bf, 0x003fffffffffffff,
78300xe7ffffffffff0000, 0x5555555555555555, 0x5555555540155555, 0xff00ff003f00ff00,
78310x0000ff00aa003f00, 0x0f00000000000000, 0x0f001f000f000f00, 0xc00f3d503e273884,
78320x0000000000000020, 0x0000000000000008, 0x0000ffffffffffff, 0xc025ea9d00000000,
78330x0004280555555555, 0x0000155555555555, 0x0000000005555555, 0x5554555400000000,
78340x6a00555555555555, 0x555f7d5555452855, 0x00200000014102f5, 0x07fffffe00000000},
7835{1, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 4, 5, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
78362, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
78372, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
78382, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
78392, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
78402, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
78412, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
78422, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
78432, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2},
7844{1, 0, 2, 3, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78450, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78460, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78470, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78480, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78490, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78510, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78520, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78530, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78540, 0, 0, 0, 0, 0, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 0, 0, 0,
78550, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78560, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78570, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25},
7858{0x0000000000000000, 0x000000ffffffffff, 0xffff000000000000, 0x00000000000fffff,
78590xf7ff000000000000, 0x000000000037f7ff, 0x0007ffffffffffff, 0xffffffff00000000,
78600x00000000ffffffff, 0xfff0000003ffffff, 0xffffff0000003fff, 0x003fde64d0000003,
78610x000003ffffff0000, 0x7b0000001fdfe7b0, 0xfffff0000001fc5f, 0x03ffffff0000003f,
78620x00003ffffff00000, 0xf0000003ffffff00, 0xffff0000003fffff, 0xffffff00000003ff,
78630x07fffffc00000001, 0x001ffffff0000000, 0x00007fffffc00000, 0x000001ffffff0000,
78640x0000000000000400, 0x00000003ffffffff}};
7865 staticconstexpr bool_trie<32, 990, 2, 0, 13, 1, 15, 240, 1, 79, 48, 2> cat_sk{
7866{0x0000000000000000, 0x0000000140000000, 0x0110810000000000, 0x0000000000000000,
78670x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
78680x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0xffffafe0fffc003c,
78690x0000000000000000, 0x0020000000000000, 0x0000000000000030, 0x0000000000000000,
78700x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
78710x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
78720x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
78730x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000},
7874{1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78750, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78760, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78770, 0, 0, 0, 0, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78780, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78790, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78800, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78810, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78820, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78830, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78840, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78850, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78860, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78870, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78880, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78890, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78900, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78910, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78920, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78930, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78940, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78950, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 6, 0,
78960, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78970, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78980, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78990, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
79000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
79010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
79020, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
79030, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
79040, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
79050, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
79060, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
79070, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7909{0x0000000000000000, 0x0000000000000100, 0xa000000000000000, 0x6000e000e000e003,
79100x0000000018000000, 0x00000003007fffff, 0x0000000000000600, 0x00000c0008000000,
79110xfffc000000000000, 0x0000000000000007, 0x4000000000000000, 0x0000000000000001,
79120x0000000800000000},
7915{0x0000000000000000, 0xf800000000000000}};
7916 staticconstexpr flat_array<10> cat_pc{
7917{0x2040, 0xFE4D, 0xFE4E, 0xFE4F, 0xFE33, 0x2054, 0xFE34, 0xFF3F, 0x005F, 0x203F}};
7918 staticconstexpr bool_trie<32, 955, 35, 2, 30, 255, 1, 0, 342, 16, 26, 27> cat_ll{
7919{0x0000000000000000, 0x07fffffe00000000, 0x0020000000000000, 0xff7fffff80000000,
79200x55aaaaaaaaaaaaaa, 0xd4aaaaaaaaaaab55, 0xe6512d2a4e243129, 0xaa29aaaab5555240,
79210x93faaaaaaaaaaaaa, 0xffffffffffffaa85, 0x0000ffffffefffff, 0x0000000000000000,
79220x0000000000000000, 0x388a000000000000, 0xfffff00000010000, 0x192faaaaaae37fff,
79230xffff000000000000, 0xaaaaaaaaffffffff, 0xaaaaaaaaaaaaa802, 0xaaaaaaaaaaaad554,
79240x0000aaaaaaaaaaaa, 0xffffffff00000000, 0x00000000000001ff, 0x0000000000000000,
79250x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
79260x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000},
7927{1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
79280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 4,
79295, 6, 0, 7, 7, 8, 7, 9, 10, 11, 12, 0, 0, 0, 0, 13, 14, 15, 0, 0, 0, 0, 0, 0, 0,
79300, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
79310, 0, 0, 0, 0, 0, 0, 0, 0, 16, 17, 7, 18, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
79320, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
79330, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
79340, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
79350, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
79360, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
79370, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
79380, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
79390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
79400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
79410, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
79420, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
79430, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
79440, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
79450, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
79460, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
79470, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
79480, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
79490, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
79500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 21,
79510, 22, 23, 24, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 26, 27, 0, 0, 0, 0, 0,
79520, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
79530, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
79540, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
79550, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
79560, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
79570, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
79580, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
79590, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
79600, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
79610, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
79620, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
79630, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
79640, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7966{0x0000000000000000, 0xe7ffffffffff0000, 0x3f00000000000000, 0x00000000000001ff,
79670x00000fffffffffff, 0xfefff80000000000, 0x0000000007ffffff, 0xaaaaaaaaaaaaaaaa,
79680xaaaaaaaabfeaaaaa, 0x00ff00ff003f00ff, 0x3fff00ff00ff003f, 0x40df00ff00ff00ff,
79690x00dc00ff00cf00dc, 0x321080000008c400, 0x00000000000043c0, 0x0000000000000010,
79700xffff000000000000, 0x0fda1562ffffffff, 0x0008501aaaaaaaaa, 0x000020bfffffffff,
79710x00002aaaaaaaaaaa, 0x000000000aaaaaaa, 0xaaabaaa800000000, 0x95feaaaaaaaaaaaa,
79720xaaa082aaaaba50aa, 0x0440000002aa050a, 0xffff01ff07ffffff, 0xffffffffffffffff,
79730x0000000000f8007f, 0x0000000007fffffe},
7974{1, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 4, 5, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
79752, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
79762, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
79772, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
79782, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
79792, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
79802, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
79812, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
79822, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2},
7983{1, 2, 0, 3, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
79840, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
79850, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
79860, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
79870, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
79880, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
79890, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
79900, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
79910, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
79920, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
79930, 0, 0, 0, 0, 0, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 0, 0,
79940, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
799524, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
79960, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 26},
7997{0x0000000000000000, 0xffffff0000000000, 0x000000000000ffff, 0x0fffffffff000000,
79980x1bfbfffbff800000, 0x0007ffffffffffff, 0x00000000ffffffff, 0xffffffff00000000,
79990x000ffffffc000000, 0x000000ffffdfc000, 0xebc000000ffffffc, 0xfffffc000000ffef,
80000x00ffffffc000000f, 0x00000ffffffc0000, 0xfc000000ffffffc0, 0xffffc000000fffff,
80010x0ffffffc000000ff, 0x0000ffffffc00000, 0x0000003ffffffc00, 0xf0000003f7fffffc,
80020xffc000000fdfffff, 0xffff0000003f7fff, 0xfffffc000000fdff, 0x0000000000000bf7,
80030x000000007ffffbff, 0xfffffffc00000000, 0x000000000000000f}};
8004 staticconstexpr bool_trie<32, 985, 7, 0, 54, 255, 1, 0, 556, 4, 16, 48> cat_so{
8005{0x0000000000000000, 0x0000000000000000, 0x0001424000000000, 0x0000000000000000,
80060x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
80070x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
80080x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
80090x0000000000000000, 0x0000000000000000, 0x0000000000000004, 0x0000000000000000,
80100x0000000000000000, 0x0000000000000000, 0x0000000000006000, 0x0000000000000000,
80110x000000000000c000, 0x0000000000000000, 0x0000000000000000, 0x6000020040000000,
80120x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0040000000000000},
8013{1, 0, 0, 0, 0, 0, 2, 0, 3, 0, 4, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 6, 0,
80147, 8, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0,
80150, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 13, 0, 0, 0, 0,
80160, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
80170, 15, 16, 17, 18, 0, 0, 0, 0, 19, 20, 21, 22, 23, 24, 25, 26, 27, 27, 28, 29, 27, 30,
801827, 27, 27, 31, 32, 0, 27, 27, 27, 27, 0, 0, 0, 0, 0, 0, 0, 0, 33, 34, 35, 27, 0,
80190, 0, 36, 0, 0, 0, 0, 0, 37, 38, 39, 27, 27, 27, 40, 41, 0, 0, 0, 0, 0, 42, 43,
802044, 45, 46, 27, 27, 27, 27, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
80210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
80220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
80230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
80240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0,
80250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
80260, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
80270, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
80280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
80290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
80300, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
80310, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
80320, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
80330, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
80340, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
80350, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
80360, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
80370, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
80380, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
80390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
80400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0,
80410, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
80420, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
80430, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
80440, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
80450, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
80460, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
80470, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
80480, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
80490, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
80500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
80510, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
80520, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
80530, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
80540, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
80550, 0, 0, 0, 0, 0, 0, 0, 51, 0, 52, 0, 0, 0, 0, 0, 0, 0, 53},
8056{0x0000000000000000, 0x0400000000000000, 0x0001000000000000, 0x05f8000000000000,
80570x8000000000000000, 0x0200000000008000, 0x01500000fce8000e, 0xc000000000000000,
80580x0000000001e0dfbf, 0x00000000c0000000, 0x0000000003ff0000, 0x0000200000000000,
80590x0000000000000001, 0xffffffffc0000000, 0x1ff007fe00000000, 0x0c0042afc0d0037b,
80600x000000000000b400, 0xffffbfb6f3e00c00, 0x000fffffffeb3fff, 0xfffff9fcfffff0ff,
80610xefffffffffffffff, 0xfff0000007ffffff, 0xfffffffc0fffffff, 0x0000007fffffffff,
80620x00000000000007ff, 0xfffffffff0000000, 0x000003ffffffffff, 0xffffffffffffffff,
80630xff7fffffffffffff, 0x00fffffffffffffd, 0xffff7fffffffffff, 0x000000ffffffffff,
80640xfffffffffff00000, 0x0000ffffffffffff, 0xffcfffffffffe060, 0xffffffffffbfffff,
80650x000007e000000000, 0x0000000000030000, 0xfffffffffbffffff, 0x000fffffffffffff,
80660x0fff0000003fffff, 0xc0c00001000c0010, 0x00000000ffc30000, 0x0000000fffffffff,
80670xfffffc007fffffff, 0xffffffff000100ff, 0x0001fffffffffc00, 0xffffffffffff0000,
80680x000000000000007f, 0x02c00f0000000000, 0x0380000000000000, 0x000000000000ffff,
80690xe000000000008000, 0x3000611000000000},
8070{1, 2, 2, 2, 2, 3, 2, 2, 2, 2, 4, 5, 6, 7, 8, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
80712, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
80722, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
80732, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
80742, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
80752, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
80762, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
80772, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
80782, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2},
8079{1, 2, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
80800, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0,
80810, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
80820, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0,
80830, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
80840, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
80850, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
80860, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
80870, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
80880, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
80890, 0, 9, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
80900, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
80910, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
80920, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
80930, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
80940, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
80950, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 14, 13, 13, 13, 15, 16, 17, 18, 19, 13, 20, 0,
80960, 13, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 13,
809713, 13, 13, 13, 13, 13, 22, 23, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
80980, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
80990, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
81000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0,
81010, 0, 28, 13, 29, 30, 31, 13, 32, 33, 34, 35, 0, 0, 13, 13, 13, 36, 13, 13, 13, 13, 13,
810213, 13, 13, 13, 13, 13, 37, 13, 38, 13, 39, 40, 41, 42, 0, 13, 13, 13, 13, 13, 43, 44, 45,
8104{0x0000000000000000, 0xff80000000000000, 0xfe00000000000000, 0x000000011fff73ff,
81050x1fffffffffff0000, 0x0180000000000000, 0x0000000000000100, 0x8000000000000000,
81060x0003fffe1fe00000, 0xf000000000000000, 0x0000000000000020, 0x0000000010000000,
81070xffffffffffff0000, 0xffffffffffffffff, 0x000000000000000f, 0x003fffffffffffff,
81080xfffffe7fffffffff, 0x00001c1fffffffff, 0xffffc3fffffff018, 0x000007ffffffffff,
81090x0000000000000023, 0x00000000007fffff, 0x0780000000000000, 0xffdfe00000000000,
81100x000000000000006f, 0x0000000000008000, 0x0000100000000000, 0x0000400000000000,
81110xffff0fffffffffff, 0xfffe7fff000fffff, 0x003ffffffffefffe, 0xffffffffffffe000,
81120x00003fffffffffff, 0xffffffc000000000, 0x0fffffffffff0007, 0x0000003f000301ff,
81130x07ffffffffffffff, 0x1fff1fffe0ffffff, 0x000fffffffffffff, 0x00010fff01ffffff,
81140xffffffffffff0fff, 0xffffffff03ff00ff, 0x00033fffffff00ff, 0x1f1f3fff000fffff,
81150x07ff1fffffff007f, 0x007f00ff03ff003f, 0xfffffffffff7ffff, 0x00000000000007ff}};
8116 staticconstexpr bool_trie<32, 991, 1, 0, 114, 255, 1, 0, 1151, 1, 0, 103> cat_lo{
8117{0x0000000000000000, 0x0000000000000000, 0x0400040000000000, 0x0000000000000000,
81180x0000000000000000, 0x0000000000000000, 0x0800000000000000, 0x000000000000000f,
81190x0000000000000000, 0x0000000000000000, 0x0000000000100000, 0x0000000000000000,
81200x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
81210x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
81220x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x000787ffffff0000,
81230xffffffff00000000, 0xfffec000000007fe, 0xffffffffffffffff, 0x9c00c000002fffff,
81240x0000fffffffd0000, 0xffffffffffffe000, 0x0002003fffffffff, 0x000007fffffffc00},
8125{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
812620, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 31, 35, 35, 35,
812735, 35, 36, 37, 38, 39, 40, 41, 31, 42, 35, 35, 35, 35, 35, 35, 35, 35, 43,
812844, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 31, 31, 60,
812961, 62, 63, 64, 65, 31, 66, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
813031, 31, 31, 31, 67, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
813131, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
813231, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 68, 69, 70, 71, 31,
813331, 31, 31, 31, 31, 31, 31, 72, 42, 73, 74, 75, 35, 76, 68, 31, 31, 31, 31,
813431, 31, 31, 31, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
813535, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
813635, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
813735, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
813835, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
813935, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 31, 35, 35, 35, 35, 35, 35,
814035, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
814135, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
814235, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
814335, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
814435, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
814535, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
814635, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
814735, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
814835, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
814935, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
815035, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
815135, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
815235, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
815335, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
815435, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
815535, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
815635, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 77,
815735, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 78, 79,
815835, 35, 35, 35, 80, 81, 50, 63, 31, 31, 82, 83, 84, 48, 85, 86, 87, 88, 89,
815990, 91, 92, 93, 94, 95, 31, 31, 96, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
816035, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
816135, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
816235, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
816335, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
816435, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
816535, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
816635, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
816735, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
816835, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 97, 98, 31, 31, 31, 31, 31,
816931, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
817031, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
817131, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
817231, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
817331, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
817431, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
817531, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 35, 35, 35, 35, 35, 99,
817635, 100, 101, 102, 103, 104, 35, 35, 35, 35, 105, 106, 107, 108, 31, 109, 35, 110, 31,
8178{0x00000000003fffff, 0xffff07ff01ffffff, 0xffffffff00007eff, 0x00000000000001ff,
81790x23fffffffffffff0, 0xfffc0003ff010000, 0x23c5fdfffff99fe1, 0x10030003b0004000,
81800x036dfdfffff987e0, 0x001c00005e000000, 0x23edfdfffffbbfe0, 0x0200000300010000,
81810x23edfdfffff99fe0, 0x00020003b0000000, 0x03ffc718d63dc7e8, 0x0000000000010000,
81820x23fffdfffffddfe0, 0x0000000327000000, 0x23effdfffffddfe1, 0x0006000360000000,
81830x27fffffffffddff0, 0xfc00000380704000, 0x2ffbfffffc7fffe0, 0x000000000000007f,
81840x000dfffffffffffe, 0x000000000000003f, 0x200dffaffffff7d6, 0x00000000f000001f,
81850x0000000000000001, 0x00001ffffffffeff, 0x0000000000001f00, 0x0000000000000000,
81860x800007ffffffffff, 0xffe1c0623c3f0000, 0x0000000000004003, 0xffffffffffffffff,
81870xffffffff3d7f3dff, 0x7f3dffffffff3dff, 0xffffffffff7fff3d, 0xffffffffff3dffff,
81880x0000000007ffffff, 0x000000000000ffff, 0xfffffffffffffffe, 0xffff9fffffffffff,
81890xffffffff07fffffe, 0x01fe07ffffffffff, 0x0003ffff8003ffff, 0x0001dfff0003ffff,
81900x000fffffffffffff, 0x0000000010000000, 0xffffffff00000000, 0x01fffffffffffff7,
81910xffff05ffffffff9f, 0x003fffffffffffff, 0x000000007fffffff, 0x001f3fffffff0000,
81920xffff0fffffffffff, 0x00000000000003ff, 0xffffffff007fffff, 0x00000000001fffff,
81930x000fffffffffffe0, 0x0000000000001fe0, 0xfc00c001fffffff8, 0x0000003fffffffff,
81940x0000000fffffffff, 0x00fffffffc00e000, 0x046fde0000000000, 0x01e0000000000000,
81950xffff000000000000, 0x000000ffffffffff, 0x7f7f7f7f007fffff, 0x000000007f7f7f7f,
81960x1000000000000040, 0xfffffffe807fffff, 0x87ffffffffffffff, 0xfffeffffffffffe0,
81970xffffffff00007fff, 0xffffffffffdfffff, 0x0000000000001fff, 0x00ffffffffff0000,
81980x00000c00ffff0fff, 0x0000400000000000, 0x0000000000008000, 0xf880000000000000,
81990x00000007fffff7bb, 0x000ffffffffffffc, 0x68fc000000000000, 0xffff003ffffffc00,
82000x1fffffff0000007f, 0x0007fffffffffff0, 0x7c00ff9f00000000, 0x000001ffffffffff,
82010xc47effff00000ff7, 0x3e62ffffffffffff, 0x000407ff18000005, 0x00007f7f007e7e7e,
82020x00000007ffffffff, 0xffff000fffffffff, 0x0ffffffffffff87f, 0xffff3fffffffffff,
82030x0000000003ffffff, 0x5f7ffdffa0000000, 0xffffffffffffffdb, 0x0003ffffffffffff,
82040xfffffffffff80000, 0x3fffffffffffffff, 0xffffffffffff0000, 0xfffffffffffcffff,
82050x0fff0000000000ff, 0xffdf000000000000, 0x1fffffffffffffff, 0xfffeffc000000000,
82060x7fffffff3fffffff, 0x000000001cfcfcfc},
8207{1, 2, 3, 4, 5, 6, 7, 8, 5, 5, 9, 5, 10, 11, 5, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 12,
820813, 14, 7, 15, 16, 7, 17, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
82095, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
82105, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
82115, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
82125, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
82135, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
82145, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
82155, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
82165, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5},
8217{1, 2, 3, 4, 4, 4, 4, 4, 4, 5, 6, 7, 8, 9, 10, 4, 11, 12, 4, 13, 14, 4,
82184, 2, 2, 2, 2, 15, 16, 4, 4, 17, 18, 19, 20, 21, 4, 22, 4, 23, 24, 25, 26, 27,
821928, 29, 4, 2, 30, 4, 4, 14, 4, 4, 4, 4, 4, 31, 4, 32, 33, 34, 35, 36, 37, 38,
822039, 40, 41, 42, 43, 44, 4, 45, 19, 46, 47, 4, 4, 48, 49, 50, 51, 4, 4, 52, 53, 50,
822154, 55, 4, 56, 57, 4, 4, 58, 4, 4, 59, 60, 61, 62, 63, 64, 65, 66, 67, 4, 4, 4,
82224, 68, 69, 70, 4, 71, 72, 73, 4, 4, 4, 4, 74, 4, 4, 75, 4, 2, 2, 2, 2, 2,
82232, 2, 2, 2, 2, 2, 2, 2, 2, 76, 4, 4, 4, 2, 2, 2, 77, 4, 4, 4, 4, 4,
82244, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
82254, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 11, 78, 2, 2, 2, 2, 2, 2, 2,
82262, 2, 2, 2, 2, 2, 2, 2, 2, 52, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
82274, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
82284, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
82294, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 57, 4, 4, 4, 4, 4,
82304, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
82314, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
82324, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
82334, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
82344, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
82354, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 2,
82362, 2, 2, 2, 2, 67, 79, 80, 81, 50, 82, 70, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
82374, 4, 4, 2, 83, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
82382, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
82392, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
82402, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
82412, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 84, 2, 2, 2, 2, 2, 2, 2,
82422, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 85, 30, 4, 4, 4, 4, 4, 4, 4, 4,
82434, 4, 4, 2, 2, 2, 2, 86, 87, 2, 2, 2, 2, 2, 88, 4, 4, 4, 4, 4, 4, 4,
82444, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
82454, 4, 4, 4, 4, 4, 4, 2, 89, 90, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
82464, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
82474, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
82484, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 91, 4, 4, 4, 4,
82494, 4, 4, 92, 93, 4, 4, 4, 4, 81, 58, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
82504, 4, 4, 4, 4, 4, 4, 4, 94, 2, 2, 2, 95, 4, 4, 4, 4, 4, 4, 4, 4, 4,
82514, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 96, 97, 98, 4, 4, 4, 4, 4, 2, 2, 2,
82522, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
82532, 2, 99, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
82542, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
82552, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
82562, 67, 2, 2, 2, 9, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
82572, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
82582, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
82592, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
82602, 2, 2, 2, 2, 2, 2, 100, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
82612, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
82622, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 101, 4, 4, 4, 4, 4,
82634, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
82644, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2,
82652, 2, 2, 2, 2, 2, 2, 12, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
82664, 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
8267102, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
82684, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
82694, 4, 4, 4, 4, 4, 4},
8270{0xb7ffff7fffffefff, 0x000000003fff3fff, 0xffffffffffffffff, 0x07ffffffffffffff,
82710x0000000000000000, 0xffffffff1fffffff, 0x000000000001ffff, 0xffffe000ffffffff,
82720x003fffffffff03fd, 0xffffffff3fffffff, 0x000000000000ff0f, 0xffffffffffff0000,
82730x000000003fffffff, 0xffff00ffffffffff, 0x0000000fffffffff, 0x007fffffffffffff,
82740x000000ff003fffff, 0x91bffffffffffd3f, 0x007fffff003fffff, 0x000000007fffffff,
82750x0037ffff00000000, 0x03ffffff003fffff, 0xc0ffffffffffffff, 0x003ffffffeef0001,
82760x1fffffff00000000, 0x000000001fffffff, 0x0000001ffffffeff, 0x003fffffffffffff,
82770x0007ffff003fffff, 0x000000000003ffff, 0x00000000000001ff, 0x000303ffffffffff,
82780xffff00801fffffff, 0xffff00000000003f, 0xffff000000000003, 0x007fffff0000001f,
82790x00fffffffffffff8, 0x0026000000000000, 0x0000fffffffffff8, 0x000001ffffff0000,
82800x0000007ffffffff8, 0x0047ffffffff0090, 0x0007fffffffffff8, 0x000000001400001e,
82810x00000ffffffbffff, 0xffff01ffbfffbd7f, 0x23edfdfffff99fe0, 0x00000003e0010000,
82820x001fffffffffffff, 0x0000000380000780, 0x0000ffffffffffff, 0x00000000000000b0,
82830x00007fffffffffff, 0x000000000f000000, 0x0000000000000010, 0x010007ffffffffff,
82840x0000000007ffffff, 0x000000000000007f, 0x00000fffffffffff, 0x8000000000000000,
82850x8000ffffff6ff27f, 0x0000000000000002, 0xfffffcff00000000, 0x0000000a0001ffff,
82860x0407fffffffff801, 0xfffffffff0010000, 0xffff0000200003ff, 0x01ffffffffffffff,
82870x00007ffffffffdff, 0xfffc000000000001, 0x000000000000ffff, 0x0001fffffffffb7f,
82880xfffffdbf00000040, 0x00000000010003ff, 0x0007ffff00000000, 0x0001000000000000,
82890x0000000003ffffff, 0x000000000000000f, 0x0001ffffffffffff, 0xffff00007fffffff,
82900x7fffffffffffffff, 0x00003fffffff0000, 0xe0fffff800000000, 0x00000000000107ff,
82910x00ffffffffffffff, 0x00000000003fffff, 0x00000007ffffffff, 0xffff00f000070000,
82920x0fffffffffffffff, 0x1fff07ffffffffff, 0x0000000003ff01ff, 0x0000000000000400,
82930x00001fffffffffff, 0x0000000000004000, 0x7fff6f7f00000000, 0x000000000000001f,
82940x0af7fe96ffffffef, 0x5ef7f796aa96ea84, 0x0ffffbee0ffffbff, 0x00000000ffffffff,
82950xffff0003ffffffff, 0x00000001ffffffff, 0x00000000000007ff}};
8296 staticconstexpr flat_array<12> cat_pi{{0x2E20, 0x2E02, 0x2E04, 0x2E09, 0x00AB, 0x2E0C, 0x2018,
82970x2039, 0x201B, 0x201C, 0x2E1C, 0x201F}};
8298 staticconstexpr range_array cat_cf = {
82990x00000000, 0x0000AD01, 0x0000AE00, 0x00060001, 0x00060600, 0x00061C01, 0x00061D00,
83000x0006DD01, 0x0006DE00, 0x00070F01, 0x00071000, 0x00089001, 0x00089200, 0x0008E201,
83010x0008E300, 0x00180E01, 0x00180F00, 0x00200B01, 0x00201000, 0x00202A01, 0x00202F00,
83020x00206001, 0x00206500, 0x00206601, 0x00207000, 0x00FEFF01, 0x00FF0000, 0x00FFF901,
83030x00FFFC00, 0x0110BD01, 0x0110BE00, 0x0110CD01, 0x0110CE00, 0x01343001, 0x01343900,
83040x01BCA001, 0x01BCA400, 0x01D17301, 0x01D17B00, 0x0E000101, 0x0E000200, 0x0E002001,
8306 staticconstexpr bool_trie<32, 634, 7, 351, 25, 255, 1, 0, 385, 4, 59, 37> cat_no{
8307{0x0000000000000000, 0x0000000000000000, 0x720c000000000000, 0x0000000000000000,
83080x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
83090x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
83100x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
83110x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
83120x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
83130x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
83140x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000},
8315{1, 0, 0, 0, 0, 0, 2, 0, 3, 0, 4, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0,
83160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
83170, 0, 8, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
83180, 0, 0, 0, 0, 0, 0, 0, 0, 10, 11, 0, 0, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 15,
831916, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
83200, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 21,
832122, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
83220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
83230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
83240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
83250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
83260, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
83270, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
83280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
83290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
83300, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
83310, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
83320, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
83330, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
83340, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
83350, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
83360, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
83370, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
83380, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24},
8339{0x0000000000000000, 0x03f0000000000000, 0x00fc000000000000, 0x0007000000000000,
83400x7f00000000000000, 0x01ff00007f000000, 0x000ffc0000000000, 0x1ffffe0000000000,
83410x03ff000000000000, 0x0000000004000000, 0x03f1000000000000, 0x00000000000003ff,
83420x00000000ffff0000, 0x0000000000000200, 0xffffffff00000000, 0x000000000fffffff,
83430xfffffc0000000000, 0xffc0000000000000, 0x00000000000fffff, 0x2000000000000000,
83440x00000000003c0000, 0x000003ff00000000, 0x00000000fffeff00, 0xfffe0000000003ff,
83450x003f000000000000},
8346{1, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 4, 5, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
83472, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
83482, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
83492, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
83502, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
83512, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
83522, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
83532, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
83542, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2},
8355{1, 2, 3, 0, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
83560, 0, 0, 0, 0, 0, 6, 7, 8, 9, 0, 10, 11, 0, 12, 13, 14, 0, 15, 16, 0, 0, 0,
83570, 17, 0, 0, 0, 0, 0, 18, 0, 0, 19, 20, 0, 21, 0, 22, 0, 0, 0, 0, 0, 23, 0,
83580, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0,
83590, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0,
83600, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
83610, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
83620, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
83630, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
83640, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
83650, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0,
83660, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
83670, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
83680, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
83690, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
83700, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 34, 0,
837135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36},
8372{0x0000000000000000, 0x000fffffffffff80, 0x01e0000000000000, 0x0000000000000c00,
83730x0ffffffe00000000, 0x0000000f00000000, 0xfe000000ff000000, 0x0000ff8000000000,
83740xf800000000000000, 0x000000000fc00000, 0x3000000000000000, 0xfffffffffffcffff,
83750x60000000000001ff, 0x00000000e0000000, 0x0000f80000000000, 0xff000000ff000000,
83760x0000fe0000000000, 0xfc00000000000000, 0x7fffffff00000000, 0x0000007fe0000000,
83770x00000000001e0000, 0x0000000000000fe0, 0x0000003ffffc0000, 0x001ffffe00000000,
83780x0c00000000000000, 0x0007fc0000000000, 0x00001ffffc000000, 0x00000000001fffff,
83790x00000003f8000000, 0x00000000007fffff, 0x000fffff00000000, 0x01ffffff00000000,
83800x000000000000ff80, 0xfffe000000000000, 0x001eefffffffffff, 0x3fffbffffffffffe,
83810x0000000000001fff}};
8382 staticconstexpr flat_array<10> cat_pf{
8383{0x2E21, 0x2E1D, 0x2E03, 0x2E05, 0x2E0A, 0x2E0D, 0x2019, 0x203A, 0x00BB, 0x201D}};
8384 staticconstexpr range_array cat_lt = {
83850x00000000, 0x0001C501, 0x0001C600, 0x0001C801, 0x0001C900, 0x0001CB01, 0x0001CC00,
83860x0001F201, 0x0001F300, 0x001F8801, 0x001F9000, 0x001F9801, 0x001FA000, 0x001FA801,
83870x001FB000, 0x001FBC01, 0x001FBD00, 0x001FCC01, 0x001FCD00, 0x001FFC01, 0x001FFD00};
8388 staticconstexpr bool_trie<32, 991, 1, 0, 32, 255, 1, 0, 264, 30, 26, 8> cat_lm{
8389{0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
83900x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
83910x0000000000000000, 0x0000000000000000, 0xffff000000000000, 0x0000501f0003ffc3,
83920x0000000000000000, 0x0410000000000000, 0x0000000000000000, 0x0000000000000000,
83930x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
83940x0000000000000000, 0x0000000002000000, 0x0000000000000000, 0x0000000000000000,
83950x0000000000000000, 0x0000000000000001, 0x0000000000000000, 0x0000006000000000,
83960x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0430000000000000},
8397{1, 1, 2, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4,
83981, 4, 1, 1, 1, 1, 1, 1, 1, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
83991, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6, 1, 7, 1, 1, 1, 1, 1, 1, 1, 1, 8, 1,
84001, 1, 1, 1, 1, 9, 1, 1, 10, 11, 12, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13, 14, 1, 1,
84011, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
84021, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 15, 1, 1, 1, 16, 1,
84031, 16, 1, 1, 1, 1, 1, 1, 1, 17, 1, 18, 19, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
84041, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
84051, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
84061, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
84071, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
84081, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
84091, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
84101, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
84111, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
84121, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
84131, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
84141, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
84151, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
84161, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
84171, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
84181, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
84191, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
84201, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
84211, 1, 1, 1, 1, 1, 1, 20, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
84221, 9, 1, 1, 1, 1, 21, 22, 23, 1, 24, 25, 26, 27, 1, 1, 1, 1, 1, 1, 1, 28, 1, 25, 1,
842329, 1, 30, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
84241, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
84251, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
84261, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
84271, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
84281, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
84291, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
84301, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
84311, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
84321, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
84331, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
84341, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
84351, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
84361, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 25, 31, 1},
8437{0x0000011004000000, 0x0000000000000000, 0x0000000000000200, 0x0002000000000000,
84380x0000000000000040, 0x1000000000000000, 0x0000000000800000, 0x0000000000000008,
84390x0000008000000000, 0x3f00000000000000, 0xfffff00000000000, 0x010007ffffffffff,
84400xfffffffff8000000, 0x8002000000000000, 0x000000001fff0000, 0x3000000000000000,
84410x0000800000000000, 0x083e000000000020, 0x0000000060000000, 0x7000000000000000,
84420x0000000000200000, 0x0000000000001000, 0x8000000000000000, 0x0000000030000000,
84430x00000000ff800000, 0x0001000000000000, 0x0000000000000100, 0x031c000000000000,
84440x0000004000008000, 0x0018000020000000, 0x00000200f0000000, 0x00000000c0000000},
8445{1, 1, 1, 1, 1, 2, 1, 1, 1, 3, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
84461, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
84471, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
84481, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
84491, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
84501, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
84511, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
84521, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
84531, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
8454{1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
84550, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
84560, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
84570, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
84580, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0,
84590, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
84600, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
84610, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,
84620, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7},
8463{0x0000000000000000, 0x07fdffffffffffbf, 0x000000000000000f, 0x00000000fff80000,
84640x0000000b00000000, 0x6fef000000000000, 0x3f80000000000000, 0x0000000000000800}};
8465 staticconstexpr bool_trie<32, 991, 1, 0, 75, 255, 1, 0, 513, 7, 56, 66> cat_mn{
8466{0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
84670x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
84680x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
84690xffffffffffffffff, 0x0000ffffffffffff, 0x0000000000000000, 0x0000000000000000,
84700x0000000000000000, 0x0000000000000000, 0x00000000000000f8, 0x0000000000000000,
84710x0000000000000000, 0x0000000000000000, 0xbffffffffffe0000, 0x00000000000000b6,
84720x0000000007ff0000, 0x00010000fffff800, 0x0000000000000000, 0x00003d9f9fc00000,
84730xffff000000020000, 0x00000000000007ff, 0x0001ffc000000000, 0x200ff80000000000},
8474{1, 2, 3, 4, 5, 6, 7, 8, 9, 8, 10, 11, 12, 13, 14, 15, 16, 11, 17, 18, 19, 20, 21,
847522, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 34, 33,
847633, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 35, 36, 37, 38, 39, 33, 40, 33, 41, 33,
847733, 33, 42, 43, 44, 45, 46, 47, 48, 49, 50, 33, 33, 51, 33, 33, 33, 52, 33, 33, 33, 33, 33,
847833, 33, 33, 33, 33, 33, 53, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
847933, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
848033, 33, 33, 33, 33, 33, 33, 33, 54, 33, 55, 33, 56, 33, 33, 33, 33, 33, 33, 33, 33, 57, 33,
848158, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
848233, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
848333, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
848433, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
848533, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
848633, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
848733, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
848833, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
848933, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
849033, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
849133, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
849233, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
849333, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
849433, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
849533, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
849633, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
849733, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
849833, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
849933, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
850033, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
850133, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 59, 60, 61, 33, 33, 33, 33, 62, 33, 33, 63, 64,
850265, 66, 67, 68, 69, 70, 71, 33, 33, 33, 72, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
850333, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
850433, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
850533, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
850633, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
850733, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
850833, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
850933, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
851033, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
851133, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
851233, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
851333, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
851433, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
851533, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
851633, 33, 33, 33, 33, 73, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 74, 33, 33, 33, 33, 33,
8518{0x00003eeffbc00000, 0x000000000e000000, 0x00000000ff000000, 0xfffffffbfffffc00,
85190x1400000000000007, 0x0000000c00fe21fe, 0x1000000000000002, 0x4000000c0000201e,
85200x1000000000000006, 0x0023000000023986, 0xfc00000c000021be, 0x9000000000000002,
85210x0000000c0060201e, 0x0000000000000004, 0x0000000000002001, 0xd000000000000011,
85220x0000000c00603dc1, 0x0000000c00003040, 0x1800000000000003, 0x0000000c0000201e,
85230x0000000000000002, 0x00000000005c0400, 0x07f2000000000000, 0x0000000000007f80,
85240x1ff2000000000000, 0x0000000000003f00, 0x02a0000003000000, 0x7ffe000000000000,
85250x1ffffffffeffe0df, 0x0000000000000040, 0x66fde00000000000, 0x001e0001c3000000,
85260x0000000020002064, 0x0000000000000000, 0x00000000e0000000, 0x000c0000001c0000,
85270x000c0000000c0000, 0x3fb0000000000000, 0x00000000200ffe40, 0x000000000000b800,
85280x0000020000000060, 0x0e04018700000000, 0x0000000009800000, 0x9ff81fe57f400000,
85290xbfff000000000000, 0x0000000000007fff, 0x17d000000000000f, 0x000ff80000000004,
85300x00003b3c00000003, 0x0003a34000000000, 0x00cff00000000000, 0x031021fdfff70000,
85310xffffffffffffffff, 0x0001ffe21fff0000, 0x0003800000000000, 0x8000000000000000,
85320xffffffff00000000, 0x00003c0000000000, 0x0000000006000000, 0x3ff0800000000000,
85330x00000000c0000000, 0x0003000000000000, 0x0000106000000844, 0x8003ffff00000030,
85340x00003fc000000000, 0x000000000003ff80, 0x33c8000000000007, 0x0000002000000000,
85350x00667e0000000000, 0x1000000000001008, 0xc19d000000000000, 0x0040300000000002,
85360x0000212000000000, 0x0000000040000000, 0x0000ffff0000ffff},
8537{1, 2, 2, 2, 2, 3, 2, 2, 2, 2, 4, 5, 6, 7, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
85382, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
85392, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
85402, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
85412, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
85422, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
85432, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
85442, 2, 2, 2, 8, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
85452, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2},
8546{1, 0, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
85470, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 6,
85480, 0, 0, 0, 0, 7, 0, 0, 8, 9, 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 0, 0, 19,
854920, 21, 0, 0, 22, 23, 24, 25, 0, 0, 26, 27, 28, 29, 30, 0, 31, 0, 0, 0, 32, 0, 0,
85500, 33, 34, 0, 35, 36, 37, 38, 0, 0, 0, 0, 0, 39, 0, 40, 0, 41, 42, 43, 0, 0, 0,
85510, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
85520, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
85530, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
85540, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
85550, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 46,
85560, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 48, 49, 0, 0, 0, 0,
85570, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
85580, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
855950, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
85600, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
85610, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
85620, 0, 0, 0, 0, 51, 52, 0, 0, 0, 0, 0, 0, 0, 53, 54, 0, 0, 55, 0, 0, 0, 0,
85630, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
85640, 0, 0, 56, 57, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
85650, 0, 0, 0, 59, 0, 0, 0, 46, 0, 0, 0, 0, 0, 60, 61, 0, 0, 0, 0, 0, 0, 0,
85660, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 63, 0, 0, 0, 0,
85670, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
85680, 0, 0, 64, 64, 64, 65},
8569{0x0000000000000000, 0x2000000000000000, 0x0000000100000000, 0x07c0000000000000,
85700x870000000000f06e, 0x0000006000000000, 0x000000f000000000, 0x0000180000000000,
85710x000000000001ffc0, 0x000000000000003c, 0xff00000000000002, 0x801900000000007f,
85720x0678000000000003, 0x0000000000000004, 0x001fef8000000007, 0x0008000000000000,
85730x7fc0000000000003, 0x0000000000009e00, 0x40d3800000000000, 0x000007f880000000,
85740x1800000000000003, 0x001f1fc000000001, 0xff00000000000000, 0x000000004000005c,
85750x85f8000000000000, 0x000000000000000d, 0xb03c000000000000, 0x0000000030000001,
85760xa7f8000000000000, 0x0000000000000001, 0x00bf280000000000, 0x00000fbce0000000,
85770x06ff800000000000, 0x5800000000000000, 0x0000000000000008, 0x000000010cf00000,
85780x79f80000000007fe, 0x000000000e7e0080, 0x00000000037ffc00, 0xbf7f000000000000,
85790x006dfcfffffc0000, 0xb47e000000000000, 0x00000000000000bf, 0x0000000000a30000,
85800x0018000000000000, 0x001f000000000000, 0x007f000000000000, 0x0000000000008000,
85810x0000000000078000, 0x0000001000000000, 0x0000000060000000, 0xffff3fffffffffff,
85820x000000000000007f, 0xf800038000000000, 0x00003c0000000fe7, 0x000000000000001c,
85830xf87fffffffffffff, 0x00201fffffffffff, 0x0000fffef8000010, 0x000007dbf9ffff7f,
85840x0000400000000000, 0x0000f00000000000, 0x00000000007f0000, 0x00000000000007f0,
85850xffffffffffffffff, 0x0000ffffffffffff}};
8586 staticconstexpr range_array cat_me = {0x00000000, 0x00048801, 0x00048A00, 0x001ABE01,
85870x001ABF00, 0x0020DD01, 0x0020E100, 0x0020E201,
85880x0020E500, 0x00A67001, 0x00A67300};
8589 staticconstexpr bool_trie<0, 652, 4, 336, 43, 13, 1, 242, 134, 64, 58, 33> cat_mc{
8591{1, 2, 3, 4, 5, 6, 5, 7, 8, 4, 9, 10, 11, 12, 8, 13, 3, 14, 15, 16, 0, 0, 0,
85920, 9, 17, 0, 0, 18, 19, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
85930, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 22, 23, 0, 0, 0, 0, 24, 0, 0, 0, 25,
859426, 0, 0, 27, 28, 29, 30, 31, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
85950, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
85960, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
85970, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0,
85980, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
85990, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
86000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
86010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
86020, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
86030, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
86040, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
86050, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
86060, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
86070, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
86080, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
86090, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
86100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
86110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
86120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
86130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
86140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
86150, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
86160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
86170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
86180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 35, 36, 0, 37, 38, 6,
861939, 40, 0, 41, 0, 0, 0, 42},
8620{0x0000000000000000, 0xc800000000000008, 0x000000000000de01, 0xc00000000000000c,
86210x0000000000801981, 0xc000000000000008, 0x0000000000000001, 0x0000000000001a01,
86220x400000000000000c, 0xc000000000000000, 0x0000000000801dc6, 0x000000000000000e,
86230x000000000000001e, 0x0000000000600d9f, 0x0000000000801dc1, 0x000000000000000c,
86240x000c0000ff038000, 0x8000000000000000, 0x1902180000000000, 0x00003f9c00c00000,
86250x000000001c009f98, 0x0010000000200000, 0xc040000000000000, 0x00000000000001bf,
86260x01fb0e7800000000, 0x0000000006000000, 0x0007e01a00a00000, 0xe820000000000010,
86270x000000000000001b, 0x000004c200000004, 0x000c5c8000000000, 0x00300ff000000000,
86280x0080000200000000, 0x0000c00000000000, 0x0000009800000000, 0xfff0000000000003,
86290x000000000000000f, 0x00000000000c0000, 0xcc30000000000008, 0x0019800000000000,
86300x2800000000002000, 0x0020c80000000000, 0x000016d800000000},
8631{1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 3},
8632{1, 0, 2, 0, 3, 4, 5, 6, 7, 0, 0, 8, 9, 10, 0, 0, 11, 12, 13, 14, 0, 0, 15,
86330, 16, 0, 17, 0, 18, 0, 0, 0, 19, 0, 0, 0, 20, 1, 0, 21, 22, 23, 24, 0, 0, 0,
86340, 0, 25, 0, 26, 0, 0, 0, 27, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0,
86350, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
86360, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
86370, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 30, 31, 0, 0, 0, 0, 0, 32},
8638{0x0000000000000000, 0x0000000000000005, 0x0187000000000004, 0x0000100000000000,
86390x0000000000000060, 0x8038000000000004, 0x0000000000004001, 0x002c700000000000,
86400x0000000700000000, 0xc00000000000000c, 0x0000000c0080399e, 0x00e0000000000000,
86410x0000000000000023, 0x7a07000000000000, 0x0000000000000002, 0x4f03800000000000,
86420x5807000000000000, 0x0040d00000000000, 0x0000004300000000, 0x0100700000000000,
86430x21bf000000000000, 0x00000010f00e0000, 0x0200000000000000, 0x0000000001800000,
86440x0000000000800000, 0x4000800000000000, 0x0012020000000000, 0x0000000000587c00,
86450x0060000000000000, 0xfffffffffffe0000, 0x00000000000000ff, 0x0003000000000000,
86460x0007e06000000000}};
8647 staticconstexpr range_array cat_nl = {
86480x00000000, 0x0016EE01, 0x0016F100, 0x00216001, 0x00218300, 0x00218501, 0x00218900,
86490x00300701, 0x00300800, 0x00302101, 0x00302A00, 0x00303801, 0x00303B00, 0x00A6E601,
86500x00A6F000, 0x01014001, 0x01017500, 0x01034101, 0x01034200, 0x01034A01, 0x01034B00,
86510x0103D101, 0x0103D600, 0x01240001, 0x01246F00};
8652 staticconstexpr flat_array<1> cat_zl{{0x2028}};
8653 staticconstexpr flat_array<1> cat_zp{{0x2029}};
8654 staticconstexpr range_array cat_cs = {0x00000000, 0x00D80001, 0x00E00000};
8655 staticconstexpr range_array cat_co = {0x00000000, 0x00E00001, 0x00F90000, 0x0F000001,
86560x0FFFFE00, 0x10000001, 0x10FFFE00};
8657constexpr category get_category(char32_t c) {
8658 if(cat_co.lookup(c))
8659 returncategory::co;
8660 if(cat_lo.lookup(c))
8661 returncategory::lo;
8662 if(cat_so.lookup(c))
8663 returncategory::so;
8664 if(cat_ll.lookup(c))
8665 returncategory::ll;
8666 if(cat_cs.lookup(c))
8667 returncategory::cs;
8668 if(cat_mn.lookup(c))
8669 returncategory::mn;
8670 if(cat_lu.lookup(c))
8671 returncategory::lu;
8672 if(cat_sm.lookup(c))
8673 returncategory::sm;
8674 if(cat_no.lookup(c))
8675 returncategory::no;
8676 if(cat_nd.lookup(c))
8677 returncategory::nd;
8678 if(cat_po.lookup(c))
8679 returncategory::po;
8680 if(cat_mc.lookup(c))
8681 returncategory::mc;
8682 if(cat_lm.lookup(c))
8683 returncategory::lm;
8684 if(cat_nl.lookup(c))
8685 returncategory::nl;
8686 if(cat_cf.lookup(c))
8687 returncategory::cf;
8688 if(cat_sk.lookup(c))
8689 returncategory::sk;
8690 if(cat_ps.lookup(c))
8691 returncategory::ps;
8692 if(cat_pe.lookup(c))
8693 returncategory::pe;
8694 if(cat_cc.lookup(c))
8695 returncategory::cc;
8696 if(cat_sc.lookup(c))
8697 returncategory::sc;
8698 if(cat_lt.lookup(c))
8700 if(cat_pd.lookup(c))
8701 returncategory::pd;
8702 if(cat_zs.lookup(c))
8703 returncategory::zs;
8704 if(cat_me.lookup(c))
8705 returncategory::me;
8706 if(cat_pi.lookup(c))
8708 if(cat_pf.lookup(c))
8709 returncategory::pf;
8710 if(cat_pc.lookup(c))
8711 returncategory::pc;
8712 if(cat_zp.lookup(c))
8713 returncategory::zp;
8714 if(cat_zl.lookup(c))
8715 returncategory::zl;
8716 returncategory::cn;
8720constexpr
boolcp_category_is<category::co>(char32_t c) {
8721 returndetail::tables::cat_co.lookup(c);
8724constexpr
boolcp_category_is<category::lo>(char32_t c) {
8725 returndetail::tables::cat_lo.lookup(c);
8728constexpr
boolcp_category_is<category::so>(char32_t c) {
8729 returndetail::tables::cat_so.lookup(c);
8732constexpr
boolcp_category_is<category::ll>(char32_t c) {
8733 returndetail::tables::cat_ll.lookup(c);
8736constexpr
boolcp_category_is<category::cs>(char32_t c) {
8737 returndetail::tables::cat_cs.lookup(c);
8740constexpr
boolcp_category_is<category::mn>(char32_t c) {
8741 returndetail::tables::cat_mn.lookup(c);
8744constexpr
boolcp_category_is<category::lu>(char32_t c) {
8745 returndetail::tables::cat_lu.lookup(c);
8748constexpr
boolcp_category_is<category::sm>(char32_t c) {
8749 returndetail::tables::cat_sm.lookup(c);
8752constexpr
boolcp_category_is<category::no>(char32_t c) {
8753 returndetail::tables::cat_no.lookup(c);
8756constexpr
boolcp_category_is<category::nd>(char32_t c) {
8757 returndetail::tables::cat_nd.lookup(c);
8760constexpr
boolcp_category_is<category::po>(char32_t c) {
8761 returndetail::tables::cat_po.lookup(c);
8764constexpr
boolcp_category_is<category::mc>(char32_t c) {
8765 returndetail::tables::cat_mc.lookup(c);
8768constexpr
boolcp_category_is<category::lm>(char32_t c) {
8769 returndetail::tables::cat_lm.lookup(c);
8772constexpr
boolcp_category_is<category::nl>(char32_t c) {
8773 returndetail::tables::cat_nl.lookup(c);
8776constexpr
boolcp_category_is<category::cf>(char32_t c) {
8777 returndetail::tables::cat_cf.lookup(c);
8780constexpr
boolcp_category_is<category::sk>(char32_t c) {
8781 returndetail::tables::cat_sk.lookup(c);
8784constexpr
boolcp_category_is<category::ps>(char32_t c) {
8785 returndetail::tables::cat_ps.lookup(c);
8788constexpr
boolcp_category_is<category::pe>(char32_t c) {
8789 returndetail::tables::cat_pe.lookup(c);
8792constexpr
boolcp_category_is<category::cc>(char32_t c) {
8793 returndetail::tables::cat_cc.lookup(c);
8796constexpr
boolcp_category_is<category::sc>(char32_t c) {
8797 returndetail::tables::cat_sc.lookup(c);
8800constexpr
boolcp_category_is<category::lt>(char32_t c) {
8801 returndetail::tables::cat_lt.lookup(c);
8804constexpr
boolcp_category_is<category::pd>(char32_t c) {
8805 returndetail::tables::cat_pd.lookup(c);
8808constexpr
boolcp_category_is<category::zs>(char32_t c) {
8809 returndetail::tables::cat_zs.lookup(c);
8812constexpr
boolcp_category_is<category::me>(char32_t c) {
8813 returndetail::tables::cat_me.lookup(c);
8816constexpr
boolcp_category_is<category::pi>(char32_t c) {
8817 returndetail::tables::cat_pi.lookup(c);
8820constexpr
boolcp_category_is<category::pf>(char32_t c) {
8821 returndetail::tables::cat_pf.lookup(c);
8824constexpr
boolcp_category_is<category::pc>(char32_t c) {
8825 returndetail::tables::cat_pc.lookup(c);
8828constexpr
boolcp_category_is<category::zp>(char32_t c) {
8829 returndetail::tables::cat_zp.lookup(c);
8832constexpr
boolcp_category_is<category::zl>(char32_t c) {
8833 returndetail::tables::cat_zl.lookup(c);
8836constexpr
boolcp_category_is<category::cased_letter>(char32_t c) {
8837 if(detail::tables::cat_ll.
lookup(c))
8839 if(detail::tables::cat_lu.
lookup(c))
8841 if(detail::tables::cat_lt.
lookup(c))
8846constexpr
boolcp_category_is<category::letter>(char32_t c) {
8847 if(detail::tables::cat_lo.
lookup(c))
8849 if(detail::tables::cat_ll.
lookup(c))
8851 if(detail::tables::cat_lu.
lookup(c))
8853 if(detail::tables::cat_lm.
lookup(c))
8855 if(detail::tables::cat_lt.
lookup(c))
8860constexpr
boolcp_category_is<category::mark>(char32_t c) {
8861 if(detail::tables::cat_mn.
lookup(c))
8863 if(detail::tables::cat_mc.
lookup(c))
8865 if(detail::tables::cat_me.
lookup(c))
8870constexpr
boolcp_category_is<category::number>(char32_t c) {
8871 if(detail::tables::cat_no.
lookup(c))
8873 if(detail::tables::cat_nd.
lookup(c))
8875 if(detail::tables::cat_nl.
lookup(c))
8880constexpr
boolcp_category_is<category::punctuation>(char32_t c) {
8881 if(detail::tables::cat_po.
lookup(c))
8883 if(detail::tables::cat_ps.
lookup(c))
8885 if(detail::tables::cat_pe.
lookup(c))
8887 if(detail::tables::cat_pd.
lookup(c))
8889 if(detail::tables::cat_pi.
lookup(c))
8891 if(detail::tables::cat_pf.
lookup(c))
8893 if(detail::tables::cat_pc.
lookup(c))
8898constexpr
boolcp_category_is<category::symbol>(char32_t c) {
8899 if(detail::tables::cat_so.
lookup(c))
8901 if(detail::tables::cat_sm.
lookup(c))
8903 if(detail::tables::cat_sk.
lookup(c))
8905 if(detail::tables::cat_sc.
lookup(c))
8910constexpr
boolcp_category_is<category::separator>(char32_t c) {
8911 if(detail::tables::cat_zs.
lookup(c))
8913 if(detail::tables::cat_zp.
lookup(c))
8915 if(detail::tables::cat_zl.
lookup(c))
8920constexpr
boolcp_category_is<category::other>(char32_t c) {
8921 if(detail::tables::cat_co.
lookup(c))
8923 if(detail::tables::cat_cs.
lookup(c))
8925 if(detail::tables::cat_cf.
lookup(c))
8927 if(detail::tables::cat_cc.
lookup(c))
8932constexpr
boolcp_category_is<category::unassigned>(char32_t c) {
8933 returncp_category(c) == category::unassigned;
8935 namespacedetail::tables {
8936 staticconstexpr string_with_idx blocks_names[] = {
8937string_with_idx{
"adlam", 290},
8938string_with_idx{
"aegean_numbers", 167},
8939string_with_idx{
"ahom", 232},
8940string_with_idx{
"alchemical", 303},
8941string_with_idx{
"alchemical_symbols", 303},
8942string_with_idx{
"alphabetic_pf", 155},
8943string_with_idx{
"alphabetic_presentation_forms", 155},
8944string_with_idx{
"anatolian_hieroglyphs", 254},
8945string_with_idx{
"ancient_greek_music", 277},
8946string_with_idx{
"ancient_greek_musical_notation", 277},
8947string_with_idx{
"ancient_greek_numbers", 168},
8948string_with_idx{
"ancient_symbols", 169},
8949string_with_idx{
"arabic", 13},
8950string_with_idx{
"arabic_ext_a", 22},
8951string_with_idx{
"arabic_ext_b", 21},
8952string_with_idx{
"arabic_extended_a", 22},
8953string_with_idx{
"arabic_extended_b", 21},
8954string_with_idx{
"arabic_math", 293},
8955string_with_idx{
"arabic_mathematical_alphabetic_symbols", 293},
8956string_with_idx{
"arabic_pf_a", 156},
8957string_with_idx{
"arabic_pf_b", 162},
8958string_with_idx{
"arabic_presentation_forms_a", 156},
8959string_with_idx{
"arabic_presentation_forms_b", 162},
8960string_with_idx{
"arabic_sup", 15},
8961string_with_idx{
"arabic_supplement", 15},
8962string_with_idx{
"armenian", 11},
8963string_with_idx{
"arrows", 79},
8964string_with_idx{
"ascii", 1},
8965string_with_idx{
"avestan", 201},
8966string_with_idx{
"balinese", 59},
8967string_with_idx{
"bamum", 127},
8968string_with_idx{
"bamum_sup", 255},
8969string_with_idx{
"bamum_supplement", 255},
8970string_with_idx{
"basic_latin", 1},
8971string_with_idx{
"bassa_vah", 258},
8972string_with_idx{
"batak", 61},
8973string_with_idx{
"bengali", 24},
8974string_with_idx{
"bhaiksuki", 241},
8975string_with_idx{
"block_elements", 86},
8976string_with_idx{
"bopomofo", 111},
8977string_with_idx{
"bopomofo_ext", 114},
8978string_with_idx{
"bopomofo_extended", 114},
8979string_with_idx{
"box_drawing", 85},
8980string_with_idx{
"brahmi", 215},
8981string_with_idx{
"braille", 92},
8982string_with_idx{
"braille_patterns", 92},
8983string_with_idx{
"buginese", 56},
8984string_with_idx{
"buhid", 47},
8985string_with_idx{
"byzantine_music", 275},
8986string_with_idx{
"byzantine_musical_symbols", 275},
8987string_with_idx{
"carian", 172},
8988string_with_idx{
"caucasian_albanian", 184},
8989string_with_idx{
"chakma", 218},
8990string_with_idx{
"cham", 140},
8991string_with_idx{
"cherokee", 41},
8992string_with_idx{
"cherokee_sup", 146},
8993string_with_idx{
"cherokee_supplement", 146},
8994string_with_idx{
"chess_symbols", 307},
8995string_with_idx{
"chorasmian", 213},
8996string_with_idx{
"cjk", 121},
8997string_with_idx{
"cjk_compat", 118},
8998string_with_idx{
"cjk_compat_forms", 160},
8999string_with_idx{
"cjk_compat_ideographs", 154},
9000string_with_idx{
"cjk_compat_ideographs_sup", 315},
9001string_with_idx{
"cjk_compatibility", 118},
9002string_with_idx{
"cjk_compatibility_forms", 160},
9003string_with_idx{
"cjk_compatibility_ideographs", 154},
9004string_with_idx{
"cjk_compatibility_ideographs_supplement", 315},
9005string_with_idx{
"cjk_ext_a", 119},
9006string_with_idx{
"cjk_ext_b", 310},
9007string_with_idx{
"cjk_ext_c", 311},
9008string_with_idx{
"cjk_ext_d", 312},
9009string_with_idx{
"cjk_ext_e", 313},
9010string_with_idx{
"cjk_ext_f", 314},
9011string_with_idx{
"cjk_ext_g", 316},
9012string_with_idx{
"cjk_radicals_sup", 105},
9013string_with_idx{
"cjk_radicals_supplement", 105},
9014string_with_idx{
"cjk_strokes", 115},
9015string_with_idx{
"cjk_symbols", 108},
9016string_with_idx{
"cjk_symbols_and_punctuation", 108},
9017string_with_idx{
"cjk_unified_ideographs", 121},
9018string_with_idx{
"cjk_unified_ideographs_extension_a", 119},
9019string_with_idx{
"cjk_unified_ideographs_extension_b", 310},
9020string_with_idx{
"cjk_unified_ideographs_extension_c", 311},
9021string_with_idx{
"cjk_unified_ideographs_extension_d", 312},
9022string_with_idx{
"cjk_unified_ideographs_extension_e", 313},
9023string_with_idx{
"cjk_unified_ideographs_extension_f", 314},
9024string_with_idx{
"cjk_unified_ideographs_extension_g", 316},
9025string_with_idx{
"combining_diacritical_marks", 7},
9026string_with_idx{
"combining_diacritical_marks_extended", 58},
9027string_with_idx{
"combining_diacritical_marks_for_symbols", 76},
9028string_with_idx{
"combining_diacritical_marks_supplement", 70},
9029string_with_idx{
"combining_half_marks", 159},
9030string_with_idx{
"common_indic_number_forms", 131},
9031string_with_idx{
"compat_jamo", 112},
9032string_with_idx{
"control_pictures", 82},
9033string_with_idx{
"coptic", 99},
9034string_with_idx{
"coptic_epact_numbers", 173},
9035string_with_idx{
"counting_rod", 280},
9036string_with_idx{
"counting_rod_numerals", 280},
9037string_with_idx{
"cuneiform", 248},
9038string_with_idx{
"cuneiform_numbers", 249},
9039string_with_idx{
"cuneiform_numbers_and_punctuation", 249},
9040string_with_idx{
"currency_symbols", 75},
9041string_with_idx{
"cypriot_syllabary", 188},
9042string_with_idx{
"cypro_minoan", 251},
9043string_with_idx{
"cyrillic", 9},
9044string_with_idx{
"cyrillic_ext_a", 103},
9045string_with_idx{
"cyrillic_ext_b", 126},
9046string_with_idx{
"cyrillic_ext_c", 64},
9047string_with_idx{
"cyrillic_extended_a", 103},
9048string_with_idx{
"cyrillic_extended_b", 126},
9049string_with_idx{
"cyrillic_extended_c", 64},
9050string_with_idx{
"cyrillic_sup", 10},
9051string_with_idx{
"cyrillic_supplement", 10},
9052string_with_idx{
"deseret", 179},
9053string_with_idx{
"devanagari", 23},
9054string_with_idx{
"devanagari_ext", 134},
9055string_with_idx{
"devanagari_extended", 134},
9056string_with_idx{
"diacriticals", 7},
9057string_with_idx{
"diacriticals_ext", 58},
9058string_with_idx{
"diacriticals_for_symbols", 76},
9059string_with_idx{
"diacriticals_sup", 70},
9060string_with_idx{
"dingbats", 89},
9061string_with_idx{
"dives_akuru", 235},
9062string_with_idx{
"dogra", 233},
9063string_with_idx{
"domino", 295},
9064string_with_idx{
"domino_tiles", 295},
9065string_with_idx{
"duployan", 272},
9066string_with_idx{
"early_dynastic_cuneiform", 250},
9067string_with_idx{
"egyptian_hieroglyph_format_controls", 253},
9068string_with_idx{
"egyptian_hieroglyphs", 252},
9069string_with_idx{
"elbasan", 183},
9070string_with_idx{
"elymaic", 214},
9071string_with_idx{
"emoticons", 300},
9072string_with_idx{
"enclosed_alphanum", 84},
9073string_with_idx{
"enclosed_alphanum_sup", 297},
9074string_with_idx{
"enclosed_alphanumeric_supplement", 297},
9075string_with_idx{
"enclosed_alphanumerics", 84},
9076string_with_idx{
"enclosed_cjk", 117},
9077string_with_idx{
"enclosed_cjk_letters_and_months", 117},
9078string_with_idx{
"enclosed_ideographic_sup", 298},
9079string_with_idx{
"enclosed_ideographic_supplement", 298},
9080string_with_idx{
"ethiopic", 39},
9081string_with_idx{
"ethiopic_ext", 102},
9082string_with_idx{
"ethiopic_ext_a", 144},
9083string_with_idx{
"ethiopic_ext_b", 288},
9084string_with_idx{
"ethiopic_extended", 102},
9085string_with_idx{
"ethiopic_extended_a", 144},
9086string_with_idx{
"ethiopic_extended_b", 288},
9087string_with_idx{
"ethiopic_sup", 40},
9088string_with_idx{
"ethiopic_supplement", 40},
9089string_with_idx{
"general_punctuation", 73},
9090string_with_idx{
"geometric_shapes", 87},
9091string_with_idx{
"geometric_shapes_ext", 304},
9092string_with_idx{
"geometric_shapes_extended", 304},
9093string_with_idx{
"georgian", 37},
9094string_with_idx{
"georgian_ext", 65},
9095string_with_idx{
"georgian_extended", 65},
9096string_with_idx{
"georgian_sup", 100},
9097string_with_idx{
"georgian_supplement", 100},
9098string_with_idx{
"glagolitic", 97},
9099string_with_idx{
"glagolitic_sup", 284},
9100string_with_idx{
"glagolitic_supplement", 284},
9101string_with_idx{
"gothic", 175},
9102string_with_idx{
"grantha", 225},
9103string_with_idx{
"greek", 8},
9104string_with_idx{
"greek_and_coptic", 8},
9105string_with_idx{
"greek_ext", 72},
9106string_with_idx{
"greek_extended", 72},
9107string_with_idx{
"gujarati", 26},
9108string_with_idx{
"gunjala_gondi", 244},
9109string_with_idx{
"gurmukhi", 25},
9110string_with_idx{
"half_and_full_forms", 163},
9111string_with_idx{
"half_marks", 159},
9112string_with_idx{
"halfwidth_and_fullwidth_forms", 163},
9113string_with_idx{
"hangul", 148},
9114string_with_idx{
"hangul_compatibility_jamo", 112},
9115string_with_idx{
"hangul_jamo", 38},
9116string_with_idx{
"hangul_jamo_extended_a", 137},
9117string_with_idx{
"hangul_jamo_extended_b", 149},
9118string_with_idx{
"hangul_syllables", 148},
9119string_with_idx{
"hanifi_rohingya", 207},
9120string_with_idx{
"hanunoo", 46},
9121string_with_idx{
"hatran", 192},
9122string_with_idx{
"hebrew", 12},
9123string_with_idx{
"high_private_use_surrogates", 151},
9124string_with_idx{
"high_pu_surrogates", 151},
9125string_with_idx{
"high_surrogates", 150},
9126string_with_idx{
"hiragana", 109},
9127string_with_idx{
"idc", 107},
9128string_with_idx{
"ideographic_description_characters", 107},
9129string_with_idx{
"ideographic_symbols", 262},
9130string_with_idx{
"ideographic_symbols_and_punctuation", 262},
9131string_with_idx{
"imperial_aramaic", 189},
9132string_with_idx{
"indic_number_forms", 131},
9133string_with_idx{
"indic_siyaq_numbers", 291},
9134string_with_idx{
"inscriptional_pahlavi", 203},
9135string_with_idx{
"inscriptional_parthian", 202},
9136string_with_idx{
"ipa_ext", 5},
9137string_with_idx{
"ipa_extensions", 5},
9138string_with_idx{
"jamo", 38},
9139string_with_idx{
"jamo_ext_a", 137},
9140string_with_idx{
"jamo_ext_b", 149},
9141string_with_idx{
"javanese", 138},
9142string_with_idx{
"kaithi", 216},
9143string_with_idx{
"kana_ext_a", 269},
9144string_with_idx{
"kana_ext_b", 267},
9145string_with_idx{
"kana_extended_a", 269},
9146string_with_idx{
"kana_extended_b", 267},
9147string_with_idx{
"kana_sup", 268},
9148string_with_idx{
"kana_supplement", 268},
9149string_with_idx{
"kanbun", 113},
9150string_with_idx{
"kangxi", 106},
9151string_with_idx{
"kangxi_radicals", 106},
9152string_with_idx{
"kannada", 30},
9153string_with_idx{
"katakana", 110},
9154string_with_idx{
"katakana_ext", 116},
9155string_with_idx{
"katakana_phonetic_extensions", 116},
9156string_with_idx{
"kayah_li", 135},
9157string_with_idx{
"kharoshthi", 197},
9158string_with_idx{
"khitan_small_script", 265},
9159string_with_idx{
"khmer", 49},
9160string_with_idx{
"khmer_symbols", 55},
9161string_with_idx{
"khojki", 222},
9162string_with_idx{
"khudawadi", 224},
9163string_with_idx{
"lao", 34},
9164string_with_idx{
"latin_1_sup", 2},
9165string_with_idx{
"latin_1_supplement", 2},
9166string_with_idx{
"latin_ext_a", 3},
9167string_with_idx{
"latin_ext_additional", 71},
9168string_with_idx{
"latin_ext_b", 4},
9169string_with_idx{
"latin_ext_c", 98},
9170string_with_idx{
"latin_ext_d", 129},
9171string_with_idx{
"latin_ext_e", 145},
9172string_with_idx{
"latin_ext_f", 187},
9173string_with_idx{
"latin_ext_g", 283},
9174string_with_idx{
"latin_extended_a", 3},
9175string_with_idx{
"latin_extended_additional", 71},
9176string_with_idx{
"latin_extended_b", 4},
9177string_with_idx{
"latin_extended_c", 98},
9178string_with_idx{
"latin_extended_d", 129},
9179string_with_idx{
"latin_extended_e", 145},
9180string_with_idx{
"latin_extended_f", 187},
9181string_with_idx{
"latin_extended_g", 283},
9182string_with_idx{
"lepcha", 62},
9183string_with_idx{
"letterlike_symbols", 77},
9184string_with_idx{
"limbu", 52},
9185string_with_idx{
"linear_a", 186},
9186string_with_idx{
"linear_b_ideograms", 166},
9187string_with_idx{
"linear_b_syllabary", 165},
9188string_with_idx{
"lisu", 124},
9189string_with_idx{
"lisu_sup", 246},
9190string_with_idx{
"lisu_supplement", 246},
9191string_with_idx{
"low_surrogates", 152},
9192string_with_idx{
"lycian", 171},
9193string_with_idx{
"lydian", 194},
9194string_with_idx{
"mahajani", 219},
9195string_with_idx{
"mahjong", 294},
9196string_with_idx{
"mahjong_tiles", 294},
9197string_with_idx{
"makasar", 245},
9198string_with_idx{
"malayalam", 31},
9199string_with_idx{
"mandaic", 19},
9200string_with_idx{
"manichaean", 200},
9201string_with_idx{
"marchen", 242},
9202string_with_idx{
"masaram_gondi", 243},
9203string_with_idx{
"math_alphanum", 281},
9204string_with_idx{
"math_operators", 80},
9205string_with_idx{
"mathematical_alphanumeric_symbols", 281},
9206string_with_idx{
"mathematical_operators", 80},
9207string_with_idx{
"mayan_numerals", 278},
9208string_with_idx{
"medefaidrin", 260},
9209string_with_idx{
"meetei_mayek", 147},
9210string_with_idx{
"meetei_mayek_ext", 143},
9211string_with_idx{
"meetei_mayek_extensions", 143},
9212string_with_idx{
"mende_kikakui", 289},
9213string_with_idx{
"meroitic_cursive", 196},
9214string_with_idx{
"meroitic_hieroglyphs", 195},
9215string_with_idx{
"miao", 261},
9216string_with_idx{
"misc_arrows", 96},
9217string_with_idx{
"misc_math_symbols_a", 90},
9218string_with_idx{
"misc_math_symbols_b", 94},
9219string_with_idx{
"misc_pictographs", 299},
9220string_with_idx{
"misc_symbols", 88},
9221string_with_idx{
"misc_technical", 81},
9222string_with_idx{
"miscellaneous_mathematical_symbols_a", 90},
9223string_with_idx{
"miscellaneous_mathematical_symbols_b", 94},
9224string_with_idx{
"miscellaneous_symbols", 88},
9225string_with_idx{
"miscellaneous_symbols_and_arrows", 96},
9226string_with_idx{
"miscellaneous_symbols_and_pictographs", 299},
9227string_with_idx{
"miscellaneous_technical", 81},
9228string_with_idx{
"modi", 229},
9229string_with_idx{
"modifier_letters", 6},
9230string_with_idx{
"modifier_tone_letters", 128},
9231string_with_idx{
"mongolian", 50},
9232string_with_idx{
"mongolian_sup", 230},
9233string_with_idx{
"mongolian_supplement", 230},
9234string_with_idx{
"mro", 256},
9235string_with_idx{
"multani", 223},
9236string_with_idx{
"music", 276},
9237string_with_idx{
"musical_symbols", 276},
9238string_with_idx{
"myanmar", 36},
9239string_with_idx{
"myanmar_ext_a", 141},
9240string_with_idx{
"myanmar_ext_b", 139},
9241string_with_idx{
"myanmar_extended_a", 141},
9242string_with_idx{
"myanmar_extended_b", 139},
9243string_with_idx{
"nabataean", 191},
9244string_with_idx{
"nandinagari", 236},
9245string_with_idx{
"nb", 0},
9246string_with_idx{
"new_tai_lue", 54},
9247string_with_idx{
"newa", 226},
9248string_with_idx{
"nko", 17},
9249string_with_idx{
"no_block", 0},
9250string_with_idx{
"number_forms", 78},
9251string_with_idx{
"nushu", 271},
9252string_with_idx{
"nyiakeng_puachue_hmong", 285},
9253string_with_idx{
"ocr", 83},
9254string_with_idx{
"ogham", 43},
9255string_with_idx{
"ol_chiki", 63},
9256string_with_idx{
"old_hungarian", 206},
9257string_with_idx{
"old_italic", 174},
9258string_with_idx{
"old_north_arabian", 199},
9259string_with_idx{
"old_permic", 176},
9260string_with_idx{
"old_persian", 178},
9261string_with_idx{
"old_sogdian", 210},
9262string_with_idx{
"old_south_arabian", 198},
9263string_with_idx{
"old_turkic", 205},
9264string_with_idx{
"old_uyghur", 212},
9265string_with_idx{
"optical_character_recognition", 83},
9266string_with_idx{
"oriya", 27},
9267string_with_idx{
"ornamental_dingbats", 301},
9268string_with_idx{
"osage", 182},
9269string_with_idx{
"osmanya", 181},
9270string_with_idx{
"ottoman_siyaq_numbers", 292},
9271string_with_idx{
"pahawh_hmong", 259},
9272string_with_idx{
"palmyrene", 190},
9273string_with_idx{
"pau_cin_hau", 240},
9274string_with_idx{
"phags_pa", 132},
9275string_with_idx{
"phaistos", 170},
9276string_with_idx{
"phaistos_disc", 170},
9277string_with_idx{
"phoenician", 193},
9278string_with_idx{
"phonetic_ext", 68},
9279string_with_idx{
"phonetic_ext_sup", 69},
9280string_with_idx{
"phonetic_extensions", 68},
9281string_with_idx{
"phonetic_extensions_supplement", 69},
9282string_with_idx{
"playing_cards", 296},
9283string_with_idx{
"private_use_area", 153},
9284string_with_idx{
"psalter_pahlavi", 204},
9285string_with_idx{
"pua", 153},
9286string_with_idx{
"punctuation", 73},
9287string_with_idx{
"rejang", 136},
9288string_with_idx{
"rumi", 208},
9289string_with_idx{
"rumi_numeral_symbols", 208},
9290string_with_idx{
"runic", 44},
9291string_with_idx{
"samaritan", 18},
9292string_with_idx{
"saurashtra", 133},
9293string_with_idx{
"sharada", 220},
9294string_with_idx{
"shavian", 180},
9295string_with_idx{
"shorthand_format_controls", 273},
9296string_with_idx{
"siddham", 228},
9297string_with_idx{
"sinhala", 32},
9298string_with_idx{
"sinhala_archaic_numbers", 221},
9299string_with_idx{
"small_form_variants", 161},
9300string_with_idx{
"small_forms", 161},
9301string_with_idx{
"small_kana_ext", 270},
9302string_with_idx{
"small_kana_extension", 270},
9303string_with_idx{
"sogdian", 211},
9304string_with_idx{
"sora_sompeng", 217},
9305string_with_idx{
"soyombo", 238},
9306string_with_idx{
"spacing_modifier_letters", 6},
9307string_with_idx{
"specials", 164},
9308string_with_idx{
"sundanese", 60},
9309string_with_idx{
"sundanese_sup", 66},
9310string_with_idx{
"sundanese_supplement", 66},
9311string_with_idx{
"sup_arrows_a", 91},
9312string_with_idx{
"sup_arrows_b", 93},
9313string_with_idx{
"sup_arrows_c", 305},
9314string_with_idx{
"sup_math_operators", 95},
9315string_with_idx{
"sup_pua_a", 319},
9316string_with_idx{
"sup_pua_b", 320},
9317string_with_idx{
"sup_punctuation", 104},
9318string_with_idx{
"sup_symbols_and_pictographs", 306},
9319string_with_idx{
"super_and_sub", 74},
9320string_with_idx{
"superscripts_and_subscripts", 74},
9321string_with_idx{
"supplemental_arrows_a", 91},
9322string_with_idx{
"supplemental_arrows_b", 93},
9323string_with_idx{
"supplemental_arrows_c", 305},
9324string_with_idx{
"supplemental_mathematical_operators", 95},
9325string_with_idx{
"supplemental_punctuation", 104},
9326string_with_idx{
"supplemental_symbols_and_pictographs", 306},
9327string_with_idx{
"supplementary_private_use_area_a", 319},
9328string_with_idx{
"supplementary_private_use_area_b", 320},
9329string_with_idx{
"sutton_signwriting", 282},
9330string_with_idx{
"syloti_nagri", 130},
9331string_with_idx{
"symbols_and_pictographs_ext_a", 308},
9332string_with_idx{
"symbols_and_pictographs_extended_a", 308},
9333string_with_idx{
"symbols_for_legacy_computing", 309},
9334string_with_idx{
"syriac", 14},
9335string_with_idx{
"syriac_sup", 20},
9336string_with_idx{
"syriac_supplement", 20},
9337string_with_idx{
"tagalog", 45},
9338string_with_idx{
"tagbanwa", 48},
9339string_with_idx{
"tags", 317},
9340string_with_idx{
"tai_le", 53},
9341string_with_idx{
"tai_tham", 57},
9342string_with_idx{
"tai_viet", 142},
9343string_with_idx{
"tai_xuan_jing", 279},
9344string_with_idx{
"tai_xuan_jing_symbols", 279},
9345string_with_idx{
"takri", 231},
9346string_with_idx{
"tamil", 28},
9347string_with_idx{
"tamil_sup", 247},
9348string_with_idx{
"tamil_supplement", 247},
9349string_with_idx{
"tangsa", 257},
9350string_with_idx{
"tangut", 263},
9351string_with_idx{
"tangut_components", 264},
9352string_with_idx{
"tangut_sup", 266},
9353string_with_idx{
"tangut_supplement", 266},
9354string_with_idx{
"telugu", 29},
9355string_with_idx{
"thaana", 16},
9356string_with_idx{
"thai", 33},
9357string_with_idx{
"tibetan", 35},
9358string_with_idx{
"tifinagh", 101},
9359string_with_idx{
"tirhuta", 227},
9360string_with_idx{
"toto", 286},
9361string_with_idx{
"transport_and_map", 302},
9362string_with_idx{
"transport_and_map_symbols", 302},
9363string_with_idx{
"ucas", 42},
9364string_with_idx{
"ucas_ext", 51},
9365string_with_idx{
"ucas_ext_a", 239},
9366string_with_idx{
"ugaritic", 177},
9367string_with_idx{
"unified_canadian_aboriginal_syllabics", 42},
9368string_with_idx{
"unified_canadian_aboriginal_syllabics_extended", 51},
9369string_with_idx{
"unified_canadian_aboriginal_syllabics_extended_a", 239},
9370string_with_idx{
"vai", 125},
9371string_with_idx{
"variation_selectors", 157},
9372string_with_idx{
"variation_selectors_supplement", 318},
9373string_with_idx{
"vedic_ext", 67},
9374string_with_idx{
"vedic_extensions", 67},
9375string_with_idx{
"vertical_forms", 158},
9376string_with_idx{
"vithkuqi", 185},
9377string_with_idx{
"vs", 157},
9378string_with_idx{
"vs_sup", 318},
9379string_with_idx{
"wancho", 287},
9380string_with_idx{
"warang_citi", 234},
9381string_with_idx{
"yezidi", 209},
9382string_with_idx{
"yi_radicals", 123},
9383string_with_idx{
"yi_syllables", 122},
9384string_with_idx{
"yijing", 120},
9385string_with_idx{
"yijing_hexagram_symbols", 120},
9386string_with_idx{
"zanabazar_square", 237},
9387string_with_idx{
"znamenny_music", 274},
9388string_with_idx{
"znamenny_musical_notation", 274}};
9389 staticconstexpr
constcompact_range block_data = {
93900x00000001, 0x00008001, 0x00010001, 0x00018001, 0x00025001, 0x0002B001, 0x00030001,
93910x00037001, 0x00040001, 0x00050001, 0x00053001, 0x00059001, 0x00060001, 0x00070001,
93920x00075001, 0x00078001, 0x0007C001, 0x00080001, 0x00084001, 0x00086001, 0x00087001,
93930x0008A001, 0x00090001, 0x00098001, 0x000A0001, 0x000A8001, 0x000B0001, 0x000B8001,
93940x000C0001, 0x000C8001, 0x000D0001, 0x000D8001, 0x000E0001, 0x000E8001, 0x000F0001,
93950x00100001, 0x0010A001, 0x00110001, 0x00120001, 0x00138001, 0x0013A001, 0x00140001,
93960x00168001, 0x0016A001, 0x00170001, 0x00172001, 0x00174001, 0x00176001, 0x00178001,
93970x00180001, 0x0018B001, 0x00190001, 0x00195001, 0x00198001, 0x0019E001, 0x001A0001,
93980x001A2001, 0x001AB001, 0x001B0001, 0x001B8001, 0x001BC001, 0x001C0001, 0x001C5001,
93990x001C8001, 0x001C9001, 0x001CC001, 0x001CD001, 0x001D0001, 0x001D8001, 0x001DC001,
94000x001E0001, 0x001F0001, 0x00200001, 0x00207001, 0x0020A001, 0x0020D001, 0x00210001,
94010x00215001, 0x00219001, 0x00220001, 0x00230001, 0x00240001, 0x00244001, 0x00246001,
94020x00250001, 0x00258001, 0x0025A001, 0x00260001, 0x00270001, 0x0027C001, 0x0027F001,
94030x00280001, 0x00290001, 0x00298001, 0x002A0001, 0x002B0001, 0x002C0001, 0x002C6001,
94040x002C8001, 0x002D0001, 0x002D3001, 0x002D8001, 0x002DE001, 0x002E0001, 0x002E8001,
94050x002F0001, 0x002FE000, 0x002FF002, 0x00300002, 0x00304002, 0x0030A002, 0x00310002,
94060x00313002, 0x00319002, 0x0031A002, 0x0031C002, 0x0031F002, 0x00320002, 0x00330002,
94070x00340002, 0x004DC002, 0x004E0002, 0x00A00002, 0x00A49002, 0x00A4D002, 0x00A50002,
94080x00A64002, 0x00A6A002, 0x00A70002, 0x00A72002, 0x00A80002, 0x00A83002, 0x00A84002,
94090x00A88002, 0x00A8E002, 0x00A90002, 0x00A93002, 0x00A96002, 0x00A98002, 0x00A9E002,
94100x00AA0002, 0x00AA6002, 0x00AA8002, 0x00AAE002, 0x00AB0002, 0x00AB3002, 0x00AB7002,
94110x00ABC002, 0x00AC0002, 0x00D7B002, 0x00D80002, 0x00DB8002, 0x00DC0002, 0x00E00002,
94120x00F90002, 0x00FB0002, 0x00FB5002, 0x00FE0002, 0x00FE1002, 0x00FE2002, 0x00FE3002,
94130x00FE5002, 0x00FE7002, 0x00FF0002, 0x00FFF002, 0x01000002, 0x01008002, 0x01010002,
94140x01014002, 0x01019002, 0x0101D002, 0x01020000, 0x01028003, 0x0102A003, 0x0102E003,
94150x01030003, 0x01033003, 0x01035003, 0x01038003, 0x0103A003, 0x0103E000, 0x01040004,
94160x01045004, 0x01048004, 0x0104B004, 0x01050004, 0x01053004, 0x01057004, 0x0105C000,
94170x01060005, 0x01078005, 0x0107C000, 0x01080006, 0x01084006, 0x01086006, 0x01088006,
94180x0108B000, 0x0108E007, 0x01090007, 0x01092007, 0x01094000, 0x01098008, 0x0109A008,
94190x010A0008, 0x010A6008, 0x010A8008, 0x010AA000, 0x010AC009, 0x010B0009, 0x010B4009,
94200x010B6009, 0x010B8009, 0x010BB000, 0x010C000A, 0x010C5000, 0x010C800B, 0x010D000B,
94210x010D4000, 0x010E600C, 0x010E800C, 0x010EC000, 0x010F000D, 0x010F300D, 0x010F700D,
94220x010FB00D, 0x010FE00D, 0x0110000D, 0x0110800D, 0x0110D00D, 0x0111000D, 0x0111500D,
94230x0111800D, 0x0111E00D, 0x0112000D, 0x01125000, 0x0112800E, 0x0112B00E, 0x0113000E,
94240x01138000, 0x0114000F, 0x0114800F, 0x0114E000, 0x01158010, 0x01160010, 0x01166010,
94250x01168010, 0x0116D000, 0x01170011, 0x01175000, 0x01180012, 0x01185000, 0x0118A013,
94260x01190013, 0x01196000, 0x0119A014, 0x011A0014, 0x011A5014, 0x011AB014, 0x011AC014,
94270x011B0000, 0x011C0015, 0x011C7015, 0x011CC000, 0x011D0016, 0x011D6016, 0x011DB000,
94280x011EE017, 0x011F0000, 0x011FB018, 0x011FC018, 0x01200018, 0x01240018, 0x01248018,
94290x01255000, 0x012F9019, 0x01300019, 0x01343019, 0x01344000, 0x0144001A, 0x01468000,
94300x0168001B, 0x016A401B, 0x016A701B, 0x016AD01B, 0x016B001B, 0x016B9000, 0x016E401C,
94310x016EA000, 0x016F001D, 0x016FA000, 0x016FE01E, 0x0170001E, 0x0188001E, 0x018B001E,
94320x018D001E, 0x018D8000, 0x01AFF01F, 0x01B0001F, 0x01B1001F, 0x01B1301F, 0x01B1701F,
94330x01B30000, 0x01BC0020, 0x01BCA020, 0x01BCB000, 0x01CF0021, 0x01CFD000, 0x01D00022,
94340x01D10022, 0x01D20022, 0x01D25000, 0x01D2E023, 0x01D30023, 0x01D36023, 0x01D38000,
94350x01D40024, 0x01D80024, 0x01DAB000, 0x01DF0025, 0x01E00025, 0x01E03000, 0x01E10026,
94360x01E15000, 0x01E29027, 0x01E2C027, 0x01E30000, 0x01E7E028, 0x01E80028, 0x01E8E000,
94370x01E90029, 0x01E96000, 0x01EC702A, 0x01ECC000, 0x01ED002B, 0x01ED5000, 0x01EE002C,
94380x01EF0000, 0x01F0002D, 0x01F0302D, 0x01F0A02D, 0x01F1002D, 0x01F2002D, 0x01F3002D,
94390x01F6002D, 0x01F6502D, 0x01F6802D, 0x01F7002D, 0x01F7802D, 0x01F8002D, 0x01F9002D,
94400x01FA002D, 0x01FA702D, 0x01FB002D, 0x01FC0000, 0x0200002E, 0x02A6E000, 0x02A7002F,
94410x02B7402F, 0x02B8202F, 0x02CEB02F, 0x02EBF000, 0x02F80030, 0x02FA2000, 0x03000031,
94420x03135000, 0x0E000032, 0x0E008000, 0x0E010033, 0x0E01F000, 0x0F000034, 0x10000034,
9444 staticconstexpr string_with_idx scripts_names[] = {
9445string_with_idx{
"adlam", 0},
9446string_with_idx{
"adlm", 0},
9447string_with_idx{
"aghb", 1},
9448string_with_idx{
"ahom", 2},
9449string_with_idx{
"anatolian_hieroglyphs", 52},
9450string_with_idx{
"arab", 3},
9451string_with_idx{
"arabic", 3},
9452string_with_idx{
"armenian", 5},
9453string_with_idx{
"armi", 4},
9454string_with_idx{
"armn", 5},
9455string_with_idx{
"avestan", 6},
9456string_with_idx{
"avst", 6},
9457string_with_idx{
"bali", 7},
9458string_with_idx{
"balinese", 7},
9459string_with_idx{
"bamu", 8},
9460string_with_idx{
"bamum", 8},
9461string_with_idx{
"bass", 9},
9462string_with_idx{
"bassa_vah", 9},
9463string_with_idx{
"batak", 10},
9464string_with_idx{
"batk", 10},
9465string_with_idx{
"beng", 11},
9466string_with_idx{
"bengali", 11},
9467string_with_idx{
"bhaiksuki", 12},
9468string_with_idx{
"bhks", 12},
9469string_with_idx{
"bopo", 13},
9470string_with_idx{
"bopomofo", 13},
9471string_with_idx{
"brah", 14},
9472string_with_idx{
"brahmi", 14},
9473string_with_idx{
"brai", 15},
9474string_with_idx{
"braille", 15},
9475string_with_idx{
"bugi", 16},
9476string_with_idx{
"buginese", 16},
9477string_with_idx{
"buhd", 17},
9478string_with_idx{
"buhid", 17},
9479string_with_idx{
"cakm", 18},
9480string_with_idx{
"canadian_aboriginal", 19},
9481string_with_idx{
"cans", 19},
9482string_with_idx{
"cari", 20},
9483string_with_idx{
"carian", 20},
9484string_with_idx{
"caucasian_albanian", 1},
9485string_with_idx{
"chakma", 18},
9486string_with_idx{
"cham", 21},
9487string_with_idx{
"cher", 22},
9488string_with_idx{
"cherokee", 22},
9489string_with_idx{
"chorasmian", 23},
9490string_with_idx{
"chrs", 23},
9491string_with_idx{
"common", 161},
9492string_with_idx{
"copt", 24},
9493string_with_idx{
"coptic", 24},
9494string_with_idx{
"cpmn", 25},
9495string_with_idx{
"cprt", 26},
9496string_with_idx{
"cuneiform", 156},
9497string_with_idx{
"cypriot", 26},
9498string_with_idx{
"cypro_minoan", 25},
9499string_with_idx{
"cyrillic", 27},
9500string_with_idx{
"cyrl", 27},
9501string_with_idx{
"deseret", 31},
9502string_with_idx{
"deva", 28},
9503string_with_idx{
"devanagari", 28},
9504string_with_idx{
"diak", 29},
9505string_with_idx{
"dives_akuru", 29},
9506string_with_idx{
"dogr", 30},
9507string_with_idx{
"dogra", 30},
9508string_with_idx{
"dsrt", 31},
9509string_with_idx{
"dupl", 32},
9510string_with_idx{
"duployan", 32},
9511string_with_idx{
"egyp", 33},
9512string_with_idx{
"egyptian_hieroglyphs", 33},
9513string_with_idx{
"elba", 34},
9514string_with_idx{
"elbasan", 34},
9515string_with_idx{
"elym", 35},
9516string_with_idx{
"elymaic", 35},
9517string_with_idx{
"ethi", 36},
9518string_with_idx{
"ethiopic", 36},
9519string_with_idx{
"geor", 37},
9520string_with_idx{
"georgian", 37},
9521string_with_idx{
"glag", 38},
9522string_with_idx{
"glagolitic", 38},
9523string_with_idx{
"gong", 39},
9524string_with_idx{
"gonm", 40},
9525string_with_idx{
"goth", 41},
9526string_with_idx{
"gothic", 41},
9527string_with_idx{
"gran", 42},
9528string_with_idx{
"grantha", 42},
9529string_with_idx{
"greek", 43},
9530string_with_idx{
"grek", 43},
9531string_with_idx{
"gujarati", 44},
9532string_with_idx{
"gujr", 44},
9533string_with_idx{
"gunjala_gondi", 39},
9534string_with_idx{
"gurmukhi", 45},
9535string_with_idx{
"guru", 45},
9536string_with_idx{
"han", 47},
9537string_with_idx{
"hang", 46},
9538string_with_idx{
"hangul", 46},
9539string_with_idx{
"hani", 47},
9540string_with_idx{
"hanifi_rohingya", 116},
9541string_with_idx{
"hano", 48},
9542string_with_idx{
"hanunoo", 48},
9543string_with_idx{
"hatr", 49},
9544string_with_idx{
"hatran", 49},
9545string_with_idx{
"hebr", 50},
9546string_with_idx{
"hebrew", 50},
9547string_with_idx{
"hira", 51},
9548string_with_idx{
"hiragana", 51},
9549string_with_idx{
"hluw", 52},
9550string_with_idx{
"hmng", 53},
9551string_with_idx{
"hmnp", 54},
9552string_with_idx{
"hrkt", 55},
9553string_with_idx{
"hung", 56},
9554string_with_idx{
"imperial_aramaic", 4},
9555string_with_idx{
"inherited", 160},
9556string_with_idx{
"inscriptional_pahlavi", 110},
9557string_with_idx{
"inscriptional_parthian", 114},
9558string_with_idx{
"ital", 57},
9559string_with_idx{
"java", 58},
9560string_with_idx{
"javanese", 58},
9561string_with_idx{
"kaithi", 66},
9562string_with_idx{
"kali", 59},
9563string_with_idx{
"kana", 60},
9564string_with_idx{
"kannada", 65},
9565string_with_idx{
"katakana", 60},
9566string_with_idx{
"katakana_or_hiragana", 55},
9567string_with_idx{
"kayah_li", 59},
9568string_with_idx{
"khar", 61},
9569string_with_idx{
"kharoshthi", 61},
9570string_with_idx{
"khitan_small_script", 64},
9571string_with_idx{
"khmer", 62},
9572string_with_idx{
"khmr", 62},
9573string_with_idx{
"khoj", 63},
9574string_with_idx{
"khojki", 63},
9575string_with_idx{
"khudawadi", 125},
9576string_with_idx{
"kits", 64},
9577string_with_idx{
"knda", 65},
9578string_with_idx{
"kthi", 66},
9579string_with_idx{
"lana", 67},
9580string_with_idx{
"lao", 68},
9581string_with_idx{
"laoo", 68},
9582string_with_idx{
"latin", 69},
9583string_with_idx{
"latn", 69},
9584string_with_idx{
"lepc", 70},
9585string_with_idx{
"lepcha", 70},
9586string_with_idx{
"limb", 71},
9587string_with_idx{
"limbu", 71},
9588string_with_idx{
"lina", 72},
9589string_with_idx{
"linb", 73},
9590string_with_idx{
"linear_a", 72},
9591string_with_idx{
"linear_b", 73},
9592string_with_idx{
"lisu", 74},
9593string_with_idx{
"lyci", 75},
9594string_with_idx{
"lycian", 75},
9595string_with_idx{
"lydi", 76},
9596string_with_idx{
"lydian", 76},
9597string_with_idx{
"mahajani", 77},
9598string_with_idx{
"mahj", 77},
9599string_with_idx{
"maka", 78},
9600string_with_idx{
"makasar", 78},
9601string_with_idx{
"malayalam", 86},
9602string_with_idx{
"mand", 79},
9603string_with_idx{
"mandaic", 79},
9604string_with_idx{
"mani", 80},
9605string_with_idx{
"manichaean", 80},
9606string_with_idx{
"marc", 81},
9607string_with_idx{
"marchen", 81},
9608string_with_idx{
"masaram_gondi", 40},
9609string_with_idx{
"medefaidrin", 82},
9610string_with_idx{
"medf", 82},
9611string_with_idx{
"meetei_mayek", 90},
9612string_with_idx{
"mend", 83},
9613string_with_idx{
"mende_kikakui", 83},
9614string_with_idx{
"merc", 84},
9615string_with_idx{
"mero", 85},
9616string_with_idx{
"meroitic_cursive", 84},
9617string_with_idx{
"meroitic_hieroglyphs", 85},
9618string_with_idx{
"miao", 113},
9619string_with_idx{
"mlym", 86},
9620string_with_idx{
"modi", 87},
9621string_with_idx{
"mong", 88},
9622string_with_idx{
"mongolian", 88},
9623string_with_idx{
"mro", 89},
9624string_with_idx{
"mroo", 89},
9625string_with_idx{
"mtei", 90},
9626string_with_idx{
"mult", 91},
9627string_with_idx{
"multani", 91},
9628string_with_idx{
"myanmar", 92},
9629string_with_idx{
"mymr", 92},
9630string_with_idx{
"nabataean", 95},
9631string_with_idx{
"nand", 93},
9632string_with_idx{
"nandinagari", 93},
9633string_with_idx{
"narb", 94},
9634string_with_idx{
"nbat", 95},
9635string_with_idx{
"new_tai_lue", 137},
9636string_with_idx{
"newa", 96},
9637string_with_idx{
"nko", 97},
9638string_with_idx{
"nkoo", 97},
9639string_with_idx{
"nshu", 98},
9640string_with_idx{
"nushu", 98},
9641string_with_idx{
"nyiakeng_puachue_hmong", 54},
9642string_with_idx{
"ogam", 99},
9643string_with_idx{
"ogham", 99},
9644string_with_idx{
"ol_chiki", 100},
9645string_with_idx{
"olck", 100},
9646string_with_idx{
"old_hungarian", 56},
9647string_with_idx{
"old_italic", 57},
9648string_with_idx{
"old_north_arabian", 94},
9649string_with_idx{
"old_permic", 108},
9650string_with_idx{
"old_persian", 155},
9651string_with_idx{
"old_sogdian", 128},
9652string_with_idx{
"old_south_arabian", 119},
9653string_with_idx{
"old_turkic", 101},
9654string_with_idx{
"old_uyghur", 105},
9655string_with_idx{
"oriya", 102},
9656string_with_idx{
"orkh", 101},
9657string_with_idx{
"orya", 102},
9658string_with_idx{
"osage", 103},
9659string_with_idx{
"osge", 103},
9660string_with_idx{
"osma", 104},
9661string_with_idx{
"osmanya", 104},
9662string_with_idx{
"ougr", 105},
9663string_with_idx{
"pahawh_hmong", 53},
9664string_with_idx{
"palm", 106},
9665string_with_idx{
"palmyrene", 106},
9666string_with_idx{
"pau_cin_hau", 107},
9667string_with_idx{
"pauc", 107},
9668string_with_idx{
"perm", 108},
9669string_with_idx{
"phag", 109},
9670string_with_idx{
"phags_pa", 109},
9671string_with_idx{
"phli", 110},
9672string_with_idx{
"phlp", 111},
9673string_with_idx{
"phnx", 112},
9674string_with_idx{
"phoenician", 112},
9675string_with_idx{
"plrd", 113},
9676string_with_idx{
"prti", 114},
9677string_with_idx{
"psalter_pahlavi", 111},
9678string_with_idx{
"rejang", 115},
9679string_with_idx{
"rjng", 115},
9680string_with_idx{
"rohg", 116},
9681string_with_idx{
"runic", 117},
9682string_with_idx{
"runr", 117},
9683string_with_idx{
"samaritan", 118},
9684string_with_idx{
"samr", 118},
9685string_with_idx{
"sarb", 119},
9686string_with_idx{
"saur", 120},
9687string_with_idx{
"saurashtra", 120},
9688string_with_idx{
"sgnw", 121},
9689string_with_idx{
"sharada", 123},
9690string_with_idx{
"shavian", 122},
9691string_with_idx{
"shaw", 122},
9692string_with_idx{
"shrd", 123},
9693string_with_idx{
"sidd", 124},
9694string_with_idx{
"siddham", 124},
9695string_with_idx{
"signwriting", 121},
9696string_with_idx{
"sind", 125},
9697string_with_idx{
"sinh", 126},
9698string_with_idx{
"sinhala", 126},
9699string_with_idx{
"sogd", 127},
9700string_with_idx{
"sogdian", 127},
9701string_with_idx{
"sogo", 128},
9702string_with_idx{
"sora", 129},
9703string_with_idx{
"sora_sompeng", 129},
9704string_with_idx{
"soyo", 130},
9705string_with_idx{
"soyombo", 130},
9706string_with_idx{
"sund", 131},
9707string_with_idx{
"sundanese", 131},
9708string_with_idx{
"sylo", 132},
9709string_with_idx{
"syloti_nagri", 132},
9710string_with_idx{
"syrc", 133},
9711string_with_idx{
"syriac", 133},
9712string_with_idx{
"tagalog", 143},
9713string_with_idx{
"tagb", 134},
9714string_with_idx{
"tagbanwa", 134},
9715string_with_idx{
"tai_le", 136},
9716string_with_idx{
"tai_tham", 67},
9717string_with_idx{
"tai_viet", 140},
9718string_with_idx{
"takr", 135},
9719string_with_idx{
"takri", 135},
9720string_with_idx{
"tale", 136},
9721string_with_idx{
"talu", 137},
9722string_with_idx{
"tamil", 138},
9723string_with_idx{
"taml", 138},
9724string_with_idx{
"tang", 139},
9725string_with_idx{
"tangsa", 148},
9726string_with_idx{
"tangut", 139},
9727string_with_idx{
"tavt", 140},
9728string_with_idx{
"telu", 141},
9729string_with_idx{
"telugu", 141},
9730string_with_idx{
"tfng", 142},
9731string_with_idx{
"tglg", 143},
9732string_with_idx{
"thaa", 144},
9733string_with_idx{
"thaana", 144},
9734string_with_idx{
"thai", 145},
9735string_with_idx{
"tibetan", 146},
9736string_with_idx{
"tibt", 146},
9737string_with_idx{
"tifinagh", 142},
9738string_with_idx{
"tirh", 147},
9739string_with_idx{
"tirhuta", 147},
9740string_with_idx{
"tnsa", 148},
9741string_with_idx{
"toto", 149},
9742string_with_idx{
"ugar", 150},
9743string_with_idx{
"ugaritic", 150},
9744string_with_idx{
"unknown", 162},
9745string_with_idx{
"vai", 151},
9746string_with_idx{
"vaii", 151},
9747string_with_idx{
"vith", 152},
9748string_with_idx{
"vithkuqi", 152},
9749string_with_idx{
"wancho", 154},
9750string_with_idx{
"wara", 153},
9751string_with_idx{
"warang_citi", 153},
9752string_with_idx{
"wcho", 154},
9753string_with_idx{
"xpeo", 155},
9754string_with_idx{
"xsux", 156},
9755string_with_idx{
"yezi", 157},
9756string_with_idx{
"yezidi", 157},
9757string_with_idx{
"yi", 158},
9758string_with_idx{
"yiii", 158},
9759string_with_idx{
"zanabazar_square", 159},
9760string_with_idx{
"zanb", 159},
9761string_with_idx{
"zinh", 160},
9762string_with_idx{
"zyyy", 161},
9763string_with_idx{
"zzzz", 162}};
9767 structscript_data<0> {
9768 staticconstexpr
constcompact_range scripts_data = {
97690x000000A1, 0x00004145, 0x00005BA1, 0x00006145, 0x00007BA1, 0x0000AA45, 0x0000ABA1,
97700x0000BA45, 0x0000BBA1, 0x0000C045, 0x0000D7A1, 0x0000D845, 0x0000F7A1, 0x0000F845,
97710x0002B9A1, 0x0002E045, 0x0002E5A1, 0x0002EA0D, 0x0002ECA1, 0x000300A0, 0x0003702B,
97720x000374A1, 0x0003752B, 0x000378A2, 0x00037A2B, 0x00037EA1, 0x00037F2B, 0x000380A2,
97730x0003842B, 0x000385A1, 0x0003862B, 0x000387A1, 0x0003882B, 0x00038BA2, 0x00038C2B,
97740x00038DA2, 0x00038E2B, 0x0003A2A2, 0x0003A32B, 0x0003E218, 0x0003F02B, 0x0004001B,
97750x000485A0, 0x0004871B, 0x000530A2, 0x00053105, 0x000557A2, 0x00055905, 0x00058BA2,
97760x00058D05, 0x000590A2, 0x00059132, 0x0005C8A2, 0x0005D032, 0x0005EBA2, 0x0005EF32,
97770x0005F5A2, 0x00060003, 0x000605A1, 0x00060603, 0x00060CA1, 0x00060D03, 0x00061BA1,
97780x00061C03, 0x00061FA1, 0x00062003, 0x000640A1, 0x00064103, 0x00064BA0, 0x00065603,
97790x000670A0, 0x00067103, 0x0006DDA1, 0x0006DE03, 0x00070085, 0x00070EA2, 0x00070F85,
97800x00074BA2, 0x00074D85, 0x00075003, 0x00078090, 0x0007B2A2, 0x0007C061, 0x0007FBA2,
97810x0007FD61, 0x00080076, 0x00082EA2, 0x00083076, 0x00083FA2, 0x0008404F, 0x00085CA2,
97820x00085E4F, 0x00085FA2, 0x00086085, 0x00086BA2, 0x00087003, 0x00088FA2, 0x00089003,
97830x000892A2, 0x00089803, 0x0008E2A1, 0x0008E303, 0x0009001C, 0x000951A0, 0x0009551C,
97840x000964A1, 0x0009661C, 0x0009800B, 0x000984A2, 0x0009850B, 0x00098DA2, 0x00098F0B,
97850x000991A2, 0x0009930B, 0x0009A9A2, 0x0009AA0B, 0x0009B1A2, 0x0009B20B, 0x0009B3A2,
97860x0009B60B, 0x0009BAA2, 0x0009BC0B, 0x0009C5A2, 0x0009C70B, 0x0009C9A2, 0x0009CB0B,
97870x0009CFA2, 0x0009D70B, 0x0009D8A2, 0x0009DC0B, 0x0009DEA2, 0x0009DF0B, 0x0009E4A2,
97880x0009E60B, 0x0009FFA2, 0x000A012D, 0x000A04A2, 0x000A052D, 0x000A0BA2, 0x000A0F2D,
97890x000A11A2, 0x000A132D, 0x000A29A2, 0x000A2A2D, 0x000A31A2, 0x000A322D, 0x000A34A2,
97900x000A352D, 0x000A37A2, 0x000A382D, 0x000A3AA2, 0x000A3C2D, 0x000A3DA2, 0x000A3E2D,
97910x000A43A2, 0x000A472D, 0x000A49A2, 0x000A4B2D, 0x000A4EA2, 0x000A512D, 0x000A52A2,
97920x000A592D, 0x000A5DA2, 0x000A5E2D, 0x000A5FA2, 0x000A662D, 0x000A77A2, 0x000A812C,
97930x000A84A2, 0x000A852C, 0x000A8EA2, 0x000A8F2C, 0x000A92A2, 0x000A932C, 0x000AA9A2,
97940x000AAA2C, 0x000AB1A2, 0x000AB22C, 0x000AB4A2, 0x000AB52C, 0x000ABAA2, 0x000ABC2C,
97950x000AC6A2, 0x000AC72C, 0x000ACAA2, 0x000ACB2C, 0x000ACEA2, 0x000AD02C, 0x000AD1A2,
97960x000AE02C, 0x000AE4A2, 0x000AE62C, 0x000AF2A2, 0x000AF92C, 0x000B00A2, 0x000B0166,
97970x000B04A2, 0x000B0566, 0x000B0DA2, 0x000B0F66, 0x000B11A2, 0x000B1366, 0x000B29A2,
97980x000B2A66, 0x000B31A2, 0x000B3266, 0x000B34A2, 0x000B3566, 0x000B3AA2, 0x000B3C66,
97990x000B45A2, 0x000B4766, 0x000B49A2, 0x000B4B66, 0x000B4EA2, 0x000B5566, 0x000B58A2,
98000x000B5C66, 0x000B5EA2, 0x000B5F66, 0x000B64A2, 0x000B6666, 0x000B78A2, 0x000B828A,
98010x000B84A2, 0x000B858A, 0x000B8BA2, 0x000B8E8A, 0x000B91A2, 0x000B928A, 0x000B96A2,
98020x000B998A, 0x000B9BA2, 0x000B9C8A, 0x000B9DA2, 0x000B9E8A, 0x000BA0A2, 0x000BA38A,
98030x000BA5A2, 0x000BA88A, 0x000BABA2, 0x000BAE8A, 0x000BBAA2, 0x000BBE8A, 0x000BC3A2,
98040x000BC68A, 0x000BC9A2, 0x000BCA8A, 0x000BCEA2, 0x000BD08A, 0x000BD1A2, 0x000BD78A,
98050x000BD8A2, 0x000BE68A, 0x000BFBA2, 0x000C008D, 0x000C0DA2, 0x000C0E8D, 0x000C11A2,
98060x000C128D, 0x000C29A2, 0x000C2A8D, 0x000C3AA2, 0x000C3C8D, 0x000C45A2, 0x000C468D,
98070x000C49A2, 0x000C4A8D, 0x000C4EA2, 0x000C558D, 0x000C57A2, 0x000C588D, 0x000C5BA2,
98080x000C5D8D, 0x000C5EA2, 0x000C608D, 0x000C64A2, 0x000C668D, 0x000C70A2, 0x000C778D,
98090x000C8041, 0x000C8DA2, 0x000C8E41, 0x000C91A2, 0x000C9241, 0x000CA9A2, 0x000CAA41,
98100x000CB4A2, 0x000CB541, 0x000CBAA2, 0x000CBC41, 0x000CC5A2, 0x000CC641, 0x000CC9A2,
98110x000CCA41, 0x000CCEA2, 0x000CD541, 0x000CD7A2, 0x000CDD41, 0x000CDFA2, 0x000CE041,
98120x000CE4A2, 0x000CE641, 0x000CF0A2, 0x000CF141, 0x000CF3A2, 0x000D0056, 0x000D0DA2,
98130x000D0E56, 0x000D11A2, 0x000D1256, 0x000D45A2, 0x000D4656, 0x000D49A2, 0x000D4A56,
98140x000D50A2, 0x000D5456, 0x000D64A2, 0x000D6656, 0x000D80A2, 0x000D817E, 0x000D84A2,
98150x000D857E, 0x000D97A2, 0x000D9A7E, 0x000DB2A2, 0x000DB37E, 0x000DBCA2, 0x000DBD7E,
98160x000DBEA2, 0x000DC07E, 0x000DC7A2, 0x000DCA7E, 0x000DCBA2, 0x000DCF7E, 0x000DD5A2,
98170x000DD67E, 0x000DD7A2, 0x000DD87E, 0x000DE0A2, 0x000DE67E, 0x000DF0A2, 0x000DF27E,
98180x000DF5A2, 0x000E0191, 0x000E3BA2, 0x000E3FA1, 0x000E4091, 0x000E5CA2, 0x000E8144,
98190x000E83A2, 0x000E8444, 0x000E85A2, 0x000E8644, 0x000E8BA2, 0x000E8C44, 0x000EA4A2,
98200x000EA544, 0x000EA6A2, 0x000EA744, 0x000EBEA2, 0x000EC044, 0x000EC5A2, 0x000EC644,
98210x000EC7A2, 0x000EC844, 0x000ECEA2, 0x000ED044, 0x000EDAA2, 0x000EDC44, 0x000EE0A2,
98220x000F0092, 0x000F48A2, 0x000F4992, 0x000F6DA2, 0x000F7192, 0x000F98A2, 0x000F9992,
98230x000FBDA2, 0x000FBE92, 0x000FCDA2, 0x000FCE92, 0x000FD5A1, 0x000FD992, 0x000FDBA2,
98240x0010005C, 0x0010A025, 0x0010C6A2, 0x0010C725, 0x0010C8A2, 0x0010CD25, 0x0010CEA2,
98250x0010D025, 0x0010FBA1, 0x0010FC25, 0x0011002E, 0x00120024, 0x001249A2, 0x00124A24,
98260x00124EA2, 0x00125024, 0x001257A2, 0x00125824, 0x001259A2, 0x00125A24, 0x00125EA2,
98270x00126024, 0x001289A2, 0x00128A24, 0x00128EA2, 0x00129024, 0x0012B1A2, 0x0012B224,
98280x0012B6A2, 0x0012B824, 0x0012BFA2, 0x0012C024, 0x0012C1A2, 0x0012C224, 0x0012C6A2,
98290x0012C824, 0x0012D7A2, 0x0012D824, 0x001311A2, 0x00131224, 0x001316A2, 0x00131824,
98300x00135BA2, 0x00135D24, 0x00137DA2, 0x00138024, 0x00139AA2, 0x0013A016, 0x0013F6A2,
98310x0013F816, 0x0013FEA2, 0x00140013, 0x00168063, 0x00169DA2, 0x0016A075, 0x0016EBA1,
98320x0016EE75, 0x0016F9A2, 0x0017008F, 0x001716A2, 0x00171F8F, 0x00172030, 0x001735A1,
98330x001737A2, 0x00174011, 0x001754A2, 0x00176086, 0x00176DA2, 0x00176E86, 0x001771A2,
98340x00177286, 0x001774A2, 0x0017803E, 0x0017DEA2, 0x0017E03E, 0x0017EAA2, 0x0017F03E,
98350x0017FAA2, 0x00180058, 0x001802A1, 0x00180458, 0x001805A1, 0x00180658, 0x00181AA2,
98360x00182058, 0x001879A2, 0x00188058, 0x0018ABA2, 0x0018B013, 0x0018F6A2, 0x00190047,
98370x00191FA2, 0x00192047, 0x00192CA2, 0x00193047, 0x00193CA2, 0x00194047, 0x001941A2,
98380x00194447, 0x00195088, 0x00196EA2, 0x00197088, 0x001975A2, 0x00198089, 0x0019ACA2,
98390x0019B089, 0x0019CAA2, 0x0019D089, 0x0019DBA2, 0x0019DE89, 0x0019E03E, 0x001A0010,
98400x001A1CA2, 0x001A1E10, 0x001A2043, 0x001A5FA2, 0x001A6043, 0x001A7DA2, 0x001A7F43,
98410x001A8AA2, 0x001A9043, 0x001A9AA2, 0x001AA043, 0x001AAEA2, 0x001AB0A0, 0x001ACFA2,
98420x001B0007, 0x001B4DA2, 0x001B5007, 0x001B7FA2, 0x001B8083, 0x001BC00A, 0x001BF4A2,
98430x001BFC0A, 0x001C0046, 0x001C38A2, 0x001C3B46, 0x001C4AA2, 0x001C4D46, 0x001C5064,
98440x001C801B, 0x001C89A2, 0x001C9025, 0x001CBBA2, 0x001CBD25, 0x001CC083, 0x001CC8A2,
98450x001CD0A0, 0x001CD3A1, 0x001CD4A0, 0x001CE1A1, 0x001CE2A0, 0x001CE9A1, 0x001CEDA0,
98460x001CEEA1, 0x001CF4A0, 0x001CF5A1, 0x001CF8A0, 0x001CFAA1, 0x001CFBA2, 0x001D0045,
98470x001D262B, 0x001D2B1B, 0x001D2C45, 0x001D5D2B, 0x001D6245, 0x001D662B, 0x001D6B45,
98480x001D781B, 0x001D7945, 0x001DBF2B, 0x001DC0A0, 0x001E0045, 0x001F002B, 0x001F16A2,
98490x001F182B, 0x001F1EA2, 0x001F202B, 0x001F46A2, 0x001F482B, 0x001F4EA2, 0x001F502B,
98500x001F58A2, 0x001F592B, 0x001F5AA2, 0x001F5B2B, 0x001F5CA2, 0x001F5D2B, 0x001F5EA2,
98510x001F5F2B, 0x001F7EA2, 0x001F802B, 0x001FB5A2, 0x001FB62B, 0x001FC5A2, 0x001FC62B,
98520x001FD4A2, 0x001FD62B, 0x001FDCA2, 0x001FDD2B, 0x001FF0A2, 0x001FF22B, 0x001FF5A2,
98530x001FF62B, 0x001FFFA2, 0x002000A1, 0x00200CA0, 0x00200EA1, 0x002065A2, 0x002066A1,
98540x00207145, 0x002072A2, 0x002074A1, 0x00207F45, 0x002080A1, 0x00208FA2, 0x00209045,
98550x00209DA2, 0x0020A0A1, 0x0020C1A2, 0x0020D0A0, 0x0020F1A2, 0x002100A1, 0x0021262B,
98560x002127A1, 0x00212A45, 0x00212CA1, 0x00213245, 0x002133A1, 0x00214E45, 0x00214FA1,
98570x00216045, 0x002189A1, 0x00218CA2, 0x002190A1, 0x002427A2, 0x002440A1, 0x00244BA2,
98580x002460A1, 0x0028000F, 0x002900A1, 0x002B74A2, 0x002B76A1, 0x002B96A2, 0x002B97A1,
98590x002C0026, 0x002C6045, 0x002C8018, 0x002CF4A2, 0x002CF918, 0x002D0025, 0x002D26A2,
98600x002D2725, 0x002D28A2, 0x002D2D25, 0x002D2EA2, 0x002D308E, 0x002D68A2, 0x002D6F8E,
98610x002D71A2, 0x002D7F8E, 0x002D8024, 0x002D97A2, 0x002DA024, 0x002DA7A2, 0x002DA824,
98620x002DAFA2, 0x002DB024, 0x002DB7A2, 0x002DB824, 0x002DBFA2, 0x002DC024, 0x002DC7A2,
98630x002DC824, 0x002DCFA2, 0x002DD024, 0x002DD7A2, 0x002DD824, 0x002DDFA2, 0x002DE01B,
98640x002E00A1, 0x002E5EA2, 0x002E802F, 0x002E9AA2, 0x002E9B2F, 0x002EF4A2, 0x002F002F,
98650x002FD6A2, 0x002FF0A1, 0x002FFCA2, 0x003000A1, 0x0030052F, 0x003006A1, 0x0030072F,
98660x003008A1, 0x0030212F, 0x00302AA0, 0x00302E2E, 0x003030A1, 0x0030382F, 0x00303CA1,
98670x003040A2, 0x00304133, 0x003097A2, 0x003099A0, 0x00309BA1, 0x00309D33, 0x0030A0A1,
98680x0030A13C, 0x0030FBA1, 0x0030FD3C, 0x003100A2, 0x0031050D, 0x003130A2, 0x0031312E,
98690x00318FA2, 0x003190A1, 0x0031A00D, 0x0031C0A1, 0x0031E4A2, 0x0031F03C, 0x0032002E,
98700x00321FA2, 0x003220A1, 0x0032602E, 0x00327FA1, 0x0032D03C, 0x0032FFA1, 0x0033003C,
98710x003358A1, 0x0034002F, 0x004DC0A1, 0x004E002F, 0x00A0009E, 0x00A48DA2, 0x00A4909E,
98720x00A4C7A2, 0x00A4D04A, 0x00A50097, 0x00A62CA2, 0x00A6401B, 0x00A6A008, 0x00A6F8A2,
98730x00A700A1, 0x00A72245, 0x00A788A1, 0x00A78B45, 0x00A7CBA2, 0x00A7D045, 0x00A7D2A2,
98740x00A7D345, 0x00A7D4A2, 0x00A7D545, 0x00A7DAA2, 0x00A7F245, 0x00A80084, 0x00A82DA2,
98750x00A830A1, 0x00A83AA2, 0x00A8406D, 0x00A878A2, 0x00A88078, 0x00A8C6A2, 0x00A8CE78,
98760x00A8DAA2, 0x00A8E01C, 0x00A9003B, 0x00A92EA1, 0x00A92F3B, 0x00A93073, 0x00A954A2,
98770x00A95F73, 0x00A9602E, 0x00A97DA2, 0x00A9803A, 0x00A9CEA2, 0x00A9CFA1, 0x00A9D03A,
98780x00A9DAA2, 0x00A9DE3A, 0x00A9E05C, 0x00A9FFA2, 0x00AA0015, 0x00AA37A2, 0x00AA4015,
98790x00AA4EA2, 0x00AA5015, 0x00AA5AA2, 0x00AA5C15, 0x00AA605C, 0x00AA808C, 0x00AAC3A2,
98800x00AADB8C, 0x00AAE05A, 0x00AAF7A2, 0x00AB0124, 0x00AB07A2, 0x00AB0924, 0x00AB0FA2,
98810x00AB1124, 0x00AB17A2, 0x00AB2024, 0x00AB27A2, 0x00AB2824, 0x00AB2FA2, 0x00AB3045,
98820x00AB5BA1, 0x00AB5C45, 0x00AB652B, 0x00AB6645, 0x00AB6AA1, 0x00AB6CA2, 0x00AB7016,
98830x00ABC05A, 0x00ABEEA2, 0x00ABF05A, 0x00ABFAA2, 0x00AC002E, 0x00D7A4A2, 0x00D7B02E,
98840x00D7C7A2, 0x00D7CB2E, 0x00D7FCA2, 0x00F9002F, 0x00FA6EA2, 0x00FA702F, 0x00FADAA2,
98850x00FB0045, 0x00FB07A2, 0x00FB1305, 0x00FB18A2, 0x00FB1D32, 0x00FB37A2, 0x00FB3832,
98860x00FB3DA2, 0x00FB3E32, 0x00FB3FA2, 0x00FB4032, 0x00FB42A2, 0x00FB4332, 0x00FB45A2,
98870x00FB4632, 0x00FB5003, 0x00FBC3A2, 0x00FBD303, 0x00FD3EA1, 0x00FD4003, 0x00FD90A2,
98880x00FD9203, 0x00FDC8A2, 0x00FDCF03, 0x00FDD0A2, 0x00FDF003, 0x00FE00A0, 0x00FE10A1,
98890x00FE1AA2, 0x00FE20A0, 0x00FE2E1B, 0x00FE30A1, 0x00FE53A2, 0x00FE54A1, 0x00FE67A2,
98900x00FE68A1, 0x00FE6CA2, 0x00FE7003, 0x00FE75A2, 0x00FE7603, 0x00FEFDA2, 0x00FEFFA1,
98910x00FF00A2, 0x00FF01A1, 0x00FF2145, 0x00FF3BA1, 0x00FF4145, 0x00FF5BA1, 0x00FF663C,
98920x00FF70A1, 0x00FF713C, 0x00FF9EA1, 0x00FFA02E, 0x00FFBFA2, 0x00FFC22E, 0x00FFC8A2,
98930x00FFCA2E, 0x00FFD0A2, 0x00FFD22E, 0x00FFD8A2, 0x00FFDA2E, 0x00FFDDA2, 0x00FFE0A1,
98940x00FFE7A2, 0x00FFE8A1, 0x00FFEFA2, 0x00FFF9A1, 0x00FFFEA2, 0x01000049, 0x01000CA2,
98950x01000D49, 0x010027A2, 0x01002849, 0x01003BA2, 0x01003C49, 0x01003EA2, 0x01003F49,
98960x01004EA2, 0x01005049, 0x01005EA2, 0x01008049, 0x0100FBA2, 0x010100A1, 0x010103A2,
98970x010107A1, 0x010134A2, 0x010137A1, 0x0101402B, 0x01018FA2, 0x010190A1, 0x01019DA2,
98980x0101A02B, 0x0101A1A2, 0x0101D0A1, 0x0101FDA0, 0x0101FEA2, 0x0102804B, 0x01029DA2,
98990x0102A014, 0x0102D1A2, 0x0102E0A0, 0x0102E1A1, 0x0102FCA2, 0x01030039, 0x010324A2,
99000x01032D39, 0x01033029, 0x01034BA2, 0x0103506C, 0x01037BA2, 0x01038096, 0x01039EA2,
99010x01039F96, 0x0103A09B, 0x0103C4A2, 0x0103C89B, 0x0103D6A2, 0x0104001F, 0x0104507A,
99020x01048068, 0x01049EA2, 0x0104A068, 0x0104AAA2, 0x0104B067, 0x0104D4A2, 0x0104D867,
99030x0104FCA2, 0x01050022, 0x010528A2, 0x01053001, 0x010564A2, 0x01056F01, 0x01057098,
99040x01057BA2, 0x01057C98, 0x01058BA2, 0x01058C98, 0x010593A2, 0x01059498, 0x010596A2,
99050x01059798, 0x0105A2A2, 0x0105A398, 0x0105B2A2, 0x0105B398, 0x0105BAA2, 0x0105BB98,
99060x0105BDA2, 0x01060048, 0x010737A2, 0x01074048, 0x010756A2, 0x01076048, 0x010768A2,
99070x01078045, 0x010786A2, 0x01078745, 0x0107B1A2, 0x0107B245, 0x0107BBA2, 0x0108001A,
99080x010806A2, 0x0108081A, 0x010809A2, 0x01080A1A, 0x010836A2, 0x0108371A, 0x010839A2,
99090x01083C1A, 0x01083DA2, 0x01083F1A, 0x01084004, 0x010856A2, 0x01085704, 0x0108606A,
99100x0108805F, 0x01089FA2, 0x0108A75F, 0x0108B0A2, 0x0108E031, 0x0108F3A2, 0x0108F431,
99110x0108F6A2, 0x0108FB31, 0x01090070, 0x01091CA2, 0x01091F70, 0x0109204C, 0x01093AA2,
99120x01093F4C, 0x010940A2, 0x01098055, 0x0109A054, 0x0109B8A2, 0x0109BC54, 0x0109D0A2,
99130x0109D254, 0x010A003D, 0x010A04A2, 0x010A053D, 0x010A07A2, 0x010A0C3D, 0x010A14A2,
99140x010A153D, 0x010A18A2, 0x010A193D, 0x010A36A2, 0x010A383D, 0x010A3BA2, 0x010A3F3D,
99150x010A49A2, 0x010A503D, 0x010A59A2, 0x010A6077, 0x010A805E, 0x010AA0A2, 0x010AC050,
99160x010AE7A2, 0x010AEB50, 0x010AF7A2, 0x010B0006, 0x010B36A2, 0x010B3906, 0x010B4072,
99170x010B56A2, 0x010B5872, 0x010B606E, 0x010B73A2, 0x010B786E, 0x010B806F, 0x010B92A2,
99180x010B996F, 0x010B9DA2, 0x010BA96F, 0x010BB0A2, 0x010C0065, 0x010C49A2, 0x010C8038,
99190x010CB3A2, 0x010CC038, 0x010CF3A2, 0x010CFA38, 0x010D0074, 0x010D28A2, 0x010D3074,
99200x010D3AA2, 0x010E6003, 0x010E7FA2, 0x010E809D, 0x010EAAA2, 0x010EAB9D, 0x010EAEA2,
99210x010EB09D, 0x010EB2A2, 0x010F0080, 0x010F28A2, 0x010F307F, 0x010F5AA2, 0x010F7069,
99220x010F8AA2, 0x010FB017, 0x010FCCA2, 0x010FE023, 0x010FF7A2, 0x0110000E, 0x01104EA2,
99230x0110520E, 0x011076A2, 0x01107F0E, 0x01108042, 0x0110C3A2, 0x0110CD42, 0x0110CEA2,
99240x0110D081, 0x0110E9A2, 0x0110F081, 0x0110FAA2, 0x01110012, 0x011135A2, 0x01113612,
99250x011148A2, 0x0111504D, 0x011177A2, 0x0111807B, 0x0111E0A2, 0x0111E17E, 0x0111F5A2,
99260x0112003F, 0x011212A2, 0x0112133F, 0x01123FA2, 0x0112805B, 0x011287A2, 0x0112885B,
99270x011289A2, 0x01128A5B, 0x01128EA2, 0x01128F5B, 0x01129EA2, 0x01129F5B, 0x0112AAA2,
99280x0112B07D, 0x0112EBA2, 0x0112F07D, 0x0112FAA2, 0x0113002A, 0x011304A2, 0x0113052A,
99290x01130DA2, 0x01130F2A, 0x011311A2, 0x0113132A, 0x011329A2, 0x01132A2A, 0x011331A2,
99300x0113322A, 0x011334A2, 0x0113352A, 0x01133AA2, 0x01133BA0, 0x01133C2A, 0x011345A2,
99310x0113472A, 0x011349A2, 0x01134B2A, 0x01134EA2, 0x0113502A, 0x011351A2, 0x0113572A,
99320x011358A2, 0x01135D2A, 0x011364A2, 0x0113662A, 0x01136DA2, 0x0113702A, 0x011375A2,
99330x01140060, 0x01145CA2, 0x01145D60, 0x011462A2, 0x01148093, 0x0114C8A2, 0x0114D093,
99340x0114DAA2, 0x0115807C, 0x0115B6A2, 0x0115B87C, 0x0115DEA2, 0x01160057, 0x011645A2,
99350x01165057, 0x01165AA2, 0x01166058, 0x01166DA2, 0x01168087, 0x0116BAA2, 0x0116C087,
99360x0116CAA2, 0x01170002, 0x01171BA2, 0x01171D02, 0x01172CA2, 0x01173002, 0x011747A2,
99370x0118001E, 0x01183CA2, 0x0118A099, 0x0118F3A2, 0x0118FF99, 0x0119001D, 0x011907A2,
99380x0119091D, 0x01190AA2, 0x01190C1D, 0x011914A2, 0x0119151D, 0x011917A2, 0x0119181D,
99390x011936A2, 0x0119371D, 0x011939A2, 0x01193B1D, 0x011947A2, 0x0119501D, 0x01195AA2,
99400x0119A05D, 0x0119A8A2, 0x0119AA5D, 0x0119D8A2, 0x0119DA5D, 0x0119E5A2, 0x011A009F,
99410x011A48A2, 0x011A5082, 0x011AA3A2, 0x011AB013, 0x011AC06B, 0x011AF9A2, 0x011C000C,
99420x011C09A2, 0x011C0A0C, 0x011C37A2, 0x011C380C, 0x011C46A2, 0x011C500C, 0x011C6DA2,
99430x011C7051, 0x011C90A2, 0x011C9251, 0x011CA8A2, 0x011CA951, 0x011CB7A2, 0x011D0028,
99440x011D07A2, 0x011D0828, 0x011D0AA2, 0x011D0B28, 0x011D37A2, 0x011D3A28, 0x011D3BA2,
99450x011D3C28, 0x011D3EA2, 0x011D3F28, 0x011D48A2, 0x011D5028, 0x011D5AA2, 0x011D6027,
99460x011D66A2, 0x011D6727, 0x011D69A2, 0x011D6A27, 0x011D8FA2, 0x011D9027, 0x011D92A2,
99470x011D9327, 0x011D99A2, 0x011DA027, 0x011DAAA2, 0x011EE04E, 0x011EF9A2, 0x011FB04A,
99480x011FB1A2, 0x011FC08A, 0x011FF2A2, 0x011FFF8A, 0x0120009C, 0x01239AA2, 0x0124009C,
99490x01246FA2, 0x0124709C, 0x012475A2, 0x0124809C, 0x012544A2, 0x012F9019, 0x012FF3A2,
99500x01300021, 0x01342FA2, 0x01343021, 0x013439A2, 0x01440034, 0x014647A2, 0x01680008,
99510x016A39A2, 0x016A4059, 0x016A5FA2, 0x016A6059, 0x016A6AA2, 0x016A6E59, 0x016A7094,
99520x016ABFA2, 0x016AC094, 0x016ACAA2, 0x016AD009, 0x016AEEA2, 0x016AF009, 0x016AF6A2,
99530x016B0035, 0x016B46A2, 0x016B5035, 0x016B5AA2, 0x016B5B35, 0x016B62A2, 0x016B6335,
99540x016B78A2, 0x016B7D35, 0x016B90A2, 0x016E4052, 0x016E9BA2, 0x016F0071, 0x016F4BA2,
99550x016F4F71, 0x016F88A2, 0x016F8F71, 0x016FA0A2, 0x016FE08B, 0x016FE162, 0x016FE22F,
99560x016FE440, 0x016FE5A2, 0x016FF02F, 0x016FF2A2, 0x0170008B, 0x0187F8A2, 0x0188008B,
99570x018B0040, 0x018CD6A2, 0x018D008B, 0x018D09A2, 0x01AFF03C, 0x01AFF4A2, 0x01AFF53C,
99580x01AFFCA2, 0x01AFFD3C, 0x01AFFFA2, 0x01B0003C, 0x01B00133, 0x01B1203C, 0x01B123A2,
99590x01B15033, 0x01B153A2, 0x01B1643C, 0x01B168A2, 0x01B17062, 0x01B2FCA2, 0x01BC0020,
99600x01BC6BA2, 0x01BC7020, 0x01BC7DA2, 0x01BC8020, 0x01BC89A2, 0x01BC9020, 0x01BC9AA2,
99610x01BC9C20, 0x01BCA0A1, 0x01BCA4A2, 0x01CF00A0, 0x01CF2EA2, 0x01CF30A0, 0x01CF47A2,
99620x01CF50A1, 0x01CFC4A2, 0x01D000A1, 0x01D0F6A2, 0x01D100A1, 0x01D127A2, 0x01D129A1,
99630x01D167A0, 0x01D16AA1, 0x01D17BA0, 0x01D183A1, 0x01D185A0, 0x01D18CA1, 0x01D1AAA0,
99640x01D1AEA1, 0x01D1EBA2, 0x01D2002B, 0x01D246A2, 0x01D2E0A1, 0x01D2F4A2, 0x01D300A1,
99650x01D357A2, 0x01D360A1, 0x01D379A2, 0x01D400A1, 0x01D455A2, 0x01D456A1, 0x01D49DA2,
99660x01D49EA1, 0x01D4A0A2, 0x01D4A2A1, 0x01D4A3A2, 0x01D4A5A1, 0x01D4A7A2, 0x01D4A9A1,
99670x01D4ADA2, 0x01D4AEA1, 0x01D4BAA2, 0x01D4BBA1, 0x01D4BCA2, 0x01D4BDA1, 0x01D4C4A2,
99680x01D4C5A1, 0x01D506A2, 0x01D507A1, 0x01D50BA2, 0x01D50DA1, 0x01D515A2, 0x01D516A1,
99690x01D51DA2, 0x01D51EA1, 0x01D53AA2, 0x01D53BA1, 0x01D53FA2, 0x01D540A1, 0x01D545A2,
99700x01D546A1, 0x01D547A2, 0x01D54AA1, 0x01D551A2, 0x01D552A1, 0x01D6A6A2, 0x01D6A8A1,
99710x01D7CCA2, 0x01D7CEA1, 0x01D80079, 0x01DA8CA2, 0x01DA9B79, 0x01DAA0A2, 0x01DAA179,
99720x01DAB0A2, 0x01DF0045, 0x01DF1FA2, 0x01E00026, 0x01E007A2, 0x01E00826, 0x01E019A2,
99730x01E01B26, 0x01E022A2, 0x01E02326, 0x01E025A2, 0x01E02626, 0x01E02BA2, 0x01E10036,
99740x01E12DA2, 0x01E13036, 0x01E13EA2, 0x01E14036, 0x01E14AA2, 0x01E14E36, 0x01E150A2,
99750x01E29095, 0x01E2AFA2, 0x01E2C09A, 0x01E2FAA2, 0x01E2FF9A, 0x01E300A2, 0x01E7E024,
99760x01E7E7A2, 0x01E7E824, 0x01E7ECA2, 0x01E7ED24, 0x01E7EFA2, 0x01E7F024, 0x01E7FFA2,
99770x01E80053, 0x01E8C5A2, 0x01E8C753, 0x01E8D7A2, 0x01E90000, 0x01E94CA2, 0x01E95000,
99780x01E95AA2, 0x01E95E00, 0x01E960A2, 0x01EC71A1, 0x01ECB5A2, 0x01ED01A1, 0x01ED3EA2,
99790x01EE0003, 0x01EE04A2, 0x01EE0503, 0x01EE20A2, 0x01EE2103, 0x01EE23A2, 0x01EE2403,
99800x01EE25A2, 0x01EE2703, 0x01EE28A2, 0x01EE2903, 0x01EE33A2, 0x01EE3403, 0x01EE38A2,
99810x01EE3903, 0x01EE3AA2, 0x01EE3B03, 0x01EE3CA2, 0x01EE4203, 0x01EE43A2, 0x01EE4703,
99820x01EE48A2, 0x01EE4903, 0x01EE4AA2, 0x01EE4B03, 0x01EE4CA2, 0x01EE4D03, 0x01EE50A2,
99830x01EE5103, 0x01EE53A2, 0x01EE5403, 0x01EE55A2, 0x01EE5703, 0x01EE58A2, 0x01EE5903,
99840x01EE5AA2, 0x01EE5B03, 0x01EE5CA2, 0x01EE5D03, 0x01EE5EA2, 0x01EE5F03, 0x01EE60A2,
99850x01EE6103, 0x01EE63A2, 0x01EE6403, 0x01EE65A2, 0x01EE6703, 0x01EE6BA2, 0x01EE6C03,
99860x01EE73A2, 0x01EE7403, 0x01EE78A2, 0x01EE7903, 0x01EE7DA2, 0x01EE7E03, 0x01EE7FA2,
99870x01EE8003, 0x01EE8AA2, 0x01EE8B03, 0x01EE9CA2, 0x01EEA103, 0x01EEA4A2, 0x01EEA503,
99880x01EEAAA2, 0x01EEAB03, 0x01EEBCA2, 0x01EEF003, 0x01EEF2A2, 0x01F000A1, 0x01F02CA2,
99890x01F030A1, 0x01F094A2, 0x01F0A0A1, 0x01F0AFA2, 0x01F0B1A1, 0x01F0C0A2, 0x01F0C1A1,
99900x01F0D0A2, 0x01F0D1A1, 0x01F0F6A2, 0x01F100A1, 0x01F1AEA2, 0x01F1E6A1, 0x01F20033,
99910x01F201A1, 0x01F203A2, 0x01F210A1, 0x01F23CA2, 0x01F240A1, 0x01F249A2, 0x01F250A1,
99920x01F252A2, 0x01F260A1, 0x01F266A2, 0x01F300A1, 0x01F6D8A2, 0x01F6DDA1, 0x01F6EDA2,
99930x01F6F0A1, 0x01F6FDA2, 0x01F700A1, 0x01F774A2, 0x01F780A1, 0x01F7D9A2, 0x01F7E0A1,
99940x01F7ECA2, 0x01F7F0A1, 0x01F7F1A2, 0x01F800A1, 0x01F80CA2, 0x01F810A1, 0x01F848A2,
99950x01F850A1, 0x01F85AA2, 0x01F860A1, 0x01F888A2, 0x01F890A1, 0x01F8AEA2, 0x01F8B0A1,
99960x01F8B2A2, 0x01F900A1, 0x01FA54A2, 0x01FA60A1, 0x01FA6EA2, 0x01FA70A1, 0x01FA75A2,
99970x01FA78A1, 0x01FA7DA2, 0x01FA80A1, 0x01FA87A2, 0x01FA90A1, 0x01FAADA2, 0x01FAB0A1,
99980x01FABBA2, 0x01FAC0A1, 0x01FAC6A2, 0x01FAD0A1, 0x01FADAA2, 0x01FAE0A1, 0x01FAE8A2,
99990x01FAF0A1, 0x01FAF7A2, 0x01FB00A1, 0x01FB93A2, 0x01FB94A1, 0x01FBCBA2, 0x01FBF0A1,
100000x01FBFAA2, 0x0200002F, 0x02A6E0A2, 0x02A7002F, 0x02B739A2, 0x02B7402F, 0x02B81EA2,
100010x02B8202F, 0x02CEA2A2, 0x02CEB02F, 0x02EBE1A2, 0x02F8002F, 0x02FA1EA2, 0x0300002F,
100020x03134BA2, 0x0E0001A1, 0x0E0002A2, 0x0E0020A1, 0x0E0080A2, 0x0E0100A0, 0x0E01F0A2,
10006 structscript_data<1> {
10007 staticconstexpr
constcompact_range scripts_data = {
100080x000000A2, 0x0003422B, 0x000343A2, 0x0003452B, 0x000346A2, 0x00036345, 0x000370A2,
100090x0004831B, 0x000488A2, 0x00060C03, 0x00060DA2, 0x00061B03, 0x00061DA2, 0x00061F00,
100100x000620A2, 0x00064000, 0x000641A2, 0x00064B03, 0x000656A2, 0x00066003, 0x00066AA2,
100110x00067003, 0x000671A2, 0x0006D403, 0x0006D5A2, 0x0009510B, 0x000953A2, 0x0009640B,
100120x0009661C, 0x000970A2, 0x0009E60B, 0x0009F0A2, 0x000A662D, 0x000A70A2, 0x000AE62C,
100130x000AF0A2, 0x000BE62A, 0x000BF4A2, 0x000CE641, 0x000CF0A2, 0x00104012, 0x00104AA2,
100140x0010FB25, 0x0010FCA2, 0x00173511, 0x001737A2, 0x00180258, 0x001804A2, 0x00180558,
100150x001806A2, 0x001CD00B, 0x001CD11C, 0x001CD20B, 0x001CD31C, 0x001CD50B, 0x001CD71C,
100160x001CD80B, 0x001CD91C, 0x001CE10B, 0x001CE21C, 0x001CEA0B, 0x001CEB1C, 0x001CED0B,
100170x001CEE1C, 0x001CF20B, 0x001CF31C, 0x001CF50B, 0x001CF81C, 0x001CFA5D, 0x001CFBA2,
100180x001DC02B, 0x001DC2A2, 0x001DF81B, 0x001DF9A2, 0x001DFA85, 0x001DFBA2, 0x00202F45,
100190x002030A2, 0x0020F01C, 0x0020F1A2, 0x002E431B, 0x002E44A2, 0x0030010D, 0x003004A2,
100200x0030062F, 0x003007A2, 0x0030080D, 0x003012A2, 0x0030130D, 0x003020A2, 0x00302A0D,
100210x00302EA2, 0x0030300D, 0x00303133, 0x003036A2, 0x0030370D, 0x003038A2, 0x00303C2F,
100220x003040A2, 0x00309933, 0x00309DA2, 0x0030A033, 0x0030A1A2, 0x0030FB0D, 0x0030FC33,
100230x0030FDA2, 0x0031902F, 0x0031A0A2, 0x0031C02F, 0x0031E4A2, 0x0032202F, 0x003248A2,
100240x0032802F, 0x0032B1A2, 0x0032C02F, 0x0032CCA2, 0x0032FF2F, 0x003300A2, 0x0033582F,
100250x003371A2, 0x00337B2F, 0x003380A2, 0x0033E02F, 0x0033FFA2, 0x00A66F1B, 0x00A670A2,
100260x00A7002F, 0x00A708A2, 0x00A8301C, 0x00A83AA2, 0x00A8F10B, 0x00A8F2A2, 0x00A8F31C,
100270x00A8F4A2, 0x00A92E3B, 0x00A92FA2, 0x00A9CF10, 0x00A9D0A2, 0x00FD3E03, 0x00FD40A2,
100280x00FDF203, 0x00FDF3A2, 0x00FDFD03, 0x00FDFEA2, 0x00FE450D, 0x00FE47A2, 0x00FF610D,
100290x00FF66A2, 0x00FF7033, 0x00FF71A2, 0x00FF9E33, 0x00FFA0A2, 0x01010019, 0x0101021A,
100300x010103A2, 0x0101071A, 0x010134A2, 0x0101371A, 0x010140A2, 0x0102E003, 0x0102FCA2,
100310x010AF250, 0x010AF3A2, 0x0113012A, 0x011302A2, 0x0113032A, 0x011304A2, 0x01133B2A,
100320x01133DA2, 0x011FD02A, 0x011FD2A2, 0x011FD32A, 0x011FD4A2, 0x01BCA020, 0x01BCA4A2,
100330x01D3602F, 0x01D372A2, 0x01F2502F, 0x01F252A2, 0xFFFFFFFF};
10036 structscript_data<2> {
10037 staticconstexpr
constcompact_range scripts_data = {
100380x000000A2, 0x0004836C, 0x00048426, 0x00048545, 0x00048726, 0x000488A2, 0x00060C61,
100390x00060DA2, 0x00061B61, 0x00061C85, 0x00061DA2, 0x00061F03, 0x000620A2, 0x00064003,
100400x000641A2, 0x00064B85, 0x000656A2, 0x00066090, 0x00066AA2, 0x00067085, 0x000671A2,
100410x0006D474, 0x0006D5A2, 0x0009511C, 0x000953A2, 0x0009641C, 0x0009661E, 0x000970A2,
100420x0009E612, 0x0009F0A2, 0x000A665B, 0x000A70A2, 0x000AE63F, 0x000AF0A2, 0x000BE68A,
100430x000BF4A2, 0x000CE65D, 0x000CF0A2, 0x0010405C, 0x00104AA2, 0x0010FB45, 0x0010FCA2,
100440x00173530, 0x001737A2, 0x0018026D, 0x001804A2, 0x0018056D, 0x001806A2, 0x001CD01C,
100450x001CD1A2, 0x001CD21C, 0x001CD32A, 0x001CD4A2, 0x001CD51C, 0x001CD77B, 0x001CD81C,
100460x001CD97B, 0x001CDA41, 0x001CDBA2, 0x001CDC7B, 0x001CDEA2, 0x001CE07B, 0x001CE11C,
100470x001CE2A2, 0x001CE95D, 0x001CEA1C, 0x001CEBA2, 0x001CED1C, 0x001CEEA2, 0x001CF21C,
100480x001CF32A, 0x001CF51C, 0x001CF7A2, 0x001CF82A, 0x001CFAA2, 0x001DF885, 0x001DF9A2,
100490x00202F58, 0x002030A2, 0x0020F02A, 0x0020F1A2, 0x002E4326, 0x002E44A2, 0x0030012E,
100500x003004A2, 0x0030082E, 0x003012A2, 0x0030132E, 0x003020A2, 0x00302A2F, 0x00302EA2,
100510x0030302E, 0x0030313C, 0x003036A2, 0x0030372E, 0x003038A2, 0x00303C33, 0x00303EA2,
100520x0030993C, 0x00309DA2, 0x0030A03C, 0x0030A1A2, 0x0030FB2E, 0x0030FC3C, 0x0030FDA2,
100530x00A66F26, 0x00A670A2, 0x00A70045, 0x00A708A2, 0x00A8301E, 0x00A83AA2, 0x00A8F11C,
100540x00A8F2A2, 0x00A8F38A, 0x00A8F4A2, 0x00A92E45, 0x00A92FA2, 0x00A9CF3A, 0x00A9D0A2,
100550x00FD3E61, 0x00FD40A2, 0x00FDF290, 0x00FDF3A2, 0x00FDFD90, 0x00FDFEA2, 0x00FE452E,
100560x00FE47A2, 0x00FF612E, 0x00FF66A2, 0x00FF703C, 0x00FF71A2, 0x00FF9E3C, 0x00FFA0A2,
100570x0101001A, 0x01010249, 0x010103A2, 0x01010748, 0x010134A2, 0x01013749, 0x010140A2,
100580x0102E018, 0x0102FCA2, 0x010AF269, 0x010AF3A2, 0x0113018A, 0x011302A2, 0x0113038A,
100590x011304A2, 0x01133B8A, 0x01133DA2, 0x011FD08A, 0x011FD2A2, 0x011FD38A, 0x011FD4A2,
10063 structscript_data<3> {
10064 staticconstexpr
constcompact_range scripts_data = {
100650x000000A2, 0x00060C74, 0x00060DA2, 0x00061B74, 0x00061C90, 0x00061DA2, 0x00061F61,
100660x000620A2, 0x0006404F, 0x000641A2, 0x0006609D, 0x00066AA2, 0x0009512A, 0x000953A2,
100670x0009641E, 0x00096642, 0x000970A2, 0x0009E684, 0x0009F0A2, 0x00104088, 0x00104AA2,
100680x00173586, 0x001737A2, 0x001CD02A, 0x001CD1A2, 0x001CD22A, 0x001CD3A2, 0x001CDA56,
100690x001CDBA2, 0x001CF22A, 0x001CF3A2, 0x001CF441, 0x001CF5A2, 0x0020F045, 0x0020F1A2,
100700x0030012F, 0x003004A2, 0x0030082F, 0x003012A2, 0x0030132F, 0x003020A2, 0x0030302F,
100710x003031A2, 0x0030372F, 0x003038A2, 0x00303C3C, 0x00303EA2, 0x0030FB2F, 0x0030FCA2,
100720x00A8302C, 0x00A83AA2, 0x00A92E5C, 0x00A92FA2, 0x00FE452F, 0x00FE47A2, 0x00FF612F,
100730x00FF66A2, 0x01010049, 0x010102A2, 0x01010749, 0x010134A2, 0xFFFFFFFF};
10076 structscript_data<4> {
10077 staticconstexpr
constcompact_range scripts_data = {
100780x000000A2, 0x00060C85, 0x00060DA2, 0x00061B85, 0x00061CA2, 0x00061F74, 0x000620A2,
100790x00064050, 0x000641A2, 0x0009512C, 0x000953A2, 0x00096427, 0x0009664D, 0x000970A2,
100800x0017358F, 0x001737A2, 0x001CD041, 0x001CD1A2, 0x001CD241, 0x001CD3A2, 0x001CDA66,
100810x001CDBA2, 0x001CF241, 0x001CF3A2, 0x00300133, 0x003004A2, 0x00300833, 0x003012A2,
100820x00301333, 0x003020A2, 0x00303033, 0x003031A2, 0x00303733, 0x003038A2, 0x0030FB33,
100830x0030FCA2, 0x00A8302D, 0x00A83AA2, 0x00FE4533, 0x00FE47A2, 0x00FF6133, 0x00FF66A2,
10087 structscript_data<5> {
10088 staticconstexpr
constcompact_range scripts_data = {
100890x000000A2, 0x00060C90, 0x00060DA2, 0x00061B90, 0x00061CA2, 0x00061F85,
100900x000620A2, 0x00064069, 0x000641A2, 0x0009512D, 0x000953A2, 0x00096428,
100910x000966A2, 0x001CDA8A, 0x001CDBA2, 0x001CF25D, 0x001CF3A2, 0x0030013C,
100920x003004A2, 0x0030083C, 0x003012A2, 0x0030133C, 0x003020A2, 0x0030303C,
100930x003031A2, 0x0030373C, 0x003038A2, 0x0030FB3C, 0x0030FCA2, 0x00A8303F,
100940x00A83AA2, 0x00FE453C, 0x00FE47A2, 0x00FF613C, 0x00FF66A2, 0xFFFFFFFF};
10097 structscript_data<6> {
10098 staticconstexpr
constcompact_range scripts_data = {
100990x000000A2, 0x00060C9D, 0x00060DA2, 0x00061B9D, 0x00061CA2, 0x00061F90, 0x000620A2,
101000x0006406F, 0x000641A2, 0x00095141, 0x000953A2, 0x0009642A, 0x000966A2, 0x001CDA8D,
101010x001CDBA2, 0x001CF266, 0x001CF3A2, 0x0030019E, 0x003003A2, 0x0030089E, 0x003012A2,
101020x0030149E, 0x00301CA2, 0x0030FB9E, 0x0030FCA2, 0x00A83041, 0x00A83642, 0x00A83AA2,
101030x00FF619E, 0x00FF66A2, 0xFFFFFFFF};
10106 structscript_data<7> {
10107 staticconstexpr
constcompact_range scripts_data = {
101080x000000A2, 0x00061F9D, 0x000620A2, 0x00064074, 0x000641A2,
101090x00095145, 0x000953A2, 0x0009642C, 0x000966A2, 0x001CF28D,
101100x001CF3A2, 0x00A83042, 0x00A8364D, 0x00A83AA2, 0xFFFFFFFF};
10113 structscript_data<8> {
10114 staticconstexpr
constcompact_range scripts_data = {
101150x000000A2, 0x0006407F, 0x000641A2, 0x00095156, 0x000953A2, 0x0009642D, 0x000966A2,
101160x001CF293, 0x001CF3A2, 0x00A8304D, 0x00A83657, 0x00A83AA2, 0xFFFFFFFF};
10119 structscript_data<9> {
10120 staticconstexpr
constcompact_range scripts_data = {
101210x000000A2, 0x00064085, 0x000641A2, 0x00095166, 0x000953A2, 0x00096441,
101220x000966A2, 0x00A83056, 0x00A83357, 0x00A8367D, 0x00A83AA2, 0xFFFFFFFF};
10125 structscript_data<10> {
10126 staticconstexpr
constcompact_range scripts_data = {
101270x000000A2, 0x0009517B, 0x0009528A, 0x000953A2, 0x0009644D, 0x00096547,
101280x000966A2, 0x00A83057, 0x00A8335D, 0x00A83687, 0x00A83AA2, 0xFFFFFFFF};
10131 structscript_data<11> {
10132 staticconstexpr
constcompact_range scripts_data = {
101330x000000A2, 0x0009518A, 0x0009528D, 0x000953A2, 0x00096456, 0x0009654D,
101340x000966A2, 0x00A8305D, 0x00A8337D, 0x00A83693, 0x00A83AA2, 0xFFFFFFFF};
10137 structscript_data<12> {
10138 staticconstexpr
constcompact_range scripts_data = {
101390x000000A2, 0x0009518D, 0x00095293, 0x000953A2, 0x0009645D, 0x00096556,
101400x000966A2, 0x00A8307D, 0x00A83387, 0x00A836A2, 0xFFFFFFFF};
10143 structscript_data<13> {
10144 staticconstexpr
constcompact_range scripts_data = {
101450x000000A2, 0x00095193, 0x000952A2, 0x00096466, 0x0009655D,
101460x000966A2, 0x00A83087, 0x00A83393, 0x00A836A2, 0xFFFFFFFF};
10149 structscript_data<14> {
10150 staticconstexpr
constcompact_range scripts_data = {
101510x000000A2, 0x0009647D, 0x00096566, 0x000966A2, 0x00A83093, 0x00A833A2, 0xFFFFFFFF};
10154 structscript_data<15> {
10155 staticconstexpr
constcompact_range scripts_data = {0x000000A2, 0x0009647E, 0x0009657D,
101560x000966A2, 0xFFFFFFFF};
10159 structscript_data<16> {
10160 staticconstexpr
constcompact_range scripts_data = {0x000000A2, 0x00096484, 0x0009657E,
101610x000966A2, 0xFFFFFFFF};
10164 structscript_data<17> {
10165 staticconstexpr
constcompact_range scripts_data = {0x000000A2, 0x00096487, 0x00096584,
101660x000966A2, 0xFFFFFFFF};
10169 structscript_data<18> {
10170 staticconstexpr
constcompact_range scripts_data = {0x000000A2, 0x0009648A, 0x00096587,
101710x000966A2, 0xFFFFFFFF};
10174 structscript_data<19> {
10175 staticconstexpr
constcompact_range scripts_data = {0x000000A2, 0x0009648D, 0x0009658A,
101760x000966A2, 0xFFFFFFFF};
10179 structscript_data<20> {
10180 staticconstexpr
constcompact_range scripts_data = {0x000000A2, 0x00096493, 0x0009658D,
101810x000966A2, 0xFFFFFFFF};
10184 structscript_data<21> {
10185 staticconstexpr
constcompact_range scripts_data = {0x000000A2, 0x00096593, 0x000966A2,
10189constexpr script cp_script(char32_t cp) {
10191 returnscript::unknown;
10193uni::script sc =
static_cast<uni::script
>(
10194script_data<N>::scripts_data.value(cp,
uint8_t(script::unknown)));
10197constexpr script get_cp_script(char32_t cp,
intidx) {
10199 case0:
returncp_script<0>(cp);
10200 case1:
returncp_script<1>(cp);
10201 case2:
returncp_script<2>(cp);
10202 case3:
returncp_script<3>(cp);
10203 case4:
returncp_script<4>(cp);
10204 case5:
returncp_script<5>(cp);
10205 case6:
returncp_script<6>(cp);
10206 case7:
returncp_script<7>(cp);
10207 case8:
returncp_script<8>(cp);
10208 case9:
returncp_script<9>(cp);
10209 case10:
returncp_script<10>(cp);
10210 case11:
returncp_script<11>(cp);
10211 case12:
returncp_script<12>(cp);
10212 case13:
returncp_script<13>(cp);
10213 case14:
returncp_script<14>(cp);
10214 case15:
returncp_script<15>(cp);
10215 case16:
returncp_script<16>(cp);
10216 case17:
returncp_script<17>(cp);
10217 case18:
returncp_script<18>(cp);
10218 case19:
returncp_script<19>(cp);
10219 case20:
returncp_script<20>(cp);
10220 case21:
returncp_script<21>(cp);
10222 returnscript::zzzz;
10224 staticconstexpr compact_list numeric_data8 = {
102250x00003000, 0x00003101, 0x00003202, 0x00003303, 0x00003404, 0x00003505, 0x00003606,
102260x00003707, 0x00003808, 0x00003909, 0x0000B202, 0x0000B303, 0x0000B901, 0x0000BC01,
102270x0000BD01, 0x0000BE03, 0x00066000, 0x00066101, 0x00066202, 0x00066303, 0x00066404,
102280x00066505, 0x00066606, 0x00066707, 0x00066808, 0x00066909, 0x0006F000, 0x0006F101,
102290x0006F202, 0x0006F303, 0x0006F404, 0x0006F505, 0x0006F606, 0x0006F707, 0x0006F808,
102300x0006F909, 0x0007C000, 0x0007C101, 0x0007C202, 0x0007C303, 0x0007C404, 0x0007C505,
102310x0007C606, 0x0007C707, 0x0007C808, 0x0007C909, 0x00096600, 0x00096701, 0x00096802,
102320x00096903, 0x00096A04, 0x00096B05, 0x00096C06, 0x00096D07, 0x00096E08, 0x00096F09,
102330x0009E600, 0x0009E701, 0x0009E802, 0x0009E903, 0x0009EA04, 0x0009EB05, 0x0009EC06,
102340x0009ED07, 0x0009EE08, 0x0009EF09, 0x0009F401, 0x0009F501, 0x0009F603, 0x0009F701,
102350x0009F803, 0x0009F910, 0x000A6600, 0x000A6701, 0x000A6802, 0x000A6903, 0x000A6A04,
102360x000A6B05, 0x000A6C06, 0x000A6D07, 0x000A6E08, 0x000A6F09, 0x000AE600, 0x000AE701,
102370x000AE802, 0x000AE903, 0x000AEA04, 0x000AEB05, 0x000AEC06, 0x000AED07, 0x000AEE08,
102380x000AEF09, 0x000B6600, 0x000B6701, 0x000B6802, 0x000B6903, 0x000B6A04, 0x000B6B05,
102390x000B6C06, 0x000B6D07, 0x000B6E08, 0x000B6F09, 0x000B7201, 0x000B7301, 0x000B7403,
102400x000B7501, 0x000B7601, 0x000B7703, 0x000BE600, 0x000BE701, 0x000BE802, 0x000BE903,
102410x000BEA04, 0x000BEB05, 0x000BEC06, 0x000BED07, 0x000BEE08, 0x000BEF09, 0x000BF00A,
102420x000BF164, 0x000C6600, 0x000C6701, 0x000C6802, 0x000C6903, 0x000C6A04, 0x000C6B05,
102430x000C6C06, 0x000C6D07, 0x000C6E08, 0x000C6F09, 0x000C7800, 0x000C7901, 0x000C7A02,
102440x000C7B03, 0x000C7C01, 0x000C7D02, 0x000C7E03, 0x000CE600, 0x000CE701, 0x000CE802,
102450x000CE903, 0x000CEA04, 0x000CEB05, 0x000CEC06, 0x000CED07, 0x000CEE08, 0x000CEF09,
102460x000D5801, 0x000D5901, 0x000D5A03, 0x000D5B01, 0x000D5C01, 0x000D5D03, 0x000D5E01,
102470x000D6600, 0x000D6701, 0x000D6802, 0x000D6903, 0x000D6A04, 0x000D6B05, 0x000D6C06,
102480x000D6D07, 0x000D6E08, 0x000D6F09, 0x000D700A, 0x000D7164, 0x000D7301, 0x000D7401,
102490x000D7503, 0x000D7601, 0x000D7701, 0x000D7803, 0x000DE600, 0x000DE701, 0x000DE802,
102500x000DE903, 0x000DEA04, 0x000DEB05, 0x000DEC06, 0x000DED07, 0x000DEE08, 0x000DEF09,
102510x000E5000, 0x000E5101, 0x000E5202, 0x000E5303, 0x000E5404, 0x000E5505, 0x000E5606,
102520x000E5707, 0x000E5808, 0x000E5909, 0x000ED000, 0x000ED101, 0x000ED202, 0x000ED303,
102530x000ED404, 0x000ED505, 0x000ED606, 0x000ED707, 0x000ED808, 0x000ED909, 0x000F2000,
102540x000F2101, 0x000F2202, 0x000F2303, 0x000F2404, 0x000F2505, 0x000F2606, 0x000F2707,
102550x000F2808, 0x000F2909, 0x000F2A01, 0x000F2B03, 0x000F2C05, 0x000F2D07, 0x000F2E09,
102560x000F2F0B, 0x000F300D, 0x000F310F, 0x000F3211, 0x00104000, 0x00104101, 0x00104202,
102570x00104303, 0x00104404, 0x00104505, 0x00104606, 0x00104707, 0x00104808, 0x00104909,
102580x00109000, 0x00109101, 0x00109202, 0x00109303, 0x00109404, 0x00109505, 0x00109606,
102590x00109707, 0x00109808, 0x00109909, 0x00136901, 0x00136A02, 0x00136B03, 0x00136C04,
102600x00136D05, 0x00136E06, 0x00136F07, 0x00137008, 0x00137109, 0x0013720A, 0x00137314,
102610x0013741E, 0x00137528, 0x00137632, 0x0013773C, 0x00137846, 0x00137950, 0x00137A5A,
102620x00137B64, 0x0016EE11, 0x0016EF12, 0x0016F013, 0x0017E000, 0x0017E101, 0x0017E202,
102630x0017E303, 0x0017E404, 0x0017E505, 0x0017E606, 0x0017E707, 0x0017E808, 0x0017E909,
102640x0017F000, 0x0017F101, 0x0017F202, 0x0017F303, 0x0017F404, 0x0017F505, 0x0017F606,
102650x0017F707, 0x0017F808, 0x0017F909, 0x00181000, 0x00181101, 0x00181202, 0x00181303,
102660x00181404, 0x00181505, 0x00181606, 0x00181707, 0x00181808, 0x00181909, 0x00194600,
102670x00194701, 0x00194802, 0x00194903, 0x00194A04, 0x00194B05, 0x00194C06, 0x00194D07,
102680x00194E08, 0x00194F09, 0x0019D000, 0x0019D101, 0x0019D202, 0x0019D303, 0x0019D404,
102690x0019D505, 0x0019D606, 0x0019D707, 0x0019D808, 0x0019D909, 0x0019DA01, 0x001A8000,
102700x001A8101, 0x001A8202, 0x001A8303, 0x001A8404, 0x001A8505, 0x001A8606, 0x001A8707,
102710x001A8808, 0x001A8909, 0x001A9000, 0x001A9101, 0x001A9202, 0x001A9303, 0x001A9404,
102720x001A9505, 0x001A9606, 0x001A9707, 0x001A9808, 0x001A9909, 0x001B5000, 0x001B5101,
102730x001B5202, 0x001B5303, 0x001B5404, 0x001B5505, 0x001B5606, 0x001B5707, 0x001B5808,
102740x001B5909, 0x001BB000, 0x001BB101, 0x001BB202, 0x001BB303, 0x001BB404, 0x001BB505,
102750x001BB606, 0x001BB707, 0x001BB808, 0x001BB909, 0x001C4000, 0x001C4101, 0x001C4202,
102760x001C4303, 0x001C4404, 0x001C4505, 0x001C4606, 0x001C4707, 0x001C4808, 0x001C4909,
102770x001C5000, 0x001C5101, 0x001C5202, 0x001C5303, 0x001C5404, 0x001C5505, 0x001C5606,
102780x001C5707, 0x001C5808, 0x001C5909, 0x00207000, 0x00207404, 0x00207505, 0x00207606,
102790x00207707, 0x00207808, 0x00207909, 0x00208000, 0x00208101, 0x00208202, 0x00208303,
102800x00208404, 0x00208505, 0x00208606, 0x00208707, 0x00208808, 0x00208909, 0x00215001,
102810x00215101, 0x00215201, 0x00215301, 0x00215402, 0x00215501, 0x00215602, 0x00215703,
102820x00215804, 0x00215901, 0x00215A05, 0x00215B01, 0x00215C03, 0x00215D05, 0x00215E07,
102830x00215F01, 0x00216001, 0x00216102, 0x00216203, 0x00216304, 0x00216405, 0x00216506,
102840x00216607, 0x00216708, 0x00216809, 0x0021690A, 0x00216A0B, 0x00216B0C, 0x00216C32,
102850x00216D64, 0x00217001, 0x00217102, 0x00217203, 0x00217304, 0x00217405, 0x00217506,
102860x00217607, 0x00217708, 0x00217809, 0x0021790A, 0x00217A0B, 0x00217B0C, 0x00217C32,
102870x00217D64, 0x00218506, 0x00218632, 0x00218900, 0x00246001, 0x00246102, 0x00246203,
102880x00246304, 0x00246405, 0x00246506, 0x00246607, 0x00246708, 0x00246809, 0x0024690A,
102890x00246A0B, 0x00246B0C, 0x00246C0D, 0x00246D0E, 0x00246E0F, 0x00246F10, 0x00247011,
102900x00247112, 0x00247213, 0x00247314, 0x00247401, 0x00247502, 0x00247603, 0x00247704,
102910x00247805, 0x00247906, 0x00247A07, 0x00247B08, 0x00247C09, 0x00247D0A, 0x00247E0B,
102920x00247F0C, 0x0024800D, 0x0024810E, 0x0024820F, 0x00248310, 0x00248411, 0x00248512,
102930x00248613, 0x00248714, 0x00248801, 0x00248902, 0x00248A03, 0x00248B04, 0x00248C05,
102940x00248D06, 0x00248E07, 0x00248F08, 0x00249009, 0x0024910A, 0x0024920B, 0x0024930C,
102950x0024940D, 0x0024950E, 0x0024960F, 0x00249710, 0x00249811, 0x00249912, 0x00249A13,
102960x00249B14, 0x0024EA00, 0x0024EB0B, 0x0024EC0C, 0x0024ED0D, 0x0024EE0E, 0x0024EF0F,
102970x0024F010, 0x0024F111, 0x0024F212, 0x0024F313, 0x0024F414, 0x0024F501, 0x0024F602,
102980x0024F703, 0x0024F804, 0x0024F905, 0x0024FA06, 0x0024FB07, 0x0024FC08, 0x0024FD09,
102990x0024FE0A, 0x0024FF00, 0x00277601, 0x00277702, 0x00277803, 0x00277904, 0x00277A05,
103000x00277B06, 0x00277C07, 0x00277D08, 0x00277E09, 0x00277F0A, 0x00278001, 0x00278102,
103010x00278203, 0x00278304, 0x00278405, 0x00278506, 0x00278607, 0x00278708, 0x00278809,
103020x0027890A, 0x00278A01, 0x00278B02, 0x00278C03, 0x00278D04, 0x00278E05, 0x00278F06,
103030x00279007, 0x00279108, 0x00279209, 0x0027930A, 0x002CFD01, 0x00300700, 0x00302101,
103040x00302202, 0x00302303, 0x00302404, 0x00302505, 0x00302606, 0x00302707, 0x00302808,
103050x00302909, 0x0030380A, 0x00303914, 0x00303A1E, 0x00319201, 0x00319302, 0x00319403,
103060x00319504, 0x00322001, 0x00322102, 0x00322203, 0x00322304, 0x00322405, 0x00322506,
103070x00322607, 0x00322708, 0x00322809, 0x0032290A, 0x0032480A, 0x00324914, 0x00324A1E,
103080x00324B28, 0x00324C32, 0x00324D3C, 0x00324E46, 0x00324F50, 0x00325115, 0x00325216,
103090x00325317, 0x00325418, 0x00325519, 0x0032561A, 0x0032571B, 0x0032581C, 0x0032591D,
103100x00325A1E, 0x00325B1F, 0x00325C20, 0x00325D21, 0x00325E22, 0x00325F23, 0x00328001,
103110x00328102, 0x00328203, 0x00328304, 0x00328405, 0x00328506, 0x00328607, 0x00328708,
103120x00328809, 0x0032890A, 0x0032B124, 0x0032B225, 0x0032B326, 0x0032B427, 0x0032B528,
103130x0032B629, 0x0032B72A, 0x0032B82B, 0x0032B92C, 0x0032BA2D, 0x0032BB2E, 0x0032BC2F,
103140x0032BD30, 0x0032BE31, 0x0032BF32, 0x00340505, 0x00348302, 0x00382A05, 0x003B4D07,
103150x004E0001, 0x004E0307, 0x004E0903, 0x004E5D09, 0x004E8C02, 0x004E9405, 0x004E9604,
103160x004EC00A, 0x004EE803, 0x004F0D05, 0x004F7064, 0x00516902, 0x00516B08, 0x00516D06,
103170x0053410A, 0x00534414, 0x0053451E, 0x00534C28, 0x0053C103, 0x0053C203, 0x0053C303,
103180x0053C403, 0x0056DB04, 0x0058F101, 0x0058F901, 0x005E7A01, 0x005EFE09, 0x005EFF14,
103190x005F0C01, 0x005F0D02, 0x005F0E03, 0x005F1002, 0x0062FE0A, 0x00634C08, 0x0067D207,
103200x006F0607, 0x00739609, 0x00767E64, 0x00808604, 0x008CAE02, 0x008CB302, 0x008D3002,
103210x00964606, 0x00964C64, 0x00967806, 0x0096F600, 0x00A62000, 0x00A62101, 0x00A62202,
103220x00A62303, 0x00A62404, 0x00A62505, 0x00A62606, 0x00A62707, 0x00A62808, 0x00A62909,
103230x00A6E601, 0x00A6E702, 0x00A6E803, 0x00A6E904, 0x00A6EA05, 0x00A6EB06, 0x00A6EC07,
103240x00A6ED08, 0x00A6EE09, 0x00A6EF00, 0x00A83001, 0x00A83101, 0x00A83203, 0x00A83301,
103250x00A83401, 0x00A83503, 0x00A8D000, 0x00A8D101, 0x00A8D202, 0x00A8D303, 0x00A8D404,
103260x00A8D505, 0x00A8D606, 0x00A8D707, 0x00A8D808, 0x00A8D909, 0x00A90000, 0x00A90101,
103270x00A90202, 0x00A90303, 0x00A90404, 0x00A90505, 0x00A90606, 0x00A90707, 0x00A90808,
103280x00A90909, 0x00A9D000, 0x00A9D101, 0x00A9D202, 0x00A9D303, 0x00A9D404, 0x00A9D505,
103290x00A9D606, 0x00A9D707, 0x00A9D808, 0x00A9D909, 0x00A9F000, 0x00A9F101, 0x00A9F202,
103300x00A9F303, 0x00A9F404, 0x00A9F505, 0x00A9F606, 0x00A9F707, 0x00A9F808, 0x00A9F909,
103310x00AA5000, 0x00AA5101, 0x00AA5202, 0x00AA5303, 0x00AA5404, 0x00AA5505, 0x00AA5606,
103320x00AA5707, 0x00AA5808, 0x00AA5909, 0x00ABF000, 0x00ABF101, 0x00ABF202, 0x00ABF303,
103330x00ABF404, 0x00ABF505, 0x00ABF606, 0x00ABF707, 0x00ABF808, 0x00ABF909, 0x00F96B03,
103340x00F9730A, 0x00F97802, 0x00F9B200, 0x00F9D106, 0x00F9D306, 0x00F9FD0A, 0x00FF1000,
103350x00FF1101, 0x00FF1202, 0x00FF1303, 0x00FF1404, 0x00FF1505, 0x00FF1606, 0x00FF1707,
103360x00FF1808, 0x00FF1909, 0x01010701, 0x01010802, 0x01010903, 0x01010A04, 0x01010B05,
103370x01010C06, 0x01010D07, 0x01010E08, 0x01010F09, 0x0101100A, 0x01011114, 0x0101121E,
103380x01011328, 0x01011432, 0x0101153C, 0x01011646, 0x01011750, 0x0101185A, 0x01011964,
103390x01014001, 0x01014101, 0x01014201, 0x01014305, 0x01014432, 0x01014805, 0x0101490A,
103400x01014A32, 0x01014B64, 0x01014F05, 0x0101500A, 0x01015132, 0x01015264, 0x0101570A,
103410x01015801, 0x01015901, 0x01015A01, 0x01015B02, 0x01015C02, 0x01015D02, 0x01015E02,
103420x01015F05, 0x0101600A, 0x0101610A, 0x0101620A, 0x0101630A, 0x0101640A, 0x0101651E,
103430x01016632, 0x01016732, 0x01016832, 0x01016932, 0x01016A64, 0x01017305, 0x01017432,
103440x01017501, 0x01017601, 0x01017702, 0x01017803, 0x01018A00, 0x01018B01, 0x0102E101,
103450x0102E202, 0x0102E303, 0x0102E404, 0x0102E505, 0x0102E606, 0x0102E707, 0x0102E808,
103460x0102E909, 0x0102EA0A, 0x0102EB14, 0x0102EC1E, 0x0102ED28, 0x0102EE32, 0x0102EF3C,
103470x0102F046, 0x0102F150, 0x0102F25A, 0x0102F364, 0x01032001, 0x01032105, 0x0103220A,
103480x01032332, 0x0103415A, 0x0103D101, 0x0103D202, 0x0103D30A, 0x0103D414, 0x0103D564,
103490x0104A000, 0x0104A101, 0x0104A202, 0x0104A303, 0x0104A404, 0x0104A505, 0x0104A606,
103500x0104A707, 0x0104A808, 0x0104A909, 0x01085801, 0x01085902, 0x01085A03, 0x01085B0A,
103510x01085C14, 0x01085D64, 0x01087901, 0x01087A02, 0x01087B03, 0x01087C04, 0x01087D05,
103520x01087E0A, 0x01087F14, 0x0108A701, 0x0108A802, 0x0108A903, 0x0108AA04, 0x0108AB04,
103530x0108AC05, 0x0108AD0A, 0x0108AE14, 0x0108AF64, 0x0108FB01, 0x0108FC05, 0x0108FD0A,
103540x0108FE14, 0x0108FF64, 0x01091601, 0x0109170A, 0x01091814, 0x01091964, 0x01091A02,
103550x01091B03, 0x0109BC0B, 0x0109BD01, 0x0109C001, 0x0109C102, 0x0109C203, 0x0109C304,
103560x0109C405, 0x0109C506, 0x0109C607, 0x0109C708, 0x0109C809, 0x0109C90A, 0x0109CA14,
103570x0109CB1E, 0x0109CC28, 0x0109CD32, 0x0109CE3C, 0x0109CF46, 0x0109D264, 0x0109F601,
103580x0109F702, 0x0109F803, 0x0109F904, 0x0109FA05, 0x0109FB06, 0x0109FC07, 0x0109FD08,
103590x0109FE09, 0x0109FF0A, 0x010A4001, 0x010A4102, 0x010A4203, 0x010A4304, 0x010A440A,
103600x010A4514, 0x010A4664, 0x010A4801, 0x010A7D01, 0x010A7E32, 0x010A9D01, 0x010A9E0A,
103610x010A9F14, 0x010AEB01, 0x010AEC05, 0x010AED0A, 0x010AEE14, 0x010AEF64, 0x010B5801,
103620x010B5902, 0x010B5A03, 0x010B5B04, 0x010B5C0A, 0x010B5D14, 0x010B5E64, 0x010B7801,
103630x010B7902, 0x010B7A03, 0x010B7B04, 0x010B7C0A, 0x010B7D14, 0x010B7E64, 0x010BA901,
103640x010BAA02, 0x010BAB03, 0x010BAC04, 0x010BAD0A, 0x010BAE14, 0x010BAF64, 0x010CFA01,
103650x010CFB05, 0x010CFC0A, 0x010CFD32, 0x010CFE64, 0x010D3000, 0x010D3101, 0x010D3202,
103660x010D3303, 0x010D3404, 0x010D3505, 0x010D3606, 0x010D3707, 0x010D3808, 0x010D3909,
103670x010E6001, 0x010E6102, 0x010E6203, 0x010E6304, 0x010E6405, 0x010E6506, 0x010E6607,
103680x010E6708, 0x010E6809, 0x010E690A, 0x010E6A14, 0x010E6B1E, 0x010E6C28, 0x010E6D32,
103690x010E6E3C, 0x010E6F46, 0x010E7050, 0x010E715A, 0x010E7264, 0x010E7B01, 0x010E7C01,
103700x010E7D01, 0x010E7E02, 0x010F1D01, 0x010F1E02, 0x010F1F03, 0x010F2004, 0x010F2105,
103710x010F220A, 0x010F2314, 0x010F241E, 0x010F2564, 0x010F2601, 0x010F5101, 0x010F520A,
103720x010F5314, 0x010F5464, 0x010FC501, 0x010FC602, 0x010FC703, 0x010FC804, 0x010FC90A,
103730x010FCA14, 0x010FCB64, 0x01105201, 0x01105302, 0x01105403, 0x01105504, 0x01105605,
103740x01105706, 0x01105807, 0x01105908, 0x01105A09, 0x01105B0A, 0x01105C14, 0x01105D1E,
103750x01105E28, 0x01105F32, 0x0110603C, 0x01106146, 0x01106250, 0x0110635A, 0x01106464,
103760x01106600, 0x01106701, 0x01106802, 0x01106903, 0x01106A04, 0x01106B05, 0x01106C06,
103770x01106D07, 0x01106E08, 0x01106F09, 0x0110F000, 0x0110F101, 0x0110F202, 0x0110F303,
103780x0110F404, 0x0110F505, 0x0110F606, 0x0110F707, 0x0110F808, 0x0110F909, 0x01113600,
103790x01113701, 0x01113802, 0x01113903, 0x01113A04, 0x01113B05, 0x01113C06, 0x01113D07,
103800x01113E08, 0x01113F09, 0x0111D000, 0x0111D101, 0x0111D202, 0x0111D303, 0x0111D404,
103810x0111D505, 0x0111D606, 0x0111D707, 0x0111D808, 0x0111D909, 0x0111E101, 0x0111E202,
103820x0111E303, 0x0111E404, 0x0111E505, 0x0111E606, 0x0111E707, 0x0111E808, 0x0111E909,
103830x0111EA0A, 0x0111EB14, 0x0111EC1E, 0x0111ED28, 0x0111EE32, 0x0111EF3C, 0x0111F046,
103840x0111F150, 0x0111F25A, 0x0111F364, 0x0112F000, 0x0112F101, 0x0112F202, 0x0112F303,
103850x0112F404, 0x0112F505, 0x0112F606, 0x0112F707, 0x0112F808, 0x0112F909, 0x01145000,
103860x01145101, 0x01145202, 0x01145303, 0x01145404, 0x01145505, 0x01145606, 0x01145707,
103870x01145808, 0x01145909, 0x0114D000, 0x0114D101, 0x0114D202, 0x0114D303, 0x0114D404,
103880x0114D505, 0x0114D606, 0x0114D707, 0x0114D808, 0x0114D909, 0x01165000, 0x01165101,
103890x01165202, 0x01165303, 0x01165404, 0x01165505, 0x01165606, 0x01165707, 0x01165808,
103900x01165909, 0x0116C000, 0x0116C101, 0x0116C202, 0x0116C303, 0x0116C404, 0x0116C505,
103910x0116C606, 0x0116C707, 0x0116C808, 0x0116C909, 0x01173000, 0x01173101, 0x01173202,
103920x01173303, 0x01173404, 0x01173505, 0x01173606, 0x01173707, 0x01173808, 0x01173909,
103930x01173A0A, 0x01173B14, 0x0118E000, 0x0118E101, 0x0118E202, 0x0118E303, 0x0118E404,
103940x0118E505, 0x0118E606, 0x0118E707, 0x0118E808, 0x0118E909, 0x0118EA0A, 0x0118EB14,
103950x0118EC1E, 0x0118ED28, 0x0118EE32, 0x0118EF3C, 0x0118F046, 0x0118F150, 0x0118F25A,
103960x01195000, 0x01195101, 0x01195202, 0x01195303, 0x01195404, 0x01195505, 0x01195606,
103970x01195707, 0x01195808, 0x01195909, 0x011C5000, 0x011C5101, 0x011C5202, 0x011C5303,
103980x011C5404, 0x011C5505, 0x011C5606, 0x011C5707, 0x011C5808, 0x011C5909, 0x011C5A01,
103990x011C5B02, 0x011C5C03, 0x011C5D04, 0x011C5E05, 0x011C5F06, 0x011C6007, 0x011C6108,
104000x011C6209, 0x011C630A, 0x011C6414, 0x011C651E, 0x011C6628, 0x011C6732, 0x011C683C,
104010x011C6946, 0x011C6A50, 0x011C6B5A, 0x011C6C64, 0x011D5000, 0x011D5101, 0x011D5202,
104020x011D5303, 0x011D5404, 0x011D5505, 0x011D5606, 0x011D5707, 0x011D5808, 0x011D5909,
104030x011DA000, 0x011DA101, 0x011DA202, 0x011DA303, 0x011DA404, 0x011DA505, 0x011DA606,
104040x011DA707, 0x011DA808, 0x011DA909, 0x011FC001, 0x011FC101, 0x011FC201, 0x011FC301,
104050x011FC401, 0x011FC501, 0x011FC603, 0x011FC703, 0x011FC801, 0x011FC901, 0x011FCA01,
104060x011FCB01, 0x011FCC01, 0x011FCD03, 0x011FCE03, 0x011FCF01, 0x011FD001, 0x011FD101,
104070x011FD201, 0x011FD303, 0x011FD401, 0x01240002, 0x01240103, 0x01240204, 0x01240305,
104080x01240406, 0x01240507, 0x01240608, 0x01240709, 0x01240803, 0x01240904, 0x01240A05,
104090x01240B06, 0x01240C07, 0x01240D08, 0x01240E09, 0x01240F04, 0x01241005, 0x01241106,
104100x01241207, 0x01241308, 0x01241409, 0x01241501, 0x01241602, 0x01241703, 0x01241804,
104110x01241905, 0x01241A06, 0x01241B07, 0x01241C08, 0x01241D09, 0x01241E01, 0x01241F02,
104120x01242003, 0x01242104, 0x01242205, 0x01242302, 0x01242403, 0x01242503, 0x01242604,
104130x01242705, 0x01242806, 0x01242907, 0x01242A08, 0x01242B09, 0x01242C01, 0x01242D02,
104140x01242E03, 0x01242F03, 0x01243004, 0x01243105, 0x01243401, 0x01243502, 0x01243603,
104150x01243703, 0x01243804, 0x01243905, 0x01243A03, 0x01243B03, 0x01243C04, 0x01243D04,
104160x01243E04, 0x01243F04, 0x01244006, 0x01244107, 0x01244207, 0x01244307, 0x01244408,
104170x01244508, 0x01244609, 0x01244709, 0x01244809, 0x01244909, 0x01244A02, 0x01244B03,
104180x01244C04, 0x01244D05, 0x01244E06, 0x01244F01, 0x01245002, 0x01245103, 0x01245204,
104190x01245304, 0x01245405, 0x01245505, 0x01245602, 0x01245703, 0x01245801, 0x01245902,
104200x01245A01, 0x01245B02, 0x01245C05, 0x01245D01, 0x01245E02, 0x01245F01, 0x01246001,
104210x01246101, 0x01246201, 0x01246301, 0x01246401, 0x01246501, 0x01246602, 0x01246728,
104220x01246832, 0x01246904, 0x01246A05, 0x01246B06, 0x01246C07, 0x01246D08, 0x01246E09,
104230x016A6000, 0x016A6101, 0x016A6202, 0x016A6303, 0x016A6404, 0x016A6505, 0x016A6606,
104240x016A6707, 0x016A6808, 0x016A6909, 0x016AC000, 0x016AC101, 0x016AC202, 0x016AC303,
104250x016AC404, 0x016AC505, 0x016AC606, 0x016AC707, 0x016AC808, 0x016AC909, 0x016B5000,
104260x016B5101, 0x016B5202, 0x016B5303, 0x016B5404, 0x016B5505, 0x016B5606, 0x016B5707,
104270x016B5808, 0x016B5909, 0x016B5B0A, 0x016B5C64, 0x016E8000, 0x016E8101, 0x016E8202,
104280x016E8303, 0x016E8404, 0x016E8505, 0x016E8606, 0x016E8707, 0x016E8808, 0x016E8909,
104290x016E8A0A, 0x016E8B0B, 0x016E8C0C, 0x016E8D0D, 0x016E8E0E, 0x016E8F0F, 0x016E9010,
104300x016E9111, 0x016E9212, 0x016E9313, 0x016E9401, 0x016E9502, 0x016E9603, 0x01D2E000,
104310x01D2E101, 0x01D2E202, 0x01D2E303, 0x01D2E404, 0x01D2E505, 0x01D2E606, 0x01D2E707,
104320x01D2E808, 0x01D2E909, 0x01D2EA0A, 0x01D2EB0B, 0x01D2EC0C, 0x01D2ED0D, 0x01D2EE0E,
104330x01D2EF0F, 0x01D2F010, 0x01D2F111, 0x01D2F212, 0x01D2F313, 0x01D36001, 0x01D36102,
104340x01D36203, 0x01D36304, 0x01D36405, 0x01D36506, 0x01D36607, 0x01D36708, 0x01D36809,
104350x01D3690A, 0x01D36A14, 0x01D36B1E, 0x01D36C28, 0x01D36D32, 0x01D36E3C, 0x01D36F46,
104360x01D37050, 0x01D3715A, 0x01D37201, 0x01D37302, 0x01D37403, 0x01D37504, 0x01D37605,
104370x01D37701, 0x01D37805, 0x01D7CE00, 0x01D7CF01, 0x01D7D002, 0x01D7D103, 0x01D7D204,
104380x01D7D305, 0x01D7D406, 0x01D7D507, 0x01D7D608, 0x01D7D709, 0x01D7D800, 0x01D7D901,
104390x01D7DA02, 0x01D7DB03, 0x01D7DC04, 0x01D7DD05, 0x01D7DE06, 0x01D7DF07, 0x01D7E008,
104400x01D7E109, 0x01D7E200, 0x01D7E301, 0x01D7E402, 0x01D7E503, 0x01D7E604, 0x01D7E705,
104410x01D7E806, 0x01D7E907, 0x01D7EA08, 0x01D7EB09, 0x01D7EC00, 0x01D7ED01, 0x01D7EE02,
104420x01D7EF03, 0x01D7F004, 0x01D7F105, 0x01D7F206, 0x01D7F307, 0x01D7F408, 0x01D7F509,
104430x01D7F600, 0x01D7F701, 0x01D7F802, 0x01D7F903, 0x01D7FA04, 0x01D7FB05, 0x01D7FC06,
104440x01D7FD07, 0x01D7FE08, 0x01D7FF09, 0x01E14000, 0x01E14101, 0x01E14202, 0x01E14303,
104450x01E14404, 0x01E14505, 0x01E14606, 0x01E14707, 0x01E14808, 0x01E14909, 0x01E2F000,
104460x01E2F101, 0x01E2F202, 0x01E2F303, 0x01E2F404, 0x01E2F505, 0x01E2F606, 0x01E2F707,
104470x01E2F808, 0x01E2F909, 0x01E8C701, 0x01E8C802, 0x01E8C903, 0x01E8CA04, 0x01E8CB05,
104480x01E8CC06, 0x01E8CD07, 0x01E8CE08, 0x01E8CF09, 0x01E95000, 0x01E95101, 0x01E95202,
104490x01E95303, 0x01E95404, 0x01E95505, 0x01E95606, 0x01E95707, 0x01E95808, 0x01E95909,
104500x01EC7101, 0x01EC7202, 0x01EC7303, 0x01EC7404, 0x01EC7505, 0x01EC7606, 0x01EC7707,
104510x01EC7808, 0x01EC7909, 0x01EC7A0A, 0x01EC7B14, 0x01EC7C1E, 0x01EC7D28, 0x01EC7E32,
104520x01EC7F3C, 0x01EC8046, 0x01EC8150, 0x01EC825A, 0x01EC8364, 0x01ECA301, 0x01ECA402,
104530x01ECA503, 0x01ECA604, 0x01ECA705, 0x01ECA806, 0x01ECA907, 0x01ECAA08, 0x01ECAB09,
104540x01ECAD01, 0x01ECAE01, 0x01ECAF03, 0x01ECB101, 0x01ECB202, 0x01ED0101, 0x01ED0202,
104550x01ED0303, 0x01ED0404, 0x01ED0505, 0x01ED0606, 0x01ED0707, 0x01ED0808, 0x01ED0909,
104560x01ED0A0A, 0x01ED0B14, 0x01ED0C1E, 0x01ED0D28, 0x01ED0E32, 0x01ED0F3C, 0x01ED1046,
104570x01ED1150, 0x01ED125A, 0x01ED1364, 0x01ED2F02, 0x01ED3003, 0x01ED3104, 0x01ED3205,
104580x01ED3306, 0x01ED3407, 0x01ED3508, 0x01ED3609, 0x01ED370A, 0x01ED3C01, 0x01ED3D01,
104590x01F10000, 0x01F10100, 0x01F10201, 0x01F10302, 0x01F10403, 0x01F10504, 0x01F10605,
104600x01F10706, 0x01F10807, 0x01F10908, 0x01F10A09, 0x01F10B00, 0x01F10C00, 0x01FBF000,
104610x01FBF101, 0x01FBF202, 0x01FBF303, 0x01FBF404, 0x01FBF505, 0x01FBF606, 0x01FBF707,
104620x01FBF808, 0x01FBF909, 0x02000107, 0x02006404, 0x0200E204, 0x02012105, 0x02092A01,
104630x0209831E, 0x02098C28, 0x02099C28, 0x020AEA06, 0x020AFD03, 0x020B1903, 0x02239002,
104640x02299803, 0x023B1B03, 0x02626D04, 0x02F89009};
10465 staticconstexpr uni::detail::pair<char32_t, int16_t> numeric_data16[] = {
10466uni::detail::pair<char32_t, int16_t>{0x0BF2, 1000},
10467uni::detail::pair<char32_t, int16_t>{0x0D72, 1000},
10468uni::detail::pair<char32_t, int16_t>{0x0F33, -1},
10469uni::detail::pair<char32_t, int16_t>{0x137C, 10000},
10470uni::detail::pair<char32_t, int16_t>{0x216E, 500},
10471uni::detail::pair<char32_t, int16_t>{0x216F, 1000},
10472uni::detail::pair<char32_t, int16_t>{0x217E, 500},
10473uni::detail::pair<char32_t, int16_t>{0x217F, 1000},
10474uni::detail::pair<char32_t, int16_t>{0x2180, 1000},
10475uni::detail::pair<char32_t, int16_t>{0x2181, 5000},
10476uni::detail::pair<char32_t, int16_t>{0x2182, 10000},
10477uni::detail::pair<char32_t, int16_t>{0x4E07, 10000},
10478uni::detail::pair<char32_t, int16_t>{0x4EDF, 1000},
10479uni::detail::pair<char32_t, int16_t>{0x5343, 1000},
10480uni::detail::pair<char32_t, int16_t>{0x842C, 10000},
10481uni::detail::pair<char32_t, int16_t>{0x9621, 1000},
10482uni::detail::pair<char32_t, int16_t>{0x1011A, 200},
10483uni::detail::pair<char32_t, int16_t>{0x1011B, 300},
10484uni::detail::pair<char32_t, int16_t>{0x1011C, 400},
10485uni::detail::pair<char32_t, int16_t>{0x1011D, 500},
10486uni::detail::pair<char32_t, int16_t>{0x1011E, 600},
10487uni::detail::pair<char32_t, int16_t>{0x1011F, 700},
10488uni::detail::pair<char32_t, int16_t>{0x10120, 800},
10489uni::detail::pair<char32_t, int16_t>{0x10121, 900},
10490uni::detail::pair<char32_t, int16_t>{0x10122, 1000},
10491uni::detail::pair<char32_t, int16_t>{0x10123, 2000},
10492uni::detail::pair<char32_t, int16_t>{0x10124, 3000},
10493uni::detail::pair<char32_t, int16_t>{0x10125, 4000},
10494uni::detail::pair<char32_t, int16_t>{0x10126, 5000},
10495uni::detail::pair<char32_t, int16_t>{0x10127, 6000},
10496uni::detail::pair<char32_t, int16_t>{0x10128, 7000},
10497uni::detail::pair<char32_t, int16_t>{0x10129, 8000},
10498uni::detail::pair<char32_t, int16_t>{0x1012A, 9000},
10499uni::detail::pair<char32_t, int16_t>{0x1012B, 10000},
10500uni::detail::pair<char32_t, int16_t>{0x1012C, 20000},
10501uni::detail::pair<char32_t, int16_t>{0x1012D, 30000},
10502uni::detail::pair<char32_t, int16_t>{0x10145, 500},
10503uni::detail::pair<char32_t, int16_t>{0x10146, 5000},
10504uni::detail::pair<char32_t, int16_t>{0x1014C, 500},
10505uni::detail::pair<char32_t, int16_t>{0x1014D, 1000},
10506uni::detail::pair<char32_t, int16_t>{0x1014E, 5000},
10507uni::detail::pair<char32_t, int16_t>{0x10153, 500},
10508uni::detail::pair<char32_t, int16_t>{0x10154, 1000},
10509uni::detail::pair<char32_t, int16_t>{0x10155, 10000},
10510uni::detail::pair<char32_t, int16_t>{0x1016B, 300},
10511uni::detail::pair<char32_t, int16_t>{0x1016C, 500},
10512uni::detail::pair<char32_t, int16_t>{0x1016D, 500},
10513uni::detail::pair<char32_t, int16_t>{0x1016E, 500},
10514uni::detail::pair<char32_t, int16_t>{0x1016F, 500},
10515uni::detail::pair<char32_t, int16_t>{0x10170, 500},
10516uni::detail::pair<char32_t, int16_t>{0x10171, 1000},
10517uni::detail::pair<char32_t, int16_t>{0x10172, 5000},
10518uni::detail::pair<char32_t, int16_t>{0x102F4, 200},
10519uni::detail::pair<char32_t, int16_t>{0x102F5, 300},
10520uni::detail::pair<char32_t, int16_t>{0x102F6, 400},
10521uni::detail::pair<char32_t, int16_t>{0x102F7, 500},
10522uni::detail::pair<char32_t, int16_t>{0x102F8, 600},
10523uni::detail::pair<char32_t, int16_t>{0x102F9, 700},
10524uni::detail::pair<char32_t, int16_t>{0x102FA, 800},
10525uni::detail::pair<char32_t, int16_t>{0x102FB, 900},
10526uni::detail::pair<char32_t, int16_t>{0x1034A, 900},
10527uni::detail::pair<char32_t, int16_t>{0x1085E, 1000},
10528uni::detail::pair<char32_t, int16_t>{0x1085F, 10000},
10529uni::detail::pair<char32_t, int16_t>{0x109D3, 200},
10530uni::detail::pair<char32_t, int16_t>{0x109D4, 300},
10531uni::detail::pair<char32_t, int16_t>{0x109D5, 400},
10532uni::detail::pair<char32_t, int16_t>{0x109D6, 500},
10533uni::detail::pair<char32_t, int16_t>{0x109D7, 600},
10534uni::detail::pair<char32_t, int16_t>{0x109D8, 700},
10535uni::detail::pair<char32_t, int16_t>{0x109D9, 800},
10536uni::detail::pair<char32_t, int16_t>{0x109DA, 900},
10537uni::detail::pair<char32_t, int16_t>{0x109DB, 1000},
10538uni::detail::pair<char32_t, int16_t>{0x109DC, 2000},
10539uni::detail::pair<char32_t, int16_t>{0x109DD, 3000},
10540uni::detail::pair<char32_t, int16_t>{0x109DE, 4000},
10541uni::detail::pair<char32_t, int16_t>{0x109DF, 5000},
10542uni::detail::pair<char32_t, int16_t>{0x109E0, 6000},
10543uni::detail::pair<char32_t, int16_t>{0x109E1, 7000},
10544uni::detail::pair<char32_t, int16_t>{0x109E2, 8000},
10545uni::detail::pair<char32_t, int16_t>{0x109E3, 9000},
10546uni::detail::pair<char32_t, int16_t>{0x109E4, 10000},
10547uni::detail::pair<char32_t, int16_t>{0x109E5, 20000},
10548uni::detail::pair<char32_t, int16_t>{0x109E6, 30000},
10549uni::detail::pair<char32_t, int16_t>{0x10A47, 1000},
10550uni::detail::pair<char32_t, int16_t>{0x10B5F, 1000},
10551uni::detail::pair<char32_t, int16_t>{0x10B7F, 1000},
10552uni::detail::pair<char32_t, int16_t>{0x10CFF, 1000},
10553uni::detail::pair<char32_t, int16_t>{0x10E73, 200},
10554uni::detail::pair<char32_t, int16_t>{0x10E74, 300},
10555uni::detail::pair<char32_t, int16_t>{0x10E75, 400},
10556uni::detail::pair<char32_t, int16_t>{0x10E76, 500},
10557uni::detail::pair<char32_t, int16_t>{0x10E77, 600},
10558uni::detail::pair<char32_t, int16_t>{0x10E78, 700},
10559uni::detail::pair<char32_t, int16_t>{0x10E79, 800},
10560uni::detail::pair<char32_t, int16_t>{0x10E7A, 900},
10561uni::detail::pair<char32_t, int16_t>{0x11065, 1000},
10562uni::detail::pair<char32_t, int16_t>{0x111F4, 1000},
10563uni::detail::pair<char32_t, int16_t>{0x16B5D, 10000},
10564uni::detail::pair<char32_t, int16_t>{0x1EC84, 200},
10565uni::detail::pair<char32_t, int16_t>{0x1EC85, 300},
10566uni::detail::pair<char32_t, int16_t>{0x1EC86, 400},
10567uni::detail::pair<char32_t, int16_t>{0x1EC87, 500},
10568uni::detail::pair<char32_t, int16_t>{0x1EC88, 600},
10569uni::detail::pair<char32_t, int16_t>{0x1EC89, 700},
10570uni::detail::pair<char32_t, int16_t>{0x1EC8A, 800},
10571uni::detail::pair<char32_t, int16_t>{0x1EC8B, 900},
10572uni::detail::pair<char32_t, int16_t>{0x1EC8C, 1000},
10573uni::detail::pair<char32_t, int16_t>{0x1EC8D, 2000},
10574uni::detail::pair<char32_t, int16_t>{0x1EC8E, 3000},
10575uni::detail::pair<char32_t, int16_t>{0x1EC8F, 4000},
10576uni::detail::pair<char32_t, int16_t>{0x1EC90, 5000},
10577uni::detail::pair<char32_t, int16_t>{0x1EC91, 6000},
10578uni::detail::pair<char32_t, int16_t>{0x1EC92, 7000},
10579uni::detail::pair<char32_t, int16_t>{0x1EC93, 8000},
10580uni::detail::pair<char32_t, int16_t>{0x1EC94, 9000},
10581uni::detail::pair<char32_t, int16_t>{0x1EC95, 10000},
10582uni::detail::pair<char32_t, int16_t>{0x1EC96, 20000},
10583uni::detail::pair<char32_t, int16_t>{0x1EC97, 30000},
10584uni::detail::pair<char32_t, int16_t>{0x1ECB3, 10000},
10585uni::detail::pair<char32_t, int16_t>{0x1ED14, 200},
10586uni::detail::pair<char32_t, int16_t>{0x1ED15, 300},
10587uni::detail::pair<char32_t, int16_t>{0x1ED16, 400},
10588uni::detail::pair<char32_t, int16_t>{0x1ED17, 500},
10589uni::detail::pair<char32_t, int16_t>{0x1ED18, 600},
10590uni::detail::pair<char32_t, int16_t>{0x1ED19, 700},
10591uni::detail::pair<char32_t, int16_t>{0x1ED1A, 800},
10592uni::detail::pair<char32_t, int16_t>{0x1ED1B, 900},
10593uni::detail::pair<char32_t, int16_t>{0x1ED1C, 1000},
10594uni::detail::pair<char32_t, int16_t>{0x1ED1D, 2000},
10595uni::detail::pair<char32_t, int16_t>{0x1ED1E, 3000},
10596uni::detail::pair<char32_t, int16_t>{0x1ED1F, 4000},
10597uni::detail::pair<char32_t, int16_t>{0x1ED20, 5000},
10598uni::detail::pair<char32_t, int16_t>{0x1ED21, 6000},
10599uni::detail::pair<char32_t, int16_t>{0x1ED22, 7000},
10600uni::detail::pair<char32_t, int16_t>{0x1ED23, 8000},
10601uni::detail::pair<char32_t, int16_t>{0x1ED24, 9000},
10602uni::detail::pair<char32_t, int16_t>{0x1ED25, 10000},
10603uni::detail::pair<char32_t, int16_t>{0x1ED26, 20000},
10604uni::detail::pair<char32_t, int16_t>{0x1ED27, 30000},
10605uni::detail::pair<char32_t, int16_t>{0x1ED38, 400},
10606uni::detail::pair<char32_t, int16_t>{0x1ED39, 600},
10607uni::detail::pair<char32_t, int16_t>{0x1ED3A, 2000},
10608uni::detail::pair<char32_t, int16_t>{0x1ED3B, 10000},
10610 staticconstexpr uni::detail::pair<char32_t, int32_t> numeric_data32[] = {
10611uni::detail::pair<char32_t, int32_t>{0x2187, 50000},
10612uni::detail::pair<char32_t, int32_t>{0x2188, 100000},
10613uni::detail::pair<char32_t, int32_t>{0x4EBF, 100000000},
10614uni::detail::pair<char32_t, int32_t>{0x5104, 100000000},
10615uni::detail::pair<char32_t, int32_t>{0x1012E, 40000},
10616uni::detail::pair<char32_t, int32_t>{0x1012F, 50000},
10617uni::detail::pair<char32_t, int32_t>{0x10130, 60000},
10618uni::detail::pair<char32_t, int32_t>{0x10131, 70000},
10619uni::detail::pair<char32_t, int32_t>{0x10132, 80000},
10620uni::detail::pair<char32_t, int32_t>{0x10133, 90000},
10621uni::detail::pair<char32_t, int32_t>{0x10147, 50000},
10622uni::detail::pair<char32_t, int32_t>{0x10156, 50000},
10623uni::detail::pair<char32_t, int32_t>{0x109E7, 40000},
10624uni::detail::pair<char32_t, int32_t>{0x109E8, 50000},
10625uni::detail::pair<char32_t, int32_t>{0x109E9, 60000},
10626uni::detail::pair<char32_t, int32_t>{0x109EA, 70000},
10627uni::detail::pair<char32_t, int32_t>{0x109EB, 80000},
10628uni::detail::pair<char32_t, int32_t>{0x109EC, 90000},
10629uni::detail::pair<char32_t, int32_t>{0x109ED, 100000},
10630uni::detail::pair<char32_t, int32_t>{0x109EE, 200000},
10631uni::detail::pair<char32_t, int32_t>{0x109EF, 300000},
10632uni::detail::pair<char32_t, int32_t>{0x109F0, 400000},
10633uni::detail::pair<char32_t, int32_t>{0x109F1, 500000},
10634uni::detail::pair<char32_t, int32_t>{0x109F2, 600000},
10635uni::detail::pair<char32_t, int32_t>{0x109F3, 700000},
10636uni::detail::pair<char32_t, int32_t>{0x109F4, 800000},
10637uni::detail::pair<char32_t, int32_t>{0x109F5, 900000},
10638uni::detail::pair<char32_t, int32_t>{0x12432, 216000},
10639uni::detail::pair<char32_t, int32_t>{0x12433, 432000},
10640uni::detail::pair<char32_t, int32_t>{0x16B5E, 1000000},
10641uni::detail::pair<char32_t, int32_t>{0x16B5F, 100000000},
10642uni::detail::pair<char32_t, int32_t>{0x1EC98, 40000},
10643uni::detail::pair<char32_t, int32_t>{0x1EC99, 50000},
10644uni::detail::pair<char32_t, int32_t>{0x1EC9A, 60000},
10645uni::detail::pair<char32_t, int32_t>{0x1EC9B, 70000},
10646uni::detail::pair<char32_t, int32_t>{0x1EC9C, 80000},
10647uni::detail::pair<char32_t, int32_t>{0x1EC9D, 90000},
10648uni::detail::pair<char32_t, int32_t>{0x1EC9E, 100000},
10649uni::detail::pair<char32_t, int32_t>{0x1EC9F, 200000},
10650uni::detail::pair<char32_t, int32_t>{0x1ECA0, 100000},
10651uni::detail::pair<char32_t, int32_t>{0x1ECA1, 10000000},
10652uni::detail::pair<char32_t, int32_t>{0x1ECA2, 20000000},
10653uni::detail::pair<char32_t, int32_t>{0x1ECB4, 100000},
10654uni::detail::pair<char32_t, int32_t>{0x1ED28, 40000},
10655uni::detail::pair<char32_t, int32_t>{0x1ED29, 50000},
10656uni::detail::pair<char32_t, int32_t>{0x1ED2A, 60000},
10657uni::detail::pair<char32_t, int32_t>{0x1ED2B, 70000},
10658uni::detail::pair<char32_t, int32_t>{0x1ED2C, 80000},
10659uni::detail::pair<char32_t, int32_t>{0x1ED2D, 90000},
10661 staticconstexpr uni::detail::pair<char32_t, int64_t> numeric_data64[] = {
10662uni::detail::pair<char32_t, int64_t>{0x5146, 1000000000000},
10663uni::detail::pair<char32_t, int64_t>{0x16B60, 10000000000},
10664uni::detail::pair<char32_t, int64_t>{0x16B61, 1000000000000},
10666 staticconstexpr uni::detail::pair<char32_t, int16_t> numeric_data_d[] = {
10667uni::detail::pair<char32_t, int16_t>{0x00BC, 4},
10668uni::detail::pair<char32_t, int16_t>{0x00BD, 2},
10669uni::detail::pair<char32_t, int16_t>{0x00BE, 4},
10670uni::detail::pair<char32_t, int16_t>{0x09F4, 16},
10671uni::detail::pair<char32_t, int16_t>{0x09F5, 8},
10672uni::detail::pair<char32_t, int16_t>{0x09F6, 16},
10673uni::detail::pair<char32_t, int16_t>{0x09F7, 4},
10674uni::detail::pair<char32_t, int16_t>{0x09F8, 4},
10675uni::detail::pair<char32_t, int16_t>{0x0B72, 4},
10676uni::detail::pair<char32_t, int16_t>{0x0B73, 2},
10677uni::detail::pair<char32_t, int16_t>{0x0B74, 4},
10678uni::detail::pair<char32_t, int16_t>{0x0B75, 16},
10679uni::detail::pair<char32_t, int16_t>{0x0B76, 8},
10680uni::detail::pair<char32_t, int16_t>{0x0B77, 16},
10681uni::detail::pair<char32_t, int16_t>{0x0D58, 160},
10682uni::detail::pair<char32_t, int16_t>{0x0D59, 40},
10683uni::detail::pair<char32_t, int16_t>{0x0D5A, 80},
10684uni::detail::pair<char32_t, int16_t>{0x0D5B, 20},
10685uni::detail::pair<char32_t, int16_t>{0x0D5C, 10},
10686uni::detail::pair<char32_t, int16_t>{0x0D5D, 20},
10687uni::detail::pair<char32_t, int16_t>{0x0D5E, 5},
10688uni::detail::pair<char32_t, int16_t>{0x0D73, 4},
10689uni::detail::pair<char32_t, int16_t>{0x0D74, 2},
10690uni::detail::pair<char32_t, int16_t>{0x0D75, 4},
10691uni::detail::pair<char32_t, int16_t>{0x0D76, 16},
10692uni::detail::pair<char32_t, int16_t>{0x0D77, 8},
10693uni::detail::pair<char32_t, int16_t>{0x0D78, 16},
10694uni::detail::pair<char32_t, int16_t>{0x0F2A, 2},
10695uni::detail::pair<char32_t, int16_t>{0x0F2B, 2},
10696uni::detail::pair<char32_t, int16_t>{0x0F2C, 2},
10697uni::detail::pair<char32_t, int16_t>{0x0F2D, 2},
10698uni::detail::pair<char32_t, int16_t>{0x0F2E, 2},
10699uni::detail::pair<char32_t, int16_t>{0x0F2F, 2},
10700uni::detail::pair<char32_t, int16_t>{0x0F30, 2},
10701uni::detail::pair<char32_t, int16_t>{0x0F31, 2},
10702uni::detail::pair<char32_t, int16_t>{0x0F32, 2},
10703uni::detail::pair<char32_t, int16_t>{0x0F33, 2},
10704uni::detail::pair<char32_t, int16_t>{0x2150, 7},
10705uni::detail::pair<char32_t, int16_t>{0x2151, 9},
10706uni::detail::pair<char32_t, int16_t>{0x2152, 10},
10707uni::detail::pair<char32_t, int16_t>{0x2153, 3},
10708uni::detail::pair<char32_t, int16_t>{0x2154, 3},
10709uni::detail::pair<char32_t, int16_t>{0x2155, 5},
10710uni::detail::pair<char32_t, int16_t>{0x2156, 5},
10711uni::detail::pair<char32_t, int16_t>{0x2157, 5},
10712uni::detail::pair<char32_t, int16_t>{0x2158, 5},
10713uni::detail::pair<char32_t, int16_t>{0x2159, 6},
10714uni::detail::pair<char32_t, int16_t>{0x215A, 6},
10715uni::detail::pair<char32_t, int16_t>{0x215B, 8},
10716uni::detail::pair<char32_t, int16_t>{0x215C, 8},
10717uni::detail::pair<char32_t, int16_t>{0x215D, 8},
10718uni::detail::pair<char32_t, int16_t>{0x215E, 8},
10719uni::detail::pair<char32_t, int16_t>{0x2CFD, 2},
10720uni::detail::pair<char32_t, int16_t>{0xA830, 4},
10721uni::detail::pair<char32_t, int16_t>{0xA831, 2},
10722uni::detail::pair<char32_t, int16_t>{0xA832, 4},
10723uni::detail::pair<char32_t, int16_t>{0xA833, 16},
10724uni::detail::pair<char32_t, int16_t>{0xA834, 8},
10725uni::detail::pair<char32_t, int16_t>{0xA835, 16},
10726uni::detail::pair<char32_t, int16_t>{0x10140, 4},
10727uni::detail::pair<char32_t, int16_t>{0x10141, 2},
10728uni::detail::pair<char32_t, int16_t>{0x10175, 2},
10729uni::detail::pair<char32_t, int16_t>{0x10176, 2},
10730uni::detail::pair<char32_t, int16_t>{0x10177, 3},
10731uni::detail::pair<char32_t, int16_t>{0x10178, 4},
10732uni::detail::pair<char32_t, int16_t>{0x1018B, 4},
10733uni::detail::pair<char32_t, int16_t>{0x109BC, 12},
10734uni::detail::pair<char32_t, int16_t>{0x109BD, 2},
10735uni::detail::pair<char32_t, int16_t>{0x109F6, 12},
10736uni::detail::pair<char32_t, int16_t>{0x109F7, 12},
10737uni::detail::pair<char32_t, int16_t>{0x109F8, 12},
10738uni::detail::pair<char32_t, int16_t>{0x109F9, 12},
10739uni::detail::pair<char32_t, int16_t>{0x109FA, 12},
10740uni::detail::pair<char32_t, int16_t>{0x109FB, 12},
10741uni::detail::pair<char32_t, int16_t>{0x109FC, 12},
10742uni::detail::pair<char32_t, int16_t>{0x109FD, 12},
10743uni::detail::pair<char32_t, int16_t>{0x109FE, 12},
10744uni::detail::pair<char32_t, int16_t>{0x109FF, 12},
10745uni::detail::pair<char32_t, int16_t>{0x10A48, 2},
10746uni::detail::pair<char32_t, int16_t>{0x10E7B, 2},
10747uni::detail::pair<char32_t, int16_t>{0x10E7C, 4},
10748uni::detail::pair<char32_t, int16_t>{0x10E7D, 3},
10749uni::detail::pair<char32_t, int16_t>{0x10E7E, 3},
10750uni::detail::pair<char32_t, int16_t>{0x10F26, 2},
10751uni::detail::pair<char32_t, int16_t>{0x11FC0, 320},
10752uni::detail::pair<char32_t, int16_t>{0x11FC1, 160},
10753uni::detail::pair<char32_t, int16_t>{0x11FC2, 80},
10754uni::detail::pair<char32_t, int16_t>{0x11FC3, 64},
10755uni::detail::pair<char32_t, int16_t>{0x11FC4, 40},
10756uni::detail::pair<char32_t, int16_t>{0x11FC5, 32},
10757uni::detail::pair<char32_t, int16_t>{0x11FC6, 80},
10758uni::detail::pair<char32_t, int16_t>{0x11FC7, 64},
10759uni::detail::pair<char32_t, int16_t>{0x11FC8, 20},
10760uni::detail::pair<char32_t, int16_t>{0x11FC9, 16},
10761uni::detail::pair<char32_t, int16_t>{0x11FCA, 16},
10762uni::detail::pair<char32_t, int16_t>{0x11FCB, 10},
10763uni::detail::pair<char32_t, int16_t>{0x11FCC, 8},
10764uni::detail::pair<char32_t, int16_t>{0x11FCD, 20},
10765uni::detail::pair<char32_t, int16_t>{0x11FCE, 16},
10766uni::detail::pair<char32_t, int16_t>{0x11FCF, 5},
10767uni::detail::pair<char32_t, int16_t>{0x11FD0, 4},
10768uni::detail::pair<char32_t, int16_t>{0x11FD1, 2},
10769uni::detail::pair<char32_t, int16_t>{0x11FD2, 2},
10770uni::detail::pair<char32_t, int16_t>{0x11FD3, 4},
10771uni::detail::pair<char32_t, int16_t>{0x11FD4, 320},
10772uni::detail::pair<char32_t, int16_t>{0x1245A, 3},
10773uni::detail::pair<char32_t, int16_t>{0x1245B, 3},
10774uni::detail::pair<char32_t, int16_t>{0x1245C, 6},
10775uni::detail::pair<char32_t, int16_t>{0x1245D, 3},
10776uni::detail::pair<char32_t, int16_t>{0x1245E, 3},
10777uni::detail::pair<char32_t, int16_t>{0x1245F, 8},
10778uni::detail::pair<char32_t, int16_t>{0x12460, 4},
10779uni::detail::pair<char32_t, int16_t>{0x12461, 6},
10780uni::detail::pair<char32_t, int16_t>{0x12462, 4},
10781uni::detail::pair<char32_t, int16_t>{0x12463, 4},
10782uni::detail::pair<char32_t, int16_t>{0x12464, 2},
10783uni::detail::pair<char32_t, int16_t>{0x12465, 3},
10784uni::detail::pair<char32_t, int16_t>{0x12466, 3},
10785uni::detail::pair<char32_t, int16_t>{0x1ECAD, 4},
10786uni::detail::pair<char32_t, int16_t>{0x1ECAE, 2},
10787uni::detail::pair<char32_t, int16_t>{0x1ECAF, 4},
10788uni::detail::pair<char32_t, int16_t>{0x1ED3C, 2},
10789uni::detail::pair<char32_t, int16_t>{0x1ED3D, 6},
10790uni::detail::pair<char32_t, int16_t>{0x110000, 0}};
10791 staticconstexpr bool_trie<32, 991, 1, 0, 112, 255, 1, 0, 1407, 1, 0, 160> prop_assigned{
10792{0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
107930xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
107940xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
107950xffffffffffffffff, 0xfcffffffffffffff, 0xfffffffbffffd7f0, 0xffffffffffffffff,
107960xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
107970xfffeffffffffffff, 0xfffffffffe7fffff, 0xfffffffffffee7ff, 0x001f87ffffff00ff,
107980xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
107990xffffffffffffbfff, 0xffffffffffffe7ff, 0x0003ffffffffffff, 0xe7ffffffffffffff},
10800{1, 2, 3, 3, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
1080117, 18, 19, 20, 21, 22, 23, 24, 25, 3, 26, 27, 28, 3, 3, 3, 29, 3,
108023, 3, 3, 3, 30, 31, 32, 33, 34, 35, 36, 3, 3, 3, 3, 3, 3, 3,
108033, 3, 3, 37, 38, 39, 40, 3, 41, 35, 38, 42, 43, 44, 45, 46, 47, 48,
1080449, 50, 51, 3, 52, 3, 53, 54, 55, 56, 57, 3, 3, 3, 3, 3, 3, 3,
108053, 58, 59, 60, 61, 3, 62, 63, 64, 3, 3, 65, 3, 3, 3, 3, 3, 3,
108063, 3, 3, 66, 67, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
108073, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 68, 69, 3, 3,
108083, 3, 70, 71, 72, 73, 74, 3, 75, 76, 77, 3, 3, 3, 78, 3, 79, 80,
108093, 81, 3, 82, 83, 84, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
108103, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
108113, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
108123, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
108133, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
108143, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
108153, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
108163, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
108173, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
108183, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
108193, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
108203, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
108213, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
108223, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
108233, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
108243, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
108253, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
108263, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
108273, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
108283, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
108293, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
108303, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
108313, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
108323, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
108333, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
108343, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 85, 86, 3, 3, 3,
108353, 87, 3, 3, 88, 3, 3, 3, 89, 90, 88, 3, 91, 3, 92, 3, 93, 94,
1083695, 3, 96, 97, 46, 3, 98, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
108373, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
108383, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
108393, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
108403, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
108413, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
108423, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
108433, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
108443, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
108453, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
108463, 83, 99, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
10847100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
10848100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
10849100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
10850100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
10851100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
10852100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
10853100, 100, 100, 100, 100, 100, 100, 100, 100, 3, 3, 3, 3, 3, 101, 3, 102, 103,
10854104, 3, 105, 3, 3, 3, 3, 3, 3, 106, 107, 35, 108, 3, 109, 79, 3, 110,
10856{0x7fff3fffffffffff, 0xffff07ff4fffffff, 0xffffffffff037fff, 0xffffffffffffffff,
108570xf3c5fdfffff99fef, 0x7fffffcfb080799f, 0xd36dfdfffff987ee, 0x007fffc05e023987,
108580xf3edfdfffffbbfee, 0xfe03ffcf00013bbf, 0xf3edfdfffff99fee, 0x00ffffcfb0e0399f,
108590xc3ffc718d63dc7ec, 0x07ffffc000813dc7, 0xf3fffdfffffddfff, 0xff80ffcf27603ddf,
108600xf3effdfffffddfff, 0x0006ffcf60603ddf, 0xfffffffffffddfff, 0xffffffcffff0fddf,
108610x2ffbfffffc7fffee, 0x001cffc0ff5f847f, 0x87fffffffffffffe, 0x000000000fffffff,
108620x3fffffaffffff7d6, 0x00000000f3ff3f5f, 0xfffe1ffffffffeff, 0xdffffffffeffffff,
108630x0000000007ffdfff, 0xffffffffffff20bf, 0xffffffff3d7f3dff, 0x7f3dffffffff3dff,
108640xffffffffff7fff3d, 0xffffffffff3dffff, 0x1fffffffe7ffffff, 0xffffffff03ffffff,
108650x3f3fffffffffffff, 0xffffffff1fffffff, 0x01ffffffffffffff, 0x007fffff803fffff,
108660x000ddfff000fffff, 0x03ff03ff3fffffff, 0xffff07ffffffffff, 0x003fffffffffffff,
108670x0fff0fff7fffffff, 0x001f3ffffffffff1, 0xffff0fffffffffff, 0xffffffffc7ff03ff,
108680xffffffffcfffffff, 0x9fffffff7fffffff, 0xffff3fff03ff03ff, 0x0000000000007fff,
108690x7fffffffffff1fff, 0xf00fffffffffffff, 0xf8ffffffffffffff, 0xffffffffffffe3ff,
108700xe7ffffffffff01ff, 0x07ffffffffff00ff, 0xffffffff3f3fffff, 0x3fffffffaaff3f3f,
108710xffdfffffffffffff, 0x7fdcffffefcfffdf, 0xfff3ffdfffffffff, 0xffffffff1fff7fff,
108720x0001ffffffff0001, 0xffffffffffff0fff, 0x0000007fffffffff, 0xffffffff000007ff,
108730xffcfffffffffffff, 0xffffffffffbfffff, 0xfe0fffffffffffff, 0xffff20bfffffffff,
108740x800180ffffffffff, 0x7f7f7f7f007fffff, 0xffffffff7f7f7f7f, 0x000000003fffffff,
108750xfffffffffbffffff, 0x000fffffffffffff, 0x0fff0000003fffff, 0xfffffffffffffffe,
108760xfffffffffe7fffff, 0xfffeffffffffffe0, 0xffffffffffff7fff, 0xffff000fffffffff,
108770xffffffff7fffffff, 0xffffffffffff1fff, 0xffffffffffff007f, 0x00000fffffffffff,
108780x00ffffffffffffff, 0xfffc000003eb07ff, 0x03ff1fffffffffff, 0xffffffff03ffc03f,
108790x1fffffff800fffff, 0x7fffffffc3ffbfff, 0x007fffffffffffff, 0xfffffffff3ff3fff,
108800x007ffffff8000007, 0xffff7f7f007e7e7e, 0x03ff3fffffffffff, 0x0ffffffffffff87f,
108810x0000000000000000, 0xffff3fffffffffff, 0x0000000003ffffff, 0x5f7fffffe0f8007f,
108820xffffffffffffffdb, 0xfffffffffff80007, 0xfffffffffffcffff, 0xffff0000000080ff,
108830xffdf0f7ffff7ffff, 0x9fffffffffffffff, 0x7fffffffffffffff, 0x3e007f7f1cfcfcfc},
10884{1, 2, 3, 4, 5, 6, 7, 8, 5, 9, 10, 11, 12, 13, 14, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 15,
1088516, 17, 7, 18, 19, 7, 20, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
108865, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
108875, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
108885, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
108895, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
108905, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
108915, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 21,
108925, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
108935, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5},
10894{1, 2, 3, 4, 2, 5, 6, 7, 7, 8, 9, 10, 11, 12, 13, 2, 2, 14,
1089515, 16, 17, 18, 7, 2, 2, 2, 2, 19, 20, 21, 7, 22, 23, 24, 25, 26,
108967, 27, 28, 29, 30, 31, 32, 33, 34, 35, 7, 2, 36, 37, 38, 39, 7, 7,
108977, 7, 40, 41, 7, 16, 42, 43, 44, 2, 45, 2, 46, 47, 48, 2, 49, 50,
108987, 51, 52, 53, 54, 7, 7, 2, 55, 2, 56, 7, 7, 57, 58, 2, 59, 60,
1089961, 62, 63, 7, 7, 64, 7, 65, 66, 67, 68, 69, 70, 2, 71, 72, 73, 7,
109007, 7, 7, 74, 75, 76, 7, 77, 78, 79, 7, 7, 7, 7, 80, 7, 7, 81,
1090182, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 83, 7, 2,
1090284, 2, 2, 2, 85, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
109037, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
109047, 7, 7, 7, 7, 7, 7, 7, 7, 86, 37, 2, 2, 2, 2, 2, 2, 2,
109052, 2, 2, 2, 2, 2, 2, 2, 2, 87, 7, 7, 7, 7, 7, 7, 7, 7,
109067, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
109077, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
109087, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
109097, 2, 2, 2, 2, 2, 2, 2, 2, 2, 63, 7, 7, 7, 7, 7, 7, 7,
109107, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
109117, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
109127, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
109137, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
109147, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
109157, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
109167, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
109177, 2, 2, 2, 2, 2, 2, 2, 2, 73, 88, 89, 90, 2, 91, 92, 7, 7,
109187, 7, 7, 7, 7, 7, 7, 7, 2, 93, 7, 2, 94, 95, 96, 2, 2, 2,
109192, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
109202, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
109212, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
109222, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
109232, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
109242, 2, 97, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
109252, 2, 2, 2, 98, 36, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
109267, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
109277, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
109287, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
109297, 7, 7, 7, 7, 7, 7, 7, 99, 2, 2, 2, 2, 100, 101, 2, 2, 2,
109302, 2, 64, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
109317, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
109327, 7, 7, 2, 102, 103, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
109337, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
109347, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
109357, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
109367, 7, 7, 7, 7, 7, 7, 104, 105, 2, 85, 2, 2, 2, 106, 107, 2, 2,
10937108, 2, 109, 7, 110, 2, 111, 7, 7, 2, 112, 113, 114, 115, 116, 2, 2, 2,
109382, 117, 2, 2, 2, 2, 118, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 119,
109397, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 120,
109407, 7, 7, 121, 7, 7, 7, 122, 123, 7, 7, 7, 7, 124, 125, 7, 7, 7,
109417, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 126, 2,
109422, 2, 127, 2, 128, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 129, 130,
109437, 131, 7, 7, 7, 132, 133, 134, 135, 7, 7, 7, 7, 136, 2, 137, 138, 2,
109442, 139, 140, 141, 142, 7, 7, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
109452, 2, 2, 2, 143, 2, 144, 2, 145, 146, 147, 148, 7, 2, 2, 2, 2, 2,
10946149, 150, 151, 2, 2, 152, 153, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
109477, 7, 7, 7, 7, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
109482, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 31, 2, 2, 2,
109492, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
109502, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
109512, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
109522, 2, 2, 2, 2, 2, 2, 73, 2, 2, 2, 154, 2, 2, 2, 2, 2, 2,
109532, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
109542, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
109552, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
109562, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
109572, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 155, 2, 2, 2, 2, 2, 2,
109582, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
109592, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
109602, 2, 2, 2, 2, 2, 2, 2, 2, 2, 156, 7, 7, 7, 7, 7, 7, 7,
109617, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
109627, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
109637, 7, 7, 7, 7, 2, 2, 2, 2, 2, 2, 2, 2, 58, 7, 7, 7, 7,
109647, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
109657, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 157, 7, 7, 7,
109667, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
109677, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
109687, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 158, 2, 7, 7, 2, 2, 2,
10969159, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
109707, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
109717, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
10973{0xb7ffff7fffffefff, 0x000000003fff3fff, 0xffffffffffffffff, 0x07ffffffffffffff,
109740xff8fffffffffff87, 0x000000011fff7fff, 0x3fffffffffff0000, 0x0000000000000000,
109750xffffffff1fffffff, 0x0fffffff0001ffff, 0xffffe00fffffffff, 0x07ffffffffff07ff,
109760xffffffffbfffffff, 0x00000000003fff0f, 0xffff03ff3fffffff, 0x0fffffffff0fffff,
109770xffff00ffffffffff, 0xf7ff800fffffffff, 0x1bfbfffbffb7f7ff, 0x007fffffffffffff,
109780x000000ff003fffff, 0x07fdffffffffffbf, 0x91bffffffffffd3f, 0xffffffffffbfffff,
109790x0000ff807fffffff, 0xf837ffff00000000, 0x83ffffff8fffffff, 0xf0ffffffffffffff,
109800xfffffffffffcffff, 0x873ffffffeeff06f, 0xffffffff01ff01ff, 0x00000000ffffffff,
109810x007ff87fffffffff, 0xfe3fffffffffffff, 0xff07ffffff3fffff, 0x0000fe001e03ffff,
109820x00000000000001ff, 0x0007ffffffffffff, 0xfc07ffffffffffff, 0x03ff00ffffffffff,
109830x7fffffff00000000, 0x00033bffffffffff, 0xffff000003ffffff, 0xffff0000000003ff,
109840x007fffff00000fff, 0x803ffffffffc3fff, 0x03ff01ffffff2007, 0xffdfffffffffffff,
109850x007fffffffff00ff, 0x001ffffeffffffff, 0x7ffffffffffbffff, 0xffff03ffbfffbd7f,
109860x03ff07ffffffffff, 0xfbedfdfffff99fef, 0x001f1fcfe081399f, 0x00000003efffffff,
109870x0000000003ff00ff, 0xff3fffffffffffff, 0x000000003fffffff, 0x00001fff03ff001f,
109880x03ffffffffffffff, 0x00000000000003ff, 0xffff0fffe7ffffff, 0x000000000000007f,
109890x0fffffffffffffff, 0xffffffff00000000, 0x8007ffffffffffff, 0xf9bfffffff6ff27f,
109900x0000000003ff007f, 0xfffffcff00000000, 0x0000001ffcffffff, 0xffffffffffff00ff,
109910xffff0007ffffffff, 0x01ffffffffffffff, 0xff7ffffffffffdff, 0xffff1fffffff003f,
109920x007ffefffffcffff, 0xb47ffffffffffb7f, 0xfffffdbf03ff00ff, 0x000003ff01fb7fff,
109930x01ffffff00000000, 0x0001000000000000, 0x8003ffffffffffff, 0x0000000003ffffff,
109940x001f7fffffffffff, 0x000000000000000f, 0xffffffffffff0000, 0x01ff7fffffffffff,
109950xffffc3ff7fffffff, 0x7fffffffffffffff, 0x003f3fffffff03ff, 0xe0fffffbfbff003f,
109960x000000000000ffff, 0x0000000007ffffff, 0xffffffffffff87ff, 0x00000000ffff80ff,
109970x0003001f00000000, 0x00ffffffffffffff, 0x00000000003fffff, 0x6fef000000000000,
109980x00000007ffffffff, 0xffff00f000070000, 0x1fff07ffffffffff, 0x0000000ff3ff01ff,
109990xffff3fffffffffff, 0xffffffffffff007f, 0x003fffffffffffff, 0xfffffe7fffffffff,
110000x000007ffffffffff, 0x000000000000003f, 0x000fffff00000000, 0x01ffffff007fffff,
110010xffffffffffdfffff, 0xebffde64dfffffff, 0xffffffffffffffef, 0x7bffffffdfdfe7bf,
110020xfffffffffffdfc5f, 0xffffff3fffffffff, 0xffffffffffffcfff, 0x0000fffef8000fff,
110030x000000007fffffff, 0x000007dbf9ffff7f, 0x3fff1fffffffffff, 0x000000000000c3ff,
110040x00007fffffff0000, 0x83ffffffffffffff, 0x7fff6f7f00000000, 0x00000000007fff9f,
110050x00000000c3ff0fff, 0xfffe000000000000, 0x001fffffffffffff, 0x3ffffffffffffffe,
110060x0af7fe96ffffffef, 0x5ef7f796aa96ea84, 0x0ffffbee0ffffbff, 0x0003000000000000,
110070xffff0fffffffffff, 0xfffe7fff000fffff, 0x003ffffffffefffe, 0x00003fffffffffff,
110080xffffffc000000000, 0x0fffffffffff0007, 0x0000003f000301ff, 0x1fff1fffe0ffffff,
110090x000fffffffffffff, 0x00010fff01ffffff, 0xffffffffffff0fff, 0xffffffff03ff00ff,
110100x00033fffffff00ff, 0x1f1f3fff000fffff, 0x07ff1fffffff007f, 0x007f00ff03ff003f,
110110xfffffffffff7ffff, 0x03ff0000000007ff, 0xffffffff3fffffff, 0xffff0003ffffffff,
110120x00000001ffffffff, 0x00000000000007ff, 0xffffffff00000002, 0x0000ffffffffffff}};
11014 enum classproperty {
11016ascii_hex_digit = ahex,
11018alphabetic = alpha,
11020bidi_control = bidi_c,
11022bidi_mirrored = bidi_m,
11025case_ignorable = ci,
11030default_ignorable_code_point = di,
11036emoji_modifier_base,
11037emoji_presentation,
11040extended_pictographic,
11042grapheme_base = gr_base,
11044grapheme_extend = gr_ext,
11050ideographic = ideo,
11054ids_binary_operator = idsb,
11056ids_trinary_operator = idst,
11058join_control = join_c,
11060logical_order_exception = loe,
11065noncharacter_code_point = nchar,
11067pattern_syntax = pat_syn,
11069pattern_white_space = pat_ws,
11071prepended_concatenation_mark = pcm,
11073quotation_mark = qmark,
11076regional_indicator = ri,
11080sentence_terminal = sterm,
11082terminal_punctuation = term,
11084unified_ideograph = uideo,
11088variation_selector = vs,
11090white_space = wspace,
11093xid_continue = xidc,
11098 namespacedetail::tables {
11099 staticconstexpr range_array prop_ahex_data = {0x00000000, 0x00003001, 0x00003A00, 0x00004101,
111000x00004700, 0x00006101, 0x00006700};
11101 staticconstexpr bool_trie<32, 991, 1, 0, 133, 255, 1, 0, 1279, 1, 0, 127> prop_alpha_data{
11102{0x0000000000000000, 0x07fffffe07fffffe, 0x0420040000000000, 0xff7fffffff7fffff,
111030xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
111040xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x0000501f0003ffc3,
111050x0000000000000000, 0xbcdf000000000020, 0xfffffffbffffd740, 0xffbfffffffffffff,
111060xffffffffffffffff, 0xffffffffffffffff, 0xfffffffffffffc03, 0xffffffffffffffff,
111070xfffeffffffffffff, 0xffffffff027fffff, 0xbfff0000000001ff, 0x000787ffffff00b6,
111080xffffffff07ff0000, 0xffffc000feffffff, 0xffffffffffffffff, 0x9c00e1fe1fefffff,
111090xffffffffffff0000, 0xffffffffffffe000, 0x0003ffffffffffff, 0x043007fffffffc00},
11110{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
1111119, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
1111236, 36, 36, 36, 37, 38, 39, 40, 41, 42, 43, 44, 36, 36, 36, 36, 36, 36,
1111336, 36, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
1111461, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 36, 36, 36, 72, 36, 36, 36,
1111536, 73, 74, 75, 76, 31, 77, 78, 31, 79, 80, 81, 31, 31, 31, 31, 31, 31,
1111631, 31, 31, 31, 31, 82, 83, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
1111731, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 36,
1111836, 36, 84, 85, 86, 87, 88, 89, 31, 31, 31, 31, 31, 31, 31, 90, 44, 91,
1111992, 93, 36, 94, 95, 31, 31, 31, 31, 31, 31, 31, 31, 36, 36, 36, 36, 36,
1112036, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1112136, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1112236, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1112336, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1112436, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1112536, 36, 36, 36, 36, 36, 36, 36, 31, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1112636, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1112736, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1112836, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1112936, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1113036, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1113136, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1113236, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1113336, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1113436, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1113536, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1113636, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1113736, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1113836, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1113936, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1114036, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1114136, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1114236, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1114336, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1114436, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 96, 97, 36, 36, 36,
1114536, 98, 99, 36, 100, 101, 36, 102, 103, 104, 105, 36, 106, 107, 108, 109, 110, 68,
11146111, 112, 113, 114, 115, 36, 116, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1114736, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1114836, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1114936, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1115036, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1115136, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1115236, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1115336, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1115436, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1115536, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1115636, 117, 118, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
1115731, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
1115831, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
1115931, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
1116031, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
1116131, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
1116231, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
1116331, 31, 31, 31, 31, 31, 31, 31, 31, 36, 36, 36, 36, 36, 119, 36, 120, 121,
11164122, 123, 124, 36, 36, 36, 36, 125, 33, 126, 127, 31, 128, 36, 129, 130, 131, 112,
11166{0x00001ffffcffffff, 0xffff07ff01ffffff, 0xffffffff00007eff, 0xffff03f8fff003ff,
111670xefffffffffffffff, 0xfffe000fffe1dfff, 0xe3c5fdfffff99fef, 0x1003000fb080599f,
111680xc36dfdfffff987ee, 0x003f00005e021987, 0xe3edfdfffffbbfee, 0x1e00000f00011bbf,
111690xe3edfdfffff99fee, 0x0002000fb0c0199f, 0xc3ffc718d63dc7ec, 0x0000000000811dc7,
111700xe3fffdfffffddfef, 0x0000000f27601ddf, 0xe3effdfffffddfef, 0x0006000f60601ddf,
111710xe7fffffffffddfff, 0xfc00000f80f05ddf, 0x2ffbfffffc7fffee, 0x000c0000ff5f807f,
111720x07fffffffffffffe, 0x000000000000207f, 0x3bffffaffffff7d6, 0x00000000f000205f,
111730x0000000000000001, 0xfffe1ffffffffeff, 0x1ffffffffeffff03, 0x0000000000000000,
111740xf97fffffffffffff, 0xffffffffffff0000, 0xffffffff3c00ffff, 0xf7ffffffffff20bf,
111750xffffffffffffffff, 0xffffffff3d7f3dff, 0x7f3dffffffff3dff, 0xffffffffff7fff3d,
111760xffffffffff3dffff, 0x0000000007ffffff, 0xffffffff0000ffff, 0x3f3fffffffffffff,
111770xfffffffffffffffe, 0xffff9fffffffffff, 0xffffffff07fffffe, 0x01ffc7ffffffffff,
111780x000fffff800fffff, 0x000ddfff000fffff, 0xffcfffffffffffff, 0x00000000108001ff,
111790xffffffff00000000, 0x01ffffffffffffff, 0xffff07ffffffffff, 0x003fffffffffffff,
111800x01ff0fff7fffffff, 0x001f3fffffff0000, 0xffff0fffffffffff, 0x00000000000003ff,
111810xffffffff0fffffff, 0x001ffffe7fffffff, 0x8000008000000000, 0x0000000000007001,
111820xffefffffffffffff, 0x0000000000001fef, 0xfc00f3ffffffffff, 0x0003ffbfffffffff,
111830x007fffffffffffff, 0x3ffffffffc00e000, 0xe7ffffffffff01ff, 0x046fde0000000000,
111840x001fff8000000000, 0xffffffff3f3fffff, 0x3fffffffaaff3f3f, 0x5fdfffffffffffff,
111850x1fdc1fff0fcf1fdc, 0x8002000000000000, 0x000000001fff0000, 0xf3ffbd503e2ffc84,
111860xffffffff000043e0, 0x00000000000001ff, 0xffc0000000000000, 0x000003ffffffffff,
111870x000c781fffffffff, 0xffff20bfffffffff, 0x000080ffffffffff, 0x7f7f7f7f007fffff,
111880xffffffff7f7f7f7f, 0x0000800000000000, 0x1f3e03fe000000e0, 0xfffffffee07fffff,
111890xf7ffffffffffffff, 0xfffeffffffffffe0, 0xffffffff00007fff, 0xffff000000000000,
111900x0000000000001fff, 0x3fffffffffff0000, 0x00000c00ffff1fff, 0x8ff07fffffffffff,
111910x0000ffffffffffff, 0xfffffffcff800000, 0xfffffffffffff9ff, 0xfffc000003eb07ff,
111920x000000ffffffffbf, 0x000fffffffffffff, 0xe8fc00000000002f, 0xffff07fffffffc00,
111930x1fffffff0007ffff, 0xfff7ffffffffffff, 0x7c00ffff00008000, 0xfc7fffff00003fff,
111940x7fffffffffffffff, 0x003cffff38000005, 0xffff7f7f007e7e7e, 0xffff03fff7ffffff,
111950x000007ffffffffff, 0xffff000fffffffff, 0x0ffffffffffff87f, 0xffff3fffffffffff,
111960x0000000003ffffff, 0x5f7ffdffe0f8007f, 0xffffffffffffffdb, 0x0003ffffffffffff,
111970xfffffffffff80000, 0x3fffffffffffffff, 0xfffffffffffcffff, 0x0fff0000000000ff,
111980xffdf000000000000, 0x1fffffffffffffff, 0x07fffffe00000000, 0xffffffc007fffffe,
111990x000000001cfcfcfc},
11200{1, 2, 3, 4, 5, 6, 7, 8, 5, 9, 10, 5, 11, 12, 13, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 14,
1120115, 16, 7, 17, 18, 7, 19, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
112025, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
112035, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
112045, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
112055, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
112065, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
112075, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
112085, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
112095, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5},
11210{1, 2, 3, 4, 5, 4, 4, 4, 4, 6, 7, 8, 9, 10, 11, 2, 2, 12, 13,
1121114, 15, 16, 4, 2, 2, 2, 2, 17, 18, 19, 4, 20, 21, 22, 23, 24, 4, 25,
112124, 26, 27, 28, 29, 30, 31, 32, 4, 2, 33, 34, 34, 35, 4, 4, 4, 4, 4,
1121336, 4, 37, 38, 39, 40, 2, 41, 42, 43, 34, 44, 2, 45, 46, 4, 47, 48, 49,
1121450, 4, 4, 2, 51, 2, 52, 4, 4, 53, 54, 55, 56, 57, 4, 58, 59, 4, 4,
1121560, 4, 61, 62, 63, 64, 65, 66, 67, 68, 69, 60, 4, 4, 4, 4, 70, 71, 72,
112164, 73, 74, 75, 4, 4, 4, 4, 76, 4, 4, 77, 4, 2, 2, 2, 2, 2, 2,
112172, 2, 2, 2, 2, 2, 2, 2, 78, 4, 2, 79, 2, 2, 2, 80, 4, 4, 4,
112184, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
112194, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 68,
1122081, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 79, 4,
112214, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
112224, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
112234, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
112244, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 59, 4, 4, 4, 4,
112254, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
112264, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
112274, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
112284, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
112294, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
112304, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
112314, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 2,
112322, 2, 2, 2, 2, 60, 82, 55, 83, 84, 85, 86, 4, 4, 4, 4, 4, 4, 4,
112334, 4, 4, 2, 4, 4, 2, 87, 88, 89, 2, 2, 2, 2, 2, 2, 2, 2, 2,
112342, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
112352, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
112362, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
112372, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
112382, 2, 2, 2, 2, 2, 2, 2, 2, 2, 90, 2, 2, 2, 2, 2, 2, 2, 2,
112392, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 91, 33, 4, 4, 4, 4, 4, 4,
112404, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
112414, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
112424, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
112434, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 92, 2, 2, 2, 2, 93, 94, 2,
112442, 2, 2, 2, 95, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
112454, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
112464, 4, 4, 2, 96, 97, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
112474, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 98, 99,
11248100, 101, 102, 2, 2, 2, 2, 103, 104, 105, 106, 107, 108, 4, 4, 4, 4, 4, 4,
112494, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
112504, 4, 4, 22, 4, 4, 4, 109, 4, 4, 4, 110, 111, 4, 4, 4, 4, 83, 112,
112514, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
11252113, 2, 2, 2, 114, 2, 115, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
112534, 4, 4, 4, 4, 4, 116, 117, 118, 4, 4, 4, 4, 4, 4, 4, 4, 4, 119,
11254120, 121, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
112554, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
112564, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
112574, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
112582, 2, 2, 2, 2, 2, 2, 2, 2, 2, 122, 2, 2, 2, 2, 2, 2, 2, 2,
112592, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
112602, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
112612, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 60,
112622, 2, 2, 10, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
112632, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
112642, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
112652, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
112662, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 123, 2,
112672, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
112682, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
112692, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 124, 4, 4, 4, 4, 4,
112704, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
112714, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
112724, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 125, 4, 4, 4, 4, 4,
112734, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2,
112742, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 126, 4, 4, 4, 4, 4, 4,
112754, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
112764, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
11278{0xb7ffff7fffffefff, 0x000000003fff3fff, 0xffffffffffffffff, 0x07ffffffffffffff,
112790x0000000000000000, 0x001fffffffffffff, 0xffffffff1fffffff, 0x000000000001ffff,
112800xffffe000ffffffff, 0x07ffffffffff07ff, 0xffffffff3fffffff, 0x00000000003eff0f,
112810xffff00003fffffff, 0x0fffffffff0fffff, 0xffff00ffffffffff, 0xf7ff000fffffffff,
112820x1bfbfffbffb7f7ff, 0x007fffffffffffff, 0x000000ff003fffff, 0x07fdffffffffffbf,
112830x91bffffffffffd3f, 0x007fffff003fffff, 0x000000007fffffff, 0x0037ffff00000000,
112840x03ffffff003fffff, 0xc0ffffffffffffff, 0x003ffffffeeff06f, 0x1fffffff00000000,
112850x000000001fffffff, 0x0000001ffffffeff, 0x003fffffffffffff, 0x0007ffff003fffff,
112860x000000000003ffff, 0x00000000000001ff, 0x0007ffffffffffff, 0x000000ffffffffff,
112870x00031bffffffffff, 0xffff00801fffffff, 0xffff00000000003f, 0xffff000000000003,
112880x007fffff0000001f, 0x003e00000000003f, 0x01fffffffffffffc, 0x000001ffffff0004,
112890x0047ffffffff00f0, 0x000000001400c01e, 0x409ffffffffbffff, 0xffff01ffbfffbd7f,
112900x000001ffffffffff, 0xe3edfdfffff99fef, 0x0000000fe081199f, 0x00000003800007bb,
112910x00000000000000b3, 0x7f3fffffffffffff, 0x000000003f000000, 0x7fffffffffffffff,
112920x0000000000000011, 0x013fffffffffffff, 0x000007ffe7ffffff, 0x000000000000007f,
112930x01ffffffffffffff, 0xffffffff00000000, 0x80000000ffffffff, 0x99bfffffff6ff27f,
112940x0000000000000007, 0xfffffcff00000000, 0x0000001afcffffff, 0x7fe7ffffffffffff,
112950xffffffffffff0000, 0xffff000020ffffff, 0x7f7ffffffffffdff, 0xfffc000000000001,
112960x007ffefffffcffff, 0xb47ffffffffffb7f, 0xfffffdbf000000cb, 0x00000000017b7fff,
112970x007fffff00000000, 0x0001000000000000, 0x0000000003ffffff, 0x00007fffffffffff,
112980x000000000000000f, 0x0001ffffffffffff, 0xffff00007fffffff, 0x00003fffffff0000,
112990x0000ffffffffffff, 0xe0fffff80000000f, 0x000000000000ffff, 0xffffffffffff87ff,
113000x00000000ffff80ff, 0x0003000b00000000, 0x00ffffffffffffff, 0x00000000003fffff,
113010x6fef000000000000, 0x00000007ffffffff, 0xffff00f000070000, 0x0fffffffffffffff,
113020x1fff07ffffffffff, 0x0000000043ff01ff, 0xffffffffffdfffff, 0xebffde64dfffffff,
113030xffffffffffffffef, 0x7bffffffdfdfe7bf, 0xfffffffffffdfc5f, 0xffffff3fffffffff,
113040xf7fffffff7fffffd, 0xffdfffffffdfffff, 0xffff7fffffff7fff, 0xfffffdfffffffdff,
113050x0000000000000ff7, 0x000007dbf9ffff7f, 0x3f801fffffffffff, 0x0000000000004000,
113060x00000fffffffffff, 0x7fff6f7f00000000, 0x000000000000001f, 0x000000000000088f,
113070x0af7fe96ffffffef, 0x5ef7f796aa96ea84, 0x0ffffbee0ffffbff, 0xffff000000000000,
113080xffff03ffffff03ff, 0x00000000000003ff, 0x00000000ffffffff, 0xffff0003ffffffff,
113090x00000001ffffffff, 0x000000003fffffff, 0x00000000000007ff}};
11310 staticconstexpr range_array prop_bidi_c_data = {0x00000000, 0x00061C01, 0x00061D00,
113110x00200E01, 0x00201000, 0x00202A01,
113120x00202F00, 0x00206601, 0x00206A00};
11313 staticconstexpr bool_trie<32, 962, 28, 2, 27, 1, 13, 242, 5, 91, 32, 6> prop_bidi_m_data{
11314{0x5000030000000000, 0x2800000028000000, 0x0800080000000000, 0x0000000000000000,
113150x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
113160x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
113170x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
113180x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
113190x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
113200x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
113210x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000},
11322{1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
113230, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
113240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 5, 0, 0, 6, 0, 0, 7, 8,
113259, 10, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 13, 0, 0, 0, 0,
113260, 0, 14, 15, 16, 17, 18, 19, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 21, 22, 0, 0, 0, 0,
113270, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
113280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
113290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
113300, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
113310, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
113320, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
113330, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
113340, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
113350, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
113360, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
113370, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
113380, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
113390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
113400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
113410, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
113420, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
113430, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
113440, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
113450, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
113460, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
113470, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
113480, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
113490, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
113500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
113510, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
113520, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
113530, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
113540, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
113550, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
113560, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
113570, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
113580, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26},
11359{0x0000000000000000, 0x3c00000000000000, 0x0000000018000000, 0x0600000000000000,
113600x6000000000000060, 0x0000000000006000, 0x0000000000000001, 0xfa0ff857bc623f1e,
113610xffffcff5803c1fff, 0xc1ffffcc01079fff, 0xffff3fffffc33e00, 0x0000060300000f00,
113620x003fff0000000000, 0x0000fffc70783b79, 0x0100fffdf9fffff8, 0x33f0033a1f37c23f,
113630x70307a53dffffc00, 0xfe19bc3001800000, 0xffffbfcfffffffff, 0x2f88707c507fffff,
113640x4000000000000000, 0x000003ff3000363c, 0x000000001fe00000, 0x000000000ff3ff00,
113650x000000307e000000, 0x2800000050000300, 0x0000000da8000000},
11368{0x0000000000000000, 0x0000000008000000, 0x0000000000200000, 0x0000000000008000,
113690x0000000000000200, 0x0000000000000008}};
11370 staticconstexpr bool_trie<0, 969, 5, 18, 11, 1, 13, 242, 3, 69, 56, 4> prop_ce_data{
11372{1, 0, 2, 3, 4, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7, 0, 0, 0, 0,
113730, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
113740, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
113750, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
113760, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
113770, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
113780, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
113790, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
113800, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
113810, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
113820, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
113830, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
113840, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
113850, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
113860, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
113870, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
113880, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
113890, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
113900, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
113910, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
113920, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
113930, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
113940, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
113950, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
113960, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
113970, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
113980, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
113990, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
114000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
114010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
114020, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
114030, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
114040, 0, 0, 0, 0, 0, 0, 9, 10},
11405{0x0000000000000000, 0x00000000ff000000, 0x00000000b0000000, 0x0048000000000000,
114060x000000004e000000, 0x0000000030000000, 0x0140020010842008, 0x0200108420080000,
114070x0000000010000000, 0x5f7ffc00a0000000, 0x0000000000007fdb},
11410{0x0000000000000000, 0x0000001fc0000000, 0xf800000000000000, 0x0000000000000001}};
11411 staticconstexpr bool_trie<32, 969, 5, 18, 21, 19, 13, 224, 100, 69, 23, 6> prop_comp_ex_data{
11412{0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
114130x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
114140x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
114150x0000000000000000, 0x401000000000001b, 0x0000000000000080, 0x0000000000000000,
114160x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
114170x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
114180x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
114190x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000},
11420{1, 0, 2, 3, 4, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7,
114210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
114220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
114230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 9, 10, 11, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 13,
114240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
114250, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
114260, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
114270, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
114280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
114290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
114300, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
114310, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
114320, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
114330, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
114340, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
114350, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
114360, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
114370, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
114380, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
114390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
114400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
114410, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
114420, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
114430, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
114440, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
114450, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
114460, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
114470, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
114480, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
114490, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
114500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
114510, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
114520, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
114530, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
114540, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
114550, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
114560, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 15,
1145715, 16, 17, 15, 18, 19, 20},
11458{0x0000000000000000, 0x00000000ff000000, 0x00000000b0000000, 0x0048000000000000,
114590x000000004e000000, 0x0000000030000000, 0x0168020010842008, 0x0200108420080002,
114600x2aaa000000000000, 0x4800000000000000, 0x2a00c80808080a00, 0x0000000000000003,
114610x00000c4000000000, 0x0000060000000000, 0x0000000010000000, 0xffffffffffffffff,
114620xfffffc657fe53fff, 0xffff3fffffffffff, 0x0000000003ffffff, 0x5f7ffc00a0000000,
114630x0000000000007fdb},
11464{1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2},
11465{1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
114660, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
114670, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
114680, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 5},
11469{0x0000000000000000, 0x0000001fc0000000, 0xf800000000000000, 0x0000000000000001,
114700xffffffffffffffff, 0x000000003fffffff}};
11471 staticconstexpr flat_array<30> prop_dash_data{
11472{0x1400, 0x1806, 0x058A, 0x208B, 0xFF0D, 0x2010, 0x2011, 0x2012, 0x2013, 0x2014,
114730x2015, 0x2212, 0x2E17, 0x2E1A, 0x301C, 0x30A0, 0x002D, 0x10EAD, 0x3030, 0xFE31,
114740xFE32, 0x2E3A, 0x2E3B, 0x05BE, 0x2E40, 0x2053, 0xFE58, 0x2E5D, 0xFE63, 0x207B}};
11475 staticconstexpr flat_array<15> prop_dep_data{{0xE0001, 0x17A3, 0x17A4, 0x0149, 0x206A, 0x206B,
114760x206C, 0x206D, 0x206E, 0x206F, 0x2329, 0x232A,
114770x0673, 0x0F77, 0x0F79}};
11478 staticconstexpr bool_trie<32, 991, 1, 0, 64, 255, 1, 0, 475, 11, 26, 42> prop_dia_data{
11479{0x0000000000000000, 0x0000000140000000, 0x0190810000000000, 0x0000000000000000,
114800x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
114810x0000000000000000, 0x0000000000000000, 0xffff000000000000, 0xffffffffffffffff,
114820xffffffffffffffff, 0x04300007e0ff7fff, 0x0000000000000030, 0x0000000000000000,
114830x0000000000000000, 0x0000000000000000, 0x00000000000000f8, 0x0000000000000000,
114840x0000000000000000, 0x0000000002000000, 0xbffffffbfffe0000, 0x0000000000000016,
114850x0000000000000000, 0x000000000187f800, 0x0000000000000000, 0x00001c6180000000,
114860xffff000000000000, 0x00000000000007ff, 0x0001ffc000000000, 0x003ff80000000000},
11487{1, 2, 3, 4, 5, 4, 6, 4, 6, 4, 7, 4, 8, 1, 6, 4, 6, 4, 6, 9, 6, 1, 10,
114881, 11, 12, 13, 14, 1, 15, 16, 17, 18, 19, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 20, 1,
114891, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 21, 1, 1, 22, 1, 1, 1, 1, 23, 1,
114901, 1, 1, 24, 25, 26, 27, 28, 29, 1, 30, 31, 1, 32, 33, 34, 1, 35, 1, 1, 1, 1, 1,
114911, 36, 37, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
114921, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
114931, 1, 1, 1, 1, 1, 1, 1, 38, 1, 1, 1, 1, 39, 1, 1, 1, 1, 1, 1, 1, 40, 1,
1149441, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
114951, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
114961, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
114971, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
114981, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
114991, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
115001, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
115011, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
115021, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
115031, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
115041, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
115051, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
115061, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
115071, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
115081, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
115091, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
115101, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
115111, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
115121, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
115131, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
115141, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 42, 43, 44, 45, 1, 46, 47, 1, 1, 1, 48, 49,
1151550, 51, 52, 1, 53, 54, 55, 1, 56, 1, 57, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
115161, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
115171, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
115181, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
115191, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
115201, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
115211, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
115221, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
115231, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
115241, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
115251, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
115261, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
115271, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
115281, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
115291, 1, 1, 1, 1, 58, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 59, 1, 1, 1, 60, 61,
11531{0x0000000003000000, 0x0000000000000000, 0x00000000ff000000, 0x7ffffff80007fe00,
115320x1000000000000000, 0x00020000001e2000, 0x0000000000002000, 0xe000000000002000,
115330x0000000000202000, 0x1800000000000000, 0x0000000000000400, 0x0000000000005f80,
115340x0400000000000000, 0x0000000000001f00, 0xc2a0000003000000, 0x00000000000000dc,
115350x0000000000000040, 0x0680000000000000, 0x00003e1800000000, 0x000000000c00bf80,
115360x00000000e0000000, 0x0000000000300000, 0x00000000200ffe00, 0x0e00000000000000,
115370x9fe0000000000000, 0x7fff000000000000, 0x0000000000000ffe, 0x0010000000000000,
115380x000ff80000000010, 0x00000c0000000000, 0x00c0000000000000, 0x3f00000000000000,
115390x039021ffffff0000, 0xfffff00000000000, 0x000007ffffffffff, 0xffe000000000fff0,
115400xa000000000000000, 0x6000e000e000e003, 0x0003800000000000, 0x0000800000000000,
115410x0000fc0000000000, 0x000000001e000000, 0xb000800000000000, 0x0000000030000000,
115420x0003000000000000, 0x00000003ffffffff, 0x0000000000000700, 0x0300000000000000,
115430x0003ffff00000010, 0x0000780000000000, 0x0000000000080000, 0x0008000000000000,
115440x0000002000000001, 0x3800000000000000, 0x8000000000000000, 0x0040000000000007,
115450x00000e00f8000000, 0x0000300000000000, 0x0000000040000000, 0x0000ffff00000000,
115460x4000000000000000, 0x0001000000000001, 0x00000000c0000000, 0x0000000800000000},
11547{1, 2, 2, 2, 2, 3, 2, 2, 2, 4, 2, 5, 6, 7, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
115482, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
115492, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
115502, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
115512, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
115522, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
115532, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
115542, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
115552, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2},
11556{1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0,
115570, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0,
115580, 0, 5, 6, 0, 0, 7, 8, 0, 9, 10, 0, 11, 12, 0, 0, 13, 14, 15, 0, 0, 0, 16, 0,
1155917, 0, 0, 18, 19, 18, 0, 20, 0, 21, 0, 0, 0, 8, 0, 0, 0, 22, 23, 0, 1, 24, 25, 26,
115600, 0, 0, 0, 0, 18, 0, 0, 0, 0, 27, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
115610, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
115620, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
115630, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
115640, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
115650, 0, 0, 0, 0, 0, 0, 0, 29, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
115660, 0, 0, 31, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
115670, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
115680, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0,
115690, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
115700, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
115710, 0, 0, 0, 0, 0, 0, 0, 0, 34, 35, 0, 0, 0, 0, 0, 0, 0, 36, 37, 0, 0, 0, 0,
115720, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
115730, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
115740, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 38, 39, 0, 0, 0, 0, 0, 0, 0,
115750, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 41},
11576{0x0000000000000000, 0x0000000100000000, 0x07fdffffffffffbf, 0x0000006000000000,
115770x000000fc00000000, 0x000000000001ffc0, 0x000000000000003c, 0x0001000000000040,
115780x0600000000000000, 0x0018000000000000, 0x0008000000000000, 0x0000000000001c01,
115790x0060000000000000, 0x0000060000000000, 0x1000000000000000, 0x001f1fc000002000,
115800x0000000000000044, 0x000000000000000c, 0x8000000000000000, 0x0000000000000001,
115810x00c0000000000000, 0x0000080000000000, 0x6000000000000000, 0x0000000000000008,
115820x0010000000000000, 0x0000000000000080, 0x0000000002000000, 0x0000000000000034,
115830x0000000000800000, 0x001f000000000000, 0x007f000000000000, 0x00000000ffff8000,
115840x0003000000000000, 0x6fef000000000000, 0xffff3fffffffffff, 0x000000000000007f,
115850xf807e38000000000, 0x00003c0000000fe7, 0x0000400000000000, 0x0000f00000000000,
115860x00000000007f0000, 0x0000000000000770}};
11587 staticconstexpr bool_trie<32, 75, 96, 821, 22, 1, 15, 240, 44, 64, 20, 25> prop_emoji_data{
11588{0x03ff040800000000, 0x0000000000000000, 0x0000420000000000, 0x0000000000000000,
115890x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
115900x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
115910x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
115920x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
115930x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
115940x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
115950x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000},
11596{1, 2, 0, 0, 3, 0, 4, 0, 0, 0, 0, 0, 5, 0, 0, 6, 0, 0, 0, 7, 0, 0, 8, 9, 10,
1159711, 12, 13, 14, 15, 16, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 18, 19, 0, 0, 0, 0,
115980, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21},
11599{0x0000000000000000, 0x1000000000000000, 0x0000000000000200, 0x0200000400000000,
116000x0000060003f00000, 0x000001000c000000, 0x070ffe0000008000, 0x0000000000000004,
116010x00400c0000000000, 0x7800000000000001, 0x0700c44d2132401f, 0xc8000169800fff05,
116020x60030c831afc0000, 0x27bf0600001ac130, 0x001801022054bf24, 0x0000001800b85090,
116030x8001000200e00000, 0x0030000000000000, 0x00000000180000e0, 0x0000000000210000,
116040x2001000000000000, 0x0000000002800000},
11606{1, 0, 0, 2, 0, 3, 4, 5, 6, 7, 0, 0, 8, 9, 10, 11, 9, 9, 9, 12, 13, 14,
1160715, 16, 9, 17, 9, 18, 0, 0, 0, 19, 0, 0, 0, 0, 20, 21, 9, 9, 0, 22, 23, 24},
11608{0x0000000000000000, 0x0000000000000010, 0x0000000000008000, 0xc003000000000000,
116090x0000000007fe4000, 0xffffffc000000000, 0x07fc800004000006, 0x0000000000030000,
116100xfffffff3ffffffff, 0xffffffffffffffff, 0xffffffffcecfffff, 0xffb9ffffffffffff,
116110xbfffffffffffffff, 0x3fffffffffffffff, 0x07f980ffffff7e00, 0x1006013000613c80,
116120xfc08810a700e001c, 0x000000000000ffff, 0x1ff91a3fe0e7f83f, 0x00010fff00000000,
116130xf7fffffffffff000, 0xffffffffffffffbf, 0x1f1f000000000000, 0x07ff1fffffff007f,
116140x007f00ff03ff003f}};
11615 staticconstexpr range_array prop_emoji_component_data = {
116160x00000000, 0x00002301, 0x00002400, 0x00002A01, 0x00002B00, 0x00003001, 0x00003A00,
116170x00200D01, 0x00200E00, 0x0020E301, 0x0020E400, 0x00FE0F01, 0x00FE1000, 0x01F1E601,
116180x01F20000, 0x01F3FB01, 0x01F40000, 0x01F9B001, 0x01F9B400, 0x0E002001, 0x0E008000};
11619 staticconstexpr range_array prop_emoji_modifier_data = {0x00000000, 0x01F3FB01, 0x01F40000};
11620 staticconstexpr bool_trie<0, 5, 120, 867, 4, 1, 15, 240, 30, 78, 20, 15>
11621prop_emoji_modifier_base_data{
11624{0x0000000000000000, 0x0000000020000000, 0x0200000000000000, 0x0000000000003c00},
11626{1, 2, 0, 3, 4, 0, 0, 5, 6, 0, 0, 7, 8, 9, 0,
116270, 0, 0, 0, 0, 0, 0, 10, 11, 12, 13, 0, 0, 0, 14},
11628{0x0000000000000000, 0x0000000000000020, 0x0000000000001c9c, 0x11ffffc00001ffcc,
116290x00000400000280ee, 0x0430000000000000, 0x0000000000610000, 0x000000000000f8e0,
116300x0070000800000000, 0x0000000000001001, 0x73ff0040ff009000, 0x0080000000000000,
116310x0b60000000000000, 0x000000003ffee000, 0x007f000000000038}};
11632 staticconstexpr bool_trie<0, 34, 108, 850, 13, 1, 15, 240, 44, 64, 20, 27>
11633prop_emoji_presentation_data{
11635{1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, 4, 5, 6, 7, 8,
116369, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 12},
11637{0x0000000000000000, 0x000000000c000000, 0x00091e0000000000, 0x6000000000000000,
116380x0000000000300000, 0x80000000000fff00, 0x60000c0200080000, 0x242c040000104030,
116390x0000010000000c20, 0x0000000000b85000, 0x8001000000e00000, 0x0000000018000000,
116400x0000000000210000},
11642{1, 0, 0, 2, 0, 0, 3, 4, 5, 6, 0, 0, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
1164317, 18, 13, 19, 13, 20, 0, 0, 0, 21, 0, 0, 0, 0, 22, 23, 13, 13, 0, 24, 25, 26},
11644{0x0000000000000000, 0x0000000000000010, 0x0000000000008000, 0x0000000007fe4000,
116450xffffffc000000000, 0x077c800004000002, 0x0000000000030000, 0xffbfe001ffffffff,
116460xdfffffffffffffff, 0xffffffff000fffff, 0xff11ffff000f87ff, 0x7fffffffffffffff,
116470xfffffffffffffffd, 0xffffffffffffffff, 0x9fffffffffffffff, 0x3fffffffffffffff,
116480x040000ffffff7800, 0x0000001000600000, 0xf800000000000000, 0x000000000000ffff,
116490x1ff01800e0e7103f, 0x00010fff00000000, 0xf7fffffffffff000, 0xffffffffffffffbf,
116500x1f1f000000000000, 0x07ff1fffffff007f, 0x007f00ff03ff003f}};
11651 staticconstexpr flat_array<50> prop_ext_data{
11652{0x10781, 0x10782, 0x3005, 0x180A, 0xA60C, 0xA015, 0x11A98, 0x309D, 0x309E, 0x1AA7,
116530x3031, 0x3032, 0x3033, 0x3034, 0x3035, 0x1C36, 0x00B7, 0x1E13C, 0x1E13D, 0x0640,
116540x16B42, 0x1843, 0x16B43, 0x1E944, 0x0E46, 0x0EC6, 0x115C6, 0x115C7, 0x115C8, 0x1E945,
116550x1E946, 0xA9CF, 0x02D0, 0x02D1, 0x0B55, 0xAADD, 0x1135D, 0x16FE0, 0x16FE1, 0x16FE3,
116560xA9E6, 0xAA70, 0xFF70, 0xAAF3, 0xAAF4, 0x07FA, 0x1C7B, 0x30FC, 0x30FD, 0x30FE}};
11657 staticconstexpr bool_trie<32, 75, 96, 821, 22, 1, 15, 240, 44, 64, 20, 22>
11658prop_extended_pictographic_data{
11659{0x0000000000000000, 0x0000000000000000, 0x0000420000000000, 0x0000000000000000,
116600x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
116610x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
116620x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
116630x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
116640x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
116650x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
116660x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000},
11667{1, 2, 0, 0, 3, 0, 4, 0, 0, 0, 0, 0, 5, 0, 6, 7, 0, 0, 0, 8, 0, 0, 9, 10, 11,
1166812, 13, 12, 14, 15, 16, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 18, 19, 0, 0, 0, 0,
116690, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21},
11670{0x0000000000000000, 0x1000000000000000, 0x0000000000000200, 0x0200000400000000,
116710x0000060003f00000, 0x000001000c000000, 0x0000000000000100, 0x070ffe0000008000,
116720x0000000000000004, 0x00400c0000000000, 0x7800000000000001, 0xfffffffffff7ffbf,
116730xffffffffffffffff, 0xffffffffffff003f, 0x001801022057ff3f, 0x000000f800b85090,
116740x8001000200e00000, 0x0030000000000000, 0x00000000180000e0, 0x0000000000210000,
116750x2001000000000000, 0x0000000002800000},
11677{1, 2, 3, 4, 5, 6, 7, 0, 8, 9, 0, 0, 2, 2, 2, 10, 2, 2, 2, 2, 11, 12,
116782, 2, 2, 13, 2, 14, 0, 0, 0, 15, 0, 0, 16, 0, 17, 18, 2, 2, 2, 19, 20, 21},
11679{0x0000000000000000, 0xffff0fffffffffff, 0xffffffffffffffff, 0xfffe7fff000fffff,
116800x003ffffffffefffe, 0x000080000000e000, 0xc003f00000000000, 0x0000200007fe4000,
116810x07fc800004000006, 0x0000003f00030000, 0x07ffffffffffffff, 0x3fffffffffffffff,
116820xffffffffffffffc0, 0x000000000000ffff, 0x1fff1fffe0ffffff, 0x00010fff01e00000,
116830x0003000000000000, 0xf7fffffffffff000, 0xffffffffffffffbf, 0x1f1f3fff000fffff,
116840x07ff1fffffff007f, 0x007f00ff03ff003f}};
11685 staticconstexpr bool_trie<32, 991, 1, 0, 131, 255, 1, 0, 1343, 1, 0, 168> prop_gr_base_data{
11686{0xffffffff00000000, 0x7fffffffffffffff, 0xffffdfff00000000, 0xffffffffffffffff,
116870xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
116880xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
116890x0000000000000000, 0xfcff000000000000, 0xfffffffbffffd7f0, 0xffffffffffffffff,
116900xffffffffffffffff, 0xffffffffffffffff, 0xfffffffffffffc07, 0xffffffffffffffff,
116910xfffeffffffffffff, 0xfffffffffe7fffff, 0x400000000000e7ff, 0x001f87ffffff0049,
116920xffffffffe800ffc0, 0xfffeffff000007ff, 0xffffffffffffffff, 0xffffc260403fffff,
116930x0000fffffffd3fff, 0xffffffffffffe000, 0x0002003fffffffff, 0xc7f007ffffffffff},
11694{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
1169519, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
1169636, 36, 36, 36, 37, 38, 39, 40, 41, 42, 43, 36, 36, 36, 36, 36, 36, 36,
1169736, 36, 36, 44, 45, 46, 47, 48, 49, 50, 45, 51, 52, 53, 54, 55, 56, 57,
1169858, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 36, 36, 36, 60, 36, 36, 36,
1169936, 69, 70, 71, 72, 73, 74, 75, 76, 36, 36, 77, 36, 36, 36, 36, 36, 36,
1170036, 36, 36, 78, 79, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1170136, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 80, 81, 36, 36,
1170236, 36, 82, 83, 84, 85, 86, 36, 87, 88, 89, 36, 36, 36, 90, 91, 92, 93,
1170336, 94, 36, 95, 96, 97, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1170436, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1170536, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1170636, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1170736, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1170836, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1170936, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1171036, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1171136, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1171236, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1171336, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1171436, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1171536, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1171636, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1171736, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1171836, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1171936, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1172036, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1172136, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1172236, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1172336, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1172436, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1172536, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1172636, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1172736, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1172836, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 98, 99, 36, 36, 36,
1172936, 100, 101, 102, 103, 36, 36, 36, 104, 105, 106, 36, 107, 108, 109, 110, 111, 112,
11730113, 114, 115, 116, 55, 36, 117, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1173136, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1173236, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1173336, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1173436, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1173536, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1173636, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1173736, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1173836, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1173936, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
1174036, 96, 118, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
1174160, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
1174260, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
1174360, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
1174460, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
1174560, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
1174660, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
1174760, 60, 60, 60, 60, 60, 60, 60, 60, 36, 36, 36, 36, 36, 119, 36, 120, 121,
11748122, 36, 123, 36, 36, 36, 36, 36, 36, 124, 125, 126, 127, 36, 128, 92, 36, 129,
11750{0x7fff0110043fffff, 0xffff07ff41ffffff, 0xffffffff00007fff, 0x00000000000003ff,
117510xebfffffffffffff8, 0xfffffff3ff01de01, 0xa3c5fdfffff99fed, 0x3fffffc3b0005981,
117520xc36dfdfffff987e8, 0x005cffc05e000001, 0xe3edfdfffffbbfe8, 0x0203ffc300011a01,
117530x23edfdfffff99fec, 0x00ffffc3b0001981, 0x83ffc718d63dc7e8, 0x07ffffc000011dc6,
117540x23fffdfffffddfee, 0xff80ffc32700001e, 0x63effdfffffddffd, 0x0006ffc360000d9b,
117550xa7fffffffffddffc, 0xffffffc3ff70ddc1, 0x2ffbfffffc7fffec, 0x001cffc07f03007f,
117560x800dfffffffffffe, 0x000000000fff807f, 0x200dffaffffff7d6, 0x00000000f3ff005f,
117570xfd5ffffffcffffff, 0x80001ffffffffeff, 0xc000000000001f20, 0x0000000007ffdfbf,
117580x99021fffffffffff, 0xffe1fffe3cffffff, 0xffffffffdfffdf9b, 0xffffffffffff20bf,
117590xffffffffffffffff, 0xffffffff3d7f3dff, 0x7f3dffffffff3dff, 0xffffffffff7fff3d,
117600xffffffffff3dffff, 0x1fffffff07ffffff, 0xffffffff03ffffff, 0x3f3fffffffffffff,
117610xffffffff1fffffff, 0x01ffffffffffffff, 0x0073ffff8023ffff, 0x0001dfff0003ffff,
117620xc04fffffffffffff, 0x03ff03ff1ff001bf, 0xffffffff03ff07ff, 0xffff05ffffffff9f,
117630x003fffffffffffff, 0x01fb0e787fffffff, 0x001f3ffffffffff1, 0xffff0fffffffffff,
117640xffffffffc7ff03ff, 0xffffffffc67fffff, 0x0007e01a00bfffff, 0x00003fff03ff03ff,
117650x0000000000000000, 0xe80ffffffffffff0, 0x7ff007ffffff1ffb, 0xffffc4c3fffffffc,
117660xf00c5cbfffffffff, 0xf8300fffffffffff, 0xffffffffffffe3ff, 0xe7ffffffffff01ff,
117670x04efde02000800ff, 0xffffffff3f3fffff, 0x3fffffffaaff3f3f, 0xffdfffffffffffff,
117680x7fdcffffefcfffdf, 0xffff80ffffff07ff, 0xfff30000ffffffff, 0xffffffff1fff7fff,
117690x0000000000000001, 0xffffffffffff0fff, 0x0000007fffffffff, 0xffffffff000007ff,
117700xffcfffffffffffff, 0xffffffffffbfffff, 0xfe0c7fffffffffff, 0xffff20bfffffffff,
117710x000180ffffffffff, 0x7f7f7f7f007fffff, 0x000000007f7f7f7f, 0x000000003fffffff,
117720xfffffffffbffffff, 0x000fffffffffffff, 0x0fff0000003fffff, 0xffff03ffffffffff,
117730xfffffffffffffffe, 0xfffffffff87fffff, 0xfffeffffffffffe0, 0xffffffffffff7fff,
117740xffff000fffffffff, 0xffffffff7fffffff, 0xffffffffffff1fff, 0xffffffffffff007f,
117750x00000fffffffffff, 0xc0087fffffffffff, 0xffffffff3fffffff, 0x00fcffffffffffff,
117760xfffc000003eb07ff, 0x03ff0f9ffffff7bb, 0x00ffffffffffffff, 0x7ffc000003ffc00f,
117770xffffc03fffffffff, 0x1fffffff800c007f, 0xcc37fffffffffff8, 0x7fffffdfc3ffbfff,
117780x001981ffffffffff, 0xeffffffff3ff2ff7, 0x3e62ffffffffffff, 0x003fcffff8000005,
117790xffff7f7f007e7e7e, 0x03ff1edfffffffff, 0x0ffffffffffff87f, 0xffff3fffffffffff,
117800x0000000003ffffff, 0x5f7fffffa0f8007f, 0xffffffffffffffdb, 0xfffffffffff80007,
117810xfffffffffffcffff, 0xffff0000000080ff, 0xffff000003ff0000, 0xffdf0f7ffff7ffff,
117820x1fffffffffffffff, 0x7fffffff3fffffff, 0x30007f7f1cfcfcfc},
11783{1, 2, 3, 4, 5, 6, 7, 8, 5, 9, 10, 11, 12, 13, 14, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 15,
1178416, 17, 7, 18, 19, 7, 20, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
117855, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
117865, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
117875, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
117885, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
117895, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
117905, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
117915, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
117925, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5},
11793{1, 2, 3, 4, 2, 5, 6, 7, 7, 8, 9, 10, 11, 12, 13, 2, 2, 14,
1179415, 16, 17, 18, 7, 2, 2, 2, 2, 19, 20, 21, 7, 22, 23, 24, 25, 26,
117957, 27, 28, 29, 30, 31, 32, 33, 34, 35, 7, 2, 36, 37, 38, 39, 7, 7,
117967, 7, 40, 41, 7, 16, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
117977, 54, 55, 56, 57, 7, 7, 58, 59, 60, 61, 7, 7, 62, 63, 64, 65, 66,
1179867, 68, 69, 7, 7, 70, 7, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 7,
117997, 7, 7, 81, 82, 83, 7, 84, 85, 86, 7, 7, 7, 7, 87, 7, 7, 88,
1180089, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 90, 7, 2,
1180191, 2, 2, 2, 92, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
118027, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
118037, 7, 7, 7, 7, 7, 7, 7, 7, 93, 37, 2, 2, 2, 2, 2, 2, 2,
118042, 2, 2, 2, 2, 2, 2, 2, 2, 94, 7, 7, 7, 7, 7, 7, 7, 7,
118057, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
118067, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
118077, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
118087, 2, 2, 2, 2, 2, 2, 2, 2, 2, 69, 7, 7, 7, 7, 7, 7, 7,
118097, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
118107, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
118117, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
118127, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
118137, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
118147, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
118157, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
118167, 2, 2, 2, 2, 2, 2, 2, 2, 80, 95, 96, 97, 98, 99, 100, 7, 7,
118177, 7, 7, 7, 7, 7, 7, 7, 2, 101, 7, 2, 102, 103, 104, 2, 2, 2,
118182, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
118192, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
118202, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
118212, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
118222, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
118232, 2, 58, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
118242, 2, 2, 2, 105, 36, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
118257, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
118267, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
118277, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
118287, 7, 7, 7, 7, 7, 7, 7, 106, 2, 2, 2, 2, 107, 108, 2, 2, 2,
118292, 2, 109, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
118307, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
118317, 7, 7, 2, 110, 111, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
118327, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
118337, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
118347, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
118357, 7, 7, 7, 7, 7, 7, 7, 93, 2, 92, 2, 2, 2, 112, 113, 114, 115,
11836116, 2, 117, 7, 118, 2, 119, 7, 7, 2, 120, 121, 122, 123, 124, 2, 2, 2,
118372, 125, 2, 2, 2, 2, 126, 2, 2, 2, 2, 2, 2, 2, 2, 127, 128, 129,
118387, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 130,
118397, 7, 7, 7, 7, 7, 7, 131, 132, 7, 7, 7, 7, 133, 134, 7, 7, 7,
118407, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 135, 2,
118412, 2, 136, 2, 137, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 138, 139,
118427, 140, 7, 7, 7, 141, 142, 143, 144, 7, 7, 7, 7, 145, 2, 146, 147, 2,
118432, 148, 149, 150, 151, 7, 7, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
118442, 2, 2, 2, 152, 2, 153, 2, 154, 155, 156, 157, 7, 2, 2, 2, 2, 2,
11845158, 159, 160, 2, 2, 161, 162, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
118467, 7, 7, 7, 7, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
118472, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 31, 2, 2, 2,
118482, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
118492, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
118502, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
118512, 2, 2, 2, 2, 2, 2, 80, 2, 2, 2, 163, 2, 2, 2, 2, 2, 2,
118522, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
118532, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
118542, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
118552, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
118562, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 164, 2, 2, 2, 2, 2, 2,
118572, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
118582, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
118592, 2, 2, 2, 2, 2, 2, 2, 2, 2, 165, 7, 7, 7, 7, 7, 7, 7,
118607, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
118617, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
118627, 7, 7, 7, 7, 2, 2, 2, 2, 2, 2, 2, 2, 166, 7, 7, 7, 7,
118637, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
118647, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 167, 7, 7, 7,
118657, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
118667, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
118677, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7},
11868{0xb7ffff7fffffefff, 0x000000003fff3fff, 0xffffffffffffffff, 0x07ffffffffffffff,
118690xff8fffffffffff87, 0x000000011fff7fff, 0x1fffffffffff0000, 0x0000000000000000,
118700xffffffff1fffffff, 0x0ffffffe0001ffff, 0xffffe00fffffffff, 0x003fffffffff07ff,
118710xffffffffbfffffff, 0x00000000003fff0f, 0xffff03ff3fffffff, 0x0fffffffff0fffff,
118720xffff00ffffffffff, 0xf7ff800fffffffff, 0x1bfbfffbffb7f7ff, 0x007fffffffffffff,
118730x000000ff003fffff, 0x07fdffffffffffbf, 0x91bffffffffffd3f, 0xffffffffffbfffff,
118740x0000ff807fffffff, 0xf837ffff00000000, 0x83ffffff8fffffff, 0xf0ffffffffffffff,
118750xfffffffffffcffff, 0x003ffffffeef0001, 0xffffffff01ff01ff, 0x00000000ffffffff,
118760x007ff81fffffffff, 0xfe3fffffffffffff, 0xff07ffffff3fffff, 0x0000fe001e03ffff,
118770x00000000000001ff, 0x0007ffffffffffff, 0xfc07ffffffffffff, 0x03ff000fffffffff,
118780x7fffffff00000000, 0x000323ffffffffff, 0xffff000003fe003f, 0xffff0000000003c3,
118790x007fffff00000fff, 0x00fffffffffffffd, 0x0026fffffffc3f80, 0xd987fffffffffffc,
118800x03ff01ffffff0003, 0xffc0107ffffffff8, 0x0077ffffffff00ff, 0x803ffffffffffffc,
118810x001ffffeffff61ff, 0x3f2c7ffffffbffff, 0xffff03ffbfffbd7f, 0x03ff00077fffffff,
118820xa3edfdfffff99fec, 0x0000000fe001399e, 0x00ffffffffffffff, 0x00000003afffffa3,
118830x5a06ffffffffffff, 0x0000000003ff00f2, 0x4f037fffffffffff, 0x000000000ffffffe,
118840x5807ffffffffffff, 0x00001fff03ff001e, 0x0340d7ffffffffff, 0x00000000000003ff,
118850xffff004307ffffff, 0x000000000000007f, 0x09007fffffffffff, 0xffffffff00000000,
118860x8007ffffffffffff, 0xa1beffffff6ff27f, 0x0000000003ff0077, 0xfffffcff00000000,
118870x0000001ef00fffff, 0x8607fffffffff801, 0xfffffffff181007f, 0xffff0007fc8003ff,
118880x01ffffffffffffff, 0x4000fffffffffdff, 0xffff1fffffff003f, 0x001202000000ffff,
118890x0001fffffffffb7f, 0xfffffdbf03ff0040, 0x000003ff01587fff, 0x01e7ffff00000000,
118900x0001000000000000, 0x8003ffffffffffff, 0x0000000003ffffff, 0x001f7fffffffffff,
118910x000000000000000f, 0xffffffffffff0000, 0x00007fffffffffff, 0xffffc3ff7fffffff,
118920x7fffffffffffffff, 0x00203fffffff03ff, 0xff80ffffffffffff, 0xe0fffffbfbff003f,
118930x000000000000ffff, 0x0000000007ffffff, 0xffffffffffff07ff, 0x00000000fff800ff,
118940x0003000f00000000, 0x00000000003fffff, 0x6fef000000000000, 0x00000007ffffffff,
118950xffff00f000070000, 0x0fffffffffffffff, 0x1fff07ffffffffff, 0x0000000093ff01ff,
118960x003fffffffffffff, 0xfffffe7fffffffff, 0x00003c5fffffffff, 0xffffc3fffffff018,
118970x000007ffffffffff, 0x0000000000000023, 0x000fffff00000000, 0x01ffffff007fffff,
118980xffffffffffdfffff, 0xebffde64dfffffff, 0xffffffffffffffef, 0x7bffffffdfdfe7bf,
118990xfffffffffffdfc5f, 0xffffff3fffffffff, 0xffffffffffffcfff, 0x0780000000000000,
119000xffdfe00000000000, 0x0000000000000fef, 0x000000007fffffff, 0x3f801fffffffffff,
119010x000000000000c3ff, 0x00003fffffff0000, 0x83ff0fffffffffff, 0x7fff6f7f00000000,
119020x000000000000ff9f, 0x00000000c3ff080f, 0xfffe000000000000, 0x001fffffffffffff,
119030x3ffffffffffffffe, 0x0af7fe96ffffffef, 0x5ef7f796aa96ea84, 0x0ffffbee0ffffbff,
119040x0003000000000000, 0xffff0fffffffffff, 0xfffe7fff000fffff, 0x003ffffffffefffe,
119050x00003fffffffffff, 0xffffffc000000000, 0x0fffffffffff0007, 0x0000003f000301ff,
119060x1fff1fffe0ffffff, 0x000fffffffffffff, 0x00010fff01ffffff, 0xffffffffffff0fff,
119070xffffffff03ff00ff, 0x00033fffffff00ff, 0x1f1f3fff000fffff, 0x07ff1fffffff007f,
119080x007f00ff03ff003f, 0xfffffffffff7ffff, 0x03ff0000000007ff, 0xffffffff3fffffff,
119090xffff0003ffffffff, 0x00000001ffffffff, 0x000000003fffffff, 0x00000000000007ff}};
11910 staticconstexpr range_array prop_hex_data = {
119110x00000000, 0x00003001, 0x00003A00, 0x00004101, 0x00004700, 0x00006101, 0x00006700,
119120x00FF1001, 0x00FF1A00, 0x00FF2101, 0x00FF2700, 0x00FF4101, 0x00FF4700};
11913 staticconstexpr range_array prop_ideo_data = {
119140x00000000, 0x00300601, 0x00300800, 0x00302101, 0x00302A00, 0x00303801, 0x00303B00,
119150x00340001, 0x004DC000, 0x004E0001, 0x00A00000, 0x00F90001, 0x00FA6E00, 0x00FA7001,
119160x00FADA00, 0x016FE401, 0x016FE500, 0x01700001, 0x0187F800, 0x01880001, 0x018CD600,
119170x018D0001, 0x018D0900, 0x01B17001, 0x01B2FC00, 0x02000001, 0x02A6E000, 0x02A70001,
119180x02B73900, 0x02B74001, 0x02B81E00, 0x02B82001, 0x02CEA200, 0x02CEB001, 0x02EBE100,
119190x02F80001, 0x02FA1E00, 0x03000001, 0x03134B00};
11920 staticconstexpr range_array prop_idsb_data = {0x00000000, 0x002FF001, 0x002FF200, 0x002FF401,
11922 staticconstexpr flat_array<2> prop_idst_data{{0x2FF2, 0x2FF3}};
11923 staticconstexpr flat_array<2> prop_join_c_data{{0x200C, 0x200D}};
11924 staticconstexpr range_array prop_loe_data = {0x00000000, 0x000E4001, 0x000E4500, 0x000EC001,
119250x000EC500, 0x0019B501, 0x0019B800, 0x0019BA01,
119260x0019BB00, 0x00AAB501, 0x00AAB700, 0x00AAB901,
119270x00AABA00, 0x00AABB01, 0x00AABD00};
11928 staticconstexpr bool_trie<32, 991, 1, 0, 57, 255, 1, 0, 378, 13, 57, 48> prop_oalpha_data{
11929{0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
119300x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
119310x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
119320x0000000000000000, 0x0000000000000020, 0x0000000000000000, 0x0000000000000000,
119330x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
119340x0000000000000000, 0x0000000000000000, 0xbfff000000000000, 0x00000000000000b6,
119350x0000000007ff0000, 0x00010000fefff800, 0x0000000000000000, 0x0000219e1fc00000,
119360xffff000000020000, 0x0000000000000000, 0x0001ffc000000000, 0x0000000000000000},
11937{1, 1, 2, 3, 4, 5, 6, 5, 7, 5, 8, 5, 9, 10, 11, 12, 13, 5, 13, 12, 14, 15, 16,
1193817, 18, 19, 18, 1, 20, 21, 1, 22, 23, 24, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
119391, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 25, 25, 26, 27, 1, 1, 28, 1, 29, 1,
119401, 1, 30, 31, 32, 33, 34, 35, 36, 37, 38, 1, 1, 1, 1, 1, 1, 39, 1, 1, 1, 1, 1,
119411, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 26, 40,
119421, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
119431, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 41, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
119441, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
119451, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
119461, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
119471, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
119481, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
119491, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
119501, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
119511, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
119521, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
119531, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
119541, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
119551, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
119561, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
119571, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
119581, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
119591, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
119601, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
119611, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
119621, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
119631, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
119641, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 42, 43, 1, 1, 1, 1, 1, 44, 1, 45, 46, 47,
1196548, 49, 50, 51, 52, 53, 54, 1, 1, 1, 55, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
119661, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
119671, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
119681, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
119691, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
119701, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
119711, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
119721, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
119731, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
119741, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
119751, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
119761, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
119771, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
119781, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
119791, 1, 1, 1, 1, 56, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
11981{0x00001eeff8c00000, 0x0000000000000000, 0xffff03f8fff00000, 0xcc0000000000000f,
119820x0000000c00e0dfff, 0xc00000000000000e, 0x0000000c0080199f, 0x0023000000021987,
119830x1c00000c00001bbf, 0x0000000c00c0199f, 0xc000000000000004, 0x0000000000801dc7,
119840xc00000000000000f, 0x0000000c00601ddf, 0x0000000c00801ddf, 0x000000000000000e,
119850x000c0000ff5f8000, 0x07f2000000000000, 0x0000000000002000, 0x1bf2000000000000,
119860xfffe000000000000, 0x1ffffffffeffe003, 0x797ff80000000000, 0x001e3f9dc3c00000,
119870x000000003c00bffc, 0x000c0000000c0000, 0xffc0000000000000, 0x00000000000001ff,
119880x0000020000000060, 0x01ff0fff00000000, 0x000000000f800000, 0x001ffffe7fe00000,
119890x8000000000000000, 0x0000000000007001, 0xffe000000000001f, 0x000000000000000f,
119900x000033fe00000007, 0x0003ff8000000000, 0x007ffff000000000, 0x001fff8000000000,
119910x000003ffffffffff, 0xffffffff00000000, 0x0ff0000000000000, 0x00000000c0000000,
119920x000000f800000804, 0xfff0000000000003, 0x800000000000002f, 0x000007c000000000,
119930x000000000007ff80, 0xfff000000000000f, 0x0000002000000000, 0x007ffe0000000000,
119940x3800000000003008, 0x419d000000000000, 0x0020f80000000000, 0x000007f800000000,
119950x0000000040000000},
11996{1, 2, 2, 2, 2, 3, 2, 2, 2, 2, 4, 2, 2, 5, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
119972, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
119982, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
119992, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
120002, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
120012, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
120022, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
120032, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
120042, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2},
12005{1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
120060, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 4, 0, 0,
120070, 0, 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 0, 0, 14, 15, 16, 0, 0, 17, 18, 19, 20, 0,
120080, 21, 22, 23, 24, 25, 0, 26, 0, 0, 0, 27, 0, 0, 0, 28, 29, 0, 30, 31, 32, 33, 0, 0,
120090, 0, 0, 34, 0, 35, 0, 36, 37, 38, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0,
120100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
120110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
120120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
120130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
120140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1201540, 41, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
120160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
120170, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0,
120180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
120190, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
120200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 46, 47},
12021{0x0000000000000000, 0x07c0000000000000, 0x000000000000f06e, 0x000000f000000000,
120220x0000180000000000, 0xff00000000000007, 0x001800000000003f, 0x01ff000000000004,
120230x0000000000000004, 0x0007ff8000000007, 0x0000000000000060, 0xfff8000000000007,
120240x000000000000c000, 0x409ff00000000000, 0x000001ff80000000, 0xc00000000000000f,
120250x0000000c0080199f, 0xffe0000000000000, 0x000000000000003b, 0xffff000000000000,
120260x0000000000000003, 0x7f3f800000000000, 0x0000000030000000, 0x7fff000000000000,
120270x0000000000000001, 0x003ff80000000000, 0x000007ffe0000000, 0x01fff00000000000,
120280x19bf000000000000, 0x0000000000000005, 0x00000010fcfe0000, 0x7be00000000007fe,
120290x000000000ffe0000, 0x0000000000fffc00, 0x7f7f800000000000, 0x007ffefffffc0000,
120300xb47e000000000000, 0x000000000000008b, 0x00000000007b7c00, 0x0078000000000000,
120310xfffffffffffe8000, 0x00000000000780ff, 0x0003000000000000, 0x0000000040000000,
120320x000007dbf9ffff7f, 0x0000000000000080, 0xffff03ffffff03ff, 0x00000000000003ff}};
12033 staticconstexpr flat_array<7> prop_odi_data{
12034{0x1160, 0xFFA0, 0x3164, 0x034F, 0x17B4, 0x17B5, 0x115F}};
12035 staticconstexpr bool_trie<0, 985, 6, 1, 9, 208, 1, 47, 118, 76, 62, 9> prop_ogr_ext_data{
12037{1, 2, 0, 0, 0, 0, 1, 2, 1, 2, 0, 0, 0, 3, 1, 2, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
120380, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
120390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
120406, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
120410, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
120420, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
120430, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
120440, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
120450, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
120460, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
120470, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
120480, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
120490, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
120500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
120510, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
120520, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
120530, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
120540, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
120550, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
120560, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
120570, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
120580, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
120590, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
120600, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
120610, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
120620, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
120630, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
120640, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
120650, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
120660, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
120670, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
120680, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
120690, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8},
12070{0x0000000000000000, 0x4000000000000000, 0x0000000000800000, 0x0000000000600004,
120710x0000000080008000, 0x0020000000000000, 0x0000000000001000, 0x0000c00000000000,
120720x00000000c0000000},
12073{1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
120740, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
120750, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
120760, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
120770, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
120780, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
120790, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3},
12080{1, 2, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0,
120810, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0,
120820, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
120830, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8},
12084{0x0000000000000000, 0x4000000000000000, 0x0000000000800000, 0x2001000000000000,
120850x0000800000000000, 0x0001000000000000, 0x0007c02000000000, 0xffffffff00000000,
120860xffffffffffffffff}};
12087 staticconstexpr range_array prop_oidc_data = {0x00000000, 0x0000B701, 0x0000B800,
120880x00038701, 0x00038800, 0x00136901,
120890x00137200, 0x0019DA01, 0x0019DB00};
12090 staticconstexpr flat_array<6> prop_oids_data{{0x1885, 0x1886, 0x212E, 0x2118, 0x309B, 0x309C}};
12091 staticconstexpr range_array prop_olower_data = {
120920x00000000, 0x0000AA01, 0x0000AB00, 0x0000BA01, 0x0000BB00, 0x0002B001, 0x0002B900,
120930x0002C001, 0x0002C200, 0x0002E001, 0x0002E500, 0x00034501, 0x00034600, 0x00037A01,
120940x00037B00, 0x001D2C01, 0x001D6B00, 0x001D7801, 0x001D7900, 0x001D9B01, 0x001DC000,
120950x00207101, 0x00207200, 0x00207F01, 0x00208000, 0x00209001, 0x00209D00, 0x00217001,
120960x00218000, 0x0024D001, 0x0024EA00, 0x002C7C01, 0x002C7E00, 0x00A69C01, 0x00A69E00,
120970x00A77001, 0x00A77100, 0x00A7F801, 0x00A7FA00, 0x00AB5C01, 0x00AB6000, 0x01078001,
120980x01078100, 0x01078301, 0x01078600, 0x01078701, 0x0107B100, 0x0107B201, 0x0107BB00};
12099 staticconstexpr bool_trie<32, 893, 96, 3, 21, 2, 13, 241, 107, 80, 5, 16> prop_omath_data{
12100{0x0000000000000000, 0x0000000040000000, 0x0000000000000000, 0x0000000000000000,
121010x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
121020x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
121030x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0033000000270000,
121040x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
121050x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
121060x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
121070x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000},
12108{1, 2, 3, 4, 5, 6, 7, 8, 0, 0, 0, 0, 9, 0, 10, 11, 0, 0, 0, 0, 0, 0, 12, 13, 14, 15, 0,
121090, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 17, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
121100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
121110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
121120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
121130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
121140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
121150, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
121160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
121170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
121180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
121190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
121200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
121210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
121220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
121230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
121240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
121250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
121260, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
121270, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
121280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
121290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
121300, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
121310, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
121320, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
121330, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
121340, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
121350, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
121360, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
121370, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
121380, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
121390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
121400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0,
12142{0x0000000000000000, 0x001c000000400000, 0x6000001e00000001, 0x0000000000006000,
121430x0000f8621fff0000, 0xf1fbb3103e2ffc84, 0x00000000000003e0, 0xf0c33eb6f3e00000,
121440x000000302feb3fff, 0x0000000000000f00, 0x00b0000000000000, 0x0000000400010000,
121450xf07fc00300000000, 0x00001f94000f8cc1, 0x0000000000000060, 0x0000600f00000005,
121460x0000ffc000000060, 0x0000000001fffff8, 0x300000000f000000, 0x0000010a00000000,
121470x5000000000000000},
12149{1, 2, 3, 4, 5, 6, 1, 1, 1, 1, 7, 8, 9, 10, 11, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
121500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
121510, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
121520, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 14, 15},
12153{0x0000000000000000, 0xffffffffffffffff, 0xffffffffffdfffff, 0xebffde64dfffffff,
121540xffffffffffffffef, 0x7bffffffdfdfe7bf, 0xfffffffffffdfc5f, 0xffffff3fffffffff,
121550xf7fffffff7fffffd, 0xffdfffffffdfffff, 0xffff7fffffff7fff, 0xfffffdfffffffdff,
121560xffffffffffffcff7, 0x0af7fe96ffffffef, 0x5ef7f796aa96ea84, 0x0ffffbee0ffffbff}};
12157 staticconstexpr range_array prop_oupper_data = {0x00000000, 0x00216001, 0x00217000, 0x0024B601,
121580x0024D000, 0x01F13001, 0x01F14A00, 0x01F15001,
121590x01F16A00, 0x01F17001, 0x01F18A00};
12160 staticconstexpr bool_trie<32, 890, 96, 6, 15, 0, 0, 0, 0, 0, 0, 0> prop_pat_syn_data{
12161{0xfc00fffe00000000, 0x7800000178000001, 0x88435afe00000000, 0x0080000000800000,
121620x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
121630x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
121640x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
121650x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
121660x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
121670x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
121680x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000},
12169{1, 2, 0, 0, 0, 0, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 6, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4,
121707, 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 9, 10, 4, 0, 0, 0, 0, 0, 0, 0, 0, 4, 11,
121710, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
121720, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
121730, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
121740, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
121750, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
121760, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
121770, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
121780, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
121790, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
121800, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
121810, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
121820, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
121830, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
121840, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
121850, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
121860, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
121870, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
121880, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
121890, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
121900, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
121910, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
121920, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
121930, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
121940, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
121950, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
121960, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
121970, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
121980, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
121990, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 14},
12200{0x0000000000000000, 0x7fff00ffffff0000, 0x000000007feffffe, 0xffffffffffff0000,
122010xffffffffffffffff, 0x0000007fffffffff, 0x00000000000007ff, 0x003fffffffffffff,
122020xfffffffffff00000, 0xffcfffffffffffff, 0xffffffffffbfffff, 0x000000003fffffff,
122030x00010001ffffff0e, 0xc000000000000000, 0x0000000000000060},
12207 staticconstexpr flat_array<11> prop_pat_ws_data{
12208{0x0020, 0x0085, 0x2028, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x200E, 0x200F, 0x2029}};
12209 staticconstexpr flat_array<13> prop_pcm_data{{0x0600, 0x0601, 0x0602, 0x0603, 0x0604, 0x0605,
122100x08E2, 0x110CD, 0x070F, 0x0890, 0x0891, 0x110BD,
12212 staticconstexpr range_array prop_qmark_data = {
122130x00000000, 0x00002201, 0x00002300, 0x00002701, 0x00002800, 0x0000AB01, 0x0000AC00,
122140x0000BB01, 0x0000BC00, 0x00201801, 0x00202000, 0x00203901, 0x00203B00, 0x002E4201,
122150x002E4300, 0x00300C01, 0x00301000, 0x00301D01, 0x00302000, 0x00FE4101, 0x00FE4500,
122160x00FF0201, 0x00FF0300, 0x00FF0701, 0x00FF0800, 0x00FF6201, 0x00FF6400};
12217 staticconstexpr range_array prop_radical_data = {
122180x00000000, 0x002E8001, 0x002E9A00, 0x002E9B01, 0x002EF400, 0x002F0001, 0x002FD600};
12219 staticconstexpr range_array prop_ri_data = {0x00000000, 0x01F1E601, 0x01F20000};
12220 staticconstexpr flat_array<47> prop_sd_data{
12221{0x1D48A, 0x1D48B, 0x1D58E, 0x1D58F, 0x1D692, 0x1D693, 0x1D96, 0x1DF1A, 0x029D, 0x1D422,
122220x1D423, 0x1DA4, 0x1D526, 0x1D527, 0x1DA8, 0x1D62A, 0x1D62B, 0x1E2D, 0x012F, 0x02B2,
122230x1D4BE, 0x1D4BF, 0x1D5C2, 0x1D5C3, 0x2148, 0x2149, 0x0249, 0x1ECB, 0x0456, 0x1D456,
122240x0458, 0x1D457, 0x1D55A, 0x1D55B, 0x1D65E, 0x1D65F, 0x1D62, 0x0268, 0x0069, 0x006A,
122250x2071, 0x1D4F2, 0x03F3, 0x1D4F3, 0x1D5F6, 0x1D5F7, 0x2C7C}};
12226 staticconstexpr bool_trie<32, 991, 1, 0, 30, 255, 1, 0, 322, 41, 21, 25> prop_sterm_data{
12227{0x8000400200000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
122280x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
122290x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
122300x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
122310x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
122320x0000000000000000, 0x0000000000000000, 0x0000000000000200, 0x0000000000000000,
122330x00000000e0000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000100000,
122340x0000000000000007, 0x0000000000000000, 0x0000000000000000, 0x0200000000000000},
12235{1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
122361, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 1,
122371, 1, 1, 1, 1, 1, 5, 1, 1, 6, 1, 1, 1, 7, 1, 1, 1, 1, 8, 1, 1, 1, 1, 9, 1,
122381, 10, 1, 1, 11, 12, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13, 14, 1, 1, 1,
122391, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
122401, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
122411, 15, 16, 1, 1, 1, 1, 1, 1, 17, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
122421, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
122431, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
122441, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
122451, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
122461, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
122471, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
122481, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
122491, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
122501, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
122511, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
122521, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
122531, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
122541, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
122551, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
122561, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
122571, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
122581, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
122591, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
122601, 18, 1, 1, 1, 1, 19, 1, 1, 20, 1, 1, 1, 1, 1, 21, 1, 19, 22, 1, 1, 23, 1, 24, 1,
1226125, 1, 1, 1, 26, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
122621, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
122631, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
122641, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
122651, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
122661, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
122671, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
122681, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
122691, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
122701, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
122711, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
122721, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
122731, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
122741, 1, 1, 1, 1, 1, 1, 1, 1, 27, 1, 1, 28, 29, 1, 1},
12275{0x6280000000000000, 0x0000000000000000, 0x0000003000000000, 0x0000000000000c00,
122760x0000018400000000, 0x0000400000000000, 0x0060000000000000, 0x0000000000000208,
122770x0000000000000030, 0x00000f0000000000, 0x60000000cc000000, 0x1800000000000000,
122780xc000000000000000, 0x3000000000000000, 0x0000000000000380, 0x1000400000000000,
122790x0000000000180000, 0x0000000000000004, 0x8000000000000000, 0x000000000000c000,
122800x0088000000000000, 0x00c0000000000000, 0x0000800000000000, 0x0000000000000300,
122810x00000000e0000000, 0x0003000000000000, 0x0000080000000000, 0x0000000000c40000,
122820x0000000080004002, 0x0000000200000000},
12283{1, 2, 2, 2, 2, 3, 2, 2, 2, 2, 4, 2, 5, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
122842, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
122852, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
122862, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
122872, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
122882, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
122892, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
122902, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
122912, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2},
12292{1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 0, 0, 4,
122935, 6, 0, 7, 0, 8, 9, 0, 10, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 12, 0, 13, 0,
122940, 14, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 16, 17, 0, 0, 0, 0, 0, 0, 13, 0, 0,
122950, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
122960, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
122970, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
122980, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
122990, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 20, 18, 21, 0, 0, 0,
123000, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
123010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
123020, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0,
123030, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
123040, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24},
12305{0x0000000000000000, 0x0000000000c00000, 0x0000000003e00000, 0x00000000000003c0,
123060x0000000000000180, 0xc000000000000000, 0x0000000000000003, 0x000000000000000e,
123070x00000000c0002060, 0x1b00000000000000, 0x0000020000000000, 0x0000000000001800,
123080x0000000000fffe0c, 0x0000000000000006, 0x7000000000000000, 0x0000000000000050,
123090x000000000000000c, 0x0000000018000000, 0x0180000000000000, 0x0000c00000000000,
123100x0020000000000000, 0x0000000000000010, 0x0000000001000000, 0x0000000080000000,
123110x0000000000000100}};
12312 staticconstexpr bool_trie<32, 991, 1, 0, 34, 255, 1, 0, 413, 14, 21, 33> prop_term_data{
12313{0x8c00500200000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
123140x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
123150x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
123160x0000000000000000, 0x4000000000000000, 0x0000000000000080, 0x0000000000000000,
123170x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
123180x0000000000000000, 0x0000000000000000, 0x0000000000000200, 0x0000000000000008,
123190x00000000e8001000, 0x0000000000000000, 0x0000000000000000, 0x0000000000100000,
123200x00000000000017ff, 0x0000000000000000, 0x0000000000000000, 0x0300000000000000},
12321{1, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4,
123222, 2, 5, 2, 2, 2, 2, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 7, 2, 2, 2, 2, 2,
123232, 2, 2, 2, 2, 2, 8, 2, 9, 10, 2, 2, 11, 12, 2, 2, 2, 2, 13, 2, 2, 2, 2, 14, 2,
123242, 15, 2, 2, 16, 17, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 18, 19, 2, 2, 2,
123252, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
123262, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
123272, 20, 21, 2, 2, 2, 2, 2, 2, 22, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
123282, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
123292, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
123302, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
123312, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
123322, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
123332, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
123342, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
123352, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
123362, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
123372, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
123382, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
123392, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
123402, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
123412, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
123422, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
123432, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
123442, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
123452, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
123462, 17, 2, 2, 2, 2, 23, 2, 2, 24, 2, 2, 2, 2, 2, 25, 2, 26, 27, 2, 2, 19, 2, 28, 2,
1234729, 2, 2, 2, 30, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
123482, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
123492, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
123502, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
123512, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
123522, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
123532, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
123542, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
123552, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
123562, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
123572, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
123582, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
123592, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
123602, 2, 2, 2, 2, 2, 2, 2, 2, 31, 2, 2, 32, 33, 2, 2},
12361{0x7fff000000000000, 0x0000000040000000, 0x0000000000000000, 0x0000003000000000,
123620x000000000c000000, 0x000000000007e100, 0x0000000000000c00, 0x000001fe00000000,
123630x0000400000000000, 0x0000380000000000, 0x0060000000000000, 0x0000000004700000,
123640x000000000000033c, 0x0000000000000030, 0x00000f0000000000, 0x60000000ec000000,
123650xf800000000000000, 0xc000000000000000, 0x3000000000000000, 0x0000000000000380,
123660x1000400000000000, 0x000000000018d002, 0x0000000000000006, 0x000000000000e000,
123670x00f8000000000000, 0x00c0000000000000, 0x000000000000c000, 0x0000800000000000,
123680x00000000e0000000, 0x0003000080000000, 0x0000080000000000, 0x0000000000f70000,
123690x000000008c005002, 0x0000001200000000},
12370{1, 2, 3, 3, 3, 4, 3, 3, 3, 3, 5, 3, 6, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
123713, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
123723, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
123733, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
123743, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
123753, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
123763, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
123773, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
123783, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3},
12379{1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 0, 0, 0,
123800, 4, 0, 5, 6, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 9, 0, 0, 10,
1238111, 12, 0, 13, 0, 14, 15, 0, 16, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 18, 0, 19, 0, 0,
1238220, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 22, 23, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0,
123830, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
123840, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
123850, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
123860, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
123870, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
123880, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
123890, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 28,
1239029, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
123910, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
123920, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
123930, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
123940, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32},
12395{0x0000000000000000, 0x0000000080000000, 0x0000000000010000, 0x0000000000800000,
123960x0000000000c00000, 0x003f000000000000, 0xfc00000000000000, 0x000000001e000000,
123970x0000000003e00000, 0x00000000000003c0, 0x0000000000003f80, 0xc000000000000000,
123980x0000000000000003, 0x000000000000000e, 0x00000000c0002060, 0x1f00000000000000,
123990x0000020000000000, 0x000000000c003800, 0x0000000000fffe3c, 0x0000000000000006,
124000x7000000000000000, 0x0000000000000050, 0x000000000000000c, 0x0000000618000000,
124010x000200000000000e, 0x0180000000000000, 0x001f000000000000, 0x0000c00000000000,
124020x0020000000000000, 0x0380000000000000, 0x0000000000000010, 0x0000000001800000,
124030x0000000000000780}};
12404 staticconstexpr range_array prop_uideo_data = {
124050x00000000, 0x00340001, 0x004DC000, 0x004E0001, 0x00A00000, 0x00FA0E01, 0x00FA1000,
124060x00FA1101, 0x00FA1200, 0x00FA1301, 0x00FA1500, 0x00FA1F01, 0x00FA2000, 0x00FA2101,
124070x00FA2200, 0x00FA2301, 0x00FA2500, 0x00FA2701, 0x00FA2A00, 0x02000001, 0x02A6E000,
124080x02A70001, 0x02B73900, 0x02B74001, 0x02B81E00, 0x02B82001, 0x02CEA200, 0x02CEB001,
124090x02EBE100, 0x03000001, 0x03134B00};
12410 staticconstexpr range_array prop_vs_data = {0x00000000, 0x00180B01, 0x00180E00,
124110x00180F01, 0x00181000, 0x00FE0001,
124120x00FE1000, 0x0E010001, 0x0E01F000};
12413 staticconstexpr range_array prop_wspace_data = {
124140x00000000, 0x00000901, 0x00000E00, 0x00002001, 0x00002100, 0x00008501, 0x00008600,
124150x0000A001, 0x0000A100, 0x00168001, 0x00168100, 0x00200001, 0x00200B00, 0x00202801,
124160x00202A00, 0x00202F01, 0x00203000, 0x00205F01, 0x00206000, 0x00300001, 0x00300100};
12417 staticconstexpr bool_trie<32, 991, 1, 0, 127, 255, 1, 0, 1407, 1, 0, 134> prop_xidc_data{
12418{0x03ff000000000000, 0x07fffffe87fffffe, 0x04a0040000000000, 0xff7fffffff7fffff,
124190xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
124200xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x0000501f0003ffc3,
124210xffffffffffffffff, 0xb8dfffffffffffff, 0xfffffffbffffd7c0, 0xffbfffffffffffff,
124220xffffffffffffffff, 0xffffffffffffffff, 0xfffffffffffffcfb, 0xffffffffffffffff,
124230xfffeffffffffffff, 0xffffffff027fffff, 0xbffffffffffe01ff, 0x000787ffffff00b6,
124240xffffffff07ff0000, 0xffffc3ffffffffff, 0xffffffffffffffff, 0x9ffffdff9fefffff,
124250xffffffffffff0000, 0xffffffffffffe7ff, 0x0003ffffffffffff, 0x243fffffffffffff},
12426{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
1242719, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 4, 32, 33, 34, 4,
124284, 4, 4, 4, 35, 36, 37, 38, 39, 40, 41, 42, 4, 4, 4, 4, 4, 4,
124294, 4, 43, 44, 45, 46, 47, 4, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
1243058, 59, 60, 4, 61, 4, 62, 63, 64, 65, 66, 4, 4, 4, 4, 4, 4, 4,
124314, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 78, 78, 78, 78, 78,
1243278, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
1243378, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 4,
124344, 4, 79, 80, 81, 82, 83, 78, 78, 78, 78, 78, 78, 78, 78, 84, 42, 85,
1243586, 87, 4, 88, 89, 78, 78, 78, 78, 78, 78, 78, 78, 4, 4, 4, 4, 4,
124364, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
124374, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
124384, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
124394, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
124404, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
124414, 4, 4, 4, 4, 4, 4, 4, 78, 4, 4, 4, 4, 4, 4, 4, 4, 4,
124424, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
124434, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
124444, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
124454, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
124464, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
124474, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
124484, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
124494, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
124504, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
124514, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
124524, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
124534, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
124544, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
124554, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
124564, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
124574, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
124584, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
124594, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
124604, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 90, 91, 4, 4, 4,
124614, 92, 93, 4, 94, 95, 4, 96, 97, 98, 62, 4, 99, 100, 101, 4, 102, 103,
12462104, 4, 105, 106, 107, 4, 108, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
124634, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
124644, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
124654, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
124664, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
124674, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
124684, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
124694, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
124704, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
124714, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
124724, 109, 110, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
1247378, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
1247478, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
1247578, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
1247678, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
1247778, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
1247878, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
1247978, 78, 78, 78, 78, 78, 78, 78, 78, 4, 4, 4, 4, 4, 100, 4, 111, 112,
12480113, 94, 114, 4, 115, 4, 4, 116, 117, 118, 119, 120, 121, 4, 122, 123, 124, 125,
12482{0x00003fffffffffff, 0xffff07ff0fffffff, 0xffffffffff007eff, 0xfffffffbffffffff,
124830xffffffffffffffff, 0xfffeffcfffffffff, 0xf3c5fdfffff99fef, 0x5003ffcfb080799f,
124840xd36dfdfffff987ee, 0x003fffc05e023987, 0xf3edfdfffffbbfee, 0xfe00ffcf00013bbf,
124850xf3edfdfffff99fee, 0x0002ffcfb0e0399f, 0xc3ffc718d63dc7ec, 0x0000ffc000813dc7,
124860xf3fffdfffffddfff, 0x0000ffcf27603ddf, 0xf3effdfffffddfef, 0x0006ffcf60603ddf,
124870xfffffffffffddfff, 0xfc00ffcf80f07ddf, 0x2ffbfffffc7fffee, 0x000cffc0ff5f847f,
124880x07fffffffffffffe, 0x0000000003ff7fff, 0x3fffffaffffff7d6, 0x00000000f3ff3f5f,
124890xc2a003ff03000001, 0xfffe1ffffffffeff, 0x1ffffffffeffffdf, 0x0000000000000040,
124900xffffffffffff03ff, 0xffffffff3fffffff, 0xf7ffffffffff20bf, 0xffffffff3d7f3dff,
124910x7f3dffffffff3dff, 0xffffffffff7fff3d, 0xffffffffff3dffff, 0x0003fe00e7ffffff,
124920xffffffff0000ffff, 0x3f3fffffffffffff, 0xfffffffffffffffe, 0xffff9fffffffffff,
124930xffffffff07fffffe, 0x01ffc7ffffffffff, 0x001fffff803fffff, 0x000ddfff000fffff,
124940x000003ff308fffff, 0xffffffff03ffb800, 0x01ffffffffffffff, 0xffff07ffffffffff,
124950x003fffffffffffff, 0x0fff0fff7fffffff, 0x001f3fffffffffc0, 0xffff0fffffffffff,
124960x0000000007ff03ff, 0xffffffff0fffffff, 0x9fffffff7fffffff, 0xbfff008003ff03ff,
124970x0000000000007fff, 0x000ff80003ff1fff, 0x000fffffffffffff, 0x00ffffffffffffff,
124980x3fffffffffffe3ff, 0xe7ffffffffff01ff, 0x07fffffffff70000, 0xffffffff3f3fffff,
124990x3fffffffaaff3f3f, 0x5fdfffffffffffff, 0x1fdc1fff0fcf1fdc, 0x8000000000000000,
125000x8002000000100001, 0x000000001fff0000, 0x0001ffe21fff0000, 0xf3fffd503f2ffc84,
125010xffffffff000043e0, 0x00000000000001ff, 0x0000000000000000, 0x000ff81fffffffff,
125020xffff20bfffffffff, 0x800080ffffffffff, 0x7f7f7f7f007fffff, 0xffffffff7f7f7f7f,
125030x1f3efffe000000e0, 0xfffffffee67fffff, 0xf7ffffffffffffff, 0xfffeffffffffffe0,
125040xffffffff00007fff, 0xffff000000000000, 0x0000000000001fff, 0x3fffffffffff0000,
125050x00000fffffff1fff, 0xbff0ffffffffffff, 0x0003ffffffffffff, 0xfffffffcff800000,
125060xfffffffffffff9ff, 0xfffc000003eb07ff, 0x000010ffffffffff, 0xe8ffffff03ff003f,
125070xffff3fffffffffff, 0x1fffffff000fffff, 0x7fffffff03ff8001, 0x007fffffffffffff,
125080xfc7fffff03ff3fff, 0x007cffff38000007, 0xffff7f7f007e7e7e, 0xffff03fff7ffffff,
125090x03ff37ffffffffff, 0xffff000fffffffff, 0x0ffffffffffff87f, 0x0000000003ffffff,
125100x5f7ffdffe0f8007f, 0xffffffffffffffdb, 0xfffffffffff80000, 0xfffffff03fffffff,
125110x3fffffffffffffff, 0xffffffffffff0000, 0xfffffffffffcffff, 0x03ff0000000000ff,
125120x0018ffff0000ffff, 0xaa8a00000000e000, 0x1fffffffffffffff, 0x87fffffe03ff0000,
125130xffffffc007fffffe, 0x7fffffffffffffff, 0x000000001cfcfcfc},
12514{1, 2, 3, 4, 5, 6, 7, 8, 5, 9, 10, 11, 12, 13, 14, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 15,
1251516, 17, 7, 18, 19, 7, 20, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
125165, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
125175, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
125185, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
125195, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
125205, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
125215, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 21,
125225, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
125235, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5},
12524{1, 2, 3, 4, 5, 4, 6, 4, 4, 7, 8, 9, 10, 11, 12, 2, 2, 13, 14,
1252515, 16, 17, 4, 2, 2, 2, 2, 18, 19, 20, 4, 21, 22, 23, 24, 25, 4, 26,
125264, 27, 28, 29, 30, 31, 32, 33, 4, 2, 34, 35, 35, 36, 4, 4, 4, 4, 4,
1252737, 4, 38, 39, 40, 41, 2, 42, 3, 43, 44, 45, 2, 46, 47, 4, 48, 49, 50,
1252851, 4, 4, 2, 52, 2, 53, 4, 4, 54, 55, 2, 56, 57, 58, 59, 60, 4, 4,
125293, 4, 61, 62, 63, 64, 65, 66, 67, 68, 69, 57, 4, 4, 4, 4, 70, 71, 72,
125304, 73, 74, 75, 4, 4, 4, 4, 76, 4, 4, 77, 4, 2, 2, 2, 2, 2, 2,
125312, 2, 2, 2, 2, 2, 2, 2, 78, 4, 2, 79, 2, 2, 2, 80, 4, 4, 4,
125324, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
125334, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 81,
1253482, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 79, 4,
125354, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
125364, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
125374, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
125384, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 60, 4, 4, 4, 4,
125394, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
125404, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
125414, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
125424, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
125434, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
125444, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
125454, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 2,
125462, 2, 2, 2, 2, 57, 83, 67, 84, 18, 85, 86, 4, 4, 4, 4, 4, 4, 4,
125474, 4, 4, 2, 4, 4, 2, 87, 88, 89, 2, 2, 2, 2, 2, 2, 2, 2, 2,
125482, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
125492, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
125502, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
125512, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
125522, 2, 2, 2, 2, 2, 2, 2, 2, 2, 90, 2, 2, 2, 2, 2, 2, 2, 2,
125532, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 91, 34, 4, 4, 4, 4, 4, 4,
125544, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
125554, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
125564, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
125574, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 92, 2, 2, 2, 2, 93, 94, 2,
125582, 2, 2, 2, 95, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
125594, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
125604, 4, 4, 2, 96, 97, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
125614, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
125624, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
125634, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
125644, 4, 4, 98, 60, 4, 4, 4, 4, 4, 4, 4, 99, 100, 4, 4, 101, 4, 4,
125654, 4, 4, 4, 2, 102, 103, 104, 105, 106, 2, 2, 2, 2, 107, 108, 109, 110, 111,
12566112, 4, 4, 4, 4, 4, 4, 4, 4, 113, 114, 115, 4, 4, 4, 4, 4, 4, 4,
125674, 4, 4, 4, 4, 4, 4, 4, 4, 4, 23, 4, 4, 4, 116, 4, 4, 4, 117,
12568118, 4, 4, 4, 4, 119, 120, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
125694, 4, 4, 4, 4, 4, 4, 121, 2, 2, 2, 122, 2, 123, 4, 4, 4, 4, 4,
125704, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 124, 125, 126, 4, 4, 4,
125714, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
125724, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
125734, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 127, 4, 4, 4, 4, 4, 4, 4,
125744, 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
125752, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 128, 2,
125762, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
125772, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
125782, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
125792, 2, 2, 2, 2, 2, 57, 2, 2, 2, 11, 2, 2, 2, 2, 2, 2, 2, 2,
125802, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
125812, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
125822, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
125832, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
125842, 2, 2, 2, 2, 129, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
125852, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
125862, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
125872, 130, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
125884, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
125894, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2,
125902, 131, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
125914, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
12592132, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
125934, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
125944, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 2,
125952, 133, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
125964, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
125974, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
12599{0xb7ffff7fffffefff, 0x000000003fff3fff, 0xffffffffffffffff, 0x07ffffffffffffff,
126000x0000000000000000, 0x001fffffffffffff, 0x2000000000000000, 0xffffffff1fffffff,
126010x000000010001ffff, 0xffffe000ffffffff, 0x07ffffffffff07ff, 0xffffffff3fffffff,
126020x00000000003eff0f, 0xffff03ff3fffffff, 0x0fffffffff0fffff, 0xffff00ffffffffff,
126030xf7ff000fffffffff, 0x1bfbfffbffb7f7ff, 0x007fffffffffffff, 0x000000ff003fffff,
126040x07fdffffffffffbf, 0x91bffffffffffd3f, 0x007fffff003fffff, 0x000000007fffffff,
126050x0037ffff00000000, 0x03ffffff003fffff, 0xc0ffffffffffffff, 0x873ffffffeeff06f,
126060x1fffffff00000000, 0x000000001fffffff, 0x0000007ffffffeff, 0x003fffffffffffff,
126070x0007ffff003fffff, 0x000000000003ffff, 0x00000000000001ff, 0x0007ffffffffffff,
126080x03ff00ffffffffff, 0x00031bffffffffff, 0xffff00801fffffff, 0xffff00000001ffff,
126090xffff00000000003f, 0x007fffff0000001f, 0x803fffc00000007f, 0x03ff01ffffff0004,
126100xffdfffffffffffff, 0x004fffffffff00f0, 0x0000000017ffde1f, 0x40fffffffffbffff,
126110xffff01ffbfffbd7f, 0x03ff07ffffffffff, 0xfbedfdfffff99fef, 0x001f1fcfe081399f,
126120x00000003c3ff07ff, 0x0000000003ff00bf, 0xff3fffffffffffff, 0x000000003f000001,
126130x0000000003ff0011, 0x01ffffffffffffff, 0x00000000000003ff, 0x03ff0fffe7ffffff,
126140x000000000000007f, 0xffffffff00000000, 0x800003ffffffffff, 0xf9bfffffff6ff27f,
126150x0000000003ff000f, 0xfffffcff00000000, 0x0000001bfcffffff, 0x7fffffffffffffff,
126160xffffffffffff0080, 0xffff000023ffffff, 0xff7ffffffffffdff, 0xfffc000003ff0001,
126170x007ffefffffcffff, 0xb47ffffffffffb7f, 0xfffffdbf03ff00ff, 0x000003ff01fb7fff,
126180x007fffff00000000, 0x0001000000000000, 0x0000000003ffffff, 0x00007fffffffffff,
126190x000000000000000f, 0xffffffffffff0000, 0x0001ffffffffffff, 0xffff03ff7fffffff,
126200x001f3fffffff03ff, 0xe0fffff803ff000f, 0x000000000000ffff, 0xffffffffffff87ff,
126210x00000000ffff80ff, 0x0003001b00000000, 0x00ffffffffffffff, 0x00000000003fffff,
126220x6fef000000000000, 0x00000007ffffffff, 0xffff00f000070000, 0x0fffffffffffffff,
126230x1fff07ffffffffff, 0x0000000063ff01ff, 0xffff3fffffffffff, 0xf807e3e000000000,
126240x00003c0000000fe7, 0x000000000000001c, 0xffffffffffdfffff, 0xebffde64dfffffff,
126250xffffffffffffffef, 0x7bffffffdfdfe7bf, 0xfffffffffffdfc5f, 0xffffff3fffffffff,
126260xf7fffffff7fffffd, 0xffdfffffffdfffff, 0xffff7fffffff7fff, 0xfffffdfffffffdff,
126270xffffffffffffcff7, 0xf87fffffffffffff, 0x00201fffffffffff, 0x0000fffef8000010,
126280x000007dbf9ffff7f, 0x3fff1fffffffffff, 0x00000000000043ff, 0x00007fffffff0000,
126290x03ffffffffffffff, 0x7fff6f7f00000000, 0x00000000007f001f, 0x0000000003ff0fff,
126300x0af7fe96ffffffef, 0x5ef7f796aa96ea84, 0x0ffffbee0ffffbff, 0x03ff000000000000,
126310x00000000ffffffff, 0xffff0003ffffffff, 0x00000001ffffffff, 0x000000003fffffff,
126320x00000000000007ff, 0x0000ffffffffffff}};
12633 staticconstexpr bool_trie<32, 991, 1, 0, 131, 255, 1, 0, 1215, 1, 0, 124> prop_xids_data{
12634{0x0000000000000000, 0x07fffffe07fffffe, 0x0420040000000000, 0xff7fffffff7fffff,
126350xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
126360xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x0000501f0003ffc3,
126370x0000000000000000, 0xb8df000000000000, 0xfffffffbffffd740, 0xffbfffffffffffff,
126380xffffffffffffffff, 0xffffffffffffffff, 0xfffffffffffffc03, 0xffffffffffffffff,
126390xfffeffffffffffff, 0xffffffff027fffff, 0x00000000000001ff, 0x000787ffffff0000,
126400xffffffff00000000, 0xfffec000000007ff, 0xffffffffffffffff, 0x9c00c060002fffff,
126410x0000fffffffd0000, 0xffffffffffffe000, 0x0002003fffffffff, 0x043007fffffffc00},
12642{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
1264319, 20, 21, 22, 23, 24, 23, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
1264435, 35, 35, 35, 36, 37, 38, 39, 40, 41, 42, 43, 35, 35, 35, 35, 35, 35,
1264535, 35, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 3, 58,
1264659, 60, 30, 61, 62, 63, 64, 65, 66, 67, 68, 35, 35, 35, 30, 35, 35, 35,
1264735, 69, 70, 71, 72, 30, 73, 74, 30, 75, 76, 77, 30, 30, 30, 30, 30, 30,
1264830, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
1264930, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 35,
1265035, 35, 78, 79, 80, 81, 82, 30, 30, 30, 30, 30, 30, 30, 30, 83, 43, 84,
1265185, 86, 35, 87, 88, 30, 30, 30, 30, 30, 30, 30, 30, 35, 35, 35, 35, 35,
1265235, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
1265335, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
1265435, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
1265535, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
1265635, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
1265735, 35, 35, 35, 35, 35, 35, 35, 30, 35, 35, 35, 35, 35, 35, 35, 35, 35,
1265835, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
1265935, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
1266035, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
1266135, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
1266235, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
1266335, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
1266435, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
1266535, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
1266635, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
1266735, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
1266835, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
1266935, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
1267035, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
1267135, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
1267235, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
1267335, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
1267435, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
1267535, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
1267635, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 89, 90, 35, 35, 35,
1267735, 91, 92, 93, 94, 95, 35, 96, 97, 98, 49, 99, 100, 101, 102, 103, 104, 105,
12678106, 107, 108, 109, 110, 35, 111, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
1267935, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
1268035, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
1268135, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
1268235, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
1268335, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
1268435, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
1268535, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
1268635, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
1268735, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
1268835, 112, 113, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
1268930, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
1269030, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
1269130, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
1269230, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
1269330, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
1269430, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
1269530, 30, 30, 30, 30, 30, 30, 30, 30, 35, 35, 35, 35, 35, 114, 35, 115, 116,
12696117, 118, 119, 35, 120, 35, 35, 121, 122, 123, 124, 30, 125, 35, 126, 127, 128, 129,
12698{0x00000110043fffff, 0xffff07ff01ffffff, 0xffffffff00007eff, 0x00000000000003ff,
126990x23fffffffffffff0, 0xfffe0003ff010000, 0x23c5fdfffff99fe1, 0x10030003b0004000,
127000x036dfdfffff987e0, 0x001c00005e000000, 0x23edfdfffffbbfe0, 0x0200000300010000,
127010x23edfdfffff99fe0, 0x00020003b0000000, 0x03ffc718d63dc7e8, 0x0000000000010000,
127020x23fffdfffffddfe0, 0x0000000327000000, 0x23effdfffffddfe1, 0x0006000360000000,
127030x27fffffffffddff0, 0xfc00000380704000, 0x2ffbfffffc7fffe0, 0x000000000000007f,
127040x0005fffffffffffe, 0x2005ffaffffff7d6, 0x00000000f000005f, 0x0000000000000001,
127050x00001ffffffffeff, 0x0000000000001f00, 0x0000000000000000, 0x800007ffffffffff,
127060xffe1c0623c3f0000, 0xffffffff00004003, 0xf7ffffffffff20bf, 0xffffffffffffffff,
127070xffffffff3d7f3dff, 0x7f3dffffffff3dff, 0xffffffffff7fff3d, 0xffffffffff3dffff,
127080x0000000007ffffff, 0xffffffff0000ffff, 0x3f3fffffffffffff, 0xfffffffffffffffe,
127090xffff9fffffffffff, 0xffffffff07fffffe, 0x01ffc7ffffffffff, 0x0003ffff8003ffff,
127100x0001dfff0003ffff, 0x000fffffffffffff, 0x0000000010800000, 0xffffffff00000000,
127110x01ffffffffffffff, 0xffff05ffffffffff, 0x003fffffffffffff, 0x000000007fffffff,
127120x001f3fffffff0000, 0xffff0fffffffffff, 0xffffffff007fffff, 0x00000000001fffff,
127130x0000008000000000, 0x000fffffffffffe0, 0x0000000000001fe0, 0xfc00c001fffffff8,
127140x0000003fffffffff, 0x0000000fffffffff, 0x3ffffffffc00e000, 0xe7ffffffffff01ff,
127150x046fde0000000000, 0xffffffff3f3fffff, 0x3fffffffaaff3f3f, 0x5fdfffffffffffff,
127160x1fdc1fff0fcf1fdc, 0x8002000000000000, 0x000000001fff0000, 0xf3fffd503f2ffc84,
127170xffffffff000043e0, 0x00000000000001ff, 0x000c781fffffffff, 0xffff20bfffffffff,
127180x000080ffffffffff, 0x7f7f7f7f007fffff, 0x000000007f7f7f7f, 0x1f3e03fe000000e0,
127190xfffffffee07fffff, 0xf7ffffffffffffff, 0xfffeffffffffffe0, 0xffffffff00007fff,
127200xffff000000000000, 0x0000000000001fff, 0x3fffffffffff0000, 0x00000c00ffff1fff,
127210x80007fffffffffff, 0xffffffff3fffffff, 0x0000ffffffffffff, 0xfffffffcff800000,
127220xfffffffffffff9ff, 0xfffc000003eb07ff, 0x00000007fffff7bb, 0x000ffffffffffffc,
127230x68fc000000000000, 0xffff003ffffffc00, 0x1fffffff0000007f, 0x0007fffffffffff0,
127240x7c00ffdf00008000, 0x000001ffffffffff, 0xc47fffff00000ff7, 0x3e62ffffffffffff,
127250x001c07ff38000005, 0xffff7f7f007e7e7e, 0xffff03fff7ffffff, 0x00000007ffffffff,
127260xffff000fffffffff, 0x0ffffffffffff87f, 0xffff3fffffffffff, 0x0000000003ffffff,
127270x5f7ffdffa0f8007f, 0xffffffffffffffdb, 0x0003ffffffffffff, 0xfffffffffff80000,
127280xfffffff03fffffff, 0x3fffffffffffffff, 0xffffffffffff0000, 0xfffffffffffcffff,
127290x03ff0000000000ff, 0xaa8a000000000000, 0x1fffffffffffffff, 0x07fffffe00000000,
127300xffffffc007fffffe, 0x7fffffff3fffffff, 0x000000001cfcfcfc},
12731{1, 2, 3, 4, 5, 6, 7, 8, 5, 9, 10, 5, 11, 12, 5, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 13,
1273214, 15, 7, 16, 17, 7, 18, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
127335, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
127345, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
127355, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
127365, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
127375, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
127385, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
127395, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
127405, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5},
12741{1, 2, 3, 4, 5, 4, 4, 4, 4, 6, 7, 8, 9, 10, 11, 2, 2, 12, 13,
1274214, 15, 16, 4, 2, 2, 2, 2, 17, 18, 19, 4, 20, 21, 22, 23, 24, 4, 25,
127434, 26, 27, 28, 29, 30, 31, 32, 4, 2, 33, 34, 34, 35, 4, 4, 4, 4, 4,
1274436, 4, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 4, 50, 22, 51,
1274552, 4, 4, 5, 53, 54, 55, 4, 4, 56, 57, 54, 58, 59, 4, 60, 61, 4, 4,
1274662, 4, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 4, 4, 4, 4, 73, 74, 75,
127474, 76, 77, 78, 4, 4, 4, 4, 79, 4, 4, 80, 4, 2, 2, 2, 2, 2, 2,
127482, 2, 2, 2, 2, 2, 2, 2, 81, 4, 2, 56, 2, 2, 2, 82, 4, 4, 4,
127494, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
127504, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 83,
1275184, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 56, 4,
127524, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
127534, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
127544, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
127554, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 61, 4, 4, 4, 4,
127564, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
127574, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
127584, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
127594, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
127604, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
127614, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
127624, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 2,
127632, 2, 2, 2, 2, 72, 85, 86, 87, 54, 88, 75, 4, 4, 4, 4, 4, 4, 4,
127644, 4, 4, 2, 4, 4, 2, 89, 90, 91, 2, 2, 2, 2, 2, 2, 2, 2, 2,
127652, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
127662, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
127672, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
127682, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
127692, 2, 2, 2, 2, 2, 2, 2, 2, 2, 92, 2, 2, 2, 2, 2, 2, 2, 2,
127702, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 93, 33, 4, 4, 4, 4, 4, 4,
127714, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
127724, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
127734, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
127744, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 94, 2, 2, 2, 2, 95, 96, 2,
127752, 2, 2, 2, 97, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
127764, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
127774, 4, 4, 2, 98, 99, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
127784, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 100, 101,
12779102, 103, 104, 2, 2, 2, 2, 105, 106, 107, 108, 109, 110, 4, 4, 4, 4, 4, 4,
127804, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
127814, 4, 4, 22, 4, 4, 4, 4, 4, 4, 4, 111, 112, 4, 4, 4, 4, 87, 62,
127824, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
12783113, 2, 2, 2, 114, 2, 115, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
127844, 4, 4, 4, 4, 4, 116, 117, 118, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2,
127852, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
127862, 2, 2, 119, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
127872, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
127882, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
127892, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 72, 2, 2, 2, 10, 2, 2, 2,
127902, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
127912, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
127922, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
127932, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
127942, 2, 2, 2, 2, 2, 2, 2, 2, 2, 120, 2, 2, 2, 2, 2, 2, 2, 2,
127952, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
127962, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
127972, 2, 2, 2, 2, 2, 121, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
127984, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
127994, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 2,
128002, 2, 2, 2, 2, 2, 122, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
128014, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2,
128022, 2, 2, 2, 2, 123, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
128034, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
128044, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4},
12805{0xb7ffff7fffffefff, 0x000000003fff3fff, 0xffffffffffffffff, 0x07ffffffffffffff,
128060x0000000000000000, 0x001fffffffffffff, 0xffffffff1fffffff, 0x000000000001ffff,
128070xffffe000ffffffff, 0x003fffffffff07ff, 0xffffffff3fffffff, 0x00000000003eff0f,
128080xffff00003fffffff, 0x0fffffffff0fffff, 0xffff00ffffffffff, 0xf7ff000fffffffff,
128090x1bfbfffbffb7f7ff, 0x007fffffffffffff, 0x000000ff003fffff, 0x07fdffffffffffbf,
128100x91bffffffffffd3f, 0x007fffff003fffff, 0x000000007fffffff, 0x0037ffff00000000,
128110x03ffffff003fffff, 0xc0ffffffffffffff, 0x003ffffffeef0001, 0x1fffffff00000000,
128120x000000001fffffff, 0x0000001ffffffeff, 0x003fffffffffffff, 0x0007ffff003fffff,
128130x000000000003ffff, 0x00000000000001ff, 0x0007ffffffffffff, 0x0000000fffffffff,
128140x000303ffffffffff, 0xffff00801fffffff, 0xffff00000000003f, 0xffff000000000003,
128150x007fffff0000001f, 0x00fffffffffffff8, 0x0026000000000000, 0x0000fffffffffff8,
128160x000001ffffff0000, 0x0000007ffffffff8, 0x0047ffffffff0090, 0x0007fffffffffff8,
128170x000000001400001e, 0x00000ffffffbffff, 0xffff01ffbfffbd7f, 0x23edfdfffff99fe0,
128180x00000003e0010000, 0x0000000380000780, 0x0000ffffffffffff, 0x00000000000000b0,
128190x00007fffffffffff, 0x000000000f000000, 0x0000000000000010, 0x010007ffffffffff,
128200x0000000007ffffff, 0x000000000000007f, 0x00000fffffffffff, 0xffffffff00000000,
128210x80000000ffffffff, 0x8000ffffff6ff27f, 0x0000000000000002, 0xfffffcff00000000,
128220x0000000a0001ffff, 0x0407fffffffff801, 0xfffffffff0010000, 0xffff0000200003ff,
128230x01ffffffffffffff, 0x00007ffffffffdff, 0xfffc000000000001, 0x000000000000ffff,
128240x0001fffffffffb7f, 0xfffffdbf00000040, 0x00000000010003ff, 0x0007ffff00000000,
128250x0001000000000000, 0x0000000003ffffff, 0x000000000000000f, 0xffffffffffff0000,
128260x0001ffffffffffff, 0xffff00007fffffff, 0x7fffffffffffffff, 0x00003fffffff0000,
128270xe0fffff80000000f, 0x00000000000107ff, 0x00000000fff80000, 0x0000000b00000000,
128280x00ffffffffffffff, 0x00000000003fffff, 0x6fef000000000000, 0x00000007ffffffff,
128290xffff00f000070000, 0x0fffffffffffffff, 0x1fff07ffffffffff, 0x0000000003ff01ff,
128300xffffffffffdfffff, 0xebffde64dfffffff, 0xffffffffffffffef, 0x7bffffffdfdfe7bf,
128310xfffffffffffdfc5f, 0xffffff3fffffffff, 0xf7fffffff7fffffd, 0xffdfffffffdfffff,
128320xffff7fffffff7fff, 0xfffffdfffffffdff, 0x0000000000000ff7, 0x3f801fffffffffff,
128330x0000000000004000, 0x7fff6f7f00000000, 0x000000000000001f, 0x000000000000080f,
128340x0af7fe96ffffffef, 0x5ef7f796aa96ea84, 0x0ffffbee0ffffbff, 0x00000000ffffffff,
128350xffff0003ffffffff, 0x00000001ffffffff, 0x000000003fffffff, 0x00000000000007ff}};
12838constexpr
boolcp_property_is<property::ahex>(char32_t c) {
12839 returndetail::tables::prop_ahex_data.lookup(c);
12842constexpr
boolcp_property_is<property::alpha>(char32_t c) {
12843 returndetail::tables::prop_alpha_data.lookup(c);
12846constexpr
boolcp_property_is<property::bidi_c>(char32_t c) {
12847 returndetail::tables::prop_bidi_c_data.lookup(c);
12850constexpr
boolcp_property_is<property::bidi_m>(char32_t c) {
12851 returndetail::tables::prop_bidi_m_data.lookup(c);
12854constexpr
boolcp_property_is<property::dash>(char32_t c) {
12855 returndetail::tables::prop_dash_data.lookup(c);
12858constexpr
boolcp_property_is<property::dep>(char32_t c) {
12859 returndetail::tables::prop_dep_data.lookup(c);
12862constexpr
boolcp_property_is<property::dia>(char32_t c) {
12863 returndetail::tables::prop_dia_data.lookup(c);
12866constexpr
boolcp_property_is<property::emoji>(char32_t c) {
12867 returndetail::tables::prop_emoji_data.lookup(c);
12870constexpr
boolcp_property_is<property::emoji_component>(char32_t c) {
12871 returndetail::tables::prop_emoji_component_data.lookup(c);
12874constexpr
boolcp_property_is<property::emoji_modifier>(char32_t c) {
12875 returndetail::tables::prop_emoji_modifier_data.lookup(c);
12878constexpr
boolcp_property_is<property::emoji_modifier_base>(char32_t c) {
12879 returndetail::tables::prop_emoji_modifier_base_data.lookup(c);
12882constexpr
boolcp_property_is<property::emoji_presentation>(char32_t c) {
12883 returndetail::tables::prop_emoji_presentation_data.lookup(c);
12886constexpr
boolcp_property_is<property::ext>(char32_t c) {
12887 returndetail::tables::prop_ext_data.lookup(c);
12890constexpr
boolcp_property_is<property::extended_pictographic>(char32_t c) {
12891 returndetail::tables::prop_extended_pictographic_data.lookup(c);
12894constexpr
boolcp_property_is<property::gr_base>(char32_t c) {
12895 returndetail::tables::prop_gr_base_data.lookup(c);
12898constexpr
boolcp_property_is<property::hex>(char32_t c) {
12899 returndetail::tables::prop_hex_data.lookup(c);
12902constexpr
boolcp_property_is<property::ideo>(char32_t c) {
12903 returndetail::tables::prop_ideo_data.lookup(c);
12906constexpr
boolcp_property_is<property::idsb>(char32_t c) {
12907 returndetail::tables::prop_idsb_data.lookup(c);
12910constexpr
boolcp_property_is<property::idst>(char32_t c) {
12911 returndetail::tables::prop_idst_data.lookup(c);
12914constexpr
boolcp_property_is<property::join_c>(char32_t c) {
12915 returndetail::tables::prop_join_c_data.lookup(c);
12918constexpr
boolcp_property_is<property::loe>(char32_t c) {
12919 returndetail::tables::prop_loe_data.lookup(c);
12922constexpr
boolcp_property_is<property::pat_syn>(char32_t c) {
12923 returndetail::tables::prop_pat_syn_data.lookup(c);
12926constexpr
boolcp_property_is<property::pat_ws>(char32_t c) {
12927 returndetail::tables::prop_pat_ws_data.lookup(c);
12930constexpr
boolcp_property_is<property::pcm>(char32_t c) {
12931 returndetail::tables::prop_pcm_data.lookup(c);
12934constexpr
boolcp_property_is<property::qmark>(char32_t c) {
12935 returndetail::tables::prop_qmark_data.lookup(c);
12938constexpr
boolcp_property_is<property::radical>(char32_t c) {
12939 returndetail::tables::prop_radical_data.lookup(c);
12942constexpr
boolcp_property_is<property::ri>(char32_t c) {
12943 returndetail::tables::prop_ri_data.lookup(c);
12946constexpr
boolcp_property_is<property::sd>(char32_t c) {
12947 returndetail::tables::prop_sd_data.lookup(c);
12950constexpr
boolcp_property_is<property::sterm>(char32_t c) {
12951 returndetail::tables::prop_sterm_data.lookup(c);
12954constexpr
boolcp_property_is<property::term>(char32_t c) {
12955 returndetail::tables::prop_term_data.lookup(c);
12958constexpr
boolcp_property_is<property::uideo>(char32_t c) {
12959 returndetail::tables::prop_uideo_data.lookup(c);
12962constexpr
boolcp_property_is<property::vs>(char32_t c) {
12963 returndetail::tables::prop_vs_data.lookup(c);
12966constexpr
boolcp_property_is<property::wspace>(char32_t c) {
12967 returndetail::tables::prop_wspace_data.lookup(c);
12970constexpr
boolcp_property_is<property::xidc>(char32_t c) {
12971 returndetail::tables::prop_xidc_data.lookup(c);
12974constexpr
boolcp_property_is<property::xids>(char32_t c) {
12975 returndetail::tables::prop_xids_data.lookup(c);
12979 #include <iterator> 12983constexpr category cp_category(char32_t cp) {
12985 returncategory::unassigned;
12986 returndetail::tables::get_category(cp);
12989constexpr
uni::versiondetail::age_from_string(std::string_view
a) {
12990 for(std::size_t
i= 0;
i<
std::size(detail::tables::age_strings); ++
i) {
12991 const autores = detail::propnamecomp(
a, detail::tables::age_strings[
i]);
12995 returnuni::version::unassigned;
12998constexpr category detail::category_from_string(std::string_view s) {
12999 for(
const auto& c : detail::tables::categories_names) {
13000 const autores = detail::propnamecomp(s, c.name);
13002 returncategory(c.value);
13004 returncategory::unassigned;
13007constexpr block detail::block_from_string(std::string_view s) {
13008 for(
const auto& c : detail::tables::blocks_names) {
13009 const autores = detail::propnamecomp(s, c.name);
13011 returnblock(c.value);
13013 returnblock::no_block;
13016constexpr script detail::script_from_string(std::string_view s) {
13017 for(
const auto& c : detail::tables::scripts_names) {
13018 const autores = detail::propnamecomp(s, c.name);
13020 returnscript(c.value);
13022 returnscript::unknown;
13025constexpr
booldetail::is_unassigned(category cat) {
13026 returncat == category::unassigned;
13029constexpr
booldetail::is_unknown(script s) {
13030 returns == script::unknown;
13033constexpr
booldetail::is_unknown(block
b) {
13034 return b== block::no_block;
13037constexpr
booldetail::is_unassigned(
versionv) {
13038 returnv == version::unassigned;
13041constexpr script cp_script(char32_t cp) {
13042 returndetail::tables::cp_script<0>(cp);
13045constexpr script_extensions_view::script_extensions_view(char32_t c_) : c(c_) {}
13047constexpr script_extensions_view::iterator::iterator(char32_t c_) :
13048m_c(c_), m_script(detail::tables::get_cp_script(m_c, 1)) {
13049 if(m_script == script::unknown)
13050m_script = detail::tables::cp_script<0>(m_c);
13057constexpr
autoscript_extensions_view::iterator::operator++(
int) -> iterator& {
13059m_script = detail::tables::get_cp_script(m_c, idx);
13063constexpr
autoscript_extensions_view::iterator::operator++() -> iterator {
13066m_script = detail::tables::get_cp_script(m_c, idx);
13071 returnm_script == script::unknown;
13075 returnm_script != script::unknown;
13085constexpr script_extensions_view::iterator script_extensions_view::begin()
const{
13086 returniterator{c};
13088constexpr script_extensions_view::sentinel script_extensions_view::end()
const{
13092constexpr script_extensions_view cp_script_extensions(char32_t cp) {
13093 returnscript_extensions_view(cp);
13096constexpr
versioncp_age(char32_t cp) {
13097 return static_cast<version>(detail::tables::age_data.value(cp,
uint8_t(version::unassigned)));
13100constexpr block cp_block(char32_t cp) {
13101 const autoend = std::end(detail::tables::block_data._data);
13102 autoit = detail::upper_bound(std::begin(detail::tables::block_data._data), end, cp,
13104char32_t c = (v >> 8);
13108 returnblock::no_block;
13110 auto offset= (*it) & 0xFF;
13112 returnblock::no_block;
13115 const autod = std::distance(std::begin(detail::tables::block_data._data), it);
13116 returnuni::block((d -
offset) + 1);
13120constexpr
boolcp_property_is<property::noncharacter_code_point>(char32_t cp) {
13121 return(char32_t(cp) & 0xfffe) == 0xfffe || (char32_t(cp) >= 0xfdd0 && char32_t(cp) <= 0xfdef);
13126constexpr
boolcp_property_is<property::lowercase>(char32_t cp) {
13127 returndetail::tables::cat_ll.lookup(char32_t(cp)) ||
13128detail::tables::prop_olower_data.lookup(char32_t(cp));
13133constexpr
boolcp_property_is<property::uppercase>(char32_t cp) {
13134 returndetail::tables::cat_lu.lookup(char32_t(cp)) ||
13135detail::tables::prop_oupper_data.lookup(char32_t(cp));
13140constexpr
boolcp_property_is<property::cased>(char32_t cp) {
13141 returncp_property_is<property::lower>(cp) || cp_property_is<property::upper>(cp) ||
13142detail::tables::cat_lt.lookup(char32_t(cp));
13147constexpr
boolcp_property_is<property::math>(char32_t cp) {
13148 returndetail::tables::cat_sm.lookup(char32_t(cp)) ||
13149detail::tables::prop_omath_data.lookup(cp);
13154constexpr
boolcp_property_is<property::case_ignorable>(char32_t) {
13160constexpr
boolcp_property_is<property::grapheme_extend>(char32_t cp) {
13161 returndetail::tables::cat_me.lookup(char32_t(cp)) ||
13162detail::tables::cat_mn.lookup(char32_t(cp)) ||
13163detail::tables::prop_ogr_ext_data.lookup(cp);
13166constexpr
boolcp_is_valid(char32_t cp) {
13167 returnchar32_t(cp) <= 0x10FFFF;
13169constexpr
boolcp_is_assigned(char32_t cp) {
13170 returndetail::tables::prop_assigned.lookup(char32_t(cp));
13173constexpr
boolcp_is_ascii(char32_t cp) {
13174 returnchar32_t(cp) <= 0x7F;
13178constexpr
boolcp_property_is<property::default_ignorable_code_point>(char32_t cp) {
13179 const autoc = char32_t(cp);
13180 const boolmaybe = detail::tables::prop_odi_data.lookup(cp) ||
13181detail::tables::cat_cf.lookup(cp) || detail::tables::prop_vs_data.lookup(cp);
13185 if(c >= 0xFFF9 && c <= 0xFFFB) {
13189 else if(c >= 0x13430 && c <= 0x13438) {
13191}
else if(detail::tables::prop_wspace_data.
lookup(cp))
13193 else if(detail::tables::prop_pcm_data.
lookup(cp))
13200constexpr
boolcp_property_is<property::id_start>(char32_t cp) {
13201 const boolmaybe = cp_category_is<category::letter>(cp) || detail::tables::cat_nl.lookup(cp) ||
13202detail::tables::prop_oids_data.lookup(cp);
13205 return!detail::tables::prop_pat_syn_data.lookup(cp) &&
13206!detail::tables::prop_pat_ws_data.lookup(cp);
13210constexpr
boolcp_property_is<property::id_continue>(char32_t cp) {
13211 const boolmaybe = cp_category_is<category::letter>(cp) || detail::tables::cat_nl.lookup(cp) ||
13212detail::tables::prop_oids_data.lookup(cp) ||
13213detail::tables::cat_mn.lookup(cp) || detail::tables::cat_mc.lookup(cp) ||
13214detail::tables::cat_nd.lookup(cp) || detail::tables::cat_pc.lookup(cp) ||
13215detail::tables::prop_oidc_data.lookup(cp);
13218 return!detail::tables::prop_pat_syn_data.lookup(cp) &&
13219!detail::tables::prop_pat_ws_data.lookup(cp);
13224 template<
typenameArray,
typenameRes =
long long>
13225constexpr
boolget_numeric_value(char32_t cp,
constArray&
array, Res& res) {
13226 autoit = detail::lower_bound(std::begin(
array), std::end(
array), cp,
13227[](
const auto& d, char32_t cp_) {
returnd.first < cp_; });
13228 if(it == std::end(
array) || it->first != cp)
13236constexpr numeric_value cp_numeric_value(char32_t cp) {
13238 if(!(detail::get_numeric_value(cp, detail::tables::numeric_data64, res) ||
13239detail::get_numeric_value(cp, detail::tables::numeric_data32, res) ||
13240detail::get_numeric_value(cp, detail::tables::numeric_data16, res) ||
13241[&res, cp]() ->
bool{
13242res = detail::tables::numeric_data8.value(cp, 255);
13248detail::get_numeric_value(cp, detail::tables::numeric_data_d, d);
13249 returnnumeric_value(res, d);
13256 structiterator_traits<uni::script_extensions_view::iterator> {
13257 usingdifference_type = std::ptrdiff_t;
13259 using pointer= uni::script*;
13260 usingreference = uni::script;
13261 usingiterator_category = std::forward_iterator_tag;
13265 namespaceuni::detail {
13266 enum classbinary_prop {
13280emoji_modifier_base,
13281emoji_presentation,
13283extended_pictographic,
13520constexpr
boolget_binary_prop<binary_prop::ahex>(char32_t c) {
13521 returncp_property_is<property::ahex>(c);
13525constexpr
boolget_binary_prop<binary_prop::alpha>(char32_t c) {
13526 returncp_property_is<property::alpha>(c);
13530constexpr
boolget_binary_prop<binary_prop::bidi_c>(char32_t c) {
13531 returncp_property_is<property::bidi_c>(c);
13535constexpr
boolget_binary_prop<binary_prop::bidi_m>(char32_t c) {
13536 returncp_property_is<property::bidi_m>(c);
13540constexpr
boolget_binary_prop<binary_prop::cased>(char32_t c) {
13541 returncp_property_is<property::cased>(c);
13545constexpr
boolget_binary_prop<binary_prop::ci>(char32_t c) {
13546 returncp_property_is<property::ci>(c);
13550constexpr
boolget_binary_prop<binary_prop::dash>(char32_t c) {
13551 returncp_property_is<property::dash>(c);
13555constexpr
boolget_binary_prop<binary_prop::dep>(char32_t c) {
13556 returncp_property_is<property::dep>(c);
13560constexpr
boolget_binary_prop<binary_prop::di>(char32_t c) {
13561 returncp_property_is<property::di>(c);
13565constexpr
boolget_binary_prop<binary_prop::dia>(char32_t c) {
13566 returncp_property_is<property::dia>(c);
13570constexpr
boolget_binary_prop<binary_prop::emoji>(char32_t c) {
13571 returncp_property_is<property::emoji>(c);
13575constexpr
boolget_binary_prop<binary_prop::emoji_component>(char32_t c) {
13576 returncp_property_is<property::emoji_component>(c);
13580constexpr
boolget_binary_prop<binary_prop::emoji_modifier>(char32_t c) {
13581 returncp_property_is<property::emoji_modifier>(c);
13585constexpr
boolget_binary_prop<binary_prop::emoji_modifier_base>(char32_t c) {
13586 returncp_property_is<property::emoji_modifier_base>(c);
13590constexpr
boolget_binary_prop<binary_prop::emoji_presentation>(char32_t c) {
13591 returncp_property_is<property::emoji_presentation>(c);
13595constexpr
boolget_binary_prop<binary_prop::ext>(char32_t c) {
13596 returncp_property_is<property::ext>(c);
13600constexpr
boolget_binary_prop<binary_prop::extended_pictographic>(char32_t c) {
13601 returncp_property_is<property::extended_pictographic>(c);
13605constexpr
boolget_binary_prop<binary_prop::gr_base>(char32_t c) {
13606 returncp_property_is<property::gr_base>(c);
13610constexpr
boolget_binary_prop<binary_prop::gr_ext>(char32_t c) {
13611 returncp_property_is<property::gr_ext>(c);
13615constexpr
boolget_binary_prop<binary_prop::hex>(char32_t c) {
13616 returncp_property_is<property::hex>(c);
13620constexpr
boolget_binary_prop<binary_prop::idc>(char32_t c) {
13621 returncp_property_is<property::idc>(c);
13625constexpr
boolget_binary_prop<binary_prop::ideo>(char32_t c) {
13626 returncp_property_is<property::ideo>(c);
13630constexpr
boolget_binary_prop<binary_prop::ids>(char32_t c) {
13631 returncp_property_is<property::ids>(c);
13635constexpr
boolget_binary_prop<binary_prop::idsb>(char32_t c) {
13636 returncp_property_is<property::idsb>(c);
13640constexpr
boolget_binary_prop<binary_prop::idst>(char32_t c) {
13641 returncp_property_is<property::idst>(c);
13645constexpr
boolget_binary_prop<binary_prop::join_c>(char32_t c) {
13646 returncp_property_is<property::join_c>(c);
13650constexpr
boolget_binary_prop<binary_prop::loe>(char32_t c) {
13651 returncp_property_is<property::loe>(c);
13655constexpr
boolget_binary_prop<binary_prop::lower>(char32_t c) {
13656 returncp_property_is<property::lower>(c);
13660constexpr
boolget_binary_prop<binary_prop::math>(char32_t c) {
13661 returncp_property_is<property::math>(c);
13665constexpr
boolget_binary_prop<binary_prop::nchar>(char32_t c) {
13666 returncp_property_is<property::nchar>(c);
13670constexpr
boolget_binary_prop<binary_prop::pat_syn>(char32_t c) {
13671 returncp_property_is<property::pat_syn>(c);
13675constexpr
boolget_binary_prop<binary_prop::pat_ws>(char32_t c) {
13676 returncp_property_is<property::pat_ws>(c);
13680constexpr
boolget_binary_prop<binary_prop::pcm>(char32_t c) {
13681 returncp_property_is<property::pcm>(c);
13685constexpr
boolget_binary_prop<binary_prop::qmark>(char32_t c) {
13686 returncp_property_is<property::qmark>(c);
13690constexpr
boolget_binary_prop<binary_prop::radical>(char32_t c) {
13691 returncp_property_is<property::radical>(c);
13695constexpr
boolget_binary_prop<binary_prop::ri>(char32_t c) {
13696 returncp_property_is<property::ri>(c);
13700constexpr
boolget_binary_prop<binary_prop::sd>(char32_t c) {
13701 returncp_property_is<property::sd>(c);
13705constexpr
boolget_binary_prop<binary_prop::sterm>(char32_t c) {
13706 returncp_property_is<property::sterm>(c);
13710constexpr
boolget_binary_prop<binary_prop::term>(char32_t c) {
13711 returncp_property_is<property::term>(c);
13715constexpr
boolget_binary_prop<binary_prop::uideo>(char32_t c) {
13716 returncp_property_is<property::uideo>(c);
13720constexpr
boolget_binary_prop<binary_prop::upper>(char32_t c) {
13721 returncp_property_is<property::upper>(c);
13725constexpr
boolget_binary_prop<binary_prop::vs>(char32_t c) {
13726 returncp_property_is<property::vs>(c);
13730constexpr
boolget_binary_prop<binary_prop::wspace>(char32_t c) {
13731 returncp_property_is<property::wspace>(c);
13735constexpr
boolget_binary_prop<binary_prop::xidc>(char32_t c) {
13736 returncp_property_is<property::xidc>(c);
13740constexpr
boolget_binary_prop<binary_prop::xids>(char32_t c) {
13741 returncp_property_is<property::xids>(c);
13745constexpr
boolget_binary_prop<binary_prop::c>(char32_t c) {
13746 returncp_category_is<category::c>(c);
13750constexpr
boolget_binary_prop<binary_prop::cc>(char32_t c) {
13751 returncp_category_is<category::cc>(c);
13755constexpr
boolget_binary_prop<binary_prop::cf>(char32_t c) {
13756 returncp_category_is<category::cf>(c);
13760constexpr
boolget_binary_prop<binary_prop::cn>(char32_t c) {
13761 returncp_category_is<category::cn>(c);
13765constexpr
boolget_binary_prop<binary_prop::co>(char32_t c) {
13766 returncp_category_is<category::co>(c);
13770constexpr
boolget_binary_prop<binary_prop::cs>(char32_t c) {
13771 returncp_category_is<category::cs>(c);
13775constexpr
boolget_binary_prop<binary_prop::l>(char32_t c) {
13776 returncp_category_is<category::l>(c);
13780constexpr
boolget_binary_prop<binary_prop::lc>(char32_t c) {
13781 returncp_category_is<category::lc>(c);
13785constexpr
boolget_binary_prop<binary_prop::ll>(char32_t c) {
13786 returncp_category_is<category::ll>(c);
13790constexpr
boolget_binary_prop<binary_prop::lm>(char32_t c) {
13791 returncp_category_is<category::lm>(c);
13795constexpr
boolget_binary_prop<binary_prop::lo>(char32_t c) {
13796 returncp_category_is<category::lo>(c);
13800constexpr
boolget_binary_prop<binary_prop::lt>(char32_t c) {
13801 returncp_category_is<category::lt>(c);
13805constexpr
boolget_binary_prop<binary_prop::lu>(char32_t c) {
13806 returncp_category_is<category::lu>(c);
13810constexpr
boolget_binary_prop<binary_prop::m>(char32_t c) {
13811 returncp_category_is<category::m>(c);
13815constexpr
boolget_binary_prop<binary_prop::mc>(char32_t c) {
13816 returncp_category_is<category::mc>(c);
13820constexpr
boolget_binary_prop<binary_prop::me>(char32_t c) {
13821 returncp_category_is<category::me>(c);
13825constexpr
boolget_binary_prop<binary_prop::mn>(char32_t c) {
13826 returncp_category_is<category::mn>(c);
13830constexpr
boolget_binary_prop<binary_prop::n>(char32_t c) {
13831 returncp_category_is<category::n>(c);
13835constexpr
boolget_binary_prop<binary_prop::nd>(char32_t c) {
13836 returncp_category_is<category::nd>(c);
13840constexpr
boolget_binary_prop<binary_prop::nl>(char32_t c) {
13841 returncp_category_is<category::nl>(c);
13845constexpr
boolget_binary_prop<binary_prop::no>(char32_t c) {
13846 returncp_category_is<category::no>(c);
13850constexpr
boolget_binary_prop<binary_prop::p>(char32_t c) {
13851 returncp_category_is<category::p>(c);
13855constexpr
boolget_binary_prop<binary_prop::pc>(char32_t c) {
13856 returncp_category_is<category::pc>(c);
13860constexpr
boolget_binary_prop<binary_prop::pd>(char32_t c) {
13861 returncp_category_is<category::pd>(c);
13865constexpr
boolget_binary_prop<binary_prop::pe>(char32_t c) {
13866 returncp_category_is<category::pe>(c);
13870constexpr
boolget_binary_prop<binary_prop::pf>(char32_t c) {
13871 returncp_category_is<category::pf>(c);
13875constexpr
boolget_binary_prop<binary_prop::pi>(char32_t c) {
13876 returncp_category_is<category::pi>(c);
13880constexpr
boolget_binary_prop<binary_prop::po>(char32_t c) {
13881 returncp_category_is<category::po>(c);
13885constexpr
boolget_binary_prop<binary_prop::ps>(char32_t c) {
13886 returncp_category_is<category::ps>(c);
13890constexpr
boolget_binary_prop<binary_prop::s>(char32_t c) {
13891 returncp_category_is<category::s>(c);
13895constexpr
boolget_binary_prop<binary_prop::sc>(char32_t c) {
13896 returncp_category_is<category::sc>(c);
13900constexpr
boolget_binary_prop<binary_prop::sk>(char32_t c) {
13901 returncp_category_is<category::sk>(c);
13905constexpr
boolget_binary_prop<binary_prop::sm>(char32_t c) {
13906 returncp_category_is<category::sm>(c);
13910constexpr
boolget_binary_prop<binary_prop::so>(char32_t c) {
13911 returncp_category_is<category::so>(c);
13915constexpr
boolget_binary_prop<binary_prop::z>(char32_t c) {
13916 returncp_category_is<category::z>(c);
13920constexpr
boolget_binary_prop<binary_prop::zl>(char32_t c) {
13921 returncp_category_is<category::zl>(c);
13925constexpr
boolget_binary_prop<binary_prop::zp>(char32_t c) {
13926 returncp_category_is<category::zp>(c);
13930constexpr
boolget_binary_prop<binary_prop::zs>(char32_t c) {
13931 returncp_category_is<category::zs>(c);
13935constexpr
boolget_binary_prop<binary_prop::adlm>(char32_t c) {
13936 returncp_script(c) == script::adlm;
13940constexpr
boolget_binary_prop<binary_prop::aghb>(char32_t c) {
13941 returncp_script(c) == script::aghb;
13945constexpr
boolget_binary_prop<binary_prop::ahom>(char32_t c) {
13946 returncp_script(c) == script::ahom;
13950constexpr
boolget_binary_prop<binary_prop::arab>(char32_t c) {
13951 returncp_script(c) == script::arab;
13955constexpr
boolget_binary_prop<binary_prop::armi>(char32_t c) {
13956 returncp_script(c) == script::armi;
13960constexpr
boolget_binary_prop<binary_prop::armn>(char32_t c) {
13961 returncp_script(c) == script::armn;
13965constexpr
boolget_binary_prop<binary_prop::avst>(char32_t c) {
13966 returncp_script(c) == script::avst;
13970constexpr
boolget_binary_prop<binary_prop::bali>(char32_t c) {
13971 returncp_script(c) == script::bali;
13975constexpr
boolget_binary_prop<binary_prop::bamu>(char32_t c) {
13976 returncp_script(c) == script::bamu;
13980constexpr
boolget_binary_prop<binary_prop::bass>(char32_t c) {
13981 returncp_script(c) == script::bass;
13985constexpr
boolget_binary_prop<binary_prop::batk>(char32_t c) {
13986 returncp_script(c) == script::batk;
13990constexpr
boolget_binary_prop<binary_prop::beng>(char32_t c) {
13991 returncp_script(c) == script::beng;
13995constexpr
boolget_binary_prop<binary_prop::bhks>(char32_t c) {
13996 returncp_script(c) == script::bhks;
14000constexpr
boolget_binary_prop<binary_prop::bopo>(char32_t c) {
14001 returncp_script(c) == script::bopo;
14005constexpr
boolget_binary_prop<binary_prop::brah>(char32_t c) {
14006 returncp_script(c) == script::brah;
14010constexpr
boolget_binary_prop<binary_prop::brai>(char32_t c) {
14011 returncp_script(c) == script::brai;
14015constexpr
boolget_binary_prop<binary_prop::bugi>(char32_t c) {
14016 returncp_script(c) == script::bugi;
14020constexpr
boolget_binary_prop<binary_prop::buhd>(char32_t c) {
14021 returncp_script(c) == script::buhd;
14025constexpr
boolget_binary_prop<binary_prop::cakm>(char32_t c) {
14026 returncp_script(c) == script::cakm;
14030constexpr
boolget_binary_prop<binary_prop::cans>(char32_t c) {
14031 returncp_script(c) == script::cans;
14035constexpr
boolget_binary_prop<binary_prop::cari>(char32_t c) {
14036 returncp_script(c) == script::cari;
14040constexpr
boolget_binary_prop<binary_prop::cham>(char32_t c) {
14041 returncp_script(c) == script::cham;
14045constexpr
boolget_binary_prop<binary_prop::cher>(char32_t c) {
14046 returncp_script(c) == script::cher;
14050constexpr
boolget_binary_prop<binary_prop::chrs>(char32_t c) {
14051 returncp_script(c) == script::chrs;
14055constexpr
boolget_binary_prop<binary_prop::copt>(char32_t c) {
14056 returncp_script(c) == script::copt;
14060constexpr
boolget_binary_prop<binary_prop::cpmn>(char32_t c) {
14061 returncp_script(c) == script::cpmn;
14065constexpr
boolget_binary_prop<binary_prop::cprt>(char32_t c) {
14066 returncp_script(c) == script::cprt;
14070constexpr
boolget_binary_prop<binary_prop::cyrl>(char32_t c) {
14071 returncp_script(c) == script::cyrl;
14075constexpr
boolget_binary_prop<binary_prop::deva>(char32_t c) {
14076 returncp_script(c) == script::deva;
14080constexpr
boolget_binary_prop<binary_prop::diak>(char32_t c) {
14081 returncp_script(c) == script::diak;
14085constexpr
boolget_binary_prop<binary_prop::dogr>(char32_t c) {
14086 returncp_script(c) == script::dogr;
14090constexpr
boolget_binary_prop<binary_prop::dsrt>(char32_t c) {
14091 returncp_script(c) == script::dsrt;
14095constexpr
boolget_binary_prop<binary_prop::dupl>(char32_t c) {
14096 returncp_script(c) == script::dupl;
14100constexpr
boolget_binary_prop<binary_prop::egyp>(char32_t c) {
14101 returncp_script(c) == script::egyp;
14105constexpr
boolget_binary_prop<binary_prop::elba>(char32_t c) {
14106 returncp_script(c) == script::elba;
14110constexpr
boolget_binary_prop<binary_prop::elym>(char32_t c) {
14111 returncp_script(c) == script::elym;
14115constexpr
boolget_binary_prop<binary_prop::ethi>(char32_t c) {
14116 returncp_script(c) == script::ethi;
14120constexpr
boolget_binary_prop<binary_prop::geor>(char32_t c) {
14121 returncp_script(c) == script::geor;
14125constexpr
boolget_binary_prop<binary_prop::glag>(char32_t c) {
14126 returncp_script(c) == script::glag;
14130constexpr
boolget_binary_prop<binary_prop::gong>(char32_t c) {
14131 returncp_script(c) == script::gong;
14135constexpr
boolget_binary_prop<binary_prop::gonm>(char32_t c) {
14136 returncp_script(c) == script::gonm;
14140constexpr
boolget_binary_prop<binary_prop::goth>(char32_t c) {
14141 returncp_script(c) == script::goth;
14145constexpr
boolget_binary_prop<binary_prop::gran>(char32_t c) {
14146 returncp_script(c) == script::gran;
14150constexpr
boolget_binary_prop<binary_prop::grek>(char32_t c) {
14151 returncp_script(c) == script::grek;
14155constexpr
boolget_binary_prop<binary_prop::gujr>(char32_t c) {
14156 returncp_script(c) == script::gujr;
14160constexpr
boolget_binary_prop<binary_prop::guru>(char32_t c) {
14161 returncp_script(c) == script::guru;
14165constexpr
boolget_binary_prop<binary_prop::hang>(char32_t c) {
14166 returncp_script(c) == script::hang;
14170constexpr
boolget_binary_prop<binary_prop::hani>(char32_t c) {
14171 returncp_script(c) == script::hani;
14175constexpr
boolget_binary_prop<binary_prop::hano>(char32_t c) {
14176 returncp_script(c) == script::hano;
14180constexpr
boolget_binary_prop<binary_prop::hatr>(char32_t c) {
14181 returncp_script(c) == script::hatr;
14185constexpr
boolget_binary_prop<binary_prop::hebr>(char32_t c) {
14186 returncp_script(c) == script::hebr;
14190constexpr
boolget_binary_prop<binary_prop::hira>(char32_t c) {
14191 returncp_script(c) == script::hira;
14195constexpr
boolget_binary_prop<binary_prop::hluw>(char32_t c) {
14196 returncp_script(c) == script::hluw;
14200constexpr
boolget_binary_prop<binary_prop::hmng>(char32_t c) {
14201 returncp_script(c) == script::hmng;
14205constexpr
boolget_binary_prop<binary_prop::hmnp>(char32_t c) {
14206 returncp_script(c) == script::hmnp;
14210constexpr
boolget_binary_prop<binary_prop::hrkt>(char32_t c) {
14211 returncp_script(c) == script::hrkt;
14215constexpr
boolget_binary_prop<binary_prop::hung>(char32_t c) {
14216 returncp_script(c) == script::hung;
14220constexpr
boolget_binary_prop<binary_prop::ital>(char32_t c) {
14221 returncp_script(c) == script::ital;
14225constexpr
boolget_binary_prop<binary_prop::java>(char32_t c) {
14226 returncp_script(c) == script::java;
14230constexpr
boolget_binary_prop<binary_prop::kali>(char32_t c) {
14231 returncp_script(c) == script::kali;
14235constexpr
boolget_binary_prop<binary_prop::kana>(char32_t c) {
14236 returncp_script(c) == script::kana;
14240constexpr
boolget_binary_prop<binary_prop::khar>(char32_t c) {
14241 returncp_script(c) == script::khar;
14245constexpr
boolget_binary_prop<binary_prop::khmr>(char32_t c) {
14246 returncp_script(c) == script::khmr;
14250constexpr
boolget_binary_prop<binary_prop::khoj>(char32_t c) {
14251 returncp_script(c) == script::khoj;
14255constexpr
boolget_binary_prop<binary_prop::kits>(char32_t c) {
14256 returncp_script(c) == script::kits;
14260constexpr
boolget_binary_prop<binary_prop::knda>(char32_t c) {
14261 returncp_script(c) == script::knda;
14265constexpr
boolget_binary_prop<binary_prop::kthi>(char32_t c) {
14266 returncp_script(c) == script::kthi;
14270constexpr
boolget_binary_prop<binary_prop::lana>(char32_t c) {
14271 returncp_script(c) == script::lana;
14275constexpr
boolget_binary_prop<binary_prop::laoo>(char32_t c) {
14276 returncp_script(c) == script::laoo;
14280constexpr
boolget_binary_prop<binary_prop::latn>(char32_t c) {
14281 returncp_script(c) == script::latn;
14285constexpr
boolget_binary_prop<binary_prop::lepc>(char32_t c) {
14286 returncp_script(c) == script::lepc;
14290constexpr
boolget_binary_prop<binary_prop::limb>(char32_t c) {
14291 returncp_script(c) == script::limb;
14295constexpr
boolget_binary_prop<binary_prop::lina>(char32_t c) {
14296 returncp_script(c) == script::lina;
14300constexpr
boolget_binary_prop<binary_prop::linb>(char32_t c) {
14301 returncp_script(c) == script::linb;
14305constexpr
boolget_binary_prop<binary_prop::lisu>(char32_t c) {
14306 returncp_script(c) == script::lisu;
14310constexpr
boolget_binary_prop<binary_prop::lyci>(char32_t c) {
14311 returncp_script(c) == script::lyci;
14315constexpr
boolget_binary_prop<binary_prop::lydi>(char32_t c) {
14316 returncp_script(c) == script::lydi;
14320constexpr
boolget_binary_prop<binary_prop::mahj>(char32_t c) {
14321 returncp_script(c) == script::mahj;
14325constexpr
boolget_binary_prop<binary_prop::maka>(char32_t c) {
14326 returncp_script(c) == script::maka;
14330constexpr
boolget_binary_prop<binary_prop::mand>(char32_t c) {
14331 returncp_script(c) == script::mand;
14335constexpr
boolget_binary_prop<binary_prop::mani>(char32_t c) {
14336 returncp_script(c) == script::mani;
14340constexpr
boolget_binary_prop<binary_prop::marc>(char32_t c) {
14341 returncp_script(c) == script::marc;
14345constexpr
boolget_binary_prop<binary_prop::medf>(char32_t c) {
14346 returncp_script(c) == script::medf;
14350constexpr
boolget_binary_prop<binary_prop::mend>(char32_t c) {
14351 returncp_script(c) == script::mend;
14355constexpr
boolget_binary_prop<binary_prop::merc>(char32_t c) {
14356 returncp_script(c) == script::merc;
14360constexpr
boolget_binary_prop<binary_prop::mero>(char32_t c) {
14361 returncp_script(c) == script::mero;
14365constexpr
boolget_binary_prop<binary_prop::mlym>(char32_t c) {
14366 returncp_script(c) == script::mlym;
14370constexpr
boolget_binary_prop<binary_prop::modi>(char32_t c) {
14371 returncp_script(c) == script::modi;
14375constexpr
boolget_binary_prop<binary_prop::mong>(char32_t c) {
14376 returncp_script(c) == script::mong;
14380constexpr
boolget_binary_prop<binary_prop::mroo>(char32_t c) {
14381 returncp_script(c) == script::mroo;
14385constexpr
boolget_binary_prop<binary_prop::mtei>(char32_t c) {
14386 returncp_script(c) == script::mtei;
14390constexpr
boolget_binary_prop<binary_prop::mult>(char32_t c) {
14391 returncp_script(c) == script::mult;
14395constexpr
boolget_binary_prop<binary_prop::mymr>(char32_t c) {
14396 returncp_script(c) == script::mymr;
14400constexpr
boolget_binary_prop<binary_prop::nand>(char32_t c) {
14401 returncp_script(c) == script::nand;
14405constexpr
boolget_binary_prop<binary_prop::narb>(char32_t c) {
14406 returncp_script(c) == script::narb;
14410constexpr
boolget_binary_prop<binary_prop::nbat>(char32_t c) {
14411 returncp_script(c) == script::nbat;
14415constexpr
boolget_binary_prop<binary_prop::newa>(char32_t c) {
14416 returncp_script(c) == script::newa;
14420constexpr
boolget_binary_prop<binary_prop::nkoo>(char32_t c) {
14421 returncp_script(c) == script::nkoo;
14425constexpr
boolget_binary_prop<binary_prop::nshu>(char32_t c) {
14426 returncp_script(c) == script::nshu;
14430constexpr
boolget_binary_prop<binary_prop::ogam>(char32_t c) {
14431 returncp_script(c) == script::ogam;
14435constexpr
boolget_binary_prop<binary_prop::olck>(char32_t c) {
14436 returncp_script(c) == script::olck;
14440constexpr
boolget_binary_prop<binary_prop::orkh>(char32_t c) {
14441 returncp_script(c) == script::orkh;
14445constexpr
boolget_binary_prop<binary_prop::orya>(char32_t c) {
14446 returncp_script(c) == script::orya;
14450constexpr
boolget_binary_prop<binary_prop::osge>(char32_t c) {
14451 returncp_script(c) == script::osge;
14455constexpr
boolget_binary_prop<binary_prop::osma>(char32_t c) {
14456 returncp_script(c) == script::osma;
14460constexpr
boolget_binary_prop<binary_prop::ougr>(char32_t c) {
14461 returncp_script(c) == script::ougr;
14465constexpr
boolget_binary_prop<binary_prop::palm>(char32_t c) {
14466 returncp_script(c) == script::palm;
14470constexpr
boolget_binary_prop<binary_prop::pauc>(char32_t c) {
14471 returncp_script(c) == script::pauc;
14475constexpr
boolget_binary_prop<binary_prop::perm>(char32_t c) {
14476 returncp_script(c) == script::perm;
14480constexpr
boolget_binary_prop<binary_prop::phag>(char32_t c) {
14481 returncp_script(c) == script::phag;
14485constexpr
boolget_binary_prop<binary_prop::phli>(char32_t c) {
14486 returncp_script(c) == script::phli;
14490constexpr
boolget_binary_prop<binary_prop::phlp>(char32_t c) {
14491 returncp_script(c) == script::phlp;
14495constexpr
boolget_binary_prop<binary_prop::phnx>(char32_t c) {
14496 returncp_script(c) == script::phnx;
14500constexpr
boolget_binary_prop<binary_prop::plrd>(char32_t c) {
14501 returncp_script(c) == script::plrd;
14505constexpr
boolget_binary_prop<binary_prop::prti>(char32_t c) {
14506 returncp_script(c) == script::prti;
14510constexpr
boolget_binary_prop<binary_prop::rjng>(char32_t c) {
14511 returncp_script(c) == script::rjng;
14515constexpr
boolget_binary_prop<binary_prop::rohg>(char32_t c) {
14516 returncp_script(c) == script::rohg;
14520constexpr
boolget_binary_prop<binary_prop::runr>(char32_t c) {
14521 returncp_script(c) == script::runr;
14525constexpr
boolget_binary_prop<binary_prop::samr>(char32_t c) {
14526 returncp_script(c) == script::samr;
14530constexpr
boolget_binary_prop<binary_prop::sarb>(char32_t c) {
14531 returncp_script(c) == script::sarb;
14535constexpr
boolget_binary_prop<binary_prop::saur>(char32_t c) {
14536 returncp_script(c) == script::saur;
14540constexpr
boolget_binary_prop<binary_prop::sgnw>(char32_t c) {
14541 returncp_script(c) == script::sgnw;
14545constexpr
boolget_binary_prop<binary_prop::shaw>(char32_t c) {
14546 returncp_script(c) == script::shaw;
14550constexpr
boolget_binary_prop<binary_prop::shrd>(char32_t c) {
14551 returncp_script(c) == script::shrd;
14555constexpr
boolget_binary_prop<binary_prop::sidd>(char32_t c) {
14556 returncp_script(c) == script::sidd;
14560constexpr
boolget_binary_prop<binary_prop::sind>(char32_t c) {
14561 returncp_script(c) == script::sind;
14565constexpr
boolget_binary_prop<binary_prop::sinh>(char32_t c) {
14566 returncp_script(c) == script::sinh;
14570constexpr
boolget_binary_prop<binary_prop::sogd>(char32_t c) {
14571 returncp_script(c) == script::sogd;
14575constexpr
boolget_binary_prop<binary_prop::sogo>(char32_t c) {
14576 returncp_script(c) == script::sogo;
14580constexpr
boolget_binary_prop<binary_prop::sora>(char32_t c) {
14581 returncp_script(c) == script::sora;
14585constexpr
boolget_binary_prop<binary_prop::soyo>(char32_t c) {
14586 returncp_script(c) == script::soyo;
14590constexpr
boolget_binary_prop<binary_prop::sund>(char32_t c) {
14591 returncp_script(c) == script::sund;
14595constexpr
boolget_binary_prop<binary_prop::sylo>(char32_t c) {
14596 returncp_script(c) == script::sylo;
14600constexpr
boolget_binary_prop<binary_prop::syrc>(char32_t c) {
14601 returncp_script(c) == script::syrc;
14605constexpr
boolget_binary_prop<binary_prop::tagb>(char32_t c) {
14606 returncp_script(c) == script::tagb;
14610constexpr
boolget_binary_prop<binary_prop::takr>(char32_t c) {
14611 returncp_script(c) == script::takr;
14615constexpr
boolget_binary_prop<binary_prop::tale>(char32_t c) {
14616 returncp_script(c) == script::tale;
14620constexpr
boolget_binary_prop<binary_prop::talu>(char32_t c) {
14621 returncp_script(c) == script::talu;
14625constexpr
boolget_binary_prop<binary_prop::taml>(char32_t c) {
14626 returncp_script(c) == script::taml;
14630constexpr
boolget_binary_prop<binary_prop::tang>(char32_t c) {
14631 returncp_script(c) == script::tang;
14635constexpr
boolget_binary_prop<binary_prop::tavt>(char32_t c) {
14636 returncp_script(c) == script::tavt;
14640constexpr
boolget_binary_prop<binary_prop::telu>(char32_t c) {
14641 returncp_script(c) == script::telu;
14645constexpr
boolget_binary_prop<binary_prop::tfng>(char32_t c) {
14646 returncp_script(c) == script::tfng;
14650constexpr
boolget_binary_prop<binary_prop::tglg>(char32_t c) {
14651 returncp_script(c) == script::tglg;
14655constexpr
boolget_binary_prop<binary_prop::thaa>(char32_t c) {
14656 returncp_script(c) == script::thaa;
14660constexpr
boolget_binary_prop<binary_prop::thai>(char32_t c) {
14661 returncp_script(c) == script::thai;
14665constexpr
boolget_binary_prop<binary_prop::tibt>(char32_t c) {
14666 returncp_script(c) == script::tibt;
14670constexpr
boolget_binary_prop<binary_prop::tirh>(char32_t c) {
14671 returncp_script(c) == script::tirh;
14675constexpr
boolget_binary_prop<binary_prop::tnsa>(char32_t c) {
14676 returncp_script(c) == script::tnsa;
14680constexpr
boolget_binary_prop<binary_prop::toto>(char32_t c) {
14681 returncp_script(c) == script::toto;
14685constexpr
boolget_binary_prop<binary_prop::ugar>(char32_t c) {
14686 returncp_script(c) == script::ugar;
14690constexpr
boolget_binary_prop<binary_prop::vaii>(char32_t c) {
14691 returncp_script(c) == script::vaii;
14695constexpr
boolget_binary_prop<binary_prop::vith>(char32_t c) {
14696 returncp_script(c) == script::vith;
14700constexpr
boolget_binary_prop<binary_prop::wara>(char32_t c) {
14701 returncp_script(c) == script::wara;
14705constexpr
boolget_binary_prop<binary_prop::wcho>(char32_t c) {
14706 returncp_script(c) == script::wcho;
14710constexpr
boolget_binary_prop<binary_prop::xpeo>(char32_t c) {
14711 returncp_script(c) == script::xpeo;
14715constexpr
boolget_binary_prop<binary_prop::xsux>(char32_t c) {
14716 returncp_script(c) == script::xsux;
14720constexpr
boolget_binary_prop<binary_prop::yezi>(char32_t c) {
14721 returncp_script(c) == script::yezi;
14725constexpr
boolget_binary_prop<binary_prop::yiii>(char32_t c) {
14726 returncp_script(c) == script::yiii;
14730constexpr
boolget_binary_prop<binary_prop::zanb>(char32_t c) {
14731 returncp_script(c) == script::zanb;
14735constexpr
boolget_binary_prop<binary_prop::zinh>(char32_t c) {
14736 returncp_script(c) == script::zinh;
14740constexpr
boolget_binary_prop<binary_prop::zyyy>(char32_t c) {
14741 returncp_script(c) == script::zyyy;
14745constexpr
boolget_binary_prop<binary_prop::zzzz>(char32_t c) {
14746 returncp_script(c) == script::zzzz;
14749 staticconstexpr string_with_idx binary_prop_names[] = {
14750string_with_idx{
"adlam", 86},
14751string_with_idx{
"adlm", 86},
14752string_with_idx{
"aghb", 87},
14753string_with_idx{
"ahex", 0},
14754string_with_idx{
"ahom", 88},
14755string_with_idx{
"alpha", 1},
14756string_with_idx{
"alphabetic", 1},
14757string_with_idx{
"anatolian_hieroglyphs", 138},
14758string_with_idx{
"any", 45},
14759string_with_idx{
"arab", 89},
14760string_with_idx{
"arabic", 89},
14761string_with_idx{
"armenian", 91},
14762string_with_idx{
"armi", 90},
14763string_with_idx{
"armn", 91},
14764string_with_idx{
"ascii", 46},
14765string_with_idx{
"ascii_hex_digit", 0},
14766string_with_idx{
"assigned", 47},
14767string_with_idx{
"avestan", 92},
14768string_with_idx{
"avst", 92},
14769string_with_idx{
"bali", 93},
14770string_with_idx{
"balinese", 93},
14771string_with_idx{
"bamu", 94},
14772string_with_idx{
"bamum", 94},
14773string_with_idx{
"bass", 95},
14774string_with_idx{
"bassa_vah", 95},
14775string_with_idx{
"batak", 96},
14776string_with_idx{
"batk", 96},
14777string_with_idx{
"beng", 97},
14778string_with_idx{
"bengali", 97},
14779string_with_idx{
"bhaiksuki", 98},
14780string_with_idx{
"bhks", 98},
14781string_with_idx{
"bidi_c", 2},
14782string_with_idx{
"bidi_control", 2},
14783string_with_idx{
"bidi_m", 3},
14784string_with_idx{
"bidi_mirrored", 3},
14785string_with_idx{
"bopo", 99},
14786string_with_idx{
"bopomofo", 99},
14787string_with_idx{
"brah", 100},
14788string_with_idx{
"brahmi", 100},
14789string_with_idx{
"brai", 101},
14790string_with_idx{
"braille", 101},
14791string_with_idx{
"bugi", 102},
14792string_with_idx{
"buginese", 102},
14793string_with_idx{
"buhd", 103},
14794string_with_idx{
"buhid", 103},
14795string_with_idx{
"c", 48},
14796string_with_idx{
"cakm", 104},
14797string_with_idx{
"canadian_aboriginal", 105},
14798string_with_idx{
"cans", 105},
14799string_with_idx{
"cari", 106},
14800string_with_idx{
"carian", 106},
14801string_with_idx{
"case_ignorable", 5},
14802string_with_idx{
"cased", 4},
14803string_with_idx{
"cased_letter", 55},
14804string_with_idx{
"caucasian_albanian", 87},
14805string_with_idx{
"cc", 49},
14806string_with_idx{
"cf", 50},
14807string_with_idx{
"chakma", 104},
14808string_with_idx{
"cham", 107},
14809string_with_idx{
"cher", 108},
14810string_with_idx{
"cherokee", 108},
14811string_with_idx{
"chorasmian", 109},
14812string_with_idx{
"chrs", 109},
14813string_with_idx{
"ci", 5},
14814string_with_idx{
"close_punctuation", 72},
14815string_with_idx{
"cn", 51},
14816string_with_idx{
"co", 52},
14817string_with_idx{
"common", 247},
14818string_with_idx{
"connector_punctuation", 70},
14819string_with_idx{
"control", 49},
14820string_with_idx{
"copt", 110},
14821string_with_idx{
"coptic", 110},
14822string_with_idx{
"cpmn", 111},
14823string_with_idx{
"cprt", 112},
14824string_with_idx{
"cs", 53},
14825string_with_idx{
"cuneiform", 242},
14826string_with_idx{
"currency_symbol", 78},
14827string_with_idx{
"cypriot", 112},
14828string_with_idx{
"cypro_minoan", 111},
14829string_with_idx{
"cyrillic", 113},
14830string_with_idx{
"cyrl", 113},
14831string_with_idx{
"dash", 6},
14832string_with_idx{
"dash_punctuation", 71},
14833string_with_idx{
"decimal_number", 66},
14834string_with_idx{
"default_ignorable_code_point", 8},
14835string_with_idx{
"dep", 7},
14836string_with_idx{
"deprecated", 7},
14837string_with_idx{
"deseret", 117},
14838string_with_idx{
"deva", 114},
14839string_with_idx{
"devanagari", 114},
14840string_with_idx{
"di", 8},
14841string_with_idx{
"dia", 9},
14842string_with_idx{
"diacritic", 9},
14843string_with_idx{
"diak", 115},
14844string_with_idx{
"dives_akuru", 115},
14845string_with_idx{
"dogr", 116},
14846string_with_idx{
"dogra", 116},
14847string_with_idx{
"dsrt", 117},
14848string_with_idx{
"dupl", 118},
14849string_with_idx{
"duployan", 118},
14850string_with_idx{
"egyp", 119},
14851string_with_idx{
"egyptian_hieroglyphs", 119},
14852string_with_idx{
"elba", 120},
14853string_with_idx{
"elbasan", 120},
14854string_with_idx{
"elym", 121},
14855string_with_idx{
"elymaic", 121},
14856string_with_idx{
"emoji", 10},
14857string_with_idx{
"emoji_component", 11},
14858string_with_idx{
"emoji_modifier", 12},
14859string_with_idx{
"emoji_modifier_base", 13},
14860string_with_idx{
"emoji_presentation", 14},
14861string_with_idx{
"enclosing_mark", 63},
14862string_with_idx{
"ethi", 122},
14863string_with_idx{
"ethiopic", 122},
14864string_with_idx{
"ext", 15},
14865string_with_idx{
"extended_pictographic", 16},
14866string_with_idx{
"extender", 15},
14867string_with_idx{
"final_punctuation", 73},
14868string_with_idx{
"format", 50},
14869string_with_idx{
"geor", 123},
14870string_with_idx{
"georgian", 123},
14871string_with_idx{
"glag", 124},
14872string_with_idx{
"glagolitic", 124},
14873string_with_idx{
"gong", 125},
14874string_with_idx{
"gonm", 126},
14875string_with_idx{
"goth", 127},
14876string_with_idx{
"gothic", 127},
14877string_with_idx{
"gr_base", 17},
14878string_with_idx{
"gr_ext", 18},
14879string_with_idx{
"gran", 128},
14880string_with_idx{
"grantha", 128},
14881string_with_idx{
"grapheme_base", 17},
14882string_with_idx{
"grapheme_extend", 18},
14883string_with_idx{
"greek", 129},
14884string_with_idx{
"grek", 129},
14885string_with_idx{
"gujarati", 130},
14886string_with_idx{
"gujr", 130},
14887string_with_idx{
"gunjala_gondi", 125},
14888string_with_idx{
"gurmukhi", 131},
14889string_with_idx{
"guru", 131},
14890string_with_idx{
"han", 133},
14891string_with_idx{
"hang", 132},
14892string_with_idx{
"hangul", 132},
14893string_with_idx{
"hani", 133},
14894string_with_idx{
"hanifi_rohingya", 202},
14895string_with_idx{
"hano", 134},
14896string_with_idx{
"hanunoo", 134},
14897string_with_idx{
"hatr", 135},
14898string_with_idx{
"hatran", 135},
14899string_with_idx{
"hebr", 136},
14900string_with_idx{
"hebrew", 136},
14901string_with_idx{
"hex", 19},
14902string_with_idx{
"hex_digit", 19},
14903string_with_idx{
"hira", 137},
14904string_with_idx{
"hiragana", 137},
14905string_with_idx{
"hluw", 138},
14906string_with_idx{
"hmng", 139},
14907string_with_idx{
"hmnp", 140},
14908string_with_idx{
"hrkt", 141},
14909string_with_idx{
"hung", 142},
14910string_with_idx{
"id_continue", 20},
14911string_with_idx{
"id_start", 22},
14912string_with_idx{
"idc", 20},
14913string_with_idx{
"ideo", 21},
14914string_with_idx{
"ideographic", 21},
14915string_with_idx{
"ids", 22},
14916string_with_idx{
"ids_binary_operator", 23},
14917string_with_idx{
"ids_trinary_operator", 24},
14918string_with_idx{
"idsb", 23},
14919string_with_idx{
"idst", 24},
14920string_with_idx{
"imperial_aramaic", 90},
14921string_with_idx{
"inherited", 246},
14922string_with_idx{
"initial_punctuation", 74},
14923string_with_idx{
"inscriptional_pahlavi", 196},
14924string_with_idx{
"inscriptional_parthian", 200},
14925string_with_idx{
"ital", 143},
14926string_with_idx{
"java", 144},
14927string_with_idx{
"javanese", 144},
14928string_with_idx{
"join_c", 25},
14929string_with_idx{
"join_control", 25},
14930string_with_idx{
"kaithi", 152},
14931string_with_idx{
"kali", 145},
14932string_with_idx{
"kana", 146},
14933string_with_idx{
"kannada", 151},
14934string_with_idx{
"katakana", 146},
14935string_with_idx{
"katakana_or_hiragana", 141},
14936string_with_idx{
"kayah_li", 145},
14937string_with_idx{
"khar", 147},
14938string_with_idx{
"kharoshthi", 147},
14939string_with_idx{
"khitan_small_script", 150},
14940string_with_idx{
"khmer", 148},
14941string_with_idx{
"khmr", 148},
14942string_with_idx{
"khoj", 149},
14943string_with_idx{
"khojki", 149},
14944string_with_idx{
"khudawadi", 211},
14945string_with_idx{
"kits", 150},
14946string_with_idx{
"knda", 151},
14947string_with_idx{
"kthi", 152},
14948string_with_idx{
"l", 54},
14949string_with_idx{
"lana", 153},
14950string_with_idx{
"lao", 154},
14951string_with_idx{
"laoo", 154},
14952string_with_idx{
"latin", 155},
14953string_with_idx{
"latn", 155},
14954string_with_idx{
"lc", 55},
14955string_with_idx{
"lepc", 156},
14956string_with_idx{
"lepcha", 156},
14957string_with_idx{
"letter", 54},
14958string_with_idx{
"letter_number", 67},
14959string_with_idx{
"limb", 157},
14960string_with_idx{
"limbu", 157},
14961string_with_idx{
"lina", 158},
14962string_with_idx{
"linb", 159},
14963string_with_idx{
"line_separator", 83},
14964string_with_idx{
"linear_a", 158},
14965string_with_idx{
"linear_b", 159},
14966string_with_idx{
"lisu", 160},
14967string_with_idx{
"ll", 56},
14968string_with_idx{
"lm", 57},
14969string_with_idx{
"lo", 58},
14970string_with_idx{
"loe", 26},
14971string_with_idx{
"logical_order_exception", 26},
14972string_with_idx{
"lower", 27},
14973string_with_idx{
"lowercase", 27},
14974string_with_idx{
"lowercase_letter", 56},
14975string_with_idx{
"lt", 59},
14976string_with_idx{
"lu", 60},
14977string_with_idx{
"lyci", 161},
14978string_with_idx{
"lycian", 161},
14979string_with_idx{
"lydi", 162},
14980string_with_idx{
"lydian", 162},
14981string_with_idx{
"m", 61},
14982string_with_idx{
"mahajani", 163},
14983string_with_idx{
"mahj", 163},
14984string_with_idx{
"maka", 164},
14985string_with_idx{
"makasar", 164},
14986string_with_idx{
"malayalam", 172},
14987string_with_idx{
"mand", 165},
14988string_with_idx{
"mandaic", 165},
14989string_with_idx{
"mani", 166},
14990string_with_idx{
"manichaean", 166},
14991string_with_idx{
"marc", 167},
14992string_with_idx{
"marchen", 167},
14993string_with_idx{
"mark", 61},
14994string_with_idx{
"masaram_gondi", 126},
14995string_with_idx{
"math", 28},
14996string_with_idx{
"math_symbol", 80},
14997string_with_idx{
"mc", 62},
14998string_with_idx{
"me", 63},
14999string_with_idx{
"medefaidrin", 168},
15000string_with_idx{
"medf", 168},
15001string_with_idx{
"meetei_mayek", 176},
15002string_with_idx{
"mend", 169},
15003string_with_idx{
"mende_kikakui", 169},
15004string_with_idx{
"merc", 170},
15005string_with_idx{
"mero", 171},
15006string_with_idx{
"meroitic_cursive", 170},
15007string_with_idx{
"meroitic_hieroglyphs", 171},
15008string_with_idx{
"miao", 199},
15009string_with_idx{
"mlym", 172},
15010string_with_idx{
"mn", 64},
15011string_with_idx{
"modi", 173},
15012string_with_idx{
"modifier_letter", 57},
15013string_with_idx{
"modifier_symbol", 79},
15014string_with_idx{
"mong", 174},
15015string_with_idx{
"mongolian", 174},
15016string_with_idx{
"mro", 175},
15017string_with_idx{
"mroo", 175},
15018string_with_idx{
"mtei", 176},
15019string_with_idx{
"mult", 177},
15020string_with_idx{
"multani", 177},
15021string_with_idx{
"myanmar", 178},
15022string_with_idx{
"mymr", 178},
15023string_with_idx{
"n", 65},
15024string_with_idx{
"nabataean", 181},
15025string_with_idx{
"nand", 179},
15026string_with_idx{
"nandinagari", 179},
15027string_with_idx{
"narb", 180},
15028string_with_idx{
"nbat", 181},
15029string_with_idx{
"nchar", 29},
15030string_with_idx{
"nd", 66},
15031string_with_idx{
"new_tai_lue", 223},
15032string_with_idx{
"newa", 182},
15033string_with_idx{
"nko", 183},
15034string_with_idx{
"nkoo", 183},
15035string_with_idx{
"nl", 67},
15036string_with_idx{
"no", 68},
15037string_with_idx{
"noncharacter_code_point", 29},
15038string_with_idx{
"nonspacing_mark", 64},
15039string_with_idx{
"nshu", 184},
15040string_with_idx{
"number", 65},
15041string_with_idx{
"nushu", 184},
15042string_with_idx{
"nyiakeng_puachue_hmong", 140},
15043string_with_idx{
"ogam", 185},
15044string_with_idx{
"ogham", 185},
15045string_with_idx{
"ol_chiki", 186},
15046string_with_idx{
"olck", 186},
15047string_with_idx{
"old_hungarian", 142},
15048string_with_idx{
"old_italic", 143},
15049string_with_idx{
"old_north_arabian", 180},
15050string_with_idx{
"old_permic", 194},
15051string_with_idx{
"old_persian", 241},
15052string_with_idx{
"old_sogdian", 214},
15053string_with_idx{
"old_south_arabian", 205},
15054string_with_idx{
"old_turkic", 187},
15055string_with_idx{
"old_uyghur", 191},
15056string_with_idx{
"open_punctuation", 76},
15057string_with_idx{
"oriya", 188},
15058string_with_idx{
"orkh", 187},
15059string_with_idx{
"orya", 188},
15060string_with_idx{
"osage", 189},
15061string_with_idx{
"osge", 189},
15062string_with_idx{
"osma", 190},
15063string_with_idx{
"osmanya", 190},
15064string_with_idx{
"other", 48},
15065string_with_idx{
"other_letter", 58},
15066string_with_idx{
"other_number", 68},
15067string_with_idx{
"other_punctuation", 75},
15068string_with_idx{
"other_symbol", 81},
15069string_with_idx{
"ougr", 191},
15070string_with_idx{
"p", 69},
15071string_with_idx{
"pahawh_hmong", 139},
15072string_with_idx{
"palm", 192},
15073string_with_idx{
"palmyrene", 192},
15074string_with_idx{
"paragraph_separator", 84},
15075string_with_idx{
"pat_syn", 30},
15076string_with_idx{
"pat_ws", 31},
15077string_with_idx{
"pattern_syntax", 30},
15078string_with_idx{
"pattern_white_space", 31},
15079string_with_idx{
"pau_cin_hau", 193},
15080string_with_idx{
"pauc", 193},
15081string_with_idx{
"pc", 70},
15082string_with_idx{
"pcm", 32},
15083string_with_idx{
"pd", 71},
15084string_with_idx{
"pe", 72},
15085string_with_idx{
"perm", 194},
15086string_with_idx{
"pf", 73},
15087string_with_idx{
"phag", 195},
15088string_with_idx{
"phags_pa", 195},
15089string_with_idx{
"phli", 196},
15090string_with_idx{
"phlp", 197},
15091string_with_idx{
"phnx", 198},
15092string_with_idx{
"phoenician", 198},
15093string_with_idx{
"pi", 74},
15094string_with_idx{
"plrd", 199},
15095string_with_idx{
"po", 75},
15096string_with_idx{
"prepended_concatenation_mark", 32},
15097string_with_idx{
"private_use", 52},
15098string_with_idx{
"prti", 200},
15099string_with_idx{
"ps", 76},
15100string_with_idx{
"psalter_pahlavi", 197},
15101string_with_idx{
"punctuation", 69},
15102string_with_idx{
"qmark", 33},
15103string_with_idx{
"quotation_mark", 33},
15104string_with_idx{
"radical", 34},
15105string_with_idx{
"regional_indicator", 35},
15106string_with_idx{
"rejang", 201},
15107string_with_idx{
"ri", 35},
15108string_with_idx{
"rjng", 201},
15109string_with_idx{
"rohg", 202},
15110string_with_idx{
"runic", 203},
15111string_with_idx{
"runr", 203},
15112string_with_idx{
"s", 77},
15113string_with_idx{
"samaritan", 204},
15114string_with_idx{
"samr", 204},
15115string_with_idx{
"sarb", 205},
15116string_with_idx{
"saur", 206},
15117string_with_idx{
"saurashtra", 206},
15118string_with_idx{
"sc", 78},
15119string_with_idx{
"sd", 36},
15120string_with_idx{
"sentence_terminal", 37},
15121string_with_idx{
"separator", 82},
15122string_with_idx{
"sgnw", 207},
15123string_with_idx{
"sharada", 209},
15124string_with_idx{
"shavian", 208},
15125string_with_idx{
"shaw", 208},
15126string_with_idx{
"shrd", 209},
15127string_with_idx{
"sidd", 210},
15128string_with_idx{
"siddham", 210},
15129string_with_idx{
"signwriting", 207},
15130string_with_idx{
"sind", 211},
15131string_with_idx{
"sinh", 212},
15132string_with_idx{
"sinhala", 212},
15133string_with_idx{
"sk", 79},
15134string_with_idx{
"sm", 80},
15135string_with_idx{
"so", 81},
15136string_with_idx{
"soft_dotted", 36},
15137string_with_idx{
"sogd", 213},
15138string_with_idx{
"sogdian", 213},
15139string_with_idx{
"sogo", 214},
15140string_with_idx{
"sora", 215},
15141string_with_idx{
"sora_sompeng", 215},
15142string_with_idx{
"soyo", 216},
15143string_with_idx{
"soyombo", 216},
15144string_with_idx{
"space", 42},
15145string_with_idx{
"space_separator", 85},
15146string_with_idx{
"spacing_mark", 62},
15147string_with_idx{
"sterm", 37},
15148string_with_idx{
"sund", 217},
15149string_with_idx{
"sundanese", 217},
15150string_with_idx{
"surrogate", 53},
15151string_with_idx{
"sylo", 218},
15152string_with_idx{
"syloti_nagri", 218},
15153string_with_idx{
"symbol", 77},
15154string_with_idx{
"syrc", 219},
15155string_with_idx{
"syriac", 219},
15156string_with_idx{
"tagalog", 229},
15157string_with_idx{
"tagb", 220},
15158string_with_idx{
"tagbanwa", 220},
15159string_with_idx{
"tai_le", 222},
15160string_with_idx{
"tai_tham", 153},
15161string_with_idx{
"tai_viet", 226},
15162string_with_idx{
"takr", 221},
15163string_with_idx{
"takri", 221},
15164string_with_idx{
"tale", 222},
15165string_with_idx{
"talu", 223},
15166string_with_idx{
"tamil", 224},
15167string_with_idx{
"taml", 224},
15168string_with_idx{
"tang", 225},
15169string_with_idx{
"tangsa", 234},
15170string_with_idx{
"tangut", 225},
15171string_with_idx{
"tavt", 226},
15172string_with_idx{
"telu", 227},
15173string_with_idx{
"telugu", 227},
15174string_with_idx{
"term", 38},
15175string_with_idx{
"terminal_punctuation", 38},
15176string_with_idx{
"tfng", 228},
15177string_with_idx{
"tglg", 229},
15178string_with_idx{
"thaa", 230},
15179string_with_idx{
"thaana", 230},
15180string_with_idx{
"thai", 231},
15181string_with_idx{
"tibetan", 232},
15182string_with_idx{
"tibt", 232},
15183string_with_idx{
"tifinagh", 228},
15184string_with_idx{
"tirh", 233},
15185string_with_idx{
"tirhuta", 233},
15186string_with_idx{
"titlecase_letter", 59},
15187string_with_idx{
"tnsa", 234},
15188string_with_idx{
"toto", 235},
15189string_with_idx{
"ugar", 236},
15190string_with_idx{
"ugaritic", 236},
15191string_with_idx{
"uideo", 39},
15192string_with_idx{
"unassigned", 51},
15193string_with_idx{
"unified_ideograph", 39},
15194string_with_idx{
"unknown", 248},
15195string_with_idx{
"upper", 40},
15196string_with_idx{
"uppercase", 40},
15197string_with_idx{
"uppercase_letter", 60},
15198string_with_idx{
"vai", 237},
15199string_with_idx{
"vaii", 237},
15200string_with_idx{
"variation_selector", 41},
15201string_with_idx{
"vith", 238},
15202string_with_idx{
"vithkuqi", 238},
15203string_with_idx{
"vs", 41},
15204string_with_idx{
"wancho", 240},
15205string_with_idx{
"wara", 239},
15206string_with_idx{
"warang_citi", 239},
15207string_with_idx{
"wcho", 240},
15208string_with_idx{
"white_space", 42},
15209string_with_idx{
"wspace", 42},
15210string_with_idx{
"xid_continue", 43},
15211string_with_idx{
"xid_start", 44},
15212string_with_idx{
"xidc", 43},
15213string_with_idx{
"xids", 44},
15214string_with_idx{
"xpeo", 241},
15215string_with_idx{
"xsux", 242},
15216string_with_idx{
"yezi", 243},
15217string_with_idx{
"yezidi", 243},
15218string_with_idx{
"yi", 244},
15219string_with_idx{
"yiii", 244},
15220string_with_idx{
"z", 82},
15221string_with_idx{
"zanabazar_square", 245},
15222string_with_idx{
"zanb", 245},
15223string_with_idx{
"zinh", 246},
15224string_with_idx{
"zl", 83},
15225string_with_idx{
"zp", 84},
15226string_with_idx{
"zs", 85},
15227string_with_idx{
"zyyy", 247},
15228string_with_idx{
"zzzz", 248}};
15234 namespaceuni::detail {
15236constexpr binary_prop binary_prop_from_string(std::string_view s) {
15237 for(
const auto& c : tables::binary_prop_names) {
15238 const autores = propnamecomp(s, c.name);
15240 returnbinary_prop(c.value);
15242 returnbinary_prop::unknown;
15246constexpr
boolget_binary_prop<binary_prop::ascii>(char32_t c) {
15247 returncp_is_ascii(c);
15251constexpr
boolget_binary_prop<binary_prop::assigned>(char32_t c) {
15252 returncp_is_assigned(c);
15256constexpr
boolget_binary_prop<binary_prop::any>(char32_t c) {
15257 returncp_is_valid(c);
15260constexpr
boolis_unknown(binary_prop s) {
15261 returns == binary_prop::unknown;
ncbi::TMaskedQueryRegions mask
constexpr bool correct() const noexcept
constexpr size_t size() const noexcept
constexpr const char32_t * end() const noexcept
constexpr fixed_string(const T *) noexcept
constexpr fixed_string(const fixed_string &) noexcept
constexpr const char32_t * begin() const noexcept
constexpr char32_t operator[](size_t) const noexcept
constexpr fixed_string(std::initializer_list< char32_t >) noexcept
static bool is_valid(const char *num, int type, CONV_RESULT *cr)
#define CTRE_REGEX_INPUT_TYPE
#define CTLL_FORCE_INLINE
static vector< string > arr
bool operator<(const CEquivRange &A, const CEquivRange &B)
bool operator==(const CEquivRange &A, const CEquivRange &B)
CNcbiOstream & operator<<(CNcbiOstream &out, const CEquivRange &range)
std::ofstream out("events_result.xml")
main entry point for tests
#define test(a, b, c, d, e)
static DLIST_TYPE *DLIST_NAME() first(DLIST_LIST_TYPE *list)
static DLIST_TYPE *DLIST_NAME() last(DLIST_LIST_TYPE *list)
static DLIST_TYPE *DLIST_NAME() prev(DLIST_LIST_TYPE *list, DLIST_TYPE *item)
static DLIST_TYPE *DLIST_NAME() next(DLIST_LIST_TYPE *list, DLIST_TYPE *item)
static int lookup(const char *name, const struct lookup_int *table)
static SQLCHAR output[256]
static const char * str(char *buf, int n)
static const char arabic[]
static const char hebrew[]
CNcbiIstream & operator>>(CNcbiIstream &s, const getcontig &c)
string operator+(const CCgiEntry &e, const string &s)
CVect2< T > operator-(const CVect2< T > &v)
CVect2< NCBI_PROMOTE(int,U) > operator*(int v1, const CVect2< U > &v2)
CFields operator|(CFields, CFields)
CExpression operator>=(CREATED, time_point)
CExpression operator<=(time_point, CREATED)
sequence::ECompare Compare(const CSeq_loc &loc1, const CSeq_loc &loc2, CScope *scope)
Returns the sequence::ECompare containment relationship between CSeq_locs.
bool operator!=(const CNCBI_IPAddr &lhs, unsigned int rhs)
#define Z
printf format modifier for size_t
unsigned int
A callback function used to compare two keys in a database.
The blob sat and sat key Both must be positive integers</td > n< td > Non empty string The interpretation of the blob id depends on a processor Cassandra n processor expects the following format
static void hex(unsigned char c)
constexpr length_value_t length_and_value_of_utf16_code_point(uint16_t first_unit) noexcept
constexpr length_value_t length_and_value_of_utf8_code_point(uint8_t first_unit) noexcept
constexpr char32_t value_of_trailing_utf8_code_point(uint8_t unit, bool &correct) noexcept
constexpr bool exists_in(T, list< Ts... >) noexcept
constexpr auto size(list< Ts... >) noexcept
constexpr auto concat(list< As... >, list< Bs... >) noexcept -> list< As..., Bs... >
typename conditional_helper< V >::template type< A, B > conditional
constexpr auto remove_item(T, list< Ts... >) noexcept
constexpr auto pop_and_get_front(list< Head, As... >, T=T()) noexcept -> list_pop_pair< Head, list< As... >>
constexpr auto pop_front(list< T, As... >) noexcept -> list< As... >
constexpr auto pop_front_and_push_front(T item, list< As... > l)
constexpr auto front(list< Head, As... >, T=T()) noexcept -> Head
constexpr auto push_front(T, list< As... >) noexcept -> list< T, As... >
fixed_string(const CharT(&)[N]) -> fixed_string< N-1 >
constexpr auto rotate(list< Ts... >) -> decltype((list<>{}+...+rotate_item< Ts >{}))
constexpr auto add_item(T item, list< Ts... > l) noexcept
constexpr bool empty(list< Ts... >) noexcept
const string version
version string
string_type::value_type char_type
The character type used by the parser.
double value_type
The numeric datatype used by the parser.
const GenericPointer< typename T::ValueType > T2 value
const GenericPointer< typename T::ValueType > & pointer
GenericValue< UTF8<> > Value
GenericValue with UTF8 encoding.
#define F(x)
Make a parametrized function appear to have only one variable.
S & operator--(CNetRef< S > &r, int)
double r(size_t dimension_, const Int4 *score_, const double *prob_, double theta_)
void split(std::vector< std::string > *strVec, const std::string &str_, const std::string &split_)
static int match(PCRE2_SPTR start_eptr, PCRE2_SPTR start_ecode, uint16_t top_bracket, PCRE2_SIZE frame_size, pcre2_match_data *match_data, match_block *mb)
static const sljit_gpr r1
static const sljit_gpr r5
static SLJIT_INLINE sljit_ins l(sljit_gpr r, sljit_s32 d, sljit_gpr x, sljit_gpr b)
static const sljit_gpr r4
static const sljit_gpr r6
static const sljit_gpr r3
static const sljit_gpr r2
constexpr anything(term< V >) noexcept
constexpr anything() noexcept
static constexpr auto rule(term< A >, term< A >) -> ctll::pop_input
static constexpr auto rule(empty_stack_symbol, epsilon) -> ctll::accept
static constexpr auto rule(Expected, term< V >) -> std::enable_if_t< std::is_constructible_v< Expected, term< V >>, ctll::pop_input >
static constexpr auto rule(...) -> ctll::reject
static constexpr auto apply(Action, InputSymbol, Subject subject)
static constexpr auto value
constexpr bool correct() const noexcept
constexpr const char32_t * end() const noexcept
constexpr const char32_t * begin() const noexcept
constexpr size_t size() const noexcept
constexpr char32_t operator[](size_t i) const noexcept
constexpr bool is_same_as(const fixed_string< M > &rhs) const noexcept
constexpr fixed_string(const T(&input)[N+1]) noexcept
constexpr fixed_string(const fixed_string &other) noexcept
constexpr static auto apply(Action, term< V >, empty_subject) -> empty_subject
constexpr static auto apply(Action, epsilon, empty_subject) -> empty_subject
constexpr static auto apply(Action, term< V >, Subject) -> Subject
constexpr static auto apply(Action, epsilon, Subject) -> Subject
constexpr friend auto operator+(list< Ts... >, not_selected) -> list< Ts... >
constexpr friend auto operator+(list< Ts... >, wrapper< Y >) -> list< Ts..., Y >
static constexpr auto check(T)
static constexpr auto select(T)
static constexpr auto check(...)
static constexpr auto select(Y)
constexpr list_pop_pair()=default
constexpr neg_set(term< V >) noexcept
constexpr neg_set() noexcept
constexpr auto operator+(placeholder) const noexcept
static constexpr auto trampoline_decide(Subject, std::index_sequence< Pos... >) noexcept
static constexpr auto move(ctll::pop_input, Terminal, Stack, Subject) noexcept
static constexpr auto trampoline_decide(Subject subject={}) noexcept
ctll::conditional< IgnoreUnknownActions, ignore_unknown< ActionSelector >, identity< ActionSelector > > Actions
static constexpr auto move(ctll::accept, Terminal, Stack, Subject) noexcept
static constexpr auto move(push< Content... > string, Terminal, Stack stack, Subject subject) noexcept
static constexpr auto decide(Stack previous_stack, Subject previous_subject) noexcept
static constexpr auto _input
static constexpr bool correct_with
static constexpr auto move(push< term< V >, Content... >, term< V >, Stack stack, Subject) noexcept
static constexpr auto move(ctll::reject, Terminal, Stack, Subject) noexcept
static constexpr auto move(push< anything, Content... >, term< T >, Stack stack, Subject) noexcept
decltype(trampoline_decide< Subject >()) output
static constexpr auto move(epsilon, Terminal, Stack stack, Subject subject) noexcept
static constexpr auto get_previous_term() noexcept
static constexpr auto get_current_term() noexcept
constexpr range() noexcept
constexpr friend auto operator+(list< Ts... >, rotate_item< T >) noexcept -> list< T, Ts... >
constexpr set(term< V >) noexcept
static constexpr auto value
int g(Seg_Gsm *spe, Seq_Mtf *psm, Thd_Gsm *tdg)
bool operator>(const typename tree< T, tree_node_allocator >::iterator_base &one, const typename tree< T, tree_node_allocator >::iterator_base &two)
static Uint4 letter(char c)
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4