keysyms: Update using latest xorgproto

This fixes a typo and improves comments.

xorgproto commit: cd33097fc779f280925c6d6bbfbd5150f93ca5bc
Relevant MR: https://gitlab.freedesktop.org/xorg/proto/xorgproto/-/merge_requests/84
master
Pierre Le Marre 2024-02-08 07:41:39 +01:00 committed by Wismill
parent dd3e214003
commit ed2dc978b1
2 changed files with 357 additions and 324 deletions

View File

@ -102,14 +102,52 @@ SOFTWARE.
* existing legacy keysym values in the range 0x0100 to 0x20ff.
*
* Where several mnemonic names are defined for the same keysym in this
* file, all but the first one listed should be considered deprecated,
* unless the comment explicitly states the alias, e.g.:
* file, the first one listed is considered the "canonical" name. This
* is the name that should be used when retrieving a keysym name from
* its code. The next names are considered "aliases" to the canonical
* name.
*
* Aliases are made explicit by writing in their comment "alias for",
* followed by the corresponding canonical name. Example:
*
* #define XKB_KEY_dead_tilde 0xfe53
* #define XKB_KEY_dead_perispomeni 0xfe53 // alias for dead_tilde
*
* Additionally, a keysym can be explicitly deprecated by starting the
* comment with "deprecated".
* The rules to consider a keysym mnemonic name deprecated are:
*
* 1. A legacy keysym with its Unicode mapping in parentheses is
* deprecated (see above).
*
* 2. A keysym name is *explicitly* deprecated by starting its comment
* with "deprecated". Examples:
*
* #define XKB_KEY_L1 0xffc8 // deprecated alias for F11
* #define XKB_KEY_quoteleft 0x0060 // deprecated
*
* 3. A keysym name is *explicitly* *not* deprecated by starting its
* comment with "non-deprecated alias". Examples:
*
* #define XKB_KEY_dead_tilde 0xfe53
* #define XKB_KEY_dead_perispomeni 0xfe53 // non-deprecated alias for dead_tilde
*
* 4. If none of the previous rules apply, an alias is *implicitly*
* deprecated if there is at least one previous name for the
* corresponding keysym that is *not* explicitly deprecated.
*
* Examples:
*
* // SingleCandidate is the canonical name
* #define XKB_KEY_SingleCandidate 0xff3c
* // Hangul_SingleCandidate is deprecated because it is an alias
* // and it does not start with "non-deprecated alias"
* #define XKB_KEY_Hangul_SingleCandidate 0xff3c // Single candidate
*
* // guillemotleft is the canonical name, but it is deprecated
* #define XKB_KEY_guillemotleft 0x00ab // deprecated alias for guillemetleft (misspelling)
* // guillemetleft is not deprecated, because the keysym has no endorsed name before it.
* #define XKB_KEY_guillemetleft 0x00ab // U+00AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
* // The following hypothetical name is deprecated because guillemetleft come before.
* #define XKB_KEY_guillemetleft2 0x00ab
*
* Mnemonic names for keysyms are defined in this file with lines
* that match one of these Perl regular expressions:
@ -156,7 +194,10 @@ SOFTWARE.
* e.g. keysyms removals.
*
* Therefore, it is advised to proceed to no removal and to make a new
* name canonical only 10 years after its introduction.
* name canonical only 10 years after its introduction. This means that
* some keysyms may have their first listed name deprecated during the
* period of transition. Once this period is over, the deprecated name
* should be moved after the new canonical name.
*/
#define XKB_KEY_VoidSymbol 0xffffff /* Void symbol */
@ -193,7 +234,7 @@ SOFTWARE.
#define XKB_KEY_Kanji 0xff21 /* Kanji, Kanji convert */
#define XKB_KEY_Muhenkan 0xff22 /* Cancel Conversion */
#define XKB_KEY_Henkan_Mode 0xff23 /* Start/Stop Conversion */
#define XKB_KEY_Henkan 0xff23 /* Alias for Henkan_Mode */
#define XKB_KEY_Henkan 0xff23 /* non-deprecated alias for Henkan_Mode */
#define XKB_KEY_Romaji 0xff24 /* to Romaji */
#define XKB_KEY_Hiragana 0xff25 /* to Hiragana */
#define XKB_KEY_Katakana 0xff26 /* to Katakana */
@ -242,7 +283,7 @@ SOFTWARE.
#define XKB_KEY_Help 0xff6a /* Help */
#define XKB_KEY_Break 0xff6b
#define XKB_KEY_Mode_switch 0xff7e /* Character set switch */
#define XKB_KEY_script_switch 0xff7e /* Alias for Mode_switch */
#define XKB_KEY_script_switch 0xff7e /* non-deprecated alias for Mode_switch */
#define XKB_KEY_Num_Lock 0xff7f
/* Keypad functions, keypad numbers cleverly chosen to map to ASCII */
@ -388,7 +429,7 @@ SOFTWARE.
#define XKB_KEY_ISO_Level5_Shift 0xfe11
#define XKB_KEY_ISO_Level5_Latch 0xfe12
#define XKB_KEY_ISO_Level5_Lock 0xfe13
#define XKB_KEY_ISO_Group_Shift 0xff7e /* Alias for Mode_switch */
#define XKB_KEY_ISO_Group_Shift 0xff7e /* non-deprecated alias for Mode_switch */
#define XKB_KEY_ISO_Group_Latch 0xfe06
#define XKB_KEY_ISO_Group_Lock 0xfe07
#define XKB_KEY_ISO_Next_Group 0xfe08
@ -426,7 +467,7 @@ SOFTWARE.
#define XKB_KEY_dead_acute 0xfe51
#define XKB_KEY_dead_circumflex 0xfe52
#define XKB_KEY_dead_tilde 0xfe53
#define XKB_KEY_dead_perispomeni 0xfe53 /* alias for dead_tilde */
#define XKB_KEY_dead_perispomeni 0xfe53 /* non-deprecated alias for dead_tilde */
#define XKB_KEY_dead_macron 0xfe54
#define XKB_KEY_dead_breve 0xfe55
#define XKB_KEY_dead_abovedot 0xfe56
@ -444,9 +485,9 @@ SOFTWARE.
#define XKB_KEY_dead_horn 0xfe62
#define XKB_KEY_dead_stroke 0xfe63
#define XKB_KEY_dead_abovecomma 0xfe64
#define XKB_KEY_dead_psili 0xfe64 /* alias for dead_abovecomma */
#define XKB_KEY_dead_psili 0xfe64 /* non-deprecated alias for dead_abovecomma */
#define XKB_KEY_dead_abovereversedcomma 0xfe65
#define XKB_KEY_dead_dasia 0xfe65 /* alias for dead_abovereversedcomma */
#define XKB_KEY_dead_dasia 0xfe65 /* non-deprecated alias for dead_abovereversedcomma */
#define XKB_KEY_dead_doublegrave 0xfe66
#define XKB_KEY_dead_belowring 0xfe67
#define XKB_KEY_dead_belowmacron 0xfe68
@ -475,9 +516,9 @@ SOFTWARE.
#define XKB_KEY_dead_O 0xfe87
#define XKB_KEY_dead_u 0xfe88
#define XKB_KEY_dead_U 0xfe89
#define XKB_KEY_dead_small_schwa 0xfe8a /* deprecated, use dead_schwa instead */
#define XKB_KEY_dead_capital_schwa 0xfe8b /* deprecated, use dead_SCHWA instead */
#define XKB_KEY_dead_small_schwa 0xfe8a /* deprecated alias for dead_schwa */
#define XKB_KEY_dead_schwa 0xfe8a
#define XKB_KEY_dead_capital_schwa 0xfe8b /* deprecated alias for dead_SCHWA */
#define XKB_KEY_dead_SCHWA 0xfe8b
#define XKB_KEY_dead_greek 0xfe8c
@ -693,7 +734,7 @@ SOFTWARE.
#define XKB_KEY_diaeresis 0x00a8 /* U+00A8 DIAERESIS */
#define XKB_KEY_copyright 0x00a9 /* U+00A9 COPYRIGHT SIGN */
#define XKB_KEY_ordfeminine 0x00aa /* U+00AA FEMININE ORDINAL INDICATOR */
#define XKB_KEY_guillemotleft 0x00ab /* deprecated misspelling. Use guillemetleft instead. */
#define XKB_KEY_guillemotleft 0x00ab /* deprecated alias for guillemetleft (misspelling) */
#define XKB_KEY_guillemetleft 0x00ab /* U+00AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */
#define XKB_KEY_notsign 0x00ac /* U+00AC NOT SIGN */
#define XKB_KEY_hyphen 0x00ad /* U+00AD SOFT HYPHEN */
@ -709,9 +750,9 @@ SOFTWARE.
#define XKB_KEY_periodcentered 0x00b7 /* U+00B7 MIDDLE DOT */
#define XKB_KEY_cedilla 0x00b8 /* U+00B8 CEDILLA */
#define XKB_KEY_onesuperior 0x00b9 /* U+00B9 SUPERSCRIPT ONE */
#define XKB_KEY_masculine 0x00ba /* deprecated inconsistent name (see ordfeminine), use ordmasculine instead */
#define XKB_KEY_masculine 0x00ba /* deprecated alias for ordmasculine (inconsistent name) */
#define XKB_KEY_ordmasculine 0x00ba /* U+00BA MASCULINE ORDINAL INDICATOR */
#define XKB_KEY_guillemotright 0x00bb /* deprecated misspelling. Use guillemotright instead. */
#define XKB_KEY_guillemotright 0x00bb /* deprecated alias for guillemetright (misspelling) */
#define XKB_KEY_guillemetright 0x00bb /* U+00BB RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */
#define XKB_KEY_onequarter 0x00bc /* U+00BC VULGAR FRACTION ONE QUARTER */
#define XKB_KEY_onehalf 0x00bd /* U+00BD VULGAR FRACTION ONE HALF */
@ -1033,7 +1074,7 @@ SOFTWARE.
#define XKB_KEY_kana_N 0x04dd /* U+30F3 KATAKANA LETTER N */
#define XKB_KEY_voicedsound 0x04de /* U+309B KATAKANA-HIRAGANA VOICED SOUND MARK */
#define XKB_KEY_semivoicedsound 0x04df /* U+309C KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK */
#define XKB_KEY_kana_switch 0xff7e /* Alias for Mode_switch */
#define XKB_KEY_kana_switch 0xff7e /* non-deprecated alias for Mode_switch */
/*
* Arabic
@ -1130,7 +1171,7 @@ SOFTWARE.
#define XKB_KEY_Arabic_farsi_yeh 0x10006cc /* deprecated alias for Farsi_yeh */
#define XKB_KEY_Arabic_yeh_baree 0x10006d2 /* U+06D2 ARABIC LETTER YEH BARREE */
#define XKB_KEY_Arabic_heh_goal 0x10006c1 /* U+06C1 ARABIC LETTER HEH GOAL */
#define XKB_KEY_Arabic_switch 0xff7e /* Alias for Mode_switch */
#define XKB_KEY_Arabic_switch 0xff7e /* non-deprecated alias for Mode_switch */
/*
* Cyrillic
@ -1318,7 +1359,7 @@ SOFTWARE.
#define XKB_KEY_Greek_IOTA 0x07c9 /* U+0399 GREEK CAPITAL LETTER IOTA */
#define XKB_KEY_Greek_KAPPA 0x07ca /* U+039A GREEK CAPITAL LETTER KAPPA */
#define XKB_KEY_Greek_LAMDA 0x07cb /* U+039B GREEK CAPITAL LETTER LAMDA */
#define XKB_KEY_Greek_LAMBDA 0x07cb /* alias for Greek_LAMDA */
#define XKB_KEY_Greek_LAMBDA 0x07cb /* non-deprecated alias for Greek_LAMDA */
#define XKB_KEY_Greek_MU 0x07cc /* U+039C GREEK CAPITAL LETTER MU */
#define XKB_KEY_Greek_NU 0x07cd /* U+039D GREEK CAPITAL LETTER NU */
#define XKB_KEY_Greek_XI 0x07ce /* U+039E GREEK CAPITAL LETTER XI */
@ -1343,7 +1384,7 @@ SOFTWARE.
#define XKB_KEY_Greek_iota 0x07e9 /* U+03B9 GREEK SMALL LETTER IOTA */
#define XKB_KEY_Greek_kappa 0x07ea /* U+03BA GREEK SMALL LETTER KAPPA */
#define XKB_KEY_Greek_lamda 0x07eb /* U+03BB GREEK SMALL LETTER LAMDA */
#define XKB_KEY_Greek_lambda 0x07eb /* alias for Greek_lamda */
#define XKB_KEY_Greek_lambda 0x07eb /* non-deprecated alias for Greek_lamda */
#define XKB_KEY_Greek_mu 0x07ec /* U+03BC GREEK SMALL LETTER MU */
#define XKB_KEY_Greek_nu 0x07ed /* U+03BD GREEK SMALL LETTER NU */
#define XKB_KEY_Greek_xi 0x07ee /* U+03BE GREEK SMALL LETTER XI */
@ -1358,7 +1399,7 @@ SOFTWARE.
#define XKB_KEY_Greek_chi 0x07f7 /* U+03C7 GREEK SMALL LETTER CHI */
#define XKB_KEY_Greek_psi 0x07f8 /* U+03C8 GREEK SMALL LETTER PSI */
#define XKB_KEY_Greek_omega 0x07f9 /* U+03C9 GREEK SMALL LETTER OMEGA */
#define XKB_KEY_Greek_switch 0xff7e /* Alias for Mode_switch */
#define XKB_KEY_Greek_switch 0xff7e /* non-deprecated alias for Mode_switch */
/*
* Technical
@ -1608,7 +1649,7 @@ SOFTWARE.
#define XKB_KEY_hebrew_shin 0x0cf9 /* U+05E9 HEBREW LETTER SHIN */
#define XKB_KEY_hebrew_taw 0x0cfa /* U+05EA HEBREW LETTER TAV */
#define XKB_KEY_hebrew_taf 0x0cfa /* deprecated */
#define XKB_KEY_Hebrew_switch 0xff7e /* Alias for Mode_switch */
#define XKB_KEY_Hebrew_switch 0xff7e /* non-deprecated alias for Mode_switch */
/*
* Thai
@ -1721,7 +1762,7 @@ SOFTWARE.
#define XKB_KEY_Hangul_MultipleCandidate 0xff3d /* Multiple candidate */
#define XKB_KEY_Hangul_PreviousCandidate 0xff3e /* Previous candidate */
#define XKB_KEY_Hangul_Special 0xff3f /* Special symbols */
#define XKB_KEY_Hangul_switch 0xff7e /* Alias for Mode_switch */
#define XKB_KEY_Hangul_switch 0xff7e /* non-deprecated alias for Mode_switch */
/* Hangul Consonant Characters */
#define XKB_KEY_Hangul_Kiyeog 0x0ea1 /* U+3131 HANGUL LETTER KIYEOK */

View File

@ -2592,303 +2592,295 @@ static const char *keysym_names =
#endif
static const uint16_t keysym_name_G[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 868, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 1086, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4049, 1115, 0, 0, 0, 917, 0, 0, 1753, 0, 3420, 1735, 1457, 0, 0, 2914,
0, 2762, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 563, 0, 0, 2123, 1353, 0,
0, 0, 0, 3316, 0, 0, 734, 0, 0, 0, 2403, 0, 0, 0, 0, 0, 0, 2668, 0,
4061, 0, 0, 0, 0, 0, 0, 0, 0, 4175, 0, 2599, 0, 0, 0, 0, 4350, 0, 1610,
407, 0, 2488, 0, 0, 0, 2530, 0, 0, 0, 0, 3229, 0, 4237, 3889, 0, 0, 22,
0, 0, 0, 0, 2873, 0, 3501, 3373, 0, 638, 0, 0, 0, 0, 0, 0, 0, 0, 3322,
0, 0, 0, 0, 0, 0, 3068, 0, 0, 831, 0, 3287, 2687, 0, 0, 0, 0, 2958, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 695, 780, 0, 0, 0, 0, 0, 0, 136, 2149, 1446,
0, 4092, 0, 2547, 1473, 4566, 2147, 0, 656, 3737, 0, 0, 0, 0, 0, 0,
1569, 1334, 200, 0, 0, 0, 0, 1947, 0, 0, 0, 0, 0, 0, 4460, 0, 4024, 0,
0, 69, 0, 0, 0, 0, 4387, 0, 0, 0, 0, 0, 1780, 0, 1443, 0, 0, 0, 4152,
1580, 0, 284, 0, 3505, 0, 3872, 0, 0, 0, 0, 2795, 4462, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1292, 0, 0, 4362, 0, 2454, 0, 0,
1868, 0, 0, 0, 0, 2160, 0, 0, 0, 32, 727, 0, 0, 2818, 0, 1071, 0, 2922,
0, 0, 0, 0, 1367, 0, 0, 0, 0, 1483, 0, 0, 2308, 0, 0, 0, 0, 1421, 0, 0,
2253, 0, 0, 0, 0, 0, 0, 0, 0, 4373, 0, 0, 0, 4330, 4323, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 561, 0, 0, 0, 1678, 0, 0, 1324, 0, 0, 0, 1690, 2186, 0,
4186, 0, 0, 0, 4171, 0, 1954, 0, 781, 0, 0, 0, 0, 0, 291, 0, 3992, 0,
0, 0, 0, 0, 0, 0, 0, 0, 1702, 1523, 0, 2906, 1503, 1876, 0, 0, 0, 0, 0,
4173, 3993, 0, 0, 0, 0, 0, 0, 0, 353, 0, 0, 0, 3254, 0, 0, 0, 844, 0,
1181, 2781, 0, 0, 2291, 796, 4448, 1416, 0, 0, 0, 0, 0, 1670, 0, 0, 0,
0, 0, 0, 0, 0, 0, 1957, 0, 0, 0, 2774, 0, 664, 0, 0, 2095, 3593, 4621,
0, 2629, 0, 0, 2619, 177, 4201, 0, 1878, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 889, 773, 0, 0, 0, 261, 1096, 0, 2802, 0, 0, 0, 0, 0, 0, 0, 1117,
1434, 0, 0, 1891, 0, 0, 2671, 0, 2398, 0, 0, 0, 0, 0, 2894, 0, 0, 1605,
0, 0, 0, 0, 0, 1553, 0, 0, 0, 441, 0, 0, 3314, 3499, 1764, 4475, 3264,
0, 230, 2907, 3545, 1881, 0, 2007, 0, 0, 0, 276, 0, 0, 1970, 0, 0, 0,
2243, 2300, 3639, 50, 0, 0, 662, 2071, 2431, 794, 0, 0, 76, 4334, 0, 0,
0, 0, 4523, 0, 524, 2519, 2765, 45, 31, 0, 4144, 3415, 0, 0, 0, 0, 0,
0, 0, 1339, 0, 0, 0, 2348, 0, 0, 0, 0, 0, 0, 1354, 2271, 3167, 0, 2659,
0, 110, 0, 1626, 4201, 1468, 0, 2168, 0, 3251, 0, 1279, 0, 1414, 192,
0, 2303, 917, 0, 2249, 0, 0, 0, 0, 204, 0, 2280, 3765, 0, 3456, 0, 0,
0, 0, 383, 0, 0, 0, 0, 4374, 0, 338, 2996, 2546, 0, 1232, 3643, 0,
1303, 0, 0, 3545, 2166, 826, 0, 0, 0, 0, 0, 0, 0, 0, 0, 960, 0, 0, 0,
4398, 1692, 1861, 4364, 0, 1152, 0, 0, 1081, 0, 3493, 1715, 2219, 3771,
1970, 4012, 2439, 2562, 0, 0, 0, 4332, 2287, 0, 4265, 216, 4257, 661,
4004, 2422, 0, 3870, 0, 0, 0, 0, 0, 2564, 225, 1185, 1372, 3667, 2089,
1839, 0, 0, 0, 2319, 0, 0, 703, 0, 0, 0, 130, 1094, 0, 0, 0, 0, 0, 0,
0, 4594, 4405, 2496, 1812, 0, 0, 2487, 0, 0, 1797, 1628, 0, 0, 4602, 0,
0, 4368, 0, 0, 0, 1006, 335, 387, 0, 0, 0, 0, 0, 0, 0, 0, 4017, 2048,
333, 0, 385, 0, 3563, 0, 3853, 0, 0, 0, 2050, 2629, 1442, 0, 0, 0, 382,
0, 2581, 2986, 839, 2913, 0, 0, 3467, 0, 4030, 2322, 0, 1288, 0, 0, 0,
0, 0, 0, 469, 0, 0, 0, 0, 0, 0, 0, 2357, 0, 3542, 0, 0, 0, 616, 0,
4145, 0, 0, 0, 0, 1905, 0, 0, 2069, 0, 0, 0, 3431, 0, 848, 0, 0, 0,
2440, 0, 0, 0, 64, 0, 3540, 0, 2001, 2881, 0, 1032, 676, 0, 2913, 2240,
1248, 0, 0, 0, 0, 1048, 0, 0, 3676, 1976, 0, 1207, 0, 1196, 0, 1139,
3142, 0, 2805, 0, 0, 0, 0, 0, 582, 0, 0, 0, 0, 596, 1997, 0, 2350, 0,
4534, 0, 782, 0, 1958, 0, 1406, 0, 0, 0, 3922, 0, 1382, 3788, 3584, 0,
0, 3440, 0, 0, 596, 0, 0, 0, 254, 0, 330, 0, 0, 0, 0, 0, 149, 975, 0,
0, 187, 0, 0, 0, 644, 0, 4437, 0, 483, 3373, 692, 0, 0, 0, 0, 543, 0,
0, 0, 0, 2913, 236, 232, 0, 0, 1897, 3276, 1556, 0, 3760, 3365, 0, 0,
0, 0, 0, 2009, 1325, 0, 707, 0, 2517, 3342, 0, 2753, 1940, 0, 410,
4608, 0, 0, 1235, 3703, 2267, 0, 742, 1860, 0, 0, 0, 4032, 0, 1112,
3793, 0, 0, 1336, 1604, 1708, 0, 664, 0, 4046, 0, 0, 0, 176, 940, 0, 0,
1421, 0, 0, 844, 3043, 2047, 0, 0, 0, 542, 0, 0, 931, 1836, 1659, 1500,
0, 0, 2486, 0, 1335, 3432, 0, 1730, 1729, 0, 4483, 4316, 0, 0, 0, 2157,
654, 0, 1004, 0, 0, 0, 4381, 0, 0, 0, 0, 793, 1302, 855, 2245, 0, 0,
2603, 0, 0, 855, 0, 1485, 0, 0, 4492, 3042, 2389, 1003, 671, 1965, 0,
4456, 0, 3016, 0, 4245, 0, 0, 829, 0, 2608, 0, 284, 1692, 0, 0, 0, 0,
0, 2471, 0, 0, 1152, 0, 3120, 0, 0, 1212, 0, 0, 0, 1579, 0, 3225, 3499,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1683, 3507, 0, 0, 911, 0, 0, 0, 0,
1653, 0, 1444, 1510, 731, 2001, 2671, 988, 0, 0, 0, 3331, 607, 0, 1033,
58, 1723, 923, 0, 0, 0, 0, 239, 0, 2347, 0, 0, 745, 0, 0, 0, 0, 0, 0,
0, 1512, 0, 0, 0, 1272, 0, 0, 1055, 395, 0, 973, 0, 1409, 0, 2396, 0,
0, 4011, 2341, 367, 0, 0, 0, 1871, 0, 3680, 0, 53, 0, 0, 0, 0, 0, 0, 0,
2655, 1884, 2532, 0, 0, 2168, 1645, 0, 2637, 1686, 0, 0, 733, 3786,
1116, 4493, 1142, 0, 3437, 3420, 0, 0, 0, 1609, 1869, 0, 4478, 0, 0, 0,
0, 2391, 912, 0, 4377, 0, 0, 3622, 3440, 0, 1400, 4276, 1153, 2275, 0,
0, 4037, 1252, 0, 0, 3562, 1262, 527, 0, 0, 0, 3293, 505, 0, 1404,
1355, 0, 1594, 0, 0, 1223, 0, 4526, 0, 0, 0, 1335, 0, 3394, 571, 0, 0,
2775, 547, 0, 0, 3328, 1256, 0, 0, 2841, 1532, 0, 0, 0, 2232, 3731, 2,
0, 1733, 1306, 0, 0, 2519, 3304, 0, 0, 4158, 0, 0, 0, 4286, 4016, 2071,
0, 4023, 3512, 783, 4325, 3994, 0, 0, 4361, 0, 1964, 0, 0, 0, 85, 0,
1325, 2001, 2306, 0, 0, 0, 0, 0, 0, 4040, 0, 835, 1337, 60, 0, 0, 1197,
2258, 4029, 0, 0, 1865, 0, 2290, 0, 0, 2926, 3237, 3018, 0, 0, 1436, 0,
0, 4527, 0, 1131, 0, 192, 580, 4314, 0, 1457, 679, 2538, 1248, 431,
3921, 0, 0, 0, 0, 0, 429, 0, 735, 0, 1716, 0, 0, 0, 0, 378, 3984, 0,
825, 0, 0, 0, 2233, 0, 1249, 1123, 3647, 0, 0, 491, 1440, 0, 709, 75,
2302, 0, 485, 0, 1569, 0, 0, 0, 610, 2498, 0, 0, 3297, 0, 2597, 1282,
708, 0, 519, 195, 0, 0, 0, 2156, 424, 1717, 0, 0, 1774, 0, 0, 2976,
1148, 0, 0, 0, 1516, 4227, 1455, 1721, 2062, 0, 0, 0, 1693, 1867, 0,
73, 0, 0, 4425, 433, 0, 1867, 0, 0, 4437, 0, 0, 3027, 0, 0, 4579, 816,
2127, 0, 0, 4597, 0, 0, 3384, 2351, 3508, 0, 495, 656, 0, 0, 2956,
4402, 0, 493, 3129, 821, 260, 0, 2189, 4321, 0, 0, 0, 789, 1807, 0,
3014, 3928, 254, 0, 3410, 3129, 2376, 0, 0, 1903, 1823, 0, 827, 1584,
4318, 0, 0, 517, 0, 0, 1483, 0, 4364, 0, 4602, 1955, 3915, 3132, 0, 0,
4389, 0, 0, 535, 1936, 2357, 3477, 4291, 0, 4207, 1240, 1476, 4597,
132, 0, 0, 0, 0, 4533, 0, 3522, 0, 11, 3069, 4539, 1464, 2112, 721,
3111, 305, 1270, 873, 2200, 0, 2893, 1150, 1614, 0, 0, 2014, 3754, 181,
4470, 1303, 3373, 4052, 0, 0, 0, 391, 2158, 4004, 0, 0, 0, 0, 2745, 0,
1054, 527, 1776, 715, 0, 4411, 0, 4118, 525, 1447, 2190, 0, 991, 4407,
3614, 0, 950, 962, 3908, 603, 0, 2820, 4276, 0, 2519, 1426, 0, 4539,
3155, 989, 0, 2366, 2378, 3584, 2616, 0, 0, 429, 2509, 0, 0, 82, 3899,
2517, 2995, 227, 180, 27, 0, 0, 1742, 938, 0, 510, 1933, 1948, 3960,
499, 1255, 0, 0, 1124, 0, 421, 969, 0, 4352, 0, 0, 3295, 0, 0, 2945,
4480, 3368, 2958, 0, 1407, 0, 785, 0, 780, 1022, 0, 1804, 1799, 0,
3827, 0, 0, 2100, 0, 0, 3404, 0, 0, 2076, 2346, 1478, 344, 3854, 3439,
0, 3893, 4110, 705, 2845, 0, 0, 1448, 543, 2986, 2360, 0, 270, 3570, 0,
3473, 4368, 0, 1995, 1011, 0, 4321, 0, 0, 0, 791, 3572, 0, 1000, 0, 0,
396, 3217, 0, 0, 0, 2191, 0, 1125, 3519, 0, 1900, 214, 0, 0, 0, 0, 0,
82, 948, 2347, 0, 0, 0, 0, 0, 0, 2439, 1973, 786, 3512, 0, 66, 0, 531,
2308, 960, 0, 0, 0, 0, 0, 0, 3424, 849, 1444, 376, 2338, 1231, 1849,
4356, 4354, 318, 1377, 0, 1805, 0, 1622, 4335, 799, 0, 4441, 0, 0, 966,
2015, 236, 4607, 4326, 0, 3190, 352, 2588, 2467, 1730, 396, 0, 0, 0, 0,
3974, 0, 4313, 0, 0, 0, 1306, 551, 3465, 340, 629, 345, 638, 4471,
1952, 4002, 0, 0, 0, 0, 3950, 0, 1922, 2926, 0, 2971, 4092, 0, 985, 0,
0, 2236, 1614, 1612, 851, 3388, 0, 3039, 3211, 0, 0, 4214, 3317, 0, 0,
1943, 796, 2341, 2602, 0, 0, 3007, 3020, 2175, 1418, 1599, 0, 4445,
1539, 1600, 2348, 3508, 1366, 547, 2777, 1114, 1986, 0, 4038, 2046,
480, 0, 0, 383, 0, 4535, 0, 360, 0, 0, 2373, 0, 2242, 0, 0, 0, 0, 1581,
0, 517, 1983, 4334, 1117, 2656, 2531, 3446, 2758, 0, 1674, 69, 0, 2909,
741, 0, 447, 0, 0, 2594, 3921, 0, 0, 3942, 1506, 342, 3200, 458, 0,
1122, 0, 0, 557, 95, 3652, 2902, 79, 1319, 0, 4599, 628, 1566, 0, 0, 0,
4561, 2021, 2678, 4081, 1783, 1749, 1194, 0, 419, 981, 0, 2282, 44,
467, 4318, 0, 0, 652, 1026, 4610, 3874, 1881, 0, 4335, 0, 0, 0, 308,
1663, 2119, 965, 0, 4216, 1737, 464, 0, 0, 4429, 1471, 813, 0, 388,
1374, 0, 0, 0, 17, 0, 4608, 0, 0, 2213, 0, 717, 0, 0, 0, 3842, 0, 2577,
0, 0, 1737, 0, 0, 0, 283, 0, 0, 0, 2011, 0, 0, 0, 743, 834, 3155, 0, 0,
0, 499, 0, 2591, 1336, 2035, 3365, 0, 1189, 3837, 4549, 649, 0, 2420,
523, 0, 3055, 0, 2450, 0, 1452, 0, 2596, 451, 4386, 2232, 0, 1215,
3509, 608, 0, 923, 0, 1376, 4256, 4600, 2094, 0, 0, 0, 0, 47, 1088,
2403, 1083, 0, 0, 4217, 4525, 370, 1257, 294, 3192, 456, 761, 1861,
723, 0, 0, 4257, 0, 0, 0, 2483, 4151, 0, 1883, 0, 0, 2552, 0, 192, 0,
2612, 0, 0, 530, 0, 2039, 0, 0, 4000, 1744, 0, 0, 0, 0, 0, 0, 0, 0, 83,
0, 141, 2521, 0, 2114, 528, 868, 0, 0, 91, 4059, 0, 1046, 0, 0, 1384,
3301, 4619, 194, 527, 2222, 78, 1388, 4482, 0, 2437, 0, 1739, 3875,
211, 4592, 688, 2178, 2450, 0, 412, 0, 0, 0, 2979, 624, 0, 3968, 4334,
0, 3487, 2267, 4607, 0, 3256, 0, 4009, 591, 0, 986, 3408, 3823, 0, 0,
0, 1112, 0, 0, 2114, 2482, 4367, 0, 4389, 0, 0, 3062, 2740, 1183, 0,
2064, 0, 0, 1842, 1484, 1637, 0, 0, 119, 2256, 0, 1297, 0, 2983, 41, 0,
0, 3261, 4008, 2127, 2456, 0, 0, 0, 1470, 0, 0, 0, 118, 3064, 2109, 0,
3424, 0, 3880, 0, 2573, 4316, 3161, 0, 0, 2386, 2223, 0, 183, 1361, 0,
1184, 1714, 1003, 0, 181, 397, 4398, 2136, 0, 3059, 4471, 4574, 1275,
4420, 0, 0, 0, 3105, 668, 0, 1657, 0, 4333, 1205, 0, 402, 0, 0, 504,
3715, 976, 2085, 2999, 0, 2498, 0, 2150, 272, 0, 1007, 1864, 1541, 0,
2509, 4215, 1482, 0, 3932, 462, 0, 2226, 1392, 847, 923, 0, 0, 0, 0,
3703, 0, 60, 0, 3197, 689, 0, 0, 0, 0, 1244, 56, 4249, 0, 0, 602, 0,
1362, 1970, 0, 1189, 720, 3966, 0, 3939, 4503, 1474, 3782, 309, 0, 0,
2640, 2210, 904, 3072, 426, 2990, 1770, 3059, 0, 0, 1512, 0, 3422,
3859, 0, 4489, 1401, 2273, 570, 390, 2514, 4180, 1561, 2196, 596, 4617,
1209, 0, 947, 0, 3707, 0, 933, 3833, 0, 842, 1334, 0, 4471, 9, 2411,
2815, 0, 112, 2077, 121, 0, 0, 0, 3574, 0, 0, 788, 0, 0, 4216, 0, 1485,
0, 1919, 4046, 0, 623, 3930, 0, 0, 2995, 0, 0, 1963, 0, 0, 4290, 0, 0,
991, 1504, 2540, 0, 0, 0, 199, 684, 2268, 0, 0, 770, 4152, 60, 2828, 0,
1986, 0, 579, 2454, 0, 0, 1607, 1213, 3993, 2532, 1121, 0, 3839, 0,
945, 3334, 0, 1413, 1731, 250, 0, 0, 0, 1153, 1104, 1927, 1075, 4521,
0, 1730, 1328, 1406, 0, 1162, 1121, 3845, 1796, 0, 2376, 663, 3584,
278, 0, 1547, 3394, 0, 0, 0, 0, 0, 1636, 0, 2167, 3923, 0, 705, 1932,
0, 852, 0, 4433, 0, 0, 0, 0, 0, 1524, 3195, 0, 0, 3246, 0, 2552, 1345,
849, 545, 3616, 4318, 3112, 2026, 1202, 2266, 810, 0, 1020, 1811, 1058,
1831, 2019, 4216, 0, 0, 3666, 758, 0, 0, 1295, 1732, 0, 0, 0, 3428,
300, 0, 3389, 3947, 1294, 113, 0, 0, 0, 0, 490, 0, 1250, 0, 4246, 520,
0, 484, 452, 648, 887, 0, 915, 0, 56, 1096, 4306, 0, 771, 0, 0, 0,
2625, 0, 0, 890, 1282, 3838, 0, 1252, 2545, 3318, 4104, 0, 2615, 0,
870, 4124, 2127, 0, 2203, 0, 0, 0, 89, 3076, 189, 0, 0, 4170, 4480, 0,
2348, 163, 0, 1810, 2940, 0, 0, 0, 124, 2435, 835, 2902, 1733, 245, 0,
0, 870, 0, 0, 2477, 3345, 666, 0, 0, 0, 0, 4290, 2922, 3986, 0, 0, 596,
2946, 1297, 492, 0, 3212, 0, 0, 0, 2321, 0, 598, 960, 0, 1220, 0, 0, 0,
3399, 0, 1197, 0, 0, 0, 2455, 0, 522, 0, 0, 576, 2183, 536, 2275, 4092,
682, 2355, 3159, 0, 0, 0, 4226, 3309, 2011, 1859, 1998, 0, 1443, 1463,
0, 0, 0, 1984, 0, 1052, 0, 473, 649, 0, 0, 0, 1734, 0, 599, 793, 4428,
0, 3363, 0, 0, 2564, 2452, 1357, 0, 4134, 4285, 0, 0, 2334, 98, 2617,
4142, 2926, 1238, 4505, 987, 145, 0, 1263, 0, 328, 0, 3859, 0, 2777, 0,
3083, 0, 810, 0, 0, 4184, 0, 0, 3922, 0, 1013, 1401, 0, 0, 943, 4466,
86, 1985, 303, 1235, 0, 1970, 868, 2987, 0, 0, 0, 1753, 0, 0, 0, 0,
2231, 0, 3921, 0, 1373, 0, 0, 1161, 2774, 0, 2075, 1737, 4387, 0, 1891,
0, 0, 1129, 989, 555, 2216, 2115, 0, 3300, 2515, 33, 0, 2168, 0, 1884,
1118, 0, 3228, 0, 1422, 1616, 2332, 1971, 0, 0, 1892, 3461, 0, 2595, 0,
874, 0, 2511, 0, 782, 32, 2498, 0, 1496, 1602, 3338, 4039, 0, 1051,
3298, 0, 0, 0, 574, 4246, 0, 2042, 0, 0, 0, 1695, 0, 0, 760, 4252,
3750, 0, 792, 4414, 222, 4211, 0, 3149, 264, 0, 1240, 2035, 0, 0, 888,
1568, 1366, 2215, 0, 3392, 1305, 1430, 3140, 3038, 0, 0, 4165, 0, 4132,
3841, 2173, 0, 1277, 735, 0, 36, 0, 304, 1671, 18, 2120, 0, 4004, 0, 0,
1606, 1243, 0, 0, 2759, 2857, 2031, 1657, 0, 0, 0, 0, 89, 3257, 4614,
2372, 512, 0, 2288, 0, 0, 4237, 1250, 0, 0, 689, 0, 0, 4441, 2221,
2162, 678, 3839, 2115, 0, 3729, 0, 610, 2634, 909, 4448, 448, 2356,
4348, 2928, 3759, 0, 2015, 2153, 1348, 0, 0, 0, 1832, 3026, 1187, 0,
29, 1031, 1049, 583, 0, 1757, 1469, 854, 318, 0, 3032, 2044, 0, 0, 0,
1251, 0, 4002, 0, 0, 3156, 0, 886, 0, 0, 1560, 1605, 0, 0, 0, 0, 4587,
2403, 0, 1121, 0, 0, 0, 4358, 1265, 0, 360, 0, 409, 0, 0, 0, 4464, 0,
2893, 3954, 0, 0, 927, 1330, 0, 0, 0, 4415, 1667, 2039, 302, 752, 3191,
944, 0, 0, 1640, 4315, 3232, 3095, 81, 0, 2565, 289, 2217, 708, 0, 0,
611, 688, 0, 2958, 3230, 0, 782, 0, 0, 2717, 803, 91, 0, 0, 436, 0, 0,
78, 0, 0, 0, 0, 3877, 987, 594, 0, 68, 0, 3149, 0, 1435, 823, 4380,
2978, 4574, 834, 0, 3266, 0, 0, 872, 0, 3074, 1032, 1663, 0, 3500, 0,
0, 3780, 0, 0, 4020, 1414, 2473, 0, 4262, 0, 0, 1477, 0, 2404, 1387, 0,
1425, 2955, 602, 593, 2485, 2043, 589, 0, 0, 734, 0, 0, 674, 0, 1680,
1833, 0, 3470, 2726, 0, 0, 1719, 2945, 2813, 0, 202, 1174, 0, 0, 3310,
1708, 2824, 0, 0, 3934, 4599, 793, 1170, 793, 547, 0, 0, 0, 1236, 0, 0,
0, 4086, 0, 0, 2128, 0, 2242, 0, 1712, 3994, 1363, 1324, 1351, 0, 762,
611, 2679, 29, 0, 4618, 0, 1210, 4341, 577, 0, 3508, 2454, 1598, 1887,
105, 2924, 0, 4479, 0, 417, 3833, 2295, 476, 0, 1799, 0, 0, 0, 2889,
1664, 2390, 585, 0, 0, 0, 0, 4401, 0, 0, 0, 2558, 1716, 0, 3604, 1853,
0, 1630, 3949, 2149, 4352, 0, 0, 1603, 511, 1921, 346, 0, 1588, 486,
261, 0, 292, 0, 2336, 1600, 2122, 4579, 1254, 4231, 4090, 219, 3720, 0,
0, 1939, 2055, 765, 2084, 0, 0, 0, 0, 4427, 4010, 0, 4223, 2581, 0,
3158, 0, 1338, 42, 0, 0, 4368, 0, 2990, 0, 3767, 646, 0, 0, 0, 0, 4102,
0, 775, 2182, 686, 0, 888, 0, 1689, 0, 992, 2216, 3895, 2326, 536,
3524, 192, 0, 0, 3998, 0, 2054, 2863, 755, 65, 0, 399, 0, 1976, 0,
1711, 921, 0, 2103, 0, 0, 2551, 0, 987, 2054, 4310, 0, 929, 2412, 2267,
2339, 0, 1035, 950, 3822, 329, 0, 2245, 4023, 0, 0, 528, 1510, 2180, 0,
1280, 1049, 0, 2638, 2410, 3267, 3553, 0, 4474, 1108, 0, 0, 4310, 1321,
716, 0, 0, 66, 0, 931, 0, 1772, 108, 0, 867, 0, 0, 0, 2636, 0, 0, 1487,
3644, 0, 2933, 0, 0, 3726, 1761, 1821, 1768, 0, 0, 4504, 2429, 0, 2583,
0, 491, 0, 2061, 321, 1871, 0, 179, 0, 2378, 0, 0, 0, 0, 1726, 0, 0, 0,
0, 0, 1977, 3694, 1577, 0, 0, 0, 0, 0, 3880, 3409, 1676, 0, 3513, 0, 0,
0, 4389, 1625, 392, 0, 4059, 1101, 3443, 0, 0, 4414, 420, 2090, 1723,
4393, 2073, 1230, 0, 233, 0, 64, 4047, 1015, 0, 280, 769, 0, 3116,
1540, 0, 2637, 868, 0, 0, 1694, 3624, 0, 996, 3832, 2768, 551, 0, 0,
4332, 597, 0, 955, 1967, 2351, 0, 0, 2162, 0, 1097, 4080, 4303, 0, 0,
2596, 169, 0, 3323, 0, 0, 1621, 0, 1207, 1925, 40, 0, 1379, 0, 2568,
2200, 0, 0, 2230, 2517, 1465, 732, 3007, 0, 0, 0, 4022, 2420, 0, 0,
1709, 2499, 0, 0, 408, 0, 2729, 4191, 0, 1922, 3125, 2123, 1162, 3337,
1061, 0, 0, 4613, 831, 48, 653, 0, 0, 0, 2854, 0, 0, 2097, 738, 4112,
3482, 760, 0, 41, 3732, 2339, 649, 2031, 889, 2533, 2228, 0, 0, 711,
1229, 72, 0, 3476, 1984, 1155, 657, 4051, 72, 4584, 2108, 4067, 362, 0,
405, 188, 1070, 1436, 1501, 0, 3608, 3362, 0, 0, 3069, 0, 4026, 0,
3252, 0, 2688, 3776, 0, 2011, 0, 930, 317, 425, 1484, 1053, 3945, 0,
2877, 0, 2986, 584, 2366, 0, 3638, 1307, 1433, 0, 805, 3960, 573, 0,
2130, 0, 55, 0, 1137, 2418, 0, 0, 2560, 0, 3164, 0, 0, 406, 1774, 0,
2336, 3059, 0, 0, 0, 0, 2110, 0, 0, 0, 70, 4537, 4337, 0, 2483, 2219,
0, 73, 718, 345, 1828, 2340, 0, 777, 3236, 1056, 794, 2152, 0, 2374,
3592, 4318, 571, 2897, 236, 0, 2510, 0, 0, 4265, 265, 606, 4214, 99,
2377, 1154, 500, 2125, 1163, 858, 3356, 2026, 4311, 1112, 1224, 0,
4200, 1079, 3471, 0, 2476, 202, 2561, 1340, 1205, 0, 2024, 0, 581, 0,
4377, 382, 0, 3905, 322, 2770, 3299, 0, 2078, 485, 1064, 162, 1818,
180, 0, 279, 4411, 4268, 0, 0, 1428, 2432, 340, 0, 0, 2053, 830, 55, 0,
4188, 611, 3976, 131, 1815, 2182, 84, 2253, 1201, 2467, 1196, 572, 0,
0, 1003, 2379, 0, 867, 0, 0, 0, 0, 0, 0, 505, 0, 1080, 4504, 0, 2588,
26, 2511, 2437, 3922, 3077, 0, 1941, 0, 0, 0, 1352, 0, 0, 1692, 0, 0,
338, 0, 563, 0, 1941, 3948, 0, 711, 0, 0, 1532, 812, 1408, 1682, 1413,
148, 3032, 1839, 0, 3242, 2318, 2125, 933, 0, 0, 4100, 0, 2924, 2980,
1429, 0, 1940, 0, 1915, 4036, 2174, 2000, 142, 1994, 4197, 35, 321,
2689, 974, 0, 1471, 3746, 2148, 4142, 4507, 0, 0, 430, 3884, 0, 0, 486,
768, 0, 0, 417, 2494, 154, 4507, 1666, 909, 0, 4308, 0, 0, 1913, 3245,
0, 569, 3216, 0, 0, 4038, 0, 0, 0, 2546, 3427, 477, 776, 2288, 3418, 0,
507, 49, 4524, 0, 0, 0, 1325, 325, 1525, 2536, 1424, 2007, 0, 1703,
1866, 1233, 1005, 2069, 1703, 0, 0, 1045, 0, 2099, 2719, 2526, 3763, 0,
1462, 2049, 0, 1318, 4522, 0, 0, 0, 0, 0, 2551, 0, 0, 1844, 300, 3532,
3431, 25, 0, 0, 0, 1109, 3458, 425, 2338, 0, 4481, 434, 0, 0, 0, 0, 0,
929, 602, 0, 2798, 0, 0, 2209, 1195, 0, 459, 2461, 3700, 2498, 0, 1379,
1008, 3235, 0, 0, 918, 481, 3063, 3335, 2131, 1794, 0, 2417, 3037, 0,
3953, 2382, 2800, 1063, 0, 130, 508, 617, 0, 953, 0, 2200, 1428, 0,
509, 1090, 706, 0, 0, 1053, 1078, 1095, 3225, 0, 279, 4481, 1017, 261,
0, 769, 3943, 0, 904, 2208, 4550, 1043, 1455, 4042, 0, 1615, 0, 0, 232,
0, 4529, 4364, 291, 0, 2695, 1372, 0, 4093, 30, 4458, 0, 0, 1641, 1591,
0, 153, 0, 4125, 4607, 3057, 0, 0, 0, 0, 0, 0, 489, 2628, 0, 0, 3776,
2763, 0, 4203, 3253, 1433, 0, 3664, 4492, 1090, 2882, 1172, 534, 2107,
0, 0, 4372, 2308, 2283, 1068, 0, 0, 0, 1178, 0, 0, 513, 0, 0, 3913,
2052, 3633, 0, 1740, 763, 2495, 2480, 0, 0, 523, 1829, 1063, 937, 3636,
4050, 3903, 1740, 1349, 754, 0, 162, 338, 0, 749, 0, 0, 0, 0, 2914,
3975, 593, 3893, 0, 630, 691, 1613, 1226, 3769, 736, 0, 0, 1491, 0,
2752, 0, 53, 0, 1298, 2746, 644, 786, 337, 0, 0, 0, 1472, 1598, 0,
1855, 525, 0, 0, 1784, 2000, 0, 0, 0, 1905, 0, 964, 0, 3424, 0, 2308,
733, 1151, 0, 0, 3882, 3829, 4368, 835, 3388, 624, 1803, 0, 0, 2647,
1332, 755, 0, 185, 247, 0, 1856, 2252, 0, 850, 1342, 4074, 375, 359,
198, 2961, 0, 4040, 2496, 4058, 801, 0, 111, 2402, 0, 1110, 1312, 4064,
1485, 585, 0, 0, 25, 537, 3268, 188, 3913, 1939, 3431, 1288, 4564, 0,
0, 4054, 0, 2422, 0, 1356, 1134, 91, 1543, 567, 2351, 1708, 0, 298, 0,
1222, 0, 527, 2512, 2120, 0, 3788, 353, 2581, 1274, 2230, 843, 748, 0,
1248, 0, 1459, 4518, 0, 0, 1818, 517, 3677, 0, 1725, 276, 4496, 0,
3446, 1981, 1094, 0, 0, 4216, 2501, 3849, 256, 4388, 840, 537, 0, 2186,
1361, 3669, 291, 0, 508, 875, 4372, 0, 0, 353, 0, 15, 918, 0, 1648,
3664, 2040, 2794, 0, 355, 4557, 0, 713, 787, 1782, 3242, 2635, 0, 908,
0, 3502, 1131, 1524, 1455, 4302, 2859, 16, 1083, 3320, 2213, 0, 0, 0,
3614, 898, 2664, 1640, 0, 978, 0, 3580, 1575, 1617, 61, 0, 758, 2169,
1058, 637, 417, 4227, 3482, 0, 1988, 3192, 385, 361, 0, 2922, 2515, 0,
4523, 3395, 0, 0, 2809, 953, 0, 2551, 0, 1870, 1092, 1620, 281, 0, 597,
211, 0, 1128, 0, 295, 3033, 1892, 0, 0, 3197, 971, 2556, 0, 841, 1783,
58, 0, 0, 278, 2744, 1494, 2448, 4018, 0, 954, 2160, 125, 0, 407, 399,
4200, 57, 2688, 929, 1662, 2994, 3363, 3476, 0, 0, 3595, 1969, 115, 0,
661, 0, 0, 0, 0, 0, 3305, 2408, 4247, 1049, 4039, 2014, 0, 0, 105, 0,
1424, 1345, 0, 2381, 0, 3168, 527, 3329, 912, 0, 2425, 3453, 2298,
2106, 639, 1438, 0, 0, 1151, 1067, 2378, 4021, 560, 3974, 2754, 1311,
1672, 1277, 4529, 3452, 2670, 0, 1752, 0, 2938, 3676, 230, 0, 788, 0,
0, 0, 62, 3571, 1787, 0, 2804, 1907, 2862, 1978, 0, 0, 787, 733, 99, 0,
1662, 3599, 0, 2812, 0, 1396, 2144, 0, 4503, 0, 0, 2537, 2051, 415,
4294, 1664, 471, 4340, 323, 0, 1311, 1297, 0, 0, 2308, 0, 779, 4, 1103,
4330, 2442, 0, 3335, 0, 410, 531, 985, 2976, 1567, 0, 2631, 0, 769,
804, 1268, 282, 0, 2565, 4016, 1596, 2513, 4139, 0, 991, 1705, 0, 106,
575, 4249, 784, 641, 4059, 0, 0, 409, 1376, 0, 2102, 1028, 0, 0, 4191,
2864, 2566, 1412, 0, 915, 1069, 100, 0, 1893, 3193, 2953, 0, 0, 2288,
0, 4520, 4249, 316, 2656, 1679, 0, 0, 3977, 2442, 0, 172, 2917, 0,
3671, 3445, 1176, 0, 0, 0, 0, 0, 1420, 2830, 996, 0, 0, 3400, 1255,
405, 4100, 479, 2814, 0, 3721, 1301, 3927, 3937, 1306, 0, 3618, 2372,
2491, 4458, 1046, 0, 1620, 3408, 985, 1277, 1061, 132, 2866, 97, 3735,
2192, 3608, 1612, 1503, 3895, 0, 38, 3902, 0, 0, 1099, 426, 2281, 0, 0,
509, 0, 1350, 0, 1529, 0, 0, 0, 1275, 1743, 3135, 0, 2612, 0, 0, 3016,
0, 692, 3102, 0, 862, 0, 3245, 0, 0, 0, 2568, 46, 4055, 1901, 764,
1128, 723, 2292, 2084, 1961, 0, 292, 0, 0, 0, 1121, 1959, 1203, 2409,
3790, 3260, 2185, 1274, 2701, 1253, 3058, 0, 2953, 1879, 2578, 0, 832,
425, 1739, 850, 487, 483, 469, 0, 511, 475, 1881, 1987, 860, 4489, 0,
0, 0, 1652, 0, 0, 0, 0, 4493, 0, 413, 519, 0, 1789, 3142, 1168, 0, 0,
612, 535, 0, 0, 103, 4165, 0, 3553, 0, 1302, 0, 2438, 0, 940, 1147,
3608, 1332, 719, 1032, 3148, 0, 2063, 927, 0, 0, 3054, 0
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1675, 0, 2816, 0,
1042, 0, 490, 0, 2754, 0, 0, 0, 0, 91, 0, 0, 0, 2536, 0, 0, 0, 226, 0,
0, 1419, 0, 0, 0, 0, 0, 650, 1573, 0, 0, 0, 0, 0, 0, 0, 0, 0, 554,
3981, 0, 0, 0, 3013, 0, 0, 3374, 0, 0, 0, 0, 0, 0, 2399, 3823, 2705, 0,
154, 0, 0, 1234, 0, 2378, 3563, 0, 373, 0, 0, 0, 316, 1528, 0, 2949, 0,
1003, 0, 1390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4341, 0, 0, 0, 0, 0, 0,
0, 3953, 0, 0, 1760, 4147, 0, 0, 966, 0, 0, 2684, 0, 0, 0, 0, 784, 0,
2851, 655, 0, 0, 0, 0, 4316, 0, 3996, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3837,
0, 1350, 1469, 2150, 0, 0, 0, 0, 3125, 0, 0, 0, 0, 2453, 1892, 0, 484,
0, 0, 0, 0, 0, 0, 0, 0, 0, 462, 2363, 0, 0, 0, 3486, 2373, 0, 1560,
863, 3024, 2755, 0, 0, 248, 0, 3229, 0, 681, 0, 0, 3048, 4176, 0, 0,
3451, 2837, 2929, 0, 0, 3725, 0, 0, 2628, 3124, 789, 2858, 0, 0, 0, 0,
3686, 0, 0, 748, 0, 0, 3977, 3988, 0, 1610, 0, 443, 0, 0, 0, 0, 0,
2724, 0, 791, 2168, 0, 0, 726, 0, 0, 0, 1496, 0, 100, 0, 0, 0, 0, 302,
3059, 0, 4388, 0, 1916, 0, 0, 0, 0, 1863, 0, 3863, 0, 2321, 3300, 1445,
2365, 0, 0, 0, 0, 3555, 3282, 1679, 0, 1743, 1935, 0, 0, 0, 1995, 0,
2491, 0, 0, 3503, 2364, 1771, 0, 0, 0, 4092, 447, 463, 0, 0, 4168, 0,
3865, 0, 1244, 0, 1509, 4164, 3233, 248, 1777, 0, 0, 1655, 0, 3718, 0,
138, 0, 0, 0, 0, 1776, 30, 0, 0, 0, 2396, 0, 0, 3541, 0, 484, 1383,
899, 0, 0, 848, 3119, 0, 1457, 0, 0, 1139, 0, 0, 0, 3910, 1027, 0, 708,
3584, 0, 2415, 0, 0, 0, 0, 764, 1645, 0, 0, 1784, 772, 4369, 0, 4253,
1854, 0, 0, 3735, 2048, 0, 1356, 0, 3612, 0, 0, 0, 0, 4237, 2260, 1160,
205, 3082, 0, 1806, 98, 0, 0, 0, 0, 0, 1105, 3665, 87, 0, 2494, 0,
2462, 0, 896, 1820, 0, 419, 3994, 2127, 0, 38, 0, 2441, 0, 3266, 1844,
1785, 4391, 2745, 0, 0, 3195, 0, 0, 3848, 0, 0, 1567, 2881, 0, 2368, 0,
644, 3143, 2442, 2132, 0, 2781, 0, 0, 3932, 0, 0, 0, 0, 0, 773, 0,
1991, 0, 3910, 4059, 0, 2309, 0, 0, 849, 555, 823, 0, 533, 0, 0, 0,
2410, 0, 3420, 79, 1786, 0, 1050, 0, 0, 3631, 0, 0, 0, 0, 0, 472, 0,
1381, 0, 0, 1991, 4390, 0, 2881, 2689, 1389, 1739, 0, 3384, 0, 2558,
3451, 867, 0, 0, 0, 750, 0, 0, 0, 0, 3175, 1114, 0, 0, 3710, 0, 0, 0,
1088, 78, 0, 3195, 0, 0, 460, 1787, 0, 1023, 17, 1863, 0, 1004, 0, 0,
0, 787, 2741, 0, 2092, 0, 1532, 0, 0, 0, 3276, 0, 0, 583, 0, 2967,
2292, 0, 0, 3308, 1941, 3372, 4322, 0, 0, 1698, 2896, 0, 0, 929, 3573,
3193, 0, 0, 2181, 2117, 0, 288, 0, 0, 0, 685, 0, 90, 3771, 2039, 1046,
0, 0, 2216, 0, 2655, 0, 0, 26, 0, 1016, 2084, 0, 591, 0, 1942, 0, 1158,
0, 4213, 1853, 0, 4121, 2735, 0, 0, 1711, 1434, 0, 0, 0, 1247, 3608,
943, 0, 0, 3957, 0, 0, 2564, 482, 0, 0, 2238, 0, 0, 0, 3456, 1659,
3793, 3222, 2039, 0, 0, 0, 1321, 2398, 4383, 0, 0, 0, 167, 0, 492,
3132, 2470, 0, 0, 0, 1239, 938, 0, 1738, 4394, 3035, 3266, 0, 0, 189,
2232, 3138, 0, 0, 3749, 1137, 2535, 2735, 0, 0, 2897, 2711, 15, 1027,
0, 306, 2229, 2016, 3174, 0, 0, 0, 0, 173, 1012, 2039, 1965, 1644,
3328, 1325, 0, 0, 87, 0, 0, 0, 118, 2968, 3659, 3285, 0, 519, 1660,
2099, 0, 0, 1659, 686, 0, 0, 0, 0, 47, 134, 1790, 0, 3904, 2750, 1045,
0, 0, 3535, 0, 3449, 0, 2955, 1258, 0, 3072, 2173, 528, 1662, 0, 0,
4124, 0, 647, 3650, 410, 0, 0, 1838, 2677, 0, 485, 0, 0, 3078, 4399, 0,
0, 3700, 0, 0, 2252, 752, 0, 0, 0, 1132, 1597, 0, 0, 1573, 3215, 0, 0,
2351, 310, 0, 0, 3778, 755, 1959, 4151, 816, 0, 1986, 0, 0, 0, 0, 2346,
0, 3290, 1550, 0, 0, 0, 0, 0, 2069, 0, 0, 0, 2921, 241, 4339, 0, 2796,
0, 2315, 0, 4261, 2035, 1399, 1268, 3305, 0, 0, 3158, 0, 1448, 0, 678,
0, 0, 840, 1236, 2448, 3140, 0, 0, 0, 0, 0, 4327, 0, 587, 0, 3776, 0,
3701, 0, 0, 0, 2655, 0, 0, 0, 1978, 0, 0, 0, 0, 0, 358, 1498, 3445,
886, 0, 0, 0, 0, 0, 3980, 2738, 0, 0, 835, 0, 2298, 0, 1370, 0, 0,
1756, 2312, 1848, 1648, 1723, 0, 0, 0, 1574, 0, 0, 0, 0, 1492, 743, 0,
0, 0, 2416, 0, 0, 0, 0, 0, 2717, 0, 2373, 0, 0, 1914, 1000, 4102, 0,
1088, 0, 0, 2101, 521, 2163, 186, 979, 1511, 0, 0, 2220, 3396, 0, 2675,
0, 0, 1627, 521, 3053, 3385, 0, 2901, 0, 280, 0, 2779, 0, 4282, 0, 0,
0, 0, 260, 3536, 3705, 416, 2032, 0, 1075, 2368, 0, 3396, 0, 1605, 0,
0, 4384, 0, 4101, 1881, 0, 0, 1130, 0, 0, 0, 996, 315, 0, 0, 0, 2362,
0, 148, 0, 4230, 0, 0, 944, 0, 1181, 1047, 778, 1788, 0, 1066, 0, 3247,
784, 0, 786, 0, 0, 0, 0, 1372, 0, 0, 1876, 0, 153, 438, 1676, 4157, 0,
0, 3419, 4140, 388, 0, 0, 0, 742, 1220, 0, 328, 0, 3753, 3079, 0, 4356,
3581, 1002, 0, 1706, 1227, 3629, 0, 3543, 0, 3340, 0, 1282, 0, 0, 0,
3428, 0, 0, 75, 1918, 911, 1209, 156, 1316, 0, 0, 1331, 3506, 0, 2254,
0, 4103, 754, 2059, 0, 2445, 2536, 0, 0, 0, 0, 1720, 1060, 2281, 3400,
3095, 0, 0, 0, 2195, 1294, 0, 3097, 1352, 3303, 0, 1382, 1695, 1892, 0,
0, 1012, 0, 2774, 3024, 3998, 0, 0, 0, 0, 877, 1381, 1526, 0, 996,
1978, 681, 4235, 0, 2551, 4269, 0, 838, 2181, 3767, 0, 0, 0, 4044, 0,
0, 160, 0, 0, 0, 0, 240, 0, 0, 3569, 311, 0, 2662, 2157, 0, 0, 282, 0,
0, 3966, 3004, 4362, 458, 2934, 0, 0, 0, 215, 3121, 0, 3340, 4107,
2477, 0, 3874, 1786, 0, 1223, 1717, 0, 0, 0, 0, 0, 544, 0, 0, 3617, 0,
0, 3198, 0, 0, 0, 0, 0, 0, 0, 0, 2772, 0, 3854, 376, 4203, 2224, 3734,
0, 1793, 4160, 611, 0, 0, 2284, 1949, 0, 3861, 2017, 1683, 542, 544,
605, 0, 0, 4037, 890, 0, 0, 3840, 2316, 0, 0, 1830, 0, 0, 1959, 2092,
0, 3987, 0, 0, 0, 2238, 248, 893, 1869, 0, 0, 1779, 0, 0, 3736, 330, 0,
0, 0, 3710, 0, 83, 0, 2128, 0, 1827, 0, 0, 0, 323, 0, 0, 0, 701, 708,
863, 2613, 469, 0, 0, 626, 0, 0, 0, 0, 1410, 4066, 1027, 3660, 887,
847, 631, 0, 0, 0, 0, 0, 715, 2708, 761, 3030, 0, 0, 939, 2992, 0, 0,
3137, 0, 2858, 0, 2748, 184, 1400, 3862, 4129, 0, 0, 1906, 1263, 1257,
3311, 3630, 0, 0, 0, 1980, 0, 2273, 577, 3748, 0, 0, 2035, 1194, 2869,
858, 3791, 2693, 1954, 3623, 0, 1030, 0, 0, 0, 2479, 0, 0, 0, 1897,
331, 3528, 2478, 0, 1881, 0, 3921, 1390, 3894, 2423, 1642, 3661, 0, 0,
0, 4097, 0, 3678, 1028, 294, 993, 2040, 0, 0, 10, 2729, 0, 258, 188,
318, 2892, 2411, 3278, 411, 0, 0, 0, 1258, 2477, 0, 1002, 1626, 0, 0,
1295, 0, 368, 0, 0, 0, 0, 0, 4216, 0, 1747, 0, 1625, 0, 1953, 3095,
2640, 0, 1393, 415, 0, 0, 1854, 0, 2498, 1453, 1704, 0, 0, 1347, 0,
3892, 1006, 0, 1832, 0, 700, 3704, 1246, 0, 593, 654, 0, 0, 0, 0, 4013,
0, 1758, 0, 1425, 0, 2393, 455, 2965, 4184, 0, 0, 0, 0, 2186, 347,
3477, 0, 0, 1881, 0, 0, 318, 4300, 666, 0, 0, 0, 2525, 0, 0, 0, 0, 0,
1319, 1191, 892, 0, 2041, 91, 662, 0, 0, 2121, 0, 854, 0, 904, 3064, 0,
2934, 0, 647, 0, 4028, 3957, 0, 1447, 1434, 0, 0, 626, 0, 0, 2137,
3551, 0, 900, 3517, 0, 2186, 2176, 0, 5, 1729, 2574, 1299, 4005, 719,
0, 832, 0, 0, 0, 0, 1870, 0, 379, 0, 0, 246, 61, 1066, 3914, 1499,
1669, 971, 0, 0, 0, 2228, 0, 0, 941, 3621, 0, 0, 0, 0, 2332, 0, 0,
2624, 0, 0, 1956, 1154, 0, 1072, 0, 0, 3239, 3053, 0, 915, 884, 3519,
2407, 3329, 3206, 603, 0, 0, 631, 4328, 767, 0, 1912, 833, 0, 3759,
2330, 1644, 182, 2661, 2231, 0, 673, 0, 0, 3909, 1861, 0, 691, 2450,
1697, 781, 0, 3074, 0, 788, 0, 0, 0, 0, 77, 0, 0, 1574, 3096, 0, 0,
4033, 0, 0, 3905, 1750, 3123, 1653, 1876, 0, 0, 1405, 47, 1935, 2794,
0, 3609, 3588, 0, 797, 0, 1708, 3070, 2605, 0, 754, 293, 1847, 80, 0,
0, 611, 443, 0, 4137, 276, 1899, 0, 0, 0, 0, 2834, 0, 340, 3070, 1569,
3466, 2160, 0, 688, 0, 1260, 2923, 0, 355, 0, 291, 0, 0, 373, 0, 0,
1954, 2150, 3259, 2097, 2653, 1624, 0, 3779, 0, 0, 1063, 382, 0, 2241,
3943, 1998, 0, 0, 587, 0, 1347, 0, 924, 0, 0, 0, 2670, 1902, 2769, 0,
0, 1242, 0, 0, 0, 3048, 1310, 0, 3543, 0, 0, 2355, 0, 0, 1603, 4317,
1965, 0, 0, 2511, 918, 0, 3150, 0, 3781, 2227, 1481, 0, 1069, 0, 1878,
482, 1653, 4038, 0, 153, 0, 1273, 3671, 2825, 4115, 0, 229, 0, 0, 0, 0,
654, 426, 663, 1153, 2344, 0, 0, 0, 0, 3881, 2320, 0, 3919, 1095, 0,
2033, 0, 0, 3681, 2413, 0, 767, 697, 1867, 321, 0, 601, 1852, 1013,
2427, 0, 985, 2484, 0, 3245, 0, 728, 1299, 0, 0, 0, 2721, 0, 0, 0,
2192, 309, 0, 0, 2062, 0, 0, 2631, 2363, 874, 910, 1910, 0, 0, 2481,
3685, 4188, 1185, 1731, 3307, 0, 2485, 1089, 1580, 0, 0, 2716, 0, 0, 0,
2348, 2168, 0, 0, 1151, 0, 0, 242, 0, 162, 564, 0, 0, 739, 0, 0, 0, 0,
1758, 1620, 0, 1252, 1881, 3114, 0, 0, 1924, 3206, 0, 903, 859, 1850,
0, 911, 0, 278, 0, 0, 0, 0, 1262, 0, 1568, 1628, 0, 2607, 0, 0, 1969,
710, 2199, 2488, 1577, 0, 3738, 0, 0, 2335, 0, 2428, 1591, 3357, 768,
264, 0, 0, 2153, 0, 4172, 1571, 0, 0, 4274, 0, 1374, 757, 1560, 0,
3770, 0, 0, 0, 2721, 131, 0, 0, 912, 4168, 0, 1348, 2513, 574, 2967, 0,
0, 3301, 3096, 1677, 2232, 0, 1727, 0, 0, 164, 1636, 0, 0, 3125, 0,
1719, 592, 0, 0, 1945, 2961, 0, 0, 0, 3669, 0, 316, 3002, 2285, 302,
1108, 3652, 0, 4252, 1308, 0, 33, 994, 0, 2300, 0, 4396, 345, 0, 0, 0,
0, 2146, 0, 0, 3022, 254, 0, 2900, 0, 1599, 3203, 2013, 0, 0, 0, 3116,
0, 3124, 675, 0, 3752, 2157, 148, 2489, 669, 0, 921, 2506, 3165, 749,
0, 2591, 2763, 0, 1521, 0, 2308, 2086, 3618, 4178, 0, 0, 0, 2473, 3796,
0, 969, 1554, 1707, 0, 0, 0, 0, 1925, 3081, 763, 0, 0, 1931, 0, 1355,
0, 2314, 2089, 4214, 0, 1682, 0, 71, 976, 0, 2982, 3904, 4068, 591,
1209, 0, 0, 0, 1641, 0, 965, 947, 2471, 1932, 0, 0, 1714, 0, 3995, 0,
0, 337, 0, 3798, 1966, 2456, 0, 1278, 1938, 0, 0, 173, 0, 0, 0, 496,
266, 0, 0, 0, 1553, 3815, 877, 0, 349, 0, 1313, 2103, 0, 4203, 0, 0, 0,
1771, 2377, 1203, 397, 0, 309, 0, 2770, 1403, 0, 0, 0, 0, 0, 3609,
3517, 0, 0, 844, 0, 0, 0, 0, 907, 1176, 558, 1815, 0, 66, 555, 0, 1214,
0, 1261, 0, 0, 0, 0, 3631, 0, 0, 2388, 0, 0, 2216, 123, 0, 0, 521, 116,
0, 0, 0, 851, 0, 3759, 0, 1554, 0, 0, 2670, 2647, 0, 1334, 916, 0, 0,
0, 3869, 927, 0, 2094, 2679, 3430, 0, 523, 369, 2303, 1666, 0, 0, 0,
3793, 0, 0, 3034, 0, 2006, 0, 4141, 3285, 0, 1165, 2159, 3097, 0, 0,
1280, 0, 1467, 1889, 0, 2402, 0, 0, 3351, 0, 2927, 0, 1274, 162, 1156,
1767, 0, 69, 1552, 189, 38, 680, 0, 3915, 2020, 4023, 0, 0, 4142, 3772,
0, 0, 1828, 2118, 0, 229, 0, 2184, 0, 338, 952, 2205, 0, 3061, 1941,
353, 0, 0, 2472, 3304, 940, 0, 3521, 0, 0, 0, 4170, 0, 0, 1185, 0, 0,
2517, 2695, 2345, 773, 706, 0, 0, 0, 702, 3498, 341, 0, 0, 254, 1467,
3786, 0, 1915, 0, 3631, 2861, 4101, 0, 1007, 2851, 0, 0, 0, 0, 0, 303,
971, 0, 1107, 1814, 0, 0, 2886, 1686, 284, 1118, 0, 3666, 0, 3689,
3842, 3320, 2162, 91, 2412, 83, 1067, 0, 1066, 0, 3606, 2965, 0, 2965,
0, 2418, 1799, 0, 2851, 0, 0, 3412, 3347, 574, 0, 1163, 0, 3307, 0,
3913, 39, 979, 0, 766, 3716, 1182, 581, 3419, 0, 0, 1468, 1026, 0, 0,
0, 1226, 393, 0, 0, 0, 0, 0, 1028, 0, 707, 0, 3005, 871, 0, 0, 3903,
3015, 656, 831, 0, 3171, 0, 3622, 0, 0, 357, 0, 3440, 508, 1931, 0,
2331, 0, 0, 107, 3239, 2886, 1909, 1582, 0, 29, 0, 1398, 2847, 2222, 0,
2104, 0, 1460, 447, 2399, 4185, 0, 1780, 0, 218, 2016, 2889, 717, 0, 0,
0, 0, 3509, 1953, 0, 1469, 0, 0, 889, 0, 533, 3229, 409, 305, 60, 0, 0,
656, 0, 3656, 1439, 1957, 0, 0, 0, 208, 428, 3857, 3803, 4075, 565,
2751, 0, 0, 0, 0, 509, 1601, 2340, 0, 1082, 1401, 2155, 2461, 1267, 0,
2974, 0, 1049, 0, 179, 0, 539, 2407, 1009, 2116, 2080, 1489, 0, 1412,
0, 0, 3158, 3157, 1114, 0, 0, 0, 0, 365, 4332, 3509, 0, 2927, 2733,
789, 0, 1346, 1140, 1984, 229, 950, 0, 2111, 3575, 0, 0, 0, 2450, 0,
2373, 0, 1299, 0, 2806, 0, 0, 1381, 0, 0, 0, 1405, 1661, 0, 0, 0, 1141,
1155, 0, 0, 0, 3624, 0, 0, 0, 0, 0, 0, 2638, 385, 0, 0, 2226, 0, 0, 0,
0, 0, 3544, 0, 0, 3902, 3857, 0, 0, 2454, 2820, 0, 0, 2393, 622, 659,
4364, 0, 0, 171, 349, 307, 0, 427, 1741, 0, 453, 4333, 0, 0, 636, 0,
2442, 69, 3056, 4389, 0, 0, 939, 0, 3974, 0, 0, 4281, 0, 3102, 356,
1673, 369, 3073, 4048, 0, 238, 2466, 342, 0, 2137, 2169, 2937, 0, 553,
0, 2670, 1038, 2862, 2559, 0, 4068, 4107, 2048, 2887, 1077, 0, 0, 3951,
0, 0, 1768, 0, 0, 3367, 1032, 0, 2858, 3370, 0, 0, 413, 2952, 2887,
2970, 2811, 0, 726, 3224, 4, 867, 461, 2538, 153, 563, 1560, 0, 884,
4200, 762, 4301, 1847, 0, 0, 2520, 201, 0, 0, 624, 2425, 364, 2351,
638, 0, 3421, 3881, 213, 75, 1909, 0, 2930, 3931, 744, 0, 3441, 461,
1354, 0, 448, 1901, 2555, 0, 0, 2115, 492, 0, 849, 653, 0, 0, 0, 0,
3486, 0, 392, 0, 0, 0, 4097, 0, 0, 0, 3824, 0, 0, 1424, 2546, 0, 624,
0, 1977, 0, 0, 2200, 0, 4285, 4231, 0, 1413, 0, 1678, 1798, 4204, 0,
3676, 1044, 2267, 3640, 0, 3397, 368, 0, 0, 2250, 3343, 0, 4277, 1346,
3977, 2684, 0, 0, 0, 2429, 723, 1092, 2414, 101, 456, 3977, 0, 2265, 0,
0, 0, 0, 2686, 0, 0, 0, 0, 0, 1811, 0, 1771, 2954, 0, 144, 0, 2204,
1066, 0, 3188, 36, 0, 42, 270, 868, 2341, 0, 1863, 3192, 3542, 0, 1865,
659, 1217, 3277, 0, 0, 0, 0, 206, 2189, 0, 2789, 3442, 1106, 2940,
2614, 0, 4047, 0, 0, 2825, 2149, 408, 0, 3633, 0, 2497, 2299, 0, 0,
375, 0, 0, 2522, 0, 0, 0, 0, 2820, 2686, 0, 0, 460, 0, 1749, 0, 0, 0,
0, 1040, 454, 1004, 0, 0, 0, 0, 1275, 0, 3419, 2195, 3925, 4078, 720,
3191, 3555, 0, 3023, 4122, 2270, 0, 0, 0, 122, 1332, 1994, 3557, 3975,
405, 0, 509, 1605, 0, 0, 0, 4057, 0, 0, 0, 0, 77, 0, 3066, 416, 0, 864,
0, 1503, 2680, 4297, 0, 646, 892, 3882, 1614, 0, 1060, 3489, 0, 671,
512, 3427, 3838, 807, 0, 1012, 0, 133, 0, 2493, 158, 1983, 954, 0, 0,
0, 0, 2428, 3341, 2857, 0, 504, 0, 2197, 0, 0, 0, 413, 2666, 210, 62,
3633, 0, 1792, 231, 1331, 1163, 0, 3500, 1584, 0, 0, 2058, 55, 0, 2133,
904, 2149, 0, 3078, 0, 76, 751, 532, 2355, 0, 1364, 1224, 0, 3883,
1371, 824, 0, 0, 1522, 0, 0, 0, 705, 3656, 2701, 0, 0, 0, 112, 1167, 0,
946, 868, 1315, 0, 2776, 57, 0, 0, 3891, 0, 0, 0, 4003, 0, 4186, 0,
1542, 0, 1867, 0, 3783, 0, 508, 0, 2306, 0, 159, 1867, 1097, 1567,
3509, 2664, 0, 1063, 1713, 0, 0, 2521, 463, 1439, 3901, 0, 0, 0, 2750,
0, 4130, 0, 2867, 0, 1463, 0, 3553, 0, 1264, 2212, 0, 3490, 3876, 3238,
0, 1130, 3431, 1016, 0, 3208, 0, 1611, 0, 0, 521, 0, 279, 3567, 4378,
620, 1261, 948, 0, 406, 1640, 0, 2703, 120, 185, 1457, 2473, 444, 2432,
3465, 3153, 3009, 1782, 1387, 1206, 4301, 4354, 0, 0, 0, 510, 0, 82, 0,
0, 1776, 0, 0, 2878, 0, 0, 2127, 2042, 1946, 0, 0, 482, 179, 2065,
2940, 4187, 0, 4198, 4239, 2026, 129, 0, 0, 4085, 0, 2463, 237, 609, 0,
503, 1535, 0, 0, 0, 0, 1903, 1683, 1213, 1683, 1275, 0, 0, 4229, 0,
1153, 3037, 2186, 650, 0, 2218, 0, 0, 0, 2853, 4152, 0, 0, 0, 1684, 0,
0, 3001, 1076, 1531, 4136, 514, 2223, 0, 122, 426, 2068, 0, 4242, 469,
2524, 2124, 0, 4393, 0, 1107, 0, 982, 0, 0, 3387, 0, 4325, 566, 0, 0,
93, 1085, 1380, 0, 3803, 3283, 1065, 4066, 699, 2172, 0, 1774, 0, 423,
2423, 0, 0, 1868, 95, 2025, 0, 2502, 0, 3271, 1521, 3098, 2621, 1871,
0, 532, 0, 2812, 0, 317, 0, 3737, 1136, 471, 47, 0, 4251, 1113, 1537,
2298, 0, 1217, 2484, 1430, 0, 413, 1597, 2857, 2060, 1296, 0, 0, 3917,
3855, 1676, 63, 0, 2060, 1316, 536, 0, 0, 1626, 2008, 1216, 1924, 0, 0,
1737, 1860, 1654, 0, 0, 4019, 1295, 348, 1843, 1462, 2410, 427, 1475,
1573, 2555, 2128, 1773, 1126, 0, 3359, 428, 0, 0, 1665, 1794, 3033,
4076, 0, 0, 1994, 586, 492, 0, 4291, 810, 0, 3082, 258, 1906, 324,
4342, 2994, 0, 0, 0, 1911, 8, 1132, 0, 519, 0, 0, 2158, 0, 489, 1161,
422, 1381, 222, 1630, 3390, 3198, 2820, 3197, 0, 3735, 0, 2786, 4069,
538, 3719, 0, 4184, 3819, 2592, 0, 4235, 1841, 3575, 0, 3464, 429, 732,
0, 1185, 2763, 2742, 873, 0, 4349, 2085, 0, 0, 585, 1896, 0, 3756,
2508, 0, 0, 0, 0, 0, 1982, 0, 1363, 0, 2755, 0, 2166, 2454, 2483, 0,
886, 0, 191, 3871, 332, 3807, 3135, 2161, 0, 0, 1525, 0, 4176, 667, 0,
2519, 3289, 3705, 0, 0, 2646, 233, 2796, 1151, 1477, 738, 1602, 3040,
686, 0, 496, 0, 0, 0, 2186, 0, 213, 871, 1731, 3502, 1354, 2287, 0, 0,
0, 2300, 0, 0, 0, 1687, 0, 4004, 1950, 166, 4213, 3484, 118, 0, 4380,
1076, 1165, 2297, 2291, 3707, 2000, 2931, 0, 0, 0, 0, 0, 2243, 390, 0,
348, 0, 2479, 0, 3366, 3715, 244, 0, 2385, 41, 528, 2336, 0, 0, 1285,
3238, 0, 0, 0, 306, 675, 1531, 133, 1177, 846, 0, 786, 0, 0, 1880,
2211, 2342, 3225, 40, 0, 0, 804, 574, 0, 1562, 1577, 0, 3185, 0, 527,
0, 252, 0, 3676, 2352, 0, 656, 0, 0, 3364, 487, 125, 2163, 1610, 96,
4083, 933, 3115, 3641, 544, 3112, 0, 337, 0, 0, 1888, 1967, 1294, 2965,
1852, 1728, 552, 3477, 1669, 1253, 1917, 1289, 160, 2184, 1165, 2917,
0, 1561, 4193, 3328, 1476, 0, 1072, 3956, 800, 1357, 3841, 0, 2844, 0,
0, 2879, 0, 2381, 1127, 0, 3128, 2968, 3694, 2061, 0, 2545, 606, 255,
529, 170, 3242, 1354, 3175, 0, 1395, 847, 0, 2240, 0, 3053, 17, 2048,
0, 0, 0, 4391, 1929, 1618, 0, 382, 3000, 0, 2272, 355, 1098, 1053,
2282, 2914, 0, 2842, 376, 2228, 726, 0, 1156, 0, 1410, 0, 749, 4063,
2439, 0, 0, 0, 2621, 0, 3528, 2435, 0, 97, 1482, 694, 1194, 570, 3416,
3179, 3403, 1117, 0, 0, 1524, 943, 0, 0, 0, 0, 3575, 3773, 1936, 0, 0,
0, 1401, 0, 0, 2159, 2996, 270, 0, 2332, 1361, 2981, 0, 579, 0, 3346,
728, 0, 3494, 3405, 3445, 3435, 2653, 0, 1308, 2858, 3025, 2575, 3731,
605, 855, 0, 203, 4259, 3290, 1060, 95, 1420, 435, 0, 383, 1415, 45,
1586, 117, 2280, 2435, 1389, 703, 0, 0, 2704, 31, 0, 2471, 3594, 1054,
0, 1511, 0, 0, 1382, 0, 4258, 4301, 840, 286, 2344, 719, 1350, 3803,
183, 2098, 3975, 0, 0, 823, 2368, 4256, 0, 752, 1235, 5, 0, 3558, 98,
3725, 694, 3455, 0, 3653, 875, 1383, 0, 547, 1804, 0, 70, 0, 715, 0, 0,
2494, 1860, 0, 4370, 3502, 779, 1873, 1031, 1727, 168, 3541, 274, 1808,
0, 0, 0, 0, 0, 0, 0, 3285, 1309, 3407, 0, 0, 0, 113, 2126, 3166, 1249,
1876, 1375, 3355, 3352, 1112, 0, 1232, 836, 0, 2694, 375, 3155, 815,
1889, 0, 0, 2998, 2383, 0, 0, 2114, 2168, 125, 1856, 0, 0, 0, 2371,
1324, 1017, 1445, 1438, 0, 0, 155, 4178, 0, 935, 1754, 772, 1828, 0, 0,
628, 458, 1292, 3824, 1772, 2528, 983, 2535, 3680, 0, 742, 1619, 2192,
0, 1186, 4098, 800, 0, 2809, 2098, 2052, 3951, 3703, 2558, 0, 0, 1243,
559, 964, 0, 0, 1402, 3474, 0, 0, 2102, 3369, 1705, 0, 694, 0, 2957,
2106, 0, 0, 0, 4251, 1377, 1041, 3963, 4047, 0, 1047, 2778, 911, 0,
651, 0, 0, 1646, 0, 1111, 2369, 770, 3627, 4192, 2657, 3794, 1255, 632,
4345, 0, 1269, 814, 2886, 0, 1826, 1773, 559, 0, 1327, 1508, 3242,
2335, 1589, 736, 3496, 1132, 2712, 2540, 287, 1260, 3176, 0, 977, 0,
3067, 0, 979, 0, 885, 739, 0, 813, 722, 541, 745, 0, 0, 0, 1102, 1963,
202, 474, 865, 2386, 0, 0, 3839, 0, 0, 0, 100, 2822, 3620, 2002, 1675,
1542, 2599, 2219, 0, 0, 454, 845, 1203, 377, 4169, 995, 1472, 3052,
3584, 0, 105, 172, 0, 1421, 2571, 2778, 0, 1267, 0, 2723, 1968, 0,
4399, 0, 674, 0, 458, 1260, 0, 0, 3957, 2224, 0, 0, 3089, 3191, 0, 628,
670, 1716, 0, 2399, 3592, 2059, 1928, 157, 0, 0, 2087, 494, 394, 2564,
0, 0, 32, 1717, 2195, 1172, 614, 430, 920, 0, 0, 2492, 1660, 1641,
3078, 1264, 0, 1306, 1070, 3264, 4001, 2046, 0, 397, 2258, 0, 3145, 0,
810, 890, 1173, 1401, 0, 1765, 0, 4338, 1898, 1553, 1196, 121, 3960,
155, 664, 3982, 1729, 2399, 3649, 0, 716, 1128, 0, 3668, 4257, 2824, 0,
1334, 0, 1175, 965, 2224, 2148, 0, 4046, 0, 701, 4032, 0, 89, 1743,
1640, 0, 0, 0, 0, 0, 2512, 1226, 1637, 0, 3275, 0, 0, 0, 10, 161, 1018,
1071, 0, 2642, 0, 1164, 443, 2000, 1365, 3219, 1462, 3673, 0, 200, 0,
902, 0, 4273, 0, 3762, 145, 2267, 0, 3778, 3523, 1827, 0, 2992, 0,
3764, 611, 2537, 0, 1782, 3215, 1431, 2215, 3921, 0, 3517, 173, 1272,
1280, 1093, 3269, 1558, 2635, 0, 1984, 3180, 0, 832, 799, 0, 0, 357,
822, 1831, 1560, 0, 932, 2628, 197, 0, 2402, 0, 0, 0, 4253, 643, 0, 0,
1279, 2908, 550, 1758, 0, 1425, 2708, 1600, 3974, 2768, 1014, 4152, 0,
0, 802, 1107, 0, 0, 3642, 89, 0, 0, 2514, 0, 0, 2515, 264, 1509, 2255,
3, 1345, 0, 309, 3321, 2734, 0, 0, 1086, 0, 761, 992, 703, 0, 0, 1345,
1083, 3522, 1821, 2233, 2854, 2119, 0, 0, 0, 818, 1140, 0, 21, 0, 3888,
3486, 1575, 667, 4209, 500, 1591, 0, 1484, 1787, 1125, 250, 0, 3646,
2638, 1516, 4135, 2525, 2271, 0, 1753, 1140, 293, 1379, 2505, 0, 1607,
50, 3284, 1662, 1363, 270, 3990, 1567, 0, 0, 0, 1761, 0, 266, 4027,
645, 797, 0, 1219, 0, 0, 1417, 3244, 952, 4283, 0, 1135, 0, 1546, 4138,
1159, 3696, 0, 1266, 2859, 2009, 234, 0, 3336, 3659, 0, 1257, 3702,
962, 2309, 0, 2445, 3624, 3598, 660, 4238, 93, 1416, 2666, 0, 3857,
762, 4192, 3368, 1239, 3967, 244, 1134, 3773, 3354, 0, 232, 2358, 0, 0,
4027, 3328, 151, 0, 0, 0, 0, 727, 0, 0, 1882, 3600, 4165, 0, 1729, 558,
0, 3936, 0, 2657, 3166, 1514, 835, 83, 3616, 3404, 142, 0, 1761, 4238,
3593, 401, 1386, 3302, 3578, 0, 631, 936, 0, 0, 4367, 625, 4249, 0,
2216, 3720, 0, 0, 0, 0, 1438, 4000, 1745, 0, 336, 0, 2868, 4358, 598,
0, 2460, 1123, 295, 0, 1459, 1305, 0, 2733, 0, 1635, 0, 3701, 4162,
523, 3026, 0, 4180, 344, 0, 0, 210, 4338, 0, 0, 1564, 0, 4222, 1530,
277, 1774, 0, 1872, 2854, 3772, 1711, 2496, 1946, 3751, 2322, 1523,
3707, 1407, 0, 3232, 781, 0, 1965, 0, 0, 4247, 0, 2017, 200, 693, 1538,
0, 2272, 1494, 0, 0, 320, 0, 0, 0, 3677, 3432, 0, 0, 0, 64, 1046, 3569,
251, 921, 994, 2034, 3081, 3752, 951, 293, 1432, 883, 552, 0, 0, 0,
2362, 2151, 3946, 1234, 1417, 0, 2371, 2334, 2976, 2530, 3011, 0, 803,
1948, 2689, 0, 1059, 0, 8, 3765, 228, 1029, 0, 1861, 3736, 0, 2569, 0,
0, 1166, 788, 506, 0, 562, 269, 2355, 2231, 1723, 4375, 2557, 2903,
1194, 793, 730, 0, 1264, 465, 1764, 2668, 366
};
static size_t
@ -2897,16 +2889,16 @@ keysym_name_hash_f(const char *key, const char *T)
size_t sum = 0;
for (size_t i = 0; key[i] != '\0'; i++)
sum += T[i % 32] * key[i];
return sum % 4622;
return sum % 4402;
}
static size_t
keysym_name_perfect_hash(const char *key)
{
return (
keysym_name_G[keysym_name_hash_f(key, "8TdWODhDmvfFNhdew6RS9Vmk6zoyzcIL")] +
keysym_name_G[keysym_name_hash_f(key, "FLLuzXDPPF7o0mOVhnPFXhsuVPyEFt8h")]
) % 4622;
keysym_name_G[keysym_name_hash_f(key, "uM56WrSjHtofw6pFN02nkQwt57Rdsoin")] +
keysym_name_G[keysym_name_hash_f(key, "P4xqG53yOhBiCtHiRwf0Ws7SW4qxMJYi")]
) % 4402;
}