@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.
- package/FrcsPlotFile.d.ts +1 -1
- package/FrcsPlotShot.d.ts +1 -1
- package/FrcsShot.d.ts +1 -1
- package/FrcsShot.js +2 -3
- package/FrcsSurveyFile.d.ts +1 -1
- package/FrcsTrip.d.ts +2 -2
- package/FrcsTripSummary.d.ts +1 -1
- package/FrcsTripSummaryFile.d.ts +1 -1
- package/formatFrcsShot.js +7 -6
- package/index.js +11 -11
- package/node/index.js +6 -9
- package/package.json +26 -124
- package/parseFrcsPlotFile.js +4 -3
- package/parseFrcsSurveyFile.js +126 -107
- package/parseFrcsTripSummaryFile.js +5 -4
- package/string/index.js +8 -11
- package/es/FrcsPlotFile.js +0 -6
- package/es/FrcsPlotShot.js +0 -6
- package/es/FrcsShot.js +0 -14
- package/es/FrcsSurveyFile.js +0 -6
- package/es/FrcsTrip.js +0 -6
- package/es/FrcsTripSummary.js +0 -6
- package/es/FrcsTripSummaryFile.js +0 -6
- package/es/formatFrcsShot.js +0 -75
- package/es/formatFrcsShot.spec.js +0 -141
- package/es/index.js +0 -96
- package/es/node/index.js +0 -20
- package/es/node/parseFrcsPlotFile.spec.js +0 -167
- package/es/node/parseFrcsSurveyFile.spec.js +0 -314
- package/es/node/parseFrcsTripSummaryFile.spec.js +0 -78
- package/es/parseFrcsPlotFile.js +0 -135
- package/es/parseFrcsSurveyFile.js +0 -485
- package/es/parseFrcsTripSummaryFile.js +0 -73
- package/es/string/index.js +0 -21
- package/es/string/parseFrcsPlotFile.spec.js +0 -179
- package/es/string/parseFrcsSurveyFile.spec.js +0 -644
- package/formatFrcsShot.spec.js +0 -139
- package/node/parseFrcsPlotFile.spec.js +0 -181
- package/node/parseFrcsSurveyFile.spec.js +0 -328
- package/node/parseFrcsTripSummaryFile.spec.js +0 -104
- package/string/parseFrcsPlotFile.spec.js +0 -182
- package/string/parseFrcsSurveyFile.spec.js +0 -673
- 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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
|