dcdx 1.2.0 → 1.3.0-next.2

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 (68) hide show
  1. package/assets/versions.json +1 -1
  2. package/lib/commands/apt.js +11114 -0
  3. package/lib/commands/build.js +1831 -772
  4. package/lib/commands/database.js +1553 -718
  5. package/lib/commands/debug.js +1872 -865
  6. package/lib/commands/install.js +9456 -0
  7. package/lib/commands/reset.js +1720 -799
  8. package/lib/commands/run.js +1684 -770
  9. package/lib/commands/stop.js +1720 -799
  10. package/lib/commands/update.js +9093 -0
  11. package/lib/index.js +73 -2
  12. package/lib/types/src/applications/bamboo.d.ts +0 -2
  13. package/lib/types/src/applications/base.d.ts +5 -4
  14. package/lib/types/src/applications/bitbucket.d.ts +0 -2
  15. package/lib/types/src/applications/confluence.d.ts +0 -2
  16. package/lib/types/src/applications/jira.d.ts +0 -2
  17. package/lib/types/src/apt/helpers/dcapt.d.ts +6 -0
  18. package/lib/types/src/apt/helpers/generatePerformanceReport.d.ts +2 -0
  19. package/lib/types/src/apt/helpers/generateScalabilityReport.d.ts +2 -0
  20. package/lib/types/src/apt/helpers/getAWSCredentials.d.ts +2 -0
  21. package/lib/types/src/apt/helpers/getAptDirectory.d.ts +1 -0
  22. package/lib/types/src/apt/helpers/getClusterURL.d.ts +2 -0
  23. package/lib/types/src/apt/helpers/getDuration.d.ts +3 -0
  24. package/lib/types/src/apt/helpers/getEnvironmentName.d.ts +1 -0
  25. package/lib/types/src/apt/helpers/getHostLicense.d.ts +4 -0
  26. package/lib/types/src/apt/helpers/getNodeNumberForStage.d.ts +2 -0
  27. package/lib/types/src/apt/helpers/getOutputDirectory.d.ts +1 -0
  28. package/lib/types/src/apt/helpers/getProduct.d.ts +2 -0
  29. package/lib/types/src/apt/helpers/getReindexProgress.d.ts +1 -0
  30. package/lib/types/src/apt/helpers/getReport.d.ts +2 -0
  31. package/lib/types/src/apt/helpers/getReportDirectory.d.ts +1 -0
  32. package/lib/types/src/apt/helpers/getResults.d.ts +2 -0
  33. package/lib/types/src/apt/helpers/getResultsDirectory.d.ts +2 -0
  34. package/lib/types/src/apt/helpers/getRunForStage.d.ts +2 -0
  35. package/lib/types/src/apt/helpers/installApp.d.ts +1 -0
  36. package/lib/types/src/apt/helpers/persistClusterConfiguration.d.ts +1 -0
  37. package/lib/types/src/apt/helpers/persistTestConfiguration.d.ts +2 -0
  38. package/lib/types/src/apt/helpers/persistsAWSCredentials.d.ts +1 -0
  39. package/lib/types/src/apt/helpers/provisionCluster.d.ts +8 -0
  40. package/lib/types/src/apt/helpers/reindex.d.ts +1 -0
  41. package/lib/types/src/apt/helpers/runPerformanceTest.d.ts +2 -0
  42. package/lib/types/src/apt/helpers/runScalabilityTest.d.ts +2 -0
  43. package/lib/types/src/apt/helpers/teardownCluster.d.ts +2 -0
  44. package/lib/types/src/apt/helpers/waitForUserInput.d.ts +2 -0
  45. package/lib/types/src/apt/messages.d.ts +30 -0
  46. package/lib/types/src/apt/performance.d.ts +2 -0
  47. package/lib/types/src/apt/scalability.d.ts +2 -0
  48. package/lib/types/src/commands/apt.d.ts +2 -0
  49. package/lib/types/src/commands/install.d.ts +2 -0
  50. package/lib/types/src/commands/update.d.ts +2 -0
  51. package/lib/types/src/helpers/ActionHandler.d.ts +8 -3
  52. package/lib/types/src/helpers/CustomBuilder.d.ts +12 -0
  53. package/lib/types/src/helpers/FileWatcher.d.ts +2 -2
  54. package/lib/types/src/helpers/Installer.d.ts +3 -0
  55. package/lib/types/src/helpers/amps.d.ts +1 -0
  56. package/lib/types/src/helpers/capitalize.d.ts +1 -0
  57. package/lib/types/src/helpers/generateVersionList.d.ts +3 -0
  58. package/lib/types/src/helpers/getDatabaseEngine.d.ts +1 -1
  59. package/lib/types/src/helpers/getVersions.d.ts +1 -0
  60. package/lib/types/src/helpers/isOfType.d.ts +1 -0
  61. package/lib/types/src/helpers/licences.d.ts +1 -0
  62. package/lib/types/src/helpers/readLinesInFile.d.ts +1 -0
  63. package/lib/types/src/helpers/replaceLinesInFile.d.ts +1 -0
  64. package/lib/types/src/helpers/upm.d.ts +3 -0
  65. package/lib/types/src/types/AMPS.d.ts +40 -13
  66. package/lib/types/src/types/Application.d.ts +15 -11
  67. package/lib/types/src/types/DCAPT.d.ts +302 -0
  68. package/package.json +20 -8
@@ -5,338 +5,732 @@ import { z } from 'zod';
5
5
  import { spawn } from 'child_process';
6
6
  import { stop, upAll, downAll, ps } from 'docker-compose/dist/v2.js';
7
7
  import { dump } from 'js-yaml';
8
+ import { cwd } from 'process';
8
9
  import { Sequelize, ConnectionError, TimeoutError, ConnectionTimedOutError, ConnectionRefusedError, ConnectionAcquireTimeoutError } from 'sequelize';
10
+ import { realpathSync, readFileSync } from 'fs';
11
+ import { dirname, join } from 'path';
12
+
13
+ const ActionHandler = async (program, { action, errorHandler }, options) => {
14
+ const ops = options || program.opts();
15
+ await new Promise((_, reject) => {
16
+ let errorMessage = '';
17
+ asyncExitHook(async (code) => {
18
+ try {
19
+ if (code !== 0) {
20
+ await errorHandler(ops).catch(() => null);
21
+ }
22
+ if (errorMessage) {
23
+ throw new Error(errorMessage.trim());
24
+ }
25
+ else {
26
+ // We are rejecting the promise to avoid the
27
+ // "Calling process.exit" log message from exit-hook
28
+ reject(null);
29
+ }
30
+ }
31
+ catch (err) {
32
+ const message = err instanceof Error ? err.message : err;
33
+ reject(message);
34
+ }
35
+ }, {
36
+ wait: 60 * 1 * 1000
37
+ });
38
+ action(ops).catch(err => {
39
+ if (err instanceof z.ZodError) {
40
+ err.issues.forEach(issue => {
41
+ errorMessage += `Unable to parse option ${issue.path.join(',')}: ${issue.message}\n`;
42
+ });
43
+ }
44
+ else if (err instanceof Error || typeof err === 'string') {
45
+ errorMessage = err.toString();
46
+ }
47
+ gracefulExit(1);
48
+ });
49
+ }).catch(message => {
50
+ if (message !== null) {
51
+ program.error(message);
52
+ // If there is no error message,
53
+ // we can assume a clean exit
54
+ }
55
+ else {
56
+ process.exit(0);
57
+ }
58
+ });
59
+ };
9
60
 
10
61
  var jira = [
11
62
  "latest",
12
- "9.16-ubuntu-jdk11",
13
- "jdk11",
14
- "9",
15
- "9.16",
16
- "9.16.0-jdk11",
17
- "9-jdk11",
18
- "9.16.0-ubuntu-jdk11",
19
- "9-ubuntu-jdk11",
20
- "9.16.0",
21
- "9.16-jdk11",
22
- "ubuntu-jdk11",
23
- "9.16.0-ubi9",
24
- "9.16.0-ubi9-jdk17",
63
+ "10.3.0-EAP01-jdk17",
64
+ "10.3.0-EAP01",
65
+ "10.3.0-EAP01-ubuntu-jdk17",
66
+ "10.3.0-EAP01-ubi9",
67
+ "10.3.0-EAP01-ubi9-jdk17",
68
+ "10.2-jdk17",
69
+ "10.2.0",
70
+ "10.2",
71
+ "10-jdk17",
72
+ "ubuntu-jdk17",
73
+ "10.2.0-jdk17",
74
+ "jdk17",
75
+ "10-ubuntu-jdk17",
76
+ "10.2-ubuntu-jdk17",
77
+ "10",
78
+ "10.2.0-ubuntu-jdk17",
79
+ "10.2.0-ubi9-jdk17",
80
+ "10.2.0-ubi9",
25
81
  "ubi9",
26
82
  "ubi9-jdk17",
83
+ "10.2.0-RC",
84
+ "10.2.0-RC-ubuntu-jdk17",
85
+ "10.2.0-RC-jdk17",
86
+ "10.2.0-RC-ubi9",
87
+ "10.2.0-RC-ubi9-jdk17",
88
+ "9-ubuntu-jdk17",
89
+ "9.9.0",
90
+ "9-ubuntu-jdk11",
91
+ "9-jdk17",
92
+ "9-jdk11",
93
+ "9.9-ubuntu-jdk17",
94
+ "9.9-ubuntu-jdk11",
95
+ "9.9.2-ubuntu-jdk17",
96
+ "9.9-jdk17",
97
+ "9.9-jdk11",
98
+ "9.9.2-ubi9-jdk17",
99
+ "9.9.2-ubuntu-jdk11",
100
+ "9.9.2-ubi9",
101
+ "9.9.2-jdk17",
102
+ "9.9.2",
103
+ "9.9.2-jdk11",
104
+ "9.9.1-ubuntu-jdk17",
105
+ "9.9.1-ubuntu-jdk11",
106
+ "9.9.1-ubi9-jdk17",
107
+ "9.9.1-ubi9",
108
+ "9.9.1-jdk17",
109
+ "9.9.1-jdk11",
110
+ "9.9.0-ubuntu-jdk17",
111
+ "9.9.1",
112
+ "9.5.0-ubi9-jdk17",
113
+ "9.8-jdk17",
114
+ "9.9.0-ubuntu-jdk11",
115
+ "9.9.0-ubi9-jdk17",
116
+ "9.9.0-ubi9",
117
+ "9.9.0-jdk17",
118
+ "9.9.0-jdk11",
119
+ "9.9",
120
+ "9.8-ubuntu-jdk17",
121
+ "9.8-ubuntu-jdk11",
122
+ "9.8-jdk11",
123
+ "9.8.2-ubuntu-jdk17",
124
+ "9.8.2-ubuntu-jdk11",
125
+ "9.8.2-ubi9-jdk17",
126
+ "9.8.2-ubi9",
127
+ "9.8.2-jdk17",
128
+ "9.8.2-jdk11",
129
+ "9.8.1-ubuntu-jdk17",
130
+ "9.8.2",
131
+ "9.8.1-ubuntu-jdk11",
132
+ "9.8.1-ubi9-jdk17",
133
+ "9.8.1-ubi9",
134
+ "9.8.1-jdk11",
135
+ "9.8.1-jdk17",
136
+ "9.8.1",
137
+ "9.8.0-ubuntu-jdk17",
27
138
  "9.8.0-ubuntu-jdk11",
28
- "9.5-ubuntu-jdk11",
29
- "9.10-ubuntu-jdk11",
139
+ "9.8.0-ubi9-jdk17",
140
+ "9.8.0-jdk17",
141
+ "9.8.0-ubi9",
30
142
  "9.8.0-jdk11",
31
- "9.5-jdk11",
32
143
  "9.8.0",
33
- "9.10.2-ubuntu-jdk11",
34
- "9.10.2-jdk11",
144
+ "9.8",
145
+ "9.7-ubuntu-jdk17",
146
+ "9.7-ubuntu-jdk11",
147
+ "9.7-jdk17",
148
+ "9.7-jdk11",
149
+ "9.7.2-ubuntu-jdk17",
150
+ "9.7.2-ubuntu-jdk11",
151
+ "9.7.2-ubi9-jdk17",
152
+ "9.7.2-ubi9",
153
+ "9.7.2-jdk17",
154
+ "9.7.2-jdk11",
155
+ "9.7.1-ubuntu-jdk17",
156
+ "9.7.2",
157
+ "9.7.1-ubuntu-jdk11",
158
+ "9.7.1-ubi9-jdk17",
159
+ "9.7.1-ubi9",
160
+ "9.7.1-jdk17",
161
+ "9.7.1-jdk11",
162
+ "9.7.1",
163
+ "9.7.0-ubuntu-jdk17",
164
+ "9.7.0-ubuntu-jdk11",
165
+ "9.7.0-ubi9-jdk17",
166
+ "9.7.0-ubi9",
167
+ "9.7.0-jdk17",
168
+ "9.7.0-jdk11",
169
+ "9.7.0",
170
+ "9.7",
171
+ "9.6-ubuntu-jdk17",
172
+ "9.6-ubuntu-jdk11",
173
+ "9.6-jdk11",
174
+ "9.6-jdk17",
175
+ "9.6.0-ubuntu-jdk17",
176
+ "9.6.0-ubi9-jdk17",
177
+ "9.6.0-ubuntu-jdk11",
178
+ "9.6.0-ubi9",
179
+ "9.6.0-jdk17",
180
+ "9.6.0-jdk11",
181
+ "9.6.0",
182
+ "9.6",
183
+ "9.5-ubuntu-jdk17",
184
+ "9.5-ubuntu-jdk11",
185
+ "9.5-jdk17",
186
+ "9.5-jdk11",
187
+ "9.5.1-ubuntu-jdk17",
35
188
  "9.5.1-ubuntu-jdk11",
189
+ "9.5.1-ubi9-jdk17",
190
+ "9.5.1-ubi9",
191
+ "9.5.1-jdk17",
36
192
  "9.5.1-jdk11",
193
+ "9.5.1",
194
+ "9.5.0-ubuntu-jdk17",
37
195
  "9.5.0-ubuntu-jdk11",
196
+ "9.5.0-ubi9",
197
+ "9.5.0-jdk17",
38
198
  "9.5.0-jdk11",
39
199
  "9.5.0",
40
- "9.5.1",
41
- "9.10.2",
42
200
  "9.5",
201
+ "9.4-jdk11",
202
+ "9.4-ubuntu-jdk11",
203
+ "9.4.9-ubuntu-jdk11",
204
+ "9.4.9-jdk11",
205
+ "9.4.9",
206
+ "9.4.8-ubuntu-jdk11",
207
+ "9.4.8",
208
+ "9.4.8-jdk11",
209
+ "9.4.7-ubuntu-jdk11",
210
+ "9.4.7-jdk11",
211
+ "9.4.7",
212
+ "9.4.6-ubuntu-jdk11",
213
+ "9.4.6-jdk11",
214
+ "9.4.6",
215
+ "9.4.5-ubuntu-jdk11",
216
+ "9.4.5-jdk11",
217
+ "9.4.5",
218
+ "9.4.4-ubuntu-jdk11",
219
+ "9.4.4-jdk11",
220
+ "9.4.4",
221
+ "9.4.3-ubuntu-jdk11",
222
+ "9.4.3-jdk11",
223
+ "9.4.3",
224
+ "9.4.2-ubuntu-jdk11",
225
+ "9.4.28-ubuntu-jdk11",
226
+ "9.4.2-jdk11",
227
+ "9.4.28-jdk11",
228
+ "9.4.28",
229
+ "9.4.27-ubuntu-jdk11",
230
+ "9.4.27-jdk11",
231
+ "9.4.27",
232
+ "9.4.26-ubuntu-jdk11",
233
+ "9.4.26-jdk11",
234
+ "9.4.26",
235
+ "9.4.25-ubuntu-jdk11",
236
+ "9.4.25-jdk11",
237
+ "9.4.25",
238
+ "9.4.24-ubuntu-jdk11",
239
+ "9.4.24-jdk11",
240
+ "9.4.24",
241
+ "9.4.23-jdk11",
242
+ "9.4.23-ubuntu-jdk11",
243
+ "9.4.23",
244
+ "9.4.22-ubuntu-jdk11",
245
+ "9.4.22-jdk11",
246
+ "9.4.22",
247
+ "9.4.21-ubuntu-jdk11",
248
+ "9.4.21-jdk11",
249
+ "9.4.21",
250
+ "9.4.20-ubuntu-jdk11",
251
+ "9.4.20-jdk11",
252
+ "9.4.20",
253
+ "9.4.2",
254
+ "9.4.1-ubuntu-jdk11",
255
+ "9.4.1-jdk11",
256
+ "9.4.19-ubuntu-jdk11",
257
+ "9.4.19-jdk11",
258
+ "9.4.19",
43
259
  "9.4.18-ubuntu-jdk11",
260
+ "9.4.12-jdk11",
44
261
  "9.4.18-jdk11",
45
262
  "9.4.18",
263
+ "9.4.17-ubuntu-jdk11",
264
+ "9.4.17-jdk11",
265
+ "9.4.17",
266
+ "9.4.16-jdk11",
267
+ "9.4.16-ubuntu-jdk11",
268
+ "9.4.16",
269
+ "9.4.15-jdk11",
270
+ "9.4.15-ubuntu-jdk11",
271
+ "9.4.15",
272
+ "9.4.14-ubuntu-jdk11",
273
+ "9.4.14-jdk11",
274
+ "9.4.14",
275
+ "9.4.12-ubuntu-jdk11",
276
+ "9.4.12",
277
+ "9.4.11-ubuntu-jdk11",
278
+ "9.4.11-jdk11",
279
+ "9.4.11",
280
+ "9.4.10-ubuntu-jdk11",
281
+ "9.4.10-jdk11",
282
+ "9.4.1",
283
+ "9.4.10",
284
+ "9.4.0-ubuntu-jdk11",
285
+ "9.4.0-jdk11",
286
+ "9.4.0",
287
+ "9.4",
288
+ "9.17-ubuntu-jdk17",
289
+ "9.17-ubuntu-jdk11",
290
+ "9.17-jdk17",
291
+ "9.17.5-ubuntu-jdk11",
292
+ "9.17-jdk11",
293
+ "9.17.5-ubuntu-jdk17",
294
+ "9.17.5-jdk17",
295
+ "9.17.5-ubi9",
296
+ "9.17.5-ubi9-jdk17",
297
+ "9.17.5-jdk11",
298
+ "9.17.5",
299
+ "9.17.4-ubuntu-jdk11",
300
+ "9.17.4-ubuntu-jdk17",
301
+ "9.17.4-ubi9-jdk17",
302
+ "9.17.4-jdk17",
303
+ "9.17.4-ubi9",
304
+ "9.17.4-jdk11",
305
+ "9.17.4",
306
+ "9.17.3-ubuntu-jdk11",
307
+ "9.17.3-ubuntu-jdk17",
308
+ "9.17.3-ubi9-jdk17",
309
+ "9.17.3-ubi9",
310
+ "9.17.3-jdk17",
311
+ "9.17.3",
312
+ "9.17.3-jdk11",
313
+ "9.17.2-ubuntu-jdk17",
314
+ "9.16.0-ubuntu-jdk11",
315
+ "9.17.2-ubuntu-jdk11",
316
+ "9.17.2-ubi9-jdk17",
317
+ "9.17.2-ubi9",
318
+ "9.17.2-jdk17",
319
+ "9.17.2-jdk11",
320
+ "9.17.2",
321
+ "9.17.1-ubuntu-jdk17",
322
+ "9.17.1-ubuntu-jdk11",
323
+ "9.17.1-ubi9-jdk17",
324
+ "9.17.1-ubi9",
325
+ "9.17.1-jdk17",
326
+ "9.17.1-jdk11",
327
+ "9.17.0-ubuntu-jdk17",
328
+ "9.17.1",
329
+ "9.17.0-ubuntu-jdk11",
330
+ "9.17.0-ubi9-jdk17",
331
+ "9.17.0-ubi9",
332
+ "9.17.0-jdk17",
333
+ "9.17.0-jdk11",
334
+ "9.17",
335
+ "9.17.0",
336
+ "9.16-ubuntu-jdk17",
337
+ "9.16-ubuntu-jdk11",
338
+ "9.16-jdk17",
339
+ "9.16-jdk11",
340
+ "9.16.1-ubuntu-jdk17",
341
+ "9.16.1-ubuntu-jdk11",
342
+ "9.16.1-ubi9-jdk17",
343
+ "9.16.1-ubi9",
344
+ "9.16.1-jdk17",
345
+ "9.16.1-jdk11",
346
+ "9.16.1",
347
+ "9.16.0-ubuntu-jdk17",
348
+ "9.16.0-ubi9-jdk17",
349
+ "9.16.0-ubi9",
350
+ "9.16.0-jdk11",
351
+ "9.16.0-jdk17",
352
+ "9.16.0",
46
353
  "9.15-ubuntu-jdk11",
354
+ "9.16",
355
+ "9.15-ubuntu-jdk17",
356
+ "9.15-jdk17",
47
357
  "9.15-jdk11",
358
+ "9.15.2-ubuntu-jdk17",
48
359
  "9.15.2-ubuntu-jdk11",
360
+ "9.15.2-ubi9-jdk17",
361
+ "9.15.2-ubi9",
362
+ "9.15.2-jdk17",
49
363
  "9.15.2-jdk11",
50
364
  "9.15.2",
365
+ "9.15.1-ubuntu-jdk17",
366
+ "9.15.1-ubuntu-jdk11",
367
+ "9.15.1-ubi9-jdk17",
368
+ "9.15.1-ubi9",
369
+ "9.15.1-jdk17",
370
+ "9.15.1-jdk11",
371
+ "9.15.1",
372
+ "9.15.0-ubuntu-jdk17",
373
+ "9.15.0-ubi9-jdk17",
374
+ "9.15.0-ubuntu-jdk11",
375
+ "9.15.0-ubi9",
376
+ "9.15.0-jdk17",
377
+ "9.15.0",
378
+ "9.15.0-jdk11",
51
379
  "9.15",
380
+ "9.14-ubuntu-jdk17",
381
+ "9.14-ubuntu-jdk11",
382
+ "9.14-jdk17",
383
+ "9.14.1-ubuntu-jdk17",
384
+ "9.14-jdk11",
385
+ "9.14.1-ubuntu-jdk11",
386
+ "9.14.1-ubi9",
387
+ "9.14.1-ubi9-jdk17",
388
+ "9.14.1-jdk17",
389
+ "9.14.1",
390
+ "9.14.1-jdk11",
391
+ "9.14.0-ubuntu-jdk17",
392
+ "9.14.0-ubuntu-jdk11",
393
+ "9.14.0-ubi9-jdk17",
394
+ "9.14.0-ubi9",
395
+ "9.14.0-jdk17",
396
+ "9.14.0-jdk11",
397
+ "9.14.0",
398
+ "9.14",
399
+ "9.13-ubuntu-jdk17",
52
400
  "9.13-ubuntu-jdk11",
53
401
  "9.13-jdk11",
402
+ "9.13-jdk17",
403
+ "9.13.1-ubuntu-jdk17",
404
+ "9.13.1-ubi9-jdk17",
54
405
  "9.13.1-ubuntu-jdk11",
406
+ "9.13.1-ubi9",
407
+ "9.13.1-jdk17",
55
408
  "9.13.1-jdk11",
56
409
  "9.13.1",
410
+ "9.13.0-ubuntu-jdk17",
411
+ "9.13.0-ubuntu-jdk11",
412
+ "9.13.0-ubi9-jdk17",
413
+ "9.13.0-ubi9",
414
+ "9.13.0-jdk17",
415
+ "9.13.0-jdk11",
416
+ "9.13.0",
57
417
  "9.13",
58
- "9.10-jdk11",
59
- "9.10",
60
- "9.8.1-ubuntu-jdk11",
61
- "9.8.1-jdk11",
62
- "9.8.1",
63
- "9.6-ubuntu-jdk11",
64
- "9.6-jdk11",
65
- "9.6.0-jdk11",
66
- "9.6.0-ubuntu-jdk11",
67
- "9.6.0",
68
- "9.6",
69
- "9.0-ubuntu-jdk11",
70
- "9.8-ubuntu-jdk11",
71
- "9.8-jdk11",
72
- "9.0-jdk11",
73
- "9.8.2-ubuntu-jdk11",
74
- "9.0.0-ubuntu-jdk11",
75
- "9.0.0-jdk11",
76
- "9.8.2-jdk11",
77
- "9.8.2",
78
- "9.0.0",
79
- "9.8",
80
- "9.0",
81
- "9.4.4-ubuntu-jdk11",
82
- "9.4.4-jdk11",
83
- "9.4.4",
84
- "9.4.19-ubuntu-jdk11",
85
- "9.4.19-jdk11",
86
- "9.4.19",
87
- "9.3.2-ubuntu-jdk11",
88
- "9.3.2-jdk11",
89
- "9.3.2",
90
- "9.12.5-ubuntu-jdk11",
91
- "9.12.5-jdk11",
92
- "9.4.11-ubuntu-jdk11",
93
- "9.12.5",
94
- "9.4.11-jdk11",
95
- "9.4.2-ubuntu-jdk11",
96
- "9.4.11",
97
- "9.4.2-jdk11",
98
- "9.4.2",
99
- "9.2.0-ubuntu-jdk11",
100
- "9.2.0-jdk11",
101
- "9.2.0",
102
- "9.14.0-ubuntu-jdk11",
103
- "9.14.0-jdk11",
104
- "9.14.0",
105
- "9.11.0-ubuntu-jdk11",
106
- "9.11.0-jdk11",
107
- "9.5.0-ubi9-jdk17",
108
- "9.5.0-ubi9",
109
- "9.11.0",
110
- "9.4.5-ubuntu-jdk11",
111
- "9.4.5-jdk11",
112
- "9.4.5",
113
- "9.4.12-ubuntu-jdk11",
114
- "9.4.12-jdk11",
115
- "9.4.12",
116
- "9.3-ubuntu-jdk11",
117
- "9.3-jdk11",
118
- "9.3.3-ubuntu-jdk11",
119
- "9.3.3-jdk11",
120
- "9.3.3",
121
- "9.3",
122
- "9.12.6-ubuntu-jdk11",
123
- "9.12.6-jdk11",
124
- "9.12.6",
125
- "9.1.0-ubuntu-jdk11",
126
- "9.7.0-ubuntu-jdk11",
127
- "9.1.0-jdk11",
128
- "9.1.0",
129
- "9.7.0-jdk11",
130
- "9.7.0",
131
- "9.13.1-ubi9-jdk17",
132
- "9.13.1-ubi9",
133
- "9.12.0-ubuntu-jdk11",
134
- "9.12.0-jdk11",
135
- "9.12.0",
136
- "9.9.0-ubuntu-jdk11",
137
- "9.9.0-ubi9-jdk17",
138
- "9.9.0-ubi9",
139
- "9.9.0-jdk11",
140
- "9.9.0",
141
- "9.8.0-ubi9-jdk17",
142
- "9.8.0-ubi9",
143
- "9.4.20-ubuntu-jdk11",
144
- "9.4.20-jdk11",
145
- "9.4.20",
146
- "9.2-ubuntu-jdk11",
147
- "9.2-jdk11",
148
- "9.2.1-ubuntu-jdk11",
149
- "9.2.1-jdk11",
150
- "9.2.1",
151
- "9.2",
152
- "9.15.0-ubi9-jdk17",
153
- "9.15.0-ubi9",
154
- "9.14-ubuntu-jdk11",
155
- "9.14-jdk11",
156
- "9.14.1-ubuntu-jdk11",
157
- "9.14.1-jdk11",
158
- "9.14.1",
159
- "9.14",
160
- "9.12.7-ubuntu-jdk11",
161
- "9.12.7-ubi9-jdk17",
162
- "9.12.7-ubi9",
163
- "9.12.7-jdk11",
164
- "9.12.7",
165
- "9.11.2-ubi9-jdk17",
166
- "9.11.2-ubi9",
167
- "9.11.1-ubuntu-jdk11",
168
- "9.7.1-ubuntu-jdk11",
169
- "9.11.1-jdk11",
170
- "9.7.1-jdk11",
171
- "9.11.1",
172
- "9.7.1",
173
- "9.7.0-ubi9-jdk17",
174
- "9.7.0-ubi9",
175
- "9.5.1-ubi9-jdk17",
176
- "9.5.1-ubi9",
177
- "9.4.6-ubuntu-jdk11",
178
- "9.4.6-jdk11",
179
- "9.4.6",
180
- "9.4.14-ubuntu-jdk11",
181
- "9.4.14-jdk11",
182
- "9.4.14",
183
- "9.1-ubuntu-jdk11",
184
- "9.1-jdk11",
185
- "9.1.1-ubuntu-jdk11",
186
- "9.1.1-jdk11",
187
- "9.1.1",
188
- "9.10.2-ubi9-jdk17",
189
- "9.9.1-ubi9-jdk17",
190
- "9.10.2-ubi9",
191
- "9.9.1-ubi9",
192
- "9.1",
193
- "9.12.1-ubuntu-jdk11",
194
- "9.12.1-jdk11",
195
- "9.12.1",
196
- "9.11.2-ubuntu-jdk11",
197
- "9.11.2-jdk11",
198
- "9.9.1-jdk11",
199
- "9.9.1-ubuntu-jdk11",
200
- "9.11.2",
201
- "9.9.1",
202
- "9.8.1-ubi9-jdk17",
203
- "9.8.1-ubi9",
204
- "9.4-ubuntu-jdk11",
205
- "9.4-jdk11",
206
- "9.4.7-ubuntu-jdk11",
207
- "9.4.7-jdk11",
208
- "9.4.7",
209
- "9.4.21-ubuntu-jdk11",
210
- "9.4.21-jdk11",
211
- "9.4.21",
212
- "9.4",
213
- "9.15.1-ubi9-jdk17",
214
- "9.15.1-ubi9",
418
+ "9.12-ubuntu-jdk17",
215
419
  "9.12-ubuntu-jdk11",
420
+ "9.12-jdk17",
421
+ "9.12.9-ubuntu-jdk17",
216
422
  "9.12-jdk11",
423
+ "9.12.9-ubuntu-jdk11",
424
+ "9.12.9-ubi9-jdk17",
425
+ "9.12.9-ubi9",
426
+ "9.12.9-jdk17",
427
+ "9.12.9",
428
+ "9.12.9-jdk11",
429
+ "9.12.8-ubuntu-jdk17",
217
430
  "9.12.8-ubuntu-jdk11",
218
431
  "9.12.8-ubi9-jdk17",
219
432
  "9.12.8-ubi9",
433
+ "9.12.8-jdk17",
220
434
  "9.12.8-jdk11",
435
+ "9.12.5-ubuntu-jdk17",
221
436
  "9.12.8",
222
- "9.12",
223
- "9.11.3-ubi9-jdk17",
224
- "9.7-ubuntu-jdk11",
225
- "9.11.3-ubi9",
226
- "9.7-jdk11",
227
- "9.7.2-ubuntu-jdk11",
228
- "9.7.2-jdk11",
229
- "9.7.2",
230
- "9.7.1-ubi9-jdk17",
231
- "9.7.1-ubi9",
232
- "9.7",
233
- "9.4.15-ubuntu-jdk11",
234
- "9.4.15-jdk11",
235
- "9.4.15",
236
- "9.4.0-ubuntu-jdk11",
237
- "9.4.0-jdk11",
238
- "9.4.0",
239
- "9.14.0-ubi9-jdk17",
240
- "9.14.0-ubi9",
437
+ "9.12.7-ubuntu-jdk17",
438
+ "9.12.7-ubuntu-jdk11",
439
+ "9.12.7-ubi9-jdk17",
440
+ "9.12.7-ubi9",
441
+ "9.12.7-jdk17",
442
+ "9.12.7-jdk11",
443
+ "9.12.7",
444
+ "9.12.6-ubuntu-jdk17",
445
+ "9.12.6-ubuntu-jdk11",
446
+ "9.12.6-ubi9-jdk17",
447
+ "9.12.6-ubi9",
448
+ "9.12.6-jdk17",
449
+ "9.12.6-jdk11",
450
+ "9.12.6",
451
+ "9.12.5-ubuntu-jdk11",
452
+ "9.12.5-ubi9-jdk17",
453
+ "9.12.5-ubi9",
454
+ "9.12.5-jdk17",
455
+ "9.12.5-jdk11",
456
+ "9.12.5",
457
+ "9.12.4-ubuntu-jdk17",
458
+ "9.12.4-ubuntu-jdk11",
241
459
  "9.12.4-ubi9-jdk17",
242
460
  "9.12.4-ubi9",
461
+ "9.12.4-jdk11",
462
+ "9.12.4-jdk17",
463
+ "9.12.4",
464
+ "9.12.3-ubuntu-jdk17",
465
+ "9.12.3-ubuntu-jdk11",
466
+ "9.12.3-ubi9-jdk17",
467
+ "9.12.3-ubi9",
468
+ "9.12.3-jdk17",
469
+ "9.12.3-jdk11",
470
+ "9.12.3",
471
+ "9.12.2-ubuntu-jdk17",
243
472
  "9.12.2-ubuntu-jdk11",
473
+ "9.12.2-ubi9-jdk17",
474
+ "9.12.2-ubi9",
475
+ "9.12.2-jdk17",
244
476
  "9.12.2-jdk11",
245
477
  "9.12.2",
246
- "9.12.1-ubi9-jdk17",
478
+ "9.12.1-ubuntu-jdk17",
479
+ "9.12.1-ubuntu-jdk11",
247
480
  "9.12.1-ubi9",
248
- "9.9.2-ubi9-jdk17",
249
- "9.9.2-ubi9",
481
+ "9.12.1-ubi9-jdk17",
482
+ "9.12.1-jdk17",
483
+ "9.12.15-ubuntu-jdk17",
484
+ "9.12.1-jdk11",
485
+ "9.12.15-ubuntu-jdk11",
486
+ "9.12.15-ubi9",
487
+ "9.12.15-ubi9-jdk17",
488
+ "9.12.15-jdk17",
489
+ "9.12.15-jdk11",
490
+ "9.12.15",
491
+ "9.12.14-ubuntu-jdk17",
492
+ "9.12.14-ubuntu-jdk11",
493
+ "9.12.14-ubi9-jdk17",
494
+ "9.12.14-ubi9",
495
+ "9.12.14-jdk11",
496
+ "9.12.14-jdk17",
497
+ "9.12.14",
498
+ "9.12.13-ubuntu-jdk11",
499
+ "9.12.13-ubuntu-jdk17",
500
+ "9.12.13-ubi9-jdk17",
501
+ "9.12.13-ubi9",
502
+ "9.12.13-jdk17",
503
+ "9.12.13-jdk11",
504
+ "9.12.13",
505
+ "9.12.12-ubuntu-jdk17",
506
+ "9.12.12-ubuntu-jdk11",
507
+ "9.12.12-ubi9-jdk17",
508
+ "9.12.12-ubi9",
509
+ "9.12.12-jdk17",
510
+ "9.12.12-jdk11",
511
+ "9.12.12",
512
+ "9.12.11-ubuntu-jdk17",
513
+ "9.12.11-ubuntu-jdk11",
514
+ "9.12.11-ubi9-jdk17",
515
+ "9.12.11-ubi9",
516
+ "9.12.11-jdk11",
517
+ "9.12.11-jdk17",
518
+ "9.12.10-ubuntu-jdk17",
519
+ "9.12.11",
520
+ "9.12.10-ubi9-jdk17",
521
+ "9.12.10-ubuntu-jdk11",
522
+ "9.12.10-ubi9",
523
+ "9.12.10-jdk17",
524
+ "9.12.10-jdk11",
525
+ "9.12.10",
526
+ "9.12.1",
527
+ "9.12.0-ubuntu-jdk17",
528
+ "9.12.0-ubuntu-jdk11",
529
+ "9.12.0-jdk17",
530
+ "9.12.0-jdk11",
531
+ "9.12.0",
532
+ "9.12",
533
+ "9.11-ubuntu-jdk17",
250
534
  "9.11-ubuntu-jdk11",
535
+ "9.11-jdk17",
251
536
  "9.11-jdk11",
537
+ "9.11.3-ubuntu-jdk17",
252
538
  "9.11.3-ubuntu-jdk11",
539
+ "9.11.3-ubi9-jdk17",
540
+ "9.11.3-ubi9",
541
+ "9.11.3-jdk17",
253
542
  "9.11.3-jdk11",
254
543
  "9.11.3",
255
- "9.11",
256
- "9.9-ubuntu-jdk11",
257
- "9.9-jdk11",
258
- "9.9.2-ubuntu-jdk11",
259
- "9.9.2-jdk11",
260
- "9.9.2",
261
- "9.9",
262
- "9.8.2-ubi9-jdk17",
263
- "9.8.2-ubi9",
264
- "9.7.2-ubi9-jdk17",
265
- "9.7.2-ubi9",
266
- "9.6.0-ubi9-jdk17",
267
- "9.6.0-ubi9",
268
- "9.4.8-ubuntu-jdk11",
269
- "9.4.8-jdk11",
270
- "9.4.8",
271
- "9.4.16-ubuntu-jdk11",
272
- "9.4.16-jdk11",
273
- "9.4.16",
274
- "9.3.0-ubuntu-jdk11",
275
- "9.3.0-jdk11",
276
- "9.3.0",
277
- "9.15.2-ubi9-jdk17",
278
- "9.15.0-ubuntu-jdk11",
279
- "9.15.2-ubi9",
280
- "9.15.0-jdk11",
281
- "9.15.0",
282
- "9.14.1-ubi9-jdk17",
283
- "9.4.1-ubuntu-jdk11",
284
- "9.14.1-ubi9",
285
- "9.4.1-jdk11",
286
- "9.12.2-ubi9-jdk17",
287
- "9.4.1",
288
- "9.12.5-ubi9-jdk17",
289
- "9.12.5-ubi9",
290
- "9.12.3-jdk11",
291
- "9.12.3-ubuntu-jdk11",
292
- "9.12.3",
293
- "9.12.2-ubi9",
544
+ "9.11.2-ubuntu-jdk17",
545
+ "9.11.2-ubuntu-jdk11",
546
+ "9.11.2-ubi9-jdk17",
547
+ "9.11.2-ubi9",
548
+ "9.11.2-jdk17",
549
+ "9.11.2-jdk11",
550
+ "9.11.2",
551
+ "9.11.1-ubuntu-jdk17",
552
+ "9.11.1-ubuntu-jdk11",
553
+ "9.11.1-ubi9-jdk17",
554
+ "9.11.1-ubi9",
555
+ "9.11.1-jdk17",
556
+ "9.11.1-jdk11",
557
+ "9.11.1",
558
+ "9.11.0-ubuntu-jdk17",
294
559
  "9.11.0-ubi9-jdk17",
560
+ "9.11.0-ubuntu-jdk11",
295
561
  "9.11.0-ubi9",
562
+ "9.11.0-jdk17",
563
+ "9.11.0-jdk11",
564
+ "9.11.0",
565
+ "9.11",
566
+ "9.10-ubuntu-jdk17",
567
+ "9.10-ubuntu-jdk11",
568
+ "9.10-jdk17",
569
+ "9.10-jdk11",
570
+ "9.10.2-ubuntu-jdk17",
571
+ "9.10.2-ubuntu-jdk11",
572
+ "9.10.2-ubi9-jdk17",
573
+ "9.10.2-ubi9",
574
+ "9.10.2-jdk17",
575
+ "9.10.2-jdk11",
576
+ "9.10.2",
577
+ "9.10.1-ubuntu-jdk17",
578
+ "9.10.1-ubuntu-jdk11",
579
+ "9.10.1-ubi9-jdk17",
580
+ "9.10.1-ubi9",
581
+ "9.10.1-jdk17",
582
+ "9.10.1-jdk11",
583
+ "9.10.1",
584
+ "9.10.0-ubuntu-jdk17",
296
585
  "9.10.0-ubuntu-jdk11",
297
586
  "9.10.0-ubi9-jdk17",
298
587
  "9.10.0-ubi9",
588
+ "9.10.0-jdk17",
299
589
  "9.10.0-jdk11",
300
- "9.4.9-ubuntu-jdk11",
301
590
  "9.10.0",
302
- "9.4.9-jdk11",
303
- "9.4.9",
304
- "9.4.3-ubuntu-jdk11",
305
- "9.4.3-jdk11",
306
- "9.4.17-ubuntu-jdk11",
307
- "9.4.17-jdk11",
308
- "9.4.17",
309
- "9.4.10-ubuntu-jdk11",
310
- "9.4.10-jdk11",
311
- "9.4.10",
591
+ "9.10",
592
+ "9",
593
+ "10.1-ubuntu-jdk17",
594
+ "10.1-jdk17",
595
+ "10.1.2-ubuntu-jdk17",
596
+ "10.1.2-ubi9-jdk17",
597
+ "10.1.2-ubi9",
598
+ "10.1.2-jdk17",
599
+ "10.1.2",
600
+ "10.1.1-ubuntu-jdk17",
601
+ "10.1.1-ubi9-jdk17",
602
+ "10.1.1-ubi9",
603
+ "10.1.1-jdk17",
604
+ "10.1.1",
605
+ "10.1",
606
+ "10.0-ubuntu-jdk17",
607
+ "10.0-jdk17",
608
+ "10.0.1-ubuntu-jdk17",
609
+ "10.0.1-ubi9-jdk17",
610
+ "10.0.1-ubi9",
611
+ "10.0.1-jdk17",
612
+ "10.0.1",
613
+ "10.0.0-ubuntu-jdk17",
614
+ "10.0.0-ubi9-jdk17",
615
+ "10.0.0-ubi9",
616
+ "10.0.0-jdk17",
617
+ "10.0.0",
618
+ "10.0",
619
+ "9.12.0-ubi9-jdk17",
620
+ "9.12.0-ubi9",
621
+ "10.2.0-EAP02-jdk17",
622
+ "10.2.0-EAP02",
623
+ "10.2.0-EAP02-ubuntu-jdk17",
624
+ "10.2.0-EAP02-ubi9-jdk17",
625
+ "10.2.0-EAP02-ubi9",
626
+ "10.2.0-EAP01-ubuntu-jdk17",
627
+ "10.2.0-EAP01",
628
+ "10.2.0-EAP01-jdk17",
629
+ "10.2.0-EAP01-ubi9-jdk17",
630
+ "10.2.0-EAP01-ubi9",
631
+ "9.3.2-ubuntu-jdk11",
632
+ "9.3-ubuntu-jdk11",
633
+ "9.3-jdk11",
634
+ "9.3.0",
635
+ "9.3.3-jdk11",
636
+ "9.3.3-ubuntu-jdk11",
637
+ "9.3.2",
638
+ "9.3.3",
639
+ "9.3.2-jdk11",
312
640
  "9.3.1-ubuntu-jdk11",
313
641
  "9.3.1-jdk11",
314
642
  "9.3.1",
315
- "9.15.1-ubuntu-jdk11",
316
- "9.15.1-jdk11",
317
- "9.15.1",
318
- "9.13.0-ubuntu-jdk11",
319
- "9.13.0-ubi9-jdk17",
320
- "9.13.0-ubi9",
321
- "9.13.0-jdk11",
322
- "9.13.0",
323
- "9.12.4-ubuntu-jdk11",
324
- "9.12.4-jdk11",
325
- "9.12.4",
326
- "9.12.3-ubi9-jdk17",
327
- "9.12.3-ubi9",
328
- "9.12.0-ubi9-jdk17",
329
- "9.12.0-ubi9",
330
- "9.10.1-ubuntu-jdk11",
331
- "9.10.1-jdk11",
332
- "9.10.1",
333
- "9.4.3",
334
- "9.12.6-ubi9-jdk17",
335
- "9.12.6-ubi9",
336
- "9.11.1-ubi9-jdk17",
337
- "9.11.1-ubi9",
338
- "9.10.1-ubi9-jdk17",
339
- "9.10.1-ubi9",
643
+ "9.3.0-ubuntu-jdk11",
644
+ "9.3.0-jdk11",
645
+ "9.3",
646
+ "10.1.0-RC",
647
+ "10.1.0-RC-ubuntu-jdk17",
648
+ "10.1.0-RC-jdk17",
649
+ "10.1.0-RC-ubi9",
650
+ "10.1.0-RC-ubi9-jdk17",
651
+ "10.1.0-EAP02",
652
+ "10.1.0-EAP02-ubuntu-jdk17",
653
+ "10.1.0-EAP02-jdk17",
654
+ "10.1.0-EAP02-ubi9-jdk17",
655
+ "10.1.0-EAP02-ubi9",
656
+ "10.1.0-EAP01-ubuntu-jdk17",
657
+ "10.1.0-EAP01",
658
+ "10.1.0-EAP01-jdk17",
659
+ "10.1.0-EAP01-ubi9-jdk17",
660
+ "10.1.0-EAP01-ubi9",
661
+ "10.0.0-RC-jdk17",
662
+ "10.0.0-RC",
663
+ "10.0.0-RC-ubuntu-jdk17",
664
+ "10.0.0-RC-ubi9-jdk17",
665
+ "10.0.0-RC-ubi9",
666
+ "ubuntu-jdk11",
667
+ "jdk11",
668
+ "9.2-ubuntu-jdk11",
669
+ "9.2-jdk11",
670
+ "9.2.1-jdk11",
671
+ "9.2.1-ubuntu-jdk11",
672
+ "9.2.1",
673
+ "9.2.0-ubuntu-jdk11",
674
+ "9.2.0-jdk11",
675
+ "9.2.0",
676
+ "9.2",
677
+ "10.0.0-EAP08",
678
+ "10.0.0-EAP08-ubuntu-jdk17",
679
+ "10.0.0-EAP08-jdk17",
680
+ "10.0.0-EAP08-ubi9-jdk17",
681
+ "10.0.0-EAP08-ubi9",
682
+ "10.0.0-EAP07-ubuntu-jdk17",
683
+ "10.0.0-EAP07-jdk17",
684
+ "10.0.0-EAP07",
685
+ "10.0.0-EAP07-ubi9",
686
+ "10.0.0-EAP07-ubi9-jdk17",
687
+ "9.1-ubuntu-jdk11",
688
+ "9.1-jdk11",
689
+ "9.1.1-ubuntu-jdk11",
690
+ "9.1.1-jdk11",
691
+ "9.1.1",
692
+ "9.1.0-ubuntu-jdk11",
693
+ "9.1.0-jdk11",
694
+ "9.1.0",
695
+ "9.1",
696
+ "10.0.0-EAP04-ubi9",
697
+ "10.0.0-EAP04-ubi9-jdk17",
698
+ "10.0.0-EAP04-jdk17",
699
+ "10.0.0-EAP04",
700
+ "10.0.0-EAP04-ubuntu-jdk17",
701
+ "10.0.0-EAP05",
702
+ "10.0.0-EAP05-ubuntu-jdk17",
703
+ "10.0.0-EAP05-ubi9-jdk17",
704
+ "10.0.0-EAP05-jdk17",
705
+ "10.0.0-EAP05-ubi9",
706
+ "10.0.0-EAP06-ubi9",
707
+ "10.0.0-EAP06-ubuntu-jdk17",
708
+ "10.0.0-EAP06-jdk17",
709
+ "10.0.0-EAP06-ubi9-jdk17",
710
+ "10.0.0-EAP06",
711
+ "9.0-ubuntu-jdk11",
712
+ "9.0-jdk11",
713
+ "9.0.0-ubuntu-jdk11",
714
+ "9.0.0-jdk11",
715
+ "9.17.0-RC-ubuntu-jdk11",
716
+ "9.17.0-RC-ubuntu-jdk17",
717
+ "9.17.0-RC-ubi9-jdk17",
718
+ "9.17.0-RC",
719
+ "9.17.0-RC-ubi9",
720
+ "9.17.0-RC-jdk17",
721
+ "9.17.0-RC-jdk11",
722
+ "9.17.0-EAP02-ubi9",
723
+ "9.17.0-EAP02-jdk11",
724
+ "9.17.0-EAP02-ubuntu-jdk11",
725
+ "9.17.0-EAP02-ubi9-jdk17",
726
+ "9.17.0-EAP02",
727
+ "9.0.0",
728
+ "9.0",
729
+ "9.17.0-EAP01-ubi9",
730
+ "9.17.0-EAP01-ubi9-jdk17",
731
+ "9.17.0-EAP01",
732
+ "9.17.0-EAP01-ubuntu-jdk11",
733
+ "9.17.0-EAP01-jdk11",
340
734
  "9.16.0-RC-ubuntu-jdk11",
341
735
  "9.16.0-RC-ubi9",
342
736
  "9.16.0-RC-jdk11",
@@ -1657,406 +2051,695 @@ var jira = [
1657
2051
  "8.8.0-RC02"
1658
2052
  ];
1659
2053
  var confluence = [
1660
- "9.0.0-m92-ubuntu-jdk11",
1661
- "9.0.0-m92-jdk11",
1662
- "9.0.0-m92",
1663
2054
  "eap-ubuntu-jdk17",
1664
- "9.0.0-m92-ubuntu-jdk17",
1665
2055
  "eap-jdk17",
1666
- "9.0.0-m92-jdk17",
2056
+ "9.2.0-beta2-ubuntu-jdk21",
2057
+ "9.2.0-beta2-jdk21",
2058
+ "9.2.0-beta2-jdk17",
2059
+ "9.2.0-beta2",
1667
2060
  "eap",
1668
- "9.0.0-m92-ubi9",
1669
- "9.0.0-m92-ubi9-jdk17",
1670
- "8.8.0-ubuntu-jdk17",
1671
- "8.8.0",
1672
- "8.8.0-jdk17",
1673
- "8.8-ubuntu-jdk11",
1674
- "8.6-ubuntu-jdk11",
1675
- "8.6.1-ubuntu-jdk17",
1676
- "8.8-jdk11",
1677
- "8.8.1-ubuntu-jdk11",
1678
- "8.6.1-ubuntu-jdk11",
1679
- "8.6-jdk11",
1680
- "8.8.1-jdk11",
1681
- "8.6.2-ubuntu-jdk11",
1682
- "8.6.1-jdk11",
1683
- "8.6.2-jdk11",
1684
- "8.6.1-jdk17",
1685
- "8.5.7-ubuntu-jdk17",
1686
- "8.8.0-ubuntu-jdk11",
1687
- "8.5.7-ubuntu-jdk11",
1688
- "8.6.1",
1689
- "8.8.0-jdk11",
1690
- "7.19.7-ubuntu-jdk11",
1691
- "7.19.7-jdk11",
1692
- "8.0.3-ubuntu-jdk11",
1693
- "8.5.7-jdk11",
1694
- "8.5.7-jdk17",
1695
- "7.19.7",
1696
- "8.0.3-jdk11",
1697
- "8.5.7",
1698
- "7.19.18-ubuntu-jdk11",
1699
- "8.0.3",
1700
- "7.19.18-jdk11",
1701
- "7.20.2-ubuntu-jdk11",
1702
- "8.4-ubuntu-jdk17",
1703
- "8.4-ubuntu-jdk11",
1704
- "7.19.18",
1705
- "7.20.2",
1706
- "7.20.2-jdk11",
1707
- "8.4-jdk17",
1708
- "8.4-jdk11",
1709
- "7.19-ubuntu-jdk11",
1710
- "7.19-jdk11",
1711
- "8.4.5-ubuntu-jdk17",
1712
- "7.19.22-ubuntu-jdk11",
1713
- "8.4.5-ubuntu-jdk11",
1714
- "8.4.5-jdk17",
1715
- "7.19.22",
1716
- "7.19.22-jdk11",
1717
- "8.4.5-jdk11",
1718
- "7.19.12-jdk11",
1719
- "8.4.5",
1720
- "7.19.12-ubuntu-jdk11",
1721
- "8.4",
1722
- "8.1-ubuntu-jdk11",
1723
- "8.1-jdk11",
1724
- "8.2.0-ubuntu-jdk11",
1725
- "7.19.12",
1726
- "7.19",
1727
- "8.2.0-jdk11",
1728
- "8.2.0",
1729
- "8.1.4-ubuntu-jdk11",
1730
- "8.1.4-jdk11",
1731
- "8.1.4",
1732
- "8.1",
1733
- "8.0-ubuntu-jdk11",
1734
- "8.0-jdk11",
1735
- "8.0.4-ubuntu-jdk11",
1736
- "8.0",
1737
- "8.0.4",
1738
- "8.0.4-jdk11",
1739
- "8.8-ubuntu-jdk17",
1740
- "8.5.8-ubuntu-jdk17",
1741
- "8.8-jdk17",
1742
- "8.8.1-ubuntu-jdk17",
1743
- "7-ubuntu-jdk11",
1744
- "7-jdk11",
1745
- "8.5.8-ubuntu-jdk11",
1746
- "8.8.1-jdk17",
1747
- "8.5.8-jdk17",
1748
- "7.20-ubuntu-jdk11",
1749
- "8.5.8-jdk11",
1750
- "8.8.1",
1751
- "7.20-jdk11",
1752
- "8.8",
1753
- "8.5.8",
1754
- "7.20.3-ubuntu-jdk11",
1755
- "8.5.3-ubuntu-jdk17",
1756
- "8.5.3-jdk17",
1757
- "8.6-ubuntu-jdk17",
1758
- "7.20.3-jdk11",
1759
- "8.5.3-jdk11",
1760
- "8.5.3-ubuntu-jdk11",
1761
- "8.5.3",
1762
- "8.6-jdk17",
1763
- "7.19.19-ubuntu-jdk11",
1764
- "8.6.2-ubuntu-jdk17",
1765
- "7.20.3",
1766
- "8.4.1-ubuntu-jdk17",
1767
- "7.20",
1768
- "8.6.2-jdk17",
1769
- "7",
1770
- "7.19.19-jdk11",
1771
- "7.19.19",
1772
- "8.4.1-ubuntu-jdk11",
2061
+ "9.2.0-beta2-ubuntu-jdk17",
2062
+ "9.2.0-beta2-ubi9-jdk17",
2063
+ "9.2.0-beta2-ubi9-jdk21",
2064
+ "9.2.0-beta2-ubi9",
2065
+ "9.1.1-jdk21",
2066
+ "9.1.1-jdk17",
2067
+ "9.1.1",
2068
+ "9.1.0-ubuntu-jdk21",
2069
+ "9.1.0-ubi9-jdk21",
2070
+ "9.1.0-ubuntu-jdk17",
2071
+ "9.1.0-ubi9-jdk17",
2072
+ "9.1.0-ubi9",
2073
+ "9.1.0-jdk21",
2074
+ "9.1.0-jdk17",
2075
+ "9.1",
2076
+ "9.1.0",
2077
+ "9.0-ubuntu-jdk21",
2078
+ "9.0-jdk21",
2079
+ "9.0-ubuntu-jdk17",
2080
+ "9.0-jdk17",
2081
+ "9.0.3-ubuntu-jdk21",
2082
+ "9.0.3-ubuntu-jdk17",
2083
+ "9.0.3-ubi9-jdk21",
2084
+ "9.0.3-ubi9-jdk17",
2085
+ "9.0.3-ubi9",
2086
+ "9.0.3-jdk21",
2087
+ "9.0.3-jdk17",
2088
+ "9.0.3",
2089
+ "9.0.2-ubuntu-jdk21",
2090
+ "9.0.2-ubi9-jdk21",
2091
+ "9.0.2-ubuntu-jdk17",
2092
+ "9.0.2-ubi9-jdk17",
2093
+ "9.0.2-jdk21",
2094
+ "9.0.2-ubi9",
2095
+ "9.0.2-jdk17",
2096
+ "9.0.2",
2097
+ "9.0.1-ubuntu-jdk21",
2098
+ "9.0.1-ubuntu-jdk17",
2099
+ "9.0.1-ubi9-jdk21",
2100
+ "9.0.1-ubi9",
2101
+ "9.0.1-jdk21",
2102
+ "9.0.1",
2103
+ "9.0",
2104
+ "9.0.1-jdk17",
2105
+ "8-ubuntu-jdk17",
2106
+ "9",
2107
+ "8-jdk17",
2108
+ "8-ubuntu-jdk11",
2109
+ "8-jdk11",
2110
+ "8.9-ubuntu-jdk17",
2111
+ "8.9-ubuntu-jdk11",
2112
+ "8.9-jdk17",
2113
+ "8.9.8-ubuntu-jdk11",
2114
+ "8.9-jdk11",
2115
+ "8.9.8-ubuntu-jdk17",
2116
+ "8.9.8-ubi9",
2117
+ "8.9.8-ubi9-jdk17",
2118
+ "8.9.8-jdk17",
2119
+ "8.9.8-jdk11",
2120
+ "8.9.8",
2121
+ "8.9.7-ubuntu-jdk17",
2122
+ "8.9.7-ubuntu-jdk11",
2123
+ "8.9.7-ubi9-jdk17",
2124
+ "8.9.7-jdk11",
2125
+ "8.9.7-jdk17",
2126
+ "8.9.7-ubi9",
2127
+ "8.9.7",
2128
+ "8.9.6-ubuntu-jdk17",
2129
+ "8.9.6-ubi9-jdk17",
2130
+ "8.9.6-ubuntu-jdk11",
2131
+ "8.9.6-ubi9",
2132
+ "8.9.6-jdk17",
2133
+ "8.9.5-ubuntu-jdk11",
2134
+ "8.9.6",
2135
+ "8.9.6-jdk11",
2136
+ "8.9.5-ubuntu-jdk17",
2137
+ "8.9.5-jdk17",
2138
+ "8.9.5-jdk11",
2139
+ "8.9.5",
2140
+ "8.9.4-ubuntu-jdk17",
2141
+ "8.9.4-ubuntu-jdk11",
2142
+ "8.9.4-ubi9-jdk17",
2143
+ "8.9.4-ubi9",
2144
+ "8.9.4-jdk17",
2145
+ "8.9.4-jdk11",
2146
+ "8.9.4",
2147
+ "8.9.3-ubuntu-jdk11",
2148
+ "8.9.3-ubuntu-jdk17",
2149
+ "8.9.3-ubi9-jdk17",
2150
+ "8.9.3-ubi9",
2151
+ "8.9.3-jdk17",
2152
+ "8.9.3-jdk11",
2153
+ "8.9.3",
2154
+ "8.9.2-ubuntu-jdk17",
2155
+ "8.9.2-ubuntu-jdk11",
2156
+ "8.9.2-ubi9-jdk17",
2157
+ "8.9.2-jdk11",
2158
+ "8.9.2-jdk17",
2159
+ "8.9.2-ubi9",
2160
+ "8.9.1-ubuntu-jdk17",
2161
+ "8.9.2",
2162
+ "8.9.1-ubuntu-jdk11",
2163
+ "8.9.1-jdk11",
2164
+ "8.9.1-jdk17",
2165
+ "8.9.1",
1773
2166
  "8.9.0-ubuntu-jdk17",
1774
- "8.6.2",
1775
- "8.4.1-jdk17",
1776
- "8.6",
1777
- "8.4.1-jdk11",
1778
- "8.4.1",
1779
- "7.19.14-ubuntu-jdk11",
1780
2167
  "8.9.0-ubuntu-jdk11",
1781
2168
  "8.9.0-ubi9-jdk17",
1782
- "7.19.14-jdk11",
1783
- "8.3.3-ubuntu-jdk17",
1784
2169
  "8.9.0-ubi9",
1785
- "8.9.0-jdk11",
1786
- "7.19.14",
1787
2170
  "8.9.0-jdk17",
1788
- "8.3.3-ubuntu-jdk11",
1789
- "8.3.3-jdk17",
1790
2171
  "8.9.0",
2172
+ "8.9.0-jdk11",
2173
+ "8.9",
2174
+ "8.8-ubuntu-jdk17",
2175
+ "8.8-ubuntu-jdk11",
2176
+ "8.8-jdk17",
2177
+ "8.8-jdk11",
2178
+ "8.8.1-ubuntu-jdk11",
2179
+ "8.8.1-ubuntu-jdk17",
2180
+ "8.8.1-ubi9",
2181
+ "8.8.1-ubi9-jdk17",
2182
+ "8.8.1-jdk17",
2183
+ "8.8.1",
2184
+ "8.8.1-jdk11",
2185
+ "8.8.0-ubuntu-jdk17",
2186
+ "8.8.0-ubuntu-jdk11",
1791
2187
  "8.8.0-ubi9-jdk17",
2188
+ "8.8.0-jdk11",
1792
2189
  "8.8.0-ubi9",
1793
- "8.3.3-jdk11",
1794
- "8.3.3",
2190
+ "8.8.0",
2191
+ "8.8.0-jdk17",
2192
+ "8.8",
2193
+ "8.7-ubuntu-jdk17",
2194
+ "8.7-jdk17",
2195
+ "8.7-ubuntu-jdk11",
2196
+ "8.7-jdk11",
2197
+ "8.7.2-ubuntu-jdk17",
2198
+ "8.7.2-ubuntu-jdk11",
2199
+ "8.7.2-jdk11",
2200
+ "8.7.2-jdk17",
2201
+ "8.7.2",
2202
+ "8.7.1-ubuntu-jdk17",
1795
2203
  "8.7.1-ubuntu-jdk11",
1796
- "8.6.1-ubi9",
1797
- "8.6.1-ubi9-jdk17",
1798
2204
  "8.7.1-ubi9-jdk17",
1799
- "8.2.1-ubuntu-jdk11",
1800
2205
  "8.7.1-ubi9",
1801
2206
  "8.7.1-jdk11",
1802
- "7.19.2-ubuntu-jdk11",
1803
- "8.2.1-jdk11",
1804
- "7.19.2",
1805
- "7.19.15-ubuntu-jdk11",
1806
- "8.2.1",
2207
+ "8.7.1-jdk17",
2208
+ "8.7.1",
2209
+ "8.7",
2210
+ "8.6-ubuntu-jdk17",
2211
+ "8.6-ubuntu-jdk11",
2212
+ "8.6-jdk17",
2213
+ "8.6-jdk11",
2214
+ "8.6.2-ubuntu-jdk11",
2215
+ "8.6.2-ubuntu-jdk17",
2216
+ "8.6.2-ubi9-jdk17",
2217
+ "8.6.2-jdk17",
2218
+ "8.6.2-ubi9",
2219
+ "8.6.2-jdk11",
2220
+ "8.6.1-ubuntu-jdk17",
2221
+ "8.6.2",
2222
+ "8.6.1-ubi9-jdk17",
2223
+ "8.6.1-ubuntu-jdk11",
2224
+ "8.6.1-ubi9",
2225
+ "8.6.1-jdk17",
2226
+ "8.6.1",
2227
+ "8.6.1-jdk11",
2228
+ "8.6.0-ubuntu-jdk11",
2229
+ "8.6.0-ubuntu-jdk17",
2230
+ "8.6.0",
2231
+ "8.6.0-jdk11",
2232
+ "8.6.0-jdk17",
2233
+ "8.6",
1807
2234
  "8.5-ubuntu-jdk17",
1808
2235
  "8.5-jdk17",
1809
- "7.19.15-jdk11",
1810
- "7.19.8-ubuntu-jdk11",
2236
+ "8.5-ubuntu-jdk11",
2237
+ "8.5-jdk11",
1811
2238
  "8.5.9-ubuntu-jdk17",
1812
- "7.19.15",
1813
- "7.19.8",
1814
- "7.19.8-jdk11",
1815
- "8.5.9-ubi9",
2239
+ "8.5.9-ubuntu-jdk11",
1816
2240
  "8.5.9-ubi9-jdk17",
1817
- "7.19.3-jdk11",
1818
- "7.19.3-ubuntu-jdk11",
2241
+ "8.5.9-ubi9",
1819
2242
  "8.5.9-jdk17",
1820
- "7.19.3",
2243
+ "8.5.9-jdk11",
1821
2244
  "8.5.9",
2245
+ "8.5.8-ubuntu-jdk17",
2246
+ "8.5.8-ubuntu-jdk11",
2247
+ "8.5.8-ubi9-jdk17",
2248
+ "8.5.8-ubi9",
2249
+ "8.5.8-jdk17",
2250
+ "8.5.8-jdk11",
2251
+ "8.5.8",
2252
+ "8.5.7-ubuntu-jdk11",
2253
+ "8.5.7-ubuntu-jdk17",
2254
+ "8.5.7-ubi9-jdk17",
2255
+ "8.5.7-ubi9",
2256
+ "8.5.7-jdk11",
2257
+ "8.5.7-jdk17",
2258
+ "8.5.6-ubuntu-jdk11",
2259
+ "8.5.7",
2260
+ "8.5.6-ubuntu-jdk17",
2261
+ "8.5.6-ubi9-jdk17",
2262
+ "8.5.6-ubi9",
2263
+ "8.5.6-jdk17",
2264
+ "8.5.6-jdk11",
2265
+ "8.5.6",
2266
+ "8.5.5-jdk11",
2267
+ "8.5.5-ubuntu-jdk17",
2268
+ "8.5.5-jdk17",
2269
+ "8.5.5-ubuntu-jdk11",
2270
+ "8.5.3-ubuntu-jdk11",
2271
+ "8.5.5",
1822
2272
  "8.5.4-ubuntu-jdk17",
1823
- "7.19.0-jdk11",
1824
- "7.19.0-ubuntu-jdk11",
1825
2273
  "8.5.4-ubuntu-jdk11",
1826
- "7.19.0",
1827
2274
  "8.5.4-jdk17",
1828
- "8.5.4-jdk11",
1829
2275
  "8.5.4",
2276
+ "8.5.4-jdk11",
2277
+ "8.5.3-ubuntu-jdk17",
2278
+ "8.5.3-jdk17",
2279
+ "8.5.3-jdk11",
2280
+ "8.5.3",
2281
+ "8.5.2-jdk17",
2282
+ "8.5.2-ubuntu-jdk11",
2283
+ "8.5.2-ubuntu-jdk17",
2284
+ "8.5.2-jdk11",
2285
+ "8.5.2",
2286
+ "8.5.1-ubuntu-jdk17",
2287
+ "8.5.1-ubuntu-jdk11",
2288
+ "8.5.17-ubi9-jdk17",
2289
+ "8.5.1-jdk17",
2290
+ "8.5.1-jdk11",
2291
+ "8.5.17-ubi9",
2292
+ "8.5.17-ubuntu-jdk17",
2293
+ "8.5.17-ubuntu-jdk11",
2294
+ "8.5.17-jdk17",
2295
+ "8.5.17-jdk11",
2296
+ "8.5.16-ubuntu-jdk17",
2297
+ "8.5.17",
2298
+ "8.5.16-ubuntu-jdk11",
2299
+ "8.5.16-jdk17",
2300
+ "8.5.16-ubi9-jdk17",
2301
+ "8.5.16-ubi9",
2302
+ "8.5.16-jdk11",
2303
+ "8.5.16",
2304
+ "8.5.15-ubuntu-jdk17",
2305
+ "8.5.15-ubi9-jdk17",
2306
+ "8.5.15-ubuntu-jdk11",
2307
+ "8.5.15-jdk17",
2308
+ "8.5.15-jdk11",
2309
+ "8.5.15-ubi9",
2310
+ "8.5.15",
2311
+ "8.5.14-ubuntu-jdk17",
2312
+ "8.5.14-ubuntu-jdk11",
2313
+ "8.5.14-jdk17",
2314
+ "8.5.14-jdk11",
2315
+ "8.5.14",
2316
+ "8.5.12-ubuntu-jdk17",
2317
+ "8.5.12-ubuntu-jdk11",
2318
+ "8.5.12-ubi9-jdk17",
2319
+ "8.5.12-ubi9",
2320
+ "8.5.12-jdk17",
2321
+ "8.5.12-jdk11",
2322
+ "8.2.3-ubuntu-jdk11",
2323
+ "8.5.11-ubuntu-jdk17",
2324
+ "8.4.3-jdk11",
2325
+ "8.5.11-ubi9",
2326
+ "8.5.12",
2327
+ "8.5.11-ubuntu-jdk11",
2328
+ "8.5.11-ubi9-jdk17",
2329
+ "8.5.11-jdk17",
2330
+ "8.5.11-jdk11",
2331
+ "8.5.10-ubi9",
2332
+ "8.5.10-ubi9-jdk17",
2333
+ "8.5.10-ubuntu-jdk11",
2334
+ "8.5.11",
2335
+ "8.5.10-ubuntu-jdk17",
2336
+ "8.5.10-jdk17",
2337
+ "8.5.10",
2338
+ "8.5.10-jdk11",
2339
+ "8.5.1",
1830
2340
  "8.5.0-ubuntu-jdk17",
1831
- "8.5.0",
1832
- "8.5.0-jdk17",
1833
2341
  "8.5.0-ubuntu-jdk11",
1834
- "8.5.0-jdk11",
2342
+ "8.5.0-jdk17",
2343
+ "8.5.0",
1835
2344
  "8.5",
2345
+ "8.5.0-jdk11",
2346
+ "8.4-ubuntu-jdk17",
2347
+ "8.4-ubuntu-jdk11",
2348
+ "8.4-jdk17",
2349
+ "8.4-jdk11",
2350
+ "8.4.5-ubuntu-jdk17",
2351
+ "8.4.5-ubuntu-jdk11",
2352
+ "8.4.5-jdk17",
2353
+ "8.4.5",
2354
+ "8.4.5-jdk11",
2355
+ "8.4.4-ubuntu-jdk17",
2356
+ "8.4.4-ubuntu-jdk11",
2357
+ "8.4.4-jdk17",
2358
+ "8.4.4-jdk11",
2359
+ "8.4.3-ubuntu-jdk17",
2360
+ "8.4.4",
2361
+ "8.4.3-ubuntu-jdk11",
2362
+ "8.4.3-jdk17",
1836
2363
  "8.4.2-ubuntu-jdk17",
2364
+ "8.4.3",
1837
2365
  "8.4.2-ubuntu-jdk11",
1838
- "8.4.2-jdk11",
1839
2366
  "8.4.2-jdk17",
2367
+ "8.4.1-ubuntu-jdk17",
1840
2368
  "8.4.2",
1841
- "8.3-ubuntu-jdk11",
1842
- "8.3.4-ubuntu-jdk11",
1843
- "8.3.4-jdk11",
1844
- "8.3-jdk11",
1845
- "8.2.2",
1846
- "8.2.2-jdk11",
1847
- "8.2.2-ubuntu-jdk11",
1848
- "8.1.0",
1849
- "8.1.0-jdk11",
1850
- "8.1.0-ubuntu-jdk11",
1851
- "7.19.9-ubuntu-jdk11",
1852
- "7.19.9-jdk11",
1853
- "7.19.9",
1854
- "8.7.1-ubuntu-jdk17",
1855
- "8.7.1-jdk17",
1856
- "7.19.4-ubuntu-jdk11",
1857
- "7.19.4-jdk11",
1858
- "7.19.4",
1859
- "8.7.1",
1860
- "latest",
1861
- "7.19.2-jdk11",
1862
- "8.5-ubuntu-jdk11",
1863
- "8.5.9-jdk11",
1864
- "8.5-jdk11",
1865
- "7.19.1-ubuntu-jdk11",
1866
- "8.5.9-ubuntu-jdk11",
1867
- "7.19.1-jdk11",
1868
- "7.19.1",
1869
- "8.3-ubuntu-jdk17",
1870
- "ubuntu-jdk11",
2369
+ "8.4.2-jdk11",
2370
+ "8.4.1-jdk17",
2371
+ "8.4.1-ubuntu-jdk11",
2372
+ "8.4.1-jdk11",
2373
+ "8.4.1",
2374
+ "8.4.0-jdk17",
2375
+ "8.4.0-ubuntu-jdk17",
2376
+ "8.4.0-ubuntu-jdk11",
2377
+ "8.4.0-jdk11",
2378
+ "8.4.0",
2379
+ "8.3-ubuntu-jdk11",
2380
+ "8.4",
1871
2381
  "8.3-jdk17",
2382
+ "8.3-ubuntu-jdk17",
2383
+ "8.3-jdk11",
1872
2384
  "8.3.4-ubuntu-jdk17",
1873
- "ubi9-jdk17",
1874
- "ubi9",
2385
+ "8.3.4-ubuntu-jdk11",
1875
2386
  "8.3.4-jdk17",
1876
2387
  "8.3.4",
1877
- "jdk11",
2388
+ "8.3.4-jdk11",
2389
+ "8.3.3-ubuntu-jdk17",
2390
+ "8.3.3-jdk11",
2391
+ "8.3.3-ubuntu-jdk11",
2392
+ "8.3.3-jdk17",
2393
+ "8.3.3",
2394
+ "8.3.2-ubuntu-jdk17",
2395
+ "8.3.2-jdk11",
2396
+ "8.3.2-ubuntu-jdk11",
2397
+ "8.3.2-jdk17",
2398
+ "8.3.2",
2399
+ "8.3.1-ubuntu-jdk17",
2400
+ "8.3.1-ubuntu-jdk11",
2401
+ "8.3.1-jdk17",
2402
+ "8.3.1-jdk11",
1878
2403
  "8.3.0-ubuntu-jdk17",
1879
- "8-ubuntu-jdk11",
1880
- "8-jdk11",
2404
+ "8.3.1",
1881
2405
  "8.3.0-ubuntu-jdk11",
1882
2406
  "8.3.0-jdk17",
1883
- "8.9-ubuntu-jdk11",
1884
- "8.1.3-ubuntu-jdk17",
1885
- "8.1.3-jdk17",
1886
2407
  "8.3.0-jdk11",
1887
- "8.9-jdk11",
1888
- "7.19.16-ubuntu-jdk11",
1889
- "8.3.0",
1890
- "7.19.16-jdk11",
1891
- "8.9.1-ubuntu-jdk11",
1892
- "7.19.16",
2408
+ "8.2-ubuntu-jdk17",
1893
2409
  "8.3",
1894
- "8.9.1-ubi9-jdk17",
1895
- "8.2.2-ubuntu-jdk17",
1896
- "8.9.1-jdk11",
1897
- "8.9.1-ubi9",
1898
- "8.2.2-jdk17",
1899
- "8.0.3-ubuntu-jdk17",
1900
- "8.0.3-jdk17",
1901
- "8.8.1-ubi9-jdk17",
1902
- "8.7-ubuntu-jdk11",
1903
- "8.8.1-ubi9",
1904
- "8.0.0-ubuntu-jdk11",
1905
- "8.0.0-jdk11",
1906
- "8.7-jdk11",
1907
- "8.0.0",
1908
- "8.7.2-ubuntu-jdk11",
1909
- "8.7.2-ubi9-jdk17",
1910
- "8.7.2-ubi9",
1911
- "8.7.2-jdk11",
1912
- "8.6.2-ubi9-jdk17",
1913
- "8.6.2-ubi9",
1914
- "8.5.5-ubuntu-jdk17",
1915
- "8.5.5-ubuntu-jdk11",
1916
- "8.5.5-jdk11",
1917
- "8.5.5",
1918
- "8.5.5-jdk17",
1919
- "8.5.1-ubuntu-jdk17",
1920
- "8.5.1-ubuntu-jdk11",
1921
- "8.5.1-jdk17",
1922
- "8.5.1-jdk11",
1923
- "8.5.1",
1924
- "8.4.3-ubuntu-jdk17",
1925
- "8.4.3-ubuntu-jdk11",
1926
- "8.4.3-jdk11",
1927
- "8.4.3-jdk17",
1928
- "8.4.3",
2410
+ "8.3.0",
1929
2411
  "8.2-ubuntu-jdk11",
1930
- "8.2.0-ubuntu-jdk17",
1931
- "8.2.0-jdk17",
1932
- "8.1.1-ubuntu-jdk11",
1933
- "8.1.1",
1934
- "8.1.1-jdk11",
1935
- "7.19.5-ubuntu-jdk11",
1936
- "ubuntu-jdk17",
1937
- "7.19.5-jdk11",
1938
- "7.19.5",
1939
- "jdk17",
1940
- "8-ubuntu-jdk17",
1941
- "7.19.20-ubuntu-jdk11",
1942
- "7.19.20-jdk11",
1943
- "7.19.20",
1944
- "8-jdk17",
1945
- "8.9-jdk17",
1946
- "8.9-ubuntu-jdk17",
1947
- "7.19.10-ubuntu-jdk11",
1948
- "8.9.1-ubuntu-jdk17",
1949
- "7.19.10-jdk11",
1950
- "7.19.10",
1951
- "8.7-ubuntu-jdk17",
1952
- "8.9",
1953
- "8.9.1-jdk17",
1954
- "8.9.1",
1955
- "8.7.2-ubuntu-jdk17",
1956
- "8.7-jdk17",
1957
- "8.7",
1958
- "8.7.2-jdk17",
1959
- "8.7.2",
1960
- "8.3.1-jdk17",
1961
- "8.3.1-jdk11",
1962
- "8.3.1-ubuntu-jdk11",
1963
- "8.3.1",
1964
- "8.3.1-ubuntu-jdk17",
2412
+ "8.2-jdk17",
1965
2413
  "8.2-jdk11",
1966
- "8.2-ubuntu-jdk17",
1967
2414
  "8.2.3-ubuntu-jdk17",
1968
- "8.2.3-ubuntu-jdk11",
1969
- "8.2-jdk17",
1970
2415
  "8.2.3-jdk17",
1971
2416
  "8.2.3-jdk11",
1972
2417
  "8.2.3",
2418
+ "8.2.2-ubuntu-jdk17",
2419
+ "8.2.2-ubuntu-jdk11",
2420
+ "8.2.2-jdk17",
2421
+ "8.2.2-jdk11",
2422
+ "8.2.2",
2423
+ "8.2.1-ubuntu-jdk17",
2424
+ "8.2.1-jdk17",
2425
+ "8.2.1-ubuntu-jdk11",
2426
+ "8.2.1-jdk11",
2427
+ "8.2.1",
2428
+ "8.2.0-ubuntu-jdk17",
2429
+ "8.2.0-ubuntu-jdk11",
2430
+ "8.2.0-jdk17",
2431
+ "8.2.0",
2432
+ "8.2.0-jdk11",
1973
2433
  "8.2",
1974
- "8.1.0-jdk17",
1975
- "8.1.0-ubuntu-jdk17",
1976
- "8.0-jdk17",
1977
- "8.0.4-jdk17",
1978
- "8.0-ubuntu-jdk17",
1979
- "8.0.4-ubuntu-jdk17",
1980
- "8.6.0-ubi9",
1981
- "8.6.0-ubi9-jdk17",
1982
- "8.0.1-ubuntu-jdk11",
1983
- "8.0.1-jdk11",
1984
- "8",
1985
- "8.0.1",
1986
- "8.5.7-ubi9-jdk17",
1987
2434
  "8.1-ubuntu-jdk17",
1988
- "8.5.7-ubi9",
2435
+ "8.1-ubuntu-jdk11",
2436
+ "8.0.4",
1989
2437
  "8.1-jdk17",
2438
+ "8.1-jdk11",
1990
2439
  "8.1.4-ubuntu-jdk17",
2440
+ "8.1.4-ubuntu-jdk11",
1991
2441
  "8.1.4-jdk17",
1992
- "8.4.0-ubuntu-jdk17",
1993
- "7.20.0-ubuntu-jdk11",
1994
- "8.4.0-ubuntu-jdk11",
1995
- "7.19.17-ubuntu-jdk11",
1996
- "7.20.0",
1997
- "7.20.0-jdk11",
1998
- "8.4.0-jdk17",
1999
- "7.19.17-jdk11",
2000
- "7.19.17",
2001
- "8.4.0-jdk11",
2002
- "8.4.0",
2003
- "7.19.21-ubuntu-jdk11",
2004
- "7.19.21",
2005
- "7.19.21-jdk11",
2006
- "8.6.0-ubuntu-jdk17",
2007
- "7.19.11-ubuntu-jdk11",
2008
- "7.19.11-jdk11",
2009
- "7.19.11",
2010
- "8.6.0-ubuntu-jdk11",
2011
- "8.6.0-jdk11",
2012
- "8.6.0-jdk17",
2013
- "8.6.0",
2014
- "8.5.6-ubuntu-jdk17",
2015
- "8.5.8-ubi9",
2016
- "8.5.8-ubi9-jdk17",
2017
- "8.5.6-ubuntu-jdk11",
2018
- "8.5.6-ubi9-jdk17",
2019
- "8.5.6-ubi9",
2020
- "8.5.6",
2021
- "8.5.6-jdk17",
2022
- "8.5.6-jdk11",
2023
- "8.5.2-ubuntu-jdk17",
2024
- "8.5.2-ubuntu-jdk11",
2025
- "8.5.2-jdk11",
2026
- "8.5.2",
2027
- "8.5.2-jdk17",
2028
- "8.4.4-ubuntu-jdk11",
2029
- "8.4.4-ubuntu-jdk17",
2030
- "8.3.2-jdk17",
2031
- "8.3.2-ubuntu-jdk17",
2032
- "8.4.4-jdk17",
2033
- "8.4.4",
2034
- "8.4.4-jdk11",
2035
- "8.3.2",
2036
- "8.3.2-jdk11",
2037
- "8.3.2-ubuntu-jdk11",
2038
- "8.2.1-jdk17",
2039
- "8.2.1-ubuntu-jdk17",
2040
- "8.1.3",
2442
+ "8.1.4-jdk11",
2443
+ "8.1.3-ubuntu-jdk17",
2444
+ "8.1.4",
2041
2445
  "8.1.3-ubuntu-jdk11",
2446
+ "8.1.3-jdk17",
2042
2447
  "8.1.3-jdk11",
2043
- "8.1.1-jdk17",
2044
2448
  "8.1.1-ubuntu-jdk17",
2449
+ "8.1.3",
2450
+ "8.1.1-ubuntu-jdk11",
2451
+ "8.1.1-jdk17",
2452
+ "8.1.1-jdk11",
2453
+ "8.1.1",
2454
+ "8.1.0-ubuntu-jdk17",
2455
+ "8.1.0-ubuntu-jdk11",
2456
+ "8.1.0-jdk17",
2457
+ "8.0-ubuntu-jdk17",
2458
+ "8.1.0",
2459
+ "8.1.0-jdk11",
2460
+ "8.1",
2461
+ "8.0-jdk17",
2462
+ "8.0-jdk11",
2463
+ "8.0-ubuntu-jdk11",
2464
+ "8.0.4-ubuntu-jdk17",
2465
+ "8.0.4-ubuntu-jdk11",
2466
+ "8.0.4-jdk17",
2467
+ "8.0.4-jdk11",
2468
+ "8.0.3-jdk17",
2469
+ "8.0.3-ubuntu-jdk17",
2470
+ "8.0.3-ubuntu-jdk11",
2045
2471
  "8.0.2-ubuntu-jdk11",
2046
- "8.0.2",
2047
2472
  "8.0.2-ubuntu-jdk17",
2473
+ "8.0.3-jdk11",
2474
+ "8.0.3",
2048
2475
  "8.0.2-jdk17",
2049
2476
  "8.0.2-jdk11",
2477
+ "8.0.2",
2478
+ "8.0.1-ubuntu-jdk17",
2479
+ "8.0.1-ubuntu-jdk11",
2480
+ "8.0.1-jdk17",
2481
+ "8.0.0-ubuntu-jdk17",
2482
+ "8.0.1-jdk11",
2483
+ "8.0.1",
2484
+ "8.0.0-ubuntu-jdk11",
2485
+ "8.0.0-jdk11",
2486
+ "8.0.0-jdk17",
2487
+ "7-jdk11",
2488
+ "8.0.0",
2489
+ "8.0",
2490
+ "7-ubuntu-jdk11",
2491
+ "8",
2492
+ "7.20-ubuntu-jdk11",
2493
+ "7.20-jdk11",
2494
+ "7.20.3-ubuntu-jdk11",
2495
+ "7.20.3-jdk11",
2496
+ "7.20.3",
2497
+ "7.20.2-jdk11",
2498
+ "7.20.2-ubuntu-jdk11",
2499
+ "7.20.1-ubuntu-jdk11",
2500
+ "7.20.2",
2501
+ "7.20.1-jdk11",
2502
+ "7.20.1",
2503
+ "7.20.0-ubuntu-jdk11",
2504
+ "7.20.0-jdk11",
2505
+ "7.19-ubuntu-jdk11",
2506
+ "7.20.0",
2507
+ "7.20",
2508
+ "7.19-jdk11",
2509
+ "7.19.9-ubuntu-jdk11",
2510
+ "7.19.9-jdk11",
2511
+ "7.19.8",
2512
+ "7.19.8-ubuntu-jdk11",
2513
+ "7.19.8-jdk11",
2514
+ "7.19.9",
2515
+ "7.19.7-jdk11",
2516
+ "7.19.7-ubuntu-jdk11",
2517
+ "7.19.7",
2050
2518
  "7.19.6-ubuntu-jdk11",
2051
- "8.0.0-jdk17",
2052
- "8.0.0-ubuntu-jdk17",
2053
2519
  "7.19.6-jdk11",
2054
2520
  "7.19.6",
2055
- "7.20.1-ubuntu-jdk11",
2056
- "8.0.1-ubuntu-jdk17",
2057
- "8.0.1-jdk17",
2058
- "7.20.1",
2059
- "7.20.1-jdk11",
2521
+ "7.19.5-ubuntu-jdk11",
2522
+ "7.19.5-jdk11",
2523
+ "7.19.5",
2524
+ "7.19.4-ubuntu-jdk11",
2525
+ "7.19.4-jdk11",
2526
+ "7.19.4",
2527
+ "7.19.3-ubuntu-jdk11",
2528
+ "7.19.3-jdk11",
2529
+ "7.19.3",
2530
+ "7.19.2-ubuntu-jdk11",
2531
+ "7.19.2-jdk11",
2532
+ "7.19.29-ubuntu-jdk11",
2533
+ "7.19.29-jdk11",
2534
+ "7.19.29",
2535
+ "7.19.28-ubuntu-jdk11",
2536
+ "7.19.28-jdk11",
2537
+ "7.19.28",
2538
+ "7.19.27-ubuntu-jdk11",
2539
+ "7.19.27-jdk11",
2540
+ "7.19.27",
2541
+ "7.19.26-ubuntu-jdk11",
2542
+ "7.19.26-jdk11",
2543
+ "7.19.25-jdk11",
2544
+ "7.19.26",
2545
+ "7.19.25-ubuntu-jdk11",
2546
+ "7.19.25",
2547
+ "7.19.24-ubuntu-jdk11",
2548
+ "7.19.24-jdk11",
2549
+ "7.19.24",
2550
+ "7.19.23-ubuntu-jdk11",
2551
+ "7.19.14",
2552
+ "7.19.23-jdk11",
2553
+ "7.19.23",
2554
+ "latest",
2555
+ "7.19.22-jdk11",
2556
+ "7.19.22-ubuntu-jdk11",
2557
+ "7.19.22",
2558
+ "7.19.21-ubuntu-jdk11",
2559
+ "7.19.21-jdk11",
2560
+ "7.19.21",
2561
+ "7.19.20",
2562
+ "7.19.20-ubuntu-jdk11",
2563
+ "7.19.20-jdk11",
2564
+ "7.19.15-jdk11",
2565
+ "7.19.2",
2566
+ "7.19.1-ubuntu-jdk11",
2567
+ "7.19.19-jdk11",
2568
+ "7.19.19-ubuntu-jdk11",
2569
+ "7.19.1-jdk11",
2570
+ "7.19.19",
2571
+ "7.19.18-ubuntu-jdk11",
2572
+ "7.19.18-jdk11",
2573
+ "7.19.18",
2574
+ "7.19.17-ubuntu-jdk11",
2575
+ "7.19.17",
2576
+ "7.19.17-jdk11",
2577
+ "7.19.16-ubuntu-jdk11",
2578
+ "7.19.16-jdk11",
2579
+ "7.19.16",
2580
+ "7.19.14-ubuntu-jdk11",
2581
+ "7.19.14-jdk11",
2582
+ "7.19.15-ubuntu-jdk11",
2583
+ "7.19.15",
2584
+ "7.19.12-ubuntu-jdk11",
2585
+ "7.19.12-jdk11",
2586
+ "7.19.11-ubuntu-jdk11",
2587
+ "7.19.11-jdk11",
2588
+ "7.19.11",
2589
+ "7.19.10-jdk11",
2590
+ "7.19.12",
2591
+ "7.19.10-ubuntu-jdk11",
2592
+ "7.19",
2593
+ "7.19.10",
2594
+ "7.19.0-ubuntu-jdk11",
2595
+ "7",
2596
+ "7.19.0",
2597
+ "7.19.0-jdk11",
2598
+ "7.19.1",
2599
+ "jdk21",
2600
+ "9.1-jdk21",
2601
+ "ubuntu-jdk21",
2602
+ "9.1.1-ubuntu-jdk21",
2603
+ "9.1-ubuntu-jdk21",
2604
+ "9-ubuntu-jdk21",
2605
+ "9-jdk21",
2606
+ "9.1.1-ubi9",
2607
+ "ubi9",
2608
+ "ubi9-jdk21",
2609
+ "9.1.1-ubi9-jdk21",
2610
+ "9.1-jdk17",
2611
+ "jdk17",
2612
+ "ubuntu-jdk17",
2613
+ "9-jdk17",
2614
+ "9.1.1-ubuntu-jdk17",
2615
+ "9-ubuntu-jdk17",
2616
+ "9.1-ubuntu-jdk17",
2617
+ "ubi9-jdk17",
2618
+ "9.1.1-ubi9-jdk17",
2619
+ "9.0.1-ubi9-jdk17",
2620
+ "8.9.5-ubi9-jdk17",
2621
+ "8.9.5-ubi9",
2622
+ "8.9.1-ubi9-jdk17",
2623
+ "8.9.1-ubi9",
2624
+ "8.7.2-ubi9-jdk17",
2625
+ "8.7.2-ubi9",
2626
+ "8.6.0-ubi9-jdk17",
2627
+ "8.6.0-ubi9",
2628
+ "8.5.14-ubi9-jdk17",
2629
+ "8.5.14-ubi9",
2630
+ "9.2.0-m07-ubuntu-jdk21",
2631
+ "9.2.0-m07-jdk17",
2632
+ "9.2.0-m07",
2633
+ "9.2.0-m07-ubuntu-jdk17",
2634
+ "9.2.0-m07-jdk21",
2635
+ "9.2.0-m07-ubi9",
2636
+ "9.2.0-m07-ubi9-jdk17",
2637
+ "9.2.0-m07-ubi9-jdk21",
2638
+ "9.2.0-m05-jdk17",
2639
+ "9.2.0-m05",
2640
+ "9.2.0-m05-jdk21",
2641
+ "9.2.0-m05-ubuntu-jdk21",
2642
+ "9.2.0-m05-ubuntu-jdk17",
2643
+ "9.2.0-m05-ubi9",
2644
+ "9.2.0-m05-ubi9-jdk21",
2645
+ "9.2.0-m05-ubi9-jdk17",
2646
+ "9.2.0-m04-jdk21",
2647
+ "9.2.0-m04-jdk17",
2648
+ "9.2.0-m04-ubuntu-jdk17",
2649
+ "9.2.0-m04-ubuntu-jdk21",
2650
+ "9.2.0-m04",
2651
+ "9.2.0-m04-ubi9-jdk17",
2652
+ "9.2.0-m04-ubi9-jdk21",
2653
+ "9.2.0-m04-ubi9",
2654
+ "9.1.0-rc1-ubi9-jdk21",
2655
+ "9.1.0-rc1-ubi9",
2656
+ "9.1.0-rc1-jdk17",
2657
+ "9.1.0-rc1",
2658
+ "9.1.0-rc1-ubuntu-jdk17",
2659
+ "9.1.0-rc1-ubi9-jdk17",
2660
+ "9.1.0-beta3",
2661
+ "9.1.0-beta3-jdk17",
2662
+ "9.1.0-beta3-ubuntu-jdk17",
2663
+ "9.1.0-beta3-ubi9",
2664
+ "9.1.0-beta3-ubi9-jdk17",
2665
+ "9.1.0-m85-ubuntu-jdk17",
2666
+ "9.1.0-m85",
2667
+ "9.1.0-m85-jdk17",
2668
+ "9.1.0-m85-ubi9-jdk17",
2669
+ "9.1.0-m85-ubi9",
2670
+ "9.1.0-m75-jdk17",
2671
+ "9.1.0-m75",
2672
+ "9.1.0-m75-ubuntu-jdk17",
2673
+ "9.1.0-m75-ubi9",
2674
+ "9.1.0-m75-ubi9-jdk17",
2675
+ "9.1.0-m69-ubuntu-jdk17",
2676
+ "9.1.0-m69-jdk17",
2677
+ "9.1.0-m69",
2678
+ "9.1.0-m69-ubi9-jdk17",
2679
+ "9.1.0-m69-ubi9",
2680
+ "9.0.0-rc2-ubi9-jdk17",
2681
+ "9.0.0-rc2",
2682
+ "9.0.0-rc2-jdk17",
2683
+ "9.0.0-rc2-ubi9",
2684
+ "9.0.0-rc2-ubuntu-jdk17",
2685
+ "9.0.0-rc1",
2686
+ "9.0.0-rc1-ubuntu-jdk17",
2687
+ "9.0.0-rc1-jdk17",
2688
+ "9.0.0-rc1-ubi9-jdk17",
2689
+ "9.0.0-rc1-ubi9",
2690
+ "ubuntu-jdk11",
2691
+ "jdk11",
2692
+ "9.0.0-beta3-ubi9-jdk17",
2693
+ "9.0.0-beta3-ubuntu-jdk17",
2694
+ "9.0.0-beta3-ubi9",
2695
+ "9.0.0-beta3-jdk17",
2696
+ "9.0.0-beta3",
2697
+ "9.0.0-beta2-jdk17",
2698
+ "9.0.0-beta2-ubi9",
2699
+ "9.0.0-beta2-ubi9-jdk17",
2700
+ "9.0.0-beta2-ubuntu-jdk17",
2701
+ "9.0.0-beta2",
2702
+ "9.0.0-m132",
2703
+ "9.0.0-m132-ubi9",
2704
+ "9.0.0-m132-ubi9-jdk17",
2705
+ "9.0.0-m132-ubuntu-jdk17",
2706
+ "9.0.0-m132-jdk17",
2707
+ "9.0.0-m123-ubuntu-jdk17",
2708
+ "9.0.0-m123-ubuntu-jdk11",
2709
+ "9.0.0-m123-ubi9-jdk17",
2710
+ "9.0.0-m123-ubi9",
2711
+ "9.0.0-m123-jdk17",
2712
+ "9.0.0-m123-jdk11",
2713
+ "9.0.0-m123",
2714
+ "9.0.0-m116-ubi9-jdk17",
2715
+ "9.0.0-m116-ubi9",
2716
+ "9.0.0-m116-ubuntu-jdk11",
2717
+ "9.0.0-m116-jdk11",
2718
+ "9.0.0-m116-jdk17",
2719
+ "9.0.0-m116-ubuntu-jdk17",
2720
+ "9.0.0-m116",
2721
+ "9.0.0-m109-ubuntu-jdk11",
2722
+ "9.0.0-m109-jdk11",
2723
+ "9.0.0-m109-ubi9-jdk17",
2724
+ "9.0.0-m109-ubi9",
2725
+ "9.0.0-m109",
2726
+ "9.0.0-m105",
2727
+ "9.0.0-m105-ubi9-jdk17",
2728
+ "9.0.0-m105-ubi9",
2729
+ "9.0.0-m97-jdk11",
2730
+ "9.0.0-m97-ubuntu-jdk17",
2731
+ "9.0.0-m97-ubuntu-jdk11",
2732
+ "9.0.0-m97-jdk17",
2733
+ "9.0.0-m97-ubi9",
2734
+ "9.0.0-m97-ubi9-jdk17",
2735
+ "9.0.0-m97",
2736
+ "9.0.0-m92-ubuntu-jdk11",
2737
+ "9.0.0-m92-jdk11",
2738
+ "9.0.0-m92",
2739
+ "9.0.0-m92-ubuntu-jdk17",
2740
+ "9.0.0-m92-jdk17",
2741
+ "9.0.0-m92-ubi9",
2742
+ "9.0.0-m92-ubi9-jdk17",
2060
2743
  "9.0.0-m81-jdk17",
2061
2744
  "9.0.0-m81-ubuntu-jdk17",
2062
2745
  "9.0.0-m81-ubi9",
@@ -6740,10 +7423,6 @@ var bitbucket = [
6740
7423
  ];
6741
7424
  var mysql = [
6742
7425
  "latest",
6743
- "8.0.37-debian",
6744
- "8.0.37-bookworm",
6745
- "8.0-debian",
6746
- "8.0-bookworm",
6747
7426
  "oraclelinux9",
6748
7427
  "oracle",
6749
7428
  "lts-oraclelinux9",
@@ -6752,21 +7431,67 @@ var mysql = [
6752
7431
  "innovation-oraclelinux9",
6753
7432
  "innovation-oracle",
6754
7433
  "innovation",
6755
- "8.4.0-oraclelinux9",
6756
- "8.4.0-oracle",
6757
- "8.4.0",
7434
+ "9.1.0-oraclelinux9",
7435
+ "9.1.0-oracle",
7436
+ "9.1.0",
7437
+ "9.1-oraclelinux9",
7438
+ "9.1-oracle",
7439
+ "9.1",
7440
+ "9-oraclelinux9",
7441
+ "9-oracle",
7442
+ "9",
7443
+ "8.4.3-oraclelinux9",
7444
+ "8.4.3-oracle",
7445
+ "8.4.3",
6758
7446
  "8.4-oraclelinux9",
6759
7447
  "8.4-oracle",
6760
7448
  "8.4",
6761
- "8.0.37-oraclelinux9",
6762
- "8.0.37-oracle",
6763
- "8.0.37",
7449
+ "8.0.40-oraclelinux9",
7450
+ "8.0.40-oracle",
7451
+ "8.0.40",
6764
7452
  "8.0-oraclelinux9",
6765
7453
  "8.0-oracle",
6766
7454
  "8.0",
6767
7455
  "8-oraclelinux9",
6768
7456
  "8-oracle",
6769
7457
  "8",
7458
+ "8.0.40-debian",
7459
+ "8.0.40-bookworm",
7460
+ "8.0-debian",
7461
+ "8.0-bookworm",
7462
+ "8.0.39-debian",
7463
+ "8.0.39-bookworm",
7464
+ "9.0.1-oraclelinux9",
7465
+ "9.0.1-oracle",
7466
+ "9.0.1",
7467
+ "9.0-oraclelinux9",
7468
+ "9.0-oracle",
7469
+ "9.0",
7470
+ "8.4.2-oraclelinux9",
7471
+ "8.4.2-oracle",
7472
+ "8.4.2",
7473
+ "8.0.39-oraclelinux9",
7474
+ "8.0.39-oracle",
7475
+ "8.0.39",
7476
+ "9.0.0-oraclelinux9",
7477
+ "9.0.0-oracle",
7478
+ "9.0.0",
7479
+ "8.4.1-oraclelinux9",
7480
+ "8.4.1-oracle",
7481
+ "8.4.1",
7482
+ "8.0.38-oraclelinux9",
7483
+ "8.0.38-oracle",
7484
+ "8.0.38",
7485
+ "8.0.38-debian",
7486
+ "8.0.38-bookworm",
7487
+ "8.4.0-oraclelinux9",
7488
+ "8.4.0-oracle",
7489
+ "8.4.0",
7490
+ "8.0.37-oraclelinux9",
7491
+ "8.0.37-oracle",
7492
+ "8.0.37",
7493
+ "8.0.37-debian",
7494
+ "8.0.37-bookworm",
6770
7495
  "oraclelinux8",
6771
7496
  "lts-oraclelinux8",
6772
7497
  "8.4.0-oraclelinux8",
@@ -6979,82 +7704,184 @@ var mysql = [
6979
7704
  ];
6980
7705
  var postgresql = [
6981
7706
  "latest",
6982
- "alpine3.20",
6983
- "alpine",
6984
- "16.3-alpine3.20",
6985
- "16.3-alpine",
6986
- "16-alpine3.20",
6987
- "16-alpine",
6988
- "15.7-alpine3.20",
6989
- "15.7-alpine",
7707
+ "12.21-bookworm",
7708
+ "12.21",
7709
+ "12-bookworm",
7710
+ "12",
7711
+ "15.9-bullseye",
7712
+ "15.9-bookworm",
7713
+ "15.9-alpine3.20",
7714
+ "15.9-alpine3.19",
7715
+ "15.9-alpine",
7716
+ "15.9",
7717
+ "15-bullseye",
7718
+ "15-bookworm",
6990
7719
  "15-alpine3.20",
7720
+ "15-alpine3.19",
6991
7721
  "15-alpine",
6992
- "14.12-alpine3.20",
6993
- "14.12-alpine",
7722
+ "15",
7723
+ "14.14-bullseye",
7724
+ "14.14-bookworm",
7725
+ "14.14-alpine3.20",
7726
+ "14.14-alpine3.19",
7727
+ "14.14-alpine",
7728
+ "14.14",
7729
+ "14-bullseye",
7730
+ "14-bookworm",
6994
7731
  "14-alpine3.20",
7732
+ "14-alpine3.19",
6995
7733
  "14-alpine",
6996
- "13.15-alpine3.20",
6997
- "13.15-alpine",
7734
+ "14",
7735
+ "13.17-bullseye",
7736
+ "13.17-bookworm",
7737
+ "13.17-alpine3.20",
7738
+ "13.17-alpine3.19",
7739
+ "13.17-alpine",
7740
+ "13.17",
7741
+ "13-bullseye",
7742
+ "13-bookworm",
6998
7743
  "13-alpine3.20",
7744
+ "13-alpine3.19",
6999
7745
  "13-alpine",
7000
- "12.19-alpine3.20",
7001
- "12.19-alpine",
7746
+ "13",
7747
+ "12.21-bullseye",
7748
+ "12.21-alpine3.20",
7749
+ "12.21-alpine3.19",
7750
+ "12.21-alpine",
7751
+ "12-bullseye",
7002
7752
  "12-alpine3.20",
7753
+ "12-alpine3.19",
7003
7754
  "12-alpine",
7004
- "13.15-bullseye",
7005
- "13.15-bookworm",
7006
- "13.15",
7007
- "13-bullseye",
7008
- "13-bookworm",
7009
- "13",
7755
+ "bullseye",
7756
+ "bookworm",
7757
+ "alpine3.20",
7758
+ "alpine3.19",
7759
+ "alpine",
7760
+ "17.1-bullseye",
7761
+ "17.1-bookworm",
7762
+ "17.1-alpine3.20",
7763
+ "17.1-alpine3.19",
7764
+ "17.1-alpine",
7765
+ "17.1",
7766
+ "17-bullseye",
7767
+ "17-bookworm",
7768
+ "17-alpine3.20",
7769
+ "17-alpine3.19",
7770
+ "17-alpine",
7771
+ "17",
7772
+ "16.5-bullseye",
7773
+ "16.5-bookworm",
7774
+ "16.5-alpine3.20",
7775
+ "16.5-alpine3.19",
7776
+ "16.5-alpine",
7777
+ "16.5",
7778
+ "16-bullseye",
7779
+ "16-bookworm",
7780
+ "16-alpine3.20",
7781
+ "16-alpine3.19",
7782
+ "16-alpine",
7783
+ "16",
7784
+ "14.13-alpine3.20",
7785
+ "14.13-alpine",
7786
+ "13.16-alpine3.20",
7787
+ "13.16-alpine",
7788
+ "12.20-alpine3.20",
7789
+ "12.20-alpine",
7790
+ "16.4-alpine3.20",
7791
+ "16.4-alpine",
7792
+ "15.8-alpine3.20",
7793
+ "15.8-alpine",
7794
+ "17.0-alpine3.20",
7795
+ "17.0-alpine",
7796
+ "14.13-bullseye",
7797
+ "14.13-bookworm",
7798
+ "14.13-alpine3.19",
7799
+ "14.13",
7800
+ "13.16-bullseye",
7801
+ "13.16-bookworm",
7802
+ "13.16-alpine3.19",
7803
+ "13.16",
7804
+ "12.20-bullseye",
7805
+ "12.20-bookworm",
7806
+ "12.20-alpine3.19",
7807
+ "12.20",
7808
+ "17.0-bullseye",
7809
+ "17.0-bookworm",
7810
+ "17.0-alpine3.19",
7811
+ "17.0",
7812
+ "16.4-bullseye",
7813
+ "16.4-bookworm",
7814
+ "16.4-alpine3.19",
7815
+ "16.4",
7816
+ "15.8-bullseye",
7817
+ "15.8-bookworm",
7818
+ "15.8-alpine3.19",
7819
+ "15.8",
7820
+ "17rc1-alpine3.20",
7821
+ "17rc1-alpine",
7822
+ "17rc1-alpine3.19",
7823
+ "17rc1-bullseye",
7824
+ "17rc1-bookworm",
7825
+ "17rc1",
7826
+ "17beta3-bullseye",
7827
+ "17beta3-bookworm",
7828
+ "17beta3",
7829
+ "17beta3-alpine3.20",
7830
+ "17beta3-alpine3.19",
7831
+ "17beta3-alpine",
7010
7832
  "12.19-bullseye",
7011
7833
  "12.19-bookworm",
7012
7834
  "12.19",
7013
- "12-bullseye",
7014
- "12-bookworm",
7015
- "12",
7016
7835
  "14.12-bullseye",
7017
- "14.12-bookworm",
7018
- "14.12",
7019
- "14-bullseye",
7020
- "14-bookworm",
7021
- "14",
7022
- "bullseye",
7023
- "16.3-bullseye",
7024
- "16-bullseye",
7836
+ "13.15-bullseye",
7837
+ "13.15-bookworm",
7838
+ "13.15",
7025
7839
  "15.7-bullseye",
7026
7840
  "15.7-bookworm",
7027
7841
  "15.7",
7028
- "15-bullseye",
7029
- "15-bookworm",
7030
- "15",
7031
- "bookworm",
7842
+ "14.12-bookworm",
7843
+ "14.12",
7844
+ "16.3-bullseye",
7032
7845
  "16.3-bookworm",
7033
7846
  "16.3",
7034
- "16-bookworm",
7035
- "16",
7847
+ "17beta2-bullseye",
7848
+ "17beta2-bookworm",
7849
+ "17beta2",
7850
+ "16.3-alpine3.20",
7851
+ "16.3-alpine3.19",
7852
+ "16.3-alpine",
7853
+ "15.7-alpine3.20",
7854
+ "15.7-alpine3.19",
7855
+ "15.7-alpine",
7856
+ "14.12-alpine3.20",
7857
+ "14.12-alpine3.19",
7858
+ "14.12-alpine",
7859
+ "13.15-alpine3.20",
7860
+ "13.15-alpine3.19",
7861
+ "13.15-alpine",
7862
+ "12.19-alpine3.20",
7036
7863
  "12.19-alpine3.19",
7864
+ "12.19-alpine",
7865
+ "17beta2-alpine3.20",
7866
+ "17beta2-alpine3.19",
7867
+ "17beta2-alpine",
7868
+ "17beta1-alpine3.20",
7869
+ "17beta1-alpine",
7870
+ "17beta1-alpine3.19",
7871
+ "17beta1-bullseye",
7872
+ "17beta1-bookworm",
7873
+ "17beta1",
7037
7874
  "12.19-alpine3.18",
7038
- "12-alpine3.19",
7039
7875
  "12-alpine3.18",
7040
7876
  "alpine3.18",
7041
7877
  "16.3-alpine3.18",
7042
7878
  "16-alpine3.18",
7043
- "15.7-alpine3.19",
7044
7879
  "15.7-alpine3.18",
7045
- "15-alpine3.19",
7046
7880
  "15-alpine3.18",
7047
- "14.12-alpine3.19",
7048
7881
  "14.12-alpine3.18",
7049
- "14-alpine3.19",
7050
7882
  "14-alpine3.18",
7051
- "13.15-alpine3.19",
7052
7883
  "13.15-alpine3.18",
7053
- "13-alpine3.19",
7054
7884
  "13-alpine3.18",
7055
- "alpine3.19",
7056
- "16.3-alpine3.19",
7057
- "16-alpine3.19",
7058
7885
  "13.14-bullseye",
7059
7886
  "12.18-bullseye",
7060
7887
  "12.18-bookworm",
@@ -7916,6 +8743,9 @@ var mssql = [
7916
8743
  "2017-CU30-ubuntu-18.04",
7917
8744
  "2017-CU31-GDR1-ubuntu-18.04",
7918
8745
  "2017-CU31-GDR2-ubuntu-18.04",
8746
+ "2017-CU31-GDR5-ubuntu-18.04",
8747
+ "2017-CU31-GDR6-ubuntu-18.04",
8748
+ "2017-CU31-GDR7-ubuntu-18.04",
7919
8749
  "2017-CU31-ubuntu-18.04",
7920
8750
  "2017-CU4-ubuntu",
7921
8751
  "2017-CU5-ubuntu",
@@ -7981,6 +8811,12 @@ var mssql = [
7981
8811
  "2019-CU25-GDR1-ubuntu-20.04",
7982
8812
  "2019-CU25-ubuntu-20.04",
7983
8813
  "2019-CU26-ubuntu-20.04",
8814
+ "2019-CU27-ubuntu-20.04",
8815
+ "2019-CU28-GDR1-ubuntu-20.04",
8816
+ "2019-CU28-GDR2-ubuntu-20.04",
8817
+ "2019-CU28-ubuntu-20.04",
8818
+ "2019-CU29-GDR1-ubuntu-20.04",
8819
+ "2019-CU29-ubuntu-20.04",
7984
8820
  "2019-CU3-ubuntu-16.04",
7985
8821
  "2019-CU3-ubuntu-18.04",
7986
8822
  "2019-CU4-ubuntu-16.04",
@@ -8018,6 +8854,18 @@ var mssql = [
8018
8854
  "2022-CU12-ubuntu-22.04",
8019
8855
  "2022-CU13-ubuntu-20.04",
8020
8856
  "2022-CU13-ubuntu-22.04",
8857
+ "2022-CU14-GDR1-ubuntu-20.04",
8858
+ "2022-CU14-GDR1-ubuntu-22.04",
8859
+ "2022-CU14-ubuntu-20.04",
8860
+ "2022-CU14-ubuntu-22.04",
8861
+ "2022-CU15-GDR1-ubuntu-20.04",
8862
+ "2022-CU15-GDR1-ubuntu-22.04",
8863
+ "2022-CU15-GDR2-ubuntu-20.04",
8864
+ "2022-CU15-GDR2-ubuntu-22.04",
8865
+ "2022-CU15-ubuntu-20.04",
8866
+ "2022-CU15-ubuntu-22.04",
8867
+ "2022-CU16-ubuntu-20.04",
8868
+ "2022-CU16-ubuntu-22.04",
8021
8869
  "2022-CU3-ubuntu-20.04",
8022
8870
  "2022-CU4-ubuntu-20.04",
8023
8871
  "2022-CU5-ubuntu-20.04",
@@ -8037,7 +8885,7 @@ var mssql = [
8037
8885
  "latest",
8038
8886
  "latest-ubuntu"
8039
8887
  ];
8040
- var versions = {
8888
+ var versions$1 = {
8041
8889
  jira: jira,
8042
8890
  confluence: confluence,
8043
8891
  bamboo: bamboo,
@@ -8047,43 +8895,6 @@ var versions = {
8047
8895
  mssql: mssql
8048
8896
  };
8049
8897
 
8050
- const ActionHandler = async (program, { action, errorHandler }, options) => {
8051
- const ops = options || program.opts();
8052
- await new Promise((resolve, reject) => {
8053
- let errorMessage = '';
8054
- asyncExitHook(async (code) => {
8055
- try {
8056
- if (code !== 0) {
8057
- await errorHandler(ops).catch(() => null);
8058
- }
8059
- if (errorMessage) {
8060
- throw new Error(errorMessage.trim());
8061
- }
8062
- else {
8063
- resolve();
8064
- }
8065
- }
8066
- catch (err) {
8067
- const message = err instanceof Error ? err.message : err;
8068
- reject(message);
8069
- }
8070
- }, {
8071
- wait: 30 * 1000
8072
- });
8073
- action(ops).catch(err => {
8074
- if (err instanceof z.ZodError) {
8075
- err.issues.forEach(issue => {
8076
- errorMessage += `Unable to parse option ${issue.path.join(',')}: ${issue.message}\n`;
8077
- });
8078
- }
8079
- else if (err instanceof Error || typeof err === 'string') {
8080
- errorMessage = err.toString();
8081
- }
8082
- gracefulExit(1);
8083
- });
8084
- }).catch(message => program.error(message));
8085
- };
8086
-
8087
8898
  const SupportedDatabaseEngines = z.enum([
8088
8899
  'postgresql',
8089
8900
  'mysql',
@@ -8109,19 +8920,19 @@ const DatabaseOptions = z.object({
8109
8920
  });
8110
8921
  const PostgreSQLOptions = DatabaseOptions.extend({
8111
8922
  name: SupportedDatabaseEngines.refine(item => item === SupportedDatabaseEngines.Values.postgresql).default(SupportedDatabaseEngines.Values.postgresql),
8112
- tag: z.string().refine(item => versions[SupportedDatabaseEngines.Values.postgresql].includes(item)).default('latest'),
8923
+ tag: z.string().refine(item => versions$1[SupportedDatabaseEngines.Values.postgresql].includes(item)).default('latest'),
8113
8924
  port: z.number().or(z.string().transform(Number).refine(item => !isNaN(item))).default(5432),
8114
8925
  driver: z.string().refine(item => item === 'org.postgresql.Driver').default('org.postgresql.Driver')
8115
8926
  });
8116
8927
  const MySQLOptions = DatabaseOptions.extend({
8117
8928
  name: SupportedDatabaseEngines.refine(item => item === SupportedDatabaseEngines.Values.mysql).default(SupportedDatabaseEngines.Values.mysql),
8118
- tag: z.string().refine(item => versions[SupportedDatabaseEngines.Values.mysql].includes(item)).default('latest'),
8929
+ tag: z.string().refine(item => versions$1[SupportedDatabaseEngines.Values.mysql].includes(item)).default('latest'),
8119
8930
  port: z.number().or(z.string().transform(Number).refine(item => !isNaN(item))).default(3306),
8120
8931
  driver: z.string().refine(item => item === 'com.mysql.jdbc.Driver').default('com.mysql.jdbc.Driver')
8121
8932
  });
8122
8933
  const MSSQLOptions = DatabaseOptions.extend({
8123
8934
  name: SupportedDatabaseEngines.refine(item => item === SupportedDatabaseEngines.Values.mssql).default(SupportedDatabaseEngines.Values.mssql),
8124
- tag: z.string().refine(item => versions[SupportedDatabaseEngines.Values.mssql].includes(item)).default('latest'),
8935
+ tag: z.string().refine(item => versions$1[SupportedDatabaseEngines.Values.mssql].includes(item)).default('latest'),
8125
8936
  edition: SupportedMSSQLEditions.default('Developer'),
8126
8937
  port: z.number().or(z.string().transform(Number).refine(item => !isNaN(item))).default(1433),
8127
8938
  username: z.string().refine(item => item === 'sa').default('sa'),
@@ -8199,6 +9010,7 @@ class Base {
8199
9010
  else {
8200
9011
  const configAsString = dump(this.getDockerComposeConfig());
8201
9012
  await stop({
9013
+ cwd: cwd(),
8202
9014
  configAsString,
8203
9015
  log: true
8204
9016
  });
@@ -8208,7 +9020,6 @@ class Base {
8208
9020
  // ------------------------------------------------------------------------------------------ Private Methods
8209
9021
  getDockerComposeConfig() {
8210
9022
  return {
8211
- version: '3.8',
8212
9023
  services: {
8213
9024
  'db': this.getService()
8214
9025
  },
@@ -8220,6 +9031,7 @@ class Base {
8220
9031
  async up() {
8221
9032
  const configAsString = dump(this.getDockerComposeConfig());
8222
9033
  return upAll({
9034
+ cwd: cwd(),
8223
9035
  configAsString,
8224
9036
  log: true
8225
9037
  });
@@ -8227,6 +9039,7 @@ class Base {
8227
9039
  async down() {
8228
9040
  const configAsString = dump(this.getDockerComposeConfig());
8229
9041
  return downAll({
9042
+ cwd: cwd(),
8230
9043
  configAsString,
8231
9044
  commandOptions: ['-v', '--remove-orphans', '--rmi', 'local'],
8232
9045
  log: true
@@ -8237,8 +9050,16 @@ class Base {
8237
9050
  }
8238
9051
  async getServiceState() {
8239
9052
  const configAsString = dump(this.getDockerComposeConfig());
8240
- const result = await ps({ configAsString, log: false, commandOptions: ['--all'] });
8241
- return result.data.services.find(item => item.name.includes(this.options.name));
9053
+ const result = await ps({
9054
+ cwd: cwd(),
9055
+ configAsString,
9056
+ commandOptions: ['--all'],
9057
+ log: false
9058
+ });
9059
+ return result.data.services.find(item => {
9060
+ const [, service] = item.name.split('-');
9061
+ return service === this.options.name;
9062
+ });
8242
9063
  }
8243
9064
  async showDockerLogs(service) {
8244
9065
  return new Promise((resolve, reject) => {
@@ -8347,17 +9168,30 @@ class Postgres extends Base {
8347
9168
  };
8348
9169
  }
8349
9170
 
8350
- const getDatabaseEngine = (options) => {
9171
+ const getDatabaseEngine = (options, tag) => {
8351
9172
  switch (options.name) {
8352
9173
  case SupportedDatabaseEngines.Values.postgresql:
8353
- return new Postgres(PostgreSQLOptions.parse(options));
9174
+ return new Postgres(PostgreSQLOptions.parse({ ...options, tag }));
8354
9175
  case SupportedDatabaseEngines.Values.mysql:
8355
- return new MySQL(MySQLOptions.parse(options));
9176
+ return new MySQL(MySQLOptions.parse({ ...options, tag }));
8356
9177
  case SupportedDatabaseEngines.Values.mssql:
8357
- return new MSSQL(MSSQLOptions.parse(options));
9178
+ return new MSSQL(MSSQLOptions.parse({ ...options, tag }));
8358
9179
  }
8359
9180
  };
8360
9181
 
9182
+ const toAbsolutePath = (relativePath) => {
9183
+ const [, filePath] = process.argv;
9184
+ const executableFileDir = dirname(realpathSync(filePath));
9185
+ const basedir = executableFileDir.substring(0, executableFileDir.indexOf('dcdx') + 4);
9186
+ return join(basedir, relativePath.replaceAll('../', ''));
9187
+ };
9188
+
9189
+ const getVersions = () => {
9190
+ const content = readFileSync(toAbsolutePath('../../assets/versions.json'), 'utf-8');
9191
+ const versions = JSON.parse(content);
9192
+ return versions;
9193
+ };
9194
+
8361
9195
  const getZodDefault = (schema, key) => {
8362
9196
  const defaults = getZodDefaults(schema);
8363
9197
  return defaults[key];
@@ -8375,6 +9209,7 @@ const getZodDefaults = (schema) => {
8375
9209
  };
8376
9210
 
8377
9211
  const program = new Command$1();
9212
+ const versions = getVersions();
8378
9213
  const Command = () => {
8379
9214
  let instance = null;
8380
9215
  return {
@@ -8439,4 +9274,4 @@ process.on('SIGINT', () => {
8439
9274
  console.log(`Received term signal, trying to stop gracefully 💪`);
8440
9275
  gracefulExit();
8441
9276
  });
8442
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWJhc2UuanMiLCJzb3VyY2VzIjpbIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvQWN0aW9uSGFuZGxlci5qcyIsIi4uLy4uL2Rpc3Qvc3JjL3R5cGVzL0RhdGFiYXNlLmpzIiwiLi4vLi4vZGlzdC9zcmMvaGVscGVycy9uZXR3b3JrLmpzIiwiLi4vLi4vZGlzdC9zcmMvZGF0YWJhc2VzL2Jhc2UuanMiLCIuLi8uLi9kaXN0L3NyYy9kYXRhYmFzZXMvbXNzcWwuanMiLCIuLi8uLi9kaXN0L3NyYy9kYXRhYmFzZXMvbXlzcWwuanMiLCIuLi8uLi9kaXN0L3NyYy9kYXRhYmFzZXMvcG9zdGdyZXMuanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL2dldERhdGFiYXNlRW5naW5lLmpzIiwiLi4vLi4vZGlzdC9zcmMvaGVscGVycy9nZXRab2REZWZhdWx0cy5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2NvbW1hbmRzL2RhdGFiYXNlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFzeW5jRXhpdEhvb2ssIGdyYWNlZnVsRXhpdCB9IGZyb20gJ2V4aXQtaG9vayc7XG5pbXBvcnQgeyB6IH0gZnJvbSAnem9kJztcbmV4cG9ydCBjb25zdCBBY3Rpb25IYW5kbGVyID0gYXN5bmMgKHByb2dyYW0sIHsgYWN0aW9uLCBlcnJvckhhbmRsZXIgfSwgb3B0aW9ucykgPT4ge1xuICAgIGNvbnN0IG9wcyA9IG9wdGlvbnMgfHwgcHJvZ3JhbS5vcHRzKCk7XG4gICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBsZXQgZXJyb3JNZXNzYWdlID0gJyc7XG4gICAgICAgIGFzeW5jRXhpdEhvb2soYXN5bmMgKGNvZGUpID0+IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaWYgKGNvZGUgIT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgZXJyb3JIYW5kbGVyKG9wcykuY2F0Y2goKCkgPT4gbnVsbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChlcnJvck1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yTWVzc2FnZS50cmltKCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6IGVycjtcbiAgICAgICAgICAgICAgICByZWplY3QobWVzc2FnZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIHdhaXQ6IDMwICogMTAwMFxuICAgICAgICB9KTtcbiAgICAgICAgYWN0aW9uKG9wcykuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiB6LlpvZEVycm9yKSB7XG4gICAgICAgICAgICAgICAgZXJyLmlzc3Vlcy5mb3JFYWNoKGlzc3VlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlICs9IGBVbmFibGUgdG8gcGFyc2Ugb3B0aW9uICR7aXNzdWUucGF0aC5qb2luKCcsJyl9OiAke2lzc3VlLm1lc3NhZ2V9XFxuYDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGVyciBpbnN0YW5jZW9mIEVycm9yIHx8IHR5cGVvZiBlcnIgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gZXJyLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBncmFjZWZ1bEV4aXQoMSk7XG4gICAgICAgIH0pO1xuICAgIH0pLmNhdGNoKG1lc3NhZ2UgPT4gcHJvZ3JhbS5lcnJvcihtZXNzYWdlKSk7XG59O1xuIiwiaW1wb3J0IHsgeiB9IGZyb20gJ3pvZCc7XG5pbXBvcnQgdmVyc2lvbnMgZnJvbSAnLi4vLi4vYXNzZXRzL3ZlcnNpb25zLmpzb24nO1xuZXhwb3J0IGNvbnN0IFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcyA9IHouZW51bShbXG4gICAgJ3Bvc3RncmVzcWwnLFxuICAgICdteXNxbCcsXG4gICAgJ21zc3FsJ1xuXSk7XG5leHBvcnQgY29uc3QgU3VwcG9ydGVkTVNTUUxFZGl0aW9ucyA9IHouZW51bShbXG4gICAgJ0RldmVsb3BlcicsXG4gICAgJ0V4cHJlc3MnLFxuICAgICdTdGFuZGFyZCcsXG4gICAgJ0VudGVycHJpc2UnLFxuICAgICdFbnRlcnByaXNlQ29yZSdcbl0pO1xuZXhwb3J0IGNvbnN0IERhdGFiYXNlT3B0aW9ucyA9IHoub2JqZWN0KHtcbiAgICBuYW1lOiBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMsXG4gICAgcG9ydDogei5udW1iZXIoKS5vcih6LnN0cmluZygpLnRyYW5zZm9ybShOdW1iZXIpLnJlZmluZShpdGVtID0+ICFpc05hTihpdGVtKSkpLFxuICAgIGRhdGFiYXNlOiB6LnN0cmluZygpLmRlZmF1bHQoJ2RjZHgnKSxcbiAgICB1c2VybmFtZTogei5zdHJpbmcoKS5kZWZhdWx0KCdkY2R4JyksXG4gICAgcGFzc3dvcmQ6IHouc3RyaW5nKCkuZGVmYXVsdCgnZGNkeCcpLFxuICAgIGNsZWFuOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgICBwcnVuZTogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gICAgdmVyYm9zZTogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gICAgZHJpdmVyOiB6LnN0cmluZygpXG59KTtcbmV4cG9ydCBjb25zdCBQb3N0Z3JlU1FMT3B0aW9ucyA9IERhdGFiYXNlT3B0aW9ucy5leHRlbmQoe1xuICAgIG5hbWU6IFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5yZWZpbmUoaXRlbSA9PiBpdGVtID09PSBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLnBvc3RncmVzcWwpLmRlZmF1bHQoU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5wb3N0Z3Jlc3FsKSxcbiAgICB0YWc6IHouc3RyaW5nKCkucmVmaW5lKGl0ZW0gPT4gdmVyc2lvbnNbU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5wb3N0Z3Jlc3FsXS5pbmNsdWRlcyhpdGVtKSkuZGVmYXVsdCgnbGF0ZXN0JyksXG4gICAgcG9ydDogei5udW1iZXIoKS5vcih6LnN0cmluZygpLnRyYW5zZm9ybShOdW1iZXIpLnJlZmluZShpdGVtID0+ICFpc05hTihpdGVtKSkpLmRlZmF1bHQoNTQzMiksXG4gICAgZHJpdmVyOiB6LnN0cmluZygpLnJlZmluZShpdGVtID0+IGl0ZW0gPT09ICdvcmcucG9zdGdyZXNxbC5Ecml2ZXInKS5kZWZhdWx0KCdvcmcucG9zdGdyZXNxbC5Ecml2ZXInKVxufSk7XG5leHBvcnQgY29uc3QgTXlTUUxPcHRpb25zID0gRGF0YWJhc2VPcHRpb25zLmV4dGVuZCh7XG4gICAgbmFtZTogU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLnJlZmluZShpdGVtID0+IGl0ZW0gPT09IFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMubXlzcWwpLmRlZmF1bHQoU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5teXNxbCksXG4gICAgdGFnOiB6LnN0cmluZygpLnJlZmluZShpdGVtID0+IHZlcnNpb25zW1N1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMubXlzcWxdLmluY2x1ZGVzKGl0ZW0pKS5kZWZhdWx0KCdsYXRlc3QnKSxcbiAgICBwb3J0OiB6Lm51bWJlcigpLm9yKHouc3RyaW5nKCkudHJhbnNmb3JtKE51bWJlcikucmVmaW5lKGl0ZW0gPT4gIWlzTmFOKGl0ZW0pKSkuZGVmYXVsdCgzMzA2KSxcbiAgICBkcml2ZXI6IHouc3RyaW5nKCkucmVmaW5lKGl0ZW0gPT4gaXRlbSA9PT0gJ2NvbS5teXNxbC5qZGJjLkRyaXZlcicpLmRlZmF1bHQoJ2NvbS5teXNxbC5qZGJjLkRyaXZlcicpXG59KTtcbmV4cG9ydCBjb25zdCBNU1NRTE9wdGlvbnMgPSBEYXRhYmFzZU9wdGlvbnMuZXh0ZW5kKHtcbiAgICBuYW1lOiBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMucmVmaW5lKGl0ZW0gPT4gaXRlbSA9PT0gU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5tc3NxbCkuZGVmYXVsdChTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLm1zc3FsKSxcbiAgICB0YWc6IHouc3RyaW5nKCkucmVmaW5lKGl0ZW0gPT4gdmVyc2lvbnNbU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5tc3NxbF0uaW5jbHVkZXMoaXRlbSkpLmRlZmF1bHQoJ2xhdGVzdCcpLFxuICAgIGVkaXRpb246IFN1cHBvcnRlZE1TU1FMRWRpdGlvbnMuZGVmYXVsdCgnRGV2ZWxvcGVyJyksXG4gICAgcG9ydDogei5udW1iZXIoKS5vcih6LnN0cmluZygpLnRyYW5zZm9ybShOdW1iZXIpLnJlZmluZShpdGVtID0+ICFpc05hTihpdGVtKSkpLmRlZmF1bHQoMTQzMyksXG4gICAgdXNlcm5hbWU6IHouc3RyaW5nKCkucmVmaW5lKGl0ZW0gPT4gaXRlbSA9PT0gJ3NhJykuZGVmYXVsdCgnc2EnKSxcbiAgICBwYXNzd29yZDogei5zdHJpbmcoKS5kZWZhdWx0KCdEYXRhQ2VudGVyRFghJyksXG4gICAgZHJpdmVyOiB6LnN0cmluZygpLnJlZmluZShpdGVtID0+IGl0ZW0gPT09ICdjb20ubWljcm9zb2Z0LnNxbHNlcnZlci5qZGJjLlNRTFNlcnZlckRyaXZlcicpLmRlZmF1bHQoJ2NvbS5taWNyb3NvZnQuc3Fsc2VydmVyLmpkYmMuU1FMU2VydmVyRHJpdmVyJylcbn0pO1xuIiwiZXhwb3J0IGNvbnN0IG5ldHdvcmsgPSB7XG4gICAgbmFtZTogJ3NoYXJlZCcsXG4gICAgZHJpdmVyOiAnYnJpZGdlJ1xufTtcbiIsImltcG9ydCB7IHNwYXduIH0gZnJvbSAnY2hpbGRfcHJvY2Vzcyc7XG5pbXBvcnQgeyBkb3duQWxsLCBwcywgc3RvcCwgdXBBbGwgfSBmcm9tICdkb2NrZXItY29tcG9zZS9kaXN0L3YyLmpzJztcbmltcG9ydCB7IGdyYWNlZnVsRXhpdCB9IGZyb20gJ2V4aXQtaG9vayc7XG5pbXBvcnQgeyBkdW1wIH0gZnJvbSAnanMteWFtbCc7XG5pbXBvcnQgeyBDb25uZWN0aW9uQWNxdWlyZVRpbWVvdXRFcnJvciwgQ29ubmVjdGlvbkVycm9yLCBDb25uZWN0aW9uUmVmdXNlZEVycm9yLCBDb25uZWN0aW9uVGltZWRPdXRFcnJvciwgU2VxdWVsaXplLCBUaW1lb3V0RXJyb3IgfSBmcm9tICdzZXF1ZWxpemUnO1xuaW1wb3J0IHsgbmV0d29yayB9IGZyb20gJy4uL2hlbHBlcnMvbmV0d29yayc7XG5leHBvcnQgY2xhc3MgQmFzZSB7XG4gICAgb3B0aW9ucztcbiAgICBzZXF1ZWxpemU7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENvbnN0cnVjdG9yXG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgICAgICAvLyBXZSBuZWVkIHRvIHVzZSAnbWFzdGVyJyBmb3IgbXNzcWwgYmVjYXVzZSBpdCBkb2VzIG5vdCBpbml0aWFsaXplIHRoZSBkYXRhYmFzZSBvbiBzdGFydFxuICAgICAgICBjb25zdCBkYXRhYmFzZSA9IHRoaXMub3B0aW9ucy5uYW1lID09PSAnbXNzcWwnID8gJ21hc3RlcicgOiB0aGlzLm9wdGlvbnMuZGF0YWJhc2U7XG4gICAgICAgIHRoaXMuc2VxdWVsaXplID0gbmV3IFNlcXVlbGl6ZShkYXRhYmFzZSwgdGhpcy5vcHRpb25zLnVzZXJuYW1lLCB0aGlzLm9wdGlvbnMucGFzc3dvcmQsIHtcbiAgICAgICAgICAgIGhvc3Q6ICdsb2NhbGhvc3QnLFxuICAgICAgICAgICAgcG9ydDogdGhpcy5vcHRpb25zLnBvcnQsXG4gICAgICAgICAgICBkaWFsZWN0OiB0aGlzLm9wdGlvbnMubmFtZS5yZXBsYWNlKCdwb3N0Z3Jlc3FsJywgJ3Bvc3RncmVzJyksXG4gICAgICAgICAgICByZXRyeToge1xuICAgICAgICAgICAgICAgIG1heDogMzAsXG4gICAgICAgICAgICAgICAgbWF0Y2g6IFtDb25uZWN0aW9uRXJyb3IsIFRpbWVvdXRFcnJvciwgQ29ubmVjdGlvblRpbWVkT3V0RXJyb3IsIENvbm5lY3Rpb25SZWZ1c2VkRXJyb3IsIENvbm5lY3Rpb25BY3F1aXJlVGltZW91dEVycm9yXSxcbiAgICAgICAgICAgICAgICBiYWNrb2ZmQmFzZTogMTAwMCxcbiAgICAgICAgICAgICAgICBiYWNrb2ZmRXhwb25lbnQ6IDFcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsb2dnaW5nOiBmYWxzZVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFB1YmxpYyBNZXRob2RzXG4gICAgYXN5bmMgcnVuKHNxbCwgbG9nZ2luZykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5zZXF1ZWxpemUucXVlcnkoc3FsLCB7IGxvZ2dpbmcgfSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgdHJ5aW5nIHRvIHJ1biB0aGUgZm9sbG93aW5nIFNRTCBxdWVyeTonLCBzcWwsIGVycik7XG4gICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgc3RhcnQoY2xlYW4gPSB0aGlzLm9wdGlvbnMuY2xlYW4pIHtcbiAgICAgICAgY29uc29sZS5sb2coYFN0YXJ0aW5nIGluc3RhbmNlIG9mICR7dGhpcy5vcHRpb25zLm5hbWV9Li4uIPCfkoNgKTtcbiAgICAgICAgaWYgKGNsZWFuKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmRvd24oKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCB0aGlzLnVwKCk7XG4gICAgICAgIGNvbnN0IGlzQXZhaWxhYmxlID0gYXdhaXQgdGhpcy53YWl0VW50aWxSZWFkeSgpO1xuICAgICAgICBpZiAoIWlzQXZhaWxhYmxlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgRmFpbGVkIHRvIHZlcmlmeSBzdGF0dXMgb2YgJHt0aGlzLm9wdGlvbnMubmFtZX0g4puUYCk7XG4gICAgICAgICAgICBncmFjZWZ1bEV4aXQoMSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgRGF0YWJhc2UgaXMgcmVhZHkgYW5kIGFjY2VwdGluZyBjb25uZWN0aW9ucyBvbiBsb2NhbGhvc3Q6JHt0aGlzLm9wdGlvbnMucG9ydH0g8J+XhO+4j2ApO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLm9uRGF0YWJhc2VSZWFkeSgpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZXJ2aWNlID0gYXdhaXQgdGhpcy5nZXRTZXJ2aWNlU3RhdGUoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlcnZpY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuc2hvd0RvY2tlckxvZ3Moc2VydmljZS5uYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICBncmFjZWZ1bEV4aXQoMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgc3RvcChwcnVuZSA9IHRoaXMub3B0aW9ucy5wcnVuZSkge1xuICAgICAgICBpZiAocHJ1bmUpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZG93bigpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgY29uZmlnQXNTdHJpbmcgPSBkdW1wKHRoaXMuZ2V0RG9ja2VyQ29tcG9zZUNvbmZpZygpKTtcbiAgICAgICAgICAgIGF3YWl0IHN0b3Aoe1xuICAgICAgICAgICAgICAgIGNvbmZpZ0FzU3RyaW5nLFxuICAgICAgICAgICAgICAgIGxvZzogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgb25EYXRhYmFzZVJlYWR5KCkgeyB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByaXZhdGUgTWV0aG9kc1xuICAgIGdldERvY2tlckNvbXBvc2VDb25maWcoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB2ZXJzaW9uOiAnMy44JyxcbiAgICAgICAgICAgIHNlcnZpY2VzOiB7XG4gICAgICAgICAgICAgICAgJ2RiJzogdGhpcy5nZXRTZXJ2aWNlKClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuZXR3b3Jrczoge1xuICAgICAgICAgICAgICAgICdzaGFyZWQnOiBuZXR3b3JrXG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxuICAgIGFzeW5jIHVwKCkge1xuICAgICAgICBjb25zdCBjb25maWdBc1N0cmluZyA9IGR1bXAodGhpcy5nZXREb2NrZXJDb21wb3NlQ29uZmlnKCkpO1xuICAgICAgICByZXR1cm4gdXBBbGwoe1xuICAgICAgICAgICAgY29uZmlnQXNTdHJpbmcsXG4gICAgICAgICAgICBsb2c6IHRydWVcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGFzeW5jIGRvd24oKSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZ0FzU3RyaW5nID0gZHVtcCh0aGlzLmdldERvY2tlckNvbXBvc2VDb25maWcoKSk7XG4gICAgICAgIHJldHVybiBkb3duQWxsKHtcbiAgICAgICAgICAgIGNvbmZpZ0FzU3RyaW5nLFxuICAgICAgICAgICAgY29tbWFuZE9wdGlvbnM6IFsnLXYnLCAnLS1yZW1vdmUtb3JwaGFucycsICctLXJtaScsICdsb2NhbCddLFxuICAgICAgICAgICAgbG9nOiB0cnVlXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBhc3luYyB3YWl0VW50aWxSZWFkeSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VxdWVsaXplLmF1dGhlbnRpY2F0ZSgpLnRoZW4oKCkgPT4gdHJ1ZSkuY2F0Y2goKCkgPT4gZmFsc2UpO1xuICAgIH1cbiAgICBhc3luYyBnZXRTZXJ2aWNlU3RhdGUoKSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZ0FzU3RyaW5nID0gZHVtcCh0aGlzLmdldERvY2tlckNvbXBvc2VDb25maWcoKSk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHBzKHsgY29uZmlnQXNTdHJpbmcsIGxvZzogZmFsc2UsIGNvbW1hbmRPcHRpb25zOiBbJy0tYWxsJ10gfSk7XG4gICAgICAgIHJldHVybiByZXN1bHQuZGF0YS5zZXJ2aWNlcy5maW5kKGl0ZW0gPT4gaXRlbS5uYW1lLmluY2x1ZGVzKHRoaXMub3B0aW9ucy5uYW1lKSk7XG4gICAgfVxuICAgIGFzeW5jIHNob3dEb2NrZXJMb2dzKHNlcnZpY2UpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGRvY2tlciA9IHNwYXduKCdkb2NrZXInLCBbJ2xvZ3MnLCAnLWYnLCAnLW4nLCAnNTAwMCcsIHNlcnZpY2VdLCB7IHN0ZGlvOiAnaW5oZXJpdCcgfSk7XG4gICAgICAgICAgICBkb2NrZXIub24oJ2V4aXQnLCAoY29kZSkgPT4gKGNvZGUgPT09IDApID8gcmVzb2x2ZSgpIDogcmVqZWN0KG5ldyBFcnJvcihgRG9ja2VyIGV4aXRlZCB3aXRoIGNvZGUgJHtjb2RlfWApKSk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiIsImltcG9ydCB7IE1TU1FMT3B0aW9ucyB9IGZyb20gJy4uL3R5cGVzL0RhdGFiYXNlJztcbmltcG9ydCB7IEJhc2UgfSBmcm9tICcuL2Jhc2UnO1xuZXhwb3J0IGNsYXNzIE1TU1FMIGV4dGVuZHMgQmFzZSB7XG4gICAgb3B0aW9ucztcbiAgICBnZXQgdXJsKCkge1xuICAgICAgICByZXR1cm4gYGpkYmM6c3Fsc2VydmVyOi8vZGI6JHt0aGlzLm9wdGlvbnMucG9ydH07ZGF0YWJhc2VOYW1lPSR7dGhpcy5vcHRpb25zLmRhdGFiYXNlfTt0cnVzdFNlcnZlckNlcnRpZmljYXRlPXRydWVgO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ29uc3RydWN0b3JcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zID0gTVNTUUxPcHRpb25zLnBhcnNlKHt9KSkge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByb3RlY3RlZCBNZXRob2RzXG4gICAgYXN5bmMgb25EYXRhYmFzZVJlYWR5KCkge1xuICAgICAgICBhd2FpdCB0aGlzLnJ1bihgQ1JFQVRFIERBVEFCQVNFICR7dGhpcy5vcHRpb25zLmRhdGFiYXNlfWApO1xuICAgICAgICBhd2FpdCB0aGlzLnJ1bihgQUxURVIgREFUQUJBU0UgJHt0aGlzLm9wdGlvbnMuZGF0YWJhc2V9IENPTExBVEUgU1FMX0xhdGluMV9HZW5lcmFsX0NQMV9DU19BU2ApO1xuICAgICAgICBhd2FpdCB0aGlzLnJ1bihgQUxURVIgREFUQUJBU0UgJHt0aGlzLm9wdGlvbnMuZGF0YWJhc2V9IFNFVCBSRUFEX0NPTU1JVFRFRF9TTkFQU0hPVCBPTiBXSVRIIFJPTExCQUNLIElNTUVESUFURTtgKTtcbiAgICB9XG4gICAgZ2V0U2VydmljZSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGltYWdlOiBgbWNyLm1pY3Jvc29mdC5jb20vbXNzcWwvc2VydmVyOiR7dGhpcy5vcHRpb25zLnRhZ31gLFxuICAgICAgICAgICAgcG9ydHM6IFtgJHt0aGlzLm9wdGlvbnMucG9ydCB8fCAxNDMzfToxNDMzYF0sXG4gICAgICAgICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICAgICAgICAgIEFDQ0VQVF9FVUxBOiAneScsXG4gICAgICAgICAgICAgICAgTVNTUUxfU0FfUEFTU1dPUkQ6IHRoaXMub3B0aW9ucy5wYXNzd29yZCB8fCAnZGNkeCcsXG4gICAgICAgICAgICAgICAgTVNTUUxfUElEOiB0aGlzLm9wdGlvbnMuZWRpdGlvblxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5ldHdvcmtzOiB7XG4gICAgICAgICAgICAgICAgJ3NoYXJlZCc6IHtcbiAgICAgICAgICAgICAgICAgICAgYWxpYXNlczogWydkYicsICdkYXRhYmFzZSddXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH07XG59XG4iLCJpbXBvcnQgeyBNeVNRTE9wdGlvbnMgfSBmcm9tICcuLi90eXBlcy9EYXRhYmFzZSc7XG5pbXBvcnQgeyBCYXNlIH0gZnJvbSAnLi9iYXNlJztcbmV4cG9ydCBjbGFzcyBNeVNRTCBleHRlbmRzIEJhc2Uge1xuICAgIG9wdGlvbnM7XG4gICAgZ2V0IHVybCgpIHtcbiAgICAgICAgcmV0dXJuIGBqZGJjOm15c3FsOi8vZGI6JHt0aGlzLm9wdGlvbnMucG9ydH0vJHt0aGlzLm9wdGlvbnMuZGF0YWJhc2V9P3Nlc3Npb25WYXJpYWJsZXM9dHJhbnNhY3Rpb25faXNvbGF0aW9uPSdSRUFELUNPTU1JVFRFRCdgO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ29uc3RydWN0b3JcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zID0gTXlTUUxPcHRpb25zLnBhcnNlKHt9KSkge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByb3RlY3RlZCBNZXRob2RzXG4gICAgYXN5bmMgb25EYXRhYmFzZVJlYWR5KCkge1xuICAgICAgICBhd2FpdCB0aGlzLnJ1bihgQUxURVIgREFUQUJBU0UgJHt0aGlzLm9wdGlvbnMuZGF0YWJhc2V9IENIQVJBQ1RFUiBTRVQgJ3V0ZjhtYjQnIENPTExBVEUgdXRmOG1iNF9iaW5gKTtcbiAgICB9XG4gICAgZ2V0U2VydmljZSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGltYWdlOiBgbXlzcWw6JHt0aGlzLm9wdGlvbnMudGFnfWAsXG4gICAgICAgICAgICBwb3J0czogW2Ake3RoaXMub3B0aW9ucy5wb3J0IHx8IDMzMDZ9OjMzMDZgXSxcbiAgICAgICAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgICAgICAgICAgTVlTUUxfUk9PVF9QQVNTV09SRDogdGhpcy5vcHRpb25zLnBhc3N3b3JkIHx8ICdkY2R4JyxcbiAgICAgICAgICAgICAgICBNWVNRTF9VU0VSOiB0aGlzLm9wdGlvbnMudXNlcm5hbWUgfHwgJ2RjZHgnLFxuICAgICAgICAgICAgICAgIE1ZU1FMX1BBU1NXT1JEOiB0aGlzLm9wdGlvbnMucGFzc3dvcmQgfHwgJ2RjZHgnLFxuICAgICAgICAgICAgICAgIE1ZU1FMX0RBVEFCQVNFOiB0aGlzLm9wdGlvbnMuZGF0YWJhc2UgfHwgJ2RjZHgnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29tbWFuZDogWyctLWxvZ19iaW5fdHJ1c3RfZnVuY3Rpb25fY3JlYXRvcnM9MSddLFxuICAgICAgICAgICAgbmV0d29ya3M6IHtcbiAgICAgICAgICAgICAgICAnc2hhcmVkJzoge1xuICAgICAgICAgICAgICAgICAgICBhbGlhc2VzOiBbJ2RiJywgJ2RhdGFiYXNlJ11cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfTtcbn1cbiIsImltcG9ydCB7IFBvc3RncmVTUUxPcHRpb25zIH0gZnJvbSAnLi4vdHlwZXMvRGF0YWJhc2UnO1xuaW1wb3J0IHsgQmFzZSB9IGZyb20gJy4vYmFzZSc7XG5leHBvcnQgY2xhc3MgUG9zdGdyZXMgZXh0ZW5kcyBCYXNlIHtcbiAgICBvcHRpb25zO1xuICAgIGdldCB1cmwoKSB7XG4gICAgICAgIHJldHVybiBgamRiYzpwb3N0Z3Jlc3FsOi8vZGI6JHt0aGlzLm9wdGlvbnMucG9ydH0vJHt0aGlzLm9wdGlvbnMuZGF0YWJhc2V9YDtcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENvbnN0cnVjdG9yXG4gICAgY29uc3RydWN0b3Iob3B0aW9ucyA9IFBvc3RncmVTUUxPcHRpb25zLnBhcnNlKHt9KSkge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByb3RlY3RlZCBNZXRob2RzXG4gICAgZ2V0U2VydmljZSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGltYWdlOiBgcG9zdGdyZXM6JHt0aGlzLm9wdGlvbnMudGFnfWAsXG4gICAgICAgICAgICBwb3J0czogW2Ake3RoaXMub3B0aW9ucy5wb3J0IHx8IDU0MzJ9OjU0MzJgXSxcbiAgICAgICAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgICAgICAgICAgUE9TVEdSRVNfVVNFUjogdGhpcy5vcHRpb25zLnVzZXJuYW1lIHx8ICdkY2R4JyxcbiAgICAgICAgICAgICAgICBQT1NUR1JFU19QQVNTV09SRDogdGhpcy5vcHRpb25zLnBhc3N3b3JkIHx8ICdkY2R4JyxcbiAgICAgICAgICAgICAgICBQT1NUR1JFU19EQjogdGhpcy5vcHRpb25zLmRhdGFiYXNlIHx8ICdkY2R4JyxcbiAgICAgICAgICAgICAgICBQT1NUR1JFU19IT1NUX0FVVEhfTUVUSE9EOiAnbWQ1JyxcbiAgICAgICAgICAgICAgICBQT1NUR1JFU19JTklUREJfQVJHUzogJy0tZW5jb2Rpbmc9VVRGLTggLS1sYy1jb2xsYXRlPUMgLS1sYy1jdHlwZT1DJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5ldHdvcmtzOiB7XG4gICAgICAgICAgICAgICAgJ3NoYXJlZCc6IHtcbiAgICAgICAgICAgICAgICAgICAgYWxpYXNlczogWydkYicsICdkYXRhYmFzZSddXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH07XG59XG4iLCJpbXBvcnQgeyBNU1NRTCB9IGZyb20gJy4uL2RhdGFiYXNlcy9tc3NxbCc7XG5pbXBvcnQgeyBNeVNRTCB9IGZyb20gJy4uL2RhdGFiYXNlcy9teXNxbCc7XG5pbXBvcnQgeyBQb3N0Z3JlcyB9IGZyb20gJy4uL2RhdGFiYXNlcy9wb3N0Z3Jlcyc7XG5pbXBvcnQgeyBNU1NRTE9wdGlvbnMsIE15U1FMT3B0aW9ucywgUG9zdGdyZVNRTE9wdGlvbnMsIFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcyB9IGZyb20gJy4uL3R5cGVzL0RhdGFiYXNlJztcbmV4cG9ydCBjb25zdCBnZXREYXRhYmFzZUVuZ2luZSA9IChvcHRpb25zKSA9PiB7XG4gICAgc3dpdGNoIChvcHRpb25zLm5hbWUpIHtcbiAgICAgICAgY2FzZSBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLnBvc3RncmVzcWw6XG4gICAgICAgICAgICByZXR1cm4gbmV3IFBvc3RncmVzKFBvc3RncmVTUUxPcHRpb25zLnBhcnNlKG9wdGlvbnMpKTtcbiAgICAgICAgY2FzZSBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLm15c3FsOlxuICAgICAgICAgICAgcmV0dXJuIG5ldyBNeVNRTChNeVNRTE9wdGlvbnMucGFyc2Uob3B0aW9ucykpO1xuICAgICAgICBjYXNlIFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMubXNzcWw6XG4gICAgICAgICAgICByZXR1cm4gbmV3IE1TU1FMKE1TU1FMT3B0aW9ucy5wYXJzZShvcHRpb25zKSk7XG4gICAgfVxufTtcbiIsImltcG9ydCB7IHogfSBmcm9tICd6b2QnO1xuZXhwb3J0IGNvbnN0IGdldFpvZERlZmF1bHQgPSAoc2NoZW1hLCBrZXkpID0+IHtcbiAgICBjb25zdCBkZWZhdWx0cyA9IGdldFpvZERlZmF1bHRzKHNjaGVtYSk7XG4gICAgcmV0dXJuIGRlZmF1bHRzW2tleV07XG59O1xuLy8gQ29kZSBzbmlwcGV0IGJ5IEphY29iIFdlaXNlbmJ1cmdlciAoaHR0cHM6Ly9naXRodWIuY29tL0phY29iV2Vpc2VuYnVyZ2VyKVxuLy8gVGFrZW4gZnJvbSBodHRwczovL2dpdGh1Yi5jb20vY29saW5oYWNrcy96b2QvZGlzY3Vzc2lvbnMvMTk1MyNkaXNjdXNzaW9uY29tbWVudC00ODExNTg4XG5leHBvcnQgY29uc3QgZ2V0Wm9kRGVmYXVsdHMgPSAoc2NoZW1hKSA9PiB7XG4gICAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhzY2hlbWEuc2hhcGUpLmZpbHRlcigoWywgdmFsdWVdKSA9PiB7XG4gICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIHouWm9kRGVmYXVsdCkge1xuICAgICAgICAgICAgY29uc3QgZGVmYXVsdFZhbHVlID0gdmFsdWUuX2RlZi5kZWZhdWx0VmFsdWUoKTtcbiAgICAgICAgICAgIHJldHVybiBkZWZhdWx0VmFsdWUgIT09IG51bGwgJiYgdHlwZW9mIGRlZmF1bHRWYWx1ZSAhPT0gJ3VuZGVmaW5lZCc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0pLm1hcCgoW2tleSwgdmFsdWVdKSA9PiAoW2tleSwgdmFsdWUuX2RlZi5kZWZhdWx0VmFsdWUoKV0pKSk7XG59O1xuIiwiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuaW1wb3J0IHsgQ29tbWFuZCBhcyBDb21tYW5kZXIsIE9wdGlvbiB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgeyBncmFjZWZ1bEV4aXQgfSBmcm9tICdleGl0LWhvb2snO1xuaW1wb3J0IHZlcnNpb25zIGZyb20gJy4uLy4uL2Fzc2V0cy92ZXJzaW9ucy5qc29uJztcbmltcG9ydCB7IEFjdGlvbkhhbmRsZXIgfSBmcm9tICcuLi9oZWxwZXJzL0FjdGlvbkhhbmRsZXInO1xuaW1wb3J0IHsgZ2V0RGF0YWJhc2VFbmdpbmUgfSBmcm9tICcuLi9oZWxwZXJzL2dldERhdGFiYXNlRW5naW5lJztcbmltcG9ydCB7IGdldFpvZERlZmF1bHQgfSBmcm9tICcuLi9oZWxwZXJzL2dldFpvZERlZmF1bHRzJztcbmltcG9ydCB7IE1TU1FMT3B0aW9ucywgTXlTUUxPcHRpb25zLCBQb3N0Z3JlU1FMT3B0aW9ucywgU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLCBTdXBwb3J0ZWRNU1NRTEVkaXRpb25zIH0gZnJvbSAnLi4vdHlwZXMvRGF0YWJhc2UnO1xuY29uc3QgcHJvZ3JhbSA9IG5ldyBDb21tYW5kZXIoKTtcbmNvbnN0IENvbW1hbmQgPSAoKSA9PiB7XG4gICAgbGV0IGluc3RhbmNlID0gbnVsbDtcbiAgICByZXR1cm4ge1xuICAgICAgICBhY3Rpb246IGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgICAgICAgICBpbnN0YW5jZSA9IGdldERhdGFiYXNlRW5naW5lKG9wdGlvbnMpO1xuICAgICAgICAgICAgcmV0dXJuIGluc3RhbmNlLnN0YXJ0KCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9ySGFuZGxlcjogYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKGluc3RhbmNlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBuYW1lIH0gPSBpbnN0YW5jZS5vcHRpb25zO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBTdG9wcGluZyAke25hbWV9Li4uIOKPs2ApO1xuICAgICAgICAgICAgICAgIGF3YWl0IGluc3RhbmNlLnN0b3AoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFN0b3BwZWQgJHtuYW1lfSDwn5KqYCk7XG4gICAgICAgICAgICAgICAgfSkuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgRmFpbGVkIHRvIHN0b3BwZWQgJHtuYW1lfSwgbWFudWFsIGFjdGlvbiBpcyByZXF1aXJlZGApO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbn07XG5wcm9ncmFtXG4gICAgLm5hbWUoJ2RjZHggZGF0YWJhc2UnKVxuICAgIC5zaG93SGVscEFmdGVyRXJyb3IodHJ1ZSk7XG5wcm9ncmFtXG4gICAgLmNvbW1hbmQoJ3Bvc3RncmVzcWwnKVxuICAgIC5kZXNjcmlwdGlvbignU3RhcnQgUG9zdGdyZVNRTCcpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctdCwgLS10YWcgPHRhZz4nLCAnVGhlIERvY2tlciB0YWcgb2YgUG9zdGdyZXMnKS5jaG9pY2VzKHZlcnNpb25zW1N1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMucG9zdGdyZXNxbF0pLmRlZmF1bHQoJ2xhdGVzdCcpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLWQsIC0tZGF0YWJhc2UgPGRhdGFiYXNlPicsICdUaGUgdmFsdWUgcGFzc2VkIHRvIFBPU1RHUkVTX0RCIGVudmlyb25tZW50IHZhcmlhYmxlJykuZGVmYXVsdChnZXRab2REZWZhdWx0KFBvc3RncmVTUUxPcHRpb25zLCAnZGF0YWJhc2UnKSkpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctcCwgLS1wb3J0IDxwb3J0PicsICdUaGUgcG9ydCBvbiB3aGljaCB0aGUgZGF0YWJhc2Ugd2lsbCBiZSBhY2Nlc3NpYmxlJykuZGVmYXVsdChnZXRab2REZWZhdWx0KFBvc3RncmVTUUxPcHRpb25zLCAncG9ydCcpKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy1VLCAtLXVzZXJuYW1lIDx1c2VybmFtZT4nLCAnVGhlIHZhbHVlIHBhc3NlZCB0byBQT1NUR1JFU19VU0VSIGVudmlyb25tZW50IHZhcmlhYmxlJykuZGVmYXVsdChnZXRab2REZWZhdWx0KFBvc3RncmVTUUxPcHRpb25zLCAndXNlcm5hbWUnKSkpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctUCwgLS1wYXNzd29yZCA8cGFzc3dvcmQ+JywgJ1RoZSB2YWx1ZSBwYXNzZWQgdG8gUE9TVEdSRVNfUEFTU1dPUkQgZW52aXJvbm1lbnQgdmFyaWFibGUnKS5kZWZhdWx0KGdldFpvZERlZmF1bHQoUG9zdGdyZVNRTE9wdGlvbnMsICdwYXNzd29yZCcpKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tY2xlYW4nLCAnUmVtb3ZlIGRhdGEgZmlsZXMgYmVmb3JlIHN0YXJ0aW5nIHRoZSBkYXRhYmFzZScpLmRlZmF1bHQoZmFsc2UpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1wcnVuZScsICdSZW1vdmUgZGF0YSBmaWxlcyB3aGVuIHN0b3BwaW5nIHRoZSBkYXRhYmFzZScpLmRlZmF1bHQoZmFsc2UpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS12ZXJib3NlJywgJ091dHB1dCBkYXRhYmFzZSBsb2cgZmlsZXMnKS5kZWZhdWx0KGZhbHNlKSlcbiAgICAuYWN0aW9uKG9wdGlvbnMgPT4gQWN0aW9uSGFuZGxlcihwcm9ncmFtLCBDb21tYW5kKCksIHsgLi4ub3B0aW9ucywgbmFtZTogU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5wb3N0Z3Jlc3FsIH0pKTtcbnByb2dyYW1cbiAgICAuY29tbWFuZCgnbXlzcWwnKVxuICAgIC5kZXNjcmlwdGlvbignU3RhcnQgTXlTUUwnKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLXQsIC0tdGFnIDx0YWc+JywgJ1RoZSBEb2NrZXIgdGFnIG9mIE15U1FMJykuY2hvaWNlcyh2ZXJzaW9uc1tTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLm15c3FsXSkuZGVmYXVsdCgnbGF0ZXN0JykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctZCwgLS1kYXRhYmFzZSA8ZGF0YWJhc2U+JywgJ1RoZSB2YWx1ZSBwYXNzZWQgdG8gTVlTUUxfREFUQUJBU0UgZW52aXJvbm1lbnQgdmFyaWFibGUnKS5kZWZhdWx0KGdldFpvZERlZmF1bHQoTXlTUUxPcHRpb25zLCAnZGF0YWJhc2UnKSkpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctcCwgLS1wb3J0IDxwb3J0PicsICdUaGUgcG9ydCBvbiB3aGljaCB0aGUgZGF0YWJhc2Ugd2lsbCBiZSBhY2Nlc3NpYmxlJykuZGVmYXVsdChnZXRab2REZWZhdWx0KE15U1FMT3B0aW9ucywgJ3BvcnQnKSkpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctVSwgLS11c2VybmFtZSA8dXNlcm5hbWU+JywgJ1RoZSB2YWx1ZSBwYXNzZWQgdG8gTVlTUUxfVVNFUiBlbnZpcm9ubWVudCB2YXJpYWJsZScpLmRlZmF1bHQoZ2V0Wm9kRGVmYXVsdChNeVNRTE9wdGlvbnMsICd1c2VybmFtZScpKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy1QLCAtLXBhc3N3b3JkIDxwYXNzd29yZD4nLCAnVGhlIHZhbHVlIHBhc3NlZCB0byBNWVNRTF9QQVNTV09SRCBlbnZpcm9ubWVudCB2YXJpYWJsZScpLmRlZmF1bHQoZ2V0Wm9kRGVmYXVsdChNeVNRTE9wdGlvbnMsICdwYXNzd29yZCcpKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tY2xlYW4nLCAnUmVtb3ZlIGRhdGEgZmlsZXMgYmVmb3JlIHN0YXJ0aW5nIHRoZSBkYXRhYmFzZScpLmRlZmF1bHQoZmFsc2UpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1wcnVuZScsICdSZW1vdmUgZGF0YSBmaWxlcyB3aGVuIHN0b3BwaW5nIHRoZSBkYXRhYmFzZScpLmRlZmF1bHQoZmFsc2UpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS12ZXJib3NlJywgJ091dHB1dCBkYXRhYmFzZSBsb2cgZmlsZXMnKS5kZWZhdWx0KGZhbHNlKSlcbiAgICAuYWN0aW9uKG9wdGlvbnMgPT4gQWN0aW9uSGFuZGxlcihwcm9ncmFtLCBDb21tYW5kKCksIHsgLi4ub3B0aW9ucywgbmFtZTogU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5teXNxbCB9KSk7XG5wcm9ncmFtXG4gICAgLmNvbW1hbmQoJ21zc3FsJylcbiAgICAuZGVzY3JpcHRpb24oJ1N0YXJ0IE1pY3Jvc29mdCBTUUwgU2VydmVyJylcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy10LCAtLXRhZyA8dGFnPicsICdUaGUgRG9ja2VyIHRhZyBvZiBNaWNyb3NvZnQgU1FMIFNlcnZlcicpLmNob2ljZXModmVyc2lvbnNbU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5tc3NxbF0pLmRlZmF1bHQoJ2xhdGVzdCcpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLWUsIC0tZWRpdGlvbiA8ZWRpdGlvbj4nLCAnVGhlIGVkaXRpb24gb2YgTWljcm9zb2Z0IFNRTCBTZXJ2ZXInKS5jaG9pY2VzKE9iamVjdC52YWx1ZXMoU3VwcG9ydGVkTVNTUUxFZGl0aW9ucy5WYWx1ZXMpKS5kZWZhdWx0KFN1cHBvcnRlZE1TU1FMRWRpdGlvbnMuVmFsdWVzLkRldmVsb3BlcikpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctZCwgLS1kYXRhYmFzZSA8ZGF0YWJhc2U+JywgJ1RoZSBuYW1lIG9mIHRoZSBkYXRhYmFzZSAoYXV0b21hdGljYWxseSBjcmVhdGVkKScpLmRlZmF1bHQoZ2V0Wm9kRGVmYXVsdChNU1NRTE9wdGlvbnMsICdkYXRhYmFzZScpKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy1wLCAtLXBvcnQgPHBvcnQ+JywgJ1RoZSBwb3J0IG9uIHdoaWNoIHRoZSBkYXRhYmFzZSB3aWxsIGJlIGFjY2Vzc2libGUnKS5kZWZhdWx0KGdldFpvZERlZmF1bHQoTVNTUUxPcHRpb25zLCAncG9ydCcpKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy1QLCAtLXBhc3N3b3JkIDxwYXNzd29yZD4nLCAnVGhlIHZhbHVlIHBhc3NlZCB0byBNU1NRTF9TQV9QQVNTV09SRCBlbnZpcm9ubWVudCB2YXJpYWJsZS4gTVMgU1FMIFNlcnZlciBwYXNzd29yZCBwb2xpY3kgYXBwbGllcy4nKS5kZWZhdWx0KGdldFpvZERlZmF1bHQoTVNTUUxPcHRpb25zLCAncGFzc3dvcmQnKSkpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWNsZWFuJywgJ1JlbW92ZSBkYXRhIGZpbGVzIGJlZm9yZSBzdGFydGluZyB0aGUgZGF0YWJhc2UnKS5kZWZhdWx0KGZhbHNlKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tcHJ1bmUnLCAnUmVtb3ZlIGRhdGEgZmlsZXMgd2hlbiBzdG9wcGluZyB0aGUgZGF0YWJhc2UnKS5kZWZhdWx0KGZhbHNlKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tdmVyYm9zZScsICdPdXRwdXQgZGF0YWJhc2UgbG9nIGZpbGVzJykuZGVmYXVsdChmYWxzZSkpXG4gICAgLmFjdGlvbihvcHRpb25zID0+IEFjdGlvbkhhbmRsZXIocHJvZ3JhbSwgQ29tbWFuZCgpLCB7IC4uLm9wdGlvbnMsIG5hbWU6IFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMubXNzcWwsIHVzZXJuYW1lOiAnc2EnIH0pKTtcbnByb2dyYW0ucGFyc2VBc3luYyhwcm9jZXNzLmFyZ3YpLmNhdGNoKCgpID0+IGdyYWNlZnVsRXhpdCgxKSk7XG5wcm9jZXNzLm9uKCdTSUdJTlQnLCAoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYFJlY2VpdmVkIHRlcm0gc2lnbmFsLCB0cnlpbmcgdG8gc3RvcCBncmFjZWZ1bGx5IPCfkqpgKTtcbiAgICBncmFjZWZ1bEV4aXQoKTtcbn0pO1xuIl0sIm5hbWVzIjpbIkNvbW1hbmRlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRU8sTUFBTSxhQUFhLEdBQUcsT0FBTyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLEVBQUUsT0FBTyxLQUFLO0FBQ25GLElBQUksTUFBTSxHQUFHLEdBQUcsT0FBTyxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUMxQyxJQUFJLE1BQU0sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxLQUFLO0FBQzNDLFFBQVEsSUFBSSxZQUFZLEdBQUcsRUFBRSxDQUFDO0FBQzlCLFFBQVEsYUFBYSxDQUFDLE9BQU8sSUFBSSxLQUFLO0FBQ3RDLFlBQVksSUFBSTtBQUNoQixnQkFBZ0IsSUFBSSxJQUFJLEtBQUssQ0FBQyxFQUFFO0FBQ2hDLG9CQUFvQixNQUFNLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQztBQUM5RCxpQkFBaUI7QUFDakIsZ0JBQWdCLElBQUksWUFBWSxFQUFFO0FBQ2xDLG9CQUFvQixNQUFNLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQ3pELGlCQUFpQjtBQUNqQixxQkFBcUI7QUFDckIsb0JBQW9CLE9BQU8sRUFBRSxDQUFDO0FBQzlCLGlCQUFpQjtBQUNqQixhQUFhO0FBQ2IsWUFBWSxPQUFPLEdBQUcsRUFBRTtBQUN4QixnQkFBZ0IsTUFBTSxPQUFPLEdBQUcsR0FBRyxZQUFZLEtBQUssR0FBRyxHQUFHLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQztBQUN6RSxnQkFBZ0IsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ2hDLGFBQWE7QUFDYixTQUFTLEVBQUU7QUFDWCxZQUFZLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSTtBQUMzQixTQUFTLENBQUMsQ0FBQztBQUNYLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUk7QUFDakMsWUFBWSxJQUFJLEdBQUcsWUFBWSxDQUFDLENBQUMsUUFBUSxFQUFFO0FBQzNDLGdCQUFnQixHQUFHLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUk7QUFDNUMsb0JBQW9CLFlBQVksSUFBSSxDQUFDLHVCQUF1QixFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3pHLGlCQUFpQixDQUFDLENBQUM7QUFDbkIsYUFBYTtBQUNiLGlCQUFpQixJQUFJLEdBQUcsWUFBWSxLQUFLLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFO0FBQ3RFLGdCQUFnQixZQUFZLEdBQUcsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBQzlDLGFBQWE7QUFDYixZQUFZLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM1QixTQUFTLENBQUMsQ0FBQztBQUNYLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQ2hELENBQUM7O0FDbkNNLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUMvQyxJQUFJLFlBQVk7QUFDaEIsSUFBSSxPQUFPO0FBQ1gsSUFBSSxPQUFPO0FBQ1gsQ0FBQyxDQUFDLENBQUM7QUFDSSxNQUFNLHNCQUFzQixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDN0MsSUFBSSxXQUFXO0FBQ2YsSUFBSSxTQUFTO0FBQ2IsSUFBSSxVQUFVO0FBQ2QsSUFBSSxZQUFZO0FBQ2hCLElBQUksZ0JBQWdCO0FBQ3BCLENBQUMsQ0FBQyxDQUFDO0FBQ0ksTUFBTSxlQUFlLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztBQUN4QyxJQUFJLElBQUksRUFBRSx3QkFBd0I7QUFDbEMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNsRixJQUFJLFFBQVEsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztBQUN4QyxJQUFJLFFBQVEsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztBQUN4QyxJQUFJLFFBQVEsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztBQUN4QyxJQUFJLEtBQUssRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztBQUNyQyxJQUFJLEtBQUssRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztBQUNyQyxJQUFJLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztBQUN2QyxJQUFJLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO0FBQ3RCLENBQUMsQ0FBQyxDQUFDO0FBQ0ksTUFBTSxpQkFBaUIsR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDO0FBQ3hELElBQUksSUFBSSxFQUFFLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksSUFBSSxLQUFLLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQztBQUMxSixJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxRQUFRLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUM7QUFDekgsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7QUFDaEcsSUFBSSxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksSUFBSSxLQUFLLHVCQUF1QixDQUFDLENBQUMsT0FBTyxDQUFDLHVCQUF1QixDQUFDO0FBQ3hHLENBQUMsQ0FBQyxDQUFDO0FBQ0ksTUFBTSxZQUFZLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQztBQUNuRCxJQUFJLElBQUksRUFBRSx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLElBQUksS0FBSyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7QUFDaEosSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksUUFBUSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO0FBQ3BILElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO0FBQ2hHLElBQUksTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLElBQUksS0FBSyx1QkFBdUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQztBQUN4RyxDQUFDLENBQUMsQ0FBQztBQUNJLE1BQU0sWUFBWSxHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQUM7QUFDbkQsSUFBSSxJQUFJLEVBQUUsd0JBQXdCLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxJQUFJLEtBQUssd0JBQXdCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO0FBQ2hKLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLFFBQVEsQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztBQUNwSCxJQUFJLE9BQU8sRUFBRSxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDO0FBQ3hELElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO0FBQ2hHLElBQUksUUFBUSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO0FBQ3BFLElBQUksUUFBUSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDO0FBQ2pELElBQUksTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLElBQUksS0FBSyw4Q0FBOEMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyw4Q0FBOEMsQ0FBQztBQUN0SixDQUFDLENBQUM7O0FDN0NLLE1BQU0sT0FBTyxHQUFHO0FBQ3ZCLElBQUksSUFBSSxFQUFFLFFBQVE7QUFDbEIsSUFBSSxNQUFNLEVBQUUsUUFBUTtBQUNwQixDQUFDOztBQ0dNLE1BQU0sSUFBSSxDQUFDO0FBQ2xCLElBQUksT0FBTyxDQUFDO0FBQ1osSUFBSSxTQUFTLENBQUM7QUFDZDtBQUNBLElBQUksV0FBVyxDQUFDLE9BQU8sRUFBRTtBQUN6QixRQUFRLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0FBQy9CO0FBQ0EsUUFBUSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxPQUFPLEdBQUcsUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO0FBQzFGLFFBQVEsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLFNBQVMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUU7QUFDL0YsWUFBWSxJQUFJLEVBQUUsV0FBVztBQUM3QixZQUFZLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUk7QUFDbkMsWUFBWSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxVQUFVLENBQUM7QUFDeEUsWUFBWSxLQUFLLEVBQUU7QUFDbkIsZ0JBQWdCLEdBQUcsRUFBRSxFQUFFO0FBQ3ZCLGdCQUFnQixLQUFLLEVBQUUsQ0FBQyxlQUFlLEVBQUUsWUFBWSxFQUFFLHVCQUF1QixFQUFFLHNCQUFzQixFQUFFLDZCQUE2QixDQUFDO0FBQ3RJLGdCQUFnQixXQUFXLEVBQUUsSUFBSTtBQUNqQyxnQkFBZ0IsZUFBZSxFQUFFLENBQUM7QUFDbEMsYUFBYTtBQUNiLFlBQVksT0FBTyxFQUFFLEtBQUs7QUFDMUIsU0FBUyxDQUFDLENBQUM7QUFDWCxLQUFLO0FBQ0w7QUFDQSxJQUFJLE1BQU0sR0FBRyxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUU7QUFDNUIsUUFBUSxJQUFJO0FBQ1osWUFBWSxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7QUFDekQsU0FBUztBQUNULFFBQVEsT0FBTyxHQUFHLEVBQUU7QUFDcEIsWUFBWSxPQUFPLENBQUMsS0FBSyxDQUFDLGdFQUFnRSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUN0RyxZQUFZLE1BQU0sR0FBRyxDQUFDO0FBQ3RCLFNBQVM7QUFDVCxLQUFLO0FBQ0wsSUFBSSxNQUFNLEtBQUssQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUU7QUFDNUMsUUFBUSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMscUJBQXFCLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUN2RSxRQUFRLElBQUksS0FBSyxFQUFFO0FBQ25CLFlBQVksTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDOUIsU0FBUztBQUNULFFBQVEsTUFBTSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7QUFDeEIsUUFBUSxNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUN4RCxRQUFRLElBQUksQ0FBQyxXQUFXLEVBQUU7QUFDMUIsWUFBWSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsMkJBQTJCLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM3RSxZQUFZLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM1QixTQUFTO0FBQ1QsYUFBYTtBQUNiLFlBQVksT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLHlEQUF5RCxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDN0csWUFBWSxJQUFJO0FBQ2hCLGdCQUFnQixNQUFNLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztBQUM3QyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRTtBQUMxQyxvQkFBb0IsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7QUFDakUsb0JBQW9CLElBQUksT0FBTyxFQUFFO0FBQ2pDLHdCQUF3QixNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2hFLHFCQUFxQjtBQUNyQixpQkFBaUI7QUFDakIsYUFBYTtBQUNiLFlBQVksT0FBTyxHQUFHLEVBQUU7QUFDeEIsZ0JBQWdCLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoQyxhQUFhO0FBQ2IsU0FBUztBQUNULEtBQUs7QUFDTCxJQUFJLE1BQU0sSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRTtBQUMzQyxRQUFRLElBQUksS0FBSyxFQUFFO0FBQ25CLFlBQVksTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDOUIsU0FBUztBQUNULGFBQWE7QUFDYixZQUFZLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxDQUFDO0FBQ3ZFLFlBQVksTUFBTSxJQUFJLENBQUM7QUFDdkIsZ0JBQWdCLGNBQWM7QUFDOUIsZ0JBQWdCLEdBQUcsRUFBRSxJQUFJO0FBQ3pCLGFBQWEsQ0FBQyxDQUFDO0FBQ2YsU0FBUztBQUNULEtBQUs7QUFDTCxJQUFJLE1BQU0sZUFBZSxHQUFHLEdBQUc7QUFDL0I7QUFDQSxJQUFJLHNCQUFzQixHQUFHO0FBQzdCLFFBQVEsT0FBTztBQUNmLFlBQVksT0FBTyxFQUFFLEtBQUs7QUFDMUIsWUFBWSxRQUFRLEVBQUU7QUFDdEIsZ0JBQWdCLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFO0FBQ3ZDLGFBQWE7QUFDYixZQUFZLFFBQVEsRUFBRTtBQUN0QixnQkFBZ0IsUUFBUSxFQUFFLE9BQU87QUFDakMsYUFBYTtBQUNiLFNBQVMsQ0FBQztBQUNWLEtBQUs7QUFDTCxJQUFJLE1BQU0sRUFBRSxHQUFHO0FBQ2YsUUFBUSxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUMsQ0FBQztBQUNuRSxRQUFRLE9BQU8sS0FBSyxDQUFDO0FBQ3JCLFlBQVksY0FBYztBQUMxQixZQUFZLEdBQUcsRUFBRSxJQUFJO0FBQ3JCLFNBQVMsQ0FBQyxDQUFDO0FBQ1gsS0FBSztBQUNMLElBQUksTUFBTSxJQUFJLEdBQUc7QUFDakIsUUFBUSxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUMsQ0FBQztBQUNuRSxRQUFRLE9BQU8sT0FBTyxDQUFDO0FBQ3ZCLFlBQVksY0FBYztBQUMxQixZQUFZLGNBQWMsRUFBRSxDQUFDLElBQUksRUFBRSxrQkFBa0IsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDO0FBQ3hFLFlBQVksR0FBRyxFQUFFLElBQUk7QUFDckIsU0FBUyxDQUFDLENBQUM7QUFDWCxLQUFLO0FBQ0wsSUFBSSxNQUFNLGNBQWMsR0FBRztBQUMzQixRQUFRLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQztBQUNqRixLQUFLO0FBQ0wsSUFBSSxNQUFNLGVBQWUsR0FBRztBQUM1QixRQUFRLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxDQUFDO0FBQ25FLFFBQVEsTUFBTSxNQUFNLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxjQUFjLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDM0YsUUFBUSxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3hGLEtBQUs7QUFDTCxJQUFJLE1BQU0sY0FBYyxDQUFDLE9BQU8sRUFBRTtBQUNsQyxRQUFRLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxLQUFLO0FBQ2hELFlBQVksTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0FBQ3hHLFlBQVksTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLE9BQU8sRUFBRSxHQUFHLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLHdCQUF3QixFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekgsU0FBUyxDQUFDLENBQUM7QUFDWCxLQUFLO0FBQ0w7O0FDcEhPLE1BQU0sS0FBSyxTQUFTLElBQUksQ0FBQztBQUNoQyxJQUFJLE9BQU8sQ0FBQztBQUNaLElBQUksSUFBSSxHQUFHLEdBQUc7QUFDZCxRQUFRLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsNEJBQTRCLENBQUMsQ0FBQztBQUM1SCxLQUFLO0FBQ0w7QUFDQSxJQUFJLFdBQVcsQ0FBQyxPQUFPLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUNsRCxRQUFRLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN2QixRQUFRLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0FBQy9CLEtBQUs7QUFDTDtBQUNBLElBQUksTUFBTSxlQUFlLEdBQUc7QUFDNUIsUUFBUSxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuRSxRQUFRLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDLENBQUM7QUFDdkcsUUFBUSxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsd0RBQXdELENBQUMsQ0FBQyxDQUFDO0FBQzFILEtBQUs7QUFDTCxJQUFJLFVBQVUsR0FBRyxNQUFNO0FBQ3ZCLFFBQVEsT0FBTztBQUNmLFlBQVksS0FBSyxFQUFFLENBQUMsK0JBQStCLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN2RSxZQUFZLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDeEQsWUFBWSxXQUFXLEVBQUU7QUFDekIsZ0JBQWdCLFdBQVcsRUFBRSxHQUFHO0FBQ2hDLGdCQUFnQixpQkFBaUIsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxNQUFNO0FBQ2xFLGdCQUFnQixTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPO0FBQy9DLGFBQWE7QUFDYixZQUFZLFFBQVEsRUFBRTtBQUN0QixnQkFBZ0IsUUFBUSxFQUFFO0FBQzFCLG9CQUFvQixPQUFPLEVBQUUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDO0FBQy9DLGlCQUFpQjtBQUNqQixhQUFhO0FBQ2IsU0FBUyxDQUFDO0FBQ1YsS0FBSyxDQUFDO0FBQ047O0FDaENPLE1BQU0sS0FBSyxTQUFTLElBQUksQ0FBQztBQUNoQyxJQUFJLE9BQU8sQ0FBQztBQUNaLElBQUksSUFBSSxHQUFHLEdBQUc7QUFDZCxRQUFRLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsd0RBQXdELENBQUMsQ0FBQztBQUN2SSxLQUFLO0FBQ0w7QUFDQSxJQUFJLFdBQVcsQ0FBQyxPQUFPLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUNsRCxRQUFRLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN2QixRQUFRLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0FBQy9CLEtBQUs7QUFDTDtBQUNBLElBQUksTUFBTSxlQUFlLEdBQUc7QUFDNUIsUUFBUSxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsNENBQTRDLENBQUMsQ0FBQyxDQUFDO0FBQzlHLEtBQUs7QUFDTCxJQUFJLFVBQVUsR0FBRyxNQUFNO0FBQ3ZCLFFBQVEsT0FBTztBQUNmLFlBQVksS0FBSyxFQUFFLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDOUMsWUFBWSxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3hELFlBQVksV0FBVyxFQUFFO0FBQ3pCLGdCQUFnQixtQkFBbUIsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxNQUFNO0FBQ3BFLGdCQUFnQixVQUFVLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLElBQUksTUFBTTtBQUMzRCxnQkFBZ0IsY0FBYyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxJQUFJLE1BQU07QUFDL0QsZ0JBQWdCLGNBQWMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxNQUFNO0FBQy9ELGFBQWE7QUFDYixZQUFZLE9BQU8sRUFBRSxDQUFDLHFDQUFxQyxDQUFDO0FBQzVELFlBQVksUUFBUSxFQUFFO0FBQ3RCLGdCQUFnQixRQUFRLEVBQUU7QUFDMUIsb0JBQW9CLE9BQU8sRUFBRSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUM7QUFDL0MsaUJBQWlCO0FBQ2pCLGFBQWE7QUFDYixTQUFTLENBQUM7QUFDVixLQUFLLENBQUM7QUFDTjs7QUNoQ08sTUFBTSxRQUFRLFNBQVMsSUFBSSxDQUFDO0FBQ25DLElBQUksT0FBTyxDQUFDO0FBQ1osSUFBSSxJQUFJLEdBQUcsR0FBRztBQUNkLFFBQVEsT0FBTyxDQUFDLHFCQUFxQixFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFDcEYsS0FBSztBQUNMO0FBQ0EsSUFBSSxXQUFXLENBQUMsT0FBTyxHQUFHLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUN2RCxRQUFRLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN2QixRQUFRLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0FBQy9CLEtBQUs7QUFDTDtBQUNBLElBQUksVUFBVSxHQUFHLE1BQU07QUFDdkIsUUFBUSxPQUFPO0FBQ2YsWUFBWSxLQUFLLEVBQUUsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNqRCxZQUFZLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDeEQsWUFBWSxXQUFXLEVBQUU7QUFDekIsZ0JBQWdCLGFBQWEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxNQUFNO0FBQzlELGdCQUFnQixpQkFBaUIsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxNQUFNO0FBQ2xFLGdCQUFnQixXQUFXLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLElBQUksTUFBTTtBQUM1RCxnQkFBZ0IseUJBQXlCLEVBQUUsS0FBSztBQUNoRCxnQkFBZ0Isb0JBQW9CLEVBQUUsOENBQThDO0FBQ3BGLGFBQWE7QUFDYixZQUFZLFFBQVEsRUFBRTtBQUN0QixnQkFBZ0IsUUFBUSxFQUFFO0FBQzFCLG9CQUFvQixPQUFPLEVBQUUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDO0FBQy9DLGlCQUFpQjtBQUNqQixhQUFhO0FBQ2IsU0FBUyxDQUFDO0FBQ1YsS0FBSyxDQUFDO0FBQ047O0FDM0JPLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxPQUFPLEtBQUs7QUFDOUMsSUFBSSxRQUFRLE9BQU8sQ0FBQyxJQUFJO0FBQ3hCLFFBQVEsS0FBSyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsVUFBVTtBQUN2RCxZQUFZLE9BQU8sSUFBSSxRQUFRLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFDbEUsUUFBUSxLQUFLLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxLQUFLO0FBQ2xELFlBQVksT0FBTyxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFDMUQsUUFBUSxLQUFLLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxLQUFLO0FBQ2xELFlBQVksT0FBTyxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFDMUQsS0FBSztBQUNMLENBQUM7O0FDWk0sTUFBTSxhQUFhLEdBQUcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxLQUFLO0FBQzlDLElBQUksTUFBTSxRQUFRLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzVDLElBQUksT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDekIsQ0FBQyxDQUFDO0FBQ0Y7QUFDQTtBQUNPLE1BQU0sY0FBYyxHQUFHLENBQUMsTUFBTSxLQUFLO0FBQzFDLElBQUksT0FBTyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUs7QUFDakYsUUFBUSxJQUFJLEtBQUssWUFBWSxDQUFDLENBQUMsVUFBVSxFQUFFO0FBQzNDLFlBQVksTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztBQUMzRCxZQUFZLE9BQU8sWUFBWSxLQUFLLElBQUksSUFBSSxPQUFPLFlBQVksS0FBSyxXQUFXLENBQUM7QUFDaEYsU0FBUztBQUNULFFBQVEsT0FBTyxLQUFLLENBQUM7QUFDckIsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xFLENBQUM7O0FDUEQsTUFBTSxPQUFPLEdBQUcsSUFBSUEsU0FBUyxFQUFFLENBQUM7QUFDaEMsTUFBTSxPQUFPLEdBQUcsTUFBTTtBQUN0QixJQUFJLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQztBQUN4QixJQUFJLE9BQU87QUFDWCxRQUFRLE1BQU0sRUFBRSxPQUFPLE9BQU8sS0FBSztBQUNuQyxZQUFZLFFBQVEsR0FBRyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNsRCxZQUFZLE9BQU8sUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ3BDLFNBQVM7QUFDVCxRQUFRLFlBQVksRUFBRSxZQUFZO0FBQ2xDLFlBQVksSUFBSSxRQUFRLEVBQUU7QUFDMUIsZ0JBQWdCLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDO0FBQ2xELGdCQUFnQixPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ3JELGdCQUFnQixNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTTtBQUNqRCxvQkFBb0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN0RCxpQkFBaUIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNO0FBQy9CLG9CQUFvQixPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLDJCQUEyQixDQUFDLENBQUMsQ0FBQztBQUN4RixpQkFBaUIsQ0FBQyxDQUFDO0FBQ25CLGFBQWE7QUFDYixTQUFTO0FBQ1QsS0FBSyxDQUFDO0FBQ04sQ0FBQyxDQUFDO0FBQ0YsT0FBTztBQUNQLEtBQUssSUFBSSxDQUFDLGVBQWUsQ0FBQztBQUMxQixLQUFLLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzlCLE9BQU87QUFDUCxLQUFLLE9BQU8sQ0FBQyxZQUFZLENBQUM7QUFDMUIsS0FBSyxXQUFXLENBQUMsa0JBQWtCLENBQUM7QUFDcEMsS0FBSyxTQUFTLENBQUMsSUFBSSxNQUFNLENBQUMsaUJBQWlCLEVBQUUsNEJBQTRCLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMzSixLQUFLLFNBQVMsQ0FBQyxJQUFJLE1BQU0sQ0FBQywyQkFBMkIsRUFBRSxzREFBc0QsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsaUJBQWlCLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztBQUNySyxLQUFLLFNBQVMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSxtREFBbUQsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsaUJBQWlCLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUN0SixLQUFLLFNBQVMsQ0FBQyxJQUFJLE1BQU0sQ0FBQywyQkFBMkIsRUFBRSx3REFBd0QsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsaUJBQWlCLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztBQUN2SyxLQUFLLFNBQVMsQ0FBQyxJQUFJLE1BQU0sQ0FBQywyQkFBMkIsRUFBRSw0REFBNEQsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsaUJBQWlCLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztBQUMzSyxLQUFLLFNBQVMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxTQUFTLEVBQUUsZ0RBQWdELENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDdEcsS0FBSyxTQUFTLENBQUMsSUFBSSxNQUFNLENBQUMsU0FBUyxFQUFFLDhDQUE4QyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3BHLEtBQUssU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLFdBQVcsRUFBRSwyQkFBMkIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNuRixLQUFLLE1BQU0sQ0FBQyxPQUFPLElBQUksYUFBYSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksRUFBRSx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzVILE9BQU87QUFDUCxLQUFLLE9BQU8sQ0FBQyxPQUFPLENBQUM7QUFDckIsS0FBSyxXQUFXLENBQUMsYUFBYSxDQUFDO0FBQy9CLEtBQUssU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLGlCQUFpQixFQUFFLHlCQUF5QixDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDbkosS0FBSyxTQUFTLENBQUMsSUFBSSxNQUFNLENBQUMsMkJBQTJCLEVBQUUseURBQXlELENBQUMsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDO0FBQ25LLEtBQUssU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLG1CQUFtQixFQUFFLG1EQUFtRCxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUNqSixLQUFLLFNBQVMsQ0FBQyxJQUFJLE1BQU0sQ0FBQywyQkFBMkIsRUFBRSxxREFBcUQsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUM7QUFDL0osS0FBSyxTQUFTLENBQUMsSUFBSSxNQUFNLENBQUMsMkJBQTJCLEVBQUUseURBQXlELENBQUMsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDO0FBQ25LLEtBQUssU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLFNBQVMsRUFBRSxnREFBZ0QsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN0RyxLQUFLLFNBQVMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxTQUFTLEVBQUUsOENBQThDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDcEcsS0FBSyxTQUFTLENBQUMsSUFBSSxNQUFNLENBQUMsV0FBVyxFQUFFLDJCQUEyQixDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ25GLEtBQUssTUFBTSxDQUFDLE9BQU8sSUFBSSxhQUFhLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxFQUFFLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDdkgsT0FBTztBQUNQLEtBQUssT0FBTyxDQUFDLE9BQU8sQ0FBQztBQUNyQixLQUFLLFdBQVcsQ0FBQyw0QkFBNEIsQ0FBQztBQUM5QyxLQUFLLFNBQVMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSx3Q0FBd0MsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ2xLLEtBQUssU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLHlCQUF5QixFQUFFLHFDQUFxQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ25NLEtBQUssU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLDJCQUEyQixFQUFFLGtEQUFrRCxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztBQUM1SixLQUFLLFNBQVMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSxtREFBbUQsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDakosS0FBSyxTQUFTLENBQUMsSUFBSSxNQUFNLENBQUMsMkJBQTJCLEVBQUUsb0dBQW9HLENBQUMsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDO0FBQzlNLEtBQUssU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLFNBQVMsRUFBRSxnREFBZ0QsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN0RyxLQUFLLFNBQVMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxTQUFTLEVBQUUsOENBQThDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDcEcsS0FBSyxTQUFTLENBQUMsSUFBSSxNQUFNLENBQUMsV0FBVyxFQUFFLDJCQUEyQixDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ25GLEtBQUssTUFBTSxDQUFDLE9BQU8sSUFBSSxhQUFhLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxFQUFFLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN2SSxPQUFPLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5RCxPQUFPLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxNQUFNO0FBQzNCLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGtEQUFrRCxDQUFDLENBQUMsQ0FBQztBQUN0RSxJQUFJLFlBQVksRUFBRSxDQUFDO0FBQ25CLENBQUMsQ0FBQyJ9
9277
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWJhc2UuanMiLCJzb3VyY2VzIjpbIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvQWN0aW9uSGFuZGxlci5qcyIsIi4uLy4uL2Rpc3Qvc3JjL3R5cGVzL0RhdGFiYXNlLmpzIiwiLi4vLi4vZGlzdC9zcmMvaGVscGVycy9uZXR3b3JrLmpzIiwiLi4vLi4vZGlzdC9zcmMvZGF0YWJhc2VzL2Jhc2UuanMiLCIuLi8uLi9kaXN0L3NyYy9kYXRhYmFzZXMvbXNzcWwuanMiLCIuLi8uLi9kaXN0L3NyYy9kYXRhYmFzZXMvbXlzcWwuanMiLCIuLi8uLi9kaXN0L3NyYy9kYXRhYmFzZXMvcG9zdGdyZXMuanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL2dldERhdGFiYXNlRW5naW5lLmpzIiwiLi4vLi4vZGlzdC9zcmMvaGVscGVycy90b0Fic29sdXRlUGF0aC5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvZ2V0VmVyc2lvbnMuanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL2dldFpvZERlZmF1bHRzLmpzIiwiLi4vLi4vZGlzdC9zcmMvY29tbWFuZHMvZGF0YWJhc2UuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXN5bmNFeGl0SG9vaywgZ3JhY2VmdWxFeGl0IH0gZnJvbSAnZXhpdC1ob29rJztcbmltcG9ydCB7IHogfSBmcm9tICd6b2QnO1xuZXhwb3J0IGNvbnN0IEFjdGlvbkhhbmRsZXIgPSBhc3luYyAocHJvZ3JhbSwgeyBhY3Rpb24sIGVycm9ySGFuZGxlciB9LCBvcHRpb25zKSA9PiB7XG4gICAgY29uc3Qgb3BzID0gb3B0aW9ucyB8fCBwcm9ncmFtLm9wdHMoKTtcbiAgICBhd2FpdCBuZXcgUHJvbWlzZSgoXywgcmVqZWN0KSA9PiB7XG4gICAgICAgIGxldCBlcnJvck1lc3NhZ2UgPSAnJztcbiAgICAgICAgYXN5bmNFeGl0SG9vayhhc3luYyAoY29kZSkgPT4ge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAoY29kZSAhPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCBlcnJvckhhbmRsZXIob3BzKS5jYXRjaCgoKSA9PiBudWxsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGVycm9yTWVzc2FnZSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3JNZXNzYWdlLnRyaW0oKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBXZSBhcmUgcmVqZWN0aW5nIHRoZSBwcm9taXNlIHRvIGF2b2lkIHRoZVxuICAgICAgICAgICAgICAgICAgICAvLyBcIkNhbGxpbmcgcHJvY2Vzcy5leGl0XCIgbG9nIG1lc3NhZ2UgZnJvbSBleGl0LWhvb2tcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KG51bGwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6IGVycjtcbiAgICAgICAgICAgICAgICByZWplY3QobWVzc2FnZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIHdhaXQ6IDYwICogMSAqIDEwMDBcbiAgICAgICAgfSk7XG4gICAgICAgIGFjdGlvbihvcHMpLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgICBpZiAoZXJyIGluc3RhbmNlb2Ygei5ab2RFcnJvcikge1xuICAgICAgICAgICAgICAgIGVyci5pc3N1ZXMuZm9yRWFjaChpc3N1ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSArPSBgVW5hYmxlIHRvIHBhcnNlIG9wdGlvbiAke2lzc3VlLnBhdGguam9pbignLCcpfTogJHtpc3N1ZS5tZXNzYWdlfVxcbmA7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChlcnIgaW5zdGFuY2VvZiBFcnJvciB8fCB0eXBlb2YgZXJyID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IGVyci50b1N0cmluZygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZ3JhY2VmdWxFeGl0KDEpO1xuICAgICAgICB9KTtcbiAgICB9KS5jYXRjaChtZXNzYWdlID0+IHtcbiAgICAgICAgaWYgKG1lc3NhZ2UgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHByb2dyYW0uZXJyb3IobWVzc2FnZSk7XG4gICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBlcnJvciBtZXNzYWdlLFxuICAgICAgICAgICAgLy8gd2UgY2FuIGFzc3VtZSBhIGNsZWFuIGV4aXRcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHByb2Nlc3MuZXhpdCgwKTtcbiAgICAgICAgfVxuICAgIH0pO1xufTtcbiIsImltcG9ydCB7IHogfSBmcm9tICd6b2QnO1xuaW1wb3J0IHZlcnNpb25zIGZyb20gJy4uLy4uL2Fzc2V0cy92ZXJzaW9ucy5qc29uJztcbmV4cG9ydCBjb25zdCBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMgPSB6LmVudW0oW1xuICAgICdwb3N0Z3Jlc3FsJyxcbiAgICAnbXlzcWwnLFxuICAgICdtc3NxbCdcbl0pO1xuZXhwb3J0IGNvbnN0IFN1cHBvcnRlZE1TU1FMRWRpdGlvbnMgPSB6LmVudW0oW1xuICAgICdEZXZlbG9wZXInLFxuICAgICdFeHByZXNzJyxcbiAgICAnU3RhbmRhcmQnLFxuICAgICdFbnRlcnByaXNlJyxcbiAgICAnRW50ZXJwcmlzZUNvcmUnXG5dKTtcbmV4cG9ydCBjb25zdCBEYXRhYmFzZU9wdGlvbnMgPSB6Lm9iamVjdCh7XG4gICAgbmFtZTogU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLFxuICAgIHBvcnQ6IHoubnVtYmVyKCkub3Ioei5zdHJpbmcoKS50cmFuc2Zvcm0oTnVtYmVyKS5yZWZpbmUoaXRlbSA9PiAhaXNOYU4oaXRlbSkpKSxcbiAgICBkYXRhYmFzZTogei5zdHJpbmcoKS5kZWZhdWx0KCdkY2R4JyksXG4gICAgdXNlcm5hbWU6IHouc3RyaW5nKCkuZGVmYXVsdCgnZGNkeCcpLFxuICAgIHBhc3N3b3JkOiB6LnN0cmluZygpLmRlZmF1bHQoJ2RjZHgnKSxcbiAgICBjbGVhbjogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gICAgcHJ1bmU6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICAgIHZlcmJvc2U6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICAgIGRyaXZlcjogei5zdHJpbmcoKVxufSk7XG5leHBvcnQgY29uc3QgUG9zdGdyZVNRTE9wdGlvbnMgPSBEYXRhYmFzZU9wdGlvbnMuZXh0ZW5kKHtcbiAgICBuYW1lOiBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMucmVmaW5lKGl0ZW0gPT4gaXRlbSA9PT0gU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5wb3N0Z3Jlc3FsKS5kZWZhdWx0KFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMucG9zdGdyZXNxbCksXG4gICAgdGFnOiB6LnN0cmluZygpLnJlZmluZShpdGVtID0+IHZlcnNpb25zW1N1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMucG9zdGdyZXNxbF0uaW5jbHVkZXMoaXRlbSkpLmRlZmF1bHQoJ2xhdGVzdCcpLFxuICAgIHBvcnQ6IHoubnVtYmVyKCkub3Ioei5zdHJpbmcoKS50cmFuc2Zvcm0oTnVtYmVyKS5yZWZpbmUoaXRlbSA9PiAhaXNOYU4oaXRlbSkpKS5kZWZhdWx0KDU0MzIpLFxuICAgIGRyaXZlcjogei5zdHJpbmcoKS5yZWZpbmUoaXRlbSA9PiBpdGVtID09PSAnb3JnLnBvc3RncmVzcWwuRHJpdmVyJykuZGVmYXVsdCgnb3JnLnBvc3RncmVzcWwuRHJpdmVyJylcbn0pO1xuZXhwb3J0IGNvbnN0IE15U1FMT3B0aW9ucyA9IERhdGFiYXNlT3B0aW9ucy5leHRlbmQoe1xuICAgIG5hbWU6IFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5yZWZpbmUoaXRlbSA9PiBpdGVtID09PSBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLm15c3FsKS5kZWZhdWx0KFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMubXlzcWwpLFxuICAgIHRhZzogei5zdHJpbmcoKS5yZWZpbmUoaXRlbSA9PiB2ZXJzaW9uc1tTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLm15c3FsXS5pbmNsdWRlcyhpdGVtKSkuZGVmYXVsdCgnbGF0ZXN0JyksXG4gICAgcG9ydDogei5udW1iZXIoKS5vcih6LnN0cmluZygpLnRyYW5zZm9ybShOdW1iZXIpLnJlZmluZShpdGVtID0+ICFpc05hTihpdGVtKSkpLmRlZmF1bHQoMzMwNiksXG4gICAgZHJpdmVyOiB6LnN0cmluZygpLnJlZmluZShpdGVtID0+IGl0ZW0gPT09ICdjb20ubXlzcWwuamRiYy5Ecml2ZXInKS5kZWZhdWx0KCdjb20ubXlzcWwuamRiYy5Ecml2ZXInKVxufSk7XG5leHBvcnQgY29uc3QgTVNTUUxPcHRpb25zID0gRGF0YWJhc2VPcHRpb25zLmV4dGVuZCh7XG4gICAgbmFtZTogU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLnJlZmluZShpdGVtID0+IGl0ZW0gPT09IFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMubXNzcWwpLmRlZmF1bHQoU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5tc3NxbCksXG4gICAgdGFnOiB6LnN0cmluZygpLnJlZmluZShpdGVtID0+IHZlcnNpb25zW1N1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMubXNzcWxdLmluY2x1ZGVzKGl0ZW0pKS5kZWZhdWx0KCdsYXRlc3QnKSxcbiAgICBlZGl0aW9uOiBTdXBwb3J0ZWRNU1NRTEVkaXRpb25zLmRlZmF1bHQoJ0RldmVsb3BlcicpLFxuICAgIHBvcnQ6IHoubnVtYmVyKCkub3Ioei5zdHJpbmcoKS50cmFuc2Zvcm0oTnVtYmVyKS5yZWZpbmUoaXRlbSA9PiAhaXNOYU4oaXRlbSkpKS5kZWZhdWx0KDE0MzMpLFxuICAgIHVzZXJuYW1lOiB6LnN0cmluZygpLnJlZmluZShpdGVtID0+IGl0ZW0gPT09ICdzYScpLmRlZmF1bHQoJ3NhJyksXG4gICAgcGFzc3dvcmQ6IHouc3RyaW5nKCkuZGVmYXVsdCgnRGF0YUNlbnRlckRYIScpLFxuICAgIGRyaXZlcjogei5zdHJpbmcoKS5yZWZpbmUoaXRlbSA9PiBpdGVtID09PSAnY29tLm1pY3Jvc29mdC5zcWxzZXJ2ZXIuamRiYy5TUUxTZXJ2ZXJEcml2ZXInKS5kZWZhdWx0KCdjb20ubWljcm9zb2Z0LnNxbHNlcnZlci5qZGJjLlNRTFNlcnZlckRyaXZlcicpXG59KTtcbiIsImV4cG9ydCBjb25zdCBuZXR3b3JrID0ge1xuICAgIG5hbWU6ICdzaGFyZWQnLFxuICAgIGRyaXZlcjogJ2JyaWRnZSdcbn07XG4iLCJpbXBvcnQgeyBzcGF3biB9IGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0IHsgZG93bkFsbCwgcHMsIHN0b3AsIHVwQWxsIH0gZnJvbSAnZG9ja2VyLWNvbXBvc2UvZGlzdC92Mi5qcyc7XG5pbXBvcnQgeyBncmFjZWZ1bEV4aXQgfSBmcm9tICdleGl0LWhvb2snO1xuaW1wb3J0IHsgZHVtcCB9IGZyb20gJ2pzLXlhbWwnO1xuaW1wb3J0IHsgY3dkIH0gZnJvbSAncHJvY2Vzcyc7XG5pbXBvcnQgeyBDb25uZWN0aW9uQWNxdWlyZVRpbWVvdXRFcnJvciwgQ29ubmVjdGlvbkVycm9yLCBDb25uZWN0aW9uUmVmdXNlZEVycm9yLCBDb25uZWN0aW9uVGltZWRPdXRFcnJvciwgU2VxdWVsaXplLCBUaW1lb3V0RXJyb3IgfSBmcm9tICdzZXF1ZWxpemUnO1xuaW1wb3J0IHsgbmV0d29yayB9IGZyb20gJy4uL2hlbHBlcnMvbmV0d29yayc7XG5leHBvcnQgY2xhc3MgQmFzZSB7XG4gICAgb3B0aW9ucztcbiAgICBzZXF1ZWxpemU7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENvbnN0cnVjdG9yXG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgICAgICAvLyBXZSBuZWVkIHRvIHVzZSAnbWFzdGVyJyBmb3IgbXNzcWwgYmVjYXVzZSBpdCBkb2VzIG5vdCBpbml0aWFsaXplIHRoZSBkYXRhYmFzZSBvbiBzdGFydFxuICAgICAgICBjb25zdCBkYXRhYmFzZSA9IHRoaXMub3B0aW9ucy5uYW1lID09PSAnbXNzcWwnID8gJ21hc3RlcicgOiB0aGlzLm9wdGlvbnMuZGF0YWJhc2U7XG4gICAgICAgIHRoaXMuc2VxdWVsaXplID0gbmV3IFNlcXVlbGl6ZShkYXRhYmFzZSwgdGhpcy5vcHRpb25zLnVzZXJuYW1lLCB0aGlzLm9wdGlvbnMucGFzc3dvcmQsIHtcbiAgICAgICAgICAgIGhvc3Q6ICdsb2NhbGhvc3QnLFxuICAgICAgICAgICAgcG9ydDogdGhpcy5vcHRpb25zLnBvcnQsXG4gICAgICAgICAgICBkaWFsZWN0OiB0aGlzLm9wdGlvbnMubmFtZS5yZXBsYWNlKCdwb3N0Z3Jlc3FsJywgJ3Bvc3RncmVzJyksXG4gICAgICAgICAgICByZXRyeToge1xuICAgICAgICAgICAgICAgIG1heDogMzAsXG4gICAgICAgICAgICAgICAgbWF0Y2g6IFtDb25uZWN0aW9uRXJyb3IsIFRpbWVvdXRFcnJvciwgQ29ubmVjdGlvblRpbWVkT3V0RXJyb3IsIENvbm5lY3Rpb25SZWZ1c2VkRXJyb3IsIENvbm5lY3Rpb25BY3F1aXJlVGltZW91dEVycm9yXSxcbiAgICAgICAgICAgICAgICBiYWNrb2ZmQmFzZTogMTAwMCxcbiAgICAgICAgICAgICAgICBiYWNrb2ZmRXhwb25lbnQ6IDFcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsb2dnaW5nOiBmYWxzZVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFB1YmxpYyBNZXRob2RzXG4gICAgYXN5bmMgcnVuKHNxbCwgbG9nZ2luZykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5zZXF1ZWxpemUucXVlcnkoc3FsLCB7IGxvZ2dpbmcgfSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgdHJ5aW5nIHRvIHJ1biB0aGUgZm9sbG93aW5nIFNRTCBxdWVyeTonLCBzcWwsIGVycik7XG4gICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgc3RhcnQoY2xlYW4gPSB0aGlzLm9wdGlvbnMuY2xlYW4pIHtcbiAgICAgICAgY29uc29sZS5sb2coYFN0YXJ0aW5nIGluc3RhbmNlIG9mICR7dGhpcy5vcHRpb25zLm5hbWV9Li4uIPCfkoNgKTtcbiAgICAgICAgaWYgKGNsZWFuKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmRvd24oKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCB0aGlzLnVwKCk7XG4gICAgICAgIGNvbnN0IGlzQXZhaWxhYmxlID0gYXdhaXQgdGhpcy53YWl0VW50aWxSZWFkeSgpO1xuICAgICAgICBpZiAoIWlzQXZhaWxhYmxlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgRmFpbGVkIHRvIHZlcmlmeSBzdGF0dXMgb2YgJHt0aGlzLm9wdGlvbnMubmFtZX0g4puUYCk7XG4gICAgICAgICAgICBncmFjZWZ1bEV4aXQoMSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgRGF0YWJhc2UgaXMgcmVhZHkgYW5kIGFjY2VwdGluZyBjb25uZWN0aW9ucyBvbiBsb2NhbGhvc3Q6JHt0aGlzLm9wdGlvbnMucG9ydH0g8J+XhO+4j2ApO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLm9uRGF0YWJhc2VSZWFkeSgpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZXJ2aWNlID0gYXdhaXQgdGhpcy5nZXRTZXJ2aWNlU3RhdGUoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlcnZpY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuc2hvd0RvY2tlckxvZ3Moc2VydmljZS5uYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICBncmFjZWZ1bEV4aXQoMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgc3RvcChwcnVuZSA9IHRoaXMub3B0aW9ucy5wcnVuZSkge1xuICAgICAgICBpZiAocHJ1bmUpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZG93bigpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgY29uZmlnQXNTdHJpbmcgPSBkdW1wKHRoaXMuZ2V0RG9ja2VyQ29tcG9zZUNvbmZpZygpKTtcbiAgICAgICAgICAgIGF3YWl0IHN0b3Aoe1xuICAgICAgICAgICAgICAgIGN3ZDogY3dkKCksXG4gICAgICAgICAgICAgICAgY29uZmlnQXNTdHJpbmcsXG4gICAgICAgICAgICAgICAgbG9nOiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyBvbkRhdGFiYXNlUmVhZHkoKSB7IH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJpdmF0ZSBNZXRob2RzXG4gICAgZ2V0RG9ja2VyQ29tcG9zZUNvbmZpZygpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNlcnZpY2VzOiB7XG4gICAgICAgICAgICAgICAgJ2RiJzogdGhpcy5nZXRTZXJ2aWNlKClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuZXR3b3Jrczoge1xuICAgICAgICAgICAgICAgICdzaGFyZWQnOiBuZXR3b3JrXG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxuICAgIGFzeW5jIHVwKCkge1xuICAgICAgICBjb25zdCBjb25maWdBc1N0cmluZyA9IGR1bXAodGhpcy5nZXREb2NrZXJDb21wb3NlQ29uZmlnKCkpO1xuICAgICAgICByZXR1cm4gdXBBbGwoe1xuICAgICAgICAgICAgY3dkOiBjd2QoKSxcbiAgICAgICAgICAgIGNvbmZpZ0FzU3RyaW5nLFxuICAgICAgICAgICAgbG9nOiB0cnVlXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBhc3luYyBkb3duKCkge1xuICAgICAgICBjb25zdCBjb25maWdBc1N0cmluZyA9IGR1bXAodGhpcy5nZXREb2NrZXJDb21wb3NlQ29uZmlnKCkpO1xuICAgICAgICByZXR1cm4gZG93bkFsbCh7XG4gICAgICAgICAgICBjd2Q6IGN3ZCgpLFxuICAgICAgICAgICAgY29uZmlnQXNTdHJpbmcsXG4gICAgICAgICAgICBjb21tYW5kT3B0aW9uczogWyctdicsICctLXJlbW92ZS1vcnBoYW5zJywgJy0tcm1pJywgJ2xvY2FsJ10sXG4gICAgICAgICAgICBsb2c6IHRydWVcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGFzeW5jIHdhaXRVbnRpbFJlYWR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zZXF1ZWxpemUuYXV0aGVudGljYXRlKCkudGhlbigoKSA9PiB0cnVlKS5jYXRjaCgoKSA9PiBmYWxzZSk7XG4gICAgfVxuICAgIGFzeW5jIGdldFNlcnZpY2VTdGF0ZSgpIHtcbiAgICAgICAgY29uc3QgY29uZmlnQXNTdHJpbmcgPSBkdW1wKHRoaXMuZ2V0RG9ja2VyQ29tcG9zZUNvbmZpZygpKTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcHMoe1xuICAgICAgICAgICAgY3dkOiBjd2QoKSxcbiAgICAgICAgICAgIGNvbmZpZ0FzU3RyaW5nLFxuICAgICAgICAgICAgY29tbWFuZE9wdGlvbnM6IFsnLS1hbGwnXSxcbiAgICAgICAgICAgIGxvZzogZmFsc2VcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXN1bHQuZGF0YS5zZXJ2aWNlcy5maW5kKGl0ZW0gPT4ge1xuICAgICAgICAgICAgY29uc3QgWywgc2VydmljZV0gPSBpdGVtLm5hbWUuc3BsaXQoJy0nKTtcbiAgICAgICAgICAgIHJldHVybiBzZXJ2aWNlID09PSB0aGlzLm9wdGlvbnMubmFtZTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGFzeW5jIHNob3dEb2NrZXJMb2dzKHNlcnZpY2UpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGRvY2tlciA9IHNwYXduKCdkb2NrZXInLCBbJ2xvZ3MnLCAnLWYnLCAnLW4nLCAnNTAwMCcsIHNlcnZpY2VdLCB7IHN0ZGlvOiAnaW5oZXJpdCcgfSk7XG4gICAgICAgICAgICBkb2NrZXIub24oJ2V4aXQnLCAoY29kZSkgPT4gKGNvZGUgPT09IDApID8gcmVzb2x2ZSgpIDogcmVqZWN0KG5ldyBFcnJvcihgRG9ja2VyIGV4aXRlZCB3aXRoIGNvZGUgJHtjb2RlfWApKSk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiIsImltcG9ydCB7IE1TU1FMT3B0aW9ucyB9IGZyb20gJy4uL3R5cGVzL0RhdGFiYXNlJztcbmltcG9ydCB7IEJhc2UgfSBmcm9tICcuL2Jhc2UnO1xuZXhwb3J0IGNsYXNzIE1TU1FMIGV4dGVuZHMgQmFzZSB7XG4gICAgb3B0aW9ucztcbiAgICBnZXQgdXJsKCkge1xuICAgICAgICByZXR1cm4gYGpkYmM6c3Fsc2VydmVyOi8vZGI6JHt0aGlzLm9wdGlvbnMucG9ydH07ZGF0YWJhc2VOYW1lPSR7dGhpcy5vcHRpb25zLmRhdGFiYXNlfTt0cnVzdFNlcnZlckNlcnRpZmljYXRlPXRydWVgO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ29uc3RydWN0b3JcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zID0gTVNTUUxPcHRpb25zLnBhcnNlKHt9KSkge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByb3RlY3RlZCBNZXRob2RzXG4gICAgYXN5bmMgb25EYXRhYmFzZVJlYWR5KCkge1xuICAgICAgICBhd2FpdCB0aGlzLnJ1bihgQ1JFQVRFIERBVEFCQVNFICR7dGhpcy5vcHRpb25zLmRhdGFiYXNlfWApO1xuICAgICAgICBhd2FpdCB0aGlzLnJ1bihgQUxURVIgREFUQUJBU0UgJHt0aGlzLm9wdGlvbnMuZGF0YWJhc2V9IENPTExBVEUgU1FMX0xhdGluMV9HZW5lcmFsX0NQMV9DU19BU2ApO1xuICAgICAgICBhd2FpdCB0aGlzLnJ1bihgQUxURVIgREFUQUJBU0UgJHt0aGlzLm9wdGlvbnMuZGF0YWJhc2V9IFNFVCBSRUFEX0NPTU1JVFRFRF9TTkFQU0hPVCBPTiBXSVRIIFJPTExCQUNLIElNTUVESUFURTtgKTtcbiAgICB9XG4gICAgZ2V0U2VydmljZSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGltYWdlOiBgbWNyLm1pY3Jvc29mdC5jb20vbXNzcWwvc2VydmVyOiR7dGhpcy5vcHRpb25zLnRhZ31gLFxuICAgICAgICAgICAgcG9ydHM6IFtgJHt0aGlzLm9wdGlvbnMucG9ydCB8fCAxNDMzfToxNDMzYF0sXG4gICAgICAgICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICAgICAgICAgIEFDQ0VQVF9FVUxBOiAneScsXG4gICAgICAgICAgICAgICAgTVNTUUxfU0FfUEFTU1dPUkQ6IHRoaXMub3B0aW9ucy5wYXNzd29yZCB8fCAnZGNkeCcsXG4gICAgICAgICAgICAgICAgTVNTUUxfUElEOiB0aGlzLm9wdGlvbnMuZWRpdGlvblxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5ldHdvcmtzOiB7XG4gICAgICAgICAgICAgICAgJ3NoYXJlZCc6IHtcbiAgICAgICAgICAgICAgICAgICAgYWxpYXNlczogWydkYicsICdkYXRhYmFzZSddXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH07XG59XG4iLCJpbXBvcnQgeyBNeVNRTE9wdGlvbnMgfSBmcm9tICcuLi90eXBlcy9EYXRhYmFzZSc7XG5pbXBvcnQgeyBCYXNlIH0gZnJvbSAnLi9iYXNlJztcbmV4cG9ydCBjbGFzcyBNeVNRTCBleHRlbmRzIEJhc2Uge1xuICAgIG9wdGlvbnM7XG4gICAgZ2V0IHVybCgpIHtcbiAgICAgICAgcmV0dXJuIGBqZGJjOm15c3FsOi8vZGI6JHt0aGlzLm9wdGlvbnMucG9ydH0vJHt0aGlzLm9wdGlvbnMuZGF0YWJhc2V9P3Nlc3Npb25WYXJpYWJsZXM9dHJhbnNhY3Rpb25faXNvbGF0aW9uPSdSRUFELUNPTU1JVFRFRCdgO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ29uc3RydWN0b3JcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zID0gTXlTUUxPcHRpb25zLnBhcnNlKHt9KSkge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByb3RlY3RlZCBNZXRob2RzXG4gICAgYXN5bmMgb25EYXRhYmFzZVJlYWR5KCkge1xuICAgICAgICBhd2FpdCB0aGlzLnJ1bihgQUxURVIgREFUQUJBU0UgJHt0aGlzLm9wdGlvbnMuZGF0YWJhc2V9IENIQVJBQ1RFUiBTRVQgJ3V0ZjhtYjQnIENPTExBVEUgdXRmOG1iNF9iaW5gKTtcbiAgICB9XG4gICAgZ2V0U2VydmljZSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGltYWdlOiBgbXlzcWw6JHt0aGlzLm9wdGlvbnMudGFnfWAsXG4gICAgICAgICAgICBwb3J0czogW2Ake3RoaXMub3B0aW9ucy5wb3J0IHx8IDMzMDZ9OjMzMDZgXSxcbiAgICAgICAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgICAgICAgICAgTVlTUUxfUk9PVF9QQVNTV09SRDogdGhpcy5vcHRpb25zLnBhc3N3b3JkIHx8ICdkY2R4JyxcbiAgICAgICAgICAgICAgICBNWVNRTF9VU0VSOiB0aGlzLm9wdGlvbnMudXNlcm5hbWUgfHwgJ2RjZHgnLFxuICAgICAgICAgICAgICAgIE1ZU1FMX1BBU1NXT1JEOiB0aGlzLm9wdGlvbnMucGFzc3dvcmQgfHwgJ2RjZHgnLFxuICAgICAgICAgICAgICAgIE1ZU1FMX0RBVEFCQVNFOiB0aGlzLm9wdGlvbnMuZGF0YWJhc2UgfHwgJ2RjZHgnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29tbWFuZDogWyctLWxvZ19iaW5fdHJ1c3RfZnVuY3Rpb25fY3JlYXRvcnM9MSddLFxuICAgICAgICAgICAgbmV0d29ya3M6IHtcbiAgICAgICAgICAgICAgICAnc2hhcmVkJzoge1xuICAgICAgICAgICAgICAgICAgICBhbGlhc2VzOiBbJ2RiJywgJ2RhdGFiYXNlJ11cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfTtcbn1cbiIsImltcG9ydCB7IFBvc3RncmVTUUxPcHRpb25zIH0gZnJvbSAnLi4vdHlwZXMvRGF0YWJhc2UnO1xuaW1wb3J0IHsgQmFzZSB9IGZyb20gJy4vYmFzZSc7XG5leHBvcnQgY2xhc3MgUG9zdGdyZXMgZXh0ZW5kcyBCYXNlIHtcbiAgICBvcHRpb25zO1xuICAgIGdldCB1cmwoKSB7XG4gICAgICAgIHJldHVybiBgamRiYzpwb3N0Z3Jlc3FsOi8vZGI6JHt0aGlzLm9wdGlvbnMucG9ydH0vJHt0aGlzLm9wdGlvbnMuZGF0YWJhc2V9YDtcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENvbnN0cnVjdG9yXG4gICAgY29uc3RydWN0b3Iob3B0aW9ucyA9IFBvc3RncmVTUUxPcHRpb25zLnBhcnNlKHt9KSkge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByb3RlY3RlZCBNZXRob2RzXG4gICAgZ2V0U2VydmljZSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGltYWdlOiBgcG9zdGdyZXM6JHt0aGlzLm9wdGlvbnMudGFnfWAsXG4gICAgICAgICAgICBwb3J0czogW2Ake3RoaXMub3B0aW9ucy5wb3J0IHx8IDU0MzJ9OjU0MzJgXSxcbiAgICAgICAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgICAgICAgICAgUE9TVEdSRVNfVVNFUjogdGhpcy5vcHRpb25zLnVzZXJuYW1lIHx8ICdkY2R4JyxcbiAgICAgICAgICAgICAgICBQT1NUR1JFU19QQVNTV09SRDogdGhpcy5vcHRpb25zLnBhc3N3b3JkIHx8ICdkY2R4JyxcbiAgICAgICAgICAgICAgICBQT1NUR1JFU19EQjogdGhpcy5vcHRpb25zLmRhdGFiYXNlIHx8ICdkY2R4JyxcbiAgICAgICAgICAgICAgICBQT1NUR1JFU19IT1NUX0FVVEhfTUVUSE9EOiAnbWQ1JyxcbiAgICAgICAgICAgICAgICBQT1NUR1JFU19JTklUREJfQVJHUzogJy0tZW5jb2Rpbmc9VVRGLTggLS1sYy1jb2xsYXRlPUMgLS1sYy1jdHlwZT1DJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5ldHdvcmtzOiB7XG4gICAgICAgICAgICAgICAgJ3NoYXJlZCc6IHtcbiAgICAgICAgICAgICAgICAgICAgYWxpYXNlczogWydkYicsICdkYXRhYmFzZSddXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH07XG59XG4iLCJpbXBvcnQgeyBNU1NRTCB9IGZyb20gJy4uL2RhdGFiYXNlcy9tc3NxbCc7XG5pbXBvcnQgeyBNeVNRTCB9IGZyb20gJy4uL2RhdGFiYXNlcy9teXNxbCc7XG5pbXBvcnQgeyBQb3N0Z3JlcyB9IGZyb20gJy4uL2RhdGFiYXNlcy9wb3N0Z3Jlcyc7XG5pbXBvcnQgeyBNU1NRTE9wdGlvbnMsIE15U1FMT3B0aW9ucywgUG9zdGdyZVNRTE9wdGlvbnMsIFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcyB9IGZyb20gJy4uL3R5cGVzL0RhdGFiYXNlJztcbmV4cG9ydCBjb25zdCBnZXREYXRhYmFzZUVuZ2luZSA9IChvcHRpb25zLCB0YWcpID0+IHtcbiAgICBzd2l0Y2ggKG9wdGlvbnMubmFtZSkge1xuICAgICAgICBjYXNlIFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMucG9zdGdyZXNxbDpcbiAgICAgICAgICAgIHJldHVybiBuZXcgUG9zdGdyZXMoUG9zdGdyZVNRTE9wdGlvbnMucGFyc2UoeyAuLi5vcHRpb25zLCB0YWcgfSkpO1xuICAgICAgICBjYXNlIFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMubXlzcWw6XG4gICAgICAgICAgICByZXR1cm4gbmV3IE15U1FMKE15U1FMT3B0aW9ucy5wYXJzZSh7IC4uLm9wdGlvbnMsIHRhZyB9KSk7XG4gICAgICAgIGNhc2UgU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5tc3NxbDpcbiAgICAgICAgICAgIHJldHVybiBuZXcgTVNTUUwoTVNTUUxPcHRpb25zLnBhcnNlKHsgLi4ub3B0aW9ucywgdGFnIH0pKTtcbiAgICB9XG59O1xuIiwiaW1wb3J0IHsgcmVhbHBhdGhTeW5jIH0gZnJvbSAnZnMnO1xuaW1wb3J0IHsgZGlybmFtZSwgam9pbiB9IGZyb20gJ3BhdGgnO1xuZXhwb3J0IGNvbnN0IHRvQWJzb2x1dGVQYXRoID0gKHJlbGF0aXZlUGF0aCkgPT4ge1xuICAgIGNvbnN0IFssIGZpbGVQYXRoXSA9IHByb2Nlc3MuYXJndjtcbiAgICBjb25zdCBleGVjdXRhYmxlRmlsZURpciA9IGRpcm5hbWUocmVhbHBhdGhTeW5jKGZpbGVQYXRoKSk7XG4gICAgY29uc3QgYmFzZWRpciA9IGV4ZWN1dGFibGVGaWxlRGlyLnN1YnN0cmluZygwLCBleGVjdXRhYmxlRmlsZURpci5pbmRleE9mKCdkY2R4JykgKyA0KTtcbiAgICByZXR1cm4gam9pbihiYXNlZGlyLCByZWxhdGl2ZVBhdGgucmVwbGFjZUFsbCgnLi4vJywgJycpKTtcbn07XG4iLCJpbXBvcnQgeyByZWFkRmlsZVN5bmMgfSBmcm9tICdmcyc7XG5pbXBvcnQgeyB0b0Fic29sdXRlUGF0aCB9IGZyb20gJy4vdG9BYnNvbHV0ZVBhdGgnO1xuZXhwb3J0IGNvbnN0IGdldFZlcnNpb25zID0gKCkgPT4ge1xuICAgIGNvbnN0IGNvbnRlbnQgPSByZWFkRmlsZVN5bmModG9BYnNvbHV0ZVBhdGgoJy4uLy4uL2Fzc2V0cy92ZXJzaW9ucy5qc29uJyksICd1dGYtOCcpO1xuICAgIGNvbnN0IHZlcnNpb25zID0gSlNPTi5wYXJzZShjb250ZW50KTtcbiAgICByZXR1cm4gdmVyc2lvbnM7XG59O1xuIiwiaW1wb3J0IHsgeiB9IGZyb20gJ3pvZCc7XG5leHBvcnQgY29uc3QgZ2V0Wm9kRGVmYXVsdCA9IChzY2hlbWEsIGtleSkgPT4ge1xuICAgIGNvbnN0IGRlZmF1bHRzID0gZ2V0Wm9kRGVmYXVsdHMoc2NoZW1hKTtcbiAgICByZXR1cm4gZGVmYXVsdHNba2V5XTtcbn07XG4vLyBDb2RlIHNuaXBwZXQgYnkgSmFjb2IgV2Vpc2VuYnVyZ2VyIChodHRwczovL2dpdGh1Yi5jb20vSmFjb2JXZWlzZW5idXJnZXIpXG4vLyBUYWtlbiBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9jb2xpbmhhY2tzL3pvZC9kaXNjdXNzaW9ucy8xOTUzI2Rpc2N1c3Npb25jb21tZW50LTQ4MTE1ODhcbmV4cG9ydCBjb25zdCBnZXRab2REZWZhdWx0cyA9IChzY2hlbWEpID0+IHtcbiAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKHNjaGVtYS5zaGFwZSkuZmlsdGVyKChbLCB2YWx1ZV0pID0+IHtcbiAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2Ygei5ab2REZWZhdWx0KSB7XG4gICAgICAgICAgICBjb25zdCBkZWZhdWx0VmFsdWUgPSB2YWx1ZS5fZGVmLmRlZmF1bHRWYWx1ZSgpO1xuICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgZGVmYXVsdFZhbHVlICE9PSAndW5kZWZpbmVkJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSkubWFwKChba2V5LCB2YWx1ZV0pID0+IChba2V5LCB2YWx1ZS5fZGVmLmRlZmF1bHRWYWx1ZSgpXSkpKTtcbn07XG4iLCIjIS91c3IvYmluL2VudiBub2RlXG5pbXBvcnQgeyBDb21tYW5kIGFzIENvbW1hbmRlciwgT3B0aW9uIH0gZnJvbSAnY29tbWFuZGVyJztcbmltcG9ydCB7IGdyYWNlZnVsRXhpdCB9IGZyb20gJ2V4aXQtaG9vayc7XG5pbXBvcnQgeyBBY3Rpb25IYW5kbGVyIH0gZnJvbSAnLi4vaGVscGVycy9BY3Rpb25IYW5kbGVyJztcbmltcG9ydCB7IGdldERhdGFiYXNlRW5naW5lIH0gZnJvbSAnLi4vaGVscGVycy9nZXREYXRhYmFzZUVuZ2luZSc7XG5pbXBvcnQgeyBnZXRWZXJzaW9ucyB9IGZyb20gJy4uL2hlbHBlcnMvZ2V0VmVyc2lvbnMnO1xuaW1wb3J0IHsgZ2V0Wm9kRGVmYXVsdCB9IGZyb20gJy4uL2hlbHBlcnMvZ2V0Wm9kRGVmYXVsdHMnO1xuaW1wb3J0IHsgTVNTUUxPcHRpb25zLCBNeVNRTE9wdGlvbnMsIFBvc3RncmVTUUxPcHRpb25zLCBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMsIFN1cHBvcnRlZE1TU1FMRWRpdGlvbnMgfSBmcm9tICcuLi90eXBlcy9EYXRhYmFzZSc7XG5jb25zdCBwcm9ncmFtID0gbmV3IENvbW1hbmRlcigpO1xuY29uc3QgdmVyc2lvbnMgPSBnZXRWZXJzaW9ucygpO1xuY29uc3QgQ29tbWFuZCA9ICgpID0+IHtcbiAgICBsZXQgaW5zdGFuY2UgPSBudWxsO1xuICAgIHJldHVybiB7XG4gICAgICAgIGFjdGlvbjogYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICAgICAgICAgIGluc3RhbmNlID0gZ2V0RGF0YWJhc2VFbmdpbmUob3B0aW9ucyk7XG4gICAgICAgICAgICByZXR1cm4gaW5zdGFuY2Uuc3RhcnQoKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3JIYW5kbGVyOiBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoaW5zdGFuY2UpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IG5hbWUgfSA9IGluc3RhbmNlLm9wdGlvbnM7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFN0b3BwaW5nICR7bmFtZX0uLi4g4o+zYCk7XG4gICAgICAgICAgICAgICAgYXdhaXQgaW5zdGFuY2Uuc3RvcCgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgU3RvcHBlZCAke25hbWV9IPCfkqpgKTtcbiAgICAgICAgICAgICAgICB9KS5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBGYWlsZWQgdG8gc3RvcHBlZCAke25hbWV9LCBtYW51YWwgYWN0aW9uIGlzIHJlcXVpcmVkYCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xufTtcbnByb2dyYW1cbiAgICAubmFtZSgnZGNkeCBkYXRhYmFzZScpXG4gICAgLnNob3dIZWxwQWZ0ZXJFcnJvcih0cnVlKTtcbnByb2dyYW1cbiAgICAuY29tbWFuZCgncG9zdGdyZXNxbCcpXG4gICAgLmRlc2NyaXB0aW9uKCdTdGFydCBQb3N0Z3JlU1FMJylcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy10LCAtLXRhZyA8dGFnPicsICdUaGUgRG9ja2VyIHRhZyBvZiBQb3N0Z3JlcycpLmNob2ljZXModmVyc2lvbnNbU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5wb3N0Z3Jlc3FsXSkuZGVmYXVsdCgnbGF0ZXN0JykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctZCwgLS1kYXRhYmFzZSA8ZGF0YWJhc2U+JywgJ1RoZSB2YWx1ZSBwYXNzZWQgdG8gUE9TVEdSRVNfREIgZW52aXJvbm1lbnQgdmFyaWFibGUnKS5kZWZhdWx0KGdldFpvZERlZmF1bHQoUG9zdGdyZVNRTE9wdGlvbnMsICdkYXRhYmFzZScpKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy1wLCAtLXBvcnQgPHBvcnQ+JywgJ1RoZSBwb3J0IG9uIHdoaWNoIHRoZSBkYXRhYmFzZSB3aWxsIGJlIGFjY2Vzc2libGUnKS5kZWZhdWx0KGdldFpvZERlZmF1bHQoUG9zdGdyZVNRTE9wdGlvbnMsICdwb3J0JykpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLVUsIC0tdXNlcm5hbWUgPHVzZXJuYW1lPicsICdUaGUgdmFsdWUgcGFzc2VkIHRvIFBPU1RHUkVTX1VTRVIgZW52aXJvbm1lbnQgdmFyaWFibGUnKS5kZWZhdWx0KGdldFpvZERlZmF1bHQoUG9zdGdyZVNRTE9wdGlvbnMsICd1c2VybmFtZScpKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy1QLCAtLXBhc3N3b3JkIDxwYXNzd29yZD4nLCAnVGhlIHZhbHVlIHBhc3NlZCB0byBQT1NUR1JFU19QQVNTV09SRCBlbnZpcm9ubWVudCB2YXJpYWJsZScpLmRlZmF1bHQoZ2V0Wm9kRGVmYXVsdChQb3N0Z3JlU1FMT3B0aW9ucywgJ3Bhc3N3b3JkJykpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1jbGVhbicsICdSZW1vdmUgZGF0YSBmaWxlcyBiZWZvcmUgc3RhcnRpbmcgdGhlIGRhdGFiYXNlJykuZGVmYXVsdChmYWxzZSkpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLXBydW5lJywgJ1JlbW92ZSBkYXRhIGZpbGVzIHdoZW4gc3RvcHBpbmcgdGhlIGRhdGFiYXNlJykuZGVmYXVsdChmYWxzZSkpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLXZlcmJvc2UnLCAnT3V0cHV0IGRhdGFiYXNlIGxvZyBmaWxlcycpLmRlZmF1bHQoZmFsc2UpKVxuICAgIC5hY3Rpb24ob3B0aW9ucyA9PiBBY3Rpb25IYW5kbGVyKHByb2dyYW0sIENvbW1hbmQoKSwgeyAuLi5vcHRpb25zLCBuYW1lOiBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLnBvc3RncmVzcWwgfSkpO1xucHJvZ3JhbVxuICAgIC5jb21tYW5kKCdteXNxbCcpXG4gICAgLmRlc2NyaXB0aW9uKCdTdGFydCBNeVNRTCcpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctdCwgLS10YWcgPHRhZz4nLCAnVGhlIERvY2tlciB0YWcgb2YgTXlTUUwnKS5jaG9pY2VzKHZlcnNpb25zW1N1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMubXlzcWxdKS5kZWZhdWx0KCdsYXRlc3QnKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy1kLCAtLWRhdGFiYXNlIDxkYXRhYmFzZT4nLCAnVGhlIHZhbHVlIHBhc3NlZCB0byBNWVNRTF9EQVRBQkFTRSBlbnZpcm9ubWVudCB2YXJpYWJsZScpLmRlZmF1bHQoZ2V0Wm9kRGVmYXVsdChNeVNRTE9wdGlvbnMsICdkYXRhYmFzZScpKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy1wLCAtLXBvcnQgPHBvcnQ+JywgJ1RoZSBwb3J0IG9uIHdoaWNoIHRoZSBkYXRhYmFzZSB3aWxsIGJlIGFjY2Vzc2libGUnKS5kZWZhdWx0KGdldFpvZERlZmF1bHQoTXlTUUxPcHRpb25zLCAncG9ydCcpKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy1VLCAtLXVzZXJuYW1lIDx1c2VybmFtZT4nLCAnVGhlIHZhbHVlIHBhc3NlZCB0byBNWVNRTF9VU0VSIGVudmlyb25tZW50IHZhcmlhYmxlJykuZGVmYXVsdChnZXRab2REZWZhdWx0KE15U1FMT3B0aW9ucywgJ3VzZXJuYW1lJykpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLVAsIC0tcGFzc3dvcmQgPHBhc3N3b3JkPicsICdUaGUgdmFsdWUgcGFzc2VkIHRvIE1ZU1FMX1BBU1NXT1JEIGVudmlyb25tZW50IHZhcmlhYmxlJykuZGVmYXVsdChnZXRab2REZWZhdWx0KE15U1FMT3B0aW9ucywgJ3Bhc3N3b3JkJykpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1jbGVhbicsICdSZW1vdmUgZGF0YSBmaWxlcyBiZWZvcmUgc3RhcnRpbmcgdGhlIGRhdGFiYXNlJykuZGVmYXVsdChmYWxzZSkpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLXBydW5lJywgJ1JlbW92ZSBkYXRhIGZpbGVzIHdoZW4gc3RvcHBpbmcgdGhlIGRhdGFiYXNlJykuZGVmYXVsdChmYWxzZSkpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLXZlcmJvc2UnLCAnT3V0cHV0IGRhdGFiYXNlIGxvZyBmaWxlcycpLmRlZmF1bHQoZmFsc2UpKVxuICAgIC5hY3Rpb24ob3B0aW9ucyA9PiBBY3Rpb25IYW5kbGVyKHByb2dyYW0sIENvbW1hbmQoKSwgeyAuLi5vcHRpb25zLCBuYW1lOiBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLm15c3FsIH0pKTtcbnByb2dyYW1cbiAgICAuY29tbWFuZCgnbXNzcWwnKVxuICAgIC5kZXNjcmlwdGlvbignU3RhcnQgTWljcm9zb2Z0IFNRTCBTZXJ2ZXInKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLXQsIC0tdGFnIDx0YWc+JywgJ1RoZSBEb2NrZXIgdGFnIG9mIE1pY3Jvc29mdCBTUUwgU2VydmVyJykuY2hvaWNlcyh2ZXJzaW9uc1tTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLm1zc3FsXSkuZGVmYXVsdCgnbGF0ZXN0JykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctZSwgLS1lZGl0aW9uIDxlZGl0aW9uPicsICdUaGUgZWRpdGlvbiBvZiBNaWNyb3NvZnQgU1FMIFNlcnZlcicpLmNob2ljZXMoT2JqZWN0LnZhbHVlcyhTdXBwb3J0ZWRNU1NRTEVkaXRpb25zLlZhbHVlcykpLmRlZmF1bHQoU3VwcG9ydGVkTVNTUUxFZGl0aW9ucy5WYWx1ZXMuRGV2ZWxvcGVyKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy1kLCAtLWRhdGFiYXNlIDxkYXRhYmFzZT4nLCAnVGhlIG5hbWUgb2YgdGhlIGRhdGFiYXNlIChhdXRvbWF0aWNhbGx5IGNyZWF0ZWQpJykuZGVmYXVsdChnZXRab2REZWZhdWx0KE1TU1FMT3B0aW9ucywgJ2RhdGFiYXNlJykpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLXAsIC0tcG9ydCA8cG9ydD4nLCAnVGhlIHBvcnQgb24gd2hpY2ggdGhlIGRhdGFiYXNlIHdpbGwgYmUgYWNjZXNzaWJsZScpLmRlZmF1bHQoZ2V0Wm9kRGVmYXVsdChNU1NRTE9wdGlvbnMsICdwb3J0JykpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLVAsIC0tcGFzc3dvcmQgPHBhc3N3b3JkPicsICdUaGUgdmFsdWUgcGFzc2VkIHRvIE1TU1FMX1NBX1BBU1NXT1JEIGVudmlyb25tZW50IHZhcmlhYmxlLiBNUyBTUUwgU2VydmVyIHBhc3N3b3JkIHBvbGljeSBhcHBsaWVzLicpLmRlZmF1bHQoZ2V0Wm9kRGVmYXVsdChNU1NRTE9wdGlvbnMsICdwYXNzd29yZCcpKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tY2xlYW4nLCAnUmVtb3ZlIGRhdGEgZmlsZXMgYmVmb3JlIHN0YXJ0aW5nIHRoZSBkYXRhYmFzZScpLmRlZmF1bHQoZmFsc2UpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1wcnVuZScsICdSZW1vdmUgZGF0YSBmaWxlcyB3aGVuIHN0b3BwaW5nIHRoZSBkYXRhYmFzZScpLmRlZmF1bHQoZmFsc2UpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS12ZXJib3NlJywgJ091dHB1dCBkYXRhYmFzZSBsb2cgZmlsZXMnKS5kZWZhdWx0KGZhbHNlKSlcbiAgICAuYWN0aW9uKG9wdGlvbnMgPT4gQWN0aW9uSGFuZGxlcihwcm9ncmFtLCBDb21tYW5kKCksIHsgLi4ub3B0aW9ucywgbmFtZTogU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5tc3NxbCwgdXNlcm5hbWU6ICdzYScgfSkpO1xucHJvZ3JhbS5wYXJzZUFzeW5jKHByb2Nlc3MuYXJndikuY2F0Y2goKCkgPT4gZ3JhY2VmdWxFeGl0KDEpKTtcbnByb2Nlc3Mub24oJ1NJR0lOVCcsICgpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgUmVjZWl2ZWQgdGVybSBzaWduYWwsIHRyeWluZyB0byBzdG9wIGdyYWNlZnVsbHkg8J+SqmApO1xuICAgIGdyYWNlZnVsRXhpdCgpO1xufSk7XG4iXSwibmFtZXMiOlsidmVyc2lvbnMiLCJDb21tYW5kZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUVPLE1BQU0sYUFBYSxHQUFHLE9BQU8sT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxFQUFFLE9BQU8sS0FBSztBQUNuRixJQUFJLE1BQU0sR0FBRyxHQUFHLE9BQU8sSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDMUMsSUFBSSxNQUFNLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sS0FBSztBQUNyQyxRQUFRLElBQUksWUFBWSxHQUFHLEVBQUUsQ0FBQztBQUM5QixRQUFRLGFBQWEsQ0FBQyxPQUFPLElBQUksS0FBSztBQUN0QyxZQUFZLElBQUk7QUFDaEIsZ0JBQWdCLElBQUksSUFBSSxLQUFLLENBQUMsRUFBRTtBQUNoQyxvQkFBb0IsTUFBTSxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUM7QUFDOUQsaUJBQWlCO0FBQ2pCLGdCQUFnQixJQUFJLFlBQVksRUFBRTtBQUNsQyxvQkFBb0IsTUFBTSxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUN6RCxpQkFBaUI7QUFDakIscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQSxvQkFBb0IsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2pDLGlCQUFpQjtBQUNqQixhQUFhO0FBQ2IsWUFBWSxPQUFPLEdBQUcsRUFBRTtBQUN4QixnQkFBZ0IsTUFBTSxPQUFPLEdBQUcsR0FBRyxZQUFZLEtBQUssR0FBRyxHQUFHLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQztBQUN6RSxnQkFBZ0IsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ2hDLGFBQWE7QUFDYixTQUFTLEVBQUU7QUFDWCxZQUFZLElBQUksRUFBRSxFQUFFLEdBQUcsQ0FBQyxHQUFHLElBQUk7QUFDL0IsU0FBUyxDQUFDLENBQUM7QUFDWCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJO0FBQ2pDLFlBQVksSUFBSSxHQUFHLFlBQVksQ0FBQyxDQUFDLFFBQVEsRUFBRTtBQUMzQyxnQkFBZ0IsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJO0FBQzVDLG9CQUFvQixZQUFZLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN6RyxpQkFBaUIsQ0FBQyxDQUFDO0FBQ25CLGFBQWE7QUFDYixpQkFBaUIsSUFBSSxHQUFHLFlBQVksS0FBSyxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRTtBQUN0RSxnQkFBZ0IsWUFBWSxHQUFHLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUM5QyxhQUFhO0FBQ2IsWUFBWSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUIsU0FBUyxDQUFDLENBQUM7QUFDWCxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxJQUFJO0FBQ3hCLFFBQVEsSUFBSSxPQUFPLEtBQUssSUFBSSxFQUFFO0FBQzlCLFlBQVksT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNuQztBQUNBO0FBQ0EsU0FBUztBQUNULGFBQWE7QUFDYixZQUFZLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUIsU0FBUztBQUNULEtBQUssQ0FBQyxDQUFDO0FBQ1AsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzlDTSxNQUFNLHdCQUF3QixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDL0MsSUFBSSxZQUFZO0FBQ2hCLElBQUksT0FBTztBQUNYLElBQUksT0FBTztBQUNYLENBQUMsQ0FBQyxDQUFDO0FBQ0ksTUFBTSxzQkFBc0IsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQzdDLElBQUksV0FBVztBQUNmLElBQUksU0FBUztBQUNiLElBQUksVUFBVTtBQUNkLElBQUksWUFBWTtBQUNoQixJQUFJLGdCQUFnQjtBQUNwQixDQUFDLENBQUMsQ0FBQztBQUNJLE1BQU0sZUFBZSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7QUFDeEMsSUFBSSxJQUFJLEVBQUUsd0JBQXdCO0FBQ2xDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDbEYsSUFBSSxRQUFRLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7QUFDeEMsSUFBSSxRQUFRLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7QUFDeEMsSUFBSSxRQUFRLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7QUFDeEMsSUFBSSxLQUFLLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7QUFDckMsSUFBSSxLQUFLLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7QUFDckMsSUFBSSxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7QUFDdkMsSUFBSSxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtBQUN0QixDQUFDLENBQUMsQ0FBQztBQUNJLE1BQU0saUJBQWlCLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQztBQUN4RCxJQUFJLElBQUksRUFBRSx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLElBQUksS0FBSyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsT0FBTyxDQUFDLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUM7QUFDMUosSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUlBLFVBQVEsQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztBQUN6SCxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztBQUNoRyxJQUFJLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxJQUFJLEtBQUssdUJBQXVCLENBQUMsQ0FBQyxPQUFPLENBQUMsdUJBQXVCLENBQUM7QUFDeEcsQ0FBQyxDQUFDLENBQUM7QUFDSSxNQUFNLFlBQVksR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDO0FBQ25ELElBQUksSUFBSSxFQUFFLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksSUFBSSxLQUFLLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztBQUNoSixJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSUEsVUFBUSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO0FBQ3BILElBQUksSUFBSSxFQUFFLENB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