@smartbit4all/ng-client 4.5.43 → 4.5.44

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 (129) hide show
  1. package/esm2022/lib/smart-component-layout/api/api/api.mjs +1 -1
  2. package/esm2022/lib/smart-component-layout/api/api/default.service.mjs +1 -1
  3. package/esm2022/lib/smart-component-layout/api/api.module.mjs +1 -1
  4. package/esm2022/lib/smart-component-layout/api/configuration.mjs +1 -1
  5. package/esm2022/lib/smart-component-layout/api/encoder.mjs +1 -1
  6. package/esm2022/lib/smart-component-layout/api/index.mjs +1 -1
  7. package/esm2022/lib/smart-component-layout/api/model/componentType.mjs +1 -1
  8. package/esm2022/lib/smart-component-layout/api/model/layoutDefinitionDescriptor.mjs +1 -1
  9. package/esm2022/lib/smart-component-layout/api/model/layoutDirection.mjs +1 -1
  10. package/esm2022/lib/smart-component-layout/api/model/smartComponentLayoutDefinition.mjs +1 -1
  11. package/esm2022/lib/smart-component-layout/api/model/smartComponentWidgetDefinition.mjs +1 -1
  12. package/esm2022/lib/smart-component-layout/api/param.mjs +1 -1
  13. package/esm2022/lib/smart-component-layout/api/variables.mjs +1 -1
  14. package/esm2022/lib/smart-diagram/api/api/api.mjs +1 -1
  15. package/esm2022/lib/smart-diagram/api/api/diagramService.service.mjs +1 -1
  16. package/esm2022/lib/smart-diagram/api/api.module.mjs +1 -1
  17. package/esm2022/lib/smart-diagram/api/configuration.mjs +1 -1
  18. package/esm2022/lib/smart-diagram/api/encoder.mjs +1 -1
  19. package/esm2022/lib/smart-diagram/api/index.mjs +1 -1
  20. package/esm2022/lib/smart-diagram/api/model/diagramColor.mjs +1 -1
  21. package/esm2022/lib/smart-diagram/api/model/diagramDataContainer.mjs +1 -1
  22. package/esm2022/lib/smart-diagram/api/model/diagramDataItem.mjs +1 -1
  23. package/esm2022/lib/smart-diagram/api/model/diagramDataSet.mjs +1 -1
  24. package/esm2022/lib/smart-diagram/api/model/diagramDescriptor.mjs +1 -1
  25. package/esm2022/lib/smart-diagram/api/model/diagramModel.mjs +1 -1
  26. package/esm2022/lib/smart-diagram/api/model/diagramShape.mjs +1 -1
  27. package/esm2022/lib/smart-diagram/api/model/drawTime.mjs +1 -1
  28. package/esm2022/lib/smart-diagram/api/model/labelText.mjs +1 -1
  29. package/esm2022/lib/smart-diagram/api/model/models.mjs +1 -1
  30. package/esm2022/lib/smart-diagram/api/param.mjs +1 -1
  31. package/esm2022/lib/smart-diagram/api/variables.mjs +1 -1
  32. package/esm2022/lib/smart-form/api/api/api.mjs +1 -1
  33. package/esm2022/lib/smart-form/api/api/default.service.mjs +1 -1
  34. package/esm2022/lib/smart-form/api/api.module.mjs +1 -1
  35. package/esm2022/lib/smart-form/api/configuration.mjs +1 -1
  36. package/esm2022/lib/smart-form/api/encoder.mjs +1 -1
  37. package/esm2022/lib/smart-form/api/index.mjs +1 -1
  38. package/esm2022/lib/smart-form/api/model/dateFieldProperties.mjs +1 -1
  39. package/esm2022/lib/smart-form/api/model/fileUploaderProperties.mjs +1 -1
  40. package/esm2022/lib/smart-form/api/model/imageProperties.mjs +1 -1
  41. package/esm2022/lib/smart-form/api/model/multiFileUploaderProperties.mjs +1 -1
  42. package/esm2022/lib/smart-form/api/model/propertyMapping.mjs +1 -1
  43. package/esm2022/lib/smart-form/api/model/recordingUploaderProperties.mjs +1 -1
  44. package/esm2022/lib/smart-form/api/model/selectionDefinition.mjs +1 -1
  45. package/esm2022/lib/smart-form/api/model/smartFormInputMode.mjs +1 -1
  46. package/esm2022/lib/smart-form/api/model/smartFormWidgetDirection.mjs +1 -1
  47. package/esm2022/lib/smart-form/api/model/smartFormWidgetType.mjs +1 -1
  48. package/esm2022/lib/smart-form/api/model/smartLayoutDefinition.mjs +1 -1
  49. package/esm2022/lib/smart-form/api/model/smartMatrixModel.mjs +1 -1
  50. package/esm2022/lib/smart-form/api/model/smartWidgetDefinition.mjs +1 -1
  51. package/esm2022/lib/smart-form/api/model/smartWidgetHint.mjs +1 -1
  52. package/esm2022/lib/smart-form/api/model/sortDefinition.mjs +1 -1
  53. package/esm2022/lib/smart-form/api/model/textBoxProperties.mjs +1 -1
  54. package/esm2022/lib/smart-form/api/model/textFieldProperties.mjs +1 -1
  55. package/esm2022/lib/smart-form/api/model/valueChangeMode.mjs +1 -1
  56. package/esm2022/lib/smart-form/api/param.mjs +1 -1
  57. package/esm2022/lib/smart-form/api/variables.mjs +1 -1
  58. package/esm2022/lib/smart-map/api/api/api.mjs +1 -1
  59. package/esm2022/lib/smart-map/api/api/geoMap.service.mjs +1 -1
  60. package/esm2022/lib/smart-map/api/api.module.mjs +1 -1
  61. package/esm2022/lib/smart-map/api/configuration.mjs +1 -1
  62. package/esm2022/lib/smart-map/api/encoder.mjs +1 -1
  63. package/esm2022/lib/smart-map/api/index.mjs +1 -1
  64. package/esm2022/lib/smart-map/api/model/gPSPosition.mjs +1 -1
  65. package/esm2022/lib/smart-map/api/model/gPSRoute.mjs +1 -1
  66. package/esm2022/lib/smart-map/api/model/geoMapChange.mjs +1 -1
  67. package/esm2022/lib/smart-map/api/model/geoMapDataLoadingMode.mjs +1 -1
  68. package/esm2022/lib/smart-map/api/model/geoMapDataSourceDescriptor.mjs +1 -1
  69. package/esm2022/lib/smart-map/api/model/geoMapDataSourceType.mjs +1 -1
  70. package/esm2022/lib/smart-map/api/model/geoMapEditingSession.mjs +1 -1
  71. package/esm2022/lib/smart-map/api/model/geoMapInteraction.mjs +1 -1
  72. package/esm2022/lib/smart-map/api/model/geoMapItem.mjs +1 -1
  73. package/esm2022/lib/smart-map/api/model/geoMapItemKind.mjs +1 -1
  74. package/esm2022/lib/smart-map/api/model/geoMapLayer.mjs +1 -1
  75. package/esm2022/lib/smart-map/api/model/geoMapLayerChange.mjs +1 -1
  76. package/esm2022/lib/smart-map/api/model/geoMapLayerDescriptor.mjs +1 -1
  77. package/esm2022/lib/smart-map/api/model/geoMapModel.mjs +1 -1
  78. package/esm2022/lib/smart-map/api/model/geoMapOperationMode.mjs +1 -1
  79. package/esm2022/lib/smart-map/api/model/geoMapSelectionMode.mjs +1 -1
  80. package/esm2022/lib/smart-map/api/model/geoMapServerModel.mjs +1 -1
  81. package/esm2022/lib/smart-map/api/model/geoMapTextType.mjs +1 -1
  82. package/esm2022/lib/smart-map/api/model/geoMapViewState.mjs +1 -1
  83. package/esm2022/lib/smart-map/api/model/geoMapViewport.mjs +1 -1
  84. package/esm2022/lib/smart-map/api/model/models.mjs +1 -1
  85. package/esm2022/lib/smart-map/api/param.mjs +1 -1
  86. package/esm2022/lib/smart-map/api/variables.mjs +1 -1
  87. package/esm2022/lib/smart-tree/smarttree.component.mjs +3 -3
  88. package/esm2022/lib/view-context/api/api/view.service.mjs +85 -1
  89. package/esm2022/lib/view-context/api/model/menuTriggerType.mjs +17 -0
  90. package/esm2022/lib/view-context/api/model/models.mjs +4 -2
  91. package/esm2022/lib/view-context/api/model/shellProperty.mjs +13 -0
  92. package/esm2022/lib/view-context/api/model/smartLinkData.mjs +1 -1
  93. package/esm2022/lib/view-context/api/model/themeDefinition.mjs +1 -1
  94. package/esm2022/lib/view-context/api/model/themeShellDescriptor.mjs +2 -0
  95. package/esm2022/lib/view-context/api/model/uiAction.mjs +1 -1
  96. package/esm2022/lib/view-context/api/model/uiActionDefinition.mjs +1 -1
  97. package/esm2022/lib/view-context/api/model/uiActionDefinitionEntry.mjs +1 -1
  98. package/esm2022/lib/view-context/api/model/uiActionDescriptor.mjs +1 -1
  99. package/esm2022/lib/view-context/api/model/uiActionInputType.mjs +1 -1
  100. package/esm2022/lib/view-context/api/model/uiActionSchedule.mjs +1 -1
  101. package/esm2022/lib/view-context/api/model/uiActionUploadDescriptor.mjs +1 -1
  102. package/esm2022/lib/view-context/api/model/viewEventHandler.mjs +1 -1
  103. package/esm2022/lib/view-context/projects.mjs +3 -2
  104. package/esm2022/lib/view-context/smart-ui-action/components/menu/click/menu.component.mjs +205 -0
  105. package/esm2022/lib/view-context/smart-ui-action/components/menu/hover/hover-menu.component.mjs +205 -0
  106. package/esm2022/lib/view-context/smart-ui-action/file-editor-toolbar/file-editor-toolbar.component.mjs +6 -5
  107. package/esm2022/lib/view-context/smart-ui-action/ui-action-button/ui-action-button.component.mjs +18 -10
  108. package/esm2022/lib/view-context/smart-ui-action/ui-action-toolbar.component.mjs +10 -8
  109. package/esm2022/lib/view-context/smart-view-context.module.mjs +9 -6
  110. package/fesm2022/smartbit4all-ng-client.mjs +338 -27
  111. package/fesm2022/smartbit4all-ng-client.mjs.map +1 -1
  112. package/lib/view-context/api/api/view.service.d.ts +37 -0
  113. package/lib/view-context/api/model/menuTriggerType.d.ts +15 -0
  114. package/lib/view-context/api/model/models.d.ts +3 -1
  115. package/lib/view-context/api/model/{shellProperties.d.ts → shellProperty.d.ts} +1 -1
  116. package/lib/view-context/api/model/themeDefinition.d.ts +3 -3
  117. package/lib/view-context/api/model/themeShellDescriptor.d.ts +17 -0
  118. package/lib/view-context/api/model/uiActionDescriptor.d.ts +2 -0
  119. package/lib/view-context/projects.d.ts +2 -1
  120. package/lib/view-context/smart-ui-action/components/menu/{menu.component.d.ts → click/menu.component.d.ts} +8 -7
  121. package/lib/view-context/smart-ui-action/components/menu/hover/hover-menu.component.d.ts +43 -0
  122. package/lib/view-context/smart-ui-action/ui-action-button/ui-action-button.component.d.ts +1 -0
  123. package/lib/view-context/smart-ui-action/ui-action-toolbar.component.d.ts +2 -1
  124. package/lib/view-context/smart-view-context.module.d.ts +56 -55
  125. package/package.json +1 -1
  126. package/smartbit4all-ng-client-4.5.44.tgz +0 -0
  127. package/esm2022/lib/view-context/api/model/shellProperties.mjs +0 -13
  128. package/esm2022/lib/view-context/smart-ui-action/components/menu/menu.component.mjs +0 -199
  129. package/smartbit4all-ng-client-4.5.43.tgz +0 -0
@@ -1,6 +1,6 @@
1
1
  import { Component, HostListener, Inject, Input, ViewChild, } from '@angular/core';
2
2
  import { interval, Subject, takeUntil } from 'rxjs';
3
- import { IconPosition, } from '../api';
3
+ import { IconPosition, MenuTriggerType, } from '../api';
4
4
  import { UiActionButtonType } from '../api/model/uiActionButtonType';
5
5
  import { UiActionDescriptorService } from './ui-action.descriptor.service';
6
6
  import { COMPONENT_LIBRARY, ComponentLibrary } from '../utility/componentLibrary';
@@ -9,9 +9,10 @@ import * as i0 from "@angular/core";
9
9
  import * as i1 from "./ui-action.service";
10
10
  import * as i2 from "@angular/common";
11
11
  import * as i3 from "./ui-action-button/ui-action-button.component";
12
- import * as i4 from "./components/menu/menu.component";
13
- import * as i5 from "./components/theme-selector/theme-selector.component";
14
- import * as i6 from "../utility/componentLibrary";
12
+ import * as i4 from "./components/menu/click/menu.component";
13
+ import * as i5 from "./components/menu/hover/hover-menu.component";
14
+ import * as i6 from "./components/theme-selector/theme-selector.component";
15
+ import * as i7 from "../utility/componentLibrary";
15
16
  export class UiActionToolbarComponent {
16
17
  constructor(service, inject, changeDetector, compLib) {
17
18
  this.service = service;
@@ -20,6 +21,7 @@ export class UiActionToolbarComponent {
20
21
  this.compLib = compLib;
21
22
  this._destroy$ = new Subject();
22
23
  this.componentLibrary = ComponentLibrary; // Expose the enum to the template
24
+ this.triggerType = MenuTriggerType;
23
25
  this.pressedButtonActive = true;
24
26
  this.scrollOnWrap = false;
25
27
  this.isScrollable = false;
@@ -292,12 +294,12 @@ export class UiActionToolbarComponent {
292
294
  return this.toolbarPropertes?.direction === ToolbarDirection.VERTICAL;
293
295
  }
294
296
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: UiActionToolbarComponent, deps: [{ token: i1.UiActionService }, { token: i0.Injector }, { token: i0.ChangeDetectorRef }, { token: COMPONENT_LIBRARY }], target: i0.ɵɵFactoryTarget.Component }); }
295
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: UiActionToolbarComponent, selector: "smart-ui-action-toolbar", inputs: { uiActionModels: "uiActionModels", uiActionDescriptorService: "uiActionDescriptorService", id: "id", scrollOnWrap: "scrollOnWrap", toolbarPropertes: "toolbarPropertes" }, host: { listeners: { "window:resize": "onResize()" } }, viewQueries: [{ propertyName: "containerRef", first: true, predicate: ["container"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "@if (isScrollable && scrollOnWrap) {\r\n <ui-action-button\r\n [disabled]=\"!isScrollable\"\r\n [descriptor]=\"buttonLeft\"\r\n (actionClick)=\"scrollLeft()\"\r\n (mousedown)=\"scrollStart('left')\"\r\n (mouseup)=\"stopScroll()\"\r\n (mouseleave)=\"stopScroll()\"\r\n (touchstart)=\"scrollStart('left')\"\r\n (touchend)=\"stopScroll()\"\r\n />\r\n}\r\n\r\n<div\r\n #container\r\n class=\"uiActionButtonsContainer\"\r\n [ngClass]=\"{\r\n scrollableContent: scrollOnWrap,\r\n verticalToolbar: isVertical,\r\n }\"\r\n>\r\n <ng-container *ngFor=\"let uiActionModel of uiActionModelsWithDescriptions; trackBy: trackByFn\">\r\n @if (uiActionModel.uiAction.code === 'themeSelector') {\r\n <theme-selector [model]=\"uiActionModel\"></theme-selector>\r\n } @else if (uiActionModel.uiAction.subActions && uiActionModel.uiAction.subActions.length > 0) {\r\n <ui-tiered-menu\r\n #menu\r\n [triggerAction]=\"uiActionModel.uiAction\"\r\n [subActions]=\"uiActionModel.uiAction.subActions!\"\r\n (actionClick)=\"onActionClicked($event, uiActionModel)\"\r\n ></ui-tiered-menu>\r\n } @else {\r\n <ui-action-button\r\n [descriptor]=\"uiActionModel.descriptor!\"\r\n [code]=\"uiActionModel.uiAction.code\"\r\n [disabled]=\"!!uiActionModel.uiAction.disabled\"\r\n [addedCssClass]=\"uiActionModel.cssClass\"\r\n (actionClick)=\"onActionClicked($event, uiActionModel)\"\r\n (actionDoubleClick)=\"onActionDoubleClicked($event, uiActionModel)\"\r\n >\r\n </ui-action-button>\r\n }\r\n </ng-container>\r\n</div>\r\n\r\n@if (isScrollable && scrollOnWrap) {\r\n <ui-action-button\r\n [disabled]=\"!isScrollable\"\r\n [descriptor]=\"buttonRight\"\r\n (actionClick)=\"scrollRight()\"\r\n (mousedown)=\"scrollStart('right')\"\r\n (mouseup)=\"stopScroll()\"\r\n (mouseleave)=\"stopScroll()\"\r\n (touchstart)=\"scrollStart('right')\"\r\n (touchend)=\"stopScroll()\"\r\n />\r\n}\r\n", styles: [":host:has(.uiActionButtonsContainer.scrollableContent){display:flex;flex-direction:row;justify-content:space-between;gap:.5rem;width:100%;align-items:center}.uiActionButtonsContainer{display:flex;flex-direction:row;gap:1rem;flex-wrap:wrap}.uiActionButtonsContainer ::ng-deep button{display:flex;gap:1rem;align-items:center;justify-content:center}.uiActionButtonsContainer ::ng-deep .buttonWrapper{position:relative;width:fit-content;height:fit-content}.scrollableContent{flex:1;flex-wrap:nowrap;overflow-x:auto;overflow-y:visible;display:flex;scrollbar-width:none;padding:.5rem 0;align-items:center}.scrollableContent::-webkit-scrollbar{display:none!important}.verticalToolbar{display:flex;flex-direction:column}.verticalToolbar ::ng-deep ui-action-button,.verticalToolbar ::ng-deep button{width:100%;justify-content:flex-start}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i3.UiActionButtonComponent, selector: "ui-action-button", inputs: ["disabled", "descriptor", "code", "addedCssClass", "addBasicClasses"], outputs: ["actionClick", "actionDoubleClick"] }, { kind: "component", type: i4.MenuComponent, selector: "ui-tiered-menu", inputs: ["triggerAction", "isSubmenu"], outputs: ["actionClick", "submenuOpened"] }, { kind: "component", type: i5.ThemeSelectorComponent, selector: "theme-selector", inputs: ["model"] }] }); }
297
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: UiActionToolbarComponent, selector: "smart-ui-action-toolbar", inputs: { uiActionModels: "uiActionModels", uiActionDescriptorService: "uiActionDescriptorService", id: "id", scrollOnWrap: "scrollOnWrap", toolbarPropertes: "toolbarPropertes" }, host: { listeners: { "window:resize": "onResize()" } }, viewQueries: [{ propertyName: "containerRef", first: true, predicate: ["container"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "@if (isScrollable && scrollOnWrap) {\r\n <ui-action-button\r\n [disabled]=\"!isScrollable\"\r\n [descriptor]=\"buttonLeft\"\r\n (actionClick)=\"scrollLeft()\"\r\n (mousedown)=\"scrollStart('left')\"\r\n (mouseup)=\"stopScroll()\"\r\n (mouseleave)=\"stopScroll()\"\r\n (touchstart)=\"scrollStart('left')\"\r\n (touchend)=\"stopScroll()\"\r\n />\r\n}\r\n\r\n<div\r\n #container\r\n class=\"uiActionButtonsContainer\"\r\n [ngClass]=\"{\r\n scrollableContent: scrollOnWrap,\r\n verticalToolbar: isVertical,\r\n }\"\r\n>\r\n <ng-container *ngFor=\"let uiActionModel of uiActionModelsWithDescriptions; trackBy: trackByFn\">\r\n @if (uiActionModel.uiAction.code === 'themeSelector') {\r\n <theme-selector [model]=\"uiActionModel\"></theme-selector>\r\n } @else if (uiActionModel.uiAction.subActions && uiActionModel.uiAction.subActions.length > 0) {\r\n <ng-container\r\n *ngTemplateOutlet=\"menuTypes; context: { uiActionModel: uiActionModel }\"\r\n ></ng-container>\r\n } @else {\r\n <ui-action-button\r\n [descriptor]=\"uiActionModel.descriptor!\"\r\n [code]=\"uiActionModel.uiAction.code\"\r\n [disabled]=\"!!uiActionModel.uiAction.disabled\"\r\n [addedCssClass]=\"uiActionModel.cssClass\"\r\n (actionClick)=\"onActionClicked($event, uiActionModel)\"\r\n (actionDoubleClick)=\"onActionDoubleClicked($event, uiActionModel)\"\r\n >\r\n </ui-action-button>\r\n }\r\n </ng-container>\r\n</div>\r\n\r\n@if (isScrollable && scrollOnWrap) {\r\n <ui-action-button\r\n [disabled]=\"!isScrollable\"\r\n [descriptor]=\"buttonRight\"\r\n (actionClick)=\"scrollRight()\"\r\n (mousedown)=\"scrollStart('right')\"\r\n (mouseup)=\"stopScroll()\"\r\n (mouseleave)=\"stopScroll()\"\r\n (touchstart)=\"scrollStart('right')\"\r\n (touchend)=\"stopScroll()\"\r\n />\r\n}\r\n\r\n<ng-template #menuTypes let-uiActionModel=\"uiActionModel\">\r\n @if (uiActionModel?.uiAction?.descriptor?.menuTriggerType == triggerType.HOVER) {\r\n <ui-hover-menu\r\n #menu\r\n [triggerAction]=\"uiActionModel.uiAction\"\r\n [subActions]=\"uiActionModel.uiAction.subActions!\"\r\n (actionClick)=\"onActionClicked($event, uiActionModel)\"\r\n ></ui-hover-menu>\r\n } @else {\r\n <ui-tiered-menu\r\n #menu\r\n [triggerAction]=\"uiActionModel.uiAction\"\r\n [subActions]=\"uiActionModel.uiAction.subActions!\"\r\n (actionClick)=\"onActionClicked($event, uiActionModel)\"\r\n ></ui-tiered-menu>\r\n }\r\n</ng-template>\r\n", styles: [":host:has(.uiActionButtonsContainer.scrollableContent){display:flex;flex-direction:row;justify-content:space-between;gap:.5rem;width:100%;align-items:center}.uiActionButtonsContainer{display:flex;flex-direction:row;gap:1rem;flex-wrap:wrap}.uiActionButtonsContainer ::ng-deep button{display:flex;gap:1rem;align-items:center;justify-content:center}.uiActionButtonsContainer ::ng-deep .buttonWrapper{position:relative;width:fit-content;height:fit-content}.scrollableContent{flex:1;flex-wrap:nowrap;overflow-x:auto;overflow-y:visible;display:flex;scrollbar-width:none;padding:.5rem 0;align-items:center}.scrollableContent::-webkit-scrollbar{display:none!important}.verticalToolbar{display:flex;flex-direction:column}.verticalToolbar ::ng-deep ui-action-button,.verticalToolbar ::ng-deep button{width:100%;justify-content:flex-start}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.UiActionButtonComponent, selector: "ui-action-button", inputs: ["disabled", "descriptor", "code", "addedCssClass", "addBasicClasses"], outputs: ["actionClick", "actionDoubleClick"] }, { kind: "component", type: i4.ClickMenuComponent, selector: "ui-tiered-menu", inputs: ["triggerAction", "isSubmenu"], outputs: ["actionClick", "submenuOpened"] }, { kind: "component", type: i5.HoverMenuComponent, selector: "ui-hover-menu", inputs: ["triggerAction", "isSubmenu"], outputs: ["actionClick", "submenuOpened"] }, { kind: "component", type: i6.ThemeSelectorComponent, selector: "theme-selector", inputs: ["model"] }] }); }
296
298
  }
297
299
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: UiActionToolbarComponent, decorators: [{
298
300
  type: Component,
299
- args: [{ selector: 'smart-ui-action-toolbar', template: "@if (isScrollable && scrollOnWrap) {\r\n <ui-action-button\r\n [disabled]=\"!isScrollable\"\r\n [descriptor]=\"buttonLeft\"\r\n (actionClick)=\"scrollLeft()\"\r\n (mousedown)=\"scrollStart('left')\"\r\n (mouseup)=\"stopScroll()\"\r\n (mouseleave)=\"stopScroll()\"\r\n (touchstart)=\"scrollStart('left')\"\r\n (touchend)=\"stopScroll()\"\r\n />\r\n}\r\n\r\n<div\r\n #container\r\n class=\"uiActionButtonsContainer\"\r\n [ngClass]=\"{\r\n scrollableContent: scrollOnWrap,\r\n verticalToolbar: isVertical,\r\n }\"\r\n>\r\n <ng-container *ngFor=\"let uiActionModel of uiActionModelsWithDescriptions; trackBy: trackByFn\">\r\n @if (uiActionModel.uiAction.code === 'themeSelector') {\r\n <theme-selector [model]=\"uiActionModel\"></theme-selector>\r\n } @else if (uiActionModel.uiAction.subActions && uiActionModel.uiAction.subActions.length > 0) {\r\n <ui-tiered-menu\r\n #menu\r\n [triggerAction]=\"uiActionModel.uiAction\"\r\n [subActions]=\"uiActionModel.uiAction.subActions!\"\r\n (actionClick)=\"onActionClicked($event, uiActionModel)\"\r\n ></ui-tiered-menu>\r\n } @else {\r\n <ui-action-button\r\n [descriptor]=\"uiActionModel.descriptor!\"\r\n [code]=\"uiActionModel.uiAction.code\"\r\n [disabled]=\"!!uiActionModel.uiAction.disabled\"\r\n [addedCssClass]=\"uiActionModel.cssClass\"\r\n (actionClick)=\"onActionClicked($event, uiActionModel)\"\r\n (actionDoubleClick)=\"onActionDoubleClicked($event, uiActionModel)\"\r\n >\r\n </ui-action-button>\r\n }\r\n </ng-container>\r\n</div>\r\n\r\n@if (isScrollable && scrollOnWrap) {\r\n <ui-action-button\r\n [disabled]=\"!isScrollable\"\r\n [descriptor]=\"buttonRight\"\r\n (actionClick)=\"scrollRight()\"\r\n (mousedown)=\"scrollStart('right')\"\r\n (mouseup)=\"stopScroll()\"\r\n (mouseleave)=\"stopScroll()\"\r\n (touchstart)=\"scrollStart('right')\"\r\n (touchend)=\"stopScroll()\"\r\n />\r\n}\r\n", styles: [":host:has(.uiActionButtonsContainer.scrollableContent){display:flex;flex-direction:row;justify-content:space-between;gap:.5rem;width:100%;align-items:center}.uiActionButtonsContainer{display:flex;flex-direction:row;gap:1rem;flex-wrap:wrap}.uiActionButtonsContainer ::ng-deep button{display:flex;gap:1rem;align-items:center;justify-content:center}.uiActionButtonsContainer ::ng-deep .buttonWrapper{position:relative;width:fit-content;height:fit-content}.scrollableContent{flex:1;flex-wrap:nowrap;overflow-x:auto;overflow-y:visible;display:flex;scrollbar-width:none;padding:.5rem 0;align-items:center}.scrollableContent::-webkit-scrollbar{display:none!important}.verticalToolbar{display:flex;flex-direction:column}.verticalToolbar ::ng-deep ui-action-button,.verticalToolbar ::ng-deep button{width:100%;justify-content:flex-start}\n"] }]
300
- }], ctorParameters: () => [{ type: i1.UiActionService }, { type: i0.Injector }, { type: i0.ChangeDetectorRef }, { type: i6.ComponentLibrary, decorators: [{
301
+ args: [{ selector: 'smart-ui-action-toolbar', template: "@if (isScrollable && scrollOnWrap) {\r\n <ui-action-button\r\n [disabled]=\"!isScrollable\"\r\n [descriptor]=\"buttonLeft\"\r\n (actionClick)=\"scrollLeft()\"\r\n (mousedown)=\"scrollStart('left')\"\r\n (mouseup)=\"stopScroll()\"\r\n (mouseleave)=\"stopScroll()\"\r\n (touchstart)=\"scrollStart('left')\"\r\n (touchend)=\"stopScroll()\"\r\n />\r\n}\r\n\r\n<div\r\n #container\r\n class=\"uiActionButtonsContainer\"\r\n [ngClass]=\"{\r\n scrollableContent: scrollOnWrap,\r\n verticalToolbar: isVertical,\r\n }\"\r\n>\r\n <ng-container *ngFor=\"let uiActionModel of uiActionModelsWithDescriptions; trackBy: trackByFn\">\r\n @if (uiActionModel.uiAction.code === 'themeSelector') {\r\n <theme-selector [model]=\"uiActionModel\"></theme-selector>\r\n } @else if (uiActionModel.uiAction.subActions && uiActionModel.uiAction.subActions.length > 0) {\r\n <ng-container\r\n *ngTemplateOutlet=\"menuTypes; context: { uiActionModel: uiActionModel }\"\r\n ></ng-container>\r\n } @else {\r\n <ui-action-button\r\n [descriptor]=\"uiActionModel.descriptor!\"\r\n [code]=\"uiActionModel.uiAction.code\"\r\n [disabled]=\"!!uiActionModel.uiAction.disabled\"\r\n [addedCssClass]=\"uiActionModel.cssClass\"\r\n (actionClick)=\"onActionClicked($event, uiActionModel)\"\r\n (actionDoubleClick)=\"onActionDoubleClicked($event, uiActionModel)\"\r\n >\r\n </ui-action-button>\r\n }\r\n </ng-container>\r\n</div>\r\n\r\n@if (isScrollable && scrollOnWrap) {\r\n <ui-action-button\r\n [disabled]=\"!isScrollable\"\r\n [descriptor]=\"buttonRight\"\r\n (actionClick)=\"scrollRight()\"\r\n (mousedown)=\"scrollStart('right')\"\r\n (mouseup)=\"stopScroll()\"\r\n (mouseleave)=\"stopScroll()\"\r\n (touchstart)=\"scrollStart('right')\"\r\n (touchend)=\"stopScroll()\"\r\n />\r\n}\r\n\r\n<ng-template #menuTypes let-uiActionModel=\"uiActionModel\">\r\n @if (uiActionModel?.uiAction?.descriptor?.menuTriggerType == triggerType.HOVER) {\r\n <ui-hover-menu\r\n #menu\r\n [triggerAction]=\"uiActionModel.uiAction\"\r\n [subActions]=\"uiActionModel.uiAction.subActions!\"\r\n (actionClick)=\"onActionClicked($event, uiActionModel)\"\r\n ></ui-hover-menu>\r\n } @else {\r\n <ui-tiered-menu\r\n #menu\r\n [triggerAction]=\"uiActionModel.uiAction\"\r\n [subActions]=\"uiActionModel.uiAction.subActions!\"\r\n (actionClick)=\"onActionClicked($event, uiActionModel)\"\r\n ></ui-tiered-menu>\r\n }\r\n</ng-template>\r\n", styles: [":host:has(.uiActionButtonsContainer.scrollableContent){display:flex;flex-direction:row;justify-content:space-between;gap:.5rem;width:100%;align-items:center}.uiActionButtonsContainer{display:flex;flex-direction:row;gap:1rem;flex-wrap:wrap}.uiActionButtonsContainer ::ng-deep button{display:flex;gap:1rem;align-items:center;justify-content:center}.uiActionButtonsContainer ::ng-deep .buttonWrapper{position:relative;width:fit-content;height:fit-content}.scrollableContent{flex:1;flex-wrap:nowrap;overflow-x:auto;overflow-y:visible;display:flex;scrollbar-width:none;padding:.5rem 0;align-items:center}.scrollableContent::-webkit-scrollbar{display:none!important}.verticalToolbar{display:flex;flex-direction:column}.verticalToolbar ::ng-deep ui-action-button,.verticalToolbar ::ng-deep button{width:100%;justify-content:flex-start}\n"] }]
302
+ }], ctorParameters: () => [{ type: i1.UiActionService }, { type: i0.Injector }, { type: i0.ChangeDetectorRef }, { type: i7.ComponentLibrary, decorators: [{
301
303
  type: Inject,
302
304
  args: [COMPONENT_LIBRARY]
303
305
  }] }], propDecorators: { containerRef: [{
@@ -317,4 +319,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
317
319
  type: HostListener,
318
320
  args: ['window:resize']
319
321
  }] } });
320
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktYWN0aW9uLXRvb2xiYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvdmlldy1jb250ZXh0L3NtYXJ0LXVpLWFjdGlvbi91aS1hY3Rpb24tdG9vbGJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi92aWV3LWNvbnRleHQvc21hcnQtdWktYWN0aW9uL3VpLWFjdGlvbi10b29sYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBRVQsWUFBWSxFQUNaLE1BQU0sRUFFTixLQUFLLEVBS0wsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFnQixTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEUsT0FBTyxFQUNMLFlBQVksR0FJYixNQUFNLFFBQVEsQ0FBQztBQUNoQixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUczRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNsRixPQUFPLEVBQUUsZ0JBQWdCLEVBQXFCLE1BQU0sa0NBQWtDLENBQUM7Ozs7Ozs7O0FBT3ZGLE1BQU0sT0FBTyx3QkFBd0I7SUE4Qm5DLFlBQ1UsT0FBd0IsRUFDeEIsTUFBZ0IsRUFDakIsY0FBaUMsRUFDTixPQUF5QjtRQUhuRCxZQUFPLEdBQVAsT0FBTyxDQUFpQjtRQUN4QixXQUFNLEdBQU4sTUFBTSxDQUFVO1FBQ2pCLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNOLFlBQU8sR0FBUCxPQUFPLENBQWtCO1FB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LGdCQUFnQjtzQkFBeEIsS0FBSztnQkFrRHlCLFFBQVE7c0JBQXRDLFlBQVk7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIEluamVjdCxcclxuICBJbmplY3RvcixcclxuICBJbnB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVG9vbHRpcFBvc2l0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XHJcbmltcG9ydCB7IGludGVydmFsLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge1xyXG4gIEljb25Qb3NpdGlvbixcclxuICBVaUFjdGlvbixcclxuICBVaUFjdGlvbkRlc2NyaXB0b3IsXHJcbiAgVWlBY3Rpb25Ub29sdGlwVG9vbHRpcFBvc2l0aW9uRW51bSxcclxufSBmcm9tICcuLi9hcGknO1xyXG5pbXBvcnQgeyBVaUFjdGlvbkJ1dHRvblR5cGUgfSBmcm9tICcuLi9hcGkvbW9kZWwvdWlBY3Rpb25CdXR0b25UeXBlJztcclxuaW1wb3J0IHsgVWlBY3Rpb25EZXNjcmlwdG9yU2VydmljZSB9IGZyb20gJy4vdWktYWN0aW9uLmRlc2NyaXB0b3Iuc2VydmljZSc7XHJcbmltcG9ydCB7IFVpQWN0aW9uTW9kZWwgfSBmcm9tICcuL3VpLWFjdGlvbi5tb2RlbCc7XHJcbmltcG9ydCB7IFVpQWN0aW9uU2VydmljZSB9IGZyb20gJy4vdWktYWN0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDT01QT05FTlRfTElCUkFSWSwgQ29tcG9uZW50TGlicmFyeSB9IGZyb20gJy4uL3V0aWxpdHkvY29tcG9uZW50TGlicmFyeSc7XHJcbmltcG9ydCB7IFRvb2xiYXJEaXJlY3Rpb24sIFRvb2xiYXJQcm9wZXJ0aWVzIH0gZnJvbSAnLi4vLi4vc21hcnQtY29tcG9uZW50LWxheW91dC9hcGknO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzbWFydC11aS1hY3Rpb24tdG9vbGJhcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3VpLWFjdGlvbi10b29sYmFyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi91aS1hY3Rpb24tdG9vbGJhci5jb21wb25lbnQuY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBVaUFjdGlvblRvb2xiYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuICBAVmlld0NoaWxkKCdjb250YWluZXInLCB7IHN0YXRpYzogZmFsc2UgfSkgY29udGFpbmVyUmVmITogRWxlbWVudFJlZjtcclxuXHJcbiAgcHJpdmF0ZSBfZGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICBjb21wb25lbnRMaWJyYXJ5ID0gQ29tcG9uZW50TGlicmFyeTsgLy8gRXhwb3NlIHRoZSBlbnVtIHRvIHRoZSB0ZW1wbGF0ZVxyXG5cclxuICBwcmVzc2VkQnV0dG9uQWN0aXZlOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KCkgdWlBY3Rpb25Nb2RlbHM/OiBVaUFjdGlvbk1vZGVsW107XHJcbiAgQElucHV0KCkgdWlBY3Rpb25EZXNjcmlwdG9yU2VydmljZT86IFVpQWN0aW9uRGVzY3JpcHRvclNlcnZpY2U7XHJcbiAgQElucHV0KCkgaWQ/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgc2Nyb2xsT25XcmFwOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgdG9vbGJhclByb3BlcnRlcz86IFRvb2xiYXJQcm9wZXJ0aWVzO1xyXG5cclxuICB1aUFjdGlvbk1vZGVsc1dpdGhEZXNjcmlwdGlvbnM/OiBVaUFjdGlvbk1vZGVsW107XHJcblxyXG4gIHByaXZhdGUgbWFuYWdlciE6IFVpQWN0aW9uRGVzY3JpcHRvclNlcnZpY2U7XHJcbiAgcHJpdmF0ZSBsYW5ndWFnZUNoYW5nZWRTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XHJcblxyXG4gIGlzU2Nyb2xsYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIHNjcm9sbEludGVydmFsOiBhbnk7XHJcbiAgcHJpdmF0ZSBzY3JvbGxUaW1lb3V0OiBhbnk7XHJcbiAgcHJpdmF0ZSBzY3JvbGxTcGVlZDogbnVtYmVyID0gNTtcclxuICBwcml2YXRlIHNjcm9sbERlbGF5OiBudW1iZXIgPSAxNjtcclxuICBwcml2YXRlIHNjcm9sbEhvbGREZWxheTogbnVtYmVyID0gMTAwO1xyXG5cclxuICBwcml2YXRlIHNjaGVkdWxlcyA9IG5ldyBNYXA8c3RyaW5nLCBTdWJzY3JpcHRpb24+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBzZXJ2aWNlOiBVaUFjdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGluamVjdDogSW5qZWN0b3IsXHJcbiAgICBwdWJsaWMgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgQEluamVjdChDT01QT05FTlRfTElCUkFSWSkgcHVibGljIGNvbXBMaWI6IENvbXBvbmVudExpYnJhcnlcclxuICApIHtcclxuICAgIC8vIEluamVjdHMgdGhlIGJhc2ljIFVpQWN0aW9uRGVzY3JpcHRvclNlcnZpY2UgcHJvdmlkZWQgYnkgdGhlIEFwcE1vZHVsZVxyXG4gICAgdGhpcy5tYW5hZ2VyID0gaW5qZWN0LmdldChVaUFjdGlvbkRlc2NyaXB0b3JTZXJ2aWNlKTtcclxuXHJcbiAgICB0aGlzLnN1YnNjcmliZVRvTGFuZ3VhZ2VDaGFuZ2UoKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgLy8gT3ZlcnJpZGVzIHRoZSBiYXNpYyBVaUFjdGlvbkRlc2NyaXB0b3JTZXJ2aWNlIHdpdGggYSBjdXN0b20gb25lIGlmIHRoZXJlIGlzIG9uZVxyXG4gICAgaWYgKHRoaXMudWlBY3Rpb25EZXNjcmlwdG9yU2VydmljZSkge1xyXG4gICAgICB0aGlzLm1hbmFnZXIgPSB0aGlzLnVpQWN0aW9uRGVzY3JpcHRvclNlcnZpY2U7XHJcbiAgICAgIHRoaXMuc3Vic2NyaWJlVG9MYW5ndWFnZUNoYW5nZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMudG9vbGJhclByb3BlcnRlcykge1xyXG4gICAgICB0aGlzLnNjcm9sbE9uV3JhcCA9IHRoaXMudG9vbGJhclByb3BlcnRlcy5zY3JvbGxhYmxlID8/IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2V0VXAoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIGlmICh0aGlzLnNjcm9sbE9uV3JhcCkge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLmNoZWNrU2Nyb2xsYWJsZSgpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnKSBvblJlc2l6ZSgpIHtcclxuICAgIGlmICh0aGlzLnNjcm9sbE9uV3JhcCkge1xyXG4gICAgICB0aGlzLmNoZWNrU2Nyb2xsYWJsZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXNbJ3VpQWN0aW9uTW9kZWxzJ10pIHtcclxuICAgICAgbGV0IHVpQWN0aW9uTW9kZWxzID0gY2hhbmdlc1sndWlBY3Rpb25Nb2RlbHMnXS5jdXJyZW50VmFsdWU7XHJcbiAgICAgIGlmICh1aUFjdGlvbk1vZGVscykge1xyXG4gICAgICAgIHRoaXMudWlBY3Rpb25Nb2RlbHMgPSB1aUFjdGlvbk1vZGVscztcclxuXHJcbiAgICAgICAgdGhpcy5zZXRVcCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuY2xlYXJTY2hlZHVsZSgpO1xyXG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3Vic2NyaWJlVG9MYW5ndWFnZUNoYW5nZSgpOiB2b2lkIHtcclxuICAgIHRoaXMubGFuZ3VhZ2VDaGFuZ2VkU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xyXG5cclxuICAgIHRoaXMubGFuZ3VhZ2VDaGFuZ2VkU3Vic2NyaXB0aW9uID0gdGhpcy5tYW5hZ2VyLmxhbmd1YWdlQ2hhbmdlZFxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLnNldFVwKCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgc2V0VXAoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAodGhpcy51aUFjdGlvbk1vZGVscykge1xyXG4gICAgICBsZXQgdWlBY3Rpb25Nb2RlbHNXaXRoRGVzY3JpcHRpb25zID0gW107XHJcbiAgICAgIGZvciAoY29uc3QgdWlBY3Rpb25Nb2RlbCBvZiB0aGlzLnVpQWN0aW9uTW9kZWxzKSB7XHJcbiAgICAgICAgY29uc3QgdWlBY3Rpb24gPSB1aUFjdGlvbk1vZGVsLnVpQWN0aW9uO1xyXG5cclxuICAgICAgICAvLyB1c2luZyBlcXVhbGl0eSBpcyBhIG11c3QgaGVyZSwgdW5kZWZpbmVkIGFuZCBudWxsIHNob3VsZCBiZSBlcXVhbFxyXG4gICAgICAgIGlmICh0aGlzLmlkID09IHVpQWN0aW9uLnRvb2xiYXIpIHtcclxuICAgICAgICAgIHVpQWN0aW9uTW9kZWwuZGVzY3JpcHRvciA9IGF3YWl0IHRoaXMubWFuYWdlci5nZXRBY3Rpb25EZXNjcmlwdG9yKHVpQWN0aW9uTW9kZWwudWlBY3Rpb24pO1xyXG4gICAgICAgICAgdWlBY3Rpb25Nb2RlbHNXaXRoRGVzY3JpcHRpb25zLnB1c2godWlBY3Rpb25Nb2RlbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc2NoZWR1bGVBY3Rpb25zKHRoaXMudWlBY3Rpb25Nb2RlbHMpO1xyXG4gICAgICB0aGlzLnVpQWN0aW9uTW9kZWxzV2l0aERlc2NyaXB0aW9ucyA9IHVpQWN0aW9uTW9kZWxzV2l0aERlc2NyaXB0aW9ucztcclxuXHJcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmNoZWNrU2Nyb2xsYWJsZSgpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsZWFyU2NoZWR1bGUoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNjaGVkdWxlcy5mb3JFYWNoKChzdWIpID0+IHN1Yi51bnN1YnNjcmliZSgpKTtcclxuICAgIHRoaXMuc2NoZWR1bGVzLmNsZWFyKCk7XHJcbiAgfVxyXG5cclxuICBzY2hlZHVsZUFjdGlvbnModWlBY3Rpb25Nb2RlbHM6IFVpQWN0aW9uTW9kZWxbXSkge1xyXG4gICAgdGhpcy5jbGVhclNjaGVkdWxlKCk7XHJcblxyXG4gICAgdWlBY3Rpb25Nb2RlbHMuZm9yRWFjaCgodWlBY3Rpb25Nb2RlbDogVWlBY3Rpb25Nb2RlbCkgPT4ge1xyXG4gICAgICBsZXQgdWlBY3Rpb24gPSB1aUFjdGlvbk1vZGVsLnVpQWN0aW9uO1xyXG5cclxuICAgICAgaWYgKFxyXG4gICAgICAgICF1aUFjdGlvbi5jb2RlIHx8XHJcbiAgICAgICAgdWlBY3Rpb24uZGlzYWJsZWQgfHxcclxuICAgICAgICAhdWlBY3Rpb24uc2NoZWR1bGU/LmludGVydmFsU2Vjb25kcyB8fFxyXG4gICAgICAgIHRoaXMuc2NoZWR1bGVzLmhhcyh1aUFjdGlvbi5jb2RlKSB8fFxyXG4gICAgICAgIHVpQWN0aW9uLnN1YkFjdGlvbnM/Lmxlbmd0aFxyXG4gICAgICApIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGxldCBpbnRlcnZhbEluTXMgPSB1aUFjdGlvbi5zY2hlZHVsZS5pbnRlcnZhbFNlY29uZHMgKiAxMDAwO1xyXG4gICAgICBsZXQgc3ViID0gaW50ZXJ2YWwoaW50ZXJ2YWxJbk1zKVxyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpXHJcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICB1aUFjdGlvbk1vZGVsLnVpQWN0aW9uIS5wYXJhbXMgPSB7XHJcbiAgICAgICAgICAgIC4uLnVpQWN0aW9uTW9kZWwudWlBY3Rpb24hLnBhcmFtcyxcclxuICAgICAgICAgICAgc2NoZWR1bGVkOiB0cnVlLFxyXG4gICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICB0aGlzLmZpcmVBY3Rpb24odWlBY3Rpb25Nb2RlbCk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICB0aGlzLnNjaGVkdWxlcy5zZXQodWlBY3Rpb24uY29kZSwgc3ViKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdHJhY2tCeUZuKGlkeDogbnVtYmVyLCBtOiBVaUFjdGlvbk1vZGVsKTogc3RyaW5nIHwgbnVtYmVyIHtcclxuICAgIHJldHVybiBtLnVpQWN0aW9uLmNvZGUgPz8gaWR4O1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZmlyZUFjdGlvbih1aUFjdGlvbk1vZGVsOiBVaUFjdGlvbk1vZGVsKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAodWlBY3Rpb25Nb2RlbC51aUFjdGlvbi5kaXNhYmxlZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IG9wdGlvbnMgPSB7XHJcbiAgICAgIG5vZGVJZDogdWlBY3Rpb25Nb2RlbC5ub2RlSWQsXHJcbiAgICAgIHdpZGdldElkOiB1aUFjdGlvbk1vZGVsLndpZGdldElkLFxyXG4gICAgfTtcclxuXHJcbiAgICBhd2FpdCB0aGlzLnNlcnZpY2UuZXhlY3V0ZSh1aUFjdGlvbk1vZGVsLnVpQWN0aW9uLCB1aUFjdGlvbk1vZGVsLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIG9uQWN0aW9uQ2xpY2tlZChldmVudDogYW55LCB1aUFjdGlvbk1vZGVsOiBVaUFjdGlvbk1vZGVsKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAvLyBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcbiAgICBpZiAodWlBY3Rpb25Nb2RlbC51aUFjdGlvbi5kaXNhYmxlZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMucHJlc3NlZEJ1dHRvbkFjdGl2ZSkge1xyXG4gICAgICB0aGlzLnByZXNzZWRCdXR0b25BY3RpdmUgPSBmYWxzZTtcclxuXHJcbiAgICAgIC8vIHVpLXRpZXJlZC1tZW51IGVtaXRzIGEgZnVsbCBVaUFjdGlvbiAobm8gJ2V2ZW50JyBwcm9wZXJ0eSksXHJcbiAgICAgIC8vIHVpLWFjdGlvbi1idXR0b24gZW1pdHMgeyBldmVudDogTW91c2VFdmVudCwgY29kZSwgZGVzY3JpcHRvciB9LlxyXG4gICAgICAvLyBVc2UgdGhlIGVtaXR0ZWQgVWlBY3Rpb24gb25seSBmb3IgdGllcmVkLW1lbnUgc3ViLWFjdGlvbnMuXHJcbiAgICAgIGxldCBhY3Rpb25Ub0V4ZWN1dGU6IFVpQWN0aW9uTW9kZWwgPSB7XHJcbiAgICAgICAgLi4udWlBY3Rpb25Nb2RlbCxcclxuICAgICAgICB1aUFjdGlvbjogIWV2ZW50LmV2ZW50ICYmIGV2ZW50LmNvZGUgPyBldmVudCA6IHVpQWN0aW9uTW9kZWwudWlBY3Rpb24sXHJcbiAgICAgIH07XHJcblxyXG4gICAgICBhd2FpdCB0aGlzLmZpcmVBY3Rpb24oYWN0aW9uVG9FeGVjdXRlKTtcclxuXHJcbiAgICAgIHRoaXMucHJlc3NlZEJ1dHRvbkFjdGl2ZSA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkFjdGlvbkRvdWJsZUNsaWNrZWQoZXZlbnQ6IGFueSwgdWlBY3Rpb25Nb2RlbDogVWlBY3Rpb25Nb2RlbCk6IHZvaWQge1xyXG4gICAgLy8gZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAvLyBXZSBkbyBub3QgaGFuZGxlIGRvdWJsZSBjbGlja3NcclxuICB9XHJcbiAgZ2V0YnRuQ2xhc3ModWlBY3Rpb25Nb2RlbDogVWlBY3Rpb25Nb2RlbCk6IHN0cmluZyB7XHJcbiAgICBpZiAodWlBY3Rpb25Nb2RlbC5kZXNjcmlwdG9yPy5jb2xvcikge1xyXG4gICAgICByZXR1cm4gJ3AtYnV0dG9uLScgKyB1aUFjdGlvbk1vZGVsLmRlc2NyaXB0b3I/LmNvbG9yO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxuICBnZXRUeXBlKHVpQWN0aW9uTW9kZWw6IFVpQWN0aW9uTW9kZWwpOiBhbnkge1xyXG4gICAgaWYgKCF1aUFjdGlvbk1vZGVsLmRlc2NyaXB0b3I/LnR5cGUpIHtcclxuICAgICAgLy8gY29uc29sZS5sb2coYEFjdGlvbiBidXR0b24gdHlwZSB1bnNldDogJHt1aUFjdGlvbk1vZGVsPy51aUFjdGlvbj8uY29kZX1gKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmNvbXBMaWIgPT09IENvbXBvbmVudExpYnJhcnkuUFJJTUVORykge1xyXG4gICAgICAvLyByZXR1cm4gJyc7XHJcblxyXG4gICAgICAvLyAncC1idXR0b24tdGV4dCc6IHRydWUsXHJcbiAgICAgIC8qICAgJ3AtYnV0dG9uLXJhaXNlZCc6IHRydWUsXHJcbiAgICAgICAgJ3AtYnV0dG9uLXJvdW5kZWQnOiB0cnVlLFxyXG4gICAgICAgICdwLWJ1dHRvbi1vdXRsaW5lZCc6IHRydWUsXHJcbiAgKi9cclxuICAgICAgc3dpdGNoICh1aUFjdGlvbk1vZGVsLmRlc2NyaXB0b3I/LnR5cGUpIHtcclxuICAgICAgICBjYXNlIFVpQWN0aW9uQnV0dG9uVHlwZS5OT1JNQUw6XHJcbiAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAncC1idXR0b24tdGV4dCc6IHRydWUsXHJcbiAgICAgICAgICAgICdwLWJ1dHRvbi1yb3VuZGVkJzogdHJ1ZSxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgY2FzZSBVaUFjdGlvbkJ1dHRvblR5cGUuRkxBVDpcclxuICAgICAgICAgIHJldHVybiB7ICdwLWJ1dHRvbi1yYWlzZWQnOiB0cnVlLCAncC1idXR0b24tcm91bmRlZCc6IHRydWUgfTtcclxuICAgICAgICBjYXNlIFVpQWN0aW9uQnV0dG9uVHlwZS5SQUlTRUQ6XHJcbiAgICAgICAgICByZXR1cm4geyAncC1idXR0b24tcmFpc2VkJzogdHJ1ZSwgJ3AtYnV0dG9uLXJvdW5kZWQnOiB0cnVlIH07XHJcbiAgICAgICAgY2FzZSBVaUFjdGlvbkJ1dHRvblR5cGUuU1RST0tFRDpcclxuICAgICAgICAgIHJldHVybiB7ICdwLWJ1dHRvbi1vdXRsaW5lZCc6IHRydWUsICdwLWJ1dHRvbi1yb3VuZGVkJzogdHJ1ZSB9O1xyXG4gICAgICAgIGNhc2UgVWlBY3Rpb25CdXR0b25UeXBlLk1JTklfRkFCOlxyXG4gICAgICAgICAgcmV0dXJuIHsgJ3AtYnV0dG9uLXJvdW5kZWQnOiB0cnVlLCAncC1idXR0b24tdGV4dCc6IHRydWUsICdwLWJ1dHRvbi1yYWlzZWQnOiB0cnVlIH07XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICdwLWJ1dHRvbi10ZXh0JzogdHJ1ZSxcclxuICAgICAgICAgICAgJ3AtYnV0dG9uLXJhaXNlZCc6IHRydWUsXHJcbiAgICAgICAgICAgICdwLWJ1dHRvbi1yb3VuZGVkJzogdHJ1ZSxcclxuICAgICAgICAgICAgJ3AtYnV0dG9uLW91dGxpbmVkJzogdHJ1ZSxcclxuICAgICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHN3aXRjaCAodWlBY3Rpb25Nb2RlbC5kZXNjcmlwdG9yPy50eXBlKSB7XHJcbiAgICAgICAgY2FzZSBVaUFjdGlvbkJ1dHRvblR5cGUuTk9STUFMOlxyXG4gICAgICAgICAgcmV0dXJuICdtYXQtbWRjLWJ1dHRvbic7XHJcbiAgICAgICAgY2FzZSBVaUFjdGlvbkJ1dHRvblR5cGUuRkxBVDpcclxuICAgICAgICAgIHJldHVybiAnbWF0LW1kYy1mbGF0LWJ1dHRvbic7XHJcbiAgICAgICAgY2FzZSBVaUFjdGlvbkJ1dHRvblR5cGUuUkFJU0VEOlxyXG4gICAgICAgICAgcmV0dXJuICdtYXQtbWRjLXJhaXNlZC1idXR0b24nO1xyXG4gICAgICAgIGNhc2UgVWlBY3Rpb25CdXR0b25UeXBlLlNUUk9LRUQ6XHJcbiAgICAgICAgICByZXR1cm4gJ21hdC1tZGMtc3Ryb2tlZC1idXR0b24nO1xyXG4gICAgICAgIGNhc2UgVWlBY3Rpb25CdXR0b25UeXBlLklDT046XHJcbiAgICAgICAgICByZXR1cm4gJ21hdC1tZGMtaWNvbi1idXR0b24nO1xyXG4gICAgICAgIGNhc2UgVWlBY3Rpb25CdXR0b25UeXBlLk1JTklfRkFCOlxyXG4gICAgICAgICAgcmV0dXJuICdtYXQtbWRjLW1pbmktZmFiJztcclxuICAgICAgICBjYXNlIFVpQWN0aW9uQnV0dG9uVHlwZS5GQUI6XHJcbiAgICAgICAgICByZXR1cm4gJ21hdC1tZGMtZmFiJztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgLy8gY29uc29sZS5sb2coYFVuaGFuZGxlZCBhY3Rpb24gYnV0dG9uIHR5cGUgY2FzZTogJHt1aUFjdGlvbk1vZGVsLmRlc2NyaXB0b3I/LnR5cGV9YCk7XHJcbiAgICAgICAgICByZXR1cm4gYG1hdC1idXR0b25gO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpY29uUG9zaXRpb24oKTogdHlwZW9mIEljb25Qb3NpdGlvbiB7XHJcbiAgICByZXR1cm4gSWNvblBvc2l0aW9uO1xyXG4gIH1cclxuXHJcbiAgaXNPbmx5SWNvbih1aUFjdGlvbk1vZGVsOiBVaUFjdGlvbk1vZGVsKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICB1aUFjdGlvbk1vZGVsLmRlc2NyaXB0b3I/LnR5cGUgPT09IFVpQWN0aW9uQnV0dG9uVHlwZS5JQ09OIHx8XHJcbiAgICAgIHVpQWN0aW9uTW9kZWwuZGVzY3JpcHRvcj8udHlwZSA9PT0gVWlBY3Rpb25CdXR0b25UeXBlLk1JTklfRkFCIHx8XHJcbiAgICAgIHVpQWN0aW9uTW9kZWwuZGVzY3JpcHRvcj8udHlwZSA9PT0gVWlBY3Rpb25CdXR0b25UeXBlLkZBQlxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFRvb2x0aXBQb3MocG9zPzogVWlBY3Rpb25Ub29sdGlwVG9vbHRpcFBvc2l0aW9uRW51bSk6IFRvb2x0aXBQb3NpdGlvbiB7XHJcbiAgICBpZiAocG9zKSB7XHJcbiAgICAgIHJldHVybiBwb3MudG9Mb3dlckNhc2UoKSBhcyBUb29sdGlwUG9zaXRpb247XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gJ2JlZm9yZSc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRUb29sdGlwRGVsYXkoZGVsYXk/OiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIGRlbGF5ID8gZGVsYXkgOiAxMDAwO1xyXG4gIH1cclxuXHJcbiAgZ2V0VG9vbHRpcEhpZGVEZWxheShkZWxheT86IG51bWJlcik6IG51bWJlciB7XHJcbiAgICByZXR1cm4gZGVsYXkgPyBkZWxheSA6IDIwMDA7XHJcbiAgfVxyXG5cclxuICBjaGVja1Njcm9sbGFibGUoKSB7XHJcbiAgICBpZiAoIXRoaXMuc2Nyb2xsT25XcmFwKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzY3JvbGxhYmxlID0gdGhpcy5jb250YWluZXJSZWY/Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICBpZiAoc2Nyb2xsYWJsZSkge1xyXG4gICAgICB0aGlzLmlzU2Nyb2xsYWJsZSA9IHNjcm9sbGFibGUuc2Nyb2xsV2lkdGggPiBzY3JvbGxhYmxlLmNsaWVudFdpZHRoO1xyXG4gICAgfVxyXG4gIH1cclxuICBzY3JvbGxMZWZ0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jb250YWluZXJSZWYubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0IC09IDEwMDtcclxuICB9XHJcblxyXG4gIHNjcm9sbFJpZ2h0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jb250YWluZXJSZWYubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ICs9IDEwMDtcclxuICB9XHJcblxyXG4gIHNjcm9sbFN0YXJ0KGRpcmVjdGlvbjogJ2xlZnQnIHwgJ3JpZ2h0Jyk6IHZvaWQge1xyXG4gICAgdGhpcy5zY3JvbGxUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGRlbHRhID0gZGlyZWN0aW9uID09PSAnbGVmdCcgPyAtdGhpcy5zY3JvbGxTcGVlZCA6IHRoaXMuc2Nyb2xsU3BlZWQ7XHJcblxyXG4gICAgICB0aGlzLnNjcm9sbEludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY29udGFpbmVyUmVmLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCArPSBkZWx0YTtcclxuICAgICAgfSwgdGhpcy5zY3JvbGxEZWxheSk7XHJcbiAgICB9LCB0aGlzLnNjcm9sbEhvbGREZWxheSk7XHJcbiAgfVxyXG5cclxuICBzdG9wU2Nyb2xsKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc2Nyb2xsVGltZW91dCkge1xyXG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5zY3JvbGxUaW1lb3V0KTtcclxuICAgICAgdGhpcy5zY3JvbGxUaW1lb3V0ID0gbnVsbDtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnNjcm9sbEludGVydmFsKSB7XHJcbiAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5zY3JvbGxJbnRlcnZhbCk7XHJcbiAgICAgIHRoaXMuc2Nyb2xsSW50ZXJ2YWwgPSBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYnV0dG9uTGVmdDogVWlBY3Rpb25EZXNjcmlwdG9yID0ge1xyXG4gICAgdGl0bGU6ICcnLFxyXG4gICAgY29sb3I6ICdwcmltYXJ5JyxcclxuICAgIHR5cGU6IFVpQWN0aW9uQnV0dG9uVHlwZS5SQUlTRUQsXHJcbiAgICBpY29uOiB0aGlzLmNvbXBMaWIgPT09IENvbXBvbmVudExpYnJhcnkuUFJJTUVORyA/ICdjaGV2cm9uLWxlZnQnIDogJ2Fycm93X2JhY2snLFxyXG4gICAgaWNvblBvc2l0aW9uOiBJY29uUG9zaXRpb24uUFJFLFxyXG4gIH07XHJcblxyXG4gIGJ1dHRvblJpZ2h0OiBVaUFjdGlvbkRlc2NyaXB0b3IgPSB7XHJcbiAgICB0aXRsZTogJycsXHJcbiAgICBjb2xvcjogJ3ByaW1hcnknLFxyXG4gICAgdHlwZTogVWlBY3Rpb25CdXR0b25UeXBlLlJBSVNFRCxcclxuICAgIGljb246IHRoaXMuY29tcExpYiA9PT0gQ29tcG9uZW50TGlicmFyeS5QUklNRU5HID8gJ2NoZXZyb24tcmlnaHQnIDogJ2Fycm93X2ZvcndhcmQnLFxyXG4gICAgaWNvblBvc2l0aW9uOiBJY29uUG9zaXRpb24uUFJFLFxyXG4gIH07XHJcblxyXG4gIGdldCBpc1ZlcnRpY2FsKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMudG9vbGJhclByb3BlcnRlcz8uZGlyZWN0aW9uID09PSBUb29sYmFyRGlyZWN0aW9uLlZFUlRJQ0FMO1xyXG4gIH1cclxufVxyXG4iLCJAaWYgKGlzU2Nyb2xsYWJsZSAmJiBzY3JvbGxPbldyYXApIHtcclxuICA8dWktYWN0aW9uLWJ1dHRvblxyXG4gICAgW2Rpc2FibGVkXT1cIiFpc1Njcm9sbGFibGVcIlxyXG4gICAgW2Rlc2NyaXB0b3JdPVwiYnV0dG9uTGVmdFwiXHJcbiAgICAoYWN0aW9uQ2xpY2spPVwic2Nyb2xsTGVmdCgpXCJcclxuICAgIChtb3VzZWRvd24pPVwic2Nyb2xsU3RhcnQoJ2xlZnQnKVwiXHJcbiAgICAobW91c2V1cCk9XCJzdG9wU2Nyb2xsKClcIlxyXG4gICAgKG1vdXNlbGVhdmUpPVwic3RvcFNjcm9sbCgpXCJcclxuICAgICh0b3VjaHN0YXJ0KT1cInNjcm9sbFN0YXJ0KCdsZWZ0JylcIlxyXG4gICAgKHRvdWNoZW5kKT1cInN0b3BTY3JvbGwoKVwiXHJcbiAgLz5cclxufVxyXG5cclxuPGRpdlxyXG4gICNjb250YWluZXJcclxuICBjbGFzcz1cInVpQWN0aW9uQnV0dG9uc0NvbnRhaW5lclwiXHJcbiAgW25nQ2xhc3NdPVwie1xyXG4gICAgc2Nyb2xsYWJsZUNvbnRlbnQ6IHNjcm9sbE9uV3JhcCxcclxuICAgIHZlcnRpY2FsVG9vbGJhcjogaXNWZXJ0aWNhbCxcclxuICB9XCJcclxuPlxyXG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHVpQWN0aW9uTW9kZWwgb2YgdWlBY3Rpb25Nb2RlbHNXaXRoRGVzY3JpcHRpb25zOyB0cmFja0J5OiB0cmFja0J5Rm5cIj5cclxuICAgIEBpZiAodWlBY3Rpb25Nb2RlbC51aUFjdGlvbi5jb2RlID09PSAndGhlbWVTZWxlY3RvcicpIHtcclxuICAgICAgPHRoZW1lLXNlbGVjdG9yIFttb2RlbF09XCJ1aUFjdGlvbk1vZGVsXCI+PC90aGVtZS1zZWxlY3Rvcj5cclxuICAgIH0gQGVsc2UgaWYgKHVpQWN0aW9uTW9kZWwudWlBY3Rpb24uc3ViQWN0aW9ucyAmJiB1aUFjdGlvbk1vZGVsLnVpQWN0aW9uLnN1YkFjdGlvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICA8dWktdGllcmVkLW1lbnVcclxuICAgICAgICAjbWVudVxyXG4gICAgICAgIFt0cmlnZ2VyQWN0aW9uXT1cInVpQWN0aW9uTW9kZWwudWlBY3Rpb25cIlxyXG4gICAgICAgIFtzdWJBY3Rpb25zXT1cInVpQWN0aW9uTW9kZWwudWlBY3Rpb24uc3ViQWN0aW9ucyFcIlxyXG4gICAgICAgIChhY3Rpb25DbGljayk9XCJvbkFjdGlvbkNsaWNrZWQoJGV2ZW50LCB1aUFjdGlvbk1vZGVsKVwiXHJcbiAgICAgID48L3VpLXRpZXJlZC1tZW51PlxyXG4gICAgfSBAZWxzZSB7XHJcbiAgICAgIDx1aS1hY3Rpb24tYnV0dG9uXHJcbiAgICAgICAgW2Rlc2NyaXB0b3JdPVwidWlBY3Rpb25Nb2RlbC5kZXNjcmlwdG9yIVwiXHJcbiAgICAgICAgW2NvZGVdPVwidWlBY3Rpb25Nb2RlbC51aUFjdGlvbi5jb2RlXCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiISF1aUFjdGlvbk1vZGVsLnVpQWN0aW9uLmRpc2FibGVkXCJcclxuICAgICAgICBbYWRkZWRDc3NDbGFzc109XCJ1aUFjdGlvbk1vZGVsLmNzc0NsYXNzXCJcclxuICAgICAgICAoYWN0aW9uQ2xpY2spPVwib25BY3Rpb25DbGlja2VkKCRldmVudCwgdWlBY3Rpb25Nb2RlbClcIlxyXG4gICAgICAgIChhY3Rpb25Eb3VibGVDbGljayk9XCJvbkFjdGlvbkRvdWJsZUNsaWNrZWQoJGV2ZW50LCB1aUFjdGlvbk1vZGVsKVwiXHJcbiAgICAgID5cclxuICAgICAgPC91aS1hY3Rpb24tYnV0dG9uPlxyXG4gICAgfVxyXG4gIDwvbmctY29udGFpbmVyPlxyXG48L2Rpdj5cclxuXHJcbkBpZiAoaXNTY3JvbGxhYmxlICYmIHNjcm9sbE9uV3JhcCkge1xyXG4gIDx1aS1hY3Rpb24tYnV0dG9uXHJcbiAgICBbZGlzYWJsZWRdPVwiIWlzU2Nyb2xsYWJsZVwiXHJcbiAgICBbZGVzY3JpcHRvcl09XCJidXR0b25SaWdodFwiXHJcbiAgICAoYWN0aW9uQ2xpY2spPVwic2Nyb2xsUmlnaHQoKVwiXHJcbiAgICAobW91c2Vkb3duKT1cInNjcm9sbFN0YXJ0KCdyaWdodCcpXCJcclxuICAgIChtb3VzZXVwKT1cInN0b3BTY3JvbGwoKVwiXHJcbiAgICAobW91c2VsZWF2ZSk9XCJzdG9wU2Nyb2xsKClcIlxyXG4gICAgKHRvdWNoc3RhcnQpPVwic2Nyb2xsU3RhcnQoJ3JpZ2h0JylcIlxyXG4gICAgKHRvdWNoZW5kKT1cInN0b3BTY3JvbGwoKVwiXHJcbiAgLz5cclxufVxyXG4iXX0=
322
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktYWN0aW9uLXRvb2xiYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvdmlldy1jb250ZXh0L3NtYXJ0LXVpLWFjdGlvbi91aS1hY3Rpb24tdG9vbGJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi92aWV3LWNvbnRleHQvc21hcnQtdWktYWN0aW9uL3VpLWFjdGlvbi10b29sYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBRVQsWUFBWSxFQUNaLE1BQU0sRUFFTixLQUFLLEVBS0wsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFnQixTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEUsT0FBTyxFQUNMLFlBQVksRUFDWixlQUFlLEdBSWhCLE1BQU0sUUFBUSxDQUFDO0FBQ2hCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRzNFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2xGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBcUIsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7Ozs7O0FBT3ZGLE1BQU0sT0FBTyx3QkFBd0I7SUErQm5DLFlBQ1UsT0FBd0IsRUFDeEIsTUFBZ0IsRUFDakIsY0FBaUMsRUFDTixPQUF5QjtRQUhuRCxZQUFPLEdBQVAsT0FBTyxDQUFpQjtRQUN4QixXQUFNLEdBQU4sTUFBTSxDQUFVO1FBQ2pCLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNOLFlBQU8sR0FBUCxP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c0JBQVYsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFrRHlCLFFBQVE7c0JBQXRDLFlBQVk7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIEluamVjdCxcclxuICBJbmplY3RvcixcclxuICBJbnB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVG9vbHRpcFBvc2l0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XHJcbmltcG9ydCB7IGludGVydmFsLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge1xyXG4gIEljb25Qb3NpdGlvbixcclxuICBNZW51VHJpZ2dlclR5cGUsXHJcbiAgVWlBY3Rpb24sXHJcbiAgVWlBY3Rpb25EZXNjcmlwdG9yLFxyXG4gIFVpQWN0aW9uVG9vbHRpcFRvb2x0aXBQb3NpdGlvbkVudW0sXHJcbn0gZnJvbSAnLi4vYXBpJztcclxuaW1wb3J0IHsgVWlBY3Rpb25CdXR0b25UeXBlIH0gZnJvbSAnLi4vYXBpL21vZGVsL3VpQWN0aW9uQnV0dG9uVHlwZSc7XHJcbmltcG9ydCB7IFVpQWN0aW9uRGVzY3JpcHRvclNlcnZpY2UgfSBmcm9tICcuL3VpLWFjdGlvbi5kZXNjcmlwdG9yLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVaUFjdGlvbk1vZGVsIH0gZnJvbSAnLi91aS1hY3Rpb24ubW9kZWwnO1xyXG5pbXBvcnQgeyBVaUFjdGlvblNlcnZpY2UgfSBmcm9tICcuL3VpLWFjdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ09NUE9ORU5UX0xJQlJBUlksIENvbXBvbmVudExpYnJhcnkgfSBmcm9tICcuLi91dGlsaXR5L2NvbXBvbmVudExpYnJhcnknO1xyXG5pbXBvcnQgeyBUb29sYmFyRGlyZWN0aW9uLCBUb29sYmFyUHJvcGVydGllcyB9IGZyb20gJy4uLy4uL3NtYXJ0LWNvbXBvbmVudC1sYXlvdXQvYXBpJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc21hcnQtdWktYWN0aW9uLXRvb2xiYXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi91aS1hY3Rpb24tdG9vbGJhci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdWktYWN0aW9uLXRvb2xiYXIuY29tcG9uZW50LmNzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVWlBY3Rpb25Ub29sYmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XHJcbiAgQFZpZXdDaGlsZCgnY29udGFpbmVyJywgeyBzdGF0aWM6IGZhbHNlIH0pIGNvbnRhaW5lclJlZiE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIHByaXZhdGUgX2Rlc3Ryb3kkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgY29tcG9uZW50TGlicmFyeSA9IENvbXBvbmVudExpYnJhcnk7IC8vIEV4cG9zZSB0aGUgZW51bSB0byB0aGUgdGVtcGxhdGVcclxuICB0cmlnZ2VyVHlwZSA9IE1lbnVUcmlnZ2VyVHlwZTtcclxuXHJcbiAgcHJlc3NlZEJ1dHRvbkFjdGl2ZTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpIHVpQWN0aW9uTW9kZWxzPzogVWlBY3Rpb25Nb2RlbFtdO1xyXG4gIEBJbnB1dCgpIHVpQWN0aW9uRGVzY3JpcHRvclNlcnZpY2U/OiBVaUFjdGlvbkRlc2NyaXB0b3JTZXJ2aWNlO1xyXG4gIEBJbnB1dCgpIGlkPzogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHNjcm9sbE9uV3JhcDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHRvb2xiYXJQcm9wZXJ0ZXM/OiBUb29sYmFyUHJvcGVydGllcztcclxuXHJcbiAgdWlBY3Rpb25Nb2RlbHNXaXRoRGVzY3JpcHRpb25zPzogVWlBY3Rpb25Nb2RlbFtdO1xyXG5cclxuICBwcml2YXRlIG1hbmFnZXIhOiBVaUFjdGlvbkRlc2NyaXB0b3JTZXJ2aWNlO1xyXG4gIHByaXZhdGUgbGFuZ3VhZ2VDaGFuZ2VkU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xyXG5cclxuICBpc1Njcm9sbGFibGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSBzY3JvbGxJbnRlcnZhbDogYW55O1xyXG4gIHByaXZhdGUgc2Nyb2xsVGltZW91dDogYW55O1xyXG4gIHByaXZhdGUgc2Nyb2xsU3BlZWQ6IG51bWJlciA9IDU7XHJcbiAgcHJpdmF0ZSBzY3JvbGxEZWxheTogbnVtYmVyID0gMTY7XHJcbiAgcHJpdmF0ZSBzY3JvbGxIb2xkRGVsYXk6IG51bWJlciA9IDEwMDtcclxuXHJcbiAgcHJpdmF0ZSBzY2hlZHVsZXMgPSBuZXcgTWFwPHN0cmluZywgU3Vic2NyaXB0aW9uPigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgc2VydmljZTogVWlBY3Rpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBpbmplY3Q6IEluamVjdG9yLFxyXG4gICAgcHVibGljIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIEBJbmplY3QoQ09NUE9ORU5UX0xJQlJBUlkpIHB1YmxpYyBjb21wTGliOiBDb21wb25lbnRMaWJyYXJ5XHJcbiAgKSB7XHJcbiAgICAvLyBJbmplY3RzIHRoZSBiYXNpYyBVaUFjdGlvbkRlc2NyaXB0b3JTZXJ2aWNlIHByb3ZpZGVkIGJ5IHRoZSBBcHBNb2R1bGVcclxuICAgIHRoaXMubWFuYWdlciA9IGluamVjdC5nZXQoVWlBY3Rpb25EZXNjcmlwdG9yU2VydmljZSk7XHJcblxyXG4gICAgdGhpcy5zdWJzY3JpYmVUb0xhbmd1YWdlQ2hhbmdlKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIC8vIE92ZXJyaWRlcyB0aGUgYmFzaWMgVWlBY3Rpb25EZXNjcmlwdG9yU2VydmljZSB3aXRoIGEgY3VzdG9tIG9uZSBpZiB0aGVyZSBpcyBvbmVcclxuICAgIGlmICh0aGlzLnVpQWN0aW9uRGVzY3JpcHRvclNlcnZpY2UpIHtcclxuICAgICAgdGhpcy5tYW5hZ2VyID0gdGhpcy51aUFjdGlvbkRlc2NyaXB0b3JTZXJ2aWNlO1xyXG4gICAgICB0aGlzLnN1YnNjcmliZVRvTGFuZ3VhZ2VDaGFuZ2UoKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnRvb2xiYXJQcm9wZXJ0ZXMpIHtcclxuICAgICAgdGhpcy5zY3JvbGxPbldyYXAgPSB0aGlzLnRvb2xiYXJQcm9wZXJ0ZXMuc2Nyb2xsYWJsZSA/PyBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNldFVwKCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICBpZiAodGhpcy5zY3JvbGxPbldyYXApIHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jaGVja1Njcm9sbGFibGUoKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJykgb25SZXNpemUoKSB7XHJcbiAgICBpZiAodGhpcy5zY3JvbGxPbldyYXApIHtcclxuICAgICAgdGhpcy5jaGVja1Njcm9sbGFibGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzWyd1aUFjdGlvbk1vZGVscyddKSB7XHJcbiAgICAgIGxldCB1aUFjdGlvbk1vZGVscyA9IGNoYW5nZXNbJ3VpQWN0aW9uTW9kZWxzJ10uY3VycmVudFZhbHVlO1xyXG4gICAgICBpZiAodWlBY3Rpb25Nb2RlbHMpIHtcclxuICAgICAgICB0aGlzLnVpQWN0aW9uTW9kZWxzID0gdWlBY3Rpb25Nb2RlbHM7XHJcblxyXG4gICAgICAgIHRoaXMuc2V0VXAoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmNsZWFyU2NoZWR1bGUoKTtcclxuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcclxuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN1YnNjcmliZVRvTGFuZ3VhZ2VDaGFuZ2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLmxhbmd1YWdlQ2hhbmdlZFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICB0aGlzLmxhbmd1YWdlQ2hhbmdlZFN1YnNjcmlwdGlvbiA9IHRoaXMubWFuYWdlci5sYW5ndWFnZUNoYW5nZWRcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXRVcCgpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHNldFVwKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKHRoaXMudWlBY3Rpb25Nb2RlbHMpIHtcclxuICAgICAgbGV0IHVpQWN0aW9uTW9kZWxzV2l0aERlc2NyaXB0aW9ucyA9IFtdO1xyXG4gICAgICBmb3IgKGNvbnN0IHVpQWN0aW9uTW9kZWwgb2YgdGhpcy51aUFjdGlvbk1vZGVscykge1xyXG4gICAgICAgIGNvbnN0IHVpQWN0aW9uID0gdWlBY3Rpb25Nb2RlbC51aUFjdGlvbjtcclxuXHJcbiAgICAgICAgLy8gdXNpbmcgZXF1YWxpdHkgaXMgYSBtdXN0IGhlcmUsIHVuZGVmaW5lZCBhbmQgbnVsbCBzaG91bGQgYmUgZXF1YWxcclxuICAgICAgICBpZiAodGhpcy5pZCA9PSB1aUFjdGlvbi50b29sYmFyKSB7XHJcbiAgICAgICAgICB1aUFjdGlvbk1vZGVsLmRlc2NyaXB0b3IgPSBhd2FpdCB0aGlzLm1hbmFnZXIuZ2V0QWN0aW9uRGVzY3JpcHRvcih1aUFjdGlvbk1vZGVsLnVpQWN0aW9uKTtcclxuICAgICAgICAgIHVpQWN0aW9uTW9kZWxzV2l0aERlc2NyaXB0aW9ucy5wdXNoKHVpQWN0aW9uTW9kZWwpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNjaGVkdWxlQWN0aW9ucyh0aGlzLnVpQWN0aW9uTW9kZWxzKTtcclxuICAgICAgdGhpcy51aUFjdGlvbk1vZGVsc1dpdGhEZXNjcmlwdGlvbnMgPSB1aUFjdGlvbk1vZGVsc1dpdGhEZXNjcmlwdGlvbnM7XHJcblxyXG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuXHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jaGVja1Njcm9sbGFibGUoKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjbGVhclNjaGVkdWxlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zY2hlZHVsZXMuZm9yRWFjaCgoc3ViKSA9PiBzdWIudW5zdWJzY3JpYmUoKSk7XHJcbiAgICB0aGlzLnNjaGVkdWxlcy5jbGVhcigpO1xyXG4gIH1cclxuXHJcbiAgc2NoZWR1bGVBY3Rpb25zKHVpQWN0aW9uTW9kZWxzOiBVaUFjdGlvbk1vZGVsW10pIHtcclxuICAgIHRoaXMuY2xlYXJTY2hlZHVsZSgpO1xyXG5cclxuICAgIHVpQWN0aW9uTW9kZWxzLmZvckVhY2goKHVpQWN0aW9uTW9kZWw6IFVpQWN0aW9uTW9kZWwpID0+IHtcclxuICAgICAgbGV0IHVpQWN0aW9uID0gdWlBY3Rpb25Nb2RlbC51aUFjdGlvbjtcclxuXHJcbiAgICAgIGlmIChcclxuICAgICAgICAhdWlBY3Rpb24uY29kZSB8fFxyXG4gICAgICAgIHVpQWN0aW9uLmRpc2FibGVkIHx8XHJcbiAgICAgICAgIXVpQWN0aW9uLnNjaGVkdWxlPy5pbnRlcnZhbFNlY29uZHMgfHxcclxuICAgICAgICB0aGlzLnNjaGVkdWxlcy5oYXModWlBY3Rpb24uY29kZSkgfHxcclxuICAgICAgICB1aUFjdGlvbi5zdWJBY3Rpb25zPy5sZW5ndGhcclxuICAgICAgKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgaW50ZXJ2YWxJbk1zID0gdWlBY3Rpb24uc2NoZWR1bGUuaW50ZXJ2YWxTZWNvbmRzICogMTAwMDtcclxuICAgICAgbGV0IHN1YiA9IGludGVydmFsKGludGVydmFsSW5NcylcclxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgdWlBY3Rpb25Nb2RlbC51aUFjdGlvbiEucGFyYW1zID0ge1xyXG4gICAgICAgICAgICAuLi51aUFjdGlvbk1vZGVsLnVpQWN0aW9uIS5wYXJhbXMsXHJcbiAgICAgICAgICAgIHNjaGVkdWxlZDogdHJ1ZSxcclxuICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgdGhpcy5maXJlQWN0aW9uKHVpQWN0aW9uTW9kZWwpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy5zY2hlZHVsZXMuc2V0KHVpQWN0aW9uLmNvZGUsIHN1Yik7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHRyYWNrQnlGbihpZHg6IG51bWJlciwgbTogVWlBY3Rpb25Nb2RlbCk6IHN0cmluZyB8IG51bWJlciB7XHJcbiAgICByZXR1cm4gbS51aUFjdGlvbi5jb2RlID8/IGlkeDtcclxuICB9XHJcblxyXG4gIGFzeW5jIGZpcmVBY3Rpb24odWlBY3Rpb25Nb2RlbDogVWlBY3Rpb25Nb2RlbCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKHVpQWN0aW9uTW9kZWwudWlBY3Rpb24uZGlzYWJsZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBvcHRpb25zID0ge1xyXG4gICAgICBub2RlSWQ6IHVpQWN0aW9uTW9kZWwubm9kZUlkLFxyXG4gICAgICB3aWRnZXRJZDogdWlBY3Rpb25Nb2RlbC53aWRnZXRJZCxcclxuICAgIH07XHJcblxyXG4gICAgYXdhaXQgdGhpcy5zZXJ2aWNlLmV4ZWN1dGUodWlBY3Rpb25Nb2RlbC51aUFjdGlvbiwgdWlBY3Rpb25Nb2RlbCwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBvbkFjdGlvbkNsaWNrZWQoZXZlbnQ6IGFueSwgdWlBY3Rpb25Nb2RlbDogVWlBY3Rpb25Nb2RlbCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgLy8gZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblxyXG4gICAgaWYgKHVpQWN0aW9uTW9kZWwudWlBY3Rpb24uZGlzYWJsZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnByZXNzZWRCdXR0b25BY3RpdmUpIHtcclxuICAgICAgdGhpcy5wcmVzc2VkQnV0dG9uQWN0aXZlID0gZmFsc2U7XHJcblxyXG4gICAgICAvLyB1aS10aWVyZWQtbWVudSBlbWl0cyBhIGZ1bGwgVWlBY3Rpb24gKG5vICdldmVudCcgcHJvcGVydHkpLFxyXG4gICAgICAvLyB1aS1hY3Rpb24tYnV0dG9uIGVtaXRzIHsgZXZlbnQ6IE1vdXNlRXZlbnQsIGNvZGUsIGRlc2NyaXB0b3IgfS5cclxuICAgICAgLy8gVXNlIHRoZSBlbWl0dGVkIFVpQWN0aW9uIG9ubHkgZm9yIHRpZXJlZC1tZW51IHN1Yi1hY3Rpb25zLlxyXG4gICAgICBsZXQgYWN0aW9uVG9FeGVjdXRlOiBVaUFjdGlvbk1vZGVsID0ge1xyXG4gICAgICAgIC4uLnVpQWN0aW9uTW9kZWwsXHJcbiAgICAgICAgdWlBY3Rpb246ICFldmVudC5ldmVudCAmJiBldmVudC5jb2RlID8gZXZlbnQgOiB1aUFjdGlvbk1vZGVsLnVpQWN0aW9uLFxyXG4gICAgICB9O1xyXG5cclxuICAgICAgYXdhaXQgdGhpcy5maXJlQWN0aW9uKGFjdGlvblRvRXhlY3V0ZSk7XHJcblxyXG4gICAgICB0aGlzLnByZXNzZWRCdXR0b25BY3RpdmUgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25BY3Rpb25Eb3VibGVDbGlja2VkKGV2ZW50OiBhbnksIHVpQWN0aW9uTW9kZWw6IFVpQWN0aW9uTW9kZWwpOiB2b2lkIHtcclxuICAgIC8vIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgLy8gV2UgZG8gbm90IGhhbmRsZSBkb3VibGUgY2xpY2tzXHJcbiAgfVxyXG4gIGdldGJ0bkNsYXNzKHVpQWN0aW9uTW9kZWw6IFVpQWN0aW9uTW9kZWwpOiBzdHJpbmcge1xyXG4gICAgaWYgKHVpQWN0aW9uTW9kZWwuZGVzY3JpcHRvcj8uY29sb3IpIHtcclxuICAgICAgcmV0dXJuICdwLWJ1dHRvbi0nICsgdWlBY3Rpb25Nb2RlbC5kZXNjcmlwdG9yPy5jb2xvcjtcclxuICAgIH1cclxuICAgIHJldHVybiAnJztcclxuICB9XHJcbiAgZ2V0VHlwZSh1aUFjdGlvbk1vZGVsOiBVaUFjdGlvbk1vZGVsKTogYW55IHtcclxuICAgIGlmICghdWlBY3Rpb25Nb2RlbC5kZXNjcmlwdG9yPy50eXBlKSB7XHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKGBBY3Rpb24gYnV0dG9uIHR5cGUgdW5zZXQ6ICR7dWlBY3Rpb25Nb2RlbD8udWlBY3Rpb24/LmNvZGV9YCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5jb21wTGliID09PSBDb21wb25lbnRMaWJyYXJ5LlBSSU1FTkcpIHtcclxuICAgICAgLy8gcmV0dXJuICcnO1xyXG5cclxuICAgICAgLy8gJ3AtYnV0dG9uLXRleHQnOiB0cnVlLFxyXG4gICAgICAvKiAgICdwLWJ1dHRvbi1yYWlzZWQnOiB0cnVlLFxyXG4gICAgICAgICdwLWJ1dHRvbi1yb3VuZGVkJzogdHJ1ZSxcclxuICAgICAgICAncC1idXR0b24tb3V0bGluZWQnOiB0cnVlLFxyXG4gICovXHJcbiAgICAgIHN3aXRjaCAodWlBY3Rpb25Nb2RlbC5kZXNjcmlwdG9yPy50eXBlKSB7XHJcbiAgICAgICAgY2FzZSBVaUFjdGlvbkJ1dHRvblR5cGUuTk9STUFMOlxyXG4gICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgJ3AtYnV0dG9uLXRleHQnOiB0cnVlLFxyXG4gICAgICAgICAgICAncC1idXR0b24tcm91bmRlZCc6IHRydWUsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIGNhc2UgVWlBY3Rpb25CdXR0b25UeXBlLkZMQVQ6XHJcbiAgICAgICAgICByZXR1cm4geyAncC1idXR0b24tcmFpc2VkJzogdHJ1ZSwgJ3AtYnV0dG9uLXJvdW5kZWQnOiB0cnVlIH07XHJcbiAgICAgICAgY2FzZSBVaUFjdGlvbkJ1dHRvblR5cGUuUkFJU0VEOlxyXG4gICAgICAgICAgcmV0dXJuIHsgJ3AtYnV0dG9uLXJhaXNlZCc6IHRydWUsICdwLWJ1dHRvbi1yb3VuZGVkJzogdHJ1ZSB9O1xyXG4gICAgICAgIGNhc2UgVWlBY3Rpb25CdXR0b25UeXBlLlNUUk9LRUQ6XHJcbiAgICAgICAgICByZXR1cm4geyAncC1idXR0b24tb3V0bGluZWQnOiB0cnVlLCAncC1idXR0b24tcm91bmRlZCc6IHRydWUgfTtcclxuICAgICAgICBjYXNlIFVpQWN0aW9uQnV0dG9uVHlwZS5NSU5JX0ZBQjpcclxuICAgICAgICAgIHJldHVybiB7ICdwLWJ1dHRvbi1yb3VuZGVkJzogdHJ1ZSwgJ3AtYnV0dG9uLXRleHQnOiB0cnVlLCAncC1idXR0b24tcmFpc2VkJzogdHJ1ZSB9O1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAncC1idXR0b24tdGV4dCc6IHRydWUsXHJcbiAgICAgICAgICAgICdwLWJ1dHRvbi1yYWlzZWQnOiB0cnVlLFxyXG4gICAgICAgICAgICAncC1idXR0b24tcm91bmRlZCc6IHRydWUsXHJcbiAgICAgICAgICAgICdwLWJ1dHRvbi1vdXRsaW5lZCc6IHRydWUsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzd2l0Y2ggKHVpQWN0aW9uTW9kZWwuZGVzY3JpcHRvcj8udHlwZSkge1xyXG4gICAgICAgIGNhc2UgVWlBY3Rpb25CdXR0b25UeXBlLk5PUk1BTDpcclxuICAgICAgICAgIHJldHVybiAnbWF0LW1kYy1idXR0b24nO1xyXG4gICAgICAgIGNhc2UgVWlBY3Rpb25CdXR0b25UeXBlLkZMQVQ6XHJcbiAgICAgICAgICByZXR1cm4gJ21hdC1tZGMtZmxhdC1idXR0b24nO1xyXG4gICAgICAgIGNhc2UgVWlBY3Rpb25CdXR0b25UeXBlLlJBSVNFRDpcclxuICAgICAgICAgIHJldHVybiAnbWF0LW1kYy1yYWlzZWQtYnV0dG9uJztcclxuICAgICAgICBjYXNlIFVpQWN0aW9uQnV0dG9uVHlwZS5TVFJPS0VEOlxyXG4gICAgICAgICAgcmV0dXJuICdtYXQtbWRjLXN0cm9rZWQtYnV0dG9uJztcclxuICAgICAgICBjYXNlIFVpQWN0aW9uQnV0dG9uVHlwZS5JQ09OOlxyXG4gICAgICAgICAgcmV0dXJuICdtYXQtbWRjLWljb24tYnV0dG9uJztcclxuICAgICAgICBjYXNlIFVpQWN0aW9uQnV0dG9uVHlwZS5NSU5JX0ZBQjpcclxuICAgICAgICAgIHJldHVybiAnbWF0LW1kYy1taW5pLWZhYic7XHJcbiAgICAgICAgY2FzZSBVaUFjdGlvbkJ1dHRvblR5cGUuRkFCOlxyXG4gICAgICAgICAgcmV0dXJuICdtYXQtbWRjLWZhYic7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKGBVbmhhbmRsZWQgYWN0aW9uIGJ1dHRvbiB0eXBlIGNhc2U6ICR7dWlBY3Rpb25Nb2RlbC5kZXNjcmlwdG9yPy50eXBlfWApO1xyXG4gICAgICAgICAgcmV0dXJuIGBtYXQtYnV0dG9uYDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaWNvblBvc2l0aW9uKCk6IHR5cGVvZiBJY29uUG9zaXRpb24ge1xyXG4gICAgcmV0dXJuIEljb25Qb3NpdGlvbjtcclxuICB9XHJcblxyXG4gIGlzT25seUljb24odWlBY3Rpb25Nb2RlbDogVWlBY3Rpb25Nb2RlbCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgdWlBY3Rpb25Nb2RlbC5kZXNjcmlwdG9yPy50eXBlID09PSBVaUFjdGlvbkJ1dHRvblR5cGUuSUNPTiB8fFxyXG4gICAgICB1aUFjdGlvbk1vZGVsLmRlc2NyaXB0b3I/LnR5cGUgPT09IFVpQWN0aW9uQnV0dG9uVHlwZS5NSU5JX0ZBQiB8fFxyXG4gICAgICB1aUFjdGlvbk1vZGVsLmRlc2NyaXB0b3I/LnR5cGUgPT09IFVpQWN0aW9uQnV0dG9uVHlwZS5GQUJcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRUb29sdGlwUG9zKHBvcz86IFVpQWN0aW9uVG9vbHRpcFRvb2x0aXBQb3NpdGlvbkVudW0pOiBUb29sdGlwUG9zaXRpb24ge1xyXG4gICAgaWYgKHBvcykge1xyXG4gICAgICByZXR1cm4gcG9zLnRvTG93ZXJDYXNlKCkgYXMgVG9vbHRpcFBvc2l0aW9uO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuICdiZWZvcmUnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0VG9vbHRpcERlbGF5KGRlbGF5PzogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBkZWxheSA/IGRlbGF5IDogMTAwMDtcclxuICB9XHJcblxyXG4gIGdldFRvb2x0aXBIaWRlRGVsYXkoZGVsYXk/OiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIGRlbGF5ID8gZGVsYXkgOiAyMDAwO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tTY3JvbGxhYmxlKCkge1xyXG4gICAgaWYgKCF0aGlzLnNjcm9sbE9uV3JhcCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc2Nyb2xsYWJsZSA9IHRoaXMuY29udGFpbmVyUmVmPy5uYXRpdmVFbGVtZW50O1xyXG4gICAgaWYgKHNjcm9sbGFibGUpIHtcclxuICAgICAgdGhpcy5pc1Njcm9sbGFibGUgPSBzY3JvbGxhYmxlLnNjcm9sbFdpZHRoID4gc2Nyb2xsYWJsZS5jbGllbnRXaWR0aDtcclxuICAgIH1cclxuICB9XHJcbiAgc2Nyb2xsTGVmdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY29udGFpbmVyUmVmLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCAtPSAxMDA7XHJcbiAgfVxyXG5cclxuICBzY3JvbGxSaWdodCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY29udGFpbmVyUmVmLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCArPSAxMDA7XHJcbiAgfVxyXG5cclxuICBzY3JvbGxTdGFydChkaXJlY3Rpb246ICdsZWZ0JyB8ICdyaWdodCcpOiB2b2lkIHtcclxuICAgIHRoaXMuc2Nyb2xsVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBjb25zdCBkZWx0YSA9IGRpcmVjdGlvbiA9PT0gJ2xlZnQnID8gLXRoaXMuc2Nyb2xsU3BlZWQgOiB0aGlzLnNjcm9sbFNwZWVkO1xyXG5cclxuICAgICAgdGhpcy5zY3JvbGxJbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHtcclxuICAgICAgICB0aGlzLmNvbnRhaW5lclJlZi5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgKz0gZGVsdGE7XHJcbiAgICAgIH0sIHRoaXMuc2Nyb2xsRGVsYXkpO1xyXG4gICAgfSwgdGhpcy5zY3JvbGxIb2xkRGVsYXkpO1xyXG4gIH1cclxuXHJcbiAgc3RvcFNjcm9sbCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNjcm9sbFRpbWVvdXQpIHtcclxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuc2Nyb2xsVGltZW91dCk7XHJcbiAgICAgIHRoaXMuc2Nyb2xsVGltZW91dCA9IG51bGw7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5zY3JvbGxJbnRlcnZhbCkge1xyXG4gICAgICBjbGVhckludGVydmFsKHRoaXMuc2Nyb2xsSW50ZXJ2YWwpO1xyXG4gICAgICB0aGlzLnNjcm9sbEludGVydmFsID0gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGJ1dHRvbkxlZnQ6IFVpQWN0aW9uRGVzY3JpcHRvciA9IHtcclxuICAgIHRpdGxlOiAnJyxcclxuICAgIGNvbG9yOiAncHJpbWFyeScsXHJcbiAgICB0eXBlOiBVaUFjdGlvbkJ1dHRvblR5cGUuUkFJU0VELFxyXG4gICAgaWNvbjogdGhpcy5jb21wTGliID09PSBDb21wb25lbnRMaWJyYXJ5LlBSSU1FTkcgPyAnY2hldnJvbi1sZWZ0JyA6ICdhcnJvd19iYWNrJyxcclxuICAgIGljb25Qb3NpdGlvbjogSWNvblBvc2l0aW9uLlBSRSxcclxuICB9O1xyXG5cclxuICBidXR0b25SaWdodDogVWlBY3Rpb25EZXNjcmlwdG9yID0ge1xyXG4gICAgdGl0bGU6ICcnLFxyXG4gICAgY29sb3I6ICdwcmltYXJ5JyxcclxuICAgIHR5cGU6IFVpQWN0aW9uQnV0dG9uVHlwZS5SQUlTRUQsXHJcbiAgICBpY29uOiB0aGlzLmNvbXBMaWIgPT09IENvbXBvbmVudExpYnJhcnkuUFJJTUVORyA/ICdjaGV2cm9uLXJpZ2h0JyA6ICdhcnJvd19mb3J3YXJkJyxcclxuICAgIGljb25Qb3NpdGlvbjogSWNvblBvc2l0aW9uLlBSRSxcclxuICB9O1xyXG5cclxuICBnZXQgaXNWZXJ0aWNhbCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnRvb2xiYXJQcm9wZXJ0ZXM/LmRpcmVjdGlvbiA9PT0gVG9vbGJhckRpcmVjdGlvbi5WRVJUSUNBTDtcclxuICB9XHJcbn1cclxuIiwiQGlmIChpc1Njcm9sbGFibGUgJiYgc2Nyb2xsT25XcmFwKSB7XHJcbiAgPHVpLWFjdGlvbi1idXR0b25cclxuICAgIFtkaXNhYmxlZF09XCIhaXNTY3JvbGxhYmxlXCJcclxuICAgIFtkZXNjcmlwdG9yXT1cImJ1dHRvbkxlZnRcIlxyXG4gICAgKGFjdGlvbkNsaWNrKT1cInNjcm9sbExlZnQoKVwiXHJcbiAgICAobW91c2Vkb3duKT1cInNjcm9sbFN0YXJ0KCdsZWZ0JylcIlxyXG4gICAgKG1vdXNldXApPVwic3RvcFNjcm9sbCgpXCJcclxuICAgIChtb3VzZWxlYXZlKT1cInN0b3BTY3JvbGwoKVwiXHJcbiAgICAodG91Y2hzdGFydCk9XCJzY3JvbGxTdGFydCgnbGVmdCcpXCJcclxuICAgICh0b3VjaGVuZCk9XCJzdG9wU2Nyb2xsKClcIlxyXG4gIC8+XHJcbn1cclxuXHJcbjxkaXZcclxuICAjY29udGFpbmVyXHJcbiAgY2xhc3M9XCJ1aUFjdGlvbkJ1dHRvbnNDb250YWluZXJcIlxyXG4gIFtuZ0NsYXNzXT1cIntcclxuICAgIHNjcm9sbGFibGVDb250ZW50OiBzY3JvbGxPbldyYXAsXHJcbiAgICB2ZXJ0aWNhbFRvb2xiYXI6IGlzVmVydGljYWwsXHJcbiAgfVwiXHJcbj5cclxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB1aUFjdGlvbk1vZGVsIG9mIHVpQWN0aW9uTW9kZWxzV2l0aERlc2NyaXB0aW9uczsgdHJhY2tCeTogdHJhY2tCeUZuXCI+XHJcbiAgICBAaWYgKHVpQWN0aW9uTW9kZWwudWlBY3Rpb24uY29kZSA9PT0gJ3RoZW1lU2VsZWN0b3InKSB7XHJcbiAgICAgIDx0aGVtZS1zZWxlY3RvciBbbW9kZWxdPVwidWlBY3Rpb25Nb2RlbFwiPjwvdGhlbWUtc2VsZWN0b3I+XHJcbiAgICB9IEBlbHNlIGlmICh1aUFjdGlvbk1vZGVsLnVpQWN0aW9uLnN1YkFjdGlvbnMgJiYgdWlBY3Rpb25Nb2RlbC51aUFjdGlvbi5zdWJBY3Rpb25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwibWVudVR5cGVzOyBjb250ZXh0OiB7IHVpQWN0aW9uTW9kZWw6IHVpQWN0aW9uTW9kZWwgfVwiXHJcbiAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgIH0gQGVsc2Uge1xyXG4gICAgICA8dWktYWN0aW9uLWJ1dHRvblxyXG4gICAgICAgIFtkZXNjcmlwdG9yXT1cInVpQWN0aW9uTW9kZWwuZGVzY3JpcHRvciFcIlxyXG4gICAgICAgIFtjb2RlXT1cInVpQWN0aW9uTW9kZWwudWlBY3Rpb24uY29kZVwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cIiEhdWlBY3Rpb25Nb2RlbC51aUFjdGlvbi5kaXNhYmxlZFwiXHJcbiAgICAgICAgW2FkZGVkQ3NzQ2xhc3NdPVwidWlBY3Rpb25Nb2RlbC5jc3NDbGFzc1wiXHJcbiAgICAgICAgKGFjdGlvbkNsaWNrKT1cIm9uQWN0aW9uQ2xpY2tlZCgkZXZlbnQsIHVpQWN0aW9uTW9kZWwpXCJcclxuICAgICAgICAoYWN0aW9uRG91YmxlQ2xpY2spPVwib25BY3Rpb25Eb3VibGVDbGlja2VkKCRldmVudCwgdWlBY3Rpb25Nb2RlbClcIlxyXG4gICAgICA+XHJcbiAgICAgIDwvdWktYWN0aW9uLWJ1dHRvbj5cclxuICAgIH1cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9kaXY+XHJcblxyXG5AaWYgKGlzU2Nyb2xsYWJsZSAmJiBzY3JvbGxPbldyYXApIHtcclxuICA8dWktYWN0aW9uLWJ1dHRvblxyXG4gICAgW2Rpc2FibGVkXT1cIiFpc1Njcm9sbGFibGVcIlxyXG4gICAgW2Rlc2NyaXB0b3JdPVwiYnV0dG9uUmlnaHRcIlxyXG4gICAgKGFjdGlvbkNsaWNrKT1cInNjcm9sbFJpZ2h0KClcIlxyXG4gICAgKG1vdXNlZG93bik9XCJzY3JvbGxTdGFydCgncmlnaHQnKVwiXHJcbiAgICAobW91c2V1cCk9XCJzdG9wU2Nyb2xsKClcIlxyXG4gICAgKG1vdXNlbGVhdmUpPVwic3RvcFNjcm9sbCgpXCJcclxuICAgICh0b3VjaHN0YXJ0KT1cInNjcm9sbFN0YXJ0KCdyaWdodCcpXCJcclxuICAgICh0b3VjaGVuZCk9XCJzdG9wU2Nyb2xsKClcIlxyXG4gIC8+XHJcbn1cclxuXHJcbjxuZy10ZW1wbGF0ZSAjbWVudVR5cGVzIGxldC11aUFjdGlvbk1vZGVsPVwidWlBY3Rpb25Nb2RlbFwiPlxyXG4gIEBpZiAodWlBY3Rpb25Nb2RlbD8udWlBY3Rpb24/LmRlc2NyaXB0b3I/Lm1lbnVUcmlnZ2VyVHlwZSA9PSB0cmlnZ2VyVHlwZS5IT1ZFUikge1xyXG4gICAgPHVpLWhvdmVyLW1lbnVcclxuICAgICAgI21lbnVcclxuICAgICAgW3RyaWdnZXJBY3Rpb25dPVwidWlBY3Rpb25Nb2RlbC51aUFjdGlvblwiXHJcbiAgICAgIFtzdWJBY3Rpb25zXT1cInVpQWN0aW9uTW9kZWwudWlBY3Rpb24uc3ViQWN0aW9ucyFcIlxyXG4gICAgICAoYWN0aW9uQ2xpY2spPVwib25BY3Rpb25DbGlja2VkKCRldmVudCwgdWlBY3Rpb25Nb2RlbClcIlxyXG4gICAgPjwvdWktaG92ZXItbWVudT5cclxuICB9IEBlbHNlIHtcclxuICAgIDx1aS10aWVyZWQtbWVudVxyXG4gICAgICAjbWVudVxyXG4gICAgICBbdHJpZ2dlckFjdGlvbl09XCJ1aUFjdGlvbk1vZGVsLnVpQWN0aW9uXCJcclxuICAgICAgW3N1YkFjdGlvbnNdPVwidWlBY3Rpb25Nb2RlbC51aUFjdGlvbi5zdWJBY3Rpb25zIVwiXHJcbiAgICAgIChhY3Rpb25DbGljayk9XCJvbkFjdGlvbkNsaWNrZWQoJGV2ZW50LCB1aUFjdGlvbk1vZGVsKVwiXHJcbiAgICA+PC91aS10aWVyZWQtbWVudT5cclxuICB9XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
@@ -71,7 +71,6 @@ import { EditorModule } from 'primeng/editor';
71
71
  import { VoiceRecordWidgetComponent } from './smart-ui-action/components/upload-widget/voice-record-widget/voice-record-widget.component';
72
72
  import { PhotoCaptureWidgetComponent } from './smart-ui-action/components/upload-widget/photo-capture-widget/photo-capture-widget.component';
73
73
  import { UiActionButtonComponent } from './smart-ui-action/ui-action-button/ui-action-button.component';
74
- import { MenuComponent } from './smart-ui-action/components/menu/menu.component';
75
74
  import { MatMenuModule } from '@angular/material/menu';
76
75
  import { UploadWidgetComponent } from './smart-ui-action/components/upload-widget/upload-widget.component';
77
76
  import { SmartFileEditorComponent } from '../smart-form/widgets/components/smart-file-editor/smart-file-editor.component';
@@ -82,6 +81,8 @@ import { FileEditorToolbarComponent } from './smart-ui-action/file-editor-toolba
82
81
  import { MessagesModule } from 'primeng/messages';
83
82
  import { OverlayPanelModule } from 'primeng/overlaypanel';
84
83
  import { ThemeSelectorComponent } from './smart-ui-action/components/theme-selector/theme-selector.component';
84
+ import { HoverMenuComponent } from './smart-ui-action/components/menu/hover/hover-menu.component';
85
+ import { ClickMenuComponent } from './smart-ui-action/components/menu/click/menu.component';
85
86
  import * as i0 from "@angular/core";
86
87
  import * as i1 from "ngx-quill";
87
88
  export class SmartViewContextModule {
@@ -110,7 +111,8 @@ export class SmartViewContextModule {
110
111
  SmartVoiceRecorderComponent,
111
112
  HighlightPipe,
112
113
  UiActionButtonComponent,
113
- MenuComponent,
114
+ ClickMenuComponent,
115
+ HoverMenuComponent,
114
116
  UploadWidgetComponent,
115
117
  VoiceRecordWidgetComponent,
116
118
  PhotoCaptureWidgetComponent,
@@ -174,7 +176,7 @@ export class SmartViewContextModule {
174
176
  ComparableDropdownDirective,
175
177
  ComparableMultiselectDirective,
176
178
  UiActionButtonComponent,
177
- MenuComponent,
179
+ ClickMenuComponent,
178
180
  UploadWidgetComponent,
179
181
  VoiceRecordWidgetComponent,
180
182
  PhotoCaptureWidgetComponent,
@@ -287,7 +289,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
287
289
  SmartVoiceRecorderComponent,
288
290
  HighlightPipe,
289
291
  UiActionButtonComponent,
290
- MenuComponent,
292
+ ClickMenuComponent,
293
+ HoverMenuComponent,
291
294
  UploadWidgetComponent,
292
295
  VoiceRecordWidgetComponent,
293
296
  PhotoCaptureWidgetComponent,
@@ -360,7 +363,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
360
363
  ComparableDropdownDirective,
361
364
  ComparableMultiselectDirective,
362
365
  UiActionButtonComponent,
363
- MenuComponent,
366
+ ClickMenuComponent,
364
367
  UploadWidgetComponent,
365
368
  VoiceRecordWidgetComponent,
366
369
  PhotoCaptureWidgetComponent,
@@ -397,4 +400,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
397
400
  ],
398
401
  }]
399
402
  }] });
400
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtdmlldy1jb250ZXh0Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3ZpZXctY29udGV4dC9zbWFydC12aWV3LWNvbnRleHQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDM0UsT0FBTyxFQUFFLHNCQUFzQixFQUFTLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUNMLCtCQUErQixFQUMvQix1QkFBdUIsRUFDdkIsbUJBQW1CLEVBQ25CLGlCQUFpQixHQUNsQixNQUFNLGtDQUFrQyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUNMLFdBQVcsRUFDWCxnQkFBZ0IsRUFDaEIsZUFBZSxFQUNmLGVBQWUsR0FDaEIsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1B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Q0QsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQ2pDLFNBQVMsRUFBRTt3QkFDVCxRQUFRO3dCQUNSLFdBQVc7d0JBQ1gsdUJBQXVCO3dCQUN2QixjQUFjLEVBQUU7d0JBQ2hCLGFBQWE7d0JBQ2I7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsUUFBUSxFQUFFLDJCQUEyQjs0QkFDckMsS0FBSyxFQUFFLElBQUk7eUJBQ1o7d0JBQ0QsRUFBRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTt3QkFDakQsRUFBRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsUUFBUSxFQUFFLDRCQUE0QixFQUFFO3dCQUMzRSxFQUFFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxRQUFRLEVBQUUsMEJBQTBCLEVBQUU7d0JBQzNFLEVBQUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLFFBQVEsRUFBRSwrQkFBK0IsRUFBRTt3QkFFakYsZ0JBQWdCO3dCQUNoQixFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRTt3QkFDL0MsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLHVCQUF1QixFQUFFO3dCQUNoRSxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFO3dCQUNyRDs0QkFDRSxPQUFPLEVBQUUsK0JBQStCOzRCQUN4QyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsbUJBQW1CLENBQUMsTUFBTSxFQUFFO3lCQUNqRDt3QkFDRCxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLENBQUMsUUFBUSxFQUFFO3FCQUNwRTtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERyYWdEcm9wTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEhUVFBfSU5URVJDRVBUT1JTLCBIdHRwQ2xpZW50TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBJbnB1dCwgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7XHJcbiAgTUFUX01PTUVOVF9EQVRFX0FEQVBURVJfT1BUSU9OUyxcclxuICBNQVRfTU9NRU5UX0RBVEVfRk9STUFUUyxcclxuICBNYXRNb21lbnREYXRlTW9kdWxlLFxyXG4gIE1vbWVudERhdGVBZGFwdGVyLFxyXG59IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsLW1vbWVudC1hZGFwdGVyJztcclxuaW1wb3J0IHsgTWF0QXV0b2NvbXBsZXRlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlJztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgTWF0Q2hlY2tib3hNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XHJcbmltcG9ydCB7IE1hdENoaXBzTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hpcHMnO1xyXG5pbXBvcnQge1xyXG4gIERhdGVBZGFwdGVyLFxyXG4gIE1BVF9EQVRFX0ZPUk1BVFMsXHJcbiAgTUFUX0RBVEVfTE9DQUxFLFxyXG4gIE1hdENvbW1vbk1vZHVsZSxcclxufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcclxuaW1wb3J0IHsgTWF0RGF0ZXBpY2tlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXInO1xyXG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcclxuaW1wb3J0IHsgTWF0UmFkaW9Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9yYWRpbyc7XHJcbmltcG9ydCB7IE1hdFNlbGVjdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XHJcbmltcG9ydCB7IE1hdFNsaWRlVG9nZ2xlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2xpZGUtdG9nZ2xlJztcclxuaW1wb3J0IHsgTWF0U25hY2tCYXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xyXG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XHJcbmltcG9ydCB7IEJyb3dzZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgWW91VHViZVBsYXllck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3lvdXR1YmUtcGxheWVyJztcclxuaW1wb3J0IHsgcHJvdmlkZU5neE1hc2sgfSBmcm9tICduZ3gtbWFzayc7XHJcbmltcG9ydCB7IFF1aWxsTW9kdWxlIH0gZnJvbSAnbmd4LXF1aWxsJztcclxuaW1wb3J0IHsgVG9vbHRpcE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdG9vbHRpcCc7XHJcbmltcG9ydCB7IFNoYXJlZE1vZHVsZSB9IGZyb20gJy4uL3NoYXJlZC9zaGFyZWQubW9kdWxlJztcclxuaW1wb3J0IHtcclxuICBIaWdobGlnaHRQaXBlLFxyXG4gIFNtYXJ0V2lkZ2V0U2V0dGluZ3MsXHJcbiAgU21hcnRmaWxldXBsb2FkZXJDb21wb25lbnQsXHJcbiAgU21hcnRmb3JtQ29tcG9uZW50LFxyXG4gIFNtYXJ0Zm9ybXdpZGdldENvbXBvbmVudCxcclxufSBmcm9tICcuLi9zbWFydC1mb3JtL3Byb2plY3RzJztcclxuaW1wb3J0IHsgU21hcnRGb3JtU2VydmljZSB9IGZyb20gJy4uL3NtYXJ0LWZvcm0vc2VydmljZXMvc21hcnRmb3JtLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMYXJnZUZpbGVTbmFja0JhckNvbXBvbmVudCB9IGZyb20gJy4uL3NtYXJ0LWZvcm0vc21hcnRmaWxldXBsb2FkZXIvbGFyZ2UtZmlsZS1zbmFjay1iYXIvbGFyZ2UtZmlsZS1zbmFjay1iYXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU21hcnRNb250aFBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4uL3NtYXJ0LWZvcm0vd2lkZ2V0cy9jb21wb25lbnRzL3NtYXJ0LW1vbnRoLXBpY2tlci9zbWFydC1tb250aC1waWNrZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU29ydGFibGVXaWRnZXRDb21wb25lbnQgfSBmcm9tICcuLi9zbWFydC1mb3JtL3dpZGdldHMvc21hcnRmb3Jtd2lkZ2V0L3NvcnRhYmxlLXdpZGdldC9zb3J0YWJsZS13aWRnZXQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVHJhY2tDYXBzRGlyZWN0aXZlIH0gZnJvbSAnLi4vc21hcnQtZm9ybS93aWRnZXRzL3NtYXJ0Zm9ybXdpZGdldC90cmFja0NhcHMuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgU21hcnRJY29uTW9kdWxlIH0gZnJvbSAnLi4vc21hcnQtaWNvbi9wcm9qZWN0cyc7XHJcbmltcG9ydCB7IEludmFsaWRGaWVsZHNTbmFja0JhckNvbXBvbmVudCB9IGZyb20gJy4vaW52YWxpZC1maWVsZHMtc25hY2stYmFyL2ludmFsaWQtZmllbGRzLXNuYWNrLWJhci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBNZXNzYWdlRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9tZXNzYWdlLWRpYWxvZy9tZXNzYWdlLWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBVaUFjdGlvbkNvbmZpcm1EaWFsb2dDb21wb25lbnQgfSBmcm9tICcuL3NtYXJ0LXVpLWFjdGlvbi9kaWFsb2dzL3VpLWFjdGlvbi1jb25maXJtLWRpYWxvZy91aS1hY3Rpb24tY29uZmlybS1kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVWlBY3Rpb25Db25maXJtRGlhbG9nU2VydmljZSB9IGZyb20gJy4vc21hcnQtdWktYWN0aW9uL2RpYWxvZ3MvdWktYWN0aW9uLWNvbmZpcm0tZGlhbG9nL3VpLWFjdGlvbi1jb25maXJtLWRpYWxvZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVWlBY3Rpb25GaWxlVXBsb2FkRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9zbWFydC11aS1hY3Rpb24vZGlhbG9ncy91aS1hY3Rpb24tZmlsZS11cGxvYWQtZGlhbG9nL3VpLWFjdGlvbi1maWxlLXVwbG9hZC1kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVWlBY3Rpb25GaWxlVXBsb2FkRGlhbG9nU2VydmljZSB9IGZyb20gJy4vc21hcnQtdWktYWN0aW9uL2RpYWxvZ3MvdWktYWN0aW9uLWZpbGUtdXBsb2FkLWRpYWxvZy91aS1hY3Rpb24tZmlsZS11cGxvYWQtZGlhbG9nLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVaUFjdGlvbklucHV0RGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9zbWFydC11aS1hY3Rpb24vZGlhbG9ncy91aS1hY3Rpb24taW5wdXQtZGlhbG9nL3VpLWFjdGlvbi1pbnB1dC1kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVWlBY3Rpb25JbnB1dERpYWxvZ1NlcnZpY2UgfSBmcm9tICcuL3NtYXJ0LXVpLWFjdGlvbi9kaWFsb2dzL3VpLWFjdGlvbi1pbnB1dC1kaWFsb2cvdWktYWN0aW9uLWlucHV0LWRpYWxvZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVWlBY3Rpb25Ub29sYmFyQ29tcG9uZW50IH0gZnJvbSAnLi9zbWFydC11aS1hY3Rpb24vdWktYWN0aW9uLXRvb2xiYXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU21hcnRWaWV3Q29udGV4dEVycm9yRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9zbWFydC12aWV3LWNvbnRleHQtZXJyb3ItZGlhbG9nL3NtYXJ0LXZpZXctY29udGV4dC1lcnJvci1kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU21hcnRWaWV3Q29udGV4dEludGVyY2VwdG9yIH0gZnJvbSAnLi9zbWFydC12aWV3LWNvbnRleHQuaW50ZXJjZXB0b3InO1xyXG5pbXBvcnQgeyBESUFMT0dfRElTQUJMRV9DTE9TRSwgU21hcnRWaWV3Q29udGV4dFNlcnZpY2UgfSBmcm9tICcuL3NtYXJ0LXZpZXctY29udGV4dC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU21hcnRFbWJlZGRlZFNsb3REaXJlY3RpdmUgfSBmcm9tICcuL3NtYXJ0LWVtYmVkZGVkLXNsb3QuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgU21hcnRWaWV3UmVkaXJlY3QgfSBmcm9tICcuL3NtYXJ0LXZpZXctcmVkaXJlY3Qvc21hcnQtdmlldy1yZWRpcmVjdCc7XHJcblxyXG5pbXBvcnQgeyBTaGFyZWRNb2R1bGUgYXMgUHJpbWVTaGFyZWRNb2R1bGUgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYnV0dG9uJztcclxuaW1wb3J0IHsgRHJvcGRvd24sIERyb3Bkb3duTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9kcm9wZG93bic7XHJcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UsIER5bmFtaWNEaWFsb2dNb2R1bGUgfSBmcm9tICdwcmltZW5nL2R5bmFtaWNkaWFsb2cnO1xyXG5pbXBvcnQgeyBGaWxlVXBsb2FkTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9maWxldXBsb2FkJztcclxuaW1wb3J0IHsgRmxvYXRMYWJlbE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvZmxvYXRsYWJlbCc7XHJcbmltcG9ydCB7IElucHV0TnVtYmVyTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9pbnB1dG51bWJlcic7XHJcbmltcG9ydCB7IElucHV0VGV4dE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvaW5wdXR0ZXh0JztcclxuaW1wb3J0IHsgSW5wdXRUZXh0YXJlYU1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvaW5wdXR0ZXh0YXJlYSc7XHJcbmltcG9ydCB7IFRvYXN0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy90b2FzdCc7XHJcbmltcG9ydCB7IENPTVBPTkVOVF9MSUJSQVJZLCBDb21wb25lbnRMaWJyYXJ5IH0gZnJvbSAnLi91dGlsaXR5L2NvbXBvbmVudExpYnJhcnknO1xyXG5cclxuaW1wb3J0IHsgQ2FsZW5kYXJNb2R1bGUgfSBmcm9tICdwcmltZW5nL2NhbGVuZGFyJztcclxuaW1wb3J0IHsgQ2hpcHNNb2R1bGUgfSBmcm9tICdwcmltZW5nL2NoaXBzJztcclxuaW1wb3J0IHsgSW1hZ2VNb2R1bGUgfSBmcm9tICdwcmltZW5nL2ltYWdlJztcclxuaW1wb3J0IHsgT3JkZXJMaXN0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy9vcmRlcmxpc3QnO1xyXG5pbXBvcnQgeyBJbnB1dFN3aXRjaE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvaW5wdXRzd2l0Y2gnO1xyXG5pbXBvcnQgeyBDaGVja2JveE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvY2hlY2tib3gnO1xyXG5pbXBvcnQgeyBNdWx0aVNlbGVjdCwgTXVsdGlTZWxlY3RNb2R1bGUgfSBmcm9tICdwcmltZW5nL211bHRpc2VsZWN0JztcclxuaW1wb3J0IHsgSW5wdXRNYXNrTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9pbnB1dG1hc2snO1xyXG5pbXBvcnQgeyBDb21wYXJhYmxlRHJvcGRvd25EaXJlY3RpdmUgfSBmcm9tICcuLi9zbWFydC1mb3JtL3dpZGdldHMvZGlyZWN0aXZlcy9jb21wYXJhYmxlLWRyb3Bkb3duLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IENvbXBhcmFibGVNdWx0aXNlbGVjdERpcmVjdGl2ZSB9IGZyb20gJy4uL3NtYXJ0LWZvcm0vd2lkZ2V0cy9kaXJlY3RpdmVzL2NvbXBhcmFibGUtbXVsdGlzZWxlY3QuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgVWlBY3Rpb25EaWFsb2dCdXR0b25Db21wb25lbnQgfSBmcm9tICcuL3NtYXJ0LXVpLWFjdGlvbi9kaWFsb2dzL3VpLWFjdGlvbi1kaWFsb2ctYnV0dG9uL3VpLWFjdGlvbi1kaWFsb2ctYnV0dG9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEVkaXRvck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvZWRpdG9yJztcclxuaW1wb3J0IHsgVm9pY2VSZWNvcmRXaWRnZXRDb21wb25lbnQgfSBmcm9tICcuL3NtYXJ0LXVpLWFjdGlvbi9jb21wb25lbnRzL3VwbG9hZC13aWRnZXQvdm9pY2UtcmVjb3JkLXdpZGdldC92b2ljZS1yZWNvcmQtd2lkZ2V0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFBob3RvQ2FwdHVyZVdpZGdldENvbXBvbmVudCB9IGZyb20gJy4vc21hcnQtdWktYWN0aW9uL2NvbXBvbmVudHMvdXBsb2FkLXdpZGdldC9waG90by1jYXB0dXJlLXdpZGdldC9waG90by1jYXB0dXJlLXdpZGdldC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBVaUFjdGlvbkJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4vc21hcnQtdWktYWN0aW9uL3VpLWFjdGlvbi1idXR0b24vdWktYWN0aW9uLWJ1dHRvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBNZW51Q29tcG9uZW50IH0gZnJvbSAnLi9zbWFydC11aS1hY3Rpb24vY29tcG9uZW50cy9tZW51L21lbnUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTWF0TWVudU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xyXG5pbXBvcnQgeyBVcGxvYWRXaWRnZXRDb21wb25lbnQgfSBmcm9tICcuL3NtYXJ0LXVpLWFjdGlvbi9jb21wb25lbnRzL3VwbG9hZC13aWRnZXQvdXBsb2FkLXdpZGdldC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTbWFydEZpbGVFZGl0b3JDb21wb25lbnQgfSBmcm9tICcuLi9zbWFydC1mb3JtL3dpZGdldHMvY29tcG9uZW50cy9zbWFydC1maWxlLWVkaXRvci9zbWFydC1maWxlLWVkaXRvci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBQcmltZUZpbGVVcGxvYWRlckNvbXBvbmVudCB9IGZyb20gJy4vc21hcnQtdWktYWN0aW9uL2NvbXBvbmVudHMvdXBsb2FkLXdpZGdldC9wcmltZS1maWxlLXVwbG9hZGVyL3ByaW1lLWZpbGUtdXBsb2FkZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU21hcnRNdWx0aUZpbGVFZGl0b3JDb21wb25lbnQgfSBmcm9tICcuLi9zbWFydC1mb3JtL3dpZGdldHMvY29tcG9uZW50cy9zbWFydC1tdWx0aS1maWxlLWVkaXRvci9zbWFydC1tdWx0aS1maWxlLWVkaXRvci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTbWFydFZvaWNlUmVjb3JkZXJDb21wb25lbnQgfSBmcm9tICcuLi9zbWFydC1mb3JtL3dpZGdldHMvY29tcG9uZW50cy9zbWFydC12b2ljZS1yZWNvcmRlci9zbWFydC12b2ljZS1yZWNvcmRlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGaWxlRWRpdG9yVG9vbGJhckNvbXBvbmVudCB9IGZyb20gJy4vc21hcnQtdWktYWN0aW9uL2ZpbGUtZWRpdG9yLXRvb2xiYXIvZmlsZS1lZGl0b3ItdG9vbGJhci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBNZXNzYWdlc01vZHVsZSB9IGZyb20gJ3ByaW1lbmcvbWVzc2FnZXMnO1xyXG5pbXBvcnQgeyBPdmVybGF5UGFuZWxNb2R1bGUgfSBmcm9tICdwcmltZW5nL292ZXJsYXlwYW5lbCc7XHJcbmltcG9ydCB7IFRoZW1lU2VsZWN0b3JDb21wb25lbnQgfSBmcm9tICcuL3NtYXJ0LXVpLWFjdGlvbi9jb21wb25lbnRzL3RoZW1lLXNlbGVjdG9yL3RoZW1lLXNlbGVjdG9yLmNvbXBvbmVudCc7XHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICBNZXNzYWdlRGlhbG9nQ29tcG9uZW50LFxyXG4gICAgU21hcnRWaWV3Q29udGV4dEVycm9yRGlhbG9nQ29tcG9uZW50LFxyXG4gICAgU21hcnRWaWV3UmVkaXJlY3QsXHJcbiAgICBVaUFjdGlvblRvb2xiYXJDb21wb25lbnQsXHJcbiAgICBGaWxlRWRpdG9yVG9vbGJhckNvbXBvbmVudCxcclxuICAgIFVpQWN0aW9uSW5wdXREaWFsb2dDb21wb25lbnQsXHJcbiAgICBVaUFjdGlvbkNvbmZpcm1EaWFsb2dDb21wb25lbnQsXHJcbiAgICBVaUFjdGlvbkZpbGVVcGxvYWREaWFsb2dDb21wb25lbnQsXHJcbiAgICBJbnZhbGlkRmllbGRzU25hY2tCYXJDb21wb25lbnQsXHJcbiAgICBTbWFydGZvcm1Db21wb25lbnQsXHJcbiAgICBVaUFjdGlvbkRpYWxvZ0J1dHRvbkNvbXBvbmVudCxcclxuICAgIFNtYXJ0Zm9ybXdpZGdldENvbXBvbmVudCxcclxuICAgIFNtYXJ0ZmlsZXVwbG9hZGVyQ29tcG9uZW50LFxyXG4gICAgVHJhY2tDYXBzRGlyZWN0aXZlLFxyXG4gICAgQ29tcGFyYWJsZURyb3Bkb3duRGlyZWN0aXZlLFxyXG4gICAgQ29tcGFyYWJsZU11bHRpc2VsZWN0RGlyZWN0aXZlLFxyXG4gICAgTGFyZ2VGaWxlU25hY2tCYXJDb21wb25lbnQsXHJcbiAgICBTb3J0YWJsZVdpZGdldENvbXBvbmVudCxcclxuICAgIFNtYXJ0TW9udGhQaWNrZXJDb21wb25lbnQsXHJcbiAgICBTbWFydEZpbGVFZGl0b3JDb21wb25lbnQsXHJcbiAgICBTbWFydE11bHRpRmlsZUVkaXRvckNvbXBvbmVudCxcclxuICAgIFNtYXJ0Vm9pY2VSZWNvcmRlckNvbXBvbmVudCxcclxuICAgIEhpZ2hsaWdodFBpcGUsXHJcbiAgICBVaUFjdGlvbkJ1dHRvbkNvbXBvbmVudCxcclxuICAgIE1lbnVDb21wb25lbnQsXHJcbiAgICBVcGxvYWRXaWRnZXRDb21wb25lbnQsXHJcbiAgICBWb2ljZVJlY29yZFdpZGdldENvbXBvbmVudCxcclxuICAgIFBob3RvQ2FwdHVyZVdpZGdldENvbXBvbmVudCxcclxuICAgIFByaW1lRmlsZVVwbG9hZGVyQ29tcG9uZW50LFxyXG4gICAgU21hcnRFbWJlZGRlZFNsb3REaXJlY3RpdmUsXHJcbiAgICBUaGVtZVNlbGVjdG9yQ29tcG9uZW50LFxyXG4gIF0sXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgSHR0cENsaWVudE1vZHVsZSxcclxuICAgIE1hdENvbW1vbk1vZHVsZSxcclxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcclxuICAgIEJ1dHRvbk1vZHVsZSxcclxuICAgIE1hdEljb25Nb2R1bGUsXHJcbiAgICBNYXRTbmFja0Jhck1vZHVsZSxcclxuICAgIFNtYXJ0SWNvbk1vZHVsZSxcclxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXHJcbiAgICBTaGFyZWRNb2R1bGUsXHJcbiAgICBQcmltZVNoYXJlZE1vZHVsZSxcclxuXHJcbiAgICBCcm93c2VyTW9kdWxlLFxyXG4gICAgTWF0Q2hpcHNNb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXHJcbiAgICBNYXRDaGVja2JveE1vZHVsZSxcclxuICAgIE1hdFNlbGVjdE1vZHVsZSxcclxuICAgIE1hdElucHV0TW9kdWxlLFxyXG4gICAgTWF0RGF0ZXBpY2tlck1vZHVsZSxcclxuICAgIE1hdE1vbWVudERhdGVNb2R1bGUsXHJcbiAgICBNYXRSYWRpb01vZHVsZSxcclxuICAgIE1hdFNsaWRlVG9nZ2xlTW9kdWxlLFxyXG4gICAgTWF0QXV0b2NvbXBsZXRlTW9kdWxlLFxyXG4gICAgLy9OZ3hNYXNrTW9kdWxlLmZvclJvb3QoKSxcclxuICAgIFF1aWxsTW9kdWxlLmZvclJvb3QoKSxcclxuICAgIERyYWdEcm9wTW9kdWxlLFxyXG4gICAgWW91VHViZVBsYXllck1vZHVsZSxcclxuICAgIElucHV0VGV4dE1vZHVsZSxcclxuICAgIE1lc3NhZ2VzTW9kdWxlLFxyXG4gICAgT3ZlcmxheVBhbmVsTW9kdWxlLFxyXG4gICAgRHJvcGRvd25Nb2R1bGUsXHJcbiAgICBNdWx0aVNlbGVjdE1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgSW5wdXRTd2l0Y2hNb2R1bGUsXHJcbiAgICBJbnB1dE51bWJlck1vZHVsZSxcclxuICAgIFRvb2x0aXBNb2R1bGUsXHJcbiAgICBJbnB1dFRleHRhcmVhTW9kdWxlLFxyXG4gICAgSW1hZ2VNb2R1bGUsXHJcbiAgICBGbG9hdExhYmVsTW9kdWxlLFxyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgVG9hc3RNb2R1bGUsXHJcbiAgICBEeW5hbWljRGlhbG9nTW9kdWxlLFxyXG4gICAgRmlsZVVwbG9hZE1vZHVsZSxcclxuICAgIENoaXBzTW9kdWxlLFxyXG4gICAgQ2FsZW5kYXJNb2R1bGUsXHJcbiAgICBDaGVja2JveE1vZHVsZSxcclxuICAgIE9yZGVyTGlzdE1vZHVsZSxcclxuICAgIElucHV0TWFza01vZHVsZSxcclxuICAgIEVkaXRvck1vZHVsZSxcclxuICAgIE1hdE1lbnVNb2R1bGUsXHJcbiAgICBTbWFydEljb25Nb2R1bGUsXHJcbiAgXSxcclxuICBleHBvcnRzOiBbXHJcbiAgICBVaUFjdGlvblRvb2xiYXJDb21wb25lbnQsXHJcbiAgICBVaUFjdGlvbklucHV0RGlhbG9nQ29tcG9uZW50LFxyXG4gICAgU21hcnRmb3JtQ29tcG9uZW50LFxyXG4gICAgU21hcnRmb3Jtd2lkZ2V0Q29tcG9uZW50LFxyXG4gICAgVWlBY3Rpb25EaWFsb2dCdXR0b25Db21wb25lbnQsXHJcbiAgICBTbWFydGZpbGV1cGxvYWRlckNvbXBvbmVudCxcclxuICAgIEhpZ2hsaWdodFBpcGUsXHJcbiAgICBDb21wYXJhYmxlRHJvcGRvd25EaXJlY3RpdmUsXHJcbiAgICBDb21wYXJhYmxlTXVsdGlzZWxlY3REaXJlY3RpdmUsXHJcbiAgICBVaUFjdGlvbkJ1dHRvbkNvbXBvbmVudCxcclxuICAgIE1lbnVDb21wb25lbnQsXHJcbiAgICBVcGxvYWRXaWRnZXRDb21wb25lbnQsXHJcbiAgICBWb2ljZVJlY29yZFdpZGdldENvbXBvbmVudCxcclxuICAgIFBob3RvQ2FwdHVyZVdpZGdldENvbXBvbmVudCxcclxuICAgIFNtYXJ0RmlsZUVkaXRvckNvbXBvbmVudCxcclxuICAgIFNtYXJ0TXVsdGlGaWxlRWRpdG9yQ29tcG9uZW50LFxyXG4gICAgU21hcnRWb2ljZVJlY29yZGVyQ29tcG9uZW50LFxyXG4gICAgU21hcnRFbWJlZGRlZFNsb3REaXJlY3RpdmUsXHJcbiAgXSxcclxuICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICBEcm9wZG93bixcclxuICAgIE11bHRpU2VsZWN0LFxyXG4gICAgU21hcnRWaWV3Q29udGV4dFNlcnZpY2UsXHJcbiAgICBwcm92aWRlTmd4TWFzaygpLFxyXG4gICAgRGlhbG9nU2VydmljZSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogSFRUUF9JTlRFUkNFUFRPUlMsXHJcbiAgICAgIHVzZUNsYXNzOiBTbWFydFZpZXdDb250ZXh0SW50ZXJjZXB0b3IsXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfSxcclxuICAgIHsgcHJvdmlkZTogRElBTE9HX0RJU0FCTEVfQ0xPU0UsIHVzZVZhbHVlOiB0cnVlIH0sXHJcbiAgICB7IHByb3ZpZGU6ICdjb25maXJtRGlhbG9nU2VydmljZScsIHVzZUNsYXNzOiBVaUFjdGlvbkNvbmZpcm1EaWFsb2dTZXJ2aWNlIH0sXHJcbiAgICB7IHByb3ZpZGU6ICd0ZXh0RmllbGREaWFsb2dTZXJ2aWNlJywgdXNlQ2xhc3M6IFVpQWN0aW9uSW5wdXREaWFsb2dTZXJ2aWNlIH0sXHJcbiAgICB7IHByb3ZpZGU6ICdmaWxlVXBsb2FkRGlhbG9nU2VydmljZScsIHVzZUNsYXNzOiBVaUFjdGlvbkZpbGVVcGxvYWREaWFsb2dTZXJ2aWNlIH0sXHJcblxyXG4gICAgU21hcnRGb3JtU2VydmljZSxcclxuICAgIHsgcHJvdmlkZTogTUFUX0RBVEVfTE9DQUxFLCB1c2VWYWx1ZTogJ2h1LUhVJyB9LFxyXG4gICAgeyBwcm92aWRlOiBNQVRfREFURV9GT1JNQVRTLCB1c2VWYWx1ZTogTUFUX01PTUVOVF9EQVRFX0ZPUk1BVFMgfSxcclxuICAgIHsgcHJvdmlkZTogRGF0ZUFkYXB0ZXIsIHVzZUNsYXNzOiBNb21lbnREYXRlQWRhcHRlciB9LFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBNQVRfTU9NRU5UX0RBVEVfQURBUFRFUl9PUFRJT05TLFxyXG4gICAgICB1c2VWYWx1ZTogeyB1c2VVdGM6IFNtYXJ0V2lkZ2V0U2V0dGluZ3MudXNlVXRjIH0sXHJcbiAgICB9LFxyXG4gICAgeyBwcm92aWRlOiBDT01QT05FTlRfTElCUkFSWSwgdXNlVmFsdWU6IENvbXBvbmVudExpYnJhcnkuTUFURVJJQUwgfSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU21hcnRWaWV3Q29udGV4dE1vZHVsZSB7fVxyXG4iXX0=
403
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtdmlldy1jb250ZXh0Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3ZpZXctY29udGV4dC9zbWFydC12aWV3LWNvbnRleHQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDM0UsT0FBTyxFQUFFLHNCQUFzQixFQUFTLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUNMLCtCQUErQixFQUMvQix1QkFBdUIsRUFDdkIsbUJBQW1CLEVBQ25CLGlCQUFpQixHQUNsQixNQUFNLGtDQUFrQyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUNMLFdBQVcsRUFDWCxnQkFBZ0IsRUFDaEIsZUFBZSxFQUNmLGVBQWUsR0FDaEIsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1B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dWxhci9jZGsvZHJhZy1kcm9wJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgSFRUUF9JTlRFUkNFUFRPUlMsIEh0dHBDbGllbnRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsIElucHV0LCBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHtcclxuICBNQVRfTU9NRU5UX0RBVEVfQURBUFRFUl9PUFRJT05TLFxyXG4gIE1BVF9NT01FTlRfREFURV9GT1JNQVRTLFxyXG4gIE1hdE1vbWVudERhdGVNb2R1bGUsXHJcbiAgTW9tZW50RGF0ZUFkYXB0ZXIsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwtbW9tZW50LWFkYXB0ZXInO1xyXG5pbXBvcnQgeyBNYXRBdXRvY29tcGxldGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQgeyBNYXRDaGVja2JveE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcclxuaW1wb3J0IHsgTWF0Q2hpcHNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGlwcyc7XHJcbmltcG9ydCB7XHJcbiAgRGF0ZUFkYXB0ZXIsXHJcbiAgTUFUX0RBVEVfRk9STUFUUyxcclxuICBNQVRfREFURV9MT0NBTEUsXHJcbiAgTWF0Q29tbW9uTW9kdWxlLFxyXG59IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXREYXRlcGlja2VyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlcic7XHJcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xyXG5pbXBvcnQgeyBNYXRSYWRpb01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3JhZGlvJztcclxuaW1wb3J0IHsgTWF0U2VsZWN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcclxuaW1wb3J0IHsgTWF0U2xpZGVUb2dnbGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbGlkZS10b2dnbGUnO1xyXG5pbXBvcnQgeyBNYXRTbmFja0Jhck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XHJcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcclxuaW1wb3J0IHsgQnJvd3Nlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBZb3VUdWJlUGxheWVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIveW91dHViZS1wbGF5ZXInO1xyXG5pbXBvcnQgeyBwcm92aWRlTmd4TWFzayB9IGZyb20gJ25neC1tYXNrJztcclxuaW1wb3J0IHsgUXVpbGxNb2R1bGUgfSBmcm9tICduZ3gtcXVpbGwnO1xyXG5pbXBvcnQgeyBUb29sdGlwTW9kdWxlIH0gZnJvbSAncHJpbWVuZy90b29sdGlwJztcclxuaW1wb3J0IHsgU2hhcmVkTW9kdWxlIH0gZnJvbSAnLi4vc2hhcmVkL3NoYXJlZC5tb2R1bGUnO1xyXG5pbXBvcnQge1xyXG4gIEhpZ2hsaWdodFBpcGUsXHJcbiAgU21hcnRXaWRnZXRTZXR0aW5ncyxcclxuICBTbWFydGZpbGV1cGxvYWRlckNvbXBvbmVudCxcclxuICBTbWFydGZvcm1Db21wb25lbnQsXHJcbiAgU21hcnRmb3Jtd2lkZ2V0Q29tcG9uZW50LFxyXG59IGZyb20gJy4uL3NtYXJ0LWZvcm0vcHJvamVjdHMnO1xyXG5pbXBvcnQgeyBTbWFydEZvcm1TZXJ2aWNlIH0gZnJvbSAnLi4vc21hcnQtZm9ybS9zZXJ2aWNlcy9zbWFydGZvcm0uc2VydmljZSc7XHJcbmltcG9ydCB7IExhcmdlRmlsZVNuYWNrQmFyQ29tcG9uZW50IH0gZnJvbSAnLi4vc21hcnQtZm9ybS9zbWFydGZpbGV1cGxvYWRlci9sYXJnZS1maWxlLXNuYWNrLWJhci9sYXJnZS1maWxlLXNuYWNrLWJhci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTbWFydE1vbnRoUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vc21hcnQtZm9ybS93aWRnZXRzL2NvbXBvbmVudHMvc21hcnQtbW9udGgtcGlja2VyL3NtYXJ0LW1vbnRoLXBpY2tlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTb3J0YWJsZVdpZGdldENvbXBvbmVudCB9IGZyb20gJy4uL3NtYXJ0LWZvcm0vd2lkZ2V0cy9zbWFydGZvcm13aWRnZXQvc29ydGFibGUtd2lkZ2V0L3NvcnRhYmxlLXdpZGdldC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUcmFja0NhcHNEaXJlY3RpdmUgfSBmcm9tICcuLi9zbWFydC1mb3JtL3dpZGdldHMvc21hcnRmb3Jtd2lkZ2V0L3RyYWNrQ2Fwcy5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBTbWFydEljb25Nb2R1bGUgfSBmcm9tICcuLi9zbWFydC1pY29uL3Byb2plY3RzJztcclxuaW1wb3J0IHsgSW52YWxpZEZpZWxkc1NuYWNrQmFyQ29tcG9uZW50IH0gZnJvbSAnLi9pbnZhbGlkLWZpZWxkcy1zbmFjay1iYXIvaW52YWxpZC1maWVsZHMtc25hY2stYmFyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE1lc3NhZ2VEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuL21lc3NhZ2UtZGlhbG9nL21lc3NhZ2UtZGlhbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFVpQWN0aW9uQ29uZmlybURpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vc21hcnQtdWktYWN0aW9uL2RpYWxvZ3MvdWktYWN0aW9uLWNvbmZpcm0tZGlhbG9nL3VpLWFjdGlvbi1jb25maXJtLWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBVaUFjdGlvbkNvbmZpcm1EaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi9zbWFydC11aS1hY3Rpb24vZGlhbG9ncy91aS1hY3Rpb24tY29uZmlybS1kaWFsb2cvdWktYWN0aW9uLWNvbmZpcm0tZGlhbG9nLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVaUFjdGlvbkZpbGVVcGxvYWREaWFsb2dDb21wb25lbnQgfSBmcm9tICcuL3NtYXJ0LXVpLWFjdGlvbi9kaWFsb2dzL3VpLWFjdGlvbi1maWxlLXVwbG9hZC1kaWFsb2cvdWktYWN0aW9uLWZpbGUtdXBsb2FkLWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBVaUFjdGlvbkZpbGVVcGxvYWREaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi9zbWFydC11aS1hY3Rpb24vZGlhbG9ncy91aS1hY3Rpb24tZmlsZS11cGxvYWQtZGlhbG9nL3VpLWFjdGlvbi1maWxlLXVwbG9hZC1kaWFsb2cuc2VydmljZSc7XHJcbmltcG9ydCB7IFVpQWN0aW9uSW5wdXREaWFsb2dDb21wb25lbnQgfSBmcm9tICcuL3NtYXJ0LXVpLWFjdGlvbi9kaWFsb2dzL3VpLWFjdGlvbi1pbnB1dC1kaWFsb2cvdWktYWN0aW9uLWlucHV0LWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBVaUFjdGlvbklucHV0RGlhbG9nU2VydmljZSB9IGZyb20gJy4vc21hcnQtdWktYWN0aW9uL2RpYWxvZ3MvdWktYWN0aW9uLWlucHV0LWRpYWxvZy91aS1hY3Rpb24taW5wdXQtZGlhbG9nLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVaUFjdGlvblRvb2xiYXJDb21wb25lbnQgfSBmcm9tICcuL3NtYXJ0LXVpLWFjdGlvbi91aS1hY3Rpb24tdG9vbGJhci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTbWFydFZpZXdDb250ZXh0RXJyb3JEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuL3NtYXJ0LXZpZXctY29udGV4dC1lcnJvci1kaWFsb2cvc21hcnQtdmlldy1jb250ZXh0LWVycm9yLWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTbWFydFZpZXdDb250ZXh0SW50ZXJjZXB0b3IgfSBmcm9tICcuL3NtYXJ0LXZpZXctY29udGV4dC5pbnRlcmNlcHRvcic7XHJcbmltcG9ydCB7IERJQUxPR19ESVNBQkxFX0NMT1NFLCBTbWFydFZpZXdDb250ZXh0U2VydmljZSB9IGZyb20gJy4vc21hcnQtdmlldy1jb250ZXh0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTbWFydEVtYmVkZGVkU2xvdERpcmVjdGl2ZSB9IGZyb20gJy4vc21hcnQtZW1iZWRkZWQtc2xvdC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBTbWFydFZpZXdSZWRpcmVjdCB9IGZyb20gJy4vc21hcnQtdmlldy1yZWRpcmVjdC9zbWFydC12aWV3LXJlZGlyZWN0JztcclxuXHJcbmltcG9ydCB7IFNoYXJlZE1vZHVsZSBhcyBQcmltZVNoYXJlZE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcclxuaW1wb3J0IHsgQnV0dG9uTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9idXR0b24nO1xyXG5pbXBvcnQgeyBEcm9wZG93biwgRHJvcGRvd25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL2Ryb3Bkb3duJztcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSwgRHluYW1pY0RpYWxvZ01vZHVsZSB9IGZyb20gJ3ByaW1lbmcvZHluYW1pY2RpYWxvZyc7XHJcbmltcG9ydCB7IEZpbGVVcGxvYWRNb2R1bGUgfSBmcm9tICdwcmltZW5nL2ZpbGV1cGxvYWQnO1xyXG5pbXBvcnQgeyBGbG9hdExhYmVsTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9mbG9hdGxhYmVsJztcclxuaW1wb3J0IHsgSW5wdXROdW1iZXJNb2R1bGUgfSBmcm9tICdwcmltZW5nL2lucHV0bnVtYmVyJztcclxuaW1wb3J0IHsgSW5wdXRUZXh0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy9pbnB1dHRleHQnO1xyXG5pbXBvcnQgeyBJbnB1dFRleHRhcmVhTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9pbnB1dHRleHRhcmVhJztcclxuaW1wb3J0IHsgVG9hc3RNb2R1bGUgfSBmcm9tICdwcmltZW5nL3RvYXN0JztcclxuaW1wb3J0IHsgQ09NUE9ORU5UX0xJQlJBUlksIENvbXBvbmVudExpYnJhcnkgfSBmcm9tICcuL3V0aWxpdHkvY29tcG9uZW50TGlicmFyeSc7XHJcblxyXG5pbXBvcnQgeyBDYWxlbmRhck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvY2FsZW5kYXInO1xyXG5pbXBvcnQgeyBDaGlwc01vZHVsZSB9IGZyb20gJ3ByaW1lbmcvY2hpcHMnO1xyXG5pbXBvcnQgeyBJbWFnZU1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvaW1hZ2UnO1xyXG5pbXBvcnQgeyBPcmRlckxpc3RNb2R1bGUgfSBmcm9tICdwcmltZW5nL29yZGVybGlzdCc7XHJcbmltcG9ydCB7IElucHV0U3dpdGNoTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9pbnB1dHN3aXRjaCc7XHJcbmltcG9ydCB7IENoZWNrYm94TW9kdWxlIH0gZnJvbSAncHJpbWVuZy9jaGVja2JveCc7XHJcbmltcG9ydCB7IE11bHRpU2VsZWN0LCBNdWx0aVNlbGVjdE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvbXVsdGlzZWxlY3QnO1xyXG5pbXBvcnQgeyBJbnB1dE1hc2tNb2R1bGUgfSBmcm9tICdwcmltZW5nL2lucHV0bWFzayc7XHJcbmltcG9ydCB7IENvbXBhcmFibGVEcm9wZG93bkRpcmVjdGl2ZSB9IGZyb20gJy4uL3NtYXJ0LWZvcm0vd2lkZ2V0cy9kaXJlY3RpdmVzL2NvbXBhcmFibGUtZHJvcGRvd24uZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQ29tcGFyYWJsZU11bHRpc2VsZWN0RGlyZWN0aXZlIH0gZnJvbSAnLi4vc21hcnQtZm9ybS93aWRnZXRzL2RpcmVjdGl2ZXMvY29tcGFyYWJsZS1tdWx0aXNlbGVjdC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBVaUFjdGlvbkRpYWxvZ0J1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4vc21hcnQtdWktYWN0aW9uL2RpYWxvZ3MvdWktYWN0aW9uLWRpYWxvZy1idXR0b24vdWktYWN0aW9uLWRpYWxvZy1idXR0b24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgRWRpdG9yTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9lZGl0b3InO1xyXG5pbXBvcnQgeyBWb2ljZVJlY29yZFdpZGdldENvbXBvbmVudCB9IGZyb20gJy4vc21hcnQtdWktYWN0aW9uL2NvbXBvbmVudHMvdXBsb2FkLXdpZGdldC92b2ljZS1yZWNvcmQtd2lkZ2V0L3ZvaWNlLXJlY29yZC13aWRnZXQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUGhvdG9DYXB0dXJlV2lkZ2V0Q29tcG9uZW50IH0gZnJvbSAnLi9zbWFydC11aS1hY3Rpb24vY29tcG9uZW50cy91cGxvYWQtd2lkZ2V0L3Bob3RvLWNhcHR1cmUtd2lkZ2V0L3Bob3RvLWNhcHR1cmUtd2lkZ2V0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFVpQWN0aW9uQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi9zbWFydC11aS1hY3Rpb24vdWktYWN0aW9uLWJ1dHRvbi91aS1hY3Rpb24tYnV0dG9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE1hdE1lbnVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcclxuaW1wb3J0IHsgVXBsb2FkV2lkZ2V0Q29tcG9uZW50IH0gZnJvbSAnLi9zbWFydC11aS1hY3Rpb24vY29tcG9uZW50cy91cGxvYWQtd2lkZ2V0L3VwbG9hZC13aWRnZXQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU21hcnRGaWxlRWRpdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vc21hcnQtZm9ybS93aWRnZXRzL2NvbXBvbmVudHMvc21hcnQtZmlsZS1lZGl0b3Ivc21hcnQtZmlsZS1lZGl0b3IuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUHJpbWVGaWxlVXBsb2FkZXJDb21wb25lbnQgfSBmcm9tICcuL3NtYXJ0LXVpLWFjdGlvbi9jb21wb25lbnRzL3VwbG9hZC13aWRnZXQvcHJpbWUtZmlsZS11cGxvYWRlci9wcmltZS1maWxlLXVwbG9hZGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNtYXJ0TXVsdGlGaWxlRWRpdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vc21hcnQtZm9ybS93aWRnZXRzL2NvbXBvbmVudHMvc21hcnQtbXVsdGktZmlsZS1lZGl0b3Ivc21hcnQtbXVsdGktZmlsZS1lZGl0b3IuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU21hcnRWb2ljZVJlY29yZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vc21hcnQtZm9ybS93aWRnZXRzL2NvbXBvbmVudHMvc21hcnQtdm9pY2UtcmVjb3JkZXIvc21hcnQtdm9pY2UtcmVjb3JkZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRmlsZUVkaXRvclRvb2xiYXJDb21wb25lbnQgfSBmcm9tICcuL3NtYXJ0LXVpLWFjdGlvbi9maWxlLWVkaXRvci10b29sYmFyL2ZpbGUtZWRpdG9yLXRvb2xiYXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTWVzc2FnZXNNb2R1bGUgfSBmcm9tICdwcmltZW5nL21lc3NhZ2VzJztcclxuaW1wb3J0IHsgT3ZlcmxheVBhbmVsTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9vdmVybGF5cGFuZWwnO1xyXG5pbXBvcnQgeyBUaGVtZVNlbGVjdG9yQ29tcG9uZW50IH0gZnJvbSAnLi9zbWFydC11aS1hY3Rpb24vY29tcG9uZW50cy90aGVtZS1zZWxlY3Rvci90aGVtZS1zZWxlY3Rvci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBIb3Zlck1lbnVDb21wb25lbnQgfSBmcm9tICcuL3NtYXJ0LXVpLWFjdGlvbi9jb21wb25lbnRzL21lbnUvaG92ZXIvaG92ZXItbWVudS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDbGlja01lbnVDb21wb25lbnQgfSBmcm9tICcuL3NtYXJ0LXVpLWFjdGlvbi9jb21wb25lbnRzL21lbnUvY2xpY2svbWVudS5jb21wb25lbnQnO1xyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gICAgTWVzc2FnZURpYWxvZ0NvbXBvbmVudCxcclxuICAgIFNtYXJ0Vmlld0NvbnRleHRFcnJvckRpYWxvZ0NvbXBvbmVudCxcclxuICAgIFNtYXJ0Vmlld1JlZGlyZWN0LFxyXG4gICAgVWlBY3Rpb25Ub29sYmFyQ29tcG9uZW50LFxyXG4gICAgRmlsZUVkaXRvclRvb2xiYXJDb21wb25lbnQsXHJcbiAgICBVaUFjdGlvbklucHV0RGlhbG9nQ29tcG9uZW50LFxyXG4gICAgVWlBY3Rpb25Db25maXJtRGlhbG9nQ29tcG9uZW50LFxyXG4gICAgVWlBY3Rpb25GaWxlVXBsb2FkRGlhbG9nQ29tcG9uZW50LFxyXG4gICAgSW52YWxpZEZpZWxkc1NuYWNrQmFyQ29tcG9uZW50LFxyXG4gICAgU21hcnRmb3JtQ29tcG9uZW50LFxyXG4gICAgVWlBY3Rpb25EaWFsb2dCdXR0b25Db21wb25lbnQsXHJcbiAgICBTbWFydGZvcm13aWRnZXRDb21wb25lbnQsXHJcbiAgICBTbWFydGZpbGV1cGxvYWRlckNvbXBvbmVudCxcclxuICAgIFRyYWNrQ2Fwc0RpcmVjdGl2ZSxcclxuICAgIENvbXBhcmFibGVEcm9wZG93bkRpcmVjdGl2ZSxcclxuICAgIENvbXBhcmFibGVNdWx0aXNlbGVjdERpcmVjdGl2ZSxcclxuICAgIExhcmdlRmlsZVNuYWNrQmFyQ29tcG9uZW50LFxyXG4gICAgU29ydGFibGVXaWRnZXRDb21wb25lbnQsXHJcbiAgICBTbWFydE1vbnRoUGlja2VyQ29tcG9uZW50LFxyXG4gICAgU21hcnRGaWxlRWRpdG9yQ29tcG9uZW50LFxyXG4gICAgU21hcnRNdWx0aUZpbGVFZGl0b3JDb21wb25lbnQsXHJcbiAgICBTbWFydFZvaWNlUmVjb3JkZXJDb21wb25lbnQsXHJcbiAgICBIaWdobGlnaHRQaXBlLFxyXG4gICAgVWlBY3Rpb25CdXR0b25Db21wb25lbnQsXHJcblxyXG4gICAgQ2xpY2tNZW51Q29tcG9uZW50LFxyXG4gICAgSG92ZXJNZW51Q29tcG9uZW50LFxyXG4gICAgVXBsb2FkV2lkZ2V0Q29tcG9uZW50LFxyXG4gICAgVm9pY2VSZWNvcmRXaWRnZXRDb21wb25lbnQsXHJcbiAgICBQaG90b0NhcHR1cmVXaWRnZXRDb21wb25lbnQsXHJcbiAgICBQcmltZUZpbGVVcGxvYWRlckNvbXBvbmVudCxcclxuICAgIFNtYXJ0RW1iZWRkZWRTbG90RGlyZWN0aXZlLFxyXG4gICAgVGhlbWVTZWxlY3RvckNvbXBvbmVudCxcclxuICBdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEh0dHBDbGllbnRNb2R1bGUsXHJcbiAgICBNYXRDb21tb25Nb2R1bGUsXHJcbiAgICBNYXRCdXR0b25Nb2R1bGUsXHJcbiAgICBCdXR0b25Nb2R1bGUsXHJcbiAgICBNYXRJY29uTW9kdWxlLFxyXG4gICAgTWF0U25hY2tCYXJNb2R1bGUsXHJcbiAgICBTbWFydEljb25Nb2R1bGUsXHJcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxyXG4gICAgU2hhcmVkTW9kdWxlLFxyXG4gICAgUHJpbWVTaGFyZWRNb2R1bGUsXHJcblxyXG4gICAgQnJvd3Nlck1vZHVsZSxcclxuICAgIE1hdENoaXBzTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxyXG4gICAgTWF0Q2hlY2tib3hNb2R1bGUsXHJcbiAgICBNYXRTZWxlY3RNb2R1bGUsXHJcbiAgICBNYXRJbnB1dE1vZHVsZSxcclxuICAgIE1hdERhdGVwaWNrZXJNb2R1bGUsXHJcbiAgICBNYXRNb21lbnREYXRlTW9kdWxlLFxyXG4gICAgTWF0UmFkaW9Nb2R1bGUsXHJcbiAgICBNYXRTbGlkZVRvZ2dsZU1vZHVsZSxcclxuICAgIE1hdEF1dG9jb21wbGV0ZU1vZHVsZSxcclxuICAgIC8vTmd4TWFza01vZHVsZS5mb3JSb290KCksXHJcbiAgICBRdWlsbE1vZHVsZS5mb3JSb290KCksXHJcbiAgICBEcmFnRHJvcE1vZHVsZSxcclxuICAgIFlvdVR1YmVQbGF5ZXJNb2R1bGUsXHJcbiAgICBJbnB1dFRleHRNb2R1bGUsXHJcbiAgICBNZXNzYWdlc01vZHVsZSxcclxuICAgIE92ZXJsYXlQYW5lbE1vZHVsZSxcclxuICAgIERyb3Bkb3duTW9kdWxlLFxyXG4gICAgTXVsdGlTZWxlY3RNb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIElucHV0U3dpdGNoTW9kdWxlLFxyXG4gICAgSW5wdXROdW1iZXJNb2R1bGUsXHJcbiAgICBUb29sdGlwTW9kdWxlLFxyXG4gICAgSW5wdXRUZXh0YXJlYU1vZHVsZSxcclxuICAgIEltYWdlTW9kdWxlLFxyXG4gICAgRmxvYXRMYWJlbE1vZHVsZSxcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIFRvYXN0TW9kdWxlLFxyXG4gICAgRHluYW1pY0RpYWxvZ01vZHVsZSxcclxuICAgIEZpbGVVcGxvYWRNb2R1bGUsXHJcbiAgICBDaGlwc01vZHVsZSxcclxuICAgIENhbGVuZGFyTW9kdWxlLFxyXG4gICAgQ2hlY2tib3hNb2R1bGUsXHJcbiAgICBPcmRlckxpc3RNb2R1bGUsXHJcbiAgICBJbnB1dE1hc2tNb2R1bGUsXHJcbiAgICBFZGl0b3JNb2R1bGUsXHJcbiAgICBNYXRNZW51TW9kdWxlLFxyXG4gICAgU21hcnRJY29uTW9kdWxlLFxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgVWlBY3Rpb25Ub29sYmFyQ29tcG9uZW50LFxyXG4gICAgVWlBY3Rpb25JbnB1dERpYWxvZ0NvbXBvbmVudCxcclxuICAgIFNtYXJ0Zm9ybUNvbXBvbmVudCxcclxuICAgIFNtYXJ0Zm9ybXdpZGdldENvbXBvbmVudCxcclxuICAgIFVpQWN0aW9uRGlhbG9nQnV0dG9uQ29tcG9uZW50LFxyXG4gICAgU21hcnRmaWxldXBsb2FkZXJDb21wb25lbnQsXHJcbiAgICBIaWdobGlnaHRQaXBlLFxyXG4gICAgQ29tcGFyYWJsZURyb3Bkb3duRGlyZWN0aXZlLFxyXG4gICAgQ29tcGFyYWJsZU11bHRpc2VsZWN0RGlyZWN0aXZlLFxyXG4gICAgVWlBY3Rpb25CdXR0b25Db21wb25lbnQsXHJcbiAgICBDbGlja01lbnVDb21wb25lbnQsXHJcbiAgICBVcGxvYWRXaWRnZXRDb21wb25lbnQsXHJcbiAgICBWb2ljZVJlY29yZFdpZGdldENvbXBvbmVudCxcclxuICAgIFBob3RvQ2FwdHVyZVdpZGdldENvbXBvbmVudCxcclxuICAgIFNtYXJ0RmlsZUVkaXRvckNvbXBvbmVudCxcclxuICAgIFNtYXJ0TXVsdGlGaWxlRWRpdG9yQ29tcG9uZW50LFxyXG4gICAgU21hcnRWb2ljZVJlY29yZGVyQ29tcG9uZW50LFxyXG4gICAgU21hcnRFbWJlZGRlZFNsb3REaXJlY3RpdmUsXHJcbiAgXSxcclxuICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICBEcm9wZG93bixcclxuICAgIE11bHRpU2VsZWN0LFxyXG4gICAgU21hcnRWaWV3Q29udGV4dFNlcnZpY2UsXHJcbiAgICBwcm92aWRlTmd4TWFzaygpLFxyXG4gICAgRGlhbG9nU2VydmljZSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogSFRUUF9JTlRFUkNFUFRPUlMsXHJcbiAgICAgIHVzZUNsYXNzOiBTbWFydFZpZXdDb250ZXh0SW50ZXJjZXB0b3IsXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfSxcclxuICAgIHsgcHJvdmlkZTogRElBTE9HX0RJU0FCTEVfQ0xPU0UsIHVzZVZhbHVlOiB0cnVlIH0sXHJcbiAgICB7IHByb3ZpZGU6ICdjb25maXJtRGlhbG9nU2VydmljZScsIHVzZUNsYXNzOiBVaUFjdGlvbkNvbmZpcm1EaWFsb2dTZXJ2aWNlIH0sXHJcbiAgICB7IHByb3ZpZGU6ICd0ZXh0RmllbGREaWFsb2dTZXJ2aWNlJywgdXNlQ2xhc3M6IFVpQWN0aW9uSW5wdXREaWFsb2dTZXJ2aWNlIH0sXHJcbiAgICB7IHByb3ZpZGU6ICdmaWxlVXBsb2FkRGlhbG9nU2VydmljZScsIHVzZUNsYXNzOiBVaUFjdGlvbkZpbGVVcGxvYWREaWFsb2dTZXJ2aWNlIH0sXHJcblxyXG4gICAgU21hcnRGb3JtU2VydmljZSxcclxuICAgIHsgcHJvdmlkZTogTUFUX0RBVEVfTE9DQUxFLCB1c2VWYWx1ZTogJ2h1LUhVJyB9LFxyXG4gICAgeyBwcm92aWRlOiBNQVRfREFURV9GT1JNQVRTLCB1c2VWYWx1ZTogTUFUX01PTUVOVF9EQVRFX0ZPUk1BVFMgfSxcclxuICAgIHsgcHJvdmlkZTogRGF0ZUFkYXB0ZXIsIHVzZUNsYXNzOiBNb21lbnREYXRlQWRhcHRlciB9LFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBNQVRfTU9NRU5UX0RBVEVfQURBUFRFUl9PUFRJT05TLFxyXG4gICAgICB1c2VWYWx1ZTogeyB1c2VVdGM6IFNtYXJ0V2lkZ2V0U2V0dGluZ3MudXNlVXRjIH0sXHJcbiAgICB9LFxyXG4gICAgeyBwcm92aWRlOiBDT01QT05FTlRfTElCUkFSWSwgdXNlVmFsdWU6IENvbXBvbmVudExpYnJhcnkuTUFURVJJQUwgfSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU21hcnRWaWV3Q29udGV4dE1vZHVsZSB7fVxyXG4iXX0=