Server optimizations.
Ylian Saint-Hilaire committed
Mar 7, 2019 at 22:47 UTC
eb3977ee72441cd49bdd16803a38eb78433eb262
6 files changed
+277
-2139757
heapdump-1982251193.610099.heapsnapshot
deleted
-2139467
@@ -1,2139467 +0,0 @@
1
-{"snapshot":{"meta":{"node_fields":["type","name","id","self_size","edge_count","trace_node_id"],"node_types":[["hidden","array","string","object","code","closure","regexp","number","native","synthetic","concatenated string","sliced string","symbol","bigint"],"string","number","number","number","number","number"],"edge_fields":["type","name_or_index","to_node"],"edge_types":[["context","element","property","internal","hidden","shortcut","weak"],"string_or_number","node"],"trace_function_info_fields":["function_id","name","script_name","script_id","line","column"],"trace_node_fields":["id","function_info_index","count","size","children"],"sample_fields":["timestamp_us","last_assigned_id"],"location_fields":["object_index","script_id","line","column"]},"node_count":464771,"edge_count":1615204,"trace_function_count":0},
2
-"nodes":[9,1,1,0,44,0
3
-,9,2,3,0,22,0
4
-,9,3,5,0,1,0
5
-,9,4,7,0,116,0
6
-,9,5,9,0,526,0
7
-,9,6,11,0,0,0
8
-,9,7,13,0,0,0
9
-,9,8,15,0,414,0
10
-,9,9,17,0,5,0
11
-,9,10,19,0,0,0
12
-,9,11,21,0,5,0
13
-,9,12,23,0,235,0
14
-,9,13,25,0,528,0
15
-,9,14,27,0,909,0
16
-,9,15,29,0,121,0
17
-,9,16,31,0,244,0
18
-,9,17,33,0,0,0
19
-,9,5,35,0,3,0
20
-,9,18,37,0,1,0
21
-,9,19,39,0,0,0
22
-,9,20,41,0,4010,0
23
-,9,21,43,0,0,0
24
-,9,22,45,0,0,0
25
-,9,23,47,0,0,0
26
-,0,24,49,80,1,0
27
-,0,24,51,80,1,0
28
-,0,24,53,80,1,0
29
-,0,25,55,48,3,0
30
-,0,25,57,48,20,0
31
-,0,25,59,48,4,0
32
-,0,25,61,48,3,0
33
-,0,25,63,48,3,0
34
-,0,25,65,48,3,0
35
-,2,1,67,24,1,0
36
-,0,24,69,80,1,0
37
-,0,24,71,80,1,0
38
-,0,24,73,80,1,0
39
-,0,24,75,80,1,0
40
-,0,24,77,80,1,0
41
-,0,24,79,80,1,0
42
-,0,26,81,80,1,0
43
-,0,27,83,80,1,0
44
-,0,24,85,80,1,0
45
-,0,24,87,80,1,0
46
-,0,24,89,80,1,0
47
-,0,24,91,80,1,0
48
-,0,24,93,80,1,0
49
-,0,24,95,80,1,0
50
-,0,24,97,80,1,0
51
-,0,24,99,80,1,0
52
-,0,24,101,80,1,0
53
-,0,24,103,80,1,0
54
-,1,1,105,16,1,0
55
-,1,1,107,16,0,0
56
-,0,28,109,32,2,0
57
-,0,25,111,48,3,0
58
-,0,25,113,48,3,0
59
-,0,25,115,48,3,0
60
-,0,25,117,48,3,0
61
-,0,25,119,48,3,0
62
-,0,24,121,80,1,0
63
-,0,24,123,80,1,0
64
-,0,24,125,80,1,0
65
-,0,24,127,80,1,0
66
-,0,24,129,80,1,0
67
-,0,24,131,80,1,0
68
-,0,24,133,80,1,0
69
-,0,24,135,80,1,0
70
-,0,24,137,80,1,0
71
-,0,24,139,80,1,0
72
-,0,24,141,80,1,0
73
-,0,24,143,80,1,0
74
-,0,24,145,80,1,0
75
-,0,24,147,80,1,0
76
-,0,24,149,80,1,0
77
-,0,24,151,80,1,0
78
-,0,24,153,80,1,0
79
-,0,24,155,80,1,0
80
-,0,24,157,80,1,0
81
-,0,24,159,80,1,0
82
-,0,24,161,80,1,0
83
-,0,24,163,80,1,0
84
-,0,24,165,80,1,0
85
-,0,24,167,80,1,0
86
-,0,24,169,80,1,0
87
-,0,24,171,80,1,0
88
-,0,24,173,80,1,0
89
-,0,24,175,80,1,0
90
-,0,24,177,80,1,0
91
-,0,24,179,80,1,0
92
-,0,24,181,80,1,0
93
-,0,24,183,80,1,0
94
-,0,24,185,80,1,0
95
-,0,24,187,80,1,0
96
-,0,24,189,80,1,0
97
-,0,24,191,80,1,0
98
-,0,24,193,80,1,0
99
-,0,24,195,80,1,0
100
-,0,24,197,80,1,0
101
-,0,24,199,80,1,0
102
-,0,24,201,80,1,0
103
-,0,24,203,80,1,0
104
-,0,29,205,80,1,0
105
-,0,30,207,80,1,0
106
-,0,31,209,80,1,0
107
-,0,32,211,80,1,0
108
-,0,33,213,80,1,0
109
-,0,34,215,80,1,0
110
-,0,35,217,80,1,0
111
-,0,36,219,80,1,0
112
-,0,37,221,80,1,0
113
-,0,38,223,80,1,0
114
-,0,39,225,80,1,0
115
-,0,40,227,80,1,0
116
-,0,41,229,80,1,0
117
-,0,42,231,80,1,0
118
-,0,43,233,80,1,0
119
-,0,44,235,80,1,0
120
-,0,45,237,80,1,0
121
-,0,46,239,80,1,0
122
-,0,47,241,80,1,0
123
-,0,48,243,80,1,0
124
-,0,29,245,80,1,0
125
-,0,24,247,80,1,0
126
-,0,24,249,80,1,0
127
-,0,24,251,80,1,0
128
-,0,24,253,80,1,0
129
-,0,24,255,80,1,0
130
-,0,24,257,80,1,0
131
-,0,24,259,80,1,0
132
-,0,24,261,80,1,0
133
-,0,24,263,80,1,0
134
-,0,24,265,80,1,0
135
-,0,24,267,80,1,0
136
-,0,24,269,80,1,0
137
-,0,24,271,80,1,0
138
-,0,24,273,80,1,0
139
-,0,24,275,80,1,0
140
-,0,24,277,80,1,0
141
-,0,24,279,80,1,0
142
-,0,24,281,80,1,0
143
-,0,24,283,80,1,0
144
-,0,24,285,80,1,0
145
-,0,24,287,80,1,0
146
-,0,24,289,80,1,0
147
-,0,49,291,24,1,0
148
-,0,28,293,16,1,0
149
-,1,1,295,16,1,0
150
-,1,1,297,24,1,0
151
-,0,50,299,24,1,0
152
-,0,28,301,32,2,0
153
-,0,28,303,32,2,0
154
-,0,28,305,32,2,0
155
-,0,28,307,32,2,0
156
-,0,28,309,32,2,0
157
-,0,28,311,32,2,0
158
-,0,28,313,32,2,0
159
-,0,28,315,32,2,0
160
-,0,28,317,32,2,0
161
-,0,28,319,32,2,0
162
-,0,28,321,32,2,0
163
-,1,1,323,32,1,0
164
-,1,51,325,72,1,0
165
-,1,1,327,40,1,0
166
-,1,1,329,40,1,0
167
-,0,28,331,16,1,0
168
-,0,52,333,40,1,0
169
-,0,53,335,80,1,0
170
-,0,28,337,16,1,0
171
-,0,28,339,24,1,0
172
-,7,54,341,16,1,0
173
-,7,54,343,16,1,0
174
-,7,54,345,16,1,0
175
-,7,54,347,16,1,0
176
-,7,54,349,16,1,0
177
-,0,25,351,48,3,0
178
-,0,24,353,80,2,0
179
-,0,24,355,80,2,0
180
-,4,1,357,128,2,0
181
-,0,28,359,16,1,0
182
-,0,55,361,16,0,0
183
-,0,55,363,16,0,0
184
-,0,52,365,40,2,0
185
-,0,55,367,16,0,0
186
-,0,52,369,40,1,0
187
-,0,52,371,40,1,0
188
-,0,52,373,40,1,0
189
-,0,55,375,16,0,0
190
-,0,52,377,40,1,0
191
-,0,52,379,40,2,0
192
-,0,52,381,40,1,0
193
-,0,55,383,16,0,0
194
-,0,52,385,40,1,0
195
-,1,1,387,262160,0,0
196
-,1,1,389,2064,256,0
197
-,1,1,391,2064,0,0
198
-,1,1,393,2064,0,0
199
-,1,1,395,80,1,0
200
-,1,1,397,152,3,0
201
-,0,28,399,5448,559,0
202
-,1,1,401,4136,28,0
203
-,0,28,403,752,22,0
204
-,0,28,405,10152,1166,0
205
-,1,1,407,32,1,0
206
-,4,1,409,224,4,0
207
-,4,1,411,224,4,0
208
-,4,1,413,224,4,0
209
-,1,1,415,24,1,0
210
-,4,56,417,480,4,0
211
-,4,56,419,480,4,0
212
-,4,56,421,480,4,0
213
-,2,57,423,32,1,0
214
-,2,58,425,32,1,0
215
-,2,59,427,48,1,0
216
-,2,60,429,40,1,0
217
-,2,61,431,32,1,0
218
-,2,62,433,40,1,0
219
-,2,63,435,40,1,0
220
-,2,64,437,48,1,0
221
-,2,65,439,32,1,0
222
-,2,66,441,40,1,0
223
-,2,67,443,40,1,0
224
-,2,68,445,40,1,0
225
-,2,69,447,32,1,0
226
-,2,70,449,32,1,0
227
-,2,71,451,32,1,0
228
-,2,72,453,32,1,0
229
-,2,73,455,32,1,0
230
-,2,74,457,32,1,0
231
-,2,75,459,40,1,0
232
-,2,76,461,40,1,0
233
-,2,77,463,32,1,0
234
-,2,78,465,32,1,0
235
-,2,79,467,32,1,0
236
-,2,80,469,40,1,0
237
-,2,81,471,32,1,0
238
-,2,82,473,32,1,0
239
-,2,83,475,40,1,0
240
-,2,84,477,40,1,0
241
-,2,85,479,32,1,0
242
-,2,86,481,32,1,0
243
-,2,87,483,32,1,0
244
-,2,88,485,40,1,0
245
-,2,89,487,40,1,0
246
-,2,90,489,32,1,0
247
-,2,91,491,40,1,0
248
-,2,92,493,40,1,0
249
-,2,93,495,32,1,0
250
-,2,94,497,40,1,0
251
-,2,95,499,40,1,0
252
-,2,96,501,40,1,0
253
-,2,97,503,40,1,0
254
-,2,98,505,40,1,0
255
-,2,99,507,32,1,0
256
-,2,100,509,32,1,0
257
-,2,101,511,32,1,0
258
-,2,102,513,40,1,0
259
-,2,103,515,32,1,0
260
-,2,104,517,40,1,0
261
-,2,105,519,32,1,0
262
-,2,106,521,32,1,0
263
-,2,107,523,40,1,0
264
-,2,108,525,40,1,0
265
-,2,109,527,40,1,0
266
-,2,110,529,40,1,0
267
-,2,111,531,40,1,0
268
-,2,112,533,32,1,0
269
-,2,113,535,32,1,0
270
-,2,114,537,32,1,0
271
-,2,115,539,48,1,0
272
-,2,116,541,40,1,0
273
-,2,117,543,32,1,0
274
-,2,118,545,32,1,0
275
-,2,119,547,40,1,0
276
-,2,120,549,32,1,0
277
-,2,121,551,32,1,0
278
-,2,122,553,32,1,0
279
-,2,123,555,40,1,0
280
-,2,124,557,32,1,0
281
-,2,125,559,32,1,0
282
-,2,126,561,32,1,0
283
-,2,127,563,40,1,0
284
-,2,128,565,32,1,0
285
-,2,129,567,40,1,0
286
-,2,130,569,32,1,0
287
-,2,131,571,32,1,0
288
-,2,132,573,32,1,0
289
-,2,133,575,40,1,0
290
-,2,134,577,40,1,0
291
-,2,135,579,32,1,0
292
-,2,136,581,32,1,0
293
-,2,137,583,56,1,0
294
-,2,138,585,32,1,0
295
-,2,139,587,48,1,0
296
-,2,140,589,40,1,0
297
-,2,141,591,32,1,0
298
-,2,142,593,32,1,0
299
-,2,143,595,48,1,0
300
-,2,144,597,56,1,0
301
-,2,145,599,40,1,0
302
-,2,146,601,32,1,0
303
-,2,147,603,40,1,0
304
-,2,148,605,32,1,0
305
-,2,149,607,32,1,0
306
-,2,150,609,32,1,0
307
-,2,151,611,32,1,0
308
-,2,152,613,40,1,0
309
-,2,153,615,48,1,0
310
-,2,154,617,40,1,0
311
-,2,155,619,40,1,0
312
-,2,156,621,32,1,0
313
-,2,157,623,32,1,0
314
-,2,158,625,32,1,0
315
-,2,159,627,32,1,0
316
-,2,160,629,40,1,0
317
-,2,161,631,40,1,0
318
-,2,162,633,40,1,0
319
-,2,163,635,32,1,0
320
-,2,164,637,40,1,0
321
-,2,165,639,32,1,0
322
-,2,166,641,48,1,0
323
-,2,167,643,48,1,0
324
-,2,168,645,32,1,0
325
-,2,169,647,40,1,0
326
-,2,170,649,32,1,0
327
-,2,171,651,32,1,0
328
-,2,172,653,32,1,0
329
-,2,173,655,40,1,0
330
-,2,174,657,32,1,0
331
-,2,175,659,32,1,0
332
-,2,176,661,32,1,0
333
-,2,177,663,32,1,0
334
-,2,178,665,40,1,0
335
-,2,179,667,32,1,0
336
-,2,180,669,40,1,0
337
-,2,181,671,32,1,0
338
-,2,182,673,40,1,0
339
-,2,183,675,32,1,0
340
-,2,184,677,32,1,0
341
-,2,185,679,32,1,0
342
-,2,186,681,40,1,0
343
-,2,187,683,32,1,0
344
-,2,188,685,32,1,0
345
-,2,189,687,32,1,0
346
-,2,190,689,32,1,0
347
-,2,191,691,32,1,0
348
-,2,192,693,40,1,0
349
-,2,193,695,32,1,0
350
-,2,194,697,32,1,0
351
-,2,195,699,32,1,0
352
-,2,196,701,32,1,0
353
-,2,197,703,32,1,0
354
-,2,198,705,40,1,0
355
-,2,199,707,32,1,0
356
-,2,200,709,40,1,0
357
-,2,201,711,32,1,0
358
-,2,54,713,32,1,0
359
-,2,202,715,40,1,0
360
-,2,203,717,32,1,0
361
-,2,204,719,32,1,0
362
-,2,205,721,32,1,0
363
-,2,206,723,40,1,0
364
-,2,207,725,32,1,0
365
-,2,208,727,32,1,0
366
-,2,209,729,32,1,0
367
-,2,210,731,40,1,0
368
-,2,211,733,32,1,0
369
-,2,212,735,32,1,0
370
-,2,213,737,48,1,0
371
-,2,214,739,32,1,0
372
-,2,215,741,32,1,0
373
-,2,216,743,56,1,0
374
-,2,217,745,40,1,0
375
-,2,218,747,40,1,0
376
-,2,219,749,32,1,0
377
-,2,220,751,32,1,0
378
-,2,221,753,32,1,0
379
-,2,222,755,40,1,0
380
-,2,223,757,32,1,0
381
-,2,224,759,56,1,0
382
-,2,225,761,40,1,0
383
-,2,226,763,32,1,0
384
-,2,227,765,40,1,0
385
-,2,228,767,32,1,0
386
-,2,229,769,32,1,0
387
-,2,230,771,32,1,0
388
-,2,231,773,32,1,0
389
-,2,232,775,40,1,0
390
-,2,233,777,32,1,0
391
-,2,234,779,32,1,0
392
-,2,235,781,32,1,0
393
-,2,236,783,32,1,0
394
-,2,237,785,32,1,0
395
-,2,238,787,40,1,0
396
-,2,239,789,32,1,0
397
-,2,240,791,32,1,0
398
-,2,241,793,40,1,0
399
-,2,242,795,40,1,0
400
-,2,243,797,48,1,0
401
-,2,244,799,32,1,0
402
-,2,245,801,40,1,0
403
-,2,246,803,32,1,0
404
-,2,247,805,40,1,0
405
-,2,248,807,40,1,0
406
-,2,249,809,32,1,0
407
-,2,250,811,32,1,0
408
-,2,251,813,32,1,0
409
-,2,252,815,40,1,0
410
-,2,253,817,32,1,0
411
-,2,254,819,40,1,0
412
-,2,255,821,32,1,0
413
-,2,256,823,32,1,0
414
-,2,257,825,40,1,0
415
-,2,258,827,32,1,0
416
-,2,259,829,40,1,0
417
-,2,260,831,32,1,0
418
-,2,261,833,32,1,0
419
-,2,262,835,40,1,0
420
-,2,263,837,40,1,0
421
-,2,264,839,32,1,0
422
-,2,265,841,32,1,0
423
-,2,266,843,32,1,0
424
-,2,267,845,40,1,0
425
-,2,268,847,32,1,0
426
-,2,269,849,40,1,0
427
-,2,270,851,40,1,0
428
-,2,271,853,40,1,0
429
-,2,272,855,48,1,0
430
-,2,273,857,40,1,0
431
-,2,274,859,48,1,0
432
-,2,275,861,32,1,0
433
-,2,276,863,32,1,0
434
-,2,277,865,32,1,0
435
-,2,278,867,32,1,0
436
-,2,279,869,32,1,0
437
-,2,280,871,40,1,0
438
-,2,281,873,32,1,0
439
-,2,282,875,32,1,0
440
-,2,283,877,32,1,0
441
-,2,284,879,32,1,0
442
-,2,285,881,32,1,0
443
-,2,286,883,32,1,0
444
-,2,287,885,40,1,0
445
-,2,288,887,32,1,0
446
-,2,289,889,32,1,0
447
-,2,290,891,32,1,0
448
-,0,291,893,32,1,0
449
-,0,291,895,32,1,0
450
-,0,291,897,32,1,0
451
-,0,291,899,32,1,0
452
-,0,291,901,32,1,0
453
-,0,291,903,32,1,0
454
-,0,291,905,32,1,0
455
-,0,291,907,32,1,0
456
-,0,291,909,32,1,0
457
-,0,291,911,32,1,0
458
-,0,291,913,32,1,0
459
-,0,291,915,32,1,0
460
-,0,291,917,32,1,0
461
-,0,291,919,32,1,0
462
-,0,291,921,32,1,0
463
-,0,291,923,32,1,0
464
-,0,291,925,32,1,0
465
-,0,291,927,32,1,0
466
-,0,291,929,32,1,0
467
-,0,291,931,32,1,0
468
-,0,291,933,32,1,0
469
-,0,291,935,32,1,0
470
-,0,291,937,32,1,0
471
-,0,291,939,32,1,0
472
-,0,291,941,32,1,0
473
-,0,291,943,32,1,0
474
-,0,291,945,32,1,0
475
-,0,291,947,32,1,0
476
-,0,291,949,32,1,0
477
-,0,291,951,32,1,0
478
-,0,291,953,32,1,0
479
-,0,291,955,32,1,0
480
-,12,256,957,32,2,0
481
-,12,256,959,32,2,0
482
-,12,256,961,32,2,0
483
-,12,256,963,32,2,0
484
-,12,256,965,32,2,0
485
-,12,256,967,32,2,0
486
-,12,256,969,32,2,0
487
-,12,256,971,32,2,0
488
-,12,256,973,32,2,0
489
-,12,256,975,32,2,0
490
-,12,256,977,32,2,0
491
-,12,256,979,32,2,0
492
-,12,256,981,32,2,0
493
-,12,256,983,32,2,0
494
-,0,292,985,64,5,0
495
-,0,292,987,64,5,0
496
-,0,292,989,64,5,0
497
-,0,292,991,64,5,0
498
-,0,292,993,64,5,0
499
-,0,292,995,64,5,0
500
-,0,292,997,64,5,0
501
-,0,292,999,64,5,0
502
-,0,292,1001,64,5,0
503
-,0,292,1003,64,5,0
504
-,0,292,1005,64,5,0
505
-,0,24,1007,80,1,0
506
-,0,24,1009,80,1,0
507
-,0,24,1011,80,1,0
508
-,0,24,1013,80,1,0
509
-,0,24,1015,80,1,0
510
-,0,24,1017,80,1,0
511
-,0,24,1019,80,1,0
512
-,0,24,1021,80,1,0
513
-,0,24,1023,80,1,0
514
-,0,24,1025,80,1,0
515
-,0,24,1027,80,1,0
516
-,0,24,1029,80,1,0
517
-,0,24,1031,80,1,0
518
-,0,24,1033,80,1,0
519
-,0,24,1035,80,1,0
520
-,0,24,1037,80,1,0
521
-,0,24,1039,80,1,0
522
-,0,24,1041,80,1,0
523
-,0,24,1043,80,1,0
524
-,0,24,1045,80,1,0
525
-,0,24,1047,80,1,0
526
-,0,24,1049,80,1,0
527
-,0,24,1051,80,1,0
528
-,0,24,1053,80,1,0
529
-,0,24,1055,80,1,0
530
-,0,24,1057,80,1,0
531
-,0,24,1059,80,1,0
532
-,0,24,1061,80,1,0
533
-,0,24,1063,80,1,0
534
-,0,24,1065,80,1,0
535
-,0,24,1067,80,1,0
536
-,0,24,1069,80,1,0
537
-,0,24,1071,80,1,0
538
-,0,24,1073,80,1,0
539
-,0,24,1075,80,1,0
540
-,0,24,1077,80,1,0
541
-,0,24,1079,80,1,0
542
-,4,293,1081,352,4,0
543
-,5,1,1083,64,8,0
544
-,3,204,1085,56,4,0
545
-,0,28,1087,136,4,0
546
-,5,1,1089,64,6,0
547
-,3,294,1091,56,5,0
548
-,4,295,1093,768,9,0
549
-,5,1,1095,64,6,0
550
-,3,204,1097,56,3,0
551
-,4,296,1099,320,4,0
552
-,2,297,1101,32,1,0
553
-,5,298,1103,64,11,0
554
-,2,299,1105,32,1,0
555
-,2,300,1107,40,1,0
556
-,3,294,1109,208,24,0
557
-,3,204,1111,32,3,0
558
-,2,301,1113,48,1,0
559
-,0,28,1115,35112,4,0
560
-,5,302,1117,64,6,0
561
-,3,294,1119,152,15,0
562
-,2,303,1121,72,1,0
563
-,3,304,1123,272,19,0
564
-,3,65,1125,32,4,0
565
-,3,204,1127,56,15,0
566
-,5,61,1129,56,6,0
567
-,3,204,1131,24,6,0
568
-,0,28,1133,488,4,0
569
-,5,305,1135,64,6,0
570
-,3,294,1137,192,21,0
571
-,0,28,1139,88,4,0
572
-,5,306,1141,64,6,0
573
-,3,294,1143,296,34,0
574
-,3,307,1145,344,16,0
575
-,3,65,1147,32,4,0
576
-,3,204,1149,24,9,0
577
-,3,204,1151,56,4,0
578
-,3,65,1153,32,4,0
579
-,3,308,1155,72,4,0
580
-,0,28,1157,304,4,0
581
-,5,309,1159,56,6,0
582
-,3,294,1161,152,11,0
583
-,3,308,1163,72,4,0
584
-,0,28,1165,248,4,0
585
-,5,310,1167,56,6,0
586
-,5,311,1169,48,5,0
587
-,0,28,1171,216,4,0
588
-,5,312,1173,56,6,0
589
-,3,65,1175,32,2,0
590
-,0,28,1177,128,4,0
591
-,5,313,1179,56,6,0
592
-,3,308,1181,72,4,0
593
-,0,28,1183,176,4,0
594
-,5,314,1185,64,6,0
595
-,3,294,1187,320,38,0
596
-,5,315,1189,64,6,0
597
-,3,316,1191,240,23,0
598
-,0,28,1193,280,4,0
599
-,5,317,1195,64,6,0
600
-,0,28,1197,280,4,0
601
-,5,1,1199,64,6,0
602
-,0,28,1201,104,4,0
603
-,5,318,1203,64,6,0
604
-,3,319,1205,208,42,0
605
-,3,65,1207,32,4,0
606
-,2,320,1209,32,1,0
607
-,3,204,1211,24,10,0
608
-,0,28,1213,208,4,0
609
-,5,321,1215,64,6,0
610
-,3,294,1217,368,43,0
611
-,3,322,1219,216,22,0
612
-,0,28,1221,480,4,0
613
-,5,323,1223,64,6,0
614
-,0,28,1225,160,4,0
615
-,5,1,1227,64,6,0
616
-,3,67,1229,64,2,0
617
-,3,324,1231,32,18,0
618
-,0,28,1233,368,4,0
619
-,5,325,1235,64,6,0
620
-,3,294,1237,184,16,0
621
-,4,326,1239,192,5,0
622
-,3,204,1241,40,3,0
623
-,1,1,1243,24616,29,0
624
-,1,1,1245,3112,4,0
625
-,1,1,1247,3112,1,0
626
-,2,327,1249,40,1,0
627
-,0,291,1251,32,2,0
628
-,2,328,1253,48,1,0
629
-,0,291,1255,32,2,0
630
-,2,329,1257,48,1,0
631
-,0,291,1259,32,2,0
632
-,2,330,1261,48,1,0
633
-,0,291,1263,32,2,0
634
-,2,331,1265,40,1,0
635
-,0,291,1267,32,2,0
636
-,2,332,1269,40,1,0
637
-,0,291,1271,32,2,0
638
-,2,333,1273,48,1,0
639
-,0,291,1275,32,2,0
640
-,2,334,1277,64,1,0
641
-,0,291,1279,32,2,0
642
-,2,335,1281,40,1,0
643
-,12,256,1283,32,2,0
644
-,2,336,1285,32,1,0
645
-,12,256,1287,32,2,0
646
-,2,337,1289,32,1,0
647
-,12,256,1291,32,2,0
648
-,2,338,1293,32,1,0
649
-,2,339,1295,32,1,0
650
-,2,340,1297,32,1,0
651
-,2,341,1299,40,1,0
652
-,2,342,1301,40,1,0
653
-,2,343,1303,32,1,0
654
-,2,344,1305,40,1,0
655
-,2,345,1307,40,1,0
656
-,2,346,1309,40,1,0
657
-,2,347,1311,48,1,0
658
-,2,348,1313,48,1,0
659
-,2,349,1315,40,1,0
660
-,2,350,1317,32,1,0
661
-,2,351,1319,32,1,0
662
-,2,352,1321,48,1,0
663
-,2,353,1323,32,1,0
664
-,2,354,1325,32,1,0
665
-,2,355,1327,40,1,0
666
-,2,356,1329,32,1,0
667
-,2,357,1331,32,1,0
668
-,2,358,1333,32,1,0
669
-,2,359,1335,32,1,0
670
-,2,360,1337,32,1,0
671
-,2,361,1339,40,1,0
672
-,2,362,1341,32,1,0
673
-,2,363,1343,32,1,0
674
-,2,364,1345,32,1,0
675
-,2,365,1347,32,1,0
676
-,2,366,1349,32,1,0
677
-,2,367,1351,32,1,0
678
-,2,368,1353,32,1,0
679
-,2,369,1355,32,1,0
680
-,2,370,1357,32,1,0
681
-,2,371,1359,32,1,0
682
-,2,372,1361,32,1,0
683
-,2,373,1363,32,1,0
684
-,2,374,1365,40,1,0
685
-,2,375,1367,32,1,0
686
-,2,376,1369,40,1,0
687
-,2,377,1371,32,1,0
688
-,2,378,1373,40,1,0
689
-,2,379,1375,32,1,0
690
-,2,380,1377,32,1,0
691
-,2,381,1379,32,1,0
692
-,2,382,1381,32,1,0
693
-,2,383,1383,32,1,0
694
-,2,384,1385,32,1,0
695
-,2,385,1387,32,1,0
696
-,2,386,1389,40,1,0
697
-,2,387,1391,40,1,0
698
-,2,388,1393,32,1,0
699
-,2,389,1395,40,1,0
700
-,2,390,1397,32,1,0
701
-,2,391,1399,32,1,0
702
-,2,392,1401,40,1,0
703
-,2,393,1403,40,1,0
704
-,2,394,1405,32,1,0
705
-,2,395,1407,48,1,0
706
-,2,396,1409,48,1,0
707
-,2,397,1411,32,1,0
708
-,2,398,1413,32,1,0
709
-,2,399,1415,32,1,0
710
-,2,400,1417,32,1,0
711
-,2,401,1419,32,1,0
712
-,2,402,1421,40,1,0
713
-,2,403,1423,32,1,0
714
-,2,404,1425,40,1,0
715
-,2,405,1427,32,1,0
716
-,2,406,1429,40,1,0
717
-,2,407,1431,32,1,0
718
-,2,408,1433,32,1,0
719
-,2,409,1435,32,1,0
720
-,2,410,1437,40,1,0
721
-,2,411,1439,32,1,0
722
-,2,412,1441,48,1,0
723
-,2,413,1443,40,1,0
724
-,2,414,1445,32,1,0
725
-,2,415,1447,32,1,0
726
-,2,416,1449,32,1,0
727
-,2,417,1451,40,1,0
728
-,2,418,1453,40,1,0
729
-,2,419,1455,40,1,0
730
-,2,420,1457,32,1,0
731
-,2,421,1459,32,1,0
732
-,2,422,1461,32,1,0
733
-,2,423,1463,32,1,0
734
-,2,424,1465,40,1,0
735
-,2,425,1467,32,1,0
736
-,2,426,1469,40,1,0
737
-,2,427,1471,32,1,0
738
-,2,428,1473,32,1,0
739
-,2,429,1475,40,1,0
740
-,2,430,1477,40,1,0
741
-,2,431,1479,40,1,0
742
-,2,432,1481,32,1,0
743
-,2,433,1483,32,1,0
744
-,2,434,1485,32,1,0
745
-,2,435,1487,40,1,0
746
-,2,436,1489,40,1,0
747
-,2,437,1491,40,1,0
748
-,2,438,1493,40,1,0
749
-,2,439,1495,40,1,0
750
-,2,440,1497,32,1,0
751
-,2,441,1499,40,1,0
752
-,2,442,1501,40,1,0
753
-,2,443,1503,40,1,0
754
-,2,444,1505,32,1,0
755
-,2,445,1507,32,1,0
756
-,2,446,1509,32,1,0
757
-,2,447,1511,48,1,0
758
-,2,448,1513,32,1,0
759
-,2,449,1515,32,1,0
760
-,2,450,1517,32,1,0
761
-,2,451,1519,40,1,0
762
-,2,452,1521,32,1,0
763
-,2,453,1523,32,1,0
764
-,2,454,1525,40,1,0
765
-,2,455,1527,32,1,0
766
-,2,456,1529,40,1,0
767
-,2,457,1531,32,1,0
768
-,2,458,1533,40,1,0
769
-,2,459,1535,32,1,0
770
-,2,460,1537,32,1,0
771
-,2,461,1539,32,1,0
772
-,2,462,1541,40,1,0
773
-,2,463,1543,40,1,0
774
-,2,464,1545,32,1,0
775
-,2,465,1547,32,1,0
776
-,2,466,1549,32,1,0
777
-,2,467,1551,32,1,0
778
-,2,468,1553,40,1,0
779
-,2,469,1555,32,1,0
780
-,2,470,1557,32,1,0
781
-,2,471,1559,32,1,0
782
-,2,472,1561,32,1,0
783
-,2,473,1563,32,1,0
784
-,2,474,1565,40,1,0
785
-,2,298,1567,32,1,0
786
-,2,475,1569,32,1,0
787
-,2,476,1571,32,1,0
788
-,2,477,1573,32,1,0
789
-,2,478,1575,40,1,0
790
-,2,479,1577,32,1,0
791
-,2,480,1579,40,1,0
792
-,2,481,1581,32,1,0
793
-,2,482,1583,40,1,0
794
-,2,483,1585,32,1,0
795
-,2,484,1587,32,1,0
796
-,2,485,1589,32,1,0
797
-,2,486,1591,32,1,0
798
-,2,487,1593,48,1,0
799
-,2,488,1595,40,1,0
800
-,2,489,1597,40,1,0
801
-,2,490,1599,32,1,0
802
-,2,491,1601,32,1,0
803
-,2,492,1603,32,1,0
804
-,2,493,1605,40,1,0
805
-,2,494,1607,32,1,0
806
-,2,495,1609,32,1,0
807
-,2,496,1611,48,1,0
808
-,2,497,1613,32,1,0
809
-,2,498,1615,40,1,0
810
-,2,499,1617,32,1,0
811
-,2,500,1619,32,1,0
812
-,2,501,1621,40,1,0
813
-,2,502,1623,32,1,0
814
-,2,503,1625,32,1,0
815
-,2,504,1627,40,1,0
816
-,2,505,1629,32,1,0
817
-,2,506,1631,40,1,0
818
-,2,507,1633,32,1,0
819
-,2,508,1635,32,1,0
820
-,2,509,1637,40,1,0
821
-,2,510,1639,48,1,0
822
-,2,511,1641,32,1,0
823
-,2,512,1643,40,1,0
824
-,2,513,1645,40,1,0
825
-,2,514,1647,40,1,0
826
-,2,515,1649,40,1,0
827
-,0,516,1651,2040,237,0
828
-,3,146,1653,40,98,0
829
-,3,465,1655,24,60,0
830
-,5,67,1657,64,12,0
831
-,0,24,1659,80,4,0
832
-,0,517,1661,168,3,0
833
-,3,204,1663,32,3,0
834
-,4,518,1665,1472,3,0
835
-,4,519,1667,128,4,0
836
-,4,520,1669,128,4,0
837
-,4,521,1671,256,6,0
838
-,4,522,1673,320,7,0
839
-,4,523,1675,352,7,0
840
-,4,524,1677,224,5,0
841
-,4,525,1679,192,8,0
842
-,4,526,1681,192,8,0
843
-,4,527,1683,192,8,0
844
-,4,528,1685,1056,12,0
845
-,4,529,1687,160,5,0
846
-,4,530,1689,1440,14,0
847
-,4,531,1691,1056,11,0
848
-,4,532,1693,192,5,0
849
-,4,533,1695,192,5,0
850
-,4,534,1697,96,5,0
851
-,4,535,1699,224,5,0
852
-,4,536,1701,96,4,0
853
-,4,537,1703,160,8,0
854
-,4,538,1705,160,5,0
855
-,4,539,1707,1472,14,0
856
-,4,540,1709,1152,12,0
857
-,4,541,1711,224,6,0
858
-,4,542,1713,224,6,0
859
-,4,543,1715,320,7,0
860
-,4,544,1717,256,5,0
861
-,4,545,1719,768,7,0
862
-,4,546,1721,416,5,0
863
-,4,547,1723,320,4,0
864
-,4,548,1725,320,4,0
865
-,4,549,1727,320,5,0
866
-,4,550,1729,832,8,0
867
-,4,551,1731,1536,14,0
868
-,4,552,1733,1440,9,0
869
-,4,553,1735,1088,12,0
870
-,4,554,1737,192,5,0
871
-,4,555,1739,384,7,0
872
-,4,556,1741,96,4,0
873
-,4,557,1743,96,4,0
874
-,4,558,1745,800,7,0
875
-,4,559,1747,928,5,0
876
-,4,560,1749,928,5,0
877
-,4,561,1751,672,4,0
878
-,4,562,1753,352,4,0
879
-,4,563,1755,352,4,0
880
-,4,564,1757,1184,4,0
881
-,4,565,1759,352,4,0
882
-,4,566,1761,352,4,0
883
-,4,567,1763,288,5,0
884
-,4,568,1765,2944,18,0
885
-,4,569,1767,160,3,0
886
-,4,570,1769,160,5,0
887
-,4,571,1771,160,5,0
888
-,4,572,1773,160,5,0
889
-,4,573,1775,160,5,0
890
-,4,574,1777,160,5,0
891
-,4,575,1779,160,5,0
892
-,4,576,1781,288,5,0
893
-,4,577,1783,160,4,0
894
-,4,578,1785,160,4,0
895
-,4,579,1787,992,13,0
896
-,4,580,1789,192,6,0
897
-,4,581,1791,320,6,0
898
-,4,582,1793,224,4,0
899
-,4,583,1795,128,4,0
900
-,4,584,1797,128,3,0
901
-,4,585,1799,128,3,0
902
-,4,586,1801,128,3,0
903
-,4,587,1803,128,3,0
904
-,4,588,1805,128,4,0
905
-,4,589,1807,96,4,0
906
-,4,590,1809,96,4,0
907
-,4,591,1811,96,4,0
908
-,4,592,1813,128,4,0
909
-,4,593,1815,128,4,0
910
-,4,594,1817,864,9,0
911
-,4,595,1819,608,6,0
912
-,4,596,1821,576,6,0
913
-,4,597,1823,416,5,0
914
-,4,598,1825,544,9,0
915
-,4,599,1827,192,4,0
916
-,4,600,1829,128,5,0
917
-,4,601,1831,480,7,0
918
-,4,602,1833,224,4,0
919
-,4,603,1835,352,8,0
920
-,4,604,1837,352,8,0
921
-,4,605,1839,320,7,0
922
-,4,606,1841,320,7,0
923
-,4,607,1843,320,7,0
924
-,4,608,1845,160,4,0
925
-,4,609,1847,192,5,0
926
-,4,610,1849,384,6,0
927
-,4,611,1851,416,6,0
928
-,4,612,1853,352,6,0
929
-,4,613,1855,384,7,0
930
-,4,614,1857,448,6,0
931
-,4,615,1859,352,4,0
932
-,4,616,1861,448,5,0
933
-,4,617,1863,576,5,0
934
-,4,618,1865,576,5,0
935
-,4,619,1867,640,6,0
936
-,4,620,1869,224,3,0
937
-,4,621,1871,160,4,0
938
-,4,622,1873,256,4,0
939
-,4,623,1875,10848,34,0
940
-,4,624,1877,3104,16,0
941
-,4,625,1879,128,4,0
942
-,4,626,1881,15360,65,0
943
-,4,627,1883,128,4,0
944
-,4,628,1885,128,4,0
945
-,4,629,1887,160,4,0
946
-,4,630,1889,128,4,0
947
-,4,631,1891,96,3,0
948
-,4,632,1893,96,3,0
949
-,4,633,1895,3456,10,0
950
-,4,634,1897,128,4,0
951
-,4,635,1899,6848,25,0
952
-,4,636,1901,128,4,0
953
-,4,637,1903,1120,9,0
954
-,4,638,1905,1600,13,0
955
-,4,639,1907,2496,8,0
956
-,4,640,1909,1152,5,0
957
-,4,641,1911,128,4,0
958
-,4,642,1913,128,4,0
959
-,4,643,1915,96,4,0
960
-,4,644,1917,96,4,0
961
-,4,645,1919,96,4,0
962
-,4,646,1921,96,4,0
963
-,4,647,1923,128,4,0
964
-,4,648,1925,544,20,0
965
-,4,649,1927,320,4,0
966
-,4,650,1929,320,4,0
967
-,4,651,1931,288,4,0
968
-,4,652,1933,288,4,0
969
-,4,653,1935,288,4,0
970
-,4,654,1937,288,4,0
971
-,4,655,1939,288,4,0
972
-,4,656,1941,288,4,0
973
-,4,657,1943,640,7,0
974
-,4,658,1945,608,6,0
975
-,4,659,1947,576,7,0
976
-,4,660,1949,544,6,0
977
-,4,661,1951,576,7,0
978
-,4,662,1953,544,6,0
979
-,4,663,1955,576,7,0
980
-,4,664,1957,544,6,0
981
-,4,665,1959,160,4,0
982
-,4,666,1961,96,4,0
983
-,4,667,1963,192,10,0
984
-,4,668,1965,288,4,0
985
-,4,669,1967,288,4,0
986
-,4,670,1969,576,7,0
987
-,4,671,1971,544,6,0
988
-,4,672,1973,96,4,0
989
-,4,673,1975,224,5,0
990
-,4,674,1977,96,4,0
991
-,4,675,1979,1024,5,0
992
-,4,676,1981,192,3,0
993
-,4,677,1983,256,3,0
994
-,4,678,1985,704,8,0
995
-,4,679,1987,960,5,0
996
-,4,680,1989,192,3,0
997
-,4,681,1991,192,3,0
998
-,4,682,1993,736,8,0
999
-,4,683,1995,96,4,0
1000
-,4,684,1997,832,7,0
1001
-,4,685,1999,96,4,0
1002
-,4,686,2001,2656,15,0
1003
-,4,687,2003,96,4,0
1004
-,4,688,2005,1312,9,0
1005
-,4,689,2007,6624,29,0
1006
-,4,690,2009,96,4,0
1007
-,4,691,2011,96,4,0
1008
-,4,692,2013,1440,13,0
1009
-,4,693,2015,1472,13,0
1010
-,4,694,2017,3136,12,0
1011
-,4,695,2019,224,5,0
1012
-,4,696,2021,576,7,0
1013
-,4,697,2023,3136,12,0
1014
-,4,698,2025,224,5,0
1015
-,4,699,2027,576,7,0
1016
-,4,700,2029,5120,21,0
1017
-,4,701,2031,6400,37,0
1018
-,4,702,2033,224,5,0
1019
-,4,703,2035,832,9,0
1020
-,4,704,2037,3008,12,0
1021
-,4,705,2039,224,5,0
1022
-,4,706,2041,448,7,0
1023
-,4,707,2043,4512,32,0
1024
-,4,708,2045,3040,12,0
1025
-,4,709,2047,224,5,0
1026
-,4,710,2049,224,5,0
1027
-,4,711,2051,224,5,0
1028
-,4,712,2053,1792,16,0
1029
-,4,713,2055,2976,12,0
1030
-,4,714,2057,224,5,0
1031
-,4,715,2059,224,5,0
1032
-,4,716,2061,224,5,0
1033
-,4,717,2063,704,7,0
1034
-,4,718,2065,224,5,0
1035
-,4,719,2067,224,5,0
1036
-,4,720,2069,384,6,0
1037
-,4,721,2071,704,7,0
1038
-,4,722,2073,224,5,0
1039
-,4,723,2075,224,5,0
1040
-,4,724,2077,384,6,0
1041
-,4,725,2079,384,6,0
1042
-,4,726,2081,4256,31,0
1043
-,4,727,2083,4064,22,0
1044
-,4,728,2085,4128,23,0
1045
-,4,729,2087,96,4,0
1046
-,4,730,2089,96,4,0
1047
-,4,731,2091,96,4,0
1048
-,4,732,2093,96,4,0
1049
-,4,733,2095,96,4,0
1050
-,4,734,2097,96,4,0
1051
-,4,735,2099,96,4,0
1052
-,4,736,2101,96,4,0
1053
-,4,737,2103,96,4,0
1054
-,4,738,2105,96,4,0
1055
-,4,739,2107,96,4,0
1056
-,4,740,2109,96,4,0
1057
-,4,741,2111,96,4,0
1058
-,4,742,2113,96,4,0
1059
-,4,743,2115,96,4,0
1060
-,4,744,2117,96,4,0
1061
-,4,745,2119,96,4,0
1062
-,4,746,2121,96,4,0
1063
-,4,747,2123,96,4,0
1064
-,4,748,2125,96,4,0
1065
-,4,749,2127,96,4,0
1066
-,4,750,2129,96,4,0
1067
-,4,751,2131,96,4,0
1068
-,4,752,2133,96,4,0
1069
-,4,753,2135,96,4,0
1070
-,4,754,2137,96,4,0
1071
-,4,755,2139,96,4,0
1072
-,4,756,2141,96,4,0
1073
-,4,757,2143,96,4,0
1074
-,4,758,2145,96,4,0
1075
-,4,759,2147,96,4,0
1076
-,4,760,2149,96,4,0
1077
-,4,761,2151,96,4,0
1078
-,4,762,2153,96,4,0
1079
-,4,763,2155,96,4,0
1080
-,4,764,2157,96,4,0
1081
-,4,765,2159,96,4,0
1082
-,4,766,2161,96,4,0
1083
-,4,767,2163,96,4,0
1084
-,4,768,2165,96,4,0
1085
-,4,769,2167,96,4,0
1086
-,4,770,2169,96,4,0
1087
-,4,771,2171,96,4,0
1088
-,4,772,2173,96,4,0
1089
-,4,773,2175,96,4,0
1090
-,4,774,2177,96,4,0
1091
-,4,775,2179,96,4,0
1092
-,4,776,2181,96,4,0
1093
-,4,777,2183,96,4,0
1094
-,4,778,2185,96,4,0
1095
-,4,779,2187,96,4,0
1096
-,4,780,2189,96,4,0
1097
-,4,781,2191,288,5,0
1098
-,4,782,2193,224,5,0
1099
-,4,783,2195,224,5,0
1100
-,4,784,2197,576,12,0
1101
-,4,785,2199,96,4,0
1102
-,4,786,2201,96,4,0
1103
-,4,787,2203,96,4,0
1104
-,4,788,2205,96,4,0
1105
-,4,789,2207,96,4,0
1106
-,4,790,2209,96,4,0
1107
-,4,791,2211,96,4,0
1108
-,4,792,2213,96,4,0
1109
-,4,793,2215,96,4,0
1110
-,4,794,2217,96,4,0
1111
-,4,795,2219,96,4,0
1112
-,4,796,2221,96,4,0
1113
-,4,797,2223,96,4,0
1114
-,4,798,2225,96,4,0
1115
-,4,799,2227,96,4,0
1116
-,4,800,2229,96,4,0
1117
-,4,801,2231,96,4,0
1118
-,4,802,2233,96,4,0
1119
-,4,803,2235,96,4,0
1120
-,4,804,2237,96,4,0
1121
-,4,805,2239,96,4,0
1122
-,4,806,2241,96,4,0
1123
-,4,807,2243,96,4,0
1124
-,4,808,2245,96,4,0
1125
-,4,809,2247,96,4,0
1126
-,4,810,2249,96,4,0
1127
-,4,811,2251,96,4,0
1128
-,4,812,2253,96,4,0
1129
-,4,813,2255,96,4,0
1130
-,4,814,2257,96,4,0
1131
-,4,815,2259,96,4,0
1132
-,4,816,2261,96,4,0
1133
-,4,817,2263,96,4,0
1134
-,4,818,2265,96,4,0
1135
-,4,819,2267,96,4,0
1136
-,4,820,2269,128,5,0
1137
-,4,821,2271,96,4,0
1138
-,4,822,2273,1088,9,0
1139
-,4,823,2275,128,4,0
1140
-,4,824,2277,512,6,0
1141
-,4,825,2279,96,4,0
1142
-,4,826,2281,320,4,0
1143
-,4,827,2283,928,7,0
1144
-,4,828,2285,96,4,0
1145
-,4,829,2287,96,4,0
1146
-,4,830,2289,96,4,0
1147
-,4,831,2291,96,4,0
1148
-,4,832,2293,96,4,0
1149
-,4,833,2295,96,4,0
1150
-,4,834,2297,96,4,0
1151
-,4,835,2299,96,4,0
1152
-,4,836,2301,96,4,0
1153
-,4,837,2303,224,5,0
1154
-,4,838,2305,224,5,0
1155
-,4,839,2307,96,4,0
1156
-,4,840,2309,96,4,0
1157
-,4,841,2311,3360,17,0
1158
-,4,842,2313,3232,17,0
1159
-,4,843,2315,96,4,0
1160
-,4,844,2317,6208,28,0
1161
-,4,845,2319,96,4,0
1162
-,4,846,2321,6144,37,0
1163
-,4,847,2323,96,4,0
1164
-,4,848,2325,7200,37,0
1165
-,4,849,2327,96,4,0
1166
-,4,850,2329,7680,35,0
1167
-,4,851,2331,96,4,0
1168
-,4,852,2333,704,5,0
1169
-,4,853,2335,2304,16,0
1170
-,4,854,2337,2272,15,0
1171
-,4,855,2339,96,4,0
1172
-,4,856,2341,96,4,0
1173
-,4,857,2343,2464,17,0
1174
-,4,858,2345,1152,5,0
1175
-,4,859,2347,5344,44,0
1176
-,4,860,2349,1952,12,0
1177
-,4,861,2351,320,7,0
1178
-,4,862,2353,288,7,0
1179
-,4,863,2355,96,4,0
1180
-,4,864,2357,416,7,0
1181
-,4,865,2359,1216,12,0
1182
-,4,866,2361,384,7,0
1183
-,4,867,2363,608,6,0
1184
-,4,868,2365,96,4,0
1185
-,4,869,2367,384,6,0
1186
-,4,870,2369,576,6,0
1187
-,4,871,2371,576,6,0
1188
-,4,872,2373,480,8,0
1189
-,4,873,2375,480,7,0
1190
-,4,874,2377,608,6,0
1191
-,4,875,2379,192,4,0
1192
-,4,876,2381,704,10,0
1193
-,4,877,2383,448,4,0
1194
-,4,878,2385,192,4,0
1195
-,4,879,2387,512,4,0
1196
-,4,880,2389,320,6,0
1197
-,4,881,2391,192,5,0
1198
-,4,882,2393,384,5,0
1199
-,4,883,2395,96,4,0
1200
-,4,884,2397,96,4,0
1201
-,4,885,2399,96,4,0
1202
-,4,886,2401,96,4,0
1203
-,4,887,2403,96,4,0
1204
-,4,888,2405,1280,18,0
1205
-,4,889,2407,672,8,0
1206
-,4,890,2409,832,9,0
1207
-,4,891,2411,768,8,0
1208
-,4,892,2413,768,8,0
1209
-,4,893,2415,736,11,0
1210
-,4,894,2417,608,9,0
1211
-,4,895,2419,608,9,0
1212
-,4,896,2421,608,9,0
1213
-,4,897,2423,608,9,0
1214
-,4,898,2425,608,9,0
1215
-,4,899,2427,736,10,0
1216
-,4,900,2429,1440,21,0
1217
-,4,901,2431,1440,21,0
1218
-,4,902,2433,1440,21,0
1219
-,4,903,2435,1440,21,0
1220
-,4,904,2437,1024,11,0
1221
-,4,905,2439,448,5,0
1222
-,4,906,2441,416,5,0
1223
-,4,907,2443,256,6,0
1224
-,4,908,2445,256,6,0
1225
-,4,909,2447,256,6,0
1226
-,4,910,2449,544,7,0
1227
-,4,911,2451,512,7,0
1228
-,4,912,2453,8576,31,0
1229
-,4,913,2455,992,7,0
1230
-,4,914,2457,832,6,0
1231
-,4,915,2459,96,4,0
1232
-,4,916,2461,96,4,0
1233
-,4,917,2463,96,4,0
1234
-,4,918,2465,96,4,0
1235
-,4,919,2467,96,4,0
1236
-,4,920,2469,7104,27,0
1237
-,4,921,2471,96,4,0
1238
-,4,922,2473,768,8,0
1239
-,4,923,2475,96,4,0
1240
-,4,924,2477,96,4,0
1241
-,4,925,2479,96,4,0
1242
-,4,926,2481,96,4,0
1243
-,4,927,2483,96,4,0
1244
-,4,928,2485,96,4,0
1245
-,4,929,2487,704,7,0
1246
-,4,930,2489,96,4,0
1247
-,4,931,2491,96,4,0
1248
-,4,932,2493,96,4,0
1249
-,4,933,2495,1440,22,0
1250
-,4,934,2497,224,5,0
1251
-,4,935,2499,2112,5,0
1252
-,4,936,2501,96,4,0
1253
-,4,937,2503,96,4,0
1254
-,4,938,2505,96,4,0
1255
-,4,939,2507,96,4,0
1256
-,4,940,2509,448,5,0
1257
-,4,941,2511,544,10,0
1258
-,4,942,2513,416,4,0
1259
-,4,943,2515,2432,7,0
1260
-,4,944,2517,608,8,0
1261
-,4,945,2519,864,10,0
1262
-,4,946,2521,704,9,0
1263
-,4,947,2523,256,6,0
1264
-,4,948,2525,2272,28,0
1265
-,4,949,2527,224,5,0
1266
-,4,950,2529,2656,30,0
1267
-,4,951,2531,96,4,0
1268
-,4,952,2533,1536,18,0
1269
-,4,953,2535,736,8,0
1270
-,4,954,2537,352,7,0
1271
-,4,955,2539,416,9,0
1272
-,4,956,2541,288,7,0
1273
-,4,957,2543,1216,17,0
1274
-,4,958,2545,256,7,0
1275
-,4,959,2547,640,9,0
1276
-,4,960,2549,3360,41,0
1277
-,4,961,2551,1504,14,0
1278
-,4,962,2553,736,9,0
1279
-,4,963,2555,2720,13,0
1280
-,4,964,2557,2240,14,0
1281
-,4,965,2559,2944,16,0
1282
-,4,966,2561,128,4,0
1283
-,4,967,2563,128,4,0
1284
-,4,968,2565,96,4,0
1285
-,4,969,2567,96,4,0
1286
-,4,970,2569,96,4,0
1287
-,4,971,2571,96,4,0
1288
-,4,972,2573,96,4,0
1289
-,4,973,2575,96,4,0
1290
-,4,974,2577,96,4,0
1291
-,4,975,2579,96,4,0
1292
-,4,976,2581,96,4,0
1293
-,4,977,2583,96,4,0
1294
-,4,978,2585,96,4,0
1295
-,4,979,2587,96,4,0
1296
-,4,980,2589,96,4,0
1297
-,4,981,2591,96,4,0
1298
-,4,982,2593,96,4,0
1299
-,4,983,2595,96,4,0
1300
-,4,984,2597,96,4,0
1301
-,4,985,2599,96,4,0
1302
-,4,986,2601,96,4,0
1303
-,4,987,2603,2368,19,0
1304
-,4,988,2605,96,4,0
1305
-,4,989,2607,96,4,0
1306
-,4,990,2609,96,4,0
1307
-,4,991,2611,96,4,0
1308
-,4,992,2613,96,4,0
1309
-,4,993,2615,3328,24,0
1310
-,4,994,2617,320,8,0
1311
-,4,995,2619,2400,23,0
1312
-,4,996,2621,1664,11,0
1313
-,4,997,2623,96,4,0
1314
-,4,998,2625,96,4,0
1315
-,4,999,2627,416,6,0
1316
-,4,1000,2629,1184,8,0
1317
-,4,1001,2631,8192,47,0
1318
-,4,1002,2633,2976,23,0
1319
-,4,1003,2635,5184,38,0
1320
-,4,1004,2637,2016,14,0
1321
-,4,1005,2639,6272,41,0
1322
-,4,1006,2641,3488,34,0
1323
-,4,1007,2643,1248,8,0
1324
-,4,1008,2645,1664,10,0
1325
-,4,1009,2647,96,4,0
1326
-,4,1010,2649,256,6,0
1327
-,4,1011,2651,640,9,0
1328
-,4,1012,2653,96,4,0
1329
-,4,1013,2655,96,4,0
1330
-,4,1014,2657,96,4,0
1331
-,4,1015,2659,96,4,0
1332
-,4,1016,2661,96,4,0
1333
-,4,1017,2663,512,8,0
1334
-,4,1018,2665,96,4,0
1335
-,4,1019,2667,1952,17,0
1336
-,4,1020,2669,1120,13,0
1337
-,4,1021,2671,704,10,0
1338
-,4,1022,2673,96,4,0
1339
-,4,1023,2675,1696,6,0
1340
-,4,1024,2677,96,4,0
1341
-,4,1025,2679,1120,16,0
1342
-,4,1026,2681,96,4,0
1343
-,4,1027,2683,1600,28,0
1344
-,4,1028,2685,3328,24,0
1345
-,4,1029,2687,3552,27,0
1346
-,4,1030,2689,3456,25,0
1347
-,4,1031,2691,3360,25,0
1348
-,4,1032,2693,96,4,0
1349
-,4,1033,2695,256,6,0
1350
-,4,1034,2697,4032,24,0
1351
-,4,1035,2699,96,4,0
1352
-,4,1036,2701,96,4,0
1353
-,4,1037,2703,96,4,0
1354
-,4,1038,2705,96,4,0
1355
-,4,1039,2707,4032,35,0
1356
-,4,1040,2709,2432,19,0
1357
-,4,1041,2711,1568,12,0
1358
-,4,1042,2713,5504,67,0
1359
-,4,1043,2715,160,4,0
1360
-,4,1044,2717,416,7,0
1361
-,4,1045,2719,96,4,0
1362
-,4,1046,2721,256,6,0
1363
-,4,1047,2723,256,6,0
1364
-,4,1048,2725,256,6,0
1365
-,4,1049,2727,96,4,0
1366
-,4,1050,2729,96,4,0
1367
-,4,1051,2731,96,4,0
1368
-,4,1052,2733,96,4,0
1369
-,4,1053,2735,96,4,0
1370
-,4,1054,2737,96,4,0
1371
-,4,1055,2739,384,4,0
1372
-,4,1056,2741,224,3,0
1373
-,4,1057,2743,128,3,0
1374
-,4,1058,2745,128,3,0
1375
-,4,1059,2747,128,3,0
1376
-,4,1060,2749,192,3,0
1377
-,4,1061,2751,128,3,0
1378
-,4,1062,2753,128,3,0
1379
-,4,1063,2755,128,3,0
1380
-,4,1064,2757,128,3,0
1381
-,4,1065,2759,128,3,0
1382
-,4,1066,2761,128,3,0
1383
-,4,1067,2763,128,3,0
1384
-,4,1068,2765,128,3,0
1385
-,4,1069,2767,128,3,0
1386
-,4,1070,2769,128,3,0
1387
-,4,1071,2771,128,3,0
1388
-,4,1072,2773,5280,43,0
1389
-,4,1073,2775,256,3,0
1390
-,4,1074,2777,320,7,0
1391
-,4,1075,2779,608,6,0
1392
-,4,1076,2781,896,7,0
1393
-,4,1077,2783,480,7,0
1394
-,4,1078,2785,224,5,0
1395
-,4,1079,2787,1280,17,0
1396
-,4,1080,2789,1344,17,0
1397
-,4,1081,2791,480,8,0
1398
-,4,1082,2793,96,4,0
1399
-,4,1083,2795,1312,18,0
1400
-,4,1084,2797,1312,18,0
1401
-,4,1085,2799,352,4,0
1402
-,4,1086,2801,320,4,0
1403
-,4,1087,2803,544,4,0
1404
-,4,1088,2805,544,4,0
1405
-,4,1089,2807,352,4,0
1406
-,4,1090,2809,352,4,0
1407
-,4,1091,2811,352,4,0
1408
-,4,1092,2813,544,4,0
1409
-,4,1093,2815,544,4,0
1410
-,4,1094,2817,1728,10,0
1411
-,4,1095,2819,2176,14,0
1412
-,4,1096,2821,576,7,0
1413
-,4,1097,2823,608,7,0
1414
-,4,1098,2825,2944,18,0
1415
-,4,1099,2827,416,5,0
1416
-,4,1100,2829,416,5,0
1417
-,4,1101,2831,416,5,0
1418
-,4,1102,2833,160,3,0
1419
-,4,1103,2835,2240,7,0
1420
-,4,1104,2837,15232,65,0
1421
-,4,1105,2839,352,3,0
1422
-,4,1106,2841,96,4,0
1423
-,4,1107,2843,96,4,0
1424
-,4,1108,2845,224,5,0
1425
-,4,1109,2847,224,5,0
1426
-,4,1110,2849,576,7,0
1427
-,4,1111,2851,1952,17,0
1428
-,4,1112,2853,3328,28,0
1429
-,4,1113,2855,3680,19,0
1430
-,4,1114,2857,96,3,0
1431
-,4,1115,2859,224,4,0
1432
-,4,1116,2861,352,5,0
1433
-,4,1117,2863,416,4,0
1434
-,4,1118,2865,96,3,0
1435
-,4,1119,2867,96,3,0
1436
-,4,1120,2869,192,4,0
1437
-,4,1121,2871,128,3,0
1438
-,4,1122,2873,768,6,0
1439
-,4,1123,2875,192,4,0
1440
-,4,1124,2877,416,8,0
1441
-,4,1125,2879,224,5,0
1442
-,4,1126,2881,96,3,0
1443
-,4,1127,2883,96,3,0
1444
-,4,1128,2885,384,4,0
1445
-,4,1129,2887,704,4,0
1446
-,4,1130,2889,1120,4,0
1447
-,4,1131,2891,9472,38,0
1448
-,4,1132,2893,1984,4,0
1449
-,4,1133,2895,1952,4,0
1450
-,4,1134,2897,4352,25,0
1451
-,4,1135,2899,4032,56,0
1452
-,4,1136,2901,128,3,0
1453
-,4,1137,2903,288,5,0
1454
-,4,1138,2905,224,4,0
1455
-,4,1139,2907,128,3,0
1456
-,4,1140,2909,224,4,0
1457
-,4,1141,2911,128,3,0
1458
-,4,1142,2913,128,3,0
1459
-,4,1143,2915,128,3,0
1460
-,4,1144,2917,352,5,0
1461
-,4,1145,2919,160,3,0
1462
-,4,1146,2921,384,5,0
1463
-,4,1147,2923,160,3,0
1464
-,4,1148,2925,128,3,0
1465
-,4,1149,2927,128,3,0
1466
-,4,1150,2929,128,3,0
1467
-,4,1151,2931,128,3,0
1468
-,4,1152,2933,128,3,0
1469
-,4,1153,2935,128,3,0
1470
-,4,1154,2937,128,3,0
1471
-,4,1155,2939,128,3,0
1472
-,4,1156,2941,256,4,0
1473
-,4,1157,2943,288,5,0
1474
-,4,1158,2945,128,4,0
1475
-,4,1159,2947,128,4,0
1476
-,4,1160,2949,128,3,0
1477
-,4,1161,2951,128,3,0
1478
-,4,1162,2953,128,3,0
1479
-,4,1163,2955,96,4,0
1480
-,4,1164,2957,928,6,0
1481
-,4,1165,2959,352,9,0
1482
-,4,1166,2961,96,4,0
1483
-,4,1167,2963,96,4,0
1484
-,4,1168,2965,96,4,0
1485
-,4,1169,2967,96,4,0
1486
-,4,1170,2969,96,4,0
1487
-,4,1171,2971,96,4,0
1488
-,4,1172,2973,96,4,0
1489
-,4,1173,2975,96,4,0
1490
-,4,1174,2977,96,4,0
1491
-,4,1175,2979,96,4,0
1492
-,4,1176,2981,96,4,0
1493
-,4,1177,2983,96,4,0
1494
-,4,1178,2985,96,4,0
1495
-,4,1179,2987,96,4,0
1496
-,4,1180,2989,96,4,0
1497
-,4,1181,2991,96,4,0
1498
-,4,1182,2993,96,4,0
1499
-,4,1183,2995,96,4,0
1500
-,4,1184,2997,96,4,0
1501
-,4,1185,2999,96,4,0
1502
-,4,1186,3001,96,4,0
1503
-,4,1187,3003,96,4,0
1504
-,4,1188,3005,96,4,0
1505
-,4,1189,3007,96,4,0
1506
-,4,1190,3009,96,4,0
1507
-,4,1191,3011,96,4,0
1508
-,4,1192,3013,96,4,0
1509
-,4,1193,3015,96,4,0
1510
-,4,1194,3017,96,4,0
1511
-,4,1195,3019,96,4,0
1512
-,4,1196,3021,96,4,0
1513
-,4,1197,3023,96,4,0
1514
-,4,1198,3025,96,4,0
1515
-,4,1199,3027,96,4,0
1516
-,4,1200,3029,96,4,0
1517
-,4,1,3031,96,3,0
1518
-,4,1,3033,96,3,0
1519
-,4,1,3035,128,3,0
1520
-,4,1,3037,160,3,0
1521
-,4,1,3039,160,3,0
1522
-,4,1,3041,160,3,0
1523
-,4,1,3043,160,3,0
1524
-,4,1,3045,96,3,0
1525
-,4,1,3047,96,3,0
1526
-,4,1,3049,160,3,0
1527
-,4,1,3051,4000,16,0
1528
-,4,1,3053,3392,15,0
1529
-,4,1,3055,128,3,0
1530
-,4,1,3057,128,3,0
1531
-,4,1,3059,192,3,0
1532
-,4,1,3061,160,3,0
1533
-,4,1,3063,160,3,0
1534
-,4,1,3065,128,3,0
1535
-,4,1,3067,256,4,0
1536
-,4,1,3069,224,4,0
1537
-,4,1,3071,288,4,0
1538
-,4,1,3073,3360,17,0
1539
-,4,1,3075,128,3,0
1540
-,4,1,3077,128,3,0
1541
-,4,1,3079,128,3,0
1542
-,4,1,3081,3520,17,0
1543
-,4,1,3083,288,4,0
1544
-,4,1,3085,256,4,0
1545
-,4,1,3087,256,4,0
1546
-,4,1,3089,256,4,0
1547
-,4,1,3091,256,4,0
1548
-,4,1,3093,288,4,0
1549
-,4,1,3095,1120,7,0
1550
-,4,1,3097,1184,7,0
1551
-,4,1,3099,1248,7,0
1552
-,4,1,3101,1216,7,0
1553
-,4,1,3103,1216,6,0
1554
-,4,1,3105,1216,9,0
1555
-,4,1,3107,1216,9,0
1556
-,4,1,3109,1216,9,0
1557
-,4,1,3111,1216,9,0
1558
-,4,1,3113,1216,9,0
1559
-,4,1,3115,1408,10,0
1560
-,4,1,3117,928,7,0
1561
-,4,1,3119,992,7,0
1562
-,4,1,3121,1024,7,0
1563
-,4,1,3123,1024,7,0
1564
-,4,1,3125,992,6,0
1565
-,4,1,3127,672,6,0
1566
-,4,1,3129,672,6,0
1567
-,4,1,3131,704,6,0
1568
-,4,1,3133,704,6,0
1569
-,4,1,3135,864,7,0
1570
-,4,1,3137,704,6,0
1571
-,4,1,3139,704,6,0
1572
-,4,1,3141,672,6,0
1573
-,4,1,3143,672,6,0
1574
-,4,1,3145,352,4,0
1575
-,4,1,3147,128,3,0
1576
-,4,1,3149,320,3,0
1577
-,4,1,3151,224,4,0
1578
-,4,1,3153,224,4,0
1579
-,4,1,3155,192,4,0
1580
-,4,1,3157,448,5,0
1581
-,4,1,3159,480,5,0
1582
-,4,1,3161,480,5,0
1583
-,4,1,3163,512,5,0
1584
-,4,1,3165,448,5,0
1585
-,4,1,3167,416,5,0
1586
-,4,1,3169,480,5,0
1587
-,4,1,3171,480,5,0
1588
-,4,1,3173,448,5,0
1589
-,4,1,3175,256,4,0
1590
-,4,1,3177,160,4,0
1591
-,4,1,3179,1568,23,0
1592
-,4,1,3181,1312,10,0
1593
-,4,1,3183,640,5,0
1594
-,4,1,3185,1984,11,0
1595
-,4,1,3187,1088,5,0
1596
-,4,1,3189,2112,21,0
1597
-,4,1,3191,2112,21,0
1598
-,4,1,3193,2112,21,0
1599
-,4,1,3195,2112,21,0
1600
-,4,1,3197,128,3,0
1601
-,4,1,3199,1088,11,0
1602
-,4,1,3201,2656,8,0
1603
-,4,1,3203,128,3,0
1604
-,4,1,3205,128,3,0
1605
-,4,1,3207,128,3,0
1606
-,4,1,3209,416,3,0
1607
-,4,1,3211,320,5,0
1608
-,4,1,3213,288,4,0
1609
-,4,1,3215,320,4,0
1610
-,4,1,3217,224,4,0
1611
-,4,1,3219,224,4,0
1612
-,4,1,3221,416,5,0
1613
-,4,1,3223,1888,14,0
1614
-,4,1,3225,960,8,0
1615
-,4,1,3227,1760,9,0
1616
-,4,1,3229,352,4,0
1617
-,4,1,3231,288,4,0
1618
-,4,1,3233,416,6,0
1619
-,4,1,3235,224,4,0
1620
-,4,1,3237,256,4,0
1621
-,4,1,3239,384,4,0
1622
-,4,1,3241,1600,11,0
1623
-,4,1,3243,928,8,0
1624
-,4,1,3245,960,8,0
1625
-,4,1,3247,448,6,0
1626
-,4,1,3249,128,3,0
1627
-,4,1,3251,128,3,0
1628
-,4,1,3253,160,3,0
1629
-,4,1,3255,160,3,0
1630
-,4,1,3257,160,3,0
1631
-,4,1,3259,160,3,0
1632
-,4,1,3261,160,3,0
1633
-,4,1,3263,416,4,0
1634
-,4,1,3265,448,4,0
1635
-,4,1,3267,416,4,0
1636
-,4,1,3269,416,4,0
1637
-,4,1,3271,128,3,0
1638
-,4,1,3273,128,3,0
1639
-,4,1,3275,128,3,0
1640
-,4,1,3277,128,3,0
1641
-,4,1,3279,128,3,0
1642
-,4,1,3281,128,3,0
1643
-,4,1,3283,192,3,0
1644
-,4,1,3285,192,3,0
1645
-,4,1,3287,576,4,0
1646
-,4,1,3289,320,3,0
1647
-,4,1,3291,128,3,0
1648
-,4,1,3293,352,4,0
1649
-,4,1,3295,128,3,0
1650
-,4,1,3297,224,4,0
1651
-,4,1,3299,128,3,0
1652
-,4,1,3301,224,5,0
1653
-,4,1,3303,224,5,0
1654
-,4,1,3305,224,4,0
1655
-,4,1,3307,256,5,0
1656
-,4,1,3309,224,5,0
1657
-,4,1,3311,224,5,0
1658
-,4,1,3313,128,3,0
1659
-,4,1,3315,128,3,0
1660
-,4,1,3317,3488,16,0
1661
-,4,1,3319,128,3,0
1662
-,4,1,3321,160,3,0
1663
-,4,1,3323,128,3,0
1664
-,4,1,3325,128,3,0
1665
-,4,1,3327,128,3,0
1666
-,4,1,3329,3552,17,0
1667
-,4,1,3331,256,4,0
1668
-,4,1,3333,256,4,0
1669
-,4,1,3335,256,4,0
1670
-,4,1,3337,256,4,0
1671
-,4,1,3339,288,4,0
1672
-,4,1,3341,1088,7,0
1673
-,4,1,3343,1152,7,0
1674
-,4,1,3345,1216,7,0
1675
-,4,1,3347,1216,7,0
1676
-,4,1,3349,1216,9,0
1677
-,4,1,3351,928,7,0
1678
-,4,1,3353,960,7,0
1679
-,4,1,3355,1024,7,0
1680
-,4,1,3357,1056,7,0
1681
-,4,1,3359,1024,6,0
1682
-,4,1,3361,704,6,0
1683
-,4,1,3363,704,6,0
1684
-,4,1,3365,704,6,0
1685
-,4,1,3367,704,6,0
1686
-,4,1,3369,896,7,0
1687
-,4,1,3371,672,6,0
1688
-,4,1,3373,480,5,0
1689
-,4,1,3375,480,5,0
1690
-,4,1,3377,480,5,0
1691
-,4,1,3379,512,5,0
1692
-,4,1,3381,448,5,0
1693
-,4,1,3383,416,5,0
1694
-,4,1,3385,480,5,0
1695
-,4,1,3387,480,5,0
1696
-,4,1,3389,480,5,0
1697
-,4,1,3391,1280,10,0
1698
-,4,1,3393,1984,11,0
1699
-,4,1,3395,1088,5,0
1700
-,4,1,3397,2176,21,0
1701
-,4,1,3399,2176,21,0
1702
-,4,1,3401,2176,21,0
1703
-,4,1,3403,2176,21,0
1704
-,4,1,3405,1120,11,0
1705
-,4,1,3407,320,4,0
1706
-,4,1,3409,448,5,0
1707
-,4,1,3411,1888,14,0
1708
-,4,1,3413,992,8,0
1709
-,4,1,3415,1760,9,0
1710
-,4,1,3417,448,6,0
1711
-,4,1,3419,448,6,0
1712
-,4,1,3421,128,3,0
1713
-,4,1,3423,416,4,0
1714
-,4,1,3425,128,3,0
1715
-,4,1,3427,128,3,0
1716
-,4,1,3429,128,3,0
1717
-,4,1,3431,128,3,0
1718
-,4,1,3433,320,3,0
1719
-,4,1,3435,352,4,0
1720
-,4,1,3437,128,3,0
1721
-,4,1,3439,896,7,0
1722
-,4,1,3441,1024,7,0
1723
-,4,1,3443,992,6,0
1724
-,4,1,3445,704,6,0
1725
-,3,1201,3447,32,18,0
1726
-,5,1202,3449,64,8,0
1727
-,3,134,3451,72,4,0
1728
-,3,270,3453,72,4,0
1729
-,3,134,3455,72,4,0
1730
-,3,270,3457,72,4,0
1731
-,3,271,3459,72,4,0
1732
-,3,270,3461,72,4,0
1733
-,3,271,3463,72,4,0
1734
-,3,161,3465,72,4,0
1735
-,3,134,3467,72,4,0
1736
-,3,76,3469,72,4,0
1737
-,3,204,3471,32,3,0
1738
-,3,271,3473,72,4,0
1739
-,3,134,3475,72,4,0
1740
-,3,270,3477,72,4,0
1741
-,3,204,3479,56,25,0
1742
-,5,406,3481,64,6,0
1743
-,5,1203,3483,64,6,0
1744
-,5,1204,3485,64,6,0
1745
-,3,204,3487,56,17,0
1746
-,0,517,3489,168,4,0
1747
-,0,517,3491,168,6,0
1748
-,5,1205,3493,64,6,0
1749
-,5,1206,3495,64,8,0
1750
-,5,1206,3497,64,8,0
1751
-,5,1206,3499,64,8,0
1752
-,5,1206,3501,64,8,0
1753
-,0,1207,3503,64,3,0
1754
-,3,271,3505,56,73,0
1755
-,5,1208,3507,64,6,0
1756
-,5,1209,3509,64,6,0
1757
-,5,1210,3511,64,6,0
1758
-,5,1211,3513,64,6,0
1759
-,5,1212,3515,64,6,0
1760
-,5,1213,3517,64,6,0
1761
-,5,1214,3519,64,6,0
1762
-,5,1215,3521,64,6,0
1763
-,0,517,3523,168,5,0
1764
-,0,517,3525,168,7,0
1765
-,5,1216,3527,64,9,0
1766
-,5,1,3529,64,8,0
1767
-,0,517,3531,168,6,0
1768
-,0,1207,3533,64,2,0
1769
-,0,1207,3535,64,2,0
1770
-,0,1207,3537,64,2,0
1771
-,0,1207,3539,64,2,0
1772
-,12,256,3541,32,2,0
1773
-,3,1217,3543,32,5,0
1774
-,0,517,3545,168,7,0
1775
-,5,1,3547,64,8,0
1776
-,0,517,3549,168,5,0
1777
-,0,517,3551,168,7,0
1778
-,0,1207,3553,64,3,0
1779
-,0,1207,3555,64,2,0
1780
-,0,517,3557,168,7,0
1781
-,0,517,3559,168,7,0
1782
-,5,324,3561,64,8,0
1783
-,3,1218,3563,32,10,0
1784
-,3,1218,3565,32,10,0
1785
-,3,1201,3567,32,18,0
1786
-,3,1218,3569,32,8,0
1787
-,3,1218,3571,32,10,0
1788
-,3,1219,3573,32,6,0
1789
-,3,1201,3575,32,18,0
1790
-,3,1218,3577,32,10,0
1791
-,3,1218,3579,32,8,0
1792
-,3,1201,3581,32,18,0
1793
-,3,1220,3583,32,6,0
1794
-,3,1218,3585,32,8,0
1795
-,3,1202,3587,32,7,0
1796
-,3,1218,3589,32,8,0
1797
-,3,1219,3591,32,6,0
1798
-,3,1218,3593,32,8,0
1799
-,3,1201,3595,32,18,0
1800
-,3,1201,3597,32,18,0
1801
-,3,1218,3599,32,8,0
1802
-,3,1218,3601,32,10,0
1803
-,3,1201,3603,32,18,0
1804
-,3,1218,3605,32,8,0
1805
-,3,1218,3607,32,8,0
1806
-,3,1218,3609,32,8,0
1807
-,3,1201,3611,32,18,0
1808
-,3,1202,3613,32,7,0
1809
-,3,1202,3615,32,7,0
1810
-,3,1202,3617,32,9,0
1811
-,3,1202,3619,32,7,0
1812
-,3,1202,3621,32,7,0
1813
-,3,1202,3623,32,7,0
1814
-,3,1202,3625,32,7,0
1815
-,3,1201,3627,32,18,0
1816
-,3,1201,3629,32,18,0
1817
-,3,1201,3631,32,18,0
1818
-,3,1201,3633,32,18,0
1819
-,3,1218,3635,32,10,0
1820
-,3,1218,3637,32,10,0
1821
-,3,1218,3639,32,10,0
1822
-,3,1218,3641,32,10,0
1823
-,2,1221,3643,32,1,0
1824
-,2,1222,3645,40,1,0
1825
-,2,1223,3647,40,1,0
1826
-,2,1224,3649,48,1,0
1827
-,2,1225,3651,40,1,0
1828
-,2,1226,3653,40,1,0
1829
-,2,1227,3655,40,1,0
1830
-,2,1228,3657,48,1,0
1831
-,2,1229,3659,48,1,0
1832
-,2,1230,3661,40,1,0
1833
-,2,1231,3663,40,1,0
1834
-,2,1232,3665,40,1,0
1835
-,2,1233,3667,40,1,0
1836
-,2,1234,3669,40,1,0
1837
-,2,1235,3671,32,1,0
1838
-,2,1236,3673,40,1,0
1839
-,2,1237,3675,40,1,0
1840
-,2,1238,3677,40,1,0
1841
-,2,1239,3679,32,1,0
1842
-,2,1240,3681,40,1,0
1843
-,2,1241,3683,32,1,0
1844
-,2,1242,3685,40,1,0
1845
-,2,1243,3687,40,1,0
1846
-,2,1244,3689,40,1,0
1847
-,2,1245,3691,40,1,0
1848
-,2,1246,3693,40,1,0
1849
-,2,1247,3695,40,1,0
1850
-,2,1248,3697,40,1,0
1851
-,2,1249,3699,32,1,0
1852
-,2,1250,3701,32,1,0
1853
-,2,1251,3703,40,1,0
1854
-,2,1252,3705,32,1,0
1855
-,2,1253,3707,32,1,0
1856
-,2,1254,3709,40,1,0
1857
-,2,1255,3711,32,1,0
1858
-,2,1256,3713,40,1,0
1859
-,2,1257,3715,48,1,0
1860
-,2,1258,3717,48,1,0
1861
-,2,1259,3719,40,1,0
1862
-,2,1260,3721,32,1,0
1863
-,2,1261,3723,48,1,0
1864
-,4,1262,3725,83040,3,0
1865
-,4,1262,3727,83040,3,0
1866
-,4,1262,3729,83040,3,0
1867
-,1,1263,3731,80,3,0
1868
-,4,1264,3733,56,2,0
1869
-,4,136,3735,56,2,0
1870
-,4,61,3737,56,2,0
1871
-,4,77,3739,56,2,0
1872
-,4,85,3741,56,2,0
1873
-,4,265,3743,56,2,0
1874
-,4,1265,3745,56,2,0
1875
-,4,1264,3747,56,3,0
1876
-,4,69,3749,56,2,0
1877
-,4,143,3751,56,2,0
1878
-,4,144,3753,56,2,0
1879
-,2,1266,3755,48,1,0
1880
-,4,1266,3757,56,2,0
1881
-,2,1267,3759,48,1,0
1882
-,4,1267,3761,56,2,0
1883
-,2,1268,3763,32,1,0
1884
-,4,1268,3765,56,2,0
1885
-,4,213,3767,56,2,0
1886
-,2,1269,3769,32,1,0
1887
-,4,1269,3771,56,2,0
1888
-,4,99,3773,56,2,0
1889
-,2,1270,3775,40,1,0
1890
-,4,1270,3777,56,2,0
1891
-,4,107,3779,56,2,0
1892
-,2,1271,3781,32,1,0
1893
-,4,1271,3783,56,2,0
1894
-,4,145,3785,56,2,0
1895
-,4,242,3787,56,2,0
1896
-,4,164,3789,56,2,0
1897
-,2,1272,3791,32,1,0
1898
-,4,1272,3793,56,2,0
1899
-,2,1273,3795,32,1,0
1900
-,4,1273,3797,56,2,0
1901
-,4,168,3799,56,2,0
1902
-,4,122,3801,56,2,0
1903
-,4,283,3803,56,2,0
1904
-,4,204,3805,56,2,0
1905
-,4,1274,3807,56,4,0
1906
-,1,1,3809,544,31,0
1907
-,4,1275,3811,56,2,0
1908
-,2,1276,3813,32,1,0
1909
-,4,1276,3815,56,2,0
1910
-,2,1277,3817,32,1,0
1911
-,4,1277,3819,56,4,0
1912
-,2,1278,3821,32,1,0
1913
-,4,1278,3823,56,2,0
1914
-,2,1279,3825,32,1,0
1915
-,4,1279,3827,56,2,0
1916
-,2,1280,3829,32,1,0
1917
-,4,1280,3831,56,2,0
1918
-,2,1281,3833,32,1,0
1919
-,4,1281,3835,56,2,0
1920
-,2,1282,3837,32,1,0
1921
-,4,1282,3839,56,2,0
1922
-,2,1283,3841,32,1,0
1923
-,4,1283,3843,56,2,0
1924
-,4,1284,3845,56,2,0
1925
-,4,265,3847,56,2,0
1926
-,4,1285,3849,56,4,0
1927
-,4,1286,3851,56,4,0
1928
-,4,1287,3853,56,4,0
1929
-,4,1288,3855,56,4,0
1930
-,4,1289,3857,56,4,0
1931
-,4,1290,3859,56,4,0
1932
-,4,1291,3861,56,4,0
1933
-,4,1292,3863,56,4,0
1934
-,4,1293,3865,56,4,0
1935
-,4,1294,3867,56,4,0
1936
-,4,1295,3869,56,4,0
1937
-,4,1296,3871,56,4,0
1938
-,4,1297,3873,56,4,0
1939
-,4,1298,3875,56,4,0
1940
-,4,1299,3877,56,4,0
1941
-,4,1300,3879,56,4,0
1942
-,4,1301,3881,56,4,0
1943
-,4,1302,3883,56,4,0
1944
-,4,1303,3885,56,4,0
1945
-,4,1304,3887,56,4,0
1946
-,4,1305,3889,56,4,0
1947
-,4,265,3891,56,4,0
1948
-,4,283,3893,56,2,0
1949
-,4,1306,3895,56,2,0
1950
-,2,1307,3897,32,1,0
1951
-,4,1307,3899,56,2,0
1952
-,2,1308,3901,32,1,0
1953
-,4,1308,3903,56,2,0
1954
-,2,1309,3905,32,1,0
1955
-,4,1309,3907,56,2,0
1956
-,4,65,3909,56,2,0
1957
-,2,1310,3911,40,1,0
1958
-,2,1311,3913,32,1,0
1959
-,2,1312,3915,32,1,0
1960
-,2,1313,3917,40,1,0
1961
-,2,1314,3919,32,1,0
1962
-,4,1283,3921,56,2,0
1963
-,4,1310,3923,56,2,0
1964
-,4,1311,3925,56,2,0
1965
-,4,1312,3927,56,2,0
1966
-,4,1313,3929,56,2,0
1967
-,2,1315,3931,32,1,0
1968
-,4,1315,3933,56,2,0
1969
-,2,1316,3935,32,1,0
1970
-,4,1316,3937,56,2,0
1971
-,2,1317,3939,32,1,0
1972
-,4,1317,3941,56,2,0
1973
-,4,1314,3943,56,2,0
1974
-,4,168,3945,56,2,0
1975
-,4,122,3947,56,2,0
1976
-,2,1318,3949,32,1,0
1977
-,4,1318,3951,56,2,0
1978
-,2,1319,3953,32,1,0
1979
-,4,1319,3955,56,2,0
1980
-,2,1320,3957,32,1,0
1981
-,4,1320,3959,56,2,0
1982
-,2,1321,3961,32,1,0
1983
-,4,1321,3963,56,2,0
1984
-,2,1322,3965,32,1,0
1985
-,4,1322,3967,56,2,0
1986
-,2,1323,3969,32,1,0
1987
-,4,1323,3971,56,2,0
1988
-,2,1324,3973,40,1,0
1989
-,4,1324,3975,56,2,0
1990
-,2,1325,3977,40,1,0
1991
-,4,1325,3979,56,4,0
1992
-,2,1326,3981,40,1,0
1993
-,4,1326,3983,56,4,0
1994
-,2,1327,3985,40,1,0
1995
-,4,1327,3987,56,2,0
1996
-,2,1328,3989,40,1,0
1997
-,4,1328,3991,56,2,0
1998
-,2,1329,3993,40,1,0
1999
-,4,1329,3995,56,2,0
2000
-,2,1330,3997,40,1,0
2001
-,4,1330,3999,56,2,0
2002
-,2,1331,4001,40,1,0
2003
-,4,1331,4003,56,2,0
2004
-,2,1332,4005,40,1,0
2005
-,4,1332,4007,56,2,0
2006
-,2,1333,4009,48,1,0
2007
-,4,1333,4011,56,2,0
2008
-,4,282,4013,56,2,0
2009
-,4,1334,4015,56,2,0
2010
-,4,1335,4017,56,2,0
2011
-,4,1325,4019,56,2,0
2012
-,4,1,4021,56,2,0
2013
-,2,1336,4023,48,1,0
2014
-,4,1336,4025,56,2,0
2015
-,2,1337,4027,32,1,0
2016
-,4,1337,4029,56,2,0
2017
-,2,1338,4031,32,1,0
2018
-,4,1338,4033,56,2,0
2019
-,4,380,4035,56,2,0
2020
-,2,1339,4037,32,1,0
2021
-,4,1339,4039,56,2,0
2022
-,2,1340,4041,32,1,0
2023
-,4,1340,4043,56,2,0
2024
-,2,1341,4045,32,1,0
2025
-,4,1341,4047,56,2,0
2026
-,2,1342,4049,32,1,0
2027
-,4,1342,4051,56,2,0
2028
-,2,1343,4053,32,1,0
2029
-,4,1343,4055,56,2,0
2030
-,2,1344,4057,32,1,0
2031
-,4,1344,4059,56,2,0
2032
-,2,1345,4061,32,1,0
2033
-,4,1345,4063,56,2,0
2034
-,4,148,4065,56,2,0
2035
-,2,1346,4067,40,1,0
2036
-,4,1346,4069,56,2,0
2037
-,2,1347,4071,32,1,0
2038
-,4,1347,4073,56,2,0
2039
-,2,1348,4075,32,1,0
2040
-,4,1348,4077,56,2,0
2041
-,2,1349,4079,32,1,0
2042
-,4,1349,4081,56,2,0
2043
-,2,1350,4083,40,1,0
2044
-,4,1350,4085,56,2,0
2045
-,2,1351,4087,32,1,0
2046
-,4,1351,4089,56,2,0
2047
-,2,1352,4091,32,1,0
2048
-,4,1352,4093,56,2,0
2049
-,2,1353,4095,40,1,0
2050
-,4,1353,4097,56,2,0
2051
-,2,1354,4099,32,1,0
2052
-,4,1354,4101,56,2,0
2053
-,2,1355,4103,32,1,0
2054
-,4,1355,4105,56,2,0
2055
-,2,1356,4107,40,1,0
2056
-,4,1356,4109,56,2,0
2057
-,2,1357,4111,32,1,0
2058
-,4,1357,4113,56,2,0
2059
-,2,204,4115,32,1,0
2060
-,4,1306,4117,56,2,0
2061
-,4,1358,4119,56,2,0
2062
-,4,1359,4121,56,2,0
2063
-,2,1360,4123,32,1,0
2064
-,4,1361,4125,56,2,0
2065
-,4,1362,4127,56,2,0
2066
-,2,1363,4129,40,1,0
2067
-,4,1364,4131,56,2,0
2068
-,4,1365,4133,56,2,0
2069
-,2,1366,4135,32,1,0
2070
-,4,1367,4137,56,2,0
2071
-,4,1368,4139,56,2,0
2072
-,2,1369,4141,40,1,0
2073
-,4,1370,4143,56,2,0
2074
-,4,1371,4145,56,2,0
2075
-,2,1372,4147,32,1,0
2076
-,4,1373,4149,56,2,0
2077
-,4,1374,4151,56,2,0
2078
-,2,1375,4153,40,1,0
2079
-,4,1376,4155,56,2,0
2080
-,4,1377,4157,56,2,0
2081
-,2,1378,4159,32,1,0
2082
-,4,1379,4161,56,2,0
2083
-,4,1380,4163,56,2,0
2084
-,2,1381,4165,40,1,0
2085
-,4,1382,4167,56,2,0
2086
-,4,1383,4169,56,2,0
2087
-,2,1384,4171,32,1,0
2088
-,4,1385,4173,56,2,0
2089
-,4,1386,4175,56,2,0
2090
-,2,1387,4177,32,1,0
2091
-,4,1388,4179,56,2,0
2092
-,4,1389,4181,56,2,0
2093
-,2,1390,4183,32,1,0
2094
-,4,1391,4185,56,2,0
2095
-,4,1392,4187,56,2,0
2096
-,2,1393,4189,32,1,0
2097
-,4,1394,4191,56,2,0
2098
-,4,1395,4193,56,2,0
2099
-,2,1396,4195,32,1,0
2100
-,4,1397,4197,56,2,0
2101
-,4,1398,4199,56,2,0
2102
-,2,1399,4201,32,1,0
2103
-,4,1400,4203,56,2,0
2104
-,4,1401,4205,56,2,0
2105
-,2,1402,4207,32,1,0
2106
-,4,1403,4209,56,2,0
2107
-,4,1404,4211,56,2,0
2108
-,2,1405,4213,32,1,0
2109
-,4,1406,4215,56,2,0
2110
-,4,1407,4217,56,2,0
2111
-,2,1408,4219,32,1,0
2112
-,4,1409,4221,56,2,0
2113
-,4,1410,4223,56,2,0
2114
-,2,1411,4225,32,1,0
2115
-,4,1412,4227,56,2,0
2116
-,4,1413,4229,56,2,0
2117
-,4,226,4231,56,2,0
2118
-,4,130,4233,56,2,0
2119
-,4,1414,4235,56,2,0
2120
-,4,1415,4237,56,2,0
2121
-,4,1416,4239,56,2,0
2122
-,4,1417,4241,56,2,0
2123
-,4,1418,4243,56,2,0
2124
-,4,1419,4245,56,2,0
2125
-,4,1420,4247,56,2,0
2126
-,4,1421,4249,56,2,0
2127
-,2,1422,4251,32,1,0
2128
-,4,1422,4253,56,2,0
2129
-,4,265,4255,56,2,0
2130
-,2,1423,4257,32,1,0
2131
-,4,1423,4259,56,2,0
2132
-,4,1424,4261,56,2,0
2133
-,4,1425,4263,56,2,0
2134
-,4,1426,4265,56,2,0
2135
-,4,1427,4267,56,2,0
2136
-,2,1428,4269,48,1,0
2137
-,4,1428,4271,56,2,0
2138
-,4,126,4273,56,2,0
2139
-,4,265,4275,56,2,0
2140
-,4,225,4277,56,2,0
2141
-,2,1429,4279,40,1,0
2142
-,4,1429,4281,56,2,0
2143
-,4,1306,4283,56,2,0
2144
-,4,1309,4285,56,2,0
2145
-,4,1308,4287,56,2,0
2146
-,4,1430,4289,56,2,0
2147
-,4,1431,4291,56,2,0
2148
-,4,1432,4293,56,2,0
2149
-,4,1433,4295,56,2,0
2150
-,4,1434,4297,56,2,0
2151
-,4,1435,4299,56,2,0
2152
-,4,122,4301,56,2,0
2153
-,4,168,4303,56,2,0
2154
-,4,283,4305,56,2,0
2155
-,4,1310,4307,56,2,0
2156
-,4,1321,4309,56,2,0
2157
-,4,1311,4311,56,2,0
2158
-,4,1319,4313,56,2,0
2159
-,4,1312,4315,56,2,0
2160
-,4,1313,4317,56,2,0
2161
-,4,1318,4319,56,2,0
2162
-,4,1314,4321,56,2,0
2163
-,4,1276,4323,56,2,0
2164
-,4,1326,4325,56,2,0
2165
-,4,1320,4327,56,2,0
2166
-,4,1315,4329,56,2,0
2167
-,4,1323,4331,56,2,0
2168
-,4,1324,4333,56,2,0
2169
-,4,240,4335,56,2,0
2170
-,4,1317,4337,56,2,0
2171
-,4,1322,4339,56,2,0
2172
-,4,1281,4341,56,2,0
2173
-,2,1436,4343,32,1,0
2174
-,4,1436,4345,56,2,0
2175
-,4,1325,4347,56,4,0
2176
-,1,1,4349,128,5,0
2177
-,4,1437,4351,56,4,0
2178
-,4,1277,4353,56,4,0
2179
-,2,1438,4355,48,1,0
2180
-,4,133,4357,56,2,0
2181
-,2,1439,4359,48,1,0
2182
-,4,1439,4361,56,2,0
2183
-,2,1440,4363,32,1,0
2184
-,4,1440,4365,56,2,0
2185
-,4,257,4367,56,2,0
2186
-,2,1441,4369,32,1,0
2187
-,4,1441,4371,56,2,0
2188
-,4,1431,4373,56,2,0
2189
-,4,1432,4375,56,2,0
2190
-,4,1433,4377,56,2,0
2191
-,2,1442,4379,32,1,0
2192
-,4,1442,4381,56,2,0
2193
-,2,1443,4383,32,1,0
2194
-,4,1443,4385,56,2,0
2195
-,2,1444,4387,32,1,0
2196
-,4,1444,4389,56,2,0
2197
-,2,1445,4391,32,1,0
2198
-,4,1445,4393,56,2,0
2199
-,2,1446,4395,32,1,0
2200
-,4,1446,4397,56,2,0
2201
-,2,1447,4399,32,1,0
2202
-,4,1447,4401,56,2,0
2203
-,2,1448,4403,40,1,0
2204
-,4,1448,4405,56,2,0
2205
-,2,1449,4407,40,1,0
2206
-,4,1449,4409,56,2,0
2207
-,2,1450,4411,32,1,0
2208
-,4,1450,4413,56,2,0
2209
-,2,1451,4415,32,1,0
2210
-,4,1451,4417,56,2,0
2211
-,2,1452,4419,40,1,0
2212
-,4,1452,4421,56,2,0
2213
-,2,1453,4423,40,1,0
2214
-,4,1453,4425,56,2,0
2215
-,2,1454,4427,40,1,0
2216
-,4,1454,4429,56,2,0
2217
-,2,1455,4431,40,1,0
2218
-,4,1455,4433,56,2,0
2219
-,2,1456,4435,40,1,0
2220
-,4,1456,4437,56,2,0
2221
-,2,1457,4439,40,1,0
2222
-,4,1457,4441,56,2,0
2223
-,2,1441,4443,32,1,0
2224
-,2,1458,4445,32,1,0
2225
-,4,1458,4447,56,2,0
2226
-,2,1459,4449,32,1,0
2227
-,4,1459,4451,56,2,0
2228
-,2,1460,4453,32,1,0
2229
-,4,1460,4455,56,2,0
2230
-,4,101,4457,56,2,0
2231
-,4,265,4459,56,2,0
2232
-,2,1461,4461,40,1,0
2233
-,4,1461,4463,56,2,0
2234
-,2,1462,4465,40,1,0
2235
-,4,1462,4467,56,2,0
2236
-,2,1463,4469,40,1,0
2237
-,4,1463,4471,56,2,0
2238
-,2,1464,4473,40,1,0
2239
-,4,1464,4475,56,2,0
2240
-,2,1465,4477,40,1,0
2241
-,2,1466,4479,32,1,0
2242
-,4,1466,4481,56,2,0
2243
-,2,1467,4483,32,1,0
2244
-,4,1467,4485,56,2,0
2245
-,2,1468,4487,32,1,0
2246
-,4,1468,4489,56,2,0
2247
-,2,1469,4491,40,1,0
2248
-,4,1469,4493,56,2,0
2249
-,2,1470,4495,40,1,0
2250
-,4,1470,4497,56,2,0
2251
-,2,1471,4499,32,1,0
2252
-,4,1471,4501,56,2,0
2253
-,2,1472,4503,32,1,0
2254
-,4,1472,4505,56,2,0
2255
-,2,1473,4507,40,1,0
2256
-,4,1473,4509,56,2,0
2257
-,2,1474,4511,40,1,0
2258
-,4,1474,4513,56,2,0
2259
-,2,1475,4515,40,1,0
2260
-,4,1475,4517,56,2,0
2261
-,2,1476,4519,40,1,0
2262
-,4,1476,4521,56,2,0
2263
-,2,1477,4523,32,1,0
2264
-,4,1477,4525,56,2,0
2265
-,2,1478,4527,32,1,0
2266
-,4,1478,4529,56,2,0
2267
-,2,1479,4531,40,1,0
2268
-,4,1479,4533,56,2,0
2269
-,2,1480,4535,40,1,0
2270
-,4,1480,4537,56,2,0
2271
-,2,1481,4539,32,1,0
2272
-,4,1481,4541,56,2,0
2273
-,2,1482,4543,32,1,0
2274
-,4,1482,4545,56,2,0
2275
-,2,1483,4547,48,1,0
2276
-,4,1483,4549,56,2,0
2277
-,2,1484,4551,40,1,0
2278
-,4,1484,4553,56,2,0
2279
-,2,1485,4555,40,1,0
2280
-,4,1485,4557,56,2,0
2281
-,2,1486,4559,40,1,0
2282
-,4,1486,4561,56,2,0
2283
-,2,1487,4563,40,1,0
2284
-,4,1487,4565,56,2,0
2285
-,2,1488,4567,40,1,0
2286
-,4,1488,4569,56,2,0
2287
-,2,1489,4571,40,1,0
2288
-,4,1489,4573,56,2,0
2289
-,2,1490,4575,40,1,0
2290
-,4,1490,4577,56,2,0
2291
-,2,1491,4579,48,1,0
2292
-,4,1491,4581,56,2,0
2293
-,2,1492,4583,48,1,0
2294
-,4,1492,4585,56,2,0
2295
-,2,1493,4587,40,1,0
2296
-,4,1493,4589,56,2,0
2297
-,2,1494,4591,40,1,0
2298
-,4,1494,4593,56,2,0
2299
-,2,1495,4595,40,1,0
2300
-,4,1495,4597,56,2,0
2301
-,2,1496,4599,40,1,0
2302
-,4,1496,4601,56,2,0
2303
-,2,1497,4603,40,1,0
2304
-,4,1497,4605,56,2,0
2305
-,2,1498,4607,40,1,0
2306
-,4,1498,4609,56,2,0
2307
-,4,282,4611,56,2,0
2308
-,2,1499,4613,32,1,0
2309
-,4,1499,4615,56,2,0
2310
-,2,1500,4617,32,1,0
2311
-,4,1500,4619,56,2,0
2312
-,4,264,4621,56,2,0
2313
-,2,1501,4623,48,1,0
2314
-,2,1502,4625,48,1,0
2315
-,4,1503,4627,56,2,0
2316
-,4,1325,4629,56,4,0
2317
-,1,1,4631,1056,63,0
2318
-,2,1504,4633,48,1,0
2319
-,4,1504,4635,56,4,0
2320
-,4,1505,4637,56,4,0
2321
-,2,1506,4639,40,1,0
2322
-,4,1506,4641,56,2,0
2323
-,2,1507,4643,32,1,0
2324
-,4,1508,4645,56,2,0
2325
-,2,1509,4647,40,1,0
2326
-,4,1509,4649,56,4,0
2327
-,4,1504,4651,56,4,0
2328
-,4,1510,4653,56,4,0
2329
-,4,1506,4655,56,2,0
2330
-,4,1508,4657,56,2,0
2331
-,4,1509,4659,56,4,0
2332
-,4,1504,4661,56,4,0
2333
-,4,1511,4663,56,4,0
2334
-,2,1512,4665,40,1,0
2335
-,4,1513,4667,56,2,0
2336
-,4,1509,4669,56,4,0
2337
-,2,1514,4671,32,1,0
2338
-,4,1264,4673,56,3,0
2339
-,1,1,4675,200,10,0
2340
-,4,1514,4677,56,4,0
2341
-,0,291,4679,32,2,0
2342
-,2,1515,4681,40,1,0
2343
-,4,193,4683,56,4,0
2344
-,0,291,4685,32,2,0
2345
-,2,1516,4687,32,1,0
2346
-,2,1517,4689,32,1,0
2347
-,4,1517,4691,56,4,0
2348
-,0,291,4693,32,2,0
2349
-,2,1518,4695,40,1,0
2350
-,2,1519,4697,40,1,0
2351
-,4,1519,4699,56,4,0
2352
-,0,291,4701,32,2,0
2353
-,10,1520,4703,40,3,0
2354
-,4,1521,4705,56,2,0
2355
-,4,1522,4707,56,2,0
2356
-,4,1523,4709,56,2,0
2357
-,4,1524,4711,56,4,0
2358
-,2,1525,4713,32,1,0
2359
-,2,1526,4715,40,1,0
2360
-,2,1527,4717,40,1,0
2361
-,2,1528,4719,48,1,0
2362
-,2,1529,4721,40,1,0
2363
-,2,1530,4723,40,1,0
2364
-,2,1531,4725,40,1,0
2365
-,4,1532,4727,56,4,0
2366
-,4,1533,4729,56,4,0
2367
-,4,1534,4731,56,4,0
2368
-,4,1535,4733,56,4,0
2369
-,4,1536,4735,56,4,0
2370
-,4,1537,4737,56,4,0
2371
-,4,1538,4739,56,4,0
2372
-,4,1539,4741,56,4,0
2373
-,4,1540,4743,56,4,0
2374
-,4,1541,4745,56,4,0
2375
-,4,1542,4747,56,4,0
2376
-,4,1543,4749,56,4,0
2377
-,4,1544,4751,56,4,0
2378
-,4,1545,4753,56,4,0
2379
-,4,1546,4755,56,4,0
2380
-,4,1547,4757,56,4,0
2381
-,4,1548,4759,56,4,0
2382
-,4,1549,4761,56,4,0
2383
-,4,1550,4763,56,4,0
2384
-,4,1551,4765,56,4,0
2385
-,4,1552,4767,56,4,0
2386
-,4,1553,4769,56,4,0
2387
-,4,1554,4771,56,4,0
2388
-,4,1555,4773,56,4,0
2389
-,4,1556,4775,56,4,0
2390
-,4,1557,4777,56,4,0
2391
-,4,1558,4779,56,4,0
2392
-,4,1559,4781,56,4,0
2393
-,4,1560,4783,56,4,0
2394
-,4,1561,4785,56,4,0
2395
-,4,1562,4787,56,4,0
2396
-,4,1563,4789,56,4,0
2397
-,2,1564,4791,40,1,0
2398
-,2,1565,4793,40,1,0
2399
-,2,1566,4795,40,1,0
2400
-,4,1504,4797,56,4,0
2401
-,4,1567,4799,56,2,0
2402
-,2,1568,4801,32,1,0
2403
-,4,1569,4803,56,2,0
2404
-,4,1509,4805,56,4,0
2405
-,4,1570,4807,56,4,0
2406
-,4,1571,4809,56,4,0
2407
-,4,1501,4811,56,4,0
2408
-,4,1502,4813,56,4,0
2409
-,4,129,4815,56,2,0
2410
-,2,1572,4817,40,1,0
2411
-,4,1572,4819,56,2,0
2412
-,2,1573,4821,40,1,0
2413
-,4,1573,4823,56,2,0
2414
-,4,223,4825,56,2,0
2415
-,4,250,4827,56,2,0
2416
-,2,1574,4829,32,1,0
2417
-,4,1574,4831,56,2,0
2418
-,2,1575,4833,32,1,0
2419
-,4,1575,4835,56,2,0
2420
-,2,1576,4837,32,1,0
2421
-,4,1576,4839,56,2,0
2422
-,2,1577,4841,32,1,0
2423
-,4,1577,4843,56,2,0
2424
-,2,1578,4845,32,1,0
2425
-,4,1578,4847,56,2,0
2426
-,2,1579,4849,40,1,0
2427
-,4,1579,4851,56,2,0
2428
-,2,1580,4853,40,1,0
2429
-,4,1580,4855,56,2,0
2430
-,4,1283,4857,56,2,0
2431
-,2,1581,4859,32,1,0
2432
-,4,1581,4861,56,2,0
2433
-,2,1582,4863,40,1,0
2434
-,4,1582,4865,56,2,0
2435
-,2,1583,4867,32,1,0
2436
-,4,1583,4869,56,2,0
2437
-,2,1584,4871,32,1,0
2438
-,4,1584,4873,56,2,0
2439
-,4,1314,4875,56,2,0
2440
-,4,1276,4877,56,2,0
2441
-,2,1585,4879,32,1,0
2442
-,4,1585,4881,56,2,0
2443
-,4,1326,4883,56,2,0
2444
-,2,1586,4885,32,1,0
2445
-,4,1586,4887,56,2,0
2446
-,2,1587,4889,40,1,0
2447
-,4,1587,4891,56,2,0
2448
-,2,1588,4893,32,1,0
2449
-,4,1588,4895,56,2,0
2450
-,2,1589,4897,40,1,0
2451
-,4,1589,4899,56,2,0
2452
-,2,1590,4901,32,1,0
2453
-,4,1590,4903,56,2,0
2454
-,2,1591,4905,32,1,0
2455
-,4,1591,4907,56,2,0
2456
-,2,1592,4909,32,1,0
2457
-,4,1592,4911,56,2,0
2458
-,2,1593,4913,32,1,0
2459
-,4,1593,4915,56,2,0
2460
-,2,1594,4917,32,1,0
2461
-,4,1594,4919,56,2,0
2462
-,4,1317,4921,56,2,0
2463
-,2,1595,4923,32,1,0
2464
-,4,1595,4925,56,2,0
2465
-,2,1596,4927,32,1,0
2466
-,4,1596,4929,56,2,0
2467
-,2,1597,4931,32,1,0
2468
-,4,1597,4933,56,2,0
2469
-,2,1598,4935,32,1,0
2470
-,4,1598,4937,56,2,0
2471
-,2,1522,4939,32,1,0
2472
-,2,1523,4941,40,1,0
2473
-,2,1599,4943,32,1,0
2474
-,4,1599,4945,56,2,0
2475
-,2,1600,4947,40,1,0
2476
-,4,1600,4949,56,2,0
2477
-,4,265,4951,56,2,0
2478
-,2,1601,4953,32,1,0
2479
-,4,1601,4955,56,2,0
2480
-,2,1602,4957,32,1,0
2481
-,4,1603,4959,56,2,0
2482
-,2,1604,4961,40,1,0
2483
-,4,1605,4963,56,2,0
2484
-,2,1606,4965,48,1,0
2485
-,4,1606,4967,56,2,0
2486
-,2,1607,4969,48,1,0
2487
-,4,1607,4971,56,2,0
2488
-,2,1608,4973,40,1,0
2489
-,4,1608,4975,56,2,0
2490
-,2,1609,4977,40,1,0
2491
-,4,1609,4979,56,2,0
2492
-,4,282,4981,56,2,0
2493
-,4,1610,4983,56,2,0
2494
-,4,134,4985,56,2,0
2495
-,4,161,4987,56,2,0
2496
-,4,1306,4989,56,2,0
2497
-,2,1611,4991,32,1,0
2498
-,4,1611,4993,56,2,0
2499
-,2,1612,4995,32,1,0
2500
-,4,1612,4997,56,2,0
2501
-,4,229,4999,56,2,0
2502
-,4,228,5001,56,2,0
2503
-,4,214,5003,56,2,0
2504
-,4,258,5005,56,2,0
2505
-,2,1613,5007,32,1,0
2506
-,4,1613,5009,56,2,0
2507
-,2,1614,5011,32,1,0
2508
-,4,1614,5013,56,2,0
2509
-,4,76,5015,56,2,0
2510
-,4,1306,5017,56,2,0
2511
-,4,237,5019,56,2,0
2512
-,4,150,5021,56,2,0
2513
-,4,57,5023,56,2,0
2514
-,2,1615,5025,32,1,0
2515
-,4,1615,5027,56,2,0
2516
-,4,1348,5029,56,2,0
2517
-,4,122,5031,56,2,0
2518
-,4,1318,5033,56,2,0
2519
-,4,1616,5035,56,2,0
2520
-,4,283,5037,56,2,0
2521
-,2,1617,5039,40,1,0
2522
-,4,1617,5041,56,2,0
2523
-,2,1618,5043,32,1,0
2524
-,4,1459,5045,56,2,0
2525
-,2,1619,5047,40,1,0
2526
-,4,1619,5049,56,2,0
2527
-,2,1618,5051,32,1,0
2528
-,4,1306,5053,56,2,0
2529
-,4,177,5055,56,2,0
2530
-,4,142,5057,56,2,0
2531
-,4,240,5059,56,2,0
2532
-,4,150,5061,56,2,0
2533
-,4,1615,5063,56,2,0
2534
-,4,1348,5065,56,2,0
2535
-,4,122,5067,56,2,0
2536
-,4,1318,5069,56,2,0
2537
-,4,168,5071,56,2,0
2538
-,4,1616,5073,56,2,0
2539
-,4,283,5075,56,2,0
2540
-,2,1620,5077,32,1,0
2541
-,4,1620,5079,56,2,0
2542
-,4,267,5081,56,2,0
2543
-,4,277,5083,56,2,0
2544
-,4,128,5085,56,2,0
2545
-,4,160,5087,56,2,0
2546
-,4,162,5089,56,2,0
2547
-,2,1621,5091,32,1,0
2548
-,4,1621,5093,56,2,0
2549
-,2,1622,5095,32,1,0
2550
-,4,1622,5097,56,2,0
2551
-,2,1623,5099,40,1,0
2552
-,2,1624,5101,40,1,0
2553
-,2,1625,5103,48,1,0
2554
-,2,1626,5105,32,1,0
2555
-,2,1627,5107,32,1,0
2556
-,2,1628,5109,40,1,0
2557
-,2,1629,5111,40,1,0
2558
-,2,1630,5113,40,1,0
2559
-,4,255,5115,56,2,0
2560
-,4,265,5117,56,2,0
2561
-,4,282,5119,56,2,0
2562
-,4,1503,5121,56,2,0
2563
-,2,255,5123,32,1,0
2564
-,4,269,5125,56,2,0
2565
-,2,1631,5127,32,1,0
2566
-,2,1505,5129,40,1,0
2567
-,2,1510,5131,40,1,0
2568
-,2,1567,5133,32,1,0
2569
-,2,1511,5135,40,1,0
2570
-,2,1632,5137,40,1,0
2571
-,4,1504,5139,56,4,0
2572
-,4,1632,5141,56,2,0
2573
-,4,1509,5143,56,4,0
2574
-,2,1633,5145,32,1,0
2575
-,4,1633,5147,56,4,0
2576
-,2,1634,5149,48,1,0
2577
-,4,1634,5151,56,4,0
2578
-,4,284,5153,56,2,0
2579
-,4,1615,5155,56,2,0
2580
-,4,142,5157,56,2,0
2581
-,4,150,5159,56,2,0
2582
-,4,240,5161,56,2,0
2583
-,2,284,5163,32,1,0
2584
-,4,271,5165,56,2,0
2585
-,4,1440,5167,56,2,0
2586
-,2,1635,5169,40,1,0
2587
-,4,1635,5171,56,2,0
2588
-,2,1636,5173,32,1,0
2589
-,4,1636,5175,56,2,0
2590
-,2,1637,5177,40,1,0
2591
-,4,1637,5179,56,2,0
2592
-,2,1638,5181,32,1,0
2593
-,4,1638,5183,56,2,0
2594
-,2,1639,5185,40,1,0
2595
-,2,1640,5187,40,1,0
2596
-,2,1641,5189,48,1,0
2597
-,2,1642,5191,48,1,0
2598
-,2,1643,5193,40,1,0
2599
-,2,1644,5195,40,1,0
2600
-,2,1645,5197,32,1,0
2601
-,4,201,5199,56,2,0
2602
-,2,1646,5201,40,1,0
2603
-,4,1646,5203,56,2,0
2604
-,2,1647,5205,32,1,0
2605
-,4,1647,5207,56,2,0
2606
-,2,1648,5209,40,1,0
2607
-,4,1648,5211,56,2,0
2608
-,4,265,5213,56,2,0
2609
-,4,282,5215,56,2,0
2610
-,4,1325,5217,56,2,0
2611
-,4,222,5219,56,2,0
2612
-,2,1649,5221,32,1,0
2613
-,4,1649,5223,56,2,0
2614
-,4,272,5225,56,2,0
2615
-,4,75,5227,56,2,0
2616
-,2,1650,5229,32,1,0
2617
-,4,107,5231,56,2,0
2618
-,4,108,5233,56,2,0
2619
-,4,61,5235,56,2,0
2620
-,4,96,5237,56,2,0
2621
-,4,142,5239,56,2,0
2622
-,4,143,5241,56,2,0
2623
-,4,145,5243,56,2,0
2624
-,4,150,5245,56,2,0
2625
-,4,164,5247,56,2,0
2626
-,4,209,5249,56,2,0
2627
-,4,213,5251,56,2,0
2628
-,4,240,5253,56,2,0
2629
-,4,242,5255,56,2,0
2630
-,4,270,5257,56,2,0
2631
-,2,1651,5259,40,1,0
2632
-,4,1651,5261,56,2,0
2633
-,4,220,5263,56,2,0
2634
-,2,1652,5265,40,1,0
2635
-,4,1652,5267,56,2,0
2636
-,2,1653,5269,32,1,0
2637
-,2,1654,5271,32,1,0
2638
-,4,1654,5273,56,2,0
2639
-,2,1655,5275,32,1,0
2640
-,4,1655,5277,56,2,0
2641
-,2,1656,5279,32,1,0
2642
-,4,1656,5281,56,2,0
2643
-,2,1657,5283,32,1,0
2644
-,4,1657,5285,56,2,0
2645
-,2,1658,5287,32,1,0
2646
-,4,1658,5289,56,2,0
2647
-,2,1659,5291,32,1,0
2648
-,4,1659,5293,56,2,0
2649
-,2,1660,5295,32,1,0
2650
-,4,1660,5297,56,2,0
2651
-,2,1661,5299,32,1,0
2652
-,4,1661,5301,56,2,0
2653
-,2,1662,5303,32,1,0
2654
-,4,1662,5305,56,2,0
2655
-,2,1663,5307,32,1,0
2656
-,4,1663,5309,56,2,0
2657
-,2,1664,5311,32,1,0
2658
-,4,1664,5313,56,2,0
2659
-,2,1665,5315,32,1,0
2660
-,4,1665,5317,56,2,0
2661
-,2,1666,5319,32,1,0
2662
-,4,1666,5321,56,2,0
2663
-,2,1667,5323,32,1,0
2664
-,4,1667,5325,56,2,0
2665
-,2,1668,5327,32,1,0
2666
-,4,1668,5329,56,2,0
2667
-,2,1669,5331,32,1,0
2668
-,4,1669,5333,56,2,0
2669
-,2,1670,5335,32,1,0
2670
-,4,1670,5337,56,2,0
2671
-,2,1671,5339,32,1,0
2672
-,4,1671,5341,56,2,0
2673
-,2,1672,5343,32,1,0
2674
-,4,1672,5345,56,2,0
2675
-,4,1340,5347,56,2,0
2676
-,2,1673,5349,32,1,0
2677
-,4,1673,5351,56,2,0
2678
-,2,1674,5353,32,1,0
2679
-,4,1674,5355,56,2,0
2680
-,2,1675,5357,32,1,0
2681
-,4,1675,5359,56,2,0
2682
-,2,1521,5361,32,1,0
2683
-,2,1284,5363,32,1,0
2684
-,2,1676,5365,32,1,0
2685
-,4,1676,5367,56,2,0
2686
-,2,1677,5369,32,1,0
2687
-,4,1677,5371,56,2,0
2688
-,2,1678,5373,32,1,0
2689
-,4,1678,5375,56,2,0
2690
-,2,1679,5377,32,1,0
2691
-,4,1679,5379,56,2,0
2692
-,2,1680,5381,32,1,0
2693
-,4,1680,5383,56,2,0
2694
-,2,1681,5385,32,1,0
2695
-,4,1681,5387,56,2,0
2696
-,2,1682,5389,32,1,0
2697
-,4,1682,5391,56,2,0
2698
-,2,1683,5393,32,1,0
2699
-,4,1683,5395,56,2,0
2700
-,2,1684,5397,32,1,0
2701
-,4,1684,5399,56,2,0
2702
-,2,1685,5401,32,1,0
2703
-,4,1685,5403,56,2,0
2704
-,2,1686,5405,32,1,0
2705
-,2,1687,5407,32,1,0
2706
-,2,1688,5409,32,1,0
2707
-,2,1689,5411,32,1,0
2708
-,2,1690,5413,32,1,0
2709
-,2,1691,5415,32,1,0
2710
-,2,1692,5417,32,1,0
2711
-,2,1693,5419,32,1,0
2712
-,2,1653,5421,32,1,0
2713
-,4,1636,5423,56,2,0
2714
-,4,285,5425,56,2,0
2715
-,4,1615,5427,56,2,0
2716
-,4,150,5429,56,2,0
2717
-,4,57,5431,56,2,0
2718
-,2,285,5433,32,1,0
2719
-,4,78,5435,56,2,0
2720
-,4,265,5437,56,2,0
2721
-,4,282,5439,56,2,0
2722
-,4,165,5441,56,2,0
2723
-,4,1306,5443,56,2,0
2724
-,4,67,5445,56,2,0
2725
-,4,1432,5447,56,2,0
2726
-,4,1317,5449,56,2,0
2727
-,4,1694,5451,56,2,0
2728
-,4,1695,5453,56,2,0
2729
-,4,193,5455,56,2,0
2730
-,4,230,5457,56,2,0
2731
-,4,261,5459,56,2,0
2732
-,2,1696,5461,48,1,0
2733
-,4,1,5463,56,2,0
2734
-,4,1,5465,56,2,0
2735
-,4,1697,5467,56,2,0
2736
-,2,1697,5469,40,1,0
2737
-,4,1698,5471,56,2,0
2738
-,4,193,5473,56,2,0
2739
-,4,230,5475,56,2,0
2740
-,4,261,5477,56,2,0
2741
-,2,1699,5479,40,1,0
2742
-,2,1698,5481,48,1,0
2743
-,4,1,5483,56,2,0
2744
-,4,1,5485,56,2,0
2745
-,4,1,5487,56,2,0
2746
-,4,1,5489,56,2,0
2747
-,4,1,5491,56,2,0
2748
-,4,1,5493,56,2,0
2749
-,4,1,5495,56,2,0
2750
-,2,1700,5497,32,1,0
2751
-,4,1700,5499,56,2,0
2752
-,2,1701,5501,32,1,0
2753
-,4,1701,5503,56,2,0
2754
-,4,57,5505,56,2,0
2755
-,4,1598,5507,56,2,0
2756
-,2,1702,5509,32,1,0
2757
-,4,1702,5511,56,2,0
2758
-,2,1703,5513,32,1,0
2759
-,4,1703,5515,56,2,0
2760
-,2,1704,5517,32,1,0
2761
-,4,1704,5519,56,2,0
2762
-,4,381,5521,56,2,0
2763
-,2,1705,5523,40,1,0
2764
-,4,1705,5525,56,2,0
2765
-,2,1706,5527,40,1,0
2766
-,4,1706,5529,56,2,0
2767
-,2,1707,5531,32,1,0
2768
-,4,1707,5533,56,2,0
2769
-,2,1708,5535,32,1,0
2770
-,4,1708,5537,56,2,0
2771
-,2,1709,5539,32,1,0
2772
-,4,1709,5541,56,2,0
2773
-,4,1264,5543,56,2,0
2774
-,4,1264,5545,56,2,0
2775
-,4,1710,5547,56,2,0
2776
-,2,1711,5549,40,1,0
2777
-,4,1711,5551,56,2,0
2778
-,2,1712,5553,40,1,0
2779
-,4,1712,5555,56,2,0
2780
-,2,1713,5557,40,1,0
2781
-,4,1713,5559,56,2,0
2782
-,2,1714,5561,40,1,0
2783
-,4,1714,5563,56,2,0
2784
-,2,1715,5565,40,1,0
2785
-,4,1715,5567,56,2,0
2786
-,2,1716,5569,40,1,0
2787
-,4,1716,5571,56,2,0
2788
-,2,1717,5573,40,1,0
2789
-,4,1717,5575,56,2,0
2790
-,2,1718,5577,40,1,0
2791
-,4,1718,5579,56,2,0
2792
-,2,1719,5581,48,1,0
2793
-,4,1719,5583,56,2,0
2794
-,2,1720,5585,32,1,0
2795
-,4,1720,5587,56,2,0
2796
-,2,1721,5589,40,1,0
2797
-,4,1721,5591,56,2,0
2798
-,2,1722,5593,40,1,0
2799
-,4,1722,5595,56,2,0
2800
-,2,1723,5597,32,1,0
2801
-,4,1723,5599,56,2,0
2802
-,2,1724,5601,32,1,0
2803
-,4,1724,5603,56,2,0
2804
-,2,1725,5605,40,1,0
2805
-,4,1725,5607,56,2,0
2806
-,4,265,5609,56,2,0
2807
-,4,1264,5611,56,2,0
2808
-,2,1726,5613,48,1,0
2809
-,4,1726,5615,56,2,0
2810
-,4,1345,5617,56,2,0
2811
-,2,1727,5619,48,1,0
2812
-,4,1727,5621,56,2,0
2813
-,2,1728,5623,40,1,0
2814
-,4,1,5625,56,2,0
2815
-,2,1729,5627,40,1,0
2816
-,4,1,5629,56,2,0
2817
-,2,1730,5631,40,1,0
2818
-,4,1,5633,56,2,0
2819
-,2,1731,5635,40,1,0
2820
-,4,1264,5637,56,2,0
2821
-,2,1732,5639,40,1,0
2822
-,4,1732,5641,56,4,0
2823
-,1,1,5643,112,4,0
2824
-,4,1340,5645,56,4,0
2825
-,2,1733,5647,48,1,0
2826
-,4,1733,5649,56,4,0
2827
-,2,1734,5651,40,1,0
2828
-,4,1734,5653,56,4,0
2829
-,2,1735,5655,48,1,0
2830
-,4,1735,5657,56,4,0
2831
-,2,1736,5659,40,1,0
2832
-,4,1736,5661,56,4,0
2833
-,2,1737,5663,40,1,0
2834
-,2,1738,5665,48,1,0
2835
-,2,1739,5667,48,1,0
2836
-,4,62,5669,56,2,0
2837
-,4,1740,5671,56,2,0
2838
-,2,1740,5673,48,1,0
2839
-,4,1610,5675,56,2,0
2840
-,4,193,5677,56,2,0
2841
-,4,230,5679,56,2,0
2842
-,4,261,5681,56,2,0
2843
-,2,140,5683,40,1,0
2844
-,4,193,5685,56,2,0
2845
-,4,68,5687,56,2,0
2846
-,4,1,5689,56,2,0
2847
-,4,1,5691,56,2,0
2848
-,4,1,5693,56,2,0
2849
-,4,1,5695,56,2,0
2850
-,4,193,5697,56,2,0
2851
-,4,1741,5699,56,2,0
2852
-,2,1742,5701,32,1,0
2853
-,2,1743,5703,40,1,0
2854
-,2,1744,5705,32,1,0
2855
-,2,1745,5707,40,1,0
2856
-,4,1745,5709,56,4,0
2857
-,2,1746,5711,48,1,0
2858
-,4,1746,5713,56,4,0
2859
-,2,1747,5715,40,1,0
2860
-,2,1275,5717,40,1,0
2861
-,4,1264,5719,56,2,0
2862
-,4,1,5721,56,2,0
2863
-,4,1,5723,56,2,0
2864
-,4,1,5725,56,2,0
2865
-,4,1,5727,56,2,0
2866
-,4,1,5729,56,2,0
2867
-,4,1,5731,56,2,0
2868
-,4,1,5733,56,2,0
2869
-,4,1,5735,56,2,0
2870
-,4,1,5737,56,2,0
2871
-,1,1,5739,80,2,0
2872
-,4,193,5741,56,2,0
2873
-,4,1748,5743,56,2,0
2874
-,4,1306,5745,56,2,0
2875
-,4,243,5747,56,2,0
2876
-,4,1432,5749,56,2,0
2877
-,4,1317,5751,56,2,0
2878
-,4,193,5753,56,2,0
2879
-,2,1749,5755,40,1,0
2880
-,4,1750,5757,56,2,0
2881
-,4,1264,5759,56,2,0
2882
-,4,1264,5761,56,2,0
2883
-,4,1264,5763,56,2,0
2884
-,4,1264,5765,56,2,0
2885
-,4,193,5767,56,2,0
2886
-,4,1264,5769,56,2,0
2887
-,4,1264,5771,56,2,0
2888
-,4,1264,5773,56,2,0
2889
-,4,1264,5775,56,2,0
2890
-,4,1264,5777,56,2,0
2891
-,4,1264,5779,56,2,0
2892
-,4,1264,5781,56,2,0
2893
-,4,1264,5783,56,2,0
2894
-,4,1751,5785,56,4,0
2895
-,4,1752,5787,56,4,0
2896
-,4,1753,5789,56,4,0
2897
-,4,1,5791,56,2,0
2898
-,4,1754,5793,56,4,0
2899
-,4,94,5795,56,2,0
2900
-,4,173,5797,56,2,0
2901
-,4,232,5799,56,2,0
2902
-,1,1755,5801,32,1,0
2903
-,0,28,5803,24,1,0
2904
-,1,1755,5805,24,1,0
2905
-,0,28,5807,24,1,0
2906
-,1,1755,5809,24,1,0
2907
-,0,28,5811,24,1,0
2908
-,1,1755,5813,24,1,0
2909
-,0,28,5815,24,1,0
2910
-,1,1755,5817,32,1,0
2911
-,0,28,5819,24,1,0
2912
-,1,1755,5821,32,1,0
2913
-,0,28,5823,24,1,0
2914
-,1,1755,5825,32,1,0
2915
-,0,28,5827,24,1,0
2916
-,1,1755,5829,24,1,0
2917
-,0,28,5831,24,1,0
2918
-,1,1755,5833,24,1,0
2919
-,0,28,5835,24,1,0
2920
-,1,1755,5837,24,1,0
2921
-,0,28,5839,24,1,0
2922
-,1,1755,5841,24,1,0
2923
-,0,28,5843,24,1,0
2924
-,1,1755,5845,48,1,0
2925
-,0,28,5847,24,1,0
2926
-,1,1755,5849,24,1,0
2927
-,0,28,5851,24,1,0
2928
-,1,1755,5853,56,1,0
2929
-,0,28,5855,24,1,0
2930
-,1,1755,5857,48,1,0
2931
-,0,28,5859,24,1,0
2932
-,1,1755,5861,24,1,0
2933
-,0,28,5863,24,1,0
2934
-,1,1755,5865,24,1,0
2935
-,0,28,5867,24,1,0
2936
-,1,1755,5869,24,1,0
2937
-,0,28,5871,24,1,0
2938
-,1,1755,5873,24,1,0
2939
-,0,28,5875,24,1,0
2940
-,1,1755,5877,24,1,0
2941
-,0,28,5879,24,1,0
2942
-,1,1755,5881,24,1,0
2943
-,0,28,5883,24,1,0
2944
-,1,1755,5885,24,1,0
2945
-,0,28,5887,24,1,0
2946
-,1,1755,5889,56,1,0
2947
-,0,28,5891,24,1,0
2948
-,1,1755,5893,48,1,0
2949
-,0,28,5895,24,1,0
2950
-,1,1755,5897,32,1,0
2951
-,0,28,5899,24,1,0
2952
-,1,1755,5901,32,1,0
2953
-,0,28,5903,24,1,0
2954
-,1,1755,5905,32,1,0
2955
-,0,28,5907,24,1,0
2956
-,1,1755,5909,24,1,0
2957
-,0,28,5911,24,1,0
2958
-,1,1755,5913,40,1,0
2959
-,0,28,5915,24,1,0
2960
-,1,1755,5917,32,1,0
2961
-,0,28,5919,24,1,0
2962
-,1,1755,5921,24,1,0
2963
-,0,28,5923,24,1,0
2964
-,1,1755,5925,24,1,0
2965
-,0,28,5927,24,1,0
2966
-,1,1755,5929,32,1,0
2967
-,0,28,5931,24,1,0
2968
-,1,1755,5933,48,1,0
2969
-,0,28,5935,24,1,0
2970
-,1,1755,5937,56,1,0
2971
-,0,28,5939,24,1,0
2972
-,1,1755,5941,48,1,0
2973
-,0,28,5943,24,1,0
2974
-,1,1755,5945,48,1,0
2975
-,0,28,5947,24,1,0
2976
-,1,1755,5949,24,1,0
2977
-,0,28,5951,24,1,0
2978
-,1,1755,5953,24,1,0
2979
-,0,28,5955,24,1,0
2980
-,1,1755,5957,40,1,0
2981
-,0,28,5959,24,1,0
2982
-,1,1755,5961,24,1,0
2983
-,0,28,5963,24,1,0
2984
-,1,1755,5965,24,1,0
2985
-,0,28,5967,24,1,0
2986
-,1,1755,5969,40,1,0
2987
-,0,28,5971,24,1,0
2988
-,1,1755,5973,24,1,0
2989
-,0,28,5975,24,1,0
2990
-,1,1755,5977,24,1,0
2991
-,0,28,5979,24,1,0
2992
-,1,1755,5981,24,1,0
2993
-,0,28,5983,24,1,0
2994
-,1,1755,5985,24,1,0
2995
-,0,28,5987,24,1,0
2996
-,1,1755,5989,24,1,0
2997
-,0,28,5991,24,1,0
2998
-,1,1755,5993,48,1,0
2999
-,0,28,5995,24,1,0
3000
-,1,1755,5997,24,1,0
3001
-,0,28,5999,24,1,0
3002
-,1,1755,6001,24,1,0
3003
-,0,28,6003,24,1,0
3004
-,1,1755,6005,24,1,0
3005
-,0,28,6007,24,1,0
3006
-,1,1755,6009,72,1,0
3007
-,0,28,6011,24,1,0
3008
-,1,1755,6013,16,1,0
3009
-,0,28,6015,24,1,0
3010
-,1,1755,6017,48,1,0
3011
-,0,28,6019,24,1,0
3012
-,1,1755,6021,24,1,0
3013
-,0,28,6023,24,1,0
3014
-,1,1755,6025,24,1,0
3015
-,0,28,6027,24,1,0
3016
-,1,1755,6029,24,1,0
3017
-,0,28,6031,24,1,0
3018
-,1,1755,6033,24,1,0
3019
-,0,28,6035,24,1,0
3020
-,1,1755,6037,24,1,0
3021
-,0,28,6039,24,1,0
3022
-,1,1755,6041,24,1,0
3023
-,0,28,6043,24,1,0
3024
-,1,1755,6045,24,1,0
3025
-,0,28,6047,24,1,0
3026
-,1,1755,6049,24,1,0
3027
-,0,28,6051,24,1,0
3028
-,1,1755,6053,24,1,0
3029
-,0,28,6055,24,1,0
3030
-,1,1755,6057,56,1,0
3031
-,0,28,6059,24,1,0
3032
-,1,1755,6061,24,1,0
3033
-,0,28,6063,24,1,0
3034
-,1,1755,6065,32,1,0
3035
-,0,28,6067,24,1,0
3036
-,1,1755,6069,24,1,0
3037
-,0,28,6071,24,1,0
3038
-,1,1755,6073,24,1,0
3039
-,0,28,6075,24,1,0
3040
-,1,1755,6077,16,1,0
3041
-,0,28,6079,24,1,0
3042
-,1,1755,6081,16,1,0
3043
-,0,28,6083,24,1,0
3044
-,1,1755,6085,16,1,0
3045
-,0,28,6087,24,1,0
3046
-,1,1755,6089,16,1,0
3047
-,0,28,6091,24,1,0
3048
-,1,1755,6093,24,1,0
3049
-,0,28,6095,24,1,0
3050
-,1,1755,6097,24,1,0
3051
-,0,28,6099,24,1,0
3052
-,1,1755,6101,24,1,0
3053
-,0,28,6103,24,1,0
3054
-,1,1755,6105,24,1,0
3055
-,0,28,6107,24,1,0
3056
-,1,1755,6109,24,1,0
3057
-,0,28,6111,24,1,0
3058
-,1,1755,6113,24,1,0
3059
-,0,28,6115,24,1,0
3060
-,1,1755,6117,48,1,0
3061
-,0,28,6119,24,1,0
3062
-,1,1755,6121,40,1,0
3063
-,0,28,6123,24,1,0
3064
-,1,1755,6125,40,1,0
3065
-,0,28,6127,24,1,0
3066
-,1,1755,6129,32,1,0
3067
-,0,28,6131,24,1,0
3068
-,1,1755,6133,40,1,0
3069
-,0,28,6135,24,1,0
3070
-,1,1755,6137,24,1,0
3071
-,0,28,6139,24,1,0
3072
-,1,1755,6141,24,1,0
3073
-,0,28,6143,24,1,0
3074
-,1,1755,6145,40,1,0
3075
-,0,28,6147,24,1,0
3076
-,2,1756,6149,32,1,0
3077
-,1,1755,6151,24,1,0
3078
-,0,28,6153,24,1,0
3079
-,1,1755,6155,24,1,0
3080
-,0,28,6157,24,1,0
3081
-,1,1755,6159,24,1,0
3082
-,0,28,6161,24,1,0
3083
-,1,1755,6163,24,1,0
3084
-,0,28,6165,24,1,0
3085
-,1,1755,6167,24,1,0
3086
-,0,28,6169,24,1,0
3087
-,1,1755,6171,24,1,0
3088
-,0,28,6173,24,1,0
3089
-,1,1755,6175,24,1,0
3090
-,0,28,6177,24,1,0
3091
-,1,1755,6179,24,1,0
3092
-,0,28,6181,24,1,0
3093
-,1,1755,6183,32,1,0
3094
-,0,28,6185,24,1,0
3095
-,1,1755,6187,32,1,0
3096
-,0,28,6189,24,1,0
3097
-,1,1755,6191,32,1,0
3098
-,0,28,6193,24,1,0
3099
-,1,1755,6195,32,1,0
3100
-,0,28,6197,24,1,0
3101
-,1,1755,6199,32,1,0
3102
-,0,28,6201,24,1,0
3103
-,1,1755,6203,24,1,0
3104
-,0,28,6205,24,1,0
3105
-,1,1755,6207,32,1,0
3106
-,0,28,6209,24,1,0
3107
-,1,1755,6211,24,1,0
3108
-,0,28,6213,24,1,0
3109
-,1,1755,6215,24,1,0
3110
-,0,28,6217,24,1,0
3111
-,1,1755,6219,32,1,0
3112
-,0,28,6221,24,1,0
3113
-,7,54,6223,16,1,0
3114
-,1,1755,6225,16,1,0
3115
-,0,28,6227,24,1,0
3116
-,1,1755,6229,24,1,0
3117
-,0,28,6231,24,1,0
3118
-,1,1755,6233,24,1,0
3119
-,0,28,6235,24,1,0
3120
-,1,1755,6237,128,1,0
3121
-,0,28,6239,24,1,0
3122
-,1,1755,6241,64,1,0
3123
-,0,28,6243,24,1,0
3124
-,1,1755,6245,24,1,0
3125
-,0,28,6247,24,1,0
3126
-,1,1755,6249,224,1,0
3127
-,0,28,6251,24,1,0
3128
-,1,1755,6253,24,1,0
3129
-,0,28,6255,24,1,0
3130
-,1,1755,6257,24,1,0
3131
-,0,28,6259,24,1,0
3132
-,1,1755,6261,24,1,0
3133
-,0,28,6263,24,1,0
3134
-,1,1755,6265,24,1,0
3135
-,0,28,6267,24,1,0
3136
-,1,1755,6269,16,1,0
3137
-,0,28,6271,24,1,0
3138
-,1,1755,6273,16,1,0
3139
-,0,28,6275,24,1,0
3140
-,1,1755,6277,48,1,0
3141
-,0,28,6279,24,1,0
3142
-,1,1755,6281,24,1,0
3143
-,0,28,6283,24,1,0
3144
-,1,1755,6285,96,1,0
3145
-,0,28,6287,24,1,0
3146
-,1,1755,6289,24,1,0
3147
-,0,28,6291,24,1,0
3148
-,1,1755,6293,48,1,0
3149
-,0,28,6295,24,1,0
3150
-,1,1755,6297,64,1,0
3151
-,0,28,6299,24,1,0
3152
-,1,1755,6301,40,1,0
3153
-,0,28,6303,24,1,0
3154
-,1,1755,6305,40,1,0
3155
-,0,28,6307,24,1,0
3156
-,1,1755,6309,24,1,0
3157
-,0,28,6311,24,1,0
3158
-,1,1755,6313,24,1,0
3159
-,0,28,6315,24,1,0
3160
-,1,1755,6317,24,1,0
3161
-,0,28,6319,24,1,0
3162
-,1,1755,6321,24,1,0
3163
-,0,28,6323,24,1,0
3164
-,1,1755,6325,24,1,0
3165
-,0,28,6327,24,1,0
3166
-,1,1755,6329,24,1,0
3167
-,0,28,6331,24,1,0
3168
-,1,1,6333,24,1,0
3169
-,0,28,6335,24,1,0
3170
-,1,1755,6337,24,1,0
3171
-,0,28,6339,24,1,0
3172
-,1,1755,6341,48,1,0
3173
-,0,28,6343,24,1,0
3174
-,1,1755,6345,24,1,0
3175
-,0,28,6347,24,1,0
3176
-,1,1755,6349,24,1,0
3177
-,0,28,6351,24,1,0
3178
-,1,1755,6353,24,1,0
3179
-,0,28,6355,24,1,0
3180
-,1,1755,6357,24,1,0
3181
-,0,28,6359,24,1,0
3182
-,1,1755,6361,24,1,0
3183
-,0,28,6363,24,1,0
3184
-,1,1755,6365,24,1,0
3185
-,0,28,6367,24,1,0
3186
-,1,1755,6369,24,1,0
3187
-,0,28,6371,24,1,0
3188
-,1,1755,6373,24,1,0
3189
-,0,28,6375,24,1,0
3190
-,1,1755,6377,40,1,0
3191
-,0,28,6379,24,1,0
3192
-,1,1755,6381,32,1,0
3193
-,0,28,6383,24,1,0
3194
-,1,1755,6385,40,1,0
3195
-,0,28,6387,24,1,0
3196
-,1,1755,6389,32,1,0
3197
-,0,28,6391,24,1,0
3198
-,1,1755,6393,40,1,0
3199
-,0,28,6395,24,1,0
3200
-,1,1755,6397,32,1,0
3201
-,0,28,6399,24,1,0
3202
-,1,1755,6401,40,1,0
3203
-,0,28,6403,24,1,0
3204
-,1,1755,6405,32,1,0
3205
-,0,28,6407,24,1,0
3206
-,1,1755,6409,24,1,0
3207
-,0,28,6411,24,1,0
3208
-,1,1755,6413,24,1,0
3209
-,0,28,6415,24,1,0
3210
-,1,1755,6417,24,1,0
3211
-,0,28,6419,24,1,0
3212
-,1,1755,6421,24,1,0
3213
-,0,28,6423,24,1,0
3214
-,1,1755,6425,24,1,0
3215
-,0,28,6427,24,1,0
3216
-,1,1755,6429,32,1,0
3217
-,0,28,6431,24,1,0
3218
-,1,1755,6433,32,1,0
3219
-,0,28,6435,24,1,0
3220
-,1,1755,6437,24,1,0
3221
-,0,28,6439,24,1,0
3222
-,1,1755,6441,24,1,0
3223
-,0,28,6443,24,1,0
3224
-,1,1755,6445,24,1,0
3225
-,0,28,6447,24,1,0
3226
-,1,1,6449,96,1,0
3227
-,0,28,6451,24,1,0
3228
-,1,1,6453,48,1,0
3229
-,0,28,6455,24,1,0
3230
-,1,1755,6457,32,1,0
3231
-,0,28,6459,24,1,0
3232
-,1,1755,6461,16,1,0
3233
-,0,28,6463,24,1,0
3234
-,1,1755,6465,16,1,0
3235
-,0,28,6467,24,1,0
3236
-,1,1755,6469,32,1,0
3237
-,0,28,6471,24,1,0
3238
-,1,1755,6473,32,1,0
3239
-,0,28,6475,24,1,0
3240
-,1,1755,6477,16,1,0
3241
-,0,28,6479,24,1,0
3242
-,1,1755,6481,16,1,0
3243
-,0,28,6483,24,1,0
3244
-,1,1755,6485,32,1,0
3245
-,0,28,6487,24,1,0
3246
-,1,1755,6489,24,1,0
3247
-,0,28,6491,24,1,0
3248
-,1,1755,6493,40,1,0
3249
-,0,28,6495,24,1,0
3250
-,1,1755,6497,24,1,0
3251
-,0,28,6499,24,1,0
3252
-,1,1755,6501,64,1,0
3253
-,0,28,6503,24,1,0
3254
-,1,1755,6505,24,1,0
3255
-,0,28,6507,24,1,0
3256
-,1,1755,6509,48,1,0
3257
-,0,28,6511,24,1,0
3258
-,1,1755,6513,104,1,0
3259
-,0,28,6515,24,1,0
3260
-,1,1755,6517,24,1,0
3261
-,0,28,6519,24,1,0
3262
-,1,1755,6521,24,1,0
3263
-,0,28,6523,24,1,0
3264
-,1,1755,6525,56,1,0
3265
-,0,28,6527,24,1,0
3266
-,1,1755,6529,56,1,0
3267
-,0,28,6531,24,1,0
3268
-,1,1755,6533,56,1,0
3269
-,0,28,6535,24,1,0
3270
-,1,1755,6537,24,1,0
3271
-,0,28,6539,24,1,0
3272
-,1,1755,6541,40,1,0
3273
-,0,28,6543,24,1,0
3274
-,1,1,6545,56,1,0
3275
-,0,28,6547,24,1,0
3276
-,2,1757,6549,48,1,0
3277
-,1,1755,6551,56,1,0
3278
-,0,28,6553,24,1,0
3279
-,1,1755,6555,24,1,0
3280
-,0,28,6557,24,1,0
3281
-,1,1755,6559,40,1,0
3282
-,0,28,6561,24,1,0
3283
-,1,1,6563,56,1,0
3284
-,0,28,6565,24,1,0
3285
-,2,1758,6567,48,1,0
3286
-,1,1755,6569,80,1,0
3287
-,0,28,6571,24,1,0
3288
-,1,1755,6573,112,1,0
3289
-,0,28,6575,24,1,0
3290
-,2,1759,6577,48,1,0
3291
-,1,1755,6579,24,1,0
3292
-,0,28,6581,24,1,0
3293
-,1,1755,6583,40,1,0
3294
-,0,28,6585,24,1,0
3295
-,1,1755,6587,56,1,0
3296
-,0,28,6589,24,1,0
3297
-,1,1755,6591,24,1,0
3298
-,0,28,6593,24,1,0
3299
-,1,1755,6595,32,1,0
3300
-,0,28,6597,24,1,0
3301
-,1,1755,6599,104,1,0
3302
-,0,28,6601,24,1,0
3303
-,2,1760,6603,48,1,0
3304
-,1,1755,6605,56,1,0
3305
-,0,28,6607,24,1,0
3306
-,1,1755,6609,24,1,0
3307
-,0,28,6611,24,1,0
3308
-,1,1755,6613,24,1,0
3309
-,0,28,6615,24,1,0
3310
-,1,1755,6617,24,1,0
3311
-,0,28,6619,24,1,0
3312
-,1,1755,6621,56,1,0
3313
-,0,28,6623,24,1,0
3314
-,2,1761,6625,48,1,0
3315
-,1,1755,6627,56,1,0
3316
-,0,28,6629,24,1,0
3317
-,1,1755,6631,24,1,0
3318
-,0,28,6633,24,1,0
3319
-,1,1755,6635,24,1,0
3320
-,0,28,6637,24,1,0
3321
-,1,1755,6639,24,1,0
3322
-,0,28,6641,24,1,0
3323
-,1,1,6643,56,1,0
3324
-,0,28,6645,24,1,0
3325
-,2,1762,6647,56,1,0
3326
-,1,1,6649,32,1,0
3327
-,0,28,6651,24,1,0
3328
-,1,1755,6653,32,1,0
3329
-,0,28,6655,24,1,0
3330
-,1,1755,6657,24,1,0
3331
-,0,28,6659,24,1,0
3332
-,1,1755,6661,24,1,0
3333
-,0,28,6663,24,1,0
3334
-,1,1755,6665,32,1,0
3335
-,0,28,6667,24,1,0
3336
-,1,1,6669,56,1,0
3337
-,0,28,6671,24,1,0
3338
-,2,1763,6673,48,1,0
3339
-,1,1755,6675,32,1,0
3340
-,0,28,6677,24,1,0
3341
-,1,1755,6679,24,1,0
3342
-,0,28,6681,24,1,0
3343
-,1,1755,6683,24,1,0
3344
-,0,28,6685,24,1,0
3345
-,1,1755,6687,32,1,0
3346
-,0,28,6689,24,1,0
3347
-,1,1,6691,56,1,0
3348
-,0,28,6693,24,1,0
3349
-,2,1764,6695,56,1,0
3350
-,1,1,6697,32,1,0
3351
-,0,28,6699,24,1,0
3352
-,1,1755,6701,32,1,0
3353
-,0,28,6703,24,1,0
3354
-,1,1755,6705,96,1,0
3355
-,0,28,6707,24,1,0
3356
-,2,1765,6709,56,1,0
3357
-,7,54,6711,16,1,0
3358
-,7,54,6713,16,1,0
3359
-,1,1755,6715,80,1,0
3360
-,0,28,6717,24,1,0
3361
-,7,54,6719,16,1,0
3362
-,1,1755,6721,80,1,0
3363
-,0,28,6723,24,1,0
3364
-,7,54,6725,16,1,0
3365
-,1,1,6727,32,1,0
3366
-,0,28,6729,24,1,0
3367
-,1,1,6731,40,1,0
3368
-,0,28,6733,24,1,0
3369
-,1,1755,6735,24,1,0
3370
-,0,28,6737,24,1,0
3371
-,1,1755,6739,24,1,0
3372
-,0,28,6741,24,1,0
3373
-,1,1755,6743,24,1,0
3374
-,0,28,6745,24,1,0
3375
-,1,1755,6747,24,1,0
3376
-,0,28,6749,24,1,0
3377
-,1,1755,6751,24,1,0
3378
-,0,28,6753,24,1,0
3379
-,1,1,6755,56,1,0
3380
-,0,28,6757,24,1,0
3381
-,1,1,6759,56,1,0
3382
-,0,28,6761,24,1,0
3383
-,1,1,6763,56,1,0
3384
-,0,28,6765,24,1,0
3385
-,1,1,6767,56,1,0
3386
-,0,28,6769,24,1,0
3387
-,1,1,6771,24,1,0
3388
-,0,28,6773,24,1,0
3389
-,1,1,6775,24,1,0
3390
-,0,28,6777,24,1,0
3391
-,1,1,6779,40,1,0
3392
-,0,28,6781,24,1,0
3393
-,1,1,6783,32,1,0
3394
-,0,28,6785,24,1,0
3395
-,1,1755,6787,24,1,0
3396
-,0,28,6789,24,1,0
3397
-,1,1755,6791,24,1,0
3398
-,0,28,6793,24,1,0
3399
-,1,1755,6795,24,1,0
3400
-,0,28,6797,24,1,0
3401
-,1,1755,6799,24,1,0
3402
-,0,28,6801,24,1,0
3403
-,1,1755,6803,24,1,0
3404
-,0,28,6805,24,1,0
3405
-,1,1755,6807,24,1,0
3406
-,0,28,6809,24,1,0
3407
-,1,1755,6811,24,1,0
3408
-,0,28,6813,24,1,0
3409
-,1,1,6815,32,1,0
3410
-,0,28,6817,24,1,0
3411
-,2,1766,6819,56,1,0
3412
-,1,1,6821,24,1,0
3413
-,0,28,6823,24,1,0
3414
-,2,1767,6825,56,1,0
3415
-,1,1755,6827,24,1,0
3416
-,0,28,6829,24,1,0
3417
-,1,1755,6831,24,1,0
3418
-,0,28,6833,24,1,0
3419
-,1,1755,6835,24,1,0
3420
-,0,28,6837,24,1,0
3421
-,1,1755,6839,24,1,0
3422
-,0,28,6841,24,1,0
3423
-,1,1755,6843,24,1,0
3424
-,0,28,6845,24,1,0
3425
-,1,1755,6847,24,1,0
3426
-,0,28,6849,24,1,0
3427
-,1,1755,6851,24,1,0
3428
-,0,28,6853,24,1,0
3429
-,1,1755,6855,24,1,0
3430
-,0,28,6857,24,1,0
3431
-,1,1755,6859,24,1,0
3432
-,0,28,6861,24,1,0
3433
-,1,1755,6863,24,1,0
3434
-,0,28,6865,24,1,0
3435
-,1,1755,6867,24,1,0
3436
-,0,28,6869,24,1,0
3437
-,1,1755,6871,24,1,0
3438
-,0,28,6873,24,1,0
3439
-,1,1755,6875,24,1,0
3440
-,0,28,6877,24,1,0
3441
-,1,1755,6879,24,1,0
3442
-,0,28,6881,24,1,0
3443
-,1,1755,6883,24,1,0
3444
-,0,28,6885,24,1,0
3445
-,1,1755,6887,24,1,0
3446
-,0,28,6889,24,1,0
3447
-,1,1755,6891,24,1,0
3448
-,0,28,6893,24,1,0
3449
-,1,1755,6895,24,1,0
3450
-,0,28,6897,24,1,0
3451
-,1,1755,6899,24,1,0
3452
-,0,28,6901,24,1,0
3453
-,1,1755,6903,24,1,0
3454
-,0,28,6905,24,1,0
3455
-,1,1755,6907,24,1,0
3456
-,0,28,6909,24,1,0
3457
-,1,1755,6911,24,1,0
3458
-,0,28,6913,24,1,0
3459
-,1,1755,6915,24,1,0
3460
-,0,28,6917,24,1,0
3461
-,1,1755,6919,24,1,0
3462
-,0,28,6921,24,1,0
3463
-,1,1755,6923,24,1,0
3464
-,0,28,6925,24,1,0
3465
-,1,1755,6927,24,1,0
3466
-,0,28,6929,24,1,0
3467
-,1,1755,6931,24,1,0
3468
-,0,28,6933,24,1,0
3469
-,1,1755,6935,24,1,0
3470
-,0,28,6937,24,1,0
3471
-,1,1755,6939,24,1,0
3472
-,0,28,6941,24,1,0
3473
-,1,1755,6943,24,1,0
3474
-,0,28,6945,24,1,0
3475
-,1,1755,6947,24,1,0
3476
-,0,28,6949,24,1,0
3477
-,1,1755,6951,24,1,0
3478
-,0,28,6953,24,1,0
3479
-,1,1,6955,32,1,0
3480
-,0,28,6957,24,1,0
3481
-,1,1755,6959,24,1,0
3482
-,0,28,6961,24,1,0
3483
-,1,1755,6963,24,1,0
3484
-,0,28,6965,24,1,0
3485
-,1,1755,6967,24,1,0
3486
-,0,28,6969,24,1,0
3487
-,1,1755,6971,24,1,0
3488
-,0,28,6973,24,1,0
3489
-,1,1755,6975,24,1,0
3490
-,0,28,6977,24,1,0
3491
-,1,1755,6979,24,1,0
3492
-,0,28,6981,24,1,0
3493
-,1,1755,6983,24,1,0
3494
-,0,28,6985,24,1,0
3495
-,1,1755,6987,24,1,0
3496
-,0,28,6989,24,1,0
3497
-,1,1,6991,32,1,0
3498
-,0,28,6993,24,1,0
3499
-,1,1,6995,32,1,0
3500
-,0,28,6997,24,1,0
3501
-,1,1,6999,32,1,0
3502
-,0,28,7001,24,1,0
3503
-,1,1,7003,32,1,0
3504
-,0,28,7005,24,1,0
3505
-,1,1755,7007,32,1,0
3506
-,0,28,7009,24,1,0
3507
-,1,1,7011,32,1,0
3508
-,0,28,7013,24,1,0
3509
-,1,1,7015,32,1,0
3510
-,0,28,7017,24,1,0
3511
-,1,1,7019,32,1,0
3512
-,0,28,7021,24,1,0
3513
-,1,1755,7023,24,1,0
3514
-,0,28,7025,24,1,0
3515
-,1,1,7027,32,1,0
3516
-,0,28,7029,24,1,0
3517
-,1,1,7031,32,1,0
3518
-,0,28,7033,24,1,0
3519
-,1,1,7035,32,1,0
3520
-,0,28,7037,24,1,0
3521
-,1,1,7039,32,1,0
3522
-,0,28,7041,24,1,0
3523
-,1,1,7043,32,1,0
3524
-,0,28,7045,24,1,0
3525
-,1,1,7047,32,1,0
3526
-,0,28,7049,24,1,0
3527
-,1,1,7051,32,1,0
3528
-,0,28,7053,24,1,0
3529
-,1,1,7055,32,1,0
3530
-,0,28,7057,24,1,0
3531
-,1,1,7059,32,1,0
3532
-,0,28,7061,24,1,0
3533
-,1,1755,7063,24,1,0
3534
-,0,28,7065,24,1,0
3535
-,1,1755,7067,32,1,0
3536
-,0,28,7069,24,1,0
3537
-,2,1768,7071,56,1,0
3538
-,1,1755,7073,24,1,0
3539
-,0,28,7075,24,1,0
3540
-,1,1755,7077,24,1,0
3541
-,0,28,7079,24,1,0
3542
-,1,1755,7081,24,1,0
3543
-,0,28,7083,24,1,0
3544
-,1,1755,7085,24,1,0
3545
-,0,28,7087,24,1,0
3546
-,1,1755,7089,24,1,0
3547
-,0,28,7091,24,1,0
3548
-,1,1755,7093,24,1,0
3549
-,0,28,7095,24,1,0
3550
-,1,1755,7097,24,1,0
3551
-,0,28,7099,24,1,0
3552
-,1,1755,7101,24,1,0
3553
-,0,28,7103,24,1,0
3554
-,1,1755,7105,24,1,0
3555
-,0,28,7107,24,1,0
3556
-,1,1755,7109,24,1,0
3557
-,0,28,7111,24,1,0
3558
-,1,1755,7113,24,1,0
3559
-,0,28,7115,24,1,0
3560
-,1,1755,7117,24,1,0
3561
-,0,28,7119,24,1,0
3562
-,1,1755,7121,24,1,0
3563
-,0,28,7123,24,1,0
3564
-,1,1755,7125,24,1,0
3565
-,0,28,7127,24,1,0
3566
-,1,1755,7129,24,1,0
3567
-,0,28,7131,24,1,0
3568
-,1,1755,7133,24,1,0
3569
-,0,28,7135,24,1,0
3570
-,1,1755,7137,24,1,0
3571
-,0,28,7139,24,1,0
3572
-,1,1755,7141,24,1,0
3573
-,0,28,7143,24,1,0
3574
-,1,1755,7145,24,1,0
3575
-,0,28,7147,24,1,0
3576
-,1,1755,7149,24,1,0
3577
-,0,28,7151,24,1,0
3578
-,1,1755,7153,24,1,0
3579
-,0,28,7155,24,1,0
3580
-,1,1755,7157,24,1,0
3581
-,0,28,7159,24,1,0
3582
-,1,1755,7161,24,1,0
3583
-,0,28,7163,24,1,0
3584
-,1,1755,7165,24,1,0
3585
-,0,28,7167,24,1,0
3586
-,1,1755,7169,24,1,0
3587
-,0,28,7171,24,1,0
3588
-,1,1755,7173,24,1,0
3589
-,0,28,7175,24,1,0
3590
-,1,1755,7177,24,1,0
3591
-,0,28,7179,24,1,0
3592
-,1,1755,7181,24,1,0
3593
-,0,28,7183,24,1,0
3594
-,1,1755,7185,24,1,0
3595
-,0,28,7187,24,1,0
3596
-,1,1755,7189,24,1,0
3597
-,0,28,7191,24,1,0
3598
-,1,1755,7193,24,1,0
3599
-,0,28,7195,24,1,0
3600
-,1,1755,7197,24,1,0
3601
-,0,28,7199,24,1,0
3602
-,1,1755,7201,24,1,0
3603
-,0,28,7203,24,1,0
3604
-,1,1755,7205,24,1,0
3605
-,0,28,7207,24,1,0
3606
-,1,1755,7209,24,1,0
3607
-,0,28,7211,24,1,0
3608
-,1,1755,7213,24,1,0
3609
-,0,28,7215,24,1,0
3610
-,1,1755,7217,24,1,0
3611
-,0,28,7219,24,1,0
3612
-,1,1755,7221,40,1,0
3613
-,0,28,7223,24,1,0
3614
-,1,1755,7225,24,1,0
3615
-,0,28,7227,24,1,0
3616
-,1,1755,7229,32,1,0
3617
-,0,28,7231,24,1,0
3618
-,1,1755,7233,24,1,0
3619
-,0,28,7235,24,1,0
3620
-,1,1755,7237,24,1,0
3621
-,0,28,7239,24,1,0
3622
-,1,1755,7241,40,1,0
3623
-,0,28,7243,24,1,0
3624
-,1,1755,7245,24,1,0
3625
-,0,28,7247,24,1,0
3626
-,1,1,7249,40,1,0
3627
-,0,28,7251,24,1,0
3628
-,2,1769,7253,56,1,0
3629
-,1,1,7255,40,1,0
3630
-,0,28,7257,24,1,0
3631
-,2,1770,7259,56,1,0
3632
-,1,1,7261,40,1,0
3633
-,0,28,7263,24,1,0
3634
-,2,1771,7265,56,1,0
3635
-,1,1755,7267,24,1,0
3636
-,0,28,7269,24,1,0
3637
-,1,1755,7271,24,1,0
3638
-,0,28,7273,24,1,0
3639
-,1,1755,7275,24,1,0
3640
-,0,28,7277,24,1,0
3641
-,1,1755,7279,24,1,0
3642
-,0,28,7281,24,1,0
3643
-,1,1755,7283,24,1,0
3644
-,0,28,7285,24,1,0
3645
-,1,1755,7287,24,1,0
3646
-,0,28,7289,24,1,0
3647
-,1,1755,7291,24,1,0
3648
-,0,28,7293,24,1,0
3649
-,1,1755,7295,24,1,0
3650
-,0,28,7297,24,1,0
3651
-,1,1755,7299,24,1,0
3652
-,0,28,7301,24,1,0
3653
-,1,1755,7303,24,1,0
3654
-,0,28,7305,24,1,0
3655
-,1,1755,7307,24,1,0
3656
-,0,28,7309,24,1,0
3657
-,1,1755,7311,24,1,0
3658
-,0,28,7313,24,1,0
3659
-,1,1755,7315,72,1,0
3660
-,0,28,7317,24,1,0
3661
-,1,1755,7319,72,1,0
3662
-,0,28,7321,24,1,0
3663
-,1,1755,7323,24,1,0
3664
-,0,28,7325,24,1,0
3665
-,1,1755,7327,104,1,0
3666
-,0,28,7329,24,1,0
3667
-,1,1755,7331,24,1,0
3668
-,0,28,7333,24,1,0
3669
-,1,1755,7335,128,1,0
3670
-,0,28,7337,24,1,0
3671
-,1,1755,7339,24,1,0
3672
-,0,28,7341,24,1,0
3673
-,1,1755,7343,136,1,0
3674
-,0,28,7345,24,1,0
3675
-,1,1755,7347,24,1,0
3676
-,0,28,7349,24,1,0
3677
-,1,1755,7351,128,1,0
3678
-,0,28,7353,24,1,0
3679
-,1,1755,7355,24,1,0
3680
-,0,28,7357,24,1,0
3681
-,1,1755,7359,32,1,0
3682
-,0,28,7361,24,1,0
3683
-,1,1755,7363,56,1,0
3684
-,0,28,7365,24,1,0
3685
-,1,1755,7367,56,1,0
3686
-,0,28,7369,24,1,0
3687
-,1,1755,7371,24,1,0
3688
-,0,28,7373,24,1,0
3689
-,1,1755,7375,24,1,0
3690
-,0,28,7377,24,1,0
3691
-,1,1755,7379,72,1,0
3692
-,0,28,7381,24,1,0
3693
-,1,1755,7383,32,1,0
3694
-,0,28,7385,24,1,0
3695
-,1,1755,7387,120,1,0
3696
-,0,28,7389,24,1,0
3697
-,1,1755,7391,64,1,0
3698
-,0,28,7393,24,1,0
3699
-,2,1772,7395,48,1,0
3700
-,1,1,7397,48,1,0
3701
-,0,28,7399,24,1,0
3702
-,2,1773,7401,48,1,0
3703
-,1,1755,7403,24,1,0
3704
-,0,28,7405,24,1,0
3705
-,2,1774,7407,48,1,0
3706
-,1,1755,7409,24,1,0
3707
-,0,28,7411,24,1,0
3708
-,2,1775,7413,48,1,0
3709
-,1,1755,7415,24,1,0
3710
-,0,28,7417,24,1,0
3711
-,1,1755,7419,32,1,0
3712
-,0,28,7421,24,1,0
3713
-,2,1776,7423,48,1,0
3714
-,1,1,7425,24,1,0
3715
-,0,28,7427,24,1,0
3716
-,2,1777,7429,48,1,0
3717
-,1,1,7431,32,1,0
3718
-,0,28,7433,24,1,0
3719
-,2,1778,7435,48,1,0
3720
-,1,1,7437,32,1,0
3721
-,0,28,7439,24,1,0
3722
-,2,1779,7441,48,1,0
3723
-,1,1,7443,32,1,0
3724
-,0,28,7445,24,1,0
3725
-,2,1780,7447,48,1,0
3726
-,1,1755,7449,48,1,0
3727
-,0,28,7451,24,1,0
3728
-,2,1781,7453,56,1,0
3729
-,1,1755,7455,32,1,0
3730
-,0,28,7457,24,1,0
3731
-,7,54,7459,16,1,0
3732
-,1,1,7461,32,1,0
3733
-,0,28,7463,24,1,0
3734
-,1,1,7465,32,1,0
3735
-,0,28,7467,24,1,0
3736
-,1,1,7469,32,1,0
3737
-,0,28,7471,24,1,0
3738
-,1,1,7473,32,1,0
3739
-,0,28,7475,24,1,0
3740
-,1,1,7477,32,1,0
3741
-,0,28,7479,24,1,0
3742
-,1,1,7481,32,1,0
3743
-,0,28,7483,24,1,0
3744
-,1,1,7485,32,1,0
3745
-,0,28,7487,24,1,0
3746
-,1,1,7489,32,1,0
3747
-,0,28,7491,24,1,0
3748
-,1,1,7493,32,1,0
3749
-,0,28,7495,24,1,0
3750
-,1,1,7497,24,1,0
3751
-,0,28,7499,24,1,0
3752
-,1,1,7501,32,1,0
3753
-,0,28,7503,24,1,0
3754
-,1,1,7505,32,1,0
3755
-,0,28,7507,24,1,0
3756
-,1,1,7509,32,1,0
3757
-,0,28,7511,24,1,0
3758
-,1,1,7513,32,1,0
3759
-,0,28,7515,24,1,0
3760
-,1,1755,7517,32,1,0
3761
-,0,28,7519,24,1,0
3762
-,1,1,7521,32,1,0
3763
-,0,28,7523,24,1,0
3764
-,1,1755,7525,24,1,0
3765
-,0,28,7527,24,1,0
3766
-,1,1,7529,32,1,0
3767
-,0,28,7531,24,1,0
3768
-,1,1755,7533,32,1,0
3769
-,0,28,7535,24,1,0
3770
-,1,1,7537,32,1,0
3771
-,0,28,7539,24,1,0
3772
-,1,1,7541,32,1,0
3773
-,0,28,7543,24,1,0
3774
-,1,1,7545,32,1,0
3775
-,0,28,7547,24,1,0
3776
-,1,1755,7549,32,1,0
3777
-,0,28,7551,24,1,0
3778
-,1,1755,7553,32,1,0
3779
-,0,28,7555,24,1,0
3780
-,1,1755,7557,32,1,0
3781
-,0,28,7559,24,1,0
3782
-,1,1755,7561,32,1,0
3783
-,0,28,7563,24,1,0
3784
-,1,1,7565,32,1,0
3785
-,0,28,7567,24,1,0
3786
-,1,1,7569,32,1,0
3787
-,0,28,7571,24,1,0
3788
-,1,1,7573,32,1,0
3789
-,0,28,7575,24,1,0
3790
-,1,1,7577,32,1,0
3791
-,0,28,7579,24,1,0
3792
-,1,1,7581,32,1,0
3793
-,0,28,7583,24,1,0
3794
-,1,1,7585,32,1,0
3795
-,0,28,7587,24,1,0
3796
-,1,1,7589,32,1,0
3797
-,0,28,7591,24,1,0
3798
-,1,1755,7593,32,1,0
3799
-,0,28,7595,24,1,0
3800
-,1,1755,7597,24,1,0
3801
-,0,28,7599,24,1,0
3802
-,1,1755,7601,48,1,0
3803
-,0,28,7603,24,1,0
3804
-,1,1,7605,24,1,0
3805
-,0,28,7607,24,1,0
3806
-,1,1755,7609,24,1,0
3807
-,0,28,7611,24,1,0
3808
-,1,1755,7613,24,1,0
3809
-,0,28,7615,24,1,0
3810
-,1,1755,7617,24,1,0
3811
-,0,28,7619,24,1,0
3812
-,1,1755,7621,32,1,0
3813
-,0,28,7623,24,1,0
3814
-,1,1755,7625,24,1,0
3815
-,0,28,7627,24,1,0
3816
-,1,1755,7629,24,1,0
3817
-,0,28,7631,24,1,0
3818
-,1,1755,7633,24,1,0
3819
-,0,28,7635,24,1,0
3820
-,1,1755,7637,24,1,0
3821
-,0,28,7639,24,1,0
3822
-,1,1755,7641,24,1,0
3823
-,0,28,7643,24,1,0
3824
-,1,1755,7645,24,1,0
3825
-,0,28,7647,24,1,0
3826
-,1,1755,7649,24,1,0
3827
-,0,28,7651,24,1,0
3828
-,1,1,7653,24,1,0
3829
-,0,28,7655,24,1,0
3830
-,2,1782,7657,48,1,0
3831
-,1,1755,7659,48,1,0
3832
-,0,28,7661,24,1,0
3833
-,1,1755,7663,40,1,0
3834
-,0,28,7665,24,1,0
3835
-,1,1755,7667,40,1,0
3836
-,0,28,7669,24,1,0
3837
-,1,1755,7671,40,1,0
3838
-,0,28,7673,24,1,0
3839
-,1,1755,7675,40,1,0
3840
-,0,28,7677,24,1,0
3841
-,1,1755,7679,40,1,0
3842
-,0,28,7681,24,1,0
3843
-,1,1755,7683,32,1,0
3844
-,0,28,7685,24,1,0
3845
-,1,1755,7687,32,1,0
3846
-,0,28,7689,24,1,0
3847
-,1,1755,7691,32,1,0
3848
-,0,28,7693,24,1,0
3849
-,1,1755,7695,32,1,0
3850
-,0,28,7697,24,1,0
3851
-,1,1755,7699,32,1,0
3852
-,0,28,7701,24,1,0
3853
-,1,1755,7703,40,1,0
3854
-,0,28,7705,24,1,0
3855
-,1,1755,7707,48,1,0
3856
-,0,28,7709,24,1,0
3857
-,1,1755,7711,48,1,0
3858
-,0,28,7713,24,1,0
3859
-,1,1755,7715,48,1,0
3860
-,0,28,7717,24,1,0
3861
-,1,1755,7719,48,1,0
3862
-,0,28,7721,24,1,0
3863
-,1,1755,7723,40,1,0
3864
-,0,28,7725,24,1,0
3865
-,1,1755,7727,24,1,0
3866
-,0,28,7729,24,1,0
3867
-,1,1755,7731,24,1,0
3868
-,0,28,7733,24,1,0
3869
-,1,1755,7735,24,1,0
3870
-,0,28,7737,24,1,0
3871
-,1,1755,7739,24,1,0
3872
-,0,28,7741,24,1,0
3873
-,1,1755,7743,24,1,0
3874
-,0,28,7745,24,1,0
3875
-,1,1755,7747,32,1,0
3876
-,0,28,7749,24,1,0
3877
-,1,1755,7751,32,1,0
3878
-,0,28,7753,24,1,0
3879
-,1,1755,7755,112,1,0
3880
-,0,28,7757,24,1,0
3881
-,1,1755,7759,40,1,0
3882
-,0,28,7761,24,1,0
3883
-,1,1755,7763,32,1,0
3884
-,0,28,7765,24,1,0
3885
-,1,1755,7767,24,1,0
3886
-,0,28,7769,24,1,0
3887
-,1,1755,7771,24,1,0
3888
-,0,28,7773,24,1,0
3889
-,1,1755,7775,24,1,0
3890
-,0,28,7777,24,1,0
3891
-,1,1755,7779,24,1,0
3892
-,0,28,7781,24,1,0
3893
-,1,1,7783,56,1,0
3894
-,0,28,7785,24,1,0
3895
-,1,1755,7787,24,1,0
3896
-,0,28,7789,24,1,0
3897
-,1,1755,7791,104,1,0
3898
-,0,28,7793,24,1,0
3899
-,1,1755,7795,24,1,0
3900
-,0,28,7797,24,1,0
3901
-,1,1755,7799,40,1,0
3902
-,0,28,7801,24,1,0
3903
-,1,1755,7803,24,1,0
3904
-,0,28,7805,24,1,0
3905
-,1,1755,7807,24,1,0
3906
-,0,28,7809,24,1,0
3907
-,1,1755,7811,24,1,0
3908
-,0,28,7813,24,1,0
3909
-,1,1,7815,32,1,0
3910
-,0,28,7817,24,1,0
3911
-,1,1755,7819,24,1,0
3912
-,0,28,7821,24,1,0
3913
-,1,1755,7823,24,1,0
3914
-,0,28,7825,24,1,0
3915
-,1,1755,7827,24,1,0
3916
-,0,28,7829,24,1,0
3917
-,1,1755,7831,40,1,0
3918
-,0,28,7833,24,1,0
3919
-,1,1755,7835,24,1,0
3920
-,0,28,7837,24,1,0
3921
-,1,1755,7839,24,1,0
3922
-,0,28,7841,24,1,0
3923
-,1,1755,7843,24,1,0
3924
-,0,28,7845,24,1,0
3925
-,1,1755,7847,48,1,0
3926
-,0,28,7849,24,1,0
3927
-,2,1783,7851,32,1,0
3928
-,2,1784,7853,32,1,0
3929
-,1,1755,7855,24,1,0
3930
-,0,28,7857,24,1,0
3931
-,1,1755,7859,40,1,0
3932
-,0,28,7861,24,1,0
3933
-,1,1,7863,32,1,0
3934
-,0,28,7865,24,1,0
3935
-,1,1755,7867,24,1,0
3936
-,0,28,7869,24,1,0
3937
-,1,1755,7871,24,1,0
3938
-,0,28,7873,24,1,0
3939
-,1,1755,7875,24,1,0
3940
-,0,28,7877,24,1,0
3941
-,1,1,7879,32,1,0
3942
-,0,28,7881,24,1,0
3943
-,2,1785,7883,56,1,0
3944
-,1,1755,7885,24,1,0
3945
-,0,28,7887,24,1,0
3946
-,1,1,7889,56,1,0
3947
-,0,28,7891,24,1,0
3948
-,1,1755,7893,24,1,0
3949
-,0,28,7895,24,1,0
3950
-,1,1755,7897,32,1,0
3951
-,0,28,7899,24,1,0
3952
-,1,1755,7901,24,1,0
3953
-,0,28,7903,24,1,0
3954
-,1,1755,7905,40,1,0
3955
-,0,28,7907,24,1,0
3956
-,1,1755,7909,40,1,0
3957
-,0,28,7911,24,1,0
3958
-,1,1755,7913,48,1,0
3959
-,0,28,7915,24,1,0
3960
-,1,1755,7917,48,1,0
3961
-,0,28,7919,24,1,0
3962
-,1,1,7921,24,1,0
3963
-,0,28,7923,24,1,0
3964
-,1,1755,7925,24,1,0
3965
-,0,28,7927,24,1,0
3966
-,1,1,7929,32,1,0
3967
-,0,28,7931,24,1,0
3968
-,1,1755,7933,88,1,0
3969
-,0,28,7935,24,1,0
3970
-,1,1755,7937,24,1,0
3971
-,0,28,7939,24,1,0
3972
-,1,1755,7941,96,1,0
3973
-,0,28,7943,24,1,0
3974
-,1,1755,7945,24,1,0
3975
-,0,28,7947,24,1,0
3976
-,1,1755,7949,64,1,0
3977
-,0,28,7951,24,1,0
3978
-,2,1786,7953,48,1,0
3979
-,1,1755,7955,40,1,0
3980
-,0,28,7957,24,1,0
3981
-,1,1755,7959,24,1,0
3982
-,0,28,7961,24,1,0
3983
-,1,1755,7963,24,1,0
3984
-,0,28,7965,24,1,0
3985
-,1,1755,7967,24,1,0
3986
-,0,28,7969,24,1,0
3987
-,1,1755,7971,56,1,0
3988
-,0,28,7973,24,1,0
3989
-,1,1755,7975,24,1,0
3990
-,0,28,7977,24,1,0
3991
-,2,1787,7979,40,1,0
3992
-,1,1755,7981,40,1,0
3993
-,0,28,7983,24,1,0
3994
-,1,1,7985,48,1,0
3995
-,0,28,7987,24,1,0
3996
-,2,1788,7989,40,1,0
3997
-,1,1,7991,64,1,0
3998
-,0,28,7993,24,1,0
3999
-,2,1789,7995,56,1,0
4000
-,1,1,7997,48,1,0
4001
-,0,28,7999,24,1,0
4002
-,1,1,8001,48,1,0
4003
-,0,28,8003,24,1,0
4004
-,1,1,8005,24,1,0
4005
-,0,28,8007,24,1,0
4006
-,1,1,8009,24,1,0
4007
-,0,28,8011,24,1,0
4008
-,1,1755,8013,104,1,0
4009
-,0,28,8015,24,1,0
4010
-,2,1790,8017,40,1,0
4011
-,1,1755,8019,56,1,0
4012
-,0,28,8021,24,1,0
4013
-,1,1,8023,64,1,0
4014
-,0,28,8025,24,1,0
4015
-,2,1791,8027,40,1,0
4016
-,1,1,8029,32,1,0
4017
-,0,28,8031,24,1,0
4018
-,1,1,8033,24,1,0
4019
-,0,28,8035,24,1,0
4020
-,1,1,8037,24,1,0
4021
-,0,28,8039,24,1,0
4022
-,1,1755,8041,40,1,0
4023
-,0,28,8043,24,1,0
4024
-,1,1,8045,56,1,0
4025
-,0,28,8047,24,1,0
4026
-,1,1,8049,32,1,0
4027
-,0,28,8051,24,1,0
4028
-,1,1755,8053,56,1,0
4029
-,0,28,8055,24,1,0
4030
-,1,1755,8057,56,1,0
4031
-,0,28,8059,24,1,0
4032
-,1,1755,8061,64,1,0
4033
-,0,28,8063,24,1,0
4034
-,1,1755,8065,24,1,0
4035
-,0,28,8067,24,1,0
4036
-,1,1755,8069,24,1,0
4037
-,0,28,8071,24,1,0
4038
-,1,1755,8073,24,1,0
4039
-,0,28,8075,24,1,0
4040
-,1,1755,8077,24,1,0
4041
-,0,28,8079,24,1,0
4042
-,1,1755,8081,24,1,0
4043
-,0,28,8083,24,1,0
4044
-,1,1755,8085,24,1,0
4045
-,0,28,8087,24,1,0
4046
-,1,1755,8089,24,1,0
4047
-,0,28,8091,24,1,0
4048
-,1,1,8093,24,1,0
4049
-,0,28,8095,24,1,0
4050
-,2,1792,8097,40,1,0
4051
-,1,1755,8099,24,1,0
4052
-,0,28,8101,24,1,0
4053
-,1,1755,8103,24,1,0
4054
-,0,28,8105,24,1,0
4055
-,1,1755,8107,24,1,0
4056
-,0,28,8109,24,1,0
4057
-,1,1755,8111,24,1,0
4058
-,0,28,8113,24,1,0
4059
-,1,1755,8115,24,1,0
4060
-,0,28,8117,24,1,0
4061
-,1,1755,8119,24,1,0
4062
-,0,28,8121,24,1,0
4063
-,1,1755,8123,24,1,0
4064
-,0,28,8125,24,1,0
4065
-,1,1755,8127,24,1,0
4066
-,0,28,8129,24,1,0
4067
-,1,1755,8131,24,1,0
4068
-,0,28,8133,24,1,0
4069
-,1,1755,8135,24,1,0
4070
-,0,28,8137,24,1,0
4071
-,1,1755,8139,24,1,0
4072
-,0,28,8141,24,1,0
4073
-,1,1755,8143,24,1,0
4074
-,0,28,8145,24,1,0
4075
-,1,1755,8147,24,1,0
4076
-,0,28,8149,24,1,0
4077
-,1,1755,8151,24,1,0
4078
-,0,28,8153,24,1,0
4079
-,1,1755,8155,72,1,0
4080
-,0,28,8157,24,1,0
4081
-,1,1,8159,48,1,0
4082
-,0,28,8161,24,1,0
4083
-,1,1755,8163,24,1,0
4084
-,0,28,8165,24,1,0
4085
-,1,1755,8167,24,1,0
4086
-,0,28,8169,24,1,0
4087
-,1,1755,8171,24,1,0
4088
-,0,28,8173,24,1,0
4089
-,1,1755,8175,24,1,0
4090
-,0,28,8177,24,1,0
4091
-,1,1755,8179,24,1,0
4092
-,0,28,8181,24,1,0
4093
-,1,1,8183,48,1,0
4094
-,0,28,8185,24,1,0
4095
-,2,1793,8187,48,1,0
4096
-,1,1755,8189,96,1,0
4097
-,0,28,8191,24,1,0
4098
-,2,1794,8193,48,1,0
4099
-,1,1,8195,32,1,0
4100
-,0,28,8197,24,1,0
4101
-,2,1795,8199,48,1,0
4102
-,1,1,8201,80,1,0
4103
-,0,28,8203,24,1,0
4104
-,2,1796,8205,48,1,0
4105
-,1,1,8207,32,1,0
4106
-,0,28,8209,24,1,0
4107
-,2,1797,8211,48,1,0
4108
-,1,1,8213,32,1,0
4109
-,0,28,8215,24,1,0
4110
-,2,1798,8217,56,1,0
4111
-,1,1,8219,120,1,0
4112
-,0,28,8221,24,1,0
4113
-,2,1799,8223,48,1,0
4114
-,1,1,8225,88,1,0
4115
-,0,28,8227,24,1,0
4116
-,2,1800,8229,32,1,0
4117
-,2,1801,8231,56,1,0
4118
-,1,1,8233,32,1,0
4119
-,0,28,8235,24,1,0
4120
-,2,1802,8237,56,1,0
4121
-,1,1,8239,56,1,0
4122
-,0,28,8241,24,1,0
4123
-,2,1803,8243,56,1,0
4124
-,1,1755,8245,32,1,0
4125
-,0,28,8247,24,1,0
4126
-,2,1804,8249,48,1,0
4127
-,2,221,8251,32,1,0
4128
-,1,1,8253,32,1,0
4129
-,0,28,8255,24,1,0
4130
-,2,1805,8257,48,1,0
4131
-,1,1755,8259,80,1,0
4132
-,0,28,8261,24,1,0
4133
-,2,1806,8263,48,1,0
4134
-,1,1755,8265,56,1,0
4135
-,0,28,8267,24,1,0
4136
-,1,1755,8269,24,1,0
4137
-,0,28,8271,24,1,0
4138
-,1,1,8273,32,1,0
4139
-,0,28,8275,24,1,0
4140
-,2,1807,8277,48,1,0
4141
-,1,1755,8279,24,1,0
4142
-,0,28,8281,24,1,0
4143
-,1,1,8283,32,1,0
4144
-,0,28,8285,24,1,0
4145
-,2,1808,8287,56,1,0
4146
-,1,1,8289,32,1,0
4147
-,0,28,8291,24,1,0
4148
-,2,1809,8293,48,1,0
4149
-,1,1755,8295,32,1,0
4150
-,0,28,8297,24,1,0
4151
-,1,1755,8299,48,1,0
4152
-,0,28,8301,24,1,0
4153
-,1,1755,8303,160,1,0
4154
-,0,28,8305,24,1,0
4155
-,1,1755,8307,88,1,0
4156
-,0,28,8309,24,1,0
4157
-,1,1755,8311,128,1,0
4158
-,0,28,8313,24,1,0
4159
-,2,1810,8315,32,1,0
4160
-,1,1755,8317,64,1,0
4161
-,0,28,8319,24,1,0
4162
-,1,1755,8321,136,1,0
4163
-,0,28,8323,24,1,0
4164
-,1,1,8325,136,1,0
4165
-,0,28,8327,24,1,0
4166
-,2,1811,8329,64,1,0
4167
-,1,1755,8331,96,1,0
4168
-,0,28,8333,24,1,0
4169
-,1,1755,8335,40,1,0
4170
-,0,28,8337,24,1,0
4171
-,2,1812,8339,48,1,0
4172
-,1,1755,8341,56,1,0
4173
-,0,28,8343,24,1,0
4174
-,2,1813,8345,48,1,0
4175
-,1,1,8347,48,1,0
4176
-,0,28,8349,24,1,0
4177
-,2,1814,8351,48,1,0
4178
-,1,1755,8353,24,1,0
4179
-,0,28,8355,24,1,0
4180
-,1,1,8357,32,1,0
4181
-,0,28,8359,24,1,0
4182
-,2,1815,8361,48,1,0
4183
-,1,1755,8363,24,1,0
4184
-,0,28,8365,24,1,0
4185
-,2,1816,8367,48,1,0
4186
-,1,1755,8369,32,1,0
4187
-,0,28,8371,24,1,0
4188
-,2,1817,8373,48,1,0
4189
-,1,1,8375,32,1,0
4190
-,0,28,8377,24,1,0
4191
-,2,1818,8379,48,1,0
4192
-,1,1,8381,48,1,0
4193
-,0,28,8383,24,1,0
4194
-,2,1819,8385,56,1,0
4195
-,1,1755,8387,24,1,0
4196
-,0,28,8389,24,1,0
4197
-,1,1755,8391,24,1,0
4198
-,0,28,8393,24,1,0
4199
-,1,1,8395,48,1,0
4200
-,0,28,8397,24,1,0
4201
-,1,1,8399,48,1,0
4202
-,0,28,8401,24,1,0
4203
-,1,1,8403,56,1,0
4204
-,0,28,8405,24,1,0
4205
-,1,1,8407,56,1,0
4206
-,0,28,8409,24,1,0
4207
-,1,1,8411,56,1,0
4208
-,0,28,8413,24,1,0
4209
-,1,1,8415,56,1,0
4210
-,0,28,8417,24,1,0
4211
-,1,1,8419,56,1,0
4212
-,0,28,8421,24,1,0
4213
-,1,1,8423,56,1,0
4214
-,0,28,8425,24,1,0
4215
-,1,1,8427,56,1,0
4216
-,0,28,8429,24,1,0
4217
-,1,1755,8431,24,1,0
4218
-,0,28,8433,24,1,0
4219
-,1,1755,8435,24,1,0
4220
-,0,28,8437,24,1,0
4221
-,1,1755,8439,24,1,0
4222
-,0,28,8441,24,1,0
4223
-,1,1755,8443,32,1,0
4224
-,0,28,8445,24,1,0
4225
-,1,1755,8447,24,1,0
4226
-,0,28,8449,24,1,0
4227
-,1,1755,8451,64,1,0
4228
-,0,28,8453,24,1,0
4229
-,1,1,8455,56,1,0
4230
-,0,28,8457,24,1,0
4231
-,2,1820,8459,32,1,0
4232
-,2,1821,8461,32,1,0
4233
-,2,1822,8463,40,1,0
4234
-,2,1823,8465,32,1,0
4235
-,2,1824,8467,32,1,0
4236
-,2,1825,8469,48,1,0
4237
-,1,1,8471,32,1,0
4238
-,0,28,8473,24,1,0
4239
-,2,1826,8475,32,1,0
4240
-,2,1827,8477,32,1,0
4241
-,2,1828,8479,48,1,0
4242
-,1,1,8481,32,1,0
4243
-,0,28,8483,24,1,0
4244
-,2,1829,8485,32,1,0
4245
-,2,1830,8487,32,1,0
4246
-,2,1831,8489,48,1,0
4247
-,1,1,8491,32,1,0
4248
-,0,28,8493,24,1,0
4249
-,2,1832,8495,32,1,0
4250
-,2,1833,8497,32,1,0
4251
-,2,1834,8499,48,1,0
4252
-,1,1755,8501,48,1,0
4253
-,0,28,8503,24,1,0
4254
-,2,1835,8505,48,1,0
4255
-,1,1755,8507,40,1,0
4256
-,0,28,8509,24,1,0
4257
-,2,1836,8511,56,1,0
4258
-,1,1,8513,40,1,0
4259
-,0,28,8515,24,1,0
4260
-,2,1837,8517,56,1,0
4261
-,1,1,8519,32,1,0
4262
-,0,28,8521,24,1,0
4263
-,2,1838,8523,48,1,0
4264
-,1,1755,8525,24,1,0
4265
-,0,28,8527,24,1,0
4266
-,1,1,8529,56,1,0
4267
-,0,28,8531,24,1,0
4268
-,2,1839,8533,40,1,0
4269
-,2,1840,8535,32,1,0
4270
-,2,1841,8537,56,1,0
4271
-,1,1,8539,56,1,0
4272
-,0,28,8541,24,1,0
4273
-,2,1842,8543,40,1,0
4274
-,2,1843,8545,56,1,0
4275
-,1,1,8547,32,1,0
4276
-,0,28,8549,24,1,0
4277
-,2,1844,8551,32,1,0
4278
-,2,1845,8553,32,1,0
4279
-,2,1846,8555,48,1,0
4280
-,1,1,8557,56,1,0
4281
-,0,28,8559,24,1,0
4282
-,1,1755,8561,56,1,0
4283
-,0,28,8563,24,1,0
4284
-,1,1,8565,32,1,0
4285
-,0,28,8567,24,1,0
4286
-,2,1847,8569,32,1,0
4287
-,2,1848,8571,32,1,0
4288
-,2,1849,8573,48,1,0
4289
-,1,1755,8575,24,1,0
4290
-,0,28,8577,24,1,0
4291
-,1,1,8579,56,1,0
4292
-,0,28,8581,24,1,0
4293
-,2,1850,8583,40,1,0
4294
-,2,1851,8585,48,1,0
4295
-,1,1755,8587,48,1,0
4296
-,0,28,8589,24,1,0
4297
-,2,1852,8591,48,1,0
4298
-,1,1,8593,96,1,0
4299
-,0,28,8595,24,1,0
4300
-,2,1853,8597,56,1,0
4301
-,1,1755,8599,24,1,0
4302
-,0,28,8601,24,1,0
4303
-,1,1,8603,48,1,0
4304
-,0,28,8605,24,1,0
4305
-,2,1854,8607,32,1,0
4306
-,2,1855,8609,48,1,0
4307
-,1,1,8611,48,1,0
4308
-,0,28,8613,24,1,0
4309
-,2,1856,8615,56,1,0
4310
-,1,1,8617,40,1,0
4311
-,0,28,8619,24,1,0
4312
-,2,1857,8621,48,1,0
4313
-,1,1755,8623,56,1,0
4314
-,0,28,8625,24,1,0
4315
-,2,1858,8627,48,1,0
4316
-,1,1,8629,48,1,0
4317
-,0,28,8631,24,1,0
4318
-,2,1859,8633,48,1,0
4319
-,1,1755,8635,80,1,0
4320
-,0,28,8637,24,1,0
4321
-,2,1860,8639,48,1,0
4322
-,1,1,8641,32,1,0
4323
-,0,28,8643,24,1,0
4324
-,2,1861,8645,32,1,0
4325
-,2,1862,8647,32,1,0
4326
-,2,1863,8649,48,1,0
4327
-,1,1755,8651,88,1,0
4328
-,0,28,8653,24,1,0
4329
-,7,54,8655,16,1,0
4330
-,2,1864,8657,48,1,0
4331
-,1,1,8659,32,1,0
4332
-,0,28,8661,24,1,0
4333
-,2,1865,8663,32,1,0
4334
-,2,1866,8665,40,1,0
4335
-,2,1867,8667,48,1,0
4336
-,1,1,8669,32,1,0
4337
-,0,28,8671,24,1,0
4338
-,2,1868,8673,32,1,0
4339
-,2,1869,8675,32,1,0
4340
-,2,1870,8677,48,1,0
4341
-,1,1755,8679,80,1,0
4342
-,0,28,8681,24,1,0
4343
-,2,1871,8683,48,1,0
4344
-,1,1755,8685,80,1,0
4345
-,0,28,8687,24,1,0
4346
-,2,1872,8689,56,1,0
4347
-,1,1,8691,32,1,0
4348
-,0,28,8693,24,1,0
4349
-,2,1873,8695,32,1,0
4350
-,2,1874,8697,32,1,0
4351
-,2,1875,8699,48,1,0
4352
-,1,1755,8701,24,1,0
4353
-,0,28,8703,24,1,0
4354
-,1,1755,8705,24,1,0
4355
-,0,28,8707,24,1,0
4356
-,2,1876,8709,56,1,0
4357
-,1,1755,8711,80,1,0
4358
-,0,28,8713,24,1,0
4359
-,2,1877,8715,48,1,0
4360
-,1,1,8717,80,1,0
4361
-,0,28,8719,24,1,0
4362
-,2,1878,8721,56,1,0
4363
-,1,1,8723,80,1,0
4364
-,0,28,8725,24,1,0
4365
-,2,1879,8727,56,1,0
4366
-,1,1,8729,24,1,0
4367
-,0,28,8731,24,1,0
4368
-,2,1880,8733,48,1,0
4369
-,1,1755,8735,24,1,0
4370
-,0,28,8737,24,1,0
4371
-,1,1,8739,32,1,0
4372
-,0,28,8741,24,1,0
4373
-,2,1881,8743,64,1,0
4374
-,1,1,8745,56,1,0
4375
-,0,28,8747,24,1,0
4376
-,2,1882,8749,56,1,0
4377
-,1,1755,8751,24,1,0
4378
-,0,28,8753,24,1,0
4379
-,1,1755,8755,24,1,0
4380
-,0,28,8757,24,1,0
4381
-,1,1755,8759,24,1,0
4382
-,0,28,8761,24,1,0
4383
-,1,1,8763,24,1,0
4384
-,0,28,8765,24,1,0
4385
-,2,1883,8767,56,1,0
4386
-,1,1,8769,24,1,0
4387
-,0,28,8771,24,1,0
4388
-,2,1884,8773,64,1,0
4389
-,1,1,8775,32,1,0
4390
-,0,28,8777,24,1,0
4391
-,2,1885,8779,56,1,0
4392
-,1,1,8781,24,1,0
4393
-,0,28,8783,24,1,0
4394
-,2,1886,8785,48,1,0
4395
-,1,1755,8787,104,1,0
4396
-,0,28,8789,24,1,0
4397
-,1,1755,8791,72,1,0
4398
-,0,28,8793,24,1,0
4399
-,1,1755,8795,56,1,0
4400
-,0,28,8797,24,1,0
4401
-,1,1755,8799,136,1,0
4402
-,0,28,8801,24,1,0
4403
-,2,1887,8803,40,1,0
4404
-,2,1888,8805,40,1,0
4405
-,2,1889,8807,40,1,0
4406
-,1,1,8809,24,1,0
4407
-,0,28,8811,24,1,0
4408
-,2,1430,8813,40,1,0
4409
-,1,1755,8815,24,1,0
4410
-,0,28,8817,24,1,0
4411
-,1,1755,8819,32,1,0
4412
-,0,28,8821,24,1,0
4413
-,1,1755,8823,24,1,0
4414
-,0,28,8825,24,1,0
4415
-,1,1755,8827,32,1,0
4416
-,0,28,8829,24,1,0
4417
-,2,1890,8831,64,1,0
4418
-,1,1755,8833,32,1,0
4419
-,0,28,8835,24,1,0
4420
-,2,1891,8837,64,1,0
4421
-,1,1755,8839,32,1,0
4422
-,0,28,8841,24,1,0
4423
-,2,1892,8843,56,1,0
4424
-,1,1,8845,40,1,0
4425
-,0,28,8847,24,1,0
4426
-,2,1893,8849,56,1,0
4427
-,1,1,8851,40,1,0
4428
-,0,28,8853,24,1,0
4429
-,2,1894,8855,56,1,0
4430
-,1,1,8857,40,1,0
4431
-,0,28,8859,24,1,0
4432
-,2,1895,8861,56,1,0
4433
-,1,1755,8863,24,1,0
4434
-,0,28,8865,24,1,0
4435
-,1,1755,8867,24,1,0
4436
-,0,28,8869,24,1,0
4437
-,1,1,8871,120,1,0
4438
-,0,28,8873,24,1,0
4439
-,2,1896,8875,56,1,0
4440
-,1,1,8877,104,1,0
4441
-,0,28,8879,24,1,0
4442
-,2,1897,8881,56,1,0
4443
-,1,1,8883,104,1,0
4444
-,0,28,8885,24,1,0
4445
-,2,1898,8887,56,1,0
4446
-,1,1755,8889,24,1,0
4447
-,0,28,8891,24,1,0
4448
-,1,1755,8893,24,1,0
4449
-,0,28,8895,24,1,0
4450
-,1,1755,8897,24,1,0
4451
-,0,28,8899,24,1,0
4452
-,1,1755,8901,24,1,0
4453
-,0,28,8903,24,1,0
4454
-,1,1,8905,48,1,0
4455
-,0,28,8907,24,1,0
4456
-,2,1899,8909,56,1,0
4457
-,1,1,8911,64,1,0
4458
-,0,28,8913,24,1,0
4459
-,2,1900,8915,56,1,0
4460
-,1,1,8917,64,1,0
4461
-,0,28,8919,24,1,0
4462
-,2,1901,8921,56,1,0
4463
-,1,1755,8923,24,1,0
4464
-,0,28,8925,24,1,0
4465
-,1,1,8927,104,1,0
4466
-,0,28,8929,24,1,0
4467
-,2,1902,8931,56,1,0
4468
-,1,1,8933,104,1,0
4469
-,0,28,8935,24,1,0
4470
-,2,1903,8937,56,1,0
4471
-,1,1,8939,120,1,0
4472
-,0,28,8941,24,1,0
4473
-,2,1904,8943,56,1,0
4474
-,1,1,8945,128,1,0
4475
-,0,28,8947,24,1,0
4476
-,2,1905,8949,64,1,0
4477
-,1,1,8951,192,1,0
4478
-,0,28,8953,24,1,0
4479
-,2,1906,8955,56,1,0
4480
-,1,1,8957,88,1,0
4481
-,0,28,8959,24,1,0
4482
-,2,1907,8961,56,1,0
4483
-,1,1,8963,88,1,0
4484
-,0,28,8965,24,1,0
4485
-,2,1908,8967,40,1,0
4486
-,1,1,8969,104,1,0
4487
-,0,28,8971,24,1,0
4488
-,2,1909,8973,48,1,0
4489
-,1,1755,8975,24,1,0
4490
-,0,28,8977,24,1,0
4491
-,1,1755,8979,16,1,0
4492
-,0,28,8981,24,1,0
4493
-,1,1755,8983,16,1,0
4494
-,0,28,8985,24,1,0
4495
-,1,1755,8987,16,1,0
4496
-,0,28,8989,24,1,0
4497
-,1,1755,8991,24,1,0
4498
-,0,28,8993,24,1,0
4499
-,1,1755,8995,24,1,0
4500
-,0,28,8997,24,1,0
4501
-,1,1755,8999,16,1,0
4502
-,0,28,9001,24,1,0
4503
-,1,1755,9003,24,1,0
4504
-,0,28,9005,24,1,0
4505
-,1,1755,9007,24,1,0
4506
-,0,28,9009,24,1,0
4507
-,1,1755,9011,24,1,0
4508
-,0,28,9013,24,1,0
4509
-,1,1755,9015,24,1,0
4510
-,0,28,9017,24,1,0
4511
-,1,1755,9019,24,1,0
4512
-,0,28,9021,24,1,0
4513
-,1,1755,9023,24,1,0
4514
-,0,28,9025,24,1,0
4515
-,1,1755,9027,24,1,0
4516
-,0,28,9029,24,1,0
4517
-,1,1755,9031,24,1,0
4518
-,0,28,9033,24,1,0
4519
-,1,1755,9035,24,1,0
4520
-,0,28,9037,24,1,0
4521
-,1,1755,9039,112,1,0
4522
-,0,28,9041,24,1,0
4523
-,1,1755,9043,16,1,0
4524
-,0,28,9045,24,1,0
4525
-,1,1755,9047,24,1,0
4526
-,0,28,9049,24,1,0
4527
-,2,1910,9051,48,1,0
4528
-,1,1,9053,24,1,0
4529
-,0,28,9055,24,1,0
4530
-,2,1911,9057,48,1,0
4531
-,1,1,9059,32,1,0
4532
-,0,28,9061,24,1,0
4533
-,2,1912,9063,48,1,0
4534
-,1,1,9065,24,1,0
4535
-,0,28,9067,24,1,0
4536
-,2,1913,9069,48,1,0
4537
-,1,1,9071,88,1,0
4538
-,0,28,9073,24,1,0
4539
-,1,1,9075,24,1,0
4540
-,0,28,9077,24,1,0
4541
-,2,1914,9079,48,1,0
4542
-,1,1,9081,32,1,0
4543
-,0,28,9083,24,1,0
4544
-,2,1915,9085,48,1,0
4545
-,1,1,9087,24,1,0
4546
-,0,28,9089,24,1,0
4547
-,2,1916,9091,48,1,0
4548
-,1,1755,9093,32,1,0
4549
-,0,28,9095,24,1,0
4550
-,1,1755,9097,40,1,0
4551
-,0,28,9099,24,1,0
4552
-,1,1755,9101,32,1,0
4553
-,0,28,9103,24,1,0
4554
-,1,1755,9105,24,1,0
4555
-,0,28,9107,24,1,0
4556
-,1,1755,9109,56,1,0
4557
-,0,28,9111,24,1,0
4558
-,1,1755,9113,56,1,0
4559
-,0,28,9115,24,1,0
4560
-,1,1755,9117,32,1,0
4561
-,0,28,9119,24,1,0
4562
-,1,1755,9121,24,1,0
4563
-,0,28,9123,24,1,0
4564
-,1,1,9125,56,1,0
4565
-,0,28,9127,24,1,0
4566
-,2,1917,9129,56,1,0
4567
-,1,1,9131,56,1,0
4568
-,0,28,9133,24,1,0
4569
-,2,1918,9135,64,1,0
4570
-,1,1,9137,56,1,0
4571
-,0,28,9139,24,1,0
4572
-,2,1919,9141,56,1,0
4573
-,1,1755,9143,56,1,0
4574
-,0,28,9145,24,1,0
4575
-,1,1755,9147,56,1,0
4576
-,0,28,9149,24,1,0
4577
-,1,1,9151,24,1,0
4578
-,0,28,9153,24,1,0
4579
-,1,1,9155,32,1,0
4580
-,0,28,9157,24,1,0
4581
-,1,1,9159,24,1,0
4582
-,0,28,9161,24,1,0
4583
-,1,1,9163,24,1,0
4584
-,0,28,9165,24,1,0
4585
-,1,1,9167,24,1,0
4586
-,0,28,9169,24,1,0
4587
-,1,1,9171,32,1,0
4588
-,0,28,9173,24,1,0
4589
-,1,1,9175,64,1,0
4590
-,0,28,9177,24,1,0
4591
-,2,1920,9179,72,1,0
4592
-,1,1,9181,64,1,0
4593
-,0,28,9183,24,1,0
4594
-,1,1,9185,64,1,0
4595
-,0,28,9187,24,1,0
4596
-,2,1921,9189,72,1,0
4597
-,1,1,9191,64,1,0
4598
-,0,28,9193,24,1,0
4599
-,1,1,9195,64,1,0
4600
-,0,28,9197,24,1,0
4601
-,2,1922,9199,72,1,0
4602
-,1,1,9201,64,1,0
4603
-,0,28,9203,24,1,0
4604
-,1,1,9205,24,1,0
4605
-,0,28,9207,24,1,0
4606
-,1,1755,9209,40,1,0
4607
-,0,28,9211,24,1,0
4608
-,1,1755,9213,40,1,0
4609
-,0,28,9215,24,1,0
4610
-,1,1755,9217,40,1,0
4611
-,0,28,9219,24,1,0
4612
-,1,1755,9221,40,1,0
4613
-,0,28,9223,24,1,0
4614
-,1,1755,9225,40,1,0
4615
-,0,28,9227,24,1,0
4616
-,1,1755,9229,40,1,0
4617
-,0,28,9231,24,1,0
4618
-,1,1755,9233,40,1,0
4619
-,0,28,9235,24,1,0
4620
-,1,1755,9237,40,1,0
4621
-,0,28,9239,24,1,0
4622
-,1,1755,9241,40,1,0
4623
-,0,28,9243,24,1,0
4624
-,1,1755,9245,40,1,0
4625
-,0,28,9247,24,1,0
4626
-,1,1755,9249,56,1,0
4627
-,0,28,9251,24,1,0
4628
-,1,1755,9253,72,1,0
4629
-,0,28,9255,24,1,0
4630
-,1,1755,9257,32,1,0
4631
-,0,28,9259,24,1,0
4632
-,1,1755,9261,32,1,0
4633
-,0,28,9263,24,1,0
4634
-,1,1755,9265,72,1,0
4635
-,0,28,9267,24,1,0
4636
-,1,1755,9269,48,1,0
4637
-,0,28,9271,24,1,0
4638
-,1,1755,9273,48,1,0
4639
-,0,28,9275,24,1,0
4640
-,1,1755,9277,48,1,0
4641
-,0,28,9279,24,1,0
4642
-,1,1755,9281,16,1,0
4643
-,0,28,9283,24,1,0
4644
-,1,1755,9285,40,1,0
4645
-,0,28,9287,24,1,0
4646
-,1,1755,9289,224,1,0
4647
-,0,28,9291,24,1,0
4648
-,1,1755,9293,24,1,0
4649
-,0,28,9295,24,1,0
4650
-,1,1755,9297,24,1,0
4651
-,0,28,9299,24,1,0
4652
-,1,1755,9301,24,1,0
4653
-,0,28,9303,24,1,0
4654
-,1,1,9305,216,1,0
4655
-,0,28,9307,24,1,0
4656
-,7,54,9309,16,1,0
4657
-,1,1,9311,88,1,0
4658
-,0,28,9313,24,1,0
4659
-,1,1755,9315,24,1,0
4660
-,0,28,9317,24,1,0
4661
-,1,1755,9319,24,1,0
4662
-,0,28,9321,24,1,0
4663
-,1,1755,9323,24,1,0
4664
-,0,28,9325,24,1,0
4665
-,1,1755,9327,56,1,0
4666
-,0,28,9329,24,1,0
4667
-,2,1923,9331,48,1,0
4668
-,1,1755,9333,88,1,0
4669
-,0,28,9335,24,1,0
4670
-,1,1755,9337,56,1,0
4671
-,0,28,9339,24,1,0
4672
-,2,1924,9341,56,1,0
4673
-,1,1,9343,56,1,0
4674
-,0,28,9345,24,1,0
4675
-,1,1,9347,32,1,0
4676
-,0,28,9349,24,1,0
4677
-,2,1925,9351,56,1,0
4678
-,1,1,9353,32,1,0
4679
-,0,28,9355,24,1,0
4680
-,2,1926,9357,64,1,0
4681
-,1,1,9359,32,1,0
4682
-,0,28,9361,24,1,0
4683
-,2,1927,9363,64,1,0
4684
-,1,1,9365,56,1,0
4685
-,0,28,9367,24,1,0
4686
-,7,54,9369,16,1,0
4687
-,2,1928,9371,56,1,0
4688
-,1,1,9373,56,1,0
4689
-,0,28,9375,24,1,0
4690
-,7,54,9377,16,1,0
4691
-,2,1929,9379,56,1,0
4692
-,1,1,9381,56,1,0
4693
-,0,28,9383,24,1,0
4694
-,7,54,9385,16,1,0
4695
-,2,1930,9387,56,1,0
4696
-,1,1,9389,56,1,0
4697
-,0,28,9391,24,1,0
4698
-,7,54,9393,16,1,0
4699
-,2,1931,9395,56,1,0
4700
-,1,1,9397,56,1,0
4701
-,0,28,9399,24,1,0
4702
-,7,54,9401,16,1,0
4703
-,2,1932,9403,56,1,0
4704
-,1,1,9405,56,1,0
4705
-,0,28,9407,24,1,0
4706
-,7,54,9409,16,1,0
4707
-,2,1933,9411,56,1,0
4708
-,1,1,9413,56,1,0
4709
-,0,28,9415,24,1,0
4710
-,7,54,9417,16,1,0
4711
-,2,1934,9419,56,1,0
4712
-,1,1,9421,56,1,0
4713
-,0,28,9423,24,1,0
4714
-,7,54,9425,16,1,0
4715
-,2,1935,9427,56,1,0
4716
-,1,1,9429,56,1,0
4717
-,0,28,9431,24,1,0
4718
-,7,54,9433,16,1,0
4719
-,2,1936,9435,56,1,0
4720
-,1,1,9437,56,1,0
4721
-,0,28,9439,24,1,0
4722
-,7,54,9441,16,1,0
4723
-,2,1937,9443,56,1,0
4724
-,1,1,9445,64,1,0
4725
-,0,28,9447,24,1,0
4726
-,7,54,9449,16,1,0
4727
-,2,1938,9451,56,1,0
4728
-,1,1,9453,64,1,0
4729
-,0,28,9455,24,1,0
4730
-,7,54,9457,16,1,0
4731
-,2,1939,9459,56,1,0
4732
-,1,1,9461,64,1,0
4733
-,0,28,9463,24,1,0
4734
-,7,54,9465,16,1,0
4735
-,2,1940,9467,56,1,0
4736
-,1,1,9469,64,1,0
4737
-,0,28,9471,24,1,0
4738
-,7,54,9473,16,1,0
4739
-,2,1941,9475,56,1,0
4740
-,1,1,9477,64,1,0
4741
-,0,28,9479,24,1,0
4742
-,7,54,9481,16,1,0
4743
-,2,1942,9483,56,1,0
4744
-,1,1,9485,64,1,0
4745
-,0,28,9487,24,1,0
4746
-,7,54,9489,16,1,0
4747
-,2,1943,9491,56,1,0
4748
-,1,1,9493,64,1,0
4749
-,0,28,9495,24,1,0
4750
-,7,54,9497,16,1,0
4751
-,2,1944,9499,56,1,0
4752
-,1,1,9501,64,1,0
4753
-,0,28,9503,24,1,0
4754
-,7,54,9505,16,1,0
4755
-,2,1945,9507,56,1,0
4756
-,1,1,9509,56,1,0
4757
-,0,28,9511,24,1,0
4758
-,7,54,9513,16,1,0
4759
-,2,1946,9515,56,1,0
4760
-,1,1,9517,56,1,0
4761
-,0,28,9519,24,1,0
4762
-,7,54,9521,16,1,0
4763
-,2,1947,9523,56,1,0
4764
-,1,1755,9525,16,1,0
4765
-,0,28,9527,24,1,0
4766
-,1,1755,9529,24,1,0
4767
-,0,28,9531,24,1,0
4768
-,1,1755,9533,32,1,0
4769
-,0,28,9535,24,1,0
4770
-,1,1755,9537,32,1,0
4771
-,0,28,9539,24,1,0
4772
-,1,1755,9541,16,1,0
4773
-,0,28,9543,24,1,0
4774
-,1,1755,9545,16,1,0
4775
-,0,28,9547,24,1,0
4776
-,1,1755,9549,24,1,0
4777
-,0,28,9551,24,1,0
4778
-,1,1755,9553,16,1,0
4779
-,0,28,9555,24,1,0
4780
-,1,1755,9557,40,1,0
4781
-,0,28,9559,24,1,0
4782
-,1,1755,9561,24,1,0
4783
-,0,28,9563,24,1,0
4784
-,1,1755,9565,32,1,0
4785
-,0,28,9567,24,1,0
4786
-,1,1755,9569,24,1,0
4787
-,0,28,9571,24,1,0
4788
-,1,1755,9573,16,1,0
4789
-,0,28,9575,24,1,0
4790
-,1,1755,9577,16,1,0
4791
-,0,28,9579,24,1,0
4792
-,1,1755,9581,24,1,0
4793
-,0,28,9583,24,1,0
4794
-,1,1755,9585,24,1,0
4795
-,0,28,9587,24,1,0
4796
-,1,1755,9589,24,1,0
4797
-,0,28,9591,24,1,0
4798
-,1,1755,9593,128,1,0
4799
-,0,28,9595,24,1,0
4800
-,1,1755,9597,24,1,0
4801
-,0,28,9599,24,1,0
4802
-,1,1755,9601,24,1,0
4803
-,0,28,9603,24,1,0
4804
-,1,1755,9605,88,1,0
4805
-,0,28,9607,24,1,0
4806
-,1,1755,9609,160,1,0
4807
-,0,28,9611,24,1,0
4808
-,1,1755,9613,16,1,0
4809
-,0,28,9615,24,1,0
4810
-,1,1755,9617,24,1,0
4811
-,0,28,9619,24,1,0
4812
-,1,1755,9621,24,1,0
4813
-,0,28,9623,24,1,0
4814
-,1,1755,9625,16,1,0
4815
-,0,28,9627,24,1,0
4816
-,1,1755,9629,24,1,0
4817
-,0,28,9631,24,1,0
4818
-,1,1755,9633,16,1,0
4819
-,0,28,9635,24,1,0
4820
-,1,1755,9637,16,1,0
4821
-,0,28,9639,24,1,0
4822
-,1,1755,9641,16,1,0
4823
-,0,28,9643,24,1,0
4824
-,1,1755,9645,24,1,0
4825
-,0,28,9647,24,1,0
4826
-,1,1755,9649,16,1,0
4827
-,0,28,9651,24,1,0
4828
-,1,1755,9653,24,1,0
4829
-,0,28,9655,24,1,0
4830
-,1,1755,9657,16,1,0
4831
-,0,28,9659,24,1,0
4832
-,1,1755,9661,16,1,0
4833
-,0,28,9663,24,1,0
4834
-,1,1755,9665,16,1,0
4835
-,0,28,9667,24,1,0
4836
-,1,1755,9669,16,1,0
4837
-,0,28,9671,24,1,0
4838
-,1,1755,9673,16,1,0
4839
-,0,28,9675,24,1,0
4840
-,1,1755,9677,16,1,0
4841
-,0,28,9679,24,1,0
4842
-,1,1755,9681,16,1,0
4843
-,0,28,9683,24,1,0
4844
-,1,1755,9685,16,1,0
4845
-,0,28,9687,24,1,0
4846
-,1,1755,9689,16,1,0
4847
-,0,28,9691,24,1,0
4848
-,1,1755,9693,24,1,0
4849
-,0,28,9695,24,1,0
4850
-,1,1755,9697,24,1,0
4851
-,0,28,9699,24,1,0
4852
-,1,1755,9701,24,1,0
4853
-,0,28,9703,24,1,0
4854
-,1,1755,9705,24,1,0
4855
-,0,28,9707,24,1,0
4856
-,1,1755,9709,16,1,0
4857
-,0,28,9711,24,1,0
4858
-,1,1755,9713,16,1,0
4859
-,0,28,9715,24,1,0
4860
-,1,1755,9717,16,1,0
4861
-,0,28,9719,24,1,0
4862
-,1,1755,9721,24,1,0
4863
-,0,28,9723,24,1,0
4864
-,1,1755,9725,48,1,0
4865
-,0,28,9727,24,1,0
4866
-,1,1755,9729,32,1,0
4867
-,0,28,9731,24,1,0
4868
-,2,1948,9733,56,1,0
4869
-,1,1755,9735,24,1,0
4870
-,0,28,9737,24,1,0
4871
-,1,1755,9739,24,1,0
4872
-,0,28,9741,24,1,0
4873
-,1,1755,9743,24,1,0
4874
-,0,28,9745,24,1,0
4875
-,1,1755,9747,24,1,0
4876
-,0,28,9749,24,1,0
4877
-,1,1755,9751,24,1,0
4878
-,0,28,9753,24,1,0
4879
-,1,1755,9755,24,1,0
4880
-,0,28,9757,24,1,0
4881
-,1,1,9759,120,1,0
4882
-,0,28,9761,24,1,0
4883
-,2,1949,9763,56,1,0
4884
-,1,1,9765,120,1,0
4885
-,0,28,9767,24,1,0
4886
-,2,1950,9769,64,1,0
4887
-,1,1755,9771,24,1,0
4888
-,0,28,9773,24,1,0
4889
-,1,1755,9775,24,1,0
4890
-,0,28,9777,24,1,0
4891
-,1,1755,9779,24,1,0
4892
-,0,28,9781,24,1,0
4893
-,1,1755,9783,24,1,0
4894
-,0,28,9785,24,1,0
4895
-,1,1755,9787,24,1,0
4896
-,0,28,9789,24,1,0
4897
-,1,1755,9791,24,1,0
4898
-,0,28,9793,24,1,0
4899
-,1,1755,9795,24,1,0
4900
-,0,28,9797,24,1,0
4901
-,1,1755,9799,24,1,0
4902
-,0,28,9801,24,1,0
4903
-,1,1755,9803,24,1,0
4904
-,0,28,9805,24,1,0
4905
-,1,1755,9807,24,1,0
4906
-,0,28,9809,24,1,0
4907
-,1,1755,9811,24,1,0
4908
-,0,28,9813,24,1,0
4909
-,1,1755,9815,24,1,0
4910
-,0,28,9817,24,1,0
4911
-,1,1755,9819,24,1,0
4912
-,0,28,9821,24,1,0
4913
-,1,1755,9823,24,1,0
4914
-,0,28,9825,24,1,0
4915
-,1,1755,9827,24,1,0
4916
-,0,28,9829,24,1,0
4917
-,1,1755,9831,24,1,0
4918
-,0,28,9833,24,1,0
4919
-,1,1755,9835,24,1,0
4920
-,0,28,9837,24,1,0
4921
-,1,1755,9839,24,1,0
4922
-,0,28,9841,24,1,0
4923
-,1,1755,9843,24,1,0
4924
-,0,28,9845,24,1,0
4925
-,1,1755,9847,24,1,0
4926
-,0,28,9849,24,1,0
4927
-,1,1755,9851,24,1,0
4928
-,0,28,9853,24,1,0
4929
-,1,1755,9855,24,1,0
4930
-,0,28,9857,24,1,0
4931
-,1,1755,9859,24,1,0
4932
-,0,28,9861,24,1,0
4933
-,1,1755,9863,24,1,0
4934
-,0,28,9865,24,1,0
4935
-,1,1755,9867,24,1,0
4936
-,0,28,9869,24,1,0
4937
-,1,1755,9871,24,1,0
4938
-,0,28,9873,24,1,0
4939
-,1,1755,9875,24,1,0
4940
-,0,28,9877,24,1,0
4941
-,1,1755,9879,24,1,0
4942
-,0,28,9881,24,1,0
4943
-,1,1755,9883,24,1,0
4944
-,0,28,9885,24,1,0
4945
-,1,1755,9887,16,1,0
4946
-,0,28,9889,24,1,0
4947
-,1,1755,9891,16,1,0
4948
-,0,28,9893,24,1,0
4949
-,1,1,9895,32,1,0
4950
-,0,28,9897,24,1,0
4951
-,1,1,9899,32,1,0
4952
-,0,28,9901,24,1,0
4953
-,1,1,9903,32,1,0
4954
-,0,28,9905,24,1,0
4955
-,1,1,9907,32,1,0
4956
-,0,28,9909,24,1,0
4957
-,1,1,9911,32,1,0
4958
-,0,28,9913,24,1,0
4959
-,1,1,9915,32,1,0
4960
-,0,28,9917,24,1,0
4961
-,1,1,9919,32,1,0
4962
-,0,28,9921,24,1,0
4963
-,1,1,9923,32,1,0
4964
-,0,28,9925,24,1,0
4965
-,1,1,9927,32,1,0
4966
-,0,28,9929,24,1,0
4967
-,1,1755,9931,16,1,0
4968
-,0,28,9933,24,1,0
4969
-,1,1755,9935,16,1,0
4970
-,0,28,9937,24,1,0
4971
-,1,1755,9939,16,1,0
4972
-,0,28,9941,24,1,0
4973
-,1,1755,9943,16,1,0
4974
-,0,28,9945,24,1,0
4975
-,1,1755,9947,16,1,0
4976
-,0,28,9949,24,1,0
4977
-,1,1755,9951,16,1,0
4978
-,0,28,9953,24,1,0
4979
-,1,1755,9955,16,1,0
4980
-,0,28,9957,24,1,0
4981
-,1,1755,9959,16,1,0
4982
-,0,28,9961,24,1,0
4983
-,1,1755,9963,80,1,0
4984
-,0,28,9965,24,1,0
4985
-,1,1755,9967,72,1,0
4986
-,0,28,9969,24,1,0
4987
-,1,1,9971,24,1,0
4988
-,0,28,9973,24,1,0
4989
-,1,1755,9975,16,1,0
4990
-,0,28,9977,24,1,0
4991
-,1,1755,9979,16,1,0
4992
-,0,28,9981,24,1,0
4993
-,1,1755,9983,16,1,0
4994
-,0,28,9985,24,1,0
4995
-,1,1755,9987,16,1,0
4996
-,0,28,9989,24,1,0
4997
-,1,1755,9991,16,1,0
4998
-,0,28,9993,24,1,0
4999
-,1,1755,9995,16,1,0
This file is too large to show in full.
meshagent.js
+270
-280
@@ -14,85 +14,76 @@
14
/*jshint esversion: 6 */
15
"use strict";
16
17
-var AgentConnectCount = 0;
18
-
17
// Construct a MeshAgent object, called upon connection
18
module.exports.CreateMeshAgent = function (parent, db, ws, req, args, domain) {
19
+ const forge = parent.parent.certificateOperations.forge;
20
+ const common = parent.parent.common;
21
+ const agentUpdateBlockSize = 65520;
22
+
23
var obj = {};
22
- obj.parent = parent;
23
- obj.db = db;
24
- obj.ws = ws;
25
- obj.fs = parent.fs;
26
- obj.args = args;
27
- obj.nodeid = null;
28
- obj.meshid = null;
29
- obj.dbNodeKey = null;
30
- obj.dbMeshKey = null;
31
- obj.forge = parent.parent.certificateOperations.forge;
32
- obj.common = parent.parent.common;
33
- obj.authenticated = 0;
24
obj.domain = domain;
25
+ obj.authenticated = 0;
26
obj.receivedCommands = 0;
36
- obj.connectTime = null;
27
obj.agentCoreCheck = 0;
38
- obj.agentInfo = null;
39
- obj.agentUpdate = null;
40
- obj.agentCoreUpdatePending = false;
41
- const agentUpdateBlockSize = 65520;
42
- obj.remoteaddr = req.ip;
43
- if (obj.remoteaddr.startsWith('::ffff:')) { obj.remoteaddr = obj.remoteaddr.substring(7); }
44
- obj.remoteaddrport = obj.remoteaddr + ':' + obj.ws._socket.remotePort;
45
- obj.agentConnectCount = ++AgentConnectCount;
28
+ obj.remoteaddr = (req.ip.startsWith('::ffff:')) ? (req.ip.substring(7)) : req.ip;
29
+ obj.remoteaddrport = obj.remoteaddr + ':' + ws._socket.remotePort;
30
+ obj.nonce = parent.crypto.randomBytes(48).toString('binary');
31
ws._socket.setKeepAlive(true, 240000); // Set TCP keep alive, 4 minutes
32
+ //obj.nodeid = null;
33
+ //obj.meshid = null;
34
+ //obj.dbNodeKey = null;
35
+ //obj.dbMeshKey = null;
36
+ //obj.connectTime = null;
37
+ //obj.agentInfo = null;
38
39
// Send a message to the mesh agent
49
- obj.send = function (data, func) { try { if (typeof data == 'string') { obj.ws.send(Buffer.from(data, 'binary'), func); } else { obj.ws.send(data, func); } } catch (e) { } };
40
+ obj.send = function (data, func) { try { if (typeof data == 'string') { ws.send(Buffer.from(data, 'binary'), func); } else { ws.send(data, func); } } catch (e) { } };
41
42
// Disconnect this agent
43
obj.close = function (arg) {
44
obj.authenticated = -1;
54
- if ((arg == 1) || (arg == null)) { try { obj.ws.close(); if (obj.nodeid != null) { obj.parent.parent.debug(1, 'Soft disconnect ' + obj.nodeid + ' (' + obj.remoteaddrport + ')'); } } catch (e) { console.log(e); } } // Soft close, close the websocket
55
- if (arg == 2) { try { obj.ws._socket._parent.end(); if (obj.nodeid != null) { obj.parent.parent.debug(1, 'Hard disconnect ' + obj.nodeid + ' (' + obj.remoteaddrport + ')'); } } catch (e) { console.log(e); } } // Hard close, close the TCP socket
45
+ if ((arg == 1) || (arg == null)) { try { ws.close(); if (obj.nodeid != null) { parent.parent.debug(1, 'Soft disconnect ' + obj.nodeid + ' (' + obj.remoteaddrport + ')'); } } catch (e) { console.log(e); } } // Soft close, close the websocket
46
+ if (arg == 2) { try { ws._socket._parent.end(); if (obj.nodeid != null) { parent.parent.debug(1, 'Hard disconnect ' + obj.nodeid + ' (' + obj.remoteaddrport + ')'); } } catch (e) { console.log(e); } } // Hard close, close the TCP socket
47
// If arg == 3, don't communicate with this agent anymore, but don't disconnect (Duplicate agent).
57
- if (obj.parent.wsagents[obj.dbNodeKey] == obj) {
58
- delete obj.parent.wsagents[obj.dbNodeKey];
59
- obj.parent.parent.ClearConnectivityState(obj.dbMeshKey, obj.dbNodeKey, 1);
48
+ if (parent.wsagents[obj.dbNodeKey] == obj) {
49
+ delete parent.wsagents[obj.dbNodeKey];
50
+ parent.parent.ClearConnectivityState(obj.dbMeshKey, obj.dbNodeKey, 1);
51
}
52
53
// Get the current mesh
63
- var mesh = obj.parent.meshes[obj.dbMeshKey];
54
+ const mesh = parent.meshes[obj.dbMeshKey];
55
56
// Other clean up may be needed here
57
if (obj.unauth) { delete obj.unauth; }
58
if (obj.agentUpdate != null) {
68
- if (obj.fs) { try { obj.fs.close(obj.agentUpdate.fd); } catch (ex) { } obj.fs = null; }
69
- obj.parent.parent.taskLimiter.completed(obj.agentUpdate.taskid); // Indicate this task complete
70
- obj.agentUpdate = null;
59
+ if (obj.agentUpdate.fd) { try { parent.fs.close(obj.agentUpdate.fd); } catch (ex) { } }
60
+ parent.parent.taskLimiter.completed(obj.agentUpdate.taskid); // Indicate this task complete
61
+ delete obj.agentUpdate;
62
}
63
64
// If this is a temporary or recovery agent, or all devices in this group are temporary, remove the agent (0x20 = Temporary, 0x40 = Recovery)
65
if (((obj.agentInfo) && (obj.agentInfo.capabilities) && ((obj.agentInfo.capabilities & 0x20) || (obj.agentInfo.capabilities & 0x40))) || ((mesh) && (mesh.flags) && (mesh.flags & 1))) {
66
// Delete this node including network interface information and events
76
- obj.db.Remove(obj.dbNodeKey); // Remove node with that id
77
- obj.db.Remove('if' + obj.dbNodeKey); // Remove interface information
78
- obj.db.Remove('nt' + obj.dbNodeKey); // Remove notes
79
- obj.db.Remove('lc' + obj.dbNodeKey); // Remove last connect time
80
- obj.db.RemoveSMBIOS(obj.dbNodeKey); // Remove SMBios data
81
- obj.db.RemoveAllNodeEvents(obj.dbNodeKey); // Remove all events for this node
82
- obj.db.removeAllPowerEventsForNode(obj.dbNodeKey); // Remove all power events for this node
67
+ db.Remove(obj.dbNodeKey); // Remove node with that id
68
+ db.Remove('if' + obj.dbNodeKey); // Remove interface information
69
+ db.Remove('nt' + obj.dbNodeKey); // Remove notes
70
+ db.Remove('lc' + obj.dbNodeKey); // Remove last connect time
71
+ db.RemoveSMBIOS(obj.dbNodeKey); // Remove SMBios data
72
+ db.RemoveAllNodeEvents(obj.dbNodeKey); // Remove all events for this node
73
+ db.removeAllPowerEventsForNode(obj.dbNodeKey); // Remove all power events for this node
74
75
// Event node deletion
85
- obj.parent.parent.DispatchEvent(['*', obj.dbMeshKey], obj, { etype: 'node', action: 'removenode', nodeid: obj.dbNodeKey, domain: obj.domain.id, nolog: 1 });
76
+ parent.parent.DispatchEvent(['*', obj.dbMeshKey], obj, { etype: 'node', action: 'removenode', nodeid: obj.dbNodeKey, domain: domain.id, nolog: 1 });
77
78
// Disconnect all connections if needed
88
- var state = obj.parent.parent.GetConnectivityState(obj.dbNodeKey);
79
+ const state = parent.parent.GetConnectivityState(obj.dbNodeKey);
80
if ((state != null) && (state.connectivity != null)) {
90
- if ((state.connectivity & 1) != 0) { obj.parent.wsagents[obj.dbNodeKey].close(); } // Disconnect mesh agent
91
- if ((state.connectivity & 2) != 0) { obj.parent.parent.mpsserver.close(obj.parent.parent.mpsserver.ciraConnections[obj.dbNodeKey]); } // Disconnect CIRA connection
81
+ if ((state.connectivity & 1) != 0) { parent.wsagents[obj.dbNodeKey].close(); } // Disconnect mesh agent
82
+ if ((state.connectivity & 2) != 0) { parent.parent.mpsserver.close(parent.parent.mpsserver.ciraConnections[obj.dbNodeKey]); } // Disconnect CIRA connection
83
}
84
} else {
85
// Update the last connect time
95
- if (obj.authenticated == 2) { obj.db.Set({ _id: 'lc' + obj.dbNodeKey, type: 'lastconnect', domain: domain.id, time: obj.connectTime, addr: obj.remoteaddrport }); }
86
+ if (obj.authenticated == 2) { db.Set({ _id: 'lc' + obj.dbNodeKey, type: 'lastconnect', domain: domain.id, time: obj.connectTime, addr: obj.remoteaddrport }); }
87
}
88
delete obj.nodeid;
89
};
@@ -105,14 +96,14 @@ module.exports.CreateMeshAgent = function (parent, db, ws, req, args, domain) {
96
if (obj.authenticated == 2) { // We are authenticated
97
if ((obj.agentUpdate == null) && (msg.charCodeAt(0) == 123)) { processAgentData(msg); } // Only process JSON messages if meshagent update is not in progress
98
if (msg.length < 2) return;
108
- var cmdid = obj.common.ReadShort(msg, 0);
99
+ const cmdid = common.ReadShort(msg, 0);
100
if (cmdid == 11) { // MeshCommand_CoreModuleHash
101
if (msg.length == 4) { ChangeAgentCoreInfo({ "caps": 0 }); } // If the agent indicated that no core is running, clear the core information string.
102
// Mesh core hash, sent by agent with the hash of the current mesh core.
103
104
// If we are using a custom core, don't try to update it.
105
if (obj.agentCoreCheck == 1000) {
115
- obj.send(obj.common.ShortToStr(16) + obj.common.ShortToStr(0)); // MeshCommand_CoreOk. Indicates to the agent that the core is ok. Start it if it's not already started.
106
+ obj.send(common.ShortToStr(16) + common.ShortToStr(0)); // MeshCommand_CoreOk. Indicates to the agent that the core is ok. Start it if it's not already started.
107
agentCoreIsStable();
108
return;
109
}
@@ -120,57 +111,61 @@ module.exports.CreateMeshAgent = function (parent, db, ws, req, args, domain) {
111
// Get the current meshcore hash
112
const agentMeshCoreHash = (msg.length == 52) ? msg.substring(4, 52) : null;
113
123
- // If the agent indicates this is a custom core, we are done. TODO: Speed up this compare.
124
- if ((agentMeshCoreHash != null) && (Buffer.from(agentMeshCoreHash, 'binary').toString('hex') == '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000')) {
114
+ // If the agent indicates this is a custom core, we are done.
115
+ if ((agentMeshCoreHash != null) && (agentMeshCoreHash == '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0')) {
116
obj.agentCoreCheck = 0;
126
- obj.send(obj.common.ShortToStr(16) + obj.common.ShortToStr(0)); // MeshCommand_CoreOk. Indicates to the agent that the core is ok. Start it if it's not already started.
117
+ obj.send(common.ShortToStr(16) + common.ShortToStr(0)); // MeshCommand_CoreOk. Indicates to the agent that the core is ok. Start it if it's not already started.
118
agentCoreIsStable();
119
return;
120
}
121
131
- // We need to check if the core is current. First, figure out what core we need.
132
- var corename = obj.parent.parent.meshAgentsArchitectureNumbers[obj.agentInfo.agentId].core;
133
-
134
- // If this is a recovery agent, use the agent recovery core
135
- if (obj.agentInfo.capabilities & 0x40) { corename = obj.parent.parent.meshAgentsArchitectureNumbers[obj.agentInfo.agentId].arcore; }
136
-
137
- // If the user asked, use the recovery core.
138
- if (obj.agentCoreCheck == 1001) { corename = obj.parent.parent.meshAgentsArchitectureNumbers[obj.agentInfo.agentId].rcore; }
122
+ // We need to check if the core is current. Figure out what core we need.
123
+ var corename;
124
+ if (obj.agentCoreCheck == 1001) {
125
+ // If the user asked, use the recovery core.
126
+ corename = parent.parent.meshAgentsArchitectureNumbers[obj.agentInfo.agentId].rcore;
127
+ } else if (obj.agentInfo.capabilities & 0x40) {
128
+ // If this is a recovery agent, use the agent recovery core.
129
+ corename = parent.parent.meshAgentsArchitectureNumbers[obj.agentInfo.agentId].arcore;
130
+ } else {
131
+ // This is the normal core for this agent type.
132
+ corename = parent.parent.meshAgentsArchitectureNumbers[obj.agentInfo.agentId].core;
133
+ }
134
135
// If we have a core, use it.
136
if (corename != null) {
142
- const meshcorehash = obj.parent.parent.defaultMeshCoresHash[corename];
137
+ const meshcorehash = parent.parent.defaultMeshCoresHash[corename];
138
if (agentMeshCoreHash != meshcorehash) {
139
if ((obj.agentCoreCheck < 5) || (obj.agentCoreCheck == 1001)) {
140
if (meshcorehash == null) {
141
// Clear the core
147
- obj.send(obj.common.ShortToStr(10) + obj.common.ShortToStr(0)); // MeshCommand_CoreModule, ask mesh agent to clear the core
148
- obj.parent.parent.debug(1, 'Clearing core');
142
+ obj.send(common.ShortToStr(10) + common.ShortToStr(0)); // MeshCommand_CoreModule, ask mesh agent to clear the core
143
+ parent.parent.debug(1, 'Clearing core');
144
} else {
145
// Update new core
151
- //obj.send(obj.common.ShortToStr(10) + obj.common.ShortToStr(0) + meshcorehash + obj.parent.parent.defaultMeshCores[corename]); // MeshCommand_CoreModule, start core update
152
- //obj.parent.parent.debug(1, 'Updating code ' + corename);
146
+ //obj.send(common.ShortToStr(10) + common.ShortToStr(0) + meshcorehash + parent.parent.defaultMeshCores[corename]); // MeshCommand_CoreModule, start core update
147
+ //parent.parent.debug(1, 'Updating code ' + corename);
148
149
// Update new core with task limiting so not to flood the server. This is a high priority task.
150
obj.agentCoreUpdatePending = true;
156
- obj.parent.parent.taskLimiter.launch(function (argument, taskid, taskLimiterQueue) {
151
+ parent.parent.taskLimiter.launch(function (argument, taskid, taskLimiterQueue) {
152
if (obj.authenticated == 2) {
153
// Send the updated code.
159
- obj.agentCoreUpdatePending = false;
160
- obj.send(obj.common.ShortToStr(10) + obj.common.ShortToStr(0) + argument.hash + argument.core, function () { obj.parent.parent.taskLimiter.completed(taskid); }); // MeshCommand_CoreModule, start core update
161
- obj.parent.parent.debug(1, 'Updating code ' + argument.name);
154
+ delete obj.agentCoreUpdatePending;
155
+ obj.send(common.ShortToStr(10) + common.ShortToStr(0) + argument.hash + argument.core, function () { parent.parent.taskLimiter.completed(taskid); }); // MeshCommand_CoreModule, start core update
156
+ parent.parent.debug(1, 'Updating code ' + argument.name);
157
agentCoreIsStable();
158
} else {
159
// This agent is probably disconnected, nothing to do.
165
- obj.parent.parent.taskLimiter.completed(taskid);
160
+ parent.parent.taskLimiter.completed(taskid);
161
}
167
- }, { hash: meshcorehash, core: obj.parent.parent.defaultMeshCores[corename], name: corename }, 0);
162
+ }, { hash: meshcorehash, core: parent.parent.defaultMeshCores[corename], name: corename }, 0);
163
}
164
obj.agentCoreCheck++;
165
}
166
} else {
167
obj.agentCoreCheck = 0;
173
- obj.send(obj.common.ShortToStr(16) + obj.common.ShortToStr(0)); // MeshCommand_CoreOk. Indicates to the agent that the core is ok. Start it if it's not already started.
168
+ obj.send(common.ShortToStr(16) + common.ShortToStr(0)); // MeshCommand_CoreOk. Indicates to the agent that the core is ok. Start it if it's not already started.
169
agentCoreIsStable(); // No updates needed, agent is ready to go.
170
}
171
}
@@ -179,17 +174,17 @@ module.exports.CreateMeshAgent = function (parent, db, ws, req, args, domain) {
174
// TODO: Check if we have a mesh specific core. If so, use that.
175
var agentMeshCoreHash = null;
176
if (msg.length == 52) { agentMeshCoreHash = msg.substring(4, 52); }
182
- if ((agentMeshCoreHash != obj.parent.parent.defaultMeshCoreHash) && (agentMeshCoreHash != obj.parent.parent.defaultMeshCoreNoMeiHash)) {
177
+ if ((agentMeshCoreHash != parent.parent.defaultMeshCoreHash) && (agentMeshCoreHash != parent.parent.defaultMeshCoreNoMeiHash)) {
178
if (obj.agentCoreCheck < 5) { // This check is in place to avoid a looping core update.
184
- if (obj.parent.parent.defaultMeshCoreHash == null) {
179
+ if (parent.parent.defaultMeshCoreHash == null) {
180
// Update no core
186
- obj.send(obj.common.ShortToStr(10) + obj.common.ShortToStr(0)); // Command 10, ask mesh agent to clear the core
181
+ obj.send(common.ShortToStr(10) + common.ShortToStr(0)); // Command 10, ask mesh agent to clear the core
182
} else {
183
// Update new core
189
- if (obj.parent.parent.meshAgentsArchitectureNumbers[obj.agentInfo.agentId].amt == true) {
190
- obj.send(obj.common.ShortToStr(10) + obj.common.ShortToStr(0) + obj.parent.parent.defaultMeshCoreHash + obj.parent.parent.defaultMeshCore); // Command 10, ask mesh agent to set the core (with MEI support)
184
+ if (parent.parent.meshAgentsArchitectureNumbers[obj.agentInfo.agentId].amt == true) {
185
+ obj.send(common.ShortToStr(10) + common.ShortToStr(0) + parent.parent.defaultMeshCoreHash + parent.parent.defaultMeshCore); // Command 10, ask mesh agent to set the core (with MEI support)
186
} else {
192
- obj.send(obj.common.ShortToStr(10) + obj.common.ShortToStr(0) + obj.parent.parent.defaultMeshCoreNoMeiHash + obj.parent.parent.defaultMeshCoreNoMei); // Command 10, ask mesh agent to set the core (No MEI)
187
+ obj.send(common.ShortToStr(10) + common.ShortToStr(0) + parent.parent.defaultMeshCoreNoMeiHash + parent.parent.defaultMeshCoreNoMei); // Command 10, ask mesh agent to set the core (No MEI)
188
}
189
}
190
obj.agentCoreCheck++;
@@ -201,55 +196,55 @@ module.exports.CreateMeshAgent = function (parent, db, ws, req, args, domain) {
196
}
197
else if (cmdid == 12) { // MeshCommand_AgentHash
198
if ((msg.length == 52) && (obj.agentExeInfo != null) && (obj.agentExeInfo.update == true)) {
204
- var agenthash = obj.common.rstr2hex(msg.substring(4)).toLowerCase();
205
- if ((agenthash != obj.agentExeInfo.hash) && (agenthash != '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000')) {
199
+ const agenthash = msg.substring(4);
200
+ if ((agenthash != obj.agentExeInfo.hash) && (agenthash != '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0')) {
201
// Mesh agent update required, do it using task limiter so not to flood the network. Medium priority task.
207
- obj.parent.parent.taskLimiter.launch(function (argument, taskid, taskLimiterQueue) {
208
- if (obj.authenticated != 2) { obj.parent.parent.taskLimiter.completed(taskid); return; } // If agent disconnection, complete and exit now.
209
- if (obj.nodeid != null) { obj.parent.parent.debug(1, 'Agent update required, NodeID=0x' + obj.nodeid.substring(0, 16) + ', ' + obj.agentExeInfo.desc); }
202
+ parent.parent.taskLimiter.launch(function (argument, taskid, taskLimiterQueue) {
203
+ if (obj.authenticated != 2) { parent.parent.taskLimiter.completed(taskid); return; } // If agent disconnection, complete and exit now.
204
+ if (obj.nodeid != null) { parent.parent.debug(1, 'Agent update required, NodeID=0x' + obj.nodeid.substring(0, 16) + ', ' + obj.agentExeInfo.desc); }
205
if (obj.agentExeInfo.data == null) {
206
// Read the agent from disk
212
- obj.fs.open(obj.agentExeInfo.path, 'r', function (err, fd) {
207
+ parent.fs.open(obj.agentExeInfo.path, 'r', function (err, fd) {
208
if (err) { return console.error(err); }
214
- obj.agentUpdate = { oldHash: agenthash, ptr: 0, buf: Buffer.alloc(agentUpdateBlockSize + 4), fd: fd, taskid: taskid };
209
+ obj.agentUpdate = { ptr: 0, buf: Buffer.alloc(agentUpdateBlockSize + 4), fd: fd, taskid: taskid };
210
211
// MeshCommand_CoreModule, ask mesh agent to clear the core.
212
// The new core will only be sent after the agent updates.
218
- obj.send(obj.common.ShortToStr(10) + obj.common.ShortToStr(0));
213
+ obj.send(common.ShortToStr(10) + common.ShortToStr(0));
214
215
// We got the agent file open on the server side, tell the agent we are sending an update starting with the SHA384 hash of the result
216
//console.log("Agent update file open.");
222
- obj.send(obj.common.ShortToStr(13) + obj.common.ShortToStr(0)); // Command 13, start mesh agent download
217
+ obj.send(common.ShortToStr(13) + common.ShortToStr(0)); // Command 13, start mesh agent download
218
219
// Send the first mesh agent update data block
220
obj.agentUpdate.buf[0] = 0;
221
obj.agentUpdate.buf[1] = 14;
222
obj.agentUpdate.buf[2] = 0;
223
obj.agentUpdate.buf[3] = 1;
229
- var len = -1;
230
- try { len = obj.fs.readSync(obj.agentUpdate.fd, obj.agentUpdate.buf, 4, agentUpdateBlockSize, obj.agentUpdate.ptr); } catch (e) { }
231
- if (len == -1) {
232
- // Error reading the agent file, stop here.
233
- obj.fs.close(obj.agentUpdate.fd);
234
- obj.parent.parent.taskLimiter.completed(obj.agentUpdate.taskid); // Indicate this task complete
235
- obj.agentUpdate = null;
236
- } else {
237
- // Send the first block to the agent
238
- obj.agentUpdate.ptr += len;
239
- //console.log("Agent update send first block: " + len);
240
- obj.send(obj.agentUpdate.buf); // Command 14, mesh agent first data block
241
- }
224
+ parent.fs.read(obj.agentUpdate.fd, obj.agentUpdate.buf, 4, agentUpdateBlockSize, obj.agentUpdate.ptr, function (err, bytesRead, buffer) {
225
+ if ((err != null) || (bytesRead == 0)) {
226
+ // Error reading the agent file, stop here.
227
+ try { parent.fs.close(obj.agentUpdate.fd); } catch (ex) { }
228
+ parent.parent.taskLimiter.completed(obj.agentUpdate.taskid); // Indicate this task complete
229
+ delete obj.agentUpdate;
230
+ } else {
231
+ // Send the first block to the agent
232
+ obj.agentUpdate.ptr += bytesRead;
233
+ //console.log("Agent update send first block: " + bytesRead);
234
+ obj.send(obj.agentUpdate.buf); // Command 14, mesh agent first data block
235
+ }
236
+ });
237
});
238
} else {
239
// Send the agent from RAM
245
- obj.agentUpdate = { oldHash: agenthash, ptr: 0, buf: Buffer.alloc(agentUpdateBlockSize + 4), taskid: taskid };
240
+ obj.agentUpdate = { ptr: 0, buf: Buffer.alloc(agentUpdateBlockSize + 4), taskid: taskid };
241
242
// MeshCommand_CoreModule, ask mesh agent to clear the core.
243
// The new core will only be sent after the agent updates.
249
- obj.send(obj.common.ShortToStr(10) + obj.common.ShortToStr(0));
244
+ obj.send(common.ShortToStr(10) + common.ShortToStr(0));
245
246
// We got the agent file open on the server side, tell the agent we are sending an update starting with the SHA384 hash of the result
252
- obj.send(obj.common.ShortToStr(13) + obj.common.ShortToStr(0)); // Command 13, start mesh agent download
247
+ obj.send(common.ShortToStr(13) + common.ShortToStr(0)); // Command 13, start mesh agent download
248
249
// Send the first mesh agent update data block
250
obj.agentUpdate.buf[0] = 0;
@@ -257,7 +252,7 @@ module.exports.CreateMeshAgent = function (parent, db, ws, req, args, domain) {
252
obj.agentUpdate.buf[2] = 0;
253
obj.agentUpdate.buf[3] = 1;
254
260
- var len = Math.min(agentUpdateBlockSize, obj.agentExeInfo.data.length - obj.agentUpdate.ptr);
255
+ const len = Math.min(agentUpdateBlockSize, obj.agentExeInfo.data.length - obj.agentUpdate.ptr);
256
if (len > 0) {
257
// Send the first block
258
obj.agentExeInfo.data.copy(obj.agentUpdate.buf, 4, obj.agentUpdate.ptr, obj.agentUpdate.ptr + len);
@@ -265,50 +260,49 @@ module.exports.CreateMeshAgent = function (parent, db, ws, req, args, domain) {
260
obj.send(obj.agentUpdate.buf); // Command 14, mesh agent first data block
261
} else {
262
// Error
268
- obj.parent.parent.taskLimiter.completed(obj.agentUpdate.taskid); // Indicate this task complete
269
- obj.agentUpdate = null;
263
+ parent.parent.taskLimiter.completed(obj.agentUpdate.taskid); // Indicate this task complete
264
+ delete obj.agentUpdate;
265
}
266
}
267
}, null, 1);
268
269
} else {
270
// Check the mesh core, if the agent is capable of running one
276
- if (((obj.agentInfo.capabilities & 16) != 0) && (obj.parent.parent.meshAgentsArchitectureNumbers[obj.agentInfo.agentId].core != null)) {
277
- obj.send(obj.common.ShortToStr(11) + obj.common.ShortToStr(0)); // Command 11, ask for mesh core hash.
271
+ if (((obj.agentInfo.capabilities & 16) != 0) && (parent.parent.meshAgentsArchitectureNumbers[obj.agentInfo.agentId].core != null)) {
272
+ obj.send(common.ShortToStr(11) + common.ShortToStr(0)); // Command 11, ask for mesh core hash.
273
}
274
}
275
}
276
}
277
else if (cmdid == 14) { // MeshCommand_AgentBinaryBlock
278
if ((msg.length == 4) && (obj.agentUpdate != null)) {
284
- var status = obj.common.ReadShort(msg, 2);
279
+ const status = common.ReadShort(msg, 2);
280
if (status == 1) {
281
if (obj.agentExeInfo.data == null) {
282
// Read the agent from disk
288
- var len = -1;
289
- try { len = obj.fs.readSync(obj.agentUpdate.fd, obj.agentUpdate.buf, 4, agentUpdateBlockSize, obj.agentUpdate.ptr); } catch (e) { }
290
- if (len == -1) {
291
- // Error reading the agent file, stop here.
292
- obj.fs.close(obj.agentUpdate.fd);
293
- obj.parent.parent.taskLimiter.completed(obj.agentUpdate.taskid); // Indicate this task complete
294
- obj.agentUpdate = null;
295
- } else {
296
- // Send the next block to the agent
297
- obj.agentUpdate.ptr += len;
298
- //console.log("Agent update send next block", obj.agentUpdate.ptr, len);
299
- if (len == agentUpdateBlockSize) { obj.send(obj.agentUpdate.buf); } else { obj.send(obj.agentUpdate.buf.slice(0, len + 4)); } // Command 14, mesh agent next data block
300
-
301
- if (len < agentUpdateBlockSize) {
302
- //console.log("Agent update sent from disk.");
303
- obj.send(obj.common.ShortToStr(13) + obj.common.ShortToStr(0) + obj.common.hex2rstr(obj.agentExeInfo.hash)); // Command 13, end mesh agent download, send agent SHA384 hash
304
- obj.fs.close(obj.agentUpdate.fd);
305
- obj.parent.parent.taskLimiter.completed(obj.agentUpdate.taskid); // Indicate this task complete
306
- obj.agentUpdate = null;
283
+ parent.fs.read(obj.agentUpdate.fd, obj.agentUpdate.buf, 4, agentUpdateBlockSize, obj.agentUpdate.ptr, function (err, bytesRead, buffer) {
284
+ if ((err != null) || (bytesRead < 0)) {
285
+ // Error reading the agent file, stop here.
286
+ try { parent.fs.close(obj.agentUpdate.fd); } catch (ex) { }
287
+ parent.parent.taskLimiter.completed(obj.agentUpdate.taskid); // Indicate this task complete
288
+ delete obj.agentUpdate;
289
+ } else {
290
+ // Send the next block to the agent
291
+ obj.agentUpdate.ptr += bytesRead;
292
+ //console.log("Agent update send next block", obj.agentUpdate.ptr, bytesRead);
293
+ if (bytesRead == agentUpdateBlockSize) { obj.send(obj.agentUpdate.buf); } else { obj.send(obj.agentUpdate.buf.slice(0, bytesRead + 4)); } // Command 14, mesh agent next data block
294
+ if (bytesRead < agentUpdateBlockSize) {
295
+ //console.log("Agent update sent from disk.");
296
+ obj.send(common.ShortToStr(13) + common.ShortToStr(0) + obj.agentExeInfo.hash); // Command 13, end mesh agent download, send agent SHA384 hash
297
+ try { parent.fs.close(obj.agentUpdate.fd); } catch (ex) { }
298
+ parent.parent.taskLimiter.completed(obj.agentUpdate.taskid); // Indicate this task complete
299
+ delete obj.agentUpdate;
300
+ }
301
}
308
- }
302
+ });
303
} else {
304
// Send the agent from RAM
311
- var len = Math.min(agentUpdateBlockSize, obj.agentExeInfo.data.length - obj.agentUpdate.ptr);
305
+ const len = Math.min(agentUpdateBlockSize, obj.agentExeInfo.data.length - obj.agentUpdate.ptr);
306
if (len > 0) {
307
obj.agentExeInfo.data.copy(obj.agentUpdate.buf, 4, obj.agentUpdate.ptr, obj.agentUpdate.ptr + len);
308
if (len == agentUpdateBlockSize) { obj.send(obj.agentUpdate.buf); } else { obj.send(obj.agentUpdate.buf.slice(0, len + 4)); } // Command 14, mesh agent next data block
@@ -317,9 +311,9 @@ module.exports.CreateMeshAgent = function (parent, db, ws, req, args, domain) {
311
312
if (obj.agentUpdate.ptr == obj.agentExeInfo.data.length) {
313
//console.log("Agent update sent from RAM.");
320
- obj.send(obj.common.ShortToStr(13) + obj.common.ShortToStr(0) + obj.common.hex2rstr(obj.agentExeInfo.hash)); // Command 13, end mesh agent download, send agent SHA384 hash
321
- obj.parent.parent.taskLimiter.completed(obj.agentUpdate.taskid); // Indicate this task complete
322
- obj.agentUpdate = null;
314
+ obj.send(common.ShortToStr(13) + common.ShortToStr(0) + obj.agentExeInfo.hash); // Command 13, end mesh agent download, send agent SHA384 hash
315
+ parent.parent.taskLimiter.completed(obj.agentUpdate.taskid); // Indicate this task complete
316
+ delete obj.agentUpdate;
317
}
318
}
319
}
@@ -331,19 +325,19 @@ module.exports.CreateMeshAgent = function (parent, db, ws, req, args, domain) {
325
ChangeAgentTag(tag);
326
}
327
} else if (obj.authenticated < 2) { // We are not authenticated
334
- var cmd = obj.common.ReadShort(msg, 0);
328
+ const cmd = common.ReadShort(msg, 0);
329
if (cmd == 1) {
330
// Agent authentication request
331
if ((msg.length != 98) || ((obj.receivedCommands & 1) != 0)) return;
332
obj.receivedCommands += 1; // Agent can't send the same command twice on the same connection ever. Block DOS attack path.
333
340
- if (obj.args.ignoreagenthashcheck === true) {
334
+ if (args.ignoreagenthashcheck === true) {
335
// Send the agent web hash back to the agent
342
- obj.send(obj.common.ShortToStr(1) + msg.substring(2, 50) + obj.nonce); // Command 1, hash + nonce. Use the web hash given by the agent.
336
+ obj.send(common.ShortToStr(1) + msg.substring(2, 50) + obj.nonce); // Command 1, hash + nonce. Use the web hash given by the agent.
337
} else {
338
// Check that the server hash matches our own web certificate hash (SHA384)
345
- if ((getWebCertHash(obj.domain) != msg.substring(2, 50)) && (getWebCertFullHash(obj.domain) != msg.substring(2, 50))) {
346
- console.log('Agent bad web cert hash (Agent:' + (Buffer.from(msg.substring(2, 50), 'binary').toString('hex').substring(0, 10)) + ' != Server:' + (Buffer.from(getWebCertHash(obj.domain), 'binary').toString('hex').substring(0, 10)) + ' or ' + (new Buffer(getWebCertFullHash(obj.domain), 'binary').toString('hex').substring(0, 10)) + '), holding connection (' + obj.remoteaddrport + ').');
339
+ if ((getWebCertHash(domain) != msg.substring(2, 50)) && (getWebCertFullHash(domain) != msg.substring(2, 50))) {
340
+ console.log('Agent bad web cert hash (Agent:' + (Buffer.from(msg.substring(2, 50), 'binary').toString('hex').substring(0, 10)) + ' != Server:' + (Buffer.from(getWebCertHash(domain), 'binary').toString('hex').substring(0, 10)) + ' or ' + (new Buffer(getWebCertFullHash(domain), 'binary').toString('hex').substring(0, 10)) + '), holding connection (' + obj.remoteaddrport + ').');
341
console.log('Agent reported web cert hash:' + (Buffer.from(msg.substring(2, 50), 'binary').toString('hex')) + '.');
342
return;
343
}
@@ -357,15 +351,15 @@ module.exports.CreateMeshAgent = function (parent, db, ws, req, args, domain) {
351
// If we did not get an indication that the agent already validated this server, send the server signature.
352
if (obj.useSwarmCert == true) {
353
// Perform the hash signature using older swarm server certificate
360
- obj.parent.parent.certificateOperations.acceleratorPerformSignature(1, msg.substring(2) + obj.nonce, obj, function (obj2, signature) {
354
+ parent.parent.certificateOperations.acceleratorPerformSignature(1, msg.substring(2) + obj.nonce, obj, function (obj2, signature) {
355
// Send back our certificate + signature
362
- obj2.send(obj2.common.ShortToStr(2) + obj2.common.ShortToStr(obj2.parent.swarmCertificateAsn1.length) + obj2.parent.swarmCertificateAsn1 + signature); // Command 2, certificate + signature
356
+ obj2.send(common.ShortToStr(2) + common.ShortToStr(obj2.parent.swarmCertificateAsn1.length) + obj2.parent.swarmCertificateAsn1 + signature); // Command 2, certificate + signature
357
});
358
} else {
359
// Perform the hash signature using the server agent certificate
366
- obj.parent.parent.certificateOperations.acceleratorPerformSignature(0, msg.substring(2) + obj.nonce, obj, function (obj2, signature) {
360
+ parent.parent.certificateOperations.acceleratorPerformSignature(0, msg.substring(2) + obj.nonce, obj, function (obj2, signature) {
361
// Send back our certificate + signature
368
- obj2.send(obj2.common.ShortToStr(2) + obj2.common.ShortToStr(obj2.parent.agentCertificateAsn1.length) + obj2.parent.agentCertificateAsn1 + signature); // Command 2, certificate + signature
362
+ obj2.send(common.ShortToStr(2) + common.ShortToStr(obj2.parent.agentCertificateAsn1.length) + obj2.parent.agentCertificateAsn1 + signature); // Command 2, certificate + signature
363
});
364
}
365
}
@@ -381,9 +375,9 @@ module.exports.CreateMeshAgent = function (parent, db, ws, req, args, domain) {
375
obj.receivedCommands += 2; // Agent can't send the same command twice on the same connection ever. Block DOS attack path.
376
377
// Decode the certificate
384
- var certlen = obj.common.ReadShort(msg, 2);
378
+ const certlen = common.ReadShort(msg, 2);
379
obj.unauth = {};
386
- try { obj.unauth.nodeid = Buffer.from(obj.forge.pki.getPublicKeyFingerprint(obj.forge.pki.certificateFromAsn1(obj.forge.asn1.fromDer(msg.substring(4, 4 + certlen))).publicKey, { md: obj.forge.md.sha384.create() }).data, 'binary').toString('base64').replace(/\+/g, '@').replace(/\//g, '$'); } catch (ex) { console.log(ex); return; }
380
+ try { obj.unauth.nodeid = Buffer.from(forge.pki.getPublicKeyFingerprint(forge.pki.certificateFromAsn1(forge.asn1.fromDer(msg.substring(4, 4 + certlen))).publicKey, { md: forge.md.sha384.create() }).data, 'binary').toString('base64').replace(/\+/g, '@').replace(/\//g, '$'); } catch (ex) { console.log(ex); return; }
381
obj.unauth.nodeCertPem = '-----BEGIN CERTIFICATE-----\r\n' + Buffer.from(msg.substring(4, 4 + certlen), 'binary').toString('base64') + '\r\n-----END CERTIFICATE-----';
382
383
// Check the agent signature if we can
@@ -397,10 +391,10 @@ module.exports.CreateMeshAgent = function (parent, db, ws, req, args, domain) {
391
392
// Set the meshid
393
obj.agentInfo = {};
400
- obj.agentInfo.infoVersion = obj.common.ReadInt(msg, 2);
401
- obj.agentInfo.agentId = obj.common.ReadInt(msg, 6);
402
- obj.agentInfo.agentVersion = obj.common.ReadInt(msg, 10);
403
- obj.agentInfo.platformType = obj.common.ReadInt(msg, 14);
394
+ obj.agentInfo.infoVersion = common.ReadInt(msg, 2);
395
+ obj.agentInfo.agentId = common.ReadInt(msg, 6);
396
+ obj.agentInfo.agentVersion = common.ReadInt(msg, 10);
397
+ obj.agentInfo.platformType = common.ReadInt(msg, 14);
398
if (obj.agentInfo.platformType > 6 || obj.agentInfo.platformType < 1) { obj.agentInfo.platformType = 1; }
399
if (msg.substring(50, 66) == '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0') {
400
obj.meshid = Buffer.from(msg.substring(18, 50), 'binary').toString('hex'); // Older HEX MeshID
@@ -408,10 +402,10 @@ module.exports.CreateMeshAgent = function (parent, db, ws, req, args, domain) {
402
obj.meshid = Buffer.from(msg.substring(18, 66), 'binary').toString('base64').replace(/\+/g, '@').replace(/\//g, '$'); // New Base64 MeshID
403
}
404
//console.log('MeshID', obj.meshid);
411
- obj.agentInfo.capabilities = obj.common.ReadInt(msg, 66);
412
- var computerNameLen = obj.common.ReadShort(msg, 70);
405
+ obj.agentInfo.capabilities = common.ReadInt(msg, 66);
406
+ const computerNameLen = common.ReadShort(msg, 70);
407
obj.agentInfo.computerName = msg.substring(72, 72 + computerNameLen);
414
- obj.dbMeshKey = 'mesh/' + obj.domain.id + '/' + obj.meshid;
408
+ obj.dbMeshKey = 'mesh/' + domain.id + '/' + obj.meshid;
409
completeAgentConnection();
410
} else if (cmd == 4) {
411
if ((msg.length < 2) || ((obj.receivedCommands & 8) != 0)) return;
@@ -419,7 +413,7 @@ module.exports.CreateMeshAgent = function (parent, db, ws, req, args, domain) {
413
// Agent already authenticated the server, wants to skip the server signature - which is great for server performance.
414
} else if (cmd == 5) {
415
// ServerID. Agent is telling us what serverid it expects. Useful if we have many server certificates.
422
- if ((msg.substring(2, 34) == obj.parent.swarmCertificateHash256) || (msg.substring(2, 50) == obj.parent.swarmCertificateHash384)) { obj.useSwarmCert = true; }
416
+ if ((msg.substring(2, 34) == parent.swarmCertificateHash256) || (msg.substring(2, 50) == parent.swarmCertificateHash384)) { obj.useSwarmCert = true; }
417
}
418
}
419
});
@@ -430,49 +424,47 @@ module.exports.CreateMeshAgent = function (parent, db, ws, req, args, domain) {
424
// If the mesh agent web socket is closed, clean up.
425
ws.on('close', function (req) {
426
if (obj.nodeid != null) {
433
- var agentId = 'Unknown';
434
- if (obj.agentInfo && obj.agentInfo.agentId) { agentId = obj.agentInfo.agentId; }
427
+ const agentId = (obj.agentInfo && obj.agentInfo.agentId) ? obj.agentInfo.agentId : 'Unknown';
428
//console.log('Agent disconnect ' + obj.nodeid + ' (' + obj.remoteaddrport + ') id=' + agentId);
436
- obj.parent.parent.debug(1, 'Agent disconnect ' + obj.nodeid + ' (' + obj.remoteaddrport + ') id=' + agentId);
429
+ parent.parent.debug(1, 'Agent disconnect ' + obj.nodeid + ' (' + obj.remoteaddrport + ') id=' + agentId);
430
431
// Log the agent disconnection
439
- if (obj.parent.wsagentsDisconnections[obj.nodeid] == null) {
440
- obj.parent.wsagentsDisconnections[obj.nodeid] = 1;
432
+ if (parent.wsagentsDisconnections[obj.nodeid] == null) {
433
+ parent.wsagentsDisconnections[obj.nodeid] = 1;
434
} else {
442
- obj.parent.wsagentsDisconnections[obj.nodeid] = ++obj.parent.wsagentsDisconnections[obj.nodeid];
435
+ parent.wsagentsDisconnections[obj.nodeid] = ++parent.wsagentsDisconnections[obj.nodeid];
436
}
437
}
438
obj.close(0);
439
});
447
- // obj.ws._socket._parent.on('close', function (req) { if (obj.nodeid != null) { obj.parent.parent.debug(1, 'Agent TCP disconnect ' + obj.nodeid + ' (' + obj.remoteaddrport + ')'); } });
440
+ // ws._socket._parent.on('close', function (req) { if (obj.nodeid != null) { parent.parent.debug(1, 'Agent TCP disconnect ' + obj.nodeid + ' (' + obj.remoteaddrport + ')'); } });
441
442
// Start authenticate the mesh agent by sending a auth nonce & server TLS cert hash.
443
// Send 384 bits SHA384 hash of TLS cert public key + 384 bits nonce
451
- obj.nonce = obj.parent.crypto.randomBytes(48).toString('binary');
452
- if (obj.args.ignoreagenthashcheck !== true) {
453
- obj.send(obj.common.ShortToStr(1) + getWebCertHash(obj.domain) + obj.nonce); // Command 1, hash + nonce
444
+ if (args.ignoreagenthashcheck !== true) {
445
+ obj.send(common.ShortToStr(1) + getWebCertHash(domain) + obj.nonce); // Command 1, hash + nonce
446
}
447
448
// Return the mesh for this device, in some cases, we may auto-create the mesh.
449
function getMeshAutoCreate() {
458
- var mesh = obj.parent.meshes[obj.dbMeshKey];
459
- if ((mesh == null) && (typeof obj.domain.orphanagentuser == 'string')) {
460
- var adminUser = obj.parent.users['user/' + domain.id + '/' + obj.domain.orphanagentuser.toLowerCase()];
450
+ const mesh = parent.meshes[obj.dbMeshKey];
451
+ if ((mesh == null) && (typeof domain.orphanagentuser == 'string')) {
452
+ const adminUser = parent.users['user/' + domain.id + '/' + domain.orphanagentuser.toLowerCase()];
453
if ((adminUser != null) && (adminUser.siteadmin == 0xFFFFFFFF)) {
454
// Mesh name is hex instead of base64
463
- var meshname = obj.meshid.substring(0, 18);
455
+ const meshname = obj.meshid.substring(0, 18);
456
457
// Create a new mesh for this device
466
- var links = {};
458
+ const links = {};
459
links[adminUser._id] = { name: adminUser.name, rights: 0xFFFFFFFF };
460
mesh = { type: 'mesh', _id: obj.dbMeshKey, name: meshname, mtype: 2, desc: '', domain: domain.id, links: links };
469
- obj.db.Set(obj.common.escapeLinksFieldName(mesh));
470
- obj.parent.meshes[obj.dbMeshKey] = mesh;
461
+ db.Set(common.escapeLinksFieldName(mesh));
462
+ parent.meshes[obj.dbMeshKey] = mesh;
463
464
if (adminUser.links == null) adminUser.links = {};
465
adminUser.links[obj.dbMeshKey] = { rights: 0xFFFFFFFF };
474
- obj.db.SetUser(adminUser);
475
- obj.parent.parent.DispatchEvent(['*', obj.dbMeshKey, adminUser._id], obj, { etype: 'mesh', username: adminUser.name, meshid: obj.dbMeshKey, name: meshname, mtype: 2, desc: '', action: 'createmesh', links: links, msg: 'Mesh created: ' + obj.meshid, domain: domain.id });
466
+ db.SetUser(adminUser);
467
+ parent.parent.DispatchEvent(['*', obj.dbMeshKey, adminUser._id], obj, { etype: 'mesh', username: adminUser.name, meshid: obj.dbMeshKey, name: meshname, mtype: 2, desc: '', action: 'createmesh', links: links, msg: 'Mesh created: ' + obj.meshid, domain: domain.id });
468
}
469
} else {
470
if ((mesh != null) && (mesh.deleted != null) && (mesh.links)) {
@@ -481,23 +473,23 @@ module.exports.CreateMeshAgent = function (parent, db, ws, req, args, domain) {
473
474
// See if users still exists, if so, add links to the mesh
475
for (var userid in mesh.links) {
484
- var user = obj.parent.users[userid];
476
+ const user = parent.users[userid];
477
if (user) {
478
if (user.links == null) { user.links = {}; }
479
if (user.links[mesh._id] == null) {
480
user.links[mesh._id] = { rights: mesh.links[userid].rights };
481
ids.push(user._id);
490
- obj.db.SetUser(user);
482
+ db.SetUser(user);
483
}
484
}
485
}
486
487
// Send out an event indicating this mesh was "created"
496
- obj.parent.parent.DispatchEvent(ids, obj, { etype: 'mesh', meshid: mesh._id, name: mesh.name, mtype: mesh.mtype, desc: mesh.desc, action: 'createmesh', links: mesh.links, msg: 'Mesh undeleted: ' + mesh._id, domain: domain.id });
488
+ parent.parent.DispatchEvent(ids, obj, { etype: 'mesh', meshid: mesh._id, name: mesh.name, mtype: mesh.mtype, desc: mesh.desc, action: 'createmesh', links: mesh.links, msg: 'Mesh undeleted: ' + mesh._id, domain: domain.id });
489
490
// Mark the mesh as active
491
delete mesh.deleted;
500
- obj.db.Set(obj.common.escapeLinksFieldName(mesh));
492
+ db.Set(common.escapeLinksFieldName(mesh));
493
}
494
}
495
return mesh;
@@ -512,7 +504,7 @@ module.exports.CreateMeshAgent = function (parent, db, ws, req, args, domain) {
504
if (typeof domain.limits.maxagentsessions == 'number') {
505
// Count the number of agent sessions for this domain
506
var domainAgentSessionCount = 0;
515
- for (var i in obj.parent.wsagents) { if (obj.parent.wsagents[i].domain.id == domain.id) { domainAgentSessionCount++; } }
507
+ for (var i in parent.wsagents) { if (parent.wsagents[i].domain.id == domain.id) { domainAgentSessionCount++; } }
508
509
// Check if we have too many user sessions
510
if (domainAgentSessionCount >= domain.limits.maxagentsessions) { return; } // Too many, hold the connection.
@@ -520,26 +512,26 @@ module.exports.CreateMeshAgent = function (parent, db, ws, req, args, domain) {
512
513
/*
514
// Check that the mesh exists
523
- var mesh = obj.parent.meshes[obj.dbMeshKey];
515
+ var mesh = parent.meshes[obj.dbMeshKey];
516
if (mesh == null) {
517
var holdConnection = true;
526
- if (typeof obj.domain.orphanagentuser == 'string') {
527
- var adminUser = obj.parent.users['user/' + domain.id + '/' + obj.args.orphanagentuser];
518
+ if (typeof domain.orphanagentuser == 'string') {
519
+ var adminUser = parent.users['user/' + domain.id + '/' + args.orphanagentuser];
520
if ((adminUser != null) && (adminUser.siteadmin == 0xFFFFFFFF)) {
521
// Create a new mesh for this device
522
holdConnection = false;
523
var links = {};
524
links[user._id] = { name: adminUser.name, rights: 0xFFFFFFFF };
525
mesh = { type: 'mesh', _id: obj.dbMeshKey, name: obj.meshid, mtype: 2, desc: '', domain: domain.id, links: links };
534
- obj.db.Set(obj.common.escapeLinksFieldName(mesh));
535
- obj.parent.meshes[obj.meshid] = mesh;
536
- obj.parent.parent.AddEventDispatch([obj.meshid], ws);
526
+ db.Set(common.escapeLinksFieldName(mesh));
527
+ parent.meshes[obj.meshid] = mesh;
528
+ parent.parent.AddEventDispatch([obj.meshid], ws);
529
530
if (adminUser.links == null) user.links = {};
531
adminUser.links[obj.meshid] = { rights: 0xFFFFFFFF };
540
- //adminUser.subscriptions = obj.parent.subscribe(adminUser._id, ws);
541
- obj.db.SetUser(user);
542
- obj.parent.parent.DispatchEvent(['*', meshid, user._id], obj, { etype: 'mesh', username: user.name, meshid: obj.meshid, name: obj.meshid, mtype: 2, desc: '', action: 'createmesh', links: links, msg: 'Mesh created: ' + obj.meshid, domain: domain.id });
532
+ //adminUser.subscriptions = parent.subscribe(adminUser._id, ws);
533
+ db.SetUser(user);
534
+ parent.parent.DispatchEvent(['*', meshid, user._id], obj, { etype: 'mesh', username: user.name, meshid: obj.meshid, name: obj.meshid, mtype: 2, desc: '', action: 'createmesh', links: links, msg: 'Mesh created: ' + obj.meshid, domain: domain.id });
535
}
536
}
537
@@ -553,7 +545,7 @@ module.exports.CreateMeshAgent = function (parent, db, ws, req, args, domain) {
545
*/
546
547
// Check that the node exists
556
- obj.db.Get(obj.dbNodeKey, function (err, nodes) {
548
+ db.Get(obj.dbNodeKey, function (err, nodes) {
549
var device;
550
551
// See if this node exists in the database
@@ -561,7 +553,7 @@ module.exports.CreateMeshAgent = function (parent, db, ws, req, args, domain) {
553
// This device does not exist, use the meshid given by the device
554
555
// See if this mesh exists, if it does not we may want to create it.
564
- var mesh = getMeshAutoCreate();
556
+ const mesh = getMeshAutoCreate();
557
558
// Check if the mesh exists
559
if (mesh == null) {
@@ -579,18 +571,18 @@ module.exports.CreateMeshAgent = function (parent, db, ws, req, args, domain) {
571
572
// Mark when this device connected
573
obj.connectTime = Date.now();
582
- obj.db.Set({ _id: 'lc' + obj.dbNodeKey, type: 'lastconnect', domain: domain.id, time: obj.connectTime, addr: obj.remoteaddrport });
574
+ db.Set({ _id: 'lc' + obj.dbNodeKey, type: 'lastconnect', domain: domain.id, time: obj.connectTime, addr: obj.remoteaddrport });
575
576
// This node does not exist, create it.
577
device = { type: 'node', mtype: mesh.mtype, _id: obj.dbNodeKey, icon: obj.agentInfo.platformType, meshid: obj.dbMeshKey, name: obj.agentInfo.computerName, rname: obj.agentInfo.computerName, domain: domain.id, agent: { ver: obj.agentInfo.agentVersion, id: obj.agentInfo.agentId, caps: obj.agentInfo.capabilities }, host: null };
586
- obj.db.Set(device);
578
+ db.Set(device);
579
580
// Event the new node
581
if (obj.agentInfo.capabilities & 0x20) {
582
// This is a temporary agent, don't log.
591
- obj.parent.parent.DispatchEvent(['*', obj.dbMeshKey], obj, { etype: 'node', action: 'addnode', node: device, domain: domain.id, nolog: 1 });
583
+ parent.parent.DispatchEvent(['*', obj.dbMeshKey], obj, { etype: 'node', action: 'addnode', node: device, domain: domain.id, nolog: 1 });
584
} else {
593
- obj.parent.parent.DispatchEvent(['*', obj.dbMeshKey], obj, { etype: 'node', action: 'addnode', node: device, msg: ('Added device ' + obj.agentInfo.computerName + ' to mesh ' + mesh.name), domain: domain.id });
585
+ parent.parent.DispatchEvent(['*', obj.dbMeshKey], obj, { etype: 'node', action: 'addnode', node: device, msg: ('Added device ' + obj.agentInfo.computerName + ' to mesh ' + mesh.name), domain: domain.id });
586
}
587
} else {
588
device = nodes[0];
@@ -602,7 +594,7 @@ module.exports.CreateMeshAgent = function (parent, db, ws, req, args, domain) {
594
}
595
596
// See if this mesh exists, if it does not we may want to create it.
605
- var mesh = getMeshAutoCreate();
597
+ const mesh = getMeshAutoCreate();
598
599
// Check if the mesh exists
600
if (mesh == null) {
@@ -620,7 +612,7 @@ module.exports.CreateMeshAgent = function (parent, db, ws, req, args, domain) {
612
613
// Mark when this device connected
614
obj.connectTime = Date.now();
623
- obj.db.Set({ _id: 'lc' + obj.dbNodeKey, type: 'lastconnect', domain: domain.id, time: obj.connectTime, addr: obj.remoteaddrport });
615
+ db.Set({ _id: 'lc' + obj.dbNodeKey, type: 'lastconnect', domain: domain.id, time: obj.connectTime, addr: obj.remoteaddrport });
616
617
// Device already exists, look if changes has occured
618
var changes = [], change = 0, log = 0;
@@ -630,7 +622,7 @@ module.exports.CreateMeshAgent = function (parent, db, ws, req, args, domain) {
622
if (device.agent.id != obj.agentInfo.agentId) { device.agent.id = obj.agentInfo.agentId; change = 1; changes.push('agent type'); }
623
if ((device.agent.caps & 24) != (obj.agentInfo.capabilities & 24)) { device.agent.caps = obj.agentInfo.capabilities; change = 1; changes.push('agent capabilities'); } // If agent console or javascript support changes, update capabilities
624
if (change == 1) {
633
- obj.db.Set(device);
625
+ db.Set(device);
626
627
// If this is a temporary device, don't log changes
628
if (obj.agentInfo.capabilities & 0x20) { log = 0; }
@@ -638,23 +630,23 @@ module.exports.CreateMeshAgent = function (parent, db, ws, req, args, domain) {
630
// Event the node change
631
var event = { etype: 'node', action: 'changenode', nodeid: obj.dbNodeKey, domain: domain.id };
632
if (log == 0) { event.nolog = 1; } else { event.msg = 'Changed device ' + device.name + ' from group ' + mesh.name + ': ' + changes.join(', '); }
641
- var device2 = obj.common.Clone(device);
633
+ const device2 = common.Clone(device);
634
if (device2.intelamt && device2.intelamt.pass) delete device2.intelamt.pass; // Remove the Intel AMT password before eventing this.
635
event.node = device;
644
- obj.parent.parent.DispatchEvent(['*', device.meshid], obj, event);
636
+ parent.parent.DispatchEvent(['*', device.meshid], obj, event);
637
}
638
}
639
640
// Check if this agent is already connected
649
- var dupAgent = obj.parent.wsagents[obj.dbNodeKey];
650
- obj.parent.wsagents[obj.dbNodeKey] = obj;
641
+ const dupAgent = parent.wsagents[obj.dbNodeKey];
642
+ parent.wsagents[obj.dbNodeKey] = obj;
643
if (dupAgent) {
644
// Close the duplicate agent
653
- if (obj.nodeid != null) { obj.parent.parent.debug(1, 'Duplicate agent ' + obj.nodeid + ' (' + obj.remoteaddrport + ')'); }
645
+ if (obj.nodeid != null) { parent.parent.debug(1, 'Duplicate agent ' + obj.nodeid + ' (' + obj.remoteaddrport + ')'); }
646
dupAgent.close(3);
647
} else {
648
// Indicate the agent is connected
657
- obj.parent.parent.SetConnectivityState(obj.dbMeshKey, obj.dbNodeKey, obj.connectTime, 1, 1);
649
+ parent.parent.SetConnectivityState(obj.dbMeshKey, obj.dbNodeKey, obj.connectTime, 1, 1);
650
}
651
652
// We are done, ready to communicate with this agent
@@ -662,7 +654,7 @@ module.exports.CreateMeshAgent = function (parent, db, ws, req, args, domain) {
654
obj.authenticated = 2;
655
656
// Check how many times this agent disconnected in the last few minutes.
665
- var disconnectCount = obj.parent.wsagentsDisconnections[obj.nodeid];
657
+ const disconnectCount = parent.wsagentsDisconnections[obj.nodeid];
658
if (disconnectCount > 6) {
659
console.log('Agent in big trouble: NodeId=' + obj.nodeid + ', IP=' + obj.remoteaddrport + ', Agent=' + obj.agentInfo.agentId + '.');
660
// TODO: Log or do something to recover?
@@ -670,11 +662,11 @@ module.exports.CreateMeshAgent = function (parent, db, ws, req, args, domain) {
662
}
663
664
// Command 4, inform mesh agent that it's authenticated.
673
- obj.send(obj.common.ShortToStr(4));
665
+ obj.send(common.ShortToStr(4));
666
667
if (disconnectCount > 4) {
668
// Too many disconnections, this agent has issues. Just clear the core.
677
- obj.send(obj.common.ShortToStr(10) + obj.common.ShortToStr(0));
669
+ obj.send(common.ShortToStr(10) + common.ShortToStr(0));
670
//console.log('Agent in trouble: NodeId=' + obj.nodeid + ', IP=' + obj.remoteaddrport + ', Agent=' + obj.agentInfo.agentId + '.');
671
// TODO: Log or do something to recover?
672
return;
@@ -682,20 +674,20 @@ module.exports.CreateMeshAgent = function (parent, db, ws, req, args, domain) {
674
675
if ((obj.agentInfo.capabilities & 64) != 0) {
676
// This is a recovery agent
685
- obj.send(obj.common.ShortToStr(11) + obj.common.ShortToStr(0)); // Command 11, ask for mesh core hash.
677
+ obj.send(common.ShortToStr(11) + common.ShortToStr(0)); // Command 11, ask for mesh core hash.
678
} else {
679
// Check if we need to make an native update check
688
- obj.agentExeInfo = obj.parent.parent.meshAgentBinaries[obj.agentInfo.agentId];
689
- const corename = obj.parent.parent.meshAgentsArchitectureNumbers[obj.agentInfo.agentId].core;
690
- if (corename == null) { obj.send(obj.common.ShortToStr(10) + obj.common.ShortToStr(0)); } // MeshCommand_CoreModule, ask mesh agent to clear the core
680
+ obj.agentExeInfo = parent.parent.meshAgentBinaries[obj.agentInfo.agentId];
681
+ const corename = parent.parent.meshAgentsArchitectureNumbers[obj.agentInfo.agentId].core;
682
+ if (corename == null) { obj.send(common.ShortToStr(10) + common.ShortToStr(0)); } // MeshCommand_CoreModule, ask mesh agent to clear the core
683
684
if ((obj.agentExeInfo != null) && (obj.agentExeInfo.update == true)) {
685
// Ask the agent for it's executable binary hash
694
- obj.send(obj.common.ShortToStr(12) + obj.common.ShortToStr(0));
686
+ obj.send(common.ShortToStr(12) + common.ShortToStr(0));
687
} else {
688
// Check the mesh core, if the agent is capable of running one
689
if (((obj.agentInfo.capabilities & 16) != 0) && (corename != null)) {
698
- obj.send(obj.common.ShortToStr(11) + obj.common.ShortToStr(0)); // Command 11, ask for mesh core hash.
690
+ obj.send(common.ShortToStr(11) + common.ShortToStr(0)); // Command 11, ask for mesh core hash.
691
} else {
692
agentCoreIsStable(); // No updates needed, agent is ready to go.
693
}
@@ -715,35 +707,33 @@ module.exports.CreateMeshAgent = function (parent, db, ws, req, args, domain) {
707
}
708
709
obj.sendUpdatedIntelAmtPolicy = function() {
718
- var mesh = obj.parent.meshes[obj.dbMeshKey];
710
+ const mesh = parent.meshes[obj.dbMeshKey];
711
if (mesh != null) {
712
// Send Intel AMT policy
721
- var amtPolicy = null;
722
- if (mesh.amt != null) { amtPolicy = mesh.amt; }
713
+ const amtPolicy = (mesh.amt != null) ? mesh.amt : null;
714
obj.send(JSON.stringify({ action: 'amtPolicy', amtPolicy: amtPolicy }));
715
}
716
}
717
718
function agentCoreIsStable() {
719
// Check that the mesh exists
729
- var mesh = obj.parent.meshes[obj.dbMeshKey];
720
+ const mesh = parent.meshes[obj.dbMeshKey];
721
if (mesh == null) {
722
// TODO: Mark this agent as part of a mesh that does not exists.
723
return; // Probably not worth doing anything else. Hold this agent.
724
}
725
726
// Send Intel AMT policy
736
- var amtPolicy = null;
737
- if (mesh.amt != null) { amtPolicy = mesh.amt; }
727
+ const amtPolicy = (mesh.amt != null) ? mesh.amt : null;
728
obj.send(JSON.stringify({ action: 'amtPolicy', amtPolicy: amtPolicy }));
729
730
// Do this if IP location is enabled on this domain TODO: Set IP location per device group?
731
if (domain.iplocation == true) {
732
// Check if we already have IP location information for this node
743
- obj.db.Get('iploc_' + obj.remoteaddr, function (err, iplocs) {
733
+ db.Get('iploc_' + obj.remoteaddr, function (err, iplocs) {
734
if (iplocs.length == 1) {
735
// We have a location in the database for this remote IP
746
- var iploc = nodes[0], x = {};
736
+ const iploc = nodes[0], x = {};
737
if ((iploc != null) && (iploc.ip != null) && (iploc.loc != null)) {
738
x.publicip = iploc.ip;
739
x.iploc = iploc.loc + ',' + (Math.floor((new Date(iploc.date)) / 1000));
@@ -755,7 +745,7 @@ module.exports.CreateMeshAgent = function (parent, db, ws, req, args, domain) {
745
if (device.iploc == null) {
746
doIpLocation = 1;
747
} else {
758
- var loc = device.iploc.split(',');
748
+ const loc = device.iploc.split(',');
749
if (loc.length < 3) {
750
doIpLocation = 2;
751
} else {
@@ -767,10 +757,10 @@ module.exports.CreateMeshAgent = function (parent, db, ws, req, args, domain) {
757
758
// If we need to ask for IP location, see if we have the quota to do it.
759
if (doIpLocation > 0) {
770
- obj.db.getValueOfTheDay('ipLocationRequestLimitor', 10, function (ipLocationLimitor) {
760
+ db.getValueOfTheDay('ipLocationRequestLimitor', 10, function (ipLocationLimitor) {
761
if (ipLocationLimitor.value > 0) {
762
ipLocationLimitor.value--;
773
- obj.db.Set(ipLocationLimitor);
763
+ db.Set(ipLocationLimitor);
764
obj.send(JSON.stringify({ action: 'iplocation' }));
765
}
766
});
@@ -782,41 +772,41 @@ module.exports.CreateMeshAgent = function (parent, db, ws, req, args, domain) {
772
773
// Get the web certificate private key hash for the specified domain
774
function getWebCertHash(domain) {
785
- var hash = obj.parent.webCertificateHashs[domain.id];
775
+ const hash = parent.webCertificateHashs[domain.id];
776
if (hash != null) return hash;
787
- return obj.parent.webCertificateHash;
777
+ return parent.webCertificateHash;
778
}
779
780
// Get the web certificate hash for the specified domain
781
function getWebCertFullHash(domain) {
792
- var hash = obj.parent.webCertificateFullHashs[domain.id];
782
+ const hash = parent.webCertificateFullHashs[domain.id];
783
if (hash != null) return hash;
794
- return obj.parent.webCertificateFullHash;
784
+ return parent.webCertificateFullHash;
785
}
786
787
// Verify the agent signature
788
function processAgentSignature(msg) {
799
- if (obj.args.ignoreagenthashcheck !== true) {
789
+ if (args.ignoreagenthashcheck !== true) {
790
var verified = false;
791
792
if (msg.length != 384) {
793
// Verify a PKCS7 signature.
794
var msgDer = null;
805
- try { msgDer = obj.forge.asn1.fromDer(obj.forge.util.createBuffer(msg, 'binary')); } catch (ex) { }
795
+ try { msgDer = forge.asn1.fromDer(forge.util.createBuffer(msg, 'binary')); } catch (ex) { }
796
if (msgDer != null) {
797
try {
808
- var p7 = obj.forge.pkcs7.messageFromAsn1(msgDer);
798
+ var p7 = forge.pkcs7.messageFromAsn1(msgDer);
799
var sig = p7.rawCapture.signature;
800
801
// Verify with key hash
812
- var buf = Buffer.from(getWebCertHash(obj.domain) + obj.nonce + obj.agentnonce, 'binary');
813
- var verifier = obj.parent.crypto.createVerify('RSA-SHA384');
802
+ var buf = Buffer.from(getWebCertHash(domain) + obj.nonce + obj.agentnonce, 'binary');
803
+ var verifier = parent.crypto.createVerify('RSA-SHA384');
804
verifier.update(buf);
805
verified = verifier.verify(obj.unauth.nodeCertPem, sig, 'binary');
806
if (verified == false) {
807
// Verify with full hash
818
- buf = Buffer.from(getWebCertFullHash(obj.domain) + obj.nonce + obj.agentnonce, 'binary');
819
- verifier = obj.parent.crypto.createVerify('RSA-SHA384');
808
+ buf = Buffer.from(getWebCertFullHash(domain) + obj.nonce + obj.agentnonce, 'binary');
809
+ verifier = parent.crypto.createVerify('RSA-SHA384');
810
verifier.update(buf);
811
verified = verifier.verify(obj.unauth.nodeCertPem, sig, 'binary');
812
}
@@ -827,11 +817,11 @@ module.exports.CreateMeshAgent = function (parent, db, ws, req, args, domain) {
817
818
if (verified == false) {
819
// Verify the RSA signature. This is the fast way, without using forge.
830
- const verify = obj.parent.crypto.createVerify('SHA384');
831
- verify.end(Buffer.from(getWebCertHash(obj.domain) + obj.nonce + obj.agentnonce, 'binary')); // Test using the private key hash
820
+ const verify = parent.crypto.createVerify('SHA384');
821
+ verify.end(Buffer.from(getWebCertHash(domain) + obj.nonce + obj.agentnonce, 'binary')); // Test using the private key hash
822
if (verify.verify(obj.unauth.nodeCertPem, Buffer.from(msg, 'binary')) !== true) {
833
- const verify2 = obj.parent.crypto.createVerify('SHA384');
834
- verify2.end(Buffer.from(getWebCertFullHash(obj.domain) + obj.nonce + obj.agentnonce, 'binary')); // Test using the full cert hash
823
+ const verify2 = parent.crypto.createVerify('SHA384');
824
+ verify2.end(Buffer.from(getWebCertFullHash(domain) + obj.nonce + obj.agentnonce, 'binary')); // Test using the full cert hash
825
if (verify2.verify(obj.unauth.nodeCertPem, Buffer.from(msg, 'binary')) !== true) { return false; }
826
}
827
}
@@ -843,16 +833,16 @@ module.exports.CreateMeshAgent = function (parent, db, ws, req, args, domain) {
833
delete obj.nonce;
834
delete obj.agentnonce;
835
delete obj.unauth;
836
+ delete obj.receivedCommands;
837
if (obj.unauthsign) delete obj.unauthsign;
847
- obj.parent.parent.debug(1, 'Verified agent connection to ' + obj.nodeid + ' (' + obj.remoteaddrport + ').');
838
+ parent.parent.debug(1, 'Verified agent connection to ' + obj.nodeid + ' (' + obj.remoteaddrport + ').');
839
obj.authenticated = 1;
840
return true;
841
}
842
843
// Process incoming agent JSON data
844
function processAgentData(msg) {
854
- var i;
855
- var str = msg.toString('utf8'), command = null;
845
+ var i, str = msg.toString('utf8'), command = null;
846
if (str[0] == '{') {
847
try { command = JSON.parse(str); } catch (ex) { console.log('Unable to parse agent JSON (' + obj.remoteaddrport + '): ' + str, ex); return; } // If the command can't be parsed, ignore it.
848
if (typeof command != 'object') { return; }
@@ -870,17 +860,17 @@ module.exports.CreateMeshAgent = function (parent, db, ws, req, args, domain) {
860
//if (mesh.links[user._id] == null || ((mesh.links[user._id].rights & 16) == 0)) return; // TODO!!!!!!!!!!!!!!!!!!!!!
861
862
// See if the session is connected. If so, go ahead and send this message to the target node
873
- var ws = obj.parent.wssessions2[command.sessionid];
863
+ var ws = parent.wssessions2[command.sessionid];
864
if (ws != null) {
865
command.nodeid = obj.dbNodeKey; // Set the nodeid, required for responses.
866
delete command.sessionid; // Remove the sessionid, since we are sending to that sessionid, so it's implyed.
867
try { ws.send(JSON.stringify(command)); } catch (ex) { }
878
- } else if (obj.parent.parent.multiServer != null) {
868
+ } else if (parent.parent.multiServer != null) {
869
// See if we can send this to a peer server
880
- var serverid = obj.parent.wsPeerSessions2[command.sessionid];
870
+ var serverid = parent.wsPeerSessions2[command.sessionid];
871
if (serverid != null) {
872
command.fromNodeid = obj.dbNodeKey;
883
- obj.parent.parent.multiServer.DispatchMessageSingleServer(command, serverid);
873
+ parent.parent.multiServer.DispatchMessageSingleServer(command, serverid);
874
}
875
}
876
}
@@ -893,7 +883,7 @@ module.exports.CreateMeshAgent = function (parent, db, ws, req, args, domain) {
883
//if (mesh.links[user._id] == null || ((mesh.links[user._id].rights & 16) == 0)) return; // TODO!!!!!!!!!!!!!!!!!!!!!
884
885
// See if the session is connected
896
- var sessions = obj.parent.wssessions[command.userid];
886
+ var sessions = parent.wssessions[command.userid];
887
888
// Go ahead and send this message to the target node
889
if (sessions != null) {
@@ -902,19 +892,19 @@ module.exports.CreateMeshAgent = function (parent, db, ws, req, args, domain) {
892
for (i in sessions) { sessions[i].send(JSON.stringify(command)); }
893
}
894
905
- if (obj.parent.parent.multiServer != null) {
895
+ if (parent.parent.multiServer != null) {
896
// TODO: Add multi-server support
897
}
898
}
899
} else { // Route this command to the mesh
900
command.nodeid = obj.dbNodeKey;
901
var cmdstr = JSON.stringify(command);
912
- for (var userid in obj.parent.wssessions) { // Find all connected users for this mesh and send the message
913
- var user = obj.parent.users[userid];
902
+ for (var userid in parent.wssessions) { // Find all connected users for this mesh and send the message
903
+ var user = parent.users[userid];
904
if ((user != null) && (user.links != null)) {
905
var rights = user.links[obj.dbMeshKey];
906
if (rights != null) { // TODO: Look at what rights are needed for message routing
917
- var xsessions = obj.parent.wssessions[userid];
907
+ var xsessions = parent.wssessions[userid];
908
// Send the message to all users on this server
909
for (i in xsessions) { try { xsessions[i].send(cmdstr); } catch (e) { } }
910
}
@@ -922,11 +912,11 @@ module.exports.CreateMeshAgent = function (parent, db, ws, req, args, domain) {
912
}
913
914
// Send the message to all users of other servers
925
- if (obj.parent.parent.multiServer != null) {
915
+ if (parent.parent.multiServer != null) {
916
delete command.nodeid;
917
command.fromNodeid = obj.dbNodeKey;
918
command.meshid = obj.dbMeshKey;
929
- obj.parent.parent.multiServer.DispatchMessage(command);
919
+ parent.parent.multiServer.DispatchMessage(command);
920
}
921
}
922
break;
@@ -944,11 +934,11 @@ module.exports.CreateMeshAgent = function (parent, db, ws, req, args, domain) {
934
// If an agent sends an insanely large SMBIOS table, don't store it.
935
try {
936
var smbiosstr = JSON.stringify(command.value);
947
- if (smbiosstr.length < 65535) { obj.db.SetSMBIOS({ _id: obj.dbNodeKey, domain: domain.id, time: new Date(), value: smbiosstr }); }
937
+ if (smbiosstr.length < 65535) { db.SetSMBIOS({ _id: obj.dbNodeKey, domain: domain.id, time: new Date(), value: smbiosstr }); }
938
} catch (ex) { }
939
940
// Event the node interface information change (This is a lot of traffic, probably don't need this).
951
- //obj.parent.parent.DispatchEvent(['*', obj.meshid], obj, { action: 'smBiosChange', nodeid: obj.dbNodeKey, domain: domain.id, smbios: command.value, nolog: 1 });
941
+ //parent.parent.DispatchEvent(['*', obj.meshid], obj, { action: 'smBiosChange', nodeid: obj.dbNodeKey, domain: domain.id, smbios: command.value, nolog: 1 });
942
943
break;
944
}
@@ -959,10 +949,10 @@ module.exports.CreateMeshAgent = function (parent, db, ws, req, args, domain) {
949
command.updateTime = Date.now();
950
command._id = 'if' + obj.dbNodeKey;
951
command.type = 'ifinfo';
962
- obj.db.Set(command);
952
+ db.Set(command);
953
954
// Event the node interface information change
965
- obj.parent.parent.DispatchEvent(['*', obj.meshid], obj, { action: 'ifchange', nodeid: obj.dbNodeKey, domain: domain.id, nolog: 1 });
955
+ parent.parent.DispatchEvent(['*', obj.meshid], obj, { action: 'ifchange', nodeid: obj.dbNodeKey, domain: domain.id, nolog: 1 });
956
957
break;
958
}
@@ -977,7 +967,7 @@ module.exports.CreateMeshAgent = function (parent, db, ws, req, args, domain) {
967
command.value._id = 'iploc_' + command.value.ip;
968
command.value.type = 'iploc';
969
command.value.date = Date.now();
980
- obj.db.Set(command.value); // Store the IP to location data in the database
970
+ db.Set(command.value); // Store the IP to location data in the database
971
// Sample Value: { ip: '192.55.64.246', city: 'Hillsboro', region: 'Oregon', country: 'US', loc: '45.4443,-122.9663', org: 'AS4983 Intel Corporation', postal: '97123' }
972
}
973
break;
@@ -985,23 +975,23 @@ module.exports.CreateMeshAgent = function (parent, db, ws, req, args, domain) {
975
case 'mc1migration':
976
{
977
if (command.oldnodeid.length != 64) break;
988
- var oldNodeKey = 'node//' + command.oldnodeid.toLowerCase();
989
- obj.db.Get(oldNodeKey, function (err, nodes) {
978
+ const oldNodeKey = 'node//' + command.oldnodeid.toLowerCase();
979
+ db.Get(oldNodeKey, function (err, nodes) {
980
if (nodes.length != 1) return;
991
- var node = nodes[0];
981
+ const node = nodes[0];
982
if (node.meshid == obj.dbMeshKey) {
983
// Update the device name & host
994
- var newNode = { "name": node.name };
984
+ const newNode = { "name": node.name };
985
if (node.intelamt != null) { newNode.intelamt = node.intelamt; }
986
ChangeAgentCoreInfo(newNode);
987
988
// Delete this node including network interface information and events
999
- obj.db.Remove(node._id);
1000
- obj.db.Remove('if' + node._id);
989
+ db.Remove(node._id);
990
+ db.Remove('if' + node._id);
991
992
// Event node deletion
1003
- var change = 'Migrated device ' + node.name;
1004
- obj.parent.parent.DispatchEvent(['*', node.meshid], obj, { etype: 'node', action: 'removenode', nodeid: node._id, msg: change, domain: node.domain });
993
+ const change = 'Migrated device ' + node.name;
994
+ parent.parent.DispatchEvent(['*', node.meshid], obj, { etype: 'node', action: 'removenode', nodeid: node._id, msg: change, domain: node.domain });
995
}
996
});
997
break;
@@ -1016,11 +1006,11 @@ module.exports.CreateMeshAgent = function (parent, db, ws, req, args, domain) {
1006
{
1007
// Used by the agent to get configuration scripts.
1008
if (command.type == 1) {
1019
- obj.parent.getCiraConfigurationScript(obj.dbMeshKey, function (script) {
1009
+ parent.getCiraConfigurationScript(obj.dbMeshKey, function (script) {
1010
obj.send(JSON.stringify({ action: 'getScript', type: 1, script: script.toString() }));
1011
});
1012
} else if (command.type == 2) {
1023
- obj.parent.getCiraCleanupScript(function (script) {
1013
+ parent.getCiraCleanupScript(function (script) {
1014
obj.send(JSON.stringify({ action: 'getScript', type: 2, script: script.toString() }));
1015
});
1016
}
@@ -1039,13 +1029,13 @@ module.exports.CreateMeshAgent = function (parent, db, ws, req, args, domain) {
1029
if ((command == null) || (command == null)) return; // Safety, should never happen.
1030
1031
// Check that the mesh exists
1042
- var mesh = obj.parent.meshes[obj.dbMeshKey];
1032
+ const mesh = parent.meshes[obj.dbMeshKey];
1033
if (mesh == null) return;
1034
1035
// Get the node and change it if needed
1046
- obj.db.Get(obj.dbNodeKey, function (err, nodes) { // TODO: THIS IS A BIG RACE CONDITION HERE, WE NEED TO FIX THAT. If this call is made twice at the same time on the same device, data will be missed.
1036
+ db.Get(obj.dbNodeKey, function (err, nodes) { // TODO: THIS IS A BIG RACE CONDITION HERE, WE NEED TO FIX THAT. If this call is made twice at the same time on the same device, data will be missed.
1037
if (nodes.length != 1) return;
1048
- var device = nodes[0];
1038
+ const device = nodes[0];
1039
if (device.agent) {
1040
var changes = [], change = 0, log = 0;
1041
@@ -1070,7 +1060,7 @@ module.exports.CreateMeshAgent = function (parent, db, ws, req, args, domain) {
1060
if ((command.intelamt.pass != null) && (device.intelamt.pass != command.intelamt.pass)) { changes.push('AMT pass'); device.intelamt.pass = command.intelamt.pass; change = 1; log = 1; }
1061
}
1062
if ((command.users != null) && (device.users != command.users)) { device.users = command.users; change = 1; } // Don't save this to the db.
1073
- if ((mesh.mtype == 2) && (!obj.args.wanonly)) {
1063
+ if ((mesh.mtype == 2) && (!args.wanonly)) {
1064
// In WAN mode, the hostname of a computer is not important. Don't log hostname changes.
1065
if (device.host != obj.remoteaddr) { device.host = obj.remoteaddr; change = 1; changes.push('host'); }
1066
// TODO: Check that the agent has an interface that is the same as the one we got this websocket connection on. Only set if we have a match.
@@ -1079,16 +1069,16 @@ module.exports.CreateMeshAgent = function (parent, db, ws, req, args, domain) {
1069
// If there are changes, event the new device
1070
if (change == 1) {
1071
// Save to the database
1082
- obj.db.Set(device);
1072
+ db.Set(device);
1073
1074
// Event the node change
1075
var event = { etype: 'node', action: 'changenode', nodeid: obj.dbNodeKey, domain: domain.id };
1076
if (changes.length > 0) { event.msg = 'Changed device ' + device.name + ' from group ' + mesh.name + ': ' + changes.join(', '); }
1077
if ((log == 0) || (obj.agentInfo.capabilities & 0x20) || (changes.length == 0)) { event.nolog = 1; } // If this is a temporary device, don't log changes
1088
- var device2 = obj.common.Clone(device);
1078
+ var device2 = common.Clone(device);
1079
if (device2.intelamt && device2.intelamt.pass) { delete device2.intelamt.pass; } // Remove the Intel AMT password before eventing this.
1080
event.node = device;
1091
- obj.parent.parent.DispatchEvent(['*', device.meshid], obj, event);
1081
+ parent.parent.DispatchEvent(['*', device.meshid], obj, event);
1082
}
1083
}
1084
});
@@ -1099,13 +1089,13 @@ module.exports.CreateMeshAgent = function (parent, db, ws, req, args, domain) {
1089
if ((command == null) || (command == null)) { return; } // Safety, should never happen.
1090
1091
// Check that the mesh exists
1102
- var mesh = obj.parent.meshes[obj.dbMeshKey];
1092
+ const mesh = parent.meshes[obj.dbMeshKey];
1093
if (mesh == null) return;
1094
1095
// Get the node and change it if needed
1106
- obj.db.Get(obj.dbNodeKey, function (err, nodes) {
1096
+ db.Get(obj.dbNodeKey, function (err, nodes) {
1097
if (nodes.length != 1) { return; }
1108
- var device = nodes[0];
1098
+ const device = nodes[0];
1099
if (device.agent) {
1100
var changes = [], change = 0;
1101
@@ -1115,15 +1105,15 @@ module.exports.CreateMeshAgent = function (parent, db, ws, req, args, domain) {
1105
1106
// If there are changes, save and event
1107
if (change == 1) {
1118
- obj.db.Set(device);
1108
+ db.Set(device);
1109
1110
// Event the node change
1111
var event = { etype: 'node', action: 'changenode', nodeid: obj.dbNodeKey, domain: domain.id, msg: 'Changed device ' + device.name + ' from group ' + mesh.name + ': ' + changes.join(', ') };
1112
if (obj.agentInfo.capabilities & 0x20) { event.nolog = 1; } // If this is a temporary device, don't log changes
1123
- var device2 = obj.common.Clone(device);
1113
+ var device2 = common.Clone(device);
1114
if (device2.intelamt && device2.intelamt.pass) { delete device2.intelamt.pass; } // Remove the Intel AMT password before eventing this.
1115
event.node = device;
1126
- obj.parent.parent.DispatchEvent(['*', device.meshid], obj, event);
1116
+ parent.parent.DispatchEvent(['*', device.meshid], obj, event);
1117
}
1118
}
1119
});
@@ -1133,20 +1123,20 @@ module.exports.CreateMeshAgent = function (parent, db, ws, req, args, domain) {
1123
function ChangeAgentTag(tag) {
1124
if (tag.length == 0) { tag = null; }
1125
// Get the node and change it if needed
1136
- obj.db.Get(obj.dbNodeKey, function (err, nodes) {
1126
+ db.Get(obj.dbNodeKey, function (err, nodes) {
1127
if (nodes.length != 1) return;
1138
- var device = nodes[0];
1128
+ const device = nodes[0];
1129
if (device.agent) {
1130
if (device.agent.tag != tag) {
1131
device.agent.tag = tag;
1142
- obj.db.Set(device);
1132
+ db.Set(device);
1133
1134
// Event the node change
1135
var event = { etype: 'node', action: 'changenode', nodeid: obj.dbNodeKey, domain: domain.id, nolog: 1 };
1146
- var device2 = obj.common.Clone(device);
1136
+ var device2 = common.Clone(device);
1137
if (device2.intelamt && device2.intelamt.pass) delete device2.intelamt.pass; // Remove the Intel AMT password before eventing this.
1138
event.node = device;
1149
- obj.parent.parent.DispatchEvent(['*', device.meshid], obj, event);
1139
+ parent.parent.DispatchEvent(['*', device.meshid], obj, event);
1140
}
1141
}
1142
});
meshcentral.js
+2
-2
@@ -1377,7 +1377,7 @@ function CreateMeshCentralServer(config, args) {
1377
obj.meshAgentBinaries[archid].path = agentpath;
1378
obj.meshAgentBinaries[archid].url = ((obj.args.notls == true) ? 'http://' : 'https://') + obj.certificates.CommonName + ':' + obj.args.port + '/meshagents?id=' + archid;
1379
obj.meshAgentBinaries[archid].size = stats.size;
1380
- if (!obj.args.agentsondisk) { obj.meshAgentBinaries[archid].data = obj.fs.readFileSync(agentpath); }
1380
+ if (obj.args.agentsinram) { obj.meshAgentBinaries[archid].data = obj.fs.readFileSync(agentpath); }
1381
// If this is a windows binary, pull binary information
1382
if (obj.meshAgentsArchitectureNumbers[archid].platform == 'win32') {
1383
try { obj.meshAgentBinaries[archid].pe = obj.exeHandler.parseWindowsExecutable(agentpath); } catch (e) { }
@@ -1387,7 +1387,7 @@ function CreateMeshCentralServer(config, args) {
1387
var hashStream = obj.crypto.createHash('sha384');
1388
hashStream.archid = archid;
1389
hashStream.on('data', function (data) {
1390
- obj.meshAgentBinaries[this.archid].hash = data.toString('hex');
1390
+ obj.meshAgentBinaries[this.archid].hash = data.toString('binary');
1391
if ((--archcount == 0) && (func != null)) { func(); }
1392
});
1393
var options = { sourcePath: agentpath, targetStream: hashStream, platform: obj.meshAgentsArchitectureNumbers[archid].platform };
meshuser.js
+2
-2
@@ -471,7 +471,7 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
471
switch (cmd) {
472
case 'help': {
473
r = 'Available commands: help, info, versions, args, resetserver, showconfig, usersessions, tasklimiter, setmaxtasks, cores,\r\n'
474
- r += 'migrationagents, swarmstats, nodeconfig.';
474
+ r += 'migrationagents, swarmstats, nodeconfig, heapdump.';
475
break;
476
}
477
case 'info': {
@@ -562,7 +562,7 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
562
} else {
563
for (var i in obj.parent.parent.swarmserver.migrationAgents) {
564
var arch = obj.parent.parent.swarmserver.migrationAgents[i];
565
- for (var j in arch) { var agent = arch[j]; r += 'Arch ' + agent.arch + ', Ver ' + agent.ver + ', Size ' + agent.binary.length + '<br />'; }
565
+ for (var j in arch) { var agent = arch[j]; r += 'Arch ' + agent.arch + ', Ver ' + agent.ver + ', Size ' + ((agent.binary == null) ? 0 : agent.binary.length) + '<br />'; }
566
}
567
}
568
break;
package.json
+1
-4
@@ -1,6 +1,6 @@
1
{
2
"name": "meshcentral",
3
- "version": "0.2.9-r",
3
+ "version": "0.2.9-w",
4
"keywords": [
5
"Remote Management",
6
"Intel AMT",
@@ -35,15 +35,12 @@
35
"express": "^4.16.4",
36
"express-handlebars": "^3.0.0",
37
"express-ws": "^4.0.0",
38
- "heapdump": "^0.3.12",
38
"ipcheck": "^0.1.0",
39
"meshcentral": "*",
40
"minimist": "^1.2.0",
42
- "mongojs": "^2.6.0",
41
"multiparty": "^4.2.1",
42
"nedb": "^1.8.0",
43
"node-forge": "^0.7.6",
46
- "node-windows": "^0.1.14",
44
"otplib": "^10.0.1",
45
"util.promisify": "^1.0.0",
46
"ws": "^6.1.2",
swarmserver.js
+2
-2
@@ -138,9 +138,8 @@ module.exports.CreateSwarmServer = function (parent, db, args, certificates) {
138
var agentInfo = migrationAgentsDir[i].substring(10).split('.');
139
var agentVersion = parseInt(agentInfo[0]);
140
var agentArch = parseInt(agentInfo[1]);
141
- var agentBinary = obj.parent.fs.readFileSync(migrationAgentName);
141
if (obj.migrationAgents[agentArch] == null) { obj.migrationAgents[agentArch] = {}; }
143
- if (obj.migrationAgents[agentArch][agentVersion] == null) { obj.migrationAgents[agentArch][agentVersion] = { arch: agentArch, ver: agentVersion, path: migrationAgentName, binary: agentBinary }; }
142
+ if (obj.migrationAgents[agentArch][agentVersion] == null) { obj.migrationAgents[agentArch][agentVersion] = { arch: agentArch, ver: agentVersion, path: migrationAgentName }; }
143
}
144
}
145
}
@@ -270,6 +269,7 @@ module.exports.CreateSwarmServer = function (parent, db, args, certificates) {
269
case 6: { // Ask for agent block
270
if (socket.tag.update != null) {
271
// Send an agent block
272
+ if (socket.tag.update.binary == null) { socket.tag.update.binary = obj.parent.fs.readFileSync(socket.tag.update.path); }
273
var l = Math.min(socket.tag.update.binary.length - socket.tag.updatePtr, 16384);
274
obj.SendCommand(socket, LegacyMeshProtocol.GETSTATE, common.IntToStr(6) + common.IntToStr(socket.tag.updatePtr) + socket.tag.update.binary.toString('binary', socket.tag.updatePtr, socket.tag.updatePtr + l)); // agent.SendQuery(6, AgentFileLen + AgentBlock);
275
Debug(3, 'Swarm:Sending agent block, ptr = ' + socket.tag.updatePtr + ', len = ' + l);