@smartbit4all/ng-client 4.1.39 → 4.2.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.
Files changed (116) hide show
  1. package/esm2022/lib/smart-client/smart-component-api-client.mjs +1 -1
  2. package/esm2022/lib/smart-client/smart.component.mjs +1 -1
  3. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionBoolOperator.mjs +1 -1
  4. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionBuilderField.mjs +1 -1
  5. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionBuilderGroup.mjs +1 -1
  6. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionBuilderModel.mjs +1 -1
  7. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionData.mjs +1 -1
  8. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionDataType.mjs +1 -1
  9. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionField.mjs +1 -1
  10. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionFieldList.mjs +1 -1
  11. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionFieldWidgetType.mjs +1 -1
  12. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionList.mjs +1 -1
  13. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionOperandData.mjs +1 -1
  14. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionOperation.mjs +1 -1
  15. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionOrderBy.mjs +1 -1
  16. package/esm2022/lib/smart-filter-editor/api/api/filter.service.mjs +1 -1
  17. package/esm2022/lib/smart-filter-editor/api/configuration.mjs +1 -1
  18. package/esm2022/lib/smart-filter-editor/api/encoder.mjs +1 -1
  19. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBoolOperator.mjs +1 -1
  20. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBuilderApiConfig.mjs +1 -1
  21. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBuilderField.mjs +1 -1
  22. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBuilderGroup.mjs +1 -1
  23. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBuilderModel.mjs +1 -1
  24. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBuilderUiModel.mjs +1 -1
  25. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionData.mjs +1 -1
  26. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionDataType.mjs +1 -1
  27. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionField.mjs +1 -1
  28. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionFieldEditor.mjs +1 -1
  29. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionFieldList.mjs +1 -1
  30. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionFieldWidgetType.mjs +1 -1
  31. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionList.mjs +1 -1
  32. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionOperandData.mjs +1 -1
  33. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionOperation.mjs +1 -1
  34. package/esm2022/lib/smart-filter-editor/api/model/smartFilterType.mjs +1 -1
  35. package/esm2022/lib/smart-filter-editor/api/param.mjs +1 -1
  36. package/esm2022/lib/smart-filter-editor/api/variables.mjs +1 -1
  37. package/esm2022/lib/smart-filter-editor/smart-filter-editor-content/smart-filter-editor-content.component.mjs +3 -3
  38. package/esm2022/lib/smart-form/api/api/api.mjs +1 -1
  39. package/esm2022/lib/smart-form/api/api/default.service.mjs +1 -1
  40. package/esm2022/lib/smart-form/api/api.module.mjs +1 -1
  41. package/esm2022/lib/smart-form/api/configuration.mjs +1 -1
  42. package/esm2022/lib/smart-form/api/encoder.mjs +1 -1
  43. package/esm2022/lib/smart-form/api/index.mjs +1 -1
  44. package/esm2022/lib/smart-form/api/model/models.mjs +1 -1
  45. package/esm2022/lib/smart-form/api/model/propertyMapping.mjs +1 -1
  46. package/esm2022/lib/smart-form/api/model/selectionDefinition.mjs +1 -1
  47. package/esm2022/lib/smart-form/api/model/smartFormInputMode.mjs +1 -1
  48. package/esm2022/lib/smart-form/api/model/smartFormWidgetDirection.mjs +1 -1
  49. package/esm2022/lib/smart-form/api/model/smartFormWidgetType.mjs +1 -1
  50. package/esm2022/lib/smart-form/api/model/smartLayoutDefinition.mjs +1 -1
  51. package/esm2022/lib/smart-form/api/model/smartMatrixModel.mjs +1 -1
  52. package/esm2022/lib/smart-form/api/model/smartWidgetDefinition.mjs +1 -1
  53. package/esm2022/lib/smart-form/api/model/smartWidgetHint.mjs +1 -1
  54. package/esm2022/lib/smart-form/api/model/valueChangeMode.mjs +1 -1
  55. package/esm2022/lib/smart-form/api/param.mjs +1 -1
  56. package/esm2022/lib/smart-form/api/variables.mjs +1 -1
  57. package/esm2022/lib/smart-form/services/smartform.service.mjs +11 -6
  58. package/esm2022/lib/smart-form/smartform.form-model.mjs +1 -1
  59. package/esm2022/lib/smart-form/smartform.model.mjs +1 -1
  60. package/esm2022/lib/smart-form/widgets/smartformwidget/smartformwidget.component.mjs +3 -3
  61. package/esm2022/lib/smart-grid/api/grid-api/api/api.mjs +1 -1
  62. package/esm2022/lib/smart-grid/api/grid-api/api/grid.service.mjs +1 -1
  63. package/esm2022/lib/smart-grid/api/grid-api/api.module.mjs +1 -1
  64. package/esm2022/lib/smart-grid/api/grid-api/configuration.mjs +1 -1
  65. package/esm2022/lib/smart-grid/api/grid-api/encoder.mjs +1 -1
  66. package/esm2022/lib/smart-grid/api/grid-api/index.mjs +1 -1
  67. package/esm2022/lib/smart-grid/api/grid-api/model/gridColumnContentType.mjs +1 -1
  68. package/esm2022/lib/smart-grid/api/grid-api/model/gridColumnMeta.mjs +1 -1
  69. package/esm2022/lib/smart-grid/api/grid-api/model/gridDataAccessConfig.mjs +1 -1
  70. package/esm2022/lib/smart-grid/api/grid-api/model/gridModel.mjs +1 -1
  71. package/esm2022/lib/smart-grid/api/grid-api/model/gridPage.mjs +1 -1
  72. package/esm2022/lib/smart-grid/api/grid-api/model/gridRow.mjs +1 -1
  73. package/esm2022/lib/smart-grid/api/grid-api/model/gridSelectionChange.mjs +1 -1
  74. package/esm2022/lib/smart-grid/api/grid-api/model/gridSelectionMode.mjs +1 -1
  75. package/esm2022/lib/smart-grid/api/grid-api/model/gridSelectionType.mjs +1 -1
  76. package/esm2022/lib/smart-grid/api/grid-api/model/gridServerModel.mjs +1 -1
  77. package/esm2022/lib/smart-grid/api/grid-api/model/gridUpdateData.mjs +1 -1
  78. package/esm2022/lib/smart-grid/api/grid-api/model/gridView.mjs +1 -1
  79. package/esm2022/lib/smart-grid/api/grid-api/model/gridViewDescriptor.mjs +1 -1
  80. package/esm2022/lib/smart-grid/api/grid-api/model/models.mjs +1 -1
  81. package/esm2022/lib/smart-grid/api/grid-api/param.mjs +1 -1
  82. package/esm2022/lib/smart-grid/api/grid-api/variables.mjs +1 -1
  83. package/esm2022/lib/smart-map/abstract-map.mjs +1 -1
  84. package/esm2022/lib/smart-map/api/api/geoMap.service.mjs +1 -1
  85. package/esm2022/lib/smart-map/api/model/geoMapDataSourceDescriptor.mjs +1 -1
  86. package/esm2022/lib/smart-map/api/model/geoMapDataSourceType.mjs +1 -1
  87. package/esm2022/lib/smart-map/impl/google-map.mjs +1 -1
  88. package/esm2022/lib/smart-map/impl/leaflet-map.mjs +1 -1
  89. package/esm2022/lib/smart-map/projects.mjs +1 -1
  90. package/esm2022/lib/smart-map/smart-map.component.mjs +1 -1
  91. package/esm2022/lib/smart-map/smart-map.module.mjs +1 -1
  92. package/esm2022/lib/smart-map/smart-map.types.mjs +1 -1
  93. package/esm2022/lib/smart-validation/named-validator.service.mjs +115 -0
  94. package/esm2022/lib/smart-validation/projects.mjs +4 -0
  95. package/esm2022/lib/smart-validation/smart-validation.module.mjs +24 -0
  96. package/esm2022/lib/smart-validation/smart-validation.types.mjs +4 -0
  97. package/esm2022/lib/view-context/api/model/componentConstraint.mjs +1 -1
  98. package/esm2022/lib/view-context/api/model/models.mjs +2 -1
  99. package/esm2022/lib/view-context/api/model/namedValidator.mjs +19 -0
  100. package/esm2022/projects.mjs +2 -1
  101. package/fesm2022/smartbit4all-ng-client.mjs +167 -10
  102. package/fesm2022/smartbit4all-ng-client.mjs.map +1 -1
  103. package/lib/smart-form/services/smartform.service.d.ts +4 -1
  104. package/lib/smart-form/smartform.form-model.d.ts +2 -2
  105. package/lib/smart-form/smartform.model.d.ts +11 -5
  106. package/lib/smart-validation/named-validator.service.d.ts +17 -0
  107. package/lib/smart-validation/projects.d.ts +3 -0
  108. package/lib/smart-validation/smart-validation.module.d.ts +8 -0
  109. package/lib/smart-validation/smart-validation.types.d.ts +12 -0
  110. package/lib/view-context/api/model/componentConstraint.d.ts +6 -0
  111. package/lib/view-context/api/model/models.d.ts +1 -0
  112. package/lib/view-context/api/model/namedValidator.d.ts +26 -0
  113. package/package.json +1 -1
  114. package/projects.d.ts +1 -0
  115. package/smartbit4all-ng-client-4.2.0.tgz +0 -0
  116. package/smartbit4all-ng-client-4.1.39.tgz +0 -0
@@ -6,4 +6,4 @@ export const COLLECTION_FORMATS = {
6
6
  'ssv': ' ',
7
7
  'pipes': '|'
8
8
  };
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFyaWFibGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc21hcnQtZm9ybS9hcGkvdmFyaWFibGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0MsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLElBQUksY0FBYyxDQUFTLFVBQVUsQ0FBQyxDQUFDO0FBQ2hFLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHO0lBQzlCLEtBQUssRUFBRSxHQUFHO0lBQ1YsS0FBSyxFQUFFLEtBQUs7SUFDWixLQUFLLEVBQUUsR0FBRztJQUNWLE9BQU8sRUFBRSxHQUFHO0NBQ2YsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBjb25zdCBCQVNFX1BBVEggPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPignYmFzZVBhdGgnKTtcbmV4cG9ydCBjb25zdCBDT0xMRUNUSU9OX0ZPUk1BVFMgPSB7XG4gICAgJ2Nzdic6ICcsJyxcbiAgICAndHN2JzogJyAgICcsXG4gICAgJ3Nzdic6ICcgJyxcbiAgICAncGlwZXMnOiAnfCdcbn1cbiJdfQ==
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFyaWFibGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc21hcnQtZm9ybS9hcGkvdmFyaWFibGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0MsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLElBQUksY0FBYyxDQUFTLFVBQVUsQ0FBQyxDQUFDO0FBQ2hFLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHO0lBQzlCLEtBQUssRUFBRSxHQUFHO0lBQ1YsS0FBSyxFQUFFLEtBQUs7SUFDWixLQUFLLEVBQUUsR0FBRztJQUNWLE9BQU8sRUFBRSxHQUFHO0NBQ2YsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5leHBvcnQgY29uc3QgQkFTRV9QQVRIID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oJ2Jhc2VQYXRoJyk7XHJcbmV4cG9ydCBjb25zdCBDT0xMRUNUSU9OX0ZPUk1BVFMgPSB7XHJcbiAgICAnY3N2JzogJywnLFxyXG4gICAgJ3Rzdic6ICcgICAnLFxyXG4gICAgJ3Nzdic6ICcgJyxcclxuICAgICdwaXBlcyc6ICd8J1xyXG59XHJcbiJdfQ==
@@ -1,10 +1,12 @@
1
- import { Injectable } from '@angular/core';
1
+ import { Injectable, Optional } from '@angular/core';
2
2
  import { UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';
3
3
  import { SelectionDefinitionTypeEnum, SmartFormWidgetType } from '../api';
4
4
  import { ComponentLibrary } from '../../view-context/utility/componentLibrary';
5
5
  import * as i0 from "@angular/core";
6
+ import * as i1 from "../../smart-validation/named-validator.service";
6
7
  export class SmartFormService {
7
- constructor() {
8
+ constructor(validatorProvider) {
9
+ this.validatorProvider = validatorProvider;
8
10
  this.emptyKey = 'e#m%p@t*y';
9
11
  this.componentLibrary = ComponentLibrary;
10
12
  this.group = {};
@@ -492,7 +494,7 @@ export class SmartFormService {
492
494
  }
493
495
  this.addEmptyItemToValueList(widget, emptyLabel);
494
496
  }
495
- if (constraint.enabled === undefined) {
497
+ if (constraint.enabled === undefined || constraint.enabled === null) {
496
498
  if (widget.isDisabled === undefined) {
497
499
  widget.isDisabled = false;
498
500
  }
@@ -500,6 +502,7 @@ export class SmartFormService {
500
502
  else {
501
503
  widget.isDisabled = !constraint.enabled;
502
504
  }
505
+ this.validatorProvider?.applyConstraint(widget, constraint);
503
506
  }
504
507
  });
505
508
  }
@@ -647,10 +650,12 @@ export class SmartFormService {
647
650
  widget.label = await this.getTranslationOfKey(widget.originalLabel);
648
651
  }));
649
652
  }
650
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartFormService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
653
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartFormService, deps: [{ token: i1.NamedValidatorService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
651
654
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartFormService }); }
652
655
  }
653
656
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartFormService, decorators: [{
654
657
  type: Injectable
655
- }] });
656
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRmb3JtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1mb3JtL3NlcnZpY2VzL3NtYXJ0Zm9ybS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xGLE9BQU8sRUFBdUIsMkJBQTJCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFHL0YsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7O0FBRy9FLE1BQU0sT0FBTyxnQkFBZ0I7SUFEN0I7UUFFbUIsYUFBUSxHQUFXLFdBQVcsQ0FBQztRQUNoRCxxQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztRQUNwQyxVQUFLLEdBQVEsRUFBRSxDQUFDO1FBK2tCQyxvQkFBZSxHQUFHLElBQUksTUFBTSxDQUFDLGlDQUFpQyxDQUFDLENBQUM7UUFDaEUsNkJBQXdCLEdBQUcsSUFBSSxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUMzRCwwQkFBcUIsR0FBRyxJQUFJLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNsRCxnQ0FBMkIsR0FBRyxJQUFJLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN4RCxzQkFBaUIsR0FBRyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN4QywrQkFBMEIsR0FBRyxJQUFJLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNyRCx3QkFBbUIsR0FBRyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMxQyxzQkFBaUIsR0FBRyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMv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QUFNLENBQUMsU0FBVSxDQUFDLENBQUM7WUFDM0MsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQsS0FBSyxDQUFDLG9CQUFvQixDQUFDLE9BQTBCO1FBQ25ELE9BQU8sQ0FBQyxHQUFHLENBQ1QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsTUFBdUIsRUFBRSxFQUFFO1lBQzVDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQzFCLE1BQU0sQ0FBQyxhQUFhLEdBQUcsR0FBRyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDM0MsQ0FBQztZQUNELFNBQVM7WUFDVCxNQUFNLENBQUMsS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN0RSxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzsrR0Ezd0JVLGdCQUFnQjttSEFBaEIsZ0JBQWdCOzs0RkFBaEIsZ0JBQWdCO2tCQUQ1QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBVbnR5cGVkRm9ybUNvbnRyb2wsIFVudHlwZWRGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFNlbGVjdGlvbkRlZmluaXRpb24sIFNlbGVjdGlvbkRlZmluaXRpb25UeXBlRW51bSwgU21hcnRGb3JtV2lkZ2V0VHlwZSB9IGZyb20gJy4uL2FwaSc7XHJcbmltcG9ydCB7IFNtYXJ0Rm9ybVdpZGdldCwgU21hcnRJdGVtLCBTbWFydEl0ZW1zLCBTbWFydFNlbGVjdCB9IGZyb20gJy4uL3NtYXJ0Zm9ybS5mb3JtLW1vZGVsJztcclxuaW1wb3J0IHsgU21hcnRGb3JtLCBTbWFydEZvcm1Db21wb25lbnRDb25zdHJhaW50LCBTbWFydFZhbGlkYXRvciwgVmFsdWUgfSBmcm9tICcuLi9zbWFydGZvcm0ubW9kZWwnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRMaWJyYXJ5IH0gZnJvbSAnLi4vLi4vdmlldy1jb250ZXh0L3V0aWxpdHkvY29tcG9uZW50TGlicmFyeSc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBTbWFydEZvcm1TZXJ2aWNlIHtcclxuICBwcml2YXRlIHJlYWRvbmx5IGVtcHR5S2V5OiBzdHJpbmcgPSAnZSNtJXBAdCp5JztcclxuICBjb21wb25lbnRMaWJyYXJ5ID0gQ29tcG9uZW50TGlicmFyeTtcclxuICBncm91cDogYW55ID0ge307XHJcblxyXG4gIGZvcm1Hcm91cD86IFVudHlwZWRGb3JtR3JvdXA7XHJcblxyXG4gIHNtYXJ0Rm9ybT86IFNtYXJ0Rm9ybTtcclxuXHJcbiAgZ2V0U21hcnRGb3JtV2lkZ2V0QnlLZXkoa2V5OiBzdHJpbmcpOiBTbWFydEZvcm1XaWRnZXQ8YW55PiB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5maW5kU21hcnRGb3JtV2lkZ2V0QnlLZXkodGhpcy5zbWFydEZvcm0/LndpZGdldHMhLCBrZXkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb2xsZWN0S2V5c0Zyb21TbWFydEZvcm0oXHJcbiAgICB3aWRnZXRzOiBTbWFydEZvcm1XaWRnZXQ8YW55PltdIHwgU21hcnRJdGVtczxhbnk+W10sXHJcbiAgICBrZXlzOiBzdHJpbmdbXVxyXG4gICk6IHN0cmluZ1tdIHtcclxuICAgIHdpZGdldHMuZm9yRWFjaCgodykgPT4ge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdy50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLkNPTlRBSU5FUiAmJlxyXG4gICAgICAgIHcudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5MQUJFTCAmJlxyXG4gICAgICAgIHcudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5DSEVDS19CT1hfMiAmJlxyXG4gICAgICAgIHcudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5ZT1VUVUJFX1BMQVlFUlxyXG4gICAgICApIHtcclxuICAgICAgICBrZXlzLnB1c2gody5rZXkpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChcclxuICAgICAgICB3LnR5cGUgPT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuVEVYVF9GSUVMRF9DSElQUyB8fFxyXG4gICAgICAgIHcudHlwZSA9PT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5TRUxFQ1QgfHxcclxuICAgICAgICB3LnR5cGUgPT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuU0VMRUNUX01VTFRJUExFIHx8XHJcbiAgICAgICAgdy50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLkNIRUNLX0JPWCB8fFxyXG4gICAgICAgIHcudHlwZSA9PT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5SQURJT19CVVRUT04gfHxcclxuICAgICAgICB3LnR5cGUgPT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQ09OVEFJTkVSXHJcbiAgICAgICkge1xyXG4gICAgICAgIGlmICh3LnZhbHVlTGlzdD8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICBrZXlzID0gdGhpcy5jb2xsZWN0S2V5c0Zyb21TbWFydEZvcm0ody52YWx1ZUxpc3QsIGtleXMpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmICh3LnR5cGUgPT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQ0hFQ0tfQk9YXzIpIHtcclxuICAgICAgICBpZiAody52YWx1ZUxpc3Q/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgbGV0IGNoaWxkcmVuS2V5cyA9IHRoaXMuY29sbGVjdEtleXNGcm9tU21hcnRGb3JtKHcudmFsdWVMaXN0LCBbXSk7XHJcbiAgICAgICAgICBjaGlsZHJlbktleXMgPSBjaGlsZHJlbktleXNcclxuICAgICAgICAgICAgLmZpbHRlcigoa2V5OiBzdHJpbmcpID0+IGtleSAhPT0gdy5rZXkpXHJcbiAgICAgICAgICAgIC5mbGF0TWFwKChrZXk6IHN0cmluZykgPT4gYCR7dy5rZXl9LiR7a2V5fWApO1xyXG5cclxuICAgICAgICAgIGtleXMucHVzaCguLi5jaGlsZHJlbktleXMpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIGtleXM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZpbmRTbWFydEZvcm1XaWRnZXRCeUtleShcclxuICAgIHdpZGdldHM6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+W10sXHJcbiAgICBrZXk6IHN0cmluZ1xyXG4gICk6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+IHwgdW5kZWZpbmVkIHtcclxuICAgIGxldCB3aWRnZXRGb3VuZEJ5S2V5OiBTbWFydEZvcm1XaWRnZXQ8YW55PiB8IHVuZGVmaW5lZDtcclxuXHJcbiAgICBmb3IgKGxldCB3IG9mIHdpZGdldHMpIHtcclxuICAgICAgaWYgKHcua2V5ID09PSBrZXkpIHtcclxuICAgICAgICByZXR1cm4gdztcclxuICAgICAgfSBlbHNlIGlmICh3LnR5cGUgPT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQ09OVEFJTkVSICYmIHcudmFsdWVMaXN0Py5sZW5ndGgpIHtcclxuICAgICAgICB3aWRnZXRGb3VuZEJ5S2V5ID0gdGhpcy5maW5kU21hcnRGb3JtV2lkZ2V0QnlLZXkody52YWx1ZUxpc3QsIGtleSk7XHJcbiAgICAgICAgaWYgKHdpZGdldEZvdW5kQnlLZXkpIHtcclxuICAgICAgICAgIHJldHVybiB3aWRnZXRGb3VuZEJ5S2V5O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHdpZGdldEZvdW5kQnlLZXk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFZhbHVlRGVlcGx5KG1vZGVsOiBhbnksIGtleTogc3RyaW5nKTogYW55IHtcclxuICAgIGxldCBzcGxpdHRlZEtleSA9IGtleS5zcGxpdCgnLicpO1xyXG4gICAgbGV0IHZhbHVlOiBhbnk7XHJcblxyXG4gICAgc3BsaXR0ZWRLZXkuZm9yRWFjaCgoazogc3RyaW5nKSA9PiB7XHJcbiAgICAgIGlmICghdmFsdWUpIHtcclxuICAgICAgICB2YWx1ZSA9IG1vZGVsW2tdO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIHZhbHVlW2tdID09PSB1bmRlZmluZWQgfHxcclxuICAgICAgICAgIHZhbHVlW2tdID09PSBudWxsIHx8XHJcbiAgICAgICAgICAoIXZhbHVlICYmIHR5cGVvZiB2YWx1ZVtrXSAhPT0gJ2Jvb2xlYW4nKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdmFsdWUgPSAnJztcclxuICAgICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdmFsdWUgPSB2YWx1ZVtrXTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHZhbHVlO1xyXG4gIH1cclxuICBwcml2YXRlIHNldFZhbHVlRGVlcGx5KG1vZGVsOiBhbnksIGtleTogc3RyaW5nLCB2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICBsZXQgc3BsaXR0ZWRLZXlzID0ga2V5LnNwbGl0KCcuJyk7XHJcblxyXG4gICAgbGV0IGRlZXBNb2RlbDogYW55W10gPSBbbW9kZWxdO1xyXG4gICAgbGV0IHRlbXBNb2RlbDogYW55O1xyXG5cclxuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBzcGxpdHRlZEtleXMubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgIHRlbXBNb2RlbCA9IGRlZXBNb2RlbFtpbmRleF07XHJcblxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdHlwZW9mIHRlbXBNb2RlbFtzcGxpdHRlZEtleXNbaW5kZXhdXSAhPT0gJ3N0cmluZycgJiZcclxuICAgICAgICB0eXBlb2YgdGVtcE1vZGVsW3NwbGl0dGVkS2V5c1tpbmRleF1dICE9PSAnYm9vbGVhbicgJiZcclxuICAgICAgICB0eXBlb2YgdGVtcE1vZGVsW3NwbGl0dGVkS2V5c1tpbmRleF1dICE9PSAnbnVtYmVyJyAmJlxyXG4gICAgICAgIHRlbXBNb2RlbFtzcGxpdHRlZEtleXNbaW5kZXhdXSAhPT0gdW5kZWZpbmVkXHJcbiAgICAgICkge1xyXG4gICAgICAgIGRlZXBNb2RlbC5wdXNoKHRlbXBNb2RlbFtzcGxpdHRlZEtleXNbaW5kZXhdXSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChpbmRleCA9PT0gc3BsaXR0ZWRLZXlzLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICBsZXQgb2xkVmFsdWUgPSB0ZW1wTW9kZWxbc3BsaXR0ZWRLZXlzW2luZGV4XV07XHJcbiAgICAgICAgLy8gaWYgKHZhbHVlID09PSAnJyAmJiAob2xkVmFsdWUgPT09IG51bGwgfHwgb2xkVmFsdWUgPT09IHVuZGVmaW5lZCkgdGhlbiBkb24ndCBjaGFuZ2UgdmFsdWUuXHJcbiAgICAgICAgaWYgKHZhbHVlICE9PSAnJyB8fCAob2xkVmFsdWUgIT09IG51bGwgJiYgb2xkVmFsdWUgIT09IHVuZGVmaW5lZCkpIHtcclxuICAgICAgICAgIHRlbXBNb2RlbFtzcGxpdHRlZEtleXNbaW5kZXhdXSA9IHZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0UHJvcGVydHlOYW1lc0RlZXBseShlbGVtZW50OiBhbnkpOiBzdHJpbmdbXSB7XHJcbiAgICBsZXQgcHJvcGVydGllcyA9IE9iamVjdC5rZXlzKGVsZW1lbnQpO1xyXG4gICAgcHJvcGVydGllcy5mb3JFYWNoKChwcm9wZXJ0eSkgPT4ge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdHlwZW9mIGVsZW1lbnRbcHJvcGVydHldID09PSAnc3RyaW5nJyB8fFxyXG4gICAgICAgIHR5cGVvZiBlbGVtZW50W3Byb3BlcnR5XSA9PT0gJ2Jvb2xlYW4nIHx8XHJcbiAgICAgICAgdHlwZW9mIGVsZW1lbnRbcHJvcGVydHldID09PSAnbnVtYmVyJyB8fFxyXG4gICAgICAgIGVsZW1lbnRbcHJvcGVydHldID09PSB1bmRlZmluZWQgfHxcclxuICAgICAgICBlbGVtZW50W3Byb3BlcnR5XSA9PT0gbnVsbCB8fFxyXG4gICAgICAgICFlbGVtZW50W3Byb3BlcnR5XSB8fFxyXG4gICAgICAgICFlbGVtZW50XHJcbiAgICAgICkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBsZXQgaW5uZXJQcm9wZXJ0aWVzID0gdGhpcy5nZXRQcm9wZXJ0eU5hbWVzRGVlcGx5KGVsZW1lbnRbcHJvcGVydHldKTtcclxuICAgICAgaW5uZXJQcm9wZXJ0aWVzID0gaW5uZXJQcm9wZXJ0aWVzLm1hcChcclxuICAgICAgICAoaW5uZXJQcm9wZXJ0eTogc3RyaW5nKSA9PiBgJHtwcm9wZXJ0eX0uJHtpbm5lclByb3BlcnR5fWBcclxuICAgICAgKTtcclxuXHJcbiAgICAgIHByb3BlcnRpZXMucHVzaCguLi5pbm5lclByb3BlcnRpZXMpO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gcHJvcGVydGllcztcclxuICB9XHJcblxyXG4gIHNldFZhbHVlc0Zyb21Nb2RlbCh3aWRnZXRzPzogU21hcnRGb3JtV2lkZ2V0PGFueT5bXSwgY29tcExpYj86IENvbXBvbmVudExpYnJhcnkpOiB2b2lkIHtcclxuICAgIGNvbnN0IHNtYXJ0Rm9ybSA9IHRoaXMuc21hcnRGb3JtITtcclxuICAgIGNvbnN0IGRhdGEgPSBzbWFydEZvcm0uY29tcG9uZW50TW9kZWw/LmRhdGE7XHJcbiAgICBpZiAoIWRhdGEpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghd2lkZ2V0cykge1xyXG4gICAgICB3aWRnZXRzID0gc21hcnRGb3JtLndpZGdldHM7XHJcbiAgICB9XHJcbiAgICBjb25zdCBrZXlzOiBzdHJpbmdbXSA9IHRoaXMuY29sbGVjdEtleXNGcm9tU21hcnRGb3JtKHdpZGdldHMsIFtdKTtcclxuXHJcbiAgICBsZXQgd2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55PiB8IHVuZGVmaW5lZDtcclxuICAgIGZvciAoY29uc3Qga2V5IG9mIHRoaXMuZ2V0UHJvcGVydHlOYW1lc0RlZXBseShkYXRhKSkge1xyXG4gICAgICBpZiAoa2V5cy5pbmNsdWRlcyhrZXkpKSB7XHJcbiAgICAgICAgd2lkZ2V0ID0gdGhpcy5maW5kU21hcnRGb3JtV2lkZ2V0QnlLZXkod2lkZ2V0cywga2V5KTtcclxuICAgICAgICBpZiAod2lkZ2V0KSB7XHJcbiAgICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLmdldFZhbHVlRGVlcGx5KGRhdGEsIGtleSk7XHJcbiAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicgJiYgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuVE9HR0xFKSB7XHJcbiAgICAgICAgICAgIHZhbHVlID0gYCR7dmFsdWV9YDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChjb21wTGliID09PSB0aGlzLmNvbXBvbmVudExpYnJhcnkuUFJJTUVORykge1xyXG4gICAgICAgICAgICBpZiAod2lkZ2V0LnR5cGUgPT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuREFURV9QSUNLRVIpIHtcclxuICAgICAgICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHdpZGdldC52YWx1ZSA9IG5ldyBEYXRlKHZhbHVlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuSU5ESUNBVE9SICYmXHJcbiAgICAgICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLkxBQkVMICYmXHJcbiAgICAgICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLkNPTlRBSU5FUiAmJlxyXG4gICAgICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5GSUxFX1VQTE9BREVSICYmXHJcbiAgICAgICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLkRJVklERVIgJiZcclxuICAgICAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQlVUVE9OICYmXHJcbiAgICAgICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLkNPTVBPTkVOVCAmJlxyXG4gICAgICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5ZT1VUVUJFX1BMQVlFUlxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHdpZGdldC52YWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgICAgICBpZiAod2lkZ2V0LnNob3dMYWJlbCA9PT0gdW5kZWZpbmVkICYmIHNtYXJ0Rm9ybS5zaG93TGFiZWwpIHtcclxuICAgICAgICAgICAgICB3aWRnZXQuc2hvd0xhYmVsID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHRoaXMuY29weUZyb21WYWx1ZVNldFRvVmFsdWVzTGlzdCh3aWRnZXQsIHNtYXJ0Rm9ybS5jb21wb25lbnRNb2RlbC52YWx1ZVNldHMpO1xyXG5cclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgd2lkZ2V0ICYmXHJcbiAgICAgICAgICAgIHdpZGdldC50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLkNIRUNLX0JPWCAmJlxyXG4gICAgICAgICAgICB3aWRnZXQudmFsdWVMaXN0Lmxlbmd0aCA9PT0gMVxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHdpZGdldC52YWx1ZUxpc3QgPSB3aWRnZXQudmFsdWVMaXN0Lm1hcCgoaXRlbTogU21hcnRJdGVtPGFueT4pID0+IHtcclxuICAgICAgICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLmdldFZhbHVlRGVlcGx5KGRhdGEsIGtleSk7XHJcbiAgICAgICAgICAgICAgaXRlbS52YWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgICAgICAgIHJldHVybiBpdGVtO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgLy8gSW4gY2FzZSBvZiBDaGVja0JveDJcclxuICAgICAgICAgIGxldCBzcGxpdHRlZEtleXMgPSBrZXkuc3BsaXQoJy4nKTtcclxuICAgICAgICAgIHNwbGl0dGVkS2V5cy5zcGxpY2Uoc3BsaXR0ZWRLZXlzLmxlbmd0aCAtIDEsIDEpO1xyXG4gICAgICAgICAgd2lkZ2V0ID0gdGhpcy5maW5kU21hcnRGb3JtV2lkZ2V0QnlLZXkod2lkZ2V0cywgc3BsaXR0ZWRLZXlzLmpvaW4oJy4nKSk7XHJcbiAgICAgICAgICBpZiAod2lkZ2V0ICYmIHdpZGdldC50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLkNIRUNLX0JPWF8yKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29weUZyb21WYWx1ZVNldFRvVmFsdWVzTGlzdCh3aWRnZXQsIHNtYXJ0Rm9ybS5jb21wb25lbnRNb2RlbC52YWx1ZVNldHMpO1xyXG4gICAgICAgICAgICBpZiAod2lkZ2V0LnZhbHVlTGlzdCkge1xyXG4gICAgICAgICAgICAgIHdpZGdldC52YWx1ZUxpc3QgPSB3aWRnZXQudmFsdWVMaXN0Lm1hcCgoaXRlbTogU21hcnRJdGVtPGFueT4pID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IHRoaXMuZ2V0VmFsdWVEZWVwbHkoZGF0YSwgYCR7d2lkZ2V0Py5rZXl9LiR7aXRlbS5rZXl9YCk7XHJcbiAgICAgICAgICAgICAgICBpdGVtLnZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gaXRlbTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb3B5RnJvbVZhbHVlU2V0VG9WYWx1ZXNMaXN0KHdpZGdldDogU21hcnRGb3JtV2lkZ2V0PGFueT4sIHZhbHVlU2V0czogYW55KSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHdpZGdldC50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLlNFTEVDVCB8fFxyXG4gICAgICB3aWRnZXQudHlwZSA9PT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5TRUxFQ1RfTVVMVElQTEUgfHxcclxuICAgICAgd2lkZ2V0LnR5cGUgPT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuUkFESU9fQlVUVE9OIHx8XHJcbiAgICAgIHdpZGdldC50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLkNIRUNLX0JPWCB8fFxyXG4gICAgICB3aWRnZXQudHlwZSA9PT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5DSEVDS19CT1hfMiB8fFxyXG4gICAgICB3aWRnZXQudHlwZSA9PT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5URVhUX0ZJRUxEXHJcbiAgICApIHtcclxuICAgICAgaWYgKHdpZGdldC5zZWxlY3Rpb24gJiYgdmFsdWVTZXRzKSB7XHJcbiAgICAgICAgbGV0IHZhbHVlU2V0ID0gdmFsdWVTZXRzW3dpZGdldC5zZWxlY3Rpb24udmFsdWVTZXROYW1lXTtcclxuICAgICAgICBpZiAoIXZhbHVlU2V0KSB7XHJcbiAgICAgICAgICBjb25zb2xlLndhcm4oJ3ZhbHVlU2V0IG5vdCBmb3VuZCcsIHdpZGdldC5zZWxlY3Rpb24udmFsdWVTZXROYW1lKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgbGV0IHZhbHVlU2V0RGF0YSA9IHZhbHVlU2V0LnZhbHVlU2V0RGF0YTtcclxuICAgICAgICAgIGxldCB2YWx1ZXMgPSB2YWx1ZVNldERhdGEudmFsdWVzO1xyXG4gICAgICAgICAgbGV0IGRpc3BsYXlQcm9wZXJ0eSA9XHJcbiAgICAgICAgICAgICh3aWRnZXQgYXMgU21hcnRTZWxlY3Q8YW55Pikuc2VsZWN0aW9uPy5kaXNwbGF5UHJvcGVydHkgPz8gJ2Rpc3BsYXlWYWx1ZSc7XHJcbiAgICAgICAgICAvLyBjaGVjayBpcyBkaXNwbGF5UHJvcGVydHkgZXhpc3RzLCBmYWxsYmFjayBmb3IgY29tbW9uIGRpc3BsYXkgcHJvcGVydGllc1xyXG4gICAgICAgICAgaWYgKCF0aGlzLmNoZWNrUHJvcGVydHkodmFsdWVzLCBkaXNwbGF5UHJvcGVydHkpKSB7XHJcbiAgICAgICAgICAgIGRpc3BsYXlQcm9wZXJ0eSA9ICduYW1lJzsgLy8gR2VuZXJpY1ZhbHVlLm5hbWVcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmNoZWNrUHJvcGVydHkodmFsdWVzLCBkaXNwbGF5UHJvcGVydHkpKSB7XHJcbiAgICAgICAgICAgICAgZGlzcGxheVByb3BlcnR5ID0gJ2Rpc3BsYXlWYWx1ZSc7IC8vIFZhbHVlLmRpc3BsYXlWYWx1ZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIHdpZGdldC5zZWxlY3Rpb24udHlwZSA9PT0gU2VsZWN0aW9uRGVmaW5pdGlvblR5cGVFbnVtLlBST1BFUlRZICYmXHJcbiAgICAgICAgICAgICF3aWRnZXQuc2VsZWN0aW9uLm1hcHBpbmcubGVuZ3RoXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgbGV0IGtleVByb3BlcnR5ID0gdmFsdWVTZXREYXRhLmtleVByb3BlcnR5ID8/ICdvYmplY3RVcmknO1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuY2hlY2tQcm9wZXJ0eSh2YWx1ZXMsIGtleVByb3BlcnR5KSkge1xyXG4gICAgICAgICAgICAgIGtleVByb3BlcnR5ID0gJ3VyaSc7IC8vIEdlbmVyaWNWYWx1ZS51cmlcclxuICAgICAgICAgICAgICBpZiAoIXRoaXMuY2hlY2tQcm9wZXJ0eSh2YWx1ZXMsIGtleVByb3BlcnR5KSkge1xyXG4gICAgICAgICAgICAgICAga2V5UHJvcGVydHkgPSAnb2JqZWN0VXJpJzsgLy8gVmFsdWUub2JqZWN0VXJpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHdpZGdldC52YWx1ZUxpc3QgPSB2YWx1ZXMubWFwKCh2YWx1ZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIGtleTogdmFsdWVba2V5UHJvcGVydHldLFxyXG4gICAgICAgICAgICAgICAgbGFiZWw6IHZhbHVlW2Rpc3BsYXlQcm9wZXJ0eV0sXHJcbiAgICAgICAgICAgICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLklURU0sXHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWVba2V5UHJvcGVydHldLFxyXG4gICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLmFkZEVtcHR5SXRlbVRvVmFsdWVMaXN0KHdpZGdldCwgd2lkZ2V0LnNlbGVjdGlvbi5lbXB0eUxhYmVsKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICAgIHdpZGdldC5zZWxlY3Rpb24udHlwZSA9PT0gU2VsZWN0aW9uRGVmaW5pdGlvblR5cGVFbnVtLk9CSkVDVCAmJlxyXG4gICAgICAgICAgICAhd2lkZ2V0LnNlbGVjdGlvbi5tYXBwaW5nLmxlbmd0aFxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHdpZGdldC52YWx1ZUxpc3QgPSB2YWx1ZXMubWFwKCh2YWx1ZTogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIGtleTogYCR7aW5kZXh9YCxcclxuICAgICAgICAgICAgICAgIGxhYmVsOiB2YWx1ZVtkaXNwbGF5UHJvcGVydHldLFxyXG4gICAgICAgICAgICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5JVEVNLFxyXG4gICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxyXG4gICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLmFkZEVtcHR5SXRlbVRvVmFsdWVMaXN0KHdpZGdldCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNoZWNrUHJvcGVydHkodmFsdWVzOiBvYmplY3RbXSwgcHJvcGVydHk6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCF2YWx1ZXM/Lmxlbmd0aCkge1xyXG4gICAgICAvLyBubyBzYW1wbGUgZGF0YSwgYXNzdW1lIGV4aXN0YW5jZVxyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBwcm9wZXJ0eSBpbiB2YWx1ZXNbMF07XHJcbiAgfVxyXG5cclxuICB0b0Zvcm1Hcm91cChjb21wTGliPzogQ29tcG9uZW50TGlicmFyeSk6IFVudHlwZWRGb3JtR3JvdXAge1xyXG4gICAgdGhpcy5jcmVhdGVGb3JtQ29udHJvbHModGhpcy5zbWFydEZvcm0hLndpZGdldHMsIGNvbXBMaWIhKTtcclxuXHJcbiAgICBpZiAodGhpcy5mb3JtR3JvdXApIHtcclxuICAgICAgdGhpcy5mb3JtR3JvdXAuY29udHJvbHMgPSB0aGlzLmdyb3VwO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5mb3JtR3JvdXAgPSBuZXcgVW50eXBlZEZvcm1Hcm91cCh0aGlzLmdyb3VwKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5zbWFydEZvcm0hLnZhbGlkYXRvcnMgJiYgdGhpcy5zbWFydEZvcm0hLnZhbGlkYXRvcnMubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuZm9ybUdyb3VwLnNldFZhbGlkYXRvcnMoXHJcbiAgICAgICAgdGhpcy5zbWFydEZvcm0hLnZhbGlkYXRvcnMubWFwKCh2YWxpZGF0b3I6IFNtYXJ0VmFsaWRhdG9yKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gdmFsaWRhdG9yLnZhbGlkYXRvcjtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLmZvcm1Hcm91cDtcclxuICB9XHJcblxyXG4gIGNyZWF0ZUZvcm1Db250cm9scyhcclxuICAgIHdpZGdldHM6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+W10gfCBTbWFydEl0ZW08YW55PltdLFxyXG4gICAgY29tcExpYjogQ29tcG9uZW50TGlicmFyeSxcclxuICAgIHBhcmVudEtleT86IHN0cmluZ1xyXG4gICk6IHZvaWQge1xyXG4gICAgd2lkZ2V0cy5tYXAoKHdpZGdldCkgPT4ge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuSU5ESUNBVE9SICYmXHJcbiAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuTEFCRUwgJiZcclxuICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5DT05UQUlORVIgJiZcclxuICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5GSUxFX1VQTE9BREVSICYmXHJcbiAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuSU1BR0UgJiZcclxuICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5TVkcgJiZcclxuICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5ESVZJREVSICYmXHJcbiAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQlVUVE9OICYmXHJcbiAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQ0hFQ0tfQk9YXzIgJiZcclxuICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5JVEVNICYmXHJcbiAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQ09NUE9ORU5UICYmXHJcbiAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuTUFUUklYICYmXHJcbiAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuWU9VVFVCRV9QTEFZRVJcclxuICAgICAgKSB7XHJcbiAgICAgICAgaWYgKGNvbXBMaWIhID09PSB0aGlzLmNvbXBvbmVudExpYnJhcnkuUFJJTUVORykge1xyXG4gICAgICAgICAgaWYgKHdpZGdldC50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLkRBVEVfUElDS0VSKSB7XHJcbiAgICAgICAgICAgIGlmICh3aWRnZXQudmFsdWUpIHtcclxuICAgICAgICAgICAgICB3aWRnZXQudmFsdWUgPSBuZXcgRGF0ZSh3aWRnZXQudmFsdWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY3JlYXRlRm9ybUNvbnRyb2woYCR7d2lkZ2V0LmtleX1gLCB3aWRnZXQudmFsdWUsIHdpZGdldC5pc0Rpc2FibGVkLCB3aWRnZXQudmFsaWRhdG9ycyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh3aWRnZXQudHlwZSA9PT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5NQVRSSVgpIHtcclxuICAgICAgICBpZiAod2lkZ2V0LmlzTXVsdGlwbGUpIHtcclxuICAgICAgICAgIGxldCBkYXRhS2V5cyA9IE9iamVjdC5rZXlzKHdpZGdldC52YWx1ZS5kYXRhKTtcclxuICAgICAgICAgIGxldCBpdGVtS2V5cyA9IHdpZGdldC52YWx1ZS5jb2x1bW5zLm1hcCgodmFsdWU6IFZhbHVlKSA9PiB2YWx1ZS5jb2RlKTtcclxuICAgICAgICAgIGRhdGFLZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICAgIGl0ZW1LZXlzLmZvckVhY2goKGl0ZW06IHN0cmluZykgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuY3JlYXRlRm9ybUNvbnRyb2woXHJcbiAgICAgICAgICAgICAgICBgJHt3aWRnZXQua2V5fS5kYXRhLiR7a2V5fS4ke2l0ZW19YCxcclxuICAgICAgICAgICAgICAgIHdpZGdldC52YWx1ZS5kYXRhW2tleV1baXRlbV0sXHJcbiAgICAgICAgICAgICAgICB1bmRlZmluZWQsIC8vIFRPRE8gcmVhbGx5IHdlIGRvbid0IHBhc3Mgd2lkZ2V0LmlzRGlzYWJsZWQ/XHJcbiAgICAgICAgICAgICAgICB3aWRnZXQudmFsaWRhdG9yc1xyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIE9iamVjdC5rZXlzKHdpZGdldC52YWx1ZS5kYXRhKS5tYXAoKGtleTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlRm9ybUNvbnRyb2woXHJcbiAgICAgICAgICAgICAgYCR7d2lkZ2V0LmtleX0uJHtrZXl9YCxcclxuICAgICAgICAgICAgICB3aWRnZXQuaXNNdWx0aXBsZSA/IHdpZGdldC52YWx1ZS5kYXRhW2tleV0gOiB3aWRnZXQudmFsdWUuZGF0YVtrZXldWzBdLFxyXG4gICAgICAgICAgICAgIHdpZGdldC5pc0Rpc2FibGVkLFxyXG4gICAgICAgICAgICAgIHdpZGdldC52YWxpZGF0b3JzXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHdpZGdldC50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLklURU0gJiYgcGFyZW50S2V5KSB7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVGb3JtQ29udHJvbChcclxuICAgICAgICAgIGAke3BhcmVudEtleX0uJHt3aWRnZXQua2V5fWAsXHJcbiAgICAgICAgICB3aWRnZXQudmFsdWUsXHJcbiAgICAgICAgICB3aWRnZXQuaXNEaXNhYmxlZCxcclxuICAgICAgICAgIHVuZGVmaW5lZFxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh3aWRnZXQudHlwZSA9PT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5DT05UQUlORVIgJiYgd2lkZ2V0LnZhbHVlTGlzdD8ubGVuZ3RoKSB7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVGb3JtQ29udHJvbHMod2lkZ2V0LnZhbHVlTGlzdCwgY29tcExpYik7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHdpZGdldC50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLkNIRUNLX0JPWF8yICYmIHdpZGdldC52YWx1ZUxpc3Q/Lmxlbmd0aCkge1xyXG4gICAgICAgIHRoaXMuY3JlYXRlRm9ybUNvbnRyb2xzKHdpZGdldC52YWx1ZUxpc3QsIGNvbXBMaWIsIHdpZGdldC5rZXkpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGlzVmFsaWRhdG9ySW5MaXN0KHZhbGlkYXRvcjogU21hcnRWYWxpZGF0b3IsIGxpc3Q/OiBTbWFydFZhbGlkYXRvcltdKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gbGlzdCAhPT0gdW5kZWZpbmVkICYmIGxpc3QubGVuZ3RoID4gMCAmJiBsaXN0LnNvbWUoKHYpID0+IHYgPT09IHZhbGlkYXRvcik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZUZvcm1Db250cm9sKFxyXG4gICAga2V5OiBzdHJpbmcsXHJcbiAgICB2YWx1ZT86IHN0cmluZyxcclxuICAgIGlzRGlzYWJsZWQ/OiBib29sZWFuLFxyXG4gICAgdmFsaWRhdG9ycz86IFNtYXJ0VmFsaWRhdG9yW11cclxuICApOiBVbnR5cGVkRm9ybUNvbnRyb2wge1xyXG4gICAgbGV0IGZvcm1Db250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2wgPSB0aGlzLmdyb3VwW2tleV07XHJcbiAgICBpZiAoIWZvcm1Db250cm9sKSB7XHJcbiAgICAgIGZvcm1Db250cm9sID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCgpO1xyXG4gICAgICB0aGlzLmdyb3VwW2tleV0gPSBmb3JtQ29udHJvbDtcclxuICAgIH1cclxuICAgIGZvcm1Db250cm9sLnNldFZhbHVlKHZhbHVlIHx8ICcnLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICBmb3JtQ29udHJvbC5jbGVhclZhbGlkYXRvcnMoKTtcclxuICAgIHZhbGlkYXRvcnM/Lm1hcCgodmFsaWRhdG9yOiBTbWFydFZhbGlkYXRvcikgPT4ge1xyXG4gICAgICBmb3JtQ29udHJvbC5hZGRWYWxpZGF0b3JzKHZhbGlkYXRvci52YWxpZGF0b3IpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKGlzRGlzYWJsZWQgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBpZiAoaXNEaXNhYmxlZCkge1xyXG4gICAgICAgIGZvcm1Db250cm9sLmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGZvcm1Db250cm9sLmVuYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBmb3JtQ29udHJvbDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29weVZhbHVlRnJvbUZvcm1Ub1dpZGdldEJlYW5zKFxyXG4gICAgd2lkZ2V0czogU21hcnRGb3JtV2lkZ2V0PGFueT5bXSxcclxuICAgIGdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwXHJcbiAgKTogdm9pZCB7XHJcbiAgICB3aWRnZXRzLmZvckVhY2goKHdpZGdldCkgPT4ge1xyXG4gICAgICBpZiAod2lkZ2V0LnR5cGUgPT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQ09OVEFJTkVSICYmIHdpZGdldC52YWx1ZUxpc3Q/Lmxlbmd0aCkge1xyXG4gICAgICAgIHRoaXMuY29weVZhbHVlRnJvbUZvcm1Ub1dpZGdldEJlYW5zKHdpZGdldC52YWx1ZUxpc3QsIGdyb3VwKTtcclxuICAgICAgfSBlbHNlIGlmICh3aWRnZXQudHlwZSA9PT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5NQVRSSVgpIHtcclxuICAgICAgICBpZiAod2lkZ2V0LmlzTXVsdGlwbGUpIHtcclxuICAgICAgICAgIGxldCBkYXRhS2V5cyA9IE9iamVjdC5rZXlzKHdpZGdldC52YWx1ZS5kYXRhKTtcclxuICAgICAgICAgIGxldCBpdGVtS2V5cyA9IHdpZGdldC52YWx1ZS5jb2x1bW5zLm1hcCgodmFsdWU6IFZhbHVlKSA9PiB2YWx1ZS5jb2RlKTtcclxuICAgICAgICAgIGRhdGFLZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICAgIGl0ZW1LZXlzLmZvckVhY2goKGl0ZW06IHN0cmluZykgPT4ge1xyXG4gICAgICAgICAgICAgIHdpZGdldC52YWx1ZS5kYXRhW2tleV1baXRlbV0gPSBbXHJcbiAgICAgICAgICAgICAgICBncm91cC5jb250cm9sc1tgJHt3aWRnZXQua2V5fS5kYXRhLiR7a2V5fS4ke2l0ZW19YF0udmFsdWUsXHJcbiAgICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICBsZXQgZGF0YWtleXMgPSBPYmplY3Qua2V5cyh3aWRnZXQudmFsdWUuZGF0YSk7XHJcbiAgICAgICAgICAvL01hcCBjaGVja2JveCBrZXkgLSBib29sZWFuIHZhbHVlIHRvIHN0cmluZyBrZXkgYXJyYXlcclxuICAgICAgICAgIGxldCB2YWx1ZUtleXMgPSB3aWRnZXQudmFsdWUuY29sdW1ucy5tYXAoKHZhbHVlOiBWYWx1ZSkgPT4gdmFsdWUuY29kZSk7XHJcbiAgICAgICAgICBkYXRha2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xyXG4gICAgICAgICAgICBsZXQgbmV3RGF0YTogYW55W10gPSBbXTtcclxuICAgICAgICAgICAgdmFsdWVLZXlzLmZvckVhY2goKHZhbHVlS2V5OiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgICAgICBsZXQgdmFsdWUgPSB3aWRnZXQudmFsdWUuZGF0YVtrZXldW3ZhbHVlS2V5XTtcclxuICAgICAgICAgICAgICBpZiAodmFsdWVbMF0pIHtcclxuICAgICAgICAgICAgICAgIG5ld0RhdGEucHVzaCh2YWx1ZUtleSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgd2lkZ2V0LnZhbHVlLmRhdGFba2V5XSA9IG5ld0RhdGE7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgT2JqZWN0LmtleXMod2lkZ2V0LnZhbHVlLmRhdGEpLm1hcCgoa2V5OiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgICAgd2lkZ2V0LnZhbHVlLmRhdGFba2V5XSA9IFtncm91cC5jb250cm9sc1tgJHt3aWRnZXQua2V5fS4ke2tleX1gXS52YWx1ZV07XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuSU5ESUNBVE9SICYmXHJcbiAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuTEFCRUwgJiZcclxuICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5DT05UQUlORVIgJiZcclxuICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5JTUFHRSAmJlxyXG4gICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLlNWRyAmJlxyXG4gICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLkZJTEVfVVBMT0FERVIgJiZcclxuICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5CVVRUT04gJiZcclxuICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5ESVZJREVSICYmXHJcbiAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQ0hFQ0tfQk9YXzIgJiZcclxuICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5DT01QT05FTlQgJiZcclxuICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5ZT1VUVUJFX1BMQVlFUlxyXG4gICAgICApIHtcclxuICAgICAgICB3aWRnZXQudmFsdWUgPSBncm91cC5jb250cm9sc1t3aWRnZXQua2V5XS52YWx1ZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICB0b1NtYXJ0Rm9ybShncm91cDogVW50eXBlZEZvcm1Hcm91cCk6IFNtYXJ0Rm9ybSB7XHJcbiAgICBpZiAodGhpcy5zbWFydEZvcm0pIHtcclxuICAgICAgdGhpcy5jb3B5VmFsdWVGcm9tRm9ybVRvV2lkZ2V0QmVhbnModGhpcy5zbWFydEZvcm0ud2lkZ2V0cywgZ3JvdXApO1xyXG4gICAgICBjb25zdCBkYXRhID0gdGhpcy5zbWFydEZvcm0uY29tcG9uZW50TW9kZWw/LmRhdGE7XHJcbiAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgdGhpcy5nZXRQcm9wZXJ0eU5hbWVzRGVlcGx5KGRhdGEpKSB7XHJcbiAgICAgICAgICBpZiAoZ3JvdXAuY29udHJvbHNba2V5XSkge1xyXG4gICAgICAgICAgICB0aGlzLnNldFZhbHVlRGVlcGx5KGRhdGEsIGtleSwgZ3JvdXAuY29udHJvbHNba2V5XS52YWx1ZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5zbWFydEZvcm0hO1xyXG4gIH1cclxuXHJcbiAgZ2V0TW9kZWwoZ3JvdXA6IFVudHlwZWRGb3JtR3JvdXApOiBhbnkge1xyXG4gICAgaWYgKCF0aGlzLnNtYXJ0Rm9ybT8uY29tcG9uZW50TW9kZWwpIHtcclxuICAgICAgcmV0dXJuIHt9O1xyXG4gICAgfVxyXG4gICAgbGV0IG9yaWdpbmFsTW9kZWwgPSB0aGlzLnNtYXJ0Rm9ybS5jb21wb25lbnRNb2RlbC5kYXRhO1xyXG4gICAgbGV0IGNvcHlPZk1vZGVsID0geyAuLi5vcmlnaW5hbE1vZGVsIH07XHJcblxyXG4gICAgLy8gY29weU9mTW9kZWwgc2hvdWxkIGJlIHRoZSBjdXJyZW50IG1vZGVsXHJcbiAgICB0aGlzLnNtYXJ0Rm9ybS5jb21wb25lbnRNb2RlbC5kYXRhID0gY29weU9mTW9kZWw7XHJcbiAgICAvLyBjb3B5IHZhbHVlIGZyb20gRm9ybUdyb3VwIGludG8gbW9kZWxcclxuICAgIHRoaXMudG9TbWFydEZvcm0oZ3JvdXApO1xyXG5cclxuICAgIGxldCBuZXdNb2RlbCA9IHRoaXMuc21hcnRGb3JtLmNvbXBvbmVudE1vZGVsLmRhdGE7XHJcbiAgICB0aGlzLnNtYXJ0Rm9ybS5jb21wb25lbnRNb2RlbC5kYXRhID0gb3JpZ2luYWxNb2RlbDtcclxuXHJcbiAgICByZXR1cm4gbmV3TW9kZWw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFwcGx5Q29tcG9uZW50Q29uc3RyYWludHMoXHJcbiAgICB3aWRnZXRzOiBTbWFydEZvcm1XaWRnZXQ8YW55PltdLFxyXG4gICAgY29uc3RyYWludHM6IFNtYXJ0Rm9ybUNvbXBvbmVudENvbnN0cmFpbnRbXVxyXG4gICkge1xyXG4gICAgd2lkZ2V0cy5mb3JFYWNoKCh3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+KSA9PiB7XHJcbiAgICAgIGxldCB3aWRnZXRDb25zdHJhaW50cyA9IGNvbnN0cmFpbnRzPy5maWx0ZXIoXHJcbiAgICAgICAgLy8oY29uc3RyYWludDogU21hcnRGb3JtQ29tcG9uZW50Q29uc3RyYWludCkgPT4gY29uc3RyYWludC5kYXRhTmFtZSA9PT0gd2lkZ2V0LmtleVxyXG4gICAgICAgIChjb25zdHJhaW50KSA9PiB0aGlzLmFudFBhdGhNYXRjaGVyKGNvbnN0cmFpbnQuZGF0YU5hbWUsIHdpZGdldC5rZXkpXHJcbiAgICAgICk7XHJcblxyXG4gICAgICBpZiAod2lkZ2V0Q29uc3RyYWludHMgJiYgd2lkZ2V0Q29uc3RyYWludHMubGVuZ3RoKSB7XHJcbiAgICAgICAgd2lkZ2V0Q29uc3RyYWludHMuZm9yRWFjaCgoY29uc3RyYWludCkgPT4ge1xyXG4gICAgICAgICAgaWYgKGNvbnN0cmFpbnQudmlzaWJsZSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGlmICh3aWRnZXQuaXNWaXNpYmxlID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICB3aWRnZXQuaXNWaXNpYmxlID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgd2lkZ2V0LmlzVmlzaWJsZSA9IGNvbnN0cmFpbnQudmlzaWJsZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuSU5ESUNBVE9SICYmXHJcbiAgICAgICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLkxBQkVMICYmXHJcbiAgICAgICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLkNPTlRBSU5FUiAmJlxyXG4gICAgICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5JTUFHRSAmJlxyXG4gICAgICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5TVkcgJiZcclxuICAgICAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuRklMRV9VUExPQURFUiAmJlxyXG4gICAgICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5ESVZJREVSICYmXHJcbiAgICAgICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLkJVVFRPTiAmJlxyXG4gICAgICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5DT01QT05FTlQgJiZcclxuICAgICAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuWU9VVFVCRV9QTEFZRVJcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICBsZXQgdmFsaWRhdG9ycyA9IHdpZGdldC52YWxpZGF0b3JzID8/IFtdO1xyXG4gICAgICAgICAgICBsZXQgcmVxdWlyZWRJbmRleCA9IHZhbGlkYXRvcnMuZmluZEluZGV4KCh2KSA9PiB2LnZhbGlkYXRvciA9PT0gVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICAgICAgICAgIGxldCB3YXNNYW5kYXRvcnkgPSByZXF1aXJlZEluZGV4ID49IDA7XHJcbiAgICAgICAgICAgIGxldCB0b2JlTWFuZGF0b3J5ID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGlmIChjb25zdHJhaW50Lm1hbmRhdG9yeSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgLy8gbm90IHNwZWNpZmllZCBvbiBzZXJ2ZXIsIHVzZSBjbGllbnQgc3RhdGVcclxuICAgICAgICAgICAgICAvLyBpZiB3aWRnZXQgaXMgbm90IHZpc2libGUsIGNsaWVudCBzaG91bGQgZGVmYXVsdCB0byBub3QgbWFuZGF0b3J5XHJcbiAgICAgICAgICAgICAgdG9iZU1hbmRhdG9yeSA9IHdpZGdldC5pc1Zpc2libGUgJiYgd2FzTWFuZGF0b3J5O1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRvYmVNYW5kYXRvcnkgPSBjb25zdHJhaW50Lm1hbmRhdG9yeTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoIXdhc01hbmRhdG9yeSAmJiB0b2JlTWFuZGF0b3J5KSB7XHJcbiAgICAgICAgICAgICAgLy8gYWRkIHJlcXVpcmVkIHZhbGlkYXRvclxyXG4gICAgICAgICAgICAgIHdpZGdldC52YWxpZGF0b3JzID0gW1xyXG4gICAgICAgICAgICAgICAgLi4udmFsaWRhdG9ycyxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yOiBWYWxpZGF0b3JzLnJlcXVpcmVkLFxyXG4gICAgICAgICAgICAgICAgICBpc0N1c3RvbTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZTogJycsXHJcbiAgICAgICAgICAgICAgICAgIG5hbWU6ICdyZXF1aXJlZCcsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIF07XHJcbiAgICAgICAgICAgICAgLy8gcmVtb3ZlIGVtcHR5IGl0ZW1cclxuICAgICAgICAgICAgICB0aGlzLnJlbW92ZUVtcHR5SXRlbUZyb21WYWx1ZUxpc3Qod2lkZ2V0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAod2FzTWFuZGF0b3J5ICYmICF0b2JlTWFuZGF0b3J5KSB7XHJcbiAgICAgICAgICAgICAgLy8gcmVtb3ZlIHJlcXVpcmVkIHZhbGlkYXRvclxyXG4gICAgICAgICAgICAgIHdpZGdldC52YWxpZGF0b3JzPy5zcGxpY2UocmVxdWlyZWRJbmRleCwgMSk7XHJcbiAgICAgICAgICAgICAgLy8gYWRkIGVtcHR5IGl0ZW1cclxuICAgICAgICAgICAgICBsZXQgZW1wdHlMYWJlbCA9ICcnO1xyXG4gICAgICAgICAgICAgIGlmICgnc2VsZWN0aW9uJyBpbiB3aWRnZXQpIHtcclxuICAgICAgICAgICAgICAgIGVtcHR5TGFiZWwgPSB3aWRnZXQuc2VsZWN0aW9uPy5lbXB0eUxhYmVsID8/ICcnO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0aGlzLmFkZEVtcHR5SXRlbVRvVmFsdWVMaXN0KHdpZGdldCwgZW1wdHlMYWJlbCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGNvbnN0cmFpbnQuZW5hYmxlZCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgaWYgKHdpZGdldC5pc0Rpc2FibGVkID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgIHdpZGdldC5pc0Rpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHdpZGdldC5pc0Rpc2FibGVkID0gIWNvbnN0cmFpbnQuZW5hYmxlZDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChcclxuICAgICAgICB3aWRnZXQudHlwZSA9PT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5DT05UQUlORVIgJiZcclxuICAgICAgICB3aWRnZXQudmFsdWVMaXN0ICYmXHJcbiAgICAgICAgd2lkZ2V0LnZhbHVlTGlzdC5sZW5ndGhcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5hcHBseUNvbXBvbmVudENvbnN0cmFpbnRzKHdpZGdldC52YWx1ZUxpc3QsIGNvbnN0cmFpbnRzKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IHJlZ2V4UmVnZXhDaGFycyA9IG5ldyBSZWdFeHAoL1tcXC5cXC1cXFtcXF1cXC9cXHtcXH1cXChcXClcXCtcXF5cXCRcXFxcXFx8XS9nKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IHJlZ2V4QXN0ZXJpc2tJblRoZU1pZGRsZSA9IG5ldyBSZWdFeHAoLyhbXlxcKl0pXFwqKFteXFwqXSkvZyk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSByZWdleEFzdGVyaXNrSW5UaGVFbmQgPSBuZXcgUmVnRXhwKC8oW15cXCpdKVxcKiQvZyk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSByZWdleEFzdGVyaXNrSW5UaGVCZWdpbm5pbmcgPSBuZXcgUmVnRXhwKC9eXFwqKFteXFwqXSkvZyk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSByZWdleEFzdGVyaXNrT25seSA9IG5ldyBSZWdFeHAoL15cXCokL2cpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgcmVnZXhEb3VibGVBc3Rlcmlza1dpdGhEb3QgPSBuZXcgUmVnRXhwKC9cXCpcXCpcXFxcXFwuL2cpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgcmVnZXhEb3VibGVBc3RlcmlzayA9IG5ldyBSZWdFeHAoL1xcKlxcKi9nKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IHJlZ2V4UXVlc3Rpb25NYXJrID0gbmV3IFJlZ0V4cCgvXFw/L2cpO1xyXG4gIHByaXZhdGUgcmVnZXhCeVBhdHRlcm46IE1hcDxzdHJpbmcsIFJlZ0V4cD4gPSBuZXcgTWFwKCk7XHJcblxyXG4gIGFudFBhdGhNYXRjaGVyKHBhdHRlcm4/OiBzdHJpbmcsIHBhdGg/OiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGlmICghcGF0dGVybiB8fCAhcGF0aCkge1xyXG4gICAgICAvLyBlbXB0eSBwYXR0ZXJuIG9yIHBhdGggLT4gbm90IGV2YWx1YXRlZCwgdHJ1ZSBvciBmYWxzZT9cclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgbGV0IHJlZ2V4ID0gdGhpcy5yZWdleEJ5UGF0dGVybi5nZXQocGF0dGVybik7XHJcbiAgICBpZiAocmVnZXggPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAvLyBlc2NhcGUgcmVnZXggY2hhcmFjdGVycyBleGNlcHQgZm9yID8sICosICoqXHJcbiAgICAgIGxldCByZWdleFBhdHRlcm4gPSBwYXR0ZXJuLnJlcGxhY2UodGhpcy5yZWdleFJlZ2V4Q2hhcnMsICdcXFxcJCYnKTtcclxuXHJcbiAgICAgIC8vIHJlcGxhY2UgYW50LXN0eWxlIHdpbGRjYXJkcyB3aXRoIHJlZ2V4IGVxdWl2YWxlbnRzXHJcblxyXG4gICAgICAvLyByZXBsYWNlICogd2l0aCBhIHBhdHRlcm4gdGhhdCBtYXRjaGVzIGFueSBjaGFyYWN0ZXIgZXhjZXB0IGZvciAnLidcclxuICAgICAgcmVnZXhQYXR0ZXJuID0gcmVnZXhQYXR0ZXJuLnJlcGxhY2UodGhpcy5yZWdleEFzdGVyaXNrSW5UaGVNaWRkbGUsICckMVteLl0qJDInKTsgLy8gbm90KiAqIG5vdCpcclxuICAgICAgcmVnZXhQYXR0ZXJuID0gcmVnZXhQYXR0ZXJuLnJlcGxhY2UodGhpcy5yZWdleEFzdGVyaXNrSW5UaGVFbmQsICckMVteLl0qJyk7IC8vIG5vdCogKiBFT0xcclxuICAgICAgcmVnZXhQYXR0ZXJuID0gcmVnZXhQYXR0ZXJuLnJlcGxhY2UodGhpcy5yZWdleEFzdGVyaXNrSW5UaGVCZWdpbm5pbmcsICdbXi5dKiQxJyk7IC8vIEJPTCAqIG5vdCpcclxuICAgICAgcmVnZXhQYXR0ZXJuID0gcmVnZXhQYXR0ZXJuLnJlcGxhY2UodGhpcy5yZWdleEFzdGVyaXNrT25seSwgJ1teLl0qJyk7IC8vIEJPTCAqIEVPTFxyXG5cclxuICAgICAgLy8gcmVwbGFjZSAqKiB3aXRoIGEgcGF0dGVybiB0aGF0IG1hdGNoZXMgYW55IGNoYXJhY3RlciBpbmNsdWRpbmcgJy4nXHJcbiAgICAgIHJlZ2V4UGF0dGVybiA9IHJlZ2V4UGF0dGVybi5yZXBsYWNlKHRoaXMucmVnZXhEb3VibGVBc3Rlcmlza1dpdGhEb3QsICcuKicpOyAvLyAqKi5cclxuICAgICAgcmVnZXhQYXR0ZXJuID0gcmVnZXhQYXR0ZXJuLnJlcGxhY2UodGhpcy5yZWdleERvdWJsZUFzdGVyaXNrLCAnLionKTsgLy8gKipcclxuXHJcbiAgICAgIC8vIHJlcGxhY2UgPyB3aXRoIGEgc2luZ2xlIGNoYXJhY3RlciBtYXRjaGVyXHJcbiAgICAgIHJlZ2V4UGF0dGVybiA9IHJlZ2V4UGF0dGVybi5yZXBsYWNlKHRoaXMucmVnZXhRdWVzdGlvbk1hcmssICcuJyk7XHJcblxyXG4gICAgICAvLyBjcmVhdGUgYSBSZWdFeHAgb2JqZWN0XHJcbiAgICAgIHJlZ2V4ID0gbmV3IFJlZ0V4cCgnXicgKyByZWdleFBhdHRlcm4gKyAnJCcpO1xyXG4gICAgICB0aGlzLnJlZ2V4QnlQYXR0ZXJuLnNldChwYXR0ZXJuLCByZWdleCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gdGVzdCB0aGUgcGF0aCBhZ2FpbnN0IHRoZSBnZW5lcmF0ZWQgcmVnZXhcclxuICAgIHJldHVybiByZWdleC50ZXN0KHBhdGgpO1xyXG4gIH1cclxuXHJcbiAgYXBwbHlDb25zdHJhaW50cyh3aWRnZXRzPzogU21hcnRGb3JtV2lkZ2V0PGFueT5bXSk6IHZvaWQge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnNtYXJ0Rm9ybSEuY29tcG9uZW50TW9kZWw/LmNvbnN0cmFpbnRzICYmXHJcbiAgICAgIHRoaXMuc21hcnRGb3JtIS5jb21wb25lbnRNb2RlbD8uY29uc3RyYWludHMubGVuZ3RoXHJcbiAgICApIHtcclxuICAgICAgaWYgKCF3aWRnZXRzKSB7XHJcbiAgICAgICAgd2lkZ2V0cyA9IHRoaXMuc21hcnRGb3JtIS53aWRnZXRzO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuYXBwbHlDb21wb25lbnRDb25zdHJhaW50cyh3aWRnZXRzLCB0aGlzLnNtYXJ0Rm9ybSEuY29tcG9uZW50TW9kZWw/LmNvbnN0cmFpbnRzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFkZEVtcHR5SXRlbVRvVmFsdWVMaXN0KHdpZGdldDogU21hcnRGb3JtV2lkZ2V0PGFueT4sIGVtcHR5TGFiZWw/OiBzdHJpbmcpIHtcclxuICAgIGlmICh3aWRnZXQudHlwZSA9PSBTbWFydEZvcm1XaWRnZXRUeXBlLlNFTEVDVCkge1xyXG4gICAgICBjb25zdCBjb250YWluc0VtcHR5S2V5ID0gd2lkZ2V0LnZhbHVlTGlzdC5zb21lKCh2KSA9PiB2LmtleSA9PT0gdGhpcy5lbXB0eUtleSk7XHJcbiAgICAgIGlmICghY29udGFpbnNFbXB0eUtleSkge1xyXG4gICAgICAgIHdpZGdldC52YWx1ZUxpc3Q/LnVuc2hpZnQoe1xyXG4gICAgICAgICAga2V5OiB0aGlzLmVtcHR5S2V5LFxyXG4gICAgICAgICAgbGFiZWw6IGVtcHR5TGFiZWwgPz8gJycsXHJcbiAgICAgICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLklURU0sXHJcbiAgICAgICAgICB2YWx1ZTogJycsIC8vIHRoaXMgc2hvdWxkIGJlIHVuZGVmaW5lZCwgYnV0IEZvcm1Db250cm9sIGNhbm5vdCBiZSBudWxsLCBmcm9tIHYxNCBpdCB3aWxsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlbW92ZUVtcHR5SXRlbUZyb21WYWx1ZUxpc3Qod2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55Pikge1xyXG4gICAgaWYgKCd2YWx1ZUxpc3QnIGluIHdpZGdldCkge1xyXG4gICAgICBpZiAod2lkZ2V0LnZhbHVlTGlzdD8ubGVuZ3RoKSB7XHJcbiAgICAgICAgbGV0IGZpcnN0SXRlbSA9IHdpZGdldC52YWx1ZUxpc3RbMF07XHJcbiAgICAgICAgaWYgKGZpcnN0SXRlbT8ua2V5ID09PSB0aGlzLmVtcHR5S2V5KSB7XHJcbiAgICAgICAgICB3aWRnZXQudmFsdWVMaXN0LnNoaWZ0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmaWx0ZXJXaWRnZXRzQnlWaXNpYmlsaXR5KHdpZGdldHM6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+W10pOiBTbWFydEZvcm1XaWRnZXQ8YW55PltdIHtcclxuICAgIHJldHVybiB3aWRnZXRzLmZpbHRlcigod2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55PikgPT5cclxuICAgICAgd2lkZ2V0LmlzVmlzaWJsZSA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6IHdpZGdldC5pc1Zpc2libGVcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGdldFRyYW5zbGF0aW9uT2ZLZXkoa2V5OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuc21hcnRGb3JtIS50cmFuc2xhdGVTZXJ2aWNlIS5nZXQoa2V5KS50b1Byb21pc2UoKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHRyYW5zbGF0ZVdpZGdldHMod2lkZ2V0czogU21hcnRGb3JtV2lkZ2V0PGFueT5bXSk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgUHJvbWlzZS5hbGwoXHJcbiAgICAgIHdpZGdldHMubWFwKGFzeW5jICh3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+KSA9PiB7XHJcbiAgICAgICAgaWYgKHdpZGdldC50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLllPVVRVQkVfUExBWUVSKSByZXR1cm47XHJcbiAgICAgICAgaWYgKHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLkNPTlRBSU5FUikge1xyXG4gICAgICAgICAgaWYgKCF3aWRnZXQub3JpZ2luYWxMYWJlbCkge1xyXG4gICAgICAgICAgICB3aWRnZXQub3JpZ2luYWxMYWJlbCA9IGAke3dpZGdldC5sYWJlbH1gO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy8gIExhYmVsXHJcbiAgICAgICAgICB3aWRnZXQubGFiZWwgPSBhd2FpdCB0aGlzLmdldFRyYW5zbGF0aW9uT2ZLZXkod2lkZ2V0Lm9yaWdpbmFsTGFiZWwpO1xyXG5cclxuICAgICAgICAgIC8vIFBsYWNlaG9sZGVyXHJcbiAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICh3aWRnZXQudHlwZSA9PT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5URVhUX0ZJRUxEIHx8XHJcbiAgICAgICAgICAgICAgd2lkZ2V0LnR5cGUgPT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuVEVYVF9GSUVMRF9OVU1CRVIgfHxcclxuICAgICAgICAgICAgICB3aWRnZXQudHlwZSA9PT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5URVhUX0ZJRUxEX0NISVBTIHx8XHJcbiAgICAgICAgICAgICAgd2lkZ2V0LnR5cGUgPT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuUklDSF9URVhUIHx8XHJcbiAgICAgICAgICAgICAgd2lkZ2V0LnR5cGUgPT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuVEVYVF9CT1gpICYmXHJcbiAgICAgICAgICAgIHdpZGdldC5wbGFjZWhvbGRlclxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIGlmICghd2lkZ2V0Lm9yaWdpbmFsUGxhY2Vob2xkZXIpIHtcclxuICAgICAgICAgICAgICB3aWRnZXQub3JpZ2luYWxQbGFjZWhvbGRlciA9IGAke3dpZGdldC5wbGFjZWhvbGRlcn1gO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHdpZGdldC5wbGFjZWhvbGRlciA9IGF3YWl0IHRoaXMuZ2V0VHJhbnNsYXRpb25PZktleSh3aWRnZXQub3JpZ2luYWxQbGFjZWhvbGRlcik7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy8gVmFsaWRhdG9yc1xyXG4gICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5JTkRJQ0FUT1IgJiZcclxuICAgICAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuTEFCRUwgJiZcclxuICAgICAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuSU1BR0UgJiZcclxuICAgICAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuU1ZHICYmXHJcbiAgICAgICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLkZJTEVfVVBMT0FERVIgJiZcclxuICAgICAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuRElWSURFUiAmJlxyXG4gICAgICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5CVVRUT04gJiZcclxuICAgICAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQ09NUE9ORU5UICYmXHJcbiAgICAgICAgICAgIHdpZGdldC52YWxpZGF0b3JzXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgd2lkZ2V0LnZhbGlkYXRvcnMgPSBhd2FpdCBQcm9taXNlLmFsbChcclxuICAgICAgICAgICAgICB3aWRnZXQudmFsaWRhdG9ycy5tYXAoYXN5bmMgKHZhbGlkYXRvcjogU21hcnRWYWxpZGF0b3IpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICghdmFsaWRhdG9yLm9yaWdpbmFsRXJyb3JNZXNzYWdlKSB7XHJcbiAgICAgICAgICAgICAgICAgIHZhbGlkYXRvci5vcmlnaW5hbEVycm9yTWVzc2FnZSA9IGAke3ZhbGlkYXRvci5lcnJvck1lc3NhZ2V9YDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHZhbGlkYXRvci5lcnJvck1lc3NhZ2UgPSBhd2FpdCB0aGlzLmdldFRyYW5zbGF0aW9uT2ZLZXkoXHJcbiAgICAgICAgICAgICAgICAgIHZhbGlkYXRvci5vcmlnaW5hbEVycm9yTWVzc2FnZVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB2YWxpZGF0b3I7XHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIC8vIEluZGljYXRvclxyXG4gICAgICAgICAgaWYgKHdpZGdldC50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLklORElDQVRPUiAmJiB3aWRnZXQuaW5kaWNhdG9yKSB7XHJcbiAgICAgICAgICAgIGlmICghd2lkZ2V0LmluZGljYXRvci5vcmlnaW5hbEluZGljYXRvclN0YXR1c0xhYmVscykge1xyXG4gICAgICAgICAgICAgIHdpZGdldC5pbmRpY2F0b3Iub3JpZ2luYWxJbmRpY2F0b3JTdGF0dXNMYWJlbHMgPVxyXG4gICAgICAgICAgICAgICAgd2lkZ2V0LmluZGljYXRvci5pbmRpY2F0b3JTdGF0dXNMYWJlbHMubWFwKChsYWJlbDogc3RyaW5nKSA9PiBsYWJlbCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgd2lkZ2V0LmluZGljYXRvci5pbmRpY2F0b3JTdGF0dXNMYWJlbHMgPSBhd2FpdCBQcm9taXNlLmFsbChcclxuICAgICAgICAgICAgICB3aWRnZXQuaW5kaWNhdG9yLmluZGljYXRvclN0YXR1c0xhYmVscy5tYXAoXHJcbiAgICAgICAgICAgICAgICBhc3luYyAobGFiZWw6IHN0cmluZywgaW5kZXg6IG51bWJlcikgPT5cclxuICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5nZXRUcmFuc2xhdGlvbk9mS2V5KFxyXG4gICAgICAgICAgICAgICAgICAgIHdpZGdldC5pbmRpY2F0b3IhLm9yaWdpbmFsSW5kaWNhdG9yU3RhdHVzTGFiZWxzIVtpbmRleF1cclxuICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICh3aWRnZXQudHlwZSA9PT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5URVhUX0ZJRUxEX0NISVBTIHx8XHJcbiAgICAgICAgICAgICAgd2lkZ2V0LnR5cGUgPT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuU0VMRUNUIHx8XHJcbiAgICAgICAgICAgICAgd2lkZ2V0LnR5cGUgPT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuU0VMRUNUX01VTFRJUExFIHx8XHJcbiAgICAgICAgICAgICAgd2lkZ2V0LnR5cGUgPT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQ0hFQ0tfQk9YIHx8XHJcbiAgICAgICAgICAgICAgd2lkZ2V0LnR5cGUgPT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQ0hFQ0tfQk9YXzIgfHxcclxuICAgICAgICAgICAgICB3aWRnZXQudHlwZSA9PT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5SQURJT19CVVRUT04pICYmXHJcbiAgICAgICAgICAgIHdpZGdldC52YWx1ZUxpc3RcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVdpZGdldEl0ZW1zKHdpZGdldC52YWx1ZUxpc3QpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVdpZGdldHMod2lkZ2V0LnZhbHVlTGlzdCEpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBhc3luYyB0cmFuc2xhdGVXaWRnZXRJdGVtcyh3aWRnZXRzOiBTbWFydEl0ZW1zPGFueT5bXSk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgUHJvbWlzZS5hbGwoXHJcbiAgICAgIHdpZGdldHMubWFwKGFzeW5jICh3aWRnZXQ6IFNtYXJ0SXRlbXM8YW55PikgPT4ge1xyXG4gICAgICAgIGlmICghd2lkZ2V0Lm9yaWdpbmFsTGFiZWwpIHtcclxuICAgICAgICAgIHdpZGdldC5vcmlnaW5hbExhYmVsID0gYCR7d2lkZ2V0LmxhYmVsfWA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vICBMYWJlbFxyXG4gICAgICAgIHdpZGdldC5sYWJlbCA9IGF3YWl0IHRoaXMuZ2V0VHJhbnNsYXRpb25PZktleSh3aWRnZXQub3JpZ2luYWxMYWJlbCk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxufVxyXG4iXX0=
658
+ }], ctorParameters: () => [{ type: i1.NamedValidatorService, decorators: [{
659
+ type: Optional
660
+ }] }] });
661
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRmb3JtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1mb3JtL3NlcnZpY2VzL3NtYXJ0Zm9ybS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRixPQUFPLEVBQXVCLDJCQUEyQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRy9GLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDOzs7QUFPL0UsTUFBTSxPQUFPLGdCQUFnQjtJQVMzQixZQUFnQyxpQkFBeUM7UUFBekMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUF3QjtRQVJ4RCxhQUFRLEdBQVcsV0FBVyxDQUFDO1FBQ2hELHFCQUFnQixHQUFHLGdCQUFnQixDQUFDO1FBQ3BDLFVBQUssR0FBUSxFQUFFLENBQUM7UUFtbEJDLG9CQUFlLEdBQUcsSUFBSSxNQUFNLENBQUMsaUNBQWlDLENBQUMsQ0FBQztRQUNoRSw2QkFBd0IsR0FBRyxJQUFJLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQzNELDBCQUFxQixHQUFHLElBQUksTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2xELGdDQUEyQixHQUFHLElBQUksTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3hELHNCQUFpQixHQUFHLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3hDLCtCQUEwQixHQUFHLElBQUksTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3JELHdCQUFtQixHQUFHLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxD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QVksQ0FBQztvQkFDbkQsTUFBTSxDQUFDLFNBQVMsRUFDaEIsQ0FBQztvQkFDRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUM5QyxDQUFDO1lBQ0gsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsU0FBVSxDQUFDLENBQUM7WUFDM0MsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQsS0FBSyxDQUFDLG9CQUFvQixDQUFDLE9BQTBCO1FBQ25ELE9BQU8sQ0FBQyxHQUFHLENBQ1QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsTUFBdUIsRUFBRSxFQUFFO1lBQzVDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQzFCLE1BQU0sQ0FBQyxhQUFhLEdBQUcsR0FBRyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDM0MsQ0FBQztZQUNELFNBQVM7WUFDVCxNQUFNLENBQUMsS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN0RSxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzsrR0Evd0JVLGdCQUFnQjttSEFBaEIsZ0JBQWdCOzs0RkFBaEIsZ0JBQWdCO2tCQUQ1QixVQUFVOzswQkFVSSxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVudHlwZWRGb3JtQ29udHJvbCwgVW50eXBlZEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFNlbGVjdGlvbkRlZmluaXRpb24sIFNlbGVjdGlvbkRlZmluaXRpb25UeXBlRW51bSwgU21hcnRGb3JtV2lkZ2V0VHlwZSB9IGZyb20gJy4uL2FwaSc7XG5pbXBvcnQgeyBTbWFydEZvcm1XaWRnZXQsIFNtYXJ0SXRlbSwgU21hcnRJdGVtcywgU21hcnRTZWxlY3QgfSBmcm9tICcuLi9zbWFydGZvcm0uZm9ybS1tb2RlbCc7XG5pbXBvcnQgeyBTbWFydEZvcm0sIFNtYXJ0Rm9ybUNvbXBvbmVudENvbnN0cmFpbnQsIFNtYXJ0VmFsaWRhdG9yLCBWYWx1ZSB9IGZyb20gJy4uL3NtYXJ0Zm9ybS5tb2RlbCc7XG5pbXBvcnQgeyBDb21wb25lbnRMaWJyYXJ5IH0gZnJvbSAnLi4vLi4vdmlldy1jb250ZXh0L3V0aWxpdHkvY29tcG9uZW50TGlicmFyeSc7XG5pbXBvcnQge1xuICBOYW1lZFZhbGlkYXRvclNlcnZpY2UsXG4gIFZhbGlkYXRlZFdpZGdldCxcbn0gZnJvbSAnLi4vLi4vc21hcnQtdmFsaWRhdGlvbi9uYW1lZC12YWxpZGF0b3Iuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTbWFydEZvcm1TZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBlbXB0eUtleTogc3RyaW5nID0gJ2UjbSVwQHQqeSc7XG4gIGNvbXBvbmVudExpYnJhcnkgPSBDb21wb25lbnRMaWJyYXJ5O1xuICBncm91cDogYW55ID0ge307XG5cbiAgZm9ybUdyb3VwPzogVW50eXBlZEZvcm1Hcm91cDtcblxuICBzbWFydEZvcm0/OiBTbWFydEZvcm07XG5cbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgcHJpdmF0ZSB2YWxpZGF0b3JQcm92aWRlcj86IE5hbWVkVmFsaWRhdG9yU2VydmljZSkge31cblxuICBnZXRTbWFydEZvcm1XaWRnZXRCeUtleShrZXk6IHN0cmluZyk6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5maW5kU21hcnRGb3JtV2lkZ2V0QnlLZXkodGhpcy5zbWFydEZvcm0/LndpZGdldHMhLCBrZXkpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb2xsZWN0S2V5c0Zyb21TbWFydEZvcm0oXG4gICAgd2lkZ2V0czogU21hcnRGb3JtV2lkZ2V0PGFueT5bXSB8IFNtYXJ0SXRlbXM8YW55PltdLFxuICAgIGtleXM6IHN0cmluZ1tdXG4gICk6IHN0cmluZ1tdIHtcbiAgICB3aWRnZXRzLmZvckVhY2goKHcpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgdy50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLkNPTlRBSU5FUiAmJlxuICAgICAgICB3LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuTEFCRUwgJiZcbiAgICAgICAgdy50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLkNIRUNLX0JPWF8yICYmXG4gICAgICAgIHcudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5ZT1VUVUJFX1BMQVlFUlxuICAgICAgKSB7XG4gICAgICAgIGtleXMucHVzaCh3LmtleSk7XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIHcudHlwZSA9PT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5URVhUX0ZJRUxEX0NISVBTIHx8XG4gICAgICAgIHcudHlwZSA9PT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5TRUxFQ1QgfHxcbiAgICAgICAgdy50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLlNFTEVDVF9NVUxUSVBMRSB8fFxuICAgICAgICB3LnR5cGUgPT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQ0hFQ0tfQk9YIHx8XG4gICAgICAgIHcudHlwZSA9PT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5SQURJT19CVVRUT04gfHxcbiAgICAgICAgdy50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLkNPTlRBSU5FUlxuICAgICAgKSB7XG4gICAgICAgIGlmICh3LnZhbHVlTGlzdD8ubGVuZ3RoKSB7XG4gICAgICAgICAga2V5cyA9IHRoaXMuY29sbGVjdEtleXNGcm9tU21hcnRGb3JtKHcudmFsdWVMaXN0LCBrZXlzKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh3LnR5cGUgPT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQ0hFQ0tfQk9YXzIpIHtcbiAgICAgICAgaWYgKHcudmFsdWVMaXN0Py5sZW5ndGgpIHtcbiAgICAgICAgICBsZXQgY2hpbGRyZW5LZXlzID0gdGhpcy5jb2xsZWN0S2V5c0Zyb21TbWFydEZvcm0ody52YWx1ZUxpc3QsIFtdKTtcbiAgICAgICAgICBjaGlsZHJlbktleXMgPSBjaGlsZHJlbktleXNcbiAgICAgICAgICAgIC5maWx0ZXIoKGtleTogc3RyaW5nKSA9PiBrZXkgIT09IHcua2V5KVxuICAgICAgICAgICAgLmZsYXRNYXAoKGtleTogc3RyaW5nKSA9PiBgJHt3LmtleX0uJHtrZXl9YCk7XG5cbiAgICAgICAgICBrZXlzLnB1c2goLi4uY2hpbGRyZW5LZXlzKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGtleXM7XG4gIH1cblxuICBwcml2YXRlIGZpbmRTbWFydEZvcm1XaWRnZXRCeUtleShcbiAgICB3aWRnZXRzOiBTbWFydEZvcm1XaWRnZXQ8YW55PltdLFxuICAgIGtleTogc3RyaW5nXG4gICk6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICBsZXQgd2lkZ2V0Rm91bmRCeUtleTogU21hcnRGb3JtV2lkZ2V0PGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBmb3IgKGxldCB3IG9mIHdpZGdldHMpIHtcbiAgICAgIGlmICh3LmtleSA9PT0ga2V5KSB7XG4gICAgICAgIHJldHVybiB3O1xuICAgICAgfSBlbHNlIGlmICh3LnR5cGUgPT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQ09OVEFJTkVSICYmIHcudmFsdWVMaXN0Py5sZW5ndGgpIHtcbiAgICAgICAgd2lkZ2V0Rm91bmRCeUtleSA9IHRoaXMuZmluZFNtYXJ0Rm9ybVdpZGdldEJ5S2V5KHcudmFsdWVMaXN0LCBrZXkpO1xuICAgICAgICBpZiAod2lkZ2V0Rm91bmRCeUtleSkge1xuICAgICAgICAgIHJldHVybiB3aWRnZXRGb3VuZEJ5S2V5O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB3aWRnZXRGb3VuZEJ5S2V5O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRWYWx1ZURlZXBseShtb2RlbDogYW55LCBrZXk6IHN0cmluZyk6IGFueSB7XG4gICAgbGV0IHNwbGl0dGVkS2V5ID0ga2V5LnNwbGl0KCcuJyk7XG4gICAgbGV0IHZhbHVlOiBhbnk7XG5cbiAgICBzcGxpdHRlZEtleS5mb3JFYWNoKChrOiBzdHJpbmcpID0+IHtcbiAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgdmFsdWUgPSBtb2RlbFtrXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICB2YWx1ZVtrXSA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgdmFsdWVba10gPT09IG51bGwgfHxcbiAgICAgICAgICAoIXZhbHVlICYmIHR5cGVvZiB2YWx1ZVtrXSAhPT0gJ2Jvb2xlYW4nKVxuICAgICAgICApIHtcbiAgICAgICAgICB2YWx1ZSA9ICcnO1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YWx1ZSA9IHZhbHVlW2tdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRWYWx1ZURlZXBseShtb2RlbDogYW55LCBrZXk6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQge1xuICAgIGxldCBzcGxpdHRlZEtleXMgPSBrZXkuc3BsaXQoJy4nKTtcblxuICAgIGxldCBkZWVwTW9kZWw6IGFueVtdID0gW21vZGVsXTtcbiAgICBsZXQgdGVtcE1vZGVsOiBhbnk7XG5cbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgc3BsaXR0ZWRLZXlzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgdGVtcE1vZGVsID0gZGVlcE1vZGVsW2luZGV4XTtcblxuICAgICAgaWYgKFxuICAgICAgICB0eXBlb2YgdGVtcE1vZGVsW3NwbGl0dGVkS2V5c1tpbmRleF1dICE9PSAnc3RyaW5nJyAmJlxuICAgICAgICB0eXBlb2YgdGVtcE1vZGVsW3NwbGl0dGVkS2V5c1tpbmRleF1dICE9PSAnYm9vbGVhbicgJiZcbiAgICAgICAgdHlwZW9mIHRlbXBNb2RlbFtzcGxpdHRlZEtleXNbaW5kZXhdXSAhPT0gJ251bWJlcicgJiZcbiAgICAgICAgdGVtcE1vZGVsW3NwbGl0dGVkS2V5c1tpbmRleF1dICE9PSB1bmRlZmluZWRcbiAgICAgICkge1xuICAgICAgICBkZWVwTW9kZWwucHVzaCh0ZW1wTW9kZWxbc3BsaXR0ZWRLZXlzW2luZGV4XV0pO1xuICAgICAgfVxuXG4gICAgICBpZiAoaW5kZXggPT09IHNwbGl0dGVkS2V5cy5sZW5ndGggLSAxKSB7XG4gICAgICAgIGxldCBvbGRWYWx1ZSA9IHRlbXBNb2RlbFtzcGxpdHRlZEtleXNbaW5kZXhdXTtcbiAgICAgICAgLy8gaWYgKHZhbHVlID09PSAnJyAmJiAob2xkVmFsdWUgPT09IG51bGwgfHwgb2xkVmFsdWUgPT09IHVuZGVmaW5lZCkgdGhlbiBkb24ndCBjaGFuZ2UgdmFsdWUuXG4gICAgICAgIGlmICh2YWx1ZSAhPT0gJycgfHwgKG9sZFZhbHVlICE9PSBudWxsICYmIG9sZFZhbHVlICE9PSB1bmRlZmluZWQpKSB7XG4gICAgICAgICAgdGVtcE1vZGVsW3NwbGl0dGVkS2V5c1tpbmRleF1dID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0UHJvcGVydHlOYW1lc0RlZXBseShlbGVtZW50OiBhbnkpOiBzdHJpbmdbXSB7XG4gICAgbGV0IHByb3BlcnRpZXMgPSBPYmplY3Qua2V5cyhlbGVtZW50KTtcbiAgICBwcm9wZXJ0aWVzLmZvckVhY2goKHByb3BlcnR5KSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgIHR5cGVvZiBlbGVtZW50W3Byb3BlcnR5XSA9PT0gJ3N0cmluZycgfHxcbiAgICAgICAgdHlwZW9mIGVsZW1lbnRbcHJvcGVydHldID09PSAnYm9vbGVhbicgfHxcbiAgICAgICAgdHlwZW9mIGVsZW1lbnRbcHJvcGVydHldID09PSAnbnVtYmVyJyB8fFxuICAgICAgICBlbGVtZW50W3Byb3BlcnR5XSA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgIGVsZW1lbnRbcHJvcGVydHldID09PSBudWxsIHx8XG4gICAgICAgICFlbGVtZW50W3Byb3BlcnR5XSB8fFxuICAgICAgICAhZWxlbWVudFxuICAgICAgKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGxldCBpbm5lclByb3BlcnRpZXMgPSB0aGlzLmdldFByb3BlcnR5TmFtZXNEZWVwbHkoZWxlbWVudFtwcm9wZXJ0eV0pO1xuICAgICAgaW5uZXJQcm9wZXJ0aWVzID0gaW5uZXJQcm9wZXJ0aWVzLm1hcChcbiAgICAgICAgKGlubmVyUHJvcGVydHk6IHN0cmluZykgPT4gYCR7cHJvcGVydHl9LiR7aW5uZXJQcm9wZXJ0eX1gXG4gICAgICApO1xuXG4gICAgICBwcm9wZXJ0aWVzLnB1c2goLi4uaW5uZXJQcm9wZXJ0aWVzKTtcbiAgICB9KTtcbiAgICByZXR1cm4gcHJvcGVydGllcztcbiAgfVxuXG4gIHNldFZhbHVlc0Zyb21Nb2RlbCh3aWRnZXRzPzogU21hcnRGb3JtV2lkZ2V0PGFueT5bXSwgY29tcExpYj86IENvbXBvbmVudExpYnJhcnkpOiB2b2lkIHtcbiAgICBjb25zdCBzbWFydEZvcm0gPSB0aGlzLnNtYXJ0Rm9ybSE7XG4gICAgY29uc3QgZGF0YSA9IHNtYXJ0Rm9ybS5jb21wb25lbnRNb2RlbD8uZGF0YTtcbiAgICBpZiAoIWRhdGEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXdpZGdldHMpIHtcbiAgICAgIHdpZGdldHMgPSBzbWFydEZvcm0ud2lkZ2V0cztcbiAgICB9XG4gICAgY29uc3Qga2V5czogc3RyaW5nW10gPSB0aGlzLmNvbGxlY3RLZXlzRnJvbVNtYXJ0Rm9ybSh3aWRnZXRzLCBbXSk7XG5cbiAgICBsZXQgd2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55PiB8IHVuZGVmaW5lZDtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiB0aGlzLmdldFByb3BlcnR5TmFtZXNEZWVwbHkoZGF0YSkpIHtcbiAgICAgIGlmIChrZXlzLmluY2x1ZGVzKGtleSkpIHtcbiAgICAgICAgd2lkZ2V0ID0gdGhpcy5maW5kU21hcnRGb3JtV2lkZ2V0QnlLZXkod2lkZ2V0cywga2V5KTtcbiAgICAgICAgaWYgKHdpZGdldCkge1xuICAgICAgICAgIGxldCB2YWx1ZSA9IHRoaXMuZ2V0VmFsdWVEZWVwbHkoZGF0YSwga2V5KTtcbiAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicgJiYgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuVE9HR0xFKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IGAke3ZhbHVlfWA7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChjb21wTGliID09PSB0aGlzLmNvbXBvbmVudExpYnJhcnkuUFJJTUVORykge1xuICAgICAgICAgICAgaWYgKHdpZGdldC50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLkRBVEVfUElDS0VSKSB7XG4gICAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHdpZGdldC52YWx1ZSA9IG5ldyBEYXRlKHZhbHVlKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5JTkRJQ0FUT1IgJiZcbiAgICAgICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLkxBQkVMICYmXG4gICAgICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5DT05UQUlORVIgJiZcbiAgICAgICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLkZJTEVfVVBMT0FERVIgJiZcbiAgICAgICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLkRJVklERVIgJiZcbiAgICAgICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLkJVVFRPTiAmJlxuICAgICAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQ09NUE9ORU5UICYmXG4gICAgICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5ZT1VUVUJFX1BMQVlFUlxuICAgICAgICAgICkge1xuICAgICAgICAgICAgd2lkZ2V0LnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICBpZiAod2lkZ2V0LnNob3dMYWJlbCA9PT0gdW5kZWZpbmVkICYmIHNtYXJ0Rm9ybS5zaG93TGFiZWwpIHtcbiAgICAgICAgICAgICAgd2lkZ2V0LnNob3dMYWJlbCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5jb3B5RnJvbVZhbHVlU2V0VG9WYWx1ZXNMaXN0KHdpZGdldCwgc21hcnRGb3JtLmNvbXBvbmVudE1vZGVsLnZhbHVlU2V0cyk7XG5cbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICB3aWRnZXQgJiZcbiAgICAgICAgICAgIHdpZGdldC50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLkNIRUNLX0JPWCAmJlxuICAgICAgICAgICAgd2lkZ2V0LnZhbHVlTGlzdC5sZW5ndGggPT09IDFcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHdpZGdldC52YWx1ZUxpc3QgPSB3aWRnZXQudmFsdWVMaXN0Lm1hcCgoaXRlbTogU21hcnRJdGVtPGFueT4pID0+IHtcbiAgICAgICAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5nZXRWYWx1ZURlZXBseShkYXRhLCBrZXkpO1xuICAgICAgICAgICAgICBpdGVtLnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIEluIGNhc2Ugb2YgQ2hlY2tCb3gyXG4gICAgICAgICAgbGV0IHNwbGl0dGVkS2V5cyA9IGtleS5zcGxpdCgnLicpO1xuICAgICAgICAgIHNwbGl0dGVkS2V5cy5zcGxpY2Uoc3BsaXR0ZWRLZXlzLmxlbmd0aCAtIDEsIDEpO1xuICAgICAgICAgIHdpZGdldCA9IHRoaXMuZmluZFNtYXJ0Rm9ybVdpZGdldEJ5S2V5KHdpZGdldHMsIHNwbGl0dGVkS2V5cy5qb2luKCcuJykpO1xuICAgICAgICAgIGlmICh3aWRnZXQgJiYgd2lkZ2V0LnR5cGUgPT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQ0hFQ0tfQk9YXzIpIHtcbiAgICAgICAgICAgIHRoaXMuY29weUZyb21WYWx1ZVNldFRvVmFsdWVzTGlzdCh3aWRnZXQsIHNtYXJ0Rm9ybS5jb21wb25lbnRNb2RlbC52YWx1ZVNldHMpO1xuICAgICAgICAgICAgaWYgKHdpZGdldC52YWx1ZUxpc3QpIHtcbiAgICAgICAgICAgICAgd2lkZ2V0LnZhbHVlTGlzdCA9IHdpZGdldC52YWx1ZUxpc3QubWFwKChpdGVtOiBTbWFydEl0ZW08YW55PikgPT4ge1xuICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IHRoaXMuZ2V0VmFsdWVEZWVwbHkoZGF0YSwgYCR7d2lkZ2V0Py5rZXl9LiR7aXRlbS5rZXl9YCk7XG4gICAgICAgICAgICAgICAgaXRlbS52YWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNvcHlGcm9tVmFsdWVTZXRUb1ZhbHVlc0xpc3Qod2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55PiwgdmFsdWVTZXRzOiBhbnkpIHtcbiAgICBpZiAoXG4gICAgICB3aWRnZXQudHlwZSA9PT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5TRUxFQ1QgfHxcbiAgICAgIHdpZGdldC50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLlNFTEVDVF9NVUxUSVBMRSB8fFxuICAgICAgd2lkZ2V0LnR5cGUgPT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuUkFESU9fQlVUVE9OIHx8XG4gICAgICB3aWRnZXQudHlwZSA9PT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5DSEVDS19CT1ggfHxcbiAgICAgIHdpZGdldC50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLkNIRUNLX0JPWF8yIHx8XG4gICAgICB3aWRnZXQudHlwZSA9PT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5URVhUX0ZJRUxEXG4gICAgKSB7XG4gICAgICBpZiAod2lkZ2V0LnNlbGVjdGlvbiAmJiB2YWx1ZVNldHMpIHtcbiAgICAgICAgbGV0IHZhbHVlU2V0ID0gdmFsdWVTZXRzW3dpZGdldC5zZWxlY3Rpb24udmFsdWVTZXROYW1lXTtcbiAgICAgICAgaWYgKCF2YWx1ZVNldCkge1xuICAgICAgICAgIGNvbnNvbGUud2FybigndmFsdWVTZXQgbm90IGZvdW5kJywgd2lkZ2V0LnNlbGVjdGlvbi52YWx1ZVNldE5hbWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxldCB2YWx1ZVNldERhdGEgPSB2YWx1ZVNldC52YWx1ZVNldERhdGE7XG4gICAgICAgICAgbGV0IHZhbHVlcyA9IHZhbHVlU2V0RGF0YS52YWx1ZXM7XG4gICAgICAgICAgbGV0IGRpc3BsYXlQcm9wZXJ0eSA9XG4gICAgICAgICAgICAod2lkZ2V0IGFzIFNtYXJ0U2VsZWN0PGFueT4pLnNlbGVjdGlvbj8uZGlzcGxheVByb3BlcnR5ID8/ICdkaXNwbGF5VmFsdWUnO1xuICAgICAgICAgIC8vIGNoZWNrIGlzIGRpc3BsYXlQcm9wZXJ0eSBleGlzdHMsIGZhbGxiYWNrIGZvciBjb21tb24gZGlzcGxheSBwcm9wZXJ0aWVzXG4gICAgICAgICAgaWYgKCF0aGlzLmNoZWNrUHJvcGVydHkodmFsdWVzLCBkaXNwbGF5UHJvcGVydHkpKSB7XG4gICAgICAgICAgICBkaXNwbGF5UHJvcGVydHkgPSAnbmFtZSc7IC8vIEdlbmVyaWNWYWx1ZS5uYW1lXG4gICAgICAgICAgICBpZiAoIXRoaXMuY2hlY2tQcm9wZXJ0eSh2YWx1ZXMsIGRpc3BsYXlQcm9wZXJ0eSkpIHtcbiAgICAgICAgICAgICAgZGlzcGxheVByb3BlcnR5ID0gJ2Rpc3BsYXlWYWx1ZSc7IC8vIFZhbHVlLmRpc3BsYXlWYWx1ZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICB3aWRnZXQuc2VsZWN0aW9uLnR5cGUgPT09IFNlbGVjdGlvbkRlZmluaXRpb25UeXBlRW51bS5QUk9QRVJUWSAmJlxuICAgICAgICAgICAgIXdpZGdldC5zZWxlY3Rpb24ubWFwcGluZy5sZW5ndGhcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGxldCBrZXlQcm9wZXJ0eSA9IHZhbHVlU2V0RGF0YS5rZXlQcm9wZXJ0eSA/PyAnb2JqZWN0VXJpJztcbiAgICAgICAgICAgIGlmICghdGhpcy5jaGVja1Byb3BlcnR5KHZhbHVlcywga2V5UHJvcGVydHkpKSB7XG4gICAgICAgICAgICAgIGtleVByb3BlcnR5ID0gJ3VyaSc7IC8vIEdlbmVyaWNWYWx1ZS51cmlcbiAgICAgICAgICAgICAgaWYgKCF0aGlzLmNoZWNrUHJvcGVydHkodmFsdWVzLCBrZXlQcm9wZXJ0eSkpIHtcbiAgICAgICAgICAgICAgICBrZXlQcm9wZXJ0eSA9ICdvYmplY3RVcmknOyAvLyBWYWx1ZS5vYmplY3RVcmlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgd2lkZ2V0LnZhbHVlTGlzdCA9IHZhbHVlcy5tYXAoKHZhbHVlOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBrZXk6IHZhbHVlW2tleVByb3BlcnR5XSxcbiAgICAgICAgICAgICAgICBsYWJlbDogdmFsdWVbZGlzcGxheVByb3BlcnR5XSxcbiAgICAgICAgICAgICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLklURU0sXG4gICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlW2tleVByb3BlcnR5XSxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5hZGRFbXB0eUl0ZW1Ub1ZhbHVlTGlzdCh3aWRnZXQsIHdpZGdldC5zZWxlY3Rpb24uZW1wdHlMYWJlbCk7XG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIHdpZGdldC5zZWxlY3Rpb24udHlwZSA9PT0gU2VsZWN0aW9uRGVmaW5pdGlvblR5cGVFbnVtLk9CSkVDVCAmJlxuICAgICAgICAgICAgIXdpZGdldC5zZWxlY3Rpb24ubWFwcGluZy5sZW5ndGhcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHdpZGdldC52YWx1ZUxpc3QgPSB2YWx1ZXMubWFwKCh2YWx1ZTogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAga2V5OiBgJHtpbmRleH1gLFxuICAgICAgICAgICAgICAgIGxhYmVsOiB2YWx1ZVtkaXNwbGF5UHJvcGVydHldLFxuICAgICAgICAgICAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuSVRFTSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuYWRkRW1wdHlJdGVtVG9WYWx1ZUxpc3Qod2lkZ2V0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNoZWNrUHJvcGVydHkodmFsdWVzOiBvYmplY3RbXSwgcHJvcGVydHk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICghdmFsdWVzPy5sZW5ndGgpIHtcbiAgICAgIC8vIG5vIHNhbXBsZSBkYXRhLCBhc3N1bWUgZXhpc3RhbmNlXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHByb3BlcnR5IGluIHZhbHVlc1swXTtcbiAgfVxuXG4gIHRvRm9ybUdyb3VwKGNvbXBMaWI/OiBDb21wb25lbnRMaWJyYXJ5KTogVW50eXBlZEZvcm1Hcm91cCB7XG4gICAgdGhpcy5jcmVhdGVGb3JtQ29udHJvbHModGhpcy5zbWFydEZvcm0hLndpZGdldHMsIGNvbXBMaWIhKTtcblxuICAgIGlmICh0aGlzLmZvcm1Hcm91cCkge1xuICAgICAgdGhpcy5mb3JtR3JvdXAuY29udHJvbHMgPSB0aGlzLmdyb3VwO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZvcm1Hcm91cCA9IG5ldyBVbnR5cGVkRm9ybUdyb3VwKHRoaXMuZ3JvdXApO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnNtYXJ0Rm9ybSEudmFsaWRhdG9ycyAmJiB0aGlzLnNtYXJ0Rm9ybSEudmFsaWRhdG9ycy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuZm9ybUdyb3VwLnNldFZhbGlkYXRvcnMoXG4gICAgICAgIHRoaXMuc21hcnRGb3JtIS52YWxpZGF0b3JzLm1hcCgodmFsaWRhdG9yOiBTbWFydFZhbGlkYXRvcikgPT4ge1xuICAgICAgICAgIHJldHVybiB2YWxpZGF0b3IudmFsaWRhdG9yO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5mb3JtR3JvdXA7XG4gIH1cblxuICBjcmVhdGVGb3JtQ29udHJvbHMoXG4gICAgd2lkZ2V0czogU21hcnRGb3JtV2lkZ2V0PGFueT5bXSB8IFNtYXJ0SXRlbTxhbnk+W10sXG4gICAgY29tcExpYjogQ29tcG9uZW50TGlicmFyeSxcbiAgICBwYXJlbnRLZXk/OiBzdHJpbmdcbiAgKTogdm9pZCB7XG4gICAgd2lkZ2V0cy5tYXAoKHdpZGdldCkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5JTkRJQ0FUT1IgJiZcbiAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuTEFCRUwgJiZcbiAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQ09OVEFJTkVSICYmXG4gICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLkZJTEVfVVBMT0FERVIgJiZcbiAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuSU1BR0UgJiZcbiAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuU1ZHICYmXG4gICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLkRJVklERVIgJiZcbiAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQlVUVE9OICYmXG4gICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLkNIRUNLX0JPWF8yICYmXG4gICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLklURU0gJiZcbiAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQ09NUE9ORU5UICYmXG4gICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLk1BVFJJWCAmJlxuICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5ZT1VUVUJFX1BMQVlFUlxuICAgICAgKSB7XG4gICAgICAgIGlmIChjb21wTGliISA9PT0gdGhpcy5jb21wb25lbnRMaWJyYXJ5LlBSSU1FTkcpIHtcbiAgICAgICAgICBpZiAod2lkZ2V0LnR5cGUgPT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuREFURV9QSUNLRVIpIHtcbiAgICAgICAgICAgIGlmICh3aWRnZXQudmFsdWUpIHtcbiAgICAgICAgICAgICAgd2lkZ2V0LnZhbHVlID0gbmV3IERhdGUod2lkZ2V0LnZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jcmVhdGVGb3JtQ29udHJvbChgJHt3aWRnZXQua2V5fWAsIHdpZGdldC52YWx1ZSwgd2lkZ2V0LmlzRGlzYWJsZWQsIHdpZGdldC52YWxpZGF0b3JzKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHdpZGdldC50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLk1BVFJJWCkge1xuICAgICAgICBpZiAod2lkZ2V0LmlzTXVsdGlwbGUpIHtcbiAgICAgICAgICBsZXQgZGF0YUtleXMgPSBPYmplY3Qua2V5cyh3aWRnZXQudmFsdWUuZGF0YSk7XG4gICAgICAgICAgbGV0IGl0ZW1LZXlzID0gd2lkZ2V0LnZhbHVlLmNvbHVtbnMubWFwKCh2YWx1ZTogVmFsdWUpID0+IHZhbHVlLmNvZGUpO1xuICAgICAgICAgIGRhdGFLZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBpdGVtS2V5cy5mb3JFYWNoKChpdGVtOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5jcmVhdGVGb3JtQ29udHJvbChcbiAgICAgICAgICAgICAgICBgJHt3aWRnZXQua2V5fS5kYXRhLiR7a2V5fS4ke2l0ZW19YCxcbiAgICAgICAgICAgICAgICB3aWRnZXQudmFsdWUuZGF0YVtrZXldW2l0ZW1dLFxuICAgICAgICAgICAgICAgIHVuZGVmaW5lZCwgLy8gVE9ETyByZWFsbHkgd2UgZG9uJ3QgcGFzcyB3aWRnZXQuaXNEaXNhYmxlZD9cbiAgICAgICAgICAgICAgICB3aWRnZXQudmFsaWRhdG9yc1xuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgT2JqZWN0LmtleXMod2lkZ2V0LnZhbHVlLmRhdGEpLm1hcCgoa2V5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlRm9ybUNvbnRyb2woXG4gICAgICAgICAgICAgIGAke3dpZGdldC5rZXl9LiR7a2V5fWAsXG4gICAgICAgICAgICAgIHdpZGdldC5pc011bHRpcGxlID8gd2lkZ2V0LnZhbHVlLmRhdGFba2V5XSA6IHdpZGdldC52YWx1ZS5kYXRhW2tleV1bMF0sXG4gICAgICAgICAgICAgIHdpZGdldC5pc0Rpc2FibGVkLFxuICAgICAgICAgICAgICB3aWRnZXQudmFsaWRhdG9yc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHdpZGdldC50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLklURU0gJiYgcGFyZW50S2V5KSB7XG4gICAgICAgIHRoaXMuY3JlYXRlRm9ybUNvbnRyb2woXG4gICAgICAgICAgYCR7cGFyZW50S2V5fS4ke3dpZGdldC5rZXl9YCxcbiAgICAgICAgICB3aWRnZXQudmFsdWUsXG4gICAgICAgICAgd2lkZ2V0LmlzRGlzYWJsZWQsXG4gICAgICAgICAgdW5kZWZpbmVkXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmICh3aWRnZXQudHlwZSA9PT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5DT05UQUlORVIgJiYgd2lkZ2V0LnZhbHVlTGlzdD8ubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuY3JlYXRlRm9ybUNvbnRyb2xzKHdpZGdldC52YWx1ZUxpc3QsIGNvbXBMaWIpO1xuICAgICAgfVxuICAgICAgaWYgKHdpZGdldC50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLkNIRUNLX0JPWF8yICYmIHdpZGdldC52YWx1ZUxpc3Q/Lmxlbmd0aCkge1xuICAgICAgICB0aGlzLmNyZWF0ZUZvcm1Db250cm9scyh3aWRnZXQudmFsdWVMaXN0LCBjb21wTGliLCB3aWRnZXQua2V5KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGlzVmFsaWRhdG9ySW5MaXN0KHZhbGlkYXRvcjogU21hcnRWYWxpZGF0b3IsIGxpc3Q/OiBTbWFydFZhbGlkYXRvcltdKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGxpc3QgIT09IHVuZGVmaW5lZCAmJiBsaXN0Lmxlbmd0aCA+IDAgJiYgbGlzdC5zb21lKCh2KSA9PiB2ID09PSB2YWxpZGF0b3IpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVGb3JtQ29udHJvbChcbiAgICBrZXk6IHN0cmluZyxcbiAgICB2YWx1ZT86IHN0cmluZyxcbiAgICBpc0Rpc2FibGVkPzogYm9vbGVhbixcbiAgICB2YWxpZGF0b3JzPzogU21hcnRWYWxpZGF0b3JbXVxuICApOiBVbnR5cGVkRm9ybUNvbnRyb2wge1xuICAgIGxldCBmb3JtQ29udHJvbDogVW50eXBlZEZvcm1Db250cm9sID0gdGhpcy5ncm91cFtrZXldO1xuICAgIGlmICghZm9ybUNvbnRyb2wpIHtcbiAgICAgIGZvcm1Db250cm9sID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCgpO1xuICAgICAgdGhpcy5ncm91cFtrZXldID0gZm9ybUNvbnRyb2w7XG4gICAgfVxuICAgIGZvcm1Db250cm9sLnNldFZhbHVlKHZhbHVlIHx8ICcnLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgZm9ybUNvbnRyb2wuY2xlYXJWYWxpZGF0b3JzKCk7XG4gICAgdmFsaWRhdG9ycz8ubWFwKCh2YWxpZGF0b3I6IFNtYXJ0VmFsaWRhdG9yKSA9PiB7XG4gICAgICBmb3JtQ29udHJvbC5hZGRWYWxpZGF0b3JzKHZhbGlkYXRvci52YWxpZGF0b3IpO1xuICAgIH0pO1xuXG4gICAgaWYgKGlzRGlzYWJsZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKGlzRGlzYWJsZWQpIHtcbiAgICAgICAgZm9ybUNvbnRyb2wuZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3JtQ29udHJvbC5lbmFibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZm9ybUNvbnRyb2w7XG4gIH1cblxuICBwcml2YXRlIGNvcHlWYWx1ZUZyb21Gb3JtVG9XaWRnZXRCZWFucyhcbiAgICB3aWRnZXRzOiBTbWFydEZvcm1XaWRnZXQ8YW55PltdLFxuICAgIGdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwXG4gICk6IHZvaWQge1xuICAgIHdpZGdldHMuZm9yRWFjaCgod2lkZ2V0KSA9PiB7XG4gICAgICBpZiAod2lkZ2V0LnR5cGUgPT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQ09OVEFJTkVSICYmIHdpZGdldC52YWx1ZUxpc3Q/Lmxlbmd0aCkge1xuICAgICAgICB0aGlzLmNvcHlWYWx1ZUZyb21Gb3JtVG9XaWRnZXRCZWFucyh3aWRnZXQudmFsdWVMaXN0LCBncm91cCk7XG4gICAgICB9IGVsc2UgaWYgKHdpZGdldC50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLk1BVFJJWCkge1xuICAgICAgICBpZiAod2lkZ2V0LmlzTXVsdGlwbGUpIHtcbiAgICAgICAgICBsZXQgZGF0YUtleXMgPSBPYmplY3Qua2V5cyh3aWRnZXQudmFsdWUuZGF0YSk7XG4gICAgICAgICAgbGV0IGl0ZW1LZXlzID0gd2lkZ2V0LnZhbHVlLmNvbHVtbnMubWFwKCh2YWx1ZTogVmFsdWUpID0+IHZhbHVlLmNvZGUpO1xuICAgICAgICAgIGRhdGFLZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBpdGVtS2V5cy5mb3JFYWNoKChpdGVtOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgd2lkZ2V0LnZhbHVlLmRhdGFba2V5XVtpdGVtXSA9IFtcbiAgICAgICAgICAgICAgICBncm91cC5jb250cm9sc1tgJHt3aWRnZXQua2V5fS5kYXRhLiR7a2V5fS4ke2l0ZW19YF0udmFsdWUsXG4gICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGxldCBkYXRha2V5cyA9IE9iamVjdC5rZXlzKHdpZGdldC52YWx1ZS5kYXRhKTtcbiAgICAgICAgICAvL01hcCBjaGVja2JveCBrZXkgLSBib29sZWFuIHZhbHVlIHRvIHN0cmluZyBrZXkgYXJyYXlcbiAgICAgICAgICBsZXQgdmFsdWVLZXlzID0gd2lkZ2V0LnZhbHVlLmNvbHVtbnMubWFwKCh2YWx1ZTogVmFsdWUpID0+IHZhbHVlLmNvZGUpO1xuICAgICAgICAgIGRhdGFrZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBsZXQgbmV3RGF0YTogYW55W10gPSBbXTtcbiAgICAgICAgICAgIHZhbHVlS2V5cy5mb3JFYWNoKCh2YWx1ZUtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgIGxldCB2YWx1ZSA9IHdpZGdldC52YWx1ZS5kYXRhW2tleV1bdmFsdWVLZXldO1xuICAgICAgICAgICAgICBpZiAodmFsdWVbMF0pIHtcbiAgICAgICAgICAgICAgICBuZXdEYXRhLnB1c2godmFsdWVLZXkpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHdpZGdldC52YWx1ZS5kYXRhW2tleV0gPSBuZXdEYXRhO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIE9iamVjdC5rZXlzKHdpZGdldC52YWx1ZS5kYXRhKS5tYXAoKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICB3aWRnZXQudmFsdWUuZGF0YVtrZXldID0gW2dyb3VwLmNvbnRyb2xzW2Ake3dpZGdldC5rZXl9LiR7a2V5fWBdLnZhbHVlXTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuSU5ESUNBVE9SICYmXG4gICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLkxBQkVMICYmXG4gICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLkNPTlRBSU5FUiAmJlxuICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5JTUFHRSAmJlxuICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5TVkcgJiZcbiAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuRklMRV9VUExPQURFUiAmJlxuICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5CVVRUT04gJiZcbiAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuRElWSURFUiAmJlxuICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5DSEVDS19CT1hfMiAmJlxuICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5DT01QT05FTlQgJiZcbiAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuWU9VVFVCRV9QTEFZRVJcbiAgICAgICkge1xuICAgICAgICB3aWRnZXQudmFsdWUgPSBncm91cC5jb250cm9sc1t3aWRnZXQua2V5XS52YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHRvU21hcnRGb3JtKGdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwKTogU21hcnRGb3JtIHtcbiAgICBpZiAodGhpcy5zbWFydEZvcm0pIHtcbiAgICAgIHRoaXMuY29weVZhbHVlRnJvbUZvcm1Ub1dpZGdldEJlYW5zKHRoaXMuc21hcnRGb3JtLndpZGdldHMsIGdyb3VwKTtcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLnNtYXJ0Rm9ybS5jb21wb25lbnRNb2RlbD8uZGF0YTtcbiAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIHRoaXMuZ2V0UHJvcGVydHlOYW1lc0RlZXBseShkYXRhKSkge1xuICAgICAgICAgIGlmIChncm91cC5jb250cm9sc1trZXldKSB7XG4gICAgICAgICAgICB0aGlzLnNldFZhbHVlRGVlcGx5KGRhdGEsIGtleSwgZ3JvdXAuY29udHJvbHNba2V5XS52YWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnNtYXJ0Rm9ybSE7XG4gIH1cblxuICBnZXRNb2RlbChncm91cDogVW50eXBlZEZvcm1Hcm91cCk6IGFueSB7XG4gICAgaWYgKCF0aGlzLnNtYXJ0Rm9ybT8uY29tcG9uZW50TW9kZWwpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gICAgbGV0IG9yaWdpbmFsTW9kZWwgPSB0aGlzLnNtYXJ0Rm9ybS5jb21wb25lbnRNb2RlbC5kYXRhO1xuICAgIGxldCBjb3B5T2ZNb2RlbCA9IHsgLi4ub3JpZ2luYWxNb2RlbCB9O1xuXG4gICAgLy8gY29weU9mTW9kZWwgc2hvdWxkIGJlIHRoZSBjdXJyZW50IG1vZGVsXG4gICAgdGhpcy5zbWFydEZvcm0uY29tcG9uZW50TW9kZWwuZGF0YSA9IGNvcHlPZk1vZGVsO1xuICAgIC8vIGNvcHkgdmFsdWUgZnJvbSBGb3JtR3JvdXAgaW50byBtb2RlbFxuICAgIHRoaXMudG9TbWFydEZvcm0oZ3JvdXApO1xuXG4gICAgbGV0IG5ld01vZGVsID0gdGhpcy5zbWFydEZvcm0uY29tcG9uZW50TW9kZWwuZGF0YTtcbiAgICB0aGlzLnNtYXJ0Rm9ybS5jb21wb25lbnRNb2RlbC5kYXRhID0gb3JpZ2luYWxNb2RlbDtcblxuICAgIHJldHVybiBuZXdNb2RlbDtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlDb21wb25lbnRDb25zdHJhaW50cyhcbiAgICB3aWRnZXRzOiBTbWFydEZvcm1XaWRnZXQ8YW55PltdLFxuICAgIGNvbnN0cmFpbnRzOiBTbWFydEZvcm1Db21wb25lbnRDb25zdHJhaW50W11cbiAgKSB7XG4gICAgd2lkZ2V0cy5mb3JFYWNoKCh3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+KSA9PiB7XG4gICAgICBsZXQgd2lkZ2V0Q29uc3RyYWludHMgPSBjb25zdHJhaW50cz8uZmlsdGVyKFxuICAgICAgICAvLyhjb25zdHJhaW50OiBTbWFydEZvcm1Db21wb25lbnRDb25zdHJhaW50KSA9PiBjb25zdHJhaW50LmRhdGFOYW1lID09PSB3aWRnZXQua2V5XG4gICAgICAgIChjb25zdHJhaW50KSA9PiB0aGlzLmFudFBhdGhNYXRjaGVyKGNvbnN0cmFpbnQuZGF0YU5hbWUsIHdpZGdldC5rZXkpXG4gICAgICApO1xuXG4gICAgICBpZiAod2lkZ2V0Q29uc3RyYWludHMgJiYgd2lkZ2V0Q29uc3RyYWludHMubGVuZ3RoKSB7XG4gICAgICAgIHdpZGdldENvbnN0cmFpbnRzLmZvckVhY2goKGNvbnN0cmFpbnQpID0+IHtcbiAgICAgICAgICBpZiAoY29uc3RyYWludC52aXNpYmxlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGlmICh3aWRnZXQuaXNWaXNpYmxlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgd2lkZ2V0LmlzVmlzaWJsZSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHdpZGdldC5pc1Zpc2libGUgPSBjb25zdHJhaW50LnZpc2libGU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLklORElDQVRPUiAmJlxuICAgICAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuTEFCRUwgJiZcbiAgICAgICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLkNPTlRBSU5FUiAmJlxuICAgICAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuSU1BR0UgJiZcbiAgICAgICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLlNWRyAmJlxuICAgICAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuRklMRV9VUExPQURFUiAmJlxuICAgICAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuRElWSURFUiAmJlxuICAgICAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQlVUVE9OICYmXG4gICAgICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5DT01QT05FTlQgJiZcbiAgICAgICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLllPVVRVQkVfUExBWUVSXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBsZXQgdmFsaWRhdG9ycyA9IHdpZGdldC52YWxpZGF0b3JzID8/IFtdO1xuICAgICAgICAgICAgbGV0IHJlcXVpcmVkSW5kZXggPSB2YWxpZGF0b3JzLmZpbmRJbmRleCgodikgPT4gdi52YWxpZGF0b3IgPT09IFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuICAgICAgICAgICAgbGV0IHdhc01hbmRhdG9yeSA9IHJlcXVpcmVkSW5kZXggPj0gMDtcbiAgICAgICAgICAgIGxldCB0b2JlTWFuZGF0b3J5ID0gZmFsc2U7XG4gICAgICAgICAgICBpZiAoY29uc3RyYWludC5tYW5kYXRvcnkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAvLyBub3Qgc3BlY2lmaWVkIG9uIHNlcnZlciwgdXNlIGNsaWVudCBzdGF0ZVxuICAgICAgICAgICAgICAvLyBpZiB3aWRnZXQgaXMgbm90IHZpc2libGUsIGNsaWVudCBzaG91bGQgZGVmYXVsdCB0byBub3QgbWFuZGF0b3J5XG4gICAgICAgICAgICAgIHRvYmVNYW5kYXRvcnkgPSB3aWRnZXQuaXNWaXNpYmxlICYmIHdhc01hbmRhdG9yeTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRvYmVNYW5kYXRvcnkgPSBjb25zdHJhaW50Lm1hbmRhdG9yeTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghd2FzTWFuZGF0b3J5ICYmIHRvYmVNYW5kYXRvcnkpIHtcbiAgICAgICAgICAgICAgLy8gYWRkIHJlcXVpcmVkIHZhbGlkYXRvclxuICAgICAgICAgICAgICB3aWRnZXQudmFsaWRhdG9ycyA9IFtcbiAgICAgICAgICAgICAgICAuLi52YWxpZGF0b3JzLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcjogVmFsaWRhdG9ycy5yZXF1aXJlZCxcbiAgICAgICAgICAgICAgICAgIGlzQ3VzdG9tOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZTogJycsXG4gICAgICAgICAgICAgICAgICBuYW1lOiAncmVxdWlyZWQnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgIC8vIHJlbW92ZSBlbXB0eSBpdGVtXG4gICAgICAgICAgICAgIHRoaXMucmVtb3ZlRW1wdHlJdGVtRnJvbVZhbHVlTGlzdCh3aWRnZXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHdhc01hbmRhdG9yeSAmJiAhdG9iZU1hbmRhdG9yeSkge1xuICAgICAgICAgICAgICAvLyByZW1vdmUgcmVxdWlyZWQgdmFsaWRhdG9yXG4gICAgICAgICAgICAgIHdpZGdldC52YWxpZGF0b3JzPy5zcGxpY2UocmVxdWlyZWRJbmRleCwgMSk7XG4gICAgICAgICAgICAgIC8vIGFkZCBlbXB0eSBpdGVtXG4gICAgICAgICAgICAgIGxldCBlbXB0eUxhYmVsID0gJyc7XG4gICAgICAgICAgICAgIGlmICgnc2VsZWN0aW9uJyBpbiB3aWRnZXQpIHtcbiAgICAgICAgICAgICAgICBlbXB0eUxhYmVsID0gd2lkZ2V0LnNlbGVjdGlvbj8uZW1wdHlMYWJlbCA/PyAnJztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB0aGlzLmFkZEVtcHR5SXRlbVRvVmFsdWVMaXN0KHdpZGdldCwgZW1wdHlMYWJlbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY29uc3RyYWludC5lbmFibGVkID09PSB1bmRlZmluZWQgfHwgY29uc3RyYWludC5lbmFibGVkID09PSBudWxsKSB7XG4gICAgICAgICAgICAgIGlmICh3aWRnZXQuaXNEaXNhYmxlZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgd2lkZ2V0LmlzRGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgd2lkZ2V0LmlzRGlzYWJsZWQgPSAhY29uc3RyYWludC5lbmFibGVkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy52YWxpZGF0b3JQcm92aWRlcj8uYXBwbHlDb25zdHJhaW50KHdpZGdldCBhcyBWYWxpZGF0ZWRXaWRnZXQ8YW55PiwgY29uc3RyYWludCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgd2lkZ2V0LnR5cGUgPT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQ09OVEFJTkVSICYmXG4gICAgICAgIHdpZGdldC52YWx1ZUxpc3QgJiZcbiAgICAgICAgd2lkZ2V0LnZhbHVlTGlzdC5sZW5ndGhcbiAgICAgICkge1xuICAgICAgICB0aGlzLmFwcGx5Q29tcG9uZW50Q29uc3RyYWludHMod2lkZ2V0LnZhbHVlTGlzdCwgY29uc3RyYWludHMpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSByZWdleFJlZ2V4Q2hhcnMgPSBuZXcgUmVnRXhwKC9bXFwuXFwtXFxbXFxdXFwvXFx7XFx9XFwoXFwpXFwrXFxeXFwkXFxcXFxcfF0vZyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVnZXhBc3Rlcmlza0luVGhlTWlkZGxlID0gbmV3IFJlZ0V4cCgvKFteXFwqXSlcXCooW15cXCpdKS9nKTtcbiAgcHJpdmF0ZSByZWFkb25seSByZWdleEFzdGVyaXNrSW5UaGVFbmQgPSBuZXcgUmVnRXhwKC8oW15cXCpdKVxcKiQvZyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVnZXhBc3Rlcmlza0luVGhlQmVnaW5uaW5nID0gbmV3IFJlZ0V4cCgvXlxcKihbXlxcKl0pL2cpO1xuICBwcml2YXRlIHJlYWRvbmx5IHJlZ2V4QXN0ZXJpc2tPbmx5ID0gbmV3IFJlZ0V4cCgvXlxcKiQvZyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVnZXhEb3VibGVBc3Rlcmlza1dpdGhEb3QgPSBuZXcgUmVnRXhwKC9cXCpcXCpcXFxcXFwuL2cpO1xuICBwcml2YXRlIHJlYWRvbmx5IHJlZ2V4RG91YmxlQXN0ZXJpc2sgPSBuZXcgUmVnRXhwKC9cXCpcXCovZyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVnZXhRdWVzdGlvbk1hcmsgPSBuZXcgUmVnRXhwKC9cXD8vZyk7XG4gIHByaXZhdGUgcmVnZXhCeVBhdHRlcm46IE1hcDxzdHJpbmcsIFJlZ0V4cD4gPSBuZXcgTWFwKCk7XG5cbiAgYW50UGF0aE1hdGNoZXIocGF0dGVybj86IHN0cmluZywgcGF0aD86IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICghcGF0dGVybiB8fCAhcGF0aCkge1xuICAgICAgLy8gZW1wdHkgcGF0dGVybiBvciBwYXRoIC0+IG5vdCBldmFsdWF0ZWQsIHRydWUgb3IgZmFsc2U/XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGxldCByZWdleCA9IHRoaXMucmVnZXhCeVBhdHRlcm4uZ2V0KHBhdHRlcm4pO1xuICAgIGlmIChyZWdleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBlc2NhcGUgcmVnZXggY2hhcmFjdGVycyBleGNlcHQgZm9yID8sICosICoqXG4gICAgICBsZXQgcmVnZXhQYXR0ZXJuID0gcGF0dGVybi5yZXBsYWNlKHRoaXMucmVnZXhSZWdleENoYXJzLCAnXFxcXCQmJyk7XG5cbiAgICAgIC8vIHJlcGxhY2UgYW50LXN0eWxlIHdpbGRjYXJkcyB3aXRoIHJlZ2V4IGVxdWl2YWxlbnRzXG5cbiAgICAgIC8vIHJlcGxhY2UgKiB3aXRoIGEgcGF0dGVybiB0aGF0IG1hdGNoZXMgYW55IGNoYXJhY3RlciBleGNlcHQgZm9yICcuJ1xuICAgICAgcmVnZXhQYXR0ZXJuID0gcmVnZXhQYXR0ZXJuLnJlcGxhY2UodGhpcy5yZWdleEFzdGVyaXNrSW5UaGVNaWRkbGUsICckMVteLl0qJDInKTsgLy8gbm90KiAqIG5vdCpcbiAgICAgIHJlZ2V4UGF0dGVybiA9IHJlZ2V4UGF0dGVybi5yZXBsYWNlKHRoaXMucmVnZXhBc3Rlcmlza0luVGhlRW5kLCAnJDFbXi5dKicpOyAvLyBub3QqICogRU9MXG4gICAgICByZWdleFBhdHRlcm4gPSByZWdleFBhdHRlcm4ucmVwbGFjZSh0aGlzLnJlZ2V4QXN0ZXJpc2tJblRoZUJlZ2lubmluZywgJ1teLl0qJDEnKTsgLy8gQk9MICogbm90KlxuICAgICAgcmVnZXhQYXR0ZXJuID0gcmVnZXhQYXR0ZXJuLnJlcGxhY2UodGhpcy5yZWdleEFzdGVyaXNrT25seSwgJ1teLl0qJyk7IC8vIEJPTCAqIEVPTFxuXG4gICAgICAvLyByZXBsYWNlICoqIHdpdGggYSBwYXR0ZXJuIHRoYXQgbWF0Y2hlcyBhbnkgY2hhcmFjdGVyIGluY2x1ZGluZyAnLidcbiAgICAgIHJlZ2V4UGF0dGVybiA9IHJlZ2V4UGF0dGVybi5yZXBsYWNlKHRoaXMucmVnZXhEb3VibGVBc3Rlcmlza1dpdGhEb3QsICcuKicpOyAvLyAqKi5cbiAgICAgIHJlZ2V4UGF0dGVybiA9IHJlZ2V4UGF0dGVybi5yZXBsYWNlKHRoaXMucmVnZXhEb3VibGVBc3RlcmlzaywgJy4qJyk7IC8vICoqXG5cbiAgICAgIC8vIHJlcGxhY2UgPyB3aXRoIGEgc2luZ2xlIGNoYXJhY3RlciBtYXRjaGVyXG4gICAgICByZWdleFBhdHRlcm4gPSByZWdleFBhdHRlcm4ucmVwbGFjZSh0aGlzLnJlZ2V4UXVlc3Rpb25NYXJrLCAnLicpO1xuXG4gICAgICAvLyBjcmVhdGUgYSBSZWdFeHAgb2JqZWN0XG4gICAgICByZWdleCA9IG5ldyBSZWdFeHAoJ14nICsgcmVnZXhQYXR0ZXJuICsgJyQnKTtcbiAgICAgIHRoaXMucmVnZXhCeVBhdHRlcm4uc2V0KHBhdHRlcm4sIHJlZ2V4KTtcbiAgICB9XG5cbiAgICAvLyB0ZXN0IHRoZSBwYXRoIGFnYWluc3QgdGhlIGdlbmVyYXRlZCByZWdleFxuICAgIHJldHVybiByZWdleC50ZXN0KHBhdGgpO1xuICB9XG5cbiAgYXBwbHlDb25zdHJhaW50cyh3aWRnZXRzPzogU21hcnRGb3JtV2lkZ2V0PGFueT5bXSk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIHRoaXMuc21hcnRGb3JtIS5jb21wb25lbnRNb2RlbD8uY29uc3RyYWludHMgJiZcbiAgICAgIHRoaXMuc21hcnRGb3JtIS5jb21wb25lbnRNb2RlbD8uY29uc3RyYWludHMubGVuZ3RoXG4gICAgKSB7XG4gICAgICBpZiAoIXdpZGdldHMpIHtcbiAgICAgICAgd2lkZ2V0cyA9IHRoaXMuc21hcnRGb3JtIS53aWRnZXRzO1xuICAgICAgfVxuICAgICAgdGhpcy5hcHBseUNvbXBvbmVudENvbnN0cmFpbnRzKHdpZGdldHMsIHRoaXMuc21hcnRGb3JtIS5jb21wb25lbnRNb2RlbD8uY29uc3RyYWludHMpO1xuICAgIH1cbiAgfVxuXG4gIGFkZEVtcHR5SXRlbVRvVmFsdWVMaXN0KHdpZGdldDogU21hcnRGb3JtV2lkZ2V0PGFueT4sIGVtcHR5TGFiZWw/OiBzdHJpbmcpIHtcbiAgICBpZiAod2lkZ2V0LnR5cGUgPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5TRUxFQ1QpIHtcbiAgICAgIGNvbnN0IGNvbnRhaW5zRW1wdHlLZXkgPSB3aWRnZXQudmFsdWVMaXN0LnNvbWUoKHYpID0+IHYua2V5ID09PSB0aGlzLmVtcHR5S2V5KTtcbiAgICAgIGlmICghY29udGFpbnNFbXB0eUtleSkge1xuICAgICAgICB3aWRnZXQudmFsdWVMaXN0Py51bnNoaWZ0KHtcbiAgICAgICAgICBrZXk6IHRoaXMuZW1wdHlLZXksXG4gICAgICAgICAgbGFiZWw6IGVtcHR5TGFiZWwgPz8gJycsXG4gICAgICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5JVEVNLFxuICAgICAgICAgIHZhbHVlOiAnJywgLy8gdGhpcyBzaG91bGQgYmUgdW5kZWZpbmVkLCBidXQgRm9ybUNvbnRyb2wgY2Fubm90IGJlIG51bGwsIGZyb20gdjE0IGl0IHdpbGxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlRW1wdHlJdGVtRnJvbVZhbHVlTGlzdCh3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+KSB7XG4gICAgaWYgKCd2YWx1ZUxpc3QnIGluIHdpZGdldCkge1xuICAgICAgaWYgKHdpZGdldC52YWx1ZUxpc3Q/Lmxlbmd0aCkge1xuICAgICAgICBsZXQgZmlyc3RJdGVtID0gd2lkZ2V0LnZhbHVlTGlzdFswXTtcbiAgICAgICAgaWYgKGZpcnN0SXRlbT8ua2V5ID09PSB0aGlzLmVtcHR5S2V5KSB7XG4gICAgICAgICAgd2lkZ2V0LnZhbHVlTGlzdC5zaGlmdCgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZmlsdGVyV2lkZ2V0c0J5VmlzaWJpbGl0eSh3aWRnZXRzOiBTbWFydEZvcm1XaWRnZXQ8YW55PltdKTogU21hcnRGb3JtV2lkZ2V0PGFueT5bXSB7XG4gICAgcmV0dXJuIHdpZGdldHMuZmlsdGVyKCh3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+KSA9PlxuICAgICAgd2lkZ2V0LmlzVmlzaWJsZSA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6IHdpZGdldC5pc1Zpc2libGVcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRUcmFuc2xhdGlvbk9mS2V5KGtleTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5zbWFydEZvcm0hLnRyYW5zbGF0ZVNlcnZpY2UhLmdldChrZXkpLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgdHJhbnNsYXRlV2lkZ2V0cyh3aWRnZXRzOiBTbWFydEZvcm1XaWRnZXQ8YW55PltdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgUHJvbWlzZS5hbGwoXG4gICAgICB3aWRnZXRzLm1hcChhc3luYyAod2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55PikgPT4ge1xuICAgICAgICBpZiAod2lkZ2V0LnR5cGUgPT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuWU9VVFVCRV9QTEFZRVIpIHJldHVybjtcbiAgICAgICAgaWYgKHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLkNPTlRBSU5FUikge1xuICAgICAgICAgIGlmICghd2lkZ2V0Lm9yaWdpbmFsTGFiZWwpIHtcbiAgICAgICAgICAgIHdpZGdldC5vcmlnaW5hbExhYmVsID0gYCR7d2lkZ2V0LmxhYmVsfWA7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vICBMYWJlbFxuICAgICAgICAgIHdpZGdldC5sYWJlbCA9IGF3YWl0IHRoaXMuZ2V0VHJhbnNsYXRpb25PZktleSh3aWRnZXQub3JpZ2luYWxMYWJlbCk7XG5cbiAgICAgICAgICAvLyBQbGFjZWhvbGRlclxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICh3aWRnZXQudHlwZSA9PT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5URVhUX0ZJRUxEIHx8XG4gICAgICAgICAgICAgIHdpZGdldC50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLlRFWFRfRklFTERfTlVNQkVSIHx8XG4gICAgICAgICAgICAgIHdpZGdldC50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLlRFWFRfRklFTERfQ0hJUFMgfHxcbiAgICAgICAgICAgICAgd2lkZ2V0LnR5cGUgPT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuUklDSF9URVhUIHx8XG4gICAgICAgICAgICAgIHdpZGdldC50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLlRFWFRfQk9YKSAmJlxuICAgICAgICAgICAgd2lkZ2V0LnBsYWNlaG9sZGVyXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBpZiAoIXdpZGdldC5vcmlnaW5hbFBsYWNlaG9sZGVyKSB7XG4gICAgICAgICAgICAgIHdpZGdldC5vcmlnaW5hbFBsYWNlaG9sZGVyID0gYCR7d2lkZ2V0LnBsYWNlaG9sZGVyfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB3aWRnZXQucGxhY2Vob2xkZXIgPSBhd2FpdCB0aGlzLmdldFRyYW5zbGF0aW9uT2ZLZXkod2lkZ2V0Lm9yaWdpbmFsUGxhY2Vob2xkZXIpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIFZhbGlkYXRvcnNcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5JTkRJQ0FUT1IgJiZcbiAgICAgICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLkxBQkVMICYmXG4gICAgICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5JTUFHRSAmJlxuICAgICAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuU1ZHICYmXG4gICAgICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5GSUxFX1VQTE9BREVSICYmXG4gICAgICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5ESVZJREVSICYmXG4gICAgICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5CVVRUT04gJiZcbiAgICAgICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLkNPTVBPTkVOVCAmJlxuICAgICAgICAgICAgd2lkZ2V0LnZhbGlkYXRvcnNcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHdpZGdldC52YWxpZGF0b3JzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgICAgICAgIHdpZGdldC52YWxpZGF0b3JzLm1hcChhc3luYyAodmFsaWRhdG9yOiBTbWFydFZhbGlkYXRvcikgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghdmFsaWRhdG9yLm9yaWdpbmFsRXJyb3JNZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgICB2YWxpZGF0b3Iub3JpZ2luYWxFcnJvck1lc3NhZ2UgPSBgJHt2YWxpZGF0b3IuZXJyb3JNZXNzYWdlfWA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhbGlkYXRvci5lcnJvck1lc3NhZ2UgPSBhd2FpdCB0aGlzLmdldFRyYW5zbGF0aW9uT2ZLZXkoXG4gICAgICAgICAgICAgICAgICB2YWxpZGF0b3Iub3JpZ2luYWxFcnJvck1lc3NhZ2VcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWxpZGF0b3I7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBJbmRpY2F0b3JcbiAgICAgICAgICBpZiAod2lkZ2V0LnR5cGUgPT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuSU5ESUNBVE9SICYmIHdpZGdldC5pbmRpY2F0b3IpIHtcbiAgICAgICAgICAgIGlmICghd2lkZ2V0LmluZGljYXRvci5vcmlnaW5hbEluZGljYXRvclN0YXR1c0xhYmVscykge1xuICAgICAgICAgICAgICB3aWRnZXQuaW5kaWNhdG9yLm9yaWdpbmFsSW5kaWNhdG9yU3RhdHVzTGFiZWxzID1cbiAgICAgICAgICAgICAgICB3aWRnZXQuaW5kaWNhdG9yLmluZGljYXRvclN0YXR1c0xhYmVscy5tYXAoKGxhYmVsOiBzdHJpbmcpID0+IGxhYmVsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHdpZGdldC5pbmRpY2F0b3IuaW5kaWNhdG9yU3RhdHVzTGFiZWxzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgICAgICAgIHdpZGdldC5pbmRpY2F0b3IuaW5kaWNhdG9yU3RhdHVzTGFiZWxzLm1hcChcbiAgICAgICAgICAgICAgICBhc3luYyAobGFiZWw6IHN0cmluZywgaW5kZXg6IG51bWJlcikgPT5cbiAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZ2V0VHJhbnNsYXRpb25PZktleShcbiAgICAgICAgICAgICAgICAgICAgd2lkZ2V0LmluZGljYXRvciEub3JpZ2luYWxJbmRpY2F0b3JTdGF0dXNMYWJlbHMhW2luZGV4XVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICh3aWRnZXQudHlwZSA9PT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5URVhUX0ZJRUxEX0NISVBTIHx8XG4gICAgICAgICAgICAgIHdpZGdldC50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLlNFTEVDVCB8fFxuICAgICAgICAgICAgICB3aWRnZXQudHlwZSA9PT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5TRUxFQ1RfTVVMVElQTEUgfHxcbiAgICAgICAgICAgICAgd2lkZ2V0LnR5cGUgPT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQ0hFQ0tfQk9YIHx8XG4gICAgICAgICAgICAgIHdpZGdldC50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLkNIRUNLX0JPWF8yIHx8XG4gICAgICAgICAgICAgIHdpZGdldC50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLlJBRElPX0JVVFRPTikgJiZcbiAgICAgICAgICAgIHdpZGdldC52YWx1ZUxpc3RcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlV2lkZ2V0SXRlbXMod2lkZ2V0LnZhbHVlTGlzdCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMudHJhbnNsYXRlV2lkZ2V0cyh3aWRnZXQudmFsdWVMaXN0ISk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIHRyYW5zbGF0ZVdpZGdldEl0ZW1zKHdpZGdldHM6IFNtYXJ0SXRlbXM8YW55PltdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgUHJvbWlzZS5hbGwoXG4gICAgICB3aWRnZXRzLm1hcChhc3luYyAod2lkZ2V0OiBTbWFydEl0ZW1zPGFueT4pID0+IHtcbiAgICAgICAgaWYgKCF3aWRnZXQub3JpZ2luYWxMYWJlbCkge1xuICAgICAgICAgIHdpZGdldC5vcmlnaW5hbExhYmVsID0gYCR7d2lkZ2V0LmxhYmVsfWA7XG4gICAgICAgIH1cbiAgICAgICAgLy8gIExhYmVsXG4gICAgICAgIHdpZGdldC5sYWJlbCA9IGF3YWl0IHRoaXMuZ2V0VHJhbnNsYXRpb25PZktleSh3aWRnZXQub3JpZ2luYWxMYWJlbCk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRmb3JtLmZvcm0tbW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1mb3JtL3NtYXJ0Zm9ybS5mb3JtLW1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBRdWlsbE1vZHVsZXMgfSBmcm9tICduZ3gtcXVpbGwnO1xyXG5pbXBvcnQge1xyXG4gIFNlbGVjdGlvbkRlZmluaXRpb24sXHJcbiAgU21hcnRGb3JtSW5wdXRNb2RlLFxyXG4gIFNtYXJ0Rm9ybVdpZGdldERpcmVjdGlvbixcclxuICBTbWFydEZvcm1XaWRnZXRUeXBlLFxyXG4gIFNtYXJ0V2lkZ2V0SGludCxcclxuICBWYWx1ZUNoYW5nZU1vZGUsXHJcbn0gZnJvbSAnLi9hcGknO1xyXG5pbXBvcnQge1xyXG4gIFNtYXJ0Rm9ybVRleHRGaWVsZEJ1dHRvbixcclxuICBTbWFydEZvcm1XaWRnZXRXaWR0aCxcclxuICBTbWFydEluZGljYXRvcixcclxuICBTbWFydFZhbGlkYXRvcixcclxuICBUb2dnbGVMYWJlbFBvc2l0aW9uLFxyXG59IGZyb20gJy4vc21hcnRmb3JtLm1vZGVsJztcclxuaW1wb3J0IHsgU3R5bGUgfSBmcm9tICcuLi92aWV3LWNvbnRleHQvYXBpJztcclxuXHJcbmV4cG9ydCBkZWNsYXJlIHR5cGUgU21hcnRGb3JtV2lkZ2V0PFQ+ID1cclxuICB8IFNtYXJ0VGV4dEZpZWxkPFQ+XHJcbiAgfCBTbWFydFRleHRGaWVsZE51bWJlcjxUPlxyXG4gIHwgU21hcnRUZXh0RmllbGRDaGlwczxUPlxyXG4gIHwgU21hcnRUZXh0RmllbGRMb29rdXA8VD5cclxuICB8IFNtYXJ0VGV4dEJveDxUPlxyXG4gIHwgU21hcnRTZWxlY3Q8VD5cclxuICB8IFNtYXJ0U2VsZWN0TXVsdGlwbGU8VD5cclxuICB8IFNtYXJ0Q2hlY2tCb3g8VD5cclxuICB8IFNtYXJ0Q2hlY2tCb3gyPFQ+XHJcbiAgfCBTbWFydFJhZGlvQnV0dG9uPFQ+XHJcbiAgfCBTbWFydERhdGVQaWNrZXI8VD5cclxuICB8IFNtYXJ0RGF0ZVRpbWVQaWNrZXI8VD5cclxuICB8IFNtYXJ0Q29udGFpbmVyPFQ+XHJcbiAgfCBTbWFydExhYmVsXHJcbiAgfCBTbWFydFRpbWU8VD5cclxuICB8IFNtYXJ0VG9nZ2xlPFQ+XHJcbiAgfCBTbWFydEluZGljYXRvckl0ZW1cclxuICB8IFNtYXJ0RmlsZVVwbG9hZGVyXHJcbiAgfCBTbWFydEltYWdlXHJcbiAgfCBTbWFydERpdmlkZXJcclxuICB8IFNtYXJ0QnV0dG9uXHJcbiAgfCBTbWFydEZvcm1JbmxpbmVDb21wb25lbnRcclxuICB8IFNtYXJ0UmljaFRleHRcclxuICB8IFNtYXJ0U29ydGFibGU8VD5cclxuICB8IFNtYXJ0TWF0cml4XHJcbiAgfCBTbWFydFlvdXR1YmVQbGF5ZXJcclxuICB8IFNtYXJ0TW9udGhQaWNrZXJcclxuICB8IFNtYXJ0U3ZnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTbWFydFRleHRGaWVsZDxUPiB7XHJcbiAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5URVhUX0ZJRUxEO1xyXG4gIGtleTogc3RyaW5nO1xyXG4gIHZhbHVlQ2hhbmdlTW9kZT86IFZhbHVlQ2hhbmdlTW9kZTtcclxuICBsYWJlbDogc3RyaW5nO1xyXG4gIG9yaWdpbmFsTGFiZWw/OiBzdHJpbmc7XHJcbiAgc2hvd0xhYmVsPzogYm9vbGVhbjtcclxuICB2YWx1ZT86IFQ7XHJcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XHJcbiAgb3JpZ2luYWxQbGFjZWhvbGRlcj86IHN0cmluZztcclxuICBtaW5XaWR0aD86IFNtYXJ0Rm9ybVdpZGdldFdpZHRoIHwgbnVtYmVyIHwgbnVtYmVyO1xyXG4gIGlzRGlzYWJsZWQ/OiBib29sZWFuO1xyXG4gIGlzUmVhZG9ubHk/OiBib29sZWFuO1xyXG4gIHByZWZpeD86IHN0cmluZztcclxuICBzdWZmaXg/OiBzdHJpbmc7XHJcbiAgdmFsaWRhdG9ycz86IFNtYXJ0VmFsaWRhdG9yW107XHJcbiAgY3NzQ2xhc3M/OiBzdHJpbmc7XHJcbiAgY3NzTGFiZWxDbGFzcz86IHN0cmluZztcclxuICBzdHlsZT86IFN0eWxlO1xyXG4gIGxhYmVsU3R5bGU/OiBTdHlsZTtcclxuICBpc1Bhc3N3b3JkPzogYm9vbGVhbjtcclxuICB0ZXh0RmllbGRCdXR0b24/OiBTbWFydEZvcm1UZXh0RmllbGRCdXR0b247XHJcbiAgY2Fwc0xvY2tXYXJuaW5nPzogc3RyaW5nO1xyXG4gIGNhcHNMb2NrV2FybmluZ0ljb24/OiBzdHJpbmc7XHJcbiAgaXNWaXNpYmxlPzogYm9vbGVhbjtcclxuICBtYXNrPzogc3RyaW5nO1xyXG4gIGVycm9yPzogc3RyaW5nO1xyXG4gIGljb24/OiBzdHJpbmc7XHJcbiAgaWNvbkNvbG9yPzogc3RyaW5nO1xyXG4gIGljb25Qb3NpdGlvbj86ICdQUkUnIHwgJ1BPU1QnO1xyXG4gIGVycm9ySWNvbj86IHN0cmluZztcclxuICBlcnJvckljb25Db2xvcj86IHN0cmluZztcclxuICBzZXJ2ZXJFcnJvck1lc3NhZ2U/OiBzdHJpbmc7XHJcbiAgc2VydmVyRXJyb3JJY29uPzogc3RyaW5nO1xyXG4gIHNlcnZlckVycm9yQ29sb3I/OiBzdHJpbmc7XHJcbiAgdmFsdWVMaXN0PzogU21hcnRJdGVtPFQ+W107XHJcbiAgc2VsZWN0aW9uPzogU2VsZWN0aW9uRGVmaW5pdGlvbjtcclxuICBmaWx0ZXJFcnJvck1lc3NhZ2U/OiBzdHJpbmc7XHJcbiAgaGludD86IFNtYXJ0V2lkZ2V0SGludDtcclxuICBtYXhMZW5ndGg/OiBudW1iZXI7XHJcbiAgc2hvd0NoYXJhY3RlckxpbWl0U3VmZml4PzogYm9vbGVhbjtcclxuICB0b29sYmFySWQ/OiBzdHJpbmc7XHJcbiAgaW5wdXRNb2RlPzogU21hcnRGb3JtSW5wdXRNb2RlO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNtYXJ0VGV4dEZpZWxkTnVtYmVyPFQ+IHtcclxuICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLlRFWFRfRklFTERfTlVNQkVSO1xyXG4gIGtleTogc3RyaW5nO1xyXG4gIHZhbHVlQ2hhbmdlTW9kZT86IFZhbHVlQ2hhbmdlTW9kZTtcclxuICBsYWJlbDogc3RyaW5nO1xyXG4gIG9yaWdpbmFsTGFiZWw/OiBzdHJpbmc7XHJcbiAgc2hvd0xhYmVsPzogYm9vbGVhbjtcclxuICB2YWx1ZT86IFQ7XHJcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XHJcbiAgb3JpZ2luYWxQbGFjZWhvbGRlcj86IHN0cmluZztcclxuICBtaW5XaWR0aD86IFNtYXJ0Rm9ybVdpZGdldFdpZHRoIHwgbnVtYmVyIHwgbnVtYmVyO1xyXG4gIGlzRGlzYWJsZWQ/OiBib29sZWFuO1xyXG4gIGlzUmVhZG9ubHk/OiBib29sZWFuO1xyXG4gIHByZWZpeD86IHN0cmluZztcclxuICBzdWZmaXg/OiBzdHJpbmc7XHJcbiAgdmFsaWRhdG9ycz86IFNtYXJ0VmFsaWRhdG9yW107XHJcbiAgY3NzQ2xhc3M/OiBzdHJpbmc7XHJcbiAgY3NzTGFiZWxDbGFzcz86IHN0cmluZztcclxuICBzdHlsZT86IFN0eWxlO1xyXG4gIGxhYmVsU3R5bGU/OiBTdHlsZTtcclxuICB0ZXh0RmllbGRCdXR0b24/OiBTbWFydEZvcm1UZXh0RmllbGRCdXR0b247XHJcbiAgaXNWaXNpYmxlPzogYm9vbGVhbjtcclxuICBtaW5WYWx1ZXM/OiBudW1iZXI7XHJcbiAgbWF4VmFsdWVzPzogbnVtYmVyO1xyXG4gIGVycm9yPzogc3RyaW5nO1xyXG4gIGljb24/OiBzdHJpbmc7XHJcbiAgaWNvbkNvbG9yPzogc3RyaW5nO1xyXG4gIGVycm9ySWNvbj86IHN0cmluZztcclxuICBlcnJvckljb25Db2xvcj86IHN0cmluZztcclxuICBzZXJ2ZXJFcnJvck1lc3NhZ2U/OiBzdHJpbmc7XHJcbiAgc2VydmVyRXJyb3JJY29uPzogc3RyaW5nO1xyXG4gIHNlcnZlckVycm9yQ29sb3I/OiBzdHJpbmc7XHJcbiAgaGludD86IFNtYXJ0V2lkZ2V0SGludDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTbWFydFRleHRGaWVsZENoaXBzPFQ+IHtcclxuICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLlRFWFRfRklFTERfQ0hJUFM7XHJcbiAga2V5OiBzdHJpbmc7XHJcbiAgdmFsdWVDaGFuZ2VNb2RlPzogVmFsdWVDaGFuZ2VNb2RlO1xyXG4gIGxhYmVsOiBzdHJpbmc7XHJcbiAgb3JpZ2luYWxMYWJlbD86IHN0cmluZztcclxuICBzaG93TGFiZWw/OiBib29sZWFuO1xyXG4gIHZhbHVlPzogVDtcclxuICBwbGFjZWhvbGRlcj86IHN0cmluZztcclxuICBvcmlnaW5hbFBsYWNlaG9sZGVyPzogc3RyaW5nO1xyXG4gIG1pbldpZHRoPzogU21hcnRGb3JtV2lkZ2V0V2lkdGggfCBudW1iZXIgfCBudW1iZXI7XHJcbiAgaXNEaXNhYmxlZD86IGJvb2xlYW47XHJcbiAgaXNSZWFkb25seT86IGJvb2xlYW47XHJcbiAgdmFsaWRhdG9ycz86IFNtYXJ0VmFsaWRhdG9yW107XHJcbiAgY3NzQ2xhc3M/OiBzdHJpbmc7XHJcbiAgY3NzTGFiZWxDbGFzcz86IHN0cmluZztcclxuICBzdHlsZT86IFN0eWxlO1xyXG4gIGxhYmVsU3R5bGU/OiBTdHlsZTtcclxuICBpc1Zpc2libGU/OiBib29sZWFuO1xyXG4gIGVycm9yPzogc3RyaW5nO1xyXG4gIGVycm9ySWNvbj86IHN0cmluZztcclxuICBlcnJvckljb25Db2xvcj86IHN0cmluZztcclxuICBzZXJ2ZXJFcnJvck1lc3NhZ2U/OiBzdHJpbmc7XHJcbiAgc2VydmVyRXJyb3JJY29uPzogc3RyaW5nO1xyXG4gIHNlcnZlckVycm9yQ29sb3I/OiBzdHJpbmc7XHJcbiAgdmFsdWVMaXN0OiBTbWFydEl0ZW08VD5bXTtcclxuICBtaW5WYWx1ZXM/OiBudW1iZXI7XHJcbiAgbWF4VmFsdWVzPzogbnVtYmVyO1xyXG4gIGhpbnQ/OiBTbWFydFdpZGdldEhpbnQ7XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBTbWFydFRleHRGaWVsZExvb2t1cDxUPiB7XHJcbiAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5URVhUX0ZJRUxEX0xPT0tVUDtcclxuICBrZXk6IHN0cmluZztcclxuICB2YWx1ZUNoYW5nZU1vZGU/OiBWYWx1ZUNoYW5nZU1vZGU7XHJcbiAgbGFiZWw6IHN0cmluZztcclxuICBvcmlnaW5hbExhYmVsPzogc3RyaW5nO1xyXG4gIHNob3dMYWJlbD86IGJvb2xlYW47XHJcbiAgdmFsdWU/OiBUO1xyXG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xyXG4gIG9yaWdpbmFsUGxhY2Vob2xkZXI/OiBzdHJpbmc7XHJcbiAgbWluV2lkdGg/OiBTbWFydEZvcm1XaWRnZXRXaWR0aCB8IG51bWJlciB8IG51bWJlcjtcclxuICBpc0Rpc2FibGVkPzogYm9vbGVhbjtcclxuICBpc1JlYWRvbmx5PzogYm9vbGVhbjtcclxuICB2YWxpZGF0b3JzPzogU21hcnRWYWxpZGF0b3JbXTtcclxuICBjc3NDbGFzcz86IHN0cmluZztcclxuICBjc3NMYWJlbENsYXNzPzogc3RyaW5nO1xyXG4gIHN0eWxlPzogU3R5bGU7XHJcbiAgbGFiZWxTdHlsZT86IFN0eWxlO1xyXG4gIGlzVmlzaWJsZT86IGJvb2xlYW47XHJcbiAgZXJyb3I/OiBzdHJpbmc7XHJcbiAgZXJyb3JJY29uPzogc3RyaW5nO1xyXG4gIGVycm9ySWNvbkNvbG9yPzogc3RyaW5nO1xyXG4gIHNlcnZlckVycm9yTWVzc2FnZT86IHN0cmluZztcclxuICBzZXJ2ZXJFcnJvckljb24/OiBzdHJpbmc7XHJcbiAgc2VydmVyRXJyb3JDb2xvcj86IHN0cmluZztcclxuICBtaW5WYWx1ZXM/OiBudW1iZXI7XHJcbiAgbWF4VmFsdWVzPzogbnVtYmVyO1xyXG4gIGhpbnQ/OiBTbWFydFdpZGdldEhpbnQ7XHJcbiAgdG9vbGJhcklkPzogc3RyaW5nO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgU21hcnRUZXh0Qm94PFQ+IHtcclxuICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLlRFWFRfQk9YO1xyXG4gIGtleTogc3RyaW5nO1xyXG4gIHZhbHVlQ2hhbmdlTW9kZT86IFZhbHVlQ2hhbmdlTW9kZTtcclxuICBsYWJlbDogc3RyaW5nO1xyXG4gIG9yaWdpbmFsTGFiZWw/OiBzdHJpbmc7XHJcbiAgc2hvd0xhYmVsPzogYm9vbGVhbjtcclxuICB2YWx1ZT86IFQ7XHJcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XHJcbiAgb3JpZ2luYWxQbGFjZWhvbGRlcj86IHN0cmluZztcclxuICBtaW5XaWR0aD86IFNtYXJ0Rm9ybVdpZGdldFdpZHRoIHwgbnVtYmVyO1xyXG4gIGlzRGlzYWJsZWQ/OiBib29sZWFuO1xyXG4gIGlzUmVhZG9ubHk/OiBib29sZWFuO1xyXG4gIHZhbGlkYXRvcnM/OiBTbWFydFZhbGlkYXRvcltdO1xyXG4gIGNzc0NsYXNzPzogc3RyaW5nO1xyXG4gIGNzc0xhYmVsQ2xhc3M/OiBzdHJpbmc7XHJcbiAgc3R5bGU/OiBTdHlsZTtcclxuICBsYWJlbFN0eWxlPzogU3R5bGU7XHJcbiAgaXNWaXNpYmxlPzogYm9vbGVhbjtcclxuICBlcnJvcj86IHN0cmluZztcclxuICBlcnJvckljb24/OiBzdHJpbmc7XHJcbiAgZXJyb3JJY29uQ29sb3I/OiBzdHJpbmc7XHJcbiAgc2VydmVyRXJyb3JNZXNzYWdlPzogc3RyaW5nO1xyXG4gIHNlcnZlckVycm9ySWNvbj86IHN0cmluZztcclxuICBzZXJ2ZXJFcnJvckNvbG9yPzogc3RyaW5nO1xyXG4gIGhpbnQ/OiBTbWFydFdpZGdldEhpbnQ7XHJcbiAgbWF4TGVuZ3RoPzogbnVtYmVyO1xyXG4gIHNob3dDaGFyYWN0ZXJMaW1pdFN1ZmZpeD86IGJvb2xlYW47XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBTbWFydFNlbGVjdDxUPiB7XHJcbiAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5TRUxFQ1Q7XHJcbiAga2V5OiBzdHJpbmc7XHJcbiAgdmFsdWVDaGFuZ2VNb2RlPzogVmFsdWVDaGFuZ2VNb2RlO1xyXG4gIGxhYmVsOiBzdHJpbmc7XHJcbiAgb3JpZ2luYWxMYWJlbD86IHN0cmluZztcclxuICBzaG93TGFiZWw/OiBib29sZWFuO1xyXG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xyXG4gIHZhbHVlPzogVDtcclxuICBtaW5XaWR0aD86IFNtYXJ0Rm9ybVdpZGdldFdpZHRoIHwgbnVtYmVyO1xyXG4gIGlzRGlzYWJsZWQ/OiBib29sZWFuO1xyXG4gIGlzUmVhZG9ubHk/OiBib29sZWFuO1xyXG4gIHZhbGlkYXRvcnM/OiBTbWFydFZhbGlkYXRvcltdO1xyXG4gIGNzc0NsYXNzPzogc3RyaW5nO1xyXG4gIGNzc0xhYmVsQ2xhc3M/OiBzdHJpbmc7XHJcbiAgc3R5bGU/OiBTdHlsZTtcclxuICBsYWJlbFN0eWxlPzogU3R5bGU7XHJcbiAgaXNWaXNpYmxlPzogYm9vbGVhbjtcclxuICBlcnJvcj86IHN0cmluZztcclxuICBlcnJvckljb24/OiBzdHJpbmc7XHJcbiAgZXJyb3JJY29uQ29sb3I/OiBzdHJpbmc7XHJcbiAgc2VydmVyRXJyb3JNZXNzYWdlPzogc3RyaW5nO1xyXG4gIHNlcnZlckVycm9ySWNvbj86IHN0cmluZztcclxuICBzZXJ2ZXJFcnJvckNvbG9yPzogc3RyaW5nO1xyXG4gIHZhbHVlTGlzdDogU21hcnRJdGVtczxUPltdO1xyXG4gIHNlbGVjdGlvbj86IFNlbGVjdGlvbkRlZmluaXRpb247XHJcbiAgaGludD86IFNtYXJ0V2lkZ2V0SGludDtcclxuICBjb21wYXJlV2l0aD86IChvMTogYW55LCBvMjogYW55KSA9PiBib29sZWFuO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgU21hcnRTZWxlY3RNdWx0aXBsZTxUPiB7XHJcbiAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5TRUxFQ1RfTVVMVElQTEU7XHJcbiAga2V5OiBzdHJpbmc7XHJcbiAgdmFsdWVDaGFuZ2VNb2RlPzogVmFsdWVDaGFuZ2VNb2RlO1xyXG4gIGxhYmVsOiBzdHJpbmc7XHJcbiAgb3JpZ2luYWxMYWJlbD86IHN0cmluZztcclxuICBzaG93TGFiZWw/OiBib29sZWFuO1xyXG4gIHZhbHVlPzogVDtcclxuICBtaW5XaWR0aD86IFNtYXJ0Rm9ybVdpZGdldFdpZHRoIHwgbnVtYmVyO1xyXG4gIGlzRGlzYWJsZWQ/OiBib29sZWFuO1xyXG4gIGlzUmVhZG9ubHk/OiBib29sZWFuO1xyXG4gIHZhbGlkYXRvcnM/OiBTbWFydFZhbGlkYXRvcltdO1xyXG4gIGNzc0NsYXNzPzogc3RyaW5nO1xyXG4gIGNzc0xhYmVsQ2xhc3M/OiBzdHJpbmc7XHJcbiAgc3R5bGU/OiBTdHlsZTtcclxuICBsYWJlbFN0eWxlPzogU3R5bGU7XHJcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XHJcbiAgaXNWaXNpYmxlPzogYm9vbGVhbjtcclxuICBlcnJvcj86IHN0cmluZztcclxuICBlcnJvckljb24/OiBzdHJpbmc7XHJcbiAgZXJyb3JJY29uQ29sb3I/OiBzdHJpbmc7XHJcbiAgc2VydmVyRXJyb3JNZXNzYWdlPzogc3RyaW5nO1xyXG4gIHNlcnZlckVycm9ySWNvbj86IHN0cmluZztcclxuICBzZXJ2ZXJFcnJvckNvbG9yPzogc3RyaW5nO1xyXG4gIHZhbHVlTGlzdDogU21hcnRJdGVtczxUPltdO1xyXG4gIHNlbGVjdGlvbj86IFNlbGVjdGlvbkRlZmluaXRpb247XHJcbiAgaGludD86IFNtYXJ0V2lkZ2V0SGludDtcclxuICBjb21wYXJlV2l0aD86IChvMTogYW55LCBvMjogYW55KSA9PiBib29sZWFuO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgU21hcnRDaGVja0JveDxUPiB7XHJcbiAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5DSEVDS19CT1g7XHJcbiAga2V5OiBzdHJpbmc7XHJcbiAgdmFsdWVDaGFuZ2VNb2RlPzogVmFsdWVDaGFuZ2VNb2RlO1xyXG4gIGxhYmVsOiBzdHJpbmc7XHJcbiAgb3JpZ2luYWxMYWJlbD86IHN0cmluZztcclxuICBzaG93TGFiZWw/OiBib29sZWFuO1xyXG4gIHZhbHVlPzogVDtcclxuICBtaW5XaWR0aD86IFNtYXJ0Rm9ybVdpZGdldFdpZHRoIHwgbnVtYmVyO1xyXG4gIGlzRGlzYWJsZWQ/OiBib29sZWFuO1xyXG4gIGlzUmVhZG9ubHk/OiBib29sZWFuO1xyXG4gIHZhbGlkYXRvcnM/OiBTbWFydFZhbGlkYXRvcltdO1xyXG4gIGNzc0NsYXNzPzogc3RyaW5nO1xyXG4gIGNzc0xhYmVsQ2xhc3M/OiBzdHJpbmc7XHJcbiAgc3R5bGU/OiBTdHlsZTtcclxuICBsYWJlbFN0eWxlPzogU3R5bGU7XHJcbiAgaXNWaXNpYmxlPzogYm9vbGVhbjtcclxuICBlcnJvcj86IHN0cmluZztcclxuICBlcnJvckljb24/OiBzdHJpbmc7XHJcbiAgZXJyb3JJY29uQ29sb3I/OiBzdHJpbmc7XHJcbiAgc2VydmVyRXJyb3JNZXNzYWdlPzogc3RyaW5nO1xyXG4gIHNlcnZlckVycm9ySWNvbj86IHN0cmluZztcclxuICBzZXJ2ZXJFcnJvckNvbG9yPzogc3RyaW5nO1xyXG4gIHZhbHVlTGlzdDogU21hcnRJdGVtPFQ+W107XHJcbiAgc2VsZWN0aW9uPzogU2VsZWN0aW9uRGVmaW5pdGlvbjtcclxuICBkaXJlY3Rpb24/OiBTbWFydEZvcm1XaWRnZXREaXJlY3Rpb247XHJcbiAgaGludD86IFNtYXJ0V2lkZ2V0SGludDtcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIFNtYXJ0Q2hlY2tCb3gyPFQ+IHtcclxuICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLkNIRUNLX0JPWF8yO1xyXG4gIGtleTogc3RyaW5nO1xyXG4gIHZhbHVlQ2hhbmdlTW9kZT86IFZhbHVlQ2hhbmdlTW9kZTtcclxuICBsYWJlbDogc3RyaW5nO1xyXG4gIG9yaWdpbmFsTGFiZWw/OiBzdHJpbmc7XHJcbiAgc2hvd0xhYmVsPzogYm9vbGVhbjtcclxuICB2YWx1ZT86IFQ7XHJcbiAgbWluV2lkdGg/OiBTbWFydEZvcm1XaWRnZXRXaWR0aCB8IG51bWJlcjtcclxuICBpc0Rpc2FibGVkPzogYm9vbGVhbjtcclxuICBpc1JlYWRvbmx5PzogYm9vbGVhbjtcclxuICB2YWxpZGF0b3JzPzogU21hcnRWYWxpZGF0b3JbXTtcclxuICBjc3NDbGFzcz86IHN0cmluZztcclxuICBjc3NMYWJlbENsYXNzPzogc3RyaW5nO1xyXG4gIHN0eWxlPzogU3R5bGU7XHJcbiAgbGFiZWxTdHlsZT86IFN0eWxlO1xyXG4gIGlzVmlzaWJsZT86IGJvb2xlYW47XHJcbiAgZXJyb3I/OiBzdHJpbmc7XHJcbiAgZXJyb3JJY29uPzogc3RyaW5nO1xyXG4gIGVycm9ySWNvbkNvbG9yPzogc3RyaW5nO1xyXG4gIHNlcnZlckVycm9yTWVzc2FnZT86IHN0cmluZztcclxuICBzZXJ2ZXJFcnJvckljb24/OiBzdHJpbmc7XHJcbiAgc2VydmVyRXJyb3JDb2xvcj86IHN0cmluZztcclxuICB2YWx1ZUxpc3Q6IFNtYXJ0SXRlbTxUPltdO1xyXG4gIHNlbGVjdGlvbj86IFNlbGVjdGlvbkRlZmluaXRpb247XHJcbiAgZGlyZWN0aW9uPzogU21hcnRGb3JtV2lkZ2V0RGlyZWN0aW9uO1xyXG4gIGhpbnQ/OiBTbWFydFdpZGdldEhpbnQ7XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBTbWFydFJhZGlvQnV0dG9uPFQ+IHtcclxuICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLlJBRElPX0JVVFRPTjtcclxuICBrZXk6IHN0cmluZztcclxuICB2YWx1ZUNoYW5nZU1vZGU/OiBWYWx1ZUNoYW5nZU1vZGU7XHJcbiAgbGFiZWw6IHN0cmluZztcclxuICBvcmlnaW5hbExhYmVsPzogc3RyaW5nO1xyXG4gIHNob3dMYWJlbD86IGJvb2xlYW47XHJcbiAgdmFsdWU/OiBUO1xyXG4gIG1pbldpZHRoPzogU21hcnRGb3JtV2lkZ2V0V2lkdGggfCBudW1iZXI7XHJcbiAgaXNEaXNhYmxlZD86IGJvb2xlYW47XHJcbiAgaXNSZWFkb25seT86IGJvb2xlYW47XHJcbiAgdmFsaWRhdG9ycz86IFNtYXJ0VmFsaWRhdG9yW107XHJcbiAgY3NzQ2xhc3M/OiBzdHJpbmc7XHJcbiAgY3NzTGFiZWxDbGFzcz86IHN0cmluZztcclxuICBzdHlsZT86IFN0eWxlO1xyXG4gIGxhYmVsU3R5bGU/OiBTdHlsZTtcclxuICBpc1Zpc2libGU/OiBib29sZWFuO1xyXG4gIGVycm9yPzogc3RyaW5nO1xyXG4gIGVycm9ySWNvbj86IHN0cmluZztcclxuICBlcnJvckljb25Db2xvcj86IHN0cmluZztcclxuICBzZXJ2ZXJFcnJvck1lc3NhZ2U/OiBzdHJpbmc7XHJcbiAgc2VydmVyRXJyb3JJY29uPzogc3RyaW5nO1xyXG4gIHNlcnZlckVycm9yQ29sb3I/OiBzdHJpbmc7XHJcbiAgdmFsdWVMaXN0OiBTbWFydEl0ZW08VD5bXTtcclxuICBzZWxlY3Rpb24/OiBTZWxlY3Rpb25EZWZpbml0aW9uO1xyXG4gIGRpcmVjdGlvbj86IFNtYXJ0Rm9ybVdpZGdldERpcmVjdGlvbjtcclxuICBoaW50PzogU21hcnRXaWRnZXRIaW50O1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgU21hcnREYXRlUGlja2VyPFQ+IHtcclxuICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLkRBVEVfUElDS0VSO1xyXG4gIGtleTogc3RyaW5nO1xyXG4gIHZhbHVlQ2hhbmdlTW9kZT86IFZhbHVlQ2hhbmdlTW9kZTtcclxuICBsYWJlbDogc3RyaW5nO1xyXG4gIG9yaWdpbmFsTGFiZWw/OiBzdHJpbmc7XHJcbiAgc2hvd0xhYmVsPzogYm9vbGVhbjtcclxuICB2YWx1ZT86IFQ7XHJcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XHJcbiAgbWluV2lkdGg/OiBTbWFydEZvcm1XaWRnZXRXaWR0aCB8IG51bWJlcjtcclxuICBpc0Rpc2FibGVkPzogYm9vbGVhbjtcclxuICBpc1JlYWRvbmx5PzogYm9vbGVhbjtcclxuICB2YWxpZGF0b3JzPzogU21hcnRWYWxpZGF0b3JbXTtcclxuICBjc3NDbGFzcz86IHN0cmluZztcclxuICBjc3NMYWJlbENsYXNzPzogc3RyaW5nO1xyXG4gIHN0eWxlPzogU3R5bGU7XHJcbiAgbGFiZWxTdHlsZT86IFN0eWxlO1xyXG4gIGlzVmlzaWJsZT86IGJvb2xlYW47XHJcbiAgZXJyb3I/OiBzdHJpbmc7XHJcbiAgZXJyb3JJY29uPzogc3RyaW5nO1xyXG4gIGVycm9ySWNvbkNvbG9yPzogc3RyaW5nO1xyXG4gIHNlcnZlckVycm9yTWVzc2FnZT86IHN0cmluZztcclxuICBzZXJ2ZXJFcnJvckljb24/OiBzdHJpbmc7XHJcbiAgc2VydmVyRXJyb3JDb2xvcj86IHN0cmluZztcclxuICBkYXRlRm9ybWF0SGludD86IHN0cmluZztcclxuICBtaW5EYXRlPzogRGF0ZTtcclxuICBtYXhEYXRlPzogRGF0ZTtcclxuICBmaWx0ZXI/OiAoZDogRGF0ZSB8IG51bGwpID0+IGJvb2xlYW47XHJcbiAgaGludD86IFNtYXJ0V2lkZ2V0SGludDtcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIFNtYXJ0RGF0ZVRpbWVQaWNrZXI8VD4ge1xyXG4gIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuREFURV9USU1FX1BJQ0tFUjtcclxuICBrZXk6IHN0cmluZztcclxuICB2YWx1ZUNoYW5nZU1vZGU/OiBWYWx1ZUNoYW5nZU1vZGU7XHJcbiAgbGFiZWw6IHN0cmluZztcclxuICBvcmlnaW5hbExhYmVsPzogc3RyaW5nO1xyXG4gIHNob3dMYWJlbD86IGJvb2xlYW47XHJcbiAgdmFsdWU/OiBUO1xyXG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xyXG4gIG1pbldpZHRoPzogU21hcnRGb3JtV2lkZ2V0V2lkdGggfCBudW1iZXI7XHJcbiAgaXNEaXNhYmxlZD86IGJvb2xlYW47XHJcbiAgaXNSZWFkb25seT86IGJvb2xlYW47XHJcbiAgdmFsaWRhdG9ycz86IFNtYXJ0VmFsaWRhdG9yW107XHJcbiAgY3NzQ2xhc3M/OiBzdHJpbmc7XHJcbiAgY3NzTGFiZWxDbGFzcz86IHN0cmluZztcclxuICBzdHlsZT86IFN0eWxlO1xyXG4gIGxhYmVsU3R5bGU/OiBTdHlsZTtcclxuICBpc1Zpc2libGU/OiBib29sZWFuO1xyXG4gIGVycm9yPzogc3RyaW5nO1xyXG4gIGVycm9ySWNvbj86IHN0cmluZztcclxuICBlcnJvckljb25Db2xvcj86IHN0cmluZztcclxuICBzZXJ2ZXJFcnJvck1lc3NhZ2U/OiBzdHJpbmc7XHJcbiAgc2VydmVyRXJyb3JJY29uPzogc3RyaW5nO1xyXG4gIHNlcnZlckVycm9yQ29sb3I/OiBzdHJpbmc7XHJcbiAgZGF0ZUZvcm1hdEhpbnQ/OiBzdHJpbmc7XHJcbiAgZmlsdGVyPzogKGQ6IERhdGUgfCBudWxsKSA9PiBib29sZWFuO1xyXG4gIGhpbnQ/OiBTbWFydFdpZGdldEhpbnQ7XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBTbWFydENvbnRhaW5lcjxUPiB7XHJcbiAga2V5Pzogc3RyaW5nO1xyXG4gIHZhbHVlQ2hhbmdlTW9kZT86IFZhbHVlQ2hhbmdlTW9kZTtcclxuICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLkNPTlRBSU5FUjtcclxuICBpc1Zpc2libGU/OiBib29sZWFuO1xyXG4gIHZhbHVlTGlzdDogU21hcnRGb3JtV2lkZ2V0PFQ+W107XHJcbiAgZGlyZWN0aW9uPzogU21hcnRGb3JtV2lkZ2V0RGlyZWN0aW9uO1xyXG4gIGNzc0NsYXNzPzogc3RyaW5nO1xyXG4gIHN0eWxlPzogU3R5bGU7XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBTbWFydExhYmVsIHtcclxuICBrZXk/OiBzdHJpbmc7XHJcbiAgdmFsdWVDaGFuZ2VNb2RlPzogVmFsdWVDaGFuZ2VNb2RlO1xyXG4gIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuTEFCRUw7XHJcbiAgaXNWaXNpYmxlPzogYm9vbGVhbjtcclxuICBjc3NDbGFzcz86IHN0cmluZztcclxuICBzdHlsZT86IFN0eWxlO1xyXG4gIGxhYmVsU3R5bGU/OiBTdHlsZTtcclxuICBsYWJlbDogc3RyaW5nO1xyXG4gIG9yaWdpbmFsTGFiZWw/OiBzdHJpbmc7XHJcbiAgd2lkZ2V0RGVzY3JpcHRpb24/OiBzdHJpbmc7XHJcbiAgbWluV2lkdGg/OiBTbWFydEZvcm1XaWRnZXRXaWR0aCB8IG51bWJlcjtcclxuICBtYXJrQXNSZXF1aXJlZD86IGJvb2xlYW47XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBTbWFydFRpbWU8VD4ge1xyXG4gIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuVElNRTtcclxuICBrZXk6IHN0cmluZztcclxuICB2YWx1ZUNoYW5nZU1vZGU/OiBWYWx1ZUNoYW5nZU1vZGU7XHJcbiAgdmFsdWU/OiBUO1xyXG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xyXG4gIGxhYmVsOiBzdHJpbmc7XHJcbiAgb3JpZ2luYWxMYWJlbD86IHN0cmluZztcclxuICBzaG93TGFiZWw/OiBib29sZWFuO1xyXG4gIG1pbldpZHRoPzogU21hcnRGb3JtV2lkZ2V0V2lkdGggfCBudW1iZXI7XHJcbiAgaXNWaXNpYmxlPzogYm9vbGVhbjtcclxuICBjc3NDbGFzcz86IHN0cmluZztcclxuICBjc3NMYWJlbENsYXNzPzogc3RyaW5nO1xyXG4gIHN0eWxlPzogU3R5bGU7XHJcbiAgbGFiZWxTdHlsZT86IFN0eWxlO1xyXG4gIGlzRGlzYWJsZWQ/OiBib29sZWFuO1xyXG4gIGlzUmVhZG9ubHk/OiBib29sZWFuO1xyXG4gIHZhbGlkYXRvcnM/OiBTbWFydFZhbGlkYXRvcltdO1xyXG4gIGVycm9yPzogc3RyaW5nO1xyXG4gIGVycm9ySWNvbj86IHN0cmluZztcclxuICBlcnJvckljb25Db2xvcj86IHN0cmluZztcclxuICBzZXJ2ZXJFcnJvck1lc3NhZ2U/OiBzdHJpbmc7XHJcbiAgc2VydmVyRXJyb3JJY29uPzogc3RyaW5nO1xyXG4gIHNlcnZlckVycm9yQ29sb3I/OiBzdHJpbmc7XHJcbiAgaGludD86IFNtYXJ0V2lkZ2V0SGludDtcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIFNtYXJ0VG9nZ2xlPFQ+IHtcclxuICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLlRPR0dMRTtcclxuICBrZXk6IHN0cmluZztcclxuICB2YWx1ZUNoYW5nZU1vZGU/OiBWYWx1ZUNoYW5nZU1vZGU7XHJcbiAgdmFsdWU/OiBUO1xyXG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xyXG4gIGxhYmVsOiBzdHJpbmc7XHJcbiAgb3JpZ2luYWxMYWJlbD86IHN0cmluZztcclxuICBzaG93TGFiZWw/OiBib29sZWFuO1xyXG4gIGlzVmlzaWJsZT86IGJvb2xlYW47XHJcbiAgY3NzQ2xhc3M/OiBzdHJpbmc7XHJcbiAgY3NzTGFiZWxDbGFzcz86IHN0cmluZztcclxuICBzdHlsZT86IFN0eWxlO1xyXG4gIGxhYmVsU3R5bGU/OiBTdHlsZTtcclxuICBpc0Rpc2FibGVkPzogYm9vbGVhbjtcclxuICBpc1JlYWRvbmx5PzogYm9vbGVhbjtcclxuICB0b2dnbGVMYWJlbFBvc2l0aW9uPzogVG9nZ2xlTGFiZWxQb3NpdGlvbjtcclxuICB2YWxpZGF0b3JzPzogU21hcnRWYWxpZGF0b3JbXTtcclxuICBlcnJvcj86IHN0cmluZztcclxuICBlcnJvckljb24/OiBzdHJpbmc7XHJcbiAgZXJyb3JJY29uQ29sb3I/OiBzdHJpbmc7XHJcbiAgc2VydmVyRXJyb3JNZXNzYWdlPzogc3RyaW5nO1xyXG4gIHNlcnZlckVycm9ySWNvbj86IHN0cmluZztcclxuICBzZXJ2ZXJFcnJvckNvbG9yPzogc3RyaW5nO1xyXG4gIGhpbnQ/OiBTbWFydFdpZGdldEhpbnQ7XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBTbWFydEluZGljYXRvckl0ZW0ge1xyXG4gIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuSU5ESUNBVE9SO1xyXG4gIGtleTogc3RyaW5nO1xyXG4gIHZhbHVlQ2hhbmdlTW9kZT86IFZhbHVlQ2hhbmdlTW9kZTtcclxuICBsYWJlbDogc3RyaW5nO1xyXG4gIG9yaWdpbmFsTGFiZWw/OiBzdHJpbmc7XHJcbiAgc2hvd0xhYmVsPzogYm9vbGVhbjtcclxuICBpbmRpY2F0b3I6IFNtYXJ0SW5kaWNhdG9yO1xyXG4gIGlzVmlzaWJsZT86IGJvb2xlYW47XHJcbiAgY3NzQ2xhc3M/OiBzdHJpbmc7XHJcbiAgY3NzTGFiZWxDbGFzcz86IHN0cmluZztcclxuICBzdHlsZT86IFN0eWxlO1xyXG4gIGxhYmVsU3R5bGU/OiBTdHlsZTtcclxufVxyXG5cclxuZXhwb3J0IGRlY2xhcmUgdHlwZSBTbWFydEl0ZW1zPFQ+ID0gU21hcnRJdGVtPFQ+IHwgU21hcnRJdGVtR3JvdXA8VD47XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNtYXJ0SXRlbTxUPiB7XHJcbiAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5JVEVNO1xyXG4gIGtleTogc3RyaW5nO1xyXG4gIHZhbHVlQ2hhbmdlTW9kZT86IFZhbHVlQ2hhbmdlTW9kZTtcclxuICBsYWJlbDogc3RyaW5nO1xyXG4gIGNzc0xhYmVsQ2xhc3M/OiBzdHJpbmc7XHJcbiAgc3R5bGU/OiBTdHlsZTtcclxuICBsYWJlbFN0eWxlPzogU3R5bGU7XHJcbiAgb3JpZ2luYWxMYWJlbD86IHN0cmluZztcclxuICB2YWx1ZT86IFQ7XHJcbiAgaXNEaXNhYmxlZD86IGJvb2xlYW47XHJcbiAgaWNvbj86IHN0cmluZztcclxuICBpY29uQ29sb3I/OiBzdHJpbmc7XHJcbiAgaW1hZ2VVcmw/OiBzdHJpbmc7XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBTbWFydEl0ZW1Hcm91cDxUPiB7XHJcbiAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5JVEVNX0dST1VQO1xyXG4gIGtleTogc3RyaW5nO1xyXG4gIHZhbHVlQ2hhbmdlTW9kZT86IFZhbHVlQ2hhbmdlTW9kZTtcclxuICBsYWJlbDogc3RyaW5nO1xyXG4gIGNzc0xhYmVsQ2xhc3M/OiBzdHJpbmc7XHJcbiAgc3R5bGU/OiBTdHlsZTtcclxuICBsYWJlbFN0eWxlPzogU3R5bGU7XHJcbiAgb3JpZ2luYWxMYWJlbD86IHN0cmluZztcclxuICBpc0Rpc2FibGVkPzogYm9vbGVhbjtcclxuICB2YWx1ZUxpc3Q6IFNtYXJ0SXRlbTxUPltdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNtYXJ0RmlsZVVwbG9hZGVyIHtcclxuICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLkZJTEVfVVBMT0FERVI7XHJcbiAga2V5OiBzdHJpbmc7XHJcbiAgdmFsdWVDaGFuZ2VNb2RlPzogVmFsdWVDaGFuZ2VNb2RlO1xyXG4gIGxhYmVsOiBzdHJpbmc7XHJcbiAgb3JpZ2luYWxMYWJlbD86IHN0cmluZztcclxuICBzaG93TGFiZWw/OiBib29sZWFuO1xyXG4gIGlzVmlzaWJsZT86IGJvb2xlYW47XHJcbiAgY3NzQ2xhc3M/OiBzdHJpbmc7XHJcbiAgY3NzTGFiZWxDbGFzcz86IHN0cmluZztcclxuICBzdHlsZT86IFN0eWxlO1xyXG4gIGxhYmVsU3R5bGU/OiBTdHlsZTtcclxuICB1cGxvYWRDYWxsYmFjazogKGtleTogc3RyaW5nLCBmaWxlczogYW55W10pID0+IHZvaWQ7XHJcbiAgZmlsZUZvcm1hdHM/OiBzdHJpbmdbXTtcclxuICBtYXhTaXplTWI/OiBudW1iZXI7XHJcbiAgaTE4bj86IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTbWFydEltYWdlIHtcclxuICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLklNQUdFO1xyXG4gIGtleTogc3RyaW5nO1xyXG4gIHZhbHVlQ2hhbmdlTW9kZT86IFZhbHVlQ2hhbmdlTW9kZTtcclxuICBsYWJlbDogc3RyaW5nO1xyXG4gIG9yaWdpbmFsTGFiZWw/OiBzdHJpbmc7XHJcbiAgc2hvd0xhYmVsPzogYm9vbGVhbjtcclxuICBpc1Zpc2libGU/OiBib29sZWFuO1xyXG4gIGNzc0NsYXNzPzogc3RyaW5nO1xyXG4gIGNzc0xhYmVsQ2xhc3M/OiBzdHJpbmc7XHJcbiAgc3R5bGU/OiBTdHlsZTtcclxuICBsYWJlbFN0eWxlPzogU3R5bGU7XHJcbiAgdmFsdWU/OiBzdHJpbmc7XHJcbiAgaW1hZ2VDc3M/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU21hcnREaXZpZGVyIHtcclxuICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLkRJVklERVI7XHJcbiAga2V5OiBzdHJpbmc7XHJcbiAgdmFsdWVDaGFuZ2VNb2RlPzogVmFsdWVDaGFuZ2VNb2RlO1xyXG4gIGxhYmVsOiBzdHJpbmc7XHJcbiAgb3JpZ2luYWxMYWJlbD86IHN0cmluZztcclxuICBzaG93TGFiZWw/OiBib29sZWFuO1xyXG4gIGlzVmlzaWJsZT86IGJvb2xlYW47XHJcbiAgY3NzQ2xhc3M/OiBzdHJpbmc7XHJcbiAgY3NzTGFiZWxDbGFzcz86IHN0cmluZztcclxuICBzdHlsZT86IFN0eWxlO1xyXG4gIGxhYmVsU3R5bGU/OiBTdHlsZTtcclxuICB2YWx1ZT86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTbWFydEJ1dHRvbiB7XHJcbiAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5CVVRUT047XHJcbiAga2V5OiBzdHJpbmc7XHJcbiAgdmFsdWVDaGFuZ2VNb2RlPzogVmFsdWVDaGFuZ2VNb2RlO1xyXG4gIGxhYmVsOiBzdHJpbmc7XHJcbiAgb3JpZ2luYWxMYWJlbD86IHN0cmluZztcclxuICBzaG93TGFiZWw/OiBib29sZWFuO1xyXG4gIGlzVmlzaWJsZT86IGJvb2xlYW47XHJcbiAgY3NzQ2xhc3M/OiBzdHJpbmc7XHJcbiAgY3NzTGFiZWxDbGFzcz86IHN0cmluZztcclxuICBzdHlsZT86IFN0eWxlO1xyXG4gIGxhYmVsU3R5bGU/OiBTdHlsZTtcclxuICB2YWx1ZT86IHN0cmluZztcclxuICB1aUFjdGlvbj86IGFueTtcclxuICB1aUFjdGlvbkRlc2NyaXB0b3I6IGFueTtcclxuICBjYWxsYmFjazogKCh1aUFjdGlvbjogYW55KSA9PiB2b2lkKSB8ICgoa2V5OiBzdHJpbmcpID0+IHZvaWQpO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgU21hcnRGb3JtSW5saW5lQ29tcG9uZW50IHtcclxuICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLkNPTVBPTkVOVDtcclxuICBrZXk6IHN0cmluZztcclxuICB2YWx1ZUNoYW5nZU1vZGU/OiBWYWx1ZUNoYW5nZU1vZGU7XHJcbiAgbGFiZWw6IHN0cmluZztcclxuICBvcmlnaW5hbExhYmVsPzogc3RyaW5nO1xyXG4gIHNob3dMYWJlbD86IGJvb2xlYW47XHJcbiAgaXNWaXNpYmxlPzogYm9vbGVhbjtcclxuICBjc3NDbGFzcz86IHN0cmluZztcclxuICBjc3NMYWJlbENsYXNzPzogc3RyaW5nO1xyXG4gIHN0eWxlPzogU3R5bGU7XHJcbiAgbGFiZWxTdHlsZT86IFN0eWxlO1xyXG4gIGNvbXBvbmVudDogYW55O1xyXG4gIGlucHV0OiBNYXA8c3RyaW5nLCBhbnk+O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNtYXJ0UmljaFRleHQge1xyXG4gIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuUklDSF9URVhUO1xyXG4gIGtleTogc3RyaW5nO1xyXG4gIHZhbHVlQ2hhbmdlTW9kZT86IFZhbHVlQ2hhbmdlTW9kZTtcclxuICBsYWJlbDogc3RyaW5nO1xyXG4gIHZhbHVlPzogc3RyaW5nO1xyXG4gIG9yaWdpbmFsTGFiZWw/OiBzdHJpbmc7XHJcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XHJcbiAgb3JpZ2luYWxQbGFjZWhvbGRlcj86IHN0cmluZztcclxuICBxdWlsbE1vZHVsZXM6IFF1aWxsTW9kdWxlcztcclxuICBzaG93TGFiZWw/OiBib29sZWFuO1xyXG4gIGlzVmlzaWJsZT86IGJvb2xlYW47XHJcbiAgY3NzQ2xhc3M/OiBzdHJpbmc7XHJcbiAgY3NzTGFiZWxDbGFzcz86IHN0cmluZztcclxuICBzdHlsZT86IFN0eWxlO1xyXG4gIGxhYmVsU3R5bGU/OiBTdHlsZTtcclxuICBpc0Rpc2FibGVkPzogYm9vbGVhbjtcclxuICBpc1JlYWRvbmx5PzogYm9vbGVhbjtcclxuICB2YWxpZGF0b3JzPzogU21hcnRWYWxpZGF0b3JbXTtcclxuICBlcnJvcj86IHN0cmluZztcclxuICBlcnJvckljb24/OiBzdHJpbmc7XHJcbiAgZXJyb3JJY29uQ29sb3I/OiBzdHJpbmc7XHJcbiAgc2VydmVyRXJyb3JNZXNzYWdlPzogc3RyaW5nO1xyXG4gIHNlcnZlckVycm9ySWNvbj86IHN0cmluZztcclxuICBzZXJ2ZXJFcnJvckNvbG9yPzogc3RyaW5nO1xyXG4gIGhpbnQ/OiBTbWFydFdpZGdldEhpbnQ7XHJcbiAgbWF4TGVuZ3RoPzogbnVtYmVyO1xyXG4gIHNob3dDaGFyYWN0ZXJMaW1pdFN1ZmZpeD86IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU21hcnRTb3J0YWJsZTxUPiB7XHJcbiAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5TT1JUQUJMRTtcclxuICBrZXk6IHN0cmluZztcclxuICB2YWx1ZUNoYW5nZU1vZGU/OiBWYWx1ZUNoYW5nZU1vZGU7XHJcbiAgbGFiZWw6IHN0cmluZztcclxuICB2YWx1ZT86IHN0cmluZztcclxuICBvcmlnaW5hbExhYmVsPzogc3RyaW5nO1xyXG4gIHNob3dMYWJlbD86IGJvb2xlYW47XHJcbiAgaXNWaXNpYmxlPzogYm9vbGVhbjtcclxuICBjc3NDbGFzcz86IHN0cmluZztcclxuICBjc3NMYWJlbENsYXNzPzogc3RyaW5nO1xyXG4gIHN0eWxlPzogU3R5bGU7XHJcbiAgbGFiZWxTdHlsZT86IFN0eWxlO1xyXG4gIGlzRGlzYWJsZWQ/OiBib29sZWFuO1xyXG4gIGlzUmVhZG9ubHk/OiBib29sZWFuO1xyXG4gIGVycm9yPzogc3RyaW5nO1xyXG4gIGVycm9ySWNvbj86IHN0cmluZztcclxuICBlcnJvckljb25Db2xvcj86IHN0cmluZztcclxuICBzZXJ2ZXJFcnJvck1lc3NhZ2U/OiBzdHJpbmc7XHJcbiAgc2VydmVyRXJyb3JJY29uPzogc3RyaW5nO1xyXG4gIHNlcnZlckVycm9yQ29sb3I/OiBzdHJpbmc7XHJcbiAgdmFsaWRhdG9ycz86IFNtYXJ0VmFsaWRhdG9yW107XHJcbiAgdmFsdWVMaXN0PzogU21hcnRJdGVtPFQ+W107XHJcbiAgaXNNdWx0aXBsZT86IGJvb2xlYW47XHJcbiAgaGludD86IFNtYXJ0V2lkZ2V0SGludDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTbWFydE1hdHJpeCB7XHJcbiAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5NQVRSSVg7XHJcbiAga2V5OiBzdHJpbmc7XHJcbiAgdmFsdWVDaGFuZ2VNb2RlPzogVmFsdWVDaGFuZ2VNb2RlO1xyXG4gIGxhYmVsOiBzdHJpbmc7XHJcbiAgdmFsdWU/OiBhbnk7XHJcbiAgb3JpZ2luYWxMYWJlbD86IHN0cmluZztcclxuICBzaG93TGFiZWw/OiBib29sZWFuO1xyXG4gIGlzVmlzaWJsZT86IGJvb2xlYW47XHJcbiAgY3NzQ2xhc3M/OiBzdHJpbmc7XHJcbiAgY3NzTGFiZWxDbGFzcz86IHN0cmluZztcclxuICBzdHlsZT86IFN0eWxlO1xyXG4gIGxhYmVsU3R5bGU/OiBTdHlsZTtcclxuICBpc0Rpc2FibGVkPzogYm9vbGVhbjtcclxuICBpc1JlYWRvbmx5PzogYm9vbGVhbjtcclxuICBlcnJvcj86IHN0cmluZztcclxuICBlcnJvckljb24/OiBzdHJpbmc7XHJcbiAgZXJyb3JJY29uQ29sb3I/OiBzdHJpbmc7XHJcbiAgc2VydmVyRXJyb3JNZXNzYWdlPzogc3RyaW5nO1xyXG4gIHNlcnZlckVycm9ySWNvbj86IHN0cmluZztcclxuICBzZXJ2ZXJFcnJvckNvbG9yPzogc3RyaW5nO1xyXG4gIHZhbGlkYXRvcnM/OiBTbWFydFZhbGlkYXRvcltdO1xyXG4gIGlzTXVsdGlwbGU/OiBib29sZWFuO1xyXG4gIGhpbnQ/OiBTbWFydFdpZGdldEhpbnQ7XHJcbiAgYnV0dG9uPzogU21hcnRNYXRyaXhCdXR0b247XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU21hcnRNYXRyaXhCdXR0b24ge1xyXG4gIGljb25Db2RlPzogc3RyaW5nO1xyXG4gIGNhbGxiYWNrOiAod2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55Piwgcm93OiBhbnkpID0+IGFueTtcclxuICBjb2xvcj86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTbWFydFlvdXR1YmVQbGF5ZXIge1xyXG4gIGtleT86IHN0cmluZztcclxuICB2YWx1ZUNoYW5nZU1vZGU/OiBWYWx1ZUNoYW5nZU1vZGU7XHJcbiAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5ZT1VUVUJFX1BMQVlFUjtcclxuICBsaW5rPzogc3RyaW5nO1xyXG4gIHZpZGVvSWQ/OiBzdHJpbmc7XHJcbiAgaGVpZ2h0PzogbnVtYmVyO1xyXG4gIHdpZHRoPzogbnVtYmVyO1xyXG4gIHN0YXJ0U2Vjb25kcz86IG51bWJlciB8IDA7XHJcbiAgZW5kU2Vjb25kcz86IG51bWJlcjtcclxuICBjc3NDbGFzcz86IHN0cmluZztcclxuICBjc3NMYWJlbENsYXNzPzogc3RyaW5nO1xyXG4gIHN0eWxlPzogU3R5bGU7XHJcbiAgbGFiZWxTdHlsZT86IFN0eWxlO1xyXG4gIGlzVmlzaWJsZT86IGJvb2xlYW47XHJcbiAgbGFiZWw/OiBzdHJpbmc7XHJcbiAgdmFsaWRhdG9ycz86IFNtYXJ0VmFsaWRhdG9yW107XHJcbiAgaGludD86IFNtYXJ0V2lkZ2V0SGludDtcclxuICBzaG93TGFiZWw/OiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNtYXJ0TW9udGhQaWNrZXIge1xyXG4gIGtleTogc3RyaW5nO1xyXG4gIHZhbHVlQ2hhbmdlTW9kZT86IFZhbHVlQ2hhbmdlTW9kZTtcclxuICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLk1PTlRIX1BJQ0tFUjtcclxuICB2YWx1ZT86IHN0cmluZztcclxuICB2YWxpZGF0b3JzPzogU21hcnRWYWxpZGF0b3JbXTtcclxuICBsYWJlbDogc3RyaW5nO1xyXG4gIHNob3dMYWJlbD86IGJvb2xlYW47XHJcbiAgZXJyb3I/OiBzdHJpbmc7XHJcbiAgZXJyb3JJY29uPzogc3RyaW5nO1xyXG4gIGVycm9ySWNvbkNvbG9yPzogc3RyaW5nO1xyXG4gIHNlcnZlckVycm9yTWVzc2FnZT86IHN0cmluZztcclxuICBzZXJ2ZXJFcnJvckljb24/OiBzdHJpbmc7XHJcbiAgc2VydmVyRXJyb3JDb2xvcj86IHN0cmluZztcclxuICBjc3NDbGFzcz86IHN0cmluZztcclxuICBjc3NMYWJlbENsYXNzPzogc3RyaW5nO1xyXG4gIHN0eWxlPzogU3R5bGU7XHJcbiAgbGFiZWxTdHlsZT86IFN0eWxlO1xyXG4gIGlzVmlzaWJsZT86IGJvb2xlYW47XHJcbiAgaXNEaXNhYmxlZD86IGJvb2xlYW47XHJcbiAgb3JpZ2luYWxMYWJlbD86IHN0cmluZztcclxuICBoaW50PzogU21hcnRXaWRnZXRIaW50O1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgU21hcnRTdmcge1xyXG4gIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuU1ZHO1xyXG4gIGtleTogc3RyaW5nO1xyXG4gIHZhbHVlQ2hhbmdlTW9kZT86IFZhbHVlQ2hhbmdlTW9kZTtcclxuICBsYWJlbDogc3RyaW5nO1xyXG4gIG9yaWdpbmFsTGFiZWw/OiBzdHJpbmc7XHJcbiAgc2hvd0xhYmVsPzogYm9vbGVhbjtcclxuICBpc1Zpc2libGU/OiBib29sZWFuO1xyXG4gIGNzc0NsYXNzPzogc3RyaW5nO1xyXG4gIGNzc0xhYmVsQ2xhc3M/OiBzdHJpbmc7XHJcbiAgc3R5bGU/OiBTdHlsZTtcclxuICBsYWJlbFN0eWxlPzogU3R5bGU7XHJcbiAgdmFsdWU/OiBzdHJpbmc7XHJcbiAgbWluV2lkdGg/OiBTbWFydEZvcm1XaWRnZXRXaWR0aCB8IG51bWJlcjtcclxufVxyXG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRmb3JtLmZvcm0tbW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1mb3JtL3NtYXJ0Zm9ybS5mb3JtLW1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBRdWlsbE1vZHVsZXMgfSBmcm9tICduZ3gtcXVpbGwnO1xyXG5pbXBvcnQge1xyXG4gIFNlbGVjdGlvbkRlZmluaXRpb24sXHJcbiAgU21hcnRGb3JtSW5wdXRNb2RlLFxyXG4gIFNtYXJ0Rm9ybVdpZGdldERpcmVjdGlvbixcclxuICBTbWFydEZvcm1XaWRnZXRUeXBlLFxyXG4gIFNtYXJ0V2lkZ2V0SGludCxcclxuICBWYWx1ZUNoYW5nZU1vZGUsXHJcbn0gZnJvbSAnLi9hcGknO1xyXG5pbXBvcnQge1xyXG4gIFNtYXJ0Rm9ybVRleHRGaWVsZEJ1dHRvbixcclxuICBTbWFydEZvcm1XaWRnZXRXaWR0aCxcclxuICBTbWFydEluZGljYXRvcixcclxuICBTbWFydFZhbGlkYXRvcixcclxuICBUb2dnbGVMYWJlbFBvc2l0aW9uLFxyXG59IGZyb20gJy4vc21hcnRmb3JtLm1vZGVsJztcclxuaW1wb3J0IHsgU3R5bGUgfSBmcm9tICcuLi92aWV3LWNvbnRleHQvYXBpJztcclxuXHJcbmV4cG9ydCBkZWNsYXJlIHR5cGUgU21hcnRGb3JtV2lkZ2V0PFQ+ID1cclxuICB8IFNtYXJ0VGV4dEZpZWxkPFQ+XHJcbiAgfCBTbWFydFRleHRGaWVsZE51bWJlcjxUPlxyXG4gIHwgU21hcnRUZXh0RmllbGRDaGlwczxUPlxyXG4gIHwgU21hcnRUZXh0RmllbGRMb29rdXA8VD5cclxuICB8IFNtYXJ0VGV4dEJveDxUPlxyXG4gIHwgU21hcnRTZWxlY3Q8VD5cclxuICB8IFNtYXJ0U2VsZWN0TXVsdGlwbGU8VD5cclxuICB8IFNtYXJ0Q2hlY2tCb3g8VD5cclxuICB8IFNtYXJ0Q2hlY2tCb3gyPFQ+XHJcbiAgfCBTbWFydFJhZGlvQnV0dG9uPFQ+XHJcbiAgfCBTbWFydERhdGVQaWNrZXI8VD5cclxuICB8IFNtYXJ0RGF0ZVRpbWVQaWNrZXI8VD5cclxuICB8IFNtYXJ0Q29udGFpbmVyPFQ+XHJcbiAgfCBTbWFydExhYmVsXHJcbiAgfCBTbWFydFRpbWU8VD5cclxuICB8IFNtYXJ0VG9nZ2xlPFQ+XHJcbiAgfCBTbWFydEluZGljYXRvckl0ZW1cclxuICB8IFNtYXJ0RmlsZVVwbG9hZGVyXHJcbiAgfCBTbWFydEltYWdlXHJcbiAgfCBTbWFydERpdmlkZXJcclxuICB8IFNtYXJ0QnV0dG9uXHJcbiAgfCBTbWFydEZvcm1JbmxpbmVDb21wb25lbnRcclxuICB8IFNtYXJ0UmljaFRleHRcclxuICB8IFNtYXJ0U29ydGFibGU8VD5cclxuICB8IFNtYXJ0TWF0cml4XHJcbiAgfCBTbWFydFlvdXR1YmVQbGF5ZXJcclxuICB8IFNtYXJ0TW9udGhQaWNrZXJcclxuICB8IFNtYXJ0U3ZnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTbWFydFRleHRGaWVsZDxUPiB7XHJcbiAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5URVhUX0ZJRUxEO1xyXG4gIGtleTogc3RyaW5nO1xyXG4gIHZhbHVlQ2hhbmdlTW9kZT86IFZhbHVlQ2hhbmdlTW9kZTtcclxuICBsYWJlbDogc3RyaW5nO1xyXG4gIG9yaWdpbmFsTGFiZWw/OiBzdHJpbmc7XHJcbiAgc2hvd0xhYmVsPzogYm9vbGVhbjtcclxuICB2YWx1ZT86IFQ7XHJcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XHJcbiAgb3JpZ2luYWxQbGFjZWhvbGRlcj86IHN0cmluZztcclxuICBtaW5XaWR0aD86IFNtYXJ0Rm9ybVdpZGdldFdpZHRoIHwgbnVtYmVyIHwgbnVtYmVyO1xyXG4gIGlzRGlzYWJsZWQ/OiBib29sZWFuO1xyXG4gIGlzUmVhZG9ubHk/OiBib29sZWFuO1xyXG4gIHByZWZpeD86IHN0cmluZztcclxuICBzdWZmaXg/OiBzdHJpbmc7XHJcbiAgdmFsaWRhdG9ycz86IFNtYXJ0VmFsaWRhdG9yW107XHJcbiAgY3NzQ2xhc3M/OiBzdHJpbmc7XHJcbiAgY3NzTGFiZWxDbGFzcz86IHN0cmluZztcclxuICBzdHlsZT86IFN0eWxlO1xyXG4gIGxhYmVsU3R5bGU/OiBTdHlsZTtcclxuICBpc1Bhc3N3b3JkPzogYm9vbGVhbjtcclxuICB0ZXh0RmllbGRCdXR0b24/OiBTbWFydEZvcm1UZXh0RmllbGRCdXR0b247XHJcbiAgY2Fwc0xvY2tXYXJuaW5nPzogc3RyaW5nO1xyXG4gIGNhcHNMb2NrV2FybmluZ0ljb24/OiBzdHJpbmc7XHJcbiAgaXNWaXNpYmxlPzogYm9vbGVhbjtcclxuICBtYXNrPzogc3RyaW5nO1xyXG4gIGVycm9yPzogc3RyaW5nO1xyXG4gIGljb24/OiBzdHJpbmc7XHJcbiAgaWNvbkNvbG9yPzogc3RyaW5nO1xyXG4gIGljb25Qb3NpdGlvbj86ICdQUkUnIHwgJ1BPU1QnO1xyXG4gIGVycm9ySWNvbj86IHN0cmluZztcclxuICBlcnJvckljb25Db2xvcj86IHN0cmluZztcclxuICBzZXJ2ZXJFcnJvck1lc3NhZ2U/OiBzdHJpbmc7XHJcbiAgc2VydmVyRXJyb3JJY29uPzogc3RyaW5nO1xyXG4gIHNlcnZlckVycm9yQ29sb3I/OiBzdHJpbmc7XHJcbiAgdmFsdWVMaXN0PzogU21hcnRJdGVtPFQ+W107XHJcbiAgc2VsZWN0aW9uPzogU2VsZWN0aW9uRGVmaW5pdGlvbjtcclxuICBmaWx0ZXJFcnJvck1lc3NhZ2U/OiBzdHJpbmc7XHJcbiAgaGludD86IFNtYXJ0V2lkZ2V0SGludDtcclxuICBtYXhMZW5ndGg/OiBudW1iZXI7XHJcbiAgc2hvd0NoYXJhY3RlckxpbWl0U3VmZml4PzogYm9vbGVhbjtcclxuICB0b29sYmFySWQ/OiBzdHJpbmc7XHJcbiAgaW5wdXRNb2RlPzogU21hcnRGb3JtSW5wdXRNb2RlO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNtYXJ0VGV4dEZpZWxkTnVtYmVyPFQ+IHtcclxuICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLlRFWFRfRklFTERfTlVNQkVSO1xyXG4gIGtleTogc3RyaW5nO1xyXG4gIHZhbHVlQ2hhbmdlTW9kZT86IFZhbHVlQ2hhbmdlTW9kZTtcclxuICBsYWJlbDogc3RyaW5nO1xyXG4gIG9yaWdpbmFsTGFiZWw/OiBzdHJpbmc7XHJcbiAgc2hvd0xhYmVsPzogYm9vbGVhbjtcclxuICB2YWx1ZT86IFQ7XHJcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XHJcbiAgb3JpZ2luYWxQbGFjZWhvbGRlcj86IHN0cmluZztcclxuICBtaW5XaWR0aD86IFNtYXJ0Rm9ybVdpZGdldFdpZHRoIHwgbnVtYmVyIHwgbnVtYmVyO1xyXG4gIGlzRGlzYWJsZWQ/OiBib29sZWFuO1xyXG4gIGlzUmVhZG9ubHk/OiBib29sZWFuO1xyXG4gIHByZWZpeD86IHN0cmluZztcclxuICBzdWZmaXg/OiBzdHJpbmc7XHJcbiAgdmFsaWRhdG9ycz86IFNtYXJ0VmFsaWRhdG9yW107XHJcbiAgY3NzQ2xhc3M/OiBzdHJpbmc7XHJcbiAgY3NzTGFiZWxDbGFzcz86IHN0cmluZztcclxuICBzdHlsZT86IFN0eWxlO1xyXG4gIGxhYmVsU3R5bGU/OiBTdHlsZTtcclxuICB0ZXh0RmllbGRCdXR0b24/OiBTbWFydEZvcm1UZXh0RmllbGRCdXR0b247XHJcbiAgaXNWaXNpYmxlPzogYm9vbGVhbjtcclxuICBtaW5WYWx1ZXM/OiBudW1iZXI7XHJcbiAgbWF4VmFsdWVzPzogbnVtYmVyO1xyXG4gIGVycm9yPzogc3RyaW5nO1xyXG4gIGljb24/OiBzdHJpbmc7XHJcbiAgaWNvbkNvbG9yPzogc3RyaW5nO1xyXG4gIGVycm9ySWNvbj86IHN0cmluZztcclxuICBlcnJvckljb25Db2xvcj86IHN0cmluZztcclxuICBzZXJ2ZXJFcnJvck1lc3NhZ2U/OiBzdHJpbmc7XHJcbiAgc2VydmVyRXJyb3JJY29uPzogc3RyaW5nO1xyXG4gIHNlcnZlckVycm9yQ29sb3I/OiBzdHJpbmc7XHJcbiAgaGludD86IFNtYXJ0V2lkZ2V0SGludDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTbWFydFRleHRGaWVsZENoaXBzPFQ+IHtcclxuICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLlRFWFRfRklFTERfQ0hJUFM7XHJcbiAga2V5OiBzdHJpbmc7XHJcbiAgdmFsdWVDaGFuZ2VNb2RlPzogVmFsdWVDaGFuZ2VNb2RlO1xyXG4gIGxhYmVsOiBzdHJpbmc7XHJcbiAgb3JpZ2luYWxMYWJlbD86IHN0cmluZztcclxuICBzaG93TGFiZWw/OiBib29sZWFuO1xyXG4gIHZhbHVlPzogVDtcclxuICBwbGFjZWhvbGRlcj86IHN0cmluZztcclxuICBvcmlnaW5hbFBsYWNlaG9sZGVyPzogc3RyaW5nO1xyXG4gIG1pbldpZHRoPzogU21hcnRGb3JtV2lkZ2V0V2lkdGggfCBudW1iZXI7XHJcbiAgaXNEaXNhYmxlZD86IGJvb2xlYW47XHJcbiAgaXNSZWFkb25seT86IGJvb2xlYW47XHJcbiAgdmFsaWRhdG9ycz86IFNtYXJ0VmFsaWRhdG9yW107XHJcbiAgY3NzQ2xhc3M/OiBzdHJpbmc7XHJcbiAgY3NzTGFiZWxDbGFzcz86IHN0cmluZztcclxuICBzdHlsZT86IFN0eWxlO1xyXG4gIGxhYmVsU3R5bGU/OiBTdHlsZTtcclxuICBpc1Zpc2libGU/OiBib29sZWFuO1xyXG4gIGVycm9yPzogc3RyaW5nO1xyXG4gIGVycm9ySWNvbj86IHN0cmluZztcclxuICBlcnJvckljb25Db2xvcj86IHN0cmluZztcclxuICBzZXJ2ZXJFcnJvck1lc3NhZ2U/OiBzdHJpbmc7XHJcbiAgc2VydmVyRXJyb3JJY29uPzogc3RyaW5nO1xyXG4gIHNlcnZlckVycm9yQ29sb3I/OiBzdHJpbmc7XHJcbiAgdmFsdWVMaXN0OiBTbWFydEl0ZW08VD5bXTtcclxuICBtaW5WYWx1ZXM/OiBudW1iZXI7XHJcbiAgbWF4VmFsdWVzPzogbnVtYmVyO1xyXG4gIGhpbnQ/OiBTbWFydFdpZGdldEhpbnQ7XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBTbWFydFRleHRGaWVsZExvb2t1cDxUPiB7XHJcbiAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5URVhUX0ZJRUxEX0xPT0tVUDtcclxuICBrZXk6IHN0cmluZztcclxuICB2YWx1ZUNoYW5nZU1vZGU/OiBWYWx1ZUNoYW5nZU1vZGU7XHJcbiAgbGFiZWw6IHN0cmluZztcclxuICBvcmlnaW5hbExhYmVsPzogc3RyaW5nO1xyXG4gIHNob3dMYWJlbD86IGJvb2xlYW47XHJcbiAgdmFsdWU/OiBUO1xyXG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xyXG4gIG9yaWdpbmFsUGxhY2Vob2xkZXI/OiBzdHJpbmc7XHJcbiAgbWluV2lkdGg/OiBTbWFydEZvcm1XaWRnZXRXaWR0aCB8IG51bWJlcjtcclxuICBpc0Rpc2FibGVkPzogYm9vbGVhbjtcclxuICBpc1JlYWRvbmx5PzogYm9vbGVhbjtcclxuICB2YWxpZGF0b3JzPzogU21hcnRWYWxpZGF0b3JbXTtcclxuICBjc3NDbGFzcz86IHN0cmluZztcclxuICBjc3NMYWJlbENsYXNzPzogc3RyaW5nO1xyXG4gIHN0eWxlPzogU3R5bGU7XHJcbiAgbGFiZWxTdHlsZT86IFN0eWxlO1xyXG4gIGlzVmlzaWJsZT86IGJvb2xlYW47XHJcbiAgZXJyb3I/OiBzdHJpbmc7XHJcbiAgZXJyb3JJY29uPzogc3RyaW5nO1xyXG4gIGVycm9ySWNvbkNvbG9yPzogc3RyaW5nO1xyXG4gIHNlcnZlckVycm9yTWVzc2FnZT86IHN0cmluZztcclxuICBzZXJ2ZXJFcnJvckljb24/OiBzdHJpbmc7XHJcbiAgc2VydmVyRXJyb3JDb2xvcj86IHN0cmluZztcclxuICBtaW5WYWx1ZXM/OiBudW1iZXI7XHJcbiAgbWF4VmFsdWVzPzogbnVtYmVyO1xyXG4gIGhpbnQ/OiBTbWFydFdpZGdldEhpbnQ7XHJcbiAgdG9vbGJhcklkPzogc3RyaW5nO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgU21hcnRUZXh0Qm94PFQ+IHtcclxuICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLlRFWFRfQk9YO1xyXG4gIGtleTogc3RyaW5nO1xyXG4gIHZhbHVlQ2hhbmdlTW9kZT86IFZhbHVlQ2hhbmdlTW9kZTtcclxuICBsYWJlbDogc3RyaW5nO1xyXG4gIG9yaWdpbmFsTGFiZWw/OiBzdHJpbmc7XHJcbiAgc2hvd0xhYmVsPzogYm9vbGVhbjtcclxuICB2YWx1ZT86IFQ7XHJcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XHJcbiAgb3JpZ2luYWxQbGFjZWhvbGRlcj86IHN0cmluZztcclxuICBtaW5XaWR0aD86IFNtYXJ0Rm9ybVdpZGdldFdpZHRoIHwgbnVtYmVyO1xyXG4gIGlzRGlzYWJsZWQ/OiBib29sZWFuO1xyXG4gIGlzUmVhZG9ubHk/OiBib29sZWFuO1xyXG4gIHZhbGlkYXRvcnM/OiBTbWFydFZhbGlkYXRvcltdO1xyXG4gIGNzc0NsYXNzPzogc3RyaW5nO1xyXG4gIGNzc0xhYmVsQ2xhc3M/OiBzdHJpbmc7XHJcbiAgc3R5bGU/OiBTdHlsZTtcclxuICBsYWJlbFN0eWxlPzogU3R5bGU7XHJcbiAgaXNWaXNpYmxlPzogYm9vbGVhbjtcclxuICBlcnJvcj86IHN0cmluZztcclxuICBlcnJvckljb24/OiBzdHJpbmc7XHJcbiAgZXJyb3JJY29uQ29sb3I/OiBzdHJpbmc7XHJcbiAgc2VydmVyRXJyb3JNZXNzYWdlPzogc3RyaW5nO1xyXG4gIHNlcnZlckVycm9ySWNvbj86IHN0cmluZztcclxuICBzZXJ2ZXJFcnJvckNvbG9yPzogc3RyaW5nO1xyXG4gIGhpbnQ/OiBTbWFydFdpZGdldEhpbnQ7XHJcbiAgbWF4TGVuZ3RoPzogbnVtYmVyO1xyXG4gIHNob3dDaGFyYWN0ZXJMaW1pdFN1ZmZpeD86IGJvb2xlYW47XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBTbWFydFNlbGVjdDxUPiB7XHJcbiAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5TRUxFQ1Q7XHJcbiAga2V5OiBzdHJpbmc7XHJcbiAgdmFsdWVDaGFuZ2VNb2RlPzogVmFsdWVDaGFuZ2VNb2RlO1xyXG4gIGxhYmVsOiBzdHJpbmc7XHJcbiAgb3JpZ2luYWxMYWJlbD86IHN0cmluZztcclxuICBzaG93TGFiZWw/OiBib29sZWFuO1xyXG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xyXG4gIHZhbHVlPzogVDtcclxuICBtaW5XaWR0aD86IFNtYXJ0Rm9ybVdpZGdldFdpZHRoIHwgbnVtYmVyO1xyXG4gIGlzRGlzYWJsZWQ/OiBib29sZWFuO1xyXG4gIGlzUmVhZG9ubHk/OiBib29sZWFuO1xyXG4gIHZhbGlkYXRvcnM/OiBTbWFydFZhbGlkYXRvcltdO1xyXG4gIGNzc0NsYXNzPzogc3RyaW5nO1xyXG4gIGNzc0xhYmVsQ2xhc3M/OiBzdHJpbmc7XHJcbiAgc3R5bGU/OiBTdHlsZTtcclxuICBsYWJlbFN0eWxlPzogU3R5bGU7XHJcbiAgaXNWaXNpYmxlPzogYm9vbGVhbjtcclxuICBlcnJvcj86IHN0cmluZztcclxuICBlcnJvckljb24/OiBzdHJpbmc7XHJcbiAgZXJyb3JJY29uQ29sb3I/OiBzdHJpbmc7XHJcbiAgc2VydmVyRXJyb3JNZXNzYWdlPzogc3RyaW5nO1xyXG4gIHNlcnZlckVycm9ySWNvbj86IHN0cmluZztcclxuICBzZXJ2ZXJFcnJvckNvbG9yPzogc3RyaW5nO1xyXG4gIHZhbHVlTGlzdDogU21hcnRJdGVtczxUPltdO1xyXG4gIHNlbGVjdGlvbj86IFNlbGVjdGlvbkRlZmluaXRpb247XHJcbiAgaGludD86IFNtYXJ0V2lkZ2V0SGludDtcclxuICBjb21wYXJlV2l0aD86IChvMTogYW55LCBvMjogYW55KSA9PiBib29sZWFuO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgU21hcnRTZWxlY3RNdWx0aXBsZTxUPiB7XHJcbiAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5TRUxFQ1RfTVVMVElQTEU7XHJcbiAga2V5OiBzdHJpbmc7XHJcbiAgdmFsdWVDaGFuZ2VNb2RlPzogVmFsdWVDaGFuZ2VNb2RlO1xyXG4gIGxhYmVsOiBzdHJpbmc7XHJcbiAgb3JpZ2luYWxMYWJlbD86IHN0cmluZztcclxuICBzaG93TGFiZWw/OiBib29sZWFuO1xyXG4gIHZhbHVlPzogVDtcclxuICBtaW5XaWR0aD86IFNtYXJ0Rm9ybVdpZGdldFdpZHRoIHwgbnVtYmVyO1xyXG4gIGlzRGlzYWJsZWQ/OiBib29sZWFuO1xyXG4gIGlzUmVhZG9ubHk/OiBib29sZWFuO1xyXG4gIHZhbGlkYXRvcnM/OiBTbWFydFZhbGlkYXRvcltdO1xyXG4gIGNzc0NsYXNzPzogc3RyaW5nO1xyXG4gIGNzc0xhYmVsQ2xhc3M/OiBzdHJpbmc7XHJcbiAgc3R5bGU/OiBTdHlsZTtcclxuICBsYWJlbFN0eWxlPzogU3R5bGU7XHJcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XHJcbiAgaXNWaXNpYmxlPzogYm9vbGVhbjtcclxuICBlcnJvcj86IHN0cmluZztcclxuICBlcnJvckljb24/OiBzdHJpbmc7XHJcbiAgZXJyb3JJY29uQ29sb3I/OiBzdHJpbmc7XHJcbiAgc2VydmVyRXJyb3JNZXNzYWdlPzogc3RyaW5nO1xyXG4gIHNlcnZlckVycm9ySWNvbj86IHN0cmluZztcclxuICBzZXJ2ZXJFcnJvckNvbG9yPzogc3RyaW5nO1xyXG4gIHZhbHVlTGlzdDogU21hcnRJdGVtczxUPltdO1xyXG4gIHNlbGVjdGlvbj86IFNlbGVjdGlvbkRlZmluaXRpb247XHJcbiAgaGludD86IFNtYXJ0V2lkZ2V0SGludDtcclxuICBjb21wYXJlV2l0aD86IChvMTogYW55LCBvMjogYW55KSA9PiBib29sZWFuO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgU21hcnRDaGVja0JveDxUPiB7XHJcbiAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5DSEVDS19CT1g7XHJcbiAga2V5OiBzdHJpbmc7XHJcbiAgdmFsdWVDaGFuZ2VNb2RlPzogVmFsdWVDaGFuZ2VNb2RlO1xyXG4gIGxhYmVsOiBzdHJpbmc7XHJcbiAgb3JpZ2luYWxMYWJlbD86IHN0cmluZztcclxuICBzaG93TGFiZWw/OiBib29sZWFuO1xyXG4gIHZhbHVlPzogVDtcclxuICBtaW5XaWR0aD86IFNtYXJ0Rm9ybVdpZGdldFdpZHRoIHwgbnVtYmVyO1xyXG4gIGlzRGlzYWJsZWQ/OiBib29sZWFuO1xyXG4gIGlzUmVhZG9ubHk/OiBib29sZWFuO1xyXG4gIHZhbGlkYXRvcnM/OiBTbWFydFZhbGlkYXRvcltdO1xyXG4gIGNzc0NsYXNzPzogc3RyaW5nO1xyXG4gIGNzc0xhYmVsQ2xhc3M/OiBzdHJpbmc7XHJcbiAgc3R5bGU/OiBTdHlsZTtcclxuICBsYWJlbFN0eWxlPzogU3R5bGU7XHJcbiAgaXNWaXNpYmxlPzogYm9vbGVhbjtcclxuICBlcnJvcj86IHN0cmluZztcclxuICBlcnJvckljb24/OiBzdHJpbmc7XHJcbiAgZXJyb3JJY29uQ29sb3I/OiBzdHJpbmc7XHJcbiAgc2VydmVyRXJyb3JNZXNzYWdlPzogc3RyaW5nO1xyXG4gIHNlcnZlckVycm9ySWNvbj86IHN0cmluZztcclxuICBzZXJ2ZXJFcnJvckNvbG9yPzogc3RyaW5nO1xyXG4gIHZhbHVlTGlzdDogU21hcnRJdGVtPFQ+W107XHJcbiAgc2VsZWN0aW9uPzogU2VsZWN0aW9uRGVmaW5pdGlvbjtcclxuICBkaXJlY3Rpb24/OiBTbWFydEZvcm1XaWRnZXREaXJlY3Rpb247XHJcbiAgaGludD86IFNtYXJ0V2lkZ2V0SGludDtcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIFNtYXJ0Q2hlY2tCb3gyPFQ+IHtcclxuICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLkNIRUNLX0JPWF8yO1xyXG4gIGtleTogc3RyaW5nO1xyXG4gIHZhbHVlQ2hhbmdlTW9kZT86IFZhbHVlQ2hhbmdlTW9kZTtcclxuICBsYWJlbDogc3RyaW5nO1xyXG4gIG9yaWdpbmFsTGFiZWw/OiBzdHJpbmc7XHJcbiAgc2hvd0xhYmVsPzogYm9vbGVhbjtcclxuICB2YWx1ZT86IFQ7XHJcbiAgbWluV2lkdGg/OiBTbWFydEZvcm1XaWRnZXRXaWR0aCB8IG51bWJlcjtcclxuICBpc0Rpc2FibGVkPzogYm9vbGVhbjtcclxuICBpc1JlYWRvbmx5PzogYm9vbGVhbjtcclxuICB2YWxpZGF0b3JzPzogU21hcnRWYWxpZGF0b3JbXTtcclxuICBjc3NDbGFzcz86IHN0cmluZztcclxuICBjc3NMYWJlbENsYXNzPzogc3RyaW5nO1xyXG4gIHN0eWxlPzogU3R5bGU7XHJcbiAgbGFiZWxTdHlsZT86IFN0eWxlO1xyXG4gIGlzVmlzaWJsZT86IGJvb2xlYW47XHJcbiAgZXJyb3I/OiBzdHJpbmc7XHJcbiAgZXJyb3JJY29uPzogc3RyaW5nO1xyXG4gIGVycm9ySWNvbkNvbG9yPzogc3RyaW5nO1xyXG4gIHNlcnZlckVycm9yTWVzc2FnZT86IHN0cmluZztcclxuICBzZXJ2ZXJFcnJvckljb24/OiBzdHJpbmc7XHJcbiAgc2VydmVyRXJyb3JDb2xvcj86IHN0cmluZztcclxuICB2YWx1ZUxpc3Q6IFNtYXJ0SXRlbTxUPltdO1xyXG4gIHNlbGVjdGlvbj86IFNlbGVjdGlvbkRlZmluaXRpb247XHJcbiAgZGlyZWN0aW9uPzogU21hcnRGb3JtV2lkZ2V0RGlyZWN0aW9uO1xyXG4gIGhpbnQ/OiBTbWFydFdpZGdldEhpbnQ7XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBTbWFydFJhZGlvQnV0dG9uPFQ+IHtcclxuICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLlJBRElPX0JVVFRPTjtcclxuICBrZXk6IHN0cmluZztcclxuICB2YWx1ZUNoYW5nZU1vZGU/OiBWYWx1ZUNoYW5nZU1vZGU7XHJcbiAgbGFiZWw6IHN0cmluZztcclxuICBvcmlnaW5hbExhYmVsPzogc3RyaW5nO1xyXG4gIHNob3dMYWJlbD86IGJvb2xlYW47XHJcbiAgdmFsdWU/OiBUO1xyXG4gIG1pbldpZHRoPzogU21hcnRGb3JtV2lkZ2V0V2lkdGggfCBudW1iZXI7XHJcbiAgaXNEaXNhYmxlZD86IGJvb2xlYW47XHJcbiAgaXNSZWFkb25seT86IGJvb2xlYW47XHJcbiAgdmFsaWRhdG9ycz86IFNtYXJ0VmFsaWRhdG9yW107XHJcbiAgY3NzQ2xhc3M/OiBzdHJpbmc7XHJcbiAgY3NzTGFiZWxDbGFzcz86IHN0cmluZztcclxuICBzdHlsZT86IFN0eWxlO1xyXG4gIGxhYmVsU3R5bGU/OiBTdHlsZTtcclxuICBpc1Zpc2libGU/OiBib29sZWFuO1xyXG4gIGVycm9yPzogc3RyaW5nO1xyXG4gIGVycm9ySWNvbj86IHN0cmluZztcclxuICBlcnJvckljb25Db2xvcj86IHN0cmluZztcclxuICBzZXJ2ZXJFcnJvck1lc3NhZ2U/OiBzdHJpbmc7XHJcbiAgc2VydmVyRXJyb3JJY29uPzogc3RyaW5nO1xyXG4gIHNlcnZlckVycm9yQ29sb3I/OiBzdHJpbmc7XHJcbiAgdmFsdWVMaXN0OiBTbWFydEl0ZW08VD5bXTtcclxuICBzZWxlY3Rpb24/OiBTZWxlY3Rpb25EZWZpbml0aW9uO1xyXG4gIGRpcmVjdGlvbj86IFNtYXJ0Rm9ybVdpZGdldERpcmVjdGlvbjtcclxuICBoaW50PzogU21hcnRXaWRnZXRIaW50O1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgU21hcnREYXRlUGlja2VyPFQ+IHtcclxuICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLkRBVEVfUElDS0VSO1xyXG4gIGtleTogc3RyaW5nO1xyXG4gIHZhbHVlQ2hhbmdlTW9kZT86IFZhbHVlQ2hhbmdlTW9kZTtcclxuICBsYWJlbDogc3RyaW5nO1xyXG4gIG9yaWdpbmFsTGFiZWw/OiBzdHJpbmc7XHJcbiAgc2hvd0xhYmVsPzogYm9vbGVhbjtcclxuICB2YWx1ZT86IFQ7XHJcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XHJcbiAgbWluV2lkdGg/OiBTbWFydEZvcm1XaWRnZXRXaWR0aCB8IG51bWJlcjtcclxuICBpc0Rpc2FibGVkPzogYm9vbGVhbjtcclxuICBpc1JlYWRvbmx5PzogYm9vbGVhbjtcclxuICB2YWxpZGF0b3JzPzogU21hcnRWYWxpZGF0b3JbXTtcclxuICBjc3NDbGFzcz86IHN0cmluZztcclxuICBjc3NMYWJlbENsYXNzPzogc3RyaW5nO1xyXG4gIHN0eWxlPzogU3R5bGU7XHJcbiAgbGFiZWxTdHlsZT86IFN0eWxlO1xyXG4gIGlzVmlzaWJsZT86IGJvb2xlYW47XHJcbiAgZXJyb3I/OiBzdHJpbmc7XHJcbiAgZXJyb3JJY29uPzogc3RyaW5nO1xyXG4gIGVycm9ySWNvbkNvbG9yPzogc3RyaW5nO1xyXG4gIHNlcnZlckVycm9yTWVzc2FnZT86IHN0cmluZztcclxuICBzZXJ2ZXJFcnJvckljb24/OiBzdHJpbmc7XHJcbiAgc2VydmVyRXJyb3JDb2xvcj86IHN0cmluZztcclxuICBkYXRlRm9ybWF0SGludD86IHN0cmluZztcclxuICBtaW5EYXRlPzogRGF0ZTtcclxuICBtYXhEYXRlPzogRGF0ZTtcclxuICBmaWx0ZXI/OiAoZDogRGF0ZSB8IG51bGwpID0+IGJvb2xlYW47XHJcbiAgaGludD86IFNtYXJ0V2lkZ2V0SGludDtcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIFNtYXJ0RGF0ZVRpbWVQaWNrZXI8VD4ge1xyXG4gIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuREFURV9USU1FX1BJQ0tFUjtcclxuICBrZXk6IHN0cmluZztcclxuICB2YWx1ZUNoYW5nZU1vZGU/OiBWYWx1ZUNoYW5nZU1vZGU7XHJcbiAgbGFiZWw6IHN0cmluZztcclxuICBvcmlnaW5hbExhYmVsPzogc3RyaW5nO1xyXG4gIHNob3dMYWJlbD86IGJvb2xlYW47XHJcbiAgdmFsdWU/OiBUO1xyXG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xyXG4gIG1pbldpZHRoPzogU21hcnRGb3JtV2lkZ2V0V2lkdGggfCBudW1iZXI7XHJcbiAgaXNEaXNhYmxlZD86IGJvb2xlYW47XHJcbiAgaXNSZWFkb25seT86IGJvb2xlYW47XHJcbiAgdmFsaWRhdG9ycz86IFNtYXJ0VmFsaWRhdG9yW107XHJcbiAgY3NzQ2xhc3M/OiBzdHJpbmc7XHJcbiAgY3NzTGFiZWxDbGFzcz86IHN0cmluZztcclxuICBzdHlsZT86IFN0eWxlO1xyXG4gIGxhYmVsU3R5bGU/OiBTdHlsZTtcclxuICBpc1Zpc2libGU/OiBib29sZWFuO1xyXG4gIGVycm9yPzogc3RyaW5nO1xyXG4gIGVycm9ySWNvbj86IHN0cmluZztcclxuICBlcnJvckljb25Db2xvcj86IHN0cmluZztcclxuICBzZXJ2ZXJFcnJvck1lc3NhZ2U/OiBzdHJpbmc7XHJcbiAgc2VydmVyRXJyb3JJY29uPzogc3RyaW5nO1xyXG4gIHNlcnZlckVycm9yQ29sb3I/OiBzdHJpbmc7XHJcbiAgZGF0ZUZvcm1hdEhpbnQ/OiBzdHJpbmc7XHJcbiAgZmlsdGVyPzogKGQ6IERhdGUgfCBudWxsKSA9PiBib29sZWFuO1xyXG4gIGhpbnQ/OiBTbWFydFdpZGdldEhpbnQ7XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBTbWFydENvbnRhaW5lcjxUPiB7XHJcbiAga2V5Pzogc3RyaW5nO1xyXG4gIHZhbHVlQ2hhbmdlTW9kZT86IFZhbHVlQ2hhbmdlTW9kZTtcclxuICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLkNPTlRBSU5FUjtcclxuICBpc1Zpc2libGU/OiBib29sZWFuO1xyXG4gIHZhbHVlTGlzdDogU21hcnRGb3JtV2lkZ2V0PFQ+W107XHJcbiAgZGlyZWN0aW9uPzogU21hcnRGb3JtV2lkZ2V0RGlyZWN0aW9uO1xyXG4gIGNzc0NsYXNzPzogc3RyaW5nO1xyXG4gIHN0eWxlPzogU3R5bGU7XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBTbWFydExhYmVsIHtcclxuICBrZXk/OiBzdHJpbmc7XHJcbiAgdmFsdWVDaGFuZ2VNb2RlPzogVmFsdWVDaGFuZ2VNb2RlO1xyXG4gIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuTEFCRUw7XHJcbiAgaXNWaXNpYmxlPzogYm9vbGVhbjtcclxuICBjc3NDbGFzcz86IHN0cmluZztcclxuICBzdHlsZT86IFN0eWxlO1xyXG4gIGxhYmVsU3R5bGU/OiBTdHlsZTtcclxuICBsYWJlbDogc3RyaW5nO1xyXG4gIG9yaWdpbmFsTGFiZWw/OiBzdHJpbmc7XHJcbiAgd2lkZ2V0RGVzY3JpcHRpb24/OiBzdHJpbmc7XHJcbiAgbWluV2lkdGg/OiBTbWFydEZvcm1XaWRnZXRXaWR0aCB8IG51bWJlcjtcclxuICBtYXJrQXNSZXF1aXJlZD86IGJvb2xlYW47XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBTbWFydFRpbWU8VD4ge1xyXG4gIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuVElNRTtcclxuICBrZXk6IHN0cmluZztcclxuICB2YWx1ZUNoYW5nZU1vZGU/OiBWYWx1ZUNoYW5nZU1vZGU7XHJcbiAgdmFsdWU/OiBUO1xyXG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xyXG4gIGxhYmVsOiBzdHJpbmc7XHJcbiAgb3JpZ2luYWxMYWJlbD86IHN0cmluZztcclxuICBzaG93TGFiZWw/OiBib29sZWFuO1xyXG4gIG1pbldpZHRoPzogU21hcnRGb3JtV2lkZ2V0V2lkdGggfCBudW1iZXI7XHJcbiAgaXNWaXNpYmxlPzogYm9vbGVhbjtcclxuICBjc3NDbGFzcz86IHN0cmluZztcclxuICBjc3NMYWJlbENsYXNzPzogc3RyaW5nO1xyXG4gIHN0eWxlPzogU3R5bGU7XHJcbiAgbGFiZWxTdHlsZT86IFN0eWxlO1xyXG4gIGlzRGlzYWJsZWQ/OiBib29sZWFuO1xyXG4gIGlzUmVhZG9ubHk/OiBib29sZWFuO1xyXG4gIHZhbGlkYXRvcnM/OiBTbWFydFZhbGlkYXRvcltdO1xyXG4gIGVycm9yPzogc3RyaW5nO1xyXG4gIGVycm9ySWNvbj86IHN0cmluZztcclxuICBlcnJvckljb25Db2xvcj86IHN0cmluZztcclxuICBzZXJ2ZXJFcnJvck1lc3NhZ2U/OiBzdHJpbmc7XHJcbiAgc2VydmVyRXJyb3JJY29uPzogc3RyaW5nO1xyXG4gIHNlcnZlckVycm9yQ29sb3I/OiBzdHJpbmc7XHJcbiAgaGludD86IFNtYXJ0V2lkZ2V0SGludDtcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIFNtYXJ0VG9nZ2xlPFQ+IHtcclxuICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLlRPR0dMRTtcclxuICBrZXk6IHN0cmluZztcclxuICB2YWx1ZUNoYW5nZU1vZGU/OiBWYWx1ZUNoYW5nZU1vZGU7XHJcbiAgdmFsdWU/OiBUO1xyXG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xyXG4gIGxhYmVsOiBzdHJpbmc7XHJcbiAgb3JpZ2luYWxMYWJlbD86IHN0cmluZztcclxuICBzaG93TGFiZWw/OiBib29sZWFuO1xyXG4gIGlzVmlzaWJsZT86IGJvb2xlYW47XHJcbiAgY3NzQ2xhc3M/OiBzdHJpbmc7XHJcbiAgY3NzTGFiZWxDbGFzcz86IHN0cmluZztcclxuICBzdHlsZT86IFN0eWxlO1xyXG4gIGxhYmVsU3R5bGU/OiBTdHlsZTtcclxuICBpc0Rpc2FibGVkPzogYm9vbGVhbjtcclxuICBpc1JlYWRvbmx5PzogYm9vbGVhbjtcclxuICB0b2dnbGVMYWJlbFBvc2l0aW9uPzogVG9nZ2xlTGFiZWxQb3NpdGlvbjtcclxuICB2YWxpZGF0b3JzPzogU21hcnRWYWxpZGF0b3JbXTtcclxuICBlcnJvcj86IHN0cmluZztcclxuICBlcnJvckljb24/OiBzdHJpbmc7XHJcbiAgZXJyb3JJY29uQ29sb3I/OiBzdHJpbmc7XHJcbiAgc2VydmVyRXJyb3JNZXNzYWdlPzogc3RyaW5nO1xyXG4gIHNlcnZlckVycm9ySWNvbj86IHN0cmluZztcclxuICBzZXJ2ZXJFcnJvckNvbG9yPzogc3RyaW5nO1xyXG4gIGhpbnQ/OiBTbWFydFdpZGdldEhpbnQ7XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBTbWFydEluZGljYXRvckl0ZW0ge1xyXG4gIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuSU5ESUNBVE9SO1xyXG4gIGtleTogc3RyaW5nO1xyXG4gIHZhbHVlQ2hhbmdlTW9kZT86IFZhbHVlQ2hhbmdlTW9kZTtcclxuICBsYWJlbDogc3RyaW5nO1xyXG4gIG9yaWdpbmFsTGFiZWw/OiBzdHJpbmc7XHJcbiAgc2hvd0xhYmVsPzogYm9vbGVhbjtcclxuICBpbmRpY2F0b3I6IFNtYXJ0SW5kaWNhdG9yO1xyXG4gIGlzVmlzaWJsZT86IGJvb2xlYW47XHJcbiAgY3NzQ2xhc3M/OiBzdHJpbmc7XHJcbiAgY3NzTGFiZWxDbGFzcz86IHN0cmluZztcclxuICBzdHlsZT86IFN0eWxlO1xyXG4gIGxhYmVsU3R5bGU/OiBTdHlsZTtcclxufVxyXG5cclxuZXhwb3J0IGRlY2xhcmUgdHlwZSBTbWFydEl0ZW1zPFQ+ID0gU21hcnRJdGVtPFQ+IHwgU21hcnRJdGVtR3JvdXA8VD47XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNtYXJ0SXRlbTxUPiB7XHJcbiAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5JVEVNO1xyXG4gIGtleTogc3RyaW5nO1xyXG4gIHZhbHVlQ2hhbmdlTW9kZT86IFZhbHVlQ2hhbmdlTW9kZTtcclxuICBsYWJlbDogc3RyaW5nO1xyXG4gIGNzc0xhYmVsQ2xhc3M/OiBzdHJpbmc7XHJcbiAgc3R5bGU/OiBTdHlsZTtcclxuICBsYWJlbFN0eWxlPzogU3R5bGU7XHJcbiAgb3JpZ2luYWxMYWJlbD86IHN0cmluZztcclxuICB2YWx1ZT86IFQ7XHJcbiAgaXNEaXNhYmxlZD86IGJvb2xlYW47XHJcbiAgaWNvbj86IHN0cmluZztcclxuICBpY29uQ29sb3I/OiBzdHJpbmc7XHJcbiAgaW1hZ2VVcmw/OiBzdHJpbmc7XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBTbWFydEl0ZW1Hcm91cDxUPiB7XHJcbiAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5JVEVNX0dST1VQO1xyXG4gIGtleTogc3RyaW5nO1xyXG4gIHZhbHVlQ2hhbmdlTW9kZT86IFZhbHVlQ2hhbmdlTW9kZTtcclxuICBsYWJlbDogc3RyaW5nO1xyXG4gIGNzc0xhYmVsQ2xhc3M/OiBzdHJpbmc7XHJcbiAgc3R5bGU/OiBTdHlsZTtcclxuICBsYWJlbFN0eWxlPzogU3R5bGU7XHJcbiAgb3JpZ2luYWxMYWJlbD86IHN0cmluZztcclxuICBpc0Rpc2FibGVkPzogYm9vbGVhbjtcclxuICB2YWx1ZUxpc3Q6IFNtYXJ0SXRlbTxUPltdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNtYXJ0RmlsZVVwbG9hZGVyIHtcclxuICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLkZJTEVfVVBMT0FERVI7XHJcbiAga2V5OiBzdHJpbmc7XHJcbiAgdmFsdWVDaGFuZ2VNb2RlPzogVmFsdWVDaGFuZ2VNb2RlO1xyXG4gIGxhYmVsOiBzdHJpbmc7XHJcbiAgb3JpZ2luYWxMYWJlbD86IHN0cmluZztcclxuICBzaG93TGFiZWw/OiBib29sZWFuO1xyXG4gIGlzVmlzaWJsZT86IGJvb2xlYW47XHJcbiAgY3NzQ2xhc3M/OiBzdHJpbmc7XHJcbiAgY3NzTGFiZWxDbGFzcz86IHN0cmluZztcclxuICBzdHlsZT86IFN0eWxlO1xyXG4gIGxhYmVsU3R5bGU/OiBTdHlsZTtcclxuICB1cGxvYWRDYWxsYmFjazogKGtleTogc3RyaW5nLCBmaWxlczogYW55W10pID0+IHZvaWQ7XHJcbiAgZmlsZUZvcm1hdHM/OiBzdHJpbmdbXTtcclxuICBtYXhTaXplTWI/OiBudW1iZXI7XHJcbiAgaTE4bj86IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTbWFydEltYWdlIHtcclxuICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLklNQUdFO1xyXG4gIGtleTogc3RyaW5nO1xyXG4gIHZhbHVlQ2hhbmdlTW9kZT86IFZhbHVlQ2hhbmdlTW9kZTtcclxuICBsYWJlbDogc3RyaW5nO1xyXG4gIG9yaWdpbmFsTGFiZWw/OiBzdHJpbmc7XHJcbiAgc2hvd0xhYmVsPzogYm9vbGVhbjtcclxuICBpc1Zpc2libGU/OiBib29sZWFuO1xyXG4gIGNzc0NsYXNzPzogc3RyaW5nO1xyXG4gIGNzc0xhYmVsQ2xhc3M/OiBzdHJpbmc7XHJcbiAgc3R5bGU/OiBTdHlsZTtcclxuICBsYWJlbFN0eWxlPzogU3R5bGU7XHJcbiAgdmFsdWU/OiBzdHJpbmc7XHJcbiAgaW1hZ2VDc3M/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU21hcnREaXZpZGVyIHtcclxuICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLkRJVklERVI7XHJcbiAga2V5OiBzdHJpbmc7XHJcbiAgdmFsdWVDaGFuZ2VNb2RlPzogVmFsdWVDaGFuZ2VNb2RlO1xyXG4gIGxhYmVsOiBzdHJpbmc7XHJcbiAgb3JpZ2luYWxMYWJlbD86IHN0cmluZztcclxuICBzaG93TGFiZWw/OiBib29sZWFuO1xyXG4gIGlzVmlzaWJsZT86IGJvb2xlYW47XHJcbiAgY3NzQ2xhc3M/OiBzdHJpbmc7XHJcbiAgY3NzTGFiZWxDbGFzcz86IHN0cmluZztcclxuICBzdHlsZT86IFN0eWxlO1xyXG4gIGxhYmVsU3R5bGU/OiBTdHlsZTtcclxuICB2YWx1ZT86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTbWFydEJ1dHRvbiB7XHJcbiAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5CVVRUT047XHJcbiAga2V5OiBzdHJpbmc7XHJcbiAgdmFsdWVDaGFuZ2VNb2RlPzogVmFsdWVDaGFuZ2VNb2RlO1xyXG4gIGxhYmVsOiBzdHJpbmc7XHJcbiAgb3JpZ2luYWxMYWJlbD86IHN0cmluZztcclxuICBzaG93TGFiZWw/OiBib29sZWFuO1xyXG4gIGlzVmlzaWJsZT86IGJvb2xlYW47XHJcbiAgY3NzQ2xhc3M/OiBzdHJpbmc7XHJcbiAgY3NzTGFiZWxDbGFzcz86IHN0cmluZztcclxuICBzdHlsZT86IFN0eWxlO1xyXG4gIGxhYmVsU3R5bGU/OiBTdHlsZTtcclxuICB2YWx1ZT86IHN0cmluZztcclxuICB1aUFjdGlvbj86IGFueTtcclxuICB1aUFjdGlvbkRlc2NyaXB0b3I6IGFueTtcclxuICBjYWxsYmFjazogKCh1aUFjdGlvbjogYW55KSA9PiB2b2lkKSB8ICgoa2V5OiBzdHJpbmcpID0+IHZvaWQpO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgU21hcnRGb3JtSW5saW5lQ29tcG9uZW50IHtcclxuICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLkNPTVBPTkVOVDtcclxuICBrZXk6IHN0cmluZztcclxuICB2YWx1ZUNoYW5nZU1vZGU/OiBWYWx1ZUNoYW5nZU1vZGU7XHJcbiAgbGFiZWw6IHN0cmluZztcclxuICBvcmlnaW5hbExhYmVsPzogc3RyaW5nO1xyXG4gIHNob3dMYWJlbD86IGJvb2xlYW47XHJcbiAgaXNWaXNpYmxlPzogYm9vbGVhbjtcclxuICBjc3NDbGFzcz86IHN0cmluZztcclxuICBjc3NMYWJlbENsYXNzPzogc3RyaW5nO1xyXG4gIHN0eWxlPzogU3R5bGU7XHJcbiAgbGFiZWxTdHlsZT86IFN0eWxlO1xyXG4gIGNvbXBvbmVudDogYW55O1xyXG4gIGlucHV0OiBNYXA8c3RyaW5nLCBhbnk+O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNtYXJ0UmljaFRleHQge1xyXG4gIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuUklDSF9URVhUO1xyXG4gIGtleTogc3RyaW5nO1xyXG4gIHZhbHVlQ2hhbmdlTW9kZT86IFZhbHVlQ2hhbmdlTW9kZTtcclxuICBsYWJlbDogc3RyaW5nO1xyXG4gIHZhbHVlPzogc3RyaW5nO1xyXG4gIG9yaWdpbmFsTGFiZWw/OiBzdHJpbmc7XHJcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XHJcbiAgb3JpZ2luYWxQbGFjZWhvbGRlcj86IHN0cmluZztcclxuICBxdWlsbE1vZHVsZXM6IFF1aWxsTW9kdWxlcztcclxuICBzaG93TGFiZWw/OiBib29sZWFuO1xyXG4gIGlzVmlzaWJsZT86IGJvb2xlYW47XHJcbiAgY3NzQ2xhc3M/OiBzdHJpbmc7XHJcbiAgY3NzTGFiZWxDbGFzcz86IHN0cmluZztcclxuICBzdHlsZT86IFN0eWxlO1xyXG4gIGxhYmVsU3R5bGU/OiBTdHlsZTtcclxuICBpc0Rpc2FibGVkPzogYm9vbGVhbjtcclxuICBpc1JlYWRvbmx5PzogYm9vbGVhbjtcclxuICB2YWxpZGF0b3JzPzogU21hcnRWYWxpZGF0b3JbXTtcclxuICBlcnJvcj86IHN0cmluZztcclxuICBlcnJvckljb24/OiBzdHJpbmc7XHJcbiAgZXJyb3JJY29uQ29sb3I/OiBzdHJpbmc7XHJcbiAgc2VydmVyRXJyb3JNZXNzYWdlPzogc3RyaW5nO1xyXG4gIHNlcnZlckVycm9ySWNvbj86IHN0cmluZztcclxuICBzZXJ2ZXJFcnJvckNvbG9yPzogc3RyaW5nO1xyXG4gIGhpbnQ/OiBTbWFydFdpZGdldEhpbnQ7XHJcbiAgbWF4TGVuZ3RoPzogbnVtYmVyO1xyXG4gIHNob3dDaGFyYWN0ZXJMaW1pdFN1ZmZpeD86IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU21hcnRTb3J0YWJsZTxUPiB7XHJcbiAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5TT1JUQUJMRTtcclxuICBrZXk6IHN0cmluZztcclxuICB2YWx1ZUNoYW5nZU1vZGU/OiBWYWx1ZUNoYW5nZU1vZGU7XHJcbiAgbGFiZWw6IHN0cmluZztcclxuICB2YWx1ZT86IHN0cmluZztcclxuICBvcmlnaW5hbExhYmVsPzogc3RyaW5nO1xyXG4gIHNob3dMYWJlbD86IGJvb2xlYW47XHJcbiAgaXNWaXNpYmxlPzogYm9vbGVhbjtcclxuICBjc3NDbGFzcz86IHN0cmluZztcclxuICBjc3NMYWJlbENsYXNzPzogc3RyaW5nO1xyXG4gIHN0eWxlPzogU3R5bGU7XHJcbiAgbGFiZWxTdHlsZT86IFN0eWxlO1xyXG4gIGlzRGlzYWJsZWQ/OiBib29sZWFuO1xyXG4gIGlzUmVhZG9ubHk/OiBib29sZWFuO1xyXG4gIGVycm9yPzogc3RyaW5nO1xyXG4gIGVycm9ySWNvbj86IHN0cmluZztcclxuICBlcnJvckljb25Db2xvcj86IHN0cmluZztcclxuICBzZXJ2ZXJFcnJvck1lc3NhZ2U/OiBzdHJpbmc7XHJcbiAgc2VydmVyRXJyb3JJY29uPzogc3RyaW5nO1xyXG4gIHNlcnZlckVycm9yQ29sb3I/OiBzdHJpbmc7XHJcbiAgdmFsaWRhdG9ycz86IFNtYXJ0VmFsaWRhdG9yW107XHJcbiAgdmFsdWVMaXN0PzogU21hcnRJdGVtPFQ+W107XHJcbiAgaXNNdWx0aXBsZT86IGJvb2xlYW47XHJcbiAgaGludD86IFNtYXJ0V2lkZ2V0SGludDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTbWFydE1hdHJpeCB7XHJcbiAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5NQVRSSVg7XHJcbiAga2V5OiBzdHJpbmc7XHJcbiAgdmFsdWVDaGFuZ2VNb2RlPzogVmFsdWVDaGFuZ2VNb2RlO1xyXG4gIGxhYmVsOiBzdHJpbmc7XHJcbiAgdmFsdWU/OiBhbnk7XHJcbiAgb3JpZ2luYWxMYWJlbD86IHN0cmluZztcclxuICBzaG93TGFiZWw/OiBib29sZWFuO1xyXG4gIGlzVmlzaWJsZT86IGJvb2xlYW47XHJcbiAgY3NzQ2xhc3M/OiBzdHJpbmc7XHJcbiAgY3NzTGFiZWxDbGFzcz86IHN0cmluZztcclxuICBzdHlsZT86IFN0eWxlO1xyXG4gIGxhYmVsU3R5bGU/OiBTdHlsZTtcclxuICBpc0Rpc2FibGVkPzogYm9vbGVhbjtcclxuICBpc1JlYWRvbmx5PzogYm9vbGVhbjtcclxuICBlcnJvcj86IHN0cmluZztcclxuICBlcnJvckljb24/OiBzdHJpbmc7XHJcbiAgZXJyb3JJY29uQ29sb3I/OiBzdHJpbmc7XHJcbiAgc2VydmVyRXJyb3JNZXNzYWdlPzogc3RyaW5nO1xyXG4gIHNlcnZlckVycm9ySWNvbj86IHN0cmluZztcclxuICBzZXJ2ZXJFcnJvckNvbG9yPzogc3RyaW5nO1xyXG4gIHZhbGlkYXRvcnM/OiBTbWFydFZhbGlkYXRvcltdO1xyXG4gIGlzTXVsdGlwbGU/OiBib29sZWFuO1xyXG4gIGhpbnQ/OiBTbWFydFdpZGdldEhpbnQ7XHJcbiAgYnV0dG9uPzogU21hcnRNYXRyaXhCdXR0b247XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU21hcnRNYXRyaXhCdXR0b24ge1xyXG4gIGljb25Db2RlPzogc3RyaW5nO1xyXG4gIGNhbGxiYWNrOiAod2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55Piwgcm93OiBhbnkpID0+IGFueTtcclxuICBjb2xvcj86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTbWFydFlvdXR1YmVQbGF5ZXIge1xyXG4gIGtleT86IHN0cmluZztcclxuICB2YWx1ZUNoYW5nZU1vZGU/OiBWYWx1ZUNoYW5nZU1vZGU7XHJcbiAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5ZT1VUVUJFX1BMQVlFUjtcclxuICBsaW5rPzogc3RyaW5nO1xyXG4gIHZpZGVvSWQ/OiBzdHJpbmc7XHJcbiAgaGVpZ2h0PzogbnVtYmVyO1xyXG4gIHdpZHRoPzogbnVtYmVyO1xyXG4gIHN0YXJ0U2Vjb25kcz86IG51bWJlciB8IDA7XHJcbiAgZW5kU2Vjb25kcz86IG51bWJlcjtcclxuICBjc3NDbGFzcz86IHN0cmluZztcclxuICBjc3NMYWJlbENsYXNzPzogc3RyaW5nO1xyXG4gIHN0eWxlPzogU3R5bGU7XHJcbiAgbGFiZWxTdHlsZT86IFN0eWxlO1xyXG4gIGlzVmlzaWJsZT86IGJvb2xlYW47XHJcbiAgbGFiZWw/OiBzdHJpbmc7XHJcbiAgdmFsaWRhdG9ycz86IFNtYXJ0VmFsaWRhdG9yW107XHJcbiAgaGludD86IFNtYXJ0V2lkZ2V0SGludDtcclxuICBzaG93TGFiZWw/OiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNtYXJ0TW9udGhQaWNrZXIge1xyXG4gIGtleTogc3RyaW5nO1xyXG4gIHZhbHVlQ2hhbmdlTW9kZT86IFZhbHVlQ2hhbmdlTW9kZTtcclxuICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLk1PTlRIX1BJQ0tFUjtcclxuICB2YWx1ZT86IHN0cmluZztcclxuICB2YWxpZGF0b3JzPzogU21hcnRWYWxpZGF0b3JbXTtcclxuICBsYWJlbDogc3RyaW5nO1xyXG4gIHNob3dMYWJlbD86IGJvb2xlYW47XHJcbiAgZXJyb3I/OiBzdHJpbmc7XHJcbiAgZXJyb3JJY29uPzogc3RyaW5nO1xyXG4gIGVycm9ySWNvbkNvbG9yPzogc3RyaW5nO1xyXG4gIHNlcnZlckVycm9yTWVzc2FnZT86IHN0cmluZztcclxuICBzZXJ2ZXJFcnJvckljb24/OiBzdHJpbmc7XHJcbiAgc2VydmVyRXJyb3JDb2xvcj86IHN0cmluZztcclxuICBjc3NDbGFzcz86IHN0cmluZztcclxuICBjc3NMYWJlbENsYXNzPzogc3RyaW5nO1xyXG4gIHN0eWxlPzogU3R5bGU7XHJcbiAgbGFiZWxTdHlsZT86IFN0eWxlO1xyXG4gIGlzVmlzaWJsZT86IGJvb2xlYW47XHJcbiAgaXNEaXNhYmxlZD86IGJvb2xlYW47XHJcbiAgb3JpZ2luYWxMYWJlbD86IHN0cmluZztcclxuICBoaW50PzogU21hcnRXaWRnZXRIaW50O1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgU21hcnRTdmcge1xyXG4gIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuU1ZHO1xyXG4gIGtleTogc3RyaW5nO1xyXG4gIHZhbHVlQ2hhbmdlTW9kZT86IFZhbHVlQ2hhbmdlTW9kZTtcclxuICBsYWJlbDogc3RyaW5nO1xyXG4gIG9yaWdpbmFsTGFiZWw/OiBzdHJpbmc7XHJcbiAgc2hvd0xhYmVsPzogYm9vbGVhbjtcclxuICBpc1Zpc2libGU/OiBib29sZWFuO1xyXG4gIGNzc0NsYXNzPzogc3RyaW5nO1xyXG4gIGNzc0xhYmVsQ2xhc3M/OiBzdHJpbmc7XHJcbiAgc3R5bGU/OiBTdHlsZTtcclxuICBsYWJlbFN0eWxlPzogU3R5bGU7XHJcbiAgdmFsdWU/OiBzdHJpbmc7XHJcbiAgbWluV2lkdGg/OiBTbWFydEZvcm1XaWRnZXRXaWR0aCB8IG51bWJlcjtcclxufVxyXG4iXX0=
@@ -35,4 +35,4 @@ export var SmartWidgetHintPosition;
35
35
  SmartWidgetHintPosition[SmartWidgetHintPosition["UNDER_LABEL"] = 0] = "UNDER_LABEL";
36
36
  SmartWidgetHintPosition[SmartWidgetHintPosition["UNDER_INPUT"] = 1] = "UNDER_INPUT";
37
37
  })(SmartWidgetHintPosition || (SmartWidgetHintPosition = {}));
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRmb3JtLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc21hcnQtZm9ybS9zbWFydGZvcm0ubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBcUJBLE1BQU0sQ0FBTixJQUFZLG9CQUtYO0FBTEQsV0FBWSxvQkFBb0I7SUFDOUIsbUVBQVcsQ0FBQTtJQUNYLHFFQUFZLENBQUE7SUFDWixtRUFBVyxDQUFBO0lBQ1gsK0VBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQUxXLG9CQUFvQixLQUFwQixvQkFBb0IsUUFLL0I7QUFFRCxNQUFNLENBQU4sSUFBWSxvQ0FHWDtBQUhELFdBQVksb0NBQW9DO0lBQzlDLDZGQUFHLENBQUE7SUFDSCwrRkFBSSxDQUFBO0FBQ04sQ0FBQyxFQUhXLG9DQUFvQyxLQUFwQyxvQ0FBb0MsUUFHL0M7QUFXRCxNQUFNLENBQU4sSUFBWSxtQkFHWDtBQUhELFdBQVksbUJBQW1CO0lBQzdCLHdDQUFpQixDQUFBO0lBQ2pCLHNDQUFlLENBQUE7QUFDakIsQ0FBQyxFQUhXLG1CQUFtQixLQUFuQixtQkFBbUIsUUFHOUI7QUEwQkQsTUFBTSxDQUFOLElBQVksa0JBYVg7QUFiRCxXQUFZLGtCQUFrQjtJQUM1QixxQkFBcUI7SUFDckIsMkNBQXFCLENBQUE7SUFDckIsK0NBQXlCLENBQUE7SUFDekIscUNBQWUsQ0FBQTtJQUNmLGlDQUFXLENBQUE7SUFDWCw2Q0FBdUIsQ0FBQTtJQUN2QixpQ0FBVyxDQUFBO0lBQ1gsNkNBQXVCLENBQUE7SUFDdkIseUNBQW1CLENBQUE7SUFDbkIsNkRBQXVDLENBQUE7SUFDdkMsb0JBQW9CO0lBQ3BCLDREQUFzQyxDQUFBO0FBQ3hDLENBQUMsRUFiVyxrQkFBa0IsS0FBbEIsa0JBQWtCLFFBYTdCO0FBNENELE1BQU0sQ0FBTixJQUFZLHVCQUdYO0FBSEQsV0FBWSx1QkFBdUI7SUFDakMsbUZBQVcsQ0FBQTtJQUNYLG1GQUFXLENBQUE7QUFDYixDQUFDLEVBSFcsdUJBQXVCLEtBQXZCLHVCQUF1QixRQUdsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBTbWFydEZvcm1XaWRnZXQgfSBmcm9tICcuL3NtYXJ0Zm9ybS5mb3JtLW1vZGVsJztcclxuaW1wb3J0IHsgU21hcnRGb3JtV2lkZ2V0RGlyZWN0aW9uIH0gZnJvbSAnLi9hcGknO1xyXG5pbXBvcnQgeyBTbWFydFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi92aWV3LWNvbnRleHQvc21hcnQtdmlldy1jb250ZXh0Lm1vZGVsJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU29waGlzdGljYXRlZFZhbHVlQ2hhbmdlIHtcclxuICBrZXk6IHN0cmluZztcclxuICB2YWx1ZTogYW55O1xyXG4gIGtpbmQ6ICdiYXNpYycgfCAnc2VsZWN0aW9uJztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTbWFydEZvcm1Db21wb25lbnRDb25zdHJhaW50IHtcclxuICAvKipcclxuICAgKiBUaGUgZGF0YSBuYW1lIHRvIGlkZW50aWZ5IHRoZSByZWxhdGVkIGNvbXBvbmVudCBvciBjb21wb25lbmV0cy4gSWYgaXQgaXMgYSBwYXRoIHRoZSBmb3JtYXQgaXMgdGhlIGZvbGxvd2luZyAtIGRhdGFTaGVldC5maWVsZC5cclxuICAgKi9cclxuICBkYXRhTmFtZT86IHN0cmluZztcclxuICB2aXNpYmxlPzogYm9vbGVhbjtcclxuICBtYW5kYXRvcnk/OiBib29sZWFuO1xyXG4gIGVuYWJsZWQ/OiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBTbWFydEZvcm1XaWRnZXRXaWR0aCB7XHJcbiAgU01BTEwgPSAxNTAsXHJcbiAgTUVESVVNID0gMjUwLFxyXG4gIExBUkdFID0gMzUwLFxyXG4gIEVYVFJBX0xBUkdFID0gNDUwLFxyXG59XHJcblxyXG5leHBvcnQgZW51bSBTbWFydEZvcm1UZXh0RmllbGRCdXR0b25JY29uUG9zaXRpb24ge1xyXG4gIFBSRSxcclxuICBQT1NULFxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNtYXJ0Rm9ybVRleHRGaWVsZEJ1dHRvbiB7XHJcbiAgaWNvbj86IHN0cmluZztcclxuICBpY29uUG9zaXRpb24/OiBTbWFydEZvcm1UZXh0RmllbGRCdXR0b25JY29uUG9zaXRpb247XHJcbiAgbGFiZWw/OiBzdHJpbmc7XHJcbiAgY2FsbGJhY2s6ICh3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+KSA9PiBhbnk7XHJcbiAgY29sb3I/OiBzdHJpbmc7XHJcbiAgaWNvbkNvbG9yPzogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBUb2dnbGVMYWJlbFBvc2l0aW9uIHtcclxuICBCRUZPUkUgPSAnYmVmb3JlJyxcclxuICBBRlRFUiA9ICdhZnRlcicsXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU21hcnRGb3JtSW52YWxpZEZpZWxkcyB7XHJcbiAgaW52YWxpZEZpZWxkTmFtZXM6IHN0cmluZ1tdO1xyXG4gIGludmFsaWRGaWVsZEtleXM6IHN0cmluZ1tdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNtYXJ0SW5kaWNhdG9yIHtcclxuICBpbmRpY2F0ZVByb3BlcnR5OiBzdHJpbmc7XHJcbiAgaW5kaWNhdG9yTGVuZ3RoOiBudW1iZXI7XHJcbiAgaW5kaWNhdG9yU3RhdHVzTGFiZWxzOiBzdHJpbmdbXTtcclxuICBvcmlnaW5hbEluZGljYXRvclN0YXR1c0xhYmVscz86IHN0cmluZ1tdO1xyXG4gIGluZGljYXRvclZhbHVlOiBudW1iZXI7XHJcbiAgY2hhbmdlSW5kaWNhdG9yU3RhdHVzOiAodmFsdWVUb0NoZWNrOiBzdHJpbmcpID0+IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTbWFydFZhbGlkYXRvciB7XHJcbiAgdmFsaWRhdG9yOiBWYWxpZGF0b3JGbjtcclxuICBpc0N1c3RvbT86IGJvb2xlYW47XHJcbiAgZXJyb3JNZXNzYWdlPzogc3RyaW5nO1xyXG4gIG9yaWdpbmFsRXJyb3JNZXNzYWdlPzogc3RyaW5nO1xyXG4gIG5hbWU6IFNtYXJ0VmFsaWRhdG9yTmFtZSB8IHN0cmluZztcclxuICBpY29uPzogc3RyaW5nO1xyXG4gIGljb25Db2xvcj86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGVudW0gU21hcnRWYWxpZGF0b3JOYW1lIHtcclxuICAvLyBBbmd1bGFyIHZhbGlkYXRvcnNcclxuICByZXF1aXJlZCA9ICdyZXF1aXJlZCcsXHJcbiAgcmVxdWlyZWRUcnVlID0gJ3JlcXVpcmVkJyxcclxuICBlbWFpbCA9ICdlbWFpbCcsXHJcbiAgbWF4ID0gJ21heCcsXHJcbiAgbWF4TGVuZ3RoID0gJ21heGxlbmd0aCcsXHJcbiAgbWluID0gJ21pbicsXHJcbiAgbWluTGVuZ3RoID0gJ21pbmxlbmd0aCcsXHJcbiAgcGF0dGVybiA9ICdwYXR0ZXJuJyxcclxuICBwYXNzd29yZFZhbGlkYXRvciA9ICdwYXNzd29yZFZhbGlkYXRvcicsXHJcbiAgLy8gQ3VzdG9tIHZhbGlkYXRvcnNcclxuICBmaWVsZE1hdGNoaW5nVmFsaWRhdG9yID0gJ2ZpZWxkc01hdGNoJyxcclxufVxyXG5cclxuLyoqXHJcbiAqIER5bmFtaWMgZm9ybXMgY2FuIGJlIGVhc2lseSBkZWZpbmVkIHdpdGggdGhpcyBpbnRlcmZhY2UuXHJcbiAqXHJcbiAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBmb3JtXHJcbiAqIEBwYXJhbSB3aWRnZXRzIFRoZSB3aWRnZXRzIHByZXNlbnRlZCBpbiB0aGUgZm9ybVxyXG4gKlxyXG4gKiBAYXV0aG9yIFJvbGFuZCBGw6lueWVzXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFNtYXJ0Rm9ybSB7XHJcbiAgbmFtZT86IHN0cmluZztcclxuICBkaXJlY3Rpb246IFNtYXJ0Rm9ybVdpZGdldERpcmVjdGlvbjtcclxuICB3aWRnZXRzOiBTbWFydEZvcm1XaWRnZXQ8YW55PltdO1xyXG4gIGNvbXBvbmVudE1vZGVsPzogYW55O1xyXG4gIHVzZU9uQmx1ckV2ZW50PzogYm9vbGVhbjtcclxuICB1c2VPblZhbHVlQ2hhbmdlRXZlbnQ/OiBib29sZWFuO1xyXG4gIHNob3dMYWJlbD86IGJvb2xlYW47XHJcbiAgc3VibWl0T25FbnRlcj86ICgpID0+IHZvaWQ7XHJcbiAgbGFiZWxUaGVtZT86IHN0cmluZztcclxuICB2YWxpZGF0b3JzPzogU21hcnRWYWxpZGF0b3JbXTtcclxuICB0cmFuc2xhdGVTZXJ2aWNlPzogU21hcnRUcmFuc2xhdGVTZXJ2aWNlO1xyXG4gIGludmFsaWRGaWVsZHM/OiBTbWFydEZvcm1JbnZhbGlkRmllbGRzO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFZhbHVlIHtcclxuICAvKipcclxuICAgKiBUaGUgdXJpIHRoZSBvYmplY3Qgb2YgdGhlIHZhbHVlIGNhbiBiZSBhY2Nlc3NlZC5cclxuICAgKi9cclxuICBvYmplY3RVcmk6IHN0cmluZztcclxuICAvKipcclxuICAgKiBUaGUgbG9naWNhbCBjb2RlIG9mIHRoZSBzZWxlY3RhYmxlIHZhbHVlLlxyXG4gICAqL1xyXG4gIGNvZGU/OiBzdHJpbmc7XHJcbiAgLyoqXHJcbiAgICogVGhlIHN0cmluZyB2YWx1ZSB0aGF0IGNhbiBiZSBzaG93biBvbiB1aS4gSXQgbWlnaHQgYmUgYSBsYWJlbCBjb2RlIG9yIHRoZSBleGFjdCBsYWJlbC5cclxuICAgKi9cclxuICBkaXNwbGF5VmFsdWU6IHN0cmluZztcclxuICAvKipcclxuICAgKiBUaGUgY29kZSBvZiBpY29uIHRoYXQgY2FuIGJlIGFzc29jaWF0aWVkIHdpdGggdGhlIHZhbHVlLiBJdCBtYXkgYmUgYSB1cmkuXHJcbiAgICovXHJcbiAgaWNvbkNvZGU/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIFNtYXJ0V2lkZ2V0SGludFBvc2l0aW9uIHtcclxuICBVTkRFUl9MQUJFTCxcclxuICBVTkRFUl9JTlBVVCxcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTbWFydFdpZGdldEhpbnRDb25maWcge1xyXG4gIHBvc2l0aW9uOiBTbWFydFdpZGdldEhpbnRQb3NpdGlvbjtcclxufVxyXG4iXX0=
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRmb3JtLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc21hcnQtZm9ybS9zbWFydGZvcm0ubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBMkJBLE1BQU0sQ0FBTixJQUFZLG9CQUtYO0FBTEQsV0FBWSxvQkFBb0I7SUFDOUIsbUVBQVcsQ0FBQTtJQUNYLHFFQUFZLENBQUE7SUFDWixtRUFBVyxDQUFBO0lBQ1gsK0VBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQUxXLG9CQUFvQixLQUFwQixvQkFBb0IsUUFLL0I7QUFFRCxNQUFNLENBQU4sSUFBWSxvQ0FHWDtBQUhELFdBQVksb0NBQW9DO0lBQzlDLDZGQUFHLENBQUE7SUFDSCwrRkFBSSxDQUFBO0FBQ04sQ0FBQyxFQUhXLG9DQUFvQyxLQUFwQyxvQ0FBb0MsUUFHL0M7QUFXRCxNQUFNLENBQU4sSUFBWSxtQkFHWDtBQUhELFdBQVksbUJBQW1CO0lBQzdCLHdDQUFpQixDQUFBO0lBQ2pCLHNDQUFlLENBQUE7QUFDakIsQ0FBQyxFQUhXLG1CQUFtQixLQUFuQixtQkFBbUIsUUFHOUI7QUEwQkQsTUFBTSxDQUFOLElBQVksa0JBYVg7QUFiRCxXQUFZLGtCQUFrQjtJQUM1QixxQkFBcUI7SUFDckIsMkNBQXFCLENBQUE7SUFDckIsK0NBQXlCLENBQUE7SUFDekIscUNBQWUsQ0FBQTtJQUNmLGlDQUFXLENBQUE7SUFDWCw2Q0FBdUIsQ0FBQTtJQUN2QixpQ0FBVyxDQUFBO0lBQ1gsNkNBQXVCLENBQUE7SUFDdkIseUNBQW1CLENBQUE7SUFDbkIsNkRBQXVDLENBQUE7SUFDdkMsb0JBQW9CO0lBQ3BCLDREQUFzQyxDQUFBO0FBQ3hDLENBQUMsRUFiVyxrQkFBa0IsS0FBbEIsa0JBQWtCLFFBYTdCO0FBNENELE1BQU0sQ0FBTixJQUFZLHVCQUdYO0FBSEQsV0FBWSx1QkFBdUI7SUFDakMsbUZBQVcsQ0FBQTtJQUNYLG1GQUFXLENBQUE7QUFDYixDQUFDLEVBSFcsdUJBQXVCLEtBQXZCLHVCQUF1QixRQUdsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZhbGlkYXRvckZuIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQgeyBTbWFydEZvcm1XaWRnZXQgfSBmcm9tIFwiLi9zbWFydGZvcm0uZm9ybS1tb2RlbFwiO1xuaW1wb3J0IHsgU21hcnRGb3JtV2lkZ2V0RGlyZWN0aW9uIH0gZnJvbSBcIi4vYXBpXCI7XG5pbXBvcnQgeyBTbWFydFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tIFwiLi4vdmlldy1jb250ZXh0L3NtYXJ0LXZpZXctY29udGV4dC5tb2RlbFwiO1xuaW1wb3J0IHsgTmFtZWRWYWxpZGF0b3IgfSBmcm9tIFwiLi4vdmlldy1jb250ZXh0L2FwaVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNvcGhpc3RpY2F0ZWRWYWx1ZUNoYW5nZSB7XG4gIGtleTogc3RyaW5nO1xuICB2YWx1ZTogYW55O1xuICBraW5kOiBcImJhc2ljXCIgfCBcInNlbGVjdGlvblwiO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNtYXJ0Rm9ybUNvbXBvbmVudENvbnN0cmFpbnQge1xuICAvKipcbiAgICogVGhlIGRhdGEgbmFtZSB0byBpZGVudGlmeSB0aGUgcmVsYXRlZCBjb21wb25lbnQgb3IgY29tcG9uZW5ldHMuIElmIGl0IGlzIGEgcGF0aCB0aGUgZm9ybWF0IGlzIHRoZSBmb2xsb3dpbmcgLSBkYXRhU2hlZXQuZmllbGQuXG4gICAqL1xuICBkYXRhTmFtZT86IHN0cmluZztcbiAgdmlzaWJsZT86IGJvb2xlYW47XG4gIG1hbmRhdG9yeT86IGJvb2xlYW47XG4gIGVuYWJsZWQ/OiBib29sZWFuO1xuICBtYXg/OiBudW1iZXI7XG4gIG1heExlbmd0aD86IG51bWJlcjtcbiAgbWluPzogbnVtYmVyO1xuICBtaW5MZW5ndGg/OiBudW1iZXI7XG4gIG5hbWVkVmFsaWRhdG9ycz86IEFycmF5PE5hbWVkVmFsaWRhdG9yPjtcbn1cblxuZXhwb3J0IGVudW0gU21hcnRGb3JtV2lkZ2V0V2lkdGgge1xuICBTTUFMTCA9IDE1MCxcbiAgTUVESVVNID0gMjUwLFxuICBMQVJHRSA9IDM1MCxcbiAgRVhUUkFfTEFSR0UgPSA0NTAsXG59XG5cbmV4cG9ydCBlbnVtIFNtYXJ0Rm9ybVRleHRGaWVsZEJ1dHRvbkljb25Qb3NpdGlvbiB7XG4gIFBSRSxcbiAgUE9TVCxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTbWFydEZvcm1UZXh0RmllbGRCdXR0b24ge1xuICBpY29uPzogc3RyaW5nO1xuICBpY29uUG9zaXRpb24/OiBTbWFydEZvcm1UZXh0RmllbGRCdXR0b25JY29uUG9zaXRpb247XG4gIGxhYmVsPzogc3RyaW5nO1xuICBjYWxsYmFjazogKHdpZGdldDogU21hcnRGb3JtV2lkZ2V0PGFueT4pID0+IGFueTtcbiAgY29sb3I/OiBzdHJpbmc7XG4gIGljb25Db2xvcj86IHN0cmluZztcbn1cblxuZXhwb3J0IGVudW0gVG9nZ2xlTGFiZWxQb3NpdGlvbiB7XG4gIEJFRk9SRSA9IFwiYmVmb3JlXCIsXG4gIEFGVEVSID0gXCJhZnRlclwiLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNtYXJ0Rm9ybUludmFsaWRGaWVsZHMge1xuICBpbnZhbGlkRmllbGROYW1lczogc3RyaW5nW107XG4gIGludmFsaWRGaWVsZEtleXM6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNtYXJ0SW5kaWNhdG9yIHtcbiAgaW5kaWNhdGVQcm9wZXJ0eTogc3RyaW5nO1xuICBpbmRpY2F0b3JMZW5ndGg6IG51bWJlcjtcbiAgaW5kaWNhdG9yU3RhdHVzTGFiZWxzOiBzdHJpbmdbXTtcbiAgb3JpZ2luYWxJbmRpY2F0b3JTdGF0dXNMYWJlbHM/OiBzdHJpbmdbXTtcbiAgaW5kaWNhdG9yVmFsdWU6IG51bWJlcjtcbiAgY2hhbmdlSW5kaWNhdG9yU3RhdHVzOiAodmFsdWVUb0NoZWNrOiBzdHJpbmcpID0+IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTbWFydFZhbGlkYXRvciB7XG4gIHZhbGlkYXRvcjogVmFsaWRhdG9yRm47XG4gIGlzQ3VzdG9tPzogYm9vbGVhbjtcbiAgZXJyb3JNZXNzYWdlPzogc3RyaW5nO1xuICBvcmlnaW5hbEVycm9yTWVzc2FnZT86IHN0cmluZztcbiAgbmFtZTogU21hcnRWYWxpZGF0b3JOYW1lIHwgc3RyaW5nO1xuICBpY29uPzogc3RyaW5nO1xuICBpY29uQ29sb3I/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBlbnVtIFNtYXJ0VmFsaWRhdG9yTmFtZSB7XG4gIC8vIEFuZ3VsYXIgdmFsaWRhdG9yc1xuICByZXF1aXJlZCA9IFwicmVxdWlyZWRcIixcbiAgcmVxdWlyZWRUcnVlID0gXCJyZXF1aXJlZFwiLFxuICBlbWFpbCA9IFwiZW1haWxcIixcbiAgbWF4ID0gXCJtYXhcIixcbiAgbWF4TGVuZ3RoID0gXCJtYXhsZW5ndGhcIixcbiAgbWluID0gXCJtaW5cIixcbiAgbWluTGVuZ3RoID0gXCJtaW5sZW5ndGhcIixcbiAgcGF0dGVybiA9IFwicGF0dGVyblwiLFxuICBwYXNzd29yZFZhbGlkYXRvciA9IFwicGFzc3dvcmRWYWxpZGF0b3JcIixcbiAgLy8gQ3VzdG9tIHZhbGlkYXRvcnNcbiAgZmllbGRNYXRjaGluZ1ZhbGlkYXRvciA9IFwiZmllbGRzTWF0Y2hcIixcbn1cblxuLyoqXG4gKiBEeW5hbWljIGZvcm1zIGNhbiBiZSBlYXNpbHkgZGVmaW5lZCB3aXRoIHRoaXMgaW50ZXJmYWNlLlxuICpcbiAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBmb3JtXG4gKiBAcGFyYW0gd2lkZ2V0cyBUaGUgd2lkZ2V0cyBwcmVzZW50ZWQgaW4gdGhlIGZvcm1cbiAqXG4gKiBAYXV0aG9yIFJvbGFuZCBGw6lueWVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU21hcnRGb3JtIHtcbiAgbmFtZT86IHN0cmluZztcbiAgZGlyZWN0aW9uOiBTbWFydEZvcm1XaWRnZXREaXJlY3Rpb247XG4gIHdpZGdldHM6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+W107XG4gIGNvbXBvbmVudE1vZGVsPzogYW55O1xuICB1c2VPbkJsdXJFdmVudD86IGJvb2xlYW47XG4gIHVzZU9uVmFsdWVDaGFuZ2VFdmVudD86IGJvb2xlYW47XG4gIHNob3dMYWJlbD86IGJvb2xlYW47XG4gIHN1Ym1pdE9uRW50ZXI/OiAoKSA9PiB2b2lkO1xuICBsYWJlbFRoZW1lPzogc3RyaW5nO1xuICB2YWxpZGF0b3JzPzogU21hcnRWYWxpZGF0b3JbXTtcbiAgdHJhbnNsYXRlU2VydmljZT86IFNtYXJ0VHJhbnNsYXRlU2VydmljZTtcbiAgaW52YWxpZEZpZWxkcz86IFNtYXJ0Rm9ybUludmFsaWRGaWVsZHM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmFsdWUge1xuICAvKipcbiAgICogVGhlIHVyaSB0aGUgb2JqZWN0IG9mIHRoZSB2YWx1ZSBjYW4gYmUgYWNjZXNzZWQuXG4gICAqL1xuICBvYmplY3RVcmk6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBsb2dpY2FsIGNvZGUgb2YgdGhlIHNlbGVjdGFibGUgdmFsdWUuXG4gICAqL1xuICBjb2RlPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHN0cmluZyB2YWx1ZSB0aGF0IGNhbiBiZSBzaG93biBvbiB1aS4gSXQgbWlnaHQgYmUgYSBsYWJlbCBjb2RlIG9yIHRoZSBleGFjdCBsYWJlbC5cbiAgICovXG4gIGRpc3BsYXlWYWx1ZTogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGNvZGUgb2YgaWNvbiB0aGF0IGNhbiBiZSBhc3NvY2lhdGllZCB3aXRoIHRoZSB2YWx1ZS4gSXQgbWF5IGJlIGEgdXJpLlxuICAgKi9cbiAgaWNvbkNvZGU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBlbnVtIFNtYXJ0V2lkZ2V0SGludFBvc2l0aW9uIHtcbiAgVU5ERVJfTEFCRUwsXG4gIFVOREVSX0lOUFVULFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNtYXJ0V2lkZ2V0SGludENvbmZpZyB7XG4gIHBvc2l0aW9uOiBTbWFydFdpZGdldEhpbnRQb3NpdGlvbjtcbn1cbiJdfQ==