@heartlandone/vega-angular 2.96.0 → 2.98.0

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.
@@ -553,11 +553,11 @@ let VegaCheckbox = class VegaCheckbox {
553
553
  }
554
554
  };
555
555
  VegaCheckbox.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: VegaCheckbox, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
556
- VegaCheckbox.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaCheckbox, selector: "vega-checkbox", inputs: { checked: "checked", disabled: "disabled", identifier: "identifier", indeterminate: "indeterminate", isValid: "isValid", required: "required", size: "size", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
556
+ VegaCheckbox.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaCheckbox, selector: "vega-checkbox", inputs: { checked: "checked", disabled: "disabled", identifier: "identifier", indeterminate: "indeterminate", isValid: "isValid", name: "name", required: "required", size: "size", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
557
557
  VegaCheckbox = __decorate([
558
558
  ProxyCmp({
559
559
  defineCustomElementFn: undefined,
560
- inputs: ['checked', 'disabled', 'identifier', 'indeterminate', 'isValid', 'required', 'size', 'value'],
560
+ inputs: ['checked', 'disabled', 'identifier', 'indeterminate', 'isValid', 'name', 'required', 'size', 'value'],
561
561
  methods: ['setValue']
562
562
  })
563
563
  ], VegaCheckbox);
@@ -568,7 +568,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
568
568
  selector: 'vega-checkbox',
569
569
  changeDetection: ChangeDetectionStrategy.OnPush,
570
570
  template: '<ng-content></ng-content>',
571
- inputs: ['checked', 'disabled', 'identifier', 'indeterminate', 'isValid', 'required', 'size', 'value']
571
+ inputs: ['checked', 'disabled', 'identifier', 'indeterminate', 'isValid', 'name', 'required', 'size', 'value']
572
572
  }]
573
573
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
574
574
  let VegaCheckboxGroup = class VegaCheckboxGroup {
@@ -580,11 +580,11 @@ let VegaCheckboxGroup = class VegaCheckboxGroup {
580
580
  }
581
581
  };
582
582
  VegaCheckboxGroup.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: VegaCheckboxGroup, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
583
- VegaCheckboxGroup.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaCheckboxGroup, selector: "vega-checkbox-group", inputs: { autoValidation: "autoValidation", disabled: "disabled", hint: "hint", isValid: "isValid", label: "label", optional: "optional", required: "required", validationRules: "validationRules", value: "value", vegaFlexProp: "vegaFlexProp" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
583
+ VegaCheckboxGroup.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaCheckboxGroup, selector: "vega-checkbox-group", inputs: { autoValidation: "autoValidation", disabled: "disabled", hint: "hint", isValid: "isValid", label: "label", name: "name", optional: "optional", required: "required", validationRules: "validationRules", value: "value", vegaFlexProp: "vegaFlexProp" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
584
584
  VegaCheckboxGroup = __decorate([
585
585
  ProxyCmp({
586
586
  defineCustomElementFn: undefined,
587
- inputs: ['autoValidation', 'disabled', 'hint', 'isValid', 'label', 'optional', 'required', 'validationRules', 'value', 'vegaFlexProp']
587
+ inputs: ['autoValidation', 'disabled', 'hint', 'isValid', 'label', 'name', 'optional', 'required', 'validationRules', 'value', 'vegaFlexProp']
588
588
  })
589
589
  ], VegaCheckboxGroup);
590
590
  export { VegaCheckboxGroup };
@@ -594,7 +594,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
594
594
  selector: 'vega-checkbox-group',
595
595
  changeDetection: ChangeDetectionStrategy.OnPush,
596
596
  template: '<ng-content></ng-content>',
597
- inputs: ['autoValidation', 'disabled', 'hint', 'isValid', 'label', 'optional', 'required', 'validationRules', 'value', 'vegaFlexProp']
597
+ inputs: ['autoValidation', 'disabled', 'hint', 'isValid', 'label', 'name', 'optional', 'required', 'validationRules', 'value', 'vegaFlexProp']
598
598
  }]
599
599
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
600
600
  let VegaChip = class VegaChip {
@@ -659,11 +659,11 @@ let VegaColorPicker = class VegaColorPicker {
659
659
  }
660
660
  };
661
661
  VegaColorPicker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: VegaColorPicker, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
662
- VegaColorPicker.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaColorPicker, selector: "vega-color-picker", inputs: { autoValidation: "autoValidation", colors: "colors", columns: "columns", disabled: "disabled", hint: "hint", isInline: "isInline", isValid: "isValid", label: "label", optional: "optional", required: "required", validationRules: "validationRules", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
662
+ VegaColorPicker.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaColorPicker, selector: "vega-color-picker", inputs: { autoValidation: "autoValidation", colors: "colors", columns: "columns", disabled: "disabled", hint: "hint", isInline: "isInline", isValid: "isValid", label: "label", name: "name", optional: "optional", required: "required", validationRules: "validationRules", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
663
663
  VegaColorPicker = __decorate([
664
664
  ProxyCmp({
665
665
  defineCustomElementFn: undefined,
666
- inputs: ['autoValidation', 'colors', 'columns', 'disabled', 'hint', 'isInline', 'isValid', 'label', 'optional', 'required', 'validationRules', 'value']
666
+ inputs: ['autoValidation', 'colors', 'columns', 'disabled', 'hint', 'isInline', 'isValid', 'label', 'name', 'optional', 'required', 'validationRules', 'value']
667
667
  })
668
668
  ], VegaColorPicker);
669
669
  export { VegaColorPicker };
@@ -673,7 +673,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
673
673
  selector: 'vega-color-picker',
674
674
  changeDetection: ChangeDetectionStrategy.OnPush,
675
675
  template: '<ng-content></ng-content>',
676
- inputs: ['autoValidation', 'colors', 'columns', 'disabled', 'hint', 'isInline', 'isValid', 'label', 'optional', 'required', 'validationRules', 'value']
676
+ inputs: ['autoValidation', 'colors', 'columns', 'disabled', 'hint', 'isInline', 'isValid', 'label', 'name', 'optional', 'required', 'validationRules', 'value']
677
677
  }]
678
678
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
679
679
  let VegaColorSwatch = class VegaColorSwatch {
@@ -711,11 +711,11 @@ let VegaColorSwatchPicker = class VegaColorSwatchPicker {
711
711
  }
712
712
  };
713
713
  VegaColorSwatchPicker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: VegaColorSwatchPicker, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
714
- VegaColorSwatchPicker.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaColorSwatchPicker, selector: "vega-color-swatch-picker", inputs: { autoValidation: "autoValidation", colors: "colors", disabled: "disabled", inputFormatter: "inputFormatter", inputPlaceholder: "inputPlaceholder", inputPrefixIcon: "inputPrefixIcon", isValid: "isValid", label: "label", required: "required", showClearButton: "showClearButton", showInput: "showInput", swatchGridColumns: "swatchGridColumns", validationRules: "validationRules", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
714
+ VegaColorSwatchPicker.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaColorSwatchPicker, selector: "vega-color-swatch-picker", inputs: { autoValidation: "autoValidation", colors: "colors", disabled: "disabled", inputFormatter: "inputFormatter", inputPlaceholder: "inputPlaceholder", inputPrefixIcon: "inputPrefixIcon", isValid: "isValid", label: "label", name: "name", required: "required", showClearButton: "showClearButton", showInput: "showInput", swatchGridColumns: "swatchGridColumns", validationRules: "validationRules", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
715
715
  VegaColorSwatchPicker = __decorate([
716
716
  ProxyCmp({
717
717
  defineCustomElementFn: undefined,
718
- inputs: ['autoValidation', 'colors', 'disabled', 'inputFormatter', 'inputPlaceholder', 'inputPrefixIcon', 'isValid', 'label', 'required', 'showClearButton', 'showInput', 'swatchGridColumns', 'validationRules', 'value']
718
+ inputs: ['autoValidation', 'colors', 'disabled', 'inputFormatter', 'inputPlaceholder', 'inputPrefixIcon', 'isValid', 'label', 'name', 'required', 'showClearButton', 'showInput', 'swatchGridColumns', 'validationRules', 'value']
719
719
  })
720
720
  ], VegaColorSwatchPicker);
721
721
  export { VegaColorSwatchPicker };
@@ -725,7 +725,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
725
725
  selector: 'vega-color-swatch-picker',
726
726
  changeDetection: ChangeDetectionStrategy.OnPush,
727
727
  template: '<ng-content></ng-content>',
728
- inputs: ['autoValidation', 'colors', 'disabled', 'inputFormatter', 'inputPlaceholder', 'inputPrefixIcon', 'isValid', 'label', 'required', 'showClearButton', 'showInput', 'swatchGridColumns', 'validationRules', 'value']
728
+ inputs: ['autoValidation', 'colors', 'disabled', 'inputFormatter', 'inputPlaceholder', 'inputPrefixIcon', 'isValid', 'label', 'name', 'required', 'showClearButton', 'showInput', 'swatchGridColumns', 'validationRules', 'value']
729
729
  }]
730
730
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
731
731
  let VegaComboBox = class VegaComboBox {
@@ -737,11 +737,11 @@ let VegaComboBox = class VegaComboBox {
737
737
  }
738
738
  };
739
739
  VegaComboBox.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: VegaComboBox, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
740
- VegaComboBox.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaComboBox, selector: "vega-combo-box", inputs: { autoValidation: "autoValidation", containerMaxHeight: "containerMaxHeight", disabled: "disabled", hint: "hint", isValid: "isValid", label: "label", optional: "optional", placeholder: "placeholder", required: "required", size: "size", source: "source", useDefaultFilter: "useDefaultFilter", validationRules: "validationRules", value: "value", vegaDropdownProps: "vegaDropdownProps" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
740
+ VegaComboBox.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaComboBox, selector: "vega-combo-box", inputs: { autoValidation: "autoValidation", containerMaxHeight: "containerMaxHeight", disabled: "disabled", hint: "hint", isValid: "isValid", label: "label", name: "name", optional: "optional", placeholder: "placeholder", required: "required", size: "size", source: "source", useDefaultFilter: "useDefaultFilter", validationRules: "validationRules", value: "value", vegaDropdownProps: "vegaDropdownProps" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
741
741
  VegaComboBox = __decorate([
742
742
  ProxyCmp({
743
743
  defineCustomElementFn: undefined,
744
- inputs: ['autoValidation', 'containerMaxHeight', 'disabled', 'hint', 'isValid', 'label', 'optional', 'placeholder', 'required', 'size', 'source', 'useDefaultFilter', 'validationRules', 'value', 'vegaDropdownProps'],
744
+ inputs: ['autoValidation', 'containerMaxHeight', 'disabled', 'hint', 'isValid', 'label', 'name', 'optional', 'placeholder', 'required', 'size', 'source', 'useDefaultFilter', 'validationRules', 'value', 'vegaDropdownProps'],
745
745
  methods: ['close', 'open']
746
746
  })
747
747
  ], VegaComboBox);
@@ -752,7 +752,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
752
752
  selector: 'vega-combo-box',
753
753
  changeDetection: ChangeDetectionStrategy.OnPush,
754
754
  template: '<ng-content></ng-content>',
755
- inputs: ['autoValidation', 'containerMaxHeight', 'disabled', 'hint', 'isValid', 'label', 'optional', 'placeholder', 'required', 'size', 'source', 'useDefaultFilter', 'validationRules', 'value', 'vegaDropdownProps']
755
+ inputs: ['autoValidation', 'containerMaxHeight', 'disabled', 'hint', 'isValid', 'label', 'name', 'optional', 'placeholder', 'required', 'size', 'source', 'useDefaultFilter', 'validationRules', 'value', 'vegaDropdownProps']
756
756
  }]
757
757
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
758
758
  let VegaCounterBadge = class VegaCounterBadge {
@@ -789,11 +789,11 @@ let VegaDatePicker = class VegaDatePicker {
789
789
  }
790
790
  };
791
791
  VegaDatePicker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: VegaDatePicker, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
792
- VegaDatePicker.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaDatePicker, selector: "vega-date-picker", inputs: { allowRepick: "allowRepick", autoValidation: "autoValidation", clearButton: "clearButton", disabled: "disabled", dropdownConfig: "dropdownConfig", format: "format", isDateDisabled: "isDateDisabled", isValid: "isValid", label: "label", maxDate: "maxDate", minDate: "minDate", mode: "mode", optional: "optional", placeholder: "placeholder", readOnly: "readOnly", required: "required", showClearIcon: "showClearIcon", showYearMonthDropdowns: "showYearMonthDropdowns", size: "size", timezone: "timezone", validationRules: "validationRules", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
792
+ VegaDatePicker.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaDatePicker, selector: "vega-date-picker", inputs: { allowRepick: "allowRepick", autoValidation: "autoValidation", clearButton: "clearButton", disabled: "disabled", dropdownConfig: "dropdownConfig", format: "format", isDateDisabled: "isDateDisabled", isValid: "isValid", label: "label", maxDate: "maxDate", minDate: "minDate", mode: "mode", name: "name", optional: "optional", placeholder: "placeholder", readOnly: "readOnly", required: "required", showClearIcon: "showClearIcon", showYearMonthDropdowns: "showYearMonthDropdowns", size: "size", timezone: "timezone", validationRules: "validationRules", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
793
793
  VegaDatePicker = __decorate([
794
794
  ProxyCmp({
795
795
  defineCustomElementFn: undefined,
796
- inputs: ['allowRepick', 'autoValidation', 'clearButton', 'disabled', 'dropdownConfig', 'format', 'isDateDisabled', 'isValid', 'label', 'maxDate', 'minDate', 'mode', 'optional', 'placeholder', 'readOnly', 'required', 'showClearIcon', 'showYearMonthDropdowns', 'size', 'timezone', 'validationRules', 'value'],
796
+ inputs: ['allowRepick', 'autoValidation', 'clearButton', 'disabled', 'dropdownConfig', 'format', 'isDateDisabled', 'isValid', 'label', 'maxDate', 'minDate', 'mode', 'name', 'optional', 'placeholder', 'readOnly', 'required', 'showClearIcon', 'showYearMonthDropdowns', 'size', 'timezone', 'validationRules', 'value'],
797
797
  methods: ['doClose', 'doOpen']
798
798
  })
799
799
  ], VegaDatePicker);
@@ -804,7 +804,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
804
804
  selector: 'vega-date-picker',
805
805
  changeDetection: ChangeDetectionStrategy.OnPush,
806
806
  template: '<ng-content></ng-content>',
807
- inputs: ['allowRepick', 'autoValidation', 'clearButton', 'disabled', 'dropdownConfig', 'format', 'isDateDisabled', 'isValid', 'label', 'maxDate', 'minDate', 'mode', 'optional', 'placeholder', 'readOnly', 'required', 'showClearIcon', 'showYearMonthDropdowns', 'size', 'timezone', 'validationRules', 'value']
807
+ inputs: ['allowRepick', 'autoValidation', 'clearButton', 'disabled', 'dropdownConfig', 'format', 'isDateDisabled', 'isValid', 'label', 'maxDate', 'minDate', 'mode', 'name', 'optional', 'placeholder', 'readOnly', 'required', 'showClearIcon', 'showYearMonthDropdowns', 'size', 'timezone', 'validationRules', 'value']
808
808
  }]
809
809
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
810
810
  let VegaDatePickerCalendar = class VegaDatePickerCalendar {
@@ -1045,11 +1045,11 @@ let VegaFileUploader = class VegaFileUploader {
1045
1045
  }
1046
1046
  };
1047
1047
  VegaFileUploader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: VegaFileUploader, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1048
- VegaFileUploader.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaFileUploader, selector: "vega-file-uploader", inputs: { accept: "accept", autoValidation: "autoValidation", disabled: "disabled", hint: "hint", isValid: "isValid", label: "label", maxCount: "maxCount", optional: "optional", required: "required", validationRules: "validationRules", value: "value", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1048
+ VegaFileUploader.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaFileUploader, selector: "vega-file-uploader", inputs: { accept: "accept", autoValidation: "autoValidation", disableDeleteOnUpload: "disableDeleteOnUpload", disabled: "disabled", hideDeleteButton: "hideDeleteButton", hint: "hint", isValid: "isValid", label: "label", maxCount: "maxCount", name: "name", optional: "optional", required: "required", validationRules: "validationRules", value: "value", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1049
1049
  VegaFileUploader = __decorate([
1050
1050
  ProxyCmp({
1051
1051
  defineCustomElementFn: undefined,
1052
- inputs: ['accept', 'autoValidation', 'disabled', 'hint', 'isValid', 'label', 'maxCount', 'optional', 'required', 'validationRules', 'value', 'variant']
1052
+ inputs: ['accept', 'autoValidation', 'disableDeleteOnUpload', 'disabled', 'hideDeleteButton', 'hint', 'isValid', 'label', 'maxCount', 'name', 'optional', 'required', 'validationRules', 'value', 'variant']
1053
1053
  })
1054
1054
  ], VegaFileUploader);
1055
1055
  export { VegaFileUploader };
@@ -1059,7 +1059,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
1059
1059
  selector: 'vega-file-uploader',
1060
1060
  changeDetection: ChangeDetectionStrategy.OnPush,
1061
1061
  template: '<ng-content></ng-content>',
1062
- inputs: ['accept', 'autoValidation', 'disabled', 'hint', 'isValid', 'label', 'maxCount', 'optional', 'required', 'validationRules', 'value', 'variant']
1062
+ inputs: ['accept', 'autoValidation', 'disableDeleteOnUpload', 'disabled', 'hideDeleteButton', 'hint', 'isValid', 'label', 'maxCount', 'name', 'optional', 'required', 'validationRules', 'value', 'variant']
1063
1063
  }]
1064
1064
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
1065
1065
  let VegaFlagIcon = class VegaFlagIcon {
@@ -1146,11 +1146,11 @@ let VegaForm = class VegaForm {
1146
1146
  }
1147
1147
  };
1148
1148
  VegaForm.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: VegaForm, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1149
- VegaForm.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaForm, selector: "vega-form", inputs: { action: "action", disableBlurValidation: "disableBlurValidation", isTouched: "isTouched", isValid: "isValid", method: "method", useNativeForm: "useNativeForm" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1149
+ VegaForm.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaForm, selector: "vega-form", inputs: { action: "action", disableBlurValidation: "disableBlurValidation", isTouched: "isTouched", isValid: "isValid", method: "method", name: "name", useNativeForm: "useNativeForm" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1150
1150
  VegaForm = __decorate([
1151
1151
  ProxyCmp({
1152
1152
  defineCustomElementFn: undefined,
1153
- inputs: ['action', 'disableBlurValidation', 'isTouched', 'isValid', 'method', 'useNativeForm'],
1153
+ inputs: ['action', 'disableBlurValidation', 'isTouched', 'isValid', 'method', 'name', 'useNativeForm'],
1154
1154
  methods: ['valid', 'getValue', 'setValue', 'reset', 'setValidationStates']
1155
1155
  })
1156
1156
  ], VegaForm);
@@ -1161,7 +1161,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
1161
1161
  selector: 'vega-form',
1162
1162
  changeDetection: ChangeDetectionStrategy.OnPush,
1163
1163
  template: '<ng-content></ng-content>',
1164
- inputs: ['action', 'disableBlurValidation', 'isTouched', 'isValid', 'method', 'useNativeForm']
1164
+ inputs: ['action', 'disableBlurValidation', 'isTouched', 'isValid', 'method', 'name', 'useNativeForm']
1165
1165
  }]
1166
1166
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
1167
1167
  let VegaGrid = class VegaGrid {
@@ -1246,11 +1246,11 @@ let VegaImageUploader = class VegaImageUploader {
1246
1246
  }
1247
1247
  };
1248
1248
  VegaImageUploader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: VegaImageUploader, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1249
- VegaImageUploader.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaImageUploader, selector: "vega-image-uploader", inputs: { accept: "accept", actionSubTitle: "actionSubTitle", actionTitle: "actionTitle", autoValidation: "autoValidation", disabled: "disabled", height: "height", hint: "hint", isValid: "isValid", label: "label", optional: "optional", required: "required", showPreviewButton: "showPreviewButton", showRemoveButton: "showRemoveButton", showReplaceButton: "showReplaceButton", status: "status", validationRules: "validationRules", value: "value", width: "width" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1249
+ VegaImageUploader.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaImageUploader, selector: "vega-image-uploader", inputs: { accept: "accept", actionSubTitle: "actionSubTitle", actionTitle: "actionTitle", autoValidation: "autoValidation", disabled: "disabled", height: "height", hint: "hint", isValid: "isValid", label: "label", name: "name", optional: "optional", required: "required", showPreviewButton: "showPreviewButton", showRemoveButton: "showRemoveButton", showReplaceButton: "showReplaceButton", status: "status", validationRules: "validationRules", value: "value", width: "width" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1250
1250
  VegaImageUploader = __decorate([
1251
1251
  ProxyCmp({
1252
1252
  defineCustomElementFn: undefined,
1253
- inputs: ['accept', 'actionSubTitle', 'actionTitle', 'autoValidation', 'disabled', 'height', 'hint', 'isValid', 'label', 'optional', 'required', 'showPreviewButton', 'showRemoveButton', 'showReplaceButton', 'status', 'validationRules', 'value', 'width'],
1253
+ inputs: ['accept', 'actionSubTitle', 'actionTitle', 'autoValidation', 'disabled', 'height', 'hint', 'isValid', 'label', 'name', 'optional', 'required', 'showPreviewButton', 'showRemoveButton', 'showReplaceButton', 'status', 'validationRules', 'value', 'width'],
1254
1254
  methods: ['getContentURL']
1255
1255
  })
1256
1256
  ], VegaImageUploader);
@@ -1261,7 +1261,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
1261
1261
  selector: 'vega-image-uploader',
1262
1262
  changeDetection: ChangeDetectionStrategy.OnPush,
1263
1263
  template: '<ng-content></ng-content>',
1264
- inputs: ['accept', 'actionSubTitle', 'actionTitle', 'autoValidation', 'disabled', 'height', 'hint', 'isValid', 'label', 'optional', 'required', 'showPreviewButton', 'showRemoveButton', 'showReplaceButton', 'status', 'validationRules', 'value', 'width']
1264
+ inputs: ['accept', 'actionSubTitle', 'actionTitle', 'autoValidation', 'disabled', 'height', 'hint', 'isValid', 'label', 'name', 'optional', 'required', 'showPreviewButton', 'showRemoveButton', 'showReplaceButton', 'status', 'validationRules', 'value', 'width']
1265
1265
  }]
1266
1266
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
1267
1267
  let VegaInput = class VegaInput {
@@ -1300,11 +1300,11 @@ let VegaInputCreditCard = class VegaInputCreditCard {
1300
1300
  }
1301
1301
  };
1302
1302
  VegaInputCreditCard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: VegaInputCreditCard, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1303
- VegaInputCreditCard.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaInputCreditCard, selector: "vega-input-credit-card", inputs: { autoValidation: "autoValidation", disabled: "disabled", hideCardNumberOnBlur: "hideCardNumberOnBlur", hint: "hint", isValid: "isValid", label: "label", optional: "optional", placeholder: "placeholder", required: "required", size: "size", validationRules: "validationRules", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1303
+ VegaInputCreditCard.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaInputCreditCard, selector: "vega-input-credit-card", inputs: { autoValidation: "autoValidation", disabled: "disabled", hideCardNumberOnBlur: "hideCardNumberOnBlur", hint: "hint", isValid: "isValid", label: "label", name: "name", optional: "optional", placeholder: "placeholder", required: "required", size: "size", validationRules: "validationRules", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1304
1304
  VegaInputCreditCard = __decorate([
1305
1305
  ProxyCmp({
1306
1306
  defineCustomElementFn: undefined,
1307
- inputs: ['autoValidation', 'disabled', 'hideCardNumberOnBlur', 'hint', 'isValid', 'label', 'optional', 'placeholder', 'required', 'size', 'validationRules', 'value']
1307
+ inputs: ['autoValidation', 'disabled', 'hideCardNumberOnBlur', 'hint', 'isValid', 'label', 'name', 'optional', 'placeholder', 'required', 'size', 'validationRules', 'value']
1308
1308
  })
1309
1309
  ], VegaInputCreditCard);
1310
1310
  export { VegaInputCreditCard };
@@ -1314,7 +1314,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
1314
1314
  selector: 'vega-input-credit-card',
1315
1315
  changeDetection: ChangeDetectionStrategy.OnPush,
1316
1316
  template: '<ng-content></ng-content>',
1317
- inputs: ['autoValidation', 'disabled', 'hideCardNumberOnBlur', 'hint', 'isValid', 'label', 'optional', 'placeholder', 'required', 'size', 'validationRules', 'value']
1317
+ inputs: ['autoValidation', 'disabled', 'hideCardNumberOnBlur', 'hint', 'isValid', 'label', 'name', 'optional', 'placeholder', 'required', 'size', 'validationRules', 'value']
1318
1318
  }]
1319
1319
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
1320
1320
  let VegaInputNumeric = class VegaInputNumeric {
@@ -1326,11 +1326,11 @@ let VegaInputNumeric = class VegaInputNumeric {
1326
1326
  }
1327
1327
  };
1328
1328
  VegaInputNumeric.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: VegaInputNumeric, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1329
- VegaInputNumeric.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaInputNumeric, selector: "vega-input-numeric", inputs: { autoValidation: "autoValidation", disabled: "disabled", hint: "hint", integerOnly: "integerOnly", isValid: "isValid", label: "label", majorIncrement: "majorIncrement", max: "max", min: "min", minorIncrement: "minorIncrement", optional: "optional", placeholder: "placeholder", prefixIcon: "prefixIcon", prefixText: "prefixText", required: "required", showClearIcon: "showClearIcon", size: "size", suffixText: "suffixText", thousandComma: "thousandComma", validationRules: "validationRules", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1329
+ VegaInputNumeric.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaInputNumeric, selector: "vega-input-numeric", inputs: { autoValidation: "autoValidation", disabled: "disabled", hint: "hint", integerOnly: "integerOnly", isValid: "isValid", label: "label", majorIncrement: "majorIncrement", max: "max", min: "min", minorIncrement: "minorIncrement", name: "name", optional: "optional", placeholder: "placeholder", prefixIcon: "prefixIcon", prefixText: "prefixText", required: "required", showClearIcon: "showClearIcon", size: "size", suffixText: "suffixText", thousandComma: "thousandComma", validationRules: "validationRules", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1330
1330
  VegaInputNumeric = __decorate([
1331
1331
  ProxyCmp({
1332
1332
  defineCustomElementFn: undefined,
1333
- inputs: ['autoValidation', 'disabled', 'hint', 'integerOnly', 'isValid', 'label', 'majorIncrement', 'max', 'min', 'minorIncrement', 'optional', 'placeholder', 'prefixIcon', 'prefixText', 'required', 'showClearIcon', 'size', 'suffixText', 'thousandComma', 'validationRules', 'value']
1333
+ inputs: ['autoValidation', 'disabled', 'hint', 'integerOnly', 'isValid', 'label', 'majorIncrement', 'max', 'min', 'minorIncrement', 'name', 'optional', 'placeholder', 'prefixIcon', 'prefixText', 'required', 'showClearIcon', 'size', 'suffixText', 'thousandComma', 'validationRules', 'value']
1334
1334
  })
1335
1335
  ], VegaInputNumeric);
1336
1336
  export { VegaInputNumeric };
@@ -1340,7 +1340,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
1340
1340
  selector: 'vega-input-numeric',
1341
1341
  changeDetection: ChangeDetectionStrategy.OnPush,
1342
1342
  template: '<ng-content></ng-content>',
1343
- inputs: ['autoValidation', 'disabled', 'hint', 'integerOnly', 'isValid', 'label', 'majorIncrement', 'max', 'min', 'minorIncrement', 'optional', 'placeholder', 'prefixIcon', 'prefixText', 'required', 'showClearIcon', 'size', 'suffixText', 'thousandComma', 'validationRules', 'value']
1343
+ inputs: ['autoValidation', 'disabled', 'hint', 'integerOnly', 'isValid', 'label', 'majorIncrement', 'max', 'min', 'minorIncrement', 'name', 'optional', 'placeholder', 'prefixIcon', 'prefixText', 'required', 'showClearIcon', 'size', 'suffixText', 'thousandComma', 'validationRules', 'value']
1344
1344
  }]
1345
1345
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
1346
1346
  let VegaInputPasscode = class VegaInputPasscode {
@@ -1352,11 +1352,11 @@ let VegaInputPasscode = class VegaInputPasscode {
1352
1352
  }
1353
1353
  };
1354
1354
  VegaInputPasscode.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: VegaInputPasscode, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1355
- VegaInputPasscode.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaInputPasscode, selector: "vega-input-passcode", inputs: { autoValidation: "autoValidation", disabled: "disabled", hint: "hint", inputType: "inputType", isValid: "isValid", label: "label", length: "length", optional: "optional", required: "required", size: "size", validationRules: "validationRules", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1355
+ VegaInputPasscode.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaInputPasscode, selector: "vega-input-passcode", inputs: { autoValidation: "autoValidation", disabled: "disabled", hint: "hint", inputType: "inputType", isValid: "isValid", label: "label", length: "length", name: "name", optional: "optional", required: "required", size: "size", validationRules: "validationRules", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1356
1356
  VegaInputPasscode = __decorate([
1357
1357
  ProxyCmp({
1358
1358
  defineCustomElementFn: undefined,
1359
- inputs: ['autoValidation', 'disabled', 'hint', 'inputType', 'isValid', 'label', 'length', 'optional', 'required', 'size', 'validationRules', 'value']
1359
+ inputs: ['autoValidation', 'disabled', 'hint', 'inputType', 'isValid', 'label', 'length', 'name', 'optional', 'required', 'size', 'validationRules', 'value']
1360
1360
  })
1361
1361
  ], VegaInputPasscode);
1362
1362
  export { VegaInputPasscode };
@@ -1366,7 +1366,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
1366
1366
  selector: 'vega-input-passcode',
1367
1367
  changeDetection: ChangeDetectionStrategy.OnPush,
1368
1368
  template: '<ng-content></ng-content>',
1369
- inputs: ['autoValidation', 'disabled', 'hint', 'inputType', 'isValid', 'label', 'length', 'optional', 'required', 'size', 'validationRules', 'value']
1369
+ inputs: ['autoValidation', 'disabled', 'hint', 'inputType', 'isValid', 'label', 'length', 'name', 'optional', 'required', 'size', 'validationRules', 'value']
1370
1370
  }]
1371
1371
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
1372
1372
  let VegaInputPhoneNumber = class VegaInputPhoneNumber {
@@ -1378,11 +1378,11 @@ let VegaInputPhoneNumber = class VegaInputPhoneNumber {
1378
1378
  }
1379
1379
  };
1380
1380
  VegaInputPhoneNumber.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: VegaInputPhoneNumber, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1381
- VegaInputPhoneNumber.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaInputPhoneNumber, selector: "vega-input-phone-number", inputs: { allowedCountryCodes: "allowedCountryCodes", autoValidation: "autoValidation", countryCode: "countryCode", disabled: "disabled", emptyValueEnabled: "emptyValueEnabled", hint: "hint", isValid: "isValid", label: "label", optional: "optional", placeholder: "placeholder", required: "required", size: "size", validationRules: "validationRules", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1381
+ VegaInputPhoneNumber.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaInputPhoneNumber, selector: "vega-input-phone-number", inputs: { allowedCountryCodes: "allowedCountryCodes", autoValidation: "autoValidation", countryCode: "countryCode", disabled: "disabled", emptyValueEnabled: "emptyValueEnabled", hint: "hint", isValid: "isValid", label: "label", name: "name", optional: "optional", placeholder: "placeholder", required: "required", size: "size", validationRules: "validationRules", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1382
1382
  VegaInputPhoneNumber = __decorate([
1383
1383
  ProxyCmp({
1384
1384
  defineCustomElementFn: undefined,
1385
- inputs: ['allowedCountryCodes', 'autoValidation', 'countryCode', 'disabled', 'emptyValueEnabled', 'hint', 'isValid', 'label', 'optional', 'placeholder', 'required', 'size', 'validationRules', 'value']
1385
+ inputs: ['allowedCountryCodes', 'autoValidation', 'countryCode', 'disabled', 'emptyValueEnabled', 'hint', 'isValid', 'label', 'name', 'optional', 'placeholder', 'required', 'size', 'validationRules', 'value']
1386
1386
  })
1387
1387
  ], VegaInputPhoneNumber);
1388
1388
  export { VegaInputPhoneNumber };
@@ -1392,7 +1392,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
1392
1392
  selector: 'vega-input-phone-number',
1393
1393
  changeDetection: ChangeDetectionStrategy.OnPush,
1394
1394
  template: '<ng-content></ng-content>',
1395
- inputs: ['allowedCountryCodes', 'autoValidation', 'countryCode', 'disabled', 'emptyValueEnabled', 'hint', 'isValid', 'label', 'optional', 'placeholder', 'required', 'size', 'validationRules', 'value']
1395
+ inputs: ['allowedCountryCodes', 'autoValidation', 'countryCode', 'disabled', 'emptyValueEnabled', 'hint', 'isValid', 'label', 'name', 'optional', 'placeholder', 'required', 'size', 'validationRules', 'value']
1396
1396
  }]
1397
1397
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
1398
1398
  let VegaInputRange = class VegaInputRange {
@@ -1404,11 +1404,11 @@ let VegaInputRange = class VegaInputRange {
1404
1404
  }
1405
1405
  };
1406
1406
  VegaInputRange.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: VegaInputRange, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1407
- VegaInputRange.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaInputRange, selector: "vega-input-range", inputs: { autoValidation: "autoValidation", disabled: "disabled", hint: "hint", isValid: "isValid", label: "label", max: "max", min: "min", optional: "optional", placeholder: "placeholder", prefixIcon: "prefixIcon", required: "required", showClearIcon: "showClearIcon", size: "size", stack: "stack", validationRules: "validationRules", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1407
+ VegaInputRange.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaInputRange, selector: "vega-input-range", inputs: { autoValidation: "autoValidation", disabled: "disabled", hint: "hint", isValid: "isValid", label: "label", max: "max", min: "min", name: "name", optional: "optional", placeholder: "placeholder", prefixIcon: "prefixIcon", required: "required", showClearIcon: "showClearIcon", size: "size", stack: "stack", validationRules: "validationRules", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1408
1408
  VegaInputRange = __decorate([
1409
1409
  ProxyCmp({
1410
1410
  defineCustomElementFn: undefined,
1411
- inputs: ['autoValidation', 'disabled', 'hint', 'isValid', 'label', 'max', 'min', 'optional', 'placeholder', 'prefixIcon', 'required', 'showClearIcon', 'size', 'stack', 'validationRules', 'value']
1411
+ inputs: ['autoValidation', 'disabled', 'hint', 'isValid', 'label', 'max', 'min', 'name', 'optional', 'placeholder', 'prefixIcon', 'required', 'showClearIcon', 'size', 'stack', 'validationRules', 'value']
1412
1412
  })
1413
1413
  ], VegaInputRange);
1414
1414
  export { VegaInputRange };
@@ -1418,7 +1418,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
1418
1418
  selector: 'vega-input-range',
1419
1419
  changeDetection: ChangeDetectionStrategy.OnPush,
1420
1420
  template: '<ng-content></ng-content>',
1421
- inputs: ['autoValidation', 'disabled', 'hint', 'isValid', 'label', 'max', 'min', 'optional', 'placeholder', 'prefixIcon', 'required', 'showClearIcon', 'size', 'stack', 'validationRules', 'value']
1421
+ inputs: ['autoValidation', 'disabled', 'hint', 'isValid', 'label', 'max', 'min', 'name', 'optional', 'placeholder', 'prefixIcon', 'required', 'showClearIcon', 'size', 'stack', 'validationRules', 'value']
1422
1422
  }]
1423
1423
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
1424
1424
  let VegaInputSelect = class VegaInputSelect {
@@ -1430,11 +1430,11 @@ let VegaInputSelect = class VegaInputSelect {
1430
1430
  }
1431
1431
  };
1432
1432
  VegaInputSelect.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: VegaInputSelect, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1433
- VegaInputSelect.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaInputSelect, selector: "vega-input-select", inputs: { autoValidation: "autoValidation", disabled: "disabled", dropdownItemTooltipProps: "dropdownItemTooltipProps", hint: "hint", isValid: "isValid", label: "label", labelSuffixButtonConfig: "labelSuffixButtonConfig", optional: "optional", placeholder: "placeholder", prefixIcon: "prefixIcon", required: "required", selectType: "selectType", selectedLabel: "selectedLabel", selectedLabelTooltipProps: "selectedLabelTooltipProps", size: "size", source: "source", sourceLazyLoadCallback: "sourceLazyLoadCallback", validationRules: "validationRules", value: "value", vegaDropdownProps: "vegaDropdownProps" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1433
+ VegaInputSelect.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaInputSelect, selector: "vega-input-select", inputs: { autoValidation: "autoValidation", disabled: "disabled", dropdownItemTooltipProps: "dropdownItemTooltipProps", hint: "hint", isValid: "isValid", label: "label", labelSuffixButtonConfig: "labelSuffixButtonConfig", name: "name", optional: "optional", placeholder: "placeholder", prefixIcon: "prefixIcon", required: "required", selectType: "selectType", selectedLabel: "selectedLabel", selectedLabelTooltipProps: "selectedLabelTooltipProps", size: "size", source: "source", sourceLazyLoadCallback: "sourceLazyLoadCallback", validationRules: "validationRules", value: "value", vegaDropdownProps: "vegaDropdownProps" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1434
1434
  VegaInputSelect = __decorate([
1435
1435
  ProxyCmp({
1436
1436
  defineCustomElementFn: undefined,
1437
- inputs: ['autoValidation', 'disabled', 'dropdownItemTooltipProps', 'hint', 'isValid', 'label', 'labelSuffixButtonConfig', 'optional', 'placeholder', 'prefixIcon', 'required', 'selectType', 'selectedLabel', 'selectedLabelTooltipProps', 'size', 'source', 'sourceLazyLoadCallback', 'validationRules', 'value', 'vegaDropdownProps'],
1437
+ inputs: ['autoValidation', 'disabled', 'dropdownItemTooltipProps', 'hint', 'isValid', 'label', 'labelSuffixButtonConfig', 'name', 'optional', 'placeholder', 'prefixIcon', 'required', 'selectType', 'selectedLabel', 'selectedLabelTooltipProps', 'size', 'source', 'sourceLazyLoadCallback', 'validationRules', 'value', 'vegaDropdownProps'],
1438
1438
  methods: ['doClose', 'doOpen', 'doChange']
1439
1439
  })
1440
1440
  ], VegaInputSelect);
@@ -1445,7 +1445,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
1445
1445
  selector: 'vega-input-select',
1446
1446
  changeDetection: ChangeDetectionStrategy.OnPush,
1447
1447
  template: '<ng-content></ng-content>',
1448
- inputs: ['autoValidation', 'disabled', 'dropdownItemTooltipProps', 'hint', 'isValid', 'label', 'labelSuffixButtonConfig', 'optional', 'placeholder', 'prefixIcon', 'required', 'selectType', 'selectedLabel', 'selectedLabelTooltipProps', 'size', 'source', 'sourceLazyLoadCallback', 'validationRules', 'value', 'vegaDropdownProps']
1448
+ inputs: ['autoValidation', 'disabled', 'dropdownItemTooltipProps', 'hint', 'isValid', 'label', 'labelSuffixButtonConfig', 'name', 'optional', 'placeholder', 'prefixIcon', 'required', 'selectType', 'selectedLabel', 'selectedLabelTooltipProps', 'size', 'source', 'sourceLazyLoadCallback', 'validationRules', 'value', 'vegaDropdownProps']
1449
1449
  }]
1450
1450
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
1451
1451
  let VegaItemToggle = class VegaItemToggle {
@@ -2047,11 +2047,11 @@ let VegaRichTextEditor = class VegaRichTextEditor {
2047
2047
  }
2048
2048
  };
2049
2049
  VegaRichTextEditor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: VegaRichTextEditor, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
2050
- VegaRichTextEditor.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaRichTextEditor, selector: "vega-rich-text-editor", inputs: { allowSourceEdit: "allowSourceEdit", autoValidation: "autoValidation", disabled: "disabled", extensions: "extensions", hint: "hint", isValid: "isValid", label: "label", optional: "optional", placeholder: "placeholder", required: "required", rows: "rows", sourceEditConfig: "sourceEditConfig", textStyleItems: "textStyleItems", toolbarItems: "toolbarItems", validationRules: "validationRules", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
2050
+ VegaRichTextEditor.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaRichTextEditor, selector: "vega-rich-text-editor", inputs: { allowSourceEdit: "allowSourceEdit", autoValidation: "autoValidation", disabled: "disabled", extensions: "extensions", hint: "hint", isValid: "isValid", label: "label", name: "name", optional: "optional", placeholder: "placeholder", required: "required", rows: "rows", sourceEditConfig: "sourceEditConfig", textStyleItems: "textStyleItems", toolbarItems: "toolbarItems", validationRules: "validationRules", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
2051
2051
  VegaRichTextEditor = __decorate([
2052
2052
  ProxyCmp({
2053
2053
  defineCustomElementFn: undefined,
2054
- inputs: ['allowSourceEdit', 'autoValidation', 'disabled', 'extensions', 'hint', 'isValid', 'label', 'optional', 'placeholder', 'required', 'rows', 'sourceEditConfig', 'textStyleItems', 'toolbarItems', 'validationRules', 'value']
2054
+ inputs: ['allowSourceEdit', 'autoValidation', 'disabled', 'extensions', 'hint', 'isValid', 'label', 'name', 'optional', 'placeholder', 'required', 'rows', 'sourceEditConfig', 'textStyleItems', 'toolbarItems', 'validationRules', 'value']
2055
2055
  })
2056
2056
  ], VegaRichTextEditor);
2057
2057
  export { VegaRichTextEditor };
@@ -2061,7 +2061,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
2061
2061
  selector: 'vega-rich-text-editor',
2062
2062
  changeDetection: ChangeDetectionStrategy.OnPush,
2063
2063
  template: '<ng-content></ng-content>',
2064
- inputs: ['allowSourceEdit', 'autoValidation', 'disabled', 'extensions', 'hint', 'isValid', 'label', 'optional', 'placeholder', 'required', 'rows', 'sourceEditConfig', 'textStyleItems', 'toolbarItems', 'validationRules', 'value']
2064
+ inputs: ['allowSourceEdit', 'autoValidation', 'disabled', 'extensions', 'hint', 'isValid', 'label', 'name', 'optional', 'placeholder', 'required', 'rows', 'sourceEditConfig', 'textStyleItems', 'toolbarItems', 'validationRules', 'value']
2065
2065
  }]
2066
2066
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
2067
2067
  let VegaRichTextEditorToolbarButton = class VegaRichTextEditorToolbarButton {
@@ -2155,7 +2155,7 @@ VegaRichTextLinkEditor = __decorate([
2155
2155
  ProxyCmp({
2156
2156
  defineCustomElementFn: undefined,
2157
2157
  inputs: ['record', 'resetStatusAfterHide', 'status', 'target'],
2158
- methods: ['show']
2158
+ methods: ['show', 'hide']
2159
2159
  })
2160
2160
  ], VegaRichTextLinkEditor);
2161
2161
  export { VegaRichTextLinkEditor };
@@ -2357,11 +2357,11 @@ let VegaSelectionChipGroup = class VegaSelectionChipGroup {
2357
2357
  }
2358
2358
  };
2359
2359
  VegaSelectionChipGroup.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: VegaSelectionChipGroup, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
2360
- VegaSelectionChipGroup.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaSelectionChipGroup, selector: "vega-selection-chip-group", inputs: { disabled: "disabled", hint: "hint", isValid: "isValid", label: "label", optional: "optional", required: "required", selectType: "selectType", validationRules: "validationRules", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
2360
+ VegaSelectionChipGroup.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaSelectionChipGroup, selector: "vega-selection-chip-group", inputs: { disabled: "disabled", hint: "hint", isValid: "isValid", label: "label", name: "name", optional: "optional", required: "required", selectType: "selectType", validationRules: "validationRules", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
2361
2361
  VegaSelectionChipGroup = __decorate([
2362
2362
  ProxyCmp({
2363
2363
  defineCustomElementFn: undefined,
2364
- inputs: ['disabled', 'hint', 'isValid', 'label', 'optional', 'required', 'selectType', 'validationRules', 'value']
2364
+ inputs: ['disabled', 'hint', 'isValid', 'label', 'name', 'optional', 'required', 'selectType', 'validationRules', 'value']
2365
2365
  })
2366
2366
  ], VegaSelectionChipGroup);
2367
2367
  export { VegaSelectionChipGroup };
@@ -2371,7 +2371,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
2371
2371
  selector: 'vega-selection-chip-group',
2372
2372
  changeDetection: ChangeDetectionStrategy.OnPush,
2373
2373
  template: '<ng-content></ng-content>',
2374
- inputs: ['disabled', 'hint', 'isValid', 'label', 'optional', 'required', 'selectType', 'validationRules', 'value']
2374
+ inputs: ['disabled', 'hint', 'isValid', 'label', 'name', 'optional', 'required', 'selectType', 'validationRules', 'value']
2375
2375
  }]
2376
2376
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
2377
2377
  let VegaSelectionTile = class VegaSelectionTile {
@@ -2409,11 +2409,11 @@ let VegaSelectionTileGroup = class VegaSelectionTileGroup {
2409
2409
  }
2410
2410
  };
2411
2411
  VegaSelectionTileGroup.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: VegaSelectionTileGroup, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
2412
- VegaSelectionTileGroup.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaSelectionTileGroup, selector: "vega-selection-tile-group", inputs: { disabled: "disabled", distributeEvenly: "distributeEvenly", hint: "hint", isValid: "isValid", label: "label", layout: "layout", optional: "optional", required: "required", selectType: "selectType", validationRules: "validationRules", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
2412
+ VegaSelectionTileGroup.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaSelectionTileGroup, selector: "vega-selection-tile-group", inputs: { disabled: "disabled", distributeEvenly: "distributeEvenly", hint: "hint", isValid: "isValid", label: "label", layout: "layout", name: "name", optional: "optional", required: "required", selectType: "selectType", validationRules: "validationRules", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
2413
2413
  VegaSelectionTileGroup = __decorate([
2414
2414
  ProxyCmp({
2415
2415
  defineCustomElementFn: undefined,
2416
- inputs: ['disabled', 'distributeEvenly', 'hint', 'isValid', 'label', 'layout', 'optional', 'required', 'selectType', 'validationRules', 'value']
2416
+ inputs: ['disabled', 'distributeEvenly', 'hint', 'isValid', 'label', 'layout', 'name', 'optional', 'required', 'selectType', 'validationRules', 'value']
2417
2417
  })
2418
2418
  ], VegaSelectionTileGroup);
2419
2419
  export { VegaSelectionTileGroup };
@@ -2423,7 +2423,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
2423
2423
  selector: 'vega-selection-tile-group',
2424
2424
  changeDetection: ChangeDetectionStrategy.OnPush,
2425
2425
  template: '<ng-content></ng-content>',
2426
- inputs: ['disabled', 'distributeEvenly', 'hint', 'isValid', 'label', 'layout', 'optional', 'required', 'selectType', 'validationRules', 'value']
2426
+ inputs: ['disabled', 'distributeEvenly', 'hint', 'isValid', 'label', 'layout', 'name', 'optional', 'required', 'selectType', 'validationRules', 'value']
2427
2427
  }]
2428
2428
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
2429
2429
  let VegaSidenav = class VegaSidenav {
@@ -2513,11 +2513,11 @@ let VegaSignatureCapture = class VegaSignatureCapture {
2513
2513
  }
2514
2514
  };
2515
2515
  VegaSignatureCapture.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: VegaSignatureCapture, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
2516
- VegaSignatureCapture.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaSignatureCapture, selector: "vega-signature-capture", inputs: { autoValidation: "autoValidation", disabled: "disabled", height: "height", isValid: "isValid", label: "label", mode: "mode", optional: "optional", placeholder: "placeholder", placeholderIcon: "placeholderIcon", required: "required", showClearBtn: "showClearBtn", validationRules: "validationRules", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
2516
+ VegaSignatureCapture.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaSignatureCapture, selector: "vega-signature-capture", inputs: { autoValidation: "autoValidation", disabled: "disabled", height: "height", isValid: "isValid", label: "label", mode: "mode", name: "name", optional: "optional", placeholder: "placeholder", placeholderIcon: "placeholderIcon", required: "required", showClearBtn: "showClearBtn", validationRules: "validationRules", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
2517
2517
  VegaSignatureCapture = __decorate([
2518
2518
  ProxyCmp({
2519
2519
  defineCustomElementFn: undefined,
2520
- inputs: ['autoValidation', 'disabled', 'height', 'isValid', 'label', 'mode', 'optional', 'placeholder', 'placeholderIcon', 'required', 'showClearBtn', 'validationRules', 'value'],
2520
+ inputs: ['autoValidation', 'disabled', 'height', 'isValid', 'label', 'mode', 'name', 'optional', 'placeholder', 'placeholderIcon', 'required', 'showClearBtn', 'validationRules', 'value'],
2521
2521
  methods: ['clear']
2522
2522
  })
2523
2523
  ], VegaSignatureCapture);
@@ -2528,7 +2528,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
2528
2528
  selector: 'vega-signature-capture',
2529
2529
  changeDetection: ChangeDetectionStrategy.OnPush,
2530
2530
  template: '<ng-content></ng-content>',
2531
- inputs: ['autoValidation', 'disabled', 'height', 'isValid', 'label', 'mode', 'optional', 'placeholder', 'placeholderIcon', 'required', 'showClearBtn', 'validationRules', 'value']
2531
+ inputs: ['autoValidation', 'disabled', 'height', 'isValid', 'label', 'mode', 'name', 'optional', 'placeholder', 'placeholderIcon', 'required', 'showClearBtn', 'validationRules', 'value']
2532
2532
  }]
2533
2533
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
2534
2534
  let VegaSkeleton = class VegaSkeleton {
@@ -2588,11 +2588,11 @@ let VegaStepper = class VegaStepper {
2588
2588
  }
2589
2589
  };
2590
2590
  VegaStepper.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: VegaStepper, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
2591
- VegaStepper.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaStepper, selector: "vega-stepper", inputs: { autoValidation: "autoValidation", buttonVariant: "buttonVariant", disabled: "disabled", inputDisabled: "inputDisabled", isValid: "isValid", label: "label", max: "max", min: "min", stepperId: "stepperId", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
2591
+ VegaStepper.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaStepper, selector: "vega-stepper", inputs: { autoValidation: "autoValidation", buttonVariant: "buttonVariant", disabled: "disabled", inputDisabled: "inputDisabled", isValid: "isValid", label: "label", max: "max", min: "min", name: "name", stepperId: "stepperId", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
2592
2592
  VegaStepper = __decorate([
2593
2593
  ProxyCmp({
2594
2594
  defineCustomElementFn: undefined,
2595
- inputs: ['autoValidation', 'buttonVariant', 'disabled', 'inputDisabled', 'isValid', 'label', 'max', 'min', 'stepperId', 'value']
2595
+ inputs: ['autoValidation', 'buttonVariant', 'disabled', 'inputDisabled', 'isValid', 'label', 'max', 'min', 'name', 'stepperId', 'value']
2596
2596
  })
2597
2597
  ], VegaStepper);
2598
2598
  export { VegaStepper };
@@ -2602,7 +2602,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
2602
2602
  selector: 'vega-stepper',
2603
2603
  changeDetection: ChangeDetectionStrategy.OnPush,
2604
2604
  template: '<ng-content></ng-content>',
2605
- inputs: ['autoValidation', 'buttonVariant', 'disabled', 'inputDisabled', 'isValid', 'label', 'max', 'min', 'stepperId', 'value']
2605
+ inputs: ['autoValidation', 'buttonVariant', 'disabled', 'inputDisabled', 'isValid', 'label', 'max', 'min', 'name', 'stepperId', 'value']
2606
2606
  }]
2607
2607
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
2608
2608
  let VegaTabGroup = class VegaTabGroup {
@@ -2859,11 +2859,11 @@ let VegaTableHeadCell = class VegaTableHeadCell {
2859
2859
  }
2860
2860
  };
2861
2861
  VegaTableHeadCell.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: VegaTableHeadCell, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
2862
- VegaTableHeadCell.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaTableHeadCell, selector: "vega-table-head-cell", inputs: { breakpoint: "breakpoint", pinned: "pinned", sortConfig: "sortConfig", sortOrder: "sortOrder", sorter: "sorter", textAlign: "textAlign", width: "width" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
2862
+ VegaTableHeadCell.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaTableHeadCell, selector: "vega-table-head-cell", inputs: { breakpoint: "breakpoint", groupKey: "groupKey", parentGroupKey: "parentGroupKey", pinned: "pinned", sortConfig: "sortConfig", sortOrder: "sortOrder", sorter: "sorter", textAlign: "textAlign", width: "width" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
2863
2863
  VegaTableHeadCell = __decorate([
2864
2864
  ProxyCmp({
2865
2865
  defineCustomElementFn: undefined,
2866
- inputs: ['breakpoint', 'pinned', 'sortConfig', 'sortOrder', 'sorter', 'textAlign', 'width']
2866
+ inputs: ['breakpoint', 'groupKey', 'parentGroupKey', 'pinned', 'sortConfig', 'sortOrder', 'sorter', 'textAlign', 'width']
2867
2867
  })
2868
2868
  ], VegaTableHeadCell);
2869
2869
  export { VegaTableHeadCell };
@@ -2873,7 +2873,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
2873
2873
  selector: 'vega-table-head-cell',
2874
2874
  changeDetection: ChangeDetectionStrategy.OnPush,
2875
2875
  template: '<ng-content></ng-content>',
2876
- inputs: ['breakpoint', 'pinned', 'sortConfig', 'sortOrder', 'sorter', 'textAlign', 'width']
2876
+ inputs: ['breakpoint', 'groupKey', 'parentGroupKey', 'pinned', 'sortConfig', 'sortOrder', 'sorter', 'textAlign', 'width']
2877
2877
  }]
2878
2878
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
2879
2879
  let VegaTableHeadRow = class VegaTableHeadRow {
@@ -2961,11 +2961,11 @@ let VegaTextarea = class VegaTextarea {
2961
2961
  }
2962
2962
  };
2963
2963
  VegaTextarea.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: VegaTextarea, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
2964
- VegaTextarea.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaTextarea, selector: "vega-textarea", inputs: { autoValidation: "autoValidation", disabled: "disabled", hint: "hint", isValid: "isValid", label: "label", labelSuffixButtonConfig: "labelSuffixButtonConfig", maxLength: "maxLength", minLength: "minLength", optional: "optional", placeholder: "placeholder", required: "required", resizable: "resizable", rows: "rows", showCounter: "showCounter", validationRules: "validationRules", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
2964
+ VegaTextarea.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaTextarea, selector: "vega-textarea", inputs: { autoValidation: "autoValidation", disabled: "disabled", hint: "hint", isValid: "isValid", label: "label", labelSuffixButtonConfig: "labelSuffixButtonConfig", maxLength: "maxLength", minLength: "minLength", name: "name", optional: "optional", placeholder: "placeholder", required: "required", resizable: "resizable", rows: "rows", showCounter: "showCounter", validationRules: "validationRules", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
2965
2965
  VegaTextarea = __decorate([
2966
2966
  ProxyCmp({
2967
2967
  defineCustomElementFn: undefined,
2968
- inputs: ['autoValidation', 'disabled', 'hint', 'isValid', 'label', 'labelSuffixButtonConfig', 'maxLength', 'minLength', 'optional', 'placeholder', 'required', 'resizable', 'rows', 'showCounter', 'validationRules', 'value']
2968
+ inputs: ['autoValidation', 'disabled', 'hint', 'isValid', 'label', 'labelSuffixButtonConfig', 'maxLength', 'minLength', 'name', 'optional', 'placeholder', 'required', 'resizable', 'rows', 'showCounter', 'validationRules', 'value']
2969
2969
  })
2970
2970
  ], VegaTextarea);
2971
2971
  export { VegaTextarea };
@@ -2975,7 +2975,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
2975
2975
  selector: 'vega-textarea',
2976
2976
  changeDetection: ChangeDetectionStrategy.OnPush,
2977
2977
  template: '<ng-content></ng-content>',
2978
- inputs: ['autoValidation', 'disabled', 'hint', 'isValid', 'label', 'labelSuffixButtonConfig', 'maxLength', 'minLength', 'optional', 'placeholder', 'required', 'resizable', 'rows', 'showCounter', 'validationRules', 'value']
2978
+ inputs: ['autoValidation', 'disabled', 'hint', 'isValid', 'label', 'labelSuffixButtonConfig', 'maxLength', 'minLength', 'name', 'optional', 'placeholder', 'required', 'resizable', 'rows', 'showCounter', 'validationRules', 'value']
2979
2979
  }]
2980
2980
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
2981
2981
  let VegaTimePicker = class VegaTimePicker {
@@ -2987,11 +2987,11 @@ let VegaTimePicker = class VegaTimePicker {
2987
2987
  }
2988
2988
  };
2989
2989
  VegaTimePicker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: VegaTimePicker, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
2990
- VegaTimePicker.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaTimePicker, selector: "vega-time-picker", inputs: { autoValidation: "autoValidation", disabled: "disabled", increments: "increments", isValid: "isValid", label: "label", mode: "mode", optional: "optional", placeholder: "placeholder", positionRelativeTo: "positionRelativeTo", readOnly: "readOnly", required: "required", showClearIcon: "showClearIcon", size: "size", timeFormat: "timeFormat", validationRules: "validationRules", value: "value", vegaDropdownProps: "vegaDropdownProps" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
2990
+ VegaTimePicker.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaTimePicker, selector: "vega-time-picker", inputs: { autoValidation: "autoValidation", disabled: "disabled", increments: "increments", isValid: "isValid", label: "label", mode: "mode", name: "name", optional: "optional", placeholder: "placeholder", positionRelativeTo: "positionRelativeTo", readOnly: "readOnly", required: "required", showClearIcon: "showClearIcon", size: "size", timeFormat: "timeFormat", validationRules: "validationRules", value: "value", vegaDropdownProps: "vegaDropdownProps" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
2991
2991
  VegaTimePicker = __decorate([
2992
2992
  ProxyCmp({
2993
2993
  defineCustomElementFn: undefined,
2994
- inputs: ['autoValidation', 'disabled', 'increments', 'isValid', 'label', 'mode', 'optional', 'placeholder', 'positionRelativeTo', 'readOnly', 'required', 'showClearIcon', 'size', 'timeFormat', 'validationRules', 'value', 'vegaDropdownProps']
2994
+ inputs: ['autoValidation', 'disabled', 'increments', 'isValid', 'label', 'mode', 'name', 'optional', 'placeholder', 'positionRelativeTo', 'readOnly', 'required', 'showClearIcon', 'size', 'timeFormat', 'validationRules', 'value', 'vegaDropdownProps']
2995
2995
  })
2996
2996
  ], VegaTimePicker);
2997
2997
  export { VegaTimePicker };
@@ -3001,7 +3001,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
3001
3001
  selector: 'vega-time-picker',
3002
3002
  changeDetection: ChangeDetectionStrategy.OnPush,
3003
3003
  template: '<ng-content></ng-content>',
3004
- inputs: ['autoValidation', 'disabled', 'increments', 'isValid', 'label', 'mode', 'optional', 'placeholder', 'positionRelativeTo', 'readOnly', 'required', 'showClearIcon', 'size', 'timeFormat', 'validationRules', 'value', 'vegaDropdownProps']
3004
+ inputs: ['autoValidation', 'disabled', 'increments', 'isValid', 'label', 'mode', 'name', 'optional', 'placeholder', 'positionRelativeTo', 'readOnly', 'required', 'showClearIcon', 'size', 'timeFormat', 'validationRules', 'value', 'vegaDropdownProps']
3005
3005
  }]
3006
3006
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
3007
3007
  let VegaTimePickerDropdown = class VegaTimePickerDropdown {
@@ -3036,11 +3036,11 @@ let VegaToggleSwitch = class VegaToggleSwitch {
3036
3036
  }
3037
3037
  };
3038
3038
  VegaToggleSwitch.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: VegaToggleSwitch, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
3039
- VegaToggleSwitch.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaToggleSwitch, selector: "vega-toggle-switch", inputs: { autoValidation: "autoValidation", checked: "checked", disabled: "disabled", isValid: "isValid", label: "label", optional: "optional", required: "required", size: "size", validationRules: "validationRules", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
3039
+ VegaToggleSwitch.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaToggleSwitch, selector: "vega-toggle-switch", inputs: { autoValidation: "autoValidation", checked: "checked", disabled: "disabled", isValid: "isValid", label: "label", name: "name", optional: "optional", required: "required", size: "size", validationRules: "validationRules", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
3040
3040
  VegaToggleSwitch = __decorate([
3041
3041
  ProxyCmp({
3042
3042
  defineCustomElementFn: undefined,
3043
- inputs: ['autoValidation', 'checked', 'disabled', 'isValid', 'label', 'optional', 'required', 'size', 'validationRules', 'value']
3043
+ inputs: ['autoValidation', 'checked', 'disabled', 'isValid', 'label', 'name', 'optional', 'required', 'size', 'validationRules', 'value']
3044
3044
  })
3045
3045
  ], VegaToggleSwitch);
3046
3046
  export { VegaToggleSwitch };
@@ -3050,7 +3050,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
3050
3050
  selector: 'vega-toggle-switch',
3051
3051
  changeDetection: ChangeDetectionStrategy.OnPush,
3052
3052
  template: '<ng-content></ng-content>',
3053
- inputs: ['autoValidation', 'checked', 'disabled', 'isValid', 'label', 'optional', 'required', 'size', 'validationRules', 'value']
3053
+ inputs: ['autoValidation', 'checked', 'disabled', 'isValid', 'label', 'name', 'optional', 'required', 'size', 'validationRules', 'value']
3054
3054
  }]
3055
3055
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
3056
3056
  let VegaTooltip = class VegaTooltip {
@@ -3253,4 +3253,4 @@ export default [
3253
3253
  VegaTooltipContentBox,
3254
3254
  VegaVirtualScroll,
3255
3255
  ];
3256
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvc3RlbmNpbC1nZW5lcmF0ZWQvY29tcG9uZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsb0JBQW9CO0FBQ3BCLDhDQUE4QztBQUM5QyxPQUFPLEVBQUUsdUJBQXVCLEVBQXFCLFNBQVMsRUFBb0MsTUFBTSxlQUFlLENBQUM7QUFDeEgsT0FBTyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7SUE4QjFELGFBQWEsU0FBYixhQUFhO0lBRXhCLFlBQVksQ0FBb0IsRUFBRSxDQUFhLEVBQVksQ0FBUztRQUFULE1BQUMsR0FBRCxDQUFDLENBQVE7UUFDbEUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ1gsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsYUFBYSxDQUFDO1FBQzFCLFlBQVksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLFlBQVksRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7SUFDakUsQ0FBQztDQUNGLENBQUE7MEdBUFksYUFBYTs4RkFBYixhQUFhLDBWQUhkLDJCQUEyQjtBQUcxQixhQUFhO0lBVnpCLFFBQVEsQ0FBQztRQUNSLHFCQUFxQixFQUFFLFNBQVM7UUFDaEMsTUFBTSxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLHNCQUFzQixDQUFDO0tBQzlKLENBQUM7R0FPVyxhQUFhLENBT3pCO1NBUFksYUFBYTsyRkFBYixhQUFhO2tCQU56QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxRQUFRLEVBQUUsMkJBQTJCO29CQUNyQyxN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QUNkLG1CQUFtQjtJQUNuQixrQkFBa0I7SUFDbEIsK0JBQStCO0lBQy9CLDRCQUE0QjtJQUM1Qix1QkFBdUI7SUFDdkIsc0JBQXNCO0lBQ3RCLGtDQUFrQztJQUNsQywyQkFBMkI7SUFDM0IsZ0NBQWdDO0lBQ2hDLHdCQUF3QjtJQUN4QixnQkFBZ0I7SUFDaEIsa0JBQWtCO0lBQ2xCLGlCQUFpQjtJQUNqQixzQkFBc0I7SUFDdEIsaUJBQWlCO0lBQ2pCLHNCQUFzQjtJQUN0QixXQUFXO0lBQ1gsZ0JBQWdCO0lBQ2hCLGVBQWU7SUFDZixvQkFBb0I7SUFDcEIsWUFBWTtJQUNaLGlCQUFpQjtJQUNqQixXQUFXO0lBQ1gsWUFBWTtJQUNaLGlCQUFpQjtJQUNqQixTQUFTO0lBQ1QsYUFBYTtJQUNiLGFBQWE7SUFDYixrQkFBa0I7SUFDbEIsYUFBYTtJQUNiLGlCQUFpQjtJQUNqQixnQkFBZ0I7SUFDaEIsYUFBYTtJQUNiLGlCQUFpQjtJQUNqQixnQkFBZ0I7SUFDaEIsWUFBWTtJQUNaLFFBQVE7SUFDUixZQUFZO0lBQ1osY0FBYztJQUNkLHNCQUFzQjtJQUN0QixnQkFBZ0I7SUFDaEIsV0FBVztJQUNYLHFCQUFxQjtJQUNyQixpQkFBaUI7Q0FDbEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIHRzbGludDpkaXNhYmxlICovXG4vKiBhdXRvLWdlbmVyYXRlZCBhbmd1bGFyIGRpcmVjdGl2ZSBwcm94aWVzICovXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFByb3h5Q21wLCBwcm94eU91dHB1dHMgfSBmcm9tICcuL2FuZ3VsYXItY29tcG9uZW50LWxpYi91dGlscyc7XG5cbmltcG9ydCB7IENvbXBvbmVudHMgfSBmcm9tICdAZ2xvYmFscGF5bWVudHMvdmVnYSc7XG5cblxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhQWNjb3JkaW9uIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhQWNjb3JkaW9uIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBleHBhbmQgZXZlbnQgb2YgdGhlIGFjY29yZGlvbi4gQHZlZ2FWZXJzaW9uIDEuMy4wXG4gICAqL1xuICB2ZWdhRXhwYW5kOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8Ym9vbGVhbj4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGV4cGFuZCBldmVudCBvZiB0aGUgYWNjb3JkaW9uLlxuZXhwYW5kIGlzIGFuIGF0dHJpYnV0ZSwgc28gdGhlIGV2ZW50IG5hbWUgaGVyZSB1c2VzIGFjY29yZGlvbkV4cGFuZCBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGFjY29yZGlvbkV4cGFuZDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGJvb2xlYW4+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2FjY29yZGlvblRpdGxlJywgJ2RyYXdzQmFja2dyb3VuZCcsICdleHBhbmQnLCAnZXhwYW5kSWNvbkFsaWduJywgJ2dyb3VwSWQnLCAnaWNvblBvc2l0aW9uJywgJ3ByZWZpeEljb24nLCAnc2hvd0V4cGFuZEljb24nLCAndGl0bGVCYWNrZ3JvdW5kQ29sb3InXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtYWNjb3JkaW9uJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydhY2NvcmRpb25UaXRsZScsICdkcmF3c0JhY2tncm91bmQnLCAnZXhwYW5kJywgJ2V4cGFuZEljb25BbGlnbicsICdncm91cElkJywgJ2ljb25Qb3NpdGlvbicsICdwcmVmaXhJY29uJywgJ3Nob3dFeHBhbmRJY29uJywgJ3RpdGxlQmFja2dyb3VuZENvbG9yJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUFjY29yZGlvbiB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FFeHBhbmQnLCAnYWNjb3JkaW9uRXhwYW5kJ10pO1xuICB9XG59XG5cbmltcG9ydCB0eXBlIHsgVmVnYUFwcEZvb3RlckxpbmsgYXMgSVZlZ2FBcHBGb290ZXJWZWdhQXBwRm9vdGVyTGluayB9IGZyb20gJ0BnbG9iYWxwYXltZW50cy92ZWdhL2Rpc3QvdHlwZXMvY29tcG9uZW50cy92ZWdhLWFwcC1mb290ZXIvdHlwZXMnO1xuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FBcHBGb290ZXIgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FBcHBGb290ZXIge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNsaWNrIGV2ZW50IG9mIHRoZSBhZGRpdGlvbmFsIGxpbmsgaW4gdGhlIGFwcCBmb290ZXIuIEB2ZWdhVmVyc2lvbiAyLjkxLjBcbiAgICovXG4gIHZlZ2FBZGRpdGlvbmFsTGlua0NsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FBcHBGb290ZXJWZWdhQXBwRm9vdGVyTGluaz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNsaWNrIGV2ZW50IG9mIHRoZSBhZGRpdGlvbmFsIGxpbmsgaW4gdGhlIGFwcCBmb290ZXIuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjkxLjBcbiAgICovXG4gIGFkZGl0aW9uYWxMaW5rQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYUFwcEZvb3RlclZlZ2FBcHBGb290ZXJMaW5rPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydhZGRpdGlvbmFsTGlua3MnLCAnY29udGVudCcsICdkaXNjbGFpbWVyVXJsVGFyZ2V0JywgJ2hpZGVEZWZhdWx0TGlua3MnLCAncHJpdmFjeVBvbGljeUxhYmVsJywgJ3ByaXZhY3lQb2xpY3lVcmwnLCAncHJpdmFjeVBvbGljeVVybElkJywgJ3ByaXZhY3lQb2xpY3lVcmxUYXJnZXQnLCAnc2hvd0Rpc2NsYWltZXInLCAndGVybU9mVXNlTGFiZWwnLCAndGVybU9mVXNlVXJsJywgJ3Rlcm1PZlVzZVVybElkJywgJ3Rlcm1PZlVzZVVybFRhcmdldCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1hcHAtZm9vdGVyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydhZGRpdGlvbmFsTGlua3MnLCAnY29udGVudCcsICdkaXNjbGFpbWVyVXJsVGFyZ2V0JywgJ2hpZGVEZWZhdWx0TGlua3MnLCAncHJpdmFjeVBvbGljeUxhYmVsJywgJ3ByaXZhY3lQb2xpY3lVcmwnLCAncHJpdmFjeVBvbGljeVVybElkJywgJ3ByaXZhY3lQb2xpY3lVcmxUYXJnZXQnLCAnc2hvd0Rpc2NsYWltZXInLCAndGVybU9mVXNlTGFiZWwnLCAndGVybU9mVXNlVXJsJywgJ3Rlcm1PZlVzZVVybElkJywgJ3Rlcm1PZlVzZVVybFRhcmdldCddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FBcHBGb290ZXIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQWRkaXRpb25hbExpbmtDbGljaycsICdhZGRpdGlvbmFsTGlua0NsaWNrJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FBcHBIZWFkZXJCdXR0b24gZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FBcHBIZWFkZXJCdXR0b24ge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNsaWNrIGV2ZW50IG9mIGFuIGFwcCBoZWFkZXIgYnV0dG9uLiBAdmVnYVZlcnNpb24gMS4xMS4wXG4gICAqL1xuICB2ZWdhQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjbGljayBldmVudCBvZiBhbiBhcHAgaGVhZGVyIGJ1dHRvbi4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBjbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNsaWNrIGV2ZW50IG9mIGEgZHJvcGRvd24gaXRlbVxuICAgaW4gdGhlIGFwcCBoZWFkZXIuIEB2ZWdhVmVyc2lvbiAxLjIzLjBcbiAgICovXG4gIHZlZ2FEcm9wZG93bkNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgY2xpY2sgZXZlbnQgb2YgYSBkcm9wZG93biBpdGVtXG4gICBpbiB0aGUgYXBwIGhlYWRlci4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBkcm9wZG93bkNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgcmVzZXQgZXZlbnQgaW4gdGhlIGRyb3Bkb3duLiBAdmVnYVZlcnNpb24gMi43My4wXG4gICAqL1xuICB2ZWdhUmVzZXQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSByZXNldCBldmVudCBpbiB0aGUgZHJvcGRvd24uIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjczLjBcbiAgICovXG4gIHJlc2V0OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgc2VhcmNoIGV2ZW50IGluIHRoZSBkcm9wZG93bixcbiAgIGJ1dCBvbmx5IGlmIGB1c2VEZWZhdWx0RmlsdGVyYCBpcyBzZXQgdG8gYGZhbHNlYC4gQHZlZ2FWZXJzaW9uIDIuODQuMFxuICAgKi9cbiAgdmVnYVNlYXJjaDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIHNlYXJjaCBldmVudCBpbiB0aGUgZHJvcGRvd24sXG4gICBidXQgb25seSBpZiBgdXNlRGVmYXVsdEZpbHRlcmAgaXMgc2V0IHRvIGBmYWxzZWAuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjg0LjBcbiAgICovXG4gIGRyb3Bkb3duU2VhcmNoOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydhdmF0YXInLCAnYXZhdGFyUG9zaXRpb24nLCAnZHJvcGRvd24nLCAnbGFiZWwnLCAnbGFiZWxDb25maWcnLCAnc2VsZWN0ZWQnLCAnc2hvd0JvcmRlcicsICdzaG93TGFiZWwnLCAnc2hvd01lbnVBcnJvd0ljb24nLCAnc2l6ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1hcHAtaGVhZGVyLWJ1dHRvbicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnYXZhdGFyJywgJ2F2YXRhclBvc2l0aW9uJywgJ2Ryb3Bkb3duJywgJ2xhYmVsJywgJ2xhYmVsQ29uZmlnJywgJ3NlbGVjdGVkJywgJ3Nob3dCb3JkZXInLCAnc2hvd0xhYmVsJywgJ3Nob3dNZW51QXJyb3dJY29uJywgJ3NpemUnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhQXBwSGVhZGVyQnV0dG9uIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUNsaWNrJywgJ2NsaWNrJywgJ3ZlZ2FEcm9wZG93bkNsaWNrJywgJ2Ryb3Bkb3duQ2xpY2snLCAndmVnYVJlc2V0JywgJ3Jlc2V0JywgJ3ZlZ2FTZWFyY2gnLCAnZHJvcGRvd25TZWFyY2gnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUJhY2tkcm9wIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhQmFja2Ryb3Age1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNsaWNrIGV2ZW50IG9mIHRoZSBiYWNrZHJvcC4gQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICB2ZWdhQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydjb2xvcicsICdkdXJhdGlvbicsICd2aXNpYmxlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWJhY2tkcm9wJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydjb2xvcicsICdkdXJhdGlvbicsICd2aXNpYmxlJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUJhY2tkcm9wIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUNsaWNrJ10pO1xuICB9XG59XG5cbmltcG9ydCB0eXBlIHsgVmVnYUJhbm5lckFjdGlvbkJ1dHRvblR5cGUgYXMgSVZlZ2FCYW5uZXJWZWdhQmFubmVyQWN0aW9uQnV0dG9uVHlwZSB9IGZyb20gJ0BnbG9iYWxwYXltZW50cy92ZWdhL2Rpc3QvdHlwZXMvY29tcG9uZW50cy92ZWdhLWJhbm5lci90eXBlcyc7XG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUJhbm5lciBleHRlbmRzIENvbXBvbmVudHMuVmVnYUJhbm5lciB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgYmFubmVyIGNsb3NlIGV2ZW50LiBAdmVnYVZlcnNpb24gMS4xMy4wXG4gICAqL1xuICB2ZWdhQ2xvc2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBiYW5uZXIgY2xvc2UgZXZlbnQuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjguMFxuICAgKi9cbiAgY2xvc2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBiYW5uZXIgYWN0aW9uIGJ1dHRvbiBoYXMgYmVlbiBjbGlja2VkLiBAdmVnYVZlcnNpb24gMi4xOC4wXG4gICAqL1xuICB2ZWdhQWN0aW9uQnV0dG9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYUJhbm5lclZlZ2FCYW5uZXJBY3Rpb25CdXR0b25UeXBlPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgYmFubmVyIGFjdGlvbiBidXR0b24gaGFzIGJlZW4gY2xpY2tlZC4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMTguMFxuICAgKi9cbiAgYWN0aW9uQnV0dG9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYUJhbm5lclZlZ2FCYW5uZXJBY3Rpb25CdXR0b25UeXBlPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydhY3Rpb25CdXR0b25zJywgJ2Jhbm5lclRpdGxlJywgJ2NvbnRlbnQnLCAnaXNPcGVuJywgJ3Nob3dDbG9zZUJ1dHRvbicsICd0eXBlJ10sXG4gIG1ldGhvZHM6IFsnZG9DbG9zZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1iYW5uZXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2FjdGlvbkJ1dHRvbnMnLCAnYmFubmVyVGl0bGUnLCAnY29udGVudCcsICdpc09wZW4nLCAnc2hvd0Nsb3NlQnV0dG9uJywgJ3R5cGUnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhQmFubmVyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUNsb3NlJywgJ2Nsb3NlJywgJ3ZlZ2FBY3Rpb25CdXR0b25DbGljaycsICdhY3Rpb25CdXR0b25DbGljayddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhQmFyQ2hhcnQgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FCYXJDaGFydCB7fVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ29wdGlvbnMnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtYmFyLWNoYXJ0JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydvcHRpb25zJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUJhckNoYXJ0IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUJveCBleHRlbmRzIENvbXBvbmVudHMuVmVnYUJveCB7fVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2FsaWduU2VsZicsICdiYWNrZ3JvdW5kQ29sb3InLCAnYm9yZGVyJywgJ2JvcmRlckNvbG9yJywgJ2JvcmRlclN0eWxlJywgJ2Nvcm5lcnMnLCAnZGlzcGxheScsICdmbGV4JywgJ2ZsZXhCYXNpcycsICdmbGV4R3JvdycsICdmbGV4U2hyaW5rJywgJ2dyaWRBcmVhJywgJ2dyaWRDb2x1bW4nLCAnZ3JpZFJvdycsICdoZWlnaHQnLCAnanVzdGlmeVNlbGYnLCAnbWFyZ2luJywgJ21heEhlaWdodCcsICdtaW5IZWlnaHQnLCAnb3JkZXInLCAncGFkZGluZycsICdyZXNwb25zaXZlQ2xhc3MnLCAnc2hhZG93JywgJ3dpZHRoJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWJveCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnYWxpZ25TZWxmJywgJ2JhY2tncm91bmRDb2xvcicsICdib3JkZXInLCAnYm9yZGVyQ29sb3InLCAnYm9yZGVyU3R5bGUnLCAnY29ybmVycycsICdkaXNwbGF5JywgJ2ZsZXgnLCAnZmxleEJhc2lzJywgJ2ZsZXhHcm93JywgJ2ZsZXhTaHJpbmsnLCAnZ3JpZEFyZWEnLCAnZ3JpZENvbHVtbicsICdncmlkUm93JywgJ2hlaWdodCcsICdqdXN0aWZ5U2VsZicsICdtYXJnaW4nLCAnbWF4SGVpZ2h0JywgJ21pbkhlaWdodCcsICdvcmRlcicsICdwYWRkaW5nJywgJ3Jlc3BvbnNpdmVDbGFzcycsICdzaGFkb3cnLCAnd2lkdGgnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhQm94IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUJyYW5kTG9nbyBleHRlbmRzIENvbXBvbmVudHMuVmVnYUJyYW5kTG9nbyB7fVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ25hbWUnLCAnc2l6ZScsICd0aGVtZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1icmFuZC1sb2dvJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWyduYW1lJywgJ3NpemUnLCAndGhlbWUnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhQnJhbmRMb2dvIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuaW1wb3J0IHR5cGUgeyBWZWdhQnJlYWRjcnVtYkl0ZW1UeXBlIGFzIElWZWdhQnJlYWRjcnVtYlZlZ2FCcmVhZGNydW1iSXRlbVR5cGUgfSBmcm9tICdAZ2xvYmFscGF5bWVudHMvdmVnYS9kaXN0L3R5cGVzL2NvbXBvbmVudHMvdmVnYS1icmVhZGNydW1iL3R5cGVzJztcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhQnJlYWRjcnVtYiBleHRlbmRzIENvbXBvbmVudHMuVmVnYUJyZWFkY3J1bWIge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhhdCBhIGJyZWFkY3J1bWIgaXRlbSBoYXMgYmVlbiBjbGlja2VkLiBAdmVnYVZlcnNpb24gMS40MS4wXG4gICAqL1xuICB2ZWdhQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYUJyZWFkY3J1bWJWZWdhQnJlYWRjcnVtYkl0ZW1UeXBlPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGF0IGEgYnJlYWRjcnVtYiBpdGVtIGhhcyBiZWVuIGNsaWNrZWQuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgY2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYUJyZWFkY3J1bWJWZWdhQnJlYWRjcnVtYkl0ZW1UeXBlPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydjb21wYWN0T25Nb2JpbGUnLCAnaXRlbXMnLCAnbGFzdEl0ZW1DbGlja2FibGUnLCAnbWF4SXRlbXMnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtYnJlYWRjcnVtYicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnY29tcGFjdE9uTW9iaWxlJywgJ2l0ZW1zJywgJ2xhc3RJdGVtQ2xpY2thYmxlJywgJ21heEl0ZW1zJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUJyZWFkY3J1bWIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2xpY2snLCAnY2xpY2snXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUJ1dHRvbiBleHRlbmRzIENvbXBvbmVudHMuVmVnYUJ1dHRvbiB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgY2xpY2sgZXZlbnQgb2YgdGhlIGJ1dHRvbi4gQHZlZ2FWZXJzaW9uIDEuMC4xMVxuICAgKi9cbiAgdmVnYUNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8YW55Pj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgY2xpY2sgZXZlbnQgb2YgdGhlIGJ1dHRvbi4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBjbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnYmxvY2snLCAnZGFuZ2VyJywgJ2Rpc2FibGVkJywgJ2ljb24nLCAnaWNvbkFsaWduJywgJ2xhYmVsJywgJ2xvYWRpbmcnLCAnc2l6ZScsICd0eXBlJywgJ3ZhcmlhbnQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtYnV0dG9uJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydibG9jaycsICdkYW5nZXInLCAnZGlzYWJsZWQnLCAnaWNvbicsICdpY29uQWxpZ24nLCAnbGFiZWwnLCAnbG9hZGluZycsICdzaXplJywgJ3R5cGUnLCAndmFyaWFudCddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FCdXR0b24ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2xpY2snLCAnY2xpY2snXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUJ1dHRvbkNpcmNsZSBleHRlbmRzIENvbXBvbmVudHMuVmVnYUJ1dHRvbkNpcmNsZSB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgY2xpY2sgZXZlbnQgb2YgdGhlIGNpcmN1bGFyIGJ1dHRvbi4gQHZlZ2FWZXJzaW9uIDEuMC4xMVxuICAgKi9cbiAgdmVnYUNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8YW55Pj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgY2xpY2sgZXZlbnQgb2YgdGhlIGNpcmN1bGFyIGJ1dHRvbi4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBjbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnZGFuZ2VyJywgJ2Rpc2FibGVkJywgJ2ljb24nLCAnaWNvbkNvbG9yJywgJ2xhYmVsJywgJ3Nob3dUb29sdGlwJywgJ3NpemUnLCAndG9vbHRpcCcsICd0eXBlJywgJ3ZhcmlhbnQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtYnV0dG9uLWNpcmNsZScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnZGFuZ2VyJywgJ2Rpc2FibGVkJywgJ2ljb24nLCAnaWNvbkNvbG9yJywgJ2xhYmVsJywgJ3Nob3dUb29sdGlwJywgJ3NpemUnLCAndG9vbHRpcCcsICd0eXBlJywgJ3ZhcmlhbnQnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhQnV0dG9uQ2lyY2xlIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUNsaWNrJywgJ2NsaWNrJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FCdXR0b25Hcm91cCBleHRlbmRzIENvbXBvbmVudHMuVmVnYUJ1dHRvbkdyb3VwIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjbGljayBldmVudCBvZiB0aGUgYnV0dG9uIGdyb3VwLiBAdmVnYVZlcnNpb24gMi41LjBcbiAgICovXG4gIHZlZ2FDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNsaWNrIGV2ZW50IG9mIHRoZSBidXR0b24uIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjUuMFxuICAgKi9cbiAgY2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2Rpc2FibGVkJywgJ2ljb25BbGlnbicsICdzaXplJywgJ3ZhcmlhbnQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtYnV0dG9uLWdyb3VwJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydkaXNhYmxlZCcsICdpY29uQWxpZ24nLCAnc2l6ZScsICd2YXJpYW50J11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUJ1dHRvbkdyb3VwIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUNsaWNrJywgJ2NsaWNrJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FCdXR0b25Hcm91cEl0ZW0gZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FCdXR0b25Hcm91cEl0ZW0ge31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydkaXNhYmxlZCcsICdkcm9wZG93blByb3BzJywgJ2Ryb3Bkb3duU291cmNlJywgJ2ljb24nLCAnaWNvbk9ubHknLCAnaXRlbUtleScsICdsYWJlbCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1idXR0b24tZ3JvdXAtaXRlbScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnZGlzYWJsZWQnLCAnZHJvcGRvd25Qcm9wcycsICdkcm9wZG93blNvdXJjZScsICdpY29uJywgJ2ljb25Pbmx5JywgJ2l0ZW1LZXknLCAnbGFiZWwnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhQnV0dG9uR3JvdXBJdGVtIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUJ1dHRvbkxpbmsgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FCdXR0b25MaW5rIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjbGljayBldmVudCBvZiB0aGUgYnV0dG9uLiBAdmVnYVZlcnNpb24gMS4wLjExXG4gICAqL1xuICB2ZWdhQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjbGljayBldmVudCBvZiB0aGUgYnV0dG9uLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8YW55Pj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydkYW5nZXInLCAnZGlzYWJsZWQnLCAnZXZlbnRmdWwnLCAnaWNvbicsICdpY29uQWxpZ24nLCAnaWNvblR5cGUnLCAnbGFiZWwnLCAnbGluaycsICdzaXplJywgJ3RhcmdldCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1idXR0b24tbGluaycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnZGFuZ2VyJywgJ2Rpc2FibGVkJywgJ2V2ZW50ZnVsJywgJ2ljb24nLCAnaWNvbkFsaWduJywgJ2ljb25UeXBlJywgJ2xhYmVsJywgJ2xpbmsnLCAnc2l6ZScsICd0YXJnZXQnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhQnV0dG9uTGluayB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDbGljaycsICdjbGljayddKTtcbiAgfVxufVxuXG5pbXBvcnQgdHlwZSB7IFZlZ2FDYWxlbmRhckNoYW5nZUV2ZW50VHlwZSBhcyBJVmVnYUNhbGVuZGFyVmVnYUNhbGVuZGFyQ2hhbmdlRXZlbnRUeXBlIH0gZnJvbSAnQGdsb2JhbHBheW1lbnRzL3ZlZ2EvZGlzdC90eXBlcy9jb21wb25lbnRzL3ZlZ2EtY2FsZW5kYXIvdHlwZXMnO1xuaW1wb3J0IHR5cGUgeyBWZWdhQ2FsZW5kYXJFdmVudENsaWNrSW5mbyBhcyBJVmVnYUNhbGVuZGFyVmVnYUNhbGVuZGFyRXZlbnRDbGlja0luZm8gfSBmcm9tICdAZ2xvYmFscGF5bWVudHMvdmVnYS9kaXN0L3R5cGVzL2NvbXBvbmVudHMvdmVnYS1jYWxlbmRhci90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IFZlZ2FDYWxlbmRhckV2ZW50RWRpdEluZm8gYXMgSVZlZ2FDYWxlbmRhclZlZ2FDYWxlbmRhckV2ZW50RWRpdEluZm8gfSBmcm9tICdAZ2xvYmFscGF5bWVudHMvdmVnYS9kaXN0L3R5cGVzL2NvbXBvbmVudHMvdmVnYS1jYWxlbmRhci90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IFZlZ2FDYWxlbmRhckRhdGVDbGlja0luZm8gYXMgSVZlZ2FDYWxlbmRhclZlZ2FDYWxlbmRhckRhdGVDbGlja0luZm8gfSBmcm9tICdAZ2xvYmFscGF5bWVudHMvdmVnYS9kaXN0L3R5cGVzL2NvbXBvbmVudHMvdmVnYS1jYWxlbmRhci90eXBlcyc7XG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUNhbGVuZGFyIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhQ2FsZW5kYXIge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNvbXBvbmVudCB2aWV3IGNvbnRlbnQgY2hhbmdlIGFmdGVyIGEgc3dpdGNoIHBhbmVsIGNsaWNrLiBAdmVnYVZlcnNpb24gMi4xNC4wXG4gICAqL1xuICB2ZWdhQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FDYWxlbmRhclZlZ2FDYWxlbmRhckNoYW5nZUV2ZW50VHlwZT4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNvbXBvbmVudCB2aWV3IGNvbnRlbnQgY2hhbmdlIGFmdGVyIGEgc3dpdGNoIHBhbmVsIGNsaWNrLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4xNC4wXG4gICAqL1xuICBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYUNhbGVuZGFyVmVnYUNhbGVuZGFyQ2hhbmdlRXZlbnRUeXBlPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGF0IGEgY29tcG9uZW50IGV2ZW50IGl0ZW0gaXMgY2xpY2tlZC4gQHZlZ2FWZXJzaW9uIDIuMTQuMFxuICAgKi9cbiAgdmVnYUV2ZW50Q2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYUNhbGVuZGFyVmVnYUNhbGVuZGFyRXZlbnRDbGlja0luZm8+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoYXQgYSBjb21wb25lbnQgZXZlbnQgaXRlbSBpcyBjbGlja2VkLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4xNC4wXG4gICAqL1xuICBldmVudENsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FDYWxlbmRhclZlZ2FDYWxlbmRhckV2ZW50Q2xpY2tJbmZvPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGF0IGEgY2FsZW5kYXIgZXZlbnQgZWRpdCBhY3Rpb24gaXMgdHJpZ2dlcmVkIGZyb20gdGhlIGV2ZW50IHByZXZpZXcgcG9wb3Zlci4gQHZlZ2FWZXJzaW9uIDIuODcuMFxuICAgKi9cbiAgdmVnYUV2ZW50RWRpdDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhQ2FsZW5kYXJWZWdhQ2FsZW5kYXJFdmVudEVkaXRJbmZvPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGF0IGEgY2FsZW5kYXIgZXZlbnQgZWRpdCBhY3Rpb24gaXMgdHJpZ2dlcmVkIGZyb20gdGhlIGV2ZW50IHByZXZpZXcgcG9wb3Zlci4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuODcuMFxuICAgKi9cbiAgZXZlbnRFZGl0OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FDYWxlbmRhclZlZ2FDYWxlbmRhckV2ZW50RWRpdEluZm8+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoYXQgYSBjYWxlbmRhciBkYXRlIGl0ZW0gaGFzIGJlZW4gZG91YmxlLWNsaWNrZWQuIFRoZSBldmVudCB3aWxsIG5vdCBiZSB0cmlnZ2VyZWQgaWYgYGVuYWJsZURhdGFDbGlja2AgaXMgc2V0IHRvIHRydWUgdG8gcHJldmVudCBjb25mbGljdHMuIEB2ZWdhVmVyc2lvbiAyLjE3LjBcbiAgICovXG4gIHZlZ2FEYXRlRGJsQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYUNhbGVuZGFyVmVnYUNhbGVuZGFyRGF0ZUNsaWNrSW5mbz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhhdCBhIGNhbGVuZGFyIGRhdGUgaXRlbSBoYXMgYmVlbiBkb3VibGUtY2xpY2tlZC4gVGhlIGV2ZW50IHdpbGwgbm90IGJlIHRyaWdnZXJlZCBpZiBgZW5hYmxlRGF0YUNsaWNrYCBpcyB0cnVlIHRvIHByZXZlbnQgY29uZmxpY3RzLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4xNy4wXG4gICAqL1xuICBkYXRlRGJsQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYUNhbGVuZGFyVmVnYUNhbGVuZGFyRGF0ZUNsaWNrSW5mbz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhhdCBhIGNhbGVuZGFyIGRhdGUgaXRlbSBoYXMgYmVlbiBjbGlja2VkLiBUaGUgZXZlbnQgd2lsbCBub3QgYmUgdHJpZ2dlcmVkIGlmIGBlbmFibGVEYXRhQ2xpY2tgIGlzIGZhbHNlLiBAdmVnYVZlcnNpb24gMi42MS4wXG4gICAqL1xuICB2ZWdhRGF0ZUNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FDYWxlbmRhclZlZ2FDYWxlbmRhckRhdGVDbGlja0luZm8+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoYXQgYSBjYWxlbmRhciBkYXRlIGl0ZW0gaGFzIGJlZW4gY2xpY2tlZC4gVGhlIGV2ZW50IHdpbGwgbm90IGJlIHRyaWdnZXJlZCBpZiBgZW5hYmxlRGF0YUNsaWNrYCBpcyBmYWxzZS4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuNjEuMFxuICAgKi9cbiAgZGF0ZUNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FDYWxlbmRhclZlZ2FDYWxlbmRhckRhdGVDbGlja0luZm8+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoYXQgYSBjYWxlbmRhciBtb3JlIGFjdGlvbiBtZW51IGl0ZW0gaGFzIGJlZW4gY2xpY2tlZC4gQHZlZ2FWZXJzaW9uIDIuMjAuMFxuICAgKi9cbiAgdmVnYU1vcmVBY3Rpb25DbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhhdCBhIGNhbGVuZGFyIG1vcmUgYWN0aW9uIG1lbnUgaXRlbSBoYXMgYmVlbiBjbGlja2VkLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4yMC4wXG4gICAqL1xuICBtb3JlQWN0aW9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2VuYWJsZURhdGVDbGljaycsICdlbmFibGVkRXZlbnRQcmV2aWV3JywgJ2V2ZW50RWRpdGFibGUnLCAnZXZlbnRzJywgJ2dldEV2ZW50UHJldmlld0FjdGlvbnMnLCAnaXNEYXRlRGlzYWJsZWQnLCAnbW9yZUFjdGlvbkRyb3Bkb3duUHJvcHMnLCAnc2hvd0V2ZW50Q29sb3JCYXInLCAnc2hvd1N3aXRjaFZpZXcnLCAnc2hvd1dlZWtlbmRzJywgJ3RpbWVGb3JtYXQnLCAndGltZXpvbmUnLCAndmlld01vZGUnXSxcbiAgbWV0aG9kczogWydzZXRDdXJyZW50UGVyaW9kJywgJ2dldEN1cnJlbnRQZXJpb2QnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtY2FsZW5kYXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2VuYWJsZURhdGVDbGljaycsICdlbmFibGVkRXZlbnRQcmV2aWV3JywgJ2V2ZW50RWRpdGFibGUnLCAnZXZlbnRzJywgJ2dldEV2ZW50UHJldmlld0FjdGlvbnMnLCAnaXNEYXRlRGlzYWJsZWQnLCAnbW9yZUFjdGlvbkRyb3Bkb3duUHJvcHMnLCAnc2hvd0V2ZW50Q29sb3JCYXInLCAnc2hvd1N3aXRjaFZpZXcnLCAnc2hvd1dlZWtlbmRzJywgJ3RpbWVGb3JtYXQnLCAndGltZXpvbmUnLCAndmlld01vZGUnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhQ2FsZW5kYXIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2hhbmdlJywgJ2NoYW5nZScsICd2ZWdhRXZlbnRDbGljaycsICdldmVudENsaWNrJywgJ3ZlZ2FFdmVudEVkaXQnLCAnZXZlbnRFZGl0JywgJ3ZlZ2FEYXRlRGJsQ2xpY2snLCAnZGF0ZURibENsaWNrJywgJ3ZlZ2FEYXRlQ2xpY2snLCAnZGF0ZUNsaWNrJywgJ3ZlZ2FNb3JlQWN0aW9uQ2xpY2snLCAnbW9yZUFjdGlvbkNsaWNrJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FDYWxlbmRhckV2ZW50IGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhQ2FsZW5kYXJFdmVudCB7fVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2NhbGVuZGFyRXZlbnQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtY2FsZW5kYXItZXZlbnQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2NhbGVuZGFyRXZlbnQnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhQ2FsZW5kYXJFdmVudCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FDYWxlbmRhckV2ZW50UHJldmlldyBleHRlbmRzIENvbXBvbmVudHMuVmVnYUNhbGVuZGFyRXZlbnRQcmV2aWV3IHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1jYWxlbmRhci1ldmVudC1wcmV2aWV3JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50Pidcbn0pXG5leHBvcnQgY2xhc3MgVmVnYUNhbGVuZGFyRXZlbnRQcmV2aWV3IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUNhbGVuZGFyRXZlbnRTbG90IGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhQ2FsZW5kYXJFdmVudFNsb3Qge31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydldmVudEtleSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1jYWxlbmRhci1ldmVudC1zbG90JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydldmVudEtleSddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FDYWxlbmRhckV2ZW50U2xvdCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cbmltcG9ydCB0eXBlIHsgVmVnYUNhbGVuZGFyUGVyaW9kVHlwZSBhcyBJVmVnYUNhbGVuZGFyUGVyaW9kU3dpdGNoZXJWZWdhQ2FsZW5kYXJQZXJpb2RUeXBlIH0gZnJvbSAnQGdsb2JhbHBheW1lbnRzL3ZlZ2EvZGlzdC90eXBlcy9jb21wb25lbnRzL3ZlZ2EtY2FsZW5kYXIvdHlwZXMnO1xuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FDYWxlbmRhclBlcmlvZFN3aXRjaGVyIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhQ2FsZW5kYXJQZXJpb2RTd2l0Y2hlciB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGF0IHRoZSBjYWxlbmRhciBwZXJpb2QgaGFzIGNoYW5nZWQuIEB2ZWdhVmVyc2lvbiAyLjkxLjBcbiAgICovXG4gIHZlZ2FDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYUNhbGVuZGFyUGVyaW9kU3dpdGNoZXJWZWdhQ2FsZW5kYXJQZXJpb2RUeXBlPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGF0IHRoZSBjYWxlbmRhciBwZXJpb2QgaGFzIGNoYW5nZWQuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjkxLjBcbiAgICovXG4gIGNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhQ2FsZW5kYXJQZXJpb2RTd2l0Y2hlclZlZ2FDYWxlbmRhclBlcmlvZFR5cGU+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ3Nob3dXZWVrZW5kcycsICd0aW1lem9uZScsICd2aWV3TW9kZSddLFxuICBtZXRob2RzOiBbJ3NldEN1cnJlbnRQZXJpb2QnLCAnZ2V0Q3VycmVudFBlcmlvZCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1jYWxlbmRhci1wZXJpb2Qtc3dpdGNoZXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ3Nob3dXZWVrZW5kcycsICd0aW1lem9uZScsICd2aWV3TW9kZSddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FDYWxlbmRhclBlcmlvZFN3aXRjaGVyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUNoYW5nZScsICdjaGFuZ2UnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUNhcmQgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FDYXJkIHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnYmFja2dyb3VuZENvbG9yJywgJ21hcmdpbicsICdwYWRkaW5nJywgJ3ZhcmlhbnQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtY2FyZCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnYmFja2dyb3VuZENvbG9yJywgJ21hcmdpbicsICdwYWRkaW5nJywgJ3ZhcmlhbnQnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhQ2FyZCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FDYXJvdXNlbCBleHRlbmRzIENvbXBvbmVudHMuVmVnYUNhcm91c2VsIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSB0cmFuc2l0aW9uIG9mIHRoZSBjYXJvdXNlbCB0byBhbm90aGVyIHBhZ2UsXG4gICB3aGV0aGVyIHRyaWdnZXJlZCBwcm9ncmFtbWF0aWNhbGx5IG9yIHRocm91Z2ggdXNlciBpbnRlcmFjdGlvbi4gQHZlZ2FWZXJzaW9uIDEuMy4wXG4gICAqL1xuICB2ZWdhUGFnZVVwZGF0ZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PG51bWJlcj4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIHRyYW5zaXRpb24gb2YgdGhlIGNhcm91c2VsIHRvIGFub3RoZXIgcGFnZSxcbiAgIHdoZXRoZXIgdHJpZ2dlcmVkIHByb2dyYW1tYXRpY2FsbHkgb3IgdGhyb3VnaCB1c2VyIGludGVyYWN0aW9uLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIHBhZ2VVcGRhdGU6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxudW1iZXI+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2NhblN3aXBlJywgJ2l0ZW1zUGVyUGFnZScsICdwZXJQYWdlJywgJ3Nob3dTbGlkZXInLCAnc3BhY2luZyddLFxuICBtZXRob2RzOiBbJ25leHRQYWdlJywgJ3ByZXZQYWdlJywgJ2dvVG9QYWdlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWNhcm91c2VsJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydjYW5Td2lwZScsICdpdGVtc1BlclBhZ2UnLCAncGVyUGFnZScsICdzaG93U2xpZGVyJywgJ3NwYWNpbmcnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhQ2Fyb3VzZWwge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhUGFnZVVwZGF0ZScsICdwYWdlVXBkYXRlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FDaGVja2JveCBleHRlbmRzIENvbXBvbmVudHMuVmVnYUNoZWNrYm94IHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGNoYW5nZXMgaW4gdGhlIHZhbHVlIG9mIHRoZSBjaGVja2JveCxcbiAgIHdoZXRoZXIgdHJpZ2dlcmVkIHByb2dyYW1tYXRpY2FsbHkgb3IgdGhyb3VnaCB1c2VyIGludGVyYWN0aW9uLiBAdmVnYVZlcnNpb24gMS4wLjEwXG4gICAqL1xuICB2ZWdhQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nIHwgYm9vbGVhbj4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgY2hhbmdlcyBpbiB0aGUgdmFsdWUgb2YgdGhlIGNoZWNrYm94XG4gICB0cmlnZ2VyZWQgZXhjbHVzaXZlbHkgYnkgdXNlciBpbnRlcmFjdGlvbiAobW91c2UgY2xpY2sgb3Iga2V5Ym9hcmQgYWN0aXZhdGlvbikuXG5cblVubGlrZSBgdmVnYUNoYW5nZWAsIHRoaXMgZXZlbnQgZG9lcyBOT1QgZmlyZSB3aGVuIHRoZSBgY2hlY2tlZGAgb3IgYHZhbHVlYFxuICAgcHJvcCBpcyByZWFzc2lnbmVkIHByb2dyYW1tYXRpY2FsbHkuIFVzZSB0aGlzIGV2ZW50IHdoZW4geW91IHdhbnQgdG8gcmVhY3RcbiAgIG9ubHkgdG8gcmVhbCB1c2VyIGlucHV0IChlLmcuLCBhbmFseXRpY3MsIGRlcml2ZWQgXCJzZWxlY3QgYWxsXCIgc3RhdGUpLiBAcmVtYXJrcyBDYWxsaW5nIGBldmVudC5wcmV2ZW50RGVmYXVsdCgpYCBpcyBhIG5vLW9wIOKAlCBpdCBkb2VzIG5vdCByb2xsXG5iYWNrIGBjaGVja2VkYC9gdmFsdWVgIG5vciBzdXBwcmVzcyB0aGUgcGFpcmVkIGB2ZWdhQ2hhbmdlYCBldmVudC5cbmBjYW5jZWxhYmxlOiB0cnVlYCBpcyByZXRhaW5lZCBvbmx5IGZvciBwYXJpdHkgd2l0aCBgdmVnYUNoYW5nZWAuLEBzZWUge21vZHVsZSA6dmVnYS1jaGVja2JveC11c2VyLWNoYW5nZX0sQHNlZSB7bW9kdWxlIDp2ZWdhLWNoZWNrYm94LXVzZXItY2hhbmdlLWtleWJvYXJkfSxAc2VlIHttb2R1bGUgOnZlZ2EtY2hlY2tib3gtdXNlci1jaGFuZ2Uta2V5Ym9hcmQtZW50ZXJ9LEBzZWUge21vZHVsZSA6dmVnYS1jaGVja2JveC11c2VyLWNoYW5nZS1wcm9ncmFtbWF0aWN9LEBzZWUge21vZHVsZSA6dmVnYS1jaGVja2JveC11c2VyLWNoYW5nZS1jb250YWlubWVudH0sQHZlZ2FWZXJzaW9uIDIuODkuMFxuICAgKi9cbiAgdmVnYVVzZXJDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmcgfCBib29sZWFuPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBjaGFuZ2VzIGluIHRoZSB2YWx1ZSBvZiB0aGUgY2hlY2tib3hcbiAgIHRyaWdnZXJlZCBleGNsdXNpdmVseSBieSB1c2VyIGludGVyYWN0aW9uIChtb3VzZSBjbGljayBvciBrZXlib2FyZCBhY3RpdmF0aW9uKS4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuODkuMFxuICAgKi9cbiAgdXNlckNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZyB8IGJvb2xlYW4+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGNoYW5nZXMgaW4gdGhlIHZhbHVlIG9mIHRoZSBjaGVja2JveCxcbiAgIHdoZXRoZXIgdHJpZ2dlcmVkIHByb2dyYW1tYXRpY2FsbHkgb3IgdGhyb3VnaCB1c2VyIGludGVyYWN0aW9uLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZyB8IGJvb2xlYW4+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2NoZWNrZWQnLCAnZGlzYWJsZWQnLCAnaWRlbnRpZmllcicsICdpbmRldGVybWluYXRlJywgJ2lzVmFsaWQnLCAncmVxdWlyZWQnLCAnc2l6ZScsICd2YWx1ZSddLFxuICBtZXRob2RzOiBbJ3NldFZhbHVlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWNoZWNrYm94JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydjaGVja2VkJywgJ2Rpc2FibGVkJywgJ2lkZW50aWZpZXInLCAnaW5kZXRlcm1pbmF0ZScsICdpc1ZhbGlkJywgJ3JlcXVpcmVkJywgJ3NpemUnLCAndmFsdWUnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhQ2hlY2tib3gge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2hhbmdlJywgJ3ZlZ2FVc2VyQ2hhbmdlJywgJ3VzZXJDaGFuZ2UnLCAnY2hhbmdlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FDaGVja2JveEdyb3VwIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhQ2hlY2tib3hHcm91cCB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBjaGFuZ2VzIGluIHRoZSB2YWx1ZVxuICBvZiBhbnkgbmVzdGVkIGNoZWNrYm94IHdpdGhpbiB0aGUgY2hlY2tib3ggZ3JvdXAsXG4gIHdoZXRoZXIgdHJpZ2dlcmVkIHByb2dyYW1tYXRpY2FsbHkgb3IgdGhyb3VnaFxuICB1c2VyIGludGVyYWN0aW9uLiBAdmVnYVZlcnNpb24gMS4wLjEwXG4gICAqL1xuICB2ZWdhQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nW10+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGNoYW5nZXMgaW4gdGhlIHZhbHVlIG9mIHRoZSBjaGVja2JveCBncm91cFxuICB0cmlnZ2VyZWQgZXhjbHVzaXZlbHkgYnkgdXNlciBpbnRlcmFjdGlvbiAobW91c2UgY2xpY2sgb3Iga2V5Ym9hcmRcbiAgYWN0aXZhdGlvbikgb24gYSBuZXN0ZWQgY2hlY2tib3guXG5cblVubGlrZSBgdmVnYUNoYW5nZWAsIHRoaXMgZXZlbnQgZG9lcyBOT1QgZmlyZSB3aGVuIHRoZSBgdmFsdWVgIHByb3BcbiAgaXMgcmVhc3NpZ25lZCBwcm9ncmFtbWF0aWNhbGx5LiBVc2UgdGhpcyBldmVudCB3aGVuIHlvdSB3YW50IHRvXG4gIHJlYWN0IG9ubHkgdG8gcmVhbCB1c2VyIGlucHV0IChlLmcuLCBhbmFseXRpY3MsIGRlcml2ZWRcbiAgXCJzZWxlY3QgYWxsXCIgc3RhdGUpLiBAcmVtYXJrcyBDYWxsaW5nIGBldmVudC5wcmV2ZW50RGVmYXVsdCgpYCBpcyBhIG5vLW9wIOKAlCBpdCBkb2VzIG5vdCByb2xsXG5iYWNrIGB2YWx1ZWAgbm9yIHN1cHByZXNzIHRoZSBwYWlyZWQgYHZlZ2FDaGFuZ2VgIGV2ZW50LlxuYGNhbmNlbGFibGU6IHRydWVgIGlzIHJldGFpbmVkIG9ubHkgZm9yIHBhcml0eSB3aXRoIGB2ZWdhQ2hhbmdlYC4sQHNlZSB7bW9kdWxlIDp2ZWdhLWNoZWNrYm94LWdyb3VwLXVzZXItY2hhbmdlfSxAc2VlIHttb2R1bGUgOnZlZ2EtY2hlY2tib3gtZ3JvdXAtdXNlci1jaGFuZ2UtcHJvZ3JhbW1hdGljfSxAc2VlIHttb2R1bGUgOnZlZ2EtY2hlY2tib3gtZ3JvdXAtdXNlci1jaGFuZ2Utbm8tZG91YmxlfSxAdmVnYVZlcnNpb24gMi44OS4wXG4gICAqL1xuICB2ZWdhVXNlckNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZ1tdPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBjaGFuZ2VzIGluIHRoZSB2YWx1ZVxuICBvZiBhbnkgbmVzdGVkIGNoZWNrYm94IHdpdGhpbiB0aGUgY2hlY2tib3ggZ3JvdXAsXG4gIHRyaWdnZXJlZCBleGNsdXNpdmVseSBieSB1c2VyIGludGVyYWN0aW9uIChtb3VzZSBjbGljayBvciBrZXlib2FyZCBhY3RpdmF0aW9uKS4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuODkuMFxuICAgKi9cbiAgdXNlckNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZ1tdPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBjaGFuZ2VzIGluIHRoZSB2YWx1ZVxuICBvZiBhbnkgbmVzdGVkIGNoZWNrYm94IHdpdGhpbiB0aGUgY2hlY2tib3ggZ3JvdXAsXG4gIHdoZXRoZXIgdHJpZ2dlcmVkIHByb2dyYW1tYXRpY2FsbHkgb3IgdGhyb3VnaFxuICB1c2VyIGludGVyYWN0aW9uLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZ1tdPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydhdXRvVmFsaWRhdGlvbicsICdkaXNhYmxlZCcsICdoaW50JywgJ2lzVmFsaWQnLCAnbGFiZWwnLCAnb3B0aW9uYWwnLCAncmVxdWlyZWQnLCAndmFsaWRhdGlvblJ1bGVzJywgJ3ZhbHVlJywgJ3ZlZ2FGbGV4UHJvcCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1jaGVja2JveC1ncm91cCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnYXV0b1ZhbGlkYXRpb24nLCAnZGlzYWJsZWQnLCAnaGludCcsICdpc1ZhbGlkJywgJ2xhYmVsJywgJ29wdGlvbmFsJywgJ3JlcXVpcmVkJywgJ3ZhbGlkYXRpb25SdWxlcycsICd2YWx1ZScsICd2ZWdhRmxleFByb3AnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhQ2hlY2tib3hHcm91cCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDaGFuZ2UnLCAndmVnYVVzZXJDaGFuZ2UnLCAndXNlckNoYW5nZScsICdjaGFuZ2UnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUNoaXAgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FDaGlwIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjbGljayBldmVudCBvZiB0aGUgY2xvc2UgYnV0dG9uIG9mIHRoZSBjaGlwLlxuXG5UaGlzIGV2ZW50IGlzIG9ubHkgZGlzcGF0Y2hlZCB3aGVuIHRoZSBgc2hvd0Nsb3NlSWNvbmAgcHJvcGVydHkgaXMgc2V0IHRvIGB0cnVlYC4gQHZlZ2FWZXJzaW9uIDEuMTEuMFxuICAgKi9cbiAgdmVnYUNsb3NlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNsaWNrIGV2ZW50IG9mIHRoZSBjbG9zZSBidXR0b24gb2YgdGhlIGNoaXAuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgY2xvc2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgY2xpY2sgZXZlbnQgb2YgdGhlIGNoaXAuXG5cblRoaXMgZXZlbnQgaXMgb25seSBkaXNwYXRjaGVkIHdoZW4gdGhlIGBjbGlja2FibGVgIHByb3BlcnR5IGlzIHNldCB0byBgdHJ1ZWAuIEB2ZWdhVmVyc2lvbiAxLjExLjBcbiAgICovXG4gIHZlZ2FDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjbGljayBldmVudCBvZiB0aGUgY2hpcC4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBjbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2JnQ29sb3InLCAnY2hpcFR5cGUnLCAnY2xpY2thYmxlJywgJ2ljb24nLCAnaWNvbkFsaWduJywgJ2ljb25Db2xvcicsICdzaG93Q2xvc2VJY29uJywgJ3NpemUnLCAnc3RhdHVzQ29sb3InLCAndGV4dCcsICd0ZXh0Q29sb3InLCAndmFyaWFudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1jaGlwJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydiZ0NvbG9yJywgJ2NoaXBUeXBlJywgJ2NsaWNrYWJsZScsICdpY29uJywgJ2ljb25BbGlnbicsICdpY29uQ29sb3InLCAnc2hvd0Nsb3NlSWNvbicsICdzaXplJywgJ3N0YXR1c0NvbG9yJywgJ3RleHQnLCAndGV4dENvbG9yJywgJ3ZhcmlhbnQnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhQ2hpcCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDbG9zZScsICdjbG9zZScsICd2ZWdhQ2xpY2snLCAnY2xpY2snXSk7XG4gIH1cbn1cblxuaW1wb3J0IHR5cGUgeyBWZWdhQ29kZUJsb2NrVmFsdWUgYXMgSVZlZ2FDb2RlQmxvY2tWZWdhQ29kZUJsb2NrVmFsdWUgfSBmcm9tICdAZ2xvYmFscGF5bWVudHMvdmVnYS9kaXN0L3R5cGVzL2NvbXBvbmVudHMvdmVnYS1jb2RlLWJsb2NrL3R5cGVzJztcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhQ29kZUJsb2NrIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhQ29kZUJsb2NrIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGEgdmFsdWUgY2hhbmdlLiBAdmVnYVZlcnNpb24gMi41MC4wXG4gICAqL1xuICB2ZWdhQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FDb2RlQmxvY2tWZWdhQ29kZUJsb2NrVmFsdWU+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGEgdmFsdWUgY2hhbmdlLiBAdmVnYVZlcnNpb24gMi41MC4wLEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlXG4gICAqL1xuICBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYUNvZGVCbG9ja1ZlZ2FDb2RlQmxvY2tWYWx1ZT4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGRlbGV0aW9uIG9mIHRoZSBjb2RlIGJsb2NrLiBCeSBkZWZhdWx0LCB0aGUgZWxlbWVudCBpcyByZW1vdmVkIGZyb20gdGhlIHBhZ2UsIGJ1dCB0aGlzIGJlaGF2aW9yIGNhbiBiZSBwcmV2ZW50ZWQuIEB2ZWdhVmVyc2lvbiAyLjUwLjBcbiAgICovXG4gIHZlZ2FSZW1vdmU6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBkZWxldGlvbiBvZiB0aGUgY29kZSBibG9jay4gQnkgZGVmYXVsdCwgdGhlIGVsZW1lbnQgaXMgcmVtb3ZlZCBmcm9tIHRoZSBwYWdlLCBidXQgdGhpcyBiZWhhdmlvciBjYW4gYmUgcHJldmVudGVkLiBAdmVnYVZlcnNpb24gMi41MC4wLEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlXG4gICAqL1xuICByZW1vdmU6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2Rpc2FibGVkJywgJ3JlYWRPbmx5JywgJ3Nob3dDb3B5QnV0dG9uJywgJ3Nob3dMaW5lTnVtYmVyJywgJ3ZhbHVlJ10sXG4gIG1ldGhvZHM6IFsnZG9Gb2N1cyddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1jb2RlLWJsb2NrJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydkaXNhYmxlZCcsICdyZWFkT25seScsICdzaG93Q29weUJ1dHRvbicsICdzaG93TGluZU51bWJlcicsICd2YWx1ZSddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FDb2RlQmxvY2sge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2hhbmdlJywgJ2NoYW5nZScsICd2ZWdhUmVtb3ZlJywgJ3JlbW92ZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhQ29sb3JQaWNrZXIgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FDb2xvclBpY2tlciB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBjaGFuZ2VzIGluIHRoZSB2YWx1ZSBvZiB0aGUgY29sb3IgcGlja2VyLFxuICAgd2hldGhlciB0cmlnZ2VyZWQgcHJvZ3JhbW1hdGljYWxseSBvciB0aHJvdWdoIHVzZXIgaW50ZXJhY3Rpb24uIEB2ZWdhVmVyc2lvbiAxLjEzLjBcbiAgICovXG4gIHZlZ2FDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGNoYW5nZXMgaW4gdGhlIHZhbHVlIG9mIHRoZSBjb2xvciBwaWNrZXIsXG4gICB3aGV0aGVyIHRyaWdnZXJlZCBwcm9ncmFtbWF0aWNhbGx5IG9yIHRocm91Z2ggdXNlciBpbnRlcmFjdGlvbi4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2F1dG9WYWxpZGF0aW9uJywgJ2NvbG9ycycsICdjb2x1bW5zJywgJ2Rpc2FibGVkJywgJ2hpbnQnLCAnaXNJbmxpbmUnLCAnaXNWYWxpZCcsICdsYWJlbCcsICdvcHRpb25hbCcsICdyZXF1aXJlZCcsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtY29sb3ItcGlja2VyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydhdXRvVmFsaWRhdGlvbicsICdjb2xvcnMnLCAnY29sdW1ucycsICdkaXNhYmxlZCcsICdoaW50JywgJ2lzSW5saW5lJywgJ2lzVmFsaWQnLCAnbGFiZWwnLCAnb3B0aW9uYWwnLCAncmVxdWlyZWQnLCAndmFsaWRhdGlvblJ1bGVzJywgJ3ZhbHVlJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUNvbG9yUGlja2VyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUNoYW5nZScsICdjaGFuZ2UnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUNvbG9yU3dhdGNoIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhQ29sb3JTd2F0Y2gge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNsaWNrIGV2ZW50IG9mIHRoZSBzd2F0Y2guIEB2ZWdhVmVyc2lvbiAyLjgyLjBcbiAgICovXG4gIHZlZ2FDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjbGljayBldmVudCBvZiB0aGUgc3dhdGNoLiBAdmVnYVZlcnNpb24gMi44Mi4wLEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlXG4gICAqL1xuICBjbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2NvbG9yJywgJ2Rpc2FibGVkJywgJ2xhYmVsJywgJ3NlbGVjdGVkJywgJ3NoYXBlJywgJ3NpemUnLCAndmFyaWFudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1jb2xvci1zd2F0Y2gnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2NvbG9yJywgJ2Rpc2FibGVkJywgJ2xhYmVsJywgJ3NlbGVjdGVkJywgJ3NoYXBlJywgJ3NpemUnLCAndmFyaWFudCddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FDb2xvclN3YXRjaCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDbGljaycsICdjbGljayddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhQ29sb3JTd2F0Y2hQaWNrZXIgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FDb2xvclN3YXRjaFBpY2tlciB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgY2hhbmdlIG9mIHRoZSBzZWxlY3RlZCBjb2xvciB2YWx1ZS4gQHZlZ2FWZXJzaW9uIDIuODQuMFxuICAgKi9cbiAgdmVnYUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNoYW5nZSBvZiB0aGUgc2VsZWN0ZWQgY29sb3IgdmFsdWUuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjg0LjBcbiAgICovXG4gIGNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnYXV0b1ZhbGlkYXRpb24nLCAnY29sb3JzJywgJ2Rpc2FibGVkJywgJ2lucHV0Rm9ybWF0dGVyJywgJ2lucHV0UGxhY2Vob2xkZXInLCAnaW5wdXRQcmVmaXhJY29uJywgJ2lzVmFsaWQnLCAnbGFiZWwnLCAncmVxdWlyZWQnLCAnc2hvd0NsZWFyQnV0dG9uJywgJ3Nob3dJbnB1dCcsICdzd2F0Y2hHcmlkQ29sdW1ucycsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtY29sb3Itc3dhdGNoLXBpY2tlcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnYXV0b1ZhbGlkYXRpb24nLCAnY29sb3JzJywgJ2Rpc2FibGVkJywgJ2lucHV0Rm9ybWF0dGVyJywgJ2lucHV0UGxhY2Vob2xkZXInLCAnaW5wdXRQcmVmaXhJY29uJywgJ2lzVmFsaWQnLCAnbGFiZWwnLCAncmVxdWlyZWQnLCAnc2hvd0NsZWFyQnV0dG9uJywgJ3Nob3dJbnB1dCcsICdzd2F0Y2hHcmlkQ29sdW1ucycsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWUnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhQ29sb3JTd2F0Y2hQaWNrZXIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2hhbmdlJywgJ2NoYW5nZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhQ29tYm9Cb3ggZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FDb21ib0JveCB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBjaGFuZ2VzIGluIHRoZSBpdGVtcyBvZiB0aGUgY29tYm8gYm94IHZhbHVlLFxuICAgd2hldGhlciB0cmlnZ2VyZWQgcHJvZ3JhbW1hdGljYWxseSBvciB0aHJvdWdoIHVzZXIgaW50ZXJhY3Rpb24uIEB2ZWdhVmVyc2lvbiAxLjExLjBcbiAgICovXG4gIHZlZ2FDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmdbXT4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgY2hhbmdlcyBpbiB0aGUgaXRlbXMgb2YgdGhlIGNvbWJvIGJveCB2YWx1ZSxcbiAgIHdoZXRoZXIgdHJpZ2dlcmVkIHByb2dyYW1tYXRpY2FsbHkgb3IgdGhyb3VnaCB1c2VyIGludGVyYWN0aW9uLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZ1tdPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB3aGVuIHRoZSB1c2VyIGhhcyBjaG9zZW4gdG8gYWRkIGEgbmV3IHZhbHVlXG4gICB0byB0aGUgc291cmNlIGFuZCB2YWx1ZSBvZiB0aGUgY29tYm8gYm94LlxuXG5UaGUgZXZlbnQncyBgZGV0YWlsYCBwcm9wZXJ0eSBjb250YWlucyB0aGUgbmV3IHZhbHVlLlxuXG5UaGUgY29tYm8gYm94IF9kb2VzIG5vdF8gYXV0b21hdGljYWxseSBhZGQgdGhlIG5ldyB2YWx1ZSB0byBpdHMgYHNvdXJjZWAgYW5kIGB2YWx1ZWAuIEB2ZWdhVmVyc2lvbiAxLjE0LjBcbiAgICovXG4gIHZlZ2FDcmVhdGU6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHdoZW4gdGhlIHVzZXIgaGFzIGNob3NlbiB0byBhZGQgYSBuZXcgdmFsdWVcbiAgIHRvIHRoZSBzb3VyY2UgYW5kIHZhbHVlIG9mIHRoZSBjb21ibyBib3guXG5cblRoZSBldmVudCdzIGBkZXRhaWxgIHByb3BlcnR5IGNvbnRhaW5zIHRoZSBuZXcgdmFsdWUuXG5cblRoZSBjb21ibyBib3ggX2RvZXMgbm90XyBhdXRvbWF0aWNhbGx5IGFkZCB0aGUgbmV3IHZhbHVlIHRvIGl0cyBgc291cmNlYCBhbmQgYHZhbHVlYC4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBjcmVhdGU6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSB1c2VyJ3Mgc2VhcmNoIGFjdGlvbiBpbiB0aGUgY29tYm8gYm94LFxuICAgYnV0IG9ubHkgaWYgdGhlIGB1c2VEZWZhdWx0RmlsdGVyYCBwcm9wZXJ0eSBpcyBzZXQgdG8gYGZhbHNlYC4gQHZlZ2FWZXJzaW9uIDEuMjQuMFxuICAgKi9cbiAgdmVnYVNlYXJjaDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIHVzZXIncyBzZWFyY2ggYWN0aW9uIGluIHRoZSBjb21ibyBib3gsXG4gICBidXQgb25seSBpZiB0aGUgYHVzZURlZmF1bHRGaWx0ZXJgIHByb3BlcnR5IGlzIHNldCB0byBgZmFsc2VgLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIHNlYXJjaDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBvbmx5IGZpcmVkIHdoZW4gdGhlIFNlbGVjdCBBbGwgY2hlY2tib3ggaW4gdGhlIGRyb3Bkb3duIGhhcyBiZWVuIGNsaWNrZWQuXG5cblRoZSBldmVudCdzIGBkZXRhaWxgIHByb3BlcnR5IGlzIGB0cnVlYCB3aGVuIHRoZSBTZWxlY3QgQWxsIGNoZWNrYm94IGlzIGNsaWNrZWQgdG8gc2VsZWN0IGFsbCBpdGVtcyxcbiAgIGFuZCBgZmFsc2VgIHdoZW4gdGhlIFNlbGVjdCBBbGwgY2hlY2tib3ggaXMgY2xpY2tlZCB0byBjbGVhciBhbGwgc2VsZWN0ZWQgaXRlbXMuIEB2ZWdhVmVyc2lvbiAyLjk1LjBcbiAgICovXG4gIHZlZ2FEcm9wZG93blNlbGVjdEFsbENsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8Ym9vbGVhbj4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBvbmx5IGZpcmVkIHdoZW4gdGhlIFNlbGVjdCBBbGwgY2hlY2tib3ggaW4gdGhlIGRyb3Bkb3duIGhhcyBiZWVuIGNsaWNrZWQuXG5cblRoZSBldmVudCdzIGBkZXRhaWxgIHByb3BlcnR5IGlzIGB0cnVlYCB3aGVuIHRoZSBTZWxlY3QgQWxsIGNoZWNrYm94IGlzIGNsaWNrZWQgdG8gc2VsZWN0IGFsbCBpdGVtcyxcbiAgIGFuZCBgZmFsc2VgIHdoZW4gdGhlIFNlbGVjdCBBbGwgY2hlY2tib3ggaXMgY2xpY2tlZCB0byBjbGVhciBhbGwgc2VsZWN0ZWQgaXRlbXMuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjk1LjBcbiAgICovXG4gIGRyb3Bkb3duU2VsZWN0QWxsQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxib29sZWFuPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydhdXRvVmFsaWRhdGlvbicsICdjb250YWluZXJNYXhIZWlnaHQnLCAnZGlzYWJsZWQnLCAnaGludCcsICdpc1ZhbGlkJywgJ2xhYmVsJywgJ29wdGlvbmFsJywgJ3BsYWNlaG9sZGVyJywgJ3JlcXVpcmVkJywgJ3NpemUnLCAnc291cmNlJywgJ3VzZURlZmF1bHRGaWx0ZXInLCAndmFsaWRhdGlvblJ1bGVzJywgJ3ZhbHVlJywgJ3ZlZ2FEcm9wZG93blByb3BzJ10sXG4gIG1ldGhvZHM6IFsnY2xvc2UnLCAnb3BlbiddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1jb21iby1ib3gnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2F1dG9WYWxpZGF0aW9uJywgJ2NvbnRhaW5lck1heEhlaWdodCcsICdkaXNhYmxlZCcsICdoaW50JywgJ2lzVmFsaWQnLCAnbGFiZWwnLCAnb3B0aW9uYWwnLCAncGxhY2Vob2xkZXInLCAncmVxdWlyZWQnLCAnc2l6ZScsICdzb3VyY2UnLCAndXNlRGVmYXVsdEZpbHRlcicsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWUnLCAndmVnYURyb3Bkb3duUHJvcHMnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhQ29tYm9Cb3gge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2hhbmdlJywgJ2NoYW5nZScsICd2ZWdhQ3JlYXRlJywgJ2NyZWF0ZScsICd2ZWdhU2VhcmNoJywgJ3NlYXJjaCcsICd2ZWdhRHJvcGRvd25TZWxlY3RBbGxDbGljaycsICdkcm9wZG93blNlbGVjdEFsbENsaWNrJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FDb3VudGVyQmFkZ2UgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FDb3VudGVyQmFkZ2Uge31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydjb2xvcicsICdjb3VudCcsICdkb3QnLCAnb2Zmc2V0J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWNvdW50ZXItYmFkZ2UnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2NvbG9yJywgJ2NvdW50JywgJ2RvdCcsICdvZmZzZXQnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhQ291bnRlckJhZGdlIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuaW1wb3J0IHR5cGUgeyBEYXRlUGlja2VyTW9udGhZZWFyVHlwZXMgYXMgSVZlZ2FEYXRlUGlja2VyRGF0ZVBpY2tlck1vbnRoWWVhclR5cGVzIH0gZnJvbSAnQGdsb2JhbHBheW1lbnRzL3ZlZ2EvZGlzdC90eXBlcy9jb21wb25lbnRzL3ZlZ2EtZGF0ZS1waWNrZXIvdHlwZXMnO1xuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FEYXRlUGlja2VyIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhRGF0ZVBpY2tlciB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgY2hhbmdlIG9mIHRoZSB2YWx1ZSBpbiB0aGUgZGF0ZSBwaWNrZXIsXG4gICB3aGV0aGVyIHRyaWdnZXJlZCBwcm9ncmFtbWF0aWNhbGx5IG9yIHRocm91Z2ggdXNlciBpbnRlcmFjdGlvbi4gQHZlZ2FWZXJzaW9uIDEuMy4wXG4gICAqL1xuICB2ZWdhQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nIHwgc3RyaW5nW10+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjaGFuZ2Ugb2YgdGhlIHZhbHVlIGluIHRoZSBkYXRlIHBpY2tlcixcbiAgIHdoZXRoZXIgdHJpZ2dlcmVkIHByb2dyYW1tYXRpY2FsbHkgb3IgdGhyb3VnaCB1c2VyIGludGVyYWN0aW9uLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZyB8IHN0cmluZ1tdPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgbW9udGggYW5kIHllYXIgY2hhbmdlIHdoZW4gdGhlIG5hdmlnYXRpb24gYnV0dG9ucyBhcmUgY2xpY2tlZCBvciB0aGUgbW9udGggYW5kIHllYXIgZHJvcGRvd25zIGFyZSBzZWxlY3RlZCBpbiB0aGUgZGF0ZSBwaWNrZXIsXG4gICB3aGV0aGVyIHRyaWdnZXJlZCBwcm9ncmFtbWF0aWNhbGx5IG9yIHRocm91Z2ggdXNlciBpbnRlcmFjdGlvbi4gQHZlZ2FWZXJzaW9uIDIuNjEuMFxuICAgKi9cbiAgdmVnYU1vbnRoWWVhckNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhRGF0ZVBpY2tlckRhdGVQaWNrZXJNb250aFllYXJUeXBlcz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIG1vbnRoIGFuZCB5ZWFyIGNoYW5nZSB3aGVuIHRoZSBuYXZpZ2F0aW9uIGJ1dHRvbnMgYXJlIGNsaWNrZWQgb3IgdGhlIG1vbnRoIGFuZCB5ZWFyIGRyb3Bkb3ducyBhcmUgc2VsZWN0ZWQgaW4gdGhlIGRhdGUgcGlja2VyLCBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi42MS4wXG4gICAqL1xuICBtb250aFllYXJDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYURhdGVQaWNrZXJEYXRlUGlja2VyTW9udGhZZWFyVHlwZXM+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2FsbG93UmVwaWNrJywgJ2F1dG9WYWxpZGF0aW9uJywgJ2NsZWFyQnV0dG9uJywgJ2Rpc2FibGVkJywgJ2Ryb3Bkb3duQ29uZmlnJywgJ2Zvcm1hdCcsICdpc0RhdGVEaXNhYmxlZCcsICdpc1ZhbGlkJywgJ2xhYmVsJywgJ21heERhdGUnLCAnbWluRGF0ZScsICdtb2RlJywgJ29wdGlvbmFsJywgJ3BsYWNlaG9sZGVyJywgJ3JlYWRPbmx5JywgJ3JlcXVpcmVkJywgJ3Nob3dDbGVhckljb24nLCAnc2hvd1llYXJNb250aERyb3Bkb3ducycsICdzaXplJywgJ3RpbWV6b25lJywgJ3ZhbGlkYXRpb25SdWxlcycsICd2YWx1ZSddLFxuICBtZXRob2RzOiBbJ2RvQ2xvc2UnLCAnZG9PcGVuJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWRhdGUtcGlja2VyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydhbGxvd1JlcGljaycsICdhdXRvVmFsaWRhdGlvbicsICdjbGVhckJ1dHRvbicsICdkaXNhYmxlZCcsICdkcm9wZG93bkNvbmZpZycsICdmb3JtYXQnLCAnaXNEYXRlRGlzYWJsZWQnLCAnaXNWYWxpZCcsICdsYWJlbCcsICdtYXhEYXRlJywgJ21pbkRhdGUnLCAnbW9kZScsICdvcHRpb25hbCcsICdwbGFjZWhvbGRlcicsICdyZWFkT25seScsICdyZXF1aXJlZCcsICdzaG93Q2xlYXJJY29uJywgJ3Nob3dZZWFyTW9udGhEcm9wZG93bnMnLCAnc2l6ZScsICd0aW1lem9uZScsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWUnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhRGF0ZVBpY2tlciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDaGFuZ2UnLCAnY2hhbmdlJywgJ3ZlZ2FNb250aFllYXJDaGFuZ2UnLCAnbW9udGhZZWFyQ2hhbmdlJ10pO1xuICB9XG59XG5cbmltcG9ydCB0eXBlIHsgRGF0ZVBpY2tlck1vbnRoWWVhclR5cGVzIGFzIElWZWdhRGF0ZVBpY2tlckNhbGVuZGFyRGF0ZVBpY2tlck1vbnRoWWVhclR5cGVzIH0gZnJvbSAnQGdsb2JhbHBheW1lbnRzL3ZlZ2EvZGlzdC90eXBlcy9jb21wb25lbnRzL3ZlZ2EtZGF0ZS1waWNrZXIvdHlwZXMnO1xuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FEYXRlUGlja2VyQ2FsZW5kYXIgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FEYXRlUGlja2VyQ2FsZW5kYXIge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNoYW5nZSBvZiB0aGUgdmFsdWUgaW4gdGhlIGRhdGUgcGlja2VyLFxuICAgd2hldGhlciB0cmlnZ2VyZWQgcHJvZ3JhbW1hdGljYWxseSBvciB0aHJvdWdoIHVzZXIgaW50ZXJhY3Rpb24uIEB2ZWdhVmVyc2lvbiAyLjcyLjBcbiAgICovXG4gIHZlZ2FDbGVhcjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZyB8IHN0cmluZ1tdPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgY2hhbmdlIG9mIHRoZSB2YWx1ZSBpbiB0aGUgZGF0ZSBwaWNrZXIsXG4gICB3aGV0aGVyIHRyaWdnZXJlZCBwcm9ncmFtbWF0aWNhbGx5IG9yIHRocm91Z2ggdXNlciBpbnRlcmFjdGlvbi4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuNzIuMFxuICAgKi9cbiAgY2xlYXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmcgfCBzdHJpbmdbXT4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIG1vbnRoIGFuZCB5ZWFyIGNoYW5nZSB3aGVuIHRoZSBuYXZpZ2F0aW9uIGJ1dHRvbnMgYXJlIGNsaWNrZWQgb3IgdGhlIG1vbnRoIGFuZCB5ZWFyIGRyb3Bkb3ducyBhcmUgc2VsZWN0ZWQgaW4gdGhlIGRhdGUgcGlja2VyLFxuICAgd2hldGhlciB0cmlnZ2VyZWQgcHJvZ3JhbW1hdGljYWxseSBvciB0aHJvdWdoIHVzZXIgaW50ZXJhY3Rpb24uIEB2ZWdhVmVyc2lvbiAyLjYxLjBcbiAgICovXG4gIHZlZ2FNb250aFllYXJDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYURhdGVQaWNrZXJDYWxlbmRhckRhdGVQaWNrZXJNb250aFllYXJUeXBlcz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIG1vbnRoIGFuZCB5ZWFyIGNoYW5nZSB3aGVuIHRoZSBuYXZpZ2F0aW9uIGJ1dHRvbnMgYXJlIGNsaWNrZWQgb3IgdGhlIG1vbnRoIGFuZCB5ZWFyIGRyb3Bkb3ducyBhcmUgc2VsZWN0ZWQgaW4gdGhlIGRhdGUgcGlja2VyLCBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi42MS4wXG4gICAqL1xuICBtb250aFllYXJDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYURhdGVQaWNrZXJDYWxlbmRhckRhdGVQaWNrZXJNb250aFllYXJUeXBlcz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNoYW5nZSBvZiB0aGUgdmFsdWUgaW4gdGhlIGRhdGUgcGlja2VyLFxuICAgd2hldGhlciB0cmlnZ2VyZWQgcHJvZ3JhbW1hdGljYWxseSBvciB0aHJvdWdoIHVzZXIgaW50ZXJhY3Rpb24uIEB2ZWdhVmVyc2lvbiAyLjcyLjBcbiAgICovXG4gIHZlZ2FTZWxlY3Rpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmcgfCBzdHJpbmdbXT4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNoYW5nZSBvZiB0aGUgdmFsdWUgaW4gdGhlIGRhdGUgcGlja2VyLFxuICAgd2hldGhlciB0cmlnZ2VyZWQgcHJvZ3JhbW1hdGljYWxseSBvciB0aHJvdWdoIHVzZXIgaW50ZXJhY3Rpb24uIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjcyLjBcbiAgICovXG4gIHNlbGVjdGlvbkNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZyB8IHN0cmluZ1tdPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgdG9kYXkgYnV0dG9uIGlzIGNsaWNrZWQgaW4gdGhlIGRhdGUgcGlja2VyLiBAdmVnYVZlcnNpb24gMi44OC4wXG4gICAqL1xuICB2ZWdhVG9kYXlDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIHRvZGF5IGJ1dHRvbiBpcyBjbGlja2VkIGluIHRoZSBkYXRlIHBpY2tlci4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuODguMFxuICAgKi9cbiAgdG9kYXlDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnY2xlYXJCdXR0b24nLCAnZGF0ZUluZGljYXRvcicsICdkdWFsTW9udGhzJywgJ2ZpbGxDb250YWluZXInLCAnZm9ybWF0JywgJ2lzRGF0ZURpc2FibGVkJywgJ21heERhdGUnLCAnbWluRGF0ZScsICdtb2RlJywgJ3NlbGVjdGlvbicsICdzaG93WWVhck1vbnRoRHJvcGRvd25zJywgJ3NpemUnLCAnc3RhdGljSGVpZ2h0JywgJ3RpbWV6b25lJywgJ3llYXJNb250aERyb3Bkb3duUHJvcHMnXSxcbiAgbWV0aG9kczogWydyZXNldCcsICd0cmlnZ2VyUmVwaWNrJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWRhdGUtcGlja2VyLWNhbGVuZGFyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydjbGVhckJ1dHRvbicsICdkYXRlSW5kaWNhdG9yJywgJ2R1YWxNb250aHMnLCAnZmlsbENvbnRhaW5lcicsICdmb3JtYXQnLCAnaXNEYXRlRGlzYWJsZWQnLCAnbWF4RGF0ZScsICdtaW5EYXRlJywgJ21vZGUnLCAnc2VsZWN0aW9uJywgJ3Nob3dZZWFyTW9udGhEcm9wZG93bnMnLCAnc2l6ZScsICdzdGF0aWNIZWlnaHQnLCAndGltZXpvbmUnLCAneWVhck1vbnRoRHJvcGRvd25Qcm9wcyddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FEYXRlUGlja2VyQ2FsZW5kYXIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2xlYXInLCAnY2xlYXInLCAndmVnYU1vbnRoWWVhckNoYW5nZScsICdtb250aFllYXJDaGFuZ2UnLCAndmVnYVNlbGVjdGlvbkNoYW5nZScsICdzZWxlY3Rpb25DaGFuZ2UnLCAndmVnYVRvZGF5Q2xpY2snLCAndG9kYXlDbGljayddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhRGlhbG9nIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhRGlhbG9nIHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnY2FuY2VsQnV0dG9uJywgJ2NvbnRlbnQnLCAnZGlhbG9nVGl0bGUnLCAnaGFuZGxlQ2FuY2VsJywgJ2hhbmRsZU9rJywgJ21vZGFsUHJvcHMnLCAnb2tCdXR0b24nLCAnc2hvd0NhbmNlbCcsICd0eXBlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWRpYWxvZycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnY2FuY2VsQnV0dG9uJywgJ2NvbnRlbnQnLCAnZGlhbG9nVGl0bGUnLCAnaGFuZGxlQ2FuY2VsJywgJ2hhbmRsZU9rJywgJ21vZGFsUHJvcHMnLCAnb2tCdXR0b24nLCAnc2hvd0NhbmNlbCcsICd0eXBlJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYURpYWxvZyB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FEaXZpZGVyIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhRGl2aWRlciB7fVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2RpcmVjdGlvbicsICdtYXJnaW4nLCAndmFyaWFudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1kaXZpZGVyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydkaXJlY3Rpb24nLCAnbWFyZ2luJywgJ3ZhcmlhbnQnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhRGl2aWRlciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cbmltcG9ydCB0eXBlIHsgVmVnYURyb3Bkb3duU2VhcmNoVHJpZ2dlckV2ZW50RGV0YWlsIGFzIElWZWdhRHJvcGRvd25WZWdhRHJvcGRvd25TZWFyY2hUcmlnZ2VyRXZlbnREZXRhaWwgfSBmcm9tICdAZ2xvYmFscGF5bWVudHMvdmVnYS9kaXN0L3R5cGVzL2NvbXBvbmVudHMvdmVnYS1kcm9wZG93bi90eXBlcyc7XG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYURyb3Bkb3duIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhRHJvcGRvd24ge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhhdCBhIGRyb3Bkb3duIGl0ZW0gaGFzIGJlZW4gY2xpY2tlZC5cblxuVGhlIGV2ZW50J3MgYGRldGFpbGAgcHJvcGVydHkgY29udGFpbnMgdGhlIGtleSBvZiB0aGUgY2xpY2tlZCBpdGVtLiBAdmVnYVZlcnNpb24gMS4xMS4wXG4gICAqL1xuICB2ZWdhRHJvcGRvd25DbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhhdCBhIGRyb3Bkb3duIGl0ZW0gaGFzIGJlZW4gY2xpY2tlZC5cblxuVGhlIGV2ZW50J3MgYGRldGFpbGAgcHJvcGVydHkgY29udGFpbnMgdGhlIGtleSBvZiB0aGUgY2xpY2tlZCBpdGVtLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGRyb3Bkb3duQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgb25seSBmaXJlZCB3aGVuIHRoZSBTZWxlY3QgQWxsIGNoZWNrYm94IGhhcyBiZWVuIGNsaWNrZWQuXG5cblRoZSBldmVudCdzIGBkZXRhaWxgIHByb3BlcnR5IGlzIGB0cnVlYCB3aGVuIHRoZSBTZWxlY3QgQWxsIGNoZWNrYm94IGlzIGNsaWNrZWQgdG8gc2VsZWN0IGFsbCBpdGVtcyxcbiAgIGFuZCBgZmFsc2VgIHdoZW4gdGhlIFNlbGVjdCBBbGwgY2hlY2tib3ggaXMgY2xpY2tlZCB0byBjbGVhciBhbGwgc2VsZWN0ZWQgaXRlbXMuIEB2ZWdhVmVyc2lvbiAyLjkzLjBcbiAgICovXG4gIHZlZ2FEcm9wZG93blNlbGVjdEFsbENsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8Ym9vbGVhbj4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBvbmx5IGZpcmVkIHdoZW4gdGhlIFNlbGVjdCBBbGwgY2hlY2tib3ggaGFzIGJlZW4gY2xpY2tlZC5cblxuVGhlIGV2ZW50J3MgYGRldGFpbGAgcHJvcGVydHkgaXMgYHRydWVgIHdoZW4gdGhlIFNlbGVjdCBBbGwgY2hlY2tib3ggaXMgY2xpY2tlZCB0byBzZWxlY3QgYWxsIGl0ZW1zLFxuICAgYW5kIGBmYWxzZWAgd2hlbiB0aGUgU2VsZWN0IEFsbCBjaGVja2JveCBpcyBjbGlja2VkIHRvIGNsZWFyIGFsbCBzZWxlY3RlZCBpdGVtcy4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuOTMuMFxuICAgKi9cbiAgZHJvcGRvd25TZWxlY3RBbGxDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGJvb2xlYW4+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoYXQgdGhlIGRyb3Bkb3duIGhhcyBiZWVuIGRpc3BsYXllZCxcbiAgIGVpdGhlciBwcm9ncmFtbWF0aWNhbGx5IG9yIHZpYSB1c2VyIGludGVyYWN0aW9uLiBAdmVnYVZlcnNpb24gMS4zLjBcbiAgICovXG4gIHZlZ2FTaG93OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGF0IHRoZSBkcm9wZG93biBoYXMgYmVlbiBkaXNwbGF5ZWQsXG4gICBlaXRoZXIgcHJvZ3JhbW1hdGljYWxseSBvciB2aWEgdXNlciBpbnRlcmFjdGlvbi4gVGhlIG5hbWUgaXMgbm90IGBzaG93YCBiZWNhdXNlIGFscmVhZHkgaGFzIGEgbWV0aG9kIGBzaG93YC4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBkcm9wZG93blNob3c6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoYXQgdGhlIGRyb3Bkb3duIGhhcyBiZWVuIGRpc21pc3NlZCxcbiAgIGVpdGhlciBwcm9ncmFtbWF0aWNhbGx5IG9yIHZpYSB1c2VyIGludGVyYWN0aW9uLiBAdmVnYVZlcnNpb24gMS4zLjBcbiAgICovXG4gIHZlZ2FIaWRlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGF0IHRoZSBkcm9wZG93biBoYXMgYmVlbiBkaXNtaXNzZWQsXG4gICBlaXRoZXIgcHJvZ3JhbW1hdGljYWxseSBvciB2aWEgdXNlciBpbnRlcmFjdGlvbi4gVGhlIG5hbWUgaXMgbm90IGBoaWRlYCBiZWNhdXNlIGFscmVhZHkgaGFzIGEgbWV0aG9kIGBoaWRlYC4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBkcm9wZG93bkhpZGU6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBhZGRpdGlvbiBvZiBhIG5ldyB2YWx1ZVxuICAgdG8gdGhlIGRyb3Bkb3duIHNvdXJjZSBsaXN0LlxuXG5UaGUgZXZlbnQncyBgZGV0YWlsYCBwcm9wZXJ0eSBjb250YWlucyB0aGUgbmV3IHZhbHVlLlxuXG5UaGUgZHJvcGRvd24gX2RvZXMgbm90XyBhdXRvbWF0aWNhbGx5IGFkZCB0aGUgbmV3IHZhbHVlIHRvIHRoZSBzb3VyY2UgbGlzdC4gQHZlZ2FWZXJzaW9uIDEuMTQuMFxuICAgKi9cbiAgdmVnYUNyZWF0ZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGFkZGl0aW9uIG9mIGEgbmV3IHZhbHVlXG4gICB0byB0aGUgZHJvcGRvd24gc291cmNlIGxpc3QuXG5cblRoZSBldmVudCdzIGBkZXRhaWxgIHByb3BlcnR5IGNvbnRhaW5zIHRoZSBuZXcgdmFsdWUuXG5cblRoZSBkcm9wZG93biBfZG9lcyBub3RfIGF1dG9tYXRpY2FsbHkgYWRkIHRoZSBuZXcgdmFsdWUgdG8gdGhlIHNvdXJjZSBsaXN0LiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGNyZWF0ZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIHNlYXJjaCBldmVudCBpbiB0aGUgZHJvcGRvd24sXG4gICBidXQgb25seSBpZiBgdXNlRGVmYXVsdEZpbHRlcmAgaXMgc2V0IHRvIGBmYWxzZWAuIEB2ZWdhVmVyc2lvbiAxLjI0LjBcbiAgICovXG4gIHZlZ2FTZWFyY2g6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBzZWFyY2ggZXZlbnQgaW4gdGhlIGRyb3Bkb3duLFxuICAgYnV0IG9ubHkgaWYgYHVzZURlZmF1bHRGaWx0ZXJgIGlzIHNldCB0byBgZmFsc2VgLiBUaGUgbmFtZSBpcyBub3QgYHNlYXJjaGAgYmVjYXVzZSBhbHJlYWR5IGhhcyBhIG1ldGhvZCBgc2VhcmNoYC4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBkcm9wZG93blNlYXJjaDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIHJlc2V0IGV2ZW50IGluIHRoZSBkcm9wZG93bi4gQHZlZ2FWZXJzaW9uIDIuNDYuMFxuICAgKi9cbiAgdmVnYVJlc2V0OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgcmVzZXQgZXZlbnQgaW4gdGhlIGRyb3Bkb3duLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi40Ni4wXG4gICAqL1xuICByZXNldDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIHNlYXJjaCBldmVudCB0cmlnZ2VyZWQgd2l0aGluIHRoZSBkcm9wZG93bixcbiAgIGJ1dCBvbmx5IGlmIGB1c2VEZWZhdWx0RmlsdGVyYCBpcyBzZXQgdG8gYGZhbHNlYC5cblVubGlrZSB0aGUgVmVnYXNlYXJjaCBldmVudCwgdGhpcyBldmVudCBpbmNsdWRlcyB0aGUgZGV0YWlscyBvZiB0aGUgdXNlciB3aG8gdHJpZ2dlcmVkIGl0LlxuSXQgY2FuIGJlIHRyaWdnZXJlZCBpbiB0d28gd2F5czogYnkgcHJlc3NpbmcgXCJFbnRlclwiIG9yIHRocm91Z2ggdXNlciBpbnB1dC4gQHZlZ2FWZXJzaW9uIDIuMzAuMFxuICAgKi9cbiAgdmVnYVNlYXJjaFRyaWdnZXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYURyb3Bkb3duVmVnYURyb3Bkb3duU2VhcmNoVHJpZ2dlckV2ZW50RGV0YWlsPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgc2VhcmNoIGV2ZW50IHRyaWdnZXJlZCB3aXRoaW4gdGhlIGRyb3Bkb3duLFxuICAgYnV0IG9ubHkgaWYgYHVzZURlZmF1bHRGaWx0ZXJgIGlzIHNldCB0byBgZmFsc2VgLlxuVW5saWtlIHRoZSBWZWdhc2VhcmNoIGV2ZW50LCB0aGlzIGV2ZW50IGluY2x1ZGVzIHRoZSBkZXRhaWxzIG9mIHRoZSB1c2VyIHdobyB0cmlnZ2VyZWQgaXQuXG5JdCBjYW4gYmUgdHJpZ2dlcmVkIGluIHR3byB3YXlzOiBieSBwcmVzc2luZyBcIkVudGVyXCIgb3IgdGhyb3VnaCB1c2VyIGlucHV0LiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4zMC4wXG4gICAqL1xuICBzZWFyY2hUcmlnZ2VyOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FEcm9wZG93blZlZ2FEcm9wZG93blNlYXJjaFRyaWdnZXJFdmVudERldGFpbD4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnYWxpZ25tZW50JywgJ2FsbG93U2VsZWN0QWxsJywgJ2Nhc2VTZW5zaXRpdmUnLCAnZHluYW1pY09wdGlvbicsICdpc0xhenlMb2FkaW5nJywgJ2lzTG9hZGluZycsICdpc1NjcmVlblBvc2l0aW9uJywgJ2l0ZW1EaXNwbGF5UnVsZScsICdpdGVtVG9vbHRpcFByb3BzJywgJ21hdGNoQ29udGFpbmVySGVpZ2h0JywgJ21hdGNoVGFyZ2V0V2lkdGgnLCAnbWF4SGVpZ2h0JywgJ21heFdpZHRoJywgJ21pbldpZHRoJywgJ3BsYWNlbWVudCcsICdwb3NpdGlvblJlbGF0aXZlVG8nLCAncHJlZml4SWNvblNsb3QnLCAncHJlc2VydmVWYWx1ZUlmTm90SW5Tb3VyY2UnLCAncmVzZXR0YWJsZScsICdzZWFyY2hOb1Jlc3VsdHNUZXh0JywgJ3NlYXJjaFRyaWdnZXJCeScsICdzZWFyY2hhYmxlJywgJ3NlbGVjdFR5cGUnLCAnc2VsZWN0ZWRTb3VyY2VLZXknLCAnc2l6ZScsICdzb3VyY2UnLCAndHJhbnNsb2NhdGlvbicsICd0cmlnZ2VyJywgJ3VzZURlZmF1bHRGaWx0ZXInLCAndmlydHVhbGl6YXRpb25UaHJlc2hvbGQnXSxcbiAgbWV0aG9kczogWydzaG93JywgJ2hpZGUnLCAnc2VhcmNoJywgJ2NsZWFyU2VsZWN0aW9uJywgJ2dldFNlbGVjdGlvbicsICdzZXRTZWxlY3Rpb24nLCAnc3luY1RlbXBsYXRlRGF0YSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1kcm9wZG93bicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnYWxpZ25tZW50JywgJ2FsbG93U2VsZWN0QWxsJywgJ2Nhc2VTZW5zaXRpdmUnLCAnZHluYW1pY09wdGlvbicsICdpc0xhenlMb2FkaW5nJywgJ2lzTG9hZGluZycsICdpc1NjcmVlblBvc2l0aW9uJywgJ2l0ZW1EaXNwbGF5UnVsZScsICdpdGVtVG9vbHRpcFByb3BzJywgJ21hdGNoQ29udGFpbmVySGVpZ2h0JywgJ21hdGNoVGFyZ2V0V2lkdGgnLCAnbWF4SGVpZ2h0JywgJ21heFdpZHRoJywgJ21pbldpZHRoJywgJ3BsYWNlbWVudCcsICdwb3NpdGlvblJlbGF0aXZlVG8nLCAncHJlZml4SWNvblNsb3QnLCAncHJlc2VydmVWYWx1ZUlmTm90SW5Tb3VyY2UnLCAncmVzZXR0YWJsZScsICdzZWFyY2hOb1Jlc3VsdHNUZXh0JywgJ3NlYXJjaFRyaWdnZXJCeScsICdzZWFyY2hhYmxlJywgJ3NlbGVjdFR5cGUnLCAnc2VsZWN0ZWRTb3VyY2VLZXknLCAnc2l6ZScsICdzb3VyY2UnLCAndHJhbnNsb2NhdGlvbicsICd0cmlnZ2VyJywgJ3VzZURlZmF1bHRGaWx0ZXInLCAndmlydHVhbGl6YXRpb25UaHJlc2hvbGQnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhRHJvcGRvd24ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhRHJvcGRvd25DbGljaycsICdkcm9wZG93bkNsaWNrJywgJ3ZlZ2FEcm9wZG93blNlbGVjdEFsbENsaWNrJywgJ2Ryb3Bkb3duU2VsZWN0QWxsQ2xpY2snLCAndmVnYVNob3cnLCAnZHJvcGRvd25TaG93JywgJ3ZlZ2FIaWRlJywgJ2Ryb3Bkb3duSGlkZScsICd2ZWdhQ3JlYXRlJywgJ2NyZWF0ZScsICd2ZWdhU2VhcmNoJywgJ2Ryb3Bkb3duU2VhcmNoJywgJ3ZlZ2FSZXNldCcsICdyZXNldCcsICd2ZWdhU2VhcmNoVHJpZ2dlcicsICdzZWFyY2hUcmlnZ2VyJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FEcm9wZG93bkNvbnRlbnRCb3ggZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FEcm9wZG93bkNvbnRlbnRCb3gge31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWRcbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWRyb3Bkb3duLWNvbnRlbnQtYm94JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50Pidcbn0pXG5leHBvcnQgY2xhc3MgVmVnYURyb3Bkb3duQ29udGVudEJveCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FEcm9wZG93bkdyb3VwIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhRHJvcGRvd25Hcm91cCB7fVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2RpdmlkZScsICdsYWJlbCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1kcm9wZG93bi1ncm91cCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnZGl2aWRlJywgJ2xhYmVsJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYURyb3Bkb3duR3JvdXAge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5pbXBvcnQgdHlwZSB7IFZlZ2FEcm9wZG93bkl0ZW1DbGlja0V2ZW50IGFzIElWZWdhRHJvcGRvd25JdGVtVmVnYURyb3Bkb3duSXRlbUNsaWNrRXZlbnQgfSBmcm9tICdAZ2xvYmFscGF5bWVudHMvdmVnYS9kaXN0L3R5cGVzL2NvbXBvbmVudHMvdmVnYS1kcm9wZG93bi92ZWdhLWRyb3Bkb3duLWl0ZW0vdHlwZXMnO1xuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FEcm9wZG93bkl0ZW0gZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FEcm9wZG93bkl0ZW0ge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGRyb3Bkb3duIGl0ZW0gaGFzIGJlZW4gY2xpY2tlZC4gQHZlZ2FWZXJzaW9uIDEuNDcuMFxuICAgKi9cbiAgdmVnYUNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FEcm9wZG93bkl0ZW1WZWdhRHJvcGRvd25JdGVtQ2xpY2tFdmVudD4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGRyb3Bkb3duIGl0ZW0gaGFzIGJlZW4gY2xpY2tlZC4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBjbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhRHJvcGRvd25JdGVtVmVnYURyb3Bkb3duSXRlbUNsaWNrRXZlbnQ+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2NvdW50JywgJ2RhbmdlcicsICdkaXNhYmxlZCcsICdoZWlnaHQnLCAnaXRlbUtleScsICdsYWJlbCcsICdwcmVmaXhJY29uJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWRyb3Bkb3duLWl0ZW0nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2NvdW50JywgJ2RhbmdlcicsICdkaXNhYmxlZCcsICdoZWlnaHQnLCAnaXRlbUtleScsICdsYWJlbCcsICdwcmVmaXhJY29uJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYURyb3Bkb3duSXRlbSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDbGljaycsICdjbGljayddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhRmllbGRFcnJvciBleHRlbmRzIENvbXBvbmVudHMuVmVnYUZpZWxkRXJyb3Ige31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydtZXNzYWdlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWZpZWxkLWVycm9yJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydtZXNzYWdlJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUZpZWxkRXJyb3Ige1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhRmllbGRMYWJlbCBleHRlbmRzIENvbXBvbmVudHMuVmVnYUZpZWxkTGFiZWwge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhhdCB0aGUgZmllbGQgbGFiZWwgaGFzIGJlZW4gY2xpY2tlZC4gQHZlZ2FWZXJzaW9uIDEuNDMuMFxuICAgKi9cbiAgdmVnYUNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8YW55Pj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGF0IHRoZSBzdWZmaXggYnV0dG9uIGFzc29jaWF0ZWQgd2l0aCB0aGUgZmllbGQgbGFiZWwgaGFzIGJlZW4gY2xpY2tlZC4gQHZlZ2FWZXJzaW9uIDIuMjUuMFxuICAgKi9cbiAgdmVnYUxhYmVsQnV0dG9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoYXQgdGhlIHN1ZmZpeCBidXR0b24gYXNzb2NpYXRlZCB3aXRoIHRoZSBmaWVsZCBsYWJlbCBoYXMgYmVlbiBjbGlja2VkLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4yNS4wXG4gICAqL1xuICBsYWJlbEJ1dHRvbkNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8YW55Pj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydkaXNhYmxlZCcsICdpc0ZpZWxkUmVxdWlyZWQnLCAnbGFiZWwnLCAnb3B0aW9uYWwnLCAnc3VmZml4QnV0dG9uQ29uZmlnJywgJ3N1ZmZpeEJ1dHRvblByb3BzJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWZpZWxkLWxhYmVsJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydkaXNhYmxlZCcsICdpc0ZpZWxkUmVxdWlyZWQnLCAnbGFiZWwnLCAnb3B0aW9uYWwnLCAnc3VmZml4QnV0dG9uQ29uZmlnJywgJ3N1ZmZpeEJ1dHRvblByb3BzJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUZpZWxkTGFiZWwge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2xpY2snLCAndmVnYUxhYmVsQnV0dG9uQ2xpY2snLCAnbGFiZWxCdXR0b25DbGljayddKTtcbiAgfVxufVxuXG5pbXBvcnQgdHlwZSB7IFZlZ2FGaWxlVXBsb2FkZXJGaWxlcyBhcyBJVmVnYUZpbGVVcGxvYWRlclZlZ2FGaWxlVXBsb2FkZXJGaWxlcyB9IGZyb20gJ0BnbG9iYWxwYXltZW50cy92ZWdhL2Rpc3QvdHlwZXMvY29tcG9uZW50cy92ZWdhLWZpbGUtdXBsb2FkZXIvdHlwZXMnO1xuaW1wb3J0IHR5cGUgeyBWZWdhRmlsZVVwbG9hZGVyRmlsZSBhcyBJVmVnYUZpbGVVcGxvYWRlclZlZ2FGaWxlVXBsb2FkZXJGaWxlIH0gZnJvbSAnQGdsb2JhbHBheW1lbnRzL3ZlZ2EvZGlzdC90eXBlcy9jb21wb25lbnRzL3ZlZ2EtZmlsZS11cGxvYWRlci90eXBlcyc7XG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUZpbGVVcGxvYWRlciBleHRlbmRzIENvbXBvbmVudHMuVmVnYUZpbGVVcGxvYWRlciB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBhIGNoYW5nZSBpbiB0aGUgZmlsZSBsaXN0LiBAdmVnYVZlcnNpb24gMi4yNS4wXG4gICAqL1xuICB2ZWdhQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FGaWxlVXBsb2FkZXJWZWdhRmlsZVVwbG9hZGVyRmlsZXM+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGEgY2hhbmdlIGluIHRoZSBmaWxlIGxpc3QuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjI1LjBcbiAgICovXG4gIGNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhRmlsZVVwbG9hZGVyVmVnYUZpbGVVcGxvYWRlckZpbGVzPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBhIGZpbGUgc2VsZWN0aW9uIGNoYW5nZS4gQnkgZGVmYXVsdCwgdGhlIGNvbXBvbmVudCB2YWx1ZVxuICBpcyB1cGRhdGVkLCBidXQgdGhpcyBiZWhhdmlvciBjYW4gYmUgcHJldmVudGVkLiBAdmVnYVZlcnNpb24gMi4yNS4wXG4gICAqL1xuICB2ZWdhU2VsZWN0ZWRGaWxlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FGaWxlVXBsb2FkZXJWZWdhRmlsZVVwbG9hZGVyRmlsZXM+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGEgZmlsZSBzZWxlY3Rpb24gY2hhbmdlLiBCeSBkZWZhdWx0LCB0aGUgY29tcG9uZW50IHZhbHVlXG4gIGlzIHVwZGF0ZWQsIGJ1dCB0aGlzIGJlaGF2aW9yIGNhbiBiZSBwcmV2ZW50ZWQuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjI1LjBcbiAgICovXG4gIHNlbGVjdGVkRmlsZUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhRmlsZVVwbG9hZGVyVmVnYUZpbGVVcGxvYWRlckZpbGVzPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGF0IGEgc2VsZWN0ZWQgZmlsZSB3aWxsIGJlIHJlbW92ZWQuIEJ5IGRlZmF1bHQsIHRoZSBjb21wb25lbnQgdmFsdWVcbiAgaXMgdXBkYXRlZCwgYnV0IHRoaXMgYmVoYXZpb3IgY2FuIGJlIHByZXZlbnRlZC4gQHZlZ2FWZXJzaW9uIDIuMjUuMFxuICAgKi9cbiAgdmVnYVJlbW92ZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhRmlsZVVwbG9hZGVyVmVnYUZpbGVVcGxvYWRlckZpbGU+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoYXQgYSBzZWxlY3RlZCBmaWxlIHdpbGwgYmUgcmVtb3ZlZC4gQnkgZGVmYXVsdCwgdGhlIGNvbXBvbmVudCB2YWx1ZVxuICBpcyB1cGRhdGVkLCBidXQgdGhpcyBiZWhhdmlvciBjYW4gYmUgcHJldmVudGVkLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4yNS4wXG4gICAqL1xuICByZW1vdmU6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYUZpbGVVcGxvYWRlclZlZ2FGaWxlVXBsb2FkZXJGaWxlPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGF0IGEgZmlsZSB3aWxsIGJlIHJlLXVwbG9hZGVkLiBAdmVnYVZlcnNpb24gMi4yNS4wXG4gICAqL1xuICB2ZWdhUmV0cnk6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYUZpbGVVcGxvYWRlclZlZ2FGaWxlVXBsb2FkZXJGaWxlPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGF0IGEgZmlsZSB3aWxsIGJlIHJlLXVwbG9hZGVkLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4yNS4wXG4gICAqL1xuICByZXRyeTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhRmlsZVVwbG9hZGVyVmVnYUZpbGVVcGxvYWRlckZpbGU+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoYXQgYSBmaWxlIHdpbGwgYmUgb3BlbmVkIGZvciBwcmV2aWV3LiBAdmVnYVZlcnNpb24gMi4yNS4wXG4gICAqL1xuICB2ZWdhUHJldmlldzogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhRmlsZVVwbG9hZGVyVmVnYUZpbGVVcGxvYWRlckZpbGU+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoYXQgYSBmaWxlIHdpbGwgYmUgb3BlbmVkIGZvciBwcmV2aWV3LiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4yNS4wXG4gICAqL1xuICBwcmV2aWV3OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FGaWxlVXBsb2FkZXJWZWdhRmlsZVVwbG9hZGVyRmlsZT4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnYWNjZXB0JywgJ2F1dG9WYWxpZGF0aW9uJywgJ2Rpc2FibGVkJywgJ2hpbnQnLCAnaXNWYWxpZCcsICdsYWJlbCcsICdtYXhDb3VudCcsICdvcHRpb25hbCcsICdyZXF1aXJlZCcsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWUnLCAndmFyaWFudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1maWxlLXVwbG9hZGVyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydhY2NlcHQnLCAnYXV0b1ZhbGlkYXRpb24nLCAnZGlzYWJsZWQnLCAnaGludCcsICdpc1ZhbGlkJywgJ2xhYmVsJywgJ21heENvdW50JywgJ29wdGlvbmFsJywgJ3JlcXVpcmVkJywgJ3ZhbGlkYXRpb25SdWxlcycsICd2YWx1ZScsICd2YXJpYW50J11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUZpbGVVcGxvYWRlciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDaGFuZ2UnLCAnY2hhbmdlJywgJ3ZlZ2FTZWxlY3RlZEZpbGVDaGFuZ2UnLCAnc2VsZWN0ZWRGaWxlQ2hhbmdlJywgJ3ZlZ2FSZW1vdmUnLCAncmVtb3ZlJywgJ3ZlZ2FSZXRyeScsICdyZXRyeScsICd2ZWdhUHJldmlldycsICdwcmV2aWV3J10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FGbGFnSWNvbiBleHRlbmRzIENvbXBvbmVudHMuVmVnYUZsYWdJY29uIHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnY291bnRyeScsICdzaXplJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWZsYWctaWNvbicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnY291bnRyeScsICdzaXplJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUZsYWdJY29uIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUZsZXggZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FGbGV4IHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnYWxpZ25JdGVtcycsICdicmVha3BvaW50JywgJ2RpcmVjdGlvbicsICdmbGV4JywgJ2ZsZXhCYXNpcycsICdmbGV4R3JvdycsICdmbGV4U2hyaW5rJywgJ2ZsZXhXcmFwJywgJ2dhcCcsICdqdXN0aWZ5Q29udGVudCcsICdtYXJnaW4nLCAndXNlTmF0aXZlRmxleCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1mbGV4JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydhbGlnbkl0ZW1zJywgJ2JyZWFrcG9pbnQnLCAnZGlyZWN0aW9uJywgJ2ZsZXgnLCAnZmxleEJhc2lzJywgJ2ZsZXhHcm93JywgJ2ZsZXhTaHJpbmsnLCAnZmxleFdyYXAnLCAnZ2FwJywgJ2p1c3RpZnlDb250ZW50JywgJ21hcmdpbicsICd1c2VOYXRpdmVGbGV4J11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUZsZXgge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhRm9udCBleHRlbmRzIENvbXBvbmVudHMuVmVnYUZvbnQge31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydhcycsICdjb2xvcicsICdkaXNhYmxlUmVzcG9uc2l2ZScsICd0ZXh0QWxpZ24nLCAndmFyaWFudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1mb250JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydhcycsICdjb2xvcicsICdkaXNhYmxlUmVzcG9uc2l2ZScsICd0ZXh0QWxpZ24nLCAndmFyaWFudCddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FGb250IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUZvcm0gZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FGb3JtIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjaGFuZ2UgaW4gdGhlIHZhbGlkYXRpb24gcmVzdWx0LiBAdmVnYVZlcnNpb24gMS45LjFcbiAgICovXG4gIHZlZ2FWYWxpZGF0ZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGJvb2xlYW4+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjaGFuZ2UgaW4gdGhlIHZhbGlkYXRpb24gcmVzdWx0LiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIHZhbGlkYXRlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8Ym9vbGVhbj4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIHN1Ym1pc3Npb24gb2YgdGhlIGZvcm0uIEB2ZWdhVmVyc2lvbiAxLjI0LjBcbiAgICovXG4gIHZlZ2FGb3JtU3VibWl0OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dW5rbm93bj4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIHN1Ym1pc3Npb24gb2YgdGhlIGZvcm0uIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgZm9ybVN1Ym1pdDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHVua25vd24+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSByZXNldCBvZiB0aGUgZm9ybS4gQHZlZ2FWZXJzaW9uIDEuMjQuMFxuICAgKi9cbiAgdmVnYUZvcm1SZXNldDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIHJlc2V0IG9mIHRoZSBmb3JtLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGZvcm1SZXNldDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnYWN0aW9uJywgJ2Rpc2FibGVCbHVyVmFsaWRhdGlvbicsICdpc1RvdWNoZWQnLCAnaXNWYWxpZCcsICdtZXRob2QnLCAndXNlTmF0aXZlRm9ybSddLFxuICBtZXRob2RzOiBbJ3ZhbGlkJywgJ2dldFZhbHVlJywgJ3NldFZhbHVlJywgJ3Jlc2V0JywgJ3NldFZhbGlkYXRpb25TdGF0ZXMnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtZm9ybScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnYWN0aW9uJywgJ2Rpc2FibGVCbHVyVmFsaWRhdGlvbicsICdpc1RvdWNoZWQnLCAnaXNWYWxpZCcsICdtZXRob2QnLCAndXNlTmF0aXZlRm9ybSddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FGb3JtIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYVZhbGlkYXRlJywgJ3ZhbGlkYXRlJywgJ3ZlZ2FGb3JtU3VibWl0JywgJ2Zvcm1TdWJtaXQnLCAndmVnYUZvcm1SZXNldCcsICdmb3JtUmVzZXQnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUdyaWQgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FHcmlkIHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnY29sdW1uJywgJ2dhcCcsICdqdXN0aWZ5SXRlbXMnLCAncm93J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWdyaWQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2NvbHVtbicsICdnYXAnLCAnanVzdGlmeUl0ZW1zJywgJ3JvdyddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FHcmlkIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUhpbnQgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FIaW50IHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1oaW50JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50Pidcbn0pXG5leHBvcnQgY2xhc3MgVmVnYUhpbnQge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhSWNvbiBleHRlbmRzIENvbXBvbmVudHMuVmVnYUljb24ge31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydjb2xvcicsICdpY29uJywgJ3NpemUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtaWNvbicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnY29sb3InLCAnaWNvbicsICdzaXplJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUljb24ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5pbXBvcnQgdHlwZSB7IFZlZ2FGaWxlT3B0aW9uYWwgYXMgSVZlZ2FJbWFnZVVwbG9hZGVyVmVnYUZpbGVPcHRpb25hbCB9IGZyb20gJ0BnbG9iYWxwYXltZW50cy92ZWdhL2Rpc3QvdHlwZXMvY29tcG9uZW50cy92ZWdhLWltYWdlLXVwbG9hZGVyL3R5cGVzJztcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhSW1hZ2VVcGxvYWRlciBleHRlbmRzIENvbXBvbmVudHMuVmVnYUltYWdlVXBsb2FkZXIge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgYSB2YWx1ZSBjaGFuZ2UuIEB2ZWdhVmVyc2lvbiAxLjE0LjBcbiAgICovXG4gIHZlZ2FDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYUltYWdlVXBsb2FkZXJWZWdhRmlsZU9wdGlvbmFsPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBhIHZhbHVlIGNoYW5nZS4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSByZW1vdmFsIG9mIGEgdmFsdWUuIEB2ZWdhVmVyc2lvbiAxLjE0LjBcbiAgICovXG4gIHZlZ2FSZW1vdmU6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSByZW1vdmFsIG9mIGEgdmFsdWUuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgcmVtb3ZlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8YW55Pj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgY2FuY2VsbGF0aW9uIG9mIGFuIHVwbG9hZGluZyBldmVudC4gQHZlZ2FWZXJzaW9uIDEuMTQuMFxuICAgKi9cbiAgdmVnYUNhbmNlbDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIHJlbW92YWwgb2YgYSB2YWx1ZS4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBjYW5jZWw6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2FjY2VwdCcsICdhY3Rpb25TdWJUaXRsZScsICdhY3Rpb25UaXRsZScsICdhdXRvVmFsaWRhdGlvbicsICdkaXNhYmxlZCcsICdoZWlnaHQnLCAnaGludCcsICdpc1ZhbGlkJywgJ2xhYmVsJywgJ29wdGlvbmFsJywgJ3JlcXVpcmVkJywgJ3Nob3dQcmV2aWV3QnV0dG9uJywgJ3Nob3dSZW1vdmVCdXR0b24nLCAnc2hvd1JlcGxhY2VCdXR0b24nLCAnc3RhdHVzJywgJ3ZhbGlkYXRpb25SdWxlcycsICd2YWx1ZScsICd3aWR0aCddLFxuICBtZXRob2RzOiBbJ2dldENvbnRlbnRVUkwnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtaW1hZ2UtdXBsb2FkZXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2FjY2VwdCcsICdhY3Rpb25TdWJUaXRsZScsICdhY3Rpb25UaXRsZScsICdhdXRvVmFsaWRhdGlvbicsICdkaXNhYmxlZCcsICdoZWlnaHQnLCAnaGludCcsICdpc1ZhbGlkJywgJ2xhYmVsJywgJ29wdGlvbmFsJywgJ3JlcXVpcmVkJywgJ3Nob3dQcmV2aWV3QnV0dG9uJywgJ3Nob3dSZW1vdmVCdXR0b24nLCAnc2hvd1JlcGxhY2VCdXR0b24nLCAnc3RhdHVzJywgJ3ZhbGlkYXRpb25SdWxlcycsICd2YWx1ZScsICd3aWR0aCddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FJbWFnZVVwbG9hZGVyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUNoYW5nZScsICdjaGFuZ2UnLCAndmVnYVJlbW92ZScsICdyZW1vdmUnLCAndmVnYUNhbmNlbCcsICdjYW5jZWwnXSk7XG4gIH1cbn1cblxuaW1wb3J0IHR5cGUgeyBEYXRhVHJhbnNmZXJUeXBlIGFzIElWZWdhSW5wdXREYXRhVHJhbnNmZXJUeXBlIH0gZnJvbSAnQGdsb2JhbHBheW1lbnRzL3ZlZ2EvZGlzdC90eXBlcy9jb21wb25lbnRzL3ZlZ2EtaW5wdXQvdHlwZXMnO1xuaW1wb3J0IHR5cGUgeyBWZWdhRHJvcGRvd25Tb3VyY2VJdGVtIGFzIElWZWdhSW5wdXRWZWdhRHJvcGRvd25Tb3VyY2VJdGVtIH0gZnJvbSAnQGdsb2JhbHBheW1lbnRzL3ZlZ2EvZGlzdC90eXBlcy9jb21wb25lbnRzL3ZlZ2EtZHJvcGRvd24vdHlwZXMnO1xuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FJbnB1dCBleHRlbmRzIENvbXBvbmVudHMuVmVnYUlucHV0IHtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgaW5wdXQgdmFsdWUgY2hhbmdlcy5cblxuVGhlIHRpbWluZyBvZiB0aGlzIGV2ZW50IGRlcGVuZHMgb24gdGhlIGB2YWx1ZVVwZGF0ZVRyaWdnZXJgIHByb3A6XG4tIFdoZW4gYHZhbHVlVXBkYXRlVHJpZ2dlcmAgaXMgYCdpbnB1dCdgIChkZWZhdWx0KSwgZmlyZXMgb24gZXZlcnkga2V5c3Ryb2tlLlxuLSBXaGVuIGB2YWx1ZVVwZGF0ZVRyaWdnZXJgIGlzIGAnY2hhbmdlJ2AsIGZpcmVzIG9uIGJsdXIgb3Igd2hlbiB0aGUgdXNlciBwcmVzc2VzIEVudGVyLlxuXG5BbHNvIGZpcmVzIHdoZW4gdGhlIHVzZXIgY2xpY2tzIHRoZSBjbGVhciBpY29uIG9yIHdoZW4gdGhlIHZhbHVlIGlzXG5wcm9ncmFtbWF0aWNhbGx5IHVwZGF0ZWQuIEBldmVudERldGFpbCBgc3RyaW5nYCDigJQgVGhlIGN1cnJlbnQgaW5wdXQgdmFsdWUgYWZ0ZXIgdGhlIGNoYW5nZS4sQHZlZ2FWZXJzaW9uIDEuMC4xMFxuICAgKi9cbiAgdmVnYUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogTmF0aXZlLW5hbWVzcGFjZSBhbGlhcyBmb3IgdGhlIGB2ZWdhQ2hhbmdlYCBldmVudC5cblxuRW1pdHRlZCBhdCB0aGUgc2FtZSB0aW1lIGFuZCB1bmRlciB0aGUgc2FtZSBjb25kaXRpb25zIGFzIGB2ZWdhQ2hhbmdlYC5cblVzZSB0aGlzIGV2ZW50IHdoZW4gaW50ZWdyYXRpbmcgd2l0aCBmcmFtZXdvcmtzIHRoYXQgZXhwZWN0IG5hdGl2ZS1zdHlsZVxuZXZlbnQgbmFtZXMgKGUuZy4sIGBAY2hhbmdlYCBpbiBWdWUgb3IgQW5ndWxhcikuIEBldmVudERldGFpbCBgc3RyaW5nYCDigJQgVGhlIGN1cnJlbnQgaW5wdXQgdmFsdWUgYWZ0ZXIgdGhlIGNoYW5nZS4sQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgb24gZXZlcnkgbmF0aXZlIGBpbnB1dGAgZXZlbnQgZnJvbSB0aGUgdW5kZXJseWluZyBgPGlucHV0PmAgZWxlbWVudCxcbnJlZ2FyZGxlc3Mgb2YgdGhlIGB2YWx1ZVVwZGF0ZVRyaWdnZXJgIHNldHRpbmcuXG5cblRoaXMgZXZlbnQgZmlyZXMgb24gZXZlcnkga2V5c3Ryb2tlIGFuZCBwcm92aWRlcyB0aGUgcmF3IGlucHV0IHZhbHVlLlxuVXNlIHRoaXMgZm9yIHJlYWwtdGltZSBtb25pdG9yaW5nIChlLmcuLCBkcml2aW5nIGEgc3VnZ2VzdGlvbnMgZHJvcGRvd24pXG53aGlsZSBrZWVwaW5nIGB2ZWdhQ2hhbmdlYCBzZXQgdG8gYCdjaGFuZ2UnYCB0cmlnZ2VyIGZvciB0aGUgbWFpbiB2YWx1ZSBiaW5kaW5nLiBAZXZlbnREZXRhaWwgYHN0cmluZ2Ag4oCUIFRoZSByYXcgdmFsdWUgZnJvbSB0aGUgbmF0aXZlIGlucHV0IGVsZW1lbnQuLEB2ZWdhVmVyc2lvbiAyLjc1LjBcbiAgICovXG4gIHZlZ2FOYXRpdmVJbnB1dENoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogTmF0aXZlLW5hbWVzcGFjZSBhbGlhcyBmb3IgdGhlIGB2ZWdhTmF0aXZlSW5wdXRDaGFuZ2VgIGV2ZW50LlxuXG5FbWl0dGVkIGF0IHRoZSBzYW1lIHRpbWUgYW5kIHVuZGVyIHRoZSBzYW1lIGNvbmRpdGlvbnMgYXNcbmB2ZWdhTmF0aXZlSW5wdXRDaGFuZ2VgLiBVc2UgdGhpcyBldmVudCB3aGVuIGludGVncmF0aW5nIHdpdGggZnJhbWV3b3Jrc1xudGhhdCBleHBlY3QgbmF0aXZlLXN0eWxlIGV2ZW50IG5hbWVzLiBAZXZlbnREZXRhaWwgYHN0cmluZ2Ag4oCUIFRoZSByYXcgdmFsdWUgZnJvbSB0aGUgbmF0aXZlIGlucHV0IGVsZW1lbnQuLEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjc1LjBcbiAgICovXG4gIG5hdGl2ZUlucHV0Q2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIGlucHV0IGZpZWxkIGxvc2VzIGZvY3VzLlxuXG5UaGlzIGV2ZW50IGZpcmVzIGFmdGVyIHRoZSB1bmRlcmx5aW5nIG5hdGl2ZSBgPGlucHV0PmAgZWxlbWVudCdzIGBibHVyYFxuZXZlbnQuIFVzZWZ1bCBmb3IgdHJpZ2dlcmluZyB2YWxpZGF0aW9uLCBzYXZpbmcgc3RhdGUsIG9yIHVwZGF0aW5nIFVJXG53aGVuIHRoZSB1c2VyIG5hdmlnYXRlcyBhd2F5IGZyb20gdGhlIGZpZWxkLiBAZXZlbnREZXRhaWwgYHVuZGVmaW5lZGAg4oCUIE5vIHBheWxvYWQ7IGxpc3RlbiBmb3IgdGhlIGV2ZW50IG9jY3VycmVuY2Ugb25seS4sQHZlZ2FWZXJzaW9uIDEuMy4wXG4gICAqL1xuICB2ZWdhQmx1cjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHVuZGVmaW5lZD4+O1xuICAvKipcbiAgICogTmF0aXZlLW5hbWVzcGFjZSBhbGlhcyBmb3IgdGhlIGB2ZWdhQmx1cmAgZXZlbnQuXG5cbkVtaXR0ZWQgYXQgdGhlIHNhbWUgdGltZSBhbmQgdW5kZXIgdGhlIHNhbWUgY29uZGl0aW9ucyBhcyBgdmVnYUJsdXJgLlxuVXNlIHRoaXMgZXZlbnQgd2hlbiBpbnRlZ3JhdGluZyB3aXRoIGZyYW1ld29ya3MgdGhhdCBleHBlY3QgbmF0aXZlLXN0eWxlXG5ldmVudCBuYW1lcy4gQGV2ZW50RGV0YWlsIGB1bmRlZmluZWRgIOKAlCBObyBwYXlsb2FkOyBsaXN0ZW4gZm9yIHRoZSBldmVudCBvY2N1cnJlbmNlIG9ubHkuLEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgYmx1cjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHVuZGVmaW5lZD4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSBpbnB1dCBmaWVsZCByZWNlaXZlcyBmb2N1cy5cblxuVGhpcyBldmVudCBmaXJlcyBhZnRlciB0aGUgdW5kZXJseWluZyBuYXRpdmUgYDxpbnB1dD5gIGVsZW1lbnQncyBgZm9jdXNgXG5ldmVudCwgaW5jbHVkaW5nIHdoZW4gZm9jdXMgaXMgc2V0IHByb2dyYW1tYXRpY2FsbHkgdmlhIHRoZSBgZG9Gb2N1cygpYCBtZXRob2QuXG5Vc2VmdWwgZm9yIGhpZ2hsaWdodGluZyB0aGUgZmllbGQsIHNob3dpbmcgY29udGV4dHVhbCBoZWxwLCBvciBvcGVuaW5nXG5hIHN1Z2dlc3Rpb25zIGRyb3Bkb3duLiBAZXZlbnREZXRhaWwgYHVuZGVmaW5lZGAg4oCUIE5vIHBheWxvYWQ7IGxpc3RlbiBmb3IgdGhlIGV2ZW50IG9jY3VycmVuY2Ugb25seS4sQHZlZ2FWZXJzaW9uIDEuMTIuMFxuICAgKi9cbiAgdmVnYUZvY3VzOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dW5kZWZpbmVkPj47XG4gIC8qKlxuICAgKiBOYXRpdmUtbmFtZXNwYWNlIGFsaWFzIGZvciB0aGUgYHZlZ2FGb2N1c2AgZXZlbnQuXG5cbkVtaXR0ZWQgYXQgdGhlIHNhbWUgdGltZSBhbmQgdW5kZXIgdGhlIHNhbWUgY29uZGl0aW9ucyBhcyBgdmVnYUZvY3VzYC5cblVzZSB0aGlzIGV2ZW50IHdoZW4gaW50ZWdyYXRpbmcgd2l0aCBmcmFtZXdvcmtzIHRoYXQgZXhwZWN0IG5hdGl2ZS1zdHlsZVxuZXZlbnQgbmFtZXMuIEBldmVudERldGFpbCBgdW5kZWZpbmVkYCDigJQgTm8gcGF5bG9hZDsgbGlzdGVuIGZvciB0aGUgZXZlbnQgb2NjdXJyZW5jZSBvbmx5LixAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGZvY3VzOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dW5kZWZpbmVkPj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIHVzZXIgY2xpY2tzIHRoZSBzdWZmaXggYnV0dG9uIGluIHRoZSBmaWVsZCBsYWJlbC5cblxuVGhpcyBldmVudCBvbmx5IGZpcmVzIHdoZW4gYSBgbGFiZWxTdWZmaXhCdXR0b25Db25maWdgIChvciB0aGUgZGVwcmVjYXRlZFxuYGxhYmVsU3VmZml4QnV0dG9uUHJvcHNgKSBpcyBwcm92aWRlZC4gVXNlIGl0IHRvIGhhbmRsZSBjb250ZXh0dWFsIGFjdGlvbnNcbnN1Y2ggYXMgb3BlbmluZyBhIHRvb2x0aXAsIG5hdmlnYXRpbmcgdG8gYSBoZWxwIHBhZ2UsIG9yIHRyaWdnZXJpbmcgYVxuXCJGb3Jnb3QgcGFzc3dvcmQ/XCIgZmxvdy4gQGV2ZW50RGV0YWlsIGB2b2lkYCDigJQgTm8gcGF5bG9hZC4sQHZlZ2FWZXJzaW9uIDIuMjUuMFxuICAgKi9cbiAgdmVnYUxhYmVsQnV0dG9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIE5hdGl2ZS1uYW1lc3BhY2UgYWxpYXMgZm9yIHRoZSBgdmVnYUxhYmVsQnV0dG9uQ2xpY2tgIGV2ZW50LlxuXG5FbWl0dGVkIGF0IHRoZSBzYW1lIHRpbWUgYW5kIHVuZGVyIHRoZSBzYW1lIGNvbmRpdGlvbnMgYXNcbmB2ZWdhTGFiZWxCdXR0b25DbGlja2AuIFVzZSB0aGlzIGV2ZW50IHdoZW4gaW50ZWdyYXRpbmcgd2l0aCBmcmFtZXdvcmtzXG50aGF0IGV4cGVjdCBuYXRpdmUtc3R5bGUgZXZlbnQgbmFtZXMuIEBldmVudERldGFpbCBgdm9pZGAg4oCUIE5vIHBheWxvYWQuLEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjI1LjBcbiAgICovXG4gIGxhYmVsQnV0dG9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgdXNlciBwYXN0ZXMgY29udGVudCBpbnRvIHRoZSBpbnB1dCBmaWVsZC5cblxuVGhpcyBldmVudCBmaXJlcyByZWdhcmRsZXNzIG9mIHRoZSBgZGlzYWJsZUNvcHlQYXN0ZWAgc2V0dGluZyDigJQgdGhlIHBhc3RlXG5hY3Rpb24gaXMgYmxvY2tlZCB2aXN1YWxseSwgYnV0IHRoZSBldmVudCBzdGlsbCBwcm9wYWdhdGVzIGZvciB0cmFja2luZ1xucHVycG9zZXMuIFVzZSB0aGlzIHRvIGluc3BlY3Qgb3IgdHJhbnNmb3JtIHBhc3RlZCBkYXRhIGJlZm9yZSBpdCBpcyBhcHBsaWVkLiBAZXZlbnREZXRhaWwgYERhdGFUcmFuc2ZlclR5cGVgIOKAlCBBbiBvYmplY3QgY29udGFpbmluZyB0aGUgcGFzdGVkIGRhdGEsXG5pbmNsdWRpbmcgdGhlIE1JTUUgdHlwZSBhbmQgcmF3IHRleHQgY29udGVudCBmcm9tIHRoZSBjbGlwYm9hcmQuLEB2ZWdhVmVyc2lvbiAyLjY2LjBcbiAgICovXG4gIHZlZ2FQYXN0ZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhSW5wdXREYXRhVHJhbnNmZXJUeXBlPj47XG4gIC8qKlxuICAgKiBOYXRpdmUtbmFtZXNwYWNlIGFsaWFzIGZvciB0aGUgYHZlZ2FQYXN0ZWAgZXZlbnQuXG5cbkVtaXR0ZWQgYXQgdGhlIHNhbWUgdGltZSBhbmQgdW5kZXIgdGhlIHNhbWUgY29uZGl0aW9ucyBhcyBgdmVnYVBhc3RlYC5cblVzZSB0aGlzIGV2ZW50IHdoZW4gaW50ZWdyYXRpbmcgd2l0aCBmcmFtZXdvcmtzIHRoYXQgZXhwZWN0IG5hdGl2ZS1zdHlsZVxuZXZlbnQgbmFtZXMuIEBldmVudERldGFpbCBgRGF0YVRyYW5zZmVyVHlwZWAg4oCUIEFuIG9iamVjdCBjb250YWluaW5nIHRoZSBwYXN0ZWQgZGF0YSxcbmluY2x1ZGluZyB0aGUgTUlNRSB0eXBlIGFuZCByYXcgdGV4dCBjb250ZW50IGZyb20gdGhlIGNsaXBib2FyZC4sQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuNjYuMFxuICAgKi9cbiAgcGFzdGU6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYUlucHV0RGF0YVRyYW5zZmVyVHlwZT4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSB1c2VyIHNlbGVjdHMgYW4gaXRlbSBmcm9tIHRoZSBzdWdnZXN0aW9ucyBkcm9wZG93bi5cblxuVGhpcyBldmVudCBvbmx5IGZpcmVzIHdoZW4gdGhlIGBzdWdnZXN0aW9uc0Ryb3Bkb3duU291cmNlYCBwcm9wIGlzIHNldC5cblVzZSBpdCB0byByZXNwb25kIHRvIHRoZSB1c2VyJ3Mgc2VsZWN0aW9uIOKAlCBmb3IgZXhhbXBsZSwgdG8gcG9wdWxhdGVcbnJlbGF0ZWQgZmllbGRzLCBuYXZpZ2F0ZSB0byBhIGRldGFpbCBwYWdlLCBvciB0cmlnZ2VyIGEgc2VhcmNoLiBAZXZlbnREZXRhaWwgYFZlZ2FEcm9wZG93blNvdXJjZUl0ZW1gIOKAlCBUaGUgZnVsbCBkYXRhIG9iamVjdCBvZiB0aGUgc2VsZWN0ZWRcbnN1Z2dlc3Rpb24gaXRlbSwgaW5jbHVkaW5nIGl0cyBgbGFiZWxgLCBgdmFsdWVgLCBhbmQgYW55IGN1c3RvbSBwcm9wZXJ0aWVzLixAdmVnYVZlcnNpb24gMi43NS4wXG4gICAqL1xuICB2ZWdhU3VnZ2VzdGlvbkl0ZW1DbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhSW5wdXRWZWdhRHJvcGRvd25Tb3VyY2VJdGVtPj47XG4gIC8qKlxuICAgKiBOYXRpdmUtbmFtZXNwYWNlIGFsaWFzIGZvciB0aGUgYHZlZ2FTdWdnZXN0aW9uSXRlbUNsaWNrYCBldmVudC5cblxuRW1pdHRlZCBhdCB0aGUgc2FtZSB0aW1lIGFuZCB1bmRlciB0aGUgc2FtZSBjb25kaXRpb25zIGFzXG5gdmVnYVN1Z2dlc3Rpb25JdGVtQ2xpY2tgLiBVc2UgdGhpcyBldmVudCB3aGVuIGludGVncmF0aW5nIHdpdGggZnJhbWV3b3Jrc1xudGhhdCBleHBlY3QgbmF0aXZlLXN0eWxlIGV2ZW50IG5hbWVzLiBAZXZlbnREZXRhaWwgYFZlZ2FEcm9wZG93blNvdXJjZUl0ZW1gIOKAlCBUaGUgZnVsbCBkYXRhIG9iamVjdCBvZiB0aGUgc2VsZWN0ZWRcbnN1Z2dlc3Rpb24gaXRlbSwgaW5jbHVkaW5nIGl0cyBgbGFiZWxgLCBgdmFsdWVgLCBhbmQgYW55IGN1c3RvbSBwcm9wZXJ0aWVzLixAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi43NS4wXG4gICAqL1xuICBzdWdnZXN0aW9uSXRlbUNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FJbnB1dFZlZ2FEcm9wZG93blNvdXJjZUl0ZW0+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2F1dG9WYWxpZGF0aW9uJywgJ2F1dG9jb21wbGV0ZScsICdkaXNhYmxlQ29weVBhc3RlJywgJ2Rpc2FibGVkJywgJ2VtYWlsJywgJ2VudGVya2V5aGludCcsICdoaW50JywgJ2lucHV0bW9kZScsICdpc1ZhbGlkJywgJ2xhYmVsJywgJ2xhYmVsU3VmZml4QnV0dG9uQ29uZmlnJywgJ2xhYmVsU3VmZml4QnV0dG9uUHJvcHMnLCAnbWFza0NvbmZpZycsICdtYXgnLCAnbWF4TGVuZ3RoJywgJ21pbicsICdtaW5MZW5ndGgnLCAnbmFtZScsICdvcHRpb25hbCcsICdwbGFjZWhvbGRlcicsICdwcmVmaXhJY29uJywgJ3JlYWRPbmx5JywgJ3JlcXVpcmVkJywgJ3Nob3dDbGVhckljb24nLCAnc2l6ZScsICdzdWdnZXN0aW9uc0Ryb3Bkb3duU291cmNlJywgJ3R5cGUnLCAndmFsaWRhdGlvblJ1bGVzJywgJ3ZhbHVlJywgJ3ZhbHVlVXBkYXRlVHJpZ2dlciddLFxuICBtZXRob2RzOiBbJ2RvRm9jdXMnLCAnZG9CbHVyJywgJ3Nob3dTdWdnZXN0aW9uc0Ryb3Bkb3duJywgJ2hpZGVTdWdnZXN0aW9uc0Ryb3Bkb3duJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWlucHV0JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydhdXRvVmFsaWRhdGlvbicsICdhdXRvY29tcGxldGUnLCAnZGlzYWJsZUNvcHlQYXN0ZScsICdkaXNhYmxlZCcsICdlbWFpbCcsICdlbnRlcmtleWhpbnQnLCAnaGludCcsICdpbnB1dG1vZGUnLCAnaXNWYWxpZCcsICdsYWJlbCcsICdsYWJlbFN1ZmZpeEJ1dHRvbkNvbmZpZycsICdsYWJlbFN1ZmZpeEJ1dHRvblByb3BzJywgJ21hc2tDb25maWcnLCAnbWF4JywgJ21heExlbmd0aCcsICdtaW4nLCAnbWluTGVuZ3RoJywgJ25hbWUnLCAnb3B0aW9uYWwnLCAncGxhY2Vob2xkZXInLCAncHJlZml4SWNvbicsICdyZWFkT25seScsICdyZXF1aXJlZCcsICdzaG93Q2xlYXJJY29uJywgJ3NpemUnLCAnc3VnZ2VzdGlvbnNEcm9wZG93blNvdXJjZScsICd0eXBlJywgJ3ZhbGlkYXRpb25SdWxlcycsICd2YWx1ZScsICd2YWx1ZVVwZGF0ZVRyaWdnZXInXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhSW5wdXQge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2hhbmdlJywgJ2NoYW5nZScsICd2ZWdhTmF0aXZlSW5wdXRDaGFuZ2UnLCAnbmF0aXZlSW5wdXRDaGFuZ2UnLCAndmVnYUJsdXInLCAnYmx1cicsICd2ZWdhRm9jdXMnLCAnZm9jdXMnLCAndmVnYUxhYmVsQnV0dG9uQ2xpY2snLCAnbGFiZWxCdXR0b25DbGljaycsICd2ZWdhUGFzdGUnLCAncGFzdGUnLCAndmVnYVN1Z2dlc3Rpb25JdGVtQ2xpY2snLCAnc3VnZ2VzdGlvbkl0ZW1DbGljayddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhSW5wdXRDcmVkaXRDYXJkIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhSW5wdXRDcmVkaXRDYXJkIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGEgdmFsdWUgY2hhbmdlLiBAdmVnYVZlcnNpb24gMS4yNi4wXG4gICAqL1xuICB2ZWdhQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBBIG5hdGl2ZSBjaGFuZ2UgZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgYSB2YWx1ZSBjaGFuZ2UuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgY2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgYmx1ciBldmVudCBvZiB0aGUgY3JlZGl0IGNhcmQgZWxlbWVudC4gQHZlZ2FWZXJzaW9uIDEuMjYuMFxuICAgKi9cbiAgdmVnYUJsdXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx1bmRlZmluZWQ+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBibHVyIGV2ZW50IG9mIHRoZSBjcmVkaXQgY2FyZCBlbGVtZW50LiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGJsdXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx1bmRlZmluZWQ+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBmb2N1cyBvZiB0aGUgY3JlZGl0IGNhcmQgZWxlbWVudC4gQHZlZ2FWZXJzaW9uIDEuMjYuMFxuICAgKi9cbiAgdmVnYUZvY3VzOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dW5kZWZpbmVkPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgZm9jdXMgb2YgdGhlIGNyZWRpdCBjYXJkIGVsZW1lbnQuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgZm9jdXM6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx1bmRlZmluZWQ+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2F1dG9WYWxpZGF0aW9uJywgJ2Rpc2FibGVkJywgJ2hpZGVDYXJkTnVtYmVyT25CbHVyJywgJ2hpbnQnLCAnaXNWYWxpZCcsICdsYWJlbCcsICdvcHRpb25hbCcsICdwbGFjZWhvbGRlcicsICdyZXF1aXJlZCcsICdzaXplJywgJ3ZhbGlkYXRpb25SdWxlcycsICd2YWx1ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1pbnB1dC1jcmVkaXQtY2FyZCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnYXV0b1ZhbGlkYXRpb24nLCAnZGlzYWJsZWQnLCAnaGlkZUNhcmROdW1iZXJPbkJsdXInLCAnaGludCcsICdpc1ZhbGlkJywgJ2xhYmVsJywgJ29wdGlvbmFsJywgJ3BsYWNlaG9sZGVyJywgJ3JlcXVpcmVkJywgJ3NpemUnLCAndmFsaWRhdGlvblJ1bGVzJywgJ3ZhbHVlJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUlucHV0Q3JlZGl0Q2FyZCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDaGFuZ2UnLCAnY2hhbmdlJywgJ3ZlZ2FCbHVyJywgJ2JsdXInLCAndmVnYUZvY3VzJywgJ2ZvY3VzJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FJbnB1dE51bWVyaWMgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FJbnB1dE51bWVyaWMge1xuICAvKipcbiAgICogRmlyZXMgd2hlbmV2ZXIgdGhlIG51bWVyaWMgaW5wdXQncyB2YWx1ZSBjaGFuZ2VzIOKAlCBpbmNsdWRpbmcgdHlwaW5nLFxua2V5Ym9hcmQgaW5jcmVtZW50L2RlY3JlbWVudCwgY2xlYXJpbmcsIGFuZCBwcm9ncmFtbWF0aWMgdXBkYXRlcy5cblxuVGhlIGV2ZW50IGRldGFpbCBjb250YWlucyB0aGUgbmV3IG51bWVyaWMgdmFsdWUgKGBudW1iZXJgKSwgb3IgYE5hTmBcbndoZW4gdGhlIGZpZWxkIGlzIGVtcHR5LiBAZXZlbnREZXRhaWwgbnVtYmVyLEB2ZWdhVmVyc2lvbiAyLjI5LjBcbiAgICovXG4gIHZlZ2FDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxudW1iZXI+PjtcbiAgLyoqXG4gICAqIE5hdGl2ZS1lcXVpdmFsZW50IG1pcnJvciBvZiBgdmVnYUNoYW5nZWAuIEZpcmVzIHdpdGggdGhlIHNhbWUgcGF5bG9hZFxuYW5kIGF0IHRoZSBzYW1lIHRpbWUsIGFsbG93aW5nIGNvbnN1bWVycyB0byBsaXN0ZW4gdXNpbmcgdGhlIHN0YW5kYXJkXG5gY2hhbmdlYCBldmVudCBuYW1lLiBAZXZlbnREZXRhaWwgbnVtYmVyLEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjI5LjBcbiAgICovXG4gIGNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PG51bWJlcj4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnYXV0b1ZhbGlkYXRpb24nLCAnZGlzYWJsZWQnLCAnaGludCcsICdpbnRlZ2VyT25seScsICdpc1ZhbGlkJywgJ2xhYmVsJywgJ21ham9ySW5jcmVtZW50JywgJ21heCcsICdtaW4nLCAnbWlub3JJbmNyZW1lbnQnLCAnb3B0aW9uYWwnLCAncGxhY2Vob2xkZXInLCAncHJlZml4SWNvbicsICdwcmVmaXhUZXh0JywgJ3JlcXVpcmVkJywgJ3Nob3dDbGVhckljb24nLCAnc2l6ZScsICdzdWZmaXhUZXh0JywgJ3Rob3VzYW5kQ29tbWEnLCAndmFsaWRhdGlvblJ1bGVzJywgJ3ZhbHVlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWlucHV0LW51bWVyaWMnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2F1dG9WYWxpZGF0aW9uJywgJ2Rpc2FibGVkJywgJ2hpbnQnLCAnaW50ZWdlck9ubHknLCAnaXNWYWxpZCcsICdsYWJlbCcsICdtYWpvckluY3JlbWVudCcsICdtYXgnLCAnbWluJywgJ21pbm9ySW5jcmVtZW50JywgJ29wdGlvbmFsJywgJ3BsYWNlaG9sZGVyJywgJ3ByZWZpeEljb24nLCAncHJlZml4VGV4dCcsICdyZXF1aXJlZCcsICdzaG93Q2xlYXJJY29uJywgJ3NpemUnLCAnc3VmZml4VGV4dCcsICd0aG91c2FuZENvbW1hJywgJ3ZhbGlkYXRpb25SdWxlcycsICd2YWx1ZSddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FJbnB1dE51bWVyaWMge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2hhbmdlJywgJ2NoYW5nZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhSW5wdXRQYXNzY29kZSBleHRlbmRzIENvbXBvbmVudHMuVmVnYUlucHV0UGFzc2NvZGUge1xuICAvKipcbiAgICogRmlyZXMgd2hlbmV2ZXIgdGhlIHBhc3Njb2RlIHZhbHVlIGNoYW5nZXMg4oCUIGVhY2ggdGltZSBhIGNoYXJhY3RlciBpc1xuZW50ZXJlZCwgZGVsZXRlZCwgb3IgcGFzdGVkIGludG8gYW55IGJveC4gVGhlIGV2ZW50IGRldGFpbCBjb250YWlucyB0aGVcbmNvbmNhdGVuYXRlZCBzdHJpbmcgb2YgYWxsIGJveCB2YWx1ZXMgYXQgdGhlIHRpbWUgb2YgdGhlIGNoYW5nZS4gQGV2ZW50RGV0YWlsIHN0cmluZyxAdmVnYVZlcnNpb24gMi42Ni4wXG4gICAqL1xuICB2ZWdhQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBOYXRpdmUtZXF1aXZhbGVudCBtaXJyb3Igb2YgYHZlZ2FDaGFuZ2VgLiBGaXJlcyB3aXRoIHRoZSBzYW1lIHBheWxvYWRcbmFuZCBhdCB0aGUgc2FtZSB0aW1lLCBhbGxvd2luZyBjb25zdW1lcnMgdG8gbGlzdGVuIHVzaW5nIHRoZSBzdGFuZGFyZFxuYGNoYW5nZWAgZXZlbnQgbmFtZS4gQGV2ZW50RGV0YWlsIHN0cmluZyxAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi42Ni4wXG4gICAqL1xuICBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gYWxsIHBhc3Njb2RlIGJveGVzIGhhdmUgYmVlbiBmaWxsZWQgKGkuZS4sIHRoZSB2YWx1ZSBsZW5ndGhcbmVxdWFscyB0aGUgY29uZmlndXJlZCBgbGVuZ3RoYCkuIFRoZSBldmVudCBkZXRhaWwgY29udGFpbnMgdGhlIGNvbXBsZXRlXG5wYXNzY29kZSBzdHJpbmcuIFVzZWZ1bCBmb3IgdHJpZ2dlcmluZyBhdXRvLXN1Ym1pdCBvciB2ZXJpZmljYXRpb25cbndvcmtmbG93cy4gQGV2ZW50RGV0YWlsIHN0cmluZyxAdmVnYVZlcnNpb24gMi42Ni4wXG4gICAqL1xuICB2ZWdhQ29tcGxldGU6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIE5hdGl2ZS1lcXVpdmFsZW50IG1pcnJvciBvZiBgdmVnYUNvbXBsZXRlYC4gRmlyZXMgd2l0aCB0aGUgc2FtZSBwYXlsb2FkXG5hbmQgYXQgdGhlIHNhbWUgdGltZSwgYWxsb3dpbmcgY29uc3VtZXJzIHRvIGxpc3RlbiB1c2luZyB0aGUgc3RhbmRhcmRcbmBjb21wbGV0ZWAgZXZlbnQgbmFtZS4gQGV2ZW50RGV0YWlsIHN0cmluZyxAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi42Ni4wXG4gICAqL1xuICBjb21wbGV0ZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnYXV0b1ZhbGlkYXRpb24nLCAnZGlzYWJsZWQnLCAnaGludCcsICdpbnB1dFR5cGUnLCAnaXNWYWxpZCcsICdsYWJlbCcsICdsZW5ndGgnLCAnb3B0aW9uYWwnLCAncmVxdWlyZWQnLCAnc2l6ZScsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtaW5wdXQtcGFzc2NvZGUnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2F1dG9WYWxpZGF0aW9uJywgJ2Rpc2FibGVkJywgJ2hpbnQnLCAnaW5wdXRUeXBlJywgJ2lzVmFsaWQnLCAnbGFiZWwnLCAnbGVuZ3RoJywgJ29wdGlvbmFsJywgJ3JlcXVpcmVkJywgJ3NpemUnLCAndmFsaWRhdGlvblJ1bGVzJywgJ3ZhbHVlJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUlucHV0UGFzc2NvZGUge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2hhbmdlJywgJ2NoYW5nZScsICd2ZWdhQ29tcGxldGUnLCAnY29tcGxldGUnXSk7XG4gIH1cbn1cblxuaW1wb3J0IHR5cGUgeyBWZWdhQ291bnRyeVR5cGUgYXMgSVZlZ2FJbnB1dFBob25lTnVtYmVyVmVnYUNvdW50cnlUeXBlIH0gZnJvbSAnQGdsb2JhbHBheW1lbnRzL3ZlZ2EvZGlzdC90eXBlcy9jb21wb25lbnRzL3ZlZ2EtaW5wdXQtcGhvbmUtbnVtYmVyL3R5cGVzJztcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhSW5wdXRQaG9uZU51bWJlciBleHRlbmRzIENvbXBvbmVudHMuVmVnYUlucHV0UGhvbmVOdW1iZXIge1xuICAvKipcbiAgICogRmlyZXMgd2hlbmV2ZXIgdGhlIHBob25lIG51bWJlciB2YWx1ZSBjaGFuZ2VzIOKAlCBpbmNsdWRpbmcgdHlwaW5nLFxucGFzdGluZywgb3IgcHJvZ3JhbW1hdGljIHVwZGF0ZXMuIFRoZSBldmVudCBkZXRhaWwgY29udGFpbnMgdGhlIGZ1bGxcbnBob25lIG51bWJlciBpbiBFLjE2NCBmb3JtYXQgKGUuZy4sIGAnKzE0MTU1NTUyNjcxJ2ApLiBAZXZlbnREZXRhaWwgc3RyaW5nLEB2ZWdhVmVyc2lvbiAyLjE4LjBcbiAgICovXG4gIHZlZ2FDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIE5hdGl2ZS1lcXVpdmFsZW50IG1pcnJvciBvZiBgdmVnYUNoYW5nZWAuIEZpcmVzIHdpdGggdGhlIHNhbWUgcGF5bG9hZFxuYW5kIGF0IHRoZSBzYW1lIHRpbWUsIGFsbG93aW5nIGNvbnN1bWVycyB0byBsaXN0ZW4gdXNpbmcgdGhlIHN0YW5kYXJkXG5gY2hhbmdlYCBldmVudCBuYW1lLiBAZXZlbnREZXRhaWwgc3RyaW5nLEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjE4LjBcbiAgICovXG4gIGNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogRmlyZXMgd2hlbmV2ZXIgdGhlIHNlbGVjdGVkIGNvdW50cnkgY2hhbmdlcyB2aWEgdGhlIGNvdW50cnkgZHJvcGRvd24uXG5UaGUgZXZlbnQgZGV0YWlsIGNvbnRhaW5zIGEgYFZlZ2FDb3VudHJ5VHlwZWAgb2JqZWN0IHdpdGggdGhlIGNvdW50cnlcbmNvZGUsIGNhbGxpbmcgY29kZSwgYW5kIGRpc3BsYXkgbmFtZSBvZiB0aGUgbmV3bHkgc2VsZWN0ZWQgY291bnRyeS4gQGV2ZW50RGV0YWlsIFZlZ2FDb3VudHJ5VHlwZSxAdmVnYVZlcnNpb24gMi4xOC4wXG4gICAqL1xuICB2ZWdhQ291bnRyeUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhSW5wdXRQaG9uZU51bWJlclZlZ2FDb3VudHJ5VHlwZT4+O1xuICAvKipcbiAgICogTmF0aXZlLWVxdWl2YWxlbnQgbWlycm9yIG9mIGB2ZWdhQ291bnRyeUNoYW5nZWAuIEZpcmVzIHdpdGggdGhlIHNhbWVcbnBheWxvYWQgYW5kIGF0IHRoZSBzYW1lIHRpbWUsIGFsbG93aW5nIGNvbnN1bWVycyB0byBsaXN0ZW4gdXNpbmcgdGhlXG5zdGFuZGFyZCBgY291bnRyeUNoYW5nZWAgZXZlbnQgbmFtZS4gQGV2ZW50RGV0YWlsIFZlZ2FDb3VudHJ5VHlwZSxAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4xOC4wXG4gICAqL1xuICBjb3VudHJ5Q2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FJbnB1dFBob25lTnVtYmVyVmVnYUNvdW50cnlUeXBlPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydhbGxvd2VkQ291bnRyeUNvZGVzJywgJ2F1dG9WYWxpZGF0aW9uJywgJ2NvdW50cnlDb2RlJywgJ2Rpc2FibGVkJywgJ2VtcHR5VmFsdWVFbmFibGVkJywgJ2hpbnQnLCAnaXNWYWxpZCcsICdsYWJlbCcsICdvcHRpb25hbCcsICdwbGFjZWhvbGRlcicsICdyZXF1aXJlZCcsICdzaXplJywgJ3ZhbGlkYXRpb25SdWxlcycsICd2YWx1ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1pbnB1dC1waG9uZS1udW1iZXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2FsbG93ZWRDb3VudHJ5Q29kZXMnLCAnYXV0b1ZhbGlkYXRpb24nLCAnY291bnRyeUNvZGUnLCAnZGlzYWJsZWQnLCAnZW1wdHlWYWx1ZUVuYWJsZWQnLCAnaGludCcsICdpc1ZhbGlkJywgJ2xhYmVsJywgJ29wdGlvbmFsJywgJ3BsYWNlaG9sZGVyJywgJ3JlcXVpcmVkJywgJ3NpemUnLCAndmFsaWRhdGlvblJ1bGVzJywgJ3ZhbHVlJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUlucHV0UGhvbmVOdW1iZXIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2hhbmdlJywgJ2NoYW5nZScsICd2ZWdhQ291bnRyeUNoYW5nZScsICdjb3VudHJ5Q2hhbmdlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FJbnB1dFJhbmdlIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhSW5wdXRSYW5nZSB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBhIHZhbHVlIGNoYW5nZS4gQHZlZ2FWZXJzaW9uIDIuMi4wXG4gICAqL1xuICB2ZWdhQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8W251bWJlciwgbnVtYmVyXT4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgYSB2YWx1ZSBjaGFuZ2UuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjIuMFxuICAgKi9cbiAgY2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8W251bWJlciwgbnVtYmVyXT4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnYXV0b1ZhbGlkYXRpb24nLCAnZGlzYWJsZWQnLCAnaGludCcsICdpc1ZhbGlkJywgJ2xhYmVsJywgJ21heCcsICdtaW4nLCAnb3B0aW9uYWwnLCAncGxhY2Vob2xkZXInLCAncHJlZml4SWNvbicsICdyZXF1aXJlZCcsICdzaG93Q2xlYXJJY29uJywgJ3NpemUnLCAnc3RhY2snLCAndmFsaWRhdGlvblJ1bGVzJywgJ3ZhbHVlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWlucHV0LXJhbmdlJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydhdXRvVmFsaWRhdGlvbicsICdkaXNhYmxlZCcsICdoaW50JywgJ2lzVmFsaWQnLCAnbGFiZWwnLCAnbWF4JywgJ21pbicsICdvcHRpb25hbCcsICdwbGFjZWhvbGRlcicsICdwcmVmaXhJY29uJywgJ3JlcXVpcmVkJywgJ3Nob3dDbGVhckljb24nLCAnc2l6ZScsICdzdGFjaycsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWUnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhSW5wdXRSYW5nZSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDaGFuZ2UnLCAnY2hhbmdlJ10pO1xuICB9XG59XG5cbmltcG9ydCB0eXBlIHsgU2VsZWN0VmFsdWVUeXBlIGFzIElWZWdhSW5wdXRTZWxlY3RTZWxlY3RWYWx1ZVR5cGUgfSBmcm9tICdAZ2xvYmFscGF5bWVudHMvdmVnYS9kaXN0L3R5cGVzL2NvbXBvbmVudHMvdmVnYS1pbnB1dC1zZWxlY3QvdHlwZXMnO1xuaW1wb3J0IHR5cGUgeyBTZWxlY3RUeXBlIGFzIElWZWdhSW5wdXRTZWxlY3RTZWxlY3RUeXBlIH0gZnJvbSAnQGdsb2JhbHBheW1lbnRzL3ZlZ2EvZGlzdC90eXBlcy9jb21wb25lbnRzL3ZlZ2EtaW5wdXQtc2VsZWN0L3R5cGVzJztcbmltcG9ydCB0eXBlIHsgVmVnYURyb3Bkb3duU2VhcmNoVHJpZ2dlckV2ZW50RGV0YWlsIGFzIElWZWdhSW5wdXRTZWxlY3RWZWdhRHJvcGRvd25TZWFyY2hUcmlnZ2VyRXZlbnREZXRhaWwgfSBmcm9tICdAZ2xvYmFscGF5bWVudHMvdmVnYS9kaXN0L3R5cGVzL2NvbXBvbmVudHMvdmVnYS1kcm9wZG93bi90eXBlcyc7XG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUlucHV0U2VsZWN0IGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhSW5wdXRTZWxlY3Qge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNoYW5nZSBvZiB0aGUgc2VsZWN0IHZhbHVlLiBAdmVnYVZlcnNpb24gMS4wLjExXG4gICAqL1xuICB2ZWdhQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FJbnB1dFNlbGVjdFNlbGVjdFZhbHVlVHlwZTxJVmVnYUlucHV0U2VsZWN0U2VsZWN0VHlwZT4+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjaGFuZ2Ugb2YgdGhlIHNlbGVjdCB2YWx1ZS4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYUlucHV0U2VsZWN0U2VsZWN0VmFsdWVUeXBlPElWZWdhSW5wdXRTZWxlY3RTZWxlY3RUeXBlPj4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIHNlYXJjaCBvZiB0aGUgZHJvcGRvd24uIEB2ZWdhVmVyc2lvbiAxLjUwLjBcbiAgICovXG4gIHZlZ2FTZWFyY2g6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBzZWFyY2ggb2YgdGhlIGRyb3Bkb3duLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIHNlYXJjaDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIHNlYXJjaCBldmVudCB0cmlnZ2VyZWQgd2l0aGluIHRoZSBkcm9wZG93bixcbiAgIGJ1dCBvbmx5IGlmIGB1c2VEZWZhdWx0RmlsdGVyYCBpcyBzZXQgdG8gYGZhbHNlYC5cblVubGlrZSB0aGUgVmVnYXNlYXJjaCBldmVudCwgdGhpcyBldmVudCBpbmNsdWRlcyB0aGUgZGV0YWlscyBvZiB0aGUgdXNlciB3aG8gdHJpZ2dlcmVkIGl0LlxuSXQgY2FuIGJlIHRyaWdnZXJlZCBpbiB0d28gd2F5czogYnkgcHJlc3NpbmcgXCJFbnRlclwiIG9yIHRocm91Z2ggdXNlciBpbnB1dC4gQHZlZ2FWZXJzaW9uIDIuMzAuMFxuICAgKi9cbiAgdmVnYVNlYXJjaFRyaWdnZXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYUlucHV0U2VsZWN0VmVnYURyb3Bkb3duU2VhcmNoVHJpZ2dlckV2ZW50RGV0YWlsPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgc2VhcmNoIGV2ZW50IHRyaWdnZXJlZCB3aXRoaW4gdGhlIGRyb3Bkb3duLFxuVW5saWtlIHRoZSBWZWdhc2VhcmNoIGV2ZW50LCB0aGlzIGV2ZW50IGluY2x1ZGVzIHRoZSBkZXRhaWxzIG9mIHRoZSB1c2VyIHdobyB0cmlnZ2VyZWQgaXQuXG5JdCBjYW4gYmUgdHJpZ2dlcmVkIGluIHR3byB3YXlzOiBieSBwcmVzc2luZyBcIkVudGVyXCIgb3IgdGhyb3VnaCB1c2VyIGlucHV0LiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4zMC4wXG4gICAqL1xuICBzZWFyY2hUcmlnZ2VyOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FJbnB1dFNlbGVjdFZlZ2FEcm9wZG93blNlYXJjaFRyaWdnZXJFdmVudERldGFpbD4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBvbmx5IGZpcmVkIHdoZW4gdGhlIFNlbGVjdCBBbGwgY2hlY2tib3ggaW4gdGhlIGRyb3Bkb3duIGhhcyBiZWVuIGNsaWNrZWQuXG5cblRoZSBldmVudCdzIGBkZXRhaWxgIHByb3BlcnR5IGlzIGB0cnVlYCB3aGVuIHRoZSBTZWxlY3QgQWxsIGNoZWNrYm94IGlzIGNsaWNrZWQgdG8gc2VsZWN0IGFsbCBpdGVtcyxcbiAgIGFuZCBgZmFsc2VgIHdoZW4gdGhlIFNlbGVjdCBBbGwgY2hlY2tib3ggaXMgY2xpY2tlZCB0byBjbGVhciBhbGwgc2VsZWN0ZWQgaXRlbXMuIEB2ZWdhVmVyc2lvbiAyLjk1LjBcbiAgICovXG4gIHZlZ2FEcm9wZG93blNlbGVjdEFsbENsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8Ym9vbGVhbj4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBvbmx5IGZpcmVkIHdoZW4gdGhlIFNlbGVjdCBBbGwgY2hlY2tib3ggaW4gdGhlIGRyb3Bkb3duIGhhcyBiZWVuIGNsaWNrZWQuXG5cblRoZSBldmVudCdzIGBkZXRhaWxgIHByb3BlcnR5IGlzIGB0cnVlYCB3aGVuIHRoZSBTZWxlY3QgQWxsIGNoZWNrYm94IGlzIGNsaWNrZWQgdG8gc2VsZWN0IGFsbCBpdGVtcyxcbiAgIGFuZCBgZmFsc2VgIHdoZW4gdGhlIFNlbGVjdCBBbGwgY2hlY2tib3ggaXMgY2xpY2tlZCB0byBjbGVhciBhbGwgc2VsZWN0ZWQgaXRlbXMuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjk1LjBcbiAgICovXG4gIGRyb3Bkb3duU2VsZWN0QWxsQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxib29sZWFuPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGF0IHRoZSBpbnB1dC1zZWxlY3QgaGFzIGJlZW4gb3BlbmVkLFxuICAgZWl0aGVyIHByb2dyYW1tYXRpY2FsbHkgb3IgdmlhIHVzZXIgaW50ZXJhY3Rpb24uIEB2ZWdhVmVyc2lvbiAyLjMyLjBcbiAgICovXG4gIHZlZ2FTaG93OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGF0IHRoZSBpbnB1dC1zZWxlY3QgaGFzIGJlZW4gZGlzbWlzc2VkLFxuICAgZWl0aGVyIHByb2dyYW1tYXRpY2FsbHkgb3IgdmlhIHVzZXIgaW50ZXJhY3Rpb24uIEB2ZWdhVmVyc2lvbiAyLjMyLjBcbiAgICovXG4gIHZlZ2FIaWRlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGF0IHRoZSBzdWZmaXggYnV0dG9uIGFzc29jaWF0ZWQgd2l0aCB0aGUgZmllbGQgbGFiZWwgaGFzIGJlZW4gY2xpY2tlZC4gQHZlZ2FWZXJzaW9uIDIuNjguMFxuICAgKi9cbiAgdmVnYUxhYmVsQnV0dG9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoYXQgdGhlIHN1ZmZpeCBidXR0b24gYXNzb2NpYXRlZCB3aXRoIHRoZSBmaWVsZCBsYWJlbCBoYXMgYmVlbiBjbGlja2VkLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi42OC4wXG4gICAqL1xuICBsYWJlbEJ1dHRvbkNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8YW55Pj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydhdXRvVmFsaWRhdGlvbicsICdkaXNhYmxlZCcsICdkcm9wZG93bkl0ZW1Ub29sdGlwUHJvcHMnLCAnaGludCcsICdpc1ZhbGlkJywgJ2xhYmVsJywgJ2xhYmVsU3VmZml4QnV0dG9uQ29uZmlnJywgJ29wdGlvbmFsJywgJ3BsYWNlaG9sZGVyJywgJ3ByZWZpeEljb24nLCAncmVxdWlyZWQnLCAnc2VsZWN0VHlwZScsICdzZWxlY3RlZExhYmVsJywgJ3NlbGVjdGVkTGFiZWxUb29sdGlwUHJvcHMnLCAnc2l6ZScsICdzb3VyY2UnLCAnc291cmNlTGF6eUxvYWRDYWxsYmFjaycsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWUnLCAndmVnYURyb3Bkb3duUHJvcHMnXSxcbiAgbWV0aG9kczogWydkb0Nsb3NlJywgJ2RvT3BlbicsICdkb0NoYW5nZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1pbnB1dC1zZWxlY3QnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2F1dG9WYWxpZGF0aW9uJywgJ2Rpc2FibGVkJywgJ2Ryb3Bkb3duSXRlbVRvb2x0aXBQcm9wcycsICdoaW50JywgJ2lzVmFsaWQnLCAnbGFiZWwnLCAnbGFiZWxTdWZmaXhCdXR0b25Db25maWcnLCAnb3B0aW9uYWwnLCAncGxhY2Vob2xkZXInLCAncHJlZml4SWNvbicsICdyZXF1aXJlZCcsICdzZWxlY3RUeXBlJywgJ3NlbGVjdGVkTGFiZWwnLCAnc2VsZWN0ZWRMYWJlbFRvb2x0aXBQcm9wcycsICdzaXplJywgJ3NvdXJjZScsICdzb3VyY2VMYXp5TG9hZENhbGxiYWNrJywgJ3ZhbGlkYXRpb25SdWxlcycsICd2YWx1ZScsICd2ZWdhRHJvcGRvd25Qcm9wcyddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FJbnB1dFNlbGVjdCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDaGFuZ2UnLCAnY2hhbmdlJywgJ3ZlZ2FTZWFyY2gnLCAnc2VhcmNoJywgJ3ZlZ2FTZWFyY2hUcmlnZ2VyJywgJ3NlYXJjaFRyaWdnZXInLCAndmVnYURyb3Bkb3duU2VsZWN0QWxsQ2xpY2snLCAnZHJvcGRvd25TZWxlY3RBbGxDbGljaycsICd2ZWdhU2hvdycsICd2ZWdhSGlkZScsICd2ZWdhTGFiZWxCdXR0b25DbGljaycsICdsYWJlbEJ1dHRvbkNsaWNrJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FJdGVtVG9nZ2xlIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhSXRlbVRvZ2dsZSB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBhbiBpdGVtIHRvZ2dsZSBldmVudC4gQHZlZ2FWZXJzaW9uIDEuMy4wXG4gICAqL1xuICB2ZWdhVG9nZ2xlU3RhdHVzOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8Ym9vbGVhbj4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgYW4gaXRlbSB0b2dnbGUgZXZlbnQuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgdG9nZ2xlU3RhdHVzOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8Ym9vbGVhbj4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnaXNUb2dnbGVkJywgJ2l0ZW1Ub2dnbGVTdGF0dXNNYXAnLCAnc3RhdHVzTWFwJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWl0ZW0tdG9nZ2xlJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydpc1RvZ2dsZWQnLCAnaXRlbVRvZ2dsZVN0YXR1c01hcCcsICdzdGF0dXNNYXAnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhSXRlbVRvZ2dsZSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FUb2dnbGVTdGF0dXMnLCAndG9nZ2xlU3RhdHVzJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FMZWZ0TmF2IGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhTGVmdE5hdiB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGF0IHRoZSBsZWZ0LW5hdidzIG9wZW4gc3RhdGUgaGFzIGNoYW5nZWQuIEB2ZWdhVmVyc2lvbiAxLjMxLjBcbiAgICovXG4gIHZlZ2FTdGF0ZVVwZGF0ZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhhdCB0aGUgbGVmdC1uYXYncyBvcGVuIHN0YXRlIGhhcyBjaGFuZ2VkLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIHN0YXRlVXBkYXRlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydhdXRvQ29sbGFwc2VHcm91cHMnLCAnYXV0b0NvbGxhcHNlT25PdmVybGF5JywgJ2Zvb3Rub3RlJywgJ2hlYWRlckNvbmZpZycsICdvcGVuJywgJ3Nob3dBc092ZXJsYXknLCAnc291cmNlJ10sXG4gIG1ldGhvZHM6IFsndG9nZ2xlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWxlZnQtbmF2JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydhdXRvQ29sbGFwc2VHcm91cHMnLCAnYXV0b0NvbGxhcHNlT25PdmVybGF5JywgJ2Zvb3Rub3RlJywgJ2hlYWRlckNvbmZpZycsICdvcGVuJywgJ3Nob3dBc092ZXJsYXknLCAnc291cmNlJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUxlZnROYXYge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhU3RhdGVVcGRhdGUnLCAnc3RhdGVVcGRhdGUnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUxlZnROYXZHcm91cCBleHRlbmRzIENvbXBvbmVudHMuVmVnYUxlZnROYXZHcm91cCB7XG4gIC8qKlxuICAgKiBldmVudCBlbWl0dGVyIHVzZWQgZm9yIG5vdGlmeWluZyBjb25zdW1lcnMgdGhlIGNsaWNrIGV2ZW50ICogQHZlZ2FWZXJzaW9uIDEuNDEuMFxuICAgKi9cbiAgdmVnYUdyb3VwQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgdXNlZCBmb3Igbm90aWZ5aW5nIGNvbnN1bWVycyB0aGUgY2xpY2sgZXZlbnQgQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBncm91cENsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydpY29uJywgJ2l0ZW1LZXknLCAnbGFiZWwnLCAnb3BlbkJ5RGVmYXVsdCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1sZWZ0LW5hdi1ncm91cCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnaWNvbicsICdpdGVtS2V5JywgJ2xhYmVsJywgJ29wZW5CeURlZmF1bHQnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhTGVmdE5hdkdyb3VwIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUdyb3VwQ2xpY2snLCAnZ3JvdXBDbGljayddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhTGVmdE5hdkxpbmsgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FMZWZ0TmF2TGluayB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgbGluayBjbGljayBldmVudC4gKiBAdmVnYVZlcnNpb24gMS4zMS4wXG4gICAqL1xuICB2ZWdhTWVudUNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8YW55Pj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgbGluayBjbGljayBldmVudC4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBtZW51Q2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2NvdW50ZXJCYWRnZScsICdjdXN0b21TZWxlY3Rpb25FbmFibGVkJywgJ2ljb24nLCAnaXRlbUtleScsICdzZWxlY3RlZCcsICd0YXJnZXQnLCAndXJsJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWxlZnQtbmF2LWxpbmsnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2NvdW50ZXJCYWRnZScsICdjdXN0b21TZWxlY3Rpb25FbmFibGVkJywgJ2ljb24nLCAnaXRlbUtleScsICdzZWxlY3RlZCcsICd0YXJnZXQnLCAndXJsJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUxlZnROYXZMaW5rIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYU1lbnVDbGljaycsICdtZW51Q2xpY2snXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUxlZnROYXZTZWN0aW9uIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhTGVmdE5hdlNlY3Rpb24ge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGFjdGlvbiBjbGljayBldmVudCB3aGVuIHRoZSBhY3Rpb24gbGluayBpcyBub3QgY29uZmlndXJlZC4gQHZlZ2FWZXJzaW9uIDIuMTEuMFxuICAgKi9cbiAgdmVnYUFjdGlvbkNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgYWN0aW9uIGNsaWNrIGV2ZW50IHdoZW4gdGhlIGFjdGlvbiBsaW5rIGlzIG5vdCBjb25maWd1cmVkLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4xMS4wXG4gICAqL1xuICBhY3Rpb25DbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnaXRlbUtleScsICdzZWN0aW9uSGVhZGVyJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWxlZnQtbmF2LXNlY3Rpb24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2l0ZW1LZXknLCAnc2VjdGlvbkhlYWRlciddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FMZWZ0TmF2U2VjdGlvbiB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FBY3Rpb25DbGljaycsICdhY3Rpb25DbGljayddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhTGluZUNoYXJ0IGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhTGluZUNoYXJ0IHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnb3B0aW9ucyddLFxuICBtZXRob2RzOiBbJ3JlUmVuZGVyJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWxpbmUtY2hhcnQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ29wdGlvbnMnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhTGluZUNoYXJ0IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUxvYWRlcldyYXBwZXIgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FMb2FkZXJXcmFwcGVyIHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1sb2FkZXItd3JhcHBlcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FMb2FkZXJXcmFwcGVyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUxvYWRpbmdJbmRpY2F0b3IgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FMb2FkaW5nSW5kaWNhdG9yIHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnaGludCcsICdsYWJlbCcsICdtb2RlJywgJ3BlcmNlbnQnLCAnc2hhcGUnLCAnc2l6ZScsICdzdGF0dXMnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtbG9hZGluZy1pbmRpY2F0b3InLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2hpbnQnLCAnbGFiZWwnLCAnbW9kZScsICdwZXJjZW50JywgJ3NoYXBlJywgJ3NpemUnLCAnc3RhdHVzJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUxvYWRpbmdJbmRpY2F0b3Ige1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhTW9kYWwgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FNb2RhbCB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgbW9kYWwgY2xvc2UgZXZlbnQuICBJZiBhIG1ldGhvZCBpcyBkZWZpbmVkIGZvciB0aGlzIGV2ZW50LCBpbnZva2luZyBldmVudC5wcmV2ZW50RGVmYXVsdCgpIHByZXZlbnRzIHRoZSBtb2RhbCBmcm9tIGNsb3NpbmcuIEB2ZWdhVmVyc2lvbiAxLjAuMTBcbiAgICovXG4gIHZlZ2FDbG9zZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIG1vZGFsIGNsb3NlIGV2ZW50LiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGNsb3NlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8YW55Pj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgbW9kYWwgb3BlbiBldmVudC4gQHZlZ2FWZXJzaW9uIDEuMC4xMFxuICAgKi9cbiAgdmVnYU9wZW46IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBtb2RhbCBvcGVuIGV2ZW50LiBUaGUgZXZlbnQgbmFtZSBpcyBub3QgYG9wZW5gIGJlY2F1c2UgYWxyZWFkeSBoYXMgYSBwcm9wZXJ0eSBgb3BlbmAgQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBtb2RhbE9wZW46IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2FuaW1hdGlvbicsICdiYWNrZHJvcCcsICdiYWNrZHJvcENvbG9yJywgJ2NvbnRlbnRNYXhIZWlnaHQnLCAnY29ybmVycycsICdoYW5kbGVDbG9zZScsICdoZWlnaHQnLCAnaXNWZXJ0aWNhbGx5Q2VudGVyJywgJ2lzVmVydGljYWxseUNlbnRlcmVkJywgJ21hcmdpbicsICdtb2RhbFRpdGxlJywgJ29wZW4nLCAncGFkZGluZycsICdzaG93Q2xvc2VCdXR0b24nLCAnc2l6ZScsICd3aWR0aCddLFxuICBtZXRob2RzOiBbJ21vZGFsJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLW1vZGFsJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydhbmltYXRpb24nLCAnYmFja2Ryb3AnLCAnYmFja2Ryb3BDb2xvcicsICdjb250ZW50TWF4SGVpZ2h0JywgJ2Nvcm5lcnMnLCAnaGFuZGxlQ2xvc2UnLCAnaGVpZ2h0JywgJ2lzVmVydGljYWxseUNlbnRlcicsICdpc1ZlcnRpY2FsbHlDZW50ZXJlZCcsICdtYXJnaW4nLCAnbW9kYWxUaXRsZScsICdvcGVuJywgJ3BhZGRpbmcnLCAnc2hvd0Nsb3NlQnV0dG9uJywgJ3NpemUnLCAnd2lkdGgnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhTW9kYWwge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2xvc2UnLCAnY2xvc2UnLCAndmVnYU9wZW4nLCAnbW9kYWxPcGVuJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FOYXZDYXJkIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhTmF2Q2FyZCB7fVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ21heEhlaWdodCcsICdzb3VyY2UnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtbmF2LWNhcmQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ21heEhlaWdodCcsICdzb3VyY2UnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhTmF2Q2FyZCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FQYWdlTm90aWZpY2F0aW9uIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhUGFnZU5vdGlmaWNhdGlvbiB7fVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2FjdGlvbkJ1dHRvbnMnLCAnZHVyYXRpb24nLCAnbWVzc2FnZScsICdub3RpZmljYXRpb25UaXRsZScsICdzaG93Q2xvc2VCdXR0b24nLCAndHlwZSddLFxuICBtZXRob2RzOiBbJ2Nsb3NlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXBhZ2Utbm90aWZpY2F0aW9uJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydhY3Rpb25CdXR0b25zJywgJ2R1cmF0aW9uJywgJ21lc3NhZ2UnLCAnbm90aWZpY2F0aW9uVGl0bGUnLCAnc2hvd0Nsb3NlQnV0dG9uJywgJ3R5cGUnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhUGFnZU5vdGlmaWNhdGlvbiB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FQYWdlTm90aWZpY2F0aW9uTGlzdCBleHRlbmRzIENvbXBvbmVudHMuVmVnYVBhZ2VOb3RpZmljYXRpb25MaXN0IHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1wYWdlLW5vdGlmaWNhdGlvbi1saXN0JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50Pidcbn0pXG5leHBvcnQgY2xhc3MgVmVnYVBhZ2VOb3RpZmljYXRpb25MaXN0IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVBhZ2luYXRpb24gZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FQYWdpbmF0aW9uIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjdXJyZW50IHBhZ2UgY2hhbmdlLiBAdmVnYVZlcnNpb24gMS4zLjBcbiAgICovXG4gIHZlZ2FDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxudW1iZXI+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjdXJyZW50IHBhZ2UgY2hhbmdlLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PG51bWJlcj4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgYSBjaGFuZ2UgaW4gdGhlIG51bWJlciBvZlxuICAgZGF0YSBpdGVtcyBkaXNwbGF5ZWQgcGVyIHBhZ2UuIEB2ZWdhVmVyc2lvbiAxLjI1LjBcbiAgICovXG4gIHZlZ2FQYWdlU2l6ZUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PG51bWJlcj4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgYSBjaGFuZ2UgaW4gdGhlIG51bWJlciBvZlxuICAgZGF0YSBpdGVtcyBkaXNwbGF5ZWQgcGVyIHBhZ2UuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgcGFnZVNpemVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxudW1iZXI+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2N1cnJlbnQnLCAnZHJvcGRvd25Qcm9wcycsICdleHRlbnNpb25zJywgJ2xheW91dCcsICdwYWdlU2l6ZScsICdwYWdlU2l6ZVNlbGVjdG9yT3B0aW9ucycsICd0b3RhbCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1wYWdpbmF0aW9uJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydjdXJyZW50JywgJ2Ryb3Bkb3duUHJvcHMnLCAnZXh0ZW5zaW9ucycsICdsYXlvdXQnLCAncGFnZVNpemUnLCAncGFnZVNpemVTZWxlY3Rvck9wdGlvbnMnLCAndG90YWwnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhUGFnaW5hdGlvbiB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDaGFuZ2UnLCAnY2hhbmdlJywgJ3ZlZ2FQYWdlU2l6ZUNoYW5nZScsICdwYWdlU2l6ZUNoYW5nZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhUGFnaW5hdGlvblBhZ2VTZWxlY3Rvck1vYmlsZSBleHRlbmRzIENvbXBvbmVudHMuVmVnYVBhZ2luYXRpb25QYWdlU2VsZWN0b3JNb2JpbGUge31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydjdXJyZW50JywgJ3BhZ2VDb3VudCcsICd0b3RhbCcsICd0eXBlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXBhZ2luYXRpb24tcGFnZS1zZWxlY3Rvci1tb2JpbGUnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2N1cnJlbnQnLCAncGFnZUNvdW50JywgJ3RvdGFsJywgJ3R5cGUnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhUGFnaW5hdGlvblBhZ2VTZWxlY3Rvck1vYmlsZSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FQYWdpbmF0aW9uUGFnZVNpemVTZWxlY3Rvck1vYmlsZSBleHRlbmRzIENvbXBvbmVudHMuVmVnYVBhZ2luYXRpb25QYWdlU2l6ZVNlbGVjdG9yTW9iaWxlIHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnY3VycmVudCcsICdkcm9wZG93blByb3BzJywgJ3BhZ2VTaXplJywgJ3BhZ2VTaXplU2VsZWN0b3JPcHRpb25zJywgJ3RvdGFsJywgJ3R5cGUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtcGFnaW5hdGlvbi1wYWdlLXNpemUtc2VsZWN0b3ItbW9iaWxlJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydjdXJyZW50JywgJ2Ryb3Bkb3duUHJvcHMnLCAncGFnZVNpemUnLCAncGFnZVNpemVTZWxlY3Rvck9wdGlvbnMnLCAndG90YWwnLCAndHlwZSddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FQYWdpbmF0aW9uUGFnZVNpemVTZWxlY3Rvck1vYmlsZSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FQaWVDaGFydCBleHRlbmRzIENvbXBvbmVudHMuVmVnYVBpZUNoYXJ0IHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnb3B0aW9ucyddLFxuICBtZXRob2RzOiBbJ3JlUmVuZGVyJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXBpZS1jaGFydCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnb3B0aW9ucyddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FQaWVDaGFydCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FQb3BvdmVyIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhUG9wb3ZlciB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgcG9wb3ZlciBzaG93IGV2ZW50LiBAdmVnYVZlcnNpb24gMS4yMi4wXG4gICAqL1xuICB2ZWdhUG9wb3ZlclNob3c6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBwb3BvdmVyIHNob3cgZXZlbnQuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgcG9wb3ZlclNob3c6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBwb3BvdmVyIGhpZGUgZXZlbnQuIEB2ZWdhVmVyc2lvbiAxLjIyLjBcbiAgICovXG4gIHZlZ2FQb3BvdmVySGlkZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIHBvcG92ZXIgaGlkZSBldmVudC4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBwb3BvdmVySGlkZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnYWxpZ25tZW50JywgJ2lzU2NyZWVuUG9zaXRpb24nLCAncGFkZGluZycsICdwbGFjZW1lbnQnLCAncG9zaXRpb25SZWxhdGl2ZVRvJywgJ3Nob3dBcnJvdycsICdzaXplJywgJ3RyaWdnZXInXSxcbiAgbWV0aG9kczogWydzaG93JywgJ2hpZGUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtcG9wb3ZlcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnYWxpZ25tZW50JywgJ2lzU2NyZWVuUG9zaXRpb24nLCAncGFkZGluZycsICdwbGFjZW1lbnQnLCAncG9zaXRpb25SZWxhdGl2ZVRvJywgJ3Nob3dBcnJvdycsICdzaXplJywgJ3RyaWdnZXInXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhUG9wb3ZlciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FQb3BvdmVyU2hvdycsICdwb3BvdmVyU2hvdycsICd2ZWdhUG9wb3ZlckhpZGUnLCAncG9wb3ZlckhpZGUnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVBvcG92ZXJDb250ZW50Qm94IGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhUG9wb3ZlckNvbnRlbnRCb3gge31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydwYWRkaW5nJywgJ3Nob3dBcnJvdyddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1wb3BvdmVyLWNvbnRlbnQtYm94JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydwYWRkaW5nJywgJ3Nob3dBcnJvdyddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FQb3BvdmVyQ29udGVudEJveCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FQcm9ncmVzc1RyYWNrZXIgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FQcm9ncmVzc1RyYWNrZXIge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhhdCB0aGUgY3VycmVudCBzdGVwIGhhcyBjaGFuZ2VkLiBAdmVnYVZlcnNpb24gMS41LjBcbiAgICovXG4gIHZlZ2FDdXJyZW50U3RlcFVwZGF0ZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhhdCB0aGUgY3VycmVudCBzdGVwIGhhcyBjaGFuZ2VkLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGN1cnJlbnRTdGVwVXBkYXRlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydhbGxvd05vQ3VycmVudFN0ZXAnLCAnY2FuQ2xpY2tTdGVwJywgJ2NvbXBsZXRlZFN0ZXBBcnJheScsICdjb21wbGV0ZWRTdGVwcycsICdjdXJyZW50JywgJ2RpcmVjdGlvbicsICdzdGVwcyddLFxuICBtZXRob2RzOiBbJ25leHRTdGVwJywgJ3ByZXZTdGVwJywgJ3NldEN1cnJlbnQnLCAnZ2V0Q3VycmVudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1wcm9ncmVzcy10cmFja2VyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydhbGxvd05vQ3VycmVudFN0ZXAnLCAnY2FuQ2xpY2tTdGVwJywgJ2NvbXBsZXRlZFN0ZXBBcnJheScsICdjb21wbGV0ZWRTdGVwcycsICdjdXJyZW50JywgJ2RpcmVjdGlvbicsICdzdGVwcyddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FQcm9ncmVzc1RyYWNrZXIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ3VycmVudFN0ZXBVcGRhdGUnLCAnY3VycmVudFN0ZXBVcGRhdGUnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVByb2dyZXNzVHJhY2tlclN0ZXAgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FQcm9ncmVzc1RyYWNrZXJTdGVwIHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnY2xpY2thYmxlJywgJ3N0ZXBLZXknXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtcHJvZ3Jlc3MtdHJhY2tlci1zdGVwJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydjbGlja2FibGUnLCAnc3RlcEtleSddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FQcm9ncmVzc1RyYWNrZXJTdGVwIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVJhZGlvIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhUmFkaW8ge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGZvY3VzIGV2ZW50IG9mIHRoZSByYWRpbyBpbnB1dC4gQHZlZ2FWZXJzaW9uIDEuMC43XG4gICAqL1xuICB2ZWdhRm9jdXM6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBmb2N1cyBldmVudCBvZiB0aGUgcmFkaW8gaW5wdXQuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgZm9jdXM6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBibHVyIGV2ZW50IG9mIHRoZSByYWRpbyBpbnB1dC4gQHZlZ2FWZXJzaW9uIDEuMC43XG4gICAqL1xuICB2ZWdhQmx1cjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGJsdXIgZXZlbnQgb2YgdGhlIHJhZGlvIGlucHV0LiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGJsdXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjaGFuZ2UgaW4gdGhlIGNoZWNrIHN0YXR1c1xuICAgb2YgdGhlIHJhZGlvIGlucHV0LiBAdmVnYVZlcnNpb24gMS4wLjEwXG4gICAqL1xuICB2ZWdhQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8Ym9vbGVhbj4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNoYW5nZSBpbiB0aGUgY2hlY2sgc3RhdHVzXG4gICBvZiB0aGUgcmFkaW8gaW5wdXQuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgY2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8Ym9vbGVhbj4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnY2hlY2tlZCcsICdkaXNhYmxlZCcsICduYW1lJywgJ3NpemUnLCAndmFsdWUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtcmFkaW8nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2NoZWNrZWQnLCAnZGlzYWJsZWQnLCAnbmFtZScsICdzaXplJywgJ3ZhbHVlJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYVJhZGlvIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUZvY3VzJywgJ2ZvY3VzJywgJ3ZlZ2FCbHVyJywgJ2JsdXInLCAndmVnYUNoYW5nZScsICdjaGFuZ2UnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVJhZGlvR3JvdXAgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FSYWRpb0dyb3VwIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjaGFuZ2Ugb2YgdGhlXG4gICBjaGVja2VkIHJhZGlvIGJ1dHRvbiBpbiB0aGUgcmFkaW8gZ3JvdXAuIEB2ZWdhVmVyc2lvbiAxLjAuMTBcbiAgICovXG4gIHZlZ2FDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjaGFuZ2Ugb2YgdGhlXG4gICBjaGVja2VkIHJhZGlvIGJ1dHRvbiBpbiB0aGUgcmFkaW8gZ3JvdXAuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgY2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydhdXRvVmFsaWRhdGlvbicsICdkaXNhYmxlZCcsICdoaW50JywgJ2lzVmFsaWQnLCAnbGFiZWwnLCAnbmFtZScsICdvcHRpb25hbCcsICdyZXF1aXJlZCcsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWUnLCAndmVnYUZsZXhQcm9wJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXJhZGlvLWdyb3VwJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydhdXRvVmFsaWRhdGlvbicsICdkaXNhYmxlZCcsICdoaW50JywgJ2lzVmFsaWQnLCAnbGFiZWwnLCAnbmFtZScsICdvcHRpb25hbCcsICdyZXF1aXJlZCcsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWUnLCAndmVnYUZsZXhQcm9wJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYVJhZGlvR3JvdXAge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2hhbmdlJywgJ2NoYW5nZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhUmljaFRleHRDb250ZW50IGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhUmljaFRleHRDb250ZW50IHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnY29udGVudCcsICdleHRlbnNpb25zJ10sXG4gIG1ldGhvZHM6IFsndmVnYUZvY3VzJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXJpY2gtdGV4dC1jb250ZW50JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydjb250ZW50JywgJ2V4dGVuc2lvbnMnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhUmljaFRleHRDb250ZW50IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuaW1wb3J0IHR5cGUgeyBWZWdhUlRFQ29udGVudCBhcyBJVmVnYVJpY2hUZXh0RWRpdG9yVmVnYVJURUNvbnRlbnQgfSBmcm9tICdAZ2xvYmFscGF5bWVudHMvdmVnYS9kaXN0L3R5cGVzL2NvbXBvbmVudHMvdmVnYS1yaWNoLXRleHQtZWRpdG9yL2R0by9jb250ZW50LXN0YXRlJztcbmltcG9ydCB0eXBlIHsgVmVnYVJpY2hUZXh0RWRpdG9ySW1hZ2UgYXMgSVZlZ2FSaWNoVGV4dEVkaXRvclZlZ2FSaWNoVGV4dEVkaXRvckltYWdlIH0gZnJvbSAnQGdsb2JhbHBheW1lbnRzL3ZlZ2EvZGlzdC90eXBlcy9jb21wb25lbnRzL3ZlZ2EtcmljaC10ZXh0LWVkaXRvci9pbnRlcmZhY2UnO1xuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FSaWNoVGV4dEVkaXRvciBleHRlbmRzIENvbXBvbmVudHMuVmVnYVJpY2hUZXh0RWRpdG9yIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGEgdmFsdWUgY2hhbmdlLiBAdmVnYVZlcnNpb24gMi4zNC4wXG4gICAqL1xuICB2ZWdhQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FSaWNoVGV4dEVkaXRvclZlZ2FSVEVDb250ZW50Pj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBhIHZhbHVlIGNoYW5nZS4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMzQuMFxuICAgKi9cbiAgY2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FSaWNoVGV4dEVkaXRvclZlZ2FSVEVDb250ZW50Pj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBhbiBpbWFnZSBpbnNlcnRpb24gZXZlbnQuIEB2ZWdhVmVyc2lvbiAyLjM0LjBcbiAgICovXG4gIHZlZ2FJbWFnZUluc2VydGVkOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FSaWNoVGV4dEVkaXRvclZlZ2FSaWNoVGV4dEVkaXRvckltYWdlPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBhbiBpbWFnZSBpbnNlcnRpb24gZXZlbnQuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjM0LjBcbiAgICovXG4gIGltYWdlSW5zZXJ0ZWQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYVJpY2hUZXh0RWRpdG9yVmVnYVJpY2hUZXh0RWRpdG9ySW1hZ2U+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGEgc291cmNlIGNvZGUgY2hhbmdlIGV2ZW50LiBJdCB0cmlnZ2VycyB3aGVuIHRoZSBlZGl0b3IgbG9zZXMgZm9jdXMgaW4gc291cmNlIGVkaXQgbW9kZS4gQHZlZ2FWZXJzaW9uIDIuNzguMFxuICAgKi9cbiAgdmVnYVNvdXJjZUNvZGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGEgc291cmNlIGNvZGUgY2hhbmdlIGV2ZW50LiBJdCB0cmlnZ2VycyB3aGVuIHRoZSBlZGl0b3IgbG9zZXMgZm9jdXMgaW4gc291cmNlIGVkaXQgbW9kZS4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuNzguMFxuICAgKi9cbiAgc291cmNlQ29kZUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnYWxsb3dTb3VyY2VFZGl0JywgJ2F1dG9WYWxpZGF0aW9uJywgJ2Rpc2FibGVkJywgJ2V4dGVuc2lvbnMnLCAnaGludCcsICdpc1ZhbGlkJywgJ2xhYmVsJywgJ29wdGlvbmFsJywgJ3BsYWNlaG9sZGVyJywgJ3JlcXVpcmVkJywgJ3Jvd3MnLCAnc291cmNlRWRpdENvbmZpZycsICd0ZXh0U3R5bGVJdGVtcycsICd0b29sYmFySXRlbXMnLCAndmFsaWRhdGlvblJ1bGVzJywgJ3ZhbHVlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXJpY2gtdGV4dC1lZGl0b3InLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2FsbG93U291cmNlRWRpdCcsICdhdXRvVmFsaWRhdGlvbicsICdkaXNhYmxlZCcsICdleHRlbnNpb25zJywgJ2hpbnQnLCAnaXNWYWxpZCcsICdsYWJlbCcsICdvcHRpb25hbCcsICdwbGFjZWhvbGRlcicsICdyZXF1aXJlZCcsICdyb3dzJywgJ3NvdXJjZUVkaXRDb25maWcnLCAndGV4dFN0eWxlSXRlbXMnLCAndG9vbGJhckl0ZW1zJywgJ3ZhbGlkYXRpb25SdWxlcycsICd2YWx1ZSddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FSaWNoVGV4dEVkaXRvciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDaGFuZ2UnLCAnY2hhbmdlJywgJ3ZlZ2FJbWFnZUluc2VydGVkJywgJ2ltYWdlSW5zZXJ0ZWQnLCAndmVnYVNvdXJjZUNvZGVDaGFuZ2UnLCAnc291cmNlQ29kZUNoYW5nZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhUmljaFRleHRFZGl0b3JUb29sYmFyQnV0dG9uIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhUmljaFRleHRFZGl0b3JUb29sYmFyQnV0dG9uIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjbGljayBldmVudCBvZiB0aGUgYnV0dG9uLiBAdmVnYVZlcnNpb24gMi4zNC4wXG4gICAqL1xuICB2ZWdhQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjbGljayBldmVudCBvZiB0aGUgYnV0dG9uLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4zNC4wXG4gICAqL1xuICBjbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnYXJyb3dJY29uJywgJ2Rpc2FibGVkJywgJ2hpZGRlbicsICdpY29uJywgJ2ljb25Db2xvcicsICdzZWxlY3RlZCcsICdzaG93QXJyb3dJY29uJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXJpY2gtdGV4dC1lZGl0b3ItdG9vbGJhci1idXR0b24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2Fycm93SWNvbicsICdkaXNhYmxlZCcsICdoaWRkZW4nLCAnaWNvbicsICdpY29uQ29sb3InLCAnc2VsZWN0ZWQnLCAnc2hvd0Fycm93SWNvbiddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FSaWNoVGV4dEVkaXRvclRvb2xiYXJCdXR0b24ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2xpY2snLCAnY2xpY2snXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVJpY2hUZXh0RmluZFJlcGxhY2VQYW5lbCBleHRlbmRzIENvbXBvbmVudHMuVmVnYVJpY2hUZXh0RmluZFJlcGxhY2VQYW5lbCB7XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gYSBwYW5lbCBpbnB1dCB2YWx1ZSBjaGFuZ2VzLlxuUGF5bG9hZCBpbmNsdWRlcyB0aGUgaW5wdXQgdHlwZSAoYGtleXdvcmRgIG9yIGByZXBsYWNlYCkgYW5kIHZhbHVlLiBAdmVnYVZlcnNpb24gMi45Mi4wXG4gICAqL1xuICB2ZWdhQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyB0eXBlOiAna2V5d29yZCcgfCAncmVwbGFjZSc7IHZhbHVlOiBzdHJpbmcgfT4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIGEgcGFuZWwgYWN0aW9uIGJ1dHRvbiBpcyBjbGlja2VkLlxuUGF5bG9hZCBpbmNsdWRlcyB0aGUgYWN0aW9uIGtleSBhbmQgb3B0aW9uYWwgZGF0YS4gQHZlZ2FWZXJzaW9uIDIuOTIuMFxuICAgKi9cbiAgdmVnYUNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBhY3Rpb246IHN0cmluZzsgZGF0YT86IHVua25vd24gfT4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBtZXRob2RzOiBbJ3VwZGF0ZVJlc3VsdCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1yaWNoLXRleHQtZmluZC1yZXBsYWNlLXBhbmVsJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50Pidcbn0pXG5leHBvcnQgY2xhc3MgVmVnYVJpY2hUZXh0RmluZFJlcGxhY2VQYW5lbCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDaGFuZ2UnLCAndmVnYUNsaWNrJ10pO1xuICB9XG59XG5cbmltcG9ydCB0eXBlIHsgVmVnYVJpY2hUZXh0SW1hZ2VFZGl0b3JDaGFuZ2VEZXRhaWwgYXMgSVZlZ2FSaWNoVGV4dEltYWdlRWRpdG9yVmVnYVJpY2hUZXh0SW1hZ2VFZGl0b3JDaGFuZ2VEZXRhaWwgfSBmcm9tICdAZ2xvYmFscGF5bWVudHMvdmVnYS9kaXN0L3R5cGVzL2NvbXBvbmVudHMvdmVnYS1yaWNoLXRleHQtZWRpdG9yL3ZlZ2EtcmljaC10ZXh0LWltYWdlLWVkaXRvci90eXBlcyc7XG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVJpY2hUZXh0SW1hZ2VFZGl0b3IgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FSaWNoVGV4dEltYWdlRWRpdG9yIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGNvbnRlbnQgY2hhbmdlLiBAdmVnYVZlcnNpb24gMi4zNC4wXG4gICAqL1xuICB2ZWdhQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FSaWNoVGV4dEltYWdlRWRpdG9yVmVnYVJpY2hUZXh0SW1hZ2VFZGl0b3JDaGFuZ2VEZXRhaWw+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGNvbnRlbnQgY2hhbmdlLiBAdmVnYVZlcnNpb24gMi4zNC4wXG4gICAqL1xuICBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYVJpY2hUZXh0SW1hZ2VFZGl0b3JWZWdhUmljaFRleHRJbWFnZUVkaXRvckNoYW5nZURldGFpbD4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnYWx0JywgJ3NpemUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtcmljaC10ZXh0LWltYWdlLWVkaXRvcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnYWx0JywgJ3NpemUnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhUmljaFRleHRJbWFnZUVkaXRvciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDaGFuZ2UnLCAnY2hhbmdlJ10pO1xuICB9XG59XG5cbmltcG9ydCB0eXBlIHsgVmVnYVJpY2hUZXh0TGlua0VkaXRvckNoYW5nZURldGFpbCBhcyBJVmVnYVJpY2hUZXh0TGlua0VkaXRvclZlZ2FSaWNoVGV4dExpbmtFZGl0b3JDaGFuZ2VEZXRhaWwgfSBmcm9tICdAZ2xvYmFscGF5bWVudHMvdmVnYS9kaXN0L3R5cGVzL2NvbXBvbmVudHMvdmVnYS1yaWNoLXRleHQtZWRpdG9yL3ZlZ2EtcmljaC10ZXh0LWxpbmstZWRpdG9yL3R5cGVzJztcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhUmljaFRleHRMaW5rRWRpdG9yIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhUmljaFRleHRMaW5rRWRpdG9yIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGNvbnRlbnQgY2hhbmdlLiBAdmVnYVZlcnNpb24gMi4zNC4wXG4gICAqL1xuICB2ZWdhQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FSaWNoVGV4dExpbmtFZGl0b3JWZWdhUmljaFRleHRMaW5rRWRpdG9yQ2hhbmdlRGV0YWlsPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBjb250ZW50IGNoYW5nZS4gQHZlZ2FWZXJzaW9uIDIuMzQuMFxuICAgKi9cbiAgY2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FSaWNoVGV4dExpbmtFZGl0b3JWZWdhUmljaFRleHRMaW5rRWRpdG9yQ2hhbmdlRGV0YWlsPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydyZWNvcmQnLCAncmVzZXRTdGF0dXNBZnRlckhpZGUnLCAnc3RhdHVzJywgJ3RhcmdldCddLFxuICBtZXRob2RzOiBbJ3Nob3cnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtcmljaC10ZXh0LWxpbmstZWRpdG9yJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydyZWNvcmQnLCAncmVzZXRTdGF0dXNBZnRlckhpZGUnLCAnc3RhdHVzJywgJ3RhcmdldCddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FSaWNoVGV4dExpbmtFZGl0b3Ige1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2hhbmdlJywgJ2NoYW5nZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhUmljaFRleHRTcGVjaWFsQ2hhcmFjdGVyc1BhbmVsIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhUmljaFRleHRTcGVjaWFsQ2hhcmFjdGVyc1BhbmVsIHtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiBhIGNoYXJhY3RlciBjZWxsIGlzIGNsaWNrZWQuIFRoZSBwYXlsb2FkIGlzIHRoZSBVbmljb2RlIGNoYXJhY3RlciBzdHJpbmcuIEB2ZWdhVmVyc2lvbiAyLjg4LjBcbiAgICovXG4gIHZlZ2FDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIGEgY2hhcmFjdGVyIGNlbGwgaXMgY2xpY2tlZC4gVGhlIHBheWxvYWQgaXMgdGhlIFVuaWNvZGUgY2hhcmFjdGVyIHN0cmluZy4gQHZlZ2FWZXJzaW9uIDIuODguMFxuICAgKi9cbiAgY2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2NhdGVnb3JpZXMnXSxcbiAgbWV0aG9kczogWydyZXNldFBhbmVsJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXJpY2gtdGV4dC1zcGVjaWFsLWNoYXJhY3RlcnMtcGFuZWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2NhdGVnb3JpZXMnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhUmljaFRleHRTcGVjaWFsQ2hhcmFjdGVyc1BhbmVsIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUNsaWNrJywgJ2NsaWNrJ10pO1xuICB9XG59XG5cbmltcG9ydCB0eXBlIHsgUlRFVGFibGVQcm9wZXJ0aWVzVHlwZSBhcyBJVmVnYVJpY2hUZXh0VGFibGVQcm9wZXJ0aWVzUlRFVGFibGVQcm9wZXJ0aWVzVHlwZSB9IGZyb20gJ0BnbG9iYWxwYXltZW50cy92ZWdhL2Rpc3QvdHlwZXMvY29tcG9uZW50cy92ZWdhLXJpY2gtdGV4dC1lZGl0b3IvaW50ZXJmYWNlJztcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhUmljaFRleHRUYWJsZVByb3BlcnRpZXMgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FSaWNoVGV4dFRhYmxlUHJvcGVydGllcyB7XG4gIC8qKlxuICAgKiAgQHZlZ2FWZXJzaW9uIDIuNzkuMFxuICAgKi9cbiAgdmVnYUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhUmljaFRleHRUYWJsZVByb3BlcnRpZXNSVEVUYWJsZVByb3BlcnRpZXNUeXBlPj47XG4gIC8qKlxuICAgKiAgQHZlZ2FWZXJzaW9uIDIuNzkuMFxuICAgKi9cbiAgdmVnYUNhbmNlbDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhUmljaFRleHRUYWJsZVByb3BlcnRpZXNSVEVUYWJsZVByb3BlcnRpZXNUeXBlPj47XG4gIC8qKlxuICAgKiAgQHZlZ2FWZXJzaW9uIDIuNzkuMFxuICAgKi9cbiAgdmVnYVNhdmU6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx1bmtub3duPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydjb2xvcnMnLCAnZGVmYXVsdFZhbHVlJywgJ3N0eWxlTWFwJywgJ3R5cGUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtcmljaC10ZXh0LXRhYmxlLXByb3BlcnRpZXMnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2NvbG9ycycsICdkZWZhdWx0VmFsdWUnLCAnc3R5bGVNYXAnLCAndHlwZSddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FSaWNoVGV4dFRhYmxlUHJvcGVydGllcyB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDaGFuZ2UnLCAndmVnYUNhbmNlbCcsICd2ZWdhU2F2ZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhUmljaFRleHRUYWJsZVNlbGVjdGlvbldpZGdldCBleHRlbmRzIENvbXBvbmVudHMuVmVnYVJpY2hUZXh0VGFibGVTZWxlY3Rpb25XaWRnZXQge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgYSBkZWxldGUgYWN0aW9uIG9uIHRoZSB3aWRnZXQuIEB2ZWdhVmVyc2lvbiAyLjc5LjBcbiAgICovXG4gIHZlZ2FSZW1vdmU6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZFxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtcmljaC10ZXh0LXRhYmxlLXNlbGVjdGlvbi13aWRnZXQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+J1xufSlcbmV4cG9ydCBjbGFzcyBWZWdhUmljaFRleHRUYWJsZVNlbGVjdGlvbldpZGdldCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FSZW1vdmUnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVJpY2hUZXh0VGFibGVTZXR0aW5nIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhUmljaFRleHRUYWJsZVNldHRpbmcge1xuICAvKipcbiAgICogIEB2ZWdhVmVyc2lvbiAyLjc5LjBcbiAgICovXG4gIHZlZ2FDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEFycmF5PHN0cmluZz4+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2hhc0NhcHRpb24nLCAnc2VsZWN0ZWRDZWxscycsICd0YXJnZXQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtcmljaC10ZXh0LXRhYmxlLXNldHRpbmcnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2hhc0NhcHRpb24nLCAnc2VsZWN0ZWRDZWxscycsICd0YXJnZXQnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhUmljaFRleHRUYWJsZVNldHRpbmcge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2xpY2snXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVNlY3Rpb25UaXRsZSBleHRlbmRzIENvbXBvbmVudHMuVmVnYVNlY3Rpb25UaXRsZSB7fVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2Rlc2NyaXB0aW9uJywgJ2ljb24nLCAnaWNvbkFsaWduJywgJ2ljb25Db2xvcicsICdzaXplJywgJ3RpdGxlVGV4dCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1zZWN0aW9uLXRpdGxlJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydkZXNjcmlwdGlvbicsICdpY29uJywgJ2ljb25BbGlnbicsICdpY29uQ29sb3InLCAnc2l6ZScsICd0aXRsZVRleHQnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhU2VjdGlvblRpdGxlIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVNlZ21lbnRDb250cm9sIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhU2VnbWVudENvbnRyb2wge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgY2hhbmdlc1xuICAgaW4gdGhlIHNlbGVjdGVkIHNlZ21lbnQuIEB2ZWdhVmVyc2lvbiAyLjMuMFxuICAgKi9cbiAgdmVnYUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQSBuYXRpdmUgZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgY2hhbmdlc1xuICAgaW4gdGhlIHNlbGVjdGVkIHNlZ21lbnQuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjMuMFxuICAgKi9cbiAgY2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydibG9jaycsICdzZWdtZW50cycsICdzZWxlY3RlZCcsICdzaXplJywgJ3ZhcmlhbnQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2Etc2VnbWVudC1jb250cm9sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydibG9jaycsICdzZWdtZW50cycsICdzZWxlY3RlZCcsICdzaXplJywgJ3ZhcmlhbnQnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhU2VnbWVudENvbnRyb2wge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2hhbmdlJywgJ2NoYW5nZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhU2VsZWN0aW9uQ2hpcCBleHRlbmRzIENvbXBvbmVudHMuVmVnYVNlbGVjdGlvbkNoaXAge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgY2hhbmdlcyBpbiB0aGUgdmFsdWUgb2YgdGhlIHNlbGVjdGlvbiBjaGlwLFxuICAgd2hldGhlciB0cmlnZ2VyZWQgcHJvZ3JhbW1hdGljYWxseSBvciB0aHJvdWdoIHVzZXIgaW50ZXJhY3Rpb24uIEB2ZWdhVmVyc2lvbiAyLjIyLjBcbiAgICovXG4gIHZlZ2FDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGNoYW5nZXMgaW4gdGhlIHZhbHVlIG9mIHRoZSBzZWxlY3Rpb24gY2hpcCxcbiAgIHdoZXRoZXIgdHJpZ2dlcmVkIHByb2dyYW1tYXRpY2FsbHkgb3IgdGhyb3VnaCB1c2VyIGludGVyYWN0aW9uLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4yMi4wXG4gICAqL1xuICBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2Jsb2NrJywgJ2NoZWNrZWQnLCAnZGlzYWJsZWQnLCAnZGlzYWJsZWRUb29sdGlwJywgJ2xhYmVsJywgJ3NpemUnLCAnc3dhdGNoQ29sb3InLCAndmFsdWUnLCAndmFyaWFudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1zZWxlY3Rpb24tY2hpcCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnYmxvY2snLCAnY2hlY2tlZCcsICdkaXNhYmxlZCcsICdkaXNhYmxlZFRvb2x0aXAnLCAnbGFiZWwnLCAnc2l6ZScsICdzd2F0Y2hDb2xvcicsICd2YWx1ZScsICd2YXJpYW50J11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYVNlbGVjdGlvbkNoaXAge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2hhbmdlJywgJ2NoYW5nZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhU2VsZWN0aW9uQ2hpcEdyb3VwIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhU2VsZWN0aW9uQ2hpcEdyb3VwIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGNoYW5nZXMgaW4gdGhlIHZhbHVlIG9mIHRoZSBzZWxlY3Rpb24gY2hpcCBncm91cCxcbiAgIHdoZXRoZXIgdHJpZ2dlcmVkIHByb2dyYW1tYXRpY2FsbHkgb3IgdGhyb3VnaCB1c2VyIGludGVyYWN0aW9uLiBAdmVnYVZlcnNpb24gMi4yMi4wXG4gICAqL1xuICB2ZWdhQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBjaGFuZ2VzIGluIHRoZSB2YWx1ZSBvZiB0aGUgc2VsZWN0aW9uIGNoaXAgZ3JvdXAsXG4gICB3aGV0aGVyIHRyaWdnZXJlZCBwcm9ncmFtbWF0aWNhbGx5IG9yIHRocm91Z2ggdXNlciBpbnRlcmFjdGlvbi4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMjIuMFxuICAgKi9cbiAgY2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydkaXNhYmxlZCcsICdoaW50JywgJ2lzVmFsaWQnLCAnbGFiZWwnLCAnb3B0aW9uYWwnLCAncmVxdWlyZWQnLCAnc2VsZWN0VHlwZScsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2Etc2VsZWN0aW9uLWNoaXAtZ3JvdXAnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2Rpc2FibGVkJywgJ2hpbnQnLCAnaXNWYWxpZCcsICdsYWJlbCcsICdvcHRpb25hbCcsICdyZXF1aXJlZCcsICdzZWxlY3RUeXBlJywgJ3ZhbGlkYXRpb25SdWxlcycsICd2YWx1ZSddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FTZWxlY3Rpb25DaGlwR3JvdXAge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2hhbmdlJywgJ2NoYW5nZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhU2VsZWN0aW9uVGlsZSBleHRlbmRzIENvbXBvbmVudHMuVmVnYVNlbGVjdGlvblRpbGUge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgY2hhbmdlcyBpbiB0aGUgdmFsdWUgb2YgdGhlIHNlbGVjdGlvbiB0aWxlLFxuICAgd2hldGhlciB0cmlnZ2VyZWQgcHJvZ3JhbW1hdGljYWxseSBvciB0aHJvdWdoIHVzZXIgaW50ZXJhY3Rpb24uIEB2ZWdhVmVyc2lvbiAyLjcuMFxuICAgKi9cbiAgdmVnYUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgY2hhbmdlcyBpbiB0aGUgdmFsdWUgb2YgdGhlIHNlbGVjdGlvbiB0aWxlLFxuICAgd2hldGhlciB0cmlnZ2VyZWQgcHJvZ3JhbW1hdGljYWxseSBvciB0aHJvdWdoIHVzZXIgaW50ZXJhY3Rpb24uIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjcuMFxuICAgKi9cbiAgY2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydjaGVja2VkJywgJ2Rpc2FibGVkJywgJ25vdGUnLCAncHJlZml4SWNvbicsICdzZWxlY3RUeXBlJywgJ3RpdGxlVGV4dCcsICd2YWx1ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1zZWxlY3Rpb24tdGlsZScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnY2hlY2tlZCcsICdkaXNhYmxlZCcsICdub3RlJywgJ3ByZWZpeEljb24nLCAnc2VsZWN0VHlwZScsICd0aXRsZVRleHQnLCAndmFsdWUnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhU2VsZWN0aW9uVGlsZSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDaGFuZ2UnLCAnY2hhbmdlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FTZWxlY3Rpb25UaWxlR3JvdXAgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FTZWxlY3Rpb25UaWxlR3JvdXAge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgY2hhbmdlcyBpbiB0aGUgdmFsdWUgb2YgdGhlIHNlbGVjdGlvbiB0aWxlIGdyb3VwLFxuICAgd2hldGhlciB0cmlnZ2VyZWQgcHJvZ3JhbW1hdGljYWxseSBvciB0aHJvdWdoIHVzZXIgaW50ZXJhY3Rpb24uIEB2ZWdhVmVyc2lvbiAyLjcuMFxuICAgKi9cbiAgdmVnYUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgY2hhbmdlcyBpbiB0aGUgdmFsdWUgb2YgdGhlIHNlbGVjdGlvbiB0aWxlIGdyb3VwLFxuICAgd2hldGhlciB0cmlnZ2VyZWQgcHJvZ3JhbW1hdGljYWxseSBvciB0aHJvdWdoIHVzZXIgaW50ZXJhY3Rpb24uIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjcuMFxuICAgKi9cbiAgY2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydkaXNhYmxlZCcsICdkaXN0cmlidXRlRXZlbmx5JywgJ2hpbnQnLCAnaXNWYWxpZCcsICdsYWJlbCcsICdsYXlvdXQnLCAnb3B0aW9uYWwnLCAncmVxdWlyZWQnLCAnc2VsZWN0VHlwZScsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2Etc2VsZWN0aW9uLXRpbGUtZ3JvdXAnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2Rpc2FibGVkJywgJ2Rpc3RyaWJ1dGVFdmVubHknLCAnaGludCcsICdpc1ZhbGlkJywgJ2xhYmVsJywgJ2xheW91dCcsICdvcHRpb25hbCcsICdyZXF1aXJlZCcsICdzZWxlY3RUeXBlJywgJ3ZhbGlkYXRpb25SdWxlcycsICd2YWx1ZSddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FTZWxlY3Rpb25UaWxlR3JvdXAge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2hhbmdlJywgJ2NoYW5nZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhU2lkZW5hdiBleHRlbmRzIENvbXBvbmVudHMuVmVnYVNpZGVuYXYge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNvbXBsZXRpb24gb2YgYSBuYXZpZ2F0aW9uIG1lbnUgc3RhdGUgY2hhbmdlIChvcGVuIG9yIGNsb3NlKS4gQHZlZ2FWZXJzaW9uIDEsIHYyLjI5LjBcbiAgICovXG4gIHZlZ2FTdGF0ZVVwZGF0ZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNvbXBsZXRpb24gb2YgYSBuYXZpZ2F0aW9uIG1lbnUgc3RhdGUgY2hhbmdlIChvcGVuIG9yIGNsb3NlKS4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDEsIHYyLjI5LjBcbiAgICovXG4gIHN0YXRlVXBkYXRlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydmb290bm90ZScsICdoZWFkZXJDb25maWcnLCAnb3BlbkJ5RGVmYXVsdCcsICdzb3VyY2UnXSxcbiAgbWV0aG9kczogWyd0b2dnbGUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2Etc2lkZW5hdicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnZm9vdG5vdGUnLCAnaGVhZGVyQ29uZmlnJywgJ29wZW5CeURlZmF1bHQnLCAnc291cmNlJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYVNpZGVuYXYge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhU3RhdGVVcGRhdGUnLCAnc3RhdGVVcGRhdGUnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVNpZGVuYXZHcm91cCBleHRlbmRzIENvbXBvbmVudHMuVmVnYVNpZGVuYXZHcm91cCB7fVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2ljb24nLCAnbGFiZWwnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2Etc2lkZW5hdi1ncm91cCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnaWNvbicsICdsYWJlbCddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FTaWRlbmF2R3JvdXAge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhU2lkZW5hdkxpbmsgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FTaWRlbmF2TGluayB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBhYm91dCB0aGUgb2NjdXJyZW5jZSBvZiBhIGNsaWNrIGV2ZW50LiBAdmVnYVZlcnNpb24gMSwgdjIuMjkuMFxuICAgKi9cbiAgdmVnYUNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8YW55Pj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBhYm91dCB0aGUgb2NjdXJyZW5jZSBvZiBhIGNsaWNrIGV2ZW50LiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMSwgdjIuMjkuMFxuICAgKi9cbiAgY2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2ljb24nLCAnc2VsZWN0ZWQnLCAnc2hvd1NpZGVCYXJPbkNsaWNrTGluaycsICd1cmwnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2Etc2lkZW5hdi1saW5rJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydpY29uJywgJ3NlbGVjdGVkJywgJ3Nob3dTaWRlQmFyT25DbGlja0xpbmsnLCAndXJsJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYVNpZGVuYXZMaW5rIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUNsaWNrJywgJ2NsaWNrJ10pO1xuICB9XG59XG5cbmltcG9ydCB0eXBlIHsgVmVnYVNpZ25hdHVyZVZhbHVlIGFzIElWZWdhU2lnbmF0dXJlQ2FwdHVyZVZlZ2FTaWduYXR1cmVWYWx1ZSB9IGZyb20gJ0BnbG9iYWxwYXltZW50cy92ZWdhL2Rpc3QvdHlwZXMvY29tcG9uZW50cy92ZWdhLXNpZ25hdHVyZS1jYXB0dXJlL3R5cGVzJztcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhU2lnbmF0dXJlQ2FwdHVyZSBleHRlbmRzIENvbXBvbmVudHMuVmVnYVNpZ25hdHVyZUNhcHR1cmUge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgYSB2YWx1ZSBjaGFuZ2UuIEB2ZWdhVmVyc2lvbiAyLjE5LjBcbiAgICovXG4gIHZlZ2FDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYVNpZ25hdHVyZUNhcHR1cmVWZWdhU2lnbmF0dXJlVmFsdWU+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGEgdmFsdWUgY2hhbmdlLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4xOS4wXG4gICAqL1xuICBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYVNpZ25hdHVyZUNhcHR1cmVWZWdhU2lnbmF0dXJlVmFsdWU+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2F1dG9WYWxpZGF0aW9uJywgJ2Rpc2FibGVkJywgJ2hlaWdodCcsICdpc1ZhbGlkJywgJ2xhYmVsJywgJ21vZGUnLCAnb3B0aW9uYWwnLCAncGxhY2Vob2xkZXInLCAncGxhY2Vob2xkZXJJY29uJywgJ3JlcXVpcmVkJywgJ3Nob3dDbGVhckJ0bicsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWUnXSxcbiAgbWV0aG9kczogWydjbGVhciddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1zaWduYXR1cmUtY2FwdHVyZScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnYXV0b1ZhbGlkYXRpb24nLCAnZGlzYWJsZWQnLCAnaGVpZ2h0JywgJ2lzVmFsaWQnLCAnbGFiZWwnLCAnbW9kZScsICdvcHRpb25hbCcsICdwbGFjZWhvbGRlcicsICdwbGFjZWhvbGRlckljb24nLCAncmVxdWlyZWQnLCAnc2hvd0NsZWFyQnRuJywgJ3ZhbGlkYXRpb25SdWxlcycsICd2YWx1ZSddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FTaWduYXR1cmVDYXB0dXJlIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUNoYW5nZScsICdjaGFuZ2UnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVNrZWxldG9uIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhU2tlbGV0b24ge31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydhbmltYXRlZCcsICdjb3JuZXJzJywgJ2hlaWdodCcsICd0eXBlJywgJ3dpZHRoJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXNrZWxldG9uJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydhbmltYXRlZCcsICdjb3JuZXJzJywgJ2hlaWdodCcsICd0eXBlJywgJ3dpZHRoJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYVNrZWxldG9uIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVNsb3RDb250YWluZXIgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FTbG90Q29udGFpbmVyIHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1zbG90LWNvbnRhaW5lcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FTbG90Q29udGFpbmVyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVN0ZXBwZXIgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FTdGVwcGVyIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGNoYW5nZXMgaW4gdGhlIHZhbHVlIG9mIHRoZSBzdGVwcGVyIGNvbXBvbmVudC4gQHZlZ2FWZXJzaW9uIDEuMC44XG4gICAqL1xuICB2ZWdhQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8bnVtYmVyPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBjaGFuZ2VzIGluIHRoZSB2YWx1ZSBvZiB0aGUgc3RlcHBlciBjb21wb25lbnQuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgY2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8bnVtYmVyPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydhdXRvVmFsaWRhdGlvbicsICdidXR0b25WYXJpYW50JywgJ2Rpc2FibGVkJywgJ2lucHV0RGlzYWJsZWQnLCAnaXNWYWxpZCcsICdsYWJlbCcsICdtYXgnLCAnbWluJywgJ3N0ZXBwZXJJZCcsICd2YWx1ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1zdGVwcGVyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydhdXRvVmFsaWRhdGlvbicsICdidXR0b25WYXJpYW50JywgJ2Rpc2FibGVkJywgJ2lucHV0RGlzYWJsZWQnLCAnaXNWYWxpZCcsICdsYWJlbCcsICdtYXgnLCAnbWluJywgJ3N0ZXBwZXJJZCcsICd2YWx1ZSddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FTdGVwcGVyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUNoYW5nZScsICdjaGFuZ2UnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVRhYkdyb3VwIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhVGFiR3JvdXAge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNsaWNrIGV2ZW50IG9mIGEgdGFiXG4gICBpbiB0aGUgdGFiIGdyb3VwLiBAdmVnYVZlcnNpb24gMS4xLjBcbiAgICovXG4gIHZlZ2FDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNsaWNrIGV2ZW50IG9mIGEgdGFiXG4gICBpbiB0aGUgdGFiIGdyb3VwLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydnYXAnLCAnb3ZlcmZsb3cnLCAncG9zaXRpb25SZWxhdGl2ZVRvJywgJ3NlbGVjdGVkVGFiRGF0YVRhcmdldCcsICdzaG93Q2xvc2VCdXR0b24nLCAndGFiSXRlbXMnLCAndmFyaWFudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS10YWItZ3JvdXAnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2dhcCcsICdvdmVyZmxvdycsICdwb3NpdGlvblJlbGF0aXZlVG8nLCAnc2VsZWN0ZWRUYWJEYXRhVGFyZ2V0JywgJ3Nob3dDbG9zZUJ1dHRvbicsICd0YWJJdGVtcycsICd2YXJpYW50J11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYVRhYkdyb3VwIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUNsaWNrJywgJ2NsaWNrJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FUYWJHcm91cFBhbmVsIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhVGFiR3JvdXBQYW5lbCB7fVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2lzQWN0aXZlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXRhYi1ncm91cC1wYW5lbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnaXNBY3RpdmUnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhVGFiR3JvdXBQYW5lbCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cbmltcG9ydCB0eXBlIHsgVmVnYVRhYmxlQ2hhbmdlUHJvcFR5cGUgYXMgSVZlZ2FUYWJsZVZlZ2FUYWJsZUNoYW5nZVByb3BUeXBlIH0gZnJvbSAnQGdsb2JhbHBheW1lbnRzL3ZlZ2EvZGlzdC90eXBlcy9jb21wb25lbnRzL3ZlZ2EtdGFibGUvaW50ZXJmYWNlJztcbmltcG9ydCB0eXBlIHsgVmVnYVRhYmxlUm93Q2xpY2tQcm9wVHlwZSBhcyBJVmVnYVRhYmxlVmVnYVRhYmxlUm93Q2xpY2tQcm9wVHlwZSB9IGZyb20gJ0BnbG9iYWxwYXltZW50cy92ZWdhL2Rpc3QvdHlwZXMvY29tcG9uZW50cy92ZWdhLXRhYmxlL2ludGVyZmFjZSc7XG5pbXBvcnQgdHlwZSB7IFZlZ2FUYWJsZVJvd0V4cGFuZEV2ZW50RGV0YWlsIGFzIElWZWdhVGFibGVWZWdhVGFibGVSb3dFeHBhbmRFdmVudERldGFpbCB9IGZyb20gJ0BnbG9iYWxwYXltZW50cy92ZWdhL2Rpc3QvdHlwZXMvY29tcG9uZW50cy92ZWdhLXRhYmxlL2ludGVyZmFjZSc7XG5pbXBvcnQgdHlwZSB7IFZlZ2FUYWJsZVJvd1NlbGVjdFByb3AgYXMgSVZlZ2FUYWJsZVZlZ2FUYWJsZVJvd1NlbGVjdFByb3AgfSBmcm9tICdAZ2xvYmFscGF5bWVudHMvdmVnYS9kaXN0L3R5cGVzL2NvbXBvbmVudHMvdmVnYS10YWJsZS9pbnRlcmZhY2UnO1xuaW1wb3J0IHR5cGUgeyBWZWdhVGFibGVTZWxlY3RBbGxQcm9wIGFzIElWZWdhVGFibGVWZWdhVGFibGVTZWxlY3RBbGxQcm9wIH0gZnJvbSAnQGdsb2JhbHBheW1lbnRzL3ZlZ2EvZGlzdC90eXBlcy9jb21wb25lbnRzL3ZlZ2EtdGFibGUvaW50ZXJmYWNlJztcbmltcG9ydCB0eXBlIHsgVmVnYVRhYmxlUm93U2VsZWN0RXZlbnREZXRhaWwgYXMgSVZlZ2FUYWJsZVZlZ2FUYWJsZVJvd1NlbGVjdEV2ZW50RGV0YWlsIH0gZnJvbSAnQGdsb2JhbHBheW1lbnRzL3ZlZ2EvZGlzdC90eXBlcy9jb21wb25lbnRzL3ZlZ2EtdGFibGUvaW50ZXJmYWNlJztcbmltcG9ydCB0eXBlIHsgVmVnYVRhYmxlUm93U2VsZWN0QWxsRXZlbnREZXRhaWwgYXMgSVZlZ2FUYWJsZVZlZ2FUYWJsZVJvd1NlbGVjdEFsbEV2ZW50RGV0YWlsIH0gZnJvbSAnQGdsb2JhbHBheW1lbnRzL3ZlZ2EvZGlzdC90eXBlcy9jb21wb25lbnRzL3ZlZ2EtdGFibGUvaW50ZXJmYWNlJztcbmltcG9ydCB0eXBlIHsgRHJhZ0Ryb3BFdmVudFBheWxvYWQgYXMgSVZlZ2FUYWJsZURyYWdEcm9wRXZlbnRQYXlsb2FkIH0gZnJvbSAnQGdsb2JhbHBheW1lbnRzL3ZlZ2EvZGlzdC90eXBlcy9jb21wb25lbnRzL3ZlZ2EtdGFibGUvaW50ZXJmYWNlJztcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhVGFibGUgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FUYWJsZSB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBjaGFuZ2VzIGluIHRoZSB0YWJsZSBkYXRhLiBAdmVnYVZlcnNpb24gMS4zLjBcbiAgICovXG4gIHZlZ2FDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYVRhYmxlVmVnYVRhYmxlQ2hhbmdlUHJvcFR5cGU+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGNoYW5nZXMgaW4gdGhlIHRhYmxlIGRhdGEuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgY2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FUYWJsZVZlZ2FUYWJsZUNoYW5nZVByb3BUeXBlPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgY2xpY2sgZXZlbnQgb2YgYSByb3dcbiAgIGluIHRoZSB0YWJsZS4gQHZlZ2FWZXJzaW9uIDEuMy4wXG4gICAqL1xuICB2ZWdhUm93Q2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYVRhYmxlVmVnYVRhYmxlUm93Q2xpY2tQcm9wVHlwZT4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNsaWNrIGV2ZW50IG9mIGEgcm93XG4gICBpbiB0aGUgdGFibGUuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgcm93Q2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYVRhYmxlVmVnYVRhYmxlUm93Q2xpY2tQcm9wVHlwZT4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGV4cGFuZGVkIGV2ZW50IG9mIGEgcm93XG4gICBpbiB0aGUgdGFibGUuIEB2ZWdhVmVyc2lvbiAyLjI0LjBcbiAgICovXG4gIHZlZ2FSb3dFeHBhbmQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYVRhYmxlVmVnYVRhYmxlUm93RXhwYW5kRXZlbnREZXRhaWw+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBleHBhbmRlZCBldmVudCBvZiBhIHJvd1xuICAgaW4gdGhlIHRhYmxlLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4yNC4wXG4gICAqL1xuICByb3dFeHBhbmQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYVRhYmxlVmVnYVRhYmxlUm93RXhwYW5kRXZlbnREZXRhaWw+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHdoZW4gdGhlIHJvdyBzZWxlY3Rpb24gY2hhbmdlcy4gQHZlZ2FWZXJzaW9uIDEuMTguMFxuICAgKi9cbiAgdmVnYVNlbGVjdENoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhVGFibGVWZWdhVGFibGVSb3dTZWxlY3RQcm9wPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB3aGVuIHRoZSBzZWxlY3Rpb24gc3RhdGUgb2YgYWxsIHJvd3MgY2hhbmdlcy4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBzZWxlY3RDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYVRhYmxlVmVnYVRhYmxlUm93U2VsZWN0UHJvcD4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgY2hhbmdlcyBpbiB0aGUgc2VsZWN0aW9uIG9mIGNoZWNrYm94ZXMsXG4gICBwYXJ0aWN1bGFybHkgdGhlIFwiU2VsZWN0IEFsbFwiIGNoZWNrYm94IGluIHRoZSB0YWJsZSBoZWFkZXIuIEB2ZWdhVmVyc2lvbiAxLjE4LjBcbiAgICovXG4gIHZlZ2FTZWxlY3RBbGxDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYVRhYmxlVmVnYVRhYmxlU2VsZWN0QWxsUHJvcD4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgY2hhbmdlcyBpbiB0aGUgc2VsZWN0aW9uIG9mIGNoZWNrYm94ZXMsXG4gICBwYXJ0aWN1bGFybHkgdGhlIFwiU2VsZWN0IEFsbFwiIGNoZWNrYm94IGluIHRoZSB0YWJsZSBoZWFkZXIuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgc2VsZWN0QWxsQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FUYWJsZVZlZ2FUYWJsZVNlbGVjdEFsbFByb3A+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGJlZm9yZSB0aGUgc2VsZWN0ZWQgY2hhbmdlIHdoZW4gc2VsZWN0L2Rlc2VsZWN0IG9uZSByb3cgQHZlZ2FWZXJzaW9uIDIuMjMuMFxuICAgKi9cbiAgdmVnYVJvd1NlbGVjdDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhVGFibGVWZWdhVGFibGVSb3dTZWxlY3RFdmVudERldGFpbD4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgYmVmb3JlIHRoZSBzZWxlY3RlZCBjaGFuZ2Ugd2hlbiBzZWxlY3QvZGVzZWxlY3Qgb25lIHJvdyBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4yMy4wXG4gICAqL1xuICByb3dTZWxlY3Q6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYVRhYmxlVmVnYVRhYmxlUm93U2VsZWN0RXZlbnREZXRhaWw+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGJlZm9yZSB0aGUgc2VsZWN0ZWQgY2hhbmdlIHdoZW4gc2VsZWN0L2Rlc2VsZWN0IGFsbCByb3dzIEB2ZWdhVmVyc2lvbiAyLjIzLjBcbiAgICovXG4gIHZlZ2FSb3dTZWxlY3RBbGw6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYVRhYmxlVmVnYVRhYmxlUm93U2VsZWN0QWxsRXZlbnREZXRhaWw+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGJlZm9yZSB0aGUgc2VsZWN0ZWQgY2hhbmdlIHdoZW4gc2VsZWN0L2Rlc2VsZWN0IGFsbCByb3dzIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjIzLjBcbiAgICovXG4gIHJvd1NlbGVjdEFsbDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhVGFibGVWZWdhVGFibGVSb3dTZWxlY3RBbGxFdmVudERldGFpbD4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgd2hlbiBhIHJvdyBpcyBkcmFnIGFuZCBkcm9wLFxuICAgaXQgaW5jbHVkZSBmdWxsIGxpZmVjeWNsZSwgbGlrZSBkcmFnIHN0YXJ0LCBkcmFnLCBkcmFnIGVudGVyLCBkcmFnIGxlYXZlLCBkcmFnIG92ZXIsIGRyb3AgYW5kIGRyYWcgZW5kLiBAdmVnYVZlcnNpb24gMi44NS4wXG4gICAqL1xuICB2ZWdhUm93RHJhZ0Ryb3A6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYVRhYmxlRHJhZ0Ryb3BFdmVudFBheWxvYWQ+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHdoZW4gYSByb3cgaXMgZHJhZyBhbmQgZHJvcCxcbiAgICBpdCBpbmNsdWRlIGZ1bGwgbGlmZWN5Y2xlLCBsaWtlIGRyYWcgc3RhcnQsIGRyYWcsIGRyYWcgZW50ZXIsIGRyYWcgbGVhdmUsIGRyYWcgb3ZlciwgZHJvcCBhbmQgZHJhZyBlbmQuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjg1LjBcbiAgICovXG4gIHJvd0RyYWdEcm9wOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FUYWJsZURyYWdEcm9wRXZlbnRQYXlsb2FkPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydjb2x1bW5EaXZpZGVyJywgJ2NvbHVtbnMnLCAnZGF0YVNvdXJjZScsICdkZW5zaXR5JywgJ2VtcHR5RGVzY3JpcHRpb24nLCAnZ3JvdXBDb2x1bW5zJywgJ3BhZGRpbmdYJywgJ3BhZ2luYXRpb24nLCAncm93Q2xpY2thYmxlJywgJ3Jvd0RpdmlkZXInLCAncm93RHJhZ2dhYmxlJywgJ3Jvd0V4cGFuZGFibGUnLCAncm93S2V5JywgJ3Jvd1NlbGVjdGlvbicsICdzY3JvbGxDb25maWcnLCAnc2hvd0VkaXRFcnJvcicsICdzaG93SGVhZGVyJywgJ3NvcnRDb25maWcnLCAnc3RyaXBlZCddLFxuICBtZXRob2RzOiBbJ29wZW5FeHBhbmRSb3cnLCAnY2xvc2VFeHBhbmRSb3cnLCAnY2xvc2VBbGxFeHBhbmRSb3cnLCAndG9nZ2xlRXhwYW5kUm93JywgJ2NsZWFyU2VsZWN0aW9uJywgJ2dldFNlbGVjdGlvbicsICdzZXRTZWxlY3Rpb24nLCAnc3RhcnRSb3dFZGl0TW9kZScsICdzdG9wUm93RWRpdE1vZGUnLCAnc3RvcEFsbFJvd0VkaXRNb2RlJywgJ2dldFJvd0RhdGEnLCAnZ2V0Um93c0RhdGEnLCAnZ2V0Rm9ybVJlZicsICdhZGROZXdSb3cnLCAnc2F2ZUVkaXRSb3cnLCAnc2F2ZUFsbEVkaXRSb3dzJywgJ2dldEVkaXRpbmdSb3dzS2V5JywgJ3JlbW92ZVJvdyddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS10YWJsZScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnY29sdW1uRGl2aWRlcicsICdjb2x1bW5zJywgJ2RhdGFTb3VyY2UnLCAnZGVuc2l0eScsICdlbXB0eURlc2NyaXB0aW9uJywgJ2dyb3VwQ29sdW1ucycsICdwYWRkaW5nWCcsICdwYWdpbmF0aW9uJywgJ3Jvd0NsaWNrYWJsZScsICdyb3dEaXZpZGVyJywgJ3Jvd0RyYWdnYWJsZScsICdyb3dFeHBhbmRhYmxlJywgJ3Jvd0tleScsICdyb3dTZWxlY3Rpb24nLCAnc2Nyb2xsQ29uZmlnJywgJ3Nob3dFZGl0RXJyb3InLCAnc2hvd0hlYWRlcicsICdzb3J0Q29uZmlnJywgJ3N0cmlwZWQnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhVGFibGUge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2hhbmdlJywgJ2NoYW5nZScsICd2ZWdhUm93Q2xpY2snLCAncm93Q2xpY2snLCAndmVnYVJvd0V4cGFuZCcsICdyb3dFeHBhbmQnLCAndmVnYVNlbGVjdENoYW5nZScsICdzZWxlY3RDaGFuZ2UnLCAndmVnYVNlbGVjdEFsbENoYW5nZScsICdzZWxlY3RBbGxDaGFuZ2UnLCAndmVnYVJvd1NlbGVjdCcsICdyb3dTZWxlY3QnLCAndmVnYVJvd1NlbGVjdEFsbCcsICdyb3dTZWxlY3RBbGwnLCAndmVnYVJvd0RyYWdEcm9wJywgJ3Jvd0RyYWdEcm9wJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FUYWJsZUJvZHkgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FUYWJsZUJvZHkge31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWRcbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXRhYmxlLWJvZHknLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+J1xufSlcbmV4cG9ydCBjbGFzcyBWZWdhVGFibGVCb2R5IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVRhYmxlQ2VsbCBleHRlbmRzIENvbXBvbmVudHMuVmVnYVRhYmxlQ2VsbCB7fVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2JyZWFrcG9pbnQnLCAnY29sU3BhbicsICdlbGxpcHNpc1Nob3dUb29sdGlwJywgJ292ZXJmbG93JywgJ3RleHRBbGlnbicsICd3aWR0aCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS10YWJsZS1jZWxsJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydicmVha3BvaW50JywgJ2NvbFNwYW4nLCAnZWxsaXBzaXNTaG93VG9vbHRpcCcsICdvdmVyZmxvdycsICd0ZXh0QWxpZ24nLCAnd2lkdGgnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhVGFibGVDZWxsIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVRhYmxlRXhwYW5kUm93IGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhVGFibGVFeHBhbmRSb3cge31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydyb3dLZXknLCAnc3RyaXBlZCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS10YWJsZS1leHBhbmQtcm93JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydyb3dLZXknLCAnc3RyaXBlZCddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FUYWJsZUV4cGFuZFJvdyB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FUYWJsZUZvb3QgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FUYWJsZUZvb3Qge31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWRcbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXRhYmxlLWZvb3QnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+J1xufSlcbmV4cG9ydCBjbGFzcyBWZWdhVGFibGVGb290IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVRhYmxlRm9vdENlbGwgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FUYWJsZUZvb3RDZWxsIHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnYnJlYWtwb2ludCcsICdjb2xTcGFuJywgJ3RleHRBbGlnbicsICd3aWR0aCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS10YWJsZS1mb290LWNlbGwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2JyZWFrcG9pbnQnLCAnY29sU3BhbicsICd0ZXh0QWxpZ24nLCAnd2lkdGgnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhVGFibGVGb290Q2VsbCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FUYWJsZUZvb3RSb3cgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FUYWJsZUZvb3RSb3cge31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWRcbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXRhYmxlLWZvb3Qtcm93JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50Pidcbn0pXG5leHBvcnQgY2xhc3MgVmVnYVRhYmxlRm9vdFJvdyB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FUYWJsZUhlYWQgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FUYWJsZUhlYWQge31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWRcbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXRhYmxlLWhlYWQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+J1xufSlcbmV4cG9ydCBjbGFzcyBWZWdhVGFibGVIZWFkIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuaW1wb3J0IHR5cGUgeyBWZWdhVGFibGVIZWFkQ2VsbENsaWNrRXZlbnQgYXMgSVZlZ2FUYWJsZUhlYWRDZWxsVmVnYVRhYmxlSGVhZENlbGxDbGlja0V2ZW50IH0gZnJvbSAnQGdsb2JhbHBheW1lbnRzL3ZlZ2EvZGlzdC90eXBlcy9jb21wb25lbnRzL3ZlZ2EtdGFibGUvaW50ZXJmYWNlJztcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhVGFibGVIZWFkQ2VsbCBleHRlbmRzIENvbXBvbmVudHMuVmVnYVRhYmxlSGVhZENlbGwge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhhdCB0aGUgaGVhZCBjZWxsIGhhcyBiZWVuIGNsaWNrZWQuIEB2ZWdhVmVyc2lvbiAxLjQ0LjBcbiAgICovXG4gIHZlZ2FDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhVGFibGVIZWFkQ2VsbFZlZ2FUYWJsZUhlYWRDZWxsQ2xpY2tFdmVudD4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhhdCB0aGUgaGVhZCBjZWxsIGhhcyBiZWVuIGNsaWNrZWQuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgY2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYVRhYmxlSGVhZENlbGxWZWdhVGFibGVIZWFkQ2VsbENsaWNrRXZlbnQ+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2JyZWFrcG9pbnQnLCAncGlubmVkJywgJ3NvcnRDb25maWcnLCAnc29ydE9yZGVyJywgJ3NvcnRlcicsICd0ZXh0QWxpZ24nLCAnd2lkdGgnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtdGFibGUtaGVhZC1jZWxsJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydicmVha3BvaW50JywgJ3Bpbm5lZCcsICdzb3J0Q29uZmlnJywgJ3NvcnRPcmRlcicsICdzb3J0ZXInLCAndGV4dEFsaWduJywgJ3dpZHRoJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYVRhYmxlSGVhZENlbGwge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2xpY2snLCAnY2xpY2snXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVRhYmxlSGVhZFJvdyBleHRlbmRzIENvbXBvbmVudHMuVmVnYVRhYmxlSGVhZFJvdyB7fVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2hpZGVTZWxlY3RBbGwnLCAnc2VsZWN0QWxsRGlzYWJsZWQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtdGFibGUtaGVhZC1yb3cnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2hpZGVTZWxlY3RBbGwnLCAnc2VsZWN0QWxsRGlzYWJsZWQnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhVGFibGVIZWFkUm93IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuaW1wb3J0IHR5cGUgeyBWZWdhVGFibGVSb3dDbGlja0V2ZW50IGFzIElWZWdhVGFibGVSb3dWZWdhVGFibGVSb3dDbGlja0V2ZW50IH0gZnJvbSAnQGdsb2JhbHBheW1lbnRzL3ZlZ2EvZGlzdC90eXBlcy9jb21wb25lbnRzL3ZlZ2EtdGFibGUvaW50ZXJmYWNlJztcbmltcG9ydCB0eXBlIHsgVmVnYVRhYmxlUm93RXhwYW5kRXZlbnQgYXMgSVZlZ2FUYWJsZVJvd1ZlZ2FUYWJsZVJvd0V4cGFuZEV2ZW50IH0gZnJvbSAnQGdsb2JhbHBheW1lbnRzL3ZlZ2EvZGlzdC90eXBlcy9jb21wb25lbnRzL3ZlZ2EtdGFibGUvaW50ZXJmYWNlJztcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhVGFibGVSb3cgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FUYWJsZVJvdyB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGF0IHRoZSByb3cgaGFzIGJlZW4gY2xpY2tlZC4gQHZlZ2FWZXJzaW9uIDEuNDQuMFxuICAgKi9cbiAgdmVnYUNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FUYWJsZVJvd1ZlZ2FUYWJsZVJvd0NsaWNrRXZlbnQ+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoYXQgdGhlIHJvdyBoYXMgYmVlbiBjbGlja2VkLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FUYWJsZVJvd1ZlZ2FUYWJsZVJvd0NsaWNrRXZlbnQ+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoYXQgdGhlIGV4cGFuZCBpY29uIGhhcyBiZWVuIGNsaWNrZWQuIEB2ZWdhVmVyc2lvbiAyLjIwLjBcbiAgICovXG4gIHZlZ2FFeHBhbmQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYVRhYmxlUm93VmVnYVRhYmxlUm93RXhwYW5kRXZlbnQ+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoYXQgdGhlIGV4cGFuZCBpY29uIGhhcyBiZWVuIGNsaWNrZWQuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjIwLjBcbiAgICovXG4gIGV4cGFuZDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhVGFibGVSb3dWZWdhVGFibGVSb3dFeHBhbmRFdmVudD4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsncm93RGl2aWRlcicsICdyb3dLZXknLCAnc3RyaXBlZCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS10YWJsZS1yb3cnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ3Jvd0RpdmlkZXInLCAncm93S2V5JywgJ3N0cmlwZWQnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhVGFibGVSb3cge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2xpY2snLCAnY2xpY2snLCAndmVnYUV4cGFuZCcsICdleHBhbmQnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVRleHQgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FUZXh0IHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnb3ZlcmZsb3cnLCAndGV4dCcsICd0b29sdGlwJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXRleHQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ292ZXJmbG93JywgJ3RleHQnLCAndG9vbHRpcCddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FUZXh0IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVRleHRhcmVhIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhVGV4dGFyZWEge1xuICAvKipcbiAgICogRmlyZWQgd2hlbmV2ZXIgdGhlIHRleHQgYXJlYSB2YWx1ZSBjaGFuZ2VzLCB3aGV0aGVyIGJ5IHVzZXIgaW5wdXQgb3JcbnByb2dyYW1tYXRpYyB1cGRhdGUgb2YgdGhlIGB2YWx1ZWAgcHJvcGVydHkuIFRoaXMgaXMgdGhlIHByaW1hcnkgZXZlbnRcbmZvciByZWFjdGluZyB0byBjb250ZW50IGNoYW5nZXMgYW5kIGltcGxlbWVudGluZyB0d28td2F5IGJpbmRpbmcuIEBldmVudERldGFpbCBzdHJpbmcg4oCUIFRoZSB1cGRhdGVkIHRleHQgYXJlYSB2YWx1ZS4sQHZlZ2FWZXJzaW9uIDEuMTEuMFxuICAgKi9cbiAgdmVnYUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogTmF0aXZlLW5hbWVzcGFjZSBtaXJyb3Igb2YgYHZlZ2FDaGFuZ2VgLiBGaXJlZCB3aGVuZXZlciB0aGUgdGV4dCBhcmVhXG52YWx1ZSBjaGFuZ2VzLiBQcm92aWRlZCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIHN0YW5kYXJkIERPTSBldmVudFxubGlzdGVuZXJzLiBAZXZlbnREZXRhaWwgc3RyaW5nIOKAlCBUaGUgdXBkYXRlZCB0ZXh0IGFyZWEgdmFsdWUuLEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgY2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBGaXJlZCB3aGVuIHRoZSBpbm5lciBgPHRleHRhcmVhPmAgZWxlbWVudCBsb3NlcyBmb2N1cyAoYmx1cikuIFVzZSB0aGlzXG5ldmVudCB0byB0cmlnZ2VyIHZhbGlkYXRpb24gb3Igc2F2ZSBhY3Rpb25zIHdoZW4gdGhlIHVzZXIgbGVhdmVzIHRoZVxudGV4dCBhcmVhLiBAZXZlbnREZXRhaWwgdW5kZWZpbmVkIOKAlCBObyBwYXlsb2FkOyBzaWduYWxzIHRoZSBibHVyIG9jY3VycmVuY2Ugb25seS4sQHZlZ2FWZXJzaW9uIDEuMTEuMFxuICAgKi9cbiAgdmVnYUJsdXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx1bmRlZmluZWQ+PjtcbiAgLyoqXG4gICAqIE5hdGl2ZS1uYW1lc3BhY2UgbWlycm9yIG9mIGB2ZWdhQmx1cmAuIEZpcmVkIHdoZW4gdGhlIGlubmVyIGA8dGV4dGFyZWE+YFxuZWxlbWVudCBsb3NlcyBmb2N1cy4gUHJvdmlkZWQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBzdGFuZGFyZCBET00gZXZlbnRcbmxpc3RlbmVycy4gQGV2ZW50RGV0YWlsIHVuZGVmaW5lZCDigJQgTm8gcGF5bG9hZDsgc2lnbmFscyB0aGUgYmx1ciBvY2N1cnJlbmNlIG9ubHkuLEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgYmx1cjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHVuZGVmaW5lZD4+O1xuICAvKipcbiAgICogRmlyZWQgd2hlbiB0aGUgc3VmZml4IGJ1dHRvbiBjb25maWd1cmVkIHZpYSBgbGFiZWxTdWZmaXhCdXR0b25Db25maWdgIGlzXG5jbGlja2VkLiBMaXN0ZW4gZm9yIHRoaXMgZXZlbnQgdG8gaGFuZGxlIGlubGluZSBsYWJlbCBhY3Rpb25zIHN1Y2ggYXNcbm9wZW5pbmcgYSBoZWxwIGRpYWxvZyBvciB0b2dnbGluZyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLiBAZXZlbnREZXRhaWwgdm9pZCxAdmVnYVZlcnNpb24gMi42OC4wXG4gICAqL1xuICB2ZWdhTGFiZWxCdXR0b25DbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuICAvKipcbiAgICogTmF0aXZlLW5hbWVzcGFjZSBtaXJyb3Igb2YgYHZlZ2FMYWJlbEJ1dHRvbkNsaWNrYC4gRmlyZWQgd2hlbiB0aGUgbGFiZWxcbnN1ZmZpeCBidXR0b24gaXMgY2xpY2tlZC4gUHJvdmlkZWQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBzdGFuZGFyZCBET01cbmV2ZW50IGxpc3RlbmVycy4gQGV2ZW50RGV0YWlsIHZvaWQsQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuNjguMFxuICAgKi9cbiAgbGFiZWxCdXR0b25DbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnYXV0b1ZhbGlkYXRpb24nLCAnZGlzYWJsZWQnLCAnaGludCcsICdpc1ZhbGlkJywgJ2xhYmVsJywgJ2xhYmVsU3VmZml4QnV0dG9uQ29uZmlnJywgJ21heExlbmd0aCcsICdtaW5MZW5ndGgnLCAnb3B0aW9uYWwnLCAncGxhY2Vob2xkZXInLCAncmVxdWlyZWQnLCAncmVzaXphYmxlJywgJ3Jvd3MnLCAnc2hvd0NvdW50ZXInLCAndmFsaWRhdGlvblJ1bGVzJywgJ3ZhbHVlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXRleHRhcmVhJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydhdXRvVmFsaWRhdGlvbicsICdkaXNhYmxlZCcsICdoaW50JywgJ2lzVmFsaWQnLCAnbGFiZWwnLCAnbGFiZWxTdWZmaXhCdXR0b25Db25maWcnLCAnbWF4TGVuZ3RoJywgJ21pbkxlbmd0aCcsICdvcHRpb25hbCcsICdwbGFjZWhvbGRlcicsICdyZXF1aXJlZCcsICdyZXNpemFibGUnLCAncm93cycsICdzaG93Q291bnRlcicsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWUnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhVGV4dGFyZWEge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2hhbmdlJywgJ2NoYW5nZScsICd2ZWdhQmx1cicsICdibHVyJywgJ3ZlZ2FMYWJlbEJ1dHRvbkNsaWNrJywgJ2xhYmVsQnV0dG9uQ2xpY2snXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVRpbWVQaWNrZXIgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FUaW1lUGlja2VyIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGNoYW5nZXMgaW4gdGhlIHZhbHVlIG9mIHRoZSB0aW1lIHBpY2tlci4gQHZlZ2FWZXJzaW9uIDEuMTIuMFxuICAgKi9cbiAgdmVnYUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZyB8IHN0cmluZ1tdPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBjaGFuZ2VzIGluIHRoZSB2YWx1ZSBvZiB0aGUgdGltZSBwaWNrZXIuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgY2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nIHwgc3RyaW5nW10+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2F1dG9WYWxpZGF0aW9uJywgJ2Rpc2FibGVkJywgJ2luY3JlbWVudHMnLCAnaXNWYWxpZCcsICdsYWJlbCcsICdtb2RlJywgJ29wdGlvbmFsJywgJ3BsYWNlaG9sZGVyJywgJ3Bvc2l0aW9uUmVsYXRpdmVUbycsICdyZWFkT25seScsICdyZXF1aXJlZCcsICdzaG93Q2xlYXJJY29uJywgJ3NpemUnLCAndGltZUZvcm1hdCcsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWUnLCAndmVnYURyb3Bkb3duUHJvcHMnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtdGltZS1waWNrZXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2F1dG9WYWxpZGF0aW9uJywgJ2Rpc2FibGVkJywgJ2luY3JlbWVudHMnLCAnaXNWYWxpZCcsICdsYWJlbCcsICdtb2RlJywgJ29wdGlvbmFsJywgJ3BsYWNlaG9sZGVyJywgJ3Bvc2l0aW9uUmVsYXRpdmVUbycsICdyZWFkT25seScsICdyZXF1aXJlZCcsICdzaG93Q2xlYXJJY29uJywgJ3NpemUnLCAndGltZUZvcm1hdCcsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWUnLCAndmVnYURyb3Bkb3duUHJvcHMnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhVGltZVBpY2tlciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDaGFuZ2UnLCAnY2hhbmdlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FUaW1lUGlja2VyRHJvcGRvd24gZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FUaW1lUGlja2VyRHJvcGRvd24ge31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWRcbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXRpbWUtcGlja2VyLWRyb3Bkb3duJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50Pidcbn0pXG5leHBvcnQgY2xhc3MgVmVnYVRpbWVQaWNrZXJEcm9wZG93biB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FUb2dnbGVTd2l0Y2ggZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FUb2dnbGVTd2l0Y2gge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgY2hhbmdlcyBpbiB0aGUgdG9nZ2xlIHN3aXRjaC4gQHZlZ2FWZXJzaW9uIDEuMy4wXG4gICAqL1xuICB2ZWdhQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8Ym9vbGVhbj4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgY2hhbmdlcyBpbiB0aGUgdG9nZ2xlIHN3aXRjaC4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxib29sZWFuPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydhdXRvVmFsaWRhdGlvbicsICdjaGVja2VkJywgJ2Rpc2FibGVkJywgJ2lzVmFsaWQnLCAnbGFiZWwnLCAnb3B0aW9uYWwnLCAncmVxdWlyZWQnLCAnc2l6ZScsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtdG9nZ2xlLXN3aXRjaCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnYXV0b1ZhbGlkYXRpb24nLCAnY2hlY2tlZCcsICdkaXNhYmxlZCcsICdpc1ZhbGlkJywgJ2xhYmVsJywgJ29wdGlvbmFsJywgJ3JlcXVpcmVkJywgJ3NpemUnLCAndmFsaWRhdGlvblJ1bGVzJywgJ3ZhbHVlJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYVRvZ2dsZVN3aXRjaCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDaGFuZ2UnLCAnY2hhbmdlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FUb29sdGlwIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhVG9vbHRpcCB7fVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2FsaWdubWVudCcsICdjb250ZW50JywgJ2Rpc2FibGVJbnRlcmFjdGl2ZScsICdtYXhXaWR0aCcsICdtaW5XaWR0aCcsICdwbGFjZW1lbnQnLCAncG9zaXRpb25SZWxhdGl2ZVRvJywgJ3NpemUnLCAndGV4dCcsICd0cmlnZ2VyJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXRvb2x0aXAnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2FsaWdubWVudCcsICdjb250ZW50JywgJ2Rpc2FibGVJbnRlcmFjdGl2ZScsICdtYXhXaWR0aCcsICdtaW5XaWR0aCcsICdwbGFjZW1lbnQnLCAncG9zaXRpb25SZWxhdGl2ZVRvJywgJ3NpemUnLCAndGV4dCcsICd0cmlnZ2VyJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYVRvb2x0aXAge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhVG9vbHRpcENvbnRlbnRCb3ggZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FUb29sdGlwQ29udGVudEJveCB7fVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ3RleHQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtdG9vbHRpcC1jb250ZW50LWJveCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsndGV4dCddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FUb29sdGlwQ29udGVudEJveCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FWaXJ0dWFsU2Nyb2xsIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhVmlydHVhbFNjcm9sbCB7fVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2FwcHJveEl0ZW1IZWlnaHQnLCAnaXNMb2FkaW5nJywgJ3JlbmRlckl0ZW0nLCAnc291cmNlJywgJ3NvdXJjZUl0ZW1JZGVudGlmaWVyJywgJ3ZpZXdwb3J0TWF4SGVpZ2h0JywgJ3ZpcnR1YWxpemF0aW9uVGhyZXNob2xkJ10sXG4gIG1ldGhvZHM6IFsnc2Nyb2xsVG9JbmRleCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS12aXJ0dWFsLXNjcm9sbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnYXBwcm94SXRlbUhlaWdodCcsICdpc0xvYWRpbmcnLCAncmVuZGVySXRlbScsICdzb3VyY2UnLCAnc291cmNlSXRlbUlkZW50aWZpZXInLCAndmlld3BvcnRNYXhIZWlnaHQnLCAndmlydHVhbGl6YXRpb25UaHJlc2hvbGQnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhVmlydHVhbFNjcm9sbCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFtcbiAgVmVnYUFjY29yZGlvbixcbiAgVmVnYUFwcEZvb3RlcixcbiAgVmVnYUFwcEhlYWRlckJ1dHRvbixcbiAgVmVnYUJhY2tkcm9wLFxuICBWZWdhQmFubmVyLFxuICBWZWdhQmFyQ2hhcnQsXG4gIFZlZ2FCb3gsXG4gIFZlZ2FCcmFuZExvZ28sXG4gIFZlZ2FCcmVhZGNydW1iLFxuICBWZWdhQnV0dG9uLFxuICBWZWdhQnV0dG9uQ2lyY2xlLFxuICBWZWdhQnV0dG9uR3JvdXAsXG4gIFZlZ2FCdXR0b25Hcm91cEl0ZW0sXG4gIFZlZ2FCdXR0b25MaW5rLFxuICBWZWdhQ2FsZW5kYXIsXG4gIFZlZ2FDYWxlbmRhckV2ZW50LFxuICBWZWdhQ2FsZW5kYXJFdmVudFByZXZpZXcsXG4gIFZlZ2FDYWxlbmRhckV2ZW50U2xvdCxcbiAgVmVnYUNhbGVuZGFyUGVyaW9kU3dpdGNoZXIsXG4gIFZlZ2FDYXJkLFxuICBWZWdhQ2Fyb3VzZWwsXG4gIFZlZ2FDaGVja2JveCxcbiAgVmVnYUNoZWNrYm94R3JvdXAsXG4gIFZlZ2FDaGlwLFxuICBWZWdhQ29kZUJsb2NrLFxuICBWZWdhQ29sb3JQaWNrZXIsXG4gIFZlZ2FDb2xvclN3YXRjaCxcbiAgVmVnYUNvbG9yU3dhdGNoUGlja2VyLFxuICBWZWdhQ29tYm9Cb3gsXG4gIFZlZ2FDb3VudGVyQmFkZ2UsXG4gIFZlZ2FEYXRlUGlja2VyLFxuICBWZWdhRGF0ZVBpY2tlckNhbGVuZGFyLFxuICBWZWdhRGlhbG9nLFxuICBWZWdhRGl2aWRlcixcbiAgVmVnYURyb3Bkb3duLFxuICBWZWdhRHJvcGRvd25Db250ZW50Qm94LFxuICBWZWdhRHJvcGRvd25Hcm91cCxcbiAgVmVnYURyb3Bkb3duSXRlbSxcbiAgVmVnYUZpZWxkRXJyb3IsXG4gIFZlZ2FGaWVsZExhYmVsLFxuICBWZWdhRmlsZVVwbG9hZGVyLFxuICBWZWdhRmxhZ0ljb24sXG4gIFZlZ2FGbGV4LFxuICBWZWdhRm9udCxcbiAgVmVnYUZvcm0sXG4gIFZlZ2FHcmlkLFxuICBWZWdhSGludCxcbiAgVmVnYUljb24sXG4gIFZlZ2FJbWFnZVVwbG9hZGVyLFxuICBWZWdhSW5wdXQsXG4gIFZlZ2FJbnB1dENyZWRpdENhcmQsXG4gIFZlZ2FJbnB1dE51bWVyaWMsXG4gIFZlZ2FJbnB1dFBhc3Njb2RlLFxuICBWZWdhSW5wdXRQaG9uZU51bWJlcixcbiAgVmVnYUlucHV0UmFuZ2UsXG4gIFZlZ2FJbnB1dFNlbGVjdCxcbiAgVmVnYUl0ZW1Ub2dnbGUsXG4gIFZlZ2FMZWZ0TmF2LFxuICBWZWdhTGVmdE5hdkdyb3VwLFxuICBWZWdhTGVmdE5hdkxpbmssXG4gIFZlZ2FMZWZ0TmF2U2VjdGlvbixcbiAgVmVnYUxpbmVDaGFydCxcbiAgVmVnYUxvYWRlcldyYXBwZXIsXG4gIFZlZ2FMb2FkaW5nSW5kaWNhdG9yLFxuICBWZWdhTW9kYWwsXG4gIFZlZ2FOYXZDYXJkLFxuICBWZWdhUGFnZU5vdGlmaWNhdGlvbixcbiAgVmVnYVBhZ2VOb3RpZmljYXRpb25MaXN0LFxuICBWZWdhUGFnaW5hdGlvbixcbiAgVmVnYVBhZ2luYXRpb25QYWdlU2VsZWN0b3JNb2JpbGUsXG4gIFZlZ2FQYWdpbmF0aW9uUGFnZVNpemVTZWxlY3Rvck1vYmlsZSxcbiAgVmVnYVBpZUNoYXJ0LFxuICBWZWdhUG9wb3ZlcixcbiAgVmVnYVBvcG92ZXJDb250ZW50Qm94LFxuICBWZWdhUHJvZ3Jlc3NUcmFja2VyLFxuICBWZWdhUHJvZ3Jlc3NUcmFja2VyU3RlcCxcbiAgVmVnYVJhZGlvLFxuICBWZWdhUmFkaW9Hcm91cCxcbiAgVmVnYVJpY2hUZXh0Q29udGVudCxcbiAgVmVnYVJpY2hUZXh0RWRpdG9yLFxuICBWZWdhUmljaFRleHRFZGl0b3JUb29sYmFyQnV0dG9uLFxuICBWZWdhUmljaFRleHRGaW5kUmVwbGFjZVBhbmVsLFxuICBWZWdhUmljaFRleHRJbWFnZUVkaXRvcixcbiAgVmVnYVJpY2hUZXh0TGlua0VkaXRvcixcbiAgVmVnYVJpY2hUZXh0U3BlY2lhbENoYXJhY3RlcnNQYW5lbCxcbiAgVmVnYVJpY2hUZXh0VGFibGVQcm9wZXJ0aWVzLFxuICBWZWdhUmljaFRleHRUYWJsZVNlbGVjdGlvbldpZGdldCxcbiAgVmVnYVJpY2hUZXh0VGFibGVTZXR0aW5nLFxuICBWZWdhU2VjdGlvblRpdGxlLFxuICBWZWdhU2VnbWVudENvbnRyb2wsXG4gIFZlZ2FTZWxlY3Rpb25DaGlwLFxuICBWZWdhU2VsZWN0aW9uQ2hpcEdyb3VwLFxuICBWZWdhU2VsZWN0aW9uVGlsZSxcbiAgVmVnYVNlbGVjdGlvblRpbGVHcm91cCxcbiAgVmVnYVNpZGVuYXYsXG4gIFZlZ2FTaWRlbmF2R3JvdXAsXG4gIFZlZ2FTaWRlbmF2TGluayxcbiAgVmVnYVNpZ25hdHVyZUNhcHR1cmUsXG4gIFZlZ2FTa2VsZXRvbixcbiAgVmVnYVNsb3RDb250YWluZXIsXG4gIFZlZ2FTdGVwcGVyLFxuICBWZWdhVGFiR3JvdXAsXG4gIFZlZ2FUYWJHcm91cFBhbmVsLFxuICBWZWdhVGFibGUsXG4gIFZlZ2FUYWJsZUJvZHksXG4gIFZlZ2FUYWJsZUNlbGwsXG4gIFZlZ2FUYWJsZUV4cGFuZFJvdyxcbiAgVmVnYVRhYmxlRm9vdCxcbiAgVmVnYVRhYmxlRm9vdENlbGwsXG4gIFZlZ2FUYWJsZUZvb3RSb3csXG4gIFZlZ2FUYWJsZUhlYWQsXG4gIFZlZ2FUYWJsZUhlYWRDZWxsLFxuICBWZWdhVGFibGVIZWFkUm93LFxuICBWZWdhVGFibGVSb3csXG4gIFZlZ2FUZXh0LFxuICBWZWdhVGV4dGFyZWEsXG4gIFZlZ2FUaW1lUGlja2VyLFxuICBWZWdhVGltZVBpY2tlckRyb3Bkb3duLFxuICBWZWdhVG9nZ2xlU3dpdGNoLFxuICBWZWdhVG9vbHRpcCxcbiAgVmVnYVRvb2x0aXBDb250ZW50Qm94LFxuICBWZWdhVmlydHVhbFNjcm9sbCxcbl07Il19
3256
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvc3RlbmNpbC1nZW5lcmF0ZWQvY29tcG9uZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsb0JBQW9CO0FBQ3BCLDhDQUE4QztBQUM5QyxPQUFPLEVBQUUsdUJBQXVCLEVBQXFCLFNBQVMsRUFBb0MsTUFBTSxlQUFlLENBQUM7QUFDeEgsT0FBTyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7SUE4QjFELGFBQWEsU0FBYixhQUFhO0lBRXhCLFlBQVksQ0FBb0IsRUFBRSxDQUFhLEVBQVksQ0FBUztRQUFULE1BQUMsR0FBRCxDQUFDLENBQVE7UUFDbEUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ1gsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsYUFBYSxDQUFDO1FBQzFCLFlBQVksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLFlBQVksRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7SUFDakUsQ0FBQztDQUNGLENBQUE7MEdBUFksYUFBYTs4RkFBYixhQUFhLDBWQUhkLDJCQUEyQjtBQUcxQixhQUFhO0lBVnpCLFFBQVEsQ0FBQztRQUNSLHFCQUFxQixFQUFFLFNBQVM7UUFDaEMsTUFBTSxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLHNCQUFzQixDQUFDO0tBQzlKLENBQUM7R0FPVyxhQUFhLENBT3pCO1NBUFksYUFBYTsyRkFBYixhQUFhO2tCQU56QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxRQUFRLEVBQUUsMkJBQTJCO29CQUNyQyxN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YTtJQUNiLGtCQUFrQjtJQUNsQixhQUFhO0lBQ2IsaUJBQWlCO0lBQ2pCLGdCQUFnQjtJQUNoQixhQUFhO0lBQ2IsaUJBQWlCO0lBQ2pCLGdCQUFnQjtJQUNoQixZQUFZO0lBQ1osUUFBUTtJQUNSLFlBQVk7SUFDWixjQUFjO0lBQ2Qsc0JBQXNCO0lBQ3RCLGdCQUFnQjtJQUNoQixXQUFXO0lBQ1gscUJBQXFCO0lBQ3JCLGlCQUFpQjtDQUNsQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogdHNsaW50OmRpc2FibGUgKi9cbi8qIGF1dG8tZ2VuZXJhdGVkIGFuZ3VsYXIgZGlyZWN0aXZlIHByb3hpZXMgKi9cbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUHJveHlDbXAsIHByb3h5T3V0cHV0cyB9IGZyb20gJy4vYW5ndWxhci1jb21wb25lbnQtbGliL3V0aWxzJztcblxuaW1wb3J0IHsgQ29tcG9uZW50cyB9IGZyb20gJ0BnbG9iYWxwYXltZW50cy92ZWdhJztcblxuXG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FBY2NvcmRpb24gZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FBY2NvcmRpb24ge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGV4cGFuZCBldmVudCBvZiB0aGUgYWNjb3JkaW9uLiBAdmVnYVZlcnNpb24gMS4zLjBcbiAgICovXG4gIHZlZ2FFeHBhbmQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxib29sZWFuPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgZXhwYW5kIGV2ZW50IG9mIHRoZSBhY2NvcmRpb24uXG5leHBhbmQgaXMgYW4gYXR0cmlidXRlLCBzbyB0aGUgZXZlbnQgbmFtZSBoZXJlIHVzZXMgYWNjb3JkaW9uRXhwYW5kIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgYWNjb3JkaW9uRXhwYW5kOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8Ym9vbGVhbj4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnYWNjb3JkaW9uVGl0bGUnLCAnZHJhd3NCYWNrZ3JvdW5kJywgJ2V4cGFuZCcsICdleHBhbmRJY29uQWxpZ24nLCAnZ3JvdXBJZCcsICdpY29uUG9zaXRpb24nLCAncHJlZml4SWNvbicsICdzaG93RXhwYW5kSWNvbicsICd0aXRsZUJhY2tncm91bmRDb2xvciddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1hY2NvcmRpb24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2FjY29yZGlvblRpdGxlJywgJ2RyYXdzQmFja2dyb3VuZCcsICdleHBhbmQnLCAnZXhwYW5kSWNvbkFsaWduJywgJ2dyb3VwSWQnLCAnaWNvblBvc2l0aW9uJywgJ3ByZWZpeEljb24nLCAnc2hvd0V4cGFuZEljb24nLCAndGl0bGVCYWNrZ3JvdW5kQ29sb3InXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhQWNjb3JkaW9uIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUV4cGFuZCcsICdhY2NvcmRpb25FeHBhbmQnXSk7XG4gIH1cbn1cblxuaW1wb3J0IHR5cGUgeyBWZWdhQXBwRm9vdGVyTGluayBhcyBJVmVnYUFwcEZvb3RlclZlZ2FBcHBGb290ZXJMaW5rIH0gZnJvbSAnQGdsb2JhbHBheW1lbnRzL3ZlZ2EvZGlzdC90eXBlcy9jb21wb25lbnRzL3ZlZ2EtYXBwLWZvb3Rlci90eXBlcyc7XG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUFwcEZvb3RlciBleHRlbmRzIENvbXBvbmVudHMuVmVnYUFwcEZvb3RlciB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgY2xpY2sgZXZlbnQgb2YgdGhlIGFkZGl0aW9uYWwgbGluayBpbiB0aGUgYXBwIGZvb3Rlci4gQHZlZ2FWZXJzaW9uIDIuOTEuMFxuICAgKi9cbiAgdmVnYUFkZGl0aW9uYWxMaW5rQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYUFwcEZvb3RlclZlZ2FBcHBGb290ZXJMaW5rPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgY2xpY2sgZXZlbnQgb2YgdGhlIGFkZGl0aW9uYWwgbGluayBpbiB0aGUgYXBwIGZvb3Rlci4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuOTEuMFxuICAgKi9cbiAgYWRkaXRpb25hbExpbmtDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhQXBwRm9vdGVyVmVnYUFwcEZvb3Rlckxpbms+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2FkZGl0aW9uYWxMaW5rcycsICdjb250ZW50JywgJ2Rpc2NsYWltZXJVcmxUYXJnZXQnLCAnaGlkZURlZmF1bHRMaW5rcycsICdwcml2YWN5UG9saWN5TGFiZWwnLCAncHJpdmFjeVBvbGljeVVybCcsICdwcml2YWN5UG9saWN5VXJsSWQnLCAncHJpdmFjeVBvbGljeVVybFRhcmdldCcsICdzaG93RGlzY2xhaW1lcicsICd0ZXJtT2ZVc2VMYWJlbCcsICd0ZXJtT2ZVc2VVcmwnLCAndGVybU9mVXNlVXJsSWQnLCAndGVybU9mVXNlVXJsVGFyZ2V0J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWFwcC1mb290ZXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2FkZGl0aW9uYWxMaW5rcycsICdjb250ZW50JywgJ2Rpc2NsYWltZXJVcmxUYXJnZXQnLCAnaGlkZURlZmF1bHRMaW5rcycsICdwcml2YWN5UG9saWN5TGFiZWwnLCAncHJpdmFjeVBvbGljeVVybCcsICdwcml2YWN5UG9saWN5VXJsSWQnLCAncHJpdmFjeVBvbGljeVVybFRhcmdldCcsICdzaG93RGlzY2xhaW1lcicsICd0ZXJtT2ZVc2VMYWJlbCcsICd0ZXJtT2ZVc2VVcmwnLCAndGVybU9mVXNlVXJsSWQnLCAndGVybU9mVXNlVXJsVGFyZ2V0J11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUFwcEZvb3RlciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FBZGRpdGlvbmFsTGlua0NsaWNrJywgJ2FkZGl0aW9uYWxMaW5rQ2xpY2snXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUFwcEhlYWRlckJ1dHRvbiBleHRlbmRzIENvbXBvbmVudHMuVmVnYUFwcEhlYWRlckJ1dHRvbiB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgY2xpY2sgZXZlbnQgb2YgYW4gYXBwIGhlYWRlciBidXR0b24uIEB2ZWdhVmVyc2lvbiAxLjExLjBcbiAgICovXG4gIHZlZ2FDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNsaWNrIGV2ZW50IG9mIGFuIGFwcCBoZWFkZXIgYnV0dG9uLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8YW55Pj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgY2xpY2sgZXZlbnQgb2YgYSBkcm9wZG93biBpdGVtXG4gICBpbiB0aGUgYXBwIGhlYWRlci4gQHZlZ2FWZXJzaW9uIDEuMjMuMFxuICAgKi9cbiAgdmVnYURyb3Bkb3duQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjbGljayBldmVudCBvZiBhIGRyb3Bkb3duIGl0ZW1cbiAgIGluIHRoZSBhcHAgaGVhZGVyLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGRyb3Bkb3duQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSByZXNldCBldmVudCBpbiB0aGUgZHJvcGRvd24uIEB2ZWdhVmVyc2lvbiAyLjczLjBcbiAgICovXG4gIHZlZ2FSZXNldDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIHJlc2V0IGV2ZW50IGluIHRoZSBkcm9wZG93bi4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuNzMuMFxuICAgKi9cbiAgcmVzZXQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBzZWFyY2ggZXZlbnQgaW4gdGhlIGRyb3Bkb3duLFxuICAgYnV0IG9ubHkgaWYgYHVzZURlZmF1bHRGaWx0ZXJgIGlzIHNldCB0byBgZmFsc2VgLiBAdmVnYVZlcnNpb24gMi44NC4wXG4gICAqL1xuICB2ZWdhU2VhcmNoOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgc2VhcmNoIGV2ZW50IGluIHRoZSBkcm9wZG93bixcbiAgIGJ1dCBvbmx5IGlmIGB1c2VEZWZhdWx0RmlsdGVyYCBpcyBzZXQgdG8gYGZhbHNlYC4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuODQuMFxuICAgKi9cbiAgZHJvcGRvd25TZWFyY2g6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2F2YXRhcicsICdhdmF0YXJQb3NpdGlvbicsICdkcm9wZG93bicsICdsYWJlbCcsICdsYWJlbENvbmZpZycsICdzZWxlY3RlZCcsICdzaG93Qm9yZGVyJywgJ3Nob3dMYWJlbCcsICdzaG93TWVudUFycm93SWNvbicsICdzaXplJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWFwcC1oZWFkZXItYnV0dG9uJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydhdmF0YXInLCAnYXZhdGFyUG9zaXRpb24nLCAnZHJvcGRvd24nLCAnbGFiZWwnLCAnbGFiZWxDb25maWcnLCAnc2VsZWN0ZWQnLCAnc2hvd0JvcmRlcicsICdzaG93TGFiZWwnLCAnc2hvd01lbnVBcnJvd0ljb24nLCAnc2l6ZSddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FBcHBIZWFkZXJCdXR0b24ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2xpY2snLCAnY2xpY2snLCAndmVnYURyb3Bkb3duQ2xpY2snLCAnZHJvcGRvd25DbGljaycsICd2ZWdhUmVzZXQnLCAncmVzZXQnLCAndmVnYVNlYXJjaCcsICdkcm9wZG93blNlYXJjaCddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhQmFja2Ryb3AgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FCYWNrZHJvcCB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgY2xpY2sgZXZlbnQgb2YgdGhlIGJhY2tkcm9wLiBAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIHZlZ2FDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2NvbG9yJywgJ2R1cmF0aW9uJywgJ3Zpc2libGUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtYmFja2Ryb3AnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2NvbG9yJywgJ2R1cmF0aW9uJywgJ3Zpc2libGUnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhQmFja2Ryb3Age1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2xpY2snXSk7XG4gIH1cbn1cblxuaW1wb3J0IHR5cGUgeyBWZWdhQmFubmVyQWN0aW9uQnV0dG9uVHlwZSBhcyBJVmVnYUJhbm5lclZlZ2FCYW5uZXJBY3Rpb25CdXR0b25UeXBlIH0gZnJvbSAnQGdsb2JhbHBheW1lbnRzL3ZlZ2EvZGlzdC90eXBlcy9jb21wb25lbnRzL3ZlZ2EtYmFubmVyL3R5cGVzJztcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhQmFubmVyIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhQmFubmVyIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBiYW5uZXIgY2xvc2UgZXZlbnQuIEB2ZWdhVmVyc2lvbiAxLjEzLjBcbiAgICovXG4gIHZlZ2FDbG9zZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGJhbm5lciBjbG9zZSBldmVudC4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuOC4wXG4gICAqL1xuICBjbG9zZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGJhbm5lciBhY3Rpb24gYnV0dG9uIGhhcyBiZWVuIGNsaWNrZWQuIEB2ZWdhVmVyc2lvbiAyLjE4LjBcbiAgICovXG4gIHZlZ2FBY3Rpb25CdXR0b25DbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhQmFubmVyVmVnYUJhbm5lckFjdGlvbkJ1dHRvblR5cGU+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBiYW5uZXIgYWN0aW9uIGJ1dHRvbiBoYXMgYmVlbiBjbGlja2VkLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4xOC4wXG4gICAqL1xuICBhY3Rpb25CdXR0b25DbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhQmFubmVyVmVnYUJhbm5lckFjdGlvbkJ1dHRvblR5cGU+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2FjdGlvbkJ1dHRvbnMnLCAnYmFubmVyVGl0bGUnLCAnY29udGVudCcsICdpc09wZW4nLCAnc2hvd0Nsb3NlQnV0dG9uJywgJ3R5cGUnXSxcbiAgbWV0aG9kczogWydkb0Nsb3NlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWJhbm5lcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnYWN0aW9uQnV0dG9ucycsICdiYW5uZXJUaXRsZScsICdjb250ZW50JywgJ2lzT3BlbicsICdzaG93Q2xvc2VCdXR0b24nLCAndHlwZSddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FCYW5uZXIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2xvc2UnLCAnY2xvc2UnLCAndmVnYUFjdGlvbkJ1dHRvbkNsaWNrJywgJ2FjdGlvbkJ1dHRvbkNsaWNrJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FCYXJDaGFydCBleHRlbmRzIENvbXBvbmVudHMuVmVnYUJhckNoYXJ0IHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnb3B0aW9ucyddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1iYXItY2hhcnQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ29wdGlvbnMnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhQmFyQ2hhcnQge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhQm94IGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhQm94IHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnYWxpZ25TZWxmJywgJ2JhY2tncm91bmRDb2xvcicsICdib3JkZXInLCAnYm9yZGVyQ29sb3InLCAnYm9yZGVyU3R5bGUnLCAnY29ybmVycycsICdkaXNwbGF5JywgJ2ZsZXgnLCAnZmxleEJhc2lzJywgJ2ZsZXhHcm93JywgJ2ZsZXhTaHJpbmsnLCAnZ3JpZEFyZWEnLCAnZ3JpZENvbHVtbicsICdncmlkUm93JywgJ2hlaWdodCcsICdqdXN0aWZ5U2VsZicsICdtYXJnaW4nLCAnbWF4SGVpZ2h0JywgJ21pbkhlaWdodCcsICdvcmRlcicsICdwYWRkaW5nJywgJ3Jlc3BvbnNpdmVDbGFzcycsICdzaGFkb3cnLCAnd2lkdGgnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtYm94JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydhbGlnblNlbGYnLCAnYmFja2dyb3VuZENvbG9yJywgJ2JvcmRlcicsICdib3JkZXJDb2xvcicsICdib3JkZXJTdHlsZScsICdjb3JuZXJzJywgJ2Rpc3BsYXknLCAnZmxleCcsICdmbGV4QmFzaXMnLCAnZmxleEdyb3cnLCAnZmxleFNocmluaycsICdncmlkQXJlYScsICdncmlkQ29sdW1uJywgJ2dyaWRSb3cnLCAnaGVpZ2h0JywgJ2p1c3RpZnlTZWxmJywgJ21hcmdpbicsICdtYXhIZWlnaHQnLCAnbWluSGVpZ2h0JywgJ29yZGVyJywgJ3BhZGRpbmcnLCAncmVzcG9uc2l2ZUNsYXNzJywgJ3NoYWRvdycsICd3aWR0aCddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FCb3gge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhQnJhbmRMb2dvIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhQnJhbmRMb2dvIHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnbmFtZScsICdzaXplJywgJ3RoZW1lJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWJyYW5kLWxvZ28nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ25hbWUnLCAnc2l6ZScsICd0aGVtZSddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FCcmFuZExvZ28ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5pbXBvcnQgdHlwZSB7IFZlZ2FCcmVhZGNydW1iSXRlbVR5cGUgYXMgSVZlZ2FCcmVhZGNydW1iVmVnYUJyZWFkY3J1bWJJdGVtVHlwZSB9IGZyb20gJ0BnbG9iYWxwYXltZW50cy92ZWdhL2Rpc3QvdHlwZXMvY29tcG9uZW50cy92ZWdhLWJyZWFkY3J1bWIvdHlwZXMnO1xuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FCcmVhZGNydW1iIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhQnJlYWRjcnVtYiB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGF0IGEgYnJlYWRjcnVtYiBpdGVtIGhhcyBiZWVuIGNsaWNrZWQuIEB2ZWdhVmVyc2lvbiAxLjQxLjBcbiAgICovXG4gIHZlZ2FDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhQnJlYWRjcnVtYlZlZ2FCcmVhZGNydW1iSXRlbVR5cGU+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoYXQgYSBicmVhZGNydW1iIGl0ZW0gaGFzIGJlZW4gY2xpY2tlZC4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBjbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhQnJlYWRjcnVtYlZlZ2FCcmVhZGNydW1iSXRlbVR5cGU+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2NvbXBhY3RPbk1vYmlsZScsICdpdGVtcycsICdsYXN0SXRlbUNsaWNrYWJsZScsICdtYXhJdGVtcyddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1icmVhZGNydW1iJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydjb21wYWN0T25Nb2JpbGUnLCAnaXRlbXMnLCAnbGFzdEl0ZW1DbGlja2FibGUnLCAnbWF4SXRlbXMnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhQnJlYWRjcnVtYiB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDbGljaycsICdjbGljayddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhQnV0dG9uIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhQnV0dG9uIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjbGljayBldmVudCBvZiB0aGUgYnV0dG9uLiBAdmVnYVZlcnNpb24gMS4wLjExXG4gICAqL1xuICB2ZWdhQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjbGljayBldmVudCBvZiB0aGUgYnV0dG9uLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8YW55Pj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydibG9jaycsICdkYW5nZXInLCAnZGlzYWJsZWQnLCAnaWNvbicsICdpY29uQWxpZ24nLCAnbGFiZWwnLCAnbG9hZGluZycsICdzaXplJywgJ3R5cGUnLCAndmFyaWFudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1idXR0b24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2Jsb2NrJywgJ2RhbmdlcicsICdkaXNhYmxlZCcsICdpY29uJywgJ2ljb25BbGlnbicsICdsYWJlbCcsICdsb2FkaW5nJywgJ3NpemUnLCAndHlwZScsICd2YXJpYW50J11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUJ1dHRvbiB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDbGljaycsICdjbGljayddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhQnV0dG9uQ2lyY2xlIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhQnV0dG9uQ2lyY2xlIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjbGljayBldmVudCBvZiB0aGUgY2lyY3VsYXIgYnV0dG9uLiBAdmVnYVZlcnNpb24gMS4wLjExXG4gICAqL1xuICB2ZWdhQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjbGljayBldmVudCBvZiB0aGUgY2lyY3VsYXIgYnV0dG9uLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8YW55Pj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydkYW5nZXInLCAnZGlzYWJsZWQnLCAnaWNvbicsICdpY29uQ29sb3InLCAnbGFiZWwnLCAnc2hvd1Rvb2x0aXAnLCAnc2l6ZScsICd0b29sdGlwJywgJ3R5cGUnLCAndmFyaWFudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1idXR0b24tY2lyY2xlJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydkYW5nZXInLCAnZGlzYWJsZWQnLCAnaWNvbicsICdpY29uQ29sb3InLCAnbGFiZWwnLCAnc2hvd1Rvb2x0aXAnLCAnc2l6ZScsICd0b29sdGlwJywgJ3R5cGUnLCAndmFyaWFudCddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FCdXR0b25DaXJjbGUge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2xpY2snLCAnY2xpY2snXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUJ1dHRvbkdyb3VwIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhQnV0dG9uR3JvdXAge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNsaWNrIGV2ZW50IG9mIHRoZSBidXR0b24gZ3JvdXAuIEB2ZWdhVmVyc2lvbiAyLjUuMFxuICAgKi9cbiAgdmVnYUNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgY2xpY2sgZXZlbnQgb2YgdGhlIGJ1dHRvbi4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuNS4wXG4gICAqL1xuICBjbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnZGlzYWJsZWQnLCAnaWNvbkFsaWduJywgJ3NpemUnLCAndmFyaWFudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1idXR0b24tZ3JvdXAnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2Rpc2FibGVkJywgJ2ljb25BbGlnbicsICdzaXplJywgJ3ZhcmlhbnQnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhQnV0dG9uR3JvdXAge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2xpY2snLCAnY2xpY2snXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUJ1dHRvbkdyb3VwSXRlbSBleHRlbmRzIENvbXBvbmVudHMuVmVnYUJ1dHRvbkdyb3VwSXRlbSB7fVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2Rpc2FibGVkJywgJ2Ryb3Bkb3duUHJvcHMnLCAnZHJvcGRvd25Tb3VyY2UnLCAnaWNvbicsICdpY29uT25seScsICdpdGVtS2V5JywgJ2xhYmVsJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWJ1dHRvbi1ncm91cC1pdGVtJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydkaXNhYmxlZCcsICdkcm9wZG93blByb3BzJywgJ2Ryb3Bkb3duU291cmNlJywgJ2ljb24nLCAnaWNvbk9ubHknLCAnaXRlbUtleScsICdsYWJlbCddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FCdXR0b25Hcm91cEl0ZW0ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhQnV0dG9uTGluayBleHRlbmRzIENvbXBvbmVudHMuVmVnYUJ1dHRvbkxpbmsge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNsaWNrIGV2ZW50IG9mIHRoZSBidXR0b24uIEB2ZWdhVmVyc2lvbiAxLjAuMTFcbiAgICovXG4gIHZlZ2FDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNsaWNrIGV2ZW50IG9mIHRoZSBidXR0b24uIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgY2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2RhbmdlcicsICdkaXNhYmxlZCcsICdldmVudGZ1bCcsICdpY29uJywgJ2ljb25BbGlnbicsICdpY29uVHlwZScsICdsYWJlbCcsICdsaW5rJywgJ3NpemUnLCAndGFyZ2V0J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWJ1dHRvbi1saW5rJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydkYW5nZXInLCAnZGlzYWJsZWQnLCAnZXZlbnRmdWwnLCAnaWNvbicsICdpY29uQWxpZ24nLCAnaWNvblR5cGUnLCAnbGFiZWwnLCAnbGluaycsICdzaXplJywgJ3RhcmdldCddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FCdXR0b25MaW5rIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUNsaWNrJywgJ2NsaWNrJ10pO1xuICB9XG59XG5cbmltcG9ydCB0eXBlIHsgVmVnYUNhbGVuZGFyQ2hhbmdlRXZlbnRUeXBlIGFzIElWZWdhQ2FsZW5kYXJWZWdhQ2FsZW5kYXJDaGFuZ2VFdmVudFR5cGUgfSBmcm9tICdAZ2xvYmFscGF5bWVudHMvdmVnYS9kaXN0L3R5cGVzL2NvbXBvbmVudHMvdmVnYS1jYWxlbmRhci90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IFZlZ2FDYWxlbmRhckV2ZW50Q2xpY2tJbmZvIGFzIElWZWdhQ2FsZW5kYXJWZWdhQ2FsZW5kYXJFdmVudENsaWNrSW5mbyB9IGZyb20gJ0BnbG9iYWxwYXltZW50cy92ZWdhL2Rpc3QvdHlwZXMvY29tcG9uZW50cy92ZWdhLWNhbGVuZGFyL3R5cGVzJztcbmltcG9ydCB0eXBlIHsgVmVnYUNhbGVuZGFyRXZlbnRFZGl0SW5mbyBhcyBJVmVnYUNhbGVuZGFyVmVnYUNhbGVuZGFyRXZlbnRFZGl0SW5mbyB9IGZyb20gJ0BnbG9iYWxwYXltZW50cy92ZWdhL2Rpc3QvdHlwZXMvY29tcG9uZW50cy92ZWdhLWNhbGVuZGFyL3R5cGVzJztcbmltcG9ydCB0eXBlIHsgVmVnYUNhbGVuZGFyRGF0ZUNsaWNrSW5mbyBhcyBJVmVnYUNhbGVuZGFyVmVnYUNhbGVuZGFyRGF0ZUNsaWNrSW5mbyB9IGZyb20gJ0BnbG9iYWxwYXltZW50cy92ZWdhL2Rpc3QvdHlwZXMvY29tcG9uZW50cy92ZWdhLWNhbGVuZGFyL3R5cGVzJztcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhQ2FsZW5kYXIgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FDYWxlbmRhciB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgY29tcG9uZW50IHZpZXcgY29udGVudCBjaGFuZ2UgYWZ0ZXIgYSBzd2l0Y2ggcGFuZWwgY2xpY2suIEB2ZWdhVmVyc2lvbiAyLjE0LjBcbiAgICovXG4gIHZlZ2FDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYUNhbGVuZGFyVmVnYUNhbGVuZGFyQ2hhbmdlRXZlbnRUeXBlPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgY29tcG9uZW50IHZpZXcgY29udGVudCBjaGFuZ2UgYWZ0ZXIgYSBzd2l0Y2ggcGFuZWwgY2xpY2suIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjE0LjBcbiAgICovXG4gIGNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhQ2FsZW5kYXJWZWdhQ2FsZW5kYXJDaGFuZ2VFdmVudFR5cGU+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoYXQgYSBjb21wb25lbnQgZXZlbnQgaXRlbSBpcyBjbGlja2VkLiBAdmVnYVZlcnNpb24gMi4xNC4wXG4gICAqL1xuICB2ZWdhRXZlbnRDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhQ2FsZW5kYXJWZWdhQ2FsZW5kYXJFdmVudENsaWNrSW5mbz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhhdCBhIGNvbXBvbmVudCBldmVudCBpdGVtIGlzIGNsaWNrZWQuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjE0LjBcbiAgICovXG4gIGV2ZW50Q2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYUNhbGVuZGFyVmVnYUNhbGVuZGFyRXZlbnRDbGlja0luZm8+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoYXQgYSBjYWxlbmRhciBldmVudCBlZGl0IGFjdGlvbiBpcyB0cmlnZ2VyZWQgZnJvbSB0aGUgZXZlbnQgcHJldmlldyBwb3BvdmVyLiBAdmVnYVZlcnNpb24gMi44Ny4wXG4gICAqL1xuICB2ZWdhRXZlbnRFZGl0OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FDYWxlbmRhclZlZ2FDYWxlbmRhckV2ZW50RWRpdEluZm8+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoYXQgYSBjYWxlbmRhciBldmVudCBlZGl0IGFjdGlvbiBpcyB0cmlnZ2VyZWQgZnJvbSB0aGUgZXZlbnQgcHJldmlldyBwb3BvdmVyLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi44Ny4wXG4gICAqL1xuICBldmVudEVkaXQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYUNhbGVuZGFyVmVnYUNhbGVuZGFyRXZlbnRFZGl0SW5mbz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhhdCBhIGNhbGVuZGFyIGRhdGUgaXRlbSBoYXMgYmVlbiBkb3VibGUtY2xpY2tlZC4gVGhlIGV2ZW50IHdpbGwgbm90IGJlIHRyaWdnZXJlZCBpZiBgZW5hYmxlRGF0YUNsaWNrYCBpcyBzZXQgdG8gdHJ1ZSB0byBwcmV2ZW50IGNvbmZsaWN0cy4gQHZlZ2FWZXJzaW9uIDIuMTcuMFxuICAgKi9cbiAgdmVnYURhdGVEYmxDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhQ2FsZW5kYXJWZWdhQ2FsZW5kYXJEYXRlQ2xpY2tJbmZvPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGF0IGEgY2FsZW5kYXIgZGF0ZSBpdGVtIGhhcyBiZWVuIGRvdWJsZS1jbGlja2VkLiBUaGUgZXZlbnQgd2lsbCBub3QgYmUgdHJpZ2dlcmVkIGlmIGBlbmFibGVEYXRhQ2xpY2tgIGlzIHRydWUgdG8gcHJldmVudCBjb25mbGljdHMuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjE3LjBcbiAgICovXG4gIGRhdGVEYmxDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhQ2FsZW5kYXJWZWdhQ2FsZW5kYXJEYXRlQ2xpY2tJbmZvPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGF0IGEgY2FsZW5kYXIgZGF0ZSBpdGVtIGhhcyBiZWVuIGNsaWNrZWQuIFRoZSBldmVudCB3aWxsIG5vdCBiZSB0cmlnZ2VyZWQgaWYgYGVuYWJsZURhdGFDbGlja2AgaXMgZmFsc2UuIEB2ZWdhVmVyc2lvbiAyLjYxLjBcbiAgICovXG4gIHZlZ2FEYXRlQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYUNhbGVuZGFyVmVnYUNhbGVuZGFyRGF0ZUNsaWNrSW5mbz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhhdCBhIGNhbGVuZGFyIGRhdGUgaXRlbSBoYXMgYmVlbiBjbGlja2VkLiBUaGUgZXZlbnQgd2lsbCBub3QgYmUgdHJpZ2dlcmVkIGlmIGBlbmFibGVEYXRhQ2xpY2tgIGlzIGZhbHNlLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi42MS4wXG4gICAqL1xuICBkYXRlQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYUNhbGVuZGFyVmVnYUNhbGVuZGFyRGF0ZUNsaWNrSW5mbz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhhdCBhIGNhbGVuZGFyIG1vcmUgYWN0aW9uIG1lbnUgaXRlbSBoYXMgYmVlbiBjbGlja2VkLiBAdmVnYVZlcnNpb24gMi4yMC4wXG4gICAqL1xuICB2ZWdhTW9yZUFjdGlvbkNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGF0IGEgY2FsZW5kYXIgbW9yZSBhY3Rpb24gbWVudSBpdGVtIGhhcyBiZWVuIGNsaWNrZWQuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjIwLjBcbiAgICovXG4gIG1vcmVBY3Rpb25DbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnZW5hYmxlRGF0ZUNsaWNrJywgJ2VuYWJsZWRFdmVudFByZXZpZXcnLCAnZXZlbnRFZGl0YWJsZScsICdldmVudHMnLCAnZ2V0RXZlbnRQcmV2aWV3QWN0aW9ucycsICdpc0RhdGVEaXNhYmxlZCcsICdtb3JlQWN0aW9uRHJvcGRvd25Qcm9wcycsICdzaG93RXZlbnRDb2xvckJhcicsICdzaG93U3dpdGNoVmlldycsICdzaG93V2Vla2VuZHMnLCAndGltZUZvcm1hdCcsICd0aW1lem9uZScsICd2aWV3TW9kZSddLFxuICBtZXRob2RzOiBbJ3NldEN1cnJlbnRQZXJpb2QnLCAnZ2V0Q3VycmVudFBlcmlvZCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1jYWxlbmRhcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnZW5hYmxlRGF0ZUNsaWNrJywgJ2VuYWJsZWRFdmVudFByZXZpZXcnLCAnZXZlbnRFZGl0YWJsZScsICdldmVudHMnLCAnZ2V0RXZlbnRQcmV2aWV3QWN0aW9ucycsICdpc0RhdGVEaXNhYmxlZCcsICdtb3JlQWN0aW9uRHJvcGRvd25Qcm9wcycsICdzaG93RXZlbnRDb2xvckJhcicsICdzaG93U3dpdGNoVmlldycsICdzaG93V2Vla2VuZHMnLCAndGltZUZvcm1hdCcsICd0aW1lem9uZScsICd2aWV3TW9kZSddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FDYWxlbmRhciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDaGFuZ2UnLCAnY2hhbmdlJywgJ3ZlZ2FFdmVudENsaWNrJywgJ2V2ZW50Q2xpY2snLCAndmVnYUV2ZW50RWRpdCcsICdldmVudEVkaXQnLCAndmVnYURhdGVEYmxDbGljaycsICdkYXRlRGJsQ2xpY2snLCAndmVnYURhdGVDbGljaycsICdkYXRlQ2xpY2snLCAndmVnYU1vcmVBY3Rpb25DbGljaycsICdtb3JlQWN0aW9uQ2xpY2snXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUNhbGVuZGFyRXZlbnQgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FDYWxlbmRhckV2ZW50IHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnY2FsZW5kYXJFdmVudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1jYWxlbmRhci1ldmVudCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnY2FsZW5kYXJFdmVudCddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FDYWxlbmRhckV2ZW50IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUNhbGVuZGFyRXZlbnRQcmV2aWV3IGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhQ2FsZW5kYXJFdmVudFByZXZpZXcge31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWRcbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWNhbGVuZGFyLWV2ZW50LXByZXZpZXcnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+J1xufSlcbmV4cG9ydCBjbGFzcyBWZWdhQ2FsZW5kYXJFdmVudFByZXZpZXcge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhQ2FsZW5kYXJFdmVudFNsb3QgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FDYWxlbmRhckV2ZW50U2xvdCB7fVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2V2ZW50S2V5J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWNhbGVuZGFyLWV2ZW50LXNsb3QnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2V2ZW50S2V5J11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUNhbGVuZGFyRXZlbnRTbG90IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuaW1wb3J0IHR5cGUgeyBWZWdhQ2FsZW5kYXJQZXJpb2RUeXBlIGFzIElWZWdhQ2FsZW5kYXJQZXJpb2RTd2l0Y2hlclZlZ2FDYWxlbmRhclBlcmlvZFR5cGUgfSBmcm9tICdAZ2xvYmFscGF5bWVudHMvdmVnYS9kaXN0L3R5cGVzL2NvbXBvbmVudHMvdmVnYS1jYWxlbmRhci90eXBlcyc7XG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUNhbGVuZGFyUGVyaW9kU3dpdGNoZXIgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FDYWxlbmRhclBlcmlvZFN3aXRjaGVyIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoYXQgdGhlIGNhbGVuZGFyIHBlcmlvZCBoYXMgY2hhbmdlZC4gQHZlZ2FWZXJzaW9uIDIuOTEuMFxuICAgKi9cbiAgdmVnYUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhQ2FsZW5kYXJQZXJpb2RTd2l0Y2hlclZlZ2FDYWxlbmRhclBlcmlvZFR5cGU+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoYXQgdGhlIGNhbGVuZGFyIHBlcmlvZCBoYXMgY2hhbmdlZC4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuOTEuMFxuICAgKi9cbiAgY2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FDYWxlbmRhclBlcmlvZFN3aXRjaGVyVmVnYUNhbGVuZGFyUGVyaW9kVHlwZT4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnc2hvd1dlZWtlbmRzJywgJ3RpbWV6b25lJywgJ3ZpZXdNb2RlJ10sXG4gIG1ldGhvZHM6IFsnc2V0Q3VycmVudFBlcmlvZCcsICdnZXRDdXJyZW50UGVyaW9kJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWNhbGVuZGFyLXBlcmlvZC1zd2l0Y2hlcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnc2hvd1dlZWtlbmRzJywgJ3RpbWV6b25lJywgJ3ZpZXdNb2RlJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUNhbGVuZGFyUGVyaW9kU3dpdGNoZXIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2hhbmdlJywgJ2NoYW5nZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhQ2FyZCBleHRlbmRzIENvbXBvbmVudHMuVmVnYUNhcmQge31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydiYWNrZ3JvdW5kQ29sb3InLCAnbWFyZ2luJywgJ3BhZGRpbmcnLCAndmFyaWFudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1jYXJkJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydiYWNrZ3JvdW5kQ29sb3InLCAnbWFyZ2luJywgJ3BhZGRpbmcnLCAndmFyaWFudCddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FDYXJkIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUNhcm91c2VsIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhQ2Fyb3VzZWwge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIHRyYW5zaXRpb24gb2YgdGhlIGNhcm91c2VsIHRvIGFub3RoZXIgcGFnZSxcbiAgIHdoZXRoZXIgdHJpZ2dlcmVkIHByb2dyYW1tYXRpY2FsbHkgb3IgdGhyb3VnaCB1c2VyIGludGVyYWN0aW9uLiBAdmVnYVZlcnNpb24gMS4zLjBcbiAgICovXG4gIHZlZ2FQYWdlVXBkYXRlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8bnVtYmVyPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgdHJhbnNpdGlvbiBvZiB0aGUgY2Fyb3VzZWwgdG8gYW5vdGhlciBwYWdlLFxuICAgd2hldGhlciB0cmlnZ2VyZWQgcHJvZ3JhbW1hdGljYWxseSBvciB0aHJvdWdoIHVzZXIgaW50ZXJhY3Rpb24uIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgcGFnZVVwZGF0ZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PG51bWJlcj4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnY2FuU3dpcGUnLCAnaXRlbXNQZXJQYWdlJywgJ3BlclBhZ2UnLCAnc2hvd1NsaWRlcicsICdzcGFjaW5nJ10sXG4gIG1ldGhvZHM6IFsnbmV4dFBhZ2UnLCAncHJldlBhZ2UnLCAnZ29Ub1BhZ2UnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtY2Fyb3VzZWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2NhblN3aXBlJywgJ2l0ZW1zUGVyUGFnZScsICdwZXJQYWdlJywgJ3Nob3dTbGlkZXInLCAnc3BhY2luZyddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FDYXJvdXNlbCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FQYWdlVXBkYXRlJywgJ3BhZ2VVcGRhdGUnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUNoZWNrYm94IGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhQ2hlY2tib3gge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgY2hhbmdlcyBpbiB0aGUgdmFsdWUgb2YgdGhlIGNoZWNrYm94LFxuICAgd2hldGhlciB0cmlnZ2VyZWQgcHJvZ3JhbW1hdGljYWxseSBvciB0aHJvdWdoIHVzZXIgaW50ZXJhY3Rpb24uIEB2ZWdhVmVyc2lvbiAxLjAuMTBcbiAgICovXG4gIHZlZ2FDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmcgfCBib29sZWFuPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBjaGFuZ2VzIGluIHRoZSB2YWx1ZSBvZiB0aGUgY2hlY2tib3hcbiAgIHRyaWdnZXJlZCBleGNsdXNpdmVseSBieSB1c2VyIGludGVyYWN0aW9uIChtb3VzZSBjbGljayBvciBrZXlib2FyZCBhY3RpdmF0aW9uKS5cblxuVW5saWtlIGB2ZWdhQ2hhbmdlYCwgdGhpcyBldmVudCBkb2VzIE5PVCBmaXJlIHdoZW4gdGhlIGBjaGVja2VkYCBvciBgdmFsdWVgXG4gICBwcm9wIGlzIHJlYXNzaWduZWQgcHJvZ3JhbW1hdGljYWxseS4gVXNlIHRoaXMgZXZlbnQgd2hlbiB5b3Ugd2FudCB0byByZWFjdFxuICAgb25seSB0byByZWFsIHVzZXIgaW5wdXQgKGUuZy4sIGFuYWx5dGljcywgZGVyaXZlZCBcInNlbGVjdCBhbGxcIiBzdGF0ZSkuIEByZW1hcmtzIENhbGxpbmcgYGV2ZW50LnByZXZlbnREZWZhdWx0KClgIGlzIGEgbm8tb3Ag4oCUIGl0IGRvZXMgbm90IHJvbGxcbmJhY2sgYGNoZWNrZWRgL2B2YWx1ZWAgbm9yIHN1cHByZXNzIHRoZSBwYWlyZWQgYHZlZ2FDaGFuZ2VgIGV2ZW50LlxuYGNhbmNlbGFibGU6IHRydWVgIGlzIHJldGFpbmVkIG9ubHkgZm9yIHBhcml0eSB3aXRoIGB2ZWdhQ2hhbmdlYC4sQHNlZSB7bW9kdWxlIDp2ZWdhLWNoZWNrYm94LXVzZXItY2hhbmdlfSxAc2VlIHttb2R1bGUgOnZlZ2EtY2hlY2tib3gtdXNlci1jaGFuZ2Uta2V5Ym9hcmR9LEBzZWUge21vZHVsZSA6dmVnYS1jaGVja2JveC11c2VyLWNoYW5nZS1rZXlib2FyZC1lbnRlcn0sQHNlZSB7bW9kdWxlIDp2ZWdhLWNoZWNrYm94LXVzZXItY2hhbmdlLXByb2dyYW1tYXRpY30sQHNlZSB7bW9kdWxlIDp2ZWdhLWNoZWNrYm94LXVzZXItY2hhbmdlLWNvbnRhaW5tZW50fSxAdmVnYVZlcnNpb24gMi44OS4wXG4gICAqL1xuICB2ZWdhVXNlckNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZyB8IGJvb2xlYW4+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGNoYW5nZXMgaW4gdGhlIHZhbHVlIG9mIHRoZSBjaGVja2JveFxuICAgdHJpZ2dlcmVkIGV4Y2x1c2l2ZWx5IGJ5IHVzZXIgaW50ZXJhY3Rpb24gKG1vdXNlIGNsaWNrIG9yIGtleWJvYXJkIGFjdGl2YXRpb24pLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi44OS4wXG4gICAqL1xuICB1c2VyQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nIHwgYm9vbGVhbj4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgY2hhbmdlcyBpbiB0aGUgdmFsdWUgb2YgdGhlIGNoZWNrYm94LFxuICAgd2hldGhlciB0cmlnZ2VyZWQgcHJvZ3JhbW1hdGljYWxseSBvciB0aHJvdWdoIHVzZXIgaW50ZXJhY3Rpb24uIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgY2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nIHwgYm9vbGVhbj4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnY2hlY2tlZCcsICdkaXNhYmxlZCcsICdpZGVudGlmaWVyJywgJ2luZGV0ZXJtaW5hdGUnLCAnaXNWYWxpZCcsICduYW1lJywgJ3JlcXVpcmVkJywgJ3NpemUnLCAndmFsdWUnXSxcbiAgbWV0aG9kczogWydzZXRWYWx1ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1jaGVja2JveCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnY2hlY2tlZCcsICdkaXNhYmxlZCcsICdpZGVudGlmaWVyJywgJ2luZGV0ZXJtaW5hdGUnLCAnaXNWYWxpZCcsICduYW1lJywgJ3JlcXVpcmVkJywgJ3NpemUnLCAndmFsdWUnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhQ2hlY2tib3gge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2hhbmdlJywgJ3ZlZ2FVc2VyQ2hhbmdlJywgJ3VzZXJDaGFuZ2UnLCAnY2hhbmdlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FDaGVja2JveEdyb3VwIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhQ2hlY2tib3hHcm91cCB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBjaGFuZ2VzIGluIHRoZSB2YWx1ZVxuICBvZiBhbnkgbmVzdGVkIGNoZWNrYm94IHdpdGhpbiB0aGUgY2hlY2tib3ggZ3JvdXAsXG4gIHdoZXRoZXIgdHJpZ2dlcmVkIHByb2dyYW1tYXRpY2FsbHkgb3IgdGhyb3VnaFxuICB1c2VyIGludGVyYWN0aW9uLiBAdmVnYVZlcnNpb24gMS4wLjEwXG4gICAqL1xuICB2ZWdhQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nW10+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGNoYW5nZXMgaW4gdGhlIHZhbHVlIG9mIHRoZSBjaGVja2JveCBncm91cFxuICB0cmlnZ2VyZWQgZXhjbHVzaXZlbHkgYnkgdXNlciBpbnRlcmFjdGlvbiAobW91c2UgY2xpY2sgb3Iga2V5Ym9hcmRcbiAgYWN0aXZhdGlvbikgb24gYSBuZXN0ZWQgY2hlY2tib3guXG5cblVubGlrZSBgdmVnYUNoYW5nZWAsIHRoaXMgZXZlbnQgZG9lcyBOT1QgZmlyZSB3aGVuIHRoZSBgdmFsdWVgIHByb3BcbiAgaXMgcmVhc3NpZ25lZCBwcm9ncmFtbWF0aWNhbGx5LiBVc2UgdGhpcyBldmVudCB3aGVuIHlvdSB3YW50IHRvXG4gIHJlYWN0IG9ubHkgdG8gcmVhbCB1c2VyIGlucHV0IChlLmcuLCBhbmFseXRpY3MsIGRlcml2ZWRcbiAgXCJzZWxlY3QgYWxsXCIgc3RhdGUpLiBAcmVtYXJrcyBDYWxsaW5nIGBldmVudC5wcmV2ZW50RGVmYXVsdCgpYCBpcyBhIG5vLW9wIOKAlCBpdCBkb2VzIG5vdCByb2xsXG5iYWNrIGB2YWx1ZWAgbm9yIHN1cHByZXNzIHRoZSBwYWlyZWQgYHZlZ2FDaGFuZ2VgIGV2ZW50LlxuYGNhbmNlbGFibGU6IHRydWVgIGlzIHJldGFpbmVkIG9ubHkgZm9yIHBhcml0eSB3aXRoIGB2ZWdhQ2hhbmdlYC4sQHNlZSB7bW9kdWxlIDp2ZWdhLWNoZWNrYm94LWdyb3VwLXVzZXItY2hhbmdlfSxAc2VlIHttb2R1bGUgOnZlZ2EtY2hlY2tib3gtZ3JvdXAtdXNlci1jaGFuZ2UtcHJvZ3JhbW1hdGljfSxAc2VlIHttb2R1bGUgOnZlZ2EtY2hlY2tib3gtZ3JvdXAtdXNlci1jaGFuZ2Utbm8tZG91YmxlfSxAdmVnYVZlcnNpb24gMi44OS4wXG4gICAqL1xuICB2ZWdhVXNlckNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZ1tdPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBjaGFuZ2VzIGluIHRoZSB2YWx1ZVxuICBvZiBhbnkgbmVzdGVkIGNoZWNrYm94IHdpdGhpbiB0aGUgY2hlY2tib3ggZ3JvdXAsXG4gIHRyaWdnZXJlZCBleGNsdXNpdmVseSBieSB1c2VyIGludGVyYWN0aW9uIChtb3VzZSBjbGljayBvciBrZXlib2FyZCBhY3RpdmF0aW9uKS4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuODkuMFxuICAgKi9cbiAgdXNlckNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZ1tdPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBjaGFuZ2VzIGluIHRoZSB2YWx1ZVxuICBvZiBhbnkgbmVzdGVkIGNoZWNrYm94IHdpdGhpbiB0aGUgY2hlY2tib3ggZ3JvdXAsXG4gIHdoZXRoZXIgdHJpZ2dlcmVkIHByb2dyYW1tYXRpY2FsbHkgb3IgdGhyb3VnaFxuICB1c2VyIGludGVyYWN0aW9uLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZ1tdPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydhdXRvVmFsaWRhdGlvbicsICdkaXNhYmxlZCcsICdoaW50JywgJ2lzVmFsaWQnLCAnbGFiZWwnLCAnbmFtZScsICdvcHRpb25hbCcsICdyZXF1aXJlZCcsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWUnLCAndmVnYUZsZXhQcm9wJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWNoZWNrYm94LWdyb3VwJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydhdXRvVmFsaWRhdGlvbicsICdkaXNhYmxlZCcsICdoaW50JywgJ2lzVmFsaWQnLCAnbGFiZWwnLCAnbmFtZScsICdvcHRpb25hbCcsICdyZXF1aXJlZCcsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWUnLCAndmVnYUZsZXhQcm9wJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUNoZWNrYm94R3JvdXAge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2hhbmdlJywgJ3ZlZ2FVc2VyQ2hhbmdlJywgJ3VzZXJDaGFuZ2UnLCAnY2hhbmdlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FDaGlwIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhQ2hpcCB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgY2xpY2sgZXZlbnQgb2YgdGhlIGNsb3NlIGJ1dHRvbiBvZiB0aGUgY2hpcC5cblxuVGhpcyBldmVudCBpcyBvbmx5IGRpc3BhdGNoZWQgd2hlbiB0aGUgYHNob3dDbG9zZUljb25gIHByb3BlcnR5IGlzIHNldCB0byBgdHJ1ZWAuIEB2ZWdhVmVyc2lvbiAxLjExLjBcbiAgICovXG4gIHZlZ2FDbG9zZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjbGljayBldmVudCBvZiB0aGUgY2xvc2UgYnV0dG9uIG9mIHRoZSBjaGlwLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGNsb3NlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNsaWNrIGV2ZW50IG9mIHRoZSBjaGlwLlxuXG5UaGlzIGV2ZW50IGlzIG9ubHkgZGlzcGF0Y2hlZCB3aGVuIHRoZSBgY2xpY2thYmxlYCBwcm9wZXJ0eSBpcyBzZXQgdG8gYHRydWVgLiBAdmVnYVZlcnNpb24gMS4xMS4wXG4gICAqL1xuICB2ZWdhQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgY2xpY2sgZXZlbnQgb2YgdGhlIGNoaXAuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgY2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydiZ0NvbG9yJywgJ2NoaXBUeXBlJywgJ2NsaWNrYWJsZScsICdpY29uJywgJ2ljb25BbGlnbicsICdpY29uQ29sb3InLCAnc2hvd0Nsb3NlSWNvbicsICdzaXplJywgJ3N0YXR1c0NvbG9yJywgJ3RleHQnLCAndGV4dENvbG9yJywgJ3ZhcmlhbnQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtY2hpcCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnYmdDb2xvcicsICdjaGlwVHlwZScsICdjbGlja2FibGUnLCAnaWNvbicsICdpY29uQWxpZ24nLCAnaWNvbkNvbG9yJywgJ3Nob3dDbG9zZUljb24nLCAnc2l6ZScsICdzdGF0dXNDb2xvcicsICd0ZXh0JywgJ3RleHRDb2xvcicsICd2YXJpYW50J11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUNoaXAge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2xvc2UnLCAnY2xvc2UnLCAndmVnYUNsaWNrJywgJ2NsaWNrJ10pO1xuICB9XG59XG5cbmltcG9ydCB0eXBlIHsgVmVnYUNvZGVCbG9ja1ZhbHVlIGFzIElWZWdhQ29kZUJsb2NrVmVnYUNvZGVCbG9ja1ZhbHVlIH0gZnJvbSAnQGdsb2JhbHBheW1lbnRzL3ZlZ2EvZGlzdC90eXBlcy9jb21wb25lbnRzL3ZlZ2EtY29kZS1ibG9jay90eXBlcyc7XG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUNvZGVCbG9jayBleHRlbmRzIENvbXBvbmVudHMuVmVnYUNvZGVCbG9jayB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBhIHZhbHVlIGNoYW5nZS4gQHZlZ2FWZXJzaW9uIDIuNTAuMFxuICAgKi9cbiAgdmVnYUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhQ29kZUJsb2NrVmVnYUNvZGVCbG9ja1ZhbHVlPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBhIHZhbHVlIGNoYW5nZS4gQHZlZ2FWZXJzaW9uIDIuNTAuMCxAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZVxuICAgKi9cbiAgY2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FDb2RlQmxvY2tWZWdhQ29kZUJsb2NrVmFsdWU+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBkZWxldGlvbiBvZiB0aGUgY29kZSBibG9jay4gQnkgZGVmYXVsdCwgdGhlIGVsZW1lbnQgaXMgcmVtb3ZlZCBmcm9tIHRoZSBwYWdlLCBidXQgdGhpcyBiZWhhdmlvciBjYW4gYmUgcHJldmVudGVkLiBAdmVnYVZlcnNpb24gMi41MC4wXG4gICAqL1xuICB2ZWdhUmVtb3ZlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8YW55Pj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgZGVsZXRpb24gb2YgdGhlIGNvZGUgYmxvY2suIEJ5IGRlZmF1bHQsIHRoZSBlbGVtZW50IGlzIHJlbW92ZWQgZnJvbSB0aGUgcGFnZSwgYnV0IHRoaXMgYmVoYXZpb3IgY2FuIGJlIHByZXZlbnRlZC4gQHZlZ2FWZXJzaW9uIDIuNTAuMCxAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZVxuICAgKi9cbiAgcmVtb3ZlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8YW55Pj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydkaXNhYmxlZCcsICdyZWFkT25seScsICdzaG93Q29weUJ1dHRvbicsICdzaG93TGluZU51bWJlcicsICd2YWx1ZSddLFxuICBtZXRob2RzOiBbJ2RvRm9jdXMnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtY29kZS1ibG9jaycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnZGlzYWJsZWQnLCAncmVhZE9ubHknLCAnc2hvd0NvcHlCdXR0b24nLCAnc2hvd0xpbmVOdW1iZXInLCAndmFsdWUnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhQ29kZUJsb2NrIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUNoYW5nZScsICdjaGFuZ2UnLCAndmVnYVJlbW92ZScsICdyZW1vdmUnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUNvbG9yUGlja2VyIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhQ29sb3JQaWNrZXIge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgY2hhbmdlcyBpbiB0aGUgdmFsdWUgb2YgdGhlIGNvbG9yIHBpY2tlcixcbiAgIHdoZXRoZXIgdHJpZ2dlcmVkIHByb2dyYW1tYXRpY2FsbHkgb3IgdGhyb3VnaCB1c2VyIGludGVyYWN0aW9uLiBAdmVnYVZlcnNpb24gMS4xMy4wXG4gICAqL1xuICB2ZWdhQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBjaGFuZ2VzIGluIHRoZSB2YWx1ZSBvZiB0aGUgY29sb3IgcGlja2VyLFxuICAgd2hldGhlciB0cmlnZ2VyZWQgcHJvZ3JhbW1hdGljYWxseSBvciB0aHJvdWdoIHVzZXIgaW50ZXJhY3Rpb24uIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgY2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydhdXRvVmFsaWRhdGlvbicsICdjb2xvcnMnLCAnY29sdW1ucycsICdkaXNhYmxlZCcsICdoaW50JywgJ2lzSW5saW5lJywgJ2lzVmFsaWQnLCAnbGFiZWwnLCAnbmFtZScsICdvcHRpb25hbCcsICdyZXF1aXJlZCcsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtY29sb3ItcGlja2VyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydhdXRvVmFsaWRhdGlvbicsICdjb2xvcnMnLCAnY29sdW1ucycsICdkaXNhYmxlZCcsICdoaW50JywgJ2lzSW5saW5lJywgJ2lzVmFsaWQnLCAnbGFiZWwnLCAnbmFtZScsICdvcHRpb25hbCcsICdyZXF1aXJlZCcsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWUnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhQ29sb3JQaWNrZXIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2hhbmdlJywgJ2NoYW5nZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhQ29sb3JTd2F0Y2ggZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FDb2xvclN3YXRjaCB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgY2xpY2sgZXZlbnQgb2YgdGhlIHN3YXRjaC4gQHZlZ2FWZXJzaW9uIDIuODIuMFxuICAgKi9cbiAgdmVnYUNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNsaWNrIGV2ZW50IG9mIHRoZSBzd2F0Y2guIEB2ZWdhVmVyc2lvbiAyLjgyLjAsQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmVcbiAgICovXG4gIGNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnY29sb3InLCAnZGlzYWJsZWQnLCAnbGFiZWwnLCAnc2VsZWN0ZWQnLCAnc2hhcGUnLCAnc2l6ZScsICd2YXJpYW50J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWNvbG9yLXN3YXRjaCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnY29sb3InLCAnZGlzYWJsZWQnLCAnbGFiZWwnLCAnc2VsZWN0ZWQnLCAnc2hhcGUnLCAnc2l6ZScsICd2YXJpYW50J11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUNvbG9yU3dhdGNoIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUNsaWNrJywgJ2NsaWNrJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FDb2xvclN3YXRjaFBpY2tlciBleHRlbmRzIENvbXBvbmVudHMuVmVnYUNvbG9yU3dhdGNoUGlja2VyIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjaGFuZ2Ugb2YgdGhlIHNlbGVjdGVkIGNvbG9yIHZhbHVlLiBAdmVnYVZlcnNpb24gMi44NC4wXG4gICAqL1xuICB2ZWdhQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgY2hhbmdlIG9mIHRoZSBzZWxlY3RlZCBjb2xvciB2YWx1ZS4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuODQuMFxuICAgKi9cbiAgY2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydhdXRvVmFsaWRhdGlvbicsICdjb2xvcnMnLCAnZGlzYWJsZWQnLCAnaW5wdXRGb3JtYXR0ZXInLCAnaW5wdXRQbGFjZWhvbGRlcicsICdpbnB1dFByZWZpeEljb24nLCAnaXNWYWxpZCcsICdsYWJlbCcsICduYW1lJywgJ3JlcXVpcmVkJywgJ3Nob3dDbGVhckJ1dHRvbicsICdzaG93SW5wdXQnLCAnc3dhdGNoR3JpZENvbHVtbnMnLCAndmFsaWRhdGlvblJ1bGVzJywgJ3ZhbHVlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWNvbG9yLXN3YXRjaC1waWNrZXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2F1dG9WYWxpZGF0aW9uJywgJ2NvbG9ycycsICdkaXNhYmxlZCcsICdpbnB1dEZvcm1hdHRlcicsICdpbnB1dFBsYWNlaG9sZGVyJywgJ2lucHV0UHJlZml4SWNvbicsICdpc1ZhbGlkJywgJ2xhYmVsJywgJ25hbWUnLCAncmVxdWlyZWQnLCAnc2hvd0NsZWFyQnV0dG9uJywgJ3Nob3dJbnB1dCcsICdzd2F0Y2hHcmlkQ29sdW1ucycsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWUnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhQ29sb3JTd2F0Y2hQaWNrZXIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2hhbmdlJywgJ2NoYW5nZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhQ29tYm9Cb3ggZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FDb21ib0JveCB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBjaGFuZ2VzIGluIHRoZSBpdGVtcyBvZiB0aGUgY29tYm8gYm94IHZhbHVlLFxuICAgd2hldGhlciB0cmlnZ2VyZWQgcHJvZ3JhbW1hdGljYWxseSBvciB0aHJvdWdoIHVzZXIgaW50ZXJhY3Rpb24uIEB2ZWdhVmVyc2lvbiAxLjExLjBcbiAgICovXG4gIHZlZ2FDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmdbXT4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgY2hhbmdlcyBpbiB0aGUgaXRlbXMgb2YgdGhlIGNvbWJvIGJveCB2YWx1ZSxcbiAgIHdoZXRoZXIgdHJpZ2dlcmVkIHByb2dyYW1tYXRpY2FsbHkgb3IgdGhyb3VnaCB1c2VyIGludGVyYWN0aW9uLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZ1tdPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB3aGVuIHRoZSB1c2VyIGhhcyBjaG9zZW4gdG8gYWRkIGEgbmV3IHZhbHVlXG4gICB0byB0aGUgc291cmNlIGFuZCB2YWx1ZSBvZiB0aGUgY29tYm8gYm94LlxuXG5UaGUgZXZlbnQncyBgZGV0YWlsYCBwcm9wZXJ0eSBjb250YWlucyB0aGUgbmV3IHZhbHVlLlxuXG5UaGUgY29tYm8gYm94IF9kb2VzIG5vdF8gYXV0b21hdGljYWxseSBhZGQgdGhlIG5ldyB2YWx1ZSB0byBpdHMgYHNvdXJjZWAgYW5kIGB2YWx1ZWAuIEB2ZWdhVmVyc2lvbiAxLjE0LjBcbiAgICovXG4gIHZlZ2FDcmVhdGU6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHdoZW4gdGhlIHVzZXIgaGFzIGNob3NlbiB0byBhZGQgYSBuZXcgdmFsdWVcbiAgIHRvIHRoZSBzb3VyY2UgYW5kIHZhbHVlIG9mIHRoZSBjb21ibyBib3guXG5cblRoZSBldmVudCdzIGBkZXRhaWxgIHByb3BlcnR5IGNvbnRhaW5zIHRoZSBuZXcgdmFsdWUuXG5cblRoZSBjb21ibyBib3ggX2RvZXMgbm90XyBhdXRvbWF0aWNhbGx5IGFkZCB0aGUgbmV3IHZhbHVlIHRvIGl0cyBgc291cmNlYCBhbmQgYHZhbHVlYC4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBjcmVhdGU6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSB1c2VyJ3Mgc2VhcmNoIGFjdGlvbiBpbiB0aGUgY29tYm8gYm94LFxuICAgYnV0IG9ubHkgaWYgdGhlIGB1c2VEZWZhdWx0RmlsdGVyYCBwcm9wZXJ0eSBpcyBzZXQgdG8gYGZhbHNlYC4gQHZlZ2FWZXJzaW9uIDEuMjQuMFxuICAgKi9cbiAgdmVnYVNlYXJjaDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIHVzZXIncyBzZWFyY2ggYWN0aW9uIGluIHRoZSBjb21ibyBib3gsXG4gICBidXQgb25seSBpZiB0aGUgYHVzZURlZmF1bHRGaWx0ZXJgIHByb3BlcnR5IGlzIHNldCB0byBgZmFsc2VgLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIHNlYXJjaDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBvbmx5IGZpcmVkIHdoZW4gdGhlIFNlbGVjdCBBbGwgY2hlY2tib3ggaW4gdGhlIGRyb3Bkb3duIGhhcyBiZWVuIGNsaWNrZWQuXG5cblRoZSBldmVudCdzIGBkZXRhaWxgIHByb3BlcnR5IGlzIGB0cnVlYCB3aGVuIHRoZSBTZWxlY3QgQWxsIGNoZWNrYm94IGlzIGNsaWNrZWQgdG8gc2VsZWN0IGFsbCBpdGVtcyxcbiAgIGFuZCBgZmFsc2VgIHdoZW4gdGhlIFNlbGVjdCBBbGwgY2hlY2tib3ggaXMgY2xpY2tlZCB0byBjbGVhciBhbGwgc2VsZWN0ZWQgaXRlbXMuIEB2ZWdhVmVyc2lvbiAyLjk1LjBcbiAgICovXG4gIHZlZ2FEcm9wZG93blNlbGVjdEFsbENsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8Ym9vbGVhbj4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBvbmx5IGZpcmVkIHdoZW4gdGhlIFNlbGVjdCBBbGwgY2hlY2tib3ggaW4gdGhlIGRyb3Bkb3duIGhhcyBiZWVuIGNsaWNrZWQuXG5cblRoZSBldmVudCdzIGBkZXRhaWxgIHByb3BlcnR5IGlzIGB0cnVlYCB3aGVuIHRoZSBTZWxlY3QgQWxsIGNoZWNrYm94IGlzIGNsaWNrZWQgdG8gc2VsZWN0IGFsbCBpdGVtcyxcbiAgIGFuZCBgZmFsc2VgIHdoZW4gdGhlIFNlbGVjdCBBbGwgY2hlY2tib3ggaXMgY2xpY2tlZCB0byBjbGVhciBhbGwgc2VsZWN0ZWQgaXRlbXMuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjk1LjBcbiAgICovXG4gIGRyb3Bkb3duU2VsZWN0QWxsQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxib29sZWFuPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydhdXRvVmFsaWRhdGlvbicsICdjb250YWluZXJNYXhIZWlnaHQnLCAnZGlzYWJsZWQnLCAnaGludCcsICdpc1ZhbGlkJywgJ2xhYmVsJywgJ25hbWUnLCAnb3B0aW9uYWwnLCAncGxhY2Vob2xkZXInLCAncmVxdWlyZWQnLCAnc2l6ZScsICdzb3VyY2UnLCAndXNlRGVmYXVsdEZpbHRlcicsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWUnLCAndmVnYURyb3Bkb3duUHJvcHMnXSxcbiAgbWV0aG9kczogWydjbG9zZScsICdvcGVuJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWNvbWJvLWJveCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnYXV0b1ZhbGlkYXRpb24nLCAnY29udGFpbmVyTWF4SGVpZ2h0JywgJ2Rpc2FibGVkJywgJ2hpbnQnLCAnaXNWYWxpZCcsICdsYWJlbCcsICduYW1lJywgJ29wdGlvbmFsJywgJ3BsYWNlaG9sZGVyJywgJ3JlcXVpcmVkJywgJ3NpemUnLCAnc291cmNlJywgJ3VzZURlZmF1bHRGaWx0ZXInLCAndmFsaWRhdGlvblJ1bGVzJywgJ3ZhbHVlJywgJ3ZlZ2FEcm9wZG93blByb3BzJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUNvbWJvQm94IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUNoYW5nZScsICdjaGFuZ2UnLCAndmVnYUNyZWF0ZScsICdjcmVhdGUnLCAndmVnYVNlYXJjaCcsICdzZWFyY2gnLCAndmVnYURyb3Bkb3duU2VsZWN0QWxsQ2xpY2snLCAnZHJvcGRvd25TZWxlY3RBbGxDbGljayddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhQ291bnRlckJhZGdlIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhQ291bnRlckJhZGdlIHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnY29sb3InLCAnY291bnQnLCAnZG90JywgJ29mZnNldCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1jb3VudGVyLWJhZGdlJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydjb2xvcicsICdjb3VudCcsICdkb3QnLCAnb2Zmc2V0J11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUNvdW50ZXJCYWRnZSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cbmltcG9ydCB0eXBlIHsgRGF0ZVBpY2tlck1vbnRoWWVhclR5cGVzIGFzIElWZWdhRGF0ZVBpY2tlckRhdGVQaWNrZXJNb250aFllYXJUeXBlcyB9IGZyb20gJ0BnbG9iYWxwYXltZW50cy92ZWdhL2Rpc3QvdHlwZXMvY29tcG9uZW50cy92ZWdhLWRhdGUtcGlja2VyL3R5cGVzJztcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhRGF0ZVBpY2tlciBleHRlbmRzIENvbXBvbmVudHMuVmVnYURhdGVQaWNrZXIge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNoYW5nZSBvZiB0aGUgdmFsdWUgaW4gdGhlIGRhdGUgcGlja2VyLFxuICAgd2hldGhlciB0cmlnZ2VyZWQgcHJvZ3JhbW1hdGljYWxseSBvciB0aHJvdWdoIHVzZXIgaW50ZXJhY3Rpb24uIEB2ZWdhVmVyc2lvbiAxLjMuMFxuICAgKi9cbiAgdmVnYUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZyB8IHN0cmluZ1tdPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgY2hhbmdlIG9mIHRoZSB2YWx1ZSBpbiB0aGUgZGF0ZSBwaWNrZXIsXG4gICB3aGV0aGVyIHRyaWdnZXJlZCBwcm9ncmFtbWF0aWNhbGx5IG9yIHRocm91Z2ggdXNlciBpbnRlcmFjdGlvbi4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmcgfCBzdHJpbmdbXT4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIG1vbnRoIGFuZCB5ZWFyIGNoYW5nZSB3aGVuIHRoZSBuYXZpZ2F0aW9uIGJ1dHRvbnMgYXJlIGNsaWNrZWQgb3IgdGhlIG1vbnRoIGFuZCB5ZWFyIGRyb3Bkb3ducyBhcmUgc2VsZWN0ZWQgaW4gdGhlIGRhdGUgcGlja2VyLFxuICAgd2hldGhlciB0cmlnZ2VyZWQgcHJvZ3JhbW1hdGljYWxseSBvciB0aHJvdWdoIHVzZXIgaW50ZXJhY3Rpb24uIEB2ZWdhVmVyc2lvbiAyLjYxLjBcbiAgICovXG4gIHZlZ2FNb250aFllYXJDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYURhdGVQaWNrZXJEYXRlUGlja2VyTW9udGhZZWFyVHlwZXM+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBtb250aCBhbmQgeWVhciBjaGFuZ2Ugd2hlbiB0aGUgbmF2aWdhdGlvbiBidXR0b25zIGFyZSBjbGlja2VkIG9yIHRoZSBtb250aCBhbmQgeWVhciBkcm9wZG93bnMgYXJlIHNlbGVjdGVkIGluIHRoZSBkYXRlIHBpY2tlciwgQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuNjEuMFxuICAgKi9cbiAgbW9udGhZZWFyQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FEYXRlUGlja2VyRGF0ZVBpY2tlck1vbnRoWWVhclR5cGVzPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydhbGxvd1JlcGljaycsICdhdXRvVmFsaWRhdGlvbicsICdjbGVhckJ1dHRvbicsICdkaXNhYmxlZCcsICdkcm9wZG93bkNvbmZpZycsICdmb3JtYXQnLCAnaXNEYXRlRGlzYWJsZWQnLCAnaXNWYWxpZCcsICdsYWJlbCcsICdtYXhEYXRlJywgJ21pbkRhdGUnLCAnbW9kZScsICduYW1lJywgJ29wdGlvbmFsJywgJ3BsYWNlaG9sZGVyJywgJ3JlYWRPbmx5JywgJ3JlcXVpcmVkJywgJ3Nob3dDbGVhckljb24nLCAnc2hvd1llYXJNb250aERyb3Bkb3ducycsICdzaXplJywgJ3RpbWV6b25lJywgJ3ZhbGlkYXRpb25SdWxlcycsICd2YWx1ZSddLFxuICBtZXRob2RzOiBbJ2RvQ2xvc2UnLCAnZG9PcGVuJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWRhdGUtcGlja2VyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydhbGxvd1JlcGljaycsICdhdXRvVmFsaWRhdGlvbicsICdjbGVhckJ1dHRvbicsICdkaXNhYmxlZCcsICdkcm9wZG93bkNvbmZpZycsICdmb3JtYXQnLCAnaXNEYXRlRGlzYWJsZWQnLCAnaXNWYWxpZCcsICdsYWJlbCcsICdtYXhEYXRlJywgJ21pbkRhdGUnLCAnbW9kZScsICduYW1lJywgJ29wdGlvbmFsJywgJ3BsYWNlaG9sZGVyJywgJ3JlYWRPbmx5JywgJ3JlcXVpcmVkJywgJ3Nob3dDbGVhckljb24nLCAnc2hvd1llYXJNb250aERyb3Bkb3ducycsICdzaXplJywgJ3RpbWV6b25lJywgJ3ZhbGlkYXRpb25SdWxlcycsICd2YWx1ZSddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FEYXRlUGlja2VyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUNoYW5nZScsICdjaGFuZ2UnLCAndmVnYU1vbnRoWWVhckNoYW5nZScsICdtb250aFllYXJDaGFuZ2UnXSk7XG4gIH1cbn1cblxuaW1wb3J0IHR5cGUgeyBEYXRlUGlja2VyTW9udGhZZWFyVHlwZXMgYXMgSVZlZ2FEYXRlUGlja2VyQ2FsZW5kYXJEYXRlUGlja2VyTW9udGhZZWFyVHlwZXMgfSBmcm9tICdAZ2xvYmFscGF5bWVudHMvdmVnYS9kaXN0L3R5cGVzL2NvbXBvbmVudHMvdmVnYS1kYXRlLXBpY2tlci90eXBlcyc7XG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYURhdGVQaWNrZXJDYWxlbmRhciBleHRlbmRzIENvbXBvbmVudHMuVmVnYURhdGVQaWNrZXJDYWxlbmRhciB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgY2hhbmdlIG9mIHRoZSB2YWx1ZSBpbiB0aGUgZGF0ZSBwaWNrZXIsXG4gICB3aGV0aGVyIHRyaWdnZXJlZCBwcm9ncmFtbWF0aWNhbGx5IG9yIHRocm91Z2ggdXNlciBpbnRlcmFjdGlvbi4gQHZlZ2FWZXJzaW9uIDIuNzIuMFxuICAgKi9cbiAgdmVnYUNsZWFyOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nIHwgc3RyaW5nW10+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjaGFuZ2Ugb2YgdGhlIHZhbHVlIGluIHRoZSBkYXRlIHBpY2tlcixcbiAgIHdoZXRoZXIgdHJpZ2dlcmVkIHByb2dyYW1tYXRpY2FsbHkgb3IgdGhyb3VnaCB1c2VyIGludGVyYWN0aW9uLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi43Mi4wXG4gICAqL1xuICBjbGVhcjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZyB8IHN0cmluZ1tdPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgbW9udGggYW5kIHllYXIgY2hhbmdlIHdoZW4gdGhlIG5hdmlnYXRpb24gYnV0dG9ucyBhcmUgY2xpY2tlZCBvciB0aGUgbW9udGggYW5kIHllYXIgZHJvcGRvd25zIGFyZSBzZWxlY3RlZCBpbiB0aGUgZGF0ZSBwaWNrZXIsXG4gICB3aGV0aGVyIHRyaWdnZXJlZCBwcm9ncmFtbWF0aWNhbGx5IG9yIHRocm91Z2ggdXNlciBpbnRlcmFjdGlvbi4gQHZlZ2FWZXJzaW9uIDIuNjEuMFxuICAgKi9cbiAgdmVnYU1vbnRoWWVhckNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhRGF0ZVBpY2tlckNhbGVuZGFyRGF0ZVBpY2tlck1vbnRoWWVhclR5cGVzPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgbW9udGggYW5kIHllYXIgY2hhbmdlIHdoZW4gdGhlIG5hdmlnYXRpb24gYnV0dG9ucyBhcmUgY2xpY2tlZCBvciB0aGUgbW9udGggYW5kIHllYXIgZHJvcGRvd25zIGFyZSBzZWxlY3RlZCBpbiB0aGUgZGF0ZSBwaWNrZXIsIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjYxLjBcbiAgICovXG4gIG1vbnRoWWVhckNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhRGF0ZVBpY2tlckNhbGVuZGFyRGF0ZVBpY2tlck1vbnRoWWVhclR5cGVzPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgY2hhbmdlIG9mIHRoZSB2YWx1ZSBpbiB0aGUgZGF0ZSBwaWNrZXIsXG4gICB3aGV0aGVyIHRyaWdnZXJlZCBwcm9ncmFtbWF0aWNhbGx5IG9yIHRocm91Z2ggdXNlciBpbnRlcmFjdGlvbi4gQHZlZ2FWZXJzaW9uIDIuNzIuMFxuICAgKi9cbiAgdmVnYVNlbGVjdGlvbkNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZyB8IHN0cmluZ1tdPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgY2hhbmdlIG9mIHRoZSB2YWx1ZSBpbiB0aGUgZGF0ZSBwaWNrZXIsXG4gICB3aGV0aGVyIHRyaWdnZXJlZCBwcm9ncmFtbWF0aWNhbGx5IG9yIHRocm91Z2ggdXNlciBpbnRlcmFjdGlvbi4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuNzIuMFxuICAgKi9cbiAgc2VsZWN0aW9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nIHwgc3RyaW5nW10+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSB0b2RheSBidXR0b24gaXMgY2xpY2tlZCBpbiB0aGUgZGF0ZSBwaWNrZXIuIEB2ZWdhVmVyc2lvbiAyLjg4LjBcbiAgICovXG4gIHZlZ2FUb2RheUNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgdG9kYXkgYnV0dG9uIGlzIGNsaWNrZWQgaW4gdGhlIGRhdGUgcGlja2VyLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi44OC4wXG4gICAqL1xuICB0b2RheUNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydjbGVhckJ1dHRvbicsICdkYXRlSW5kaWNhdG9yJywgJ2R1YWxNb250aHMnLCAnZmlsbENvbnRhaW5lcicsICdmb3JtYXQnLCAnaXNEYXRlRGlzYWJsZWQnLCAnbWF4RGF0ZScsICdtaW5EYXRlJywgJ21vZGUnLCAnc2VsZWN0aW9uJywgJ3Nob3dZZWFyTW9udGhEcm9wZG93bnMnLCAnc2l6ZScsICdzdGF0aWNIZWlnaHQnLCAndGltZXpvbmUnLCAneWVhck1vbnRoRHJvcGRvd25Qcm9wcyddLFxuICBtZXRob2RzOiBbJ3Jlc2V0JywgJ3RyaWdnZXJSZXBpY2snXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtZGF0ZS1waWNrZXItY2FsZW5kYXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2NsZWFyQnV0dG9uJywgJ2RhdGVJbmRpY2F0b3InLCAnZHVhbE1vbnRocycsICdmaWxsQ29udGFpbmVyJywgJ2Zvcm1hdCcsICdpc0RhdGVEaXNhYmxlZCcsICdtYXhEYXRlJywgJ21pbkRhdGUnLCAnbW9kZScsICdzZWxlY3Rpb24nLCAnc2hvd1llYXJNb250aERyb3Bkb3ducycsICdzaXplJywgJ3N0YXRpY0hlaWdodCcsICd0aW1lem9uZScsICd5ZWFyTW9udGhEcm9wZG93blByb3BzJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYURhdGVQaWNrZXJDYWxlbmRhciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDbGVhcicsICdjbGVhcicsICd2ZWdhTW9udGhZZWFyQ2hhbmdlJywgJ21vbnRoWWVhckNoYW5nZScsICd2ZWdhU2VsZWN0aW9uQ2hhbmdlJywgJ3NlbGVjdGlvbkNoYW5nZScsICd2ZWdhVG9kYXlDbGljaycsICd0b2RheUNsaWNrJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FEaWFsb2cgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FEaWFsb2cge31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydjYW5jZWxCdXR0b24nLCAnY29udGVudCcsICdkaWFsb2dUaXRsZScsICdoYW5kbGVDYW5jZWwnLCAnaGFuZGxlT2snLCAnbW9kYWxQcm9wcycsICdva0J1dHRvbicsICdzaG93Q2FuY2VsJywgJ3R5cGUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtZGlhbG9nJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydjYW5jZWxCdXR0b24nLCAnY29udGVudCcsICdkaWFsb2dUaXRsZScsICdoYW5kbGVDYW5jZWwnLCAnaGFuZGxlT2snLCAnbW9kYWxQcm9wcycsICdva0J1dHRvbicsICdzaG93Q2FuY2VsJywgJ3R5cGUnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhRGlhbG9nIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYURpdmlkZXIgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FEaXZpZGVyIHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnZGlyZWN0aW9uJywgJ21hcmdpbicsICd2YXJpYW50J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWRpdmlkZXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2RpcmVjdGlvbicsICdtYXJnaW4nLCAndmFyaWFudCddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FEaXZpZGVyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuaW1wb3J0IHR5cGUgeyBWZWdhRHJvcGRvd25TZWFyY2hUcmlnZ2VyRXZlbnREZXRhaWwgYXMgSVZlZ2FEcm9wZG93blZlZ2FEcm9wZG93blNlYXJjaFRyaWdnZXJFdmVudERldGFpbCB9IGZyb20gJ0BnbG9iYWxwYXltZW50cy92ZWdhL2Rpc3QvdHlwZXMvY29tcG9uZW50cy92ZWdhLWRyb3Bkb3duL3R5cGVzJztcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhRHJvcGRvd24gZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FEcm9wZG93biB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGF0IGEgZHJvcGRvd24gaXRlbSBoYXMgYmVlbiBjbGlja2VkLlxuXG5UaGUgZXZlbnQncyBgZGV0YWlsYCBwcm9wZXJ0eSBjb250YWlucyB0aGUga2V5IG9mIHRoZSBjbGlja2VkIGl0ZW0uIEB2ZWdhVmVyc2lvbiAxLjExLjBcbiAgICovXG4gIHZlZ2FEcm9wZG93bkNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGF0IGEgZHJvcGRvd24gaXRlbSBoYXMgYmVlbiBjbGlja2VkLlxuXG5UaGUgZXZlbnQncyBgZGV0YWlsYCBwcm9wZXJ0eSBjb250YWlucyB0aGUga2V5IG9mIHRoZSBjbGlja2VkIGl0ZW0uIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgZHJvcGRvd25DbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBvbmx5IGZpcmVkIHdoZW4gdGhlIFNlbGVjdCBBbGwgY2hlY2tib3ggaGFzIGJlZW4gY2xpY2tlZC5cblxuVGhlIGV2ZW50J3MgYGRldGFpbGAgcHJvcGVydHkgaXMgYHRydWVgIHdoZW4gdGhlIFNlbGVjdCBBbGwgY2hlY2tib3ggaXMgY2xpY2tlZCB0byBzZWxlY3QgYWxsIGl0ZW1zLFxuICAgYW5kIGBmYWxzZWAgd2hlbiB0aGUgU2VsZWN0IEFsbCBjaGVja2JveCBpcyBjbGlja2VkIHRvIGNsZWFyIGFsbCBzZWxlY3RlZCBpdGVtcy4gQHZlZ2FWZXJzaW9uIDIuOTMuMFxuICAgKi9cbiAgdmVnYURyb3Bkb3duU2VsZWN0QWxsQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxib29sZWFuPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG9ubHkgZmlyZWQgd2hlbiB0aGUgU2VsZWN0IEFsbCBjaGVja2JveCBoYXMgYmVlbiBjbGlja2VkLlxuXG5UaGUgZXZlbnQncyBgZGV0YWlsYCBwcm9wZXJ0eSBpcyBgdHJ1ZWAgd2hlbiB0aGUgU2VsZWN0IEFsbCBjaGVja2JveCBpcyBjbGlja2VkIHRvIHNlbGVjdCBhbGwgaXRlbXMsXG4gICBhbmQgYGZhbHNlYCB3aGVuIHRoZSBTZWxlY3QgQWxsIGNoZWNrYm94IGlzIGNsaWNrZWQgdG8gY2xlYXIgYWxsIHNlbGVjdGVkIGl0ZW1zLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi45My4wXG4gICAqL1xuICBkcm9wZG93blNlbGVjdEFsbENsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8Ym9vbGVhbj4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhhdCB0aGUgZHJvcGRvd24gaGFzIGJlZW4gZGlzcGxheWVkLFxuICAgZWl0aGVyIHByb2dyYW1tYXRpY2FsbHkgb3IgdmlhIHVzZXIgaW50ZXJhY3Rpb24uIEB2ZWdhVmVyc2lvbiAxLjMuMFxuICAgKi9cbiAgdmVnYVNob3c6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoYXQgdGhlIGRyb3Bkb3duIGhhcyBiZWVuIGRpc3BsYXllZCxcbiAgIGVpdGhlciBwcm9ncmFtbWF0aWNhbGx5IG9yIHZpYSB1c2VyIGludGVyYWN0aW9uLiBUaGUgbmFtZSBpcyBub3QgYHNob3dgIGJlY2F1c2UgYWxyZWFkeSBoYXMgYSBtZXRob2QgYHNob3dgLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGRyb3Bkb3duU2hvdzogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhhdCB0aGUgZHJvcGRvd24gaGFzIGJlZW4gZGlzbWlzc2VkLFxuICAgZWl0aGVyIHByb2dyYW1tYXRpY2FsbHkgb3IgdmlhIHVzZXIgaW50ZXJhY3Rpb24uIEB2ZWdhVmVyc2lvbiAxLjMuMFxuICAgKi9cbiAgdmVnYUhpZGU6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoYXQgdGhlIGRyb3Bkb3duIGhhcyBiZWVuIGRpc21pc3NlZCxcbiAgIGVpdGhlciBwcm9ncmFtbWF0aWNhbGx5IG9yIHZpYSB1c2VyIGludGVyYWN0aW9uLiBUaGUgbmFtZSBpcyBub3QgYGhpZGVgIGJlY2F1c2UgYWxyZWFkeSBoYXMgYSBtZXRob2QgYGhpZGVgLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGRyb3Bkb3duSGlkZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGFkZGl0aW9uIG9mIGEgbmV3IHZhbHVlXG4gICB0byB0aGUgZHJvcGRvd24gc291cmNlIGxpc3QuXG5cblRoZSBldmVudCdzIGBkZXRhaWxgIHByb3BlcnR5IGNvbnRhaW5zIHRoZSBuZXcgdmFsdWUuXG5cblRoZSBkcm9wZG93biBfZG9lcyBub3RfIGF1dG9tYXRpY2FsbHkgYWRkIHRoZSBuZXcgdmFsdWUgdG8gdGhlIHNvdXJjZSBsaXN0LiBAdmVnYVZlcnNpb24gMS4xNC4wXG4gICAqL1xuICB2ZWdhQ3JlYXRlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgYWRkaXRpb24gb2YgYSBuZXcgdmFsdWVcbiAgIHRvIHRoZSBkcm9wZG93biBzb3VyY2UgbGlzdC5cblxuVGhlIGV2ZW50J3MgYGRldGFpbGAgcHJvcGVydHkgY29udGFpbnMgdGhlIG5ldyB2YWx1ZS5cblxuVGhlIGRyb3Bkb3duIF9kb2VzIG5vdF8gYXV0b21hdGljYWxseSBhZGQgdGhlIG5ldyB2YWx1ZSB0byB0aGUgc291cmNlIGxpc3QuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgY3JlYXRlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgc2VhcmNoIGV2ZW50IGluIHRoZSBkcm9wZG93bixcbiAgIGJ1dCBvbmx5IGlmIGB1c2VEZWZhdWx0RmlsdGVyYCBpcyBzZXQgdG8gYGZhbHNlYC4gQHZlZ2FWZXJzaW9uIDEuMjQuMFxuICAgKi9cbiAgdmVnYVNlYXJjaDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIHNlYXJjaCBldmVudCBpbiB0aGUgZHJvcGRvd24sXG4gICBidXQgb25seSBpZiBgdXNlRGVmYXVsdEZpbHRlcmAgaXMgc2V0IHRvIGBmYWxzZWAuIFRoZSBuYW1lIGlzIG5vdCBgc2VhcmNoYCBiZWNhdXNlIGFscmVhZHkgaGFzIGEgbWV0aG9kIGBzZWFyY2hgLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGRyb3Bkb3duU2VhcmNoOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgcmVzZXQgZXZlbnQgaW4gdGhlIGRyb3Bkb3duLiBAdmVnYVZlcnNpb24gMi40Ni4wXG4gICAqL1xuICB2ZWdhUmVzZXQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSByZXNldCBldmVudCBpbiB0aGUgZHJvcGRvd24uIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjQ2LjBcbiAgICovXG4gIHJlc2V0OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgc2VhcmNoIGV2ZW50IHRyaWdnZXJlZCB3aXRoaW4gdGhlIGRyb3Bkb3duLFxuICAgYnV0IG9ubHkgaWYgYHVzZURlZmF1bHRGaWx0ZXJgIGlzIHNldCB0byBgZmFsc2VgLlxuVW5saWtlIHRoZSBWZWdhc2VhcmNoIGV2ZW50LCB0aGlzIGV2ZW50IGluY2x1ZGVzIHRoZSBkZXRhaWxzIG9mIHRoZSB1c2VyIHdobyB0cmlnZ2VyZWQgaXQuXG5JdCBjYW4gYmUgdHJpZ2dlcmVkIGluIHR3byB3YXlzOiBieSBwcmVzc2luZyBcIkVudGVyXCIgb3IgdGhyb3VnaCB1c2VyIGlucHV0LiBAdmVnYVZlcnNpb24gMi4zMC4wXG4gICAqL1xuICB2ZWdhU2VhcmNoVHJpZ2dlcjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhRHJvcGRvd25WZWdhRHJvcGRvd25TZWFyY2hUcmlnZ2VyRXZlbnREZXRhaWw+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBzZWFyY2ggZXZlbnQgdHJpZ2dlcmVkIHdpdGhpbiB0aGUgZHJvcGRvd24sXG4gICBidXQgb25seSBpZiBgdXNlRGVmYXVsdEZpbHRlcmAgaXMgc2V0IHRvIGBmYWxzZWAuXG5Vbmxpa2UgdGhlIFZlZ2FzZWFyY2ggZXZlbnQsIHRoaXMgZXZlbnQgaW5jbHVkZXMgdGhlIGRldGFpbHMgb2YgdGhlIHVzZXIgd2hvIHRyaWdnZXJlZCBpdC5cbkl0IGNhbiBiZSB0cmlnZ2VyZWQgaW4gdHdvIHdheXM6IGJ5IHByZXNzaW5nIFwiRW50ZXJcIiBvciB0aHJvdWdoIHVzZXIgaW5wdXQuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjMwLjBcbiAgICovXG4gIHNlYXJjaFRyaWdnZXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYURyb3Bkb3duVmVnYURyb3Bkb3duU2VhcmNoVHJpZ2dlckV2ZW50RGV0YWlsPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydhbGlnbm1lbnQnLCAnYWxsb3dTZWxlY3RBbGwnLCAnY2FzZVNlbnNpdGl2ZScsICdkeW5hbWljT3B0aW9uJywgJ2lzTGF6eUxvYWRpbmcnLCAnaXNMb2FkaW5nJywgJ2lzU2NyZWVuUG9zaXRpb24nLCAnaXRlbURpc3BsYXlSdWxlJywgJ2l0ZW1Ub29sdGlwUHJvcHMnLCAnbWF0Y2hDb250YWluZXJIZWlnaHQnLCAnbWF0Y2hUYXJnZXRXaWR0aCcsICdtYXhIZWlnaHQnLCAnbWF4V2lkdGgnLCAnbWluV2lkdGgnLCAncGxhY2VtZW50JywgJ3Bvc2l0aW9uUmVsYXRpdmVUbycsICdwcmVmaXhJY29uU2xvdCcsICdwcmVzZXJ2ZVZhbHVlSWZOb3RJblNvdXJjZScsICdyZXNldHRhYmxlJywgJ3NlYXJjaE5vUmVzdWx0c1RleHQnLCAnc2VhcmNoVHJpZ2dlckJ5JywgJ3NlYXJjaGFibGUnLCAnc2VsZWN0VHlwZScsICdzZWxlY3RlZFNvdXJjZUtleScsICdzaXplJywgJ3NvdXJjZScsICd0cmFuc2xvY2F0aW9uJywgJ3RyaWdnZXInLCAndXNlRGVmYXVsdEZpbHRlcicsICd2aXJ0dWFsaXphdGlvblRocmVzaG9sZCddLFxuICBtZXRob2RzOiBbJ3Nob3cnLCAnaGlkZScsICdzZWFyY2gnLCAnY2xlYXJTZWxlY3Rpb24nLCAnZ2V0U2VsZWN0aW9uJywgJ3NldFNlbGVjdGlvbicsICdzeW5jVGVtcGxhdGVEYXRhJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWRyb3Bkb3duJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydhbGlnbm1lbnQnLCAnYWxsb3dTZWxlY3RBbGwnLCAnY2FzZVNlbnNpdGl2ZScsICdkeW5hbWljT3B0aW9uJywgJ2lzTGF6eUxvYWRpbmcnLCAnaXNMb2FkaW5nJywgJ2lzU2NyZWVuUG9zaXRpb24nLCAnaXRlbURpc3BsYXlSdWxlJywgJ2l0ZW1Ub29sdGlwUHJvcHMnLCAnbWF0Y2hDb250YWluZXJIZWlnaHQnLCAnbWF0Y2hUYXJnZXRXaWR0aCcsICdtYXhIZWlnaHQnLCAnbWF4V2lkdGgnLCAnbWluV2lkdGgnLCAncGxhY2VtZW50JywgJ3Bvc2l0aW9uUmVsYXRpdmVUbycsICdwcmVmaXhJY29uU2xvdCcsICdwcmVzZXJ2ZVZhbHVlSWZOb3RJblNvdXJjZScsICdyZXNldHRhYmxlJywgJ3NlYXJjaE5vUmVzdWx0c1RleHQnLCAnc2VhcmNoVHJpZ2dlckJ5JywgJ3NlYXJjaGFibGUnLCAnc2VsZWN0VHlwZScsICdzZWxlY3RlZFNvdXJjZUtleScsICdzaXplJywgJ3NvdXJjZScsICd0cmFuc2xvY2F0aW9uJywgJ3RyaWdnZXInLCAndXNlRGVmYXVsdEZpbHRlcicsICd2aXJ0dWFsaXphdGlvblRocmVzaG9sZCddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FEcm9wZG93biB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FEcm9wZG93bkNsaWNrJywgJ2Ryb3Bkb3duQ2xpY2snLCAndmVnYURyb3Bkb3duU2VsZWN0QWxsQ2xpY2snLCAnZHJvcGRvd25TZWxlY3RBbGxDbGljaycsICd2ZWdhU2hvdycsICdkcm9wZG93blNob3cnLCAndmVnYUhpZGUnLCAnZHJvcGRvd25IaWRlJywgJ3ZlZ2FDcmVhdGUnLCAnY3JlYXRlJywgJ3ZlZ2FTZWFyY2gnLCAnZHJvcGRvd25TZWFyY2gnLCAndmVnYVJlc2V0JywgJ3Jlc2V0JywgJ3ZlZ2FTZWFyY2hUcmlnZ2VyJywgJ3NlYXJjaFRyaWdnZXInXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYURyb3Bkb3duQ29udGVudEJveCBleHRlbmRzIENvbXBvbmVudHMuVmVnYURyb3Bkb3duQ29udGVudEJveCB7fVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZFxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtZHJvcGRvd24tY29udGVudC1ib3gnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+J1xufSlcbmV4cG9ydCBjbGFzcyBWZWdhRHJvcGRvd25Db250ZW50Qm94IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYURyb3Bkb3duR3JvdXAgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FEcm9wZG93bkdyb3VwIHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnZGl2aWRlJywgJ2xhYmVsJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWRyb3Bkb3duLWdyb3VwJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydkaXZpZGUnLCAnbGFiZWwnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhRHJvcGRvd25Hcm91cCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cbmltcG9ydCB0eXBlIHsgVmVnYURyb3Bkb3duSXRlbUNsaWNrRXZlbnQgYXMgSVZlZ2FEcm9wZG93bkl0ZW1WZWdhRHJvcGRvd25JdGVtQ2xpY2tFdmVudCB9IGZyb20gJ0BnbG9iYWxwYXltZW50cy92ZWdhL2Rpc3QvdHlwZXMvY29tcG9uZW50cy92ZWdhLWRyb3Bkb3duL3ZlZ2EtZHJvcGRvd24taXRlbS90eXBlcyc7XG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYURyb3Bkb3duSXRlbSBleHRlbmRzIENvbXBvbmVudHMuVmVnYURyb3Bkb3duSXRlbSB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgZHJvcGRvd24gaXRlbSBoYXMgYmVlbiBjbGlja2VkLiBAdmVnYVZlcnNpb24gMS40Ny4wXG4gICAqL1xuICB2ZWdhQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYURyb3Bkb3duSXRlbVZlZ2FEcm9wZG93bkl0ZW1DbGlja0V2ZW50Pj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgZHJvcGRvd24gaXRlbSBoYXMgYmVlbiBjbGlja2VkLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FEcm9wZG93bkl0ZW1WZWdhRHJvcGRvd25JdGVtQ2xpY2tFdmVudD4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnY291bnQnLCAnZGFuZ2VyJywgJ2Rpc2FibGVkJywgJ2hlaWdodCcsICdpdGVtS2V5JywgJ2xhYmVsJywgJ3ByZWZpeEljb24nXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtZHJvcGRvd24taXRlbScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnY291bnQnLCAnZGFuZ2VyJywgJ2Rpc2FibGVkJywgJ2hlaWdodCcsICdpdGVtS2V5JywgJ2xhYmVsJywgJ3ByZWZpeEljb24nXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhRHJvcGRvd25JdGVtIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUNsaWNrJywgJ2NsaWNrJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FGaWVsZEVycm9yIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhRmllbGRFcnJvciB7fVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ21lc3NhZ2UnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtZmllbGQtZXJyb3InLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ21lc3NhZ2UnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhRmllbGRFcnJvciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FGaWVsZExhYmVsIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhRmllbGRMYWJlbCB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGF0IHRoZSBmaWVsZCBsYWJlbCBoYXMgYmVlbiBjbGlja2VkLiBAdmVnYVZlcnNpb24gMS40My4wXG4gICAqL1xuICB2ZWdhQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoYXQgdGhlIHN1ZmZpeCBidXR0b24gYXNzb2NpYXRlZCB3aXRoIHRoZSBmaWVsZCBsYWJlbCBoYXMgYmVlbiBjbGlja2VkLiBAdmVnYVZlcnNpb24gMi4yNS4wXG4gICAqL1xuICB2ZWdhTGFiZWxCdXR0b25DbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhhdCB0aGUgc3VmZml4IGJ1dHRvbiBhc3NvY2lhdGVkIHdpdGggdGhlIGZpZWxkIGxhYmVsIGhhcyBiZWVuIGNsaWNrZWQuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjI1LjBcbiAgICovXG4gIGxhYmVsQnV0dG9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2Rpc2FibGVkJywgJ2lzRmllbGRSZXF1aXJlZCcsICdsYWJlbCcsICdvcHRpb25hbCcsICdzdWZmaXhCdXR0b25Db25maWcnLCAnc3VmZml4QnV0dG9uUHJvcHMnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtZmllbGQtbGFiZWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2Rpc2FibGVkJywgJ2lzRmllbGRSZXF1aXJlZCcsICdsYWJlbCcsICdvcHRpb25hbCcsICdzdWZmaXhCdXR0b25Db25maWcnLCAnc3VmZml4QnV0dG9uUHJvcHMnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhRmllbGRMYWJlbCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDbGljaycsICd2ZWdhTGFiZWxCdXR0b25DbGljaycsICdsYWJlbEJ1dHRvbkNsaWNrJ10pO1xuICB9XG59XG5cbmltcG9ydCB0eXBlIHsgVmVnYUZpbGVVcGxvYWRlckZpbGVzIGFzIElWZWdhRmlsZVVwbG9hZGVyVmVnYUZpbGVVcGxvYWRlckZpbGVzIH0gZnJvbSAnQGdsb2JhbHBheW1lbnRzL3ZlZ2EvZGlzdC90eXBlcy9jb21wb25lbnRzL3ZlZ2EtZmlsZS11cGxvYWRlci90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IFZlZ2FGaWxlVXBsb2FkZXJGaWxlIGFzIElWZWdhRmlsZVVwbG9hZGVyVmVnYUZpbGVVcGxvYWRlckZpbGUgfSBmcm9tICdAZ2xvYmFscGF5bWVudHMvdmVnYS9kaXN0L3R5cGVzL2NvbXBvbmVudHMvdmVnYS1maWxlLXVwbG9hZGVyL3R5cGVzJztcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhRmlsZVVwbG9hZGVyIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhRmlsZVVwbG9hZGVyIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGEgY2hhbmdlIGluIHRoZSBmaWxlIGxpc3QuIEB2ZWdhVmVyc2lvbiAyLjI1LjBcbiAgICovXG4gIHZlZ2FDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYUZpbGVVcGxvYWRlclZlZ2FGaWxlVXBsb2FkZXJGaWxlcz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgYSBjaGFuZ2UgaW4gdGhlIGZpbGUgbGlzdC4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMjUuMFxuICAgKi9cbiAgY2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FGaWxlVXBsb2FkZXJWZWdhRmlsZVVwbG9hZGVyRmlsZXM+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGEgZmlsZSBzZWxlY3Rpb24gY2hhbmdlLiBCeSBkZWZhdWx0LCB0aGUgY29tcG9uZW50IHZhbHVlXG4gIGlzIHVwZGF0ZWQsIGJ1dCB0aGlzIGJlaGF2aW9yIGNhbiBiZSBwcmV2ZW50ZWQuIEB2ZWdhVmVyc2lvbiAyLjI1LjBcbiAgICovXG4gIHZlZ2FTZWxlY3RlZEZpbGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYUZpbGVVcGxvYWRlclZlZ2FGaWxlVXBsb2FkZXJGaWxlcz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgYSBmaWxlIHNlbGVjdGlvbiBjaGFuZ2UuIEJ5IGRlZmF1bHQsIHRoZSBjb21wb25lbnQgdmFsdWVcbiAgaXMgdXBkYXRlZCwgYnV0IHRoaXMgYmVoYXZpb3IgY2FuIGJlIHByZXZlbnRlZC4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMjUuMFxuICAgKi9cbiAgc2VsZWN0ZWRGaWxlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FGaWxlVXBsb2FkZXJWZWdhRmlsZVVwbG9hZGVyRmlsZXM+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoYXQgYSBzZWxlY3RlZCBmaWxlIHdpbGwgYmUgcmVtb3ZlZC4gQnkgZGVmYXVsdCwgdGhlIGNvbXBvbmVudCB2YWx1ZVxuICBpcyB1cGRhdGVkLCBidXQgdGhpcyBiZWhhdmlvciBjYW4gYmUgcHJldmVudGVkLiBAdmVnYVZlcnNpb24gMi4yNS4wXG4gICAqL1xuICB2ZWdhUmVtb3ZlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FGaWxlVXBsb2FkZXJWZWdhRmlsZVVwbG9hZGVyRmlsZT4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhhdCBhIHNlbGVjdGVkIGZpbGUgd2lsbCBiZSByZW1vdmVkLiBCeSBkZWZhdWx0LCB0aGUgY29tcG9uZW50IHZhbHVlXG4gIGlzIHVwZGF0ZWQsIGJ1dCB0aGlzIGJlaGF2aW9yIGNhbiBiZSBwcmV2ZW50ZWQuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjI1LjBcbiAgICovXG4gIHJlbW92ZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhRmlsZVVwbG9hZGVyVmVnYUZpbGVVcGxvYWRlckZpbGU+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoYXQgYSBmaWxlIHdpbGwgYmUgcmUtdXBsb2FkZWQuIEB2ZWdhVmVyc2lvbiAyLjI1LjBcbiAgICovXG4gIHZlZ2FSZXRyeTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhRmlsZVVwbG9hZGVyVmVnYUZpbGVVcGxvYWRlckZpbGU+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoYXQgYSBmaWxlIHdpbGwgYmUgcmUtdXBsb2FkZWQuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjI1LjBcbiAgICovXG4gIHJldHJ5OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FGaWxlVXBsb2FkZXJWZWdhRmlsZVVwbG9hZGVyRmlsZT4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhhdCBhIGZpbGUgd2lsbCBiZSBvcGVuZWQgZm9yIHByZXZpZXcuIEB2ZWdhVmVyc2lvbiAyLjI1LjBcbiAgICovXG4gIHZlZ2FQcmV2aWV3OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FGaWxlVXBsb2FkZXJWZWdhRmlsZVVwbG9hZGVyRmlsZT4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhhdCBhIGZpbGUgd2lsbCBiZSBvcGVuZWQgZm9yIHByZXZpZXcuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjI1LjBcbiAgICovXG4gIHByZXZpZXc6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYUZpbGVVcGxvYWRlclZlZ2FGaWxlVXBsb2FkZXJGaWxlPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydhY2NlcHQnLCAnYXV0b1ZhbGlkYXRpb24nLCAnZGlzYWJsZURlbGV0ZU9uVXBsb2FkJywgJ2Rpc2FibGVkJywgJ2hpZGVEZWxldGVCdXR0b24nLCAnaGludCcsICdpc1ZhbGlkJywgJ2xhYmVsJywgJ21heENvdW50JywgJ25hbWUnLCAnb3B0aW9uYWwnLCAncmVxdWlyZWQnLCAndmFsaWRhdGlvblJ1bGVzJywgJ3ZhbHVlJywgJ3ZhcmlhbnQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtZmlsZS11cGxvYWRlcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnYWNjZXB0JywgJ2F1dG9WYWxpZGF0aW9uJywgJ2Rpc2FibGVEZWxldGVPblVwbG9hZCcsICdkaXNhYmxlZCcsICdoaWRlRGVsZXRlQnV0dG9uJywgJ2hpbnQnLCAnaXNWYWxpZCcsICdsYWJlbCcsICdtYXhDb3VudCcsICduYW1lJywgJ29wdGlvbmFsJywgJ3JlcXVpcmVkJywgJ3ZhbGlkYXRpb25SdWxlcycsICd2YWx1ZScsICd2YXJpYW50J11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUZpbGVVcGxvYWRlciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDaGFuZ2UnLCAnY2hhbmdlJywgJ3ZlZ2FTZWxlY3RlZEZpbGVDaGFuZ2UnLCAnc2VsZWN0ZWRGaWxlQ2hhbmdlJywgJ3ZlZ2FSZW1vdmUnLCAncmVtb3ZlJywgJ3ZlZ2FSZXRyeScsICdyZXRyeScsICd2ZWdhUHJldmlldycsICdwcmV2aWV3J10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FGbGFnSWNvbiBleHRlbmRzIENvbXBvbmVudHMuVmVnYUZsYWdJY29uIHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnY291bnRyeScsICdzaXplJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWZsYWctaWNvbicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnY291bnRyeScsICdzaXplJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUZsYWdJY29uIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUZsZXggZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FGbGV4IHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnYWxpZ25JdGVtcycsICdicmVha3BvaW50JywgJ2RpcmVjdGlvbicsICdmbGV4JywgJ2ZsZXhCYXNpcycsICdmbGV4R3JvdycsICdmbGV4U2hyaW5rJywgJ2ZsZXhXcmFwJywgJ2dhcCcsICdqdXN0aWZ5Q29udGVudCcsICdtYXJnaW4nLCAndXNlTmF0aXZlRmxleCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1mbGV4JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydhbGlnbkl0ZW1zJywgJ2JyZWFrcG9pbnQnLCAnZGlyZWN0aW9uJywgJ2ZsZXgnLCAnZmxleEJhc2lzJywgJ2ZsZXhHcm93JywgJ2ZsZXhTaHJpbmsnLCAnZmxleFdyYXAnLCAnZ2FwJywgJ2p1c3RpZnlDb250ZW50JywgJ21hcmdpbicsICd1c2VOYXRpdmVGbGV4J11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUZsZXgge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhRm9udCBleHRlbmRzIENvbXBvbmVudHMuVmVnYUZvbnQge31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydhcycsICdjb2xvcicsICdkaXNhYmxlUmVzcG9uc2l2ZScsICd0ZXh0QWxpZ24nLCAndmFyaWFudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1mb250JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydhcycsICdjb2xvcicsICdkaXNhYmxlUmVzcG9uc2l2ZScsICd0ZXh0QWxpZ24nLCAndmFyaWFudCddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FGb250IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUZvcm0gZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FGb3JtIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjaGFuZ2UgaW4gdGhlIHZhbGlkYXRpb24gcmVzdWx0LiBAdmVnYVZlcnNpb24gMS45LjFcbiAgICovXG4gIHZlZ2FWYWxpZGF0ZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGJvb2xlYW4+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjaGFuZ2UgaW4gdGhlIHZhbGlkYXRpb24gcmVzdWx0LiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIHZhbGlkYXRlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8Ym9vbGVhbj4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIHN1Ym1pc3Npb24gb2YgdGhlIGZvcm0uIEB2ZWdhVmVyc2lvbiAxLjI0LjBcbiAgICovXG4gIHZlZ2FGb3JtU3VibWl0OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dW5rbm93bj4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIHN1Ym1pc3Npb24gb2YgdGhlIGZvcm0uIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgZm9ybVN1Ym1pdDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHVua25vd24+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSByZXNldCBvZiB0aGUgZm9ybS4gQHZlZ2FWZXJzaW9uIDEuMjQuMFxuICAgKi9cbiAgdmVnYUZvcm1SZXNldDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIHJlc2V0IG9mIHRoZSBmb3JtLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGZvcm1SZXNldDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnYWN0aW9uJywgJ2Rpc2FibGVCbHVyVmFsaWRhdGlvbicsICdpc1RvdWNoZWQnLCAnaXNWYWxpZCcsICdtZXRob2QnLCAnbmFtZScsICd1c2VOYXRpdmVGb3JtJ10sXG4gIG1ldGhvZHM6IFsndmFsaWQnLCAnZ2V0VmFsdWUnLCAnc2V0VmFsdWUnLCAncmVzZXQnLCAnc2V0VmFsaWRhdGlvblN0YXRlcyddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1mb3JtJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydhY3Rpb24nLCAnZGlzYWJsZUJsdXJWYWxpZGF0aW9uJywgJ2lzVG91Y2hlZCcsICdpc1ZhbGlkJywgJ21ldGhvZCcsICduYW1lJywgJ3VzZU5hdGl2ZUZvcm0nXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhRm9ybSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FWYWxpZGF0ZScsICd2YWxpZGF0ZScsICd2ZWdhRm9ybVN1Ym1pdCcsICdmb3JtU3VibWl0JywgJ3ZlZ2FGb3JtUmVzZXQnLCAnZm9ybVJlc2V0J10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FHcmlkIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhR3JpZCB7fVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2NvbHVtbicsICdnYXAnLCAnanVzdGlmeUl0ZW1zJywgJ3JvdyddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1ncmlkJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydjb2x1bW4nLCAnZ2FwJywgJ2p1c3RpZnlJdGVtcycsICdyb3cnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhR3JpZCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FIaW50IGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhSGludCB7fVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZFxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtaGludCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FIaW50IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUljb24gZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FJY29uIHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnY29sb3InLCAnaWNvbicsICdzaXplJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWljb24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2NvbG9yJywgJ2ljb24nLCAnc2l6ZSddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FJY29uIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuaW1wb3J0IHR5cGUgeyBWZWdhRmlsZU9wdGlvbmFsIGFzIElWZWdhSW1hZ2VVcGxvYWRlclZlZ2FGaWxlT3B0aW9uYWwgfSBmcm9tICdAZ2xvYmFscGF5bWVudHMvdmVnYS9kaXN0L3R5cGVzL2NvbXBvbmVudHMvdmVnYS1pbWFnZS11cGxvYWRlci90eXBlcyc7XG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUltYWdlVXBsb2FkZXIgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FJbWFnZVVwbG9hZGVyIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGEgdmFsdWUgY2hhbmdlLiBAdmVnYVZlcnNpb24gMS4xNC4wXG4gICAqL1xuICB2ZWdhQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FJbWFnZVVwbG9hZGVyVmVnYUZpbGVPcHRpb25hbD4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgYSB2YWx1ZSBjaGFuZ2UuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgY2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8YW55Pj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgcmVtb3ZhbCBvZiBhIHZhbHVlLiBAdmVnYVZlcnNpb24gMS4xNC4wXG4gICAqL1xuICB2ZWdhUmVtb3ZlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8YW55Pj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgcmVtb3ZhbCBvZiBhIHZhbHVlLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIHJlbW92ZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNhbmNlbGxhdGlvbiBvZiBhbiB1cGxvYWRpbmcgZXZlbnQuIEB2ZWdhVmVyc2lvbiAxLjE0LjBcbiAgICovXG4gIHZlZ2FDYW5jZWw6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSByZW1vdmFsIG9mIGEgdmFsdWUuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgY2FuY2VsOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8YW55Pj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydhY2NlcHQnLCAnYWN0aW9uU3ViVGl0bGUnLCAnYWN0aW9uVGl0bGUnLCAnYXV0b1ZhbGlkYXRpb24nLCAnZGlzYWJsZWQnLCAnaGVpZ2h0JywgJ2hpbnQnLCAnaXNWYWxpZCcsICdsYWJlbCcsICduYW1lJywgJ29wdGlvbmFsJywgJ3JlcXVpcmVkJywgJ3Nob3dQcmV2aWV3QnV0dG9uJywgJ3Nob3dSZW1vdmVCdXR0b24nLCAnc2hvd1JlcGxhY2VCdXR0b24nLCAnc3RhdHVzJywgJ3ZhbGlkYXRpb25SdWxlcycsICd2YWx1ZScsICd3aWR0aCddLFxuICBtZXRob2RzOiBbJ2dldENvbnRlbnRVUkwnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtaW1hZ2UtdXBsb2FkZXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2FjY2VwdCcsICdhY3Rpb25TdWJUaXRsZScsICdhY3Rpb25UaXRsZScsICdhdXRvVmFsaWRhdGlvbicsICdkaXNhYmxlZCcsICdoZWlnaHQnLCAnaGludCcsICdpc1ZhbGlkJywgJ2xhYmVsJywgJ25hbWUnLCAnb3B0aW9uYWwnLCAncmVxdWlyZWQnLCAnc2hvd1ByZXZpZXdCdXR0b24nLCAnc2hvd1JlbW92ZUJ1dHRvbicsICdzaG93UmVwbGFjZUJ1dHRvbicsICdzdGF0dXMnLCAndmFsaWRhdGlvblJ1bGVzJywgJ3ZhbHVlJywgJ3dpZHRoJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUltYWdlVXBsb2FkZXIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2hhbmdlJywgJ2NoYW5nZScsICd2ZWdhUmVtb3ZlJywgJ3JlbW92ZScsICd2ZWdhQ2FuY2VsJywgJ2NhbmNlbCddKTtcbiAgfVxufVxuXG5pbXBvcnQgdHlwZSB7IERhdGFUcmFuc2ZlclR5cGUgYXMgSVZlZ2FJbnB1dERhdGFUcmFuc2ZlclR5cGUgfSBmcm9tICdAZ2xvYmFscGF5bWVudHMvdmVnYS9kaXN0L3R5cGVzL2NvbXBvbmVudHMvdmVnYS1pbnB1dC90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IFZlZ2FEcm9wZG93blNvdXJjZUl0ZW0gYXMgSVZlZ2FJbnB1dFZlZ2FEcm9wZG93blNvdXJjZUl0ZW0gfSBmcm9tICdAZ2xvYmFscGF5bWVudHMvdmVnYS9kaXN0L3R5cGVzL2NvbXBvbmVudHMvdmVnYS1kcm9wZG93bi90eXBlcyc7XG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUlucHV0IGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhSW5wdXQge1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSBpbnB1dCB2YWx1ZSBjaGFuZ2VzLlxuXG5UaGUgdGltaW5nIG9mIHRoaXMgZXZlbnQgZGVwZW5kcyBvbiB0aGUgYHZhbHVlVXBkYXRlVHJpZ2dlcmAgcHJvcDpcbi0gV2hlbiBgdmFsdWVVcGRhdGVUcmlnZ2VyYCBpcyBgJ2lucHV0J2AgKGRlZmF1bHQpLCBmaXJlcyBvbiBldmVyeSBrZXlzdHJva2UuXG4tIFdoZW4gYHZhbHVlVXBkYXRlVHJpZ2dlcmAgaXMgYCdjaGFuZ2UnYCwgZmlyZXMgb24gYmx1ciBvciB3aGVuIHRoZSB1c2VyIHByZXNzZXMgRW50ZXIuXG5cbkFsc28gZmlyZXMgd2hlbiB0aGUgdXNlciBjbGlja3MgdGhlIGNsZWFyIGljb24gb3Igd2hlbiB0aGUgdmFsdWUgaXNcbnByb2dyYW1tYXRpY2FsbHkgdXBkYXRlZC4gQGV2ZW50RGV0YWlsIGBzdHJpbmdgIOKAlCBUaGUgY3VycmVudCBpbnB1dCB2YWx1ZSBhZnRlciB0aGUgY2hhbmdlLixAdmVnYVZlcnNpb24gMS4wLjEwXG4gICAqL1xuICB2ZWdhQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBOYXRpdmUtbmFtZXNwYWNlIGFsaWFzIGZvciB0aGUgYHZlZ2FDaGFuZ2VgIGV2ZW50LlxuXG5FbWl0dGVkIGF0IHRoZSBzYW1lIHRpbWUgYW5kIHVuZGVyIHRoZSBzYW1lIGNvbmRpdGlvbnMgYXMgYHZlZ2FDaGFuZ2VgLlxuVXNlIHRoaXMgZXZlbnQgd2hlbiBpbnRlZ3JhdGluZyB3aXRoIGZyYW1ld29ya3MgdGhhdCBleHBlY3QgbmF0aXZlLXN0eWxlXG5ldmVudCBuYW1lcyAoZS5nLiwgYEBjaGFuZ2VgIGluIFZ1ZSBvciBBbmd1bGFyKS4gQGV2ZW50RGV0YWlsIGBzdHJpbmdgIOKAlCBUaGUgY3VycmVudCBpbnB1dCB2YWx1ZSBhZnRlciB0aGUgY2hhbmdlLixAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogRW1pdHRlZCBvbiBldmVyeSBuYXRpdmUgYGlucHV0YCBldmVudCBmcm9tIHRoZSB1bmRlcmx5aW5nIGA8aW5wdXQ+YCBlbGVtZW50LFxucmVnYXJkbGVzcyBvZiB0aGUgYHZhbHVlVXBkYXRlVHJpZ2dlcmAgc2V0dGluZy5cblxuVGhpcyBldmVudCBmaXJlcyBvbiBldmVyeSBrZXlzdHJva2UgYW5kIHByb3ZpZGVzIHRoZSByYXcgaW5wdXQgdmFsdWUuXG5Vc2UgdGhpcyBmb3IgcmVhbC10aW1lIG1vbml0b3JpbmcgKGUuZy4sIGRyaXZpbmcgYSBzdWdnZXN0aW9ucyBkcm9wZG93bilcbndoaWxlIGtlZXBpbmcgYHZlZ2FDaGFuZ2VgIHNldCB0byBgJ2NoYW5nZSdgIHRyaWdnZXIgZm9yIHRoZSBtYWluIHZhbHVlIGJpbmRpbmcuIEBldmVudERldGFpbCBgc3RyaW5nYCDigJQgVGhlIHJhdyB2YWx1ZSBmcm9tIHRoZSBuYXRpdmUgaW5wdXQgZWxlbWVudC4sQHZlZ2FWZXJzaW9uIDIuNzUuMFxuICAgKi9cbiAgdmVnYU5hdGl2ZUlucHV0Q2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBOYXRpdmUtbmFtZXNwYWNlIGFsaWFzIGZvciB0aGUgYHZlZ2FOYXRpdmVJbnB1dENoYW5nZWAgZXZlbnQuXG5cbkVtaXR0ZWQgYXQgdGhlIHNhbWUgdGltZSBhbmQgdW5kZXIgdGhlIHNhbWUgY29uZGl0aW9ucyBhc1xuYHZlZ2FOYXRpdmVJbnB1dENoYW5nZWAuIFVzZSB0aGlzIGV2ZW50IHdoZW4gaW50ZWdyYXRpbmcgd2l0aCBmcmFtZXdvcmtzXG50aGF0IGV4cGVjdCBuYXRpdmUtc3R5bGUgZXZlbnQgbmFtZXMuIEBldmVudERldGFpbCBgc3RyaW5nYCDigJQgVGhlIHJhdyB2YWx1ZSBmcm9tIHRoZSBuYXRpdmUgaW5wdXQgZWxlbWVudC4sQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuNzUuMFxuICAgKi9cbiAgbmF0aXZlSW5wdXRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgaW5wdXQgZmllbGQgbG9zZXMgZm9jdXMuXG5cblRoaXMgZXZlbnQgZmlyZXMgYWZ0ZXIgdGhlIHVuZGVybHlpbmcgbmF0aXZlIGA8aW5wdXQ+YCBlbGVtZW50J3MgYGJsdXJgXG5ldmVudC4gVXNlZnVsIGZvciB0cmlnZ2VyaW5nIHZhbGlkYXRpb24sIHNhdmluZyBzdGF0ZSwgb3IgdXBkYXRpbmcgVUlcbndoZW4gdGhlIHVzZXIgbmF2aWdhdGVzIGF3YXkgZnJvbSB0aGUgZmllbGQuIEBldmVudERldGFpbCBgdW5kZWZpbmVkYCDigJQgTm8gcGF5bG9hZDsgbGlzdGVuIGZvciB0aGUgZXZlbnQgb2NjdXJyZW5jZSBvbmx5LixAdmVnYVZlcnNpb24gMS4zLjBcbiAgICovXG4gIHZlZ2FCbHVyOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dW5kZWZpbmVkPj47XG4gIC8qKlxuICAgKiBOYXRpdmUtbmFtZXNwYWNlIGFsaWFzIGZvciB0aGUgYHZlZ2FCbHVyYCBldmVudC5cblxuRW1pdHRlZCBhdCB0aGUgc2FtZSB0aW1lIGFuZCB1bmRlciB0aGUgc2FtZSBjb25kaXRpb25zIGFzIGB2ZWdhQmx1cmAuXG5Vc2UgdGhpcyBldmVudCB3aGVuIGludGVncmF0aW5nIHdpdGggZnJhbWV3b3JrcyB0aGF0IGV4cGVjdCBuYXRpdmUtc3R5bGVcbmV2ZW50IG5hbWVzLiBAZXZlbnREZXRhaWwgYHVuZGVmaW5lZGAg4oCUIE5vIHBheWxvYWQ7IGxpc3RlbiBmb3IgdGhlIGV2ZW50IG9jY3VycmVuY2Ugb25seS4sQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBibHVyOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dW5kZWZpbmVkPj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIGlucHV0IGZpZWxkIHJlY2VpdmVzIGZvY3VzLlxuXG5UaGlzIGV2ZW50IGZpcmVzIGFmdGVyIHRoZSB1bmRlcmx5aW5nIG5hdGl2ZSBgPGlucHV0PmAgZWxlbWVudCdzIGBmb2N1c2BcbmV2ZW50LCBpbmNsdWRpbmcgd2hlbiBmb2N1cyBpcyBzZXQgcHJvZ3JhbW1hdGljYWxseSB2aWEgdGhlIGBkb0ZvY3VzKClgIG1ldGhvZC5cblVzZWZ1bCBmb3IgaGlnaGxpZ2h0aW5nIHRoZSBmaWVsZCwgc2hvd2luZyBjb250ZXh0dWFsIGhlbHAsIG9yIG9wZW5pbmdcbmEgc3VnZ2VzdGlvbnMgZHJvcGRvd24uIEBldmVudERldGFpbCBgdW5kZWZpbmVkYCDigJQgTm8gcGF5bG9hZDsgbGlzdGVuIGZvciB0aGUgZXZlbnQgb2NjdXJyZW5jZSBvbmx5LixAdmVnYVZlcnNpb24gMS4xMi4wXG4gICAqL1xuICB2ZWdhRm9jdXM6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx1bmRlZmluZWQ+PjtcbiAgLyoqXG4gICAqIE5hdGl2ZS1uYW1lc3BhY2UgYWxpYXMgZm9yIHRoZSBgdmVnYUZvY3VzYCBldmVudC5cblxuRW1pdHRlZCBhdCB0aGUgc2FtZSB0aW1lIGFuZCB1bmRlciB0aGUgc2FtZSBjb25kaXRpb25zIGFzIGB2ZWdhRm9jdXNgLlxuVXNlIHRoaXMgZXZlbnQgd2hlbiBpbnRlZ3JhdGluZyB3aXRoIGZyYW1ld29ya3MgdGhhdCBleHBlY3QgbmF0aXZlLXN0eWxlXG5ldmVudCBuYW1lcy4gQGV2ZW50RGV0YWlsIGB1bmRlZmluZWRgIOKAlCBObyBwYXlsb2FkOyBsaXN0ZW4gZm9yIHRoZSBldmVudCBvY2N1cnJlbmNlIG9ubHkuLEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgZm9jdXM6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx1bmRlZmluZWQ+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgdXNlciBjbGlja3MgdGhlIHN1ZmZpeCBidXR0b24gaW4gdGhlIGZpZWxkIGxhYmVsLlxuXG5UaGlzIGV2ZW50IG9ubHkgZmlyZXMgd2hlbiBhIGBsYWJlbFN1ZmZpeEJ1dHRvbkNvbmZpZ2AgKG9yIHRoZSBkZXByZWNhdGVkXG5gbGFiZWxTdWZmaXhCdXR0b25Qcm9wc2ApIGlzIHByb3ZpZGVkLiBVc2UgaXQgdG8gaGFuZGxlIGNvbnRleHR1YWwgYWN0aW9uc1xuc3VjaCBhcyBvcGVuaW5nIGEgdG9vbHRpcCwgbmF2aWdhdGluZyB0byBhIGhlbHAgcGFnZSwgb3IgdHJpZ2dlcmluZyBhXG5cIkZvcmdvdCBwYXNzd29yZD9cIiBmbG93LiBAZXZlbnREZXRhaWwgYHZvaWRgIOKAlCBObyBwYXlsb2FkLixAdmVnYVZlcnNpb24gMi4yNS4wXG4gICAqL1xuICB2ZWdhTGFiZWxCdXR0b25DbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuICAvKipcbiAgICogTmF0aXZlLW5hbWVzcGFjZSBhbGlhcyBmb3IgdGhlIGB2ZWdhTGFiZWxCdXR0b25DbGlja2AgZXZlbnQuXG5cbkVtaXR0ZWQgYXQgdGhlIHNhbWUgdGltZSBhbmQgdW5kZXIgdGhlIHNhbWUgY29uZGl0aW9ucyBhc1xuYHZlZ2FMYWJlbEJ1dHRvbkNsaWNrYC4gVXNlIHRoaXMgZXZlbnQgd2hlbiBpbnRlZ3JhdGluZyB3aXRoIGZyYW1ld29ya3NcbnRoYXQgZXhwZWN0IG5hdGl2ZS1zdHlsZSBldmVudCBuYW1lcy4gQGV2ZW50RGV0YWlsIGB2b2lkYCDigJQgTm8gcGF5bG9hZC4sQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMjUuMFxuICAgKi9cbiAgbGFiZWxCdXR0b25DbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSB1c2VyIHBhc3RlcyBjb250ZW50IGludG8gdGhlIGlucHV0IGZpZWxkLlxuXG5UaGlzIGV2ZW50IGZpcmVzIHJlZ2FyZGxlc3Mgb2YgdGhlIGBkaXNhYmxlQ29weVBhc3RlYCBzZXR0aW5nIOKAlCB0aGUgcGFzdGVcbmFjdGlvbiBpcyBibG9ja2VkIHZpc3VhbGx5LCBidXQgdGhlIGV2ZW50IHN0aWxsIHByb3BhZ2F0ZXMgZm9yIHRyYWNraW5nXG5wdXJwb3Nlcy4gVXNlIHRoaXMgdG8gaW5zcGVjdCBvciB0cmFuc2Zvcm0gcGFzdGVkIGRhdGEgYmVmb3JlIGl0IGlzIGFwcGxpZWQuIEBldmVudERldGFpbCBgRGF0YVRyYW5zZmVyVHlwZWAg4oCUIEFuIG9iamVjdCBjb250YWluaW5nIHRoZSBwYXN0ZWQgZGF0YSxcbmluY2x1ZGluZyB0aGUgTUlNRSB0eXBlIGFuZCByYXcgdGV4dCBjb250ZW50IGZyb20gdGhlIGNsaXBib2FyZC4sQHZlZ2FWZXJzaW9uIDIuNjYuMFxuICAgKi9cbiAgdmVnYVBhc3RlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FJbnB1dERhdGFUcmFuc2ZlclR5cGU+PjtcbiAgLyoqXG4gICAqIE5hdGl2ZS1uYW1lc3BhY2UgYWxpYXMgZm9yIHRoZSBgdmVnYVBhc3RlYCBldmVudC5cblxuRW1pdHRlZCBhdCB0aGUgc2FtZSB0aW1lIGFuZCB1bmRlciB0aGUgc2FtZSBjb25kaXRpb25zIGFzIGB2ZWdhUGFzdGVgLlxuVXNlIHRoaXMgZXZlbnQgd2hlbiBpbnRlZ3JhdGluZyB3aXRoIGZyYW1ld29ya3MgdGhhdCBleHBlY3QgbmF0aXZlLXN0eWxlXG5ldmVudCBuYW1lcy4gQGV2ZW50RGV0YWlsIGBEYXRhVHJhbnNmZXJUeXBlYCDigJQgQW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHBhc3RlZCBkYXRhLFxuaW5jbHVkaW5nIHRoZSBNSU1FIHR5cGUgYW5kIHJhdyB0ZXh0IGNvbnRlbnQgZnJvbSB0aGUgY2xpcGJvYXJkLixAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi42Ni4wXG4gICAqL1xuICBwYXN0ZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhSW5wdXREYXRhVHJhbnNmZXJUeXBlPj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIHVzZXIgc2VsZWN0cyBhbiBpdGVtIGZyb20gdGhlIHN1Z2dlc3Rpb25zIGRyb3Bkb3duLlxuXG5UaGlzIGV2ZW50IG9ubHkgZmlyZXMgd2hlbiB0aGUgYHN1Z2dlc3Rpb25zRHJvcGRvd25Tb3VyY2VgIHByb3AgaXMgc2V0LlxuVXNlIGl0IHRvIHJlc3BvbmQgdG8gdGhlIHVzZXIncyBzZWxlY3Rpb24g4oCUIGZvciBleGFtcGxlLCB0byBwb3B1bGF0ZVxucmVsYXRlZCBmaWVsZHMsIG5hdmlnYXRlIHRvIGEgZGV0YWlsIHBhZ2UsIG9yIHRyaWdnZXIgYSBzZWFyY2guIEBldmVudERldGFpbCBgVmVnYURyb3Bkb3duU291cmNlSXRlbWAg4oCUIFRoZSBmdWxsIGRhdGEgb2JqZWN0IG9mIHRoZSBzZWxlY3RlZFxuc3VnZ2VzdGlvbiBpdGVtLCBpbmNsdWRpbmcgaXRzIGBsYWJlbGAsIGB2YWx1ZWAsIGFuZCBhbnkgY3VzdG9tIHByb3BlcnRpZXMuLEB2ZWdhVmVyc2lvbiAyLjc1LjBcbiAgICovXG4gIHZlZ2FTdWdnZXN0aW9uSXRlbUNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FJbnB1dFZlZ2FEcm9wZG93blNvdXJjZUl0ZW0+PjtcbiAgLyoqXG4gICAqIE5hdGl2ZS1uYW1lc3BhY2UgYWxpYXMgZm9yIHRoZSBgdmVnYVN1Z2dlc3Rpb25JdGVtQ2xpY2tgIGV2ZW50LlxuXG5FbWl0dGVkIGF0IHRoZSBzYW1lIHRpbWUgYW5kIHVuZGVyIHRoZSBzYW1lIGNvbmRpdGlvbnMgYXNcbmB2ZWdhU3VnZ2VzdGlvbkl0ZW1DbGlja2AuIFVzZSB0aGlzIGV2ZW50IHdoZW4gaW50ZWdyYXRpbmcgd2l0aCBmcmFtZXdvcmtzXG50aGF0IGV4cGVjdCBuYXRpdmUtc3R5bGUgZXZlbnQgbmFtZXMuIEBldmVudERldGFpbCBgVmVnYURyb3Bkb3duU291cmNlSXRlbWAg4oCUIFRoZSBmdWxsIGRhdGEgb2JqZWN0IG9mIHRoZSBzZWxlY3RlZFxuc3VnZ2VzdGlvbiBpdGVtLCBpbmNsdWRpbmcgaXRzIGBsYWJlbGAsIGB2YWx1ZWAsIGFuZCBhbnkgY3VzdG9tIHByb3BlcnRpZXMuLEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjc1LjBcbiAgICovXG4gIHN1Z2dlc3Rpb25JdGVtQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYUlucHV0VmVnYURyb3Bkb3duU291cmNlSXRlbT4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnYXV0b1ZhbGlkYXRpb24nLCAnYXV0b2NvbXBsZXRlJywgJ2Rpc2FibGVDb3B5UGFzdGUnLCAnZGlzYWJsZWQnLCAnZW1haWwnLCAnZW50ZXJrZXloaW50JywgJ2hpbnQnLCAnaW5wdXRtb2RlJywgJ2lzVmFsaWQnLCAnbGFiZWwnLCAnbGFiZWxTdWZmaXhCdXR0b25Db25maWcnLCAnbGFiZWxTdWZmaXhCdXR0b25Qcm9wcycsICdtYXNrQ29uZmlnJywgJ21heCcsICdtYXhMZW5ndGgnLCAnbWluJywgJ21pbkxlbmd0aCcsICduYW1lJywgJ29wdGlvbmFsJywgJ3BsYWNlaG9sZGVyJywgJ3ByZWZpeEljb24nLCAncmVhZE9ubHknLCAncmVxdWlyZWQnLCAnc2hvd0NsZWFySWNvbicsICdzaXplJywgJ3N1Z2dlc3Rpb25zRHJvcGRvd25Tb3VyY2UnLCAndHlwZScsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWUnLCAndmFsdWVVcGRhdGVUcmlnZ2VyJ10sXG4gIG1ldGhvZHM6IFsnZG9Gb2N1cycsICdkb0JsdXInLCAnc2hvd1N1Z2dlc3Rpb25zRHJvcGRvd24nLCAnaGlkZVN1Z2dlc3Rpb25zRHJvcGRvd24nXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtaW5wdXQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2F1dG9WYWxpZGF0aW9uJywgJ2F1dG9jb21wbGV0ZScsICdkaXNhYmxlQ29weVBhc3RlJywgJ2Rpc2FibGVkJywgJ2VtYWlsJywgJ2VudGVya2V5aGludCcsICdoaW50JywgJ2lucHV0bW9kZScsICdpc1ZhbGlkJywgJ2xhYmVsJywgJ2xhYmVsU3VmZml4QnV0dG9uQ29uZmlnJywgJ2xhYmVsU3VmZml4QnV0dG9uUHJvcHMnLCAnbWFza0NvbmZpZycsICdtYXgnLCAnbWF4TGVuZ3RoJywgJ21pbicsICdtaW5MZW5ndGgnLCAnbmFtZScsICdvcHRpb25hbCcsICdwbGFjZWhvbGRlcicsICdwcmVmaXhJY29uJywgJ3JlYWRPbmx5JywgJ3JlcXVpcmVkJywgJ3Nob3dDbGVhckljb24nLCAnc2l6ZScsICdzdWdnZXN0aW9uc0Ryb3Bkb3duU291cmNlJywgJ3R5cGUnLCAndmFsaWRhdGlvblJ1bGVzJywgJ3ZhbHVlJywgJ3ZhbHVlVXBkYXRlVHJpZ2dlciddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FJbnB1dCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDaGFuZ2UnLCAnY2hhbmdlJywgJ3ZlZ2FOYXRpdmVJbnB1dENoYW5nZScsICduYXRpdmVJbnB1dENoYW5nZScsICd2ZWdhQmx1cicsICdibHVyJywgJ3ZlZ2FGb2N1cycsICdmb2N1cycsICd2ZWdhTGFiZWxCdXR0b25DbGljaycsICdsYWJlbEJ1dHRvbkNsaWNrJywgJ3ZlZ2FQYXN0ZScsICdwYXN0ZScsICd2ZWdhU3VnZ2VzdGlvbkl0ZW1DbGljaycsICdzdWdnZXN0aW9uSXRlbUNsaWNrJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FJbnB1dENyZWRpdENhcmQgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FJbnB1dENyZWRpdENhcmQge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgYSB2YWx1ZSBjaGFuZ2UuIEB2ZWdhVmVyc2lvbiAxLjI2LjBcbiAgICovXG4gIHZlZ2FDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEEgbmF0aXZlIGNoYW5nZSBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBhIHZhbHVlIGNoYW5nZS4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBibHVyIGV2ZW50IG9mIHRoZSBjcmVkaXQgY2FyZCBlbGVtZW50LiBAdmVnYVZlcnNpb24gMS4yNi4wXG4gICAqL1xuICB2ZWdhQmx1cjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHVuZGVmaW5lZD4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGJsdXIgZXZlbnQgb2YgdGhlIGNyZWRpdCBjYXJkIGVsZW1lbnQuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgYmx1cjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHVuZGVmaW5lZD4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGZvY3VzIG9mIHRoZSBjcmVkaXQgY2FyZCBlbGVtZW50LiBAdmVnYVZlcnNpb24gMS4yNi4wXG4gICAqL1xuICB2ZWdhRm9jdXM6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx1bmRlZmluZWQ+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBmb2N1cyBvZiB0aGUgY3JlZGl0IGNhcmQgZWxlbWVudC4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBmb2N1czogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHVuZGVmaW5lZD4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnYXV0b1ZhbGlkYXRpb24nLCAnZGlzYWJsZWQnLCAnaGlkZUNhcmROdW1iZXJPbkJsdXInLCAnaGludCcsICdpc1ZhbGlkJywgJ2xhYmVsJywgJ25hbWUnLCAnb3B0aW9uYWwnLCAncGxhY2Vob2xkZXInLCAncmVxdWlyZWQnLCAnc2l6ZScsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtaW5wdXQtY3JlZGl0LWNhcmQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2F1dG9WYWxpZGF0aW9uJywgJ2Rpc2FibGVkJywgJ2hpZGVDYXJkTnVtYmVyT25CbHVyJywgJ2hpbnQnLCAnaXNWYWxpZCcsICdsYWJlbCcsICduYW1lJywgJ29wdGlvbmFsJywgJ3BsYWNlaG9sZGVyJywgJ3JlcXVpcmVkJywgJ3NpemUnLCAndmFsaWRhdGlvblJ1bGVzJywgJ3ZhbHVlJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUlucHV0Q3JlZGl0Q2FyZCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDaGFuZ2UnLCAnY2hhbmdlJywgJ3ZlZ2FCbHVyJywgJ2JsdXInLCAndmVnYUZvY3VzJywgJ2ZvY3VzJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FJbnB1dE51bWVyaWMgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FJbnB1dE51bWVyaWMge1xuICAvKipcbiAgICogRmlyZXMgd2hlbmV2ZXIgdGhlIG51bWVyaWMgaW5wdXQncyB2YWx1ZSBjaGFuZ2VzIOKAlCBpbmNsdWRpbmcgdHlwaW5nLFxua2V5Ym9hcmQgaW5jcmVtZW50L2RlY3JlbWVudCwgY2xlYXJpbmcsIGFuZCBwcm9ncmFtbWF0aWMgdXBkYXRlcy5cblxuVGhlIGV2ZW50IGRldGFpbCBjb250YWlucyB0aGUgbmV3IG51bWVyaWMgdmFsdWUgKGBudW1iZXJgKSwgb3IgYE5hTmBcbndoZW4gdGhlIGZpZWxkIGlzIGVtcHR5LiBAZXZlbnREZXRhaWwgbnVtYmVyLEB2ZWdhVmVyc2lvbiAyLjI5LjBcbiAgICovXG4gIHZlZ2FDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxudW1iZXI+PjtcbiAgLyoqXG4gICAqIE5hdGl2ZS1lcXVpdmFsZW50IG1pcnJvciBvZiBgdmVnYUNoYW5nZWAuIEZpcmVzIHdpdGggdGhlIHNhbWUgcGF5bG9hZFxuYW5kIGF0IHRoZSBzYW1lIHRpbWUsIGFsbG93aW5nIGNvbnN1bWVycyB0byBsaXN0ZW4gdXNpbmcgdGhlIHN0YW5kYXJkXG5gY2hhbmdlYCBldmVudCBuYW1lLiBAZXZlbnREZXRhaWwgbnVtYmVyLEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjI5LjBcbiAgICovXG4gIGNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PG51bWJlcj4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnYXV0b1ZhbGlkYXRpb24nLCAnZGlzYWJsZWQnLCAnaGludCcsICdpbnRlZ2VyT25seScsICdpc1ZhbGlkJywgJ2xhYmVsJywgJ21ham9ySW5jcmVtZW50JywgJ21heCcsICdtaW4nLCAnbWlub3JJbmNyZW1lbnQnLCAnbmFtZScsICdvcHRpb25hbCcsICdwbGFjZWhvbGRlcicsICdwcmVmaXhJY29uJywgJ3ByZWZpeFRleHQnLCAncmVxdWlyZWQnLCAnc2hvd0NsZWFySWNvbicsICdzaXplJywgJ3N1ZmZpeFRleHQnLCAndGhvdXNhbmRDb21tYScsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtaW5wdXQtbnVtZXJpYycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnYXV0b1ZhbGlkYXRpb24nLCAnZGlzYWJsZWQnLCAnaGludCcsICdpbnRlZ2VyT25seScsICdpc1ZhbGlkJywgJ2xhYmVsJywgJ21ham9ySW5jcmVtZW50JywgJ21heCcsICdtaW4nLCAnbWlub3JJbmNyZW1lbnQnLCAnbmFtZScsICdvcHRpb25hbCcsICdwbGFjZWhvbGRlcicsICdwcmVmaXhJY29uJywgJ3ByZWZpeFRleHQnLCAncmVxdWlyZWQnLCAnc2hvd0NsZWFySWNvbicsICdzaXplJywgJ3N1ZmZpeFRleHQnLCAndGhvdXNhbmRDb21tYScsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWUnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhSW5wdXROdW1lcmljIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUNoYW5nZScsICdjaGFuZ2UnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUlucHV0UGFzc2NvZGUgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FJbnB1dFBhc3Njb2RlIHtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW5ldmVyIHRoZSBwYXNzY29kZSB2YWx1ZSBjaGFuZ2VzIOKAlCBlYWNoIHRpbWUgYSBjaGFyYWN0ZXIgaXNcbmVudGVyZWQsIGRlbGV0ZWQsIG9yIHBhc3RlZCBpbnRvIGFueSBib3guIFRoZSBldmVudCBkZXRhaWwgY29udGFpbnMgdGhlXG5jb25jYXRlbmF0ZWQgc3RyaW5nIG9mIGFsbCBib3ggdmFsdWVzIGF0IHRoZSB0aW1lIG9mIHRoZSBjaGFuZ2UuIEBldmVudERldGFpbCBzdHJpbmcsQHZlZ2FWZXJzaW9uIDIuNjYuMFxuICAgKi9cbiAgdmVnYUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogTmF0aXZlLWVxdWl2YWxlbnQgbWlycm9yIG9mIGB2ZWdhQ2hhbmdlYC4gRmlyZXMgd2l0aCB0aGUgc2FtZSBwYXlsb2FkXG5hbmQgYXQgdGhlIHNhbWUgdGltZSwgYWxsb3dpbmcgY29uc3VtZXJzIHRvIGxpc3RlbiB1c2luZyB0aGUgc3RhbmRhcmRcbmBjaGFuZ2VgIGV2ZW50IG5hbWUuIEBldmVudERldGFpbCBzdHJpbmcsQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuNjYuMFxuICAgKi9cbiAgY2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIGFsbCBwYXNzY29kZSBib3hlcyBoYXZlIGJlZW4gZmlsbGVkIChpLmUuLCB0aGUgdmFsdWUgbGVuZ3RoXG5lcXVhbHMgdGhlIGNvbmZpZ3VyZWQgYGxlbmd0aGApLiBUaGUgZXZlbnQgZGV0YWlsIGNvbnRhaW5zIHRoZSBjb21wbGV0ZVxucGFzc2NvZGUgc3RyaW5nLiBVc2VmdWwgZm9yIHRyaWdnZXJpbmcgYXV0by1zdWJtaXQgb3IgdmVyaWZpY2F0aW9uXG53b3JrZmxvd3MuIEBldmVudERldGFpbCBzdHJpbmcsQHZlZ2FWZXJzaW9uIDIuNjYuMFxuICAgKi9cbiAgdmVnYUNvbXBsZXRlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBOYXRpdmUtZXF1aXZhbGVudCBtaXJyb3Igb2YgYHZlZ2FDb21wbGV0ZWAuIEZpcmVzIHdpdGggdGhlIHNhbWUgcGF5bG9hZFxuYW5kIGF0IHRoZSBzYW1lIHRpbWUsIGFsbG93aW5nIGNvbnN1bWVycyB0byBsaXN0ZW4gdXNpbmcgdGhlIHN0YW5kYXJkXG5gY29tcGxldGVgIGV2ZW50IG5hbWUuIEBldmVudERldGFpbCBzdHJpbmcsQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuNjYuMFxuICAgKi9cbiAgY29tcGxldGU6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2F1dG9WYWxpZGF0aW9uJywgJ2Rpc2FibGVkJywgJ2hpbnQnLCAnaW5wdXRUeXBlJywgJ2lzVmFsaWQnLCAnbGFiZWwnLCAnbGVuZ3RoJywgJ25hbWUnLCAnb3B0aW9uYWwnLCAncmVxdWlyZWQnLCAnc2l6ZScsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtaW5wdXQtcGFzc2NvZGUnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2F1dG9WYWxpZGF0aW9uJywgJ2Rpc2FibGVkJywgJ2hpbnQnLCAnaW5wdXRUeXBlJywgJ2lzVmFsaWQnLCAnbGFiZWwnLCAnbGVuZ3RoJywgJ25hbWUnLCAnb3B0aW9uYWwnLCAncmVxdWlyZWQnLCAnc2l6ZScsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWUnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhSW5wdXRQYXNzY29kZSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDaGFuZ2UnLCAnY2hhbmdlJywgJ3ZlZ2FDb21wbGV0ZScsICdjb21wbGV0ZSddKTtcbiAgfVxufVxuXG5pbXBvcnQgdHlwZSB7IFZlZ2FDb3VudHJ5VHlwZSBhcyBJVmVnYUlucHV0UGhvbmVOdW1iZXJWZWdhQ291bnRyeVR5cGUgfSBmcm9tICdAZ2xvYmFscGF5bWVudHMvdmVnYS9kaXN0L3R5cGVzL2NvbXBvbmVudHMvdmVnYS1pbnB1dC1waG9uZS1udW1iZXIvdHlwZXMnO1xuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FJbnB1dFBob25lTnVtYmVyIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhSW5wdXRQaG9uZU51bWJlciB7XG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuZXZlciB0aGUgcGhvbmUgbnVtYmVyIHZhbHVlIGNoYW5nZXMg4oCUIGluY2x1ZGluZyB0eXBpbmcsXG5wYXN0aW5nLCBvciBwcm9ncmFtbWF0aWMgdXBkYXRlcy4gVGhlIGV2ZW50IGRldGFpbCBjb250YWlucyB0aGUgZnVsbFxucGhvbmUgbnVtYmVyIGluIEUuMTY0IGZvcm1hdCAoZS5nLiwgYCcrMTQxNTU1NTI2NzEnYCkuIEBldmVudERldGFpbCBzdHJpbmcsQHZlZ2FWZXJzaW9uIDIuMTguMFxuICAgKi9cbiAgdmVnYUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogTmF0aXZlLWVxdWl2YWxlbnQgbWlycm9yIG9mIGB2ZWdhQ2hhbmdlYC4gRmlyZXMgd2l0aCB0aGUgc2FtZSBwYXlsb2FkXG5hbmQgYXQgdGhlIHNhbWUgdGltZSwgYWxsb3dpbmcgY29uc3VtZXJzIHRvIGxpc3RlbiB1c2luZyB0aGUgc3RhbmRhcmRcbmBjaGFuZ2VgIGV2ZW50IG5hbWUuIEBldmVudERldGFpbCBzdHJpbmcsQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMTguMFxuICAgKi9cbiAgY2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuZXZlciB0aGUgc2VsZWN0ZWQgY291bnRyeSBjaGFuZ2VzIHZpYSB0aGUgY291bnRyeSBkcm9wZG93bi5cblRoZSBldmVudCBkZXRhaWwgY29udGFpbnMgYSBgVmVnYUNvdW50cnlUeXBlYCBvYmplY3Qgd2l0aCB0aGUgY291bnRyeVxuY29kZSwgY2FsbGluZyBjb2RlLCBhbmQgZGlzcGxheSBuYW1lIG9mIHRoZSBuZXdseSBzZWxlY3RlZCBjb3VudHJ5LiBAZXZlbnREZXRhaWwgVmVnYUNvdW50cnlUeXBlLEB2ZWdhVmVyc2lvbiAyLjE4LjBcbiAgICovXG4gIHZlZ2FDb3VudHJ5Q2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FJbnB1dFBob25lTnVtYmVyVmVnYUNvdW50cnlUeXBlPj47XG4gIC8qKlxuICAgKiBOYXRpdmUtZXF1aXZhbGVudCBtaXJyb3Igb2YgYHZlZ2FDb3VudHJ5Q2hhbmdlYC4gRmlyZXMgd2l0aCB0aGUgc2FtZVxucGF5bG9hZCBhbmQgYXQgdGhlIHNhbWUgdGltZSwgYWxsb3dpbmcgY29uc3VtZXJzIHRvIGxpc3RlbiB1c2luZyB0aGVcbnN0YW5kYXJkIGBjb3VudHJ5Q2hhbmdlYCBldmVudCBuYW1lLiBAZXZlbnREZXRhaWwgVmVnYUNvdW50cnlUeXBlLEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjE4LjBcbiAgICovXG4gIGNvdW50cnlDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYUlucHV0UGhvbmVOdW1iZXJWZWdhQ291bnRyeVR5cGU+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2FsbG93ZWRDb3VudHJ5Q29kZXMnLCAnYXV0b1ZhbGlkYXRpb24nLCAnY291bnRyeUNvZGUnLCAnZGlzYWJsZWQnLCAnZW1wdHlWYWx1ZUVuYWJsZWQnLCAnaGludCcsICdpc1ZhbGlkJywgJ2xhYmVsJywgJ25hbWUnLCAnb3B0aW9uYWwnLCAncGxhY2Vob2xkZXInLCAncmVxdWlyZWQnLCAnc2l6ZScsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtaW5wdXQtcGhvbmUtbnVtYmVyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydhbGxvd2VkQ291bnRyeUNvZGVzJywgJ2F1dG9WYWxpZGF0aW9uJywgJ2NvdW50cnlDb2RlJywgJ2Rpc2FibGVkJywgJ2VtcHR5VmFsdWVFbmFibGVkJywgJ2hpbnQnLCAnaXNWYWxpZCcsICdsYWJlbCcsICduYW1lJywgJ29wdGlvbmFsJywgJ3BsYWNlaG9sZGVyJywgJ3JlcXVpcmVkJywgJ3NpemUnLCAndmFsaWRhdGlvblJ1bGVzJywgJ3ZhbHVlJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUlucHV0UGhvbmVOdW1iZXIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2hhbmdlJywgJ2NoYW5nZScsICd2ZWdhQ291bnRyeUNoYW5nZScsICdjb3VudHJ5Q2hhbmdlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FJbnB1dFJhbmdlIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhSW5wdXRSYW5nZSB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBhIHZhbHVlIGNoYW5nZS4gQHZlZ2FWZXJzaW9uIDIuMi4wXG4gICAqL1xuICB2ZWdhQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8W251bWJlciwgbnVtYmVyXT4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgYSB2YWx1ZSBjaGFuZ2UuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjIuMFxuICAgKi9cbiAgY2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8W251bWJlciwgbnVtYmVyXT4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnYXV0b1ZhbGlkYXRpb24nLCAnZGlzYWJsZWQnLCAnaGludCcsICdpc1ZhbGlkJywgJ2xhYmVsJywgJ21heCcsICdtaW4nLCAnbmFtZScsICdvcHRpb25hbCcsICdwbGFjZWhvbGRlcicsICdwcmVmaXhJY29uJywgJ3JlcXVpcmVkJywgJ3Nob3dDbGVhckljb24nLCAnc2l6ZScsICdzdGFjaycsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtaW5wdXQtcmFuZ2UnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2F1dG9WYWxpZGF0aW9uJywgJ2Rpc2FibGVkJywgJ2hpbnQnLCAnaXNWYWxpZCcsICdsYWJlbCcsICdtYXgnLCAnbWluJywgJ25hbWUnLCAnb3B0aW9uYWwnLCAncGxhY2Vob2xkZXInLCAncHJlZml4SWNvbicsICdyZXF1aXJlZCcsICdzaG93Q2xlYXJJY29uJywgJ3NpemUnLCAnc3RhY2snLCAndmFsaWRhdGlvblJ1bGVzJywgJ3ZhbHVlJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUlucHV0UmFuZ2Uge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2hhbmdlJywgJ2NoYW5nZSddKTtcbiAgfVxufVxuXG5pbXBvcnQgdHlwZSB7IFNlbGVjdFZhbHVlVHlwZSBhcyBJVmVnYUlucHV0U2VsZWN0U2VsZWN0VmFsdWVUeXBlIH0gZnJvbSAnQGdsb2JhbHBheW1lbnRzL3ZlZ2EvZGlzdC90eXBlcy9jb21wb25lbnRzL3ZlZ2EtaW5wdXQtc2VsZWN0L3R5cGVzJztcbmltcG9ydCB0eXBlIHsgU2VsZWN0VHlwZSBhcyBJVmVnYUlucHV0U2VsZWN0U2VsZWN0VHlwZSB9IGZyb20gJ0BnbG9iYWxwYXltZW50cy92ZWdhL2Rpc3QvdHlwZXMvY29tcG9uZW50cy92ZWdhLWlucHV0LXNlbGVjdC90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IFZlZ2FEcm9wZG93blNlYXJjaFRyaWdnZXJFdmVudERldGFpbCBhcyBJVmVnYUlucHV0U2VsZWN0VmVnYURyb3Bkb3duU2VhcmNoVHJpZ2dlckV2ZW50RGV0YWlsIH0gZnJvbSAnQGdsb2JhbHBheW1lbnRzL3ZlZ2EvZGlzdC90eXBlcy9jb21wb25lbnRzL3ZlZ2EtZHJvcGRvd24vdHlwZXMnO1xuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FJbnB1dFNlbGVjdCBleHRlbmRzIENvbXBvbmVudHMuVmVnYUlucHV0U2VsZWN0IHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjaGFuZ2Ugb2YgdGhlIHNlbGVjdCB2YWx1ZS4gQHZlZ2FWZXJzaW9uIDEuMC4xMVxuICAgKi9cbiAgdmVnYUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhSW5wdXRTZWxlY3RTZWxlY3RWYWx1ZVR5cGU8SVZlZ2FJbnB1dFNlbGVjdFNlbGVjdFR5cGU+Pj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgY2hhbmdlIG9mIHRoZSBzZWxlY3QgdmFsdWUuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgY2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FJbnB1dFNlbGVjdFNlbGVjdFZhbHVlVHlwZTxJVmVnYUlucHV0U2VsZWN0U2VsZWN0VHlwZT4+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBzZWFyY2ggb2YgdGhlIGRyb3Bkb3duLiBAdmVnYVZlcnNpb24gMS41MC4wXG4gICAqL1xuICB2ZWdhU2VhcmNoOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgc2VhcmNoIG9mIHRoZSBkcm9wZG93bi4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBzZWFyY2g6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBzZWFyY2ggZXZlbnQgdHJpZ2dlcmVkIHdpdGhpbiB0aGUgZHJvcGRvd24sXG4gICBidXQgb25seSBpZiBgdXNlRGVmYXVsdEZpbHRlcmAgaXMgc2V0IHRvIGBmYWxzZWAuXG5Vbmxpa2UgdGhlIFZlZ2FzZWFyY2ggZXZlbnQsIHRoaXMgZXZlbnQgaW5jbHVkZXMgdGhlIGRldGFpbHMgb2YgdGhlIHVzZXIgd2hvIHRyaWdnZXJlZCBpdC5cbkl0IGNhbiBiZSB0cmlnZ2VyZWQgaW4gdHdvIHdheXM6IGJ5IHByZXNzaW5nIFwiRW50ZXJcIiBvciB0aHJvdWdoIHVzZXIgaW5wdXQuIEB2ZWdhVmVyc2lvbiAyLjMwLjBcbiAgICovXG4gIHZlZ2FTZWFyY2hUcmlnZ2VyOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FJbnB1dFNlbGVjdFZlZ2FEcm9wZG93blNlYXJjaFRyaWdnZXJFdmVudERldGFpbD4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIHNlYXJjaCBldmVudCB0cmlnZ2VyZWQgd2l0aGluIHRoZSBkcm9wZG93bixcblVubGlrZSB0aGUgVmVnYXNlYXJjaCBldmVudCwgdGhpcyBldmVudCBpbmNsdWRlcyB0aGUgZGV0YWlscyBvZiB0aGUgdXNlciB3aG8gdHJpZ2dlcmVkIGl0LlxuSXQgY2FuIGJlIHRyaWdnZXJlZCBpbiB0d28gd2F5czogYnkgcHJlc3NpbmcgXCJFbnRlclwiIG9yIHRocm91Z2ggdXNlciBpbnB1dC4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMzAuMFxuICAgKi9cbiAgc2VhcmNoVHJpZ2dlcjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhSW5wdXRTZWxlY3RWZWdhRHJvcGRvd25TZWFyY2hUcmlnZ2VyRXZlbnREZXRhaWw+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgb25seSBmaXJlZCB3aGVuIHRoZSBTZWxlY3QgQWxsIGNoZWNrYm94IGluIHRoZSBkcm9wZG93biBoYXMgYmVlbiBjbGlja2VkLlxuXG5UaGUgZXZlbnQncyBgZGV0YWlsYCBwcm9wZXJ0eSBpcyBgdHJ1ZWAgd2hlbiB0aGUgU2VsZWN0IEFsbCBjaGVja2JveCBpcyBjbGlja2VkIHRvIHNlbGVjdCBhbGwgaXRlbXMsXG4gICBhbmQgYGZhbHNlYCB3aGVuIHRoZSBTZWxlY3QgQWxsIGNoZWNrYm94IGlzIGNsaWNrZWQgdG8gY2xlYXIgYWxsIHNlbGVjdGVkIGl0ZW1zLiBAdmVnYVZlcnNpb24gMi45NS4wXG4gICAqL1xuICB2ZWdhRHJvcGRvd25TZWxlY3RBbGxDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGJvb2xlYW4+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgb25seSBmaXJlZCB3aGVuIHRoZSBTZWxlY3QgQWxsIGNoZWNrYm94IGluIHRoZSBkcm9wZG93biBoYXMgYmVlbiBjbGlja2VkLlxuXG5UaGUgZXZlbnQncyBgZGV0YWlsYCBwcm9wZXJ0eSBpcyBgdHJ1ZWAgd2hlbiB0aGUgU2VsZWN0IEFsbCBjaGVja2JveCBpcyBjbGlja2VkIHRvIHNlbGVjdCBhbGwgaXRlbXMsXG4gICBhbmQgYGZhbHNlYCB3aGVuIHRoZSBTZWxlY3QgQWxsIGNoZWNrYm94IGlzIGNsaWNrZWQgdG8gY2xlYXIgYWxsIHNlbGVjdGVkIGl0ZW1zLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi45NS4wXG4gICAqL1xuICBkcm9wZG93blNlbGVjdEFsbENsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8Ym9vbGVhbj4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhhdCB0aGUgaW5wdXQtc2VsZWN0IGhhcyBiZWVuIG9wZW5lZCxcbiAgIGVpdGhlciBwcm9ncmFtbWF0aWNhbGx5IG9yIHZpYSB1c2VyIGludGVyYWN0aW9uLiBAdmVnYVZlcnNpb24gMi4zMi4wXG4gICAqL1xuICB2ZWdhU2hvdzogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhhdCB0aGUgaW5wdXQtc2VsZWN0IGhhcyBiZWVuIGRpc21pc3NlZCxcbiAgIGVpdGhlciBwcm9ncmFtbWF0aWNhbGx5IG9yIHZpYSB1c2VyIGludGVyYWN0aW9uLiBAdmVnYVZlcnNpb24gMi4zMi4wXG4gICAqL1xuICB2ZWdhSGlkZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhhdCB0aGUgc3VmZml4IGJ1dHRvbiBhc3NvY2lhdGVkIHdpdGggdGhlIGZpZWxkIGxhYmVsIGhhcyBiZWVuIGNsaWNrZWQuIEB2ZWdhVmVyc2lvbiAyLjY4LjBcbiAgICovXG4gIHZlZ2FMYWJlbEJ1dHRvbkNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8YW55Pj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGF0IHRoZSBzdWZmaXggYnV0dG9uIGFzc29jaWF0ZWQgd2l0aCB0aGUgZmllbGQgbGFiZWwgaGFzIGJlZW4gY2xpY2tlZC4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuNjguMFxuICAgKi9cbiAgbGFiZWxCdXR0b25DbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnYXV0b1ZhbGlkYXRpb24nLCAnZGlzYWJsZWQnLCAnZHJvcGRvd25JdGVtVG9vbHRpcFByb3BzJywgJ2hpbnQnLCAnaXNWYWxpZCcsICdsYWJlbCcsICdsYWJlbFN1ZmZpeEJ1dHRvbkNvbmZpZycsICduYW1lJywgJ29wdGlvbmFsJywgJ3BsYWNlaG9sZGVyJywgJ3ByZWZpeEljb24nLCAncmVxdWlyZWQnLCAnc2VsZWN0VHlwZScsICdzZWxlY3RlZExhYmVsJywgJ3NlbGVjdGVkTGFiZWxUb29sdGlwUHJvcHMnLCAnc2l6ZScsICdzb3VyY2UnLCAnc291cmNlTGF6eUxvYWRDYWxsYmFjaycsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWUnLCAndmVnYURyb3Bkb3duUHJvcHMnXSxcbiAgbWV0aG9kczogWydkb0Nsb3NlJywgJ2RvT3BlbicsICdkb0NoYW5nZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1pbnB1dC1zZWxlY3QnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2F1dG9WYWxpZGF0aW9uJywgJ2Rpc2FibGVkJywgJ2Ryb3Bkb3duSXRlbVRvb2x0aXBQcm9wcycsICdoaW50JywgJ2lzVmFsaWQnLCAnbGFiZWwnLCAnbGFiZWxTdWZmaXhCdXR0b25Db25maWcnLCAnbmFtZScsICdvcHRpb25hbCcsICdwbGFjZWhvbGRlcicsICdwcmVmaXhJY29uJywgJ3JlcXVpcmVkJywgJ3NlbGVjdFR5cGUnLCAnc2VsZWN0ZWRMYWJlbCcsICdzZWxlY3RlZExhYmVsVG9vbHRpcFByb3BzJywgJ3NpemUnLCAnc291cmNlJywgJ3NvdXJjZUxhenlMb2FkQ2FsbGJhY2snLCAndmFsaWRhdGlvblJ1bGVzJywgJ3ZhbHVlJywgJ3ZlZ2FEcm9wZG93blByb3BzJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUlucHV0U2VsZWN0IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUNoYW5nZScsICdjaGFuZ2UnLCAndmVnYVNlYXJjaCcsICdzZWFyY2gnLCAndmVnYVNlYXJjaFRyaWdnZXInLCAnc2VhcmNoVHJpZ2dlcicsICd2ZWdhRHJvcGRvd25TZWxlY3RBbGxDbGljaycsICdkcm9wZG93blNlbGVjdEFsbENsaWNrJywgJ3ZlZ2FTaG93JywgJ3ZlZ2FIaWRlJywgJ3ZlZ2FMYWJlbEJ1dHRvbkNsaWNrJywgJ2xhYmVsQnV0dG9uQ2xpY2snXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUl0ZW1Ub2dnbGUgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FJdGVtVG9nZ2xlIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGFuIGl0ZW0gdG9nZ2xlIGV2ZW50LiBAdmVnYVZlcnNpb24gMS4zLjBcbiAgICovXG4gIHZlZ2FUb2dnbGVTdGF0dXM6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxib29sZWFuPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBhbiBpdGVtIHRvZ2dsZSBldmVudC4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICB0b2dnbGVTdGF0dXM6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxib29sZWFuPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydpc1RvZ2dsZWQnLCAnaXRlbVRvZ2dsZVN0YXR1c01hcCcsICdzdGF0dXNNYXAnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtaXRlbS10b2dnbGUnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2lzVG9nZ2xlZCcsICdpdGVtVG9nZ2xlU3RhdHVzTWFwJywgJ3N0YXR1c01hcCddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FJdGVtVG9nZ2xlIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYVRvZ2dsZVN0YXR1cycsICd0b2dnbGVTdGF0dXMnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUxlZnROYXYgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FMZWZ0TmF2IHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoYXQgdGhlIGxlZnQtbmF2J3Mgb3BlbiBzdGF0ZSBoYXMgY2hhbmdlZC4gQHZlZ2FWZXJzaW9uIDEuMzEuMFxuICAgKi9cbiAgdmVnYVN0YXRlVXBkYXRlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGF0IHRoZSBsZWZ0LW5hdidzIG9wZW4gc3RhdGUgaGFzIGNoYW5nZWQuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgc3RhdGVVcGRhdGU6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2F1dG9Db2xsYXBzZUdyb3VwcycsICdhdXRvQ29sbGFwc2VPbk92ZXJsYXknLCAnZm9vdG5vdGUnLCAnaGVhZGVyQ29uZmlnJywgJ29wZW4nLCAnc2hvd0FzT3ZlcmxheScsICdzb3VyY2UnXSxcbiAgbWV0aG9kczogWyd0b2dnbGUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtbGVmdC1uYXYnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2F1dG9Db2xsYXBzZUdyb3VwcycsICdhdXRvQ29sbGFwc2VPbk92ZXJsYXknLCAnZm9vdG5vdGUnLCAnaGVhZGVyQ29uZmlnJywgJ29wZW4nLCAnc2hvd0FzT3ZlcmxheScsICdzb3VyY2UnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhTGVmdE5hdiB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FTdGF0ZVVwZGF0ZScsICdzdGF0ZVVwZGF0ZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhTGVmdE5hdkdyb3VwIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhTGVmdE5hdkdyb3VwIHtcbiAgLyoqXG4gICAqIGV2ZW50IGVtaXR0ZXIgdXNlZCBmb3Igbm90aWZ5aW5nIGNvbnN1bWVycyB0aGUgY2xpY2sgZXZlbnQgKiBAdmVnYVZlcnNpb24gMS40MS4wXG4gICAqL1xuICB2ZWdhR3JvdXBDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciB1c2VkIGZvciBub3RpZnlpbmcgY29uc3VtZXJzIHRoZSBjbGljayBldmVudCBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGdyb3VwQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2ljb24nLCAnaXRlbUtleScsICdsYWJlbCcsICdvcGVuQnlEZWZhdWx0J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWxlZnQtbmF2LWdyb3VwJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydpY29uJywgJ2l0ZW1LZXknLCAnbGFiZWwnLCAnb3BlbkJ5RGVmYXVsdCddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FMZWZ0TmF2R3JvdXAge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhR3JvdXBDbGljaycsICdncm91cENsaWNrJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FMZWZ0TmF2TGluayBleHRlbmRzIENvbXBvbmVudHMuVmVnYUxlZnROYXZMaW5rIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBsaW5rIGNsaWNrIGV2ZW50LiAqIEB2ZWdhVmVyc2lvbiAxLjMxLjBcbiAgICovXG4gIHZlZ2FNZW51Q2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBsaW5rIGNsaWNrIGV2ZW50LiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIG1lbnVDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnY291bnRlckJhZGdlJywgJ2N1c3RvbVNlbGVjdGlvbkVuYWJsZWQnLCAnaWNvbicsICdpdGVtS2V5JywgJ3NlbGVjdGVkJywgJ3RhcmdldCcsICd1cmwnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtbGVmdC1uYXYtbGluaycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnY291bnRlckJhZGdlJywgJ2N1c3RvbVNlbGVjdGlvbkVuYWJsZWQnLCAnaWNvbicsICdpdGVtS2V5JywgJ3NlbGVjdGVkJywgJ3RhcmdldCcsICd1cmwnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhTGVmdE5hdkxpbmsge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhTWVudUNsaWNrJywgJ21lbnVDbGljayddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhTGVmdE5hdlNlY3Rpb24gZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FMZWZ0TmF2U2VjdGlvbiB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgYWN0aW9uIGNsaWNrIGV2ZW50IHdoZW4gdGhlIGFjdGlvbiBsaW5rIGlzIG5vdCBjb25maWd1cmVkLiBAdmVnYVZlcnNpb24gMi4xMS4wXG4gICAqL1xuICB2ZWdhQWN0aW9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBhY3Rpb24gY2xpY2sgZXZlbnQgd2hlbiB0aGUgYWN0aW9uIGxpbmsgaXMgbm90IGNvbmZpZ3VyZWQuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjExLjBcbiAgICovXG4gIGFjdGlvbkNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8YW55Pj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydpdGVtS2V5JywgJ3NlY3Rpb25IZWFkZXInXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtbGVmdC1uYXYtc2VjdGlvbicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnaXRlbUtleScsICdzZWN0aW9uSGVhZGVyJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUxlZnROYXZTZWN0aW9uIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUFjdGlvbkNsaWNrJywgJ2FjdGlvbkNsaWNrJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FMaW5lQ2hhcnQgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FMaW5lQ2hhcnQge31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydvcHRpb25zJ10sXG4gIG1ldGhvZHM6IFsncmVSZW5kZXInXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtbGluZS1jaGFydCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnb3B0aW9ucyddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FMaW5lQ2hhcnQge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhTG9hZGVyV3JhcHBlciBleHRlbmRzIENvbXBvbmVudHMuVmVnYUxvYWRlcldyYXBwZXIge31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWRcbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWxvYWRlci13cmFwcGVyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50Pidcbn0pXG5leHBvcnQgY2xhc3MgVmVnYUxvYWRlcldyYXBwZXIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhTG9hZGluZ0luZGljYXRvciBleHRlbmRzIENvbXBvbmVudHMuVmVnYUxvYWRpbmdJbmRpY2F0b3Ige31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydoaW50JywgJ2xhYmVsJywgJ21vZGUnLCAncGVyY2VudCcsICdzaGFwZScsICdzaXplJywgJ3N0YXR1cyddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1sb2FkaW5nLWluZGljYXRvcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnaGludCcsICdsYWJlbCcsICdtb2RlJywgJ3BlcmNlbnQnLCAnc2hhcGUnLCAnc2l6ZScsICdzdGF0dXMnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhTG9hZGluZ0luZGljYXRvciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FNb2RhbCBleHRlbmRzIENvbXBvbmVudHMuVmVnYU1vZGFsIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBtb2RhbCBjbG9zZSBldmVudC4gIElmIGEgbWV0aG9kIGlzIGRlZmluZWQgZm9yIHRoaXMgZXZlbnQsIGludm9raW5nIGV2ZW50LnByZXZlbnREZWZhdWx0KCkgcHJldmVudHMgdGhlIG1vZGFsIGZyb20gY2xvc2luZy4gQHZlZ2FWZXJzaW9uIDEuMC4xMFxuICAgKi9cbiAgdmVnYUNsb3NlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8YW55Pj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgbW9kYWwgY2xvc2UgZXZlbnQuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgY2xvc2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBtb2RhbCBvcGVuIGV2ZW50LiBAdmVnYVZlcnNpb24gMS4wLjEwXG4gICAqL1xuICB2ZWdhT3BlbjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIG1vZGFsIG9wZW4gZXZlbnQuIFRoZSBldmVudCBuYW1lIGlzIG5vdCBgb3BlbmAgYmVjYXVzZSBhbHJlYWR5IGhhcyBhIHByb3BlcnR5IGBvcGVuYCBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIG1vZGFsT3BlbjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnYW5pbWF0aW9uJywgJ2JhY2tkcm9wJywgJ2JhY2tkcm9wQ29sb3InLCAnY29udGVudE1heEhlaWdodCcsICdjb3JuZXJzJywgJ2hhbmRsZUNsb3NlJywgJ2hlaWdodCcsICdpc1ZlcnRpY2FsbHlDZW50ZXInLCAnaXNWZXJ0aWNhbGx5Q2VudGVyZWQnLCAnbWFyZ2luJywgJ21vZGFsVGl0bGUnLCAnb3BlbicsICdwYWRkaW5nJywgJ3Nob3dDbG9zZUJ1dHRvbicsICdzaXplJywgJ3dpZHRoJ10sXG4gIG1ldGhvZHM6IFsnbW9kYWwnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtbW9kYWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2FuaW1hdGlvbicsICdiYWNrZHJvcCcsICdiYWNrZHJvcENvbG9yJywgJ2NvbnRlbnRNYXhIZWlnaHQnLCAnY29ybmVycycsICdoYW5kbGVDbG9zZScsICdoZWlnaHQnLCAnaXNWZXJ0aWNhbGx5Q2VudGVyJywgJ2lzVmVydGljYWxseUNlbnRlcmVkJywgJ21hcmdpbicsICdtb2RhbFRpdGxlJywgJ29wZW4nLCAncGFkZGluZycsICdzaG93Q2xvc2VCdXR0b24nLCAnc2l6ZScsICd3aWR0aCddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FNb2RhbCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDbG9zZScsICdjbG9zZScsICd2ZWdhT3BlbicsICdtb2RhbE9wZW4nXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYU5hdkNhcmQgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FOYXZDYXJkIHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnbWF4SGVpZ2h0JywgJ3NvdXJjZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1uYXYtY2FyZCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnbWF4SGVpZ2h0JywgJ3NvdXJjZSddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FOYXZDYXJkIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVBhZ2VOb3RpZmljYXRpb24gZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FQYWdlTm90aWZpY2F0aW9uIHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnYWN0aW9uQnV0dG9ucycsICdkdXJhdGlvbicsICdtZXNzYWdlJywgJ25vdGlmaWNhdGlvblRpdGxlJywgJ3Nob3dDbG9zZUJ1dHRvbicsICd0eXBlJ10sXG4gIG1ldGhvZHM6IFsnY2xvc2UnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtcGFnZS1ub3RpZmljYXRpb24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2FjdGlvbkJ1dHRvbnMnLCAnZHVyYXRpb24nLCAnbWVzc2FnZScsICdub3RpZmljYXRpb25UaXRsZScsICdzaG93Q2xvc2VCdXR0b24nLCAndHlwZSddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FQYWdlTm90aWZpY2F0aW9uIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVBhZ2VOb3RpZmljYXRpb25MaXN0IGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhUGFnZU5vdGlmaWNhdGlvbkxpc3Qge31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWRcbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXBhZ2Utbm90aWZpY2F0aW9uLWxpc3QnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+J1xufSlcbmV4cG9ydCBjbGFzcyBWZWdhUGFnZU5vdGlmaWNhdGlvbkxpc3Qge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhUGFnaW5hdGlvbiBleHRlbmRzIENvbXBvbmVudHMuVmVnYVBhZ2luYXRpb24ge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGN1cnJlbnQgcGFnZSBjaGFuZ2UuIEB2ZWdhVmVyc2lvbiAxLjMuMFxuICAgKi9cbiAgdmVnYUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PG51bWJlcj4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGN1cnJlbnQgcGFnZSBjaGFuZ2UuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgY2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8bnVtYmVyPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBhIGNoYW5nZSBpbiB0aGUgbnVtYmVyIG9mXG4gICBkYXRhIGl0ZW1zIGRpc3BsYXllZCBwZXIgcGFnZS4gQHZlZ2FWZXJzaW9uIDEuMjUuMFxuICAgKi9cbiAgdmVnYVBhZ2VTaXplQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8bnVtYmVyPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBhIGNoYW5nZSBpbiB0aGUgbnVtYmVyIG9mXG4gICBkYXRhIGl0ZW1zIGRpc3BsYXllZCBwZXIgcGFnZS4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBwYWdlU2l6ZUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PG51bWJlcj4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnY3VycmVudCcsICdkcm9wZG93blByb3BzJywgJ2V4dGVuc2lvbnMnLCAnbGF5b3V0JywgJ3BhZ2VTaXplJywgJ3BhZ2VTaXplU2VsZWN0b3JPcHRpb25zJywgJ3RvdGFsJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXBhZ2luYXRpb24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2N1cnJlbnQnLCAnZHJvcGRvd25Qcm9wcycsICdleHRlbnNpb25zJywgJ2xheW91dCcsICdwYWdlU2l6ZScsICdwYWdlU2l6ZVNlbGVjdG9yT3B0aW9ucycsICd0b3RhbCddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FQYWdpbmF0aW9uIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUNoYW5nZScsICdjaGFuZ2UnLCAndmVnYVBhZ2VTaXplQ2hhbmdlJywgJ3BhZ2VTaXplQ2hhbmdlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FQYWdpbmF0aW9uUGFnZVNlbGVjdG9yTW9iaWxlIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhUGFnaW5hdGlvblBhZ2VTZWxlY3Rvck1vYmlsZSB7fVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2N1cnJlbnQnLCAncGFnZUNvdW50JywgJ3RvdGFsJywgJ3R5cGUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtcGFnaW5hdGlvbi1wYWdlLXNlbGVjdG9yLW1vYmlsZScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnY3VycmVudCcsICdwYWdlQ291bnQnLCAndG90YWwnLCAndHlwZSddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FQYWdpbmF0aW9uUGFnZVNlbGVjdG9yTW9iaWxlIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVBhZ2luYXRpb25QYWdlU2l6ZVNlbGVjdG9yTW9iaWxlIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhUGFnaW5hdGlvblBhZ2VTaXplU2VsZWN0b3JNb2JpbGUge31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydjdXJyZW50JywgJ2Ryb3Bkb3duUHJvcHMnLCAncGFnZVNpemUnLCAncGFnZVNpemVTZWxlY3Rvck9wdGlvbnMnLCAndG90YWwnLCAndHlwZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1wYWdpbmF0aW9uLXBhZ2Utc2l6ZS1zZWxlY3Rvci1tb2JpbGUnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2N1cnJlbnQnLCAnZHJvcGRvd25Qcm9wcycsICdwYWdlU2l6ZScsICdwYWdlU2l6ZVNlbGVjdG9yT3B0aW9ucycsICd0b3RhbCcsICd0eXBlJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYVBhZ2luYXRpb25QYWdlU2l6ZVNlbGVjdG9yTW9iaWxlIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVBpZUNoYXJ0IGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhUGllQ2hhcnQge31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydvcHRpb25zJ10sXG4gIG1ldGhvZHM6IFsncmVSZW5kZXInXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtcGllLWNoYXJ0JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydvcHRpb25zJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYVBpZUNoYXJ0IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVBvcG92ZXIgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FQb3BvdmVyIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBwb3BvdmVyIHNob3cgZXZlbnQuIEB2ZWdhVmVyc2lvbiAxLjIyLjBcbiAgICovXG4gIHZlZ2FQb3BvdmVyU2hvdzogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIHBvcG92ZXIgc2hvdyBldmVudC4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBwb3BvdmVyU2hvdzogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIHBvcG92ZXIgaGlkZSBldmVudC4gQHZlZ2FWZXJzaW9uIDEuMjIuMFxuICAgKi9cbiAgdmVnYVBvcG92ZXJIaWRlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgcG9wb3ZlciBoaWRlIGV2ZW50LiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIHBvcG92ZXJIaWRlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydhbGlnbm1lbnQnLCAnaXNTY3JlZW5Qb3NpdGlvbicsICdwYWRkaW5nJywgJ3BsYWNlbWVudCcsICdwb3NpdGlvblJlbGF0aXZlVG8nLCAnc2hvd0Fycm93JywgJ3NpemUnLCAndHJpZ2dlciddLFxuICBtZXRob2RzOiBbJ3Nob3cnLCAnaGlkZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1wb3BvdmVyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydhbGlnbm1lbnQnLCAnaXNTY3JlZW5Qb3NpdGlvbicsICdwYWRkaW5nJywgJ3BsYWNlbWVudCcsICdwb3NpdGlvblJlbGF0aXZlVG8nLCAnc2hvd0Fycm93JywgJ3NpemUnLCAndHJpZ2dlciddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FQb3BvdmVyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYVBvcG92ZXJTaG93JywgJ3BvcG92ZXJTaG93JywgJ3ZlZ2FQb3BvdmVySGlkZScsICdwb3BvdmVySGlkZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhUG9wb3ZlckNvbnRlbnRCb3ggZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FQb3BvdmVyQ29udGVudEJveCB7fVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ3BhZGRpbmcnLCAnc2hvd0Fycm93J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXBvcG92ZXItY29udGVudC1ib3gnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ3BhZGRpbmcnLCAnc2hvd0Fycm93J11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYVBvcG92ZXJDb250ZW50Qm94IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVByb2dyZXNzVHJhY2tlciBleHRlbmRzIENvbXBvbmVudHMuVmVnYVByb2dyZXNzVHJhY2tlciB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGF0IHRoZSBjdXJyZW50IHN0ZXAgaGFzIGNoYW5nZWQuIEB2ZWdhVmVyc2lvbiAxLjUuMFxuICAgKi9cbiAgdmVnYUN1cnJlbnRTdGVwVXBkYXRlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGF0IHRoZSBjdXJyZW50IHN0ZXAgaGFzIGNoYW5nZWQuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgY3VycmVudFN0ZXBVcGRhdGU6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2FsbG93Tm9DdXJyZW50U3RlcCcsICdjYW5DbGlja1N0ZXAnLCAnY29tcGxldGVkU3RlcEFycmF5JywgJ2NvbXBsZXRlZFN0ZXBzJywgJ2N1cnJlbnQnLCAnZGlyZWN0aW9uJywgJ3N0ZXBzJ10sXG4gIG1ldGhvZHM6IFsnbmV4dFN0ZXAnLCAncHJldlN0ZXAnLCAnc2V0Q3VycmVudCcsICdnZXRDdXJyZW50J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXByb2dyZXNzLXRyYWNrZXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2FsbG93Tm9DdXJyZW50U3RlcCcsICdjYW5DbGlja1N0ZXAnLCAnY29tcGxldGVkU3RlcEFycmF5JywgJ2NvbXBsZXRlZFN0ZXBzJywgJ2N1cnJlbnQnLCAnZGlyZWN0aW9uJywgJ3N0ZXBzJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYVByb2dyZXNzVHJhY2tlciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDdXJyZW50U3RlcFVwZGF0ZScsICdjdXJyZW50U3RlcFVwZGF0ZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhUHJvZ3Jlc3NUcmFja2VyU3RlcCBleHRlbmRzIENvbXBvbmVudHMuVmVnYVByb2dyZXNzVHJhY2tlclN0ZXAge31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydjbGlja2FibGUnLCAnc3RlcEtleSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1wcm9ncmVzcy10cmFja2VyLXN0ZXAnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2NsaWNrYWJsZScsICdzdGVwS2V5J11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYVByb2dyZXNzVHJhY2tlclN0ZXAge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhUmFkaW8gZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FSYWRpbyB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgZm9jdXMgZXZlbnQgb2YgdGhlIHJhZGlvIGlucHV0LiBAdmVnYVZlcnNpb24gMS4wLjdcbiAgICovXG4gIHZlZ2FGb2N1czogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGZvY3VzIGV2ZW50IG9mIHRoZSByYWRpbyBpbnB1dC4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBmb2N1czogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGJsdXIgZXZlbnQgb2YgdGhlIHJhZGlvIGlucHV0LiBAdmVnYVZlcnNpb24gMS4wLjdcbiAgICovXG4gIHZlZ2FCbHVyOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8YW55Pj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgYmx1ciBldmVudCBvZiB0aGUgcmFkaW8gaW5wdXQuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgYmx1cjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNoYW5nZSBpbiB0aGUgY2hlY2sgc3RhdHVzXG4gICBvZiB0aGUgcmFkaW8gaW5wdXQuIEB2ZWdhVmVyc2lvbiAxLjAuMTBcbiAgICovXG4gIHZlZ2FDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxib29sZWFuPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgY2hhbmdlIGluIHRoZSBjaGVjayBzdGF0dXNcbiAgIG9mIHRoZSByYWRpbyBpbnB1dC4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxib29sZWFuPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydjaGVja2VkJywgJ2Rpc2FibGVkJywgJ25hbWUnLCAnc2l6ZScsICd2YWx1ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1yYWRpbycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnY2hlY2tlZCcsICdkaXNhYmxlZCcsICduYW1lJywgJ3NpemUnLCAndmFsdWUnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhUmFkaW8ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhRm9jdXMnLCAnZm9jdXMnLCAndmVnYUJsdXInLCAnYmx1cicsICd2ZWdhQ2hhbmdlJywgJ2NoYW5nZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhUmFkaW9Hcm91cCBleHRlbmRzIENvbXBvbmVudHMuVmVnYVJhZGlvR3JvdXAge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNoYW5nZSBvZiB0aGVcbiAgIGNoZWNrZWQgcmFkaW8gYnV0dG9uIGluIHRoZSByYWRpbyBncm91cC4gQHZlZ2FWZXJzaW9uIDEuMC4xMFxuICAgKi9cbiAgdmVnYUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNoYW5nZSBvZiB0aGVcbiAgIGNoZWNrZWQgcmFkaW8gYnV0dG9uIGluIHRoZSByYWRpbyBncm91cC4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2F1dG9WYWxpZGF0aW9uJywgJ2Rpc2FibGVkJywgJ2hpbnQnLCAnaXNWYWxpZCcsICdsYWJlbCcsICduYW1lJywgJ29wdGlvbmFsJywgJ3JlcXVpcmVkJywgJ3ZhbGlkYXRpb25SdWxlcycsICd2YWx1ZScsICd2ZWdhRmxleFByb3AnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtcmFkaW8tZ3JvdXAnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2F1dG9WYWxpZGF0aW9uJywgJ2Rpc2FibGVkJywgJ2hpbnQnLCAnaXNWYWxpZCcsICdsYWJlbCcsICduYW1lJywgJ29wdGlvbmFsJywgJ3JlcXVpcmVkJywgJ3ZhbGlkYXRpb25SdWxlcycsICd2YWx1ZScsICd2ZWdhRmxleFByb3AnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhUmFkaW9Hcm91cCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDaGFuZ2UnLCAnY2hhbmdlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FSaWNoVGV4dENvbnRlbnQgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FSaWNoVGV4dENvbnRlbnQge31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydjb250ZW50JywgJ2V4dGVuc2lvbnMnXSxcbiAgbWV0aG9kczogWyd2ZWdhRm9jdXMnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtcmljaC10ZXh0LWNvbnRlbnQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2NvbnRlbnQnLCAnZXh0ZW5zaW9ucyddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FSaWNoVGV4dENvbnRlbnQge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5pbXBvcnQgdHlwZSB7IFZlZ2FSVEVDb250ZW50IGFzIElWZWdhUmljaFRleHRFZGl0b3JWZWdhUlRFQ29udGVudCB9IGZyb20gJ0BnbG9iYWxwYXltZW50cy92ZWdhL2Rpc3QvdHlwZXMvY29tcG9uZW50cy92ZWdhLXJpY2gtdGV4dC1lZGl0b3IvZHRvL2NvbnRlbnQtc3RhdGUnO1xuaW1wb3J0IHR5cGUgeyBWZWdhUmljaFRleHRFZGl0b3JJbWFnZSBhcyBJVmVnYVJpY2hUZXh0RWRpdG9yVmVnYVJpY2hUZXh0RWRpdG9ySW1hZ2UgfSBmcm9tICdAZ2xvYmFscGF5bWVudHMvdmVnYS9kaXN0L3R5cGVzL2NvbXBvbmVudHMvdmVnYS1yaWNoLXRleHQtZWRpdG9yL2ludGVyZmFjZSc7XG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVJpY2hUZXh0RWRpdG9yIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhUmljaFRleHRFZGl0b3Ige1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgYSB2YWx1ZSBjaGFuZ2UuIEB2ZWdhVmVyc2lvbiAyLjM0LjBcbiAgICovXG4gIHZlZ2FDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYVJpY2hUZXh0RWRpdG9yVmVnYVJURUNvbnRlbnQ+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGEgdmFsdWUgY2hhbmdlLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4zNC4wXG4gICAqL1xuICBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYVJpY2hUZXh0RWRpdG9yVmVnYVJURUNvbnRlbnQ+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGFuIGltYWdlIGluc2VydGlvbiBldmVudC4gQHZlZ2FWZXJzaW9uIDIuMzQuMFxuICAgKi9cbiAgdmVnYUltYWdlSW5zZXJ0ZWQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYVJpY2hUZXh0RWRpdG9yVmVnYVJpY2hUZXh0RWRpdG9ySW1hZ2U+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGFuIGltYWdlIGluc2VydGlvbiBldmVudC4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMzQuMFxuICAgKi9cbiAgaW1hZ2VJbnNlcnRlZDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhUmljaFRleHRFZGl0b3JWZWdhUmljaFRleHRFZGl0b3JJbWFnZT4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgYSBzb3VyY2UgY29kZSBjaGFuZ2UgZXZlbnQuIEl0IHRyaWdnZXJzIHdoZW4gdGhlIGVkaXRvciBsb3NlcyBmb2N1cyBpbiBzb3VyY2UgZWRpdCBtb2RlLiBAdmVnYVZlcnNpb24gMi43OC4wXG4gICAqL1xuICB2ZWdhU291cmNlQ29kZUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgYSBzb3VyY2UgY29kZSBjaGFuZ2UgZXZlbnQuIEl0IHRyaWdnZXJzIHdoZW4gdGhlIGVkaXRvciBsb3NlcyBmb2N1cyBpbiBzb3VyY2UgZWRpdCBtb2RlLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi43OC4wXG4gICAqL1xuICBzb3VyY2VDb2RlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydhbGxvd1NvdXJjZUVkaXQnLCAnYXV0b1ZhbGlkYXRpb24nLCAnZGlzYWJsZWQnLCAnZXh0ZW5zaW9ucycsICdoaW50JywgJ2lzVmFsaWQnLCAnbGFiZWwnLCAnbmFtZScsICdvcHRpb25hbCcsICdwbGFjZWhvbGRlcicsICdyZXF1aXJlZCcsICdyb3dzJywgJ3NvdXJjZUVkaXRDb25maWcnLCAndGV4dFN0eWxlSXRlbXMnLCAndG9vbGJhckl0ZW1zJywgJ3ZhbGlkYXRpb25SdWxlcycsICd2YWx1ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1yaWNoLXRleHQtZWRpdG9yJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydhbGxvd1NvdXJjZUVkaXQnLCAnYXV0b1ZhbGlkYXRpb24nLCAnZGlzYWJsZWQnLCAnZXh0ZW5zaW9ucycsICdoaW50JywgJ2lzVmFsaWQnLCAnbGFiZWwnLCAnbmFtZScsICdvcHRpb25hbCcsICdwbGFjZWhvbGRlcicsICdyZXF1aXJlZCcsICdyb3dzJywgJ3NvdXJjZUVkaXRDb25maWcnLCAndGV4dFN0eWxlSXRlbXMnLCAndG9vbGJhckl0ZW1zJywgJ3ZhbGlkYXRpb25SdWxlcycsICd2YWx1ZSddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FSaWNoVGV4dEVkaXRvciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDaGFuZ2UnLCAnY2hhbmdlJywgJ3ZlZ2FJbWFnZUluc2VydGVkJywgJ2ltYWdlSW5zZXJ0ZWQnLCAndmVnYVNvdXJjZUNvZGVDaGFuZ2UnLCAnc291cmNlQ29kZUNoYW5nZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhUmljaFRleHRFZGl0b3JUb29sYmFyQnV0dG9uIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhUmljaFRleHRFZGl0b3JUb29sYmFyQnV0dG9uIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjbGljayBldmVudCBvZiB0aGUgYnV0dG9uLiBAdmVnYVZlcnNpb24gMi4zNC4wXG4gICAqL1xuICB2ZWdhQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjbGljayBldmVudCBvZiB0aGUgYnV0dG9uLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4zNC4wXG4gICAqL1xuICBjbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnYXJyb3dJY29uJywgJ2Rpc2FibGVkJywgJ2hpZGRlbicsICdpY29uJywgJ2ljb25Db2xvcicsICdzZWxlY3RlZCcsICdzaG93QXJyb3dJY29uJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXJpY2gtdGV4dC1lZGl0b3ItdG9vbGJhci1idXR0b24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2Fycm93SWNvbicsICdkaXNhYmxlZCcsICdoaWRkZW4nLCAnaWNvbicsICdpY29uQ29sb3InLCAnc2VsZWN0ZWQnLCAnc2hvd0Fycm93SWNvbiddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FSaWNoVGV4dEVkaXRvclRvb2xiYXJCdXR0b24ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2xpY2snLCAnY2xpY2snXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVJpY2hUZXh0RmluZFJlcGxhY2VQYW5lbCBleHRlbmRzIENvbXBvbmVudHMuVmVnYVJpY2hUZXh0RmluZFJlcGxhY2VQYW5lbCB7XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gYSBwYW5lbCBpbnB1dCB2YWx1ZSBjaGFuZ2VzLlxuUGF5bG9hZCBpbmNsdWRlcyB0aGUgaW5wdXQgdHlwZSAoYGtleXdvcmRgIG9yIGByZXBsYWNlYCkgYW5kIHZhbHVlLiBAdmVnYVZlcnNpb24gMi45Mi4wXG4gICAqL1xuICB2ZWdhQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyB0eXBlOiAna2V5d29yZCcgfCAncmVwbGFjZSc7IHZhbHVlOiBzdHJpbmcgfT4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIGEgcGFuZWwgYWN0aW9uIGJ1dHRvbiBpcyBjbGlja2VkLlxuUGF5bG9hZCBpbmNsdWRlcyB0aGUgYWN0aW9uIGtleSBhbmQgb3B0aW9uYWwgZGF0YS4gQHZlZ2FWZXJzaW9uIDIuOTIuMFxuICAgKi9cbiAgdmVnYUNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBhY3Rpb246IHN0cmluZzsgZGF0YT86IHVua25vd24gfT4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBtZXRob2RzOiBbJ3VwZGF0ZVJlc3VsdCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1yaWNoLXRleHQtZmluZC1yZXBsYWNlLXBhbmVsJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50Pidcbn0pXG5leHBvcnQgY2xhc3MgVmVnYVJpY2hUZXh0RmluZFJlcGxhY2VQYW5lbCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDaGFuZ2UnLCAndmVnYUNsaWNrJ10pO1xuICB9XG59XG5cbmltcG9ydCB0eXBlIHsgVmVnYVJpY2hUZXh0SW1hZ2VFZGl0b3JDaGFuZ2VEZXRhaWwgYXMgSVZlZ2FSaWNoVGV4dEltYWdlRWRpdG9yVmVnYVJpY2hUZXh0SW1hZ2VFZGl0b3JDaGFuZ2VEZXRhaWwgfSBmcm9tICdAZ2xvYmFscGF5bWVudHMvdmVnYS9kaXN0L3R5cGVzL2NvbXBvbmVudHMvdmVnYS1yaWNoLXRleHQtZWRpdG9yL3ZlZ2EtcmljaC10ZXh0LWltYWdlLWVkaXRvci90eXBlcyc7XG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVJpY2hUZXh0SW1hZ2VFZGl0b3IgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FSaWNoVGV4dEltYWdlRWRpdG9yIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGNvbnRlbnQgY2hhbmdlLiBAdmVnYVZlcnNpb24gMi4zNC4wXG4gICAqL1xuICB2ZWdhQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FSaWNoVGV4dEltYWdlRWRpdG9yVmVnYVJpY2hUZXh0SW1hZ2VFZGl0b3JDaGFuZ2VEZXRhaWw+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGNvbnRlbnQgY2hhbmdlLiBAdmVnYVZlcnNpb24gMi4zNC4wXG4gICAqL1xuICBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYVJpY2hUZXh0SW1hZ2VFZGl0b3JWZWdhUmljaFRleHRJbWFnZUVkaXRvckNoYW5nZURldGFpbD4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnYWx0JywgJ3NpemUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtcmljaC10ZXh0LWltYWdlLWVkaXRvcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnYWx0JywgJ3NpemUnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhUmljaFRleHRJbWFnZUVkaXRvciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDaGFuZ2UnLCAnY2hhbmdlJ10pO1xuICB9XG59XG5cbmltcG9ydCB0eXBlIHsgVmVnYVJpY2hUZXh0TGlua0VkaXRvckNoYW5nZURldGFpbCBhcyBJVmVnYVJpY2hUZXh0TGlua0VkaXRvclZlZ2FSaWNoVGV4dExpbmtFZGl0b3JDaGFuZ2VEZXRhaWwgfSBmcm9tICdAZ2xvYmFscGF5bWVudHMvdmVnYS9kaXN0L3R5cGVzL2NvbXBvbmVudHMvdmVnYS1yaWNoLXRleHQtZWRpdG9yL3ZlZ2EtcmljaC10ZXh0LWxpbmstZWRpdG9yL3R5cGVzJztcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhUmljaFRleHRMaW5rRWRpdG9yIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhUmljaFRleHRMaW5rRWRpdG9yIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGNvbnRlbnQgY2hhbmdlLiBAdmVnYVZlcnNpb24gMi4zNC4wXG4gICAqL1xuICB2ZWdhQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FSaWNoVGV4dExpbmtFZGl0b3JWZWdhUmljaFRleHRMaW5rRWRpdG9yQ2hhbmdlRGV0YWlsPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBjb250ZW50IGNoYW5nZS4gQHZlZ2FWZXJzaW9uIDIuMzQuMFxuICAgKi9cbiAgY2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FSaWNoVGV4dExpbmtFZGl0b3JWZWdhUmljaFRleHRMaW5rRWRpdG9yQ2hhbmdlRGV0YWlsPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydyZWNvcmQnLCAncmVzZXRTdGF0dXNBZnRlckhpZGUnLCAnc3RhdHVzJywgJ3RhcmdldCddLFxuICBtZXRob2RzOiBbJ3Nob3cnLCAnaGlkZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1yaWNoLXRleHQtbGluay1lZGl0b3InLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ3JlY29yZCcsICdyZXNldFN0YXR1c0FmdGVySGlkZScsICdzdGF0dXMnLCAndGFyZ2V0J11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYVJpY2hUZXh0TGlua0VkaXRvciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDaGFuZ2UnLCAnY2hhbmdlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FSaWNoVGV4dFNwZWNpYWxDaGFyYWN0ZXJzUGFuZWwgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FSaWNoVGV4dFNwZWNpYWxDaGFyYWN0ZXJzUGFuZWwge1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIGEgY2hhcmFjdGVyIGNlbGwgaXMgY2xpY2tlZC4gVGhlIHBheWxvYWQgaXMgdGhlIFVuaWNvZGUgY2hhcmFjdGVyIHN0cmluZy4gQHZlZ2FWZXJzaW9uIDIuODguMFxuICAgKi9cbiAgdmVnYUNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gYSBjaGFyYWN0ZXIgY2VsbCBpcyBjbGlja2VkLiBUaGUgcGF5bG9hZCBpcyB0aGUgVW5pY29kZSBjaGFyYWN0ZXIgc3RyaW5nLiBAdmVnYVZlcnNpb24gMi44OC4wXG4gICAqL1xuICBjbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnY2F0ZWdvcmllcyddLFxuICBtZXRob2RzOiBbJ3Jlc2V0UGFuZWwnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtcmljaC10ZXh0LXNwZWNpYWwtY2hhcmFjdGVycy1wYW5lbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnY2F0ZWdvcmllcyddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FSaWNoVGV4dFNwZWNpYWxDaGFyYWN0ZXJzUGFuZWwge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2xpY2snLCAnY2xpY2snXSk7XG4gIH1cbn1cblxuaW1wb3J0IHR5cGUgeyBSVEVUYWJsZVByb3BlcnRpZXNUeXBlIGFzIElWZWdhUmljaFRleHRUYWJsZVByb3BlcnRpZXNSVEVUYWJsZVByb3BlcnRpZXNUeXBlIH0gZnJvbSAnQGdsb2JhbHBheW1lbnRzL3ZlZ2EvZGlzdC90eXBlcy9jb21wb25lbnRzL3ZlZ2EtcmljaC10ZXh0LWVkaXRvci9pbnRlcmZhY2UnO1xuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FSaWNoVGV4dFRhYmxlUHJvcGVydGllcyBleHRlbmRzIENvbXBvbmVudHMuVmVnYVJpY2hUZXh0VGFibGVQcm9wZXJ0aWVzIHtcbiAgLyoqXG4gICAqICBAdmVnYVZlcnNpb24gMi43OS4wXG4gICAqL1xuICB2ZWdhQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FSaWNoVGV4dFRhYmxlUHJvcGVydGllc1JURVRhYmxlUHJvcGVydGllc1R5cGU+PjtcbiAgLyoqXG4gICAqICBAdmVnYVZlcnNpb24gMi43OS4wXG4gICAqL1xuICB2ZWdhQ2FuY2VsOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FSaWNoVGV4dFRhYmxlUHJvcGVydGllc1JURVRhYmxlUHJvcGVydGllc1R5cGU+PjtcbiAgLyoqXG4gICAqICBAdmVnYVZlcnNpb24gMi43OS4wXG4gICAqL1xuICB2ZWdhU2F2ZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHVua25vd24+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2NvbG9ycycsICdkZWZhdWx0VmFsdWUnLCAnc3R5bGVNYXAnLCAndHlwZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1yaWNoLXRleHQtdGFibGUtcHJvcGVydGllcycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnY29sb3JzJywgJ2RlZmF1bHRWYWx1ZScsICdzdHlsZU1hcCcsICd0eXBlJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYVJpY2hUZXh0VGFibGVQcm9wZXJ0aWVzIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUNoYW5nZScsICd2ZWdhQ2FuY2VsJywgJ3ZlZ2FTYXZlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FSaWNoVGV4dFRhYmxlU2VsZWN0aW9uV2lkZ2V0IGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhUmljaFRleHRUYWJsZVNlbGVjdGlvbldpZGdldCB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBhIGRlbGV0ZSBhY3Rpb24gb24gdGhlIHdpZGdldC4gQHZlZ2FWZXJzaW9uIDIuNzkuMFxuICAgKi9cbiAgdmVnYVJlbW92ZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1yaWNoLXRleHQtdGFibGUtc2VsZWN0aW9uLXdpZGdldCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FSaWNoVGV4dFRhYmxlU2VsZWN0aW9uV2lkZ2V0IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYVJlbW92ZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhUmljaFRleHRUYWJsZVNldHRpbmcgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FSaWNoVGV4dFRhYmxlU2V0dGluZyB7XG4gIC8qKlxuICAgKiAgQHZlZ2FWZXJzaW9uIDIuNzkuMFxuICAgKi9cbiAgdmVnYUNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8QXJyYXk8c3RyaW5nPj4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnaGFzQ2FwdGlvbicsICdzZWxlY3RlZENlbGxzJywgJ3RhcmdldCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1yaWNoLXRleHQtdGFibGUtc2V0dGluZycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnaGFzQ2FwdGlvbicsICdzZWxlY3RlZENlbGxzJywgJ3RhcmdldCddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FSaWNoVGV4dFRhYmxlU2V0dGluZyB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDbGljayddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhU2VjdGlvblRpdGxlIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhU2VjdGlvblRpdGxlIHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnZGVzY3JpcHRpb24nLCAnaWNvbicsICdpY29uQWxpZ24nLCAnaWNvbkNvbG9yJywgJ3NpemUnLCAndGl0bGVUZXh0J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXNlY3Rpb24tdGl0bGUnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2Rlc2NyaXB0aW9uJywgJ2ljb24nLCAnaWNvbkFsaWduJywgJ2ljb25Db2xvcicsICdzaXplJywgJ3RpdGxlVGV4dCddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FTZWN0aW9uVGl0bGUge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhU2VnbWVudENvbnRyb2wgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FTZWdtZW50Q29udHJvbCB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBjaGFuZ2VzXG4gICBpbiB0aGUgc2VsZWN0ZWQgc2VnbWVudC4gQHZlZ2FWZXJzaW9uIDIuMy4wXG4gICAqL1xuICB2ZWdhQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBBIG5hdGl2ZSBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBjaGFuZ2VzXG4gICBpbiB0aGUgc2VsZWN0ZWQgc2VnbWVudC4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMy4wXG4gICAqL1xuICBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2Jsb2NrJywgJ3NlZ21lbnRzJywgJ3NlbGVjdGVkJywgJ3NpemUnLCAndmFyaWFudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1zZWdtZW50LWNvbnRyb2wnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2Jsb2NrJywgJ3NlZ21lbnRzJywgJ3NlbGVjdGVkJywgJ3NpemUnLCAndmFyaWFudCddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FTZWdtZW50Q29udHJvbCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDaGFuZ2UnLCAnY2hhbmdlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FTZWxlY3Rpb25DaGlwIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhU2VsZWN0aW9uQ2hpcCB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBjaGFuZ2VzIGluIHRoZSB2YWx1ZSBvZiB0aGUgc2VsZWN0aW9uIGNoaXAsXG4gICB3aGV0aGVyIHRyaWdnZXJlZCBwcm9ncmFtbWF0aWNhbGx5IG9yIHRocm91Z2ggdXNlciBpbnRlcmFjdGlvbi4gQHZlZ2FWZXJzaW9uIDIuMjIuMFxuICAgKi9cbiAgdmVnYUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgY2hhbmdlcyBpbiB0aGUgdmFsdWUgb2YgdGhlIHNlbGVjdGlvbiBjaGlwLFxuICAgd2hldGhlciB0cmlnZ2VyZWQgcHJvZ3JhbW1hdGljYWxseSBvciB0aHJvdWdoIHVzZXIgaW50ZXJhY3Rpb24uIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjIyLjBcbiAgICovXG4gIGNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnYmxvY2snLCAnY2hlY2tlZCcsICdkaXNhYmxlZCcsICdkaXNhYmxlZFRvb2x0aXAnLCAnbGFiZWwnLCAnc2l6ZScsICdzd2F0Y2hDb2xvcicsICd2YWx1ZScsICd2YXJpYW50J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXNlbGVjdGlvbi1jaGlwJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydibG9jaycsICdjaGVja2VkJywgJ2Rpc2FibGVkJywgJ2Rpc2FibGVkVG9vbHRpcCcsICdsYWJlbCcsICdzaXplJywgJ3N3YXRjaENvbG9yJywgJ3ZhbHVlJywgJ3ZhcmlhbnQnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhU2VsZWN0aW9uQ2hpcCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDaGFuZ2UnLCAnY2hhbmdlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FTZWxlY3Rpb25DaGlwR3JvdXAgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FTZWxlY3Rpb25DaGlwR3JvdXAge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgY2hhbmdlcyBpbiB0aGUgdmFsdWUgb2YgdGhlIHNlbGVjdGlvbiBjaGlwIGdyb3VwLFxuICAgd2hldGhlciB0cmlnZ2VyZWQgcHJvZ3JhbW1hdGljYWxseSBvciB0aHJvdWdoIHVzZXIgaW50ZXJhY3Rpb24uIEB2ZWdhVmVyc2lvbiAyLjIyLjBcbiAgICovXG4gIHZlZ2FDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGNoYW5nZXMgaW4gdGhlIHZhbHVlIG9mIHRoZSBzZWxlY3Rpb24gY2hpcCBncm91cCxcbiAgIHdoZXRoZXIgdHJpZ2dlcmVkIHByb2dyYW1tYXRpY2FsbHkgb3IgdGhyb3VnaCB1c2VyIGludGVyYWN0aW9uLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4yMi4wXG4gICAqL1xuICBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2Rpc2FibGVkJywgJ2hpbnQnLCAnaXNWYWxpZCcsICdsYWJlbCcsICduYW1lJywgJ29wdGlvbmFsJywgJ3JlcXVpcmVkJywgJ3NlbGVjdFR5cGUnLCAndmFsaWRhdGlvblJ1bGVzJywgJ3ZhbHVlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXNlbGVjdGlvbi1jaGlwLWdyb3VwJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydkaXNhYmxlZCcsICdoaW50JywgJ2lzVmFsaWQnLCAnbGFiZWwnLCAnbmFtZScsICdvcHRpb25hbCcsICdyZXF1aXJlZCcsICdzZWxlY3RUeXBlJywgJ3ZhbGlkYXRpb25SdWxlcycsICd2YWx1ZSddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FTZWxlY3Rpb25DaGlwR3JvdXAge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2hhbmdlJywgJ2NoYW5nZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhU2VsZWN0aW9uVGlsZSBleHRlbmRzIENvbXBvbmVudHMuVmVnYVNlbGVjdGlvblRpbGUge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgY2hhbmdlcyBpbiB0aGUgdmFsdWUgb2YgdGhlIHNlbGVjdGlvbiB0aWxlLFxuICAgd2hldGhlciB0cmlnZ2VyZWQgcHJvZ3JhbW1hdGljYWxseSBvciB0aHJvdWdoIHVzZXIgaW50ZXJhY3Rpb24uIEB2ZWdhVmVyc2lvbiAyLjcuMFxuICAgKi9cbiAgdmVnYUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgY2hhbmdlcyBpbiB0aGUgdmFsdWUgb2YgdGhlIHNlbGVjdGlvbiB0aWxlLFxuICAgd2hldGhlciB0cmlnZ2VyZWQgcHJvZ3JhbW1hdGljYWxseSBvciB0aHJvdWdoIHVzZXIgaW50ZXJhY3Rpb24uIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjcuMFxuICAgKi9cbiAgY2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydjaGVja2VkJywgJ2Rpc2FibGVkJywgJ25vdGUnLCAncHJlZml4SWNvbicsICdzZWxlY3RUeXBlJywgJ3RpdGxlVGV4dCcsICd2YWx1ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1zZWxlY3Rpb24tdGlsZScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnY2hlY2tlZCcsICdkaXNhYmxlZCcsICdub3RlJywgJ3ByZWZpeEljb24nLCAnc2VsZWN0VHlwZScsICd0aXRsZVRleHQnLCAndmFsdWUnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhU2VsZWN0aW9uVGlsZSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDaGFuZ2UnLCAnY2hhbmdlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FTZWxlY3Rpb25UaWxlR3JvdXAgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FTZWxlY3Rpb25UaWxlR3JvdXAge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgY2hhbmdlcyBpbiB0aGUgdmFsdWUgb2YgdGhlIHNlbGVjdGlvbiB0aWxlIGdyb3VwLFxuICAgd2hldGhlciB0cmlnZ2VyZWQgcHJvZ3JhbW1hdGljYWxseSBvciB0aHJvdWdoIHVzZXIgaW50ZXJhY3Rpb24uIEB2ZWdhVmVyc2lvbiAyLjcuMFxuICAgKi9cbiAgdmVnYUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgY2hhbmdlcyBpbiB0aGUgdmFsdWUgb2YgdGhlIHNlbGVjdGlvbiB0aWxlIGdyb3VwLFxuICAgd2hldGhlciB0cmlnZ2VyZWQgcHJvZ3JhbW1hdGljYWxseSBvciB0aHJvdWdoIHVzZXIgaW50ZXJhY3Rpb24uIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjcuMFxuICAgKi9cbiAgY2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydkaXNhYmxlZCcsICdkaXN0cmlidXRlRXZlbmx5JywgJ2hpbnQnLCAnaXNWYWxpZCcsICdsYWJlbCcsICdsYXlvdXQnLCAnbmFtZScsICdvcHRpb25hbCcsICdyZXF1aXJlZCcsICdzZWxlY3RUeXBlJywgJ3ZhbGlkYXRpb25SdWxlcycsICd2YWx1ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1zZWxlY3Rpb24tdGlsZS1ncm91cCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnZGlzYWJsZWQnLCAnZGlzdHJpYnV0ZUV2ZW5seScsICdoaW50JywgJ2lzVmFsaWQnLCAnbGFiZWwnLCAnbGF5b3V0JywgJ25hbWUnLCAnb3B0aW9uYWwnLCAncmVxdWlyZWQnLCAnc2VsZWN0VHlwZScsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWUnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhU2VsZWN0aW9uVGlsZUdyb3VwIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUNoYW5nZScsICdjaGFuZ2UnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVNpZGVuYXYgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FTaWRlbmF2IHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjb21wbGV0aW9uIG9mIGEgbmF2aWdhdGlvbiBtZW51IHN0YXRlIGNoYW5nZSAob3BlbiBvciBjbG9zZSkuIEB2ZWdhVmVyc2lvbiAxLCB2Mi4yOS4wXG4gICAqL1xuICB2ZWdhU3RhdGVVcGRhdGU6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjb21wbGV0aW9uIG9mIGEgbmF2aWdhdGlvbiBtZW51IHN0YXRlIGNoYW5nZSAob3BlbiBvciBjbG9zZSkuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAxLCB2Mi4yOS4wXG4gICAqL1xuICBzdGF0ZVVwZGF0ZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnZm9vdG5vdGUnLCAnaGVhZGVyQ29uZmlnJywgJ29wZW5CeURlZmF1bHQnLCAnc291cmNlJ10sXG4gIG1ldGhvZHM6IFsndG9nZ2xlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXNpZGVuYXYnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2Zvb3Rub3RlJywgJ2hlYWRlckNvbmZpZycsICdvcGVuQnlEZWZhdWx0JywgJ3NvdXJjZSddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FTaWRlbmF2IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYVN0YXRlVXBkYXRlJywgJ3N0YXRlVXBkYXRlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FTaWRlbmF2R3JvdXAgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FTaWRlbmF2R3JvdXAge31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydpY29uJywgJ2xhYmVsJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXNpZGVuYXYtZ3JvdXAnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2ljb24nLCAnbGFiZWwnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhU2lkZW5hdkdyb3VwIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVNpZGVuYXZMaW5rIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhU2lkZW5hdkxpbmsge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgYWJvdXQgdGhlIG9jY3VycmVuY2Ugb2YgYSBjbGljayBldmVudC4gQHZlZ2FWZXJzaW9uIDEsIHYyLjI5LjBcbiAgICovXG4gIHZlZ2FDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgYWJvdXQgdGhlIG9jY3VycmVuY2Ugb2YgYSBjbGljayBldmVudC4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDEsIHYyLjI5LjBcbiAgICovXG4gIGNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8YW55Pj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydpY29uJywgJ3NlbGVjdGVkJywgJ3Nob3dTaWRlQmFyT25DbGlja0xpbmsnLCAndXJsJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXNpZGVuYXYtbGluaycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnaWNvbicsICdzZWxlY3RlZCcsICdzaG93U2lkZUJhck9uQ2xpY2tMaW5rJywgJ3VybCddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FTaWRlbmF2TGluayB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDbGljaycsICdjbGljayddKTtcbiAgfVxufVxuXG5pbXBvcnQgdHlwZSB7IFZlZ2FTaWduYXR1cmVWYWx1ZSBhcyBJVmVnYVNpZ25hdHVyZUNhcHR1cmVWZWdhU2lnbmF0dXJlVmFsdWUgfSBmcm9tICdAZ2xvYmFscGF5bWVudHMvdmVnYS9kaXN0L3R5cGVzL2NvbXBvbmVudHMvdmVnYS1zaWduYXR1cmUtY2FwdHVyZS90eXBlcyc7XG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVNpZ25hdHVyZUNhcHR1cmUgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FTaWduYXR1cmVDYXB0dXJlIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGEgdmFsdWUgY2hhbmdlLiBAdmVnYVZlcnNpb24gMi4xOS4wXG4gICAqL1xuICB2ZWdhQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FTaWduYXR1cmVDYXB0dXJlVmVnYVNpZ25hdHVyZVZhbHVlPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBhIHZhbHVlIGNoYW5nZS4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMTkuMFxuICAgKi9cbiAgY2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FTaWduYXR1cmVDYXB0dXJlVmVnYVNpZ25hdHVyZVZhbHVlPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydhdXRvVmFsaWRhdGlvbicsICdkaXNhYmxlZCcsICdoZWlnaHQnLCAnaXNWYWxpZCcsICdsYWJlbCcsICdtb2RlJywgJ25hbWUnLCAnb3B0aW9uYWwnLCAncGxhY2Vob2xkZXInLCAncGxhY2Vob2xkZXJJY29uJywgJ3JlcXVpcmVkJywgJ3Nob3dDbGVhckJ0bicsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWUnXSxcbiAgbWV0aG9kczogWydjbGVhciddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1zaWduYXR1cmUtY2FwdHVyZScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnYXV0b1ZhbGlkYXRpb24nLCAnZGlzYWJsZWQnLCAnaGVpZ2h0JywgJ2lzVmFsaWQnLCAnbGFiZWwnLCAnbW9kZScsICduYW1lJywgJ29wdGlvbmFsJywgJ3BsYWNlaG9sZGVyJywgJ3BsYWNlaG9sZGVySWNvbicsICdyZXF1aXJlZCcsICdzaG93Q2xlYXJCdG4nLCAndmFsaWRhdGlvblJ1bGVzJywgJ3ZhbHVlJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYVNpZ25hdHVyZUNhcHR1cmUge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2hhbmdlJywgJ2NoYW5nZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhU2tlbGV0b24gZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FTa2VsZXRvbiB7fVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2FuaW1hdGVkJywgJ2Nvcm5lcnMnLCAnaGVpZ2h0JywgJ3R5cGUnLCAnd2lkdGgnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2Etc2tlbGV0b24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2FuaW1hdGVkJywgJ2Nvcm5lcnMnLCAnaGVpZ2h0JywgJ3R5cGUnLCAnd2lkdGgnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhU2tlbGV0b24ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhU2xvdENvbnRhaW5lciBleHRlbmRzIENvbXBvbmVudHMuVmVnYVNsb3RDb250YWluZXIge31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWRcbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXNsb3QtY29udGFpbmVyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50Pidcbn0pXG5leHBvcnQgY2xhc3MgVmVnYVNsb3RDb250YWluZXIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhU3RlcHBlciBleHRlbmRzIENvbXBvbmVudHMuVmVnYVN0ZXBwZXIge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgY2hhbmdlcyBpbiB0aGUgdmFsdWUgb2YgdGhlIHN0ZXBwZXIgY29tcG9uZW50LiBAdmVnYVZlcnNpb24gMS4wLjhcbiAgICovXG4gIHZlZ2FDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxudW1iZXI+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGNoYW5nZXMgaW4gdGhlIHZhbHVlIG9mIHRoZSBzdGVwcGVyIGNvbXBvbmVudC4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxudW1iZXI+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2F1dG9WYWxpZGF0aW9uJywgJ2J1dHRvblZhcmlhbnQnLCAnZGlzYWJsZWQnLCAnaW5wdXREaXNhYmxlZCcsICdpc1ZhbGlkJywgJ2xhYmVsJywgJ21heCcsICdtaW4nLCAnbmFtZScsICdzdGVwcGVySWQnLCAndmFsdWUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2Etc3RlcHBlcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnYXV0b1ZhbGlkYXRpb24nLCAnYnV0dG9uVmFyaWFudCcsICdkaXNhYmxlZCcsICdpbnB1dERpc2FibGVkJywgJ2lzVmFsaWQnLCAnbGFiZWwnLCAnbWF4JywgJ21pbicsICduYW1lJywgJ3N0ZXBwZXJJZCcsICd2YWx1ZSddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FTdGVwcGVyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUNoYW5nZScsICdjaGFuZ2UnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVRhYkdyb3VwIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhVGFiR3JvdXAge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNsaWNrIGV2ZW50IG9mIGEgdGFiXG4gICBpbiB0aGUgdGFiIGdyb3VwLiBAdmVnYVZlcnNpb24gMS4xLjBcbiAgICovXG4gIHZlZ2FDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNsaWNrIGV2ZW50IG9mIGEgdGFiXG4gICBpbiB0aGUgdGFiIGdyb3VwLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydnYXAnLCAnb3ZlcmZsb3cnLCAncG9zaXRpb25SZWxhdGl2ZVRvJywgJ3NlbGVjdGVkVGFiRGF0YVRhcmdldCcsICdzaG93Q2xvc2VCdXR0b24nLCAndGFiSXRlbXMnLCAndmFyaWFudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS10YWItZ3JvdXAnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2dhcCcsICdvdmVyZmxvdycsICdwb3NpdGlvblJlbGF0aXZlVG8nLCAnc2VsZWN0ZWRUYWJEYXRhVGFyZ2V0JywgJ3Nob3dDbG9zZUJ1dHRvbicsICd0YWJJdGVtcycsICd2YXJpYW50J11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYVRhYkdyb3VwIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUNsaWNrJywgJ2NsaWNrJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FUYWJHcm91cFBhbmVsIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhVGFiR3JvdXBQYW5lbCB7fVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2lzQWN0aXZlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXRhYi1ncm91cC1wYW5lbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnaXNBY3RpdmUnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhVGFiR3JvdXBQYW5lbCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cbmltcG9ydCB0eXBlIHsgVmVnYVRhYmxlQ2hhbmdlUHJvcFR5cGUgYXMgSVZlZ2FUYWJsZVZlZ2FUYWJsZUNoYW5nZVByb3BUeXBlIH0gZnJvbSAnQGdsb2JhbHBheW1lbnRzL3ZlZ2EvZGlzdC90eXBlcy9jb21wb25lbnRzL3ZlZ2EtdGFibGUvaW50ZXJmYWNlJztcbmltcG9ydCB0eXBlIHsgVmVnYVRhYmxlUm93Q2xpY2tQcm9wVHlwZSBhcyBJVmVnYVRhYmxlVmVnYVRhYmxlUm93Q2xpY2tQcm9wVHlwZSB9IGZyb20gJ0BnbG9iYWxwYXltZW50cy92ZWdhL2Rpc3QvdHlwZXMvY29tcG9uZW50cy92ZWdhLXRhYmxlL2ludGVyZmFjZSc7XG5pbXBvcnQgdHlwZSB7IFZlZ2FUYWJsZVJvd0V4cGFuZEV2ZW50RGV0YWlsIGFzIElWZWdhVGFibGVWZWdhVGFibGVSb3dFeHBhbmRFdmVudERldGFpbCB9IGZyb20gJ0BnbG9iYWxwYXltZW50cy92ZWdhL2Rpc3QvdHlwZXMvY29tcG9uZW50cy92ZWdhLXRhYmxlL2ludGVyZmFjZSc7XG5pbXBvcnQgdHlwZSB7IFZlZ2FUYWJsZVJvd1NlbGVjdFByb3AgYXMgSVZlZ2FUYWJsZVZlZ2FUYWJsZVJvd1NlbGVjdFByb3AgfSBmcm9tICdAZ2xvYmFscGF5bWVudHMvdmVnYS9kaXN0L3R5cGVzL2NvbXBvbmVudHMvdmVnYS10YWJsZS9pbnRlcmZhY2UnO1xuaW1wb3J0IHR5cGUgeyBWZWdhVGFibGVTZWxlY3RBbGxQcm9wIGFzIElWZWdhVGFibGVWZWdhVGFibGVTZWxlY3RBbGxQcm9wIH0gZnJvbSAnQGdsb2JhbHBheW1lbnRzL3ZlZ2EvZGlzdC90eXBlcy9jb21wb25lbnRzL3ZlZ2EtdGFibGUvaW50ZXJmYWNlJztcbmltcG9ydCB0eXBlIHsgVmVnYVRhYmxlUm93U2VsZWN0RXZlbnREZXRhaWwgYXMgSVZlZ2FUYWJsZVZlZ2FUYWJsZVJvd1NlbGVjdEV2ZW50RGV0YWlsIH0gZnJvbSAnQGdsb2JhbHBheW1lbnRzL3ZlZ2EvZGlzdC90eXBlcy9jb21wb25lbnRzL3ZlZ2EtdGFibGUvaW50ZXJmYWNlJztcbmltcG9ydCB0eXBlIHsgVmVnYVRhYmxlUm93U2VsZWN0QWxsRXZlbnREZXRhaWwgYXMgSVZlZ2FUYWJsZVZlZ2FUYWJsZVJvd1NlbGVjdEFsbEV2ZW50RGV0YWlsIH0gZnJvbSAnQGdsb2JhbHBheW1lbnRzL3ZlZ2EvZGlzdC90eXBlcy9jb21wb25lbnRzL3ZlZ2EtdGFibGUvaW50ZXJmYWNlJztcbmltcG9ydCB0eXBlIHsgRHJhZ0Ryb3BFdmVudFBheWxvYWQgYXMgSVZlZ2FUYWJsZURyYWdEcm9wRXZlbnRQYXlsb2FkIH0gZnJvbSAnQGdsb2JhbHBheW1lbnRzL3ZlZ2EvZGlzdC90eXBlcy9jb21wb25lbnRzL3ZlZ2EtdGFibGUvaW50ZXJmYWNlJztcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhVGFibGUgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FUYWJsZSB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBjaGFuZ2VzIGluIHRoZSB0YWJsZSBkYXRhLiBAdmVnYVZlcnNpb24gMS4zLjBcbiAgICovXG4gIHZlZ2FDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYVRhYmxlVmVnYVRhYmxlQ2hhbmdlUHJvcFR5cGU+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGNoYW5nZXMgaW4gdGhlIHRhYmxlIGRhdGEuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgY2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FUYWJsZVZlZ2FUYWJsZUNoYW5nZVByb3BUeXBlPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgY2xpY2sgZXZlbnQgb2YgYSByb3dcbiAgIGluIHRoZSB0YWJsZS4gQHZlZ2FWZXJzaW9uIDEuMy4wXG4gICAqL1xuICB2ZWdhUm93Q2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYVRhYmxlVmVnYVRhYmxlUm93Q2xpY2tQcm9wVHlwZT4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNsaWNrIGV2ZW50IG9mIGEgcm93XG4gICBpbiB0aGUgdGFibGUuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgcm93Q2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYVRhYmxlVmVnYVRhYmxlUm93Q2xpY2tQcm9wVHlwZT4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGV4cGFuZGVkIGV2ZW50IG9mIGEgcm93XG4gICBpbiB0aGUgdGFibGUuIEB2ZWdhVmVyc2lvbiAyLjI0LjBcbiAgICovXG4gIHZlZ2FSb3dFeHBhbmQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYVRhYmxlVmVnYVRhYmxlUm93RXhwYW5kRXZlbnREZXRhaWw+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBleHBhbmRlZCBldmVudCBvZiBhIHJvd1xuICAgaW4gdGhlIHRhYmxlLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4yNC4wXG4gICAqL1xuICByb3dFeHBhbmQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYVRhYmxlVmVnYVRhYmxlUm93RXhwYW5kRXZlbnREZXRhaWw+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHdoZW4gdGhlIHJvdyBzZWxlY3Rpb24gY2hhbmdlcy4gQHZlZ2FWZXJzaW9uIDEuMTguMFxuICAgKi9cbiAgdmVnYVNlbGVjdENoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhVGFibGVWZWdhVGFibGVSb3dTZWxlY3RQcm9wPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB3aGVuIHRoZSBzZWxlY3Rpb24gc3RhdGUgb2YgYWxsIHJvd3MgY2hhbmdlcy4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBzZWxlY3RDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYVRhYmxlVmVnYVRhYmxlUm93U2VsZWN0UHJvcD4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgY2hhbmdlcyBpbiB0aGUgc2VsZWN0aW9uIG9mIGNoZWNrYm94ZXMsXG4gICBwYXJ0aWN1bGFybHkgdGhlIFwiU2VsZWN0IEFsbFwiIGNoZWNrYm94IGluIHRoZSB0YWJsZSBoZWFkZXIuIEB2ZWdhVmVyc2lvbiAxLjE4LjBcbiAgICovXG4gIHZlZ2FTZWxlY3RBbGxDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYVRhYmxlVmVnYVRhYmxlU2VsZWN0QWxsUHJvcD4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgY2hhbmdlcyBpbiB0aGUgc2VsZWN0aW9uIG9mIGNoZWNrYm94ZXMsXG4gICBwYXJ0aWN1bGFybHkgdGhlIFwiU2VsZWN0IEFsbFwiIGNoZWNrYm94IGluIHRoZSB0YWJsZSBoZWFkZXIuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgc2VsZWN0QWxsQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FUYWJsZVZlZ2FUYWJsZVNlbGVjdEFsbFByb3A+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGJlZm9yZSB0aGUgc2VsZWN0ZWQgY2hhbmdlIHdoZW4gc2VsZWN0L2Rlc2VsZWN0IG9uZSByb3cgQHZlZ2FWZXJzaW9uIDIuMjMuMFxuICAgKi9cbiAgdmVnYVJvd1NlbGVjdDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhVGFibGVWZWdhVGFibGVSb3dTZWxlY3RFdmVudERldGFpbD4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgYmVmb3JlIHRoZSBzZWxlY3RlZCBjaGFuZ2Ugd2hlbiBzZWxlY3QvZGVzZWxlY3Qgb25lIHJvdyBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4yMy4wXG4gICAqL1xuICByb3dTZWxlY3Q6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYVRhYmxlVmVnYVRhYmxlUm93U2VsZWN0RXZlbnREZXRhaWw+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGJlZm9yZSB0aGUgc2VsZWN0ZWQgY2hhbmdlIHdoZW4gc2VsZWN0L2Rlc2VsZWN0IGFsbCByb3dzIEB2ZWdhVmVyc2lvbiAyLjIzLjBcbiAgICovXG4gIHZlZ2FSb3dTZWxlY3RBbGw6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYVRhYmxlVmVnYVRhYmxlUm93U2VsZWN0QWxsRXZlbnREZXRhaWw+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGJlZm9yZSB0aGUgc2VsZWN0ZWQgY2hhbmdlIHdoZW4gc2VsZWN0L2Rlc2VsZWN0IGFsbCByb3dzIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjIzLjBcbiAgICovXG4gIHJvd1NlbGVjdEFsbDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhVGFibGVWZWdhVGFibGVSb3dTZWxlY3RBbGxFdmVudERldGFpbD4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgd2hlbiBhIHJvdyBpcyBkcmFnIGFuZCBkcm9wLFxuICAgaXQgaW5jbHVkZSBmdWxsIGxpZmVjeWNsZSwgbGlrZSBkcmFnIHN0YXJ0LCBkcmFnLCBkcmFnIGVudGVyLCBkcmFnIGxlYXZlLCBkcmFnIG92ZXIsIGRyb3AgYW5kIGRyYWcgZW5kLiBAdmVnYVZlcnNpb24gMi44NS4wXG4gICAqL1xuICB2ZWdhUm93RHJhZ0Ryb3A6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYVRhYmxlRHJhZ0Ryb3BFdmVudFBheWxvYWQ+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHdoZW4gYSByb3cgaXMgZHJhZyBhbmQgZHJvcCxcbiAgICBpdCBpbmNsdWRlIGZ1bGwgbGlmZWN5Y2xlLCBsaWtlIGRyYWcgc3RhcnQsIGRyYWcsIGRyYWcgZW50ZXIsIGRyYWcgbGVhdmUsIGRyYWcgb3ZlciwgZHJvcCBhbmQgZHJhZyBlbmQuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjg1LjBcbiAgICovXG4gIHJvd0RyYWdEcm9wOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FUYWJsZURyYWdEcm9wRXZlbnRQYXlsb2FkPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydjb2x1bW5EaXZpZGVyJywgJ2NvbHVtbnMnLCAnZGF0YVNvdXJjZScsICdkZW5zaXR5JywgJ2VtcHR5RGVzY3JpcHRpb24nLCAnZ3JvdXBDb2x1bW5zJywgJ3BhZGRpbmdYJywgJ3BhZ2luYXRpb24nLCAncm93Q2xpY2thYmxlJywgJ3Jvd0RpdmlkZXInLCAncm93RHJhZ2dhYmxlJywgJ3Jvd0V4cGFuZGFibGUnLCAncm93S2V5JywgJ3Jvd1NlbGVjdGlvbicsICdzY3JvbGxDb25maWcnLCAnc2hvd0VkaXRFcnJvcicsICdzaG93SGVhZGVyJywgJ3NvcnRDb25maWcnLCAnc3RyaXBlZCddLFxuICBtZXRob2RzOiBbJ29wZW5FeHBhbmRSb3cnLCAnY2xvc2VFeHBhbmRSb3cnLCAnY2xvc2VBbGxFeHBhbmRSb3cnLCAndG9nZ2xlRXhwYW5kUm93JywgJ2NsZWFyU2VsZWN0aW9uJywgJ2dldFNlbGVjdGlvbicsICdzZXRTZWxlY3Rpb24nLCAnc3RhcnRSb3dFZGl0TW9kZScsICdzdG9wUm93RWRpdE1vZGUnLCAnc3RvcEFsbFJvd0VkaXRNb2RlJywgJ2dldFJvd0RhdGEnLCAnZ2V0Um93c0RhdGEnLCAnZ2V0Rm9ybVJlZicsICdhZGROZXdSb3cnLCAnc2F2ZUVkaXRSb3cnLCAnc2F2ZUFsbEVkaXRSb3dzJywgJ2dldEVkaXRpbmdSb3dzS2V5JywgJ3JlbW92ZVJvdyddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS10YWJsZScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnY29sdW1uRGl2aWRlcicsICdjb2x1bW5zJywgJ2RhdGFTb3VyY2UnLCAnZGVuc2l0eScsICdlbXB0eURlc2NyaXB0aW9uJywgJ2dyb3VwQ29sdW1ucycsICdwYWRkaW5nWCcsICdwYWdpbmF0aW9uJywgJ3Jvd0NsaWNrYWJsZScsICdyb3dEaXZpZGVyJywgJ3Jvd0RyYWdnYWJsZScsICdyb3dFeHBhbmRhYmxlJywgJ3Jvd0tleScsICdyb3dTZWxlY3Rpb24nLCAnc2Nyb2xsQ29uZmlnJywgJ3Nob3dFZGl0RXJyb3InLCAnc2hvd0hlYWRlcicsICdzb3J0Q29uZmlnJywgJ3N0cmlwZWQnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhVGFibGUge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2hhbmdlJywgJ2NoYW5nZScsICd2ZWdhUm93Q2xpY2snLCAncm93Q2xpY2snLCAndmVnYVJvd0V4cGFuZCcsICdyb3dFeHBhbmQnLCAndmVnYVNlbGVjdENoYW5nZScsICdzZWxlY3RDaGFuZ2UnLCAndmVnYVNlbGVjdEFsbENoYW5nZScsICdzZWxlY3RBbGxDaGFuZ2UnLCAndmVnYVJvd1NlbGVjdCcsICdyb3dTZWxlY3QnLCAndmVnYVJvd1NlbGVjdEFsbCcsICdyb3dTZWxlY3RBbGwnLCAndmVnYVJvd0RyYWdEcm9wJywgJ3Jvd0RyYWdEcm9wJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FUYWJsZUJvZHkgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FUYWJsZUJvZHkge31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWRcbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXRhYmxlLWJvZHknLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+J1xufSlcbmV4cG9ydCBjbGFzcyBWZWdhVGFibGVCb2R5IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVRhYmxlQ2VsbCBleHRlbmRzIENvbXBvbmVudHMuVmVnYVRhYmxlQ2VsbCB7fVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2JyZWFrcG9pbnQnLCAnY29sU3BhbicsICdlbGxpcHNpc1Nob3dUb29sdGlwJywgJ292ZXJmbG93JywgJ3RleHRBbGlnbicsICd3aWR0aCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS10YWJsZS1jZWxsJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydicmVha3BvaW50JywgJ2NvbFNwYW4nLCAnZWxsaXBzaXNTaG93VG9vbHRpcCcsICdvdmVyZmxvdycsICd0ZXh0QWxpZ24nLCAnd2lkdGgnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhVGFibGVDZWxsIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVRhYmxlRXhwYW5kUm93IGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhVGFibGVFeHBhbmRSb3cge31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydyb3dLZXknLCAnc3RyaXBlZCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS10YWJsZS1leHBhbmQtcm93JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydyb3dLZXknLCAnc3RyaXBlZCddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FUYWJsZUV4cGFuZFJvdyB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FUYWJsZUZvb3QgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FUYWJsZUZvb3Qge31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWRcbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXRhYmxlLWZvb3QnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+J1xufSlcbmV4cG9ydCBjbGFzcyBWZWdhVGFibGVGb290IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVRhYmxlRm9vdENlbGwgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FUYWJsZUZvb3RDZWxsIHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnYnJlYWtwb2ludCcsICdjb2xTcGFuJywgJ3RleHRBbGlnbicsICd3aWR0aCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS10YWJsZS1mb290LWNlbGwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2JyZWFrcG9pbnQnLCAnY29sU3BhbicsICd0ZXh0QWxpZ24nLCAnd2lkdGgnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhVGFibGVGb290Q2VsbCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FUYWJsZUZvb3RSb3cgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FUYWJsZUZvb3RSb3cge31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWRcbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXRhYmxlLWZvb3Qtcm93JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50Pidcbn0pXG5leHBvcnQgY2xhc3MgVmVnYVRhYmxlRm9vdFJvdyB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FUYWJsZUhlYWQgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FUYWJsZUhlYWQge31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWRcbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXRhYmxlLWhlYWQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+J1xufSlcbmV4cG9ydCBjbGFzcyBWZWdhVGFibGVIZWFkIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuaW1wb3J0IHR5cGUgeyBWZWdhVGFibGVIZWFkQ2VsbENsaWNrRXZlbnQgYXMgSVZlZ2FUYWJsZUhlYWRDZWxsVmVnYVRhYmxlSGVhZENlbGxDbGlja0V2ZW50IH0gZnJvbSAnQGdsb2JhbHBheW1lbnRzL3ZlZ2EvZGlzdC90eXBlcy9jb21wb25lbnRzL3ZlZ2EtdGFibGUvaW50ZXJmYWNlJztcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhVGFibGVIZWFkQ2VsbCBleHRlbmRzIENvbXBvbmVudHMuVmVnYVRhYmxlSGVhZENlbGwge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhhdCB0aGUgaGVhZCBjZWxsIGhhcyBiZWVuIGNsaWNrZWQuIEB2ZWdhVmVyc2lvbiAxLjQ0LjBcbiAgICovXG4gIHZlZ2FDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhVGFibGVIZWFkQ2VsbFZlZ2FUYWJsZUhlYWRDZWxsQ2xpY2tFdmVudD4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhhdCB0aGUgaGVhZCBjZWxsIGhhcyBiZWVuIGNsaWNrZWQuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgY2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYVRhYmxlSGVhZENlbGxWZWdhVGFibGVIZWFkQ2VsbENsaWNrRXZlbnQ+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2JyZWFrcG9pbnQnLCAnZ3JvdXBLZXknLCAncGFyZW50R3JvdXBLZXknLCAncGlubmVkJywgJ3NvcnRDb25maWcnLCAnc29ydE9yZGVyJywgJ3NvcnRlcicsICd0ZXh0QWxpZ24nLCAnd2lkdGgnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtdGFibGUtaGVhZC1jZWxsJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydicmVha3BvaW50JywgJ2dyb3VwS2V5JywgJ3BhcmVudEdyb3VwS2V5JywgJ3Bpbm5lZCcsICdzb3J0Q29uZmlnJywgJ3NvcnRPcmRlcicsICdzb3J0ZXInLCAndGV4dEFsaWduJywgJ3dpZHRoJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYVRhYmxlSGVhZENlbGwge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2xpY2snLCAnY2xpY2snXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVRhYmxlSGVhZFJvdyBleHRlbmRzIENvbXBvbmVudHMuVmVnYVRhYmxlSGVhZFJvdyB7fVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2hpZGVTZWxlY3RBbGwnLCAnc2VsZWN0QWxsRGlzYWJsZWQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtdGFibGUtaGVhZC1yb3cnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2hpZGVTZWxlY3RBbGwnLCAnc2VsZWN0QWxsRGlzYWJsZWQnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhVGFibGVIZWFkUm93IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuaW1wb3J0IHR5cGUgeyBWZWdhVGFibGVSb3dDbGlja0V2ZW50IGFzIElWZWdhVGFibGVSb3dWZWdhVGFibGVSb3dDbGlja0V2ZW50IH0gZnJvbSAnQGdsb2JhbHBheW1lbnRzL3ZlZ2EvZGlzdC90eXBlcy9jb21wb25lbnRzL3ZlZ2EtdGFibGUvaW50ZXJmYWNlJztcbmltcG9ydCB0eXBlIHsgVmVnYVRhYmxlUm93RXhwYW5kRXZlbnQgYXMgSVZlZ2FUYWJsZVJvd1ZlZ2FUYWJsZVJvd0V4cGFuZEV2ZW50IH0gZnJvbSAnQGdsb2JhbHBheW1lbnRzL3ZlZ2EvZGlzdC90eXBlcy9jb21wb25lbnRzL3ZlZ2EtdGFibGUvaW50ZXJmYWNlJztcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhVGFibGVSb3cgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FUYWJsZVJvdyB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGF0IHRoZSByb3cgaGFzIGJlZW4gY2xpY2tlZC4gQHZlZ2FWZXJzaW9uIDEuNDQuMFxuICAgKi9cbiAgdmVnYUNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FUYWJsZVJvd1ZlZ2FUYWJsZVJvd0NsaWNrRXZlbnQ+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoYXQgdGhlIHJvdyBoYXMgYmVlbiBjbGlja2VkLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FUYWJsZVJvd1ZlZ2FUYWJsZVJvd0NsaWNrRXZlbnQ+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoYXQgdGhlIGV4cGFuZCBpY29uIGhhcyBiZWVuIGNsaWNrZWQuIEB2ZWdhVmVyc2lvbiAyLjIwLjBcbiAgICovXG4gIHZlZ2FFeHBhbmQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYVRhYmxlUm93VmVnYVRhYmxlUm93RXhwYW5kRXZlbnQ+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoYXQgdGhlIGV4cGFuZCBpY29uIGhhcyBiZWVuIGNsaWNrZWQuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjIwLjBcbiAgICovXG4gIGV4cGFuZDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhVGFibGVSb3dWZWdhVGFibGVSb3dFeHBhbmRFdmVudD4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsncm93RGl2aWRlcicsICdyb3dLZXknLCAnc3RyaXBlZCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS10YWJsZS1yb3cnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ3Jvd0RpdmlkZXInLCAncm93S2V5JywgJ3N0cmlwZWQnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhVGFibGVSb3cge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2xpY2snLCAnY2xpY2snLCAndmVnYUV4cGFuZCcsICdleHBhbmQnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVRleHQgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FUZXh0IHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnb3ZlcmZsb3cnLCAndGV4dCcsICd0b29sdGlwJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXRleHQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ292ZXJmbG93JywgJ3RleHQnLCAndG9vbHRpcCddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FUZXh0IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVRleHRhcmVhIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhVGV4dGFyZWEge1xuICAvKipcbiAgICogRmlyZWQgd2hlbmV2ZXIgdGhlIHRleHQgYXJlYSB2YWx1ZSBjaGFuZ2VzLCB3aGV0aGVyIGJ5IHVzZXIgaW5wdXQgb3JcbnByb2dyYW1tYXRpYyB1cGRhdGUgb2YgdGhlIGB2YWx1ZWAgcHJvcGVydHkuIFRoaXMgaXMgdGhlIHByaW1hcnkgZXZlbnRcbmZvciByZWFjdGluZyB0byBjb250ZW50IGNoYW5nZXMgYW5kIGltcGxlbWVudGluZyB0d28td2F5IGJpbmRpbmcuIEBldmVudERldGFpbCBzdHJpbmcg4oCUIFRoZSB1cGRhdGVkIHRleHQgYXJlYSB2YWx1ZS4sQHZlZ2FWZXJzaW9uIDEuMTEuMFxuICAgKi9cbiAgdmVnYUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogTmF0aXZlLW5hbWVzcGFjZSBtaXJyb3Igb2YgYHZlZ2FDaGFuZ2VgLiBGaXJlZCB3aGVuZXZlciB0aGUgdGV4dCBhcmVhXG52YWx1ZSBjaGFuZ2VzLiBQcm92aWRlZCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIHN0YW5kYXJkIERPTSBldmVudFxubGlzdGVuZXJzLiBAZXZlbnREZXRhaWwgc3RyaW5nIOKAlCBUaGUgdXBkYXRlZCB0ZXh0IGFyZWEgdmFsdWUuLEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgY2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBGaXJlZCB3aGVuIHRoZSBpbm5lciBgPHRleHRhcmVhPmAgZWxlbWVudCBsb3NlcyBmb2N1cyAoYmx1cikuIFVzZSB0aGlzXG5ldmVudCB0byB0cmlnZ2VyIHZhbGlkYXRpb24gb3Igc2F2ZSBhY3Rpb25zIHdoZW4gdGhlIHVzZXIgbGVhdmVzIHRoZVxudGV4dCBhcmVhLiBAZXZlbnREZXRhaWwgdW5kZWZpbmVkIOKAlCBObyBwYXlsb2FkOyBzaWduYWxzIHRoZSBibHVyIG9jY3VycmVuY2Ugb25seS4sQHZlZ2FWZXJzaW9uIDEuMTEuMFxuICAgKi9cbiAgdmVnYUJsdXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx1bmRlZmluZWQ+PjtcbiAgLyoqXG4gICAqIE5hdGl2ZS1uYW1lc3BhY2UgbWlycm9yIG9mIGB2ZWdhQmx1cmAuIEZpcmVkIHdoZW4gdGhlIGlubmVyIGA8dGV4dGFyZWE+YFxuZWxlbWVudCBsb3NlcyBmb2N1cy4gUHJvdmlkZWQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBzdGFuZGFyZCBET00gZXZlbnRcbmxpc3RlbmVycy4gQGV2ZW50RGV0YWlsIHVuZGVmaW5lZCDigJQgTm8gcGF5bG9hZDsgc2lnbmFscyB0aGUgYmx1ciBvY2N1cnJlbmNlIG9ubHkuLEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgYmx1cjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHVuZGVmaW5lZD4+O1xuICAvKipcbiAgICogRmlyZWQgd2hlbiB0aGUgc3VmZml4IGJ1dHRvbiBjb25maWd1cmVkIHZpYSBgbGFiZWxTdWZmaXhCdXR0b25Db25maWdgIGlzXG5jbGlja2VkLiBMaXN0ZW4gZm9yIHRoaXMgZXZlbnQgdG8gaGFuZGxlIGlubGluZSBsYWJlbCBhY3Rpb25zIHN1Y2ggYXNcbm9wZW5pbmcgYSBoZWxwIGRpYWxvZyBvciB0b2dnbGluZyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLiBAZXZlbnREZXRhaWwgdm9pZCxAdmVnYVZlcnNpb24gMi42OC4wXG4gICAqL1xuICB2ZWdhTGFiZWxCdXR0b25DbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuICAvKipcbiAgICogTmF0aXZlLW5hbWVzcGFjZSBtaXJyb3Igb2YgYHZlZ2FMYWJlbEJ1dHRvbkNsaWNrYC4gRmlyZWQgd2hlbiB0aGUgbGFiZWxcbnN1ZmZpeCBidXR0b24gaXMgY2xpY2tlZC4gUHJvdmlkZWQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBzdGFuZGFyZCBET01cbmV2ZW50IGxpc3RlbmVycy4gQGV2ZW50RGV0YWlsIHZvaWQsQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuNjguMFxuICAgKi9cbiAgbGFiZWxCdXR0b25DbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnYXV0b1ZhbGlkYXRpb24nLCAnZGlzYWJsZWQnLCAnaGludCcsICdpc1ZhbGlkJywgJ2xhYmVsJywgJ2xhYmVsU3VmZml4QnV0dG9uQ29uZmlnJywgJ21heExlbmd0aCcsICdtaW5MZW5ndGgnLCAnbmFtZScsICdvcHRpb25hbCcsICdwbGFjZWhvbGRlcicsICdyZXF1aXJlZCcsICdyZXNpemFibGUnLCAncm93cycsICdzaG93Q291bnRlcicsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtdGV4dGFyZWEnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2F1dG9WYWxpZGF0aW9uJywgJ2Rpc2FibGVkJywgJ2hpbnQnLCAnaXNWYWxpZCcsICdsYWJlbCcsICdsYWJlbFN1ZmZpeEJ1dHRvbkNvbmZpZycsICdtYXhMZW5ndGgnLCAnbWluTGVuZ3RoJywgJ25hbWUnLCAnb3B0aW9uYWwnLCAncGxhY2Vob2xkZXInLCAncmVxdWlyZWQnLCAncmVzaXphYmxlJywgJ3Jvd3MnLCAnc2hvd0NvdW50ZXInLCAndmFsaWRhdGlvblJ1bGVzJywgJ3ZhbHVlJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYVRleHRhcmVhIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUNoYW5nZScsICdjaGFuZ2UnLCAndmVnYUJsdXInLCAnYmx1cicsICd2ZWdhTGFiZWxCdXR0b25DbGljaycsICdsYWJlbEJ1dHRvbkNsaWNrJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FUaW1lUGlja2VyIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhVGltZVBpY2tlciB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBjaGFuZ2VzIGluIHRoZSB2YWx1ZSBvZiB0aGUgdGltZSBwaWNrZXIuIEB2ZWdhVmVyc2lvbiAxLjEyLjBcbiAgICovXG4gIHZlZ2FDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmcgfCBzdHJpbmdbXT4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgY2hhbmdlcyBpbiB0aGUgdmFsdWUgb2YgdGhlIHRpbWUgcGlja2VyLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZyB8IHN0cmluZ1tdPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydhdXRvVmFsaWRhdGlvbicsICdkaXNhYmxlZCcsICdpbmNyZW1lbnRzJywgJ2lzVmFsaWQnLCAnbGFiZWwnLCAnbW9kZScsICduYW1lJywgJ29wdGlvbmFsJywgJ3BsYWNlaG9sZGVyJywgJ3Bvc2l0aW9uUmVsYXRpdmVUbycsICdyZWFkT25seScsICdyZXF1aXJlZCcsICdzaG93Q2xlYXJJY29uJywgJ3NpemUnLCAndGltZUZvcm1hdCcsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWUnLCAndmVnYURyb3Bkb3duUHJvcHMnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtdGltZS1waWNrZXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2F1dG9WYWxpZGF0aW9uJywgJ2Rpc2FibGVkJywgJ2luY3JlbWVudHMnLCAnaXNWYWxpZCcsICdsYWJlbCcsICdtb2RlJywgJ25hbWUnLCAnb3B0aW9uYWwnLCAncGxhY2Vob2xkZXInLCAncG9zaXRpb25SZWxhdGl2ZVRvJywgJ3JlYWRPbmx5JywgJ3JlcXVpcmVkJywgJ3Nob3dDbGVhckljb24nLCAnc2l6ZScsICd0aW1lRm9ybWF0JywgJ3ZhbGlkYXRpb25SdWxlcycsICd2YWx1ZScsICd2ZWdhRHJvcGRvd25Qcm9wcyddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FUaW1lUGlja2VyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUNoYW5nZScsICdjaGFuZ2UnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVRpbWVQaWNrZXJEcm9wZG93biBleHRlbmRzIENvbXBvbmVudHMuVmVnYVRpbWVQaWNrZXJEcm9wZG93biB7fVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZFxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtdGltZS1waWNrZXItZHJvcGRvd24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+J1xufSlcbmV4cG9ydCBjbGFzcyBWZWdhVGltZVBpY2tlckRyb3Bkb3duIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVRvZ2dsZVN3aXRjaCBleHRlbmRzIENvbXBvbmVudHMuVmVnYVRvZ2dsZVN3aXRjaCB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBjaGFuZ2VzIGluIHRoZSB0b2dnbGUgc3dpdGNoLiBAdmVnYVZlcnNpb24gMS4zLjBcbiAgICovXG4gIHZlZ2FDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxib29sZWFuPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBjaGFuZ2VzIGluIHRoZSB0b2dnbGUgc3dpdGNoLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGJvb2xlYW4+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2F1dG9WYWxpZGF0aW9uJywgJ2NoZWNrZWQnLCAnZGlzYWJsZWQnLCAnaXNWYWxpZCcsICdsYWJlbCcsICduYW1lJywgJ29wdGlvbmFsJywgJ3JlcXVpcmVkJywgJ3NpemUnLCAndmFsaWRhdGlvblJ1bGVzJywgJ3ZhbHVlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXRvZ2dsZS1zd2l0Y2gnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2F1dG9WYWxpZGF0aW9uJywgJ2NoZWNrZWQnLCAnZGlzYWJsZWQnLCAnaXNWYWxpZCcsICdsYWJlbCcsICduYW1lJywgJ29wdGlvbmFsJywgJ3JlcXVpcmVkJywgJ3NpemUnLCAndmFsaWRhdGlvblJ1bGVzJywgJ3ZhbHVlJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYVRvZ2dsZVN3aXRjaCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDaGFuZ2UnLCAnY2hhbmdlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FUb29sdGlwIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhVG9vbHRpcCB7fVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2FsaWdubWVudCcsICdjb250ZW50JywgJ2Rpc2FibGVJbnRlcmFjdGl2ZScsICdtYXhXaWR0aCcsICdtaW5XaWR0aCcsICdwbGFjZW1lbnQnLCAncG9zaXRpb25SZWxhdGl2ZVRvJywgJ3NpemUnLCAndGV4dCcsICd0cmlnZ2VyJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXRvb2x0aXAnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2FsaWdubWVudCcsICdjb250ZW50JywgJ2Rpc2FibGVJbnRlcmFjdGl2ZScsICdtYXhXaWR0aCcsICdtaW5XaWR0aCcsICdwbGFjZW1lbnQnLCAncG9zaXRpb25SZWxhdGl2ZVRvJywgJ3NpemUnLCAndGV4dCcsICd0cmlnZ2VyJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYVRvb2x0aXAge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhVG9vbHRpcENvbnRlbnRCb3ggZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FUb29sdGlwQ29udGVudEJveCB7fVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ3RleHQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtdG9vbHRpcC1jb250ZW50LWJveCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsndGV4dCddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FUb29sdGlwQ29udGVudEJveCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FWaXJ0dWFsU2Nyb2xsIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhVmlydHVhbFNjcm9sbCB7fVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2FwcHJveEl0ZW1IZWlnaHQnLCAnaXNMb2FkaW5nJywgJ3JlbmRlckl0ZW0nLCAnc291cmNlJywgJ3NvdXJjZUl0ZW1JZGVudGlmaWVyJywgJ3ZpZXdwb3J0TWF4SGVpZ2h0JywgJ3ZpcnR1YWxpemF0aW9uVGhyZXNob2xkJ10sXG4gIG1ldGhvZHM6IFsnc2Nyb2xsVG9JbmRleCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS12aXJ0dWFsLXNjcm9sbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnYXBwcm94SXRlbUhlaWdodCcsICdpc0xvYWRpbmcnLCAncmVuZGVySXRlbScsICdzb3VyY2UnLCAnc291cmNlSXRlbUlkZW50aWZpZXInLCAndmlld3BvcnRNYXhIZWlnaHQnLCAndmlydHVhbGl6YXRpb25UaHJlc2hvbGQnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhVmlydHVhbFNjcm9sbCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFtcbiAgVmVnYUFjY29yZGlvbixcbiAgVmVnYUFwcEZvb3RlcixcbiAgVmVnYUFwcEhlYWRlckJ1dHRvbixcbiAgVmVnYUJhY2tkcm9wLFxuICBWZWdhQmFubmVyLFxuICBWZWdhQmFyQ2hhcnQsXG4gIFZlZ2FCb3gsXG4gIFZlZ2FCcmFuZExvZ28sXG4gIFZlZ2FCcmVhZGNydW1iLFxuICBWZWdhQnV0dG9uLFxuICBWZWdhQnV0dG9uQ2lyY2xlLFxuICBWZWdhQnV0dG9uR3JvdXAsXG4gIFZlZ2FCdXR0b25Hcm91cEl0ZW0sXG4gIFZlZ2FCdXR0b25MaW5rLFxuICBWZWdhQ2FsZW5kYXIsXG4gIFZlZ2FDYWxlbmRhckV2ZW50LFxuICBWZWdhQ2FsZW5kYXJFdmVudFByZXZpZXcsXG4gIFZlZ2FDYWxlbmRhckV2ZW50U2xvdCxcbiAgVmVnYUNhbGVuZGFyUGVyaW9kU3dpdGNoZXIsXG4gIFZlZ2FDYXJkLFxuICBWZWdhQ2Fyb3VzZWwsXG4gIFZlZ2FDaGVja2JveCxcbiAgVmVnYUNoZWNrYm94R3JvdXAsXG4gIFZlZ2FDaGlwLFxuICBWZWdhQ29kZUJsb2NrLFxuICBWZWdhQ29sb3JQaWNrZXIsXG4gIFZlZ2FDb2xvclN3YXRjaCxcbiAgVmVnYUNvbG9yU3dhdGNoUGlja2VyLFxuICBWZWdhQ29tYm9Cb3gsXG4gIFZlZ2FDb3VudGVyQmFkZ2UsXG4gIFZlZ2FEYXRlUGlja2VyLFxuICBWZWdhRGF0ZVBpY2tlckNhbGVuZGFyLFxuICBWZWdhRGlhbG9nLFxuICBWZWdhRGl2aWRlcixcbiAgVmVnYURyb3Bkb3duLFxuICBWZWdhRHJvcGRvd25Db250ZW50Qm94LFxuICBWZWdhRHJvcGRvd25Hcm91cCxcbiAgVmVnYURyb3Bkb3duSXRlbSxcbiAgVmVnYUZpZWxkRXJyb3IsXG4gIFZlZ2FGaWVsZExhYmVsLFxuICBWZWdhRmlsZVVwbG9hZGVyLFxuICBWZWdhRmxhZ0ljb24sXG4gIFZlZ2FGbGV4LFxuICBWZWdhRm9udCxcbiAgVmVnYUZvcm0sXG4gIFZlZ2FHcmlkLFxuICBWZWdhSGludCxcbiAgVmVnYUljb24sXG4gIFZlZ2FJbWFnZVVwbG9hZGVyLFxuICBWZWdhSW5wdXQsXG4gIFZlZ2FJbnB1dENyZWRpdENhcmQsXG4gIFZlZ2FJbnB1dE51bWVyaWMsXG4gIFZlZ2FJbnB1dFBhc3Njb2RlLFxuICBWZWdhSW5wdXRQaG9uZU51bWJlcixcbiAgVmVnYUlucHV0UmFuZ2UsXG4gIFZlZ2FJbnB1dFNlbGVjdCxcbiAgVmVnYUl0ZW1Ub2dnbGUsXG4gIFZlZ2FMZWZ0TmF2LFxuICBWZWdhTGVmdE5hdkdyb3VwLFxuICBWZWdhTGVmdE5hdkxpbmssXG4gIFZlZ2FMZWZ0TmF2U2VjdGlvbixcbiAgVmVnYUxpbmVDaGFydCxcbiAgVmVnYUxvYWRlcldyYXBwZXIsXG4gIFZlZ2FMb2FkaW5nSW5kaWNhdG9yLFxuICBWZWdhTW9kYWwsXG4gIFZlZ2FOYXZDYXJkLFxuICBWZWdhUGFnZU5vdGlmaWNhdGlvbixcbiAgVmVnYVBhZ2VOb3RpZmljYXRpb25MaXN0LFxuICBWZWdhUGFnaW5hdGlvbixcbiAgVmVnYVBhZ2luYXRpb25QYWdlU2VsZWN0b3JNb2JpbGUsXG4gIFZlZ2FQYWdpbmF0aW9uUGFnZVNpemVTZWxlY3Rvck1vYmlsZSxcbiAgVmVnYVBpZUNoYXJ0LFxuICBWZWdhUG9wb3ZlcixcbiAgVmVnYVBvcG92ZXJDb250ZW50Qm94LFxuICBWZWdhUHJvZ3Jlc3NUcmFja2VyLFxuICBWZWdhUHJvZ3Jlc3NUcmFja2VyU3RlcCxcbiAgVmVnYVJhZGlvLFxuICBWZWdhUmFkaW9Hcm91cCxcbiAgVmVnYVJpY2hUZXh0Q29udGVudCxcbiAgVmVnYVJpY2hUZXh0RWRpdG9yLFxuICBWZWdhUmljaFRleHRFZGl0b3JUb29sYmFyQnV0dG9uLFxuICBWZWdhUmljaFRleHRGaW5kUmVwbGFjZVBhbmVsLFxuICBWZWdhUmljaFRleHRJbWFnZUVkaXRvcixcbiAgVmVnYVJpY2hUZXh0TGlua0VkaXRvcixcbiAgVmVnYVJpY2hUZXh0U3BlY2lhbENoYXJhY3RlcnNQYW5lbCxcbiAgVmVnYVJpY2hUZXh0VGFibGVQcm9wZXJ0aWVzLFxuICBWZWdhUmljaFRleHRUYWJsZVNlbGVjdGlvbldpZGdldCxcbiAgVmVnYVJpY2hUZXh0VGFibGVTZXR0aW5nLFxuICBWZWdhU2VjdGlvblRpdGxlLFxuICBWZWdhU2VnbWVudENvbnRyb2wsXG4gIFZlZ2FTZWxlY3Rpb25DaGlwLFxuICBWZWdhU2VsZWN0aW9uQ2hpcEdyb3VwLFxuICBWZWdhU2VsZWN0aW9uVGlsZSxcbiAgVmVnYVNlbGVjdGlvblRpbGVHcm91cCxcbiAgVmVnYVNpZGVuYXYsXG4gIFZlZ2FTaWRlbmF2R3JvdXAsXG4gIFZlZ2FTaWRlbmF2TGluayxcbiAgVmVnYVNpZ25hdHVyZUNhcHR1cmUsXG4gIFZlZ2FTa2VsZXRvbixcbiAgVmVnYVNsb3RDb250YWluZXIsXG4gIFZlZ2FTdGVwcGVyLFxuICBWZWdhVGFiR3JvdXAsXG4gIFZlZ2FUYWJHcm91cFBhbmVsLFxuICBWZWdhVGFibGUsXG4gIFZlZ2FUYWJsZUJvZHksXG4gIFZlZ2FUYWJsZUNlbGwsXG4gIFZlZ2FUYWJsZUV4cGFuZFJvdyxcbiAgVmVnYVRhYmxlRm9vdCxcbiAgVmVnYVRhYmxlRm9vdENlbGwsXG4gIFZlZ2FUYWJsZUZvb3RSb3csXG4gIFZlZ2FUYWJsZUhlYWQsXG4gIFZlZ2FUYWJsZUhlYWRDZWxsLFxuICBWZWdhVGFibGVIZWFkUm93LFxuICBWZWdhVGFibGVSb3csXG4gIFZlZ2FUZXh0LFxuICBWZWdhVGV4dGFyZWEsXG4gIFZlZ2FUaW1lUGlja2VyLFxuICBWZWdhVGltZVBpY2tlckRyb3Bkb3duLFxuICBWZWdhVG9nZ2xlU3dpdGNoLFxuICBWZWdhVG9vbHRpcCxcbiAgVmVnYVRvb2x0aXBDb250ZW50Qm94LFxuICBWZWdhVmlydHVhbFNjcm9sbCxcbl07Il19