@c8y/ngx-components 1021.22.0 → 1021.22.27

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 (148) hide show
  1. package/alarms/alarms-date-filter.component.d.ts +23 -10
  2. package/alarms/alarms-date-filter.component.d.ts.map +1 -1
  3. package/alarms/alarms-type-filter.component.d.ts +21 -14
  4. package/alarms/alarms-type-filter.component.d.ts.map +1 -1
  5. package/alarms/alarms-view.service.d.ts +7 -0
  6. package/alarms/alarms-view.service.d.ts.map +1 -1
  7. package/alarms/alarms.model.d.ts +1 -6
  8. package/alarms/alarms.model.d.ts.map +1 -1
  9. package/alarms/alarms.module.d.ts +1 -1
  10. package/alarms/index.d.ts +1 -0
  11. package/alarms/index.d.ts.map +1 -1
  12. package/branding/shared/data/branding-tracking.service.d.ts +20 -0
  13. package/branding/shared/data/branding-tracking.service.d.ts.map +1 -0
  14. package/branding/shared/data/branding-version.service.d.ts.map +1 -1
  15. package/branding/shared/data/index.d.ts +1 -0
  16. package/branding/shared/data/index.d.ts.map +1 -1
  17. package/branding/shared/data/store-branding.service.d.ts +8 -1
  18. package/branding/shared/data/store-branding.service.d.ts.map +1 -1
  19. package/branding/shared/lazy/branding/branding.component.d.ts +3 -2
  20. package/branding/shared/lazy/branding/branding.component.d.ts.map +1 -1
  21. package/branding/shared/lazy/branding-theme-form/branding-theme-form.component.d.ts.map +1 -1
  22. package/branding/shared/lazy/edit-branding-router-outlet/edit-branding-router-outlet.component.d.ts.map +1 -1
  23. package/cockpit-config/cockpit-config.module.d.ts +1 -1
  24. package/cockpit-config/cockpit-config.module.d.ts.map +1 -1
  25. package/context-dashboard/context-dashboard.service.d.ts +1 -1
  26. package/context-dashboard/context-dashboard.service.d.ts.map +1 -1
  27. package/core/bootstrap/bootstrap.component.d.ts.map +1 -1
  28. package/core/common/service-registry.model.d.ts +2 -1
  29. package/core/common/service-registry.model.d.ts.map +1 -1
  30. package/core/common/ui-state.service.d.ts +0 -1
  31. package/core/common/ui-state.service.d.ts.map +1 -1
  32. package/core/i18n/missing-translation-custom.handler.d.ts +1 -0
  33. package/core/i18n/missing-translation-custom.handler.d.ts.map +1 -1
  34. package/core/plugins/index.d.ts +1 -0
  35. package/core/plugins/index.d.ts.map +1 -1
  36. package/core/plugins/plugin-loaded.pipe.d.ts +12 -0
  37. package/core/plugins/plugin-loaded.pipe.d.ts.map +1 -0
  38. package/core/plugins/plugins-resolve.service.d.ts +4 -2
  39. package/core/plugins/plugins-resolve.service.d.ts.map +1 -1
  40. package/core/plugins/plugins.model.d.ts +3 -1
  41. package/core/plugins/plugins.model.d.ts.map +1 -1
  42. package/core/plugins/plugins.service.d.ts +3 -0
  43. package/core/plugins/plugins.service.d.ts.map +1 -1
  44. package/core/router/router-tabs.resolver.d.ts +2 -2
  45. package/core/router/router-tabs.resolver.d.ts.map +1 -1
  46. package/core/router/scoped-context-route.service.d.ts.map +1 -1
  47. package/ecosystem/application-plugins/application-plugins.component.d.ts.map +1 -1
  48. package/ecosystem/application-plugins/application-plugins.guard.d.ts.map +1 -1
  49. package/ecosystem/application-plugins/orphaned-status-cell-renderer.component.d.ts.map +1 -1
  50. package/esm2022/alarms/alarm-info.component.mjs +3 -3
  51. package/esm2022/alarms/alarm-severity-to-label.pipe.mjs +2 -2
  52. package/esm2022/alarms/alarms-date-filter.component.mjs +94 -42
  53. package/esm2022/alarms/alarms-type-filter.component.mjs +102 -72
  54. package/esm2022/alarms/alarms-view.service.mjs +16 -2
  55. package/esm2022/alarms/alarms.component.mjs +3 -3
  56. package/esm2022/alarms/alarms.model.mjs +1 -1
  57. package/esm2022/alarms/alarms.module.mjs +3 -3
  58. package/esm2022/alarms/index.mjs +2 -1
  59. package/esm2022/branding/shared/data/branding-tracking.service.mjs +58 -0
  60. package/esm2022/branding/shared/data/branding-version.service.mjs +9 -5
  61. package/esm2022/branding/shared/data/index.mjs +2 -1
  62. package/esm2022/branding/shared/data/store-branding.service.mjs +15 -4
  63. package/esm2022/branding/shared/lazy/branding/branding.component.mjs +16 -12
  64. package/esm2022/branding/shared/lazy/branding-theme-form/branding-theme-form.component.mjs +5 -2
  65. package/esm2022/branding/shared/lazy/edit-branding-router-outlet/edit-branding-router-outlet.component.mjs +2 -2
  66. package/esm2022/cockpit-config/cockpit-config.module.mjs +6 -3
  67. package/esm2022/cockpit-config/feature-config.component.mjs +5 -4
  68. package/esm2022/context-dashboard/context-dashboard.service.mjs +47 -13
  69. package/esm2022/core/bootstrap/bootstrap.component.mjs +4 -3
  70. package/esm2022/core/common/service-registry.model.mjs +1 -1
  71. package/esm2022/core/common/ui-state.service.mjs +1 -19
  72. package/esm2022/core/i18n/missing-translation-custom.handler.mjs +5 -1
  73. package/esm2022/core/i18n/translation-loader.service.mjs +2 -2
  74. package/esm2022/core/plugins/index.mjs +2 -1
  75. package/esm2022/core/plugins/plugin-loaded.pipe.mjs +26 -0
  76. package/esm2022/core/plugins/plugins-resolve.service.mjs +5 -1
  77. package/esm2022/core/plugins/plugins.model.mjs +2 -1
  78. package/esm2022/core/plugins/plugins.service.mjs +13 -5
  79. package/esm2022/core/router/router-tabs.resolver.mjs +22 -8
  80. package/esm2022/core/router/scoped-context-route.service.mjs +9 -4
  81. package/esm2022/core/tabs/tabs-outlet.component.mjs +3 -3
  82. package/esm2022/core/version/websdk-plugin-version.factory.mjs +2 -2
  83. package/esm2022/datapoint-selector/datapoint-selection-list/datapoint-selection-list.component.mjs +3 -3
  84. package/esm2022/ecosystem/activity-log/activity-log.component.mjs +3 -3
  85. package/esm2022/ecosystem/application-plugins/application-plugins.component.mjs +67 -23
  86. package/esm2022/ecosystem/application-plugins/application-plugins.guard.mjs +8 -2
  87. package/esm2022/ecosystem/application-plugins/orphaned-status-cell-renderer.component.mjs +7 -1
  88. package/esm2022/interval-picker/interval-picker.component.mjs +1 -1
  89. package/esm2022/interval-picker/interval-picker.model.mjs +1 -1
  90. package/esm2022/protocol-lwm2m/ng1/plugin-checker.service.mjs +5 -1
  91. package/esm2022/widgets/definitions/alarms/alarm-list/index.mjs +2 -1
  92. package/esm2022/widgets/implementations/alarms/alarm-list-widget-config/alarm-list-widget-config.component.mjs +73 -4
  93. package/esm2022/widgets/implementations/alarms/alarm-list-widget-view/alarm-list-widget.component.mjs +29 -5
  94. package/esm2022/widgets/implementations/alarms/alarm-list-widget.model.mjs +7 -1
  95. package/esm2022/widgets/implementations/alarms/alarm-widget.service.mjs +12 -2
  96. package/fesm2022/c8y-ngx-components-alarms.mjs +200 -107
  97. package/fesm2022/c8y-ngx-components-alarms.mjs.map +1 -1
  98. package/fesm2022/c8y-ngx-components-branding-shared-data.mjs +76 -9
  99. package/fesm2022/c8y-ngx-components-branding-shared-data.mjs.map +1 -1
  100. package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs +19 -12
  101. package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs.map +1 -1
  102. package/fesm2022/c8y-ngx-components-cockpit-config.mjs +7 -5
  103. package/fesm2022/c8y-ngx-components-cockpit-config.mjs.map +1 -1
  104. package/fesm2022/c8y-ngx-components-context-dashboard.mjs +46 -12
  105. package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  106. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs +2 -2
  107. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
  108. package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs +79 -23
  109. package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs.map +1 -1
  110. package/fesm2022/c8y-ngx-components-ecosystem.mjs +81 -25
  111. package/fesm2022/c8y-ngx-components-ecosystem.mjs.map +1 -1
  112. package/fesm2022/c8y-ngx-components-interval-picker.mjs.map +1 -1
  113. package/fesm2022/c8y-ngx-components-protocol-lwm2m.mjs +4 -0
  114. package/fesm2022/c8y-ngx-components-protocol-lwm2m.mjs.map +1 -1
  115. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-alarm-list.mjs +1 -0
  116. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-alarm-list.mjs.map +1 -1
  117. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs +124 -15
  118. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs.map +1 -1
  119. package/fesm2022/c8y-ngx-components.mjs +91 -50
  120. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  121. package/interval-picker/interval-picker.component.d.ts +2 -2
  122. package/interval-picker/interval-picker.component.d.ts.map +1 -1
  123. package/interval-picker/interval-picker.model.d.ts +5 -0
  124. package/interval-picker/interval-picker.model.d.ts.map +1 -1
  125. package/locales/de.po +431 -538
  126. package/locales/en.po +2 -889
  127. package/locales/en_US.po +2 -880
  128. package/locales/es.po +462 -540
  129. package/locales/fr.po +470 -549
  130. package/locales/ja_JP.po +405 -598
  131. package/locales/ko.po +649 -502
  132. package/locales/locales.pot +27 -12
  133. package/locales/nl.po +463 -541
  134. package/locales/pl.po +502 -552
  135. package/locales/pt_BR.po +466 -543
  136. package/locales/zh_CN.po +650 -498
  137. package/locales/zh_TW.po +650 -498
  138. package/package.json +1 -1
  139. package/protocol-lwm2m/ng1/plugin-checker.service.d.ts +4 -0
  140. package/protocol-lwm2m/ng1/plugin-checker.service.d.ts.map +1 -1
  141. package/widgets/definitions/alarms/alarm-list/index.d.ts.map +1 -1
  142. package/widgets/implementations/alarms/alarm-list-widget-config/alarm-list-widget-config.component.d.ts +12 -1
  143. package/widgets/implementations/alarms/alarm-list-widget-config/alarm-list-widget-config.component.d.ts.map +1 -1
  144. package/widgets/implementations/alarms/alarm-list-widget-view/alarm-list-widget.component.d.ts +12 -1
  145. package/widgets/implementations/alarms/alarm-list-widget-view/alarm-list-widget.component.d.ts.map +1 -1
  146. package/widgets/implementations/alarms/alarm-list-widget.model.d.ts +11 -1
  147. package/widgets/implementations/alarms/alarm-list-widget.model.d.ts.map +1 -1
  148. package/widgets/implementations/alarms/alarm-widget.service.d.ts.map +1 -1
@@ -120,11 +120,11 @@ export class TabsOutletComponent {
120
120
  return { widthScroll, width, scrollLeft };
121
121
  }
122
122
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: TabsOutletComponent, deps: [{ token: i1.Router }, { token: i0.Renderer2 }, { token: i2.HeaderService }, { token: i3.TabsService }], target: i0.ɵɵFactoryTarget.Component }); }
123
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: TabsOutletComponent, selector: "c8y-tabs-outlet,c8y-ui-tabs", inputs: { tabs: "tabs", orientation: "orientation", navigatorOpen: "navigatorOpen", outletName: "outletName", context: "context", hasHeader: "hasHeader" }, host: { properties: { "class.has-header": "this.hasHeader", "class.navigator-open": "this.isNavigatorOpen", "class.page-tabs": "this.hasTabs", "class.page-tabs-horizontal": "this.isHorizontal", "class.page-tabs-vertical": "this.isVertical" } }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ElementRef, static: true }, { propertyName: "tabsContainer", first: true, predicate: ["tabsContainer"], descendants: true, read: ElementRef }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"tabContainer\"\n [ngClass]=\"{ 'hidden-xs': !outletName }\"\n #container\n>\n <button\n class=\"tabs-slider tabs-slider-left\"\n title=\"{{ 'Scroll to the left' | translate }}\"\n type=\"button\"\n #left\n *ngIf=\"showLeft || showRight\"\n [disabled]=\"!showLeft\"\n (click)=\"scroll('left')\"\n >\n <i [c8yIcon]=\"'chevron-left'\"></i>\n </button>\n <button\n class=\"tabs-slider tabs-slider-right\"\n title=\"{{ 'Scroll to the right' | translate }}\"\n type=\"button\"\n #right\n *ngIf=\"showRight || showLeft\"\n [disabled]=\"!showRight\"\n (click)=\"scroll('right')\"\n >\n <i [c8yIcon]=\"'chevron-right'\"></i>\n </button>\n <ng-container *ngIf=\"!outletName\">\n <div\n class=\"nav nav-tabs nav-tabsc8y\"\n role=\"list\"\n #tabsContainer\n >\n <ng-container *ngFor=\"let tab of tabs\">\n <div\n role=\"listitem\"\n [ngClass]=\"{ active: rla?.isActive }\"\n *ngIf=\"!tab.component && !tab.hide\"\n >\n <a\n [routerLink]=\"tab.path\"\n routerLinkActive\n #rla=\"routerLinkActive\"\n [ngClass]=\"{ 'p-r-24': !tab.template && tab?.badge }\"\n (click)=\"tab.onSelect?.emit()\"\n >\n <i\n [c8yIcon]=\"tab?.icon\"\n *ngIf=\"!tab.template && tab?.icon\"\n ></i>\n <span\n title=\"{{ tab?.label | translate }}\"\n *ngIf=\"!tab.template && !tab.component\"\n >\n {{ tab?.label | translate }}\n </span>\n <span\n class=\"dashboard-template-marker\"\n tooltip=\"{{ tab?.tooltipText | translate }}\"\n placement=\"bottom\"\n container=\"body\"\n [adaptivePosition]=\"false\"\n [delay]=\"300\"\n *ngIf=\"!tab.template && tab?.badge\"\n ></span>\n </a>\n <ng-container *ngTemplateOutlet=\"tab.template; injector: tab.injector\"></ng-container>\n </div>\n <ng-container *ngComponentOutlet=\"tab.component; injector: tab.injector\"></ng-container>\n </ng-container>\n </div>\n </ng-container>\n\n <div\n class=\"component-tabs nav nav-tabs nav-tabsc8y\"\n *ngIf=\"outletName\"\n #tabsContainer\n >\n <ng-container *ngFor=\"let tab of tabs; trackBy: trackByPath\">\n <div\n [ngClass]=\"{ active: tab.isActive }\"\n [routerLink]=\"tab.path\"\n [routerLinkActive]=\"tab.path ? 'active' : ''\"\n >\n <a\n class=\"pointer\"\n title=\"{{ tab?.label | translate }}\"\n (click)=\"tab.onSelect?.emit()\"\n >\n <i [c8yIcon]=\"tab?.icon\"></i>\n <span>\n {{ tab?.label | translate }}\n </span>\n </a>\n </div>\n </ng-container>\n </div>\n</div>\n\n<div\n class=\"visible-xs mobile-tabs\"\n *ngIf=\"!outletName\"\n>\n <ul class=\"list-unstyled d-flex m-b-0\">\n <li class=\"c8y-select-wrapper flex-grow\">\n <select\n (change)=\"navigateTo($event.target.value)\"\n #select\n >\n <ng-container *ngFor=\"let tab of tabs\">\n <option\n *ngIf=\"!tab.component\"\n [value]=\"tab.path\"\n [selected]=\"isActive(tab)\"\n >\n {{ tab?.label | translate }}\n </option>\n </ng-container>\n </select>\n </li>\n <ng-container *ngFor=\"let tab of tabs\">\n <ng-container *ngIf=\"tab.component\">\n <ng-container\n *c8yComponentOutlet=\"tab.component; environmentInjector: tab.injector\"\n ></ng-container>\n </ng-container>\n </ng-container>\n </ul>\n</div>\n", dependencies: [{ kind: "directive", type: i4.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i6.C8yComponentOutlet, selector: "[c8yComponentOutlet]", inputs: ["c8yComponentOutlet", "c8yComponentOutletInjector", "c8yComponentOutletEnvironmentInjector"] }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: i7.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "pipe", type: i8.C8yTranslatePipe, name: "translate" }] }); }
123
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: TabsOutletComponent, selector: "c8y-tabs-outlet,c8y-ui-tabs", inputs: { tabs: "tabs", orientation: "orientation", navigatorOpen: "navigatorOpen", outletName: "outletName", context: "context", hasHeader: "hasHeader" }, host: { properties: { "class.has-header": "this.hasHeader", "class.navigator-open": "this.isNavigatorOpen", "class.page-tabs": "this.hasTabs", "class.page-tabs-horizontal": "this.isHorizontal", "class.page-tabs-vertical": "this.isVertical" } }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ElementRef, static: true }, { propertyName: "tabsContainer", first: true, predicate: ["tabsContainer"], descendants: true, read: ElementRef }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"tabContainer\"\n [ngClass]=\"{ 'hidden-xs': !outletName }\"\n #container\n>\n <button\n class=\"tabs-slider tabs-slider-left\"\n title=\"{{ 'Scroll to the left' | translate }}\"\n type=\"button\"\n #left\n *ngIf=\"showLeft || showRight\"\n [disabled]=\"!showLeft\"\n (click)=\"scroll('left')\"\n >\n <i [c8yIcon]=\"'chevron-left'\"></i>\n </button>\n <button\n class=\"tabs-slider tabs-slider-right\"\n title=\"{{ 'Scroll to the right' | translate }}\"\n type=\"button\"\n #right\n *ngIf=\"showRight || showLeft\"\n [disabled]=\"!showRight\"\n (click)=\"scroll('right')\"\n >\n <i [c8yIcon]=\"'chevron-right'\"></i>\n </button>\n <ng-container *ngIf=\"!outletName\">\n <div\n class=\"nav nav-tabs nav-tabsc8y\"\n role=\"list\"\n #tabsContainer\n >\n <ng-container *ngFor=\"let tab of tabs\">\n <div\n role=\"listitem\"\n [ngClass]=\"{ active: rla?.isActive }\"\n *ngIf=\"!tab.component && !tab.hide\"\n >\n <a\n [routerLink]=\"tab.path\"\n routerLinkActive\n [queryParamsHandling]=\"'preserve'\"\n #rla=\"routerLinkActive\"\n [ngClass]=\"{ 'p-r-24': !tab.template && tab?.badge }\"\n (click)=\"tab.onSelect?.emit()\"\n >\n <i\n [c8yIcon]=\"tab?.icon\"\n *ngIf=\"!tab.template && tab?.icon\"\n ></i>\n <span\n title=\"{{ tab?.label | translate }}\"\n *ngIf=\"!tab.template && !tab.component\"\n >\n {{ tab?.label | translate }}\n </span>\n <span\n class=\"dashboard-template-marker\"\n tooltip=\"{{ tab?.tooltipText | translate }}\"\n placement=\"bottom\"\n container=\"body\"\n [adaptivePosition]=\"false\"\n [delay]=\"300\"\n *ngIf=\"!tab.template && tab?.badge\"\n ></span>\n </a>\n <ng-container *ngTemplateOutlet=\"tab.template; injector: tab.injector\"></ng-container>\n </div>\n <ng-container *ngComponentOutlet=\"tab.component; injector: tab.injector\"></ng-container>\n </ng-container>\n </div>\n </ng-container>\n\n <div\n class=\"component-tabs nav nav-tabs nav-tabsc8y\"\n *ngIf=\"outletName\"\n #tabsContainer\n >\n <ng-container *ngFor=\"let tab of tabs; trackBy: trackByPath\">\n <div\n [ngClass]=\"{ active: tab.isActive }\"\n [routerLink]=\"tab.path\"\n [routerLinkActive]=\"tab.path ? 'active' : ''\"\n [queryParamsHandling]=\"'preserve'\"\n >\n <a\n class=\"pointer\"\n title=\"{{ tab?.label | translate }}\"\n (click)=\"tab.onSelect?.emit()\"\n >\n <i [c8yIcon]=\"tab?.icon\"></i>\n <span>\n {{ tab?.label | translate }}\n </span>\n </a>\n </div>\n </ng-container>\n </div>\n</div>\n\n<div\n class=\"visible-xs mobile-tabs\"\n *ngIf=\"!outletName\"\n>\n <ul class=\"list-unstyled d-flex m-b-0\">\n <li class=\"c8y-select-wrapper flex-grow\">\n <select\n (change)=\"navigateTo($event.target.value)\"\n #select\n >\n <ng-container *ngFor=\"let tab of tabs\">\n <option\n *ngIf=\"!tab.component\"\n [value]=\"tab.path\"\n [selected]=\"isActive(tab)\"\n >\n {{ tab?.label | translate }}\n </option>\n </ng-container>\n </select>\n </li>\n <ng-container *ngFor=\"let tab of tabs\">\n <ng-container *ngIf=\"tab.component\">\n <ng-container\n *c8yComponentOutlet=\"tab.component; environmentInjector: tab.injector\"\n ></ng-container>\n </ng-container>\n </ng-container>\n </ul>\n</div>\n", dependencies: [{ kind: "directive", type: i4.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i6.C8yComponentOutlet, selector: "[c8yComponentOutlet]", inputs: ["c8yComponentOutlet", "c8yComponentOutletInjector", "c8yComponentOutletEnvironmentInjector"] }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: i7.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "pipe", type: i8.C8yTranslatePipe, name: "translate" }] }); }
124
124
  }
125
125
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: TabsOutletComponent, decorators: [{
126
126
  type: Component,
127
- args: [{ selector: 'c8y-tabs-outlet,c8y-ui-tabs', template: "<div\n class=\"tabContainer\"\n [ngClass]=\"{ 'hidden-xs': !outletName }\"\n #container\n>\n <button\n class=\"tabs-slider tabs-slider-left\"\n title=\"{{ 'Scroll to the left' | translate }}\"\n type=\"button\"\n #left\n *ngIf=\"showLeft || showRight\"\n [disabled]=\"!showLeft\"\n (click)=\"scroll('left')\"\n >\n <i [c8yIcon]=\"'chevron-left'\"></i>\n </button>\n <button\n class=\"tabs-slider tabs-slider-right\"\n title=\"{{ 'Scroll to the right' | translate }}\"\n type=\"button\"\n #right\n *ngIf=\"showRight || showLeft\"\n [disabled]=\"!showRight\"\n (click)=\"scroll('right')\"\n >\n <i [c8yIcon]=\"'chevron-right'\"></i>\n </button>\n <ng-container *ngIf=\"!outletName\">\n <div\n class=\"nav nav-tabs nav-tabsc8y\"\n role=\"list\"\n #tabsContainer\n >\n <ng-container *ngFor=\"let tab of tabs\">\n <div\n role=\"listitem\"\n [ngClass]=\"{ active: rla?.isActive }\"\n *ngIf=\"!tab.component && !tab.hide\"\n >\n <a\n [routerLink]=\"tab.path\"\n routerLinkActive\n #rla=\"routerLinkActive\"\n [ngClass]=\"{ 'p-r-24': !tab.template && tab?.badge }\"\n (click)=\"tab.onSelect?.emit()\"\n >\n <i\n [c8yIcon]=\"tab?.icon\"\n *ngIf=\"!tab.template && tab?.icon\"\n ></i>\n <span\n title=\"{{ tab?.label | translate }}\"\n *ngIf=\"!tab.template && !tab.component\"\n >\n {{ tab?.label | translate }}\n </span>\n <span\n class=\"dashboard-template-marker\"\n tooltip=\"{{ tab?.tooltipText | translate }}\"\n placement=\"bottom\"\n container=\"body\"\n [adaptivePosition]=\"false\"\n [delay]=\"300\"\n *ngIf=\"!tab.template && tab?.badge\"\n ></span>\n </a>\n <ng-container *ngTemplateOutlet=\"tab.template; injector: tab.injector\"></ng-container>\n </div>\n <ng-container *ngComponentOutlet=\"tab.component; injector: tab.injector\"></ng-container>\n </ng-container>\n </div>\n </ng-container>\n\n <div\n class=\"component-tabs nav nav-tabs nav-tabsc8y\"\n *ngIf=\"outletName\"\n #tabsContainer\n >\n <ng-container *ngFor=\"let tab of tabs; trackBy: trackByPath\">\n <div\n [ngClass]=\"{ active: tab.isActive }\"\n [routerLink]=\"tab.path\"\n [routerLinkActive]=\"tab.path ? 'active' : ''\"\n >\n <a\n class=\"pointer\"\n title=\"{{ tab?.label | translate }}\"\n (click)=\"tab.onSelect?.emit()\"\n >\n <i [c8yIcon]=\"tab?.icon\"></i>\n <span>\n {{ tab?.label | translate }}\n </span>\n </a>\n </div>\n </ng-container>\n </div>\n</div>\n\n<div\n class=\"visible-xs mobile-tabs\"\n *ngIf=\"!outletName\"\n>\n <ul class=\"list-unstyled d-flex m-b-0\">\n <li class=\"c8y-select-wrapper flex-grow\">\n <select\n (change)=\"navigateTo($event.target.value)\"\n #select\n >\n <ng-container *ngFor=\"let tab of tabs\">\n <option\n *ngIf=\"!tab.component\"\n [value]=\"tab.path\"\n [selected]=\"isActive(tab)\"\n >\n {{ tab?.label | translate }}\n </option>\n </ng-container>\n </select>\n </li>\n <ng-container *ngFor=\"let tab of tabs\">\n <ng-container *ngIf=\"tab.component\">\n <ng-container\n *c8yComponentOutlet=\"tab.component; environmentInjector: tab.injector\"\n ></ng-container>\n </ng-container>\n </ng-container>\n </ul>\n</div>\n" }]
127
+ args: [{ selector: 'c8y-tabs-outlet,c8y-ui-tabs', template: "<div\n class=\"tabContainer\"\n [ngClass]=\"{ 'hidden-xs': !outletName }\"\n #container\n>\n <button\n class=\"tabs-slider tabs-slider-left\"\n title=\"{{ 'Scroll to the left' | translate }}\"\n type=\"button\"\n #left\n *ngIf=\"showLeft || showRight\"\n [disabled]=\"!showLeft\"\n (click)=\"scroll('left')\"\n >\n <i [c8yIcon]=\"'chevron-left'\"></i>\n </button>\n <button\n class=\"tabs-slider tabs-slider-right\"\n title=\"{{ 'Scroll to the right' | translate }}\"\n type=\"button\"\n #right\n *ngIf=\"showRight || showLeft\"\n [disabled]=\"!showRight\"\n (click)=\"scroll('right')\"\n >\n <i [c8yIcon]=\"'chevron-right'\"></i>\n </button>\n <ng-container *ngIf=\"!outletName\">\n <div\n class=\"nav nav-tabs nav-tabsc8y\"\n role=\"list\"\n #tabsContainer\n >\n <ng-container *ngFor=\"let tab of tabs\">\n <div\n role=\"listitem\"\n [ngClass]=\"{ active: rla?.isActive }\"\n *ngIf=\"!tab.component && !tab.hide\"\n >\n <a\n [routerLink]=\"tab.path\"\n routerLinkActive\n [queryParamsHandling]=\"'preserve'\"\n #rla=\"routerLinkActive\"\n [ngClass]=\"{ 'p-r-24': !tab.template && tab?.badge }\"\n (click)=\"tab.onSelect?.emit()\"\n >\n <i\n [c8yIcon]=\"tab?.icon\"\n *ngIf=\"!tab.template && tab?.icon\"\n ></i>\n <span\n title=\"{{ tab?.label | translate }}\"\n *ngIf=\"!tab.template && !tab.component\"\n >\n {{ tab?.label | translate }}\n </span>\n <span\n class=\"dashboard-template-marker\"\n tooltip=\"{{ tab?.tooltipText | translate }}\"\n placement=\"bottom\"\n container=\"body\"\n [adaptivePosition]=\"false\"\n [delay]=\"300\"\n *ngIf=\"!tab.template && tab?.badge\"\n ></span>\n </a>\n <ng-container *ngTemplateOutlet=\"tab.template; injector: tab.injector\"></ng-container>\n </div>\n <ng-container *ngComponentOutlet=\"tab.component; injector: tab.injector\"></ng-container>\n </ng-container>\n </div>\n </ng-container>\n\n <div\n class=\"component-tabs nav nav-tabs nav-tabsc8y\"\n *ngIf=\"outletName\"\n #tabsContainer\n >\n <ng-container *ngFor=\"let tab of tabs; trackBy: trackByPath\">\n <div\n [ngClass]=\"{ active: tab.isActive }\"\n [routerLink]=\"tab.path\"\n [routerLinkActive]=\"tab.path ? 'active' : ''\"\n [queryParamsHandling]=\"'preserve'\"\n >\n <a\n class=\"pointer\"\n title=\"{{ tab?.label | translate }}\"\n (click)=\"tab.onSelect?.emit()\"\n >\n <i [c8yIcon]=\"tab?.icon\"></i>\n <span>\n {{ tab?.label | translate }}\n </span>\n </a>\n </div>\n </ng-container>\n </div>\n</div>\n\n<div\n class=\"visible-xs mobile-tabs\"\n *ngIf=\"!outletName\"\n>\n <ul class=\"list-unstyled d-flex m-b-0\">\n <li class=\"c8y-select-wrapper flex-grow\">\n <select\n (change)=\"navigateTo($event.target.value)\"\n #select\n >\n <ng-container *ngFor=\"let tab of tabs\">\n <option\n *ngIf=\"!tab.component\"\n [value]=\"tab.path\"\n [selected]=\"isActive(tab)\"\n >\n {{ tab?.label | translate }}\n </option>\n </ng-container>\n </select>\n </li>\n <ng-container *ngFor=\"let tab of tabs\">\n <ng-container *ngIf=\"tab.component\">\n <ng-container\n *c8yComponentOutlet=\"tab.component; environmentInjector: tab.injector\"\n ></ng-container>\n </ng-container>\n </ng-container>\n </ul>\n</div>\n" }]
128
128
  }], ctorParameters: () => [{ type: i1.Router }, { type: i0.Renderer2 }, { type: i2.HeaderService }, { type: i3.TabsService }], propDecorators: { tabs: [{
129
129
  type: Input
130
130
  }], orientation: [{
@@ -159,4 +159,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
159
159
  type: ViewChild,
160
160
  args: ['tabsContainer', { read: ElementRef, static: false }]
161
161
  }] } });
162
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy1vdXRsZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS90YWJzL3RhYnMtb3V0bGV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2NvcmUvdGFicy90YWJzLW91dGxldC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxXQUFXLEVBQ1gsU0FBUyxFQUNULFVBQVUsRUFDVixTQUFTLEVBS1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwRixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFekMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7OztBQU03QyxNQUFNLE9BQU8sbUJBQW1CO0lBYTlCLElBQXlDLGVBQWU7UUFDdEQsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFDRCxJQUFvQyxPQUFPO1FBQ3pDLElBQUksV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUNyQixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNkLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUM7UUFDM0QsQ0FBQztRQUNELE9BQU8sV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksV0FBVyxDQUFDLElB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V0FBVzt1QkFBQyxrQkFBa0I7Z0JBSUMsZUFBZTtzQkFBdkQsV0FBVzt1QkFBQyxzQkFBc0I7Z0JBR0MsT0FBTztzQkFBMUMsV0FBVzt1QkFBQyxpQkFBaUI7Z0JBT2lCLFlBQVk7c0JBQTFELFdBQVc7dUJBQUMsNEJBQTRCO2dCQUdJLFVBQVU7c0JBQXRELFdBQVc7dUJBQUMsMEJBQTBCO2dCQUc2QixTQUFTO3NCQUE1RSxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFFbEQsYUFBYTtzQkFEcEIsU0FBUzt1QkFBQyxlQUFlLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBIb3N0QmluZGluZyxcbiAgUmVuZGVyZXIyLFxuICBFbGVtZW50UmVmLFxuICBWaWV3Q2hpbGQsXG4gIE9uRGVzdHJveSxcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBtYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGZyb21FdmVudFBhdHRlcm4sIGZyb21FdmVudCwgbWVyZ2UsIEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFRhYiB9IGZyb20gJy4vdGFiLm1vZGVsJztcbmltcG9ydCB7IEhlYWRlclNlcnZpY2UgfSBmcm9tICcuLi9oZWFkZXIvaGVhZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGFic1NlcnZpY2UgfSBmcm9tICcuL3RhYnMuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS10YWJzLW91dGxldCxjOHktdWktdGFicycsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJzLW91dGxldC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgVGFic091dGxldENvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSwgQWZ0ZXJDb250ZW50SW5pdCwgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgdGFiczogVGFiW10gPSBbXTtcbiAgQElucHV0KCkgb3JpZW50YXRpb246ICd2ZXJ0aWNhbCcgfCAnaG9yaXpvbnRhbCcgPSAndmVydGljYWwnO1xuICBASW5wdXQoKSBuYXZpZ2F0b3JPcGVuID0gZmFsc2U7XG4gIEBJbnB1dCgpIG91dGxldE5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgY29udGV4dDogYW55O1xuICAvKipcbiAgICogSWRlbnRpZmllcyBpZiB0aGUgY3VycmVudCB2aWV3IGhhcyBhIGhlYWRlciBlbGVtZW50LlxuICAgKi9cbiAgQElucHV0KCkgQEhvc3RCaW5kaW5nKCdjbGFzcy5oYXMtaGVhZGVyJykgaGFzSGVhZGVyID0gZmFsc2U7XG5cbiAgc2hvd0xlZnQgPSBmYWxzZTtcbiAgc2hvd1JpZ2h0ID0gZmFsc2U7XG4gIEBIb3N0QmluZGluZygnY2xhc3MubmF2aWdhdG9yLW9wZW4nKSBnZXQgaXNOYXZpZ2F0b3JPcGVuKCkge1xuICAgIHJldHVybiB0aGlzLm5hdmlnYXRvck9wZW47XG4gIH1cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5wYWdlLXRhYnMnKSBnZXQgaGFzVGFicygpIHtcbiAgICBsZXQgdmlzaWJsZVRhYnMgPSBbXTtcbiAgICBpZiAodGhpcy50YWJzKSB7XG4gICAgICB2aXNpYmxlVGFicyA9IHRoaXMudGFicy5maWx0ZXIodGFiID0+IHRhYi5oaWRlICE9PSB0cnVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHZpc2libGVUYWJzLmxlbmd0aCA+IDEgfHwgdmlzaWJsZVRhYnMuZmluZCh0YWIgPT4gdGFiLnNob3dBbHdheXMpO1xuICB9XG4gIEBIb3N0QmluZGluZygnY2xhc3MucGFnZS10YWJzLWhvcml6b250YWwnKSBnZXQgaXNIb3Jpem9udGFsKCkge1xuICAgIHJldHVybiB0aGlzLm9yaWVudGF0aW9uID09PSAnaG9yaXpvbnRhbCc7XG4gIH1cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5wYWdlLXRhYnMtdmVydGljYWwnKSBnZXQgaXNWZXJ0aWNhbCgpIHtcbiAgICByZXR1cm4gdGhpcy5vcmllbnRhdGlvbiAhPT0gJ2hvcml6b250YWwnO1xuICB9XG4gIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiB0cnVlIH0pIHByaXZhdGUgY29udGFpbmVyOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCd0YWJzQ29udGFpbmVyJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IGZhbHNlIH0pXG4gIHByaXZhdGUgdGFic0NvbnRhaW5lcjogRWxlbWVudFJlZjtcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgdGFic0NoYW5nZXMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUYWJbXT4oW10pO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgaGVhZGVyOiBIZWFkZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgdGFic1NlcnZpY2U6IFRhYnNTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5vdXRsZXROYW1lICYmIHRoaXMudGFicy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMudGFic1NlcnZpY2UuaXRlbXMkXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCh0YWJzID0+IHRhYnMuZmlsdGVyKHRhYiA9PiB0YWIudGFic091dGxldCA9PT0gdGhpcy5vdXRsZXROYW1lKSksXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSh0YWJzID0+IHtcbiAgICAgICAgICB0aGlzLnRhYnMgPSB0YWJzO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMudGFicykge1xuICAgICAgdGhpcy50YWJzID0gdGhpcy50YWJzLmZpbHRlcih0YWIgPT4gdGFiLnRhYnNPdXRsZXQgPT09IHRoaXMub3V0bGV0TmFtZSk7XG4gICAgICB0aGlzLnRhYnNDaGFuZ2VzJC5uZXh0KHRoaXMudGFicyk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIGlmICh0aGlzLm9yaWVudGF0aW9uID09PSAnaG9yaXpvbnRhbCcpIHtcbiAgICAgIHRoaXMuc2Nyb2xsU3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgdHJhY2tCeVBhdGgoaW5kZXgsIHRhYjogVGFiKSB7XG4gICAgcmV0dXJuIHRhYi5wYXRoID8gdGFiLnBhdGggOiBpbmRleDtcbiAgfVxuXG4gIGlzQWN0aXZlKHRhYjogVGFiKSB7XG4gICAgaWYgKHRhYiAmJiB0YWIucGF0aCkge1xuICAgICAgcmV0dXJuIHRoaXMucm91dGVyLmlzQWN0aXZlKHRhYi5wYXRoLCBmYWxzZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBuYXZpZ2F0ZVRvKHBhdGgpIHtcbiAgICB0aGlzLmhlYWRlci50b2dnbGUoKTtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbcGF0aF0pO1xuICB9XG5cbiAgc2Nyb2xsKGRpcmVjdGlvbjogJ3JpZ2h0JyB8ICdsZWZ0JyA9ICdyaWdodCcpIHtcbiAgICBjb25zdCB7IHdpZHRoU2Nyb2xsLCB3aWR0aCwgc2Nyb2xsTGVmdCB9ID0gdGhpcy5nZXREaW1lbnNpb25zKCk7XG4gICAgY29uc3QgbXVsdGlwbGllciA9IGRpcmVjdGlvbiA9PT0gJ2xlZnQnID8gLTEgOiAxO1xuXG4gICAgbGV0IHRhcmdldFNjcm9sbCA9IHNjcm9sbExlZnQgKyB3aWR0aCAqIG11bHRpcGxpZXI7XG4gICAgaWYgKHRhcmdldFNjcm9sbCA8IDApIHtcbiAgICAgIHRhcmdldFNjcm9sbCA9IDA7XG4gICAgfVxuICAgIGlmICh0YXJnZXRTY3JvbGwgPiB3aWR0aFNjcm9sbCAtIHdpZHRoKSB7XG4gICAgICB0YXJnZXRTY3JvbGwgPSB3aWR0aFNjcm9sbCAtIHdpZHRoO1xuICAgIH1cbiAgICB0aGlzLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPSB0YXJnZXRTY3JvbGw7XG4gIH1cblxuICBwcml2YXRlIHNjcm9sbFN1YnNjcmliZSgpIHtcbiAgICBsZXQgdW5saXN0ZW47XG4gICAgbWVyZ2UoXG4gICAgICB0aGlzLnRhYnNDaGFuZ2VzJCxcbiAgICAgIGZyb21FdmVudCh0aGlzLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50LCAnc2Nyb2xsJyksXG4gICAgICBmcm9tRXZlbnRQYXR0ZXJuKFxuICAgICAgICAoaGFuZGxlcjogYW55KSA9PiB7XG4gICAgICAgICAgdW5saXN0ZW4gPSB0aGlzLnJlbmRlcmVyLmxpc3Rlbignd2luZG93JywgJ3Jlc2l6ZScsIGhhbmRsZXIpO1xuICAgICAgICB9LFxuICAgICAgICAoKSA9PiB1bmxpc3RlbigpXG4gICAgICApXG4gICAgKVxuICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDI1MCksIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy51cGRhdGVTY3JvbGwoKSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVNjcm9sbCgpIHtcbiAgICBjb25zdCB7IHdpZHRoU2Nyb2xsLCB3aWR0aCwgc2Nyb2xsTGVmdCB9ID0gdGhpcy5nZXREaW1lbnNpb25zKCk7XG4gICAgdGhpcy5zaG93TGVmdCA9ICEhc2Nyb2xsTGVmdDtcbiAgICB0aGlzLnNob3dSaWdodCA9IHdpZHRoU2Nyb2xsID4gd2lkdGggKyBzY3JvbGxMZWZ0O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREaW1lbnNpb25zKCkge1xuICAgIGNvbnN0IGVsVGFicyA9IHRoaXMudGFic0NvbnRhaW5lci5uYXRpdmVFbGVtZW50O1xuICAgIGNvbnN0IGVsID0gdGhpcy5jb250YWluZXIubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCB3aWR0aFNjcm9sbCA9IGVsVGFicy5zY3JvbGxXaWR0aDtcbiAgICBjb25zdCB3aWR0aCA9IGVsLmNsaWVudFdpZHRoO1xuICAgIGNvbnN0IHNjcm9sbExlZnQgPSBlbC5zY3JvbGxMZWZ0O1xuICAgIHJldHVybiB7IHdpZHRoU2Nyb2xsLCB3aWR0aCwgc2Nyb2xsTGVmdCB9O1xuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwidGFiQ29udGFpbmVyXCJcbiAgW25nQ2xhc3NdPVwieyAnaGlkZGVuLXhzJzogIW91dGxldE5hbWUgfVwiXG4gICNjb250YWluZXJcbj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwidGFicy1zbGlkZXIgdGFicy1zbGlkZXItbGVmdFwiXG4gICAgdGl0bGU9XCJ7eyAnU2Nyb2xsIHRvIHRoZSBsZWZ0JyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgI2xlZnRcbiAgICAqbmdJZj1cInNob3dMZWZ0IHx8IHNob3dSaWdodFwiXG4gICAgW2Rpc2FibGVkXT1cIiFzaG93TGVmdFwiXG4gICAgKGNsaWNrKT1cInNjcm9sbCgnbGVmdCcpXCJcbiAgPlxuICAgIDxpIFtjOHlJY29uXT1cIidjaGV2cm9uLWxlZnQnXCI+PC9pPlxuICA8L2J1dHRvbj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwidGFicy1zbGlkZXIgdGFicy1zbGlkZXItcmlnaHRcIlxuICAgIHRpdGxlPVwie3sgJ1Njcm9sbCB0byB0aGUgcmlnaHQnIHwgdHJhbnNsYXRlIH19XCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAjcmlnaHRcbiAgICAqbmdJZj1cInNob3dSaWdodCB8fCBzaG93TGVmdFwiXG4gICAgW2Rpc2FibGVkXT1cIiFzaG93UmlnaHRcIlxuICAgIChjbGljayk9XCJzY3JvbGwoJ3JpZ2h0JylcIlxuICA+XG4gICAgPGkgW2M4eUljb25dPVwiJ2NoZXZyb24tcmlnaHQnXCI+PC9pPlxuICA8L2J1dHRvbj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFvdXRsZXROYW1lXCI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJuYXYgbmF2LXRhYnMgbmF2LXRhYnNjOHlcIlxuICAgICAgcm9sZT1cImxpc3RcIlxuICAgICAgI3RhYnNDb250YWluZXJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0YWIgb2YgdGFic1wiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgcm9sZT1cImxpc3RpdGVtXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7IGFjdGl2ZTogcmxhPy5pc0FjdGl2ZSB9XCJcbiAgICAgICAgICAqbmdJZj1cIiF0YWIuY29tcG9uZW50ICYmICF0YWIuaGlkZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8YVxuICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwidGFiLnBhdGhcIlxuICAgICAgICAgICAgcm91dGVyTGlua0FjdGl2ZVxuICAgICAgICAgICAgI3JsYT1cInJvdXRlckxpbmtBY3RpdmVcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAncC1yLTI0JzogIXRhYi50ZW1wbGF0ZSAmJiB0YWI/LmJhZGdlIH1cIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRhYi5vblNlbGVjdD8uZW1pdCgpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aVxuICAgICAgICAgICAgICBbYzh5SWNvbl09XCJ0YWI/Lmljb25cIlxuICAgICAgICAgICAgICAqbmdJZj1cIiF0YWIudGVtcGxhdGUgJiYgdGFiPy5pY29uXCJcbiAgICAgICAgICAgID48L2k+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICB0aXRsZT1cInt7IHRhYj8ubGFiZWwgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAqbmdJZj1cIiF0YWIudGVtcGxhdGUgJiYgIXRhYi5jb21wb25lbnRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyB0YWI/LmxhYmVsIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBjbGFzcz1cImRhc2hib2FyZC10ZW1wbGF0ZS1tYXJrZXJcIlxuICAgICAgICAgICAgICB0b29sdGlwPVwie3sgdGFiPy50b29sdGlwVGV4dCB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgICAgICAgICBbYWRhcHRpdmVQb3NpdGlvbl09XCJmYWxzZVwiXG4gICAgICAgICAgICAgIFtkZWxheV09XCIzMDBcIlxuICAgICAgICAgICAgICAqbmdJZj1cIiF0YWIudGVtcGxhdGUgJiYgdGFiPy5iYWRnZVwiXG4gICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgIDwvYT5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFiLnRlbXBsYXRlOyBpbmplY3RvcjogdGFiLmluamVjdG9yXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0NvbXBvbmVudE91dGxldD1cInRhYi5jb21wb25lbnQ7IGluamVjdG9yOiB0YWIuaW5qZWN0b3JcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8ZGl2XG4gICAgY2xhc3M9XCJjb21wb25lbnQtdGFicyBuYXYgbmF2LXRhYnMgbmF2LXRhYnNjOHlcIlxuICAgICpuZ0lmPVwib3V0bGV0TmFtZVwiXG4gICAgI3RhYnNDb250YWluZXJcbiAgPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHRhYiBvZiB0YWJzOyB0cmFja0J5OiB0cmFja0J5UGF0aFwiPlxuICAgICAgPGRpdlxuICAgICAgICBbbmdDbGFzc109XCJ7IGFjdGl2ZTogdGFiLmlzQWN0aXZlIH1cIlxuICAgICAgICBbcm91dGVyTGlua109XCJ0YWIucGF0aFwiXG4gICAgICAgIFtyb3V0ZXJMaW5rQWN0aXZlXT1cInRhYi5wYXRoID8gJ2FjdGl2ZScgOiAnJ1wiXG4gICAgICA+XG4gICAgICAgIDxhXG4gICAgICAgICAgY2xhc3M9XCJwb2ludGVyXCJcbiAgICAgICAgICB0aXRsZT1cInt7IHRhYj8ubGFiZWwgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgIChjbGljayk9XCJ0YWIub25TZWxlY3Q/LmVtaXQoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8aSBbYzh5SWNvbl09XCJ0YWI/Lmljb25cIj48L2k+XG4gICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICB7eyB0YWI/LmxhYmVsIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2E+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdlxuICBjbGFzcz1cInZpc2libGUteHMgbW9iaWxlLXRhYnNcIlxuICAqbmdJZj1cIiFvdXRsZXROYW1lXCJcbj5cbiAgPHVsIGNsYXNzPVwibGlzdC11bnN0eWxlZCBkLWZsZXggbS1iLTBcIj5cbiAgICA8bGkgY2xhc3M9XCJjOHktc2VsZWN0LXdyYXBwZXIgZmxleC1ncm93XCI+XG4gICAgICA8c2VsZWN0XG4gICAgICAgIChjaGFuZ2UpPVwibmF2aWdhdGVUbygkZXZlbnQudGFyZ2V0LnZhbHVlKVwiXG4gICAgICAgICNzZWxlY3RcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdGFiIG9mIHRhYnNcIj5cbiAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAqbmdJZj1cIiF0YWIuY29tcG9uZW50XCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJ0YWIucGF0aFwiXG4gICAgICAgICAgICBbc2VsZWN0ZWRdPVwiaXNBY3RpdmUodGFiKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgdGFiPy5sYWJlbCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvc2VsZWN0PlxuICAgIDwvbGk+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdGFiIG9mIHRhYnNcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWIuY29tcG9uZW50XCI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqYzh5Q29tcG9uZW50T3V0bGV0PVwidGFiLmNvbXBvbmVudDsgZW52aXJvbm1lbnRJbmplY3RvcjogdGFiLmluamVjdG9yXCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvdWw+XG48L2Rpdj5cbiJdfQ==
162
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy1vdXRsZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS90YWJzL3RhYnMtb3V0bGV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2NvcmUvdGFicy90YWJzLW91dGxldC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxXQUFXLEVBQ1gsU0FBUyxFQUNULFVBQVUsRUFDVixTQUFTLEVBS1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwRixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFekMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7OztBQU03QyxNQUFNLE9BQU8sbUJBQW1CO0lBYTlCLElBQXlDLGVBQWU7UUFDdEQsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFDRCxJQUFvQyxPQUFPO1FBQ3pDLElBQUksV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUNyQixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNkLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUM7UUFDM0QsQ0FBQztRQUNELE9BQU8sV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksV0FBVyxDQUFDLElB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V0FBVzt1QkFBQyxrQkFBa0I7Z0JBSUMsZUFBZTtzQkFBdkQsV0FBVzt1QkFBQyxzQkFBc0I7Z0JBR0MsT0FBTztzQkFBMUMsV0FBVzt1QkFBQyxpQkFBaUI7Z0JBT2lCLFlBQVk7c0JBQTFELFdBQVc7dUJBQUMsNEJBQTRCO2dCQUdJLFVBQVU7c0JBQXRELFdBQVc7dUJBQUMsMEJBQTBCO2dCQUc2QixTQUFTO3NCQUE1RSxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFFbEQsYUFBYTtzQkFEcEIsU0FBUzt1QkFBQyxlQUFlLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBIb3N0QmluZGluZyxcbiAgUmVuZGVyZXIyLFxuICBFbGVtZW50UmVmLFxuICBWaWV3Q2hpbGQsXG4gIE9uRGVzdHJveSxcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBtYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGZyb21FdmVudFBhdHRlcm4sIGZyb21FdmVudCwgbWVyZ2UsIEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFRhYiB9IGZyb20gJy4vdGFiLm1vZGVsJztcbmltcG9ydCB7IEhlYWRlclNlcnZpY2UgfSBmcm9tICcuLi9oZWFkZXIvaGVhZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGFic1NlcnZpY2UgfSBmcm9tICcuL3RhYnMuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS10YWJzLW91dGxldCxjOHktdWktdGFicycsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJzLW91dGxldC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgVGFic091dGxldENvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSwgQWZ0ZXJDb250ZW50SW5pdCwgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgdGFiczogVGFiW10gPSBbXTtcbiAgQElucHV0KCkgb3JpZW50YXRpb246ICd2ZXJ0aWNhbCcgfCAnaG9yaXpvbnRhbCcgPSAndmVydGljYWwnO1xuICBASW5wdXQoKSBuYXZpZ2F0b3JPcGVuID0gZmFsc2U7XG4gIEBJbnB1dCgpIG91dGxldE5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgY29udGV4dDogYW55O1xuICAvKipcbiAgICogSWRlbnRpZmllcyBpZiB0aGUgY3VycmVudCB2aWV3IGhhcyBhIGhlYWRlciBlbGVtZW50LlxuICAgKi9cbiAgQElucHV0KCkgQEhvc3RCaW5kaW5nKCdjbGFzcy5oYXMtaGVhZGVyJykgaGFzSGVhZGVyID0gZmFsc2U7XG5cbiAgc2hvd0xlZnQgPSBmYWxzZTtcbiAgc2hvd1JpZ2h0ID0gZmFsc2U7XG4gIEBIb3N0QmluZGluZygnY2xhc3MubmF2aWdhdG9yLW9wZW4nKSBnZXQgaXNOYXZpZ2F0b3JPcGVuKCkge1xuICAgIHJldHVybiB0aGlzLm5hdmlnYXRvck9wZW47XG4gIH1cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5wYWdlLXRhYnMnKSBnZXQgaGFzVGFicygpIHtcbiAgICBsZXQgdmlzaWJsZVRhYnMgPSBbXTtcbiAgICBpZiAodGhpcy50YWJzKSB7XG4gICAgICB2aXNpYmxlVGFicyA9IHRoaXMudGFicy5maWx0ZXIodGFiID0+IHRhYi5oaWRlICE9PSB0cnVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHZpc2libGVUYWJzLmxlbmd0aCA+IDEgfHwgdmlzaWJsZVRhYnMuZmluZCh0YWIgPT4gdGFiLnNob3dBbHdheXMpO1xuICB9XG4gIEBIb3N0QmluZGluZygnY2xhc3MucGFnZS10YWJzLWhvcml6b250YWwnKSBnZXQgaXNIb3Jpem9udGFsKCkge1xuICAgIHJldHVybiB0aGlzLm9yaWVudGF0aW9uID09PSAnaG9yaXpvbnRhbCc7XG4gIH1cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5wYWdlLXRhYnMtdmVydGljYWwnKSBnZXQgaXNWZXJ0aWNhbCgpIHtcbiAgICByZXR1cm4gdGhpcy5vcmllbnRhdGlvbiAhPT0gJ2hvcml6b250YWwnO1xuICB9XG4gIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiB0cnVlIH0pIHByaXZhdGUgY29udGFpbmVyOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCd0YWJzQ29udGFpbmVyJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IGZhbHNlIH0pXG4gIHByaXZhdGUgdGFic0NvbnRhaW5lcjogRWxlbWVudFJlZjtcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgdGFic0NoYW5nZXMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUYWJbXT4oW10pO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgaGVhZGVyOiBIZWFkZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgdGFic1NlcnZpY2U6IFRhYnNTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5vdXRsZXROYW1lICYmIHRoaXMudGFicy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMudGFic1NlcnZpY2UuaXRlbXMkXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCh0YWJzID0+IHRhYnMuZmlsdGVyKHRhYiA9PiB0YWIudGFic091dGxldCA9PT0gdGhpcy5vdXRsZXROYW1lKSksXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSh0YWJzID0+IHtcbiAgICAgICAgICB0aGlzLnRhYnMgPSB0YWJzO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMudGFicykge1xuICAgICAgdGhpcy50YWJzID0gdGhpcy50YWJzLmZpbHRlcih0YWIgPT4gdGFiLnRhYnNPdXRsZXQgPT09IHRoaXMub3V0bGV0TmFtZSk7XG4gICAgICB0aGlzLnRhYnNDaGFuZ2VzJC5uZXh0KHRoaXMudGFicyk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIGlmICh0aGlzLm9yaWVudGF0aW9uID09PSAnaG9yaXpvbnRhbCcpIHtcbiAgICAgIHRoaXMuc2Nyb2xsU3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgdHJhY2tCeVBhdGgoaW5kZXgsIHRhYjogVGFiKSB7XG4gICAgcmV0dXJuIHRhYi5wYXRoID8gdGFiLnBhdGggOiBpbmRleDtcbiAgfVxuXG4gIGlzQWN0aXZlKHRhYjogVGFiKSB7XG4gICAgaWYgKHRhYiAmJiB0YWIucGF0aCkge1xuICAgICAgcmV0dXJuIHRoaXMucm91dGVyLmlzQWN0aXZlKHRhYi5wYXRoLCBmYWxzZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBuYXZpZ2F0ZVRvKHBhdGgpIHtcbiAgICB0aGlzLmhlYWRlci50b2dnbGUoKTtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbcGF0aF0pO1xuICB9XG5cbiAgc2Nyb2xsKGRpcmVjdGlvbjogJ3JpZ2h0JyB8ICdsZWZ0JyA9ICdyaWdodCcpIHtcbiAgICBjb25zdCB7IHdpZHRoU2Nyb2xsLCB3aWR0aCwgc2Nyb2xsTGVmdCB9ID0gdGhpcy5nZXREaW1lbnNpb25zKCk7XG4gICAgY29uc3QgbXVsdGlwbGllciA9IGRpcmVjdGlvbiA9PT0gJ2xlZnQnID8gLTEgOiAxO1xuXG4gICAgbGV0IHRhcmdldFNjcm9sbCA9IHNjcm9sbExlZnQgKyB3aWR0aCAqIG11bHRpcGxpZXI7XG4gICAgaWYgKHRhcmdldFNjcm9sbCA8IDApIHtcbiAgICAgIHRhcmdldFNjcm9sbCA9IDA7XG4gICAgfVxuICAgIGlmICh0YXJnZXRTY3JvbGwgPiB3aWR0aFNjcm9sbCAtIHdpZHRoKSB7XG4gICAgICB0YXJnZXRTY3JvbGwgPSB3aWR0aFNjcm9sbCAtIHdpZHRoO1xuICAgIH1cbiAgICB0aGlzLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPSB0YXJnZXRTY3JvbGw7XG4gIH1cblxuICBwcml2YXRlIHNjcm9sbFN1YnNjcmliZSgpIHtcbiAgICBsZXQgdW5saXN0ZW47XG4gICAgbWVyZ2UoXG4gICAgICB0aGlzLnRhYnNDaGFuZ2VzJCxcbiAgICAgIGZyb21FdmVudCh0aGlzLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50LCAnc2Nyb2xsJyksXG4gICAgICBmcm9tRXZlbnRQYXR0ZXJuKFxuICAgICAgICAoaGFuZGxlcjogYW55KSA9PiB7XG4gICAgICAgICAgdW5saXN0ZW4gPSB0aGlzLnJlbmRlcmVyLmxpc3Rlbignd2luZG93JywgJ3Jlc2l6ZScsIGhhbmRsZXIpO1xuICAgICAgICB9LFxuICAgICAgICAoKSA9PiB1bmxpc3RlbigpXG4gICAgICApXG4gICAgKVxuICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDI1MCksIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy51cGRhdGVTY3JvbGwoKSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVNjcm9sbCgpIHtcbiAgICBjb25zdCB7IHdpZHRoU2Nyb2xsLCB3aWR0aCwgc2Nyb2xsTGVmdCB9ID0gdGhpcy5nZXREaW1lbnNpb25zKCk7XG4gICAgdGhpcy5zaG93TGVmdCA9ICEhc2Nyb2xsTGVmdDtcbiAgICB0aGlzLnNob3dSaWdodCA9IHdpZHRoU2Nyb2xsID4gd2lkdGggKyBzY3JvbGxMZWZ0O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREaW1lbnNpb25zKCkge1xuICAgIGNvbnN0IGVsVGFicyA9IHRoaXMudGFic0NvbnRhaW5lci5uYXRpdmVFbGVtZW50O1xuICAgIGNvbnN0IGVsID0gdGhpcy5jb250YWluZXIubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCB3aWR0aFNjcm9sbCA9IGVsVGFicy5zY3JvbGxXaWR0aDtcbiAgICBjb25zdCB3aWR0aCA9IGVsLmNsaWVudFdpZHRoO1xuICAgIGNvbnN0IHNjcm9sbExlZnQgPSBlbC5zY3JvbGxMZWZ0O1xuICAgIHJldHVybiB7IHdpZHRoU2Nyb2xsLCB3aWR0aCwgc2Nyb2xsTGVmdCB9O1xuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwidGFiQ29udGFpbmVyXCJcbiAgW25nQ2xhc3NdPVwieyAnaGlkZGVuLXhzJzogIW91dGxldE5hbWUgfVwiXG4gICNjb250YWluZXJcbj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwidGFicy1zbGlkZXIgdGFicy1zbGlkZXItbGVmdFwiXG4gICAgdGl0bGU9XCJ7eyAnU2Nyb2xsIHRvIHRoZSBsZWZ0JyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgI2xlZnRcbiAgICAqbmdJZj1cInNob3dMZWZ0IHx8IHNob3dSaWdodFwiXG4gICAgW2Rpc2FibGVkXT1cIiFzaG93TGVmdFwiXG4gICAgKGNsaWNrKT1cInNjcm9sbCgnbGVmdCcpXCJcbiAgPlxuICAgIDxpIFtjOHlJY29uXT1cIidjaGV2cm9uLWxlZnQnXCI+PC9pPlxuICA8L2J1dHRvbj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwidGFicy1zbGlkZXIgdGFicy1zbGlkZXItcmlnaHRcIlxuICAgIHRpdGxlPVwie3sgJ1Njcm9sbCB0byB0aGUgcmlnaHQnIHwgdHJhbnNsYXRlIH19XCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAjcmlnaHRcbiAgICAqbmdJZj1cInNob3dSaWdodCB8fCBzaG93TGVmdFwiXG4gICAgW2Rpc2FibGVkXT1cIiFzaG93UmlnaHRcIlxuICAgIChjbGljayk9XCJzY3JvbGwoJ3JpZ2h0JylcIlxuICA+XG4gICAgPGkgW2M4eUljb25dPVwiJ2NoZXZyb24tcmlnaHQnXCI+PC9pPlxuICA8L2J1dHRvbj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFvdXRsZXROYW1lXCI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJuYXYgbmF2LXRhYnMgbmF2LXRhYnNjOHlcIlxuICAgICAgcm9sZT1cImxpc3RcIlxuICAgICAgI3RhYnNDb250YWluZXJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0YWIgb2YgdGFic1wiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgcm9sZT1cImxpc3RpdGVtXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7IGFjdGl2ZTogcmxhPy5pc0FjdGl2ZSB9XCJcbiAgICAgICAgICAqbmdJZj1cIiF0YWIuY29tcG9uZW50ICYmICF0YWIuaGlkZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8YVxuICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwidGFiLnBhdGhcIlxuICAgICAgICAgICAgcm91dGVyTGlua0FjdGl2ZVxuICAgICAgICAgICAgW3F1ZXJ5UGFyYW1zSGFuZGxpbmddPVwiJ3ByZXNlcnZlJ1wiXG4gICAgICAgICAgICAjcmxhPVwicm91dGVyTGlua0FjdGl2ZVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdwLXItMjQnOiAhdGFiLnRlbXBsYXRlICYmIHRhYj8uYmFkZ2UgfVwiXG4gICAgICAgICAgICAoY2xpY2spPVwidGFiLm9uU2VsZWN0Py5lbWl0KClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgIFtjOHlJY29uXT1cInRhYj8uaWNvblwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiIXRhYi50ZW1wbGF0ZSAmJiB0YWI/Lmljb25cIlxuICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIHRpdGxlPVwie3sgdGFiPy5sYWJlbCB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiIXRhYi50ZW1wbGF0ZSAmJiAhdGFiLmNvbXBvbmVudFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IHRhYj8ubGFiZWwgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzPVwiZGFzaGJvYXJkLXRlbXBsYXRlLW1hcmtlclwiXG4gICAgICAgICAgICAgIHRvb2x0aXA9XCJ7eyB0YWI/LnRvb2x0aXBUZXh0IHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXG4gICAgICAgICAgICAgIFthZGFwdGl2ZVBvc2l0aW9uXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgW2RlbGF5XT1cIjMwMFwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiIXRhYi50ZW1wbGF0ZSAmJiB0YWI/LmJhZGdlXCJcbiAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgPC9hPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0YWIudGVtcGxhdGU7IGluamVjdG9yOiB0YWIuaW5qZWN0b3JcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nQ29tcG9uZW50T3V0bGV0PVwidGFiLmNvbXBvbmVudDsgaW5qZWN0b3I6IHRhYi5pbmplY3RvclwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxkaXZcbiAgICBjbGFzcz1cImNvbXBvbmVudC10YWJzIG5hdiBuYXYtdGFicyBuYXYtdGFic2M4eVwiXG4gICAgKm5nSWY9XCJvdXRsZXROYW1lXCJcbiAgICAjdGFic0NvbnRhaW5lclxuICA+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdGFiIG9mIHRhYnM7IHRyYWNrQnk6IHRyYWNrQnlQYXRoXCI+XG4gICAgICA8ZGl2XG4gICAgICAgIFtuZ0NsYXNzXT1cInsgYWN0aXZlOiB0YWIuaXNBY3RpdmUgfVwiXG4gICAgICAgIFtyb3V0ZXJMaW5rXT1cInRhYi5wYXRoXCJcbiAgICAgICAgW3JvdXRlckxpbmtBY3RpdmVdPVwidGFiLnBhdGggPyAnYWN0aXZlJyA6ICcnXCJcbiAgICAgICAgW3F1ZXJ5UGFyYW1zSGFuZGxpbmddPVwiJ3ByZXNlcnZlJ1wiXG4gICAgICA+XG4gICAgICAgIDxhXG4gICAgICAgICAgY2xhc3M9XCJwb2ludGVyXCJcbiAgICAgICAgICB0aXRsZT1cInt7IHRhYj8ubGFiZWwgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgIChjbGljayk9XCJ0YWIub25TZWxlY3Q/LmVtaXQoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8aSBbYzh5SWNvbl09XCJ0YWI/Lmljb25cIj48L2k+XG4gICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICB7eyB0YWI/LmxhYmVsIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2E+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdlxuICBjbGFzcz1cInZpc2libGUteHMgbW9iaWxlLXRhYnNcIlxuICAqbmdJZj1cIiFvdXRsZXROYW1lXCJcbj5cbiAgPHVsIGNsYXNzPVwibGlzdC11bnN0eWxlZCBkLWZsZXggbS1iLTBcIj5cbiAgICA8bGkgY2xhc3M9XCJjOHktc2VsZWN0LXdyYXBwZXIgZmxleC1ncm93XCI+XG4gICAgICA8c2VsZWN0XG4gICAgICAgIChjaGFuZ2UpPVwibmF2aWdhdGVUbygkZXZlbnQudGFyZ2V0LnZhbHVlKVwiXG4gICAgICAgICNzZWxlY3RcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdGFiIG9mIHRhYnNcIj5cbiAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAqbmdJZj1cIiF0YWIuY29tcG9uZW50XCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJ0YWIucGF0aFwiXG4gICAgICAgICAgICBbc2VsZWN0ZWRdPVwiaXNBY3RpdmUodGFiKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgdGFiPy5sYWJlbCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvc2VsZWN0PlxuICAgIDwvbGk+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdGFiIG9mIHRhYnNcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWIuY29tcG9uZW50XCI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqYzh5Q29tcG9uZW50T3V0bGV0PVwidGFiLmNvbXBvbmVudDsgZW52aXJvbm1lbnRJbmplY3RvcjogdGFiLmluamVjdG9yXCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvdWw+XG48L2Rpdj5cbiJdfQ==
@@ -35,7 +35,7 @@ export class WebSDKPluginVersionFactory {
35
35
  const versionsBehindKey = modules.map(module => {
36
36
  return {
37
37
  label: `${contextPath} => ${module}`,
38
- version: version || 'unspecified',
38
+ version: version || 'latest',
39
39
  type: 'INSTALLED_MF_PLUGINS',
40
40
  hidden: true,
41
41
  custom: {
@@ -63,4 +63,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
63
63
  type: Inject,
64
64
  args: [VERSION_MODULE_CONFIG]
65
65
  }] }, { type: i1.AppStateService }, { type: i2.PluginsService }] });
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vic2RrLXBsdWdpbi12ZXJzaW9uLmZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL3ZlcnNpb24vd2Vic2RrLXBsdWdpbi12ZXJzaW9uLmZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQW9CLE1BQU0sV0FBVyxDQUFDO0FBQzlELE9BQU8sRUFBZ0MscUJBQXFCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0RixPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFlBQVksQ0FBQzs7OztBQUc1Qzs7R0FFRztBQUlILE1BQU0sT0FBTywwQkFBMEI7SUFHckMsWUFDcUQsTUFBMkIsRUFDdEUsUUFBeUIsRUFDekIsT0FBdUI7UUFGb0IsV0FBTSxHQUFOLE1BQU0sQ0FBcUI7UUFDdEUsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFDekIsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFMakMsMEJBQXFCLEdBQTBCLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQU9wRCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsaUNBQWlDLEVBQUUsQ0FBQztZQUNuRCxPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FDaEUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsRUFDMUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUM1QixvQkFBb0IsRUFBRSxFQUN0QixHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FDckQsQ0FBQztJQUNKLENBQUM7SUFFRCxHQUFHO1FBQ0QsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUM7SUFDcEMsQ0FBQztJQUVELHNCQUFzQixDQUFDLE9BQWlDO1FBQ3RELE1BQU0sUUFBUSxHQUFHLElBQUksS0FBSyxFQUFXLENBQUM7UUFDdEMsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDdkMsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzdCLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUM7Z0JBQ3JCLFNBQVM7WUFDWCxDQUFDO1lBQ0QsTUFBTSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUVqRCxNQUFNLGlCQUFpQixHQUFjLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQ3hELE9BQU87b0JBQ0wsS0FBSyxFQUFFLEdBQUcsV0FBVyxPQUFPLE1BQU0sRUFBRTtvQkFDcEMsT0FBTyxFQUFFLE9BQU8sSUFBSSxhQUFhO29CQUNqQyxJQUFJLEVBQUUsc0JBQXNCO29CQUM1QixNQUFNLEVBQUUsSUFBSTtvQkFDWixNQUFNLEVBQUU7d0JBQ04sR0FBRzt3QkFDSCxXQUFXO3dCQUNYLE1BQU07cUJBQ1A7aUJBQ0YsQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUFDO1lBQ0gsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLGlCQUFpQixDQUFDLENBQUM7UUFDdEMsQ0FBQztRQUNELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7OEdBaERVLDBCQUEwQixrQkFJZixxQkFBcUI7a0hBSmhDLDBCQUEwQixjQUZ6QixNQUFNOzsyRkFFUCwwQkFBMEI7a0JBSHRDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFLSSxRQUFROzswQkFBSSxNQUFNOzJCQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFwcFN0YXRlU2VydmljZSwgRXh0ZW5zaW9uRmFjdG9yeSB9IGZyb20gJy4uL2NvbW1vbic7XG5pbXBvcnQgeyBWZXJzaW9uLCBWZXJzaW9uTW9kdWxlQ29uZmlnLCBWRVJTSU9OX01PRFVMRV9DT05GSUcgfSBmcm9tICcuL3ZlcnNpb24ubW9kZWwnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFBsdWdpbnNTZXJ2aWNlIH0gZnJvbSAnLi4vcGx1Z2lucyc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvblJlbW90ZVBsdWdpbnMgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5cbi8qKlxuICogV2lsbCBwcm92aWRlIHRoZSB2ZXJzaW9uIG9mIHBsdWdpbnMgaW5zdGFsbGVkIHRvIHRoZSBjdXJyZW50IGFwcGxpY2F0aW9uLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBXZWJTREtQbHVnaW5WZXJzaW9uRmFjdG9yeSBpbXBsZW1lbnRzIEV4dGVuc2lvbkZhY3Rvcnk8VmVyc2lvbj4ge1xuICB3ZWJTREtQbHVnaW5WZXJzaW9ucyQ6IE9ic2VydmFibGU8VmVyc2lvbltdPiA9IG9mKFtdKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFZFUlNJT05fTU9EVUxFX0NPTkZJRykgcHJpdmF0ZSBjb25maWc6IFZlcnNpb25Nb2R1bGVDb25maWcsXG4gICAgcHJpdmF0ZSBhcHBTdGF0ZTogQXBwU3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGx1Z2luczogUGx1Z2luc1NlcnZpY2VcbiAgKSB7XG4gICAgaWYgKHRoaXMuY29uZmlnPy5kaXNhYmxlV2ViU0RLUGx1Z2luVmVyc2lvbkZhY3RvcnkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy53ZWJTREtQbHVnaW5WZXJzaW9ucyQgPSB0aGlzLmFwcFN0YXRlLmN1cnJlbnRBcHBsaWNhdGlvbi5waXBlKFxuICAgICAgbWFwKGFwcCA9PiB0aGlzLnBsdWdpbnMuZ2V0TUZSZW1vdGVzKGFwcCkpLFxuICAgICAgZmlsdGVyKHJlbW90ZXMgPT4gISFyZW1vdGVzKSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICBtYXAocmVtb3RlcyA9PiB0aGlzLmdldFZlcnNpb25zRnJvbVJlbW90ZXMocmVtb3RlcykpXG4gICAgKTtcbiAgfVxuXG4gIGdldCgpOiBPYnNlcnZhYmxlPFZlcnNpb25bXT4ge1xuICAgIHJldHVybiB0aGlzLndlYlNES1BsdWdpblZlcnNpb25zJDtcbiAgfVxuXG4gIGdldFZlcnNpb25zRnJvbVJlbW90ZXMocmVtb3RlczogQXBwbGljYXRpb25SZW1vdGVQbHVnaW5zKTogVmVyc2lvbltdIHtcbiAgICBjb25zdCB2ZXJzaW9ucyA9IG5ldyBBcnJheTxWZXJzaW9uPigpO1xuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHJlbW90ZXMpKSB7XG4gICAgICBjb25zdCBtb2R1bGVzID0gcmVtb3Rlc1trZXldO1xuICAgICAgaWYgKCFtb2R1bGVzPy5sZW5ndGgpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBjb25zdCBbY29udGV4dFBhdGgsIHZlcnNpb25dID0ga2V5LnNwbGl0KCdAJywgMik7XG5cbiAgICAgIGNvbnN0IHZlcnNpb25zQmVoaW5kS2V5OiBWZXJzaW9uW10gPSBtb2R1bGVzLm1hcChtb2R1bGUgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGxhYmVsOiBgJHtjb250ZXh0UGF0aH0gPT4gJHttb2R1bGV9YCxcbiAgICAgICAgICB2ZXJzaW9uOiB2ZXJzaW9uIHx8ICd1bnNwZWNpZmllZCcsXG4gICAgICAgICAgdHlwZTogJ0lOU1RBTExFRF9NRl9QTFVHSU5TJyxcbiAgICAgICAgICBoaWRkZW46IHRydWUsXG4gICAgICAgICAgY3VzdG9tOiB7XG4gICAgICAgICAgICBrZXksXG4gICAgICAgICAgICBjb250ZXh0UGF0aCxcbiAgICAgICAgICAgIG1vZHVsZVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgICAgdmVyc2lvbnMucHVzaCguLi52ZXJzaW9uc0JlaGluZEtleSk7XG4gICAgfVxuICAgIHJldHVybiB2ZXJzaW9ucztcbiAgfVxufVxuIl19
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vic2RrLXBsdWdpbi12ZXJzaW9uLmZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL3ZlcnNpb24vd2Vic2RrLXBsdWdpbi12ZXJzaW9uLmZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQW9CLE1BQU0sV0FBVyxDQUFDO0FBQzlELE9BQU8sRUFBZ0MscUJBQXFCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0RixPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFlBQVksQ0FBQzs7OztBQUc1Qzs7R0FFRztBQUlILE1BQU0sT0FBTywwQkFBMEI7SUFHckMsWUFDcUQsTUFBMkIsRUFDdEUsUUFBeUIsRUFDekIsT0FBdUI7UUFGb0IsV0FBTSxHQUFOLE1BQU0sQ0FBcUI7UUFDdEUsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFDekIsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFMakMsMEJBQXFCLEdBQTBCLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQU9wRCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsaUNBQWlDLEVBQUUsQ0FBQztZQUNuRCxPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FDaEUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsRUFDMUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUM1QixvQkFBb0IsRUFBRSxFQUN0QixHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FDckQsQ0FBQztJQUNKLENBQUM7SUFFRCxHQUFHO1FBQ0QsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUM7SUFDcEMsQ0FBQztJQUVELHNCQUFzQixDQUFDLE9BQWlDO1FBQ3RELE1BQU0sUUFBUSxHQUFHLElBQUksS0FBSyxFQUFXLENBQUM7UUFDdEMsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDdkMsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzdCLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUM7Z0JBQ3JCLFNBQVM7WUFDWCxDQUFDO1lBQ0QsTUFBTSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUVqRCxNQUFNLGlCQUFpQixHQUFjLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQ3hELE9BQU87b0JBQ0wsS0FBSyxFQUFFLEdBQUcsV0FBVyxPQUFPLE1BQU0sRUFBRTtvQkFDcEMsT0FBTyxFQUFFLE9BQU8sSUFBSSxRQUFRO29CQUM1QixJQUFJLEVBQUUsc0JBQXNCO29CQUM1QixNQUFNLEVBQUUsSUFBSTtvQkFDWixNQUFNLEVBQUU7d0JBQ04sR0FBRzt3QkFDSCxXQUFXO3dCQUNYLE1BQU07cUJBQ1A7aUJBQ0YsQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUFDO1lBQ0gsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLGlCQUFpQixDQUFDLENBQUM7UUFDdEMsQ0FBQztRQUNELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7OEdBaERVLDBCQUEwQixrQkFJZixxQkFBcUI7a0hBSmhDLDBCQUEwQixjQUZ6QixNQUFNOzsyRkFFUCwwQkFBMEI7a0JBSHRDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFLSSxRQUFROzswQkFBSSxNQUFNOzJCQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFwcFN0YXRlU2VydmljZSwgRXh0ZW5zaW9uRmFjdG9yeSB9IGZyb20gJy4uL2NvbW1vbic7XG5pbXBvcnQgeyBWZXJzaW9uLCBWZXJzaW9uTW9kdWxlQ29uZmlnLCBWRVJTSU9OX01PRFVMRV9DT05GSUcgfSBmcm9tICcuL3ZlcnNpb24ubW9kZWwnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFBsdWdpbnNTZXJ2aWNlIH0gZnJvbSAnLi4vcGx1Z2lucyc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvblJlbW90ZVBsdWdpbnMgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5cbi8qKlxuICogV2lsbCBwcm92aWRlIHRoZSB2ZXJzaW9uIG9mIHBsdWdpbnMgaW5zdGFsbGVkIHRvIHRoZSBjdXJyZW50IGFwcGxpY2F0aW9uLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBXZWJTREtQbHVnaW5WZXJzaW9uRmFjdG9yeSBpbXBsZW1lbnRzIEV4dGVuc2lvbkZhY3Rvcnk8VmVyc2lvbj4ge1xuICB3ZWJTREtQbHVnaW5WZXJzaW9ucyQ6IE9ic2VydmFibGU8VmVyc2lvbltdPiA9IG9mKFtdKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFZFUlNJT05fTU9EVUxFX0NPTkZJRykgcHJpdmF0ZSBjb25maWc6IFZlcnNpb25Nb2R1bGVDb25maWcsXG4gICAgcHJpdmF0ZSBhcHBTdGF0ZTogQXBwU3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGx1Z2luczogUGx1Z2luc1NlcnZpY2VcbiAgKSB7XG4gICAgaWYgKHRoaXMuY29uZmlnPy5kaXNhYmxlV2ViU0RLUGx1Z2luVmVyc2lvbkZhY3RvcnkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy53ZWJTREtQbHVnaW5WZXJzaW9ucyQgPSB0aGlzLmFwcFN0YXRlLmN1cnJlbnRBcHBsaWNhdGlvbi5waXBlKFxuICAgICAgbWFwKGFwcCA9PiB0aGlzLnBsdWdpbnMuZ2V0TUZSZW1vdGVzKGFwcCkpLFxuICAgICAgZmlsdGVyKHJlbW90ZXMgPT4gISFyZW1vdGVzKSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICBtYXAocmVtb3RlcyA9PiB0aGlzLmdldFZlcnNpb25zRnJvbVJlbW90ZXMocmVtb3RlcykpXG4gICAgKTtcbiAgfVxuXG4gIGdldCgpOiBPYnNlcnZhYmxlPFZlcnNpb25bXT4ge1xuICAgIHJldHVybiB0aGlzLndlYlNES1BsdWdpblZlcnNpb25zJDtcbiAgfVxuXG4gIGdldFZlcnNpb25zRnJvbVJlbW90ZXMocmVtb3RlczogQXBwbGljYXRpb25SZW1vdGVQbHVnaW5zKTogVmVyc2lvbltdIHtcbiAgICBjb25zdCB2ZXJzaW9ucyA9IG5ldyBBcnJheTxWZXJzaW9uPigpO1xuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHJlbW90ZXMpKSB7XG4gICAgICBjb25zdCBtb2R1bGVzID0gcmVtb3Rlc1trZXldO1xuICAgICAgaWYgKCFtb2R1bGVzPy5sZW5ndGgpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBjb25zdCBbY29udGV4dFBhdGgsIHZlcnNpb25dID0ga2V5LnNwbGl0KCdAJywgMik7XG5cbiAgICAgIGNvbnN0IHZlcnNpb25zQmVoaW5kS2V5OiBWZXJzaW9uW10gPSBtb2R1bGVzLm1hcChtb2R1bGUgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGxhYmVsOiBgJHtjb250ZXh0UGF0aH0gPT4gJHttb2R1bGV9YCxcbiAgICAgICAgICB2ZXJzaW9uOiB2ZXJzaW9uIHx8ICdsYXRlc3QnLFxuICAgICAgICAgIHR5cGU6ICdJTlNUQUxMRURfTUZfUExVR0lOUycsXG4gICAgICAgICAgaGlkZGVuOiB0cnVlLFxuICAgICAgICAgIGN1c3RvbToge1xuICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgY29udGV4dFBhdGgsXG4gICAgICAgICAgICBtb2R1bGVcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICAgIHZlcnNpb25zLnB1c2goLi4udmVyc2lvbnNCZWhpbmRLZXkpO1xuICAgIH1cbiAgICByZXR1cm4gdmVyc2lvbnM7XG4gIH1cbn1cbiJdfQ==
@@ -131,7 +131,7 @@ export class DatapointSelectionListComponent {
131
131
  useExisting: forwardRef(() => DatapointSelectionListComponent),
132
132
  multi: true
133
133
  }
134
- ], usesOnChanges: true, ngImport: i0, template: "<div class=\"card-header separator sticky-top bg-component\">\n <span\n class=\"card-title h4\"\n *ngIf=\"listTitle\"\n >\n {{ listTitle | translate }}\n </span>\n <span\n class=\"card-title h4\"\n *ngIf=\"!listTitle\"\n >\n {{ 'Data points' | translate }}\n </span>\n</div>\n\n<c8y-list-group\n class=\"flex-grow ff-scroll-fix cdk-droplist\"\n cdkDropList\n (cdkDropListDropped)=\"drop($event)\"\n [cdkDropListDisabled]=\"!allowDragAndDrop || formArray.controls?.length < 2\"\n>\n <div\n class=\"alert alert-warning m-t-8\"\n role=\"alert\"\n ngNonBindable\n *ngIf=\"formArray.errors?.minActiveCount\"\n translate\n [translateParams]=\"formArray.errors?.minActiveCount\"\n >\n At least {{ minActive }} active data points must be selected.\n </div>\n\n <div\n class=\"alert alert-warning m-t-8\"\n role=\"alert\"\n ngNonBindable\n *ngIf=\"formArray.errors?.maxActiveCount\"\n translate\n [translateParams]=\"formArray.errors?.maxActiveCount\"\n >\n At maximum {{ maxActive }} active data points are allowed to be selected.\n </div>\n\n <ng-content select=\".alert\"></ng-content>\n\n <div\n class=\"p-t-8\"\n *ngIf=\"!formArray.controls?.length\"\n >\n <c8y-ui-empty-state\n class=\"p-t-8\"\n [icon]=\"'c8y-data-points'\"\n [title]=\"'No data points to display.' | translate\"\n [subtitle]=\"'Add your first data point.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n <div\n [formGroup]=\"dpForm\"\n *ngFor=\"let dpForm of formArray.controls; let index = index\"\n >\n <c8y-datapoint-selector-list-item\n class=\"d-block\"\n [defaultFormOptions]=\"defaultFormOptions\"\n [activeToggleDisabled]=\"maxActiveCountReached\"\n [showActiveToggle]=\"true\"\n [showAddRemoveButton]=\"false\"\n [showOptions]=\"true\"\n [editable]=\"true\"\n [colorPickerDisabled]=\"false\"\n [actions]=\"actions\"\n [optionToRemove]=\"true\"\n [datapointLibraryEntries]=\"datapointLibraryEntries\"\n [hasUnlinkTemplateOption]=\"true\"\n formControlName=\"details\"\n (removed)=\"onItemRemoved(index)\"\n cdkDrag\n >\n <c8y-li-drag-handle\n title=\"{{ 'Click and drag to reorder' | translate }}\"\n cdkDragHandle\n >\n <i c8yIcon=\"drag-reorder\"></i>\n </c8y-li-drag-handle>\n </c8y-datapoint-selector-list-item>\n </div>\n</c8y-list-group>\n\n<div class=\"card-footer bg-inherit\">\n <button\n class=\"btn btn-default btn-sm\"\n [title]=\"'Add data point' | translate\"\n type=\"button\"\n data-cy=\"c8y-datapoint-selection-list--add-datapoint-button\"\n (click)=\"add()\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add data point' | translate }}\n </button>\n</div>\n", dependencies: [{ kind: "component", type: i5.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i5.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i5.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i5.ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: i5.ListItemDragHandleComponent, selector: "c8y-list-item-drag-handle, c8y-li-drag-handle" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i7.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i7.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i7.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "component", type: i8.DatapointSelectorListItemComponent, selector: "c8y-datapoint-selector-list-item", inputs: ["defaultFormOptions", "isSelected", "isCollapsed", "showAddRemoveButton", "editable", "showActiveToggle", "activeToggleDisabled", "showOptions", "datapointLibraryEntries", "actions", "optionToRemove", "hasUnlinkTemplateOption", "colorPickerDisabled", "disableTypeaheadIfSelected", "highlightText"], outputs: ["added", "removed"] }, { kind: "pipe", type: i5.C8yTranslatePipe, name: "translate" }] }); }
134
+ ], usesOnChanges: true, ngImport: i0, template: "<div class=\"card-header separator sticky-top bg-inherit\">\n <span\n class=\"card-title h4\"\n *ngIf=\"listTitle\"\n >\n {{ listTitle | translate }}\n </span>\n <span\n class=\"card-title h4\"\n *ngIf=\"!listTitle\"\n >\n {{ 'Data points' | translate }}\n </span>\n</div>\n\n<c8y-list-group\n class=\"flex-grow ff-scroll-fix cdk-droplist\"\n cdkDropList\n (cdkDropListDropped)=\"drop($event)\"\n [cdkDropListDisabled]=\"!allowDragAndDrop || formArray.controls?.length < 2\"\n>\n <div\n class=\"alert alert-warning m-t-8\"\n role=\"alert\"\n ngNonBindable\n *ngIf=\"formArray.errors?.minActiveCount\"\n translate\n [translateParams]=\"formArray.errors?.minActiveCount\"\n >\n At least {{ minActive }} active data points must be selected.\n </div>\n\n <div\n class=\"alert alert-warning m-t-8\"\n role=\"alert\"\n ngNonBindable\n *ngIf=\"formArray.errors?.maxActiveCount\"\n translate\n [translateParams]=\"formArray.errors?.maxActiveCount\"\n >\n At maximum {{ maxActive }} active data points are allowed to be selected.\n </div>\n\n <ng-content select=\".alert\"></ng-content>\n\n <div\n class=\"p-t-8\"\n *ngIf=\"!formArray.controls?.length\"\n >\n <c8y-ui-empty-state\n class=\"p-t-8\"\n [icon]=\"'c8y-data-points'\"\n [title]=\"'No data points to display.' | translate\"\n [subtitle]=\"'Add your first data point.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n <div\n [formGroup]=\"dpForm\"\n *ngFor=\"let dpForm of formArray.controls; let index = index\"\n >\n <c8y-datapoint-selector-list-item\n class=\"d-block\"\n [defaultFormOptions]=\"defaultFormOptions\"\n [activeToggleDisabled]=\"maxActiveCountReached\"\n [showActiveToggle]=\"true\"\n [showAddRemoveButton]=\"false\"\n [showOptions]=\"true\"\n [editable]=\"true\"\n [colorPickerDisabled]=\"false\"\n [actions]=\"actions\"\n [optionToRemove]=\"true\"\n [datapointLibraryEntries]=\"datapointLibraryEntries\"\n [hasUnlinkTemplateOption]=\"true\"\n formControlName=\"details\"\n (removed)=\"onItemRemoved(index)\"\n cdkDrag\n >\n <c8y-li-drag-handle\n title=\"{{ 'Click and drag to reorder' | translate }}\"\n cdkDragHandle\n >\n <i c8yIcon=\"drag-reorder\"></i>\n </c8y-li-drag-handle>\n </c8y-datapoint-selector-list-item>\n </div>\n</c8y-list-group>\n\n<div class=\"card-footer bg-inherit\">\n <button\n class=\"btn btn-default btn-sm\"\n [title]=\"'Add data point' | translate\"\n type=\"button\"\n data-cy=\"c8y-datapoint-selection-list--add-datapoint-button\"\n (click)=\"add()\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add data point' | translate }}\n </button>\n</div>\n", dependencies: [{ kind: "component", type: i5.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i5.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i5.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i5.ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: i5.ListItemDragHandleComponent, selector: "c8y-list-item-drag-handle, c8y-li-drag-handle" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i7.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i7.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i7.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "component", type: i8.DatapointSelectorListItemComponent, selector: "c8y-datapoint-selector-list-item", inputs: ["defaultFormOptions", "isSelected", "isCollapsed", "showAddRemoveButton", "editable", "showActiveToggle", "activeToggleDisabled", "showOptions", "datapointLibraryEntries", "actions", "optionToRemove", "hasUnlinkTemplateOption", "colorPickerDisabled", "disableTypeaheadIfSelected", "highlightText"], outputs: ["added", "removed"] }, { kind: "pipe", type: i5.C8yTranslatePipe, name: "translate" }] }); }
135
135
  }
136
136
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DatapointSelectionListComponent, decorators: [{
137
137
  type: Component,
@@ -146,7 +146,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
146
146
  useExisting: forwardRef(() => DatapointSelectionListComponent),
147
147
  multi: true
148
148
  }
149
- ], template: "<div class=\"card-header separator sticky-top bg-component\">\n <span\n class=\"card-title h4\"\n *ngIf=\"listTitle\"\n >\n {{ listTitle | translate }}\n </span>\n <span\n class=\"card-title h4\"\n *ngIf=\"!listTitle\"\n >\n {{ 'Data points' | translate }}\n </span>\n</div>\n\n<c8y-list-group\n class=\"flex-grow ff-scroll-fix cdk-droplist\"\n cdkDropList\n (cdkDropListDropped)=\"drop($event)\"\n [cdkDropListDisabled]=\"!allowDragAndDrop || formArray.controls?.length < 2\"\n>\n <div\n class=\"alert alert-warning m-t-8\"\n role=\"alert\"\n ngNonBindable\n *ngIf=\"formArray.errors?.minActiveCount\"\n translate\n [translateParams]=\"formArray.errors?.minActiveCount\"\n >\n At least {{ minActive }} active data points must be selected.\n </div>\n\n <div\n class=\"alert alert-warning m-t-8\"\n role=\"alert\"\n ngNonBindable\n *ngIf=\"formArray.errors?.maxActiveCount\"\n translate\n [translateParams]=\"formArray.errors?.maxActiveCount\"\n >\n At maximum {{ maxActive }} active data points are allowed to be selected.\n </div>\n\n <ng-content select=\".alert\"></ng-content>\n\n <div\n class=\"p-t-8\"\n *ngIf=\"!formArray.controls?.length\"\n >\n <c8y-ui-empty-state\n class=\"p-t-8\"\n [icon]=\"'c8y-data-points'\"\n [title]=\"'No data points to display.' | translate\"\n [subtitle]=\"'Add your first data point.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n <div\n [formGroup]=\"dpForm\"\n *ngFor=\"let dpForm of formArray.controls; let index = index\"\n >\n <c8y-datapoint-selector-list-item\n class=\"d-block\"\n [defaultFormOptions]=\"defaultFormOptions\"\n [activeToggleDisabled]=\"maxActiveCountReached\"\n [showActiveToggle]=\"true\"\n [showAddRemoveButton]=\"false\"\n [showOptions]=\"true\"\n [editable]=\"true\"\n [colorPickerDisabled]=\"false\"\n [actions]=\"actions\"\n [optionToRemove]=\"true\"\n [datapointLibraryEntries]=\"datapointLibraryEntries\"\n [hasUnlinkTemplateOption]=\"true\"\n formControlName=\"details\"\n (removed)=\"onItemRemoved(index)\"\n cdkDrag\n >\n <c8y-li-drag-handle\n title=\"{{ 'Click and drag to reorder' | translate }}\"\n cdkDragHandle\n >\n <i c8yIcon=\"drag-reorder\"></i>\n </c8y-li-drag-handle>\n </c8y-datapoint-selector-list-item>\n </div>\n</c8y-list-group>\n\n<div class=\"card-footer bg-inherit\">\n <button\n class=\"btn btn-default btn-sm\"\n [title]=\"'Add data point' | translate\"\n type=\"button\"\n data-cy=\"c8y-datapoint-selection-list--add-datapoint-button\"\n (click)=\"add()\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add data point' | translate }}\n </button>\n</div>\n" }]
149
+ ], template: "<div class=\"card-header separator sticky-top bg-inherit\">\n <span\n class=\"card-title h4\"\n *ngIf=\"listTitle\"\n >\n {{ listTitle | translate }}\n </span>\n <span\n class=\"card-title h4\"\n *ngIf=\"!listTitle\"\n >\n {{ 'Data points' | translate }}\n </span>\n</div>\n\n<c8y-list-group\n class=\"flex-grow ff-scroll-fix cdk-droplist\"\n cdkDropList\n (cdkDropListDropped)=\"drop($event)\"\n [cdkDropListDisabled]=\"!allowDragAndDrop || formArray.controls?.length < 2\"\n>\n <div\n class=\"alert alert-warning m-t-8\"\n role=\"alert\"\n ngNonBindable\n *ngIf=\"formArray.errors?.minActiveCount\"\n translate\n [translateParams]=\"formArray.errors?.minActiveCount\"\n >\n At least {{ minActive }} active data points must be selected.\n </div>\n\n <div\n class=\"alert alert-warning m-t-8\"\n role=\"alert\"\n ngNonBindable\n *ngIf=\"formArray.errors?.maxActiveCount\"\n translate\n [translateParams]=\"formArray.errors?.maxActiveCount\"\n >\n At maximum {{ maxActive }} active data points are allowed to be selected.\n </div>\n\n <ng-content select=\".alert\"></ng-content>\n\n <div\n class=\"p-t-8\"\n *ngIf=\"!formArray.controls?.length\"\n >\n <c8y-ui-empty-state\n class=\"p-t-8\"\n [icon]=\"'c8y-data-points'\"\n [title]=\"'No data points to display.' | translate\"\n [subtitle]=\"'Add your first data point.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n <div\n [formGroup]=\"dpForm\"\n *ngFor=\"let dpForm of formArray.controls; let index = index\"\n >\n <c8y-datapoint-selector-list-item\n class=\"d-block\"\n [defaultFormOptions]=\"defaultFormOptions\"\n [activeToggleDisabled]=\"maxActiveCountReached\"\n [showActiveToggle]=\"true\"\n [showAddRemoveButton]=\"false\"\n [showOptions]=\"true\"\n [editable]=\"true\"\n [colorPickerDisabled]=\"false\"\n [actions]=\"actions\"\n [optionToRemove]=\"true\"\n [datapointLibraryEntries]=\"datapointLibraryEntries\"\n [hasUnlinkTemplateOption]=\"true\"\n formControlName=\"details\"\n (removed)=\"onItemRemoved(index)\"\n cdkDrag\n >\n <c8y-li-drag-handle\n title=\"{{ 'Click and drag to reorder' | translate }}\"\n cdkDragHandle\n >\n <i c8yIcon=\"drag-reorder\"></i>\n </c8y-li-drag-handle>\n </c8y-datapoint-selector-list-item>\n </div>\n</c8y-list-group>\n\n<div class=\"card-footer bg-inherit\">\n <button\n class=\"btn btn-default btn-sm\"\n [title]=\"'Add data point' | translate\"\n type=\"button\"\n data-cy=\"c8y-datapoint-selection-list--add-datapoint-button\"\n (click)=\"add()\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add data point' | translate }}\n </button>\n</div>\n" }]
150
150
  }], ctorParameters: () => [{ type: i1.DatapointSelectorService }, { type: i2.DatapointLibraryService }, { type: i3.FormBuilder }, { type: i4.WidgetConfigComponent, decorators: [{
151
151
  type: Optional
152
152
  }] }], propDecorators: { actions: [{
@@ -170,4 +170,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
170
170
  }], change: [{
171
171
  type: Output
172
172
  }] } });
173
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXBvaW50LXNlbGVjdGlvbi1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2RhdGFwb2ludC1zZWxlY3Rvci9kYXRhcG9pbnQtc2VsZWN0aW9uLWxpc3QvZGF0YXBvaW50LXNlbGVjdGlvbi1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2RhdGFwb2ludC1zZWxlY3Rvci9kYXRhcG9pbnQtc2VsZWN0aW9uLWxpc3QvZGF0YXBvaW50LXNlbGVjdGlvbi1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBSUwsV0FBVyxFQUNYLGFBQWEsRUFDYixpQkFBaUIsRUFJbEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDOUUsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDeEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBUXZFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7Ozs7Ozs7O0FBa0J6RSxNQUFNLE9BQU8sK0JBQStCO0lBbUIxQyxZQUNVLGlCQUEyQyxFQUMzQyxnQkFBeUMsRUFDekMsV0FBd0IsRUFDWixlQUFzQztRQUhsRCxzQkFBaUIsR0FB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QkFBdEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBS0ksT0FBTztzQkFBaEIsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZGtEcmFnRHJvcCwgbW92ZUl0ZW1JbkFycmF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIGZvcndhcmRSZWYsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFic3RyYWN0Q29udHJvbCxcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIEZvcm1BcnJheSxcbiAgRm9ybUJ1aWxkZXIsXG4gIE5HX1ZBTElEQVRPUlMsXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxuICBWYWxpZGF0b3IsXG4gIFZhbGlkYXRvckZuXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElSZXN1bHRMaXN0IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgQzh5VmFsaWRhdG9ycyB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgV2lkZ2V0Q29uZmlnQ29tcG9uZW50IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9jb250ZXh0LWRhc2hib2FyZCc7XG5pbXBvcnQgeyBmcm9tLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHNoYXJlUmVwbGF5LCB0YWtlLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBEYXRhcG9pbnRMaWJyYXJ5U2VydmljZSB9IGZyb20gJy4uL2RhdGFwb2ludC1saWJyYXJ5LnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgRGF0YXBvaW50QWN0aW9uLFxuICBEYXRhcG9pbnRBdHRyaWJ1dGVzRm9ybUNvbmZpZyxcbiAgS1BJRGV0YWlscyxcbiAgTWFuYWdlZE9iamVjdEtQSVxufSBmcm9tICcuLi9kYXRhcG9pbnQtc2VsZWN0aW9uLm1vZGVsJztcbmltcG9ydCB7IERhdGFwb2ludFNlbGVjdG9yTW9kYWxPcHRpb25zIH0gZnJvbSAnLi4vZGF0YXBvaW50LXNlbGVjdG9yLW1vZGFsL2RhdGFwb2ludC1zZWxlY3Rvci1tb2RhbC5tb2RlbCc7XG5pbXBvcnQgeyBEYXRhcG9pbnRTZWxlY3RvclNlcnZpY2UgfSBmcm9tICcuLi9kYXRhcG9pbnQtc2VsZWN0b3Iuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1kYXRhcG9pbnQtc2VsZWN0aW9uLWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0YXBvaW50LXNlbGVjdGlvbi1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERhdGFwb2ludFNlbGVjdGlvbkxpc3RDb21wb25lbnQpXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRGF0YXBvaW50U2VsZWN0aW9uTGlzdENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBEYXRhcG9pbnRTZWxlY3Rpb25MaXN0Q29tcG9uZW50XG4gIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvciwgT25Jbml0LCBPbkNoYW5nZXNcbntcbiAgQElucHV0KCkgYWN0aW9uczogRGF0YXBvaW50QWN0aW9uW10gPSBbXTtcbiAgQElucHV0KCkgYWxsb3dEcmFnQW5kRHJvcCA9IHRydWU7XG4gIEBJbnB1dCgpIGNvbmZpZzogUGFydGlhbDxEYXRhcG9pbnRTZWxlY3Rvck1vZGFsT3B0aW9ucz4gPSB7fTtcbiAgQElucHV0KCkgZGVmYXVsdEZvcm1PcHRpb25zOiBQYXJ0aWFsPERhdGFwb2ludEF0dHJpYnV0ZXNGb3JtQ29uZmlnPiA9IHt9O1xuICBASW5wdXQoKSBtYXhBY3RpdmVDb3VudDogbnVtYmVyO1xuICBASW5wdXQoKSBtaW5BY3RpdmVDb3VudCA9IDE7XG4gIEBJbnB1dCgpIHJlc29sdmVDb250ZXh0ID0gdHJ1ZTtcbiAgQElucHV0KCkgbGlzdFRpdGxlID0gJyc7XG4gIGZvcm1BcnJheTogRm9ybUFycmF5O1xuICBkYXRhcG9pbnRMaWJyYXJ5RW50cmllczogT2JzZXJ2YWJsZTxJUmVzdWx0TGlzdDxNYW5hZ2VkT2JqZWN0S1BJPj47XG4gIG1heEFjdGl2ZUNvdW50UmVhY2hlZCA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBpc1ZhbGlkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBAT3V0cHV0KCkgY2hhbmdlOiBPYnNlcnZhYmxlPGFueVtdPjtcbiAgcHJpdmF0ZSB1c2VkVmFsaWRhdG9yczogeyBba2V5OiBzdHJpbmddOiBWYWxpZGF0b3JGbiB9ID0ge307XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBkYXRhcG9pbnRTZWxlY3RvcjogRGF0YXBvaW50U2VsZWN0b3JTZXJ2aWNlLFxuICAgIHByaXZhdGUgZGF0YXBvaW50TGlicmFyeTogRGF0YXBvaW50TGlicmFyeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSB3aWRnZXRDb21wb25lbnQ6IFdpZGdldENvbmZpZ0NvbXBvbmVudFxuICApIHtcbiAgICB0aGlzLmZvcm1BcnJheSA9IHRoaXMuZm9ybUJ1aWxkZXIuYXJyYXkoW10pO1xuICAgIHRoaXMuaXNWYWxpZCA9IHRoaXMuZm9ybUFycmF5LnN0YXR1c0NoYW5nZXMucGlwZShtYXAoc3RhdHVzID0+IHN0YXR1cyA9PT0gJ1ZBTElEJykpO1xuICAgIHRoaXMuZGF0YXBvaW50TGlicmFyeUVudHJpZXMgPSBmcm9tKHRoaXMuZGF0YXBvaW50TGlicmFyeS5nZXRGaXJzdERhdGFwb2ludExpYnJhcnlQYWdlKCkpLnBpcGUoXG4gICAgICBzaGFyZVJlcGxheSgpXG4gICAgKTtcbiAgICB0aGlzLmNoYW5nZSA9IHRoaXMuZm9ybUFycmF5LnZhbHVlQ2hhbmdlcy5waXBlKG1hcChyZXMgPT4gdGhpcy50cmFuc2Zvcm1WYWx1ZShyZXMpKSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKCFjaGFuZ2VzLm1heEFjdGl2ZUNvdW50ICYmICFjaGFuZ2VzLm1pbkFjdGl2ZUNvdW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLm1heEFjdGl2ZUNvdW50KSB7XG4gICAgICB0aGlzLnVzZWRWYWxpZGF0b3JzLm1heEFjdGl2ZUNvdW50ID0gQzh5VmFsaWRhdG9ycy5tYXhBY3RpdmVDb3VudCh0aGlzLm1heEFjdGl2ZUNvdW50KTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlcy5taW5BY3RpdmVDb3VudCkge1xuICAgICAgdGhpcy51c2VkVmFsaWRhdG9ycy5taW5BY3RpdmVDb3VudCA9IEM4eVZhbGlkYXRvcnMubWluQWN0aXZlQ291bnQodGhpcy5taW5BY3RpdmVDb3VudCk7XG4gICAgfVxuICAgIGNvbnN0IHZhbGlkYXRvcnMgPSBPYmplY3QudmFsdWVzKHRoaXMudXNlZFZhbGlkYXRvcnMpO1xuICAgIHRoaXMuZm9ybUFycmF5LnNldFZhbGlkYXRvcnModmFsaWRhdG9ycyk7XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5mb3JtQXJyYXkudmFsdWVDaGFuZ2VzLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKGZuKTtcbiAgfVxuXG4gIHZhbGlkYXRlKF9jb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtQXJyYXkudmFsaWQgPyBudWxsIDogeyBmb3JtSW52YWxpZDoge30gfTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLndpZGdldENvbXBvbmVudD8uY29udGV4dDtcbiAgICBpZiAoY29udGV4dD8uaWQgJiYgdGhpcy5yZXNvbHZlQ29udGV4dCkge1xuICAgICAgY29uc3QgeyBuYW1lLCBpZCwgYzh5X0lzRGV2aWNlIH0gPSBjb250ZXh0O1xuICAgICAgdGhpcy5jb25maWcuY29udGV4dEFzc2V0ID0geyBuYW1lLCBpZCwgYzh5X0lzRGV2aWNlIH07XG4gICAgfVxuICB9XG5cbiAgd3JpdGVWYWx1ZShvYmo6IEtQSURldGFpbHNbXSk6IHZvaWQge1xuICAgIHRoaXMuZm9ybUFycmF5LmNsZWFyKCk7XG4gICAgaWYgKG9iaj8ubGVuZ3RoKSB7XG4gICAgICBvYmouZm9yRWFjaCh2YWwgPT4ge1xuICAgICAgICBjb25zdCBmb3JtZ3JvdXAgPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHsgZGV0YWlsczogW10gfSk7XG4gICAgICAgIGZvcm1ncm91cC5wYXRjaFZhbHVlKHsgZGV0YWlsczogdmFsIH0pO1xuICAgICAgICB0aGlzLmZvcm1BcnJheS5wdXNoKGZvcm1ncm91cCk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5jYWxjdWxhdGVNYXhBY3RpdmVDb3VudCgpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5mb3JtQXJyYXkudmFsdWVDaGFuZ2VzXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKHJlcyA9PiB0aGlzLnRyYW5zZm9ybVZhbHVlKHJlcykpLFxuICAgICAgICAvLyBjaGVjayBtYXhBY3RpdmVDb3VudFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuY2FsY3VsYXRlTWF4QWN0aXZlQ291bnQoKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoZm4pO1xuICB9XG5cbiAgYWRkKCkge1xuICAgIGNvbnN0IGFsbG93Q2hhbmdpbmdDb250ZXh0ID1cbiAgICAgICF0aGlzLndpZGdldENvbXBvbmVudD8uaXNEZXZpY2VUeXBlRGFzaGJvYXJkICYmIHRoaXMuY29uZmlnPy5hbGxvd0NoYW5naW5nQ29udGV4dCAhPT0gZmFsc2U7XG4gICAgdGhpcy5kYXRhcG9pbnRTZWxlY3RvclxuICAgICAgLnNlbGVjdERhdGFQb2ludHMoe1xuICAgICAgICAuLi4odGhpcy5jb25maWcgfHwge30pLFxuICAgICAgICBzZWxlY3RlZERhdGFwb2ludHM6IHRoaXMudHJhbnNmb3JtVmFsdWUodGhpcy5mb3JtQXJyYXkudmFsdWUpLFxuICAgICAgICBkZWZhdWx0QWN0aXZlU3RhdGU6IHRydWUsXG4gICAgICAgIGFsbG93Q2hhbmdpbmdDb250ZXh0LFxuICAgICAgICBhbGxvd1NlYXJjaDogIXRoaXMuY29uZmlnPy5jb250ZXh0QXNzZXRcbiAgICAgIH0pXG4gICAgICAudGhlbihcbiAgICAgICAgcmVzdWx0ID0+IHtcbiAgICAgICAgICB0aGlzLndyaXRlVmFsdWUocmVzdWx0KTtcbiAgICAgICAgfSxcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIC8vIG5vdGhpbmcgdG8gZG8sIG1vZGFsIHdhcyBjbG9zZWRcbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxuXG4gIG9uSXRlbVJlbW92ZWQoaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuZm9ybUFycmF5LnJlbW92ZUF0KGluZGV4KTtcbiAgfVxuXG4gIGRyb3AoZXZlbnQ6IENka0RyYWdEcm9wPEtQSURldGFpbHNbXT4pIHtcbiAgICBjb25zdCBjdXJyZW50U29ydGluZyA9IHRoaXMuZm9ybUFycmF5LnZhbHVlO1xuICAgIG1vdmVJdGVtSW5BcnJheShjdXJyZW50U29ydGluZywgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcbiAgICB0aGlzLmZvcm1BcnJheS5zZXRWYWx1ZShjdXJyZW50U29ydGluZyk7XG4gIH1cblxuICBwcml2YXRlIHRyYW5zZm9ybVZhbHVlKGZvcm1BcnJheVZhbHVlOiBhbnlbXSkge1xuICAgIGlmICghZm9ybUFycmF5VmFsdWUpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgcmV0dXJuIGZvcm1BcnJheVZhbHVlLm1hcCh0bXAgPT4gT2JqZWN0LmFzc2lnbih7fSwgLi4uT2JqZWN0LnZhbHVlcyh0bXApKSk7XG4gIH1cblxuICBwcml2YXRlIGNhbGN1bGF0ZU1heEFjdGl2ZUNvdW50KCkge1xuICAgIGlmICh0aGlzLm1heEFjdGl2ZUNvdW50KSB7XG4gICAgICBjb25zdCBjdXJyZW50bHlBY3RpdmUgPSB0aGlzLmZvcm1BcnJheS52YWx1ZS5maWx0ZXIodG1wID0+IHRtcC5kZXRhaWxzPy5fX2FjdGl2ZSkubGVuZ3RoO1xuICAgICAgdGhpcy5tYXhBY3RpdmVDb3VudFJlYWNoZWQgPSBjdXJyZW50bHlBY3RpdmUgPj0gdGhpcy5tYXhBY3RpdmVDb3VudDtcbiAgICB9XG4gICAgdGhpcy5tYXhBY3RpdmVDb3VudFJlYWNoZWQgPSBmYWxzZTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIHNlcGFyYXRvciBzdGlja3ktdG9wIGJnLWNvbXBvbmVudFwiPlxuICA8c3BhblxuICAgIGNsYXNzPVwiY2FyZC10aXRsZSBoNFwiXG4gICAgKm5nSWY9XCJsaXN0VGl0bGVcIlxuICA+XG4gICAge3sgbGlzdFRpdGxlIHwgdHJhbnNsYXRlIH19XG4gIDwvc3Bhbj5cbiAgPHNwYW5cbiAgICBjbGFzcz1cImNhcmQtdGl0bGUgaDRcIlxuICAgICpuZ0lmPVwiIWxpc3RUaXRsZVwiXG4gID5cbiAgICB7eyAnRGF0YSBwb2ludHMnIHwgdHJhbnNsYXRlIH19XG4gIDwvc3Bhbj5cbjwvZGl2PlxuXG48Yzh5LWxpc3QtZ3JvdXBcbiAgY2xhc3M9XCJmbGV4LWdyb3cgZmYtc2Nyb2xsLWZpeCBjZGstZHJvcGxpc3RcIlxuICBjZGtEcm9wTGlzdFxuICAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3AoJGV2ZW50KVwiXG4gIFtjZGtEcm9wTGlzdERpc2FibGVkXT1cIiFhbGxvd0RyYWdBbmREcm9wIHx8IGZvcm1BcnJheS5jb250cm9scz8ubGVuZ3RoIDwgMlwiXG4+XG4gIDxkaXZcbiAgICBjbGFzcz1cImFsZXJ0IGFsZXJ0LXdhcm5pbmcgbS10LThcIlxuICAgIHJvbGU9XCJhbGVydFwiXG4gICAgbmdOb25CaW5kYWJsZVxuICAgICpuZ0lmPVwiZm9ybUFycmF5LmVycm9ycz8ubWluQWN0aXZlQ291bnRcIlxuICAgIHRyYW5zbGF0ZVxuICAgIFt0cmFuc2xhdGVQYXJhbXNdPVwiZm9ybUFycmF5LmVycm9ycz8ubWluQWN0aXZlQ291bnRcIlxuICA+XG4gICAgQXQgbGVhc3Qge3sgbWluQWN0aXZlIH19IGFjdGl2ZSBkYXRhIHBvaW50cyBtdXN0IGJlIHNlbGVjdGVkLlxuICA8L2Rpdj5cblxuICA8ZGl2XG4gICAgY2xhc3M9XCJhbGVydCBhbGVydC13YXJuaW5nIG0tdC04XCJcbiAgICByb2xlPVwiYWxlcnRcIlxuICAgIG5nTm9uQmluZGFibGVcbiAgICAqbmdJZj1cImZvcm1BcnJheS5lcnJvcnM/Lm1heEFjdGl2ZUNvdW50XCJcbiAgICB0cmFuc2xhdGVcbiAgICBbdHJhbnNsYXRlUGFyYW1zXT1cImZvcm1BcnJheS5lcnJvcnM/Lm1heEFjdGl2ZUNvdW50XCJcbiAgPlxuICAgIEF0IG1heGltdW0ge3sgbWF4QWN0aXZlIH19IGFjdGl2ZSBkYXRhIHBvaW50cyBhcmUgYWxsb3dlZCB0byBiZSBzZWxlY3RlZC5cbiAgPC9kaXY+XG5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiLmFsZXJ0XCI+PC9uZy1jb250ZW50PlxuXG4gIDxkaXZcbiAgICBjbGFzcz1cInAtdC04XCJcbiAgICAqbmdJZj1cIiFmb3JtQXJyYXkuY29udHJvbHM/Lmxlbmd0aFwiXG4gID5cbiAgICA8Yzh5LXVpLWVtcHR5LXN0YXRlXG4gICAgICBjbGFzcz1cInAtdC04XCJcbiAgICAgIFtpY29uXT1cIidjOHktZGF0YS1wb2ludHMnXCJcbiAgICAgIFt0aXRsZV09XCInTm8gZGF0YSBwb2ludHMgdG8gZGlzcGxheS4nIHwgdHJhbnNsYXRlXCJcbiAgICAgIFtzdWJ0aXRsZV09XCInQWRkIHlvdXIgZmlyc3QgZGF0YSBwb2ludC4nIHwgdHJhbnNsYXRlXCJcbiAgICAgIFtob3Jpem9udGFsXT1cInRydWVcIlxuICAgID48L2M4eS11aS1lbXB0eS1zdGF0ZT5cbiAgPC9kaXY+XG4gIDxkaXZcbiAgICBbZm9ybUdyb3VwXT1cImRwRm9ybVwiXG4gICAgKm5nRm9yPVwibGV0IGRwRm9ybSBvZiBmb3JtQXJyYXkuY29udHJvbHM7IGxldCBpbmRleCA9IGluZGV4XCJcbiAgPlxuICAgIDxjOHktZGF0YXBvaW50LXNlbGVjdG9yLWxpc3QtaXRlbVxuICAgICAgY2xhc3M9XCJkLWJsb2NrXCJcbiAgICAgIFtkZWZhdWx0Rm9ybU9wdGlvbnNdPVwiZGVmYXVsdEZvcm1PcHRpb25zXCJcbiAgICAgIFthY3RpdmVUb2dnbGVEaXNhYmxlZF09XCJtYXhBY3RpdmVDb3VudFJlYWNoZWRcIlxuICAgICAgW3Nob3dBY3RpdmVUb2dnbGVdPVwidHJ1ZVwiXG4gICAgICBbc2hvd0FkZFJlbW92ZUJ1dHRvbl09XCJmYWxzZVwiXG4gICAgICBbc2hvd09wdGlvbnNdPVwidHJ1ZVwiXG4gICAgICBbZWRpdGFibGVdPVwidHJ1ZVwiXG4gICAgICBbY29sb3JQaWNrZXJEaXNhYmxlZF09XCJmYWxzZVwiXG4gICAgICBbYWN0aW9uc109XCJhY3Rpb25zXCJcbiAgICAgIFtvcHRpb25Ub1JlbW92ZV09XCJ0cnVlXCJcbiAgICAgIFtkYXRhcG9pbnRMaWJyYXJ5RW50cmllc109XCJkYXRhcG9pbnRMaWJyYXJ5RW50cmllc1wiXG4gICAgICBbaGFzVW5saW5rVGVtcGxhdGVPcHRpb25dPVwidHJ1ZVwiXG4gICAgICBmb3JtQ29udHJvbE5hbWU9XCJkZXRhaWxzXCJcbiAgICAgIChyZW1vdmVkKT1cIm9uSXRlbVJlbW92ZWQoaW5kZXgpXCJcbiAgICAgIGNka0RyYWdcbiAgICA+XG4gICAgICA8Yzh5LWxpLWRyYWctaGFuZGxlXG4gICAgICAgIHRpdGxlPVwie3sgJ0NsaWNrIGFuZCBkcmFnIHRvIHJlb3JkZXInIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgY2RrRHJhZ0hhbmRsZVxuICAgICAgPlxuICAgICAgICA8aSBjOHlJY29uPVwiZHJhZy1yZW9yZGVyXCI+PC9pPlxuICAgICAgPC9jOHktbGktZHJhZy1oYW5kbGU+XG4gICAgPC9jOHktZGF0YXBvaW50LXNlbGVjdG9yLWxpc3QtaXRlbT5cbiAgPC9kaXY+XG48L2M4eS1saXN0LWdyb3VwPlxuXG48ZGl2IGNsYXNzPVwiY2FyZC1mb290ZXIgYmctaW5oZXJpdFwiPlxuICA8YnV0dG9uXG4gICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLXNtXCJcbiAgICBbdGl0bGVdPVwiJ0FkZCBkYXRhIHBvaW50JyB8IHRyYW5zbGF0ZVwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgZGF0YS1jeT1cImM4eS1kYXRhcG9pbnQtc2VsZWN0aW9uLWxpc3QtLWFkZC1kYXRhcG9pbnQtYnV0dG9uXCJcbiAgICAoY2xpY2spPVwiYWRkKClcIlxuICA+XG4gICAgPGkgYzh5SWNvbj1cInBsdXMtY2lyY2xlXCI+PC9pPlxuICAgIHt7ICdBZGQgZGF0YSBwb2ludCcgfCB0cmFuc2xhdGUgfX1cbiAgPC9idXR0b24+XG48L2Rpdj5cbiJdfQ==
173
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXBvaW50LXNlbGVjdGlvbi1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2RhdGFwb2ludC1zZWxlY3Rvci9kYXRhcG9pbnQtc2VsZWN0aW9uLWxpc3QvZGF0YXBvaW50LXNlbGVjdGlvbi1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2RhdGFwb2ludC1zZWxlY3Rvci9kYXRhcG9pbnQtc2VsZWN0aW9uLWxpc3QvZGF0YXBvaW50LXNlbGVjdGlvbi1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBSUwsV0FBVyxFQUNYLGFBQWEsRUFDYixpQkFBaUIsRUFJbEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDOUUsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDeEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBUXZFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7Ozs7Ozs7O0FBa0J6RSxNQUFNLE9BQU8sK0JBQStCO0lBbUIxQyxZQUNVLGlCQUEyQyxFQUMzQyxnQkFBeUMsRUFDekMsV0FBd0IsRUFDWixlQUFzQztRQUhsRCxzQkFBaUIsR0FB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QkFBdEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBS0ksT0FBTztzQkFBaEIsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZGtEcmFnRHJvcCwgbW92ZUl0ZW1JbkFycmF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIGZvcndhcmRSZWYsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFic3RyYWN0Q29udHJvbCxcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIEZvcm1BcnJheSxcbiAgRm9ybUJ1aWxkZXIsXG4gIE5HX1ZBTElEQVRPUlMsXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxuICBWYWxpZGF0b3IsXG4gIFZhbGlkYXRvckZuXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElSZXN1bHRMaXN0IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgQzh5VmFsaWRhdG9ycyB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgV2lkZ2V0Q29uZmlnQ29tcG9uZW50IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9jb250ZXh0LWRhc2hib2FyZCc7XG5pbXBvcnQgeyBmcm9tLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHNoYXJlUmVwbGF5LCB0YWtlLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBEYXRhcG9pbnRMaWJyYXJ5U2VydmljZSB9IGZyb20gJy4uL2RhdGFwb2ludC1saWJyYXJ5LnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgRGF0YXBvaW50QWN0aW9uLFxuICBEYXRhcG9pbnRBdHRyaWJ1dGVzRm9ybUNvbmZpZyxcbiAgS1BJRGV0YWlscyxcbiAgTWFuYWdlZE9iamVjdEtQSVxufSBmcm9tICcuLi9kYXRhcG9pbnQtc2VsZWN0aW9uLm1vZGVsJztcbmltcG9ydCB7IERhdGFwb2ludFNlbGVjdG9yTW9kYWxPcHRpb25zIH0gZnJvbSAnLi4vZGF0YXBvaW50LXNlbGVjdG9yLW1vZGFsL2RhdGFwb2ludC1zZWxlY3Rvci1tb2RhbC5tb2RlbCc7XG5pbXBvcnQgeyBEYXRhcG9pbnRTZWxlY3RvclNlcnZpY2UgfSBmcm9tICcuLi9kYXRhcG9pbnQtc2VsZWN0b3Iuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1kYXRhcG9pbnQtc2VsZWN0aW9uLWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0YXBvaW50LXNlbGVjdGlvbi1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERhdGFwb2ludFNlbGVjdGlvbkxpc3RDb21wb25lbnQpXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRGF0YXBvaW50U2VsZWN0aW9uTGlzdENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBEYXRhcG9pbnRTZWxlY3Rpb25MaXN0Q29tcG9uZW50XG4gIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvciwgT25Jbml0LCBPbkNoYW5nZXNcbntcbiAgQElucHV0KCkgYWN0aW9uczogRGF0YXBvaW50QWN0aW9uW10gPSBbXTtcbiAgQElucHV0KCkgYWxsb3dEcmFnQW5kRHJvcCA9IHRydWU7XG4gIEBJbnB1dCgpIGNvbmZpZzogUGFydGlhbDxEYXRhcG9pbnRTZWxlY3Rvck1vZGFsT3B0aW9ucz4gPSB7fTtcbiAgQElucHV0KCkgZGVmYXVsdEZvcm1PcHRpb25zOiBQYXJ0aWFsPERhdGFwb2ludEF0dHJpYnV0ZXNGb3JtQ29uZmlnPiA9IHt9O1xuICBASW5wdXQoKSBtYXhBY3RpdmVDb3VudDogbnVtYmVyO1xuICBASW5wdXQoKSBtaW5BY3RpdmVDb3VudCA9IDE7XG4gIEBJbnB1dCgpIHJlc29sdmVDb250ZXh0ID0gdHJ1ZTtcbiAgQElucHV0KCkgbGlzdFRpdGxlID0gJyc7XG4gIGZvcm1BcnJheTogRm9ybUFycmF5O1xuICBkYXRhcG9pbnRMaWJyYXJ5RW50cmllczogT2JzZXJ2YWJsZTxJUmVzdWx0TGlzdDxNYW5hZ2VkT2JqZWN0S1BJPj47XG4gIG1heEFjdGl2ZUNvdW50UmVhY2hlZCA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBpc1ZhbGlkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBAT3V0cHV0KCkgY2hhbmdlOiBPYnNlcnZhYmxlPGFueVtdPjtcbiAgcHJpdmF0ZSB1c2VkVmFsaWRhdG9yczogeyBba2V5OiBzdHJpbmddOiBWYWxpZGF0b3JGbiB9ID0ge307XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBkYXRhcG9pbnRTZWxlY3RvcjogRGF0YXBvaW50U2VsZWN0b3JTZXJ2aWNlLFxuICAgIHByaXZhdGUgZGF0YXBvaW50TGlicmFyeTogRGF0YXBvaW50TGlicmFyeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSB3aWRnZXRDb21wb25lbnQ6IFdpZGdldENvbmZpZ0NvbXBvbmVudFxuICApIHtcbiAgICB0aGlzLmZvcm1BcnJheSA9IHRoaXMuZm9ybUJ1aWxkZXIuYXJyYXkoW10pO1xuICAgIHRoaXMuaXNWYWxpZCA9IHRoaXMuZm9ybUFycmF5LnN0YXR1c0NoYW5nZXMucGlwZShtYXAoc3RhdHVzID0+IHN0YXR1cyA9PT0gJ1ZBTElEJykpO1xuICAgIHRoaXMuZGF0YXBvaW50TGlicmFyeUVudHJpZXMgPSBmcm9tKHRoaXMuZGF0YXBvaW50TGlicmFyeS5nZXRGaXJzdERhdGFwb2ludExpYnJhcnlQYWdlKCkpLnBpcGUoXG4gICAgICBzaGFyZVJlcGxheSgpXG4gICAgKTtcbiAgICB0aGlzLmNoYW5nZSA9IHRoaXMuZm9ybUFycmF5LnZhbHVlQ2hhbmdlcy5waXBlKG1hcChyZXMgPT4gdGhpcy50cmFuc2Zvcm1WYWx1ZShyZXMpKSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKCFjaGFuZ2VzLm1heEFjdGl2ZUNvdW50ICYmICFjaGFuZ2VzLm1pbkFjdGl2ZUNvdW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLm1heEFjdGl2ZUNvdW50KSB7XG4gICAgICB0aGlzLnVzZWRWYWxpZGF0b3JzLm1heEFjdGl2ZUNvdW50ID0gQzh5VmFsaWRhdG9ycy5tYXhBY3RpdmVDb3VudCh0aGlzLm1heEFjdGl2ZUNvdW50KTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlcy5taW5BY3RpdmVDb3VudCkge1xuICAgICAgdGhpcy51c2VkVmFsaWRhdG9ycy5taW5BY3RpdmVDb3VudCA9IEM4eVZhbGlkYXRvcnMubWluQWN0aXZlQ291bnQodGhpcy5taW5BY3RpdmVDb3VudCk7XG4gICAgfVxuICAgIGNvbnN0IHZhbGlkYXRvcnMgPSBPYmplY3QudmFsdWVzKHRoaXMudXNlZFZhbGlkYXRvcnMpO1xuICAgIHRoaXMuZm9ybUFycmF5LnNldFZhbGlkYXRvcnModmFsaWRhdG9ycyk7XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5mb3JtQXJyYXkudmFsdWVDaGFuZ2VzLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKGZuKTtcbiAgfVxuXG4gIHZhbGlkYXRlKF9jb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtQXJyYXkudmFsaWQgPyBudWxsIDogeyBmb3JtSW52YWxpZDoge30gfTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLndpZGdldENvbXBvbmVudD8uY29udGV4dDtcbiAgICBpZiAoY29udGV4dD8uaWQgJiYgdGhpcy5yZXNvbHZlQ29udGV4dCkge1xuICAgICAgY29uc3QgeyBuYW1lLCBpZCwgYzh5X0lzRGV2aWNlIH0gPSBjb250ZXh0O1xuICAgICAgdGhpcy5jb25maWcuY29udGV4dEFzc2V0ID0geyBuYW1lLCBpZCwgYzh5X0lzRGV2aWNlIH07XG4gICAgfVxuICB9XG5cbiAgd3JpdGVWYWx1ZShvYmo6IEtQSURldGFpbHNbXSk6IHZvaWQge1xuICAgIHRoaXMuZm9ybUFycmF5LmNsZWFyKCk7XG4gICAgaWYgKG9iaj8ubGVuZ3RoKSB7XG4gICAgICBvYmouZm9yRWFjaCh2YWwgPT4ge1xuICAgICAgICBjb25zdCBmb3JtZ3JvdXAgPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHsgZGV0YWlsczogW10gfSk7XG4gICAgICAgIGZvcm1ncm91cC5wYXRjaFZhbHVlKHsgZGV0YWlsczogdmFsIH0pO1xuICAgICAgICB0aGlzLmZvcm1BcnJheS5wdXNoKGZvcm1ncm91cCk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5jYWxjdWxhdGVNYXhBY3RpdmVDb3VudCgpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5mb3JtQXJyYXkudmFsdWVDaGFuZ2VzXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKHJlcyA9PiB0aGlzLnRyYW5zZm9ybVZhbHVlKHJlcykpLFxuICAgICAgICAvLyBjaGVjayBtYXhBY3RpdmVDb3VudFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuY2FsY3VsYXRlTWF4QWN0aXZlQ291bnQoKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoZm4pO1xuICB9XG5cbiAgYWRkKCkge1xuICAgIGNvbnN0IGFsbG93Q2hhbmdpbmdDb250ZXh0ID1cbiAgICAgICF0aGlzLndpZGdldENvbXBvbmVudD8uaXNEZXZpY2VUeXBlRGFzaGJvYXJkICYmIHRoaXMuY29uZmlnPy5hbGxvd0NoYW5naW5nQ29udGV4dCAhPT0gZmFsc2U7XG4gICAgdGhpcy5kYXRhcG9pbnRTZWxlY3RvclxuICAgICAgLnNlbGVjdERhdGFQb2ludHMoe1xuICAgICAgICAuLi4odGhpcy5jb25maWcgfHwge30pLFxuICAgICAgICBzZWxlY3RlZERhdGFwb2ludHM6IHRoaXMudHJhbnNmb3JtVmFsdWUodGhpcy5mb3JtQXJyYXkudmFsdWUpLFxuICAgICAgICBkZWZhdWx0QWN0aXZlU3RhdGU6IHRydWUsXG4gICAgICAgIGFsbG93Q2hhbmdpbmdDb250ZXh0LFxuICAgICAgICBhbGxvd1NlYXJjaDogIXRoaXMuY29uZmlnPy5jb250ZXh0QXNzZXRcbiAgICAgIH0pXG4gICAgICAudGhlbihcbiAgICAgICAgcmVzdWx0ID0+IHtcbiAgICAgICAgICB0aGlzLndyaXRlVmFsdWUocmVzdWx0KTtcbiAgICAgICAgfSxcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIC8vIG5vdGhpbmcgdG8gZG8sIG1vZGFsIHdhcyBjbG9zZWRcbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxuXG4gIG9uSXRlbVJlbW92ZWQoaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuZm9ybUFycmF5LnJlbW92ZUF0KGluZGV4KTtcbiAgfVxuXG4gIGRyb3AoZXZlbnQ6IENka0RyYWdEcm9wPEtQSURldGFpbHNbXT4pIHtcbiAgICBjb25zdCBjdXJyZW50U29ydGluZyA9IHRoaXMuZm9ybUFycmF5LnZhbHVlO1xuICAgIG1vdmVJdGVtSW5BcnJheShjdXJyZW50U29ydGluZywgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcbiAgICB0aGlzLmZvcm1BcnJheS5zZXRWYWx1ZShjdXJyZW50U29ydGluZyk7XG4gIH1cblxuICBwcml2YXRlIHRyYW5zZm9ybVZhbHVlKGZvcm1BcnJheVZhbHVlOiBhbnlbXSkge1xuICAgIGlmICghZm9ybUFycmF5VmFsdWUpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgcmV0dXJuIGZvcm1BcnJheVZhbHVlLm1hcCh0bXAgPT4gT2JqZWN0LmFzc2lnbih7fSwgLi4uT2JqZWN0LnZhbHVlcyh0bXApKSk7XG4gIH1cblxuICBwcml2YXRlIGNhbGN1bGF0ZU1heEFjdGl2ZUNvdW50KCkge1xuICAgIGlmICh0aGlzLm1heEFjdGl2ZUNvdW50KSB7XG4gICAgICBjb25zdCBjdXJyZW50bHlBY3RpdmUgPSB0aGlzLmZvcm1BcnJheS52YWx1ZS5maWx0ZXIodG1wID0+IHRtcC5kZXRhaWxzPy5fX2FjdGl2ZSkubGVuZ3RoO1xuICAgICAgdGhpcy5tYXhBY3RpdmVDb3VudFJlYWNoZWQgPSBjdXJyZW50bHlBY3RpdmUgPj0gdGhpcy5tYXhBY3RpdmVDb3VudDtcbiAgICB9XG4gICAgdGhpcy5tYXhBY3RpdmVDb3VudFJlYWNoZWQgPSBmYWxzZTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIHNlcGFyYXRvciBzdGlja3ktdG9wIGJnLWluaGVyaXRcIj5cbiAgPHNwYW5cbiAgICBjbGFzcz1cImNhcmQtdGl0bGUgaDRcIlxuICAgICpuZ0lmPVwibGlzdFRpdGxlXCJcbiAgPlxuICAgIHt7IGxpc3RUaXRsZSB8IHRyYW5zbGF0ZSB9fVxuICA8L3NwYW4+XG4gIDxzcGFuXG4gICAgY2xhc3M9XCJjYXJkLXRpdGxlIGg0XCJcbiAgICAqbmdJZj1cIiFsaXN0VGl0bGVcIlxuICA+XG4gICAge3sgJ0RhdGEgcG9pbnRzJyB8IHRyYW5zbGF0ZSB9fVxuICA8L3NwYW4+XG48L2Rpdj5cblxuPGM4eS1saXN0LWdyb3VwXG4gIGNsYXNzPVwiZmxleC1ncm93IGZmLXNjcm9sbC1maXggY2RrLWRyb3BsaXN0XCJcbiAgY2RrRHJvcExpc3RcbiAgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcm9wKCRldmVudClcIlxuICBbY2RrRHJvcExpc3REaXNhYmxlZF09XCIhYWxsb3dEcmFnQW5kRHJvcCB8fCBmb3JtQXJyYXkuY29udHJvbHM/Lmxlbmd0aCA8IDJcIlxuPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJhbGVydCBhbGVydC13YXJuaW5nIG0tdC04XCJcbiAgICByb2xlPVwiYWxlcnRcIlxuICAgIG5nTm9uQmluZGFibGVcbiAgICAqbmdJZj1cImZvcm1BcnJheS5lcnJvcnM/Lm1pbkFjdGl2ZUNvdW50XCJcbiAgICB0cmFuc2xhdGVcbiAgICBbdHJhbnNsYXRlUGFyYW1zXT1cImZvcm1BcnJheS5lcnJvcnM/Lm1pbkFjdGl2ZUNvdW50XCJcbiAgPlxuICAgIEF0IGxlYXN0IHt7IG1pbkFjdGl2ZSB9fSBhY3RpdmUgZGF0YSBwb2ludHMgbXVzdCBiZSBzZWxlY3RlZC5cbiAgPC9kaXY+XG5cbiAgPGRpdlxuICAgIGNsYXNzPVwiYWxlcnQgYWxlcnQtd2FybmluZyBtLXQtOFwiXG4gICAgcm9sZT1cImFsZXJ0XCJcbiAgICBuZ05vbkJpbmRhYmxlXG4gICAgKm5nSWY9XCJmb3JtQXJyYXkuZXJyb3JzPy5tYXhBY3RpdmVDb3VudFwiXG4gICAgdHJhbnNsYXRlXG4gICAgW3RyYW5zbGF0ZVBhcmFtc109XCJmb3JtQXJyYXkuZXJyb3JzPy5tYXhBY3RpdmVDb3VudFwiXG4gID5cbiAgICBBdCBtYXhpbXVtIHt7IG1heEFjdGl2ZSB9fSBhY3RpdmUgZGF0YSBwb2ludHMgYXJlIGFsbG93ZWQgdG8gYmUgc2VsZWN0ZWQuXG4gIDwvZGl2PlxuXG4gIDxuZy1jb250ZW50IHNlbGVjdD1cIi5hbGVydFwiPjwvbmctY29udGVudD5cblxuICA8ZGl2XG4gICAgY2xhc3M9XCJwLXQtOFwiXG4gICAgKm5nSWY9XCIhZm9ybUFycmF5LmNvbnRyb2xzPy5sZW5ndGhcIlxuICA+XG4gICAgPGM4eS11aS1lbXB0eS1zdGF0ZVxuICAgICAgY2xhc3M9XCJwLXQtOFwiXG4gICAgICBbaWNvbl09XCInYzh5LWRhdGEtcG9pbnRzJ1wiXG4gICAgICBbdGl0bGVdPVwiJ05vIGRhdGEgcG9pbnRzIHRvIGRpc3BsYXkuJyB8IHRyYW5zbGF0ZVwiXG4gICAgICBbc3VidGl0bGVdPVwiJ0FkZCB5b3VyIGZpcnN0IGRhdGEgcG9pbnQuJyB8IHRyYW5zbGF0ZVwiXG4gICAgICBbaG9yaXpvbnRhbF09XCJ0cnVlXCJcbiAgICA+PC9jOHktdWktZW1wdHktc3RhdGU+XG4gIDwvZGl2PlxuICA8ZGl2XG4gICAgW2Zvcm1Hcm91cF09XCJkcEZvcm1cIlxuICAgICpuZ0Zvcj1cImxldCBkcEZvcm0gb2YgZm9ybUFycmF5LmNvbnRyb2xzOyBsZXQgaW5kZXggPSBpbmRleFwiXG4gID5cbiAgICA8Yzh5LWRhdGFwb2ludC1zZWxlY3Rvci1saXN0LWl0ZW1cbiAgICAgIGNsYXNzPVwiZC1ibG9ja1wiXG4gICAgICBbZGVmYXVsdEZvcm1PcHRpb25zXT1cImRlZmF1bHRGb3JtT3B0aW9uc1wiXG4gICAgICBbYWN0aXZlVG9nZ2xlRGlzYWJsZWRdPVwibWF4QWN0aXZlQ291bnRSZWFjaGVkXCJcbiAgICAgIFtzaG93QWN0aXZlVG9nZ2xlXT1cInRydWVcIlxuICAgICAgW3Nob3dBZGRSZW1vdmVCdXR0b25dPVwiZmFsc2VcIlxuICAgICAgW3Nob3dPcHRpb25zXT1cInRydWVcIlxuICAgICAgW2VkaXRhYmxlXT1cInRydWVcIlxuICAgICAgW2NvbG9yUGlja2VyRGlzYWJsZWRdPVwiZmFsc2VcIlxuICAgICAgW2FjdGlvbnNdPVwiYWN0aW9uc1wiXG4gICAgICBbb3B0aW9uVG9SZW1vdmVdPVwidHJ1ZVwiXG4gICAgICBbZGF0YXBvaW50TGlicmFyeUVudHJpZXNdPVwiZGF0YXBvaW50TGlicmFyeUVudHJpZXNcIlxuICAgICAgW2hhc1VubGlua1RlbXBsYXRlT3B0aW9uXT1cInRydWVcIlxuICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZGV0YWlsc1wiXG4gICAgICAocmVtb3ZlZCk9XCJvbkl0ZW1SZW1vdmVkKGluZGV4KVwiXG4gICAgICBjZGtEcmFnXG4gICAgPlxuICAgICAgPGM4eS1saS1kcmFnLWhhbmRsZVxuICAgICAgICB0aXRsZT1cInt7ICdDbGljayBhbmQgZHJhZyB0byByZW9yZGVyJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgIGNka0RyYWdIYW5kbGVcbiAgICAgID5cbiAgICAgICAgPGkgYzh5SWNvbj1cImRyYWctcmVvcmRlclwiPjwvaT5cbiAgICAgIDwvYzh5LWxpLWRyYWctaGFuZGxlPlxuICAgIDwvYzh5LWRhdGFwb2ludC1zZWxlY3Rvci1saXN0LWl0ZW0+XG4gIDwvZGl2PlxuPC9jOHktbGlzdC1ncm91cD5cblxuPGRpdiBjbGFzcz1cImNhcmQtZm9vdGVyIGJnLWluaGVyaXRcIj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0bi1zbVwiXG4gICAgW3RpdGxlXT1cIidBZGQgZGF0YSBwb2ludCcgfCB0cmFuc2xhdGVcIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIGRhdGEtY3k9XCJjOHktZGF0YXBvaW50LXNlbGVjdGlvbi1saXN0LS1hZGQtZGF0YXBvaW50LWJ1dHRvblwiXG4gICAgKGNsaWNrKT1cImFkZCgpXCJcbiAgPlxuICAgIDxpIGM4eUljb249XCJwbHVzLWNpcmNsZVwiPjwvaT5cbiAgICB7eyAnQWRkIGRhdGEgcG9pbnQnIHwgdHJhbnNsYXRlIH19XG4gIDwvYnV0dG9uPlxuPC9kaXY+XG4iXX0=
@@ -73,14 +73,14 @@ export class ActivityLogComponent {
73
73
  this.isLoading = false;
74
74
  }
75
75
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ActivityLogComponent, deps: [{ token: i1.EcosystemService }, { token: i2.AlertService }], target: i0.ɵɵFactoryTarget.Component }); }
76
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: ActivityLogComponent, selector: "c8y-activity-log", inputs: { application: "application", hasAdminPermissions: "hasAdminPermissions" }, ngImport: i0, template: "<div class=\"inner-scroll bg-level-1 flex-grow\">\n <div class=\"card-block overflow-visible\">\n <c8y-list-group>\n <c8y-li-timeline *ngFor=\"let archive of archives\" [ngClass]=\"{ active: isActive(archive) }\">\n {{ archive.created | date: 'd MMM YYYY' }}\n {{ archive.created | date: 'shortTime' }}\n <c8y-li>\n <c8y-li-icon\n [icon]=\"checkIfLast(archive) ? 'flag-checkered' : 'file-zip-o'\"\n ></c8y-li-icon>\n <c8y-li-body>\n <div class=\"d-flex a-i-start\">\n <div style=\"min-width: 0; flex: 1\">\n <span class=\"text-truncate-wrap\" title=\" {{ archive.description || archive.name }}\">\n {{ archive.description || archive.name }}\n </span>\n <small *ngIf=\"archive.description\" class=\"text-muted\">{{\n archive.description\n }}</small>\n </div>\n <i\n *ngIf=\"isLoading && toActivate(archive)\"\n [c8yIcon]=\"'circle-o-notch'\"\n class=\"icon-spin\"\n title=\"{{ 'Activating' | translate }}\"\n ></i>\n\n <span *ngIf=\"isActive(archive)\" class=\"label label-primary m-l-auto m-t-4\">{{\n 'Active' | translate\n }}</span>\n </div>\n </c8y-li-body>\n <c8y-li-action\n (click)=\"setActive(archive)\"\n *ngIf=\"hasAdminPermissions && !isLoading && !isActive(archive)\"\n icon=\"check-square-o\"\n >\n {{ 'Set as active`archive`' | translate }}\n </c8y-li-action>\n <c8y-li-action (click)=\"downloadArchive(archive)\" icon=\"download\">\n {{ 'Download`archive`' | translate }}\n </c8y-li-action>\n <c8y-li-action\n (click)=\"deleteArchive(archive)\"\n *ngIf=\"\n hasAdminPermissions &&\n archives.length > 1 &&\n !checkIfLast(archive) &&\n !isActive(archive)\n \"\n icon=\"delete\"\n >\n {{ 'Delete`archive`' | translate }}\n </c8y-li-action>\n <c8y-li-action\n (click)=\"reactivateArchive()\"\n *ngIf=\"hasAdminPermissions && canReactivate && isActive(archive)\"\n icon=\"undo\"\n >\n {{ 'Reactivate archive' | translate }}\n </c8y-li-action>\n </c8y-li>\n </c8y-li-timeline>\n </c8y-list-group>\n </div>\n</div>\n<div class=\"card-footer\" *ngIf=\"!isLoading && hasAdminPermissions\">\n <c8y-form-group class=\"m-auto\">\n <c8y-upload-archive [(application)]=\"application\" (refresh)=\"onRefresh()\"></c8y-upload-archive>\n </c8y-form-group>\n</div>\n", dependencies: [{ kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "component", type: i2.ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: i2.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i2.ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: i2.ListItemBodyComponent, selector: "c8y-list-item-body, c8y-li-body", inputs: ["body"] }, { kind: "component", type: i2.ListItemActionComponent, selector: "c8y-list-item-action, c8y-li-action", inputs: ["label", "icon", "disabled"], outputs: ["click"] }, { kind: "component", type: i2.ListItemTimelineComponent, selector: "c8y-list-item-timeline, c8y-li-timeline" }, { kind: "component", type: i1.UploadArchiveComponent, selector: "c8y-upload-archive", inputs: ["application", "uploadNewVersion", "preUploadCallback"], outputs: ["applicationChange", "refresh"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i3.DatePipe, name: "date" }] }); }
76
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: ActivityLogComponent, selector: "c8y-activity-log", inputs: { application: "application", hasAdminPermissions: "hasAdminPermissions" }, ngImport: i0, template: "<div class=\"inner-scroll bg-level-1 flex-grow inner-scroll--md overflow-visible-sm overflow-visible-xs\">\n <div class=\"card-block overflow-visible\">\n <c8y-list-group>\n <c8y-li-timeline *ngFor=\"let archive of archives\" [ngClass]=\"{ active: isActive(archive) }\">\n {{ archive.created | date: 'd MMM YYYY' }}\n {{ archive.created | date: 'shortTime' }}\n <c8y-li>\n <c8y-li-icon\n [icon]=\"checkIfLast(archive) ? 'flag-checkered' : 'file-zip-o'\"\n ></c8y-li-icon>\n <c8y-li-body>\n <div class=\"d-flex a-i-start\">\n <div style=\"min-width: 0; flex: 1\">\n <span class=\"text-truncate-wrap\" title=\" {{ archive.description || archive.name }}\">\n {{ archive.description || archive.name }}\n </span>\n <small *ngIf=\"archive.description\" class=\"text-muted\">{{\n archive.description\n }}</small>\n </div>\n <i\n *ngIf=\"isLoading && toActivate(archive)\"\n [c8yIcon]=\"'circle-o-notch'\"\n class=\"icon-spin\"\n title=\"{{ 'Activating' | translate }}\"\n ></i>\n\n <span *ngIf=\"isActive(archive)\" class=\"label label-primary m-l-auto m-t-4\">{{\n 'Active' | translate\n }}</span>\n </div>\n </c8y-li-body>\n <c8y-li-action\n (click)=\"setActive(archive)\"\n *ngIf=\"hasAdminPermissions && !isLoading && !isActive(archive)\"\n icon=\"check-square-o\"\n >\n {{ 'Set as active`archive`' | translate }}\n </c8y-li-action>\n <c8y-li-action (click)=\"downloadArchive(archive)\" icon=\"download\">\n {{ 'Download`archive`' | translate }}\n </c8y-li-action>\n <c8y-li-action\n (click)=\"deleteArchive(archive)\"\n *ngIf=\"\n hasAdminPermissions &&\n archives.length > 1 &&\n !checkIfLast(archive) &&\n !isActive(archive)\n \"\n icon=\"delete\"\n >\n {{ 'Delete`archive`' | translate }}\n </c8y-li-action>\n <c8y-li-action\n (click)=\"reactivateArchive()\"\n *ngIf=\"hasAdminPermissions && canReactivate && isActive(archive)\"\n icon=\"undo\"\n >\n {{ 'Reactivate archive' | translate }}\n </c8y-li-action>\n </c8y-li>\n </c8y-li-timeline>\n </c8y-list-group>\n </div>\n</div>\n<div class=\"card-footer\" *ngIf=\"!isLoading && hasAdminPermissions\">\n <c8y-form-group class=\"m-auto\">\n <c8y-upload-archive [(application)]=\"application\" (refresh)=\"onRefresh()\"></c8y-upload-archive>\n </c8y-form-group>\n</div>\n", dependencies: [{ kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "component", type: i2.ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: i2.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i2.ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: i2.ListItemBodyComponent, selector: "c8y-list-item-body, c8y-li-body", inputs: ["body"] }, { kind: "component", type: i2.ListItemActionComponent, selector: "c8y-list-item-action, c8y-li-action", inputs: ["label", "icon", "disabled"], outputs: ["click"] }, { kind: "component", type: i2.ListItemTimelineComponent, selector: "c8y-list-item-timeline, c8y-li-timeline" }, { kind: "component", type: i1.UploadArchiveComponent, selector: "c8y-upload-archive", inputs: ["application", "uploadNewVersion", "preUploadCallback"], outputs: ["applicationChange", "refresh"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i3.DatePipe, name: "date" }] }); }
77
77
  }
78
78
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ActivityLogComponent, decorators: [{
79
79
  type: Component,
80
- args: [{ selector: 'c8y-activity-log', template: "<div class=\"inner-scroll bg-level-1 flex-grow\">\n <div class=\"card-block overflow-visible\">\n <c8y-list-group>\n <c8y-li-timeline *ngFor=\"let archive of archives\" [ngClass]=\"{ active: isActive(archive) }\">\n {{ archive.created | date: 'd MMM YYYY' }}\n {{ archive.created | date: 'shortTime' }}\n <c8y-li>\n <c8y-li-icon\n [icon]=\"checkIfLast(archive) ? 'flag-checkered' : 'file-zip-o'\"\n ></c8y-li-icon>\n <c8y-li-body>\n <div class=\"d-flex a-i-start\">\n <div style=\"min-width: 0; flex: 1\">\n <span class=\"text-truncate-wrap\" title=\" {{ archive.description || archive.name }}\">\n {{ archive.description || archive.name }}\n </span>\n <small *ngIf=\"archive.description\" class=\"text-muted\">{{\n archive.description\n }}</small>\n </div>\n <i\n *ngIf=\"isLoading && toActivate(archive)\"\n [c8yIcon]=\"'circle-o-notch'\"\n class=\"icon-spin\"\n title=\"{{ 'Activating' | translate }}\"\n ></i>\n\n <span *ngIf=\"isActive(archive)\" class=\"label label-primary m-l-auto m-t-4\">{{\n 'Active' | translate\n }}</span>\n </div>\n </c8y-li-body>\n <c8y-li-action\n (click)=\"setActive(archive)\"\n *ngIf=\"hasAdminPermissions && !isLoading && !isActive(archive)\"\n icon=\"check-square-o\"\n >\n {{ 'Set as active`archive`' | translate }}\n </c8y-li-action>\n <c8y-li-action (click)=\"downloadArchive(archive)\" icon=\"download\">\n {{ 'Download`archive`' | translate }}\n </c8y-li-action>\n <c8y-li-action\n (click)=\"deleteArchive(archive)\"\n *ngIf=\"\n hasAdminPermissions &&\n archives.length > 1 &&\n !checkIfLast(archive) &&\n !isActive(archive)\n \"\n icon=\"delete\"\n >\n {{ 'Delete`archive`' | translate }}\n </c8y-li-action>\n <c8y-li-action\n (click)=\"reactivateArchive()\"\n *ngIf=\"hasAdminPermissions && canReactivate && isActive(archive)\"\n icon=\"undo\"\n >\n {{ 'Reactivate archive' | translate }}\n </c8y-li-action>\n </c8y-li>\n </c8y-li-timeline>\n </c8y-list-group>\n </div>\n</div>\n<div class=\"card-footer\" *ngIf=\"!isLoading && hasAdminPermissions\">\n <c8y-form-group class=\"m-auto\">\n <c8y-upload-archive [(application)]=\"application\" (refresh)=\"onRefresh()\"></c8y-upload-archive>\n </c8y-form-group>\n</div>\n" }]
80
+ args: [{ selector: 'c8y-activity-log', template: "<div class=\"inner-scroll bg-level-1 flex-grow inner-scroll--md overflow-visible-sm overflow-visible-xs\">\n <div class=\"card-block overflow-visible\">\n <c8y-list-group>\n <c8y-li-timeline *ngFor=\"let archive of archives\" [ngClass]=\"{ active: isActive(archive) }\">\n {{ archive.created | date: 'd MMM YYYY' }}\n {{ archive.created | date: 'shortTime' }}\n <c8y-li>\n <c8y-li-icon\n [icon]=\"checkIfLast(archive) ? 'flag-checkered' : 'file-zip-o'\"\n ></c8y-li-icon>\n <c8y-li-body>\n <div class=\"d-flex a-i-start\">\n <div style=\"min-width: 0; flex: 1\">\n <span class=\"text-truncate-wrap\" title=\" {{ archive.description || archive.name }}\">\n {{ archive.description || archive.name }}\n </span>\n <small *ngIf=\"archive.description\" class=\"text-muted\">{{\n archive.description\n }}</small>\n </div>\n <i\n *ngIf=\"isLoading && toActivate(archive)\"\n [c8yIcon]=\"'circle-o-notch'\"\n class=\"icon-spin\"\n title=\"{{ 'Activating' | translate }}\"\n ></i>\n\n <span *ngIf=\"isActive(archive)\" class=\"label label-primary m-l-auto m-t-4\">{{\n 'Active' | translate\n }}</span>\n </div>\n </c8y-li-body>\n <c8y-li-action\n (click)=\"setActive(archive)\"\n *ngIf=\"hasAdminPermissions && !isLoading && !isActive(archive)\"\n icon=\"check-square-o\"\n >\n {{ 'Set as active`archive`' | translate }}\n </c8y-li-action>\n <c8y-li-action (click)=\"downloadArchive(archive)\" icon=\"download\">\n {{ 'Download`archive`' | translate }}\n </c8y-li-action>\n <c8y-li-action\n (click)=\"deleteArchive(archive)\"\n *ngIf=\"\n hasAdminPermissions &&\n archives.length > 1 &&\n !checkIfLast(archive) &&\n !isActive(archive)\n \"\n icon=\"delete\"\n >\n {{ 'Delete`archive`' | translate }}\n </c8y-li-action>\n <c8y-li-action\n (click)=\"reactivateArchive()\"\n *ngIf=\"hasAdminPermissions && canReactivate && isActive(archive)\"\n icon=\"undo\"\n >\n {{ 'Reactivate archive' | translate }}\n </c8y-li-action>\n </c8y-li>\n </c8y-li-timeline>\n </c8y-list-group>\n </div>\n</div>\n<div class=\"card-footer\" *ngIf=\"!isLoading && hasAdminPermissions\">\n <c8y-form-group class=\"m-auto\">\n <c8y-upload-archive [(application)]=\"application\" (refresh)=\"onRefresh()\"></c8y-upload-archive>\n </c8y-form-group>\n</div>\n" }]
81
81
  }], ctorParameters: () => [{ type: i1.EcosystemService }, { type: i2.AlertService }], propDecorators: { application: [{
82
82
  type: Input
83
83
  }], hasAdminPermissions: [{
84
84
  type: Input
85
85
  }] } });
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHktbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2Vjb3N5c3RlbS9hY3Rpdml0eS1sb2cvYWN0aXZpdHktbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2Vjb3N5c3RlbS9hY3Rpdml0eS1sb2cvYWN0aXZpdHktbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRXpELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQzs7Ozs7QUFNeEUsTUFBTSxPQUFPLG9CQUFvQjtJQVMvQixZQUFvQixnQkFBa0MsRUFBVSxZQUEwQjtRQUF0RSxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQVUsaUJBQVksR0FBWixZQUFZLENBQWM7UUFQakYsd0JBQW1CLEdBQUcsS0FBSyxDQUFDO1FBQ3JDLGFBQVEsR0FBeUIsRUFBRSxDQUFDO1FBSXBDLGtCQUFhLEdBQUcsS0FBSyxDQUFDO0lBRXVFLENBQUM7SUFFOUYsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQztJQUN4QyxDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQVE7UUFDWixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUMzQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELFFBQVEsQ0FBQyxPQUEyQjtRQUNsQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxLQUFLLE9BQU8sQ0FBQyxFQUFFLENBQUM7SUFDekQsQ0FBQztJQUVELFVBQVUsQ0FBQyxPQUEyQjtRQUNwQyxPQUFPLElBQUksQ0FBQyxtQkFBbUIsS0FBSyxPQUFPLENBQUMsRUFBRSxDQUFDO0lBQ2pELENBQUM7SUFFRCxXQUFXLENBQUMsT0FBMkI7UUFDckMsT0FBTyxPQUFPLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxjQUFjO1FBQ1osT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQsS0FBSyxDQUFDLFNBQVMsQ0FBQyxPQUFPO1FBQ3JCLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxFQUFFLElBQUksT0FBTyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsSUFBSSxDQUFDO1lBQ0gsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUNqQixNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUN0RSxDQUFDLElBQUksQ0FBQztRQUNULENBQUM7UUFBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1lBQ1osSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN6QyxDQUFDO1FBQ0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdkIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFRCxLQUFLLENBQUMsYUFBYSxDQUFDLE9BQTJCO1FBQzdDLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRUQsS0FBSyxDQUFDLGVBQWUsQ0FBQyxPQUEyQjtRQUMvQyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQsS0FBSyxDQUFDLGlCQUFpQjtRQUNyQixNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVELEtBQUssQ0FBQyxTQUFTO1FBQ2IsTUFBTSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVPLEtBQUssQ0FBQyxPQUFPO1FBQ25CLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDOUUsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxPQUFPLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDdkQsOEZBQThGO1lBQzlGLG9FQUFvRTtZQUNwRSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBMkIsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMvRixDQUFDO1FBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDMUIsT0FBUSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFTLEdBQUksSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBUyxDQUFDO1FBQ3JFLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ3pCLENBQUM7OEdBakZVLG9CQUFvQjtrR0FBcEIsb0JBQW9CLDRJQ1ZqQyxxeEZBdUVBOzsyRkQ3RGEsb0JBQW9CO2tCQUpoQyxTQUFTOytCQUNFLGtCQUFrQjtnSEFJbkIsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElBcHBsaWNhdGlvbiwgSUFwcGxpY2F0aW9uQmluYXJ5IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEVjb3N5c3RlbVNlcnZpY2UgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2Vjb3N5c3RlbS9zaGFyZWQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktYWN0aXZpdHktbG9nJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FjdGl2aXR5LWxvZy5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgQWN0aXZpdHlMb2dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBhcHBsaWNhdGlvbjogSUFwcGxpY2F0aW9uO1xuICBASW5wdXQoKSBoYXNBZG1pblBlcm1pc3Npb25zID0gZmFsc2U7XG4gIGFyY2hpdmVzOiBJQXBwbGljYXRpb25CaW5hcnlbXSA9IFtdO1xuICB0b0FjdGl2YXRlVmVyc2lvbklkOiBzdHJpbmc7XG4gIGxhc3Q6IElBcHBsaWNhdGlvbkJpbmFyeTtcbiAgaXNMb2FkaW5nOiBib29sZWFuO1xuICBjYW5SZWFjdGl2YXRlID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlY29zeXN0ZW1TZXJ2aWNlOiBFY29zeXN0ZW1TZXJ2aWNlLCBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlKSB7fVxuXG4gIGdldCB1cGxvYWRQcm9ncmVzcygpOiBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPiB7XG4gICAgcmV0dXJuIHRoaXMuZWNvc3lzdGVtU2VydmljZS5wcm9ncmVzcztcbiAgfVxuXG4gIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIHRoaXMuY2FuUmVhY3RpdmF0ZSA9IHRoaXMuc2hvd1JlYWN0aXZhdGUoKTtcbiAgICB0aGlzLnJlZnJlc2goKTtcbiAgfVxuXG4gIGlzQWN0aXZlKGFyY2hpdmU6IElBcHBsaWNhdGlvbkJpbmFyeSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmFwcGxpY2F0aW9uLmFjdGl2ZVZlcnNpb25JZCA9PT0gYXJjaGl2ZS5pZDtcbiAgfVxuXG4gIHRvQWN0aXZhdGUoYXJjaGl2ZTogSUFwcGxpY2F0aW9uQmluYXJ5KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudG9BY3RpdmF0ZVZlcnNpb25JZCA9PT0gYXJjaGl2ZS5pZDtcbiAgfVxuXG4gIGNoZWNrSWZMYXN0KGFyY2hpdmU6IElBcHBsaWNhdGlvbkJpbmFyeSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBhcmNoaXZlLmlkID09PSB0aGlzLmxhc3QuaWQ7XG4gIH1cblxuICBzaG93UmVhY3RpdmF0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5lY29zeXN0ZW1TZXJ2aWNlLmlzQXBwbGljYXRpb24odGhpcy5hcHBsaWNhdGlvbik7XG4gIH1cblxuICBhc3luYyBzZXRBY3RpdmUoYXJjaGl2ZSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGlkID0gYXJjaGl2ZS5pZCB8fCBhcmNoaXZlO1xuICAgIHRoaXMudG9BY3RpdmF0ZVZlcnNpb25JZCA9IGlkO1xuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICB0cnkge1xuICAgICAgdGhpcy5hcHBsaWNhdGlvbiA9IChcbiAgICAgICAgYXdhaXQgdGhpcy5lY29zeXN0ZW1TZXJ2aWNlLnNldEFwcEFjdGl2ZVZlcnNpb24odGhpcy5hcHBsaWNhdGlvbiwgaWQpXG4gICAgICApLmRhdGE7XG4gICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZFNlcnZlckZhaWx1cmUoZXgpO1xuICAgIH1cbiAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgIHRoaXMucmVmcmVzaCgpO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlQXJjaGl2ZShhcmNoaXZlOiBJQXBwbGljYXRpb25CaW5hcnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmVjb3N5c3RlbVNlcnZpY2UuZGVsZXRlQXJjaGl2ZShhcmNoaXZlLCB0aGlzLmFwcGxpY2F0aW9uKTtcbiAgICB0aGlzLnJlZnJlc2goKTtcbiAgfVxuXG4gIGFzeW5jIGRvd25sb2FkQXJjaGl2ZShhcmNoaXZlOiBJQXBwbGljYXRpb25CaW5hcnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmVjb3N5c3RlbVNlcnZpY2UuZG93bmxvYWRBcmNoaXZlKHRoaXMuYXBwbGljYXRpb24sIGFyY2hpdmUpO1xuICB9XG5cbiAgYXN5bmMgcmVhY3RpdmF0ZUFyY2hpdmUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5lY29zeXN0ZW1TZXJ2aWNlLnJlYWN0aXZhdGVBcmNoaXZlKHRoaXMuYXBwbGljYXRpb24pO1xuICB9XG5cbiAgYXN5bmMgb25SZWZyZXNoKCkge1xuICAgIGF3YWl0IHRoaXMucmVmcmVzaCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZWZyZXNoKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLmFyY2hpdmVzID0gYXdhaXQgdGhpcy5lY29zeXN0ZW1TZXJ2aWNlLmxpc3RBcmNoaXZlcyh0aGlzLmFwcGxpY2F0aW9uLmlkKTtcbiAgICBpZiAodGhpcy5hcHBsaWNhdGlvbi5tYW5pZmVzdD8ucGFja2FnZSA9PT0gJ2JsdWVwcmludCcpIHtcbiAgICAgIC8vIGZpbHRlciBvdXQgZW50cmllcyB3aXRob3V0IGRlc2NyaXB0aW9uIGJlY2F1c2UgdXNpbmcgdGhlbSBhcyBhY3RpdmUgbWF5IGJyZWFrIGFwcGxpY2F0aW9uJ3NcbiAgICAgIC8vICBtYW5pZmVzdCAoY2hhbmdpbmcgaXNQYWNrYWdlIHByb3BlcnR5IG9mIGRlcGxveWVkIGFwcCB0byAndHJ1ZScpXG4gICAgICB0aGlzLmFyY2hpdmVzID0gdGhpcy5hcmNoaXZlcy5maWx0ZXIoKGFyY2hpdmU6IElBcHBsaWNhdGlvbkJpbmFyeSkgPT4gISFhcmNoaXZlLmRlc2NyaXB0aW9uKTtcbiAgICB9XG4gICAgdGhpcy5hcmNoaXZlcy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICByZXR1cm4gKG5ldyBEYXRlKGIuY3JlYXRlZCkgYXMgYW55KSAtIChuZXcgRGF0ZShhLmNyZWF0ZWQpIGFzIGFueSk7XG4gICAgfSk7XG4gICAgdGhpcy5sYXN0ID0gdGhpcy5hcmNoaXZlc1t0aGlzLmFyY2hpdmVzLmxlbmd0aCAtIDFdO1xuICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJpbm5lci1zY3JvbGwgYmctbGV2ZWwtMSBmbGV4LWdyb3dcIj5cbiAgPGRpdiBjbGFzcz1cImNhcmQtYmxvY2sgb3ZlcmZsb3ctdmlzaWJsZVwiPlxuICAgIDxjOHktbGlzdC1ncm91cD5cbiAgICAgIDxjOHktbGktdGltZWxpbmUgKm5nRm9yPVwibGV0IGFyY2hpdmUgb2YgYXJjaGl2ZXNcIiBbbmdDbGFzc109XCJ7IGFjdGl2ZTogaXNBY3RpdmUoYXJjaGl2ZSkgfVwiPlxuICAgICAgICB7eyBhcmNoaXZlLmNyZWF0ZWQgfCBkYXRlOiAnZCBNTU0gWVlZWScgfX1cbiAgICAgICAge3sgYXJjaGl2ZS5jcmVhdGVkIHwgZGF0ZTogJ3Nob3J0VGltZScgfX1cbiAgICAgICAgPGM4eS1saT5cbiAgICAgICAgICA8Yzh5LWxpLWljb25cbiAgICAgICAgICAgIFtpY29uXT1cImNoZWNrSWZMYXN0KGFyY2hpdmUpID8gJ2ZsYWctY2hlY2tlcmVkJyA6ICdmaWxlLXppcC1vJ1wiXG4gICAgICAgICAgPjwvYzh5LWxpLWljb24+XG4gICAgICAgICAgPGM4eS1saS1ib2R5PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhLWktc3RhcnRcIj5cbiAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cIm1pbi13aWR0aDogMDsgZmxleDogMVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC10cnVuY2F0ZS13cmFwXCIgdGl0bGU9XCIge3sgYXJjaGl2ZS5kZXNjcmlwdGlvbiB8fCBhcmNoaXZlLm5hbWUgfX1cIj5cbiAgICAgICAgICAgICAgICAgIHt7IGFyY2hpdmUuZGVzY3JpcHRpb24gfHwgYXJjaGl2ZS5uYW1lIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzbWFsbCAqbmdJZj1cImFyY2hpdmUuZGVzY3JpcHRpb25cIiBjbGFzcz1cInRleHQtbXV0ZWRcIj57e1xuICAgICAgICAgICAgICAgICAgYXJjaGl2ZS5kZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJpc0xvYWRpbmcgJiYgdG9BY3RpdmF0ZShhcmNoaXZlKVwiXG4gICAgICAgICAgICAgICAgW2M4eUljb25dPVwiJ2NpcmNsZS1vLW5vdGNoJ1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uLXNwaW5cIlxuICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ0FjdGl2YXRpbmcnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgPjwvaT5cblxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImlzQWN0aXZlKGFyY2hpdmUpXCIgY2xhc3M9XCJsYWJlbCBsYWJlbC1wcmltYXJ5IG0tbC1hdXRvIG0tdC00XCI+e3tcbiAgICAgICAgICAgICAgICAnQWN0aXZlJyB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvYzh5LWxpLWJvZHk+XG4gICAgICAgICAgPGM4eS1saS1hY3Rpb25cbiAgICAgICAgICAgIChjbGljayk9XCJzZXRBY3RpdmUoYXJjaGl2ZSlcIlxuICAgICAgICAgICAgKm5nSWY9XCJoYXNBZG1pblBlcm1pc3Npb25zICYmICFpc0xvYWRpbmcgJiYgIWlzQWN0aXZlKGFyY2hpdmUpXCJcbiAgICAgICAgICAgIGljb249XCJjaGVjay1zcXVhcmUtb1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgJ1NldCBhcyBhY3RpdmVgYXJjaGl2ZWAnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9jOHktbGktYWN0aW9uPlxuICAgICAgICAgIDxjOHktbGktYWN0aW9uIChjbGljayk9XCJkb3dubG9hZEFyY2hpdmUoYXJjaGl2ZSlcIiBpY29uPVwiZG93bmxvYWRcIj5cbiAgICAgICAgICAgIHt7ICdEb3dubG9hZGBhcmNoaXZlYCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2M4eS1saS1hY3Rpb24+XG4gICAgICAgICAgPGM4eS1saS1hY3Rpb25cbiAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVBcmNoaXZlKGFyY2hpdmUpXCJcbiAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgIGhhc0FkbWluUGVybWlzc2lvbnMgJiZcbiAgICAgICAgICAgICAgYXJjaGl2ZXMubGVuZ3RoID4gMSAmJlxuICAgICAgICAgICAgICAhY2hlY2tJZkxhc3QoYXJjaGl2ZSkgJiZcbiAgICAgICAgICAgICAgIWlzQWN0aXZlKGFyY2hpdmUpXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgaWNvbj1cImRlbGV0ZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgJ0RlbGV0ZWBhcmNoaXZlYCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2M4eS1saS1hY3Rpb24+XG4gICAgICAgICAgPGM4eS1saS1hY3Rpb25cbiAgICAgICAgICAgIChjbGljayk9XCJyZWFjdGl2YXRlQXJjaGl2ZSgpXCJcbiAgICAgICAgICAgICpuZ0lmPVwiaGFzQWRtaW5QZXJtaXNzaW9ucyAmJiBjYW5SZWFjdGl2YXRlICYmIGlzQWN0aXZlKGFyY2hpdmUpXCJcbiAgICAgICAgICAgIGljb249XCJ1bmRvXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyAnUmVhY3RpdmF0ZSBhcmNoaXZlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvYzh5LWxpLWFjdGlvbj5cbiAgICAgICAgPC9jOHktbGk+XG4gICAgICA8L2M4eS1saS10aW1lbGluZT5cbiAgICA8L2M4eS1saXN0LWdyb3VwPlxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImNhcmQtZm9vdGVyXCIgKm5nSWY9XCIhaXNMb2FkaW5nICYmIGhhc0FkbWluUGVybWlzc2lvbnNcIj5cbiAgPGM4eS1mb3JtLWdyb3VwIGNsYXNzPVwibS1hdXRvXCI+XG4gICAgPGM4eS11cGxvYWQtYXJjaGl2ZSBbKGFwcGxpY2F0aW9uKV09XCJhcHBsaWNhdGlvblwiIChyZWZyZXNoKT1cIm9uUmVmcmVzaCgpXCI+PC9jOHktdXBsb2FkLWFyY2hpdmU+XG4gIDwvYzh5LWZvcm0tZ3JvdXA+XG48L2Rpdj5cbiJdfQ==
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHktbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2Vjb3N5c3RlbS9hY3Rpdml0eS1sb2cvYWN0aXZpdHktbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2Vjb3N5c3RlbS9hY3Rpdml0eS1sb2cvYWN0aXZpdHktbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRXpELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQzs7Ozs7QUFNeEUsTUFBTSxPQUFPLG9CQUFvQjtJQVMvQixZQUFvQixnQkFBa0MsRUFBVSxZQUEwQjtRQUF0RSxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQVUsaUJBQVksR0FBWixZQUFZLENBQWM7UUFQakYsd0JBQW1CLEdBQUcsS0FBSyxDQUFDO1FBQ3JDLGFBQVEsR0FBeUIsRUFBRSxDQUFDO1FBSXBDLGtCQUFhLEdBQUcsS0FBSyxDQUFDO0lBRXVFLENBQUM7SUFFOUYsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQztJQUN4QyxDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQVE7UUFDWixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUMzQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELFFBQVEsQ0FBQyxPQUEyQjtRQUNsQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxLQUFLLE9BQU8sQ0FBQyxFQUFFLENBQUM7SUFDekQsQ0FBQztJQUVELFVBQVUsQ0FBQyxPQUEyQjtRQUNwQyxPQUFPLElBQUksQ0FBQyxtQkFBbUIsS0FB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Q3pCLENBQUM7OEdBakZVLG9CQUFvQjtrR0FBcEIsb0JBQW9CLDRJQ1ZqQyw4MEZBdUVBOzsyRkQ3RGEsb0JBQW9CO2tCQUpoQyxTQUFTOytCQUNFLGtCQUFrQjtnSEFJbkIsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElBcHBsaWNhdGlvbiwgSUFwcGxpY2F0aW9uQmluYXJ5IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEVjb3N5c3RlbVNlcnZpY2UgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2Vjb3N5c3RlbS9zaGFyZWQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktYWN0aXZpdHktbG9nJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FjdGl2aXR5LWxvZy5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgQWN0aXZpdHlMb2dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBhcHBsaWNhdGlvbjogSUFwcGxpY2F0aW9uO1xuICBASW5wdXQoKSBoYXNBZG1pblBlcm1pc3Npb25zID0gZmFsc2U7XG4gIGFyY2hpdmVzOiBJQXBwbGljYXRpb25CaW5hcnlbXSA9IFtdO1xuICB0b0FjdGl2YXRlVmVyc2lvbklkOiBzdHJpbmc7XG4gIGxhc3Q6IElBcHBsaWNhdGlvbkJpbmFyeTtcbiAgaXNMb2FkaW5nOiBib29sZWFuO1xuICBjYW5SZWFjdGl2YXRlID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlY29zeXN0ZW1TZXJ2aWNlOiBFY29zeXN0ZW1TZXJ2aWNlLCBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlKSB7fVxuXG4gIGdldCB1cGxvYWRQcm9ncmVzcygpOiBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPiB7XG4gICAgcmV0dXJuIHRoaXMuZWNvc3lzdGVtU2VydmljZS5wcm9ncmVzcztcbiAgfVxuXG4gIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIHRoaXMuY2FuUmVhY3RpdmF0ZSA9IHRoaXMuc2hvd1JlYWN0aXZhdGUoKTtcbiAgICB0aGlzLnJlZnJlc2goKTtcbiAgfVxuXG4gIGlzQWN0aXZlKGFyY2hpdmU6IElBcHBsaWNhdGlvbkJpbmFyeSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmFwcGxpY2F0aW9uLmFjdGl2ZVZlcnNpb25JZCA9PT0gYXJjaGl2ZS5pZDtcbiAgfVxuXG4gIHRvQWN0aXZhdGUoYXJjaGl2ZTogSUFwcGxpY2F0aW9uQmluYXJ5KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudG9BY3RpdmF0ZVZlcnNpb25JZCA9PT0gYXJjaGl2ZS5pZDtcbiAgfVxuXG4gIGNoZWNrSWZMYXN0KGFyY2hpdmU6IElBcHBsaWNhdGlvbkJpbmFyeSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBhcmNoaXZlLmlkID09PSB0aGlzLmxhc3QuaWQ7XG4gIH1cblxuICBzaG93UmVhY3RpdmF0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5lY29zeXN0ZW1TZXJ2aWNlLmlzQXBwbGljYXRpb24odGhpcy5hcHBsaWNhdGlvbik7XG4gIH1cblxuICBhc3luYyBzZXRBY3RpdmUoYXJjaGl2ZSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGlkID0gYXJjaGl2ZS5pZCB8fCBhcmNoaXZlO1xuICAgIHRoaXMudG9BY3RpdmF0ZVZlcnNpb25JZCA9IGlkO1xuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICB0cnkge1xuICAgICAgdGhpcy5hcHBsaWNhdGlvbiA9IChcbiAgICAgICAgYXdhaXQgdGhpcy5lY29zeXN0ZW1TZXJ2aWNlLnNldEFwcEFjdGl2ZVZlcnNpb24odGhpcy5hcHBsaWNhdGlvbiwgaWQpXG4gICAgICApLmRhdGE7XG4gICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZFNlcnZlckZhaWx1cmUoZXgpO1xuICAgIH1cbiAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgIHRoaXMucmVmcmVzaCgpO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlQXJjaGl2ZShhcmNoaXZlOiBJQXBwbGljYXRpb25CaW5hcnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmVjb3N5c3RlbVNlcnZpY2UuZGVsZXRlQXJjaGl2ZShhcmNoaXZlLCB0aGlzLmFwcGxpY2F0aW9uKTtcbiAgICB0aGlzLnJlZnJlc2goKTtcbiAgfVxuXG4gIGFzeW5jIGRvd25sb2FkQXJjaGl2ZShhcmNoaXZlOiBJQXBwbGljYXRpb25CaW5hcnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmVjb3N5c3RlbVNlcnZpY2UuZG93bmxvYWRBcmNoaXZlKHRoaXMuYXBwbGljYXRpb24sIGFyY2hpdmUpO1xuICB9XG5cbiAgYXN5bmMgcmVhY3RpdmF0ZUFyY2hpdmUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5lY29zeXN0ZW1TZXJ2aWNlLnJlYWN0aXZhdGVBcmNoaXZlKHRoaXMuYXBwbGljYXRpb24pO1xuICB9XG5cbiAgYXN5bmMgb25SZWZyZXNoKCkge1xuICAgIGF3YWl0IHRoaXMucmVmcmVzaCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZWZyZXNoKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLmFyY2hpdmVzID0gYXdhaXQgdGhpcy5lY29zeXN0ZW1TZXJ2aWNlLmxpc3RBcmNoaXZlcyh0aGlzLmFwcGxpY2F0aW9uLmlkKTtcbiAgICBpZiAodGhpcy5hcHBsaWNhdGlvbi5tYW5pZmVzdD8ucGFja2FnZSA9PT0gJ2JsdWVwcmludCcpIHtcbiAgICAgIC8vIGZpbHRlciBvdXQgZW50cmllcyB3aXRob3V0IGRlc2NyaXB0aW9uIGJlY2F1c2UgdXNpbmcgdGhlbSBhcyBhY3RpdmUgbWF5IGJyZWFrIGFwcGxpY2F0aW9uJ3NcbiAgICAgIC8vICBtYW5pZmVzdCAoY2hhbmdpbmcgaXNQYWNrYWdlIHByb3BlcnR5IG9mIGRlcGxveWVkIGFwcCB0byAndHJ1ZScpXG4gICAgICB0aGlzLmFyY2hpdmVzID0gdGhpcy5hcmNoaXZlcy5maWx0ZXIoKGFyY2hpdmU6IElBcHBsaWNhdGlvbkJpbmFyeSkgPT4gISFhcmNoaXZlLmRlc2NyaXB0aW9uKTtcbiAgICB9XG4gICAgdGhpcy5hcmNoaXZlcy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICByZXR1cm4gKG5ldyBEYXRlKGIuY3JlYXRlZCkgYXMgYW55KSAtIChuZXcgRGF0ZShhLmNyZWF0ZWQpIGFzIGFueSk7XG4gICAgfSk7XG4gICAgdGhpcy5sYXN0ID0gdGhpcy5hcmNoaXZlc1t0aGlzLmFyY2hpdmVzLmxlbmd0aCAtIDFdO1xuICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJpbm5lci1zY3JvbGwgYmctbGV2ZWwtMSBmbGV4LWdyb3cgaW5uZXItc2Nyb2xsLS1tZCBvdmVyZmxvdy12aXNpYmxlLXNtIG92ZXJmbG93LXZpc2libGUteHNcIj5cbiAgPGRpdiBjbGFzcz1cImNhcmQtYmxvY2sgb3ZlcmZsb3ctdmlzaWJsZVwiPlxuICAgIDxjOHktbGlzdC1ncm91cD5cbiAgICAgIDxjOHktbGktdGltZWxpbmUgKm5nRm9yPVwibGV0IGFyY2hpdmUgb2YgYXJjaGl2ZXNcIiBbbmdDbGFzc109XCJ7IGFjdGl2ZTogaXNBY3RpdmUoYXJjaGl2ZSkgfVwiPlxuICAgICAgICB7eyBhcmNoaXZlLmNyZWF0ZWQgfCBkYXRlOiAnZCBNTU0gWVlZWScgfX1cbiAgICAgICAge3sgYXJjaGl2ZS5jcmVhdGVkIHwgZGF0ZTogJ3Nob3J0VGltZScgfX1cbiAgICAgICAgPGM4eS1saT5cbiAgICAgICAgICA8Yzh5LWxpLWljb25cbiAgICAgICAgICAgIFtpY29uXT1cImNoZWNrSWZMYXN0KGFyY2hpdmUpID8gJ2ZsYWctY2hlY2tlcmVkJyA6ICdmaWxlLXppcC1vJ1wiXG4gICAgICAgICAgPjwvYzh5LWxpLWljb24+XG4gICAgICAgICAgPGM4eS1saS1ib2R5PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhLWktc3RhcnRcIj5cbiAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cIm1pbi13aWR0aDogMDsgZmxleDogMVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC10cnVuY2F0ZS13cmFwXCIgdGl0bGU9XCIge3sgYXJjaGl2ZS5kZXNjcmlwdGlvbiB8fCBhcmNoaXZlLm5hbWUgfX1cIj5cbiAgICAgICAgICAgICAgICAgIHt7IGFyY2hpdmUuZGVzY3JpcHRpb24gfHwgYXJjaGl2ZS5uYW1lIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzbWFsbCAqbmdJZj1cImFyY2hpdmUuZGVzY3JpcHRpb25cIiBjbGFzcz1cInRleHQtbXV0ZWRcIj57e1xuICAgICAgICAgICAgICAgICAgYXJjaGl2ZS5kZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJpc0xvYWRpbmcgJiYgdG9BY3RpdmF0ZShhcmNoaXZlKVwiXG4gICAgICAgICAgICAgICAgW2M4eUljb25dPVwiJ2NpcmNsZS1vLW5vdGNoJ1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uLXNwaW5cIlxuICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ0FjdGl2YXRpbmcnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgPjwvaT5cblxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImlzQWN0aXZlKGFyY2hpdmUpXCIgY2xhc3M9XCJsYWJlbCBsYWJlbC1wcmltYXJ5IG0tbC1hdXRvIG0tdC00XCI+e3tcbiAgICAgICAgICAgICAgICAnQWN0aXZlJyB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvYzh5LWxpLWJvZHk+XG4gICAgICAgICAgPGM4eS1saS1hY3Rpb25cbiAgICAgICAgICAgIChjbGljayk9XCJzZXRBY3RpdmUoYXJjaGl2ZSlcIlxuICAgICAgICAgICAgKm5nSWY9XCJoYXNBZG1pblBlcm1pc3Npb25zICYmICFpc0xvYWRpbmcgJiYgIWlzQWN0aXZlKGFyY2hpdmUpXCJcbiAgICAgICAgICAgIGljb249XCJjaGVjay1zcXVhcmUtb1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgJ1NldCBhcyBhY3RpdmVgYXJjaGl2ZWAnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9jOHktbGktYWN0aW9uPlxuICAgICAgICAgIDxjOHktbGktYWN0aW9uIChjbGljayk9XCJkb3dubG9hZEFyY2hpdmUoYXJjaGl2ZSlcIiBpY29uPVwiZG93bmxvYWRcIj5cbiAgICAgICAgICAgIHt7ICdEb3dubG9hZGBhcmNoaXZlYCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2M4eS1saS1hY3Rpb24+XG4gICAgICAgICAgPGM4eS1saS1hY3Rpb25cbiAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVBcmNoaXZlKGFyY2hpdmUpXCJcbiAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgIGhhc0FkbWluUGVybWlzc2lvbnMgJiZcbiAgICAgICAgICAgICAgYXJjaGl2ZXMubGVuZ3RoID4gMSAmJlxuICAgICAgICAgICAgICAhY2hlY2tJZkxhc3QoYXJjaGl2ZSkgJiZcbiAgICAgICAgICAgICAgIWlzQWN0aXZlKGFyY2hpdmUpXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgaWNvbj1cImRlbGV0ZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgJ0RlbGV0ZWBhcmNoaXZlYCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2M4eS1saS1hY3Rpb24+XG4gICAgICAgICAgPGM4eS1saS1hY3Rpb25cbiAgICAgICAgICAgIChjbGljayk9XCJyZWFjdGl2YXRlQXJjaGl2ZSgpXCJcbiAgICAgICAgICAgICpuZ0lmPVwiaGFzQWRtaW5QZXJtaXNzaW9ucyAmJiBjYW5SZWFjdGl2YXRlICYmIGlzQWN0aXZlKGFyY2hpdmUpXCJcbiAgICAgICAgICAgIGljb249XCJ1bmRvXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyAnUmVhY3RpdmF0ZSBhcmNoaXZlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvYzh5LWxpLWFjdGlvbj5cbiAgICAgICAgPC9jOHktbGk+XG4gICAgICA8L2M4eS1saS10aW1lbGluZT5cbiAgICA8L2M4eS1saXN0LWdyb3VwPlxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImNhcmQtZm9vdGVyXCIgKm5nSWY9XCIhaXNMb2FkaW5nICYmIGhhc0FkbWluUGVybWlzc2lvbnNcIj5cbiAgPGM4eS1mb3JtLWdyb3VwIGNsYXNzPVwibS1hdXRvXCI+XG4gICAgPGM4eS11cGxvYWQtYXJjaGl2ZSBbKGFwcGxpY2F0aW9uKV09XCJhcHBsaWNhdGlvblwiIChyZWZyZXNoKT1cIm9uUmVmcmVzaCgpXCI+PC9jOHktdXBsb2FkLWFyY2hpdmU+XG4gIDwvYzh5LWZvcm0tZ3JvdXA+XG48L2Rpdj5cbiJdfQ==