@microsoft/windows-admin-center-sdk 2.541.1 → 2.552.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/angular/assets/strings/cs-CZ/strings.json +1 -1
  2. package/angular/assets/strings/de-DE/strings.json +1 -1
  3. package/angular/assets/strings/es-ES/strings.json +1 -1
  4. package/angular/assets/strings/fr-FR/strings.json +1 -1
  5. package/angular/assets/strings/hu-HU/strings.json +1 -1
  6. package/angular/assets/strings/id-ID/strings.json +1 -1
  7. package/angular/assets/strings/it-IT/strings.json +1 -1
  8. package/angular/assets/strings/ja-JP/strings.json +1 -1
  9. package/angular/assets/strings/ko-KR/strings.json +1 -1
  10. package/angular/assets/strings/nl-NL/strings.json +1 -1
  11. package/angular/assets/strings/pl-PL/strings.json +1 -1
  12. package/angular/assets/strings/pt-BR/strings.json +1 -1
  13. package/angular/assets/strings/pt-PT/strings.json +1 -1
  14. package/angular/assets/strings/ru-RU/strings.json +1 -1
  15. package/angular/assets/strings/strings.json +1 -1
  16. package/angular/assets/strings/sv-SE/strings.json +1 -1
  17. package/angular/assets/strings/tr-TR/strings.json +1 -1
  18. package/angular/assets/strings/zh-CN/strings.json +1 -1
  19. package/angular/assets/strings/zh-TW/strings.json +1 -1
  20. package/angular/bundles/microsoft-windows-admin-center-sdk-angular.umd.js +1385 -301
  21. package/angular/bundles/microsoft-windows-admin-center-sdk-angular.umd.js.map +1 -1
  22. package/angular/bundles/microsoft-windows-admin-center-sdk-angular.umd.min.js +2 -2
  23. package/angular/bundles/microsoft-windows-admin-center-sdk-angular.umd.min.js.map +1 -1
  24. package/angular/esm2015/src/controls/details/details.component.js +13 -5
  25. package/angular/esm2015/src/controls/index.js +7 -2
  26. package/angular/esm2015/src/controls/layout/layout.component.js +10 -2
  27. package/angular/esm2015/src/controls/pivot/pivot.component.js +58 -4
  28. package/angular/esm2015/src/controls/property-grid/property-grid.component.js +2 -2
  29. package/angular/esm2015/src/controls/ux/sme-ux-content/index.js +3 -0
  30. package/angular/esm2015/src/controls/ux/sme-ux-content/sme-ux-content.component.js +25 -0
  31. package/angular/esm2015/src/controls/ux/sme-ux-content/sme-ux-content.module.js +23 -0
  32. package/angular/esm2015/src/controls/ux/sme-ux-footer/index.js +4 -0
  33. package/angular/esm2015/src/controls/ux/sme-ux-footer/sme-ux-footer-template/sme-wizard-lite-footer-template/index.js +3 -0
  34. package/angular/esm2015/src/controls/ux/sme-ux-footer/sme-ux-footer-template/sme-wizard-lite-footer-template/sme-wizard-lite-footer-template.component.js +184 -0
  35. package/angular/esm2015/src/controls/ux/sme-ux-footer/sme-ux-footer-template/sme-wizard-lite-footer-template/sme-wizard-lite-footer-template.module.js +31 -0
  36. package/angular/esm2015/src/controls/ux/sme-ux-footer/sme-ux-footer.component.js +25 -0
  37. package/angular/esm2015/src/controls/ux/sme-ux-footer/sme-ux-footer.module.js +23 -0
  38. package/angular/esm2015/src/controls/ux/sme-ux-page/index.js +3 -0
  39. package/angular/esm2015/src/controls/ux/sme-ux-page/sme-ux-page.component.js +25 -0
  40. package/angular/esm2015/src/controls/ux/sme-ux-page/sme-ux-page.module.js +31 -0
  41. package/angular/esm2015/src/controls/wizard-lite/index.js +3 -0
  42. package/angular/esm2015/src/controls/wizard-lite/wizard-lite.component.js +109 -0
  43. package/angular/esm2015/src/controls/wizard-lite/wizard-lite.module.js +57 -0
  44. package/angular/esm2015/src/controls/wizard-lite/wizard-lite.service.js +109 -0
  45. package/angular/esm2015/src/controls/wizard-lite/wizard-navigation-button/index.js +3 -0
  46. package/angular/esm2015/src/controls/wizard-lite/wizard-navigation-button/wizard-navigation-button.component.js +241 -0
  47. package/angular/esm2015/src/controls/wizard-lite/wizard-navigation-button/wizard-navigation-button.module.js +31 -0
  48. package/angular/esm2015/src/generated/strings.js +1 -1
  49. package/angular/fesm2015/microsoft-windows-admin-center-sdk-angular.js +1192 -282
  50. package/angular/fesm2015/microsoft-windows-admin-center-sdk-angular.js.map +1 -1
  51. package/angular/src/controls/details/details.component.d.ts +2 -1
  52. package/angular/src/controls/index.d.ts +6 -1
  53. package/angular/src/controls/pivot/pivot.component.d.ts +27 -1
  54. package/angular/src/controls/ux/sme-ux-content/index.d.ts +2 -0
  55. package/angular/src/controls/ux/sme-ux-content/sme-ux-content.component.d.ts +9 -0
  56. package/angular/src/controls/ux/sme-ux-content/sme-ux-content.module.d.ts +8 -0
  57. package/angular/src/controls/ux/sme-ux-footer/index.d.ts +3 -0
  58. package/angular/src/controls/ux/sme-ux-footer/sme-ux-footer-template/sme-wizard-lite-footer-template/index.d.ts +2 -0
  59. package/angular/src/controls/ux/sme-ux-footer/sme-ux-footer-template/sme-wizard-lite-footer-template/sme-wizard-lite-footer-template.component.d.ts +36 -0
  60. package/angular/src/controls/ux/sme-ux-footer/sme-ux-footer-template/sme-wizard-lite-footer-template/sme-wizard-lite-footer-template.module.d.ts +10 -0
  61. package/angular/src/controls/ux/sme-ux-footer/sme-ux-footer.component.d.ts +9 -0
  62. package/angular/src/controls/ux/sme-ux-footer/sme-ux-footer.module.d.ts +8 -0
  63. package/angular/src/controls/ux/sme-ux-page/index.d.ts +2 -0
  64. package/angular/src/controls/ux/sme-ux-page/sme-ux-page.component.d.ts +9 -0
  65. package/angular/src/controls/ux/sme-ux-page/sme-ux-page.module.d.ts +10 -0
  66. package/angular/src/controls/wizard-lite/index.d.ts +2 -0
  67. package/angular/src/controls/wizard-lite/wizard-lite.component.d.ts +38 -0
  68. package/angular/src/controls/wizard-lite/wizard-lite.module.d.ts +14 -0
  69. package/angular/src/controls/wizard-lite/wizard-lite.service.d.ts +30 -0
  70. package/angular/src/controls/wizard-lite/wizard-navigation-button/index.d.ts +2 -0
  71. package/angular/src/controls/wizard-lite/wizard-navigation-button/wizard-navigation-button.component.d.ts +108 -0
  72. package/angular/src/controls/wizard-lite/wizard-navigation-button/wizard-navigation-button.module.d.ts +9 -0
  73. package/angular/src/generated/strings.d.ts +10 -0
  74. package/core/assets/strings/cs-CZ/strings.json +1 -1
  75. package/core/assets/strings/de-DE/strings.json +1 -1
  76. package/core/assets/strings/es-ES/strings.json +1 -1
  77. package/core/assets/strings/fr-FR/strings.json +1 -1
  78. package/core/assets/strings/hu-HU/strings.json +1 -1
  79. package/core/assets/strings/id-ID/strings.json +1 -1
  80. package/core/assets/strings/it-IT/strings.json +1 -1
  81. package/core/assets/strings/ja-JP/strings.json +1 -1
  82. package/core/assets/strings/ko-KR/strings.json +1 -1
  83. package/core/assets/strings/nl-NL/strings.json +1 -1
  84. package/core/assets/strings/pl-PL/strings.json +1 -1
  85. package/core/assets/strings/pt-BR/strings.json +1 -1
  86. package/core/assets/strings/pt-PT/strings.json +1 -1
  87. package/core/assets/strings/ru-RU/strings.json +1 -1
  88. package/core/assets/strings/strings.json +1 -1
  89. package/core/assets/strings/sv-SE/strings.json +1 -1
  90. package/core/assets/strings/tr-TR/strings.json +1 -1
  91. package/core/assets/strings/zh-CN/strings.json +1 -1
  92. package/core/assets/strings/zh-TW/strings.json +1 -1
  93. package/core/data/file-transfer.js +5 -5
  94. package/core/data/file-transfer.js.map +1 -1
  95. package/core/data/wdac-operations.d.ts +10 -0
  96. package/core/data/wdac-operations.js +14 -1
  97. package/core/data/wdac-operations.js.map +1 -1
  98. package/core/diagnostics/sme-web-telemetry-models.d.ts +2 -1
  99. package/core/diagnostics/sme-web-telemetry-models.js +1 -0
  100. package/core/diagnostics/sme-web-telemetry-models.js.map +1 -1
  101. package/core/diagnostics/sme-web-telemetry.d.ts +20 -0
  102. package/core/diagnostics/sme-web-telemetry.js +59 -0
  103. package/core/diagnostics/sme-web-telemetry.js.map +1 -1
  104. package/core/generated/powershell-scripts.js +1 -1
  105. package/core/generated/powershell-scripts.js.map +1 -1
  106. package/core/generated/strings.d.ts +1 -0
  107. package/core/generated/strings.js.map +1 -1
  108. package/core/resources/scripts/public/inventory/Get-ServerInventory.ps1 +11 -3
  109. package/core/shared/server-inventory/server-inventory-cache.js +3 -0
  110. package/core/shared/server-inventory/server-inventory-cache.js.map +1 -1
  111. package/core/shared/server-inventory/server-inventory.d.ts +24 -0
  112. package/core/shared/server-inventory/server-inventory.js.map +1 -1
  113. package/package.json +1 -1
  114. package/styles/css/main-v2.css +1 -1
  115. package/tools/wac-cli/templates/wac-template/angular.json +2 -2
  116. package/tools/wac-cli/templates/wac-template/src/main.ts +3 -0
@@ -229,6 +229,10 @@ export class PivotComponent extends CoreBaseComponent {
229
229
  * The selected tab changed event
230
230
  */
231
231
  this.selectionChange = new EventEmitter();
232
+ /**
233
+ * The selected tab changed event triggered by click or keyboard navigation.
234
+ */
235
+ this.selectionChangeByClick = new EventEmitter();
232
236
  /**
233
237
  * Implementation of the Layout interface
234
238
  */
@@ -312,6 +316,14 @@ export class PivotComponent extends CoreBaseComponent {
312
316
  refresh(shouldEmit = false, byWindowSize = false) {
313
317
  this.updatePivotTabs(shouldEmit, byWindowSize);
314
318
  }
319
+ /**
320
+ * Selects a tab by clicking or keyboard navigation.
321
+ * @param tab The tab to select by clicking or keyboard navigation.
322
+ */
323
+ onClick(tab) {
324
+ this.select(tab);
325
+ this.selectionChangeByClick.emit(tab);
326
+ }
315
327
  /**
316
328
  * Selects a tab
317
329
  * @param tab The tab to select
@@ -376,6 +388,28 @@ export class PivotComponent extends CoreBaseComponent {
376
388
  }
377
389
  return undefined;
378
390
  }
391
+ /**
392
+ * It gets the label from the pivot tab component.
393
+ * @returns array of labels representing the pivot tabs.
394
+ */
395
+ getLabels() {
396
+ if (!this.tabs || !this.tabs.toArray()) {
397
+ return [];
398
+ }
399
+ return this.tabs.toArray().map((a) => a.label);
400
+ }
401
+ /**
402
+ * It handles the selection of pivot tab by label.
403
+ * @param label the label for pivot tab to be selected.
404
+ * @returns void.
405
+ */
406
+ selectTabByLabel(label) {
407
+ const tabComponent = this.getPivotTabComponentByLabel(label);
408
+ if (!tabComponent) {
409
+ return;
410
+ }
411
+ this.select(tabComponent);
412
+ }
379
413
  /**
380
414
  * Creates the idBag used by this component to store unique element ids.
381
415
  * id values will be assigned by the @see BaseComponent super class.
@@ -393,6 +427,22 @@ export class PivotComponent extends CoreBaseComponent {
393
427
  'sme-pivot'
394
428
  ]);
395
429
  }
430
+ /**
431
+ * Gets the pivot tab component by pivot tab label.
432
+ * @param label the label string.
433
+ * @returns the pivot tab component with the specific label.
434
+ */
435
+ getPivotTabComponentByLabel(label) {
436
+ if (!this.tabs || !this.tabs.toArray() || !this.tabs.toArray().length) {
437
+ return;
438
+ }
439
+ const tabs = this.tabs.toArray();
440
+ for (let i = 0; i < tabs.length; i++) {
441
+ if (tabs[i].label === label) {
442
+ return tabs[i];
443
+ }
444
+ }
445
+ }
396
446
  /**
397
447
  * Main rendering functionality for the pivot tab
398
448
  * @param shouldEmit It indicates whether the layout changed event should be fired.
@@ -454,7 +504,9 @@ export class PivotComponent extends CoreBaseComponent {
454
504
  isMoreButtonWidthAdded = true;
455
505
  // Pop the prev visible tab due to not compatible after adding the 'More' dropdown.
456
506
  // Guarantee that at least one tab will be shown at minimum.
457
- if (this.selection && this.visibleTabs.length > 1) {
507
+ // If the prev item is selected, should not backtracking pop.
508
+ if (this.selection && this.visibleTabs.length > 1 &&
509
+ this.selection !== this.visibleTabs[this.visibleTabs.length - 1]) {
458
510
  const poppedTab = this.visibleTabs.pop();
459
511
  this.trayTabs.push(poppedTab);
460
512
  currentFill -= prevWidth;
@@ -493,7 +545,7 @@ export class PivotComponent extends CoreBaseComponent {
493
545
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.pivotContents = _t);
494
546
  } }, hostVars: 2, hostBindings: function PivotComponent_HostBindings(rf, ctx) { if (rf & 2) {
495
547
  i0.ɵɵclassProp("sme-disabled", ctx.disabled);
496
- } }, inputs: { selection: "selection", switchTabByShowHide: "switchTabByShowHide", headerText: "headerText", alignHeader: "alignHeader", alignTabs: "alignTabs", noLeftPadding: "noLeftPadding", disabled: "disabled" }, outputs: { selectionChange: "selectionChange", layoutChanged: "layoutChanged", windowBreakpointChanged: "windowBreakpointChanged" }, features: [i0.ɵɵProvidersFeature([
548
+ } }, inputs: { selection: "selection", switchTabByShowHide: "switchTabByShowHide", headerText: "headerText", alignHeader: "alignHeader", alignTabs: "alignTabs", noLeftPadding: "noLeftPadding", disabled: "disabled" }, outputs: { selectionChange: "selectionChange", selectionChangeByClick: "selectionChangeByClick", layoutChanged: "layoutChanged", windowBreakpointChanged: "windowBreakpointChanged" }, features: [i0.ɵɵProvidersFeature([
497
549
  { provide: SME_LAYOUT_PROVIDER, useExisting: forwardRef((() => PivotComponent)) },
498
550
  { provide: SME_PIVOT_TAB_CONTAINER_PROVIDER, useExisting: forwardRef((() => PivotComponent)) }
499
551
  ]), i0.ɵɵInheritDefinitionFeature], decls: 17, vars: 20, consts: [[1, "sme-arrange-stack-h"], ["class", "sme-position-flex-auto", 4, "ngIf"], ["role", "tablist"], [4, "ngFor", "ngForOf"], ["role", "menu"], ["role", "presentation", 1, "sme-position-flex-none"], ["dropDown", ""], ["type", "button", "role", "menuitem", "aria-haspopup", "true", 1, "sme-button-trigger", "sme-layout-action-bar-item-height", "sme-button-auto-width", "sme-dropdown-toggle"], ["dropDownButton", ""], [1, "sme-icon", "sme-icon-size-xxs", "sme-icon-chevronDown", "sme-margin-left-xs"], ["role", "menu", 1, "sme-dropdown-content", "sme-arrange-stack-v", "sme-position-stretch-h"], ["class", "sme-arrange-stack-h", 4, "ngFor", "ngForOf"], ["role", "tabpanel", 3, "id", "sme-layout-none", 4, "ngIf"], [4, "ngIf"], [1, "sme-position-flex-auto"], ["role", "tab", 3, "routerLink", "disabled", "sme-disabled", "routerLinkActiveOptions", "sme-active", "smeRouterLinkActivated", 4, "ngIf"], ["tabindex", "0", "role", "tab", 3, "disabled", "sme-disabled", "sme-active", "click", 4, "ngIf"], ["role", "tab", 3, "routerLink", "disabled", "routerLinkActiveOptions", "smeRouterLinkActivated"], [3, "class", 4, "ngIf"], ["tabindex", "0", "role", "tab", 3, "disabled", "click"], ["role", "menuitem", "class", "sme-position-stretch-h", 3, "routerLink", "sme-disabled", "routerLinkActiveOptions", "smeRouterLinkActivated", 4, "ngIf"], ["role", "menuitem", "class", "sme-position-stretch-h", 3, "sme-disabled", "click", 4, "ngIf"], ["role", "menuitem", 1, "sme-position-stretch-h", 3, "routerLink", "routerLinkActiveOptions", "smeRouterLinkActivated"], ["role", "menuitem", 1, "sme-position-stretch-h", 3, "click"], ["role", "tabpanel", 3, "id"], ["pivotContents", ""], [4, "ngTemplateOutlet"]], template: function PivotComponent_Template(rf, ctx) { if (rf & 1) {
@@ -522,10 +574,10 @@ export class PivotComponent extends CoreBaseComponent {
522
574
  i0.ɵɵtemplate(16, PivotComponent_ng_container_16_Template, 2, 1, "ng-container", 13);
523
575
  } if (rf & 2) {
524
576
  const _r2 = i0.ɵɵreference(7);
525
- i0.ɵɵstyleProp("padding-left", ctx.noLeftPadding ? 0 : null);
526
577
  i0.ɵɵadvance(1);
527
578
  i0.ɵɵproperty("ngIf", ctx.headerText);
528
579
  i0.ɵɵadvance(1);
580
+ i0.ɵɵstyleProp("padding-left", ctx.noLeftPadding ? 0 : null);
529
581
  i0.ɵɵclassProp("sme-pivot-reverse-header", ctx.alignTabs === "right")("sme-position-stretch-h", !ctx.headerText);
530
582
  i0.ɵɵadvance(2);
531
583
  i0.ɵɵproperty("ngForOf", ctx.visibleTabs);
@@ -600,6 +652,8 @@ __decorate([
600
652
  type: Input
601
653
  }], selectionChange: [{
602
654
  type: Output
655
+ }], selectionChangeByClick: [{
656
+ type: Output
603
657
  }], layoutChanged: [{
604
658
  type: Output
605
659
  }], windowBreakpointChanged: [{
@@ -624,4 +678,4 @@ __decorate([
624
678
  type: ViewChildren,
625
679
  args: ['pivotContents']
626
680
  }], refresh: [], onWindowBreakpointChanged: [], onLayoutChanged: [], deferredOnLayoutChanged: [] }); })();
627
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGl2b3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvcGl2b3QvcGl2b3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvcGl2b3QvcGl2b3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFHSCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULGVBQWUsRUFDZixVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixXQUFXLEVBQ1gsTUFBTSxFQUNOLFFBQVEsRUFDUixLQUFLLEVBQ0wsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBQ1QsUUFBUSxFQUNSLFNBQVMsRUFDVCxZQUFZLEVBQ2YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDhFQUE4RSxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSwwRUFBMEUsQ0FBQztBQUNqRyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDdEUsT0FBTyxFQUFVLG1CQUFtQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDL0QsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDakYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7Ozs7SUMzQnZFLDhCQUFzRDtJQUFBLFlBQWM7SUFBQSxpQkFBSzs7O0lBQW5CLGVBQWM7SUFBZCx1Q0FBYzs7O0lB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QUUsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUMsR0FBRyxFQUFFLGVBQWUsRUFBQyxFQUFFO2lCQUMvRjthQUNKOztzQkFzSVEsUUFBUTs7c0JBQUksUUFBUTs7c0JBQUksTUFBTTt1QkFBQyxtQkFBbUI7d0JBckhoRCxTQUFTO2tCQURmLEtBQUs7WUFPQyxtQkFBbUI7a0JBRHpCLEtBQUs7WUFPQyxVQUFVO2tCQURoQixLQUFLO1lBT0ssV0FBVztrQkFEckIsS0FBSztZQVNDLFNBQVM7a0JBRGYsS0FBSztZQU9DLGVBQWU7a0JBRHJCLE1BQU07WUFPQSxhQUFhO2tCQURuQixNQUFNO1lBT0EsdUJBQXVCO2tCQUQ3QixNQUFNO1lBT0EsSUFBSTtrQkFEVixlQUFlO21CQUFDLGlCQUFpQjtZQUkzQixhQUFhO2tCQURuQixlQUFlO21CQUFDLGlCQUFpQjtZQVkzQixhQUFhO2tCQURuQixLQUFLO1lBUUMsUUFBUTtrQkFGZCxXQUFXO21CQUFDLG9CQUFvQjs7a0JBQ2hDLEtBQUs7WUE2QkUsaUJBQWlCLE1BS1kscUJBQXFCO2tCQUF6RCxTQUFTO21CQUFDLGdCQUFnQjtZQUdwQixhQUFhO2tCQURuQixZQUFZO21CQUFDLGVBQWU7WUFxRHRCLE9BQU8sTUFxQ1AseUJBQXlCLE1Bb0J4QixlQUFlLE1BUWYsdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIEFmdGVyQ29udGVudENoZWNrZWQsXHJcbiAgICBBZnRlckNvbnRlbnRJbml0LFxyXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBDb250ZW50Q2hpbGRyZW4sXHJcbiAgICBFbGVtZW50UmVmLFxyXG4gICAgRXZlbnRFbWl0dGVyLFxyXG4gICAgZm9yd2FyZFJlZixcclxuICAgIEhvc3RCaW5kaW5nLFxyXG4gICAgSW5qZWN0LFxyXG4gICAgSW5qZWN0b3IsXHJcbiAgICBJbnB1dCxcclxuICAgIE9wdGlvbmFsLFxyXG4gICAgT3V0cHV0LFxyXG4gICAgUXVlcnlMaXN0LFxyXG4gICAgU2tpcFNlbGYsXHJcbiAgICBWaWV3Q2hpbGQsXHJcbiAgICBWaWV3Q2hpbGRyZW5cclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRGVib3VuY2UgfSBmcm9tICdAbWljcm9zb2Z0L3dpbmRvd3MtYWRtaW4tY2VudGVyLXNkay9jb3JlL2Jhc2UvZGVjb3JhdG9ycy9kZWJvdW5jZS5kZWNvcmF0b3JzJztcclxuaW1wb3J0IHsgWWllbGQgfSBmcm9tICdAbWljcm9zb2Z0L3dpbmRvd3MtYWRtaW4tY2VudGVyLXNkay9jb3JlL2Jhc2UvZGVjb3JhdG9ycy95aWVsZC5kZWNvcmF0b3InO1xyXG5pbXBvcnQgeyBDb3JlQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL2NvbW1vbi9iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNtZUluamVjdCB9IGZyb20gJy4uL2NvbW1vbi9kZWNvcmF0b3JzL2luamVjdGlvbi5kZWNvcmF0b3JzJztcclxuaW1wb3J0IHsgTGF5b3V0LCBTTUVfTEFZT1VUX1BST1ZJREVSIH0gZnJvbSAnLi4vY29tbW9uL2xheW91dCc7XHJcbmltcG9ydCB7IFBpdm90UmVzcG9uc2l2ZVdpbmRvd01hbmFnZXIgfSBmcm9tICcuL3Bpdm90LXJlc3BvbnNpdmUtd2luZG93LW1hbmFnZXInO1xyXG5pbXBvcnQgeyBQaXZvdFRhYlR5cGUgfSBmcm9tICcuL3Bpdm90LXRhYi10eXBlJztcclxuaW1wb3J0IHsgUGl2b3RUYWJDb21wb25lbnQgfSBmcm9tICcuL3Bpdm90LXRhYi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTTUVfUElWT1RfVEFCX0NPTlRBSU5FUl9QUk9WSURFUiB9IGZyb20gJy4vcGl2b3QtdGFiLmNvbnRhaW5lcic7XHJcbi8qKlxyXG4gKiBAc21lRG9jIHtAbGFiZWwgUGl2b3QgQGlkIHNtZS1waXZvdC1jb21wb25lbnR9XHJcbiAqXHJcbiAqIEBvdmVydmlld1xyXG4gKiBAZmlsZSB7QGZpbGVwYXRoIC4vZXhhbXBsZXMvb3ZlcnZpZXcubWR9XHJcbiAqXHJcbiAqIEBleGFtcGxlIHtAbGFiZWwgU3RhdGljIFRhYiBAaWQgc3RhdGljLXRhYn1cclxuICogQGZpbGUge0BmaWxlbmFtZSBjb21wb25lbnQuaHRtbCBAZmlsZXBhdGggLi9leGFtcGxlcy9zdGF0aWMtdGFiLmNvbXBvbmVudC5odG1sfVxyXG4gKlxyXG4gKiBAZXhhbXBsZSB7QGxhYmVsIFJvdXRlZCBUYWIgQGlkIHJvdXRlZC10YWJ9XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50Lmh0bWwgQGZpbGVwYXRoIC4vZXhhbXBsZXMvcm91dGVkLXRhYi5jb21wb25lbnQuaHRtbH1cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdzbWUtcGl2b3QnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Bpdm90LmNvbXBvbmVudC5odG1sJyxcclxuICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIHsgcHJvdmlkZTogU01FX0xBWU9VVF9QUk9WSURFUiwgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUGl2b3RDb21wb25lbnQpIH0sXHJcbiAgICAgICAgeyBwcm92aWRlOiBTTUVfUElWT1RfVEFCX0NPTlRBSU5FUl9QUk9WSURFUiwgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUGl2b3RDb21wb25lbnQpIH1cclxuICAgIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFBpdm90Q29tcG9uZW50IGV4dGVuZHMgQ29yZUJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRDaGVja2VkLCBBZnRlckNvbnRlbnRJbml0LCBMYXlvdXQge1xyXG4gICAgcHVibGljIHZpc2libGVUYWJzOiBQaXZvdFRhYkNvbXBvbmVudFtdOyAvLyBSZWd1bGF0ZXMgdGhlIHRhYnMgdGhhdCBnZXQgZGlzcGxheWVkLlxyXG4gICAgcHVibGljIHRyYXlUYWJzID0gW107IC8vIFJlZ3VsYXRlcyB0aGUgdGFicyB0aGF0IGFyZSBhZGRlZCB0byB0aGUgZHJvcGRvd24gaWYgbmVjZXNzYXJ5LlxyXG4gICAgcHVibGljIG1vcmVUYWJzRGlzcGxheSA9ICdNb3JlJzsgLy8gTGFiZWwgZm9yIHRoZSBkcm9wZG93biBtZW51IHRhYnNcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBzb3VyY2UgbmFtZSB0byB1c2UgZm9yIGxvZ2dpbmdcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGdldCBsb2dTb3VyY2VOYW1lKCkge1xyXG4gICAgICAgIHJldHVybiAnUGl2b3RDb21wb25lbnQnO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIHNlbGVjdGVkIHRhYlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNlbGVjdGlvbjogUGl2b3RUYWJDb21wb25lbnQ7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJdCBpbmRpY2F0ZXMgd2hldGhlciB0byBzaG93L2hpZGUgb3IgbG9hZC91bmxvYWQgdGhlIHRhYnMgdG8gZG8gdGFiIHN3aXRjaGluZ1xyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHN3aXRjaFRhYkJ5U2hvd0hpZGU6IGJvb2xlYW47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUZXh0IGZvciBhIGhlYWRlciB0byBzaG93IHdpdGggdGhlIHBpdm90IHRhYnMuIERpc3BsYXllZCBhcyBoNCB3aXRoIHRhYnMgb24gdGhlIHJpZ2h0LlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGhlYWRlclRleHQ6IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXByZWNhdGVkIHNpbmNlIDA4LzMwLzE5LiBQbGVhc2UgdXNlIGFsaWduVGFicyBpbnN0ZWFkXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2V0IGFsaWduSGVhZGVyKHZhbHVlOiAncmlnaHQnIHwgJ2xlZnQnKSB7XHJcbiAgICAgICAgdGhpcy5hbGlnblRhYnMgPSB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFdoZXJlIHRvIGFsaWduIHRhYnMsIGxlZnQgb3IgcmlnaHRcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBhbGlnblRhYnM6ICdyaWdodCcgfCAnbGVmdCc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgc2VsZWN0ZWQgdGFiIGNoYW5nZWQgZXZlbnRcclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxQaXZvdFRhYkNvbXBvbmVudD4oKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEltcGxlbWVudGF0aW9uIG9mIHRoZSBMYXlvdXQgaW50ZXJmYWNlXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIGxheW91dENoYW5nZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEltcGxlbWVudGF0aW9uIG9mIHRoZSBMYXlvdXQgaW50ZXJmYWNlXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIHdpbmRvd0JyZWFrcG9pbnRDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgVGFicyBvZiB0aGUgUGl2b3RcclxuICAgICAqL1xyXG4gICAgQENvbnRlbnRDaGlsZHJlbihQaXZvdFRhYkNvbXBvbmVudClcclxuICAgIHB1YmxpYyB0YWJzOiBRdWVyeUxpc3Q8UGl2b3RUYWJDb21wb25lbnQ+O1xyXG5cclxuICAgIEBDb250ZW50Q2hpbGRyZW4oUGl2b3RUYWJDb21wb25lbnQpXHJcbiAgICBwdWJsaWMgdmlzaWJsZVRhYnNRTDogUXVlcnlMaXN0PFBpdm90VGFiQ29tcG9uZW50PjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEJpbmRhYmxlIHByb3BlcnR5IGZvciB0YWIgdHlwZXNcclxuICAgICAqL1xyXG4gICAgcHVibGljIHBpdm90VGFiVHlwZSA9IFBpdm90VGFiVHlwZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIERldGVybWluZXMgd2hldGhlciB0byByZW5kZXIgd2l0aCBsZWZ0IHBhZGRpbmdcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBub0xlZnRQYWRkaW5nID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmRpY2F0ZXMgaWYgdGhpcyBwaXZvdCBpcyBkaXNhYmxlZFxyXG4gICAgICovXHJcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnNtZS1kaXNhYmxlZCcpXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGRpc2FibGVkOiBib29sZWFuO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5kaWNhdGVzIHRoYXQgcm91dGVkIHRhYnMgaGF2ZSBiZWVuIHByb3ZpZGVkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgaGFzUm91dGVkVGFicygpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy50YWJzICYmIHRoaXMudGFicy5zb21lKHQgPT4gdC50eXBlID09PSBQaXZvdFRhYlR5cGUuUm91dGVkKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEluZGljYXRlcyB0aGF0IHN0YXRpYyB0YWJzIGhhdmUgYmVlbiBwcm92aWRlZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0IGhhc1N0YXRpY1RhYnMoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudGFicyAmJiB0aGlzLnRhYnMuc29tZSh0ID0+IHQudHlwZSA9PT0gUGl2b3RUYWJUeXBlLlN0YXRpYyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCB2aXNpVGFicygpOiBQaXZvdFRhYkNvbXBvbmVudFtdIHtcclxuICAgICAgICByZXR1cm4gdGhpcy50YWJzLmZpbHRlcih0YWIgPT4gdGFiLmlzVmlzaWJsZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmRpY2F0ZXMgdGhhdCBzdGF0aWMgdGFicyBoYXZlIGJlZW4gcHJvdmlkZWRcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldCBzZWxlY3Rpb25Jc1JvdXRlZCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb24gJiYgdGhpcy5zZWxlY3Rpb24udHlwZSA9PT0gUGl2b3RUYWJUeXBlLlJvdXRlZDtcclxuICAgIH1cclxuXHJcbiAgICBAU21lSW5qZWN0KENoYW5nZURldGVjdG9yUmVmKVxyXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWY7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIGRyb3Bkb3duIGVsZW1lbnQgdGhhdCBjb250YWlucyBwaXZvdFRhYnMgb25seSBpZiB0aGUgc2NyZWVuIHNpemUgZG9lc24ndCBhbGxvdy5cclxuICAgICAqL1xyXG4gICAgQFZpZXdDaGlsZCgnZHJvcERvd25CdXR0b24nKSBwcml2YXRlIGRyb3BEb3duQnV0dG9uRWxlbWVudDogRWxlbWVudFJlZjtcclxuXHJcbiAgICBAVmlld0NoaWxkcmVuKCdwaXZvdENvbnRlbnRzJylcclxuICAgIHB1YmxpYyBwaXZvdENvbnRlbnRzOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XHJcblxyXG4gICAgcHJpdmF0ZSBwaXZvdFJlc3BvbnNpdmVXaW5kb3dNYW5hZ2VyOiBQaXZvdFJlc3BvbnNpdmVXaW5kb3dNYW5hZ2VyO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIEBzZWUgUGl2b3RDb21wb25lbnQgY2xhc3MuXHJcbiAgICAgKiBAcGFyYW0gaW5qZWN0b3IgVGhlIGFuZ3VsYXIgaW5qZWN0aW9uIHNlcnZpY2UuIHJlcXVpcmVkIGJ5IEBTbWVJbmplY3RhYmxlKCkgZGVjb3JhdG9yIGluIHRoZSBiYXNlIEBzZWUgQmFzZUNvbXBvbmVudCBjbGFzc1xyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICAgICAgQFNraXBTZWxmKCkgQE9wdGlvbmFsKCkgQEluamVjdChTTUVfTEFZT1VUX1BST1ZJREVSKSBsYXlvdXQ6IExheW91dCkge1xyXG4gICAgICAgIHN1cGVyKGluamVjdG9yKTtcclxuXHJcbiAgICAgICAgaWYgKGxheW91dCkge1xyXG4gICAgICAgICAgICB0aGlzLnBpdm90UmVzcG9uc2l2ZVdpbmRvd01hbmFnZXIgPSBuZXcgUGl2b3RSZXNwb25zaXZlV2luZG93TWFuYWdlcihsYXlvdXQpO1xyXG4gICAgICAgICAgICAvLyBvbiBwYXJlbnQgbGF5b3V0IGNoYW5nZXMsIHJlLWVtaXQgdGhlIGxheW91dCBjaGFuZ2UgdG8gb3VyIGV2ZW50XHJcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKGxheW91dC5sYXlvdXRDaGFuZ2VkLnN1YnNjcmliZSgoKCkgPT4gdGhpcy5vbkxheW91dENoYW5nZWQoKSkpKTtcclxuICAgICAgICAgICAgLy8gb24gd2luZG93IGJyZWFrIHBvaW50IGNoYW5nZXMsIGVtaXQgdGhlIGV2ZW50IGFib3V0IGNyaXRpY2FsIGNsYXNzZXMgYW5kIHN0eWxpbmcgdXBkYXRlcyBzaWduYWwuXHJcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKGxheW91dC53aW5kb3dCcmVha3BvaW50Q2hhbmdlZC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5vbldpbmRvd0JyZWFrcG9pbnRDaGFuZ2VkKCkpKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuZGVmZXJyZWRPbkxheW91dENoYW5nZWQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcclxuICAgICAgICBpZiAodGhpcy50YWJzICYmIHRoaXMudGFicy5maXJzdCAmJiAhdGhpcy5zZWxlY3Rpb24pIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24gPSB0aGlzLnRhYnMuZmlyc3Q7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLnRhYnMubGVuZ3RoIDwgMSkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXHJcbiAgICAgICAgICAgICAgICAnUGl2b3QgbXVzdCBjb250YWluIGNoaWxkIHRhYnMuIEV4cGVjdGVkIGF0IGxlYXN0IG9uZSAoMSkgdGFiJ1xyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnZpc2libGVUYWJzID0gdGhpcy50YWJzLnRvQXJyYXkoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgbmdBZnRlckNvbnRlbnRDaGVja2VkKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5kaWNhdGVzIG9mIGEgZ2l2ZW4gdGFiIGlzIHNlbGVjdGVkXHJcbiAgICAgKiBAcGFyYW0gdGFiIFRoZSB0YWIgdG8gY29tcGFyZSB3aXRoXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBpc1NlbGVjdGVkKHRhYjogUGl2b3RUYWJDb21wb25lbnQpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb24gJiYgdGhpcy5zZWxlY3Rpb24gPT09IHRhYjtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEZvcmNlIHJlZnJlc2ggZm9yIHRoZSBwaXZvdCB0YWJzLlxyXG4gICAgICovXHJcbiAgICBARGVib3VuY2UoKVxyXG4gICAgcHVibGljIHJlZnJlc2goc2hvdWxkRW1pdCA9IGZhbHNlLCBieVdpbmRvd1NpemUgPSBmYWxzZSkge1xyXG4gICAgICAgIHRoaXMudXBkYXRlUGl2b3RUYWJzKHNob3VsZEVtaXQsIGJ5V2luZG93U2l6ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZWxlY3RzIGEgdGFiXHJcbiAgICAgKiBAcGFyYW0gdGFiIFRoZSB0YWIgdG8gc2VsZWN0XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzZWxlY3QodGFiOiBQaXZvdFRhYkNvbXBvbmVudCk6IHZvaWQge1xyXG4gICAgICAgIC8vIEF0IGFueSBnaXZlbiB0aW1lIHdlIHNob3VsZCBoYXZlIGFuIGF0dHJpYnV0ZSB0aGF0IGxldHMgdXMga25vdyBpZiBhIHRhYiBpcyB2aXNpYmxlIG9yIG5vdC5cclxuICAgICAgICBpZiAodGFiKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy50cmF5VGFicy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudHJheVRhYnNbaV0gPT09IHRhYikge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnZpc2libGVUYWJzICYmIHRoaXMudmlzaWJsZVRhYnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBoaWRkZW5UYWIgPSB0aGlzLnZpc2libGVUYWJzLnBvcCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBoaWRkZW5UYWIuaXNWaXNpYmxlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudHJheVRhYnMucHVzaChoaWRkZW5UYWIpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnZpc2libGVUYWJzLnB1c2godGFiKTtcclxuICAgICAgICAgICAgICAgICAgICB0YWIuaXNWaXNpYmxlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRyYXlUYWJzLnNwbGljZShpLCAxKTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24gPSB0YWI7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQodGFiKTtcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuZW1pdExheW91dENoYW5nZWQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgb24gd2luZG93IGJyZWFrcG9pbnQgY2hhbmdlZCBoYW5kbGVyLlxyXG4gICAgICogQWRkaW5nIHlpZWxkIGZvciBjb21wb25lbnQgdG8gZ2V0IEVsZW1lbnRSZWYgYWZ0ZXIgaW5pdGlhbGl6YXRpb24uXHJcbiAgICAgKi9cclxuICAgIEBZaWVsZCgpXHJcbiAgICBwdWJsaWMgb25XaW5kb3dCcmVha3BvaW50Q2hhbmdlZCgpIHtcclxuICAgICAgICBpZiAoIXRoaXMudGFicyB8fCAhdGhpcy50YWJzLnRvQXJyYXkoKSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnBpdm90UmVzcG9uc2l2ZVdpbmRvd01hbmFnZXIub25XaW5kb3dTaXplQ2hhbmdlZCh0aGlzLnBpdm90Q29udGVudHMsXHJcbiAgICAgICAgICAgIHRoaXMuaWRCYWcudGFiUGFuZWwgKyB0aGlzLnRhYnMudG9BcnJheSgpLmluZGV4T2YodGhpcy5zZWxlY3Rpb24pKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEVtaXRzIHRoZSBsYXlvdXQgY2hhbmdlZCBldmVudCB0byBub3RpZnkgY2hpbGRyZW4gYWJvdXQgbGF5b3V0IGNoYW5nZWQuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgZW1pdExheW91dENoYW5nZWQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5sYXlvdXRDaGFuZ2VkLmVtaXQoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE9uIGxheW91dCBjaGFuZ2VkIGV2ZW50IGhhbmRsZXIsIG9jY3VycyBldmVyeSB0aW1lIHRoZSBsYXlvdXQgaGFzIGJlZW4gY2hhbmdlZC5cclxuICAgICAqL1xyXG4gICAgQFlpZWxkKClcclxuICAgIHByaXZhdGUgb25MYXlvdXRDaGFuZ2VkKCkge1xyXG4gICAgICAgIHRoaXMudXBkYXRlUGl2b3RUYWJzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgZGVmZXJyZWQgbGF5b3V0IGNoYW5nZWQgaGFuZGxlci5cclxuICAgICAqL1xyXG4gICAgQERlYm91bmNlKClcclxuICAgIHByaXZhdGUgZGVmZXJyZWRPbkxheW91dENoYW5nZWQoKSB7XHJcbiAgICAgICAgdGhpcy5vbkxheW91dENoYW5nZWQoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0VGFiUGFuZWxJbmRleChpZDogc3RyaW5nLCBjdXJyZW50VGFiOiBib29sZWFuKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICBjb25zdCB0YWJQYW5lbFNlY3Rpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7XHJcblxyXG4gICAgICAgIGlmIChjdXJyZW50VGFiICYmIHRhYlBhbmVsU2VjdGlvbikge1xyXG4gICAgICAgICAgICAvLyBubyBzY3JvbGwgYmFyIGlzIHZpc2libGUgd2hlbiBzY3JvbGxIZWlnaHQgaXMgZXF1YWwgdG8gY2xpZW50SGVpZ2h0XHJcbiAgICAgICAgICAgIC8vIHVzZSB0aGlzIHRvIHNldCB0YWJpbmRleCBvbmx5IGZvciBzY3JvbGxhYmxlIGNvbnRlbnRcclxuICAgICAgICAgICAgY29uc3QgaGFzU2Nyb2xsQmFyID0gdGFiUGFuZWxTZWN0aW9uLnNjcm9sbEhlaWdodCAhPT0gdGFiUGFuZWxTZWN0aW9uLmNsaWVudEhlaWdodDtcclxuXHJcbiAgICAgICAgICAgIHJldHVybiBoYXNTY3JvbGxCYXIgPyAwIDogdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENyZWF0ZXMgdGhlIGlkQmFnIHVzZWQgYnkgdGhpcyBjb21wb25lbnQgdG8gc3RvcmUgdW5pcXVlIGVsZW1lbnQgaWRzLlxyXG4gICAgICogaWQgdmFsdWVzIHdpbGwgYmUgYXNzaWduZWQgYnkgdGhlIEBzZWUgQmFzZUNvbXBvbmVudCBzdXBlciBjbGFzcy5cclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGNyZWF0ZUlkQmFnKCk6IE1zZnRTbWUuU3RyaW5nTWFwPHN0cmluZz4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHRhYlBhbmVsOiAnJ1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIHRoZSBpbml0aWFsIGhvc3QgY2xhc3NlcyB0byBiZSBhcHBsaWVkIHRvIHRoaXMgZWxlbWVudFxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgZ2V0SW5pdGlhbEhvc3RDbGFzc2VzKCk6IHN0cmluZ1tdIHtcclxuICAgICAgICByZXR1cm4gc3VwZXIuZ2V0SW5pdGlhbEhvc3RDbGFzc2VzKCkuY29uY2F0KFtcclxuICAgICAgICAgICAgJ3NtZS1waXZvdCdcclxuICAgICAgICBdKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1haW4gcmVuZGVyaW5nIGZ1bmN0aW9uYWxpdHkgZm9yIHRoZSBwaXZvdCB0YWJcclxuICAgICAqIEBwYXJhbSBzaG91bGRFbWl0IEl0IGluZGljYXRlcyB3aGV0aGVyIHRoZSBsYXlvdXQgY2hhbmdlZCBldmVudCBzaG91bGQgYmUgZmlyZWQuXHJcbiAgICAgKiBAcGFyYW0gYnlXaW5kb3dTaXplIEl0IGluZGljYXRlcyB3aGV0aGVyIHRvIHVzZSB0aGUgd2luZG93IHdpZHRoIHdoZW4gdGhlIGhvc3RFbGVtZW50IHdpZHRoIGlzIDAuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgdXBkYXRlUGl2b3RUYWJzKHNob3VsZEVtaXQgPSB0cnVlLCBieVdpbmRvd1NpemUgPSBmYWxzZSkge1xyXG4gICAgICAgIGxldCBjdXJyZW50RmlsbCA9IDA7XHJcbiAgICAgICAgdGhpcy52aXNpYmxlVGFicyA9IFtdO1xyXG4gICAgICAgIHRoaXMudHJheVRhYnMgPSBbXTtcclxuXHJcbiAgICAgICAgY29uc3QgaG9zdCA9IDxIVE1MRWxlbWVudD50aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICAgICAgbGV0IHRhYkJhcldpZHRoID0gaG9zdC5vZmZzZXRXaWR0aDtcclxuXHJcbiAgICAgICAgaWYgKHRhYkJhcldpZHRoID09PSAwICYmIGJ5V2luZG93U2l6ZSkge1xyXG4gICAgICAgICAgICB0YWJCYXJXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IHRvdGFsVGFiV2lkdGggPSAwO1xyXG4gICAgICAgIGNvbnN0IHRhYkxpc3QgPSB0aGlzLnRhYnMudG9BcnJheSgpO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy50YWJzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHRhYjogUGl2b3RUYWJDb21wb25lbnQgPSB0YWJMaXN0W2ldO1xyXG4gICAgICAgICAgICBjb25zdCB0YWJXaWR0aCA9IHRhYi53aWR0aDtcclxuICAgICAgICAgICAgdG90YWxUYWJXaWR0aCArPSB0YWJXaWR0aDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0b3RhbFRhYldpZHRoIDw9IHRhYkJhcldpZHRoKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy50YWJzLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgICAgICAgICAgICB0YWJMaXN0W2ldLmlzVmlzaWJsZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnZpc2libGVUYWJzLnB1c2godGFiTGlzdFtpXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBsZXQgaXNNb3JlQnV0dG9uV2lkdGhBZGRlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICBjb25zdCB2aXNpYmxlVGFiQmFyV2lkdGggPSB0YWJCYXJXaWR0aDtcclxuXHJcbiAgICAgICAgICAgIC8vIEdldCB0aGUgY3VycmVudCBzZWxlY3Rpb24gaWYgYXBwbGljYWJsZS4gT24gd2luZG93IHJlc2l6ZSwgdGhlIHNlbGVjdGlvbiBjYW5ub3QgbG9zdCB0YXJnZXQuXHJcbiAgICAgICAgICAgIGxldCBpbmRleEZvclNlbGVjdGlvbiA9IC0xO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMudGFicy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgdGFiID0gdGFiTGlzdFtpXTtcclxuICAgICAgICAgICAgICAgIGlmICh0YWIgPT09IHRoaXMuc2VsZWN0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW5kZXhGb3JTZWxlY3Rpb24gPSBpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBGb3JjZSBmaXQgaW4gdGhlIHNlbGVjdGlvblxyXG4gICAgICAgICAgICBpZiAoaW5kZXhGb3JTZWxlY3Rpb24gPj0gMCkge1xyXG4gICAgICAgICAgICAgICAgdGFiTGlzdFtpbmRleEZvclNlbGVjdGlvbl0uaXNWaXNpYmxlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHRhYldpZHRoID0gdGFiTGlzdFtpbmRleEZvclNlbGVjdGlvbl0ud2lkdGg7XHJcbiAgICAgICAgICAgICAgICBjdXJyZW50RmlsbCArPSB0YWJXaWR0aDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgbGV0IHByZXZXaWR0aCA9IDA7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy50YWJzLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB0YWIgPSB0YWJMaXN0W2ldO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChpbmRleEZvclNlbGVjdGlvbiA9PT0gaSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmlzaWJsZVRhYnMucHVzaCh0YWIpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB0YWJXaWR0aCA9IHRhYi53aWR0aDtcclxuICAgICAgICAgICAgICAgICAgICBwcmV2V2lkdGggPSB0YWJXaWR0aDtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudEZpbGwgKyB0YWJXaWR0aCA+IHZpc2libGVUYWJCYXJXaWR0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWIuaXNWaXNpYmxlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudHJheVRhYnMucHVzaCh0YWIpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc01vcmVCdXR0b25XaWR0aEFkZGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc01vcmVCdXR0b25XaWR0aEFkZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFBvcCB0aGUgcHJldiB2aXNpYmxlIHRhYiBkdWUgdG8gbm90IGNvbXBhdGlibGUgYWZ0ZXIgYWRkaW5nIHRoZSAnTW9yZScgZHJvcGRvd24uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHdWFyYW50ZWUgdGhhdCBhdCBsZWFzdCBvbmUgdGFiIHdpbGwgYmUgc2hvd24gYXQgbWluaW11bS5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbiAmJiB0aGlzLnZpc2libGVUYWJzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwb3BwZWRUYWIgPSB0aGlzLnZpc2libGVUYWJzLnBvcCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudHJheVRhYnMucHVzaChwb3BwZWRUYWIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRGaWxsIC09IHByZXZXaWR0aDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBhY3R1YWwgd2lkdGggZm9yIHRoZSBkcm9wZG93blxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudEZpbGwgKz0gdGhpcy5kcm9wRG93bkJ1dHRvbkVsZW1lbnQubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhYi5pc1Zpc2libGUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpc2libGVUYWJzLnB1c2godGFiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudEZpbGwgKz0gdGFiV2lkdGg7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoc2hvdWxkRW1pdCkge1xyXG4gICAgICAgICAgICB0aGlzLmVtaXRMYXlvdXRDaGFuZ2VkKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJzbWUtYXJyYW5nZS1zdGFjay1oXCIgW3N0eWxlLnBhZGRpbmdMZWZ0XT1cIm5vTGVmdFBhZGRpbmc/MDpudWxsXCI+XHJcbiAgPGg0ICpuZ0lmPVwiaGVhZGVyVGV4dFwiIGNsYXNzPVwic21lLXBvc2l0aW9uLWZsZXgtYXV0b1wiPnt7aGVhZGVyVGV4dH19PC9oND5cclxuXHJcbiAgPGhlYWRlciBbY2xhc3Muc21lLXBpdm90LXJldmVyc2UtaGVhZGVyXT1cImFsaWduVGFicyA9PT0gJ3JpZ2h0J1wiIFtjbGFzcy5zbWUtcG9zaXRpb24tc3RyZXRjaC1oXT1cIiFoZWFkZXJUZXh0XCI+XHJcbiAgICA8IS0tIENhbm5vdCB1c2UgXCJzbWUtcGFkZGluZy1sZWZ0LW5vbmVcIiBDU1MgY2xhc3MgaW4gPGhlYWRlcj4gYWJvdmUgc2luY2Ugc21lLXBhZGRpbmctbGVmdC1ub25lIGRvZXNuJ3QgaGF2ZSBlbm91Z2ggc2VsZWN0b3Igd2VpZ2h0IHRvIG92ZXJyaWRlIHNtZS1waXZvdD5bcm9sZT1cInRhYmxpc3RcIl0gc2VsZWN0b3IgLS0+XHJcbiAgICA8ZGl2IHJvbGU9XCJ0YWJsaXN0XCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHRhYiBvZiB2aXNpYmxlVGFiczsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgIDwhLS0gUm91dGVkIFRhYiBpdGVtIC0tPlxyXG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJ0YWIudHlwZSA9PT0gcGl2b3RUYWJUeXBlLlJvdXRlZFwiIHJvbGU9XCJ0YWJcIiBbcm91dGVyTGlua109XCJ0YWIucm91dGVcIlxyXG4gICAgICAgICAgW2F0dHIuYXJpYS1jb250cm9sc109XCJpZEJhZy50YWJQYW5lbFwiIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgdGFiLmRpc2FibGVkXCJcclxuICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCB0YWIuZGlzYWJsZWRcIiBbY2xhc3Muc21lLWRpc2FibGVkXT1cImRpc2FibGVkIHx8IHRhYi5kaXNhYmxlZFwiXHJcbiAgICAgICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cImlzU2VsZWN0ZWQodGFiKVwiIFtyb3V0ZXJMaW5rQWN0aXZlT3B0aW9uc109XCJ0YWIucm91dGVyTGlua0FjdGl2ZU9wdGlvbnNcIlxyXG4gICAgICAgICAgW2NsYXNzLnNtZS1hY3RpdmVdPVwiaXNTZWxlY3RlZCh0YWIpXCIgKHNtZVJvdXRlckxpbmtBY3RpdmF0ZWQpPVwic2VsZWN0KHRhYilcIj5cclxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFiLmljb25DbGFzc1wiIFtjbGFzc109XCJ0YWIuaWNvbkNsYXNzXCI+PC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4+e3t0YWIubGFiZWx9fTwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgPCEtLSBTdGF0aWMgVGFiIEl0ZW0gLS0+XHJcbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInRhYi50eXBlID09PSBwaXZvdFRhYlR5cGUuU3RhdGljXCIgdGFiaW5kZXg9XCIwXCIgcm9sZT1cInRhYlwiXHJcbiAgICAgICAgICBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cImlkQmFnLnRhYlBhbmVsICsgaVwiIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgdGFiLmRpc2FibGVkXCJcclxuICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCB0YWIuZGlzYWJsZWRcIiBbY2xhc3Muc21lLWRpc2FibGVkXT1cImRpc2FibGVkIHx8IHRhYi5kaXNhYmxlZFwiXHJcbiAgICAgICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cImlzU2VsZWN0ZWQodGFiKVwiIFtjbGFzcy5zbWUtYWN0aXZlXT1cImlzU2VsZWN0ZWQodGFiKVwiXHJcbiAgICAgICAgICAoY2xpY2spPVwic2VsZWN0KHRhYilcIj5cclxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFiLmljb25DbGFzc1wiIFtjbGFzc109XCJ0YWIuaWNvbkNsYXNzXCI+PC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4+e3t0YWIubGFiZWx9fTwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxkaXYgcm9sZT1cIm1lbnVcIj5cclxuICAgICAgICA8c21lLWRyb3Bkb3duICNkcm9wRG93biByb2xlPVwicHJlc2VudGF0aW9uXCIgY2xhc3M9XCJzbWUtcG9zaXRpb24tZmxleC1ub25lXCJcclxuICAgICAgICAgIFtjbGFzcy5zbWUtbGF5b3V0LWhpZGRlbl09XCJ0cmF5VGFicy5sZW5ndGggPT09IDBcIiBbY2xhc3Muc21lLWxheW91dC1ub25lXT1cInRyYXlUYWJzLmxlbmd0aCA9PT0gMFwiPlxyXG4gICAgICAgICAgPGJ1dHRvbiAjZHJvcERvd25CdXR0b24gdHlwZT1cImJ1dHRvblwiIFthdHRyLmFyaWEtbGFiZWxdPVwibW9yZVRhYnNEaXNwbGF5XCIgcm9sZT1cIm1lbnVpdGVtXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJzbWUtYnV0dG9uLXRyaWdnZXIgc21lLWxheW91dC1hY3Rpb24tYmFyLWl0ZW0taGVpZ2h0IHNtZS1idXR0b24tYXV0by13aWR0aCBzbWUtZHJvcGRvd24tdG9nZ2xlXCJcclxuICAgICAgICAgICAgW2NsYXNzLnNtZS10b2dnbGVkXT1cImRyb3BEb3duLmlzT3BlblwiIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiZHJvcERvd24uaXNPcGVuXCIgYXJpYS1oYXNwb3B1cD1cInRydWVcIj5cclxuICAgICAgICAgICAgPHNwYW4+e3sgbW9yZVRhYnNEaXNwbGF5IH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNtZS1pY29uIHNtZS1pY29uLXNpemUteHhzIHNtZS1pY29uLWNoZXZyb25Eb3duIHNtZS1tYXJnaW4tbGVmdC14c1wiPjwvc3Bhbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGRpdiByb2xlPVwibWVudVwiIGNsYXNzPVwic21lLWRyb3Bkb3duLWNvbnRlbnQgc21lLWFycmFuZ2Utc3RhY2stdiBzbWUtcG9zaXRpb24tc3RyZXRjaC1oXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzbWUtYXJyYW5nZS1zdGFjay1oXCIgKm5nRm9yPVwibGV0IHRhYiBvZiB0cmF5VGFiczsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJ0YWIudHlwZSA9PT0gcGl2b3RUYWJUeXBlLlJvdXRlZFwiIHJvbGU9XCJtZW51aXRlbVwiIFtyb3V0ZXJMaW5rXT1cInRhYi5yb3V0ZVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNtZS1wb3NpdGlvbi1zdHJldGNoLWhcIiBbY2xhc3Muc21lLWRpc2FibGVkXT1cImRpc2FibGVkIHx8IHRhYi5kaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAoc21lUm91dGVyTGlua0FjdGl2YXRlZCk9XCJzZWxlY3QodGFiKVwiIFtyb3V0ZXJMaW5rQWN0aXZlT3B0aW9uc109XCJ0YWIucm91dGVyTGlua0FjdGl2ZU9wdGlvbnNcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFiLmljb25DbGFzc1wiIFtjbGFzc109XCJ0YWIuaWNvbkNsYXNzXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+e3t0YWIubGFiZWx9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwidGFiLnR5cGUgPT09IHBpdm90VGFiVHlwZS5TdGF0aWNcIiByb2xlPVwibWVudWl0ZW1cIiBjbGFzcz1cInNtZS1wb3NpdGlvbi1zdHJldGNoLWhcIlxyXG4gICAgICAgICAgICAgICAgW2NsYXNzLnNtZS1kaXNhYmxlZF09XCJkaXNhYmxlZCB8fCB0YWIuZGlzYWJsZWRcIiAoY2xpY2spPVwic2VsZWN0KHRhYilcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFiLmljb25DbGFzc1wiIFtjbGFzc109XCJ0YWIuaWNvbkNsYXNzXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+e3t0YWIubGFiZWx9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L3NtZS1kcm9wZG93bj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2hlYWRlcj5cclxuPC9kaXY+XHJcblxyXG48IS0tIFJvdXRlZCBUYWIgQ29udGVudCAtLT5cclxuPHNlY3Rpb24gI3Bpdm90Q29udGVudHMgKm5nSWY9XCJoYXNSb3V0ZWRUYWJzXCIgcm9sZT1cInRhYnBhbmVsXCIgW2lkXT1cImlkQmFnLnRhYlBhbmVsXCIgW2NsYXNzLnNtZS1sYXlvdXQtbm9uZV09XCIhc2VsZWN0aW9uSXNSb3V0ZWRcIlxyXG4gIFthdHRyLmFyaWEtaGlkZGVuXT1cIiFzZWxlY3Rpb25Jc1JvdXRlZFwiPlxyXG4gIDxyb3V0ZXItb3V0bGV0Pjwvcm91dGVyLW91dGxldD5cclxuPC9zZWN0aW9uPlxyXG5cclxuPCEtLSBTdGF0aWMgVGFiIENvbnRlbnQgLS0+XHJcbjxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNTdGF0aWNUYWJzXCI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdGFiIG9mIHZpc2libGVUYWJzOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFiLnR5cGUgPT09IHBpdm90VGFiVHlwZS5TdGF0aWNcIj5cclxuICAgICAgPHNlY3Rpb24gI3Bpdm90Q29udGVudHMgcm9sZT1cInRhYnBhbmVsXCIgW2lkXT1cImlkQmFnLnRhYlBhbmVsICsgaVwiIFtjbGFzcy5zbWUtbGF5b3V0LW5vbmVdPVwiIWlzU2VsZWN0ZWQodGFiKVwiXHJcbiAgICAgICAgW2F0dHIuYXJpYS1oaWRkZW5dPVwiIWlzU2VsZWN0ZWQodGFiKVwiIFthdHRyLnRhYmluZGV4XT1cImdldFRhYlBhbmVsSW5kZXgoaWRCYWcudGFiUGFuZWwgKyBpLCBpc1NlbGVjdGVkKHRhYikpXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIihzd2l0Y2hUYWJCeVNob3dIaWRlIHx8IGlzU2VsZWN0ZWQodGFiKSkgPyB0YWIuY29udGVudFRlbXBsYXRlIDogbnVsbFwiPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L3NlY3Rpb24+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9uZy1jb250YWluZXI+XHJcbiJdfQ==
681
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGl2b3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvcGl2b3QvcGl2b3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvcGl2b3QvcGl2b3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFHSCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULGVBQWUsRUFDZixVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixXQUFXLEVBQ1gsTUFBTSxFQUNOLFFBQVEsRUFDUixLQUFLLEVBQ0wsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBQ1QsUUFBUSxFQUNSLFNBQVMsRUFDVCxZQUFZLEVBQ2YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDhFQUE4RSxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSwwRUFBMEUsQ0FBQztBQUNqRyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDdEUsT0FBTyxFQUFVLG1CQUFtQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDL0QsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDakYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7Ozs7SUMzQnZFLDhCQUFzRDtJQUFBLFlBQWM7SUFBQSxpQkFBSzs7O0lBQW5CLGVBQWM7SUFBZCx1Q0FBYzs7O0lB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aGVja2VkLFxyXG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcclxuICAgIENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgQ29udGVudENoaWxkcmVuLFxyXG4gICAgRWxlbWVudFJlZixcclxuICAgIEV2ZW50RW1pdHRlcixcclxuICAgIGZvcndhcmRSZWYsXHJcbiAgICBIb3N0QmluZGluZyxcclxuICAgIEluamVjdCxcclxuICAgIEluamVjdG9yLFxyXG4gICAgSW5wdXQsXHJcbiAgICBPcHRpb25hbCxcclxuICAgIE91dHB1dCxcclxuICAgIFF1ZXJ5TGlzdCxcclxuICAgIFNraXBTZWxmLFxyXG4gICAgVmlld0NoaWxkLFxyXG4gICAgVmlld0NoaWxkcmVuXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERlYm91bmNlIH0gZnJvbSAnQG1pY3Jvc29mdC93aW5kb3dzLWFkbWluLWNlbnRlci1zZGsvY29yZS9iYXNlL2RlY29yYXRvcnMvZGVib3VuY2UuZGVjb3JhdG9ycyc7XHJcbmltcG9ydCB7IFlpZWxkIH0gZnJvbSAnQG1pY3Jvc29mdC93aW5kb3dzLWFkbWluLWNlbnRlci1zZGsvY29yZS9iYXNlL2RlY29yYXRvcnMveWllbGQuZGVjb3JhdG9yJztcclxuaW1wb3J0IHsgQ29yZUJhc2VDb21wb25lbnQgfSBmcm9tICcuLi9jb21tb24vYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTbWVJbmplY3QgfSBmcm9tICcuLi9jb21tb24vZGVjb3JhdG9ycy9pbmplY3Rpb24uZGVjb3JhdG9ycyc7XHJcbmltcG9ydCB7IExheW91dCwgU01FX0xBWU9VVF9QUk9WSURFUiB9IGZyb20gJy4uL2NvbW1vbi9sYXlvdXQnO1xyXG5pbXBvcnQgeyBQaXZvdFJlc3BvbnNpdmVXaW5kb3dNYW5hZ2VyIH0gZnJvbSAnLi9waXZvdC1yZXNwb25zaXZlLXdpbmRvdy1tYW5hZ2VyJztcclxuaW1wb3J0IHsgUGl2b3RUYWJUeXBlIH0gZnJvbSAnLi9waXZvdC10YWItdHlwZSc7XHJcbmltcG9ydCB7IFBpdm90VGFiQ29tcG9uZW50IH0gZnJvbSAnLi9waXZvdC10YWIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU01FX1BJVk9UX1RBQl9DT05UQUlORVJfUFJPVklERVIgfSBmcm9tICcuL3Bpdm90LXRhYi5jb250YWluZXInO1xyXG4vKipcclxuICogQHNtZURvYyB7QGxhYmVsIFBpdm90IEBpZCBzbWUtcGl2b3QtY29tcG9uZW50fVxyXG4gKlxyXG4gKiBAb3ZlcnZpZXdcclxuICogQGZpbGUge0BmaWxlcGF0aCAuL2V4YW1wbGVzL292ZXJ2aWV3Lm1kfVxyXG4gKlxyXG4gKiBAZXhhbXBsZSB7QGxhYmVsIFN0YXRpYyBUYWIgQGlkIHN0YXRpYy10YWJ9XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50Lmh0bWwgQGZpbGVwYXRoIC4vZXhhbXBsZXMvc3RhdGljLXRhYi5jb21wb25lbnQuaHRtbH1cclxuICpcclxuICogQGV4YW1wbGUge0BsYWJlbCBSb3V0ZWQgVGFiIEBpZCByb3V0ZWQtdGFifVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIGNvbXBvbmVudC5odG1sIEBmaWxlcGF0aCAuL2V4YW1wbGVzL3JvdXRlZC10YWIuY29tcG9uZW50Lmh0bWx9XHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnc21lLXBpdm90JyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9waXZvdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICB7IHByb3ZpZGU6IFNNRV9MQVlPVVRfUFJPVklERVIsIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFBpdm90Q29tcG9uZW50KSB9LFxyXG4gICAgICAgIHsgcHJvdmlkZTogU01FX1BJVk9UX1RBQl9DT05UQUlORVJfUFJPVklERVIsIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFBpdm90Q29tcG9uZW50KSB9XHJcbiAgICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQaXZvdENvbXBvbmVudCBleHRlbmRzIENvcmVCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50Q2hlY2tlZCwgQWZ0ZXJDb250ZW50SW5pdCwgTGF5b3V0IHtcclxuICAgIHB1YmxpYyB2aXNpYmxlVGFiczogUGl2b3RUYWJDb21wb25lbnRbXTsgLy8gUmVndWxhdGVzIHRoZSB0YWJzIHRoYXQgZ2V0IGRpc3BsYXllZC5cclxuICAgIHB1YmxpYyB0cmF5VGFicyA9IFtdOyAvLyBSZWd1bGF0ZXMgdGhlIHRhYnMgdGhhdCBhcmUgYWRkZWQgdG8gdGhlIGRyb3Bkb3duIGlmIG5lY2Vzc2FyeS5cclxuICAgIHB1YmxpYyBtb3JlVGFic0Rpc3BsYXkgPSAnTW9yZSc7IC8vIExhYmVsIGZvciB0aGUgZHJvcGRvd24gbWVudSB0YWJzXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgc291cmNlIG5hbWUgdG8gdXNlIGZvciBsb2dnaW5nXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBnZXQgbG9nU291cmNlTmFtZSgpIHtcclxuICAgICAgICByZXR1cm4gJ1Bpdm90Q29tcG9uZW50JztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBzZWxlY3RlZCB0YWJcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBzZWxlY3Rpb246IFBpdm90VGFiQ29tcG9uZW50O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSXQgaW5kaWNhdGVzIHdoZXRoZXIgdG8gc2hvdy9oaWRlIG9yIGxvYWQvdW5sb2FkIHRoZSB0YWJzIHRvIGRvIHRhYiBzd2l0Y2hpbmdcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBzd2l0Y2hUYWJCeVNob3dIaWRlOiBib29sZWFuO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGV4dCBmb3IgYSBoZWFkZXIgdG8gc2hvdyB3aXRoIHRoZSBwaXZvdCB0YWJzLiBEaXNwbGF5ZWQgYXMgaDQgd2l0aCB0YWJzIG9uIHRoZSByaWdodC5cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBoZWFkZXJUZXh0OiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVwcmVjYXRlZCBzaW5jZSAwOC8zMC8xOS4gUGxlYXNlIHVzZSBhbGlnblRhYnMgaW5zdGVhZFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNldCBhbGlnbkhlYWRlcih2YWx1ZTogJ3JpZ2h0JyB8ICdsZWZ0Jykge1xyXG4gICAgICAgIHRoaXMuYWxpZ25UYWJzID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBXaGVyZSB0byBhbGlnbiB0YWJzLCBsZWZ0IG9yIHJpZ2h0XHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgYWxpZ25UYWJzOiAncmlnaHQnIHwgJ2xlZnQnO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIHNlbGVjdGVkIHRhYiBjaGFuZ2VkIGV2ZW50XHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIHNlbGVjdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8UGl2b3RUYWJDb21wb25lbnQ+KCk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgc2VsZWN0ZWQgdGFiIGNoYW5nZWQgZXZlbnQgdHJpZ2dlcmVkIGJ5IGNsaWNrIG9yIGtleWJvYXJkIG5hdmlnYXRpb24uXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIHNlbGVjdGlvbkNoYW5nZUJ5Q2xpY2s6IEV2ZW50RW1pdHRlcjxQaXZvdFRhYkNvbXBvbmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPFBpdm90VGFiQ29tcG9uZW50PigpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW1wbGVtZW50YXRpb24gb2YgdGhlIExheW91dCBpbnRlcmZhY2VcclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgbGF5b3V0Q2hhbmdlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW1wbGVtZW50YXRpb24gb2YgdGhlIExheW91dCBpbnRlcmZhY2VcclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgd2luZG93QnJlYWtwb2ludENoYW5nZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBUYWJzIG9mIHRoZSBQaXZvdFxyXG4gICAgICovXHJcbiAgICBAQ29udGVudENoaWxkcmVuKFBpdm90VGFiQ29tcG9uZW50KVxyXG4gICAgcHVibGljIHRhYnM6IFF1ZXJ5TGlzdDxQaXZvdFRhYkNvbXBvbmVudD47XHJcblxyXG4gICAgQENvbnRlbnRDaGlsZHJlbihQaXZvdFRhYkNvbXBvbmVudClcclxuICAgIHB1YmxpYyB2aXNpYmxlVGFic1FMOiBRdWVyeUxpc3Q8UGl2b3RUYWJDb21wb25lbnQ+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQmluZGFibGUgcHJvcGVydHkgZm9yIHRhYiB0eXBlc1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcGl2b3RUYWJUeXBlID0gUGl2b3RUYWJUeXBlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIHJlbmRlciB3aXRoIGxlZnQgcGFkZGluZ1xyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIG5vTGVmdFBhZGRpbmcgPSBmYWxzZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEluZGljYXRlcyBpZiB0aGlzIHBpdm90IGlzIGRpc2FibGVkXHJcbiAgICAgKi9cclxuICAgIEBIb3N0QmluZGluZygnY2xhc3Muc21lLWRpc2FibGVkJylcclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgZGlzYWJsZWQ6IGJvb2xlYW47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmRpY2F0ZXMgdGhhdCByb3V0ZWQgdGFicyBoYXZlIGJlZW4gcHJvdmlkZWRcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldCBoYXNSb3V0ZWRUYWJzKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnRhYnMgJiYgdGhpcy50YWJzLnNvbWUodCA9PiB0LnR5cGUgPT09IFBpdm90VGFiVHlwZS5Sb3V0ZWQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5kaWNhdGVzIHRoYXQgc3RhdGljIHRhYnMgaGF2ZSBiZWVuIHByb3ZpZGVkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgaGFzU3RhdGljVGFicygpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy50YWJzICYmIHRoaXMudGFicy5zb21lKHQgPT4gdC50eXBlID09PSBQaXZvdFRhYlR5cGUuU3RhdGljKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IHZpc2lUYWJzKCk6IFBpdm90VGFiQ29tcG9uZW50W10ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnRhYnMuZmlsdGVyKHRhYiA9PiB0YWIuaXNWaXNpYmxlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEluZGljYXRlcyB0aGF0IHN0YXRpYyB0YWJzIGhhdmUgYmVlbiBwcm92aWRlZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0IHNlbGVjdGlvbklzUm91dGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGlvbiAmJiB0aGlzLnNlbGVjdGlvbi50eXBlID09PSBQaXZvdFRhYlR5cGUuUm91dGVkO1xyXG4gICAgfVxyXG5cclxuICAgIEBTbWVJbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpXHJcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoaXMgZHJvcGRvd24gZWxlbWVudCB0aGF0IGNvbnRhaW5zIHBpdm90VGFicyBvbmx5IGlmIHRoZSBzY3JlZW4gc2l6ZSBkb2Vzbid0IGFsbG93LlxyXG4gICAgICovXHJcbiAgICBAVmlld0NoaWxkKCdkcm9wRG93bkJ1dHRvbicpIHByaXZhdGUgZHJvcERvd25CdXR0b25FbGVtZW50OiBFbGVtZW50UmVmO1xyXG5cclxuICAgIEBWaWV3Q2hpbGRyZW4oJ3Bpdm90Q29udGVudHMnKVxyXG4gICAgcHVibGljIHBpdm90Q29udGVudHM6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPjtcclxuXHJcbiAgICBwcml2YXRlIHBpdm90UmVzcG9uc2l2ZVdpbmRvd01hbmFnZXI6IFBpdm90UmVzcG9uc2l2ZVdpbmRvd01hbmFnZXI7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgQHNlZSBQaXZvdENvbXBvbmVudCBjbGFzcy5cclxuICAgICAqIEBwYXJhbSBpbmplY3RvciBUaGUgYW5ndWxhciBpbmplY3Rpb24gc2VydmljZS4gcmVxdWlyZWQgYnkgQFNtZUluamVjdGFibGUoKSBkZWNvcmF0b3IgaW4gdGhlIGJhc2UgQHNlZSBCYXNlQ29tcG9uZW50IGNsYXNzXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIGluamVjdG9yOiBJbmplY3RvcixcclxuICAgICAgICBAU2tpcFNlbGYoKSBAT3B0aW9uYWwoKSBASW5qZWN0KFNNRV9MQVlPVVRfUFJPVklERVIpIGxheW91dDogTGF5b3V0KSB7XHJcbiAgICAgICAgc3VwZXIoaW5qZWN0b3IpO1xyXG5cclxuICAgICAgICBpZiAobGF5b3V0KSB7XHJcbiAgICAgICAgICAgIHRoaXMucGl2b3RSZXNwb25zaXZlV2luZG93TWFuYWdlciA9IG5ldyBQaXZvdFJlc3BvbnNpdmVXaW5kb3dNYW5hZ2VyKGxheW91dCk7XHJcbiAgICAgICAgICAgIC8vIG9uIHBhcmVudCBsYXlvdXQgY2hhbmdlcywgcmUtZW1pdCB0aGUgbGF5b3V0IGNoYW5nZSB0byBvdXIgZXZlbnRcclxuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2gobGF5b3V0LmxheW91dENoYW5nZWQuc3Vic2NyaWJlKCgoKSA9PiB0aGlzLm9uTGF5b3V0Q2hhbmdlZCgpKSkpO1xyXG4gICAgICAgICAgICAvLyBvbiB3aW5kb3cgYnJlYWsgcG9pbnQgY2hhbmdlcywgZW1pdCB0aGUgZXZlbnQgYWJvdXQgY3JpdGljYWwgY2xhc3NlcyBhbmQgc3R5bGluZyB1cGRhdGVzIHNpZ25hbC5cclxuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2gobGF5b3V0LndpbmRvd0JyZWFrcG9pbnRDaGFuZ2VkLnN1YnNjcmliZSgoKSA9PiB0aGlzLm9uV2luZG93QnJlYWtwb2ludENoYW5nZWQoKSkpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5kZWZlcnJlZE9uTGF5b3V0Q2hhbmdlZCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgbmdBZnRlckNvbnRlbnRJbml0KCkge1xyXG4gICAgICAgIGlmICh0aGlzLnRhYnMgJiYgdGhpcy50YWJzLmZpcnN0ICYmICF0aGlzLnNlbGVjdGlvbikge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbiA9IHRoaXMudGFicy5maXJzdDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMudGFicy5sZW5ndGggPCAxKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcclxuICAgICAgICAgICAgICAgICdQaXZvdCBtdXN0IGNvbnRhaW4gY2hpbGQgdGFicy4gRXhwZWN0ZWQgYXQgbGVhc3Qgb25lICgxKSB0YWInXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMudmlzaWJsZVRhYnMgPSB0aGlzLnRhYnMudG9BcnJheSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBuZ0FmdGVyQ29udGVudENoZWNrZWQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmRpY2F0ZXMgb2YgYSBnaXZlbiB0YWIgaXMgc2VsZWN0ZWRcclxuICAgICAqIEBwYXJhbSB0YWIgVGhlIHRhYiB0byBjb21wYXJlIHdpdGhcclxuICAgICAqL1xyXG4gICAgcHVibGljIGlzU2VsZWN0ZWQodGFiOiBQaXZvdFRhYkNvbXBvbmVudCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGlvbiAmJiB0aGlzLnNlbGVjdGlvbiA9PT0gdGFiO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRm9yY2UgcmVmcmVzaCBmb3IgdGhlIHBpdm90IHRhYnMuXHJcbiAgICAgKi9cclxuICAgIEBEZWJvdW5jZSgpXHJcbiAgICBwdWJsaWMgcmVmcmVzaChzaG91bGRFbWl0ID0gZmFsc2UsIGJ5V2luZG93U2l6ZSA9IGZhbHNlKSB7XHJcbiAgICAgICAgdGhpcy51cGRhdGVQaXZvdFRhYnMoc2hvdWxkRW1pdCwgYnlXaW5kb3dTaXplKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNlbGVjdHMgYSB0YWIgYnkgY2xpY2tpbmcgb3Iga2V5Ym9hcmQgbmF2aWdhdGlvbi5cclxuICAgICAqIEBwYXJhbSB0YWIgVGhlIHRhYiB0byBzZWxlY3QgYnkgY2xpY2tpbmcgb3Iga2V5Ym9hcmQgbmF2aWdhdGlvbi5cclxuICAgICAqL1xyXG4gICAgcHVibGljIG9uQ2xpY2sodGFiOiBQaXZvdFRhYkNvbXBvbmVudCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0KHRhYik7XHJcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2VCeUNsaWNrLmVtaXQodGFiKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNlbGVjdHMgYSB0YWJcclxuICAgICAqIEBwYXJhbSB0YWIgVGhlIHRhYiB0byBzZWxlY3RcclxuICAgICAqL1xyXG4gICAgcHVibGljIHNlbGVjdCh0YWI6IFBpdm90VGFiQ29tcG9uZW50KTogdm9pZCB7XHJcbiAgICAgICAgLy8gQXQgYW55IGdpdmVuIHRpbWUgd2Ugc2hvdWxkIGhhdmUgYW4gYXR0cmlidXRlIHRoYXQgbGV0cyB1cyBrbm93IGlmIGEgdGFiIGlzIHZpc2libGUgb3Igbm90LlxyXG4gICAgICAgIGlmICh0YWIpIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnRyYXlUYWJzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy50cmF5VGFic1tpXSA9PT0gdGFiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudmlzaWJsZVRhYnMgJiYgdGhpcy52aXNpYmxlVGFicy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGhpZGRlblRhYiA9IHRoaXMudmlzaWJsZVRhYnMucG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhpZGRlblRhYi5pc1Zpc2libGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50cmF5VGFicy5wdXNoKGhpZGRlblRhYik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmlzaWJsZVRhYnMucHVzaCh0YWIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRhYi5pc1Zpc2libGUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudHJheVRhYnMuc3BsaWNlKGksIDEpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbiA9IHRhYjtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdCh0YWIpO1xyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5lbWl0TGF5b3V0Q2hhbmdlZCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBvbiB3aW5kb3cgYnJlYWtwb2ludCBjaGFuZ2VkIGhhbmRsZXIuXHJcbiAgICAgKiBBZGRpbmcgeWllbGQgZm9yIGNvbXBvbmVudCB0byBnZXQgRWxlbWVudFJlZiBhZnRlciBpbml0aWFsaXphdGlvbi5cclxuICAgICAqL1xyXG4gICAgQFlpZWxkKClcclxuICAgIHB1YmxpYyBvbldpbmRvd0JyZWFrcG9pbnRDaGFuZ2VkKCkge1xyXG4gICAgICAgIGlmICghdGhpcy50YWJzIHx8ICF0aGlzLnRhYnMudG9BcnJheSgpKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMucGl2b3RSZXNwb25zaXZlV2luZG93TWFuYWdlci5vbldpbmRvd1NpemVDaGFuZ2VkKHRoaXMucGl2b3RDb250ZW50cyxcclxuICAgICAgICAgICAgdGhpcy5pZEJhZy50YWJQYW5lbCArIHRoaXMudGFicy50b0FycmF5KCkuaW5kZXhPZih0aGlzLnNlbGVjdGlvbikpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRW1pdHMgdGhlIGxheW91dCBjaGFuZ2VkIGV2ZW50IHRvIG5vdGlmeSBjaGlsZHJlbiBhYm91dCBsYXlvdXQgY2hhbmdlZC5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBlbWl0TGF5b3V0Q2hhbmdlZCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmxheW91dENoYW5nZWQuZW1pdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogT24gbGF5b3V0IGNoYW5nZWQgZXZlbnQgaGFuZGxlciwgb2NjdXJzIGV2ZXJ5IHRpbWUgdGhlIGxheW91dCBoYXMgYmVlbiBjaGFuZ2VkLlxyXG4gICAgICovXHJcbiAgICBAWWllbGQoKVxyXG4gICAgcHJpdmF0ZSBvbkxheW91dENoYW5nZWQoKSB7XHJcbiAgICAgICAgdGhpcy51cGRhdGVQaXZvdFRhYnMoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBkZWZlcnJlZCBsYXlvdXQgY2hhbmdlZCBoYW5kbGVyLlxyXG4gICAgICovXHJcbiAgICBARGVib3VuY2UoKVxyXG4gICAgcHJpdmF0ZSBkZWZlcnJlZE9uTGF5b3V0Q2hhbmdlZCgpIHtcclxuICAgICAgICB0aGlzLm9uTGF5b3V0Q2hhbmdlZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRUYWJQYW5lbEluZGV4KGlkOiBzdHJpbmcsIGN1cnJlbnRUYWI6IGJvb2xlYW4pOiBudW1iZXIgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGNvbnN0IHRhYlBhbmVsU2VjdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTtcclxuXHJcbiAgICAgICAgaWYgKGN1cnJlbnRUYWIgJiYgdGFiUGFuZWxTZWN0aW9uKSB7XHJcbiAgICAgICAgICAgIC8vIG5vIHNjcm9sbCBiYXIgaXMgdmlzaWJsZSB3aGVuIHNjcm9sbEhlaWdodCBpcyBlcXVhbCB0byBjbGllbnRIZWlnaHRcclxuICAgICAgICAgICAgLy8gdXNlIHRoaXMgdG8gc2V0IHRhYmluZGV4IG9ubHkgZm9yIHNjcm9sbGFibGUgY29udGVudFxyXG4gICAgICAgICAgICBjb25zdCBoYXNTY3JvbGxCYXIgPSB0YWJQYW5lbFNlY3Rpb24uc2Nyb2xsSGVpZ2h0ICE9PSB0YWJQYW5lbFNlY3Rpb24uY2xpZW50SGVpZ2h0O1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuIGhhc1Njcm9sbEJhciA/IDAgOiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSXQgZ2V0cyB0aGUgbGFiZWwgZnJvbSB0aGUgcGl2b3QgdGFiIGNvbXBvbmVudC5cclxuICAgICAqIEByZXR1cm5zIGFycmF5IG9mIGxhYmVscyByZXByZXNlbnRpbmcgdGhlIHBpdm90IHRhYnMuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXRMYWJlbHMoKTogc3RyaW5nW10ge1xyXG4gICAgICAgIGlmICghdGhpcy50YWJzIHx8ICF0aGlzLnRhYnMudG9BcnJheSgpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBbXTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLnRhYnMudG9BcnJheSgpLm1hcCgoYSkgPT4gYS5sYWJlbCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJdCBoYW5kbGVzIHRoZSBzZWxlY3Rpb24gb2YgcGl2b3QgdGFiIGJ5IGxhYmVsLlxyXG4gICAgICogQHBhcmFtIGxhYmVsIHRoZSBsYWJlbCBmb3IgcGl2b3QgdGFiIHRvIGJlIHNlbGVjdGVkLlxyXG4gICAgICogQHJldHVybnMgdm9pZC5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHNlbGVjdFRhYkJ5TGFiZWwobGFiZWw6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IHRhYkNvbXBvbmVudCA9IHRoaXMuZ2V0UGl2b3RUYWJDb21wb25lbnRCeUxhYmVsKGxhYmVsKTtcclxuICAgICAgICBpZiAoIXRhYkNvbXBvbmVudCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnNlbGVjdCh0YWJDb21wb25lbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlcyB0aGUgaWRCYWcgdXNlZCBieSB0aGlzIGNvbXBvbmVudCB0byBzdG9yZSB1bmlxdWUgZWxlbWVudCBpZHMuXHJcbiAgICAgKiBpZCB2YWx1ZXMgd2lsbCBiZSBhc3NpZ25lZCBieSB0aGUgQHNlZSBCYXNlQ29tcG9uZW50IHN1cGVyIGNsYXNzLlxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgY3JlYXRlSWRCYWcoKTogTXNmdFNtZS5TdHJpbmdNYXA8c3RyaW5nPiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgdGFiUGFuZWw6ICcnXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgdGhlIGluaXRpYWwgaG9zdCBjbGFzc2VzIHRvIGJlIGFwcGxpZWQgdG8gdGhpcyBlbGVtZW50XHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBnZXRJbml0aWFsSG9zdENsYXNzZXMoKTogc3RyaW5nW10ge1xyXG4gICAgICAgIHJldHVybiBzdXBlci5nZXRJbml0aWFsSG9zdENsYXNzZXMoKS5jb25jYXQoW1xyXG4gICAgICAgICAgICAnc21lLXBpdm90J1xyXG4gICAgICAgIF0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyB0aGUgcGl2b3QgdGFiIGNvbXBvbmVudCBieSBwaXZvdCB0YWIgbGFiZWwuXHJcbiAgICAgKiBAcGFyYW0gbGFiZWwgdGhlIGxhYmVsIHN0cmluZy5cclxuICAgICAqIEByZXR1cm5zIHRoZSBwaXZvdCB0YWIgY29tcG9uZW50IHdpdGggdGhlIHNwZWNpZmljIGxhYmVsLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGdldFBpdm90VGFiQ29tcG9uZW50QnlMYWJlbChsYWJlbDogc3RyaW5nKTogUGl2b3RUYWJDb21wb25lbnQge1xyXG4gICAgICAgIGlmICghdGhpcy50YWJzIHx8ICF0aGlzLnRhYnMudG9BcnJheSgpIHx8ICF0aGlzLnRhYnMudG9BcnJheSgpLmxlbmd0aCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCB0YWJzID0gdGhpcy50YWJzLnRvQXJyYXkoKTtcclxuXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0YWJzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmICh0YWJzW2ldLmxhYmVsID09PSBsYWJlbCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRhYnNbaV07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNYWluIHJlbmRlcmluZyBmdW5jdGlvbmFsaXR5IGZvciB0aGUgcGl2b3QgdGFiXHJcbiAgICAgKiBAcGFyYW0gc2hvdWxkRW1pdCBJdCBpbmRpY2F0ZXMgd2hldGhlciB0aGUgbGF5b3V0IGNoYW5nZWQgZXZlbnQgc2hvdWxkIGJlIGZpcmVkLlxyXG4gICAgICogQHBhcmFtIGJ5V2luZG93U2l6ZSBJdCBpbmRpY2F0ZXMgd2hldGhlciB0byB1c2UgdGhlIHdpbmRvdyB3aWR0aCB3aGVuIHRoZSBob3N0RWxlbWVudCB3aWR0aCBpcyAwLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHVwZGF0ZVBpdm90VGFicyhzaG91bGRFbWl0ID0gdHJ1ZSwgYnlXaW5kb3dTaXplID0gZmFsc2UpIHtcclxuICAgICAgICBsZXQgY3VycmVudEZpbGwgPSAwO1xyXG4gICAgICAgIHRoaXMudmlzaWJsZVRhYnMgPSBbXTtcclxuICAgICAgICB0aGlzLnRyYXlUYWJzID0gW107XHJcblxyXG4gICAgICAgIGNvbnN0IGhvc3QgPSA8SFRNTEVsZW1lbnQ+dGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50O1xyXG4gICAgICAgIGxldCB0YWJCYXJXaWR0aCA9IGhvc3Qub2Zmc2V0V2lkdGg7XHJcblxyXG4gICAgICAgIGlmICh0YWJCYXJXaWR0aCA9PT0gMCAmJiBieVdpbmRvd1NpemUpIHtcclxuICAgICAgICAgICAgdGFiQmFyV2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCB0b3RhbFRhYldpZHRoID0gMDtcclxuICAgICAgICBjb25zdCB0YWJMaXN0ID0gdGhpcy50YWJzLnRvQXJyYXkoKTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMudGFicy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCB0YWI6IFBpdm90VGFiQ29tcG9uZW50ID0gdGFiTGlzdFtpXTtcclxuICAgICAgICAgICAgY29uc3QgdGFiV2lkdGggPSB0YWIud2lkdGg7XHJcbiAgICAgICAgICAgIHRvdGFsVGFiV2lkdGggKz0gdGFiV2lkdGg7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodG90YWxUYWJXaWR0aCA8PSB0YWJCYXJXaWR0aCkge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMudGFicy5sZW5ndGg7ICsraSkge1xyXG4gICAgICAgICAgICAgICAgdGFiTGlzdFtpXS5pc1Zpc2libGUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy52aXNpYmxlVGFicy5wdXNoKHRhYkxpc3RbaV0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbGV0IGlzTW9yZUJ1dHRvbldpZHRoQWRkZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgY29uc3QgdmlzaWJsZVRhYkJhcldpZHRoID0gdGFiQmFyV2lkdGg7XHJcblxyXG4gICAgICAgICAgICAvLyBHZXQgdGhlIGN1cnJlbnQgc2VsZWN0aW9uIGlmIGFwcGxpY2FibGUuIE9uIHdpbmRvdyByZXNpemUsIHRoZSBzZWxlY3Rpb24gY2Fubm90IGxvc3QgdGFyZ2V0LlxyXG4gICAgICAgICAgICBsZXQgaW5kZXhGb3JTZWxlY3Rpb24gPSAtMTtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnRhYnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHRhYiA9IHRhYkxpc3RbaV07XHJcbiAgICAgICAgICAgICAgICBpZiAodGFiID09PSB0aGlzLnNlbGVjdGlvbikge1xyXG4gICAgICAgICAgICAgICAgICAgIGluZGV4Rm9yU2VsZWN0aW9uID0gaTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy8gRm9yY2UgZml0IGluIHRoZSBzZWxlY3Rpb25cclxuICAgICAgICAgICAgaWYgKGluZGV4Rm9yU2VsZWN0aW9uID49IDApIHtcclxuICAgICAgICAgICAgICAgIHRhYkxpc3RbaW5kZXhGb3JTZWxlY3Rpb25dLmlzVmlzaWJsZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB0YWJXaWR0aCA9IHRhYkxpc3RbaW5kZXhGb3JTZWxlY3Rpb25dLndpZHRoO1xyXG4gICAgICAgICAgICAgICAgY3VycmVudEZpbGwgKz0gdGFiV2lkdGg7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGxldCBwcmV2V2lkdGggPSAwO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMudGFicy5sZW5ndGg7ICsraSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgdGFiID0gdGFiTGlzdFtpXTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXhGb3JTZWxlY3Rpb24gPT09IGkpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnZpc2libGVUYWJzLnB1c2godGFiKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFiV2lkdGggPSB0YWIud2lkdGg7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJldldpZHRoID0gdGFiV2lkdGg7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRGaWxsICsgdGFiV2lkdGggPiB2aXNpYmxlVGFiQmFyV2lkdGgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGFiLmlzVmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRyYXlUYWJzLnB1c2godGFiKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNNb3JlQnV0dG9uV2lkdGhBZGRlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNNb3JlQnV0dG9uV2lkdGhBZGRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBQb3AgdGhlIHByZXYgdmlzaWJsZSB0YWIgZHVlIHRvIG5vdCBjb21wYXRpYmxlIGFmdGVyIGFkZGluZyB0aGUgJ01vcmUnIGRyb3Bkb3duLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR3VhcmFudGVlIHRoYXQgYXQgbGVhc3Qgb25lIHRhYiB3aWxsIGJlIHNob3duIGF0IG1pbmltdW0uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgcHJldiBpdGVtIGlzIHNlbGVjdGVkLCBzaG91bGQgbm90IGJhY2t0cmFja2luZyBwb3AuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb24gJiYgdGhpcy52aXNpYmxlVGFicy5sZW5ndGggPiAxICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24gIT09IHRoaXMudmlzaWJsZVRhYnNbdGhpcy52aXNpYmxlVGFicy5sZW5ndGggLSAxXSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBvcHBlZFRhYiA9IHRoaXMudmlzaWJsZVRhYnMucG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50cmF5VGFicy5wdXNoKHBvcHBlZFRhYik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudEZpbGwgLT0gcHJldldpZHRoO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIGFjdHVhbCB3aWR0aCBmb3IgdGhlIGRyb3Bkb3duXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50RmlsbCArPSB0aGlzLmRyb3BEb3duQnV0dG9uRWxlbWVudC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGFiLmlzVmlzaWJsZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmlzaWJsZVRhYnMucHVzaCh0YWIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50RmlsbCArPSB0YWJXaWR0aDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChzaG91bGRFbWl0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuZW1pdExheW91dENoYW5nZWQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInNtZS1hcnJhbmdlLXN0YWNrLWhcIj5cclxuICA8aDQgKm5nSWY9XCJoZWFkZXJUZXh0XCIgY2xhc3M9XCJzbWUtcG9zaXRpb24tZmxleC1hdXRvXCI+e3toZWFkZXJUZXh0fX08L2g0PlxyXG5cclxuICA8aGVhZGVyIFtjbGFzcy5zbWUtcGl2b3QtcmV2ZXJzZS1oZWFkZXJdPVwiYWxpZ25UYWJzID09PSAncmlnaHQnXCIgW2NsYXNzLnNtZS1wb3NpdGlvbi1zdHJldGNoLWhdPVwiIWhlYWRlclRleHRcIiBbc3R5bGUucGFkZGluZ0xlZnRdPVwibm9MZWZ0UGFkZGluZyA/IDAgOiBudWxsXCI+XHJcbiAgICA8IS0tIENhbm5vdCB1c2UgXCJzbWUtcGFkZGluZy1sZWZ0LW5vbmVcIiBDU1MgY2xhc3MgaW4gPGhlYWRlcj4gYWJvdmUgc2luY2Ugc21lLXBhZGRpbmctbGVmdC1ub25lIGRvZXNuJ3QgaGF2ZSBlbm91Z2ggc2VsZWN0b3Igd2VpZ2h0IHRvIG92ZXJyaWRlIHNtZS1waXZvdD5bcm9sZT1cInRhYmxpc3RcIl0gc2VsZWN0b3IgLS0+XHJcbiAgICA8ZGl2IHJvbGU9XCJ0YWJsaXN0XCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHRhYiBvZiB2aXNpYmxlVGFiczsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgIDwhLS0gUm91dGVkIFRhYiBpdGVtIC0tPlxyXG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJ0YWIudHlwZSA9PT0gcGl2b3RUYWJUeXBlLlJvdXRlZFwiIHJvbGU9XCJ0YWJcIiBbcm91dGVyTGlua109XCJ0YWIucm91dGVcIlxyXG4gICAgICAgICAgW2F0dHIuYXJpYS1jb250cm9sc109XCJpZEJhZy50YWJQYW5lbFwiIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgdGFiLmRpc2FibGVkXCJcclxuICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCB0YWIuZGlzYWJsZWRcIiBbY2xhc3Muc21lLWRpc2FibGVkXT1cImRpc2FibGVkIHx8IHRhYi5kaXNhYmxlZFwiXHJcbiAgICAgICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cImlzU2VsZWN0ZWQodGFiKVwiIFtyb3V0ZXJMaW5rQWN0aXZlT3B0aW9uc109XCJ0YWIucm91dGVyTGlua0FjdGl2ZU9wdGlvbnNcIlxyXG4gICAgICAgICAgW2NsYXNzLnNtZS1hY3RpdmVdPVwiaXNTZWxlY3RlZCh0YWIpXCIgKHNtZVJvdXRlckxpbmtBY3RpdmF0ZWQpPVwic2VsZWN0KHRhYilcIj5cclxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFiLmljb25DbGFzc1wiIFtjbGFzc109XCJ0YWIuaWNvbkNsYXNzXCI+PC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4+e3t0YWIubGFiZWx9fTwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgPCEtLSBTdGF0aWMgVGFiIEl0ZW0gLS0+XHJcbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInRhYi50eXBlID09PSBwaXZvdFRhYlR5cGUuU3RhdGljXCIgdGFiaW5kZXg9XCIwXCIgcm9sZT1cInRhYlwiXHJcbiAgICAgICAgICBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cImlkQmFnLnRhYlBhbmVsICsgaVwiIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgdGFiLmRpc2FibGVkXCJcclxuICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCB0YWIuZGlzYWJsZWRcIiBbY2xhc3Muc21lLWRpc2FibGVkXT1cImRpc2FibGVkIHx8IHRhYi5kaXNhYmxlZFwiXHJcbiAgICAgICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cImlzU2VsZWN0ZWQodGFiKVwiIFtjbGFzcy5zbWUtYWN0aXZlXT1cImlzU2VsZWN0ZWQodGFiKVwiXHJcbiAgICAgICAgICAoY2xpY2spPVwic2VsZWN0KHRhYilcIj5cclxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFiLmljb25DbGFzc1wiIFtjbGFzc109XCJ0YWIuaWNvbkNsYXNzXCI+PC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4+e3t0YWIubGFiZWx9fTwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxkaXYgcm9sZT1cIm1lbnVcIj5cclxuICAgICAgICA8c21lLWRyb3Bkb3duICNkcm9wRG93biByb2xlPVwicHJlc2VudGF0aW9uXCIgY2xhc3M9XCJzbWUtcG9zaXRpb24tZmxleC1ub25lXCJcclxuICAgICAgICAgIFtjbGFzcy5zbWUtbGF5b3V0LWhpZGRlbl09XCJ0cmF5VGFicy5sZW5ndGggPT09IDBcIiBbY2xhc3Muc21lLWxheW91dC1ub25lXT1cInRyYXlUYWJzLmxlbmd0aCA9PT0gMFwiPlxyXG4gICAgICAgICAgPGJ1dHRvbiAjZHJvcERvd25CdXR0b24gdHlwZT1cImJ1dHRvblwiIFthdHRyLmFyaWEtbGFiZWxdPVwibW9yZVRhYnNEaXNwbGF5XCIgcm9sZT1cIm1lbnVpdGVtXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJzbWUtYnV0dG9uLXRyaWdnZXIgc21lLWxheW91dC1hY3Rpb24tYmFyLWl0ZW0taGVpZ2h0IHNtZS1idXR0b24tYXV0by13aWR0aCBzbWUtZHJvcGRvd24tdG9nZ2xlXCJcclxuICAgICAgICAgICAgW2NsYXNzLnNtZS10b2dnbGVkXT1cImRyb3BEb3duLmlzT3BlblwiIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiZHJvcERvd24uaXNPcGVuXCIgYXJpYS1oYXNwb3B1cD1cInRydWVcIj5cclxuICAgICAgICAgICAgPHNwYW4+e3sgbW9yZVRhYnNEaXNwbGF5IH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNtZS1pY29uIHNtZS1pY29uLXNpemUteHhzIHNtZS1pY29uLWNoZXZyb25Eb3duIHNtZS1tYXJnaW4tbGVmdC14c1wiPjwvc3Bhbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGRpdiByb2xlPVwibWVudVwiIGNsYXNzPVwic21lLWRyb3Bkb3duLWNvbnRlbnQgc21lLWFycmFuZ2Utc3RhY2stdiBzbWUtcG9zaXRpb24tc3RyZXRjaC1oXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzbWUtYXJyYW5nZS1zdGFjay1oXCIgKm5nRm9yPVwibGV0IHRhYiBvZiB0cmF5VGFiczsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJ0YWIudHlwZSA9PT0gcGl2b3RUYWJUeXBlLlJvdXRlZFwiIHJvbGU9XCJtZW51aXRlbVwiIFtyb3V0ZXJMaW5rXT1cInRhYi5yb3V0ZVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNtZS1wb3NpdGlvbi1zdHJldGNoLWhcIiBbY2xhc3Muc21lLWRpc2FibGVkXT1cImRpc2FibGVkIHx8IHRhYi5kaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAoc21lUm91dGVyTGlua0FjdGl2YXRlZCk9XCJzZWxlY3QodGFiKVwiIFtyb3V0ZXJMaW5rQWN0aXZlT3B0aW9uc109XCJ0YWIucm91dGVyTGlua0FjdGl2ZU9wdGlvbnNcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFiLmljb25DbGFzc1wiIFtjbGFzc109XCJ0YWIuaWNvbkNsYXNzXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+e3t0YWIubGFiZWx9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwidGFiLnR5cGUgPT09IHBpdm90VGFiVHlwZS5TdGF0aWNcIiByb2xlPVwibWVudWl0ZW1cIiBjbGFzcz1cInNtZS1wb3NpdGlvbi1zdHJldGNoLWhcIlxyXG4gICAgICAgICAgICAgICAgW2NsYXNzLnNtZS1kaXNhYmxlZF09XCJkaXNhYmxlZCB8fCB0YWIuZGlzYWJsZWRcIiAoY2xpY2spPVwic2VsZWN0KHRhYilcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFiLmljb25DbGFzc1wiIFtjbGFzc109XCJ0YWIuaWNvbkNsYXNzXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+e3t0YWIubGFiZWx9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L3NtZS1kcm9wZG93bj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2hlYWRlcj5cclxuPC9kaXY+XHJcblxyXG48IS0tIFJvdXRlZCBUYWIgQ29udGVudCAtLT5cclxuPHNlY3Rpb24gI3Bpdm90Q29udGVudHMgKm5nSWY9XCJoYXNSb3V0ZWRUYWJzXCIgcm9sZT1cInRhYnBhbmVsXCIgW2lkXT1cImlkQmFnLnRhYlBhbmVsXCIgW2NsYXNzLnNtZS1sYXlvdXQtbm9uZV09XCIhc2VsZWN0aW9uSXNSb3V0ZWRcIlxyXG4gIFthdHRyLmFyaWEtaGlkZGVuXT1cIiFzZWxlY3Rpb25Jc1JvdXRlZFwiPlxyXG4gIDxyb3V0ZXItb3V0bGV0Pjwvcm91dGVyLW91dGxldD5cclxuPC9zZWN0aW9uPlxyXG5cclxuPCEtLSBTdGF0aWMgVGFiIENvbnRlbnQgLS0+XHJcbjxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNTdGF0aWNUYWJzXCI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdGFiIG9mIHZpc2libGVUYWJzOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFiLnR5cGUgPT09IHBpdm90VGFiVHlwZS5TdGF0aWNcIj5cclxuICAgICAgPHNlY3Rpb24gI3Bpdm90Q29udGVudHMgcm9sZT1cInRhYnBhbmVsXCIgW2lkXT1cImlkQmFnLnRhYlBhbmVsICsgaVwiIFtjbGFzcy5zbWUtbGF5b3V0LW5vbmVdPVwiIWlzU2VsZWN0ZWQodGFiKVwiXHJcbiAgICAgICAgW2F0dHIuYXJpYS1oaWRkZW5dPVwiIWlzU2VsZWN0ZWQodGFiKVwiIFthdHRyLnRhYmluZGV4XT1cImdldFRhYlBhbmVsSW5kZXgoaWRCYWcudGFiUGFuZWwgKyBpLCBpc1NlbGVjdGVkKHRhYikpXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIihzd2l0Y2hUYWJCeVNob3dIaWRlIHx8IGlzU2VsZWN0ZWQodGFiKSkgPyB0YWIuY29udGVudFRlbXBsYXRlIDogbnVsbFwiPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L3NlY3Rpb24+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9uZy1jb250YWluZXI+XHJcbiJdfQ==
@@ -242,7 +242,7 @@ function PropertyGridComponent_ng_template_14_Template(rf, ctx) { if (rf & 1) {
242
242
  const item_r44 = ctx.$implicit;
243
243
  i0.ɵɵproperty("ngIf", !!item_r44.iconClass);
244
244
  i0.ɵɵadvance(1);
245
- i0.ɵɵproperty("ngIf", item_r44.status !== null && !item_r44.iconClass);
245
+ i0.ɵɵproperty("ngIf", item_r44.status !== undefined && item_r44.status !== null && !item_r44.iconClass);
246
246
  } }
247
247
  /**
248
248
  *
@@ -475,4 +475,4 @@ export class PropertyGridComponent extends CoreBaseComponent {
475
475
  }], windowBreakpointChanged: [{
476
476
  type: Output
477
477
  }] }); })();
478
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHktZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbmd1bGFyL3NyYy9jb250cm9scy9wcm9wZXJ0eS1ncmlkL3Byb3BlcnR5LWdyaWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvcHJvcGVydHktZ3JpZC9wcm9wZXJ0eS1ncmlkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsZUFBZSxFQUNmLFlBQVksRUFDWixVQUFVLEVBQ1YsTUFBTSxFQUNOLFFBQVEsRUFDUixLQUFLLEVBRUwsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBRVQsUUFBUSxFQUNSLFdBQVcsRUFDWCxTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDN0QsT0FBTyxFQUFVLG1CQUFtQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0UsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sMkNBQTJDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7SUNsQjlGLDRDQUEwSTs7O0lBQWxFLGtEQUEyQixjQUFBOzs7SUFDbkcsNENBQTRHOztJQUF0QywyQkFBYTs7O0lBTTdFLDJCQUN3RTs7OztJQUF0RSx3Q0FBc0IscUJBQUE7OztJQUkxQix3QkFBc0c7Ozs7SUFWMUcsMkNBQ3FGO0lBQ25GLG1DQUE2SDtJQUMzSCxpQ0FBbUM7SUFDakMsNEJBQU07SUFBQSxZQUFnQjtJQUFBLGlCQUFPO0lBQzdCLDJGQUN3RTtJQUV4RSxnQ0FBZ0M7SUFBQSxZQUFrQjtJQUFBLGlCQUFPO0lBQzNELGlCQUFRO0lBQ1IsMkdBQXNHO0lBQ3hH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O29CQUNQLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUMsR0FBRyxFQUFFLHNCQUFzQixFQUFDLEVBQUU7aUJBQ3pGO2FBQ0o7O3NCQWlEb0MsUUFBUTs7c0JBQUksUUFBUTs7c0JBQUksTUFBTTt1QkFBQyxtQkFBbUI7d0JBekM1RSxLQUFLO2tCQURYLGVBQWU7bUJBQUMseUJBQXlCO1lBSW5DLGdCQUFnQjtrQkFEdEIsU0FBUzttQkFBQyxrQkFBa0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7WUFJeEMsa0JBQWtCO2tCQUR4QixTQUFTO21CQUFDLG9CQUFvQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtZQUkxQyxvQkFBb0I7a0JBRDFCLFNBQVM7bUJBQUMsc0JBQXNCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO1lBSTVDLG9CQUFvQjtrQkFEMUIsU0FBUzttQkFBQyxzQkFBc0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7WUFjNUMsV0FBVztrQkFEakIsS0FBSztZQU9DLGFBQWE7a0JBRG5CLE1BQU07WUFPQSx1QkFBdUI7a0JBRDdCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgQ29udGVudENoaWxkcmVuLFxyXG4gICAgRXZlbnRFbWl0dGVyLFxyXG4gICAgZm9yd2FyZFJlZixcclxuICAgIEluamVjdCxcclxuICAgIEluamVjdG9yLFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkNoYW5nZXMsXHJcbiAgICBPcHRpb25hbCxcclxuICAgIE91dHB1dCxcclxuICAgIFF1ZXJ5TGlzdCxcclxuICAgIFNpbXBsZUNoYW5nZXMsXHJcbiAgICBTa2lwU2VsZixcclxuICAgIFRlbXBsYXRlUmVmLFxyXG4gICAgVmlld0NoaWxkXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvcmVCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tbW9uL2Jhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTGF5b3V0LCBTTUVfTEFZT1VUX1BST1ZJREVSIH0gZnJvbSAnLi4vY29tbW9uL2xheW91dCc7XHJcbmltcG9ydCB7IFByb3BlcnR5R3JpZEl0ZW1Db21wb25lbnQgfSBmcm9tICcuL3Byb3BlcnR5LWdyaWQtaXRlbS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBQcm9wZXJ0eUdyaWRSZXNwb25zaXZlV2luZG93TWFuYWdlciB9IGZyb20gJy4vcHJvcGVydHktZ3JpZC1yZXNwb25zaXZlLXdpbmRvdy1tYW5hZ2VyJztcclxuXHJcbi8qKlxyXG4gKiBUaGUgcGFuZSBvcmllbnRhdGlvbiBvZiB0aGUgc3BsaXQgdmlldy5cclxuICovXHJcbmV4cG9ydCB0eXBlIFByb3BlcnR5R3JpZE9yaWVudGF0aW9uID0gJ3ZlcnRpY2FsJyB8ICdob3Jpem9udGFsJztcclxuXHJcbi8qKlxyXG4gKlxyXG4gKiBAc21lRG9jIHtAbGFiZWwgUHJvcGVydHkgR3JpZCBAaWQgc21lLXByb3BlcnR5LWdyaWQtY29tcG9uZW50fVxyXG4gKlxyXG4gKiBAb3ZlcnZpZXdcclxuICogQGZpbGUge0BmaWxlcGF0aCAuL2V4YW1wbGVzL292ZXJ2aWV3Lm1kfVxyXG4gKlxyXG4gKiBAZXhhbXBsZSB7QGxhYmVsIEJhc2ljIFVzYWdlIEBpZCBiYXNpYy11c2FnZX1cclxuICogQGZpbGUge0BmaWxlbmFtZSBjb21wb25lbnQuaHRtbCBAZmlsZXBhdGggLi9leGFtcGxlcy9iYXNpYy11c2FnZS5jb21wb25lbnQuaHRtbH1cclxuICpcclxuICogQGV4YW1wbGUge0BsYWJlbCBWZXJ0aWNhbCBPcmllbnRhdGlvbiBAaWQgdmVydGljYWwtb3JpZW50YXRpb259XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50Lmh0bWwgQGZpbGVwYXRoIC4vZXhhbXBsZXMvdmVydGljYWwtb3JpZW50YXRpb24uY29tcG9uZW50Lmh0bWx9XHJcbiAqXHJcbiAqIEBleGFtcGxlIHtAbGFiZWwgSXRlbSB3aXRoIGEgTGluayBAaWQgbGluay1pdGVtfVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIGNvbXBvbmVudC5odG1sIEBmaWxlcGF0aCAuL2V4YW1wbGVzL2xpbmstaXRlbS5jb21wb25lbnQuaHRtbH1cclxuICpcclxuICogQGV4YW1wbGUge0BsYWJlbCBJdGVtIHdpdGggYSBUb29sdGlwIEBpZCB0b29sdGlwLWl0ZW19XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50Lmh0bWwgQGZpbGVwYXRoIC4vZXhhbXBsZXMvdG9vbHRpcC1pdGVtLmNvbXBvbmVudC5odG1sfVxyXG4gKlxyXG4gKiBAZXhhbXBsZSB7QGxhYmVsIEl0ZW0gd2l0aCBhIEFjdGlvbiBAaWQgYWN0aW9uLWl0ZW19XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50LnRzIEBmaWxlcGF0aCAuL2V4YW1wbGVzL2FjdGlvbi1pdGVtLmNvbXBvbmVudC50c31cclxuICogQGZpbGUge0BmaWxlbmFtZSBjb21wb25lbnQuaHRtbCBAZmlsZXBhdGggLi9leGFtcGxlcy9hY3Rpb24taXRlbS5jb21wb25lbnQuaHRtbH1cclxuICpcclxuICogQGV4YW1wbGUge0BsYWJlbCBJdGVtIFNwYW5uaW5nIE11bHRpcGxlIENvbHVtbnMgQGlkIG11bHRpLWNvbHVtbn1cclxuICogQGZpbGUge0BmaWxlbmFtZSBjb21wb25lbnQuaHRtbCBAZmlsZXBhdGggLi9leGFtcGxlcy9tdWx0aS1jb2x1bW4taXRlbS5jb21wb25lbnQuaHRtbH1cclxuICpcclxuICogQGV4YW1wbGUge0BsYWJlbCBJdGVtcyB3aXRoIFN0YXR1cyBhbmQgSWNvbnMgQGlkIHN0YXR1cy1hbmQtaWNvbnN9XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50Lmh0bWwgQGZpbGVwYXRoIC4vZXhhbXBsZXMvc3RhdHVzLWl0ZW0uY29tcG9uZW50Lmh0bWx9XHJcbiAqXHJcbiAqIEBleGFtcGxlIHtAbGFiZWwgSXRlbXMgd2l0aCBjb21wbGV4IHZhbHVlIHR5cGVzIEBpZCBjb21wbGV4LXZhbHVlfVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIGNvbXBvbmVudC5odG1sIEBmaWxlcGF0aCAuL2V4YW1wbGVzL2NvbXBsZXgtdmFsdWVzLmNvbXBvbmVudC5odG1sfVxyXG4gKlxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3NtZS1wcm9wZXJ0eS1ncmlkJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9wcm9wZXJ0eS1ncmlkLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIHsgcHJvdmlkZTogU01FX0xBWU9VVF9QUk9WSURFUiwgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUHJvcGVydHlHcmlkQ29tcG9uZW50KSB9XHJcbiAgICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQcm9wZXJ0eUdyaWRDb21wb25lbnQgZXh0ZW5kcyBDb3JlQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIExheW91dCwgT25DaGFuZ2VzIHtcclxuICAgIC8qKlxyXG4gICAgICogVGhlIGJhc2ljIGNvbHVtbiB3aWR0aCBmb3IgdGhlIHByb3BlcnR5IGdyaWQgaXRlbXMuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBsYXlvdXRJdGVtV2lkdGggPSAzMDA7XHJcblxyXG4gICAgQENvbnRlbnRDaGlsZHJlbihQcm9wZXJ0eUdyaWRJdGVtQ29tcG9uZW50KVxyXG4gICAgcHVibGljIGl0ZW1zOiBRdWVyeUxpc3Q8UHJvcGVydHlHcmlkSXRlbUNvbXBvbmVudD47XHJcblxyXG4gICAgQFZpZXdDaGlsZCgncmVhZG9ubHlUZW1wbGF0ZScsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgICBwdWJsaWMgcmVhZG9ubHlUZW1wbGF0ZTogVGVtcGxhdGVSZWY8UHJvcGVydHlHcmlkSXRlbUNvbXBvbmVudD47XHJcblxyXG4gICAgQFZpZXdDaGlsZCgnYWN0aW9uTGlua1RlbXBsYXRlJywgeyBzdGF0aWM6IHRydWUgfSlcclxuICAgIHB1YmxpYyBhY3Rpb25MaW5rVGVtcGxhdGU6IFRlbXBsYXRlUmVmPFByb3BlcnR5R3JpZEl0ZW1Db21wb25lbnQ+O1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ2ludGVybmFsTGlua1RlbXBsYXRlJywgeyBzdGF0aWM6IHRydWUgfSlcclxuICAgIHB1YmxpYyBpbnRlcm5hbExpbmtUZW1wbGF0ZTogVGVtcGxhdGVSZWY8UHJvcGVydHlHcmlkSXRlbUNvbXBvbmVudD47XHJcblxyXG4gICAgQFZpZXdDaGlsZCgnZXh0ZXJuYWxMaW5rVGVtcGxhdGUnLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gICAgcHVibGljIGV4dGVybmFsTGlua1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxQcm9wZXJ0eUdyaWRJdGVtQ29tcG9uZW50PjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBzb3VyY2UgbmFtZSB0byB1c2UgZm9yIGxvZ2dpbmdcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGdldCBsb2dTb3VyY2VOYW1lKCkge1xyXG4gICAgICAgIHJldHVybiAnUHJvcGVydHlHcmlkQ29tcG9uZW50JztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBvcmllbnRhdGlvbiBmb3IgdGhlIHByb3BlcnR5IGdyaWRcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBvcmllbnRhdGlvbjogUHJvcGVydHlHcmlkT3JpZW50YXRpb24gPSAnaG9yaXpvbnRhbCc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgTGF5b3V0IGludGVyZmFjZVxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyBsYXlvdXRDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgTGF5b3V0IGludGVyZmFjZVxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyB3aW5kb3dCcmVha3BvaW50Q2hhbmdlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICAgIHByaXZhdGUgcHJvcGVydHlHcmlkUmVzcG9uc2l2ZVdpbmRvd01hbmFnZXIgPSBuZXcgUHJvcGVydHlHcmlkUmVzcG9uc2l2ZVdpbmRvd01hbmFnZXIoKTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihpbmplY3RvcjogSW5qZWN0b3IsIEBTa2lwU2VsZigpIEBPcHRpb25hbCgpIEBJbmplY3QoU01FX0xBWU9VVF9QUk9WSURFUikgbGF5b3V0OiBMYXlvdXQpIHtcclxuICAgICAgICBzdXBlcihpbmplY3Rvcik7XHJcbiAgICAgICAgLy8gb2xkIHN0eWxlIHN1cHBvcnRlZCBzbWUtcHJvcGVydHktZ3JpZC1hcnJhbmdlLXZlcnRpY2FsIGNsYXNzLiBkZWZhdWx0IHRvIHZlcnRpY2FsIG9yaWVudGF0aW9uIGlmIHRoaXMgY2xhc3MgaXMgYXBwbGllZC5cclxuICAgICAgICBjb25zdCBoYXNWZXJ0aWNhbENsYXNzID0gKDxIVE1MRWxlbWVudD50aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpLmNsYXNzTGlzdC5jb250YWlucygnc21lLXByb3BlcnR5LWdyaWQtYXJyYW5nZS12ZXJ0aWNhbCcpO1xyXG4gICAgICAgIHRoaXMub3JpZW50YXRpb24gPSBoYXNWZXJ0aWNhbENsYXNzID8gJ3ZlcnRpY2FsJyA6ICdob3Jpem9udGFsJztcclxuXHJcbiAgICAgICAgLy8gb24gcGFyZW50IGxheW91dCBjaGFuZ2VzLCByZS1lbWl0IHRoZSBsYXlvdXQgY2hhbmdlIHRvIG91ciBldmVudFxyXG4gICAgICAgIGlmIChsYXlvdXQpIHtcclxuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgICAgICAgICBsYXlvdXQubGF5b3V0Q2hhbmdlZC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubGF5b3V0Q2hhbmdlZC5lbWl0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcGVydHlHcmlkUmVzcG9uc2l2ZVdpbmRvd01hbmFnZXIub25XaW5kb3dTaXplQ2hhbmdlZCh0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0cmluZ2lmeVZhbHVlKHZhbHVlOiBhbnkpIHtcclxuICAgICAgICBpZiAoTXNmdFNtZS5pc051bGxPcldoaXRlU3BhY2UodmFsdWUpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAnLSc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdmFsdWUubWFwKHYgPT4gdGhpcy5zdHJpbmdpZnlWYWx1ZSh2KSkuam9pbignLFxcbicpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoTXNmdFNtZS5pc09iamVjdCh2YWx1ZSkpIHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh2YWx1ZSwgbnVsbCwgMik7XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGAke3ZhbHVlfWA7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldFRlbXBsYXRlKGl0ZW06IFByb3BlcnR5R3JpZEl0ZW1Db21wb25lbnQpIHtcclxuICAgICAgICBpZiAoaXRlbS5hY3Rpb24pIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWN0aW9uTGlua1RlbXBsYXRlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaXRlbS5saW5rKSB7XHJcbiAgICAgICAgICAgIGlmIChpdGVtLmlzRXh0ZXJuYWxMaW5rKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5leHRlcm5hbExpbmtUZW1wbGF0ZTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmludGVybmFsTGlua1RlbXBsYXRlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLnJlYWRvbmx5VGVtcGxhdGU7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgICAgICBzdXBlci5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcclxuICAgICAgICBpZiAoY2hhbmdlcy5vcmllbnRhdGlvbikge1xyXG4gICAgICAgICAgICB0aGlzLmxheW91dENoYW5nZWQuZW1pdCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEl0IGhhbmRsZXMgdGhlIHVuZGVmaW5lZCB2YWx1ZSB3b24ndCBiZSB1cGRhdGVkIHNpdHVhdGlvbiBmb3IgYXN5bmMgcHJvcGVydHkgaXRlbS5cclxuICAgICAqIEFuZ3VsYXIgaXNzdWUgdGhhdCB0aGUgcHJvcGVydHkgaXRlbSB2YWx1ZSBpbml0aWFsaXplZCB3aXRoIHVuZGVmaW5lZCwgaWYgYWZ0ZXIgYXN5bmMgdGltZSwgdGhlIHZhbHVlIGJlaW5nIHNldCBpcyBzdGlsbCB1bmRlZmluZWQsXHJcbiAgICAgKiBBbmd1bGFyIHdpbGwgbm90IGJlIGFibGUgdG8gdHJpZ2dlciB0aGUgdmFsdWUgb24gY2hhbmdlZCBldmVudC4gVGh1cyB3ZSBoYXZlIHRvIG1hbnVhbGx5IGNhbGwgdG8gcmVmcmVzaCBpdC5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gaW5kZXggVGhlIGluZGV4IHRoYXQgbmVlZHMgdG8gaGFyZCByZWZyZXNoLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaGFyZFJlZnJlc2hJdGVtKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMuaXRlbXMpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgaXRlbXMgPSB0aGlzLml0ZW1zLnRvQXJyYXkoKTtcclxuICAgICAgICBpZiAoIWl0ZW1zW2luZGV4XSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBpdGVtID0gaXRlbXNbaW5kZXhdO1xyXG4gICAgICAgIGlmIChpdGVtLmlzQXN5bmMgJiYgaXRlbS52YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGl0ZW0ubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENyZWF0ZXMgdGhlIGlkQmFnIHVzZWQgYnkgdGhpcyBjb21wb25lbnQgdG8gc3RvcmUgdW5pcXVlIGVsZW1lbnQgaWRzLlxyXG4gICAgICogaWQgdmFsdWVzIHdpbGwgYmUgYXNzaWduZWQgYmUgdGhlIEBzZWUgQmFzZUNvbXBvbmVudCBzdXBlciBjbGFzcy5cclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGNyZWF0ZUlkQmFnKCk6IE1zZnRTbWUuU3RyaW5nTWFwPHN0cmluZz4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGRldGFpbHNTcGFuOiAnJyxcclxuICAgICAgICAgICAgbGFiZWxTcGFuOiAnJyxcclxuICAgICAgICAgICAgdmFsdWVTcGFuOiAnJ1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIHRoZSBpbml0aWFsIGhvc3QgY2xhc3NlcyB0byBiZSBhcHBsaWVkIHRvIHRoaXMgZWxlbWVudFxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgZ2V0SW5pdGlhbEhvc3RDbGFzc2VzKCkge1xyXG4gICAgICAgIHJldHVybiBzdXBlci5nZXRJbml0aWFsSG9zdENsYXNzZXMoKS5jb25jYXQoW1xyXG4gICAgICAgICAgICAnc21lLXByb3BlcnR5LWdyaWQnLFxyXG4gICAgICAgICAgICAnc21lLWxheW91dC1yZWxhdGl2ZScsXHJcbiAgICAgICAgICAgICdzbWUtZm9jdXMtem9uZSdcclxuICAgICAgICBdKTtcclxuICAgIH1cclxufVxyXG4iLCI8c21lLWxheW91dCAjbGF5b3V0IFtwYWRMYXN0SXRlbV09XCJ0cnVlXCIgY2xhc3M9XCJzbWUtcG9zaXRpb24taW5zZXQtbm9uZSBzbWUtcG9zaXRpb24tc3RyZXRjaC1oXCI+XHJcbiAgPHNtZS1sYXlvdXQtZGVmaW5pdGlvbiBuYW1lPVwibmFycm93XCIgW3VudGlsXT1cImxheW91dEl0ZW1XaWR0aFwiIFtjb2x1bW5zXT1cIjFcIj48L3NtZS1sYXlvdXQtZGVmaW5pdGlvbj5cclxuICA8c21lLWxheW91dC1kZWZpbml0aW9uICpuZ0lmPVwib3JpZW50YXRpb24gIT09ICd2ZXJ0aWNhbCdcIiBuYW1lPVwibWVkaXVtXCIgW3VudGlsXT1cImxheW91dEl0ZW1XaWR0aCoyXCIgW2NvbHVtbnNdPVwiMlwiPjwvc21lLWxheW91dC1kZWZpbml0aW9uPlxyXG4gIDxzbWUtbGF5b3V0LWRlZmluaXRpb24gKm5nSWY9XCJvcmllbnRhdGlvbiAhPT0gJ3ZlcnRpY2FsJ1wiIG5hbWU9XCJ3aWRlXCIgW2NvbHVtbnNdPVwiM1wiPjwvc21lLWxheW91dC1kZWZpbml0aW9uPlxyXG4gIDxzbWUtbGF5b3V0LWl0ZW0gKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXM7IGluZGV4IGFzIGlcIiBbY29sdW1uU3Bhbl09XCJpdGVtLmNvbHVtblNwYW5cIlxyXG4gICAgW21heFdpZHRoXT1cIm9yaWVudGF0aW9uID09PSAndmVydGljYWwnID8gbnVsbCA6IGl0ZW0uY29sdW1uU3BhbiAqIGxheW91dEl0ZW1XaWR0aFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInNtZS1wcm9wZXJ0eS1ncmlkLWl0ZW1cIiB0YWJpbmRleD1cIjBcIiBhcmlhLWxpdmU9XCJwb2xpdGVcIiBhcmlhLWF0b21pYz1cInRydWVcIiAjem9uZT1cInNtZVRvb2x0aXBab25lXCIgc21lVG9vbHRpcFpvbmU+XHJcbiAgICAgIDxsYWJlbCBjbGFzcz1cInNtZS1hcnJhbmdlLXN0YWNrLWhcIj5cclxuICAgICAgICA8c3Bhbj57eyBpdGVtLmxhYmVsIH19PC9zcGFuPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwiaXRlbS50b29sdGlwXCIgY2xhc3M9XCJzbWUtcG9zaXRpb24tZmxleC1ub25lIHNtZS1pY29uIHNtZS1pY29uLWluZm8gc21lLWluZm8tYnViYmxlIHNtZS1tYXJnaW4tbGVmdC14c1wiXHJcbiAgICAgICAgICBbdGl0bGVdPVwiaXRlbS50b29sdGlwXCIgW3Rvb2x0aXBab25lXT1cInpvbmVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XHJcbiAgICAgICAgPCEtLSBpbiBzY2FuIG1vZGUgc2NyZWVuIHJlYWRlciBkb2VzIG5vdCBmb2N1cyBvbiB0aGUgaW5mbyBpY29uIHByb3Blcmx5IHRvIHJlYWQgdGhlIHRpdGxlIC0tPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwic21lLXNjcmVlbi1yZWFkZXJcIj57eyBpdGVtLnRvb2x0aXAgfX08L3NwYW4+XHJcbiAgICAgIDwvbGFiZWw+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJnZXRUZW1wbGF0ZShpdGVtKTtjb250ZXh0OnskaW1wbGljaXQ6aXRlbSwgaW5kZXg6IGl9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L3NtZS1sYXlvdXQtaXRlbT5cclxuPC9zbWUtbGF5b3V0PlxyXG5cclxuPCEtLSBSZWFkIG9ubHkgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjcmVhZG9ubHlUZW1wbGF0ZSBsZXQtaXRlbSBsZXQtaT1cImluZGV4XCI+XHJcbiAgPHNtZS1sb2FkaW5nLXdoZWVsICpuZ0lmPVwiaXRlbS5sb2FkaW5nICYmIGl0ZW0uaXNBc3luY1wiIHNpemU9XCJleHRyYS1zbWFsbFwiIFtpbmxpbmVdPVwidHJ1ZVwiIFtpc0JhY2tncm91bmRUcmFuc3BhcmVudF09XCJ0cnVlXCI+PC9zbWUtbG9hZGluZy13aGVlbD5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWl0ZW0ubG9hZGluZyB8fCAhaXRlbS5pc0FzeW5jXCI+XHJcbiAgICA8cCBjbGFzcz1cInNtZS1yZWFkLW9ubHktdGVtcGxhdGVcIiBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiaWRCYWcubGFiZWxTcGFuICsgaVwiIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiaWRCYWcuZGV0YWlsc1NwYW4gKyBpXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpY29uVGVtcGxhdGU7Y29udGV4dDp7JGltcGxpY2l0Oml0ZW0sIGluZGV4OiBpfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8c3BhbiAqbmdJZj1cIiFpdGVtLmxpbmsgJiYgIWl0ZW0uYWN0aW9uXCI+e3sgc3RyaW5naWZ5VmFsdWUoaXRlbS52YWx1ZSkgfX08L3NwYW4+XHJcbiAgICA8L3A+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIEFjdGlvbiBsaW5rIChyb2xlIGJ1dHRvbikgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjYWN0aW9uTGlua1RlbXBsYXRlIGxldC1pdGVtIGxldC1pPVwiaW5kZXhcIj5cclxuICA8cD5cclxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpY29uVGVtcGxhdGU7Y29udGV4dDp7JGltcGxpY2l0Oml0ZW0sIGluZGV4OiBpfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPHNwYW4gKm5nSWY9XCJpdGVtLnByZWZpeFN0cmluZ1wiIGNsYXNzPVwic21lLXBhZGRpbmctcmlnaHQteHNcIj57eyBpdGVtLnByZWZpeFN0cmluZyB9fTwvc3Bhbj5cclxuICAgIDxhIHRhYmluZGV4PVwiMFwiIGNsYXNzPVwic21lLWxpbmsgc21lLWZvY3VzLXpvbmUgc21lLWFjdGlvbi1saW5rLXRlbXBsYXRlXCIgcm9sZT1cImxpbmtcIiAoY2xpY2spPVwiaXRlbS5hY3Rpb24oaXRlbSlcIlxyXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiKGlkQmFnLmxhYmVsU3BhbiArIGkpICsgJyAnICsgKGlkQmFnLnZhbHVlU3BhbiArIGkpXCJcclxuICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJpZEJhZy5kZXRhaWxzU3BhbiArIGlcIj57eyBpdGVtLnZhbHVlIH19PC9hPlxyXG4gIDwvcD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gSW50ZXJuYWwgbGluayAtLT5cclxuPG5nLXRlbXBsYXRlICNpbnRlcm5hbExpbmtUZW1wbGF0ZSBsZXQtaXRlbSBsZXQtaT1cImluZGV4XCI+XHJcbiAgPHA+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaWNvblRlbXBsYXRlO2NvbnRleHQ6eyRpbXBsaWNpdDppdGVtLCBpbmRleDogaX1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDxzcGFuICpuZ0lmPVwiaXRlbS5wcmVmaXhTdHJpbmdcIiBjbGFzcz1cInNtZS1wYWRkaW5nLXJpZ2h0LXhzXCI+e3sgaXRlbS5wcmVmaXhTdHJpbmcgfX08L3NwYW4+XHJcbiAgICA8YSBjbGFzcz1cInNtZS1saW5rIHNtZS1mb2N1cy16b25lXCIgcm9sZT1cImxpbmtcIiBbcm91dGVyTGlua109XCJpdGVtLmxpbmtcIiBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiKGlkQmFnLmxhYmVsU3BhbiArIGkpICsgJyAnICsgKGlkQmFnLnZhbHVlU3BhbiArIGkpXCJcclxuICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJpZEJhZy5kZXRhaWxzU3BhbiArIGlcIj57eyBpdGVtLnZhbHVlIH19PC9hPlxyXG4gIDwvcD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gRXh0ZXJuYWwgbGluayAtLT5cclxuPG5nLXRlbXBsYXRlICNleHRlcm5hbExpbmtUZW1wbGF0ZSBsZXQtaXRlbSBsZXQtaT1cImluZGV4XCI+XHJcbiAgPHA+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaWNvblRlbXBsYXRlO2NvbnRleHQ6eyRpbXBsaWNpdDppdGVtLCBpbmRleDogaX1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDxzcGFuICpuZ0lmPVwiaXRlbS5wcmVmaXhTdHJpbmdcIiBjbGFzcz1cInNtZS1wYWRkaW5nLXJpZ2h0LXhzXCI+e3sgaXRlbS5wcmVmaXhTdHJpbmcgfX08L3NwYW4+XHJcbiAgICA8YSBjbGFzcz1cInNtZS1saW5rIHNtZS1mb2N1cy16b25lXCIgcm9sZT1cImxpbmtcIiBbaHJlZl09XCJpdGVtLmxpbmtcIiB0YXJnZXQ9XCJfYmxhbmtcIlxyXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiKGlkQmFnLmxhYmVsU3BhbiArIGkpICsgJyAnICsgKGlkQmFnLnZhbHVlU3BhbiArIGkpXCIgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJpZEJhZy5kZXRhaWxzU3BhbiArIGlcIj5cclxuICAgICAgPHNwYW4+e3sgaXRlbS52YWx1ZSB9fTwvc3Bhbj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJzbWUtaWNvbiBzbWUtaWNvbi1vcGVuSW5OZXdXaW5kb3cgc21lLW1hcmdpbi1sZWZ0LXhzXCI+PC9zcGFuPlxyXG4gICAgPC9hPlxyXG4gIDwvcD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gSWNvbiBUZW1wbGF0ZSAtLT5cclxuPG5nLXRlbXBsYXRlICNpY29uVGVtcGxhdGUgbGV0LWl0ZW0gbGV0LWk9XCJpbmRleFwiPlxyXG4gIDxzcGFuICpuZ0lmPVwiISFpdGVtLmljb25DbGFzc1wiIGNsYXNzPVwic21lLW1hcmdpbi1yaWdodC14cyBzbWUtaWNvbiB7e2l0ZW0uaWNvbkNsYXNzfX1cIj48L3NwYW4+XHJcbiAgPHNtZS1zdGF0dXMtaWNvbiAqbmdJZj1cIml0ZW0uc3RhdHVzICE9PSBudWxsICYmICFpdGVtLmljb25DbGFzc1wiIGNsYXNzPVwic21lLWxheW91dC1pbmxpbmUtYmxvY2sgc21lLW1hcmdpbi1yaWdodC14cyBcIlxyXG4gICAgW3N0YXR1c109XCJpdGVtLnN0YXR1c1wiIHNpemU9XCIxNnB4XCI+PC9zbWUtc3RhdHVzLWljb24+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
478
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHktZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbmd1bGFyL3NyYy9jb250cm9scy9wcm9wZXJ0eS1ncmlkL3Byb3BlcnR5LWdyaWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvcHJvcGVydHktZ3JpZC9wcm9wZXJ0eS1ncmlkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsZUFBZSxFQUNmLFlBQVksRUFDWixVQUFVLEVBQ1YsTUFBTSxFQUNOLFFBQVEsRUFDUixLQUFLLEVBRUwsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBRVQsUUFBUSxFQUNSLFdBQVcsRUFDWCxTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDN0QsT0FBTyxFQUFVLG1CQUFtQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0UsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sMkNBQTJDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7SUNsQjlGLDRDQUEwSTs7O0lBQWxFLGtEQUEyQixjQUFBOzs7SUFDbkcsNENBQTRHOztJQUF0QywyQkFBYTs7O0lBTTdFLDJCQUN3RTs7OztJQUF0RSx3Q0FBc0IscUJBQUE7OztJQUkxQix3QkFBc0c7Ozs7SUFWMUcsMkNBQ3FGO0lBQ25GLG1DQUE2SDtJQUMzSCxpQ0FBbUM7SUFDakMsNEJBQU07SUFBQSxZQUFnQjtJQUFBLGlCQUFPO0lBQzdCLDJGQUN3RTtJQUV4RSxnQ0FBZ0M7SUFBQSxZQUFrQjtJQUFBLGlCQUFPO0lBQzNELGlCQUFRO0lBQ1IsMkdBQXNHO0lBQ3hH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O29CQUNQLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUMsR0FBRyxFQUFFLHNCQUFzQixFQUFDLEVBQUU7aUJBQ3pGO2FBQ0o7O3NCQWlEb0MsUUFBUTs7c0JBQUksUUFBUTs7c0JBQUksTUFBTTt1QkFBQyxtQkFBbUI7d0JBekM1RSxLQUFLO2tCQURYLGVBQWU7bUJBQUMseUJBQXlCO1lBSW5DLGdCQUFnQjtrQkFEdEIsU0FBUzttQkFBQyxrQkFBa0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7WUFJeEMsa0JBQWtCO2tCQUR4QixTQUFTO21CQUFDLG9CQUFvQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtZQUkxQyxvQkFBb0I7a0JBRDFCLFNBQVM7bUJBQUMsc0JBQXNCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO1lBSTVDLG9CQUFvQjtrQkFEMUIsU0FBUzttQkFBQyxzQkFBc0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7WUFjNUMsV0FBVztrQkFEakIsS0FBSztZQU9DLGFBQWE7a0JBRG5CLE1BQU07WUFPQSx1QkFBdUI7a0JBRDdCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgQ29udGVudENoaWxkcmVuLFxyXG4gICAgRXZlbnRFbWl0dGVyLFxyXG4gICAgZm9yd2FyZFJlZixcclxuICAgIEluamVjdCxcclxuICAgIEluamVjdG9yLFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkNoYW5nZXMsXHJcbiAgICBPcHRpb25hbCxcclxuICAgIE91dHB1dCxcclxuICAgIFF1ZXJ5TGlzdCxcclxuICAgIFNpbXBsZUNoYW5nZXMsXHJcbiAgICBTa2lwU2VsZixcclxuICAgIFRlbXBsYXRlUmVmLFxyXG4gICAgVmlld0NoaWxkXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvcmVCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tbW9uL2Jhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTGF5b3V0LCBTTUVfTEFZT1VUX1BST1ZJREVSIH0gZnJvbSAnLi4vY29tbW9uL2xheW91dCc7XHJcbmltcG9ydCB7IFByb3BlcnR5R3JpZEl0ZW1Db21wb25lbnQgfSBmcm9tICcuL3Byb3BlcnR5LWdyaWQtaXRlbS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBQcm9wZXJ0eUdyaWRSZXNwb25zaXZlV2luZG93TWFuYWdlciB9IGZyb20gJy4vcHJvcGVydHktZ3JpZC1yZXNwb25zaXZlLXdpbmRvdy1tYW5hZ2VyJztcclxuXHJcbi8qKlxyXG4gKiBUaGUgcGFuZSBvcmllbnRhdGlvbiBvZiB0aGUgc3BsaXQgdmlldy5cclxuICovXHJcbmV4cG9ydCB0eXBlIFByb3BlcnR5R3JpZE9yaWVudGF0aW9uID0gJ3ZlcnRpY2FsJyB8ICdob3Jpem9udGFsJztcclxuXHJcbi8qKlxyXG4gKlxyXG4gKiBAc21lRG9jIHtAbGFiZWwgUHJvcGVydHkgR3JpZCBAaWQgc21lLXByb3BlcnR5LWdyaWQtY29tcG9uZW50fVxyXG4gKlxyXG4gKiBAb3ZlcnZpZXdcclxuICogQGZpbGUge0BmaWxlcGF0aCAuL2V4YW1wbGVzL292ZXJ2aWV3Lm1kfVxyXG4gKlxyXG4gKiBAZXhhbXBsZSB7QGxhYmVsIEJhc2ljIFVzYWdlIEBpZCBiYXNpYy11c2FnZX1cclxuICogQGZpbGUge0BmaWxlbmFtZSBjb21wb25lbnQuaHRtbCBAZmlsZXBhdGggLi9leGFtcGxlcy9iYXNpYy11c2FnZS5jb21wb25lbnQuaHRtbH1cclxuICpcclxuICogQGV4YW1wbGUge0BsYWJlbCBWZXJ0aWNhbCBPcmllbnRhdGlvbiBAaWQgdmVydGljYWwtb3JpZW50YXRpb259XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50Lmh0bWwgQGZpbGVwYXRoIC4vZXhhbXBsZXMvdmVydGljYWwtb3JpZW50YXRpb24uY29tcG9uZW50Lmh0bWx9XHJcbiAqXHJcbiAqIEBleGFtcGxlIHtAbGFiZWwgSXRlbSB3aXRoIGEgTGluayBAaWQgbGluay1pdGVtfVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIGNvbXBvbmVudC5odG1sIEBmaWxlcGF0aCAuL2V4YW1wbGVzL2xpbmstaXRlbS5jb21wb25lbnQuaHRtbH1cclxuICpcclxuICogQGV4YW1wbGUge0BsYWJlbCBJdGVtIHdpdGggYSBUb29sdGlwIEBpZCB0b29sdGlwLWl0ZW19XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50Lmh0bWwgQGZpbGVwYXRoIC4vZXhhbXBsZXMvdG9vbHRpcC1pdGVtLmNvbXBvbmVudC5odG1sfVxyXG4gKlxyXG4gKiBAZXhhbXBsZSB7QGxhYmVsIEl0ZW0gd2l0aCBhIEFjdGlvbiBAaWQgYWN0aW9uLWl0ZW19XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50LnRzIEBmaWxlcGF0aCAuL2V4YW1wbGVzL2FjdGlvbi1pdGVtLmNvbXBvbmVudC50c31cclxuICogQGZpbGUge0BmaWxlbmFtZSBjb21wb25lbnQuaHRtbCBAZmlsZXBhdGggLi9leGFtcGxlcy9hY3Rpb24taXRlbS5jb21wb25lbnQuaHRtbH1cclxuICpcclxuICogQGV4YW1wbGUge0BsYWJlbCBJdGVtIFNwYW5uaW5nIE11bHRpcGxlIENvbHVtbnMgQGlkIG11bHRpLWNvbHVtbn1cclxuICogQGZpbGUge0BmaWxlbmFtZSBjb21wb25lbnQuaHRtbCBAZmlsZXBhdGggLi9leGFtcGxlcy9tdWx0aS1jb2x1bW4taXRlbS5jb21wb25lbnQuaHRtbH1cclxuICpcclxuICogQGV4YW1wbGUge0BsYWJlbCBJdGVtcyB3aXRoIFN0YXR1cyBhbmQgSWNvbnMgQGlkIHN0YXR1cy1hbmQtaWNvbnN9XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50Lmh0bWwgQGZpbGVwYXRoIC4vZXhhbXBsZXMvc3RhdHVzLWl0ZW0uY29tcG9uZW50Lmh0bWx9XHJcbiAqXHJcbiAqIEBleGFtcGxlIHtAbGFiZWwgSXRlbXMgd2l0aCBjb21wbGV4IHZhbHVlIHR5cGVzIEBpZCBjb21wbGV4LXZhbHVlfVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIGNvbXBvbmVudC5odG1sIEBmaWxlcGF0aCAuL2V4YW1wbGVzL2NvbXBsZXgtdmFsdWVzLmNvbXBvbmVudC5odG1sfVxyXG4gKlxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3NtZS1wcm9wZXJ0eS1ncmlkJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9wcm9wZXJ0eS1ncmlkLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIHsgcHJvdmlkZTogU01FX0xBWU9VVF9QUk9WSURFUiwgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUHJvcGVydHlHcmlkQ29tcG9uZW50KSB9XHJcbiAgICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQcm9wZXJ0eUdyaWRDb21wb25lbnQgZXh0ZW5kcyBDb3JlQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIExheW91dCwgT25DaGFuZ2VzIHtcclxuICAgIC8qKlxyXG4gICAgICogVGhlIGJhc2ljIGNvbHVtbiB3aWR0aCBmb3IgdGhlIHByb3BlcnR5IGdyaWQgaXRlbXMuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBsYXlvdXRJdGVtV2lkdGggPSAzMDA7XHJcblxyXG4gICAgQENvbnRlbnRDaGlsZHJlbihQcm9wZXJ0eUdyaWRJdGVtQ29tcG9uZW50KVxyXG4gICAgcHVibGljIGl0ZW1zOiBRdWVyeUxpc3Q8UHJvcGVydHlHcmlkSXRlbUNvbXBvbmVudD47XHJcblxyXG4gICAgQFZpZXdDaGlsZCgncmVhZG9ubHlUZW1wbGF0ZScsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgICBwdWJsaWMgcmVhZG9ubHlUZW1wbGF0ZTogVGVtcGxhdGVSZWY8UHJvcGVydHlHcmlkSXRlbUNvbXBvbmVudD47XHJcblxyXG4gICAgQFZpZXdDaGlsZCgnYWN0aW9uTGlua1RlbXBsYXRlJywgeyBzdGF0aWM6IHRydWUgfSlcclxuICAgIHB1YmxpYyBhY3Rpb25MaW5rVGVtcGxhdGU6IFRlbXBsYXRlUmVmPFByb3BlcnR5R3JpZEl0ZW1Db21wb25lbnQ+O1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ2ludGVybmFsTGlua1RlbXBsYXRlJywgeyBzdGF0aWM6IHRydWUgfSlcclxuICAgIHB1YmxpYyBpbnRlcm5hbExpbmtUZW1wbGF0ZTogVGVtcGxhdGVSZWY8UHJvcGVydHlHcmlkSXRlbUNvbXBvbmVudD47XHJcblxyXG4gICAgQFZpZXdDaGlsZCgnZXh0ZXJuYWxMaW5rVGVtcGxhdGUnLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gICAgcHVibGljIGV4dGVybmFsTGlua1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxQcm9wZXJ0eUdyaWRJdGVtQ29tcG9uZW50PjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBzb3VyY2UgbmFtZSB0byB1c2UgZm9yIGxvZ2dpbmdcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGdldCBsb2dTb3VyY2VOYW1lKCkge1xyXG4gICAgICAgIHJldHVybiAnUHJvcGVydHlHcmlkQ29tcG9uZW50JztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBvcmllbnRhdGlvbiBmb3IgdGhlIHByb3BlcnR5IGdyaWRcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBvcmllbnRhdGlvbjogUHJvcGVydHlHcmlkT3JpZW50YXRpb24gPSAnaG9yaXpvbnRhbCc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgTGF5b3V0IGludGVyZmFjZVxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyBsYXlvdXRDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgTGF5b3V0IGludGVyZmFjZVxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyB3aW5kb3dCcmVha3BvaW50Q2hhbmdlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICAgIHByaXZhdGUgcHJvcGVydHlHcmlkUmVzcG9uc2l2ZVdpbmRvd01hbmFnZXIgPSBuZXcgUHJvcGVydHlHcmlkUmVzcG9uc2l2ZVdpbmRvd01hbmFnZXIoKTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihpbmplY3RvcjogSW5qZWN0b3IsIEBTa2lwU2VsZigpIEBPcHRpb25hbCgpIEBJbmplY3QoU01FX0xBWU9VVF9QUk9WSURFUikgbGF5b3V0OiBMYXlvdXQpIHtcclxuICAgICAgICBzdXBlcihpbmplY3Rvcik7XHJcbiAgICAgICAgLy8gb2xkIHN0eWxlIHN1cHBvcnRlZCBzbWUtcHJvcGVydHktZ3JpZC1hcnJhbmdlLXZlcnRpY2FsIGNsYXNzLiBkZWZhdWx0IHRvIHZlcnRpY2FsIG9yaWVudGF0aW9uIGlmIHRoaXMgY2xhc3MgaXMgYXBwbGllZC5cclxuICAgICAgICBjb25zdCBoYXNWZXJ0aWNhbENsYXNzID0gKDxIVE1MRWxlbWVudD50aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpLmNsYXNzTGlzdC5jb250YWlucygnc21lLXByb3BlcnR5LWdyaWQtYXJyYW5nZS12ZXJ0aWNhbCcpO1xyXG4gICAgICAgIHRoaXMub3JpZW50YXRpb24gPSBoYXNWZXJ0aWNhbENsYXNzID8gJ3ZlcnRpY2FsJyA6ICdob3Jpem9udGFsJztcclxuXHJcbiAgICAgICAgLy8gb24gcGFyZW50IGxheW91dCBjaGFuZ2VzLCByZS1lbWl0IHRoZSBsYXlvdXQgY2hhbmdlIHRvIG91ciBldmVudFxyXG4gICAgICAgIGlmIChsYXlvdXQpIHtcclxuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgICAgICAgICBsYXlvdXQubGF5b3V0Q2hhbmdlZC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubGF5b3V0Q2hhbmdlZC5lbWl0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcGVydHlHcmlkUmVzcG9uc2l2ZVdpbmRvd01hbmFnZXIub25XaW5kb3dTaXplQ2hhbmdlZCh0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0cmluZ2lmeVZhbHVlKHZhbHVlOiBhbnkpIHtcclxuICAgICAgICBpZiAoTXNmdFNtZS5pc051bGxPcldoaXRlU3BhY2UodmFsdWUpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAnLSc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdmFsdWUubWFwKHYgPT4gdGhpcy5zdHJpbmdpZnlWYWx1ZSh2KSkuam9pbignLFxcbicpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoTXNmdFNtZS5pc09iamVjdCh2YWx1ZSkpIHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh2YWx1ZSwgbnVsbCwgMik7XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGAke3ZhbHVlfWA7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldFRlbXBsYXRlKGl0ZW06IFByb3BlcnR5R3JpZEl0ZW1Db21wb25lbnQpIHtcclxuICAgICAgICBpZiAoaXRlbS5hY3Rpb24pIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWN0aW9uTGlua1RlbXBsYXRlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaXRlbS5saW5rKSB7XHJcbiAgICAgICAgICAgIGlmIChpdGVtLmlzRXh0ZXJuYWxMaW5rKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5leHRlcm5hbExpbmtUZW1wbGF0ZTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmludGVybmFsTGlua1RlbXBsYXRlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLnJlYWRvbmx5VGVtcGxhdGU7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgICAgICBzdXBlci5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcclxuICAgICAgICBpZiAoY2hhbmdlcy5vcmllbnRhdGlvbikge1xyXG4gICAgICAgICAgICB0aGlzLmxheW91dENoYW5nZWQuZW1pdCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEl0IGhhbmRsZXMgdGhlIHVuZGVmaW5lZCB2YWx1ZSB3b24ndCBiZSB1cGRhdGVkIHNpdHVhdGlvbiBmb3IgYXN5bmMgcHJvcGVydHkgaXRlbS5cclxuICAgICAqIEFuZ3VsYXIgaXNzdWUgdGhhdCB0aGUgcHJvcGVydHkgaXRlbSB2YWx1ZSBpbml0aWFsaXplZCB3aXRoIHVuZGVmaW5lZCwgaWYgYWZ0ZXIgYXN5bmMgdGltZSwgdGhlIHZhbHVlIGJlaW5nIHNldCBpcyBzdGlsbCB1bmRlZmluZWQsXHJcbiAgICAgKiBBbmd1bGFyIHdpbGwgbm90IGJlIGFibGUgdG8gdHJpZ2dlciB0aGUgdmFsdWUgb24gY2hhbmdlZCBldmVudC4gVGh1cyB3ZSBoYXZlIHRvIG1hbnVhbGx5IGNhbGwgdG8gcmVmcmVzaCBpdC5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gaW5kZXggVGhlIGluZGV4IHRoYXQgbmVlZHMgdG8gaGFyZCByZWZyZXNoLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaGFyZFJlZnJlc2hJdGVtKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMuaXRlbXMpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgaXRlbXMgPSB0aGlzLml0ZW1zLnRvQXJyYXkoKTtcclxuICAgICAgICBpZiAoIWl0ZW1zW2luZGV4XSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBpdGVtID0gaXRlbXNbaW5kZXhdO1xyXG4gICAgICAgIGlmIChpdGVtLmlzQXN5bmMgJiYgaXRlbS52YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGl0ZW0ubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENyZWF0ZXMgdGhlIGlkQmFnIHVzZWQgYnkgdGhpcyBjb21wb25lbnQgdG8gc3RvcmUgdW5pcXVlIGVsZW1lbnQgaWRzLlxyXG4gICAgICogaWQgdmFsdWVzIHdpbGwgYmUgYXNzaWduZWQgYmUgdGhlIEBzZWUgQmFzZUNvbXBvbmVudCBzdXBlciBjbGFzcy5cclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGNyZWF0ZUlkQmFnKCk6IE1zZnRTbWUuU3RyaW5nTWFwPHN0cmluZz4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGRldGFpbHNTcGFuOiAnJyxcclxuICAgICAgICAgICAgbGFiZWxTcGFuOiAnJyxcclxuICAgICAgICAgICAgdmFsdWVTcGFuOiAnJ1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIHRoZSBpbml0aWFsIGhvc3QgY2xhc3NlcyB0byBiZSBhcHBsaWVkIHRvIHRoaXMgZWxlbWVudFxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgZ2V0SW5pdGlhbEhvc3RDbGFzc2VzKCkge1xyXG4gICAgICAgIHJldHVybiBzdXBlci5nZXRJbml0aWFsSG9zdENsYXNzZXMoKS5jb25jYXQoW1xyXG4gICAgICAgICAgICAnc21lLXByb3BlcnR5LWdyaWQnLFxyXG4gICAgICAgICAgICAnc21lLWxheW91dC1yZWxhdGl2ZScsXHJcbiAgICAgICAgICAgICdzbWUtZm9jdXMtem9uZSdcclxuICAgICAgICBdKTtcclxuICAgIH1cclxufVxyXG4iLCI8c21lLWxheW91dCAjbGF5b3V0IFtwYWRMYXN0SXRlbV09XCJ0cnVlXCIgY2xhc3M9XCJzbWUtcG9zaXRpb24taW5zZXQtbm9uZSBzbWUtcG9zaXRpb24tc3RyZXRjaC1oXCI+XHJcbiAgPHNtZS1sYXlvdXQtZGVmaW5pdGlvbiBuYW1lPVwibmFycm93XCIgW3VudGlsXT1cImxheW91dEl0ZW1XaWR0aFwiIFtjb2x1bW5zXT1cIjFcIj48L3NtZS1sYXlvdXQtZGVmaW5pdGlvbj5cclxuICA8c21lLWxheW91dC1kZWZpbml0aW9uICpuZ0lmPVwib3JpZW50YXRpb24gIT09ICd2ZXJ0aWNhbCdcIiBuYW1lPVwibWVkaXVtXCIgW3VudGlsXT1cImxheW91dEl0ZW1XaWR0aCoyXCIgW2NvbHVtbnNdPVwiMlwiPjwvc21lLWxheW91dC1kZWZpbml0aW9uPlxyXG4gIDxzbWUtbGF5b3V0LWRlZmluaXRpb24gKm5nSWY9XCJvcmllbnRhdGlvbiAhPT0gJ3ZlcnRpY2FsJ1wiIG5hbWU9XCJ3aWRlXCIgW2NvbHVtbnNdPVwiM1wiPjwvc21lLWxheW91dC1kZWZpbml0aW9uPlxyXG4gIDxzbWUtbGF5b3V0LWl0ZW0gKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXM7IGluZGV4IGFzIGlcIiBbY29sdW1uU3Bhbl09XCJpdGVtLmNvbHVtblNwYW5cIlxyXG4gICAgW21heFdpZHRoXT1cIm9yaWVudGF0aW9uID09PSAndmVydGljYWwnID8gbnVsbCA6IGl0ZW0uY29sdW1uU3BhbiAqIGxheW91dEl0ZW1XaWR0aFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInNtZS1wcm9wZXJ0eS1ncmlkLWl0ZW1cIiB0YWJpbmRleD1cIjBcIiBhcmlhLWxpdmU9XCJwb2xpdGVcIiBhcmlhLWF0b21pYz1cInRydWVcIiAjem9uZT1cInNtZVRvb2x0aXBab25lXCIgc21lVG9vbHRpcFpvbmU+XHJcbiAgICAgIDxsYWJlbCBjbGFzcz1cInNtZS1hcnJhbmdlLXN0YWNrLWhcIj5cclxuICAgICAgICA8c3Bhbj57eyBpdGVtLmxhYmVsIH19PC9zcGFuPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwiaXRlbS50b29sdGlwXCIgY2xhc3M9XCJzbWUtcG9zaXRpb24tZmxleC1ub25lIHNtZS1pY29uIHNtZS1pY29uLWluZm8gc21lLWluZm8tYnViYmxlIHNtZS1tYXJnaW4tbGVmdC14c1wiXHJcbiAgICAgICAgICBbdGl0bGVdPVwiaXRlbS50b29sdGlwXCIgW3Rvb2x0aXBab25lXT1cInpvbmVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XHJcbiAgICAgICAgPCEtLSBpbiBzY2FuIG1vZGUgc2NyZWVuIHJlYWRlciBkb2VzIG5vdCBmb2N1cyBvbiB0aGUgaW5mbyBpY29uIHByb3Blcmx5IHRvIHJlYWQgdGhlIHRpdGxlIC0tPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwic21lLXNjcmVlbi1yZWFkZXJcIj57eyBpdGVtLnRvb2x0aXAgfX08L3NwYW4+XHJcbiAgICAgIDwvbGFiZWw+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJnZXRUZW1wbGF0ZShpdGVtKTtjb250ZXh0OnskaW1wbGljaXQ6aXRlbSwgaW5kZXg6IGl9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L3NtZS1sYXlvdXQtaXRlbT5cclxuPC9zbWUtbGF5b3V0PlxyXG5cclxuPCEtLSBSZWFkIG9ubHkgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjcmVhZG9ubHlUZW1wbGF0ZSBsZXQtaXRlbSBsZXQtaT1cImluZGV4XCI+XHJcbiAgPHNtZS1sb2FkaW5nLXdoZWVsICpuZ0lmPVwiaXRlbS5sb2FkaW5nICYmIGl0ZW0uaXNBc3luY1wiIHNpemU9XCJleHRyYS1zbWFsbFwiIFtpbmxpbmVdPVwidHJ1ZVwiIFtpc0JhY2tncm91bmRUcmFuc3BhcmVudF09XCJ0cnVlXCI+PC9zbWUtbG9hZGluZy13aGVlbD5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWl0ZW0ubG9hZGluZyB8fCAhaXRlbS5pc0FzeW5jXCI+XHJcbiAgICA8cCBjbGFzcz1cInNtZS1yZWFkLW9ubHktdGVtcGxhdGVcIiBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiaWRCYWcubGFiZWxTcGFuICsgaVwiIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiaWRCYWcuZGV0YWlsc1NwYW4gKyBpXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpY29uVGVtcGxhdGU7Y29udGV4dDp7JGltcGxpY2l0Oml0ZW0sIGluZGV4OiBpfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8c3BhbiAqbmdJZj1cIiFpdGVtLmxpbmsgJiYgIWl0ZW0uYWN0aW9uXCI+e3sgc3RyaW5naWZ5VmFsdWUoaXRlbS52YWx1ZSkgfX08L3NwYW4+XHJcbiAgICA8L3A+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIEFjdGlvbiBsaW5rIChyb2xlIGJ1dHRvbikgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjYWN0aW9uTGlua1RlbXBsYXRlIGxldC1pdGVtIGxldC1pPVwiaW5kZXhcIj5cclxuICA8cD5cclxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpY29uVGVtcGxhdGU7Y29udGV4dDp7JGltcGxpY2l0Oml0ZW0sIGluZGV4OiBpfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPHNwYW4gKm5nSWY9XCJpdGVtLnByZWZpeFN0cmluZ1wiIGNsYXNzPVwic21lLXBhZGRpbmctcmlnaHQteHNcIj57eyBpdGVtLnByZWZpeFN0cmluZyB9fTwvc3Bhbj5cclxuICAgIDxhIHRhYmluZGV4PVwiMFwiIGNsYXNzPVwic21lLWxpbmsgc21lLWZvY3VzLXpvbmUgc21lLWFjdGlvbi1saW5rLXRlbXBsYXRlXCIgcm9sZT1cImxpbmtcIiAoY2xpY2spPVwiaXRlbS5hY3Rpb24oaXRlbSlcIlxyXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiKGlkQmFnLmxhYmVsU3BhbiArIGkpICsgJyAnICsgKGlkQmFnLnZhbHVlU3BhbiArIGkpXCJcclxuICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJpZEJhZy5kZXRhaWxzU3BhbiArIGlcIj57eyBpdGVtLnZhbHVlIH19PC9hPlxyXG4gIDwvcD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gSW50ZXJuYWwgbGluayAtLT5cclxuPG5nLXRlbXBsYXRlICNpbnRlcm5hbExpbmtUZW1wbGF0ZSBsZXQtaXRlbSBsZXQtaT1cImluZGV4XCI+XHJcbiAgPHA+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaWNvblRlbXBsYXRlO2NvbnRleHQ6eyRpbXBsaWNpdDppdGVtLCBpbmRleDogaX1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDxzcGFuICpuZ0lmPVwiaXRlbS5wcmVmaXhTdHJpbmdcIiBjbGFzcz1cInNtZS1wYWRkaW5nLXJpZ2h0LXhzXCI+e3sgaXRlbS5wcmVmaXhTdHJpbmcgfX08L3NwYW4+XHJcbiAgICA8YSBjbGFzcz1cInNtZS1saW5rIHNtZS1mb2N1cy16b25lXCIgcm9sZT1cImxpbmtcIiBbcm91dGVyTGlua109XCJpdGVtLmxpbmtcIiBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiKGlkQmFnLmxhYmVsU3BhbiArIGkpICsgJyAnICsgKGlkQmFnLnZhbHVlU3BhbiArIGkpXCJcclxuICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJpZEJhZy5kZXRhaWxzU3BhbiArIGlcIj57eyBpdGVtLnZhbHVlIH19PC9hPlxyXG4gIDwvcD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gRXh0ZXJuYWwgbGluayAtLT5cclxuPG5nLXRlbXBsYXRlICNleHRlcm5hbExpbmtUZW1wbGF0ZSBsZXQtaXRlbSBsZXQtaT1cImluZGV4XCI+XHJcbiAgPHA+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaWNvblRlbXBsYXRlO2NvbnRleHQ6eyRpbXBsaWNpdDppdGVtLCBpbmRleDogaX1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDxzcGFuICpuZ0lmPVwiaXRlbS5wcmVmaXhTdHJpbmdcIiBjbGFzcz1cInNtZS1wYWRkaW5nLXJpZ2h0LXhzXCI+e3sgaXRlbS5wcmVmaXhTdHJpbmcgfX08L3NwYW4+XHJcbiAgICA8YSBjbGFzcz1cInNtZS1saW5rIHNtZS1mb2N1cy16b25lXCIgcm9sZT1cImxpbmtcIiBbaHJlZl09XCJpdGVtLmxpbmtcIiB0YXJnZXQ9XCJfYmxhbmtcIlxyXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiKGlkQmFnLmxhYmVsU3BhbiArIGkpICsgJyAnICsgKGlkQmFnLnZhbHVlU3BhbiArIGkpXCIgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJpZEJhZy5kZXRhaWxzU3BhbiArIGlcIj5cclxuICAgICAgPHNwYW4+e3sgaXRlbS52YWx1ZSB9fTwvc3Bhbj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJzbWUtaWNvbiBzbWUtaWNvbi1vcGVuSW5OZXdXaW5kb3cgc21lLW1hcmdpbi1sZWZ0LXhzXCI+PC9zcGFuPlxyXG4gICAgPC9hPlxyXG4gIDwvcD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gSWNvbiBUZW1wbGF0ZSAtLT5cclxuPG5nLXRlbXBsYXRlICNpY29uVGVtcGxhdGUgbGV0LWl0ZW0gbGV0LWk9XCJpbmRleFwiPlxyXG4gIDxzcGFuICpuZ0lmPVwiISFpdGVtLmljb25DbGFzc1wiIGNsYXNzPVwic21lLW1hcmdpbi1yaWdodC14cyBzbWUtaWNvbiB7e2l0ZW0uaWNvbkNsYXNzfX1cIj48L3NwYW4+XHJcbiAgPHNtZS1zdGF0dXMtaWNvbiAqbmdJZj1cIml0ZW0uc3RhdHVzICE9PSB1bmRlZmluZWQgJiYgaXRlbS5zdGF0dXMgIT09IG51bGwgJiYgIWl0ZW0uaWNvbkNsYXNzXCIgY2xhc3M9XCJzbWUtbGF5b3V0LWlubGluZS1ibG9jayBzbWUtbWFyZ2luLXJpZ2h0LXhzIFwiXHJcbiAgICBbc3RhdHVzXT1cIml0ZW0uc3RhdHVzXCIgc2l6ZT1cIjE2cHhcIj48L3NtZS1zdGF0dXMtaWNvbj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
@@ -0,0 +1,3 @@
1
+ export { SmeUxContentComponent } from './sme-ux-content.component';
2
+ export { SmeUxContentModule } from './sme-ux-content.module';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbmd1bGFyL3NyYy9jb250cm9scy91eC9zbWUtdXgtY29udGVudC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IFNtZVV4Q29udGVudENvbXBvbmVudCB9IGZyb20gJy4vc21lLXV4LWNvbnRlbnQuY29tcG9uZW50JztcclxuZXhwb3J0IHsgU21lVXhDb250ZW50TW9kdWxlIH0gZnJvbSAnLi9zbWUtdXgtY29udGVudC5tb2R1bGUnO1xyXG4iXX0=
@@ -0,0 +1,25 @@
1
+ import { Component, Injector } from '@angular/core';
2
+ import { CoreBaseComponent } from '../../common/base.component';
3
+ import * as i0 from "@angular/core";
4
+ const _c0 = ["*"];
5
+ export class SmeUxContentComponent extends CoreBaseComponent {
6
+ constructor(injector) {
7
+ super(injector);
8
+ }
9
+ get logSourceName() {
10
+ return 'SmeUxContent';
11
+ }
12
+ }
13
+ /** @nocollapse */ SmeUxContentComponent.ɵfac = function SmeUxContentComponent_Factory(t) { return new (t || SmeUxContentComponent)(i0.ɵɵdirectiveInject(i0.Injector)); };
14
+ /** @nocollapse */ SmeUxContentComponent.ɵcmp = i0.ɵɵdefineComponent({ type: SmeUxContentComponent, selectors: [["sme-ux-content"]], features: [i0.ɵɵInheritDefinitionFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function SmeUxContentComponent_Template(rf, ctx) { if (rf & 1) {
15
+ i0.ɵɵprojectionDef();
16
+ i0.ɵɵprojection(0);
17
+ } }, encapsulation: 2 });
18
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SmeUxContentComponent, [{
19
+ type: Component,
20
+ args: [{
21
+ selector: 'sme-ux-content',
22
+ template: `<ng-content></ng-content>`
23
+ }]
24
+ }], function () { return [{ type: i0.Injector }]; }, null); })();
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21lLXV4LWNvbnRlbnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvdXgvc21lLXV4LWNvbnRlbnQvc21lLXV4LWNvbnRlbnQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7QUFNaEUsTUFBTSxPQUFPLHFCQUFzQixTQUFRLGlCQUFpQjtJQUt4RCxZQUFZLFFBQWtCO1FBQzFCLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNwQixDQUFDO0lBTkQsSUFBYyxhQUFhO1FBQ3ZCLE9BQU8sY0FBYyxDQUFDO0lBQzFCLENBQUM7OzZHQUhRLHFCQUFxQjs2RUFBckIscUJBQXFCOztRQUZuQixrQkFBeUI7O3VGQUUzQixxQkFBcUI7Y0FKakMsU0FBUztlQUFDO2dCQUNQLFFBQVEsRUFBRSxnQkFBZ0I7Z0JBQzFCLFFBQVEsRUFBRSwyQkFBMkI7YUFDeEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvcmVCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tbW9uL2Jhc2UuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdzbWUtdXgtY29udGVudCcsXHJcbiAgICB0ZW1wbGF0ZTogYDxuZy1jb250ZW50PjwvbmctY29udGVudD5gXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTbWVVeENvbnRlbnRDb21wb25lbnQgZXh0ZW5kcyBDb3JlQmFzZUNvbXBvbmVudCB7XHJcbiAgICBwcm90ZWN0ZWQgZ2V0IGxvZ1NvdXJjZU5hbWUoKSB7XHJcbiAgICAgICAgcmV0dXJuICdTbWVVeENvbnRlbnQnO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluamVjdG9yOiBJbmplY3Rvcikge1xyXG4gICAgICAgIHN1cGVyKGluamVjdG9yKTtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,23 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { NgModule } from '@angular/core';
3
+ import { SmeUxContentComponent } from './sme-ux-content.component';
4
+ import * as i0 from "@angular/core";
5
+ export class SmeUxContentModule {
6
+ }
7
+ /** @nocollapse */ SmeUxContentModule.ɵfac = function SmeUxContentModule_Factory(t) { return new (t || SmeUxContentModule)(); };
8
+ /** @nocollapse */ SmeUxContentModule.ɵmod = i0.ɵɵdefineNgModule({ type: SmeUxContentModule });
9
+ /** @nocollapse */ SmeUxContentModule.ɵinj = i0.ɵɵdefineInjector({ imports: [[
10
+ CommonModule
11
+ ]] });
12
+ (function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(SmeUxContentModule, { declarations: [SmeUxContentComponent], imports: [CommonModule], exports: [SmeUxContentComponent] }); })();
13
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SmeUxContentModule, [{
14
+ type: NgModule,
15
+ args: [{
16
+ exports: [SmeUxContentComponent],
17
+ declarations: [SmeUxContentComponent],
18
+ imports: [
19
+ CommonModule
20
+ ]
21
+ }]
22
+ }], null, null); })();
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21lLXV4LWNvbnRlbnQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvdXgvc21lLXV4LWNvbnRlbnQvc21lLXV4LWNvbnRlbnQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQVNuRSxNQUFNLE9BQU8sa0JBQWtCOzt1R0FBbEIsa0JBQWtCO3lFQUFsQixrQkFBa0I7NkVBSmxCO1lBQ0wsWUFBWTtTQUNmO3dGQUVRLGtCQUFrQixtQkFMWixxQkFBcUIsYUFFaEMsWUFBWSxhQUhOLHFCQUFxQjt1RkFNdEIsa0JBQWtCO2NBUDlCLFFBQVE7ZUFBQztnQkFDTixPQUFPLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztnQkFDaEMsWUFBWSxFQUFFLENBQUMscUJBQXFCLENBQUM7Z0JBQ3JDLE9BQU8sRUFBRTtvQkFDTCxZQUFZO2lCQUNmO2FBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTbWVVeENvbnRlbnRDb21wb25lbnQgfSBmcm9tICcuL3NtZS11eC1jb250ZW50LmNvbXBvbmVudCc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gICAgZXhwb3J0czogW1NtZVV4Q29udGVudENvbXBvbmVudF0sXHJcbiAgICBkZWNsYXJhdGlvbnM6IFtTbWVVeENvbnRlbnRDb21wb25lbnRdLFxyXG4gICAgaW1wb3J0czogW1xyXG4gICAgICAgIENvbW1vbk1vZHVsZVxyXG4gICAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU21lVXhDb250ZW50TW9kdWxlIHsgfVxyXG4iXX0=
@@ -0,0 +1,4 @@
1
+ export { SmeUxFooterComponent } from './sme-ux-footer.component';
2
+ export { SmeUxFooterModule } from './sme-ux-footer.module';
3
+ export * from './sme-ux-footer-template/sme-wizard-lite-footer-template';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbmd1bGFyL3NyYy9jb250cm9scy91eC9zbWUtdXgtZm9vdGVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTNELGNBQWMsMERBQTBELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBTbWVVeEZvb3RlckNvbXBvbmVudCB9IGZyb20gJy4vc21lLXV4LWZvb3Rlci5jb21wb25lbnQnO1xyXG5leHBvcnQgeyBTbWVVeEZvb3Rlck1vZHVsZSB9IGZyb20gJy4vc21lLXV4LWZvb3Rlci5tb2R1bGUnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9zbWUtdXgtZm9vdGVyLXRlbXBsYXRlL3NtZS13aXphcmQtbGl0ZS1mb290ZXItdGVtcGxhdGUnO1xyXG4iXX0=
@@ -0,0 +1,3 @@
1
+ export { SmeWizardLiteFooterTemplateComponent } from './sme-wizard-lite-footer-template.component';
2
+ export { SmeWizardLiteFooterTemplateModule } from './sme-wizard-lite-footer-template.module';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbmd1bGFyL3NyYy9jb250cm9scy91eC9zbWUtdXgtZm9vdGVyL3NtZS11eC1mb290ZXItdGVtcGxhdGUvc21lLXdpemFyZC1saXRlLWZvb3Rlci10ZW1wbGF0ZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNuRyxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IFNtZVdpemFyZExpdGVGb290ZXJUZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vc21lLXdpemFyZC1saXRlLWZvb3Rlci10ZW1wbGF0ZS5jb21wb25lbnQnO1xyXG5leHBvcnQgeyBTbWVXaXphcmRMaXRlRm9vdGVyVGVtcGxhdGVNb2R1bGUgfSBmcm9tICcuL3NtZS13aXphcmQtbGl0ZS1mb290ZXItdGVtcGxhdGUubW9kdWxlJztcclxuIl19