If you want it named VERSION TABLE here you go.
Code:
package org.kasma.server.net;
import org.jboss.netty.channel.ChannelHandlerContext;
import org.jboss.netty.channel.ExceptionEvent;
import org.jboss.netty.channel.MessageEvent;
import org.jboss.netty.channel.SimpleChannelUpstreamHandler;
import org.kasma.server.net.frame.DynamicFrameBuilder;
import org.kasma.server.net.jagfs.OnDemandBody;
import org.kasma.server.net.login.LoginBody;
import org.kasma.server.net.login.LoginDecoder;
import org.kasma.server.net.login.LoginEncoder;
import org.kasma.server.net.opcodes.OpcodeBody;
/**
*
* @author `Discardedx2 <[email protected]>
*
*/
public class ChannelHandler extends SimpleChannelUpstreamHandler {
@Override
public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) {
Object msg = e.getMessage();
if (msg != null) {
DynamicFrameBuilder dfb = new DynamicFrameBuilder();
if (msg instanceof OpcodeBody) {
OpcodeBody body = (OpcodeBody) msg;
if (body.success()) {
if (body instanceof OnDemandBody) {
dfb.put(0);
for (int i = 0; i < 27; i++) {
dfb.putInt(0);
}
for (int i : VERSION_TABLE) {
dfb.put(i);
}
e.getChannel().write(dfb.buildFrame());
} else if (body instanceof LoginBody) {
dfb.put(0);
e.getChannel().write(dfb.buildFrame());
e.getChannel().getPipeline().addBefore("GatewayDecoder", "LoginDecoder", new LoginDecoder());
e.getChannel().getPipeline().addLast("LoginEncoder", new LoginEncoder());
e.getChannel().getPipeline().remove("GatewayDecoder");
}
} else {
body.fail(e);
}
}
}
}
@Override
public void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent e) {
//do nothing
}
private static final int[] VERSION_TABLE = new int[] { -1, 0, -1, 0, 0, 0,
12, 106, 37, -27, -1, -109, -88, 0, 0, 2, -119, -126, -46, 31,
-102, 4, -69, -98, 122, -85, -88, 47, 51, 11, -19, 6, 13, 112,
-100, 57, -31, 39, -8, 20, -80, -102, -21, 44, 37, -94, -103, -109,
108, -109, -126, -4, -58, -64, 8, 122, 58, 111, -120, 78, 2, 83,
57, -114, -99, -95, 47, -33, 106, 79, 79, 42, 115, 40, 66, -107,
-27, 28, -29, 52, 107, -108, 93, 13, -93, 0, 0, 1, 116, 117, -5,
120, -119, 73, -26, -42, -79, -105, -61, -13, -124, 37, 66, -56,
41, 25, -11, -24, 15, -31, -13, -56, 101, -114, 100, -128, 121,
-107, -7, 124, -42, -111, -79, -6, 89, -74, -32, 26, -39, -34, 34,
111, 84, -92, 102, -78, -99, -18, -112, 67, -109, 10, -32, 94, 114,
-113, 109, -44, -96, -114, 20, 74, 40, -57, 92, 127, -97, 0, 0, 2,
-30, -74, -68, -48, 43, 18, 117, -106, 8, -49, -8, -107, -84, 57,
-69, -59, 59, -1, -4, -46, 122, 74, -1, -31, 87, -33, 66, 56, 72,
27, 126, 58, 4, 127, -15, -103, 19, -78, -40, -111, 73, -123, -7,
-27, 101, -111, 30, -126, -4, 51, -34, 86, 23, 20, 29, -35, -81,
-92, 125, 101, -57, 91, -73, -11, -63, 106, 31, -56, -63, 0, 0, 4,
75, -73, 49, 2, 81, -78, -32, 95, -54, -48, 72, -63, -55, -117,
-19, 10, -60, -3, -107, 84, -128, -9, -48, 121, -88, -67, 110, -78,
-112, -54, 58, 85, -37, 97, 52, 14, 73, 100, -22, 75, 107, 42, 106,
35, 38, -22, 81, -62, -21, 102, -53, -78, -1, -102, -112, 32, 101,
-110, -3, 115, 117, 75, 58, 73, 38, -107, 68, 64, 27, 0, 0, 1, 69,
-11, -109, 108, -16, 126, -95, -121, 59, 104, 29, -62, -82, -97,
105, 23, -31, -76, -32, -52, -35, -111, -25, 58, 124, 61, 15, -72,
29, 91, 29, -28, 26, 87, -96, 1, -85, 10, -71, -77, 48, 49, -60,
-64, -88, -60, 12, -60, 36, -5, -128, -64, -37, -55, 72, 31, -117,
0, -95, 19, 103, 99, 96, 90, 24, -85, 32, 103, 69, 0, 0, 4, -125,
-98, 65, 92, -9, 52, -9, -105, 26, -50, -111, -92, -107, 31, 72,
21, -16, 1, 103, 47, -66, -120, 127, -40, 118, 123, 53, 40, -64,
-96, -69, 10, -101, -110, -57, 23, 82, -20, -83, -7, 97, -38, -113,
-75, 115, -73, -91, 26, 87, -64, -102, -51, -75, 3, -89, -36, -21,
11, 74, -24, -125, 67, -119, -57, -16, -67, -126, 76, -73, 0, 0, 0,
107, 20, 122, 120, 45, 74, -70, 12, 112, 101, -71, -109, 30, -121,
-90, 35, -28, 59, -14, -93, -87, -12, 73, 61, -60, 20, 40, -30, 51,
-7, -6, 29, 107, 74, -35, 69, 101, -90, 82, -13, 75, 32, -17, -107,
15, -88, -87, -80, -94, -123, 54, 33, -115, 87, -11, -86, 84, -82,
-43, 76, -52, 96, 45, -41, -1, -64, -80, 83, -113, -39, 0, 0, 6,
109, 126, -4, -91, -99, 62, -21, -73, -7, -73, -116, 46, 117, 47,
52, -71, -71, 27, 13, 115, -128, 51, 101, 124, 54, 74, 79, 125,
-48, -26, 72, -118, -40, 120, -45, -67, 7, -111, -2, -102, 58,
-102, 12, -26, 19, -62, -72, -26, 103, -57, 105, -107, 11, -102,
-123, -109, -103, -86, -115, 81, -114, 5, -115, 47, 34, 58, 35, 80,
-116, 0, 0, 1, -125, -4, -30, 70, -61, 116, -58, -26, 48, -70,
-126, -51, 27, 98, -87, 30, 106, 111, -102, 119, 69, -45, -10, 101,
127, 45, -13, 62, -46, 105, -36, -104, -50, 10, -44, -52, 121, 14,
-84, -28, -94, 89, 71, -30, -13, -119, -14, 115, 0, -95, -97, 105,
-119, 113, -55, -78, 112, -31, -62, -83, -107, -100, 96, 18, 60,
-123, -1, 83, -54, 0, 0, 1, -100, 28, -85, -28, -92, 66, 64, -39,
-71, -93, -6, 122, -85, 103, 15, 27, -71, -25, 97, 61, -118, 125,
58, 94, -55, -108, 109, 55, -43, -89, 26, 0, -122, 46, -82, 86,
-121, -17, -44, -39, 17, -21, 28, -48, -94, -45, -18, 57, 42, 36,
-15, 3, -51, 76, 9, 120, 85, 92, -128, 122, 38, -53, -30, 12, 71,
41, 118, 39, 106, 0, 0, 0, 5, -29, -120, 117, -15, -28, -61, 122,
4, -13, 81, 48, 62, 77, -22, -12, -4, 93, 19, -5, -93, -100, 60,
50, 98, 120, 67, -125, -48, -55, 71, 92, -102, -43, -97, -121, -35,
-13, -119, 88, 40, 113, -99, 40, 119, 1, -52, 70, 127, -85, -90,
-64, 103, 11, 80, -99, -109, -66, 116, -120, -35, 50, -14, -78,
-38, -89, 29, 77, -23, 0, 0, 0, 47, 33, 71, -122, 127, -108, -89,
-1, 80, -33, -107, -76, -85, 61, 43, 10, 78, 102, -120, -36, -13,
-16, 33, 41, -127, -104, 54, 9, 35, 101, -91, 23, -80, -126, 31,
-118, 42, -117, 90, 18, -86, 121, -108, -72, -9, 125, 46, -118,
-54, 35, 96, 103, 92, -19, -102, -45, 38, 0, -74, 15, 46, 26, -91,
-85, -11, -87, 29, -109, -12, 0, 0, 5, 41, 94, -93, 87, -117, 60,
40, 65, 43, 0, -76, 8, 40, 4, 73, -109, 24, 18, -15, 57, -72, 59,
90, 4, 15, -76, 22, -60, -66, 1, 115, 45, 68, -127, -89, -90, -120,
59, -90, -102, -60, 47, -37, 88, 58, -101, 65, -121, -113, -46,
-44, 62, -117, 7, 82, -100, 8, 124, 109, -4, 43, 53, 68, -13, 63,
-21, -2, -91, -21, 0, 0, 0, 50, 73, -28, 79, -6, 5, -51, 30, -45,
-33, -117, 79, 60, 89, 71, 69, -98, -107, -98, -30, 15, 53, 120,
44, -48, -71, 17, -58, 123, -62, 0, 114, -39, 72, -90, -46, 91,
-68, 79, -73, 65, -54, 80, 102, 112, 56, -57, 99, -105, 123, -54,
-103, 19, -71, -126, 40, -10, -8, 96, 77, -118, 10, 31, 55, -77,
105, -100, 60, 117, 0, 0, -1, 0, 58, 9, 81, -61, -2, 94, 12, 7, 5,
37, 84, 55, 49, 122, 67, 18, 9, -75, 91, 41, -16, -109, 64, 43, 67,
114, 117, 53, 112, -62, 44, 34, 1, 36, -108, 6, -118, -70, -1, 94,
3, -39, 12, 21, 81, 64, -68, 119, 64, -109, -7, 124, -117, -59, 8,
15, -50, -103, 33, 73, 70, -33, -112, -115, -24, -68, -68, -56, 86,
0, 0, 0, 15, -29, -100, -46, 77, -53, 52, 39, 5, -50, 91, 13, -73,
-29, 75, 65, -1, -32, -47, 1, -33, 101, -55, -73, 73, -82, 77, 88,
-90, -117, 20, 43, 103, -79, 32, 4, 95, 83, 104, 112, 66, -58, 113,
120, -111, 96, -52, 2, 9, 110, 56, -61, -100, -101, 118, 92, -70,
37, 43, 107, 1, -102, 1, 1, -64, -8, -59, -61, -9, 0, 0, 4, 46,
-37, -28, 85, 0, -100, 107, 111, 81, -52, -84, -112, 119, 3, 2, 77,
-60, -50, 124, -127, 62, -128, -106, 45, 44, 57, 66, -111, -3, 28,
124, 119, 68, 20, -101, 28, 99, -46, 76, 86, -47, -77, 63, -49, 66,
93, 100, 26, 11, -109, 105, -26, -6, 39, 38, 97, 51, 22, 62, -74,
34, -26, 63, -54, -25, -115, 55, 96, -102, 0, 0, 2, 40, -44, -4,
75, 121, 21, 125, -26, 22, -82, -3, -26, -45, -33, 14, -46, -64,
94, 127, -96, -85, 88, -55, -61, -54, 7, -123, 79, -96, 81, 95,
-94, 91, -15, 108, 101, 66, 27, 45, -115, 20, -119, 47, 33, 95,
-55, 21, -128, 41, -37, -12, 0, -21, -76, -28, -125, -61, -30, -34,
-69, -43, -122, -45, -71, 117, -103, 119, 1, -45, 0, 0, 2, -84, 6,
-2, -55, -67, -111, 92, 123, 50, -114, 93, 113, 90, -29, 57, -24,
-45, -39, -72, 112, 67, -57, -128, 9, -41, -96, -25, -61, -75, -81,
-33, 59, -65, 49, 125, 59, -22, -104, 55, -56, 2, -16, -8, -53, 41,
-6, -51, -56, 71, 102, 18, 23, 55, -46, -18, 51, -112, 29, -63,
-20, -7, -126, -100, 14, 102, 59, -92, 66, -57, 0, 0, 2, 76, -69,
59, 105, -42, -35, -69, 76, 113, 64, -15, -127, 24, -19, 70, -126,
17, 102, 54, 103, 84, 83, 96, 17, -61, 20, -24, 61, 47, 90, 125,
120, -48, -56, -52, -25, -43, -76, 91, -11, -35, -98, 111, 11, 94,
104, -68, -21, -50, -126, 84, -68, -125, 28, 14, 33, 63, -83, 107,
107, -109, 37, -75, 24, 99, 107, -78, 84, -113, 0, 0, 9, 8, -12,
-65, 71, -83, 109, -58, -117, 10, -103, 70, 96, 54, 56, -14, 19,
-103, -63, -51, 24, -91, 13, -28, -108, 62, 74, -35, -22, 35, 78,
-84, 35, 104, 31, -28, -50, 98, -70, 124, 95, -3, 66, 1, -29, -81,
-7, 88, -49, -21, 80, 13, 24, -22, -107, 59, 117, -41, 60, 103,
101, 78, -66, -52, -68, -85, -115, -78, 122, 46, 0, 0, 0, -11, 63,
32, -119, -88, 32, -1, 74, -96, -44, -88, 56, -58, 25, 27, 42, 41,
12, -62, 47, 9, 37, 93, -99, 2, -90, -103, -47, -13, 92, 63, 102,
124, 46, -98, -94, 38, -23, -72, -38, -119, -75, 126, 93, 93, 101,
-62, 38, 108, 29, -70, -114, 88, 9, -59, -81, -116, 64, -115, -22,
-45, -90, 98, 94, -100, -76, -17, -35, 87, -88, 0, 0, 1, 8, 105,
-97, 88, 102, -82, -62, 108, -40, -71, 92, 18, 87, -75, 24, 23,
-120, 38, 122, -54, -124, 95, 94, -118, -15, -1, -20, 107, 14, -47,
-53, -57, 8, 30, -41, 111, 55, 54, -60, 125, -64, 22, 123, 92, 70,
95, 48, -112, 50, -90, 122, -9, 81, 24, 46, -22, 127, 24, -86, 67,
-115, 25, 100, -122, -111, 47, -80, -66, -117, 0, 0, 1, 61, 119,
-88, 64, -65, -80, 44, -52, 115, -45, -101, -11, -80, 72, 6, -77,
34, -9, 84, 87, 16, -107, 113, 8, 117, -113, 2, -90, 22, -40, -2,
75, 61, -111, -81, -64, 126, 90, -109, -101, -43, 117, 117, -43,
-42, -107, -111, -28, 81, 54, 120, -10, 123, -61, -50, -70, 9, -32,
-45, -54, -60, -115, 94, -24, -76, 70, -56, -118, 94, 0, 0, 0, 90,
-43, -113, -83, 127, 21, 0, 0, 101, -4, 106, 49, -48, -14, -120,
111, -5, -1, 40, -116, -115, -65, -84, -64, -126, -106, 46, -101,
-40, 62, -81, -83, -110, 102, -108, -65, 74, 122, -87, -45, 23,
124, 39, -77, -72, 80, 104, 91, 62, -40, -45, -78, 48, 108, 76, 57,
-120, -122, -6, 108, 125, 84, -19, -57, -53, -7, 83, 122, 107, 0,
0, 0, 6, 80, -93, 101, -95, -105, -65, -111, -128, 57, 76, -113,
87, 101, 43, -38, 7, -25, -86, -77, 58, -95, -94, 6, 76, 50, 118,
39, 78, -116, 46, -31, 63, 32, 70, 6, -2, 74, 9, -107, 58, -108,
-86, 119, -120, 60, -22, 71, -80, -54, 77, 126, 86, -35, -40, -117,
90, 14, -114, 11, 109, 32, -78, 48, -16, -75, -62, 67, 36, 0, 0, 1,
13, -74, 29, -41, -75, 41, -77, -125, 40, -52, -79, -6, -88, -28,
-78, 18, -84, -41, 47, 100, -102, 89, -53, -76, -39, -93, 98, -100,
-62, -71, 92, -120, 85, -127, 47, 117, 31, 59, 112, 120, 92, -18,
115, -54, -17, 27, 28, -51, -99, 64, -34, -121, -92, 122, -109,
106, -41, -78, -73, -90, -102, 76, -49, 57, -64, 80, -84, 52, -17,
0, 0, 0, 70, -67, -24, 86, 4, 65, -13, -52, 104, 50, -119, 44, -10,
22, -14, 34, -66, 25, -70, 62, -85, 118, -4, -43, -118, -122, 49,
108, 21, 95, -106, -22, -125, 7, 9, 124, 0, 53, 112, 64, -113, -7,
93, -78, -19, 64, -87, 67, -13, 52, 32, 22, -74, 26, 40, 78, 103,
50, -119, 103, 39, -25, 40, -72, -69, 25, -8, -2, 59, 0, 0, 0, 6,
105, -9, -6, -127, 123, -85, -24, 11, -71, -120, -104, -119, -1,
-112, -5, -94, -99, -67, -25, -122, 26, -59, -75, -103, -91, 47,
-40, -94, 81, -59, 81, -120, -75, 102, -73, 82, 87, 93, 40, -119,
101, 14, 35, -25, 31, 89, 4, 29, -118, 27, -44, -27, 112, 86, -104,
-65, -12, 104, 80, 92, -53, 84, -103, -111, -5, 58, 108, -112, 11,
0, 0, 0, 32, 9, 90, 35, -4, -58, -75, -17, -16, -63, -63, 12, 37,
11, 62, -96, -76, -114, 80, -64, 90, 94, -92, -4, -28, 43, -70,
103, -29, -89, 89, 46, 51, -30, -58, 41, -34, -5, 96, -73, -93,
-95, -55, 29, 51, -3, -32, -91, 78, -3, 58, -92, -78, -126, 63,
-11, 118, 40, -21, 28, -24, 64, -106, -88, 3, -112, -39, -8, -37,
0, 0, 0, 14, -46, -99, 86, -67, -123, -18, -79, 76, -18, -81, 49,
-101, -62, -70, -98, 49, 34, -2, -85, -72, 83, 8, 91, 95, -128,
-39, -17, 88, -112, -95, -27, 77, 120, 122, 46, 58, 119, -61, 122,
-98, -91, -31, -37, 104, -51, 104, 1, -11, 77, 41, 112, 53, -65,
72, 35, 57, 16, -56, -116, -38, -87, -71, 3, -106, -45, -105, -33,
-37, 0, 0, 0, 3, -9, -109, -6, 108, -43, 126, 58, 119, -16, 6,
-104, -44, 50, -120, 97, -93, 9, -20, -32, -100, 111, 30, -26, 94,
-118, -78, -74, 113, 107, 31, 126, -26, -79, 111, 12, 17, -22, 124,
-96, -43, -23, 28, 88, -77, 126, 63, 97, 126, -7, -93, 64, -41,
-106, 29, 3, 68, -67, -100, -27, 20, 54, 77, 66, -97, -115, -119,
-5, 58, 0, 0, 0, 6, -36, 14, 83, -107, 94, 117, 83, 86, -113, 23,
-106, 124, -11, -128, -22, 59, -71, 103, 46, -7, -110, 115, 99, 55,
21, -55, -9, -57, 94, 43, -77, -47, -21, 0, -117, -49, -31, -41,
-19, -68, 107, 3, -105, 108, 103, 30, 50, 114, 37, 102, 34, 5, 77,
-97, -57, -66, 77, -19, -59, -49, 70, 9, 87, 15, -116, 118, 14, 28,
0, 0, 0, 13, -9, -114, -69, -54, -39, -106, 65, -8, 59, 19, -28,
114, 57, 73, -51, 54, 2, 108, -3, -79, -126, -116, -73, 34, 96,
-109, 76, -58, -111, -60, -36, -10, -120, 63, 38, -33, 71, -85, 9,
-2, -27, -22, -13, -33, 118, -121, -119, 57, -44, -5, -74, 68,
-119, 20, 78, 78, 37, 27, 84, -61, -97, -60, 64, -95, 46, -14, 4,
-29, 0, 0, 0, 5, -105, -43, -8, -108, -75, 37, -97, -43, 96, -15,
-47, 65, -89, -55, -33, -103, 120, 22, 114, 18, -100, 67, -114, 75,
120, 59, -43, 124, 42, 113, -80, 68, -104, -32, 70, -49, -77, 113,
-54, -14, -72, 92, 116, 52, -91, -103, -100, -33, -106, -50, 68,
57, -57, -117, 80, -105, -18, 44, -45, -24, 65, 1, -59, -102, 0, 0,
0, 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, 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, 87, 66, 92, 0, 0, 0, 0, 14, 26, 43, -109, -56,
10, 65, -57, -83, 42, -104, 93, -1, 112, 122, 106, -113, -8, 46,
34, -100, -68, 70, -113, 4, 25, 17, -104, -110, 9, 85, -95, 75, 61,
126, -85, 119, -95, 127, -81, -103, 32, -115, -18, 91, 68, -81,
-73, -119, -106, 42, -41, -97, 35, 11, 59, 89, 16, 106, 10, -8,
-110, 33, -100, 0, -70, 18, -17, -48, 80, -66, 5, -96, -38, 127,
103, 76, -61, 32, 35, 110, 112, -9, -23, 108, 19, -93, -86, 54,
-67, 97, -13, -105, -31, -127, -93, -16, -10, -56, 48, 58, -69, 3,
-113, -52, -86, -60, -69, 11, -95, 93, 11, 57, 80, 59, -109, -105,
-76, 91, 17, -90, -17, -58, 11, -13, -121, 75, 93, -39, 108, -34,
118, 33, -22, -34, 38, 93, 63, 80, 106, 115, -78, -74, -113, 101,
108, -3, 21, 0, -94, -124, 36, 103, -70, -126, -34, -70, 107, -85,
-26, 82, 13, 87, -64, 38, -67, -106, 114, 41, -110, 30, 118, -1,
-55, -79, -32, -1, -124, 8, -33, -19, 56, -20, 44, 60, 13, -42,
-84, 46, 109, 107, 113, -110, 110, 94, 105, -43, 9, -60, -27, 63,
-26, 90, 32, -128, 114, 83, -105, 111, 118, 106, -53, -22, -47,
-73, -34, -99, -104, -7, 87, -16, -100, -20, 64, 14, 32, 19, 114,
47, 96, 40, -23, 0, -63, 92, -111, -97, -36, 55, -12, -109, 13, 54,
78, 107, 57, -32, -117, 85, -76, -35, 42, 86, -2, 96, 36, -61, -13,
10, -93, 86, -103, -53, -78, 78, 14, -18, -46, 85, 93, -87, -29,
109, 58, 89, 78, -58, 58, 112, -76, 37, -18, -13, -65, -70, 120,
89, 68, -89, -73, -75, -57, 67, 113, 116, -18, -95, 66, 23, 45, 52,
-81, -63, -43, 15, 125, -86, -108, -17, 40, 3, -65, 44, 93, 82, 2,
-43, 110, -2, -11, -13, 81, -127, -80, -51, 69, -75, 33, -15, 22,
-33, -41, 65, 88, 31, 25, -6, -90, 15, -117, -50, 69, 35, -72, 74,
-99, 23, -97, 5, 42, -31, -99, -11, 110, -100, 72, -4, -12, -68,
82, 94, -114, 54, 12, -20, 67, -119, 18, -38, -65, 87, 123, -17,
-54, 99, -84, -112, 124, 93, 80, 121, 22, -109, -103, -60, 16, -54,
40, -75, -41, 21, 15, 60, -119, 44, -106, -124, 66, -108, -79, -72,
41, -128, 126, -40, 71, 26, -98, -122, -3, -99, 125, -45, -32, -48,
-68, 14, -29, 117, 13, 125, 30, 58, -49, 83, -84, -67, 46, -68,
106, -126, 16, 37, 78, 0, -7, -123, -65, -47, -2, -102, -90, -43,
-63, 68, 18, -6, 44, -85, -18, -97, 78, -11, 25, -21, 110, -110,
85, -1, 64, 1, 75, 100, -28, -9, -71, 9, -71, -110, -23, 98, -85,
63, -114, 61, 111, 48, -46, -117, -2, 38, -45, -30, 86, 48, -39,
-27, 75, -111, 38, 36, 111, 62, -102, -35, 35, 24, -35, -105, 104,
-10, 30, -97, -118, 51, -74, -30, -26, 49, -21, -126, 50, 28, -91,
-106, 22, -86, 13, -56, -118, -44, -82, 112, -115, 58, 68, -70,
-98, -54, 120, 45, -35, -109, -112, -45, 12, 21, -30, -88, -68,
-63, -51, -17, 64, -125, -40, 127, 94, 61, -114, 96, -35, -3, -83,
-106, 69, 83, -109, -103, 37, 28, -38, 110, -90, -84, 50, -110,
-104, -42, 55, -21, 48, -12, 78, 71, 49, 4, -111, };
}
OR CACHE TABLE
Code:
package org.kasma.server.net;
import org.jboss.netty.channel.ChannelHandlerContext;
import org.jboss.netty.channel.ExceptionEvent;
import org.jboss.netty.channel.MessageEvent;
import org.jboss.netty.channel.SimpleChannelUpstreamHandler;
import org.kasma.server.net.frame.DynamicFrameBuilder;
import org.kasma.server.net.jagfs.OnDemandBody;
import org.kasma.server.net.login.LoginBody;
import org.kasma.server.net.login.LoginDecoder;
import org.kasma.server.net.login.LoginEncoder;
import org.kasma.server.net.opcodes.OpcodeBody;
/**
*
* @author `Discardedx2 <[email protected]>
*
*/
public class ChannelHandler extends SimpleChannelUpstreamHandler {
@Override
public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) {
Object msg = e.getMessage();
if (msg != null) {
DynamicFrameBuilder dfb = new DynamicFrameBuilder();
if (msg instanceof OpcodeBody) {
OpcodeBody body = (OpcodeBody) msg;
if (body.success()) {
if (body instanceof OnDemandBody) {
dfb.put(0);
for (int i = 0; i < 27; i++) {
dfb.putInt(0);
}
for (int i : CACHE_TABLE) {
dfb.put(i);
}
e.getChannel().write(dfb.buildFrame());
} else if (body instanceof LoginBody) {
dfb.put(0);
e.getChannel().write(dfb.buildFrame());
e.getChannel().getPipeline().addBefore("GatewayDecoder", "LoginDecoder", new LoginDecoder());
e.getChannel().getPipeline().addLast("LoginEncoder", new LoginEncoder());
e.getChannel().getPipeline().remove("GatewayDecoder");
}
} else {
body.fail(e);
}
}
}
}
@Override
public void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent e) {
//do nothing
}
private static final int[] CACHE_TABLE = new int[] { -1, 0, -1, 0, 0, 0,
12, 106, 37, -27, -1, -109, -88, 0, 0, 2, -119, -126, -46, 31,
-102, 4, -69, -98, 122, -85, -88, 47, 51, 11, -19, 6, 13, 112,
-100, 57, -31, 39, -8, 20, -80, -102, -21, 44, 37, -94, -103, -109,
108, -109, -126, -4, -58, -64, 8, 122, 58, 111, -120, 78, 2, 83,
57, -114, -99, -95, 47, -33, 106, 79, 79, 42, 115, 40, 66, -107,
-27, 28, -29, 52, 107, -108, 93, 13, -93, 0, 0, 1, 116, 117, -5,
120, -119, 73, -26, -42, -79, -105, -61, -13, -124, 37, 66, -56,
41, 25, -11, -24, 15, -31, -13, -56, 101, -114, 100, -128, 121,
-107, -7, 124, -42, -111, -79, -6, 89, -74, -32, 26, -39, -34, 34,
111, 84, -92, 102, -78, -99, -18, -112, 67, -109, 10, -32, 94, 114,
-113, 109, -44, -96, -114, 20, 74, 40, -57, 92, 127, -97, 0, 0, 2,
-30, -74, -68, -48, 43, 18, 117, -106, 8, -49, -8, -107, -84, 57,
-69, -59, 59, -1, -4, -46, 122, 74, -1, -31, 87, -33, 66, 56, 72,
27, 126, 58, 4, 127, -15, -103, 19, -78, -40, -111, 73, -123, -7,
-27, 101, -111, 30, -126, -4, 51, -34, 86, 23, 20, 29, -35, -81,
-92, 125, 101, -57, 91, -73, -11, -63, 106, 31, -56, -63, 0, 0, 4,
75, -73, 49, 2, 81, -78, -32, 95, -54, -48, 72, -63, -55, -117,
-19, 10, -60, -3, -107, 84, -128, -9, -48, 121, -88, -67, 110, -78,
-112, -54, 58, 85, -37, 97, 52, 14, 73, 100, -22, 75, 107, 42, 106,
35, 38, -22, 81, -62, -21, 102, -53, -78, -1, -102, -112, 32, 101,
-110, -3, 115, 117, 75, 58, 73, 38, -107, 68, 64, 27, 0, 0, 1, 69,
-11, -109, 108, -16, 126, -95, -121, 59, 104, 29, -62, -82, -97,
105, 23, -31, -76, -32, -52, -35, -111, -25, 58, 124, 61, 15, -72,
29, 91, 29, -28, 26, 87, -96, 1, -85, 10, -71, -77, 48, 49, -60,
-64, -88, -60, 12, -60, 36, -5, -128, -64, -37, -55, 72, 31, -117,
0, -95, 19, 103, 99, 96, 90, 24, -85, 32, 103, 69, 0, 0, 4, -125,
-98, 65, 92, -9, 52, -9, -105, 26, -50, -111, -92, -107, 31, 72,
21, -16, 1, 103, 47, -66, -120, 127, -40, 118, 123, 53, 40, -64,
-96, -69, 10, -101, -110, -57, 23, 82, -20, -83, -7, 97, -38, -113,
-75, 115, -73, -91, 26, 87, -64, -102, -51, -75, 3, -89, -36, -21,
11, 74, -24, -125, 67, -119, -57, -16, -67, -126, 76, -73, 0, 0, 0,
107, 20, 122, 120, 45, 74, -70, 12, 112, 101, -71, -109, 30, -121,
-90, 35, -28, 59, -14, -93, -87, -12, 73, 61, -60, 20, 40, -30, 51,
-7, -6, 29, 107, 74, -35, 69, 101, -90, 82, -13, 75, 32, -17, -107,
15, -88, -87, -80, -94, -123, 54, 33, -115, 87, -11, -86, 84, -82,
-43, 76, -52, 96, 45, -41, -1, -64, -80, 83, -113, -39, 0, 0, 6,
109, 126, -4, -91, -99, 62, -21, -73, -7, -73, -116, 46, 117, 47,
52, -71, -71, 27, 13, 115, -128, 51, 101, 124, 54, 74, 79, 125,
-48, -26, 72, -118, -40, 120, -45, -67, 7, -111, -2, -102, 58,
-102, 12, -26, 19, -62, -72, -26, 103, -57, 105, -107, 11, -102,
-123, -109, -103, -86, -115, 81, -114, 5, -115, 47, 34, 58, 35, 80,
-116, 0, 0, 1, -125, -4, -30, 70, -61, 116, -58, -26, 48, -70,
-126, -51, 27, 98, -87, 30, 106, 111, -102, 119, 69, -45, -10, 101,
127, 45, -13, 62, -46, 105, -36, -104, -50, 10, -44, -52, 121, 14,
-84, -28, -94, 89, 71, -30, -13, -119, -14, 115, 0, -95, -97, 105,
-119, 113, -55, -78, 112, -31, -62, -83, -107, -100, 96, 18, 60,
-123, -1, 83, -54, 0, 0, 1, -100, 28, -85, -28, -92, 66, 64, -39,
-71, -93, -6, 122, -85, 103, 15, 27, -71, -25, 97, 61, -118, 125,
58, 94, -55, -108, 109, 55, -43, -89, 26, 0, -122, 46, -82, 86,
-121, -17, -44, -39, 17, -21, 28, -48, -94, -45, -18, 57, 42, 36,
-15, 3, -51, 76, 9, 120, 85, 92, -128, 122, 38, -53, -30, 12, 71,
41, 118, 39, 106, 0, 0, 0, 5, -29, -120, 117, -15, -28, -61, 122,
4, -13, 81, 48, 62, 77, -22, -12, -4, 93, 19, -5, -93, -100, 60,
50, 98, 120, 67, -125, -48, -55, 71, 92, -102, -43, -97, -121, -35,
-13, -119, 88, 40, 113, -99, 40, 119, 1, -52, 70, 127, -85, -90,
-64, 103, 11, 80, -99, -109, -66, 116, -120, -35, 50, -14, -78,
-38, -89, 29, 77, -23, 0, 0, 0, 47, 33, 71, -122, 127, -108, -89,
-1, 80, -33, -107, -76, -85, 61, 43, 10, 78, 102, -120, -36, -13,
-16, 33, 41, -127, -104, 54, 9, 35, 101, -91, 23, -80, -126, 31,
-118, 42, -117, 90, 18, -86, 121, -108, -72, -9, 125, 46, -118,
-54, 35, 96, 103, 92, -19, -102, -45, 38, 0, -74, 15, 46, 26, -91,
-85, -11, -87, 29, -109, -12, 0, 0, 5, 41, 94, -93, 87, -117, 60,
40, 65, 43, 0, -76, 8, 40, 4, 73, -109, 24, 18, -15, 57, -72, 59,
90, 4, 15, -76, 22, -60, -66, 1, 115, 45, 68, -127, -89, -90, -120,
59, -90, -102, -60, 47, -37, 88, 58, -101, 65, -121, -113, -46,
-44, 62, -117, 7, 82, -100, 8, 124, 109, -4, 43, 53, 68, -13, 63,
-21, -2, -91, -21, 0, 0, 0, 50, 73, -28, 79, -6, 5, -51, 30, -45,
-33, -117, 79, 60, 89, 71, 69, -98, -107, -98, -30, 15, 53, 120,
44, -48, -71, 17, -58, 123, -62, 0, 114, -39, 72, -90, -46, 91,
-68, 79, -73, 65, -54, 80, 102, 112, 56, -57, 99, -105, 123, -54,
-103, 19, -71, -126, 40, -10, -8, 96, 77, -118, 10, 31, 55, -77,
105, -100, 60, 117, 0, 0, -1, 0, 58, 9, 81, -61, -2, 94, 12, 7, 5,
37, 84, 55, 49, 122, 67, 18, 9, -75, 91, 41, -16, -109, 64, 43, 67,
114, 117, 53, 112, -62, 44, 34, 1, 36, -108, 6, -118, -70, -1, 94,
3, -39, 12, 21, 81, 64, -68, 119, 64, -109, -7, 124, -117, -59, 8,
15, -50, -103, 33, 73, 70, -33, -112, -115, -24, -68, -68, -56, 86,
0, 0, 0, 15, -29, -100, -46, 77, -53, 52, 39, 5, -50, 91, 13, -73,
-29, 75, 65, -1, -32, -47, 1, -33, 101, -55, -73, 73, -82, 77, 88,
-90, -117, 20, 43, 103, -79, 32, 4, 95, 83, 104, 112, 66, -58, 113,
120, -111, 96, -52, 2, 9, 110, 56, -61, -100, -101, 118, 92, -70,
37, 43, 107, 1, -102, 1, 1, -64, -8, -59, -61, -9, 0, 0, 4, 46,
-37, -28, 85, 0, -100, 107, 111, 81, -52, -84, -112, 119, 3, 2, 77,
-60, -50, 124, -127, 62, -128, -106, 45, 44, 57, 66, -111, -3, 28,
124, 119, 68, 20, -101, 28, 99, -46, 76, 86, -47, -77, 63, -49, 66,
93, 100, 26, 11, -109, 105, -26, -6, 39, 38, 97, 51, 22, 62, -74,
34, -26, 63, -54, -25, -115, 55, 96, -102, 0, 0, 2, 40, -44, -4,
75, 121, 21, 125, -26, 22, -82, -3, -26, -45, -33, 14, -46, -64,
94, 127, -96, -85, 88, -55, -61, -54, 7, -123, 79, -96, 81, 95,
-94, 91, -15, 108, 101, 66, 27, 45, -115, 20, -119, 47, 33, 95,
-55, 21, -128, 41, -37, -12, 0, -21, -76, -28, -125, -61, -30, -34,
-69, -43, -122, -45, -71, 117, -103, 119, 1, -45, 0, 0, 2, -84, 6,
-2, -55, -67, -111, 92, 123, 50, -114, 93, 113, 90, -29, 57, -24,
-45, -39, -72, 112, 67, -57, -128, 9, -41, -96, -25, -61, -75, -81,
-33, 59, -65, 49, 125, 59, -22, -104, 55, -56, 2, -16, -8, -53, 41,
-6, -51, -56, 71, 102, 18, 23, 55, -46, -18, 51, -112, 29, -63,
-20, -7, -126, -100, 14, 102, 59, -92, 66, -57, 0, 0, 2, 76, -69,
59, 105, -42, -35, -69, 76, 113, 64, -15, -127, 24, -19, 70, -126,
17, 102, 54, 103, 84, 83, 96, 17, -61, 20, -24, 61, 47, 90, 125,
120, -48, -56, -52, -25, -43, -76, 91, -11, -35, -98, 111, 11, 94,
104, -68, -21, -50, -126, 84, -68, -125, 28, 14, 33, 63, -83, 107,
107, -109, 37, -75, 24, 99, 107, -78, 84, -113, 0, 0, 9, 8, -12,
-65, 71, -83, 109, -58, -117, 10, -103, 70, 96, 54, 56, -14, 19,
-103, -63, -51, 24, -91, 13, -28, -108, 62, 74, -35, -22, 35, 78,
-84, 35, 104, 31, -28, -50, 98, -70, 124, 95, -3, 66, 1, -29, -81,
-7, 88, -49, -21, 80, 13, 24, -22, -107, 59, 117, -41, 60, 103,
101, 78, -66, -52, -68, -85, -115, -78, 122, 46, 0, 0, 0, -11, 63,
32, -119, -88, 32, -1, 74, -96, -44, -88, 56, -58, 25, 27, 42, 41,
12, -62, 47, 9, 37, 93, -99, 2, -90, -103, -47, -13, 92, 63, 102,
124, 46, -98, -94, 38, -23, -72, -38, -119, -75, 126, 93, 93, 101,
-62, 38, 108, 29, -70, -114, 88, 9, -59, -81, -116, 64, -115, -22,
-45, -90, 98, 94, -100, -76, -17, -35, 87, -88, 0, 0, 1, 8, 105,
-97, 88, 102, -82, -62, 108, -40, -71, 92, 18, 87, -75, 24, 23,
-120, 38, 122, -54, -124, 95, 94, -118, -15, -1, -20, 107, 14, -47,
-53, -57, 8, 30, -41, 111, 55, 54, -60, 125, -64, 22, 123, 92, 70,
95, 48, -112, 50, -90, 122, -9, 81, 24, 46, -22, 127, 24, -86, 67,
-115, 25, 100, -122, -111, 47, -80, -66, -117, 0, 0, 1, 61, 119,
-88, 64, -65, -80, 44, -52, 115, -45, -101, -11, -80, 72, 6, -77,
34, -9, 84, 87, 16, -107, 113, 8, 117, -113, 2, -90, 22, -40, -2,
75, 61, -111, -81, -64, 126, 90, -109, -101, -43, 117, 117, -43,
-42, -107, -111, -28, 81, 54, 120, -10, 123, -61, -50, -70, 9, -32,
-45, -54, -60, -115, 94, -24, -76, 70, -56, -118, 94, 0, 0, 0, 90,
-43, -113, -83, 127, 21, 0, 0, 101, -4, 106, 49, -48, -14, -120,
111, -5, -1, 40, -116, -115, -65, -84, -64, -126, -106, 46, -101,
-40, 62, -81, -83, -110, 102, -108, -65, 74, 122, -87, -45, 23,
124, 39, -77, -72, 80, 104, 91, 62, -40, -45, -78, 48, 108, 76, 57,
-120, -122, -6, 108, 125, 84, -19, -57, -53, -7, 83, 122, 107, 0,
0, 0, 6, 80, -93, 101, -95, -105, -65, -111, -128, 57, 76, -113,
87, 101, 43, -38, 7, -25, -86, -77, 58, -95, -94, 6, 76, 50, 118,
39, 78, -116, 46, -31, 63, 32, 70, 6, -2, 74, 9, -107, 58, -108,
-86, 119, -120, 60, -22, 71, -80, -54, 77, 126, 86, -35, -40, -117,
90, 14, -114, 11, 109, 32, -78, 48, -16, -75, -62, 67, 36, 0, 0, 1,
13, -74, 29, -41, -75, 41, -77, -125, 40, -52, -79, -6, -88, -28,
-78, 18, -84, -41, 47, 100, -102, 89, -53, -76, -39, -93, 98, -100,
-62, -71, 92, -120, 85, -127, 47, 117, 31, 59, 112, 120, 92, -18,
115, -54, -17, 27, 28, -51, -99, 64, -34, -121, -92, 122, -109,
106, -41, -78, -73, -90, -102, 76, -49, 57, -64, 80, -84, 52, -17,
0, 0, 0, 70, -67, -24, 86, 4, 65, -13, -52, 104, 50, -119, 44, -10,
22, -14, 34, -66, 25, -70, 62, -85, 118, -4, -43, -118, -122, 49,
108, 21, 95, -106, -22, -125, 7, 9, 124, 0, 53, 112, 64, -113, -7,
93, -78, -19, 64, -87, 67, -13, 52, 32, 22, -74, 26, 40, 78, 103,
50, -119, 103, 39, -25, 40, -72, -69, 25, -8, -2, 59, 0, 0, 0, 6,
105, -9, -6, -127, 123, -85, -24, 11, -71, -120, -104, -119, -1,
-112, -5, -94, -99, -67, -25, -122, 26, -59, -75, -103, -91, 47,
-40, -94, 81, -59, 81, -120, -75, 102, -73, 82, 87, 93, 40, -119,
101, 14, 35, -25, 31, 89, 4, 29, -118, 27, -44, -27, 112, 86, -104,
-65, -12, 104, 80, 92, -53, 84, -103, -111, -5, 58, 108, -112, 11,
0, 0, 0, 32, 9, 90, 35, -4, -58, -75, -17, -16, -63, -63, 12, 37,
11, 62, -96, -76, -114, 80, -64, 90, 94, -92, -4, -28, 43, -70,
103, -29, -89, 89, 46, 51, -30, -58, 41, -34, -5, 96, -73, -93,
-95, -55, 29, 51, -3, -32, -91, 78, -3, 58, -92, -78, -126, 63,
-11, 118, 40, -21, 28, -24, 64, -106, -88, 3, -112, -39, -8, -37,
0, 0, 0, 14, -46, -99, 86, -67, -123, -18, -79, 76, -18, -81, 49,
-101, -62, -70, -98, 49, 34, -2, -85, -72, 83, 8, 91, 95, -128,
-39, -17, 88, -112, -95, -27, 77, 120, 122, 46, 58, 119, -61, 122,
-98, -91, -31, -37, 104, -51, 104, 1, -11, 77, 41, 112, 53, -65,
72, 35, 57, 16, -56, -116, -38, -87, -71, 3, -106, -45, -105, -33,
-37, 0, 0, 0, 3, -9, -109, -6, 108, -43, 126, 58, 119, -16, 6,
-104, -44, 50, -120, 97, -93, 9, -20, -32, -100, 111, 30, -26, 94,
-118, -78, -74, 113, 107, 31, 126, -26, -79, 111, 12, 17, -22, 124,
-96, -43, -23, 28, 88, -77, 126, 63, 97, 126, -7, -93, 64, -41,
-106, 29, 3, 68, -67, -100, -27, 20, 54, 77, 66, -97, -115, -119,
-5, 58, 0, 0, 0, 6, -36, 14, 83, -107, 94, 117, 83, 86, -113, 23,
-106, 124, -11, -128, -22, 59, -71, 103, 46, -7, -110, 115, 99, 55,
21, -55, -9, -57, 94, 43, -77, -47, -21, 0, -117, -49, -31, -41,
-19, -68, 107, 3, -105, 108, 103, 30, 50, 114, 37, 102, 34, 5, 77,
-97, -57, -66, 77, -19, -59, -49, 70, 9, 87, 15, -116, 118, 14, 28,
0, 0, 0, 13, -9, -114, -69, -54, -39, -106, 65, -8, 59, 19, -28,
114, 57, 73, -51, 54, 2, 108, -3, -79, -126, -116, -73, 34, 96,
-109, 76, -58, -111, -60, -36, -10, -120, 63, 38, -33, 71, -85, 9,
-2, -27, -22, -13, -33, 118, -121, -119, 57, -44, -5, -74, 68,
-119, 20, 78, 78, 37, 27, 84, -61, -97, -60, 64, -95, 46, -14, 4,
-29, 0, 0, 0, 5, -105, -43, -8, -108, -75, 37, -97, -43, 96, -15,
-47, 65, -89, -55, -33, -103, 120, 22, 114, 18, -100, 67, -114, 75,
120, 59, -43, 124, 42, 113, -80, 68, -104, -32, 70, -49, -77, 113,
-54, -14, -72, 92, 116, 52, -91, -103, -100, -33, -106, -50, 68,
57, -57, -117, 80, -105, -18, 44, -45, -24, 65, 1, -59, -102, 0, 0,
0, 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, 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, 87, 66, 92, 0, 0, 0, 0, 14, 26, 43, -109, -56,
10, 65, -57, -83, 42, -104, 93, -1, 112, 122, 106, -113, -8, 46,
34, -100, -68, 70, -113, 4, 25, 17, -104, -110, 9, 85, -95, 75, 61,
126, -85, 119, -95, 127, -81, -103, 32, -115, -18, 91, 68, -81,
-73, -119, -106, 42, -41, -97, 35, 11, 59, 89, 16, 106, 10, -8,
-110, 33, -100, 0, -70, 18, -17, -48, 80, -66, 5, -96, -38, 127,
103, 76, -61, 32, 35, 110, 112, -9, -23, 108, 19, -93, -86, 54,
-67, 97, -13, -105, -31, -127, -93, -16, -10, -56, 48, 58, -69, 3,
-113, -52, -86, -60, -69, 11, -95, 93, 11, 57, 80, 59, -109, -105,
-76, 91, 17, -90, -17, -58, 11, -13, -121, 75, 93, -39, 108, -34,
118, 33, -22, -34, 38, 93, 63, 80, 106, 115, -78, -74, -113, 101,
108, -3, 21, 0, -94, -124, 36, 103, -70, -126, -34, -70, 107, -85,
-26, 82, 13, 87, -64, 38, -67, -106, 114, 41, -110, 30, 118, -1,
-55, -79, -32, -1, -124, 8, -33, -19, 56, -20, 44, 60, 13, -42,
-84, 46, 109, 107, 113, -110, 110, 94, 105, -43, 9, -60, -27, 63,
-26, 90, 32, -128, 114, 83, -105, 111, 118, 106, -53, -22, -47,
-73, -34, -99, -104, -7, 87, -16, -100, -20, 64, 14, 32, 19, 114,
47, 96, 40, -23, 0, -63, 92, -111, -97, -36, 55, -12, -109, 13, 54,
78, 107, 57, -32, -117, 85, -76, -35, 42, 86, -2, 96, 36, -61, -13,
10, -93, 86, -103, -53, -78, 78, 14, -18, -46, 85, 93, -87, -29,
109, 58, 89, 78, -58, 58, 112, -76, 37, -18, -13, -65, -70, 120,
89, 68, -89, -73, -75, -57, 67, 113, 116, -18, -95, 66, 23, 45, 52,
-81, -63, -43, 15, 125, -86, -108, -17, 40, 3, -65, 44, 93, 82, 2,
-43, 110, -2, -11, -13, 81, -127, -80, -51, 69, -75, 33, -15, 22,
-33, -41, 65, 88, 31, 25, -6, -90, 15, -117, -50, 69, 35, -72, 74,
-99, 23, -97, 5, 42, -31, -99, -11, 110, -100, 72, -4, -12, -68,
82, 94, -114, 54, 12, -20, 67, -119, 18, -38, -65, 87, 123, -17,
-54, 99, -84, -112, 124, 93, 80, 121, 22, -109, -103, -60, 16, -54,
40, -75, -41, 21, 15, 60, -119, 44, -106, -124, 66, -108, -79, -72,
41, -128, 126, -40, 71, 26, -98, -122, -3, -99, 125, -45, -32, -48,
-68, 14, -29, 117, 13, 125, 30, 58, -49, 83, -84, -67, 46, -68,
106, -126, 16, 37, 78, 0, -7, -123, -65, -47, -2, -102, -90, -43,
-63, 68, 18, -6, 44, -85, -18, -97, 78, -11, 25, -21, 110, -110,
85, -1, 64, 1, 75, 100, -28, -9, -71, 9, -71, -110, -23, 98, -85,
63, -114, 61, 111, 48, -46, -117, -2, 38, -45, -30, 86, 48, -39,
-27, 75, -111, 38, 36, 111, 62, -102, -35, 35, 24, -35, -105, 104,
-10, 30, -97, -118, 51, -74, -30, -26, 49, -21, -126, 50, 28, -91,
-106, 22, -86, 13, -56, -118, -44, -82, 112, -115, 58, 68, -70,
-98, -54, 120, 45, -35, -109, -112, -45, 12, 21, -30, -88, -68,
-63, -51, -17, 64, -125, -40, 127, 94, 61, -114, 96, -35, -3, -83,
-106, 69, 83, -109, -103, 37, 28, -38, 110, -90, -84, 50, -110,
-104, -42, 55, -21, 48, -12, 78, 71, 49, 4, -111, };
}