1264 static const int16 h[2463] = {
1265 0, -2717, 0, 221, 1293, 223, 1295, 225,
1266 226, 241, 0, 229, 230, 231, 0, 0,
1267 0, 0, 0, 0, 0, 0, 0, 0,
1268 0, 0, 0, 0, 0, 0, 0, 0,
1269 -386, 0, 0, 0, 0, 0, 0, 0,
1270 -163, 0, 0, 0, 0, 0, 0, 0,
1271 0, 0, 0, 0, 0, 0, 0, 0,
1272 0, 0, 0, 0, 0, 0, 0, 0,
1273 -246, -175, 1260, 0, 0, 0, -174, -173,
1274 0, -172, 0, 0, 0, 0, 0, 0,
1275 1049, 0, 300, 301, 1071, 0, 1071, 0,
1276 1071, 1071, 1057, 0, 0, 0, 0, 1061,
1277 0, -1053, 1664, 0, 2956, 0, 0, -13,
1278 0, 0, 0, 0, 2156, 0, 0, 0,
1279 0, 0, 0, 0, 71, 0, 1082, 0,
1280 1083, 1083, 0, 1084, 0, 0, 0, 0,
1281 0, 0, 0, 0, 0, 0, 0, 0,
1282 0, 0, 0, 0, 0, 359, 360, 361,
1283 -1091, 363, -762, -130, -129, -128, -127, -126,
1284 137, -124, -708, -707, -706, -120, -185, -705,
1285 -117, -184, -1307, -114, -113, -112, -111, 0,
1286 386, 387, 388, 389, -90, 391, 171, 172,
1287 394, -94, -183, 397, 398, 399, -98, -225,
1288 402, -1019, -636, -1019, -225, 407, 408, 409,
1289 410, 411, 674, 413, -171, -170, -169, 417,
1290 352, -168, 420, 353, -770, 423, 424, 425,
1291 426, 427, 428, 32767, 239, 239, 239, 239,
1292 239, 239, 239, 239, 239, 239, 239, 239,
1293 239, 239, 32767, 32767, 237, 32767, 236, 32767,
1294 32767, 234, 234, 234, 234, 617, 234, 234,
1295 234, -2483, 234, -1430, 1526, -1430, 1527, 47,
1296 48, 471, 230, 32767, 32767, 32767, 227, 227,
1297 227, 227, 227, 227, 227, 227, 227, 227,
1298 227, 227, 227, 227, 227, 227, 227, 227,
1299 -159, 227, 227, 227, 227, 227, 227, 227,
1300 64, 227, 227, 227, 227, 227, 227, 227,
1301 227, 227, 227, 227, 227, 227, 227, 227,
1302 227, 227, 227, 227, 227, 227, 227, 227,
1303 -19, 52, 1487, 227, 227, 227, 53, 54,
1304 227, 55, 227, 227, 227, 227, 227, 227,
1305 1276, 227, -989, 32767, 1296, 225, 1296, 225,
1306 1296, 1296, 1282, 225, 225, 225, 225, 1286,
1307 225, -828, 1889, 225, 3181, 225, 225, 212,
1308 225, 225, 225, 225, 2381, 225, 225, 225,
1309 225, 225, 225, 225, 296, 225, 1307, 225,
1310 1308, 1308, 225, 1309, 225, 225, 225, 225,
1311 225, 225, 225, 225, 225, 225, 225, 225,
1312 225, 225, 225, 225, 225, 584, 585, 586,
1313 -866, 588, -537, 95, 96, 97, 98, 99,
1314 362, 101, -483, -482, -481, 105, 40, -480,
1315 108, 41, -1082, 111, 112, 113, 114, 225,
1316 611, 612, 613, 614, 135, 616, 396, 397,
1317 619, 131, 42, 622, 623, 624, 127, 0,
1318 627, -794, -411, -794, 0, 632, 32767, 32767,
1319 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1320 -272, 32767, 32767, 32767, 0, 32767, 32767, 32767,
1321 32767, 32767, -166, -165, 32767, 32767, 32767, 32767,
1322 -164, 0, 0, 0, 0, 0, 0, 0,
1323 0, 0, 0, 0, 0, 0, 0, 0,
1324 0, 0, 0, 0, 0, 0, 0, 0,
1325 0, 0, 0, 0, 32767, 32767, 32767, 32767,
1326 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1327 32767, 32767, 397, 32767, 396, 32767, 32767, 32767,
1328 32767, 32767, 32767, 32767, 32767, 32767, 32767, 386,
1329 0, 386, 386, 386, 386, 386, 386, 386,
1330 223, 386, 386, 386, 32767, 385, 385, 385,
1331 385, 385, 32767, 384, 32767, 383, 383, 32767,
1332 382, 382, 32767, 381, 381, 381, 381, 381,
1333 135, 206, 1641, 381, 32767, 32767, 32767, 32767,
1334 32767, 32767, -160, 32767, 32767, 32767, 32767, 32767,
1335 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1336 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1337 32767, 32767, 32767, 1148, 32767, 32767, 32767, 32767,
1338 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1339 32767, 32767, 32767, 32767, 32767, 32767, 32767, 0,
1340 32767, 32767, 32767, 0, 0, 32767, 32767, 32767,
1341 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1342 32767, -257, 32767, 32767, 32767, 32767, 32767, 32767,
1343 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1344 32767, 32767, 32767, 32767, -910, -910, 32767, 32767,
1345 0, 32767, 0, 32767, 0, 32767, 0, 32767,
1346 147, 32767, 0, 32767, 0, 32767, 32767, 32767,
1347 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1348 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1349 32767, 32767, 0, 32767, 32767, 32767, 32767, 32767,
1350 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1351 32767, 32767, 32767, 143, 32767, 144, 32767, 145,
1352 32767, 146, 32767, 0, 32767, 148, 32767, 149,
1353 32767, 32767, 32767, -160, 32767, 32767, 32767, 32767,
1354 32767, 32767, 15, 32767, 32767, 0, 32767, 32767,
1355 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1356 145, 32767, 144, 32767, 32767, 32767, 32767, 32767,
1357 32767, 32767, 0, 32767, 32767, 32767, 32767, 32767,
1358 32767, 32767, 0, -148, 32767, 32767, 32767, 32767,
1359 32767, 32767, 2009, 32767, 32767, 32767, 32767, 32767,
1360 32767, 32767, 0, 32767, 32767, 135, -918, 32767,
1361 151, 32767, 32767, 0, 1, 2, 3, 4,
1362 133, 5, 6, 7, 8, 9, 10, 11,
1363 32767, 32767, -1248, 32767, 13, 154, 188, 188,
1364 32767, 32767, 32767, 32767, 32767, 155, 16, 32767,
1365 32767, 32767, 32767, 32767, 32767, -1853, -1054, 18,
1366 -1052, -1051, -1036, 22, 32767, 157, 32767, 28,
1367 23, 1077, 673, 25, -2930, 0, 32767, 32767,
1368 32767, 32767, 32767, 27, 32767, 155, 32767, 154,
1369 32767, 32767, -62, 28, -42, 30, -1051, 32,
1370 -1050, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1371 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1372 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1373 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1374 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1375 32767, 32767, 32767, 32767, 32767, 32767, 32767, 34,
1376 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1377 32767, 129, 32767, 32767, 32767, 32767, 32767, 32767,
1378 32767, 32767, 672, 32767, 32767, 32767, 32767, 32767,
1379 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1380 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1381 32767, 32767, 32767, 32767, 32767, 32767, 0, 32767,
1382 32767, 32767, 32767, 32767, -156, 32767, 32767, 32767,
1383 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1384 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1385 32767, 32767, 32767, 32767, 32767, -155, 32767, 32767,
1386 32767, 0, 0, 32767, 32767, 32767, 32767, 32767,
1387 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1388 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1389 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1390 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1391 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1392 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1393 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1394 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1395 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1396 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1397 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1398 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1399 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1400 73, 32767, 32767, 32767, 32767, 74, 32767, 32767,
1401 32767, 32767, 32767, 32767, 32767, 32767, 32767, 675,
1402 32767, 32767, 32767, 32767, 32767, 75, 32767, 32767,
1403 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1404 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1405 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1406 32767, 32767, 165, 32767, 32767, 32767, 166, 167,
1407 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1408 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1409 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1410 32767, 32767, 170, 32767, 32767, 32767, 32767, 32767,
1411 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1412 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1413 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1414 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1415 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1416 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1417 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1418 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1419 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1420 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1421 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1422 32767, 689, 690, 691, 692, 693, 694, 695,
1423 696, 697, 698, 699, 700, 701, 702, 703,
1424 704, 705, 706, 707, 708, 709, 710, 711,
1425 712, 713, 714, 715, 716, 717, 718, 719,
1426 720, 721, 722, -304, -303, -302, -301, -300,
1427 -299, -298, -297, 930, -295, -294, -293, -292,
1428 -291, -290, -289, -288, -287, -286, -285, -284,
1429 -283, -282, -281, -280, -279, -278, -277, -276,
1430 -275, 753, 754, 755, 646, 757, -712, -1765,
1431 952, -712, 2244, -712, 2245, 765, 766, 767,
1432 768, 125, 770, 771, 772, 773, 774, 775,
1433 603, 777, 778, 779, 780, 781, 782, 783,
1434 784, 2011, 786, 787, 788, 789, 790, 791,
1435 792, 793, 794, 795, 796, 797, 798, 799,
1436 800, 801, 802, 803, 804, 805, 806, 603,
1437 603, 809, 603, 811, 603, 603, 814, 815,
1438 816, 817, 435, 819, 820, 821, 3539, 823,
1439 603, -468, 603, -468, 603, 603, 589, 831,
1440 603, 603, 603, 835, 836, 837, 838, 839,
1441 840, 841, 842, 843, 844, 845, 846, 847,
1442 848, 849, 850, 851, 852, 1239, 854, 855,
1443 856, 857, 858, 859, 860, 1024, 862, 863,
1444 864, 865, 866, 867, 868, 869, 870, 871,
1445 872, 873, 874, 875, 876, 877, 878, 879,
1446 880, 881, 882, 883, 884, 1131, 1061, -373,
1447 888, 889, 890, 1065, 1065, 893, 1066, 895,
1448 896, 897, 898, 899, 900, -148, 902, 603,
1449 603, -166, 906, -164, 908, -162, -161, -146,
1450 912, 913, 914, 915, -145, 917, 1971, -745,
1451 920, -2035, 922, 923, 937, 925, 926, 927,
1452 928, -1227, 930, 931, 932, 933, 934, 935,
1453 936, 866, 938, -143, 940, -142, -141, 943,
1454 -140, 32767, 945, 946, 947, 948, 949, 950,
1455 951, 952, 953, 954, 955, 956, 957, 958,
1456 959, 960, 961, -65, -64, -63, -62, -61,
1457 -60, -59, -58, 1169, -56, -55, -54, -53,
1458 -52, -51, -50, -49, -48, -47, -46, -45,
1459 -44, -43, -42, -41, -40, -39, -38, -37,
1460 -36, 992, 993, 994, 885, 996, -473, -1526,
1461 1191, -473, 2483, -473, 2484, 1004, 1005, 1006,
1462 1007, 364, 1009, 1010, 1011, 1012, 1013, 1014,
1463 842, 1016, 1017, 1018, 1019, 1020, 1021, 1022,
1464 1023, 2250, 1025, 1026, 1027, 1028, 1029, 1030,
1465 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038,
1466 1039, 1040, 1041, 1042, 1043, 1044, 1045, 842,
1467 842, 1048, 842, 1050, 842, 842, 1053, 1054,
1468 1055, 1056, 674, 1058, 1059, 1060, 3778, 1062,
1469 842, -229, 842, -229, 842, 842, 828, 1070,
1470 842, 842, 842, 1074, 1075, 1076, 1077, 1078,
1471 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086,
1472 1087, 1088, 1089, 1090, 1091, 1478, 1093, 1094,
1473 1095, 1096, 1097, 1098, 1099, 1263, 1101, 1102,
1474 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110,
1475 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118,
1476 1119, 1120, 1121, 1122, 1123, 1370, 1300, -134,
1477 1127, 1128, 1129, 1304, 1304, 1132, 1305, 1134,
1478 1135, 1136, 1137, 1138, 1139, 91, 1141, 842,
1479 842, 73, 1145, 75, 1147, 77, 78, 93,
1480 1151, 1152, 1153, 1154, 94, 1156, 2210, -506,
1481 1159, -1796, 1161, 1162, 1176, 1164, 1165, 1166,
1482 1167, -988, 1169, 1170, 1171, 1172, 1173, 1174,
1483 1175, 1105, 1177, 96, 1179, 97, 98, 1182,
1484 99, 1184, 1185, 1186, 1187, 1188, 1189, 1190,
1485 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198,
1486 1199, 1200, 0, 174, 175, 176, 177, 178,
1487 179, 180, 181, 1408, 183, 184, 185, 186,
1488 187, 188, 189, 190, 191, 192, 193, 194,
1489 195, 196, 197, 198, 199, 200, 201, 202,
1490 203, 0, 0, 206, 0, 208, 0, 0,
1491 211, 212, 213, 214, -168, 216, 217, 218,
1492 2936, 220, 0, -1071, 0, -1071, 0, 0,
1493 -14, 228, 0, 0, 0, 232, 233, 234,
1494 235, 236, 237, 238, 239, 240, 241, 242,
1495 243, 244, 245, 246, 247, 248, 249, 636,
1496 251, 252, 253, 254, 255, 256, 257, 421,
1497 259, 260, 261, 262, 263, 264, 265, 266,
1498 267, 268, 269, 270, 271, 272, 273, 274,
1499 275, 276, 277, 278, 279, 280, 281, 528,
1500 458, -976, 285, 286, 287, 462, 462, 290,
1501 463, 292, 293, 294, 295, 296, 297, -751,
1502 299, 0, 0, -769, 303, -767, 305, -765,
1503 -764, -749, 309, 310, 311, 312, -748, 314,
1504 1368, -1348, 317, -2638, 319, 320, 334, 322,
1505 323, 324, 325, -1830, 327, 328, 329, 330,
1506 331, 332, 333, 263, 335, -746, 337, -745,
1507 -744, 340, -743, 342, 343, 344, 345, 346,
1508 347, 348, 349, 350, 351, 352, 353, 354,
1509 355, 356, 357, 358, 0, 0, 0, 1453,
1510 0, 1126, 495, 495, 495, 495, 495, 233,
1511 495, 1080, 1080, 1080, 495, 561, 1082, 495,
1512 563, 1687, 495, 495, 495, 495, 385, 0,
1513 0, 0, 0, 480, 0, 221, 221, 0,
1514 489, 579, 0, 0, 0, 498, 626, 0,
1515 1422, 1040, 1424, 631, 0, 0, 0, 0,
1516 0, -262, 0, 585, 585, 585, 0, 66,
1517 587, 0, 68, 1192, 0, 0, 0, 0,
1518 0, 0, 32767, 32767, 32767, 32767, 669, 32767,
1519 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1520 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1521 32767, 32767, 32767, 32767, 32767, 32767, 32767, 670,
1522 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1523 32767, 32767, 142, 32767, 32767, 32767, 32767, 32767,
1524 32767, 32767, 115, 116, 117, 118, 119, 120,
1525 121, 122, 123, 124, 125, 126, 127, 128,
1526 129, 130, 131, 132, 133, 134, 135, 136,
1527 137, 138, 139, 140, 141, 32767, 32767, 32767,
1528 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1529 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1530 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1531 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1532 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1533 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1534 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1535 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1536 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1537 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1538 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1539 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1540 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1541 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1542 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1543 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1544 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1545 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1546 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1547 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1548 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1549 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1550 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1551 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1552 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1553 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1554 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1555 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
1556 32767, 32767, 32767, 0, 0, 0, 0, 0,
1557 0, 0, 0, 0, 0, 0, 0, 0,
1558 0, 0, 0, 0, 0, 0, 0, 0,
1559 0, 0, 0, 0, 0, 0, 0, 0,
1560 0, 0, 0, 0, 0, 1027, 1027, 1027,
1561 1027, 1027, 1027, 1027, 1027, -199, 1027, 1027,
1562 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027,
1563 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027,
1564 1027, 1027, 1027, 0, 0, 0, 110, 0,
1565 1470, 2524, -192, 1473, -1482, 1475, -1481, 0,
1566 0, 0, 0, 644, 0, 0, 0, 0,
1567 0, 0, 173, 0, 0, 0, 0, 0,
1568 0, 0, 0, -1226, 0, 0, 0, 0,
1569 0, 0, 0, 0, 0, 0, 0, 0,
1570 0, 0, 0, 0, 0, 0, 0, 0,
1571 0, 204, 205, 0, 207, 0, 209, 210,
1572 0, 0, 0, 0, 383, 0, 0
1575 const unsigned char *k = (
const unsigned char *)
key;
1582 unsigned char c = *k++;
1587 return h[
a % 2463] + h[
b % 2463];