diff options
Diffstat (limited to 'Software/Stubs Collection/stubs/Scripts')
37 files changed, 58847 insertions, 5657 deletions
diff --git a/Software/Stubs Collection/stubs/Scripts/Assemblies/ArcHead/clean_motor_ls.cs b/Software/Stubs Collection/stubs/Scripts/Assemblies/ArcHead/clean_motor_ls.cs new file mode 100644 index 000000000..2a0fc12cf --- /dev/null +++ b/Software/Stubs Collection/stubs/Scripts/Assemblies/ArcHead/clean_motor_ls.cs @@ -0,0 +1,278 @@ +using System; +using System.Text; +using System.Linq; +using System.Drawing; +using System.Diagnostics; +using System.Windows.Forms; +using System.Threading; +using System.Threading.Tasks; +using System.Collections.Generic; +using Tango.PMR.Stubs; +using Tango.Stubs; + + +const Int32 LS_FRONT=0X460110; +const Int32 LS_REAR=0X460120; +const Int32 LS_UPPER=0X460140; +const Int32 LS_SPARE=0X460180; + +const Int32 DyeingHeadLid_Motor = 2; + +const Int32 F1_MOTO_DH_LID_A1_TX_00 = 0x600002F0 ; +const Int32 F1_MOTO_DH_LID_A1_TX_01 = 0x600002F2 ; +const Int32 F1_MOTO_DH_LID_A1_RX_00 = 0x600002F4 ; +const Int32 F1_MOTO_DH_LID_A1_RX_01 = 0x600002F6 ; + +//---------------------Start Command ---------------- +const Int32 CMD_RUN = 0; //Run on Pulse Per Secound .positive run Up and negative run Down +const Int32 CMD_STOP= 1; //0;Hard stop(Defualt);1-Soft stop;2-Hard Hiz;3-Soft Hiz +const Int32 CMD_HOME= 2; //Run until home .positive run Up and negative run Down +const Int32 CMD_DLY = 3; //delay in Seconds . +const Int32 CMD_MOVE= 4; //Move step. positive move Up and negative move Down +const Int32 CMD_MAX_SPEED = 5; //set Maximum speed.motor will stop before that command + +const Int32 CMD_LOOP_NM=6; //NUMBER OF counter +const Int32 CMD_LOOP= 7; //jump up(+) or down(-) command u +const Int32 CMD_END = 13; //end loop . + + +const Int32 x_STEP_MODE = 0x16; +const Int32 x_STATUS = 0x19; +const Int32 x_GET_PARAM = 0x20; +const Int32 x_POWERSTEP01_STATUS = 0x1B; + + +//-------------------------------------------- Flow Test Double PBU ------------------------------------------------ + +Int32[] Start_Table = new int [] +{ + CMD_RUN,-40, + CMD_DLY,200, + CMD_STOP,0, + CMD_DLY,10, + CMD_HOME,40, + CMD_END,3, +}; + +//////////////////////////////////// + +public void OnExecute(StubManager stubManager) +{ +Int32 COMMAND=0; +Int32 Data=0; +Int32 Index=0; +Int32 speed=0; +Int32 Loop_cnt=1; +Int32 j=0; + + + + var stopwatch = new Stopwatch(); + stopwatch.Start(); + + long elapsed_time = stopwatch.ElapsedMilliseconds; + stubManager.WriteLine(elapsed_time); + + while (j!=-1) + { + { + COMMAND=Start_Table[j]; + Data=Start_Table[j+1]; + + switch (COMMAND) + { + case CMD_RUN: + stubManager.WriteLine("CMD_RUN"); + Motor_Run(Data); + break; + + case CMD_STOP: + stubManager.WriteLine("CMD_stop"); + Motor_Stop(Data); + break; + + case CMD_DLY: + stubManager.WriteLine("CMD_delay"); + + for (;Data>0;Data--) + { + Thread.Sleep(100); //100msec delay + stubManager.WriteLine("CMD_delay " + Data ); + } + break; + + + case CMD_MOVE: + stubManager.WriteLine("CMD_move"); + + Motor_Move(Data); + break; + + case CMD_END: + stubManager.WriteLine("CMD_end"); + + j=-3; + break; + + case CMD_MAX_SPEED: + stubManager.WriteLine("CMD_MAX_SPEED"); + + Motor_Max_speed(Data); + break; + + case CMD_HOME: + stubManager.WriteLine("CMD_home"); + + Move_Home(Data); + break; + + + case CMD_LOOP_NM: + stubManager.WriteLine("LOOP_NM" + Data ); + + Loop_cnt=Data-1; + break; + + case CMD_LOOP: + stubManager.WriteLine("CMD_loop"); + + if (Loop_cnt!=0) + { + j = j+2*Data; + Loop_cnt-- ; + } + break; + + default: + break; + + } + + j = j + 2; + + + } + + } + +} +Int32 Motor_Max_speed(Int32 speed) +{ + UInt32 i=Convert.ToUInt32((speed *4/61)*256*256 ) ; + stubManager.WriteHex(i,8); + + stubManager.Run<StubMotorStopResponse>("StubMotorStopRequest" ,DyeingHeadLid_Motor,0); //hold motor + + + Motor_SetParam(F1_MOTO_DH_LID_A1_TX_01,F1_MOTO_DH_LID_A1_TX_00,0x07,i); //set max speed + + return 1; +} + + +int Motor_SetParam(Int32 HighAdr, Int32 LowAdr, Int32 ParaAddr, uint ParaData1) +{ + + Int32 Temp = 0; + Temp = (ParaAddr << 8 ) + ( (Int32) ParaData1 >> 24); + + stubManager.Run<StubFpgaWriteRegResponse>("StubFpgaWriteRegRequest" ,HighAdr, (Temp & 0xffff)); + Temp = ((Int32)ParaData1 >> 8) & 0xffff; + stubManager.Run<StubFpgaWriteRegResponse>("StubFpgaWriteRegRequest" ,LowAdr, (Temp)); + + return 1; +} + +Int32 Move_Home(Int32 speed) +{ + Int32 Bit = 1; + if (speed <0 ) + stubManager.Run<StubMotorRunResponse>("StubMotorRunRequest" ,DyeingHeadLid_Motor, false, (-speed) ); + else + stubManager.Run<StubMotorRunResponse>("StubMotorRunRequest" ,DyeingHeadLid_Motor, true, speed); + int i=0; + while ((Bit != 0x0)&& (i<20000) ) //wait until Limit Switch or timeout 200*50msec=10sec + { + Bit=read_pio (LS_FRONT); // read LS_FRONT + Thread.Sleep(20); + i++; + } + stubManager.Run<StubMotorStopResponse>("StubMotorStopRequest" ,DyeingHeadLid_Motor,0); //hold motor + return 0; +} + +Int32 read_pio(Int32 i2c_input) +{ + Int32 temp=0; + var response = stubManager.Run<ProgressResponse>("ProgressRequest" ,0x0EAD,i2c_input); // read break + + temp = (Int32) (response.Progress); + stubManager.WriteHex(temp, 4); + stubManager.WriteLine(" "); + temp =temp & (i2c_input& 0xff); //if break ok + + return temp; +} + + + +////////////////////////////////////////////////////////////// +Int32 Motor_Move (Int32 position) + + { + Int32 x=16; + var response = stubManager.Run<StubMotorResponse>("StubMotorRequest" ,DyeingHeadLid_Motor, (x_GET_PARAM | x_STEP_MODE)<<8, 0, 0); + + response.RecivedData=response.RecivedData & 0x0007; + if (response.RecivedData == 0) + x=1; + if (response.RecivedData == 1) + x=2; + if (response.RecivedData == 2) + x=4; + if (response.RecivedData == 3) + x=8; + + + int i=0; + if (position<0 ) + stubManager.Run<StubMotorMovResponse>("StubMotorMovRequest" ,DyeingHeadLid_Motor, false, (-position * x) ); + else + stubManager.Run<StubMotorMovResponse>("StubMotorMovRequest" ,DyeingHeadLid_Motor, true, position * x); + + Thread.Sleep(100); //100msec delay + + while (i==0) + { + response = stubManager.Run<StubMotorResponse>("StubMotorRequest" ,DyeingHeadLid_Motor, (x_GET_PARAM | x_POWERSTEP01_STATUS)<<16, 0, 0); + + stubManager.WriteHex(response.RecivedData,4); + response.RecivedData=response.RecivedData & 0x0002; + if (response.RecivedData==0x0002) + i=1; + Thread.Sleep(100); //100msec delay + + + } + return 0; + } + +////////////////////////////////////////////////////////////// +Int32 Motor_Run (Int32 speed) + + { + if (speed<0 ) + stubManager.Run<StubMotorRunResponse>("StubMotorRunRequest" ,DyeingHeadLid_Motor, false, (-speed) ); + else + stubManager.Run<StubMotorRunResponse>("StubMotorRunRequest" ,DyeingHeadLid_Motor, true, speed); + return 0; + } + +//--------------------------------------- + + Int32 Motor_Stop(Int32 Stop_Value ) +{ + stubManager.Run<StubMotorStopResponse>("StubMotorStopRequest" ,DyeingHeadLid_Motor, Stop_Value); + return 1; +} + diff --git a/Software/Stubs Collection/stubs/Scripts/Assemblies/Dryer/Blowe_RMO_LOG.CSV b/Software/Stubs Collection/stubs/Scripts/Assemblies/Dryer/Blowe_RMO_LOG.CSV index 414b0f976..c6461ea3e 100644 --- a/Software/Stubs Collection/stubs/Scripts/Assemblies/Dryer/Blowe_RMO_LOG.CSV +++ b/Software/Stubs Collection/stubs/Scripts/Assemblies/Dryer/Blowe_RMO_LOG.CSV @@ -1,5401 +1,2 @@ ,RPM 0,2688 -1,2688 -2,2675 -3,2688 -4,2688 -5,2688 -6,2688 -7,2688 -8,2688 -9,2688 -10,2688 -11,2688 -12,2700 -13,2688 -14,2675 -15,2688 -16,2688 -17,2688 -18,2688 -19,2688 -20,2688 -21,2688 -22,2688 -23,2675 -24,2688 -25,2688 -26,2688 -27,2688 -28,2688 -29,2688 -30,2688 -31,2688 -32,2688 -33,2688 -34,2688 -35,2688 -36,2688 -37,2688 -38,2688 -39,2675 -40,2688 -41,2688 -42,2688 -43,2675 -44,2688 -45,2688 -46,2688 -47,2688 -48,2688 -49,2688 -50,2688 -51,2688 -52,2688 -53,2688 -54,2688 -55,2688 -56,2675 -57,2675 -58,2688 -59,2688 -60,2688 -61,2688 -62,2688 -63,2688 -64,2688 -65,2675 -66,2688 -67,2688 -68,2688 -69,2688 -70,2675 -71,2688 -72,2688 -73,2688 -74,2688 -75,2688 -76,2688 -77,2688 -78,2688 -79,2688 -80,2688 -81,2688 -82,2688 -83,2688 -84,2688 -85,2688 -86,2688 -87,2688 -88,2688 -89,2688 -90,2688 -91,2688 -92,2688 -93,2688 -94,2675 -95,2688 -96,2688 -97,2688 -98,2688 -99,2688 -100,2688 -101,2688 -102,2688 -103,2688 -104,2688 -105,2688 -106,2688 -107,2688 -108,2688 -109,2688 -110,2688 -111,2688 -112,2688 -113,2688 -114,2675 -115,2688 -116,2688 -117,2688 -118,2675 -119,2688 -120,2688 -121,2675 -122,2688 -123,2688 -124,2688 -125,2688 -126,2688 -127,2688 -128,2688 -129,2688 -130,2688 -131,2675 -132,2688 -133,2688 -134,2688 -135,2688 -136,2688 -137,2688 -138,2688 -139,2688 -140,2688 -141,2688 -142,2688 -143,2688 -144,2688 -145,2688 -146,2688 -147,2688 -148,2688 -149,2688 -150,2675 -151,2688 -152,2688 -153,2675 -154,2688 -155,2688 -156,2688 -157,2688 -158,2688 -159,2675 -160,2688 -161,2688 -162,2688 -163,2688 -164,2675 -165,2688 -166,2688 -167,2688 -168,2688 -169,2688 -170,2688 -171,2688 -172,2688 -173,2688 -174,2688 -175,2675 -176,2688 -177,2688 -178,2688 -179,2688 -180,2688 -181,2675 -182,2688 -183,2688 -184,2688 -185,2688 -186,2688 -187,2675 -188,2675 -189,2688 -190,2688 -191,2688 -192,2688 -193,2675 -194,2688 -195,2688 -196,2688 -197,2688 -198,2675 -199,2688 -200,2688 -201,2700 -202,2688 -203,2688 -204,2688 -205,2688 -206,2675 -207,2688 -208,2675 -209,2688 -210,2675 -211,2688 -212,2688 -213,2675 -214,2688 -215,2688 -216,2688 -217,2688 -218,2675 -219,2688 -220,2688 -221,2688 -222,2688 -223,2688 -224,2688 -225,2688 -226,2675 -227,2688 -228,2688 -229,2675 -230,2688 -231,2675 -232,2688 -233,2688 -234,2688 -235,2688 -236,2688 -237,2688 -238,2688 -239,2688 -240,2688 -241,2688 -242,2688 -243,2688 -244,2688 -245,2688 -246,2688 -247,2688 -248,2688 -249,2688 -250,2675 -251,2688 -252,2688 -253,2688 -254,2688 -255,2688 -256,2675 -257,2688 -258,2688 -259,2688 -260,2688 -261,2688 -262,2688 -263,2688 -264,2688 -265,2688 -266,2688 -267,2688 -268,2688 -269,2688 -270,2688 -271,2688 -272,2688 -273,2688 -274,2688 -275,2688 -276,2688 -277,2688 -278,2688 -279,2688 -280,2688 -281,2688 -282,2688 -283,2688 -284,2675 -285,2675 -286,2688 -287,2688 -288,2688 -289,2688 -290,2688 -291,2688 -292,2688 -293,2688 -294,2688 -295,2688 -296,2675 -297,2688 -298,2688 -299,2688 -300,2688 -301,2688 -302,2688 -303,2688 -304,2688 -305,2688 -306,2688 -307,2688 -308,2688 -309,2688 -310,2675 -311,2688 -312,2688 -313,2688 -314,2675 -315,2688 -316,2688 -317,2688 -318,2688 -319,2688 -320,2688 -321,2688 -322,2688 -323,2688 -324,2688 -325,2688 -326,2688 -327,2688 -328,2688 -329,2688 -330,2688 -331,2688 -332,2688 -333,2688 -334,2700 -335,2688 -336,2688 -337,2688 -338,2688 -339,2688 -340,2700 -341,2688 -342,2688 -343,2688 -344,2688 -345,2700 -346,2688 -347,2675 -348,2688 -349,2688 -350,2675 -351,2688 -352,2688 -353,2688 -354,2688 -355,2688 -356,2688 -357,2688 -358,2688 -359,2688 -360,2688 -361,2688 -362,2688 -363,2688 -364,2688 -365,2688 -366,2688 -367,2688 -368,2688 -369,2688 -370,2688 -371,2675 -372,2700 -373,2688 -374,2688 -375,2675 -376,2688 -377,2688 -378,2688 -379,2688 -380,2688 -381,2688 -382,2688 -383,2688 -384,2688 -385,2688 -386,2688 -387,2688 -388,2688 -389,2675 -390,2688 -391,2688 -392,2675 -393,2688 -394,2688 -395,2688 -396,2700 -397,2688 -398,2688 -399,2688 -400,2688 -401,2688 -402,2688 -403,2688 -404,2688 -405,2688 -406,2688 -407,2688 -408,2688 -409,2688 -410,2688 -411,2688 -412,2688 -413,2688 -414,2688 -415,2688 -416,2688 -417,2688 -418,2688 -419,2688 -420,2688 -421,2688 -422,2688 -423,2688 -424,2688 -425,2688 -426,2688 -427,2688 -428,2688 -429,2675 -430,2700 -431,2675 -432,2688 -433,2688 -434,2688 -435,2688 -436,2688 -437,2688 -438,2688 -439,2688 -440,2688 -441,2688 -442,2675 -443,2688 -444,2688 -445,2688 -446,2688 -447,2688 -448,2675 -449,2675 -450,2675 -451,2688 -452,2688 -453,2688 -454,2688 -455,2688 -456,2688 -457,2688 -458,2688 -459,2688 -460,2688 -461,2688 -462,2688 -463,2688 -464,2688 -465,2688 -466,2688 -467,2688 -468,2688 -469,2688 -470,2688 -471,2688 -472,2688 -473,2688 -474,2688 -475,2688 -476,2688 -477,2675 -478,2688 -479,2688 -480,2688 -481,2688 -482,2688 -483,2688 -484,2688 -485,2688 -486,2688 -487,2688 -488,2688 -489,2688 -490,2688 -491,2688 -492,2688 -493,2688 -494,2688 -495,2688 -496,2688 -497,2688 -498,2688 -499,2688 -500,2675 -501,2688 -502,2675 -503,2688 -504,2688 -505,2688 -506,2688 -507,2688 -508,2688 -509,2688 -510,2688 -511,2688 -512,2688 -513,2688 -514,2688 -515,2688 -516,2700 -517,2688 -518,2688 -519,2688 -520,2688 -521,2688 -522,2688 -523,2688 -524,2675 -525,2688 -526,2688 -527,2675 -528,2688 -529,2675 -530,2688 -531,2688 -532,2688 -533,2688 -534,2688 -535,2688 -536,2688 -537,2688 -538,2688 -539,2688 -540,2688 -541,2688 -542,2688 -543,2688 -544,2688 -545,2688 -546,2688 -547,2688 -548,2688 -549,2688 -550,2688 -551,2688 -552,2688 -553,2688 -554,2688 -555,2688 -556,2688 -557,2675 -558,2688 -559,2688 -560,2700 -561,2688 -562,2688 -563,2688 -564,2688 -565,2688 -566,2688 -567,2688 -568,2675 -569,2688 -570,2688 -571,2688 -572,2688 -573,2688 -574,2688 -575,2688 -576,2688 -577,2688 -578,2688 -579,2688 -580,2688 -581,2688 -582,2675 -583,2675 -584,2688 -585,2675 -586,2688 -587,2688 -588,2688 -589,2688 -590,2688 -591,2688 -592,2688 -593,2688 -594,2688 -595,2688 -596,2688 -597,2688 -598,2688 -599,2688 -600,2688 -601,2675 -602,2688 -603,2688 -604,2688 -605,2688 -606,2688 -607,2688 -608,2688 -609,2688 -610,2688 -611,2688 -612,2688 -613,2688 -614,2688 -615,2688 -616,2688 -617,2688 -618,2688 -619,2688 -620,2688 -621,2688 -622,2688 -623,2688 -624,2675 -625,2688 -626,2688 -627,2688 -628,2688 -629,2675 -630,2688 -631,2675 -632,2688 -633,2688 -634,2688 -635,2675 -636,2675 -637,2688 -638,2688 -639,2688 -640,2688 -641,2688 -642,2688 -643,2688 -644,2688 -645,2688 -646,2688 -647,2675 -648,2688 -649,2688 -650,2688 -651,2688 -652,2688 -653,2675 -654,2688 -655,2688 -656,2688 -657,2688 -658,2688 -659,2688 -660,2688 -661,2688 -662,2688 -663,2688 -664,2688 -665,2675 -666,2688 -667,2675 -668,2688 -669,2688 -670,2688 -671,2688 -672,2688 -673,2688 -674,2688 -675,2688 -676,2675 -677,2688 -678,2688 -679,2688 -680,2675 -681,2675 -682,2688 -683,2688 -684,2688 -685,2688 -686,2688 -687,2688 -688,2688 -689,2688 -690,2688 -691,2688 -692,2688 -693,2688 -694,2688 -695,2688 -696,2688 -697,2688 -698,2688 -699,2688 -700,2688 -701,2688 -702,2688 -703,2688 -704,2688 -705,2688 -706,2688 -707,2675 -708,2688 -709,2688 -710,2688 -711,2688 -712,2688 -713,2675 -714,2688 -715,2688 -716,2688 -717,2675 -718,2688 -719,2688 -720,2688 -721,2688 -722,2688 -723,2688 -724,2688 -725,2688 -726,2688 -727,2688 -728,2675 -729,2688 -730,2688 -731,2688 -732,2675 -733,2675 -734,2675 -735,2688 -736,2688 -737,2675 -738,2688 -739,2688 -740,2688 -741,2688 -742,2688 -743,2688 -744,2688 -745,2688 -746,2688 -747,2688 -748,2688 -749,2688 -750,2688 -751,2688 -752,2688 -753,2688 -754,2688 -755,2688 -756,2688 -757,2688 -758,2688 -759,2688 -760,2688 -761,2688 -762,2688 -763,2688 -764,2688 -765,2675 -766,2688 -767,2688 -768,2688 -769,2688 -770,2688 -771,2688 -772,2688 -773,2688 -774,2688 -775,2675 -776,2688 -777,2688 -778,2688 -779,2688 -780,2700 -781,2688 -782,2688 -783,2688 -784,2688 -785,2688 -786,2688 -787,2688 -788,2688 -789,2675 -790,2688 -791,2688 -792,2688 -793,2688 -794,2688 -795,2688 -796,2675 -797,2688 -798,2688 -799,2688 -800,2675 -801,2688 -802,2688 -803,2688 -804,2688 -805,2675 -806,2688 -807,2688 -808,2688 -809,2688 -810,2688 -811,2688 -812,2688 -813,2688 -814,2688 -815,2688 -816,2688 -817,2688 -818,2688 -819,2688 -820,2688 -821,2688 -822,2688 -823,2688 -824,2675 -825,2688 -826,2688 -827,2688 -828,2688 -829,2688 -830,2688 -831,2675 -832,2688 -833,2688 -834,2688 -835,2688 -836,2688 -837,2688 -838,2688 -839,2688 -840,2688 -841,2688 -842,2688 -843,2688 -844,2675 -845,2688 -846,2675 -847,2688 -848,2688 -849,2675 -850,2688 -851,2688 -852,2688 -853,2688 -854,2688 -855,2688 -856,2688 -857,2688 -858,2688 -859,2688 -860,2688 -861,2688 -862,2688 -863,2688 -864,2688 -865,2688 -866,2688 -867,2688 -868,2688 -869,2675 -870,2688 -871,2688 -872,2688 -873,2688 -874,2688 -875,2688 -876,2688 -877,2688 -878,2688 -879,2688 -880,2688 -881,2688 -882,2700 -883,2688 -884,2675 -885,2688 -886,2675 -887,2688 -888,2688 -889,2688 -890,2688 -891,2688 -892,2688 -893,2688 -894,2688 -895,2688 -896,2688 -897,2688 -898,2688 -899,2675 -900,2688 -901,2688 -902,2675 -903,2688 -904,2688 -905,2688 -906,2675 -907,2688 -908,2688 -909,2688 -910,2688 -911,2688 -912,2688 -913,2688 -914,2688 -915,2675 -916,2688 -917,2675 -918,2688 -919,2688 -920,2688 -921,2688 -922,2675 -923,2688 -924,2688 -925,2688 -926,2688 -927,2688 -928,2688 -929,2688 -930,2688 -931,2688 -932,2675 -933,2688 -934,2688 -935,2688 -936,2688 -937,2688 -938,2688 -939,2688 -940,2688 -941,2688 -942,2688 -943,2688 -944,2675 -945,2688 -946,2688 -947,2688 -948,2688 -949,2688 -950,2688 -951,2688 -952,2688 -953,2688 -954,2688 -955,2688 -956,2688 -957,2688 -958,2688 -959,2688 -960,2688 -961,2688 -962,2688 -963,2688 -964,2688 -965,2688 -966,2688 -967,2688 -968,2688 -969,2675 -970,2688 -971,2688 -972,2688 -973,2688 -974,2688 -975,2688 -976,2688 -977,2688 -978,2688 -979,2688 -980,2675 -981,2688 -982,2688 -983,2688 -984,2688 -985,2688 -986,2688 -987,2688 -988,2688 -989,2688 -990,2688 -991,2688 -992,2688 -993,2688 -994,2688 -995,2688 -996,2688 -997,2688 -998,2688 -999,2688 -1000,2688 -1001,2688 -1002,2688 -1003,2688 -1004,2688 -1005,2688 -1006,2688 -1007,2688 -1008,2688 -1009,2688 -1010,2688 -1011,2688 -1012,2688 -1013,2688 -1014,2688 -1015,2675 -1016,2688 -1017,2688 -1018,2688 -1019,2675 -1020,2675 -1021,2688 -1022,2675 -1023,2675 -1024,2688 -1025,2688 -1026,2675 -1027,2688 -1028,2688 -1029,2688 -1030,2688 -1031,2688 -1032,2688 -1033,2688 -1034,2688 -1035,2688 -1036,2688 -1037,2688 -1038,2688 -1039,2688 -1040,2688 -1041,2688 -1042,2688 -1043,2688 -1044,2688 -1045,2688 -1046,2688 -1047,2688 -1048,2688 -1049,2688 -1050,2688 -1051,2688 -1052,2688 -1053,2688 -1054,2688 -1055,2675 -1056,2688 -1057,2688 -1058,2688 -1059,2675 -1060,2675 -1061,2688 -1062,2675 -1063,2688 -1064,2688 -1065,2688 -1066,2688 -1067,2688 -1068,2688 -1069,2688 -1070,2675 -1071,2688 -1072,2688 -1073,2688 -1074,2688 -1075,2688 -1076,2688 -1077,2688 -1078,2688 -1079,2688 -1080,2688 -1081,2688 -1082,2688 -1083,2688 -1084,2675 -1085,2688 -1086,2688 -1087,2688 -1088,2688 -1089,2688 -1090,2688 -1091,2688 -1092,2688 -1093,2688 -1094,2688 -1095,2688 -1096,2688 -1097,2688 -1098,2688 -1099,2688 -1100,2675 -1101,2688 -1102,2688 -1103,2688 -1104,2688 -1105,2675 -1106,2688 -1107,2688 -1108,2675 -1109,2688 -1110,2688 -1111,2688 -1112,2688 -1113,2688 -1114,2688 -1115,2675 -1116,2688 -1117,2688 -1118,2688 -1119,2688 -1120,2688 -1121,2688 -1122,2688 -1123,2688 -1124,2688 -1125,2688 -1126,2688 -1127,2688 -1128,2688 -1129,2688 -1130,2688 -1131,2688 -1132,2688 -1133,2688 -1134,2688 -1135,2675 -1136,2688 -1137,2688 -1138,2688 -1139,2688 -1140,2688 -1141,2688 -1142,2688 -1143,2688 -1144,2688 -1145,2688 -1146,2688 -1147,2688 -1148,2675 -1149,2688 -1150,2688 -1151,2688 -1152,2688 -1153,2688 -1154,2688 -1155,2688 -1156,2688 -1157,2688 -1158,2688 -1159,2688 -1160,2688 -1161,2688 -1162,2688 -1163,2688 -1164,2688 -1165,2688 -1166,2688 -1167,2675 -1168,2688 -1169,2688 -1170,2688 -1171,2688 -1172,2688 -1173,2688 -1174,2688 -1175,2688 -1176,2675 -1177,2688 -1178,2675 -1179,2675 -1180,2688 -1181,2688 -1182,2688 -1183,2688 -1184,2688 -1185,2688 -1186,2688 -1187,2675 -1188,2688 -1189,2688 -1190,2675 -1191,2688 -1192,2675 -1193,2688 -1194,2688 -1195,2688 -1196,2688 -1197,2688 -1198,2688 -1199,2688 -1200,2688 -1201,2688 -1202,2688 -1203,2688 -1204,2688 -1205,2688 -1206,2688 -1207,2675 -1208,2688 -1209,2688 -1210,2688 -1211,2688 -1212,2688 -1213,2688 -1214,2688 -1215,2688 -1216,2688 -1217,2688 -1218,2688 -1219,2688 -1220,2688 -1221,2688 -1222,2688 -1223,2700 -1224,2688 -1225,2688 -1226,2688 -1227,2675 -1228,2688 -1229,2688 -1230,2688 -1231,2688 -1232,2688 -1233,2688 -1234,2688 -1235,2688 -1236,2688 -1237,2688 -1238,2688 -1239,2688 -1240,2675 -1241,2688 -1242,2688 -1243,2688 -1244,2688 -1245,2675 -1246,2675 -1247,2688 -1248,2688 -1249,2688 -1250,2688 -1251,2688 -1252,2688 -1253,2688 -1254,2675 -1255,2688 -1256,2688 -1257,2700 -1258,2688 -1259,2688 -1260,2688 -1261,2688 -1262,2688 -1263,2688 -1264,2688 -1265,2688 -1266,2688 -1267,2688 -1268,2688 -1269,2688 -1270,2688 -1271,2688 -1272,2688 -1273,2688 -1274,2688 -1275,2675 -1276,2688 -1277,2688 -1278,2688 -1279,2688 -1280,2688 -1281,2688 -1282,2688 -1283,2688 -1284,2675 -1285,2688 -1286,2688 -1287,2675 -1288,2688 -1289,2688 -1290,2688 -1291,2688 -1292,2688 -1293,2688 -1294,2675 -1295,2688 -1296,2688 -1297,2688 -1298,2688 -1299,2688 -1300,2688 -1301,2688 -1302,2688 -1303,2688 -1304,2688 -1305,2688 -1306,2688 -1307,2688 -1308,2688 -1309,2688 -1310,2675 -1311,2688 -1312,2688 -1313,2700 -1314,2688 -1315,2675 -1316,2688 -1317,2688 -1318,2688 -1319,2688 -1320,2688 -1321,2688 -1322,2675 -1323,2688 -1324,2688 -1325,2688 -1326,2688 -1327,2688 -1328,2688 -1329,2688 -1330,2688 -1331,2688 -1332,2688 -1333,2688 -1334,2688 -1335,2688 -1336,2688 -1337,2688 -1338,2688 -1339,2688 -1340,2688 -1341,2688 -1342,2688 -1343,2688 -1344,2688 -1345,2688 -1346,2688 -1347,2688 -1348,2688 -1349,2688 -1350,2688 -1351,2688 -1352,2675 -1353,2688 -1354,2675 -1355,2688 -1356,2688 -1357,2688 -1358,2688 -1359,2688 -1360,2688 -1361,2688 -1362,2688 -1363,2688 -1364,2688 -1365,2688 -1366,2675 -1367,2675 -1368,2675 -1369,2688 -1370,2675 -1371,2688 -1372,2688 -1373,2688 -1374,2688 -1375,2688 -1376,2688 -1377,2688 -1378,2688 -1379,2688 -1380,2688 -1381,2688 -1382,2688 -1383,2688 -1384,2688 -1385,2688 -1386,2688 -1387,2688 -1388,2688 -1389,2688 -1390,2688 -1391,2688 -1392,2688 -1393,2688 -1394,2688 -1395,2688 -1396,2675 -1397,2688 -1398,2688 -1399,2688 -1400,2675 -1401,2688 -1402,2688 -1403,2688 -1404,2688 -1405,2688 -1406,2688 -1407,2688 -1408,2688 -1409,2688 -1410,2700 -1411,2688 -1412,2675 -1413,2688 -1414,2688 -1415,2688 -1416,2700 -1417,2688 -1418,2688 -1419,2688 -1420,2688 -1421,2688 -1422,2688 -1423,2688 -1424,2688 -1425,2688 -1426,2688 -1427,2688 -1428,2688 -1429,2688 -1430,2688 -1431,2688 -1432,2688 -1433,2675 -1434,2688 -1435,2688 -1436,2675 -1437,2688 -1438,2688 -1439,2688 -1440,2688 -1441,2688 -1442,2688 -1443,2688 -1444,2688 -1445,2688 -1446,2688 -1447,2688 -1448,2688 -1449,2688 -1450,2688 -1451,2688 -1452,2688 -1453,2688 -1454,2688 -1455,2688 -1456,2675 -1457,2688 -1458,2688 -1459,2688 -1460,2688 -1461,2688 -1462,2675 -1463,2688 -1464,2688 -1465,2688 -1466,2675 -1467,2688 -1468,2688 -1469,2688 -1470,2688 -1471,2688 -1472,2688 -1473,2688 -1474,2675 -1475,2688 -1476,2688 -1477,2675 -1478,2675 -1479,2688 -1480,2688 -1481,2688 -1482,2688 -1483,2688 -1484,2688 -1485,2688 -1486,2688 -1487,2688 -1488,2688 -1489,2688 -1490,2688 -1491,2688 -1492,2688 -1493,2688 -1494,2688 -1495,2688 -1496,2688 -1497,2688 -1498,2688 -1499,2688 -1500,2688 -1501,2688 -1502,2688 -1503,2688 -1504,2688 -1505,2688 -1506,2688 -1507,2688 -1508,2688 -1509,2688 -1510,2688 -1511,2675 -1512,2688 -1513,2688 -1514,2688 -1515,2688 -1516,2688 -1517,2688 -1518,2688 -1519,2688 -1520,2688 -1521,2688 -1522,2688 -1523,2688 -1524,2688 -1525,2688 -1526,2688 -1527,2688 -1528,2688 -1529,2688 -1530,2688 -1531,2688 -1532,2688 -1533,2688 -1534,2688 -1535,2675 -1536,2675 -1537,2688 -1538,2688 -1539,2688 -1540,2688 -1541,2688 -1542,2675 -1543,2688 -1544,2688 -1545,2688 -1546,2688 -1547,2688 -1548,2688 -1549,2688 -1550,2688 -1551,2688 -1552,2688 -1553,2688 -1554,2688 -1555,2688 -1556,2688 -1557,2688 -1558,2688 -1559,2688 -1560,2688 -1561,2688 -1562,2688 -1563,2675 -1564,2675 -1565,2688 -1566,2688 -1567,2688 -1568,2688 -1569,2688 -1570,2688 -1571,2688 -1572,2688 -1573,2688 -1574,2675 -1575,2688 -1576,2688 -1577,2675 -1578,2688 -1579,2688 -1580,2688 -1581,2688 -1582,2675 -1583,2688 -1584,2688 -1585,2688 -1586,2688 -1587,2688 -1588,2688 -1589,2688 -1590,2688 -1591,2688 -1592,2675 -1593,2688 -1594,2688 -1595,2688 -1596,2688 -1597,2688 -1598,2688 -1599,2688 -1600,2688 -1601,2688 -1602,2688 -1603,2688 -1604,2675 -1605,2688 -1606,2688 -1607,2688 -1608,2688 -1609,2688 -1610,2675 -1611,2688 -1612,2688 -1613,2688 -1614,2675 -1615,2688 -1616,2688 -1617,2688 -1618,2688 -1619,2688 -1620,2688 -1621,2688 -1622,2688 -1623,2688 -1624,2688 -1625,2688 -1626,2688 -1627,2688 -1628,2688 -1629,2688 -1630,2688 -1631,2688 -1632,2675 -1633,2688 -1634,2688 -1635,2675 -1636,2688 -1637,2688 -1638,2688 -1639,2688 -1640,2688 -1641,2688 -1642,2675 -1643,2688 -1644,2688 -1645,2688 -1646,2688 -1647,2688 -1648,2688 -1649,2688 -1650,2688 -1651,2688 -1652,2688 -1653,2688 -1654,2688 -1655,2688 -1656,2688 -1657,2688 -1658,2688 -1659,2688 -1660,2688 -1661,2688 -1662,2688 -1663,2688 -1664,2688 -1665,2688 -1666,2688 -1667,2688 -1668,2688 -1669,2688 -1670,2688 -1671,2688 -1672,2688 -1673,2688 -1674,2688 -1675,2688 -1676,2688 -1677,2688 -1678,2688 -1679,2688 -1680,2688 -1681,2688 -1682,2688 -1683,2688 -1684,2675 -1685,2688 -1686,2688 -1687,2688 -1688,2688 -1689,2688 -1690,2688 -1691,2688 -1692,2675 -1693,2688 -1694,2688 -1695,2688 -1696,2688 -1697,2688 -1698,2688 -1699,2688 -1700,2688 -1701,2675 -1702,2688 -1703,2688 -1704,2700 -1705,2688 -1706,2688 -1707,2688 -1708,2688 -1709,2688 -1710,2688 -1711,2688 -1712,2675 -1713,2688 -1714,2688 -1715,2688 -1716,2688 -1717,2688 -1718,2688 -1719,2688 -1720,2688 -1721,2688 -1722,2688 -1723,2688 -1724,2675 -1725,2688 -1726,2688 -1727,2688 -1728,2688 -1729,2688 -1730,2688 -1731,2688 -1732,2688 -1733,2688 -1734,2688 -1735,2688 -1736,2688 -1737,2688 -1738,2688 -1739,2688 -1740,2688 -1741,2688 -1742,2700 -1743,2688 -1744,2688 -1745,2688 -1746,2688 -1747,2688 -1748,2688 -1749,2688 -1750,2688 -1751,2688 -1752,2688 -1753,2688 -1754,2688 -1755,2688 -1756,2675 -1757,2688 -1758,2688 -1759,2688 -1760,2688 -1761,2675 -1762,2688 -1763,2688 -1764,2688 -1765,2675 -1766,2688 -1767,2688 -1768,2688 -1769,2688 -1770,2688 -1771,2688 -1772,2688 -1773,2688 -1774,2688 -1775,2688 -1776,2675 -1777,2688 -1778,2688 -1779,2688 -1780,2688 -1781,2688 -1782,2688 -1783,2688 -1784,2675 -1785,2688 -1786,2688 -1787,2688 -1788,2675 -1789,2688 -1790,2688 -1791,2688 -1792,2675 -1793,2675 -1794,2688 -1795,2688 -1796,2688 -1797,2688 -1798,2675 -1799,2688 -1800,2688 -1801,2688 -1802,2688 -1803,2688 -1804,2688 -1805,2688 -1806,2688 -1807,2688 -1808,2688 -1809,2688 -1810,2688 -1811,2688 -1812,2688 -1813,2688 -1814,2688 -1815,2688 -1816,2688 -1817,2688 -1818,2688 -1819,2675 -1820,2688 -1821,2688 -1822,2688 -1823,2688 -1824,2688 -1825,2688 -1826,2688 -1827,2688 -1828,2688 -1829,2688 -1830,2688 -1831,2688 -1832,2688 -1833,2688 -1834,2688 -1835,2688 -1836,2688 -1837,2688 -1838,2688 -1839,2688 -1840,2688 -1841,2688 -1842,2688 -1843,2688 -1844,2688 -1845,2688 -1846,2675 -1847,2688 -1848,2688 -1849,2688 -1850,2688 -1851,2688 -1852,2688 -1853,2688 -1854,2688 -1855,2688 -1856,2688 -1857,2688 -1858,2688 -1859,2688 -1860,2688 -1861,2688 -1862,2688 -1863,2688 -1864,2688 -1865,2688 -1866,2688 -1867,2688 -1868,2688 -1869,2688 -1870,2688 -1871,2688 -1872,2688 -1873,2688 -1874,2688 -1875,2688 -1876,2688 -1877,2700 -1878,2675 -1879,2688 -1880,2675 -1881,2688 -1882,2688 -1883,2688 -1884,2688 -1885,2688 -1886,2688 -1887,2688 -1888,2688 -1889,2700 -1890,2688 -1891,2688 -1892,2688 -1893,2675 -1894,2688 -1895,2688 -1896,2688 -1897,2688 -1898,2688 -1899,2688 -1900,2688 -1901,2688 -1902,2688 -1903,2688 -1904,2688 -1905,2688 -1906,2688 -1907,2688 -1908,2688 -1909,2688 -1910,2675 -1911,2688 -1912,2688 -1913,2675 -1914,2688 -1915,2688 -1916,2688 -1917,2688 -1918,2688 -1919,2688 -1920,2688 -1921,2688 -1922,2688 -1923,2688 -1924,2688 -1925,2688 -1926,2688 -1927,2688 -1928,2688 -1929,2675 -1930,2688 -1931,2688 -1932,2688 -1933,2675 -1934,2688 -1935,2688 -1936,2688 -1937,2688 -1938,2688 -1939,2688 -1940,2675 -1941,2688 -1942,2688 -1943,2688 -1944,2688 -1945,2688 -1946,2688 -1947,2688 -1948,2688 -1949,2688 -1950,2688 -1951,2688 -1952,2688 -1953,2688 -1954,2688 -1955,2688 -1956,2688 -1957,2688 -1958,2688 -1959,2688 -1960,2688 -1961,2688 -1962,2688 -1963,2688 -1964,2688 -1965,2675 -1966,2688 -1967,2688 -1968,2688 -1969,2688 -1970,2688 -1971,2688 -1972,2688 -1973,2675 -1974,2688 -1975,2688 -1976,2688 -1977,2675 -1978,2688 -1979,2688 -1980,2688 -1981,2688 -1982,2688 -1983,2688 -1984,2688 -1985,2675 -1986,2688 -1987,2688 -1988,2688 -1989,2688 -1990,2675 -1991,2688 -1992,2688 -1993,2688 -1994,2675 -1995,2675 -1996,2688 -1997,2688 -1998,2688 -1999,2675 -2000,2688 -2001,2688 -2002,2688 -2003,2688 -2004,2688 -2005,2688 -2006,2688 -2007,2688 -2008,2688 -2009,2688 -2010,2688 -2011,2688 -2012,2688 -2013,2688 -2014,2688 -2015,2688 -2016,2688 -2017,2688 -2018,2688 -2019,2688 -2020,2675 -2021,2675 -2022,2675 -2023,2688 -2024,2688 -2025,2688 -2026,2688 -2027,2688 -2028,2675 -2029,2688 -2030,2688 -2031,2688 -2032,2675 -2033,2688 -2034,2688 -2035,2688 -2036,2688 -2037,2688 -2038,2688 -2039,2675 -2040,2688 -2041,2688 -2042,2675 -2043,2688 -2044,2688 -2045,2688 -2046,2688 -2047,2700 -2048,2688 -2049,2675 -2050,2688 -2051,2688 -2052,2688 -2053,2688 -2054,2688 -2055,2675 -2056,2688 -2057,2688 -2058,2688 -2059,2688 -2060,2688 -2061,2688 -2062,2688 -2063,2688 -2064,2675 -2065,2675 -2066,2700 -2067,2688 -2068,2688 -2069,2688 -2070,2688 -2071,2688 -2072,2688 -2073,2688 -2074,2688 -2075,2688 -2076,2688 -2077,2688 -2078,2688 -2079,2688 -2080,2688 -2081,2688 -2082,2688 -2083,2688 -2084,2675 -2085,2688 -2086,2688 -2087,2688 -2088,2688 -2089,2688 -2090,2688 -2091,2688 -2092,2688 -2093,2688 -2094,2688 -2095,2688 -2096,2688 -2097,2688 -2098,2688 -2099,2688 -2100,2688 -2101,2688 -2102,2688 -2103,2688 -2104,2688 -2105,2688 -2106,2688 -2107,2688 -2108,2688 -2109,2688 -2110,2688 -2111,2688 -2112,2688 -2113,2688 -2114,2688 -2115,2688 -2116,2688 -2117,2688 -2118,2688 -2119,2688 -2120,2688 -2121,2688 -2122,2688 -2123,2688 -2124,2688 -2125,2688 -2126,2688 -2127,2688 -2128,2688 -2129,2688 -2130,2675 -2131,2688 -2132,2688 -2133,2688 -2134,2688 -2135,2688 -2136,2688 -2137,2688 -2138,2688 -2139,2688 -2140,2688 -2141,2688 -2142,2688 -2143,2688 -2144,2688 -2145,2688 -2146,2688 -2147,2688 -2148,2688 -2149,2688 -2150,2688 -2151,2688 -2152,2688 -2153,2688 -2154,2688 -2155,2688 -2156,2688 -2157,2688 -2158,2688 -2159,2688 -2160,2688 -2161,2688 -2162,2675 -2163,2688 -2164,2688 -2165,2688 -2166,2688 -2167,2688 -2168,2688 -2169,2688 -2170,2688 -2171,2688 -2172,2688 -2173,2675 -2174,2688 -2175,2688 -2176,2688 -2177,2688 -2178,2688 -2179,2688 -2180,2688 -2181,2675 -2182,2688 -2183,2688 -2184,2688 -2185,2688 -2186,2688 -2187,2688 -2188,2688 -2189,2688 -2190,2688 -2191,2688 -2192,2688 -2193,2688 -2194,2688 -2195,2675 -2196,2688 -2197,2688 -2198,2688 -2199,2688 -2200,2675 -2201,2688 -2202,2688 -2203,2688 -2204,2688 -2205,2688 -2206,2675 -2207,2688 -2208,2688 -2209,2675 -2210,2688 -2211,2688 -2212,2688 -2213,2688 -2214,2688 -2215,2688 -2216,2688 -2217,2688 -2218,2688 -2219,2688 -2220,2688 -2221,2688 -2222,2688 -2223,2688 -2224,2688 -2225,2675 -2226,2675 -2227,2688 -2228,2688 -2229,2688 -2230,2688 -2231,2688 -2232,2688 -2233,2688 -2234,2688 -2235,2688 -2236,2688 -2237,2688 -2238,2688 -2239,2688 -2240,2688 -2241,2688 -2242,2688 -2243,2688 -2244,2688 -2245,2688 -2246,2688 -2247,2688 -2248,2688 -2249,2688 -2250,2688 -2251,2688 -2252,2688 -2253,2688 -2254,2688 -2255,2688 -2256,2688 -2257,2675 -2258,2688 -2259,2688 -2260,2688 -2261,2688 -2262,2688 -2263,2688 -2264,2688 -2265,2688 -2266,2688 -2267,2688 -2268,2688 -2269,2688 -2270,2688 -2271,2675 -2272,2688 -2273,2688 -2274,2688 -2275,2675 -2276,2688 -2277,2688 -2278,2688 -2279,2688 -2280,2688 -2281,2688 -2282,2688 -2283,2688 -2284,2688 -2285,2688 -2286,2688 -2287,2675 -2288,2688 -2289,2688 -2290,2688 -2291,2688 -2292,2688 -2293,2688 -2294,2700 -2295,2688 -2296,2688 -2297,2688 -2298,2688 -2299,2688 -2300,2675 -2301,2688 -2302,2688 -2303,2688 -2304,2688 -2305,2688 -2306,2688 -2307,2688 -2308,2688 -2309,2688 -2310,2688 -2311,2688 -2312,2688 -2313,2688 -2314,2688 -2315,2675 -2316,2675 -2317,2688 -2318,2688 -2319,2688 -2320,2688 -2321,2688 -2322,2688 -2323,2688 -2324,2688 -2325,2688 -2326,2675 -2327,2688 -2328,2688 -2329,2688 -2330,2688 -2331,2688 -2332,2675 -2333,2675 -2334,2688 -2335,2688 -2336,2688 -2337,2688 -2338,2688 -2339,2688 -2340,2688 -2341,2688 -2342,2688 -2343,2688 -2344,2688 -2345,2688 -2346,2688 -2347,2688 -2348,2675 -2349,2688 -2350,2688 -2351,2675 -2352,2688 -2353,2688 -2354,2688 -2355,2688 -2356,2688 -2357,2688 -2358,2688 -2359,2675 -2360,2688 -2361,2688 -2362,2688 -2363,2688 -2364,2688 -2365,2675 -2366,2688 -2367,2688 -2368,2688 -2369,2688 -2370,2675 -2371,2675 -2372,2688 -2373,2688 -2374,2688 -2375,2688 -2376,2675 -2377,2688 -2378,2675 -2379,2688 -2380,2688 -2381,2688 -2382,2688 -2383,2675 -2384,2675 -2385,2688 -2386,2688 -2387,2688 -2388,2688 -2389,2688 -2390,2688 -2391,2688 -2392,2688 -2393,2688 -2394,2688 -2395,2688 -2396,2688 -2397,2688 -2398,2688 -2399,2688 -2400,2688 -2401,2688 -2402,2688 -2403,2688 -2404,2688 -2405,2688 -2406,2688 -2407,2688 -2408,2688 -2409,2675 -2410,2688 -2411,2688 -2412,2688 -2413,2688 -2414,2675 -2415,2688 -2416,2688 -2417,2688 -2418,2688 -2419,2688 -2420,2688 -2421,2688 -2422,2688 -2423,2688 -2424,2688 -2425,2688 -2426,2688 -2427,2688 -2428,2688 -2429,2688 -2430,2688 -2431,2688 -2432,2700 -2433,2688 -2434,2688 -2435,2688 -2436,2688 -2437,2688 -2438,2675 -2439,2688 -2440,2688 -2441,2688 -2442,2688 -2443,2688 -2444,2688 -2445,2688 -2446,2688 -2447,2688 -2448,2688 -2449,2688 -2450,2688 -2451,2688 -2452,2688 -2453,2688 -2454,2688 -2455,2688 -2456,2688 -2457,2688 -2458,2688 -2459,2675 -2460,2688 -2461,2688 -2462,2688 -2463,2675 -2464,2700 -2465,2688 -2466,2675 -2467,2688 -2468,2688 -2469,2688 -2470,2688 -2471,2688 -2472,2688 -2473,2688 -2474,2688 -2475,2688 -2476,2688 -2477,2688 -2478,2675 -2479,2688 -2480,2688 -2481,2688 -2482,2688 -2483,2688 -2484,2688 -2485,2688 -2486,2675 -2487,2688 -2488,2688 -2489,2688 -2490,2688 -2491,2688 -2492,2688 -2493,2688 -2494,2688 -2495,2688 -2496,2688 -2497,2688 -2498,2688 -2499,2675 -2500,2688 -2501,2688 -2502,2675 -2503,2675 -2504,2688 -2505,2688 -2506,2688 -2507,2688 -2508,2688 -2509,2688 -2510,2675 -2511,2688 -2512,2688 -2513,2688 -2514,2675 -2515,2688 -2516,2688 -2517,2688 -2518,2688 -2519,2688 -2520,2675 -2521,2688 -2522,2688 -2523,2688 -2524,2675 -2525,2688 -2526,2688 -2527,2688 -2528,2688 -2529,2688 -2530,2688 -2531,2688 -2532,2688 -2533,2688 -2534,2688 -2535,2688 -2536,2675 -2537,2688 -2538,2688 -2539,2688 -2540,2688 -2541,2688 -2542,2675 -2543,2688 -2544,2688 -2545,2688 -2546,2688 -2547,2675 -2548,2688 -2549,2675 -2550,2688 -2551,2688 -2552,2688 -2553,2688 -2554,2688 -2555,2688 -2556,2700 -2557,2688 -2558,2688 -2559,2688 -2560,2688 -2561,2688 -2562,2675 -2563,2688 -2564,2688 -2565,2688 -2566,2688 -2567,2688 -2568,2688 -2569,2688 -2570,2688 -2571,2688 -2572,2688 -2573,2688 -2574,2688 -2575,2688 -2576,2688 -2577,2688 -2578,2688 -2579,2688 -2580,2688 -2581,2688 -2582,2688 -2583,2688 -2584,2688 -2585,2688 -2586,2688 -2587,2688 -2588,2688 -2589,2688 -2590,2688 -2591,2688 -2592,2688 -2593,2688 -2594,2688 -2595,2688 -2596,2688 -2597,2688 -2598,2688 -2599,2688 -2600,2688 -2601,2688 -2602,2675 -2603,2675 -2604,2688 -2605,2688 -2606,2688 -2607,2688 -2608,2688 -2609,2700 -2610,2688 -2611,2688 -2612,2688 -2613,2675 -2614,2688 -2615,2688 -2616,2688 -2617,2688 -2618,2688 -2619,2688 -2620,2688 -2621,2688 -2622,2688 -2623,2688 -2624,2688 -2625,2688 -2626,2688 -2627,2688 -2628,2688 -2629,2688 -2630,2688 -2631,2688 -2632,2688 -2633,2688 -2634,2688 -2635,2688 -2636,2688 -2637,2688 -2638,2688 -2639,2688 -2640,2688 -2641,2688 -2642,2688 -2643,2688 -2644,2688 -2645,2688 -2646,2688 -2647,2675 -2648,2688 -2649,2688 -2650,2675 -2651,2688 -2652,2688 -2653,2688 -2654,2688 -2655,2688 -2656,2688 -2657,2688 -2658,2688 -2659,2688 -2660,2688 -2661,2688 -2662,2688 -2663,2675 -2664,2688 -2665,2688 -2666,2688 -2667,2675 -2668,2688 -2669,2688 -2670,2688 -2671,2688 -2672,2675 -2673,2688 -2674,2688 -2675,2675 -2676,2688 -2677,2688 -2678,2688 -2679,2688 -2680,2688 -2681,2688 -2682,2688 -2683,2688 -2684,2675 -2685,2688 -2686,2688 -2687,2688 -2688,2688 -2689,2688 -2690,2688 -2691,2688 -2692,2688 -2693,2688 -2694,2675 -2695,2688 -2696,2688 -2697,2688 -2698,2688 -2699,2688 -2700,2675 -2701,2688 -2702,2688 -2703,2675 -2704,2688 -2705,2688 -2706,2688 -2707,2675 -2708,2688 -2709,2688 -2710,2688 -2711,2688 -2712,2688 -2713,2688 -2714,2688 -2715,2675 -2716,2675 -2717,2688 -2718,2688 -2719,2688 -2720,2688 -2721,2688 -2722,2688 -2723,2688 -2724,2688 -2725,2688 -2726,2688 -2727,2688 -2728,2688 -2729,2675 -2730,2688 -2731,2675 -2732,2688 -2733,2688 -2734,2688 -2735,2688 -2736,2688 -2737,2688 -2738,2688 -2739,2688 -2740,2688 -2741,2688 -2742,2688 -2743,2688 -2744,2688 -2745,2688 -2746,2688 -2747,2688 -2748,2688 -2749,2688 -2750,2688 -2751,2688 -2752,2688 -2753,2688 -2754,2675 -2755,2688 -2756,2675 -2757,2688 -2758,2675 -2759,2688 -2760,2688 -2761,2688 -2762,2688 -2763,2688 -2764,2688 -2765,2675 -2766,2675 -2767,2688 -2768,2688 -2769,2688 -2770,2688 -2771,2688 -2772,2688 -2773,2688 -2774,2688 -2775,2688 -2776,2688 -2777,2688 -2778,2688 -2779,2688 -2780,2688 -2781,2688 -2782,2688 -2783,2675 -2784,2688 -2785,2688 -2786,2688 -2787,2688 -2788,2688 -2789,2688 -2790,2675 -2791,2688 -2792,2688 -2793,2688 -2794,2688 -2795,2688 -2796,2688 -2797,2688 -2798,2688 -2799,2688 -2800,2688 -2801,2688 -2802,2688 -2803,2688 -2804,2688 -2805,2688 -2806,2688 -2807,2688 -2808,2688 -2809,2688 -2810,2688 -2811,2675 -2812,2688 -2813,2688 -2814,2675 -2815,2688 -2816,2688 -2817,2675 -2818,2688 -2819,2688 -2820,2688 -2821,2688 -2822,2688 -2823,2688 -2824,2675 -2825,2688 -2826,2688 -2827,2688 -2828,2688 -2829,2688 -2830,2688 -2831,2688 -2832,2688 -2833,2688 -2834,2688 -2835,2688 -2836,2688 -2837,2675 -2838,2688 -2839,2675 -2840,2688 -2841,2688 -2842,2688 -2843,2688 -2844,2688 -2845,2688 -2846,2688 -2847,2688 -2848,2688 -2849,2688 -2850,2688 -2851,2688 -2852,2688 -2853,2688 -2854,2688 -2855,2688 -2856,2688 -2857,2688 -2858,2688 -2859,2675 -2860,2688 -2861,2688 -2862,2675 -2863,2688 -2864,2688 -2865,2675 -2866,2688 -2867,2688 -2868,2688 -2869,2688 -2870,2688 -2871,2688 -2872,2688 -2873,2688 -2874,2688 -2875,2688 -2876,2688 -2877,2675 -2878,2688 -2879,2688 -2880,2688 -2881,2688 -2882,2688 -2883,2688 -2884,2688 -2885,2688 -2886,2688 -2887,2688 -2888,2688 -2889,2688 -2890,2688 -2891,2688 -2892,2688 -2893,2688 -2894,2688 -2895,2688 -2896,2688 -2897,2688 -2898,2688 -2899,2688 -2900,2688 -2901,2688 -2902,2688 -2903,2688 -2904,2688 -2905,2688 -2906,2688 -2907,2688 -2908,2688 -2909,2688 -2910,2688 -2911,2688 -2912,2688 -2913,2688 -2914,2688 -2915,2688 -2916,2688 -2917,2675 -2918,2688 -2919,2688 -2920,2688 -2921,2688 -2922,2688 -2923,2675 -2924,2688 -2925,2688 -2926,2688 -2927,2688 -2928,2688 -2929,2688 -2930,2675 -2931,2688 -2932,2688 -2933,2688 -2934,2688 -2935,2700 -2936,2688 -2937,2688 -2938,2688 -2939,2688 -2940,2675 -2941,2688 -2942,2688 -2943,2688 -2944,2688 -2945,2675 -2946,2688 -2947,2688 -2948,2688 -2949,2688 -2950,2688 -2951,2688 -2952,2688 -2953,2688 -2954,2688 -2955,2688 -2956,2688 -2957,2688 -2958,2688 -2959,2688 -2960,2688 -2961,2688 -2962,2688 -2963,2688 -2964,2675 -2965,2688 -2966,2688 -2967,2675 -2968,2688 -2969,2688 -2970,2688 -2971,2688 -2972,2688 -2973,2688 -2974,2688 -2975,2688 -2976,2688 -2977,2688 -2978,2675 -2979,2688 -2980,2688 -2981,2688 -2982,2688 -2983,2688 -2984,2688 -2985,2688 -2986,2688 -2987,2688 -2988,2688 -2989,2688 -2990,2688 -2991,2688 -2992,2688 -2993,2688 -2994,2688 -2995,2688 -2996,2688 -2997,2688 -2998,2688 -2999,2688 -3000,2688 -3001,2688 -3002,2688 -3003,2688 -3004,2688 -3005,2688 -3006,2688 -3007,2688 -3008,2688 -3009,2688 -3010,2688 -3011,2688 -3012,2688 -3013,2688 -3014,2688 -3015,2688 -3016,2688 -3017,2688 -3018,2688 -3019,2675 -3020,2688 -3021,2688 -3022,2688 -3023,2700 -3024,2688 -3025,2688 -3026,2688 -3027,2688 -3028,2688 -3029,2688 -3030,2688 -3031,2688 -3032,2688 -3033,2688 -3034,2688 -3035,2688 -3036,2688 -3037,2688 -3038,2688 -3039,2688 -3040,2688 -3041,2688 -3042,2700 -3043,2688 -3044,2675 -3045,2688 -3046,2688 -3047,2688 -3048,2688 -3049,2688 -3050,2688 -3051,2688 -3052,2675 -3053,2688 -3054,2675 -3055,2688 -3056,2688 -3057,2688 -3058,2688 -3059,2675 -3060,2688 -3061,2688 -3062,2688 -3063,2675 -3064,2688 -3065,2688 -3066,2688 -3067,2675 -3068,2688 -3069,2688 -3070,2688 -3071,2688 -3072,2688 -3073,2675 -3074,2688 -3075,2688 -3076,2675 -3077,2688 -3078,2688 -3079,2688 -3080,2688 -3081,2688 -3082,2688 -3083,2688 -3084,2688 -3085,2688 -3086,2675 -3087,2688 -3088,2688 -3089,2688 -3090,2688 -3091,2688 -3092,2688 -3093,2688 -3094,2688 -3095,2688 -3096,2688 -3097,2688 -3098,2688 -3099,2675 -3100,2675 -3101,2688 -3102,2688 -3103,2688 -3104,2688 -3105,2688 -3106,2688 -3107,2688 -3108,2688 -3109,2688 -3110,2675 -3111,2688 -3112,2688 -3113,2688 -3114,2688 -3115,2688 -3116,2688 -3117,2675 -3118,2688 -3119,2688 -3120,2688 -3121,2688 -3122,2688 -3123,2688 -3124,2675 -3125,2688 -3126,2688 -3127,2688 -3128,2688 -3129,2688 -3130,2688 -3131,2688 -3132,2675 -3133,2700 -3134,2688 -3135,2688 -3136,2688 -3137,2675 -3138,2688 -3139,2675 -3140,2688 -3141,2688 -3142,2688 -3143,2675 -3144,2688 -3145,2688 -3146,2688 -3147,2688 -3148,2688 -3149,2688 -3150,2688 -3151,2688 -3152,2688 -3153,2688 -3154,2688 -3155,2688 -3156,2688 -3157,2688 -3158,2688 -3159,2688 -3160,2688 -3161,2688 -3162,2688 -3163,2688 -3164,2688 -3165,2688 -3166,2688 -3167,2688 -3168,2700 -3169,2688 -3170,2675 -3171,2688 -3172,2688 -3173,2688 -3174,2675 -3175,2688 -3176,2675 -3177,2688 -3178,2688 -3179,2688 -3180,2688 -3181,2688 -3182,2675 -3183,2688 -3184,2688 -3185,2688 -3186,2688 -3187,2688 -3188,2688 -3189,2688 -3190,2688 -3191,2688 -3192,2688 -3193,2675 -3194,2688 -3195,2688 -3196,2688 -3197,2675 -3198,2688 -3199,2688 -3200,2675 -3201,2688 -3202,2688 -3203,2688 -3204,2688 -3205,2688 -3206,2675 -3207,2688 -3208,2688 -3209,2688 -3210,2688 -3211,2688 -3212,2688 -3213,2688 -3214,2688 -3215,2688 -3216,2688 -3217,2688 -3218,2688 -3219,2688 -3220,2688 -3221,2688 -3222,2675 -3223,2688 -3224,2675 -3225,2688 -3226,2688 -3227,2688 -3228,2688 -3229,2688 -3230,2688 -3231,2688 -3232,2688 -3233,2688 -3234,2688 -3235,2688 -3236,2688 -3237,2688 -3238,2688 -3239,2688 -3240,2688 -3241,2688 -3242,2688 -3243,2688 -3244,2675 -3245,2688 -3246,2688 -3247,2688 -3248,2688 -3249,2688 -3250,2688 -3251,2688 -3252,2688 -3253,2688 -3254,2688 -3255,2688 -3256,2688 -3257,2688 -3258,2688 -3259,2688 -3260,2688 -3261,2688 -3262,2688 -3263,2688 -3264,2688 -3265,2688 -3266,2688 -3267,2688 -3268,2675 -3269,2688 -3270,2688 -3271,2688 -3272,2688 -3273,2688 -3274,2675 -3275,2688 -3276,2688 -3277,2688 -3278,2688 -3279,2688 -3280,2688 -3281,2688 -3282,2688 -3283,2688 -3284,2688 -3285,2688 -3286,2675 -3287,2688 -3288,2688 -3289,2688 -3290,2688 -3291,2688 -3292,2688 -3293,2688 -3294,2675 -3295,2688 -3296,2688 -3297,2688 -3298,2688 -3299,2688 -3300,2688 -3301,2688 -3302,2688 -3303,2688 -3304,2688 -3305,2688 -3306,2688 -3307,2688 -3308,2688 -3309,2688 -3310,2688 -3311,2675 -3312,2688 -3313,2675 -3314,2688 -3315,2675 -3316,2688 -3317,2688 -3318,2688 -3319,2688 -3320,2688 -3321,2688 -3322,2675 -3323,2675 -3324,2688 -3325,2688 -3326,2688 -3327,2688 -3328,2688 -3329,2688 -3330,2675 -3331,2688 -3332,2688 -3333,2688 -3334,2675 -3335,2688 -3336,2688 -3337,2688 -3338,2688 -3339,2688 -3340,2688 -3341,2688 -3342,2688 -3343,2688 -3344,2688 -3345,2688 -3346,2688 -3347,2688 -3348,2675 -3349,2688 -3350,2688 -3351,2688 -3352,2688 -3353,2688 -3354,2688 -3355,2675 -3356,2675 -3357,2675 -3358,2688 -3359,2688 -3360,2688 -3361,2688 -3362,2688 -3363,2688 -3364,2688 -3365,2688 -3366,2688 -3367,2688 -3368,2688 -3369,2675 -3370,2688 -3371,2688 -3372,2688 -3373,2688 -3374,2688 -3375,2688 -3376,2688 -3377,2688 -3378,2688 -3379,2688 -3380,2688 -3381,2688 -3382,2688 -3383,2675 -3384,2688 -3385,2688 -3386,2688 -3387,2688 -3388,2688 -3389,2688 -3390,2675 -3391,2688 -3392,2688 -3393,2688 -3394,2688 -3395,2688 -3396,2675 -3397,2688 -3398,2688 -3399,2675 -3400,2688 -3401,2688 -3402,2675 -3403,2688 -3404,2688 -3405,2688 -3406,2675 -3407,2688 -3408,2675 -3409,2688 -3410,2688 -3411,2675 -3412,2688 -3413,2688 -3414,2688 -3415,2688 -3416,2688 -3417,2688 -3418,2688 -3419,2675 -3420,2688 -3421,2688 -3422,2688 -3423,2675 -3424,2688 -3425,2688 -3426,2688 -3427,2700 -3428,2688 -3429,2675 -3430,2675 -3431,2688 -3432,2688 -3433,2688 -3434,2688 -3435,2688 -3436,2688 -3437,2688 -3438,2688 -3439,2688 -3440,2688 -3441,2688 -3442,2688 -3443,2675 -3444,2688 -3445,2675 -3446,2688 -3447,2688 -3448,2688 -3449,2688 -3450,2688 -3451,2675 -3452,2688 -3453,2688 -3454,2688 -3455,2688 -3456,2688 -3457,2675 -3458,2688 -3459,2688 -3460,2675 -3461,2675 -3462,2688 -3463,2688 -3464,2688 -3465,2688 -3466,2688 -3467,2688 -3468,2688 -3469,2688 -3470,2688 -3471,2688 -3472,2688 -3473,2688 -3474,2688 -3475,2688 -3476,2688 -3477,2688 -3478,2688 -3479,2688 -3480,2688 -3481,2675 -3482,2688 -3483,2675 -3484,2688 -3485,2688 -3486,2688 -3487,2688 -3488,2688 -3489,2675 -3490,2688 -3491,2675 -3492,2675 -3493,2688 -3494,2688 -3495,2688 -3496,2688 -3497,2688 -3498,2688 -3499,2675 -3500,2688 -3501,2688 -3502,2688 -3503,2688 -3504,2688 -3505,2688 -3506,2688 -3507,2688 -3508,2688 -3509,2688 -3510,2688 -3511,2675 -3512,2688 -3513,2688 -3514,2688 -3515,2688 -3516,2688 -3517,2688 -3518,2688 -3519,2688 -3520,2688 -3521,2675 -3522,2675 -3523,2688 -3524,2688 -3525,2688 -3526,2688 -3527,2675 -3528,2688 -3529,2688 -3530,2688 -3531,2688 -3532,2688 -3533,2688 -3534,2688 -3535,2688 -3536,2688 -3537,2688 -3538,2688 -3539,2675 -3540,2688 -3541,2675 -3542,2675 -3543,2688 -3544,2688 -3545,2688 -3546,2688 -3547,2688 -3548,2688 -3549,2688 -3550,2688 -3551,2688 -3552,2675 -3553,2688 -3554,2688 -3555,2675 -3556,2688 -3557,2675 -3558,2688 -3559,2688 -3560,2688 -3561,2688 -3562,2688 -3563,2688 -3564,2688 -3565,2688 -3566,2688 -3567,2688 -3568,2675 -3569,2688 -3570,2688 -3571,2688 -3572,2688 -3573,2675 -3574,2675 -3575,2688 -3576,2688 -3577,2688 -3578,2688 -3579,2688 -3580,2688 -3581,2688 -3582,2688 -3583,2688 -3584,2688 -3585,2688 -3586,2675 -3587,2688 -3588,2688 -3589,2688 -3590,2688 -3591,2688 -3592,2688 -3593,2688 -3594,2688 -3595,2688 -3596,2688 -3597,2688 -3598,2675 -3599,2688 -3600,2688 -3601,2675 -3602,2688 -3603,2675 -3604,2675 -3605,2675 -3606,2688 -3607,2675 -3608,2688 -3609,2688 -3610,2688 -3611,2688 -3612,2688 -3613,2688 -3614,2688 -3615,2688 -3616,2688 -3617,2675 -3618,2688 -3619,2688 -3620,2675 -3621,2688 -3622,2688 -3623,2688 -3624,2688 -3625,2688 -3626,2688 -3627,2688 -3628,2688 -3629,2688 -3630,2688 -3631,2688 -3632,2688 -3633,2688 -3634,2688 -3635,2688 -3636,2688 -3637,2688 -3638,2688 -3639,2675 -3640,2688 -3641,2688 -3642,2688 -3643,2688 -3644,2688 -3645,2688 -3646,2688 -3647,2688 -3648,2688 -3649,2688 -3650,2688 -3651,2688 -3652,2688 -3653,2688 -3654,2688 -3655,2688 -3656,2688 -3657,2675 -3658,2688 -3659,2688 -3660,2688 -3661,2688 -3662,2688 -3663,2688 -3664,2675 -3665,2688 -3666,2688 -3667,2688 -3668,2688 -3669,2688 -3670,2688 -3671,2688 -3672,2688 -3673,2688 -3674,2688 -3675,2688 -3676,2688 -3677,2688 -3678,2688 -3679,2688 -3680,2688 -3681,2688 -3682,2688 -3683,2688 -3684,2675 -3685,2688 -3686,2688 -3687,2688 -3688,2688 -3689,2688 -3690,2675 -3691,2688 -3692,2688 -3693,2688 -3694,2688 -3695,2688 -3696,2688 -3697,2688 -3698,2688 -3699,2688 -3700,2688 -3701,2688 -3702,2688 -3703,2675 -3704,2688 -3705,2688 -3706,2688 -3707,2688 -3708,2688 -3709,2675 -3710,2688 -3711,2688 -3712,2688 -3713,2688 -3714,2688 -3715,2688 -3716,2688 -3717,2688 -3718,2688 -3719,2700 -3720,2688 -3721,2675 -3722,2688 -3723,2675 -3724,2688 -3725,2688 -3726,2688 -3727,2675 -3728,2688 -3729,2688 -3730,2688 -3731,2675 -3732,2688 -3733,2688 -3734,2688 -3735,2688 -3736,2688 -3737,2675 -3738,2688 -3739,2688 -3740,2688 -3741,2688 -3742,2688 -3743,2688 -3744,2688 -3745,2688 -3746,2688 -3747,2688 -3748,2688 -3749,2675 -3750,2688 -3751,2688 -3752,2688 -3753,2688 -3754,2688 -3755,2688 -3756,2688 -3757,2675 -3758,2688 -3759,2688 -3760,2688 -3761,2688 -3762,2688 -3763,2688 -3764,2688 -3765,2688 -3766,2688 -3767,2675 -3768,2688 -3769,2688 -3770,2688 -3771,2688 -3772,2688 -3773,2688 -3774,2688 -3775,2688 -3776,2688 -3777,2688 -3778,2688 -3779,2688 -3780,2688 -3781,2688 -3782,2688 -3783,2688 -3784,2688 -3785,2688 -3786,2688 -3787,2688 -3788,2688 -3789,2688 -3790,2688 -3791,2688 -3792,2688 -3793,2688 -3794,2688 -3795,2688 -3796,2688 -3797,2688 -3798,2688 -3799,2688 -3800,2688 -3801,2688 -3802,2675 -3803,2688 -3804,2688 -3805,2688 -3806,2688 -3807,2688 -3808,2688 -3809,2688 -3810,2688 -3811,2688 -3812,2688 -3813,2688 -3814,2688 -3815,2688 -3816,2688 -3817,2688 -3818,2675 -3819,2688 -3820,2688 -3821,2688 -3822,2688 -3823,2688 -3824,2688 -3825,2675 -3826,2688 -3827,2688 -3828,2688 -3829,2688 -3830,2688 -3831,2688 -3832,2688 -3833,2688 -3834,2688 -3835,2688 -3836,2688 -3837,2688 -3838,2688 -3839,2688 -3840,2688 -3841,2675 -3842,2688 -3843,2675 -3844,2688 -3845,2675 -3846,2688 -3847,2688 -3848,2675 -3849,2675 -3850,2688 -3851,2688 -3852,2688 -3853,2688 -3854,2688 -3855,2688 -3856,2675 -3857,2688 -3858,2688 -3859,2688 -3860,2688 -3861,2688 -3862,2675 -3863,2688 -3864,2688 -3865,2688 -3866,2688 -3867,2675 -3868,2688 -3869,2688 -3870,2688 -3871,2688 -3872,2675 -3873,2688 -3874,2688 -3875,2675 -3876,2688 -3877,2688 -3878,2688 -3879,2688 -3880,2688 -3881,2688 -3882,2688 -3883,2688 -3884,2688 -3885,2688 -3886,2688 -3887,2688 -3888,2688 -3889,2688 -3890,2688 -3891,2688 -3892,2688 -3893,2688 -3894,2688 -3895,2688 -3896,2688 -3897,2688 -3898,2688 -3899,2688 -3900,2700 -3901,2688 -3902,2688 -3903,2688 -3904,2688 -3905,2688 -3906,2688 -3907,2675 -3908,2688 -3909,2675 -3910,2688 -3911,2688 -3912,2688 -3913,2688 -3914,2688 -3915,2688 -3916,2688 -3917,2688 -3918,2688 -3919,2675 -3920,2688 -3921,2688 -3922,2688 -3923,2688 -3924,2688 -3925,2688 -3926,2688 -3927,2688 -3928,2688 -3929,2688 -3930,2688 -3931,2688 -3932,2688 -3933,2688 -3934,2688 -3935,2688 -3936,2688 -3937,2675 -3938,2675 -3939,2688 -3940,2688 -3941,2688 -3942,2675 -3943,2688 -3944,2688 -3945,2688 -3946,2688 -3947,2688 -3948,2675 -3949,2675 -3950,2688 -3951,2688 -3952,2688 -3953,2688 -3954,2688 -3955,2688 -3956,2688 -3957,2688 -3958,2688 -3959,2688 -3960,2688 -3961,2675 -3962,2688 -3963,2688 -3964,2688 -3965,2688 -3966,2700 -3967,2688 -3968,2688 -3969,2688 -3970,2688 -3971,2688 -3972,2688 -3973,2688 -3974,2675 -3975,2675 -3976,2688 -3977,2688 -3978,2688 -3979,2688 -3980,2688 -3981,2688 -3982,2688 -3983,2688 -3984,2688 -3985,2675 -3986,2675 -3987,2688 -3988,2688 -3989,2688 -3990,2688 -3991,2688 -3992,2688 -3993,2688 -3994,2688 -3995,2688 -3996,2688 -3997,2688 -3998,2688 -3999,2688 -4000,2688 -4001,2688 -4002,2688 -4003,2688 -4004,2688 -4005,2675 -4006,2688 -4007,2688 -4008,2688 -4009,2688 -4010,2688 -4011,2688 -4012,2675 -4013,2688 -4014,2688 -4015,2688 -4016,2688 -4017,2688 -4018,2688 -4019,2688 -4020,2675 -4021,2675 -4022,2688 -4023,2688 -4024,2688 -4025,2688 -4026,2688 -4027,2688 -4028,2688 -4029,2688 -4030,2688 -4031,2688 -4032,2688 -4033,2688 -4034,2688 -4035,2688 -4036,2688 -4037,2688 -4038,2688 -4039,2688 -4040,2675 -4041,2688 -4042,2688 -4043,2675 -4044,2688 -4045,2688 -4046,2688 -4047,2688 -4048,2688 -4049,2688 -4050,2675 -4051,2688 -4052,2688 -4053,2688 -4054,2688 -4055,2688 -4056,2688 -4057,2688 -4058,2688 -4059,2688 -4060,2688 -4061,2688 -4062,2675 -4063,2700 -4064,2688 -4065,2688 -4066,2688 -4067,2688 -4068,2675 -4069,2688 -4070,2675 -4071,2688 -4072,2688 -4073,2688 -4074,2688 -4075,2688 -4076,2688 -4077,2688 -4078,2688 -4079,2688 -4080,2688 -4081,2688 -4082,2700 -4083,2688 -4084,2700 -4085,2688 -4086,2688 -4087,2688 -4088,2688 -4089,2675 -4090,2688 -4091,2688 -4092,2688 -4093,2688 -4094,2688 -4095,2688 -4096,2688 -4097,2688 -4098,2688 -4099,2688 -4100,2688 -4101,2688 -4102,2688 -4103,2688 -4104,2688 -4105,2688 -4106,2688 -4107,2700 -4108,2688 -4109,2688 -4110,2688 -4111,2688 -4112,2675 -4113,2675 -4114,2688 -4115,2688 -4116,2688 -4117,2688 -4118,2688 -4119,2688 -4120,2700 -4121,2688 -4122,2688 -4123,2688 -4124,2688 -4125,2688 -4126,2688 -4127,2688 -4128,2688 -4129,2675 -4130,2688 -4131,2688 -4132,2688 -4133,2688 -4134,2688 -4135,2688 -4136,2688 -4137,2675 -4138,2688 -4139,2675 -4140,2688 -4141,2688 -4142,2688 -4143,2688 -4144,2675 -4145,2688 -4146,2688 -4147,2675 -4148,2688 -4149,2688 -4150,2688 -4151,2688 -4152,2688 -4153,2700 -4154,2675 -4155,2688 -4156,2675 -4157,2675 -4158,2688 -4159,2688 -4160,2688 -4161,2675 -4162,2688 -4163,2688 -4164,2688 -4165,2688 -4166,2688 -4167,2688 -4168,2688 -4169,2675 -4170,2688 -4171,2688 -4172,2688 -4173,2688 -4174,2688 -4175,2688 -4176,2688 -4177,2675 -4178,2688 -4179,2688 -4180,2688 -4181,2688 -4182,2675 -4183,2688 -4184,2688 -4185,2688 -4186,2688 -4187,2688 -4188,2688 -4189,2688 -4190,2688 -4191,2688 -4192,2688 -4193,2688 -4194,2675 -4195,2688 -4196,2688 -4197,2688 -4198,2688 -4199,2688 -4200,2688 -4201,2688 -4202,2675 -4203,2688 -4204,2688 -4205,2688 -4206,2675 -4207,2688 -4208,2688 -4209,2688 -4210,2688 -4211,2688 -4212,2688 -4213,2688 -4214,2688 -4215,2675 -4216,2675 -4217,2688 -4218,2675 -4219,2688 -4220,2688 -4221,2688 -4222,2688 -4223,2688 -4224,2688 -4225,2688 -4226,2688 -4227,2688 -4228,2688 -4229,2688 -4230,2688 -4231,2675 -4232,2688 -4233,2688 -4234,2675 -4235,2675 -4236,2688 -4237,2688 -4238,2688 -4239,2688 -4240,2675 -4241,2688 -4242,2688 -4243,2675 -4244,2688 -4245,2688 -4246,2688 -4247,2688 -4248,2688 -4249,2688 -4250,2700 -4251,2675 -4252,2688 -4253,2688 -4254,2688 -4255,2688 -4256,2688 -4257,2688 -4258,2688 -4259,2688 -4260,2688 -4261,2688 -4262,2688 -4263,2688 -4264,2688 -4265,2675 -4266,2688 -4267,2688 -4268,2688 -4269,2688 -4270,2688 -4271,2675 -4272,2688 -4273,2700 -4274,2688 -4275,2675 -4276,2688 -4277,2688 -4278,2688 -4279,2688 -4280,2675 -4281,2688 -4282,2688 -4283,2688 -4284,2688 -4285,2675 -4286,2688 -4287,2688 -4288,2675 -4289,2688 -4290,2675 -4291,2688 -4292,2688 -4293,2688 -4294,2688 -4295,2688 -4296,2688 -4297,2688 -4298,2688 -4299,2688 -4300,2688 -4301,2688 -4302,2688 -4303,2688 -4304,2688 -4305,2688 -4306,2688 -4307,2675 -4308,2675 -4309,2688 -4310,2688 -4311,2688 -4312,2675 -4313,2675 -4314,2688 -4315,2688 -4316,2688 -4317,2688 -4318,2688 -4319,2675 -4320,2688 -4321,2688 -4322,2688 -4323,2688 -4324,2675 -4325,2688 -4326,2688 -4327,2688 -4328,2688 -4329,2688 -4330,2675 -4331,2688 -4332,2688 -4333,2688 -4334,2688 -4335,2688 -4336,2688 -4337,2700 -4338,2688 -4339,2688 -4340,2688 -4341,2688 -4342,2688 -4343,2700 -4344,2688 -4345,2675 -4346,2688 -4347,2688 -4348,2675 -4349,2675 -4350,2688 -4351,2688 -4352,2688 -4353,2688 -4354,2688 -4355,2688 -4356,2688 -4357,2688 -4358,2688 -4359,2688 -4360,2688 -4361,2688 -4362,2688 -4363,2688 -4364,2688 -4365,2688 -4366,2688 -4367,2688 -4368,2688 -4369,2688 -4370,2688 -4371,2688 -4372,2688 -4373,2675 -4374,2675 -4375,2688 -4376,2688 -4377,2675 -4378,2688 -4379,2688 -4380,2688 -4381,2688 -4382,2688 -4383,2688 -4384,2688 -4385,2688 -4386,2675 -4387,2688 -4388,2688 -4389,2688 -4390,2688 -4391,2688 -4392,2688 -4393,2688 -4394,2688 -4395,2688 -4396,2688 -4397,2688 -4398,2700 -4399,2688 -4400,2688 -4401,2688 -4402,2688 -4403,2688 -4404,2688 -4405,2688 -4406,2688 -4407,2688 -4408,2675 -4409,2688 -4410,2688 -4411,2688 -4412,2688 -4413,2688 -4414,2688 -4415,2675 -4416,2688 -4417,2688 -4418,2688 -4419,2688 -4420,2688 -4421,2688 -4422,2688 -4423,2688 -4424,2688 -4425,2688 -4426,2688 -4427,2688 -4428,2688 -4429,2688 -4430,2688 -4431,2688 -4432,2688 -4433,2688 -4434,2688 -4435,2688 -4436,2688 -4437,2688 -4438,2688 -4439,2688 -4440,2688 -4441,2688 -4442,2688 -4443,2675 -4444,2688 -4445,2675 -4446,2675 -4447,2688 -4448,2688 -4449,2688 -4450,2688 -4451,2675 -4452,2688 -4453,2688 -4454,2675 -4455,2688 -4456,2688 -4457,2688 -4458,2688 -4459,2688 -4460,2688 -4461,2688 -4462,2688 -4463,2688 -4464,2688 -4465,2688 -4466,2688 -4467,2688 -4468,2688 -4469,2688 -4470,2688 -4471,2688 -4472,2688 -4473,2688 -4474,2688 -4475,2688 -4476,2675 -4477,2688 -4478,2688 -4479,2688 -4480,2688 -4481,2688 -4482,2688 -4483,2688 -4484,2688 -4485,2688 -4486,2688 -4487,2688 -4488,2688 -4489,2688 -4490,2688 -4491,2688 -4492,2675 -4493,2688 -4494,2688 -4495,2688 -4496,2688 -4497,2688 -4498,2688 -4499,2688 -4500,2688 -4501,2688 -4502,2688 -4503,2688 -4504,2688 -4505,2688 -4506,2688 -4507,2688 -4508,2688 -4509,2688 -4510,2688 -4511,2688 -4512,2688 -4513,2688 -4514,2688 -4515,2675 -4516,2688 -4517,2675 -4518,2688 -4519,2688 -4520,2688 -4521,2688 -4522,2688 -4523,2688 -4524,2688 -4525,2688 -4526,2688 -4527,2688 -4528,2688 -4529,2688 -4530,2688 -4531,2688 -4532,2688 -4533,2688 -4534,2688 -4535,2688 -4536,2688 -4537,2675 -4538,2675 -4539,2688 -4540,2688 -4541,2688 -4542,2688 -4543,2688 -4544,2688 -4545,2688 -4546,2688 -4547,2688 -4548,2688 -4549,2688 -4550,2688 -4551,2688 -4552,2688 -4553,2688 -4554,2675 -4555,2688 -4556,2688 -4557,2688 -4558,2688 -4559,2688 -4560,2688 -4561,2688 -4562,2688 -4563,2688 -4564,2688 -4565,2675 -4566,2688 -4567,2688 -4568,2688 -4569,2688 -4570,2688 -4571,2688 -4572,2688 -4573,2688 -4574,2688 -4575,2688 -4576,2688 -4577,2688 -4578,2700 -4579,2688 -4580,2688 -4581,2688 -4582,2688 -4583,2688 -4584,2688 -4585,2688 -4586,2688 -4587,2688 -4588,2688 -4589,2675 -4590,2675 -4591,2675 -4592,2688 -4593,2688 -4594,2688 -4595,2688 -4596,2688 -4597,2688 -4598,2688 -4599,2688 -4600,2688 -4601,2688 -4602,2688 -4603,2688 -4604,2688 -4605,2688 -4606,2700 -4607,2688 -4608,2688 -4609,2688 -4610,2688 -4611,2688 -4612,2688 -4613,2688 -4614,2688 -4615,2675 -4616,2688 -4617,2688 -4618,2688 -4619,2688 -4620,2688 -4621,2688 -4622,2688 -4623,2688 -4624,2688 -4625,2688 -4626,2688 -4627,2688 -4628,2688 -4629,2688 -4630,2688 -4631,2688 -4632,2688 -4633,2688 -4634,2688 -4635,2688 -4636,2688 -4637,2688 -4638,2688 -4639,2688 -4640,2688 -4641,2688 -4642,2688 -4643,2688 -4644,2688 -4645,2688 -4646,2688 -4647,2688 -4648,2688 -4649,2688 -4650,2688 -4651,2688 -4652,2688 -4653,2688 -4654,2688 -4655,2688 -4656,2688 -4657,2688 -4658,2688 -4659,2688 -4660,2675 -4661,2688 -4662,2688 -4663,2688 -4664,2688 -4665,2688 -4666,2675 -4667,2688 -4668,2688 -4669,2688 -4670,2688 -4671,2688 -4672,2688 -4673,2688 -4674,2688 -4675,2688 -4676,2688 -4677,2688 -4678,2688 -4679,2688 -4680,2688 -4681,2688 -4682,2688 -4683,2688 -4684,2688 -4685,2688 -4686,2688 -4687,2675 -4688,2688 -4689,2688 -4690,2688 -4691,2688 -4692,2688 -4693,2688 -4694,2700 -4695,2675 -4696,2688 -4697,2688 -4698,2688 -4699,2675 -4700,2688 -4701,2675 -4702,2688 -4703,2688 -4704,2688 -4705,2688 -4706,2675 -4707,2688 -4708,2688 -4709,2688 -4710,2688 -4711,2688 -4712,2675 -4713,2688 -4714,2688 -4715,2688 -4716,2688 -4717,2688 -4718,2688 -4719,2688 -4720,2688 -4721,2688 -4722,2688 -4723,2688 -4724,2688 -4725,2675 -4726,2688 -4727,2688 -4728,2675 -4729,2688 -4730,2688 -4731,2688 -4732,2688 -4733,2688 -4734,2688 -4735,2688 -4736,2688 -4737,2688 -4738,2688 -4739,2688 -4740,2688 -4741,2688 -4742,2688 -4743,2688 -4744,2688 -4745,2688 -4746,2688 -4747,2688 -4748,2688 -4749,2688 -4750,2688 -4751,2688 -4752,2688 -4753,2688 -4754,2688 -4755,2688 -4756,2688 -4757,2688 -4758,2688 -4759,2688 -4760,2688 -4761,2688 -4762,2688 -4763,2688 -4764,2688 -4765,2688 -4766,2688 -4767,2688 -4768,2688 -4769,2688 -4770,2688 -4771,2675 -4772,2688 -4773,2688 -4774,2688 -4775,2688 -4776,2688 -4777,2688 -4778,2688 -4779,2688 -4780,2688 -4781,2688 -4782,2688 -4783,2675 -4784,2688 -4785,2688 -4786,2688 -4787,2675 -4788,2688 -4789,2688 -4790,2688 -4791,2688 -4792,2688 -4793,2688 -4794,2688 -4795,2688 -4796,2688 -4797,2688 -4798,2688 -4799,2688 -4800,2688 -4801,2688 -4802,2688 -4803,2700 -4804,2688 -4805,2688 -4806,2688 -4807,2688 -4808,2688 -4809,2688 -4810,2688 -4811,2688 -4812,2688 -4813,2688 -4814,2688 -4815,2688 -4816,2688 -4817,2675 -4818,2688 -4819,2688 -4820,2688 -4821,2675 -4822,2688 -4823,2688 -4824,2688 -4825,2688 -4826,2688 -4827,2675 -4828,2688 -4829,2688 -4830,2688 -4831,2688 -4832,2688 -4833,2675 -4834,2688 -4835,2688 -4836,2688 -4837,2688 -4838,2688 -4839,2688 -4840,2688 -4841,2688 -4842,2675 -4843,2688 -4844,2688 -4845,2688 -4846,2688 -4847,2688 -4848,2688 -4849,2675 -4850,2688 -4851,2675 -4852,2688 -4853,2688 -4854,2688 -4855,2688 -4856,2688 -4857,2688 -4858,2688 -4859,2688 -4860,2688 -4861,2688 -4862,2688 -4863,2688 -4864,2688 -4865,2688 -4866,2688 -4867,2675 -4868,2688 -4869,2688 -4870,2688 -4871,2675 -4872,2688 -4873,2675 -4874,2675 -4875,2688 -4876,2688 -4877,2688 -4878,2688 -4879,2688 -4880,2688 -4881,2688 -4882,2688 -4883,2688 -4884,2688 -4885,2688 -4886,2688 -4887,2688 -4888,2688 -4889,2688 -4890,2688 -4891,2688 -4892,2688 -4893,2688 -4894,2688 -4895,2688 -4896,2688 -4897,2688 -4898,2688 -4899,2688 -4900,2688 -4901,2688 -4902,2675 -4903,2688 -4904,2688 -4905,2688 -4906,2688 -4907,2688 -4908,2688 -4909,2688 -4910,2688 -4911,2688 -4912,2688 -4913,2688 -4914,2688 -4915,2688 -4916,2688 -4917,2688 -4918,2688 -4919,2688 -4920,2688 -4921,2688 -4922,2688 -4923,2688 -4924,2688 -4925,2688 -4926,2688 -4927,2688 -4928,2688 -4929,2688 -4930,2688 -4931,2688 -4932,2688 -4933,2688 -4934,2688 -4935,2675 -4936,2675 -4937,2688 -4938,2688 -4939,2688 -4940,2688 -4941,2688 -4942,2688 -4943,2688 -4944,2675 -4945,2675 -4946,2688 -4947,2675 -4948,2688 -4949,2675 -4950,2688 -4951,2688 -4952,2688 -4953,2688 -4954,2688 -4955,2688 -4956,2675 -4957,2688 -4958,2688 -4959,2688 -4960,2675 -4961,2688 -4962,2688 -4963,2688 -4964,2688 -4965,2688 -4966,2675 -4967,2688 -4968,2688 -4969,2675 -4970,2688 -4971,2688 -4972,2688 -4973,2688 -4974,2688 -4975,2688 -4976,2675 -4977,2688 -4978,2688 -4979,2688 -4980,2688 -4981,2688 -4982,2688 -4983,2688 -4984,2675 -4985,2688 -4986,2688 -4987,2688 -4988,2688 -4989,2675 -4990,2688 -4991,2675 -4992,2688 -4993,2688 -4994,2675 -4995,2688 -4996,2688 -4997,2688 -4998,2688 -4999,2688 -5000,2675 -5001,2688 -5002,2688 -5003,2688 -5004,2688 -5005,2675 -5006,2700 -5007,2688 -5008,2688 -5009,2688 -5010,2688 -5011,2688 -5012,2688 -5013,2688 -5014,2688 -5015,2675 -5016,2688 -5017,2688 -5018,2688 -5019,2688 -5020,2688 -5021,2675 -5022,2688 -5023,2688 -5024,2688 -5025,2688 -5026,2688 -5027,2675 -5028,2688 -5029,2688 -5030,2688 -5031,2688 -5032,2688 -5033,2688 -5034,2688 -5035,2688 -5036,2688 -5037,2688 -5038,2688 -5039,2688 -5040,2688 -5041,2688 -5042,2688 -5043,2688 -5044,2688 -5045,2688 -5046,2688 -5047,2688 -5048,2688 -5049,2688 -5050,2688 -5051,2688 -5052,2688 -5053,2688 -5054,2688 -5055,2688 -5056,2688 -5057,2688 -5058,2688 -5059,2688 -5060,2675 -5061,2688 -5062,2688 -5063,2688 -5064,2688 -5065,2688 -5066,2688 -5067,2688 -5068,2675 -5069,2675 -5070,2688 -5071,2688 -5072,2688 -5073,2688 -5074,2688 -5075,2688 -5076,2688 -5077,2688 -5078,2688 -5079,2675 -5080,2675 -5081,2688 -5082,2688 -5083,2688 -5084,2688 -5085,2688 -5086,2688 -5087,2688 -5088,2675 -5089,2688 -5090,2688 -5091,2688 -5092,2688 -5093,2688 -5094,2688 -5095,2688 -5096,2688 -5097,2675 -5098,2688 -5099,2688 -5100,2688 -5101,2688 -5102,2688 -5103,2688 -5104,2688 -5105,2688 -5106,2688 -5107,2688 -5108,2688 -5109,2675 -5110,2688 -5111,2688 -5112,2688 -5113,2688 -5114,2688 -5115,2688 -5116,2675 -5117,2688 -5118,2688 -5119,2688 -5120,2688 -5121,2688 -5122,2688 -5123,2688 -5124,2688 -5125,2688 -5126,2675 -5127,2700 -5128,2688 -5129,2688 -5130,2688 -5131,2688 -5132,2688 -5133,2688 -5134,2688 -5135,2688 -5136,2688 -5137,2688 -5138,2688 -5139,2688 -5140,2688 -5141,2688 -5142,2688 -5143,2688 -5144,2688 -5145,2688 -5146,2675 -5147,2688 -5148,2688 -5149,2688 -5150,2688 -5151,2688 -5152,2675 -5153,2688 -5154,2688 -5155,2688 -5156,2688 -5157,2688 -5158,2688 -5159,2675 -5160,2688 -5161,2688 -5162,2688 -5163,2688 -5164,2688 -5165,2675 -5166,2688 -5167,2675 -5168,2688 -5169,2675 -5170,2688 -5171,2688 -5172,2688 -5173,2688 -5174,2688 -5175,2675 -5176,2675 -5177,2675 -5178,2688 -5179,2675 -5180,2688 -5181,2688 -5182,2675 -5183,2688 -5184,2688 -5185,2688 -5186,2688 -5187,2688 -5188,2688 -5189,2688 -5190,2688 -5191,2688 -5192,2688 -5193,2688 -5194,2688 -5195,2675 -5196,2688 -5197,2688 -5198,2688 -5199,2688 -5200,2675 -5201,2675 -5202,2688 -5203,2688 -5204,2688 -5205,2688 -5206,2688 -5207,2688 -5208,2675 -5209,2688 -5210,2688 -5211,2688 -5212,2688 -5213,2688 -5214,2688 -5215,2688 -5216,2688 -5217,2688 -5218,2688 -5219,2688 -5220,2688 -5221,2675 -5222,2688 -5223,2688 -5224,2688 -5225,2688 -5226,2688 -5227,2688 -5228,2688 -5229,2688 -5230,2688 -5231,2675 -5232,2688 -5233,2688 -5234,2688 -5235,2688 -5236,2688 -5237,2688 -5238,2688 -5239,2688 -5240,2675 -5241,2688 -5242,2688 -5243,2688 -5244,2688 -5245,2688 -5246,2688 -5247,2688 -5248,2688 -5249,2688 -5250,2688 -5251,2688 -5252,2688 -5253,2688 -5254,2688 -5255,2688 -5256,2688 -5257,2688 -5258,2688 -5259,2688 -5260,2675 -5261,2688 -5262,2688 -5263,2688 -5264,2688 -5265,2688 -5266,2675 -5267,2688 -5268,2688 -5269,2688 -5270,2688 -5271,2688 -5272,2675 -5273,2688 -5274,2688 -5275,2688 -5276,2688 -5277,2688 -5278,2688 -5279,2688 -5280,2688 -5281,2688 -5282,2688 -5283,2688 -5284,2688 -5285,2688 -5286,2675 -5287,2675 -5288,2688 -5289,2688 -5290,2688 -5291,2688 -5292,2688 -5293,2688 -5294,2688 -5295,2688 -5296,2688 -5297,2688 -5298,2688 -5299,2688 -5300,2688 -5301,2688 -5302,2688 -5303,2688 -5304,2688 -5305,2675 -5306,2688 -5307,2688 -5308,2688 -5309,2688 -5310,2688 -5311,2688 -5312,2688 -5313,2688 -5314,2688 -5315,2688 -5316,2688 -5317,2688 -5318,2688 -5319,2688 -5320,2688 -5321,2688 -5322,2688 -5323,2688 -5324,2688 -5325,2688 -5326,2688 -5327,2688 -5328,2688 -5329,2688 -5330,2675 -5331,2688 -5332,2688 -5333,2688 -5334,2688 -5335,2688 -5336,2688 -5337,2688 -5338,2688 -5339,2688 -5340,2688 -5341,2688 -5342,2688 -5343,2688 -5344,2688 -5345,2688 -5346,2688 -5347,2688 -5348,2688 -5349,2688 -5350,2675 -5351,2688 -5352,2675 -5353,2688 -5354,2688 -5355,2688 -5356,2688 -5357,2675 -5358,2688 -5359,2688 -5360,2688 -5361,2688 -5362,2688 -5363,2675 -5364,2688 -5365,2688 -5366,2688 -5367,2675 -5368,2688 -5369,2688 -5370,2688 -5371,2688 -5372,2688 -5373,2688 -5374,2688 -5375,2688 -5376,2688 -5377,2688 -5378,2688 -5379,2688 -5380,2688 -5381,2688 -5382,2688 -5383,2675 -5384,2688 -5385,2688 -5386,2688 -5387,2688 -5388,2688 -5389,2688 -5390,2688 -5391,2688 -5392,2688 -5393,2688 -5394,2688 -5395,2688 -5396,2688 -5397,2688 -5398,2688 -5399,2675 diff --git a/Software/Stubs Collection/stubs/Scripts/Assemblies/Dryer/Dryer_Encoder.cs b/Software/Stubs Collection/stubs/Scripts/Assemblies/Dryer/Dryer_Encoder.cs new file mode 100644 index 000000000..d2eb00cb6 --- /dev/null +++ b/Software/Stubs Collection/stubs/Scripts/Assemblies/Dryer/Dryer_Encoder.cs @@ -0,0 +1,55 @@ +using System; +using System.Text; +using System.Linq; +using System.Drawing; +using System.Diagnostics; +using System.Windows.Forms; +using System.Threading; +using System.Threading.Tasks; +using System.Collections.Generic; +using Tango.PMR.Stubs; +using Tango.Stubs; + +include "..\..\Defines\Tango_Defines_Basic.cs" +include "Tango_Defines_SSI.cs" +//include "C:\To_Backup\Mulberry\Mulberry_current\Customers\Twine\Tango\LAB_Tests\Main_PCB\ATP_Test\Scripts\Defines\Tango_Defines_Basic.cs" +//include "C:\To_Backup\Mulberry\Mulberry_current\Customers\Twine\Tango\LAB_Tests\Main_PCB\ATP_Test\Scripts\Defines\Tango_Defines_SSI.cs" + + +public void OnExecute(StubManager stubManager) +{ + int k = 0; + Fpga_Read_Reg(FPGA1, F1_Prescaler1_reg1, 0); + Fpga_Read_Reg(FPGA1, F1_Prescaler1_reg2, 0); + + //Set output clock frequency to about 200 kHz + Fpga_Write_Reg(FPGA1, F1_Prescaler1_reg1, 0x0024, 0); + Fpga_Write_Reg(FPGA1, F1_Prescaler1_reg2, 0x0024, 0); + + Fpga_Read_Reg(FPGA1, F1_Prescaler1_reg1, 0); + Fpga_Read_Reg(FPGA1, F1_Prescaler1_reg2, 0); + + for (int i = 0; i < 1000; i++) + { + + stubManager.Write(ReadEncoder_Dryer() +"\n"); + + Thread.Sleep(100); + } + + +} + +Int32 ReadEncoder_Dryer() +{ + Int32 temp; + Int32 temp1; + stubManager.Run<StubFpgaWriteRegResponse>("StubFpgaWriteRegRequest" ,0x6000019e, 0x0000); //triggers a TX transmission + + var response = stubManager.Run<StubFpgaReadRegResponse>("StubFpgaReadRegRequest" ,0x60000190); + var response1 = stubManager.Run<StubFpgaReadRegResponse>("StubFpgaReadRegRequest" ,0x60000192); + + temp = Convert.ToInt32 (((((response1.Value <<16) + response.Value)>>10 ) & 0x3fff)); + + return temp; +} diff --git a/Software/Stubs Collection/stubs/Scripts/Assemblies/Dryer/Dryer_SSR.cs b/Software/Stubs Collection/stubs/Scripts/Assemblies/Dryer/Dryer_SSR.cs index b059a170f..b092d6a20 100644 --- a/Software/Stubs Collection/stubs/Scripts/Assemblies/Dryer/Dryer_SSR.cs +++ b/Software/Stubs Collection/stubs/Scripts/Assemblies/Dryer/Dryer_SSR.cs @@ -26,17 +26,16 @@ float temp1=4096*95*5; stubManager.WriteHex(response.TemperatureCMultBy100,4); SetBit (FPGA2, F2_CTRL, 10, 1); stubManager.Write("\tTesting SSR no. 1\t"); - Thread.Sleep(1000); - - + Thread.Sleep(10000); + var response1 = stubManager.Run<StubIntADCReadResponse>("StubIntADCReadRequest" ,16); temp=Convert.ToUInt32 (response1.SamplingInBits); - temp=temp*800*3*100; + + temp=temp*2400*60*100; temp=temp/(4096*95*50); - stubManager.Write("Current = "+ temp + "A\n"); - temp=temp*60; - stubManager.Write("Voltage = "+ temp + " Volt\n"); + stubManager.Write("Voltage = "+ temp + "Volt/n"); + stubManager.Write("Current = "+ temp*100/6 + "mA/n"); SetBit (FPGA2, F2_CTRL, 10, 0); @@ -50,17 +49,16 @@ var response1 = stubManager.Run<StubIntADCReadResponse>("StubIntADCReadRequest" stubManager.WriteHex(response.TemperatureCMultBy100,4); SetBit (FPGA2, F2_CTRL, 9, 1); stubManager.Write("\tTesting SSR no. 2\t"); - Thread.Sleep(1000); + Thread.Sleep(10000); -response1 = stubManager.Run<StubIntADCReadResponse>("StubIntADCReadRequest" ,17); + response1 = stubManager.Run<StubIntADCReadResponse>("StubIntADCReadRequest" ,17); temp=Convert.ToUInt32 (response1.SamplingInBits); - stubManager.WriteLine(temp); - temp=temp*800*3*100; - temp=temp/(4096*95*120); - stubManager.Write("Current = "+ temp + "A\n"); - temp=temp*120; - stubManager.Write("Voltage = "+ temp + " Volt\n"); + + temp=temp*2400*1000; + temp=temp/(4096*95*100); + stubManager.Write("Current = "+ temp*100/6 + "mA/n"); + SetBit (FPGA2, F2_CTRL, 9, 0); diff --git a/Software/Stubs Collection/stubs/Scripts/Assemblies/Dryer/Dryer_Tset.CSV b/Software/Stubs Collection/stubs/Scripts/Assemblies/Dryer/Dryer_Tset.CSV index daadff892..de439d914 100644 --- a/Software/Stubs Collection/stubs/Scripts/Assemblies/Dryer/Dryer_Tset.CSV +++ b/Software/Stubs Collection/stubs/Scripts/Assemblies/Dryer/Dryer_Tset.CSV @@ -1,6 +1,1796 @@ -24/06/2020 9:51:30 +03/09/2020 22:34:12 Heating to 190 -24/06/2020 9:51:30 +03/09/2020 22:34:12 + 59 + 59 + 59 + 59 + 59 + 59 + 59 + 59 + 59 + 59 + 59 + 59 + 59 + 59 + 59 + 60 + 60 + 60 + 60 + 61 + 61 + 61 + 62 + 62 + 63 + 63 + 64 + 64 + 65 + 65 + 66 + 66 + 67 + 67 + 68 + 68 + 69 + 69 + 70 + 71 + 71 + 72 + 72 + 73 + 73 + 74 + 74 + 75 + 75 + 76 + 76 + 77 + 78 + 78 + 79 + 80 + 80 + 81 + 81 + 82 + 82 + 83 + 83 + 84 + 84 + 85 + 85 + 86 + 86 + 87 + 87 + 88 + 88 + 89 + 89 + 89 + 90 + 90 + 91 + 91 + 92 + 92 + 93 + 93 + 93 + 94 + 94 + 95 + 95 + 96 + 96 + 97 + 97 + 98 + 98 + 98 + 99 + 99 + 99 + 100 + 101 + 101 + 101 + 102 + 102 + 102 + 103 + 103 + 103 + 104 + 104 + 105 + 105 + 105 + 106 + 106 + 106 + 107 + 107 + 107 + 108 + 108 + 108 + 109 + 109 + 109 + 110 + 110 + 110 + 111 + 111 + 111 + 112 + 112 + 112 + 112 + 113 + 113 + 113 + 114 + 114 + 114 + 115 + 115 + 115 + 115 + 116 + 116 + 117 + 117 + 117 + 117 + 118 + 118 + 118 + 119 + 119 + 119 + 119 + 120 + 120 + 120 + 120 + 121 + 121 + 121 + 122 + 122 + 122 + 122 + 123 + 123 + 123 + 124 + 124 + 124 + 124 + 125 + 125 + 125 + 125 + 125 + 126 + 126 + 126 + 126 + 127 + 127 + 127 + 127 + 128 + 128 + 128 + 128 + 129 + 129 + 129 + 129 + 129 + 130 + 130 + 130 + 130 + 131 + 131 + 131 + 131 + 132 + 132 + 132 + 132 + 132 + 133 + 133 + 133 + 133 + 134 + 134 + 134 + 134 + 134 + 135 + 135 + 135 + 135 + 136 + 136 + 136 + 136 + 137 + 137 + 137 + 137 + 137 + 138 + 138 + 138 + 138 + 138 + 139 + 139 + 139 + 139 + 139 + 140 + 140 + 140 + 140 + 140 + 141 + 141 + 141 + 141 + 142 + 142 + 142 + 142 + 142 + 143 + 143 + 143 + 143 + 143 + 144 + 144 + 144 + 144 + 144 + 145 + 145 + 145 + 145 + 145 + 145 + 146 + 146 + 146 + 146 + 147 + 147 + 147 + 147 + 147 + 147 + 148 + 148 + 148 + 148 + 148 + 149 + 149 + 149 + 149 + 149 + 149 + 150 + 150 + 150 + 150 + 150 + 151 + 151 + 151 + 151 + 151 + 152 + 152 + 152 + 152 + 152 + 152 + 153 + 153 + 153 + 153 + 153 + 153 + 154 + 154 + 154 + 154 + 154 + 155 + 155 + 155 + 155 + 155 + 155 + 156 + 156 + 156 + 156 + 156 + 157 + 157 + 157 + 157 + 157 + 157 + 158 + 158 + 158 + 158 + 158 + 158 + 159 + 159 + 159 + 159 + 159 + 159 + 160 + 160 + 160 + 160 + 160 + 160 + 161 + 161 + 161 + 161 + 161 + 161 + 162 + 162 + 162 + 162 + 162 + 162 + 163 + 163 + 163 + 163 + 163 + 163 + 164 + 164 + 164 + 164 + 164 + 164 + 165 + 165 + 165 + 165 + 165 + 165 + 166 + 166 + 166 + 166 + 166 + 166 + 166 + 167 + 167 + 167 + 167 + 167 + 167 + 167 + 168 + 168 + 168 + 168 + 168 + 168 + 168 + 169 + 169 + 169 + 169 + 169 + 170 + 170 + 170 + 170 + 170 + 170 + 170 + 171 + 171 + 171 + 171 + 171 + 171 + 171 + 172 + 172 + 172 + 172 + 172 + 172 + 172 + 173 + 173 + 173 + 173 + 173 + 173 + 174 + 174 + 174 + 174 + 174 + 174 + 175 + 175 + 175 + 175 + 175 + 175 + 175 + 176 + 176 + 176 + 176 + 176 + 176 + 176 + 176 + 177 + 177 + 177 + 177 + 177 + 177 + 177 + 177 + 177 + 177 + 177 + 178 + 178 + 178 + 178 + 178 + 178 + 178 + 178 + 178 + 179 + 179 + 179 + 179 + 179 + 179 + 179 + 179 + 179 + 180 + 180 + 180 + 180 + 180 + 180 + 180 + 180 + 181 + 181 + 181 + 181 + 181 + 181 + 181 + 181 + 182 + 182 + 182 + 182 + 182 + 182 + 182 + 183 + 183 + 183 + 183 + 183 + 183 + 183 + 184 + 184 + 184 + 184 + 184 + 184 + 184 + 185 + 185 + 185 + 185 + 185 + 185 + 185 + 186 + 186 + 186 + 186 + 186 + 186 + 186 + 187 + 187 + 187 + 187 + 187 + 187 + 187 + 188 + 188 + 188 + 188 + 188 + 188 + 188 + 188 + 189 +03/09/2020 22:43:52 +cooling down +03/09/2020 22:45:53 + 190 + 190 + 190 + 190 + 190 + 190 + 190 + 190 + 190 + 190 + 190 + 190 + 190 + 189 + 189 + 189 + 189 + 189 + 189 + 189 + 188 + 188 + 188 + 188 + 187 + 187 + 187 + 187 + 186 + 186 + 186 + 186 + 185 + 185 + 185 + 184 + 184 + 183 + 183 + 183 + 182 + 182 + 182 + 181 + 181 + 181 + 180 + 180 + 180 + 179 + 179 + 179 + 178 + 178 + 177 + 177 + 177 + 176 + 176 + 175 + 175 + 175 + 174 + 174 + 174 + 173 + 173 + 173 + 173 + 172 + 172 + 172 + 171 + 171 + 171 + 170 + 170 + 170 + 169 + 169 + 169 + 168 + 168 + 168 + 167 + 167 + 167 + 167 + 166 + 166 + 166 + 165 + 165 + 165 + 165 + 164 + 164 + 164 + 163 + 163 + 163 + 163 + 162 + 162 + 162 + 162 + 161 + 161 + 161 + 161 + 160 + 160 + 160 + 160 + 160 + 159 + 159 + 159 + 159 + 158 + 158 + 158 + 158 + 157 + 157 + 157 + 157 + 157 + 156 + 156 + 156 + 156 + 156 + 155 + 155 + 155 + 155 + 155 + 154 + 154 + 154 + 154 + 154 + 153 + 153 + 153 + 153 + 153 + 152 + 152 + 152 + 152 + 152 + 152 + 151 + 151 + 151 + 151 + 151 + 151 + 150 + 150 + 150 + 150 + 150 + 150 + 149 + 149 + 149 + 149 + 149 + 149 + 149 + 148 + 148 + 148 + 148 + 148 + 148 + 148 + 147 + 147 + 147 + 147 + 147 + 147 + 147 + 146 + 146 + 146 + 146 + 146 + 146 + 146 + 145 + 145 + 145 + 145 + 145 + 145 + 145 + 145 + 144 + 144 + 144 + 144 + 144 + 144 + 144 + 143 + 143 + 143 + 143 + 143 + 143 + 143 + 143 + 143 + 142 + 142 + 142 + 142 + 142 + 142 + 142 + 142 + 142 + 142 + 141 + 141 + 141 + 141 + 141 + 141 + 141 + 141 + 140 + 140 + 140 + 140 + 140 + 140 + 140 + 140 + 140 + 140 + 139 + 139 + 139 + 139 + 139 + 139 + 139 + 139 + 139 + 139 + 138 + 138 + 138 + 138 + 138 + 138 + 138 + 138 + 138 + 138 + 138 + 137 + 137 + 137 + 137 + 137 + 137 + 137 + 137 + 137 + 137 + 137 + 136 + 136 + 136 + 136 + 136 + 136 + 136 + 136 + 136 + 136 + 136 + 136 + 135 + 135 + 135 + 135 + 135 + 135 + 135 + 135 + 135 + 135 + 135 + 135 + 134 + 134 + 134 + 134 + 134 + 134 + 134 + 134 + 134 + 134 + 134 + 134 + 134 + 133 + 133 + 133 + 133 + 133 + 133 + 133 + 133 + 133 + 133 + 133 + 133 + 133 + 132 + 132 + 132 + 132 + 132 + 132 + 132 + 132 + 132 + 132 + 132 + 132 + 132 + 132 + 132 + 131 + 131 + 131 + 131 + 131 + 131 + 131 + 131 + 131 + 131 + 131 + 131 + 131 + 131 + 130 + 130 + 130 + 130 + 130 + 130 + 130 + 130 + 130 + 130 + 130 + 130 + 130 + 130 + 130 + 130 + 129 + 129 + 129 + 129 + 129 + 129 + 129 + 129 + 129 + 129 + 129 + 129 + 129 + 129 + 129 + 129 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 99 99 99 @@ -8,34 +1798,3287 @@ Heating to 190 99 99 99 + 99 + 99 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 98 98 98 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 59 +04/09/2020 0:00:34 +Heating to 190 +04/09/2020 0:00:34 + 59 + 59 + 59 + 59 + 59 + 59 + 59 + 59 + 59 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 61 + 61 + 61 + 61 + 62 + 62 + 62 + 63 + 63 + 64 + 64 + 65 + 65 + 65 + 66 + 66 + 67 + 67 + 68 + 69 + 69 + 70 + 70 + 71 + 71 + 72 + 72 + 73 + 73 + 74 + 75 + 75 + 76 + 76 + 77 + 77 + 78 + 78 + 79 + 79 + 80 + 80 + 81 + 81 + 82 + 82 + 83 + 83 + 84 + 84 + 85 + 85 + 86 + 87 + 87 + 88 + 88 + 89 + 89 + 90 + 90 + 91 + 91 + 92 + 92 + 92 + 93 + 93 + 94 + 94 + 95 + 95 + 96 + 96 + 97 + 97 + 97 + 98 + 98 99 99 99 100 100 - 100 + 101 + 101 101 102 + 102 + 103 103 103 104 104 105 105 + 105 + 106 106 106 107 107 + 107 + 108 108 108 109 109 110 110 + 110 + 111 111 111 112 @@ -43,6 +5086,9 @@ Heating to 190 112 113 113 + 113 + 114 + 114 114 114 115 @@ -50,8 +5096,12 @@ Heating to 190 116 116 116 + 116 117 117 + 117 + 118 + 118 118 118 119 @@ -59,45 +5109,65 @@ Heating to 190 119 120 120 + 120 + 120 + 121 121 121 121 122 122 + 122 + 123 123 123 123 124 124 + 124 + 124 + 125 125 125 125 126 126 126 + 126 127 127 127 128 128 + 128 + 128 + 129 129 129 129 130 130 130 + 130 + 130 131 131 131 + 131 + 132 132 132 132 133 133 133 + 133 + 134 134 134 134 + 134 + 135 135 135 135 @@ -108,12 +5178,18 @@ Heating to 190 137 137 137 + 137 + 137 + 138 + 138 138 138 138 139 139 139 + 139 + 140 140 140 140 @@ -121,12 +5197,18 @@ Heating to 190 141 141 141 + 141 + 142 142 142 142 + 142 + 143 143 143 143 + 143 + 144 144 144 144 @@ -138,6 +5220,10 @@ Heating to 190 146 146 146 + 146 + 146 + 147 + 147 147 147 147 @@ -146,6 +5232,7 @@ Heating to 190 148 148 148 + 148 149 149 149 @@ -154,10 +5241,16 @@ Heating to 190 150 150 150 + 150 + 150 + 151 151 151 151 151 + 151 + 152 + 152 152 152 152 @@ -171,10 +5264,15 @@ Heating to 190 154 154 154 + 154 + 154 + 155 155 155 155 155 + 155 + 156 156 156 156 @@ -184,6 +5282,8 @@ Heating to 190 157 157 157 + 157 + 158 158 158 158 @@ -193,11 +5293,15 @@ Heating to 190 159 159 159 + 159 + 159 160 160 160 160 160 + 160 + 161 161 161 161 @@ -208,6 +5312,7 @@ Heating to 190 162 162 162 + 162 163 163 163 @@ -218,6 +5323,9 @@ Heating to 190 164 164 164 + 164 + 165 + 165 165 165 165 @@ -228,6 +5336,9 @@ Heating to 190 166 166 166 + 166 + 167 + 167 167 167 167 @@ -243,6 +5354,9 @@ Heating to 190 169 169 169 + 169 + 170 + 170 170 170 170 @@ -259,6 +5373,8 @@ Heating to 190 172 172 172 + 172 + 172 173 173 173 @@ -271,6 +5387,8 @@ Heating to 190 174 174 174 + 174 + 175 175 175 175 @@ -282,6 +5400,9 @@ Heating to 190 176 176 176 + 176 + 176 + 176 177 177 177 @@ -316,6 +5437,4982 @@ Heating to 190 180 180 180 + 181 + 181 + 181 + 181 + 181 + 181 + 181 + 181 + 182 + 182 + 182 + 182 + 182 + 182 + 183 + 183 + 183 + 183 + 183 + 183 + 183 + 184 + 184 + 184 + 184 + 184 + 184 + 184 + 185 + 185 + 185 + 185 + 185 + 185 + 185 + 186 + 186 + 186 + 186 + 186 + 186 + 186 + 187 + 187 + 187 + 187 + 187 + 187 + 187 + 188 + 188 + 188 + 188 + 188 + 188 + 188 + 188 + 189 +04/09/2020 0:10:05 +cooling down +04/09/2020 0:12:05 + 190 + 190 + 190 + 190 + 190 + 190 + 190 + 190 + 190 + 190 + 190 + 190 + 190 + 189 + 189 + 189 + 189 + 189 + 189 + 189 + 188 + 188 + 188 + 188 + 187 + 187 + 187 + 187 + 186 + 186 + 186 + 185 + 185 + 185 + 184 + 184 + 184 + 183 + 183 + 183 + 182 + 182 + 181 + 181 + 181 + 180 + 180 + 180 + 179 + 179 + 179 + 178 + 178 + 178 + 177 + 177 + 177 + 176 + 176 + 175 + 175 + 175 + 174 + 174 + 174 + 173 + 173 + 173 + 172 + 172 + 172 + 171 + 171 + 171 + 170 + 170 + 169 + 169 + 169 + 169 + 168 + 168 + 168 + 167 + 167 + 167 + 167 + 166 + 166 + 166 + 165 + 165 + 165 + 165 + 164 + 164 + 164 + 163 + 163 + 163 + 163 + 162 + 162 + 162 + 162 + 161 + 161 + 161 + 161 + 160 + 160 + 160 + 160 + 160 + 159 + 159 + 159 + 158 + 158 + 158 + 158 + 158 + 157 + 157 + 157 + 157 + 157 + 156 + 156 + 156 + 156 + 156 + 155 + 155 + 155 + 155 + 154 + 154 + 154 + 154 + 154 + 154 + 153 + 153 + 153 + 153 + 153 + 152 + 152 + 152 + 152 + 152 + 151 + 151 + 151 + 151 + 151 + 151 + 150 + 150 + 150 + 150 + 150 + 150 + 150 + 149 + 149 + 149 + 149 + 149 + 149 + 148 + 148 + 148 + 148 + 148 + 148 + 148 + 147 + 147 + 147 + 147 + 147 + 147 + 146 + 146 + 146 + 146 + 146 + 146 + 146 + 146 + 145 + 145 + 145 + 145 + 145 + 145 + 145 + 145 + 144 + 144 + 144 + 144 + 144 + 144 + 144 + 143 + 143 + 143 + 143 + 143 + 143 + 143 + 143 + 143 + 142 + 142 + 142 + 142 + 142 + 142 + 142 + 142 + 141 + 141 + 141 + 141 + 141 + 141 + 141 + 141 + 141 + 141 + 140 + 140 + 140 + 140 + 140 + 140 + 140 + 140 + 140 + 139 + 139 + 139 + 139 + 139 + 139 + 139 + 139 + 139 + 138 + 138 + 138 + 138 + 138 + 138 + 138 + 138 + 138 + 138 + 138 + 137 + 137 + 137 + 137 + 137 + 137 + 137 + 137 + 137 + 137 + 137 + 136 + 136 + 136 + 136 + 136 + 136 + 136 + 136 + 136 + 136 + 136 + 135 + 135 + 135 + 135 + 135 + 135 + 135 + 135 + 135 + 135 + 135 + 135 + 135 + 134 + 134 + 134 + 134 + 134 + 134 + 134 + 134 + 134 + 134 + 134 + 133 + 133 + 133 + 133 + 133 + 133 + 133 + 133 + 133 + 133 + 133 + 133 + 133 + 132 + 132 + 132 + 132 + 132 + 132 + 132 + 132 + 132 + 132 + 132 + 132 + 132 + 132 + 132 + 131 + 131 + 131 + 131 + 131 + 131 + 131 + 131 + 131 + 131 + 131 + 131 + 131 + 131 + 130 + 130 + 130 + 130 + 130 + 130 + 130 + 130 + 130 + 130 + 130 + 130 + 130 + 130 + 130 + 130 + 129 + 129 + 129 + 129 + 129 + 129 + 129 + 129 + 129 + 129 + 129 + 129 + 129 + 129 + 129 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 59 +04/09/2020 1:27:04 +Heating to 190 +04/09/2020 1:27:04 + 59 + 59 + 59 + 59 + 59 + 59 + 59 + 59 + 59 + 59 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 61 + 61 + 61 + 62 + 62 + 63 + 63 + 63 + 64 + 64 + 65 + 65 + 66 + 66 + 67 + 67 + 68 + 68 + 69 + 69 + 70 + 70 + 71 + 71 + 72 + 72 + 73 + 74 + 74 + 75 + 75 + 76 + 76 + 77 + 77 + 78 + 78 + 79 + 80 + 80 + 81 + 81 + 82 + 82 + 83 + 83 + 84 + 84 + 85 + 85 + 86 + 86 + 87 + 87 + 88 + 88 + 89 + 89 + 89 + 90 + 90 + 91 + 91 + 92 + 92 + 93 + 93 + 94 + 94 + 94 + 95 + 95 + 96 + 96 + 96 + 97 + 97 + 98 + 98 + 98 + 99 + 99 + 100 + 100 + 100 + 101 + 101 + 102 + 102 + 102 + 103 + 103 + 104 + 104 + 104 + 105 + 105 + 105 + 106 + 106 + 106 + 107 + 107 + 107 + 108 + 108 + 108 + 109 + 109 + 109 + 110 + 110 + 110 + 111 + 111 + 111 + 112 + 112 + 112 + 113 + 113 + 113 + 114 + 114 + 114 + 114 + 115 + 115 + 115 + 116 + 116 + 117 + 117 + 117 + 117 + 118 + 118 + 118 + 119 + 119 + 119 + 119 + 120 + 120 + 120 + 121 + 121 + 121 + 121 + 122 + 122 + 122 + 122 + 123 + 123 + 123 + 124 + 124 + 124 + 124 + 125 + 125 + 125 + 125 + 126 + 126 + 126 + 126 + 127 + 127 + 127 + 127 + 128 + 128 + 128 + 128 + 129 + 129 + 129 + 129 + 130 + 130 + 130 + 130 + 131 + 131 + 131 + 131 + 131 + 132 + 132 + 132 + 132 + 133 + 133 + 133 + 133 + 134 + 134 + 134 + 134 + 135 + 135 + 135 + 135 + 135 + 136 + 136 + 136 + 136 + 137 + 137 + 137 + 137 + 137 + 138 + 138 + 138 + 138 + 138 + 139 + 139 + 139 + 139 + 140 + 140 + 140 + 140 + 140 + 141 + 141 + 141 + 141 + 141 + 142 + 142 + 142 + 142 + 142 + 143 + 143 + 143 + 143 + 143 + 144 + 144 + 144 + 144 + 144 + 145 + 145 + 145 + 145 + 145 + 146 + 146 + 146 + 146 + 147 + 147 + 147 + 147 + 147 + 148 + 148 + 148 + 148 + 148 + 148 + 149 + 149 + 149 + 149 + 149 + 150 + 150 + 150 + 150 + 150 + 150 + 151 + 151 + 151 + 151 + 151 + 152 + 152 + 152 + 152 + 152 + 153 + 153 + 153 + 153 + 153 + 153 + 154 + 154 + 154 + 154 + 154 + 155 + 155 + 155 + 155 + 155 + 155 + 156 + 156 + 156 + 156 + 156 + 156 + 157 + 157 + 157 + 157 + 157 + 157 + 158 + 158 + 158 + 158 + 158 + 158 + 159 + 159 + 159 + 159 + 159 + 159 + 160 + 160 + 160 + 160 + 160 + 160 + 161 + 161 + 161 + 161 + 161 + 161 + 162 + 162 + 162 + 162 + 162 + 162 + 163 + 163 + 163 + 163 + 163 + 163 + 163 + 164 + 164 + 164 + 164 + 164 + 164 + 165 + 165 + 165 + 165 + 165 + 165 + 166 + 166 + 166 + 166 + 166 + 166 + 166 + 167 + 167 + 167 + 167 + 167 + 168 + 168 + 168 + 168 + 168 + 168 + 168 + 169 + 169 + 169 + 169 + 169 + 169 + 169 + 170 + 170 + 170 + 170 + 170 + 170 + 171 + 171 + 171 + 171 + 171 + 171 + 171 + 172 + 172 + 172 + 172 + 172 + 172 + 172 + 173 + 173 + 173 + 173 + 173 + 173 + 173 + 174 + 174 + 174 + 174 + 174 + 174 + 174 + 175 + 175 + 175 + 175 + 175 + 175 + 175 + 176 + 176 + 176 + 176 + 176 + 176 + 176 + 176 + 176 + 177 + 177 + 177 + 177 + 177 + 177 + 177 + 177 + 177 + 177 + 178 + 178 + 178 + 178 + 178 + 178 + 178 + 178 + 178 + 178 + 179 + 179 + 179 + 179 + 179 + 179 + 179 + 179 + 179 + 179 + 180 + 180 + 180 + 180 + 180 + 180 + 180 180 181 181 @@ -345,6 +10442,9 @@ Heating to 190 184 184 184 + 184 + 184 + 185 185 185 185 @@ -374,10 +10474,9 @@ Heating to 190 188 188 189 -24/06/2020 9:57:48 +04/09/2020 1:36:30 cooling down -24/06/2020 9:59:48 - 190 +04/09/2020 1:38:30 190 190 190 @@ -410,7 +10509,6 @@ cooling down 186 186 186 - 186 185 185 185 @@ -423,7 +10521,7 @@ cooling down 182 182 182 - 182 + 181 181 181 180 @@ -441,6 +10539,4992 @@ cooling down 176 176 176 + 175 + 175 + 175 + 174 + 174 + 174 + 173 + 173 + 173 + 172 + 172 + 172 + 171 + 171 + 171 + 170 + 170 + 169 + 169 + 169 + 169 + 168 + 168 + 168 + 167 + 167 + 167 + 167 + 166 + 166 + 166 + 165 + 165 + 165 + 165 + 164 + 164 + 164 + 164 + 163 + 163 + 163 + 163 + 162 + 162 + 162 + 162 + 161 + 161 + 161 + 161 + 160 + 160 + 160 + 160 + 160 + 159 + 159 + 159 + 159 + 158 + 158 + 158 + 158 + 158 + 157 + 157 + 157 + 157 + 157 + 156 + 156 + 156 + 156 + 156 + 155 + 155 + 155 + 155 + 155 + 154 + 154 + 154 + 154 + 154 + 153 + 153 + 153 + 153 + 153 + 153 + 152 + 152 + 152 + 152 + 152 + 151 + 151 + 151 + 151 + 151 + 151 + 150 + 150 + 150 + 150 + 150 + 150 + 149 + 149 + 149 + 149 + 149 + 149 + 149 + 148 + 148 + 148 + 148 + 148 + 148 + 148 + 147 + 147 + 147 + 147 + 147 + 147 + 147 + 146 + 146 + 146 + 146 + 146 + 146 + 146 + 146 + 145 + 145 + 145 + 145 + 145 + 145 + 145 + 145 + 144 + 144 + 144 + 144 + 144 + 144 + 144 + 144 + 144 + 143 + 143 + 143 + 143 + 143 + 143 + 143 + 143 + 142 + 142 + 142 + 142 + 142 + 142 + 142 + 142 + 142 + 142 + 141 + 141 + 141 + 141 + 141 + 141 + 141 + 141 + 140 + 140 + 140 + 140 + 140 + 140 + 140 + 140 + 140 + 140 + 139 + 139 + 139 + 139 + 139 + 139 + 139 + 139 + 139 + 139 + 139 + 138 + 138 + 138 + 138 + 138 + 138 + 138 + 138 + 138 + 138 + 137 + 137 + 137 + 137 + 137 + 137 + 137 + 137 + 137 + 137 + 137 + 137 + 136 + 136 + 136 + 136 + 136 + 136 + 136 + 136 + 136 + 136 + 136 + 136 + 135 + 135 + 135 + 135 + 135 + 135 + 135 + 135 + 135 + 135 + 135 + 135 + 135 + 134 + 134 + 134 + 134 + 134 + 134 + 134 + 134 + 134 + 134 + 134 + 134 + 133 + 133 + 133 + 133 + 133 + 133 + 133 + 133 + 133 + 133 + 133 + 133 + 133 + 133 + 132 + 132 + 132 + 132 + 132 + 132 + 132 + 132 + 132 + 132 + 132 + 132 + 132 + 132 + 132 + 131 + 131 + 131 + 131 + 131 + 131 + 131 + 131 + 131 + 131 + 131 + 131 + 131 + 131 + 131 + 130 + 130 + 130 + 130 + 130 + 130 + 130 + 130 + 130 + 130 + 130 + 130 + 130 + 130 + 130 + 130 + 129 + 129 + 129 + 129 + 129 + 129 + 129 + 129 + 129 + 129 + 129 + 129 + 129 + 129 + 129 + 129 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 59 +04/09/2020 2:53:13 +Heating to 190 +04/09/2020 2:53:13 + 59 + 59 + 59 + 59 + 59 + 59 + 59 + 59 + 59 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 61 + 61 + 61 + 61 + 62 + 62 + 63 + 63 + 63 + 64 + 64 + 65 + 65 + 66 + 66 + 67 + 67 + 68 + 68 + 69 + 69 + 70 + 70 + 71 + 71 + 72 + 72 + 73 + 73 + 74 + 75 + 75 + 76 + 76 + 77 + 78 + 78 + 79 + 79 + 80 + 80 + 81 + 81 + 82 + 82 + 83 + 83 + 84 + 84 + 85 + 85 + 86 + 86 + 87 + 87 + 88 + 88 + 89 + 89 + 90 + 90 + 90 + 91 + 91 + 92 + 92 + 93 + 93 + 93 + 94 + 94 + 95 + 95 + 96 + 96 + 96 + 97 + 97 + 98 + 98 + 98 + 99 + 99 + 99 + 100 + 100 + 101 + 101 + 101 + 102 + 102 + 102 + 103 + 103 + 103 + 104 + 104 + 105 + 105 + 105 + 106 + 106 + 106 + 107 + 107 + 107 + 108 + 108 + 108 + 109 + 109 + 109 + 109 + 110 + 110 + 110 + 111 + 111 + 111 + 112 + 112 + 112 + 113 + 113 + 113 + 113 + 114 + 114 + 114 + 115 + 115 + 115 + 115 + 116 + 116 + 116 + 117 + 117 + 117 + 117 + 118 + 118 + 118 + 119 + 119 + 119 + 119 + 120 + 120 + 120 + 121 + 121 + 121 + 121 + 122 + 122 + 122 + 122 + 123 + 123 + 123 + 123 + 124 + 124 + 124 + 124 + 125 + 125 + 125 + 125 + 126 + 126 + 126 + 126 + 127 + 127 + 127 + 127 + 128 + 128 + 128 + 128 + 129 + 129 + 129 + 129 + 130 + 130 + 130 + 130 + 130 + 131 + 131 + 131 + 131 + 132 + 132 + 132 + 132 + 132 + 133 + 133 + 133 + 133 + 134 + 134 + 134 + 134 + 134 + 135 + 135 + 135 + 135 + 135 + 136 + 136 + 136 + 136 + 136 + 137 + 137 + 137 + 137 + 138 + 138 + 138 + 138 + 138 + 139 + 139 + 139 + 139 + 139 + 140 + 140 + 140 + 140 + 140 + 141 + 141 + 141 + 141 + 141 + 142 + 142 + 142 + 142 + 142 + 142 + 143 + 143 + 143 + 143 + 143 + 144 + 144 + 144 + 144 + 144 + 145 + 145 + 145 + 145 + 145 + 146 + 146 + 146 + 146 + 146 + 147 + 147 + 147 + 147 + 147 + 147 + 148 + 148 + 148 + 148 + 148 + 149 + 149 + 149 + 149 + 149 + 149 + 150 + 150 + 150 + 150 + 150 + 151 + 151 + 151 + 151 + 151 + 151 + 152 + 152 + 152 + 152 + 152 + 152 + 153 + 153 + 153 + 153 + 153 + 153 + 154 + 154 + 154 + 154 + 154 + 154 + 155 + 155 + 155 + 155 + 155 + 155 + 156 + 156 + 156 + 156 + 156 + 156 + 156 + 157 + 157 + 157 + 157 + 157 + 157 + 158 + 158 + 158 + 158 + 158 + 158 + 159 + 159 + 159 + 159 + 159 + 159 + 160 + 160 + 160 + 160 + 160 + 160 + 161 + 161 + 161 + 161 + 161 + 161 + 161 + 162 + 162 + 162 + 162 + 162 + 162 + 163 + 163 + 163 + 163 + 163 + 163 + 163 + 164 + 164 + 164 + 164 + 164 + 164 + 165 + 165 + 165 + 165 + 165 + 165 + 165 + 166 + 166 + 166 + 166 + 166 + 166 + 167 + 167 + 167 + 167 + 167 + 167 + 168 + 168 + 168 + 168 + 168 + 168 + 168 + 169 + 169 + 169 + 169 + 169 + 169 + 169 + 170 + 170 + 170 + 170 + 170 + 170 + 170 + 171 + 171 + 171 + 171 + 171 + 171 + 171 + 172 + 172 + 172 + 172 + 172 + 172 + 172 + 173 + 173 + 173 + 173 + 173 + 173 + 173 + 174 + 174 + 174 + 174 + 174 + 174 + 174 + 175 + 175 + 175 + 175 + 175 + 175 + 175 + 176 + 176 + 176 + 176 + 176 + 176 + 176 + 176 + 176 + 177 + 177 + 177 + 177 + 177 + 177 + 177 + 177 + 177 + 177 + 177 + 178 + 178 + 178 + 178 + 178 + 178 + 178 + 178 + 178 + 178 + 179 + 179 + 179 + 179 + 179 + 179 + 179 + 179 + 179 + 180 + 180 + 180 + 180 + 180 + 180 + 180 + 180 + 180 + 181 + 181 + 181 + 181 + 181 + 181 + 181 + 181 + 182 + 182 + 182 + 182 + 182 + 182 + 182 + 183 + 183 + 183 + 183 + 183 + 183 + 183 + 184 + 184 + 184 + 184 + 184 + 184 + 184 + 184 + 184 + 185 + 185 + 185 + 185 + 185 + 185 + 185 + 186 + 186 + 186 + 186 + 186 + 186 + 186 + 186 + 187 + 187 + 187 + 187 + 187 + 187 + 187 + 188 + 188 + 188 + 188 + 188 + 188 + 188 + 188 + 189 +04/09/2020 3:02:59 +cooling down +04/09/2020 3:04:59 + 190 + 190 + 190 + 190 + 190 + 190 + 190 + 190 + 190 + 190 + 190 + 190 + 190 + 189 + 189 + 189 + 189 + 189 + 189 + 189 + 188 + 188 + 188 + 188 + 187 + 187 + 187 + 187 + 186 + 186 + 186 + 186 + 185 + 185 + 185 + 184 + 184 + 184 + 183 + 183 + 183 + 182 + 182 + 182 + 181 + 181 + 181 + 180 + 180 + 180 + 179 + 179 + 179 + 178 + 178 + 178 + 177 + 177 + 177 + 176 + 176 176 175 175 @@ -451,6 +15535,5046 @@ cooling down 173 173 173 + 172 + 172 + 172 + 171 + 171 + 170 + 170 + 170 + 170 + 169 + 169 + 169 + 168 + 168 + 168 + 167 + 167 + 167 + 167 + 166 + 166 + 166 + 166 + 165 + 165 + 165 + 165 + 164 + 164 + 164 + 163 + 163 + 163 + 163 + 162 + 162 + 162 + 162 + 162 + 161 + 161 + 161 + 161 + 160 + 160 + 160 + 160 + 159 + 159 + 159 + 159 + 159 + 158 + 158 + 158 + 158 + 158 + 157 + 157 + 157 + 157 + 157 + 156 + 156 + 156 + 156 + 156 + 155 + 155 + 155 + 155 + 155 + 154 + 154 + 154 + 154 + 154 + 154 + 153 + 153 + 153 + 153 + 153 + 152 + 152 + 152 + 152 + 152 + 151 + 151 + 151 + 151 + 151 + 151 + 151 + 150 + 150 + 150 + 150 + 150 + 150 + 149 + 149 + 149 + 149 + 149 + 149 + 149 + 148 + 148 + 148 + 148 + 148 + 148 + 148 + 147 + 147 + 147 + 147 + 147 + 147 + 147 + 147 + 146 + 146 + 146 + 146 + 146 + 146 + 146 + 146 + 145 + 145 + 145 + 145 + 145 + 145 + 145 + 145 + 144 + 144 + 144 + 144 + 144 + 144 + 144 + 144 + 144 + 143 + 143 + 143 + 143 + 143 + 143 + 143 + 143 + 142 + 142 + 142 + 142 + 142 + 142 + 142 + 142 + 142 + 141 + 141 + 141 + 141 + 141 + 141 + 141 + 141 + 141 + 141 + 140 + 140 + 140 + 140 + 140 + 140 + 140 + 140 + 140 + 140 + 139 + 139 + 139 + 139 + 139 + 139 + 139 + 139 + 139 + 139 + 139 + 138 + 138 + 138 + 138 + 138 + 138 + 138 + 138 + 138 + 138 + 138 + 137 + 137 + 137 + 137 + 137 + 137 + 137 + 137 + 137 + 137 + 137 + 137 + 136 + 136 + 136 + 136 + 136 + 136 + 136 + 136 + 136 + 136 + 136 + 136 + 135 + 135 + 135 + 135 + 135 + 135 + 135 + 135 + 135 + 135 + 135 + 135 + 135 + 134 + 134 + 134 + 134 + 134 + 134 + 134 + 134 + 134 + 134 + 134 + 134 + 133 + 133 + 133 + 133 + 133 + 133 + 133 + 133 + 133 + 133 + 133 + 133 + 133 + 133 + 133 + 132 + 132 + 132 + 132 + 132 + 132 + 132 + 132 + 132 + 132 + 132 + 132 + 132 + 132 + 132 + 131 + 131 + 131 + 131 + 131 + 131 + 131 + 131 + 131 + 131 + 131 + 131 + 131 + 131 + 131 + 130 + 130 + 130 + 130 + 130 + 130 + 130 + 130 + 130 + 130 + 130 + 130 + 130 + 130 + 130 + 130 + 129 + 129 + 129 + 129 + 129 + 129 + 129 + 129 + 129 + 129 + 129 + 129 + 129 + 129 + 129 + 129 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 59 +04/09/2020 4:20:17 +Heating to 190 +04/09/2020 4:20:17 + 59 + 59 + 59 + 59 + 59 + 59 + 59 + 59 + 59 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 61 + 61 + 61 + 61 + 62 + 62 + 62 + 63 + 63 + 64 + 64 + 64 + 65 + 65 + 66 + 66 + 67 + 67 + 68 + 68 + 69 + 69 + 70 + 70 + 71 + 71 + 72 + 72 + 73 + 74 + 74 + 75 + 75 + 76 + 76 + 77 + 77 + 78 + 78 + 79 + 79 + 80 + 80 + 81 + 81 + 82 + 82 + 83 + 83 + 84 + 84 + 85 + 85 + 86 + 86 + 87 + 87 + 88 + 88 + 89 + 89 + 89 + 90 + 90 + 91 + 91 + 92 + 92 + 93 + 93 + 93 + 94 + 94 + 95 + 95 + 95 + 96 + 96 + 97 + 97 + 97 + 98 + 98 + 99 + 99 + 99 + 100 + 100 + 100 + 101 + 101 + 102 + 102 + 102 + 103 + 103 + 103 + 104 + 104 + 104 + 105 + 105 + 105 + 106 + 106 + 107 + 107 + 107 + 108 + 108 + 108 + 109 + 109 + 109 + 110 + 110 + 110 + 111 + 111 + 111 + 112 + 112 + 112 + 112 + 113 + 113 + 113 + 114 + 114 + 114 + 115 + 115 + 115 + 115 + 116 + 116 + 116 + 117 + 117 + 117 + 117 + 118 + 118 + 118 + 118 + 119 + 119 + 119 + 120 + 120 + 120 + 120 + 121 + 121 + 121 + 121 + 122 + 122 + 122 + 122 + 123 + 123 + 123 + 123 + 124 + 124 + 124 + 124 + 125 + 125 + 125 + 125 + 126 + 126 + 126 + 126 + 127 + 127 + 127 + 127 + 127 + 128 + 128 + 128 + 128 + 129 + 129 + 129 + 129 + 130 + 130 + 130 + 130 + 130 + 131 + 131 + 131 + 131 + 132 + 132 + 132 + 132 + 132 + 133 + 133 + 133 + 133 + 133 + 134 + 134 + 134 + 134 + 134 + 135 + 135 + 135 + 135 + 136 + 136 + 136 + 136 + 136 + 137 + 137 + 137 + 137 + 137 + 138 + 138 + 138 + 138 + 138 + 139 + 139 + 139 + 139 + 139 + 140 + 140 + 140 + 140 + 140 + 141 + 141 + 141 + 141 + 142 + 142 + 142 + 142 + 142 + 142 + 143 + 143 + 143 + 143 + 143 + 144 + 144 + 144 + 144 + 144 + 144 + 145 + 145 + 145 + 145 + 145 + 146 + 146 + 146 + 146 + 146 + 146 + 147 + 147 + 147 + 147 + 147 + 148 + 148 + 148 + 148 + 148 + 148 + 149 + 149 + 149 + 149 + 149 + 149 + 150 + 150 + 150 + 150 + 150 + 150 + 151 + 151 + 151 + 151 + 151 + 152 + 152 + 152 + 152 + 152 + 152 + 153 + 153 + 153 + 153 + 153 + 153 + 154 + 154 + 154 + 154 + 154 + 154 + 155 + 155 + 155 + 155 + 155 + 156 + 156 + 156 + 156 + 156 + 156 + 156 + 157 + 157 + 157 + 157 + 157 + 157 + 158 + 158 + 158 + 158 + 158 + 158 + 158 + 159 + 159 + 159 + 159 + 159 + 159 + 160 + 160 + 160 + 160 + 160 + 160 + 160 + 161 + 161 + 161 + 161 + 161 + 161 + 161 + 162 + 162 + 162 + 162 + 162 + 162 + 163 + 163 + 163 + 163 + 163 + 163 + 163 + 164 + 164 + 164 + 164 + 164 + 164 + 164 + 165 + 165 + 165 + 165 + 165 + 166 + 166 + 166 + 166 + 166 + 166 + 166 + 167 + 167 + 167 + 167 + 167 + 167 + 167 + 168 + 168 + 168 + 168 + 168 + 168 + 168 + 169 + 169 + 169 + 169 + 169 + 169 + 169 + 170 + 170 + 170 + 170 + 170 + 170 + 170 + 171 + 171 + 171 + 171 + 171 + 171 + 171 + 172 + 172 + 172 + 172 + 172 + 172 + 172 + 173 + 173 + 173 + 173 + 173 + 173 + 173 + 174 + 174 + 174 + 174 + 174 + 174 + 174 + 175 + 175 + 175 + 175 + 175 + 175 + 175 + 175 + 176 + 176 + 176 + 176 + 176 + 176 + 176 + 176 + 177 + 177 + 177 + 177 + 177 + 177 + 177 + 177 + 177 + 177 + 177 + 178 + 178 + 178 + 178 + 178 + 178 + 178 + 178 + 178 + 178 + 178 + 179 + 179 + 179 + 179 + 179 + 179 + 179 + 179 + 179 + 179 + 180 + 180 + 180 + 180 + 180 + 180 + 180 + 180 + 181 + 181 + 181 + 181 + 181 + 181 + 181 + 181 + 181 + 182 + 182 + 182 + 182 + 182 + 182 + 182 + 182 + 183 + 183 + 183 + 183 + 183 + 183 + 183 + 184 + 184 + 184 + 184 + 184 + 184 + 184 + 185 + 185 + 185 + 185 + 185 + 185 + 185 + 186 + 186 + 186 + 186 + 186 + 186 + 186 + 186 + 187 + 187 + 187 + 187 + 187 + 187 + 187 + 187 + 188 + 188 + 188 + 188 + 188 + 188 + 188 + 188 + 189 +04/09/2020 4:30:11 +cooling down +04/09/2020 4:32:11 + 190 + 190 + 190 + 190 + 190 + 190 + 190 + 190 + 190 + 190 + 190 + 190 + 190 + 189 + 189 + 189 + 189 + 189 + 189 + 189 + 188 + 188 + 188 + 188 + 187 + 187 + 187 + 187 + 186 + 186 + 186 + 186 + 185 + 185 + 185 + 184 + 184 + 184 + 183 + 183 + 183 + 182 + 182 + 182 + 181 + 181 + 181 + 180 + 180 + 180 + 179 + 179 + 179 + 178 + 178 + 178 + 177 + 177 + 177 + 176 + 176 + 176 + 175 + 175 + 175 + 174 + 174 + 174 + 173 + 173 173 172 172 @@ -465,7 +20589,6 @@ cooling down 169 169 169 - 169 168 168 168 @@ -476,7 +20599,6 @@ cooling down 166 166 166 - 166 165 165 165 @@ -489,7 +20611,6 @@ cooling down 163 163 163 - 163 162 162 162 @@ -512,8 +20633,6 @@ cooling down 158 158 158 - 158 - 158 157 157 157 @@ -542,15 +20661,12 @@ cooling down 153 153 153 - 153 152 152 152 152 152 152 - 152 - 151 151 151 151 @@ -569,8 +20685,6 @@ cooling down 149 149 149 - 149 - 149 148 148 148 @@ -579,8 +20693,6 @@ cooling down 148 148 148 - 148 - 147 147 147 147 @@ -588,8 +20700,6 @@ cooling down 147 147 147 - 147 - 146 146 146 146 @@ -606,8 +20716,6 @@ cooling down 145 145 145 - 145 - 144 144 144 144 @@ -626,9 +20734,6 @@ cooling down 143 143 143 - 143 - 142 - 142 142 142 142 @@ -656,3 +20761,4367 @@ cooling down 140 140 140 + 140 + 140 + 140 + 139 + 139 + 139 + 139 + 139 + 139 + 139 + 139 + 139 + 139 + 138 + 138 + 138 + 138 + 138 + 138 + 138 + 138 + 138 + 138 + 138 + 137 + 137 + 137 + 137 + 137 + 137 + 137 + 137 + 137 + 137 + 137 + 137 + 137 + 136 + 136 + 136 + 136 + 136 + 136 + 136 + 136 + 136 + 136 + 136 + 136 + 135 + 135 + 135 + 135 + 135 + 135 + 135 + 135 + 135 + 135 + 135 + 135 + 135 + 134 + 134 + 134 + 134 + 134 + 134 + 134 + 134 + 134 + 134 + 134 + 134 + 133 + 133 + 133 + 133 + 133 + 133 + 133 + 133 + 133 + 133 + 133 + 133 + 133 + 133 + 132 + 132 + 132 + 132 + 132 + 132 + 132 + 132 + 132 + 132 + 132 + 132 + 132 + 132 + 132 + 132 + 131 + 131 + 131 + 131 + 131 + 131 + 131 + 131 + 131 + 131 + 131 + 131 + 131 + 131 + 131 + 130 + 130 + 130 + 130 + 130 + 130 + 130 + 130 + 130 + 130 + 130 + 130 + 130 + 130 + 130 + 130 + 130 + 129 + 129 + 129 + 129 + 129 + 129 + 129 + 129 + 129 + 129 + 129 + 129 + 129 + 129 + 129 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 59 +04/09/2020 5:47:35 +Heating to 190 +04/09/2020 5:47:35 + 59 + 59 + 59 + 59 + 59 + 59 + 59 + 59 + 59 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 61 + 61 + 61 + 62 + 62 + 62 + 63 + 63 + 63 + 64 + 64 + 65 + 65 + 66 + 66 + 67 + 67 + 68 + 68 + 69 + 69 + 70 + 70 + 71 + 71 + 72 + 72 + 73 + 73 + 74 + 75 + 75 + 76 + 76 + 77 + 77 + 78 + 78 + 79 + 79 + 80 + 80 + 81 + 81 + 82 + 82 + 83 + 83 + 84 + 84 + 85 + 85 + 86 + 86 + 87 + 87 + 88 + 88 + 88 + 89 + 90 + 90 + 91 + 91 + 92 + 92 + 92 + 93 + 93 + 94 + 94 + 94 + 95 + 95 + 96 + 96 + 96 + 97 + 97 + 98 + 98 + 98 + 99 + 99 + 100 + 100 + 100 + 101 + 101 + 101 + 102 + 102 + 102 + 103 + 103 + 104 + 104 + 104 + 105 + 105 + 105 + 106 + 106 + 106 + 107 + 107 + 107 + 108 + 108 + 108 + 109 + 109 + 109 + 109 + 110 + 110 + 110 + 111 + 111 + 111 + 112 + 112 + 112 + 113 + 113 + 113 + 113 + 114 + 114 + 114 + 115 + 115 + 115 + 115 + 116 + 116 + 116 + 117 + 117 + 117 + 117 diff --git a/Software/Stubs Collection/stubs/Scripts/Assemblies/Dryer/Dryer_Tset1.CSV b/Software/Stubs Collection/stubs/Scripts/Assemblies/Dryer/Dryer_Tset1.CSV new file mode 100644 index 000000000..6d1a7862c --- /dev/null +++ b/Software/Stubs Collection/stubs/Scripts/Assemblies/Dryer/Dryer_Tset1.CSV @@ -0,0 +1,1600 @@ +06/07/2020 9:43:12 +Heating to 190 +06/07/2020 9:43:12 + 23 + 23 + 23 + 23 + 23 + 23 + 23 + 23 + 23 + 23 + 23 + 23 + 23 + 23 + 23 + 23 + 23 + 23 + 23 + 23 + 23 + 23 + 23 + 23 + 23 + 23 + 24 + 24 + 24 + 24 + 24 + 24 + 25 + 25 + 25 + 26 + 26 + 26 + 27 + 27 + 28 + 28 + 29 + 29 + 30 + 30 + 31 + 31 + 32 + 32 + 33 + 33 + 34 + 34 + 35 + 35 + 36 + 37 + 37 + 38 + 38 + 39 + 39 + 40 + 41 + 41 + 42 + 42 + 43 + 43 + 44 + 44 + 45 + 46 + 46 + 47 + 47 + 48 + 48 + 49 + 49 + 50 + 50 + 51 + 52 + 52 + 53 + 53 + 54 + 54 + 55 + 55 + 56 + 56 + 56 + 57 + 57 + 58 + 58 + 59 + 59 + 60 + 60 + 60 + 61 + 61 + 62 + 62 + 63 + 63 + 63 + 64 + 64 + 65 + 65 + 65 + 66 + 66 + 66 + 67 + 67 + 68 + 68 + 68 + 69 + 69 + 69 + 70 + 70 + 71 + 71 + 71 + 72 + 72 + 72 + 73 + 73 + 73 + 74 + 74 + 74 + 75 + 75 + 75 + 76 + 76 + 76 + 77 + 77 + 77 + 78 + 78 + 78 + 79 + 79 + 79 + 79 + 80 + 80 + 80 + 81 + 81 + 81 + 82 + 82 + 82 + 82 + 83 + 83 + 83 + 84 + 84 + 84 + 84 + 85 + 85 + 85 + 86 + 86 + 86 + 86 + 87 + 87 + 87 + 88 + 88 + 88 + 88 + 89 + 89 + 89 + 89 + 90 + 90 + 90 + 91 + 91 + 91 + 92 + 92 + 92 + 92 + 93 + 93 + 93 + 93 + 94 + 94 + 94 + 94 + 95 + 95 + 95 + 95 + 96 + 96 + 96 + 96 + 97 + 97 + 97 + 97 + 98 + 98 + 98 + 98 + 98 + 99 + 99 + 99 + 99 + 100 + 100 + 100 + 100 + 101 + 101 + 101 + 101 + 102 + 102 + 102 + 102 + 102 + 103 + 103 + 103 + 103 + 104 + 104 + 104 + 104 + 105 + 105 + 105 + 105 + 105 + 106 + 106 + 106 + 106 + 106 + 107 + 107 + 107 + 107 + 107 + 108 + 108 + 108 + 108 + 108 + 109 + 109 + 109 + 109 + 110 + 110 + 110 + 110 + 110 + 111 + 111 + 111 + 111 + 111 + 112 + 112 + 112 + 112 + 112 + 113 + 113 + 113 + 113 + 113 + 114 + 114 + 114 + 114 + 114 + 115 + 115 + 115 + 115 + 115 + 116 + 116 + 116 + 116 + 116 + 117 + 117 + 117 + 117 + 117 + 118 + 118 + 118 + 118 + 119 + 119 + 119 + 119 + 119 + 119 + 120 + 120 + 120 + 120 + 120 + 121 + 121 + 121 + 121 + 121 + 122 + 122 + 122 + 122 + 122 + 123 + 123 + 123 + 123 + 123 + 123 + 124 + 124 + 124 + 124 + 124 + 125 + 125 + 125 + 125 + 125 + 125 + 126 + 126 + 126 + 126 + 126 + 127 + 127 + 127 + 127 + 127 + 128 + 128 + 128 + 128 + 128 + 128 + 129 + 129 + 129 + 129 + 129 + 130 + 130 + 130 + 130 + 130 + 130 + 131 + 131 + 131 + 131 + 131 + 131 + 132 + 132 + 132 + 132 + 132 + 132 + 133 + 133 + 133 + 133 + 133 + 134 + 134 + 134 + 134 + 134 + 134 + 135 + 135 + 135 + 135 + 135 + 135 + 136 + 136 + 136 + 136 + 136 + 136 + 137 + 137 + 137 + 137 + 137 + 137 + 138 + 138 + 138 + 138 + 138 + 138 + 139 + 139 + 139 + 139 + 139 + 139 + 140 + 140 + 140 + 140 + 140 + 140 + 141 + 141 + 141 + 141 + 141 + 141 + 142 + 142 + 142 + 142 + 142 + 142 + 143 + 143 + 143 + 143 + 143 + 143 + 144 + 144 + 144 + 144 + 144 + 144 + 145 + 145 + 145 + 145 + 145 + 145 + 145 + 146 + 146 + 146 + 146 + 146 + 146 + 147 + 147 + 147 + 147 + 147 + 147 + 147 + 148 + 148 + 148 + 148 + 148 + 148 + 149 + 149 + 149 + 149 + 149 + 149 + 150 + 150 + 150 + 150 + 150 + 150 + 150 + 151 + 151 + 151 + 151 + 151 + 151 + 151 + 152 + 152 + 152 + 152 + 152 + 152 + 152 + 153 + 153 + 153 + 153 + 153 + 153 + 153 + 154 + 154 + 154 + 154 + 154 + 154 + 155 + 155 + 155 + 155 + 155 + 155 + 155 + 156 + 156 + 156 + 156 + 156 + 156 + 156 + 157 + 157 + 157 + 157 + 157 + 157 + 157 + 158 + 158 + 158 + 158 + 158 + 158 + 158 + 159 + 159 + 159 + 159 + 159 + 159 + 160 + 160 + 160 + 160 + 160 + 160 + 160 + 161 + 161 + 161 + 161 + 161 + 161 + 161 + 162 + 162 + 162 + 162 + 162 + 162 + 162 + 163 + 163 + 163 + 163 + 163 + 163 + 163 + 164 + 164 + 164 + 164 + 164 + 164 + 164 + 165 + 165 + 165 + 165 + 165 + 165 + 165 + 166 + 166 + 166 + 166 + 166 + 166 + 166 + 166 + 167 + 167 + 167 + 167 + 167 + 167 + 167 + 167 + 168 + 168 + 168 + 168 + 168 + 168 + 168 + 169 + 169 + 169 + 169 + 169 + 169 + 169 + 170 + 170 + 170 + 170 + 170 + 170 + 170 + 170 + 171 + 171 + 171 + 171 + 171 + 171 + 171 + 172 + 172 + 172 + 172 + 172 + 172 + 172 + 172 + 173 + 173 + 173 + 173 + 173 + 173 + 173 + 174 + 174 + 174 + 174 + 174 + 174 + 174 + 175 + 175 + 175 + 175 + 175 + 175 + 175 + 175 + 176 + 176 + 176 + 176 + 176 + 176 + 176 + 176 + 176 + 177 + 177 + 177 + 177 + 177 + 177 + 177 + 177 + 177 + 177 + 177 + 178 + 178 + 178 + 178 + 178 + 178 + 178 + 178 + 178 + 178 + 178 + 179 + 179 + 179 + 179 + 179 + 179 + 179 + 179 + 179 + 179 + 180 + 180 + 180 + 180 + 180 + 180 + 180 + 180 + 180 + 180 + 181 + 181 + 181 + 181 + 181 + 181 + 181 + 181 + 181 + 181 + 182 + 182 + 182 + 182 + 182 + 182 + 182 + 182 + 182 + 182 + 183 + 183 + 183 + 183 + 183 + 183 + 183 + 183 + 183 + 183 + 184 + 184 + 184 + 184 + 184 + 184 + 184 + 184 + 184 + 185 + 185 + 185 + 185 + 185 + 185 + 185 + 185 + 185 + 185 + 186 + 186 + 186 + 186 + 186 + 186 + 186 + 186 + 186 + 187 + 187 + 187 + 187 + 187 + 187 + 187 + 187 + 187 + 188 + 188 + 188 + 188 + 188 + 188 + 188 + 188 + 188 + 188 + 189 +06/07/2020 9:56:54 +cooling down +06/07/2020 9:58:54 + 191 + 191 + 191 + 191 + 191 + 191 + 191 + 191 + 191 + 191 + 191 + 190 + 190 + 190 + 190 + 190 + 190 + 190 + 189 + 189 + 189 + 189 + 188 + 188 + 188 + 188 + 187 + 187 + 186 + 186 + 186 + 185 + 185 + 185 + 184 + 184 + 184 + 183 + 183 + 183 + 182 + 182 + 182 + 181 + 181 + 181 + 180 + 180 + 179 + 179 + 179 + 178 + 178 + 178 + 177 + 177 + 177 + 176 + 176 + 175 + 175 + 175 + 174 + 174 + 174 + 173 + 173 + 173 + 172 + 172 + 172 + 171 + 171 + 171 + 170 + 170 + 170 + 169 + 169 + 169 + 168 + 168 + 168 + 167 + 167 + 167 + 167 + 166 + 166 + 166 + 165 + 165 + 165 + 164 + 164 + 164 + 164 + 163 + 163 + 163 + 162 + 162 + 162 + 161 + 161 + 161 + 161 + 160 + 160 + 160 + 160 + 159 + 159 + 159 + 159 + 158 + 158 + 158 + 158 + 157 + 157 + 157 + 157 + 157 + 156 + 156 + 156 + 156 + 155 + 155 + 155 + 155 + 155 + 154 + 154 + 154 + 154 + 153 + 153 + 153 + 153 + 153 + 152 + 152 + 152 + 152 + 152 + 152 + 151 + 151 + 151 + 151 + 151 + 150 + 150 + 150 + 150 + 150 + 149 + 149 + 149 + 149 + 149 + 149 + 148 + 148 + 148 + 148 + 148 + 148 + 147 + 147 + 147 + 147 + 147 + 147 + 146 + 146 + 146 + 146 + 146 + 146 + 145 + 145 + 145 + 145 + 145 + 145 + 145 + 144 + 144 + 144 + 144 + 144 + 144 + 144 + 143 + 143 + 143 + 143 + 143 + 143 + 143 + 142 + 142 + 142 + 142 + 142 + 142 + 142 + 142 + 141 + 141 + 141 + 141 + 141 + 141 + 141 + 141 + 141 + 140 + 140 + 140 + 140 + 140 + 140 + 140 + 140 + 139 + 139 + 139 + 139 + 139 + 139 + 139 + 139 + 139 + 138 + 138 + 138 + 138 + 138 + 138 + 138 + 138 + 138 + 137 + 137 + 137 + 137 + 137 + 137 + 137 + 137 + 137 + 136 + 136 + 136 + 136 + 136 + 136 + 136 + 136 + 136 + 136 + 135 + 135 + 135 + 135 + 135 + 135 + 135 + 135 + 135 + 135 + 134 + 134 + 134 + 134 + 134 + 134 + 134 + 134 + 134 + 134 + 134 + 133 + 133 + 133 + 133 + 133 + 133 + 133 + 133 + 133 + 133 + 133 + 132 + 132 + 132 + 132 + 132 + 132 + 132 + 132 + 132 + 132 + 132 + 132 + 132 + 131 + 131 + 131 + 131 + 131 + 131 + 131 + 131 + 131 + 131 + 131 + 131 + 130 + 130 + 130 + 130 + 130 + 130 + 130 + 130 + 130 + 130 + 130 + 130 + 129 + 129 + 129 + 129 + 129 + 129 + 129 + 129 + 129 + 129 + 129 + 129 + 129 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 diff --git a/Software/Stubs Collection/stubs/Scripts/Assemblies/Dryer/Dryer_Tset111.CSV b/Software/Stubs Collection/stubs/Scripts/Assemblies/Dryer/Dryer_Tset111.CSV new file mode 100644 index 000000000..4ab057b1c --- /dev/null +++ b/Software/Stubs Collection/stubs/Scripts/Assemblies/Dryer/Dryer_Tset111.CSV @@ -0,0 +1,29654 @@ +16/08/2020 18:49:18 +Heating to 190 +16/08/2020 18:49:18 + 24 + 24 + 24 + 24 + 24 + 24 + 24 + 24 + 24 + 24 + 24 + 24 + 24 + 25 + 25 + 25 + 25 + 25 + 26 + 26 + 26 + 26 + 27 + 27 + 27 + 28 + 28 + 29 + 29 + 29 + 30 + 30 + 31 + 31 + 32 + 32 + 33 + 33 + 33 + 34 + 34 + 35 + 36 + 36 + 37 + 38 + 38 + 39 + 39 + 40 + 40 + 41 + 41 + 42 + 42 + 43 + 43 + 44 + 44 + 45 + 45 + 46 + 46 + 47 + 47 + 48 + 48 + 49 + 49 + 50 + 50 + 51 + 51 + 52 + 52 + 53 + 53 + 53 + 54 + 54 + 55 + 55 + 56 + 56 + 57 + 57 + 57 + 58 + 58 + 59 + 59 + 60 + 60 + 60 + 61 + 61 + 62 + 62 + 63 + 63 + 63 + 64 + 64 + 65 + 65 + 66 + 66 + 66 + 67 + 67 + 67 + 68 + 68 + 69 + 69 + 69 + 70 + 70 + 70 + 71 + 71 + 71 + 72 + 72 + 72 + 73 + 73 + 73 + 74 + 74 + 74 + 75 + 75 + 75 + 76 + 76 + 76 + 77 + 77 + 77 + 78 + 78 + 78 + 79 + 79 + 79 + 79 + 80 + 80 + 80 + 81 + 81 + 81 + 81 + 82 + 82 + 82 + 83 + 83 + 83 + 84 + 84 + 84 + 84 + 85 + 85 + 85 + 85 + 86 + 86 + 86 + 87 + 87 + 87 + 87 + 88 + 88 + 88 + 88 + 89 + 89 + 89 + 89 + 90 + 90 + 90 + 91 + 91 + 91 + 91 + 92 + 92 + 92 + 92 + 93 + 93 + 93 + 93 + 94 + 94 + 94 + 94 + 95 + 95 + 95 + 95 + 95 + 96 + 96 + 96 + 96 + 97 + 97 + 97 + 97 + 98 + 98 + 98 + 98 + 98 + 99 + 99 + 99 + 99 + 100 + 100 + 100 + 100 + 100 + 101 + 101 + 101 + 101 + 102 + 102 + 102 + 102 + 102 + 103 + 103 + 103 + 103 + 104 + 104 + 104 + 104 + 104 + 105 + 105 + 105 + 105 + 105 + 106 + 106 + 106 + 106 + 106 + 107 + 107 + 107 + 107 + 107 + 108 + 108 + 108 + 108 + 108 + 109 + 109 + 109 + 109 + 110 + 110 + 110 + 110 + 110 + 111 + 111 + 111 + 111 + 111 + 112 + 112 + 112 + 112 + 112 + 112 + 113 + 113 + 113 + 113 + 113 + 114 + 114 + 114 + 114 + 114 + 115 + 115 + 115 + 115 + 115 + 115 + 116 + 116 + 116 + 116 + 116 + 117 + 117 + 117 + 117 + 117 + 117 + 118 + 118 + 118 + 118 + 118 + 119 + 119 + 119 + 119 + 119 + 119 + 120 + 120 + 120 + 120 + 120 + 120 + 121 + 121 + 121 + 121 + 121 + 122 + 122 + 122 + 122 + 122 + 122 + 123 + 123 + 123 + 123 + 123 + 123 + 124 + 124 + 124 + 124 + 124 + 124 + 125 + 125 + 125 + 125 + 125 + 125 + 126 + 126 + 126 + 126 + 126 + 126 + 127 + 127 + 127 + 127 + 127 + 127 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 129 + 129 + 129 + 129 + 129 + 129 + 130 + 130 + 130 + 130 + 130 + 130 + 131 + 131 + 131 + 131 + 131 + 131 + 131 + 132 + 132 + 132 + 132 + 132 + 133 + 133 + 133 + 133 + 133 + 133 + 133 + 134 + 134 + 134 + 134 + 134 + 134 + 135 + 135 + 135 + 135 + 135 + 135 + 135 + 136 + 136 + 136 + 136 + 136 + 136 + 136 + 137 + 137 + 137 + 137 + 137 + 137 + 138 + 138 + 138 + 138 + 138 + 138 + 138 + 139 + 139 + 139 + 139 + 139 + 139 + 139 + 140 + 140 + 140 + 140 + 140 + 140 + 140 + 141 + 141 + 141 + 141 + 141 + 141 + 141 + 142 + 142 + 142 + 142 + 142 + 142 + 142 + 143 + 143 + 143 + 143 + 143 + 143 + 143 + 143 + 144 + 144 + 144 + 144 + 144 + 144 + 144 + 145 + 145 + 145 + 145 + 145 + 145 + 146 + 146 + 146 + 146 + 146 + 146 + 146 + 147 + 147 + 147 + 147 + 147 + 147 + 147 + 147 + 148 + 148 + 148 + 148 + 148 + 148 + 148 + 148 + 149 + 149 + 149 + 149 + 149 + 149 + 149 + 150 + 150 + 150 + 150 + 150 + 150 + 150 + 150 + 151 + 151 + 151 + 151 + 151 + 151 + 151 + 151 + 152 + 152 + 152 + 152 + 152 + 152 + 152 + 152 + 153 + 153 + 153 + 153 + 153 + 153 + 154 + 154 + 154 + 154 + 154 + 154 + 154 + 154 + 155 + 155 + 155 + 155 + 155 + 155 + 155 + 155 + 155 + 156 + 156 + 156 + 156 + 156 + 156 + 156 + 156 + 156 + 157 + 157 + 157 + 157 + 157 + 157 + 157 + 157 + 157 + 158 + 158 + 158 + 158 + 158 + 158 + 158 + 158 + 158 + 159 + 159 + 159 + 159 + 159 + 159 + 159 + 159 + 159 + 160 + 160 + 160 + 160 + 160 + 160 + 160 + 160 + 160 + 161 + 161 + 161 + 161 + 161 + 161 + 161 + 161 + 161 + 162 + 162 + 162 + 162 + 162 + 162 + 162 + 162 + 163 + 163 + 163 + 163 + 163 + 163 + 163 + 163 + 164 + 164 + 164 + 164 + 164 + 164 + 164 + 164 + 164 + 165 + 165 + 165 + 165 + 165 + 165 + 165 + 165 + 165 + 166 + 166 + 166 + 166 + 166 + 166 + 166 + 166 + 167 + 167 + 167 + 167 + 167 + 167 + 167 + 167 + 167 + 168 + 168 + 168 + 168 + 168 + 168 + 168 + 168 + 168 + 169 + 169 + 169 + 169 + 169 + 169 + 169 + 169 + 169 + 170 + 170 + 170 + 170 + 170 + 170 + 170 + 170 + 170 + 171 + 171 + 171 + 171 + 171 + 171 + 171 + 171 + 171 + 172 + 172 + 172 + 172 + 172 + 172 + 172 + 172 + 172 + 173 + 173 + 173 + 173 + 173 + 173 + 173 + 173 + 173 + 174 + 174 + 174 + 174 + 174 + 174 + 174 + 174 + 174 + 174 + 175 + 175 + 175 + 175 + 175 + 175 + 175 + 175 + 175 + 175 + 176 + 176 + 176 + 176 + 176 + 176 + 176 + 176 + 176 + 176 + 177 + 177 + 177 + 177 + 177 + 177 + 177 + 177 + 177 + 177 + 177 + 177 + 178 + 178 + 178 + 178 + 178 + 178 + 178 + 178 + 178 + 178 + 179 + 179 + 179 + 179 + 179 + 179 + 179 + 179 + 179 + 180 + 180 + 180 + 180 + 180 + 180 + 180 + 180 + 180 + 180 + 181 + 181 + 181 + 181 + 181 + 181 + 181 + 181 + 181 + 182 + 182 + 182 + 182 + 182 + 182 + 182 + 182 + 182 + 183 + 183 + 183 + 183 + 183 + 183 + 183 + 183 + 183 + 183 + 184 + 184 + 184 + 184 + 184 + 184 + 184 + 184 + 184 + 185 + 185 + 185 + 185 + 185 + 185 + 185 + 185 + 185 + 185 + 186 + 186 + 186 + 186 + 186 + 186 + 186 + 186 + 186 + 186 + 187 + 187 + 187 + 187 + 187 + 187 + 187 + 187 + 187 + 188 + 188 + 188 + 188 + 188 + 188 + 188 + 188 + 188 + 188 + 189 +16/08/2020 19:04:08 +cooling down +16/08/2020 19:06:08 + 193 + 193 + 193 + 193 + 193 + 193 + 192 + 192 + 192 + 192 + 192 + 192 + 192 + 192 + 191 + 191 + 191 + 191 + 191 + 191 + 190 + 190 + 190 + 190 + 190 + 189 + 189 + 189 + 189 + 188 + 188 + 188 + 188 + 187 + 187 + 187 + 186 + 186 + 186 + 185 + 185 + 185 + 185 + 184 + 184 + 184 + 183 + 183 + 183 + 182 + 182 + 182 + 181 + 181 + 181 + 180 + 180 + 180 + 179 + 179 + 179 + 178 + 178 + 178 + 178 + 177 + 177 + 176 + 176 + 176 + 175 + 175 + 175 + 174 + 174 + 174 + 174 + 173 + 173 + 173 + 172 + 172 + 172 + 171 + 171 + 171 + 171 + 170 + 170 + 170 + 169 + 169 + 169 + 169 + 168 + 168 + 168 + 167 + 167 + 167 + 167 + 166 + 166 + 166 + 166 + 165 + 165 + 165 + 165 + 164 + 164 + 164 + 164 + 163 + 163 + 163 + 163 + 162 + 162 + 162 + 162 + 161 + 161 + 161 + 161 + 160 + 160 + 160 + 160 + 159 + 159 + 159 + 159 + 158 + 158 + 158 + 158 + 158 + 157 + 157 + 157 + 157 + 157 + 156 + 156 + 156 + 156 + 156 + 155 + 155 + 155 + 155 + 155 + 154 + 154 + 154 + 154 + 154 + 153 + 153 + 153 + 153 + 153 + 153 + 152 + 152 + 152 + 152 + 152 + 151 + 151 + 151 + 151 + 151 + 151 + 150 + 150 + 150 + 150 + 150 + 150 + 149 + 149 + 149 + 149 + 149 + 149 + 149 + 148 + 148 + 148 + 148 + 148 + 148 + 147 + 147 + 147 + 147 + 147 + 147 + 146 + 146 + 146 + 146 + 146 + 146 + 146 + 146 + 145 + 145 + 145 + 145 + 145 + 145 + 145 + 144 + 144 + 144 + 144 + 144 + 144 + 144 + 144 + 143 + 143 + 143 + 143 + 143 + 143 + 143 + 143 + 142 + 142 + 142 + 142 + 142 + 142 + 142 + 142 + 141 + 141 + 141 + 141 + 141 + 141 + 141 + 141 + 141 + 140 + 140 + 140 + 140 + 140 + 140 + 140 + 140 + 140 + 139 + 139 + 139 + 139 + 139 + 139 + 139 + 139 + 139 + 138 + 138 + 138 + 138 + 138 + 138 + 138 + 138 + 138 + 137 + 137 + 137 + 137 + 137 + 137 + 137 + 137 + 137 + 137 + 136 + 136 + 136 + 136 + 136 + 136 + 136 + 136 + 136 + 136 + 136 + 135 + 135 + 135 + 135 + 135 + 135 + 135 + 135 + 135 + 135 + 135 + 134 + 134 + 134 + 134 + 134 + 134 + 134 + 134 + 134 + 134 + 134 + 133 + 133 + 133 + 133 + 133 + 133 + 133 + 133 + 133 + 133 + 133 + 133 + 133 + 132 + 132 + 132 + 132 + 132 + 132 + 132 + 132 + 132 + 132 + 132 + 132 + 131 + 131 + 131 + 131 + 131 + 131 + 131 + 131 + 131 + 131 + 131 + 131 + 130 + 130 + 130 + 130 + 130 + 130 + 130 + 130 + 130 + 130 + 130 + 130 + 130 + 130 + 129 + 129 + 129 + 129 + 129 + 129 + 129 + 129 + 129 + 129 + 129 + 129 + 129 + 129 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 128 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 127 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 126 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 125 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 124 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 123 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 122 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 121 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 120 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 119 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 118 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 117 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 116 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 115 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 114 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 113 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 112 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 111 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 110 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 109 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 108 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 107 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 106 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 105 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 104 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 103 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 102 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 101 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 100 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 99 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 98 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 97 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 96 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 95 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 94 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 93 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 92 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 91 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 90 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 89 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 88 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 87 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 85 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 84 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 83 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 81 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 80 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 79 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 78 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 77 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 76 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 75 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 74 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 73 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 72 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 71 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 70 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 69 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 68 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 67 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 66 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 65 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 63 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 62 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 61 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 59 +16/08/2020 20:12:40 +Heating to 190 +16/08/2020 20:12:40 + 59 + 59 + 59 + 59 + 59 + 59 + 59 + 59 + 59 + 59 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 60 + 61 + 61 + 61 + 61 + 62 + 62 + 62 + 62 + 63 + 63 + 64 + 64 + 64 + 65 + 65 + 66 + 66 + 66 + 67 + 67 + 68 + 68 + 69 + 69 + 70 + 70 + 71 + 71 + 71 + 72 + 72 + 73 + 73 + 74 + 74 + 75 + 75 + 76 + 76 + 77 + 77 + 78 + 78 + 79 + 80 + 80 + 81 + 81 + 82 + 82 + 82 + 83 + 83 + 84 + 84 + 85 + 85 + 86 + 86 + 87 + 87 + 87 + 88 + 88 + 89 + 89 + 90 + 90 + 90 + 91 + 91 + 92 + 92 + 93 + 93 + 93 + 94 + 94 + 95 + 95 + 95 + 96 + 96 + 97 + 97 + 97 + 98 + 98 + 98 + 99 + 99 + 99 + 100 + 100 + 101 + 101 + 101 + 102 + 102 + 102 + 103 + 103 + 103 + 104 + 104 + 104 + 105 + 105 + 105 + 106 + 106 + 106 + 107 + 107 + 107 + 108 + 108 + 108 + 109 + 109 + 109 + 109 + 110 + 110 + 110 + 111 + 111 + 111 + 112 + 112 + 113 + 113 + 113 + 113 + 114 + 114 + 114 + 115 + 115 + 115 + 115 + 116 + 116 + 116 + 116 + 117 + 117 + 117 + 118 + 118 + 118 + 118 + 119 + 119 + 119 + 119 + 120 + 120 + 120 + 120 + 121 + 121 + 121 + 121 + 122 + 122 + 122 + 122 + 123 + 123 + 123 + 123 + 124 + 124 + 124 + 124 + 125 + 125 + 125 + 125 + 126 + 126 + 126 + 126 + 126 + 127 + 127 + 127 + 127 + 128 + 128 + 128 + 128 + 129 + 129 + 129 + 129 + 129 + 130 + 130 + 130 + 130 + 131 + 131 + 131 + 131 + 131 + 132 + 132 + 132 + 132 + 133 + 133 + 133 + 133 + 134 + 134 + 134 + 134 + 134 + 135 + 135 + 135 + 135 + 135 + 136 + 136 + 136 + 136 + 136 + 137 + 137 + 137 + 137 + 137 + 138 + 138 + 138 + 138 + 138 + 139 + 139 + 139 + 139 + 139 + 140 + 140 + 140 + 140 + 140 + 140 + 141 + 141 + 141 + 141 + 141 + 142 + 142 + 142 + 142 + 142 + 142 + 143 + 143 + 143 + 143 + 143 + 144 + 144 + 144 + 144 + 144 + 144 + 145 + 145 + 145 + 145 + 145 + 145 + 146 + 146 + 146 + 146 + 146 + 146 + 147 + 147 + 147 + 147 + 147 + 147 + 148 + 148 + 148 + 148 + 148 + 148 + 149 + 149 + 149 + 149 + 149 + 149 + 150 + 150 + 150 + 150 + 150 + 150 + 151 + 151 + 151 + 151 + 151 + 151 + 151 + 152 + 152 + 152 + 152 + 152 + 152 + 153 + 153 + 153 + 153 + 153 + 153 + 154 + 154 + 154 + 154 + 154 + 154 + 155 + 155 + 155 + 155 + 155 + 155 + 156 + 156 + 156 + 156 + 156 + 156 + 156 + 157 + 157 + 157 + 157 + 157 + 157 + 157 + 158 + 158 + 158 + 158 + 158 + 158 + 159 + 159 + 159 + 159 + 159 + 159 + 159 + 160 + 160 + 160 + 160 + 160 + 160 + 160 + 161 + 161 + 161 + 161 + 161 + 161 + 161 + 162 + 162 + 162 + 162 + 162 + 162 + 162 + 163 + 163 + 163 + 163 + 163 + 163 + 163 + 164 + 164 + 164 + 164 + 164 + 164 + 164 + 164 + 165 + 165 + 165 + 165 + 165 + 165 + 165 + 166 + 166 + 166 + 166 + 166 + 166 + 166 + 166 + 167 + 167 + 167 + 167 + 167 + 167 + 167 + 168 + 168 + 168 + 168 + 168 + 168 + 168 + 169 + 169 + 169 + 169 + 169 + 169 + 169 + 169 + 170 + 170 + 170 + 170 + 170 + 170 + 170 + 171 + 171 + 171 + 171 + 171 + 171 + 171 + 171 + 172 + 172 + 172 + 172 + 172 + 172 + 172 + 173 + 173 + 173 + 173 + 173 + 173 + 173 + 173 + 173 + 174 + 174 + 174 + 174 + 174 + 174 + 174 + 174 + 175 + 175 + 175 + 175 + 175 + 175 + 175 + 175 + 176 + 176 + 176 + 176 + 176 + 176 + 176 + 176 + 176 + 177 + 177 + 177 + 177 + 177 + 177 + 177 + 177 + 177 + 177 + 178 + 178 + 178 + 178 + 178 + 178 + 178 + 178 + 178 + 178 + 178 + 179 + 179 + 179 + 179 + 179 + 179 + 179 + 179 + 179 + 180 + 180 + 180 + 180 + 180 + 180 + 180 + 180 + 180 + 181 + 181 + 181 + 181 + 181 + 181 + 181 + 181 + 181 + 182 + 182 + 182 + 182 + 182 + 182 + 182 + 182 + 182 + 183 + 183 + 183 + 183 + 183 + 183 + 183 + 183 + 184 + 184 + 184 + 184 + 184 + 184 + 184 + 184 + 185 + 185 + 185 + 185 + 185 + 185 + 185 + 185 + 185 + 186 + 186 + 186 + 186 + 186 + 186 + 186 + 186 + 187 + 187 + 187 + 187 + 187 + 187 + 187 + 187 + 187 + 188 + 188 + 188 + 188 + 188 + 188 + 188 + 189 +16/08/2020 20:23:12 +cooling down +17/08/2020 0:35:05 + 42 +17/08/2020 0:35:06 +Heating to 190 +17/08/2020 0:35:06 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 41 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 40 + 39 + 40 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 39 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 38 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 36 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 35 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 34 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 32 + 33 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 32 + 31 + 32 + 32 + 32 + 31 + 31 + 31 + 32 + 31 + 31 + 31 + 31 + 32 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 31 + 30 + 30 + 31 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 30 + 29 + 30 + 30 + 30 + 30 + 30 + 30 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 + 29 diff --git a/Software/Stubs Collection/stubs/Scripts/Assemblies/Dryer/blower_rpm.cs b/Software/Stubs Collection/stubs/Scripts/Assemblies/Dryer/blower_rpm.cs new file mode 100644 index 000000000..13e6af513 --- /dev/null +++ b/Software/Stubs Collection/stubs/Scripts/Assemblies/Dryer/blower_rpm.cs @@ -0,0 +1,62 @@ +using System; +using System.Text; +using System.Linq; +using System.Drawing; +using System.Diagnostics; +using System.Windows.Forms; +using System.Threading; +using System.Threading.Tasks; +using System.Collections.Generic; +using Tango.PMR.Stubs; +using Tango.Stubs; + +include "..\..\Defines\Tango_Defines_Basic.cs" +include "Tango_Defines_SSR.cs" +include "Tango_Defines_Tacho.cs" + +const int Time_Test_On_Second= 60*30*3 ; //1.5 hour +const string File_Name = @"P:\Scripts\Assemblies\Dryer\Blowe_RMO_LOG.CSV"; //3 hour + + +public void OnExecute(StubManager stubManager) +{ + + +/* + const int LOW = 75;//0 - 100% + var response = stubManager.Run<StubFpgaWriteRegResponse>("StubFpgaWriteRegRequest" ,0x60000400 | 0x112, 0xFF);//Freq 8 bit + var response1 = stubManager.Run<StubFpgaWriteRegResponse>("StubFpgaWriteRegRequest" ,0x60000400 | 0x3EC, LOW+1);//Low 8 bit + var response2 = stubManager.Run<StubFpgaWriteRegResponse>("StubFpgaWriteRegRequest" ,0x60000400 | 0x3EE, 101 - LOW);//High 8 bit +*/ + + + + + + + + var RetVal=Fpga_Read_Reg(FPGA1, F1_Tacho_reg8, 0); + UInt32 temp; + + +// stubManager.WriteToFile(File_Name,",RPM "); + + + for (int i=0;i<Time_Test_On_Second;i++) + + { + + Thread.Sleep(1000); + RetVal=Fpga_Read_Reg(FPGA1, F1_Tacho_reg8, 0); + temp=60/12; //60 sec + temp=temp *29166667; + temp=temp/RetVal.Value; + temp=temp/250; +// stubManager.AppendToFile(File_Name,i+ ","+ temp ); + + stubManager.Write("Fan5 Speed- \t"+temp + "\n"); +// stubManager.WriteHex(RetVal.Value,4); + + } + +}
\ No newline at end of file diff --git a/Software/Stubs Collection/stubs/Scripts/Assemblies/Dryer/test_dryer_heater.cs b/Software/Stubs Collection/stubs/Scripts/Assemblies/Dryer/test_dryer_heater.cs index c9945fb1e..1977c13a6 100644 --- a/Software/Stubs Collection/stubs/Scripts/Assemblies/Dryer/test_dryer_heater.cs +++ b/Software/Stubs Collection/stubs/Scripts/Assemblies/Dryer/test_dryer_heater.cs @@ -21,7 +21,7 @@ public void OnExecute(StubManager stubManager) stubManager.Run<StubMotorRunResponse>("StubMotorRunRequest" ,3,true, 2200); - for (int i=0;i<5;i++) + for (int i=0;i<10;i++) { stubManager.WriteLine("--------------------loop number " + i +" ---------------------" ); diff --git a/Software/Stubs Collection/stubs/Scripts/Assemblies/Dye head/Actuator_In_new set point.cs b/Software/Stubs Collection/stubs/Scripts/Assemblies/Dye head/Actuator_In_new set point.cs new file mode 100644 index 000000000..dc5d5af07 --- /dev/null +++ b/Software/Stubs Collection/stubs/Scripts/Assemblies/Dye head/Actuator_In_new set point.cs @@ -0,0 +1,34 @@ +using System; +using System.Text; +using System.Linq; +using System.Drawing; +using System.Diagnostics; +using System.Windows.Forms; +using System.Threading; +using System.Threading.Tasks; +using System.Collections.Generic; +using Tango.PMR.Stubs; +using Tango.Stubs; + +public void OnExecute(StubManager stubManager) +{ +int Delay_UP=200; //msec +int Delay_stop=500; +int Delay_limit=1000; + + stubManager.Run<ProgressResponse>("ProgressRequest" ,0xfead, 0xcaf000); //mov ACTUATOR-IN down up to limit switch + Thread.Sleep(2000); +// while (true) +// { + + stubManager.Run<ProgressResponse>("ProgressRequest" ,0xfead, 0xcaf003); //mov ACTUATOR-IN up + Thread.Sleep(Delay_UP); + stubManager.Run<ProgressResponse>("ProgressRequest" ,0xfead, 0xcaf008); //stop ACTUATOR-IN + Thread.Sleep(Delay_stop); + // stubManager.Run<ProgressResponse>("ProgressRequest" ,0xfead, 0xcaf000); //mov ACTUATOR-IN down up to limit switch +// Thread.Sleep(Delay_limit); + + // } + + +}
\ No newline at end of file diff --git a/Software/Stubs Collection/stubs/Scripts/Write SYLKO to head eeprom.cs b/Software/Stubs Collection/stubs/Scripts/Assemblies/Dye head/Write SYLKO to head eeprom.cs index d7729ca2f..d7729ca2f 100644 --- a/Software/Stubs Collection/stubs/Scripts/Write SYLKO to head eeprom.cs +++ b/Software/Stubs Collection/stubs/Scripts/Assemblies/Dye head/Write SYLKO to head eeprom.cs diff --git a/Software/Stubs Collection/stubs/Scripts/Assemblies/ElectricalEnclosure/ElectricalEnclosure_Fans1.cs b/Software/Stubs Collection/stubs/Scripts/Assemblies/ElectricalEnclosure/ElectricalEnclosure_Fans1.cs index af5a07543..ba39cb2b0 100644 --- a/Software/Stubs Collection/stubs/Scripts/Assemblies/ElectricalEnclosure/ElectricalEnclosure_Fans1.cs +++ b/Software/Stubs Collection/stubs/Scripts/Assemblies/ElectricalEnclosure/ElectricalEnclosure_Fans1.cs @@ -73,7 +73,7 @@ public void OnExecute(StubManager stubManager) for (int i = 0; i<1000; i++) { - stubManager.Write("----------------------------------------\n"); + stubManager.Write("\n----------------------------------------\n"); // Fpga_Read_Reg(FPGA1, F1_Tacho_reg0, 0); stubManager.Write("\n"); // Fpga_Read_Reg(FPGA1, F1_Tacho_reg1, 1); stubManager.Write("\n"); // Fpga_Read_Reg(FPGA1, F1_Tacho_reg2, 1); stubManager.Write("\n"); @@ -83,61 +83,85 @@ public void OnExecute(StubManager stubManager) var RetVal=Fpga_Read_Reg(FPGA1, F1_Tacho_reg0, 0); stubManager.Write("\nFan5 Speed-"); stubManager.WriteHex(RetVal.Value,4); - - + if (RetVal.Value>0x440 && RetVal.Value<0x4d0) + stubManager.Write("\t Pass"); + else + stubManager.Write("\t Fail"); RetVal=Fpga_Read_Reg(FPGA1, F1_Tacho_reg1, 0); stubManager.Write("\nFan1 Speed-"); stubManager.WriteHex(RetVal.Value,4); + if (RetVal.Value>0x220 && RetVal.Value<0x300) + stubManager.Write("\t Pass"); + else + stubManager.Write("\t Fail"); + + + - RetVal = Fpga_Read_Reg(FPGA1, F1_gpi_FANS, 0); - Temp1=RetVal.Value & 0x0001; - if (Temp1 !=0x0001) - stubManager.Write("\tFan1 Running "); - else - stubManager.Write("\tFan1 Stop"); +// RetVal = Fpga_Read_Reg(FPGA1, F1_gpi_FANS, 0); +// Temp1=RetVal.Value & 0x0001; +// if (Temp1 !=0x0001) +// stubManager.Write("\tFan1 Running "); +// else +// stubManager.Write("\tFan1 Stop"); RetVal=Fpga_Read_Reg(FPGA1, F1_Tacho_reg2, 0); stubManager.Write("\nFan2 Speed-"); stubManager.WriteHex(RetVal.Value,4); + if (RetVal.Value>0x220 && RetVal.Value<0x300) + stubManager.Write("\t Pass"); + else + stubManager.Write("\t Fail"); + - Temp1=RetVal.Value & 0x0002; - if (Temp1 !=0x0002) - stubManager.Write("\tFan2 Running "); - else - stubManager.Write("\tFan2 Stop"); +// Temp1=RetVal.Value & 0x0002; +// if (Temp1 !=0x0002) +// stubManager.Write("\tFan2 Running "); +// else +// stubManager.Write("\tFan2 Stop"); RetVal=Fpga_Read_Reg(FPGA1, F1_Tacho_reg3, 0); stubManager.Write("\nFan3 Speed-"); stubManager.WriteHex(RetVal.Value,4); + if (RetVal.Value>0x220 && RetVal.Value<0x300) + stubManager.Write("\t Pass"); + else + stubManager.Write("\t Fail"); + - Temp1=RetVal.Value & 0x0004; - if (Temp1 !=0x0004) - stubManager.Write("\tFan3 Running "); - else - stubManager.Write("\tFan3 Stop"); +// Temp1=RetVal.Value & 0x0004; +// if (Temp1 !=0x0004) +// stubManager.Write("\tFan3 Running "); +// else +// stubManager.Write("\tFan3 Stop"); RetVal=Fpga_Read_Reg(FPGA1, F1_Tacho_reg4, 0); stubManager.Write("\nFan4 Speed-"); stubManager.WriteHex(RetVal.Value,4); + if (RetVal.Value>0x220 && RetVal.Value<0x300) + stubManager.Write("\t Pass"); + else + stubManager.Write("\t Fail"); + - Temp1=RetVal.Value & 0x0008; - if (Temp1 !=0x0008) - stubManager.Write("\tFan4 Running "); - else - stubManager.Write("\tFan4 Stop"); +// Temp1=RetVal.Value & 0x0008; +// if (Temp1 !=0x0008) +// stubManager.Write("\tFan4 Running "); +// else +// stubManager.Write("\tFan4 Stop"); - Fpga_Read_Reg(FPGA1, F1_Tacho_reg5, 1); stubManager.Write("\n"); - Fpga_Read_Reg(FPGA1, F1_Tacho_reg6, 1); stubManager.Write("\n"); - Fpga_Read_Reg(FPGA1, F1_Tacho_reg7, 1); stubManager.Write("\n"); - Fpga_Read_Reg(FPGA2, F2_Tacho_reg0, 1); stubManager.Write("\n"); +// Fpga_Read_Reg(FPGA1, F1_Tacho_reg5, 1); stubManager.Write("\n"); +// Fpga_Read_Reg(FPGA1, F1_Tacho_reg6, 1); stubManager.Write("\n"); +// Fpga_Read_Reg(FPGA1, F1_Tacho_reg7, 1); stubManager.Write("\n"); +// Fpga_Read_Reg(FPGA2, F2_Tacho_reg0, 1); stubManager.Write("\n"); //stubManager.Write("\n\n"); Thread.Sleep(1000); diff --git a/Software/Stubs Collection/stubs/Scripts/Assemblies/MidTank/DO_NOT_WORK_New_Calibrate_Midtank_pressure_sensors.cs b/Software/Stubs Collection/stubs/Scripts/Assemblies/MidTank/DO_NOT_WORK_New_Calibrate_Midtank_pressure_sensors.cs index 254a3143b..2acbe7d71 100644 --- a/Software/Stubs Collection/stubs/Scripts/Assemblies/MidTank/DO_NOT_WORK_New_Calibrate_Midtank_pressure_sensors.cs +++ b/Software/Stubs Collection/stubs/Scripts/Assemblies/MidTank/DO_NOT_WORK_New_Calibrate_Midtank_pressure_sensors.cs @@ -13,6 +13,7 @@ using Tango.PMR.EmbeddedParameters; using Tango.Stubs; //---------------------- +const double Slop=0.92; const double MIN_SLOP=0.7; const double MAX_SLOP=1.4; const double ERROR_SLOP=-1; @@ -39,6 +40,7 @@ private const string FILE_PATH = @"C:\MidTankLog\"; string File_name; double [,] voltage_array = new double[9,9]; string [] Parameter = new string[5] {"\t","Empty [V]","100cc [V]","800cc [V]"," b [L/V] "}; + double Full_Cartridge=1; // 1 litter less 100 cc //---------------------- const Int32 I2C_ID = 2; @@ -58,9 +60,11 @@ const Int32 I2C_ID = 2; public void OnExecute(StubManager stubManager) { Int32 midtankno = 0; - double Slop; - double Zero_Point; - + double Full_Point=0; //on Voltage + double resualt; + double Sum=0 ; + double Old_Sum=0 ; + if (!Directory.Exists(FILE_PATH)) { @@ -73,9 +77,9 @@ public void OnExecute(StubManager stubManager) stubManager.Write("\n"); Machine_SN = response; stubManager.WriteLine(Machine_SN); - File_name= FILE_PATH +Machine_SN + DateTime.Now.ToString("MM_dd_yyyy_HH_mm_ss")+".LOG"; + File_name= FILE_PATH +Machine_SN + DateTime.Now.ToString("MM_dd_yyyy_HH_mm_ss")+".csv"; stubManager.Write(File_name); - stubManager.WriteToFile(File_name,"MidTank S/N:" + Machine_SN); + stubManager.WriteToFile(File_name,"MidTank S/N:," + Machine_SN); // voltage_array[1,0]=1; // voltage_array[2,0]=2; @@ -91,59 +95,79 @@ public void OnExecute(StubManager stubManager) var response1 = stubManager.ShowResponseWindow("Enter Midtank number to calibrate (1-8):", ""); stubManager.WriteLine(response1); midtankno = Int32.Parse(response1); - stubManager.WriteToFile(File_name,"MidTank Number:\t" + response1); + stubManager.AppendToFile(File_name,"MidTank Number:\t" + response1); - string box_msg = "Please Insert cartridge "; + string box_msg = "Please Insert cartridge with 1000cc except Lubbricant add 500cc only "; // string box_title = "Midatnk empty"; // MessageBox.Show(box_msg, box_title); MessageBox.Show(box_msg); - open_valve(midtankno,1,1) ; //open Air valve - open_valve(midtankno,0,1) ; //open Ink valve - - - - - - - - + open_valve(midtankno,1,1) ; //open Air valve + open_valve(midtankno,0,1) ; //open Ink valve + Int32 i=0; + while (i<60*15) //check for 15 minitus + { + Sum=0; + for (Int32 j=0;j<30;j++) + { + resualt=read_pressure_sensor(midtankno); + stubManager.AppendToFile(File_name,resualt+",mV"); + Sum=Sum+resualt; + Thread.Sleep(1000); + } + i=i+1; + if (Sum>Old_Sum) + Old_Sum=Sum-Old_Sum; + else + Old_Sum=Old_Sum-Sum; + + if ( Old_Sum <0.02) + i=60*15; //end + Old_Sum=Sum; + } + Full_Point=Sum/30; + box_msg = "Send file" + File_name +"to Mati"; + MessageBox.Show(box_msg); - stubManager.Run<StubFpgaWriteRegResponse>("StubFpgaWriteRegRequest" ,F3_VALVE_OUT, 0x000f); // open all valve air of midtank and close all ink of midtank - Thread.Sleep(500); - stubManager.Run<StubFpgaWriteRegResponse>("StubFpgaWriteRegRequest" ,F3_VALVE_OUT, 0x00ff); // open all valve air of midtank and close all ink of midtank - Thread.Sleep(500); - stubManager.Run<StubFpgaWriteRegResponse>("StubFpgaWriteRegRequest" ,F3_VALVE_OUT, 0x0fff); // open all valve air of midtank and close all ink of midtank - Thread.Sleep(500); - stubManager.Run<StubFpgaWriteRegResponse>("stubFpgaWriteRegRequest" ,F3_VALVE_OUT, 0xffff); // open all valve air and ink of midtank - Thread.Sleep(2500); + // stubManager.Run<StubFpgaWriteRegResponse>("StubFpgaWriteRegRequest" ,F3_VALVE_OUT, 0x000f); // open all valve air of midtank and close all ink of midtank + // Thread.Sleep(500); + // stubManager.Run<StubFpgaWriteRegResponse>("StubFpgaWriteRegRequest" ,F3_VALVE_OUT, 0x00ff); // open all valve air of midtank and close all ink of midtank + // Thread.Sleep(500); + // stubManager.Run<StubFpgaWriteRegResponse>("StubFpgaWriteRegRequest" ,F3_VALVE_OUT, 0x0fff); // open all valve air of midtank and close all ink of midtank + // Thread.Sleep(500); + // stubManager.Run<StubFpgaWriteRegResponse>("stubFpgaWriteRegRequest" ,F3_VALVE_OUT, 0xffff); // open all valve air and ink of midtank + // + // Thread.Sleep(2500); - Thread.Sleep(1000); + // Thread.Sleep(1000); - read_pressure_sensor(1); + // read_pressure_sensor(1); - box_msg ="Insert 100cc of appropriate ink/lube to each midtank\n\t1.black ink\n\t2. Magenta ink\n\t3. Transparent ink\n\t4. Cleaner\n\t5. Cyan ink\n\t6. Yellow ink\n\t7. Spot color\n\t8. Lubricant/n"; - MessageBox.Show(box_msg); - - read_pressure_sensor(2); + // box_msg ="Insert 100cc of appropriate ink/lube to each midtank\n\t1.black ink\n\t2. Magenta ink\n\t3. Transparent ink\n\t4. Cleaner\n\t5. Cyan ink\n\t6. Yellow ink\n\t7. Spot color\n\t8. Lubricant/n"; + // MessageBox.Show(box_msg); +// + // read_pressure_sensor(2); // voltage_array[3,2]=2.5; - box_msg = "Add another 700cc for ink and TI \nFor Lubbricant add 500cc only."; - MessageBox.Show(box_msg); - read_pressure_sensor(3); - stubManager.Run<StubFpgaWriteRegResponse>("stubFpgaWriteRegRequest" ,F3_VALVE_OUT, 0x0000); // close all valve air and ink of midtank +// box_msg = "Add another 700cc for ink and TI \nFor Lubbricant add 500cc only."; +// MessageBox.Show(box_msg); +// read_pressure_sensor(3); +// stubManager.Run<StubFpgaWriteRegResponse>("stubFpgaWriteRegRequest" ,F3_VALVE_OUT, 0x0000); // close all valve air and ink of midtank // voltage_array[3,3]=4.5; + close_valve(midtankno,1,1) ; //close Air valve + close_valve(midtankno,0,1) ; //close Ink valve - calc_slop(); - print_table(); +// calc_slop(); +// print_table(); - insert_slop_t_eeprom(); +// insert_slop_t_eeprom(Full_Point, midtankno); + insert_slop_t_eeprom(Full_Point, midtankno); box_msg ="Turn Power Off and On to finish the calibration."; MessageBox.Show(box_msg); @@ -178,54 +202,55 @@ int calc_slop() } - int insert_slop_t_eeprom() + int insert_slop_t_eeprom( double FullPoint,Int32 midtankno) { - stubManager.Write("\n "); +// stubManager.Write("\n "); MidTankDataSetupRequest midTankDataSetupRequest = new MidTankDataSetupRequest(); - for (uint i=1;i<9;i++) - { - if (voltage_array[i,4]!= ERROR_SLOP) - { +// for (uint i=1;i<9;i++) +// { +// if (voltage_array[i,4]!= ERROR_SLOP) +// { MidTankData midTankData = new MidTankData(); - midTankData.MidTankId = i-1; - midTankData.InitialOffsetA = voltage_array[i,2]; - midTankData.SlopeB = voltage_array[i,4]; + midTankData.MidTankId = Convert.ToUInt32 (midtankno-1); + midTankData.InitialOffsetA =FullPoint - (Full_Cartridge-0.1)/Slop; + midTankData.SlopeB = Slop; - stubManager.Write("\nMidtank No:" + i+ "=\tA="+voltage_array[i,2]+"\tSlop="+voltage_array[i,4]); + stubManager.Write("\nMidtank No:" + midtankno + "=\tVoltage Zero is ="+(FullPoint - (Full_Cartridge-0.1)/Slop)+"\tSlop="+ Slop); + stubManager.AppendToFile(File_name,"\nMidtank No:" + midtankno + "=\tVoltage Zero is ="+(FullPoint - (Full_Cartridge-0.1)/Slop)+"\tSlop="+ Slop); midTankDataSetupRequest.MidTankInfo.Add(midTankData); - } + // } var response = stubManager.Run<MidTankDataSetupResponse>(midTankDataSetupRequest); - } + //} return 1; } +// +// +//int print_table() +// { +// +// for (uint i=0;i<5;i++) +// { +// stubManager.AppendToFile(File_name,Parameter[i]+"\t"+voltage_array[1,i]+"\t"+voltage_array[2,i]+"\t"+voltage_array[3,i]+"\t"+voltage_array[4,i]+"\t"+voltage_array[5,i]+"\t"+voltage_array[6,i]+"\t"+voltage_array[7,i]+"\t"+voltage_array[8,i]) ; +// } +// +// +// return 1; +// +// } - -int print_table() - { - - for (uint i=0;i<5;i++) - { - stubManager.AppendToFile(File_name,Parameter[i]+"\t"+voltage_array[1,i]+"\t"+voltage_array[2,i]+"\t"+voltage_array[3,i]+"\t"+voltage_array[4,i]+"\t"+voltage_array[5,i]+"\t"+voltage_array[6,i]+"\t"+voltage_array[7,i]+"\t"+voltage_array[8,i]) ; - } - - - return 1; - - } - - +//start mat int adc_configuration(uint I2C_Slave_Add,uint channel ) { @@ -261,7 +286,7 @@ int adc_set_for_read_ch(uint I2C_Slave_Add) -int adc_read_ch(uint I2C_Slave_Add,uint table_index_x,uint table_index_y) +double adc_read_ch(uint I2C_Slave_Add) { StubI2CReadBytesRequest stubI2CReadBytesRequest = new StubI2CReadBytesRequest(); stubI2CReadBytesRequest.I2CId = I2C_ID; @@ -281,67 +306,80 @@ int adc_read_ch(uint I2C_Slave_Add,uint table_index_x,uint table_index_y) temp=temp & 0x0fff; calc = (double)temp *2.5 / 4096.0; - stubManager.Write("ADC [volts]:\t"); - stubManager.Write(calc+"\t"); +// stubManager.Write("ADC [volts]:\t"); +// stubManager.Write(calc+"\t"); calc1 = (1.96- calc) * 4.64 + 1.96; stubManager.Write("Vsensor [volts]:\t"); - stubManager.Write(calc1); + stubManager.Write(calc1 + "\n"); - voltage_array[table_index_x,table_index_y]=calc1; + // voltage_array[table_index_x,table_index_y]=calc1; - return 1; + return calc1; } -int read_pressure_sensor(uint i ) +double read_pressure_sensor(Int32 i ) { - - stubManager.Write("\n-----------MIDTANK_PRESSESENS-------test_no= "+i); - - stubManager.Write("\n1_1= "); +double resualt =0 ; + switch (i) + { + case 1: + adc_configuration(0x44,0x20); //a2d_address 0x44 channel channel 2 + adc_set_for_read_ch(0x44); + resualt=adc_read_ch(0x44); + break; - adc_configuration(0x44,0x20); //a2d_address 0x44 channel channel 2 - adc_set_for_read_ch(0x44); - adc_read_ch(0x44,1,i); - - stubManager.Write("\n2_1= "); - adc_configuration(0x44,0x08); //a2d_address 0x44 channel channel 4 - adc_set_for_read_ch(0x44); - adc_read_ch(0x44,2,i); - - stubManager.Write("\n3_1= "); - adc_configuration(0x46,0x80); //a2d_address 0x46 channel channel 0 - adc_set_for_read_ch(0x46); - adc_read_ch(0x46,3,i); - - stubManager.Write("\n4_1= "); - adc_configuration(0x46,0x20); //a2d_address 0x46 channel channel 2 - adc_set_for_read_ch(0x46); - adc_read_ch(0x46,4,i); + case 2: + adc_configuration(0x44,0x08); //a2d_address 0x44 channel channel 4 + adc_set_for_read_ch(0x44); + resualt=adc_read_ch(0x44); + break; - stubManager.Write("\n1_2= "); - adc_configuration(0x44,0x10); //a2d_address 0x44 channel channel 3 - adc_set_for_read_ch(0x44); - adc_read_ch(0x44,5,i); - - stubManager.Write("\n2_2= "); - adc_configuration(0x44,0x04); //a2d_address 0x44 channel channel 5 - adc_set_for_read_ch(0x44); - adc_read_ch(0x44,6,i); - - stubManager.Write("\n3_2= "); - adc_configuration(0x46,0x40); //a2d_address 0x46 channel channel 1 - adc_set_for_read_ch(0x46); - adc_read_ch(0x46,7,i); + case 3: + adc_configuration(0x46,0x80); //a2d_address 0x46 channel channel 0 + adc_set_for_read_ch(0x46); + resualt=adc_read_ch(0x46); + break; + + case 4: + adc_configuration(0x46,0x20); //a2d_address 0x46 channel channel 2 + adc_set_for_read_ch(0x46); + resualt=adc_read_ch(0x46); + break; + + case 5: + adc_configuration(0x44,0x10); //a2d_address 0x44 channel channel 3 + adc_set_for_read_ch(0x44); + resualt=adc_read_ch(0x44); + break; + + case 6: + adc_configuration(0x44,0x04); //a2d_address 0x44 channel channel 5 + adc_set_for_read_ch(0x44); + resualt=adc_read_ch(0x44); + break; + + case 7: + adc_configuration(0x46,0x40); //a2d_address 0x46 channel channel 1 + adc_set_for_read_ch(0x46); + resualt=adc_read_ch(0x46); + break; + + case 8: + adc_configuration(0x46,0x10); //a2d_address 0x46 channel channel 3 + adc_set_for_read_ch(0x46); + resualt=adc_read_ch(0x46); + break; + + default: + stubManager.Write("Error"); - stubManager.Write("\n4_2= "); - adc_configuration(0x46,0x10); //a2d_address 0x46 channel channel 3 - adc_set_for_read_ch(0x46); - adc_read_ch(0x46,8,i); + break; + } - return 1; + return resualt; } -//strat mat + //-------------------------------- int open_valve (int valve_nm,int valve_type,int check_valve) //valve_type=0 is Air ,1 is Ink ; check_valve=1 send feedbak diff --git a/Software/Stubs Collection/stubs/Scripts/Assemblies/MidTank/New_Calibrate_Midtank_pressure_sensors.cs b/Software/Stubs Collection/stubs/Scripts/Assemblies/MidTank/New_Calibrate_Midtank_pressure_sensors.cs new file mode 100644 index 000000000..62d0e017f --- /dev/null +++ b/Software/Stubs Collection/stubs/Scripts/Assemblies/MidTank/New_Calibrate_Midtank_pressure_sensors.cs @@ -0,0 +1,393 @@ +using System; +using System.IO; +using System.Text; +using System.Linq; +using System.Drawing; +using System.Diagnostics; +using System.Windows.Forms; +using System.Threading; +using System.Threading.Tasks; +using System.Collections.Generic; +using Tango.PMR.Stubs; +using Tango.PMR.EmbeddedParameters; +using Tango.Stubs; + +//---------------------- +const double MIN_SLOP=0.7; +const double MAX_SLOP=1.4; +const double ERROR_SLOP=-1; +const double MIN_50cc_on_volt=2.3; +const double MAX_50cc_on_volt=3.2; +const double ERROR_50cc_on_volt=-1; + +int [] Convert_Midtank_No = new Int32 [8] {1,3,5,7,2,4,6,8}; +uint [,] ADC_Add_Chnl = new uint [8,2] { + {0x44,0x20}, + {0x44,0x08}, + {0x46,0x80}, + {0x46,0x20}, + {0x44,0x10}, + {0x44,0x04}, + {0x46,0x40}, + {0x46,0x10}, + }; + + +const Int32 F3_VALVE_OUT = 0x600008E2 ; +string Machine_SN ; +private const string FILE_PATH = @"C:\MidTankLog\"; +string File_name; +double Full_Cartridge=1000; // on CC +double Slop=0.92; + +//---------------------- +const Int32 I2C_ID = 2; +//const Int32 I2C_Slave_Add = 0x46; //must be 0x40, 0x44 or 0x46 +//---------------------- + + +public void OnExecute(StubManager stubManager) +{ + Int32 midtankno = 0; + double Full_Point=0; //on Voltage + double resualt; + double Sum=0 ; + double Old_Sum=0 ; + + + if (!Directory.Exists(FILE_PATH)) + { + Directory.CreateDirectory(FILE_PATH); + } + + + + var response = stubManager.ShowResponseWindow("Enter Midtank S/N: ", ""); + stubManager.Write("\n"); + Machine_SN = response; + stubManager.WriteLine(Machine_SN); + File_name= FILE_PATH +Machine_SN + DateTime.Now.ToString("MM_dd_yyyy_HH_mm_ss")+".csv"; + stubManager.Write(File_name); + stubManager.WriteToFile(File_name,"MidTank S/N:," + Machine_SN); + + + var response1 = stubManager.ShowResponseWindow("Enter Midtank number to calibrate (1-8):", ""); + stubManager.WriteLine(response1); + midtankno = Int32.Parse(response1); + stubManager.AppendToFile(File_name,"MidTank Number:\t" + response1); + if (midtankno==8) + Slop=1; + else + Slop=0.92; + + var response10 = stubManager.ShowResponseWindow("Enter Cartridge Valume on CC (500-1500):", ""); + stubManager.WriteLine(response10); + Full_Cartridge = double.Parse(response10); + stubManager.AppendToFile(File_name,"Cartridge Valume:\t" + response10); + stubManager.AppendToFile(File_name,"Slop value:\t" + Slop); + + + DialogResult result = MessageBox.Show("Are you sure to calibrate Midtank No: "+ midtankno + " with "+ Full_Cartridge +" CC" , "Warning",MessageBoxButtons.YesNo); + if(result == DialogResult.Yes) + { + + + + string box_msg = "Please Insert cartridge "; + + MessageBox.Show(box_msg); + + open_valve(midtankno,1,1) ; //open Air valve + open_valve(midtankno,0,1) ; //open Ink valve + Int32 i=0; + while (i<60*15) //check for 15 minitus + { + Sum=0; + for (Int32 j=0;j<30;j++) + { + resualt=read_pressure_sensor(midtankno); + stubManager.AppendToFile(File_name,resualt+",V"); + Sum=Sum+resualt; + Thread.Sleep(1000); + } + i=i+1; + if (Sum>Old_Sum) + Old_Sum=Sum-Old_Sum; + else + Old_Sum=Old_Sum-Sum; + + if ( Old_Sum <0.02) + i=60*15; //end + Old_Sum=Sum; + } + Full_Point=Sum/30; + + + close_valve(midtankno,1,1) ; //close Air valve + close_valve(midtankno,0,1) ; //close Ink valve + + + insert_slop_t_eeprom(Full_Point, midtankno); + box_msg ="Turn Power Off and On to finish the calibration."; + MessageBox.Show(box_msg); + } + + +} + + + int insert_slop_t_eeprom( double FullPoint,Int32 midtankno) +{ +// stubManager.Write("\n "); + + MidTankDataSetupRequest midTankDataSetupRequest = new MidTankDataSetupRequest(); + + MidTankData midTankData = new MidTankData(); + midTankData.MidTankId = Convert.ToUInt32 (midtankno-1); + midTankData.InitialOffsetA =FullPoint - (Full_Cartridge/1000-0.1)/Slop; + midTankData.SlopeB = Slop; + + stubManager.Write("\nMidtank No:" + midtankno + "=\tVoltage Zero is ="+(FullPoint - (Full_Cartridge/1000-0.1)/Slop)+"\tSlop="+ Slop); + stubManager.AppendToFile(File_name,"\nMidtank No:" + midtankno + "=\tVoltage Zero is ="+(FullPoint - (Full_Cartridge/1000-0.1)/Slop)+"\tSlop="+ Slop); + + + midTankDataSetupRequest.MidTankInfo.Add(midTankData); + + +var response = stubManager.Run<MidTankDataSetupResponse>(midTankDataSetupRequest); + +return 1; +} + + +int adc_configuration(uint I2C_Slave_Add,uint channel ) + { + StubI2CWriteBytesRequest stubI2CWriteBytesRequest = new StubI2CWriteBytesRequest(); + stubI2CWriteBytesRequest.I2CId = I2C_ID; + stubI2CWriteBytesRequest.SlaveAddress = I2C_Slave_Add; + + UInt32 uInt32 = new UInt32(); + stubI2CWriteBytesRequest.BytesTWrite.Add(0x00);//Byte 0 to write + stubI2CWriteBytesRequest.BytesTWrite.Add(channel);//Byte 1 to Write, must be 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02 or 0x01 for different channels + stubI2CWriteBytesRequest.BytesTWrite.Add(0x80);//Byte 2 to Write + + var response = stubManager.Run<StubI2CWriteBytesResponse>(stubI2CWriteBytesRequest); + + return 1; + } + + +int adc_set_for_read_ch(uint I2C_Slave_Add) + { + StubI2CWriteBytesRequest stubI2CWriteBytesRequest = new StubI2CWriteBytesRequest(); + stubI2CWriteBytesRequest.I2CId = I2C_ID; + stubI2CWriteBytesRequest.SlaveAddress = I2C_Slave_Add; + + UInt32 uInt32 = new UInt32(); + stubI2CWriteBytesRequest.BytesTWrite.Add(0x01);//Byte 0 to write + + var response = stubManager.Run<StubI2CWriteBytesResponse>(stubI2CWriteBytesRequest); + + return 1; + } + + + + +double adc_read_ch(uint I2C_Slave_Add) + { + StubI2CReadBytesRequest stubI2CReadBytesRequest = new StubI2CReadBytesRequest(); + stubI2CReadBytesRequest.I2CId = I2C_ID; + stubI2CReadBytesRequest.SlaveAddress = I2C_Slave_Add; + stubI2CReadBytesRequest.NumberOfBytesToRead = 2; // Number of bytes to read + + var response1 = stubManager.Run<StubI2CReadBytesResponse>(stubI2CReadBytesRequest); + uint temph=0; + uint templ=0; + uint temp; + double calc; + double calc1; + double calc2; + temph=response1.ReadBytes[0]; + templ=response1.ReadBytes[1]; + temp = (temph << 8) | templ; + temp=temp & 0x0fff; + + calc = (double)temp *2.5 / 4096.0; + + calc1 = (1.96- calc) * 4.64 + 1.96; + stubManager.Write("Vsensor [volts]:\t"); + stubManager.Write(calc1 + "\n"); + + + return calc1; + } + +double read_pressure_sensor(Int32 i ) + { +double resualt =0 ; + switch (i) + { + case 1: + adc_configuration(0x44,0x20); //a2d_address 0x44 channel channel 2 + adc_set_for_read_ch(0x44); + resualt=adc_read_ch(0x44); + break; + + case 2: + adc_configuration(0x44,0x08); //a2d_address 0x44 channel channel 4 + adc_set_for_read_ch(0x44); + resualt=adc_read_ch(0x44); + break; + + case 3: + adc_configuration(0x46,0x80); //a2d_address 0x46 channel channel 0 + adc_set_for_read_ch(0x46); + resualt=adc_read_ch(0x46); + break; + + case 4: + adc_configuration(0x46,0x20); //a2d_address 0x46 channel channel 2 + adc_set_for_read_ch(0x46); + resualt=adc_read_ch(0x46); + break; + + case 5: + adc_configuration(0x44,0x10); //a2d_address 0x44 channel channel 3 + adc_set_for_read_ch(0x44); + resualt=adc_read_ch(0x44); + break; + + case 6: + adc_configuration(0x44,0x04); //a2d_address 0x44 channel channel 5 + adc_set_for_read_ch(0x44); + resualt=adc_read_ch(0x44); + break; + + case 7: + adc_configuration(0x46,0x40); //a2d_address 0x46 channel channel 1 + adc_set_for_read_ch(0x46); + resualt=adc_read_ch(0x46); + break; + + case 8: + adc_configuration(0x46,0x10); //a2d_address 0x46 channel channel 3 + adc_set_for_read_ch(0x46); + resualt=adc_read_ch(0x46); + break; + + default: + stubManager.Write("Error"); + + break; + } + + return resualt; + } + + +//-------------------------------- +int open_valve (int valve_nm,int valve_type,int check_valve) //valve_type=0 is Air ,1 is Ink ; check_valve=1 send feedbak +{ + int temp1=Convert_Midtank_No[valve_nm-1] ; + + string temp; + SetBit (F3_VALVE_OUT,(((valve_type+1)*8)- temp1), 1); + + if (check_valve!=0) + { + temp="Air"; + if (valve_type==1) + temp="Ink"; + + DialogResult result = MessageBox.Show("Did " + temp + "Valve of Midtank " + valve_nm +" open?", "Warning",MessageBoxButtons.YesNo); + if(result == DialogResult.No) + { +// Units_status[(valve_nm-1)*3+valve_type,1]="Fail"; + stubManager.Write(temp +"Valve\tFail\n"); + return 0; + } + else + { +// Units_status[(valve_nm-1)*3+valve_type,1]="Pass"; + stubManager.Write(temp +"Valve\tOpen\n"); + return 1; + } + + } + return 1; + +} +//-------------------------------- +int close_valve (int valve_nm,int valve_type,int check_valve) +{ + int temp1=Convert_Midtank_No[valve_nm-1]; + + string temp; + SetBit (F3_VALVE_OUT,(((valve_type+1)*8)- temp1), 0); + if (check_valve!=0) + { + temp="Air"; + if (valve_type==1) + temp="Ink"; + + DialogResult result = MessageBox.Show("Did " + temp +" Valve of Midtank " + valve_nm +" close?", "Warning",MessageBoxButtons.YesNo); + if(result == DialogResult.No) + { +// Units_status[(valve_nm-1)*3+valve_type,1]="Fail"; + stubManager.Write(temp +"Valve\tFail\n"); + return 0; + } + else + { +// Units_status[(valve_nm-1)*3+valve_type,1]="Pass"; + stubManager.Write(temp +"Valve\tclose\n"); + return 1; + } + } + return 1; + +} + +public Int32 SetBit(Int32 Adr, Int32 BitNo, Int32 Bit) +{ + Int32 BitMask; + var RetVal = Fpga_Read_Reg(Adr); + Int32 RV = (Int32) RetVal.Value; + + if (Bit == 0x1) + { + BitMask = 0x1 << BitNo; + RV = RV | BitMask; + Fpga_Write_Reg( Adr, RV ); + } + else if (Bit == 0x0) + { + BitMask = ~(0x1 << BitNo); + RV = RV & BitMask; + Fpga_Write_Reg(Adr, RV ); + } + return 1; +} + +int Fpga_Write_Reg(Int32 Addr, Int32 Data) +{ + var response = stubManager.Run<StubFpgaWriteRegResponse>("StubFpgaWriteRegRequest" ,Addr, Data); + + return 1; +} + + + +StubFpgaReadRegResponse Fpga_Read_Reg(Int32 Addr) +{ + var response = stubManager.Run<StubFpgaReadRegResponse>("StubFpgaReadRegRequest" ,Addr); + response.Value = response.Value & 0xffff; + + return response; +} + + + + +//end mati
\ No newline at end of file diff --git a/Software/Stubs Collection/stubs/Scripts/Assemblies/MidTank/New_Calibrate_Midtank_pressure_sensors1.cs b/Software/Stubs Collection/stubs/Scripts/Assemblies/MidTank/New_Calibrate_Midtank_pressure_sensors1.cs new file mode 100644 index 000000000..9edb49e03 --- /dev/null +++ b/Software/Stubs Collection/stubs/Scripts/Assemblies/MidTank/New_Calibrate_Midtank_pressure_sensors1.cs @@ -0,0 +1,423 @@ +using System; +using System.IO; +using System.Text; +using System.Linq; +using System.Drawing; +using System.Diagnostics; +using System.Windows.Forms; +using System.Threading; +using System.Threading.Tasks; +using System.Collections.Generic; +using Tango.PMR.Stubs; +using Tango.PMR.EmbeddedParameters; +using Tango.Stubs; + +//---------------------- +const double MIN_SLOP=0.7; +const double MAX_SLOP=1.4; +const double ERROR_SLOP=-1; +const double MIN_50cc_on_volt=2.3; +const double MAX_50cc_on_volt=3.2; +const double ERROR_50cc_on_volt=-1; + +int [] Convert_Midtank_No = new Int32 [8] {1,3,5,7,2,4,6,8}; +uint [,] ADC_Add_Chnl = new uint [8,2] { + {0x44,0x20}, + {0x44,0x08}, + {0x46,0x80}, + {0x46,0x20}, + {0x44,0x10}, + {0x44,0x04}, + {0x46,0x40}, + {0x46,0x10}, + }; + + +const Int32 F3_VALVE_OUT = 0x600008E2 ; +string Machine_SN ; +private const string FILE_PATH = @"C:\MidTankLog\"; +string File_name; +double Full_Cartridge=1000; // on CC +double Slop=0.92; + +//---------------------- +const Int32 I2C_ID = 2; +//const Int32 I2C_Slave_Add = 0x46; //must be 0x40, 0x44 or 0x46 +//---------------------- + + +public void OnExecute(StubManager stubManager) +{ + Int32 Timout ; + Int32 Interval; + Int32 midtankno = 0; + double Full_Point=0; //on Voltage + double resualt; + double Sum=0 ; + double Old_Sum=0 ; + + + if (!Directory.Exists(FILE_PATH)) + { + Directory.CreateDirectory(FILE_PATH); + } + + + + var response = stubManager.ShowResponseWindow("Enter Midtank S/N: ", ""); + stubManager.Write("\n"); + Machine_SN = response; + stubManager.WriteLine(Machine_SN); + File_name= FILE_PATH +Machine_SN + DateTime.Now.ToString("MM_dd_yyyy_HH_mm_ss")+".csv"; + stubManager.Write(File_name); + stubManager.WriteToFile(File_name,"MidTank S/N:," + Machine_SN); + + + var response1 = stubManager.ShowResponseWindow("Enter Midtank number to calibrate (1-8):", ""); + stubManager.WriteLine(response1); + midtankno = Int32.Parse(response1); + stubManager.AppendToFile(File_name,"MidTank Number:\t" + response1); + if (midtankno==8) + { + Slop=1; + Timout=60; //60 minutes + Interval=60; //60 second + } + else + { + Slop=0.92; + Timout=10*2; //10 minutes + Interval=30; //30 second + + } + var response10 = stubManager.ShowResponseWindow("Enter Cartridge Valume on CC (500-1500):", ""); + stubManager.WriteLine(response10); + Full_Cartridge = double.Parse(response10); + stubManager.AppendToFile(File_name,"Cartridge Valume:\t" + response10); + stubManager.AppendToFile(File_name,"Slop value:\t" + Slop); + + + DialogResult result = MessageBox.Show("Are you sure to calibrate Midtank No: "+ midtankno + " with "+ Full_Cartridge +" CC" , "Warning",MessageBoxButtons.YesNo); + if(result == DialogResult.Yes) + { + + + + string box_msg = "Please Insert cartridge "; + + MessageBox.Show(box_msg); + + open_valve(midtankno,1,1) ; //open Air valve + open_valve(midtankno,0,1) ; //open Ink valve + Int32 i=0; + while (i<Timout) //check for 15 minitus + { + Sum=0; + for (Int32 j=0;j<Interval;j++) + { + resualt=read_pressure_sensor(midtankno); + stubManager.AppendToFile(File_name,resualt+",V"); + Sum=Sum+resualt; + Thread.Sleep(1000); + } + if (Sum>Old_Sum) + Old_Sum=Sum-Old_Sum; + else + Old_Sum=Old_Sum-Sum; + + if ((check_valve(midtankno,1) == 0) && (check_valve(midtankno,0) == 0)) + { + i++; + if ( Old_Sum <0.02) + i=Timout; //end + Old_Sum=Sum; + } + else + { + open_valve(midtankno,1,0) ; //open Air valve + open_valve(midtankno,0,0) ; //open Ink valve + Old_Sum=0; + } + } + Full_Point=Sum/Interval; + + + close_valve(midtankno,1,1) ; //close Air valve + close_valve(midtankno,0,1) ; //close Ink valve + + + insert_slop_t_eeprom(Full_Point, midtankno); + box_msg ="Turn Power Off and On to finish the calibration."; + MessageBox.Show(box_msg); + } + + +} + + + int insert_slop_t_eeprom( double FullPoint,Int32 midtankno) +{ +// stubManager.Write("\n "); + + MidTankDataSetupRequest midTankDataSetupRequest = new MidTankDataSetupRequest(); + + MidTankData midTankData = new MidTankData(); + midTankData.MidTankId = Convert.ToUInt32 (midtankno-1); + midTankData.InitialOffsetA =FullPoint - (Full_Cartridge/1000-0.1)/Slop; + midTankData.SlopeB = Slop; + + stubManager.Write("\nMidtank No:" + midtankno + "=\tVoltage Zero is ="+(FullPoint - (Full_Cartridge/1000-0.1)/Slop)+"\tSlop="+ Slop); + stubManager.AppendToFile(File_name,"\nMidtank No:" + midtankno + "=\tVoltage Zero is ="+(FullPoint - (Full_Cartridge/1000-0.1)/Slop)+"\tSlop="+ Slop); + + + midTankDataSetupRequest.MidTankInfo.Add(midTankData); + + +var response = stubManager.Run<MidTankDataSetupResponse>(midTankDataSetupRequest); + +return 1; +} + + +int adc_configuration(uint I2C_Slave_Add,uint channel ) + { + StubI2CWriteBytesRequest stubI2CWriteBytesRequest = new StubI2CWriteBytesRequest(); + stubI2CWriteBytesRequest.I2CId = I2C_ID; + stubI2CWriteBytesRequest.SlaveAddress = I2C_Slave_Add; + + UInt32 uInt32 = new UInt32(); + stubI2CWriteBytesRequest.BytesTWrite.Add(0x00);//Byte 0 to write + stubI2CWriteBytesRequest.BytesTWrite.Add(channel);//Byte 1 to Write, must be 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02 or 0x01 for different channels + stubI2CWriteBytesRequest.BytesTWrite.Add(0x80);//Byte 2 to Write + + var response = stubManager.Run<StubI2CWriteBytesResponse>(stubI2CWriteBytesRequest); + + return 1; + } + + +int adc_set_for_read_ch(uint I2C_Slave_Add) + { + StubI2CWriteBytesRequest stubI2CWriteBytesRequest = new StubI2CWriteBytesRequest(); + stubI2CWriteBytesRequest.I2CId = I2C_ID; + stubI2CWriteBytesRequest.SlaveAddress = I2C_Slave_Add; + + UInt32 uInt32 = new UInt32(); + stubI2CWriteBytesRequest.BytesTWrite.Add(0x01);//Byte 0 to write + + var response = stubManager.Run<StubI2CWriteBytesResponse>(stubI2CWriteBytesRequest); + + return 1; + } + + + + +double adc_read_ch(uint I2C_Slave_Add) + { + StubI2CReadBytesRequest stubI2CReadBytesRequest = new StubI2CReadBytesRequest(); + stubI2CReadBytesRequest.I2CId = I2C_ID; + stubI2CReadBytesRequest.SlaveAddress = I2C_Slave_Add; + stubI2CReadBytesRequest.NumberOfBytesToRead = 2; // Number of bytes to read + + var response1 = stubManager.Run<StubI2CReadBytesResponse>(stubI2CReadBytesRequest); + uint temph=0; + uint templ=0; + uint temp; + double calc; + double calc1; + double calc2; + temph=response1.ReadBytes[0]; + templ=response1.ReadBytes[1]; + temp = (temph << 8) | templ; + temp=temp & 0x0fff; + + calc = (double)temp *2.5 / 4096.0; + + calc1 = (1.96- calc) * 4.64 + 1.96; + stubManager.Write("Vsensor [volts]:\t"); + stubManager.Write(calc1 + "\n"); + + + return calc1; + } + +double read_pressure_sensor(Int32 i ) + { +double resualt =0 ; + switch (i) + { + case 1: + adc_configuration(0x44,0x20); //a2d_address 0x44 channel channel 2 + adc_set_for_read_ch(0x44); + resualt=adc_read_ch(0x44); + break; + + case 2: + adc_configuration(0x44,0x08); //a2d_address 0x44 channel channel 4 + adc_set_for_read_ch(0x44); + resualt=adc_read_ch(0x44); + break; + + case 3: + adc_configuration(0x46,0x80); //a2d_address 0x46 channel channel 0 + adc_set_for_read_ch(0x46); + resualt=adc_read_ch(0x46); + break; + + case 4: + adc_configuration(0x46,0x20); //a2d_address 0x46 channel channel 2 + adc_set_for_read_ch(0x46); + resualt=adc_read_ch(0x46); + break; + + case 5: + adc_configuration(0x44,0x10); //a2d_address 0x44 channel channel 3 + adc_set_for_read_ch(0x44); + resualt=adc_read_ch(0x44); + break; + + case 6: + adc_configuration(0x44,0x04); //a2d_address 0x44 channel channel 5 + adc_set_for_read_ch(0x44); + resualt=adc_read_ch(0x44); + break; + + case 7: + adc_configuration(0x46,0x40); //a2d_address 0x46 channel channel 1 + adc_set_for_read_ch(0x46); + resualt=adc_read_ch(0x46); + break; + + case 8: + adc_configuration(0x46,0x10); //a2d_address 0x46 channel channel 3 + adc_set_for_read_ch(0x46); + resualt=adc_read_ch(0x46); + break; + + default: + stubManager.Write("Error"); + + break; + } + + return resualt; + } + + +//-------------------------------- +int open_valve (int valve_nm,int valve_type,int check_valve) //valve_type=0 is Air ,1 is Ink ; check_valve=1 send feedbak +{ + int temp1=Convert_Midtank_No[valve_nm-1] ; + + string temp; + SetBit (F3_VALVE_OUT,(((valve_type+1)*8)- temp1), 1); + + if (check_valve!=0) + { + temp="Air"; + if (valve_type==1) + temp="Ink"; + + DialogResult result = MessageBox.Show("Did " + temp + "Valve of Midtank " + valve_nm +" open?", "Warning",MessageBoxButtons.YesNo); + if(result == DialogResult.No) + { +// Units_status[(valve_nm-1)*3+valve_type,1]="Fail"; + stubManager.Write(temp +"Valve\tFail\n"); + return 0; + } + else + { +// Units_status[(valve_nm-1)*3+valve_type,1]="Pass"; + stubManager.Write(temp +"Valve\tOpen\n"); + return 1; + } + + } + return 1; + +} +//-------------------------------- +int close_valve (int valve_nm,int valve_type,int check_valve) +{ + int temp1=Convert_Midtank_No[valve_nm-1]; + + string temp; + SetBit (F3_VALVE_OUT,(((valve_type+1)*8)- temp1), 0); + if (check_valve!=0) + { + temp="Air"; + if (valve_type==1) + temp="Ink"; + + DialogResult result = MessageBox.Show("Did " + temp +" Valve of Midtank " + valve_nm +" close?", "Warning",MessageBoxButtons.YesNo); + if(result == DialogResult.No) + { +// Units_status[(valve_nm-1)*3+valve_type,1]="Fail"; + stubManager.Write(temp +"Valve\tFail\n"); + return 0; + } + else + { +// Units_status[(valve_nm-1)*3+valve_type,1]="Pass"; + stubManager.Write(temp +"Valve\tclose\n"); + return 1; + } + } + return 1; + +} + +public Int32 SetBit(Int32 Adr, Int32 BitNo, Int32 Bit) +{ + Int32 BitMask; + var RetVal = Fpga_Read_Reg(Adr); + Int32 RV = (Int32) RetVal.Value; + + if (Bit == 0x1) + { + BitMask = 0x1 << BitNo; + RV = RV | BitMask; + Fpga_Write_Reg( Adr, RV ); + } + else if (Bit == 0x0) + { + BitMask = ~(0x1 << BitNo); + RV = RV & BitMask; + Fpga_Write_Reg(Adr, RV ); + } + return 1; +} + +int Fpga_Write_Reg(Int32 Addr, Int32 Data) +{ + var response = stubManager.Run<StubFpgaWriteRegResponse>("StubFpgaWriteRegRequest" ,Addr, Data); + + return 1; +} + + +Int32 check_valve (Int32 valve_nm,int valve_type) +{ + Int32 temp1=Convert_Midtank_No[valve_nm-1]; + + var response = stubManager.Run<StubFpgaReadRegResponse>("StubFpgaReadRegRequest" ,F3_VALVE_OUT); + Int32 RV =(Int32) response.Value & 0xffff ; + RV = RV & ( 0x1 << (((valve_type+1)*8)- temp1)); + return RV; + +} + + +StubFpgaReadRegResponse Fpga_Read_Reg(Int32 Addr) +{ + var response = stubManager.Run<StubFpgaReadRegResponse>("StubFpgaReadRegRequest" ,Addr); + response.Value = response.Value & 0xffff; + + return response; +} + + + + +//end mati
\ No newline at end of file diff --git a/Software/Stubs Collection/stubs/Scripts/Assemblies/MidTank/New_Calibrate_Midtank_pressure_sensors2.cs b/Software/Stubs Collection/stubs/Scripts/Assemblies/MidTank/New_Calibrate_Midtank_pressure_sensors2.cs new file mode 100644 index 000000000..403d0b818 --- /dev/null +++ b/Software/Stubs Collection/stubs/Scripts/Assemblies/MidTank/New_Calibrate_Midtank_pressure_sensors2.cs @@ -0,0 +1,447 @@ +using System; +using System.IO; +using System.Text; +using System.Linq; +using System.Drawing; +using System.Diagnostics; +using System.Windows.Forms; +using System.Threading; +using System.Threading.Tasks; +using System.Collections.Generic; +using Tango.PMR.Stubs; +using Tango.PMR.EmbeddedParameters; +using Tango.Stubs; + +//---------------------- +const double MIN_SLOP=0.7; +const double MAX_SLOP=1.4; +const double ERROR_SLOP=-1; +const double MIN_50cc_on_volt=2.3; +const double MAX_50cc_on_volt=3.2; +const double ERROR_50cc_on_volt=-1; + +int [] Convert_Midtank_No = new Int32 [8] {1,3,5,7,2,4,6,8}; +uint [,] ADC_Add_Chnl = new uint [8,2] { + {0x44,0x20}, + {0x44,0x08}, + {0x46,0x80}, + {0x46,0x20}, + {0x44,0x10}, + {0x44,0x04}, + {0x46,0x40}, + {0x46,0x10}, + }; + + +const Int32 F3_VALVE_OUT = 0x600008E2 ; +string Machine_SN ; +private const string FILE_PATH = @"C:\MidTankLog\"; +string File_name; +double Full_Cartridge=1000; // on CC +double Slop=0.92; +//---------------------- +const Int32 I2C_ID = 2; +//const Int32 I2C_Slave_Add = 0x46; //must be 0x40, 0x44 or 0x46 +//---------------------- + + +public void OnExecute(StubManager stubManager) +{ + Int32 Timout ; + Int32 Interval; + Int32 midtankno = 0; + double Full_Point=0; //on Voltage + double resualt; + double Sum=0 ; + double Old_Sum=0 ; + double Start_Point=0; + + + if (!Directory.Exists(FILE_PATH)) + { + Directory.CreateDirectory(FILE_PATH); + } + + + + var response = stubManager.ShowResponseWindow("Enter Midtank S/N: ", ""); + stubManager.Write("\n"); + Machine_SN = response; + stubManager.WriteLine(Machine_SN); + File_name= FILE_PATH +Machine_SN + DateTime.Now.ToString("MM_dd_yyyy_HH_mm_ss")+".csv"; + stubManager.Write(File_name); + stubManager.WriteToFile(File_name,"MidTank S/N:," + Machine_SN); + + + var response1 = stubManager.ShowResponseWindow("Enter Midtank number to calibrate (1-8):", ""); + stubManager.WriteLine(response1); + midtankno = Int32.Parse(response1); + stubManager.AppendToFile(File_name,"MidTank Number:\t" + response1); + if (midtankno==8) + { + Slop=1; + Timout=60; //60 minutes + Interval=60; //60 second + } + else + { + Slop=0.92; + Timout=10*2; //10 minutes + Interval=30; //30 second + + } + var response10 = stubManager.ShowResponseWindow("Enter Cartridge Valume on CC (500-1500):", ""); + stubManager.WriteLine(response10); + Full_Cartridge = double.Parse(response10); + stubManager.AppendToFile(File_name,"Cartridge Valume:\t" + response10); + stubManager.AppendToFile(File_name,"Slop value:\t" + Slop); + + + DialogResult result = MessageBox.Show("Are you sure to calibrate Midtank No: "+ midtankno + " with "+ Full_Cartridge +" CC" , "Warning",MessageBoxButtons.YesNo); + if(result == DialogResult.Yes) + { + + + + string box_msg = "Please Insert cartridge "; + + MessageBox.Show(box_msg); + + open_valve(midtankno,1,1) ; //open Air valve + open_valve(midtankno,0,1) ; //open Ink valve + Int32 i=0; + while (i<Timout) //check for 15 minitus + { + Sum=0; + for (Int32 j=0;j<Interval;j++) + { + resualt=read_pressure_sensor(midtankno); + stubManager.AppendToFile(File_name,resualt+",V"); + Sum=Sum+resualt; + Thread.Sleep(1000); + } + + + if (i==0) + Start_Point=Sum/Interval; + + if (Sum>Old_Sum) + Old_Sum=Sum-Old_Sum; + else + Old_Sum=Old_Sum-Sum; + + + if ((check_valve(midtankno,1) != 0) && (check_valve(midtankno,0) != 0)) + { + i++; + if ( Old_Sum <0.02) + i=Timout+1; //end + Old_Sum=Sum; + } + else + { + open_valve(midtankno,1,0) ; //open Air valve + open_valve(midtankno,0,0) ; //open Ink valve + Old_Sum=0; + + } + } + Full_Point=Sum/Interval; + + + close_valve(midtankno,1,1) ; //close Air valve + close_valve(midtankno,0,1) ; //close Ink valve + + + if (insert_slop_t_eeprom(Full_Point, midtankno,Start_Point)==0) + { + box_msg ="Turn Power Off and On to finish the calibration."; + MessageBox.Show(box_msg); + } + else + { + box_msg ="Calibration error"; + MessageBox.Show(box_msg); + + } + } + +} + + + int insert_slop_t_eeprom( double FullPoint,Int32 midtankno, double StartPoint) +{ +// stubManager.Write("\n "); + + StartPoint=FullPoint-StartPoint; + StartPoint=StartPoint/Full_Cartridge; + if ((StartPoint>0.7 ) && (StartPoint>1.3 )) + { + MidTankDataSetupRequest midTankDataSetupRequest = new MidTankDataSetupRequest(); + + MidTankData midTankData = new MidTankData(); + midTankData.MidTankId = Convert.ToUInt32 (midtankno-1); + midTankData.InitialOffsetA =FullPoint - (Full_Cartridge/1000-0.1)/Slop; + midTankData.SlopeB = Slop; + + stubManager.Write("\nMidtank No:" + midtankno + "=\tVoltage Zero is ="+(FullPoint - (Full_Cartridge/1000-0.1)/Slop)+"\tSlop="+ Slop); + stubManager.AppendToFile(File_name,"\nMidtank No:" + midtankno + "=\tVoltage Zero is ="+(FullPoint - (Full_Cartridge/1000-0.1)/Slop)+"\tSlop="+ Slop); + + + midTankDataSetupRequest.MidTankInfo.Add(midTankData); + + + var response = stubManager.Run<MidTankDataSetupResponse>(midTankDataSetupRequest); + + return 0; + } + else + stubManager.Write("\nError"); + stubManager.AppendToFile(File_name,"\n Slop Error"); + return 1; + +} + + +int adc_configuration(uint I2C_Slave_Add,uint channel ) + { + StubI2CWriteBytesRequest stubI2CWriteBytesRequest = new StubI2CWriteBytesRequest(); + stubI2CWriteBytesRequest.I2CId = I2C_ID; + stubI2CWriteBytesRequest.SlaveAddress = I2C_Slave_Add; + + UInt32 uInt32 = new UInt32(); + stubI2CWriteBytesRequest.BytesTWrite.Add(0x00);//Byte 0 to write + stubI2CWriteBytesRequest.BytesTWrite.Add(channel);//Byte 1 to Write, must be 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02 or 0x01 for different channels + stubI2CWriteBytesRequest.BytesTWrite.Add(0x80);//Byte 2 to Write + + var response = stubManager.Run<StubI2CWriteBytesResponse>(stubI2CWriteBytesRequest); + + return 1; + } + + +int adc_set_for_read_ch(uint I2C_Slave_Add) + { + StubI2CWriteBytesRequest stubI2CWriteBytesRequest = new StubI2CWriteBytesRequest(); + stubI2CWriteBytesRequest.I2CId = I2C_ID; + stubI2CWriteBytesRequest.SlaveAddress = I2C_Slave_Add; + + UInt32 uInt32 = new UInt32(); + stubI2CWriteBytesRequest.BytesTWrite.Add(0x01);//Byte 0 to write + + var response = stubManager.Run<StubI2CWriteBytesResponse>(stubI2CWriteBytesRequest); + + return 1; + } + + + + +double adc_read_ch(uint I2C_Slave_Add) + { + StubI2CReadBytesRequest stubI2CReadBytesRequest = new StubI2CReadBytesRequest(); + stubI2CReadBytesRequest.I2CId = I2C_ID; + stubI2CReadBytesRequest.SlaveAddress = I2C_Slave_Add; + stubI2CReadBytesRequest.NumberOfBytesToRead = 2; // Number of bytes to read + + var response1 = stubManager.Run<StubI2CReadBytesResponse>(stubI2CReadBytesRequest); + uint temph=0; + uint templ=0; + uint temp; + double calc; + double calc1; + double calc2; + temph=response1.ReadBytes[0]; + templ=response1.ReadBytes[1]; + temp = (temph << 8) | templ; + temp=temp & 0x0fff; + + calc = (double)temp *2.5 / 4096.0; + + calc1 = (1.96- calc) * 4.64 + 1.96; + stubManager.Write("Vsensor [volts]:\t"); + stubManager.Write(calc1 + "\n"); + + + return calc1; + } + +double read_pressure_sensor(Int32 i ) + { +double resualt =0 ; + switch (i) + { + case 1: + adc_configuration(0x44,0x20); //a2d_address 0x44 channel channel 2 + adc_set_for_read_ch(0x44); + resualt=adc_read_ch(0x44); + break; + + case 2: + adc_configuration(0x44,0x08); //a2d_address 0x44 channel channel 4 + adc_set_for_read_ch(0x44); + resualt=adc_read_ch(0x44); + break; + + case 3: + adc_configuration(0x46,0x80); //a2d_address 0x46 channel channel 0 + adc_set_for_read_ch(0x46); + resualt=adc_read_ch(0x46); + break; + + case 4: + adc_configuration(0x46,0x20); //a2d_address 0x46 channel channel 2 + adc_set_for_read_ch(0x46); + resualt=adc_read_ch(0x46); + break; + + case 5: + adc_configuration(0x44,0x10); //a2d_address 0x44 channel channel 3 + adc_set_for_read_ch(0x44); + resualt=adc_read_ch(0x44); + break; + + case 6: + adc_configuration(0x44,0x04); //a2d_address 0x44 channel channel 5 + adc_set_for_read_ch(0x44); + resualt=adc_read_ch(0x44); + break; + + case 7: + adc_configuration(0x46,0x40); //a2d_address 0x46 channel channel 1 + adc_set_for_read_ch(0x46); + resualt=adc_read_ch(0x46); + break; + + case 8: + adc_configuration(0x46,0x10); //a2d_address 0x46 channel channel 3 + adc_set_for_read_ch(0x46); + resualt=adc_read_ch(0x46); + break; + + default: + stubManager.Write("Error"); + + break; + } + + return resualt; + } + + +//-------------------------------- +int open_valve (int valve_nm,int valve_type,int check_valve) //valve_type=0 is Air ,1 is Ink ; check_valve=1 send feedbak +{ + int temp1=Convert_Midtank_No[valve_nm-1] ; + + string temp; + SetBit (F3_VALVE_OUT,(((valve_type+1)*8)- temp1), 1); + + if (check_valve!=0) + { + temp="Air"; + if (valve_type==1) + temp="Ink"; + + DialogResult result = MessageBox.Show("Did " + temp + "Valve of Midtank " + valve_nm +" open?", "Warning",MessageBoxButtons.YesNo); + if(result == DialogResult.No) + { +// Units_status[(valve_nm-1)*3+valve_type,1]="Fail"; + stubManager.Write(temp +"Valve\tFail\n"); + return 0; + } + else + { +// Units_status[(valve_nm-1)*3+valve_type,1]="Pass"; + stubManager.Write(temp +"Valve\tOpen\n"); + return 1; + } + + } + return 1; + +} +//-------------------------------- +int close_valve (int valve_nm,int valve_type,int check_valve) +{ + int temp1=Convert_Midtank_No[valve_nm-1]; + + string temp; + SetBit (F3_VALVE_OUT,(((valve_type+1)*8)- temp1), 0); + if (check_valve!=0) + { + temp="Air"; + if (valve_type==1) + temp="Ink"; + + DialogResult result = MessageBox.Show("Did " + temp +" Valve of Midtank " + valve_nm +" close?", "Warning",MessageBoxButtons.YesNo); + if(result == DialogResult.No) + { +// Units_status[(valve_nm-1)*3+valve_type,1]="Fail"; + stubManager.Write(temp +"Valve\tFail\n"); + return 0; + } + else + { +// Units_status[(valve_nm-1)*3+valve_type,1]="Pass"; + stubManager.Write(temp +"Valve\tclose\n"); + return 1; + } + } + return 1; + +} + +public Int32 SetBit(Int32 Adr, Int32 BitNo, Int32 Bit) +{ + Int32 BitMask; + var RetVal = Fpga_Read_Reg(Adr); + Int32 RV = (Int32) RetVal.Value; + + if (Bit == 0x1) + { + BitMask = 0x1 << BitNo; + RV = RV | BitMask; + Fpga_Write_Reg( Adr, RV ); + } + else if (Bit == 0x0) + { + BitMask = ~(0x1 << BitNo); + RV = RV & BitMask; + Fpga_Write_Reg(Adr, RV ); + } + return 1; +} + +int Fpga_Write_Reg(Int32 Addr, Int32 Data) +{ + var response = stubManager.Run<StubFpgaWriteRegResponse>("StubFpgaWriteRegRequest" ,Addr, Data); + + return 1; +} + + +Int32 check_valve (Int32 valve_nm,int valve_type) +{ + Int32 temp1=Convert_Midtank_No[valve_nm-1]; + + var response = stubManager.Run<StubFpgaReadRegResponse>("StubFpgaReadRegRequest" ,F3_VALVE_OUT); + Int32 RV =(Int32) response.Value & 0xffff ; + RV = RV & ( 0x1 << (((valve_type+1)*8)- temp1)); + return RV; + +} + + +StubFpgaReadRegResponse Fpga_Read_Reg(Int32 Addr) +{ + var response = stubManager.Run<StubFpgaReadRegResponse>("StubFpgaReadRegRequest" ,Addr); + response.Value = response.Value & 0xffff; + + return response; +} + + + + +//end mati
\ No newline at end of file diff --git a/Software/Stubs Collection/stubs/Scripts/Assemblies/MidTank/midtanksetparams.cs b/Software/Stubs Collection/stubs/Scripts/Assemblies/MidTank/midtanksetparams.cs index 352666c85..d3aa81e83 100644 --- a/Software/Stubs Collection/stubs/Scripts/Assemblies/MidTank/midtanksetparams.cs +++ b/Software/Stubs Collection/stubs/Scripts/Assemblies/MidTank/midtanksetparams.cs @@ -13,13 +13,50 @@ using Tango.PMR.EmbeddedParameters; public void OnExecute(StubManager stubManager) { + uint midtankno = 0; + double Slop; + double Zero_Point; + +MidTankDataSetupRequest midTankDataSetupRequest = new MidTankDataSetupRequest(); + var response = stubManager.ShowResponseWindow("Enter Midtank number to calibrate (1-8):", ""); + //stubManager.WriteLine(response); + stubManager.Write("\n"); + midtankno = uint.Parse(response); -MidTankDataSetupRequest midTankDataSetupRequest = new MidTankDataSetupRequest(); + var response1 = stubManager.ShowResponseWindow("Enter Midtank Slop ", ""); + //stubManager.WriteLine(response); + stubManager.Write("\n"); + Slop = double.Parse(response1); + + var response2= stubManager.ShowResponseWindow("Enter Zero point (100cc)", ""); + //stubManager.WriteLine(response); + stubManager.Write("\n"); + Zero_Point = double.Parse(response2); + + DialogResult result = MessageBox.Show("Are you sure to calibrate Midtank No: "+ midtankno + "with Slop "+ Slop +" and Zero_Point " + Zero_Point , "Warning",MessageBoxButtons.YesNo); + if(result == DialogResult.Yes) + { + MidTankData midTankData = new MidTankData(); + midTankData.MidTankId = midtankno-1; + midTankData.InitialOffsetA = Zero_Point; + midTankData.SlopeB = Slop; + midTankDataSetupRequest.MidTankInfo.Add(midTankData); + var response3 = stubManager.Run<MidTankDataSetupResponse>(midTankDataSetupRequest); + string box_msg ="Turn Power Off and On to finish the calibration."; + MessageBox.Show(box_msg); + + } + +} + + + +//MidTankDataSetupRequest midTankDataSetupRequest = new MidTankDataSetupRequest(); //50cc [V] 1.93242734375 1.94375546875 1.9295953125 1.935259375 1.92109921875 2.8245171875 1.92676328125 1.92676328125 //b [mL/V] -1 -1 -1 -1 -1 0.885922630082808 -1 -1 - +/* MidTankData midTankData = new MidTankData(); midTankData.MidTankId = 0; midTankData.InitialOffsetA = 2.64273428916931; @@ -76,9 +113,39 @@ midTankDataSetupRequest.MidTankInfo.Add(midTankData7); var response = stubManager.Run<MidTankDataSetupResponse>(midTankDataSetupRequest); - - - + */ +//} + +/* + int insert_slop_t_eeprom() +{ + stubManager.Write("\n "); + + MidTankDataSetupRequest midTankDataSetupRequest = new MidTankDataSetupRequest(); + + + for (uint i=1;i<9;i++) + { + if (voltage_array[i,4]!= ERROR_SLOP) + { + MidTankData midTankData = new MidTankData(); + midTankData.MidTankId = i-1; + midTankData.InitialOffsetA = voltage_array[i,2]; + midTankData.SlopeB = voltage_array[i,4]; + + stubManager.Write("\nMidtank No:" + i+ "=\tA="+voltage_array[i,2]+"\tSlop="+voltage_array[i,4]); + + + midTankDataSetupRequest.MidTankInfo.Add(midTankData); -}
\ No newline at end of file + } +var response = stubManager.Run<MidTankDataSetupResponse>(midTankDataSetupRequest); + + + + } +} + +*/ + diff --git a/Software/Stubs Collection/stubs/Scripts/Assemblies/New_DyeHead/Test_Actuator.cs b/Software/Stubs Collection/stubs/Scripts/Assemblies/New_DyeHead/Test_Actuator.cs new file mode 100644 index 000000000..f9555a05b --- /dev/null +++ b/Software/Stubs Collection/stubs/Scripts/Assemblies/New_DyeHead/Test_Actuator.cs @@ -0,0 +1,42 @@ +using System; +using System.Text; +using System.Linq; +using System.Drawing; +using System.Diagnostics; +using System.Windows.Forms; +using System.Threading; +using System.Threading.Tasks; +using System.Collections.Generic; +using Tango.PMR.Stubs; +using Tango.Stubs; + +public void OnExecute(StubManager stubManager) +{ + int sleep_up=2000;//2 second + int sleep_dn=2000;//2 second + var response = stubManager.ShowResponseWindow("Enter Loop Number for Actuator.", ""); + //stubManager.WriteLine(response); + int Loop_Nm = int.Parse(response); + + for (int i=0;i<Loop_Nm;i++) + { + + + stubManager.Run<ProgressResponse>("ProgressRequest" ,0xfead, 0xcaf000); //mov ACTUATOR-IN down + Thread.Sleep(sleep_dn); + stubManager.Run<ProgressResponse>("ProgressRequest" ,0xfead, 0xcaf101); //mov ACTUATOR-OUT up + Thread.Sleep(sleep_dn); + stubManager.Run<ProgressResponse>("ProgressRequest" ,0xfead, 0xcaf001); //mov ACTUATOR-IN up + Thread.Sleep(sleep_up); + stubManager.Run<ProgressResponse>("ProgressRequest" ,0xfead, 0xcaf100); //mov ACTUATOR-OUT down + Thread.Sleep(sleep_up); + + } + // stubManager.Run<ProgressResponse>("ProgressRequest" ,0xfead, 0xcaf100); //mov ACTUATOR-OUTdown + // stubManager.Run<ProgressResponse>("ProgressRequest" ,0xfead, 0xcaf101); //mov ACTUATOR-OUT up + + + + + +}
\ No newline at end of file diff --git a/Software/Stubs Collection/stubs/Scripts/Assemblies/New_DyeHead/Test_Lid.cs b/Software/Stubs Collection/stubs/Scripts/Assemblies/New_DyeHead/Test_Lid.cs new file mode 100644 index 000000000..110a0f09b --- /dev/null +++ b/Software/Stubs Collection/stubs/Scripts/Assemblies/New_DyeHead/Test_Lid.cs @@ -0,0 +1,145 @@ +using System; +using System.Text; +using System.IO; +using System.Linq; +using System.Drawing; +using System.Diagnostics; +using System.Windows.Forms; +using System.Threading; +using System.Threading.Tasks; +using System.Collections.Generic; +using Tango.PMR.Stubs; +using Tango.Stubs; + +const int New_DyeHead_UNDER_TEST=48; + +const Int32 MGNET_OPEN=0x42F801; +const Int32 MGNET_EN=0x42F701; +const Int32 MGNET_CLOSE=0x42F800; +const Int32 MGNET_DIS=0x42F700; + +const Int32 LS_FRONT=0X460110; +const Int32 LS_REAR=0X460120; +const Int32 LS_UPPER=0X460140; +const Int32 LS_SPARE=0X460180; + +const Int32 DyeingHeadLid_Motor = 2; + +//-------------------------------------------------------------------------------- + +public void OnExecute(StubManager stubManager) +{ + var response = stubManager.ShowResponseWindow("Enter Loop Number for Dye Head Lead.", ""); + //stubManager.WriteLine(response); + int Loop_Nm = int.Parse(response); + + for (int i=0;i<Loop_Nm;i++) + { + if (Test_Magnet_Motor_LS_New_DyeHead() != 0 ) + { + i=Loop_Nm; + stubManager.Write("Error"); + } + Thread.Sleep(2000); + } +} + +//------------------------------------------------------------- + +//-------------------------------------------- + int Test_Magnet_Motor_LS_New_DyeHead() +{ + Int32 temp; + int i=0; + +//---------------------- open Magnet ---------------------------- + stubManager.Run<ProgressResponse>("ProgressRequest" ,0x0EAD,MGNET_OPEN); // turn magnet on + Thread.Sleep(100); + + stubManager.Run<ProgressResponse>("ProgressRequest" ,0x0EAD,MGNET_EN); // magnet enable + Thread.Sleep(100); + + Thread.Sleep(1000); +//---------------------- chekc Magnet is open ---------------------------- +// DialogResult result = MessageBox.Show("Make shure, Magnet is open and DyeHead cover on front.", "Warning",MessageBoxButtons.YesNo); +// if(result == DialogResult.No) +// { +// stubManager.Write("Magnet is close\n"); +// return 0; +// } + temp=read_pio (LS_UPPER); // read LS_UPPER + if (temp != 0) + { + stubManager.Write("LS_UPPER of Magnet is close\n"); + return 1; + } + stubManager.Write("Magnet is Open\n"); + + +//---------------------- Move DyeingHead Lid Motor rear---------------------------- + stubManager.Run<StubMotorRunResponse>("StubMotorRunRequest" ,DyeingHeadLid_Motor, true, 250); + stubManager.Write("*** Open Lid Head ********* \n"); + + temp = 0; + i=0; + while ((temp == 0x0)&& (i<200) ) //wait until Limit Switch or timeout 200*50msec=10sec + { + temp=read_pio (LS_REAR); // read LS_REAR + Thread.Sleep(50); + + i++; + } + + stubManager.Run<StubMotorStopResponse>("StubMotorStopRequest" ,DyeingHeadLid_Motor,3); //stop motor + if(i==200) + { + stubManager.Write("LS_REAR Not calibrate\n"); + return 1; + } + +//---------------------- Move DyeingHead Lid Motor front---------------------------- + stubManager.Write("*** Close Lid Head \n"); + stubManager.Run<StubMotorRunResponse>("StubMotorRunRequest" ,DyeingHeadLid_Motor, false, 250); + temp = 0; + i=0; + while ((temp == 0x0)&& (i<200) ) //wait until Limit Switch or timeout 200*50msec=10sec + { + temp=read_pio (LS_FRONT); // read LS_FRONT + Thread.Sleep(50); + i++; + } + stubManager.Run<StubMotorStopResponse>("StubMotorStopRequest" ,DyeingHeadLid_Motor,3); //stop motor + if(i==200) + { + stubManager.Write("LS_FRONT Not calibrate\n"); + return 1; + } +//---------------------- Close Magnet ---------------------------- + stubManager.Run<ProgressResponse>("ProgressRequest" ,0x0EAD,MGNET_CLOSE); // turn magnet off + Thread.Sleep(2000); + stubManager.Run<ProgressResponse>("ProgressRequest" ,0x0EAD,MGNET_DIS); // magnet Disable + + stubManager.Write("Magnet is Close\n"); + Thread.Sleep(1000); + + temp=read_pio (LS_UPPER); // read LS_UPPER + if (temp == 0) + { + stubManager.Write("LS_UPPER of Magnet is open\n"); + return 1; + } + stubManager.Write("LS_UPPER of Magnet is close\n"); + return 0; + } + +Int32 read_pio(Int32 i2c_input) +{ + Int32 temp=0; + var response = stubManager.Run<ProgressResponse>("ProgressRequest" ,0x0EAD,i2c_input); // read break + + temp = (Int32) (response.Progress); + temp =temp & (i2c_input& 0xff); //if break ok + + return temp; +} +//end mati diff --git a/Software/Stubs Collection/stubs/Scripts/Assemblies/PowerStep01/Get_PowerStep01_Parameters.cs b/Software/Stubs Collection/stubs/Scripts/Assemblies/PowerStep01/Get_PowerStep01_Parameters.cs new file mode 100644 index 000000000..ebe0dbf0f --- /dev/null +++ b/Software/Stubs Collection/stubs/Scripts/Assemblies/PowerStep01/Get_PowerStep01_Parameters.cs @@ -0,0 +1,227 @@ +using System; +using System.Text; +using System.Linq; +using System.Drawing; +using System.Diagnostics; +using System.Windows.Forms; +using System.Threading; +using System.Threading.Tasks; +using System.Collections.Generic; +using Tango.PMR.Stubs; +using Tango.Stubs; + +//unmark Auto logging ! + +const Int32 x_POWERSTEP01_CONFIG = 0x1A; +const Int32 x_POWERSTEP01_STATUS = 0x1B; +const Int32 x_POWERSTEP01_GATECFG1 = 0x18; +const Int32 x_POWERSTEP01_GATECFG2 = 0x19; + +const Int32 x_ABS_POS = 0x01; +const Int32 x_EL_POS = 0x02; +const Int32 x_MARK = 0x03; +const Int32 x_SPEED = 0x04; +const Int32 x_ACC = 0x05; +const Int32 x_DEC = 0x06; +const Int32 x_MAX_SPEED = 0x07; +const Int32 x_MIN_SPEED = 0x08; +const Int32 x_FS_SPD = 0x15; +const Int32 x_KVAL_HOLD = 0x09; +const Int32 x_KVAL_RUN = 0x0A; +const Int32 x_KVAL_ACC = 0x0B; +const Int32 x_KVAL_DEC = 0x0C; +const Int32 x_INT_SPD = 0x0D; +const Int32 x_ST_SLP = 0x0E; +const Int32 x_FN_SLP_ACC = 0x0F; +const Int32 x_FN_SLP_DEC = 0x10; +const Int32 x_K_THERM = 0x11; +const Int32 x_ADC_OUT = 0x12; +const Int32 x_OCD_TH = 0x13; +const Int32 x_STALL_TH = 0x14; +const Int32 x_STEP_MODE = 0x16; +const Int32 x_ALARM_EN = 0x17; +const Int32 x_CONFIG = 0x18; +const Int32 x_STATUS = 0x19; +//------------------------------- +const Int32 x_GET_PARAM = 0x20; +//------------------------------- +const Int32 Max_Motor_ID = 25; + +string[] Motor_ID = new string[30]; + + +Motor_ID[0] ="DH_CLEANHEAD "; +Motor_ID[1] ="DH_CLEANMECH "; +Motor_ID[2] ="DH_LID "; +Motor_ID[3] ="DRYER_DRIVING"; +Motor_ID[4] ="DRYER_LID "; +Motor_ID[5] ="DRYER_LOADARM"; +Motor_ID[6] ="DISPENCER_1 "; +Motor_ID[7] ="DISPENCER_2 "; +Motor_ID[8] ="DISPENCER_3 "; +Motor_ID[9] ="DISPENCER_4 "; +Motor_ID[10]="DISPENCER_5 "; +Motor_ID[11]="DISPENCER_6 "; +Motor_ID[12]="DISPENCER_7 "; +Motor_ID[13]="DISPENCER_8 "; +Motor_ID[14]="SCREW "; +Motor_ID[15]="WINDER "; +Motor_ID[16]="LDANCER1 "; +Motor_ID[17]="LDANCER2 "; +Motor_ID[18]="LDRIVING "; +Motor_ID[19]="LLODING "; +Motor_ID[20]="LPIVOT "; +Motor_ID[21]="RDANCER "; +Motor_ID[22]="RDRIVING "; +Motor_ID[23]="RLOADARM "; +Motor_ID[24]="RLODING "; +Motor_ID[25]="SPARE1_1 "; +Motor_ID[26]="SPARE1_2 "; +Motor_ID[27]="SPARE2_1 "; +Motor_ID[28]="SPARE2_2 "; +Motor_ID[29]="SPARE3 "; + +public void OnExecute(StubManager stubManager) +{ + + var i = stubManager.ShowResponseWindow("Please Enter Motor ID:"); + + stubManager.Write("Motor_ID:\t\t "); + stubManager.Write(i); + stubManager.Write("\n"); + + stubManager.Write("ABS_POS:\t\t"); + var response = stubManager.Run<StubMotorResponse>("StubMotorRequest" ,i, (x_GET_PARAM | x_ABS_POS)<<24, 0, 0); + stubManager.WriteHex(response.RecivedData,4); + stubManager.Write("\n"); + + stubManager.Write("EL_POS:\t\t"); + response = stubManager.Run<StubMotorResponse>("StubMotorRequest" ,i, (x_GET_PARAM | x_EL_POS)<<16, 0, 0); + stubManager.WriteHex(response.RecivedData,4); + stubManager.Write("\n"); + + stubManager.Write("MARK:\t\t\t"); + response = stubManager.Run<StubMotorResponse>("StubMotorRequest" ,i, (x_GET_PARAM | x_MARK)<<24, 0, 0); + stubManager.WriteHex(response.RecivedData,4); + stubManager.Write("\n"); + + stubManager.Write("SPEED:\t\t\t"); + response = stubManager.Run<StubMotorResponse>("StubMotorRequest" ,i, (x_GET_PARAM | x_SPEED)<<24, 0, 0); + stubManager.WriteHex(response.RecivedData,4); + stubManager.Write("\n"); + + stubManager.Write("ACC:\t\t\t"); + response = stubManager.Run<StubMotorResponse>("StubMotorRequest" ,i, (x_GET_PARAM | x_ACC)<<16, 0, 0); + stubManager.WriteHex(response.RecivedData,4); + stubManager.Write("\n"); + + stubManager.Write("DEC:\t\t\t"); + response = stubManager.Run<StubMotorResponse>("StubMotorRequest" ,i, (x_GET_PARAM | x_DEC)<<16, 0, 0); + stubManager.WriteHex(response.RecivedData,4); + stubManager.Write("\n"); + + stubManager.Write("MAX_SPEED:\t\t"); + response = stubManager.Run<StubMotorResponse>("StubMotorRequest" ,i, (x_GET_PARAM | x_MAX_SPEED)<<16, 0, 0); + stubManager.WriteHex(response.RecivedData,4); + stubManager.Write("\n"); + + stubManager.Write("MIN_SPEED:\t\t"); + response = stubManager.Run<StubMotorResponse>("StubMotorRequest" ,i, (x_GET_PARAM | x_MIN_SPEED)<<16, 0, 0); + stubManager.WriteHex(response.RecivedData,4); + stubManager.Write("\n"); + + stubManager.Write("FS_SPD:\t\t"); + response = stubManager.Run<StubMotorResponse>("StubMotorRequest" ,i, (x_GET_PARAM | x_FS_SPD)<<16, 0, 0); + stubManager.WriteHex(response.RecivedData,4); + stubManager.Write("\n"); + + stubManager.Write("KVAL\\TVAL_HOLD:\t"); + response = stubManager.Run<StubMotorResponse>("StubMotorRequest" ,i, (x_GET_PARAM | x_KVAL_HOLD)<<8, 0, 0); + stubManager.WriteHex(response.RecivedData,4); + stubManager.Write("\n"); + + stubManager.Write("KVAL\\TVAL_RUN:\t"); + response = stubManager.Run<StubMotorResponse>("StubMotorRequest" ,i, (x_GET_PARAM | x_KVAL_RUN)<<8, 0, 0); + stubManager.WriteHex(response.RecivedData,4); + stubManager.Write("\n"); + + stubManager.Write("KVAL\\TVAL_ACC:\t"); + response = stubManager.Run<StubMotorResponse>("StubMotorRequest" ,i, (x_GET_PARAM | x_KVAL_ACC)<<8, 0, 0); + stubManager.WriteHex(response.RecivedData,4); + stubManager.Write("\n"); + + stubManager.Write("KVAL\\TVAL_DEC:\t"); + response = stubManager.Run<StubMotorResponse>("StubMotorRequest" ,i, (x_GET_PARAM | x_KVAL_DEC)<<8, 0, 0); + stubManager.WriteHex(response.RecivedData,4); + stubManager.Write("\n"); + + stubManager.Write("INT_SPEED:\t\t"); + response = stubManager.Run<StubMotorResponse>("StubMotorRequest" ,i, (x_GET_PARAM | x_INT_SPD)<<16, 0, 0); + stubManager.WriteHex(response.RecivedData,4); + stubManager.Write("\n"); + + stubManager.Write("ST_SLP\\T_FAST:\t"); + response = stubManager.Run<StubMotorResponse>("StubMotorRequest" ,i, (x_GET_PARAM | x_ST_SLP)<<8, 0, 0); + stubManager.WriteHex(response.RecivedData,4); + stubManager.Write("\n"); + + stubManager.Write("FN_SLP_ACC\\TON_MIN:\t"); + response = stubManager.Run<StubMotorResponse>("StubMotorRequest" ,i, (x_GET_PARAM | x_FN_SLP_ACC)<<8, 0, 0); + stubManager.WriteHex(response.RecivedData,4); + stubManager.Write("\n"); + + stubManager.Write("FN_SLP_DEC\\TOFF_MIN:"); + response = stubManager.Run<StubMotorResponse>("StubMotorRequest" ,i, (x_GET_PARAM | x_FN_SLP_DEC)<<8, 0, 0); + stubManager.WriteHex(response.RecivedData,4); + stubManager.Write("\n"); + + stubManager.Write("K_THERM:\t\t"); + response = stubManager.Run<StubMotorResponse>("StubMotorRequest" ,i, (x_GET_PARAM | x_K_THERM)<<8, 0, 0); + stubManager.WriteHex(response.RecivedData,4); + stubManager.Write("\n"); + + stubManager.Write("ADC_OUT:\t\t"); + response = stubManager.Run<StubMotorResponse>("StubMotorRequest" ,i, (x_GET_PARAM | x_ADC_OUT)<<8, 0, 0); + stubManager.WriteHex(response.RecivedData,4); + stubManager.Write("\n"); + + stubManager.Write("OCD_TH:\t\t"); + response = stubManager.Run<StubMotorResponse>("StubMotorRequest" ,i, (x_GET_PARAM | x_OCD_TH)<<8, 0, 0); + stubManager.WriteHex(response.RecivedData,4); + stubManager.Write("\n"); + + stubManager.Write("STALL_TH:\t\t"); + response = stubManager.Run<StubMotorResponse>("StubMotorRequest" ,i, (x_GET_PARAM | x_STALL_TH)<<8, 0, 0); + stubManager.WriteHex(response.RecivedData,4); + stubManager.Write("\n"); + + stubManager.Write("STEP_MODE:\t\t"); + response = stubManager.Run<StubMotorResponse>("StubMotorRequest" ,i, (x_GET_PARAM | x_STEP_MODE)<<8, 0, 0); + stubManager.WriteHex(response.RecivedData,4); + stubManager.Write("\n"); + + stubManager.Write("ALARM_EN:\t\t"); + response = stubManager.Run<StubMotorResponse>("StubMotorRequest" ,i, (x_GET_PARAM | x_ALARM_EN)<<8, 0, 0); + stubManager.WriteHex(response.RecivedData,4); + stubManager.Write("\n"); + + stubManager.Write("GATECFG1:\t\t"); + response = stubManager.Run<StubMotorResponse>("StubMotorRequest" ,i, (x_GET_PARAM | x_POWERSTEP01_GATECFG1)<<16, 0, 0); + stubManager.WriteHex(response.RecivedData,4); + stubManager.Write("\n"); + + stubManager.Write("GATECFG2:\t\t"); + response = stubManager.Run<StubMotorResponse>("StubMotorRequest" ,i, (x_GET_PARAM | x_POWERSTEP01_GATECFG2)<<8, 0, 0); + stubManager.WriteHex(response.RecivedData,4); + stubManager.Write("\n"); + + stubManager.Write("CONFIG:\t\t"); + response = stubManager.Run<StubMotorResponse>("StubMotorRequest" ,i, (x_GET_PARAM | x_POWERSTEP01_CONFIG)<<16, 0, 0); + stubManager.WriteHex(response.RecivedData,4); + stubManager.Write("\n"); + + stubManager.Write("STATUS:\t\t"); + response = stubManager.Run<StubMotorResponse>("StubMotorRequest" ,i, (x_GET_PARAM | x_POWERSTEP01_STATUS)<<16, 0, 0); + stubManager.WriteHex(response.RecivedData,4); + stubManager.Write("\n"); +}
\ No newline at end of file diff --git a/Software/Stubs Collection/stubs/Scripts/Assemblies/PowerStep01/Motor_GMotor_Get_Param_Powerstep01_rev3.cs b/Software/Stubs Collection/stubs/Scripts/Assemblies/PowerStep01/Motor_GMotor_Get_Param_Powerstep01_rev3.cs new file mode 100644 index 000000000..384c079fa --- /dev/null +++ b/Software/Stubs Collection/stubs/Scripts/Assemblies/PowerStep01/Motor_GMotor_Get_Param_Powerstep01_rev3.cs @@ -0,0 +1,237 @@ +using System; +using System.Text; +using System.Linq; +using System.Drawing; +using System.Diagnostics; +using System.Windows.Forms; +using System.Threading; +using System.Threading.Tasks; +using System.Collections.Generic; +using Tango.PMR.Stubs; +using Tango.Stubs; + +//unmark Auto logging ! + +//General Configuration +const Int32 x_ABS_POS = 0x01; +const Int32 x_EL_POS = 0x02; +const Int32 x_MARK = 0x03; +const Int32 x_SPEED = 0x04; +const Int32 x_ACC = 0x05; +const Int32 x_DEC = 0x06; +const Int32 x_MAX_SPEED = 0x07; +const Int32 x_MIN_SPEED = 0x08; +//VOLTAGE / CURRENT +const Int32 x_KTVAL_HOLD = 0x09; +const Int32 x_KTVAL_RUN = 0x0A; +const Int32 x_KTVAL_ACC = 0x0B; +const Int32 x_KTVAL_DEC = 0x0C; +const Int32 x_INT_SPD = 0x0D;//voltage +const Int32 x_ST_SLP_T_FAST = 0x0E; +const Int32 x_FN_SLP_ACC_TON_MIN = 0x0F; +const Int32 x_FN_SLP_DEC_TOFF_MIN = 0x10; +const Int32 x_K_THERM = 0x11;//VOLTAGE +const Int32 x_ADC_OUT = 0x12; +const Int32 x_OCD_TH = 0x13; +const Int32 x_STALL_TH = 0x14;//VOLTAGE +const Int32 x_FS_SPD = 0x15; +const Int32 x_STEP_MODE = 0x16; +const Int32 x_ALARM_EN = 0x17; +const Int32 x_POWERSTEP01_GATECFG1 = 0x18; +const Int32 x_POWERSTEP01_GATECFG2 = 0x19; +const Int32 x_POWERSTEP01_CONFIG = 0x1A; +const Int32 x_POWERSTEP01_STATUS = 0x1B; +//VOLTAGE / CURRENT + +//------------------------------- +const Int32 x_GET_PARAM = 0x20; +//------------------------------- +Int32 Start_index = 0; // start from motor + +const Int32 Max_Motor_ID = 25; + +string[] Motor_ID = new string[30]; + + +Motor_ID[0] ="DH_CLEANHEAD "; +Motor_ID[1] ="DH_CLEANMECH "; +Motor_ID[2] ="DH_LID "; +Motor_ID[3] ="DRYER_DRIVING"; +Motor_ID[4] ="DRYER_LID "; +Motor_ID[5] ="DRYER_LOADARM"; +Motor_ID[6] ="DISPENCER_1 "; +Motor_ID[7] ="DISPENCER_2 "; +Motor_ID[8] ="DISPENCER_3 "; +Motor_ID[9] ="DISPENCER_4 "; +Motor_ID[10]="DISPENCER_5 "; +Motor_ID[11]="DISPENCER_6 "; +Motor_ID[12]="DISPENCER_7 "; +Motor_ID[13]="DISPENCER_8 "; +Motor_ID[14]="SCREW "; +Motor_ID[15]="WINDER "; +Motor_ID[16]="LDANCER1 "; +Motor_ID[17]="LDANCER2 "; +Motor_ID[18]="LDRIVING "; +Motor_ID[19]="LLODING "; +Motor_ID[20]="LPIVOT "; +Motor_ID[21]="RDANCER "; +Motor_ID[22]="RDRIVING "; +Motor_ID[23]="RLOADARM "; +Motor_ID[24]="RLODING "; +Motor_ID[25]="SPARE1_1 "; +Motor_ID[26]="SPARE1_2 "; +Motor_ID[27]="SPARE2_1 "; +Motor_ID[28]="SPARE2_2 "; +Motor_ID[29]="SPARE3 "; + + + + +public void OnExecute(StubManager stubManager) +{ + Int32 i = 0; + + Int32 motname = 0; +//stubManager.Run<StubFpgaWriteRegResponse>("StubFpgaWriteRegRequest" ,0x60000380 , 0x06b9); //7ff mati +//stubManager.Run<StubFpgaWriteRegResponse>("StubFpgaWriteRegRequest" ,0x60000390 , 0x003f); +//stubManager.Run<StubFpgaWriteRegResponse>("StubFpgaWriteRegRequest" ,0x60000550 , 0x0003); //ff mati +//stubManager.Run<StubFpgaWriteRegResponse>("StubFpgaWriteRegRequest" ,0x60000b80 , 0x001f); + + +// stubManager.Write("\n\n"); + stubManager.Write("MoTor\tABS_POS\tEL_POS\tMARK\tSPEED\tACC\tDEC\tMAX_SPEED\tMIN_SPEED\tKTVAL_HOLD\tKTVAL_RUN\tTKVAL_ACC\tTKVAL_DEC\tINT_SPD\tT_FAST\t TON_MIN\tTOFF_MIN\tK_THERM\tADC_OUT\tOCD_TH\tSTALL_TH\tFS_SPD\tSTEP_MODE\tALARM_EN\tGATECFG1\tGATECFG2\tCONFIG\tSTATUS\n"); +// stubManager.Write("------\t\t\t--------\t--------\t----------\t---\t\t---\t\t----------\t---------\t---------\t---------\t------\t\t--------\t------\n"); + + + + for (i = Start_index; i < Max_Motor_ID; i++) + { + +// if((i%8 ==0) ) +// { +// } + //stubManager.Write(i); + + stubManager.Write(Motor_ID[i]); + stubManager.Write("\t\t"); + + var response = stubManager.Run<StubMotorResponse>("StubMotorRequest" ,i, (x_GET_PARAM | x_ABS_POS)<<24, 0, 0); + stubManager.WriteHex(response.RecivedData,6); + stubManager.Write("\t"); + + response = stubManager.Run<StubMotorResponse>("StubMotorRequest" ,i, (x_GET_PARAM | x_EL_POS)<<16, 0, 0); + stubManager.WriteHex(response.RecivedData,4); + stubManager.Write("\t"); + + + response = stubManager.Run<StubMotorResponse>("StubMotorRequest" ,i, (x_GET_PARAM | x_MARK)<<24, 0, 0); + stubManager.WriteHex(response.RecivedData,6); + stubManager.Write("\t"); + + response = stubManager.Run<StubMotorResponse>("StubMotorRequest" ,i, (x_GET_PARAM | x_SPEED)<<24, 0, 0); + stubManager.WriteHex(response.RecivedData,6); + stubManager.Write("\t"); + + response = stubManager.Run<StubMotorResponse>("StubMotorRequest" ,i, (x_GET_PARAM | x_ACC)<<16, 0, 0); + stubManager.WriteHex(response.RecivedData,4); + stubManager.Write("\t"); + + response = stubManager.Run<StubMotorResponse>("StubMotorRequest" ,i, (x_GET_PARAM | x_DEC)<<16, 0, 0); + stubManager.WriteHex(response.RecivedData,4); + stubManager.Write("\t"); + + response = stubManager.Run<StubMotorResponse>("StubMotorRequest" ,i, (x_GET_PARAM | x_MAX_SPEED)<<16, 0, 0); + stubManager.WriteHex(response.RecivedData,4); + stubManager.Write("\t"); + + response = stubManager.Run<StubMotorResponse>("StubMotorRequest" ,i, (x_GET_PARAM | x_MIN_SPEED)<<16, 0, 0); + stubManager.WriteHex(response.RecivedData,4); + stubManager.Write("\t"); + + + response = stubManager.Run<StubMotorResponse>("StubMotorRequest" ,i, (x_GET_PARAM | x_KTVAL_HOLD)<<8, 0, 0); + stubManager.WriteHex(response.RecivedData,4); + stubManager.Write("\t"); + + response = stubManager.Run<StubMotorResponse>("StubMotorRequest" ,i, (x_GET_PARAM | x_KTVAL_RUN)<<8, 0, 0); + stubManager.WriteHex(response.RecivedData,4); + stubManager.Write("\t"); + + response = stubManager.Run<StubMotorResponse>("StubMotorRequest" ,i, (x_GET_PARAM | x_KTVAL_ACC)<<8, 0, 0); + stubManager.WriteHex(response.RecivedData,4); + stubManager.Write("\t"); + + response = stubManager.Run<StubMotorResponse>("StubMotorRequest" ,i, (x_GET_PARAM | x_KTVAL_DEC)<<8, 0, 0); + stubManager.WriteHex(response.RecivedData,4); + stubManager.Write("\t"); + + response = stubManager.Run<StubMotorResponse>("StubMotorRequest" ,i, (x_GET_PARAM | x_INT_SPD)<<16, 0, 0); + stubManager.WriteHex(response.RecivedData,4); + stubManager.Write("\t"); + + + response = stubManager.Run<StubMotorResponse>("StubMotorRequest" ,i, (x_GET_PARAM | x_ST_SLP_T_FAST)<<8, 0, 0); + stubManager.WriteHex(response.RecivedData,4); + stubManager.Write("\t"); + + response = stubManager.Run<StubMotorResponse>("StubMotorRequest" ,i, (x_GET_PARAM | x_FN_SLP_ACC_TON_MIN)<<8, 0, 0); + stubManager.WriteHex(response.RecivedData,4); + stubManager.Write("\t"); + + response = stubManager.Run<StubMotorResponse>("StubMotorRequest" ,i, (x_GET_PARAM | x_FN_SLP_DEC_TOFF_MIN)<<8, 0, 0); + stubManager.WriteHex(response.RecivedData,4); + stubManager.Write("\t"); + + + response = stubManager.Run<StubMotorResponse>("StubMotorRequest" ,i, (x_GET_PARAM | x_K_THERM)<<8, 0, 0); + stubManager.WriteHex(response.RecivedData,4); + stubManager.Write("\t"); + + response = stubManager.Run<StubMotorResponse>("StubMotorRequest" ,i, (x_GET_PARAM | x_ADC_OUT)<<8, 0, 0); + stubManager.WriteHex(response.RecivedData,4); + stubManager.Write("\t"); + + response = stubManager.Run<StubMotorResponse>("StubMotorRequest" ,i, (x_GET_PARAM | x_OCD_TH)<<8, 0, 0); + stubManager.WriteHex(response.RecivedData,4); + stubManager.Write("\t"); + + + response = stubManager.Run<StubMotorResponse>("StubMotorRequest" ,i, (x_GET_PARAM | x_STALL_TH)<<8, 0, 0); + stubManager.WriteHex(response.RecivedData,4); + stubManager.Write("\t"); + + response = stubManager.Run<StubMotorResponse>("StubMotorRequest" ,i, (x_GET_PARAM | x_FS_SPD)<<16, 0, 0); + stubManager.WriteHex(response.RecivedData,4); + stubManager.Write("\t"); + + response = stubManager.Run<StubMotorResponse>("StubMotorRequest" ,i, (x_GET_PARAM | x_STEP_MODE)<<8, 0, 0); + stubManager.WriteHex(response.RecivedData,4); + stubManager.Write("\t"); + + response = stubManager.Run<StubMotorResponse>("StubMotorRequest" ,i, (x_GET_PARAM | x_ALARM_EN)<<8, 0, 0); + stubManager.WriteHex(response.RecivedData,4); + stubManager.Write("\t"); + + response = stubManager.Run<StubMotorResponse>("StubMotorRequest" ,i, (x_GET_PARAM | x_POWERSTEP01_GATECFG1)<<16, 0, 0); + stubManager.WriteHex(response.RecivedData,4); + stubManager.Write("\t"); + + response = stubManager.Run<StubMotorResponse>("StubMotorRequest" ,i, (x_GET_PARAM | x_POWERSTEP01_GATECFG2)<<8, 0, 0); + stubManager.WriteHex(response.RecivedData,4); + stubManager.Write("\t"); + + response = stubManager.Run<StubMotorResponse>("StubMotorRequest" ,i, (x_GET_PARAM | x_POWERSTEP01_CONFIG)<<16, 0, 0); + stubManager.WriteHex(response.RecivedData,4); + stubManager.Write("\t"); + + response = stubManager.Run<StubMotorResponse>("StubMotorRequest" ,i, (x_GET_PARAM | x_POWERSTEP01_STATUS)<<16, 0, 0); + stubManager.WriteHex(response.RecivedData,4); + stubManager.Write("\n"); + + + + + } + + +}
\ No newline at end of file diff --git a/Software/Stubs Collection/stubs/Scripts/Assemblies/WHS/fan1-4.cs b/Software/Stubs Collection/stubs/Scripts/Assemblies/WHS/fan1-4.cs index 6e7617cc0..69f8e4d13 100644 --- a/Software/Stubs Collection/stubs/Scripts/Assemblies/WHS/fan1-4.cs +++ b/Software/Stubs Collection/stubs/Scripts/Assemblies/WHS/fan1-4.cs @@ -12,7 +12,7 @@ using Tango.Stubs; public void OnExecute(StubManager stubManager) { - int x=80; + int x=0; // var response1 = stubManager.ShowResponseWindow("Please Enter fan value from 0 to 255:"); // int x = Int32.Parse(response1); @@ -23,6 +23,7 @@ public void OnExecute(StubManager stubManager) stubManager.Run<ProgressResponse>("ProgressRequest" ,0xffac4, x); //whs fan3 full stubManager.Run<ProgressResponse>("ProgressRequest" ,0xffac5, x); //whs fan4 full + var response = stubManager.Run<ProgressResponse>("ProgressRequest" ,0x3ea, 6); //whs fan4 full }
\ No newline at end of file diff --git a/Software/Stubs Collection/stubs/Scripts/Head_Type_Indification_2.cs b/Software/Stubs Collection/stubs/Scripts/Head_Type_Indification_2.cs new file mode 100644 index 000000000..a5f28a01d --- /dev/null +++ b/Software/Stubs Collection/stubs/Scripts/Head_Type_Indification_2.cs @@ -0,0 +1,25 @@ +using System; +using System.Text; +using System.Linq; +using System.Drawing; +using System.Diagnostics; +using System.Windows.Forms; +using System.Threading; +using System.Threading.Tasks; +using System.Collections.Generic; +using Tango.PMR.Stubs; +using Tango.Stubs; + +public void OnExecute(StubManager stubManager) +{ + + var response = stubManager.Run<ProgressResponse>("ProgressRequest" ,0xFEAD, 0); + + /* Response: + HEAD_TYPE_UNKNOWN // 0 + HEAD_TYPE_FLAT_WITHOUT_CARD// 1 + HEAD_TYPE_UNKNOWN_WITH_CARD// 2 + HEAD_TYPE_FLAT// 3 + HEAD_TYPE_ARC// 4 + */ +}
\ No newline at end of file diff --git a/Software/Stubs Collection/stubs/Scripts/Jig_Tester/JIG_TESTER.cs b/Software/Stubs Collection/stubs/Scripts/Jig_Tester/JIG_TESTER.cs index 7841b09eb..a90acd902 100644 --- a/Software/Stubs Collection/stubs/Scripts/Jig_Tester/JIG_TESTER.cs +++ b/Software/Stubs Collection/stubs/Scripts/Jig_Tester/JIG_TESTER.cs @@ -28,6 +28,7 @@ System.Timers.Timer timer; string [,] Units_status = new string[50,2]; +string File_Name2; string File_Name1 ; string Status; @@ -36,7 +37,7 @@ const int Winder =0 ; const int LTFU =1 ; string path; -string path1="C:\\Jig_Log\\"; +string path1="C:\\Jig_Log\\";; bool BlinkOn = false; bool timer_started = false; @@ -47,6 +48,10 @@ int UNIT_UNDER_TEST ; public void OnExecute(StubManager stubManager) { + string u =System.Environment.UserName; + + + Label Run_text = new Label () { Width = 110, @@ -219,7 +224,7 @@ public void OnExecute(StubManager stubManager) Height = 20, Text =" S/N" }; - SN_lbl.Location = new Point (30, 10); + SN_lbl.Location = new Point (40, 10); form1.Controls.Add(SN_lbl); TextBox SN_TexstBox = new TextBox () { @@ -229,6 +234,27 @@ public void OnExecute(StubManager stubManager) }; SN_TexstBox.Location = new Point (40, 40); form1.Controls.Add(SN_TexstBox); + //-----Create Lable to Part Number ----------- + + Label PN_lbl = new Label () + { + Width = 150, + Height = 20, + Text =" P/N" + }; + PN_lbl.Location = new Point (190, 10); + form1.Controls.Add(PN_lbl); + + TextBox PN_TexstBox = new TextBox () + { + Width = 150, + Height = 20, + Text ="" + }; + PN_TexstBox.Location = new Point (190, 40); + PN_TexstBox.CharacterCasing = CharacterCasing.Upper; + + form1.Controls.Add(PN_TexstBox); //----------Create Lable to LOCATION---------- Label Location_lbl = new Label () { @@ -236,7 +262,7 @@ public void OnExecute(StubManager stubManager) Height = 20, Text ="LOCATION" }; - Location_lbl.Location = new Point (300, 10); + Location_lbl.Location = new Point (440, 10); form1.Controls.Add(Location_lbl); TextBox Location_TexstBox = new TextBox () @@ -245,7 +271,7 @@ public void OnExecute(StubManager stubManager) Height = 20, Text =Location_str }; - Location_TexstBox.Location = new Point (300, 40); + Location_TexstBox.Location = new Point (440, 40); form1.Controls.Add(Location_TexstBox); Run_text.Location = new System.Drawing.Point(300, 100); @@ -254,6 +280,25 @@ public void OnExecute(StubManager stubManager) Run_text.Font = new Font("Areal", 16, System.Drawing.FontStyle.Bold); form1.Controls.Add(Run_text); //-------------------------------------------------------------------------------- + Button Open_Log_btm = new Button() + { + Width = 100, + Height = 40, + }; + Open_Log_btm.Text = "Open Log File"; + Open_Log_btm.BackColor = System.Drawing.Color.Red; + Open_Log_btm.Location = new System.Drawing.Point(300, 286); + Open_Log_btm.Enabled= false; + form1.Controls.Add(Open_Log_btm); + + + Open_Log_btm.Click += (_, __) => + { + System.Diagnostics.Process.Start(File_Name2 ); + }; + + +//-------------------------------------------------------------------------------- Button Stop_btm = new Button() { Width = 260, @@ -263,6 +308,10 @@ public void OnExecute(StubManager stubManager) Stop_btm.BackColor = System.Drawing.Color.Red; Stop_btm.Location = new System.Drawing.Point(4, 286); Stop_btm.Enabled= false; + + + + Stop_btm.Click += (_, __) => { timer.Stop(); @@ -273,7 +322,7 @@ public void OnExecute(StubManager stubManager) }; form1.Controls.Add(Stop_btm); - + disable_test(); void disable_test() { Winder_btm.Enabled = false; @@ -286,23 +335,23 @@ public void OnExecute(StubManager stubManager) Mixer_btm.Enabled= false; NewMixer_btm.Enabled= false; NewDyeHead_btm.Enabled= false; - Stop_btm.Enabled= true; - } - - void enable_test() - { - Winder_btm.Enabled = true; - LTFU_btm.Enabled = true; - RTFU_btm.Enabled = true; - Dryer_btm.Enabled = true; - MidTank_btm.Enabled= true; - DyeHead_btm.Enabled= true; - WHS_btm.Enabled= true; - Mixer_btm.Enabled= true; - NewMixer_btm.Enabled= true; - NewDyeHead_btm.Enabled= true; Stop_btm.Enabled= false; } + +// void enable_test() +// { +// Winder_btm.Enabled = true; +// LTFU_btm.Enabled = true; +// RTFU_btm.Enabled = true; +// Dryer_btm.Enabled = true; +// MidTank_btm.Enabled= true; +// DyeHead_btm.Enabled= true; +// WHS_btm.Enabled= true; +// Mixer_btm.Enabled= true; +// NewMixer_btm.Enabled= true; +// NewDyeHead_btm.Enabled= true; +// Stop_btm.Enabled= false; +// } void Timer_en() { if (timer_started == false) @@ -320,9 +369,11 @@ public void OnExecute(StubManager stubManager) } } void end_test() - { enable_test(); + { disable_test(); + //enable_test(); + Timer_dis(); - + Open_Log_btm.Enabled= true; Run_text.Text = Status; if (Status=="Pass") { @@ -337,22 +388,126 @@ public void OnExecute(StubManager stubManager) } } +PN_TexstBox.TextChanged += (_,__)=> + + { + string temp; + + if (SN_TexstBox.Text.Length!=15) + { + disable_test(); + return; + } + + if (PN_TexstBox.Text.Contains("-")) + + { + temp=PN_TexstBox.Text.Substring(0, PN_TexstBox.Text.IndexOf("-")); + switch (temp) + { + case "AM00315": //DyeHead + NewDyeHead_btm.Enabled= true; + break; + case "AM00103": //Winder + Winder_btm.Enabled = true; + break; + case "AM00087": //MidTank + MidTank_btm.Enabled = true; + break; + case "AM00031": //LTFU + LTFU_btm.Enabled = true; + break; + case "AM00007": //Dryer + Dryer_btm.Enabled = true; + break; + case "AM00030": //RTFU + RTFU_btm.Enabled = true; + break; + case "AM00281": //New Mixer + NewMixer_btm.Enabled= true; + break; + // case "AM00281": // Mixer + // Mixer_btm.Enabled= true; + // break; + default: + disable_test(); + break; + } + } + else + disable_test(); + + + }; + SN_TexstBox.TextChanged += (_,__)=> + + { + string temp; + if (SN_TexstBox.Text.Length!=15) + { + disable_test(); + return; + } + if (PN_TexstBox.Text.Contains("-")) + { + + temp=PN_TexstBox.Text.Substring(0, PN_TexstBox.Text.IndexOf("-")); + + switch (temp) + { + case "AM00315": //DyeHead + NewDyeHead_btm.Enabled= true; + break; + case "AM00103": //Winder + Winder_btm.Enabled = true; + break; + case "AM00087": //MidTank + MidTank_btm.Enabled = true; + break; + case "AM00031": //LTFU + LTFU_btm.Enabled = true; + break; + case "AM00007": //Dryer + Dryer_btm.Enabled = true; + break; + case "AM00030": //RTFU + RTFU_btm.Enabled = true; + break; + case "AM00286": //New Mixer + NewMixer_btm.Enabled= true; + break; + default: + disable_test(); + break; +// case "AM00281": // Mixer +// Mixer_btm.Enabled= true; +// break; + } + } + else + disable_test(); + }; //----------------------------------------- Winder_btm.Click += async(_,__) => { + Open_Log_btm.Enabled= false; Run_text.Text = "Run"; stubManager.WriteLine("DUT- Winder "); - path="C:\\Users\\lp4\\Dropbox\\"+Location_TexstBox.Text +"_Bench_Tester"+"\\Winder\\" ; +// path="C:\\Users\\" + u + "\\Dropbox\\"+Location_TexstBox.Text +"_Bench_Tester"+"\\Winder\\" ; + path="C:\\Users\\" + u + "\\Dropbox\\"+Location_TexstBox.Text +"_Bench_Tester"+"\\Winder\\" ; + Timer_en(); _cancellationTokenSource = new CancellationTokenSource(); try { - disable_test(); + // disable_test(); + Winder_btm.Enabled = false; + Stop_btm.Enabled= true; var longRunningTask = await Winder_test(setLabel1TextSafe, _cancellationTokenSource.Token, SN_TexstBox.Text ,Location_TexstBox.Text ); } catch (OperationCanceledException) { - enable_test(); + disable_test(); Status="Cancel"; stubManager.Run<StubMotorStopResponse>("StubMotorStopRequest" ,WINDER_Motor,3); //stop motor stubManager.Run<StubMotorStopResponse>("StubMotorStopRequest" ,SCREW,3); //stop motor @@ -368,23 +523,27 @@ public void OnExecute(StubManager stubManager) //----------------------------------------- LTFU_btm.Click += async(_,__) => { + Open_Log_btm.Enabled= false; Run_text.Text = "Run"; stubManager.WriteLine("DUT- LTFU "); - path="C:\\Users\\lp4\\Dropbox\\"+Location_TexstBox.Text +"_Bench_Tester"+"\\LTFU\\" ; + path="C:\\Users\\" + u + "\\Dropbox\\"+Location_TexstBox.Text +"_Bench_Tester"+"\\LTFU\\" ; Timer_en(); _cancellationTokenSource = new CancellationTokenSource(); try { - disable_test(); +// disable_test(); + LTFU_btm.Enabled = false; + Stop_btm.Enabled= true; var longRunningTask = await LTFU_test(setLabel1TextSafe, _cancellationTokenSource.Token, SN_TexstBox.Text ,Location_TexstBox.Text ); } catch (OperationCanceledException) { - enable_test(); + disable_test(); Status="Cancel"; stubManager.Run<StubMotorStopResponse>("StubMotorStopRequest" ,LLOADING_Motor, 3); //hold LRoading high z stubManager.Run<StubMotorStopResponse>("StubMotorStopRequest" ,LDANCER1_Motor, 3); //hold Lloading high z + stubManager.Run<StubMotorStopResponse>("StubMotorStopRequest" ,LDANCER2_Motor, 3); //hold Lloading high z stubManager.Run<StubMotorStopResponse>("StubMotorStopRequest" ,LDRIVING_Motor,3); //stop motor Thread.Sleep(100); @@ -402,21 +561,24 @@ public void OnExecute(StubManager stubManager) //----------------------------------------- Dryer_btm.Click += async(_,__) => { + Open_Log_btm.Enabled= false; Run_text.Text = "Run"; stubManager.WriteLine("DUT- Dryer "); - path="C:\\Users\\lp4\\Dropbox\\"+Location_TexstBox.Text +"_Bench_Tester"+"\\Dryer\\" ; + path="C:\\Users\\" + u + "\\Dropbox\\"+Location_TexstBox.Text +"_Bench_Tester"+"\\Dryer\\" ; Timer_en(); _cancellationTokenSource = new CancellationTokenSource(); try { - disable_test(); - var longRunningTask = await Dryer_test(setLabel1TextSafe, _cancellationTokenSource.Token, SN_TexstBox.Text ,Location_TexstBox.Text ); +// disable_test(); + Dryer_btm.Enabled = false; + Stop_btm.Enabled= true; + var longRunningTask = await Dryer_test(setLabel1TextSafe, _cancellationTokenSource.Token, SN_TexstBox.Text ,Location_TexstBox.Text ); } catch (OperationCanceledException) { - enable_test(); + disable_test(); Status="Cancel"; stubManager.Run<StubMotorStopResponse>("StubMotorStopRequest" ,DryerLid_Motor, 2); //Hard stop hiZ motor stubManager.Run<StubMotorStopResponse>("StubMotorStopRequest" ,DryerMain_Motor,3); //stop motor @@ -436,20 +598,23 @@ public void OnExecute(StubManager stubManager) //----------------------------------------- DyeHead_btm.Click += async(_,__) => { + Open_Log_btm.Enabled= false; Run_text.Text = "Run"; stubManager.WriteLine("DUT- DyeHead "); - path="C:\\Users\\lp4\\Dropbox\\"+Location_TexstBox.Text +"_Bench_Tester"+"\\DyeHead\\" ; + path="C:\\Users\\" + u + "\\Dropbox\\"+Location_TexstBox.Text +"_Bench_Tester"+"\\DyeHead\\" ; Timer_en(); _cancellationTokenSource = new CancellationTokenSource(); try { - disable_test(); - var longRunningTask = await DyeHead_test(setLabel1TextSafe, _cancellationTokenSource.Token, SN_TexstBox.Text ,Location_TexstBox.Text ); +// disable_test(); + DyeHead_btm.Enabled= false; + Stop_btm.Enabled= true; + var longRunningTask = await DyeHead_test(setLabel1TextSafe, _cancellationTokenSource.Token, SN_TexstBox.Text ,Location_TexstBox.Text ); } catch (OperationCanceledException) { - enable_test(); + disable_test(); Status="Cancel"; stubManager.Run<StubMotorStopResponse>("StubMotorStopRequest" ,MAGNET_Driver,3); //stop magnet stubManager.Run<StubMotorStopResponse>("StubMotorStopRequest" ,DyeingHeadLid_Motor,3); //stop motor @@ -472,28 +637,29 @@ public void OnExecute(StubManager stubManager) //----------------------------------------- NewDyeHead_btm.Click += async(_,__) => { + Open_Log_btm.Enabled= false; Run_text.Text = "Run"; stubManager.WriteLine("DUT- New DyeHead "); -// path="C:\\Users\\lp4\\Dropbox\\"+Location_TexstBox.Text +"_Bench_Tester"+"\\NewDyeHead\\" ; - path="C:\\Users\\lp4\\Dropbox\\"+Location_TexstBox.Text +"_Bench_Tester"+"\\DyeHead\\" ; + path="C:\\Users\\" + u + "\\Dropbox\\"+Location_TexstBox.Text +"_Bench_Tester"+"\\NewDyeHead\\" ; Timer_en(); _cancellationTokenSource = new CancellationTokenSource(); try { - disable_test(); -//mf var longRunningTask = await NewDyeHead_test(setLabel1TextSafe, _cancellationTokenSource.Token, SN_TexstBox.Text ,Location_TexstBox.Text ); +// disable_test(); + NewDyeHead_btm.Enabled= false; + Stop_btm.Enabled= true; + var longRunningTask = await NewDyeHead_test(setLabel1TextSafe, _cancellationTokenSource.Token, SN_TexstBox.Text ,Location_TexstBox.Text ); } catch (OperationCanceledException) { - enable_test(); + disable_test(); Status="Cancel"; stubManager.Run<StubMotorStopResponse>("StubMotorStopRequest" ,MAGNET_Driver,3); //stop magnet stubManager.Run<StubMotorStopResponse>("StubMotorStopRequest" ,DyeingHeadLid_Motor,3); //stop motor for (Int32 i = 0; i < 12; i++) //???MF { - stubManager.Run<ProgressResponse>("ProgressRequest" ,0x0EAD,0x40F000 + i*0x100); // turn all heaters OFF Thread.Sleep(10); } @@ -509,19 +675,22 @@ public void OnExecute(StubManager stubManager) //----------------------------------------- RTFU_btm.Click += async(_,__) => { + Open_Log_btm.Enabled= false; Run_text.Text = "Run"; stubManager.WriteLine("DUT- RTFU "); - path="C:\\Users\\lp4\\Dropbox\\"+Location_TexstBox.Text +"_Bench_Tester"+"\\RTFU\\" ; + path="C:\\Users\\" + u + "\\Dropbox\\"+Location_TexstBox.Text +"_Bench_Tester"+"\\RTFU\\" ; Timer_en(); _cancellationTokenSource = new CancellationTokenSource(); try { - disable_test(); +// disable_test(); + RTFU_btm.Enabled= false; + Stop_btm.Enabled= true; var longRunningTask = await RTFU_test(setLabel1TextSafe, _cancellationTokenSource.Token, SN_TexstBox.Text ,Location_TexstBox.Text ); } catch (OperationCanceledException) { - enable_test(); + disable_test(); Status="Cancel"; stubManager.Run<StubMotorStopResponse>("StubMotorStopRequest" ,RLOADING_Motor, 3); //hold Rloading high z Thread.Sleep(100); @@ -539,19 +708,22 @@ public void OnExecute(StubManager stubManager) //----------------------------------------- MidTank_btm.Click += async(_,__) => { + Open_Log_btm.Enabled= false; Run_text.Text = "Run"; stubManager.WriteLine("DUT- MidTank "); - path="C:\\Users\\lp4\\Dropbox\\"+Location_TexstBox.Text +"_Bench_Tester"+"\\MidTank\\" ; + path="C:\\Users\\" + u + "\\Dropbox\\"+Location_TexstBox.Text +"_Bench_Tester"+"\\MidTank\\" ; Timer_en(); _cancellationTokenSource = new CancellationTokenSource(); try { - disable_test(); +// disable_test(); + MidTank_btm.Enabled= false; + Stop_btm.Enabled= true; var longRunningTask = await MidTank_test(setLabel1TextSafe, _cancellationTokenSource.Token, SN_TexstBox.Text ,Location_TexstBox.Text ); } catch (OperationCanceledException) { - enable_test(); + disable_test(); Status="Cancel"; stubManager.Run<StubFpgaWriteRegResponse>("StubFpgaWriteRegRequest" ,F3_VALVE_OUT, 0); //close all valve @@ -566,20 +738,23 @@ public void OnExecute(StubManager stubManager) //---------------------------Mixer-------------- Mixer_btm.Click += async(_,__) => { + Open_Log_btm.Enabled= false; Run_text.Text = "Run"; stubManager.WriteLine("DUT- Mixer "); - path="C:\\Users\\lp4\\Dropbox\\"+Location_TexstBox.Text +"_Bench_Tester"+"\\Mixer\\" ; + path="C:\\Users\\" + u + "\\Dropbox\\"+Location_TexstBox.Text +"_Bench_Tester"+"\\Mixer\\" ; Timer_en(); _cancellationTokenSource = new CancellationTokenSource(); try { - disable_test(); +// disable_test(); + Mixer_btm.Enabled= false; + Stop_btm.Enabled= true; var longRunningTask = await Mixer_test(setLabel1TextSafe, _cancellationTokenSource.Token, SN_TexstBox.Text ,Location_TexstBox.Text ); } catch (OperationCanceledException) { - enable_test(); + disable_test(); Status="Cancel"; SetBit (F1_gpo_01, 7, 0); //clear bit F1_VALVE_MIXCHIP_WASTECH SetBit (F2_CTRL, 7, 0); //clear bit mixer SSR @@ -594,20 +769,23 @@ public void OnExecute(StubManager stubManager) //---------------------------new Mixer-------------- NewMixer_btm.Click += async(_,__) => { + Open_Log_btm.Enabled= false; Run_text.Text = "Run"; stubManager.WriteLine("DUT- New Mixer "); - path="C:\\Users\\lp4\\Dropbox\\"+Location_TexstBox.Text +"_Bench_Tester"+"\\Mixer\\" ; + path="C:\\Users\\" + u + "\\Dropbox\\"+Location_TexstBox.Text +"_Bench_Tester"+"\\Mixer\\" ; Timer_en(); _cancellationTokenSource = new CancellationTokenSource(); try { - disable_test(); - var longRunningTask = await New_Mixer_test(setLabel1TextSafe, _cancellationTokenSource.Token, SN_TexstBox.Text ,Location_TexstBox.Text ); +// disable_test(); + NewMixer_btm.Enabled= false; + Stop_btm.Enabled= true; + var longRunningTask = await New_Mixer_test(setLabel1TextSafe, _cancellationTokenSource.Token, SN_TexstBox.Text ,Location_TexstBox.Text ); } catch (OperationCanceledException) { - enable_test(); + disable_test(); Status="Cancel"; // SetBit (F1_gpo_01, 7, 0); ????????????//clear bit F1_VALVE_MIXCHIP_WASTECH // SetBit (F2_CTRL, 7, 0); //????????????clear bit mixer SSR @@ -630,7 +808,6 @@ public void OnExecute(StubManager stubManager) form1.Controls.Add(_calc_text); // stubManager.WriteLine("Start dialog!"); form1.ShowDialog(); - return ; @@ -661,7 +838,7 @@ if (!Directory.Exists(path)) -string File_Name2=Environment.ExpandEnvironmentVariables(path +Stemp1+"_"+ s_n +"_"+DUT +"_"+ DateTime.Now.ToString("MM_dd_yyyy_HH_mm_ss")+".log" ); + File_Name2=Environment.ExpandEnvironmentVariables(path +Stemp1+"_"+ s_n +"_"+DUT +"_"+ DateTime.Now.ToString("MM_dd_yyyy_HH_mm_ss")+".log" ); stubManager.Write(File_Name2 +"\n"); diff --git a/Software/Stubs Collection/stubs/Scripts/Jig_Tester/Jig-TesterV 1.0.docx b/Software/Stubs Collection/stubs/Scripts/Jig_Tester/Jig-TesterV 1.0.docx Binary files differnew file mode 100644 index 000000000..f7aa53997 --- /dev/null +++ b/Software/Stubs Collection/stubs/Scripts/Jig_Tester/Jig-TesterV 1.0.docx diff --git a/Software/Stubs Collection/stubs/Scripts/Jig_Tester/Jig-TesterV 1.1.docx b/Software/Stubs Collection/stubs/Scripts/Jig_Tester/Jig-TesterV 1.1.docx Binary files differnew file mode 100644 index 000000000..948efd86b --- /dev/null +++ b/Software/Stubs Collection/stubs/Scripts/Jig_Tester/Jig-TesterV 1.1.docx diff --git a/Software/Stubs Collection/stubs/Scripts/Jig_Tester/LTFU_Jig.cs b/Software/Stubs Collection/stubs/Scripts/Jig_Tester/LTFU_Jig.cs index 3f9f2a346..ba072b955 100644 --- a/Software/Stubs Collection/stubs/Scripts/Jig_Tester/LTFU_Jig.cs +++ b/Software/Stubs Collection/stubs/Scripts/Jig_Tester/LTFU_Jig.cs @@ -52,7 +52,7 @@ public Task<decimal> LTFU_test( Action<string> settext, CancellationToken cancel Test_LLOADING_LTFU(); stubManager.Run<StubMotorStopResponse>("StubMotorStopRequest" ,LLOADING_Motor, 3); //hold LRoading high z delay(100); - Motor_SetParam(F1_MOTO_LLOADING_TX1,F1_MOTO_LLOADING_TX0,0x0a,0x14000000); //set kval ran to 0x14,0.65A +// Motor_SetParam(F1_MOTO_LLOADING_TX1,F1_MOTO_LLOADING_TX0,0x0a,0x14000000); //set kval ran to 0x14,0.65A settext("Test LDRIVING LTFU"); Test_LDRIVING_LTFU(); @@ -355,9 +355,9 @@ int Test_DANCER_LTFU() } - if (temp_right_after>temp_right_before) - temp_right_before=temp_right_before+0x4000; - temp_right_before=temp_right_before-temp_right_after; + if (temp_right_after<temp_right_before) + temp_right_after=temp_right_after+0x4000; + temp_right_before=temp_right_after-temp_right_before; if ((temp_right_before< 5000) && (temp_right_before >200)) { Units_status[8,1]="Pass"; @@ -465,7 +465,7 @@ int Test_DANCER_LTFU() return 12; } Units_status[8,1]="Fail"; - stubManager.Write("LDANCER2_SSI\tFail\n"); + stubManager.Write("LDANCER_Right_SSI\tFail\n"); return 12; diff --git a/Software/Stubs Collection/stubs/Scripts/Jig_Tester/MidTank_Jig.cs b/Software/Stubs Collection/stubs/Scripts/Jig_Tester/MidTank_Jig.cs index 27e17ed93..16139df2c 100644 --- a/Software/Stubs Collection/stubs/Scripts/Jig_Tester/MidTank_Jig.cs +++ b/Software/Stubs Collection/stubs/Scripts/Jig_Tester/MidTank_Jig.cs @@ -143,9 +143,9 @@ int open_valve (int valve_nm,int valve_type,int check_valve) //valve_type=0 is if (check_valve!=0) { - temp="Air"; + temp="Air "; if (valve_type==1) - temp="Ink"; + temp="Ink "; DialogResult result = MessageBox.Show("Did " + temp + "Valve of Midtank " + valve_nm +" open?", "Warning",MessageBoxButtons.YesNo); if(result == DialogResult.No) diff --git a/Software/Stubs Collection/stubs/Scripts/Jig_Tester/RTFU_Jig.cs b/Software/Stubs Collection/stubs/Scripts/Jig_Tester/RTFU_Jig.cs index 9863a2ea1..4f47a1cd0 100644 --- a/Software/Stubs Collection/stubs/Scripts/Jig_Tester/RTFU_Jig.cs +++ b/Software/Stubs Collection/stubs/Scripts/Jig_Tester/RTFU_Jig.cs @@ -76,7 +76,7 @@ int Test_RLOADING_RTFU() int temp=1; int counter; -// Motor_SetParam(F1_MOTO_RLOADING_TX1,F1_MOTO_RLOADING_TX0,0x0a,0x40000000); //set kval ran to 0x40- 1.9A +// Motor_SetParam(F1_MOTO_RLOADING_TX1,F1_MOTO_RLOADING_TX0,0x0a,0x2c000000); //set kval ran to 0x40- 1.9A delay(100); stubManager.Run<StubMotorRunResponse>("StubMotorRunRequest" ,RLOADING_Motor, true,200); //move Rloading down delay(3000); @@ -317,7 +317,7 @@ int Test_DANCER_RTFU() stubManager.Write("temp="+temp + "\temp1="+temp1 +"\n"); - DialogResult result = MessageBox.Show("SSI Dancer led is Green(not blinking)?", "Warning",MessageBoxButtons.YesNo); + DialogResult result = MessageBox.Show("SSI Dancer led is Green(Not blinking)?", "Warning",MessageBoxButtons.YesNo); if(result == DialogResult.No) { Units_status[8,1]="Fail"; diff --git a/Software/Stubs Collection/stubs/Scripts/Main card Watchdog test.cs b/Software/Stubs Collection/stubs/Scripts/Main card Watchdog test.cs new file mode 100644 index 000000000..3db075678 --- /dev/null +++ b/Software/Stubs Collection/stubs/Scripts/Main card Watchdog test.cs @@ -0,0 +1,24 @@ +using System; +using System.Text; +using System.Linq; +using System.Drawing; +using System.Diagnostics; +using System.Windows.Forms; +using System.Threading; +using System.Threading.Tasks; +using System.Collections.Generic; +using Tango.PMR.Stubs; +using Tango.Stubs; + +public void OnExecute(StubManager stubManager) +{ + +//"Set WFCF Value +ProgressRequest progressRequest = new ProgressRequest(); +progressRequest.Amount = 0xAD9; +progressRequest.Delay = 0; + +var response = stubManager.Run<ProgressResponse>(progressRequest); + + +}
\ No newline at end of file diff --git a/Software/Stubs Collection/stubs/Scripts/MidTank Calibration.pproj b/Software/Stubs Collection/stubs/Scripts/MidTank Calibration.pproj new file mode 100644 index 000000000..ce80c8a70 --- /dev/null +++ b/Software/Stubs Collection/stubs/Scripts/MidTank Calibration.pproj @@ -0,0 +1 @@ +{"$id":"1","Name":"MidTank Calibration","Description":null,"Scripts":{"$id":"2","$values":[{"$id":"3","Code":"using System;\r\nusing System.Collections.Generic;\r\nusing System.Collections.ObjectModel;\r\nusing System.ComponentModel;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Threading;\r\nusing System.Threading.Tasks;\r\nusing System.Drawing;\r\nusing Google.Protobuf;\r\nusing Tango.BL.Entities;\r\nusing Tango.BL.Enumerations;\r\nusing Tango.PMR.Stubs;\r\nusing Tango.PMR.Diagnostics;\r\nusing Tango.FSE.Common.Connection;\r\nusing Tango.FSE.Common.Diagnostics;\r\nusing Tango.FSE.Procedures;\r\nusing System.IO;\r\nusing System.Windows.Forms;\r\nusing Tango.PMR.EmbeddedParameters;\r\n\r\npublic class Program\r\n{\r\nconst double\tMIN_SLOP=0.7;\r\nconst double\tMAX_SLOP=1.4;\r\nconst double\tERROR_SLOP=-1;\r\nconst double\tMIN_50cc_on_volt=2.3;\r\nconst double\tMAX_50cc_on_volt=3.2;\r\nconst double\tERROR_50cc_on_volt=-1;\r\n\r\nint [] Convert_Midtank_No = new Int32 [8] {1,3,5,7,2,4,6,8};\r\nuint [,] ADC_Add_Chnl = new uint [8,2]\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t{0x44,0x20},\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t{0x44,0x08},\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t{0x46,0x80},\r\n\t\t\t\t\t\t\t\t\t\t\t\t{0x46,0x20},\r\n\t\t\t\t\t\t\t\t\t\t\t\t{0x44,0x10},\r\n\t\t\t\t\t\t\t\t\t\t\t\t{0x44,0x04},\r\n\t\t\t\t\t\t\t\t\t\t\t\t{0x46,0x40},\r\n\t\t\t\t\t\t\t\t\t\t\t\t{0x46,0x10},\r\n\t\t\t\t\t\t\t\t\t\t};\r\n\r\n\r\nconst Int32\tF3_VALVE_OUT\t=\t0x600008E2\t;\r\nstring Machine_SN\t;\r\nprivate const string FILE_PATH = @\"C:\\MidTankLog\\\";\r\nstring File_name;\r\ndouble Full_Cartridge=1000;\t// on CC \r\ndouble \tSlop=0.92;\r\n//----------------------\r\nconst Int32 I2C_ID = 2;\r\n//const Int32 I2C_Slave_Add = 0x46; //must be 0x40, 0x44 or 0x46\r\n//----------------------\r\n\r\n\r\nprivate IProcedureContext context;\r\n\r\n\r\n\r\n\r\n public void OnExecute(IProcedureContext context)\r\n {\r\n \r\n\r\n\tInt32 Timout ;\r\n\tInt32 Interval;\r\n\tInt32 midtankno = 0;\r\n\tdouble Full_Point=0;\t\t\t//on Voltage\r\n\tdouble resualt;\r\n\tdouble Sum=0 ;\r\n\tdouble Old_Sum=0 ;\r\n\tdouble Start_Point=0;\r\n\t\r\n\r\n\tif (!Directory.Exists(FILE_PATH))\r\n\t\t{\r\n\t\t\tDirectory.CreateDirectory(FILE_PATH);\r\n\t\t}\t\t\t\r\n\r\n\r\n\r\n var response =context.RequestUserInputFor<String>(\"Enter Midtank S/N: \", \"\");\r\n\tcontext.Write(\"\\n\");\r\n\tMachine_SN = response;\r\n\tcontext.WriteLine(Machine_SN);\r\n\tFile_name= FILE_PATH +Machine_SN + DateTime.Now.ToString(\"MM_dd_yyyy_HH_mm_ss\")+\".csv\";\r\n\tcontext.Write(File_name);\r\n \tcontext.WriteToFile(File_name,\"MidTank S/N:,\" + Machine_SN);\r\n\t\r\n\r\n var response1 =context.RequestUserInputFor<String>(\"Enter Midtank number to calibrate (1-8):\", \"\");\r\n context.WriteLine(response1);\r\n\tmidtankno = Int32.Parse(response1);\r\n \tcontext.AppendToFile(File_name,\"MidTank Number:\\t\" + response1);\r\n\tif (midtankno==8)\r\n\t{\r\n\t\tSlop=1;\r\n\t\tTimout=60;\t\t//60 minutes\r\n\t\tInterval=60;\t//60 second\r\n\t}\r\n\telse\r\n\t{\r\n\t\tSlop=0.92;\r\n\t\tTimout=10*2;\t\t//10 minutes\r\n\t\tInterval=30;\t//30 second\r\n\r\n\t}\r\n var response10 =context.RequestUserInputFor<String>(\"Enter Cartridge Valume on CC (500-1500):\", \"\");\r\n context.WriteLine(response10);\r\n\tFull_Cartridge = double.Parse(response10);\r\n \tcontext.AppendToFile(File_name,\"Cartridge Valume:\\t\" + response10);\r\n \tcontext.AppendToFile(File_name,\"Slop value:\\t\" + Slop);\r\n\r\n\r\n\tDialogResult result = MessageBox.Show(\"Are you sure to calibrate Midtank No: \"+ midtankno + \" with \"+ Full_Cartridge +\" CC\" , \"Warning\",MessageBoxButtons.YesNo);\r\n\tif(result == DialogResult.Yes)\r\n\t{\r\n\r\n\r\n\r\n\t\tstring box_msg = \"Please Insert cartridge \";\r\n\r\n\t\tMessageBox.Show(box_msg);\r\n\t\t\r\n\t\topen_valve(midtankno,1,1)\t\t;\t//open Air valve\r\n\t\topen_valve(midtankno,0,1)\t\t;\t//open Ink valve\r\n\t\tInt32 i=0; \r\n\t\twhile (i<Timout)\t\t\t\t\t//check for 15 minitus \r\n\t\t{\r\n\t\t\tSum=0;\r\n\t\t\tfor (Int32 j=0;j<Interval;j++)\r\n\t\t\t{\r\n\t\t\t\tresualt=read_pressure_sensor(midtankno);\r\n\t\t\t\tcontext.AppendToFile(File_name,resualt+\",V\");\r\n\t\t\t\tSum=Sum+resualt;\r\n\t\t\t\tThread.Sleep(1000);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\tif (i==0) \r\n\t\t\t\tStart_Point=Sum/Interval;\r\n\t\t\t\r\n\t\t\tif (Sum>Old_Sum)\r\n\t\t\t\tOld_Sum=Sum-Old_Sum;\r\n\t\t\telse\r\n\t\t\t\tOld_Sum=Old_Sum-Sum;\r\n\t\t\r\n \r\n\t\t\tif ((check_valve(midtankno,1) != 0) && (check_valve(midtankno,0) != 0))\r\n\t\t\t{\r\n\t\t\t\ti++;\r\n\t\t\t\tif ( Old_Sum <0.02)\t\r\n\t\t\t\t\ti=Timout+1;\t\t//end \r\n\t\t\t\tOld_Sum=Sum;\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\topen_valve(midtankno,1,0)\t\t;\t//open Air valve\r\n\t\t\topen_valve(midtankno,0,0)\t\t;\t//open Ink valve\r\n\t\t\tOld_Sum=0;\r\n\t\t\t\r\n\t\t\t}\t\r\n\t\t}\r\n\t\tFull_Point=Sum/Interval;\r\n\t\t\r\n\r\n\t\tclose_valve(midtankno,1,1)\t\t;\t//close Air valve\r\n\t\tclose_valve(midtankno,0,1)\t\t;\t//close Ink valve\r\n\r\n\t\t\t\r\n\t\tif (insert_slop_t_eeprom(Full_Point, midtankno,Start_Point)==0)\r\n\t\t{\r\n\t\t\t\tbox_msg =\"Turn Power Off and On to finish the calibration.\";\r\n\t\t\t\tMessageBox.Show(box_msg);\r\n\r\n\r\n \tcontext.AddResult(ResultType.Passed, \"Test passed\", \"Test passed.\");\r\n\t\t\t\t\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\t\tbox_msg =\"Calibration error\";\r\n\t\t\t\tMessageBox.Show(box_msg);\r\n\r\n\r\n \tcontext.AddResult(ResultType.Failed, \"Test Fail\", \"Test Fail.\");\r\n\t\t\t\t\r\n\t\t}\r\n\t}\r\n\r\n}\r\n\r\n\r\n\tint\tinsert_slop_t_eeprom( double FullPoint,Int32 midtankno, double StartPoint)\r\n{\r\n//\tcontext.Write(\"\\n \");\r\n\r\n\t\tStartPoint=FullPoint-StartPoint;\r\n\t\tStartPoint=StartPoint/Full_Cartridge;\r\n\t\tif ((StartPoint>0.7 ) && (StartPoint>1.3 ))\r\n\t\t{\r\n\t\t\tMidTankDataSetupRequest midTankDataSetupRequest = new MidTankDataSetupRequest();\r\n\r\n\t\t\tMidTankData midTankData = new MidTankData();\r\n\t\t\tmidTankData.MidTankId = Convert.ToUInt32 (midtankno-1);\r\n\t\t\tmidTankData.InitialOffsetA =FullPoint - (Full_Cartridge/1000-0.1)/Slop;\r\n\t\t\tmidTankData.SlopeB = Slop;\r\n\t\t\t\r\n\t\t\tcontext.Write(\"\\nMidtank No:\" + midtankno + \"=\\tVoltage Zero is =\"+(FullPoint - (Full_Cartridge/1000-0.1)/Slop)+\"\\tSlop=\"+ Slop);\r\n\t\t\tcontext.AppendToFile(File_name,\"\\nMidtank No:\" + midtankno + \"=\\tVoltage Zero is =\"+(FullPoint - (Full_Cartridge/1000-0.1)/Slop)+\"\\tSlop=\"+ Slop);\r\n\r\n\t\t\t\r\n\t\t\tmidTankDataSetupRequest.MidTankInfo.Add(midTankData);\r\n\t\t\r\n\r\n\t\t\tvar response =context.Send<MidTankDataSetupResponse>(midTankDataSetupRequest);\r\n\r\n\t\t\treturn\t0;\r\n\t\t}\r\n\t\telse\r\n\t\t\tcontext.Write(\"\\nError\");\r\n\t\t\tcontext.AppendToFile(File_name,\"\\n Slop Error\");\r\n\t\t\treturn\t1;\r\n\t\r\n\r\n }\r\n\r\n\r\n\r\nint adc_configuration(uint I2C_Slave_Add,uint channel ) \r\n\t{\r\n\tStubI2CWriteBytesRequest stubI2CWriteBytesRequest = new StubI2CWriteBytesRequest();\r\n\tstubI2CWriteBytesRequest.I2CId = I2C_ID;\r\n\tstubI2CWriteBytesRequest.SlaveAddress = I2C_Slave_Add;\r\n\t\r\n\tUInt32 uInt32 = new UInt32();\r\n\tstubI2CWriteBytesRequest.BytesTWrite.Add(0x00);//Byte 0 to write\r\n\tstubI2CWriteBytesRequest.BytesTWrite.Add(channel);//Byte 1 to Write, must be 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02 or 0x01 for different channels\r\n\tstubI2CWriteBytesRequest.BytesTWrite.Add(0x80);//Byte 2 to Write\r\n\t\r\n\tvar response =context.Send<StubI2CWriteBytesResponse>(stubI2CWriteBytesRequest);\r\n\t\r\n\treturn 1;\r\n\t}\r\n\r\n\r\nint adc_set_for_read_ch(uint I2C_Slave_Add) \r\n\t{\r\n\tStubI2CWriteBytesRequest stubI2CWriteBytesRequest = new StubI2CWriteBytesRequest();\r\n\tstubI2CWriteBytesRequest.I2CId = I2C_ID;\r\n\tstubI2CWriteBytesRequest.SlaveAddress = I2C_Slave_Add;\r\n\t\r\n\tUInt32 uInt32 = new UInt32();\r\n\tstubI2CWriteBytesRequest.BytesTWrite.Add(0x01);//Byte 0 to write\r\n\r\n\tvar response =context.Send<StubI2CWriteBytesResponse>(stubI2CWriteBytesRequest);\r\n\t\r\n\treturn 1;\r\n\t}\r\n\r\n\r\n\r\n\r\ndouble adc_read_ch(uint I2C_Slave_Add) \r\n\t{\r\n\tStubI2CReadBytesRequest stubI2CReadBytesRequest = new StubI2CReadBytesRequest();\r\n\tstubI2CReadBytesRequest.I2CId = I2C_ID;\r\n\tstubI2CReadBytesRequest.SlaveAddress = I2C_Slave_Add;\r\n\tstubI2CReadBytesRequest.NumberOfBytesToRead = 2; // Number of bytes to read\r\n\r\n\tvar response1 =context.Send<StubI2CReadBytesResponse>(stubI2CReadBytesRequest);\r\n\tuint temph=0;\r\n\tuint templ=0;\r\n\tuint temp;\r\n\tdouble calc;\r\n\tdouble calc1;\r\n\tdouble calc2;\r\n\t\t\ttemph=response1.ReadBytes[0];\r\n\t\t\ttempl=response1.ReadBytes[1];\r\n\t\t\ttemp = (temph << 8) | templ;\r\n\t\t\ttemp=temp & 0x0fff;\r\n\t\t\t\t\r\n\t\t\tcalc = (double)temp *2.5 / 4096.0;\r\n\t\t\r\n\t\t\tcalc1 = (1.96- calc) * 4.64 + 1.96;\r\n\t\t\tcontext.Write(\"Vsensor [volts]:\\t\");\r\n\t\t\tcontext.Write(calc1 + \"\\n\");\r\n\r\n\t\r\n\treturn calc1;\r\n\t}\r\n\r\ndouble\t\tread_pressure_sensor(Int32 i )\r\n\t{\r\ndouble resualt =0 ;\r\n\t\t switch (i)\r\n {\r\n case 1:\r\n\t\t\tadc_configuration(0x44,0x20);\t\t//a2d_address 0x44 channel channel 2\r\n\t\t\tadc_set_for_read_ch(0x44);\r\n\t\t\tresualt=adc_read_ch(0x44);\r\n\t\tbreak;\r\n\t\t\r\n\t\tcase 2:\r\n\t\t\tadc_configuration(0x44,0x08);\t\t//a2d_address 0x44 channel channel 4\r\n\t\t\tadc_set_for_read_ch(0x44);\r\n\t\t\tresualt=adc_read_ch(0x44);\r\n\t\tbreak;\r\n\t\t\r\n\t\tcase 3:\r\n\t\t\tadc_configuration(0x46,0x80);\t\t//a2d_address 0x46 channel channel 0\r\n\t\t\tadc_set_for_read_ch(0x46);\r\n\t\t\tresualt=adc_read_ch(0x46);\r\n\t\tbreak;\r\n\t\t\r\n\t\tcase 4:\r\n\t\t\tadc_configuration(0x46,0x20);\t\t//a2d_address 0x46 channel channel 2\r\n\t\t\tadc_set_for_read_ch(0x46);\r\n\t\t\tresualt=adc_read_ch(0x46);\r\n\t\tbreak;\r\n\t\t\r\n\t\tcase 5:\r\n\t\t\tadc_configuration(0x44,0x10);\t\t//a2d_address 0x44 channel channel 3\r\n\t\t\tadc_set_for_read_ch(0x44);\r\n\t\t\tresualt=adc_read_ch(0x44);\r\n\t\tbreak;\r\n\t\t\r\n\t\tcase 6:\r\n\t\t\tadc_configuration(0x44,0x04);\t\t//a2d_address 0x44 channel channel 5\r\n\t\t\tadc_set_for_read_ch(0x44);\r\n\t\t\tresualt=adc_read_ch(0x44);\r\n\t\tbreak;\r\n\t\t\r\n\t\tcase 7:\r\n\t\t\tadc_configuration(0x46,0x40);\t\t//a2d_address 0x46 channel channel 1\r\n\t\t\tadc_set_for_read_ch(0x46);\r\n\t\t\tresualt=adc_read_ch(0x46);\r\n\t\tbreak;\r\n\t\t\r\n\t\tcase 8:\r\n\t\t\tadc_configuration(0x46,0x10);\t\t//a2d_address 0x46 channel channel 3\r\n\t\t\tadc_set_for_read_ch(0x46);\r\n\t\t\tresualt=adc_read_ch(0x46);\r\n\t\tbreak;\r\n\t\t\r\n default:\r\n context.Write(\"Error\");\r\n\r\n break;\r\n\t }\t\r\n\t\t\r\n\t\treturn resualt;\r\n\t}\t\r\n\r\n\r\n//--------------------------------\r\nint open_valve (int valve_nm,int valve_type,int check_valve)\t\t//valve_type=0 is Air ,1 is Ink ; check_valve=1 send feedbak\r\n{\r\n\tint temp1=Convert_Midtank_No[valve_nm-1]\t;\r\n\r\n\tstring temp;\r\n\tSetBit (F3_VALVE_OUT,(((valve_type+1)*8)- temp1), 1);\t\r\n\t\r\n\t\tif (check_valve!=0)\r\n\t\t{\r\n\t\t\ttemp=\"Air\";\r\n\t\t\tif (valve_type==1)\r\n\t\t\ttemp=\"Ink\";\r\n\t\t\t\t\r\n\t\t\tDialogResult result = MessageBox.Show(\"Did \" + temp + \"Valve of Midtank \" + valve_nm +\" open?\", \"Warning\",MessageBoxButtons.YesNo);\r\n\t\t\tif(result == DialogResult.No)\r\n\t\t\t\t{\r\n//\t\t\t\t\tUnits_status[(valve_nm-1)*3+valve_type,1]=\"Fail\";\r\n\t\t\t\t\tcontext.Write(temp +\"Valve\\tFail\\n\");\t\r\n\t\t\t\t\treturn 0;\r\n\t\t\t\t}\r\n\t\t\telse \r\n\t\t\t\t{\r\n//\t\t\t\t\tUnits_status[(valve_nm-1)*3+valve_type,1]=\"Pass\";\r\n\t\t\t\t\tcontext.Write(temp +\"Valve\\tOpen\\n\");\t\r\n\t\t\t\t\treturn 1;\r\n\t\t\t\t}\r\n\t\t\t\r\n\t\t}\r\n\t\treturn 1;\r\n\r\n}\r\n//--------------------------------\t\r\nint close_valve (int valve_nm,int valve_type,int check_valve)\r\n{\r\n\tint temp1=Convert_Midtank_No[valve_nm-1];\t\r\n\r\n\tstring temp;\r\n\tSetBit (F3_VALVE_OUT,(((valve_type+1)*8)- temp1), 0);\r\n\tif (check_valve!=0)\r\n\t\t{\r\n\t\t\ttemp=\"Air\";\r\n\t\t\tif (valve_type==1)\r\n\t\t\ttemp=\"Ink\";\r\n\t\t\t\t\r\n\t\t\tDialogResult result = MessageBox.Show(\"Did \" + temp +\" Valve of Midtank \" + valve_nm +\" close?\", \"Warning\",MessageBoxButtons.YesNo);\r\n\t\t\tif(result == DialogResult.No)\r\n\t\t\t\t{\r\n//\t\t\t\t\tUnits_status[(valve_nm-1)*3+valve_type,1]=\"Fail\";\r\n\t\t\t\t\tcontext.Write(temp +\"Valve\\tFail\\n\");\t\r\n\t\t\t\t\treturn 0;\r\n\t\t\t\t}\r\n\t\t\telse \r\n\t\t\t\t{\r\n//\t\t\t\t\tUnits_status[(valve_nm-1)*3+valve_type,1]=\"Pass\";\r\n\t\t\t\t\tcontext.Write(temp +\"Valve\\tclose\\n\");\t\r\n\t\t\t\t\treturn 1;\r\n\t\t\t\t}\t\t\t\r\n\t\t}\r\n\treturn 1;\r\n\r\n}\r\n\r\npublic Int32 SetBit(Int32 Adr, Int32 BitNo, Int32 Bit)\r\n{\r\n\tInt32 BitMask;\r\n\tInt32 RetVal;\r\n\tRetVal = Fpga_Read_Reg(Adr);\r\n\tInt32 RV = RetVal ;\r\n\t\r\n\tif (Bit == 0x1) \r\n\t{\r\n\t\tBitMask = 0x1 << BitNo;\r\n\t\tRV = RV | BitMask;\r\n\t\tFpga_Write_Reg( Adr, RV );\r\n\t}\r\n\telse if (Bit == 0x0)\r\n\t{\r\n\t\tBitMask = ~(0x1 << BitNo);\r\n\t\tRV = RV & BitMask;\r\n\t\tFpga_Write_Reg(Adr, RV );\t\r\n\t}\r\n\treturn 1;\r\n}\r\n\r\nint Fpga_Write_Reg(Int32 Addr, Int32 Data)\r\n{\r\n\tvar response =context.Send<StubFpgaWriteRegResponse>(\"StubFpgaWriteRegRequest\" ,Addr, Data);\r\n\t\r\n\treturn 1;\r\n}\r\n\r\n\r\nInt32 check_valve (Int32 valve_nm,int valve_type)\r\n{\r\n\tInt32 temp1=Convert_Midtank_No[valve_nm-1];\t\r\n\t\r\n var response =context.Send<StubFpgaReadRegResponse>(\"StubFpgaReadRegRequest\" ,F3_VALVE_OUT);\r\n\tInt32 RV =(Int32) response.Value & 0xffff ;\r\n\tRV = RV & ( 0x1 << (((valve_type+1)*8)- temp1));\r\n\treturn RV;\r\n\r\n}\r\n\r\n\r\nInt32 Fpga_Read_Reg(Int32 Addr)\r\n{\r\n \r\ncontext.Write(\"123\");\r\n\r\n\tvar response =context.Send<StubFpgaReadRegResponse>(\"StubFpgaReadRegRequest\" ,Addr);\r\n\tcontext.Write(\"456\");\r\n\r\n\tInt32 RV= (Int32) response.Value & 0xffff;\r\n\tcontext.Write(\"789\");\r\n\r\n\treturn RV;\r\n} \r\n \r\n \r\n \r\n}","Name":"Program.csx","IsEntryPoint":true},{"$id":"4","Code":"using System;\r\nusing System.Collections.Generic;\r\nusing System.Collections.ObjectModel;\r\nusing System.ComponentModel;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Threading;\r\nusing System.Threading.Tasks;\r\nusing System.Drawing;\r\nusing Google.Protobuf;\r\nusing Tango.BL.Entities;\r\nusing Tango.BL.Enumerations;\r\nusing Tango.PMR.Stubs;\r\nusing Tango.PMR.Diagnostics;\r\nusing Tango.FSE.Common.Connection;\r\nusing Tango.FSE.Common.Diagnostics;\r\nusing Tango.FSE.Procedures;\r\n\r\npublic class Service\r\n{\r\n public double Calc(double a, double b)\r\n {\r\n return a + b;\r\n }\r\n}","Name":"Service.csx","IsEntryPoint":false}]},"Inputs":{"$id":"5","$values":[]},"Variables":{"$id":"6","$values":[]},"ReferenceAssemblies":{"$id":"7","$values":[{"$id":"8","File":"C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\mscorlib.dll","HintType":"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"},{"$id":"9","File":"C:\\WINDOWS\\Microsoft.Net\\assembly\\GAC_MSIL\\System.Core\\v4.0_4.0.0.0__b77a5c561934e089\\System.Core.dll","HintType":"System.Linq.Enumerable, System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"},{"$id":"10","File":"C:\\WINDOWS\\Microsoft.Net\\assembly\\GAC_MSIL\\System.Windows.Forms\\v4.0_4.0.0.0__b77a5c561934e089\\System.Windows.Forms.dll","HintType":"System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"},{"$id":"11","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Tango.FSE.Procedures.dll","HintType":"Tango.FSE.Procedures.ProcedureProject, Tango.FSE.Procedures, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"},{"$id":"12","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Tango.FSE.Common.dll","HintType":"Tango.FSE.Common.Diagnostics.IDiagnosticsProvider, Tango.FSE.Common, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"},{"$id":"13","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Tango.BL.dll","HintType":"Tango.BL.Enumerations.TechMonitors, Tango.BL, Version=2.0.36.1608, Culture=neutral, PublicKeyToken=null"},{"$id":"14","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Tango.PMR.dll","HintType":"Tango.PMR.Common.MessageType, Tango.PMR, Version=2.0.40.1608, Culture=neutral, PublicKeyToken=null"},{"$id":"15","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Tango.Transport.dll","HintType":"Tango.Transport.ITransporter, Tango.Transport, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"},{"$id":"16","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Tango.Integration.dll","HintType":"Tango.Integration.Operation.IMachineOperator, Tango.Integration, Version=2.0.31.1608, Culture=neutral, PublicKeyToken=null"},{"$id":"17","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Google.Protobuf.dll","HintType":"Google.Protobuf.IMessage, Google.Protobuf, Version=3.4.1.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604"},{"$id":"18","File":"C:\\WINDOWS\\Microsoft.Net\\assembly\\GAC_MSIL\\System.Drawing\\v4.0_4.0.0.0__b03f5f7f11d50a3a\\System.Drawing.dll","HintType":"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"}]},"Resources":{"$id":"19","$values":[]},"Dialogs":{"$id":"20","$values":[]},"ID":"e2c3c81d-1914-4d45-b031-d054af33a18e","ApartmentState":"STA"}
\ No newline at end of file diff --git a/Software/Stubs Collection/stubs/Scripts/Priming.pproj b/Software/Stubs Collection/stubs/Scripts/Priming.pproj new file mode 100644 index 000000000..309dae73e --- /dev/null +++ b/Software/Stubs Collection/stubs/Scripts/Priming.pproj @@ -0,0 +1 @@ +{"$id":"1","Name":"Priming","Description":null,"Scripts":{"$id":"2","$values":[{"$id":"3","Name":"Program.csx","Code":"using System;\r\nusing System.Collections.Generic;\r\nusing System.Collections.ObjectModel;\r\nusing System.ComponentModel;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Threading;\r\nusing System.Threading.Tasks;\r\nusing System.Drawing;\r\nusing Google.Protobuf;\r\nusing Tango.BL.Entities;\r\nusing Tango.BL.Enumerations;\r\nusing Tango.PMR.Stubs;\r\nusing Tango.PMR.Diagnostics;\r\nusing Tango.FSE.Common.Connection;\r\nusing Tango.FSE.Common.Diagnostics;\r\nusing Tango.FSE.Procedures;\r\nusing System.IO;\r\nusing System.Diagnostics;\r\nusing System.Windows.Forms;\r\n\r\n\r\npublic class Program\r\n{\r\n\r\n\r\nprivate IProcedureContext context;\r\n\r\n//---------------------Start Command ----------------\r\nconst Int32\tCMD_RUN\t=\t0;\t\t//Run on Pulse Per Secound .positive run Up and negative run Down b\r\nconst Int32\tCMD_STOP=\t1;\t\t//0;Hard stop(Defualt);1-Soft stop;2-Hard Hiz;3-Soft Hiz\r\nconst Int32\tCMD_VALVE=\t2;\t\t//0-to Midtank ,1-to head \r\nconst Int32\tCMD_DLY\t=\t3;\t\t//delay in Seconds .\r\nconst Int32\tCMD_TIME=\t4;\t\t//Print Time .\r\nconst Int32\tCMD_PRESS=\t5;\t\t//return from Delay loop when pressure is high (on mBAR) .\r\nconst Int32 CMD_LOOP_NM=6;\t\t//NUMBER OF counter\r\nconst Int32 CMD_LOOP=\t7;\t\t//jump up(+) or down(-) command u\r\nconst Int32 CMD_MTV_OPEN =\t8;\t\t//0 Air ; 1 Ink\r\nconst Int32 CMD_MTV_CLOSE=\t9;\t\t//0 Air ; 1 Ink\r\nconst Int32 CMD_LBL=\t10;\t//label for user \r\nconst Int32 CMD_SMP=\t11; //sample rate ,defualt 100msec (1); for 1 second is 10.\r\nconst Int32 CMD_PRESL=\t12; //return from Delay loop when pressure is low (on mBAR) .\r\n\r\nconst Int32\tCMD_END\t=\t13;\t//end loop .\r\n \r\n\r\nInt32[] BuildUp_Table = new int []\r\n{\r\n\tCMD_VALVE,1,\r\n\tCMD_PRESL,200,\r\n\tCMD_DLY,200, \r\n\r\n\tCMD_LOOP_NM,3,\r\n\r\n\tCMD_VALVE,0,\r\n\tCMD_DLY,1, \r\n\tCMD_VALVE,1,\r\n\tCMD_DLY,1, \r\n\tCMD_LOOP,-4,\r\n\r\n\tCMD_VALVE,0,\r\n\tCMD_RUN,1068,\r\n\tCMD_PRESS,1000,\t//mbar --> 1000 = 100% work, 4000 = 200% work, 350 = 20% work\r\n\tCMD_DLY,150, \t\t\r\n\tCMD_LBL,1,\r\n\tCMD_PRESS,2000,\t//mbar --> 2000 = 100% work, 4000 = 200% work, 350 = 20% work\r\n\tCMD_DLY,60, \t\t\r\n\tCMD_LBL,2,\r\n\tCMD_PRESS,3000,\r\n\tCMD_DLY,60, // to limit\r\n\tCMD_STOP,0,\r\n\tCMD_VALVE,1,\r\n\tCMD_END,3,\r\n};\r\n\t\r\n\r\nInt32[] Up_Table = new int []\r\n{\r\n\tCMD_VALVE,1,\r\n\tCMD_PRESL,200,\r\n\tCMD_DLY,200, \r\n\t\r\n\tCMD_PRESS,3000,\t//mbar --> 1000 = 100% work, 4000 = 200% work, 350 = 20% work\r\n\tCMD_RUN,534, // 100%\r\n\tCMD_DLY,120,\r\n\tCMD_STOP,0,\r\n\tCMD_END,3,\r\n};\r\nInt32 Dispenser_sample_rate= 1; \r\n\r\n\tstring path = @\"C:\\Dispenser_setup\\Log\\\"; \t\r\n//----------------------\r\nconst UInt32 I2C_ID \t\t\t= \t4;\t\t\t\t\t//MCU_I2C4 \r\nconst UInt32 TCA9548A_address \t=\t0xE2;\t \t\r\nconst UInt32 I2C_Slave_Low_Add \t= \t0xA0;\t\t\t\t//eeprom address - 64k low \r\nconst UInt32 I2C_Slave_High_Add = \t0xA2;\t\t\t\t//eeprom address - 64k High\r\n//----------------------\r\nbyte [] EEPROM_Data = new byte [128];\r\n\r\n\r\n//---------------------End Command ----------------\r\n\r\nconst Int32\tDispenser_Motor1\t=\t6;\t\t \r\nconst Int32\tDispenser_Motor2\t=\t7;\t\t \r\nconst Int32\tDispenser_Motor3\t=\t8;\t\t \r\nconst Int32\tDispenser_Motor4\t=\t9;\t\t \r\nconst Int32\tDispenser_Motor5\t=\t10;\t\t \r\nconst Int32\tDispenser_Motor6\t=\t11;\t\t \r\nconst Int32\tDispenser_Motor7\t=\t12;\t\t \r\nconst Int32\tDispenser_Motor8\t=\t13;\t\t \r\n\r\nconst Int32 AN_IDS_PRESSENS_1\t=\t2;\r\nconst Int32 AN_IDS_PRESSENS_2\t=\t3;\r\nconst Int32 AN_IDS_PRESSENS_3\t=\t4;\r\nconst Int32 AN_IDS_PRESSENS_4\t=\t5;\r\nconst Int32 AN_IDS_PRESSENS_5\t=\t6;\r\nconst Int32 AN_IDS_PRESSENS_6\t=\t7;\r\nconst Int32 AN_IDS_PRESSENS_7\t=\t8;\r\nconst Int32 AN_IDS_PRESSENS_8\t=\t9;\r\n\r\nconst Int32\tF2_LS_01_Direct\t=\t0x60000420\t;\t//\tReads the direct values that are currently being sent to the fpga.\trsv\t\trsv\t\trsv\t\t\t\t\t\trsv\t\t\t\t\t\tF2_LS_DISPENSER_UP_2\tF2_LS_DISPENSER_25_2\tF2_LS_DISPENSER_75_2\tF2_LS_DISPENSER_DOWN_2 \tF2_LS_DISPENSER_50_2\tF2_LS_DISPENSER_SPARE_2\tF2_LS_DISPENSER_UP_1\tF2_LS_DISPENSER_25_1 \tF2_LS_DISPENSER_75_1\tF2_LS_DISPENSER_DOWN_1\tF2_LS_DISPENSER_50_1\tF2_LS_DISPENSER_SPARE_1\t\t\t\r\nconst Int32\tF2_LS_02_Direct\t=\t0x60000430\t;\t//\tReads the direct values that are currently being sent to the fpga.\trsv\t\trsv\t\trsv\t\t\t\t\t\trsv\t\t\t\t\t\tF2_LS_DISPENSER_UP_4\tF2_LS_DISPENSER_25_4\tF2_LS_DISPENSER_75_4\tF2_LS_DISPENSER_DOWN_4\tF2_LS_DISPENSER_50_4\tF2_LS_DISPENSER_SPARE_4\tF2_LS_DISPENSER_UP_3\tF2_LS_DISPENSER_25_3 \tF2_LS_DISPENSER_75_3\tF2_LS_DISPENSER_DOWN_3\tF2_LS_DISPENSER_50_3\tF2_LS_DISPENSER_SPARE_3\t\t\t\r\nconst Int32\tF2_LS_03_Direct\t=\t0x60000440\t;\t//\tReads the direct values that are currently being sent to the fpga.\trsv\t\trsv\t\trsv\t\t\t\t\t\trsv\t\t\t\t\t\tF2_LS_DISPENSER_UP_6 \tF2_LS_DISPENSER_25_6 \tF2_LS_DISPENSER_75_6 \tF2_LS_DISPENSER_DOWN_6\tF2_LS_DISPENSER_50_6\tF2_LS_DISPENSER_SPARE_6\tF2_LS_DISPENSER_UP_5\tF2_LS_DISPENSER_25_5 \tF2_LS_DISPENSER_75_5\tF2_LS_DISPENSER_DOWN_5\tF2_LS_DISPENSER_50_5\tF2_LS_DISPENSER_SPARE_5\t\t\t\r\nconst Int32\tF2_LS_04_Direct =\t0x60000480\t;\t//\tReads the direct values that are currently being sent to the fpga.\trsv\t\trsv\t\trsv\t\t\t\t\t\trsv\t\t\t\t\t\tF2_LS_DISPENSER_UP_8\tF2_LS_DISPENSER_25_8\tF2_LS_DISPENSER_75_8\tF2_LS_DISPENSER_DOWN_8\tF2_LS_DISPENSER_50_8\tF2_LS_DISPENSER_SPARE_8\tF2_LS_DISPENSER_UP_7\tF2_LS_DISPENSER_25_7 \tF2_LS_DISPENSER_75_7\tF2_LS_DISPENSER_DOWN_7\tF2_LS_DISPENSER_50_7\tF2_LS_DISPENSER_SPARE_7\t\t\t\r\n\r\nconst Int32 Dispenser_Valve1\t=\t0;\r\nconst Int32 Dispenser_Valve2\t=\t1;\r\nconst Int32 Dispenser_Valve3\t=\t2;\r\nconst Int32 Dispenser_Valve4\t=\t3;\r\nconst Int32 Dispenser_Valve5\t=\t4;\r\nconst Int32 Dispenser_Valve6\t=\t5;\r\nconst Int32 Dispenser_Valve7\t=\t6;\r\nconst Int32 Dispenser_Valve8\t=\t7;\r\n\r\nconst ushort MinPress_Mbar_Add =0x5c ;\r\nconst ushort MaxPress_Mbar_Add =0x60 ;\r\n\r\nconst Int32 F3_VALVE_OUT\t= 0x600000e2;\t\t\r\n\r\n//string path = \"C:\\\\Dispenser_setup\\\\Log\\\\\"; \r\n\r\n\r\n//Int32[] Start_Table;\r\n\r\nInt32[] Start_Table = new Int32 [10000];\r\n\r\nUInt32 [] Motor_Dir=new UInt32 [8] {0,0,0,0,0,0,0,0};\r\n\r\nstring Dispenser_Fname ;\r\n\r\nInt32 Dispenser_ptr =-1;\r\n\r\nInt32 [] Dispenser_press= new Int32[8]{0,0,0,0,0,0,0,0};\r\nInt32 max_pressure_level = 20000;\r\nInt32 min_pressure_level = -20000;\r\n\t\r\nInt32 [] A2D_Dispenser= new Int32[8]{0,0,0,0,0,0,0,0};\r\nInt32 Loop_cnt= 1;\r\nInt32 Loop_length=1;\r\n\r\nInt32 PressureSensorType= 1;\t\t//1- new -1up +10 . 0-old 0 to +10\r\nInt32\tTemp_Delay=0;\r\n\r\n\r\nUInt32 RD_LS_01_Direct;\r\nUInt32 RD_LS_02_Direct;\r\nUInt32 RD_LS_03_Direct;\r\nUInt32 RD_LS_04_Direct;\r\n\r\nlong Lebel1_time;\r\nlong Lebel2_time;\r\n\r\nlong time_Table;\r\n\r\nInt32 msec_index=0;\r\n\r\nInt32 MaxPress_Mbar;\r\nInt32 MinPress_Mbar;\r\nstring state;\r\n\r\n\tpublic Int32 OnExecute(IProcedureContext context)\r\n {\r\n\t\tlong Max_PBU;\r\n\t\tInt32 Index=0;\r\n\t\tInt32 speed=0;\r\n\t\tInt32 Dispenser_Nm;\r\n\t\tthis.context = context;\r\n\t\r\n\t\tstring box_msg = \"Make sure Mixer Hot \";\r\n\t\tMessageBox.Show(box_msg);\r\n\t\t\r\n\t\tvar response1 = context.RequestUserInputFor<String>(\"Dispenser Number\", \"Enter Dispenser number to make priming (1-8):\");\r\n\t\tcontext.WriteLine(response1);\r\n\t\tDispenser_Nm = Int32.Parse(response1);\r\n\t\t\r\n\t\tcheck_Min_Max_Mbar(Dispenser_Nm);\r\n\t\r\n\t\tif (Dispenser_Nm==8)\r\n\t\t\tMax_PBU=6000;\r\n\t\telse\r\n\t\t\tMax_PBU=4000;\r\n\t\t\t\r\n\t\r\n\tif (!Directory.Exists(path))\r\n\t\t{\r\n\t\t\tDirectory.CreateDirectory(path);\r\n\t\t}\t\r\n\t\t\tcontext.WriteLine(path);\r\n\t\t\t\r\n\tcontext.Send<ProgressResponse>(\"ProgressRequest\" ,0xe0, 1);\r\n\r\n\tDispenser_Fname=path + \"Dispenser_Nm_\" + Dispenser_Nm+\"_\" + DateTime.Now.ToString(\"MM-dd-yy hh-mm\")+ \".csv\" ;\r\n\r\n\tcontext.WriteLine(Dispenser_Fname);\r\n\r\n\tcontext.WriteToFile(Dispenser_Fname,\"Dispenser Nm,\" + Dispenser_Nm + \"\\n\" );\r\n\tcontext.AppendToFile(Dispenser_Fname,\"Pressure,Command,Value,DateTime,Remark\\n\" ); \r\n\t\tfor(int j=0; j<2;j++)\r\n\t\t{\r\n\t\t\tfor(int i=0; i<4;i++)\r\n\t\t\t{\r\n\t\t\t\tstate=\"PBU No. \"+ (4*j+i+1 );\r\n\t\t\t\tStart_Table=BuildUp_Table;\r\n\t\t\t\tTable_Run(Dispenser_Nm );\r\n\t\t\t\tif (time_Table>300000)\r\n\t\t\t\t{\r\n\t\t\t\t\tcontext.AddResult(ResultType.Failed,\"PBU\", \"PBU No.\"+ (4*j+i+1 ) + \" Fail\");\r\n\t\t\t\t\treturn 0;\r\n\t\t\t\t}\r\n\t\t\t\t context.AddResult(ResultType.Passed,\"PBU\",\"PBU No.\"+ (4*j+i+1 ) + \" Pass\");\r\n\t\t\t\t\t\r\n\t\t\t}\r\n\t\t\tstate=\"Flow No.\"+ (j+1 ) ;\r\n\t\t\tStart_Table=Up_Table;\r\n\t\t\tTable_Run(Dispenser_Nm );\r\n\t\t\tif (time_Table<115000)\r\n\t\t\t\t{\r\n\t\t\t\t\tcontext.WriteLine(\"time_Table= \" +time_Table);\r\n\t\t\t\t\tcontext.AddResult(ResultType.Failed,\"Flow\", \"Flow No.\"+ (j+1) + \" Fail\");\r\n\t\t\t\t\treturn 0;\r\n\t\t\t\t}\r\n\t\t\t\t context.AddResult(ResultType.Passed,\"Flow\",\"Flow No.\"+ (j+1 ) + \" Pass\");\r\n\t\t\t\t\t\t\r\n\t\t}\r\n\t\t\t\t state=\"Last PBU \" ;\r\n\t\t\t\tStart_Table=BuildUp_Table; \r\n\t\t\t\tTable_Run(Dispenser_Nm );\r\n\t\t\t\tlong Time=Lebel2_time-Lebel1_time;\r\n\t\t\t\tif (Time>Max_PBU)\r\n\t\t\t\t { \r\n\t\t\t\t context.AddResult(ResultType.Failed,\"PBU\", \"PBU = \" +Time + \"msec \");\r\n\t\t\t\t state=\"PBU = \" +Time + \"msec \\tFail\";\r\n\t\t\t\t }\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t context.AddResult(ResultType.Passed,\"PBU\", \"PBU = \" +Time + \"msec \");\r\n\t\t\t\t state=\"PBU = \" +Time + \"msec \\tPass\";\r\n\t\t\t\t}\t\r\n\t\treturn 0;\r\n\t\t\r\n }\r\n\r\n/////////////////////////////////////////////\r\nvoid \t\tcheck_Min_Max_Mbar(Int32 i )\r\n{\r\n\tint k;\r\n\tstring s ;\r\n\ti--;\r\n\r\n\t\t\t\t\tcontext.WriteLine(\"-------------- write Enable Channel ------------\");\t//debug\r\n\t\tenable_channel(i); // Chanel 0-7 => Disp0enser 0-7 \r\n\t\t\t\t\tcontext.WriteLine(\"-------------- Read_header ------------\");\t//debug\r\n\r\n\t\t\t\t\tcontext.WriteLine(\"-------------- write_address_eeprom ------------\");\t//debug\r\n\t\twrite_address_eeprom (I2C_Slave_Low_Add,MinPress_Mbar_Add);\r\n\t\t\t\t\tcontext.WriteLine(\"-------------- read_data_from_eeprom ------------\");\t//debug\r\n\t\tread_data_from_eeprom (I2C_Slave_Low_Add,1);\r\n\t\tif \t(EEPROM_Data[0]==0\t)\r\n\t\t{\tPressureSensorType=0;\r\n\t\t\tcontext.WriteLine(\"PressureSensorType=0\" );\t//debug\r\n\t\t}\r\n\t\telse\t\r\n\t\t{\t\r\n\t\t\tPressureSensorType=1;\t\t\t\t\t\r\n\t\t\tcontext.WriteLine(\"PressureSensorType=1\" );\t//debug\r\n\t\t}\r\n\t\r\n}\t\r\n//----------------write address eeprom -------------------------\r\npublic void write_address_eeprom (UInt32 I2C_Add, UInt32 Eeprom_Add)\r\n{\t\r\n\tStubI2CWriteBytesRequest stubI2CWriteBytesRequest = new StubI2CWriteBytesRequest();\r\n\tstubI2CWriteBytesRequest.I2CId = I2C_ID;\r\n\tstubI2CWriteBytesRequest.SlaveAddress = I2C_Add;\r\n\t\r\n\tUInt32 uInt32 = new UInt32();\r\n\tstubI2CWriteBytesRequest.BytesTWrite.Add(Convert.ToByte( (Eeprom_Add & 0xff00) >>8));\t//Byte High add to write\r\n\tstubI2CWriteBytesRequest.BytesTWrite.Add(Convert.ToByte(Eeprom_Add & 0xff));\t\t\t//Byte Low add to write\r\n\t\t\t\t\tcontext.WriteLine( (Eeprom_Add & 0xff00) >>8) ;\t//debug\r\n\t\t\t\t\tcontext.WriteLine( Eeprom_Add & 0xff);\t//debug\r\n\r\n\tcontext.Send<StubI2CWriteBytesResponse>(stubI2CWriteBytesRequest);\t\r\n}\r\n//------------------- read Data from EEprom--------------------------\r\n\r\npublic void read_data_from_eeprom ( UInt32 I2C_Add, UInt32 cnt )\r\n{\r\n\tStubI2CReadBytesRequest stubI2CReadBytesRequest = new StubI2CReadBytesRequest();\r\n\tstubI2CReadBytesRequest.I2CId = I2C_ID;\r\n\tstubI2CReadBytesRequest.SlaveAddress = (I2C_Add + 1);\r\n\tstubI2CReadBytesRequest.NumberOfBytesToRead = cnt; // Number of bytes to read\r\n\r\n\tvar response1 = context.Send<StubI2CReadBytesResponse>(stubI2CReadBytesRequest);\r\n\r\n\tfor(int i=0; i<cnt;i++)\r\n\t\t{\r\n\t\t\tEEPROM_Data[i]=Convert.ToByte(response1.ReadBytes[i]);\r\n\t\t\tcontext.WriteLine(EEPROM_Data[i] );\t//debug\r\n\r\n\t\t}\t\t\r\n}\t\r\n\r\n\r\n///////////////////////////////////////////////\r\n//----------- enable I2c channel --------------\r\npublic int enable_channel(Int32 Channel_ID) \r\n{\r\n\tuint Const_temp = 0x01;\t\r\n\t\r\n\tStubI2CWriteBytesRequest stubI2CWriteBytesRequest = new StubI2CWriteBytesRequest();\r\n\tstubI2CWriteBytesRequest.I2CId = I2C_ID;\r\n\tstubI2CWriteBytesRequest.SlaveAddress = TCA9548A_address;\r\n\t\r\n\tConst_temp = Const_temp << Channel_ID;\r\n\tstubI2CWriteBytesRequest.BytesTWrite.Add(Const_temp);//enable i2c channel 0 Dispenser 1\r\n\r\n\tvar response = context.Send<StubI2CWriteBytesResponse>(stubI2CWriteBytesRequest);\r\n\t\r\n\treturn 1;\r\n}\r\n\r\n\r\n////////////////////////////////////////////////////////////// \r\nInt32 Table_Run(Int32 Dispenser )\r\n\r\n{\r\n\tInt32 COMMAND=0;\r\n\tInt32 Data=0;\r\n\tInt32 count=0;\r\n\t\r\n\tDispenser--;\t\t//check from 0-7\r\n\t\r\n\tint j=0;\r\n\tvar stopwatch = new Stopwatch();\r\n\t\tstopwatch.Start();\r\n\t\r\n\t\tlong elapsed_time = stopwatch.ElapsedMilliseconds;\r\n\t\tcontext.WriteLine(elapsed_time);\r\n\t\t\r\n\twhile (count!=-1) \r\n\t{\r\n\tmsec_index=msec_index+1;\r\n\t\t\r\n\t\tif (Dispenser<2) \r\n\t\t\t{\r\n\t\t\t\tvar response1 = context.Send<StubFpgaReadRegResponse>(\"StubFpgaReadRegRequest\" ,F2_LS_01_Direct);\r\n\t\t\t\tRD_LS_01_Direct=response1.Value\t ;\r\n\t\t\t}\r\n\t\telse if ( (Dispenser<4) )\r\n\t\t\t{\r\n\t\t\t\tvar response1 = context.Send<StubFpgaReadRegResponse>(\"StubFpgaReadRegRequest\" ,F2_LS_02_Direct);\r\n\t\t\t\tRD_LS_02_Direct=response1.Value\t ;\r\n\t\t\t}\r\n\t\telse if ( (Dispenser<6) )\r\n\t\t\t{\r\n\t\t\t\tvar response1 = context.Send<StubFpgaReadRegResponse>(\"StubFpgaReadRegRequest\" ,F2_LS_03_Direct);\r\n\t\t\t\tRD_LS_03_Direct=response1.Value\t ;\r\n\t\t\t}\r\n\t\telse\r\n\t\t\t{\r\n\t\t\t\tvar response1 = context.Send<StubFpgaReadRegResponse>(\"StubFpgaReadRegRequest\" ,F2_LS_04_Direct);\r\n\t\t\t\tRD_LS_04_Direct=response1.Value\t ;\r\n\t\t\t}\r\n\t\tif (Dispenser<4) \r\n\t\t\t{\r\n\t\t\tvar response2 = context.Send<StubIntADCReadResponse>(\"StubIntADCReadRequest\" ,0x8000 + AN_IDS_PRESSENS_1);\r\n\t\t\t\tA2D_Dispenser[0]=(response2.SamplingInBits)>>16;\r\n\t\t\t\tA2D_Dispenser[1] =(response2.SamplingInBits) & 0x0000ffff;\r\n\t\t\t\tA2D_Dispenser[2] =(response2.VoltageSamplingMv)>>16;\r\n\t\t\t\tA2D_Dispenser[3] =(response2.VoltageSamplingMv) & 0x0000ffff;\r\n\t\t\t}\r\n\t\telse\r\n\t\t\t{\r\n\t\t\tvar\tresponse3 = context.Send<StubIntADCReadResponse>(\"StubIntADCReadRequest\" ,0x8000 + AN_IDS_PRESSENS_5);\r\n\t\t\t\tA2D_Dispenser[4] =(response3.SamplingInBits)>>16;\r\n\t\t\t\tA2D_Dispenser[5] =(response3.SamplingInBits)& 0x0000ffff;\r\n\t\t\t\tA2D_Dispenser[6] =(response3.VoltageSamplingMv)>>16;\r\n\t\t\t\tA2D_Dispenser[7] =(response3.VoltageSamplingMv)& 0x0000ffff;\r\n\t\t\t}\r\n\t\t\t\t\r\n\t\t\tCOMMAND=Start_Table[count];\r\n\t\t\tData=Start_Table[(count+1)];\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t//Index=Index+2;\r\n\t\t\tswitch (COMMAND)\r\n\t\t\t\t{\r\n\t\t\t\tcase CMD_RUN:\r\n\t\t\t\t\tMotor_Run(Data,Dispenser);\r\n\t\t\t\t\tcount = count+2;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t\t\r\n\t\t\t\tcase CMD_VALVE:\r\n\t\t\t\t\tValve_3W(Data,Dispenser);\r\n\t\t\t\t\tcount = count+2;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t\t\r\n\t\t\t\tcase CMD_STOP:\r\n\t\t\t\t\tMotor_Stop(Data,Dispenser);\r\n\t\t\t\t\tcount = count+2;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t\t\r\n\t\t\t\tcase CMD_DLY:\r\n\t\t\t\t\tDelay_on_second(Data,Dispenser);\r\n\t\t\t\t\tif (Temp_Delay ==0)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tmax_pressure_level=20000;\t\r\n\t\t\t\t\t\tmin_pressure_level=-20000;\t\r\n\t\t\t\t\t\tcount = count+2;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t\t\r\n\t\t\t\tcase CMD_TIME:\r\n\t\t\t\t\tPrint_Time();\r\n\t\t\t\t\tcount = count+2;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t\t\r\n\t\t\t\tcase CMD_PRESS:\r\n\t\t\t\t\tmax_pressure_level=Data;\r\n\t\t\t\t\tcontext.AppendToFile(Dispenser_Fname,\",Max_pressure_level is, \" + Data +\",\"+DateTime.Now+\"\\n\");\r\n\t\t\t\t\tcount = count+2;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t\t\r\n\t\t\t\tcase CMD_PRESL:\r\n\t\t\t\t\tmin_pressure_level=Data;\r\n\t\t\t\t\tcontext.AppendToFile(Dispenser_Fname,\",Min_pressure_level is, \" + Data +\",\"+DateTime.Now+\"\\n\");\r\n\t\t\t\t\tcount = count+2;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t\t\r\n\t\t\t\tcase CMD_LBL:\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\tcontext.AppendToFile(Dispenser_Fname,\",Label,\" + Data+\",\"+DateTime.Now+\"\\n\");\r\n\t\t\t\t\tif(Data==1)\r\n\t\t\t\t\t\tLebel1_time=stopwatch.ElapsedMilliseconds;\r\n\t\t\t\t\tif(Data==2)\r\n\t\t\t\t\t\tLebel2_time=stopwatch.ElapsedMilliseconds;\r\n\t\t\t\t\tcount = count+2;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\tcase CMD_SMP:\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\tcontext.AppendToFile(Dispenser_Fname,\",SampleRate,\" + Data+\",\"+DateTime.Now+\"\\n\");\r\n\t\t\t\t\tDispenser_sample_rate =Data;\r\n\t\t\t\t\tcount = count+2;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t\t\r\n\t\t\t\tcase CMD_END:\r\n\t\t\t\t\tcount=-1;\r\n\t\t\t\t\tcontext.AppendToFile(Dispenser_Fname,\",End testing,,\"+DateTime.Now+\"\\n\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t\r\n\t\t\t\tcase CMD_MTV_OPEN:\r\n\t\t\t\t\topen_midtank_valve(Data,Dispenser);\r\n\t\t\t\t\tcontext.AppendToFile(Dispenser_Fname,\",OPEN MIDTANK, \" + Dispenser+\",\"+DateTime.Now+\"\\n\");\r\n\t\t\t\t\tcount = count+2;\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase CMD_MTV_CLOSE:\r\n\t\t\t\t\tclose_midtank_valve(Data,Dispenser);\r\n\t\t\t\t\tcontext.AppendToFile(Dispenser_Fname,\",CLOSE MIDTANK, \" + Dispenser+\",\"+DateTime.Now+\"\\n\");\r\n\t\t\t\t\tcount = count+2;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t\r\n\t\t\t\tcase CMD_LOOP_NM:\r\n\t\t\t\t\r\n\t\t\t\t\tLoop_cnt=Data-1;\r\n\t\t\t\t\tcontext.AppendToFile(Dispenser_Fname,\",Counter Loop,\"+ Data+\",\"+DateTime.Now +\"\\n\");\r\n\t\t\t\t\tcount = count+2;\t\t\t\t\t\t\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase CMD_LOOP:\r\n\t\t\t\t\r\n\t\t\t\t\tif (Loop_cnt!=0)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\tcontext.AppendToFile(Dispenser_Fname,\"Counter Loop,\"+ Loop_cnt+\",\"+DateTime.Now+\"\\n\" );\r\n\t\t\t\t\t\tcount = count+2*Data;\r\n\t\t\t\t\t\tLoop_cnt--;\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\telse\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\tcontext.AppendToFile(Dispenser_Fname,\",End loop,,\"+DateTime.Now +\"\\n\");\r\n\t\t\t\t\t\tcount = count+2;\t\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t}\t\r\n\t\t\t\r\n\t\t\tlong elapsed_time1 = stopwatch.ElapsedMilliseconds;\r\n\t\t\tlong elapsed_time2= elapsed_time1-elapsed_time;\r\n\t\t\tif (elapsed_time2>95)\r\n\t\t\telapsed_time2=95;\t\t//minimum time\r\n\t\t\t\tThread.Sleep(100-(int )(elapsed_time2));\r\n\r\n\t\t\telapsed_time = stopwatch.ElapsedMilliseconds;\t\t\r\n\r\n\r\n\t\t\tj++;\r\n\t\t\t\tif (j==10)\r\n\t\t\t\t{\r\n\t\t\t\t\tj=0;\r\n\t\t\t\t\tcontext.WriteLine(Dispenser_press[Dispenser]+ \" mBar\\t\"+state + \"\\tTime-\" + (elapsed_time/1000));\r\n\t\t\t\t}\r\n\t}\r\n\ttime_Table=elapsed_time;\r\n\treturn 0;\r\n}\r\n\r\n///////////////////////////////////////////////////////////////////\t\r\nInt32 Motor_Run(Int32 speed,Int32 Dispenser)\r\n\r\n{\r\n\r\n\tswitch (Dispenser)\r\n\t\t{\r\n\t\tcase 0:\r\n\t\t\t\tif ( speed<0)\r\n\t\t\t\t{\r\n\t\t\t\t\tMotor_Dir[0]=2;\r\n\t\t\t\t\tif ((RD_LS_01_Direct & 0x04)!=0x04)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tcontext.AppendToFile(Dispenser_Fname,\",,,\"+DateTime.Now +\",Warning Motor on Limit\\n\");\r\n\t\t\t\t\t\treturn 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tcontext.Send<StubMotorRunResponse>(\"StubMotorRunRequest\" ,Dispenser_Motor1, false, (-speed));\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\t\r\n\t\t\t\t\tMotor_Dir[0]=1;\r\n\t\t\t\t\tif ((RD_LS_01_Direct & 0x20)!=0x20)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tcontext.AppendToFile(Dispenser_Fname,\",,,\"+DateTime.Now +\",Warning Motor on Limit\\n\");\r\n\t\t\t\t\t\treturn 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcontext.Send<StubMotorRunResponse>(\"StubMotorRunRequest\" ,Dispenser_Motor1, true, (speed));\r\n\t\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\tcase 1:\r\n\t\t\t\tif ( speed<0)\r\n\t\t\t\t{\r\n\t\t\t\t\tMotor_Dir[1]=2;\r\n\t\t\t\t\tif ((RD_LS_01_Direct & 0x100)!=0x100)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tcontext.AppendToFile(Dispenser_Fname,\",,,\"+DateTime.Now +\",Warning Motor on Limit\\n\");\r\n\t\t\t\t\t\treturn 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcontext.Send<StubMotorRunResponse>(\"StubMotorRunRequest\" ,Dispenser_Motor2, false, (-speed));\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\t\r\n\t\t\t\t\tMotor_Dir[1]=1;\r\n\t\t\t\t\tif ((RD_LS_01_Direct & 0x800)!=0x800)\r\n\t\t\t\t\t{\t\t\t\t\t\t\r\n\t\t\t\t\t\tcontext.AppendToFile(Dispenser_Fname,\",,,\"+DateTime.Now +\",Warning Motor on Limit\\n\");\r\n\t\t\t\t\t\treturn 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcontext.Send<StubMotorRunResponse>(\"StubMotorRunRequest\" ,Dispenser_Motor2, true, (speed));\r\n\t\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\tcase 2:\r\n\t\t\t\tif ( speed<0)\r\n\t\t\t\t{\r\n\t\t\t\t\tMotor_Dir[2]=2;\r\n\t\t\t\t\tif ((RD_LS_02_Direct & 0x04)!=0x04)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tcontext.AppendToFile(Dispenser_Fname,\",,,\"+DateTime.Now +\",Warning Motor on Limit\\n\");\r\n\t\t\t\t\t\treturn 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcontext.Send<StubMotorRunResponse>(\"StubMotorRunRequest\" ,Dispenser_Motor3, false, (-speed));\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\t\r\n\t\t\t\t\tMotor_Dir[2]=1;\r\n\t\t\t\t\tif ((RD_LS_02_Direct & 0x20)!=0x20)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tcontext.AppendToFile(Dispenser_Fname,\",,,\"+DateTime.Now+ \",Warning Motor on Limit\\n\");\r\n\t\t\t\t\t\treturn 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcontext.Send<StubMotorRunResponse>(\"StubMotorRunRequest\" ,Dispenser_Motor3, true, (speed));\r\n\t\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\tcase 3:\r\n\t\t\t\tif ( speed<0)\r\n\t\t\t\t{\r\n\t\t\t\t\tMotor_Dir[3]=2;\r\n\r\n\t\t\t\t\tif ((RD_LS_02_Direct & 0x100)!=0x100)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tcontext.AppendToFile(Dispenser_Fname,\",,,\"+DateTime.Now+ \",Warning Motor on Limit\\n\");\r\n\t\t\t\t\t\treturn 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcontext.Send<StubMotorRunResponse>(\"StubMotorRunRequest\" ,Dispenser_Motor4, false, (-speed));\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\t\r\n\t\t\t\t\tMotor_Dir[3]=1;\r\n\r\n\t\t\t\t\tif ((RD_LS_02_Direct & 0x800)!=0x800)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tcontext.AppendToFile(Dispenser_Fname,\",,,\"+DateTime.Now +\",Warning Motor on Limit\\n\");\r\n\t\t\t\t\t\treturn 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcontext.Send<StubMotorRunResponse>(\"StubMotorRunRequest\" ,Dispenser_Motor4, true, (speed));\r\n\t\t\t\t}\r\n\t\t\tbreak;\r\n\t\t\r\n\t\tcase 4:\r\n\t\t\t\tif ( speed<0)\r\n\t\t\t\t{\r\n\t\t\t\t\tMotor_Dir[4]=2;\r\n\t\t\t\t\tif ((RD_LS_03_Direct & 0x04)!=0x04)\r\n\t\t\t\t\t{ \r\n\t\t\t\t\t\tcontext.AppendToFile(Dispenser_Fname,\",,,\"+DateTime.Now+ \",Warning Motor on Limit\\n\");\r\n\t\t\t\t\t\treturn 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tcontext.Send<StubMotorRunResponse>(\"StubMotorRunRequest\" ,Dispenser_Motor5, false, (-speed));\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\t\r\n\t\t\t\t\tMotor_Dir[4]=1;\r\n\t\t\t\t\tif ((RD_LS_03_Direct & 0x20)!=0x20)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tcontext.AppendToFile(Dispenser_Fname,\",,,\"+DateTime.Now+ \",Warning Motor on Limit\\n\");\r\n\t\t\t\t\t\treturn 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcontext.Send<StubMotorRunResponse>(\"StubMotorRunRequest\" ,Dispenser_Motor5, true, (speed));\r\n\t\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\tcase 5:\r\n\t\t\t\tif ( speed<0)\r\n\t\t\t\t{\r\n\t\t\t\t\tMotor_Dir[5]=2;\r\n\t\t\t\t\tif ((RD_LS_03_Direct & 0x100)!=0x100)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tcontext.AppendToFile(Dispenser_Fname,\",,,\"+DateTime.Now +\",Warning Motor on Limit\\n\");\r\n\t\t\t\t\t\treturn 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcontext.Send<StubMotorRunResponse>(\"StubMotorRunRequest\" ,Dispenser_Motor6, false, (-speed));\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\t\r\n\t\t\t\t\tMotor_Dir[5]=1;\r\n\t\t\t\t\tif ((RD_LS_03_Direct & 0x800)!=0x800)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tcontext.AppendToFile(Dispenser_Fname,\",,,\"+DateTime.Now+ \",Warning Motor on Limit\\n\");\r\n\t\t\t\t\t\treturn 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcontext.Send<StubMotorRunResponse>(\"StubMotorRunRequest\" ,Dispenser_Motor6, true, (speed));\r\n\t\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\tcase 6:\r\n\t\t\t\tif ( speed<0)\r\n\t\t\t\t{\r\n\t\t\t\t\tMotor_Dir[6]=2;\r\n\t\t\t\t\tif ((RD_LS_04_Direct & 0x04)!=0x04)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tcontext.AppendToFile(Dispenser_Fname,\",,,\"+DateTime.Now +\",Warning Motor on Limit\\n\");\r\n\t\t\t\t\t\treturn 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcontext.Send<StubMotorRunResponse>(\"StubMotorRunRequest\" ,Dispenser_Motor7, false, (-speed));\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\t\r\n\t\t\t\t\tMotor_Dir[6]=1;\r\n\t\t\t\t\tif ((RD_LS_04_Direct & 0x20)!=0x20)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tcontext.AppendToFile(Dispenser_Fname,\",,,\"+DateTime.Now +\",Warning Motor on Limit\\n\");\r\n\t\t\t\t\t\treturn 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcontext.Send<StubMotorRunResponse>(\"StubMotorRunRequest\" ,Dispenser_Motor7, true, (speed));\r\n\t\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\tcase 7:\r\n\t\t\t\tif ( speed<0)\r\n\t\t\t\t{\r\n\t\t\t\t\tMotor_Dir[7]=2;\r\n\r\n\t\t\t\t\tif ((RD_LS_04_Direct & 0x100)!=0x100)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tcontext.AppendToFile(Dispenser_Fname,\",,,\"+DateTime.Now +\",Warning Motor on Limit\\n\");\r\n\t\t\t\t\t\treturn 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcontext.Send<StubMotorRunResponse>(\"StubMotorRunRequest\" ,Dispenser_Motor8, false, (-speed));\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\t\r\n\t\t\t\t\tMotor_Dir[7]=1;\r\n\r\n\t\t\t\t\tif ((RD_LS_04_Direct & 0x800)!=0x800)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tcontext.AppendToFile(Dispenser_Fname,\",,,\"+DateTime.Now +\",Warning Motor on Limit\\n\");\r\n\t\t\t\t\t\treturn 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcontext.Send<StubMotorRunResponse>(\"StubMotorRunRequest\" ,Dispenser_Motor8, true, (speed));\r\n\t\t\t\t}\r\n\t\t\tbreak;\r\n\t\t\t\r\n\t\tdefault:\r\n\t\t\tbreak;\r\n\r\n\t\t}\r\n \tcontext.AppendToFile(Dispenser_Fname,\",Run,\" +speed+\",\"+DateTime.Now +\"\\n\" ); \r\n\r\n\treturn 1;\r\n} \r\n \r\n \t\r\n Int32 Valve_3W(Int32 Valve_Value,Int32 Dispenser)\r\n{\r\n\tif ( Valve_Value==1)\r\n\t\tcontext.Send<StubValveResponse>(\"StubValveRequest\" ,Dispenser_Valve1+Dispenser, 3, true);\t//3 3Way\r\n\telse\t\r\n\t\tcontext.Send<StubValveResponse>(\"StubValveRequest\" ,Dispenser_Valve1+Dispenser, 3, false); //3 3Way\r\n \r\n\tcontext.AppendToFile(Dispenser_Fname,\",Dispenser Valve position is, \" + Valve_Value+\",\"+DateTime.Now +\"\\n\" );\r\n\r\n\treturn 1;\t\r\n}\t\r\n//--------------------------------------- \r\n\r\n Int32 Motor_Stop(Int32 Stop_Value,Int32 Dispenser )\r\n{\r\n\tcontext.Send<StubMotorStopResponse>(\"StubMotorStopRequest\" ,Dispenser_Motor1+Dispenser, Stop_Value);\r\n\t\r\n\tcontext.AppendToFile(Dispenser_Fname,\",Motor Stop,\" + Stop_Value+\",\"+DateTime.Now +\"\\n\");\r\n\tMotor_Dir[Dispenser]=0;\r\n\treturn 1;\t\r\n}\r\n\r\n//--------------------------------------- \r\n\r\n Int32 Delay_on_second(Int32 Delay,Int32 Dispenser )\r\n{\r\n//Int32 temp1;\r\nInt32 pressure_om_mBAR=0;\r\n\tif \t(Temp_Delay ==0)\r\n\t{\r\n\t\tcontext.AppendToFile(Dispenser_Fname,\",DLY, \" + Delay +\",\"+DateTime.Now+\"\\n\");\r\n\t\tTemp_Delay = Delay *10 -1;\r\n//\t\t\t\t\t\t\t\t\t\t\t\t\t\tcontext.Write(\"A\");\t\t//debug\r\n\t}\r\n\telse\t\r\n\t\t\tTemp_Delay--;\r\n\t\t\t\r\n\tif ( LimitSW_Dispenser(Dispenser)==0)\r\n \t {\t\r\n \t \tcontext.AppendToFile(Dispenser_Fname,\",,,\"+DateTime.Now+\",Warning Motor on Limit\\n\");\r\n\t\t\tMotorStop(Dispenser);\r\n\t\t\tTemp_Delay =0;\t//end delay\r\n//\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcontext.Write(\"C\");\t\t//debug\r\n\r\n\t\t\treturn 0 ;\r\n \t }\r\n\t\t\t\t\t\r\n\tpressure_om_mBAR=Calc_mBAR(Dispenser,true);\r\n \tif (pressure_om_mBAR > max_pressure_level)\r\n \t \t{\r\n\t\t//\tMotorStop(Dispenser);\r\n\t\t\tcontext.AppendToFile(Dispenser_Fname,\",,,\"+DateTime.Now +\",Warning Pressure too high\\n\");\r\n\t\t\tTemp_Delay =0;\t//end delay\r\n//\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcontext.Write(\"D\");\t\t//debug\r\n\t\t\t\r\n\t\t\treturn 0;\r\n\t\t}\r\n \tif (pressure_om_mBAR < min_pressure_level)\r\n \t \t{\r\n\t\t//\tMotorStop(Dispenser);\r\n\t\t\tcontext.AppendToFile(Dispenser_Fname,\",,,\"+DateTime.Now +\",Warning Pressure too low\\n\");\r\n\t\t\tTemp_Delay =0;\t//end delay\r\n//\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcontext.Write(\"D\");\t\t//debug\r\n\t\t\t\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\t\r\n\t\t\r\n \treturn 1;\r\n}\t\r\n \t \t\r\nInt32 LimitSW_Dispenser(Int32 Dispenser) \r\n{\r\n\r\n\tif (Dispenser==0)\r\n\t\t\r\n\t\t{\r\n\t\t\t\r\n//\t\tvar response1 = context.Send<StubFpgaReadRegResponse>(\"StubFpgaReadRegRequest\" ,F2_LS_01_Direct);\r\n\r\n\t\t\t\tif (((RD_LS_01_Direct & 0x04)!=0x04) && (Motor_Dir[0]==2))\r\n\t\t\t\t\t\treturn 0;\r\n\t\t\t\t\telse\r\n\t\t\t\tif (((RD_LS_01_Direct & 0x20)!=0x20) && (Motor_Dir[0]==1))\r\n\t\t\t\t\t\treturn 0;\r\n\t\t\t\t\telse\r\n\t\t\t\treturn 1;\t\t\r\n\t\t}\r\n\t\t\r\n\tif (Dispenser==1)\r\n\t\t\r\n\t\t{\r\n//\t\tvar response2 = context.Send<StubFpgaReadRegResponse>(\"StubFpgaReadRegRequest\" ,F2_LS_01_Direct);\r\n\t\t\t\tif (((RD_LS_01_Direct & 0x100)!=0x100) && (Motor_Dir[1]==2))\r\n\t\t\t\t\t\treturn 0;\r\n\t\t\t\t\telse\r\n\t\t\t\tif (((RD_LS_01_Direct & 0x800)!=0x800) && (Motor_Dir[1]==1))\r\n\t\t\t\t\t\treturn 0;\r\n\t\t\t\t\telse\r\n\t\t\t\treturn 1;\t\t\r\n\t\t}\r\n\t\t\r\n\r\n\tif (Dispenser==2)\r\n\t\t\r\n\t\t{\r\n\t\t\t\t\r\n\t\t//var response3 = context.Send<StubFpgaReadRegResponse>(\"StubFpgaReadRegRequest\" ,F2_LS_02_Direct);\r\n\t\t\t\tif (((RD_LS_02_Direct & 0x04)!=0x04) && (Motor_Dir[2]==2))\r\n\t\t\t\t\t\treturn 0;\r\n\t\t\t\t\telse\r\n\t\t\t\tif (((RD_LS_02_Direct & 0x20)!=0x20) && (Motor_Dir[2]==1))\r\n\t\t\t\t\t\treturn 0;\r\n\t\t\t\t\telse\r\n\t\t\t\treturn 1;\t\t\r\n\t\t\t\r\n\t\t}\r\n\t\t\r\n\tif (Dispenser==3)\r\n\t\t\r\n\t\t{\r\n\t\t\t\tvar response4 = context.Send<StubFpgaReadRegResponse>(\"StubFpgaReadRegRequest\" ,F2_LS_02_Direct);\r\n\t\t\t\tif (((RD_LS_02_Direct & 0x100)!=0x100) && (Motor_Dir[3]==2))\r\n\t\t\t\t\t\treturn 0;\r\n\t\t\t\t\telse\r\n\t\t\t\tif (((RD_LS_02_Direct & 0x800)!=0x800) && (Motor_Dir[3]==1))\r\n\t\t\t\t\t\treturn 0;\r\n\t\t\t\t\telse\r\n\t\t\t\treturn 1;\t\t\r\n\t\t}\r\n\t\t\r\n\t\t\r\n\t\t\r\n\r\n\tif (Dispenser==4)\r\n\t\t\r\n\t\t{\r\n\t\t\t\r\n//\t\tvar response1 = context.Send<StubFpgaReadRegResponse>(\"StubFpgaReadRegRequest\" ,F2_LS_01_Direct);\r\n\t\t\t\tif (((RD_LS_03_Direct & 0x04)!=0x04) && (Motor_Dir[4]==2))\r\n\t\t\t\t\t\treturn 0;\r\n\t\t\t\t\telse\r\n\t\t\t\tif (((RD_LS_03_Direct & 0x20)!=0x20) && (Motor_Dir[4]==1))\r\n\t\t\t\t\t\treturn 0;\r\n\t\t\t\t\telse\r\n\t\t\t\treturn 1;\t\t\r\n\t\t}\r\n\t\t\r\n\tif (Dispenser==5)\r\n\t\t\r\n\t\t{\r\n//\t\tvar response2 = context.Send<StubFpgaReadRegResponse>(\"StubFpgaReadRegRequest\" ,F2_LS_01_Direct);\r\n\t\t\t\tif (((RD_LS_03_Direct & 0x100)!=0x100) && (Motor_Dir[5]==2))\r\n\t\t\t\t\t\treturn 0;\r\n\t\t\t\t\telse\r\n\t\t\t\tif (((RD_LS_03_Direct & 0x800)!=0x800) && (Motor_Dir[5]==1))\r\n\t\t\t\t\t\treturn 0;\r\n\t\t\t\t\telse\r\n\t\t\t\treturn 1;\t\t\r\n\t\t}\r\n\t\t\r\n\r\n\tif (Dispenser==6)\r\n\t\t\r\n\t\t{\r\n\t\t\t\t\r\n\t\t//var response3 = context.Send<StubFpgaReadRegResponse>(\"StubFpgaReadRegRequest\" ,F2_LS_02_Direct);\r\n\t\t\t\tif (((RD_LS_04_Direct & 0x04)!=0x04) && (Motor_Dir[6]==2))\r\n\t\t\t\t\t\treturn 0;\r\n\t\t\t\t\telse\r\n\t\t\t\tif (((RD_LS_04_Direct & 0x20)!=0x20) && (Motor_Dir[6]==1))\r\n\t\t\t\t\t\treturn 0;\r\n\t\t\t\t\telse\r\n\t\t\t\treturn 1;\t\t\r\n\t\t\t\r\n\t\t}\r\n\t\t\r\n\tif (Dispenser==7)\r\n\t\t\r\n\t\t{\r\n//\t\tvar response4 = context.Send<StubFpgaReadRegResponse>(\"StubFpgaReadRegRequest\" ,F2_LS_02_Direct);\r\n\t\t\t\tif (((RD_LS_04_Direct & 0x100)!=0x100) && (Motor_Dir[7]==2))\r\n\t\t\t\t\t\treturn 0;\r\n\t\t\t\t\telse\r\n\t\t\t\tif (((RD_LS_04_Direct & 0x800)!=0x800) && (Motor_Dir[7]==1))\r\n\t\t\t\t\t\treturn 0;\r\n\t\t\t\t\telse\r\n\t\t\t\treturn 1;\t\t\r\n\t\t}\r\n\t\t\r\n\t\t\r\n\t\treturn 0;\r\n}\t\t\r\n\t\t\r\n\t \t\r\nInt32 Print_Time() \r\n{\t\r\n\t\tcontext.AppendToFile(Dispenser_Fname,\",Time is\\t,,\"+ DateTime.Now +\"\\n\" ); \r\n\r\n\t\treturn 1;\r\n}\t\r\n\r\n\r\n\r\nInt32 Calc_mBAR(Int32 Dispenser, bool save_press)\r\n{\t\t\r\nInt32 Data;\r\nInt32 Sense1;\r\nInt32 temp=0;\r\n\r\n\t\tData =A2D_Dispenser[Dispenser];\r\n\t\tif (Data<100)\r\n\t\t\ttemp=-1;\r\n\t\tData=Data-710;\r\n\t\tif (Data<0)\r\n\t\tData=0;\r\n\r\n\t\tData=Data*(10000+PressureSensorType*1000)/2840;\t//\tfor -1 to 10 bar Press_Sensor_Type=1 else 0\r\n\t\tData=Data-1000*PressureSensorType; \t\t\t// for -1 to 10 bar\r\n\r\n\t\tif (temp==-1)\t\t\t\t\t\t//if SamplingInBits <100 then No pressure sensor exist\r\n\t\tSense1=-9999\t;\r\n\t\telse\t\r\n\t\tSense1=Data\t;\r\n\t\tif (\t((msec_index) % (Dispenser_sample_rate)) == 0)\r\n\t\t{\r\n\t\t\tcontext.AppendToFile(Dispenser_Fname,\"\" + Sense1+\"\\n\");\r\n\t\t}\r\n\t\tDispenser_press[Dispenser]=Sense1;\r\n\treturn Sense1;\r\n\t\t\t\r\n } \t\r\n\r\n \r\n//--------------------------------\r\nint open_midtank_valve (Int32 valve_type,Int32 valve_nm)\t\t//valve_type=0 is Air ,1 is Ink ; valve_nm 0-7\r\n{\r\n\tSetBit (F3_VALVE_OUT,((valve_type+1)*8)- valve_nm-1, 1);\r\n\treturn 1;\r\n\r\n}\r\n//--------------------------------\t\r\nint close_midtank_valve (Int32 valve_type,Int32 valve_nm)\t\t//valve_type=0 is Air ,1 is Ink ; valve_nm 0-7\r\n{\r\n\tSetBit (F3_VALVE_OUT,((valve_type+1)*8)- valve_nm-1, 0);\r\n\treturn 1;\r\n}\r\n//--------------------------------\r\nInt32 SetBit(Int32 Adr, Int32 BitNo, Int32 Bit)\r\n{\r\n\tInt32 BitMask;\r\n\r\n var response = context.Send<StubFpgaReadRegResponse>(\"StubFpgaReadRegRequest\" , F3_VALVE_OUT);\r\n\tInt32 RV = (Int32) response.Value & 0xffff;\r\n\t\r\n\t\r\n\tif (Bit == 0x1) \r\n\t{\r\n\t\tBitMask = 0x1 << BitNo;\r\n\t\tRV = RV | BitMask;\r\n\t\tcontext.Send<StubFpgaWriteRegResponse>(\"StubFpgaWriteRegRequest\" ,F3_VALVE_OUT , RV);\r\n\t}\r\n\telse if (Bit == 0x0)\r\n\t{\r\n\t\tBitMask = ~(0x1 << BitNo);\r\n\t\tRV = RV & BitMask;\r\n\t\tcontext.Send<StubFpgaWriteRegResponse>(\"StubFpgaWriteRegRequest\" ,F3_VALVE_OUT , RV);\r\n\t}\r\n\treturn 1;\r\n}\r\n//---------------------------------- \r\n void MotorStop(Int32 i)\r\n{\r\n \r\ncontext.Send<StubMotorStopResponse>(\"StubMotorStopRequest\" ,Dispenser_Motor1+i, 2);\r\nMotor_Dir[i]=0;\t//0 stop 1- up 2-dn\r\n\r\n}\r\n \r\n}","IsEntryPoint":true},{"$id":"4","Name":"Service.csx","Code":"using System;\r\nusing System.Collections.Generic;\r\nusing System.Collections.ObjectModel;\r\nusing System.ComponentModel;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Threading;\r\nusing System.Threading.Tasks;\r\nusing System.Drawing;\r\nusing Google.Protobuf;\r\nusing Tango.BL.Entities;\r\nusing Tango.BL.Enumerations;\r\nusing Tango.PMR.Stubs;\r\nusing Tango.PMR.Diagnostics;\r\nusing Tango.FSE.Common.Connection;\r\nusing Tango.FSE.Common.Diagnostics;\r\nusing Tango.FSE.Procedures;\r\n\r\npublic class Service\r\n{\r\n public double Calc(double a, double b)\r\n {\r\n return a + b;\r\n }\r\n}","IsEntryPoint":false}]},"Inputs":{"$id":"5","$values":[]},"Variables":{"$id":"6","$values":[{"$id":"7","Name":null,"Value":null}]},"ReferenceAssemblies":{"$id":"8","$values":[{"$id":"9","File":"C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\mscorlib.dll","HintType":"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"},{"$id":"10","File":"C:\\WINDOWS\\Microsoft.Net\\assembly\\GAC_MSIL\\System.Core\\v4.0_4.0.0.0__b77a5c561934e089\\System.Core.dll","HintType":"System.Linq.Enumerable, System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"},{"$id":"11","File":"C:\\WINDOWS\\Microsoft.Net\\assembly\\GAC_MSIL\\System.Windows.Forms\\v4.0_4.0.0.0__b77a5c561934e089\\System.Windows.Forms.dll","HintType":"System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"},{"$id":"12","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Tango.FSE.Procedures.dll","HintType":"Tango.FSE.Procedures.ProcedureProject, Tango.FSE.Procedures, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"},{"$id":"13","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Tango.FSE.Common.dll","HintType":"Tango.FSE.Common.Diagnostics.IDiagnosticsProvider, Tango.FSE.Common, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"},{"$id":"14","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Tango.BL.dll","HintType":"Tango.BL.Enumerations.TechMonitors, Tango.BL, Version=2.0.36.1608, Culture=neutral, PublicKeyToken=null"},{"$id":"15","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Tango.PMR.dll","HintType":"Tango.PMR.Common.MessageType, Tango.PMR, Version=2.0.40.1608, Culture=neutral, PublicKeyToken=null"},{"$id":"16","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Tango.Transport.dll","HintType":"Tango.Transport.ITransporter, Tango.Transport, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"},{"$id":"17","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Tango.Integration.dll","HintType":"Tango.Integration.Operation.IMachineOperator, Tango.Integration, Version=2.0.31.1608, Culture=neutral, PublicKeyToken=null"},{"$id":"18","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Google.Protobuf.dll","HintType":"Google.Protobuf.IMessage, Google.Protobuf, Version=3.4.1.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604"},{"$id":"19","File":"C:\\WINDOWS\\Microsoft.Net\\assembly\\GAC_MSIL\\System.Drawing\\v4.0_4.0.0.0__b03f5f7f11d50a3a\\System.Drawing.dll","HintType":"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"}]},"Resources":{"$id":"20","$values":[]},"Dialogs":{"$id":"21","$values":[]},"ID":"b5924fbd-808a-41e3-99fb-980cd8df910c","ApartmentState":"STA"}
\ No newline at end of file diff --git a/Software/Stubs Collection/stubs/Scripts/Set cleaning sequence.cs b/Software/Stubs Collection/stubs/Scripts/Set cleaning sequence.cs new file mode 100644 index 000000000..6f5357535 --- /dev/null +++ b/Software/Stubs Collection/stubs/Scripts/Set cleaning sequence.cs @@ -0,0 +1,23 @@ +using System; +using System.Text; +using System.Linq; +using System.Drawing; +using System.Diagnostics; +using System.Windows.Forms; +using System.Threading; +using System.Threading.Tasks; +using System.Collections.Generic; +using Tango.PMR.Stubs; +using Tango.Stubs; + +public void OnExecute(StubManager stubManager) +{ + + +ProgressRequest progressRequest = new ProgressRequest(); +progressRequest.Amount = 0xAD7; +progressRequest.Delay = 1; // 1 - active, 0 - disabled + +var response = stubManager.Run<ProgressResponse>(progressRequest); + +}
\ No newline at end of file diff --git a/Software/Stubs Collection/stubs/Scripts/WHS_waste_Tank_Calibration_Save_V0.pproj b/Software/Stubs Collection/stubs/Scripts/WHS_waste_Tank_Calibration_Save_V0.pproj new file mode 100644 index 000000000..5932b58a0 --- /dev/null +++ b/Software/Stubs Collection/stubs/Scripts/WHS_waste_Tank_Calibration_Save_V0.pproj @@ -0,0 +1 @@ +{"$id":"1","Name":"untitled","Description":null,"Scripts":{"$id":"2","$values":[{"$id":"3","Name":"Program.csx","Code":"using System;\r\nusing System.Collections.Generic;\r\nusing System.Collections.ObjectModel;\r\nusing System.ComponentModel;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Threading;\r\nusing System.Threading.Tasks;\r\nusing System.Drawing;\r\nusing Google.Protobuf;\r\nusing Tango.BL.Entities;\r\nusing Tango.BL.Enumerations;\r\nusing Tango.PMR.Stubs;\r\nusing Tango.PMR.Diagnostics;\r\nusing Tango.FSE.Common.Connection;\r\nusing Tango.FSE.Common.Diagnostics;\r\nusing Tango.FSE.Procedures;\r\n\r\n\r\npublic class Program\r\n{\r\n\tdouble V0_default_ml = 8.7433;\r\n\r\n public void OnExecute(IProcedureContext context)\r\n {\r\n \r\n\tvar response1 = context.RequestUserInputFor<String>(\"Warning - you are going to change the value of Vo in the eeprom !!!\\nPlease Enter Password to confirme:\",\"\");\r\n\tif (response1==\"Aa123456\")\r\n\t{\r\n\t\tcontext.WriteLine(response1);\r\n\t\t\r\n\t\t//Write_0_Vo_in_ml_to_eeprom\r\n\t\tcontext.WriteLine(\"\\nWrite_0_Vo_in_ml_to_eeprom\");\t\r\n\t\tStubWhsEEpromRequest stubWhsEEpromRequest = new StubWhsEEpromRequest();\r\n\t\tstubWhsEEpromRequest.BurnRequest = true; //write\r\n\t\tStubWhsEEpromData stubWhsEEpromData = new StubWhsEEpromData();\r\n\t\tstubWhsEEpromData.Orifice1Flow = 0;\r\n\t\tstubWhsEEpromRequest.WhsEEprom = stubWhsEEpromData;\r\n\t\tvar response = context.Send<StubWhsEEpromResponse>(stubWhsEEpromRequest);\r\n\t\t\t\t\r\n\t\t//wait_10mSec\r\n\t\tcontext.WriteLine(\"\\nwait_10mSec\");\t\r\n\t\tThread.Sleep(100); //Sleep for 10 milli.\r\n\t\t\r\n\t\t//Read_Vo_in_ml_from_eeprom\t& verify it is 0\r\n\t\tcontext.WriteLine(\"\\nRead_Vo_in_ml_from_eeprom\t& verify it is 0\");\r\n\t\tstubWhsEEpromRequest.BurnRequest = false; //write\r\n\t\tstubWhsEEpromRequest.WhsEEprom = stubWhsEEpromData;\r\n\t\tvar response2 = context.Send<StubWhsEEpromResponse>(stubWhsEEpromRequest);\r\n\t\t\r\n\t\t//Read_Vo_in_mV\r\n\t\tcontext.WriteLine(\"\\nRead_Vo_in_mV\");\r\n\t\tvar response3 = context.Send<ProgressResponse>(\"ProgressRequest\" ,0x3EC, 0x01);\r\n\t\t//Print_Vo_in_mV\r\n\t\tcontext.WriteLine(response3.Progress);\r\n\t\t\r\n\t\t//check validity\r\n\t\tcontext.WriteLine(\"\\ncheck validity\");\r\n\t\t if((response3.Progress <= 800) || (response3.Progress >=1200))\r\n\t\t {\r\n\t\t \tresponse3.Progress = 1076; //default\r\n\t\t \tcontext.Write(\"\\nERROR ------ Vreading value outside the defined range !!! ------\");\r\n\t\t \t context.AddResult(ResultType.Failed , \"Error\", \"ERROR ------ Vreading value outside the defined range !!! ------\");\r\n\t\t }\r\n\t\telse\r\n\t\t{\t\t\t\r\n\t\t\t//calculate_V0_in_ml\r\n\t\t\tcontext.WriteLine(\"\\ncalculate_V0_in_ml\");\r\n\t\t\tV0_default_ml = V0_default_ml * response3.Progress;\r\n\t\t\t\r\n\t\t\t//print_Vo_in_ml\r\n\t\t\tcontext.WriteLine(\"\\nprint_Vo_in_ml\");\r\n\t\t\tcontext.WriteLine(V0_default_ml);\r\n\t\t\tcontext.WriteLine(\"\");\r\n\t\t\t\r\n\t\t\t//Write_Vo_in_ml_to_eeprom\r\n\t\t\tcontext.WriteLine(\"\\nWrite_Vo_in_ml_to_eeprom\");\r\n\t\t\tstubWhsEEpromRequest.BurnRequest = true; //write\r\n\t\r\n\t\t\tstubWhsEEpromData.Orifice1Flow = V0_default_ml;\r\n\t\t\tstubWhsEEpromRequest.WhsEEprom = stubWhsEEpromData;\r\n\t\t\tvar response4 = context.Send<StubWhsEEpromResponse>(stubWhsEEpromRequest);\r\n\t\t\t\t\r\n\t\t\t//wait_10mSec\r\n\t\t\tcontext.WriteLine(\"\\nwait_10mSec\");\t\r\n\t\t\t Thread.Sleep(100); //Sleep for 10 milli.\r\n\t\t\t \t\t\r\n\t\t\t //Read_Vo_in_ml_from_eeprom\r\n\t\t\tcontext.WriteLine(\"\\nRead_Vo_in_ml_from_eeprom\");\r\n\t\t\tstubWhsEEpromRequest.BurnRequest = false; //write\r\n\t\t\tstubWhsEEpromRequest.WhsEEprom = stubWhsEEpromData;\r\n\t\t\tvar response5 = context.Send<StubWhsEEpromResponse>(stubWhsEEpromRequest);\r\n\t\t\t\r\n\t\t\t//Check if we read the correct value\r\n\t\t\tcontext.WriteLine(\"\\nVerify that we read the correct value of Orifice1Flow!!\");\r\n\t\t\t context.AddResult(ResultType.Passed , \"Pass\", \"Calibration Pass.\");\r\n\r\n\t\t\t}\r\n\t}\r\n\t\telse\r\n \t{\r\n\t\t\tcontext.AddResult(ResultType.Failed , \"Error\", \"Password Fail.\");\r\n\t\t}\r\n\t\tcontext.WriteLine(\"\\n -- END OF SCRIPT -- \");\r\n }\r\n}\r\n\r\n\r\n","IsEntryPoint":true},{"$id":"4","Name":"Service.csx","Code":"using System;\r\nusing System.Collections.Generic;\r\nusing System.Collections.ObjectModel;\r\nusing System.ComponentModel;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Threading;\r\nusing System.Threading.Tasks;\r\nusing System.Drawing;\r\nusing Google.Protobuf;\r\nusing Tango.BL.Entities;\r\nusing Tango.BL.Enumerations;\r\nusing Tango.PMR.Stubs;\r\nusing Tango.PMR.Diagnostics;\r\nusing Tango.FSE.Common.Connection;\r\nusing Tango.FSE.Common.Diagnostics;\r\nusing Tango.FSE.Procedures;\r\n\r\npublic class Service\r\n{\r\n public double Calc(double a, double b)\r\n {\r\n return a + b;\r\n }\r\n}","IsEntryPoint":false}]},"Inputs":{"$id":"5","$values":[]},"Variables":{"$id":"6","$values":[]},"ReferenceAssemblies":{"$id":"7","$values":[{"$id":"8","File":"C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\mscorlib.dll","HintType":"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"},{"$id":"9","File":"C:\\WINDOWS\\Microsoft.Net\\assembly\\GAC_MSIL\\System.Core\\v4.0_4.0.0.0__b77a5c561934e089\\System.Core.dll","HintType":"System.Linq.Enumerable, System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"},{"$id":"10","File":"C:\\WINDOWS\\Microsoft.Net\\assembly\\GAC_MSIL\\System.Windows.Forms\\v4.0_4.0.0.0__b77a5c561934e089\\System.Windows.Forms.dll","HintType":"System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"},{"$id":"11","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Tango.FSE.Procedures.dll","HintType":"Tango.FSE.Procedures.ProcedureProject, Tango.FSE.Procedures, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"},{"$id":"12","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Tango.FSE.Common.dll","HintType":"Tango.FSE.Common.Diagnostics.IDiagnosticsProvider, Tango.FSE.Common, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"},{"$id":"13","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Tango.BL.dll","HintType":"Tango.BL.Enumerations.TechMonitors, Tango.BL, Version=2.0.36.1608, Culture=neutral, PublicKeyToken=null"},{"$id":"14","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Tango.PMR.dll","HintType":"Tango.PMR.Common.MessageType, Tango.PMR, Version=2.0.40.1608, Culture=neutral, PublicKeyToken=null"},{"$id":"15","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Tango.Transport.dll","HintType":"Tango.Transport.ITransporter, Tango.Transport, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"},{"$id":"16","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Tango.Integration.dll","HintType":"Tango.Integration.Operation.IMachineOperator, Tango.Integration, Version=2.0.31.1608, Culture=neutral, PublicKeyToken=null"},{"$id":"17","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Google.Protobuf.dll","HintType":"Google.Protobuf.IMessage, Google.Protobuf, Version=3.4.1.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604"},{"$id":"18","File":"C:\\WINDOWS\\Microsoft.Net\\assembly\\GAC_MSIL\\System.Drawing\\v4.0_4.0.0.0__b03f5f7f11d50a3a\\System.Drawing.dll","HintType":"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"}]},"Resources":{"$id":"19","$values":[]},"Dialogs":{"$id":"20","$values":[]},"ID":"605a2ef0-71a6-450d-92f7-9b6d22850ad1","ApartmentState":"STA"}
\ No newline at end of file diff --git a/Software/Stubs Collection/stubs/Scripts/config head type to hed card eeprom.cs b/Software/Stubs Collection/stubs/Scripts/config head type to hed card eeprom.cs new file mode 100644 index 000000000..fd0f7fcf7 --- /dev/null +++ b/Software/Stubs Collection/stubs/Scripts/config head type to hed card eeprom.cs @@ -0,0 +1,118 @@ +using System; +using System.Text; +using System.Linq; +using System.Drawing; +using System.Diagnostics; +using System.Windows.Forms; +using System.Threading; +using System.Threading.Tasks; +using System.Collections.Generic; +using Tango.PMR.Stubs; +using Tango.Stubs; + +//---------------------- +const Int32 I2C_ID = 3; //MCU_I2C3 +const Int32 TCA9548A_address = 0xE2; +const Int32 I2C_Slave_Add = 0xA0; // //eeprom address - 32kByte +int Head_Mux_Channel_ID = 4; //Head MUX channel +//---------------------- + +const Int32 SerialNum = 0x01; + + +int enable_channel(int Channel_ID) +{ + uint Const_temp = 0x01; + + StubI2CWriteBytesRequest stubI2CWriteBytesRequest = new StubI2CWriteBytesRequest(); + stubI2CWriteBytesRequest.I2CId = I2C_ID; + stubI2CWriteBytesRequest.SlaveAddress = TCA9548A_address; + + Const_temp = Const_temp << Channel_ID; + stubI2CWriteBytesRequest.BytesTWrite.Add(Const_temp); + + var response = stubManager.Run<StubI2CWriteBytesResponse>(stubI2CWriteBytesRequest); + + return 1; +} + + +int adc_write(uint I2C_Slave_Add, uint Page) +{ + StubI2CWriteBytesRequest stubI2CWriteBytesRequest = new StubI2CWriteBytesRequest(); + stubI2CWriteBytesRequest.I2CId = I2C_ID; + stubI2CWriteBytesRequest.SlaveAddress = I2C_Slave_Add; + + UInt32 uInt32 = new UInt32(); + stubI2CWriteBytesRequest.BytesTWrite.Add(0);//Byte 0 to write + stubI2CWriteBytesRequest.BytesTWrite.Add(Page);//Byte 0 to write + //-------------------------------------------------------------- + + stubI2CWriteBytesRequest.BytesTWrite.Add(SerialNum);//S/N + //stubI2CWriteBytesRequest.BytesTWrite.Add(0x03);//HEAD_TYPE_FLAT + stubI2CWriteBytesRequest.BytesTWrite.Add(0x04);//HEAD_TYPE_ARC + + var response = stubManager.Run<StubI2CWriteBytesResponse>(stubI2CWriteBytesRequest); + + return 1; +} + +int adc_set_for_read_ch(uint I2C_Slave_Add, uint Page) +{ + StubI2CWriteBytesRequest stubI2CWriteBytesRequest = new StubI2CWriteBytesRequest(); + stubI2CWriteBytesRequest.I2CId = I2C_ID; + stubI2CWriteBytesRequest.SlaveAddress = I2C_Slave_Add; + + + UInt32 uInt32 = new UInt32(); + stubI2CWriteBytesRequest.BytesTWrite.Add(0);//Byte 0 to write + stubI2CWriteBytesRequest.BytesTWrite.Add(Page);//Byte 0 to write + + var response = stubManager.Run<StubI2CWriteBytesResponse>(stubI2CWriteBytesRequest); + + return 1; +} + +int adc_read_ch(uint I2C_Slave_Add) +{ + StubI2CReadBytesRequest stubI2CReadBytesRequest = new StubI2CReadBytesRequest(); + stubI2CReadBytesRequest.I2CId = I2C_ID; + stubI2CReadBytesRequest.SlaveAddress = I2C_Slave_Add + 1; + stubI2CReadBytesRequest.NumberOfBytesToRead = 10; // Number of bytes to read + + var response1 = stubManager.Run<StubI2CReadBytesResponse>(stubI2CReadBytesRequest); + uint temph=0; + + for(int i=0; i<stubI2CReadBytesRequest.NumberOfBytesToRead;i++) + { + temph=response1.ReadBytes[i]; + stubManager.WriteHex(temph,2); + } + + return 1; +} + + +public void OnExecute(StubManager stubManager) +{ + + //enable_all_channel(); + enable_channel(Head_Mux_Channel_ID); // Chanel 0-7 => Disp0enser 0-7 + + for (int i = 0; i<1; i++) + { + + adc_write(I2C_Slave_Add,0x00); + Thread.Sleep(10); //Sleep for 5 milli. - must! otherwise read 0xff (See data sheet ) + + stubManager.Write("\nPage 0x00 #"); + stubManager.Write(i); + stubManager.Write("\t- The Buffer is: "); + adc_set_for_read_ch(I2C_Slave_Add, 0x00); + //Thread.Sleep(1); //Sleep for 10 milli. + adc_read_ch(I2C_Slave_Add); + + Thread.Sleep(1000); + + } +}
\ No newline at end of file diff --git a/Software/Stubs Collection/stubs/Scripts/progress_test.pproj b/Software/Stubs Collection/stubs/Scripts/progress_test.pproj new file mode 100644 index 000000000..29d02caa2 --- /dev/null +++ b/Software/Stubs Collection/stubs/Scripts/progress_test.pproj @@ -0,0 +1 @@ +{"$id":"1","Name":"untitled","Description":null,"Scripts":{"$id":"2","$values":[{"$id":"3","Name":"Program.csx","Code":"using System;\r\nusing System.Collections.Generic;\r\nusing System.Collections.ObjectModel;\r\nusing System.ComponentModel;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Threading;\r\nusing System.Threading.Tasks;\r\nusing System.Drawing;\r\nusing Google.Protobuf;\r\nusing Tango.BL.Entities;\r\nusing Tango.BL.Enumerations;\r\nusing Tango.PMR.Stubs;\r\nusing Tango.PMR.Diagnostics;\r\nusing Tango.FSE.Common.Connection;\r\nusing Tango.FSE.Common.Diagnostics;\r\nusing Tango.FSE.Procedures;\r\n\r\npublic class Program\r\n{\r\n public void OnExecute(IProcedureContext context)\r\n {\r\n context.AddResult(ResultType.Passed, \"My Value Name\", \"Test for this value has passed.\");\r\n\t\t\r\nfor (int i=0;i<10;i++)\r\n{\r\n Thread.Sleep(10000);\r\n context.UpdateProgress(\"11111\",true,i,10);\r\n\t}\t\r\n }\r\n}","IsEntryPoint":true},{"$id":"4","Name":"Service.csx","Code":"using System;\r\nusing System.Collections.Generic;\r\nusing System.Collections.ObjectModel;\r\nusing System.ComponentModel;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Threading;\r\nusing System.Threading.Tasks;\r\nusing System.Drawing;\r\nusing Google.Protobuf;\r\nusing Tango.BL.Entities;\r\nusing Tango.BL.Enumerations;\r\nusing Tango.PMR.Stubs;\r\nusing Tango.PMR.Diagnostics;\r\nusing Tango.FSE.Common.Connection;\r\nusing Tango.FSE.Common.Diagnostics;\r\nusing Tango.FSE.Procedures;\r\n\r\npublic class Service\r\n{\r\n public double Calc(double a, double b)\r\n {\r\n return a + b;\r\n }\r\n}","IsEntryPoint":false}]},"Inputs":{"$id":"5","$values":[]},"Variables":{"$id":"6","$values":[]},"ReferenceAssemblies":{"$id":"7","$values":[{"$id":"8","File":"C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\mscorlib.dll","HintType":"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"},{"$id":"9","File":"C:\\WINDOWS\\Microsoft.Net\\assembly\\GAC_MSIL\\System.Core\\v4.0_4.0.0.0__b77a5c561934e089\\System.Core.dll","HintType":"System.Linq.Enumerable, System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"},{"$id":"10","File":"C:\\WINDOWS\\Microsoft.Net\\assembly\\GAC_MSIL\\System.Windows.Forms\\v4.0_4.0.0.0__b77a5c561934e089\\System.Windows.Forms.dll","HintType":"System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"},{"$id":"11","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Tango.FSE.Procedures.dll","HintType":"Tango.FSE.Procedures.ProcedureProject, Tango.FSE.Procedures, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"},{"$id":"12","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Tango.FSE.Common.dll","HintType":"Tango.FSE.Common.Diagnostics.IDiagnosticsProvider, Tango.FSE.Common, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"},{"$id":"13","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Tango.BL.dll","HintType":"Tango.BL.Enumerations.TechMonitors, Tango.BL, Version=2.0.36.1608, Culture=neutral, PublicKeyToken=null"},{"$id":"14","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Tango.PMR.dll","HintType":"Tango.PMR.Common.MessageType, Tango.PMR, Version=2.0.40.1608, Culture=neutral, PublicKeyToken=null"},{"$id":"15","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Tango.Transport.dll","HintType":"Tango.Transport.ITransporter, Tango.Transport, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"},{"$id":"16","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Tango.Integration.dll","HintType":"Tango.Integration.Operation.IMachineOperator, Tango.Integration, Version=2.0.31.1608, Culture=neutral, PublicKeyToken=null"},{"$id":"17","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Google.Protobuf.dll","HintType":"Google.Protobuf.IMessage, Google.Protobuf, Version=3.4.1.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604"},{"$id":"18","File":"C:\\WINDOWS\\Microsoft.Net\\assembly\\GAC_MSIL\\System.Drawing\\v4.0_4.0.0.0__b03f5f7f11d50a3a\\System.Drawing.dll","HintType":"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"}]},"Resources":{"$id":"19","$values":[]},"Dialogs":{"$id":"20","$values":[]},"ID":"b99ea8ff-f5ff-44d5-8b33-4b534a14647b","ApartmentState":"STA"}
\ No newline at end of file diff --git a/Software/Stubs Collection/stubs/Scripts/test halt.cs b/Software/Stubs Collection/stubs/Scripts/test halt.cs new file mode 100644 index 000000000..289eb612a --- /dev/null +++ b/Software/Stubs Collection/stubs/Scripts/test halt.cs @@ -0,0 +1,24 @@ +using System; +using System.Text; +using System.Linq; +using System.Drawing; +using System.Diagnostics; +using System.Windows.Forms; +using System.Threading; +using System.Threading.Tasks; +using System.Collections.Generic; +using Tango.PMR.Stubs; +using Tango.Stubs; + +public void OnExecute(StubManager stubManager) +{ + +//CF - initialize FFS +//DF - reset +ProgressRequest progressRequest = new ProgressRequest(); +progressRequest.Amount = 0xAD9; +progressRequest.Delay = 0xAD9; + + var response = stubManager.Run<ProgressResponse>(progressRequest); + +}
\ No newline at end of file |
