
var m0 = new Array(1)

m0[2] = new Array(6,21);
m0[2].base = new Array(3,0);
m0[2].root =1;
m0[2].move =1;
m0[3] = new Array(15,23,58,49,2,29,54,46,1,11,61,54,12,20,60,62,127,61,6,21,51,43,5,26,57,51,4,6,71,5,59,50,29,15,48,40,8,24,56,58,0,2,50,57,3,12,57,56);
m0[3].base = new Array(8,9,10,11,12,13,14,15,15,16,17,18,19,20,20,21,22,23,24,25,26,27,28,29,0);
m0[3].root =1;
m0[3].move =5;
m0[1] = new Array(62,45,11,27,50,34,10,18,49,41,6,21,54,46,2,38,61,54,12,20,60,62,127,61,1,11,58,49,5,19,51,43,4,6,71,5,57,51,8,24,48,40,3,12,59,50,20,28,52,36,27,36,43,36,19,26,55,47);
m0[1].base = new Array(1,2,4,5,6,7,30,31,32,33,34,34,35,36,37,38,39,39,40,41,42,43,44,45,46,47,48,49,50,0);
m0[1].root =0;
m0[1].move =0;
m0[5] = new Array(10,26,57,42,1,18,62,45,6,21,60,62,127,61,4,6,71,5);
m0[5].base = new Array(57,58,59,60,61,62,62,63,63,0);
m0[5].root =4;
m0[5].move =4;
m0[4] = new Array(14,22,61,54,5,14,50,34,6,21,62,45,4,6,71,5,51,35,11,19,60,62,127,61,1,11,57,42,12,28,52,36,10,18);
m0[4].base = new Array(52,53,54,55,56,64,65,65,66,67,68,68,69,70,71,72,73,0);
m0[4].root =0;
m0[4].move =1;
m0[6] = new Array(6,21);
m0[6].base = new Array(74,0);
m0[6].root =0;
m0[6].move =1;
m0[7] = new Array(11,27);
m0[7].base = new Array(75,0);
m0[7].root =0;
m0[7].move =1;
m0[8] = new Array(51,43);
m0[8].base = new Array(77,0);
m0[8].root =0;
m0[8].move =2;
m0[9] = new Array(61,54);
m0[9].base = new Array(78,0);
m0[9].root =0;
m0[9].move =2;
m0[10] = new Array(10,26,35,41,26,34,41,35,5,26,50,42,1,18);
m0[10].base = new Array(82,83,84,85,86,87,88,0);
m0[10].root =0;
m0[10].move =5;
m0[11] = new Array(48,40);
m0[11].base = new Array(90,0);
m0[11].root =0;
m0[11].move =6;
m0[12] = new Array(57,42,10,26,35,25,8,16,25,40,9,25,40,57,27,35,42,36,13,29);
m0[12].base = new Array(91,92,93,94,95,96,97,98,99,100,0);
m0[12].root =0;
m0[12].move =6;
m0[13] = new Array(6,21);
m0[13].base = new Array(102,0);
m0[13].root =0;
m0[13].move =7;
m0[14] = new Array(10,26);
m0[14].base = new Array(103,0);
m0[14].root =0;
m0[14].move =7;
m0[15] = new Array(50,43);
m0[15].base = new Array(105,0);
m0[15].root =0;
m0[15].move =8;
m0[16] = new Array(48,40);
m0[16].base = new Array(108,0);
m0[16].root =0;
m0[16].move =10;
m0[17] = new Array(58,37);
m0[17].base = new Array(109,0);
m0[17].root =0;
m0[17].move =10;
m0[18] = new Array(10,26,35,25,8,16,25,42);
m0[18].base = new Array(111,112,113,114,0);
m0[18].root =0;
m0[18].move =11;
m0[19] = new Array(50,42,33,12);
m0[19].base = new Array(116,117,0);
m0[19].root =0;
m0[19].move =12;
m0[20] = new Array(33,12);
m0[20].base = new Array(119,0);
m0[20].root =0;
m0[20].move =13;
m0[21] = new Array(43,51,4,6,71,5,60,62,127,61,10,26);
m0[21].base = new Array(121,122,122,123,123,124,0);
m0[21].root =0;
m0[21].move =14;
m0[22] = new Array(1,11,43,44,3,12,44,12,4,12,60,58,120,59);
m0[22].base = new Array(126,127,128,129,130,131,131,0);
m0[22].root =0;
m0[22].move =16;
m0[23] = new Array(60,58,120,59,5,4);
m0[23].base = new Array(133,133,134,0);
m0[23].root =0;
m0[23].move =17;
m0[24] = new Array(60,62,127,61,10,26);
m0[24].base = new Array(135,135,136,0);
m0[24].root =0;
m0[24].move =17;
m0[25] = new Array(10,26,35,41,27,34,43,34);
m0[25].base = new Array(138,139,140,141,0);
m0[25].root =0;
m0[25].move =18;
m0[26] = new Array(60,62,127,61);
m0[26].base = new Array(147,147,0);
m0[26].root =0;
m0[26].move =23;
m0[27] = new Array(5,4);
m0[27].base = new Array(149,0);
m0[27].root =0;
m0[27].move =24;
m0[28] = new Array(52,36);
m0[28].base = new Array(153,0);
m0[28].root =0;
m0[28].move =28;
m0[29] = new Array(3,19);
m0[29].base = new Array(155,0);
m0[29].root =0;
m0[29].move =29;
m0[30] = new Array(55,47,38,31,46,38,31,22,52,44,21,36);
m0[30].base = new Array(157,158,159,160,161,162,0);
m0[30].root =0;
m0[30].move =30;
m0[31] = new Array(3,12,52,44,0,3);
m0[31].base = new Array(164,165,166,0);
m0[31].root =0;
m0[31].move =31;
m0[32] = new Array(56,59);
m0[32].base = new Array(168,0);
m0[32].root =0;
m0[32].move =32;
m0[33] = new Array(54,47,2,47,26,9,21,38,35,45,27,44,53,44,38,44,34,13,6,7,45,39,4,5);
m0[33].base = new Array(171,172,173,174,175,176,177,178,179,180,181,182,0);
m0[33].root =0;
m0[33].move =34;
m0[35] = new Array(35,45);
m0[35].base = new Array(190,0);
m0[35].root =34;
m0[35].move =2;
m0[34] = new Array(54,47,2,47,26,9,21,38,35,45,27,44,53,44,38,44,34,13,6,7,45,39,4,5);
m0[34].base = new Array(187,188,189,191,192,193,194,195,196,197,198,199,0);
m0[34].root =0;
m0[34].move =38;
m0[36] = new Array(45,38,21,38,52,44);
m0[36].base = new Array(202,203,204,0);
m0[36].root =0;
m0[36].move =40;
m0[37] = new Array(45,54,38,47);
m0[37].base = new Array(205,206,0);
m0[37].root =0;
m0[37].move =40;
m0[38] = new Array(52,36,27,17,34,42,2,10,49,33,17,11);
m0[38].base = new Array(209,210,211,212,213,214,0);
m0[38].root =0;
m0[38].move =42;
m0[40] = new Array(27,12,32,24);
m0[40].base = new Array(225,226,0);
m0[40].root =39;
m0[40].move =1;
m0[39] = new Array(52,36,27,17,34,41,17,11);
m0[39].base = new Array(223,224,227,228,0);
m0[39].root =0;
m0[39].move =50;
m0[41] = new Array(10,17,25,18);
m0[41].base = new Array(230,231,0);
m0[41].root =0;
m0[41].move =51;
m0[42] = new Array(34,50,25,32);
m0[42].base = new Array(233,234,0);
m0[42].root =0;
m0[42].move =52;
m0[44] = new Array(44,4,25,18);
m0[44].base = new Array(239,240,0);
m0[44].root =43;
m0[44].move =1;
m0[45] = new Array(51,59);
m0[45].base = new Array(246,0);
m0[45].root =43;
m0[45].move =6;
m0[46] = new Array(21,27,34,27,0,56,27,3,6,15,3,39,15,6);
m0[46].base = new Array(252,253,254,255,256,257,258,0);
m0[46].root =43;
m0[46].move =11;
m0[43] = new Array(63,45,38,45,52,45,18,25,35,25,10,24,51,27,44,60,58,60,24,60,62,54,0,56,27,3,6,15,34,39,15,22,45,37);
m0[43].base = new Array(237,238,241,242,243,244,245,247,248,249,250,251,259,260,261,262,263,0);
m0[43].root =0;
m0[43].move =54;
m0[49] = new Array(52,36,46,54,62,54,27,37,54,63,10,28,25,18,28,31,63,62,38,45);
m0[49].base = new Array(268,269,270,271,272,273,274,275,276,277,0);
m0[49].root =48;
m0[49].move =1;
m0[48] = new Array(44,46,52,44,27,44,53,44,10,28,58,60);
m0[48].base = new Array(266,267,278,279,280,281,0);
m0[48].root =47;
m0[48].move =1;
m0[50] = new Array(0,40,26,41);
m0[50].base = new Array(282,283,0);
m0[50].root =47;
m0[50].move =1;
m0[47] = new Array(63,54,44,40,25,18);
m0[47].base = new Array(264,265,284,0);
m0[47].root =0;
m0[47].move =54;
m0[52] = new Array(38,31,63,45);
m0[52].base = new Array(287,288,0);
m0[52].root =51;
m0[52].move =1;
m0[53] = new Array(44,28,25,18);
m0[53].base = new Array(289,290,0);
m0[53].root =51;
m0[53].move =1;
m0[58] = new Array(27,54,38,47);
m0[58].base = new Array(304,305,0);
m0[58].root =57;
m0[58].move =1;
m0[59] = new Array(62,61,38,47,27,54,46,54,61,60,54,62);
m0[59].base = new Array(310,311,312,313,314,315,0);
m0[59].root =57;
m0[59].move =5;
m0[57] = new Array(47,46,62,63,46,47,63,62,47,46,62,63);
m0[57].base = new Array(302,303,306,307,308,309,0);
m0[57].root =56;
m0[57].move =5;
m0[61] = new Array(15,22,34,13);
m0[61].base = new Array(325,326,0);
m0[61].root =60;
m0[61].move =4;
m0[60] = new Array(27,44,51,3,6,15,45,30,15,23,30,13,23,22,13,7,22,23);
m0[60].base = new Array(320,321,322,323,324,327,328,329,330,0);
m0[60].root =56;
m0[60].move =9;
m0[62] = new Array(51,52,44,23,55,62,40,41);
m0[62].base = new Array(336,337,338,339,0);
m0[62].root =56;
m0[62].move =14;
m0[63] = new Array(34,39,40,41);
m0[63].base = new Array(340,341,0);
m0[63].root =56;
m0[63].move =14;
m0[64] = new Array(51,27,18,27,34,2,6,15,2,50,14,22);
m0[64].base = new Array(342,343,344,345,346,347,0);
m0[64].root =56;
m0[64].move =14;
m0[56] = new Array(53,44,28,31,55,62,31,47,63,27,21,27,35,45,47,46,62,63,38,45,52,45,46,45,63,55,45,44,51,43,44,53,55,63,40,48,43,51,48,51,41,51,53,51);
m0[56].base = new Array(296,297,298,299,300,301,316,317,318,319,331,332,333,334,335,348,349,350,351,352,353,354,0);
m0[56].root =55;
m0[56].move =1;
m0[65] = new Array(63,45,47,46,62,63);
m0[65].base = new Array(361,362,363,0);
m0[65].root =55;
m0[65].move =7;
m0[66] = new Array(27,44,51,3);
m0[66].base = new Array(367,368,0);
m0[66].root =55;
m0[66].move =10;
m0[67] = new Array(62,61,27,44);
m0[67].base = new Array(370,371,0);
m0[67].root =55;
m0[67].move =11;
m0[55] = new Array(10,28,25,18,9,18,53,44,28,31,55,62,31,47,63,27,21,27,35,45,47,46,62,63,38,45,52,45,46,45,63,55,45,44,34,18,40,41,18,2,6,15,2,29,15,23,58,18,14,22,18,22,13,22,29,5);
m0[55].base = new Array(294,295,355,356,357,358,359,360,364,365,366,369,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,0);
m0[55].root =54;
m0[55].move =1;
m0[54] = new Array(26,41,38,31,63,27);
m0[54].base = new Array(292,293,388,0);
m0[54].root =51;
m0[54].move =2;
m0[69] = new Array(10,28,53,44,28,31,55,62,31,47,63,27,47,46,62,63,46,47);
m0[69].base = new Array(391,392,393,394,395,396,397,398,399,0);
m0[69].root =68;
m0[69].move =1;
m0[68] = new Array(35,41,44,28);
m0[68].base = new Array(389,390,0);
m0[68].root =51;
m0[68].move =2;
m0[71] = new Array(62,61,38,47);
m0[71].base = new Array(407,408,0);
m0[71].root =70;
m0[71].move =6;
m0[70] = new Array(53,44,27,44,34,33,44,61,55,62,10,46,63,54,61,44);
m0[70].base = new Array(400,401,402,403,404,405,406,409,0);
m0[70].root =51;
m0[70].move =2;
m0[72] = new Array(44,46,53,46,21,31,58,62,27,44,34,58,40,42,58,60);
m0[72].base = new Array(411,412,413,414,415,416,417,418,0);
m0[72].root =51;
m0[72].move =3;
m0[73] = new Array(21,36,63,36,44,36,34,27,18,27,58,10,36,35,10,9,38,52,51,52,40,43,9,1,6,15,52,12);
m0[73].base = new Array(419,420,421,422,423,424,425,426,427,428,429,430,431,432,0);
m0[73].root =51;
m0[73].move =3;
m0[76] = new Array(53,46,10,46,55,63,46,47,63,62,18,27,34,50,44,46,62,53,46,54,53,60,47,63);
m0[76].base = new Array(438,439,440,441,442,443,444,445,446,447,448,449,0);
m0[76].root =75;
m0[76].move =1;
m0[78] = new Array(53,46,10,46,55,63);
m0[78].base = new Array(453,454,455,0);
m0[78].root =77;
m0[78].move =1;
m0[79] = new Array(43,37,10,37,55,62,37,23);
m0[79].base = new Array(456,457,458,459,0);
m0[79].root =77;
m0[79].move =1;
m0[77] = new Array(6,7,55,54);
m0[77].base = new Array(451,452,0);
m0[77].root =75;
m0[77].move =2;
m0[80] = new Array(34,26,5,13,55,62);
m0[80].base = new Array(461,462,463,0);
m0[80].root =75;
m0[80].move =3;
m0[75] = new Array(31,46,27,13,6,5,43,37,46,61,55,62);
m0[75].base = new Array(436,437,450,460,464,465,0);
m0[75].root =74;
m0[75].move =1;
m0[81] = new Array(53,46,10,46,55,63,46,47,63,62,18,27,34,50,31,37);
m0[81].base = new Array(467,468,469,470,471,472,473,474,0);
m0[81].root =74;
m0[81].move =2;
m0[82] = new Array(6,5,34,26,5,13,43,28,13,6,53,46);
m0[82].base = new Array(476,477,478,479,480,481,0);
m0[82].root =74;
m0[82].move =3;
m0[83] = new Array(53,37,10,12);
m0[83].base = new Array(483,484,0);
m0[83].root =74;
m0[83].move =4;
m0[74] = new Array(63,27,44,46,27,13,6,7,53,46,10,46,55,63);
m0[74].base = new Array(434,435,466,475,482,485,486,0);
m0[74].root =51;
m0[74].move =4;
m0[84] = new Array(44,46,27,28);
m0[84].base = new Array(488,489,0);
m0[84].root =51;
m0[84].move =5;
m0[85] = new Array(10,24,25,18,24,51,18,9,44,4,58,57,40,43,137,1,51,59,57,59,43,59,62,54,4,1,54,46,38,52,27,28,1,3,35,29);
m0[85].base = new Array(492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,0);
m0[85].root =51;
m0[85].move =7;
m0[87] = new Array(52,51,18,9);
m0[87].base = new Array(515,516,0);
m0[87].root =86;
m0[87].move =1;
m0[86] = new Array(25,18,9,18,51,52,38,52,27,28);
m0[86].base = new Array(513,514,517,518,519,0);
m0[86].root =51;
m0[86].move =10;
m0[51] = new Array(62,55,0,40,26,43,21,31,34,27,31,46,55,62,46,52,35,52,44,52,27,26,52,51,26,40,10,3,43,60,18,25,63,9);
m0[51].base = new Array(285,286,291,410,433,487,490,491,510,511,512,520,521,522,523,524,525,0);
m0[51].root =0;
m0[51].move =54;
m0[89] = new Array(53,46,10,46,63,54,27,44);
m0[89].base = new Array(529,530,531,532,0);
m0[89].root =88;
m0[89].move =2;
m0[88] = new Array(51,50,44,46,63,54,38,47,53,46,10,46,52,36,27,44);
m0[88].base = new Array(526,527,528,533,534,535,536,537,0);
m0[88].root =0;
m0[88].move =54;
m0[90] = new Array(53,44,10,46,63,54,27,44);
m0[90].base = new Array(538,539,540,541,0);
m0[90].root =0;
m0[90].move =54;
m0[92] = new Array(53,46,10,46,63,54,27,44);
m0[92].base = new Array(545,546,547,548,0);
m0[92].root =91;
m0[92].move =2;
m0[91] = new Array(25,18,44,46,63,54,27,44,53,44,38,47);
m0[91].base = new Array(542,543,544,549,550,551,0);
m0[91].root =0;
m0[91].move =54;
m0[93] = new Array(0,40);
m0[93].base = new Array(553,0);
m0[93].root =0;
m0[93].move =55;
m0[94] = new Array(25,34,9,25);
m0[94].base = new Array(557,558,0);
m0[94].root =0;
m0[94].move =58;
m0[95] = new Array(25,49,0,48);
m0[95].base = new Array(559,560,0);
m0[95].root =0;
m0[95].move =58;
m0[97] = new Array(62,55);
m0[97].base = new Array(564,0);
m0[97].root =96;
m0[97].move =1;
m0[96] = new Array(42,52,51,52,10,9,52,44);
m0[96].base = new Array(562,563,565,566,0);
m0[96].root =0;
m0[96].move =59;
m0[99] = new Array(61,52,45,46);
m0[99].base = new Array(577,578,0);
m0[99].root =98;
m0[99].move =6;
m0[98] = new Array(62,61,52,46,53,46,38,45,63,45,44,45,61,54,0,40,51,3,6,15,58,63,15,22,63,47,45,41);
m0[98].base = new Array(570,571,572,573,574,575,576,579,580,581,582,583,584,585,0);
m0[98].root =0;
m0[98].move =62;
m0[101] = new Array(63,45,52,58);
m0[101].base = new Array(589,590,0);
m0[101].root =100;
m0[101].move =1;
m0[100] = new Array(44,45,51,52,45,46,55,46,38,52);
m0[100].base = new Array(587,588,591,592,593,0);
m0[100].root =0;
m0[100].move =63;
m0[102] = new Array(51,3,0,3,53,44,3,27,58,34,52,46,63,54,46,61,55,62,27,59,54,61,38,45);
m0[102].base = new Array(595,596,597,598,599,600,601,602,603,604,605,606,0);
m0[102].root =0;
m0[102].move =64;
m0[104] = new Array(45,51,52,58);
m0[104].base = new Array(610,611,0);
m0[104].root =103;
m0[104].move =2;
m0[105] = new Array(55,54,45,60);
m0[105].base = new Array(614,615,0);
m0[105].root =103;
m0[105].move =4;
m0[103] = new Array(53,44,36,51,58,50,51,45,63,45,38,45);
m0[103].base = new Array(607,608,609,612,613,616,0);
m0[103].root =0;
m0[103].move =64;
m0[107] = new Array(53,44,36,51);
m0[107].base = new Array(620,621,0);
m0[107].root =106;
m0[107].move =1;
m0[109] = new Array(9,26,36,63);
m0[109].base = new Array(625,626,0);
m0[109].root =108;
m0[109].move =1;
m0[108] = new Array(45,36,53,44,36,63,55,63,52,46,63,54,46,36,51,3,0,3,9,3);
m0[108].base = new Array(623,624,627,628,629,630,631,632,633,634,0);
m0[108].root =106;
m0[108].move =2;
m0[110] = new Array(51,52,36,52,63,45,52,53);
m0[110].base = new Array(636,637,638,639,0);
m0[110].root =106;
m0[110].move =3;
m0[106] = new Array(38,45,34,36,44,36,63,45,52,42,45,36,42,36);
m0[106].base = new Array(618,619,622,635,640,641,642,0);
m0[106].root =0;
m0[106].move =65;
m0[112] = new Array(38,20);
m0[112].base = new Array(646,0);
m0[112].root =111;
m0[112].move =2;
m0[111] = new Array(36,51,45,51,44,43,9,26,43,51,63,0);
m0[111].base = new Array(643,644,645,647,648,649,0);
m0[111].root =0;
m0[111].move =65;
m0[113] = new Array(45,30,53,63);
m0[113].base = new Array(651,652,0);
m0[113].root =0;
m0[113].move =66;
m0[114] = new Array(9,19,38,20);
m0[114].base = new Array(653,654,0);
m0[114].root =0;
m0[114].move =66;
m0[116] = new Array(55,63,38,45,63,55,0,56);
m0[116].base = new Array(658,659,660,661,0);
m0[116].root =115;
m0[116].move =2;
m0[115] = new Array(34,50,53,63,51,52,44,52,50,52,38,45);
m0[115].base = new Array(655,656,657,662,663,664,0);
m0[115].root =0;
m0[115].move =66;
m0[117] = new Array(53,36,51,49,38,45,54,45,52,46);
m0[117].base = new Array(666,667,668,669,670,0);
m0[117].root =0;
m0[117].move =67;
m0[118] = new Array(38,45,54,45,44,45,51,52,53,59);
m0[118].base = new Array(671,672,673,674,675,0);
m0[118].root =0;
m0[118].move =67;
m0[119] = new Array(0,40);
m0[119].base = new Array(676,0);
m0[119].root =0;
m0[119].move =67;
m0[120] = new Array(0,16,51,3,6,15,45,30,15,22,3,27,13,29,30,47,38,47,54,47,53,47);
m0[120].base = new Array(677,678,679,680,681,682,683,684,685,686,687,0);
m0[120].root =0;
m0[120].move =67;
m0[121] = new Array(34,33,53,38,55,47,38,23,47,55,23,29);
m0[121].base = new Array(689,690,691,692,693,694,0);
m0[121].root =0;
m0[121].move =68;
m0[122] = new Array(55,63,0,56);
m0[122].base = new Array(697,698,0);
m0[122].root =0;
m0[122].move =70;
m0[123] = new Array(47,39,0,32);
m0[123].base = new Array(701,702,0);
m0[123].root =0;
m0[123].move =72;
m0[124] = new Array(54,45,28,45,55,54,45,51);
m0[124].base = new Array(705,706,707,708,0);
m0[124].root =0;
m0[124].move =74;
m0[125] = new Array(52,50,45,44);
m0[125].base = new Array(715,716,0);
m0[125].root =0;
m0[125].move =80;
m0[126] = new Array(50,35,52,53,35,45,53,45,20,27);
m0[126].base = new Array(718,719,720,721,722,0);
m0[126].root =0;
m0[126].move =81;
m0[0] = new Array(54,46,12,28,62,45,28,36,45,35,11,27,51,43,36,43,59,43,6,21,61,54,5,33,58,51,33,51,57,51,4,6,71,5,50,34,1,16,34,27,16,33,43,34,33,27,51,41,10,18,60,62,127,61,5,4,61,59,2,38,59,51,3,2,41,26,38,47,54,45,47,38,45,54,38,47,54,45,47,38,45,63,15,31,49,33,8,16,56,58,31,39,48,32,39,46,55,46,2,10,33,25,16,25,32,25,4,44,35,45,18,25,34,25,27,42,25,9,10,9,26,9,42,52,62,55,21,36,58,34,36,53,63,54,38,20,34,50,53,38,55,47,38,28,47,55,44,45,51,52,28,38,55,47,38,44,47,55,44,50,54,45,50,35);
m0[0].base = new Array(0,51,76,79,80,81,89,101,104,106,107,110,115,118,120,125,125,132,137,142,143,144,145,146,148,150,150,151,152,154,156,163,167,169,170,183,184,185,186,200,201,207,208,215,216,217,218,219,220,221,222,229,232,235,236,552,554,555,556,561,567,568,569,586,594,617,650,665,688,695,696,699,700,703,704,709,710,711,712,713,714,717,0);
m0[0].root =0;
m0[0].move =0;
var n0 = new Array();
var b0 = -1;
var pieces = "KQNBR ";
var pos_after = "Position after ";
var start_pos = "Startposition ";
function g0(a,b)
{	gm(m0,n0,0,b0,'bg_retialek1g0.htm',a,b);}
function MB_50()
{b0=MB_5(m0,n0,0,b0,'bg_retialek1g0.htm'); GMS(m0,n0,0,b0,'bg_retialek1g0.htm');}
function MB0()
{b0=MB(m0,n0,0,b0,'bg_retialek1g0.htm'); GMS(m0,n0,0,b0,'bg_retialek1g0.htm');}
function MF_50()
{b0=MF_5(m0,n0,0,b0,'bg_retialek1g0.htm'); GMS(m0,n0,0,b0,'bg_retialek1g0.htm');}
function MF0()
{b0=MF(m0,n0,0,b0,'bg_retialek1g0.htm',0); GMS(m0,n0,0,b0,'bg_retialek1g0.htm');}
var nMoves = new Array(0,0);
var nLevels = new Array(0,0);
var nNameCount = new Array(0,0);
var nOld = new Array(-1,-1);
baseName = 'bg_retialek1';
var EmptyWhitePath = "gif/w.gif";
var EmptyBlackPath = "gif/b.gif";
var gifPath  = 'gif/';
var BackColor = "#A0D4A0";
var leftWindow		= this;
var rightWindow		= this;
var bFrames = 0;
var leftDocument		= leftWindow.document;
var rightDocument	= rightWindow.document;
// Copyright 98,99,00,01 by ChessBase GmbH, Germany
function Init( path )
{ gifs = new Array(6);
	for ( var i=0; i< 26; i++)
		gifs[i]= new Image();
	gifs[0].src = path + "b.gif";
	gifs[1].src = path + "bbb.gif";
	gifs[2].src = path + "bbw.gif";
	gifs[3].src = path + "bkb.gif";
	gifs[4].src = path + "bkw.gif";
	gifs[5].src = path + "bqb.gif";
	gifs[6].src = path + "bqw.gif";
	gifs[7].src = path + "brb.gif";
	gifs[8].src = path + "brw.gif";
	gifs[9].src = path + "bnb.gif";
	gifs[10].src = path + "bnw.gif";
	gifs[11].src = path + "wbb.gif";
	gifs[12].src = path + "wbw.gif";
	gifs[13].src = path + "wrb.gif";
	gifs[14].src = path + "wrw.gif";
	gifs[15].src = path + "wqb.gif";
	gifs[16].src = path + "wqw.gif";
	gifs[17].src = path + "wkb.gif";
	gifs[18].src = path + "wkw.gif";
	gifs[19].src = path + "wnb.gif";
	gifs[20].src = path + "wnw.gif";
	gifs[21].src = path + "wpb.gif";
	gifs[22].src = path + "wpw.gif";
	gifs[23].src = path + "bpb.gif";
	gifs[24].src = path + "wpb.gif";
	gifs[25].src = path + "b.gif";
}
function SyncPicture( base, basename )
{	if ( base > -1 ) return base;
	for ( i=0; i < leftDocument.images.length; i++ )
	{	if ( leftDocument.images[i].name != "" )
			if ( leftDocument.images[i].name == basename )
				return i;
			else if ( leftDocument.images[i].name.substring(0,3) == basename.substring(0,3) )
				i+= 63;
	}
	return -1;
}
function MF_5( moves, names, nm, base, basename )
{	base = SyncPicture( base, basename );
	for ( i=0; nMoves[nm] < moves[nLevels[nm]].length / 2 && i < 10; i++ )
		MF( moves, names, nm, base, false );
	return base;
}
function MB_5( moves, names, nm, base, basename )
{	base = SyncPicture( base, basename );
	for ( i=0; ( nMoves[nm] > 0 || nLevels[nm] > 0 ) && i < 10; i++ )
		MB( moves, names, nm, base );
	return base;
}
function GoStart( moves, names, nm, base, basename )
{	base = SyncPicture( base, basename );
	while ( nMoves[nm] > 0 || nLevels[nm] > 0 )
		MB( moves, names, nm, base );
	return base;
}
function GoEnd( moves, names, nm, base, basename )
{	base = SyncPicture( base, basename );
	while ( nMoves[nm] < moves[nLevels[nm]].length / 2 )
		MF( moves, names, nm, base, false );
	return base;
}
function MF( moves, names, nm, base, basename, bCheckV )
{	base = SyncPicture( base, basename );
	if ( bCheckV )
	{	var b = false;
		for ( i=0; i < moves.length; i++ )
			if ( i != nLevels[nm] && moves[i].root == nLevels[nm] && moves[i].move == nMoves[nm] )
				b = true;
		if ( b )
		{	GenerateVarWindow(moves, names, nm, base, basename);
			return base;
		}
	}
	if ( nMoves[nm] < moves[nLevels[nm]].length / 2 )
	{	var n = nMoves[nm]*2;
		var from = moves[nLevels[nm]][ n ] & 0x3f;
		var to = moves[nLevels[nm]][ n+1 ] & 0x3f;
		names[ nNameCount[nm]   ] = leftDocument.images[ base + from ].src;
		names[ nNameCount[nm]+1 ] = leftDocument.images[ base + to ].src;
		var len = names[nNameCount[nm]].length;
		var nn = (Math.floor(( to / 8 )) + ( to % 8 ));
		var dest = ( nn % 2 ) == 1 ? "b" : "w";
		var piece = names[nNameCount[nm]].substring(len-6,len-5);
		if (( moves[nLevels[nm]][ n ] & 0x380 ) == 0x80 )
			piece = "q";
		else if (( moves[nLevels[nm]][ n ] & 0x380 ) == 0x100 )
			piece = "n";
		else if (( moves[nLevels[nm]][ n ] & 0x380 ) == 0x180 )
			piece = "b";
		else if (( moves[nLevels[nm]][ n ] & 0x380 ) == 0x200 )
			piece = "r";
		leftDocument.images[ base + to ].src = names[nNameCount[nm]].substring(0,len-6) + piece + dest + names[nNameCount[nm]].substring(len-4,len);
		nn = (Math.floor(( from / 8 )) + ( from % 8 ));
		if (( nn % 2 ) == 1 )
			leftDocument.images[ base + from ].src = EmptyBlackPath;
		else
			leftDocument.images[ base + from ].src = EmptyWhitePath;
		nMoves[nm]++;
		nNameCount[nm] = nNameCount[nm] + 2;
		if ( nMoves[nm] < moves[nLevels[nm]].length / 2 && ( moves[nLevels[nm]][ nMoves[nm]*2 ] & 0x40 ) == 0x40 )
			MF( moves, names, nm, base, bCheckV );
	}
	return base
}
function MB( moves, names, nm, base, basename )
{	base = SyncPicture( base, basename );
	if ( nMoves[nm] > 0 )
	{	nMoves[nm]--;
		nNameCount[nm] -= 2;
		var from = moves[nLevels[nm]][ nMoves[nm]*2 ] & 0x3f;
		var to = moves[nLevels[nm]][ nMoves[nm]*2+1 ] & 0x3f;
		leftDocument.images[ base + from ].src = names[ nNameCount[nm] ];
		leftDocument.images[ base + to ].src = names[ nNameCount[nm]+1 ];
		if (( moves[nLevels[nm]][ nMoves[nm]*2 ] & 0x40 ) == 0x40 )
			MB( moves, names, nm, base );
	}
	if ( nMoves[nm] == 0 )
		if ( nLevels[nm] > 0 )
		{	nMoves[nm] = moves[nLevels[nm]].move;
			nLevels[nm] = moves[nLevels[nm]].root;
			if (( moves[nLevels[nm]][nMoves[nm]*2] & 0x40 ) == 0x40 )
				nMoves[nm]--;
		}
	return base;
}
function GMS2(  moves, names, nm, base, nMoveNumber, nLevel, basename )
{	if ( nMoveNumber > 0 )
	{	var n = (nMoveNumber-1)*2;
		var off=1;
		for ( i=0; i <= n; i += 2 )
			if (( moves[nLevel][i] & 0x40 ) == 0x40 )
				off = off+1;
		var from = moves[nLevel][ n ] & 0x3f;
		var to = moves[nLevel][ n+1 ] & 0x3f;
		var len = leftDocument.images[ base + to ].src.length;
		var piece = leftDocument.images[ base + to ].src.substring(len-6,len-5);
		if ( piece == "q" )
			piece = pieces.substring(1,2);
		else if ( piece == "r" )
			piece = pieces.substring(4,5);
		else if ( piece == "b" )
			piece = pieces.substring(3,4);
		else if ( piece == "n" )
			piece = pieces.substring(2,3);
		else if ( piece ==  "k" )
			piece = pieces.substring(0,1);
		else piece = pieces.substring(5,6);
		var piece2 = "";
		if (( moves[nLevel][ n ] & 0x380 ) == 0x80 )
			piece2 = pieces.substring(1,2);
		else if (( moves[nLevel][ n ] & 0x380 ) == 0x100 )
			piece2 = pieces.substring(2,3);
		else if (( moves[nLevel][ n ] & 0x380 ) == 0x180 )
			piece2 = pieces.substring(3,4);
		else if (( moves[nLevel][ n ] & 0x380 ) == 0x200 )
			piece2 = pieces.substring(4,5);
		var lines = "abcdefgh";
		var rows = "87654321";
		var fromLine = from%8;
		var fromRow = Math.floor(from/8);
		var toLine = to%8;
		var toRow = Math.floor(to/8);
		var moveNumber = gmn( moves, nLevel ) + nMoveNumber-off;
		var result = (Math.floor((moveNumber)/2)+1).toString() + ". ";
		if ( leftDocument.images[ base + to ].src.substring(len-7,len-6) == "b" )
			result = result + "... ";
		if ( n >= 2 && (( moves[nLevel][n] & 0x40 ) == 0x40 ))
		{	if (( moves[nLevel][n-1] == 62 ) || ( moves[nLevel][n-1] == 6 ))
				result = result + "0-0"
			else if (( moves[nLevel][n-1] == 2 + 7 * 8 ) || ( moves[nLevel][n-1] == 2 + 0 * 8 ))
				result = result + "0-0-0"
			else
			{	var sep = "x";
				from = moves[nLevel][ n-2 ] & 0x3f;
				to = moves[nLevel][ n-1 ] & 0x3f;
				fromLine = from%8;
				fromRow = Math.floor(from/8);
				toLine = to%8;
				toRow = Math.floor(to/8);
				result = result	+ lines.substring( fromLine, fromLine+1 ) + rows.substring( fromRow, fromRow+1 )
										+ sep
										+ lines.substring( toLine, toLine+1 ) + rows.substring( toRow, toRow+1 )
										+ piece2 + " ep";
			}
		}
		else
		{	var len = names[ nNameCount[nm]-1 ].length;
			var substr = names[ nNameCount[nm]-1 ].substring( len-6, len );
			var sep = (( substr == "/w.gif" ) || ( substr == "\\w.gif" ) ||
						  ( substr == "/b.gif" ) || ( substr == "\\b.gif" )) ? "-" : "x";
			if ( piece2 != "" ) piece = "";
			result = result + piece.toUpperCase() + lines.substring( fromLine, fromLine+1 ) + rows.substring( fromRow, fromRow+1 )
				+ sep
				+ lines.substring( toLine, toLine+1 ) + rows.substring( toRow, toRow+1 )
				+ piece2;
		}
	}
	else
		result='';
	if (leftDocument.all)
	{	if ( bFrames )	name = 'i' + baseName + '0';
		else name = 'i' + baseName + nm;
		if ( result == '' )
			leftDocument.all.tags( "DIV" )[name].innerHTML = start_pos;
		else
			leftDocument.all.tags( "DIV" )[name].innerHTML = pos_after + result;
	}
	else if ( leftDocument.layers )
	{	var inx = nm;
		if ( bFrames ) inx = 0;
		leftDocument.layers[inx].document.layers[0].document.clear();
		if ( result == '' )
			var gesamt = "<center>" + start_pos + "</center>";
		else
			var gesamt = "<center>" + pos_after + " " + result + "</center>";
		leftDocument.layers[inx].document.layers[0].document.write(gesamt);
		leftDocument.layers[inx].document.layers[0].document.close();
	}
	return result;
}
function GMS( moves, names, nm, base, basename )
{	base = SyncPicture( base, basename );
	var nLevel = nLevels[nm];
	var nMoveNumber = nMoves[nm];
	if ( nMoveNumber >= 0 && nMoveNumber <= moves[nLevel].length / 2 )
	{	if ( leftDocument.all )
		{	if ( nOld[nm] != -1 )
				rightDocument.anchors[nOld[nm]].style.background=BackColor;
			if ( nMoveNumber > 0 )
			{	nOld[nm] = moves[nLevel].base[nMoveNumber-1];
				rightDocument.anchors[nOld[nm]].style.background="gray";
				with ( rightDocument )
					with ( all.tags("a")[nOld[nm]] )
					{	if ( parent.frames[1] && ( offsetTop > body.scrollTop + offsetParent.offsetHeight - offsetHeight || offsetTop < body.scrollTop ))
							rightWindow.scrollTo( 0, offsetTop - ( offsetParent.offsetHeight / 2 ) );
					}
			}
			else
				nOld[nm] = -1;
		}
		return GMS2( moves, names, nm, base, nMoveNumber, nLevel, basename );
	}
	else
		return "??";
}
function gm( moves, names, nm, base, basename, n, m )
{	base = SyncPicture( base, basename );
	GoStart(moves,names,nm,base,basename );
	gm_sub( moves,names,nm,base,basename,n,m);
	GMS( moves, names, nm, base, basename );
}
function gmn( moves, m )
{	if ( m > 0 )
	{	var off=0;
		var n2 = moves[m].move;
		var m2 = moves[m].root;
		for ( i=0; i <= n2*2; i += 2 )
			if (( moves[m2][i] & 0x40 ) == 0x40 )
				off = off+1;
		return gmn( moves, m2 ) + ( n2 - off );
	}
	return 0;
}
function gm_sub( moves, names, nm, base, basename, n, m )
{	if ( m > 0 )
	{	var off=0;
		var n2 = moves[m].move;
		var m2 = moves[m].root;
		for ( i=0; i <= n2*2; i += 2 )
			if (( moves[m2][i] & 0x40 ) == 0x40 )
				off = off+1;
		gm_sub( moves,names,nm,base, basename, n2-off, m2  );
	}
	nLevels[nm]=m;
	nMoves[nm]=0;
	for ( i=0; i < n; i++ )
		MF(moves,names,nm,base,basename, false);
}

