blob: cc29b76461f484e7239c0d9c675f0e1ae4e2bf5c [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2007 University of Illinois at Urbana-Champaign and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* UIUC - Initial API and implementation
*******************************************************************************/
package org.eclipse.photran.internal.core.parser;
import org.eclipse.photran.internal.core.lexer.*; import org.eclipse.photran.internal.core.analysis.binding.ScopingNode; import org.eclipse.photran.internal.core.SyntaxException; import java.io.IOException;
import java.util.AbstractList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
import java.util.zip.Inflater;
import org.eclipse.photran.internal.core.parser.Parser.Nonterminal;
import org.eclipse.photran.internal.core.parser.Parser.Production;
@SuppressWarnings("all")
abstract class ParsingTables
{
// Constants used for accessing both the ACTION table and the error recovery table
public static final int ACTION_MASK = 0xC000; // 1100 0000 0000 0000
public static final int VALUE_MASK = 0x3FFF; // 0011 1111 1111 1111
// Constants used for accessing the ACTION table
public static final int SHIFT_ACTION = 0x8000; // 1000 0000 0000 0000
public static final int REDUCE_ACTION = 0x4000; // 0100 0000 0000 0000
public static final int ACCEPT_ACTION = 0xC000; // 1100 0000 0000 0000
// Constants used for accessing the error recovery table
public static final int DISCARD_STATE_ACTION = 0x0000; // 0000 0000 0000 0000
public static final int DISCARD_TERMINAL_ACTION = 0x8000; // 1000 0000 0000 0000
public static final int RECOVER_ACTION = 0x4000; // 0100 0000 0000 0000
public abstract int getActionCode(int state, org.eclipse.photran.internal.core.lexer.Token lookahead);
public abstract int getActionCode(int state, int lookaheadTokenIndex);
public abstract int getGoTo(int state, Nonterminal nonterminal);
public abstract int getRecoveryCode(int state, org.eclipse.photran.internal.core.lexer.Token lookahead);
protected static final int base64Decode(byte[] decodeIntoBuffer, String encodedString)
{
int[] encodedBuffer = new int[4];
int bytesDecoded = 0;
int inputLength = encodedString.length();
if (inputLength % 4 != 0) throw new IllegalArgumentException("Invalid Base64-encoded data (wrong length)");
for (int inputOffset = 0; inputOffset < inputLength; inputOffset += 4)
{
int padding = 0;
for (int i = 0; i < 4; i++)
{
char value = encodedString.charAt(inputOffset + i);
if (value >= 'A' && value <= 'Z')
encodedBuffer[i] = value - 'A';
else if (value >= 'a' && value <= 'z')
encodedBuffer[i] = value - 'a' + 26;
else if (value >= '0' && value <= '9')
encodedBuffer[i] = value - '0' + 52;
else if (value == '+')
encodedBuffer[i] = 62;
else if (value == '/')
encodedBuffer[i] = 63;
else if (value == '=')
{ encodedBuffer[i] = 0; padding++; }
else throw new IllegalArgumentException("Invalid character " + value + " in Base64-encoded data");
}
assert 0 <= padding && padding <= 2;
decodeIntoBuffer[bytesDecoded+0] = (byte)( ((encodedBuffer[0] & 0x3F) << 2)
| ((encodedBuffer[1] & 0x30) >>> 4));
if (padding < 2)
decodeIntoBuffer[bytesDecoded+1] = (byte)( ((encodedBuffer[1] & 0x0F) << 4)
| ((encodedBuffer[2] & 0x3C) >>> 2));
if (padding < 1)
decodeIntoBuffer[bytesDecoded+2] = (byte)( ((encodedBuffer[2] & 0x03) << 6)
| (encodedBuffer[3] & 0x3F));
bytesDecoded += (3 - padding);
}
return bytesDecoded;
}
}
@SuppressWarnings("all")
final class ExecutableProgramParsingTables extends ParsingTables
{
private static ExecutableProgramParsingTables instance = null;
public static ExecutableProgramParsingTables getInstance()
{
if (instance == null)
instance = new ExecutableProgramParsingTables();
return instance;
}
@Override
public int getActionCode(int state, org.eclipse.photran.internal.core.lexer.Token lookahead)
{
return ActionTable.getActionCode(state, lookahead);
}
@Override
public int getActionCode(int state, int lookaheadTokenIndex)
{
return ActionTable.get(state, lookaheadTokenIndex);
}
@Override
public int getGoTo(int state, Nonterminal nonterminal)
{
return GoToTable.getGoTo(state, nonterminal);
}
@Override
public int getRecoveryCode(int state, org.eclipse.photran.internal.core.lexer.Token lookahead)
{
return RecoveryTable.getRecoveryCode(state, lookahead);
}
/**
* The ACTION table.
* <p>
* The ACTION table maps a state and an input symbol to one of four
* actions: shift, reduce, accept, or error.
*/
protected static final class ActionTable
{
/**
* Returns the action the parser should take if it is in the given state
* and has the given symbol as its lookahead.
* <p>
* The result value should be interpreted as follows:
* <ul>
* <li> If <code>result & ACTION_MASK == SHIFT_ACTION</code>,
* shift the terminal and go to state number
* <code>result & VALUE_MASK</code>.
* <li> If <code>result & ACTION_MASK == REDUCE_ACTION</code>,
* reduce by production number <code>result & VALUE_MASK</code>.
* <li> If <code>result & ACTION_MASK == ACCEPT_ACTION</code>,
* parsing has completed successfully.
* <li> Otherwise, a syntax error has been found.
* </ul>
*
* @return a code for the action to take (see above)
*/
protected static int getActionCode(int state, org.eclipse.photran.internal.core.lexer.Token lookahead)
{
assert 0 <= state && state < Parser.NUM_STATES;
assert lookahead != null;
Integer index = Parser.terminalIndices.get(lookahead.getTerminal());
if (index == null)
return 0;
else
return get(state, index);
}
protected static final int[] rowmap = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 1, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 2, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 15, 62, 63, 64, 65, 3, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 0, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 19, 126, 0, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 8, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 15, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 110, 189, 190, 0, 191, 192, 101, 29, 1, 35, 0, 103, 193, 194, 195, 196, 197, 198, 199, 200, 201, 140, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 212, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 57, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 1, 2, 57, 3, 1, 8, 123, 4, 124, 15, 5, 127, 125, 221, 237, 6, 7, 128, 126, 0, 173, 238, 206, 212, 8, 214, 239, 215, 88, 29, 9, 216, 217, 219, 218, 101, 29, 114, 10, 220, 11, 240, 222, 12, 227, 13, 0, 14, 228, 2, 129, 230, 150, 231, 241, 242, 15, 16, 243, 29, 244, 245, 17, 246, 247, 30, 248, 249, 18, 115, 250, 251, 19, 252, 20, 253, 254, 255, 256, 257, 258, 130, 134, 0, 21, 259, 137, 260, 261, 262, 263, 22, 23, 264, 265, 24, 266, 267, 3, 25, 268, 269, 270, 26, 27, 152, 154, 28, 243, 271, 272, 237, 241, 273, 274, 4, 275, 276, 39, 29, 39, 244, 277, 278, 279, 0, 88, 39, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 56, 291, 30, 292, 293, 156, 6, 294, 295, 296, 245, 297, 298, 299, 238, 300, 301, 103, 302, 7, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 29, 39, 31, 313, 314, 315, 32, 316, 5, 317, 318, 33, 319, 320, 0, 1, 2, 321, 322, 323, 29, 34, 324, 239, 325, 144, 326, 327, 328, 57, 8, 329, 246, 240, 247, 236, 8, 248, 249, 252, 253, 254, 330, 255, 256, 331, 242, 9, 173, 10, 332, 35, 333, 334, 88, 335, 257, 336, 337, 338, 258, 180, 250, 259, 339, 340, 341, 263, 265, 342, 343, 101, 344, 345, 346, 347, 348, 349, 11, 36, 37, 350, 12, 13, 14, 15, 0, 351, 352, 16, 17, 18, 38, 19, 39, 20, 267, 40, 41, 21, 22, 23, 353, 354, 0, 355, 24, 356, 26, 28, 31, 42, 357, 358, 359, 360, 361, 362, 363, 32, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 33, 34, 393, 394, 395, 396, 43, 44, 397, 45, 46, 35, 36, 398, 37, 38, 40, 41, 399, 400, 47, 401, 48, 49, 402, 50, 51, 52, 53, 54, 1, 403, 404, 405, 406, 407, 55, 56, 58, 2, 59, 60, 408, 61, 3, 62, 409, 63, 64, 65, 0, 410, 66, 411, 67, 68, 4, 47, 412, 69, 70, 413, 71, 6, 414, 3, 415, 4, 48, 72, 73, 5, 416, 417, 6, 418, 419, 74, 420, 421, 75, 76, 7, 422, 77, 78, 423, 49, 50, 79, 8, 424, 80, 81, 425, 82, 426, 427, 1, 428, 429, 430, 431, 432, 433, 123, 83, 84, 85, 434, 435, 86, 9, 87, 53, 88, 89, 10, 0, 90, 8, 11, 91, 436, 92, 93, 437, 12, 94, 95, 1, 96, 97, 98, 13, 99, 14, 0, 100, 438, 102, 104, 105, 106, 107, 439, 108, 109, 110, 440, 111, 112, 113, 441, 114, 442, 443, 444, 116, 15, 445, 446, 447, 448, 449, 450, 451, 117, 118, 452, 119, 453, 120, 17, 121, 181, 454, 455, 8, 456, 122, 123, 19, 124, 126, 457, 458, 459, 460, 127, 129, 130, 20, 131, 21, 132, 15, 133, 134, 461, 22, 462, 463, 464, 128, 465, 466, 467, 468, 135, 136, 0, 54, 137, 138, 139, 140, 141, 469, 142, 23, 470, 471, 472, 473, 143, 55, 116, 145, 146, 147, 148, 474, 475, 476, 149, 150, 151, 152, 24, 8, 153, 477, 478, 479, 480, 481, 482, 101, 483, 484, 154, 485, 486, 155, 56, 487, 488, 156, 489, 490, 491, 492, 493, 157, 494, 495, 251, 496, 497, 173, 169, 158, 498, 499, 500, 501, 502, 159, 503, 504, 160, 505, 506, 507, 508, 2, 509, 510, 56, 161, 511, 162, 512, 513, 514, 515, 516, 163, 517, 518, 519, 520, 521, 164, 165, 522, 523, 524, 101, 170, 525, 526, 166, 527, 167, 528, 529, 530, 531, 15, 260, 25, 532, 168, 533, 261, 534, 262, 535, 268, 536, 270, 171, 19, 172, 174, 175, 26, 537, 176, 538, 539, 177, 540, 271, 541, 542, 543, 15, 276, 544, 7, 8, 57, 9, 10, 178, 545, 546, 11, 547, 548, 549, 16, 143, 550, 17, 277, 551, 58, 0, 3, 552, 553, 554, 555, 556, 1, 557, 280, 3, 558, 285, 559, 560, 561, 562, 563, 564, 565, 21, 566, 148, 567, 568, 569, 27, 168, 570, 571, 174, 572, 573, 29, 574, 32, 18, 575, 576, 577, 179, 180, 578, 181, 579, 182, 580, 183, 581, 582, 583, 584, 585, 586, 587, 588, 39, 589, 590, 591, 592, 593, 594, 43, 595, 44, 45, 46, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 47, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 48, 49, 63, 66, 59, 632, 50, 77, 633, 634, 4, 635, 184, 636, 637, 185, 638, 639, 640, 641, 5, 642, 643, 6, 644, 12, 14, 645, 646, 647, 27, 648, 649, 650, 186, 651, 652, 187, 188, 653, 78, 654, 655, 656, 657, 658, 659, 189, 190, 660, 191, 661, 182, 662, 192, 15, 663, 664, 665, 666, 667, 668, 80, 81, 669, 670, 671, 82, 672, 87, 88, 94, 95, 193, 673, 100, 674, 675, 2, 676, 101, 102, 103, 677, 678, 194, 679, 680, 112, 114, 115, 117, 118, 60, 681, 682, 683, 684, 33, 19, 685, 686, 687, 119, 7, 20, 23, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 125, 4, 703, 704, 705, 133, 135, 134, 706, 136, 195, 61, 143, 144, 145, 147, 707, 148, 153, 154, 708, 155, 156, 157, 709, 6, 158, 159, 160, 196, 197, 62, 198, 199, 710, 64, 65, 184, 67, 68, 69, 711, 712, 8, 9, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 28, 29, 30, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 179, 735, 736, 737, 738, 739, 740, 741, 742, 743, 161, 744, 162, 745, 746, 747, 163, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 24, 25, 26, 31, 773, 774, 775, 776, 777, 164, 778, 165, 779, 166, 207, 167, 780, 200, 781, 201, 782, 783, 168, 784, 34, 785, 786, 787, 788, 789, 210, 790, 169, 791, 792, 793, 794, 795, 796, 797, 798, 799, 170, 800, 801, 802, 803, 173, 804, 805, 806, 807, 808, 10, 809, 810, 811, 812, 813, 814, 815, 816, 70, 7, 176, 177, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 178, 35, 184, 185, 827, 186, 187, 202, 1, 188, 71, 189, 190, 191, 193, 195, 73, 196, 197, 198, 199, 203, 204, 205, 207, 828, 829, 208, 830, 831, 0, 832, 35, 32, 833, 834, 835, 209, 210, 211, 74, 212, 75, 290, 836, 43, 837, 213, 214, 215, 217, 218, 220, 221, 838, 222, 203, 839, 204, 840, 841, 842, 843, 844, 35, 223, 76, 845, 846, 224, 225, 8, 847, 225, 226, 227, 848, 77, 849, 275, 850, 228, 229, 230, 231, 851, 852, 291, 853, 205, 854, 232, 233, 234, 855, 856, 206, 207, 857, 209, 858, 859, 210, 860, 861, 862, 863, 211, 864, 865, 45, 213, 214, 866, 867, 219, 215, 868, 869, 870, 871, 217, 872, 220, 873, 874, 875, 44, 221, 876, 222, 877, 878, 879, 78, 235, 236, 880, 881, 35, 79, 46, 83, 84, 47, 50, 85, 51, 86, 882, 52, 238, 237, 239, 883, 884, 223, 885, 240, 224, 886, 887, 888, 225, 889, 57, 88, 36, 244, 247, 37, 294, 101, 226, 890, 38, 891, 227, 892, 893, 248, 894, 895, 896, 1, 39, 242, 250, 2, 40, 251, 80, 254, 256, 41, 257, 897, 301, 898, 243, 53, 899, 228, 900, 901, 249, 253, 258, 229, 902, 903, 231, 904, 905, 232, 906, 907, 233, 908, 81, 246, 259, 264, 54, 265, 267, 0, 234, 268, 269, 270, 271, 272, 235, 909, 910, 911, 273, 274, 55, 56, 59, 60, 61, 62, 64, 65, 67, 68, 69, 70, 71, 74, 278, 276, 279, 280, 281, 282, 283, 284, 285, 286, 287, 1, 912, 288, 289, 290, 291, 292, 293, 913, 294, 914, 915, 295, 296, 916, 917, 297, 298, 918, 299, 300, 301, 919, 302, 303, 920, 921, 42, 75, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 304, 305, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 306, 947, 236, 0, 948, 307, 949, 308, 950, 309, 951, 76, 952, 953, 954, 238, 245, 310, 311, 240, 312, 297, 313, 314, 955, 956, 315, 316, 317, 318, 241, 957, 319, 320, 321, 322, 324, 110, 325, 327, 43, 329, 958, 323, 326, 328, 330, 331, 959, 333, 960, 961, 962, 250, 334, 336, 337, 338, 963, 964, 965, 339, 966, 340, 341, 44, 335, 89, 342, 343, 344, 345, 346, 90, 91, 967, 347, 968, 251, 969, 348, 349, 970, 350, 353, 361, 362, 2, 971, 972, 365, 367, 368, 375, 82, 381, 973, 392, 383, 386, 387, 388, 393, 395, 89, 396, 397, 310, 398, 400, 313, 401, 974, 975, 402, 403, 976, 977, 405, 978, 979, 980, 981, 404, 982, 407, 11, 983, 984, 408, 410, 92, 93, 96, 412, 90, 985, 986, 987, 252, 91, 254, 988, 989, 990, 406, 991, 992, 3, 993, 994, 995, 996, 92, 997, 97, 998, 999, 1000, 409, 1001, 4, 1002, 1003, 413, 1004, 1005, 96, 6, 1006, 1007, 1008, 98, 1009, 1010, 1011, 1012, 259, 1013, 1014, 260, 97, 98, 1015, 261, 1016, 414, 416, 419, 420, 421, 422, 423, 45, 0, 425, 1, 426, 2, 427, 428, 46, 429, 99, 2, 47, 430, 431, 433, 434, 435, 99, 436, 437, 438, 439, 440, 441, 442, 444, 445, 446, 447, 448, 450, 452, 453, 454, 455, 456, 458, 3, 262, 459, 460, 461, 462, 463, 464, 465, 466, 467, 469, 470, 471, 472, 473, 432, 474, 263, 475, 264, 476, 477, 479, 1017, 112, 484, 485, 486, 4, 265, 478, 480, 487, 481, 5, 489, 1018, 491, 482, 267, 269, 483, 488, 490, 492, 493, 494, 495, 1019, 270, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 1020, 1021, 510, 511, 1022, 1023, 1024, 271, 512, 513, 3, 114, 115, 514, 1025, 515, 1026, 1027, 1028, 1, 4, 516, 517, 116, 100, 518, 519, 1029, 520, 521, 114, 48, 1030, 1031, 522, 523, 524, 1032, 272, 1033, 1034, 277, 525, 1035, 279, 7, 1036, 1037, 281, 1038, 1039, 1040, 526, 117, 527, 528, 1041, 530, 532, 1042, 282, 1043, 529, 303, 1044, 534, 1045, 283, 284, 535, 537, 538, 1046, 1047, 1048, 1049, 536, 1050, 1051, 1052, 285, 1053, 1054, 118, 1055, 0, 1056, 1057, 1058, 286, 1059, 1060, 1061, 1062, 1063, 1064, 120, 101, 102, 103, 121, 123, 124, 1065, 127, 129, 130, 131, 1066, 1067, 104, 1068, 1069, 49, 1070, 1071, 312, 1072, 539, 540, 541, 542, 543, 544, 545, 315, 1073, 132, 1074, 1075, 5, 546, 547, 50, 548, 137, 549, 105, 123, 51, 1076, 52, 1077, 550, 551, 124, 552, 1078, 1079, 318, 1080, 287, 1081, 1082, 553, 1083, 554, 555, 1084, 556, 1085, 1086, 289, 106, 1087, 107, 557, 558, 559, 560, 561, 565, 562, 1088, 563, 564, 566, 567, 1089, 568, 569, 570, 1090, 571, 1091, 573, 1092, 1093, 572, 1094, 1095, 1096, 1097, 1098, 1099, 138, 1100, 1101, 574, 1102, 1103, 1104, 576, 1105, 1106, 1107, 577, 575, 6, 7, 578, 579, 580, 581, 1108, 288, 1109, 1110, 1111, 292, 584, 1112, 293, 1113, 297, 1114, 587, 582, 1115, 1116, 589, 108, 590, 591, 592, 593, 594, 2, 1117, 1118, 1119, 125, 53, 585, 54, 595, 1120, 300, 599, 1121, 1122, 1123, 1124, 302, 597, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 600, 607, 1133, 1134, 608, 616, 1135, 617, 304, 1136, 1137, 619, 620, 1138, 630, 1139, 1140, 139, 1141, 1, 1142, 1143, 598, 601, 1144, 632, 624, 109, 9, 602, 626, 140, 305, 12, 1145, 603, 1146, 1147, 1148, 1149, 306, 1150, 307, 1151, 141, 142, 149, 635, 55, 1152, 1153, 1154, 1155, 1156, 636, 1157, 634, 1158, 638, 308, 639, 310, 641, 1159, 640, 110, 1160, 1161, 10, 642, 643, 645, 646, 647, 1162, 1163, 648, 1164, 649, 650, 311, 651, 111, 1165, 1166, 11, 1167, 653, 652, 314, 1168, 316, 1169, 654, 146, 1170, 1171, 1172, 150, 1173, 151, 1174, 317, 1175, 332, 342, 1176, 1177, 56, 604, 1178, 1179, 1180, 0, 1181, 1182, 1183, 1184, 1185, 655, 1186, 1187, 1188, 112, 343, 1189, 1190, 1191, 605, 606, 609, 57, 656, 1192, 657, 658, 1193, 659, 1194, 1195, 660, 1196, 1197, 1198, 1199, 152, 661, 662, 1200, 1201, 663, 664, 1202, 0, 1203, 1204, 1205, 8, 167, 171, 610, 611, 1206, 1207, 665, 172, 612, 613, 1208, 614, 1209, 174, 175, 1210, 344, 323, 1211, 666, 1212, 674, 1213, 667, 1214, 1215, 675, 669, 672, 1216, 12, 1217, 345, 615, 179, 1218, 676, 1219, 677, 347, 678, 348, 349, 1220, 350, 679, 1221, 1222, 326, 680, 682, 1223, 1, 1224, 1225, 351, 1226, 1227, 115, 1228, 116, 1229, 352, 1230, 365, 1231, 58, 3, 4, 618, 622, 1232, 126, 59, 367, 1233, 368, 623, 627, 1234, 1235, 683, 180, 628, 1236, 9, 1237, 181, 328, 685, 637, 686, 687, 688, 689, 127, 631, 1238, 375, 690, 117, 1239, 118, 1240, 1241, 1242, 182, 1243, 691, 13, 1244, 692, 693, 694, 1245, 695, 14, 696, 1246, 697, 1247, 15, 17, 18, 1248, 698, 1249, 1250, 1251, 1252, 186, 699, 1253, 1254, 700, 701, 1255, 702, 393, 703, 704, 332, 705, 707, 1256, 1257, 1258, 711, 709, 712, 713, 2, 128, 60, 119, 714, 715, 716, 1259, 1260, 717, 1261, 381, 1262, 333, 120, 121, 0, 123, 124, 718, 719, 187, 61, 62, 720, 721, 63, 722, 188, 64, 723, 1263, 383, 724, 725, 726, 727, 728, 729, 730, 731, 732, 734, 1264, 733, 735, 1265, 736, 1266, 1267, 737, 125, 1268, 189, 187, 1269, 1270, 1271, 392, 738, 386, 1272, 739, 740, 1273, 127, 1274, 1275, 741, 1276, 19, 394, 131, 1277, 1278, 742, 743, 744, 8, 1279, 1280, 1281, 20, 132, 397, 1282, 745, 746, 1283, 387, 2, 190, 191, 192, 388, 395, 1284, 747, 1285, 1286, 748, 749, 65, 750, 193, 751, 752, 135, 753, 754, 755, 1287, 756, 757, 758, 396, 1288, 1289, 136, 1290, 1291, 1292, 1293, 759, 760, 1294, 761, 398, 1295, 1296, 1297, 197, 762, 763, 764, 1298, 765, 195, 766, 1299, 1300, 767, 1301, 768, 1302, 399, 769, 770, 771, 335, 772, 9, 196, 773, 10, 11, 1303, 774, 775, 1304, 1305, 1306, 400, 1307, 401, 1308, 402, 1309, 1310, 405, 1311, 1312, 137, 1313, 138, 1314, 1315, 1316, 1317, 1318, 345, 198, 776, 1319, 346, 129, 413, 66, 350, 1320, 777, 1321, 1322, 778, 1323, 779, 780, 781, 782, 783, 784, 785, 1324, 130, 67, 786, 1325, 1326, 1327, 199, 202, 787, 788, 1328, 789, 790, 1329, 798, 791, 1330, 1331, 1332, 792, 1333, 1334, 1335, 1336, 1337, 420, 10, 794, 11, 12, 1338, 1339, 793, 795, 796, 21, 22, 203, 797, 1340, 204, 1341, 68, 799, 1342, 800, 1343, 1344, 1345, 801, 1346, 802, 1347, 804, 1348, 803, 1349, 805, 806, 807, 809, 421, 69, 808, 1350, 141, 1351, 810, 13, 1352, 23, 811, 142, 1353, 1354, 1355, 1356, 1357, 422, 812, 14, 1358, 143, 424, 1359, 1360, 1361, 1362, 1363, 425, 813, 1364, 427, 433, 1365, 434, 1366, 1367, 435, 1368, 1369, 1370, 1371, 6, 13, 1372, 1373, 1374, 1375, 205, 1376, 814, 815, 816, 817, 1377, 818, 819, 338, 12, 207, 208, 1378, 820, 821, 824, 13, 826, 827, 354, 1379, 436, 437, 15, 1380, 17, 1381, 209, 1382, 1383, 438, 1384, 1385, 1386, 144, 145, 7, 8, 828, 829, 830, 832, 439, 833, 351, 1387, 1388, 440, 831, 14, 834, 355, 1389, 1390, 356, 210, 835, 1391, 70, 211, 212, 441, 442, 836, 837, 838, 1392, 1393, 1394, 839, 840, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 15, 843, 1402, 1403, 841, 842, 844, 1404, 1405, 341, 216, 223, 242, 1406, 1407, 1408, 188, 1409, 1410, 1411, 24, 443, 1412, 1413, 1414, 1415, 444, 448, 845, 452, 1416, 1417, 846, 1418, 1419, 1420, 1421, 453, 454, 847, 455, 1422, 1423, 1424, 243, 190, 1425, 71, 848, 849, 1426, 0, 244, 850, 851, 456, 245, 1427, 852, 853, 854, 1428, 855, 1429, 1430, 856, 857, 858, 860, 1431, 861, 859, 392, 1432, 1433, 862, 1434, 864, 1435, 457, 1436, 1437, 1438, 1439, 352, 357, 358, 1440, 72, 458, 459, 359, 863, 865, 866, 867, 868, 869, 871, 1441, 461, 19, 1442, 147, 148, 1443, 1444, 1445, 870, 1446, 1447, 1448, 1449, 1450, 872, 16, 873, 874, 875, 876, 1451, 877, 460, 1452, 1453, 878, 879, 880, 881, 462, 1454, 1455, 463, 464, 882, 465, 1456, 1457, 152, 1458, 883, 466, 884, 467, 1459, 1460, 153, 1461, 469, 1462, 1463, 1464, 150, 885, 1465, 470, 886, 1466, 887, 1467, 888, 889, 471, 890, 891, 892, 893, 894, 472, 1468, 360, 363, 1469, 1470, 895, 393, 896, 1471, 151, 154, 155, 1472, 1473, 897, 898, 899, 900, 901, 902, 1474, 1475, 1476, 1477, 1478, 903, 1479, 904, 1480, 1481, 473, 1482, 1483, 156, 1484, 1485, 25, 1486, 158, 1487, 1488, 26, 194, 905, 1489, 2, 1, 1490, 906, 907, 908, 909, 398, 364, 366, 369, 475, 490, 915, 403, 1491, 1492, 1493, 247, 248, 1494, 916, 917, 1495, 918, 1496, 920, 1497, 1498, 945, 947, 249, 949, 1499, 1500, 27, 493, 1501, 1502, 28, 494, 1503, 1504, 250, 159, 951, 953, 927, 370, 1505, 371, 932, 251, 253, 254, 495, 496, 255, 256, 257, 1506, 1507, 948, 1508, 950, 954, 499, 1509, 1510, 502, 503, 1511, 1512, 504, 955, 14, 956, 498, 505, 506, 514, 1513, 1514, 957, 959, 960, 258, 262, 1515, 515, 1516, 1517, 518, 1518, 263, 372, 1519, 1520, 1521, 961, 962, 1522, 1523, 963 };
protected static final int[] columnmap = { 0, 1, 2, 3, 4, 2, 5, 6, 0, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 6, 1, 21, 2, 22, 2, 23, 24, 25, 2, 2, 7, 26, 0, 27, 28, 29, 30, 31, 32, 8, 33, 34, 0, 35, 29, 36, 37, 38, 39, 9, 2, 6, 9, 40, 14, 41, 42, 43, 31, 44, 45, 18, 46, 47, 18, 48, 32, 49, 29, 1, 38, 50, 4, 51, 31, 52, 53, 38, 54, 40, 55, 56, 57, 58, 59, 60, 61, 0, 62, 63, 64, 2, 65, 3, 66, 67, 41, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 34, 80, 81, 41, 8, 82, 45, 83, 84, 0, 85, 59, 86, 49, 87, 88, 89, 90, 56, 3, 91, 0, 92, 93, 2, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 59, 68, 107, 108, 109, 5, 69, 110, 111, 70, 112, 72, 4, 113, 4, 32, 114, 115, 24, 116, 117, 3, 118, 14, 3, 73, 119, 120, 121, 122, 123, 4, 124, 125, 126, 127, 128, 129, 130, 17, 131, 6, 74, 8, 132, 133, 75, 90, 134, 135, 136, 91, 137, 100, 1, 138, 139, 140, 141, 142, 143, 0, 144, 145, 146, 147, 148, 149, 150, 151, 106, 152, 2, 107, 50, 153, 154, 155, 156, 1, 157, 3, 158, 159, 0, 160, 161, 162, 163, 164, 6, 3, 165, 166, 0, 167 };
public static int get(int row, int col)
{
if (isErrorEntry(row, col))
return 0;
else if (columnmap[col] % 2 == 0)
return lookupValue(rowmap[row], columnmap[col]/2) >>> 16;
else
return lookupValue(rowmap[row], columnmap[col]/2) & 0xFFFF;
}
protected static boolean isErrorEntry(int row, int col)
{
final int INT_BITS = 32;
int sigmapRow = row;
int sigmapCol = col / INT_BITS;
int bitNumberFromLeft = col % INT_BITS;
int sigmapMask = 0x1 << (INT_BITS - bitNumberFromLeft - 1);
return (lookupSigmap(sigmapRow, sigmapCol) & sigmapMask) == 0;
}
protected static int[][] sigmap = null;
protected static void sigmapInit()
{
try
{
final int rows = 1218;
final int cols = 8;
final int compressedBytes = 3316;
final int uncompressedBytes = 38977;
byte[] decoded = new byte[compressedBytes];
base64Decode(decoded,
"eNrVXc1vFscZnx3WdHA/slgQrJ7WhFBX4kB6SXugjAlpSKSqlg" +
"EpUYUq9dBy8KnKkUhjF1WmJx84cHzFASm3/AlWxSHixKFRK079" +
"Uzq7+37s7jszv2fm2X0NbxIT83hmn3m+P+ZZv3nvL/ff//bauX" +
"trB9e++9HzByc3H/1KP/78h/Pm7qsbtzfEmz9cvf/+k4efX1g7" +
"2Lfw+xV85/Hvfzh/fPdNA79y/9KT7S+fVvBPnt9/+fGjvXr98d" +
"3/3tADrH/vKsCP93xp/ymEyET1OWv/29y9br8aIbRcy8UA5x+Z" +
"PmB9/SlF4JP1/6JofzM2/ic/vXJ77WBbXRDi2nc7hxdPzm7vCa" +
"M+tUhosRL6Ifm7Yve3+FXyd8bu//Gjjan8fT9bb+F36ue34WT8" +
"ABzI//q6uLihlBBrB1rIUouPvi7040+PM7N3dKPm318fXHqy/8" +
"d/f/j3/eefvfjTy5uP/vzJPx78p9r/m9vj6xeF//nB9ubTiv/Z" +
"4cWXZ7c34vjPw+/n69LS705m6Wf139LvN19f1493Kvr980Yu3n" +
"r9puDnlt+9Wn6RfRjfvmP94ukvkG+m/Dfyozrys9OSH6FE83X6" +
"sd8Ucvr/Wgi+fWDSR7aZrVtfp55hfP8XhrPlE/L3dOl/2vClj+" +
"nTl0uft5y+o/s/nn/v2o98Fp/ptvwH4w+vfd2r4a8W8H2Xfxj9" +
"/Ez6UOQnHJ+x4+vcHT9nJPtkd1ibB9x1MnKvsF+r/EOsCX78Me" +
"XvHZ//H9u/w/yKrX+k+LLJL7I6v+jFl7+YxscH+5N5fNycbx4f" +
"P2nwmzT4XV6pfRg5fpRa5k7+FDsbFX/Y8GX+l23+o/WO/LSfv+" +
"ah/BXBUf6J4P9q4E3+slPnL3N4NgCcmx9z949ZP2nW34rBD9df" +
"kH9D8f3C/02a9bKdX8D8mZl/J8BFN38fN3+erffbx9U837e+DZ" +
"80cNmGu/L3dv6F+Df2+rcRrnnry059xBdfHu99T6k/1P7p2/0O" +
"fXca+Vj4vwDcSkGO6pdu/Z8+n8RflSwfCfuXMfUDLryrny9q/b" +
"w11c9v9AZ7fez+orW/SDufGPJ8zqR4Aaj9Y+7xnxkl/1ZaUD5F" +
"EGq8EFTfgR8VBnPz17HhLv536b9y/EQc/jz7iPJ/f/7a/OmPn/" +
"Zi8k9vfaENT7HPDvxFN/8O5z8o/55uJBc1yLyjimj92PDe+WXf" +
"VCTsL2Kez60vtNe7+N+Kj8Uifq7947MbgpBfCvmTUH6B4IT+MW" +
"v/9S+856vjf1y/4NU/2vBJA+/E1xGuxgPX2InA9YGP5Pkv+HwV" +
"73MbbuuuOS2UbC9T0/+RKiy/TXxQLlDpWLu8+kvZQdT0QgWljc" +
"gr89XAlRGb1Z/b9Z6KzV+LvyyKCn/Z4P+swr+wP3UyxZ9OepnC" +
"P3B+jJ8eST7m9O//YBEjX8i+deVMqnj8XfJVTH8wx/hV8tum76" +
"aLvi75bfbH5wsbgI7Dq7/ZnSrX3D8Oq99ovXHyN+fvrxLtrwjE" +
"SEPQRwOdptg3UOEN/T2WT6L+q8RUa2bfhdO+T/cP8j/3PFdS6K" +
"982aKJ0P/Y/SNS1ST8I/RDQPsqmysEff9Q0uBc/8fVLwX0F9pv" +
"TfRPsfETzT8R7HtctcMMjB/wX4i/7vgtEP+YSP3E50fyzYxvtI" +
"M5rRKd8q2n+YcluGHKp6Han8T8w8T5t2j57++P+qNA/vH9hSzn" +
"9Fe5/UkkHx9svpHFBbF2uTgrs98KsfXs9ZYoi4kS/7u8dsVExO" +
"8FIVmckk3TLVIafxb6z+0v0gRdBY6rw1oK6Dv2/SzUn2zDXfWL" +
"VeHn61/W9CPZdI98MvNTbv9y2X7d8+SfHlFD8gP6hwg/b/26WN" +
"6/U18k7p/Qf1y+PxlaD/l7K2i/cH1ch9O/KP3m9/e4/cd+fzBh" +
"vYhbrynxGa5S4XQplD8m84drP1B/E/nvofqfqfiR7z8XMdXJgg" +
"zn9x8j6bMUtIbrE9A++Y1HQVuv/fYr58cXaL2B8Z8O6mnk/V9K" +
"/01E9vdEqP/o6E+6an8zuHSsP1X4AP3ZIP0T+BfXf4J1y5T6yh" +
"D1O6L+OPVDkfdn9Def9e4/UuGi1/9F/ddg/OpYj+BR/WHU33XA" +
"RRvO71/z+sNt+Sic+YkI9xfJ/TH3B90fqepf1Q5b9olL9a8z8/" +
"uLZ8SHvvyB2f8j1ufI9a+l+EKD+IO6nlhfjezvwf5fbP3PC5e8" +
"/kCRWF+O729dj6nvcZ9v6cyTj+1modUfkxvLNyMLVZRKZJaNP3" +
"b0x0x/f0PUb9/6kzB+Srco7UoBkXwz6SNed9dP8Vf9+qRlvqs+" +
"+cHmqy58s4GLPly54VJ9ISw8q0//Mytom69n+nV5Wl80DW59+0" +
"uzz3D/ij55qD4bPh/CD50f4Y/8G5n+Pf4JOv9q+l22Z0zh72y9" +
"XFp/Qjo/wk+qW0H+0umTdr4Z/uPwXyScf3dZf3KsP1i/1gF+Mk" +
"m/kX3B/S1mfKDCJSx8/wfEh0cALnaBf9yN6w/3+4Oo/xgLj/U/" +
"8H4P8l9U/5YGR/zl9veqG2vF7Pmz+1uind/z4kcufm7+F+nwge" +
"NzQn88eD8Az2+k1C8GtD9c+jD3x/WjkfGD99P0yPQHx0H2Hda/" +
"dqc1OCld8fX48gHz9+rfqpLV1Z/cZM3PDuVfU/kHzofyO2fRuI" +
"jI38B6SPY5/0WA/znov+Rk+prY/DS8P76fQuJvniwfSfo3nP6g" +
"+R+u/6bffxmyvjJcfezU4xfn/b0Y/93rH5LlbzIznqz8nST/dT" +
"QjO/ZZ1c8P4CfLxWIjVLXoeNH/0KuKX2B8MbZ/gPlNpP6YofFD" +
"YSd5/4waMUXFZ9a/GpFNfnn40C75ymyY7OnEmv/fbZe5ObOK+J" +
"PLXzr/5TsZ31Pky/HzOl9RfnlSkTUva+fRxqeMhMs0+Dw/dPfP" +
"8PO16NhfDzyi/lHE0QfR93V3/Ty+pJ4f5r+gvg7iA2s/7BMmW8" +
"LaD3GutLsdGxuf6+3Q86PrA2B+hAMXCeuL9OeT6isR8RXp/uTQ" +
"+j+cfcPzdTB+iviUjPpPML9bQX3H/XxC/TpcPz4Sh2U4/j1fg/" +
"KKRTZ/KSuMdorMFEebNPxr+9W9v9ehH4D7YnqzEvqrzvhm6Xip" +
"DjU+kd76TNrHUPNrYn012X+kwCXZ/jjrt6h/HlNfBOEhO/+OhB" +
"smfMX1Ofb7m9H7mdjxaWR9hVufHti/W/ocjlp/oMunZMIHzZ8X" +
"3pwZ3+D+EKgPRdev4uBIieF8EjM+ZL7fmKufaH4O048rH+PeDx" +
"2bPwnzZx0VhevJ9J/dz+4/7haTf1cfgPfLPWDNr71V+uWYj8L+" +
"A72fEsh3JH2M19bLxPjRdDK3fn0c7hKj//H0hfNlyvF+n+n9kJ" +
"ywHr3fjGt/KfEDB3+2/Ry0//Qizf/Hy58m4ZcLvn1i2sex46e0" +
"/tDS/BBnPiy8P/P9UIT3o7DmxwRzPgzOnwH+4fk1Lack9dVvPm" +
"rqR0vEPGq0Cq0ft//Cvb+H5Xvc+JQ7v8aNX1HVBOFHnw8O3J/J" +
"/fCt4pm08Kp/IrNfW4kzJhNldYGoLO03tP2D8DD+8P4Huf4X7j" +
"8lvx+M+3ykfOT3/0lqf+C6uz8gafibREH2wWH9inc/gvv7H7eK" +
"o6n856KWf1HJf8X8Sv6P4PMj5sOS4ns6f93yM8j9G1J8qkD9ng" +
"hP1G/y+zNj9Y/5ftrR7UPs+w2HPv+81ui9fzC0/ezzPzifw5ZP" +
"9v0eZv+Yix9c/5qoX8g+rDvrv0vzTcvzX6z6sm8+LHA/tyNccL" +
"4RxE9h+VMU+8m9PxlbPyhC2pd5zxd4v3geWN/7+OC+9aT503p+" +
"r0//Lv4Y7p3/Q/YT2Z93BK6Y8Hf0/M7gbHj9xvOn66nyF4ST5s" +
"tJ50s7P5qPHYA+Qfhw/sft3/j5ceHIv9r1HQQP9wfT7hfT8a/v" +
"V11gzAc7/WtE/hI7H7zM30MVku/+/o7889KTh1/V+H1m8bv56G" +
"+9/FVy8it8fkPMvxPzw6T83vV+q7T6wcp/P3pfkEauXwzQf+Ld" +
"T2Pfn6Xm5yPRTy1yXdfvz6Ht719/2vNd+PdT+fuPa2Kg+eaAfc" +
"bvRx6d/4dgPs0x31tU8729E8qQ/fLD5/v36i+z+WH/82lw2vOX" +
"7XsuhjkfG477g9zzi8B8ATH+SZ9/YMd/zPqmalxAqRfyXyFb1v" +
"OPWizNXyfXdxSIfwWIbwUtfo2t/yU9v01W7aAvnf4o/oPz4974" +
"hxg/ceWfVp+NnM8XZP9x2v0jQv+RWb/j9rfGjX/R/R/C+62R/Q" +
"i//5pe/4+cT/fWP2nrZenM7zMQH2Xe/AfVVxv/d65+fuGtL2Su" +
"/kNOsIVL7wfvbOyYv5xQ+eOZP53Q9sf1Ad7+3v7UJFDf6dAf7Q" +
"/ghWc+dUKrP5MT6OT6Uxg/KF9aRH1M7HoUP2qHwBeS/nwMD/5+" +
"wgH2J9SvxotvEfz/dk5edw==");
byte[] buffer = new byte[uncompressedBytes];
Inflater inflater = new Inflater();
inflater.setInput(decoded, 0, compressedBytes);
inflater.inflate(buffer);
inflater.end();
sigmap = new int[rows][cols];
for (int index = 0; index < uncompressedBytes-1; index += 4)
{
int byte1 = 0x000000FF & (int)buffer[index + 0];
int byte2 = 0x000000FF & (int)buffer[index + 1];
int byte3 = 0x000000FF & (int)buffer[index + 2];
int byte4 = 0x000000FF & (int)buffer[index + 3];
int element = index / 4;
int row = element / cols;
int col = element % cols;
sigmap[row][col] = byte1 << 24 | byte2 << 16 | byte3 << 8 | byte4;
}
}
catch (Exception e)
{
throw new Error(e);
}
}
protected static int[][] sigmap1 = null;
protected static void sigmap1Init()
{
try
{
final int rows = 1218;
final int cols = 8;
final int compressedBytes = 2934;
final int uncompressedBytes = 38977;
byte[] decoded = new byte[compressedBytes];
base64Decode(decoded,
"eNrtXb2PHLcV59Cz59Hlw/TBkg+pRooQbKHCSWOnUDwnW4kdIL" +
"BwsoC4MOBSharApQLwhCskVypcqFyoMOBOf8LacCFcdY2B4Kr8" +
"KZmZnf2YGZK/Rz7y9qxoC33s28chHx/fx498HFGI5pMLy+fss+" +
"v33n0y/ee3k6MHLz56fu+n9x8eVsef/vz207v/uVntCVEI96cQ" +
"j0QuRdn9sNBiv/l7Wn/TECO0H/j82YIZ8J999od7V57c//Sdpn" +
"9vPr83//Dhnw6O/9H07+zmx3sOTg06RqR7jL8wEGD/+fL9hdAL" +
"s9gR//ijXk35JKKvPtIswtT82+4/pmuXfbwA89sOvFyvn27w5f" +
"+F/nLtZ+PfrjyZFjX/jRdv1PzvP9xr/Zs+fNn5NznWr4vUf6b/" +
"MK6fc6BXtPiFHn8M9d/qX/zo2L64118k+1qO+Eua/0M/geOfNw" +
"/Obc+H8yNOO/4dc//J9nfXHB8C+eL+LaNr7vpG8UsiOjn+QfyS" +
"qh++/Sf6z+D2if4vML7cvvwi6YdtfaT2P5Uzf4V0IQA/mj/e88" +
"/eqsf3/Y1LnzfxwZvPv2zGt4gP7p404+Pmx/H8N0xbZVD8zPRf" +
"EfJbhA846bK4JZQSE6GkbF3Qszu1YVC68WuTetZlIRt61o6voe" +
"/36dz2of0z+h/lP33h8+eWr9XFaOCCdD/Q8wxRCujidBhs493/" +
"c6b/0vsfm+6LD47i1wrFvyg+CVgfG8utWIQoZbXmb5Z7Kctl39" +
"5um8mz5tuqeWwlDlSm1eP9CPhjdP9y0fV/8HU9wolaz0lt7D9X" +
"9Z+6kfIkGF/ywadUn18vviti2W92+zx+Un7lfH4F8Rl3+0x+vP" +
"5Z+F+a/QlFZkuDD6kAunkB0fUHDT6sf97P13H7f/aWDX+8+9KO" +
"T6gE8yND/SP4ZDkNn7B9uPaBMH6jfHUU+cx/c/3jyVE9v0LceH" +
"Hw6PJ8Z3oodHFbNQMj2K/k9hHkt11+HN4/lD8DeiO//Gi638ov" +
"a+W315MfzK948mPjh2K78hu3n3s9/3e78vJe8UkmJkd1flzHp3" +
"/++r2D44OnmT785maO6Uh/av/05ZXvH/T6f7CQ75m5/5H5ufIt" +
"RD6wYkp6wS8++vldq3+3Ov37N8V+oP6x7bvqD9CalsTwz+Px/7" +
"iwD0b7mlWW+CrryV2O418v+Azxc9vnPp/FH+ZfBcG/xtGP+eb8" +
"G/yDSX/C84fvEuQ3bvuF6YnzoxU+MRrM483V5J/JU/HBMPxw8H" +
"i53i7N1UA1s+GTuuhP975VgfsPoH84P4T6g/I7gF9BfMyNrwXn" +
"z0T8LDg/5tAp03qR8V2P/oGBxsPPhId998FPUsf3XPsUQvdZ34" +
"nzR2Z+xY8v3e3v7oo6/6gbmRxVQtb5xx+/VtXx7Sb/eHzTpGve" +
"8Wkc/LYc6XcZDb+pWidcjlneoOSfqH2dFl/yip/K8W/h/qx7fx" +
"fu/0aLT875fN1reiR6yPxS8EXq+uKuv23zA3q5TCJKnetm3UlR" +
"qLJoo/JfbeJHRc/+Xhz7xWy/mPPGh+QzXTBmYrqQr5aqJ1+ufQ" +
"PnzwL2RwKfb/ucRvHfNvrv98+kekdMrtXOI/uLEFefnV4VpZoV" +
"4r/XJtc15L+qnsnaPjTnY2X2Qb0ctK6XQjNBs7L+Dxwf6fk5JT" +
"+QlvZP+u3vL9oXXfvbpqP4EvHL4u+ipmdNaiN+W6+T/dOl/7+2" +
"iA9uDeh3enTYP0r+k4fvL9HlJ0Pl347fxi+LE6f8uPKP0H/w/F" +
"us50dZn077jkIXFN8rlJ8RzzeF1i+A/AniQ57+h4Q/b4wKxP/s" +
"+ldxx4+uY+Pn6PlU/4eIvv6tbP0bX76p808evk/CT/KU+NIc9B" +
"/Rl/h4t2lWDgFEYv9UKH4fEv95nN9IMv90Ovf8CsQ38f41C3/b" +
"Dj7qMf7E+G/V7D/+UBb1Er5RZvryfKdomG63v4iCH1Px/YT1A5" +
"zzUZHpmS9+s4KYB/lpPhyhtO6PFC19UF+W135Mk+x/x7+7wa82" +
"+MHzAb3ZH3j3yf0vWv39W62/Hz78l+F8qaP9xOsX4zsG/6jW/h" +
"HiF6YMVxkjqIR0d/zm4sf1QW397MpO662Mb5vy649/zI/o/eXY" +
"rd8yUf+926fmj6qOn0PyR+P+l0f+VaD54bYP8Ev2/SAVS/6Q34" +
"Gw0fpfAYFGiB8c+e8qP1M7Yp2fiVV+xt8fUcu/zOcD4f4wkE9Q" +
"fiXo/SPndwv/fmnlv1brx6n/pPWdD+OfXnyi6fd3mc6PKuL4As" +
"/32Ohyg3/TXnb2s2j5e9Pt1B8xej5N/yE/kd6/n0L18TNX/Az1" +
"V/HsHz5/ZbnfYxZn/uH54FjjM98PEnZ+c/05WdTnfGK7H+hkXb" +
"/zwETH+JbRfkoPfImPP/l8tCc99fmh5PjDtvEjv4nISJNobx/x" +
"Z9H5ueP35NfeImE+f9v6FQH/YdH1lvH51/St0stGA7LZpUdf1f" +
"/4QiuRHc/q8PavU5HrKOcTQ/HL1/NzMfybD70M0A+kX4njh4Lq" +
"iGz22X3/Hp/ukO25rM+5+35Acvu2/oPx4/Nj/f6t8K0yof75yF" +
"dvmc7s31TIWgKzq+J+g56U9c+falUW1bQk6l+E/r/S53O3TQ+1" +
"jz18NE9mv1Pf/5zc/1DzL8b5eMf6wPUTbv1l1y+Szq8Z5FXlRP" +
"l1+tfDhwfzk/vmd95pPX3/bIwvJtW/oieycvPnmjTQ1Pe/M+ne" +
"9UFk/Gu2th9Rzndaz1cy7VMEfFa48P2K275lfejOvlDvbxEe8Y" +
"HP+gH6l3h9suefcn8paX1ZiMb2Fb39JP5XeNh33vwQ/B9x/xzN" +
"365dvg7/ju6vYp8/TH7/kXv9kuxD5eqf5f62p93+D+gfvD+JeT" +
"8TvD+Eef8X3F9m34/kuX9op3vcTxQxfob1+Ymfz+wf3j91y59/" +
"fw0lfizX/8wHjhvHj7lY3w8jh/fDhN2//krdzxxJPmH35/ren5" +
"rZ/Lva7EBI/uaD36bYf7NmVeh+JrR+wu63hudXlvy8+CjvT2m1" +
"QdWUEJNbXySF/LVa9mGR/723eHbV1Yelvb8pdX0Ixj8jtM/h94" +
"rvS7zWNDF+04ek+3+58ktNR/V3bHwO1nelpUe5/1ek1H9qfm57" +
"f88pwnfCzl+u7POpcXxU/AjWN8P69VD+mRjUv8vN+mzb+dkg/I" +
"qAf8he/KEC5LNrGV+E+nHHQKPU3+bD+MseX8Y5P+aBf24dH3bX" +
"d8d4f3Ph1E9m/bdv+2P8W3Lwt3jxi9X+8t7/4JtfacpcXPT8UP" +
"Teb8PB7wn5Hag/R4EeFZ8P4+fG/9z4AucP3PyC2n+zfNr66KNe" +
"fXQ9ULWqjzbT1/XT9P1hC76N46NHvPqWyrL/NPSQYfW9qH6YX/" +
"/rptPxl0Tv94m2/8R4/13ujt+d7/cKur9O0NtHhhb2b8Sv3BGe" +
"Tb/NdFzfdqevf97xGxXfpx7AiBEf0uMbYdEwOr7qtj+E/Rnkv3" +
"v7N/nG/k0Vw/+x398SYp/o+LQZPxnUx5LuxzDHF4T5SVp/SaqP" +
"Y9SfDuWb+cbf1ue78HsffJ0W3+D6SMf+Os1+2fIn5vlDuADc9Z" +
"8r+g6gy1A6rz6W+35dfH+d5fz3jK5fLP00+7fY+JVVP85DPqz8" +
"PwJ+gPy7Az9cvp/s2+79Mz/5vp8sKL61+ed82fmK2v8I/ttjfy" +
"YE/wk9H1zS9i/558MtPy3o8UnOkG+bX5TrnzrOPxRh8mXlX3z8" +
"wro/95K2P2faHxQR+xeyflLUpyNBpHp/L6iPwvtPTn7UP/x+zb" +
"T6iepTouQnrP35WPqL/Ld5/7C9X1mJSR0myHaKn43rQ0pXVIT2" +
"Vx677RO9PgXtPwW/P0J2IpFB6xvXvwB8qFrcjzZ4Pv38I88+hb" +
"3/2qd+hTk/zPglzfvlfe63du9/bv98Ttr9WY/zozIF/sR9/w8X" +
"X4fj/x9FI4lU");
byte[] buffer = new byte[uncompressedBytes];
Inflater inflater = new Inflater();
inflater.setInput(decoded, 0, compressedBytes);
inflater.inflate(buffer);
inflater.end();
sigmap1 = new int[rows][cols];
for (int index = 0; index < uncompressedBytes-1; index += 4)
{
int byte1 = 0x000000FF & (int)buffer[index + 0];
int byte2 = 0x000000FF & (int)buffer[index + 1];
int byte3 = 0x000000FF & (int)buffer[index + 2];
int byte4 = 0x000000FF & (int)buffer[index + 3];
int element = index / 4;
int row = element / cols;
int col = element % cols;
sigmap1[row][col] = byte1 << 24 | byte2 << 16 | byte3 << 8 | byte4;
}
}
catch (Exception e)
{
throw new Error(e);
}
}
protected static int[][] sigmap2 = null;
protected static void sigmap2Init()
{
try
{
final int rows = 822;
final int cols = 8;
final int compressedBytes = 2039;
final int uncompressedBytes = 26305;
byte[] decoded = new byte[compressedBytes];
base64Decode(decoded,
"eNrdXL1vHUUQn1v2OZdIKIvlEIvqnFjIhQuUJlCYnCERpECJnF" +
"iCgj4FFaI00tpKkVClSJHScoFElz/BQilQKjdIyBV/Cnf3Xux3" +
"59v9ze7sYsMV9rPn7dfsztdvZo+oeXT7Q9HpY+Y+18R7PO21rx" +
"3ovyRLWlHVfOj+tLTc/l5r/kPd/2TzO36wun39+dq3Lye7P7z+" +
"8mD7ze2drfrp/T8/ePHor416EdKJiuHqTBh//Pw/vvrx9oe/rV" +
"9+PNldf33p4PvDOzu3uvHto7cbdxcxC0s/fz66oq4tll8XNNkl" +
"Wqhq+uynTzafbr4o7NYvG5q1P3q2Ee+WYtT8zpZofwa8sGf657" +
"ZXce398/v9/dW7enetXCJaf725d+1wYW2LbHmvGbUuuv2Xtnc9" +
"lnWqML0GXwZ0wL9mv4thT2Y6e+tvabny75jfoL17/WpGV5Hr9+" +
"sfrJ9Gxy+9+oFz5i3zfPefgkLlwz+/5gRP5iRQkXncrtS2fJ04" +
"t92Q/3hcHLrus6yeOx2Wc36OHzT6+/mT+0ut/bh0sN3q782n37" +
"T243iqv6X21a82jq+uNuM3+qe1H+8149/eWZzaj62Z/SKZ/sX0" +
"vXH52B80VlHtV8wr1WySrmhBFZ8SVdYWVJmqpKpq/sAH2Cm/vv" +
"mZgP058tOj5M/wBRT5d8L131x+q8wSTW7QAhWfE60sH600/G8a" +
"/31jsmpDFFwc/WT+V7LM/+bycZ/+arA+sH98/ihg2FVPf5YO+b" +
"jcrd+crj9K/ox7fDozPjjIyP946Nc/Qv+Z7ynFyXer368/f/Jd" +
"Fx981cQHd3Z+7Ol3uf8wEj8F+C/i9g5+1HrgUhTTziqWgXWTbW" +
"L/Veg/Yfstiy+R/T+cxg/LL9v4odi79mZhbfFd/EDj8YOJYTum" +
"I5662hvq+b9jbNfx8jekF2xP2A7GRwuRzi9N/1Hr61aoRs+/9H" +
"wy56/BWcL0Ukin86I/7PPfhvp/tWP/2PYZ2Bd/+yk+VLrxIfb8" +
"Ccx/XD+0+m/iwE/6+k9hp7HuG4xiHJ8yQfhjlP0OxE9F+Ghfvx" +
"bAfyq89uvXTj98MdMPP3f89+/fWPuefhn1341z/vHxk8vBRvsD" +
"7Jf4fDDsn5fewa1t/DuID/a9tqjk+ic4vsfr8/If+Qdgf7B+Q/" +
"zx0pPYR/QV7WbPCb5hmvjxBN+gEXxDRQ5eA/8XrV/m//L7J4f+" +
"ivH/Ef5s+OojdXwSG/+YuPHj8EmTcP0x+H//fDrwzT9S4JuQP9" +
"H6kYu/HI3qJ5oF2tj+Hfbb06A95r8fP8L0CPuHnoT4f3nmfJgw" +
"+WPBl27/F/NPNr+ui6b/+rT/djKVqmZtE+sHm2v/xuWDn39C8R" +
"NSC5H4LOwf0DPjg1L7zPKPtMS/QPpJ5t9AfA3VN4jrIziy4o6v" +
"pO1RfQKsX+g6qk771AO1J80fTntUsyGaNWgGfh+gf4Tj4/qHOg" +
"g+HVGk/vVH1bd44md7Bv8A+SNh/7nx/dP2cfUfmfMLuL4gBsgP" +
"wHfl8smUvxB6AL7Oxh/C8vN8/XoE7L9/fFd+uTzNL8vxJe/4cf" +
"nvMlH+G/bPzj+QOz+ix/ADy2xvpPFRivwJJch/CwU0d32aiou/" +
"hfhOKP4UrH8wnXngVGD8yJN/5vp1n63p8lcn8m8W1Lj8G+b5Jx" +
"DfefMrOhqfYttnTv41Q35loB8KZvybDt+H+Qs//g/GZ/g3kfIJ" +
"8Cvli78j1h/tf2XOn2TmHz7/iL/+/M3hfPxadPHroH5Ghh+I76" +
"cAfADnv/n4eTlCwPh27Y3v2fbZccxXzLNZ/a6e5rdomt+iLr/1" +
"jBmfxM8vLr+VMP6OwpdxfqBMlh8A/Z/1mE2wf478S09+QJWKjG" +
"m7bejtFJcfNhMztl3XRPfwF3/8H3s/BK5v5l84+/fnByC+Lbzf" +
"hOmJ7JMEX9Be+ZP5B0J8WI4fA3wX0gMgqSz6KRE+F4SPmnT4aC" +
"r58cs30g/O9gz5D40ve09c/ixH/B8SP4XYj/n9q5j7qwLiS4Af" +
"InwQ+M8IH2PdL9FAPj106fjx+OY+N75D91+E+KGJ3L9QfBbmL+" +
"L0b7L7DR7lpiXy2acXgfgqxI8A/3F9cK74mIufXOz4nfV+h4z1" +
"zxA/wP6pvz70wuMf58tfjn+cs34/Dr+nZPo1RH+WYv8llX+eMv" +
"+C8AEhvgDrJ2vv+Ub4ABs/iOe/9P0Tovo9JP/I/xfXD2D/KUV7" +
"7fWfdHx8n+D9Bxx0w1ffJKOL4y92/Bu5vszyk+T+s8A/D8IXKv" +
"Dd6owsi9/vAeiwf6l/BPQTjG+F/m98/7z5i+NLTv+C+D7P/Y85" +
"aqdfq7KZwnpV2Mb/K9tO73U9jOvXpO9Pc7e3zPay+Ou/7t/nr0" +
"9A9/P+7+sH9lWYfw3GdyzHvvfrh/z3r5D/AOIDqf5Nc79HUB/E" +
"vR/ioufOz6Dzl9l/DfWfA/cP5zdAfJ/Zv4L0FPXZoveroPwGCe" +
"+vI/8vb310ovoQ3/0+Dv4b3V7qX5y7/RPi4xd9fjC/kAJfZPlH" +
"46qCf386sv5IWF/DyE/nxU/w+2W5+Ehsfj83/hSUnwvOP0H/A9" +
"6/Ycmf6slU+P0gV/t0+XeBfUT5Vd/7w3F+7GLnJzOPH/d+vxD/" +
"TpofgfGJFP8V4rNC/RGV/wqhx8gPny7GJ6XvH08Rv15kfOvfGN" +
"/DP1ifLn2/SmY6il9xfMuTf6f95dAF8nf+8Y+sf4Z+9Opn6f7K" +
"9x/FLwn46xv/HyZOQdc=");
byte[] buffer = new byte[uncompressedBytes];
Inflater inflater = new Inflater();
inflater.setInput(decoded, 0, compressedBytes);
inflater.inflate(buffer);
inflater.end();
sigmap2 = new int[rows][cols];
for (int index = 0; index < uncompressedBytes-1; index += 4)
{
int byte1 = 0x000000FF & (int)buffer[index + 0];
int byte2 = 0x000000FF & (int)buffer[index + 1];
int byte3 = 0x000000FF & (int)buffer[index + 2];
int byte4 = 0x000000FF & (int)buffer[index + 3];
int element = index / 4;
int row = element / cols;
int col = element % cols;
sigmap2[row][col] = byte1 << 24 | byte2 << 16 | byte3 << 8 | byte4;
}
}
catch (Exception e)
{
throw new Error(e);
}
}
protected static int lookupSigmap(int row, int col)
{
if (row <= 1217)
return sigmap[row][col];
else if (row >= 1218 && row <= 2435)
return sigmap1[row-1218][col];
else if (row >= 2436)
return sigmap2[row-2436][col];
else
throw new IllegalArgumentException("Unexpected location requested in sigmap2 lookup");
}
protected static int[][] value = null;
protected static void valueInit()
{
try
{
final int rows = 58;
final int cols = 84;
final int compressedBytes = 4767;
final int uncompressedBytes = 19489;
byte[] decoded = new byte[compressedBytes];
base64Decode(decoded,
"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" +
"UWtArkFpLWtwnV0sNYTlaO6PevIjf//7rPvCKGRj7NbIPLRGrH" +
"5R6qQ99CU2Jn9RbM4e+rkyzCw58EzI2CI2q80gN6O0ls24zhah" +
"hmNokI1jpA9F9PdHd0oktyEDySLOarnVQ+6xB1WEESH/lrBiHg" +
"GxQ1+KayqunzNXm9/q90OA8yX/D78fcs8f4/sTuDWO7/uzevfv" +
"9f359eP8/ZCNaiP0dSNK2+mNuO6YjxqOoUE2jpE+FNH3826J5D" +
"ZkIFnEWc2WXRpyjz2oIoyINcWxpcfQN+KaiuvnzEHXr8zfF/Wj" +
"tJZ+XFdeRA3H0CAbx0gfiujP72dJJLchA8kizorcinnx3MQFNa" +
"6mOLb0GHoorqm4fs4cdG2qDWSbk1bfhgOOgb8gK+r4zK1w5jY5" +
"I4nxBz8qc3IbY9cW5yGN/bw/VsxLZiRGyCb7sMwumTQ/75NhZs" +
"mK65CxtbeoFpAtTlp9Cw74bFxEVtTxmVvhzG0000cxKo9fG5M5" +
"uY31syXOQxr71uGOYl4yIzFCrrwmHhvt+L5Dtegjsl7JgnTI2N" +
"rXqXUg16G0lnW4rryCGo6hQTaOkT4U0efdJ5Hchgwkizir2fK7" +
"Qu6xB1WEEbGmOLb0qF8Y11RcP2eOmmM9T65skzr5PFmr4t+3yX" +
"aFT1l5fLX/j/M8Od/1+z5P5lcZWNPbPU+uX3N8z5O1OStN2Hd4" +
"U5xUE83KJ5JX7f+kAfrkPfAZmA7XAxPm7zs4h+qpzs/G+K3pp0" +
"UtwLgWw/9fjgnx13Lnsp/wBCLA/+qk+U7U9LM6k+MMQ8uqLfnv" +
"JldAJHOaTM4w/aRc8SxZxLVyDv3sTa5kdX3c2eXfd3gO3cL7/w" +
"COnHFn");
byte[] buffer = new byte[uncompressedBytes];
Inflater inflater = new Inflater();
inflater.setInput(decoded, 0, compressedBytes);
inflater.inflate(buffer);
inflater.end();
value = new int[rows][cols];
for (int index = 0; index < uncompressedBytes-1; index += 4)
{
int byte1 = 0x000000FF & (int)buffer[index + 0];
int byte2 = 0x000000FF & (int)buffer[index + 1];
int byte3 = 0x000000FF & (int)buffer[index + 2];
int byte4 = 0x000000FF & (int)buffer[index + 3];
int element = index / 4;
int row = element / cols;
int col = element % cols;
value[row][col] = byte1 << 24 | byte2 << 16 | byte3 << 8 | byte4;
}
}
catch (Exception e)
{
throw new Error(e);
}
}
protected static int[][] value1 = null;
protected static void value1Init()
{
try
{
final int rows = 58;
final int cols = 84;
final int compressedBytes = 3861;
final int uncompressedBytes = 19489;
byte[] decoded = new byte[compressedBytes];
base64Decode(decoded,
"eNqlW2usnFd1vTQKsnH44ZQ0SkRlxwpJID8akJIqQKSTmTsY2x" +
"JQWkSQwq0j27KxrEoYIsdCsjMz370zcxNwbQeV2PVDdlPES0JB" +
"IKQ+/CNNEAQK9EHV/oB/4SFFgqQVCbmpOI9v3bX2Pt91QrhHZ/" +
"Y5e6+99trH883jmyTcF+6bmwv3hdbOzWGX1s3AeohVtObDzzzm" +
"z+W/uz/vWRjjn62oe2CX3mV9Nu5zqaaZ7+ZW9XNzy3/vK1sNWg" +
"mKM2Jr2BrtVtgc2Yp9b5P1EKtozYefecwvdad7PQtjcp5bbR3u" +
"gR3dbX027nOpJvXUxa3q43l+2Ve2GrQSFGfE6XA62tOwOXIa+9" +
"4fh9NLf1P8xHAUtE7vV8a27nctUmNQYFXUVdOcrPPa6wx2BMbS" +
"k+24rEcXNGP5p3VP3f2r8uhrQhNtA5sjDfbNe0PTfLz4ieEoaJ" +
"3enx4nt9Abff+qyMlNGoMCq6Kumllv9trrDHYExtjTVt9xWcfz" +
"lIzlX9U9dfevyqNvT9gT7R7YHNmDfW+z9RCr6PGzGit+5jG/rf" +
"sDz8KYqNtj63AP7OQu67Nxn0s1qacublUfUVf6ylaDVoLijLgY" +
"LkZ7ETZHLmLfvC9czNe7wXAUtE7vV8ZSt/d9i9QYFFgVddU0lx" +
"712usMdgRGW1+5lz6rGcvP1T1196/Ko+9oOBrtUdgcOYp97wg8" +
"iuFgTDE2h4xt3e9bpMagwKqoq6Y56XvtdQY7AiN6qrltxvLzdU" +
"/d/avy6DsUDkV7CDZHDmHffAAexXAwphibQ8a27n9apMagwKqo" +
"q6Y5mffa6wx2BMbY0/t9x8oA7ENvqXvq7l+VR9+RcCTaI7A5cg" +
"T75s/Dkd6Pip8YjoLW6f3K2F7vP7JIjUGBVVFXTTPxdOvS2tQC" +
"j9ZXbvLl87y37qm7f1UefevCumjXFZv96zDieX6IUfh0VXZYlW" +
"lXtKv8/25rakzUravr0JPfj97brctWpCKoaf7CVrdKUP+hvb6y" +
"VaU+KM7x7WF7tNthc2Q79r1brYdYRWs+/Mxjflv33zwLY3Ke22" +
"0d7oEdnbc+G/e5VJN66uJW9fE8x76y1aCVoDgjdofd0e6GzZHd" +
"2Df7rIdYRWs+/Mxjflv3PzwLY3Keu20d7oGdbLc+G/e5VNPs7e" +
"ZW9fE8P+0rWw1aCYoz4pHwSLSPwObII9j33g2PYjgYU4zNIWP7" +
"fXOfRWoMCqyKumqak3/y2usMdgRG9FRz24yHflL31N2/Ko++pb" +
"AU7RJsjixh33snPIrhYEwxNoeM7Xl+zCI1BgVWRV01zcnTXnud" +
"wY7AiJ5qbpvx8Ma6p+7+VXn0nQwnoz0JmyMnse+dCifz902D4S" +
"honWX0TnFPxvb9/ZQibQwKrIq6aprNQa+9zmBHYLT1lTt+35SM" +
"h9/iK5PR9q/Ko+9sOBvtWdgcOYt97ww8iuFgTDHhbO8M92Rsz/" +
"OMIm0MCqyKumqak+967XUGOwKjrV93RgW+MuO2f1Uezs7fPn/7" +
"3Fx6LDZFyi6tmwfhUQwHY4qZv70Zck/G9nrfr0gbgwKroq6a5u" +
"S/vfY6gx2BMfZ01HesDFTgKzNu+1fl87eHaZjGc53C5pOeYt9M" +
"4FEMB2OKsTlkbM/zUxapMSiwKuqqaU7+x2uvM9gRGGNPS75jZa" +
"CCuqfu/lV59M2H+WjnYXNkHvveHdZDrKLHz2qs+JnH/PY8j3kW" +
"xkTdvK3DPbDj66zPxn0u1aSeurhVfUHbylaDVlJ82B/2R7sfNk" +
"f2Y9/MrIdYRWs+/Mxjfvv6+WnPwpic535bh3tg33Ol9dm4z6Wa" +
"VL+LW9Wzr1qpV2LxYVfYFe0u2BzZhf3gp2FXfn/fRZ+uClrz4S" +
"cTGdvffZ5SlslNGpPz3GXrcA/s5Gbrs3GfSzVLT3Zzx/d36Ypd" +
"dFWwlRQftoVt0W6DzZFt2DcPW0/YNuozipjmw8885re/x/0tMz" +
"TXnec2W4d7YEfz1mfjPpdq4utnJ7eqZ1+1Uq/E4sPhcDjaw7A5" +
"chj75jPwKIaDMcWEw8293JOxfX7+RJE2BgVWRV01zelWr73OYE" +
"dgjPV/7DtWBmCbj/rKjNv+VXn0LYflaJdhc2QZ++ZYWM735w2G" +
"o6B1ljG4hXsylrqDWxRpY1BgVdRV05xc6bXXGewIjLa+csfrXT" +
"KA8krr/lV59M3CLNoZbI7MsG/+Gh7FcDCmmDAb3Mg9GdvzvFGR" +
"NgYFVkVdNc3p97z2OoMdgdHWrzsDFiivtO5flUff+rA+2vXFZv" +
"96jPheeCOjZcTXz9UoYliVaVe04L/7c7amxkTd+roOPe3r53qL" +
"0rjmWjXak3JTLRTYylaV+hQfhiF+l0mPxebIEPvezfDAG89zyM" +
"GYYmwOGdvzPGORGoMCq0Lx9MTzdNrrDHYERvRUc9uMrp58HWqV" +
"fneGndHuhM2Rndg3l6wn7By9yChimg8/85jfnudZZmiue37utH" +
"W4B3b0G+uzcZ9LNc0/d3OrevZVK/VKLD4shIVoF2BzZAH73k3W" +
"Exbi83PBozUffuYxvz3PR5mhue48F2wd7oGNz88Fi9K4z6Wa1F" +
"MXt6pnX7VSr8TiByuDlfjqu1JsfiVewYj/lk8wCp+uIsPrsMLM" +
"iLetrlbI2fK/zdZMjw9+wJ+nreg15E80/9KtCxUf3KSKqKZoq7" +
"mpFiptZatKfVDMdd4/UXubp+rocHNZd/2N7xj9Za56/dqYwfVz" +
"r+Jv8AQZRgtdiOZbFpVWuntw01r1x59tK6xcpr7pYPg+ew5a2X" +
"Yarg5Xl8di4Sv73g54FOPROuknO3Pz9f6SZ2HMKyMfdsROf+i1" +
"27jXCE/pqeb26n1le1a16hKrr3d9hjdPD1ZGj9VXBa8Ve63bKw" +
"BX0Ojzyt+7Sq+d0cXu693X8VdZ76rxJ+rXDa2z1vXefKf7eh9d" +
"0DPwfdlHW0nx+srQcZ4/HKyk+yG/33lO/1erTy8py/S513aeke" +
"f513ieP3it57mWEsWHY+FYfJ4eg83P3GPYNy+FY7Mrip8YjoIe" +
"P4tc6y97Mrbn8DNFzv5AY1BgVdRV0xw/47XXGewIjLGn3/iOyz" +
"p+35QMRKyOrv5VefQdiOOx/Jht9GEX94Nh9tJDbEIeyDyrvrw+" +
"AA+Y4gn+HPHsewxI5iC2ipCKpY4oOLCKO9Cla1UVO2pzSiz3dK" +
"CKH4Daki9ddFRQJat9FWz8izbA5ljAfvCC9RCraM0vj4O3Mo/5" +
"7XXxVs/CmPxrB1snBPVknhesz8Z9LtWk+l3cVK8qa6VeCfS0iB" +
"1hR7Q7YHNkB/bNy9ZDrKI1vzwOtjCP+e05bPEsjMl57rB1uAe2" +
"+X/rs3GfSzWpfhc31avKWqlXAj0tYkPYEO2GYrN/A0ZkfTZsmP" +
"0hPcSWVdlhVaZd0YJ/+gvlmb1JY3KeG+o69OTPus9067IVqQhq" +
"Uk82Xtbx9dPo8JWtKvUpPhwMB6M9CJsjB7FffJ31EKvo+H4kse" +
"JnHvNL3dnrPQtj0s1BW4f7VZ7N1mfjPpdqFtfgVvUFbStbDVpJ" +
"8eGacE2018DmyDXYD07AoxiP1kk/mMjYnsN1noUxc6KmDnbCc4" +
"PXbuNeIzylp5rbq/eVGfeVFB9OhBPRnoDNkRPYL14Bj2I4GFOM" +
"zSFjew53WKTGoMCqqKumOXu7115nsCMw5t+PXMfKQAV1T939q/" +
"Lo2xv2RrsXNkf2Yr+43nqIVbTml8fBrcxjfvt+dKtnYUzU7bV1" +
"uAd2tsf6bNznUk2q38VN9aqyVuqVQA9zp++Yvn36J4NL09vab/" +
"+Pr94H+Fr89/x45r8k90MurXUXYfEb6X5I8w/Ad/3Nf1130+fy" +
"e8vZ6tvRJTJ03w+ZPm9RaaW7te6HoP7gUvOP6h9d8Ar4zUfuh1" +
"zy+myn4Xw4Xx6Lha/sF98Qzs8eLX5iOApap/crY/v75s8tUmNQ" +
"YFXUVdOM7+/nu3VpbWqBZ+lnvuOyju/vktHVU3f/qhwee5du+E" +
"14x38Wr6v8f9WNP6jfX9e+z5Wen/57uHt+PK672ZvWvGO2cvnn" +
"5/gZd79xxfax1vNz6Rfduqrn58pl7yeucQrhVDhVHouFL43+Df" +
"0bwqn8/X0VkzwcBa0TqLQuWDKmVeEkUmNgozKqslXTjM9Pp73O" +
"YEfsVesrd3x+Sgb0e6VeiZ5kjt0f7o/2ftgcub+M/p39O+GBN3" +
"k4GFNMQqV1wZIxf6t5Y+EkA2Ngw0pV2appzr7qtdcZ7AiM8Tzv" +
"9B0rAxUU/V6pVyLnmWOXu183/q9+39+nav7o8vfrymNzbX4u9r" +
"t+7yDn5X7veOX7dbMnX9v9ulL/lX7vSDsgf6f7dWdC+m+Jz8Dm" +
"kz5TRv+u/l3wwJs8HIwpJqHSumDJ2J7nXYq0MShQFZaZntlTXn" +
"udwY7AaOsrt82Afq/UK5HnZ4ntC/ui3QebI/vK6G/qb7Ke5MOK" +
"aM0vjyWvYJmfT7PlVBbEjLp9tg73wM7+z/ps3OfCB1U1N9VDQb" +
"dSr4T4jDgejkd7HDZHjmM/fygc710ofmI4Clqn+scvcI1V4SRy" +
"8EuNQYFVUVdNs3fBa68z2BEYbX3lJh/qj39te+ruX5WrRz4vrb" +
"7Ozj8wN7f8TkaHX8yf5+V1Y/iV+pVveJv9tDH8gvm89MD0/Kv4" +
"fdO9Ok3N/xs9/FJ6f5+es6/69peWNT/PP6D9Tv/ulT+vmd83V7" +
"w+qzNsDBvLY7LwlNHf3N8cNi4P6Ek+rBKS+ZzpMaHilbUZrOQv" +
"nKy5/B6tbXX5OvS09+s2WpTGNZePUGXjyqAKFKmsvhLwOT4O42" +
"jHsDkyxn7xWngUw8GYYmwOGdvfi1+0SI1BgVVRV01z+WNee53B" +
"jsAYXyc+4TtWBiqoe+ruX5VH37lwLtpzsDlyroz+lv6WcG7xuu" +
"KHD9GSgZhiEiqtC5aM+fmZOYnUGNiwUlW2apqL13vtdQY7AmNS" +
"4Dsu6/h5XjKg3yv1SuQ8cyy9Dix+avRXi4eG6+xrV5qLbx6spP" +
"+eVj9jDjcPt9S/C1/u92L7N/uwfr5c+/Pn8CNZ22H99Kif+iZX" +
"RswbWGN49WBleC3rlc+f9Wtc75Mt/k/tf2Hkv28Ot+vrp+9jeM" +
"/wQOfv7y9fboy+M3h5+bx6Yk6Fqn3F4/3xO/LT8Tzv6UKuqnoZ" +
"VhGWqXjGz6yloaxH39ZccMbzPNjNTc1UorzdnVf43wKImNfE");
byte[] buffer = new byte[uncompressedBytes];
Inflater inflater = new Inflater();
inflater.setInput(decoded, 0, compressedBytes);
inflater.inflate(buffer);
inflater.end();
value1 = new int[rows][cols];
for (int index = 0; index < uncompressedBytes-1; index += 4)
{
int byte1 = 0x000000FF & (int)buffer[index + 0];
int byte2 = 0x000000FF & (int)buffer[index + 1];
int byte3 = 0x000000FF & (int)buffer[index + 2];
int byte4 = 0x000000FF & (int)buffer[index + 3];
int element = index / 4;
int row = element / cols;
int col = element % cols;
value1[row][col] = byte1 << 24 | byte2 << 16 | byte3 << 8 | byte4;
}
}
catch (Exception e)
{
throw new Error(e);
}
}
protected static int[][] value2 = null;
protected static void value2Init()
{
try
{
final int rows = 58;
final int cols = 84;
final int compressedBytes = 4167;
final int uncompressedBytes = 19489;
byte[] decoded = new byte[compressedBytes];
base64Decode(decoded,
"eNrFXGuQHFUVniiER4iLBAhZgwlWiUsqCeElaDD0bM8sGDbZZU" +
"Ne5MXLqKgIGh4iYu7M9M7uzBYI4VGUFRKWl+gPyx+KoEDtmqz6" +
"h6RSKX+sf62UgDECsYIkobz3nj59zrn39uxSUuV03dd3Xt89e/" +
"v2Tnfvqk+qEwoFdaKaqk4u2I9aqKapNjVdzSgUksvUmY1hdak6" +
"W7Wrz6jZ6rNaPld9Tn1ena97X7D6HbrM02W+LgssskiXS2zvMn" +
"WFbb+iIrUE/A/eqsrq6xrrUleraxpd6qvq2oL3UavVWrVBbVQ3" +
"6v5NutysblXfUN9UU9QnQKN6QJ2iTlWnqU+p09WntcYZ6iw1U5" +
"2jZln7c7fOUXN0e54dXWDrC9VFhUKtX12s+19Ul6sv6XaxLleq" +
"q1SnbmNVYgyW6tKtyzLVo5arXotdp1ao69VKtUqtUevUeottSv" +
"Vv0eVr0YPRg4WCqaE1EhiZfvltRLgOHSCrHkRbicOYPKb5fEBq" +
"chkykCz8qKY0drncfQuaEXosFDrvcGfMPRADf07h+XPmGtscbd" +
"btZmytZDOOkyUSIV2urfPJZICTHdmn+XzE9UIyxm6zjENj1G3s" +
"lpiUu7bEpj417JuzB20ZWXLgkbh+tCHaoNsN2FrJBhwnV0mEdL" +
"k2t4e6/B7ZkT3EBZnrz8vnBhmHxqjb+LvEpNy1JTYmfsg3sUcG" +
"MrLkwCNx/agr6tJtF7ZW0oXjpCgR0uXa3B5xsiP7dH0+4XohGc" +
"tnl4xDY9Rt/FNiUu7aEpskCvvm7GlePlOXidSPmlFTt01sraSJ" +
"485eRLgOHSTjOtKGPELc4tNSk8uQgWThRzWlccjl7lvQjNAjzs" +
"n3LS1CcwrPnzPXWDEq6raIrZUUcdy5XiKky7W5PeJkR/YQF3y6" +
"/rz1WZRxaMz9hHjJiMQKW27HfQOOzGkWoQgyEtev/SabwQoo+q" +
"r/H8SSa7i0v83Uai5o6d88XjZ1/+luLmq/Q0+1VwDpn07S4rCj" +
"/aouv/XyuQKjaOlL2sMZrkZlp9Qi/q69/CRX134NGrXfh+Rox3" +
"2p5dD2TyOpr4efQZ2XwZeilVq20ubzOEo6V2nez1mrlVjrfK4s" +
"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" +
"VDKVOa");
byte[] buffer = new byte[uncompressedBytes];
Inflater inflater = new Inflater();
inflater.setInput(decoded, 0, compressedBytes);
inflater.inflate(buffer);
inflater.end();
value2 = new int[rows][cols];
for (int index = 0; index < uncompressedBytes-1; index += 4)
{
int byte1 = 0x000000FF & (int)buffer[index + 0];
int byte2 = 0x000000FF & (int)buffer[index + 1];
int byte3 = 0x000000FF & (int)buffer[index + 2];
int byte4 = 0x000000FF & (int)buffer[index + 3];
int element = index / 4;
int row = element / cols;
int col = element % cols;
value2[row][col] = byte1 << 24 | byte2 << 16 | byte3 << 8 | byte4;
}
}
catch (Exception e)
{
throw new Error(e);
}
}
protected static int[][] value3 = null;
protected static void value3Init()
{
try
{
final int rows = 58;
final int cols = 84;
final int compressedBytes = 3108;
final int uncompressedBytes = 19489;
byte[] decoded = new byte[compressedBytes];
base64Decode(decoded,
"eNrFXH2MXFUVnzayVGu3C9rtVq11Te2HlqzVCAq1zNs3C4ooFD" +
"+gKlqXFiFF/xHjP4b0zrYzL7v/SJRsbQqYTaroX6Kmlq9S0rKt" +
"IiYmJogG0/oRpWsTpCViLMF733lnzjn347273e32Te7XOb9zzu" +
"/eeffeN2/ejLpbvaFWUxepLrVAl3tr+lAL1WK1SL2lVmv1qrfm" +
"kl6d3q7eoe7X5bvUu9V71CpdW53r1uj0Xp3W6XRZLnl/rTjUh9" +
"SH8/Kjqq42gmy0rYZy2TXqWvUxXX5cfaLmOdRmdav6ktqia1/R" +
"aVhtVXeoO9U8Nb+DeKN6k867VY+6RJeXqiVqqepTy0C7Y4Vaoa" +
"X9OXJtng+o9bpPS9QHdP1ydYX6iC6v0mmDuloN6jJVDRb/Op2u" +
"1+mTOn1K3ZjLNun0GfVZ9Tl1i/qC+qLge5tO2+rd9e5azeSmNA" +
"fUoZ0sJy3KeA1aWIMka1Si/9FMxuQ6OmREm4ONkQgekRghG94n" +
"7pvYoncZ2Y5IMok3x9BZ80JPpgat1tukjOdc49a5VPpvH5I6/4" +
"F4xPpsyCvyImZDZ3eskLyxbD/p889lchR4byEGvnzM6uvr6yE3" +
"JUqw3VpOWpTxGtlTkjUq0f/gsIzJdZKXHYckNkYieERihGxMfK" +
"nnHjgDGdmOSDKOrw/UB3Q5AGUuH8CXHs/3kRZlvAatkVPUAg9U" +
"oxL9Jy/KmFzHejPgxiGJjZEIHpEYIRsTX+q5B85ARrYjkkzi87" +
"W02I+K1j06LTK1xjMdmZ75ej96EPYjna/qaNawNfmyTu2DYq3m" +
"+9F3YT8qP9TNanNebinawx6M3o/UvXmtsx/pMt+P1HKY72Y/Uj" +
"/g+xH0yexHeXkV81eyHxWyTerTtB8Vsi8HVqxJd+1r3SG1xZoz" +
"6VsxrZUniBk9UIs4hia5B18EG2VqJo3sgRaMp3u0vmr3t2o8fF" +
"KKHPIzdAhr6UNYazwrtaAhJMdKWRgzejBqPA9xD74INsrUeMvH" +
"jPepzH9Yj1KKHPJD8z39YSf2b61+5Boz311sWCbbyUO1qAPme2" +
"A8C4/m+rODv1SnpeXMeJ9gvpfEv65Ue4u6y8tsPB2HHEts6dcy" +
"/RpvbTcSicEXWXCMqVFbSnVrmZRxHVgRM+5dRvVzty0IyfDLpJ" +
"Xbe2LiMrWZ8JHk7IXmR5215gGdHvRp9HXcNbbEh3LbyVRtxofx" +
"uHNtNcZ3zEb8vP/XeqPuTfdCjiW2TK3143Rv6ydGIjGEwJxj0r" +
"3g2fWX9+eklHEdWBEz7l1G9XO3LQhJeB7f7RkxcPvk6z8fyVy3" +
"O92ty91UYsvUWk+Z3EgkhhCYc4y0kVK9Hz0vZVwHVlgjhBsVET" +
"5eMjZ5BUnyiLRye5+/64+4ffL1n43nbs5er9NrPddLh/3XKdXX" +
"S+FjcFGZtrE2brZVewldLyVPxfivRlUxbXSuy9OJzngesVaHCW" +
"e9mPCsIRNl7cHuOBala+NEtRcfs3ykfhk1npUoP9N0T7oHciyx" +
"ZWqtZ9I9gJIYQmDOMdJGSvV8f03KuA6siBn3LqP6udsWhCR88r" +
"C0cnufj+fDbp98/ecjydnr8V7tme+/iZnvI6fKUbI9trz0XV8d" +
"dbVfcYfKeAnO9yejzs9KlJ9pY2VjZX0f1KCs7zMyaLeeNbmRmD" +
"ZhTB1zsEC9z9PYO9ldhn2gg8hgA6XRgS1iUI45vtA7+UFbzoyQ" +
"xCgfqV8gb+oNxyKKItge7JHjY9Dob/Trsh/LHNmP7cEdKOEYep" +
"GOY6QNeSzOzxUSyXXIQLJwo5JXHy8em7igBPrk+pYWvj75+8+Z" +
"N/rrXfUuPbpdUOYj3YUvPd//SlqU8Rq0sAZJ1qhE/2OrZUyuY+" +
"dxlxuHJDZGInhEYoRskkdldMmkc34+ake2I5IM2VA9H9/8Dlw6" +
"CanYi/Xno/Y8tuZORu2+k8YueKXzQOmqtGo2PrsYLyGuFD+uNz" +
"Njmh6BVHymWulq3cPej/yozn60oTYnR4hFcjCGZ3JwllgchlS0" +
"vudqI8bzcOl4NuZoPAMsksdieBJqhiyOQirOzw2uNmI8j5aO55" +
"VzNJ4BFsnPYngSappR96f7IccSW6bW3mhyI5EYQqCOY6QNRoGa" +
"Hs+bJZLrwIqYIcKOSl59vHhs4oKS5IC0cnufj+cBt0/+/nPmUi" +
"K/K87Pz6undx0dgxrbPjfnZ/B6/vEYnoSa4Sx5GlI+j59LG7Z2" +
"Z2+Mj535ffLUu1Kmc7V+Ph2QN6oQs8k0PQApr69L1+lz9H6uNZ" +
"JqH4DyYcHnnIxn4Hs/ip9WfDM4G0zTY5CK+f4rVxvno2S+3zVH" +
"4xlgsesb0+vN9I56b70XciixDu3GRinhLUJLe5STd9Ln47nDti" +
"Gd5OVnRVg/LxmROGKZPOHvMfUlXz+fsCPLeDwSsskRffU+XfZh" +
"iXVot/8lJbxFaGmPcqhRCTU9nk3bhnRsPPvcOCSxMTZvt0fEJt" +
"nl7zH1JR/PXXZkGY9HQjYm0TNe/FkubGfzfM9b2U9e2c9NSU/k" +
"sRjPn0uZyXfc6LtK4HHc57D482kSgfu7zQh0yX776THuobO/75" +
"f9krnNxL0y0h4yzKFmjqxLaofONlOuL7neyKavkagqXLMhUZJ5" +
"kgWvl7IYHr74+buR2XqJU+J52kLWeZ42u9h6nvbwzJ+nHXvswj" +
"5Pm/w05nlajXKep1VHqp+nTafSKb3TTWGZ73tT2E6OooRj6AW6" +
"kVNoK+XQJo/FeD4ukVyHDCQLNyp59fHisYkLSqBPrm9pgRqbqd" +
"t/zjydks+aOuvngpj1c+TUtNbPX9te5nb9bD8Xs362/+Cun2Em" +
"pIP5rs9U/3xfaM33o7Mw318w811NXrD5Pj9qvs8/x+fne+o9ep" +
"/vgTLf93vwpcdzEWlRxmvQwhokWaMS/Y8dlzG5jl0v9bhxSGJj" +
"JIJHJEYdrq/L6JJJx/frdmQ7IsmQDdWtM+ObnT30JktzLPS8fP" +
"zdkrET5/dzEc33wM4d5YWj1A3T+Hx0sn4ScihRBu1scf1ka5wk" +
"hOVobo9y8kQei+8bfm97IZ3kxeNQG7Ht41Im9bYtsTHxfb6bE7" +
"xX1AtfBBlJ4t1r0aHfoTTr8d3NizsPQ2dt+y/nZleFsX+LETo/" +
"2yfi/Jfry0ehfgZSMcs/j9LsEh+OkFEzwEIP/vnc7Kow2AeUhe" +
"wxfrn/5q3l+tAoJC+55yfIjARr5ecnfN+BWJ+NWD//M7vnJ7GN" +
"Oz85vmT9fGlG5+crkIr35jaUZvpqqTVu4wgZdZ5Z6MET52bnzN" +
"vjEoN9QFnIHuPb+qZ4fqx5e3n80Cg0F+bvRjekQnZx8R51N++0" +
"3rUcl3ifbWu+uSi7XBsxDn+PG8+kOw7TXMC5kV3Ivv23GP/N7e" +
"X60CgwxCjmUMvvvR6VWjjHSV/lzTevYqwNKi4KoZD5rmPQCs73" +
"0RgeofhkXeYnWQypeG/uRmm2RL+f/7BxhIwaGQs9ePzc7Jzz7J" +
"8Sg31AWcge49t6a75/qzx++Sioi/jvZfB6Xj2fLbVwf2z2qj/x" +
"38tUH4rt503tr/1ipN3mivt1Pf7fy6gXKq6X7ivw5+X3MsXq+j" +
"IkeX7WX876fDhCBvv6bWkj+hP5+4rqKBKDfUBZyL59MsZ/855y" +
"fWgUKu4vrZru/Xn7t9ye+0uvXtj78+1/x9xf8vUr5v5Sejo9Xa" +
"uZHMr8Tt5pbGdrUMIx9CIdx0gb8ghxG7dLJNchA8nCjUpefbx4" +
"bOKCEh7f7RkxcPvk7z9nnp6uuF+31rpfd7zqfp06UXW/rv3Khb" +
"0/3z5zPv/vwne9T/Mku9xdG+L+n4Ef2RXi/xn+O52ndqr+n0F+" +
"bnM/H3nm+6tyJQp95vF9z+hbVzy8himX9+uyK32YoeGI0fBimi" +
"N6vm2KGs3hqijNtkSZGm+F7DF+lX+/HqXk38XZ71TzO53xvN6H" +
"8X9+j/303fha3Nk5nX8Z8dwjOxu6XsL45f6b9/r1/J9EvPeAtw" +
"xtgRxKlEE7u0FKCMvR3B7lZEf2xXw/a3shneTF41CbsFIm9bYt" +
"sWn/z++bs6d+uUxtJjZe59soz9+bzlPJzfs63Lf5kCVnThDT+H" +
"rU+bktLgqhTI23QvYYv8q/X49S8u/ihrZSbs33m3wYQpawCWLa" +
"r0WN59a4KIQyNd4K2bfPVDHMx+D7fj1Kyb+F+z8x3BoE");
byte[] buffer = new byte[uncompressedBytes];
Inflater inflater = new Inflater();
inflater.setInput(decoded, 0, compressedBytes);
inflater.inflate(buffer);
inflater.end();
value3 = new int[rows][cols];
for (int index = 0; index < uncompressedBytes-1; index += 4)
{
int byte1 = 0x000000FF & (int)buffer[index + 0];
int byte2 = 0x000000FF & (int)buffer[index + 1];
int byte3 = 0x000000FF & (int)buffer[index + 2];
int byte4 = 0x000000FF & (int)buffer[index + 3];
int element = index / 4;
int row = element / cols;
int col = element % cols;
value3[row][col] = byte1 << 24 | byte2 << 16 | byte3 << 8 | byte4;
}
}
catch (Exception e)
{
throw new Error(e);
}
}
protected static int[][] value4 = null;
protected static void value4Init()
{
try
{
final int rows = 58;
final int cols = 84;
final int compressedBytes = 2881;
final int uncompressedBytes = 19489;
byte[] decoded = new byte[compressedBytes];
base64Decode(decoded,
"eNrVXGuMXVUVvjxaCQmlsQ4MtGYSsCJCfYAGHJx4b+89tswAYq" +
"wWtGBMtWViaSsUjfFP97mBnqu3ifjCRyW1iv7RmBgUy8NmoIW/" +
"TibDjDTywx9qjMQQww91DO6z91lnrbXfc+e2xHtz9tl7rW+t9a" +
"1193nsM5PTaOhPtpQtla3uQ6/Y1iAfwKAe0K6+aQm64jwfyrSh" +
"Hl026BN4UWYHx0wvWl+cS205ezMXuvE4HOvzYda22M4rzLODUf" +
"cVrqe1tr131vIal+3B20PcsBquPMyqgvzgmPs376w1fyOX1+J8" +
"168bkunonZHOiIwxAnsVcQTGxZ0goRj8oo5iuA16rPJZw5FUBw" +
"w4CzsqenXxorGRSy1ZY2ZMPSADOyd3/pS5lG3obFC/xw6iUbJy" +
"K+7SWhjrEexhZOqpHPv1L78eddrGhQJEcTd6ha+N4izs2NTm0N" +
"U8ixADGiUm09HFAXG+iRMPiItlu07m/qB4i5JcIjdZB/Fqhdio" +
"2qtgxot3yu3abElsUqP31J7eL2606lmxEB8WW8RWub9ZTLlzEH" +
"eJu9X+M6r9rLhHTItzxLkGao2oziBCzhAxiudPMVZjrib1vEFc" +
"V0k/UO0/KD4kNofrKRxnJLGDjXbK7XONRr4pvyaXOebvE3tl+7" +
"aynoDJ3849dN/tipVf6eaQW7XM3yF/w8sbQ/nkYxH9dZ6Z5omf" +
"b7Qk1y+T0bhV8SN6ftZz6WG5fYPU87b8I7af7ivJES+V+awfUj" +
"1vCesPeuo9rPjLYPqJurfdqNwDK/R8h8znsrOUxcc99Rw4vjiZ" +
"jFwltwvqiNUvL/6QHZP3AMcI7iW5nRZXLIvFy8b586pEuzsjVw" +
"jJUlxI8G+Wm5z/4o88C/NzqDqXihsi8SeD2jvEnrB9q9+6t2z1" +
"VuX+fdSq9t68TfUhb8vXGGwiuLzDUZy5ziYUP+zfFx+t0/wopk" +
"fq3g+NX+WlAY4SMj/zRxuNzRcP42iOe8l/4KlU0vWwteKrZnOb" +
"3iSTAzWnn1Mtb4O5/MKP6a9NYxOPwlHIP2xfTNKM3HWQGfySez" +
"YjoH+fn/K+rflRfn1vTfO1ldanrL/9mP5I2uo9LQpfU9KR5uqY" +
"edNhhtoufxz14Knc0zVqLFO8n69ZPaq3eJXSP/1Lh3P9pryWc7" +
"+UP5EyE/LfDvFO4+m690zqrEufqZt/cnbul3z1TIuf/25F585/" +
"6q3ydQKkxSYXDpGpvtn87A1mF8NADiDz2RfXpvkP65dThfzZ+l" +
"xjrMFaN4fGptYt7X/1zM5LiOdmY+fkqcGpIR7vX6+P1S8ZXLa6" +
"xrDeNLVuaf+bZ7ieW0Ns7Jw8NXhhcAZddaeG6yOyfv9VLVP3Y9" +
"0j+ZzsJ6yPxPXO5yHzsp5Hku5at8fWR/nvy/WR+Iu5PqpGb81n" +
"Pcd7O2V9VHTEpOt5iPiYuT4Sn06/vhfPcc2DJ8t6Js9zdz2PDu" +
"koWozoPfVsRe4vurcAarnPl4w4X4NW91Q9XzW0U2q9WetbU+x4" +
"nzK9mVKuCbOJ4dR6k6CAuY4nNVOhPGM8fPHROs2Pcf78suEtC9" +
"0Lue+mTJv+j87s+RNYmHF9OXlq8PIQr0f1erN4zajNZGiMo/xP" +
"fpv+sTN8PZp0x63165K8rBsw+j/stZqWlRLo8TWdOQ/18Q5Ylw" +
"2r52ODrQN8GGTL8/Ddz1N8qC5hfdp6uJpdf657f03JMfx83qrn" +
"T9/Y9VEr6flBGsqT8RewNer5NxcGkf56mhhSz5+lcfJ7cKPKHh" +
"357FujMYYa5daDFP3buGwvtsb90m0uDCID9dzrreevk+q51+/B" +
"jSp7dOSzL26NMVQz6e9uPUjRv43LdmKrfNUr096GRuOhR0wMIg" +
"OZejGbf5xUz52xKIcu4KiyR0c+e4hv6nN2ncxfc9uDFP374rR6" +
"0LbqJxa9MUPbwX74fgkx2salCR5vvRQcRQFzzUJqOqE8Yzx88d" +
"E65qd1GFrdU/W80tBuyf9F9a0tzMMW05uNoZpgPodjuPzfHAXM" +
"dTyp2RLKM8bDFx+tY36ymZrpf+t63si11X9mzSScP2e81/ffJB" +
"3vM2aUGKrs0ZH3efJ/TIbOe5Zz3HqQYmQbl92PrfK1qq7nuAuD" +
"yECmXkz/eFI979ceejd5M16NKIhIRz4G3fNiDBXqTW49SNF/vB" +
"p4fe9NWL/uip+HdL43nPvL7oWDPQ9Jjz/o85BsH7aqV/+Vo5e5" +
"MIiM+XTm8+00TmlRCOt9LAevPcSP+XfrQYr+4zxx/d5dI7d1jf" +
"/Lj+/82b3o7MTP7qkjXlLPz0lby/txb9b8+G4am1iU7mUcVfbo" +
"yGcP8cP+u+vdepCifxeutVpv/PzZWt0dc+EQmXTnY6A73xnMLo" +
"aBHEDms4f4Mf9h/XKqAMd7d6E3NfzjoPPIkK5HVwx2vA8rfrDa" +
"q/RWMd0I0t6tLhwiU32zI+bJwexiGMgBZD57iB/zH9aHqpDtx1" +
"bV85r6/LnNhUFk4PznxRSfSjp/7k+LgqiyR0c+++KTMYaqBu9y" +
"60GK/jmutae1R7d6DzI97u3jEsRSNLUHOdqhfRX/adML6jgvGg" +
"fHgO3t5zKuN22RTRnf5Zuyx7xspiYTjm+/3n7dzEXLym3zqNbC" +
"GLC6j5ZcT+W2d6oDP9yTaQ0tfF1sKQs3v/r50ijFUyahj0vPZV" +
"XMpbZcX5et3ivNEoyLXSChGPyijmK4DXqsIzOkrYMeZcWjolcX" +
"LxobuYCk+7iZMfWADOyc3PnzrMpe8zHdlvuybVZ/4UEJYPS+Sf" +
"4CZI65JWK4htvzvmZg4kwbys2OWPbK6zsdmz1XJpyni6kdj8vV" +
"Ge0+bNX9Uv33ju57XRhEBq4UXkwn6b/6s/vSoiCq7NGRzx7ix/" +
"y79SBF/z4/2bTjed0BW8v7XjbTjRV9sum0KIgqe3Tks6+f101H" +
"ntdNh/JC/xzXHG+O67Y5jhIYF59HLchoD+1x4z3cN8fdMbmOYs" +
"w4KDExHEEjIiOI+9BuHp0zoQx4ZDMiyji+Gk00J7CvNzk/v8hy" +
"nNAa1GspPk9uTnjOeBPov3Oc23vPkhPUowuPPoEX9UztoS33ne" +
"OUD/VLa4BVMH1qW451zuRd5vmzu9C9ydbyftybdf5K+s/fbFda" +
"FESVPTry2UP8mH+3HqTon+PaL7Zf1K3eg6z8yvX7V0BCMfhFHc" +
"VwG/RY5fMCR1IdMKAsuGeTp4sXjY1cQELj25khAzsnd/6UuZQt" +
"tBfkfgH2SrMA414XJBSDX9RRDLdBj1U9T3Ak1QEDzsKOil5dvG" +
"hs5AISGt/ODBnYObnzp8ylbLG9KPeLsFeaRf2V87MPEorBL+oo" +
"htugx6qeMxxJdcCAsuCeTZ4uXjQ2cgEJjW9nhgzsnNz5U+btxf" +
"D7LnqHU953Yb5rI/K+i6dQ94a87+KplPdd2FxiMh0d3yeQ7cbn" +
"yfp9AnJ+PgzvE8h2q/cJ9DUS3idQW6j3Cchtk9wOl+8T0N5c7x" +
"PoPF/ZBN8nkO2WUaLvE1Co6n0Csjcit1Gicb5PoPO8fp+A1Aff" +
"J4D1UJjbuVT530El+n0C7fn2vJyn87BXM3cexr1vgYRi8Is6iu" +
"E26LHK5xmOpDpgwFnYUdGrixeNjVxAQuPbmSEDOyd3/pS5lM22" +
"Z+V+FvZKMwvj3gmQUAx+UUcx3AY9VvV8giOpDhhwFnZU9OriRW" +
"MjF5DQ+HZmyMDOyZ0/ZS5lc+05uZ+DvdLMwTg72p7Ljmo5YvCr" +
"0XQz5dRjVc8nOZLqgAFnYUcFbm5eNDZyAQmNb2eGDOyc3PlT5l" +
"J2un1arYSeJRola5+W58/ntFaP9QZjHHE9eKR9dv48hVEAY6MA" +
"0TuJ0eBLI9MYXEO9UnznFM8ixIBGicmq6P8D0VcRGA==");
byte[] buffer = new byte[uncompressedBytes];
Inflater inflater = new Inflater();
inflater.setInput(decoded, 0, compressedBytes);
inflater.inflate(buffer);
inflater.end();
value4 = new int[rows][cols];
for (int index = 0; index < uncompressedBytes-1; index += 4)
{
int byte1 = 0x000000FF & (int)buffer[index + 0];
int byte2 = 0x000000FF & (int)buffer[index + 1];
int byte3 = 0x000000FF & (int)buffer[index + 2];
int byte4 = 0x000000FF & (int)buffer[index + 3];
int element = index / 4;
int row = element / cols;
int col = element % cols;
value4[row][col] = byte1 << 24 | byte2 << 16 | byte3 << 8 | byte4;
}
}
catch (Exception e)
{
throw new Error(e);
}
}
protected static int[][] value5 = null;
protected static void value5Init()
{
try
{
final int rows = 58;
final int cols = 84;
final int compressedBytes = 3007;
final int uncompressedBytes = 19489;
byte[] decoded = new byte[compressedBytes];
base64Decode(decoded,
"eNrdXP+PHVUVfzW0EQna1tW69Ntatyt127igfLGozL55r1htiS" +
"aA4LdYQCr4g24sVaNi73sbnL5EE2IRN9hdLEq0hmqiScVUY9Tf" +
"JWmw/4G/tLuNCZFgavTeOe/M55x778w8ln0lOJP77ZzPOedzbu" +
"e+N/PuThsNdyT/okJH5x+NvrR7a0MdhGNk98ONAQ74paP1u0Zj" +
"OXZ1GM6BZWX2HL/Of7Ues1B+TH9Fz6edsWYc8WqO1p8al+Uo4z" +
"rc+MmOZAfVrmUJnd1z7aeTHa7ghN71YI+ie2jZf+vPOqbUaV5+" +
"HEh8jEbIiGDEbFx8rZceJAMd2Y8Imcbn/Ul3Fp4mqTQa7QUqLJ" +
"O1ROta93z/rTNaV/LvPKk9hjbtBXhlXmDmayBrnYn5lzI9CzJb" +
"isFnGTP/EOv9IzVrak/5qHS9/2XI63xPNZvhxm9fal+i2rWQ0b" +
"j1S5JKDLRSh8I1vIf+pczVRz4eZ4Y4PPJ5hrxYf2Srz0jmFPqG" +
"P7CUCD0PmonE59fsFncWV/oWKo1G9mUtk7XU6Fr34v5r1/sW7T" +
"FmA6/MC8x8DWSPHoz5lzI9CzJbisFnjJk5ZK6w9WqzxryxkF1l" +
"3mKuNm9tNI4umZFc8nZbNppN3f22HTPbzHYzYXvvznXX2vIeW3" +
"basiuXTBWebjA35+2HTGKKuyvTzus95jZjP0/MXvOx2Iyae8xn" +
"zefM523vgC33mvvNF82DZpV5Q4G40rzJ1m82a8062643bzMbzD" +
"vMKF+fZquVvjNH5t8T5r3mOnuNzJjrbf9Gc5P5gG1vseWD5lZj" +
"72RMalr2M25f3/tHbbF943K+3eQryHzCljvMneYuc7f5tPmM4n" +
"ufLV/oz/GYO4t/mTEqdm2c1DJZS42udS/uv/b6HNMeYzbwyrzA" +
"zNdARjn5/qVMz4LMlmLwGc10Y7KRamq57850JB1JNs7OQCL1QG" +
"t7lsM79O5wPrUNdJpXnBVjs6/GeemI4Mitix/LuHNC5oAsYhF0" +
"JIlPNiebbbuZW+7T+Oh/tUSOgNb2LKceWurZz+xnfBvoxHxuDu" +
"NA4mN83mFGYOPixzJGLuxdR9bxZCSNz+8t1lPR90vT67ve9y7h" +
"gBzo/sVDZw8vz64OwzmwrMw+OzSY/2p92SwkU8kU1ckUJDzurY" +
"KWZbIHexTdQ8v+s6/pmFKneflxIPExGiEjghGzyQ7r6JqJZKAj" +
"+xEh0/hGo3mRJNQ2L/L12bzYvavRmB1lvcTKI5SxpxhWS7Ovh1" +
"Y+Ju599ppqDke2Smmsp/udE74/7bM6c+6lx9PjVHPLI9frjbja" +
"STQGCK4lRttoqfYm/UIHZtK7jhrn7lsACXz2bW0VZi9Z+kx9Jj" +
"j6url0zrZzaHnker3trnYSjQHC1d1F6klLjLXU3k9/S8ukjqy4" +
"B0QYlRExXjo2vJIke0RbhdmDScjUZyLmc06yV5qnudfbUaYpl4" +
"QyPc46r/4pORZ1UAx/Hw3nSJ9Mn6SaWx65Xm/S1U6iMUBwLTHa" +
"RkvtJ83zWiZ1ZAVm0ruOGufuWwAJvIwfZgYGYU6x/OVMSvb+k3" +
"3/+rzBxj8X00hJd7HMPvptcm5lroQ6P+776JXYrQyv9Kn0Kaq5" +
"5ZHrNY+62kk0BgiuJUbbaKn2Jv1CB2bSu44a5+5bAAk85RT61h" +
"axnGL5y5mEbWdTcdcwbp/qizvu3k3ebxQng18tng2vTzNV+Qvh" +
"yZW5Ph/9Z82vuNcPN37J9bmQLlDNLY9cr9dKFwilMUC42n6/L0" +
"iMttFS+31wTMukjqzAjBFh1Dh33wJI4LMfaKswezAJmfpM5ExK" +
"9iW/z9/jPWUdrBr72ri0/dOVuRK6nyp5EjxYxWbl4leuDbXexX" +
"zeO4QdgVOv8Xo/NdT1Pp/ONy+6mlse5b3H03n3vJnOE1Jq3Ql7" +
"12OMk7g+YSHlp0kpy34odWRFz5syBkaIN3uN9C55wYKQ5JUkLo" +
"q24n7nBGzZRueks+E8+XlT2nor6b6id7+3lvZVjX1tXNo+O+T9" +
"uH1VbIYdH7tKrW3+Ppf9Ptof7rnJ/S1/L6psP05FfEHut/n7cW" +
"Chd8HC/bYwBhg4L7QfF94Rt1/QWfi7hWXzFOyTbovtx7WmWvbu" +
"xtXU5sgpHvfuZInE4IROYrQNPPbj/l0jpY4ZaBZhVHiN8ZKxwY" +
"UlMn6YGRiEOcXzl8xJ0j6MOl/lDxa9h4rZPxxDVvx7lmKyuYHW" +
"zeHBogDlenJUZp/9qI5hlZ6l8K9xrfHWOPe0LC9/I2kxVlgedR" +
"e13vdU8ncF4xxHoiSe5VzzGfqBreQb95od9zOOeQ3Zxvj7CCsb" +
"a7k9vzFuc81YMT7LEonBCZ3EaBt4LCIrZKjjnmSlo8JrjJeMDS" +
"6F5KyfsfQABmFO8fx1Vunp9LT9nj+Nlkeu13re1U6iMUCwTmK0" +
"DfW5p71Jv9BxDwg/KrzGeMnY4MKSbF5bhdlLlj7TMH+dVXA/+h" +
"yVvL82XRtqB7inrUT5Pod2Z/1cXfzBslnOkbxERT9vJi91Z2I4" +
"IAf1rb4PTi3Prg7DObCszD57djD/1fqyWUg2JBuoppb77kz3pn" +
"u1RI6A1vYsh3fo86tir28DneYVZwVsnJeOCI7cypykb+TC3nVk" +
"HU9GkvhkNBm17Si33Kfx9G4tkSOgtT3LqYc2GS3mwbOROomJs9" +
"J+Ql46IjhyK3OSvsGLvevIOp6MpPHiSW0m+H3pG96z3MwK/K5+" +
"5eX5/CzjOtz46YX0AtXUsozG07ewRGJwQicx2sZ+Yj0DqfYm/U" +
"IHZmClo4JnjJeMDS4soZxC39oillM8f51V/99yHRV9fU6v637T" +
"+zfPcUAOdJ146OZVy7Orw3AOLCuz5/h1/qv1ZbOQXEguUE0ty2" +
"ic/UJLgJVoac9y2MEeMbUXqZO8ZByMpZ8YLx0RrLjNfh73LdmD" +
"ZcjUZ6LxyVKyZNslbnPNEo+b12kJsBIt7VkOO9gX8+B5kTpgdB" +
"yMpZ8YLx0RrLh1OcV8S/ZgGTL1mWh8cj45b9vz3Oaa8zzOfqUl" +
"wEq0tGc57GBfzIPnReqA0XEwln5ivHREsOJ2dnfct2QPliFTn4" +
"mPj/ye/P1if/OTjdftUbb/3v3eQLtTj60ck+7qonds5fPMfv3a" +
"zud3Hx/q/dKL6YtUU8syGrefYInE4IROYrQNPCKmRIY6MAMrHR" +
"VeY7xkbHBhCeUU+tYWsZzi+eus+mv/ZSre8/vL3Se8T7UcB+RA" +
"z+EeevrS8uzqMJwDy8rsszOD+a/W181C+1D7kKupz73sNzEM9I" +
"yO9X3LuEUVI4mN2cAn85LMpD3Xrp1tSVvN3s9FFpm/zqd6X07u" +
"azW3hBj9Fpm313Wp3Hvcom4HzN87q9qJ08zo8zN8P45y0nt9sd" +
"3D2Ht/sffw4od7n2u6/zacecSWq/Pr87cKs6n7ML3PZeuJQnqt" +
"QOwq8R55n6vuMPnfprj3ufI28pcV9D5X3ive57Jt/zcJyiZ8n2" +
"v2trx/o8n/Nsu9z1X4y9/nKkbqfa5c8lf9Plf0KjjQPkA1tSyj" +
"cfM7WgKsREt7lsMO9oipvUid5CXjYCz9xHjpiGDFrcsp5luyB8" +
"uQqc/Ex/t77mq97/w/XO87l7ve/fdh69a7rX/srfffe+v99tfP" +
"eqf5jKz3O5a73v33N6P7oCOtEaqpZRmNe3ezRGJwQicx2gYe+5" +
"9r/9ZIqWMGmkUYFV5jvGRscGFJ9gc/Y+kBDMKc4vlL5la2uRW8" +
"60cyV3oPkZbHjIW0v/+u9PAY895cAx3ZxFCM6H0JXvmMsZUsw9" +
"jSprlGZxFn0FztR4nx80eudHZ1Jt3fK3ben9/Lj9v5+Unx/N4b" +
"ZGV23lUivzmQ2M+G5hUr82TX2VqjL/l7xbL4ne2B5H2vkNHukk" +
"+u4u+9W/7/b/NA1djXltj8Z8j7HA9UsbHr/Y+X+5eZTvErSPdn" +
"Htf9VWNfG5c2Vw15PvdXsRl2/HQxXZQt92ncO8Zalkqt1KG4uj" +
"0Remf/7Qnfi4ytmSEOj3yeIS/W+xxZIuOHmRV3SxM6L38eQtZ9" +
"7P8AAv6Dow==");
byte[] buffer = new byte[uncompressedBytes];
Inflater inflater = new Inflater();
inflater.setInput(decoded, 0, compressedBytes);
inflater.inflate(buffer);
inflater.end();
value5 = new int[rows][cols];
for (int index = 0; index < uncompressedBytes-1; index += 4)
{
int byte1 = 0x000000FF & (int)buffer[index + 0];
int byte2 = 0x000000FF & (int)buffer[index + 1];
int byte3 = 0x000000FF & (int)buffer[index + 2];
int byte4 = 0x000000FF & (int)buffer[index + 3];
int element = index / 4;
int row = element / cols;
int col = element % cols;
value5[row][col] = byte1 << 24 | byte2 << 16 | byte3 << 8 | byte4;
}
}
catch (Exception e)
{
throw new Error(e);
}
}
protected static int[][] value6 = null;
protected static void value6Init()
{
try
{
final int rows = 58;
final int cols = 84;
final int compressedBytes = 2698;
final int uncompressedBytes = 19489;
byte[] decoded = new byte[compressedBytes];
base64Decode(decoded,
"eNrNW12IHWcZPqhVCai1F9Y/sJoKghaCmlQM6syZPS3EuNlutj" +
"Gpeu2FXhqE3mXnqEsWtAiKNyIVTbUYf4JCcqlV6w+2TWMqu1mW" +
"ojURutuKCDYbNc4773nned/vb+ac3SM7w3zf+/N87/N83575Ob" +
"O7vV6vV57tme3USbFOf63nbIuXet5WbrqR4Sdr7Afq7JkG94PF" +
"y73e0q96O7KV30vnFy+G419c71J9+Kmqwvs6Kvl++aiNDJ6lHR" +
"4f1Xp+3cZ0a5HI1N5eVHPru7nwJvhm1LNhjGXXenxdo/zeUH0d" +
"g0p9gFH2uDJnvW9pPp/fsJl8tjxn/bA3eGsMY3PT2ITP5R2Pf/" +
"sq869Ky1a9nt90svOw4Ye8GEZn0mq64DRKlItGl9flT9eP8WN0" +
"W538IWnZqtfzO072E7Dhh7wYRmeS83moC06jRLlodHld/nT9GD" +
"9Gd6tTPq7vR/0PefnL3T/xo/vRz5uxv1kcjS5/79V9rG4D96ry" +
"ier44zj3o/J3+n5U/mLU/7ZuL7pzKn8ZqPBUXaHD/aj8Q3U8WT" +
"5to9lLfPA28y2JimVxQHbZNNqt13VcaKNaGiNzkFhsPGa3Hf70" +
"KuS38mGfl/Jby7UQDshOZ65CL5aTjQt+MtYtRuYgsdj4cqVb/X" +
"Q+vQr5q/gY/QSPSpQs8YADstO6OGhdLxXvwqIxMgeJxcZjduPp" +
"drPxfP86t9RTy75Eyr9yvK5yArbv5ydQUY+xXBgd16FVhHH96+" +
"VVXQ2MzNe/Tj1q+JadSXXufNvVaRWIOpfPxmkr9nNLPbXsS4Tz" +
"bOVzsH0/n0NFPUarQnV/gw6tIozTmi0j8xX7qUcN37Iz8TlcBV" +
"gLy2fj9bV1tfoU/i1bpZ5a6jnOFsfrtTkC2/fzI6iox5jr+CpG" +
"e9f4VUFoFWEcsC4j82Wr1KOGb9mZ+ByuAqyF5bNxtf6HpWUrFM" +
"uPIsq+xudH3Wpu1GbiW3GY9jRCcBjBUdGYH02NbNPh82MtXGbn" +
"KfGuxXcvVt+uFt9fe3ea58+DO/tdcPFdO1jrbS3590auvpE5Lb" +
"5zh3Ql1nPp150q7E09z++29Rx+uut6dn2/1OA/aD7Pc9IWczZW" +
"Pi9WvoAo+xrPWT3SjdpM4myboz2NEBxGcFQ0urwuf1t9N4/1cZ" +
"m9M+AFbqmnln2JcJ6t/AHYvp8/gIp6jOXC6LgOrSKM05otI/P1" +
"X6AeNXzLzsTncBVgLSyfjVd3pmdop549ser3Id+d7FzsfyZy13" +
"xm5873tlqx/PS1ZVeqc/rv2RXqqaWe42xxvP6sHYft+/lxVNRj" +
"LBdGh3SIgjYcsC4j82VXqEcN37Iz8TlcBVgLy2fj6fvR6bOT3Y" +
"/6D07/flT+Y8L7+4PTvB8N1gfr3HJfv5teF//0TySiMdiR05jB" +
"evYc/KrKOaBtNV0XObG0KssKnSFdmhsaJZI9585YV4ACl9nyWd" +
"UaXzGscUs9tdnorZJYHK/P3ftg+35+X3NurOkx5qxZy9ai51ij" +
"Q6sI47Rmy8h82Rr1qOFbdiY+h6sAa2H5bLw+Aza4pZ5a9iXCeb" +
"byY7B9Pz+GinqMOds2MNo7ExsdWkUY19+o34c4Wulgvv4G9ajh" +
"W3YmPoerAGth+Wy8tm9ySz217EuE82zl98P2/fx+VNRjjKqbGO" +
"3NodGhVYRxWrNlZL7+TepRw7fsTHwOVwHWwvLZeP1Eeg+31FPL" +
"vkQ4z1b+ceDZR06yqFm+5EbtaO8ZutGhVYRxWrNWD43Uo4Zvae" +
"UhjuKe8l8hdS6fjdfn/rVq7lvZNeqppZ7jbHEcWLFDvh7px1Ez" +
"eM26JgitIowDNswI5drXVkwh6tmsrQg+l6lay3/XK3xoyO0ri0" +
"Oj+J/YolZi4mtb+yFM10xZnzPDVwxfXhyiPYq7IVWAYgtj2Bo2" +
"79CHr3b5qS//G1fp8mMtkC//0zDd0un587HJnj+zH+7e50/WNs" +
"33If3nuaWeWvYlwnnEYId8PdKPo2bwHtDo0CrCOK05xAjl2tdW" +
"TCHq2aytCD6Xqfk8z0tbzNuYtXy7CPwlRjEfPZPmO7xfmqc9jR" +
"Dc6HzeE1Me42+r7+axPjbv1ynu5pZ6atmXCOcRgx3y9Ug/Xs37" +
"NaGoq0OrCOO05hAjlGtfWzGFqGeztiL4XKbKPsgt9dQWByUuGc" +
"FYO+TrkUXwTXgRfecPHVpFGKc1hxih3GWNzcSfgc3aiuBzmaor" +
"9Er1uXlttkI9tdmKxNniOLBih3w90o+jZvBOsSIIrSKMAzbMCO" +
"Xa11ZMIerZrK0IPo/pPO3UsydWfX/f6PS+77wX+XNX5DbeMp6f" +
"LD99bVn1TXj4uuwq9dRSz3G2OA6s2CFfj/TjqBnTIQracMCGGa" +
"Fc+9qKKUQ9m7UVwecyJZ8//znh+8/P797fx7G2aTx/Ngyb3FJP" +
"bX9T4pIRjLVDvh7px1EzrUOrCOO05hAjlGtfWzGFqGeztiL4XK" +
"bm/rUgbbFgY9by7SLwm8RiIXrnXGj/CQ9vKxbSOFFrFYb1hvnb" +
"6rv54evt6Fid7ALt1LMnFm3LL+t0/b3gRR7titzGVf/CZPlpa0" +
"tdP5ffMuH39x9FkLvg+hnVtkN/H5I9Tjv17IlVr+cd3Sp4V5+T" +
"4bitvl3dk+X7J7viJ1VaZNxSTy37EuG8xIZvgO3m1LXm9nAcbG" +
"kdWkUYpzVr9W4tnxUj0lpcBbYi+FymBj8rbTGbivl2EfhPn2I2" +
"qnS2w094lvY0QnAY4StP8bfVd/NYC5fZOwNe5JZ6atmXyPBNHA" +
"dW7JCvR/pxyUTOxEaHVhHG9V8cvllXcxmllvW15Sp0/j7ZU2Ar" +
"gs9lqq8UW9m5bKup/DmJLrtXlBoH5OjNrvfslZ3TYya8PraMG2" +
"xZTLaFIzVetLXVT+f9VdBbfoAP3pr/7zgweLjS/bCLAzK2LT1l" +
"xzQ/qXH+v6OFhXRpjMxBYrHxS092q5/Ot69C/mVp2arv73ts1r" +
"fDn08f0yVjUV1wGmWVt/On68f4MTpWJ/n8+fYJnz/P7t7v79nZ" +
"aX1/p98fDe/k9Vy6FFzP93hny9Od1vPMLl7PM9Ncz2ad1P9lzn" +
"ysWc83eusZ+k/KzfCb4eluUDle/v+hLbvBh70fZTeWD4RwQEbr" +
"/cWOaX6Ct4+nKflpOGwxMgeJxcaLtrb66Xz7KuRfkZat+vOZ26" +
"xvp6uNl7GoNtxy36Ks8nb+dP0YP0aH68zcO3Mvt9xLbOTPSURj" +
"sHOu3JSxEs8egY+K4DQcXg7KoMqyompIl+aGfolkj7gz1hWgwG" +
"W2fFa1xjdnefMXKcPmSr780dDP6NQ7Ws/VHyfebXa8yp860QGz" +
"R9m3VUeH64loO3V3S+1DyezxU58NXrWPzRzjlnuJsb88KxGNwY" +
"6cxtgxqDi6o61YpM6JAqvCZ0XVkC7NDS0S+dId7ox1BSjw5xSe" +
"v1YukXw/H6Mr/VWJDj9cfTP9mbp61Lh8/zj3uvHQ3ceRLo2ROU" +
"gsNl7m4+b1PNv5x1kF9f+GX/Duqpe6VOBxgefPy70d24Yfabn/" +
"X0xp6/Q8OcHv4wb7Bvu4pV4i4i8fGezr/xQRYNnCeBzWQi/1XU" +
"6b0xiXB5F6XSK6LCMUCS+Ns3m2uZ5WYJmtKh0z+P8B/60eog==");
byte[] buffer = new byte[uncompressedBytes];
Inflater inflater = new Inflater();
inflater.setInput(decoded, 0, compressedBytes);
inflater.inflate(buffer);
inflater.end();
value6 = new int[rows][cols];
for (int index = 0; index < uncompressedBytes-1; index += 4)
{
int byte1 = 0x000000FF & (int)buffer[index + 0];
int byte2 = 0x000000FF & (int)buffer[index + 1];
int byte3 = 0x000000FF & (int)buffer[index + 2];
int byte4 = 0x000000FF & (int)buffer[index + 3];
int element = index / 4;
int row = element / cols;
int col = element % cols;
value6[row][col] = byte1 << 24 | byte2 << 16 | byte3 << 8 | byte4;
}
}
catch (Exception e)
{
throw new Error(e);
}
}
protected static int[][] value7 = null;
protected static void value7Init()
{
try
{
final int rows = 58;
final int cols = 84;
final int compressedBytes = 2004;
final int uncompressedBytes = 19489;
byte[] decoded = new byte[compressedBytes];
base64Decode(decoded,
"eNrdXFmMFEUYHgRCVAgBFV6IsHIfi6AYiMfDzkw/qGhMxAtxQV" +
"Si7/qgJgS6q4DJdGI2EE1MTAwJKDz45KsmHgTFEwHxVg7xXBU5" +
"BAOLPV1d/f9/VXVPT28fKz3p6qr/+r6q6aquru6ZSkXf7GMyx6" +
"qVBJvTX+lgq75byWBLHyWZ56azlcy29U+F2BtSct5QGbJbvtyq" +
"k6qTRCqOUhaUF1MJ2GJr7C/l4Af+gEmjYB3mhXGgjOOYeFFEYB" +
"WyW2yOjdkDS52pykS11zd2e5hbmm1/Z3dUKrUHizkP2W1meTL8" +
"xuVpce1ue67ttau9yC9Nw/1900+JIkyNkC/RJLOyay97chv9dR" +
"HtHNHf7ema5PoOGd0YMQZsxTkodTCKbE2qSxN9cJ5RfumZkG9r" +
"DVvOetn9RLYqPD9/Sxl1RYR8tbc/mlF/btNv2crOzk/F6qEMR5" +
"4nZK65XNNNSBRhoj9SrQuikJpLaVlbMvyWVRZMnd1kvqSPKfs6" +
"GE/88dN5K4z9nn0gyH2g4b7jp7sMjD729v0G+auRddjjo+8NSm" +
"8Hx/f9dK9aJ8cwH3U+TTp+Oh95+yfOZ7EjzBo9l9HsbE35sbKu" +
"U4Lz6skQe1ZlyG72xpTtWXidoL+zZzNuA6f89mTP5H4Htl2krW" +
"MrFWUskTbiKPOmMvXE8bFGxVZ5YBZmvpibjgixdJyomthb1RqY" +
"mOp4KpLhmx8Z3iVMr1x0G3uzcEQ7nC89nX30xoxy23PjyZzH9Z" +
"j7zaab/f1mI6PrQdr7zcbMPO83a6dqp/z5a3CUeVFuvii1Uoq1" +
"Uuf0yxKW46jSw6/PbCrDOjKjJjiypPLUeUk95QiSjSepF42A8f" +
"GutoPOmtbcWmYtg7zYvbrPwR7CRqbY2pRXPU3x4zZhIe1M9hBT" +
"8sKRsb9MW0e2B/Oh7NW64J3iUFvT1rNFpiLn9/eXqVbPR63XqT" +
"ZJNNQqiR22oszb48fHj8IHb3Ocem+9V6TiKGWi3NwmJdgGPkLn" +
"9EtfKpfRwVdiYktdB8yAFUWFqCZeGBu4SMmmN9Qa4wjAQK+Tuf" +
"60Vsaedi680m+pDNGt53g7i3UR16vGvPLuj5rbh2x7nijec/Dz" +
"pWqi5x3/r/X5qDrR+RJ7Ke36fFx7NhZcfO3ZuDbP+ad1yDokUn" +
"H0x89Dsty4QUqwDXxAh22oD0QMx2diqetkDrOiqBDVxAtjAxcp" +
"aSxSa4wjAAO9Tub601rFj5/WrRff/XvedbK7Y9rTHlTkJcbVgd" +
"cyWmXY1ka/M6I97UTj547O+3uC+/dXsh8/rXHljp9R+NCe7PX0" +
"42e1q9olUnH0r4BdstzcQSVgi62xv5SDH/gH894zahTQoatwF8" +
"WBMthSGdWrvsCmhW+KjdlDvXSmKhPV3tBTwidozZ05jF+Xljx+" +
"5orPDnj7kSDv3YezL9gfsr+zv5r+sz+G3jWD55tsv7cf9HN/Bp" +
"Kv/DRYY2H/iP7Owmd/7Gv7ANtnXeXlvtd4/MAOs6PsZ3aMHWdf" +
"sm+Q5m9vP0Nsv2Xfqc83Gbqysl/Yr/B8M5T+7qcnW/hE/nlk/0" +
"3Y39kJdjr8ttZaa0UqjlImys1dVAK22Br7Szn4gX+AOF6NAjp0" +
"Fq2lOFAGWyqjetUX1XW8OTZmD/XSmapMqL01YA14xwF59DUDst" +
"z8UEqwDXxAh22oD0QMcMdQS6yTDCgLHRWimnhhbOASSsaoNcYR" +
"gIFeJ3P9MXMqUedLzsGm9py+8/cZvG8l8OFXtN5nqJ/KZqSKfp" +
"8hQN9rlifHT9rf+Vg+LuF6yMGM57qt9jxfcnueL/oKiNrzcBbn" +
"Z/g9ivPzdCdcmkcyb8/T+Z6fYj7fPGqcz/+Y/Xy+/m+58/ko/K" +
"zf/+zpk6nI+e15gWr1vH+mmJ539EWuP/YlWqXsS2KHrSjz9vjx" +
"8aPwwdschy/0dvQ98Cl8ljw/+Rx3RJL+LtuTX+On84PSAnF+8q" +
"vD2FNb/d0aYewzM709OKN4V9seNkPt73x2u/7Op/npPBWfTx50" +
"f5/Lu+P01S16rrMtzs8qe32pcER4v44vThnhcEx9hpXcnsPKa8" +
"9qX8rzM8bPGltyexaOD+sh7shEM0HtesRviqnP6JLbs3D86gt6" +
"Lm2Eobfxmwtvz+f0XNoIhvnfQLntWTx+9Xk9lzZCjqPSfSnPz1" +
"tyHU0WWgtF2jpKiSy7o0ArZTgH/rDTHBxl/Po5iol1lJeKAxLV" +
"hlpgRGAk2bTwqR5HwAwosooIMmxfr9VrHkZNHv0a12TZHS0l2A" +
"Y+Quf0S18qF2WIGOCOpJZYJxlQFjoqRDXxwtjARUowvl4zYKDX" +
"yVx/zJxKwm8mfCPaHZPu+h7bIy4r+fpeOL4Vrnq6OczVrAklt2" +
"fh+M7csD1zwK6fLbc9i8Lv2SxTkfOxe6hWz0euL22Ox2nPJokd" +
"tqLM2+PHx4/CB+9kcVobrH+6OfwWw5qY0bz8zjb6pfniR6Dehd" +
"8P4ffQ9WRX+y0EN7w13m492Q3fqvPfD7kyo1WGtO+HRODT9WR+" +
"d3b/J2CHT1hcMvflj/hn7xSlhRP8fwR/AI1fF/jDyTmuXxVEMP" +
"xqni9PgPw4Ka1u4fu54Fex/F6k7eWrFO/HAhZBX+D+PQRfwVd2" +
"dD0KV0Hc7hzmS8M7sXbnZz7eDK8UvMF6nZvD/y9Zl5Q8XyocH4" +
"2f9Rzac1TJ7Zkv/n+r7dJp");
byte[] buffer = new byte[uncompressedBytes];
Inflater inflater = new Inflater();
inflater.setInput(decoded, 0, compressedBytes);
inflater.inflate(buffer);
inflater.end();
value7 = new int[rows][cols];
for (int index = 0; index < uncompressedBytes-1; index += 4)
{
int byte1 = 0x000000FF & (int)buffer[index + 0];
int byte2 = 0x000000FF & (int)buffer[index + 1];
int byte3 = 0x000000FF & (int)buffer[index + 2];
int byte4 = 0x000000FF & (int)buffer[index + 3];
int element = index / 4;
int row = element / cols;
int col = element % cols;
value7[row][col] = byte1 << 24 | byte2 << 16 | byte3 << 8 | byte4;
}
}
catch (Exception e)
{
throw new Error(e);
}
}
protected static int[][] value8 = null;
protected static void value8Init()
{
try
{
final int rows = 58;
final int cols = 84;
final int compressedBytes = 2386;
final int uncompressedBytes = 19489;
byte[] decoded = new byte[compressedBytes];
base64Decode(decoded,
"eNrdXF+IHVcZv4pKQNoq0VhQCCUuaqPBjU22DSW7mztjGxVbwZ" +
"BttYLWlfogYhrxSc3cuxP31mstCCK+rVbQUluNin0RRFAKpYja" +
"EhcsKq55cn0SCpoHz8w33/x+3zln7t6ud3Zs5jDnz+/7zvf7fW" +
"dn5sy95KbXC4/s89obp75t8IfQf7jdix6DW+043z94vtdL/tOb" +
"yTH8/mT74HdxfHr+wXum88tvyF8/0b5er+cdvZkf6f5ep8fe8w" +
"/O1+v5Pncd7MjfdH02XB//6nY92+VPbktuk1paxWQ8/oAi7IMC" +
"G/vYOYhYXR/XW0+2qQKrImRF1Jgu5oYWRZg/zAwKwpzi+bNyi4" +
"TXZ/7QNNfny+sYXrfnjAfq+/2uFp5fr+n4+dkqf3ImOSO1tIrJ" +
"ePxhRdgHBTb2sXMQsWJ80XqyTRVYFSErosZ0MTe01MiLfsYcAQ" +
"rCnOL5s3KHrSarrl3VtrSs6nh8jyLsgwIb+9g5iFhdH6+1nmxT" +
"BVZFyIqoMV3MDS2KMH+YGRSEOcXzZ+UWibx/frSF++11Hd/vrf" +
"Inp5PTUkurmIzHDyrCPihiG27rXItrdMwt89lnPdmmCqyKkBVR" +
"Y7qYG1oUYf4wMygIc4rnz8qLc/CuweHBW1x7S7m3v5Wvz1Gw/+" +
"ePRt4HDk33+cghb5/hW/LBHexH4/javxv853b7+aj2P+FW9Fxy" +
"Tmppy5U+p+PxQBH2QYGNfewcF2UI1P2NbreebFMFVkXICp0xXc" +
"wNLYqsf8vPmCNAQZhTPH9WbpHw+Zl+o3fNHe3mlOxL9kktrWIy" +
"Hp1UhH1QYGMfOwcRwcmeoQ3KoMqyImpMF3NDiyJ5z8+YI0BBmF" +
"M8f5tVdI2vC3sz/Av+o+PP7y3zT9yPFqeK8PLajy5Osx/lT+5u" +
"P5r8/Mx/1ML18c+Or8895x9cqdfzJy3ks93xem53uJ4/m3300e" +
"lu13P9fIfr+VQL18fXOr4+W+VPz6ZnpS5aRaT0T/RPwKqY9goc" +
"83EWtcwTX8SU+IoiCmxWl88DxPexHsyoI+TKOXFstSO6zd5nBK" +
"b+pX0lXXHtirQlvqKlf7J/ElbFtFfgYtOenEUt88QXMav1PGk5" +
"2UbZrIQ8QHwf68GMOlJM+K2dI7ACm73PCEz9yzmb/U3Hsaltmf" +
"FmVRZdqZAaXaytm2wzPs6r7C/CR3uuv8ie1qYKWIUX2dPJ2sMZ" +
"8CT/RT9jjgAFot9X6ivBUdm2+lv+tSGYqw+7siWInv3DOtba2m" +
"V25XU4jF7EBEvtvxV7FimutZa4FxT4OKOiyqJNClSpHyGOWfbY" +
"fjS8nP+ihf3g6x3vR63y96/0r0gtrWJFGV7up4oounZArTJDbe" +
"zjvN5U9lP4aM/1U/a0NlXAKmxkXydrD2fAk/xTP2OOAAWi31fq" +
"K+GVlLP58+bw8nht9p83k4e6/bzZxD+b7z9jR/7LasXn+o5j7X" +
"PmrzA31VU/1+QrMWfyueDOXd6RDfyD70zrudv3eff8/FULz68v" +
"d/z8bJU/PZ4el7poFZHi7vdvwqo+3JPRcBsjiYAeWo2fZJaTbV" +
"aXzwPE97EezAhFqqbgt3aOwAoss88IjP3ThXTBtQvSlviCll5v" +
"/G1YFeOejNx61iOJgB5ajZ98yXKyjbJZCHmA+D7WgxmhSNUU/N" +
"bOEViBZfYZgVn/4lg6WBSNVPSK012f37UY12yxte358ZOHlw7u" +
"fN+ov/rG5iCq6oIy3wIseTgWnzG7CpytcGiZoOymomAkp1vPRy" +
"3GNVtsbXt+/GRgbQ3reZONGJuDqKoLynwLsGQQi8+YXQXOVji0" +
"NCtr3I9+08J+MO54P2qVP/0jSjFixD0/f2wRHsHbPT8JUVyjg6" +
"XKZ8hxrC2my1cF37guy6gWqCn4Qzv8NL7PbPmYif3TyyhuXJ5a" +
"3P3+mEV4BG+3noQoLj200nP5jDiOtdF6NqqCb1yXZVQL1BT8oR" +
"1+Gt9ntnzMZP0n3u/PtHC/faXj+33P+en7+WdbyOeLHa9nq/xL" +
"x5aOSV20ikhx9/vjsKoP92Q03MZIIqCHVuMnX7WcbLO6fB4gvo" +
"/1YEYoUjUFv7VzBFZgmX1GYOy/dHzJvdcX9VL1ni99GY9/CKti" +
"3JORW896JBHQQ6vxk9xyso2yOR7yAPF9rAczQpGqKfitnSOwAs" +
"vsMwJj//5Gf8N98t9Aq6P+hrs+nyzGBWJ9tMhouC092HiORV0+" +
"Fy3GNpmlPXiErOoR02W5EVUQ5g8zg4Iwp1j+9O3JBqs3lifq7+" +
"suxS2TkDhGz6/1vXlONqlom3/i959T/XuGl/j95yMdf//5yF5/" +
"/0nvS79vYX9d63V67D0/redzLeRzYTZx8ue75Z/+oH9f98HeNX" +
"c0/fu62T0/m9fz1If+p8i3trou39vB/lgcb8rJPj/XfvDSn5/l" +
"Lnipf0lqbXVU9EZ39y+Jl/WBh9bsY+dY1EbjuLBBGUe3rHHt/g" +
"x4wj9fsrPC7Fmlr9RXwitZnMmR5Ej1XDlSP2FKrDhPnRVUx9aX" +
"Z7Ddj9TwHDuiPOzF/oprrSWMY1VoLx5Vc+JsJukMI8Rz4/Wxx/" +
"DV9fPzTHQn2NqL51z+tyl8/kT9P7vz71PMqX7Tn/9lB78XJlr/" +
"2rDuc8mc9ixWnOOfCqpj66uj4ba1+5HsMboXNpnDXuyvuNZaJm" +
"XAeuNRR/f4GceihuvUvHLMnp3PXhXuR9kNrt7v1vPn2RtK5IA7" +
"3+zOL1QeZaTsbbqe2c1u9E53lntb9u460rEs2JNG1W8Ys/dmd2" +
"R3uvZ09v6G94z7so+V7cfL+pPZA9mns1dkr/S8rs+qXxBmb3Tn" +
"jWSp3/izdxD/R7LqTT+rfq2W3Z4tZqd2eOe5O4KZX2Nm97tzNZ" +
"lP5t26zmtbrvS8jpefVoR9UGBjn2R+dD/G7t74LLxttGQ+/0xo" +
"0x6rsqzFOfqErz2cgYw0ouYUxrYzwpxgt/l7WR1N3F+rqKUtLU" +
"d1vPyCIuyDIjZ3vx9lHzsHEWtm4xnatMeqLCuixnQxN7QoIjmF" +
"se0MtfhKw/xtVpP3o/FT0+xH4f8fMvrU/+9+tP7bNvej9Gp6tV" +
"rfQxYTHDUwawvtjKMfY5Y56dUL9dMpORRq01pLUwZQUES5cNDq" +
"02P5os0CSvhYvuizBPvRIYsp+6Tfcy3/evbfL83sc90uv19qyq" +
"m975ey+i4fPXDtfX7PH2w1/H8BrU2HQw==");
byte[] buffer = new byte[uncompressedBytes];
Inflater inflater = new Inflater();
inflater.setInput(decoded, 0, compressedBytes);
inflater.inflate(buffer);
inflater.end();
value8 = new int[rows][cols];
for (int index = 0; index < uncompressedBytes-1; index += 4)
{
int byte1 = 0x000000FF & (int)buffer[index + 0];
int byte2 = 0x000000FF & (int)buffer[index + 1];
int byte3 = 0x000000FF & (int)buffer[index + 2];
int byte4 = 0x000000FF & (int)buffer[index + 3];
int element = index / 4;
int row = element / cols;
int col = element % cols;
value8[row][col] = byte1 << 24 | byte2 << 16 | byte3 << 8 | byte4;
}
}
catch (Exception e)
{
throw new Error(e);
}
}
protected static int[][] value9 = null;
protected static void value9Init()
{
try
{
final int rows = 58;
final int cols = 84;
final int compressedBytes = 1763;
final int uncompressedBytes = 19489;
byte[] decoded = new byte[compressedBytes];
base64Decode(decoded,
"eNrdW02IHEUUHlDx52hYom6IGndBkBDIuig5TU/PIPiDt6AnxZ" +
"ibCpLsxd2g07s7m/YQEXIMOahJjLjJzYAgmFMiG0QRr0GUeFsn" +
"gjER8adra95871XVzPT0VHdPppvpqnr1ve99r7aqf5NwI9yoVM" +
"KNsFtSS9VUnY4cYyLwM+1Up1qlEtwpkbyP4sHHZIZFquUIHltm" +
"oUoe384MCuyc3Plz5dJCW/Qr1VZ/q3jf4rcqpW7xm/nyR7tNS3" +
"PBE/PTLmv1Hz/sK6cG9H/mtveKH80K77OJZW54VY1L2FWLW3R/" +
"7ZqJMdFk0xayEzui6Iiaj/ugz6XLVCV5bF0yIjRSqfzsfsqTlC" +
"MLVwQZSeL7rvff0/xNljcrt9EWH8mTvXEZu2pxS/K3DKSFt4Am" +
"m7aQndgRhcfkPrzP1mWqkjy2LhkRGqnkOXFu6CJ2GVnG45E4Pm" +
"yH7eS61KZy60rVpjYsHIMdfRwjfcDYmR/vSiTvo3hShR0VrC5d" +
"PLbMQpVH182MOQMU2Dm58+fKpcWx3m/ksN5Wy13va7fyZK9uVj" +
"f1UZdk0+3aM9ICLEdzf7LDD/6IKVl4H9fF46DNeVy6ZESoolLl" +
"5OLm6qHSVmoqMfGO68uxygRvq3+musZ+6DHiX9212ZzA8fwgFe" +
"pvjxH/vS3G5b+MfqmeJ1pZz5/Xq9f1UZdk023TAixHc3+yww/+" +
"nTn/vsmCPqmLx0EbWGmT/aYv1KzdcnNz9cjLVmoqkfhqu5pc49" +
"VRl1s9bWoHh6QFWI5e3uR92g4/+HfHwWDhfcDIOGhzHpcuGRGq" +
"qFQ5ubi5eqi0lZpKTLzjXHxXd9bf4f/5qH5/ueeJouI37+m+C9" +
"hLteCwE7lrlDitB1LqeTkF5j5WT8apuX2wD+XUfGoA97N9e19q" +
"vuFknwvm9FGXZNPt+Ji0AMvR3J/s8IM/YkoW3sd18Thocx6XLh" +
"kRqqhcPePm5uqh0lZqKjHx/Z6PWjvG+L3GqWx+wav+UPYW3gxv" +
"6qMuyabbsHAMdvRxjPQBI2JypN0HZVAlo4LVpYvHllmoMnjdzJ" +
"gzEJZQplI7f5lV913NQmNBHXWdasY7nw5G9nNko8ebaOXj9ujz" +
"5muBY3vrgWKpjPvTUZXBAe4r1aMVHCAuPi6Iw7EDrxgPT/LzZv" +
"CaP1TK7xQ4f+6avPGMT6dCnfEXsTXTrc1O4Px8xR+qz9lqf2M/" +
"6vrnxtCRo11103Mwv+nDGXvrAaNUxv3pqMrgINcj1aMVHCQuk1" +
"P7cuzA9d69iw9mvMz3e/v03V34/JwpOiK+Fwd7RnnetL8XRz/6" +
"U7n86YBZ8X2P8dyTel7N+R5PR4wfhriuOcczmC53PONzRY9ndD" +
"jX9VbyM9fR9RLX+06/zNF2j1zPZ/x77ix8PLtvsOMv/LO39pU7" +
"P1tT5Y3nJG7xV3my16ZqU/qoS7LptmkBlqO5P9nhB38dsX7VZE" +
"Gf1MXjoA2stMl+0xdqVHwXN1ePvGylphITP/r8HPL9/E/lzs98" +
"41cPVQ/poy7JptumBViO5v5khx/8O+vta5MFfVIXj4M2sNIm+0" +
"1fqFn7w83N1SMvW6mpxMRvPUfNq7373DWvf+LZbl6jcOQ98ihr" +
"Jn/9uMntfNqcl4wuH7CSLiiT/txWP+7i5zY5CjxbHYP23sqMK+" +
"Bzea73YL3c9V58/NYLueZztuTxLDy+r3/v7bgHX07yOe/pefNq" +
"xvE8n+fY1U/WT+qjLsmm27BwDHb0cYz0AWPnenRZInkfxZMq7K" +
"hgdenisWUWqowvmRlzBiiwc3Lnz5VLS0HP7+dKXu85x492R09E" +
"O5Lyya3WzPDrPXos9fulx5N8Pveke8BXrmhvj/HsET+aHfX9Ur" +
"Rv0Pmz8Y6PzMEyDu9D/OSU7XrUWPIynktjNZ5LeY9frc3LWpvG" +
"U7dXHqy1bazL37TY9mi51pbW+Bvby8S42Vce6q9BWl01WY8+6p" +
"9X/8z7KWbzc9HL/Fwcq/m5WOJ69/J/n8AyFuN5pOjxXIlyveM9" +
"XSl1Kz5+3+9xL440p5L5Wf+4mPn5Xo/7KV/xx+J5U43nJ+Wud1" +
"/xs4xn/YqVxcjfi31tWb8X2zn1ZPD8/T3cFm5L7mi+8zs/FWeZ" +
"87NXfPt+yVvWnef3cDqcTq5Ob/tlDz39e4b4it/4+Y9nqrcLhT" +
"+9jRo3b8XVL9WuSt2i2jAMae1Z2N3b2qODeHr1x78Mo3b8r++1" +
"b8s9f/qKn994pv9+pN7Pe3rncDHr+/naxVRn558z3o2dqJ/QR1" +
"2STbdVvXZB24HBrhH8Z9o5YyefCxLJ+0iBVGFHVT/F49bFY0ML" +
"WXh8zg0+KLGV2vlz5dJSwHpP5md8zdP9Z8b5ufZIrov7f+1uZx" +
"M=");
byte[] buffer = new byte[uncompressedBytes];
Inflater inflater = new Inflater();
inflater.setInput(decoded, 0, compressedBytes);
inflater.inflate(buffer);
inflater.end();
value9 = new int[rows][cols];
for (int index = 0; index < uncompressedBytes-1; index += 4)
{
int byte1 = 0x000000FF & (int)buffer[index + 0];
int byte2 = 0x000000FF & (int)buffer[index + 1];
int byte3 = 0x000000FF & (int)buffer[index + 2];
int byte4 = 0x000000FF & (int)buffer[index + 3];
int element = index / 4;
int row = element / cols;
int col = element % cols;
value9[row][col] = byte1 << 24 | byte2 << 16 | byte3 << 8 | byte4;
}
}
catch (Exception e)
{
throw new Error(e);
}
}
protected static int[][] value10 = null;
protected static void value10Init()
{
try
{
final int rows = 58;
final int cols = 84;
final int compressedBytes = 1676;
final int uncompressedBytes = 19489;
byte[] decoded = new byte[compressedBytes];
base64Decode(decoded,
"eNrlXL1vHEUUX9EgKFFEGmRHJChIGIoEIUTD+Tbb4f+DgigChE" +
"AiDWf7nDMi7h1RECFIRJlgiiSOEyDCcUHp0koTqgiEEEhIIPz2" +
"+d2bz9s3b/d2HbEjzfvc3/vN3M3O3vrOWeYfn3yQTekYHM2y/q" +
"cNYb2lO6+p+vJjevMJx+iXrNNj9HC6+IOXBy8NntuXr5bWifT5" +
"HByP+F/3PC9m2fBcQ7xnK+KnIvP5WyT/BdNa+nzfczqR0Rso86" +
"exBwk92uQZvod+ziU9ZJtn+n6KhA/mYbII55mcQxUpbtumFmPI" +
"eHbURuR6bqW213vxTbfrfdr1J6330T/Nr/fGeCvX+4Ur017v/b" +
"+xBwk92uTBOPtYD9nmmb6fMYM775iHySKcZ3IOVWTmpm1qLsPB" +
"ZZenzcBG5HpuJf8YfpT2uiw+Sskenm9nXQ8/jOxHv067cv4a9i" +
"ChR5s8GGcf6yHbPNP3M+ZkHiaLcJ7JOVSRmZu2qcUYMp4dtRG5" +
"nlup9xM0kGiRJj9i+b5fg55atSpefCbJhyzdPLR9/9n1flSMJP" +
"sRZOn2o94uNJBokZbwuuxK/anImqpV8dGfkvzRX7p5KPaKPexR" +
"lq/NHtnsMXO4cczMsc9hxPFrb2X6MdJMVnZVRg3xMmvboyg9F9" +
"0Rmwjj3Iv+mMLjt0f1P1zva6L1vqa//6x7v3Q4j9j9UiF6vlSo" +
"n0JNen/2Tx/e9+fi77r3Z2xM9vuz9Gg/H32BPUjo0SYPxtnHes" +
"g2z/T9jBkc6ZiHySKcZ3IOVWTmpm1qMYaMZ0dtRK7nVuptQAOJ" +
"FmkJ+9pGSmYqurZqLL76RN1RVNT9DhpItEhLQfA8V+KZqejyqr" +
"L4JG7Tfr5Ub38PZO5fP1c73t9X/pBePxvbGWvv78VJXayV/f1k" +
"3RFUrIsfoIFEi7QUBM9zNeJXoMuryuLITTQKFdPe99BAokVaCo" +
"LUr0FPrVoV77+bwlbB6xY0kGiRVtYeyBA8zoOw30avOZ+3dPHY" +
"mMJsFbzuQQOJFmll7QUZgtRvo9ecz3u6eGxMYbYKXlvQQKJFWn" +
"mvdlaGIPXb6DXnc0sXX30nha2C1yY0kGiRVr6Wz8gQpH4bveZ8" +
"burisTGF2R6O+89iNv75vZjt+PnSrOj50mz65/cpzufMhPmc6X" +
"g+Z0TzOaOdz95daCDRIq1cG0dkCFK/jV5zvd/VxWNjCrNV8LoB" +
"DSRapMEx/7N3NT8fQogho1w+Z3rs7OWz6vm8oYv7Y4rlV1WI4N" +
"yGBhIt0sra2zIEqd9Gr/n+vK2Lx8YUZqvgdQcaSLRIK2vvyhCk" +
"fhu95nze0cVjYwqzVfC6CQ0kWqSVq3tZhiD12+g15/OmLr78fg" +
"pbBa8foYFEi7QUBKlfg55atZLVv5J8yNIx7W1DA4kWaeVemMsQ" +
"pH4bveZ8buvisTGF2aYzmsr959yE+8+5ju8/50T3n3Pav8e1/X" +
"z+zEa38xmr39Tz+d41aCDRIq3cC9+WIchrpWTXqxqLx8bUFC//" +
"mO73Gc5cz1o5Yn/vaKt+a/N5reP5bKl+vkB9vjDJ5+v5QgwtXq" +
"eKCzQJW8pCzWU+qX4VvhvnuXArO9eNHWgg0SKtvJ+/KrqS7Uj9" +
"NnrN6+eOLn5hLoVtOqPefWgg0SKtvHa/4j0PCVx9OD/sHz5leu" +
"zs4ZPq+byvi/tjiuVXVQjnt/19xdXnu71fWjkmvV9S/z5uHnuQ" +
"0KNNHoyTb+lZ1t0YH0tHw36uFo8gA2YRzjM5m+xdLL8qnzGZi8" +
"vARuR6bqXWv29z4nF5fyqvQ9ehgUSLtPJac1yGIK+Vkl2vaiwe" +
"G1NjvL6FBhIt0lIQUjJT0bVVY/H5I5L8+SN6ZvlBnx/0+dgP2n" +
"AtH+dkmamH7MzCyiKRKh55ZV7uoLkVc6MPazGGmcEixM6t51by" +
"j9TrZ9rvDbs+hh9PF3/SflSIPnk+Xv9PIDamZn5f3F/pr2CPEv" +
"xolfal/srqMfZwrpltnn/QX2IkRsSqGHPxXG52RdOm3MWHts+O" +
"u+cyG6gfwh5cNkdFEZ+py8TNH1+BH1CPmnMVfxDWY+s9hFEVsb" +
"MkeWaWzby6/mT8WH0+O4bT9uej/lYTq72/pV3vsfrNfD4q1ot1" +
"7FGWV5h1stlj5nDD2OIjOtc9k3XS9sezaWeaMapns/CrMmqIl1" +
"nbHgVIs74/MsqlLJepP36Tue1pZ3/vN/L9Tz2K7MzVU8q7h6/T" +
"1vvwq9r7+5fd7u/zb0rWO2Spnof8B6g4MDA=");
byte[] buffer = new byte[uncompressedBytes];
Inflater inflater = new Inflater();
inflater.setInput(decoded, 0, compressedBytes);
inflater.inflate(buffer);
inflater.end();
value10 = new int[rows][cols];
for (int index = 0; index < uncompressedBytes-1; index += 4)
{
int byte1 = 0x000000FF & (int)buffer[index + 0];
int byte2 = 0x000000FF & (int)buffer[index + 1];
int byte3 = 0x000000FF & (int)buffer[index + 2];
int byte4 = 0x000000FF & (int)buffer[index + 3];
int element = index / 4;
int row = element / cols;
int col = element % cols;
value10[row][col] = byte1 << 24 | byte2 << 16 | byte3 << 8 | byte4;
}
}
catch (Exception e)
{
throw new Error(e);
}
}
protected static int[][] value11 = null;
protected static void value11Init()
{
try
{
final int rows = 58;
final int cols = 84;
final int compressedBytes = 2195;
final int uncompressedBytes = 19489;
byte[] decoded = new byte[compressedBytes];
base64Decode(decoded,
"eNrdXE2IHFUQ7pNRVIIGDWQFxTWgkWTBTTTxoNmeacgheDCH7K" +
"66kcQ1uWhQzCm74M7MzspEMIeAePASECPExRz8Q/DnGvQgkoss" +
"0cMqBFmIGlDRoP2mpuareu/1bE9P97bsDPN+qr6q76s3r7u3O6" +
"PRUrQUBNFS1OmDgGc8lhZgJaK+YvtoxC3ym1d40UWyj/lsRps1" +
"WgovujZ3jFjOSfy+3NAMJT6lbv0a777mrgeJr+b7wYCv1sNBqa" +
"+Fe4rNX9tee7B2V9zvbM/ui9fzRJ8ZhhPsux3L/fF3+FM+upsf" +
"rKLqIb89ib+21bGM9rkOjwZB9UL1ArXUGzvNeMwtMHjDJzFsr/" +
"+JMY+CoHJYI6WP+bQKlxVZfboQIfWzRfK7lTG2tTvW/4er1K1f" +
"KteW7vHeY39W6mm+KUK52NrmtBlS7Ib92eLSV5BFaXVfdR+11L" +
"ON5rCwtXKKvRKBD6PMmLDI2NZ5ylglB3zg0yok3tYptbsRUj9b" +
"JL/MrSMMyqfUViJXUqpXZ6ZPgnX8an6UCvVptuzVg9WD1FLPNp" +
"rDwtbKPHslAh9GmTFhkbFzJM1LpPYxn1Yh8bZOqd2NkPrZIvll" +
"bh1hUD6lthK5km3fRHUi7ie4b3smeA4LWxt3slci8OmgNptxZQ" +
"4YHsVK5yRS+5hPq5B4W6fU7kZI/WyR/DK3jjAon1JbiVhP8o1X" +
"x+N+nPu2Z5znsEgM3uSrr3CsHYkxj2KlUxopfcynVbisyOrTJb" +
"l1FaaX/G5ljG097tbkr18q15bulXOyv3NGfaWv6+tEuefPYvnD" +
"kXCEWurZRvP2eBEWM4OXETK+0y62+0WRhUeLHd+IjCGfrUvyCA" +
"UdLJTIPDYjVHXVLSbkXlRVLXar8DBoJlaM8WD7s8/7zcp6vt+s" +
"RtWIWurZRnNYJAZv+CRGxyBj53g7pJHSx3xahcuKrD5dkltXYX" +
"rJ71YGBW5N/vqlcm1Jc39U+66POxjr/n1+U+1SvD/357MT6udW" +
"Yf/Wb3/tldT6U96/z2+cv637dGA0GqU2GoUF82g0PA+LnBkf4v" +
"HhmPhsch5ZeBSeZyuygFs8tRh1eaQuzi5RWjdi0bIq7ZeVdc/f" +
"57kKN6vNxIoxtr6XI4WeP58o9/xZf7HI7NGZ6Ay11LON5rYFWI" +
"mW8WxHHOI755nf7SzwaV2SB3NgtU377VioMfy+3FI96nKV2kps" +
"/Frvz+ov5e7PYvlrN3tsGzJluqXT37BKPVdyruDGPtfzSpHrGQ" +
"6FQ9RSzzbzroxURsKhxkuwGBuPgJbx1BpU/JfJCM3hNzbyySzs" +
"s3VJHswZ2zqubdpvx6JWVKBz187KqlCFj0EzMd58eu3PynBlON" +
"b9srpbG06zPwnlw1LOXK4rP2fbn0n8tbNpkT13/2R1klrq2UZz" +
"WCQGb/gkRscgY4fxpEZKH/NpFS4rsvp0SW5dRdty0q5YZoACty" +
"Z//VJ5dTKcDWfjfTrLfXvnzvLctgAr0fUV6SM74hDfOS6es7PA" +
"J473Wc2DObDapv12LNQYfl9uqZ4r9ym1lWh8OBPOxP0M923PDM" +
"9tC7ASLePZjjjEd3iP2FngE+s5o3kwB1bbtN+OhRrD78st1aMu" +
"V6mtROMrlyuXnfNG22Y+4SR5ec5YWDHHR8a42cNJsDDGRUEH2P" +
"gtmSWH9sisEs81yWqSFEiW1Wy2LnFm7t7hhgU8KwxLfv6ZxN86" +
"kUv2beE2aqlnG83HLmpLuK01By/7ZDy1rTrigmD+OPuZExnnX9" +
"A+qUvyYC7zaJT027FQY2ry5W69Kqtij1wNySeZNL7X/izk/v31" +
"9fz8s9/f2zS/92To6/c24Q856b57FX/C722S+PXvbZqfZ/u9Te" +
"P5hvM0vvHswE9ZtvrtjcPJvn5fjadW+Rf0pf60ZUF5VMXr2Zhq" +
"jOe7no2nk9ez9cbarGfjUMLx/kCq7M9k3Enb6a1tA+/P7cn2wb" +
"OnU9lLw+DZE+N20FvbBq51R7J98OzpVPbSMHj2Xsd7/ufPRDZz" +
"vJ9em+M98fr+SJFX92LOn9FQj+vRULnnz3T8eal0//5svpkhw0" +
"yPO4hLOf0d+WPGO5hLaZ/XZcq+J9xDLfVso3l7vAwLsBIt49mO" +
"TMjYYVy2s8CndUkezGUeny7NCFVddcsJuZdlVajCx6CZNL6I+6" +
"Ne+7N6tNz7o7Xn7/e/R0j/e7BaPa7nWE5npYWM63msyLVbCJpX" +
"zf1mc6W2s3md7jebv+WTu/mvY7kW1/NkTtl/XcX/d8J6rsrf/K" +
"vT/1PO/uzzechbJT8PufZ/eh7izdDX85DqxnKfhyTx6+chjbez" +
"PQ/xXvOPuqN8Xnnmy5orXG/Xo00lX482Fbl24XQ4TS31bKP52L" +
"3aEk63PsaYfTJejrht3gS0jginmxtcn2bUeJ9OzW3rYBXcm5p8" +
"uVsfytzssWvSb624q+s9ak1vWppLC2Oo57FvriOB0R4dr8ekwM" +
"bZMVKby4hcLk+vSrROn1KXz2Yq4u/5hVuLPyu1vsgWN7Y3P5Tn" +
"u54L56ilnm00ty3ASrSMZzviEA9OnUX6pC7Jg7nM49OlGaGK+7" +
"HQn1uqJ5Rfqa2E9SDWeTJTC9bxa+yx/FApj9bb1/N6tr5Mhfoq" +
"4/G+K9xFLfVso7ltAVaiZTzbEYd4cOos0id1SR7MZR6fLs0IVd" +
"yPVfy5pXpC+ZXaSlgPYp3r0eki90f0Wbn7s3j+ve/ELAeiA6Y3" +
"s+iAmZPdtNQzxrTkZyv7YeVI2CmKssn46KrWQQhSJDOCDzjOSR" +
"qYQ0YQF2skP4+k386HnJQHcRyLXFJTGffvra/LvX9P+n1IPv//" +
"EN96LtxR5HpG75a7nkn8+axnOBVOUUt9+8w6Re/KlsqWcKr1DS" +
"zASrSMZzsyISOxmpw6C3ziejSleTAHVtu0346FGsPvyy3Voy5X" +
"qa3Exq/59ehcydejYvn/AxVY6ok=");
byte[] buffer = new byte[uncompressedBytes];
Inflater inflater = new Inflater();
inflater.setInput(decoded, 0, compressedBytes);
inflater.inflate(buffer);
inflater.end();
value11 = new int[rows][cols];
for (int index = 0; index < uncompressedBytes-1; index += 4)
{
int byte1 = 0x000000FF & (int)buffer[index + 0];
int byte2 = 0x000000FF & (int)buffer[index + 1];
int byte3 = 0x000000FF & (int)buffer[index + 2];
int byte4 = 0x000000FF & (int)buffer[index + 3];
int element = index / 4;
int row = element / cols;
int col = element % cols;
value11[row][col] = byte1 << 24 | byte2 << 16 | byte3 << 8 | byte4;
}
}
catch (Exception e)
{
throw new Error(e);
}
}
protected static int[][] value12 = null;
protected static void value12Init()
{
try
{
final int rows = 58;
final int cols = 84;
final int compressedBytes = 1353;
final int uncompressedBytes = 19489;
byte[] decoded = new byte[compressedBytes];
base64Decode(decoded,
"eNrdW71vE0kUX0BCCOmqK65BAhJASKcrDiiAKozXDR81Ebq72O" +
"IfSAEoiAZswInzLyBFOgECkYgougaupDgogu6OpIACOiSQ0kEa" +
"GnYzfrz35sPsrmdn1h7LOzPv6/d7L2/Xu8bEU/FUFMVTcW+OIt" +
"jBGo5ogy+pa2+Ar+qJa1hFUf0ht6Q6wOMsdFSMauJFsXkW6Uzx" +
"9cyQgZ6TOX/KPJE142YyN2He0jRhjxJqgy/UURvugxElbvdfbk" +
"l1gMdZ6KgY1cSLYvMs0rmzT82YRkAGek7m/CnzRNaIG8ncgHlL" +
"04A9SqgNvlBHbbgPRuzVc51bUh3gcRY6KkY18aLYPIt0TuqpZE" +
"wjIAM9J3P+lHncqL2svYyi9Agz7NJVuhZP0iO34Rb0rcphDaso" +
"Ek+4JdVJL1ihhYqavtM4Zl4UG7mAhOLT2BgPmehM9fwp80S2Wl" +
"tN5lWcYZeu0jUcqY1qgW9VDmtYJfm84pZUB3joo0ZGCWdLLSg2" +
"zyKdKb6eGTLQczLnT5lzCYwbl+mu+y5yOsR/UdBhw+++LQOt9l" +
"S+e9hdXZstRvhhY4E5lcOz9Uvr59aeZD62tTug9meGCOMW+XFN" +
"cji5X7nniPfe7+iPmOU2/NZBTXI0J6OTZnneerY38ljXF8P2bd" +
"n43vvzceD+fPy9/rz51yD96bue4pmTT5VnRetpw+fne2d8WOpZ" +
"Xwvcn2vlXj9917N2IWw9bfhKf/5aRj3j/wepp8HysMPrfsF62n" +
"LS+9MZ00vf/koTyaf3j9FQjuuWerd/8M0E6xlnepbR75daS9Wt" +
"c1zq85kYE2PyKGeQyX28xiVoS63bG1Qn5eiH/ojJo1Ad5UVxcE" +
"/jmHhxRGQFc5qTKTZljyx1pioT1b5vf64X7PAq9+d6qdEvxhfl" +
"Uc4gk/vuB5BQG3yhjtpwH4yImNRS1yEzZMVRMaqJF8VGLiCZfa" +
"BmTCMgAz0nc/48q/7Pm6dORCM3ys4p3/3nrbuD3n+Gvl+a28xy" +
"v9T9WOz+M56Op+VRzludOw17lFAbfKGO2nAfjNi7bu/mllQHeJ" +
"yFjopRTbwoNs8inSm+nhky0HMy50+Zc4mf75fEzrDnu3/8vPXM" +
"mc+OwPXcUaXr5+03A3+/FPj6acNXnt8nw32fnLM/dgXuz1LxxW" +
"lxWh7lDDK5VyVoS62pP8jRD/17iNvVKKjjvCgO7tGWy7he9SW5" +
"bjfHpuwxL52pykS1L6M/6/uL6XyMbPhFWXb+MMh+H4Rv57f++u" +
"7nsPWc+6fUv1atXpNHOYNM7lUJ2lJr6i+P4gr6oT9i8ihUR3lR" +
"HNzTOCZeHBFZwZxyM8VG9pSlzlRlotr3+z6k8FX5WnWfN/1wm3" +
"3lsp4T96tbTz/cZted1vN1hevpnZuD8/1qhc/3q8NXz4nFCvfn" +
"4hD250yF+3NmCPvzUYX70zs3fD4Sdwr2gMWv9VPxmFqss265+e" +
"hPsZA8z2wW4LxQTJdntN8XrOdC2PPd+e+T/w58/bTgt/4c0noG" +
"/vWyDd9HPUW7IOd2VNnhn9vgn+/9xvy2sPXs7Kt6PXP+e9xzJ1" +
"323L9nRev5wkk9X/j3rGY9a82w57t//JLreT5wPc+PWD0nA9dz" +
"Mmw9xYp9Z71GrdhsxUq2CFkx3PnpebpiqtRz2b6zcl622YrlbB" +
"GyYrjz0/N0xVSp55J9Z+W8ZLMVS8LRb22LxrH58eej1MoV05Lv" +
"58cC389/Gq3nIzfj1Cf/noPXc/5ANHJjfrzk6vX5fd38oUwRhu" +
"v3yccs9qX9f23sz/qX0etP/zmRep4bwXqeC1jPMyNYz3Jz+go5" +
"MOAB");
byte[] buffer = new byte[uncompressedBytes];
Inflater inflater = new Inflater();
inflater.setInput(decoded, 0, compressedBytes);
inflater.inflate(buffer);
inflater.end();
value12 = new int[rows][cols];
for (int index = 0; index < uncompressedBytes-1; index += 4)
{
int byte1 = 0x000000FF & (int)buffer[index + 0];
int byte2 = 0x000000FF & (int)buffer[index + 1];
int byte3 = 0x000000FF & (int)buffer[index + 2];
int byte4 = 0x000000FF & (int)buffer[index + 3];
int element = index / 4;
int row = element / cols;
int col = element % cols;
value12[row][col] = byte1 << 24 | byte2 << 16 | byte3 << 8 | byte4;
}
}
catch (Exception e)
{
throw new Error(e);
}
}
protected static int[][] value13 = null;
protected static void value13Init()
{
try
{
final int rows = 58;
final int cols = 84;
final int compressedBytes = 1375;
final int uncompressedBytes = 19489;
byte[] decoded = new byte[compressedBytes];
base64Decode(decoded,
"eNrlW0GLFEcUrpCDJPddCQRiyAQSZUCihxAI2NXTgywBBe9iEg" +
"8imESIl+QgmV3X3e2w7EVIDoHFkyieQm4J0Vw8RFCReBRkIXjZ" +
"X2DCZnpf3rz3qqpnepvqrpmyhqnqevW9975686q7q2dGKbsMvs" +
"aj7IXyUPL31RQVP3PaS/nu0igSh6xYP65uZ/ChJfnLH8vFGxO8" +
"Pyr5dA9W5n/ED1OWnydVdKX9ObF4nogwnicCxnMhwnguhItnEy" +
"X/IGw8rx4IFc+0m3aH8xdn5UIyuQDKhQWbXq5Hf9fTq+7fF9NR" +
"PDtpx/LRqcSkU4Z12Wy3VPfvi+nVFRVxSe74QznOzpezy1BDiz" +
"LomxLCcjTXRznpkT75lFb4GOfF/VCf23Hxkh6JFbbJz27bnD2g" +
"3ExNJsiHdK31/mvU+fmLP5QjP+9n96GGFmXQTx6ihGNMtHxjTd" +
"ZJF6VcJsckM/KDPWnHxQvHTY4ogTnZtoktseQIGQebNXmz9pv/" +
"lsd/+Xale6KPx5yd18Lm58qDcPefyZ8RrvfW5zT4Y+T7aYTxbH" +
"RO2Ua2ATW0KIO+KSEsR3N9lJMe6ZNPaYWPcV7cD/W5HRcv6ZFY" +
"YZu86rbN2QPKzdRkgnxItzw/o7y+v+IPZRd9Rp+BGlqUQd+UEJ" +
"ajuT7KSY/0weOxf0wrNCZ5cT/UJ6yUyXFTl9gU/l22OXual83U" +
"ZGLiHfm50ejzkDRsfq5eaPT8uZPtQA0tyqBfHOvnICcMvQDB36" +
"acW/z/c3wukXwMGUgWttfiXdhx8+K+iQtKuH9um+wRE5upPX/O" +
"PNvpq/7wuK+wVaNecdw7hhKO6TNE0V/c7guM1FFMVxnW+s4xZb" +
"CwvZJVFy/uu8+sgiRfMGfMLRCDvpOpPX9l4B3386Pvj/Rxz3di" +
"U/D9ke85TS4UT+93tlMQz+R0pev76SbimXQjjGc3XH4mb1ssZ/" +
"77YntOpRa8f1+cHI7wfv5wuPzMP41vvS/PNRm73rPeM6ihRRn0" +
"ScIx9KIxjpE6ZJF8cqQ9RsyIlfRKVl28uG85i6JN3jBnzC0gFl" +
"EmU3v+clYTzp+vN70W8s9aX+8Nz2nQHRwavDlsj+72OmK9n61k" +
"4Z3K16P3huvtS0+835owXvI9f/55Cf5d3lv6ae/Xo8FHwwzd6m" +
"1BDe1u5m5hP3kNJRxDLxrjGKlDFkcrQyDtMTzirKRXsurixX0T" +
"F5TAnGzbUsM1J/f85azGX9+jfF437w8VfH+036OtT+rprd2pdF" +
"4/NyvxTG6Gjacv/1MTz1uB43krrnjmX4SNZ/u/r8N4pnPpcC+x" +
"dsBvPNO5sPEs8z+4PqP5efFlzc+G4nkp7niO2x9VtLCn/ZH+Pu" +
"z+qMy/3B/tSmrsj3zk5+J2+/ef+m7d/NR3K91/fjMr6z27HXa9" +
"+/LvJ56u5/Nl+el+Pr/6xA/Lus8/e48qf2JHZiE/Q+83szV/qI" +
"pM8f8I8+m8UksX/cY09fSkIf/Kr/827j/zpfjyc+VGXPefoeOZ" +
"X4krnnpf2Hj68j8t8Ux2wsbTl/868dSbNXNgc0x+bgbOz80mY6" +
"dP6VNQQ4sy6JsSwnI014c6OU96pE8+pRU+xnlxP9RHbL4qZXLc" +
"1CU2BTeXbWLPWdpMTSYm3vHJi9/T5t96/gR/U0FLs/71ul6HGl" +
"qUQd+UEJajF7f5GMhJj/TJp7TCxzgv7of63I6Ll/RIrLDNc7dt" +
"zp5Y2kxNJibeEeMNflQnP/WYX4zrwP9mbN+/vmYf1bXg2J/8Hj" +
"ae1fzn6/73m8O41Nwf6SU1taV9bvpH+2jsk57tcgsO6/e8cLzX" +
"vmZtjz/YR3uM5xi99Gzg9d6s//8AGX5QKQ==");
byte[] buffer = new byte[uncompressedBytes];
Inflater inflater = new Inflater();
inflater.setInput(decoded, 0, compressedBytes);
inflater.inflate(buffer);
inflater.end();
value13 = new int[rows][cols];
for (int index = 0; index < uncompressedBytes-1; index += 4)
{
int byte1 = 0x000000FF & (int)buffer[index + 0];
int byte2 = 0x000000FF & (int)buffer[index + 1];
int byte3 = 0x000000FF & (int)buffer[index + 2];
int byte4 = 0x000000FF & (int)buffer[index + 3];
int element = index / 4;
int row = element / cols;
int col = element % cols;
value13[row][col] = byte1 << 24 | byte2 << 16 | byte3 << 8 | byte4;
}
}
catch (Exception e)
{
throw new Error(e);
}
}
protected static int[][] value14 = null;
protected static void value14Init()
{
try
{
final int rows = 58;
final int cols = 84;
final int compressedBytes = 2331;
final int uncompressedBytes = 19489;
byte[] decoded = new byte[compressedBytes];
base64Decode(decoded,
"eNrlWkuLHFUUbgImZgQXCoKY6ECiMxo1wxjIjChaLxcmKOIDR+" +
"PCvUFc+AOccXoSe35FFuIuZKHgRtC14nOhxlUkTlBGfG1ERevW" +
"6dPfd+691V3TqZ4kY13qPs75zne+U1NVXV3TxXwx3+kU80U1uk" +
"3muoZXbTyT1comVohRLnAKf/ZcYXKyD5vN6GvwMRbBGaFI1bj8" +
"1s8MrMBm9jPyEQI+L7dOJ891dJ4817Wbp+fELrb0XE6bIHhXlE" +
"QCo7P0nLNyDviUTWesymZ1u7JbHhuBipRR4mzFXJli3Sqm1FeC" +
"DbH+9sbrOktv7uy4bbI1pU+mT0ovo9pk3XvXWoBlNMerHXGIR0" +
"7Lwj7WxXmwZp6YLpsRqnR865U4N6uHylCpr8THDzs/J7H13ruy" +
"5+fa9HZnXP69/8lxV3ZX+fc0+Z1l9CaoGFY429hWfhgvri7/8p" +
"mmyKHX+7Pps9LLqDbXsvuz+63F2XQGNMdLL3GCRXylsc/JLOrz" +
"dXEerIG1Nuv3Y1ErKrDcUK/scaW+EuAxrzk/Z7PZTufN18zfbL" +
"bROTBbhxXOVu4b7495fs42Pj/HUrp83/Kh5X3leKRaHeT7Z/K5" +
"j+5+G2E4UMO8IOPqqwNLoHD15Nh3pTtG+Ofj9rCmPv5Oc5d9vr" +
"Q8sEVFD448nud34PE83+R4dj8Y93gO8mxqLzPY7MzOazRv1uOH" +
"reoY4giLqlMeixtdRV1+RI/iSS5oL7OYN5zX6rmwdY9FNcsClF" +
"U+Ov9w/rr8iK7jGXq9fxNcn89s/XonS0ufRZd1vX/T5Hpfffqy" +
"r/eftZcZbHZm5zWaf67HD1vVMcQRFlWnPBY3uoq6/Iiu4xl6fn" +
"7c6O8SnJ+9D6/iz6OPm5yflaX1z/dwa3a99z66eq/3U59O9nof" +
"djx7n7XxvHR1Hc9eo+M5/vPnsPchyUtX73u31SdG+I/XXO8Trm" +
"no+fn5ePfPa//8nMz9M7m3jeu9u7f+eHb3bPvn0b2T/H601un+" +
"4o5nd3P5SPcfOZ7d39o5g7r/BpY/2js/u7+O8P9VczxfHsn8p6" +
"C6f7d0Jf3T2cHb6bcbvb36ajz2ZCVZkV5GtfXX09YCLKM5Xu2I" +
"c9e7+jUnWLp7rI91cR6smSemixUjlmqdjnOzeqi09fpNcYz/v5" +
"2fycPtoZpta+e3hl/ZvJaOZ++H7c64cp2M2b5sn///o8vfHOeV" +
"3Oryh+/nx9nyjXxDehnV5lq2P9ufb7j/d1gMmqB59+3M2K9nv0" +
"WyTxWwCssMS2/D1x5GoCLUyvmZe/kMR8RqitfPykvb0fxoOR7V" +
"sfIc1TUsjEET38qmxvqRmOvMsjEvfDpjVTYrWGO6OLetwo29H/" +
"2KmQEKwpri9XtVLeTlU7frZaw8C7qGhTFo4iuP5wJjbAwYB5kN" +
"MvTpjFXZrGCN6eLctgo39n7yK2YGKAhritdvq9rq+6Vr//tmsd" +
"7k+5FDTeD90h8773ieemey398jn++38Cpt+fcxbfGNy1MX146u" +
"9JH0EellVJusk4esBVhGc7zaEYd45LQs7GNdnAdr5onpshmhSk" +
"dXU4yb1UNlqNRXYvFpkRblWOhYeQpd+xZgGc3xakcc4iXv+m6f" +
"BT46noXNgzWw1mb9fizUrE3HuVk96gqV+kp8/Mjr/Wz9qvasP1" +
"uHTc82Y2iao724sM5xMuSP549LL6PaZA0LY9DgY4yNAWP//LzR" +
"Itmn+ayKMCtYY7o4t63CjWvTfsXMAAVhTfH6WXlpO5YfK8djOl" +
"aeY7pev0ktjEGDjzE2BoyDzAYZ+nTGqmxWsMZ0cW5oUcvpI37F" +
"zAAFYU3x+m1Vj+16bFen43oZnUdWbr5+s1oYgwYfY2wMGDWzRY" +
"Y+nbEqmxWsMV2cG1rU0rvHr5gZoCCsKV6/rao4XBwun14Py9h/" +
"lj2s6+IpsTKGvOTDrr0ygRFWtlkfPVGbPLrydYa61O9rHFiesl" +
"GWgfPbzPY4hKoVP+x5vji+A78fHd/25/lD/TdBc9lc8HvvuUbv" +
"xObqsMLZylvFcX/vPdf0fV1rSvV4zmQzQY6ZRppn6rAxzm1+/z" +
"nTPpI+lfbme6WXUW2uZfPZfL63ev85wDgLmqB5V5SbCxaMlcaK" +
"E0j2KRuUQZXN6vb1W33tYQQqQq2cn7mXz3CE6veV+kr4SMo+7P" +
"6Zvtj+/bMZ5+Tun3X527l/5rvz3cE5W9ncnnwhXl0rVuaItH62" +
"h+zsUx7L5Edrry2mllXE9Q3+0/YF41nJ0Ot49yhbP+dUPlWOUz" +
"pWnildJ9+phTFo8DHGxoBxkNkgQ5/OWJXNCtaYLs4NLWqRmkJu" +
"GxGrKV6/rao4UZwonyFOyFg9T5zQVub+El5p67fBqz6dyW5nbl" +
"x9lfkR49rqSetjjJ8HFh9jEfCxIs3LNTG3+sFuM/sZYbP4yH1g" +
"8CRyaqr9z9f126/s5/vpk5NkL14oXpDejWrRdfIJvGrjGeKx2x" +
"lG5fdzWh9j/Dyw+BiL4IxQpHm5JuaGWmW3mf2MsDG+WCqWynFJ" +
"xsq+pK3M/TW8auOZrHQmu51hVH7EhLmpmqUwDyw+xiI4IxRpXq" +
"6JuaFW2W1mPyNsjM8uZheD59jKJvbsYvq9zGGDDxG8sz1kd3zq" +
"U3yI4mjttYU8VkWYm/nT720Vyqx8Nc/2F0fZNPvQ338e2nnf3+" +
"tqauf5M7uUXZJexupIX9K1m6cXxA4MmiB49+3M2D8/Llgk+1SB" +
"VRFmdbvjievi3NCiFs7P3OCDklBpWD8rL20bmfsNyoaOlWdD18" +
"k9alHr+t3qFYT6GGNj3O8VYbVs2UZ3T+jTGauyWaGTtYcRQAIv" +
"NYXcNiJWk58nM7+3EV+xWCyW99FFGav76qK2Mvcd8KqNZ7LSme" +
"x2hlH5ERPmpk+DxTAPLD7GIjgjFGlerom5oVbZbWY/I2yMLxaK" +
"8i7n+qJ/t5O5rJMb4FUbz2S1somVMGCGsRjcTW1O62OMnwcWH2" +
"MRnBGKNC/XxNxQq+w2s58RNot326MHXVMmN5NVcr21cc8e29tZ" +
"nH/UpnjFxmLAqrqgzPfAJjX5/GyzR4GrlRzahig74BpWsluEoN" +
"Czx/Z2FucfeTwPWMZYDFhVF5T5HtiSJMbPtupMSpSLq5Uc2qLK" +
"/gORenXX");
byte[] buffer = new byte[uncompressedBytes];
Inflater inflater = new Inflater();
inflater.setInput(decoded, 0, compressedBytes);
inflater.inflate(buffer);
inflater.end();
value14 = new int[rows][cols];
for (int index = 0; index < uncompressedBytes-1; index += 4)
{
int byte1 = 0x000000FF & (int)buffer[index + 0];
int byte2 = 0x000000FF & (int)buffer[index + 1];
int byte3 = 0x000000FF & (int)buffer[index + 2];
int byte4 = 0x000000FF & (int)buffer[index + 3];
int element = index / 4;
int row = element / cols;
int col = element % cols;
value14[row][col] = byte1 << 24 | byte2 << 16 | byte3 << 8 | byte4;
}
}
catch (Exception e)
{
throw new Error(e);
}
}
protected static int[][] value15 = null;
protected static void value15Init()
{
try
{
final int rows = 58;
final int cols = 84;
final int compressedBytes = 2392;
final int uncompressedBytes = 19489;
byte[] decoded = new byte[compressedBytes];
base64Decode(decoded,
"eNrdWk2MW1cV9g4hlixmg4aRAIm2QtWQoAk/AtvPZkMFQqioAh" +
"YgJH6mtIgFm6pVwYbM0FgsG6Rs2qy6QAIxXbBCDT8qgUCgKpXI" +
"IoJNWEXK7Cbqhnvf8fH3nXPPm3mePMdt/eR7z+/3fef5Z+w37v" +
"XK2+SWWvvv7XV+m32st9bb3tYq0cf/xpE9jqTZH7IR9lCtMYlo" +
"XNHBwpzcw7lSl1dlcUpdlhEadd9/yStmBFWOKSIGy8T14xs4kl" +
"/f4fsIe8hpTCIaFwu7WOkx+rjvQY7OZ6Mq1Ma6LCM06r635RUz" +
"girHFBGDP0Oo75/rn+v18pr3fBNb/f654W8RQa1Y4qkld2thV3" +
"zBQ4xzuFlG9i1OqcsyQpGqyX02L7bqggLLbFVxjOv7O/2dtO/I" +
"Xsd39BCPI+whp5bcrYVd8YevWU7O0TQ7JQ/rsjW2ghmhSNVkfp" +
"tnBFZgmT0jnyE7tb9Vv2p6ty0zOTK93bb/ft6aVMw+sVLWl6uX" +
"ZdVdvWxlW1euQUVep7fFKjtLPIvGuMhBmVaUrLF238H6NTL7pO" +
"0qp2eVXqlXwmeS1ZvMrxeP5aeaMs2ROLaG52eDiv2XVss7+cjk" +
"ocn70n629j7Y6/34h0sifKAhXvyVmXw4PUaf7kj3+0/IfzSO/+" +
"zVhvoPFZEzSypqeCdZ9nz6988TPs/31/u8nX1mpa+Kg+pAVt3V" +
"y1a2deUaVOjKNbbHRpN3xcY4p3yqjNEta6zdd7D+ReSK7Sqnr8" +
"/6oJwpmp/PZL6PHh49LL7u2cq2+FgRs7n8/LR5j+QewVeQkx6u" +
"4nqN66qHxbMTsN4YtXrFTxyh+luZ9z1zzjOj9C6RV9nrzBn1Ee" +
"EaHMhxje0B4vz19llbyTnlsypKVqBGupjbTpH3vS0/MSNAQTlT" +
"PD8rT7GN0UZx5uuYxEcbwwOx5T48kChWtXxP+uR8UKIPD4YHYJ" +
"GeSAN0AFUPRbJVrMDGOSqqbFRQhwdWJxg8QhwT9upadS29Bq5h" +
"Vy9b2daVa3wF7j6utlrp+fk5W8k55UOPR0bEquUK5rZT5H1vy3" +
"aV00NJqbScn5Wn2NXqatqvYlcvW+On8pojtgYVmuMa25PO4JcQ" +
"tWiMi5xaqPCsyhDrYm5o0YjMVGLbjmimeH471fgvOBJXfdej2q" +
"62bSTHymqtkEhepU9qJaKWYNoezZnrS42qUOu1c77UqDvPxNiY" +
"RdHt9JaPmbS+rriKI/n1Hb6PsIecxiSicbGwj+eP5uzLvgc5Op" +
"+NqlAb67KM0Kj73pZXzAiqHFNEDP4Mob66U91Jj9kd3evn0B31" +
"B69rhGtwIMc1tgeIi1eGqSxzarEqywrUSBdzQ4tGZKYS23ZEM8" +
"Xzu6kOq8O0H+peZw7VR4RrcCDHNdXh7DH4QFwwHzJHmVOLVVlW" +
"oEa6mNtOkff9635iRoACz2z5rGquD64YmO/dw/91+42sK7zT4j" +
"T1daOrf9g/lFV2jYmf7eEtRFDL1dyvcSABca77lkdBzupiHviM" +
"E+myjFClO/cxtsRVOaaIGCwT1w/ODs6m95SzuueMeNmefcVGUM" +
"vV3K9x9KFfz5VH4RxqLA98xol0WUao0v3C9Rib1UNlqdQr8fXH" +
"Xa+bfdXPef7GvV6v6+w64ymv11243uZ63d5jq7heN/ha7y17++" +
"nnT8g/EsdXPdNxz8/BA91fT17387Nppq6uJx/7ev/6O+98Nv2/" +
"w57P87/r7vU+/flKr89/e83X5791vxmXPZ9LzvOd9Z7P1f5+ab" +
"A92JZVdo3lo9qoNgbbz20hglqu5n6NAwmI8+8RGx4FOauLeeCj" +
"1sZs3vdCTeaPsCeXeSpMETFYJq6v7lZ3E8dd3euJ76qPCNfgkN" +
"z0tvb6Tthqpefnrq3knPJZFSUrUCNdzG2nyPvsu35iRoCCcqZ4" +
"flaeYkfVUdqPdK8zR+ojwjU4JJfO5xHX2B4gzs/n92wl55TPqi" +
"hZgRrpYm47Rd5nj/uJGQEKypni+Vl5dTTeHe/2enmVvb7ytKu+" +
"j6CWq7lf4+hD//x8PuFRkKPrdbuWBz5qbczmfS/U7G3F2Kwec5" +
"VKvRJfH/zdx+9pv3jKd+XH37rfA1arbbQ52pRVdo2JjwjX4ECO" +
"a0abwyfhAxGczFHmoAyqLCtQI13MbafI+/BJPzEjQIFntnxWNd" +
"eXn+enLy4+2zz9zvs8f+HB9X0/aomz3O+Xnl3v+Wz6/Ln63y9V" +
"D1Tpu+5zhr9q9Y1eqqJawezkW8et0/U18U8ut61scxs/On4Utt" +
"zTe/e/yhpduTqy6UrP93NPhJ9yTzQrYsQIGZiqi5G5X9e855mg" +
"x6r3s/Dd8tja1teXiqud+998219futHm9b7/jXt9vQ8u6iqWU3" +
"Exths/lVxcPmOr2rGgyio/mf94/CZ+dJ+EM3heV7GibGk36nl+" +
"+YytaseCKqv8ZP7j8Zv40d0Op/4k9UJpdfRp94X1Y3U9UwvG+e" +
"fP0S9HL64GeZ1YXc/UgvFyaXWNvD6srmc64VPdq+bve/H3ePKF" +
"pRGvnH/33PrzZP6LyelfF/9XeNc88od6/VPQ//d0fz34a/pII2" +
"P9C60fzf/+T38/3+vfGU3/6Wea/jFA+Efr6f6W7tenrx1Xg/M5" +
"eqPbR2sy7fCRv3nK5+cbK31tXxpdklV2jeWj2qw2R5fy9yNbg0" +
"Oq+e7jjDj/1rFpKzmnCliFRfY6I13MDS0aYX7GnlzmjmimeH5W" +
"biPl87PFJ5Zne2u5nZ539YrHv5A173kVnyNaI7vakW87I64o6n" +
"WwiriOtUWMimV9tqJJrE4fsd3a75nu8fn5zJqen8/c/862t+Gb" +
"suY9r+Jr5Cc/kDhq1Y587izjmjlJB6uI64Zv7j/FaJ5RsazPll" +
"dory+VCiwi+DxTeod+j6x5z6v4GpE8YrAjnzvLODDDK2kLHawi" +
"rmPNESOUs89Wk0Lg2axFBJ9n6vX6/5E173kVXyOSRwx25HNnGQ" +
"dmdIMOVhHXseaIEcrZZ6tJIfBs1iKCzzMl+zey5j2v4mtE8ojB" +
"jnzuLOPADGdY6GAVcR1rjhihnH22mhQCz2YtIvg8U7Jvypr3vP" +
"ZvalwzWmPtyOfOfvCJG+hRTitYRVzHmiNGKGefrSaFwLNZiwg+" +
"z5Ts/8qa97yKrxHJIwY78rmzjAMznGGhg1XEdaw5YoRy9tlqUg" +
"g8m7WI4PNMx16fb/Xd7G12fb5hpo7+H/d/8pYsVg==");
byte[] buffer = new byte[uncompressedBytes];
Inflater inflater = new Inflater();
inflater.setInput(decoded, 0, compressedBytes);
inflater.inflate(buffer);
inflater.end();
value15 = new int[rows][cols];
for (int index = 0; index < uncompressedBytes-1; index += 4)
{
int byte1 = 0x000000FF & (int)buffer[index + 0];
int byte2 = 0x000000FF & (int)buffer[index + 1];
int byte3 = 0x000000FF & (int)buffer[index + 2];
int byte4 = 0x000000FF & (int)buffer[index + 3];
int element = index / 4;
int row = element / cols;
int col = element % cols;
value15[row][col] = byte1 << 24 | byte2 << 16 | byte3 << 8 | byte4;
}
}
catch (Exception e)
{
throw new Error(e);
}
}
protected static int[][] value16 = null;
protected static void value16Init()
{
try
{
final int rows = 58;
final int cols = 84;
final int compressedBytes = 1933;
final int uncompressedBytes = 19489;
byte[] decoded = new byte[compressedBytes];
base64Decode(decoded,
"eNrtWj2IXFUYncbGTguTQomgokRszBZBLMz8JIWSoBIQs6tiIe" +
"lEiGgVNjOPOISAP21iYyNoYyW2/qFG/EWIRkSbDYrYbKPFIr47" +
"33zvnO/e7755O5nZnaz7Hrn3+zn3nHPfvn0zeUmr1Wq1/22Nxj" +
"CHUXKtSB81xF7OK9M6OL0DPtiFj2PPniKcc85RziH4bNcyQi9W" +
"0qNzTEeJcrU05tzDNO0wJpz1CMVhReq8Tn8Sf9zHtYiVMwzHdZ" +
"QINRulMecepmkHR3Fz53g9Tt1ah75fX38Sf9wvbrKr8zwP/Spj" +
"mMMouVakjxpiL+eVaR2c3gEf7MLHsWdPEc455yjnEHy2axmhFy" +
"v17+vf27+1nJdG2Z2t1pkXtXfo7laDo39Hpn4wqdzTmtkxWJ/g" +
"6n6/nttT/66kcmBzjvoPjBVeljHMYZRcK9JHDbGX88q0Dk53p5" +
"UPduHj2LOnCOecc5RzCD7btYzQi5XKJ0BbxjCHUXKtSF9rxS2I" +
"4x49a/b4dajlO+IALnwce2b3MVeqihX1XmIHlhF6sVL5u/+HjG" +
"EOo+RakT5qiL2cV6Z1cLrPrMoHu/Bx7NlThHPOOco5BJ/tWkbo" +
"xUrltT0iY5jDKLlWpK814BFzzvXBP+5P/kj2nqh8sAsfx57Zfc" +
"yVqmJFvZfOkcHfnrtYL1aq8A/rKFF5PS6nNSARc+5hmnYYE856" +
"hOKwgrkn60/ij/u4FrFy8ux9ScYwh1FyrUgfNcRezivTOjjdz4" +
"DKB7vwcezZU4RzzjnKOQSf7VpG6MVK1fV/VEeJUBv8ybU05tzD" +
"NO0wJpz1CMVhReq8Tn8Sf9zH9YmVk7UHZQxzGDsHta4dxdjYy3" +
"llWodaviMO4MLHsWdPEc5j1dxO0h3YrmWEXqxUfjb9ImOYwyi5" +
"VqSPGmIv55VpHZzuZ2rlg134OPbsKcI55xzlHILPdi0j9GKlMv" +
"5dxjCHUXKtSB81xF7OK9M6ON09VD7YhY9jz54inHPOUc4h+GzX" +
"MkIvVqru58d1lAg1G6Ux5x6maYcx4axHKG78N4gbc85z+pP44z" +
"6uj+2nPJ0HZQxzGCXXivRRQ+zlvDKtQy3fEQdw4ePYs6cI57Fq" +
"bifpDmzXMkIvVkoPvA9p+Gbir82gz7/W2tbj/KvzVmivyxjmML" +
"bXtR6i4gWpA9tet2vb6ymjX9fOJB/swse114dnmC1WVC6bcxQ7" +
"7L8V+7QOLCP0bH1YOO+dTs31/nxjm+/P1+fLX/f+s/tjjB6eW5" +
"T3n/19073/TPfkvf8s3pz+/efWPj87H23v/Tlv/dr788rivp+f" +
"+v68sl33Z+dAp2Q8d7v56TbSEFSK7Q+EcxbH4OqU92dG334eNd" +
"9r9o3KbzpK5HXTuJ5tcx2LaqYClHU+Wb+eP6eP1T5P70Lvgowy" +
"ay2cnf2d/VrRaqjgRI8xARViwYJx9DMfc4IBPWWDM7iyqmBl7+" +
"kKIIFnfea2K9R/7DR2wleS3V/L55HzDfH51sIe8/XWu9i7KKPM" +
"WhvnR7XCGJzoMcauASM0jUbSgzO4sqpg9XyxNrxUlaPxjpkBDt" +
"I9+fu3u6r9PFrqLCXP6KVGz/ylHNbj3OLvS0uzRzb+vnR5cb8v" +
"nX1vyu9Ll5t8XxpVZvR96ewHrR18DN9phHp3Ovbu4e5hGWXWmu" +
"SoMAZn+W1hVddxj9eAEZqMTHtwBldWtXv40GrqPV3B/rWijmNu" +
"u8Lbk7d/vpKj3lp3rZzXdB511jRHhTE4S3endR33eA0YK2WDTH" +
"sasSur2l07dFrZU1+sbXfBjmNuu8Lbk7d/up6jXm+pVz43w9gb" +
"P30llrz7E7pa40gyjeSPjTD3qqe71bQ9xsQ6qMQYi2BFOFJd3h" +
"Nzw62yW+VYETWLr/v+2f155z0/57un7onuCRll1prkvce0whic" +
"6DHGrgEjNBmZ9uAMrqwqWD1frA0vWpE9pdx2hbcnf//Rrla6K+" +
"W8ovOos6I5KozBiR5j7BowVsoGmfY0YldWFayeL9a2u/B2Yxng" +
"IN2Tv/9oV8vd5XJe1nnUWdYcFcbgRI8xdg0YK2WDTHsasSurCl" +
"bPF2vbXXi7sQxwkO7J37/dVXn/bySfBRuhJnWMqKE6fB85eJgx" +
"ZWcV1vARMd7WPJRGq/vy2hbrsTb6u/pGnPU2iueKJ2Nc8cy8nt" +
"bFszPkOrGIn3bhehZPFU/M9noWy9t/PYunr4l9ZZGuZ++2/PXM" +
"9bbqejbTn9Zlb29vr4wya03yuAKsRcQ95sV6aMZI20sVY9XYlU" +
"VYdusizw3P7DJ16u2f8XXvl4Zf7Lz3S8NLW/l+afBZ/fv5/rHN" +
"7nvwYRV93t8zjr5MUB+Pxk+d9V+Xf35wnDySVbwkn+/jbPzvw4" +
"PRvTH4LkF/4jB823h3X5V/vhl83+z9Z8Ofy3X178VZ/Nzef177" +
"vx/9v4/22zKGOYySc0UxMmvs5XYl83Mn1o59sAvfL3tLFcGV6t" +
"TtxPr0nKZ6sdLu77v3+z7L/x8yvC7e0vVfWVBfu/fnnO/P9sk0" +
"mtGT+uT2c816Tw2u8w27n9G713Nxj6K/ew1men+e2r0Gszzw3n" +
"l49frdxeq+3e9LO+Dv7/8BijMH8A==");
byte[] buffer = new byte[uncompressedBytes];
Inflater inflater = new Inflater();
inflater.setInput(decoded, 0, compressedBytes);
inflater.inflate(buffer);
inflater.end();
value16 = new int[rows][cols];
for (int index = 0; index < uncompressedBytes-1; index += 4)
{
int byte1 = 0x000000FF & (int)buffer[index + 0];
int byte2 = 0x000000FF & (int)buffer[index + 1];
int byte3 = 0x000000FF & (int)buffer[index + 2];
int byte4 = 0x000000FF & (int)buffer[index + 3];
int element = index / 4;
int row = element / cols;
int col = element % cols;
value16[row][col] = byte1 << 24 | byte2 << 16 | byte3 << 8 | byte4;
}
}
catch (Exception e)
{
throw new Error(e);
}
}
protected static int[][] value17 = null;
protected static void value17Init()
{
try
{
final int rows = 58;
final int cols = 84;
final int compressedBytes = 999;
final int uncompressedBytes = 19489;
byte[] decoded = new byte[compressedBytes];
base64Decode(decoded,
"eNrtWztvE0EQvhqJig4hXgkQMEG8FEVIKezzH6CjoUwFEhIKHU" +
"1sn4mlVEiUlEhATUGBKJDyAxCiQfR0aZBChcB36/G89s6+8zn2" +
"2XOR9zEz+803k/U+TkkQ6Cf8pFvVe2bFvbXeqrXO9Ou7SW81CH" +
"af5URYSZFvKslaibzPjdDfzol3SUnu5ES4N4t8Ng7KyGbjoGg+" +
"0/zzfO79qUo+qzE/O6+L5rP/G/vpyriOS9enErBxNbR9fT6S4l" +
"MNH8/bjoG0k2MoN+0RsbSfrEg4Tx9T7U96svlZ5voZbofbroQa" +
"enErbkNJbdACSmrDx3ApR6O4qIMWWmivYOHjxX3TKHzR6OgpS8" +
"lUMiHniYG9zc9q7++Lvh9ZPmU+Ox8mm59Snjefqfib07yHdN6M" +
"0L+fZH7u/cufz2nv7x7LSq2f83bftHxaPqv3PiR8ONt8pvnn+e" +
"ydsP19Ps6f+ilrf1/Ox+anneftvrk889PWz2qvn90nizw/w/1w" +
"35VQQy9uxW0oqY20wI+UQxtaHI3iog5aaCG9IqqPF/XNo/BFo6" +
"OnLCVTHb+I6ig8SnqDGtoohxJkqKU6tAE5RUU8iknxPOdu5gd6" +
"kqfmBXrJkbKhozgC9S/jSmdCdIfhYdIb1NBGOZQgQy3V4QdKio" +
"p4HI3iqnwyP9CTPDUv0EuOlA0dxRGof/qRIzVrp2tuNbeCIC5d" +
"HWtcD9pQog3+oI7a8DGICJ65pdZBi7LiXhHVx4v65lH4ouEIyE" +
"DH5I+fR+VdV3eGt9jTQdA+tVj7b/vkcXvc/WinHrtv2v3I8mn5" +
"LHTf/GurYC8scT+y+3vhJ7rV/5B5HZ2P1iCf0TXPnP6WgXUxKW" +
"8Mejfd9z06O9SvtL6njr3S/wy+odGFkawv9889b5nkqmL6VYxZ" +
"TcrrCit13Rj3+x7VovXMdWDH5lmpJ6hhPhsviyEUHbega/F9y4" +
"Gd5+f3vNSu2Syb/Kn/gtK1fFrdzkbLp+FW43lBK858tP9s/DT/" +
"ONqPU+/UO650NchcX0rQllrT8SDHcTgefXIUqqO8qB/sUxwfL+" +
"4RWUk2EpuyR5aaqWQi7fOtn90fy7F+vnhwPPf3Zcln93N5+1HL" +
"7u/lnj8fWQ5Kzedjy0EJ56VXULqWT6vb2Wj5NNxqPC9oxZmP9p" +
"+Nn+YfR6fh2P3Itx8V/fuQ3lN7vzTtx94nWz7n6f3StPJZ5f/n" +
"6rwr+v9cnvPSc5tlpZ6cvsweYdbRFY2gudHccKWrQeb6KKE2+I" +
"M6asPHICL6pJZah8yQFfeKqD5e1DePwhcNR0AGOiZ//Dwq70ry" +
"276jtr/Pz/5u9yO9vyeSIu/r/gO2jLk6");
byte[] buffer = new byte[uncompressedBytes];
Inflater inflater = new Inflater();
inflater.setInput(decoded, 0, compressedBytes);
inflater.inflate(buffer);
inflater.end();
value17 = new int[rows][cols];
for (int index = 0; index < uncompressedBytes-1; index += 4)
{
int byte1 = 0x000000FF & (int)buffer[index + 0];
int byte2 = 0x000000FF & (int)buffer[index + 1];
int byte3 = 0x000000FF & (int)buffer[index + 2];
int byte4 = 0x000000FF & (int)buffer[index + 3];
int element = index / 4;
int row = element / cols;
int col = element % cols;
value17[row][col] = byte1 << 24 | byte2 << 16 | byte3 << 8 | byte4;
}
}
catch (Exception e)
{
throw new Error(e);
}
}
protected static int[][] value18 = null;
protected static void value18Init()
{
try
{
final int rows = 58;
final int cols = 84;
final int compressedBytes = 1942;
final int uncompressedBytes = 19489;
byte[] decoded = new byte[compressedBytes];
base64Decode(decoded,
"eNrtXD1vHFUUnYog2Q1NKqRIAUdIiCZQ4FR2Zuc/IFnxH4gbCt" +
"xn84FcukHCwiCBkBANSZE2PyC0SEhgUSKldUckJObNzZ1zzn13" +
"k6xZggUzo3n3+9xzX3ay413LTTN/b/7u/M2mmX/Q9Mf87aa59U" +
"mz1DF/a4H/w8rzTrOyY37pBfGruf/gYEH+RuV5f0lG13L/svs5" +
"HTi297f3bTXpPrOjB7mczfXuRx3q0VNROMa8uA9sxsl4aUewim" +
"wiNrMHy5ppZBLz/2/3+8J8ud/v/rC6+322XmvT8dK7+opfn7M3" +
"/t3X56L+q3k/ml2YXag6Dj7zY4XPdVRqnP01OsccR5Fita9+Zm" +
"yZRc6PK6J8Hs8MYRFqj7M2W+vlmsshsuY2PJyDEzHO0Rogjp0l" +
"s465xqy0K1AzXtxbp8imUQQwqGfK59epuhvdjaYpa5HlMN1tRN" +
"3Hmlmu2aUapOOjpu6NQztGDjFHM7gjGDEbjTMCM9DOsSOjEepu" +
"t9vLXZODf9dPs9jDFmKu2aUapOOjpu5N0+zWfZiX5mgGdwQjZq" +
"NxRmAG2jl2ZDRC3el2erljcvDv+GkWe9hCzDW7VIN0fNTUvWma" +
"nboP89IczeCOYMRsNM4IzEA7x46Mhvz2SfukacpqskTMct1X5O" +
"BEjHO0BojOVDPrmGvMSrsCNePFvXWKbBpFAIN6pnx+nWrr8tbl" +
"pilrkXaYZTZW9yHKMVy+OhIQ4WWfxnBoH7ciz5qXxyNHZsNVig" +
"D2OlesrFlbrLvW9U9NZe2ePd2b7jai7mPNLNfsUg2yG3960J4a" +
"45zYh3lpjmZwRzBiNhpnBGagnWNHRtOp+33dKOe40xt2ye5vWB" +
"ZWjuiqWo7/osPzPTerAarzArMYYV+GH+PYBZ7Wevj5HGZXygnL" +
"Ls2wLKwc0VW1HP+F+3lFEbMaoDovMIsR9mX4MY5d4Gmth58Zs+" +
"5XnMVij8XrnJjtPvO439HRhXtyDcdqXhmHnLvyjhxZ1nGexdG1" +
"s/bTHUL+1ubWZr/HmyaH/d700yz2sIWYa3apBun4qKl706tjs+" +
"7DvDRHM7gjGDEbjTMCM9DOsSOj6dTVz/W/j59lfzZ9XrTc0T5s" +
"H9rq0q2iFd1XzkGGr5yjNepVNMZFDMwYXbvm3GMF83dPnKaenl" +
"lGppEJ7ySzl8iDhbv/4GVyF9e/0lfKg/Pymj34YtSOpzt4Bfv5" +
"5ah9Ne3GknfF4/axrS7dKlrRfeWcmIEr+l13TdEYFzEw84zYFa" +
"gZL+6tU2TT1NMzy8i0nl+n6n7E2T8/DRfs6GELMfeZx/2mQZoG" +
"r+JVz58LWSlOzUs7giPLOs6zOLp21n66Q8hvT9vTfl9PXQ47fe" +
"o2PJyDEzHO0Rogjv+SklnHXGNW2hWoGS/urVNk0ygCGNQz5fPr" +
"VPO15Pnzwpm+H3v2Xej8tVf8feLr5/796JvpfWWVx90/pj1Y6e" +
"vzu2kPVrqf3097cNZj++r2VVtNus/s6EEuZ3O9+1GHevRUFI4x" +
"L+4Dm3EyXtoRrCKbiM3swbJmGpnE/OV+3+beL8k77H/w98E+/e" +
"isvw82/X5dtp/3Hp1tP9un7VNbTQ5Ppk/dhodzcCLGOVoDxPHJ" +
"VzLrmGvMSrsCNePFvXWKbBpFAIN6pnx+nSq9py9N7ytnPbqb3U" +
"1bTbrP7OhBLmdzvftRh3r0VBSOMS/uA5txMl7aEawim4jN7MGy" +
"ZhqZaH631+31cs/lENlzO3qQy9lc737UoX7ch4DCMeRoH9iMk/" +
"HSjmAV2URsZg+WNdPIRPNnl2b93V1WkyViluu+IgcnYpyjNUD0" +
"fdDMOuYas9KuQM14cW+dIptGEcCgnimfP0x1Mjvp5YnLIXLiNj" +
"ycgxMxztEaII6dJbOOucastCtQM17cW6fIplEEMKhnyucPU+3P" +
"9nu573KI7LsND+fgRIxztAaIY2fJrGOuMSvtCtSMF/fWKbJpFA" +
"EM6pny+cNUh7PDXh66HCKHbsPDOTgR4xytAeLYWTLrmGvMSrsC" +
"NePFvXWKbBpFAIN6pnx+nSp7z7/15/Tcc+bnpfvdfVuLhM9trO" +
"5DlGO4fAV6jc8+jSkz9HEr8qx5eTxyZDZcpQjcny9dIxPkX794" +
"/WLTlNVkiZjlOnuQy9lc737Uod47RxSOIUf7wGacjJd2BKvIJm" +
"Ize7CsmUYmmj87nh339/2xy+F/gmO34eEcnIhxjtYAcfyfRjLr" +
"mGvMSrsCNePFvXWKbBpFAIN6pnz+MNXR7KiXRy6HyJHb8HAOTs" +
"Q4R2uAOHaWzDrmGrPSrkDNeHFvnSKbRhHAoJ4pn1+nSj9PfvyP" +
"fXd2e3VYt387n+9I0+d12ed1d46nzz/Px34mz5/T3xP4e8+gn9" +
"taZFnNZo/nmHQ9s7Uy65V5Iw9mkecxt6yjY6nNWjaJ8owerfb6" +
"2Gm637P7ffCc8X5v120tsqztuvuLdudj8yO3pb8yEG2ubJO/Rg" +
"D0LOYZzCLPa9cPfmK02NGx1GYtMpx/HXkqA0VEv9hpen2u+v3o" +
"+re2FllWs91jcfigZzZX1n5gcr3qxiDmxRrmnHUE89jneZMoz4" +
"xp3S92Sp7nf57eo1f5PL/sz0fT+xHd738BBcT9VA==");
byte[] buffer = new byte[uncompressedBytes];
Inflater inflater = new Inflater();
inflater.setInput(decoded, 0, compressedBytes);
inflater.inflate(buffer);
inflater.end();
value18 = new int[rows][cols];
for (int index = 0; index < uncompressedBytes-1; index += 4)
{
int byte1 = 0x000000FF & (int)buffer[index + 0];
int byte2 = 0x000000FF & (int)buffer[index + 1];
int byte3 = 0x000000FF & (int)buffer[index + 2];
int byte4 = 0x000000FF & (int)buffer[index + 3];
int element = index / 4;
int row = element / cols;
int col = element % cols;
value18[row][col] = byte1 << 24 | byte2 << 16 | byte3 << 8 | byte4;
}
}
catch (Exception e)
{
throw new Error(e);
}
}
protected static int[][] value19 = null;
protected static void value19Init()
{
try
{
final int rows = 58;
final int cols = 84;
final int compressedBytes = 1725;
final int uncompressedBytes = 19489;
byte[] decoded = new byte[compressedBytes];
base64Decode(decoded,
"eNrtXEFrJFUQbl314GFVFHGjqKCCUTcHzSGIINszo4JHL6JmXV" +
"0V92gY0WvPDmMyp71kb7kIKgiSHDx48hfsLxDRm4dVIYoX0ajd" +
"/VLzfVWvJpOe9GRk0z3kvVdVX3311dvuSXcHTZIkaZ1KyrGYiz" +
"HY4ul/EPziw9qzOTP2S8Q/oINV+LjWqY3vmM1WFC5t88oq7H1q" +
"dWoFmhH1bKXe2d6TvQfyebm0Hk2S7MOk0tF7ZIx/JfI8niQb3y" +
"e1HL2HJsSfrsj3GFv9rdzzTEWGZ8Oc7oaxmIsx2OLZ+CH4gZW1" +
"Z3Nm7JeIf0AHq/Bx6e7ln5jNVhQubfPKKtTnZ6xAM6KerRQfVc" +
"/PCv+Cl5Mb/EivpdfCGGbxBRsexuCDGGN0DhhRk5FxDMqgSlcF" +
"q6eLa+suvG40AxTEPfn9666O9/w8Sce5H2UMKy8arw9mqxbRqM" +
"NVAUorn1z/YP5x9ZHt83S2OlthDLP4gg0PY/BBjDE6B4yoycg4" +
"BmVQpauC1dPFtXUXXjeaAQrinvz+dVfN9V7vMfii2v3n4POj3n" +
"/Wdq8w0/vP0jPF/efGL9X2c+PnZj8n3c9H1/veAefnV801fdDR" +
"3mnvhDHM4gs2PIzBBzHG6BwwoiYj4xiUQZWuClZPF9fWXXjdaA" +
"YoiHvy+9ddHf/ze23f/Dv/z+u92c9Zf38Ovmm+B2u9h2r2c+qj" +
"s95ZD2OYxRds6wGW0ZwvfuQhHzU1C8dYF9eBzTyeLl0Rqqway8" +
"3qoTJWapVofLqULiVJMYa5fFOyJLb1AMtozhc/8pA/ehNjWDgG" +
"jK4Dm3k8XboiVFk1lpvVQ2Ws1CrR+Ha33c1/z3dlLn/zd8WGhz" +
"H4IMYYnQPG0Z2FQsYxWbEqXRWsni6urbvwutEMUBD35Pevu+ps" +
"djbz83RT5vLM3RTbeoBlNOeLH3nIH12nhoVjwOg6sJnH06UrQp" +
"VVY7lZPVTGSq0SjU8X0oX8PF2QuTxzF8S2HmAZzfniRx7yR9ep" +
"YeEYMLoObObxdOmKUGXVWG5WD5WxUqtE41vXW9eTpBjDXESCJW" +
"sZgcEHMcboHDDKPmhkHJMVq9JVwerp4tq6C68bzQAFcU9+/7qr" +
"/ByNntY7e4Uv+DHCp2Mc52i8jqtYHk+Hxmufh5pUu/2KjXush7" +
"o32rNW8ZPdEr//zO7Ix7vL9T3leG/+c3+SDG/dR5TPEsPR35yz" +
"J/Kfp8QaEmO2Mvavfi9kL2YvlauXxyBWs/NkvZO9n13KbspuNq" +
"jT2Z1k3UfrCW+ghrft457Lns/S6vuZvaGsi/nPu+liuphf94sy" +
"l98Ei2JbD7CM5nzxIw/5o+89w8IxYHQd2Mzj6dIVocqqsdysHi" +
"pjpVaJxVd7fh/eftTn93P/zPf957j6J/19yGzfJw9PH89+Du9q" +
"3s8352f1/Rx8W9/7uvRsvKp2TJt3HMdstfXf67/WP99/VfkuHP" +
"mt1cNjqr09PlZZ+esT4m9W0zYNysk70zkTxjCLL9jWA6xG2Bjz" +
"Ih81LVLH4oq2qlWlEZpdqxjPDc2sMlbq9Q98upLm33LFGObyil" +
"gR23qAZTTnix95yB9dcYaFY8DoOrCZx9OlK0KVVWO5WT1Uxkqt" +
"Eo1vb7e382ewbZnLJ7JtseFhDD6IMUbngHH0xKeQcUxWrEpXBa" +
"uni2vrLrxuNAMUxD35/euumr/Hzfd+af3iybhfWn9ruv38JBns" +
"Fvs5+LW3PNgL+zn4vaYz6N/I80eN5+dvE+J/Tc385/78d013aJ" +
"fiVd3M8+Oquyd93Ljn53BhHudns5+zv94HH8/qahg+eHzPlYOP" +
"5vZE+2UYi7kYg80ewYRZ1p6tM5mfI7a21cEqfL2sLa4IrrjOQZ" +
"1onZ7SuJ6t5Pze7ybNMeXRutq6GkaZxSpWxVpGxgAhI2N0jvZq" +
"NuZFDMqYXVf1tdsM1i8e203cPau0Sq0S3klWz0fz3yPUfM5+dv" +
"iIh7W+8Xz1K5xl1UP9LlpOl8MYZvEF23qAZTTnix95yEdNzcIx" +
"1sV1YDOPp0tXhCqrxnKzeqiMlVolFt/8vaPO9yHparoaxjCXO7" +
"0qtvUAy2jOFz/ykD86rwwLx4DRdWAzj6dLV4Qqq8Zys3qojJVa" +
"JRrfWmut5d81a5jFKlbFWkbGACEjY3SO9mo25kVMVkDEVQXh6d" +
"K1uQuvm7h7VmmVWiX0fb2Pb673eb7/PCn7Of3/76LZT7uf/a+n" +
"Pz9bV1pXwiizWMWqWMvIGIvAj/XLWlaajXkRkxUQtipYPV1cW3" +
"fhdRN3zyqt0rh/3VVzfjbfn81+8n62Lsx3P8fVr2k//wMt4BHf");
byte[] buffer = new byte[uncompressedBytes];
Inflater inflater = new Inflater();
inflater.setInput(decoded, 0, compressedBytes);
inflater.inflate(buffer);
inflater.end();
value19 = new int[rows][cols];
for (int index = 0; index < uncompressedBytes-1; index += 4)
{
int byte1 = 0x000000FF & (int)buffer[index + 0];
int byte2 = 0x000000FF & (int)buffer[index + 1];
int byte3 = 0x000000FF & (int)buffer[index + 2];
int byte4 = 0x000000FF & (int)buffer[index + 3];
int element = index / 4;
int row = element / cols;
int col = element % cols;
value19[row][col] = byte1 << 24 | byte2 << 16 | byte3 << 8 | byte4;
}
}
catch (Exception e)
{
throw new Error(e);
}
}
protected static int[][] value20 = null;
protected static void value20Init()
{
try
{
final int rows = 58;
final int cols = 84;
final int compressedBytes = 1697;
final int uncompressedBytes = 19489;
byte[] decoded = new byte[compressedBytes];
base64Decode(decoded,
"eNrtWl1rHVUUnVIEUX+C4EMUBPFF+yA2UDKZW+hLwZA3P2LEn6" +
"BI3uJUbiBvoc/+B98L/oP8gUoohDSUUomKL6Kikznds9baZ8+9" +
"uelNSJM5Q845e++11177ZO6d9N4WRf1+/V79ZlHUN4pm1G8Xxf" +
"ffFjONeqHH/1HmebeY26jfmhL/YEa+dzLPhzMyfBz7Zz3PYcip" +
"DvfnXO/P4TyH1/vLNYbzHN4/h9f75RzVzepmmtNqvmTDwxhciD" +
"FGc8CImozMY1AGVVoVrJEurq1dRN0oAxTkPcX9u64Wq8VmXbS1" +
"jSyaDQ9jcCHGGM0BY1dZkHnMdqxKq4I10sW1tYuoG2WAgrynuH" +
"/tavnR8iN/zyZf8mOGT2M+boy8j8ZxzDAxipkMx9oUpQq1tvJr" +
"F5MU5Dn9Pqs+PI/O+u/57U+G85zX8335QfrpuesfnIT3ZKizHt" +
"NVnIXOcqFcSHNazZds7wGW0ZxvfuQhHzWVhWOsi+vAZp5Il1aE" +
"Kq/Gc7N6qMyVeiUeP/z9Odf78055J81pNV+yvQdYRnO++ZGHfN" +
"RUFo6xLq4Dm3kiXVoRqrwaz83qoTJX6pV4/GzP9+3XhufR8O/N" +
"8xvbn+a+rc9fhHHrs6t8nqNbo1tpTqv5ku09wDKa882PPOSjpr" +
"JwjHVxHdjME+nSilDl1XhuVg+VuVKvxOODe/aL4XV76nf114Pz" +
"/KrbfT0D0xvPc7485w5evehnPLx/vsD7ZzWq0pxW8yXbe4BlNO" +
"ebH3nIR01l4Rjr4jqwmSfSpRWhyqvx3KweKnOlXonHv6yfL41/" +
"uoh/f1ZH1VGa09p+MnpkNjyMwYUYYzQHjN0nr4LMY7ZjVVoVrJ" +
"Eurq1dRN0oAxTkPcX9a1ejzdFmc59u2treuZtmew+wjOZ88yMP" +
"+d3r1LFwDBitA5t5Il1aEaq8Gs/N6qEyV+qVKH60O9pt1l1b28" +
"iu2fAwxqP1x2ZjAiO87NMYnajUMUt5Il0W9xpZjXbMDFyff3xm" +
"rjrFbl+7fa0ojue0HkeSZXubgcGFGGM0B4xWWZF5zHasSquCNd" +
"LFtbWLqBtlgIK8p7h/7Wq0M9ppznXH1vakd8z2HmAZzfnmRx7y" +
"u9+kY+EYMFoHNvNEurQiVHk1npvVQ2Wu1CtRfLlWrhXF8ZzW9p" +
"OnNbO9B1hGc775kYf87nM2x8IxYLQObOaJdGlFqPJqPDerh8pc" +
"qVei+Gq/2m+eS/u2tk+qfbPhYQwuxBijOWDsnoSCzGO2Y1VaFa" +
"yRLq6tXUTdKAMU5D3F/WtXw/eb8d+fP/x4yr8/D6qDNKe1PekD" +
"s+FhDC7EGKM5YOx+k4LMY7ZjVVoVrJEurq1dRN0oAxTkPcX9u6" +
"6uV9f9OSdf8mOGz/bI1Dj7c3aOGY8y+Wyb7YrUsopYH2f4dZLO" +
"iKGPteHZqDaadcPWNrJhNjyMwYUYYzQHjF1lQeYx27EqrQrWSB" +
"fX1i6ibpQBCvKe4v61q3KlXGmeSyu2tk+qFbO9B1hGc775kYf8" +
"7rnsWDgGjNaBzTyRLq0IVV6N52b1UJkr9Uo8Pnhf/aZTfP+U35" +
"reL67oKO+Wd9OcVvMl23uAZTTnmx95yEdNZeEY6+I6sJkn0qUV" +
"ocqr8dysHipzpV6J4sv1cr1Z121tI+tmew+wjOZ88yMP+d05OB" +
"aOAaN1YDNPpEsrQpVX47lZPVTmSr0SxZer5WqzrtraRlbN9h5g" +
"Gc355kce8rtzcCwcA0brwGaeSJdWhCqvxnOzeqjMlXolHm9j6Z" +
"nNaQef7nQfj6Vn/fhJVh9DjFBUn/Iob3oXffWRPY1n6bHNaRdF" +
"832vnsezRxR1sipAqfLp9Sfz99VHdsyz/d3w7815ft9BJ39oc9" +
"q538thvO/9/R7OHlHUyaoApcqn15/M31cf2X08s92f44dX4/4c" +
"/3y6+3OrGP92fJ7jX+sb43/TeY7/mNM3kP9lnj/n+P3m71Pif5" +
"+a+a/n6z+z5y7VS3Wa02q+ZHsPsIzmfPMjD/moqSwcY11cBzbz" +
"RLq0IlR5NZ6b1UNlrtQr8fh83HulGMYcx9YvwxkM53lxx9n9/+" +
"T63qX/fOlp+TTNaTVfsuFhDC7EGKM5YERNRuYxKIMqrQrWSBfX" +
"1i6ibpQBCvKe4v5dV3vlXrPu2dpG9syGhzG4EGOM5oCxqyzIPG" +
"Y7VqVVwRrp4traRdSNMkBB3lPcv3Z1vq/3yz+qJ9WTNKfVfMmG" +
"hzG4EGOM5oARNRmZx6AMqrQqWCNdXFu7iLpRBijIe4r7166G79" +
"/n/HnI/0YBELc=");
byte[] buffer = new byte[uncompressedBytes];
Inflater inflater = new Inflater();
inflater.setInput(decoded, 0, compressedBytes);
inflater.inflate(buffer);
inflater.end();
value20 = new int[rows][cols];
for (int index = 0; index < uncompressedBytes-1; index += 4)
{
int byte1 = 0x000000FF & (int)buffer[index + 0];
int byte2 = 0x000000FF & (int)buffer[index + 1];
int byte3 = 0x000000FF & (int)buffer[index + 2];
int byte4 = 0x000000FF & (int)buffer[index + 3];
int element = index / 4;
int row = element / cols;
int col = element % cols;
value20[row][col] = byte1 << 24 | byte2 << 16 | byte3 << 8 | byte4;
}
}
catch (Exception e)
{
throw new Error(e);
}
}
protected static int[][] value21 = null;
protected static void value21Init()
{
try
{
final int rows = 58;
final int cols = 84;
final int compressedBytes = 1484;
final int uncompressedBytes = 19489;
byte[] decoded = new byte[compressedBytes];
base64Decode(decoded,
"eNrtWT1vXEUUfSnyL5AoAIFMaAwForCs3be/I0JJE8kpLMEPYE" +
"1QWMn8AhB9ChO5QkKUERI1okBOGfeIgpYdX1+fc+7cZ++u145j" +
"Zp72zv2ac8+d+L2dtxltjba6brQ1Op27zi3X2YNczub17sc6rO" +
"9OR0ThGHK0DmzGyXhpRbCKbCI2swfLmmlkovn9w/5h1xVpc4mY" +
"5bpL5OBCjHN0DRB9HzSzjrnGrLQqUDNeXFu7yLpRBDCoe8r716" +
"66bvrR9MPpW/P5k+Kdvtt1X33ZLTWm7wz4P608H3RrG9O3L4hv" +
"Lon3XuX5eEmEz+Y7utPvmLT5ZKd33IaHc3Ahxjm6Bohn/5KSWc" +
"dcY1ZaFagZL66tXWTdKAIY1D3l/Yeudvvd+bzr80lk1214OAcX" +
"Ypyja4B4Vlky65hrzEqrAjXjxbW1i6wbRQCDuqe8f+1qcn9yv+" +
"uKLHMZpruNqPtYM8s1+6iG2fGxpq6NoRUjh5ijGVwRjJiNxhmB" +
"GWjlWJHRtOvqOXDs2uz7ro0Vxvb75YJlH82wLEiOqFQtx1+EEe" +
"dma4DqvMAsRtiX4cc4doG7tRp+LdrN+NnikSw3+obxVh2LIK6/" +
"6sonEdzvP7Z79/Jj2fNnG20/r2r09/p7rqnPbEj4NFbHI9JwZV" +
"vDWZzvfpd+ndcB881RYxeRwRDb4Z3j6v1Gv3Fqb5xFTnxmQ8Kn" +
"sToekQYYbngdzuJ897v0q8ZRFq7lqLGLyGCIbcY/ZuQos2ftvl" +
"3nmP10q7s7WCjr+cqno/b70hp/X2r7ue79rMfed+2Zt9YnzC9t" +
"D1Ydk8eTxyZtdp/Z0YNczub17sc6rEdNReEY8+I6sBkn46UVwS" +
"qyidjMHixrppGJ5k8OJ4fz+dDm08ghbEj3IcoxfFw6EhDhZZ/G" +
"aEeljluRZ83L45Ejs+FVisD1+aMyMuH89r555c/P39oeXOLcsd" +
"R56emD/8d56enn13P+bPvZzvOr7OfXP6zvPN++j67v+dn+Pi/+" +
"+9x+ZbLMRZrtHovDBz2zeWXtB2Y2wINZ5HnMOasI5myzNsQQeB" +
"pVRNSLla7773P2x23/+xz9Y7LMRZrtHovDBz2zeWXtB2Y2wINZ" +
"5HnMOasI5myzNsQQeBpVRNSLlbpufMdkmYs02z2zP82PXNczm1" +
"fWfo/kAzyYRZ43vrN3zGixomOpzdoQQ+BpVBFRL1Zq3+/rHqO/" +
"TZa5SLPdY3H4oGc2r6z9wDyfB7PI85hzVhHM2WZtiCHwNKqIqB" +
"crLfd9NPvrZpyXRi9W/T4avVjo/ejf63k/mh218+fNeT+a7t32" +
"Z+fk5eSlSZvdZ3b0IFczYoxxsR41Y6bG6oqxamSlGYquLIaxwZ" +
"lZ1kyz/jm/vt+//f1NeN/85vlV3u8nnjU9P9t+XmY/E6Y/tzPk" +
"ys/PJ5MnJm12n9nRg1zO5vXuxzqsR01F4Rjz4jqwGSfjpRXBKr" +
"KJ2MweLGumkYnm98f9/L2tSJtLxCzXXSIHF2Kco2uA6PugmXXM" +
"NWalVYGa8eLa2kXWjSKAQd1T3r92NT4aVydK85kfEj6Nxbgjsp" +
"6+IR95naEsRvI85qZZylBrK752cR6Des2wz6r3B/3BfF8PfD7Z" +
"6QO34eEcXIhxjq4B4tm/pGTWMdeYlVYFasaLa2sXWTeKAAZ1T3" +
"n/2lX7PaT9f8d1vG9e7ry0vVkuWPaRX/s3LQuSI7Wu62v8i4bn" +
"e262BqjOC8xihH0ZfoxjF7hbq+HXot1Mv2h37aqjv9vfzX3mh4" +
"TPdazUOPtrdI45jiLF1S79GupAGQyhahfM5Px9usjH+xPOAb/W" +
"2ps3Xhf39n101b+HtP1s+3lT9nP8aPzIpM9uFa3oLjkHGS45R9" +
"eoV9EYFzHXkFFX9YyMl9bmLrJu6u6ZZWQamdDz2mL74/35vI/Z" +
"raIV3SXnxAx8ot911xSNcRFzDRmxKlAzXlxbu8i6qbtnlpFp3b" +
"92df33+/jB673fh+qv6fn5H19mQuY=");
byte[] buffer = new byte[uncompressedBytes];
Inflater inflater = new Inflater();
inflater.setInput(decoded, 0, compressedBytes);
inflater.inflate(buffer);
inflater.end();
value21 = new int[rows][cols];
for (int index = 0; index < uncompressedBytes-1; index += 4)
{
int byte1 = 0x000000FF & (int)buffer[index + 0];
int byte2 = 0x000000FF & (int)buffer[index + 1];
int byte3 = 0x000000FF & (int)buffer[index + 2];
int byte4 = 0x000000FF & (int)buffer[index + 3];
int element = index / 4;
int row = element / cols;
int col = element % cols;
value21[row][col] = byte1 << 24 | byte2 << 16 | byte3 << 8 | byte4;
}
}
catch (Exception e)
{
throw new Error(e);
}
}
protected static int[][] value22 = null;
protected static void value22Init()
{
try
{
final int rows = 58;
final int cols = 84;
final int compressedBytes = 1327;
final int uncompressedBytes = 19489;
byte[] decoded = new byte[compressedBytes];
base64Decode(decoded,
"eNrtWj2PG1UUtbQrQIIiPwAJJEBCsraBFChdvOOtIFsAUhqalW" +
"jcbLU/YA3rSOxvoKFdfkt+AFWUIh0SIBqEI/D47fU559472dia" +
"GJN9M8r7uPe8c895Go/HsxkM4nF+NqjHxsf0YDqcvrvo7y5nH6" +
"6/n9MPOuKfhcjHPep+74b8J2vyfRQin67JcK/uZ9/7OX46flra" +
"0rfxMrOxtcDgRI4xugaMVleRMWcjVqVVwZrp4trqInOjDFAQPe" +
"X+1dWg3j/r/bPeP2/Nfjb3muu29G28zGxsLTA4kWOMrgGj1VVk" +
"zNmIVWlVsGa6uLa6yNwoAxRET7l/5+qkOVn0J9YvMyc2R4QxOJ" +
"FjjK4B46qyIGPORqxKq4I108W11UXmRhmgIHrK/TtXk2ay6CfW" +
"LzMTmyPCGJzIMUbXgHFVWZAxZyNWpVXBmuni2uoic6MMUBA95f" +
"6dq9PmdNGfWr/MnNocEcbgRI4xugaMq8qCjDkbsSqtCtZMF9dW" +
"F5kbZYCC6Cn3r67Gi2Px3DS2fvkkNba5jwDLaF5vcazD+tWTmm" +
"PhHDBaZzzmiMcogitClVfjuVk9VEalXonHx+PyoD5FbnqMH48f" +
"l7b0FitzRBjj0frPWrBjrUU5pjlVhjo2U55Ml+W9RlajjpmB6/" +
"M/vzKqRrXw++h5vc42PUZ3RndKW3qLlbmPAMtoXm9xrMN61FQW" +
"zrEuroM582S6tCJUeTWem9VDZVTqlXh8vT7r7/dX/3vz+x83/f" +
"1e3y/9l9fn7JfbcX0+erid90sXX92O/bz4sr6v2433n//X++fF" +
"gxvyn9f75+tw/6zXZ5/Ho8Hst/b6nP06vTt7Xq7P2R/9cM/+CZ" +
"E/+1M++/2G/N8bM/913c/XX3v//P55aUtvsTL3EWAZzestjnVY" +
"j5rKwjnWxXUwZ55Ml1aEKq/Gc7N6qIxKvRKPr9/vfX6/H+0f7Z" +
"e29G28zGxsLTA4kWOMrgGj1VVkzNmIVWlVsGa6uLa6yNwoAxRE" +
"T7l/ddU8aBb39bYtfZspMxtbCwxO5Bija8BolRUZczZiVVoVrJ" +
"kurq0uMjfKAAXRU+7fuTpujhf9sfXLzLHNEWEMTuQYo2vAuKos" +
"yJizEavSqmDNdHFtdZG5UQYoiJ5y/+rqaO9ob3Gd7lm/vHL3bI" +
"4IY3AixxhdA8bVJ0OQMWcjVqVVwZrp4trqInOjDFAQPeX+1VV6" +
"X31mo8sv6vui9Y7DJ4dP8liJo0VMcz5vjDzuqmyYHMVMhmNt3o" +
"FmmFX51cWLFMQ13TGvizJXnaxXL4P1sW6+ja+Cq34wW7pmf375" +
"TIb1sW6+/hW+yqqbHvX9fN3PXTmag+bARhorc7SIaS7mPVN35b" +
"KGUYy3uLV2vsgB681ZvQuvoEtt985x9WbYDK/nw1VmGStztIhp" +
"LuY9U4fCodVhFOMtbq2dkUdV2Chn9S68gi61mX6PaIbTt5Pnzz" +
"c3ej/xznX/xpbfh7+16/eAy6/rfbDu5w7v58O6B73u5zd1D27f" +
"82f9e3H9e3G9Pnu5f35b73kb/948a85KW3qLlTkijMGJHGN0DR" +
"hRk5ExB2VQpVXBmuni2uoic6MMUBA95f7VVX0fsoXP+6Tuwba+" +
"31OG+v8ZXoPv9909RvPStn3bjuYWb0c/vF/iwI7munY0j4x53D" +
"I36WAVOW40/+4Zs/mKxqVzHnmF05+8TlWgjKjnK9XPe7+f97qf" +
"fd8/D/dL2/Zte7hvccsYRsfZnFfGODizAzpYRY5jzVlFKOc5j7" +
"oUgk+zyoh6rtK/ep7kpw==");
byte[] buffer = new byte[uncompressedBytes];
Inflater inflater = new Inflater();
inflater.setInput(decoded, 0, compressedBytes);
inflater.inflate(buffer);
inflater.end();
value22 = new int[rows][cols];
for (int index = 0; index < uncompressedBytes-1; index += 4)
{
int byte1 = 0x000000FF & (int)buffer[index + 0];
int byte2 = 0x000000FF & (int)buffer[index + 1];
int byte3 = 0x000000FF & (int)buffer[index + 2];
int byte4 = 0x000000FF & (int)buffer[index + 3];
int element = index / 4;
int row = element / cols;
int col = element % cols;
value22[row][col] = byte1 << 24 | byte2 << 16 | byte3 << 8 | byte4;
}
}
catch (Exception e)
{
throw new Error(e);
}
}
protected static int[][] value23 = null;
protected static void value23Init()
{
try
{
final int rows = 58;
final int cols = 84;
final int compressedBytes = 1394;
final int uncompressedBytes = 19489;
byte[] decoded = new byte[compressedBytes];
base64Decode(decoded,
"eNrtXD1vXFUQXblCgjoVUpAACQnREApEmuB9m18BCFGkcYUiIk" +
"pYLBx5K/8AGkSBhJYqBRK/Axoqx4jaRZQqBfveZPacM3fe8+76" +
"yVjm3hVz7505c+bMy/vaTcRkMpnsP5t0tp1ba3v3HL9hfvdhne" +
"05s/R7JB/QwSpy3P6z7/5htljRuXTPq6hw/mPUqQqUEfVipXJ8" +
"+9WkjkuM6Z7Zdm6t7d1jcfiwzvacWfrBOayDVeQ41pxVhHLe86" +
"pPIfg0qoyoFyutztXnZtu5tbZ3z+GX5gfW19meM0u/R3qu47UO" +
"VpHj9p8vvma2WNG5dM+rqDBc74UCZUS9WGn+3vzd+eur+YNu99" +
"bw9f74uPTN38yx8w8LzzvjXVXz2xfE39+S723eHf6w8tzZkuGj" +
"ev+8ivH9b/UY7DpmR7Mjsza7z/bRAyyjOd/9yEM+aioLx1gX18" +
"GeeTJdWhGqoprIzeqhslQalSi+edg8nExaa3MbsZ2v3QKDD2KM" +
"0Rww+nFQZBnzFavSqmDNdHFt7SLrRhmgoOwp71+72vZ5lN6Hb+" +
"DzqPPs9Dyqx3Pc45ncU1/chCfDN7f/m7rbnZ+Lx/X8HDo/m2Wz" +
"NGtzd2dd+h4exuCDGGM0B4zrO7cgy5ivWJVWBWumi2trF1k3yg" +
"AFZU95/9pVfZ8ff+z/bLadW2t79jjGZl9ne81kfo7E2lEHq8j1" +
"srayIrjKOkOdqM5MaVlP/dNH00dmffZdu2rXbhkDhFvGaI56lY" +
"15EYMyZtequfaYwfrdE7spu2eVUWlUQr8/WexkerKaTzD7rl21" +
"a7eMiQj8F/2+9pWyMS9ivgIiVgVrpotraxdZN2X3rDIqLfvXru" +
"r7Z32fv87Hc3Y2OzNrc/c+f+Z7eBiDD2KM0Rwwrr8vCLKM+YpV" +
"aVWwZrq4tnaRdaMMUFD2lPevXdXzs17v1/v3+Xo84/E8fDLu7y" +
"H1+9HV/R5S75/1eq/Hsz6P6vPIjuf0wfSBWZ99167atVvGAOGW" +
"MZqjXmVjXsR8BURZ1RGZLq3NXWTdlN2zyqg0KqHv712sudXcis" +
"fZfOaHhU9jZZz9JTvHLKcP5X63/slRqlBra452MaSgzOn3efV6" +
"vY/7PCrH9Ke+jDKSYaOvn2/XsQnj+FU3Gc1es5f7zA8Ln6+RqX" +
"H2N3tDlZ1HmWK2W//0daAK+li1C1YyfJwu8lnNxS8l7ujTy/wJ" +
"HX3yf/52NLs7u2vWZvfZPnqAZTTnux95yEdNZeEY6+I62DNPpk" +
"srQlVUE7lZPVSWSqMSxc9fLY/x8Re+Wvy6xd34tZfZn1/x9+VX" +
"rtX5eW92z6zN7rN99ADLaM53P/KQj5rKwjHWxXWwZ55Ml1aEqq" +
"gmcrN6qCyVRiURn5yfn9VfiXa+Wgav962Y6vXenqX3Z/fN2uw+" +
"20cPsIzmfPcjD/moqSwcY11cB3vmyXRpRaiKaiI3q4fKUmlUov" +
"jmvDlfvTed+9y9SZ37Hh7G4IMYYzQHjOs3NUGWMV+xKq0K1kwX" +
"19Yusm6UAQrKnvL+tavsnF08qffBMUf9+44xxsd/u7VVFi3Xw2" +
"zbRRS1WRWgVPnF9Yf5++ojezOe7hvjX/Xsqtd7PZ439I2+/p5s" +
"+HH+/fxBc2DW5u5N6sD38DAGH8QYozlgXL+pCbKM+YpVaVWwZr" +
"q4tnaRdaMMUFD2lPevXU2fTp8Wv2x3PvPDwqexGHdGXmejjTkm" +
"RzGT41ibolSh1lZ+7WJIQZnT73vZy+n0tMB1PvPDwqexGHdGXq" +
"cKT71OH4qZHMfaFKUKtbbyaxdDCsqcfl/URZFlL+tyE2z09fPt" +
"OjZhHL/qrmPxR31Kj3o8/6zHoL4vXY/3pWwc/17PsjFH/f9dXG" +
"L8C2Iv1SY=");
byte[] buffer = new byte[uncompressedBytes];
Inflater inflater = new Inflater();
inflater.setInput(decoded, 0, compressedBytes);
inflater.inflate(buffer);
inflater.end();
value23 = new int[rows][cols];
for (int index = 0; index < uncompressedBytes-1; index += 4)
{
int byte1 = 0x000000FF & (int)buffer[index + 0];
int byte2 = 0x000000FF & (int)buffer[index + 1];
int byte3 = 0x000000FF & (int)buffer[index + 2];
int byte4 = 0x000000FF & (int)buffer[index + 3];
int element = index / 4;
int row = element / cols;
int col = element % cols;
value23[row][col] = byte1 << 24 | byte2 << 16 | byte3 << 8 | byte4;
}
}
catch (Exception e)
{
throw new Error(e);
}
}
protected static int[][] value24 = null;
protected static void value24Init()
{
try
{
final int rows = 58;
final int cols = 84;
final int compressedBytes = 1473;
final int uncompressedBytes = 19489;
byte[] decoded = new byte[compressedBytes];
base64Decode(decoded,
"eNrtXE1rXVUUvYPGjipkLii0glCcaAfiLO/m/QR/gDhIM5TiD/" +
"AZnsH4F5w4dVTIwLl0lN/QUUDsoPiBUkSL3pOd/dZa++z7kve8" +
"pQXPCdlnf6699uHc3vT1o+sW7y7uLt7ousW9bliLO133+WfdRm" +
"txe8T/QeV5p5tsLd68Iv7ehnhvs3X0zeB5f0OED23vb5kse5Fm" +
"u+ert8yPXNczmytrv0fyBR7MIs/rb33xI6PFjo6lNmuR4eLbyF" +
"MZKCL6xU5dN3tusuxFmu0ei8MHPbO5svYDM1vgwSzyPOacdQRz" +
"tlkbYwg8jSoi+sVOw9numCx7kWa7Z7ifO55ju+uZzZW13yMj92" +
"7Fg1nkef3Oxf0MXFHjWGqzFhmG+1kxUET0i52Gs/3DZNmLNNs9" +
"FocPemZzZe0HZnonVjyYRZ7HnLOOYM42a2MMgadRRUS/2Gk425" +
"smy16k2e45+tT8yHU9s7my9ntk5N6teDCLPK+/efKU0WJHx1Kb" +
"tcgw3M+KgSKiX+zU3u9Tvt9nZ7Mzk7Zf3N0zt+HhHHwhxjlaA8" +
"TVkyOZdcw1ZqVdgZrx4t46RTaNIoBBPVM+v0616f08+fnVuJ+z" +
"R9vez9mj69zP42fb//wZ16bPe1tyqu3Xz+R+Xni2up/tPKc9z3" +
"otv29P7bZrfjQ/Mmm7+8yOHuRyNte7H3WoR09F4Rjz4j6wGSfj" +
"pR3BKrKJ2MweLGumkUnM3+x5P/7k//G8H3+8/fM++85k2Ys0mz" +
"2eY7vrma2VjM8RrVfdGMS8WMPc6o7Aqvusm0R5ZkzrfrFTex+1" +
"93s7z3ae7TzbebbzbOfZPv9s57nZeR6dbn8/+/v9fZO+u1W0or" +
"vkHGS45BytUa+iMS5iriGj7uoZGS/tzVNk09TTM8vINDLB4tr2" +
"+Wf7/LO9j9r7qL2PNn4fPegfmPTdraIV3SXnIMMl52iNehWNcR" +
"FzDRl1V8/IeGlvniKbpp6eWUamkQm9jyx20B8M+wF2t4pWdJec" +
"gwyXnKM16lU0xkXMNWTUXT0j46W9eYpsmnp6ZhmZRiZ0nhZ73D" +
"+O99Z85oeET2Mx7oisZ6vEPCfPYiTPY26apQy1t+LrFOsY1DXj" +
"Puu+f2P/Rswzn/kh4XMdlRpnf43OMcdRpFjt0r8ytswi58cVcV" +
"/HM0MYQx1wDvcPh/3Q94vIodvwcA6+EOMcrQHiqrNk1jHXmJV2" +
"BWrGi3vrFNk0igAG9Uz5/DrVfG++13VF2l4iZrnOHuRyNte7H3" +
"Wo984RhWPI0T6wGSfjpR3BKrKJ2MweLGumkYnmz3Znu11XpO0X" +
"fxay63b0IJezud79qEP96k9iAgrHkKN9YDNOxks7glVkE7GZPV" +
"jWTCOTmN9+/pz253lfez+5NE0X+7L4uvzrRjTrel2Qpcyv7r8e" +
"f6w/qq/C2Tt3aVoWrfVRPuebRzTrel2Qpcyv7r8ef6w/qnOcL7" +
"vlL+V5Xz5d3Fs+t+d9+ds0T+Tyn8rz+3TP+/LXK+J/bY385+X+" +
"9+a1syezJyZtd5/Z8HAOvhDjHK0BInpyZh0DM7DSrkDNeHFvnS" +
"KbRhHAoJ4pn1+nap9/vvjVznPatffDy0d42dNtO0F/3p/nPvND" +
"wqexGHdE1sc6e06exUiex9ziBBphVMXXKdYxqGvGfZEX1slH7R" +
"mdcrXznHZ9fbudwaTneaedwZSr/XuE7df84fyhybLD5zak+xDl" +
"GL5dAr3GZ5/GlBn6uBV51rw8HjkyG65SBO7P3yojE0I9nZ8O+6" +
"ntl5FT2JDuQ5Rj+HbpSECEl30aI37Sx63Is+bl8ciR2XCVInB/" +
"/lYZmXB++/zzMr/9/ZAXeJ7/6f9jed1k2Ys02z0Whw96ZnNl7Q" +
"dm+nuQFQ9mkecx56wjmLPN2hhD4GlUEdEvdmr3sz3vr/J5Dnf1" +
"NZNlL9Js91gcPuiZzZW1H5jpM7biwSzyPOacdQRztlkbYwg8jS" +
"oi+oVO/wL8NPKn");
byte[] buffer = new byte[uncompressedBytes];
Inflater inflater = new Inflater();
inflater.setInput(decoded, 0, compressedBytes);
inflater.inflate(buffer);
inflater.end();
value24 = new int[rows][cols];
for (int index = 0; index < uncompressedBytes-1; index += 4)
{
int byte1 = 0x000000FF & (int)buffer[index + 0];
int byte2 = 0x000000FF & (int)buffer[index + 1];
int byte3 = 0x000000FF & (int)buffer[index + 2];
int byte4 = 0x000000FF & (int)buffer[index + 3];
int element = index / 4;
int row = element / cols;
int col = element % cols;
value24[row][col] = byte1 << 24 | byte2 << 16 | byte3 << 8 | byte4;
}
}
catch (Exception e)
{
throw new Error(e);
}
}
protected static int[][] value25 = null;
protected static void value25Init()
{
try
{
final int rows = 58;
final int cols = 84;
final int compressedBytes = 1699;
final int uncompressedBytes = 19489;
byte[] decoded = new byte[compressedBytes];
base64Decode(decoded,
"eNrtWsuKHVUUrWGLfoKQgAqCOFEHIukMbqVmIgiZGkQcJYFMOi" +
"SBDOJtDRJCAslYBH8hH9L9Ff5CHGRgnXt69Vpr793GTi6mJVWh" +
"9tmPddZe+9D3nWFYf7r+ZP3+MKy/GOZr/eEw/HRzONW1/uCE/J" +
"cp8/GwtWt97iX1z07J95FGP/82Zz4/JcNXwzDdn+5329eW7xF8" +
"zRCraN2PPPdxP/pGFq0R430YK0+lyztSVVQTuVU9VWalUUnCv0" +
"izvGi5nqdlzmta12r2c5fIU+lwvOcqFLx7507u7diK9d9cvsfP" +
"4GTc//W6d+7N9F2eP6vnz03mFZ4/x6vj1W6xImpe82EVQwSsYn" +
"yPZ51NeVmDR0TuCkSly3vrFNU0eXpVGZVGJbyOajfH+a+xWayI" +
"xs1fKa1iiIBVjO/xrLMpL2vwiMhdgah0eW+dopomT68qo9KoRM" +
"6z126MN+b1BldEzWs+rGKIgFWM7/Gssykva/CIyF2BqHR5b52i" +
"miZPryqj0qhEzrPXHo+P5/UxV0TNaz6sYiKCd8zDh+dsyssaPC" +
"JiV7JWurS3T1FNk6dXlVFpnj9MtTfuzeseV0TNaz6sYoiAVYzv" +
"8ayzKS9r8IjIXYGodHlvnaKaJk+vKqPSqETOs9euj9fn9TpXRM" +
"1rPqxiiIBVjO/xrLMpL2vwiMhdgah0eW+dopomT68qo9KoRM6z" +
"1x6Nj+b1EVdEzWs+rGIignfMw4fnbMrLGjwiYleyVrq0t09RTZ" +
"OnV5VRaZ7fp1q/m99HPfgB3sNvT/Hu672j3d//x++fd87Sp4jp" +
"wnSh274i1+OYIVbRuh957uN+9nQWraku7cNYeSpd3pGqoprIre" +
"qpMiuNShw/rabVvK6wbiorxDFDrKJ1P/Lcx/3H5xBYtEaM92Gs" +
"PJUu70hVUU3kVvVUmZVGJY6fDqaDeT3AuqkcIGZGMRHtNyyYyM" +
"is5rwmJ2p9EDlPpQv1qFHV+MTKoP31jjuzamCXz+/b/P6zuk57" +
"nm/m+uWbl9S/PitKH343LNc2z/PKcgbbvJbH+2u8/3w2Peu2rc" +
"whpkWOVa3xhiV75tec11wZ+yCKOrMu1KNGVaO7nEH76+02KlF8" +
"8Xj/cXmMvn2P97N7rZ5329Zme4zMg/M9Tyz8KtadOY/Ky3Soih" +
"q3er7/p7LFjuDyWL2ocP1H1OkKnJH9Yqfl/fw2f49bznO75znt" +
"T/vd9nXzSrWPOGaIVbTuR577uP/4lTCwaI0Y78NYeSpd3pGqop" +
"rIreqpMiuNShx/6fKly8PQbF9bpUfwYYnhP9YU43vIiHNwZK7B" +
"U1XelayVLu3tU1TTOAMV5Jnq+X2q5fG+PH+e5fMcb423usWKqH" +
"nNh1UMEbCK8T2edTblZQ0eEbkrEJUu761TVNPk6VVlVBqV8Dqq" +
"XRuvzes1roia13xYxRABqxjf41lnU17W4BGRuwJR6fLeOkU1TZ" +
"5eVUalUYmcZ6/dHe/O612uiJrXfFjFEAGrGN/jWWdTXtbgEZG7" +
"AlHp8t46RTVNnl5VRqVRiZxnrz0dn87rU66Imtd8WMVEBO+Yhw" +
"/P2ZSXNXhExK5krXRpb5+imiZPryqj0jy/T7W8Hm359ejOeKdb" +
"rIia13xYxRABqxjf41lnU17W4BGRuwJR6fLeOkU1TZ5eVUalUY" +
"n8ffbak/HJvD7hiqh5zYdVTETwjnn48JxNeVmDR0TsStZKl/b2" +
"Kapp8vSqMirN8/tUy+N9y5/fd6fdbvu6+SS6izhmiFW07kee+7" +
"j/+HN3YNEaMd6HsfJUurwjVUU1kVvVU2VWGpU4fjqcDuf1EOum" +
"coiYGcVEtN+wYCIjs5rzmpyo9UHkPJUu1KNGVeMTK4P21zvuzK" +
"rZLf3ecX/5jn35vePsXg9/Xc7gNV4nl9f35fu65TzfmvOc39Xv" +
"dNvWZscd5Jv34HzPEzvK/7COse4ci/+JTfaqBoSqqHHjTvu9OG" +
"rlHnB5rF5U6L8XZwXOyH6x0zCs/uq2rc32GJleZ45+FevOnCdn" +
"dVGHqqhxqrnqSOUaq3eSQvJ51RnZz/Pj7fF2t1gRNa/5sIohAl" +
"Yxvsezzqa8rFGZsnvXWnvcofqRidPk6VVlVBqVyN/vEX55/lxe" +
"j5bzXM5zOc9X+r7u4nSx275uvim5iDhmiFW07kee+7j/+JuYwK" +
"I1YrwPY+WpdHlHqopqIreqp8qsNCqJ+OLz++/Lp/DXucZ3um1r" +
"sz1GpteZo1/FujPnyfnPOlRFjVPNVUcq11i9kxSSz6vOyH6x0/" +
"L8udXXo78Borlk1A==");
byte[] buffer = new byte[uncompressedBytes];
Inflater inflater = new Inflater();
inflater.setInput(decoded, 0, compressedBytes);
inflater.inflate(buffer);
inflater.end();
value25 = new int[rows][cols];
for (int index = 0; index < uncompressedBytes-1; index += 4)
{
int byte1 = 0x000000FF & (int)buffer[index + 0];
int byte2 = 0x000000FF & (int)buffer[index + 1];
int byte3 = 0x000000FF & (int)buffer[index + 2];
int byte4 = 0x000000FF & (int)buffer[index + 3];
int element = index / 4;
int row = element / cols;
int col = element % cols;
value25[row][col] = byte1 << 24 | byte2 << 16 | byte3 << 8 | byte4;
}
}
catch (Exception e)
{
throw new Error(e);
}
}
protected static int[][] value26 = null;
protected static void value26Init()
{
try
{
final int rows = 16;
final int cols = 84;
final int compressedBytes = 725;
final int uncompressedBytes = 5377;
byte[] decoded = new byte[compressedBytes];
base64Decode(decoded,
"eNrtVMuKGzEQ1IcEckgCgZBLkkPIVcznrFkfcrHxQuaf7LX/Lp" +
"Lloqq6FYLBxx1Qv6rUXT2MXcr6df2yvitl/VHas34s5c/vctez" +
"fvhH/WeqfC4Pe9b3/8G/3dnvU6p8v7PDr6t9e58PfJ/1uT4PC4" +
"+sRz2GVQ4ZsMrxO171btqXGCIy8lQwZrp8tm4x2yZvryqj0qiE" +
"D/hv3+dDv8+n+jQsPLIe9RhWOWTAKsfveNW7aV9iiMjIU8GY6f" +
"LZusVsm7y9qoxKoxL5Pq/Y8rq8ltJt9+MZ2chpUSOqGA8sOrEj" +
"q1pzjI/PQRZ1Zl3Ao0ZVo7e8g87X4zYqka7H5dj8cfgbcmROix" +
"pRxXhg0YkdWdWaY6LP5iCLOrMu4FGjqtFb3kHn63EblZBfD/XQ" +
"vtMDPbIe9RhWOWTAKsfveNW7aV9iiMjIU8GY6fLZusVsm7y9qo" +
"xKoxL5vQ9sW7fNb+mR9ajHsMohA1Y5fser3k37EkNERp4KxkyX" +
"z9YtZtvk7VVlVBqVyPsc2K7umt/RI+tRj2GVQwascvyOV72b9i" +
"WGiIw8FYyZLp+tW8y2yduryqg0KpH3ObBN3TS/oUfWox7DKocM" +
"WOX4Ha96N+1LDBEZeSoYM10+W7eYbZO3V5VRaVQi7/OKLZfl0v" +
"5HL8Pf/lkvzGlRI6oYDyw6sSOrWnNM/t9tDrKoM+sCHjWqGr3l" +
"HXS+HrdRiXQ9LafmT8PfkBNzWtSIKsYDi07syKrWHBN9NgdZ1J" +
"l1AY8aVY3e8g46X4/bqES6npdz8+fhb8iZOS1qRBXjgUUndmRV" +
"a46JPpuDLOrMuoBHjapGb3kHna/HbVRCfn2pL+13/0KPrEc9hl" +
"UOGbDK8Tte9W7alxgiMvJUMGa6fLZuMdsmb68qo9KoRP4/B7av" +
"++b39Mh61GNY5ZABqxy/41Xvpn2JISIjTwVjpstn6xazbfL2qj" +
"IqjUrkfQ7+X6NcGrs=");
byte[] buffer = new byte[uncompressedBytes];
Inflater inflater = new Inflater();
inflater.setInput(decoded, 0, compressedBytes);
inflater.inflate(buffer);
inflater.end();
value26 = new int[rows][cols];
for (int index = 0; index < uncompressedBytes-1; index += 4)
{
int byte1 = 0x000000FF & (int)buffer[index + 0];
int byte2 = 0x000000FF & (int)buffer[index + 1];
int byte3 = 0x000000FF & (int)buffer[index + 2];
int byte4 = 0x000000FF & (int)buffer[index + 3];
int element = index / 4;
int row = element / cols;
int col = element % cols;
value26[row][col] = byte1 << 24 | byte2 << 16 | byte3 << 8 | byte4;
}
}
catch (Exception e)
{
throw new Error(e);
}
}
protected static int lookupValue(int row, int col)
{
if (row <= 57)
return value[row][col];
else if (row >= 58 && row <= 115)
return value1[row-58][col];
else if (row >= 116 && row <= 173)
return value2[row-116][col];
else if (row >= 174 && row <= 231)
return value3[row-174][col];
else if (row >= 232 && row <= 289)
return value4[row-232][col];
else if (row >= 290 && row <= 347)
return value5[row-290][col];
else if (row >= 348 && row <= 405)
return value6[row-348][col];
else if (row >= 406 && row <= 463)
return value7[row-406][col];
else if (row >= 464 && row <= 521)
return value8[row-464][col];
else if (row >= 522 && row <= 579)
return value9[row-522][col];
else if (row >= 580 && row <= 637)
return value10[row-580][col];
else if (row >= 638 && row <= 695)
return value11[row-638][col];
else if (row >= 696 && row <= 753)
return value12[row-696][col];
else if (row >= 754 && row <= 811)
return value13[row-754][col];
else if (row >= 812 && row <= 869)
return value14[row-812][col];
else if (row >= 870 && row <= 927)
return value15[row-870][col];
else if (row >= 928 && row <= 985)
return value16[row-928][col];
else if (row >= 986 && row <= 1043)
return value17[row-986][col];
else if (row >= 1044 && row <= 1101)
return value18[row-1044][col];
else if (row >= 1102 && row <= 1159)
return value19[row-1102][col];
else if (row >= 1160 && row <= 1217)
return value20[row-1160][col];
else if (row >= 1218 && row <= 1275)
return value21[row-1218][col];
else if (row >= 1276 && row <= 1333)
return value22[row-1276][col];
else if (row >= 1334 && row <= 1391)
return value23[row-1334][col];
else if (row >= 1392 && row <= 1449)
return value24[row-1392][col];
else if (row >= 1450 && row <= 1507)
return value25[row-1450][col];
else if (row >= 1508)
return value26[row-1508][col];
else
throw new IllegalArgumentException("Unexpected location requested in value26 lookup");
}
static
{
sigmapInit();
sigmap1Init();
sigmap2Init();
valueInit();
value1Init();
value2Init();
value3Init();
value4Init();
value5Init();
value6Init();
value7Init();
value8Init();
value9Init();
value10Init();
value11Init();
value12Init();
value13Init();
value14Init();
value15Init();
value16Init();
value17Init();
value18Init();
value19Init();
value20Init();
value21Init();
value22Init();
value23Init();
value24Init();
value25Init();
value26Init();
}
}
/**
* The GOTO table.
* <p>
* The GOTO table maps a state and a nonterminal to a new state.
* It is used when the parser reduces. Suppose, for example, the parser
* is reducing by the production <code>A ::= B C D</code>. Then it
* will pop three symbols from the <code>stateStack</code> and three symbols
* from the <code>valueStack</code>. It will look at the value now on top
* of the state stack (call it <i>n</i>), and look up the entry for
* <i>n</i> and <code>A</code> in the GOTO table to determine what state
* it should transition to.
*/
protected static final class GoToTable
{
/**
* Returns the state the parser should transition to if the given
* state is on top of the <code>stateStack</code> after popping
* symbols corresponding to the right-hand side of the given production.
*
* @return the state to transition to (0 <= result < Parser.NUM_STATES)
*/
protected static int getGoTo(int state, Nonterminal nonterminal)
{
assert 0 <= state && state < Parser.NUM_STATES;
assert nonterminal != null;
return get(state, nonterminal.getIndex());
}
protected static final int[] rowmap = { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 10, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 14, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 17, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 0, 22, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24, 0, 0, 2, 25, 0, 0, 0, 3, 0, 26, 0, 27, 0, 28, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 4, 30, 31, 0, 0, 32, 5, 0, 33, 0, 0, 6, 34, 0, 0, 0, 0, 0, 0, 35, 0, 4, 0, 36, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 6, 0, 0, 0, 38, 39, 7, 0, 40, 8, 0, 0, 0, 41, 42, 0, 43, 0, 0, 44, 0, 9, 0, 45, 0, 10, 46, 11, 0, 47, 0, 0, 0, 48, 49, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 11, 0, 0, 0, 0, 0, 0, 51, 1, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 12, 0, 0, 0, 0, 1, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 2, 0, 14, 15, 0, 0, 0, 52, 0, 2, 0, 0, 16, 17, 0, 3, 0, 3, 3, 0, 0, 1, 18, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 53, 0, 0, 0, 20, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 55, 1, 0, 0, 0, 0, 0, 3, 0, 0, 0, 56, 21, 0, 0, 0, 0, 4, 0, 5, 0, 0, 0, 0, 0, 6, 57, 0, 58, 22, 0, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 0, 59, 0, 23, 0, 9, 0, 0, 1, 10, 0, 0, 0, 60, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 11, 0, 2, 0, 0, 0, 0, 12, 0, 13, 0, 0, 0, 61, 14, 0, 62, 0, 0, 0, 0, 63, 0, 0, 64, 65, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 0, 0, 66, 15, 0, 0, 16, 0, 0, 67, 17, 0, 0, 0, 0, 0, 24, 25, 1, 0, 26, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 28, 1, 0, 0, 0, 0, 3, 4, 0, 0, 0, 29, 30, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 2, 32, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 34, 0, 0, 0, 5, 4, 0, 0, 35, 0, 36, 37, 0, 0, 0, 0, 0, 0, 0, 38, 3, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 39, 0, 16, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 1, 6, 0, 0, 5, 43, 0, 7, 1, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 45, 0, 46, 47, 0, 48, 49, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0, 54, 0, 1, 0, 55, 0, 0, 8, 56, 0, 57, 0, 58, 0, 0, 0, 6, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 59, 60, 9, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 3, 0, 8, 61, 62, 0, 0, 9, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 63, 0, 0, 0, 69, 0, 0, 0, 0, 64, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 67, 17, 18, 0, 19, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 68, 0, 21, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 23, 24, 0, 0, 0, 0, 0, 0, 69, 25, 26, 0, 70, 71, 0, 0, 0, 0, 0, 4, 0, 72, 0, 0, 0, 5, 70, 73, 1, 0, 0, 0, 27, 74, 0, 0, 0, 28, 0, 0, 0, 0, 29, 0, 1, 0, 71, 0, 0, 0, 0, 0, 0, 72, 0, 0, 6, 0, 0, 11, 0, 0, 0, 0, 19, 0, 0, 30, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 11, 0, 75, 76, 12, 0, 73, 77, 0, 0, 1, 0, 0, 0, 2, 0, 3, 0, 0, 5, 0, 0, 0, 0, 0, 78, 0, 13, 79, 80, 81, 82, 0, 83, 74, 84, 1, 85, 0, 75, 86, 87, 76, 88, 14, 2, 15, 0, 0, 0, 89, 90, 0, 0, 0, 0, 91, 0, 92, 0, 93, 94, 0, 95, 96, 9, 0, 0, 2, 0, 97, 0, 0, 98, 1, 0, 99, 3, 0, 0, 0, 0, 0, 100, 2, 0, 0, 0, 0, 0, 0, 101, 102, 0, 0, 0, 0, 0, 0, 0, 0, 103, 104, 0, 3, 4, 0, 0, 0, 105, 1, 106, 0, 0, 0, 107, 108, 0, 0, 10, 0, 1, 0, 0, 0, 4, 109, 5, 0, 1, 110, 111, 0, 0, 4, 112, 0, 6, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 114, 0, 0, 0, 0, 1, 0, 2, 2, 0, 3, 0, 0, 0, 0, 0, 20, 0, 0, 6, 0, 16, 0, 17, 115, 1, 1, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 4, 0, 18, 0, 0, 19, 0, 0, 0, 116, 7, 0, 117, 118, 0, 11, 0, 0, 0, 12, 0, 119, 0, 0, 0, 0, 20, 0, 2, 0, 0, 7, 0, 0, 0, 4, 0, 120, 121, 0, 5, 0, 0, 0, 0, 0, 122, 0, 0, 0, 123, 124, 125, 0, 8, 0, 126, 0, 9, 13, 0, 0, 2, 0, 127, 0, 2, 3, 128, 0, 0, 14, 129, 0, 0, 0, 15, 10, 0, 0, 0, 0, 77, 0, 1, 0, 0, 1, 0, 21, 0, 0, 0, 22, 0, 130, 131, 0, 132, 133, 134, 135, 0, 0, 0, 0, 136, 0, 0, 23, 24, 25, 26, 27, 28, 29, 137, 30, 78, 31, 32, 33, 34, 35, 36, 37, 38, 39, 0, 40, 0, 41, 42, 43, 0, 44, 45, 138, 46, 47, 48, 49, 139, 50, 51, 52, 55, 56, 57, 0, 0, 1, 0, 5, 58, 1, 0, 2, 0, 6, 0, 0, 0, 0, 0, 0, 140, 141, 142, 0, 143, 0, 59, 4, 79, 0, 144, 7, 0, 0, 145, 146, 0, 0, 11, 60, 147, 148, 149, 150, 80, 151, 0, 152, 153, 154, 155, 156, 157, 158, 61, 159, 0, 160, 161, 162, 163, 0, 0, 7, 0, 0, 0, 0, 62, 0, 0, 0, 0, 164, 0, 165, 0, 0, 0, 0, 1, 0, 2, 166, 167, 0, 0, 168, 0, 169, 12, 0, 0, 0, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, 172, 0, 173, 174, 0, 8, 12, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 16, 0, 0, 17, 0, 18, 0, 0, 0, 0, 0, 0, 0, 175, 176, 2, 0, 1, 0, 1, 0, 3, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 82, 0, 13, 0, 0, 0, 177, 2, 0, 3, 0, 0, 0, 14, 0, 178, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 179, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 180, 181, 19, 0, 0, 0, 0, 0, 4, 0, 5, 6, 0, 0, 1, 0, 7, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 14, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 182, 0, 183, 184, 185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 186, 0, 187, 188, 0, 0, 20, 0, 21, 0, 6, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 9, 10, 0, 11, 0, 12, 0, 0, 0, 0, 0, 13, 0, 0, 14, 0, 0, 0, 0, 190, 0, 0, 191, 0, 0, 0, 192, 22, 0, 0, 0, 0, 23, 193, 24, 18, 0, 0, 0, 0, 0, 0, 194, 0, 0, 1, 0, 0, 19, 195, 0, 3, 0, 7, 15, 0, 1, 0, 0, 0, 1, 0, 196, 25, 0, 63, 0, 0, 197, 0, 198, 0, 199, 0, 200, 20, 0, 0, 201, 0, 0, 21, 0, 0, 0, 83, 0, 26, 0, 202, 0, 0, 0, 0, 0, 203, 22, 0, 0, 0, 0, 18, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 5, 0, 6, 0, 7, 3, 0, 0, 0, 0, 0, 0, 1, 205, 206, 0, 0, 0, 0, 0, 0, 207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 208, 0, 0, 0, 209, 64, 0, 210, 0, 2, 3, 0, 3, 0, 0, 65, 86, 0, 0, 24, 0, 0, 0, 27, 211, 0, 212, 25, 28, 0, 213, 214, 0, 26, 215, 0, 0, 216, 217, 218, 219, 29, 220, 27, 221, 222, 223, 28, 224, 0, 225, 226, 6, 227, 228, 30, 0, 229, 230, 0, 0, 0, 0, 0, 66, 0, 2, 231, 0, 0, 0, 232, 0, 233, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 234, 31, 0, 0, 0, 0, 18, 19, 20, 21, 0, 22, 235, 0, 23, 24, 30, 25, 26, 0, 27, 0, 28, 29, 30, 31, 32, 0, 67, 68, 0, 0, 0, 236, 4, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 237, 238, 1, 0, 1, 32, 0, 0, 0, 0, 4, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 239, 69, 0, 0, 240, 0, 0, 241, 242, 0, 0, 0, 0, 33, 34, 0, 0, 3, 0, 0, 243, 0, 244, 0, 87, 245, 0, 246, 0, 0, 35, 0, 0, 0, 247, 0, 248, 36, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 32, 33, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 4, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 38, 0, 0, 0, 0, 0, 20, 0, 249, 0, 250, 0, 0, 21, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 7, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 251, 37, 252, 253, 38, 254, 0, 255, 39, 256, 0, 41, 0, 257, 0, 40, 258, 41, 0, 259, 0, 260, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 261, 262, 0, 0, 263, 0, 8, 0, 0, 43, 0, 264, 265, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 0, 23, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 266, 0, 267, 268, 269, 270, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 271, 0, 0, 272, 44, 10, 0, 0, 12, 0, 13, 5, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 273, 0, 0, 0, 274, 0, 0, 0, 0, 43, 45, 0, 0, 275, 276, 277, 0, 46, 278, 0, 279, 47, 48, 0, 0, 8, 280, 0, 2, 281, 282, 0, 0, 0, 0, 8, 49, 283, 284, 50, 285, 0, 0, 51, 0, 3, 286, 287, 0, 288, 0, 0, 0, 0, 0, 0, 0, 52, 0, 289, 290, 0, 0, 53, 0, 0, 291, 0, 0, 0, 292, 0, 0, 293, 1, 0, 0, 0, 5, 2, 0, 294, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 295, 45, 0, 0, 0, 0, 0, 71, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 296, 0, 0, 0, 0, 2, 0, 297, 14, 3, 0, 0, 0, 0, 0, 11, 0, 0, 1, 0, 0, 2, 0, 298, 46, 0, 0, 0, 299, 0, 0, 0, 0, 0, 300, 0, 0, 0, 0, 0, 0, 55, 0, 0, 56, 0, 301, 0, 0, 0, 0, 0, 0, 57, 0, 0, 36, 0, 0, 0, 37, 5, 302, 6, 303, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 2, 0, 304, 305, 3, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 306, 0, 307, 0, 308, 0, 0, 309, 0, 0, 0, 310, 0, 0, 58, 311, 0, 0, 0, 0, 0, 312, 0, 0, 7, 313, 0, 0, 0, 314, 315, 0, 47, 316, 0, 0, 0, 59, 88, 0, 0, 0, 317, 318, 60, 0, 61, 0, 2, 26, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 89, 0, 0, 0, 2, 48, 62, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 319, 0, 49, 320, 50, 0, 72, 0, 51, 0, 0, 0, 0, 321, 322, 64, 0, 0, 323, 65, 66, 0, 52, 0, 324, 67, 325, 0, 68, 53, 326, 327, 69, 70, 0, 54, 0, 328, 329, 0, 55, 71, 330, 0, 56, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 10, 331, 0, 9, 332, 0, 0, 333, 334, 335, 73, 0, 0, 0, 336, 0, 0, 0, 337, 338, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 58, 59, 339, 74, 0, 0, 0, 0, 75, 0, 0, 38, 0, 0, 0, 0, 0, 340, 60, 341, 61, 0, 0, 6, 0, 1, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 342, 343, 0, 344, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 345, 0, 0, 0, 0, 0, 346, 0, 62, 347, 63, 0, 64, 348, 349, 0, 0, 65, 350, 0, 66, 0, 0, 76, 0, 0, 351, 352, 0, 0, 77, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 353, 354, 90, 0, 355, 0, 0, 0, 356, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 67, 0, 79, 0, 357, 0, 80, 68, 358, 0, 359, 360, 361, 81, 82, 0, 362, 69, 83, 363, 364, 365, 366, 0, 84, 0, 0, 0, 0, 367, 0, 0, 0, 0, 3, 0, 7, 0, 0, 33, 1, 8, 0, 0, 0, 0, 0, 0, 0, 70, 368, 0, 71, 0, 0, 0, 85, 0, 4, 5, 0, 0, 6, 0, 0, 3, 0, 0, 0, 369, 0, 370, 86, 371, 0, 0, 0, 0, 0, 72, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 5, 0, 372, 1, 0, 0, 0, 6, 0, 0, 0, 0, 0, 87, 74, 75, 373, 76, 0, 88, 89, 77, 0, 78, 374, 0, 375, 376, 0, 0, 377, 378, 0, 0, 0, 7, 0, 91, 90, 0, 0, 379, 0, 380, 0, 381, 382, 383, 0, 91, 384, 385, 386, 387, 92, 93, 0, 0, 0, 388, 0, 389, 390, 391, 0, 94, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 0, 80, 392, 0, 0, 0, 0, 0, 7, 0, 16, 0, 0, 0, 0, 393, 0, 394, 0, 0, 96, 0, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 97, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 395, 396, 0, 0, 397, 398, 0, 399, 0, 0, 0, 0, 98, 99, 0, 0, 0, 92, 93, 0, 100, 0, 101, 102, 400, 0, 103, 104, 0, 0, 0, 0, 81, 0, 0, 105, 0, 0, 0, 0, 82, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 401, 0, 402, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 403, 0, 0, 0, 0, 0, 0, 0, 0, 404, 106, 0, 83, 107, 108, 0, 84, 405, 406, 0, 0, 0, 407, 0, 408, 0, 109, 0, 0, 85, 0, 409, 0, 0, 86, 0, 410, 0, 0, 0, 0, 0, 0, 0, 0, 87, 8, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 411, 0, 0, 0, 412, 0, 88, 413, 0, 414, 0, 89, 0, 110, 111, 112, 113, 0, 415, 0, 114, 416, 417, 0, 115, 418, 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 116, 117, 118, 0, 419, 0, 420, 0, 0, 119, 421, 0, 120, 121, 422, 0, 122, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 123, 124, 0, 125, 0, 0, 126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
protected static final int[] columnmap = { 0, 1, 2, 0, 3, 0, 4, 5, 2, 6, 3, 2, 0, 3, 3, 7, 8, 1, 9, 1, 2, 0, 4, 10, 1, 6, 9, 6, 1, 0, 7, 9, 11, 5, 12, 1, 13, 3, 1, 1, 3, 7, 0, 14, 15, 16, 12, 9, 17, 18, 3, 2, 16, 19, 3, 6, 16, 20, 4, 9, 7, 21, 22, 23, 24, 1, 0, 25, 26, 2, 27, 28, 1, 29, 30, 0, 3, 31, 16, 2, 32, 0, 17, 33, 34, 12, 1, 0, 8, 35, 36, 16, 1, 37, 38, 4, 1, 39, 1, 5, 6, 40, 41, 6, 42, 43, 13, 44, 45, 2, 46, 1, 47, 0, 1, 48, 49, 3, 3, 50, 9, 51, 52, 53, 54, 1, 1, 3, 1, 55, 56, 7, 4, 5, 1, 57, 0, 58, 59, 10, 8, 60, 61, 62, 63, 2, 18, 15, 64, 65, 66, 17, 67, 20, 68, 2, 69, 4, 70, 0, 71, 72, 73, 0, 0, 1, 20, 74, 2, 75, 76, 77, 21, 5, 78, 18, 79, 80, 81, 3, 82, 83, 10, 6, 11, 2, 84, 3, 85, 86, 5, 87, 1, 88, 1, 89, 90, 91, 92, 22, 93, 94, 95, 96, 3, 97, 98, 1, 11, 99, 12, 2, 100, 101, 102, 103, 17, 104, 105, 106, 0, 107, 108, 4, 109, 0, 110, 25, 8, 9, 3, 27, 111, 112, 9, 5, 113, 3, 3, 1, 114, 2, 12, 115, 116, 0, 117, 4, 118, 119, 120, 121, 122, 123, 124, 9, 14, 0, 125, 11, 1, 1, 126, 127, 2, 29, 0, 4, 0, 128, 10, 2, 14, 129, 30, 130, 131, 132, 3, 13, 29, 1, 133, 11, 1, 134, 5, 21, 5, 1, 135, 21, 17, 7, 136, 137, 138, 23, 20, 12, 5, 17, 139, 1, 8, 140, 141, 22, 142, 4, 143, 144, 5, 145, 146, 147, 148, 149, 150, 31, 33, 151, 152, 9, 12, 153, 35, 24, 8, 154, 155, 4, 156, 6, 157, 158, 159, 160, 14, 161, 2, 162, 163, 164, 36, 18, 165, 166, 167, 40, 168, 2, 7, 8, 169, 170, 9, 39, 171, 172, 0, 173, 174, 175, 43, 22, 44, 176, 177, 3, 178, 56, 9, 10, 179, 180, 13, 45, 181, 182, 183, 184, 185, 186, 15, 4, 187, 188, 12, 3, 1, 20, 189, 190, 191, 10, 192, 193, 11, 1, 194, 195, 196, 18, 0, 2, 17, 197, 28, 17, 198, 2, 20, 23, 9, 5, 8, 25, 0, 199, 13, 200, 201, 0, 8, 11, 202, 203, 204, 6, 205, 206, 12, 207, 22, 208, 209, 2, 3, 210, 211, 212, 31, 17, 20, 8, 2, 1, 213, 9, 30, 10, 214, 215, 9, 216, 217, 52, 218, 20, 219, 220, 221, 2, 222, 223, 224, 11, 24, 47, 3, 21, 225, 18, 14, 226, 227, 6, 228, 229, 46, 230, 58, 231, 232, 233, 1, 12, 234, 235, 236, 237, 238, 3 };
public static int get(int row, int col)
{
if (isErrorEntry(row, col))
return -1;
else if (columnmap[col] % 2 == 0)
return lookupValue(rowmap[row], columnmap[col]/2) >>> 16;
else
return lookupValue(rowmap[row], columnmap[col]/2) & 0xFFFF;
}
protected static boolean isErrorEntry(int row, int col)
{
final int INT_BITS = 32;
int sigmapRow = row;
int sigmapCol = col / INT_BITS;
int bitNumberFromLeft = col % INT_BITS;
int sigmapMask = 0x1 << (INT_BITS - bitNumberFromLeft - 1);
return (lookupSigmap(sigmapRow, sigmapCol) & sigmapMask) == 0;
}
protected static int[][] sigmap = null;
protected static void sigmapInit()
{
try
{
final int rows = 609;
final int cols = 16;
final int compressedBytes = 1575;
final int uncompressedBytes = 38977;
byte[] decoded = new byte[compressedBytes];
base64Decode(decoded,
"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");
byte[] buffer = new byte[uncompressedBytes];
Inflater inflater = new Inflater();
inflater.setInput(decoded, 0, compressedBytes);
inflater.inflate(buffer);
inflater.end();
sigmap = new int[rows][cols];
for (int index = 0; index < uncompressedBytes-1; index += 4)
{
int byte1 = 0x000000FF & (int)buffer[index + 0];
int byte2 = 0x000000FF & (int)buffer[index + 1];
int byte3 = 0x000000FF & (int)buffer[index + 2];
int byte4 = 0x000000FF & (int)buffer[index + 3];
int element = index / 4;
int row = element / cols;
int col = element % cols;
sigmap[row][col] = byte1 << 24 | byte2 << 16 | byte3 << 8 | byte4;
}
}
catch (Exception e)
{
throw new Error(e);
}
}
protected static int[][] sigmap1 = null;
protected static void sigmap1Init()
{
try
{
final int rows = 609;
final int cols = 16;
final int compressedBytes = 1139;
final int uncompressedBytes = 38977;
byte[] decoded = new byte[compressedBytes];
base64Decode(decoded,
"eNrtXUtyEzEQlYSSEqksRFUWLJUiB+AITVUWWXIEjiIoFiyy4C" +
"gcgSNwJMaJY8/Ykkf/3/RbhHKwRlJ/Xr+WJ2NCPEBt/8EJAoHY" +
"HqbMl7ufgqj9bxRhakYX8PKC/iBE8xsCh4HADyMQjXl0CXX4sQ" +
"dDI6UEW9hcLsutnhufv72YhsDQNqFpLwc9pNzlPevX4NCG/dDd" +
"BYTtskuW1fI8zvIDoo1TUGuKxPUPsP4hEAgHSDvRGcrDgXLq9d" +
"8G/rtz1f/3zfQPPMpTd+RKzKv0wmNseqc0FEPgZ/bT2D/VB6AJ" +
"EBilyftX9UazAvMMgcgqHRH1rSc8TxKCVz7jX+1wfpi/gugaXY" +
"il/hDb/ocp93X930D/dqY/pOP+R/kcg9ktKS7Fk0Oe+o9HXYdA" +
"oIRyoQTkikbAXUjfv/5Tp/oPy2hgzB4aNPUHw8klPyLShLpLVe" +
"bePubiPOazPLiY//N3idXgbq//zO9UKD4/xcKJqAmKJrBXfR7A" +
"yVsSlRwts6Kfn+qdn2H8IurFv7zQP3LX+C90sE8rj8cajhjM/1" +
"39/RDmD8Y/Yrv1ExHC35CMv5uNn3r3jyPiIM+8sQIoFz8K7b9q" +
"/09Tyogpe76TX5zpj5JcE0XhYWe6x+mywPhXSsnNLYd3iknygT" +
"wQ9Tj9c/X8Td/+OeUvlU5/4u2YzvyL/If6Z0D7MbI4Qc1ECMJa" +
"Qa5Wp8xQYBRGWWwtdBeVPRobyhnQY01qmbZr0BisUc1PpwoJ66" +
"+nXRjavwFgTW6CAfmR8iDfAvzvv2OR4xvY/5pReJADKbHcKcl7" +
"Sna6reMJVaIQrczPKs4fpMPgNR7YXN2+N93yq88aT0QaqhK2tF" +
"VGumEy7fSh/J3m8/tY/k0wXniqJ0myOyCy/tSqfyLR/vlxfn46" +
"Py2TlEXsF6+/avs/sf7TBflr5AaE2t7pwn8l6w/W78r+LyMgTP" +
"VzGvnb/fmBsNAP922sP1j/uK8/lq9U1R5QZe9f5vYnJvuTvf2J" +
"WX9WZQ6f+Alcfz7/+61fQMj6W/DT6PVrnj9k7r/9i50mW8QfaS" +
"P+EMX8f4F/LvCv03jEhpVzgvrtxl8kmL/yKCBZbHz3/g/QP35P" +
"sWk7fuqcH/TTv8WkpkucQFvu2thHLypd/zRA/wFp8tdgP+VsP9" +
"6UflPLFxC6f/JyFn+y/y+2+LnOv3/hsQsDyp3/JXMjtgSdQJzG" +
"J3jmaQlaPJm6zeAa9/lpjRfNlGBZ5/9brueTledHOCse2dVqm+" +
"qUoNQmV+e39i/ilf/5v6P+/HlzfPD6005/B/aBLPVZQN6ziLPa" +
"vfXHkuFj2epyGKvu/T7En+h8/a6gHveP6hMhpcFgq/vlWw2lQ+" +
"2u+jkf5/qMjPr+zzLiYuBmqYH9t//940O2s7mEmthkigxTi4qr" +
"9ajPX7I9f6cT+yFa6Dmr7jzb309dhOH+ZR08f7/83cPzZ+Pn6V" +
"H/io7yLx4p5bAeLP5J9vjPff/zEP0G6u/C0kDOYq309z/1q8ga" +
"aF/1WjcB40Tpf0vOoEo=");
byte[] buffer = new byte[uncompressedBytes];
Inflater inflater = new Inflater();
inflater.setInput(decoded, 0, compressedBytes);
inflater.inflate(buffer);
inflater.end();
sigmap1 = new int[rows][cols];
for (int index = 0; index < uncompressedBytes-1; index += 4)
{
int byte1 = 0x000000FF & (int)buffer[index + 0];
int byte2 = 0x000000FF & (int)buffer[index + 1];
int byte3 = 0x000000FF & (int)buffer[index + 2];
int byte4 = 0x000000FF & (int)buffer[index + 3];
int element = index / 4;
int row = element / cols;
int col = element % cols;
sigmap1[row][col] = byte1 << 24 | byte2 << 16 | byte3 << 8 | byte4;
}
}
catch (Exception e)
{
throw new Error(e);
}
}
protected static int[][] sigmap2 = null;
protected static void sigmap2Init()
{
try
{
final int rows = 609;
final int cols = 16;
final int compressedBytes = 972;
final int uncompressedBytes = 38977;
byte[] decoded = new byte[compressedBytes];
base64Decode(decoded,
"eNrtXUtu2zAQpQiiIIqgUIEegAF6gB5hsssyR+hR2KKLLnuUHq" +
"VHquXYspSQtix+hiO9F8CIFY2H5PzeSLSi1Bx+fBnQqTBIZYRV" +
"yoT/om8LHyT74fVZudMRp7SbjJ6Ob7qfh1mZj5OBkxklOMc/zi" +
"L2GVGdZ0k6zt/O50/DGcf5vxyP/xjm/+s8/4N9aTb/u/UD7+xX" +
"Ht0q38o2/NdQC8U/5HnlIx/Qxc40me1/06sM/A/yBf2fOf/tPf" +
"8Knv+ZP9oU/rjv+NOzD+jn9ce/Lul7PYT8tZn4LQBdUZebv6mw" +
"OCkqPPOwfNGV6dBMyu5/+yu2NBXk1Rr51FSVWP8a468++6gMr/" +
"+5NcOwk6tsguJvKfpR8s8b/vslzn9pxn8fhayOKx4/iddfxMun" +
"xn8R/cnxU2P9svSfvPbPUP+4r1/u1/8azh8sQP+RtcLaa42mx8" +
"JV4scr9TtYJiEaXLP6u6nl0/YPRPnLSd78u/CXqfzzIG+biLw4" +
"/+pU8f0jefhfYv8jO3Oy2g8AAEBu/sy1f/Am6a+f/xfUT27+4i" +
"mwZo9X2qPX890wqm/BE7Su3N/S4oNlumsKqayoH+AHLTxPNzdS" +
"l3N6fM1m2+MnRMge+7+U+p+t/7ZNlh6bk6j5lmbmRay/jNAK8/" +
"sm6ijWv60Sv9P6ETFYRVpimPW3DyfEf4DGAQ4B/0f9BJB/AEBK" +
"/SG1cv/sVfQg2ijITPpFEAoN+4M/AkD7oGmIpeYtXBrnpYMaBh" +
"JlsBz7zzK4zQT2Psmi+8+m8sf5n75U18r+eQCQ0YT0HLo59QNA" +
"W2jw+vX7+vu96v2rDPfPMjx/uPWLG7Rd/QF42VEufPgrG4H9Nt" +
"zB/OXi+asf8xceOQ4AAJBOUUrUL+76t3f9bXkT1h/+U45FBg5e" +
"nh823ePuhpeuufHbeLyFZqf7zdvvOrB/qiJItP0cDCiu/1dK+v" +
"7/7Wy2dovtp2/Yz1a0Hx958lKnsNudLdz8YEv8p1sw2Hb42Ji/" +
"/Fh/viytP4+c9i9Xf3nmb5dVHzofucP/2+d/276RsVP+bdqxL8" +
"F/99o/PcXy9wc8/7cIcb5JonFVN+5mcDWgNmTvfwNE49xD+cOP" +
"9rZXh7Lc0dextGv1cvj104Oibrjn8/mcIc1v8g9/sX7of4AUtl" +
"arF3LMZWW5fvRye8pGb/pHva5/lL7/AtcP8Pw1QHgTJ5pw8Y5/" +
"vzU/y/0vczn9Agpo6097A6it8TftW4Y1FLcJii1sf9fCC8mz4C" +
"mUwv8omD+eqn1/2Sr2/19JxSxT4PkvfVv5/8b6/weIzqfl");
byte[] buffer = new byte[uncompressedBytes];
Inflater inflater = new Inflater();
inflater.setInput(decoded, 0, compressedBytes);
inflater.inflate(buffer);
inflater.end();
sigmap2 = new int[rows][cols];
for (int index = 0; index < uncompressedBytes-1; index += 4)
{
int byte1 = 0x000000FF & (int)buffer[index + 0];
int byte2 = 0x000000FF & (int)buffer[index + 1];
int byte3 = 0x000000FF & (int)buffer[index + 2];
int byte4 = 0x000000FF & (int)buffer[index + 3];
int element = index / 4;
int row = element / cols;
int col = element % cols;
sigmap2[row][col] = byte1 << 24 | byte2 << 16 | byte3 << 8 | byte4;
}
}
catch (Exception e)
{
throw new Error(e);
}
}
protected static int[][] sigmap3 = null;
protected static void sigmap3Init()
{
try
{
final int rows = 609;
final int cols = 16;
final int compressedBytes = 904;
final int uncompressedBytes = 38977;
byte[] decoded = new byte[compressedBytes];
base64Decode(decoded,
"eNrtnU1y2yAUxxFDMxqvWPgA9AY9wusuyx6JZnKAHq1HaqXYiW" +
"wDBvGN/r9FJvH4BfS+eAiEBGOSMcFmptgHivHLr9Pyg9Y/pjfG" +
"tDgxYldIfErURET23yB/9pX/fievd+rvzMRsurZVnv////LmY7" +
"rKO5iYQcSlxXlrzW3/L3+s13a6lfG1v/KwYlz7fvLCIC8K+L/K" +
"6L/Joihd/AXFj525VvzLBP0PjL+q9vvjbz8KsB+IRVodiso27g" +
"hL0Xn9UKD+oJzXf3T9AwAAAM0xQwUAAMaOXGxjngEAGJTlNotG" +
"skuBhgqG0f8cMP/ZsX4hQ75MMG2N+Wvv8mX0x2/8XxoGFmUIE1" +
"oFx7Z/7JB6DP9B/HdvfxXYA/IdrWPlmyfh+qcMbhxlRReMPCUT" +
"jEz+T0vkr/7/a/389+L/76evwCd6sv/tIi/+fsXPVv51kZ/jwq" +
"eX8RJTeq8sSM9T49TBlIfDoiCm/ki0/9WVW6k9LVgSw9yLFSM4" +
"s2/Xy9QP2W7f/n2QcPxVfV5vR922+DIv0nKr+1+FT36x9V+X6/" +
"9c036Y/0U6mazr/7WfnwKIPwC8mI564RSpqeLyADSUKQ7uv5u7" +
"GrLxrqLWAKASEjHdf3lY9qZP7Pp1fPvu9e/t/Yu1/cumvMf171" +
"bg0x6rY14GUNONqCwEF/yvqQIDAHBfhc62mFHG1Vme6PmnlOdf" +
"XuRl+vPj6Ln+KuWhMvsP8tmv3fGTIvVPDZ1/Vtx+5c+fnAOtLx" +
"O3j/oPHLl+SDB+qWzjV9Yrr77/Tw2eLFST9nuJPL/7BXkd3Lu5" +
"ajhUHHDL70bGOZUQ5yuCges3VablXeOn8fnhyVNeM9f7F6zyQc" +
"8v+7R/oPyhQkYI0FPm2Po/f/D/n23Xv7b4Vfb4lZ/zNxHu+/do" +
"MpQSrhujH99Xy//80YD+9vafJep/mfbNFpTjhjX2H4OMkL3obK" +
"j+Pd74rRje35PN35PUzo3Xf6zH91+WnPuk1l9t+5Xw397yjG5M" +
"//H1X+7+5z5/+Yiku7mUM3+1kX/Grv8q5M/ATd/747/39xeD8c" +
"kZf2nz75jzv8b7Ofz5Vzn8l5ryvzL5f2rYN3ikIPecTsnqHXb6" +
"b3frXwCA1qGQ8bPD5zeAvTa0+4NG/Q0OWv9j/dE/W1Sxn+f7Wx" +
"z7d7Qj9Zn3P2E/ds+lTA/wzrXKs2WBvc/fqvGdxkt/APUHCOcf" +
"1WbKvQ==");
byte[] buffer = new byte[uncompressedBytes];
Inflater inflater = new Inflater();
inflater.setInput(decoded, 0, compressedBytes);
inflater.inflate(buffer);
inflater.end();
sigmap3 = new int[rows][cols];
for (int index = 0; index < uncompressedBytes-1; index += 4)
{
int byte1 = 0x000000FF & (int)buffer[index + 0];
int byte2 = 0x000000FF & (int)buffer[index + 1];
int byte3 = 0x000000FF & (int)buffer[index + 2];
int byte4 = 0x000000FF & (int)buffer[index + 3];
int element = index / 4;
int row = element / cols;
int col = element % cols;
sigmap3[row][col] = byte1 << 24 | byte2 << 16 | byte3 << 8 | byte4;
}
}
catch (Exception e)
{
throw new Error(e);
}
}
protected static int[][] sigmap4 = null;
protected static void sigmap4Init()
{
try
{
final int rows = 609;
final int cols = 16;
final int compressedBytes = 778;
final int uncompressedBytes = 38977;
byte[] decoded = new byte[compressedBytes];
base64Decode(decoded,
"eNrtnVFy4yAMhmUP0/HuEw89AL3BHkFH2CN5d/bgrdM2TbdxjY" +
"2FJPi/h0zaGQUQEpKAOETbJPKNZP8DUVxep2srica3t8Pywpc/" +
"hr9Ec/hJfBXk4F6vvdDMPA2dT+Qgpamwvy/RdPsAaPBiyCO0cJ" +
"SoMmGH8h9+y3/2yP97l58/5Bte00b65AxR044QLUCu2ebmLgxd" +
"NRS29VreG3/itf4OKu3Tme0L9P8xt/9PPduvo4iYMP+WLa9F/W" +
"P/okb8uC8f7dkPb2thylu9uMOKJBUHtdCsbtb9hzfs/2Fj/yFP" +
"XnD+tO2n4oI8rrwHlc0kQQ0Wi5LQ0bAngc/gYsfofWEAAAAnyO" +
"8/VIXF9g/Oqd9V9BEs6B9J6qb9TbRv/2qXvPf8pYb/lo5fQX9D" +
"Lf+zoX/b+9/l8y8Xv+A/FuLXcfv1cX9ebv+gh/Fj/wMAAAAwya" +
"wY7IaS9o3en+rm/lMgvpe/8nIEd1HC78v//6x9f+Pb/Hdoo/6z" +
"z2f7m6gfSu1XW38z32nz6b81/Wspl5a+/0LcA13U/ywmj/hjn2" +
"b0N2Aua+Q/5+ffbLx9N9VpedkzK8uDDUfYvP+NC+KG6r9z6ifU" +
"r8AK2csLt+r/oKrmGzj/by5/zb5/5uH+kn6lqm0/0vZvG8N28m" +
"H/89X+D5zftR2/EoFMNUFVneU/GfK8I37G9aA0iDhm6fMTUX/0" +
"sbABV1T7/oq2/XioX8rbYbPjF4ifu/LvW/lZaPzJsP3XiV8sNn" +
"7t/QsP9of4XSt+JMLvp1RKSs46RR03P25eK7CMEJf1Nd4M4rXD" +
"P+4dJN6MZaJT1Dnuk8eD2FE/nJJ/YP+8vfp9UpbXxm//cx2k0b" +
"tPoen2Jesv4CF+MVQIgPXixtHvp327/vdZJCbCVluj9Y9c/BV6" +
"fkBT538H5E2NX2H+K6//fu9P4P5ss/HvtN8vSA7tN5GD3x+s47" +
"8T1T0/dnX+i/N3k/mLvyjaTvzG/Y/u7BcAALB/AApQOP/H8/d8" +
"56822redf57rMMryAEgR4f/Kw0SpXJtnKwHTnA==");
byte[] buffer = new byte[uncompressedBytes];
Inflater inflater = new Inflater();
inflater.setInput(decoded, 0, compressedBytes);
inflater.inflate(buffer);
inflater.end();
sigmap4 = new int[rows][cols];
for (int index = 0; index < uncompressedBytes-1; index += 4)
{
int byte1 = 0x000000FF & (int)buffer[index + 0];
int byte2 = 0x000000FF & (int)buffer[index + 1];
int byte3 = 0x000000FF & (int)buffer[index + 2];
int byte4 = 0x000000FF & (int)buffer[index + 3];
int element = index / 4;
int row = element / cols;
int col = element % cols;
sigmap4[row][col] = byte1 << 24 | byte2 << 16 | byte3 << 8 | byte4;
}
}
catch (Exception e)
{
throw new Error(e);
}
}
protected static int[][] sigmap5 = null;
protected static void sigmap5Init()
{
try
{
final int rows = 213;
final int cols = 16;
final int compressedBytes = 306;
final int uncompressedBytes = 13633;
byte[] decoded = new byte[compressedBytes];
base64Decode(decoded,
"eNrtmm1qwzAMhl8bU7JRRgo7gAc7iI7QI5n+2nF6xDZZUgjNoG" +
"vrWrLfJ+AmAQVZlq0PCjxGAPph7BCnNxF+unXDIOODOwApvEMu" +
"ghJGiRX5z1vlv1CeDPP/l3wG/U3Z3wKxsLxmZh9K58unrscG0c" +
"n3xTU99ufbjy3EwffYzcYIP5K2x6vP9UvX1mHYWLH/lT6/uP9U" +
"4paP0vT5zfVXvP5+8bNG+ivAEPvoyH+XqUrHZSHktacA9x95kv" +
"/Ul39KUf0LzP/m/NV6/09h/lW6/1ld/6Lm+q/S/UP7Ecvc579M" +
"vNvGbHMtNLtkNuKHqNVfqf1U9e9j4/I11y8t1M/R+PrVXP8Qoh" +
"3Gr7b7f63Hn8j5Z6665bf0nv4Ek8bxba0fk9isIYyftvQH9Sck" +
"Dyftkkx1");
byte[] buffer = new byte[uncompressedBytes];
Inflater inflater = new Inflater();
inflater.setInput(decoded, 0, compressedBytes);
inflater.inflate(buffer);
inflater.end();
sigmap5 = new int[rows][cols];
for (int index = 0; index < uncompressedBytes-1; index += 4)
{
int byte1 = 0x000000FF & (int)buffer[index + 0];
int byte2 = 0x000000FF & (int)buffer[index + 1];
int byte3 = 0x000000FF & (int)buffer[index + 2];
int byte4 = 0x000000FF & (int)buffer[index + 3];
int element = index / 4;
int row = element / cols;
int col = element % cols;
sigmap5[row][col] = byte1 << 24 | byte2 << 16 | byte3 << 8 | byte4;
}
}
catch (Exception e)
{
throw new Error(e);
}
}
protected static int lookupSigmap(int row, int col)
{
if (row <= 608)
return sigmap[row][col];
else if (row >= 609 && row <= 1217)
return sigmap1[row-609][col];
else if (row >= 1218 && row <= 1826)
return sigmap2[row-1218][col];
else if (row >= 1827 && row <= 2435)
return sigmap3[row-1827][col];
else if (row >= 2436 && row <= 3044)
return sigmap4[row-2436][col];
else if (row >= 3045)
return sigmap5[row-3045][col];
else
throw new IllegalArgumentException("Unexpected location requested in sigmap5 lookup");
}
protected static int[][] value = null;
protected static void valueInit()
{
try
{
final int rows = 40;
final int cols = 120;
final int compressedBytes = 4263;
final int uncompressedBytes = 19201;
byte[] decoded = new byte[compressedBytes];
base64Decode(decoded,
"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" +
"51CPDo7VtTc1fwW+lfE3X5+L2TR/dfwqbsPv4vhrty6yxTdCZx" +
"94NU6MvydXn+H1KP5W0u5xQf4Svu+q8veD/IU1Af/5Q8FffEjz" +
"N30+4fsIPqr9K5+/Qf9Z+1f8hOT89eYcbV3+yusL+s/J+Kvtbw" +
"x/P0riX9mdq+9fSf/52qT8jfKvCvNX+1fGFMnftSH/eV1g/ovw" +
"sY9v2H/mFZlehO/jqgeV43tiPL4ifhWFrz8/qhF8WQ6+nyTCt1" +
"tp8DV71Dy+Qf/Kw/dTjW+qC33Pk8cbkDQ5tSuuVur1mpzHNiF8" +
"38ZX6Pxlz796SV6/MV+fY5UwoF+5+pzqWj19zvWv4LPC/hX/1+" +
"/nX5m9k+tzxKhNCK4PVu5fBfznz9X+a/p8Y38C/4YvqL534Sv6" +
"Xg3fwQ/wrYuvbIfwhfUaXzp38X01+XMKfOHLmP4F5kdV3fLjV9" +
"4vtfL6Mj7W2y05vtaD1bkbJyR6vydF2GW1Vmx2Ffqcmi/jz1Kf" +
"8eugPtOTfkbtfJta4Otz/vqRr8+F4htCn73yoP29Pd/+Rsc3Sm" +
"J/f0ykz5+XRp+th+P1mY4q0WecnESfzS5anwPxjZ+UPjeCzbAF" +
"NjmnwK/wi5HhgsWkz/Cb1mec5PLX12fN36LexDcKvOMTsyXekv" +
"rP8fyt3H+GRLbJWlIt/k5OZAO6RPROZUnAf+iDtin4a5c5D4A3" +
"VyH+bgUViTCaifUjThhDT8hGrR/p9f0o/qojM9R+gL9ifqT5W3" +
"j9KAGyo6PwDa8fhfg7O4q/rj7H8Leo9SNrWfT6UTR/xfpRKK+k" +
"dvz6vs9fHJu/fsTA5a/zBNWyv22L/JyAop8OHQO5VEt1/lXNbM" +
"6yRMhNK5a/fv5G8fyt3P6K+EYC/q6oFn/vK9iD6QV+u0AhOdo+" +
"EO9mY8P45lnwGsW3FP5VqfEtNr4Ri++zNYdvIf+KBeKi2r+Sx0" +
"qfRf6VWN/nFWwcO5Mtdn4V6/tSn+cU0md7aGF95u0L+1d/FH02" +
"G5ZIn1+sjj7r+W9hfQ71RPtXKv8Km6UXGQuMWwjxiejVLfJjVQ" +
"tFri/YJ+r1BePW8PqCqi9ifSFq/pu/vlC8Ptewf5VMn1+qDn95" +
"h+rqc3olqPxRRr4ayPUod35EexFrqmDnOUuN23T8KrKuwPqgfV" +
"L8+qCOXxWyv4Xzr4pbH/TnR6q0iPyreHyLy7+yXo1fH4you3M0" +
"voXzr6jEmx95JV7+lbEIMP25m39l3Cf0GVez6SL/Cl+T60c3wQ" +
"IZ37gSX9b5V/hSrD4Pi9ZnfKOQPht3/t/q8+vbSJ9V/hW7INUF" +
"0HhJ4MsuNN6C8sxgNz4JrY3XBb50zQyNr7S/hfEdXgV8u/7x7C" +
"/OLxG+3ybD13iutPiyi1x8ib/vE75y/YhdYrwH5YZcX9H5k6TP" +
"F2dGiPVB4V+xmdCTXar9K5wRge+I4v0roc9/NHyFPpcE3++3LX" +
"9F/hW7gr7l/Mi3v8K/gvZsDpd+FfYI50/iDiI/B3eOsL8yT8tQ" +
"kWbXvwrm50T5V6H+tYv1r+6CAY5ZbfubMD/HYZXZ32T5OdZPNW" +
"d/dX5OpP1V+ZPYTMSf2TUyv66riD+zeeH1waD/rNcHCd9+rv8M" +
"B2InGCT8ZxF/Jv/5FPn/QeE/i5WKFjr+jN389V+Bb5C/suac+L" +
"OPbzD+7NSvfvyZzU0Sf3bqlib+zBtXJ/6cbH3QxZddG4w/s+v0" +
"/Ej+P/RnH1/jB4Gv8VMuvuz6RPie5uG7IQ/fudXFN3J94Zri8M" +
"3R57j1hdYlwrf574VvzvrCEo2vfC4ZK3fnv8YPclSc3PkvuzHR" +
"/HeUN//dkHT+Gxm5KSK/btvMf5NtKafm5r8FY1rePNCd/wr7K/" +
"5/xG7W9jdzv2t/cRe+n8DXtb/i/0eu/TW3c+2v4C99ixwbwd/T" +
"Nb5UX3/f/gp8K7e//v+PirW/Uf8/Ur/0qpL9nVca+5uqu43srx" +
"dTYCp2wRZw0j9YxRay+eK87H6dHyvw9VpU+EoMFL4BrpTbZ+Tj" +
"q1p8unL+8r6F+evUj70zD1/vl15V4a9zQ4n4e0gRqhOZH1ukcu" +
"Xkx7K74Fl2u9nCbM7uiBw3138O5U96GMzIL7NHx7b8dHB+VMWV" +
"JrN4fS5mC+DLSrQ2ds22wZfd6fnPz4L7T91nhP1189uZXLeoSn" +
"67PUbz12yZNL+9Zu1v1fA1G5YG3/SN25a/rn8lEV/mry+wJ9z8" +
"5yrgO9bDt3UOvm/+L+Fbqvzn9M1F1FHF/OfQeU7+s9lRzI/wID" +
"k/2l/Of5eH579ytBvp9QU3/wprx+Vf2WcWyH+e668vVDY/iopf" +
"VW1+REdVmB85q0szP8ocsI3mR+sgIuvJJF+ErQzmxyp8E+df2e" +
"Ni+PiGPz+q+e3352/NbNWYH2md/i90tDzO");
byte[] buffer = new byte[uncompressedBytes];
Inflater inflater = new Inflater();
inflater.setInput(decoded, 0, compressedBytes);
inflater.inflate(buffer);
inflater.end();
value = new int[rows][cols];
for (int index = 0; index < uncompressedBytes-1; index += 4)
{
int byte1 = 0x000000FF & (int)buffer[index + 0];
int byte2 = 0x000000FF & (int)buffer[index + 1];
int byte3 = 0x000000FF & (int)buffer[index + 2];
int byte4 = 0x000000FF & (int)buffer[index + 3];
int element = index / 4;
int row = element / cols;
int col = element % cols;
value[row][col] = byte1 << 24 | byte2 << 16 | byte3 << 8 | byte4;
}
}
catch (Exception e)
{
throw new Error(e);
}
}
protected static int[][] value1 = null;
protected static void value1Init()
{
try
{
final int rows = 40;
final int cols = 120;
final int compressedBytes = 2083;
final int uncompressedBytes = 19201;
byte[] decoded = new byte[compressedBytes];
base64Decode(decoded,
"eNrtW2lwFEUUft3Ts0uyEJMQMHLJFVMICYcGCzkUUBSQW6XUwp" +
"MCFRC5EeSQI2igSlEuAQ8IAlWACv6wyh9S/PCHCoQAGrSkUiWg" +
"nKJV+kOhanzd29M7uzuz2ewuszshXdX9enpnenf6m++912/eGg" +
"YQoOQbyIaAYUA+FGDbGjpiWwQlUOrrZmBhgw1RoD8MkL0hUo7A" +
"Ok70noWJhuGfDVNgmqEKzIO5sAiWYI9hzfGVyPFbodCwFLhDyq" +
"5Ye8Jdlk/6YL0PHsB2qDh+VI4/CU8JuT5snuminY/1dTXWFJoL" +
"2RJaQCvLuR2wFkMXuNMc0a7iSG+s/fxF2A6Cwerc4fCI7I2B8W" +
"r0BXheyMnwIrwCM7A3C+tCWIythtWH1Q9Z8uxmkCtkHrSRI52w" +
"dlazdYNeUGa9G18p9MXx+2Egtg9jHQYjYRSMhcfhMXHFEzABnk" +
"M5CV7CdirWV2EmzEF5FhbwM2h77F/mPfItxbnhouh/Rw7DFfEN" +
"3WhPeg/tT7vBVfNbaTHFVaJtaRfaHWUPrP2oWCPa1z9HyNa0HR" +
"uLsqO6hqN0AedDfGmpUWehve1Gs2qNuArHN5GiqXvMOm1kQPGV" +
"Jnol+V7KE+QIqWZTSRU5Ro4zwTxaJdf4OMdX9GroUWyPqNU/7D" +
"Svf64DXiflLy5J5n6zO7iFb/bt7iLJpqQY36Nq5d+Cy7Sc/EAE" +
"AnCRvUaXkR/hL85fulTiW0FXhPirrlxpg++8GKt+IVl84y3J48" +
"sKGwZ/aXsmUSI1tMzmG5R+tuAaSz8vUPp5RaR+NvmbuH52D19u" +
"fz2N7yn5nK7n/hWuCPpXpNbRv9oQt3+18Eb6V9mz3PKvsmd43L" +
"/62/SvgLDNvk1sK/mNlkE+OUt+5fiyD/Gckkj+Qn87/sK4IH9h" +
"IvJ3keLvFpO/HN8gf4P4xuIvx9eJv/b+sxN/rfhK2RKf6zMRZx" +
"bb8Rf6+dY5zj3G0pf4yiOFrzjS5KjCF/u5UrZxmLuXPX9NfOXR" +
"2KjrFL6Kv+dM/Uwuwn8ELSNcs+pnuJ6gfl6s8P3Iy/o5u07/Gf" +
"7JaP18Xso/gFh+cz65ZOpnk79B/4p9TK6Y/I2603FScv28xOZz" +
"oZ9D/I25al1tsN7hPn/pNo/z97LyFCuBst3c/rLtbCcUsM/ZXr" +
"aD7YIicpXbX/YZnrMfr14rZhpA/sTjbWH2d3XQ/gq/ZKnV/rI9" +
"3P6K3j5uf0P+s5P9FX0H+xsXc6fb8Tdof1G2CBvl9neNnf1F/v" +
"7raH8rQvZXffo2t7+W48VS+sLOaiZlnhqJsL9Ybe2vOkPYX5QR" +
"9tfyHdL+EpD2N4/m0+a0gBbSW2w1RJC/t0UwKsdx/7usDo3jyv" +
"6ItkhaP1/ztv+sVmIEHYbtSDoa2+EpwHd5w8BXm9BA8G3PvhDy" +
"ENZU7H9XKP/qQOr9q4DPLXwDrGHgyy7JOxPamZ2LjE/KnopPar" +
"laXqz4pOOKn3RzXZLHN3Z8g/3uzn1o+UnP0EEXulbrxFu9wIqv" +
"nh+Nb13x5/Ci53oV30BuJvBX63xDVqeKTIPuYfa3Rm8Z5/uFlT" +
"fK/sIbmRWfhGfSrZ8hhi8Lyg/SW5vxSa2fXsDjk0H+QpGeb8Yn" +
"OX9hLccX90cVHF/H/VG5dX+k55r7I3rSW/ujQCuP74/KQ/FJE1" +
"8en4QCbWh4/Dk8Psnjz9y/giFB/wpGmPFJHn9G/2oVx5f7V3pb" +
"7l+Z8WfaBxisC8Un64o/h/yr9Lzf5/ErL8efycYgvnqR3t1iL+" +
"/Gexwey7+qn/1Nl3+VvH4OPJgJ9te/JmHLPUwiOoJUypHxzvEN" +
"fVTcv2iT45ofdG//mwJ8H3IfTfg62v5y/tZrjkMyPrnL3P/qY0" +
"P6GWWBOpNnIFn0sxmf1CZF6efVQf0s9r/blX4eY+rn4P43ZH9j" +
"6WfT/trpZzftb4z8K0/YX22y1M/L9WW6iEloi2Lwd2Xc/D2QCf" +
"Grxvf75vt9ckIvJ9X+r3j+lbY0tftfWpuu/W9sfOkZr8Sv6LmE" +
"7e8She9GUq1vIFWaA0eb4E5KF1aVtTU8UhoKf1m7ZPFF+1vJ82" +
"ObnNbKQ/mx2qpgfiybxWbXLz9WnsHt73a7/Fg2J6n480yHZ/CX" +
"lPtXGcFfNj/RK838OuTmJ1g34L292cRRb+mbMoOXgbmu+c8Zga" +
"8/J1n7y+Mb+qf6XtEvA7S42iZr/gaOhsU3slprebHyryz83WeX" +
"fyU+TWP+lfZ+xJkO+RvO+tnN/A3z/ULi+Vc4SgwjS+5vQcwXjq" +
"/g7378rg/iyc8J96/kuCU/p07mdY3x2dDAO6nA1+pfOeHrzF83" +
"8TX9q8Tzc/j/U9RsZbaWsF7vfy38Paj3sdpf9q7qpzm/Lh7/ub" +
"7+FVubWf4ze0/5V8f0LcjQrXXjmzWrPvja57e7g++Nfv+b+f5z" +
"2NMu41fZxdHxK7leFXpNKH4lpMP7I5RR+e2yF6bxEnt/FPjSrf" +
"gV18/pj1/5c5KNX5ETrJJUs918/6ufYjuRyT8F8yfVMyTzJ8Oe" +
"q23xPDd6H7ZHXbHPW/GNzOBv8vENSyyMZF939LbvNTxVgviSSV" +
"7Xz6nYH+kXBLplKfevzjfa34yw4ZVYd/tQn+tXuX4289uT1888" +
"vz09+rmh5E+mrvgse0nz/YKvhxrx2Pv9Rv5G4fu0aHta8c28/I" +
"3AhUb+1hNXYefoSP9A+/8vyPVS/1/wDxL5zznp+bWByzcXvsnn" +
"PyPCI3Ge0/6XxXw/Y621Wa8KusJmdGWmPrWN+lmthIxP+jen2n" +
"/2jU69/9y08Obibwp2iv8DxCSvTg==");
byte[] buffer = new byte[uncompressedBytes];
Inflater inflater = new Inflater();
inflater.setInput(decoded, 0, compressedBytes);
inflater.inflate(buffer);
inflater.end();
value1 = new int[rows][cols];
for (int index = 0; index < uncompressedBytes-1; index += 4)
{
int byte1 = 0x000000FF & (int)buffer[index + 0];
int byte2 = 0x000000FF & (int)buffer[index + 1];
int byte3 = 0x000000FF & (int)buffer[index + 2];
int byte4 = 0x000000FF & (int)buffer[index + 3];
int element = index / 4;
int row = element / cols;
int col = element % cols;
value1[row][col] = byte1 << 24 | byte2 << 16 | byte3 << 8 | byte4;
}
}
catch (Exception e)
{
throw new Error(e);
}
}
protected static int[][] value2 = null;
protected static void value2Init()
{
try
{
final int rows = 40;
final int cols = 120;
final int compressedBytes = 875;
final int uncompressedBytes = 19201;
byte[] decoded = new byte[compressedBytes];
base64Decode(decoded,
"eNrtm0toE0EYx4fp5ktqVHziC6UqKhVRg1QRX6AnrY1PqoIiHh" +
"RfLfURqYIlSo00YLGKl1oEFdGbqBT14MWzD6jR+kBEqCcRbwpe" +
"1slkM92N2bi73aQ7u9/APDNTOvOb//fNbLKwRWWBxsN3WVqvmg" +
"Q6paA+WvV0oBOdjav6mS+F56i+CLCVzeU3jYd6ZOA7cn2l+EYV" +
"1Tch/Ae2ZfmWWK80bS/SeqHifOPI16Z+t+fsc+Qa2mdf8m1UVU" +
"IZ38ckaoUvWW3kSxoK+5IjpMlQP6XlhhUjk8hkQ32urhwjSwZr" +
"kV7WskbTb7O1WUWeFPxP44v1IjN5WkvmF+dL1pJ1om892SjKO4" +
"r8rYOGWpuWg6F1lJaPFS2z7dEiG1jcxGKjVt/F4j5DjxZynCTY" +
"CjwlZzipBtiZ1S/dLIX/TaB+bep3d84+87SsfCMDLvA9bXGftw" +
"adb+SbsV6d4rT3cHqvNYp9gmc/fcXSl6L+wrZHzLii3yTq16Z+" +
"9+b0O+Irnq/8ej/ifH8w1vs97387ka9tBR9g8/qsze8ji1/Kc/" +
"9VrrjA94ZX/a/S5S2qylXB91CWb/RXufnKZZ/9FPL3Xzjs9fuv" +
"5dPjkO+//BMf3H8t6iENR4d8Yh+o4I5tDbp+8/cjWgMtSjc0QT" +
"Mr1+nst/B0NEaXwTG6QEd7Hp3K0um0li5i+WIWV1KuAbpC6zGN" +
"zlCus3yWGLNcN36hhR21dDhWxZ/22ZJ+TwRhnv7jS2t0ZZ1+Ia" +
"HXL11lX79wEvXrMdZ1RVtjLJrw5TXGF87+y5fnyNej+tXzhTYn" +
"+kW+3uQLyUK+Du3zOeQrxQ7g9tnQwvmyXNhn4bXbzfRrGI98pe" +
"MLKbTPMvOFi6X5ov/1ZoAON87PeL6SeAekrftf0QP9r0T3I3P9" +
"wiXUr/T67UT9+v6MlYbLQZinH+2z9v1RF35/FFT/6/D5VQ/ylc" +
"YH3wzGPH1pn+/A7f/pF+450O8t1K8n+N6HR/CwDPb5AfL1DGX+" +
"fgr0mn4u2e/bka/Otz4fLIcmcHra+ymhcYKnw/dTQmPEiAzyHS" +
"b7/AnewFvIZO0zfIA+6HfJPr9D++yyEt/b7P+Mp9/ZaqZMVjmZ" +
"f74h1+/bUb/2Qpji/Uje5xtKNyNYVer5lRP7jM+vPEK4w2ifw9" +
"X0PNpnvwTyF9l0iXQ=");
byte[] buffer = new byte[uncompressedBytes];
Inflater inflater = new Inflater();
inflater.setInput(decoded, 0, compressedBytes);
inflater.inflate(buffer);
inflater.end();
value2 = new int[rows][cols];
for (int index = 0; index < uncompressedBytes-1; index += 4)
{
int byte1 = 0x000000FF & (int)buffer[index + 0];
int byte2 = 0x000000FF & (int)buffer[index + 1];
int byte3 = 0x000000FF & (int)buffer[index + 2];
int byte4 = 0x000000FF & (int)buffer[index + 3];
int element = index / 4;
int row = element / cols;
int col = element % cols;
value2[row][col] = byte1 << 24 | byte2 << 16 | byte3 << 8 | byte4;
}
}
catch (Exception e)
{
throw new Error(e);
}
}
protected static int[][] value3 = null;
protected static void value3Init()
{
try
{
final int rows = 40;
final int cols = 120;
final int compressedBytes = 507;
final int uncompressedBytes = 19201;
byte[] decoded = new byte[compressedBytes];
base64Decode(decoded,
"eNrtmstKw1AQhmVscnauRLy1lG6kUrRdVBHtEwj1rogv4EbQvR" +
"u3XaqoqFTwhuDd4luoBRGLb+DOR4jhUGJiq6I2es7kH8g5SZoU" +
"+n/5ZzJJKWo5QWmrSlCKeilDCdeeDmq1xzDFqduek/YyQJ3yk/" +
"7yEW0UEY32HHPO6XOd32V9GdRj/UPUv1jMgqKiyR++xjP46hKi" +
"ORi/k6N/fcvP7fCvNldBToThX03rb8Qf/4au4F/W+TkGvqz5Jv" +
"Tjy7Cy+sc3Cb5aXAEpe8l49ki+9hyXY9LVR6Xf+Mo5VvUbwfcv" +
"e9usZRlrnx9jbEAnbe+fh/zJz8Yu8rMS/h2GfwPo64Jn61qMQB" +
"NN8/OUmBDjYkxMUtp8EqNmqTb52XxEflY4a097/QtFWNOegQaa" +
"kpuV/szKcfDDbNnybrsByulSf13rtX1+tYj6q5ybl6S2xbLG94" +
"7aJbqzx1tn++bb19ED1FWG8nIFHXlP/Ru+CIX4roBvwKq05CtW" +
"wVdz566j/gbArcVK/4pt5GfGxHMiDxX07H/N+dCmOSd2vP1vKO" +
"/uf82FH/y/bgv9rwIVd0+qiedXXPnugy9rvgfgy5rvIfiy5nsE" +
"vqz5HoMva74n4Mu7/3Wt1/b97yn6XwX8ewb/suZ7Dr4Bon0h6e" +
"H9ER+il/Ava74F8OUcda8kvflU");
byte[] buffer = new byte[uncompressedBytes];
Inflater inflater = new Inflater();
inflater.setInput(decoded, 0, compressedBytes);
inflater.inflate(buffer);
inflater.end();
value3 = new int[rows][cols];
for (int index = 0; index < uncompressedBytes-1; index += 4)
{
int byte1 = 0x000000FF & (int)buffer[index + 0];
int byte2 = 0x000000FF & (int)buffer[index + 1];
int byte3 = 0x000000FF & (int)buffer[index + 2];
int byte4 = 0x000000FF & (int)buffer[index + 3];
int element = index / 4;
int row = element / cols;
int col = element % cols;
value3[row][col] = byte1 << 24 | byte2 << 16 | byte3 << 8 | byte4;
}
}
catch (Exception e)
{
throw new Error(e);
}
}
protected static int[][] value4 = null;
protected static void value4Init()
{
try
{
final int rows = 40;
final int cols = 120;
final int compressedBytes = 532;
final int uncompressedBytes = 19201;
byte[] decoded = new byte[compressedBytes];
base64Decode(decoded,
"eNrtm8svQ0EUxmV6OzMLsbNohYiNEPFYlIjWYy2e1W6JsCRiJ5" +
"GwqKCsRUjEH+GxwMojNh7x7kL8BZWIvRpV1dZFW70xM/lO0ntv" +
"b89tm+93vzNnJrlsIyKCdEa37ZFvgjhS3hdEEEoE2wRfrfluga" +
"/WfLfBF8F2oIE2LHdN/BuGLmoGKWX7zMf6mJf5iYuGWC+9Tcmo" +
"Iw3EQ6oSzpQTp9gWkwpSI/a14uUmldFPmmIZRaSE3oh9Wfyaxo" +
"Trq9P4X/VgkyO+B/SSXtMrcSz40gvwlTXoXYb5e1G+h3FNXaZK" +
"Z8nX3gO+Mvg34TinfNkR+EpRn4/hX635nqC/0ng2dJpOlr0LSm" +
"H8TRl/z+BfKerzOeZHOs+PLPNvGHy1rs+P4Ks13xfw1Zkvt4Ov" +
"1nzzwVcGvtxhDV8jAL7K3AVB7oQKivq3CeuT+gZ3p5OF9Un0V1" +
"/6Kw/8K0V9bhUubnnnS0O8GfVZ2lrblln+x/ok91rhX9s6+Gpd" +
"n33gK4Xr/aJ/Wvqlv1qGTsqOv4N8gA//7F8+lIV/++FfCfh28N" +
"G351NIt07Pp5BC5aroiJXfbruP/cqYOH4w0StIAiZnZ+APTVwe" +
"5ONQQWu+E1AB86Ok/moS/ZUsfPnUJ1/bU47WN57BV6H6PA0VFJ" +
"3/zhsrwsFzyfXZWPtzfZ6Ff5WZnS1AA3XH36h/F3PtX2MV/v3/" +
"yHsFODhZ2A==");
byte[] buffer = new byte[uncompressedBytes];
Inflater inflater = new Inflater();
inflater.setInput(decoded, 0, compressedBytes);
inflater.inflate(buffer);
inflater.end();
value4 = new int[rows][cols];
for (int index = 0; index < uncompressedBytes-1; index += 4)
{
int byte1 = 0x000000FF & (int)buffer[index + 0];
int byte2 = 0x000000FF & (int)buffer[index + 1];
int byte3 = 0x000000FF & (int)buffer[index + 2];
int byte4 = 0x000000FF & (int)buffer[index + 3];
int element = index / 4;
int row = element / cols;
int col = element % cols;
value4[row][col] = byte1 << 24 | byte2 << 16 | byte3 << 8 | byte4;
}
}
catch (Exception e)
{
throw new Error(e);
}
}
protected static int[][] value5 = null;
protected static void value5Init()
{
try
{
final int rows = 40;
final int cols = 120;
final int compressedBytes = 598;
final int uncompressedBytes = 19201;
byte[] decoded = new byte[compressedBytes];
base64Decode(decoded,
"eNrtm01rE0EYx8sweXYGJNZD6YsYShBKRDQBWyltzx5ai/Ttpt" +
"9AMN8hXgIVT22pRZAWPdgeUs/eBVuFNBrrwU/QWk9SfNtOlrjm" +
"zby0WZiZ/B/IzOzubEie3/yf59lNVjxylfGoWHTrGEuzVI29D1" +
"2YFSYewwdW812GD8w0NqjordG2Nx6uOSPBbrIJdrVkzxAbUO0l" +
"FmPXVR9Xr3F2xTsyVpxxkUXEE9VH/XNGS86/1sTnGgGbNmkz47" +
"qhpfpzQivwk6n6FW/oVRD6pQz0qwHf22JHtdPsjmon/zurv2I7" +
"rPm36jEuir4NLv/64/bm33fQrzGr6xN8YG79zFcVwc/l+uVPz6" +
"pfjvpZJ75fwNfS+vlAHDbKv+LrKfimwFcLvt8Cqq+OwFeP+BwQ" +
"3+/gqwdfcVzNF/kX+m2g3x/gazXfn+Cr0fXRL8RnS+vn38Hol2" +
"+Drw7G15V6/xTHz712k2/wF3+Pyy61J1NxzrMm3/ulP9qCp/U0" +
"GVJqmijTlqdf1ce8Nl5DfUq/Xh+tqU3oVye+DvhanaETzfOVAn" +
"w75fpIStRXVvM9B77G5OAwfGD2/Q15Hvc3EJ9bis/d4KsHX3mh" +
"mi/021H5txc+MFW/9ICv0n3ZV0+/lIR+kX8r8m8EfHXgK6PB8M" +
"X/6yzX72XwNWYVpOUteMHQ2njq3zh0w6P5vkg16/PNs8LTRLv+" +
"9k7LKyQHT1sWn2cQn7Wor+46886cM+sssGHad2Yo3x6+9BF8te" +
"B7j/boA+UK+qV9yoKvrkYtPsVJr0t+X0ji/qSN1nUCGD/1Cw==");
byte[] buffer = new byte[uncompressedBytes];
Inflater inflater = new Inflater();
inflater.setInput(decoded, 0, compressedBytes);
inflater.inflate(buffer);
inflater.end();
value5 = new int[rows][cols];
for (int index = 0; index < uncompressedBytes-1; index += 4)
{
int byte1 = 0x000000FF & (int)buffer[index + 0];
int byte2 = 0x000000FF & (int)buffer[index + 1];
int byte3 = 0x000000FF & (int)buffer[index + 2];
int byte4 = 0x000000FF & (int)buffer[index + 3];
int element = index / 4;
int row = element / cols;
int col = element % cols;
value5[row][col] = byte1 << 24 | byte2 << 16 | byte3 << 8 | byte4;
}
}
catch (Exception e)
{
throw new Error(e);
}
}
protected static int[][] value6 = null;
protected static void value6Init()
{
try
{
final int rows = 40;
final int cols = 120;
final int compressedBytes = 589;
final int uncompressedBytes = 19201;
byte[] decoded = new byte[compressedBytes];
base64Decode(decoded,
"eNrtms9LHDEUxzVmM0naogh6UBTpxVZEXXQVsSr+C2p7rQfbcz" +
"0UavHkDxQ96ElEQfAHdqEVUfHoXyAKKrYsRdSb9tbWgye3cbXL" +
"7ro6ujujmfB9kJkwkwzD+/B9L28mvj7xMWxrvoEwzGATn+ADrx" +
"qdUy0YodhNF9TxM/1G5+mX6P0l1ZYT5szc8dlfo71FePoR9dlr" +
"E58n4CNvGimJ6QeSjvCTOtJIymOulJICdSwiL0mlOlep9oqURe" +
"40XI0oJMWiX52fR+fUx8yvuMN71YKNM3zFkEt8B8FXi9g8ouLv" +
"OOKzufFZjLqhX98i9Gt0/h0DXy3y76r12mq32qw3JMBCViv74Q" +
"xf9h18teC7Fg7z5kv9shBvAl9djbfcbzxb/9/L2r96wgfVP0ji" +
"7WHSn+SqNl8txQbo35x/6aTy0GZ8/qXT6eqXTkG/evDlZ2IrcX" +
"0Vz5d1ga+na+Btm/s78BHqo4T6aBf61Sj/7iH/Qr/34ct7Ho6v" +
"CIGkjX5/Qr8Gr68Obbytef0LS5P/EXxgNN9j+MCr+Vec2K+vWD" +
"CF78+zyL9G17+/wFcXvuKPC3x/g682fE9d4PsXfL1i0vLiW2e+" +
"B7nr+VcKZ/QrOfSrA1/5LJavfOJUfJZPwVc3/cocmY39OSbHZ5" +
"kL/Zpi4jwSn/PYKltxfv3MlsFXi/ybzzv4u9v58s4U/g++BV/P" +
"1Ecv4APP6rcsvj5yKj77jqFfHetfx9ZXleCrB9+L/RuyCvs3DI" +
"3Pfnf0S1fA1+j4XA2+RvOtAd/Ht4x/34fomQ==");
byte[] buffer = new byte[uncompressedBytes];
Inflater inflater = new Inflater();
inflater.setInput(decoded, 0, compressedBytes);
inflater.inflate(buffer);
inflater.end();
value6 = new int[rows][cols];
for (int index = 0; index < uncompressedBytes-1; index += 4)
{
int byte1 = 0x000000FF & (int)buffer[index + 0];
int byte2 = 0x000000FF & (int)buffer[index + 1];
int byte3 = 0x000000FF & (int)buffer[index + 2];
int byte4 = 0x000000FF & (int)buffer[index + 3];
int element = index / 4;
int row = element / cols;
int col = element % cols;
value6[row][col] = byte1 << 24 | byte2 << 16 | byte3 << 8 | byte4;
}
}
catch (Exception e)
{
throw new Error(e);
}
}
protected static int[][] value7 = null;
protected static void value7Init()
{
try
{
final int rows = 40;
final int cols = 120;
final int compressedBytes = 483;
final int uncompressedBytes = 19201;
byte[] decoded = new byte[compressedBytes];
base64Decode(decoded,
"eNrtmr1Lw1AUxeWSPJI7OSuKdBFF/BhUiq2ok+IiDg4uLgqOjk" +
"5OugR0cFBREMS/QJ1dRREUrB8VF1EHZxXpFmOR0taSUvJa3ns9" +
"F9pA+rKcX8657yalNj9X1O+XKOqjQUpSV96ZdmoKvluog3qCY2" +
"/wSVBn9pehvxXN1Mrx4BjLXRPPu77bL1s04KMkFFWPbwJ8tbkL" +
"PE5CBfi3wL8j8K/RfEfBV5fiMWhgeP8dhwrI54J8nkA+a5PPk9" +
"AA/i3y7xT8qwJfnq4OX/sdfJXI3hnft7fC19g70MmUfGZXUj47" +
"8K82Hp+FBtr230VxIo7l919xBP+qkc/WbuDQpUK+1n5UvtYe+B" +
"o9Hy2DrxL5vCJS4k7c/vIVj+JGPEjK53vwlVsiXeH609z+ab2M" +
"2h6tlji7Bs0N2T9vQAP036L+u4l8NprvNvhqcxd4fAAVjOZ7CB" +
"XMyGc8fzaXLzc6w5h/63A+OoMG+vqXz52F8P2zM1+5f505+FeV" +
"fOYL+fMR+KrCN/v+6BLvj+p6PrqCClr79xr+NZpvCnzrOp/TUE" +
"H/5xtS98/f8K8afJ3Mf77R85mfwFeVsmL8HJ7P+P+GzvnsfsjP" +
"Z36pnX/5FSRD+X7J5+t+1pDvG0hGKc5AAz2r4QeiPoDA");
byte[] buffer = new byte[uncompressedBytes];
Inflater inflater = new Inflater();
inflater.setInput(decoded, 0, compressedBytes);
inflater.inflate(buffer);
inflater.end();
value7 = new int[rows][cols];
for (int index = 0; index < uncompressedBytes-1; index += 4)
{
int byte1 = 0x000000FF & (int)buffer[index + 0];
int byte2 = 0x000000FF & (int)buffer[index + 1];
int byte3 = 0x000000FF & (int)buffer[index + 2];
int byte4 = 0x000000FF & (int)buffer[index + 3];
int element = index / 4;
int row = element / cols;
int col = element % cols;
value7[row][col] = byte1 << 24 | byte2 << 16 | byte3 << 8 | byte4;
}
}
catch (Exception e)
{
throw new Error(e);
}
}
protected static int[][] value8 = null;
protected static void value8Init()
{
try
{
final int rows = 40;
final int cols = 120;
final int compressedBytes = 414;
final int uncompressedBytes = 19201;
byte[] decoded = new byte[compressedBytes];
base64Decode(decoded,
"eNrtmj1Lw1AUhuWY5sZcUNBJRSkuoojaodZSP2YnrV+jujqIg4" +
"KLbmJLNxcFBX+W4q9wd/AaRUoTBEUTmnt5DiSBJHd5n7znvQci" +
"RdMuKZtvSkpSkWWZ6bgzKSPReUymZC66zkfHkkx/Pql9vTEq4+" +
"FrdJ1or6l2rJ81P5YsGCqFkmL4lg3f4AW+ueBr4Osy36z6s+6F" +
"r9N8FXyt+QpaOkAF/Bvzbz/+dZrvAHwt6s+DqIB/Y/4dwr9O8x" +
"2Gbz74enfG6FKcr/fwX77ePXwtyt8yKtjpX11RO2pbbaldKfvP" +
"atN/Sqc/+4/4Nxd8F7PJ30Idvk7vr6rw7X7p2m/eKqyjlLX9eY" +
"X8ddi/q/iX/P1T/q7hX4vm3w1UcJpvHRWszN898tfx/fM++2eH" +
"/XuAfyl9iAbMR4n56Ij+bNH++RgV8G/Mvyf412m+p/C1qD+foY" +
"Kl8+/5x/9XQTPt/6+CBv61Zj66QAPyN5G/V/g3F/25kQ1f7xK+" +
"efRv2JcO3zCArzX520ID8jeRv9f412m+N/B1mu8tfLtfPe+qzF" +
"hP");
byte[] buffer = new byte[uncompressedBytes];
Inflater inflater = new Inflater();
inflater.setInput(decoded, 0, compressedBytes);
inflater.inflate(buffer);
inflater.end();
value8 = new int[rows][cols];
for (int index = 0; index < uncompressedBytes-1; index += 4)
{
int byte1 = 0x000000FF & (int)buffer[index + 0];
int byte2 = 0x000000FF & (int)buffer[index + 1];
int byte3 = 0x000000FF & (int)buffer[index + 2];
int byte4 = 0x000000FF & (int)buffer[index + 3];
int element = index / 4;
int row = element / cols;
int col = element % cols;
value8[row][col] = byte1 << 24 | byte2 << 16 | byte3 << 8 | byte4;
}
}
catch (Exception e)
{
throw new Error(e);
}
}
protected static int[][] value9 = null;
protected static void value9Init()
{
try
{
final int rows = 40;
final int cols = 120;
final int compressedBytes = 399;
final int uncompressedBytes = 19201;
byte[] decoded = new byte[compressedBytes];
base64Decode(decoded,
"eNrtmstKw0AUhusxwtTJE1TU4EYU8YK2VdRn0YW+jE/gDcHLwr" +
"Ur30DER/AFulKxIHhjjEVjCaK0NDBz+h1IMpBkc77+8/8nVBLn" +
"on3n7K5zUnVZRUffK1mQuqzLzM89mZRKeh6VKZlLr/PpsSbTrT" +
"urX0+MyFh0kF4nsndW2t6fdf+W1BzVg5LE7mXr6q9PdMv3Ar6h" +
"lD2kB6Hqt23dU/3aY/Srmu8JfP3g28pXp+QrpfnqjHylmu95MX" +
"yHGvAN5lewYy/pguL56IoeqOZ7TQ+Yj3Lz0Q3+q5rvLXw9mn8b" +
"zL+q+d7Bl/25E77mCb7B5OcHeoB+c/nqEf2q5tuErw987bPZNN" +
"t/8zVbXfjvBnxV6/cFvl7o97Wg/HwPX9X6fYOvar7v8NXMNy7B" +
"VzXfAfj6wffz+3MsfH/WyTceLEa//L8unIoNPcB/c/5bRr8e+e" +
"8w/qvUfy3+2wf6raDfPs5X4/RANd+EHpCfc/l5kf3ZI/9dwn/R" +
"b0f6rcFXNd86fD3an5fZnzVW6QPbLI0Z");
byte[] buffer = new byte[uncompressedBytes];
Inflater inflater = new Inflater();
inflater.setInput(decoded, 0, compressedBytes);
inflater.inflate(buffer);
inflater.end();
value9 = new int[rows][cols];
for (int index = 0; index < uncompressedBytes-1; index += 4)
{
int byte1 = 0x000000FF & (int)buffer[index + 0];
int byte2 = 0x000000FF & (int)buffer[index + 1];
int byte3 = 0x000000FF & (int)buffer[index + 2];
int byte4 = 0x000000FF & (int)buffer[index + 3];
int element = index / 4;
int row = element / cols;
int col = element % cols;
value9[row][col] = byte1 << 24 | byte2 << 16 | byte3 << 8 | byte4;
}
}
catch (Exception e)
{
throw new Error(e);
}
}
protected static int[][] value10 = null;
protected static void value10Init()
{
try
{
final int rows = 23;
final int cols = 120;
final int compressedBytes = 240;
final int uncompressedBytes = 11041;
byte[] decoded = new byte[compressedBytes];
base64Decode(decoded,
"eNrt2c8KAVEUBnCdxu4+AZFsRPJngYSVB7CSpZW1PwsLL2CBnS" +
"LKmpRXPG7SNKQoNN2v76uZW3fu3ZxfpzvTSEr9SEVfRMpSk5bk" +
"AzMZidl7QrJStGPJXk3J3Z407ivikjRtO6b9PfXA/oK+jVSV+U" +
"HE+no7VdN99PUO3/p6e/qGH9P7ZFW0w0o56tunL2MGrIG75++f" +
"3q+GPH+hfUf0hfYd0xfad0JfaN8pfaF9Z/R15vtozhqwf5/6d8" +
"H+hfZd0hfad0VfaN81faF9N/SF9t3SF9qX//exfY/0hfY90Rfa" +
"90xfaN8LfcNP5ApjOfwQ");
byte[] buffer = new byte[uncompressedBytes];
Inflater inflater = new Inflater();
inflater.setInput(decoded, 0, compressedBytes);
inflater.inflate(buffer);
inflater.end();
value10 = new int[rows][cols];
for (int index = 0; index < uncompressedBytes-1; index += 4)
{
int byte1 = 0x000000FF & (int)buffer[index + 0];
int byte2 = 0x000000FF & (int)buffer[index + 1];
int byte3 = 0x000000FF & (int)buffer[index + 2];
int byte4 = 0x000000FF & (int)buffer[index + 3];
int element = index / 4;
int row = element / cols;
int col = element % cols;
value10[row][col] = byte1 << 24 | byte2 << 16 | byte3 << 8 | byte4;
}
}
catch (Exception e)
{
throw new Error(e);
}
}
protected static int lookupValue(int row, int col)
{
if (row <= 39)
return value[row][col];
else if (row >= 40 && row <= 79)
return value1[row-40][col];
else if (row >= 80 && row <= 119)
return value2[row-80][col];
else if (row >= 120 && row <= 159)
return value3[row-120][col];
else if (row >= 160 && row <= 199)
return value4[row-160][col];
else if (row >= 200 && row <= 239)
return value5[row-200][col];
else if (row >= 240 && row <= 279)
return value6[row-240][col];
else if (row >= 280 && row <= 319)
return value7[row-280][col];
else if (row >= 320 && row <= 359)
return value8[row-320][col];
else if (row >= 360 && row <= 399)
return value9[row-360][col];
else if (row >= 400)
return value10[row-400][col];
else
throw new IllegalArgumentException("Unexpected location requested in value10 lookup");
}
static
{
sigmapInit();
sigmap1Init();
sigmap2Init();
sigmap3Init();
sigmap4Init();
sigmap5Init();
valueInit();
value1Init();
value2Init();
value3Init();
value4Init();
value5Init();
value6Init();
value7Init();
value8Init();
value9Init();
value10Init();
}
}
/**
* The error recovery table.
* <p>
* See {@link #attemptToRecoverFromSyntaxError()} for a description of the
* error recovery algorithm.
* <p>
* This table takes the state on top of the stack and the current lookahead
* symbol and returns what action should be taken. The result value should
* be interpreted as follows:
* <ul>
* <li> If <code>result & ACTION_MASK == DISCARD_STATE_ACTION</code>,
* pop a symbol from the parser stacks; a &quot;known&quot; sequence
* of symbols has not been found.
* <li> If <code>result & ACTION_MASK == DISCARD_TERMINAL_ACTION</code>,
* a &quot;known&quot; sequence of symbols has been found, and we
* are looking for the error lookahead symbol. Shift the terminal.
* <li> If <code>result & ACTION_MASK == RECOVER_ACTION</code>, we have
* matched the error recovery production
* <code>Production.values[result & VALUE_MASK]</code>, so reduce
* by that production (including the lookahead symbol), and then
* continue with normal parsing.
* </ul>
* If it is not possible to recover from a syntax error, either the state
* stack will be emptied or the end of input will be reached before a
* RECOVER_ACTION is found.
*
* @return a code for the action to take (see above)
*/
protected static final class RecoveryTable
{
protected static int getRecoveryCode(int state, org.eclipse.photran.internal.core.lexer.Token lookahead)
{
assert 0 <= state && state < Parser.NUM_STATES;
assert lookahead != null;
Integer index = Parser.terminalIndices.get(lookahead.getTerminal());
if (index == null)
return 0;
else
return get(state, index);
}
protected static final int[] rowmap = { 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 5, 6, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 23, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 33, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
protected static final int[] columnmap = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246 };
public static int get(int row, int col)
{
if (isErrorEntry(row, col))
return 0;
else if (columnmap[col] % 2 == 0)
return lookupValue(rowmap[row], columnmap[col]/2) >>> 16;
else
return lookupValue(rowmap[row], columnmap[col]/2) & 0xFFFF;
}
protected static boolean isErrorEntry(int row, int col)
{
final int INT_BITS = 32;
int sigmapRow = row;
int sigmapCol = col / INT_BITS;
int bitNumberFromLeft = col % INT_BITS;
int sigmapMask = 0x1 << (INT_BITS - bitNumberFromLeft - 1);
return (lookupSigmap(sigmapRow, sigmapCol) & sigmapMask) == 0;
}
protected static int[][] sigmap = null;
protected static void sigmapInit()
{
try
{
final int rows = 1218;
final int cols = 8;
final int compressedBytes = 129;
final int uncompressedBytes = 38977;
byte[] decoded = new byte[compressedBytes];
base64Decode(decoded,
"eNrt3ckNwCAMBED6L5qlA/PEyDMF5MPiI4qUpLIXTBb3A/l1vw" +
"A+q3+356u/8gUAYL4EsP/ZP3G+AEzrT+Yn+fF+w/k7X+QD3F/1" +
"AfnSP0H+kS8A0F/1VwDA/AEAAOZfAPUTAAAAsL8DAAAAAAAAAA" +
"AAAEDt9f9b2n/ffwCvJDjd");
byte[] buffer = new byte[uncompressedBytes];
Inflater inflater = new Inflater();
inflater.setInput(decoded, 0, compressedBytes);
inflater.inflate(buffer);
inflater.end();
sigmap = new int[rows][cols];
for (int index = 0; index < uncompressedBytes-1; index += 4)
{
int byte1 = 0x000000FF & (int)buffer[index + 0];
int byte2 = 0x000000FF & (int)buffer[index + 1];
int byte3 = 0x000000FF & (int)buffer[index + 2];
int byte4 = 0x000000FF & (int)buffer[index + 3];
int element = index / 4;
int row = element / cols;
int col = element % cols;
sigmap[row][col] = byte1 << 24 | byte2 << 16 | byte3 << 8 | byte4;
}
}
catch (Exception e)
{
throw new Error(e);
}
}
protected static int[][] sigmap1 = null;
protected static void sigmap1Init()
{
try
{
final int rows = 1218;
final int cols = 8;
final int compressedBytes = 71;
final int uncompressedBytes = 38977;
byte[] decoded = new byte[compressedBytes];
base64Decode(decoded,
"eNrt1DENAAAIBLH3LxpwQJhJK+GGSwAAAAAAAAAAAAAAAAAAAA" +
"AAAOCuVyUQgH8DAAAAAAAAAAAAAAAAAAAAAMAfA13BPcE=");
byte[] buffer = new byte[uncompressedBytes];
Inflater inflater = new Inflater();
inflater.setInput(decoded, 0, compressedBytes);
inflater.inflate(buffer);
inflater.end();
sigmap1 = new int[rows][cols];
for (int index = 0; index < uncompressedBytes-1; index += 4)
{
int byte1 = 0x000000FF & (int)buffer[index + 0];
int byte2 = 0x000000FF & (int)buffer[index + 1];
int byte3 = 0x000000FF & (int)buffer[index + 2];
int byte4 = 0x000000FF & (int)buffer[index + 3];
int element = index / 4;
int row = element / cols;
int col = element % cols;
sigmap1[row][col] = byte1 << 24 | byte2 << 16 | byte3 << 8 | byte4;
}
}
catch (Exception e)
{
throw new Error(e);
}
}
protected static int[][] sigmap2 = null;
protected static void sigmap2Init()
{
try
{
final int rows = 822;
final int cols = 8;
final int compressedBytes = 60;
final int uncompressedBytes = 26305;
byte[] decoded = new byte[compressedBytes];
base64Decode(decoded,
"eNrt1LERAAAEADH7D40NFDouWeC7jwAAAACuq1G+7wP+BAAAAA" +
"AAAAAAAAAAAAAAAAAAAADAUgO0MVyh");
byte[] buffer = new byte[uncompressedBytes];
Inflater inflater = new Inflater();
inflater.setInput(decoded, 0, compressedBytes);
inflater.inflate(buffer);
inflater.end();
sigmap2 = new int[rows][cols];
for (int index = 0; index < uncompressedBytes-1; index += 4)
{
int byte1 = 0x000000FF & (int)buffer[index + 0];
int byte2 = 0x000000FF & (int)buffer[index + 1];
int byte3 = 0x000000FF & (int)buffer[index + 2];
int byte4 = 0x000000FF & (int)buffer[index + 3];
int element = index / 4;
int row = element / cols;
int col = element % cols;
sigmap2[row][col] = byte1 << 24 | byte2 << 16 | byte3 << 8 | byte4;
}
}
catch (Exception e)
{
throw new Error(e);
}
}
protected static int lookupSigmap(int row, int col)
{
if (row <= 1217)
return sigmap[row][col];
else if (row >= 1218 && row <= 2435)
return sigmap1[row-1218][col];
else if (row >= 2436)
return sigmap2[row-2436][col];
else
throw new IllegalArgumentException("Unexpected location requested in sigmap2 lookup");
}
protected static int[][] value = null;
protected static void valueInit()
{
try
{
final int rows = 39;
final int cols = 124;
final int compressedBytes = 179;
final int uncompressedBytes = 19345;
byte[] decoded = new byte[compressedBytes];
base64Decode(decoded,
"eNrt2ksOgjAARdHO/P9QBF0Q6+rS3YCJMmzfyZ0SBu8EEhpqqT" +
"9aNrWoj8of1/DmLd7iLd7iLd7iLd7iLd7izfuL97DunsvZrk17" +
"z3aK8t7ZKcr7aKco74Odorwfdory3topynuyk+db3Xrf7BTlfb" +
"GT83P5/hZvNef9slOU995OUd5PO0V5v+0U5X21U5L32vzP1Pjz" +
"fbJTlPfdTs5b1K33aKco78FO3udq07t8AJRXyng=");
byte[] buffer = new byte[uncompressedBytes];
Inflater inflater = new Inflater();
inflater.setInput(decoded, 0, compressedBytes);
inflater.inflate(buffer);
inflater.end();
value = new int[rows][cols];
for (int index = 0; index < uncompressedBytes-1; index += 4)
{
int byte1 = 0x000000FF & (int)buffer[index + 0];
int byte2 = 0x000000FF & (int)buffer[index + 1];
int byte3 = 0x000000FF & (int)buffer[index + 2];
int byte4 = 0x000000FF & (int)buffer[index + 3];
int element = index / 4;
int row = element / cols;
int col = element % cols;
value[row][col] = byte1 << 24 | byte2 << 16 | byte3 << 8 | byte4;
}
}
catch (Exception e)
{
throw new Error(e);
}
}
protected static int[][] value1 = null;
protected static void value1Init()
{
try
{
final int rows = 1;
final int cols = 124;
final int compressedBytes = 22;
final int uncompressedBytes = 497;
byte[] decoded = new byte[compressedBytes];
base64Decode(decoded,
"eNprYGggAN24GxhG4fCAQAAAym17Ug==");
byte[] buffer = new byte[uncompressedBytes];
Inflater inflater = new Inflater();
inflater.setInput(decoded, 0, compressedBytes);
inflater.inflate(buffer);
inflater.end();
value1 = new int[rows][cols];
for (int index = 0; index < uncompressedBytes-1; index += 4)
{
int byte1 = 0x000000FF & (int)buffer[index + 0];
int byte2 = 0x000000FF & (int)buffer[index + 1];
int byte3 = 0x000000FF & (int)buffer[index + 2];
int byte4 = 0x000000FF & (int)buffer[index + 3];
int element = index / 4;
int row = element / cols;
int col = element % cols;
value1[row][col] = byte1 << 24 | byte2 << 16 | byte3 << 8 | byte4;
}
}
catch (Exception e)
{
throw new Error(e);
}
}
protected static int lookupValue(int row, int col)
{
if (row <= 38)
return value[row][col];
else if (row >= 39)
return value1[row-39][col];
else
throw new IllegalArgumentException("Unexpected location requested in value1 lookup");
}
static
{
sigmapInit();
sigmap1Init();
sigmap2Init();
valueInit();
value1Init();
}
}
}