barsa-sap-ui 1.0.274 → 1.0.277

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 (56) hide show
  1. package/esm2020/lib/apply-conditional-formmatings.directive.mjs +19 -14
  2. package/esm2020/lib/barsa-cartable-form/barsa-cartable-form.component.mjs +45 -0
  3. package/esm2020/lib/barsa-cartable-template/barsa-cartable-template.component.mjs +24 -0
  4. package/esm2020/lib/barsa-column-indicator/barsa-column-indicator.component.mjs +23 -0
  5. package/esm2020/lib/barsa-group-cartable/barsa-cartable-group.component.mjs +96 -0
  6. package/esm2020/lib/barsa-sap-ui.module.mjs +34 -29
  7. package/esm2020/lib/barsa-search-form/barsa-search-form.component.mjs +1 -1
  8. package/esm2020/lib/barsa-table-column/barsa-table-column.component.mjs +43 -0
  9. package/esm2020/lib/barsa-table-header/barsa-table-header.component.mjs +6 -3
  10. package/esm2020/lib/barsa-table-row/barsa-table-row.component.mjs +7 -6
  11. package/esm2020/lib/barsa-tree-item/barsa-tree-item.component.mjs +3 -3
  12. package/esm2020/lib/barsa-ulv-main/barsa-ulv-main.component.mjs +3 -3
  13. package/esm2020/lib/card-item/card-item.component.mjs +3 -3
  14. package/esm2020/lib/card-view-content/card-view-content.component.mjs +3 -3
  15. package/esm2020/lib/fundamental-dynamic-form/fundamental-dynamic-form.component.mjs +5 -3
  16. package/esm2020/lib/index.mjs +21 -11
  17. package/esm2020/lib/layout-actions/layout-actions.component.mjs +3 -3
  18. package/esm2020/lib/list-item/list-item.component.mjs +3 -3
  19. package/esm2020/lib/models/grid-view.mjs +1 -1
  20. package/esm2020/lib/report-view-renderer.directive.mjs +16 -2
  21. package/esm2020/lib/rich-text-static/rich-text-static.component.mjs +37 -10
  22. package/esm2020/lib/sap-ui-report-base.component.mjs +9 -2
  23. package/esm2020/lib/ui-form-panel/ui-form-panel.component.mjs +4 -3
  24. package/esm2020/lib/ui-grid/ui-grid.component.mjs +3 -3
  25. package/esm2020/lib/ui-list-view/ui-list-view.component.mjs +19 -10
  26. package/esm2020/lib/ui-matrix-view/ui-matrix-view.component.mjs +3 -3
  27. package/esm2020/lib/ui-mo-info-ulv-combo/ui-mo-info-ulv-combo.component.mjs +5 -4
  28. package/esm2020/lib/ui-report-container/ui-report-container.component.mjs +3 -3
  29. package/esm2020/lib/ui-table-view/ui-table-view.component.mjs +9 -30
  30. package/esm2020/lib/ulv-context-menu/ulv-context-menu.component.mjs +5 -3
  31. package/esm2020/public-api.mjs +6 -1
  32. package/fesm2015/barsa-sap-ui.mjs +403 -148
  33. package/fesm2015/barsa-sap-ui.mjs.map +1 -1
  34. package/fesm2020/barsa-sap-ui.mjs +390 -133
  35. package/fesm2020/barsa-sap-ui.mjs.map +1 -1
  36. package/lib/apply-conditional-formmatings.directive.d.ts +7 -7
  37. package/lib/barsa-cartable-form/barsa-cartable-form.component.d.ts +15 -0
  38. package/lib/barsa-cartable-template/barsa-cartable-template.component.d.ts +14 -0
  39. package/lib/barsa-column-indicator/barsa-column-indicator.component.d.ts +11 -0
  40. package/lib/barsa-group-cartable/barsa-cartable-group.component.d.ts +30 -0
  41. package/lib/barsa-sap-ui.module.d.ts +44 -39
  42. package/lib/barsa-table-column/barsa-table-column.component.d.ts +16 -0
  43. package/lib/barsa-table-header/barsa-table-header.component.d.ts +3 -1
  44. package/lib/barsa-table-row/barsa-table-row.component.d.ts +3 -5
  45. package/lib/fundamental-dynamic-form/fundamental-dynamic-form.component.d.ts +2 -1
  46. package/lib/index.d.ts +4 -1
  47. package/lib/models/grid-view.d.ts +2 -7
  48. package/lib/report-view-renderer.directive.d.ts +4 -2
  49. package/lib/rich-text-static/rich-text-static.component.d.ts +5 -1
  50. package/lib/sap-ui-report-base.component.d.ts +3 -1
  51. package/lib/ui-form-panel/ui-form-panel.component.d.ts +1 -0
  52. package/lib/ui-list-view/ui-list-view.component.d.ts +9 -1
  53. package/lib/ui-table-view/ui-table-view.component.d.ts +1 -2
  54. package/lib/ulv-context-menu/ulv-context-menu.component.d.ts +2 -1
  55. package/package.json +1 -1
  56. package/public-api.d.ts +5 -0
@@ -21,7 +21,7 @@ export class BarsaSearchFormComponent extends UiFormPanelComponent {
21
21
  }
22
22
  }
23
23
  BarsaSearchFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BarsaSearchFormComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
24
- BarsaSearchFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: BarsaSearchFormComponent, selector: "bsu-barsa-search-form", providers: [FormPanelService], usesInheritance: true, ngImport: i0, template: "<bsu-fundamental-dynamic-form\r\n [removeContentPadding]=\"(headerRemoveContentPadding$ | async)!!\"\r\n [breadCrumbs]=\"breadCrumbs$ | async\"\r\n [description]=\"(headerDescription$ | async)!!\"\r\n [title]=\"(title$ | async)!!\"\r\n [subtitle]=\"(headerSubtitle$ | async)!!\"\r\n [toolbarItems]=\"toolbarItems$ | async | tlbButtons: 'inFooter':false\"\r\n [layoutActions]=\"toolbarItems$ | async | tlbButtons: 'inFooter':true\"\r\n [toolbarVisible]=\"(toolbarVisible$ | async)!!\"\r\n [facetList]=\"(headerLayout$ | async)?.FacetList2\"\r\n [parameters]=\"parameters\"\r\n [workflowPanelUi]=\"workflowPanelUi$ | async\"\r\n [isMobile]=\"isMobile\"\r\n [layout94]=\"layout94$ | async\"\r\n [rtl]=\"(rtl$ | async)!!\"\r\n [mask]=\"(mask$ | async)!!\"\r\n [dirValue]=\"(dirValue$ | async)!!\"\r\n [deviceSize]=\"(deviceSize$ | async)!!\"\r\n [contentDensity]=\"(contentDensity$ | async)!!\"\r\n [modernTabs]=\"(modernTabs$ | async)!!\"\r\n [avatar]=\"(avatar$ | async)!!\"\r\n [fieldDict]=\"(fieldDict$ | async)!!\"\r\n (close)=\"onClose2()\"\r\n (toolbarClick)=\"onToolbarClick($event)\"\r\n [contentIsPage]=\"parameters?.ContentIsPage\"\r\n (workflowChoiceClick)=\"onWorkflowChoiceClick($event)\"\r\n></bsu-fundamental-dynamic-form>\r\n", styles: [""], dependencies: [{ kind: "component", type: i1.FundamentalDynamicFormComponent, selector: "bsu-fundamental-dynamic-form", inputs: ["breadCrumbs", "toolbarVisible", "toolbarItems", "layoutActions", "layout94", "parameters", "workflowPanelUi", "context", "title", "subtitle", "description", "facetList", "fieldDict", "removeHeaderBorder", "removeContentPadding", "isMobile", "mo", "avatar", "rtl", "hideTitle", "hideClose", "hidePin", "mask", "canSend", "contentIsPage", "contentDensity", "deviceSize", "dirValue", "portrait", "modernTabs"], outputs: ["toolbarClick", "workflowChoiceClick", "close"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.TlbButtonsPipe, name: "tlbButtons" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
24
+ BarsaSearchFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: BarsaSearchFormComponent, selector: "bsu-barsa-search-form", providers: [FormPanelService], usesInheritance: true, ngImport: i0, template: "<bsu-fundamental-dynamic-form\r\n [removeContentPadding]=\"(headerRemoveContentPadding$ | async)!!\"\r\n [breadCrumbs]=\"breadCrumbs$ | async\"\r\n [description]=\"(headerDescription$ | async)!!\"\r\n [title]=\"(title$ | async)!!\"\r\n [subtitle]=\"(headerSubtitle$ | async)!!\"\r\n [toolbarItems]=\"toolbarItems$ | async | tlbButtons: 'inFooter':false\"\r\n [layoutActions]=\"toolbarItems$ | async | tlbButtons: 'inFooter':true\"\r\n [toolbarVisible]=\"(toolbarVisible$ | async)!!\"\r\n [facetList]=\"(headerLayout$ | async)?.FacetList2\"\r\n [parameters]=\"parameters\"\r\n [workflowPanelUi]=\"workflowPanelUi$ | async\"\r\n [isMobile]=\"isMobile\"\r\n [layout94]=\"layout94$ | async\"\r\n [rtl]=\"(rtl$ | async)!!\"\r\n [mask]=\"(mask$ | async)!!\"\r\n [dirValue]=\"(dirValue$ | async)!!\"\r\n [deviceSize]=\"(deviceSize$ | async)!!\"\r\n [contentDensity]=\"(contentDensity$ | async)!!\"\r\n [modernTabs]=\"(modernTabs$ | async)!!\"\r\n [avatar]=\"(avatar$ | async)!!\"\r\n [fieldDict]=\"(fieldDict$ | async)!!\"\r\n (close)=\"onClose2()\"\r\n (toolbarClick)=\"onToolbarClick($event)\"\r\n [contentIsPage]=\"parameters?.ContentIsPage\"\r\n (workflowChoiceClick)=\"onWorkflowChoiceClick($event)\"\r\n></bsu-fundamental-dynamic-form>\r\n", styles: [""], dependencies: [{ kind: "component", type: i1.FundamentalDynamicFormComponent, selector: "bsu-fundamental-dynamic-form", inputs: ["breadCrumbs", "toolbarVisible", "toolbarItems", "layoutActions", "layout94", "parameters", "workflowPanelUi", "context", "title", "subtitle", "description", "facetList", "fieldDict", "removeHeaderBorder", "removeContentPadding", "isMobile", "mo", "avatar", "rtl", "hideTitle", "hideClose", "hidePin", "mask", "canSend", "contentIsPage", "contentDensity", "deviceSize", "dirValue", "portrait", "standalone", "modernTabs"], outputs: ["toolbarClick", "workflowChoiceClick", "close"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.TlbButtonsPipe, name: "tlbButtons" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
25
25
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BarsaSearchFormComponent, decorators: [{
26
26
  type: Component,
27
27
  args: [{ selector: 'bsu-barsa-search-form', changeDetection: ChangeDetectionStrategy.OnPush, providers: [FormPanelService], template: "<bsu-fundamental-dynamic-form\r\n [removeContentPadding]=\"(headerRemoveContentPadding$ | async)!!\"\r\n [breadCrumbs]=\"breadCrumbs$ | async\"\r\n [description]=\"(headerDescription$ | async)!!\"\r\n [title]=\"(title$ | async)!!\"\r\n [subtitle]=\"(headerSubtitle$ | async)!!\"\r\n [toolbarItems]=\"toolbarItems$ | async | tlbButtons: 'inFooter':false\"\r\n [layoutActions]=\"toolbarItems$ | async | tlbButtons: 'inFooter':true\"\r\n [toolbarVisible]=\"(toolbarVisible$ | async)!!\"\r\n [facetList]=\"(headerLayout$ | async)?.FacetList2\"\r\n [parameters]=\"parameters\"\r\n [workflowPanelUi]=\"workflowPanelUi$ | async\"\r\n [isMobile]=\"isMobile\"\r\n [layout94]=\"layout94$ | async\"\r\n [rtl]=\"(rtl$ | async)!!\"\r\n [mask]=\"(mask$ | async)!!\"\r\n [dirValue]=\"(dirValue$ | async)!!\"\r\n [deviceSize]=\"(deviceSize$ | async)!!\"\r\n [contentDensity]=\"(contentDensity$ | async)!!\"\r\n [modernTabs]=\"(modernTabs$ | async)!!\"\r\n [avatar]=\"(avatar$ | async)!!\"\r\n [fieldDict]=\"(fieldDict$ | async)!!\"\r\n (close)=\"onClose2()\"\r\n (toolbarClick)=\"onToolbarClick($event)\"\r\n [contentIsPage]=\"parameters?.ContentIsPage\"\r\n (workflowChoiceClick)=\"onWorkflowChoiceClick($event)\"\r\n></bsu-fundamental-dynamic-form>\r\n" }]
@@ -0,0 +1,43 @@
1
+ import { Component, ChangeDetectionStrategy, Input } from '@angular/core';
2
+ import { BaseViewItemPropsComponent, FormPanelService } from 'barsa-novin-ray-core';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ import * as i2 from "barsa-novin-ray-core";
6
+ import * as i3 from "../layout-control/layout-control.component";
7
+ import * as i4 from "../column-renderer/column-renderer.component";
8
+ export class BarsaTableColumnComponent extends BaseViewItemPropsComponent {
9
+ ngOnInit() {
10
+ super.ngOnInit();
11
+ const columnValue = this.mo[this.column.Name];
12
+ if (!this.customComponent && columnValue) {
13
+ const customComponent = columnValue;
14
+ if (customComponent.Selector && customComponent.Module) {
15
+ this.customComponent = customComponent;
16
+ }
17
+ }
18
+ }
19
+ ngOnChanges(changes) {
20
+ super.ngOnChanges(changes);
21
+ }
22
+ }
23
+ BarsaTableColumnComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BarsaTableColumnComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
24
+ BarsaTableColumnComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: BarsaTableColumnComponent, selector: "bsu-barsa-table-column", inputs: { column: "column", mo: "mo", index: "index", inlineEditMode: "inlineEditMode", layout94: "layout94", customComponent: "customComponent", detailsComponentSetting: "detailsComponentSetting" }, providers: [FormPanelService], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div\n [class.inlineEditMode]=\"inlineEditMode\"\n style=\"display: flex; width: 100%\"\n [style.column-gap]=\"column.$MergedFieldsToColumn?.length ? '0.2rem' : null\"\n>\n <ng-container *ngIf=\"customComponent; else columnRendererTpl\">\n <bnrc-dynamic-item-component\n [component]=\"customComponent\"\n [mo]=\"mo\"\n [isChecked]=\"isChecked\"\n [setting]=\"detailsComponentSetting\"\n [parameters]=\"customComponent.Settings\"\n [column]=\"column\"\n [editMode]=\"inlineEditMode\"\n [rtl]=\"rtl\"\n [deviceName]=\"deviceName\"\n [deviceSize]=\"deviceSize\"\n [index]=\"index\"\n [allColumns]=\"allColumns\"\n ></bnrc-dynamic-item-component>\n </ng-container>\n <ng-template #columnRendererTpl>\n <bsu-column-renderer\n [mo]=\"mo\"\n [column]=\"column\"\n [editMode]=\"isChecked && inlineEditMode && allowInlineEdit\"\n [isChecked]=\"isChecked\"\n [index]=\"index\"\n [rtl]=\"rtl\"\n [deviceName]=\"deviceName\"\n [formLayoutShowLabel]=\"false\"\n [deviceSize]=\"deviceSize\"\n [controlUi]=\"column.Caption | controlUi: layout94\"\n (keyup.control.enter)=\"onEditFormPanelSave($event)\"\n (keyup.esc)=\"onEditFormPanelCancel($event)\"\n (keydown.Tab)=\"onTabKeyDown($event)\"\n ></bsu-column-renderer>\n </ng-template>\n\n <ng-container *ngIf=\"isChecked && inlineEditMode && allowInlineEdit\">\n <ng-container *ngFor=\"let fieldCaption of column.$MergedFieldsToColumn\">\n <ng-container *ngIf=\"fieldCaption | controlUi: layout94 as layoutConfig\">\n <bsu-layout-control\n [caption]=\"fieldCaption\"\n [config]=\"layoutConfig\"\n [showLabel]=\"false\"\n [inlineEdit]=\"true\"\n (keyup.control.enter)=\"onEditFormPanelSave($event)\"\n (keyup.esc)=\"onEditFormPanelCancel($event)\"\n (keydown.Tab)=\"onTabKeyDown($event)\"\n ></bsu-layout-control>\n </ng-container>\n </ng-container>\n </ng-container>\n</div>\n", styles: [":host{display:contents;width:100%}:host ::ng-deep .row-group.mobile-mode{border-bottom:var(--sapList_BorderWidth, .0625rem) solid var(--sapList_BorderColor, #e4e4e4)!important}:host ::ng-deep .inlineEditMode bnrc-field-ui{padding:0;margin:0}:host ::ng-deep .inlineEditMode bsu-ui-simple-combo{margin:0!important}bsu-layout-control:not(.hide-form-item){align-items:center;height:100%;min-width:auto;width:auto}td{vertical-align:middle}tr.brule-message td{border:0}.row-group{background-color:var(--sapBackgroundColor, \"#f7f7ff\")}.cell-expand{cursor:pointer;display:inline-flex;justify-content:center;align-items:center;font-size:.75rem;color:#0854a0;color:var(--sapContent_IconColor, #0854a0);min-width:2rem;max-width:2rem}.save-error{color:var(--sapField_InvalidColor)}.save-success{color:var(--sapField_SuccessColor)}.showdetails-on td{border-bottom:none!important}.flow{max-width:100%}.flow-item{display:flex}.flow-item fd-micro-process-flow-icon{width:1.375rem;height:1.375rem}.flow-item h5{padding-right:.3rem}.cartable-template{padding:.5rem 0}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.DynamicItemComponent, selector: "bnrc-dynamic-item-component", inputs: ["mo", "allColumns", "moDataList", "columns", "column", "index", "last", "deviceName", "deviceSize", "rtl", "editMode", "setting", "parameters", "contextMenuItems", "canView", "formSetting", "conditionalFormats", "disableOverflowContextMenu", "navigationArrow", "isCheckList", "fields", "isChecked", "layout94$", "inlineEditMode", "isNewInlineMo", "allowInlineEdit", "typeDefId", "rowIndicator", "rowIndicatorColor"] }, { kind: "component", type: i3.LayoutControlComponent, selector: "bsu-layout-control", inputs: ["inlineEdit", "caption", "focusControl", "showLabel", "maxLabelWidth", "hasHorizontalText", "contentDensity", "flex", "RefreshLabel", "SetVisible"] }, { kind: "component", type: i4.ColumnRendererComponent, selector: "bsu-column-renderer,[colRenderer]", inputs: ["column", "mo", "index", "editMode", "customRowHeight", "controlUi", "formLayoutShowLabel", "isChecked", "isNewInlineMo", "rtl", "deviceName", "deviceSize"] }, { kind: "pipe", type: i2.ControlUiPipe, name: "controlUi" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BarsaTableColumnComponent, decorators: [{
26
+ type: Component,
27
+ args: [{ selector: 'bsu-barsa-table-column', providers: [FormPanelService], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n [class.inlineEditMode]=\"inlineEditMode\"\n style=\"display: flex; width: 100%\"\n [style.column-gap]=\"column.$MergedFieldsToColumn?.length ? '0.2rem' : null\"\n>\n <ng-container *ngIf=\"customComponent; else columnRendererTpl\">\n <bnrc-dynamic-item-component\n [component]=\"customComponent\"\n [mo]=\"mo\"\n [isChecked]=\"isChecked\"\n [setting]=\"detailsComponentSetting\"\n [parameters]=\"customComponent.Settings\"\n [column]=\"column\"\n [editMode]=\"inlineEditMode\"\n [rtl]=\"rtl\"\n [deviceName]=\"deviceName\"\n [deviceSize]=\"deviceSize\"\n [index]=\"index\"\n [allColumns]=\"allColumns\"\n ></bnrc-dynamic-item-component>\n </ng-container>\n <ng-template #columnRendererTpl>\n <bsu-column-renderer\n [mo]=\"mo\"\n [column]=\"column\"\n [editMode]=\"isChecked && inlineEditMode && allowInlineEdit\"\n [isChecked]=\"isChecked\"\n [index]=\"index\"\n [rtl]=\"rtl\"\n [deviceName]=\"deviceName\"\n [formLayoutShowLabel]=\"false\"\n [deviceSize]=\"deviceSize\"\n [controlUi]=\"column.Caption | controlUi: layout94\"\n (keyup.control.enter)=\"onEditFormPanelSave($event)\"\n (keyup.esc)=\"onEditFormPanelCancel($event)\"\n (keydown.Tab)=\"onTabKeyDown($event)\"\n ></bsu-column-renderer>\n </ng-template>\n\n <ng-container *ngIf=\"isChecked && inlineEditMode && allowInlineEdit\">\n <ng-container *ngFor=\"let fieldCaption of column.$MergedFieldsToColumn\">\n <ng-container *ngIf=\"fieldCaption | controlUi: layout94 as layoutConfig\">\n <bsu-layout-control\n [caption]=\"fieldCaption\"\n [config]=\"layoutConfig\"\n [showLabel]=\"false\"\n [inlineEdit]=\"true\"\n (keyup.control.enter)=\"onEditFormPanelSave($event)\"\n (keyup.esc)=\"onEditFormPanelCancel($event)\"\n (keydown.Tab)=\"onTabKeyDown($event)\"\n ></bsu-layout-control>\n </ng-container>\n </ng-container>\n </ng-container>\n</div>\n", styles: [":host{display:contents;width:100%}:host ::ng-deep .row-group.mobile-mode{border-bottom:var(--sapList_BorderWidth, .0625rem) solid var(--sapList_BorderColor, #e4e4e4)!important}:host ::ng-deep .inlineEditMode bnrc-field-ui{padding:0;margin:0}:host ::ng-deep .inlineEditMode bsu-ui-simple-combo{margin:0!important}bsu-layout-control:not(.hide-form-item){align-items:center;height:100%;min-width:auto;width:auto}td{vertical-align:middle}tr.brule-message td{border:0}.row-group{background-color:var(--sapBackgroundColor, \"#f7f7ff\")}.cell-expand{cursor:pointer;display:inline-flex;justify-content:center;align-items:center;font-size:.75rem;color:#0854a0;color:var(--sapContent_IconColor, #0854a0);min-width:2rem;max-width:2rem}.save-error{color:var(--sapField_InvalidColor)}.save-success{color:var(--sapField_SuccessColor)}.showdetails-on td{border-bottom:none!important}.flow{max-width:100%}.flow-item{display:flex}.flow-item fd-micro-process-flow-icon{width:1.375rem;height:1.375rem}.flow-item h5{padding-right:.3rem}.cartable-template{padding:.5rem 0}\n"] }]
28
+ }], propDecorators: { column: [{
29
+ type: Input
30
+ }], mo: [{
31
+ type: Input
32
+ }], index: [{
33
+ type: Input
34
+ }], inlineEditMode: [{
35
+ type: Input
36
+ }], layout94: [{
37
+ type: Input
38
+ }], customComponent: [{
39
+ type: Input
40
+ }], detailsComponentSetting: [{
41
+ type: Input
42
+ }] } });
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyc2EtdGFibGUtY29sdW1uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXNhcC11aS9zcmMvbGliL2JhcnNhLXRhYmxlLWNvbHVtbi9iYXJzYS10YWJsZS1jb2x1bW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvYmFyc2EtdGFibGUtY29sdW1uL2JhcnNhLXRhYmxlLWNvbHVtbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLHVCQUF1QixFQUFFLEtBQUssRUFBeUIsTUFBTSxlQUFlLENBQUM7QUFDakcsT0FBTyxFQUNILDBCQUEwQixFQUMxQixnQkFBZ0IsRUFLbkIsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7O0FBUzlCLE1BQU0sT0FBTyx5QkFBMEIsU0FBUSwwQkFBMEI7SUFRckUsUUFBUTtRQUNKLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLElBQUksV0FBVyxFQUFFO1lBQ3RDLE1BQU0sZUFBZSxHQUFjLFdBQVcsQ0FBQztZQUMvQyxJQUFJLGVBQWUsQ0FBQyxRQUFRLElBQUksZUFBZSxDQUFDLE1BQU0sRUFBRTtnQkFDcEQsSUFBSSxDQUFDLGVBQWUsR0FBRyxlQUFlLENBQUM7YUFDMUM7U0FDSjtJQUNMLENBQUM7SUFDRCxXQUFXLENBQUMsT0FBc0I7UUFDOUIsS0FBSyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMvQixDQUFDOztzSEFwQlEseUJBQXlCOzBHQUF6Qix5QkFBeUIseVBBSHZCLENBQUMsZ0JBQWdCLENBQUMsc0VDZGpDLHN5RUF1REE7MkZEdENhLHlCQUF5QjtrQkFQckMsU0FBUzsrQkFDSSx3QkFBd0IsYUFHdkIsQ0FBQyxnQkFBZ0IsQ0FBQyxtQkFDWix1QkFBdUIsQ0FBQyxNQUFNOzhCQUd0QyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csRUFBRTtzQkFBVixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyx1QkFBdUI7c0JBQS9CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBJbnB1dCwgT25Jbml0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIEJhc2VWaWV3SXRlbVByb3BzQ29tcG9uZW50LFxuICAgIEZvcm1QYW5lbFNlcnZpY2UsXG4gICAgUmVwb3J0Vmlld0NvbHVtbixcbiAgICBNZXRhb2JqZWN0RGF0YU1vZGVsLFxuICAgIExheW91dFNldHRpbmcsXG4gICAgRWpyYXlPbGdvXG59IGZyb20gJ2JhcnNhLW5vdmluLXJheS1jb3JlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdic3UtYmFyc2EtdGFibGUtY29sdW1uJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYmFyc2EtdGFibGUtY29sdW1uLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9iYXJzYS10YWJsZS1jb2x1bW4uY29tcG9uZW50LnNjc3MnXSxcbiAgICBwcm92aWRlcnM6IFtGb3JtUGFuZWxTZXJ2aWNlXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBCYXJzYVRhYmxlQ29sdW1uQ29tcG9uZW50IGV4dGVuZHMgQmFzZVZpZXdJdGVtUHJvcHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBJbnB1dCgpIGNvbHVtbjogUmVwb3J0Vmlld0NvbHVtbjtcbiAgICBASW5wdXQoKSBtbzogTWV0YW9iamVjdERhdGFNb2RlbDtcbiAgICBASW5wdXQoKSBpbmRleDogbnVtYmVyO1xuICAgIEBJbnB1dCgpIGlubGluZUVkaXRNb2RlOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGxheW91dDk0OiBMYXlvdXRTZXR0aW5nO1xuICAgIEBJbnB1dCgpIGN1c3RvbUNvbXBvbmVudDogRWpyYXlPbGdvIHwgbnVsbDtcbiAgICBASW5wdXQoKSBkZXRhaWxzQ29tcG9uZW50U2V0dGluZzogYW55O1xuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICBjb25zdCBjb2x1bW5WYWx1ZSA9IHRoaXMubW9bdGhpcy5jb2x1bW4uTmFtZV07XG4gICAgICAgIGlmICghdGhpcy5jdXN0b21Db21wb25lbnQgJiYgY29sdW1uVmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnN0IGN1c3RvbUNvbXBvbmVudCA9IDxFanJheU9sZ28+Y29sdW1uVmFsdWU7XG4gICAgICAgICAgICBpZiAoY3VzdG9tQ29tcG9uZW50LlNlbGVjdG9yICYmIGN1c3RvbUNvbXBvbmVudC5Nb2R1bGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmN1c3RvbUNvbXBvbmVudCA9IGN1c3RvbUNvbXBvbmVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25DaGFuZ2VzKGNoYW5nZXMpO1xuICAgIH1cbn1cbiIsIjxkaXZcbiAgICBbY2xhc3MuaW5saW5lRWRpdE1vZGVdPVwiaW5saW5lRWRpdE1vZGVcIlxuICAgIHN0eWxlPVwiZGlzcGxheTogZmxleDsgd2lkdGg6IDEwMCVcIlxuICAgIFtzdHlsZS5jb2x1bW4tZ2FwXT1cImNvbHVtbi4kTWVyZ2VkRmllbGRzVG9Db2x1bW4/Lmxlbmd0aCA/ICcwLjJyZW0nIDogbnVsbFwiXG4+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbUNvbXBvbmVudDsgZWxzZSBjb2x1bW5SZW5kZXJlclRwbFwiPlxuICAgICAgICA8Ym5yYy1keW5hbWljLWl0ZW0tY29tcG9uZW50XG4gICAgICAgICAgICBbY29tcG9uZW50XT1cImN1c3RvbUNvbXBvbmVudFwiXG4gICAgICAgICAgICBbbW9dPVwibW9cIlxuICAgICAgICAgICAgW2lzQ2hlY2tlZF09XCJpc0NoZWNrZWRcIlxuICAgICAgICAgICAgW3NldHRpbmddPVwiZGV0YWlsc0NvbXBvbmVudFNldHRpbmdcIlxuICAgICAgICAgICAgW3BhcmFtZXRlcnNdPVwiY3VzdG9tQ29tcG9uZW50LlNldHRpbmdzXCJcbiAgICAgICAgICAgIFtjb2x1bW5dPVwiY29sdW1uXCJcbiAgICAgICAgICAgIFtlZGl0TW9kZV09XCJpbmxpbmVFZGl0TW9kZVwiXG4gICAgICAgICAgICBbcnRsXT1cInJ0bFwiXG4gICAgICAgICAgICBbZGV2aWNlTmFtZV09XCJkZXZpY2VOYW1lXCJcbiAgICAgICAgICAgIFtkZXZpY2VTaXplXT1cImRldmljZVNpemVcIlxuICAgICAgICAgICAgW2luZGV4XT1cImluZGV4XCJcbiAgICAgICAgICAgIFthbGxDb2x1bW5zXT1cImFsbENvbHVtbnNcIlxuICAgICAgICA+PC9ibnJjLWR5bmFtaWMtaXRlbS1jb21wb25lbnQ+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNjb2x1bW5SZW5kZXJlclRwbD5cbiAgICAgICAgPGJzdS1jb2x1bW4tcmVuZGVyZXJcbiAgICAgICAgICAgIFttb109XCJtb1wiXG4gICAgICAgICAgICBbY29sdW1uXT1cImNvbHVtblwiXG4gICAgICAgICAgICBbZWRpdE1vZGVdPVwiaXNDaGVja2VkICYmIGlubGluZUVkaXRNb2RlICYmIGFsbG93SW5saW5lRWRpdFwiXG4gICAgICAgICAgICBbaXNDaGVja2VkXT1cImlzQ2hlY2tlZFwiXG4gICAgICAgICAgICBbaW5kZXhdPVwiaW5kZXhcIlxuICAgICAgICAgICAgW3J0bF09XCJydGxcIlxuICAgICAgICAgICAgW2RldmljZU5hbWVdPVwiZGV2aWNlTmFtZVwiXG4gICAgICAgICAgICBbZm9ybUxheW91dFNob3dMYWJlbF09XCJmYWxzZVwiXG4gICAgICAgICAgICBbZGV2aWNlU2l6ZV09XCJkZXZpY2VTaXplXCJcbiAgICAgICAgICAgIFtjb250cm9sVWldPVwiY29sdW1uLkNhcHRpb24gfCBjb250cm9sVWk6IGxheW91dDk0XCJcbiAgICAgICAgICAgIChrZXl1cC5jb250cm9sLmVudGVyKT1cIm9uRWRpdEZvcm1QYW5lbFNhdmUoJGV2ZW50KVwiXG4gICAgICAgICAgICAoa2V5dXAuZXNjKT1cIm9uRWRpdEZvcm1QYW5lbENhbmNlbCgkZXZlbnQpXCJcbiAgICAgICAgICAgIChrZXlkb3duLlRhYik9XCJvblRhYktleURvd24oJGV2ZW50KVwiXG4gICAgICAgID48L2JzdS1jb2x1bW4tcmVuZGVyZXI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0NoZWNrZWQgJiYgaW5saW5lRWRpdE1vZGUgJiYgYWxsb3dJbmxpbmVFZGl0XCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGZpZWxkQ2FwdGlvbiBvZiBjb2x1bW4uJE1lcmdlZEZpZWxkc1RvQ29sdW1uXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmllbGRDYXB0aW9uIHwgY29udHJvbFVpOiBsYXlvdXQ5NCBhcyBsYXlvdXRDb25maWdcIj5cbiAgICAgICAgICAgICAgICA8YnN1LWxheW91dC1jb250cm9sXG4gICAgICAgICAgICAgICAgICAgIFtjYXB0aW9uXT1cImZpZWxkQ2FwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIFtjb25maWddPVwibGF5b3V0Q29uZmlnXCJcbiAgICAgICAgICAgICAgICAgICAgW3Nob3dMYWJlbF09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgIFtpbmxpbmVFZGl0XT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAoa2V5dXAuY29udHJvbC5lbnRlcik9XCJvbkVkaXRGb3JtUGFuZWxTYXZlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAoa2V5dXAuZXNjKT1cIm9uRWRpdEZvcm1QYW5lbENhbmNlbCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uVGFiKT1cIm9uVGFiS2V5RG93bigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICA+PC9ic3UtbGF5b3V0LWNvbnRyb2w+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cbiJdfQ==
@@ -24,6 +24,7 @@ export class BarsaTableHeaderComponent extends BaseComponent {
24
24
  }
25
25
  ngOnInit() {
26
26
  super.ngOnInit();
27
+ this.startIndex = this.rowIndicator ? 1 : 0;
27
28
  this._prepareColumnsWidth(this.tableWidth, this.columns);
28
29
  }
29
30
  ngOnChanges(changes) {
@@ -81,10 +82,10 @@ export class BarsaTableHeaderComponent extends BaseComponent {
81
82
  }
82
83
  }
83
84
  BarsaTableHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BarsaTableHeaderComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
84
- BarsaTableHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: BarsaTableHeaderComponent, selector: "bsu-barsa-table-header", inputs: { allChecked: "allChecked", isCheckList: "isCheckList", columns: "columns", fitWidth: "fitWidth", contextMenuItems: "contextMenuItems", canView: "canView", hideOpenIcon: "hideOpenIcon", disableOverflowContextMenu: "disableOverflowContextMenu", inlineEditMode: "inlineEditMode", hideHeader: "hideHeader", showDetailsInRow: "showDetailsInRow", viewSetting: "viewSetting", tableWidth: "tableWidth", resizedByUser: "resizedByUser", disableResponsive: "disableResponsive" }, outputs: { allCheckbox: "allCheckbox", sortAscending: "sortAscending", sortDescending: "sortDescending", filter: "filter" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<thead\r\n fd-table-header\r\n [class.inline-edit]=\"inlineEditMode\"\r\n [class.smallColumns]=\"columnsSmallerThanTableWidth\"\r\n [attr.columnsWidth]=\"columnsWidth\"\r\n [attr.tableWidth]=\"tableWidth\"\r\n>\r\n <tr fd-table-row>\r\n <ng-container *ngIf=\"!hideHeader\">\r\n <th fd-table-cell *ngIf=\"isCheckList\">\r\n <fd-checkbox\r\n name=\"allCheckbox\"\r\n [ngModel]=\"allChecked\"\r\n (ngModelChange)=\"onAllCheckbox($event)\"\r\n ></fd-checkbox>\r\n </th>\r\n <th fd-table-cell *ngIf=\"!isCheckList\" class=\"single-select\"></th>\r\n <th\r\n *ngFor=\"let column of columns; let i = index; let last = last; trackBy: _trackByColumn\"\r\n [columnIndex]=\"i\"\r\n fd-table-cell\r\n [style.width]=\"column.FieldTypeId === 38 ? '40px' : column.$Width2\"\r\n [style.min-width]=\"last ? '100%' : 'auto'\"\r\n columnResizer\r\n [disableResizer]=\"fitWidth\"\r\n [attr.columnName]=\"column.Name\"\r\n [attr.index]=\"i\"\r\n [ngClass]=\"column.$CSSClassName + ' column__' + column.Caption\"\r\n [class.displayIcon]=\"column.Extra?.IconDisplayTypeEnum\"\r\n >\r\n <fd-popover #menu>\r\n <fd-popover-control>\r\n <div style=\"display: flex\">\r\n <!-- FieldTypeId 38 means it is auto row number field-->\r\n <img\r\n [src]=\"column.Icon\"\r\n *ngIf=\"column.Extra?.IconDisplayTypeEnum === 'Image' || column.FieldTypeId === 42\"\r\n />\r\n {{\r\n column.Extra?.IconDisplayTypeEnum !== 'Image' && column.FieldTypeId !== 38\r\n ? (column.Caption | bbbTranslate)\r\n : ''\r\n }}\r\n </div>\r\n </fd-popover-control>\r\n <fd-popover-body>\r\n <ul fd-list>\r\n <li fd-list-item>\r\n <a fd-menu-interactive (click)=\"onSortAscending(column, menu)\">\r\n <fd-menu-addon position=\"before\" glyph=\"sort-ascending\"></fd-menu-addon>\r\n <span fd-menu-title\r\n >{{ ('Sort' | bbbTranslate) + ' ' }} {{ 'Ascending' | bbbTranslate }}</span\r\n >\r\n </a>\r\n </li>\r\n <li fd-list-item>\r\n <a fd-menu-interactive (click)=\"onSortDescending(column, menu)\">\r\n <fd-menu-addon position=\"before\" glyph=\"sort-descending\"></fd-menu-addon>\r\n <span fd-menu-title\r\n >{{ ('Sort' | bbbTranslate) + ' ' }} {{ 'Descending' | bbbTranslate }}</span\r\n >\r\n </a>\r\n </li>\r\n <li fd-list-item>\r\n <a fd-menu-interactive (click)=\"onFilter(column, menu)\">\r\n <fd-menu-addon position=\"before\" glyph=\"filter\"></fd-menu-addon>\r\n <span fd-menu-title>{{ 'Filter' | bbbTranslate }}</span>\r\n </a>\r\n </li>\r\n </ul>\r\n </fd-popover-body>\r\n </fd-popover>\r\n </th>\r\n\r\n <ng-container *ngIf=\"contextMenuItems && contextMenuItems.length > 0 && !inlineEditMode\">\r\n <th\r\n class=\"col-header col-context-menu\"\r\n fd-table-cell\r\n [fitContent]=\"disableOverflowContextMenu\"\r\n [style.width]=\"disableOverflowContextMenu ? '100%' : contextMenuItems.length > 1 ? '40px' : '100px'\"\r\n ></th>\r\n </ng-container>\r\n <th\r\n class=\"col-header col-details\"\r\n fd-table-cell\r\n style=\"width: 120px\"\r\n *ngIf=\"showDetailsInRow && !inlineEditMode\"\r\n ></th>\r\n <th\r\n class=\"col-header col-view\"\r\n fd-table-cell\r\n style=\"width: 40px\"\r\n *ngIf=\"canView && !inlineEditMode && !hideOpenIcon\"\r\n ></th>\r\n </ng-container>\r\n </tr>\r\n</thead>\r\n", styles: [":host{display:contents;width:100%}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.ColumnResizerDirective, selector: "[columnResizer]", inputs: ["disableResizer"] }, { kind: "component", type: i4.CheckboxComponent, selector: "fd-checkbox", inputs: ["ariaLabel", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "tristate", "tristateSelectable", "labelClass", "required", "values"], outputs: ["focusChange"] }, { kind: "component", type: i5.ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline"], outputs: ["focusEscapeList"] }, { kind: "component", type: i5.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "ariaDescribedBy", "noData", "action", "interactive", "growing", "counter", "unread", "selectedListItemScreenReaderText", "navigatedListItemScreenReaderText", "navigatableListItemScreenReaderText"], outputs: ["keyDown"] }, { kind: "directive", type: i6.MenuInteractiveDirective, selector: "[fd-menu-interactive]" }, { kind: "directive", type: i6.MenuTitleDirective, selector: "[fd-menu-title]" }, { kind: "component", type: i6.MenuAddonDirective, selector: "fd-menu-addon", inputs: ["position", "glyph", "submenuIndicator", "ariaHidden"] }, { kind: "component", type: i7.PopoverControlComponent, selector: "fd-popover-control" }, { kind: "component", type: i7.PopoverBodyComponent, selector: "fd-popover-body" }, { kind: "component", type: i7.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig"] }, { kind: "directive", type: i8.TableHeaderDirective, selector: "[fdTableHeader], [fd-table-header]", inputs: ["noBorderX", "noBorderY"] }, { kind: "directive", type: i8.TableRowDirective, selector: "[fdTableRow], [fd-table-row]", inputs: ["activable", "highlightActive", "hoverable", "focusable", "main", "secondary", "active"] }, { kind: "directive", type: i8.TableCellDirective, selector: "[fdTableCell], [fd-table-cell]", inputs: ["noBorderX", "noBorderY", "activable", "focusable", "tabindex", "hoverable", "fitContent", "noPadding", "noData", "key", "cellFocusedEventAnnouncer"] }, { kind: "pipe", type: i3.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
85
+ BarsaTableHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: BarsaTableHeaderComponent, selector: "bsu-barsa-table-header", inputs: { allChecked: "allChecked", isCheckList: "isCheckList", columns: "columns", fitWidth: "fitWidth", contextMenuItems: "contextMenuItems", canView: "canView", hideOpenIcon: "hideOpenIcon", disableOverflowContextMenu: "disableOverflowContextMenu", inlineEditMode: "inlineEditMode", hideHeader: "hideHeader", showDetailsInRow: "showDetailsInRow", viewSetting: "viewSetting", tableWidth: "tableWidth", resizedByUser: "resizedByUser", disableResponsive: "disableResponsive", rowIndicator: "rowIndicator" }, outputs: { allCheckbox: "allCheckbox", sortAscending: "sortAscending", sortDescending: "sortDescending", filter: "filter" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<thead\n fd-table-header\n [class.inline-edit]=\"inlineEditMode\"\n [class.smallColumns]=\"columnsSmallerThanTableWidth\"\n [attr.columnsWidth]=\"columnsWidth\"\n [attr.tableWidth]=\"tableWidth\"\n>\n <tr fd-table-row>\n <ng-container *ngIf=\"!hideHeader\">\n <th *ngIf=\"rowIndicator\" fd-table-cell fd-table-status-indicator></th>\n <th fd-table-cell *ngIf=\"isCheckList\">\n <fd-checkbox\n name=\"allCheckbox\"\n [ngModel]=\"allChecked\"\n (ngModelChange)=\"onAllCheckbox($event)\"\n ></fd-checkbox>\n </th>\n <th fd-table-cell *ngIf=\"!isCheckList\" class=\"single-select\"></th>\n <ng-container *ngFor=\"let column of columns; let i = index; let last = last; trackBy: _trackByColumn\">\n <th\n *ngIf=\"startIndex <= i\"\n [columnIndex]=\"i\"\n fd-table-cell\n [style.width]=\"column.FieldTypeId === 38 ? '40px' : column.$Width2\"\n [style.min-width]=\"last ? '100%' : 'auto'\"\n columnResizer\n [disableResizer]=\"fitWidth\"\n [attr.columnName]=\"column.Name\"\n [attr.index]=\"i\"\n [ngClass]=\"column.$CSSClassName + ' column__' + column.Caption\"\n [class.displayIcon]=\"column.Extra?.IconDisplayTypeEnum\"\n >\n <fd-popover #menu>\n <fd-popover-control>\n <div style=\"display: flex\">\n <!-- FieldTypeId 38 means it is auto row number field-->\n <img\n [src]=\"column.Icon\"\n *ngIf=\"column.Extra?.IconDisplayTypeEnum === 'Image' || column.FieldTypeId === 42\"\n />\n {{\n column.Extra?.IconDisplayTypeEnum !== 'Image' && column.FieldTypeId !== 38\n ? (column.Caption | bbbTranslate)\n : ''\n }}\n </div>\n </fd-popover-control>\n <fd-popover-body>\n <ul fd-list>\n <li fd-list-item>\n <a fd-list-link (click)=\"onSortAscending(column, menu)\">\n <fd-menu-addon position=\"before\" glyph=\"sort-ascending\"></fd-menu-addon>\n <span fd-list-title\n >{{ ('Sort' | bbbTranslate) + ' ' }} {{ 'Ascending' | bbbTranslate }}</span\n >\n </a>\n </li>\n <li fd-list-item>\n <a fd-list-link (click)=\"onSortDescending(column, menu)\">\n <fd-menu-addon position=\"before\" glyph=\"sort-descending\"></fd-menu-addon>\n <span fd-list-title\n >{{ ('Sort' | bbbTranslate) + ' ' }} {{ 'Descending' | bbbTranslate }}</span\n >\n </a>\n </li>\n <!-- <li fd-list-item>\n <a fd-list-link (click)=\"onFilter(column, menu)\">\n <fd-menu-addon position=\"before\" glyph=\"filter\"></fd-menu-addon>\n <span fd-list-title>{{ 'Filter' | bbbTranslate }}</span>\n </a>\n </li> -->\n </ul>\n </fd-popover-body>\n </fd-popover>\n </th>\n </ng-container>\n <ng-container *ngIf=\"contextMenuItems && contextMenuItems.length > 0 && !inlineEditMode\">\n <th\n class=\"col-header col-context-menu\"\n fd-table-cell\n [fitContent]=\"disableOverflowContextMenu\"\n [style.width]=\"disableOverflowContextMenu ? '100%' : contextMenuItems.length > 1 ? '40px' : '100px'\"\n ></th>\n </ng-container>\n <th\n class=\"col-header col-details\"\n fd-table-cell\n style=\"width: 120px\"\n *ngIf=\"showDetailsInRow && !inlineEditMode\"\n ></th>\n <th\n class=\"col-header col-view\"\n fd-table-cell\n style=\"width: 40px\"\n *ngIf=\"canView && !inlineEditMode && !hideOpenIcon\"\n ></th>\n </ng-container>\n </tr>\n</thead>\n", styles: [":host{display:contents;width:100%}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.ColumnResizerDirective, selector: "[columnResizer]", inputs: ["disableResizer"] }, { kind: "component", type: i4.CheckboxComponent, selector: "fd-checkbox", inputs: ["ariaLabel", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "tristate", "tristateSelectable", "labelClass", "required", "values"], outputs: ["focusChange"] }, { kind: "component", type: i5.ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline"], outputs: ["focusEscapeList"] }, { kind: "component", type: i5.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "ariaDescribedBy", "noData", "action", "interactive", "growing", "counter", "unread", "selectedListItemScreenReaderText", "navigatedListItemScreenReaderText", "navigatableListItemScreenReaderText"], outputs: ["keyDown"] }, { kind: "directive", type: i5.ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "directive", type: i5.ListLinkDirective, selector: "[fd-list-link], [fdListLink]", inputs: ["navigationIndicator", "navigated"] }, { kind: "component", type: i6.MenuAddonDirective, selector: "fd-menu-addon", inputs: ["position", "glyph", "submenuIndicator", "ariaHidden"] }, { kind: "component", type: i7.PopoverControlComponent, selector: "fd-popover-control" }, { kind: "component", type: i7.PopoverBodyComponent, selector: "fd-popover-body" }, { kind: "component", type: i7.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig"] }, { kind: "directive", type: i8.TableHeaderDirective, selector: "[fdTableHeader], [fd-table-header]", inputs: ["noBorderX", "noBorderY"] }, { kind: "directive", type: i8.TableRowDirective, selector: "[fdTableRow], [fd-table-row]", inputs: ["activable", "highlightActive", "hoverable", "focusable", "main", "secondary", "active"] }, { kind: "directive", type: i8.TableCellDirective, selector: "[fdTableCell], [fd-table-cell]", inputs: ["noBorderX", "noBorderY", "activable", "focusable", "tabindex", "hoverable", "fitContent", "noPadding", "noData", "key", "cellFocusedEventAnnouncer"] }, { kind: "directive", type: i8.TableStatusIndicatorDirective, selector: "[fdTableStatusIndicator], [fd-table-status-indicator]", inputs: ["status"] }, { kind: "pipe", type: i3.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
85
86
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BarsaTableHeaderComponent, decorators: [{
86
87
  type: Component,
87
- args: [{ selector: 'bsu-barsa-table-header', changeDetection: ChangeDetectionStrategy.OnPush, template: "<thead\r\n fd-table-header\r\n [class.inline-edit]=\"inlineEditMode\"\r\n [class.smallColumns]=\"columnsSmallerThanTableWidth\"\r\n [attr.columnsWidth]=\"columnsWidth\"\r\n [attr.tableWidth]=\"tableWidth\"\r\n>\r\n <tr fd-table-row>\r\n <ng-container *ngIf=\"!hideHeader\">\r\n <th fd-table-cell *ngIf=\"isCheckList\">\r\n <fd-checkbox\r\n name=\"allCheckbox\"\r\n [ngModel]=\"allChecked\"\r\n (ngModelChange)=\"onAllCheckbox($event)\"\r\n ></fd-checkbox>\r\n </th>\r\n <th fd-table-cell *ngIf=\"!isCheckList\" class=\"single-select\"></th>\r\n <th\r\n *ngFor=\"let column of columns; let i = index; let last = last; trackBy: _trackByColumn\"\r\n [columnIndex]=\"i\"\r\n fd-table-cell\r\n [style.width]=\"column.FieldTypeId === 38 ? '40px' : column.$Width2\"\r\n [style.min-width]=\"last ? '100%' : 'auto'\"\r\n columnResizer\r\n [disableResizer]=\"fitWidth\"\r\n [attr.columnName]=\"column.Name\"\r\n [attr.index]=\"i\"\r\n [ngClass]=\"column.$CSSClassName + ' column__' + column.Caption\"\r\n [class.displayIcon]=\"column.Extra?.IconDisplayTypeEnum\"\r\n >\r\n <fd-popover #menu>\r\n <fd-popover-control>\r\n <div style=\"display: flex\">\r\n <!-- FieldTypeId 38 means it is auto row number field-->\r\n <img\r\n [src]=\"column.Icon\"\r\n *ngIf=\"column.Extra?.IconDisplayTypeEnum === 'Image' || column.FieldTypeId === 42\"\r\n />\r\n {{\r\n column.Extra?.IconDisplayTypeEnum !== 'Image' && column.FieldTypeId !== 38\r\n ? (column.Caption | bbbTranslate)\r\n : ''\r\n }}\r\n </div>\r\n </fd-popover-control>\r\n <fd-popover-body>\r\n <ul fd-list>\r\n <li fd-list-item>\r\n <a fd-menu-interactive (click)=\"onSortAscending(column, menu)\">\r\n <fd-menu-addon position=\"before\" glyph=\"sort-ascending\"></fd-menu-addon>\r\n <span fd-menu-title\r\n >{{ ('Sort' | bbbTranslate) + ' ' }} {{ 'Ascending' | bbbTranslate }}</span\r\n >\r\n </a>\r\n </li>\r\n <li fd-list-item>\r\n <a fd-menu-interactive (click)=\"onSortDescending(column, menu)\">\r\n <fd-menu-addon position=\"before\" glyph=\"sort-descending\"></fd-menu-addon>\r\n <span fd-menu-title\r\n >{{ ('Sort' | bbbTranslate) + ' ' }} {{ 'Descending' | bbbTranslate }}</span\r\n >\r\n </a>\r\n </li>\r\n <li fd-list-item>\r\n <a fd-menu-interactive (click)=\"onFilter(column, menu)\">\r\n <fd-menu-addon position=\"before\" glyph=\"filter\"></fd-menu-addon>\r\n <span fd-menu-title>{{ 'Filter' | bbbTranslate }}</span>\r\n </a>\r\n </li>\r\n </ul>\r\n </fd-popover-body>\r\n </fd-popover>\r\n </th>\r\n\r\n <ng-container *ngIf=\"contextMenuItems && contextMenuItems.length > 0 && !inlineEditMode\">\r\n <th\r\n class=\"col-header col-context-menu\"\r\n fd-table-cell\r\n [fitContent]=\"disableOverflowContextMenu\"\r\n [style.width]=\"disableOverflowContextMenu ? '100%' : contextMenuItems.length > 1 ? '40px' : '100px'\"\r\n ></th>\r\n </ng-container>\r\n <th\r\n class=\"col-header col-details\"\r\n fd-table-cell\r\n style=\"width: 120px\"\r\n *ngIf=\"showDetailsInRow && !inlineEditMode\"\r\n ></th>\r\n <th\r\n class=\"col-header col-view\"\r\n fd-table-cell\r\n style=\"width: 40px\"\r\n *ngIf=\"canView && !inlineEditMode && !hideOpenIcon\"\r\n ></th>\r\n </ng-container>\r\n </tr>\r\n</thead>\r\n", styles: [":host{display:contents;width:100%}\n"] }]
88
+ args: [{ selector: 'bsu-barsa-table-header', changeDetection: ChangeDetectionStrategy.OnPush, template: "<thead\n fd-table-header\n [class.inline-edit]=\"inlineEditMode\"\n [class.smallColumns]=\"columnsSmallerThanTableWidth\"\n [attr.columnsWidth]=\"columnsWidth\"\n [attr.tableWidth]=\"tableWidth\"\n>\n <tr fd-table-row>\n <ng-container *ngIf=\"!hideHeader\">\n <th *ngIf=\"rowIndicator\" fd-table-cell fd-table-status-indicator></th>\n <th fd-table-cell *ngIf=\"isCheckList\">\n <fd-checkbox\n name=\"allCheckbox\"\n [ngModel]=\"allChecked\"\n (ngModelChange)=\"onAllCheckbox($event)\"\n ></fd-checkbox>\n </th>\n <th fd-table-cell *ngIf=\"!isCheckList\" class=\"single-select\"></th>\n <ng-container *ngFor=\"let column of columns; let i = index; let last = last; trackBy: _trackByColumn\">\n <th\n *ngIf=\"startIndex <= i\"\n [columnIndex]=\"i\"\n fd-table-cell\n [style.width]=\"column.FieldTypeId === 38 ? '40px' : column.$Width2\"\n [style.min-width]=\"last ? '100%' : 'auto'\"\n columnResizer\n [disableResizer]=\"fitWidth\"\n [attr.columnName]=\"column.Name\"\n [attr.index]=\"i\"\n [ngClass]=\"column.$CSSClassName + ' column__' + column.Caption\"\n [class.displayIcon]=\"column.Extra?.IconDisplayTypeEnum\"\n >\n <fd-popover #menu>\n <fd-popover-control>\n <div style=\"display: flex\">\n <!-- FieldTypeId 38 means it is auto row number field-->\n <img\n [src]=\"column.Icon\"\n *ngIf=\"column.Extra?.IconDisplayTypeEnum === 'Image' || column.FieldTypeId === 42\"\n />\n {{\n column.Extra?.IconDisplayTypeEnum !== 'Image' && column.FieldTypeId !== 38\n ? (column.Caption | bbbTranslate)\n : ''\n }}\n </div>\n </fd-popover-control>\n <fd-popover-body>\n <ul fd-list>\n <li fd-list-item>\n <a fd-list-link (click)=\"onSortAscending(column, menu)\">\n <fd-menu-addon position=\"before\" glyph=\"sort-ascending\"></fd-menu-addon>\n <span fd-list-title\n >{{ ('Sort' | bbbTranslate) + ' ' }} {{ 'Ascending' | bbbTranslate }}</span\n >\n </a>\n </li>\n <li fd-list-item>\n <a fd-list-link (click)=\"onSortDescending(column, menu)\">\n <fd-menu-addon position=\"before\" glyph=\"sort-descending\"></fd-menu-addon>\n <span fd-list-title\n >{{ ('Sort' | bbbTranslate) + ' ' }} {{ 'Descending' | bbbTranslate }}</span\n >\n </a>\n </li>\n <!-- <li fd-list-item>\n <a fd-list-link (click)=\"onFilter(column, menu)\">\n <fd-menu-addon position=\"before\" glyph=\"filter\"></fd-menu-addon>\n <span fd-list-title>{{ 'Filter' | bbbTranslate }}</span>\n </a>\n </li> -->\n </ul>\n </fd-popover-body>\n </fd-popover>\n </th>\n </ng-container>\n <ng-container *ngIf=\"contextMenuItems && contextMenuItems.length > 0 && !inlineEditMode\">\n <th\n class=\"col-header col-context-menu\"\n fd-table-cell\n [fitContent]=\"disableOverflowContextMenu\"\n [style.width]=\"disableOverflowContextMenu ? '100%' : contextMenuItems.length > 1 ? '40px' : '100px'\"\n ></th>\n </ng-container>\n <th\n class=\"col-header col-details\"\n fd-table-cell\n style=\"width: 120px\"\n *ngIf=\"showDetailsInRow && !inlineEditMode\"\n ></th>\n <th\n class=\"col-header col-view\"\n fd-table-cell\n style=\"width: 40px\"\n *ngIf=\"canView && !inlineEditMode && !hideOpenIcon\"\n ></th>\n </ng-container>\n </tr>\n</thead>\n", styles: [":host{display:contents;width:100%}\n"] }]
88
89
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { allChecked: [{
89
90
  type: Input
90
91
  }], isCheckList: [{
@@ -115,6 +116,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImpor
115
116
  type: Input
116
117
  }], disableResponsive: [{
117
118
  type: Input
119
+ }], rowIndicator: [{
120
+ type: Input
118
121
  }], allCheckbox: [{
119
122
  type: Output
120
123
  }], sortAscending: [{
@@ -124,4 +127,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImpor
124
127
  }], filter: [{
125
128
  type: Output
126
129
  }] } });
127
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyc2EtdGFibGUtaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXNhcC11aS9zcmMvbGliL2JhcnNhLXRhYmxlLWhlYWRlci9iYXJzYS10YWJsZS1oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvYmFyc2EtdGFibGUtaGVhZGVyL2JhcnNhLXRhYmxlLWhlYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULHVCQUF1QixFQUN2QixLQUFLLEVBQ0wsWUFBWSxFQUNaLE1BQU0sRUFHVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFvQixNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7O0FBU3ZFLE1BQU0sT0FBTyx5QkFBMEIsU0FBUSxhQUFhO0lBc0J4RDs7T0FFRztJQUNILFlBQW9CLElBQXVCO1FBQ3ZDLEtBQUssRUFBRSxDQUFDO1FBRFEsU0FBSSxHQUFKLElBQUksQ0FBbUI7UUFkbEMscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBS3hCLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUMxQyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDeEMsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ3pDLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBb0IsQ0FBQztJQVF4RCxDQUFDO0lBQ0QsUUFBUTtRQUNKLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUNELFdBQVcsQ0FBQyxPQUFzQjtRQUM5QixLQUFLLENBQUMsV0FB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QUUsQ0FBQztJQUNwQyxDQUFDOztzSEF2RlEseUJBQXlCOzBHQUF6Qix5QkFBeUIscXNCQ2xCdEMsaTVKQWlHQTsyRkQvRWEseUJBQXlCO2tCQU5yQyxTQUFTOytCQUNJLHdCQUF3QixtQkFHakIsdUJBQXVCLENBQUMsTUFBTTt3R0FHdEMsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRywwQkFBMEI7c0JBQWxDLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIENvbXBvbmVudCxcclxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gICAgSW5wdXQsXHJcbiAgICBFdmVudEVtaXR0ZXIsXHJcbiAgICBPdXRwdXQsXHJcbiAgICBTaW1wbGVDaGFuZ2VzLFxyXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWZcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCwgUmVwb3J0Vmlld0NvbHVtbiB9IGZyb20gJ2JhcnNhLW5vdmluLXJheS1jb3JlJztcclxuaW1wb3J0IHsgVWlUYWJsZVZpZXdTZXR0aW5nIH0gZnJvbSAnLi4vbW9kZWxzL2dyaWQtdmlldyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYnN1LWJhcnNhLXRhYmxlLWhlYWRlcicsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vYmFyc2EtdGFibGUtaGVhZGVyLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2JhcnNhLXRhYmxlLWhlYWRlci5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIEJhcnNhVGFibGVIZWFkZXJDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IHtcclxuICAgIEBJbnB1dCgpIGFsbENoZWNrZWQ6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBpc0NoZWNrTGlzdDogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGNvbHVtbnM6IFJlcG9ydFZpZXdDb2x1bW5bXTtcclxuICAgIEBJbnB1dCgpIGZpdFdpZHRoOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgY29udGV4dE1lbnVJdGVtczogYW55W107XHJcbiAgICBASW5wdXQoKSBjYW5WaWV3OiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgaGlkZU9wZW5JY29uOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgZGlzYWJsZU92ZXJmbG93Q29udGV4dE1lbnU6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBpbmxpbmVFZGl0TW9kZTogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGhpZGVIZWFkZXI6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBzaG93RGV0YWlsc0luUm93ID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSB2aWV3U2V0dGluZzogVWlUYWJsZVZpZXdTZXR0aW5nO1xyXG4gICAgQElucHV0KCkgdGFibGVXaWR0aDogbnVtYmVyO1xyXG4gICAgQElucHV0KCkgcmVzaXplZEJ5VXNlcjogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGRpc2FibGVSZXNwb25zaXZlOiBib29sZWFuO1xyXG4gICAgQE91dHB1dCgpIGFsbENoZWNrYm94ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG4gICAgQE91dHB1dCgpIHNvcnRBc2NlbmRpbmcgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIEBPdXRwdXQoKSBzb3J0RGVzY2VuZGluZyA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gICAgQE91dHB1dCgpIGZpbHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8UmVwb3J0Vmlld0NvbHVtbj4oKTtcclxuICAgIGNvbHVtbnNTbWFsbGVyVGhhblRhYmxlV2lkdGg6IGJvb2xlYW47XHJcbiAgICBjb2x1bW5zV2lkdGg6IG51bWJlcjtcclxuICAgIC8qKlxyXG4gICAgICpcclxuICAgICAqL1xyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICB9XHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgICAgIHRoaXMuX3ByZXBhcmVDb2x1bW5zV2lkdGgodGhpcy50YWJsZVdpZHRoLCB0aGlzLmNvbHVtbnMpO1xyXG4gICAgfVxyXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgICAgIHN1cGVyLm5nT25DaGFuZ2VzKGNoYW5nZXMpO1xyXG4gICAgICAgIGNvbnN0IHsgY29sdW1ucywgaW5saW5lRWRpdE1vZGUgfSA9IGNoYW5nZXM7XHJcbiAgICAgICAgaWYgKGNvbHVtbnMgJiYgIWNvbHVtbnMuZmlyc3RDaGFuZ2UpIHtcclxuICAgICAgICAgICAgdGhpcy5fcHJlcGFyZUNvbHVtbnNXaWR0aCh0aGlzLnRhYmxlV2lkdGgsIGNvbHVtbnMuY3VycmVudFZhbHVlKTtcclxuICAgICAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICBpbmxpbmVFZGl0TW9kZSAmJlxyXG4gICAgICAgICAgICAhaW5saW5lRWRpdE1vZGUuZmlyc3RDaGFuZ2UgJiZcclxuICAgICAgICAgICAgaW5saW5lRWRpdE1vZGUuY3VycmVudFZhbHVlID09PSB0cnVlICYmXHJcbiAgICAgICAgICAgIHRoaXMuaW5saW5lRWRpdE1vZGUgPT09IGZhbHNlXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3ByZXBhcmVDb2x1bW5zV2lkdGgodGhpcy50YWJsZVdpZHRoLCB0aGlzLmNvbHVtbnMpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfcHJlcGFyZUNvbHVtbnNXaWR0aCh2YWw6IG51bWJlciwgY29sdW1uczogUmVwb3J0Vmlld0NvbHVtbltdKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3Qgc3VtID0gY29sdW1ucy5tYXAoKGNvbHVtbikgPT4gY29sdW1uLldpZHRoKS5yZWR1Y2UoKHZhbDIsIGNvbHVtbikgPT4gdmFsMiArIGNvbHVtbiwgMCk7XHJcbiAgICAgICAgY29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IChjb2x1bW4uJFdpZHRoMiA9IGNvbHVtbi4kV2lkdGgpKTtcclxuICAgICAgICBpZiAodGhpcy5yZXNpemVkQnlVc2VyKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jb2x1bW5zV2lkdGggPSBzdW07XHJcbiAgICAgICAgaWYgKHN1bSA+IHZhbCAmJiB2YWwgPiAwKSB7XHJcbiAgICAgICAgICAgIGNvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiAoY29sdW1uLiRXaWR0aDIgPSAoY29sdW1uLldpZHRoICogMTAwKSAvIHZhbCArICclJykpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbHVtbnNTbWFsbGVyVGhhblRhYmxlV2lkdGggPSB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoc3VtICsgMTAgPCB2YWwpIHtcclxuICAgICAgICAgICAgY29sdW1uc1tjb2x1bW5zLmxlbmd0aCAtIDFdLiRXaWR0aDIgPSAnMTAwJSc7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgb25BbGxDaGVja2JveChjaGVja2VkKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5hbGxDaGVja2JveC5lbWl0KGNoZWNrZWQpO1xyXG4gICAgfVxyXG4gICAgb25Tb3J0QXNjZW5kaW5nKGNvbHVtbjogUmVwb3J0Vmlld0NvbHVtbiwgbWVudSk6IHZvaWQge1xyXG4gICAgICAgIGlmIChtZW51KSB7XHJcbiAgICAgICAgICAgIG1lbnUuY2xvc2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zb3J0QXNjZW5kaW5nLmVtaXQoY29sdW1uKTtcclxuICAgIH1cclxuXHJcbiAgICBvblNvcnREZXNjZW5kaW5nKGNvbHVtbjogUmVwb3J0Vmlld0NvbHVtbiwgbWVudSk6IHZvaWQge1xyXG4gICAgICAgIGlmIChtZW51KSB7XHJcbiAgICAgICAgICAgIG1lbnUuY2xvc2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zb3J0RGVzY2VuZGluZy5lbWl0KGNvbHVtbik7XHJcbiAgICB9XHJcblxyXG4gICAgb25GaWx0ZXIoY29sdW1uOiBSZXBvcnRWaWV3Q29sdW1uLCBtZW51KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKG1lbnUpIHtcclxuICAgICAgICAgICAgbWVudS5jbG9zZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmZpbHRlci5lbWl0KGNvbHVtbik7XHJcbiAgICB9XHJcbiAgICBfdHJhY2tCeUNvbHVtbihpbmRleDogbnVtYmVyLCBjb2x1bW46IFJlcG9ydFZpZXdDb2x1bW4pOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBgJHtjb2x1bW4uTmFtZX0ke2luZGV4fWA7XHJcbiAgICB9XHJcbn1cclxuIiwiPHRoZWFkXHJcbiAgICBmZC10YWJsZS1oZWFkZXJcclxuICAgIFtjbGFzcy5pbmxpbmUtZWRpdF09XCJpbmxpbmVFZGl0TW9kZVwiXHJcbiAgICBbY2xhc3Muc21hbGxDb2x1bW5zXT1cImNvbHVtbnNTbWFsbGVyVGhhblRhYmxlV2lkdGhcIlxyXG4gICAgW2F0dHIuY29sdW1uc1dpZHRoXT1cImNvbHVtbnNXaWR0aFwiXHJcbiAgICBbYXR0ci50YWJsZVdpZHRoXT1cInRhYmxlV2lkdGhcIlxyXG4+XHJcbiAgICA8dHIgZmQtdGFibGUtcm93PlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaGlkZUhlYWRlclwiPlxyXG4gICAgICAgICAgICA8dGggZmQtdGFibGUtY2VsbCAqbmdJZj1cImlzQ2hlY2tMaXN0XCI+XHJcbiAgICAgICAgICAgICAgICA8ZmQtY2hlY2tib3hcclxuICAgICAgICAgICAgICAgICAgICBuYW1lPVwiYWxsQ2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImFsbENoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQWxsQ2hlY2tib3goJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICA+PC9mZC1jaGVja2JveD5cclxuICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgPHRoIGZkLXRhYmxlLWNlbGwgKm5nSWY9XCIhaXNDaGVja0xpc3RcIiBjbGFzcz1cInNpbmdsZS1zZWxlY3RcIj48L3RoPlxyXG4gICAgICAgICAgICA8dGhcclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29sdW1uczsgbGV0IGkgPSBpbmRleDsgbGV0IGxhc3QgPSBsYXN0OyB0cmFja0J5OiBfdHJhY2tCeUNvbHVtblwiXHJcbiAgICAgICAgICAgICAgICBbY29sdW1uSW5kZXhdPVwiaVwiXHJcbiAgICAgICAgICAgICAgICBmZC10YWJsZS1jZWxsXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiY29sdW1uLkZpZWxkVHlwZUlkID09PSAzOCA/ICc0MHB4JyA6IGNvbHVtbi4kV2lkdGgyXCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5taW4td2lkdGhdPVwibGFzdCA/ICcxMDAlJyA6ICdhdXRvJ1wiXHJcbiAgICAgICAgICAgICAgICBjb2x1bW5SZXNpemVyXHJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZVJlc2l6ZXJdPVwiZml0V2lkdGhcIlxyXG4gICAgICAgICAgICAgICAgW2F0dHIuY29sdW1uTmFtZV09XCJjb2x1bW4uTmFtZVwiXHJcbiAgICAgICAgICAgICAgICBbYXR0ci5pbmRleF09XCJpXCJcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImNvbHVtbi4kQ1NTQ2xhc3NOYW1lICsgJyBjb2x1bW5fXycgKyBjb2x1bW4uQ2FwdGlvblwiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3MuZGlzcGxheUljb25dPVwiY29sdW1uLkV4dHJhPy5JY29uRGlzcGxheVR5cGVFbnVtXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGZkLXBvcG92ZXIgI21lbnU+XHJcbiAgICAgICAgICAgICAgICAgICAgPGZkLXBvcG92ZXItY29udHJvbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gRmllbGRUeXBlSWQgMzggbWVhbnMgaXQgaXMgYXV0byByb3cgbnVtYmVyIGZpZWxkLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJjb2x1bW4uSWNvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb2x1bW4uRXh0cmE/Lkljb25EaXNwbGF5VHlwZUVudW0gPT09ICdJbWFnZScgfHwgY29sdW1uLkZpZWxkVHlwZUlkID09PSA0MlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4uRXh0cmE/Lkljb25EaXNwbGF5VHlwZUVudW0gIT09ICdJbWFnZScgJiYgY29sdW1uLkZpZWxkVHlwZUlkICE9PSAzOFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IChjb2x1bW4uQ2FwdGlvbiB8IGJiYlRyYW5zbGF0ZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9mZC1wb3BvdmVyLWNvbnRyb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgPGZkLXBvcG92ZXItYm9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGZkLWxpc3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgZmQtbGlzdC1pdGVtPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGZkLW1lbnUtaW50ZXJhY3RpdmUgKGNsaWNrKT1cIm9uU29ydEFzY2VuZGluZyhjb2x1bW4sIG1lbnUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1tZW51LWFkZG9uIHBvc2l0aW9uPVwiYmVmb3JlXCIgZ2x5cGg9XCJzb3J0LWFzY2VuZGluZ1wiPjwvZmQtbWVudS1hZGRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZmQtbWVudS10aXRsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPnt7ICgnU29ydCcgfCBiYmJUcmFuc2xhdGUpICsgJyAnIH19IHt7ICdBc2NlbmRpbmcnIHwgYmJiVHJhbnNsYXRlIH19PC9zcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGZkLWxpc3QtaXRlbT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBmZC1tZW51LWludGVyYWN0aXZlIChjbGljayk9XCJvblNvcnREZXNjZW5kaW5nKGNvbHVtbiwgbWVudSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLW1lbnUtYWRkb24gcG9zaXRpb249XCJiZWZvcmVcIiBnbHlwaD1cInNvcnQtZGVzY2VuZGluZ1wiPjwvZmQtbWVudS1hZGRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZmQtbWVudS10aXRsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPnt7ICgnU29ydCcgfCBiYmJUcmFuc2xhdGUpICsgJyAnIH19IHt7ICdEZXNjZW5kaW5nJyB8IGJiYlRyYW5zbGF0ZSB9fTwvc3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBmZC1saXN0LWl0ZW0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZmQtbWVudS1pbnRlcmFjdGl2ZSAoY2xpY2spPVwib25GaWx0ZXIoY29sdW1uLCBtZW51KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmQtbWVudS1hZGRvbiBwb3NpdGlvbj1cImJlZm9yZVwiIGdseXBoPVwiZmlsdGVyXCI+PC9mZC1tZW51LWFkZG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBmZC1tZW51LXRpdGxlPnt7ICdGaWx0ZXInIHwgYmJiVHJhbnNsYXRlIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9mZC1wb3BvdmVyLWJvZHk+XHJcbiAgICAgICAgICAgICAgICA8L2ZkLXBvcG92ZXI+XHJcbiAgICAgICAgICAgIDwvdGg+XHJcblxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGV4dE1lbnVJdGVtcyAmJiBjb250ZXh0TWVudUl0ZW1zLmxlbmd0aCA+IDAgJiYgIWlubGluZUVkaXRNb2RlXCI+XHJcbiAgICAgICAgICAgICAgICA8dGhcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbC1oZWFkZXIgY29sLWNvbnRleHQtbWVudVwiXHJcbiAgICAgICAgICAgICAgICAgICAgZmQtdGFibGUtY2VsbFxyXG4gICAgICAgICAgICAgICAgICAgIFtmaXRDb250ZW50XT1cImRpc2FibGVPdmVyZmxvd0NvbnRleHRNZW51XCJcclxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiZGlzYWJsZU92ZXJmbG93Q29udGV4dE1lbnUgPyAnMTAwJScgOiBjb250ZXh0TWVudUl0ZW1zLmxlbmd0aCA+IDEgPyAnNDBweCcgOiAnMTAwcHgnXCJcclxuICAgICAgICAgICAgICAgID48L3RoPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPHRoXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvbC1oZWFkZXIgY29sLWRldGFpbHNcIlxyXG4gICAgICAgICAgICAgICAgZmQtdGFibGUtY2VsbFxyXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogMTIwcHhcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93RGV0YWlsc0luUm93ICYmICFpbmxpbmVFZGl0TW9kZVwiXHJcbiAgICAgICAgICAgID48L3RoPlxyXG4gICAgICAgICAgICA8dGhcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sLWhlYWRlciBjb2wtdmlld1wiXHJcbiAgICAgICAgICAgICAgICBmZC10YWJsZS1jZWxsXHJcbiAgICAgICAgICAgICAgICBzdHlsZT1cIndpZHRoOiA0MHB4XCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiY2FuVmlldyAmJiAhaW5saW5lRWRpdE1vZGUgJiYgIWhpZGVPcGVuSWNvblwiXHJcbiAgICAgICAgICAgID48L3RoPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC90cj5cclxuPC90aGVhZD5cclxuIl19
130
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyc2EtdGFibGUtaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXNhcC11aS9zcmMvbGliL2JhcnNhLXRhYmxlLWhlYWRlci9iYXJzYS10YWJsZS1oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvYmFyc2EtdGFibGUtaGVhZGVyL2JhcnNhLXRhYmxlLWhlYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULHVCQUF1QixFQUN2QixLQUFLLEVBQ0wsWUFBWSxFQUNaLE1BQU0sRUFHVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFvQixNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7O0FBU3ZFLE1BQU0sT0FBTyx5QkFBMEIsU0FBUSxhQUFhO0lBMEJ4RDs7T0FFRztJQUNILFlBQW9CLElBQXVCO1FBQ3ZDLEtBQUssRUFBRSxDQUFDO1FBRFEsU0FBSSxHQUFKLElBQUksQ0FBbUI7UUFsQmxDLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQU9sQyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDaEMsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ3hDLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUN6QyxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQW9CLENBQUM7SUFVeEQsQ0FBQztJQUNELFFBQVE7UUFDSixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFD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QztJQUM3QixDQUFDO0lBQ0QsY0FBYyxDQUFDLEtBQWEsRUFBRSxNQUF3QjtRQUNsRCxPQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksR0FBRyxLQUFLLEVBQUUsQ0FBQztJQUNwQyxDQUFDOztzSEE1RlEseUJBQXlCOzBHQUF6Qix5QkFBeUIsbXVCQ2xCdEMsMGtLQW1HQTsyRkRqRmEseUJBQXlCO2tCQU5yQyxTQUFTOytCQUNJLHdCQUF3QixtQkFHakIsdUJBQXVCLENBQUMsTUFBTTt3R0FHdEMsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRywwQkFBMEI7c0JBQWxDLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFFTixXQUFXO3NCQURWLE1BQU07Z0JBRUcsYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIElucHV0LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBPdXRwdXQsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJhc2VDb21wb25lbnQsIFJlcG9ydFZpZXdDb2x1bW4gfSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XG5pbXBvcnQgeyBVaVRhYmxlVmlld1NldHRpbmcgfSBmcm9tICcuLi9tb2RlbHMvZ3JpZC12aWV3JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdic3UtYmFyc2EtdGFibGUtaGVhZGVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYmFyc2EtdGFibGUtaGVhZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9iYXJzYS10YWJsZS1oZWFkZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBCYXJzYVRhYmxlSGVhZGVyQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7XG4gICAgQElucHV0KCkgYWxsQ2hlY2tlZDogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBpc0NoZWNrTGlzdDogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBjb2x1bW5zOiBSZXBvcnRWaWV3Q29sdW1uW107XG4gICAgQElucHV0KCkgZml0V2lkdGg6IGJvb2xlYW47XG4gICAgQElucHV0KCkgY29udGV4dE1lbnVJdGVtczogYW55W107XG4gICAgQElucHV0KCkgY2FuVmlldzogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBoaWRlT3Blbkljb246IGJvb2xlYW47XG4gICAgQElucHV0KCkgZGlzYWJsZU92ZXJmbG93Q29udGV4dE1lbnU6IGJvb2xlYW47XG4gICAgQElucHV0KCkgaW5saW5lRWRpdE1vZGU6IGJvb2xlYW47XG4gICAgQElucHV0KCkgaGlkZUhlYWRlcjogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBzaG93RGV0YWlsc0luUm93ID0gZmFsc2U7XG4gICAgQElucHV0KCkgdmlld1NldHRpbmc6IFVpVGFibGVWaWV3U2V0dGluZztcbiAgICBASW5wdXQoKSB0YWJsZVdpZHRoOiBudW1iZXI7XG4gICAgQElucHV0KCkgcmVzaXplZEJ5VXNlcjogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBkaXNhYmxlUmVzcG9uc2l2ZTogYm9vbGVhbjtcbiAgICBASW5wdXQoKSByb3dJbmRpY2F0b3I6IGJvb2xlYW47XG4gICAgQE91dHB1dCgpXG4gICAgYWxsQ2hlY2tib3ggPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gICAgQE91dHB1dCgpIHNvcnRBc2NlbmRpbmcgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgICBAT3V0cHV0KCkgc29ydERlc2NlbmRpbmcgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgICBAT3V0cHV0KCkgZmlsdGVyID0gbmV3IEV2ZW50RW1pdHRlcjxSZXBvcnRWaWV3Q29sdW1uPigpO1xuXG4gICAgY29sdW1uc1NtYWxsZXJUaGFuVGFibGVXaWR0aDogYm9vbGVhbjtcbiAgICBjb2x1bW5zV2lkdGg6IG51bWJlcjtcbiAgICBzdGFydEluZGV4OiBudW1iZXI7XG4gICAgLyoqXG4gICAgICpcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9jZHI6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLnN0YXJ0SW5kZXggPSB0aGlzLnJvd0luZGljYXRvciA/IDEgOiAwO1xuICAgICAgICB0aGlzLl9wcmVwYXJlQ29sdW1uc1dpZHRoKHRoaXMudGFibGVXaWR0aCwgdGhpcy5jb2x1bW5zKTtcbiAgICB9XG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcbiAgICAgICAgY29uc3QgeyBjb2x1bW5zLCBpbmxpbmVFZGl0TW9kZSB9ID0gY2hhbmdlcztcbiAgICAgICAgaWYgKGNvbHVtbnMgJiYgIWNvbHVtbnMuZmlyc3RDaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuX3ByZXBhcmVDb2x1bW5zV2lkdGgodGhpcy50YWJsZVdpZHRoLCBjb2x1bW5zLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIGlubGluZUVkaXRNb2RlICYmXG4gICAgICAgICAgICAhaW5saW5lRWRpdE1vZGUuZmlyc3RDaGFuZ2UgJiZcbiAgICAgICAgICAgIGlubGluZUVkaXRNb2RlLmN1cnJlbnRWYWx1ZSA9PT0gdHJ1ZSAmJlxuICAgICAgICAgICAgdGhpcy5pbmxpbmVFZGl0TW9kZSA9PT0gZmFsc2VcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLl9wcmVwYXJlQ29sdW1uc1dpZHRoKHRoaXMudGFibGVXaWR0aCwgdGhpcy5jb2x1bW5zKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwcm90ZWN0ZWQgX3ByZXBhcmVDb2x1bW5zV2lkdGgodmFsOiBudW1iZXIsIGNvbHVtbnM6IFJlcG9ydFZpZXdDb2x1bW5bXSk6IHZvaWQge1xuICAgICAgICBjb25zdCBzdW0gPSBjb2x1bW5zLm1hcCgoY29sdW1uKSA9PiBjb2x1bW4uV2lkdGgpLnJlZHVjZSgodmFsMiwgY29sdW1uKSA9PiB2YWwyICsgY29sdW1uLCAwKTtcbiAgICAgICAgY29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IChjb2x1bW4uJFdpZHRoMiA9IGNvbHVtbi4kV2lkdGgpKTtcbiAgICAgICAgaWYgKHRoaXMucmVzaXplZEJ5VXNlcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29sdW1uc1dpZHRoID0gc3VtO1xuICAgICAgICBpZiAoc3VtID4gdmFsICYmIHZhbCA+IDApIHtcbiAgICAgICAgICAgIGNvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiAoY29sdW1uLiRXaWR0aDIgPSAoY29sdW1uLldpZHRoICogMTAwKSAvIHZhbCArICclJykpO1xuICAgICAgICAgICAgdGhpcy5jb2x1bW5zU21hbGxlclRoYW5UYWJsZVdpZHRoID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmIChzdW0gKyAxMCA8IHZhbCkge1xuICAgICAgICAgICAgY29sdW1uc1tjb2x1bW5zLmxlbmd0aCAtIDFdLiRXaWR0aDIgPSAnMTAwJSc7XG4gICAgICAgIH1cbiAgICB9XG4gICAgb25BbGxDaGVja2JveChjaGVja2VkKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWxsQ2hlY2tib3guZW1pdChjaGVja2VkKTtcbiAgICB9XG4gICAgb25Tb3J0QXNjZW5kaW5nKGNvbHVtbjogUmVwb3J0Vmlld0NvbHVtbiwgbWVudSk6IHZvaWQge1xuICAgICAgICBpZiAobWVudSkge1xuICAgICAgICAgICAgbWVudS5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc29ydEFzY2VuZGluZy5lbWl0KGNvbHVtbik7XG4gICAgfVxuXG4gICAgb25Tb3J0RGVzY2VuZGluZyhjb2x1bW46IFJlcG9ydFZpZXdDb2x1bW4sIG1lbnUpOiB2b2lkIHtcbiAgICAgICAgaWYgKG1lbnUpIHtcbiAgICAgICAgICAgIG1lbnUuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNvcnREZXNjZW5kaW5nLmVtaXQoY29sdW1uKTtcbiAgICB9XG5cbiAgICBvbkZpbHRlcihjb2x1bW46IFJlcG9ydFZpZXdDb2x1bW4sIG1lbnUpOiB2b2lkIHtcbiAgICAgICAgaWYgKG1lbnUpIHtcbiAgICAgICAgICAgIG1lbnUuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZpbHRlci5lbWl0KGNvbHVtbik7XG4gICAgfVxuICAgIF90cmFja0J5Q29sdW1uKGluZGV4OiBudW1iZXIsIGNvbHVtbjogUmVwb3J0Vmlld0NvbHVtbik6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgJHtjb2x1bW4uTmFtZX0ke2luZGV4fWA7XG4gICAgfVxufVxuIiwiPHRoZWFkXG4gICAgZmQtdGFibGUtaGVhZGVyXG4gICAgW2NsYXNzLmlubGluZS1lZGl0XT1cImlubGluZUVkaXRNb2RlXCJcbiAgICBbY2xhc3Muc21hbGxDb2x1bW5zXT1cImNvbHVtbnNTbWFsbGVyVGhhblRhYmxlV2lkdGhcIlxuICAgIFthdHRyLmNvbHVtbnNXaWR0aF09XCJjb2x1bW5zV2lkdGhcIlxuICAgIFthdHRyLnRhYmxlV2lkdGhdPVwidGFibGVXaWR0aFwiXG4+XG4gICAgPHRyIGZkLXRhYmxlLXJvdz5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFoaWRlSGVhZGVyXCI+XG4gICAgICAgICAgICA8dGggKm5nSWY9XCJyb3dJbmRpY2F0b3JcIiBmZC10YWJsZS1jZWxsIGZkLXRhYmxlLXN0YXR1cy1pbmRpY2F0b3I+PC90aD5cbiAgICAgICAgICAgIDx0aCBmZC10YWJsZS1jZWxsICpuZ0lmPVwiaXNDaGVja0xpc3RcIj5cbiAgICAgICAgICAgICAgICA8ZmQtY2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgbmFtZT1cImFsbENoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiYWxsQ2hlY2tlZFwiXG4gICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQWxsQ2hlY2tib3goJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgPjwvZmQtY2hlY2tib3g+XG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgPHRoIGZkLXRhYmxlLWNlbGwgKm5nSWY9XCIhaXNDaGVja0xpc3RcIiBjbGFzcz1cInNpbmdsZS1zZWxlY3RcIj48L3RoPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGNvbHVtbnM7IGxldCBpID0gaW5kZXg7IGxldCBsYXN0ID0gbGFzdDsgdHJhY2tCeTogX3RyYWNrQnlDb2x1bW5cIj5cbiAgICAgICAgICAgICAgICA8dGhcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzdGFydEluZGV4IDw9IGlcIlxuICAgICAgICAgICAgICAgICAgICBbY29sdW1uSW5kZXhdPVwiaVwiXG4gICAgICAgICAgICAgICAgICAgIGZkLXRhYmxlLWNlbGxcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImNvbHVtbi5GaWVsZFR5cGVJZCA9PT0gMzggPyAnNDBweCcgOiBjb2x1bW4uJFdpZHRoMlwiXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5taW4td2lkdGhdPVwibGFzdCA/ICcxMDAlJyA6ICdhdXRvJ1wiXG4gICAgICAgICAgICAgICAgICAgIGNvbHVtblJlc2l6ZXJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVSZXNpemVyXT1cImZpdFdpZHRoXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuY29sdW1uTmFtZV09XCJjb2x1bW4uTmFtZVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmluZGV4XT1cImlcIlxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJjb2x1bW4uJENTU0NsYXNzTmFtZSArICcgY29sdW1uX18nICsgY29sdW1uLkNhcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZGlzcGxheUljb25dPVwiY29sdW1uLkV4dHJhPy5JY29uRGlzcGxheVR5cGVFbnVtXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxmZC1wb3BvdmVyICNtZW51PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGZkLXBvcG92ZXItY29udHJvbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEZpZWxkVHlwZUlkIDM4IG1lYW5zIGl0IGlzIGF1dG8gcm93IG51bWJlciBmaWVsZC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImNvbHVtbi5JY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29sdW1uLkV4dHJhPy5JY29uRGlzcGxheVR5cGVFbnVtID09PSAnSW1hZ2UnIHx8IGNvbHVtbi5GaWVsZFR5cGVJZCA9PT0gNDJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uLkV4dHJhPy5JY29uRGlzcGxheVR5cGVFbnVtICE9PSAnSW1hZ2UnICYmIGNvbHVtbi5GaWVsZFR5cGVJZCAhPT0gMzhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IChjb2x1bW4uQ2FwdGlvbiB8IGJiYlRyYW5zbGF0ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2ZkLXBvcG92ZXItY29udHJvbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1wb3BvdmVyLWJvZHk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGZkLWxpc3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBmZC1saXN0LWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBmZC1saXN0LWxpbmsgKGNsaWNrKT1cIm9uU29ydEFzY2VuZGluZyhjb2x1bW4sIG1lbnUpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLW1lbnUtYWRkb24gcG9zaXRpb249XCJiZWZvcmVcIiBnbHlwaD1cInNvcnQtYXNjZW5kaW5nXCI+PC9mZC1tZW51LWFkZG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLWxpc3QtdGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPnt7ICgnU29ydCcgfCBiYmJUcmFuc2xhdGUpICsgJyAnIH19IHt7ICdBc2NlbmRpbmcnIHwgYmJiVHJhbnNsYXRlIH19PC9zcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgZmQtbGlzdC1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZmQtbGlzdC1saW5rIChjbGljayk9XCJvblNvcnREZXNjZW5kaW5nKGNvbHVtbiwgbWVudSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmQtbWVudS1hZGRvbiBwb3NpdGlvbj1cImJlZm9yZVwiIGdseXBoPVwic29ydC1kZXNjZW5kaW5nXCI+PC9mZC1tZW51LWFkZG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLWxpc3QtdGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPnt7ICgnU29ydCcgfCBiYmJUcmFuc2xhdGUpICsgJyAnIH19IHt7ICdEZXNjZW5kaW5nJyB8IGJiYlRyYW5zbGF0ZSB9fTwvc3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8bGkgZmQtbGlzdC1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZmQtbGlzdC1saW5rIChjbGljayk9XCJvbkZpbHRlcihjb2x1bW4sIG1lbnUpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLW1lbnUtYWRkb24gcG9zaXRpb249XCJiZWZvcmVcIiBnbHlwaD1cImZpbHRlclwiPjwvZmQtbWVudS1hZGRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBmZC1saXN0LXRpdGxlPnt7ICdGaWx0ZXInIHwgYmJiVHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9mZC1wb3BvdmVyLWJvZHk+XG4gICAgICAgICAgICAgICAgICAgIDwvZmQtcG9wb3Zlcj5cbiAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGV4dE1lbnVJdGVtcyAmJiBjb250ZXh0TWVudUl0ZW1zLmxlbmd0aCA+IDAgJiYgIWlubGluZUVkaXRNb2RlXCI+XG4gICAgICAgICAgICAgICAgPHRoXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sLWhlYWRlciBjb2wtY29udGV4dC1tZW51XCJcbiAgICAgICAgICAgICAgICAgICAgZmQtdGFibGUtY2VsbFxuICAgICAgICAgICAgICAgICAgICBbZml0Q29udGVudF09XCJkaXNhYmxlT3ZlcmZsb3dDb250ZXh0TWVudVwiXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJkaXNhYmxlT3ZlcmZsb3dDb250ZXh0TWVudSA/ICcxMDAlJyA6IGNvbnRleHRNZW51SXRlbXMubGVuZ3RoID4gMSA/ICc0MHB4JyA6ICcxMDBweCdcIlxuICAgICAgICAgICAgICAgID48L3RoPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8dGhcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvbC1oZWFkZXIgY29sLWRldGFpbHNcIlxuICAgICAgICAgICAgICAgIGZkLXRhYmxlLWNlbGxcbiAgICAgICAgICAgICAgICBzdHlsZT1cIndpZHRoOiAxMjBweFwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93RGV0YWlsc0luUm93ICYmICFpbmxpbmVFZGl0TW9kZVwiXG4gICAgICAgICAgICA+PC90aD5cbiAgICAgICAgICAgIDx0aFxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sLWhlYWRlciBjb2wtdmlld1wiXG4gICAgICAgICAgICAgICAgZmQtdGFibGUtY2VsbFxuICAgICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDQwcHhcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiY2FuVmlldyAmJiAhaW5saW5lRWRpdE1vZGUgJiYgIWhpZGVPcGVuSWNvblwiXG4gICAgICAgICAgICA+PC90aD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC90cj5cbjwvdGhlYWQ+XG4iXX0=