@bnsights/bbsf-controls 1.0.131 → 1.0.133

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.
@@ -25,6 +25,8 @@ import { PhoneComponent } from '../../Phone/Phone.component';
25
25
  import { TextAreaComponent } from '../../TextArea/TextArea.component';
26
26
  import { TextboxComponent } from '../../TextBox/TextBox.component';
27
27
  import { ToggleslideComponent } from '../../Toggleslide/Toggleslide.component';
28
+ import { CheckBoxOptions } from '../../../Shared/Models/CheckBoxOptions';
29
+ import { CheckBoxComponent } from '../../CheckBox/CheckBox.component';
28
30
  import * as i0 from "@angular/core";
29
31
  import * as i1 from "../../../Shared/services/render-component-service.service";
30
32
  import * as i2 from "@angular/forms";
@@ -43,7 +45,7 @@ export class RepeaterFieldBuilderComponent {
43
45
  this.itemValue = this.itemsValue[this.itemNumber];
44
46
  if (this.itemValue) {
45
47
  for (const key in this.itemValue) {
46
- if (Object.prototype.hasOwnProperty.call(this.itemValue, key) && key == this.repeaterField.controlOptions.Name) {
48
+ if (Object.prototype.hasOwnProperty.call(this.itemValue, key) && key == this.repeaterField.controlOptions.name) {
47
49
  const element = this.itemValue[key];
48
50
  this.value = element;
49
51
  }
@@ -51,7 +53,7 @@ export class RepeaterFieldBuilderComponent {
51
53
  }
52
54
  this.item.clear();
53
55
  switch (this.repeaterField?.controlType) {
54
- ///TextBox
56
+ //#region TextBox
55
57
  case DataType.Text:
56
58
  let Text = new TextBoxOptions();
57
59
  Text.name = this.repeaterField.controlOptions.name + "." + this.itemNumber.toString() + "." + this.controlNumber.toString();
@@ -120,7 +122,8 @@ export class RepeaterFieldBuilderComponent {
120
122
  number.isReadonly = this.repeaterField.controlOptions.isReadonly;
121
123
  this.renderComponentService.renderDynamicComponent(this.item, TextboxComponent, this.group, number);
122
124
  break;
123
- ///DateTime
125
+ //#endregion
126
+ //#region DateTime
124
127
  case DataType.Date:
125
128
  let date = new DatePickerOptions();
126
129
  date.name = this.repeaterField.controlOptions.name + "." + this.itemNumber.toString() + "." + this.controlNumber.toString();
@@ -163,7 +166,8 @@ export class RepeaterFieldBuilderComponent {
163
166
  time.value = this.value;
164
167
  this.renderComponentService.renderDynamicComponent(this.item, DateInputComponent, this.group, time);
165
168
  break;
166
- //Dropdown
169
+ //#endregion
170
+ //#region Dropdown
167
171
  case DataType.SingleSelect:
168
172
  let singleSelect = new DropdownOptions();
169
173
  singleSelect.name = this.repeaterField.controlOptions.name + "." + this.itemNumber.toString() + "." + this.controlNumber.toString();
@@ -255,7 +259,8 @@ export class RepeaterFieldBuilderComponent {
255
259
  country.selectedItems = this.value;
256
260
  this.renderComponentService.renderDynamicComponent(this.item, DropdownListComponent, this.group, country);
257
261
  break;
258
- //FileUpload
262
+ //#endregion
263
+ //#region FileUpload
259
264
  case DataType.File:
260
265
  let file = new FileUploadOptions();
261
266
  file.name = this.repeaterField.controlOptions.name + "." + this.itemNumber.toString() + "." + this.controlNumber.toString();
@@ -282,7 +287,8 @@ export class RepeaterFieldBuilderComponent {
282
287
  multiFile.value = this.value;
283
288
  this.renderComponentService.renderDynamicComponent(this.item, FileUploadComponent, this.group, multiFile);
284
289
  break;
285
- //ImageUpload
290
+ //#endregion
291
+ //#region ImageUpload
286
292
  case DataType.Image:
287
293
  let image = new ImageUploadOptions();
288
294
  image.name = this.repeaterField.controlOptions.Name + "." + this.itemNumber.toString() + "." + this.controlNumber.toString();
@@ -309,7 +315,8 @@ export class RepeaterFieldBuilderComponent {
309
315
  coverPhoto.value = this.value;
310
316
  this.renderComponentService.renderDynamicComponent(this.item, ImageUploaderComponent, this.group, coverPhoto);
311
317
  break;
312
- //Mobile
318
+ //#endregion
319
+ //#region Mobile
313
320
  case DataType.Mobile:
314
321
  let mobile = new PhoneOptions();
315
322
  mobile.name = this.repeaterField.controlOptions.Name + "." + this.itemNumber.toString() + "." + this.controlNumber.toString();
@@ -325,7 +332,8 @@ export class RepeaterFieldBuilderComponent {
325
332
  mobile.value = this.value;
326
333
  this.renderComponentService.renderDynamicComponent(this.item, PhoneComponent, this.group, mobile);
327
334
  break;
328
- //MultilineText
335
+ //#endregion
336
+ //#region MultilineText
329
337
  case DataType.MultilineText:
330
338
  let multilineText = new TextAreaOptions();
331
339
  multilineText.name = this.repeaterField.controlOptions.Name + "." + this.itemNumber.toString() + "." + this.controlNumber.toString();
@@ -343,7 +351,8 @@ export class RepeaterFieldBuilderComponent {
343
351
  multilineText.value = this.value;
344
352
  this.renderComponentService.renderDynamicComponent(this.item, TextAreaComponent, this.group, multilineText);
345
353
  break;
346
- //HTML
354
+ //#endregion
355
+ //#region HTML
347
356
  case DataType.HTML:
348
357
  let HTML = new HtmlEditorOptions();
349
358
  HTML.name = this.repeaterField.controlOptions.Name + "." + this.itemNumber.toString() + "." + this.controlNumber.toString();
@@ -361,7 +370,8 @@ export class RepeaterFieldBuilderComponent {
361
370
  HTML.value = this.value;
362
371
  this.renderComponentService.renderDynamicComponent(this.item, HtmlEditorComponent, this.group, HTML);
363
372
  break;
364
- //Boolean
373
+ //#endregion
374
+ //#region Boolean
365
375
  case DataType.Boolean:
366
376
  let boolean = new ToggleSlideOptions();
367
377
  boolean.name = this.repeaterField.controlOptions.name + "." + this.itemNumber.toString() + "." + this.controlNumber.toString();
@@ -372,7 +382,8 @@ export class RepeaterFieldBuilderComponent {
372
382
  boolean.labelDescription = this.repeaterField.controlOptions.labelDescription ? this.repeaterField.controlOptions.labelDescription : "";
373
383
  this.renderComponentService.renderDynamicComponent(this.item, ToggleslideComponent, this.group, boolean);
374
384
  break;
375
- //Location
385
+ //#endregion
386
+ //#region Location
376
387
  case DataType.Location:
377
388
  let location = new MapAutoCompleteOptions();
378
389
  location.name = this.repeaterField.controlOptions.name + "." + this.itemNumber.toString() + "." + this.controlNumber.toString();
@@ -384,6 +395,20 @@ export class RepeaterFieldBuilderComponent {
384
395
  location.labelDescription = this.repeaterField.controlOptions.labelDescription ? this.repeaterField.controlOptions.labelDescription : "";
385
396
  this.renderComponentService.renderDynamicComponent(this.item, MapAutoCompleteComponent, this.group, location);
386
397
  break;
398
+ //#endregion
399
+ //#region CheckBox
400
+ case DataType.CheckBox:
401
+ let checkBox = new CheckBoxOptions();
402
+ checkBox.name = this.repeaterField.controlOptions.name + "." + this.itemNumber.toString() + "." + this.controlNumber.toString();
403
+ checkBox.hideLabel = this.repeaterField.controlOptions.hideLabel;
404
+ checkBox.labelKey = this.repeaterField.controlOptions.labelKey;
405
+ checkBox.viewType = this.repeaterField.controlOptions.viewType;
406
+ checkBox.outputFunction = this.repeaterField.controlOptions.outputFunction;
407
+ checkBox.labelDescription = this.repeaterField.controlOptions.labelDescription ? this.repeaterField.controlOptions.labelDescription : "";
408
+ checkBox.value = this.value;
409
+ this.renderComponentService.renderDynamicComponent(this.item, CheckBoxComponent, this.group, checkBox);
410
+ break;
411
+ //#endregion
387
412
  default:
388
413
  break;
389
414
  }
@@ -397,7 +422,7 @@ export class RepeaterFieldBuilderComponent {
397
422
  this.item.clear();
398
423
  this.group.removeControl(name);
399
424
  switch (this.repeaterField.controlType) {
400
- ///TextBox
425
+ //#region TextBox
401
426
  case DataType.Text:
402
427
  let text = new TextBoxOptions();
403
428
  text.name = this.repeaterField.controlOptions.name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
@@ -458,7 +483,8 @@ export class RepeaterFieldBuilderComponent {
458
483
  number.value = value;
459
484
  this.renderComponentService.renderDynamicComponent(this.item, TextboxComponent, this.group, number);
460
485
  break;
461
- ///DateTime
486
+ //#endregion
487
+ //#region DateTime
462
488
  case DataType.Date:
463
489
  let Date = new DatePickerOptions();
464
490
  Date.name = this.repeaterField.controlOptions.name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
@@ -501,7 +527,8 @@ export class RepeaterFieldBuilderComponent {
501
527
  time.value = value;
502
528
  this.renderComponentService.renderDynamicComponent(this.item, DateInputComponent, this.group, time);
503
529
  break;
504
- //Dropdown
530
+ //#endregion
531
+ //#region Dropdown
505
532
  case DataType.SingleSelect:
506
533
  let singleSelect = new DropdownOptions();
507
534
  singleSelect.name = this.repeaterField.controlOptions.name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
@@ -593,7 +620,8 @@ export class RepeaterFieldBuilderComponent {
593
620
  country.selectedItems = value;
594
621
  this.renderComponentService.renderDynamicComponent(this.item, DropdownListComponent, this.group, country);
595
622
  break;
596
- //FileUpload
623
+ //#endregion
624
+ //#region FileUpload
597
625
  case DataType.File:
598
626
  let file = new FileUploadOptions();
599
627
  file.name = this.repeaterField.controlOptions.name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
@@ -620,7 +648,8 @@ export class RepeaterFieldBuilderComponent {
620
648
  multiFile.value = value;
621
649
  this.renderComponentService.renderDynamicComponent(this.item, FileUploadComponent, this.group, multiFile);
622
650
  break;
623
- //ImageUpload
651
+ //#endregion
652
+ //#region ImageUpload
624
653
  case DataType.Image:
625
654
  let image = new ImageUploadOptions();
626
655
  image.name = this.repeaterField.controlOptions.name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
@@ -647,7 +676,8 @@ export class RepeaterFieldBuilderComponent {
647
676
  coverPhoto.value = value;
648
677
  this.renderComponentService.renderDynamicComponent(this.item, ImageUploaderComponent, this.group, coverPhoto);
649
678
  break;
650
- //Mobile
679
+ //#endregion
680
+ //#region Mobile
651
681
  case DataType.Mobile:
652
682
  let mobile = new PhoneOptions();
653
683
  mobile.name = this.repeaterField.controlOptions.name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
@@ -663,7 +693,8 @@ export class RepeaterFieldBuilderComponent {
663
693
  mobile.value = value;
664
694
  this.renderComponentService.renderDynamicComponent(this.item, PhoneComponent, this.group, mobile);
665
695
  break;
666
- //MultilineText
696
+ //#endregion
697
+ //#region MultilineText
667
698
  case DataType.MultilineText:
668
699
  let multilineText = new TextAreaOptions();
669
700
  multilineText.name = this.repeaterField.controlOptions.name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
@@ -681,7 +712,8 @@ export class RepeaterFieldBuilderComponent {
681
712
  multilineText.value = value;
682
713
  this.renderComponentService.renderDynamicComponent(this.item, TextAreaComponent, this.group, multilineText);
683
714
  break;
684
- //HTML
715
+ //#endregion
716
+ //#region HTML
685
717
  case DataType.HTML:
686
718
  let HTML = new HtmlEditorOptions();
687
719
  HTML.name = this.repeaterField.controlOptions.name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
@@ -699,7 +731,8 @@ export class RepeaterFieldBuilderComponent {
699
731
  HTML.value = value;
700
732
  this.renderComponentService.renderDynamicComponent(this.item, HtmlEditorComponent, this.group, HTML);
701
733
  break;
702
- //Boolean
734
+ //#endregion
735
+ //#region Boolean
703
736
  case DataType.Boolean:
704
737
  let boolean = new ToggleSlideOptions();
705
738
  boolean.name = this.repeaterField.controlOptions.name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
@@ -710,7 +743,8 @@ export class RepeaterFieldBuilderComponent {
710
743
  boolean.value = value;
711
744
  this.renderComponentService.renderDynamicComponent(this.item, ToggleslideComponent, this.group, boolean);
712
745
  break;
713
- //Location
746
+ //#endregion
747
+ //#region Location
714
748
  case DataType.Location:
715
749
  let Location = new MapAutoCompleteOptions();
716
750
  Location.name = this.repeaterField.controlOptions.name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
@@ -722,6 +756,20 @@ export class RepeaterFieldBuilderComponent {
722
756
  Location.value = value;
723
757
  this.renderComponentService.renderDynamicComponent(this.item, MapAutoCompleteComponent, this.group, Location);
724
758
  break;
759
+ //#endregion
760
+ //#region CheckBox
761
+ case DataType.CheckBox:
762
+ let checkBox = new CheckBoxOptions();
763
+ checkBox.name = this.repeaterField.controlOptions.name + "." + this.itemNumber.toString() + "." + this.controlNumber.toString();
764
+ checkBox.hideLabel = this.repeaterField.controlOptions.hideLabel;
765
+ checkBox.labelKey = this.repeaterField.controlOptions.labelKey;
766
+ checkBox.viewType = this.repeaterField.controlOptions.viewType;
767
+ checkBox.labelDescription = this.repeaterField.controlOptions.labelDescription ? this.repeaterField.controlOptions.labelDescription : "";
768
+ checkBox.outputFunction = this.repeaterField.controlOptions.outputFunction;
769
+ checkBox.value = value;
770
+ this.renderComponentService.renderDynamicComponent(this.item, CheckBoxComponent, this.group, checkBox);
771
+ break;
772
+ //#endregion
725
773
  default:
726
774
  break;
727
775
  }
@@ -747,4 +795,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImpor
747
795
  }], itemsValue: [{
748
796
  type: Input
749
797
  }] } });
750
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwZWF0ZXItZmllbGQtYnVpbGRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWNvbnRyb2xzL3NyYy9saWIvY29udHJvbHMvUmVwZWF0ZXIvcmVwZWF0ZXItZmllbGQtYnVpbGRlci9yZXBlYXRlci1maWVsZC1idWlsZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9jb250cm9scy9SZXBlYXRlci9yZXBlYXRlci1maWVsZC1idWlsZGVyL3JlcGVhdGVyLWZpZWxkLWJ1aWxkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsS0FBSyxFQUF5QixTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHcEgsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUU1RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDOUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzlELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM1RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDekUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDL0UsT0FBTyxFQUFF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Z0JBQWdCLGtEQ3hDN0MseUNBQ0E7OzJGRHFDYSw2QkFBNkI7a0JBSnpDLFNBQVM7K0JBQ0Usd0JBQXdCOzRIQUthLElBQUk7c0JBQWxELFNBQVM7dUJBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFO2dCQUNwQyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCwgRm9ybUdyb3VwRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBVdGlsaXR5U2VydmljZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLXV0aWxpdGllcyc7XHJcbmltcG9ydCB7IERhdGFUeXBlIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL0VudW1zL0VudW1zJztcclxuaW1wb3J0IHsgSW5wdXRUeXBlIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL0VudW1zL0lucHV0VHlwZSc7XHJcbmltcG9ydCB7IExhbmd1YWdlVmFsaWRhdGlvbiB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9FbnVtcy9MYW5ndWFnZVZhbGlkYXRpb24nO1xyXG5pbXBvcnQgeyBQaWNrZXJUeXBlIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL0VudW1zL1BpY2tlclR5cGUnO1xyXG5pbXBvcnQgeyBTZWxlY3RNb2RlIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL0VudW1zL1NlbGVjdE1vZGUnO1xyXG5pbXBvcnQgeyBTdGFydFZpZXcgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvRW51bXMvU3RhcnRWaWV3JztcclxuaW1wb3J0IHsgRGF0ZVBpY2tlck9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvTW9kZWxzL0RhdGVQaWNrZXJPcHRpb25zJztcclxuaW1wb3J0IHsgRHJvcGRvd25PcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL01vZGVscy9Ecm9wZG93bk9wdGlvbnMnO1xyXG5pbXBvcnQgeyBGaWxlVXBsb2FkT3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9Nb2RlbHMvRmlsZVVwbG9hZE9wdGlvbnMnO1xyXG5pbXBvcnQgeyBIdG1sRWRpdG9yT3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9Nb2RlbHMvSHRtbEVkaXRvck9wdGlvbnMnO1xyXG5pbXBvcnQgeyBJbWFnZVVwbG9hZE9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvTW9kZWxzL0ltYWdlVXBsb2FkT3B0aW9ucyc7XHJcbmltcG9ydCB7IE1hcEF1dG9Db21wbGV0ZU9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvTW9kZWxzL01hcEF1dG9Db21wbGV0ZU9wdGlvbnMnO1xyXG5pbXBvcnQgeyBQaG9uZU9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvTW9kZWxzL1Bob25lT3B0aW9ucyc7XHJcbmltcG9ydCB7IFJhbmdlTnVtYmVyIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL01vZGVscy9SYW5nZU51bWJlcic7XHJcbmltcG9ydCB7IFJlcGVhdGVyRmllbGQgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvTW9kZWxzL1JlcGVhdGVyRmllbGQnO1xyXG5pbXBvcnQgeyBUZXh0QXJlYU9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvTW9kZWxzL1RleHRBcmVhT3B0aW9ucyc7XHJcbmltcG9ydCB7IFRleHRCb3hPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL01vZGVscy9UZXh0Qm94T3B0aW9ucyc7XHJcbmltcG9ydCB7IFRvZ2dsZVNsaWRlT3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9Nb2RlbHMvVG9nZ2xlU2xpZGVPcHRpb25zJztcclxuaW1wb3J0IHsgUmVuZGVyQ29tcG9uZW50U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9zZXJ2aWNlcy9yZW5kZXItY29tcG9uZW50LXNlcnZpY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IERhdGVJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL0RhdGVUaW1lUGlja2VyL0RhdGVUaW1lUGlja2VyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERyb3Bkb3duTGlzdENvbXBvbmVudCB9IGZyb20gJy4uLy4uL0Ryb3Bkb3duTGlzdC9Ecm9wZG93bkxpc3QuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRmlsZVVwbG9hZENvbXBvbmVudCB9IGZyb20gJy4uLy4uL0ZpbGVVcGxhb2QvRmlsZVVwbGFvZC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBIdG1sRWRpdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vSHRtbEVkaXRvci9IdG1sRWRpdG9yLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEltYWdlVXBsb2FkZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9JbWFnZVVwbG9hZC9JbWFnZVVwbG9hZC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBNYXBBdXRvQ29tcGxldGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi9NYXBBdXRvQ29tcGxldGUvTWFwQXV0b0NvbXBsZXRlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFBob25lQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vUGhvbmUvUGhvbmUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVGV4dEFyZWFDb21wb25lbnQgfSBmcm9tICcuLi8uLi9UZXh0QXJlYS9UZXh0QXJlYS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUZXh0Ym94Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vVGV4dEJveC9UZXh0Qm94LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRvZ2dsZXNsaWRlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vVG9nZ2xlc2xpZGUvVG9nZ2xlc2xpZGUuY29tcG9uZW50JztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3JlcGVhdGVyLWZpZWxkLWJ1aWxkZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9yZXBlYXRlci1maWVsZC1idWlsZGVyLmNvbXBvbmVudC5odG1sJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFJlcGVhdGVyRmllbGRCdWlsZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcclxuXHJcbiAgQFZpZXdDaGlsZChcIkl0ZW1cIiwgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pIGl0ZW06IFZpZXdDb250YWluZXJSZWY7XHJcbiAgQElucHV0KCkgZ3JvdXA6IEZvcm1Hcm91cDtcclxuICBASW5wdXQoKSBpdGVtTnVtYmVyOiBudW1iZXI7XHJcbiAgQElucHV0KCkgY29udHJvbE51bWJlcjogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIHJlcGVhdGVyRmllbGQ6IFJlcGVhdGVyRmllbGQ7XHJcbiAgQElucHV0KCkgaXRlbXNWYWx1ZTogYW55W10gPSBbXTtcclxuICBpdGVtVmFsdWU6IGFueSA9IG51bGw7XHJcbiAgdmFsdWU6IGFueTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZW5kZXJDb21wb25lbnRTZXJ2aWNlOiBSZW5kZXJDb21wb25lbnRTZXJ2aWNlLCBwdWJsaWMgdGV4dENvbnRyb2xIb3N0OiBGb3JtR3JvdXBEaXJlY3RpdmUpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHJcbiAgfVxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5pdGVtc1ZhbHVlLmxlbmd0aCA+IDApXHJcbiAgICAgICAgdGhpcy5pdGVtVmFsdWUgPSB0aGlzLml0ZW1zVmFsdWVbdGhpcy5pdGVtTnVtYmVyXVxyXG4gICAgICBpZiAodGhpcy5pdGVtVmFsdWUpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLml0ZW1WYWx1ZSkge1xyXG4gICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLml0ZW1WYWx1ZSwga2V5KSAmJiBrZXkgPT0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLk5hbWUpIHtcclxuICAgICAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMuaXRlbVZhbHVlW2tleV07XHJcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSBlbGVtZW50O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLml0ZW0uY2xlYXIoKVxyXG4gICAgICBzd2l0Y2ggKHRoaXMucmVwZWF0ZXJGaWVsZD8uY29udHJvbFR5cGUpIHtcclxuICAgICAgICAvLy9UZXh0Qm94XHJcbiAgICAgICAgY2FzZSBEYXRhVHlwZS5UZXh0OlxyXG4gICAgICAgICAgbGV0IFRleHQgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICAgIFRleHQubmFtZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5uYW1lICsgXCIuXCIgKyB0aGlzLml0ZW1OdW1iZXIudG9TdHJpbmcoKSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgIFRleHQuaGlkZUxhYmVsID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmhpZGVMYWJlbFxyXG4gICAgICAgICAgVGV4dC5sYWJlbEtleSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbEtleVxyXG4gICAgICAgICAgVGV4dC5pc1JlcXVpcmVkID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmlzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBUZXh0LnZpZXdUeXBlID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLnZpZXdUeXBlO1xyXG4gICAgICAgICAgVGV4dC5sYWJlbERlc2NyaXB0aW9uID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgIFRleHQudHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICAgICAgVGV4dC5sYW5ndWFnZVZhbGlkYXRpb24gPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFuZ3VhZ2VWYWxpZGF0aW9uO1xyXG4gICAgICAgICAgaWYgKHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5tYXhMZW5ndGgpXHJcbiAgICAgICAgICAgIFRleHQubWF4TGVuZ3RoID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm1heExlbmd0aFxyXG4gICAgICAgICAgaWYgKHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5taW5MZW5ndGgpXHJcbiAgICAgICAgICAgIFRleHQubWluTGVuZ3RoID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm1pbkxlbmd0aFxyXG4gICAgICAgICAgVGV4dC52YWx1ZSA9IHRoaXMudmFsdWU7XHJcbiAgICAgICAgICBUZXh0LmlzUmVhZG9ubHkgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuaXNSZWFkb25seTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PFRleHRib3hDb21wb25lbnQ+KHRoaXMuaXRlbSwgVGV4dGJveENvbXBvbmVudCwgdGhpcy5ncm91cCwgVGV4dClcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIERhdGFUeXBlLk5hbWU6XHJcbiAgICAgICAgICBsZXQgbmFtZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgICAgbmFtZS5uYW1lID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm5hbWUgKyBcIi5cIiArIHRoaXMuaXRlbU51bWJlci50b1N0cmluZygpICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgbmFtZS5oaWRlTGFiZWwgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuaGlkZUxhYmVsXHJcbiAgICAgICAgICBuYW1lLmxhYmVsS2V5ID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsS2V5XHJcbiAgICAgICAgICBuYW1lLmlzUmVxdWlyZWQgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuaXNSZXF1aXJlZDtcclxuICAgICAgICAgIG5hbWUudmlld1R5cGUgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMudmlld1R5cGU7XHJcbiAgICAgICAgICBuYW1lLmxhbmd1YWdlVmFsaWRhdGlvbiA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYW5ndWFnZVZhbGlkYXRpb247XHJcbiAgICAgICAgICBuYW1lLmxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgaWYgKHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5tYXhMZW5ndGgpXHJcbiAgICAgICAgICAgIG5hbWUubWF4TGVuZ3RoID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm1heExlbmd0aFxyXG4gICAgICAgICAgaWYgKHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5taW5MZW5ndGgpXHJcbiAgICAgICAgICAgIG5hbWUubWluTGVuZ3RoID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm1pbkxlbmd0aFxyXG4gICAgICAgICAgbmFtZS50eXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgICAgICBuYW1lLnZhbHVlID0gdGhpcy52YWx1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PFRleHRib3hDb21wb25lbnQ+KHRoaXMuaXRlbSwgVGV4dGJveENvbXBvbmVudCwgdGhpcy5ncm91cCwgbmFtZSlcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIERhdGFUeXBlLkVtYWlsOlxyXG4gICAgICAgICAgbGV0IGVtYWlsID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgICBlbWFpbC5uYW1lID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm5hbWUgKyBcIi5cIiArIHRoaXMuaXRlbU51bWJlci50b1N0cmluZygpICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgZW1haWwuaGlkZUxhYmVsID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmhpZGVMYWJlbFxyXG4gICAgICAgICAgZW1haWwubGFiZWxLZXkgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxLZXlcclxuICAgICAgICAgIGVtYWlsLmlzUmVxdWlyZWQgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuaXNSZXF1aXJlZDtcclxuICAgICAgICAgIGVtYWlsLnZpZXdUeXBlID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLnZpZXdUeXBlO1xyXG4gICAgICAgICAgZW1haWwubGFuZ3VhZ2VWYWxpZGF0aW9uID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhbmd1YWdlVmFsaWRhdGlvbjtcclxuICAgICAgICAgIGVtYWlsLmxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgZW1haWwudHlwZSA9IElucHV0VHlwZS5FbWFpbDtcclxuICAgICAgICAgIGVtYWlsLnZhbHVlID0gdGhpcy52YWx1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PFRleHRib3hDb21wb25lbnQ+KHRoaXMuaXRlbSwgVGV4dGJveENvbXBvbmVudCwgdGhpcy5ncm91cCwgZW1haWwpXHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgY2FzZSBEYXRhVHlwZS5OdW1iZXI6XHJcbiAgICAgICAgICBsZXQgbnVtYmVyID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgICBudW1iZXIubmFtZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5uYW1lICsgXCIuXCIgKyB0aGlzLml0ZW1OdW1iZXIudG9TdHJpbmcoKSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgIG51bWJlci5oaWRlTGFiZWwgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuaGlkZUxhYmVsXHJcbiAgICAgICAgICBudW1iZXIubGFiZWxLZXkgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxLZXlcclxuICAgICAgICAgIG51bWJlci5pc1JlcXVpcmVkID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmlzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBudW1iZXIudmlld1R5cGUgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMudmlld1R5cGU7XHJcbiAgICAgICAgICBudW1iZXIubGFuZ3VhZ2VWYWxpZGF0aW9uID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhbmd1YWdlVmFsaWRhdGlvbjtcclxuICAgICAgICAgIG51bWJlci5sYWJlbERlc2NyaXB0aW9uID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgIG51bWJlci50eXBlID0gSW5wdXRUeXBlLk51bWJlcjtcclxuICAgICAgICAgIGxldCByYW5nZU51bWJlciA9IG5ldyBSYW5nZU51bWJlcigpXHJcbiAgICAgICAgICBpZiAodGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm51bWJlclJhbmdlKSB7XHJcbiAgICAgICAgICAgIHJhbmdlTnVtYmVyLnRvID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm51bWJlclJhbmdlLnRvXHJcbiAgICAgICAgICAgIHJhbmdlTnVtYmVyLmZyb20gPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubnVtYmVyUmFuZ2UuZnJvbVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgbnVtYmVyLm51bWJlclJhbmdlID0gcmFuZ2VOdW1iZXI7XHJcbiAgICAgICAgICBudW1iZXIudmFsdWUgPSB0aGlzLnZhbHVlO1xyXG4gICAgICAgICAgbnVtYmVyLmlzUmVhZG9ubHkgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuaXNSZWFkb25seTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PFRleHRib3hDb21wb25lbnQ+KHRoaXMuaXRlbSwgVGV4dGJveENvbXBvbmVudCwgdGhpcy5ncm91cCwgbnVtYmVyKVxyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIC8vL0RhdGVUaW1lXHJcbiAgICAgICAgY2FzZSBEYXRhVHlwZS5EYXRlOlxyXG4gICAgICAgICAgbGV0IGRhdGUgPSBuZXcgRGF0ZVBpY2tlck9wdGlvbnMoKTtcclxuICAgICAgICAgIGRhdGUubmFtZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5uYW1lICsgXCIuXCIgKyB0aGlzLml0ZW1OdW1iZXIudG9TdHJpbmcoKSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgIGRhdGUuaGlkZUxhYmVsID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmhpZGVMYWJlbFxyXG4gICAgICAgICAgZGF0ZS5sYWJlbEtleSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbEtleVxyXG4gICAgICAgICAgZGF0ZS5pc1JlcXVpcmVkID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmlzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBkYXRlLnZpZXdUeXBlID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLnZpZXdUeXBlO1xyXG4gICAgICAgICAgZGF0ZS5sYWJlbERlc2NyaXB0aW9uID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgIGRhdGUucGlja2VyVHlwZSA9IFBpY2tlclR5cGUuQ2FsZW5kYXI7XHJcbiAgICAgICAgICBkYXRlLnNlbGVjdE1vZGUgPSBTZWxlY3RNb2RlLlNpbmdsZVxyXG4gICAgICAgICAgZGF0ZS5zdGFydFZpZXcgPSBTdGFydFZpZXcuTW9udGhcclxuICAgICAgICAgIGRhdGUudmFsdWUgPSB0aGlzLnZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8RGF0ZUlucHV0Q29tcG9uZW50Pih0aGlzLml0ZW0sIERhdGVJbnB1dENvbXBvbmVudCwgdGhpcy5ncm91cCwgZGF0ZSlcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIERhdGFUeXBlLkRhdGVUaW1lOlxyXG4gICAgICAgICAgbGV0IGRhdGVUaW1lID0gbmV3IERhdGVQaWNrZXJPcHRpb25zKCk7XHJcbiAgICAgICAgICBkYXRlVGltZS5uYW1lID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm5hbWUgKyBcIi5cIiArIHRoaXMuaXRlbU51bWJlci50b1N0cmluZygpICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgZGF0ZVRpbWUuaGlkZUxhYmVsID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmhpZGVMYWJlbFxyXG4gICAgICAgICAgZGF0ZVRpbWUubGFiZWxLZXkgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuTGFiZWxLZXlcclxuICAgICAgICAgIGRhdGVUaW1lLmlzUmVxdWlyZWQgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuaXNSZXF1aXJlZDtcclxuICAgICAgICAgIGRhdGVUaW1lLnZpZXdUeXBlID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLnZpZXdUeXBlO1xyXG4gICAgICAgICAgZGF0ZVRpbWUubGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbERlc2NyaXB0aW9uID8gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBkYXRlVGltZS5waWNrZXJUeXBlID0gUGlja2VyVHlwZS5Cb3RoO1xyXG4gICAgICAgICAgZGF0ZVRpbWUuc2VsZWN0TW9kZSA9IFNlbGVjdE1vZGUuU2luZ2xlXHJcbiAgICAgICAgICBkYXRlVGltZS5zdGFydFZpZXcgPSBTdGFydFZpZXcuTW9udGhcclxuICAgICAgICAgIGRhdGVUaW1lLnZhbHVlID0gdGhpcy52YWx1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PERhdGVJbnB1dENvbXBvbmVudD4odGhpcy5pdGVtLCBEYXRlSW5wdXRDb21wb25lbnQsIHRoaXMuZ3JvdXAsIGRhdGVUaW1lKVxyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuVGltZTpcclxuICAgICAgICAgIGxldCB0aW1lID0gbmV3IERhdGVQaWNrZXJPcHRpb25zKCk7XHJcbiAgICAgICAgICB0aW1lLm5hbWUgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubmFtZSArIFwiLlwiICsgdGhpcy5pdGVtTnVtYmVyLnRvU3RyaW5nKCkgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICB0aW1lLmhpZGVMYWJlbCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5oaWRlTGFiZWxcclxuICAgICAgICAgIHRpbWUubGFiZWxLZXkgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxLZXlcclxuICAgICAgICAgIHRpbWUuaXNSZXF1aXJlZCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5pc1JlcXVpcmVkO1xyXG4gICAgICAgICAgdGltZS52aWV3VHlwZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy52aWV3VHlwZTtcclxuICAgICAgICAgIHRpbWUubGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbERlc2NyaXB0aW9uID8gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICB0aW1lLnBpY2tlclR5cGUgPSBQaWNrZXJUeXBlLlRpbWVyO1xyXG4gICAgICAgICAgdGltZS5zZWxlY3RNb2RlID0gU2VsZWN0TW9kZS5TaW5nbGVcclxuICAgICAgICAgIHRpbWUuc3RhcnRWaWV3ID0gU3RhcnRWaWV3Lk1vbnRoXHJcbiAgICAgICAgICB0aW1lLnZhbHVlID0gdGhpcy52YWx1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PERhdGVJbnB1dENvbXBvbmVudD4odGhpcy5pdGVtLCBEYXRlSW5wdXRDb21wb25lbnQsIHRoaXMuZ3JvdXAsIHRpbWUpXHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgLy9Ecm9wZG93blxyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuU2luZ2xlU2VsZWN0OlxyXG4gICAgICAgICAgbGV0IHNpbmdsZVNlbGVjdCA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgIHNpbmdsZVNlbGVjdC5uYW1lID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm5hbWUgKyBcIi5cIiArIHRoaXMuaXRlbU51bWJlci50b1N0cmluZygpICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgc2luZ2xlU2VsZWN0LmhpZGVMYWJlbCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5oaWRlTGFiZWxcclxuICAgICAgICAgIHNpbmdsZVNlbGVjdC5sYWJlbEtleSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbEtleVxyXG4gICAgICAgICAgc2luZ2xlU2VsZWN0LmlzUmVxdWlyZWQgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuaXNSZXF1aXJlZDtcclxuICAgICAgICAgIHNpbmdsZVNlbGVjdC52aWV3VHlwZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy52aWV3VHlwZTtcclxuICAgICAgICAgIHNpbmdsZVNlbGVjdC5sYWJlbERlc2NyaXB0aW9uID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgIHNpbmdsZVNlbGVjdC5kYXRhU291cmNlID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmRhdGFTb3VyY2VcclxuICAgICAgICAgIHNpbmdsZVNlbGVjdC5zaW5nbGVTZWxlY3Rpb24gPSB0cnVlXHJcbiAgICAgICAgICBzaW5nbGVTZWxlY3Quc2hvd0NoZWNrYm94ID0gZmFsc2VcclxuICAgICAgICAgIHNpbmdsZVNlbGVjdC5hbGxvd1NlYXJjaEZpbHRlciA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5oYXNTZWFyY2hcclxuICAgICAgICAgIHNpbmdsZVNlbGVjdC5zZWxlY3RlZEl0ZW1zID0gdGhpcy52YWx1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PERyb3Bkb3duTGlzdENvbXBvbmVudD4odGhpcy5pdGVtLCBEcm9wZG93bkxpc3RDb21wb25lbnQsIHRoaXMuZ3JvdXAsIHNpbmdsZVNlbGVjdClcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuTXVsaXBsZVNlbGVjdDpcclxuICAgICAgICAgIGxldCBtdWxpcGxlU2VsZWN0ID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgbXVsaXBsZVNlbGVjdC5uYW1lID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm5hbWUgKyBcIi5cIiArIHRoaXMuaXRlbU51bWJlci50b1N0cmluZygpICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgbXVsaXBsZVNlbGVjdC5oaWRlTGFiZWwgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuaGlkZUxhYmVsXHJcbiAgICAgICAgICBtdWxpcGxlU2VsZWN0LmxhYmVsS2V5ID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsS2V5XHJcbiAgICAgICAgICBtdWxpcGxlU2VsZWN0LmlzUmVxdWlyZWQgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuaXNSZXF1aXJlZDtcclxuICAgICAgICAgIG11bGlwbGVTZWxlY3Qudmlld1R5cGUgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBtdWxpcGxlU2VsZWN0LmxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgbXVsaXBsZVNlbGVjdC5kYXRhU291cmNlID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmRhdGFTb3VyY2VcclxuICAgICAgICAgIG11bGlwbGVTZWxlY3Quc2luZ2xlU2VsZWN0aW9uID0gZmFsc2VcclxuICAgICAgICAgIG11bGlwbGVTZWxlY3Quc2hvd0NoZWNrYm94ID0gZmFsc2VcclxuICAgICAgICAgIG11bGlwbGVTZWxlY3QuYWxsb3dTZWFyY2hGaWx0ZXIgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuaGFzU2VhcmNoXHJcbiAgICAgICAgICBtdWxpcGxlU2VsZWN0LnNlbGVjdGVkSXRlbXMgPSB0aGlzLnZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8RHJvcGRvd25MaXN0Q29tcG9uZW50Pih0aGlzLml0ZW0sIERyb3Bkb3duTGlzdENvbXBvbmVudCwgdGhpcy5ncm91cCwgbXVsaXBsZVNlbGVjdClcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuR29hbDpcclxuICAgICAgICAgIGxldCBnb2FsID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgZ29hbC5uYW1lID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm5hbWUgKyBcIi5cIiArIHRoaXMuaXRlbU51bWJlci50b1N0cmluZygpICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgZ29hbC5oaWRlTGFiZWwgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuaGlkZUxhYmVsXHJcbiAgICAgICAgICBnb2FsLmxhYmVsS2V5ID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsS2V5XHJcbiAgICAgICAgICBnb2FsLmlzUmVxdWlyZWQgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuaXNSZXF1aXJlZDtcclxuICAgICAgICAgIGdvYWwudmlld1R5cGUgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMudmlld1R5cGU7XHJcbiAgICAgICAgICBnb2FsLmxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgZ29hbC5kYXRhU291cmNlID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmRhdGFTb3VyY2VcclxuICAgICAgICAgIGdvYWwuc2luZ2xlU2VsZWN0aW9uID0gIXRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5pc011bHRpcGxlXHJcbiAgICAgICAgICBnb2FsLnNob3dDaGVja2JveCA9IGZhbHNlXHJcbiAgICAgICAgICBnb2FsLmFsbG93U2VhcmNoRmlsdGVyID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmhhc1NlYXJjaFxyXG4gICAgICAgICAgZ29hbC5zZWxlY3RlZEl0ZW1zID0gdGhpcy52YWx1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PERyb3Bkb3duTGlzdENvbXBvbmVudD4odGhpcy5pdGVtLCBEcm9wZG93bkxpc3RDb21wb25lbnQsIHRoaXMuZ3JvdXAsIGdvYWwpXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIERhdGFUeXBlLkNoYWxsZW5nZTpcclxuICAgICAgICAgIGxldCBjaGFsbGVuZ2UgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICBjaGFsbGVuZ2UubmFtZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5uYW1lICsgXCIuXCIgKyB0aGlzLml0ZW1OdW1iZXIudG9TdHJpbmcoKSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgIGNoYWxsZW5nZS5oaWRlTGFiZWwgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuaGlkZUxhYmVsXHJcbiAgICAgICAgICBjaGFsbGVuZ2UubGFiZWxLZXkgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxLZXlcclxuICAgICAgICAgIGNoYWxsZW5nZS5pc1JlcXVpcmVkID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmlzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBjaGFsbGVuZ2Uudmlld1R5cGUgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMudmlld1R5cGU7XHJcbiAgICAgICAgICBjaGFsbGVuZ2UubGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbERlc2NyaXB0aW9uID8gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBjaGFsbGVuZ2UuZGF0YVNvdXJjZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5kYXRhU291cmNlXHJcbiAgICAgICAgICBjaGFsbGVuZ2UuZGF0YVNvdXJjZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5kYXRhU291cmNlXHJcbiAgICAgICAgICBjaGFsbGVuZ2Uuc2luZ2xlU2VsZWN0aW9uID0gIXRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5pc011bHRpcGxlXHJcbiAgICAgICAgICBjaGFsbGVuZ2Uuc2hvd0NoZWNrYm94ID0gZmFsc2VcclxuICAgICAgICAgIGNoYWxsZW5nZS5hbGxvd1NlYXJjaEZpbHRlciA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5oYXNTZWFyY2hcclxuICAgICAgICAgIGNoYWxsZW5nZS5zZWxlY3RlZEl0ZW1zID0gdGhpcy52YWx1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PERyb3Bkb3duTGlzdENvbXBvbmVudD4odGhpcy5pdGVtLCBEcm9wZG93bkxpc3RDb21wb25lbnQsIHRoaXMuZ3JvdXAsIGNoYWxsZW5nZSlcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuSW5ub3ZhdGlvbkxhYjpcclxuICAgICAgICAgIGxldCBpbm5vdmF0aW9uTGFiID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgaW5ub3ZhdGlvbkxhYi5uYW1lID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm5hbWUgKyBcIi5cIiArIHRoaXMuaXRlbU51bWJlci50b1N0cmluZygpICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgaW5ub3ZhdGlvbkxhYi5oaWRlTGFiZWwgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuaGlkZUxhYmVsXHJcbiAgICAgICAgICBpbm5vdmF0aW9uTGFiLmxhYmVsS2V5ID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsS2V5XHJcbiAgICAgICAgICBpbm5vdmF0aW9uTGFiLmlzUmVxdWlyZWQgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuaXNSZXF1aXJlZDtcclxuICAgICAgICAgIGlubm92YXRpb25MYWIudmlld1R5cGUgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMudmlld1R5cGU7XHJcbiAgICAgICAgICBpbm5vdmF0aW9uTGFiLmxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgaW5ub3ZhdGlvbkxhYi5kYXRhU291cmNlID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmRhdGFTb3VyY2VcclxuICAgICAgICAgIGlubm92YXRpb25MYWIuc2luZ2xlU2VsZWN0aW9uID0gIXRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5pc011bHRpcGxlXHJcbiAgICAgICAgICBpbm5vdmF0aW9uTGFiLnNob3dDaGVja2JveCA9IGZhbHNlXHJcbiAgICAgICAgICBpbm5vdmF0aW9uTGFiLmFsbG93U2VhcmNoRmlsdGVyID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmhhc1NlYXJjaFxyXG4gICAgICAgICAgaW5ub3ZhdGlvbkxhYi5zZWxlY3RlZEl0ZW1zID0gdGhpcy52YWx1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PERyb3Bkb3duTGlzdENvbXBvbmVudD4odGhpcy5pdGVtLCBEcm9wZG93bkxpc3RDb21wb25lbnQsIHRoaXMuZ3JvdXAsIGlubm92YXRpb25MYWIpXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIERhdGFUeXBlLkNvdW50cnk6XHJcbiAgICAgICAgICBsZXQgY291bnRyeSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgIGNvdW50cnkubmFtZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5uYW1lICsgXCIuXCIgKyB0aGlzLml0ZW1OdW1iZXIudG9TdHJpbmcoKSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgIGNvdW50cnkuaGlkZUxhYmVsID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmhpZGVMYWJlbFxyXG4gICAgICAgICAgY291bnRyeS5sYWJlbEtleSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5MYWJlbEtleVxyXG4gICAgICAgICAgY291bnRyeS5pc1JlcXVpcmVkID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmlzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBjb3VudHJ5LnZpZXdUeXBlID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLnZpZXdUeXBlO1xyXG4gICAgICAgICAgY291bnRyeS5sYWJlbERlc2NyaXB0aW9uID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgIGNvdW50cnkuZGF0YVNvdXJjZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5kYXRhU291cmNlXHJcbiAgICAgICAgICBjb3VudHJ5LnNpbmdsZVNlbGVjdGlvbiA9ICF0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuaXNNdWx0aXBsZVxyXG4gICAgICAgICAgY291bnRyeS5zaG93Q2hlY2tib3ggPSBmYWxzZVxyXG4gICAgICAgICAgY291bnRyeS5hbGxvd1NlYXJjaEZpbHRlciA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5oYXNTZWFyY2hcclxuICAgICAgICAgIGNvdW50cnkuc2VsZWN0ZWRJdGVtcyA9IHRoaXMudmFsdWU7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxEcm9wZG93bkxpc3RDb21wb25lbnQ+KHRoaXMuaXRlbSwgRHJvcGRvd25MaXN0Q29tcG9uZW50LCB0aGlzLmdyb3VwLCBjb3VudHJ5KVxyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIC8vRmlsZVVwbG9hZFxyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuRmlsZTpcclxuICAgICAgICAgIGxldCBmaWxlID0gbmV3IEZpbGVVcGxvYWRPcHRpb25zKCk7XHJcbiAgICAgICAgICBmaWxlLm5hbWUgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubmFtZSArIFwiLlwiICsgdGhpcy5pdGVtTnVtYmVyLnRvU3RyaW5nKCkgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBmaWxlLmhpZGVMYWJlbCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5oaWRlTGFiZWxcclxuICAgICAgICAgIGZpbGUubGFiZWxLZXkgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxLZXlcclxuICAgICAgICAgIGZpbGUuaXNSZXF1aXJlZCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5pc1JlcXVpcmVkO1xyXG4gICAgICAgICAgZmlsZS52aWV3VHlwZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy52aWV3VHlwZTtcclxuICAgICAgICAgIGZpbGUubGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbERlc2NyaXB0aW9uID8gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBmaWxlLmZpbGVNYXhTaXplSW5NQiA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5tYXhGaWxlU2l6ZUluTUJcclxuICAgICAgICAgIGZpbGUudmFsdWUgPSB0aGlzLnZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8RmlsZVVwbG9hZENvbXBvbmVudD4odGhpcy5pdGVtLCBGaWxlVXBsb2FkQ29tcG9uZW50LCB0aGlzLmdyb3VwLCBmaWxlKVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBEYXRhVHlwZS5NdWx0aUZpbGU6XHJcbiAgICAgICAgICBsZXQgbXVsdGlGaWxlID0gbmV3IEZpbGVVcGxvYWRPcHRpb25zKCk7XHJcbiAgICAgICAgICBmaWxlLm5hbWUgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuTmFtZSArIFwiLlwiICsgdGhpcy5pdGVtTnVtYmVyLnRvU3RyaW5nKCkgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBmaWxlLmhpZGVMYWJlbCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5IaWRlTGFiZWxcclxuICAgICAgICAgIGZpbGUubGFiZWxLZXkgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuTGFiZWxLZXlcclxuICAgICAgICAgIGZpbGUuaXNSZXF1aXJlZCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5Jc1JlcXVpcmVkO1xyXG4gICAgICAgICAgZmlsZS52aWV3VHlwZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5WaWV3VHlwZTtcclxuICAgICAgICAgIGZpbGUubGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uID8gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBtdWx0aUZpbGUubWF4U2l6ZUZvckFsbEZpbGVzSW5NQiA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5tYXhGaWxlU2l6ZUluTUJcclxuICAgICAgICAgIG11bHRpRmlsZS5tYXhOb09mRmlsZXMgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubWF4RmlsZUNvdW50XHJcbiAgICAgICAgICBtdWx0aUZpbGUuaXNNdWx0aXBsZUZpbGUgPSB0cnVlO1xyXG4gICAgICAgICAgbXVsdGlGaWxlLnZhbHVlID0gdGhpcy52YWx1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PEZpbGVVcGxvYWRDb21wb25lbnQ+KHRoaXMuaXRlbSwgRmlsZVVwbG9hZENvbXBvbmVudCwgdGhpcy5ncm91cCwgbXVsdGlGaWxlKVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgLy9JbWFnZVVwbG9hZFxyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuSW1hZ2U6XHJcbiAgICAgICAgICBsZXQgaW1hZ2UgPSBuZXcgSW1hZ2VVcGxvYWRPcHRpb25zKCk7XHJcbiAgICAgICAgICBpbWFnZS5uYW1lID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIHRoaXMuaXRlbU51bWJlci50b1N0cmluZygpICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgaW1hZ2UuaGlkZUxhYmVsID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLkhpZGVMYWJlbFxyXG4gICAgICAgICAgaW1hZ2UubGFiZWxLZXkgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuTGFiZWxLZXlcclxuICAgICAgICAgIGltYWdlLmlzUmVxdWlyZWQgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuSXNSZXF1aXJlZDtcclxuICAgICAgICAgIGltYWdlLnZpZXdUeXBlID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLlZpZXdUeXBlO1xyXG4gICAgICAgICAgaW1hZ2UubGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uID8gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBpZiAodGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm1heEZpbGVTaXplSW5NQilcclxuICAgICAgICAgICAgaW1hZ2UuZmlsZU1heFNpemVJbk1CID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm1heEZpbGVTaXplSW5NQlxyXG4gICAgICAgICAgaW1hZ2UudmFsdWUgPSB0aGlzLnZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8SW1hZ2VVcGxvYWRlckNvbXBvbmVudD4odGhpcy5pdGVtLCBJbWFnZVVwbG9hZGVyQ29tcG9uZW50LCB0aGlzLmdyb3VwLCBpbWFnZSlcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuQ292ZXJQaG90bzpcclxuICAgICAgICAgIGxldCBjb3ZlclBob3RvID0gbmV3IEltYWdlVXBsb2FkT3B0aW9ucygpO1xyXG4gICAgICAgICAgY292ZXJQaG90by5uYW1lID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIHRoaXMuaXRlbU51bWJlci50b1N0cmluZygpICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgY292ZXJQaG90by5oaWRlTGFiZWwgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBjb3ZlclBob3RvLmxhYmVsS2V5ID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBjb3ZlclBob3RvLmlzUmVxdWlyZWQgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuSXNSZXF1aXJlZDtcclxuICAgICAgICAgIGNvdmVyUGhvdG8udmlld1R5cGUgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBjb3ZlclBob3RvLmxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgaWYgKHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5tYXhGaWxlU2l6ZUluTUIpXHJcbiAgICAgICAgICAgIGNvdmVyUGhvdG8uZmlsZU1heFNpemVJbk1CID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm1heEZpbGVTaXplSW5NQlxyXG4gICAgICAgICAgY292ZXJQaG90by52YWx1ZSA9IHRoaXMudmFsdWU7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxJbWFnZVVwbG9hZGVyQ29tcG9uZW50Pih0aGlzLml0ZW0sIEltYWdlVXBsb2FkZXJDb21wb25lbnQsIHRoaXMuZ3JvdXAsIGNvdmVyUGhvdG8pXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICAvL01vYmlsZVxyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuTW9iaWxlOlxyXG4gICAgICAgICAgbGV0IG1vYmlsZSA9IG5ldyBQaG9uZU9wdGlvbnMoKTtcclxuICAgICAgICAgIG1vYmlsZS5uYW1lID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIHRoaXMuaXRlbU51bWJlci50b1N0cmluZygpICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgbW9iaWxlLmhpZGVMYWJlbCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5IaWRlTGFiZWxcclxuICAgICAgICAgIG1vYmlsZS5sYWJlbEtleSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5MYWJlbEtleVxyXG4gICAgICAgICAgbW9iaWxlLmlzUmVxdWlyZWQgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuSXNSZXF1aXJlZDtcclxuICAgICAgICAgIG1vYmlsZS52aWV3VHlwZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5WaWV3VHlwZTtcclxuICAgICAgICAgIG1vYmlsZS5sYWJlbERlc2NyaXB0aW9uID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgIG1vYmlsZS5hbGxvd1NlYXJjaCA9IHRydWU7XHJcbiAgICAgICAgICBtb2JpbGUucGhvbmVWYWxpZGF0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIG1vYmlsZS5zZWxlY3RGaXJzdENvdW50cnkgPSB0cnVlO1xyXG4gICAgICAgICAgbW9iaWxlLmVuYWJsZVBsYWNlaG9sZGVyID0gdHJ1ZVxyXG4gICAgICAgICAgbW9iaWxlLnZhbHVlID0gdGhpcy52YWx1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PFBob25lQ29tcG9uZW50Pih0aGlzLml0ZW0sIFBob25lQ29tcG9uZW50LCB0aGlzLmdyb3VwLCBtb2JpbGUpXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICAvL011bHRpbGluZVRleHRcclxuICAgICAgICBjYXNlIERhdGFUeXBlLk11bHRpbGluZVRleHQ6XHJcbiAgICAgICAgICBsZXQgbXVsdGlsaW5lVGV4dCA9IG5ldyBUZXh0QXJlYU9wdGlvbnMoKTtcclxuICAgICAgICAgIG11bHRpbGluZVRleHQubmFtZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5OYW1lICsgXCIuXCIgKyB0aGlzLml0ZW1OdW1iZXIudG9TdHJpbmcoKSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgIG11bHRpbGluZVRleHQuaGlkZUxhYmVsID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLkhpZGVMYWJlbFxyXG4gICAgICAgICAgbXVsdGlsaW5lVGV4dC5sYWJlbEtleSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5MYWJlbEtleVxyXG4gICAgICAgICAgbXVsdGlsaW5lVGV4dC5pc1JlcXVpcmVkID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLklzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBtdWx0aWxpbmVUZXh0LnZpZXdUeXBlID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLlZpZXdUeXBlO1xyXG4gICAgICAgICAgbXVsdGlsaW5lVGV4dC5sYWJlbERlc2NyaXB0aW9uID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgIGlmICh0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubWF4TGVuZ3RoKVxyXG4gICAgICAgICAgICBtdWx0aWxpbmVUZXh0Lm1heExlbmd0aCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5tYXhMZW5ndGhcclxuICAgICAgICAgIGlmICh0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubWluTGVuZ3RoKVxyXG4gICAgICAgICAgICBtdWx0aWxpbmVUZXh0Lm1pbkxlbmd0aCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5taW5MZW5ndGhcclxuICAgICAgICAgIG11bHRpbGluZVRleHQucm93cyA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5yb3dzO1xyXG4gICAgICAgICAgbXVsdGlsaW5lVGV4dC5mb3JjZURpcmVjdGlvbiA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5Gb3JjZURpcmVjdGlvblxyXG4gICAgICAgICAgbXVsdGlsaW5lVGV4dC52YWx1ZSA9IHRoaXMudmFsdWU7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxUZXh0QXJlYUNvbXBvbmVudD4odGhpcy5pdGVtLCBUZXh0QXJlYUNvbXBvbmVudCwgdGhpcy5ncm91cCwgbXVsdGlsaW5lVGV4dClcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIC8vSFRNTFxyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuSFRNTDpcclxuICAgICAgICAgIGxldCBIVE1MID0gbmV3IEh0bWxFZGl0b3JPcHRpb25zKCk7XHJcbiAgICAgICAgICBIVE1MLm5hbWUgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuTmFtZSArIFwiLlwiICsgdGhpcy5pdGVtTnVtYmVyLnRvU3RyaW5nKCkgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBIVE1MLmhpZGVMYWJlbCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5IaWRlTGFiZWxcclxuICAgICAgICAgIEhUTUwubGFiZWxLZXkgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuTGFiZWxLZXlcclxuICAgICAgICAgIEhUTUwuaXNSZXF1aXJlZCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5Jc1JlcXVpcmVkO1xyXG4gICAgICAgICAgSFRNTC52aWV3VHlwZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5WaWV3VHlwZTtcclxuICAgICAgICAgIEhUTUwubGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uID8gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBpZiAodGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm1heExlbmd0aClcclxuICAgICAgICAgICAgSFRNTC5tYXhMZW5ndGggPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubWF4TGVuZ3RoXHJcbiAgICAgICAgICBpZiAodGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm1pbkxlbmd0aClcclxuICAgICAgICAgICAgSFRNTC5taW5MZW5ndGggPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubWluTGVuZ3RoXHJcbiAgICAgICAgICBIVE1MLmhlaWdodCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5yb3dzO1xyXG4gICAgICAgICAgSFRNTC5mb3JjZURpcmVjdGlvbiA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5Gb3JjZURpcmVjdGlvblxyXG4gICAgICAgICAgSFRNTC52YWx1ZSA9IHRoaXMudmFsdWU7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxIdG1sRWRpdG9yQ29tcG9uZW50Pih0aGlzLml0ZW0sIEh0bWxFZGl0b3JDb21wb25lbnQsIHRoaXMuZ3JvdXAsIEhUTUwpXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICAvL0Jvb2xlYW5cclxuICAgICAgICBjYXNlIERhdGFUeXBlLkJvb2xlYW46XHJcbiAgICAgICAgICBsZXQgYm9vbGVhbiA9IG5ldyBUb2dnbGVTbGlkZU9wdGlvbnMoKTtcclxuICAgICAgICAgIGJvb2xlYW4ubmFtZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5uYW1lICsgXCIuXCIgKyB0aGlzLml0ZW1OdW1iZXIudG9TdHJpbmcoKSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgIGJvb2xlYW4uaGlkZUxhYmVsID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmhpZGVMYWJlbFxyXG4gICAgICAgICAgYm9vbGVhbi5sYWJlbEtleSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbEtleVxyXG4gICAgICAgICAgYm9vbGVhbi52aWV3VHlwZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy52aWV3VHlwZTtcclxuICAgICAgICAgIGJvb2xlYW4udmFsdWUgPSB0aGlzLnZhbHVlO1xyXG4gICAgICAgICAgYm9vbGVhbi5sYWJlbERlc2NyaXB0aW9uID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PFRvZ2dsZXNsaWRlQ29tcG9uZW50Pih0aGlzLml0ZW0sIFRvZ2dsZXNsaWRlQ29tcG9uZW50LCB0aGlzLmdyb3VwLCBib29sZWFuKVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgLy9Mb2NhdGlvblxyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuTG9jYXRpb246XHJcbiAgICAgICAgICBsZXQgbG9jYXRpb24gPSBuZXcgTWFwQXV0b0NvbXBsZXRlT3B0aW9ucygpO1xyXG4gICAgICAgICAgbG9jYXRpb24ubmFtZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5uYW1lICsgXCIuXCIgKyB0aGlzLml0ZW1OdW1iZXIudG9TdHJpbmcoKSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgIGxvY2F0aW9uLmhpZGVMYWJlbCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5oaWRlTGFiZWxcclxuICAgICAgICAgIGxvY2F0aW9uLmxhYmVsS2V5ID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsS2V5XHJcbiAgICAgICAgICBsb2NhdGlvbi5pc1JlcXVpcmVkID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmlzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBsb2NhdGlvbi52aWV3VHlwZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy52aWV3VHlwZTtcclxuICAgICAgICAgIGxvY2F0aW9uLnZhbHVlID0gdGhpcy52YWx1ZTtcclxuICAgICAgICAgIGxvY2F0aW9uLmxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8TWFwQXV0b0NvbXBsZXRlQ29tcG9uZW50Pih0aGlzLml0ZW0sIE1hcEF1dG9Db21wbGV0ZUNvbXBvbmVudCwgdGhpcy5ncm91cCwgbG9jYXRpb24pXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH0sIDApO1xyXG4gIH1cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlcy5pdGVtTnVtYmVyKVxyXG4gICAgICBpZiAoY2hhbmdlcy5pdGVtTnVtYmVyLnByZXZpb3VzVmFsdWUpIHtcclxuICAgICAgICBsZXQgbmFtZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5OYW1lICsgXCIuXCIgKyBjaGFuZ2VzLml0ZW1OdW1iZXIucHJldmlvdXNWYWx1ZS50b1N0cmluZygpICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgIGxldCB2YWx1ZSA9IHRoaXMuZ3JvdXAuY29udHJvbHNbbmFtZV0udmFsdWVcclxuICAgICAgICB0aGlzLml0ZW0uY2xlYXIoKVxyXG4gICAgICAgIHRoaXMuZ3JvdXAucmVtb3ZlQ29udHJvbChuYW1lKVxyXG4gICAgICAgIHN3aXRjaCAodGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xUeXBlKSB7XHJcbiAgICAgICAgICAvLy9UZXh0Qm94XHJcbiAgICAgICAgICBjYXNlIERhdGFUeXBlLlRleHQ6XHJcbiAgICAgICAgICAgIGxldCB0ZXh0ID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgICAgIHRleHQubmFtZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5uYW1lICsgXCIuXCIgKyBjaGFuZ2VzLml0ZW1OdW1iZXIuY3VycmVudFZhbHVlICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgICB0ZXh0LmhpZGVMYWJlbCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5oaWRlTGFiZWxcclxuICAgICAgICAgICAgdGV4dC5sYWJlbEtleSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbEtleVxyXG4gICAgICAgICAgICB0ZXh0LmlzUmVxdWlyZWQgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuaXNSZXF1aXJlZDtcclxuICAgICAgICAgICAgdGV4dC52aWV3VHlwZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy52aWV3VHlwZTtcclxuICAgICAgICAgICAgdGV4dC5sYWJlbERlc2NyaXB0aW9uID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgICAgdGV4dC50eXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubWF4TGVuZ3RoKVxyXG4gICAgICAgICAgICAgIHRleHQubWF4TGVuZ3RoID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm1heExlbmd0aFxyXG4gICAgICAgICAgICBpZiAodGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm1pbkxlbmd0aClcclxuICAgICAgICAgICAgICB0ZXh0Lm1pbkxlbmd0aCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5taW5MZW5ndGhcclxuICAgICAgICAgICAgdGV4dC52YWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxUZXh0Ym94Q29tcG9uZW50Pih0aGlzLml0ZW0sIFRleHRib3hDb21wb25lbnQsIHRoaXMuZ3JvdXAsIHRleHQpXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgIGNhc2UgRGF0YVR5cGUuTmFtZTpcclxuICAgICAgICAgICAgbGV0IG5hbWUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICAgICAgbmFtZS5uYW1lID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm5hbWUgKyBcIi5cIiArIGNoYW5nZXMuaXRlbU51bWJlci5jdXJyZW50VmFsdWUgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICAgIG5hbWUuaGlkZUxhYmVsID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmhpZGVMYWJlbFxyXG4gICAgICAgICAgICBuYW1lLmxhYmVsS2V5ID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsS2V5XHJcbiAgICAgICAgICAgIG5hbWUuaXNSZXF1aXJlZCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5pc1JlcXVpcmVkO1xyXG4gICAgICAgICAgICBuYW1lLnZpZXdUeXBlID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLnZpZXdUeXBlO1xyXG4gICAgICAgICAgICBuYW1lLmxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgICBpZiAodGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm1heExlbmd0aClcclxuICAgICAgICAgICAgICBuYW1lLm1heExlbmd0aCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5tYXhMZW5ndGhcclxuICAgICAgICAgICAgaWYgKHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5taW5MZW5ndGgpXHJcbiAgICAgICAgICAgICAgbmFtZS5taW5MZW5ndGggPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubWluTGVuZ3RoXHJcbiAgICAgICAgICAgIG5hbWUudHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICAgICAgICBuYW1lLnZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PFRleHRib3hDb21wb25lbnQ+KHRoaXMuaXRlbSwgVGV4dGJveENvbXBvbmVudCwgdGhpcy5ncm91cCwgbmFtZSlcclxuICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgY2FzZSBEYXRhVHlwZS5FbWFpbDpcclxuICAgICAgICAgICAgbGV0IGVtYWlsID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgICAgIGVtYWlsLm5hbWUgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubmFtZSArIFwiLlwiICsgY2hhbmdlcy5pdGVtTnVtYmVyLmN1cnJlbnRWYWx1ZSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgICAgZW1haWwuaGlkZUxhYmVsID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmhpZGVMYWJlbFxyXG4gICAgICAgICAgICBlbWFpbC5sYWJlbEtleSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbEtleVxyXG4gICAgICAgICAgICBlbWFpbC5pc1JlcXVpcmVkID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmlzUmVxdWlyZWQ7XHJcbiAgICAgICAgICAgIGVtYWlsLnZpZXdUeXBlID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLnZpZXdUeXBlO1xyXG4gICAgICAgICAgICBlbWFpbC5sYWJlbERlc2NyaXB0aW9uID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgICAgZW1haWwudHlwZSA9IElucHV0VHlwZS5FbWFpbDtcclxuICAgICAgICAgICAgZW1haWwudmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8VGV4dGJveENvbXBvbmVudD4odGhpcy5pdGVtLCBUZXh0Ym94Q29tcG9uZW50LCB0aGlzLmdyb3VwLCBlbWFpbClcclxuICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgY2FzZSBEYXRhVHlwZS5OdW1iZXI6XHJcbiAgICAgICAgICAgIGxldCBudW1iZXIgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICAgICAgbnVtYmVyLm5hbWUgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubmFtZSArIFwiLlwiICsgY2hhbmdlcy5pdGVtTnVtYmVyLmN1cnJlbnRWYWx1ZSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgICAgbnVtYmVyLmhpZGVMYWJlbCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5oaWRlTGFiZWxcclxuICAgICAgICAgICAgbnVtYmVyLmxhYmVsS2V5ID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsS2V5XHJcbiAgICAgICAgICAgIG51bWJlci5pc1JlcXVpcmVkID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmlzUmVxdWlyZWQ7XHJcbiAgICAgICAgICAgIG51bWJlci52aWV3VHlwZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy52aWV3VHlwZTtcclxuICAgICAgICAgICAgbnVtYmVyLmxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgICBudW1iZXIudHlwZSA9IElucHV0VHlwZS5OdW1iZXI7XHJcbiAgICAgICAgICAgIGxldCByYW5nZU51bWJlciA9IG5ldyBSYW5nZU51bWJlcigpXHJcbiAgICAgICAgICAgIHJhbmdlTnVtYmVyLnRvID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm1heExlbmd0aFxyXG4gICAgICAgICAgICByYW5nZU51bWJlci5mcm9tID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm1pbkxlbmd0aFxyXG4gICAgICAgICAgICBudW1iZXIubnVtYmVyUmFuZ2UgPSByYW5nZU51bWJlcjtcclxuICAgICAgICAgICAgbnVtYmVyLnZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PFRleHRib3hDb21wb25lbnQ+KHRoaXMuaXRlbSwgVGV4dGJveENvbXBvbmVudCwgdGhpcy5ncm91cCwgbnVtYmVyKVxyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAvLy9EYXRlVGltZVxyXG4gICAgICAgICAgY2FzZSBEYXRhVHlwZS5EYXRlOlxyXG4gICAgICAgICAgICBsZXQgRGF0ZSA9IG5ldyBEYXRlUGlja2VyT3B0aW9ucygpO1xyXG4gICAgICAgICAgICBEYXRlLm5hbWUgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubmFtZSArIFwiLlwiICsgY2hhbmdlcy5pdGVtTnVtYmVyLmN1cnJlbnRWYWx1ZSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgICAgRGF0ZS5oaWRlTGFiZWwgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuaGlkZUxhYmVsXHJcbiAgICAgICAgICAgIERhdGUubGFiZWxLZXkgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxLZXlcclxuICAgICAgICAgICAgRGF0ZS5pc1JlcXVpcmVkID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmlzUmVxdWlyZWQ7XHJcbiAgICAgICAgICAgIERhdGUudmlld1R5cGUgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMudmlld1R5cGU7XHJcbiAgICAgICAgICAgIERhdGUubGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbERlc2NyaXB0aW9uID8gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICAgIERhdGUucGlja2VyVHlwZSA9IFBpY2tlclR5cGUuQ2FsZW5kYXI7XHJcbiAgICAgICAgICAgIERhdGUuc2VsZWN0TW9kZSA9IFNlbGVjdE1vZGUuU2luZ2xlXHJcbiAgICAgICAgICAgIERhdGUuc3RhcnRWaWV3ID0gU3RhcnRWaWV3Lk1vbnRoXHJcbiAgICAgICAgICAgIERhdGUudmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8RGF0ZUlucHV0Q29tcG9uZW50Pih0aGlzLml0ZW0sIERhdGVJbnB1dENvbXBvbmVudCwgdGhpcy5ncm91cCwgRGF0ZSlcclxuICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgY2FzZSBEYXRhVHlwZS5EYXRlVGltZTpcclxuICAgICAgICAgICAgbGV0IGRhdGVUaW1lID0gbmV3IERhdGVQaWNrZXJPcHRpb25zKCk7XHJcbiAgICAgICAgICAgIGRhdGVUaW1lLm5hbWUgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubmFtZSArIFwiLlwiICsgY2hhbmdlcy5pdGVtTnVtYmVyLmN1cnJlbnRWYWx1ZSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgICAgZGF0ZVRpbWUuaGlkZUxhYmVsID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmhpZGVMYWJlbFxyXG4gICAgICAgICAgICBkYXRlVGltZS5sYWJlbEtleSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbEtleVxyXG4gICAgICAgICAgICBkYXRlVGltZS5pc1JlcXVpcmVkID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmlzUmVxdWlyZWQ7XHJcbiAgICAgICAgICAgIGRhdGVUaW1lLnZpZXdUeXBlID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLnZpZXdUeXBlO1xyXG4gICAgICAgICAgICBkYXRlVGltZS5sYWJlbERlc2NyaXB0aW9uID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgICAgZGF0ZVRpbWUucGlja2VyVHlwZSA9IFBpY2tlclR5cGUuQm90aDtcclxuICAgICAgICAgICAgZGF0ZVRpbWUuc2VsZWN0TW9kZSA9IFNlbGVjdE1vZGUuU2luZ2xlXHJcbiAgICAgICAgICAgIGRhdGVUaW1lLnN0YXJ0VmlldyA9IFN0YXJ0Vmlldy5Nb250aFxyXG4gICAgICAgICAgICBkYXRlVGltZS52YWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxEYXRlSW5wdXRDb21wb25lbnQ+KHRoaXMuaXRlbSwgRGF0ZUlucHV0Q29tcG9uZW50LCB0aGlzLmdyb3VwLCBkYXRlVGltZSlcclxuICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgY2FzZSBEYXRhVHlwZS5UaW1lOlxyXG4gICAgICAgICAgICBsZXQgdGltZSA9IG5ldyBEYXRlUGlja2VyT3B0aW9ucygpO1xyXG4gICAgICAgICAgICB0aW1lLm5hbWUgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubmFtZSArIFwiLlwiICsgY2hhbmdlcy5pdGVtTnVtYmVyLmN1cnJlbnRWYWx1ZSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgICAgdGltZS5oaWRlTGFiZWwgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuaGlkZUxhYmVsXHJcbiAgICAgICAgICAgIHRpbWUubGFiZWxLZXkgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxLZXlcclxuICAgICAgICAgICAgdGltZS5pc1JlcXVpcmVkID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmlzUmVxdWlyZWQ7XHJcbiAgICAgICAgICAgIHRpbWUudmlld1R5cGUgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMudmlld1R5cGU7XHJcbiAgICAgICAgICAgIHRpbWUubGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbERlc2NyaXB0aW9uID8gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICAgIHRpbWUucGlja2VyVHlwZSA9IFBpY2tlclR5cGUuVGltZXI7XHJcbiAgICAgICAgICAgIHRpbWUuc2VsZWN0TW9kZSA9IFNlbGVjdE1vZGUuU2luZ2xlXHJcbiAgICAgICAgICAgIHRpbWUuc3RhcnRWaWV3ID0gU3RhcnRWaWV3Lk1vbnRoXHJcbiAgICAgICAgICAgIHRpbWUudmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8RGF0ZUlucHV0Q29tcG9uZW50Pih0aGlzLml0ZW0sIERhdGVJbnB1dENvbXBvbmVudCwgdGhpcy5ncm91cCwgdGltZSlcclxuICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgLy9Ecm9wZG93blxyXG4gICAgICAgICAgY2FzZSBEYXRhVHlwZS5TaW5nbGVTZWxlY3Q6XHJcbiAgICAgICAgICAgIGxldCBzaW5nbGVTZWxlY3QgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICAgIHNpbmdsZVNlbGVjdC5uYW1lID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm5hbWUgKyBcIi5cIiArIGNoYW5nZXMuaXRlbU51bWJlci5jdXJyZW50VmFsdWUgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICAgIHNpbmdsZVNlbGVjdC5oaWRlTGFiZWwgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuaGlkZUxhYmVsXHJcbiAgICAgICAgICAgIHNpbmdsZVNlbGVjdC5sYWJlbEtleSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbEtleVxyXG4gICAgICAgICAgICBzaW5nbGVTZWxlY3QuaXNSZXF1aXJlZCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5pc1JlcXVpcmVkO1xyXG4gICAgICAgICAgICBzaW5nbGVTZWxlY3Qudmlld1R5cGUgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMudmlld1R5cGU7XHJcbiAgICAgICAgICAgIHNpbmdsZVNlbGVjdC5sYWJlbERlc2NyaXB0aW9uID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgICAgc2luZ2xlU2VsZWN0LmRhdGFTb3VyY2UgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuZGF0YVNvdXJjZVxyXG4gICAgICAgICAgICBzaW5nbGVTZWxlY3Quc2luZ2xlU2VsZWN0aW9uID0gdHJ1ZVxyXG4gICAgICAgICAgICBzaW5nbGVTZWxlY3Quc2hvd0NoZWNrYm94ID0gZmFsc2VcclxuICAgICAgICAgICAgc2luZ2xlU2VsZWN0LmFsbG93U2VhcmNoRmlsdGVyID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmhhc1NlYXJjaFxyXG4gICAgICAgICAgICBzaW5nbGVTZWxlY3Quc2VsZWN0ZWRJdGVtcyA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxEcm9wZG93bkxpc3RDb21wb25lbnQ+KHRoaXMuaXRlbSwgRHJvcGRvd25MaXN0Q29tcG9uZW50LCB0aGlzLmdyb3VwLCBzaW5nbGVTZWxlY3QpXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBEYXRhVHlwZS5NdWxpcGxlU2VsZWN0OlxyXG4gICAgICAgICAgICBsZXQgbXVsaXBsZVNlbGVjdCA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgICAgbXVsaXBsZVNlbGVjdC5uYW1lID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm5hbWUgKyBcIi5cIiArIGNoYW5nZXMuaXRlbU51bWJlci5jdXJyZW50VmFsdWUgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICAgIG11bGlwbGVTZWxlY3QuaGlkZUxhYmVsID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmhpZGVMYWJlbFxyXG4gICAgICAgICAgICBtdWxpcGxlU2VsZWN0LmxhYmVsS2V5ID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsS2V5XHJcbiAgICAgICAgICAgIG11bGlwbGVTZWxlY3QuaXNSZXF1aXJlZCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5pc1JlcXVpcmVkO1xyXG4gICAgICAgICAgICBtdWxpcGxlU2VsZWN0LnZpZXdUeXBlID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLnZpZXdUeXBlO1xyXG4gICAgICAgICAgICBtdWxpcGxlU2VsZWN0LmxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgICBtdWxpcGxlU2VsZWN0LmRhdGFTb3VyY2UgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuZGF0YVNvdXJjZVxyXG4gICAgICAgICAgICBtdWxpcGxlU2VsZWN0LnNpbmdsZVNlbGVjdGlvbiA9IGZhbHNlXHJcbiAgICAgICAgICAgIG11bGlwbGVTZWxlY3Quc2hvd0NoZWNrYm94ID0gZmFsc2VcclxuICAgICAgICAgICAgbXVsaXBsZVNlbGVjdC5hbGxvd1NlYXJjaEZpbHRlciA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5oYXNTZWFyY2hcclxuICAgICAgICAgICAgbXVsaXBsZVNlbGVjdC5zZWxlY3RlZEl0ZW1zID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PERyb3Bkb3duTGlzdENvbXBvbmVudD4odGhpcy5pdGVtLCBEcm9wZG93bkxpc3RDb21wb25lbnQsIHRoaXMuZ3JvdXAsIG11bGlwbGVTZWxlY3QpXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBEYXRhVHlwZS5Hb2FsOlxyXG4gICAgICAgICAgICBsZXQgR29hbCA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgICAgR29hbC5uYW1lID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm5hbWUgKyBcIi5cIiArIGNoYW5nZXMuaXRlbU51bWJlci5jdXJyZW50VmFsdWUgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICAgIEdvYWwuaGlkZUxhYmVsID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmhpZGVMYWJlbFxyXG4gICAgICAgICAgICBHb2FsLmxhYmVsS2V5ID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsS2V5XHJcbiAgICAgICAgICAgIEdvYWwuaXNSZXF1aXJlZCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5pc1JlcXVpcmVkO1xyXG4gICAgICAgICAgICBHb2FsLnZpZXdUeXBlID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLnZpZXdUeXBlO1xyXG4gICAgICAgICAgICBHb2FsLmxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgICBHb2FsLmRhdGFTb3VyY2UgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuZGF0YVNvdXJjZVxyXG4gICAgICAgICAgICBHb2FsLnNpbmdsZVNlbGVjdGlvbiA9ICF0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuaXNNdWx0aXBsZVxyXG4gICAgICAgICAgICBHb2FsLnNob3dDaGVja2JveCA9IGZhbHNlXHJcbiAgICAgICAgICAgIEdvYWwuYWxsb3dTZWFyY2hGaWx0ZXIgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuaGFzU2VhcmNoXHJcbiAgICAgICAgICAgIEdvYWwuc2VsZWN0ZWRJdGVtcyA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxEcm9wZG93bkxpc3RDb21wb25lbnQ+KHRoaXMuaXRlbSwgRHJvcGRvd25MaXN0Q29tcG9uZW50LCB0aGlzLmdyb3VwLCBHb2FsKVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgRGF0YVR5cGUuQ2hhbGxlbmdlOlxyXG4gICAgICAgICAgICBsZXQgY2hhbGxlbmdlID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgICBjaGFsbGVuZ2UubmFtZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5uYW1lICsgXCIuXCIgKyBjaGFuZ2VzLml0ZW1OdW1iZXIuY3VycmVudFZhbHVlICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgICBjaGFsbGVuZ2UuaGlkZUxhYmVsID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmhpZGVMYWJlbFxyXG4gICAgICAgICAgICBjaGFsbGVuZ2UubGFiZWxLZXkgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxLZXlcclxuICAgICAgICAgICAgY2hhbGxlbmdlLmlzUmVxdWlyZWQgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuaXNSZXF1aXJlZDtcclxuICAgICAgICAgICAgY2hhbGxlbmdlLnZpZXdUeXBlID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLnZpZXdUeXBlO1xyXG4gICAgICAgICAgICBjaGFsbGVuZ2UubGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbERlc2NyaXB0aW9uID8gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICAgIGNoYWxsZW5nZS5kYXRhU291cmNlID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmRhdGFTb3VyY2VcclxuICAgICAgICAgICAgY2hhbGxlbmdlLmRhdGFTb3VyY2UgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuZGF0YVNvdXJjZVxyXG4gICAgICAgICAgICBjaGFsbGVuZ2Uuc2luZ2xlU2VsZWN0aW9uID0gIXRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5pc011bHRpcGxlXHJcbiAgICAgICAgICAgIGNoYWxsZW5nZS5zaG93Q2hlY2tib3ggPSBmYWxzZVxyXG4gICAgICAgICAgICBjaGFsbGVuZ2UuYWxsb3dTZWFyY2hGaWx0ZXIgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuaGFzU2VhcmNoXHJcbiAgICAgICAgICAgIGNoYWxsZW5nZS5zZWxlY3RlZEl0ZW1zID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PERyb3Bkb3duTGlzdENvbXBvbmVudD4odGhpcy5pdGVtLCBEcm9wZG93bkxpc3RDb21wb25lbnQsIHRoaXMuZ3JvdXAsIGNoYWxsZW5nZSlcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIERhdGFUeXBlLklubm92YXRpb25MYWI6XHJcbiAgICAgICAgICAgIGxldCBpbm5vdmF0aW9uTGFiID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgICBpbm5vdmF0aW9uTGFiLm5hbWUgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubmFtZSArIFwiLlwiICsgY2hhbmdlcy5pdGVtTnVtYmVyLmN1cnJlbnRWYWx1ZSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgICAgaW5ub3ZhdGlvbkxhYi5oaWRlTGFiZWwgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuaGlkZUxhYmVsXHJcbiAgICAgICAgICAgIGlubm92YXRpb25MYWIubGFiZWxLZXkgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxLZXlcclxuICAgICAgICAgICAgaW5ub3ZhdGlvbkxhYi5pc1JlcXVpcmVkID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmlzUmVxdWlyZWQ7XHJcbiAgICAgICAgICAgIGlubm92YXRpb25MYWIudmlld1R5cGUgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMudmlld1R5cGU7XHJcbiAgICAgICAgICAgIGlubm92YXRpb25MYWIubGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbERlc2NyaXB0aW9uID8gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICAgIGlubm92YXRpb25MYWIuZGF0YVNvdXJjZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5kYXRhU291cmNlXHJcbiAgICAgICAgICAgIGlubm92YXRpb25MYWIuc2luZ2xlU2VsZWN0aW9uID0gIXRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5pc011bHRpcGxlXHJcbiAgICAgICAgICAgIGlubm92YXRpb25MYWIuc2hvd0NoZWNrYm94ID0gZmFsc2VcclxuICAgICAgICAgICAgaW5ub3ZhdGlvbkxhYi5hbGxvd1NlYXJjaEZpbHRlciA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5oYXNTZWFyY2hcclxuICAgICAgICAgICAgaW5ub3ZhdGlvbkxhYi5zZWxlY3RlZEl0ZW1zID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PERyb3Bkb3duTGlzdENvbXBvbmVudD4odGhpcy5pdGVtLCBEcm9wZG93bkxpc3RDb21wb25lbnQsIHRoaXMuZ3JvdXAsIGlubm92YXRpb25MYWIpXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBEYXRhVHlwZS5Db3VudHJ5OlxyXG4gICAgICAgICAgICBsZXQgY291bnRyeSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgICAgY291bnRyeS5uYW1lID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm5hbWUgKyBcIi5cIiArIGNoYW5nZXMuaXRlbU51bWJlci5jdXJyZW50VmFsdWUgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICAgIGNvdW50cnkuaGlkZUxhYmVsID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmhpZGVMYWJlbFxyXG4gICAgICAgICAgICBjb3VudHJ5LmxhYmVsS2V5ID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsS2V5XHJcbiAgICAgICAgICAgIGNvdW50cnkuaXNSZXF1aXJlZCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5pc1JlcXVpcmVkO1xyXG4gICAgICAgICAgICBjb3VudHJ5LnZpZXdUeXBlID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLnZpZXdUeXBlO1xyXG4gICAgICAgICAgICBjb3VudHJ5LmxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgICBjb3VudHJ5LmRhdGFTb3VyY2UgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuZGF0YVNvdXJjZVxyXG4gICAgICAgICAgICBjb3VudHJ5LnNpbmdsZVNlbGVjdGlvbiA9ICF0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuaXNNdWx0aXBsZVxyXG4gICAgICAgICAgICBjb3VudHJ5LnNob3dDaGVja2JveCA9IGZhbHNlXHJcbiAgICAgICAgICAgIGNvdW50cnkuYWxsb3dTZWFyY2hGaWx0ZXIgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuaGFzU2VhcmNoXHJcbiAgICAgICAgICAgIGNvdW50cnkuc2VsZWN0ZWRJdGVtcyA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxEcm9wZG93bkxpc3RDb21wb25lbnQ+KHRoaXMuaXRlbSwgRHJvcGRvd25MaXN0Q29tcG9uZW50LCB0aGlzLmdyb3VwLCBjb3VudHJ5KVxyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAvL0ZpbGVVcGxvYWRcclxuICAgICAgICAgIGNhc2UgRGF0YVR5cGUuRmlsZTpcclxuICAgICAgICAgICAgbGV0IGZpbGUgPSBuZXcgRmlsZVVwbG9hZE9wdGlvbnMoKTtcclxuICAgICAgICAgICAgZmlsZS5uYW1lID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm5hbWUgKyBcIi5cIiArIGNoYW5nZXMuaXRlbU51bWJlci5jdXJyZW50VmFsdWUgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICAgIGZpbGUuaGlkZUxhYmVsID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmhpZGVMYWJlbFxyXG4gICAgICAgICAgICBmaWxlLmxhYmVsS2V5ID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsS2V5XHJcbiAgICAgICAgICAgIGZpbGUuaXNSZXF1aXJlZCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5pc1JlcXVpcmVkO1xyXG4gICAgICAgICAgICBmaWxlLnZpZXdUeXBlID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLnZpZXdUeXBlO1xyXG4gICAgICAgICAgICBmaWxlLmxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgICBmaWxlLmZpbGVNYXhTaXplSW5NQiA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5tYXhGaWxlU2l6ZUluTUJcclxuICAgICAgICAgICAgZmlsZS52YWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxGaWxlVXBsb2FkQ29tcG9uZW50Pih0aGlzLml0ZW0sIEZpbGVVcGxvYWRDb21wb25lbnQsIHRoaXMuZ3JvdXAsIGZpbGUpXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBEYXRhVHlwZS5NdWx0aUZpbGU6XHJcbiAgICAgICAgICAgIGxldCBtdWx0aUZpbGUgPSBuZXcgRmlsZVVwbG9hZE9wdGlvbnMoKTtcclxuICAgICAgICAgICAgZmlsZS5uYW1lID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm5hbWUgKyBcIi5cIiArIGNoYW5nZXMuaXRlbU51bWJlci5jdXJyZW50VmFsdWUgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICAgIGZpbGUuaGlkZUxhYmVsID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmhpZGVMYWJlbFxyXG4gICAgICAgICAgICBmaWxlLmxhYmVsS2V5ID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsS2V5XHJcbiAgICAgICAgICAgIGZpbGUuaXNSZXF1aXJlZCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5pc1JlcXVpcmVkO1xyXG4gICAgICAgICAgICBmaWxlLnZpZXdUeXBlID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLnZpZXdUeXBlO1xyXG4gICAgICAgICAgICBmaWxlLmxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgICBtdWx0aUZpbGUubWF4U2l6ZUZvckFsbEZpbGVzSW5NQiA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5tYXhGaWxlU2l6ZUluTUJcclxuICAgICAgICAgICAgbXVsdGlGaWxlLm1heE5vT2ZGaWxlcyA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5tYXhGaWxlQ291bnRcclxuICAgICAgICAgICAgbXVsdGlGaWxlLmlzTXVsdGlwbGVGaWxlID0gdHJ1ZTtcclxuICAgICAgICAgICAgbXVsdGlGaWxlLnZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PEZpbGVVcGxvYWRDb21wb25lbnQ+KHRoaXMuaXRlbSwgRmlsZVVwbG9hZENvbXBvbmVudCwgdGhpcy5ncm91cCwgbXVsdGlGaWxlKVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIC8vSW1hZ2VVcGxvYWRcclxuICAgICAgICAgIGNhc2UgRGF0YVR5cGUuSW1hZ2U6XHJcbiAgICAgICAgICAgIGxldCBpbWFnZSA9IG5ldyBJbWFnZVVwbG9hZE9wdGlvbnMoKTtcclxuICAgICAgICAgICAgaW1hZ2UubmFtZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5uYW1lICsgXCIuXCIgKyBjaGFuZ2VzLml0ZW1OdW1iZXIuY3VycmVudFZhbHVlICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgICBpbWFnZS5oaWRlTGFiZWwgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuaGlkZUxhYmVsXHJcbiAgICAgICAgICAgIGltYWdlLmxhYmVsS2V5ID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsS2V5XHJcbiAgICAgICAgICAgIGltYWdlLmlzUmVxdWlyZWQgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuaXNSZXF1aXJlZDtcclxuICAgICAgICAgICAgaW1hZ2Uudmlld1R5cGUgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMudmlld1R5cGU7XHJcbiAgICAgICAgICAgIGltYWdlLmxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgICBpZiAodGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm1heEZpbGVTaXplSW5NQilcclxuICAgICAgICAgICAgICBpbWFnZS5maWxlTWF4U2l6ZUluTUIgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubWF4RmlsZVNpemVJbk1CXHJcbiAgICAgICAgICAgIGltYWdlLnZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PEltYWdlVXBsb2FkZXJDb21wb25lbnQ+KHRoaXMuaXRlbSwgSW1hZ2VVcGxvYWRlckNvbXBvbmVudCwgdGhpcy5ncm91cCwgaW1hZ2UpXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBEYXRhVHlwZS5Db3ZlclBob3RvOlxyXG4gICAgICAgICAgICBsZXQgY292ZXJQaG90byA9IG5ldyBJbWFnZVVwbG9hZE9wdGlvbnMoKTtcclxuICAgICAgICAgICAgY292ZXJQaG90by5uYW1lID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm5hbWUgKyBcIi5cIiArIGNoYW5nZXMuaXRlbU51bWJlci5jdXJyZW50VmFsdWUgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICAgIGNvdmVyUGhvdG8uaGlkZUxhYmVsID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmhpZGVMYWJlbFxyXG4gICAgICAgICAgICBjb3ZlclBob3RvLmxhYmVsS2V5ID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsS2V5XHJcbiAgICAgICAgICAgIGNvdmVyUGhvdG8uaXNSZXF1aXJlZCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5pc1JlcXVpcmVkO1xyXG4gICAgICAgICAgICBjb3ZlclBob3RvLnZpZXdUeXBlID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLnZpZXdUeXBlO1xyXG4gICAgICAgICAgICBjb3ZlclBob3RvLmxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgICBpZiAodGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm1heEZpbGVTaXplSW5NQilcclxuICAgICAgICAgICAgICBjb3ZlclBob3RvLmZpbGVNYXhTaXplSW5NQiA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5tYXhGaWxlU2l6ZUluTUJcclxuICAgICAgICAgICAgY292ZXJQaG90by52YWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxJbWFnZVVwbG9hZGVyQ29tcG9uZW50Pih0aGlzLml0ZW0sIEltYWdlVXBsb2FkZXJDb21wb25lbnQsIHRoaXMuZ3JvdXAsIGNvdmVyUGhvdG8pXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgLy9Nb2JpbGVcclxuICAgICAgICAgIGNhc2UgRGF0YVR5cGUuTW9iaWxlOlxyXG4gICAgICAgICAgICBsZXQgbW9iaWxlID0gbmV3IFBob25lT3B0aW9ucygpO1xyXG4gICAgICAgICAgICBtb2JpbGUubmFtZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5uYW1lICsgXCIuXCIgKyBjaGFuZ2VzLml0ZW1OdW1iZXIuY3VycmVudFZhbHVlICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgICBtb2JpbGUuaGlkZUxhYmVsID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmhpZGVMYWJlbFxyXG4gICAgICAgICAgICBtb2JpbGUubGFiZWxLZXkgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxLZXlcclxuICAgICAgICAgICAgbW9iaWxlLmlzUmVxdWlyZWQgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuaXNSZXF1aXJlZDtcclxuICAgICAgICAgICAgbW9iaWxlLnZpZXdUeXBlID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLnZpZXdUeXBlO1xyXG4gICAgICAgICAgICBtb2JpbGUubGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbERlc2NyaXB0aW9uID8gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICAgIG1vYmlsZS5hbGxvd1NlYXJjaCA9IHRydWU7XHJcbiAgICAgICAgICAgIG1vYmlsZS5waG9uZVZhbGlkYXRpb24gPSB0cnVlO1xyXG4gICAgICAgICAgICBtb2JpbGUuc2VsZWN0Rmlyc3RDb3VudHJ5ID0gdHJ1ZTtcclxuICAgICAgICAgICAgbW9iaWxlLmVuYWJsZVBsYWNlaG9sZGVyID0gdHJ1ZVxyXG4gICAgICAgICAgICBtb2JpbGUudmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8UGhvbmVDb21wb25lbnQ+KHRoaXMuaXRlbSwgUGhvbmVDb21wb25lbnQsIHRoaXMuZ3JvdXAsIG1vYmlsZSlcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAvL011bHRpbGluZVRleHRcclxuICAgICAgICAgIGNhc2UgRGF0YVR5cGUuTXVsdGlsaW5lVGV4dDpcclxuICAgICAgICAgICAgbGV0IG11bHRpbGluZVRleHQgPSBuZXcgVGV4dEFyZWFPcHRpb25zKCk7XHJcbiAgICAgICAgICAgIG11bHRpbGluZVRleHQubmFtZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5uYW1lICsgXCIuXCIgKyBjaGFuZ2VzLml0ZW1OdW1iZXIuY3VycmVudFZhbHVlICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgICBtdWx0aWxpbmVUZXh0LmhpZGVMYWJlbCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5oaWRlTGFiZWxcclxuICAgICAgICAgICAgbXVsdGlsaW5lVGV4dC5sYWJlbEtleSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5MYWJlbEtleVxyXG4gICAgICAgICAgICBtdWx0aWxpbmVUZXh0LmlzUmVxdWlyZWQgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuaXNSZXF1aXJlZDtcclxuICAgICAgICAgICAgbXVsdGlsaW5lVGV4dC52aWV3VHlwZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy52aWV3VHlwZTtcclxuICAgICAgICAgICAgbXVsdGlsaW5lVGV4dC5sYWJlbERlc2NyaXB0aW9uID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgICAgaWYgKHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5tYXhMZW5ndGgpXHJcbiAgICAgICAgICAgICAgbXVsdGlsaW5lVGV4dC5tYXhMZW5ndGggPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubWF4TGVuZ3RoXHJcbiAgICAgICAgICAgIGlmICh0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubWluTGVuZ3RoKVxyXG4gICAgICAgICAgICAgIG11bHRpbGluZVRleHQubWluTGVuZ3RoID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm1pbkxlbmd0aFxyXG4gICAgICAgICAgICBtdWx0aWxpbmVUZXh0LnJvd3MgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMucm93cztcclxuICAgICAgICAgICAgbXVsdGlsaW5lVGV4dC5mb3JjZURpcmVjdGlvbiA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5Gb3JjZURpcmVjdGlvblxyXG4gICAgICAgICAgICBtdWx0aWxpbmVUZXh0LnZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PFRleHRBcmVhQ29tcG9uZW50Pih0aGlzLml0ZW0sIFRleHRBcmVhQ29tcG9uZW50LCB0aGlzLmdyb3VwLCBtdWx0aWxpbmVUZXh0KVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIC8vSFRNTFxyXG4gICAgICAgICAgY2FzZSBEYXRhVHlwZS5IVE1MOlxyXG4gICAgICAgICAgICBsZXQgSFRNTCA9IG5ldyBIdG1sRWRpdG9yT3B0aW9ucygpO1xyXG4gICAgICAgICAgICBIVE1MLm5hbWUgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubmFtZSArIFwiLlwiICsgY2hhbmdlcy5pdGVtTnVtYmVyLmN1cnJlbnRWYWx1ZSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgICAgSFRNTC5oaWRlTGFiZWwgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuaGlkZUxhYmVsXHJcbiAgICAgICAgICAgIEhUTUwubGFiZWxLZXkgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxLZXlcclxuICAgICAgICAgICAgSFRNTC5pc1JlcXVpcmVkID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmlzUmVxdWlyZWQ7XHJcbiAgICAgICAgICAgIEhUTUwudmlld1R5cGUgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMudmlld1R5cGU7XHJcbiAgICAgICAgICAgIEhUTUwubGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbERlc2NyaXB0aW9uID8gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICAgIGlmICh0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubWF4TGVuZ3RoKVxyXG4gICAgICAgICAgICAgIEhUTUwubWF4TGVuZ3RoID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm1heExlbmd0aFxyXG4gICAgICAgICAgICBpZiAodGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm1pbkxlbmd0aClcclxuICAgICAgICAgICAgICBIVE1MLm1pbkxlbmd0aCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5taW5MZW5ndGhcclxuICAgICAgICAgICAgSFRNTC5oZWlnaHQgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMucm93cztcclxuICAgICAgICAgICAgSFRNTC5mb3JjZURpcmVjdGlvbiA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5Gb3JjZURpcmVjdGlvblxyXG4gICAgICAgICAgICBIVE1MLnZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PEh0bWxFZGl0b3JDb21wb25lbnQ+KHRoaXMuaXRlbSwgSHRtbEVkaXRvckNvbXBvbmVudCwgdGhpcy5ncm91cCwgSFRNTClcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAvL0Jvb2xlYW5cclxuICAgICAgICAgIGNhc2UgRGF0YVR5cGUuQm9vbGVhbjpcclxuICAgICAgICAgICAgbGV0IGJvb2xlYW4gPSBuZXcgVG9nZ2xlU2xpZGVPcHRpb25zKCk7XHJcbiAgICAgICAgICAgIGJvb2xlYW4ubmFtZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5uYW1lICsgXCIuXCIgKyBjaGFuZ2VzLml0ZW1OdW1iZXIuY3VycmVudFZhbHVlICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgICBib29sZWFuLmhpZGVMYWJlbCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5oaWRlTGFiZWxcclxuICAgICAgICAgICAgYm9vbGVhbi5sYWJlbEtleSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbEtleVxyXG4gICAgICAgICAgICBib29sZWFuLnZpZXdUeXBlID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLnZpZXdUeXBlO1xyXG4gICAgICAgICAgICBib29sZWFuLmxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgICBib29sZWFuLnZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PFRvZ2dsZXNsaWRlQ29tcG9uZW50Pih0aGlzLml0ZW0sIFRvZ2dsZXNsaWRlQ29tcG9uZW50LCB0aGlzLmdyb3VwLCBib29sZWFuKVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIC8vTG9jYXRpb25cclxuICAgICAgICAgIGNhc2UgRGF0YVR5cGUuTG9jYXRpb246XHJcbiAgICAgICAgICAgIGxldCBMb2NhdGlvbiA9IG5ldyBNYXBBdXRvQ29tcGxldGVPcHRpb25zKCk7XHJcbiAgICAgICAgICAgIExvY2F0aW9uLm5hbWUgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubmFtZSArIFwiLlwiICsgY2hhbmdlcy5pdGVtTnVtYmVyLmN1cnJlbnRWYWx1ZSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgICAgTG9jYXRpb24uaGlkZUxhYmVsID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmhpZGVMYWJlbFxyXG4gICAgICAgICAgICBMb2NhdGlvbi5sYWJlbEtleSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbEtleVxyXG4gICAgICAgICAgICBMb2NhdGlvbi5pc1JlcXVpcmVkID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmlzUmVxdWlyZWQ7XHJcbiAgICAgICAgICAgIExvY2F0aW9uLnZpZXdUeXBlID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLnZpZXdUeXBlO1xyXG4gICAgICAgICAgICBMb2NhdGlvbi5sYWJlbERlc2NyaXB0aW9uID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgICAgTG9jYXRpb24udmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8TWFwQXV0b0NvbXBsZXRlQ29tcG9uZW50Pih0aGlzLml0ZW0sIE1hcEF1dG9Db21wbGV0ZUNvbXBvbmVudCwgdGhpcy5ncm91cCwgTG9jYXRpb24pXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfVxyXG5cclxuICB9XHJcblxyXG59XHJcbiIsIjxuZy1jb250YWluZXIgI0l0ZW0+PC9uZy1jb250YWluZXI+XHJcbiJdfQ==
798
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwZWF0ZXItZmllbGQtYnVpbGRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWNvbnRyb2xzL3NyYy9saWIvY29udHJvbHMvUmVwZWF0ZXIvcmVwZWF0ZXItZmllbGQtYnVpbGRlci9yZXBlYXRlci1maWVsZC1idWlsZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9jb250cm9scy9SZXBlYXRlci9yZXBlYXRlci1maWVsZC1idWlsZGVyL3JlcGVhdGVyLWZpZWxkLWJ1aWxkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsS0FBSyxFQUF5QixTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFcEgsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM1RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDOUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzlELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM1RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDekUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDL0UsT0FBTyxFQUFF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Q0FBQzt3QkFDdkIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLHNCQUFzQixDQUFvQixJQUFJLENBQUMsSUFBSSxFQUFFLGlCQUFpQixFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7d0JBQzFILE1BQU07b0JBQ1IsWUFBWTtvQkFFWjt3QkFDRSxNQUFNO2lCQUNUO2FBRUY7SUFFTCxDQUFDOzhHQWh4QlUsNkJBQTZCO2tHQUE3Qiw2QkFBNkIsdVJBRWIsZ0JBQWdCLGtEQ3hDN0MseUNBQ0E7OzJGRHFDYSw2QkFBNkI7a0JBSnpDLFNBQVM7K0JBQ0Usd0JBQXdCOzRIQUthLElBQUk7c0JBQWxELFNBQVM7dUJBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFO2dCQUNwQyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCwgRm9ybUdyb3VwRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBEYXRhVHlwZSB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9FbnVtcy9FbnVtcyc7XHJcbmltcG9ydCB7IElucHV0VHlwZSB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9FbnVtcy9JbnB1dFR5cGUnO1xyXG5pbXBvcnQgeyBQaWNrZXJUeXBlIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL0VudW1zL1BpY2tlclR5cGUnO1xyXG5pbXBvcnQgeyBTZWxlY3RNb2RlIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL0VudW1zL1NlbGVjdE1vZGUnO1xyXG5pbXBvcnQgeyBTdGFydFZpZXcgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvRW51bXMvU3RhcnRWaWV3JztcclxuaW1wb3J0IHsgRGF0ZVBpY2tlck9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvTW9kZWxzL0RhdGVQaWNrZXJPcHRpb25zJztcclxuaW1wb3J0IHsgRHJvcGRvd25PcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL01vZGVscy9Ecm9wZG93bk9wdGlvbnMnO1xyXG5pbXBvcnQgeyBGaWxlVXBsb2FkT3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9Nb2RlbHMvRmlsZVVwbG9hZE9wdGlvbnMnO1xyXG5pbXBvcnQgeyBIdG1sRWRpdG9yT3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9Nb2RlbHMvSHRtbEVkaXRvck9wdGlvbnMnO1xyXG5pbXBvcnQgeyBJbWFnZVVwbG9hZE9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvTW9kZWxzL0ltYWdlVXBsb2FkT3B0aW9ucyc7XHJcbmltcG9ydCB7IE1hcEF1dG9Db21wbGV0ZU9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvTW9kZWxzL01hcEF1dG9Db21wbGV0ZU9wdGlvbnMnO1xyXG5pbXBvcnQgeyBQaG9uZU9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvTW9kZWxzL1Bob25lT3B0aW9ucyc7XHJcbmltcG9ydCB7IFJhbmdlTnVtYmVyIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL01vZGVscy9SYW5nZU51bWJlcic7XHJcbmltcG9ydCB7IFJlcGVhdGVyRmllbGQgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvTW9kZWxzL1JlcGVhdGVyRmllbGQnO1xyXG5pbXBvcnQgeyBUZXh0QXJlYU9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvTW9kZWxzL1RleHRBcmVhT3B0aW9ucyc7XHJcbmltcG9ydCB7IFRleHRCb3hPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL01vZGVscy9UZXh0Qm94T3B0aW9ucyc7XHJcbmltcG9ydCB7IFRvZ2dsZVNsaWRlT3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9Nb2RlbHMvVG9nZ2xlU2xpZGVPcHRpb25zJztcclxuaW1wb3J0IHsgUmVuZGVyQ29tcG9uZW50U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9zZXJ2aWNlcy9yZW5kZXItY29tcG9uZW50LXNlcnZpY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IERhdGVJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL0RhdGVUaW1lUGlja2VyL0RhdGVUaW1lUGlja2VyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERyb3Bkb3duTGlzdENvbXBvbmVudCB9IGZyb20gJy4uLy4uL0Ryb3Bkb3duTGlzdC9Ecm9wZG93bkxpc3QuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRmlsZVVwbG9hZENvbXBvbmVudCB9IGZyb20gJy4uLy4uL0ZpbGVVcGxhb2QvRmlsZVVwbGFvZC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBIdG1sRWRpdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vSHRtbEVkaXRvci9IdG1sRWRpdG9yLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEltYWdlVXBsb2FkZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9JbWFnZVVwbG9hZC9JbWFnZVVwbG9hZC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBNYXBBdXRvQ29tcGxldGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi9NYXBBdXRvQ29tcGxldGUvTWFwQXV0b0NvbXBsZXRlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFBob25lQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vUGhvbmUvUGhvbmUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVGV4dEFyZWFDb21wb25lbnQgfSBmcm9tICcuLi8uLi9UZXh0QXJlYS9UZXh0QXJlYS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUZXh0Ym94Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vVGV4dEJveC9UZXh0Qm94LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRvZ2dsZXNsaWRlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vVG9nZ2xlc2xpZGUvVG9nZ2xlc2xpZGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ2hlY2tCb3hPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL01vZGVscy9DaGVja0JveE9wdGlvbnMnO1xyXG5pbXBvcnQgeyBDaGVja0JveENvbXBvbmVudCB9IGZyb20gJy4uLy4uL0NoZWNrQm94L0NoZWNrQm94LmNvbXBvbmVudCc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdyZXBlYXRlci1maWVsZC1idWlsZGVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcmVwZWF0ZXItZmllbGQtYnVpbGRlci5jb21wb25lbnQuaHRtbCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZXBlYXRlckZpZWxkQnVpbGRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XHJcblxyXG4gIEBWaWV3Q2hpbGQoXCJJdGVtXCIsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KSBpdGVtOiBWaWV3Q29udGFpbmVyUmVmO1xyXG4gIEBJbnB1dCgpIGdyb3VwOiBGb3JtR3JvdXA7XHJcbiAgQElucHV0KCkgaXRlbU51bWJlcjogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIGNvbnRyb2xOdW1iZXI6IG51bWJlcjtcclxuICBASW5wdXQoKSByZXBlYXRlckZpZWxkOiBSZXBlYXRlckZpZWxkO1xyXG4gIEBJbnB1dCgpIGl0ZW1zVmFsdWU6IGFueVtdID0gW107XHJcbiAgaXRlbVZhbHVlOiBhbnkgPSBudWxsO1xyXG4gIHZhbHVlOiBhbnk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVuZGVyQ29tcG9uZW50U2VydmljZTogUmVuZGVyQ29tcG9uZW50U2VydmljZSwgcHVibGljIHRleHRDb250cm9sSG9zdDogRm9ybUdyb3VwRGlyZWN0aXZlKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcblxyXG4gIH1cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgaWYgKHRoaXMuaXRlbXNWYWx1ZS5sZW5ndGggPiAwKVxyXG4gICAgICAgIHRoaXMuaXRlbVZhbHVlID0gdGhpcy5pdGVtc1ZhbHVlW3RoaXMuaXRlbU51bWJlcl07XHJcbiAgICAgIGlmICh0aGlzLml0ZW1WYWx1ZSkge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuaXRlbVZhbHVlKSB7XHJcbiAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuaXRlbVZhbHVlLCBrZXkpICYmIGtleSA9PSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubmFtZSkge1xyXG4gICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5pdGVtVmFsdWVba2V5XTtcclxuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IGVsZW1lbnQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuaXRlbS5jbGVhcigpO1xyXG4gICAgICBzd2l0Y2ggKHRoaXMucmVwZWF0ZXJGaWVsZD8uY29udHJvbFR5cGUpIHtcclxuICAgICAgICAvLyNyZWdpb24gVGV4dEJveFxyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuVGV4dDpcclxuICAgICAgICAgIGxldCBUZXh0ID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgICBUZXh0Lm5hbWUgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubmFtZSArIFwiLlwiICsgdGhpcy5pdGVtTnVtYmVyLnRvU3RyaW5nKCkgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpO1xyXG4gICAgICAgICAgVGV4dC5oaWRlTGFiZWwgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuaGlkZUxhYmVsO1xyXG4gICAgICAgICAgVGV4dC5sYWJlbEtleSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbEtleTtcclxuICAgICAgICAgIFRleHQuaXNSZXF1aXJlZCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5pc1JlcXVpcmVkO1xyXG4gICAgICAgICAgVGV4dC52aWV3VHlwZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy52aWV3VHlwZTtcclxuICAgICAgICAgIFRleHQubGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbERlc2NyaXB0aW9uID8gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsRGVzY3JpcHRpb24gOiBcIlwiO1xyXG4gICAgICAgICAgVGV4dC50eXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgICAgICBUZXh0Lmxhbmd1YWdlVmFsaWRhdGlvbiA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYW5ndWFnZVZhbGlkYXRpb247XHJcbiAgICAgICAgICBpZiAodGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm1heExlbmd0aClcclxuICAgICAgICAgICAgVGV4dC5tYXhMZW5ndGggPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubWF4TGVuZ3RoO1xyXG4gICAgICAgICAgaWYgKHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5taW5MZW5ndGgpXHJcbiAgICAgICAgICAgIFRleHQubWluTGVuZ3RoID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm1pbkxlbmd0aDtcclxuICAgICAgICAgIFRleHQudmFsdWUgPSB0aGlzLnZhbHVlO1xyXG4gICAgICAgICAgVGV4dC5pc1JlYWRvbmx5ID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmlzUmVhZG9ubHk7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxUZXh0Ym94Q29tcG9uZW50Pih0aGlzLml0ZW0sIFRleHRib3hDb21wb25lbnQsIHRoaXMuZ3JvdXAsIFRleHQpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuTmFtZTpcclxuICAgICAgICAgIGxldCBuYW1lID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgICBuYW1lLm5hbWUgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubmFtZSArIFwiLlwiICsgdGhpcy5pdGVtTnVtYmVyLnRvU3RyaW5nKCkgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpO1xyXG4gICAgICAgICAgbmFtZS5oaWRlTGFiZWwgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuaGlkZUxhYmVsO1xyXG4gICAgICAgICAgbmFtZS5sYWJlbEtleSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbEtleTtcclxuICAgICAgICAgIG5hbWUuaXNSZXF1aXJlZCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5pc1JlcXVpcmVkO1xyXG4gICAgICAgICAgbmFtZS52aWV3VHlwZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy52aWV3VHlwZTtcclxuICAgICAgICAgIG5hbWUubGFuZ3VhZ2VWYWxpZGF0aW9uID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhbmd1YWdlVmFsaWRhdGlvbjtcclxuICAgICAgICAgIG5hbWUubGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbERlc2NyaXB0aW9uID8gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsRGVzY3JpcHRpb24gOiBcIlwiO1xyXG4gICAgICAgICAgaWYgKHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5tYXhMZW5ndGgpXHJcbiAgICAgICAgICAgIG5hbWUubWF4TGVuZ3RoID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm1heExlbmd0aDtcclxuICAgICAgICAgIGlmICh0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubWluTGVuZ3RoKVxyXG4gICAgICAgICAgICBuYW1lLm1pbkxlbmd0aCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5taW5MZW5ndGg7XHJcbiAgICAgICAgICBuYW1lLnR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgICAgIG5hbWUudmFsdWUgPSB0aGlzLnZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8VGV4dGJveENvbXBvbmVudD4odGhpcy5pdGVtLCBUZXh0Ym94Q29tcG9uZW50LCB0aGlzLmdyb3VwLCBuYW1lKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIERhdGFUeXBlLkVtYWlsOlxyXG4gICAgICAgICAgbGV0IGVtYWlsID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgICBlbWFpbC5uYW1lID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm5hbWUgKyBcIi5cIiArIHRoaXMuaXRlbU51bWJlci50b1N0cmluZygpICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKTtcclxuICAgICAgICAgIGVtYWlsLmhpZGVMYWJlbCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5oaWRlTGFiZWw7XHJcbiAgICAgICAgICBlbWFpbC5sYWJlbEtleSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbEtleTtcclxuICAgICAgICAgIGVtYWlsLmlzUmVxdWlyZWQgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuaXNSZXF1aXJlZDtcclxuICAgICAgICAgIGVtYWlsLnZpZXdUeXBlID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLnZpZXdUeXBlO1xyXG4gICAgICAgICAgZW1haWwubGFuZ3VhZ2VWYWxpZGF0aW9uID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhbmd1YWdlVmFsaWRhdGlvbjtcclxuICAgICAgICAgIGVtYWlsLmxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbERlc2NyaXB0aW9uIDogXCJcIjtcclxuICAgICAgICAgIGVtYWlsLnR5cGUgPSBJbnB1dFR5cGUuRW1haWw7XHJcbiAgICAgICAgICBlbWFpbC52YWx1ZSA9IHRoaXMudmFsdWU7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxUZXh0Ym94Q29tcG9uZW50Pih0aGlzLml0ZW0sIFRleHRib3hDb21wb25lbnQsIHRoaXMuZ3JvdXAsIGVtYWlsKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIERhdGFUeXBlLk51bWJlcjpcclxuICAgICAgICAgIGxldCBudW1iZXIgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICAgIG51bWJlci5uYW1lID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm5hbWUgKyBcIi5cIiArIHRoaXMuaXRlbU51bWJlci50b1N0cmluZygpICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKTtcclxuICAgICAgICAgIG51bWJlci5oaWRlTGFiZWwgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuaGlkZUxhYmVsO1xyXG4gICAgICAgICAgbnVtYmVyLmxhYmVsS2V5ID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsS2V5O1xyXG4gICAgICAgICAgbnVtYmVyLmlzUmVxdWlyZWQgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuaXNSZXF1aXJlZDtcclxuICAgICAgICAgIG51bWJlci52aWV3VHlwZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy52aWV3VHlwZTtcclxuICAgICAgICAgIG51bWJlci5sYW5ndWFnZVZhbGlkYXRpb24gPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFuZ3VhZ2VWYWxpZGF0aW9uO1xyXG4gICAgICAgICAgbnVtYmVyLmxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbERlc2NyaXB0aW9uIDogXCJcIjtcclxuICAgICAgICAgIG51bWJlci50eXBlID0gSW5wdXRUeXBlLk51bWJlcjtcclxuICAgICAgICAgIGxldCByYW5nZU51bWJlciA9IG5ldyBSYW5nZU51bWJlcigpO1xyXG4gICAgICAgICAgaWYgKHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5udW1iZXJSYW5nZSkge1xyXG4gICAgICAgICAgICByYW5nZU51bWJlci50byA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5udW1iZXJSYW5nZS50bztcclxuICAgICAgICAgICAgcmFuZ2VOdW1iZXIuZnJvbSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5udW1iZXJSYW5nZS5mcm9tO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgbnVtYmVyLm51bWJlclJhbmdlID0gcmFuZ2VOdW1iZXI7XHJcbiAgICAgICAgICBudW1iZXIudmFsdWUgPSB0aGlzLnZhbHVlO1xyXG4gICAgICAgICAgbnVtYmVyLmlzUmVhZG9ubHkgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuaXNSZWFkb25seTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PFRleHRib3hDb21wb25lbnQ+KHRoaXMuaXRlbSwgVGV4dGJveENvbXBvbmVudCwgdGhpcy5ncm91cCwgbnVtYmVyKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIC8vI2VuZHJlZ2lvblxyXG5cclxuICAgICAgICAvLyNyZWdpb24gIERhdGVUaW1lXHJcbiAgICAgICAgY2FzZSBEYXRhVHlwZS5EYXRlOlxyXG4gICAgICAgICAgbGV0IGRhdGUgPSBuZXcgRGF0ZVBpY2tlck9wdGlvbnMoKTtcclxuICAgICAgICAgIGRhdGUubmFtZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5uYW1lICsgXCIuXCIgKyB0aGlzLml0ZW1OdW1iZXIudG9TdHJpbmcoKSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICBkYXRlLmhpZGVMYWJlbCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5oaWRlTGFiZWw7XHJcbiAgICAgICAgICBkYXRlLmxhYmVsS2V5ID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsS2V5O1xyXG4gICAgICAgICAgZGF0ZS5pc1JlcXVpcmVkID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmlzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBkYXRlLnZpZXdUeXBlID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLnZpZXdUeXBlO1xyXG4gICAgICAgICAgZGF0ZS5sYWJlbERlc2NyaXB0aW9uID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxEZXNjcmlwdGlvbiA6IFwiXCI7XHJcbiAgICAgICAgICBkYXRlLnBpY2tlclR5cGUgPSBQaWNrZXJUeXBlLkNhbGVuZGFyO1xyXG4gICAgICAgICAgZGF0ZS5zZWxlY3RNb2RlID0gU2VsZWN0TW9kZS5TaW5nbGU7XHJcbiAgICAgICAgICBkYXRlLnN0YXJ0VmlldyA9IFN0YXJ0Vmlldy5Nb250aDtcclxuICAgICAgICAgIGRhdGUudmFsdWUgPSB0aGlzLnZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8RGF0ZUlucHV0Q29tcG9uZW50Pih0aGlzLml0ZW0sIERhdGVJbnB1dENvbXBvbmVudCwgdGhpcy5ncm91cCwgZGF0ZSk7XHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgY2FzZSBEYXRhVHlwZS5EYXRlVGltZTpcclxuICAgICAgICAgIGxldCBkYXRlVGltZSA9IG5ldyBEYXRlUGlja2VyT3B0aW9ucygpO1xyXG4gICAgICAgICAgZGF0ZVRpbWUubmFtZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5uYW1lICsgXCIuXCIgKyB0aGlzLml0ZW1OdW1iZXIudG9TdHJpbmcoKSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICBkYXRlVGltZS5oaWRlTGFiZWwgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuaGlkZUxhYmVsO1xyXG4gICAgICAgICAgZGF0ZVRpbWUubGFiZWxLZXkgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuTGFiZWxLZXk7XHJcbiAgICAgICAgICBkYXRlVGltZS5pc1JlcXVpcmVkID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmlzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBkYXRlVGltZS52aWV3VHlwZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy52aWV3VHlwZTtcclxuICAgICAgICAgIGRhdGVUaW1lLmxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbERlc2NyaXB0aW9uIDogXCJcIjtcclxuICAgICAgICAgIGRhdGVUaW1lLnBpY2tlclR5cGUgPSBQaWNrZXJUeXBlLkJvdGg7XHJcbiAgICAgICAgICBkYXRlVGltZS5zZWxlY3RNb2RlID0gU2VsZWN0TW9kZS5TaW5nbGU7XHJcbiAgICAgICAgICBkYXRlVGltZS5zdGFydFZpZXcgPSBTdGFydFZpZXcuTW9udGg7XHJcbiAgICAgICAgICBkYXRlVGltZS52YWx1ZSA9IHRoaXMudmFsdWU7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxEYXRlSW5wdXRDb21wb25lbnQ+KHRoaXMuaXRlbSwgRGF0ZUlucHV0Q29tcG9uZW50LCB0aGlzLmdyb3VwLCBkYXRlVGltZSk7XHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgY2FzZSBEYXRhVHlwZS5UaW1lOlxyXG4gICAgICAgICAgbGV0IHRpbWUgPSBuZXcgRGF0ZVBpY2tlck9wdGlvbnMoKTtcclxuICAgICAgICAgIHRpbWUubmFtZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5uYW1lICsgXCIuXCIgKyB0aGlzLml0ZW1OdW1iZXIudG9TdHJpbmcoKSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICB0aW1lLmhpZGVMYWJlbCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5oaWRlTGFiZWw7XHJcbiAgICAgICAgICB0aW1lLmxhYmVsS2V5ID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsS2V5O1xyXG4gICAgICAgICAgdGltZS5pc1JlcXVpcmVkID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmlzUmVxdWlyZWQ7XHJcbiAgICAgICAgICB0aW1lLnZpZXdUeXBlID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLnZpZXdUeXBlO1xyXG4gICAgICAgICAgdGltZS5sYWJlbERlc2NyaXB0aW9uID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxEZXNjcmlwdGlvbiA6IFwiXCI7XHJcbiAgICAgICAgICB0aW1lLnBpY2tlclR5cGUgPSBQaWNrZXJUeXBlLlRpbWVyO1xyXG4gICAgICAgICAgdGltZS5zZWxlY3RNb2RlID0gU2VsZWN0TW9kZS5TaW5nbGU7XHJcbiAgICAgICAgICB0aW1lLnN0YXJ0VmlldyA9IFN0YXJ0Vmlldy5Nb250aDtcclxuICAgICAgICAgIHRpbWUudmFsdWUgPSB0aGlzLnZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8RGF0ZUlucHV0Q29tcG9uZW50Pih0aGlzLml0ZW0sIERhdGVJbnB1dENvbXBvbmVudCwgdGhpcy5ncm91cCwgdGltZSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICAvLyNlbmRyZWdpb25cclxuXHJcbiAgICAgICAgLy8jcmVnaW9uIERyb3Bkb3duXHJcbiAgICAgICAgY2FzZSBEYXRhVHlwZS5TaW5nbGVTZWxlY3Q6XHJcbiAgICAgICAgICBsZXQgc2luZ2xlU2VsZWN0ID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgc2luZ2xlU2VsZWN0Lm5hbWUgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubmFtZSArIFwiLlwiICsgdGhpcy5pdGVtTnVtYmVyLnRvU3RyaW5nKCkgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpO1xyXG4gICAgICAgICAgc2luZ2xlU2VsZWN0LmhpZGVMYWJlbCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5oaWRlTGFiZWw7XHJcbiAgICAgICAgICBzaW5nbGVTZWxlY3QubGFiZWxLZXkgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxLZXk7XHJcbiAgICAgICAgICBzaW5nbGVTZWxlY3QuaXNSZXF1aXJlZCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5pc1JlcXVpcmVkO1xyXG4gICAgICAgICAgc2luZ2xlU2VsZWN0LnZpZXdUeXBlID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLnZpZXdUeXBlO1xyXG4gICAgICAgICAgc2luZ2xlU2VsZWN0LmxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbERlc2NyaXB0aW9uIDogXCJcIjtcclxuICAgICAgICAgIHNpbmdsZVNlbGVjdC5kYXRhU291cmNlID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmRhdGFTb3VyY2U7XHJcbiAgICAgICAgICBzaW5nbGVTZWxlY3Quc2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIHNpbmdsZVNlbGVjdC5zaG93Q2hlY2tib3ggPSBmYWxzZTtcclxuICAgICAgICAgIHNpbmdsZVNlbGVjdC5hbGxvd1NlYXJjaEZpbHRlciA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5oYXNTZWFyY2g7XHJcbiAgICAgICAgICBzaW5nbGVTZWxlY3Quc2VsZWN0ZWRJdGVtcyA9IHRoaXMudmFsdWU7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxEcm9wZG93bkxpc3RDb21wb25lbnQ+KHRoaXMuaXRlbSwgRHJvcGRvd25MaXN0Q29tcG9uZW50LCB0aGlzLmdyb3VwLCBzaW5nbGVTZWxlY3QpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBEYXRhVHlwZS5NdWxpcGxlU2VsZWN0OlxyXG4gICAgICAgICAgbGV0IG11bGlwbGVTZWxlY3QgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICBtdWxpcGxlU2VsZWN0Lm5hbWUgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubmFtZSArIFwiLlwiICsgdGhpcy5pdGVtTnVtYmVyLnRvU3RyaW5nKCkgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpO1xyXG4gICAgICAgICAgbXVsaXBsZVNlbGVjdC5oaWRlTGFiZWwgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuaGlkZUxhYmVsO1xyXG4gICAgICAgICAgbXVsaXBsZVNlbGVjdC5sYWJlbEtleSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbEtleTtcclxuICAgICAgICAgIG11bGlwbGVTZWxlY3QuaXNSZXF1aXJlZCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5pc1JlcXVpcmVkO1xyXG4gICAgICAgICAgbXVsaXBsZVNlbGVjdC52aWV3VHlwZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5WaWV3VHlwZTtcclxuICAgICAgICAgIG11bGlwbGVTZWxlY3QubGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbERlc2NyaXB0aW9uID8gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsRGVzY3JpcHRpb24gOiBcIlwiO1xyXG4gICAgICAgICAgbXVsaXBsZVNlbGVjdC5kYXRhU291cmNlID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmRhdGFTb3VyY2U7XHJcbiAgICAgICAgICBtdWxpcGxlU2VsZWN0LnNpbmdsZVNlbGVjdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgbXVsaXBsZVNlbGVjdC5zaG93Q2hlY2tib3ggPSBmYWxzZTtcclxuICAgICAgICAgIG11bGlwbGVTZWxlY3QuYWxsb3dTZWFyY2hGaWx0ZXIgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuaGFzU2VhcmNoO1xyXG4gICAgICAgICAgbXVsaXBsZVNlbGVjdC5zZWxlY3RlZEl0ZW1zID0gdGhpcy52YWx1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PERyb3Bkb3duTGlzdENvbXBvbmVudD4odGhpcy5pdGVtLCBEcm9wZG93bkxpc3RDb21wb25lbnQsIHRoaXMuZ3JvdXAsIG11bGlwbGVTZWxlY3QpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBEYXRhVHlwZS5Hb2FsOlxyXG4gICAgICAgICAgbGV0IGdvYWwgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICBnb2FsLm5hbWUgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubmFtZSArIFwiLlwiICsgdGhpcy5pdGVtTnVtYmVyLnRvU3RyaW5nKCkgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpO1xyXG4gICAgICAgICAgZ29hbC5oaWRlTGFiZWwgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuaGlkZUxhYmVsO1xyXG4gICAgICAgICAgZ29hbC5sYWJlbEtleSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbEtleTtcclxuICAgICAgICAgIGdvYWwuaXNSZXF1aXJlZCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5pc1JlcXVpcmVkO1xyXG4gICAgICAgICAgZ29hbC52aWV3VHlwZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy52aWV3VHlwZTtcclxuICAgICAgICAgIGdvYWwubGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbERlc2NyaXB0aW9uID8gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsRGVzY3JpcHRpb24gOiBcIlwiO1xyXG4gICAgICAgICAgZ29hbC5kYXRhU291cmNlID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmRhdGFTb3VyY2U7XHJcbiAgICAgICAgICBnb2FsLnNpbmdsZVNlbGVjdGlvbiA9ICF0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuaXNNdWx0aXBsZTtcclxuICAgICAgICAgIGdvYWwuc2hvd0NoZWNrYm94ID0gZmFsc2U7XHJcbiAgICAgICAgICBnb2FsLmFsbG93U2VhcmNoRmlsdGVyID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmhhc1NlYXJjaDtcclxuICAgICAgICAgIGdvYWwuc2VsZWN0ZWRJdGVtcyA9IHRoaXMudmFsdWU7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxEcm9wZG93bkxpc3RDb21wb25lbnQ+KHRoaXMuaXRlbSwgRHJvcGRvd25MaXN0Q29tcG9uZW50LCB0aGlzLmdyb3VwLCBnb2FsKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuQ2hhbGxlbmdlOlxyXG4gICAgICAgICAgbGV0IGNoYWxsZW5nZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgIGNoYWxsZW5nZS5uYW1lID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm5hbWUgKyBcIi5cIiArIHRoaXMuaXRlbU51bWJlci50b1N0cmluZygpICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKTtcclxuICAgICAgICAgIGNoYWxsZW5nZS5oaWRlTGFiZWwgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuaGlkZUxhYmVsO1xyXG4gICAgICAgICAgY2hhbGxlbmdlLmxhYmVsS2V5ID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsS2V5O1xyXG4gICAgICAgICAgY2hhbGxlbmdlLmlzUmVxdWlyZWQgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuaXNSZXF1aXJlZDtcclxuICAgICAgICAgIGNoYWxsZW5nZS52aWV3VHlwZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy52aWV3VHlwZTtcclxuICAgICAgICAgIGNoYWxsZW5nZS5sYWJlbERlc2NyaXB0aW9uID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxEZXNjcmlwdGlvbiA6IFwiXCI7XHJcbiAgICAgICAgICBjaGFsbGVuZ2UuZGF0YVNvdXJjZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5kYXRhU291cmNlO1xyXG4gICAgICAgICAgY2hhbGxlbmdlLmRhdGFTb3VyY2UgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuZGF0YVNvdXJjZTtcclxuICAgICAgICAgIGNoYWxsZW5nZS5zaW5nbGVTZWxlY3Rpb24gPSAhdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmlzTXVsdGlwbGU7XHJcbiAgICAgICAgICBjaGFsbGVuZ2Uuc2hvd0NoZWNrYm94ID0gZmFsc2U7XHJcbiAgICAgICAgICBjaGFsbGVuZ2UuYWxsb3dTZWFyY2hGaWx0ZXIgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuaGFzU2VhcmNoO1xyXG4gICAgICAgICAgY2hhbGxlbmdlLnNlbGVjdGVkSXRlbXMgPSB0aGlzLnZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8RHJvcGRvd25MaXN0Q29tcG9uZW50Pih0aGlzLml0ZW0sIERyb3Bkb3duTGlzdENvbXBvbmVudCwgdGhpcy5ncm91cCwgY2hhbGxlbmdlKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuSW5ub3ZhdGlvbkxhYjpcclxuICAgICAgICAgIGxldCBpbm5vdmF0aW9uTGFiID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgaW5ub3ZhdGlvbkxhYi5uYW1lID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm5hbWUgKyBcIi5cIiArIHRoaXMuaXRlbU51bWJlci50b1N0cmluZygpICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKTtcclxuICAgICAgICAgIGlubm92YXRpb25MYWIuaGlkZUxhYmVsID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmhpZGVMYWJlbDtcclxuICAgICAgICAgIGlubm92YXRpb25MYWIubGFiZWxLZXkgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxLZXk7XHJcbiAgICAgICAgICBpbm5vdmF0aW9uTGFiLmlzUmVxdWlyZWQgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuaXNSZXF1aXJlZDtcclxuICAgICAgICAgIGlubm92YXRpb25MYWIudmlld1R5cGUgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMudmlld1R5cGU7XHJcbiAgICAgICAgICBpbm5vdmF0aW9uTGFiLmxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbERlc2NyaXB0aW9uIDogXCJcIjtcclxuICAgICAgICAgIGlubm92YXRpb25MYWIuZGF0YVNvdXJjZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5kYXRhU291cmNlO1xyXG4gICAgICAgICAgaW5ub3ZhdGlvbkxhYi5zaW5nbGVTZWxlY3Rpb24gPSAhdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmlzTXVsdGlwbGU7XHJcbiAgICAgICAgICBpbm5vdmF0aW9uTGFiLnNob3dDaGVja2JveCA9IGZhbHNlO1xyXG4gICAgICAgICAgaW5ub3ZhdGlvbkxhYi5hbGxvd1NlYXJjaEZpbHRlciA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5oYXNTZWFyY2g7XHJcbiAgICAgICAgICBpbm5vdmF0aW9uTGFiLnNlbGVjdGVkSXRlbXMgPSB0aGlzLnZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8RHJvcGRvd25MaXN0Q29tcG9uZW50Pih0aGlzLml0ZW0sIERyb3Bkb3duTGlzdENvbXBvbmVudCwgdGhpcy5ncm91cCwgaW5ub3ZhdGlvbkxhYik7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIERhdGFUeXBlLkNvdW50cnk6XHJcbiAgICAgICAgICBsZXQgY291bnRyeSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgIGNvdW50cnkubmFtZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5uYW1lICsgXCIuXCIgKyB0aGlzLml0ZW1OdW1iZXIudG9TdHJpbmcoKSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICBjb3VudHJ5LmhpZGVMYWJlbCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5oaWRlTGFiZWw7XHJcbiAgICAgICAgICBjb3VudHJ5LmxhYmVsS2V5ID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLkxhYmVsS2V5O1xyXG4gICAgICAgICAgY291bnRyeS5pc1JlcXVpcmVkID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmlzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBjb3VudHJ5LnZpZXdUeXBlID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLnZpZXdUeXBlO1xyXG4gICAgICAgICAgY291bnRyeS5sYWJlbERlc2NyaXB0aW9uID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxEZXNjcmlwdGlvbiA6IFwiXCI7XHJcbiAgICAgICAgICBjb3VudHJ5LmRhdGFTb3VyY2UgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuZGF0YVNvdXJjZTtcclxuICAgICAgICAgIGNvdW50cnkuc2luZ2xlU2VsZWN0aW9uID0gIXRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5pc011bHRpcGxlO1xyXG4gICAgICAgICAgY291bnRyeS5zaG93Q2hlY2tib3ggPSBmYWxzZTtcclxuICAgICAgICAgIGNvdW50cnkuYWxsb3dTZWFyY2hGaWx0ZXIgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuaGFzU2VhcmNoO1xyXG4gICAgICAgICAgY291bnRyeS5zZWxlY3RlZEl0ZW1zID0gdGhpcy52YWx1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PERyb3Bkb3duTGlzdENvbXBvbmVudD4odGhpcy5pdGVtLCBEcm9wZG93bkxpc3RDb21wb25lbnQsIHRoaXMuZ3JvdXAsIGNvdW50cnkpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgLy8jZW5kcmVnaW9uXHJcblxyXG4gICAgICAgIC8vI3JlZ2lvbiBGaWxlVXBsb2FkXHJcbiAgICAgICAgY2FzZSBEYXRhVHlwZS5GaWxlOlxyXG4gICAgICAgICAgbGV0IGZpbGUgPSBuZXcgRmlsZVVwbG9hZE9wdGlvbnMoKTtcclxuICAgICAgICAgIGZpbGUubmFtZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5uYW1lICsgXCIuXCIgKyB0aGlzLml0ZW1OdW1iZXIudG9TdHJpbmcoKSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICBmaWxlLmhpZGVMYWJlbCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5oaWRlTGFiZWw7XHJcbiAgICAgICAgICBmaWxlLmxhYmVsS2V5ID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsS2V5O1xyXG4gICAgICAgICAgZmlsZS5pc1JlcXVpcmVkID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmlzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBmaWxlLnZpZXdUeXBlID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLnZpZXdUeXBlO1xyXG4gICAgICAgICAgZmlsZS5sYWJlbERlc2NyaXB0aW9uID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA6IFwiXCI7XHJcbiAgICAgICAgICBmaWxlLmZpbGVNYXhTaXplSW5NQiA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5tYXhGaWxlU2l6ZUluTUI7XHJcbiAgICAgICAgICBmaWxlLnZhbHVlID0gdGhpcy52YWx1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PEZpbGVVcGxvYWRDb21wb25lbnQ+KHRoaXMuaXRlbSwgRmlsZVVwbG9hZENvbXBvbmVudCwgdGhpcy5ncm91cCwgZmlsZSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIERhdGFUeXBlLk11bHRpRmlsZTpcclxuICAgICAgICAgIGxldCBtdWx0aUZpbGUgPSBuZXcgRmlsZVVwbG9hZE9wdGlvbnMoKTtcclxuICAgICAgICAgIGZpbGUubmFtZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5OYW1lICsgXCIuXCIgKyB0aGlzLml0ZW1OdW1iZXIudG9TdHJpbmcoKSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICBmaWxlLmhpZGVMYWJlbCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5IaWRlTGFiZWw7XHJcbiAgICAgICAgICBmaWxlLmxhYmVsS2V5ID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLkxhYmVsS2V5O1xyXG4gICAgICAgICAgZmlsZS5pc1JlcXVpcmVkID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLklzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBmaWxlLnZpZXdUeXBlID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLlZpZXdUeXBlO1xyXG4gICAgICAgICAgZmlsZS5sYWJlbERlc2NyaXB0aW9uID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA6IFwiXCI7XHJcbiAgICAgICAgICBtdWx0aUZpbGUubWF4U2l6ZUZvckFsbEZpbGVzSW5NQiA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5tYXhGaWxlU2l6ZUluTUI7XHJcbiAgICAgICAgICBtdWx0aUZpbGUubWF4Tm9PZkZpbGVzID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm1heEZpbGVDb3VudDtcclxuICAgICAgICAgIG11bHRpRmlsZS5pc011bHRpcGxlRmlsZSA9IHRydWU7XHJcbiAgICAgICAgICBtdWx0aUZpbGUudmFsdWUgPSB0aGlzLnZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8RmlsZVVwbG9hZENvbXBvbmVudD4odGhpcy5pdGVtLCBGaWxlVXBsb2FkQ29tcG9uZW50LCB0aGlzLmdyb3VwLCBtdWx0aUZpbGUpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgLy8jZW5kcmVnaW9uXHJcblxyXG4gICAgICAgIC8vI3JlZ2lvbiBJbWFnZVVwbG9hZFxyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuSW1hZ2U6XHJcbiAgICAgICAgICBsZXQgaW1hZ2UgPSBuZXcgSW1hZ2VVcGxvYWRPcHRpb25zKCk7XHJcbiAgICAgICAgICBpbWFnZS5uYW1lID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIHRoaXMuaXRlbU51bWJlci50b1N0cmluZygpICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKTtcclxuICAgICAgICAgIGltYWdlLmhpZGVMYWJlbCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5IaWRlTGFiZWw7XHJcbiAgICAgICAgICBpbWFnZS5sYWJlbEtleSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5MYWJlbEtleTtcclxuICAgICAgICAgIGltYWdlLmlzUmVxdWlyZWQgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuSXNSZXF1aXJlZDtcclxuICAgICAgICAgIGltYWdlLnZpZXdUeXBlID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLlZpZXdUeXBlO1xyXG4gICAgICAgICAgaW1hZ2UubGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uID8gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gOiBcIlwiO1xyXG4gICAgICAgICAgaWYgKHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5tYXhGaWxlU2l6ZUluTUIpXHJcbiAgICAgICAgICAgIGltYWdlLmZpbGVNYXhTaXplSW5NQiA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5tYXhGaWxlU2l6ZUluTUI7XHJcbiAgICAgICAgICBpbWFnZS52YWx1ZSA9IHRoaXMudmFsdWU7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxJbWFnZVVwbG9hZGVyQ29tcG9uZW50Pih0aGlzLml0ZW0sIEltYWdlVXBsb2FkZXJDb21wb25lbnQsIHRoaXMuZ3JvdXAsIGltYWdlKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuQ292ZXJQaG90bzpcclxuICAgICAgICAgIGxldCBjb3ZlclBob3RvID0gbmV3IEltYWdlVXBsb2FkT3B0aW9ucygpO1xyXG4gICAgICAgICAgY292ZXJQaG90by5uYW1lID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIHRoaXMuaXRlbU51bWJlci50b1N0cmluZygpICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKTtcclxuICAgICAgICAgIGNvdmVyUGhvdG8uaGlkZUxhYmVsID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLkhpZGVMYWJlbDtcclxuICAgICAgICAgIGNvdmVyUGhvdG8ubGFiZWxLZXkgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuTGFiZWxLZXk7XHJcbiAgICAgICAgICBjb3ZlclBob3RvLmlzUmVxdWlyZWQgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuSXNSZXF1aXJlZDtcclxuICAgICAgICAgIGNvdmVyUGhvdG8udmlld1R5cGUgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBjb3ZlclBob3RvLmxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIDogXCJcIjtcclxuICAgICAgICAgIGlmICh0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubWF4RmlsZVNpemVJbk1CKVxyXG4gICAgICAgICAgICBjb3ZlclBob3RvLmZpbGVNYXhTaXplSW5NQiA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5tYXhGaWxlU2l6ZUluTUI7XHJcbiAgICAgICAgICBjb3ZlclBob3RvLnZhbHVlID0gdGhpcy52YWx1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PEltYWdlVXBsb2FkZXJDb21wb25lbnQ+KHRoaXMuaXRlbSwgSW1hZ2VVcGxvYWRlckNvbXBvbmVudCwgdGhpcy5ncm91cCwgY292ZXJQaG90byk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICAvLyNlbmRyZWdpb25cclxuXHJcbiAgICAgICAgLy8jcmVnaW9uIE1vYmlsZVxyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuTW9iaWxlOlxyXG4gICAgICAgICAgbGV0IG1vYmlsZSA9IG5ldyBQaG9uZU9wdGlvbnMoKTtcclxuICAgICAgICAgIG1vYmlsZS5uYW1lID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIHRoaXMuaXRlbU51bWJlci50b1N0cmluZygpICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKTtcclxuICAgICAgICAgIG1vYmlsZS5oaWRlTGFiZWwgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuSGlkZUxhYmVsO1xyXG4gICAgICAgICAgbW9iaWxlLmxhYmVsS2V5ID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLkxhYmVsS2V5O1xyXG4gICAgICAgICAgbW9iaWxlLmlzUmVxdWlyZWQgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuSXNSZXF1aXJlZDtcclxuICAgICAgICAgIG1vYmlsZS52aWV3VHlwZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5WaWV3VHlwZTtcclxuICAgICAgICAgIG1vYmlsZS5sYWJlbERlc2NyaXB0aW9uID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA6IFwiXCI7XHJcbiAgICAgICAgICBtb2JpbGUuYWxsb3dTZWFyY2ggPSB0cnVlO1xyXG4gICAgICAgICAgbW9iaWxlLnBob25lVmFsaWRhdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICBtb2JpbGUuc2VsZWN0Rmlyc3RDb3VudHJ5ID0gdHJ1ZTtcclxuICAgICAgICAgIG1vYmlsZS5lbmFibGVQbGFjZWhvbGRlciA9IHRydWU7XHJcbiAgICAgICAgICBtb2JpbGUudmFsdWUgPSB0aGlzLnZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8UGhvbmVDb21wb25lbnQ+KHRoaXMuaXRlbSwgUGhvbmVDb21wb25lbnQsIHRoaXMuZ3JvdXAsIG1vYmlsZSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICAvLyNlbmRyZWdpb25cclxuXHJcbiAgICAgICAgLy8jcmVnaW9uIE11bHRpbGluZVRleHRcclxuICAgICAgICBjYXNlIERhdGFUeXBlLk11bHRpbGluZVRleHQ6XHJcbiAgICAgICAgICBsZXQgbXVsdGlsaW5lVGV4dCA9IG5ldyBUZXh0QXJlYU9wdGlvbnMoKTtcclxuICAgICAgICAgIG11bHRpbGluZVRleHQubmFtZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5OYW1lICsgXCIuXCIgKyB0aGlzLml0ZW1OdW1iZXIudG9TdHJpbmcoKSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICBtdWx0aWxpbmVUZXh0LmhpZGVMYWJlbCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5IaWRlTGFiZWw7XHJcbiAgICAgICAgICBtdWx0aWxpbmVUZXh0LmxhYmVsS2V5ID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLkxhYmVsS2V5O1xyXG4gICAgICAgICAgbXVsdGlsaW5lVGV4dC5pc1JlcXVpcmVkID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLklzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBtdWx0aWxpbmVUZXh0LnZpZXdUeXBlID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLlZpZXdUeXBlO1xyXG4gICAgICAgICAgbXVsdGlsaW5lVGV4dC5sYWJlbERlc2NyaXB0aW9uID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA6IFwiXCI7XHJcbiAgICAgICAgICBpZiAodGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm1heExlbmd0aClcclxuICAgICAgICAgICAgbXVsdGlsaW5lVGV4dC5tYXhMZW5ndGggPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubWF4TGVuZ3RoO1xyXG4gICAgICAgICAgaWYgKHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5taW5MZW5ndGgpXHJcbiAgICAgICAgICAgIG11bHRpbGluZVRleHQubWluTGVuZ3RoID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm1pbkxlbmd0aDtcclxuICAgICAgICAgIG11bHRpbGluZVRleHQucm93cyA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5yb3dzO1xyXG4gICAgICAgICAgbXVsdGlsaW5lVGV4dC5mb3JjZURpcmVjdGlvbiA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5Gb3JjZURpcmVjdGlvbjtcclxuICAgICAgICAgIG11bHRpbGluZVRleHQudmFsdWUgPSB0aGlzLnZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8VGV4dEFyZWFDb21wb25lbnQ+KHRoaXMuaXRlbSwgVGV4dEFyZWFDb21wb25lbnQsIHRoaXMuZ3JvdXAsIG11bHRpbGluZVRleHQpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgLy8jZW5kcmVnaW9uXHJcblxyXG4gICAgICAgIC8vI3JlZ2lvbiBIVE1MXHJcbiAgICAgICAgY2FzZSBEYXRhVHlwZS5IVE1MOlxyXG4gICAgICAgICAgbGV0IEhUTUwgPSBuZXcgSHRtbEVkaXRvck9wdGlvbnMoKTtcclxuICAgICAgICAgIEhUTUwubmFtZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5OYW1lICsgXCIuXCIgKyB0aGlzLml0ZW1OdW1iZXIudG9TdHJpbmcoKSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICBIVE1MLmhpZGVMYWJlbCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5IaWRlTGFiZWw7XHJcbiAgICAgICAgICBIVE1MLmxhYmVsS2V5ID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLkxhYmVsS2V5O1xyXG4gICAgICAgICAgSFRNTC5pc1JlcXVpcmVkID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLklzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBIVE1MLnZpZXdUeXBlID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLlZpZXdUeXBlO1xyXG4gICAgICAgICAgSFRNTC5sYWJlbERlc2NyaXB0aW9uID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxEZXNjcmlwdGlvbiA6IFwiXCI7XHJcbiAgICAgICAgICBpZiAodGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm1heExlbmd0aClcclxuICAgICAgICAgICAgSFRNTC5tYXhMZW5ndGggPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubWF4TGVuZ3RoO1xyXG4gICAgICAgICAgaWYgKHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5taW5MZW5ndGgpXHJcbiAgICAgICAgICAgIEhUTUwubWluTGVuZ3RoID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm1pbkxlbmd0aDtcclxuICAgICAgICAgIEhUTUwuaGVpZ2h0ID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLnJvd3M7XHJcbiAgICAgICAgICBIVE1MLmZvcmNlRGlyZWN0aW9uID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLkZvcmNlRGlyZWN0aW9uO1xyXG4gICAgICAgICAgSFRNTC52YWx1ZSA9IHRoaXMudmFsdWU7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxIdG1sRWRpdG9yQ29tcG9uZW50Pih0aGlzLml0ZW0sIEh0bWxFZGl0b3JDb21wb25lbnQsIHRoaXMuZ3JvdXAsIEhUTUwpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgLy8jZW5kcmVnaW9uXHJcblxyXG4gICAgICAgIC8vI3JlZ2lvbiBCb29sZWFuXHJcbiAgICAgICAgY2FzZSBEYXRhVHlwZS5Cb29sZWFuOlxyXG4gICAgICAgICAgbGV0IGJvb2xlYW4gPSBuZXcgVG9nZ2xlU2xpZGVPcHRpb25zKCk7XHJcbiAgICAgICAgICBib29sZWFuLm5hbWUgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubmFtZSArIFwiLlwiICsgdGhpcy5pdGVtTnVtYmVyLnRvU3RyaW5nKCkgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpO1xyXG4gICAgICAgICAgYm9vbGVhbi5oaWRlTGFiZWwgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuaGlkZUxhYmVsO1xyXG4gICAgICAgICAgYm9vbGVhbi5sYWJlbEtleSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbEtleTtcclxuICAgICAgICAgIGJvb2xlYW4udmlld1R5cGUgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMudmlld1R5cGU7XHJcbiAgICAgICAgICBib29sZWFuLnZhbHVlID0gdGhpcy52YWx1ZTtcclxuICAgICAgICAgIGJvb2xlYW4ubGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbERlc2NyaXB0aW9uID8gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsRGVzY3JpcHRpb24gOiBcIlwiO1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8VG9nZ2xlc2xpZGVDb21wb25lbnQ+KHRoaXMuaXRlbSwgVG9nZ2xlc2xpZGVDb21wb25lbnQsIHRoaXMuZ3JvdXAsIGJvb2xlYW4pO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgLy8jZW5kcmVnaW9uXHJcblxyXG4gICAgICAgIC8vI3JlZ2lvbiBMb2NhdGlvblxyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuTG9jYXRpb246XHJcbiAgICAgICAgICBsZXQgbG9jYXRpb24gPSBuZXcgTWFwQXV0b0NvbXBsZXRlT3B0aW9ucygpO1xyXG4gICAgICAgICAgbG9jYXRpb24ubmFtZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5uYW1lICsgXCIuXCIgKyB0aGlzLml0ZW1OdW1iZXIudG9TdHJpbmcoKSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICBsb2NhdGlvbi5oaWRlTGFiZWwgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuaGlkZUxhYmVsO1xyXG4gICAgICAgICAgbG9jYXRpb24ubGFiZWxLZXkgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxLZXk7XHJcbiAgICAgICAgICBsb2NhdGlvbi5pc1JlcXVpcmVkID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmlzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBsb2NhdGlvbi52aWV3VHlwZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy52aWV3VHlwZTtcclxuICAgICAgICAgIGxvY2F0aW9uLnZhbHVlID0gdGhpcy52YWx1ZTtcclxuICAgICAgICAgIGxvY2F0aW9uLmxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbERlc2NyaXB0aW9uIDogXCJcIjtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PE1hcEF1dG9Db21wbGV0ZUNvbXBvbmVudD4odGhpcy5pdGVtLCBNYXBBdXRvQ29tcGxldGVDb21wb25lbnQsIHRoaXMuZ3JvdXAsIGxvY2F0aW9uKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIC8vI2VuZHJlZ2lvblxyXG5cclxuICAgICAgICAvLyNyZWdpb24gQ2hlY2tCb3hcclxuICAgICAgICBjYXNlIERhdGFUeXBlLkNoZWNrQm94OlxyXG4gICAgICAgICAgbGV0IGNoZWNrQm94ID0gbmV3IENoZWNrQm94T3B0aW9ucygpO1xyXG4gICAgICAgICAgY2hlY2tCb3gubmFtZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5uYW1lICsgXCIuXCIgKyB0aGlzLml0ZW1OdW1iZXIudG9TdHJpbmcoKSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICBjaGVja0JveC5oaWRlTGFiZWwgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuaGlkZUxhYmVsO1xyXG4gICAgICAgICAgY2hlY2tCb3gubGFiZWxLZXkgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxLZXk7XHJcbiAgICAgICAgICBjaGVja0JveC52aWV3VHlwZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy52aWV3VHlwZTtcclxuICAgICAgICAgIGNoZWNrQm94Lm91dHB1dEZ1bmN0aW9uID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm91dHB1dEZ1bmN0aW9uO1xyXG4gICAgICAgICAgY2hlY2tCb3gubGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbERlc2NyaXB0aW9uID8gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsRGVzY3JpcHRpb24gOiBcIlwiO1xyXG4gICAgICAgICAgY2hlY2tCb3gudmFsdWUgPSB0aGlzLnZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8Q2hlY2tCb3hDb21wb25lbnQ+KHRoaXMuaXRlbSwgQ2hlY2tCb3hDb21wb25lbnQsIHRoaXMuZ3JvdXAsIGNoZWNrQm94KTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIC8vI2VuZHJlZ2lvblxyXG5cclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH0sIDApO1xyXG4gIH1cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlcy5pdGVtTnVtYmVyKVxyXG4gICAgICBpZiAoY2hhbmdlcy5pdGVtTnVtYmVyLnByZXZpb3VzVmFsdWUpIHtcclxuICAgICAgICBsZXQgbmFtZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5OYW1lICsgXCIuXCIgKyBjaGFuZ2VzLml0ZW1OdW1iZXIucHJldmlvdXNWYWx1ZS50b1N0cmluZygpICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKTtcclxuICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLmdyb3VwLmNvbnRyb2xzW25hbWVdLnZhbHVlO1xyXG4gICAgICAgIHRoaXMuaXRlbS5jbGVhcigpO1xyXG4gICAgICAgIHRoaXMuZ3JvdXAucmVtb3ZlQ29udHJvbChuYW1lKTtcclxuICAgICAgICBzd2l0Y2ggKHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sVHlwZSkge1xyXG4gICAgICAgICAgLy8jcmVnaW9uIFRleHRCb3hcclxuICAgICAgICAgIGNhc2UgRGF0YVR5cGUuVGV4dDpcclxuICAgICAgICAgICAgbGV0IHRleHQgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICAgICAgdGV4dC5uYW1lID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm5hbWUgKyBcIi5cIiArIGNoYW5nZXMuaXRlbU51bWJlci5jdXJyZW50VmFsdWUgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpO1xyXG4gICAgICAgICAgICB0ZXh0LmhpZGVMYWJlbCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5oaWRlTGFiZWw7XHJcbiAgICAgICAgICAgIHRleHQubGFiZWxLZXkgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxLZXk7XHJcbiAgICAgICAgICAgIHRleHQuaXNSZXF1aXJlZCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5pc1JlcXVpcmVkO1xyXG4gICAgICAgICAgICB0ZXh0LnZpZXdUeXBlID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLnZpZXdUeXBlO1xyXG4gICAgICAgICAgICB0ZXh0LmxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbERlc2NyaXB0aW9uIDogXCJcIjtcclxuICAgICAgICAgICAgdGV4dC50eXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubWF4TGVuZ3RoKVxyXG4gICAgICAgICAgICAgIHRleHQubWF4TGVuZ3RoID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm1heExlbmd0aDtcclxuICAgICAgICAgICAgaWYgKHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5taW5MZW5ndGgpXHJcbiAgICAgICAgICAgICAgdGV4dC5taW5MZW5ndGggPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubWluTGVuZ3RoO1xyXG4gICAgICAgICAgICB0ZXh0LnZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PFRleHRib3hDb21wb25lbnQ+KHRoaXMuaXRlbSwgVGV4dGJveENvbXBvbmVudCwgdGhpcy5ncm91cCwgdGV4dCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgIGNhc2UgRGF0YVR5cGUuTmFtZTpcclxuICAgICAgICAgICAgbGV0IG5hbWUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICAgICAgbmFtZS5uYW1lID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm5hbWUgKyBcIi5cIiArIGNoYW5nZXMuaXRlbU51bWJlci5jdXJyZW50VmFsdWUgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpO1xyXG4gICAgICAgICAgICBuYW1lLmhpZGVMYWJlbCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5oaWRlTGFiZWw7XHJcbiAgICAgICAgICAgIG5hbWUubGFiZWxLZXkgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxLZXk7XHJcbiAgICAgICAgICAgIG5hbWUuaXNSZXF1aXJlZCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5pc1JlcXVpcmVkO1xyXG4gICAgICAgICAgICBuYW1lLnZpZXdUeXBlID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLnZpZXdUeXBlO1xyXG4gICAgICAgICAgICBuYW1lLmxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbERlc2NyaXB0aW9uIDogXCJcIjtcclxuICAgICAgICAgICAgaWYgKHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5tYXhMZW5ndGgpXHJcbiAgICAgICAgICAgICAgbmFtZS5tYXhMZW5ndGggPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubWF4TGVuZ3RoO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm1pbkxlbmd0aClcclxuICAgICAgICAgICAgICBuYW1lLm1pbkxlbmd0aCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5taW5MZW5ndGg7XHJcbiAgICAgICAgICAgIG5hbWUudHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICAgICAgICBuYW1lLnZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PFRleHRib3hDb21wb25lbnQ+KHRoaXMuaXRlbSwgVGV4dGJveENvbXBvbmVudCwgdGhpcy5ncm91cCwgbmFtZSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgIGNhc2UgRGF0YVR5cGUuRW1haWw6XHJcbiAgICAgICAgICAgIGxldCBlbWFpbCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgICAgICBlbWFpbC5uYW1lID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm5hbWUgKyBcIi5cIiArIGNoYW5nZXMuaXRlbU51bWJlci5jdXJyZW50VmFsdWUgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpO1xyXG4gICAgICAgICAgICBlbWFpbC5oaWRlTGFiZWwgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuaGlkZUxhYmVsO1xyXG4gICAgICAgICAgICBlbWFpbC5sYWJlbEtleSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbEtleTtcclxuICAgICAgICAgICAgZW1haWwuaXNSZXF1aXJlZCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5pc1JlcXVpcmVkO1xyXG4gICAgICAgICAgICBlbWFpbC52aWV3VHlwZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy52aWV3VHlwZTtcclxuICAgICAgICAgICAgZW1haWwubGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbERlc2NyaXB0aW9uID8gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsRGVzY3JpcHRpb24gOiBcIlwiO1xyXG4gICAgICAgICAgICBlbWFpbC50eXBlID0gSW5wdXRUeXBlLkVtYWlsO1xyXG4gICAgICAgICAgICBlbWFpbC52YWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxUZXh0Ym94Q29tcG9uZW50Pih0aGlzLml0ZW0sIFRleHRib3hDb21wb25lbnQsIHRoaXMuZ3JvdXAsIGVtYWlsKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgY2FzZSBEYXRhVHlwZS5OdW1iZXI6XHJcbiAgICAgICAgICAgIGxldCBudW1iZXIgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICAgICAgbnVtYmVyLm5hbWUgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubmFtZSArIFwiLlwiICsgY2hhbmdlcy5pdGVtTnVtYmVyLmN1cnJlbnRWYWx1ZSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgIG51bWJlci5oaWRlTGFiZWwgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuaGlkZUxhYmVsO1xyXG4gICAgICAgICAgICBudW1iZXIubGFiZWxLZXkgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxLZXk7XHJcbiAgICAgICAgICAgIG51bWJlci5pc1JlcXVpcmVkID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmlzUmVxdWlyZWQ7XHJcbiAgICAgICAgICAgIG51bWJlci52aWV3VHlwZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy52aWV3VHlwZTtcclxuICAgICAgICAgICAgbnVtYmVyLmxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbERlc2NyaXB0aW9uIDogXCJcIjtcclxuICAgICAgICAgICAgbnVtYmVyLnR5cGUgPSBJbnB1dFR5cGUuTnVtYmVyO1xyXG4gICAgICAgICAgICBsZXQgcmFuZ2VOdW1iZXIgPSBuZXcgUmFuZ2VOdW1iZXIoKTtcclxuICAgICAgICAgICAgcmFuZ2VOdW1iZXIudG8gPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubWF4TGVuZ3RoO1xyXG4gICAgICAgICAgICByYW5nZU51bWJlci5mcm9tID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm1pbkxlbmd0aDtcclxuICAgICAgICAgICAgbnVtYmVyLm51bWJlclJhbmdlID0gcmFuZ2VOdW1iZXI7XHJcbiAgICAgICAgICAgIG51bWJlci52YWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxUZXh0Ym94Q29tcG9uZW50Pih0aGlzLml0ZW0sIFRleHRib3hDb21wb25lbnQsIHRoaXMuZ3JvdXAsIG51bWJlcik7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgLy8jZW5kcmVnaW9uXHJcblxyXG4gICAgICAgICAgLy8jcmVnaW9uIERhdGVUaW1lXHJcbiAgICAgICAgICBjYXNlIERhdGFUeXBlLkRhdGU6XHJcbiAgICAgICAgICAgIGxldCBEYXRlID0gbmV3IERhdGVQaWNrZXJPcHRpb25zKCk7XHJcbiAgICAgICAgICAgIERhdGUubmFtZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5uYW1lICsgXCIuXCIgKyBjaGFuZ2VzLml0ZW1OdW1iZXIuY3VycmVudFZhbHVlICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgRGF0ZS5oaWRlTGFiZWwgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuaGlkZUxhYmVsO1xyXG4gICAgICAgICAgICBEYXRlLmxhYmVsS2V5ID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsS2V5O1xyXG4gICAgICAgICAgICBEYXRlLmlzUmVxdWlyZWQgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuaXNSZXF1aXJlZDtcclxuICAgICAgICAgICAgRGF0ZS52aWV3VHlwZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy52aWV3VHlwZTtcclxuICAgICAgICAgICAgRGF0ZS5sYWJlbERlc2NyaXB0aW9uID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxEZXNjcmlwdGlvbiA6IFwiXCI7XHJcbiAgICAgICAgICAgIERhdGUucGlja2VyVHlwZSA9IFBpY2tlclR5cGUuQ2FsZW5kYXI7XHJcbiAgICAgICAgICAgIERhdGUuc2VsZWN0TW9kZSA9IFNlbGVjdE1vZGUuU2luZ2xlO1xyXG4gICAgICAgICAgICBEYXRlLnN0YXJ0VmlldyA9IFN0YXJ0Vmlldy5Nb250aDtcclxuICAgICAgICAgICAgRGF0ZS52YWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxEYXRlSW5wdXRDb21wb25lbnQ+KHRoaXMuaXRlbSwgRGF0ZUlucHV0Q29tcG9uZW50LCB0aGlzLmdyb3VwLCBEYXRlKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgY2FzZSBEYXRhVHlwZS5EYXRlVGltZTpcclxuICAgICAgICAgICAgbGV0IGRhdGVUaW1lID0gbmV3IERhdGVQaWNrZXJPcHRpb25zKCk7XHJcbiAgICAgICAgICAgIGRhdGVUaW1lLm5hbWUgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubmFtZSArIFwiLlwiICsgY2hhbmdlcy5pdGVtTnVtYmVyLmN1cnJlbnRWYWx1ZSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgIGRhdGVUaW1lLmhpZGVMYWJlbCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5oaWRlTGFiZWw7XHJcbiAgICAgICAgICAgIGRhdGVUaW1lLmxhYmVsS2V5ID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsS2V5O1xyXG4gICAgICAgICAgICBkYXRlVGltZS5pc1JlcXVpcmVkID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmlzUmVxdWlyZWQ7XHJcbiAgICAgICAgICAgIGRhdGVUaW1lLnZpZXdUeXBlID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLnZpZXdUeXBlO1xyXG4gICAgICAgICAgICBkYXRlVGltZS5sYWJlbERlc2NyaXB0aW9uID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxEZXNjcmlwdGlvbiA6IFwiXCI7XHJcbiAgICAgICAgICAgIGRhdGVUaW1lLnBpY2tlclR5cGUgPSBQaWNrZXJUeXBlLkJvdGg7XHJcbiAgICAgICAgICAgIGRhdGVUaW1lLnNlbGVjdE1vZGUgPSBTZWxlY3RNb2RlLlNpbmdsZTtcclxuICAgICAgICAgICAgZGF0ZVRpbWUuc3RhcnRWaWV3ID0gU3RhcnRWaWV3Lk1vbnRoO1xyXG4gICAgICAgICAgICBkYXRlVGltZS52YWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxEYXRlSW5wdXRDb21wb25lbnQ+KHRoaXMuaXRlbSwgRGF0ZUlucHV0Q29tcG9uZW50LCB0aGlzLmdyb3VwLCBkYXRlVGltZSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgIGNhc2UgRGF0YVR5cGUuVGltZTpcclxuICAgICAgICAgICAgbGV0IHRpbWUgPSBuZXcgRGF0ZVBpY2tlck9wdGlvbnMoKTtcclxuICAgICAgICAgICAgdGltZS5uYW1lID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm5hbWUgKyBcIi5cIiArIGNoYW5nZXMuaXRlbU51bWJlci5jdXJyZW50VmFsdWUgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpO1xyXG4gICAgICAgICAgICB0aW1lLmhpZGVMYWJlbCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5oaWRlTGFiZWw7XHJcbiAgICAgICAgICAgIHRpbWUubGFiZWxLZXkgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxLZXk7XHJcbiAgICAgICAgICAgIHRpbWUuaXNSZXF1aXJlZCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5pc1JlcXVpcmVkO1xyXG4gICAgICAgICAgICB0aW1lLnZpZXdUeXBlID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLnZpZXdUeXBlO1xyXG4gICAgICAgICAgICB0aW1lLmxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbERlc2NyaXB0aW9uIDogXCJcIjtcclxuICAgICAgICAgICAgdGltZS5waWNrZXJUeXBlID0gUGlja2VyVHlwZS5UaW1lcjtcclxuICAgICAgICAgICAgdGltZS5zZWxlY3RNb2RlID0gU2VsZWN0TW9kZS5TaW5nbGU7XHJcbiAgICAgICAgICAgIHRpbWUuc3RhcnRWaWV3ID0gU3RhcnRWaWV3Lk1vbnRoO1xyXG4gICAgICAgICAgICB0aW1lLnZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PERhdGVJbnB1dENvbXBvbmVudD4odGhpcy5pdGVtLCBEYXRlSW5wdXRDb21wb25lbnQsIHRoaXMuZ3JvdXAsIHRpbWUpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIC8vI2VuZHJlZ2lvblxyXG5cclxuICAgICAgICAgIC8vI3JlZ2lvbiBEcm9wZG93blxyXG4gICAgICAgICAgY2FzZSBEYXRhVHlwZS5TaW5nbGVTZWxlY3Q6XHJcbiAgICAgICAgICAgIGxldCBzaW5nbGVTZWxlY3QgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICAgIHNpbmdsZVNlbGVjdC5uYW1lID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm5hbWUgKyBcIi5cIiArIGNoYW5nZXMuaXRlbU51bWJlci5jdXJyZW50VmFsdWUgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpO1xyXG4gICAgICAgICAgICBzaW5nbGVTZWxlY3QuaGlkZUxhYmVsID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmhpZGVMYWJlbDtcclxuICAgICAgICAgICAgc2luZ2xlU2VsZWN0LmxhYmVsS2V5ID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsS2V5O1xyXG4gICAgICAgICAgICBzaW5nbGVTZWxlY3QuaXNSZXF1aXJlZCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5pc1JlcXVpcmVkO1xyXG4gICAgICAgICAgICBzaW5nbGVTZWxlY3Qudmlld1R5cGUgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMudmlld1R5cGU7XHJcbiAgICAgICAgICAgIHNpbmdsZVNlbGVjdC5sYWJlbERlc2NyaXB0aW9uID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxEZXNjcmlwdGlvbiA6IFwiXCI7XHJcbiAgICAgICAgICAgIHNpbmdsZVNlbGVjdC5kYXRhU291cmNlID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmRhdGFTb3VyY2U7XHJcbiAgICAgICAgICAgIHNpbmdsZVNlbGVjdC5zaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgICBzaW5nbGVTZWxlY3Quc2hvd0NoZWNrYm94ID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHNpbmdsZVNlbGVjdC5hbGxvd1NlYXJjaEZpbHRlciA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5oYXNTZWFyY2g7XHJcbiAgICAgICAgICAgIHNpbmdsZVNlbGVjdC5zZWxlY3RlZEl0ZW1zID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PERyb3Bkb3duTGlzdENvbXBvbmVudD4odGhpcy5pdGVtLCBEcm9wZG93bkxpc3RDb21wb25lbnQsIHRoaXMuZ3JvdXAsIHNpbmdsZVNlbGVjdCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBEYXRhVHlwZS5NdWxpcGxlU2VsZWN0OlxyXG4gICAgICAgICAgICBsZXQgbXVsaXBsZVNlbGVjdCA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgICAgbXVsaXBsZVNlbGVjdC5uYW1lID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm5hbWUgKyBcIi5cIiArIGNoYW5nZXMuaXRlbU51bWJlci5jdXJyZW50VmFsdWUgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpO1xyXG4gICAgICAgICAgICBtdWxpcGxlU2VsZWN0LmhpZGVMYWJlbCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5oaWRlTGFiZWw7XHJcbiAgICAgICAgICAgIG11bGlwbGVTZWxlY3QubGFiZWxLZXkgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxLZXk7XHJcbiAgICAgICAgICAgIG11bGlwbGVTZWxlY3QuaXNSZXF1aXJlZCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5pc1JlcXVpcmVkO1xyXG4gICAgICAgICAgICBtdWxpcGxlU2VsZWN0LnZpZXdUeXBlID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLnZpZXdUeXBlO1xyXG4gICAgICAgICAgICBtdWxpcGxlU2VsZWN0LmxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbERlc2NyaXB0aW9uIDogXCJcIjtcclxuICAgICAgICAgICAgbXVsaXBsZVNlbGVjdC5kYXRhU291cmNlID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmRhdGFTb3VyY2U7XHJcbiAgICAgICAgICAgIG11bGlwbGVTZWxlY3Quc2luZ2xlU2VsZWN0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgICAgIG11bGlwbGVTZWxlY3Quc2hvd0NoZWNrYm94ID0gZmFsc2U7XHJcbiAgICAgICAgICAgIG11bGlwbGVTZWxlY3QuYWxsb3dTZWFyY2hGaWx0ZXIgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuaGFzU2VhcmNoO1xyXG4gICAgICAgICAgICBtdWxpcGxlU2VsZWN0LnNlbGVjdGVkSXRlbXMgPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8RHJvcGRvd25MaXN0Q29tcG9uZW50Pih0aGlzLml0ZW0sIERyb3Bkb3duTGlzdENvbXBvbmVudCwgdGhpcy5ncm91cCwgbXVsaXBsZVNlbGVjdCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBEYXRhVHlwZS5Hb2FsOlxyXG4gICAgICAgICAgICBsZXQgR29hbCA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgICAgR29hbC5uYW1lID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm5hbWUgKyBcIi5cIiArIGNoYW5nZXMuaXRlbU51bWJlci5jdXJyZW50VmFsdWUgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpO1xyXG4gICAgICAgICAgICBHb2FsLmhpZGVMYWJlbCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5oaWRlTGFiZWw7XHJcbiAgICAgICAgICAgIEdvYWwubGFiZWxLZXkgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxLZXk7XHJcbiAgICAgICAgICAgIEdvYWwuaXNSZXF1aXJlZCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5pc1JlcXVpcmVkO1xyXG4gICAgICAgICAgICBHb2FsLnZpZXdUeXBlID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLnZpZXdUeXBlO1xyXG4gICAgICAgICAgICBHb2FsLmxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIDogXCJcIjtcclxuICAgICAgICAgICAgR29hbC5kYXRhU291cmNlID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmRhdGFTb3VyY2U7XHJcbiAgICAgICAgICAgIEdvYWwuc2luZ2xlU2VsZWN0aW9uID0gIXRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5pc011bHRpcGxlO1xyXG4gICAgICAgICAgICBHb2FsLnNob3dDaGVja2JveCA9IGZhbHNlO1xyXG4gICAgICAgICAgICBHb2FsLmFsbG93U2VhcmNoRmlsdGVyID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmhhc1NlYXJjaDtcclxuICAgICAgICAgICAgR29hbC5zZWxlY3RlZEl0ZW1zID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PERyb3Bkb3duTGlzdENvbXBvbmVudD4odGhpcy5pdGVtLCBEcm9wZG93bkxpc3RDb21wb25lbnQsIHRoaXMuZ3JvdXAsIEdvYWwpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgRGF0YVR5cGUuQ2hhbGxlbmdlOlxyXG4gICAgICAgICAgICBsZXQgY2hhbGxlbmdlID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgICBjaGFsbGVuZ2UubmFtZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5uYW1lICsgXCIuXCIgKyBjaGFuZ2VzLml0ZW1OdW1iZXIuY3VycmVudFZhbHVlICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgY2hhbGxlbmdlLmhpZGVMYWJlbCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5oaWRlTGFiZWw7XHJcbiAgICAgICAgICAgIGNoYWxsZW5nZS5sYWJlbEtleSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbEtleTtcclxuICAgICAgICAgICAgY2hhbGxlbmdlLmlzUmVxdWlyZWQgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuaXNSZXF1aXJlZDtcclxuICAgICAgICAgICAgY2hhbGxlbmdlLnZpZXdUeXBlID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLnZpZXdUeXBlO1xyXG4gICAgICAgICAgICBjaGFsbGVuZ2UubGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbERlc2NyaXB0aW9uID8gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsRGVzY3JpcHRpb24gOiBcIlwiO1xyXG4gICAgICAgICAgICBjaGFsbGVuZ2UuZGF0YVNvdXJjZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5kYXRhU291cmNlO1xyXG4gICAgICAgICAgICBjaGFsbGVuZ2UuZGF0YVNvdXJjZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5kYXRhU291cmNlO1xyXG4gICAgICAgICAgICBjaGFsbGVuZ2Uuc2luZ2xlU2VsZWN0aW9uID0gIXRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5pc011bHRpcGxlO1xyXG4gICAgICAgICAgICBjaGFsbGVuZ2Uuc2hvd0NoZWNrYm94ID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGNoYWxsZW5nZS5hbGxvd1NlYXJjaEZpbHRlciA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5oYXNTZWFyY2g7XHJcbiAgICAgICAgICAgIGNoYWxsZW5nZS5zZWxlY3RlZEl0ZW1zID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PERyb3Bkb3duTGlzdENvbXBvbmVudD4odGhpcy5pdGVtLCBEcm9wZG93bkxpc3RDb21wb25lbnQsIHRoaXMuZ3JvdXAsIGNoYWxsZW5nZSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBEYXRhVHlwZS5Jbm5vdmF0aW9uTGFiOlxyXG4gICAgICAgICAgICBsZXQgaW5ub3ZhdGlvbkxhYiA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgICAgaW5ub3ZhdGlvbkxhYi5uYW1lID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm5hbWUgKyBcIi5cIiArIGNoYW5nZXMuaXRlbU51bWJlci5jdXJyZW50VmFsdWUgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpO1xyXG4gICAgICAgICAgICBpbm5vdmF0aW9uTGFiLmhpZGVMYWJlbCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5oaWRlTGFiZWw7XHJcbiAgICAgICAgICAgIGlubm92YXRpb25MYWIubGFiZWxLZXkgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxLZXk7XHJcbiAgICAgICAgICAgIGlubm92YXRpb25MYWIuaXNSZXF1aXJlZCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5pc1JlcXVpcmVkO1xyXG4gICAgICAgICAgICBpbm5vdmF0aW9uTGFiLnZpZXdUeXBlID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLnZpZXdUeXBlO1xyXG4gICAgICAgICAgICBpbm5vdmF0aW9uTGFiLmxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbERlc2NyaXB0aW9uIDogXCJcIjtcclxuICAgICAgICAgICAgaW5ub3ZhdGlvbkxhYi5kYXRhU291cmNlID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmRhdGFTb3VyY2U7XHJcbiAgICAgICAgICAgIGlubm92YXRpb25MYWIuc2luZ2xlU2VsZWN0aW9uID0gIXRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5pc011bHRpcGxlO1xyXG4gICAgICAgICAgICBpbm5vdmF0aW9uTGFiLnNob3dDaGVja2JveCA9IGZhbHNlO1xyXG4gICAgICAgICAgICBpbm5vdmF0aW9uTGFiLmFsbG93U2VhcmNoRmlsdGVyID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmhhc1NlYXJjaDtcclxuICAgICAgICAgICAgaW5ub3ZhdGlvbkxhYi5zZWxlY3RlZEl0ZW1zID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PERyb3Bkb3duTGlzdENvbXBvbmVudD4odGhpcy5pdGVtLCBEcm9wZG93bkxpc3RDb21wb25lbnQsIHRoaXMuZ3JvdXAsIGlubm92YXRpb25MYWIpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgRGF0YVR5cGUuQ291bnRyeTpcclxuICAgICAgICAgICAgbGV0IGNvdW50cnkgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICAgIGNvdW50cnkubmFtZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5uYW1lICsgXCIuXCIgKyBjaGFuZ2VzLml0ZW1OdW1iZXIuY3VycmVudFZhbHVlICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgY291bnRyeS5oaWRlTGFiZWwgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuaGlkZUxhYmVsO1xyXG4gICAgICAgICAgICBjb3VudHJ5LmxhYmVsS2V5ID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsS2V5O1xyXG4gICAgICAgICAgICBjb3VudHJ5LmlzUmVxdWlyZWQgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuaXNSZXF1aXJlZDtcclxuICAgICAgICAgICAgY291bnRyeS52aWV3VHlwZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy52aWV3VHlwZTtcclxuICAgICAgICAgICAgY291bnRyeS5sYWJlbERlc2NyaXB0aW9uID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxEZXNjcmlwdGlvbiA6IFwiXCI7XHJcbiAgICAgICAgICAgIGNvdW50cnkuZGF0YVNvdXJjZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5kYXRhU291cmNlO1xyXG4gICAgICAgICAgICBjb3VudHJ5LnNpbmdsZVNlbGVjdGlvbiA9ICF0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuaXNNdWx0aXBsZTtcclxuICAgICAgICAgICAgY291bnRyeS5zaG93Q2hlY2tib3ggPSBmYWxzZTtcclxuICAgICAgICAgICAgY291bnRyeS5hbGxvd1NlYXJjaEZpbHRlciA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5oYXNTZWFyY2g7XHJcbiAgICAgICAgICAgIGNvdW50cnkuc2VsZWN0ZWRJdGVtcyA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxEcm9wZG93bkxpc3RDb21wb25lbnQ+KHRoaXMuaXRlbSwgRHJvcGRvd25MaXN0Q29tcG9uZW50LCB0aGlzLmdyb3VwLCBjb3VudHJ5KTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAvLyNlbmRyZWdpb25cclxuXHJcbiAgICAgICAgICAvLyNyZWdpb24gRmlsZVVwbG9hZFxyXG4gICAgICAgICAgY2FzZSBEYXRhVHlwZS5GaWxlOlxyXG4gICAgICAgICAgICBsZXQgZmlsZSA9IG5ldyBGaWxlVXBsb2FkT3B0aW9ucygpO1xyXG4gICAgICAgICAgICBmaWxlLm5hbWUgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubmFtZSArIFwiLlwiICsgY2hhbmdlcy5pdGVtTnVtYmVyLmN1cnJlbnRWYWx1ZSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgIGZpbGUuaGlkZUxhYmVsID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmhpZGVMYWJlbDtcclxuICAgICAgICAgICAgZmlsZS5sYWJlbEtleSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbEtleTtcclxuICAgICAgICAgICAgZmlsZS5pc1JlcXVpcmVkID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmlzUmVxdWlyZWQ7XHJcbiAgICAgICAgICAgIGZpbGUudmlld1R5cGUgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMudmlld1R5cGU7XHJcbiAgICAgICAgICAgIGZpbGUubGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbERlc2NyaXB0aW9uID8gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsRGVzY3JpcHRpb24gOiBcIlwiO1xyXG4gICAgICAgICAgICBmaWxlLmZpbGVNYXhTaXplSW5NQiA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5tYXhGaWxlU2l6ZUluTUI7XHJcbiAgICAgICAgICAgIGZpbGUudmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8RmlsZVVwbG9hZENvbXBvbmVudD4odGhpcy5pdGVtLCBGaWxlVXBsb2FkQ29tcG9uZW50LCB0aGlzLmdyb3VwLCBmaWxlKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIERhdGFUeXBlLk11bHRpRmlsZTpcclxuICAgICAgICAgICAgbGV0IG11bHRpRmlsZSA9IG5ldyBGaWxlVXBsb2FkT3B0aW9ucygpO1xyXG4gICAgICAgICAgICBmaWxlLm5hbWUgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubmFtZSArIFwiLlwiICsgY2hhbmdlcy5pdGVtTnVtYmVyLmN1cnJlbnRWYWx1ZSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgIGZpbGUuaGlkZUxhYmVsID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmhpZGVMYWJlbDtcclxuICAgICAgICAgICAgZmlsZS5sYWJlbEtleSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbEtleTtcclxuICAgICAgICAgICAgZmlsZS5pc1JlcXVpcmVkID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmlzUmVxdWlyZWQ7XHJcbiAgICAgICAgICAgIGZpbGUudmlld1R5cGUgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMudmlld1R5cGU7XHJcbiAgICAgICAgICAgIGZpbGUubGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbERlc2NyaXB0aW9uID8gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsRGVzY3JpcHRpb24gOiBcIlwiO1xyXG4gICAgICAgICAgICBtdWx0aUZpbGUubWF4U2l6ZUZvckFsbEZpbGVzSW5NQiA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5tYXhGaWxlU2l6ZUluTUI7XHJcbiAgICAgICAgICAgIG11bHRpRmlsZS5tYXhOb09mRmlsZXMgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubWF4RmlsZUNvdW50O1xyXG4gICAgICAgICAgICBtdWx0aUZpbGUuaXNNdWx0aXBsZUZpbGUgPSB0cnVlO1xyXG4gICAgICAgICAgICBtdWx0aUZpbGUudmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8RmlsZVVwbG9hZENvbXBvbmVudD4odGhpcy5pdGVtLCBGaWxlVXBsb2FkQ29tcG9uZW50LCB0aGlzLmdyb3VwLCBtdWx0aUZpbGUpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIC8vI2VuZHJlZ2lvblxyXG5cclxuICAgICAgICAgIC8vI3JlZ2lvbiBJbWFnZVVwbG9hZFxyXG4gICAgICAgICAgY2FzZSBEYXRhVHlwZS5JbWFnZTpcclxuICAgICAgICAgICAgbGV0IGltYWdlID0gbmV3IEltYWdlVXBsb2FkT3B0aW9ucygpO1xyXG4gICAgICAgICAgICBpbWFnZS5uYW1lID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm5hbWUgKyBcIi5cIiArIGNoYW5nZXMuaXRlbU51bWJlci5jdXJyZW50VmFsdWUgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpO1xyXG4gICAgICAgICAgICBpbWFnZS5oaWRlTGFiZWwgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuaGlkZUxhYmVsO1xyXG4gICAgICAgICAgICBpbWFnZS5sYWJlbEtleSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbEtleTtcclxuICAgICAgICAgICAgaW1hZ2UuaXNSZXF1aXJlZCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5pc1JlcXVpcmVkO1xyXG4gICAgICAgICAgICBpbWFnZS52aWV3VHlwZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy52aWV3VHlwZTtcclxuICAgICAgICAgICAgaW1hZ2UubGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbERlc2NyaXB0aW9uID8gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsRGVzY3JpcHRpb24gOiBcIlwiO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm1heEZpbGVTaXplSW5NQilcclxuICAgICAgICAgICAgICBpbWFnZS5maWxlTWF4U2l6ZUluTUIgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubWF4RmlsZVNpemVJbk1CO1xyXG4gICAgICAgICAgICBpbWFnZS52YWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxJbWFnZVVwbG9hZGVyQ29tcG9uZW50Pih0aGlzLml0ZW0sIEltYWdlVXBsb2FkZXJDb21wb25lbnQsIHRoaXMuZ3JvdXAsIGltYWdlKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIERhdGFUeXBlLkNvdmVyUGhvdG86XHJcbiAgICAgICAgICAgIGxldCBjb3ZlclBob3RvID0gbmV3IEltYWdlVXBsb2FkT3B0aW9ucygpO1xyXG4gICAgICAgICAgICBjb3ZlclBob3RvLm5hbWUgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubmFtZSArIFwiLlwiICsgY2hhbmdlcy5pdGVtTnVtYmVyLmN1cnJlbnRWYWx1ZSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgIGNvdmVyUGhvdG8uaGlkZUxhYmVsID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmhpZGVMYWJlbDtcclxuICAgICAgICAgICAgY292ZXJQaG90by5sYWJlbEtleSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbEtleTtcclxuICAgICAgICAgICAgY292ZXJQaG90by5pc1JlcXVpcmVkID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmlzUmVxdWlyZWQ7XHJcbiAgICAgICAgICAgIGNvdmVyUGhvdG8udmlld1R5cGUgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMudmlld1R5cGU7XHJcbiAgICAgICAgICAgIGNvdmVyUGhvdG8ubGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbERlc2NyaXB0aW9uID8gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsRGVzY3JpcHRpb24gOiBcIlwiO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm1heEZpbGVTaXplSW5NQilcclxuICAgICAgICAgICAgICBjb3ZlclBob3RvLmZpbGVNYXhTaXplSW5NQiA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5tYXhGaWxlU2l6ZUluTUI7XHJcbiAgICAgICAgICAgIGNvdmVyUGhvdG8udmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8SW1hZ2VVcGxvYWRlckNvbXBvbmVudD4odGhpcy5pdGVtLCBJbWFnZVVwbG9hZGVyQ29tcG9uZW50LCB0aGlzLmdyb3VwLCBjb3ZlclBob3RvKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAvLyNlbmRyZWdpb25cclxuICAgICAgICAgIC8vI3JlZ2lvbiBNb2JpbGVcclxuICAgICAgICAgIGNhc2UgRGF0YVR5cGUuTW9iaWxlOlxyXG4gICAgICAgICAgICBsZXQgbW9iaWxlID0gbmV3IFBob25lT3B0aW9ucygpO1xyXG4gICAgICAgICAgICBtb2JpbGUubmFtZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5uYW1lICsgXCIuXCIgKyBjaGFuZ2VzLml0ZW1OdW1iZXIuY3VycmVudFZhbHVlICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgbW9iaWxlLmhpZGVMYWJlbCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5oaWRlTGFiZWw7XHJcbiAgICAgICAgICAgIG1vYmlsZS5sYWJlbEtleSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbEtleTtcclxuICAgICAgICAgICAgbW9iaWxlLmlzUmVxdWlyZWQgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuaXNSZXF1aXJlZDtcclxuICAgICAgICAgICAgbW9iaWxlLnZpZXdUeXBlID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLnZpZXdUeXBlO1xyXG4gICAgICAgICAgICBtb2JpbGUubGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbERlc2NyaXB0aW9uID8gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsRGVzY3JpcHRpb24gOiBcIlwiO1xyXG4gICAgICAgICAgICBtb2JpbGUuYWxsb3dTZWFyY2ggPSB0cnVlO1xyXG4gICAgICAgICAgICBtb2JpbGUucGhvbmVWYWxpZGF0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgICAgbW9iaWxlLnNlbGVjdEZpcnN0Q291bnRyeSA9IHRydWU7XHJcbiAgICAgICAgICAgIG1vYmlsZS5lbmFibGVQbGFjZWhvbGRlciA9IHRydWU7XHJcbiAgICAgICAgICAgIG1vYmlsZS52YWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxQaG9uZUNvbXBvbmVudD4odGhpcy5pdGVtLCBQaG9uZUNvbXBvbmVudCwgdGhpcy5ncm91cCwgbW9iaWxlKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAvLyNlbmRyZWdpb25cclxuXHJcbiAgICAgICAgICAvLyNyZWdpb24gTXVsdGlsaW5lVGV4dFxyXG4gICAgICAgICAgY2FzZSBEYXRhVHlwZS5NdWx0aWxpbmVUZXh0OlxyXG4gICAgICAgICAgICBsZXQgbXVsdGlsaW5lVGV4dCA9IG5ldyBUZXh0QXJlYU9wdGlvbnMoKTtcclxuICAgICAgICAgICAgbXVsdGlsaW5lVGV4dC5uYW1lID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm5hbWUgKyBcIi5cIiArIGNoYW5nZXMuaXRlbU51bWJlci5jdXJyZW50VmFsdWUgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpO1xyXG4gICAgICAgICAgICBtdWx0aWxpbmVUZXh0LmhpZGVMYWJlbCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5oaWRlTGFiZWw7XHJcbiAgICAgICAgICAgIG11bHRpbGluZVRleHQubGFiZWxLZXkgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuTGFiZWxLZXk7XHJcbiAgICAgICAgICAgIG11bHRpbGluZVRleHQuaXNSZXF1aXJlZCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5pc1JlcXVpcmVkO1xyXG4gICAgICAgICAgICBtdWx0aWxpbmVUZXh0LnZpZXdUeXBlID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLnZpZXdUeXBlO1xyXG4gICAgICAgICAgICBtdWx0aWxpbmVUZXh0LmxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbERlc2NyaXB0aW9uIDogXCJcIjtcclxuICAgICAgICAgICAgaWYgKHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5tYXhMZW5ndGgpXHJcbiAgICAgICAgICAgICAgbXVsdGlsaW5lVGV4dC5tYXhMZW5ndGggPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubWF4TGVuZ3RoO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm1pbkxlbmd0aClcclxuICAgICAgICAgICAgICBtdWx0aWxpbmVUZXh0Lm1pbkxlbmd0aCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5taW5MZW5ndGg7XHJcbiAgICAgICAgICAgIG11bHRpbGluZVRleHQucm93cyA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5yb3dzO1xyXG4gICAgICAgICAgICBtdWx0aWxpbmVUZXh0LmZvcmNlRGlyZWN0aW9uID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLkZvcmNlRGlyZWN0aW9uO1xyXG4gICAgICAgICAgICBtdWx0aWxpbmVUZXh0LnZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PFRleHRBcmVhQ29tcG9uZW50Pih0aGlzLml0ZW0sIFRleHRBcmVhQ29tcG9uZW50LCB0aGlzLmdyb3VwLCBtdWx0aWxpbmVUZXh0KTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAvLyNlbmRyZWdpb25cclxuXHJcbiAgICAgICAgICAvLyNyZWdpb24gSFRNTFxyXG4gICAgICAgICAgY2FzZSBEYXRhVHlwZS5IVE1MOlxyXG4gICAgICAgICAgICBsZXQgSFRNTCA9IG5ldyBIdG1sRWRpdG9yT3B0aW9ucygpO1xyXG4gICAgICAgICAgICBIVE1MLm5hbWUgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubmFtZSArIFwiLlwiICsgY2hhbmdlcy5pdGVtTnVtYmVyLmN1cnJlbnRWYWx1ZSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgIEhUTUwuaGlkZUxhYmVsID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmhpZGVMYWJlbDtcclxuICAgICAgICAgICAgSFRNTC5sYWJlbEtleSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbEtleTtcclxuICAgICAgICAgICAgSFRNTC5pc1JlcXVpcmVkID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmlzUmVxdWlyZWQ7XHJcbiAgICAgICAgICAgIEhUTUwudmlld1R5cGUgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMudmlld1R5cGU7XHJcbiAgICAgICAgICAgIEhUTUwubGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbERlc2NyaXB0aW9uID8gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsRGVzY3JpcHRpb24gOiBcIlwiO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm1heExlbmd0aClcclxuICAgICAgICAgICAgICBIVE1MLm1heExlbmd0aCA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5tYXhMZW5ndGg7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubWluTGVuZ3RoKVxyXG4gICAgICAgICAgICAgIEhUTUwubWluTGVuZ3RoID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm1pbkxlbmd0aDtcclxuICAgICAgICAgICAgSFRNTC5oZWlnaHQgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMucm93cztcclxuICAgICAgICAgICAgSFRNTC5mb3JjZURpcmVjdGlvbiA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5Gb3JjZURpcmVjdGlvbjtcclxuICAgICAgICAgICAgSFRNTC52YWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxIdG1sRWRpdG9yQ29tcG9uZW50Pih0aGlzLml0ZW0sIEh0bWxFZGl0b3JDb21wb25lbnQsIHRoaXMuZ3JvdXAsIEhUTUwpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIC8vI2VuZHJlZ2lvblxyXG5cclxuICAgICAgICAgIC8vI3JlZ2lvbiBCb29sZWFuXHJcbiAgICAgICAgICBjYXNlIERhdGFUeXBlLkJvb2xlYW46XHJcbiAgICAgICAgICAgIGxldCBib29sZWFuID0gbmV3IFRvZ2dsZVNsaWRlT3B0aW9ucygpO1xyXG4gICAgICAgICAgICBib29sZWFuLm5hbWUgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubmFtZSArIFwiLlwiICsgY2hhbmdlcy5pdGVtTnVtYmVyLmN1cnJlbnRWYWx1ZSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgIGJvb2xlYW4uaGlkZUxhYmVsID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmhpZGVMYWJlbDtcclxuICAgICAgICAgICAgYm9vbGVhbi5sYWJlbEtleSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbEtleTtcclxuICAgICAgICAgICAgYm9vbGVhbi52aWV3VHlwZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy52aWV3VHlwZTtcclxuICAgICAgICAgICAgYm9vbGVhbi5sYWJlbERlc2NyaXB0aW9uID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxEZXNjcmlwdGlvbiA6IFwiXCI7XHJcbiAgICAgICAgICAgIGJvb2xlYW4udmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8VG9nZ2xlc2xpZGVDb21wb25lbnQ+KHRoaXMuaXRlbSwgVG9nZ2xlc2xpZGVDb21wb25lbnQsIHRoaXMuZ3JvdXAsIGJvb2xlYW4pO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIC8vI2VuZHJlZ2lvblxyXG5cclxuICAgICAgICAgIC8vI3JlZ2lvbiBMb2NhdGlvblxyXG4gICAgICAgICAgY2FzZSBEYXRhVHlwZS5Mb2NhdGlvbjpcclxuICAgICAgICAgICAgbGV0IExvY2F0aW9uID0gbmV3IE1hcEF1dG9Db21wbGV0ZU9wdGlvbnMoKTtcclxuICAgICAgICAgICAgTG9jYXRpb24ubmFtZSA9IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5uYW1lICsgXCIuXCIgKyBjaGFuZ2VzLml0ZW1OdW1iZXIuY3VycmVudFZhbHVlICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgTG9jYXRpb24uaGlkZUxhYmVsID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmhpZGVMYWJlbDtcclxuICAgICAgICAgICAgTG9jYXRpb24ubGFiZWxLZXkgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxLZXk7XHJcbiAgICAgICAgICAgIExvY2F0aW9uLmlzUmVxdWlyZWQgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMuaXNSZXF1aXJlZDtcclxuICAgICAgICAgICAgTG9jYXRpb24udmlld1R5cGUgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMudmlld1R5cGU7XHJcbiAgICAgICAgICAgIExvY2F0aW9uLmxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMucmVwZWF0ZXJGaWVsZC5jb250cm9sT3B0aW9ucy5sYWJlbERlc2NyaXB0aW9uIDogXCJcIjtcclxuICAgICAgICAgICAgTG9jYXRpb24udmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8TWFwQXV0b0NvbXBsZXRlQ29tcG9uZW50Pih0aGlzLml0ZW0sIE1hcEF1dG9Db21wbGV0ZUNvbXBvbmVudCwgdGhpcy5ncm91cCwgTG9jYXRpb24pO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIC8vI2VuZHJlZ2lvblxyXG5cclxuICAgICAgICAgIC8vI3JlZ2lvbiBDaGVja0JveFxyXG4gICAgICAgICAgY2FzZSBEYXRhVHlwZS5DaGVja0JveDpcclxuICAgICAgICAgICAgbGV0IGNoZWNrQm94ID0gbmV3IENoZWNrQm94T3B0aW9ucygpO1xyXG4gICAgICAgICAgICBjaGVja0JveC5uYW1lID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm5hbWUgKyBcIi5cIiArIHRoaXMuaXRlbU51bWJlci50b1N0cmluZygpICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgY2hlY2tCb3guaGlkZUxhYmVsID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmhpZGVMYWJlbDtcclxuICAgICAgICAgICAgY2hlY2tCb3gubGFiZWxLZXkgPSB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxLZXk7XHJcbiAgICAgICAgICAgIGNoZWNrQm94LnZpZXdUeXBlID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLnZpZXdUeXBlO1xyXG4gICAgICAgICAgICBjaGVja0JveC5sYWJlbERlc2NyaXB0aW9uID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLmxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLnJlcGVhdGVyRmllbGQuY29udHJvbE9wdGlvbnMubGFiZWxEZXNjcmlwdGlvbiA6IFwiXCI7XHJcbiAgICAgICAgICAgIGNoZWNrQm94Lm91dHB1dEZ1bmN0aW9uID0gdGhpcy5yZXBlYXRlckZpZWxkLmNvbnRyb2xPcHRpb25zLm91dHB1dEZ1bmN0aW9uO1xyXG4gICAgICAgICAgICBjaGVja0JveC52YWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxDaGVja0JveENvbXBvbmVudD4odGhpcy5pdGVtLCBDaGVja0JveENvbXBvbmVudCwgdGhpcy5ncm91cCwgY2hlY2tCb3gpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIC8vI2VuZHJlZ2lvblxyXG5cclxuICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH1cclxuXHJcbiAgfVxyXG5cclxufVxyXG4iLCI8bmctY29udGFpbmVyICNJdGVtPjwvbmctY29udGFpbmVyPlxyXG4iXX0=