@bnsights/bbsf-controls 1.0.28 → 1.0.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -3
- package/bnsights-bbsf-controls-1.0.31.tgz +0 -0
- package/bnsights-bbsf-controls.metadata.json +1 -1
- package/bundles/bnsights-bbsf-controls.umd.js +524 -355
- package/bundles/bnsights-bbsf-controls.umd.js.map +1 -1
- package/esm2015/lib/Shared/Enums/LanguageValidation.js +6 -0
- package/esm2015/lib/Shared/Models/RepeaterField.js +1 -1
- package/esm2015/lib/Shared/Models/RepeaterOptions.js +2 -1
- package/esm2015/lib/Shared/Models/TextBoxOptions.js +3 -1
- package/esm2015/lib/controls/Repeater/repeater/repeater.component.js +15 -9
- package/esm2015/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.js +376 -336
- package/esm2015/lib/controls/Repeater/repeater-table/repeater-table.component.js +105 -0
- package/esm2015/lib/controls/TextBox/TextBox.component.js +14 -13
- package/esm2015/lib/controls/bbsf-controls.module.js +4 -1
- package/esm2015/public-api.js +3 -1
- package/fesm2015/bnsights-bbsf-controls.js +515 -356
- package/fesm2015/bnsights-bbsf-controls.js.map +1 -1
- package/lib/Shared/Enums/LanguageValidation.d.ts +4 -0
- package/lib/Shared/Models/RepeaterField.d.ts +1 -0
- package/lib/Shared/Models/RepeaterOptions.d.ts +3 -0
- package/lib/Shared/Models/TextBoxOptions.d.ts +3 -0
- package/lib/controls/Repeater/repeater/repeater.component.d.ts +2 -1
- package/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.d.ts +3 -0
- package/lib/controls/Repeater/repeater-table/repeater-table.component.d.ts +16 -0
- package/package.json +2 -2
- package/public-api.d.ts +2 -0
- package/src/lib/assets/Style.css +5 -1
- package/bnsights-bbsf-controls-1.0.28.tgz +0 -0
package/esm2015/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.js
CHANGED
|
@@ -31,11 +31,23 @@ export class RepeaterFieldBuilderComponent {
|
|
|
31
31
|
constructor(renderComponentService, TextControlHost) {
|
|
32
32
|
this.renderComponentService = renderComponentService;
|
|
33
33
|
this.TextControlHost = TextControlHost;
|
|
34
|
+
this.itemsValue = [];
|
|
35
|
+
this.itemValue = null;
|
|
34
36
|
}
|
|
35
37
|
ngOnInit() {
|
|
36
38
|
}
|
|
37
39
|
ngAfterViewInit() {
|
|
38
40
|
setTimeout(() => {
|
|
41
|
+
if (this.itemsValue.length > 0)
|
|
42
|
+
this.itemValue = this.itemsValue[this.itemNumber];
|
|
43
|
+
if (this.itemValue) {
|
|
44
|
+
for (const key in this.itemValue) {
|
|
45
|
+
if (Object.prototype.hasOwnProperty.call(this.itemValue, key) && key == this.RepeaterField.ControlOptions.Name) {
|
|
46
|
+
const element = this.itemValue[key];
|
|
47
|
+
this.value = element;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
39
51
|
this.Item.clear();
|
|
40
52
|
switch (this.RepeaterField.ControlType) {
|
|
41
53
|
///TextBox
|
|
@@ -48,10 +60,12 @@ export class RepeaterFieldBuilderComponent {
|
|
|
48
60
|
Text.ViewType = this.RepeaterField.ControlOptions.ViewType;
|
|
49
61
|
Text.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
|
|
50
62
|
Text.Type = InputType.Text;
|
|
63
|
+
Text.LanguageValidation = this.RepeaterField.ControlOptions.LanguageValidation;
|
|
51
64
|
if (this.RepeaterField.ControlOptions.maxLength)
|
|
52
65
|
Text.MaxLength = this.RepeaterField.ControlOptions.maxLength;
|
|
53
66
|
if (this.RepeaterField.ControlOptions.minLength)
|
|
54
67
|
Text.MinLength = this.RepeaterField.ControlOptions.minLength;
|
|
68
|
+
Text.Value = this.value;
|
|
55
69
|
this.renderComponentService.renderDynamicComponent(this.Item, TextboxComponent, this.group, Text);
|
|
56
70
|
break;
|
|
57
71
|
case DataType.Name:
|
|
@@ -61,12 +75,14 @@ export class RepeaterFieldBuilderComponent {
|
|
|
61
75
|
Name.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
|
|
62
76
|
Name.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
|
|
63
77
|
Name.ViewType = this.RepeaterField.ControlOptions.ViewType;
|
|
78
|
+
Name.LanguageValidation = this.RepeaterField.ControlOptions.LanguageValidation;
|
|
64
79
|
Name.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
|
|
65
80
|
if (this.RepeaterField.ControlOptions.maxLength)
|
|
66
81
|
Name.MaxLength = this.RepeaterField.ControlOptions.maxLength;
|
|
67
82
|
if (this.RepeaterField.ControlOptions.minLength)
|
|
68
83
|
Name.MinLength = this.RepeaterField.ControlOptions.minLength;
|
|
69
84
|
Name.Type = InputType.Text;
|
|
85
|
+
Name.Value = this.value;
|
|
70
86
|
this.renderComponentService.renderDynamicComponent(this.Item, TextboxComponent, this.group, Name);
|
|
71
87
|
break;
|
|
72
88
|
case DataType.Email:
|
|
@@ -76,8 +92,10 @@ export class RepeaterFieldBuilderComponent {
|
|
|
76
92
|
Email.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
|
|
77
93
|
Email.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
|
|
78
94
|
Email.ViewType = this.RepeaterField.ControlOptions.ViewType;
|
|
95
|
+
Email.LanguageValidation = this.RepeaterField.ControlOptions.LanguageValidation;
|
|
79
96
|
Email.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
|
|
80
97
|
Email.Type = InputType.Email;
|
|
98
|
+
Email.Value = this.value;
|
|
81
99
|
this.renderComponentService.renderDynamicComponent(this.Item, TextboxComponent, this.group, Email);
|
|
82
100
|
break;
|
|
83
101
|
case DataType.Number:
|
|
@@ -87,12 +105,14 @@ export class RepeaterFieldBuilderComponent {
|
|
|
87
105
|
Number.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
|
|
88
106
|
Number.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
|
|
89
107
|
Number.ViewType = this.RepeaterField.ControlOptions.ViewType;
|
|
108
|
+
Number.LanguageValidation = this.RepeaterField.ControlOptions.LanguageValidation;
|
|
90
109
|
Number.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
|
|
91
110
|
Number.Type = InputType.Number;
|
|
92
111
|
let rangeNumber = new RangeNumber();
|
|
93
112
|
rangeNumber.To = this.RepeaterField.ControlOptions.maxLength;
|
|
94
113
|
rangeNumber.From = this.RepeaterField.ControlOptions.minLength;
|
|
95
114
|
Number.NumberRange = rangeNumber;
|
|
115
|
+
Number.Value = this.value;
|
|
96
116
|
this.renderComponentService.renderDynamicComponent(this.Item, TextboxComponent, this.group, Number);
|
|
97
117
|
break;
|
|
98
118
|
///DateTime
|
|
@@ -107,6 +127,7 @@ export class RepeaterFieldBuilderComponent {
|
|
|
107
127
|
Date.PickerType = PickerType.Calendar;
|
|
108
128
|
Date.SelectMode = SelectMode.Single;
|
|
109
129
|
Date.StartView = StartView.Month;
|
|
130
|
+
Date.Value = this.value;
|
|
110
131
|
this.renderComponentService.renderDynamicComponent(this.Item, DateInputComponent, this.group, Date);
|
|
111
132
|
break;
|
|
112
133
|
case DataType.DateTime:
|
|
@@ -120,6 +141,7 @@ export class RepeaterFieldBuilderComponent {
|
|
|
120
141
|
DateTime.PickerType = PickerType.Both;
|
|
121
142
|
DateTime.SelectMode = SelectMode.Single;
|
|
122
143
|
DateTime.StartView = StartView.Month;
|
|
144
|
+
DateTime.Value = this.value;
|
|
123
145
|
this.renderComponentService.renderDynamicComponent(this.Item, DateInputComponent, this.group, DateTime);
|
|
124
146
|
break;
|
|
125
147
|
case DataType.Time:
|
|
@@ -133,6 +155,7 @@ export class RepeaterFieldBuilderComponent {
|
|
|
133
155
|
Time.PickerType = PickerType.Timer;
|
|
134
156
|
Time.SelectMode = SelectMode.Single;
|
|
135
157
|
Time.StartView = StartView.Month;
|
|
158
|
+
Time.Value = this.value;
|
|
136
159
|
this.renderComponentService.renderDynamicComponent(this.Item, DateInputComponent, this.group, Time);
|
|
137
160
|
break;
|
|
138
161
|
//Dropdown
|
|
@@ -148,6 +171,7 @@ export class RepeaterFieldBuilderComponent {
|
|
|
148
171
|
SingleSelect.SingleSelection = true;
|
|
149
172
|
SingleSelect.ShowCheckbox = false;
|
|
150
173
|
SingleSelect.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
|
|
174
|
+
SingleSelect.SelectedItems = this.value;
|
|
151
175
|
this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, SingleSelect);
|
|
152
176
|
break;
|
|
153
177
|
case DataType.MulipleSelect:
|
|
@@ -162,6 +186,7 @@ export class RepeaterFieldBuilderComponent {
|
|
|
162
186
|
MulipleSelect.SingleSelection = false;
|
|
163
187
|
MulipleSelect.ShowCheckbox = false;
|
|
164
188
|
MulipleSelect.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
|
|
189
|
+
MulipleSelect.SelectedItems = this.value;
|
|
165
190
|
this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, MulipleSelect);
|
|
166
191
|
break;
|
|
167
192
|
case DataType.Goal:
|
|
@@ -176,6 +201,7 @@ export class RepeaterFieldBuilderComponent {
|
|
|
176
201
|
Goal.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple;
|
|
177
202
|
Goal.ShowCheckbox = false;
|
|
178
203
|
Goal.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
|
|
204
|
+
Goal.SelectedItems = this.value;
|
|
179
205
|
this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, Goal);
|
|
180
206
|
break;
|
|
181
207
|
case DataType.Challenge:
|
|
@@ -191,6 +217,7 @@ export class RepeaterFieldBuilderComponent {
|
|
|
191
217
|
Challenge.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple;
|
|
192
218
|
Challenge.ShowCheckbox = false;
|
|
193
219
|
Challenge.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
|
|
220
|
+
Challenge.SelectedItems = this.value;
|
|
194
221
|
this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, Challenge);
|
|
195
222
|
break;
|
|
196
223
|
case DataType.InnovationLab:
|
|
@@ -205,6 +232,7 @@ export class RepeaterFieldBuilderComponent {
|
|
|
205
232
|
InnovationLab.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple;
|
|
206
233
|
InnovationLab.ShowCheckbox = false;
|
|
207
234
|
InnovationLab.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
|
|
235
|
+
InnovationLab.SelectedItems = this.value;
|
|
208
236
|
this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, InnovationLab);
|
|
209
237
|
break;
|
|
210
238
|
case DataType.Country:
|
|
@@ -219,6 +247,7 @@ export class RepeaterFieldBuilderComponent {
|
|
|
219
247
|
Country.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple;
|
|
220
248
|
Country.ShowCheckbox = false;
|
|
221
249
|
Country.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
|
|
250
|
+
Country.SelectedItems = this.value;
|
|
222
251
|
this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, Country);
|
|
223
252
|
break;
|
|
224
253
|
//FileUpload
|
|
@@ -231,6 +260,7 @@ export class RepeaterFieldBuilderComponent {
|
|
|
231
260
|
File.ViewType = this.RepeaterField.ControlOptions.ViewType;
|
|
232
261
|
File.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
|
|
233
262
|
File.FileMaxSizeInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB;
|
|
263
|
+
File.Value = this.value;
|
|
234
264
|
this.renderComponentService.renderDynamicComponent(this.Item, FileUploadComponent, this.group, File);
|
|
235
265
|
break;
|
|
236
266
|
case DataType.MultiFile:
|
|
@@ -244,6 +274,7 @@ export class RepeaterFieldBuilderComponent {
|
|
|
244
274
|
MultiFile.MaxSizeForAllFilesInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB;
|
|
245
275
|
MultiFile.MaxNoOfFiles = this.RepeaterField.ControlOptions.maxFileCount;
|
|
246
276
|
MultiFile.IsMultipleFile = true;
|
|
277
|
+
MultiFile.Value = this.value;
|
|
247
278
|
this.renderComponentService.renderDynamicComponent(this.Item, FileUploadComponent, this.group, MultiFile);
|
|
248
279
|
break;
|
|
249
280
|
//ImageUpload
|
|
@@ -257,6 +288,7 @@ export class RepeaterFieldBuilderComponent {
|
|
|
257
288
|
Image.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
|
|
258
289
|
if (this.RepeaterField.ControlOptions.maxFileSizeInMB)
|
|
259
290
|
Image.FileMaxSizeInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB;
|
|
291
|
+
Image.Value = this.value;
|
|
260
292
|
this.renderComponentService.renderDynamicComponent(this.Item, ImageUploaderComponent, this.group, Image);
|
|
261
293
|
break;
|
|
262
294
|
case DataType.CoverPhoto:
|
|
@@ -269,6 +301,7 @@ export class RepeaterFieldBuilderComponent {
|
|
|
269
301
|
CoverPhoto.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
|
|
270
302
|
if (this.RepeaterField.ControlOptions.maxFileSizeInMB)
|
|
271
303
|
CoverPhoto.FileMaxSizeInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB;
|
|
304
|
+
CoverPhoto.Value = this.value;
|
|
272
305
|
this.renderComponentService.renderDynamicComponent(this.Item, ImageUploaderComponent, this.group, CoverPhoto);
|
|
273
306
|
break;
|
|
274
307
|
//Mobile
|
|
@@ -284,6 +317,7 @@ export class RepeaterFieldBuilderComponent {
|
|
|
284
317
|
Mobile.PhoneValidation = true;
|
|
285
318
|
Mobile.SelectFirstCountry = true;
|
|
286
319
|
Mobile.EnablePlaceholder = true;
|
|
320
|
+
Mobile.Value = this.value;
|
|
287
321
|
this.renderComponentService.renderDynamicComponent(this.Item, PhoneComponent, this.group, Mobile);
|
|
288
322
|
break;
|
|
289
323
|
//MultilineText
|
|
@@ -301,6 +335,7 @@ export class RepeaterFieldBuilderComponent {
|
|
|
301
335
|
MultilineText.MinLength = this.RepeaterField.ControlOptions.minLength;
|
|
302
336
|
MultilineText.Rows = this.RepeaterField.ControlOptions.rows;
|
|
303
337
|
MultilineText.ForceDirection = this.RepeaterField.ControlOptions.ForceDirection;
|
|
338
|
+
MultilineText.Value = this.value;
|
|
304
339
|
this.renderComponentService.renderDynamicComponent(this.Item, TextAreaComponent, this.group, MultilineText);
|
|
305
340
|
break;
|
|
306
341
|
//HTML
|
|
@@ -318,6 +353,7 @@ export class RepeaterFieldBuilderComponent {
|
|
|
318
353
|
HTML.MinLength = this.RepeaterField.ControlOptions.minLength;
|
|
319
354
|
HTML.Height = this.RepeaterField.ControlOptions.rows;
|
|
320
355
|
HTML.ForceDirection = this.RepeaterField.ControlOptions.ForceDirection;
|
|
356
|
+
HTML.Value = this.value;
|
|
321
357
|
this.renderComponentService.renderDynamicComponent(this.Item, HtmlEditorComponent, this.group, HTML);
|
|
322
358
|
break;
|
|
323
359
|
//Boolean
|
|
@@ -327,6 +363,7 @@ export class RepeaterFieldBuilderComponent {
|
|
|
327
363
|
Boolean.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
|
|
328
364
|
Boolean.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
|
|
329
365
|
Boolean.ViewType = this.RepeaterField.ControlOptions.ViewType;
|
|
366
|
+
Boolean.Value = this.value;
|
|
330
367
|
Boolean.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
|
|
331
368
|
this.renderComponentService.renderDynamicComponent(this.Item, ToggleslideComponent, this.group, Boolean);
|
|
332
369
|
break;
|
|
@@ -338,6 +375,7 @@ export class RepeaterFieldBuilderComponent {
|
|
|
338
375
|
Location.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
|
|
339
376
|
Location.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
|
|
340
377
|
Location.ViewType = this.RepeaterField.ControlOptions.ViewType;
|
|
378
|
+
Location.Value = this.value;
|
|
341
379
|
Location.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
|
|
342
380
|
this.renderComponentService.renderDynamicComponent(this.Item, MapAutoCompleteComponent, this.group, Location);
|
|
343
381
|
break;
|
|
@@ -347,341 +385,342 @@ export class RepeaterFieldBuilderComponent {
|
|
|
347
385
|
}, 0);
|
|
348
386
|
}
|
|
349
387
|
ngOnChanges(changes) {
|
|
350
|
-
if (changes.itemNumber
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
388
|
+
if (changes.itemNumber)
|
|
389
|
+
if (changes.itemNumber.previousValue) {
|
|
390
|
+
let name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.previousValue.toString() + "." + this.controlNumber.toString();
|
|
391
|
+
let value = this.group.controls[name].value;
|
|
392
|
+
this.Item.clear();
|
|
393
|
+
this.group.removeControl(name);
|
|
394
|
+
switch (this.RepeaterField.ControlType) {
|
|
395
|
+
///TextBox
|
|
396
|
+
case DataType.Text:
|
|
397
|
+
let Text = new TextBoxOptions();
|
|
398
|
+
Text.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
|
|
399
|
+
Text.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
|
|
400
|
+
Text.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
|
|
401
|
+
Text.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
|
|
402
|
+
Text.ViewType = this.RepeaterField.ControlOptions.ViewType;
|
|
403
|
+
Text.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
|
|
404
|
+
Text.Type = InputType.Text;
|
|
405
|
+
if (this.RepeaterField.ControlOptions.maxLength)
|
|
406
|
+
Text.MaxLength = this.RepeaterField.ControlOptions.maxLength;
|
|
407
|
+
if (this.RepeaterField.ControlOptions.minLength)
|
|
408
|
+
Text.MinLength = this.RepeaterField.ControlOptions.minLength;
|
|
409
|
+
Text.Value = value;
|
|
410
|
+
this.renderComponentService.renderDynamicComponent(this.Item, TextboxComponent, this.group, Text);
|
|
411
|
+
break;
|
|
412
|
+
case DataType.Name:
|
|
413
|
+
let Name = new TextBoxOptions();
|
|
414
|
+
Name.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
|
|
415
|
+
Name.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
|
|
416
|
+
Name.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
|
|
417
|
+
Name.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
|
|
418
|
+
Name.ViewType = this.RepeaterField.ControlOptions.ViewType;
|
|
419
|
+
Name.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
|
|
420
|
+
if (this.RepeaterField.ControlOptions.maxLength)
|
|
421
|
+
Name.MaxLength = this.RepeaterField.ControlOptions.maxLength;
|
|
422
|
+
if (this.RepeaterField.ControlOptions.minLength)
|
|
423
|
+
Name.MinLength = this.RepeaterField.ControlOptions.minLength;
|
|
424
|
+
Name.Type = InputType.Text;
|
|
425
|
+
Name.Value = value;
|
|
426
|
+
this.renderComponentService.renderDynamicComponent(this.Item, TextboxComponent, this.group, Name);
|
|
427
|
+
break;
|
|
428
|
+
case DataType.Email:
|
|
429
|
+
let Email = new TextBoxOptions();
|
|
430
|
+
Email.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
|
|
431
|
+
Email.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
|
|
432
|
+
Email.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
|
|
433
|
+
Email.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
|
|
434
|
+
Email.ViewType = this.RepeaterField.ControlOptions.ViewType;
|
|
435
|
+
Email.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
|
|
436
|
+
Email.Type = InputType.Email;
|
|
437
|
+
Email.Value = value;
|
|
438
|
+
this.renderComponentService.renderDynamicComponent(this.Item, TextboxComponent, this.group, Email);
|
|
439
|
+
break;
|
|
440
|
+
case DataType.Number:
|
|
441
|
+
let Number = new TextBoxOptions();
|
|
442
|
+
Number.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
|
|
443
|
+
Number.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
|
|
444
|
+
Number.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
|
|
445
|
+
Number.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
|
|
446
|
+
Number.ViewType = this.RepeaterField.ControlOptions.ViewType;
|
|
447
|
+
Number.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
|
|
448
|
+
Number.Type = InputType.Number;
|
|
449
|
+
let rangeNumber = new RangeNumber();
|
|
450
|
+
rangeNumber.To = this.RepeaterField.ControlOptions.maxLength;
|
|
451
|
+
rangeNumber.From = this.RepeaterField.ControlOptions.minLength;
|
|
452
|
+
Number.NumberRange = rangeNumber;
|
|
453
|
+
Number.Value = value;
|
|
454
|
+
this.renderComponentService.renderDynamicComponent(this.Item, TextboxComponent, this.group, Number);
|
|
455
|
+
break;
|
|
456
|
+
///DateTime
|
|
457
|
+
case DataType.Date:
|
|
458
|
+
let Date = new DatePickerOptions();
|
|
459
|
+
Date.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
|
|
460
|
+
Date.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
|
|
461
|
+
Date.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
|
|
462
|
+
Date.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
|
|
463
|
+
Date.ViewType = this.RepeaterField.ControlOptions.ViewType;
|
|
464
|
+
Date.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
|
|
465
|
+
Date.PickerType = PickerType.Calendar;
|
|
466
|
+
Date.SelectMode = SelectMode.Single;
|
|
467
|
+
Date.StartView = StartView.Month;
|
|
468
|
+
Date.Value = value;
|
|
469
|
+
this.renderComponentService.renderDynamicComponent(this.Item, DateInputComponent, this.group, Date);
|
|
470
|
+
break;
|
|
471
|
+
case DataType.DateTime:
|
|
472
|
+
let DateTime = new DatePickerOptions();
|
|
473
|
+
DateTime.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
|
|
474
|
+
DateTime.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
|
|
475
|
+
DateTime.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
|
|
476
|
+
DateTime.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
|
|
477
|
+
DateTime.ViewType = this.RepeaterField.ControlOptions.ViewType;
|
|
478
|
+
DateTime.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
|
|
479
|
+
DateTime.PickerType = PickerType.Both;
|
|
480
|
+
DateTime.SelectMode = SelectMode.Single;
|
|
481
|
+
DateTime.StartView = StartView.Month;
|
|
482
|
+
DateTime.Value = value;
|
|
483
|
+
this.renderComponentService.renderDynamicComponent(this.Item, DateInputComponent, this.group, DateTime);
|
|
484
|
+
break;
|
|
485
|
+
case DataType.Time:
|
|
486
|
+
let Time = new DatePickerOptions();
|
|
487
|
+
Time.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
|
|
488
|
+
Time.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
|
|
489
|
+
Time.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
|
|
490
|
+
Time.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
|
|
491
|
+
Time.ViewType = this.RepeaterField.ControlOptions.ViewType;
|
|
492
|
+
Time.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
|
|
493
|
+
Time.PickerType = PickerType.Timer;
|
|
494
|
+
Time.SelectMode = SelectMode.Single;
|
|
495
|
+
Time.StartView = StartView.Month;
|
|
496
|
+
Time.Value = value;
|
|
497
|
+
this.renderComponentService.renderDynamicComponent(this.Item, DateInputComponent, this.group, Time);
|
|
498
|
+
break;
|
|
499
|
+
//Dropdown
|
|
500
|
+
case DataType.SingleSelect:
|
|
501
|
+
let SingleSelect = new DropdownOptions();
|
|
502
|
+
SingleSelect.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
|
|
503
|
+
SingleSelect.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
|
|
504
|
+
SingleSelect.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
|
|
505
|
+
SingleSelect.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
|
|
506
|
+
SingleSelect.ViewType = this.RepeaterField.ControlOptions.ViewType;
|
|
507
|
+
SingleSelect.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
|
|
508
|
+
SingleSelect.DataSource = this.RepeaterField.ControlOptions.dataSource;
|
|
509
|
+
SingleSelect.SingleSelection = true;
|
|
510
|
+
SingleSelect.ShowCheckbox = false;
|
|
511
|
+
SingleSelect.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
|
|
512
|
+
SingleSelect.SelectedItems = value;
|
|
513
|
+
this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, SingleSelect);
|
|
514
|
+
break;
|
|
515
|
+
case DataType.MulipleSelect:
|
|
516
|
+
let MulipleSelect = new DropdownOptions();
|
|
517
|
+
MulipleSelect.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
|
|
518
|
+
MulipleSelect.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
|
|
519
|
+
MulipleSelect.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
|
|
520
|
+
MulipleSelect.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
|
|
521
|
+
MulipleSelect.ViewType = this.RepeaterField.ControlOptions.ViewType;
|
|
522
|
+
MulipleSelect.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
|
|
523
|
+
MulipleSelect.DataSource = this.RepeaterField.ControlOptions.dataSource;
|
|
524
|
+
MulipleSelect.SingleSelection = false;
|
|
525
|
+
MulipleSelect.ShowCheckbox = false;
|
|
526
|
+
MulipleSelect.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
|
|
527
|
+
MulipleSelect.SelectedItems = value;
|
|
528
|
+
this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, MulipleSelect);
|
|
529
|
+
break;
|
|
530
|
+
case DataType.Goal:
|
|
531
|
+
let Goal = new DropdownOptions();
|
|
532
|
+
Goal.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
|
|
533
|
+
Goal.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
|
|
534
|
+
Goal.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
|
|
535
|
+
Goal.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
|
|
536
|
+
Goal.ViewType = this.RepeaterField.ControlOptions.ViewType;
|
|
537
|
+
Goal.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
|
|
538
|
+
Goal.DataSource = this.RepeaterField.ControlOptions.dataSource;
|
|
539
|
+
Goal.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple;
|
|
540
|
+
Goal.ShowCheckbox = false;
|
|
541
|
+
Goal.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
|
|
542
|
+
Goal.SelectedItems = value;
|
|
543
|
+
this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, Goal);
|
|
544
|
+
break;
|
|
545
|
+
case DataType.Challenge:
|
|
546
|
+
let Challenge = new DropdownOptions();
|
|
547
|
+
Challenge.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
|
|
548
|
+
Challenge.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
|
|
549
|
+
Challenge.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
|
|
550
|
+
Challenge.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
|
|
551
|
+
Challenge.ViewType = this.RepeaterField.ControlOptions.ViewType;
|
|
552
|
+
Challenge.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
|
|
553
|
+
Challenge.DataSource = this.RepeaterField.ControlOptions.dataSource;
|
|
554
|
+
Challenge.DataSource = this.RepeaterField.ControlOptions.dataSource;
|
|
555
|
+
Challenge.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple;
|
|
556
|
+
Challenge.ShowCheckbox = false;
|
|
557
|
+
Challenge.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
|
|
558
|
+
Challenge.SelectedItems = value;
|
|
559
|
+
this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, Challenge);
|
|
560
|
+
break;
|
|
561
|
+
case DataType.InnovationLab:
|
|
562
|
+
let InnovationLab = new DropdownOptions();
|
|
563
|
+
InnovationLab.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
|
|
564
|
+
InnovationLab.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
|
|
565
|
+
InnovationLab.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
|
|
566
|
+
InnovationLab.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
|
|
567
|
+
InnovationLab.ViewType = this.RepeaterField.ControlOptions.ViewType;
|
|
568
|
+
InnovationLab.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
|
|
569
|
+
InnovationLab.DataSource = this.RepeaterField.ControlOptions.dataSource;
|
|
570
|
+
InnovationLab.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple;
|
|
571
|
+
InnovationLab.ShowCheckbox = false;
|
|
572
|
+
InnovationLab.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
|
|
573
|
+
InnovationLab.SelectedItems = value;
|
|
574
|
+
this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, InnovationLab);
|
|
575
|
+
break;
|
|
576
|
+
case DataType.Country:
|
|
577
|
+
let Country = new DropdownOptions();
|
|
578
|
+
Country.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
|
|
579
|
+
Country.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
|
|
580
|
+
Country.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
|
|
581
|
+
Country.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
|
|
582
|
+
Country.ViewType = this.RepeaterField.ControlOptions.ViewType;
|
|
583
|
+
Country.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
|
|
584
|
+
Country.DataSource = this.RepeaterField.ControlOptions.dataSource;
|
|
585
|
+
Country.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple;
|
|
586
|
+
Country.ShowCheckbox = false;
|
|
587
|
+
Country.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
|
|
588
|
+
Country.SelectedItems = value;
|
|
589
|
+
this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, Country);
|
|
590
|
+
break;
|
|
591
|
+
//FileUpload
|
|
592
|
+
case DataType.File:
|
|
593
|
+
let File = new FileUploadOptions();
|
|
594
|
+
File.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
|
|
595
|
+
File.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
|
|
596
|
+
File.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
|
|
597
|
+
File.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
|
|
598
|
+
File.ViewType = this.RepeaterField.ControlOptions.ViewType;
|
|
599
|
+
File.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
|
|
600
|
+
File.FileMaxSizeInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB;
|
|
601
|
+
File.Value = value;
|
|
602
|
+
this.renderComponentService.renderDynamicComponent(this.Item, FileUploadComponent, this.group, File);
|
|
603
|
+
break;
|
|
604
|
+
case DataType.MultiFile:
|
|
605
|
+
let MultiFile = new FileUploadOptions();
|
|
606
|
+
File.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
|
|
607
|
+
File.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
|
|
608
|
+
File.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
|
|
609
|
+
File.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
|
|
610
|
+
File.ViewType = this.RepeaterField.ControlOptions.ViewType;
|
|
611
|
+
File.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
|
|
612
|
+
MultiFile.MaxSizeForAllFilesInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB;
|
|
613
|
+
MultiFile.MaxNoOfFiles = this.RepeaterField.ControlOptions.maxFileCount;
|
|
614
|
+
MultiFile.IsMultipleFile = true;
|
|
615
|
+
MultiFile.Value = value;
|
|
616
|
+
this.renderComponentService.renderDynamicComponent(this.Item, FileUploadComponent, this.group, MultiFile);
|
|
617
|
+
break;
|
|
618
|
+
//ImageUpload
|
|
619
|
+
case DataType.Image:
|
|
620
|
+
let Image = new ImageUploadOptions();
|
|
621
|
+
Image.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
|
|
622
|
+
Image.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
|
|
623
|
+
Image.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
|
|
624
|
+
Image.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
|
|
625
|
+
Image.ViewType = this.RepeaterField.ControlOptions.ViewType;
|
|
626
|
+
Image.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
|
|
627
|
+
if (this.RepeaterField.ControlOptions.maxFileSizeInMB)
|
|
628
|
+
Image.FileMaxSizeInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB;
|
|
629
|
+
Image.Value = value;
|
|
630
|
+
this.renderComponentService.renderDynamicComponent(this.Item, ImageUploaderComponent, this.group, Image);
|
|
631
|
+
break;
|
|
632
|
+
case DataType.CoverPhoto:
|
|
633
|
+
let CoverPhoto = new ImageUploadOptions();
|
|
634
|
+
CoverPhoto.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
|
|
635
|
+
CoverPhoto.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
|
|
636
|
+
CoverPhoto.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
|
|
637
|
+
CoverPhoto.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
|
|
638
|
+
CoverPhoto.ViewType = this.RepeaterField.ControlOptions.ViewType;
|
|
639
|
+
CoverPhoto.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
|
|
640
|
+
if (this.RepeaterField.ControlOptions.maxFileSizeInMB)
|
|
641
|
+
CoverPhoto.FileMaxSizeInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB;
|
|
642
|
+
CoverPhoto.Value = value;
|
|
643
|
+
this.renderComponentService.renderDynamicComponent(this.Item, ImageUploaderComponent, this.group, CoverPhoto);
|
|
644
|
+
break;
|
|
645
|
+
//Mobile
|
|
646
|
+
case DataType.Mobile:
|
|
647
|
+
let Mobile = new PhoneOptions();
|
|
648
|
+
Mobile.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
|
|
649
|
+
Mobile.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
|
|
650
|
+
Mobile.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
|
|
651
|
+
Mobile.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
|
|
652
|
+
Mobile.ViewType = this.RepeaterField.ControlOptions.ViewType;
|
|
653
|
+
Mobile.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
|
|
654
|
+
Mobile.AllowSearch = true;
|
|
655
|
+
Mobile.PhoneValidation = true;
|
|
656
|
+
Mobile.SelectFirstCountry = true;
|
|
657
|
+
Mobile.EnablePlaceholder = true;
|
|
658
|
+
Mobile.Value = value;
|
|
659
|
+
this.renderComponentService.renderDynamicComponent(this.Item, PhoneComponent, this.group, Mobile);
|
|
660
|
+
break;
|
|
661
|
+
//MultilineText
|
|
662
|
+
case DataType.MultilineText:
|
|
663
|
+
let MultilineText = new TextAreaOptions();
|
|
664
|
+
MultilineText.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
|
|
665
|
+
MultilineText.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
|
|
666
|
+
MultilineText.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
|
|
667
|
+
MultilineText.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
|
|
668
|
+
MultilineText.ViewType = this.RepeaterField.ControlOptions.ViewType;
|
|
669
|
+
MultilineText.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
|
|
670
|
+
if (this.RepeaterField.ControlOptions.maxLength)
|
|
671
|
+
MultilineText.MaxLength = this.RepeaterField.ControlOptions.maxLength;
|
|
672
|
+
if (this.RepeaterField.ControlOptions.minLength)
|
|
673
|
+
MultilineText.MinLength = this.RepeaterField.ControlOptions.minLength;
|
|
674
|
+
MultilineText.Rows = this.RepeaterField.ControlOptions.rows;
|
|
675
|
+
MultilineText.ForceDirection = this.RepeaterField.ControlOptions.ForceDirection;
|
|
676
|
+
MultilineText.Value = value;
|
|
677
|
+
this.renderComponentService.renderDynamicComponent(this.Item, TextAreaComponent, this.group, MultilineText);
|
|
678
|
+
break;
|
|
679
|
+
//HTML
|
|
680
|
+
case DataType.HTML:
|
|
681
|
+
let HTML = new HtmlEditorOptions();
|
|
682
|
+
HTML.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
|
|
683
|
+
HTML.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
|
|
684
|
+
HTML.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
|
|
685
|
+
HTML.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
|
|
686
|
+
HTML.ViewType = this.RepeaterField.ControlOptions.ViewType;
|
|
687
|
+
HTML.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
|
|
688
|
+
if (this.RepeaterField.ControlOptions.maxLength)
|
|
689
|
+
HTML.MaxLength = this.RepeaterField.ControlOptions.maxLength;
|
|
690
|
+
if (this.RepeaterField.ControlOptions.minLength)
|
|
691
|
+
HTML.MinLength = this.RepeaterField.ControlOptions.minLength;
|
|
692
|
+
HTML.Height = this.RepeaterField.ControlOptions.rows;
|
|
693
|
+
HTML.ForceDirection = this.RepeaterField.ControlOptions.ForceDirection;
|
|
694
|
+
HTML.Value = value;
|
|
695
|
+
this.renderComponentService.renderDynamicComponent(this.Item, HtmlEditorComponent, this.group, HTML);
|
|
696
|
+
break;
|
|
697
|
+
//Boolean
|
|
698
|
+
case DataType.Boolean:
|
|
699
|
+
let Boolean = new ToggleSlideOptions();
|
|
700
|
+
Boolean.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
|
|
701
|
+
Boolean.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
|
|
702
|
+
Boolean.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
|
|
703
|
+
Boolean.ViewType = this.RepeaterField.ControlOptions.ViewType;
|
|
704
|
+
Boolean.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
|
|
705
|
+
Boolean.Value = value;
|
|
706
|
+
this.renderComponentService.renderDynamicComponent(this.Item, ToggleslideComponent, this.group, Boolean);
|
|
707
|
+
break;
|
|
708
|
+
//Location
|
|
709
|
+
case DataType.Location:
|
|
710
|
+
let Location = new MapAutoCompleteOptions();
|
|
711
|
+
Location.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
|
|
712
|
+
Location.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
|
|
713
|
+
Location.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
|
|
714
|
+
Location.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
|
|
715
|
+
Location.ViewType = this.RepeaterField.ControlOptions.ViewType;
|
|
716
|
+
Location.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
|
|
717
|
+
Location.Value = value;
|
|
718
|
+
this.renderComponentService.renderDynamicComponent(this.Item, MapAutoCompleteComponent, this.group, Location);
|
|
719
|
+
break;
|
|
720
|
+
default:
|
|
721
|
+
break;
|
|
722
|
+
}
|
|
683
723
|
}
|
|
684
|
-
}
|
|
685
724
|
}
|
|
686
725
|
}
|
|
687
726
|
RepeaterFieldBuilderComponent.decorators = [
|
|
@@ -699,6 +738,7 @@ RepeaterFieldBuilderComponent.propDecorators = {
|
|
|
699
738
|
group: [{ type: Input }],
|
|
700
739
|
itemNumber: [{ type: Input }],
|
|
701
740
|
controlNumber: [{ type: Input }],
|
|
702
|
-
RepeaterField: [{ type: Input }]
|
|
741
|
+
RepeaterField: [{ type: Input }],
|
|
742
|
+
itemsValue: [{ type: Input }]
|
|
703
743
|
};
|
|
704
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwZWF0ZXItZmllbGQtYnVpbGRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWNvbnRyb2xzL3NyYy9saWIvY29udHJvbHMvUmVwZWF0ZXIvcmVwZWF0ZXItZmllbGQtYnVpbGRlci9yZXBlYXRlci1maWVsZC1idWlsZGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxLQUFLLEVBQXlCLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwSCxPQUFPLEVBQWEsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUvRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzVELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDOUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN2RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDbkUsT0FBTyxFQUFF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LGNBQWMsQ0FBQyxTQUFTLENBQUE7b0JBQ2hFLFFBQVEsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFBO29CQUM5RCxRQUFRLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQztvQkFDbkUsUUFBUSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUM7b0JBQy9ELFFBQVEsQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtvQkFDeEksUUFBUSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7b0JBQ3ZCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxzQkFBc0IsQ0FBMkIsSUFBSSxDQUFDLElBQUksRUFBRSx3QkFBd0IsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFBO29CQUN2SSxNQUFNO2dCQUNSO29CQUNFLE1BQU07YUFDVDtTQUVGO0lBRUgsQ0FBQzs7O1lBM3FCRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHdCQUF3QjtnQkFDbEMsbURBQXNEO2FBQ3ZEOzs7WUFoQlEsc0JBQXNCO1lBbkJYLGtCQUFrQjs7O21CQXNDbkMsU0FBUyxTQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtvQkFDNUMsS0FBSzt5QkFDTCxLQUFLOzRCQUNMLEtBQUs7NEJBQ0wsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCwgRm9ybUdyb3VwRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBVdGlsaXR5U2VydmljZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLXV0aWxpdGllcyc7XHJcbmltcG9ydCB7IERhdGFUeXBlIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL0VudW1zL0VudW1zJztcclxuaW1wb3J0IHsgSW5wdXRUeXBlIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL0VudW1zL0lucHV0VHlwZSc7XHJcbmltcG9ydCB7IFBpY2tlclR5cGUgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvRW51bXMvUGlja2VyVHlwZSc7XHJcbmltcG9ydCB7IFNlbGVjdE1vZGUgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvRW51bXMvU2VsZWN0TW9kZSc7XHJcbmltcG9ydCB7IFN0YXJ0VmlldyB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9FbnVtcy9TdGFydFZpZXcnO1xyXG5pbXBvcnQgeyBEYXRlUGlja2VyT3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9Nb2RlbHMvZGF0ZVBpY2tlck9wdGlvbnMnO1xyXG5pbXBvcnQgeyBEcm9wZG93bk9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvTW9kZWxzL0Ryb3Bkb3duT3B0aW9ucyc7XHJcbmltcG9ydCB7IEZpbGVVcGxvYWRPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL01vZGVscy9GaWxlVXBsb2FkT3B0aW9ucyc7XHJcbmltcG9ydCB7IEh0bWxFZGl0b3JPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL01vZGVscy9IdG1sRWRpdG9yT3B0aW9ucyc7XHJcbmltcG9ydCB7IEltYWdlVXBsb2FkT3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9Nb2RlbHMvSW1hZ2VVcGxvYWRPcHRpb25zJztcclxuaW1wb3J0IHsgTWFwQXV0b0NvbXBsZXRlT3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9Nb2RlbHMvTWFwQXV0b0NvbXBsZXRlT3B0aW9ucyc7XHJcbmltcG9ydCB7IFBob25lT3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9Nb2RlbHMvUGhvbmVPcHRpb25zJztcclxuaW1wb3J0IHsgUmFuZ2VOdW1iZXIgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvTW9kZWxzL1JhbmdlTnVtYmVyJztcclxuaW1wb3J0IHsgUmVwZWF0ZXJGaWVsZCB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9Nb2RlbHMvUmVwZWF0ZXJGaWVsZCc7XHJcbmltcG9ydCB7IFRleHRBcmVhT3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9Nb2RlbHMvVGV4dEFyZWFPcHRpb25zJztcclxuaW1wb3J0IHsgVGV4dEJveE9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvTW9kZWxzL1RleHRCb3hPcHRpb25zJztcclxuaW1wb3J0IHsgVG9nZ2xlU2xpZGVPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL01vZGVscy9Ub2dnbGVzbGlkZU9wdGlvbnMnO1xyXG5pbXBvcnQgeyBSZW5kZXJDb21wb25lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL3NlcnZpY2VzL3JlbmRlci1jb21wb25lbnQtc2VydmljZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGF0ZUlucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vRGF0ZVRpbWVQaWNrZXIvRGF0ZVRpbWVQaWNrZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRHJvcGRvd25MaXN0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vRHJvcGRvd25MaXN0L0Ryb3Bkb3duTGlzdC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGaWxlVXBsb2FkQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vRmlsZVVwbGFvZC9GaWxlVXBsYW9kLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEh0bWxFZGl0b3JDb21wb25lbnQgfSBmcm9tICcuLi8uLi9IdG1sRWRpdG9yL0h0bWxFZGl0b3IuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSW1hZ2VVcGxvYWRlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL0ltYWdlVXBsb2FkL0ltYWdlVXBsb2FkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE1hcEF1dG9Db21wbGV0ZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL01hcEF1dG9Db21wbGV0ZS9NYXBBdXRvQ29tcGxldGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUGhvbmVDb21wb25lbnQgfSBmcm9tICcuLi8uLi9QaG9uZS9QaG9uZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUZXh0QXJlYUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL1RleHRBcmVhL1RleHRBcmVhLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRleHRib3hDb21wb25lbnQgfSBmcm9tICcuLi8uLi9UZXh0Qm94L1RleHRCb3guY29tcG9uZW50JztcclxuaW1wb3J0IHsgVG9nZ2xlc2xpZGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi9Ub2dnbGVzbGlkZS90b2dnbGVzbGlkZS5jb21wb25lbnQnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncmVwZWF0ZXItZmllbGQtYnVpbGRlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3JlcGVhdGVyLWZpZWxkLWJ1aWxkZXIuY29tcG9uZW50Lmh0bWwnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVwZWF0ZXJGaWVsZEJ1aWxkZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xyXG5cclxuICBAVmlld0NoaWxkKFwiSXRlbVwiLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSkgSXRlbTogVmlld0NvbnRhaW5lclJlZjtcclxuICBASW5wdXQoKSBncm91cDogRm9ybUdyb3VwO1xyXG4gIEBJbnB1dCgpIGl0ZW1OdW1iZXI6IG51bWJlcjtcclxuICBASW5wdXQoKSBjb250cm9sTnVtYmVyOiBudW1iZXI7XHJcbiAgQElucHV0KCkgUmVwZWF0ZXJGaWVsZDogUmVwZWF0ZXJGaWVsZDtcclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVuZGVyQ29tcG9uZW50U2VydmljZTogUmVuZGVyQ29tcG9uZW50U2VydmljZSwgcHVibGljIFRleHRDb250cm9sSG9zdDogRm9ybUdyb3VwRGlyZWN0aXZlKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgfVxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLkl0ZW0uY2xlYXIoKVxyXG4gICAgICBzd2l0Y2ggKHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sVHlwZSkge1xyXG4gICAgICAgIC8vL1RleHRCb3hcclxuICAgICAgICBjYXNlIERhdGFUeXBlLlRleHQ6XHJcbiAgICAgICAgICBsZXQgVGV4dCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgICAgVGV4dC5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIHRoaXMuaXRlbU51bWJlci50b1N0cmluZygpICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgVGV4dC5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBUZXh0LkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBUZXh0LklzUmVxdWlyZWQgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSXNSZXF1aXJlZDtcclxuICAgICAgICAgIFRleHQuVmlld1R5cGUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBUZXh0LkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgVGV4dC5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgICAgICBpZiAodGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1heExlbmd0aClcclxuICAgICAgICAgICAgVGV4dC5NYXhMZW5ndGggPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMubWF4TGVuZ3RoXHJcbiAgICAgICAgICBpZiAodGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1pbkxlbmd0aClcclxuICAgICAgICAgICAgVGV4dC5NaW5MZW5ndGggPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMubWluTGVuZ3RoXHJcbiAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxUZXh0Ym94Q29tcG9uZW50Pih0aGlzLkl0ZW0sIFRleHRib3hDb21wb25lbnQsIHRoaXMuZ3JvdXAsIFRleHQpXHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgY2FzZSBEYXRhVHlwZS5OYW1lOlxyXG4gICAgICAgICAgbGV0IE5hbWUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICAgIE5hbWUuTmFtZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5OYW1lICsgXCIuXCIgKyB0aGlzLml0ZW1OdW1iZXIudG9TdHJpbmcoKSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgIE5hbWUuSGlkZUxhYmVsID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkhpZGVMYWJlbFxyXG4gICAgICAgICAgTmFtZS5MYWJlbEtleSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbEtleVxyXG4gICAgICAgICAgTmFtZS5Jc1JlcXVpcmVkID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLklzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBOYW1lLlZpZXdUeXBlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLlZpZXdUeXBlO1xyXG4gICAgICAgICAgTmFtZS5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgIGlmICh0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMubWF4TGVuZ3RoKVxyXG4gICAgICAgICAgICBOYW1lLk1heExlbmd0aCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5tYXhMZW5ndGhcclxuICAgICAgICAgIGlmICh0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMubWluTGVuZ3RoKVxyXG4gICAgICAgICAgICBOYW1lLk1pbkxlbmd0aCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5taW5MZW5ndGhcclxuICAgICAgICAgIE5hbWUuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8VGV4dGJveENvbXBvbmVudD4odGhpcy5JdGVtLCBUZXh0Ym94Q29tcG9uZW50LCB0aGlzLmdyb3VwLCBOYW1lKVxyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuRW1haWw6XHJcbiAgICAgICAgICBsZXQgRW1haWwgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICAgIEVtYWlsLk5hbWUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTmFtZSArIFwiLlwiICsgdGhpcy5pdGVtTnVtYmVyLnRvU3RyaW5nKCkgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBFbWFpbC5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBFbWFpbC5MYWJlbEtleSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbEtleVxyXG4gICAgICAgICAgRW1haWwuSXNSZXF1aXJlZCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Jc1JlcXVpcmVkO1xyXG4gICAgICAgICAgRW1haWwuVmlld1R5cGUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBFbWFpbC5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgIEVtYWlsLlR5cGUgPSBJbnB1dFR5cGUuRW1haWw7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxUZXh0Ym94Q29tcG9uZW50Pih0aGlzLkl0ZW0sIFRleHRib3hDb21wb25lbnQsIHRoaXMuZ3JvdXAsIEVtYWlsKVxyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuTnVtYmVyOlxyXG4gICAgICAgICAgbGV0IE51bWJlciA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgICAgTnVtYmVyLk5hbWUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTmFtZSArIFwiLlwiICsgdGhpcy5pdGVtTnVtYmVyLnRvU3RyaW5nKCkgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBOdW1iZXIuSGlkZUxhYmVsID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkhpZGVMYWJlbFxyXG4gICAgICAgICAgTnVtYmVyLkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBOdW1iZXIuSXNSZXF1aXJlZCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Jc1JlcXVpcmVkO1xyXG4gICAgICAgICAgTnVtYmVyLlZpZXdUeXBlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLlZpZXdUeXBlO1xyXG4gICAgICAgICAgTnVtYmVyLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgTnVtYmVyLlR5cGUgPSBJbnB1dFR5cGUuTnVtYmVyO1xyXG4gICAgICAgICAgbGV0IHJhbmdlTnVtYmVyID0gbmV3IFJhbmdlTnVtYmVyKClcclxuICAgICAgICAgIHJhbmdlTnVtYmVyLlRvID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1heExlbmd0aFxyXG4gICAgICAgICAgcmFuZ2VOdW1iZXIuRnJvbSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5taW5MZW5ndGhcclxuICAgICAgICAgIE51bWJlci5OdW1iZXJSYW5nZSA9IHJhbmdlTnVtYmVyO1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8VGV4dGJveENvbXBvbmVudD4odGhpcy5JdGVtLCBUZXh0Ym94Q29tcG9uZW50LCB0aGlzLmdyb3VwLCBOdW1iZXIpXHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgLy8vRGF0ZVRpbWVcclxuICAgICAgICBjYXNlIERhdGFUeXBlLkRhdGU6XHJcbiAgICAgICAgICBsZXQgRGF0ZSA9IG5ldyBEYXRlUGlja2VyT3B0aW9ucygpO1xyXG4gICAgICAgICAgRGF0ZS5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIHRoaXMuaXRlbU51bWJlci50b1N0cmluZygpICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgRGF0ZS5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBEYXRlLkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBEYXRlLklzUmVxdWlyZWQgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSXNSZXF1aXJlZDtcclxuICAgICAgICAgIERhdGUuVmlld1R5cGUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBEYXRlLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgRGF0ZS5QaWNrZXJUeXBlID0gUGlja2VyVHlwZS5DYWxlbmRhcjtcclxuICAgICAgICAgIERhdGUuU2VsZWN0TW9kZSA9IFNlbGVjdE1vZGUuU2luZ2xlXHJcbiAgICAgICAgICBEYXRlLlN0YXJ0VmlldyA9IFN0YXJ0Vmlldy5Nb250aFxyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8RGF0ZUlucHV0Q29tcG9uZW50Pih0aGlzLkl0ZW0sIERhdGVJbnB1dENvbXBvbmVudCwgdGhpcy5ncm91cCwgRGF0ZSlcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIERhdGFUeXBlLkRhdGVUaW1lOlxyXG4gICAgICAgICAgbGV0IERhdGVUaW1lID0gbmV3IERhdGVQaWNrZXJPcHRpb25zKCk7XHJcbiAgICAgICAgICBEYXRlVGltZS5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIHRoaXMuaXRlbU51bWJlci50b1N0cmluZygpICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgRGF0ZVRpbWUuSGlkZUxhYmVsID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkhpZGVMYWJlbFxyXG4gICAgICAgICAgRGF0ZVRpbWUuTGFiZWxLZXkgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxLZXlcclxuICAgICAgICAgIERhdGVUaW1lLklzUmVxdWlyZWQgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSXNSZXF1aXJlZDtcclxuICAgICAgICAgIERhdGVUaW1lLlZpZXdUeXBlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLlZpZXdUeXBlO1xyXG4gICAgICAgICAgRGF0ZVRpbWUuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uID8gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBEYXRlVGltZS5QaWNrZXJUeXBlID0gUGlja2VyVHlwZS5Cb3RoO1xyXG4gICAgICAgICAgRGF0ZVRpbWUuU2VsZWN0TW9kZSA9IFNlbGVjdE1vZGUuU2luZ2xlXHJcbiAgICAgICAgICBEYXRlVGltZS5TdGFydFZpZXcgPSBTdGFydFZpZXcuTW9udGhcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PERhdGVJbnB1dENvbXBvbmVudD4odGhpcy5JdGVtLCBEYXRlSW5wdXRDb21wb25lbnQsIHRoaXMuZ3JvdXAsIERhdGVUaW1lKVxyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuVGltZTpcclxuICAgICAgICAgIGxldCBUaW1lID0gbmV3IERhdGVQaWNrZXJPcHRpb25zKCk7XHJcbiAgICAgICAgICBUaW1lLk5hbWUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTmFtZSArIFwiLlwiICsgdGhpcy5pdGVtTnVtYmVyLnRvU3RyaW5nKCkgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBUaW1lLkhpZGVMYWJlbCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5IaWRlTGFiZWxcclxuICAgICAgICAgIFRpbWUuTGFiZWxLZXkgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxLZXlcclxuICAgICAgICAgIFRpbWUuSXNSZXF1aXJlZCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Jc1JlcXVpcmVkO1xyXG4gICAgICAgICAgVGltZS5WaWV3VHlwZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5WaWV3VHlwZTtcclxuICAgICAgICAgIFRpbWUuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uID8gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBUaW1lLlBpY2tlclR5cGUgPSBQaWNrZXJUeXBlLlRpbWVyO1xyXG4gICAgICAgICAgVGltZS5TZWxlY3RNb2RlID0gU2VsZWN0TW9kZS5TaW5nbGVcclxuICAgICAgICAgIFRpbWUuU3RhcnRWaWV3ID0gU3RhcnRWaWV3Lk1vbnRoXHJcbiAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxEYXRlSW5wdXRDb21wb25lbnQ+KHRoaXMuSXRlbSwgRGF0ZUlucHV0Q29tcG9uZW50LCB0aGlzLmdyb3VwLCBUaW1lKVxyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIC8vRHJvcGRvd25cclxuICAgICAgICBjYXNlIERhdGFUeXBlLlNpbmdsZVNlbGVjdDpcclxuICAgICAgICAgIGxldCBTaW5nbGVTZWxlY3QgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICBTaW5nbGVTZWxlY3QuTmFtZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5OYW1lICsgXCIuXCIgKyB0aGlzLml0ZW1OdW1iZXIudG9TdHJpbmcoKSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgIFNpbmdsZVNlbGVjdC5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBTaW5nbGVTZWxlY3QuTGFiZWxLZXkgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxLZXlcclxuICAgICAgICAgIFNpbmdsZVNlbGVjdC5Jc1JlcXVpcmVkID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLklzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBTaW5nbGVTZWxlY3QuVmlld1R5cGUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBTaW5nbGVTZWxlY3QuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uID8gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBTaW5nbGVTZWxlY3QuRGF0YVNvdXJjZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5kYXRhU291cmNlXHJcbiAgICAgICAgICBTaW5nbGVTZWxlY3QuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZVxyXG4gICAgICAgICAgU2luZ2xlU2VsZWN0LlNob3dDaGVja2JveCA9IGZhbHNlXHJcbiAgICAgICAgICBTaW5nbGVTZWxlY3QuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuaGFzU2VhcmNoXHJcbiAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxEcm9wZG93bkxpc3RDb21wb25lbnQ+KHRoaXMuSXRlbSwgRHJvcGRvd25MaXN0Q29tcG9uZW50LCB0aGlzLmdyb3VwLCBTaW5nbGVTZWxlY3QpXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIERhdGFUeXBlLk11bGlwbGVTZWxlY3Q6XHJcbiAgICAgICAgICBsZXQgTXVsaXBsZVNlbGVjdCA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgIE11bGlwbGVTZWxlY3QuTmFtZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5OYW1lICsgXCIuXCIgKyB0aGlzLml0ZW1OdW1iZXIudG9TdHJpbmcoKSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgIE11bGlwbGVTZWxlY3QuSGlkZUxhYmVsID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkhpZGVMYWJlbFxyXG4gICAgICAgICAgTXVsaXBsZVNlbGVjdC5MYWJlbEtleSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbEtleVxyXG4gICAgICAgICAgTXVsaXBsZVNlbGVjdC5Jc1JlcXVpcmVkID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLklzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBNdWxpcGxlU2VsZWN0LlZpZXdUeXBlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLlZpZXdUeXBlO1xyXG4gICAgICAgICAgTXVsaXBsZVNlbGVjdC5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgIE11bGlwbGVTZWxlY3QuRGF0YVNvdXJjZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5kYXRhU291cmNlXHJcbiAgICAgICAgICBNdWxpcGxlU2VsZWN0LlNpbmdsZVNlbGVjdGlvbiA9IGZhbHNlXHJcbiAgICAgICAgICBNdWxpcGxlU2VsZWN0LlNob3dDaGVja2JveCA9IGZhbHNlXHJcbiAgICAgICAgICBNdWxpcGxlU2VsZWN0LkFsbG93U2VhcmNoRmlsdGVyID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLmhhc1NlYXJjaFxyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8RHJvcGRvd25MaXN0Q29tcG9uZW50Pih0aGlzLkl0ZW0sIERyb3Bkb3duTGlzdENvbXBvbmVudCwgdGhpcy5ncm91cCwgTXVsaXBsZVNlbGVjdClcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuR29hbDpcclxuICAgICAgICAgIGxldCBHb2FsID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgR29hbC5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIHRoaXMuaXRlbU51bWJlci50b1N0cmluZygpICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgR29hbC5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBHb2FsLkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBHb2FsLklzUmVxdWlyZWQgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSXNSZXF1aXJlZDtcclxuICAgICAgICAgIEdvYWwuVmlld1R5cGUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBHb2FsLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgR29hbC5EYXRhU291cmNlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLmRhdGFTb3VyY2VcclxuICAgICAgICAgIEdvYWwuU2luZ2xlU2VsZWN0aW9uID0gIXRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5pc011bHRpcGxlXHJcbiAgICAgICAgICBHb2FsLlNob3dDaGVja2JveCA9IGZhbHNlXHJcbiAgICAgICAgICBHb2FsLkFsbG93U2VhcmNoRmlsdGVyID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLmhhc1NlYXJjaFxyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8RHJvcGRvd25MaXN0Q29tcG9uZW50Pih0aGlzLkl0ZW0sIERyb3Bkb3duTGlzdENvbXBvbmVudCwgdGhpcy5ncm91cCwgR29hbClcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuQ2hhbGxlbmdlOlxyXG4gICAgICAgICAgbGV0IENoYWxsZW5nZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgIENoYWxsZW5nZS5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIHRoaXMuaXRlbU51bWJlci50b1N0cmluZygpICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgQ2hhbGxlbmdlLkhpZGVMYWJlbCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5IaWRlTGFiZWxcclxuICAgICAgICAgIENoYWxsZW5nZS5MYWJlbEtleSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbEtleVxyXG4gICAgICAgICAgQ2hhbGxlbmdlLklzUmVxdWlyZWQgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSXNSZXF1aXJlZDtcclxuICAgICAgICAgIENoYWxsZW5nZS5WaWV3VHlwZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5WaWV3VHlwZTtcclxuICAgICAgICAgIENoYWxsZW5nZS5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgIENoYWxsZW5nZS5EYXRhU291cmNlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLmRhdGFTb3VyY2VcclxuICAgICAgICAgIENoYWxsZW5nZS5EYXRhU291cmNlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLmRhdGFTb3VyY2VcclxuICAgICAgICAgIENoYWxsZW5nZS5TaW5nbGVTZWxlY3Rpb24gPSAhdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLmlzTXVsdGlwbGVcclxuICAgICAgICAgIENoYWxsZW5nZS5TaG93Q2hlY2tib3ggPSBmYWxzZVxyXG4gICAgICAgICAgQ2hhbGxlbmdlLkFsbG93U2VhcmNoRmlsdGVyID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLmhhc1NlYXJjaFxyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8RHJvcGRvd25MaXN0Q29tcG9uZW50Pih0aGlzLkl0ZW0sIERyb3Bkb3duTGlzdENvbXBvbmVudCwgdGhpcy5ncm91cCwgQ2hhbGxlbmdlKVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBEYXRhVHlwZS5Jbm5vdmF0aW9uTGFiOlxyXG4gICAgICAgICAgbGV0IElubm92YXRpb25MYWIgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICBJbm5vdmF0aW9uTGFiLk5hbWUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTmFtZSArIFwiLlwiICsgdGhpcy5pdGVtTnVtYmVyLnRvU3RyaW5nKCkgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBJbm5vdmF0aW9uTGFiLkhpZGVMYWJlbCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5IaWRlTGFiZWxcclxuICAgICAgICAgIElubm92YXRpb25MYWIuTGFiZWxLZXkgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxLZXlcclxuICAgICAgICAgIElubm92YXRpb25MYWIuSXNSZXF1aXJlZCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Jc1JlcXVpcmVkO1xyXG4gICAgICAgICAgSW5ub3ZhdGlvbkxhYi5WaWV3VHlwZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5WaWV3VHlwZTtcclxuICAgICAgICAgIElubm92YXRpb25MYWIuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uID8gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBJbm5vdmF0aW9uTGFiLkRhdGFTb3VyY2UgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuZGF0YVNvdXJjZVxyXG4gICAgICAgICAgSW5ub3ZhdGlvbkxhYi5TaW5nbGVTZWxlY3Rpb24gPSAhdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLmlzTXVsdGlwbGVcclxuICAgICAgICAgIElubm92YXRpb25MYWIuU2hvd0NoZWNrYm94ID0gZmFsc2VcclxuICAgICAgICAgIElubm92YXRpb25MYWIuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuaGFzU2VhcmNoXHJcbiAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxEcm9wZG93bkxpc3RDb21wb25lbnQ+KHRoaXMuSXRlbSwgRHJvcGRvd25MaXN0Q29tcG9uZW50LCB0aGlzLmdyb3VwLCBJbm5vdmF0aW9uTGFiKVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBEYXRhVHlwZS5Db3VudHJ5OlxyXG4gICAgICAgICAgbGV0IENvdW50cnkgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICBDb3VudHJ5Lk5hbWUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTmFtZSArIFwiLlwiICsgdGhpcy5pdGVtTnVtYmVyLnRvU3RyaW5nKCkgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBDb3VudHJ5LkhpZGVMYWJlbCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5IaWRlTGFiZWxcclxuICAgICAgICAgIENvdW50cnkuTGFiZWxLZXkgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxLZXlcclxuICAgICAgICAgIENvdW50cnkuSXNSZXF1aXJlZCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Jc1JlcXVpcmVkO1xyXG4gICAgICAgICAgQ291bnRyeS5WaWV3VHlwZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5WaWV3VHlwZTtcclxuICAgICAgICAgIENvdW50cnkuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uID8gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBDb3VudHJ5LkRhdGFTb3VyY2UgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuZGF0YVNvdXJjZVxyXG4gICAgICAgICAgQ291bnRyeS5TaW5nbGVTZWxlY3Rpb24gPSAhdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLmlzTXVsdGlwbGVcclxuICAgICAgICAgIENvdW50cnkuU2hvd0NoZWNrYm94ID0gZmFsc2VcclxuICAgICAgICAgIENvdW50cnkuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuaGFzU2VhcmNoXHJcbiAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxEcm9wZG93bkxpc3RDb21wb25lbnQ+KHRoaXMuSXRlbSwgRHJvcGRvd25MaXN0Q29tcG9uZW50LCB0aGlzLmdyb3VwLCBDb3VudHJ5KVxyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIC8vRmlsZVVwbG9hZFxyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuRmlsZTpcclxuICAgICAgICAgIGxldCBGaWxlID0gbmV3IEZpbGVVcGxvYWRPcHRpb25zKCk7XHJcbiAgICAgICAgICBGaWxlLk5hbWUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTmFtZSArIFwiLlwiICsgdGhpcy5pdGVtTnVtYmVyLnRvU3RyaW5nKCkgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBGaWxlLkhpZGVMYWJlbCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5IaWRlTGFiZWxcclxuICAgICAgICAgIEZpbGUuTGFiZWxLZXkgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxLZXlcclxuICAgICAgICAgIEZpbGUuSXNSZXF1aXJlZCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Jc1JlcXVpcmVkO1xyXG4gICAgICAgICAgRmlsZS5WaWV3VHlwZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5WaWV3VHlwZTtcclxuICAgICAgICAgIEZpbGUuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uID8gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBGaWxlLkZpbGVNYXhTaXplSW5NQiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5tYXhGaWxlU2l6ZUluTUJcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PEZpbGVVcGxvYWRDb21wb25lbnQ+KHRoaXMuSXRlbSwgRmlsZVVwbG9hZENvbXBvbmVudCwgdGhpcy5ncm91cCwgRmlsZSlcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuTXVsdGlGaWxlOlxyXG4gICAgICAgICAgbGV0IE11bHRpRmlsZSA9IG5ldyBGaWxlVXBsb2FkT3B0aW9ucygpO1xyXG4gICAgICAgICAgRmlsZS5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIHRoaXMuaXRlbU51bWJlci50b1N0cmluZygpICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgRmlsZS5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBGaWxlLkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBGaWxlLklzUmVxdWlyZWQgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSXNSZXF1aXJlZDtcclxuICAgICAgICAgIEZpbGUuVmlld1R5cGUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBGaWxlLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgTXVsdGlGaWxlLk1heFNpemVGb3JBbGxGaWxlc0luTUIgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMubWF4RmlsZVNpemVJbk1CXHJcbiAgICAgICAgICBNdWx0aUZpbGUuTWF4Tm9PZkZpbGVzID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1heEZpbGVDb3VudFxyXG4gICAgICAgICAgTXVsdGlGaWxlLklzTXVsdGlwbGVGaWxlID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PEZpbGVVcGxvYWRDb21wb25lbnQ+KHRoaXMuSXRlbSwgRmlsZVVwbG9hZENvbXBvbmVudCwgdGhpcy5ncm91cCwgTXVsdGlGaWxlKVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgLy9JbWFnZVVwbG9hZFxyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuSW1hZ2U6XHJcbiAgICAgICAgICBsZXQgSW1hZ2UgPSBuZXcgSW1hZ2VVcGxvYWRPcHRpb25zKCk7XHJcbiAgICAgICAgICBJbWFnZS5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIHRoaXMuaXRlbU51bWJlci50b1N0cmluZygpICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgSW1hZ2UuSGlkZUxhYmVsID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkhpZGVMYWJlbFxyXG4gICAgICAgICAgSW1hZ2UuTGFiZWxLZXkgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxLZXlcclxuICAgICAgICAgIEltYWdlLklzUmVxdWlyZWQgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSXNSZXF1aXJlZDtcclxuICAgICAgICAgIEltYWdlLlZpZXdUeXBlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLlZpZXdUeXBlO1xyXG4gICAgICAgICAgSW1hZ2UuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uID8gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBpZiAodGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1heEZpbGVTaXplSW5NQilcclxuICAgICAgICAgICAgSW1hZ2UuRmlsZU1heFNpemVJbk1CID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1heEZpbGVTaXplSW5NQlxyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8SW1hZ2VVcGxvYWRlckNvbXBvbmVudD4odGhpcy5JdGVtLCBJbWFnZVVwbG9hZGVyQ29tcG9uZW50LCB0aGlzLmdyb3VwLCBJbWFnZSlcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuQ292ZXJQaG90bzpcclxuICAgICAgICAgIGxldCBDb3ZlclBob3RvID0gbmV3IEltYWdlVXBsb2FkT3B0aW9ucygpO1xyXG4gICAgICAgICAgQ292ZXJQaG90by5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIHRoaXMuaXRlbU51bWJlci50b1N0cmluZygpICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgQ292ZXJQaG90by5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBDb3ZlclBob3RvLkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBDb3ZlclBob3RvLklzUmVxdWlyZWQgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSXNSZXF1aXJlZDtcclxuICAgICAgICAgIENvdmVyUGhvdG8uVmlld1R5cGUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBDb3ZlclBob3RvLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgaWYgKHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5tYXhGaWxlU2l6ZUluTUIpXHJcbiAgICAgICAgICAgIENvdmVyUGhvdG8uRmlsZU1heFNpemVJbk1CID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1heEZpbGVTaXplSW5NQlxyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8SW1hZ2VVcGxvYWRlckNvbXBvbmVudD4odGhpcy5JdGVtLCBJbWFnZVVwbG9hZGVyQ29tcG9uZW50LCB0aGlzLmdyb3VwLCBDb3ZlclBob3RvKVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgLy9Nb2JpbGVcclxuICAgICAgICBjYXNlIERhdGFUeXBlLk1vYmlsZTpcclxuICAgICAgICAgIGxldCBNb2JpbGUgPSBuZXcgUGhvbmVPcHRpb25zKCk7XHJcbiAgICAgICAgICBNb2JpbGUuTmFtZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5OYW1lICsgXCIuXCIgKyB0aGlzLml0ZW1OdW1iZXIudG9TdHJpbmcoKSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgIE1vYmlsZS5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBNb2JpbGUuTGFiZWxLZXkgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxLZXlcclxuICAgICAgICAgIE1vYmlsZS5Jc1JlcXVpcmVkID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLklzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBNb2JpbGUuVmlld1R5cGUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBNb2JpbGUuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uID8gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBNb2JpbGUuQWxsb3dTZWFyY2ggPSB0cnVlO1xyXG4gICAgICAgICAgTW9iaWxlLlBob25lVmFsaWRhdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICBNb2JpbGUuU2VsZWN0Rmlyc3RDb3VudHJ5ID0gdHJ1ZTtcclxuICAgICAgICAgIE1vYmlsZS5FbmFibGVQbGFjZWhvbGRlciA9IHRydWVcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PFBob25lQ29tcG9uZW50Pih0aGlzLkl0ZW0sIFBob25lQ29tcG9uZW50LCB0aGlzLmdyb3VwLCBNb2JpbGUpXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICAvL011bHRpbGluZVRleHRcclxuICAgICAgICBjYXNlIERhdGFUeXBlLk11bHRpbGluZVRleHQ6XHJcbiAgICAgICAgICBsZXQgTXVsdGlsaW5lVGV4dCA9IG5ldyBUZXh0QXJlYU9wdGlvbnMoKTtcclxuICAgICAgICAgIE11bHRpbGluZVRleHQuTmFtZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5OYW1lICsgXCIuXCIgKyB0aGlzLml0ZW1OdW1iZXIudG9TdHJpbmcoKSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgIE11bHRpbGluZVRleHQuSGlkZUxhYmVsID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkhpZGVMYWJlbFxyXG4gICAgICAgICAgTXVsdGlsaW5lVGV4dC5MYWJlbEtleSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbEtleVxyXG4gICAgICAgICAgTXVsdGlsaW5lVGV4dC5Jc1JlcXVpcmVkID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLklzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBNdWx0aWxpbmVUZXh0LlZpZXdUeXBlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLlZpZXdUeXBlO1xyXG4gICAgICAgICAgTXVsdGlsaW5lVGV4dC5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgIGlmICh0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMubWF4TGVuZ3RoKVxyXG4gICAgICAgICAgICBNdWx0aWxpbmVUZXh0Lk1heExlbmd0aCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5tYXhMZW5ndGhcclxuICAgICAgICAgIGlmICh0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMubWluTGVuZ3RoKVxyXG4gICAgICAgICAgICBNdWx0aWxpbmVUZXh0Lk1pbkxlbmd0aCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5taW5MZW5ndGhcclxuICAgICAgICAgIE11bHRpbGluZVRleHQuUm93cyA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5yb3dzO1xyXG4gICAgICAgICAgTXVsdGlsaW5lVGV4dC5Gb3JjZURpcmVjdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Gb3JjZURpcmVjdGlvblxyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8VGV4dEFyZWFDb21wb25lbnQ+KHRoaXMuSXRlbSwgVGV4dEFyZWFDb21wb25lbnQsIHRoaXMuZ3JvdXAsIE11bHRpbGluZVRleHQpXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICAvL0hUTUxcclxuICAgICAgICBjYXNlIERhdGFUeXBlLkhUTUw6XHJcbiAgICAgICAgICBsZXQgSFRNTCA9IG5ldyBIdG1sRWRpdG9yT3B0aW9ucygpO1xyXG4gICAgICAgICAgSFRNTC5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIHRoaXMuaXRlbU51bWJlci50b1N0cmluZygpICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgSFRNTC5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBIVE1MLkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBIVE1MLklzUmVxdWlyZWQgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSXNSZXF1aXJlZDtcclxuICAgICAgICAgIEhUTUwuVmlld1R5cGUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBIVE1MLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgaWYgKHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5tYXhMZW5ndGgpXHJcbiAgICAgICAgICAgIEhUTUwuTWF4TGVuZ3RoID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1heExlbmd0aFxyXG4gICAgICAgICAgaWYgKHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5taW5MZW5ndGgpXHJcbiAgICAgICAgICAgIEhUTUwuTWluTGVuZ3RoID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1pbkxlbmd0aFxyXG4gICAgICAgICAgSFRNTC5IZWlnaHQgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMucm93cztcclxuICAgICAgICAgIEhUTUwuRm9yY2VEaXJlY3Rpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuRm9yY2VEaXJlY3Rpb25cclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PEh0bWxFZGl0b3JDb21wb25lbnQ+KHRoaXMuSXRlbSwgSHRtbEVkaXRvckNvbXBvbmVudCwgdGhpcy5ncm91cCwgSFRNTClcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIC8vQm9vbGVhblxyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuQm9vbGVhbjpcclxuICAgICAgICAgIGxldCBCb29sZWFuID0gbmV3IFRvZ2dsZVNsaWRlT3B0aW9ucygpO1xyXG4gICAgICAgICAgQm9vbGVhbi5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIHRoaXMuaXRlbU51bWJlci50b1N0cmluZygpICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgQm9vbGVhbi5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBCb29sZWFuLkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBCb29sZWFuLlZpZXdUeXBlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLlZpZXdUeXBlO1xyXG4gICAgICAgICAgQm9vbGVhbi5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PFRvZ2dsZXNsaWRlQ29tcG9uZW50Pih0aGlzLkl0ZW0sIFRvZ2dsZXNsaWRlQ29tcG9uZW50LCB0aGlzLmdyb3VwLCBCb29sZWFuKVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgLy9Mb2NhdGlvblxyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuTG9jYXRpb246XHJcbiAgICAgICAgICBsZXQgTG9jYXRpb24gPSBuZXcgTWFwQXV0b0NvbXBsZXRlT3B0aW9ucygpO1xyXG4gICAgICAgICAgTG9jYXRpb24uTmFtZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5OYW1lICsgXCIuXCIgKyB0aGlzLml0ZW1OdW1iZXIudG9TdHJpbmcoKSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgIExvY2F0aW9uLkhpZGVMYWJlbCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5IaWRlTGFiZWxcclxuICAgICAgICAgIExvY2F0aW9uLkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBMb2NhdGlvbi5Jc1JlcXVpcmVkID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLklzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBMb2NhdGlvbi5WaWV3VHlwZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5WaWV3VHlwZTtcclxuICAgICAgICAgIExvY2F0aW9uLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8TWFwQXV0b0NvbXBsZXRlQ29tcG9uZW50Pih0aGlzLkl0ZW0sIE1hcEF1dG9Db21wbGV0ZUNvbXBvbmVudCwgdGhpcy5ncm91cCwgTG9jYXRpb24pXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH0sIDApO1xyXG4gIH1cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlcy5pdGVtTnVtYmVyLnByZXZpb3VzVmFsdWUpIHtcclxuICAgICAgbGV0IG5hbWUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTmFtZSArIFwiLlwiICsgY2hhbmdlcy5pdGVtTnVtYmVyLnByZXZpb3VzVmFsdWUudG9TdHJpbmcoKSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgbGV0IHZhbHVlID0gdGhpcy5ncm91cC5jb250cm9sc1tuYW1lXS52YWx1ZVxyXG4gICAgICB0aGlzLkl0ZW0uY2xlYXIoKVxyXG4gICAgICB0aGlzLmdyb3VwLnJlbW92ZUNvbnRyb2wobmFtZSlcclxuICAgICAgc3dpdGNoICh0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbFR5cGUpIHtcclxuICAgICAgICAvLy9UZXh0Qm94XHJcbiAgICAgICAgY2FzZSBEYXRhVHlwZS5UZXh0OlxyXG4gICAgICAgICAgbGV0IFRleHQgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICAgIFRleHQuTmFtZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5OYW1lICsgXCIuXCIgKyBjaGFuZ2VzLml0ZW1OdW1iZXIuY3VycmVudFZhbHVlICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgVGV4dC5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBUZXh0LkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBUZXh0LklzUmVxdWlyZWQgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSXNSZXF1aXJlZDtcclxuICAgICAgICAgIFRleHQuVmlld1R5cGUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBUZXh0LkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgVGV4dC5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgICAgICBpZiAodGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1heExlbmd0aClcclxuICAgICAgICAgICAgVGV4dC5NYXhMZW5ndGggPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMubWF4TGVuZ3RoXHJcbiAgICAgICAgICBpZiAodGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1pbkxlbmd0aClcclxuICAgICAgICAgICAgVGV4dC5NaW5MZW5ndGggPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMubWluTGVuZ3RoXHJcbiAgICAgICAgICAgIFRleHQuVmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PFRleHRib3hDb21wb25lbnQ+KHRoaXMuSXRlbSwgVGV4dGJveENvbXBvbmVudCwgdGhpcy5ncm91cCwgVGV4dClcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIERhdGFUeXBlLk5hbWU6XHJcbiAgICAgICAgICBsZXQgTmFtZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgICAgTmFtZS5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIGNoYW5nZXMuaXRlbU51bWJlci5jdXJyZW50VmFsdWUgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBOYW1lLkhpZGVMYWJlbCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5IaWRlTGFiZWxcclxuICAgICAgICAgIE5hbWUuTGFiZWxLZXkgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxLZXlcclxuICAgICAgICAgIE5hbWUuSXNSZXF1aXJlZCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Jc1JlcXVpcmVkO1xyXG4gICAgICAgICAgTmFtZS5WaWV3VHlwZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5WaWV3VHlwZTtcclxuICAgICAgICAgIE5hbWUuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uID8gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBpZiAodGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1heExlbmd0aClcclxuICAgICAgICAgICAgTmFtZS5NYXhMZW5ndGggPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMubWF4TGVuZ3RoXHJcbiAgICAgICAgICBpZiAodGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1pbkxlbmd0aClcclxuICAgICAgICAgICAgTmFtZS5NaW5MZW5ndGggPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMubWluTGVuZ3RoXHJcbiAgICAgICAgICBOYW1lLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgICAgIE5hbWUuVmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PFRleHRib3hDb21wb25lbnQ+KHRoaXMuSXRlbSwgVGV4dGJveENvbXBvbmVudCwgdGhpcy5ncm91cCwgTmFtZSlcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIERhdGFUeXBlLkVtYWlsOlxyXG4gICAgICAgICAgbGV0IEVtYWlsID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgICBFbWFpbC5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIGNoYW5nZXMuaXRlbU51bWJlci5jdXJyZW50VmFsdWUgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBFbWFpbC5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBFbWFpbC5MYWJlbEtleSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbEtleVxyXG4gICAgICAgICAgRW1haWwuSXNSZXF1aXJlZCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Jc1JlcXVpcmVkO1xyXG4gICAgICAgICAgRW1haWwuVmlld1R5cGUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBFbWFpbC5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgIEVtYWlsLlR5cGUgPSBJbnB1dFR5cGUuRW1haWw7XHJcbiAgICAgICAgICBFbWFpbC5WYWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8VGV4dGJveENvbXBvbmVudD4odGhpcy5JdGVtLCBUZXh0Ym94Q29tcG9uZW50LCB0aGlzLmdyb3VwLCBFbWFpbClcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIERhdGFUeXBlLk51bWJlcjpcclxuICAgICAgICAgIGxldCBOdW1iZXIgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICAgIE51bWJlci5OYW1lID10aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTmFtZSArIFwiLlwiICsgY2hhbmdlcy5pdGVtTnVtYmVyLmN1cnJlbnRWYWx1ZSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgIE51bWJlci5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBOdW1iZXIuTGFiZWxLZXkgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxLZXlcclxuICAgICAgICAgIE51bWJlci5Jc1JlcXVpcmVkID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLklzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBOdW1iZXIuVmlld1R5cGUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBOdW1iZXIuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uID8gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBOdW1iZXIuVHlwZSA9IElucHV0VHlwZS5OdW1iZXI7XHJcbiAgICAgICAgICBsZXQgcmFuZ2VOdW1iZXIgPSBuZXcgUmFuZ2VOdW1iZXIoKVxyXG4gICAgICAgICAgcmFuZ2VOdW1iZXIuVG8gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMubWF4TGVuZ3RoXHJcbiAgICAgICAgICByYW5nZU51bWJlci5Gcm9tID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1pbkxlbmd0aFxyXG4gICAgICAgICAgTnVtYmVyLk51bWJlclJhbmdlID0gcmFuZ2VOdW1iZXI7XHJcbiAgICAgICAgICBOdW1iZXIuVmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PFRleHRib3hDb21wb25lbnQ+KHRoaXMuSXRlbSwgVGV4dGJveENvbXBvbmVudCwgdGhpcy5ncm91cCwgTnVtYmVyKVxyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIC8vL0RhdGVUaW1lXHJcbiAgICAgICAgY2FzZSBEYXRhVHlwZS5EYXRlOlxyXG4gICAgICAgICAgbGV0IERhdGUgPSBuZXcgRGF0ZVBpY2tlck9wdGlvbnMoKTtcclxuICAgICAgICAgIERhdGUuTmFtZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5OYW1lICsgXCIuXCIgKyBjaGFuZ2VzLml0ZW1OdW1iZXIuY3VycmVudFZhbHVlICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgRGF0ZS5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBEYXRlLkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBEYXRlLklzUmVxdWlyZWQgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSXNSZXF1aXJlZDtcclxuICAgICAgICAgIERhdGUuVmlld1R5cGUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBEYXRlLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgRGF0ZS5QaWNrZXJUeXBlID0gUGlja2VyVHlwZS5DYWxlbmRhcjtcclxuICAgICAgICAgIERhdGUuU2VsZWN0TW9kZSA9IFNlbGVjdE1vZGUuU2luZ2xlXHJcbiAgICAgICAgICBEYXRlLlN0YXJ0VmlldyA9IFN0YXJ0Vmlldy5Nb250aFxyXG4gICAgICAgICAgRGF0ZS5WYWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8RGF0ZUlucHV0Q29tcG9uZW50Pih0aGlzLkl0ZW0sIERhdGVJbnB1dENvbXBvbmVudCwgdGhpcy5ncm91cCwgRGF0ZSlcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIERhdGFUeXBlLkRhdGVUaW1lOlxyXG4gICAgICAgICAgbGV0IERhdGVUaW1lID0gbmV3IERhdGVQaWNrZXJPcHRpb25zKCk7XHJcbiAgICAgICAgICBEYXRlVGltZS5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIGNoYW5nZXMuaXRlbU51bWJlci5jdXJyZW50VmFsdWUgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBEYXRlVGltZS5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBEYXRlVGltZS5MYWJlbEtleSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbEtleVxyXG4gICAgICAgICAgRGF0ZVRpbWUuSXNSZXF1aXJlZCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Jc1JlcXVpcmVkO1xyXG4gICAgICAgICAgRGF0ZVRpbWUuVmlld1R5cGUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBEYXRlVGltZS5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgIERhdGVUaW1lLlBpY2tlclR5cGUgPSBQaWNrZXJUeXBlLkJvdGg7XHJcbiAgICAgICAgICBEYXRlVGltZS5TZWxlY3RNb2RlID0gU2VsZWN0TW9kZS5TaW5nbGVcclxuICAgICAgICAgIERhdGVUaW1lLlN0YXJ0VmlldyA9IFN0YXJ0Vmlldy5Nb250aFxyXG4gICAgICAgICAgRGF0ZVRpbWUuVmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PERhdGVJbnB1dENvbXBvbmVudD4odGhpcy5JdGVtLCBEYXRlSW5wdXRDb21wb25lbnQsIHRoaXMuZ3JvdXAsIERhdGVUaW1lKVxyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuVGltZTpcclxuICAgICAgICAgIGxldCBUaW1lID0gbmV3IERhdGVQaWNrZXJPcHRpb25zKCk7XHJcbiAgICAgICAgICBUaW1lLk5hbWUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTmFtZSArIFwiLlwiICsgY2hhbmdlcy5pdGVtTnVtYmVyLmN1cnJlbnRWYWx1ZSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgIFRpbWUuSGlkZUxhYmVsID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkhpZGVMYWJlbFxyXG4gICAgICAgICAgVGltZS5MYWJlbEtleSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbEtleVxyXG4gICAgICAgICAgVGltZS5Jc1JlcXVpcmVkID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLklzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBUaW1lLlZpZXdUeXBlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLlZpZXdUeXBlO1xyXG4gICAgICAgICAgVGltZS5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgIFRpbWUuUGlja2VyVHlwZSA9IFBpY2tlclR5cGUuVGltZXI7XHJcbiAgICAgICAgICBUaW1lLlNlbGVjdE1vZGUgPSBTZWxlY3RNb2RlLlNpbmdsZVxyXG4gICAgICAgICAgVGltZS5TdGFydFZpZXcgPSBTdGFydFZpZXcuTW9udGhcclxuICAgICAgICAgIFRpbWUuVmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PERhdGVJbnB1dENvbXBvbmVudD4odGhpcy5JdGVtLCBEYXRlSW5wdXRDb21wb25lbnQsIHRoaXMuZ3JvdXAsIFRpbWUpXHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgLy9Ecm9wZG93blxyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuU2luZ2xlU2VsZWN0OlxyXG4gICAgICAgICAgbGV0IFNpbmdsZVNlbGVjdCA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgIFNpbmdsZVNlbGVjdC5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIGNoYW5nZXMuaXRlbU51bWJlci5jdXJyZW50VmFsdWUgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBTaW5nbGVTZWxlY3QuSGlkZUxhYmVsID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkhpZGVMYWJlbFxyXG4gICAgICAgICAgU2luZ2xlU2VsZWN0LkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBTaW5nbGVTZWxlY3QuSXNSZXF1aXJlZCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Jc1JlcXVpcmVkO1xyXG4gICAgICAgICAgU2luZ2xlU2VsZWN0LlZpZXdUeXBlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLlZpZXdUeXBlO1xyXG4gICAgICAgICAgU2luZ2xlU2VsZWN0LkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgU2luZ2xlU2VsZWN0LkRhdGFTb3VyY2UgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuZGF0YVNvdXJjZVxyXG4gICAgICAgICAgU2luZ2xlU2VsZWN0LlNpbmdsZVNlbGVjdGlvbiA9IHRydWVcclxuICAgICAgICAgIFNpbmdsZVNlbGVjdC5TaG93Q2hlY2tib3ggPSBmYWxzZVxyXG4gICAgICAgICAgU2luZ2xlU2VsZWN0LkFsbG93U2VhcmNoRmlsdGVyID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLmhhc1NlYXJjaFxyXG4gICAgICAgICAgU2luZ2xlU2VsZWN0LlNlbGVjdGVkSXRlbXMgPSB2YWx1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PERyb3Bkb3duTGlzdENvbXBvbmVudD4odGhpcy5JdGVtLCBEcm9wZG93bkxpc3RDb21wb25lbnQsIHRoaXMuZ3JvdXAsIFNpbmdsZVNlbGVjdClcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuTXVsaXBsZVNlbGVjdDpcclxuICAgICAgICAgIGxldCBNdWxpcGxlU2VsZWN0ID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgTXVsaXBsZVNlbGVjdC5OYW1lID10aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTmFtZSArIFwiLlwiICsgY2hhbmdlcy5pdGVtTnVtYmVyLmN1cnJlbnRWYWx1ZSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgIE11bGlwbGVTZWxlY3QuSGlkZUxhYmVsID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkhpZGVMYWJlbFxyXG4gICAgICAgICAgTXVsaXBsZVNlbGVjdC5MYWJlbEtleSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbEtleVxyXG4gICAgICAgICAgTXVsaXBsZVNlbGVjdC5Jc1JlcXVpcmVkID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLklzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBNdWxpcGxlU2VsZWN0LlZpZXdUeXBlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLlZpZXdUeXBlO1xyXG4gICAgICAgICAgTXVsaXBsZVNlbGVjdC5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgIE11bGlwbGVTZWxlY3QuRGF0YVNvdXJjZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5kYXRhU291cmNlXHJcbiAgICAgICAgICBNdWxpcGxlU2VsZWN0LlNpbmdsZVNlbGVjdGlvbiA9IGZhbHNlXHJcbiAgICAgICAgICBNdWxpcGxlU2VsZWN0LlNob3dDaGVja2JveCA9IGZhbHNlXHJcbiAgICAgICAgICBNdWxpcGxlU2VsZWN0LkFsbG93U2VhcmNoRmlsdGVyID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLmhhc1NlYXJjaFxyXG4gICAgICAgICAgTXVsaXBsZVNlbGVjdC5TZWxlY3RlZEl0ZW1zID0gdmFsdWU7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxEcm9wZG93bkxpc3RDb21wb25lbnQ+KHRoaXMuSXRlbSwgRHJvcGRvd25MaXN0Q29tcG9uZW50LCB0aGlzLmdyb3VwLCBNdWxpcGxlU2VsZWN0KVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBEYXRhVHlwZS5Hb2FsOlxyXG4gICAgICAgICAgbGV0IEdvYWwgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICBHb2FsLk5hbWUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTmFtZSArIFwiLlwiICsgY2hhbmdlcy5pdGVtTnVtYmVyLmN1cnJlbnRWYWx1ZSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgIEdvYWwuSGlkZUxhYmVsID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkhpZGVMYWJlbFxyXG4gICAgICAgICAgR29hbC5MYWJlbEtleSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbEtleVxyXG4gICAgICAgICAgR29hbC5Jc1JlcXVpcmVkID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLklzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBHb2FsLlZpZXdUeXBlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLlZpZXdUeXBlO1xyXG4gICAgICAgICAgR29hbC5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgIEdvYWwuRGF0YVNvdXJjZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5kYXRhU291cmNlXHJcbiAgICAgICAgICBHb2FsLlNpbmdsZVNlbGVjdGlvbiA9ICF0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuaXNNdWx0aXBsZVxyXG4gICAgICAgICAgR29hbC5TaG93Q2hlY2tib3ggPSBmYWxzZVxyXG4gICAgICAgICAgR29hbC5BbGxvd1NlYXJjaEZpbHRlciA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5oYXNTZWFyY2hcclxuICAgICAgICAgIEdvYWwuU2VsZWN0ZWRJdGVtcyA9IHZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8RHJvcGRvd25MaXN0Q29tcG9uZW50Pih0aGlzLkl0ZW0sIERyb3Bkb3duTGlzdENvbXBvbmVudCwgdGhpcy5ncm91cCwgR29hbClcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuQ2hhbGxlbmdlOlxyXG4gICAgICAgICAgbGV0IENoYWxsZW5nZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgIENoYWxsZW5nZS5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIGNoYW5nZXMuaXRlbU51bWJlci5jdXJyZW50VmFsdWUgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBDaGFsbGVuZ2UuSGlkZUxhYmVsID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkhpZGVMYWJlbFxyXG4gICAgICAgICAgQ2hhbGxlbmdlLkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBDaGFsbGVuZ2UuSXNSZXF1aXJlZCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Jc1JlcXVpcmVkO1xyXG4gICAgICAgICAgQ2hhbGxlbmdlLlZpZXdUeXBlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLlZpZXdUeXBlO1xyXG4gICAgICAgICAgQ2hhbGxlbmdlLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgQ2hhbGxlbmdlLkRhdGFTb3VyY2UgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuZGF0YVNvdXJjZVxyXG4gICAgICAgICAgQ2hhbGxlbmdlLkRhdGFTb3VyY2UgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuZGF0YVNvdXJjZVxyXG4gICAgICAgICAgQ2hhbGxlbmdlLlNpbmdsZVNlbGVjdGlvbiA9ICF0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuaXNNdWx0aXBsZVxyXG4gICAgICAgICAgQ2hhbGxlbmdlLlNob3dDaGVja2JveCA9IGZhbHNlXHJcbiAgICAgICAgICBDaGFsbGVuZ2UuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuaGFzU2VhcmNoXHJcbiAgICAgICAgICBDaGFsbGVuZ2UuU2VsZWN0ZWRJdGVtcyA9IHZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8RHJvcGRvd25MaXN0Q29tcG9uZW50Pih0aGlzLkl0ZW0sIERyb3Bkb3duTGlzdENvbXBvbmVudCwgdGhpcy5ncm91cCwgQ2hhbGxlbmdlKVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBEYXRhVHlwZS5Jbm5vdmF0aW9uTGFiOlxyXG4gICAgICAgICAgbGV0IElubm92YXRpb25MYWIgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICBJbm5vdmF0aW9uTGFiLk5hbWUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTmFtZSArIFwiLlwiICsgY2hhbmdlcy5pdGVtTnVtYmVyLmN1cnJlbnRWYWx1ZSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgIElubm92YXRpb25MYWIuSGlkZUxhYmVsID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkhpZGVMYWJlbFxyXG4gICAgICAgICAgSW5ub3ZhdGlvbkxhYi5MYWJlbEtleSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbEtleVxyXG4gICAgICAgICAgSW5ub3ZhdGlvbkxhYi5Jc1JlcXVpcmVkID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLklzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBJbm5vdmF0aW9uTGFiLlZpZXdUeXBlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLlZpZXdUeXBlO1xyXG4gICAgICAgICAgSW5ub3ZhdGlvbkxhYi5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgIElubm92YXRpb25MYWIuRGF0YVNvdXJjZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5kYXRhU291cmNlXHJcbiAgICAgICAgICBJbm5vdmF0aW9uTGFiLlNpbmdsZVNlbGVjdGlvbiA9ICF0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuaXNNdWx0aXBsZVxyXG4gICAgICAgICAgSW5ub3ZhdGlvbkxhYi5TaG93Q2hlY2tib3ggPSBmYWxzZVxyXG4gICAgICAgICAgSW5ub3ZhdGlvbkxhYi5BbGxvd1NlYXJjaEZpbHRlciA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5oYXNTZWFyY2hcclxuICAgICAgICAgIElubm92YXRpb25MYWIuU2VsZWN0ZWRJdGVtcyA9IHZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8RHJvcGRvd25MaXN0Q29tcG9uZW50Pih0aGlzLkl0ZW0sIERyb3Bkb3duTGlzdENvbXBvbmVudCwgdGhpcy5ncm91cCwgSW5ub3ZhdGlvbkxhYilcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuQ291bnRyeTpcclxuICAgICAgICAgIGxldCBDb3VudHJ5ID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgQ291bnRyeS5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIGNoYW5nZXMuaXRlbU51bWJlci5jdXJyZW50VmFsdWUgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBDb3VudHJ5LkhpZGVMYWJlbCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5IaWRlTGFiZWxcclxuICAgICAgICAgIENvdW50cnkuTGFiZWxLZXkgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxLZXlcclxuICAgICAgICAgIENvdW50cnkuSXNSZXF1aXJlZCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Jc1JlcXVpcmVkO1xyXG4gICAgICAgICAgQ291bnRyeS5WaWV3VHlwZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5WaWV3VHlwZTtcclxuICAgICAgICAgIENvdW50cnkuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uID8gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBDb3VudHJ5LkRhdGFTb3VyY2UgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuZGF0YVNvdXJjZVxyXG4gICAgICAgICAgQ291bnRyeS5TaW5nbGVTZWxlY3Rpb24gPSAhdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLmlzTXVsdGlwbGVcclxuICAgICAgICAgIENvdW50cnkuU2hvd0NoZWNrYm94ID0gZmFsc2VcclxuICAgICAgICAgIENvdW50cnkuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuaGFzU2VhcmNoXHJcbiAgICAgICAgICBDb3VudHJ5LlNlbGVjdGVkSXRlbXMgPSB2YWx1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PERyb3Bkb3duTGlzdENvbXBvbmVudD4odGhpcy5JdGVtLCBEcm9wZG93bkxpc3RDb21wb25lbnQsIHRoaXMuZ3JvdXAsIENvdW50cnkpXHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgLy9GaWxlVXBsb2FkXHJcbiAgICAgICAgY2FzZSBEYXRhVHlwZS5GaWxlOlxyXG4gICAgICAgICAgbGV0IEZpbGUgPSBuZXcgRmlsZVVwbG9hZE9wdGlvbnMoKTtcclxuICAgICAgICAgIEZpbGUuTmFtZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5OYW1lICsgXCIuXCIgKyBjaGFuZ2VzLml0ZW1OdW1iZXIuY3VycmVudFZhbHVlICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgRmlsZS5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBGaWxlLkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBGaWxlLklzUmVxdWlyZWQgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSXNSZXF1aXJlZDtcclxuICAgICAgICAgIEZpbGUuVmlld1R5cGUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBGaWxlLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgRmlsZS5GaWxlTWF4U2l6ZUluTUIgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMubWF4RmlsZVNpemVJbk1CXHJcbiAgICAgICAgICBGaWxlLlZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxGaWxlVXBsb2FkQ29tcG9uZW50Pih0aGlzLkl0ZW0sIEZpbGVVcGxvYWRDb21wb25lbnQsIHRoaXMuZ3JvdXAsIEZpbGUpXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIERhdGFUeXBlLk11bHRpRmlsZTpcclxuICAgICAgICAgIGxldCBNdWx0aUZpbGUgPSBuZXcgRmlsZVVwbG9hZE9wdGlvbnMoKTtcclxuICAgICAgICAgIEZpbGUuTmFtZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5OYW1lICsgXCIuXCIgKyBjaGFuZ2VzLml0ZW1OdW1iZXIuY3VycmVudFZhbHVlICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgRmlsZS5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBGaWxlLkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBGaWxlLklzUmVxdWlyZWQgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSXNSZXF1aXJlZDtcclxuICAgICAgICAgIEZpbGUuVmlld1R5cGUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBGaWxlLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgTXVsdGlGaWxlLk1heFNpemVGb3JBbGxGaWxlc0luTUIgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMubWF4RmlsZVNpemVJbk1CXHJcbiAgICAgICAgICBNdWx0aUZpbGUuTWF4Tm9PZkZpbGVzID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1heEZpbGVDb3VudFxyXG4gICAgICAgICAgTXVsdGlGaWxlLklzTXVsdGlwbGVGaWxlID0gdHJ1ZTtcclxuICAgICAgICAgIE11bHRpRmlsZS5WYWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8RmlsZVVwbG9hZENvbXBvbmVudD4odGhpcy5JdGVtLCBGaWxlVXBsb2FkQ29tcG9uZW50LCB0aGlzLmdyb3VwLCBNdWx0aUZpbGUpXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICAvL0ltYWdlVXBsb2FkXHJcbiAgICAgICAgY2FzZSBEYXRhVHlwZS5JbWFnZTpcclxuICAgICAgICAgIGxldCBJbWFnZSA9IG5ldyBJbWFnZVVwbG9hZE9wdGlvbnMoKTtcclxuICAgICAgICAgIEltYWdlLk5hbWUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTmFtZSArIFwiLlwiICsgY2hhbmdlcy5pdGVtTnVtYmVyLmN1cnJlbnRWYWx1ZSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgIEltYWdlLkhpZGVMYWJlbCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5IaWRlTGFiZWxcclxuICAgICAgICAgIEltYWdlLkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBJbWFnZS5Jc1JlcXVpcmVkID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLklzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBJbWFnZS5WaWV3VHlwZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5WaWV3VHlwZTtcclxuICAgICAgICAgIEltYWdlLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgaWYgKHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5tYXhGaWxlU2l6ZUluTUIpXHJcbiAgICAgICAgICAgIEltYWdlLkZpbGVNYXhTaXplSW5NQiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5tYXhGaWxlU2l6ZUluTUJcclxuICAgICAgICAgIEltYWdlLlZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxJbWFnZVVwbG9hZGVyQ29tcG9uZW50Pih0aGlzLkl0ZW0sIEltYWdlVXBsb2FkZXJDb21wb25lbnQsIHRoaXMuZ3JvdXAsIEltYWdlKVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBEYXRhVHlwZS5Db3ZlclBob3RvOlxyXG4gICAgICAgICAgbGV0IENvdmVyUGhvdG8gPSBuZXcgSW1hZ2VVcGxvYWRPcHRpb25zKCk7XHJcbiAgICAgICAgICBDb3ZlclBob3RvLk5hbWUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTmFtZSArIFwiLlwiICsgY2hhbmdlcy5pdGVtTnVtYmVyLmN1cnJlbnRWYWx1ZSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgIENvdmVyUGhvdG8uSGlkZUxhYmVsID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkhpZGVMYWJlbFxyXG4gICAgICAgICAgQ292ZXJQaG90by5MYWJlbEtleSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbEtleVxyXG4gICAgICAgICAgQ292ZXJQaG90by5Jc1JlcXVpcmVkID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLklzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBDb3ZlclBob3RvLlZpZXdUeXBlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLlZpZXdUeXBlO1xyXG4gICAgICAgICAgQ292ZXJQaG90by5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgIGlmICh0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMubWF4RmlsZVNpemVJbk1CKVxyXG4gICAgICAgICAgICBDb3ZlclBob3RvLkZpbGVNYXhTaXplSW5NQiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5tYXhGaWxlU2l6ZUluTUJcclxuICAgICAgICAgIENvdmVyUGhvdG8uVmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PEltYWdlVXBsb2FkZXJDb21wb25lbnQ+KHRoaXMuSXRlbSwgSW1hZ2VVcGxvYWRlckNvbXBvbmVudCwgdGhpcy5ncm91cCwgQ292ZXJQaG90bylcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIC8vTW9iaWxlXHJcbiAgICAgICAgY2FzZSBEYXRhVHlwZS5Nb2JpbGU6XHJcbiAgICAgICAgICBsZXQgTW9iaWxlID0gbmV3IFBob25lT3B0aW9ucygpO1xyXG4gICAgICAgICAgTW9iaWxlLk5hbWUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTmFtZSArIFwiLlwiICsgY2hhbmdlcy5pdGVtTnVtYmVyLmN1cnJlbnRWYWx1ZSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgIE1vYmlsZS5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBNb2JpbGUuTGFiZWxLZXkgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxLZXlcclxuICAgICAgICAgIE1vYmlsZS5Jc1JlcXVpcmVkID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLklzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBNb2JpbGUuVmlld1R5cGUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBNb2JpbGUuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uID8gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBNb2JpbGUuQWxsb3dTZWFyY2ggPSB0cnVlO1xyXG4gICAgICAgICAgTW9iaWxlLlBob25lVmFsaWRhdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICBNb2JpbGUuU2VsZWN0Rmlyc3RDb3VudHJ5ID0gdHJ1ZTtcclxuICAgICAgICAgIE1vYmlsZS5FbmFibGVQbGFjZWhvbGRlciA9IHRydWVcclxuICAgICAgICAgIE1vYmlsZS5WYWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8UGhvbmVDb21wb25lbnQ+KHRoaXMuSXRlbSwgUGhvbmVDb21wb25lbnQsIHRoaXMuZ3JvdXAsIE1vYmlsZSlcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIC8vTXVsdGlsaW5lVGV4dFxyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuTXVsdGlsaW5lVGV4dDpcclxuICAgICAgICAgIGxldCBNdWx0aWxpbmVUZXh0ID0gbmV3IFRleHRBcmVhT3B0aW9ucygpO1xyXG4gICAgICAgICAgTXVsdGlsaW5lVGV4dC5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIGNoYW5nZXMuaXRlbU51bWJlci5jdXJyZW50VmFsdWUgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBNdWx0aWxpbmVUZXh0LkhpZGVMYWJlbCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5IaWRlTGFiZWxcclxuICAgICAgICAgIE11bHRpbGluZVRleHQuTGFiZWxLZXkgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxLZXlcclxuICAgICAgICAgIE11bHRpbGluZVRleHQuSXNSZXF1aXJlZCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Jc1JlcXVpcmVkO1xyXG4gICAgICAgICAgTXVsdGlsaW5lVGV4dC5WaWV3VHlwZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5WaWV3VHlwZTtcclxuICAgICAgICAgIE11bHRpbGluZVRleHQuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uID8gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBpZiAodGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1heExlbmd0aClcclxuICAgICAgICAgICAgTXVsdGlsaW5lVGV4dC5NYXhMZW5ndGggPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMubWF4TGVuZ3RoXHJcbiAgICAgICAgICBpZiAodGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1pbkxlbmd0aClcclxuICAgICAgICAgICAgTXVsdGlsaW5lVGV4dC5NaW5MZW5ndGggPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMubWluTGVuZ3RoXHJcbiAgICAgICAgICBNdWx0aWxpbmVUZXh0LlJvd3MgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMucm93cztcclxuICAgICAgICAgIE11bHRpbGluZVRleHQuRm9yY2VEaXJlY3Rpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuRm9yY2VEaXJlY3Rpb25cclxuICAgICAgICAgIE11bHRpbGluZVRleHQuVmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PFRleHRBcmVhQ29tcG9uZW50Pih0aGlzLkl0ZW0sIFRleHRBcmVhQ29tcG9uZW50LCB0aGlzLmdyb3VwLCBNdWx0aWxpbmVUZXh0KVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgLy9IVE1MXHJcbiAgICAgICAgY2FzZSBEYXRhVHlwZS5IVE1MOlxyXG4gICAgICAgICAgbGV0IEhUTUwgPSBuZXcgSHRtbEVkaXRvck9wdGlvbnMoKTtcclxuICAgICAgICAgIEhUTUwuTmFtZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5OYW1lICsgXCIuXCIgKyBjaGFuZ2VzLml0ZW1OdW1iZXIuY3VycmVudFZhbHVlICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgSFRNTC5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBIVE1MLkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBIVE1MLklzUmVxdWlyZWQgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSXNSZXF1aXJlZDtcclxuICAgICAgICAgIEhUTUwuVmlld1R5cGUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBIVE1MLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgaWYgKHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5tYXhMZW5ndGgpXHJcbiAgICAgICAgICAgIEhUTUwuTWF4TGVuZ3RoID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1heExlbmd0aFxyXG4gICAgICAgICAgaWYgKHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5taW5MZW5ndGgpXHJcbiAgICAgICAgICAgIEhUTUwuTWluTGVuZ3RoID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1pbkxlbmd0aFxyXG4gICAgICAgICAgSFRNTC5IZWlnaHQgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMucm93cztcclxuICAgICAgICAgIEhUTUwuRm9yY2VEaXJlY3Rpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuRm9yY2VEaXJlY3Rpb25cclxuICAgICAgICAgIEhUTUwuVmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PEh0bWxFZGl0b3JDb21wb25lbnQ+KHRoaXMuSXRlbSwgSHRtbEVkaXRvckNvbXBvbmVudCwgdGhpcy5ncm91cCwgSFRNTClcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIC8vQm9vbGVhblxyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuQm9vbGVhbjpcclxuICAgICAgICAgIGxldCBCb29sZWFuID0gbmV3IFRvZ2dsZVNsaWRlT3B0aW9ucygpO1xyXG4gICAgICAgICAgQm9vbGVhbi5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIGNoYW5nZXMuaXRlbU51bWJlci5jdXJyZW50VmFsdWUgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBCb29sZWFuLkhpZGVMYWJlbCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5IaWRlTGFiZWxcclxuICAgICAgICAgIEJvb2xlYW4uTGFiZWxLZXkgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxLZXlcclxuICAgICAgICAgIEJvb2xlYW4uVmlld1R5cGUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBCb29sZWFuLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgQm9vbGVhbi5WYWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8VG9nZ2xlc2xpZGVDb21wb25lbnQ+KHRoaXMuSXRlbSwgVG9nZ2xlc2xpZGVDb21wb25lbnQsIHRoaXMuZ3JvdXAsIEJvb2xlYW4pXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICAvL0xvY2F0aW9uXHJcbiAgICAgICAgY2FzZSBEYXRhVHlwZS5Mb2NhdGlvbjpcclxuICAgICAgICAgIGxldCBMb2NhdGlvbiA9IG5ldyBNYXBBdXRvQ29tcGxldGVPcHRpb25zKCk7XHJcbiAgICAgICAgICBMb2NhdGlvbi5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIGNoYW5nZXMuaXRlbU51bWJlci5jdXJyZW50VmFsdWUgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBMb2NhdGlvbi5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBMb2NhdGlvbi5MYWJlbEtleSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbEtleVxyXG4gICAgICAgICAgTG9jYXRpb24uSXNSZXF1aXJlZCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Jc1JlcXVpcmVkO1xyXG4gICAgICAgICAgTG9jYXRpb24uVmlld1R5cGUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBMb2NhdGlvbi5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgIExvY2F0aW9uLlZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxNYXBBdXRvQ29tcGxldGVDb21wb25lbnQ+KHRoaXMuSXRlbSwgTWFwQXV0b0NvbXBsZXRlQ29tcG9uZW50LCB0aGlzLmdyb3VwLCBMb2NhdGlvbilcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
|
|
744
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwZWF0ZXItZmllbGQtYnVpbGRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWNvbnRyb2xzL3NyYy9saWIvY29udHJvbHMvUmVwZWF0ZXIvcmVwZWF0ZXItZmllbGQtYnVpbGRlci9yZXBlYXRlci1maWVsZC1idWlsZGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxLQUFLLEVBQXlCLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwSCxPQUFPLEVBQWEsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUvRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRTVELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDOUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN2RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDbkUsT0FBTyxFQUFF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d0JBQ3BJLFFBQVEsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFBO3dCQUNoRSxRQUFRLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQTt3QkFDOUQsUUFBUSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUM7d0JBQ25FLFFBQVEsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDO3dCQUMvRCxRQUFRLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7d0JBQ3hJLFFBQVEsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO3dCQUN2QixJQUFJLENBQUMsc0JBQXNCLENBQUMsc0JBQXNCLENBQTJCLElBQUksQ0FBQyxJQUFJLEVBQUUsd0JBQXdCLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQTt3QkFDdkksTUFBTTtvQkFDUjt3QkFDRSxNQUFNO2lCQUNUO2FBRUY7SUFFSCxDQUFDOzs7WUFudEJGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsd0JBQXdCO2dCQUNsQyxtREFBc0Q7YUFDdkQ7OztZQWhCUSxzQkFBc0I7WUFwQlgsa0JBQWtCOzs7bUJBdUNuQyxTQUFTLFNBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFO29CQUM1QyxLQUFLO3lCQUNMLEtBQUs7NEJBQ0wsS0FBSzs0QkFDTCxLQUFLO3lCQUNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAsIEZvcm1Hcm91cERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgVXRpbGl0eVNlcnZpY2UgfSBmcm9tICdAYm5zaWdodHMvYmJzZi11dGlsaXRpZXMnO1xyXG5pbXBvcnQgeyBEYXRhVHlwZSB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9FbnVtcy9FbnVtcyc7XHJcbmltcG9ydCB7IElucHV0VHlwZSB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9FbnVtcy9JbnB1dFR5cGUnO1xyXG5pbXBvcnQgeyBMYW5ndWFnZVZhbGlkYXRpb24gfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvRW51bXMvTGFuZ3VhZ2VWYWxpZGF0aW9uJztcclxuaW1wb3J0IHsgUGlja2VyVHlwZSB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9FbnVtcy9QaWNrZXJUeXBlJztcclxuaW1wb3J0IHsgU2VsZWN0TW9kZSB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9FbnVtcy9TZWxlY3RNb2RlJztcclxuaW1wb3J0IHsgU3RhcnRWaWV3IH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL0VudW1zL1N0YXJ0Vmlldyc7XHJcbmltcG9ydCB7IERhdGVQaWNrZXJPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL01vZGVscy9kYXRlUGlja2VyT3B0aW9ucyc7XHJcbmltcG9ydCB7IERyb3Bkb3duT3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9Nb2RlbHMvRHJvcGRvd25PcHRpb25zJztcclxuaW1wb3J0IHsgRmlsZVVwbG9hZE9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvTW9kZWxzL0ZpbGVVcGxvYWRPcHRpb25zJztcclxuaW1wb3J0IHsgSHRtbEVkaXRvck9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvTW9kZWxzL0h0bWxFZGl0b3JPcHRpb25zJztcclxuaW1wb3J0IHsgSW1hZ2VVcGxvYWRPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL01vZGVscy9JbWFnZVVwbG9hZE9wdGlvbnMnO1xyXG5pbXBvcnQgeyBNYXBBdXRvQ29tcGxldGVPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL01vZGVscy9NYXBBdXRvQ29tcGxldGVPcHRpb25zJztcclxuaW1wb3J0IHsgUGhvbmVPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL01vZGVscy9QaG9uZU9wdGlvbnMnO1xyXG5pbXBvcnQgeyBSYW5nZU51bWJlciB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9Nb2RlbHMvUmFuZ2VOdW1iZXInO1xyXG5pbXBvcnQgeyBSZXBlYXRlckZpZWxkIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL01vZGVscy9SZXBlYXRlckZpZWxkJztcclxuaW1wb3J0IHsgVGV4dEFyZWFPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL01vZGVscy9UZXh0QXJlYU9wdGlvbnMnO1xyXG5pbXBvcnQgeyBUZXh0Qm94T3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9Nb2RlbHMvVGV4dEJveE9wdGlvbnMnO1xyXG5pbXBvcnQgeyBUb2dnbGVTbGlkZU9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvTW9kZWxzL1RvZ2dsZXNsaWRlT3B0aW9ucyc7XHJcbmltcG9ydCB7IFJlbmRlckNvbXBvbmVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvc2VydmljZXMvcmVuZGVyLWNvbXBvbmVudC1zZXJ2aWNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEYXRlSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9EYXRlVGltZVBpY2tlci9EYXRlVGltZVBpY2tlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEcm9wZG93bkxpc3RDb21wb25lbnQgfSBmcm9tICcuLi8uLi9Ecm9wZG93bkxpc3QvRHJvcGRvd25MaXN0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZpbGVVcGxvYWRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9GaWxlVXBsYW9kL0ZpbGVVcGxhb2QuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSHRtbEVkaXRvckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL0h0bWxFZGl0b3IvSHRtbEVkaXRvci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBJbWFnZVVwbG9hZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vSW1hZ2VVcGxvYWQvSW1hZ2VVcGxvYWQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTWFwQXV0b0NvbXBsZXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vTWFwQXV0b0NvbXBsZXRlL01hcEF1dG9Db21wbGV0ZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBQaG9uZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL1Bob25lL1Bob25lLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRleHRBcmVhQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vVGV4dEFyZWEvVGV4dEFyZWEuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVGV4dGJveENvbXBvbmVudCB9IGZyb20gJy4uLy4uL1RleHRCb3gvVGV4dEJveC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUb2dnbGVzbGlkZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL1RvZ2dsZXNsaWRlL3RvZ2dsZXNsaWRlLmNvbXBvbmVudCc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdyZXBlYXRlci1maWVsZC1idWlsZGVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcmVwZWF0ZXItZmllbGQtYnVpbGRlci5jb21wb25lbnQuaHRtbCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZXBlYXRlckZpZWxkQnVpbGRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XHJcblxyXG4gIEBWaWV3Q2hpbGQoXCJJdGVtXCIsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KSBJdGVtOiBWaWV3Q29udGFpbmVyUmVmO1xyXG4gIEBJbnB1dCgpIGdyb3VwOiBGb3JtR3JvdXA7XHJcbiAgQElucHV0KCkgaXRlbU51bWJlcjogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIGNvbnRyb2xOdW1iZXI6IG51bWJlcjtcclxuICBASW5wdXQoKSBSZXBlYXRlckZpZWxkOiBSZXBlYXRlckZpZWxkO1xyXG4gIEBJbnB1dCgpIGl0ZW1zVmFsdWU6YW55W109W107XHJcbiAgaXRlbVZhbHVlOiBhbnkgPSBudWxsO1xyXG4gIHZhbHVlOiBhbnk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVuZGVyQ29tcG9uZW50U2VydmljZTogUmVuZGVyQ29tcG9uZW50U2VydmljZSwgcHVibGljIFRleHRDb250cm9sSG9zdDogRm9ybUdyb3VwRGlyZWN0aXZlKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgXHJcbiAgfVxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBpZih0aGlzLml0ZW1zVmFsdWUubGVuZ3RoPjApXHJcbiAgICAgICAgIHRoaXMuaXRlbVZhbHVlPXRoaXMuaXRlbXNWYWx1ZVt0aGlzLml0ZW1OdW1iZXJdXHJcbiAgICAgIGlmICh0aGlzLml0ZW1WYWx1ZSkge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuaXRlbVZhbHVlKSB7XHJcbiAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuaXRlbVZhbHVlLCBrZXkpICYmIGtleSA9PSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTmFtZSkge1xyXG4gICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5pdGVtVmFsdWVba2V5XTtcclxuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IGVsZW1lbnQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuSXRlbS5jbGVhcigpXHJcbiAgICAgIHN3aXRjaCAodGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xUeXBlKSB7XHJcbiAgICAgICAgLy8vVGV4dEJveFxyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuVGV4dDpcclxuICAgICAgICAgIGxldCBUZXh0ID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgICBUZXh0Lk5hbWUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTmFtZSArIFwiLlwiICsgdGhpcy5pdGVtTnVtYmVyLnRvU3RyaW5nKCkgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBUZXh0LkhpZGVMYWJlbCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5IaWRlTGFiZWxcclxuICAgICAgICAgIFRleHQuTGFiZWxLZXkgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxLZXlcclxuICAgICAgICAgIFRleHQuSXNSZXF1aXJlZCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Jc1JlcXVpcmVkO1xyXG4gICAgICAgICAgVGV4dC5WaWV3VHlwZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5WaWV3VHlwZTtcclxuICAgICAgICAgIFRleHQuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uID8gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBUZXh0LlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgICAgIFRleHQuTGFuZ3VhZ2VWYWxpZGF0aW9uID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhbmd1YWdlVmFsaWRhdGlvbjtcclxuICAgICAgICAgIGlmICh0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMubWF4TGVuZ3RoKVxyXG4gICAgICAgICAgICBUZXh0Lk1heExlbmd0aCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5tYXhMZW5ndGhcclxuICAgICAgICAgIGlmICh0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMubWluTGVuZ3RoKVxyXG4gICAgICAgICAgICBUZXh0Lk1pbkxlbmd0aCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5taW5MZW5ndGhcclxuICAgICAgICAgIFRleHQuVmFsdWU9dGhpcy52YWx1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PFRleHRib3hDb21wb25lbnQ+KHRoaXMuSXRlbSwgVGV4dGJveENvbXBvbmVudCwgdGhpcy5ncm91cCwgVGV4dClcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIERhdGFUeXBlLk5hbWU6XHJcbiAgICAgICAgICBsZXQgTmFtZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgICAgTmFtZS5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIHRoaXMuaXRlbU51bWJlci50b1N0cmluZygpICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgTmFtZS5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBOYW1lLkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBOYW1lLklzUmVxdWlyZWQgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSXNSZXF1aXJlZDtcclxuICAgICAgICAgIE5hbWUuVmlld1R5cGUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBOYW1lLkxhbmd1YWdlVmFsaWRhdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYW5ndWFnZVZhbGlkYXRpb247XHJcbiAgICAgICAgICBOYW1lLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgaWYgKHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5tYXhMZW5ndGgpXHJcbiAgICAgICAgICAgIE5hbWUuTWF4TGVuZ3RoID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1heExlbmd0aFxyXG4gICAgICAgICAgaWYgKHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5taW5MZW5ndGgpXHJcbiAgICAgICAgICAgIE5hbWUuTWluTGVuZ3RoID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1pbkxlbmd0aFxyXG4gICAgICAgICAgTmFtZS5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgICAgICBOYW1lLlZhbHVlPXRoaXMudmFsdWU7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxUZXh0Ym94Q29tcG9uZW50Pih0aGlzLkl0ZW0sIFRleHRib3hDb21wb25lbnQsIHRoaXMuZ3JvdXAsIE5hbWUpXHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgY2FzZSBEYXRhVHlwZS5FbWFpbDpcclxuICAgICAgICAgIGxldCBFbWFpbCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgICAgRW1haWwuTmFtZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5OYW1lICsgXCIuXCIgKyB0aGlzLml0ZW1OdW1iZXIudG9TdHJpbmcoKSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgIEVtYWlsLkhpZGVMYWJlbCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5IaWRlTGFiZWxcclxuICAgICAgICAgIEVtYWlsLkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBFbWFpbC5Jc1JlcXVpcmVkID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLklzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBFbWFpbC5WaWV3VHlwZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5WaWV3VHlwZTtcclxuICAgICAgICAgIEVtYWlsLkxhbmd1YWdlVmFsaWRhdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYW5ndWFnZVZhbGlkYXRpb247XHJcbiAgICAgICAgICBFbWFpbC5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgIEVtYWlsLlR5cGUgPSBJbnB1dFR5cGUuRW1haWw7XHJcbiAgICAgICAgICBFbWFpbC5WYWx1ZT10aGlzLnZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8VGV4dGJveENvbXBvbmVudD4odGhpcy5JdGVtLCBUZXh0Ym94Q29tcG9uZW50LCB0aGlzLmdyb3VwLCBFbWFpbClcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIERhdGFUeXBlLk51bWJlcjpcclxuICAgICAgICAgIGxldCBOdW1iZXIgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICAgIE51bWJlci5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIHRoaXMuaXRlbU51bWJlci50b1N0cmluZygpICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgTnVtYmVyLkhpZGVMYWJlbCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5IaWRlTGFiZWxcclxuICAgICAgICAgIE51bWJlci5MYWJlbEtleSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbEtleVxyXG4gICAgICAgICAgTnVtYmVyLklzUmVxdWlyZWQgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSXNSZXF1aXJlZDtcclxuICAgICAgICAgIE51bWJlci5WaWV3VHlwZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5WaWV3VHlwZTtcclxuICAgICAgICAgIE51bWJlci5MYW5ndWFnZVZhbGlkYXRpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFuZ3VhZ2VWYWxpZGF0aW9uO1xyXG4gICAgICAgICAgTnVtYmVyLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgTnVtYmVyLlR5cGUgPSBJbnB1dFR5cGUuTnVtYmVyO1xyXG4gICAgICAgICAgbGV0IHJhbmdlTnVtYmVyID0gbmV3IFJhbmdlTnVtYmVyKClcclxuICAgICAgICAgIHJhbmdlTnVtYmVyLlRvID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1heExlbmd0aFxyXG4gICAgICAgICAgcmFuZ2VOdW1iZXIuRnJvbSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5taW5MZW5ndGhcclxuICAgICAgICAgIE51bWJlci5OdW1iZXJSYW5nZSA9IHJhbmdlTnVtYmVyO1xyXG4gICAgICAgICAgTnVtYmVyLlZhbHVlPXRoaXMudmFsdWU7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxUZXh0Ym94Q29tcG9uZW50Pih0aGlzLkl0ZW0sIFRleHRib3hDb21wb25lbnQsIHRoaXMuZ3JvdXAsIE51bWJlcilcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAvLy9EYXRlVGltZVxyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuRGF0ZTpcclxuICAgICAgICAgIGxldCBEYXRlID0gbmV3IERhdGVQaWNrZXJPcHRpb25zKCk7XHJcbiAgICAgICAgICBEYXRlLk5hbWUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTmFtZSArIFwiLlwiICsgdGhpcy5pdGVtTnVtYmVyLnRvU3RyaW5nKCkgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBEYXRlLkhpZGVMYWJlbCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5IaWRlTGFiZWxcclxuICAgICAgICAgIERhdGUuTGFiZWxLZXkgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxLZXlcclxuICAgICAgICAgIERhdGUuSXNSZXF1aXJlZCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Jc1JlcXVpcmVkO1xyXG4gICAgICAgICAgRGF0ZS5WaWV3VHlwZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5WaWV3VHlwZTtcclxuICAgICAgICAgIERhdGUuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uID8gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBEYXRlLlBpY2tlclR5cGUgPSBQaWNrZXJUeXBlLkNhbGVuZGFyO1xyXG4gICAgICAgICAgRGF0ZS5TZWxlY3RNb2RlID0gU2VsZWN0TW9kZS5TaW5nbGVcclxuICAgICAgICAgIERhdGUuU3RhcnRWaWV3ID0gU3RhcnRWaWV3Lk1vbnRoXHJcbiAgICAgICAgICBEYXRlLlZhbHVlPXRoaXMudmFsdWU7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxEYXRlSW5wdXRDb21wb25lbnQ+KHRoaXMuSXRlbSwgRGF0ZUlucHV0Q29tcG9uZW50LCB0aGlzLmdyb3VwLCBEYXRlKVxyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuRGF0ZVRpbWU6XHJcbiAgICAgICAgICBsZXQgRGF0ZVRpbWUgPSBuZXcgRGF0ZVBpY2tlck9wdGlvbnMoKTtcclxuICAgICAgICAgIERhdGVUaW1lLk5hbWUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTmFtZSArIFwiLlwiICsgdGhpcy5pdGVtTnVtYmVyLnRvU3RyaW5nKCkgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBEYXRlVGltZS5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBEYXRlVGltZS5MYWJlbEtleSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbEtleVxyXG4gICAgICAgICAgRGF0ZVRpbWUuSXNSZXF1aXJlZCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Jc1JlcXVpcmVkO1xyXG4gICAgICAgICAgRGF0ZVRpbWUuVmlld1R5cGUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBEYXRlVGltZS5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgIERhdGVUaW1lLlBpY2tlclR5cGUgPSBQaWNrZXJUeXBlLkJvdGg7XHJcbiAgICAgICAgICBEYXRlVGltZS5TZWxlY3RNb2RlID0gU2VsZWN0TW9kZS5TaW5nbGVcclxuICAgICAgICAgIERhdGVUaW1lLlN0YXJ0VmlldyA9IFN0YXJ0Vmlldy5Nb250aFxyXG4gICAgICAgICAgRGF0ZVRpbWUuVmFsdWU9dGhpcy52YWx1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PERhdGVJbnB1dENvbXBvbmVudD4odGhpcy5JdGVtLCBEYXRlSW5wdXRDb21wb25lbnQsIHRoaXMuZ3JvdXAsIERhdGVUaW1lKVxyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuVGltZTpcclxuICAgICAgICAgIGxldCBUaW1lID0gbmV3IERhdGVQaWNrZXJPcHRpb25zKCk7XHJcbiAgICAgICAgICBUaW1lLk5hbWUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTmFtZSArIFwiLlwiICsgdGhpcy5pdGVtTnVtYmVyLnRvU3RyaW5nKCkgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBUaW1lLkhpZGVMYWJlbCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5IaWRlTGFiZWxcclxuICAgICAgICAgIFRpbWUuTGFiZWxLZXkgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxLZXlcclxuICAgICAgICAgIFRpbWUuSXNSZXF1aXJlZCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Jc1JlcXVpcmVkO1xyXG4gICAgICAgICAgVGltZS5WaWV3VHlwZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5WaWV3VHlwZTtcclxuICAgICAgICAgIFRpbWUuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uID8gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBUaW1lLlBpY2tlclR5cGUgPSBQaWNrZXJUeXBlLlRpbWVyO1xyXG4gICAgICAgICAgVGltZS5TZWxlY3RNb2RlID0gU2VsZWN0TW9kZS5TaW5nbGVcclxuICAgICAgICAgIFRpbWUuU3RhcnRWaWV3ID0gU3RhcnRWaWV3Lk1vbnRoXHJcbiAgICAgICAgICBUaW1lLlZhbHVlPXRoaXMudmFsdWU7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxEYXRlSW5wdXRDb21wb25lbnQ+KHRoaXMuSXRlbSwgRGF0ZUlucHV0Q29tcG9uZW50LCB0aGlzLmdyb3VwLCBUaW1lKVxyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIC8vRHJvcGRvd25cclxuICAgICAgICBjYXNlIERhdGFUeXBlLlNpbmdsZVNlbGVjdDpcclxuICAgICAgICAgIGxldCBTaW5nbGVTZWxlY3QgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICBTaW5nbGVTZWxlY3QuTmFtZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5OYW1lICsgXCIuXCIgKyB0aGlzLml0ZW1OdW1iZXIudG9TdHJpbmcoKSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgIFNpbmdsZVNlbGVjdC5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBTaW5nbGVTZWxlY3QuTGFiZWxLZXkgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxLZXlcclxuICAgICAgICAgIFNpbmdsZVNlbGVjdC5Jc1JlcXVpcmVkID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLklzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBTaW5nbGVTZWxlY3QuVmlld1R5cGUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBTaW5nbGVTZWxlY3QuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uID8gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBTaW5nbGVTZWxlY3QuRGF0YVNvdXJjZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5kYXRhU291cmNlXHJcbiAgICAgICAgICBTaW5nbGVTZWxlY3QuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZVxyXG4gICAgICAgICAgU2luZ2xlU2VsZWN0LlNob3dDaGVja2JveCA9IGZhbHNlXHJcbiAgICAgICAgICBTaW5nbGVTZWxlY3QuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuaGFzU2VhcmNoXHJcbiAgICAgICAgICBTaW5nbGVTZWxlY3QuU2VsZWN0ZWRJdGVtcz10aGlzLnZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8RHJvcGRvd25MaXN0Q29tcG9uZW50Pih0aGlzLkl0ZW0sIERyb3Bkb3duTGlzdENvbXBvbmVudCwgdGhpcy5ncm91cCwgU2luZ2xlU2VsZWN0KVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBEYXRhVHlwZS5NdWxpcGxlU2VsZWN0OlxyXG4gICAgICAgICAgbGV0IE11bGlwbGVTZWxlY3QgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICBNdWxpcGxlU2VsZWN0Lk5hbWUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTmFtZSArIFwiLlwiICsgdGhpcy5pdGVtTnVtYmVyLnRvU3RyaW5nKCkgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBNdWxpcGxlU2VsZWN0LkhpZGVMYWJlbCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5IaWRlTGFiZWxcclxuICAgICAgICAgIE11bGlwbGVTZWxlY3QuTGFiZWxLZXkgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxLZXlcclxuICAgICAgICAgIE11bGlwbGVTZWxlY3QuSXNSZXF1aXJlZCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Jc1JlcXVpcmVkO1xyXG4gICAgICAgICAgTXVsaXBsZVNlbGVjdC5WaWV3VHlwZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5WaWV3VHlwZTtcclxuICAgICAgICAgIE11bGlwbGVTZWxlY3QuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uID8gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBNdWxpcGxlU2VsZWN0LkRhdGFTb3VyY2UgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuZGF0YVNvdXJjZVxyXG4gICAgICAgICAgTXVsaXBsZVNlbGVjdC5TaW5nbGVTZWxlY3Rpb24gPSBmYWxzZVxyXG4gICAgICAgICAgTXVsaXBsZVNlbGVjdC5TaG93Q2hlY2tib3ggPSBmYWxzZVxyXG4gICAgICAgICAgTXVsaXBsZVNlbGVjdC5BbGxvd1NlYXJjaEZpbHRlciA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5oYXNTZWFyY2hcclxuICAgICAgICAgIE11bGlwbGVTZWxlY3QuU2VsZWN0ZWRJdGVtcz10aGlzLnZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8RHJvcGRvd25MaXN0Q29tcG9uZW50Pih0aGlzLkl0ZW0sIERyb3Bkb3duTGlzdENvbXBvbmVudCwgdGhpcy5ncm91cCwgTXVsaXBsZVNlbGVjdClcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuR29hbDpcclxuICAgICAgICAgIGxldCBHb2FsID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgR29hbC5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIHRoaXMuaXRlbU51bWJlci50b1N0cmluZygpICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgR29hbC5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBHb2FsLkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBHb2FsLklzUmVxdWlyZWQgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSXNSZXF1aXJlZDtcclxuICAgICAgICAgIEdvYWwuVmlld1R5cGUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBHb2FsLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgR29hbC5EYXRhU291cmNlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLmRhdGFTb3VyY2VcclxuICAgICAgICAgIEdvYWwuU2luZ2xlU2VsZWN0aW9uID0gIXRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5pc011bHRpcGxlXHJcbiAgICAgICAgICBHb2FsLlNob3dDaGVja2JveCA9IGZhbHNlXHJcbiAgICAgICAgICBHb2FsLkFsbG93U2VhcmNoRmlsdGVyID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLmhhc1NlYXJjaFxyXG4gICAgICAgICAgR29hbC5TZWxlY3RlZEl0ZW1zPXRoaXMudmFsdWU7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxEcm9wZG93bkxpc3RDb21wb25lbnQ+KHRoaXMuSXRlbSwgRHJvcGRvd25MaXN0Q29tcG9uZW50LCB0aGlzLmdyb3VwLCBHb2FsKVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBEYXRhVHlwZS5DaGFsbGVuZ2U6XHJcbiAgICAgICAgICBsZXQgQ2hhbGxlbmdlID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgQ2hhbGxlbmdlLk5hbWUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTmFtZSArIFwiLlwiICsgdGhpcy5pdGVtTnVtYmVyLnRvU3RyaW5nKCkgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBDaGFsbGVuZ2UuSGlkZUxhYmVsID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkhpZGVMYWJlbFxyXG4gICAgICAgICAgQ2hhbGxlbmdlLkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBDaGFsbGVuZ2UuSXNSZXF1aXJlZCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Jc1JlcXVpcmVkO1xyXG4gICAgICAgICAgQ2hhbGxlbmdlLlZpZXdUeXBlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLlZpZXdUeXBlO1xyXG4gICAgICAgICAgQ2hhbGxlbmdlLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgQ2hhbGxlbmdlLkRhdGFTb3VyY2UgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuZGF0YVNvdXJjZVxyXG4gICAgICAgICAgQ2hhbGxlbmdlLkRhdGFTb3VyY2UgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuZGF0YVNvdXJjZVxyXG4gICAgICAgICAgQ2hhbGxlbmdlLlNpbmdsZVNlbGVjdGlvbiA9ICF0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuaXNNdWx0aXBsZVxyXG4gICAgICAgICAgQ2hhbGxlbmdlLlNob3dDaGVja2JveCA9IGZhbHNlXHJcbiAgICAgICAgICBDaGFsbGVuZ2UuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuaGFzU2VhcmNoXHJcbiAgICAgICAgICBDaGFsbGVuZ2UuU2VsZWN0ZWRJdGVtcz10aGlzLnZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8RHJvcGRvd25MaXN0Q29tcG9uZW50Pih0aGlzLkl0ZW0sIERyb3Bkb3duTGlzdENvbXBvbmVudCwgdGhpcy5ncm91cCwgQ2hhbGxlbmdlKVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBEYXRhVHlwZS5Jbm5vdmF0aW9uTGFiOlxyXG4gICAgICAgICAgbGV0IElubm92YXRpb25MYWIgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICBJbm5vdmF0aW9uTGFiLk5hbWUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTmFtZSArIFwiLlwiICsgdGhpcy5pdGVtTnVtYmVyLnRvU3RyaW5nKCkgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBJbm5vdmF0aW9uTGFiLkhpZGVMYWJlbCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5IaWRlTGFiZWxcclxuICAgICAgICAgIElubm92YXRpb25MYWIuTGFiZWxLZXkgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxLZXlcclxuICAgICAgICAgIElubm92YXRpb25MYWIuSXNSZXF1aXJlZCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Jc1JlcXVpcmVkO1xyXG4gICAgICAgICAgSW5ub3ZhdGlvbkxhYi5WaWV3VHlwZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5WaWV3VHlwZTtcclxuICAgICAgICAgIElubm92YXRpb25MYWIuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uID8gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBJbm5vdmF0aW9uTGFiLkRhdGFTb3VyY2UgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuZGF0YVNvdXJjZVxyXG4gICAgICAgICAgSW5ub3ZhdGlvbkxhYi5TaW5nbGVTZWxlY3Rpb24gPSAhdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLmlzTXVsdGlwbGVcclxuICAgICAgICAgIElubm92YXRpb25MYWIuU2hvd0NoZWNrYm94ID0gZmFsc2VcclxuICAgICAgICAgIElubm92YXRpb25MYWIuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuaGFzU2VhcmNoXHJcbiAgICAgICAgICBJbm5vdmF0aW9uTGFiLlNlbGVjdGVkSXRlbXM9dGhpcy52YWx1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PERyb3Bkb3duTGlzdENvbXBvbmVudD4odGhpcy5JdGVtLCBEcm9wZG93bkxpc3RDb21wb25lbnQsIHRoaXMuZ3JvdXAsIElubm92YXRpb25MYWIpXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIERhdGFUeXBlLkNvdW50cnk6XHJcbiAgICAgICAgICBsZXQgQ291bnRyeSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgIENvdW50cnkuTmFtZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5OYW1lICsgXCIuXCIgKyB0aGlzLml0ZW1OdW1iZXIudG9TdHJpbmcoKSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgIENvdW50cnkuSGlkZUxhYmVsID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkhpZGVMYWJlbFxyXG4gICAgICAgICAgQ291bnRyeS5MYWJlbEtleSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbEtleVxyXG4gICAgICAgICAgQ291bnRyeS5Jc1JlcXVpcmVkID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLklzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBDb3VudHJ5LlZpZXdUeXBlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLlZpZXdUeXBlO1xyXG4gICAgICAgICAgQ291bnRyeS5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgIENvdW50cnkuRGF0YVNvdXJjZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5kYXRhU291cmNlXHJcbiAgICAgICAgICBDb3VudHJ5LlNpbmdsZVNlbGVjdGlvbiA9ICF0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuaXNNdWx0aXBsZVxyXG4gICAgICAgICAgQ291bnRyeS5TaG93Q2hlY2tib3ggPSBmYWxzZVxyXG4gICAgICAgICAgQ291bnRyeS5BbGxvd1NlYXJjaEZpbHRlciA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5oYXNTZWFyY2hcclxuICAgICAgICAgIENvdW50cnkuU2VsZWN0ZWRJdGVtcz10aGlzLnZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8RHJvcGRvd25MaXN0Q29tcG9uZW50Pih0aGlzLkl0ZW0sIERyb3Bkb3duTGlzdENvbXBvbmVudCwgdGhpcy5ncm91cCwgQ291bnRyeSlcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAvL0ZpbGVVcGxvYWRcclxuICAgICAgICBjYXNlIERhdGFUeXBlLkZpbGU6XHJcbiAgICAgICAgICBsZXQgRmlsZSA9IG5ldyBGaWxlVXBsb2FkT3B0aW9ucygpO1xyXG4gICAgICAgICAgRmlsZS5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIHRoaXMuaXRlbU51bWJlci50b1N0cmluZygpICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgRmlsZS5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBGaWxlLkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBGaWxlLklzUmVxdWlyZWQgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSXNSZXF1aXJlZDtcclxuICAgICAgICAgIEZpbGUuVmlld1R5cGUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBGaWxlLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgRmlsZS5GaWxlTWF4U2l6ZUluTUIgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMubWF4RmlsZVNpemVJbk1CXHJcbiAgICAgICAgICBGaWxlLlZhbHVlPXRoaXMudmFsdWU7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxGaWxlVXBsb2FkQ29tcG9uZW50Pih0aGlzLkl0ZW0sIEZpbGVVcGxvYWRDb21wb25lbnQsIHRoaXMuZ3JvdXAsIEZpbGUpXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIERhdGFUeXBlLk11bHRpRmlsZTpcclxuICAgICAgICAgIGxldCBNdWx0aUZpbGUgPSBuZXcgRmlsZVVwbG9hZE9wdGlvbnMoKTtcclxuICAgICAgICAgIEZpbGUuTmFtZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5OYW1lICsgXCIuXCIgKyB0aGlzLml0ZW1OdW1iZXIudG9TdHJpbmcoKSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgIEZpbGUuSGlkZUxhYmVsID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkhpZGVMYWJlbFxyXG4gICAgICAgICAgRmlsZS5MYWJlbEtleSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbEtleVxyXG4gICAgICAgICAgRmlsZS5Jc1JlcXVpcmVkID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLklzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBGaWxlLlZpZXdUeXBlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLlZpZXdUeXBlO1xyXG4gICAgICAgICAgRmlsZS5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgIE11bHRpRmlsZS5NYXhTaXplRm9yQWxsRmlsZXNJbk1CID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1heEZpbGVTaXplSW5NQlxyXG4gICAgICAgICAgTXVsdGlGaWxlLk1heE5vT2ZGaWxlcyA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5tYXhGaWxlQ291bnRcclxuICAgICAgICAgIE11bHRpRmlsZS5Jc011bHRpcGxlRmlsZSA9IHRydWU7XHJcbiAgICAgICAgICBNdWx0aUZpbGUuVmFsdWU9dGhpcy52YWx1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PEZpbGVVcGxvYWRDb21wb25lbnQ+KHRoaXMuSXRlbSwgRmlsZVVwbG9hZENvbXBvbmVudCwgdGhpcy5ncm91cCwgTXVsdGlGaWxlKVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgLy9JbWFnZVVwbG9hZFxyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuSW1hZ2U6XHJcbiAgICAgICAgICBsZXQgSW1hZ2UgPSBuZXcgSW1hZ2VVcGxvYWRPcHRpb25zKCk7XHJcbiAgICAgICAgICBJbWFnZS5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIHRoaXMuaXRlbU51bWJlci50b1N0cmluZygpICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgSW1hZ2UuSGlkZUxhYmVsID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkhpZGVMYWJlbFxyXG4gICAgICAgICAgSW1hZ2UuTGFiZWxLZXkgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxLZXlcclxuICAgICAgICAgIEltYWdlLklzUmVxdWlyZWQgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSXNSZXF1aXJlZDtcclxuICAgICAgICAgIEltYWdlLlZpZXdUeXBlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLlZpZXdUeXBlO1xyXG4gICAgICAgICAgSW1hZ2UuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uID8gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBpZiAodGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1heEZpbGVTaXplSW5NQilcclxuICAgICAgICAgICAgSW1hZ2UuRmlsZU1heFNpemVJbk1CID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1heEZpbGVTaXplSW5NQlxyXG4gICAgICAgICAgSW1hZ2UuVmFsdWU9dGhpcy52YWx1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PEltYWdlVXBsb2FkZXJDb21wb25lbnQ+KHRoaXMuSXRlbSwgSW1hZ2VVcGxvYWRlckNvbXBvbmVudCwgdGhpcy5ncm91cCwgSW1hZ2UpXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIERhdGFUeXBlLkNvdmVyUGhvdG86XHJcbiAgICAgICAgICBsZXQgQ292ZXJQaG90byA9IG5ldyBJbWFnZVVwbG9hZE9wdGlvbnMoKTtcclxuICAgICAgICAgIENvdmVyUGhvdG8uTmFtZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5OYW1lICsgXCIuXCIgKyB0aGlzLml0ZW1OdW1iZXIudG9TdHJpbmcoKSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgIENvdmVyUGhvdG8uSGlkZUxhYmVsID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkhpZGVMYWJlbFxyXG4gICAgICAgICAgQ292ZXJQaG90by5MYWJlbEtleSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbEtleVxyXG4gICAgICAgICAgQ292ZXJQaG90by5Jc1JlcXVpcmVkID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLklzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBDb3ZlclBob3RvLlZpZXdUeXBlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLlZpZXdUeXBlO1xyXG4gICAgICAgICAgQ292ZXJQaG90by5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgIGlmICh0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMubWF4RmlsZVNpemVJbk1CKVxyXG4gICAgICAgICAgICBDb3ZlclBob3RvLkZpbGVNYXhTaXplSW5NQiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5tYXhGaWxlU2l6ZUluTUJcclxuICAgICAgICAgIENvdmVyUGhvdG8uVmFsdWU9dGhpcy52YWx1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PEltYWdlVXBsb2FkZXJDb21wb25lbnQ+KHRoaXMuSXRlbSwgSW1hZ2VVcGxvYWRlckNvbXBvbmVudCwgdGhpcy5ncm91cCwgQ292ZXJQaG90bylcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIC8vTW9iaWxlXHJcbiAgICAgICAgY2FzZSBEYXRhVHlwZS5Nb2JpbGU6XHJcbiAgICAgICAgICBsZXQgTW9iaWxlID0gbmV3IFBob25lT3B0aW9ucygpO1xyXG4gICAgICAgICAgTW9iaWxlLk5hbWUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTmFtZSArIFwiLlwiICsgdGhpcy5pdGVtTnVtYmVyLnRvU3RyaW5nKCkgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBNb2JpbGUuSGlkZUxhYmVsID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkhpZGVMYWJlbFxyXG4gICAgICAgICAgTW9iaWxlLkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBNb2JpbGUuSXNSZXF1aXJlZCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Jc1JlcXVpcmVkO1xyXG4gICAgICAgICAgTW9iaWxlLlZpZXdUeXBlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLlZpZXdUeXBlO1xyXG4gICAgICAgICAgTW9iaWxlLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgTW9iaWxlLkFsbG93U2VhcmNoID0gdHJ1ZTtcclxuICAgICAgICAgIE1vYmlsZS5QaG9uZVZhbGlkYXRpb24gPSB0cnVlO1xyXG4gICAgICAgICAgTW9iaWxlLlNlbGVjdEZpcnN0Q291bnRyeSA9IHRydWU7XHJcbiAgICAgICAgICBNb2JpbGUuRW5hYmxlUGxhY2Vob2xkZXIgPSB0cnVlXHJcbiAgICAgICAgICBNb2JpbGUuVmFsdWU9dGhpcy52YWx1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PFBob25lQ29tcG9uZW50Pih0aGlzLkl0ZW0sIFBob25lQ29tcG9uZW50LCB0aGlzLmdyb3VwLCBNb2JpbGUpXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICAvL011bHRpbGluZVRleHRcclxuICAgICAgICBjYXNlIERhdGFUeXBlLk11bHRpbGluZVRleHQ6XHJcbiAgICAgICAgICBsZXQgTXVsdGlsaW5lVGV4dCA9IG5ldyBUZXh0QXJlYU9wdGlvbnMoKTtcclxuICAgICAgICAgIE11bHRpbGluZVRleHQuTmFtZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5OYW1lICsgXCIuXCIgKyB0aGlzLml0ZW1OdW1iZXIudG9TdHJpbmcoKSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgIE11bHRpbGluZVRleHQuSGlkZUxhYmVsID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkhpZGVMYWJlbFxyXG4gICAgICAgICAgTXVsdGlsaW5lVGV4dC5MYWJlbEtleSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbEtleVxyXG4gICAgICAgICAgTXVsdGlsaW5lVGV4dC5Jc1JlcXVpcmVkID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLklzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBNdWx0aWxpbmVUZXh0LlZpZXdUeXBlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLlZpZXdUeXBlO1xyXG4gICAgICAgICAgTXVsdGlsaW5lVGV4dC5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgIGlmICh0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMubWF4TGVuZ3RoKVxyXG4gICAgICAgICAgICBNdWx0aWxpbmVUZXh0Lk1heExlbmd0aCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5tYXhMZW5ndGhcclxuICAgICAgICAgIGlmICh0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMubWluTGVuZ3RoKVxyXG4gICAgICAgICAgICBNdWx0aWxpbmVUZXh0Lk1pbkxlbmd0aCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5taW5MZW5ndGhcclxuICAgICAgICAgIE11bHRpbGluZVRleHQuUm93cyA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5yb3dzO1xyXG4gICAgICAgICAgTXVsdGlsaW5lVGV4dC5Gb3JjZURpcmVjdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Gb3JjZURpcmVjdGlvblxyXG4gICAgICAgICAgTXVsdGlsaW5lVGV4dC5WYWx1ZT10aGlzLnZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8VGV4dEFyZWFDb21wb25lbnQ+KHRoaXMuSXRlbSwgVGV4dEFyZWFDb21wb25lbnQsIHRoaXMuZ3JvdXAsIE11bHRpbGluZVRleHQpXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICAvL0hUTUxcclxuICAgICAgICBjYXNlIERhdGFUeXBlLkhUTUw6XHJcbiAgICAgICAgICBsZXQgSFRNTCA9IG5ldyBIdG1sRWRpdG9yT3B0aW9ucygpO1xyXG4gICAgICAgICAgSFRNTC5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIHRoaXMuaXRlbU51bWJlci50b1N0cmluZygpICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgSFRNTC5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBIVE1MLkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBIVE1MLklzUmVxdWlyZWQgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSXNSZXF1aXJlZDtcclxuICAgICAgICAgIEhUTUwuVmlld1R5cGUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBIVE1MLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgaWYgKHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5tYXhMZW5ndGgpXHJcbiAgICAgICAgICAgIEhUTUwuTWF4TGVuZ3RoID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1heExlbmd0aFxyXG4gICAgICAgICAgaWYgKHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5taW5MZW5ndGgpXHJcbiAgICAgICAgICAgIEhUTUwuTWluTGVuZ3RoID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1pbkxlbmd0aFxyXG4gICAgICAgICAgSFRNTC5IZWlnaHQgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMucm93cztcclxuICAgICAgICAgIEhUTUwuRm9yY2VEaXJlY3Rpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuRm9yY2VEaXJlY3Rpb25cclxuICAgICAgICAgIEhUTUwuVmFsdWU9dGhpcy52YWx1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PEh0bWxFZGl0b3JDb21wb25lbnQ+KHRoaXMuSXRlbSwgSHRtbEVkaXRvckNvbXBvbmVudCwgdGhpcy5ncm91cCwgSFRNTClcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIC8vQm9vbGVhblxyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuQm9vbGVhbjpcclxuICAgICAgICAgIGxldCBCb29sZWFuID0gbmV3IFRvZ2dsZVNsaWRlT3B0aW9ucygpO1xyXG4gICAgICAgICAgQm9vbGVhbi5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIHRoaXMuaXRlbU51bWJlci50b1N0cmluZygpICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgQm9vbGVhbi5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBCb29sZWFuLkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBCb29sZWFuLlZpZXdUeXBlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLlZpZXdUeXBlO1xyXG4gICAgICAgICAgQm9vbGVhbi5WYWx1ZT10aGlzLnZhbHVlO1xyXG4gICAgICAgICAgQm9vbGVhbi5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PFRvZ2dsZXNsaWRlQ29tcG9uZW50Pih0aGlzLkl0ZW0sIFRvZ2dsZXNsaWRlQ29tcG9uZW50LCB0aGlzLmdyb3VwLCBCb29sZWFuKVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgLy9Mb2NhdGlvblxyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuTG9jYXRpb246XHJcbiAgICAgICAgICBsZXQgTG9jYXRpb24gPSBuZXcgTWFwQXV0b0NvbXBsZXRlT3B0aW9ucygpO1xyXG4gICAgICAgICAgTG9jYXRpb24uTmFtZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5OYW1lICsgXCIuXCIgKyB0aGlzLml0ZW1OdW1iZXIudG9TdHJpbmcoKSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgIExvY2F0aW9uLkhpZGVMYWJlbCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5IaWRlTGFiZWxcclxuICAgICAgICAgIExvY2F0aW9uLkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBMb2NhdGlvbi5Jc1JlcXVpcmVkID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLklzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBMb2NhdGlvbi5WaWV3VHlwZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5WaWV3VHlwZTtcclxuICAgICAgICAgIExvY2F0aW9uLlZhbHVlPXRoaXMudmFsdWU7XHJcbiAgICAgICAgICBMb2NhdGlvbi5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PE1hcEF1dG9Db21wbGV0ZUNvbXBvbmVudD4odGhpcy5JdGVtLCBNYXBBdXRvQ29tcGxldGVDb21wb25lbnQsIHRoaXMuZ3JvdXAsIExvY2F0aW9uKVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9LCAwKTtcclxuICB9XHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXMuaXRlbU51bWJlcilcclxuICAgIGlmIChjaGFuZ2VzLml0ZW1OdW1iZXIucHJldmlvdXNWYWx1ZSkge1xyXG4gICAgICBsZXQgbmFtZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5OYW1lICsgXCIuXCIgKyBjaGFuZ2VzLml0ZW1OdW1iZXIucHJldmlvdXNWYWx1ZS50b1N0cmluZygpICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICBsZXQgdmFsdWUgPSB0aGlzLmdyb3VwLmNvbnRyb2xzW25hbWVdLnZhbHVlXHJcbiAgICAgIHRoaXMuSXRlbS5jbGVhcigpXHJcbiAgICAgIHRoaXMuZ3JvdXAucmVtb3ZlQ29udHJvbChuYW1lKVxyXG4gICAgICBzd2l0Y2ggKHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sVHlwZSkge1xyXG4gICAgICAgIC8vL1RleHRCb3hcclxuICAgICAgICBjYXNlIERhdGFUeXBlLlRleHQ6XHJcbiAgICAgICAgICBsZXQgVGV4dCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgICAgVGV4dC5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIGNoYW5nZXMuaXRlbU51bWJlci5jdXJyZW50VmFsdWUgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBUZXh0LkhpZGVMYWJlbCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5IaWRlTGFiZWxcclxuICAgICAgICAgIFRleHQuTGFiZWxLZXkgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxLZXlcclxuICAgICAgICAgIFRleHQuSXNSZXF1aXJlZCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Jc1JlcXVpcmVkO1xyXG4gICAgICAgICAgVGV4dC5WaWV3VHlwZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5WaWV3VHlwZTtcclxuICAgICAgICAgIFRleHQuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uID8gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBUZXh0LlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgICAgIGlmICh0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMubWF4TGVuZ3RoKVxyXG4gICAgICAgICAgICBUZXh0Lk1heExlbmd0aCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5tYXhMZW5ndGhcclxuICAgICAgICAgIGlmICh0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMubWluTGVuZ3RoKVxyXG4gICAgICAgICAgICBUZXh0Lk1pbkxlbmd0aCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5taW5MZW5ndGhcclxuICAgICAgICAgIFRleHQuVmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PFRleHRib3hDb21wb25lbnQ+KHRoaXMuSXRlbSwgVGV4dGJveENvbXBvbmVudCwgdGhpcy5ncm91cCwgVGV4dClcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIERhdGFUeXBlLk5hbWU6XHJcbiAgICAgICAgICBsZXQgTmFtZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgICAgTmFtZS5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIGNoYW5nZXMuaXRlbU51bWJlci5jdXJyZW50VmFsdWUgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBOYW1lLkhpZGVMYWJlbCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5IaWRlTGFiZWxcclxuICAgICAgICAgIE5hbWUuTGFiZWxLZXkgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxLZXlcclxuICAgICAgICAgIE5hbWUuSXNSZXF1aXJlZCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Jc1JlcXVpcmVkO1xyXG4gICAgICAgICAgTmFtZS5WaWV3VHlwZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5WaWV3VHlwZTtcclxuICAgICAgICAgIE5hbWUuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uID8gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBpZiAodGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1heExlbmd0aClcclxuICAgICAgICAgICAgTmFtZS5NYXhMZW5ndGggPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMubWF4TGVuZ3RoXHJcbiAgICAgICAgICBpZiAodGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1pbkxlbmd0aClcclxuICAgICAgICAgICAgTmFtZS5NaW5MZW5ndGggPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMubWluTGVuZ3RoXHJcbiAgICAgICAgICBOYW1lLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgICAgIE5hbWUuVmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PFRleHRib3hDb21wb25lbnQ+KHRoaXMuSXRlbSwgVGV4dGJveENvbXBvbmVudCwgdGhpcy5ncm91cCwgTmFtZSlcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIERhdGFUeXBlLkVtYWlsOlxyXG4gICAgICAgICAgbGV0IEVtYWlsID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgICBFbWFpbC5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIGNoYW5nZXMuaXRlbU51bWJlci5jdXJyZW50VmFsdWUgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBFbWFpbC5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBFbWFpbC5MYWJlbEtleSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbEtleVxyXG4gICAgICAgICAgRW1haWwuSXNSZXF1aXJlZCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Jc1JlcXVpcmVkO1xyXG4gICAgICAgICAgRW1haWwuVmlld1R5cGUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBFbWFpbC5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgIEVtYWlsLlR5cGUgPSBJbnB1dFR5cGUuRW1haWw7XHJcbiAgICAgICAgICBFbWFpbC5WYWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8VGV4dGJveENvbXBvbmVudD4odGhpcy5JdGVtLCBUZXh0Ym94Q29tcG9uZW50LCB0aGlzLmdyb3VwLCBFbWFpbClcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIERhdGFUeXBlLk51bWJlcjpcclxuICAgICAgICAgIGxldCBOdW1iZXIgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICAgIE51bWJlci5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIGNoYW5nZXMuaXRlbU51bWJlci5jdXJyZW50VmFsdWUgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBOdW1iZXIuSGlkZUxhYmVsID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkhpZGVMYWJlbFxyXG4gICAgICAgICAgTnVtYmVyLkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBOdW1iZXIuSXNSZXF1aXJlZCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Jc1JlcXVpcmVkO1xyXG4gICAgICAgICAgTnVtYmVyLlZpZXdUeXBlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLlZpZXdUeXBlO1xyXG4gICAgICAgICAgTnVtYmVyLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgTnVtYmVyLlR5cGUgPSBJbnB1dFR5cGUuTnVtYmVyO1xyXG4gICAgICAgICAgbGV0IHJhbmdlTnVtYmVyID0gbmV3IFJhbmdlTnVtYmVyKClcclxuICAgICAgICAgIHJhbmdlTnVtYmVyLlRvID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1heExlbmd0aFxyXG4gICAgICAgICAgcmFuZ2VOdW1iZXIuRnJvbSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5taW5MZW5ndGhcclxuICAgICAgICAgIE51bWJlci5OdW1iZXJSYW5nZSA9IHJhbmdlTnVtYmVyO1xyXG4gICAgICAgICAgTnVtYmVyLlZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxUZXh0Ym94Q29tcG9uZW50Pih0aGlzLkl0ZW0sIFRleHRib3hDb21wb25lbnQsIHRoaXMuZ3JvdXAsIE51bWJlcilcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAvLy9EYXRlVGltZVxyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuRGF0ZTpcclxuICAgICAgICAgIGxldCBEYXRlID0gbmV3IERhdGVQaWNrZXJPcHRpb25zKCk7XHJcbiAgICAgICAgICBEYXRlLk5hbWUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTmFtZSArIFwiLlwiICsgY2hhbmdlcy5pdGVtTnVtYmVyLmN1cnJlbnRWYWx1ZSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgIERhdGUuSGlkZUxhYmVsID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkhpZGVMYWJlbFxyXG4gICAgICAgICAgRGF0ZS5MYWJlbEtleSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbEtleVxyXG4gICAgICAgICAgRGF0ZS5Jc1JlcXVpcmVkID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLklzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBEYXRlLlZpZXdUeXBlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLlZpZXdUeXBlO1xyXG4gICAgICAgICAgRGF0ZS5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgIERhdGUuUGlja2VyVHlwZSA9IFBpY2tlclR5cGUuQ2FsZW5kYXI7XHJcbiAgICAgICAgICBEYXRlLlNlbGVjdE1vZGUgPSBTZWxlY3RNb2RlLlNpbmdsZVxyXG4gICAgICAgICAgRGF0ZS5TdGFydFZpZXcgPSBTdGFydFZpZXcuTW9udGhcclxuICAgICAgICAgIERhdGUuVmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PERhdGVJbnB1dENvbXBvbmVudD4odGhpcy5JdGVtLCBEYXRlSW5wdXRDb21wb25lbnQsIHRoaXMuZ3JvdXAsIERhdGUpXHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgY2FzZSBEYXRhVHlwZS5EYXRlVGltZTpcclxuICAgICAgICAgIGxldCBEYXRlVGltZSA9IG5ldyBEYXRlUGlja2VyT3B0aW9ucygpO1xyXG4gICAgICAgICAgRGF0ZVRpbWUuTmFtZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5OYW1lICsgXCIuXCIgKyBjaGFuZ2VzLml0ZW1OdW1iZXIuY3VycmVudFZhbHVlICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgRGF0ZVRpbWUuSGlkZUxhYmVsID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkhpZGVMYWJlbFxyXG4gICAgICAgICAgRGF0ZVRpbWUuTGFiZWxLZXkgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxLZXlcclxuICAgICAgICAgIERhdGVUaW1lLklzUmVxdWlyZWQgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSXNSZXF1aXJlZDtcclxuICAgICAgICAgIERhdGVUaW1lLlZpZXdUeXBlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLlZpZXdUeXBlO1xyXG4gICAgICAgICAgRGF0ZVRpbWUuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uID8gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBEYXRlVGltZS5QaWNrZXJUeXBlID0gUGlja2VyVHlwZS5Cb3RoO1xyXG4gICAgICAgICAgRGF0ZVRpbWUuU2VsZWN0TW9kZSA9IFNlbGVjdE1vZGUuU2luZ2xlXHJcbiAgICAgICAgICBEYXRlVGltZS5TdGFydFZpZXcgPSBTdGFydFZpZXcuTW9udGhcclxuICAgICAgICAgIERhdGVUaW1lLlZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxEYXRlSW5wdXRDb21wb25lbnQ+KHRoaXMuSXRlbSwgRGF0ZUlucHV0Q29tcG9uZW50LCB0aGlzLmdyb3VwLCBEYXRlVGltZSlcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIERhdGFUeXBlLlRpbWU6XHJcbiAgICAgICAgICBsZXQgVGltZSA9IG5ldyBEYXRlUGlja2VyT3B0aW9ucygpO1xyXG4gICAgICAgICAgVGltZS5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIGNoYW5nZXMuaXRlbU51bWJlci5jdXJyZW50VmFsdWUgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBUaW1lLkhpZGVMYWJlbCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5IaWRlTGFiZWxcclxuICAgICAgICAgIFRpbWUuTGFiZWxLZXkgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxLZXlcclxuICAgICAgICAgIFRpbWUuSXNSZXF1aXJlZCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Jc1JlcXVpcmVkO1xyXG4gICAgICAgICAgVGltZS5WaWV3VHlwZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5WaWV3VHlwZTtcclxuICAgICAgICAgIFRpbWUuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uID8gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBUaW1lLlBpY2tlclR5cGUgPSBQaWNrZXJUeXBlLlRpbWVyO1xyXG4gICAgICAgICAgVGltZS5TZWxlY3RNb2RlID0gU2VsZWN0TW9kZS5TaW5nbGVcclxuICAgICAgICAgIFRpbWUuU3RhcnRWaWV3ID0gU3RhcnRWaWV3Lk1vbnRoXHJcbiAgICAgICAgICBUaW1lLlZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxEYXRlSW5wdXRDb21wb25lbnQ+KHRoaXMuSXRlbSwgRGF0ZUlucHV0Q29tcG9uZW50LCB0aGlzLmdyb3VwLCBUaW1lKVxyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIC8vRHJvcGRvd25cclxuICAgICAgICBjYXNlIERhdGFUeXBlLlNpbmdsZVNlbGVjdDpcclxuICAgICAgICAgIGxldCBTaW5nbGVTZWxlY3QgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICBTaW5nbGVTZWxlY3QuTmFtZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5OYW1lICsgXCIuXCIgKyBjaGFuZ2VzLml0ZW1OdW1iZXIuY3VycmVudFZhbHVlICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgU2luZ2xlU2VsZWN0LkhpZGVMYWJlbCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5IaWRlTGFiZWxcclxuICAgICAgICAgIFNpbmdsZVNlbGVjdC5MYWJlbEtleSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbEtleVxyXG4gICAgICAgICAgU2luZ2xlU2VsZWN0LklzUmVxdWlyZWQgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSXNSZXF1aXJlZDtcclxuICAgICAgICAgIFNpbmdsZVNlbGVjdC5WaWV3VHlwZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5WaWV3VHlwZTtcclxuICAgICAgICAgIFNpbmdsZVNlbGVjdC5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgIFNpbmdsZVNlbGVjdC5EYXRhU291cmNlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLmRhdGFTb3VyY2VcclxuICAgICAgICAgIFNpbmdsZVNlbGVjdC5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlXHJcbiAgICAgICAgICBTaW5nbGVTZWxlY3QuU2hvd0NoZWNrYm94ID0gZmFsc2VcclxuICAgICAgICAgIFNpbmdsZVNlbGVjdC5BbGxvd1NlYXJjaEZpbHRlciA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5oYXNTZWFyY2hcclxuICAgICAgICAgIFNpbmdsZVNlbGVjdC5TZWxlY3RlZEl0ZW1zID0gdmFsdWU7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxEcm9wZG93bkxpc3RDb21wb25lbnQ+KHRoaXMuSXRlbSwgRHJvcGRvd25MaXN0Q29tcG9uZW50LCB0aGlzLmdyb3VwLCBTaW5nbGVTZWxlY3QpXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIERhdGFUeXBlLk11bGlwbGVTZWxlY3Q6XHJcbiAgICAgICAgICBsZXQgTXVsaXBsZVNlbGVjdCA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgIE11bGlwbGVTZWxlY3QuTmFtZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5OYW1lICsgXCIuXCIgKyBjaGFuZ2VzLml0ZW1OdW1iZXIuY3VycmVudFZhbHVlICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgTXVsaXBsZVNlbGVjdC5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBNdWxpcGxlU2VsZWN0LkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBNdWxpcGxlU2VsZWN0LklzUmVxdWlyZWQgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSXNSZXF1aXJlZDtcclxuICAgICAgICAgIE11bGlwbGVTZWxlY3QuVmlld1R5cGUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBNdWxpcGxlU2VsZWN0LkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgTXVsaXBsZVNlbGVjdC5EYXRhU291cmNlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLmRhdGFTb3VyY2VcclxuICAgICAgICAgIE11bGlwbGVTZWxlY3QuU2luZ2xlU2VsZWN0aW9uID0gZmFsc2VcclxuICAgICAgICAgIE11bGlwbGVTZWxlY3QuU2hvd0NoZWNrYm94ID0gZmFsc2VcclxuICAgICAgICAgIE11bGlwbGVTZWxlY3QuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuaGFzU2VhcmNoXHJcbiAgICAgICAgICBNdWxpcGxlU2VsZWN0LlNlbGVjdGVkSXRlbXMgPSB2YWx1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PERyb3Bkb3duTGlzdENvbXBvbmVudD4odGhpcy5JdGVtLCBEcm9wZG93bkxpc3RDb21wb25lbnQsIHRoaXMuZ3JvdXAsIE11bGlwbGVTZWxlY3QpXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIERhdGFUeXBlLkdvYWw6XHJcbiAgICAgICAgICBsZXQgR29hbCA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgIEdvYWwuTmFtZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5OYW1lICsgXCIuXCIgKyBjaGFuZ2VzLml0ZW1OdW1iZXIuY3VycmVudFZhbHVlICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgR29hbC5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBHb2FsLkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBHb2FsLklzUmVxdWlyZWQgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSXNSZXF1aXJlZDtcclxuICAgICAgICAgIEdvYWwuVmlld1R5cGUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBHb2FsLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgR29hbC5EYXRhU291cmNlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLmRhdGFTb3VyY2VcclxuICAgICAgICAgIEdvYWwuU2luZ2xlU2VsZWN0aW9uID0gIXRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5pc011bHRpcGxlXHJcbiAgICAgICAgICBHb2FsLlNob3dDaGVja2JveCA9IGZhbHNlXHJcbiAgICAgICAgICBHb2FsLkFsbG93U2VhcmNoRmlsdGVyID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLmhhc1NlYXJjaFxyXG4gICAgICAgICAgR29hbC5TZWxlY3RlZEl0ZW1zID0gdmFsdWU7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxEcm9wZG93bkxpc3RDb21wb25lbnQ+KHRoaXMuSXRlbSwgRHJvcGRvd25MaXN0Q29tcG9uZW50LCB0aGlzLmdyb3VwLCBHb2FsKVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBEYXRhVHlwZS5DaGFsbGVuZ2U6XHJcbiAgICAgICAgICBsZXQgQ2hhbGxlbmdlID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgQ2hhbGxlbmdlLk5hbWUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTmFtZSArIFwiLlwiICsgY2hhbmdlcy5pdGVtTnVtYmVyLmN1cnJlbnRWYWx1ZSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgIENoYWxsZW5nZS5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBDaGFsbGVuZ2UuTGFiZWxLZXkgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxLZXlcclxuICAgICAgICAgIENoYWxsZW5nZS5Jc1JlcXVpcmVkID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLklzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBDaGFsbGVuZ2UuVmlld1R5cGUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBDaGFsbGVuZ2UuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uID8gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBDaGFsbGVuZ2UuRGF0YVNvdXJjZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5kYXRhU291cmNlXHJcbiAgICAgICAgICBDaGFsbGVuZ2UuRGF0YVNvdXJjZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5kYXRhU291cmNlXHJcbiAgICAgICAgICBDaGFsbGVuZ2UuU2luZ2xlU2VsZWN0aW9uID0gIXRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5pc011bHRpcGxlXHJcbiAgICAgICAgICBDaGFsbGVuZ2UuU2hvd0NoZWNrYm94ID0gZmFsc2VcclxuICAgICAgICAgIENoYWxsZW5nZS5BbGxvd1NlYXJjaEZpbHRlciA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5oYXNTZWFyY2hcclxuICAgICAgICAgIENoYWxsZW5nZS5TZWxlY3RlZEl0ZW1zID0gdmFsdWU7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxEcm9wZG93bkxpc3RDb21wb25lbnQ+KHRoaXMuSXRlbSwgRHJvcGRvd25MaXN0Q29tcG9uZW50LCB0aGlzLmdyb3VwLCBDaGFsbGVuZ2UpXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIERhdGFUeXBlLklubm92YXRpb25MYWI6XHJcbiAgICAgICAgICBsZXQgSW5ub3ZhdGlvbkxhYiA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgIElubm92YXRpb25MYWIuTmFtZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5OYW1lICsgXCIuXCIgKyBjaGFuZ2VzLml0ZW1OdW1iZXIuY3VycmVudFZhbHVlICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgSW5ub3ZhdGlvbkxhYi5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBJbm5vdmF0aW9uTGFiLkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBJbm5vdmF0aW9uTGFiLklzUmVxdWlyZWQgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSXNSZXF1aXJlZDtcclxuICAgICAgICAgIElubm92YXRpb25MYWIuVmlld1R5cGUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBJbm5vdmF0aW9uTGFiLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgSW5ub3ZhdGlvbkxhYi5EYXRhU291cmNlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLmRhdGFTb3VyY2VcclxuICAgICAgICAgIElubm92YXRpb25MYWIuU2luZ2xlU2VsZWN0aW9uID0gIXRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5pc011bHRpcGxlXHJcbiAgICAgICAgICBJbm5vdmF0aW9uTGFiLlNob3dDaGVja2JveCA9IGZhbHNlXHJcbiAgICAgICAgICBJbm5vdmF0aW9uTGFiLkFsbG93U2VhcmNoRmlsdGVyID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLmhhc1NlYXJjaFxyXG4gICAgICAgICAgSW5ub3ZhdGlvbkxhYi5TZWxlY3RlZEl0ZW1zID0gdmFsdWU7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxEcm9wZG93bkxpc3RDb21wb25lbnQ+KHRoaXMuSXRlbSwgRHJvcGRvd25MaXN0Q29tcG9uZW50LCB0aGlzLmdyb3VwLCBJbm5vdmF0aW9uTGFiKVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBEYXRhVHlwZS5Db3VudHJ5OlxyXG4gICAgICAgICAgbGV0IENvdW50cnkgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICBDb3VudHJ5Lk5hbWUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTmFtZSArIFwiLlwiICsgY2hhbmdlcy5pdGVtTnVtYmVyLmN1cnJlbnRWYWx1ZSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgIENvdW50cnkuSGlkZUxhYmVsID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkhpZGVMYWJlbFxyXG4gICAgICAgICAgQ291bnRyeS5MYWJlbEtleSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbEtleVxyXG4gICAgICAgICAgQ291bnRyeS5Jc1JlcXVpcmVkID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLklzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBDb3VudHJ5LlZpZXdUeXBlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLlZpZXdUeXBlO1xyXG4gICAgICAgICAgQ291bnRyeS5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgIENvdW50cnkuRGF0YVNvdXJjZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5kYXRhU291cmNlXHJcbiAgICAgICAgICBDb3VudHJ5LlNpbmdsZVNlbGVjdGlvbiA9ICF0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuaXNNdWx0aXBsZVxyXG4gICAgICAgICAgQ291bnRyeS5TaG93Q2hlY2tib3ggPSBmYWxzZVxyXG4gICAgICAgICAgQ291bnRyeS5BbGxvd1NlYXJjaEZpbHRlciA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5oYXNTZWFyY2hcclxuICAgICAgICAgIENvdW50cnkuU2VsZWN0ZWRJdGVtcyA9IHZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8RHJvcGRvd25MaXN0Q29tcG9uZW50Pih0aGlzLkl0ZW0sIERyb3Bkb3duTGlzdENvbXBvbmVudCwgdGhpcy5ncm91cCwgQ291bnRyeSlcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAvL0ZpbGVVcGxvYWRcclxuICAgICAgICBjYXNlIERhdGFUeXBlLkZpbGU6XHJcbiAgICAgICAgICBsZXQgRmlsZSA9IG5ldyBGaWxlVXBsb2FkT3B0aW9ucygpO1xyXG4gICAgICAgICAgRmlsZS5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIGNoYW5nZXMuaXRlbU51bWJlci5jdXJyZW50VmFsdWUgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBGaWxlLkhpZGVMYWJlbCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5IaWRlTGFiZWxcclxuICAgICAgICAgIEZpbGUuTGFiZWxLZXkgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxLZXlcclxuICAgICAgICAgIEZpbGUuSXNSZXF1aXJlZCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Jc1JlcXVpcmVkO1xyXG4gICAgICAgICAgRmlsZS5WaWV3VHlwZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5WaWV3VHlwZTtcclxuICAgICAgICAgIEZpbGUuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uID8gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBGaWxlLkZpbGVNYXhTaXplSW5NQiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5tYXhGaWxlU2l6ZUluTUJcclxuICAgICAgICAgIEZpbGUuVmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PEZpbGVVcGxvYWRDb21wb25lbnQ+KHRoaXMuSXRlbSwgRmlsZVVwbG9hZENvbXBvbmVudCwgdGhpcy5ncm91cCwgRmlsZSlcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuTXVsdGlGaWxlOlxyXG4gICAgICAgICAgbGV0IE11bHRpRmlsZSA9IG5ldyBGaWxlVXBsb2FkT3B0aW9ucygpO1xyXG4gICAgICAgICAgRmlsZS5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIGNoYW5nZXMuaXRlbU51bWJlci5jdXJyZW50VmFsdWUgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBGaWxlLkhpZGVMYWJlbCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5IaWRlTGFiZWxcclxuICAgICAgICAgIEZpbGUuTGFiZWxLZXkgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxLZXlcclxuICAgICAgICAgIEZpbGUuSXNSZXF1aXJlZCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Jc1JlcXVpcmVkO1xyXG4gICAgICAgICAgRmlsZS5WaWV3VHlwZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5WaWV3VHlwZTtcclxuICAgICAgICAgIEZpbGUuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uID8gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBNdWx0aUZpbGUuTWF4U2l6ZUZvckFsbEZpbGVzSW5NQiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5tYXhGaWxlU2l6ZUluTUJcclxuICAgICAgICAgIE11bHRpRmlsZS5NYXhOb09mRmlsZXMgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMubWF4RmlsZUNvdW50XHJcbiAgICAgICAgICBNdWx0aUZpbGUuSXNNdWx0aXBsZUZpbGUgPSB0cnVlO1xyXG4gICAgICAgICAgTXVsdGlGaWxlLlZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxGaWxlVXBsb2FkQ29tcG9uZW50Pih0aGlzLkl0ZW0sIEZpbGVVcGxvYWRDb21wb25lbnQsIHRoaXMuZ3JvdXAsIE11bHRpRmlsZSlcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIC8vSW1hZ2VVcGxvYWRcclxuICAgICAgICBjYXNlIERhdGFUeXBlLkltYWdlOlxyXG4gICAgICAgICAgbGV0IEltYWdlID0gbmV3IEltYWdlVXBsb2FkT3B0aW9ucygpO1xyXG4gICAgICAgICAgSW1hZ2UuTmFtZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5OYW1lICsgXCIuXCIgKyBjaGFuZ2VzLml0ZW1OdW1iZXIuY3VycmVudFZhbHVlICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgSW1hZ2UuSGlkZUxhYmVsID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkhpZGVMYWJlbFxyXG4gICAgICAgICAgSW1hZ2UuTGFiZWxLZXkgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxLZXlcclxuICAgICAgICAgIEltYWdlLklzUmVxdWlyZWQgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSXNSZXF1aXJlZDtcclxuICAgICAgICAgIEltYWdlLlZpZXdUeXBlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLlZpZXdUeXBlO1xyXG4gICAgICAgICAgSW1hZ2UuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uID8gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBpZiAodGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1heEZpbGVTaXplSW5NQilcclxuICAgICAgICAgICAgSW1hZ2UuRmlsZU1heFNpemVJbk1CID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1heEZpbGVTaXplSW5NQlxyXG4gICAgICAgICAgSW1hZ2UuVmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PEltYWdlVXBsb2FkZXJDb21wb25lbnQ+KHRoaXMuSXRlbSwgSW1hZ2VVcGxvYWRlckNvbXBvbmVudCwgdGhpcy5ncm91cCwgSW1hZ2UpXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIERhdGFUeXBlLkNvdmVyUGhvdG86XHJcbiAgICAgICAgICBsZXQgQ292ZXJQaG90byA9IG5ldyBJbWFnZVVwbG9hZE9wdGlvbnMoKTtcclxuICAgICAgICAgIENvdmVyUGhvdG8uTmFtZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5OYW1lICsgXCIuXCIgKyBjaGFuZ2VzLml0ZW1OdW1iZXIuY3VycmVudFZhbHVlICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgQ292ZXJQaG90by5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBDb3ZlclBob3RvLkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBDb3ZlclBob3RvLklzUmVxdWlyZWQgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSXNSZXF1aXJlZDtcclxuICAgICAgICAgIENvdmVyUGhvdG8uVmlld1R5cGUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBDb3ZlclBob3RvLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgaWYgKHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5tYXhGaWxlU2l6ZUluTUIpXHJcbiAgICAgICAgICAgIENvdmVyUGhvdG8uRmlsZU1heFNpemVJbk1CID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1heEZpbGVTaXplSW5NQlxyXG4gICAgICAgICAgQ292ZXJQaG90by5WYWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8SW1hZ2VVcGxvYWRlckNvbXBvbmVudD4odGhpcy5JdGVtLCBJbWFnZVVwbG9hZGVyQ29tcG9uZW50LCB0aGlzLmdyb3VwLCBDb3ZlclBob3RvKVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgLy9Nb2JpbGVcclxuICAgICAgICBjYXNlIERhdGFUeXBlLk1vYmlsZTpcclxuICAgICAgICAgIGxldCBNb2JpbGUgPSBuZXcgUGhvbmVPcHRpb25zKCk7XHJcbiAgICAgICAgICBNb2JpbGUuTmFtZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5OYW1lICsgXCIuXCIgKyBjaGFuZ2VzLml0ZW1OdW1iZXIuY3VycmVudFZhbHVlICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgTW9iaWxlLkhpZGVMYWJlbCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5IaWRlTGFiZWxcclxuICAgICAgICAgIE1vYmlsZS5MYWJlbEtleSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbEtleVxyXG4gICAgICAgICAgTW9iaWxlLklzUmVxdWlyZWQgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSXNSZXF1aXJlZDtcclxuICAgICAgICAgIE1vYmlsZS5WaWV3VHlwZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5WaWV3VHlwZTtcclxuICAgICAgICAgIE1vYmlsZS5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgIE1vYmlsZS5BbGxvd1NlYXJjaCA9IHRydWU7XHJcbiAgICAgICAgICBNb2JpbGUuUGhvbmVWYWxpZGF0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIE1vYmlsZS5TZWxlY3RGaXJzdENvdW50cnkgPSB0cnVlO1xyXG4gICAgICAgICAgTW9iaWxlLkVuYWJsZVBsYWNlaG9sZGVyID0gdHJ1ZVxyXG4gICAgICAgICAgTW9iaWxlLlZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxQaG9uZUNvbXBvbmVudD4odGhpcy5JdGVtLCBQaG9uZUNvbXBvbmVudCwgdGhpcy5ncm91cCwgTW9iaWxlKVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgLy9NdWx0aWxpbmVUZXh0XHJcbiAgICAgICAgY2FzZSBEYXRhVHlwZS5NdWx0aWxpbmVUZXh0OlxyXG4gICAgICAgICAgbGV0IE11bHRpbGluZVRleHQgPSBuZXcgVGV4dEFyZWFPcHRpb25zKCk7XHJcbiAgICAgICAgICBNdWx0aWxpbmVUZXh0Lk5hbWUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTmFtZSArIFwiLlwiICsgY2hhbmdlcy5pdGVtTnVtYmVyLmN1cnJlbnRWYWx1ZSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgIE11bHRpbGluZVRleHQuSGlkZUxhYmVsID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkhpZGVMYWJlbFxyXG4gICAgICAgICAgTXVsdGlsaW5lVGV4dC5MYWJlbEtleSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbEtleVxyXG4gICAgICAgICAgTXVsdGlsaW5lVGV4dC5Jc1JlcXVpcmVkID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLklzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBNdWx0aWxpbmVUZXh0LlZpZXdUeXBlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLlZpZXdUeXBlO1xyXG4gICAgICAgICAgTXVsdGlsaW5lVGV4dC5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgIGlmICh0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMubWF4TGVuZ3RoKVxyXG4gICAgICAgICAgICBNdWx0aWxpbmVUZXh0Lk1heExlbmd0aCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5tYXhMZW5ndGhcclxuICAgICAgICAgIGlmICh0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMubWluTGVuZ3RoKVxyXG4gICAgICAgICAgICBNdWx0aWxpbmVUZXh0Lk1pbkxlbmd0aCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5taW5MZW5ndGhcclxuICAgICAgICAgIE11bHRpbGluZVRleHQuUm93cyA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5yb3dzO1xyXG4gICAgICAgICAgTXVsdGlsaW5lVGV4dC5Gb3JjZURpcmVjdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Gb3JjZURpcmVjdGlvblxyXG4gICAgICAgICAgTXVsdGlsaW5lVGV4dC5WYWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8VGV4dEFyZWFDb21wb25lbnQ+KHRoaXMuSXRlbSwgVGV4dEFyZWFDb21wb25lbnQsIHRoaXMuZ3JvdXAsIE11bHRpbGluZVRleHQpXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICAvL0hUTUxcclxuICAgICAgICBjYXNlIERhdGFUeXBlLkhUTUw6XHJcbiAgICAgICAgICBsZXQgSFRNTCA9IG5ldyBIdG1sRWRpdG9yT3B0aW9ucygpO1xyXG4gICAgICAgICAgSFRNTC5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIGNoYW5nZXMuaXRlbU51bWJlci5jdXJyZW50VmFsdWUgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBIVE1MLkhpZGVMYWJlbCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5IaWRlTGFiZWxcclxuICAgICAgICAgIEhUTUwuTGFiZWxLZXkgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxLZXlcclxuICAgICAgICAgIEhUTUwuSXNSZXF1aXJlZCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Jc1JlcXVpcmVkO1xyXG4gICAgICAgICAgSFRNTC5WaWV3VHlwZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5WaWV3VHlwZTtcclxuICAgICAgICAgIEhUTUwuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uID8gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBpZiAodGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1heExlbmd0aClcclxuICAgICAgICAgICAgSFRNTC5NYXhMZW5ndGggPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMubWF4TGVuZ3RoXHJcbiAgICAgICAgICBpZiAodGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1pbkxlbmd0aClcclxuICAgICAgICAgICAgSFRNTC5NaW5MZW5ndGggPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMubWluTGVuZ3RoXHJcbiAgICAgICAgICBIVE1MLkhlaWdodCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5yb3dzO1xyXG4gICAgICAgICAgSFRNTC5Gb3JjZURpcmVjdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Gb3JjZURpcmVjdGlvblxyXG4gICAgICAgICAgSFRNTC5WYWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8SHRtbEVkaXRvckNvbXBvbmVudD4odGhpcy5JdGVtLCBIdG1sRWRpdG9yQ29tcG9uZW50LCB0aGlzLmdyb3VwLCBIVE1MKVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgLy9Cb29sZWFuXHJcbiAgICAgICAgY2FzZSBEYXRhVHlwZS5Cb29sZWFuOlxyXG4gICAgICAgICAgbGV0IEJvb2xlYW4gPSBuZXcgVG9nZ2xlU2xpZGVPcHRpb25zKCk7XHJcbiAgICAgICAgICBCb29sZWFuLk5hbWUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTmFtZSArIFwiLlwiICsgY2hhbmdlcy5pdGVtTnVtYmVyLmN1cnJlbnRWYWx1ZSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgIEJvb2xlYW4uSGlkZUxhYmVsID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkhpZGVMYWJlbFxyXG4gICAgICAgICAgQm9vbGVhbi5MYWJlbEtleSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbEtleVxyXG4gICAgICAgICAgQm9vbGVhbi5WaWV3VHlwZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5WaWV3VHlwZTtcclxuICAgICAgICAgIEJvb2xlYW4uTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uID8gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBCb29sZWFuLlZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxUb2dnbGVzbGlkZUNvbXBvbmVudD4odGhpcy5JdGVtLCBUb2dnbGVzbGlkZUNvbXBvbmVudCwgdGhpcy5ncm91cCwgQm9vbGVhbilcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIC8vTG9jYXRpb25cclxuICAgICAgICBjYXNlIERhdGFUeXBlLkxvY2F0aW9uOlxyXG4gICAgICAgICAgbGV0IExvY2F0aW9uID0gbmV3IE1hcEF1dG9Db21wbGV0ZU9wdGlvbnMoKTtcclxuICAgICAgICAgIExvY2F0aW9uLk5hbWUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTmFtZSArIFwiLlwiICsgY2hhbmdlcy5pdGVtTnVtYmVyLmN1cnJlbnRWYWx1ZSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgIExvY2F0aW9uLkhpZGVMYWJlbCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5IaWRlTGFiZWxcclxuICAgICAgICAgIExvY2F0aW9uLkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBMb2NhdGlvbi5Jc1JlcXVpcmVkID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLklzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBMb2NhdGlvbi5WaWV3VHlwZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5WaWV3VHlwZTtcclxuICAgICAgICAgIExvY2F0aW9uLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgTG9jYXRpb24uVmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PE1hcEF1dG9Db21wbGV0ZUNvbXBvbmVudD4odGhpcy5JdGVtLCBNYXBBdXRvQ29tcGxldGVDb21wb25lbnQsIHRoaXMuZ3JvdXAsIExvY2F0aW9uKVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG59XHJcbiJdfQ==
|