@speleotica/frcsdata 4.0.2 → 4.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/FrcsPlotFile.d.ts +1 -1
  2. package/FrcsPlotShot.d.ts +1 -1
  3. package/FrcsShot.d.ts +1 -1
  4. package/FrcsShot.js +2 -3
  5. package/FrcsSurveyFile.d.ts +1 -1
  6. package/FrcsTrip.d.ts +2 -2
  7. package/FrcsTripSummary.d.ts +1 -1
  8. package/FrcsTripSummaryFile.d.ts +1 -1
  9. package/formatFrcsShot.js +7 -6
  10. package/index.js +11 -11
  11. package/node/index.js +6 -9
  12. package/package.json +26 -124
  13. package/parseFrcsPlotFile.js +4 -3
  14. package/parseFrcsSurveyFile.js +126 -107
  15. package/parseFrcsTripSummaryFile.js +5 -4
  16. package/string/index.js +8 -11
  17. package/es/FrcsPlotFile.js +0 -6
  18. package/es/FrcsPlotShot.js +0 -6
  19. package/es/FrcsShot.js +0 -14
  20. package/es/FrcsSurveyFile.js +0 -6
  21. package/es/FrcsTrip.js +0 -6
  22. package/es/FrcsTripSummary.js +0 -6
  23. package/es/FrcsTripSummaryFile.js +0 -6
  24. package/es/formatFrcsShot.js +0 -75
  25. package/es/formatFrcsShot.spec.js +0 -141
  26. package/es/index.js +0 -96
  27. package/es/node/index.js +0 -20
  28. package/es/node/parseFrcsPlotFile.spec.js +0 -167
  29. package/es/node/parseFrcsSurveyFile.spec.js +0 -314
  30. package/es/node/parseFrcsTripSummaryFile.spec.js +0 -78
  31. package/es/parseFrcsPlotFile.js +0 -135
  32. package/es/parseFrcsSurveyFile.js +0 -485
  33. package/es/parseFrcsTripSummaryFile.js +0 -73
  34. package/es/string/index.js +0 -21
  35. package/es/string/parseFrcsPlotFile.spec.js +0 -179
  36. package/es/string/parseFrcsSurveyFile.spec.js +0 -644
  37. package/formatFrcsShot.spec.js +0 -139
  38. package/node/parseFrcsPlotFile.spec.js +0 -181
  39. package/node/parseFrcsSurveyFile.spec.js +0 -328
  40. package/node/parseFrcsTripSummaryFile.spec.js +0 -104
  41. package/string/parseFrcsPlotFile.spec.js +0 -182
  42. package/string/parseFrcsSurveyFile.spec.js +0 -673
  43. package/yarn.lock +0 -9542
@@ -1,644 +0,0 @@
1
- "use strict";
2
-
3
- var _mocha = require("mocha");
4
- var _index = require("./index");
5
- var _unitized = require("@speleotica/unitized");
6
- var _chai = require("chai");
7
- var _FrcsShot = require("../FrcsShot");
8
- var _parseSegment = require("parse-segment");
9
- const data = ` Fisher Ridge Cave System, Hart Co., KY
10
- ENTRANCE DROPS, JOE'S "I LOVE MY WIFE TRAVERSE", TRICKY TRAVERSE
11
- PETER QUICK, KEITH ORTIZ - 2-15-81
12
- This File has Crumps test connected. 11/20/12
13
- *
14
- FT C DD A
15
- AE20 0 1 3 0 2
16
- * %FS
17
- * AE20 0 0 0 Bug-can't put before so put after-so can't make 2 fixed 10/28/12
18
- AE19 AE20 9.3 60.0 60.0-36.0 2 12 0 20
19
- AE18 AE19 24.5 0.0 0.0-90.0 6 10 25 0
20
- AE17 AE18 8.0 350.5 350.5 17.0 3 5 0 0
21
- AE16 AE17 6.7 0.0 0.0-90.0 3 5 6 1
22
- AE15 AE16 12.6 70.5 71.0-18.0 4 0 2 1
23
- AE14 AE15 10.0 21.5 20.0 6.0 5 5 0 3
24
- AE13 AE14 26.8 288.0 286.0-50.0 0 7 20 5
25
- *
26
- *SHORT CANYON AT THE BASE OF THE SECOND DROP
27
- AE12 AE13 20.7 236.0 236.0 34.0 3 5 4 4
28
- *
29
- TRICKY TRAVERSE AND THEN FIRST SURVEY IN UPPER CROWLWAY
30
- DAN CROWL, KEITH ORTIZ, CHIP HOPPER, PETER QUICK, LARRY BEAN 14 FEB 1981
31
- *
32
- FI B DD
33
- *
34
- * A1 2 7 3 4.5
35
- A2 A1 48 10 292.0 110.0-42.0 5 10 35 5
36
- A3 A2 12 5 333.5 153.5 35.0 3 1 15 5
37
- A4 A3 4 2 0.0 0.0 90.0 3 1 10 10
38
- *
39
- DOUG'S DEMISE (50 FT DROP), CHRIS CROSS, CRAWL ABOVE DROP
40
- PETER QUICK, CHRIS GERACE, PHIL ODEN, CHIP HOPPER - 3-6-81
41
- *
42
- FT C DD
43
- B31 B30 13.7 360.0 360.0 40.0 2 4 6 B30 8 3 5 1.2
44
- B30sp B30 13.7 s 360.0 360.0 40.0 2 4 6
45
- `;
46
- (0, _mocha.describe)('parseFrcsSurveyFile', () => {
47
- (0, _mocha.it)('basic test', async function () {
48
- const parsed = await (0, _index.parseFrcsSurveyFile)('cdata.fr', data);
49
- (0, _chai.expect)(parsed).to.deep.equal({
50
- cave: 'Fisher Ridge Cave System',
51
- errors: [],
52
- location: 'Hart Co., KY',
53
- trips: [{
54
- header: {
55
- name: 'ENTRANCE DROPS, JOE\'S "I LOVE MY WIFE TRAVERSE", TRICKY TRAVERSE',
56
- comment: 'This File has Crumps test connected. 11/20/12',
57
- section: undefined,
58
- date: undefined,
59
- team: undefined,
60
- distanceUnit: _unitized.Length.feet,
61
- azimuthUnit: _unitized.Angle.degrees,
62
- inclinationUnit: _unitized.Angle.degrees,
63
- backsightAzimuthCorrected: true,
64
- backsightInclinationCorrected: false,
65
- hasBacksightAzimuth: true,
66
- hasBacksightInclination: false
67
- },
68
- shots: [{
69
- backsightAzimuth: null,
70
- backsightInclination: null,
71
- comment: null,
72
- distance: _unitized.Unitize.feet(0),
73
- excludeDistance: true,
74
- from: 'AE20',
75
- frontsightAzimuth: null,
76
- frontsightInclination: null,
77
- kind: _FrcsShot.FrcsShotKind.Normal,
78
- to: null,
79
- fromLruds: {
80
- left: _unitized.Unitize.feet(1),
81
- right: _unitized.Unitize.feet(3),
82
- up: _unitized.Unitize.feet(0),
83
- down: _unitized.Unitize.feet(2)
84
- }
85
- }, {
86
- from: 'AE20',
87
- to: 'AE19',
88
- kind: _FrcsShot.FrcsShotKind.Normal,
89
- distance: _unitized.Unitize.feet(9.3),
90
- frontsightAzimuth: _unitized.Unitize.degrees(60),
91
- backsightAzimuth: _unitized.Unitize.degrees(60),
92
- frontsightInclination: _unitized.Unitize.degrees(-36),
93
- backsightInclination: null,
94
- excludeDistance: false,
95
- comment: "AE20 0 0 0 Bug-can't put before so put after-so can't make 2 fixed 10/28/12",
96
- toLruds: {
97
- left: _unitized.Unitize.feet(2),
98
- right: _unitized.Unitize.feet(12),
99
- up: _unitized.Unitize.feet(0),
100
- down: _unitized.Unitize.feet(20)
101
- }
102
- }, {
103
- from: 'AE19',
104
- to: 'AE18',
105
- kind: _FrcsShot.FrcsShotKind.Normal,
106
- distance: _unitized.Unitize.feet(24.5),
107
- frontsightAzimuth: _unitized.Unitize.degrees(0),
108
- backsightAzimuth: _unitized.Unitize.degrees(0),
109
- frontsightInclination: _unitized.Unitize.degrees(-90),
110
- backsightInclination: null,
111
- excludeDistance: false,
112
- comment: null,
113
- toLruds: {
114
- left: _unitized.Unitize.feet(6),
115
- right: _unitized.Unitize.feet(10),
116
- up: _unitized.Unitize.feet(25),
117
- down: _unitized.Unitize.feet(0)
118
- }
119
- }, {
120
- from: 'AE18',
121
- to: 'AE17',
122
- kind: _FrcsShot.FrcsShotKind.Normal,
123
- distance: _unitized.Unitize.feet(8),
124
- frontsightAzimuth: _unitized.Unitize.degrees(350.5),
125
- backsightAzimuth: _unitized.Unitize.degrees(350.5),
126
- frontsightInclination: _unitized.Unitize.degrees(17),
127
- backsightInclination: null,
128
- excludeDistance: false,
129
- comment: null,
130
- toLruds: {
131
- left: _unitized.Unitize.feet(3),
132
- right: _unitized.Unitize.feet(5),
133
- up: _unitized.Unitize.feet(0),
134
- down: _unitized.Unitize.feet(0)
135
- }
136
- }, {
137
- from: 'AE17',
138
- to: 'AE16',
139
- kind: _FrcsShot.FrcsShotKind.Normal,
140
- distance: _unitized.Unitize.feet(6.7),
141
- frontsightAzimuth: _unitized.Unitize.degrees(0),
142
- backsightAzimuth: _unitized.Unitize.degrees(0),
143
- frontsightInclination: _unitized.Unitize.degrees(-90),
144
- backsightInclination: null,
145
- excludeDistance: false,
146
- comment: null,
147
- toLruds: {
148
- left: _unitized.Unitize.feet(3),
149
- right: _unitized.Unitize.feet(5),
150
- up: _unitized.Unitize.feet(6),
151
- down: _unitized.Unitize.feet(1)
152
- }
153
- }, {
154
- from: 'AE16',
155
- to: 'AE15',
156
- kind: _FrcsShot.FrcsShotKind.Normal,
157
- distance: _unitized.Unitize.feet(12.6),
158
- frontsightAzimuth: _unitized.Unitize.degrees(70.5),
159
- backsightAzimuth: _unitized.Unitize.degrees(71),
160
- frontsightInclination: _unitized.Unitize.degrees(-18),
161
- backsightInclination: null,
162
- excludeDistance: false,
163
- comment: null,
164
- toLruds: {
165
- left: _unitized.Unitize.feet(4),
166
- right: _unitized.Unitize.feet(0),
167
- up: _unitized.Unitize.feet(2),
168
- down: _unitized.Unitize.feet(1)
169
- }
170
- }, {
171
- from: 'AE15',
172
- to: 'AE14',
173
- kind: _FrcsShot.FrcsShotKind.Normal,
174
- distance: _unitized.Unitize.feet(10),
175
- frontsightAzimuth: _unitized.Unitize.degrees(21.5),
176
- backsightAzimuth: _unitized.Unitize.degrees(20),
177
- frontsightInclination: _unitized.Unitize.degrees(6),
178
- backsightInclination: null,
179
- excludeDistance: false,
180
- comment: null,
181
- toLruds: {
182
- left: _unitized.Unitize.feet(5),
183
- right: _unitized.Unitize.feet(5),
184
- up: _unitized.Unitize.feet(0),
185
- down: _unitized.Unitize.feet(3)
186
- }
187
- }, {
188
- from: 'AE14',
189
- to: 'AE13',
190
- kind: _FrcsShot.FrcsShotKind.Normal,
191
- distance: _unitized.Unitize.feet(26.8),
192
- frontsightAzimuth: _unitized.Unitize.degrees(288),
193
- backsightAzimuth: _unitized.Unitize.degrees(286),
194
- frontsightInclination: _unitized.Unitize.degrees(-50),
195
- backsightInclination: null,
196
- excludeDistance: false,
197
- comment: null,
198
- toLruds: {
199
- left: _unitized.Unitize.feet(0),
200
- right: _unitized.Unitize.feet(7),
201
- up: _unitized.Unitize.feet(20),
202
- down: _unitized.Unitize.feet(5)
203
- }
204
- }, {
205
- from: 'AE13',
206
- to: 'AE12',
207
- kind: _FrcsShot.FrcsShotKind.Normal,
208
- distance: _unitized.Unitize.feet(20.7),
209
- frontsightAzimuth: _unitized.Unitize.degrees(236),
210
- backsightAzimuth: _unitized.Unitize.degrees(236),
211
- frontsightInclination: _unitized.Unitize.degrees(34),
212
- backsightInclination: null,
213
- excludeDistance: false,
214
- comment: 'SHORT CANYON AT THE BASE OF THE SECOND DROP',
215
- toLruds: {
216
- left: _unitized.Unitize.feet(3),
217
- right: _unitized.Unitize.feet(5),
218
- up: _unitized.Unitize.feet(4),
219
- down: _unitized.Unitize.feet(4)
220
- }
221
- }]
222
- }, {
223
- header: {
224
- name: 'TRICKY TRAVERSE AND THEN FIRST SURVEY IN UPPER CROWLWAY',
225
- comment: null,
226
- section: undefined,
227
- date: undefined,
228
- team: undefined,
229
- distanceUnit: _unitized.Length.inches,
230
- azimuthUnit: _unitized.Angle.degrees,
231
- inclinationUnit: _unitized.Angle.degrees,
232
- backsightAzimuthCorrected: false,
233
- backsightInclinationCorrected: false,
234
- hasBacksightAzimuth: true,
235
- hasBacksightInclination: false
236
- },
237
- shots: [{
238
- from: 'A1',
239
- to: 'A2',
240
- kind: _FrcsShot.FrcsShotKind.Normal,
241
- distance: _unitized.Unitize.inches(48 * 12 + 10),
242
- frontsightAzimuth: _unitized.Unitize.degrees(292),
243
- backsightAzimuth: _unitized.Unitize.degrees(110),
244
- frontsightInclination: _unitized.Unitize.degrees(-42),
245
- backsightInclination: null,
246
- excludeDistance: false,
247
- comment: null,
248
- fromLruds: {
249
- left: _unitized.Unitize.feet(2),
250
- right: _unitized.Unitize.feet(7),
251
- up: _unitized.Unitize.feet(3),
252
- down: _unitized.Unitize.feet(4.5)
253
- },
254
- toLruds: {
255
- left: _unitized.Unitize.feet(5),
256
- right: _unitized.Unitize.feet(10),
257
- up: _unitized.Unitize.feet(35),
258
- down: _unitized.Unitize.feet(5)
259
- }
260
- }, {
261
- from: 'A2',
262
- to: 'A3',
263
- kind: _FrcsShot.FrcsShotKind.Normal,
264
- distance: _unitized.Unitize.inches(12 * 12 + 5),
265
- frontsightAzimuth: _unitized.Unitize.degrees(333.5),
266
- backsightAzimuth: _unitized.Unitize.degrees(153.5),
267
- frontsightInclination: _unitized.Unitize.degrees(35),
268
- backsightInclination: null,
269
- excludeDistance: false,
270
- comment: null,
271
- toLruds: {
272
- left: _unitized.Unitize.feet(3),
273
- right: _unitized.Unitize.feet(1),
274
- up: _unitized.Unitize.feet(15),
275
- down: _unitized.Unitize.feet(5)
276
- }
277
- }, {
278
- from: 'A3',
279
- to: 'A4',
280
- kind: _FrcsShot.FrcsShotKind.Normal,
281
- distance: _unitized.Unitize.inches(4 * 12 + 2),
282
- frontsightAzimuth: _unitized.Unitize.degrees(0),
283
- backsightAzimuth: _unitized.Unitize.degrees(0),
284
- frontsightInclination: _unitized.Unitize.degrees(90),
285
- backsightInclination: null,
286
- excludeDistance: false,
287
- comment: null,
288
- toLruds: {
289
- left: _unitized.Unitize.feet(3),
290
- right: _unitized.Unitize.feet(1),
291
- up: _unitized.Unitize.feet(10),
292
- down: _unitized.Unitize.feet(10)
293
- }
294
- }]
295
- }, {
296
- header: {
297
- azimuthUnit: _unitized.Angle.degrees,
298
- backsightAzimuthCorrected: true,
299
- backsightInclinationCorrected: false,
300
- comment: null,
301
- date: undefined,
302
- distanceUnit: _unitized.Length.feet,
303
- hasBacksightAzimuth: true,
304
- hasBacksightInclination: false,
305
- inclinationUnit: _unitized.Angle.degrees,
306
- name: "DOUG'S DEMISE (50 FT DROP), CHRIS CROSS, CRAWL ABOVE DROP",
307
- section: undefined,
308
- team: undefined
309
- },
310
- shots: [{
311
- backsightAzimuth: _unitized.Unitize.degrees(0),
312
- backsightInclination: null,
313
- comment: null,
314
- distance: _unitized.Unitize.feet(13.7),
315
- excludeDistance: false,
316
- from: 'B30',
317
- frontsightAzimuth: _unitized.Unitize.degrees(0),
318
- frontsightInclination: _unitized.Unitize.degrees(40),
319
- kind: ' ',
320
- to: 'B31',
321
- fromLruds: {
322
- left: _unitized.Unitize.feet(8),
323
- right: _unitized.Unitize.feet(3),
324
- up: _unitized.Unitize.feet(5),
325
- down: _unitized.Unitize.feet(1.2)
326
- },
327
- toLruds: {
328
- left: _unitized.Unitize.feet(2),
329
- right: _unitized.Unitize.feet(4),
330
- up: _unitized.Unitize.feet(6),
331
- down: null
332
- }
333
- }, {
334
- backsightAzimuth: _unitized.Unitize.degrees(0),
335
- backsightInclination: null,
336
- comment: null,
337
- distance: _unitized.Unitize.feet(13.7),
338
- excludeDistance: true,
339
- isSplay: true,
340
- from: 'B30',
341
- frontsightAzimuth: _unitized.Unitize.degrees(0),
342
- frontsightInclination: _unitized.Unitize.degrees(40),
343
- kind: ' ',
344
- to: 'B30sp',
345
- toLruds: {
346
- left: _unitized.Unitize.feet(2),
347
- right: _unitized.Unitize.feet(4),
348
- up: _unitized.Unitize.feet(6),
349
- down: null
350
- }
351
- }]
352
- }]
353
- });
354
- });
355
- (0, _mocha.it)('horizontal shots', async function () {
356
- const data = `blah
357
- *
358
- *
359
- TEST
360
- *
361
- FT C DD
362
- E22 E21 36.2H 338.5 340.0 1.0 12 2 15 15
363
- `;
364
- const parsed = await (0, _index.parseFrcsSurveyFile)('cdata.fr', data);
365
- (0, _chai.expect)(parsed.trips[0].shots[0]).to.deep.equal({
366
- from: 'E21',
367
- to: 'E22',
368
- kind: _FrcsShot.FrcsShotKind.Horizontal,
369
- distance: _unitized.Unitize.feet(Math.sqrt(36.2 * 36.2 + 1)),
370
- horizontalDistance: _unitized.Unitize.feet(36.2),
371
- verticalDistance: _unitized.Unitize.feet(1),
372
- frontsightAzimuth: _unitized.Unitize.degrees(338.5),
373
- backsightAzimuth: _unitized.Unitize.degrees(340),
374
- frontsightInclination: _unitized.Angle.atan2(1, 36.2),
375
- backsightInclination: null,
376
- excludeDistance: false,
377
- comment: null,
378
- toLruds: {
379
- left: _unitized.Unitize.feet(12),
380
- right: _unitized.Unitize.feet(2),
381
- up: _unitized.Unitize.feet(15),
382
- down: _unitized.Unitize.feet(15)
383
- }
384
- });
385
- });
386
- (0, _mocha.it)('horizontal feet and inches shots', async function () {
387
- const data = `blah
388
- *
389
- *
390
- TEST
391
- *
392
- FI C DD
393
- A27 A26 16 9H 345.0 163.0 -1.0 0 3 5 4
394
- `;
395
- const parsed = await (0, _index.parseFrcsSurveyFile)('cdata.fr', data);
396
- (0, _chai.expect)(parsed.trips[0].shots[0]).to.deep.equal({
397
- from: 'A26',
398
- to: 'A27',
399
- kind: _FrcsShot.FrcsShotKind.Horizontal,
400
- distance: _unitized.Unitize.feet(Math.sqrt(16.75 * 16.75 + 1)),
401
- horizontalDistance: _unitized.Unitize.inches(16 * 12 + 9),
402
- verticalDistance: _unitized.Unitize.feet(-1),
403
- frontsightAzimuth: _unitized.Unitize.degrees(345),
404
- backsightAzimuth: _unitized.Unitize.degrees(163),
405
- frontsightInclination: _unitized.Angle.atan2(-1, 16.75),
406
- backsightInclination: null,
407
- excludeDistance: false,
408
- comment: null,
409
- toLruds: {
410
- left: _unitized.Unitize.feet(0),
411
- right: _unitized.Unitize.feet(3),
412
- up: _unitized.Unitize.feet(5),
413
- down: _unitized.Unitize.feet(4)
414
- }
415
- });
416
- });
417
- (0, _mocha.it)('diagonal shots', async function () {
418
- const data = `blah
419
- *
420
- *
421
- TEST
422
- *
423
- FT C DD
424
- E37 E36 31.6D 231.0 232.0 2.0 3 10 20 32
425
- `;
426
- const parsed = await (0, _index.parseFrcsSurveyFile)('cdata.fr', data);
427
- (0, _chai.expect)(parsed.trips[0].shots[0]).to.deep.equal({
428
- from: 'E36',
429
- to: 'E37',
430
- kind: _FrcsShot.FrcsShotKind.Diagonal,
431
- distance: _unitized.Unitize.feet(31.6),
432
- verticalDistance: _unitized.Unitize.feet(2),
433
- frontsightAzimuth: _unitized.Unitize.degrees(231),
434
- backsightAzimuth: _unitized.Unitize.degrees(232),
435
- frontsightInclination: _unitized.Angle.asin(2 / 31.6),
436
- backsightInclination: null,
437
- excludeDistance: false,
438
- comment: null,
439
- toLruds: {
440
- left: _unitized.Unitize.feet(3),
441
- right: _unitized.Unitize.feet(10),
442
- up: _unitized.Unitize.feet(20),
443
- down: _unitized.Unitize.feet(32)
444
- }
445
- });
446
- });
447
- (0, _mocha.it)('invalid distance unit', async function () {
448
- const data = `blah
449
- *
450
- *
451
- TEST
452
- *
453
- FJ C DD
454
- `;
455
- (0, _chai.expect)(await (0, _index.parseFrcsSurveyFile)('cdata.fr', data)).to.deep.equal({
456
- cave: 'blah',
457
- errors: [new _parseSegment.SegmentParseError('Invalid distance unit', new _parseSegment.Segment({
458
- value: 'FJ C DD',
459
- source: 'cdata.fr',
460
- startLine: 5,
461
- startCol: 0
462
- }).substring(0, 2))],
463
- location: null,
464
- trips: [{
465
- header: {
466
- azimuthUnit: _unitized.Angle.degrees,
467
- backsightAzimuthCorrected: true,
468
- backsightInclinationCorrected: false,
469
- comment: null,
470
- date: undefined,
471
- distanceUnit: _unitized.Length.feet,
472
- hasBacksightAzimuth: true,
473
- hasBacksightInclination: false,
474
- inclinationUnit: _unitized.Angle.degrees,
475
- name: 'TEST',
476
- section: undefined,
477
- team: undefined
478
- },
479
- shots: []
480
- }]
481
- });
482
- });
483
- (0, _mocha.it)('meters', async function () {
484
- const data = `blah
485
- *
486
- *
487
- TEST
488
- *
489
- MT CC DD
490
- E37 E36 31.6 231.0 232.0 2.0 3.0 3 10 20 32
491
- `;
492
- (0, _chai.expect)(await (0, _index.parseFrcsSurveyFile)('cdata.fr', data)).to.deep.equal({
493
- cave: 'blah',
494
- errors: [],
495
- location: null,
496
- trips: [{
497
- header: {
498
- azimuthUnit: _unitized.Angle.degrees,
499
- backsightAzimuthCorrected: true,
500
- backsightInclinationCorrected: true,
501
- comment: null,
502
- date: undefined,
503
- distanceUnit: _unitized.Length.meters,
504
- hasBacksightAzimuth: true,
505
- hasBacksightInclination: true,
506
- inclinationUnit: _unitized.Angle.degrees,
507
- name: 'TEST',
508
- section: undefined,
509
- team: undefined
510
- },
511
- shots: [{
512
- from: 'E36',
513
- to: 'E37',
514
- kind: _FrcsShot.FrcsShotKind.Normal,
515
- distance: _unitized.Unitize.meters(31.6),
516
- frontsightAzimuth: _unitized.Unitize.degrees(231),
517
- backsightAzimuth: _unitized.Unitize.degrees(232),
518
- frontsightInclination: _unitized.Unitize.degrees(2),
519
- backsightInclination: _unitized.Unitize.degrees(3),
520
- excludeDistance: false,
521
- comment: null,
522
- toLruds: {
523
- left: _unitized.Unitize.meters(3),
524
- right: _unitized.Unitize.meters(10),
525
- up: _unitized.Unitize.meters(20),
526
- down: _unitized.Unitize.meters(32)
527
- }
528
- }]
529
- }]
530
- });
531
- });
532
- (0, _mocha.it)('exclude length', async function () {
533
- const data = `blah
534
- *
535
- *
536
- TEST
537
- *
538
- MT CC DD
539
- E37 E36 31.6 * 231.0 232.0 2.0 3.0 3 10 20 32
540
- `;
541
- const parsed = await (0, _index.parseFrcsSurveyFile)('cdata.fr', data);
542
- (0, _chai.expect)(parsed.trips[0].shots[0]).to.deep.equal({
543
- from: 'E36',
544
- to: 'E37',
545
- kind: _FrcsShot.FrcsShotKind.Normal,
546
- distance: _unitized.Unitize.meters(31.6),
547
- frontsightAzimuth: _unitized.Unitize.degrees(231),
548
- backsightAzimuth: _unitized.Unitize.degrees(232),
549
- frontsightInclination: _unitized.Unitize.degrees(2),
550
- backsightInclination: _unitized.Unitize.degrees(3),
551
- excludeDistance: true,
552
- comment: null,
553
- toLruds: {
554
- left: _unitized.Unitize.meters(3),
555
- right: _unitized.Unitize.meters(10),
556
- up: _unitized.Unitize.meters(20),
557
- down: _unitized.Unitize.meters(32)
558
- }
559
- });
560
- });
561
- (0, _mocha.it)('negative LRUD', async function () {
562
- const data = `blah
563
- *
564
- *
565
- TEST
566
- *
567
- MT CC DD
568
- E37 E36 31.6 231.0 232.0 2.0 3.0 -3 10 20 32
569
- `;
570
- const parsed = await (0, _index.parseFrcsSurveyFile)('cdata.fr', data);
571
- (0, _chai.expect)(parsed.trips[0].shots[0]).to.deep.equal({
572
- from: 'E36',
573
- to: 'E37',
574
- kind: _FrcsShot.FrcsShotKind.Normal,
575
- distance: _unitized.Unitize.meters(31.6),
576
- frontsightAzimuth: _unitized.Unitize.degrees(231),
577
- backsightAzimuth: _unitized.Unitize.degrees(232),
578
- frontsightInclination: _unitized.Unitize.degrees(2),
579
- backsightInclination: _unitized.Unitize.degrees(3),
580
- excludeDistance: false,
581
- comment: null,
582
- toLruds: {
583
- left: null,
584
- right: _unitized.Unitize.meters(10),
585
- up: _unitized.Unitize.meters(20),
586
- down: _unitized.Unitize.meters(32)
587
- }
588
- });
589
- });
590
- (0, _mocha.it)('- for no backsight', async function () {
591
- const data = `blah
592
- *
593
- *
594
- TEST
595
- *
596
- MT B- DD
597
- `;
598
- const parsed = await (0, _index.parseFrcsSurveyFile)('cdata.fr', data);
599
- (0, _chai.expect)(parsed.trips[0].header).to.deep.equal({
600
- name: 'TEST',
601
- comment: null,
602
- section: undefined,
603
- date: undefined,
604
- team: undefined,
605
- distanceUnit: _unitized.Length.meters,
606
- azimuthUnit: _unitized.Angle.degrees,
607
- inclinationUnit: _unitized.Angle.degrees,
608
- backsightAzimuthCorrected: false,
609
- backsightInclinationCorrected: false,
610
- hasBacksightAzimuth: true,
611
- hasBacksightInclination: false
612
- });
613
- });
614
- (0, _mocha.it)('missing both frontsight and backsight inclination', async function () {
615
- const data = `blah
616
- *
617
- *
618
- TEST
619
- *
620
- MT B- DD
621
- E37 E36 31.6 231.0 232.0 -3 10 20 32
622
- `;
623
- const parsed = await (0, _index.parseFrcsSurveyFile)('cdata.fr', data);
624
- (0, _chai.expect)(parsed.trips[0].shots[0]).to.deep.equal({
625
- from: 'E36',
626
- to: 'E37',
627
- kind: _FrcsShot.FrcsShotKind.Normal,
628
- distance: _unitized.Unitize.meters(31.6),
629
- frontsightAzimuth: _unitized.Unitize.degrees(231),
630
- backsightAzimuth: _unitized.Unitize.degrees(232),
631
- frontsightInclination: _unitized.Unitize.degrees(0),
632
- backsightInclination: null,
633
- excludeDistance: false,
634
- comment: null,
635
- toLruds: {
636
- left: null,
637
- right: _unitized.Unitize.meters(10),
638
- up: _unitized.Unitize.meters(20),
639
- down: _unitized.Unitize.meters(32)
640
- }
641
- });
642
- });
643
- });
644
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbW9jaGEiLCJyZXF1aXJlIiwiX2luZGV4IiwiX3VuaXRpemVkIiwiX2NoYWkiLCJfRnJjc1Nob3QiLCJfcGFyc2VTZWdtZW50IiwiZGF0YSIsImRlc2NyaWJlIiwiaXQiLCJwYXJzZWQiLCJwYXJzZUZyY3NTdXJ2ZXlGaWxlIiwiZXhwZWN0IiwidG8iLCJkZWVwIiwiZXF1YWwiLCJjYXZlIiwiZXJyb3JzIiwibG9jYXRpb24iLCJ0cmlwcyIsImhlYWRlciIsIm5hbWUiLCJjb21tZW50Iiwic2VjdGlvbiIsInVuZGVmaW5lZCIsImRhdGUiLCJ0ZWFtIiwiZGlzdGFuY2VVbml0IiwiTGVuZ3RoIiwiZmVldCIsImF6aW11dGhVbml0IiwiQW5nbGUiLCJkZWdyZWVzIiwiaW5jbGluYXRpb25Vbml0IiwiYmFja3NpZ2h0QXppbXV0aENvcnJlY3RlZCIsImJhY2tzaWdodEluY2xpbmF0aW9uQ29ycmVjdGVkIiwiaGFzQmFja3NpZ2h0QXppbXV0aCIsImhhc0JhY2tzaWdodEluY2xpbmF0aW9uIiwic2hvdHMiLCJiYWNrc2lnaHRBemltdXRoIiwiYmFja3NpZ2h0SW5jbGluYXRpb24iLCJkaXN0YW5jZSIsIlVuaXRpemUiLCJleGNsdWRlRGlzdGFuY2UiLCJmcm9tIiwiZnJvbnRzaWdodEF6aW11dGgiLCJmcm9udHNpZ2h0SW5jbGluYXRpb24iLCJraW5kIiwiRnJjc1Nob3RLaW5kIiwiTm9ybWFsIiwiZnJvbUxydWRzIiwibGVmdCIsInJpZ2h0IiwidXAiLCJkb3duIiwidG9McnVkcyIsImluY2hlcyIsImlzU3BsYXkiLCJIb3Jpem9udGFsIiwiTWF0aCIsInNxcnQiLCJob3Jpem9udGFsRGlzdGFuY2UiLCJ2ZXJ0aWNhbERpc3RhbmNlIiwiYXRhbjIiLCJEaWFnb25hbCIsImFzaW4iLCJTZWdtZW50UGFyc2VFcnJvciIsIlNlZ21lbnQiLCJ2YWx1ZSIsInNvdXJjZSIsInN0YXJ0TGluZSIsInN0YXJ0Q29sIiwic3Vic3RyaW5nIiwibWV0ZXJzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0cmluZy9wYXJzZUZyY3NTdXJ2ZXlGaWxlLnNwZWMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVzY3JpYmUsIGl0IH0gZnJvbSAnbW9jaGEnXG5pbXBvcnQgeyBwYXJzZUZyY3NTdXJ2ZXlGaWxlIH0gZnJvbSAnLi9pbmRleCdcbmltcG9ydCB7IExlbmd0aCwgQW5nbGUsIFVuaXRpemUgfSBmcm9tICdAc3BlbGVvdGljYS91bml0aXplZCdcbmltcG9ydCB7IGV4cGVjdCB9IGZyb20gJ2NoYWknXG5pbXBvcnQgeyBGcmNzU2hvdEtpbmQgfSBmcm9tICcuLi9GcmNzU2hvdCdcbmltcG9ydCB7IFNlZ21lbnRQYXJzZUVycm9yLCBTZWdtZW50IH0gZnJvbSAncGFyc2Utc2VnbWVudCdcblxuY29uc3QgZGF0YSA9IGAgICAgICBGaXNoZXIgUmlkZ2UgQ2F2ZSBTeXN0ZW0sIEhhcnQgQ28uLCBLWVxuRU5UUkFOQ0UgRFJPUFMsIEpPRSdTIFwiSSBMT1ZFIE1ZIFdJRkUgVFJBVkVSU0VcIiwgVFJJQ0tZIFRSQVZFUlNFXG5QRVRFUiBRVUlDSywgS0VJVEggT1JUSVogICAtICAyLTE1LTgxXG5UaGlzIEZpbGUgaGFzIENydW1wcyB0ZXN0IGNvbm5lY3RlZC4gIDExLzIwLzEyXG4gKlxuRlQgQyAgREQgICAgQVxuICAgICAgQUUyMCAgICAgMCAgICAgICAgICAgICAgICAgICAgICAgICAgMSAgMyAgMCAgMlxuKiAgICAgICVGU1xuKiAgICAgQUUyMCAgICAgMCAgICAgICAgMCAgICAgICAgMCAgICAgICAgQnVnLWNhbid0IHB1dCBiZWZvcmUgc28gcHV0IGFmdGVyLXNvIGNhbid0IG1ha2UgMiBmaXhlZCAxMC8yOC8xMlxuIEFFMTkgQUUyMCAgIDkuMyAgICA2MC4wICA2MC4wLTM2LjAgICAgICAgMiAxMiAgMCAyMFxuIEFFMTggQUUxOSAgMjQuNSAgICAgMC4wICAgMC4wLTkwLjAgICAgICAgNiAxMCAyNSAgMFxuIEFFMTcgQUUxOCAgIDguMCAgIDM1MC41IDM1MC41IDE3LjAgICAgICAgMyAgNSAgMCAgMFxuIEFFMTYgQUUxNyAgIDYuNyAgICAgMC4wICAgMC4wLTkwLjAgICAgICAgMyAgNSAgNiAgMVxuIEFFMTUgQUUxNiAgMTIuNiAgICA3MC41ICA3MS4wLTE4LjAgICAgICAgNCAgMCAgMiAgMVxuIEFFMTQgQUUxNSAgMTAuMCAgICAyMS41ICAyMC4wICA2LjAgICAgICAgNSAgNSAgMCAgM1xuIEFFMTMgQUUxNCAgMjYuOCAgIDI4OC4wIDI4Ni4wLTUwLjAgICAgICAgMCAgNyAyMCAgNVxuKlxuKlNIT1JUIENBTllPTiBBVCBUSEUgQkFTRSBPRiBUSEUgU0VDT05EIERST1BcbiBBRTEyIEFFMTMgIDIwLjcgICAyMzYuMCAyMzYuMCAzNC4wICAgICAgIDMgIDUgIDQgIDRcbiAqXG5UUklDS1kgVFJBVkVSU0UgQU5EIFRIRU4gRklSU1QgU1VSVkVZIElOIFVQUEVSIENST1dMV0FZXG5EQU4gQ1JPV0wsIEtFSVRIIE9SVElaLCBDSElQIEhPUFBFUiwgUEVURVIgUVVJQ0ssIExBUlJZIEJFQU4gICAgMTQgRkVCIDE5ODFcbiAqXG5GSSBCICBERFxuKlxuKiAgIEExICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIgIDcgMyA0LjVcbiAgIEEyICAgQTEgIDQ4IDEwICAyOTIuMCAxMTAuMC00Mi4wICAgICAgIDUgMTAgMzUgIDVcbiAgIEEzICAgQTIgIDEyICA1ICAzMzMuNSAxNTMuNSAzNS4wICAgICAgIDMgIDEgMTUgIDVcbiAgIEE0ICAgQTMgICA0ICAyICAgIDAuMCAgIDAuMCA5MC4wICAgICAgIDMgIDEgMTAgMTBcbiAqXG5ET1VHJ1MgREVNSVNFICg1MCBGVCBEUk9QKSwgQ0hSSVMgQ1JPU1MsIENSQVdMIEFCT1ZFIERST1BcblBFVEVSIFFVSUNLLCBDSFJJUyBHRVJBQ0UsIFBISUwgT0RFTiwgQ0hJUCBIT1BQRVIgLSAzLTYtODFcbiAqXG5GVCBDICBERFxuICBCMzEgIEIzMCAgMTMuNyAgIDM2MC4wIDM2MC4wIDQwLjAgICAgICAgMiAgNCAgNiAgICAgICBCMzAgOCAzIDUgMS4yXG5CMzBzcCAgQjMwICAxMy43IHMgMzYwLjAgMzYwLjAgNDAuMCAgICAgICAyICA0ICA2ICBcbmBcblxuZGVzY3JpYmUoJ3BhcnNlRnJjc1N1cnZleUZpbGUnLCAoKSA9PiB7XG4gIGl0KCdiYXNpYyB0ZXN0JywgYXN5bmMgZnVuY3Rpb24oKSB7XG4gICAgY29uc3QgcGFyc2VkID0gYXdhaXQgcGFyc2VGcmNzU3VydmV5RmlsZSgnY2RhdGEuZnInLCBkYXRhKVxuICAgIGV4cGVjdChwYXJzZWQpLnRvLmRlZXAuZXF1YWwoe1xuICAgICAgY2F2ZTogJ0Zpc2hlciBSaWRnZSBDYXZlIFN5c3RlbScsXG4gICAgICBlcnJvcnM6IFtdLFxuICAgICAgbG9jYXRpb246ICdIYXJ0IENvLiwgS1knLFxuICAgICAgdHJpcHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGhlYWRlcjoge1xuICAgICAgICAgICAgbmFtZTpcbiAgICAgICAgICAgICAgJ0VOVFJBTkNFIERST1BTLCBKT0VcXCdTIFwiSSBMT1ZFIE1ZIFdJRkUgVFJBVkVSU0VcIiwgVFJJQ0tZIFRSQVZFUlNFJyxcbiAgICAgICAgICAgIGNvbW1lbnQ6ICdUaGlzIEZpbGUgaGFzIENydW1wcyB0ZXN0IGNvbm5lY3RlZC4gIDExLzIwLzEyJyxcbiAgICAgICAgICAgIHNlY3Rpb246IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGRhdGU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHRlYW06IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGRpc3RhbmNlVW5pdDogTGVuZ3RoLmZlZXQsXG4gICAgICAgICAgICBhemltdXRoVW5pdDogQW5nbGUuZGVncmVlcyxcbiAgICAgICAgICAgIGluY2xpbmF0aW9uVW5pdDogQW5nbGUuZGVncmVlcyxcbiAgICAgICAgICAgIGJhY2tzaWdodEF6aW11dGhDb3JyZWN0ZWQ6IHRydWUsXG4gICAgICAgICAgICBiYWNrc2lnaHRJbmNsaW5hdGlvbkNvcnJlY3RlZDogZmFsc2UsXG4gICAgICAgICAgICBoYXNCYWNrc2lnaHRBemltdXRoOiB0cnVlLFxuICAgICAgICAgICAgaGFzQmFja3NpZ2h0SW5jbGluYXRpb246IGZhbHNlLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgc2hvdHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYmFja3NpZ2h0QXppbXV0aDogbnVsbCxcbiAgICAgICAgICAgICAgYmFja3NpZ2h0SW5jbGluYXRpb246IG51bGwsXG4gICAgICAgICAgICAgIGNvbW1lbnQ6IG51bGwsXG4gICAgICAgICAgICAgIGRpc3RhbmNlOiBVbml0aXplLmZlZXQoMCksXG4gICAgICAgICAgICAgIGV4Y2x1ZGVEaXN0YW5jZTogdHJ1ZSxcbiAgICAgICAgICAgICAgZnJvbTogJ0FFMjAnLFxuICAgICAgICAgICAgICBmcm9udHNpZ2h0QXppbXV0aDogbnVsbCxcbiAgICAgICAgICAgICAgZnJvbnRzaWdodEluY2xpbmF0aW9uOiBudWxsLFxuICAgICAgICAgICAgICBraW5kOiBGcmNzU2hvdEtpbmQuTm9ybWFsLFxuICAgICAgICAgICAgICB0bzogbnVsbCxcblxuICAgICAgICAgICAgICBmcm9tTHJ1ZHM6IHtcbiAgICAgICAgICAgICAgICBsZWZ0OiBVbml0aXplLmZlZXQoMSksXG4gICAgICAgICAgICAgICAgcmlnaHQ6IFVuaXRpemUuZmVldCgzKSxcbiAgICAgICAgICAgICAgICB1cDogVW5pdGl6ZS5mZWV0KDApLFxuICAgICAgICAgICAgICAgIGRvd246IFVuaXRpemUuZmVldCgyKSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGZyb206ICdBRTIwJyxcbiAgICAgICAgICAgICAgdG86ICdBRTE5JyxcbiAgICAgICAgICAgICAga2luZDogRnJjc1Nob3RLaW5kLk5vcm1hbCxcbiAgICAgICAgICAgICAgZGlzdGFuY2U6IFVuaXRpemUuZmVldCg5LjMpLFxuICAgICAgICAgICAgICBmcm9udHNpZ2h0QXppbXV0aDogVW5pdGl6ZS5kZWdyZWVzKDYwKSxcbiAgICAgICAgICAgICAgYmFja3NpZ2h0QXppbXV0aDogVW5pdGl6ZS5kZWdyZWVzKDYwKSxcbiAgICAgICAgICAgICAgZnJvbnRzaWdodEluY2xpbmF0aW9uOiBVbml0aXplLmRlZ3JlZXMoLTM2KSxcbiAgICAgICAgICAgICAgYmFja3NpZ2h0SW5jbGluYXRpb246IG51bGwsXG4gICAgICAgICAgICAgIGV4Y2x1ZGVEaXN0YW5jZTogZmFsc2UsXG4gICAgICAgICAgICAgIGNvbW1lbnQ6XG4gICAgICAgICAgICAgICAgXCJBRTIwICAgICAwICAgICAgICAwICAgICAgICAwICAgICAgICBCdWctY2FuJ3QgcHV0IGJlZm9yZSBzbyBwdXQgYWZ0ZXItc28gY2FuJ3QgbWFrZSAyIGZpeGVkIDEwLzI4LzEyXCIsXG5cbiAgICAgICAgICAgICAgdG9McnVkczoge1xuICAgICAgICAgICAgICAgIGxlZnQ6IFVuaXRpemUuZmVldCgyKSxcbiAgICAgICAgICAgICAgICByaWdodDogVW5pdGl6ZS5mZWV0KDEyKSxcbiAgICAgICAgICAgICAgICB1cDogVW5pdGl6ZS5mZWV0KDApLFxuICAgICAgICAgICAgICAgIGRvd246IFVuaXRpemUuZmVldCgyMCksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBmcm9tOiAnQUUxOScsXG4gICAgICAgICAgICAgIHRvOiAnQUUxOCcsXG4gICAgICAgICAgICAgIGtpbmQ6IEZyY3NTaG90S2luZC5Ob3JtYWwsXG4gICAgICAgICAgICAgIGRpc3RhbmNlOiBVbml0aXplLmZlZXQoMjQuNSksXG4gICAgICAgICAgICAgIGZyb250c2lnaHRBemltdXRoOiBVbml0aXplLmRlZ3JlZXMoMCksXG4gICAgICAgICAgICAgIGJhY2tzaWdodEF6aW11dGg6IFVuaXRpemUuZGVncmVlcygwKSxcbiAgICAgICAgICAgICAgZnJvbnRzaWdodEluY2xpbmF0aW9uOiBVbml0aXplLmRlZ3JlZXMoLTkwKSxcbiAgICAgICAgICAgICAgYmFja3NpZ2h0SW5jbGluYXRpb246IG51bGwsXG4gICAgICAgICAgICAgIGV4Y2x1ZGVEaXN0YW5jZTogZmFsc2UsXG4gICAgICAgICAgICAgIGNvbW1lbnQ6IG51bGwsXG5cbiAgICAgICAgICAgICAgdG9McnVkczoge1xuICAgICAgICAgICAgICAgIGxlZnQ6IFVuaXRpemUuZmVldCg2KSxcbiAgICAgICAgICAgICAgICByaWdodDogVW5pdGl6ZS5mZWV0KDEwKSxcbiAgICAgICAgICAgICAgICB1cDogVW5pdGl6ZS5mZWV0KDI1KSxcbiAgICAgICAgICAgICAgICBkb3duOiBVbml0aXplLmZlZXQoMCksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBmcm9tOiAnQUUxOCcsXG4gICAgICAgICAgICAgIHRvOiAnQUUxNycsXG4gICAgICAgICAgICAgIGtpbmQ6IEZyY3NTaG90S2luZC5Ob3JtYWwsXG4gICAgICAgICAgICAgIGRpc3RhbmNlOiBVbml0aXplLmZlZXQoOCksXG4gICAgICAgICAgICAgIGZyb250c2lnaHRBemltdXRoOiBVbml0aXplLmRlZ3JlZXMoMzUwLjUpLFxuICAgICAgICAgICAgICBiYWNrc2lnaHRBemltdXRoOiBVbml0aXplLmRlZ3JlZXMoMzUwLjUpLFxuICAgICAgICAgICAgICBmcm9udHNpZ2h0SW5jbGluYXRpb246IFVuaXRpemUuZGVncmVlcygxNyksXG4gICAgICAgICAgICAgIGJhY2tzaWdodEluY2xpbmF0aW9uOiBudWxsLFxuICAgICAgICAgICAgICBleGNsdWRlRGlzdGFuY2U6IGZhbHNlLFxuICAgICAgICAgICAgICBjb21tZW50OiBudWxsLFxuXG4gICAgICAgICAgICAgIHRvTHJ1ZHM6IHtcbiAgICAgICAgICAgICAgICBsZWZ0OiBVbml0aXplLmZlZXQoMyksXG4gICAgICAgICAgICAgICAgcmlnaHQ6IFVuaXRpemUuZmVldCg1KSxcbiAgICAgICAgICAgICAgICB1cDogVW5pdGl6ZS5mZWV0KDApLFxuICAgICAgICAgICAgICAgIGRvd246IFVuaXRpemUuZmVldCgwKSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGZyb206ICdBRTE3JyxcbiAgICAgICAgICAgICAgdG86ICdBRTE2JyxcbiAgICAgICAgICAgICAga2luZDogRnJjc1Nob3RLaW5kLk5vcm1hbCxcbiAgICAgICAgICAgICAgZGlzdGFuY2U6IFVuaXRpemUuZmVldCg2LjcpLFxuICAgICAgICAgICAgICBmcm9udHNpZ2h0QXppbXV0aDogVW5pdGl6ZS5kZWdyZWVzKDApLFxuICAgICAgICAgICAgICBiYWNrc2lnaHRBemltdXRoOiBVbml0aXplLmRlZ3JlZXMoMCksXG4gICAgICAgICAgICAgIGZyb250c2lnaHRJbmNsaW5hdGlvbjogVW5pdGl6ZS5kZWdyZWVzKC05MCksXG4gICAgICAgICAgICAgIGJhY2tzaWdodEluY2xpbmF0aW9uOiBudWxsLFxuICAgICAgICAgICAgICBleGNsdWRlRGlzdGFuY2U6IGZhbHNlLFxuICAgICAgICAgICAgICBjb21tZW50OiBudWxsLFxuXG4gICAgICAgICAgICAgIHRvTHJ1ZHM6IHtcbiAgICAgICAgICAgICAgICBsZWZ0OiBVbml0aXplLmZlZXQoMyksXG4gICAgICAgICAgICAgICAgcmlnaHQ6IFVuaXRpemUuZmVldCg1KSxcbiAgICAgICAgICAgICAgICB1cDogVW5pdGl6ZS5mZWV0KDYpLFxuICAgICAgICAgICAgICAgIGRvd246IFVuaXRpemUuZmVldCgxKSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGZyb206ICdBRTE2JyxcbiAgICAgICAgICAgICAgdG86ICdBRTE1JyxcbiAgICAgICAgICAgICAga2luZDogRnJjc1Nob3RLaW5kLk5vcm1hbCxcbiAgICAgICAgICAgICAgZGlzdGFuY2U6IFVuaXRpemUuZmVldCgxMi42KSxcbiAgICAgICAgICAgICAgZnJvbnRzaWdodEF6aW11dGg6IFVuaXRpemUuZGVncmVlcyg3MC41KSxcbiAgICAgICAgICAgICAgYmFja3NpZ2h0QXppbXV0aDogVW5pdGl6ZS5kZWdyZWVzKDcxKSxcbiAgICAgICAgICAgICAgZnJvbnRzaWdodEluY2xpbmF0aW9uOiBVbml0aXplLmRlZ3JlZXMoLTE4KSxcbiAgICAgICAgICAgICAgYmFja3NpZ2h0SW5jbGluYXRpb246IG51bGwsXG4gICAgICAgICAgICAgIGV4Y2x1ZGVEaXN0YW5jZTogZmFsc2UsXG4gICAgICAgICAgICAgIGNvbW1lbnQ6IG51bGwsXG5cbiAgICAgICAgICAgICAgdG9McnVkczoge1xuICAgICAgICAgICAgICAgIGxlZnQ6IFVuaXRpemUuZmVldCg0KSxcbiAgICAgICAgICAgICAgICByaWdodDogVW5pdGl6ZS5mZWV0KDApLFxuICAgICAgICAgICAgICAgIHVwOiBVbml0aXplLmZlZXQoMiksXG4gICAgICAgICAgICAgICAgZG93bjogVW5pdGl6ZS5mZWV0KDEpLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZnJvbTogJ0FFMTUnLFxuICAgICAgICAgICAgICB0bzogJ0FFMTQnLFxuICAgICAgICAgICAgICBraW5kOiBGcmNzU2hvdEtpbmQuTm9ybWFsLFxuICAgICAgICAgICAgICBkaXN0YW5jZTogVW5pdGl6ZS5mZWV0KDEwKSxcbiAgICAgICAgICAgICAgZnJvbnRzaWdodEF6aW11dGg6IFVuaXRpemUuZGVncmVlcygyMS41KSxcbiAgICAgICAgICAgICAgYmFja3NpZ2h0QXppbXV0aDogVW5pdGl6ZS5kZWdyZWVzKDIwKSxcbiAgICAgICAgICAgICAgZnJvbnRzaWdodEluY2xpbmF0aW9uOiBVbml0aXplLmRlZ3JlZXMoNiksXG4gICAgICAgICAgICAgIGJhY2tzaWdodEluY2xpbmF0aW9uOiBudWxsLFxuICAgICAgICAgICAgICBleGNsdWRlRGlzdGFuY2U6IGZhbHNlLFxuICAgICAgICAgICAgICBjb21tZW50OiBudWxsLFxuXG4gICAgICAgICAgICAgIHRvTHJ1ZHM6IHtcbiAgICAgICAgICAgICAgICBsZWZ0OiBVbml0aXplLmZlZXQoNSksXG4gICAgICAgICAgICAgICAgcmlnaHQ6IFVuaXRpemUuZmVldCg1KSxcbiAgICAgICAgICAgICAgICB1cDogVW5pdGl6ZS5mZWV0KDApLFxuICAgICAgICAgICAgICAgIGRvd246IFVuaXRpemUuZmVldCgzKSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGZyb206ICdBRTE0JyxcbiAgICAgICAgICAgICAgdG86ICdBRTEzJyxcbiAgICAgICAgICAgICAga2luZDogRnJjc1Nob3RLaW5kLk5vcm1hbCxcbiAgICAgICAgICAgICAgZGlzdGFuY2U6IFVuaXRpemUuZmVldCgyNi44KSxcbiAgICAgICAgICAgICAgZnJvbnRzaWdodEF6aW11dGg6IFVuaXRpemUuZGVncmVlcygyODgpLFxuICAgICAgICAgICAgICBiYWNrc2lnaHRBemltdXRoOiBVbml0aXplLmRlZ3JlZXMoMjg2KSxcbiAgICAgICAgICAgICAgZnJvbnRzaWdodEluY2xpbmF0aW9uOiBVbml0aXplLmRlZ3JlZXMoLTUwKSxcbiAgICAgICAgICAgICAgYmFja3NpZ2h0SW5jbGluYXRpb246IG51bGwsXG4gICAgICAgICAgICAgIGV4Y2x1ZGVEaXN0YW5jZTogZmFsc2UsXG4gICAgICAgICAgICAgIGNvbW1lbnQ6IG51bGwsXG5cbiAgICAgICAgICAgICAgdG9McnVkczoge1xuICAgICAgICAgICAgICAgIGxlZnQ6IFVuaXRpemUuZmVldCgwKSxcbiAgICAgICAgICAgICAgICByaWdodDogVW5pdGl6ZS5mZWV0KDcpLFxuICAgICAgICAgICAgICAgIHVwOiBVbml0aXplLmZlZXQoMjApLFxuICAgICAgICAgICAgICAgIGRvd246IFVuaXRpemUuZmVldCg1KSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGZyb206ICdBRTEzJyxcbiAgICAgICAgICAgICAgdG86ICdBRTEyJyxcbiAgICAgICAgICAgICAga2luZDogRnJjc1Nob3RLaW5kLk5vcm1hbCxcbiAgICAgICAgICAgICAgZGlzdGFuY2U6IFVuaXRpemUuZmVldCgyMC43KSxcbiAgICAgICAgICAgICAgZnJvbnRzaWdodEF6aW11dGg6IFVuaXRpemUuZGVncmVlcygyMzYpLFxuICAgICAgICAgICAgICBiYWNrc2lnaHRBemltdXRoOiBVbml0aXplLmRlZ3JlZXMoMjM2KSxcbiAgICAgICAgICAgICAgZnJvbnRzaWdodEluY2xpbmF0aW9uOiBVbml0aXplLmRlZ3JlZXMoMzQpLFxuICAgICAgICAgICAgICBiYWNrc2lnaHRJbmNsaW5hdGlvbjogbnVsbCxcbiAgICAgICAgICAgICAgZXhjbHVkZURpc3RhbmNlOiBmYWxzZSxcbiAgICAgICAgICAgICAgY29tbWVudDogJ1NIT1JUIENBTllPTiBBVCBUSEUgQkFTRSBPRiBUSEUgU0VDT05EIERST1AnLFxuXG4gICAgICAgICAgICAgIHRvTHJ1ZHM6IHtcbiAgICAgICAgICAgICAgICBsZWZ0OiBVbml0aXplLmZlZXQoMyksXG4gICAgICAgICAgICAgICAgcmlnaHQ6IFVuaXRpemUuZmVldCg1KSxcbiAgICAgICAgICAgICAgICB1cDogVW5pdGl6ZS5mZWV0KDQpLFxuICAgICAgICAgICAgICAgIGRvd246IFVuaXRpemUuZmVldCg0KSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGhlYWRlcjoge1xuICAgICAgICAgICAgbmFtZTogJ1RSSUNLWSBUUkFWRVJTRSBBTkQgVEhFTiBGSVJTVCBTVVJWRVkgSU4gVVBQRVIgQ1JPV0xXQVknLFxuICAgICAgICAgICAgY29tbWVudDogbnVsbCxcbiAgICAgICAgICAgIHNlY3Rpb246IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGRhdGU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHRlYW06IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGRpc3RhbmNlVW5pdDogTGVuZ3RoLmluY2hlcyxcbiAgICAgICAgICAgIGF6aW11dGhVbml0OiBBbmdsZS5kZWdyZWVzLFxuICAgICAgICAgICAgaW5jbGluYXRpb25Vbml0OiBBbmdsZS5kZWdyZWVzLFxuICAgICAgICAgICAgYmFja3NpZ2h0QXppbXV0aENvcnJlY3RlZDogZmFsc2UsXG4gICAgICAgICAgICBiYWNrc2lnaHRJbmNsaW5hdGlvbkNvcnJlY3RlZDogZmFsc2UsXG4gICAgICAgICAgICBoYXNCYWNrc2lnaHRBemltdXRoOiB0cnVlLFxuICAgICAgICAgICAgaGFzQmFja3NpZ2h0SW5jbGluYXRpb246IGZhbHNlLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgc2hvdHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZnJvbTogJ0ExJyxcbiAgICAgICAgICAgICAgdG86ICdBMicsXG4gICAgICAgICAgICAgIGtpbmQ6IEZyY3NTaG90S2luZC5Ob3JtYWwsXG4gICAgICAgICAgICAgIGRpc3RhbmNlOiBVbml0aXplLmluY2hlcyg0OCAqIDEyICsgMTApLFxuICAgICAgICAgICAgICBmcm9udHNpZ2h0QXppbXV0aDogVW5pdGl6ZS5kZWdyZWVzKDI5MiksXG4gICAgICAgICAgICAgIGJhY2tzaWdodEF6aW11dGg6IFVuaXRpemUuZGVncmVlcygxMTApLFxuICAgICAgICAgICAgICBmcm9udHNpZ2h0SW5jbGluYXRpb246IFVuaXRpemUuZGVncmVlcygtNDIpLFxuICAgICAgICAgICAgICBiYWNrc2lnaHRJbmNsaW5hdGlvbjogbnVsbCxcbiAgICAgICAgICAgICAgZXhjbHVkZURpc3RhbmNlOiBmYWxzZSxcbiAgICAgICAgICAgICAgY29tbWVudDogbnVsbCxcbiAgICAgICAgICAgICAgZnJvbUxydWRzOiB7XG4gICAgICAgICAgICAgICAgbGVmdDogVW5pdGl6ZS5mZWV0KDIpLFxuICAgICAgICAgICAgICAgIHJpZ2h0OiBVbml0aXplLmZlZXQoNyksXG4gICAgICAgICAgICAgICAgdXA6IFVuaXRpemUuZmVldCgzKSxcbiAgICAgICAgICAgICAgICBkb3duOiBVbml0aXplLmZlZXQoNC41KSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgdG9McnVkczoge1xuICAgICAgICAgICAgICAgIGxlZnQ6IFVuaXRpemUuZmVldCg1KSxcbiAgICAgICAgICAgICAgICByaWdodDogVW5pdGl6ZS5mZWV0KDEwKSxcbiAgICAgICAgICAgICAgICB1cDogVW5pdGl6ZS5mZWV0KDM1KSxcbiAgICAgICAgICAgICAgICBkb3duOiBVbml0aXplLmZlZXQoNSksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBmcm9tOiAnQTInLFxuICAgICAgICAgICAgICB0bzogJ0EzJyxcbiAgICAgICAgICAgICAga2luZDogRnJjc1Nob3RLaW5kLk5vcm1hbCxcbiAgICAgICAgICAgICAgZGlzdGFuY2U6IFVuaXRpemUuaW5jaGVzKDEyICogMTIgKyA1KSxcbiAgICAgICAgICAgICAgZnJvbnRzaWdodEF6aW11dGg6IFVuaXRpemUuZGVncmVlcygzMzMuNSksXG4gICAgICAgICAgICAgIGJhY2tzaWdodEF6aW11dGg6IFVuaXRpemUuZGVncmVlcygxNTMuNSksXG4gICAgICAgICAgICAgIGZyb250c2lnaHRJbmNsaW5hdGlvbjogVW5pdGl6ZS5kZWdyZWVzKDM1KSxcbiAgICAgICAgICAgICAgYmFja3NpZ2h0SW5jbGluYXRpb246IG51bGwsXG4gICAgICAgICAgICAgIGV4Y2x1ZGVEaXN0YW5jZTogZmFsc2UsXG4gICAgICAgICAgICAgIGNvbW1lbnQ6IG51bGwsXG5cbiAgICAgICAgICAgICAgdG9McnVkczoge1xuICAgICAgICAgICAgICAgIGxlZnQ6IFVuaXRpemUuZmVldCgzKSxcbiAgICAgICAgICAgICAgICByaWdodDogVW5pdGl6ZS5mZWV0KDEpLFxuICAgICAgICAgICAgICAgIHVwOiBVbml0aXplLmZlZXQoMTUpLFxuICAgICAgICAgICAgICAgIGRvd246IFVuaXRpemUuZmVldCg1KSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGZyb206ICdBMycsXG4gICAgICAgICAgICAgIHRvOiAnQTQnLFxuICAgICAgICAgICAgICBraW5kOiBGcmNzU2hvdEtpbmQuTm9ybWFsLFxuICAgICAgICAgICAgICBkaXN0YW5jZTogVW5pdGl6ZS5pbmNoZXMoNCAqIDEyICsgMiksXG4gICAgICAgICAgICAgIGZyb250c2lnaHRBemltdXRoOiBVbml0aXplLmRlZ3JlZXMoMCksXG4gICAgICAgICAgICAgIGJhY2tzaWdodEF6aW11dGg6IFVuaXRpemUuZGVncmVlcygwKSxcbiAgICAgICAgICAgICAgZnJvbnRzaWdodEluY2xpbmF0aW9uOiBVbml0aXplLmRlZ3JlZXMoOTApLFxuICAgICAgICAgICAgICBiYWNrc2lnaHRJbmNsaW5hdGlvbjogbnVsbCxcbiAgICAgICAgICAgICAgZXhjbHVkZURpc3RhbmNlOiBmYWxzZSxcbiAgICAgICAgICAgICAgY29tbWVudDogbnVsbCxcblxuICAgICAgICAgICAgICB0b0xydWRzOiB7XG4gICAgICAgICAgICAgICAgbGVmdDogVW5pdGl6ZS5mZWV0KDMpLFxuICAgICAgICAgICAgICAgIHJpZ2h0OiBVbml0aXplLmZlZXQoMSksXG4gICAgICAgICAgICAgICAgdXA6IFVuaXRpemUuZmVldCgxMCksXG4gICAgICAgICAgICAgICAgZG93bjogVW5pdGl6ZS5mZWV0KDEwKSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGhlYWRlcjoge1xuICAgICAgICAgICAgYXppbXV0aFVuaXQ6IEFuZ2xlLmRlZ3JlZXMsXG4gICAgICAgICAgICBiYWNrc2lnaHRBemltdXRoQ29ycmVjdGVkOiB0cnVlLFxuICAgICAgICAgICAgYmFja3NpZ2h0SW5jbGluYXRpb25Db3JyZWN0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgY29tbWVudDogbnVsbCxcbiAgICAgICAgICAgIGRhdGU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGRpc3RhbmNlVW5pdDogTGVuZ3RoLmZlZXQsXG4gICAgICAgICAgICBoYXNCYWNrc2lnaHRBemltdXRoOiB0cnVlLFxuICAgICAgICAgICAgaGFzQmFja3NpZ2h0SW5jbGluYXRpb246IGZhbHNlLFxuICAgICAgICAgICAgaW5jbGluYXRpb25Vbml0OiBBbmdsZS5kZWdyZWVzLFxuICAgICAgICAgICAgbmFtZTogXCJET1VHJ1MgREVNSVNFICg1MCBGVCBEUk9QKSwgQ0hSSVMgQ1JPU1MsIENSQVdMIEFCT1ZFIERST1BcIixcbiAgICAgICAgICAgIHNlY3Rpb246IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHRlYW06IHVuZGVmaW5lZCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNob3RzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGJhY2tzaWdodEF6aW11dGg6IFVuaXRpemUuZGVncmVlcygwKSxcbiAgICAgICAgICAgICAgYmFja3NpZ2h0SW5jbGluYXRpb246IG51bGwsXG4gICAgICAgICAgICAgIGNvbW1lbnQ6IG51bGwsXG4gICAgICAgICAgICAgIGRpc3RhbmNlOiBVbml0aXplLmZlZXQoMTMuNyksXG4gICAgICAgICAgICAgIGV4Y2x1ZGVEaXN0YW5jZTogZmFsc2UsXG4gICAgICAgICAgICAgIGZyb206ICdCMzAnLFxuICAgICAgICAgICAgICBmcm9udHNpZ2h0QXppbXV0aDogVW5pdGl6ZS5kZWdyZWVzKDApLFxuICAgICAgICAgICAgICBmcm9udHNpZ2h0SW5jbGluYXRpb246IFVuaXRpemUuZGVncmVlcyg0MCksXG4gICAgICAgICAgICAgIGtpbmQ6ICcgJyxcbiAgICAgICAgICAgICAgdG86ICdCMzEnLFxuICAgICAgICAgICAgICBmcm9tTHJ1ZHM6IHtcbiAgICAgICAgICAgICAgICBsZWZ0OiBVbml0aXplLmZlZXQoOCksXG4gICAgICAgICAgICAgICAgcmlnaHQ6IFVuaXRpemUuZmVldCgzKSxcbiAgICAgICAgICAgICAgICB1cDogVW5pdGl6ZS5mZWV0KDUpLFxuICAgICAgICAgICAgICAgIGRvd246IFVuaXRpemUuZmVldCgxLjIpLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB0b0xydWRzOiB7XG4gICAgICAgICAgICAgICAgbGVmdDogVW5pdGl6ZS5mZWV0KDIpLFxuICAgICAgICAgICAgICAgIHJpZ2h0OiBVbml0aXplLmZlZXQoNCksXG4gICAgICAgICAgICAgICAgdXA6IFVuaXRpemUuZmVldCg2KSxcbiAgICAgICAgICAgICAgICBkb3duOiBudWxsLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYmFja3NpZ2h0QXppbXV0aDogVW5pdGl6ZS5kZWdyZWVzKDApLFxuICAgICAgICAgICAgICBiYWNrc2lnaHRJbmNsaW5hdGlvbjogbnVsbCxcbiAgICAgICAgICAgICAgY29tbWVudDogbnVsbCxcbiAgICAgICAgICAgICAgZGlzdGFuY2U6IFVuaXRpemUuZmVldCgxMy43KSxcbiAgICAgICAgICAgICAgZXhjbHVkZURpc3RhbmNlOiB0cnVlLFxuICAgICAgICAgICAgICBpc1NwbGF5OiB0cnVlLFxuICAgICAgICAgICAgICBmcm9tOiAnQjMwJyxcbiAgICAgICAgICAgICAgZnJvbnRzaWdodEF6aW11dGg6IFVuaXRpemUuZGVncmVlcygwKSxcbiAgICAgICAgICAgICAgZnJvbnRzaWdodEluY2xpbmF0aW9uOiBVbml0aXplLmRlZ3JlZXMoNDApLFxuICAgICAgICAgICAgICBraW5kOiAnICcsXG4gICAgICAgICAgICAgIHRvOiAnQjMwc3AnLFxuICAgICAgICAgICAgICB0b0xydWRzOiB7XG4gICAgICAgICAgICAgICAgbGVmdDogVW5pdGl6ZS5mZWV0KDIpLFxuICAgICAgICAgICAgICAgIHJpZ2h0OiBVbml0aXplLmZlZXQoNCksXG4gICAgICAgICAgICAgICAgdXA6IFVuaXRpemUuZmVldCg2KSxcbiAgICAgICAgICAgICAgICBkb3duOiBudWxsLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KVxuICB9KVxuICBpdCgnaG9yaXpvbnRhbCBzaG90cycsIGFzeW5jIGZ1bmN0aW9uKCkge1xuICAgIGNvbnN0IGRhdGEgPSBgYmxhaFxuICpcbiAqXG5URVNUXG4gKlxuRlQgQyAgRERcbiAgRTIyICBFMjEgIDM2LjJIICAzMzguNSAzNDAuMCAgMS4wICAgICAgMTIgIDIgMTUgMTVcbmBcbiAgICBjb25zdCBwYXJzZWQgPSBhd2FpdCBwYXJzZUZyY3NTdXJ2ZXlGaWxlKCdjZGF0YS5mcicsIGRhdGEpXG4gICAgZXhwZWN0KHBhcnNlZC50cmlwc1swXS5zaG90c1swXSkudG8uZGVlcC5lcXVhbCh7XG4gICAgICBmcm9tOiAnRTIxJyxcbiAgICAgIHRvOiAnRTIyJyxcbiAgICAgIGtpbmQ6IEZyY3NTaG90S2luZC5Ib3Jpem9udGFsLFxuICAgICAgZGlzdGFuY2U6IFVuaXRpemUuZmVldChNYXRoLnNxcnQoMzYuMiAqIDM2LjIgKyAxKSksXG4gICAgICBob3Jpem9udGFsRGlzdGFuY2U6IFVuaXRpemUuZmVldCgzNi4yKSxcbiAgICAgIHZlcnRpY2FsRGlzdGFuY2U6IFVuaXRpemUuZmVldCgxKSxcbiAgICAgIGZyb250c2lnaHRBemltdXRoOiBVbml0aXplLmRlZ3JlZXMoMzM4LjUpLFxuICAgICAgYmFja3NpZ2h0QXppbXV0aDogVW5pdGl6ZS5kZWdyZWVzKDM0MCksXG4gICAgICBmcm9udHNpZ2h0SW5jbGluYXRpb246IEFuZ2xlLmF0YW4yKDEsIDM2LjIpLFxuICAgICAgYmFja3NpZ2h0SW5jbGluYXRpb246IG51bGwsXG4gICAgICBleGNsdWRlRGlzdGFuY2U6IGZhbHNlLFxuICAgICAgY29tbWVudDogbnVsbCxcblxuICAgICAgdG9McnVkczoge1xuICAgICAgICBsZWZ0OiBVbml0aXplLmZlZXQoMTIpLFxuICAgICAgICByaWdodDogVW5pdGl6ZS5mZWV0KDIpLFxuICAgICAgICB1cDogVW5pdGl6ZS5mZWV0KDE1KSxcbiAgICAgICAgZG93bjogVW5pdGl6ZS5mZWV0KDE1KSxcbiAgICAgIH0sXG4gICAgfSlcbiAgfSlcbiAgaXQoJ2hvcml6b250YWwgZmVldCBhbmQgaW5jaGVzIHNob3RzJywgYXN5bmMgZnVuY3Rpb24oKSB7XG4gICAgY29uc3QgZGF0YSA9IGBibGFoXG4gKlxuICpcblRFU1RcbiAqXG5GSSBDICBERFxuICBBMjcgIEEyNiAgMTYgIDlIIDM0NS4wIDE2My4wIC0xLjAgICAgICAgMCAgMyAgNSAgNFxuYFxuICAgIGNvbnN0IHBhcnNlZCA9IGF3YWl0IHBhcnNlRnJjc1N1cnZleUZpbGUoJ2NkYXRhLmZyJywgZGF0YSlcbiAgICBleHBlY3QocGFyc2VkLnRyaXBzWzBdLnNob3RzWzBdKS50by5kZWVwLmVxdWFsKHtcbiAgICAgIGZyb206ICdBMjYnLFxuICAgICAgdG86ICdBMjcnLFxuICAgICAga2luZDogRnJjc1Nob3RLaW5kLkhvcml6b250YWwsXG4gICAgICBkaXN0YW5jZTogVW5pdGl6ZS5mZWV0KE1hdGguc3FydCgxNi43NSAqIDE2Ljc1ICsgMSkpLFxuICAgICAgaG9yaXpvbnRhbERpc3RhbmNlOiBVbml0aXplLmluY2hlcygxNiAqIDEyICsgOSksXG4gICAgICB2ZXJ0aWNhbERpc3RhbmNlOiBVbml0aXplLmZlZXQoLTEpLFxuICAgICAgZnJvbnRzaWdodEF6aW11dGg6IFVuaXRpemUuZGVncmVlcygzNDUpLFxuICAgICAgYmFja3NpZ2h0QXppbXV0aDogVW5pdGl6ZS5kZWdyZWVzKDE2MyksXG4gICAgICBmcm9udHNpZ2h0SW5jbGluYXRpb246IEFuZ2xlLmF0YW4yKC0xLCAxNi43NSksXG4gICAgICBiYWNrc2lnaHRJbmNsaW5hdGlvbjogbnVsbCxcbiAgICAgIGV4Y2x1ZGVEaXN0YW5jZTogZmFsc2UsXG4gICAgICBjb21tZW50OiBudWxsLFxuXG4gICAgICB0b0xydWRzOiB7XG4gICAgICAgIGxlZnQ6IFVuaXRpemUuZmVldCgwKSxcbiAgICAgICAgcmlnaHQ6IFVuaXRpemUuZmVldCgzKSxcbiAgICAgICAgdXA6IFVuaXRpemUuZmVldCg1KSxcbiAgICAgICAgZG93bjogVW5pdGl6ZS5mZWV0KDQpLFxuICAgICAgfSxcbiAgICB9KVxuICB9KVxuICBpdCgnZGlhZ29uYWwgc2hvdHMnLCBhc3luYyBmdW5jdGlvbigpIHtcbiAgICBjb25zdCBkYXRhID0gYGJsYWhcbiAqXG4gKlxuVEVTVFxuICpcbkZUIEMgIEREXG4gIEUzNyAgRTM2ICAzMS42RCAgMjMxLjAgMjMyLjAgIDIuMCAgICAgICAzIDEwIDIwIDMyXG5gXG4gICAgY29uc3QgcGFyc2VkID0gYXdhaXQgcGFyc2VGcmNzU3VydmV5RmlsZSgnY2RhdGEuZnInLCBkYXRhKVxuICAgIGV4cGVjdChwYXJzZWQudHJpcHNbMF0uc2hvdHNbMF0pLnRvLmRlZXAuZXF1YWwoe1xuICAgICAgZnJvbTogJ0UzNicsXG4gICAgICB0bzogJ0UzNycsXG4gICAgICBraW5kOiBGcmNzU2hvdEtpbmQuRGlhZ29uYWwsXG4gICAgICBkaXN0YW5jZTogVW5pdGl6ZS5mZWV0KDMxLjYpLFxuICAgICAgdmVydGljYWxEaXN0YW5jZTogVW5pdGl6ZS5mZWV0KDIpLFxuICAgICAgZnJvbnRzaWdodEF6aW11dGg6IFVuaXRpemUuZGVncmVlcygyMzEpLFxuICAgICAgYmFja3NpZ2h0QXppbXV0aDogVW5pdGl6ZS5kZWdyZWVzKDIzMiksXG4gICAgICBmcm9udHNpZ2h0SW5jbGluYXRpb246IEFuZ2xlLmFzaW4oMiAvIDMxLjYpLFxuICAgICAgYmFja3NpZ2h0SW5jbGluYXRpb246IG51bGwsXG4gICAgICBleGNsdWRlRGlzdGFuY2U6IGZhbHNlLFxuICAgICAgY29tbWVudDogbnVsbCxcblxuICAgICAgdG9McnVkczoge1xuICAgICAgICBsZWZ0OiBVbml0aXplLmZlZXQoMyksXG4gICAgICAgIHJpZ2h0OiBVbml0aXplLmZlZXQoMTApLFxuICAgICAgICB1cDogVW5pdGl6ZS5mZWV0KDIwKSxcbiAgICAgICAgZG93bjogVW5pdGl6ZS5mZWV0KDMyKSxcbiAgICAgIH0sXG4gICAgfSlcbiAgfSlcbiAgaXQoJ2ludmFsaWQgZGlzdGFuY2UgdW5pdCcsIGFzeW5jIGZ1bmN0aW9uKCkge1xuICAgIGNvbnN0IGRhdGEgPSBgYmxhaFxuICpcbiAqXG5URVNUXG4gKiBcbkZKIEMgIEREXG5gXG4gICAgZXhwZWN0KGF3YWl0IHBhcnNlRnJjc1N1cnZleUZpbGUoJ2NkYXRhLmZyJywgZGF0YSkpLnRvLmRlZXAuZXF1YWwoe1xuICAgICAgY2F2ZTogJ2JsYWgnLFxuICAgICAgZXJyb3JzOiBbXG4gICAgICAgIG5ldyBTZWdtZW50UGFyc2VFcnJvcihcbiAgICAgICAgICAnSW52YWxpZCBkaXN0YW5jZSB1bml0JyxcbiAgICAgICAgICBuZXcgU2VnbWVudCh7XG4gICAgICAgICAgICB2YWx1ZTogJ0ZKIEMgIEREJyxcbiAgICAgICAgICAgIHNvdXJjZTogJ2NkYXRhLmZyJyxcbiAgICAgICAgICAgIHN0YXJ0TGluZTogNSxcbiAgICAgICAgICAgIHN0YXJ0Q29sOiAwLFxuICAgICAgICAgIH0pLnN1YnN0cmluZygwLCAyKVxuICAgICAgICApLFxuICAgICAgXSxcbiAgICAgIGxvY2F0aW9uOiBudWxsLFxuICAgICAgdHJpcHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGhlYWRlcjoge1xuICAgICAgICAgICAgYXppbXV0aFVuaXQ6IEFuZ2xlLmRlZ3JlZXMsXG4gICAgICAgICAgICBiYWNrc2lnaHRBemltdXRoQ29ycmVjdGVkOiB0cnVlLFxuICAgICAgICAgICAgYmFja3NpZ2h0SW5jbGluYXRpb25Db3JyZWN0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgY29tbWVudDogbnVsbCxcbiAgICAgICAgICAgIGRhdGU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGRpc3RhbmNlVW5pdDogTGVuZ3RoLmZlZXQsXG4gICAgICAgICAgICBoYXNCYWNrc2lnaHRBemltdXRoOiB0cnVlLFxuICAgICAgICAgICAgaGFzQmFja3NpZ2h0SW5jbGluYXRpb246IGZhbHNlLFxuICAgICAgICAgICAgaW5jbGluYXRpb25Vbml0OiBBbmdsZS5kZWdyZWVzLFxuICAgICAgICAgICAgbmFtZTogJ1RFU1QnLFxuICAgICAgICAgICAgc2VjdGlvbjogdW5kZWZpbmVkLFxuICAgICAgICAgICAgdGVhbTogdW5kZWZpbmVkLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgc2hvdHM6IFtdLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KVxuICB9KVxuICBpdCgnbWV0ZXJzJywgYXN5bmMgZnVuY3Rpb24oKSB7XG4gICAgY29uc3QgZGF0YSA9IGBibGFoXG4gKlxuICpcblRFU1RcbiAqIFxuTVQgQ0MgRERcbiAgRTM3ICBFMzYgIDMxLjYgICAyMzEuMCAyMzIuMCAgMi4wICAzLjAgIDMgMTAgMjAgMzJcbmBcbiAgICBleHBlY3QoYXdhaXQgcGFyc2VGcmNzU3VydmV5RmlsZSgnY2RhdGEuZnInLCBkYXRhKSkudG8uZGVlcC5lcXVhbCh7XG4gICAgICBjYXZlOiAnYmxhaCcsXG4gICAgICBlcnJvcnM6IFtdLFxuICAgICAgbG9jYXRpb246IG51bGwsXG4gICAgICB0cmlwczogW1xuICAgICAgICB7XG4gICAgICAgICAgaGVhZGVyOiB7XG4gICAgICAgICAgICBhemltdXRoVW5pdDogQW5nbGUuZGVncmVlcyxcbiAgICAgICAgICAgIGJhY2tzaWdodEF6aW11dGhDb3JyZWN0ZWQ6IHRydWUsXG4gICAgICAgICAgICBiYWNrc2lnaHRJbmNsaW5hdGlvbkNvcnJlY3RlZDogdHJ1ZSxcbiAgICAgICAgICAgIGNvbW1lbnQ6IG51bGwsXG4gICAgICAgICAgICBkYXRlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBkaXN0YW5jZVVuaXQ6IExlbmd0aC5tZXRlcnMsXG4gICAgICAgICAgICBoYXNCYWNrc2lnaHRBemltdXRoOiB0cnVlLFxuICAgICAgICAgICAgaGFzQmFja3NpZ2h0SW5jbGluYXRpb246IHRydWUsXG4gICAgICAgICAgICBpbmNsaW5hdGlvblVuaXQ6IEFuZ2xlLmRlZ3JlZXMsXG4gICAgICAgICAgICBuYW1lOiAnVEVTVCcsXG4gICAgICAgICAgICBzZWN0aW9uOiB1bmRlZmluZWQsXG4gICAgICAgICAgICB0ZWFtOiB1bmRlZmluZWQsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzaG90czogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBmcm9tOiAnRTM2JyxcbiAgICAgICAgICAgICAgdG86ICdFMzcnLFxuICAgICAgICAgICAgICBraW5kOiBGcmNzU2hvdEtpbmQuTm9ybWFsLFxuICAgICAgICAgICAgICBkaXN0YW5jZTogVW5pdGl6ZS5tZXRlcnMoMzEuNiksXG4gICAgICAgICAgICAgIGZyb250c2lnaHRBemltdXRoOiBVbml0aXplLmRlZ3JlZXMoMjMxKSxcbiAgICAgICAgICAgICAgYmFja3NpZ2h0QXppbXV0aDogVW5pdGl6ZS5kZWdyZWVzKDIzMiksXG4gICAgICAgICAgICAgIGZyb250c2lnaHRJbmNsaW5hdGlvbjogVW5pdGl6ZS5kZWdyZWVzKDIpLFxuICAgICAgICAgICAgICBiYWNrc2lnaHRJbmNsaW5hdGlvbjogVW5pdGl6ZS5kZWdyZWVzKDMpLFxuICAgICAgICAgICAgICBleGNsdWRlRGlzdGFuY2U6IGZhbHNlLFxuICAgICAgICAgICAgICBjb21tZW50OiBudWxsLFxuXG4gICAgICAgICAgICAgIHRvTHJ1ZHM6IHtcbiAgICAgICAgICAgICAgICBsZWZ0OiBVbml0aXplLm1ldGVycygzKSxcbiAgICAgICAgICAgICAgICByaWdodDogVW5pdGl6ZS5tZXRlcnMoMTApLFxuICAgICAgICAgICAgICAgIHVwOiBVbml0aXplLm1ldGVycygyMCksXG4gICAgICAgICAgICAgICAgZG93bjogVW5pdGl6ZS5tZXRlcnMoMzIpLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KVxuICB9KVxuICBpdCgnZXhjbHVkZSBsZW5ndGgnLCBhc3luYyBmdW5jdGlvbigpIHtcbiAgICBjb25zdCBkYXRhID0gYGJsYWhcbiAqXG4gKlxuVEVTVFxuICogXG5NVCBDQyBERFxuICBFMzcgIEUzNiAgMzEuNiAqIDIzMS4wIDIzMi4wICAyLjAgIDMuMCAgMyAxMCAyMCAzMlxuYFxuICAgIGNvbnN0IHBhcnNlZCA9IGF3YWl0IHBhcnNlRnJjc1N1cnZleUZpbGUoJ2NkYXRhLmZyJywgZGF0YSlcbiAgICBleHBlY3QocGFyc2VkLnRyaXBzWzBdLnNob3RzWzBdKS50by5kZWVwLmVxdWFsKHtcbiAgICAgIGZyb206ICdFMzYnLFxuICAgICAgdG86ICdFMzcnLFxuICAgICAga2luZDogRnJjc1Nob3RLaW5kLk5vcm1hbCxcbiAgICAgIGRpc3RhbmNlOiBVbml0aXplLm1ldGVycygzMS42KSxcbiAgICAgIGZyb250c2lnaHRBemltdXRoOiBVbml0aXplLmRlZ3JlZXMoMjMxKSxcbiAgICAgIGJhY2tzaWdodEF6aW11dGg6IFVuaXRpemUuZGVncmVlcygyMzIpLFxuICAgICAgZnJvbnRzaWdodEluY2xpbmF0aW9uOiBVbml0aXplLmRlZ3JlZXMoMiksXG4gICAgICBiYWNrc2lnaHRJbmNsaW5hdGlvbjogVW5pdGl6ZS5kZWdyZWVzKDMpLFxuICAgICAgZXhjbHVkZURpc3RhbmNlOiB0cnVlLFxuICAgICAgY29tbWVudDogbnVsbCxcblxuICAgICAgdG9McnVkczoge1xuICAgICAgICBsZWZ0OiBVbml0aXplLm1ldGVycygzKSxcbiAgICAgICAgcmlnaHQ6IFVuaXRpemUubWV0ZXJzKDEwKSxcbiAgICAgICAgdXA6IFVuaXRpemUubWV0ZXJzKDIwKSxcbiAgICAgICAgZG93bjogVW5pdGl6ZS5tZXRlcnMoMzIpLFxuICAgICAgfSxcbiAgICB9KVxuICB9KVxuICBpdCgnbmVnYXRpdmUgTFJVRCcsIGFzeW5jIGZ1bmN0aW9uKCkge1xuICAgIGNvbnN0IGRhdGEgPSBgYmxhaFxuICpcbiAqXG5URVNUXG4gKiBcbk1UIENDIEREXG4gIEUzNyAgRTM2ICAzMS42ICAgMjMxLjAgMjMyLjAgIDIuMCAgMy4wIC0zIDEwIDIwIDMyXG5gXG4gICAgY29uc3QgcGFyc2VkID0gYXdhaXQgcGFyc2VGcmNzU3VydmV5RmlsZSgnY2RhdGEuZnInLCBkYXRhKVxuICAgIGV4cGVjdChwYXJzZWQudHJpcHNbMF0uc2hvdHNbMF0pLnRvLmRlZXAuZXF1YWwoe1xuICAgICAgZnJvbTogJ0UzNicsXG4gICAgICB0bzogJ0UzNycsXG4gICAgICBraW5kOiBGcmNzU2hvdEtpbmQuTm9ybWFsLFxuICAgICAgZGlzdGFuY2U6IFVuaXRpemUubWV0ZXJzKDMxLjYpLFxuICAgICAgZnJvbnRzaWdodEF6aW11dGg6IFVuaXRpemUuZGVncmVlcygyMzEpLFxuICAgICAgYmFja3NpZ2h0QXppbXV0aDogVW5pdGl6ZS5kZWdyZWVzKDIzMiksXG4gICAgICBmcm9udHNpZ2h0SW5jbGluYXRpb246IFVuaXRpemUuZGVncmVlcygyKSxcbiAgICAgIGJhY2tzaWdodEluY2xpbmF0aW9uOiBVbml0aXplLmRlZ3JlZXMoMyksXG4gICAgICBleGNsdWRlRGlzdGFuY2U6IGZhbHNlLFxuICAgICAgY29tbWVudDogbnVsbCxcblxuICAgICAgdG9McnVkczoge1xuICAgICAgICBsZWZ0OiBudWxsLFxuICAgICAgICByaWdodDogVW5pdGl6ZS5tZXRlcnMoMTApLFxuICAgICAgICB1cDogVW5pdGl6ZS5tZXRlcnMoMjApLFxuICAgICAgICBkb3duOiBVbml0aXplLm1ldGVycygzMiksXG4gICAgICB9LFxuICAgIH0pXG4gIH0pXG4gIGl0KCctIGZvciBubyBiYWNrc2lnaHQnLCBhc3luYyBmdW5jdGlvbigpIHtcbiAgICBjb25zdCBkYXRhID0gYGJsYWhcbiAqXG4gKlxuVEVTVFxuICogXG5NVCBCLSBERCBcbiAgYFxuICAgIGNvbnN0IHBhcnNlZCA9IGF3YWl0IHBhcnNlRnJjc1N1cnZleUZpbGUoJ2NkYXRhLmZyJywgZGF0YSlcbiAgICBleHBlY3QocGFyc2VkLnRyaXBzWzBdLmhlYWRlcikudG8uZGVlcC5lcXVhbCh7XG4gICAgICBuYW1lOiAnVEVTVCcsXG4gICAgICBjb21tZW50OiBudWxsLFxuICAgICAgc2VjdGlvbjogdW5kZWZpbmVkLFxuICAgICAgZGF0ZTogdW5kZWZpbmVkLFxuICAgICAgdGVhbTogdW5kZWZpbmVkLFxuICAgICAgZGlzdGFuY2VVbml0OiBMZW5ndGgubWV0ZXJzLFxuICAgICAgYXppbXV0aFVuaXQ6IEFuZ2xlLmRlZ3JlZXMsXG4gICAgICBpbmNsaW5hdGlvblVuaXQ6IEFuZ2xlLmRlZ3JlZXMsXG4gICAgICBiYWNrc2lnaHRBemltdXRoQ29ycmVjdGVkOiBmYWxzZSxcbiAgICAgIGJhY2tzaWdodEluY2xpbmF0aW9uQ29ycmVjdGVkOiBmYWxzZSxcbiAgICAgIGhhc0JhY2tzaWdodEF6aW11dGg6IHRydWUsXG4gICAgICBoYXNCYWNrc2lnaHRJbmNsaW5hdGlvbjogZmFsc2UsXG4gICAgfSlcbiAgfSlcbiAgaXQoJ21pc3NpbmcgYm90aCBmcm9udHNpZ2h0IGFuZCBiYWNrc2lnaHQgaW5jbGluYXRpb24nLCBhc3luYyBmdW5jdGlvbigpIHtcbiAgICBjb25zdCBkYXRhID0gYGJsYWhcbiAqXG4gKlxuVEVTVFxuICogXG5NVCBCLSBERCBcbiAgRTM3ICBFMzYgIDMxLjYgICAyMzEuMCAyMzIuMCAgICAgICAgICAgLTMgMTAgMjAgMzJcbiAgYFxuICAgIGNvbnN0IHBhcnNlZCA9IGF3YWl0IHBhcnNlRnJjc1N1cnZleUZpbGUoJ2NkYXRhLmZyJywgZGF0YSlcbiAgICBleHBlY3QocGFyc2VkLnRyaXBzWzBdLnNob3RzWzBdKS50by5kZWVwLmVxdWFsKHtcbiAgICAgIGZyb206ICdFMzYnLFxuICAgICAgdG86ICdFMzcnLFxuICAgICAga2luZDogRnJjc1Nob3RLaW5kLk5vcm1hbCxcbiAgICAgIGRpc3RhbmNlOiBVbml0aXplLm1ldGVycygzMS42KSxcbiAgICAgIGZyb250c2lnaHRBemltdXRoOiBVbml0aXplLmRlZ3JlZXMoMjMxKSxcbiAgICAgIGJhY2tzaWdodEF6aW11dGg6IFVuaXRpemUuZGVncmVlcygyMzIpLFxuICAgICAgZnJvbnRzaWdodEluY2xpbmF0aW9uOiBVbml0aXplLmRlZ3JlZXMoMCksXG4gICAgICBiYWNrc2lnaHRJbmNsaW5hdGlvbjogbnVsbCxcbiAgICAgIGV4Y2x1ZGVEaXN0YW5jZTogZmFsc2UsXG4gICAgICBjb21tZW50OiBudWxsLFxuXG4gICAgICB0b0xydWRzOiB7XG4gICAgICAgIGxlZnQ6IG51bGwsXG4gICAgICAgIHJpZ2h0OiBVbml0aXplLm1ldGVycygxMCksXG4gICAgICAgIHVwOiBVbml0aXplLm1ldGVycygyMCksXG4gICAgICAgIGRvd246IFVuaXRpemUubWV0ZXJzKDMyKSxcbiAgICAgIH0sXG4gICAgfSlcbiAgfSlcbn0pXG4iXSwibWFwcGluZ3MiOiI7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsTUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsU0FBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsS0FBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksU0FBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssYUFBQSxHQUFBTCxPQUFBO0FBRUEsTUFBTU0sSUFBSSxHQUFJO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNB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