barsa-sap-ui 1.0.339 → 1.0.341

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.
@@ -37,10 +37,10 @@ export class BarsaTableRowComponent extends BaseViewItemPropsComponent {
37
37
  }
38
38
  }
39
39
  BarsaTableRowComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BarsaTableRowComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
40
- BarsaTableRowComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: BarsaTableRowComponent, selector: "bsu-barsa-table-row", inputs: { showDetailsInRow: "showDetailsInRow", detailsComponent: "detailsComponent", detailsColumns: "detailsColumns", detailsText: "detailsText", columnComponents: "columnComponents" }, providers: [FormPanelService], viewQueries: [{ propertyName: "detailsFormItems", first: true, predicate: ["detailsFormItems"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<tr\n [class.row-error]=\"hasError\"\n [class.showdetails-on]=\"!detailsCollapsed\"\n #trEl\n *ngIf=\"(!mo.$Parent || parentExpanded) && visibility !== false\"\n fd-table-row\n [activable]=\"false\"\n [hoverable]=\"false\"\n [applyConditionalFormats]=\"conditionalFormats\"\n [styleIndex]=\"styleIndex\"\n [hostEl]=\"trEl\"\n [main]=\"true\"\n [focusable]=\"true\"\n [attr.aria-selected]=\"isChecked\"\n [focusable]=\"!inlineEditMode || !allowInlineEdit\"\n [class.brule-message]=\"bruleActionMessage || workflowState?.errorText\"\n [class.workflow-pending]=\"workflowState?.state === 'Pending'\"\n>\n <ng-container *ngIf=\"mo.$Group || mo.$Group === ''; else renderRow\">\n <td\n [style.padding-right]=\"rtl ? 'calc( 1rem + ' + level * 12 + 'px' + ' )' : 'inherit'\"\n [style.padding-left]=\"!rtl ? 'calc( 1rem + ' + level * 12 + 'px' + ' )' : 'inherit'\"\n fd-table-cell\n [attr.colspan]=\"canView ? columnsCount + 1 : columnsCount\"\n class=\"row-group\"\n [class.mobile-mode]=\"secondaryColumns?.length\"\n [attr.level]=\"level\"\n [class.root-group]=\"level === 0\"\n >\n <button\n fd-button\n [fdType]=\"'transparent'\"\n [glyph]=\"expanded !== false ? 'navigation-down-arrow' : 'navigation-left-arrow'\"\n class=\"cell-expand\"\n [disabled]=\"inlineEditMode\"\n (click)=\"onExpandClick()\"\n ></button>\n {{ mo.$Group }}\n </td>\n </ng-container>\n <ng-template #renderRow>\n <ng-container *ngTemplateOutlet=\"statusIndicator\"></ng-container>\n <td fd-table-cell *ngIf=\"isCheckList\">\n <div\n *ngIf=\"workflowState?.state === 'Pending'\"\n style=\"position: absolute; left: 0; right: 0; bottom: 0; top: 0\"\n >\n <bsu-mask [top]=\"'20px'\" [size]=\"'s'\"></bsu-mask>\n </div>\n\n <fd-checkbox [name]=\"mo.$Caption\" [ngModel]=\"isChecked\" (ngModelChange)=\"onRowCheck()\"></fd-checkbox>\n </td>\n <td\n fd-table-cell\n class=\"single-select\"\n *ngIf=\"!isCheckList\"\n (click)=\"onRowCheck()\"\n style=\"padding: 0; text-align: center\"\n >\n <ng-container\n *ngIf=\"inlineEditMode && allowInlineEdit && (hasError || saving || saved); else iconStateTemplate\"\n >\n <fd-icon *ngIf=\"hasError\" class=\"save-error\" glyph=\"error\"></fd-icon>\n <fd-busy-indicator\n *ngIf=\"saving\"\n [loading]=\"true\"\n [size]=\"'s'\"\n title=\"record saving\"\n ></fd-busy-indicator>\n <fd-icon *ngIf=\"saved\" class=\"save-success\" glyph=\"accept\"></fd-icon>\n </ng-container>\n <ng-template #iconStateTemplate>\n <fd-icon *ngIf=\"mo.$State === 'New' && !isChecked\" glyph=\"favorite\"></fd-icon>\n <fd-icon *ngIf=\"inlineEditMode && allowInlineEdit && isChecked\" glyph=\"edit\"></fd-icon>\n </ng-template>\n </td>\n <ng-container *ngFor=\"let column of columns; let columnIndex = index\">\n <td\n *ngIf=\"(rowIndicator && columnIndex > 0) || !rowIndicator\"\n [attr.dbName]=\"column.Name\"\n #tdEl\n fd-table-cell\n [applyConditionalFormats]=\"conditionalFormats\"\n [hostEl]=\"tdEl\"\n [styleIndex]=\"styleIndex\"\n [dbName]=\"column.Name\"\n [focusable]=\"false\"\n (click)=\"onRowCheck()\"\n (dblclick)=\"onRowClick()\"\n [hoverable]=\"inlineEditMode && allowInlineEdit\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n columnTemplate;\n context: {\n $implicit: column,\n mo: mo,\n index: columnIndex,\n inlineEditMode: inlineEditMode,\n layout94: layout$ | async\n }\n \"\n ></ng-container>\n </td>\n </ng-container>\n <td\n class=\"col-context-menu\"\n *ngIf=\"contextMenuItems?.length && (!inlineEditMode || !allowInlineEdit)\"\n fd-table-cell\n >\n <bsu-ulv-context-menu\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\n [conditionalFormats]=\"conditionalFormats\"\n [styleIndex]=\"styleIndex\"\n [mo]=\"mo\"\n [index]=\"index\"\n (commandClick)=\"onUlvCommand()\"\n [deviceName]=\"deviceName\"\n [menuItems]=\"contextMenuItems\"\n [allColumns]=\"allColumns\"\n ></bsu-ulv-context-menu>\n </td>\n <td\n class=\"col-details\"\n fd-table-cell\n [fitContent]=\"true\"\n *ngIf=\"showDetailsInRow && (!inlineEditMode || !allowInlineEdit)\"\n >\n <button\n *ngIf=\"detailsComponent?.Selector || cartableParams?.moId\"\n fd-button\n [label]=\"(detailsCollapsed ? detailsText : 'Hide') | bbbTranslate\"\n [fdType]=\"'transparent'\"\n (click)=\"onRowDetails()\"\n ></button>\n </td>\n <td\n class=\"col-view\"\n fd-table-cell\n [fitContent]=\"true\"\n *ngIf=\"!hideOpenIcon && canView && (!inlineEditMode || !allowInlineEdit)\"\n >\n <button\n fd-button\n [glyph]=\"navigationArrow\"\n [navigation]=\"true\"\n [fdType]=\"'transparent'\"\n role=\"presentation\"\n (click)=\"onRowClick()\"\n ></button>\n </td>\n </ng-template>\n</tr>\n\n<tr\n #trEl\n *ngIf=\"secondaryColumns?.length && !mo.$Group && (!mo.$Parent || parentExpanded) && visibility !== false\"\n fd-table-row\n [secondary]=\"true\"\n class=\"secondary-row\"\n [class.no-edit-mode]=\"!inlineEditMode\"\n [applyConditionalFormats]=\"conditionalFormats\"\n [styleIndex]=\"styleIndex\"\n [hostEl]=\"trEl\"\n [attr.aria-selected]=\"isChecked && !inlineEditMode ? true : false\"\n>\n <ng-container *ngTemplateOutlet=\"statusIndicator\"></ng-container>\n\n <td fd-table-cell class=\"single-select\" *ngIf=\"!isCheckList\" (click)=\"onRowCheck()\"></td>\n <td fd-table-cell colspan=\"100%\" (click)=\"onRowCheck()\">\n <p\n #pEl\n fd-table-text\n *ngFor=\"let column of secondaryColumns; let columnIndex = index; trackBy: _trackByColumn\"\n [applyConditionalFormats]=\"conditionalFormats\"\n [hostEl]=\"pEl\"\n [styleIndex]=\"styleIndex\"\n [dbName]=\"column.Name\"\n >\n <label fd-form-label>{{ column.Caption }} :</label>\n <ng-container\n *ngTemplateOutlet=\"\n columnTemplate;\n context: {\n $implicit: column,\n mo: mo,\n index: columnIndex,\n inlineEditMode: inlineEditMode,\n layout94: layout$ | async\n }\n \"\n ></ng-container>\n </p>\n </td>\n</tr>\n<tr *ngIf=\"!detailsCollapsed && cartableParams?.moId\" fd-table-row class=\"showdetails\" [attr.aria-selected]=\"isChecked\">\n <ng-container *ngTemplateOutlet=\"statusIndicator\"></ng-container>\n\n <td fd-table-cell (click)=\"onRowCheck()\"></td>\n <td\n (click)=\"onRowCheck()\"\n fd-table-cell\n [attr.colspan]=\"\n columns.length + 1 + (contextMenuItems.length ? 1 : 0) + (canView ? 1 : 0) + (showDetailsInRow ? 1 : 0)\n \"\n >\n <ng-container>\n <bnrc-form\n (click)=\"OnCartableFormClick($event)\"\n class=\"cartable-template\"\n [params]=\"cartableParams\"\n (formClose)=\"onCartableFormClosed()\"\n ></bnrc-form>\n </ng-container>\n </td>\n</tr>\n<tr\n *ngIf=\"!detailsCollapsed && detailsComponent?.Selector\"\n fd-table-row\n class=\"showdetails\"\n [attr.aria-selected]=\"isChecked\"\n>\n <ng-container *ngTemplateOutlet=\"statusIndicator\"></ng-container>\n\n <td fd-table-cell (click)=\"onRowCheck()\"></td>\n <td\n (click)=\"onRowCheck()\"\n fd-table-cell\n [attr.colspan]=\"\n columns.length + 1 + (contextMenuItems.length ? 1 : 0) + (canView ? 1 : 0) + (showDetailsInRow ? 1 : 0)\n \"\n >\n <ng-container *ngTemplateOutlet=\"detailsColumnsTemplate\"></ng-container>\n <ng-container *ngIf=\"detailsComponent && detailsComponent.Selector\">\n <bnrc-dynamic-item-component\n [component]=\"detailsComponent\"\n [mo]=\"mo\"\n [isChecked]=\"isChecked\"\n [setting]=\"detailsComponentSetting\"\n [parameters]=\"detailsComponent.Settings\"\n [editMode]=\"inlineEditMode\"\n [formSetting]=\"formSetting\"\n [rtl]=\"rtl\"\n [deviceName]=\"deviceName\"\n [deviceSize]=\"deviceSize\"\n [index]=\"index\"\n [allColumns]=\"allColumns\"\n [typeDefId]=\"typeDefId\"\n ></bnrc-dynamic-item-component>\n </ng-container>\n </td>\n</tr>\n<ng-template #detailsColumnsTemplate>\n <ng-container\n *ngTemplateOutlet=\"\n detailsFormItems;\n context: {\n $implicit: detailsColumns,\n mo: mo,\n inlineEditMode: inlineEditMode,\n layout94: layout$\n }\n \"\n ></ng-container>\n</ng-template>\n<ng-template #detailsFormItems let-detailsColumns let-mo=\"mo\" let-inlineEditMode=\"inlineEditMode\" let-layout$=\"layout$\">\n <div class=\"form-items\">\n <div fd-form-item *ngFor=\"let column of detailsColumns; let columnIndex = index\">\n <label fd-form-label for=\"input-2\">{{ column.Caption }}</label>\n <ng-container\n *ngTemplateOutlet=\"\n columnTemplate;\n context: {\n $implicit: column,\n mo: mo,\n index: columnIndex,\n inlineEditMode: inlineEditMode,\n layout94: layout$ | async\n }\n \"\n ></ng-container>\n </div>\n </div>\n</ng-template>\n<tr *ngIf=\"bruleActionMessage && inlineEditMode\" fd-table-row>\n <ng-container *ngTemplateOutlet=\"statusIndicator\"></ng-container>\n <td fd-table-cell [attr.colspan]=\"columns.length + 1\">\n <fd-message-strip\n *ngIf=\"bruleActionMessage.MessageType === 2\"\n [type]=\"bruleActionMessage.MessageType === 2 ? 'error' : 'information'\"\n [dismissible]=\"false\"\n >\n {{ bruleActionMessage.MessageExpression }}\n </fd-message-strip>\n </td>\n</tr>\n<tr *ngIf=\"workflowState?.errorText\" fd-table-row>\n <ng-container *ngTemplateOutlet=\"statusIndicator\"></ng-container>\n <td fd-table-cell [attr.colspan]=\"columns.length + 4\">\n <fd-message-strip type=\"error\" [dismissible]=\"true\" (onDismiss)=\"resetWorkflowState.emit()\">\n {{ workflowState.errorText }}\n </fd-message-strip>\n </td>\n</tr>\n<ng-template\n #columnTemplate\n let-column\n let-mo=\"mo\"\n let-index=\"index\"\n let-inlineEditMode=\"inlineEditMode\"\n let-layout94=\"layout94\"\n>\n <bsu-barsa-table-column\n [mo]=\"mo\"\n [column]=\"column\"\n [value]=\"column | columnValue: mo\"\n [icon]=\"column | columnIcon: mo\"\n [customComponent]=\"column.$CustomComponent\"\n [column]=\"column\"\n [editMode]=\"isChecked && inlineEditMode && allowInlineEdit\"\n [inlineEditMode]=\"inlineEditMode\"\n [isChecked]=\"isChecked\"\n [index]=\"index\"\n [formSetting]=\"formSetting\"\n [rtl]=\"rtl\"\n [deviceName]=\"deviceName\"\n [deviceSize]=\"deviceSize\"\n [layout94]=\"layout94\"\n (save)=\"onEditFormPanelSave(null)\"\n (cancel)=\"onEditFormPanelCancel(null)\"\n (tab)=\"onTabKeyDown($event, index)\"\n (changeToEditMode)=\"onColumnChangeToEditMode($event, index)\"\n >\n </bsu-barsa-table-column>\n</ng-template>\n<ng-template #statusIndicator>\n <bsu-barsa-column-indicator\n [hideBorderBottom]=\"!detailsCollapsed\"\n *ngIf=\"rowIndicator\"\n [backColor]=\"rowIndicatorColor\"\n >\n </bsu-barsa-column-indicator>\n</ng-template>\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)}.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}.workflow-pending{opacity:.5;pointer-events:none;position:relative}\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: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { 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: "component", type: i3.FormComponent, selector: "bnrc-form", inputs: ["params", "customFormPanelUi", "formPanelCtrl", "formPanelCtrlId"], outputs: ["titleChanged", "moChanged", "formClose", "formRendered"] }, { kind: "component", type: i3.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: "directive", type: i3.FormCloseDirective, selector: "[formClose]", inputs: ["isMobile"] }, { kind: "component", type: i4.BusyIndicatorComponent, selector: "fd-busy-indicator", inputs: ["loading", "size", "block", "ariaLabel", "title", "label", "ariaLive"] }, { kind: "component", type: i5.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i6.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: i7.FormItemComponent, selector: "[fd-form-item]", inputs: ["isInline", "horizontal"] }, { kind: "component", type: i7.FormLabelComponent, selector: "[fd-form-label]", inputs: ["required", "colon", "checkbox", "radio", "alignLabelEnd", "inlineHelpTitle", "inlineHelpGlyph", "inlineHelpTriggers", "inlineHelpBodyPlacement", "inlineHelpPlacement", "id"] }, { kind: "component", type: i8.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "class", "ariaLabel"] }, { kind: "component", type: i9.MessageStripComponent, selector: "fd-message-strip", inputs: ["class", "dismissible", "noIcon", "type", "id", "ariaLabelledBy", "ariaLabel", "dismissLabel", "width", "minWidth", "marginBottom"], outputs: ["onDismiss"] }, { kind: "directive", type: i10.TableRowDirective, selector: "[fdTableRow], [fd-table-row]", inputs: ["activable", "highlightActive", "hoverable", "focusable", "main", "secondary", "active"] }, { kind: "directive", type: i10.TableCellDirective, selector: "[fdTableCell], [fd-table-cell]", inputs: ["noBorderX", "noBorderY", "activable", "focusable", "tabindex", "hoverable", "fitContent", "noPadding", "noData", "key", "cellFocusedEventAnnouncer"] }, { kind: "directive", type: i10.TableTextDirective, selector: "[fdTableText], [fd-table-text]", inputs: ["fdTableTextClass", "noWrap", "title", "maxWidth"] }, { kind: "component", type: i11.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "component", type: i12.UlvContextMenuComponent, selector: "bsu-ulv-context-menu,[ulvContextMenu]", inputs: ["onlyOverflow", "deviceName", "menuItems", "allColumns", "index", "mo", "styleIndex", "conditionalFormats", "disableOverflowContextMenu", "footerMode"], outputs: ["commandClick"] }, { kind: "component", type: i13.BarsaTableColumnComponent, selector: "bsu-barsa-table-column" }, { kind: "component", type: i14.BarsaColumnIndicatorComponent, selector: "bsu-barsa-column-indicator", inputs: ["backColor", "hideBorderBottom"] }, { kind: "directive", type: i15.ApplyConditionalFormatsDirective, selector: "[applyConditionalFormats]", inputs: ["applyConditionalFormats", "styleIndex", "hostEl", "dbName"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.BbbTranslatePipe, name: "bbbTranslate" }, { kind: "pipe", type: i3.ColumnIconPipe, name: "columnIcon" }, { kind: "pipe", type: i3.ColumnValuePipe, name: "columnValue" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
40
+ BarsaTableRowComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: BarsaTableRowComponent, selector: "bsu-barsa-table-row", inputs: { showDetailsInRow: "showDetailsInRow", detailsComponent: "detailsComponent", detailsColumns: "detailsColumns", detailsText: "detailsText", columnComponents: "columnComponents" }, providers: [FormPanelService], viewQueries: [{ propertyName: "detailsFormItems", first: true, predicate: ["detailsFormItems"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<tr\n [class.row-error]=\"hasError\"\n [class.showdetails-on]=\"!detailsCollapsed\"\n #trEl\n *ngIf=\"(!mo.$Parent || parentExpanded) && visibility !== false\"\n fd-table-row\n [activable]=\"false\"\n [hoverable]=\"false\"\n [applyConditionalFormats]=\"conditionalFormats\"\n [styleIndex]=\"styleIndex\"\n [hostEl]=\"trEl\"\n [main]=\"true\"\n [focusable]=\"true\"\n [attr.aria-selected]=\"isChecked\"\n [focusable]=\"!inlineEditMode || !allowInlineEdit\"\n [class.brule-message]=\"bruleActionMessage || workflowState?.errorText\"\n [class.workflow-pending]=\"workflowState?.state === 'Pending'\"\n>\n <ng-container *ngIf=\"mo.$Group || mo.$Group === ''; else renderRow\">\n <td\n [style.padding-right]=\"rtl ? 'calc( 1rem + ' + level * 12 + 'px' + ' )' : 'inherit'\"\n [style.padding-left]=\"!rtl ? 'calc( 1rem + ' + level * 12 + 'px' + ' )' : 'inherit'\"\n fd-table-cell\n style=\"font-weight: bold; font-size: 1.2rem\"\n [attr.colspan]=\"canView ? columnsCount + 1 : columnsCount\"\n class=\"row-group\"\n [class.mobile-mode]=\"secondaryColumns?.length\"\n [attr.level]=\"level\"\n [class.root-group]=\"level === 0\"\n >\n <button\n fd-button\n [fdType]=\"'transparent'\"\n [glyph]=\"expanded !== false ? 'navigation-down-arrow' : 'navigation-left-arrow'\"\n class=\"cell-expand\"\n [disabled]=\"inlineEditMode\"\n (click)=\"onExpandClick()\"\n ></button>\n {{ mo.$Group }}\n </td>\n </ng-container>\n <ng-template #renderRow>\n <ng-container *ngTemplateOutlet=\"statusIndicator\"></ng-container>\n <td fd-table-cell *ngIf=\"isCheckList\">\n <div\n *ngIf=\"workflowState?.state === 'Pending'\"\n style=\"position: absolute; left: 0; right: 0; bottom: 0; top: 0\"\n >\n <bsu-mask [top]=\"'20px'\" [size]=\"'s'\"></bsu-mask>\n </div>\n\n <fd-checkbox [name]=\"mo.$Caption\" [ngModel]=\"isChecked\" (ngModelChange)=\"onRowCheck()\"></fd-checkbox>\n </td>\n <td\n fd-table-cell\n class=\"single-select\"\n *ngIf=\"!isCheckList\"\n (click)=\"onRowCheck()\"\n style=\"padding: 0; text-align: center\"\n >\n <ng-container\n *ngIf=\"inlineEditMode && allowInlineEdit && (hasError || saving || saved); else iconStateTemplate\"\n >\n <fd-icon *ngIf=\"hasError\" class=\"save-error\" glyph=\"error\"></fd-icon>\n <fd-busy-indicator\n *ngIf=\"saving\"\n [loading]=\"true\"\n [size]=\"'s'\"\n title=\"record saving\"\n ></fd-busy-indicator>\n <fd-icon *ngIf=\"saved\" class=\"save-success\" glyph=\"accept\"></fd-icon>\n </ng-container>\n <ng-template #iconStateTemplate>\n <fd-icon *ngIf=\"mo.$State === 'New' && !isChecked\" glyph=\"favorite\"></fd-icon>\n <fd-icon *ngIf=\"inlineEditMode && allowInlineEdit && isChecked\" glyph=\"edit\"></fd-icon>\n </ng-template>\n </td>\n <ng-container *ngFor=\"let column of columns; let columnIndex = index\">\n <td\n *ngIf=\"(rowIndicator && columnIndex > 0) || !rowIndicator\"\n [attr.dbName]=\"column.Name\"\n #tdEl\n fd-table-cell\n [applyConditionalFormats]=\"conditionalFormats\"\n [hostEl]=\"tdEl\"\n [styleIndex]=\"styleIndex\"\n [dbName]=\"column.Name\"\n [focusable]=\"false\"\n (click)=\"onRowCheck()\"\n (dblclick)=\"onRowClick()\"\n [hoverable]=\"inlineEditMode && allowInlineEdit\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n columnTemplate;\n context: {\n $implicit: column,\n mo: mo,\n index: columnIndex,\n inlineEditMode: inlineEditMode,\n layout94: layout$ | async\n }\n \"\n ></ng-container>\n </td>\n </ng-container>\n <td\n class=\"col-context-menu\"\n *ngIf=\"contextMenuItems?.length && (!inlineEditMode || !allowInlineEdit)\"\n fd-table-cell\n >\n <bsu-ulv-context-menu\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\n [conditionalFormats]=\"conditionalFormats\"\n [styleIndex]=\"styleIndex\"\n [mo]=\"mo\"\n [index]=\"index\"\n (commandClick)=\"onUlvCommand()\"\n [deviceName]=\"deviceName\"\n [menuItems]=\"contextMenuItems\"\n [allColumns]=\"allColumns\"\n ></bsu-ulv-context-menu>\n </td>\n <td\n class=\"col-details\"\n fd-table-cell\n [fitContent]=\"true\"\n *ngIf=\"showDetailsInRow && (!inlineEditMode || !allowInlineEdit)\"\n >\n <button\n *ngIf=\"detailsComponent?.Selector || cartableParams?.moId\"\n fd-button\n [label]=\"(detailsCollapsed ? detailsText : 'Hide') | bbbTranslate\"\n [fdType]=\"'transparent'\"\n (click)=\"onRowDetails()\"\n ></button>\n </td>\n <td\n class=\"col-view\"\n fd-table-cell\n [fitContent]=\"true\"\n *ngIf=\"!hideOpenIcon && canView && (!inlineEditMode || !allowInlineEdit)\"\n >\n <button\n fd-button\n [glyph]=\"navigationArrow\"\n [navigation]=\"true\"\n [fdType]=\"'transparent'\"\n role=\"presentation\"\n (click)=\"onRowClick()\"\n ></button>\n </td>\n </ng-template>\n</tr>\n\n<tr\n #trEl\n *ngIf=\"secondaryColumns?.length && !mo.$Group && (!mo.$Parent || parentExpanded) && visibility !== false\"\n fd-table-row\n [secondary]=\"true\"\n class=\"secondary-row\"\n [class.no-edit-mode]=\"!inlineEditMode\"\n [applyConditionalFormats]=\"conditionalFormats\"\n [styleIndex]=\"styleIndex\"\n [hostEl]=\"trEl\"\n [attr.aria-selected]=\"isChecked && !inlineEditMode ? true : false\"\n>\n <ng-container *ngTemplateOutlet=\"statusIndicator\"></ng-container>\n\n <td fd-table-cell class=\"single-select\" *ngIf=\"!isCheckList\" (click)=\"onRowCheck()\"></td>\n <td fd-table-cell colspan=\"100%\" (click)=\"onRowCheck()\">\n <p\n #pEl\n fd-table-text\n *ngFor=\"let column of secondaryColumns; let columnIndex = index; trackBy: _trackByColumn\"\n [applyConditionalFormats]=\"conditionalFormats\"\n [hostEl]=\"pEl\"\n [styleIndex]=\"styleIndex\"\n [dbName]=\"column.Name\"\n >\n <label fd-form-label>{{ column.Caption }} :</label>\n <ng-container\n *ngTemplateOutlet=\"\n columnTemplate;\n context: {\n $implicit: column,\n mo: mo,\n index: columnIndex,\n inlineEditMode: inlineEditMode,\n layout94: layout$ | async\n }\n \"\n ></ng-container>\n </p>\n </td>\n</tr>\n<tr *ngIf=\"!detailsCollapsed && cartableParams?.moId\" fd-table-row class=\"showdetails\" [attr.aria-selected]=\"isChecked\">\n <ng-container *ngTemplateOutlet=\"statusIndicator\"></ng-container>\n\n <td fd-table-cell (click)=\"onRowCheck()\"></td>\n <td\n (click)=\"onRowCheck()\"\n fd-table-cell\n [attr.colspan]=\"\n columns.length + 1 + (contextMenuItems.length ? 1 : 0) + (canView ? 1 : 0) + (showDetailsInRow ? 1 : 0)\n \"\n >\n <ng-container>\n <bnrc-form\n (click)=\"OnCartableFormClick($event)\"\n class=\"cartable-template\"\n [params]=\"cartableParams\"\n (formClose)=\"onCartableFormClosed()\"\n ></bnrc-form>\n </ng-container>\n </td>\n</tr>\n<tr\n *ngIf=\"!detailsCollapsed && detailsComponent?.Selector\"\n fd-table-row\n class=\"showdetails\"\n [attr.aria-selected]=\"isChecked\"\n>\n <ng-container *ngTemplateOutlet=\"statusIndicator\"></ng-container>\n\n <td fd-table-cell (click)=\"onRowCheck()\"></td>\n <td\n (click)=\"onRowCheck()\"\n fd-table-cell\n [attr.colspan]=\"\n columns.length + 1 + (contextMenuItems.length ? 1 : 0) + (canView ? 1 : 0) + (showDetailsInRow ? 1 : 0)\n \"\n >\n <ng-container *ngTemplateOutlet=\"detailsColumnsTemplate\"></ng-container>\n <ng-container *ngIf=\"detailsComponent && detailsComponent.Selector\">\n <bnrc-dynamic-item-component\n [component]=\"detailsComponent\"\n [mo]=\"mo\"\n [isChecked]=\"isChecked\"\n [setting]=\"detailsComponentSetting\"\n [parameters]=\"detailsComponent.Settings\"\n [editMode]=\"inlineEditMode\"\n [formSetting]=\"formSetting\"\n [rtl]=\"rtl\"\n [deviceName]=\"deviceName\"\n [deviceSize]=\"deviceSize\"\n [index]=\"index\"\n [allColumns]=\"allColumns\"\n [typeDefId]=\"typeDefId\"\n ></bnrc-dynamic-item-component>\n </ng-container>\n </td>\n</tr>\n<ng-template #detailsColumnsTemplate>\n <ng-container\n *ngTemplateOutlet=\"\n detailsFormItems;\n context: {\n $implicit: detailsColumns,\n mo: mo,\n inlineEditMode: inlineEditMode,\n layout94: layout$\n }\n \"\n ></ng-container>\n</ng-template>\n<ng-template #detailsFormItems let-detailsColumns let-mo=\"mo\" let-inlineEditMode=\"inlineEditMode\" let-layout$=\"layout$\">\n <div class=\"form-items\">\n <div fd-form-item *ngFor=\"let column of detailsColumns; let columnIndex = index\">\n <label fd-form-label for=\"input-2\">{{ column.Caption }}</label>\n <ng-container\n *ngTemplateOutlet=\"\n columnTemplate;\n context: {\n $implicit: column,\n mo: mo,\n index: columnIndex,\n inlineEditMode: inlineEditMode,\n layout94: layout$ | async\n }\n \"\n ></ng-container>\n </div>\n </div>\n</ng-template>\n<tr *ngIf=\"bruleActionMessage && inlineEditMode\" fd-table-row>\n <ng-container *ngTemplateOutlet=\"statusIndicator\"></ng-container>\n <td fd-table-cell [attr.colspan]=\"columns.length + 1\">\n <fd-message-strip\n *ngIf=\"bruleActionMessage.MessageType === 2\"\n [type]=\"bruleActionMessage.MessageType === 2 ? 'error' : 'information'\"\n [dismissible]=\"false\"\n >\n {{ bruleActionMessage.MessageExpression }}\n </fd-message-strip>\n </td>\n</tr>\n<tr *ngIf=\"workflowState?.errorText\" fd-table-row>\n <ng-container *ngTemplateOutlet=\"statusIndicator\"></ng-container>\n <td fd-table-cell [attr.colspan]=\"columns.length + 4\">\n <fd-message-strip type=\"error\" [dismissible]=\"true\" (onDismiss)=\"resetWorkflowState.emit()\">\n {{ workflowState.errorText }}\n </fd-message-strip>\n </td>\n</tr>\n<ng-template\n #columnTemplate\n let-column\n let-mo=\"mo\"\n let-index=\"index\"\n let-inlineEditMode=\"inlineEditMode\"\n let-layout94=\"layout94\"\n>\n <bsu-barsa-table-column\n [mo]=\"mo\"\n [column]=\"column\"\n [value]=\"column | columnValue: mo\"\n [icon]=\"column | columnIcon: mo\"\n [customComponent]=\"column.$CustomComponent\"\n [column]=\"column\"\n [editMode]=\"isChecked && inlineEditMode && allowInlineEdit\"\n [inlineEditMode]=\"inlineEditMode\"\n [isChecked]=\"isChecked\"\n [index]=\"index\"\n [formSetting]=\"formSetting\"\n [rtl]=\"rtl\"\n [deviceName]=\"deviceName\"\n [deviceSize]=\"deviceSize\"\n [layout94]=\"layout94\"\n (save)=\"onEditFormPanelSave(null)\"\n (cancel)=\"onEditFormPanelCancel(null)\"\n (tab)=\"onTabKeyDown($event, index)\"\n (changeToEditMode)=\"onColumnChangeToEditMode($event, index)\"\n >\n </bsu-barsa-table-column>\n</ng-template>\n<ng-template #statusIndicator>\n <bsu-barsa-column-indicator\n [hideBorderBottom]=\"!detailsCollapsed\"\n *ngIf=\"rowIndicator\"\n [backColor]=\"rowIndicatorColor\"\n >\n </bsu-barsa-column-indicator>\n</ng-template>\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)}.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}.workflow-pending{opacity:.5;pointer-events:none;position:relative}\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: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { 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: "component", type: i3.FormComponent, selector: "bnrc-form", inputs: ["params", "customFormPanelUi", "formPanelCtrl", "formPanelCtrlId"], outputs: ["titleChanged", "moChanged", "formClose", "formRendered"] }, { kind: "component", type: i3.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: "directive", type: i3.FormCloseDirective, selector: "[formClose]", inputs: ["isMobile"] }, { kind: "component", type: i4.BusyIndicatorComponent, selector: "fd-busy-indicator", inputs: ["loading", "size", "block", "ariaLabel", "title", "label", "ariaLive"] }, { kind: "component", type: i5.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i6.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: i7.FormItemComponent, selector: "[fd-form-item]", inputs: ["isInline", "horizontal"] }, { kind: "component", type: i7.FormLabelComponent, selector: "[fd-form-label]", inputs: ["required", "colon", "checkbox", "radio", "alignLabelEnd", "inlineHelpTitle", "inlineHelpGlyph", "inlineHelpTriggers", "inlineHelpBodyPlacement", "inlineHelpPlacement", "id"] }, { kind: "component", type: i8.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "class", "ariaLabel"] }, { kind: "component", type: i9.MessageStripComponent, selector: "fd-message-strip", inputs: ["class", "dismissible", "noIcon", "type", "id", "ariaLabelledBy", "ariaLabel", "dismissLabel", "width", "minWidth", "marginBottom"], outputs: ["onDismiss"] }, { kind: "directive", type: i10.TableRowDirective, selector: "[fdTableRow], [fd-table-row]", inputs: ["activable", "highlightActive", "hoverable", "focusable", "main", "secondary", "active"] }, { kind: "directive", type: i10.TableCellDirective, selector: "[fdTableCell], [fd-table-cell]", inputs: ["noBorderX", "noBorderY", "activable", "focusable", "tabindex", "hoverable", "fitContent", "noPadding", "noData", "key", "cellFocusedEventAnnouncer"] }, { kind: "directive", type: i10.TableTextDirective, selector: "[fdTableText], [fd-table-text]", inputs: ["fdTableTextClass", "noWrap", "title", "maxWidth"] }, { kind: "component", type: i11.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "component", type: i12.UlvContextMenuComponent, selector: "bsu-ulv-context-menu,[ulvContextMenu]", inputs: ["onlyOverflow", "deviceName", "menuItems", "allColumns", "index", "mo", "styleIndex", "conditionalFormats", "disableOverflowContextMenu", "footerMode"], outputs: ["commandClick"] }, { kind: "component", type: i13.BarsaTableColumnComponent, selector: "bsu-barsa-table-column" }, { kind: "component", type: i14.BarsaColumnIndicatorComponent, selector: "bsu-barsa-column-indicator", inputs: ["backColor", "hideBorderBottom"] }, { kind: "directive", type: i15.ApplyConditionalFormatsDirective, selector: "[applyConditionalFormats]", inputs: ["applyConditionalFormats", "styleIndex", "hostEl", "dbName"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.BbbTranslatePipe, name: "bbbTranslate" }, { kind: "pipe", type: i3.ColumnIconPipe, name: "columnIcon" }, { kind: "pipe", type: i3.ColumnValuePipe, name: "columnValue" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
41
41
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BarsaTableRowComponent, decorators: [{
42
42
  type: Component,
43
- args: [{ selector: 'bsu-barsa-table-row', providers: [FormPanelService], changeDetection: ChangeDetectionStrategy.OnPush, template: "<tr\n [class.row-error]=\"hasError\"\n [class.showdetails-on]=\"!detailsCollapsed\"\n #trEl\n *ngIf=\"(!mo.$Parent || parentExpanded) && visibility !== false\"\n fd-table-row\n [activable]=\"false\"\n [hoverable]=\"false\"\n [applyConditionalFormats]=\"conditionalFormats\"\n [styleIndex]=\"styleIndex\"\n [hostEl]=\"trEl\"\n [main]=\"true\"\n [focusable]=\"true\"\n [attr.aria-selected]=\"isChecked\"\n [focusable]=\"!inlineEditMode || !allowInlineEdit\"\n [class.brule-message]=\"bruleActionMessage || workflowState?.errorText\"\n [class.workflow-pending]=\"workflowState?.state === 'Pending'\"\n>\n <ng-container *ngIf=\"mo.$Group || mo.$Group === ''; else renderRow\">\n <td\n [style.padding-right]=\"rtl ? 'calc( 1rem + ' + level * 12 + 'px' + ' )' : 'inherit'\"\n [style.padding-left]=\"!rtl ? 'calc( 1rem + ' + level * 12 + 'px' + ' )' : 'inherit'\"\n fd-table-cell\n [attr.colspan]=\"canView ? columnsCount + 1 : columnsCount\"\n class=\"row-group\"\n [class.mobile-mode]=\"secondaryColumns?.length\"\n [attr.level]=\"level\"\n [class.root-group]=\"level === 0\"\n >\n <button\n fd-button\n [fdType]=\"'transparent'\"\n [glyph]=\"expanded !== false ? 'navigation-down-arrow' : 'navigation-left-arrow'\"\n class=\"cell-expand\"\n [disabled]=\"inlineEditMode\"\n (click)=\"onExpandClick()\"\n ></button>\n {{ mo.$Group }}\n </td>\n </ng-container>\n <ng-template #renderRow>\n <ng-container *ngTemplateOutlet=\"statusIndicator\"></ng-container>\n <td fd-table-cell *ngIf=\"isCheckList\">\n <div\n *ngIf=\"workflowState?.state === 'Pending'\"\n style=\"position: absolute; left: 0; right: 0; bottom: 0; top: 0\"\n >\n <bsu-mask [top]=\"'20px'\" [size]=\"'s'\"></bsu-mask>\n </div>\n\n <fd-checkbox [name]=\"mo.$Caption\" [ngModel]=\"isChecked\" (ngModelChange)=\"onRowCheck()\"></fd-checkbox>\n </td>\n <td\n fd-table-cell\n class=\"single-select\"\n *ngIf=\"!isCheckList\"\n (click)=\"onRowCheck()\"\n style=\"padding: 0; text-align: center\"\n >\n <ng-container\n *ngIf=\"inlineEditMode && allowInlineEdit && (hasError || saving || saved); else iconStateTemplate\"\n >\n <fd-icon *ngIf=\"hasError\" class=\"save-error\" glyph=\"error\"></fd-icon>\n <fd-busy-indicator\n *ngIf=\"saving\"\n [loading]=\"true\"\n [size]=\"'s'\"\n title=\"record saving\"\n ></fd-busy-indicator>\n <fd-icon *ngIf=\"saved\" class=\"save-success\" glyph=\"accept\"></fd-icon>\n </ng-container>\n <ng-template #iconStateTemplate>\n <fd-icon *ngIf=\"mo.$State === 'New' && !isChecked\" glyph=\"favorite\"></fd-icon>\n <fd-icon *ngIf=\"inlineEditMode && allowInlineEdit && isChecked\" glyph=\"edit\"></fd-icon>\n </ng-template>\n </td>\n <ng-container *ngFor=\"let column of columns; let columnIndex = index\">\n <td\n *ngIf=\"(rowIndicator && columnIndex > 0) || !rowIndicator\"\n [attr.dbName]=\"column.Name\"\n #tdEl\n fd-table-cell\n [applyConditionalFormats]=\"conditionalFormats\"\n [hostEl]=\"tdEl\"\n [styleIndex]=\"styleIndex\"\n [dbName]=\"column.Name\"\n [focusable]=\"false\"\n (click)=\"onRowCheck()\"\n (dblclick)=\"onRowClick()\"\n [hoverable]=\"inlineEditMode && allowInlineEdit\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n columnTemplate;\n context: {\n $implicit: column,\n mo: mo,\n index: columnIndex,\n inlineEditMode: inlineEditMode,\n layout94: layout$ | async\n }\n \"\n ></ng-container>\n </td>\n </ng-container>\n <td\n class=\"col-context-menu\"\n *ngIf=\"contextMenuItems?.length && (!inlineEditMode || !allowInlineEdit)\"\n fd-table-cell\n >\n <bsu-ulv-context-menu\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\n [conditionalFormats]=\"conditionalFormats\"\n [styleIndex]=\"styleIndex\"\n [mo]=\"mo\"\n [index]=\"index\"\n (commandClick)=\"onUlvCommand()\"\n [deviceName]=\"deviceName\"\n [menuItems]=\"contextMenuItems\"\n [allColumns]=\"allColumns\"\n ></bsu-ulv-context-menu>\n </td>\n <td\n class=\"col-details\"\n fd-table-cell\n [fitContent]=\"true\"\n *ngIf=\"showDetailsInRow && (!inlineEditMode || !allowInlineEdit)\"\n >\n <button\n *ngIf=\"detailsComponent?.Selector || cartableParams?.moId\"\n fd-button\n [label]=\"(detailsCollapsed ? detailsText : 'Hide') | bbbTranslate\"\n [fdType]=\"'transparent'\"\n (click)=\"onRowDetails()\"\n ></button>\n </td>\n <td\n class=\"col-view\"\n fd-table-cell\n [fitContent]=\"true\"\n *ngIf=\"!hideOpenIcon && canView && (!inlineEditMode || !allowInlineEdit)\"\n >\n <button\n fd-button\n [glyph]=\"navigationArrow\"\n [navigation]=\"true\"\n [fdType]=\"'transparent'\"\n role=\"presentation\"\n (click)=\"onRowClick()\"\n ></button>\n </td>\n </ng-template>\n</tr>\n\n<tr\n #trEl\n *ngIf=\"secondaryColumns?.length && !mo.$Group && (!mo.$Parent || parentExpanded) && visibility !== false\"\n fd-table-row\n [secondary]=\"true\"\n class=\"secondary-row\"\n [class.no-edit-mode]=\"!inlineEditMode\"\n [applyConditionalFormats]=\"conditionalFormats\"\n [styleIndex]=\"styleIndex\"\n [hostEl]=\"trEl\"\n [attr.aria-selected]=\"isChecked && !inlineEditMode ? true : false\"\n>\n <ng-container *ngTemplateOutlet=\"statusIndicator\"></ng-container>\n\n <td fd-table-cell class=\"single-select\" *ngIf=\"!isCheckList\" (click)=\"onRowCheck()\"></td>\n <td fd-table-cell colspan=\"100%\" (click)=\"onRowCheck()\">\n <p\n #pEl\n fd-table-text\n *ngFor=\"let column of secondaryColumns; let columnIndex = index; trackBy: _trackByColumn\"\n [applyConditionalFormats]=\"conditionalFormats\"\n [hostEl]=\"pEl\"\n [styleIndex]=\"styleIndex\"\n [dbName]=\"column.Name\"\n >\n <label fd-form-label>{{ column.Caption }} :</label>\n <ng-container\n *ngTemplateOutlet=\"\n columnTemplate;\n context: {\n $implicit: column,\n mo: mo,\n index: columnIndex,\n inlineEditMode: inlineEditMode,\n layout94: layout$ | async\n }\n \"\n ></ng-container>\n </p>\n </td>\n</tr>\n<tr *ngIf=\"!detailsCollapsed && cartableParams?.moId\" fd-table-row class=\"showdetails\" [attr.aria-selected]=\"isChecked\">\n <ng-container *ngTemplateOutlet=\"statusIndicator\"></ng-container>\n\n <td fd-table-cell (click)=\"onRowCheck()\"></td>\n <td\n (click)=\"onRowCheck()\"\n fd-table-cell\n [attr.colspan]=\"\n columns.length + 1 + (contextMenuItems.length ? 1 : 0) + (canView ? 1 : 0) + (showDetailsInRow ? 1 : 0)\n \"\n >\n <ng-container>\n <bnrc-form\n (click)=\"OnCartableFormClick($event)\"\n class=\"cartable-template\"\n [params]=\"cartableParams\"\n (formClose)=\"onCartableFormClosed()\"\n ></bnrc-form>\n </ng-container>\n </td>\n</tr>\n<tr\n *ngIf=\"!detailsCollapsed && detailsComponent?.Selector\"\n fd-table-row\n class=\"showdetails\"\n [attr.aria-selected]=\"isChecked\"\n>\n <ng-container *ngTemplateOutlet=\"statusIndicator\"></ng-container>\n\n <td fd-table-cell (click)=\"onRowCheck()\"></td>\n <td\n (click)=\"onRowCheck()\"\n fd-table-cell\n [attr.colspan]=\"\n columns.length + 1 + (contextMenuItems.length ? 1 : 0) + (canView ? 1 : 0) + (showDetailsInRow ? 1 : 0)\n \"\n >\n <ng-container *ngTemplateOutlet=\"detailsColumnsTemplate\"></ng-container>\n <ng-container *ngIf=\"detailsComponent && detailsComponent.Selector\">\n <bnrc-dynamic-item-component\n [component]=\"detailsComponent\"\n [mo]=\"mo\"\n [isChecked]=\"isChecked\"\n [setting]=\"detailsComponentSetting\"\n [parameters]=\"detailsComponent.Settings\"\n [editMode]=\"inlineEditMode\"\n [formSetting]=\"formSetting\"\n [rtl]=\"rtl\"\n [deviceName]=\"deviceName\"\n [deviceSize]=\"deviceSize\"\n [index]=\"index\"\n [allColumns]=\"allColumns\"\n [typeDefId]=\"typeDefId\"\n ></bnrc-dynamic-item-component>\n </ng-container>\n </td>\n</tr>\n<ng-template #detailsColumnsTemplate>\n <ng-container\n *ngTemplateOutlet=\"\n detailsFormItems;\n context: {\n $implicit: detailsColumns,\n mo: mo,\n inlineEditMode: inlineEditMode,\n layout94: layout$\n }\n \"\n ></ng-container>\n</ng-template>\n<ng-template #detailsFormItems let-detailsColumns let-mo=\"mo\" let-inlineEditMode=\"inlineEditMode\" let-layout$=\"layout$\">\n <div class=\"form-items\">\n <div fd-form-item *ngFor=\"let column of detailsColumns; let columnIndex = index\">\n <label fd-form-label for=\"input-2\">{{ column.Caption }}</label>\n <ng-container\n *ngTemplateOutlet=\"\n columnTemplate;\n context: {\n $implicit: column,\n mo: mo,\n index: columnIndex,\n inlineEditMode: inlineEditMode,\n layout94: layout$ | async\n }\n \"\n ></ng-container>\n </div>\n </div>\n</ng-template>\n<tr *ngIf=\"bruleActionMessage && inlineEditMode\" fd-table-row>\n <ng-container *ngTemplateOutlet=\"statusIndicator\"></ng-container>\n <td fd-table-cell [attr.colspan]=\"columns.length + 1\">\n <fd-message-strip\n *ngIf=\"bruleActionMessage.MessageType === 2\"\n [type]=\"bruleActionMessage.MessageType === 2 ? 'error' : 'information'\"\n [dismissible]=\"false\"\n >\n {{ bruleActionMessage.MessageExpression }}\n </fd-message-strip>\n </td>\n</tr>\n<tr *ngIf=\"workflowState?.errorText\" fd-table-row>\n <ng-container *ngTemplateOutlet=\"statusIndicator\"></ng-container>\n <td fd-table-cell [attr.colspan]=\"columns.length + 4\">\n <fd-message-strip type=\"error\" [dismissible]=\"true\" (onDismiss)=\"resetWorkflowState.emit()\">\n {{ workflowState.errorText }}\n </fd-message-strip>\n </td>\n</tr>\n<ng-template\n #columnTemplate\n let-column\n let-mo=\"mo\"\n let-index=\"index\"\n let-inlineEditMode=\"inlineEditMode\"\n let-layout94=\"layout94\"\n>\n <bsu-barsa-table-column\n [mo]=\"mo\"\n [column]=\"column\"\n [value]=\"column | columnValue: mo\"\n [icon]=\"column | columnIcon: mo\"\n [customComponent]=\"column.$CustomComponent\"\n [column]=\"column\"\n [editMode]=\"isChecked && inlineEditMode && allowInlineEdit\"\n [inlineEditMode]=\"inlineEditMode\"\n [isChecked]=\"isChecked\"\n [index]=\"index\"\n [formSetting]=\"formSetting\"\n [rtl]=\"rtl\"\n [deviceName]=\"deviceName\"\n [deviceSize]=\"deviceSize\"\n [layout94]=\"layout94\"\n (save)=\"onEditFormPanelSave(null)\"\n (cancel)=\"onEditFormPanelCancel(null)\"\n (tab)=\"onTabKeyDown($event, index)\"\n (changeToEditMode)=\"onColumnChangeToEditMode($event, index)\"\n >\n </bsu-barsa-table-column>\n</ng-template>\n<ng-template #statusIndicator>\n <bsu-barsa-column-indicator\n [hideBorderBottom]=\"!detailsCollapsed\"\n *ngIf=\"rowIndicator\"\n [backColor]=\"rowIndicatorColor\"\n >\n </bsu-barsa-column-indicator>\n</ng-template>\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)}.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}.workflow-pending{opacity:.5;pointer-events:none;position:relative}\n"] }]
43
+ args: [{ selector: 'bsu-barsa-table-row', providers: [FormPanelService], changeDetection: ChangeDetectionStrategy.OnPush, template: "<tr\n [class.row-error]=\"hasError\"\n [class.showdetails-on]=\"!detailsCollapsed\"\n #trEl\n *ngIf=\"(!mo.$Parent || parentExpanded) && visibility !== false\"\n fd-table-row\n [activable]=\"false\"\n [hoverable]=\"false\"\n [applyConditionalFormats]=\"conditionalFormats\"\n [styleIndex]=\"styleIndex\"\n [hostEl]=\"trEl\"\n [main]=\"true\"\n [focusable]=\"true\"\n [attr.aria-selected]=\"isChecked\"\n [focusable]=\"!inlineEditMode || !allowInlineEdit\"\n [class.brule-message]=\"bruleActionMessage || workflowState?.errorText\"\n [class.workflow-pending]=\"workflowState?.state === 'Pending'\"\n>\n <ng-container *ngIf=\"mo.$Group || mo.$Group === ''; else renderRow\">\n <td\n [style.padding-right]=\"rtl ? 'calc( 1rem + ' + level * 12 + 'px' + ' )' : 'inherit'\"\n [style.padding-left]=\"!rtl ? 'calc( 1rem + ' + level * 12 + 'px' + ' )' : 'inherit'\"\n fd-table-cell\n style=\"font-weight: bold; font-size: 1.2rem\"\n [attr.colspan]=\"canView ? columnsCount + 1 : columnsCount\"\n class=\"row-group\"\n [class.mobile-mode]=\"secondaryColumns?.length\"\n [attr.level]=\"level\"\n [class.root-group]=\"level === 0\"\n >\n <button\n fd-button\n [fdType]=\"'transparent'\"\n [glyph]=\"expanded !== false ? 'navigation-down-arrow' : 'navigation-left-arrow'\"\n class=\"cell-expand\"\n [disabled]=\"inlineEditMode\"\n (click)=\"onExpandClick()\"\n ></button>\n {{ mo.$Group }}\n </td>\n </ng-container>\n <ng-template #renderRow>\n <ng-container *ngTemplateOutlet=\"statusIndicator\"></ng-container>\n <td fd-table-cell *ngIf=\"isCheckList\">\n <div\n *ngIf=\"workflowState?.state === 'Pending'\"\n style=\"position: absolute; left: 0; right: 0; bottom: 0; top: 0\"\n >\n <bsu-mask [top]=\"'20px'\" [size]=\"'s'\"></bsu-mask>\n </div>\n\n <fd-checkbox [name]=\"mo.$Caption\" [ngModel]=\"isChecked\" (ngModelChange)=\"onRowCheck()\"></fd-checkbox>\n </td>\n <td\n fd-table-cell\n class=\"single-select\"\n *ngIf=\"!isCheckList\"\n (click)=\"onRowCheck()\"\n style=\"padding: 0; text-align: center\"\n >\n <ng-container\n *ngIf=\"inlineEditMode && allowInlineEdit && (hasError || saving || saved); else iconStateTemplate\"\n >\n <fd-icon *ngIf=\"hasError\" class=\"save-error\" glyph=\"error\"></fd-icon>\n <fd-busy-indicator\n *ngIf=\"saving\"\n [loading]=\"true\"\n [size]=\"'s'\"\n title=\"record saving\"\n ></fd-busy-indicator>\n <fd-icon *ngIf=\"saved\" class=\"save-success\" glyph=\"accept\"></fd-icon>\n </ng-container>\n <ng-template #iconStateTemplate>\n <fd-icon *ngIf=\"mo.$State === 'New' && !isChecked\" glyph=\"favorite\"></fd-icon>\n <fd-icon *ngIf=\"inlineEditMode && allowInlineEdit && isChecked\" glyph=\"edit\"></fd-icon>\n </ng-template>\n </td>\n <ng-container *ngFor=\"let column of columns; let columnIndex = index\">\n <td\n *ngIf=\"(rowIndicator && columnIndex > 0) || !rowIndicator\"\n [attr.dbName]=\"column.Name\"\n #tdEl\n fd-table-cell\n [applyConditionalFormats]=\"conditionalFormats\"\n [hostEl]=\"tdEl\"\n [styleIndex]=\"styleIndex\"\n [dbName]=\"column.Name\"\n [focusable]=\"false\"\n (click)=\"onRowCheck()\"\n (dblclick)=\"onRowClick()\"\n [hoverable]=\"inlineEditMode && allowInlineEdit\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n columnTemplate;\n context: {\n $implicit: column,\n mo: mo,\n index: columnIndex,\n inlineEditMode: inlineEditMode,\n layout94: layout$ | async\n }\n \"\n ></ng-container>\n </td>\n </ng-container>\n <td\n class=\"col-context-menu\"\n *ngIf=\"contextMenuItems?.length && (!inlineEditMode || !allowInlineEdit)\"\n fd-table-cell\n >\n <bsu-ulv-context-menu\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\n [conditionalFormats]=\"conditionalFormats\"\n [styleIndex]=\"styleIndex\"\n [mo]=\"mo\"\n [index]=\"index\"\n (commandClick)=\"onUlvCommand()\"\n [deviceName]=\"deviceName\"\n [menuItems]=\"contextMenuItems\"\n [allColumns]=\"allColumns\"\n ></bsu-ulv-context-menu>\n </td>\n <td\n class=\"col-details\"\n fd-table-cell\n [fitContent]=\"true\"\n *ngIf=\"showDetailsInRow && (!inlineEditMode || !allowInlineEdit)\"\n >\n <button\n *ngIf=\"detailsComponent?.Selector || cartableParams?.moId\"\n fd-button\n [label]=\"(detailsCollapsed ? detailsText : 'Hide') | bbbTranslate\"\n [fdType]=\"'transparent'\"\n (click)=\"onRowDetails()\"\n ></button>\n </td>\n <td\n class=\"col-view\"\n fd-table-cell\n [fitContent]=\"true\"\n *ngIf=\"!hideOpenIcon && canView && (!inlineEditMode || !allowInlineEdit)\"\n >\n <button\n fd-button\n [glyph]=\"navigationArrow\"\n [navigation]=\"true\"\n [fdType]=\"'transparent'\"\n role=\"presentation\"\n (click)=\"onRowClick()\"\n ></button>\n </td>\n </ng-template>\n</tr>\n\n<tr\n #trEl\n *ngIf=\"secondaryColumns?.length && !mo.$Group && (!mo.$Parent || parentExpanded) && visibility !== false\"\n fd-table-row\n [secondary]=\"true\"\n class=\"secondary-row\"\n [class.no-edit-mode]=\"!inlineEditMode\"\n [applyConditionalFormats]=\"conditionalFormats\"\n [styleIndex]=\"styleIndex\"\n [hostEl]=\"trEl\"\n [attr.aria-selected]=\"isChecked && !inlineEditMode ? true : false\"\n>\n <ng-container *ngTemplateOutlet=\"statusIndicator\"></ng-container>\n\n <td fd-table-cell class=\"single-select\" *ngIf=\"!isCheckList\" (click)=\"onRowCheck()\"></td>\n <td fd-table-cell colspan=\"100%\" (click)=\"onRowCheck()\">\n <p\n #pEl\n fd-table-text\n *ngFor=\"let column of secondaryColumns; let columnIndex = index; trackBy: _trackByColumn\"\n [applyConditionalFormats]=\"conditionalFormats\"\n [hostEl]=\"pEl\"\n [styleIndex]=\"styleIndex\"\n [dbName]=\"column.Name\"\n >\n <label fd-form-label>{{ column.Caption }} :</label>\n <ng-container\n *ngTemplateOutlet=\"\n columnTemplate;\n context: {\n $implicit: column,\n mo: mo,\n index: columnIndex,\n inlineEditMode: inlineEditMode,\n layout94: layout$ | async\n }\n \"\n ></ng-container>\n </p>\n </td>\n</tr>\n<tr *ngIf=\"!detailsCollapsed && cartableParams?.moId\" fd-table-row class=\"showdetails\" [attr.aria-selected]=\"isChecked\">\n <ng-container *ngTemplateOutlet=\"statusIndicator\"></ng-container>\n\n <td fd-table-cell (click)=\"onRowCheck()\"></td>\n <td\n (click)=\"onRowCheck()\"\n fd-table-cell\n [attr.colspan]=\"\n columns.length + 1 + (contextMenuItems.length ? 1 : 0) + (canView ? 1 : 0) + (showDetailsInRow ? 1 : 0)\n \"\n >\n <ng-container>\n <bnrc-form\n (click)=\"OnCartableFormClick($event)\"\n class=\"cartable-template\"\n [params]=\"cartableParams\"\n (formClose)=\"onCartableFormClosed()\"\n ></bnrc-form>\n </ng-container>\n </td>\n</tr>\n<tr\n *ngIf=\"!detailsCollapsed && detailsComponent?.Selector\"\n fd-table-row\n class=\"showdetails\"\n [attr.aria-selected]=\"isChecked\"\n>\n <ng-container *ngTemplateOutlet=\"statusIndicator\"></ng-container>\n\n <td fd-table-cell (click)=\"onRowCheck()\"></td>\n <td\n (click)=\"onRowCheck()\"\n fd-table-cell\n [attr.colspan]=\"\n columns.length + 1 + (contextMenuItems.length ? 1 : 0) + (canView ? 1 : 0) + (showDetailsInRow ? 1 : 0)\n \"\n >\n <ng-container *ngTemplateOutlet=\"detailsColumnsTemplate\"></ng-container>\n <ng-container *ngIf=\"detailsComponent && detailsComponent.Selector\">\n <bnrc-dynamic-item-component\n [component]=\"detailsComponent\"\n [mo]=\"mo\"\n [isChecked]=\"isChecked\"\n [setting]=\"detailsComponentSetting\"\n [parameters]=\"detailsComponent.Settings\"\n [editMode]=\"inlineEditMode\"\n [formSetting]=\"formSetting\"\n [rtl]=\"rtl\"\n [deviceName]=\"deviceName\"\n [deviceSize]=\"deviceSize\"\n [index]=\"index\"\n [allColumns]=\"allColumns\"\n [typeDefId]=\"typeDefId\"\n ></bnrc-dynamic-item-component>\n </ng-container>\n </td>\n</tr>\n<ng-template #detailsColumnsTemplate>\n <ng-container\n *ngTemplateOutlet=\"\n detailsFormItems;\n context: {\n $implicit: detailsColumns,\n mo: mo,\n inlineEditMode: inlineEditMode,\n layout94: layout$\n }\n \"\n ></ng-container>\n</ng-template>\n<ng-template #detailsFormItems let-detailsColumns let-mo=\"mo\" let-inlineEditMode=\"inlineEditMode\" let-layout$=\"layout$\">\n <div class=\"form-items\">\n <div fd-form-item *ngFor=\"let column of detailsColumns; let columnIndex = index\">\n <label fd-form-label for=\"input-2\">{{ column.Caption }}</label>\n <ng-container\n *ngTemplateOutlet=\"\n columnTemplate;\n context: {\n $implicit: column,\n mo: mo,\n index: columnIndex,\n inlineEditMode: inlineEditMode,\n layout94: layout$ | async\n }\n \"\n ></ng-container>\n </div>\n </div>\n</ng-template>\n<tr *ngIf=\"bruleActionMessage && inlineEditMode\" fd-table-row>\n <ng-container *ngTemplateOutlet=\"statusIndicator\"></ng-container>\n <td fd-table-cell [attr.colspan]=\"columns.length + 1\">\n <fd-message-strip\n *ngIf=\"bruleActionMessage.MessageType === 2\"\n [type]=\"bruleActionMessage.MessageType === 2 ? 'error' : 'information'\"\n [dismissible]=\"false\"\n >\n {{ bruleActionMessage.MessageExpression }}\n </fd-message-strip>\n </td>\n</tr>\n<tr *ngIf=\"workflowState?.errorText\" fd-table-row>\n <ng-container *ngTemplateOutlet=\"statusIndicator\"></ng-container>\n <td fd-table-cell [attr.colspan]=\"columns.length + 4\">\n <fd-message-strip type=\"error\" [dismissible]=\"true\" (onDismiss)=\"resetWorkflowState.emit()\">\n {{ workflowState.errorText }}\n </fd-message-strip>\n </td>\n</tr>\n<ng-template\n #columnTemplate\n let-column\n let-mo=\"mo\"\n let-index=\"index\"\n let-inlineEditMode=\"inlineEditMode\"\n let-layout94=\"layout94\"\n>\n <bsu-barsa-table-column\n [mo]=\"mo\"\n [column]=\"column\"\n [value]=\"column | columnValue: mo\"\n [icon]=\"column | columnIcon: mo\"\n [customComponent]=\"column.$CustomComponent\"\n [column]=\"column\"\n [editMode]=\"isChecked && inlineEditMode && allowInlineEdit\"\n [inlineEditMode]=\"inlineEditMode\"\n [isChecked]=\"isChecked\"\n [index]=\"index\"\n [formSetting]=\"formSetting\"\n [rtl]=\"rtl\"\n [deviceName]=\"deviceName\"\n [deviceSize]=\"deviceSize\"\n [layout94]=\"layout94\"\n (save)=\"onEditFormPanelSave(null)\"\n (cancel)=\"onEditFormPanelCancel(null)\"\n (tab)=\"onTabKeyDown($event, index)\"\n (changeToEditMode)=\"onColumnChangeToEditMode($event, index)\"\n >\n </bsu-barsa-table-column>\n</ng-template>\n<ng-template #statusIndicator>\n <bsu-barsa-column-indicator\n [hideBorderBottom]=\"!detailsCollapsed\"\n *ngIf=\"rowIndicator\"\n [backColor]=\"rowIndicatorColor\"\n >\n </bsu-barsa-column-indicator>\n</ng-template>\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)}.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}.workflow-pending{opacity:.5;pointer-events:none;position:relative}\n"] }]
44
44
  }], propDecorators: { showDetailsInRow: [{
45
45
  type: Input
46
46
  }], detailsComponent: [{
@@ -55,4 +55,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImpor
55
55
  type: ViewChild,
56
56
  args: ['detailsFormItems', { static: true }]
57
57
  }] } });
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyc2EtdGFibGUtcm93LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXNhcC11aS9zcmMvbGliL2JhcnNhLXRhYmxlLXJvdy9iYXJzYS10YWJsZS1yb3cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvYmFyc2EtdGFibGUtcm93L2JhcnNhLXRhYmxlLXJvdy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLHVCQUF1QixFQUFFLEtBQUssRUFBdUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFHLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxnQkFBZ0IsRUFBK0IsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFTakgsTUFBTSxPQUFPLHNCQUF1QixTQUFRLDBCQUEwQjtJQVB0RTs7UUFRYSxxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFPbEMscUJBQWdCLEdBQUcsSUFBSSxDQUFDO0tBZTNCO0lBYkcsUUFBUTtRQUNKLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsdUJBQXVCLEdBQUc7WUFDM0IsR0FBRyxJQUFJLENBQUMsT0FBTztZQUNmLGVBQWUsRUFBRSxJQUFJLENBQUMsY0FBYztZQUNwQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsZ0JBQWdCO1NBQzNDLENBQUM7UUFDRixJQUFJLENBQUMsV0FBVyxLQUFoQixJQUFJLENBQUMsV0FBVyxHQUFLLFNBQVMsRUFBQztJQUNuQyxDQUFDO0lBQ0QsWUFBWTtRQUNSLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztRQUMvQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzlCLENBQUM7O21IQXRCUSxzQkFBc0I7dUdBQXRCLHNCQUFzQiwwT0FIcEIsQ0FBQyxnQkFBZ0IsQ0FBQyxxTENSakMsMG5hQXVWQTsyRkQ1VWEsc0JBQXNCO2tCQVBsQyxTQUFTOytCQUNJLHFCQUFxQixhQUdwQixDQUFDLGdCQUFnQixDQUFDLG1CQUNaLHVCQUF1QixDQUFDLE1BQU07OEJBR3RDLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDMkMsZ0JBQWdCO3NCQUFoRSxTQUFTO3VCQUFDLGtCQUFrQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIElucHV0LCBPbkluaXQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1vRm9yUmVwb3J0TW9kZWwgfSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XG5pbXBvcnQgeyBCYXNlVmlld0l0ZW1Qcm9wc0NvbXBvbmVudCwgRm9ybVBhbmVsU2VydmljZSwgRWpyYXlPbGdvLCBSZXBvcnRWaWV3Q29sdW1uIH0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2JzdS1iYXJzYS10YWJsZS1yb3cnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9iYXJzYS10YWJsZS1yb3cuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2JhcnNhLXRhYmxlLXJvdy5jb21wb25lbnQuc2NzcyddLFxuICAgIHByb3ZpZGVyczogW0Zvcm1QYW5lbFNlcnZpY2VdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEJhcnNhVGFibGVSb3dDb21wb25lbnQgZXh0ZW5kcyBCYXNlVmlld0l0ZW1Qcm9wc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQElucHV0KCkgc2hvd0RldGFpbHNJblJvdyA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIGRldGFpbHNDb21wb25lbnQ/OiBFanJheU9sZ287XG4gICAgQElucHV0KCkgZGV0YWlsc0NvbHVtbnM6IFJlcG9ydFZpZXdDb2x1bW5bXTtcbiAgICBASW5wdXQoKSBkZXRhaWxzVGV4dDogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGNvbHVtbkNvbXBvbmVudHM6IE1vRm9yUmVwb3J0TW9kZWwgfCBudWxsO1xuICAgIEBWaWV3Q2hpbGQoJ2RldGFpbHNGb3JtSXRlbXMnLCB7IHN0YXRpYzogdHJ1ZSB9KSBkZXRhaWxzRm9ybUl0ZW1zOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgZGV0YWlsc0NvbGxhcHNlZCA9IHRydWU7XG4gICAgZGV0YWlsc0NvbXBvbmVudFNldHRpbmc6IGFueTtcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgdGhpcy5kZXRhaWxzQ29tcG9uZW50U2V0dGluZyA9IHtcbiAgICAgICAgICAgIC4uLnRoaXMuc2V0dGluZyxcbiAgICAgICAgICAgICRkZXRhaWxzQ29sdW1uczogdGhpcy5kZXRhaWxzQ29sdW1ucyxcbiAgICAgICAgICAgICRkZXRhaWxzRm9ybUl0ZW1zOiB0aGlzLmRldGFpbHNGb3JtSXRlbXNcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5kZXRhaWxzVGV4dCB8fD0gJ0RldGFpbHMnO1xuICAgIH1cbiAgICBvblJvd0RldGFpbHMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGV0YWlsc0NvbGxhcHNlZCA9ICF0aGlzLmRldGFpbHNDb2xsYXBzZWQ7XG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxufVxuIiwiPHRyXG4gICAgW2NsYXNzLnJvdy1lcnJvcl09XCJoYXNFcnJvclwiXG4gICAgW2NsYXNzLnNob3dkZXRhaWxzLW9uXT1cIiFkZXRhaWxzQ29sbGFwc2VkXCJcbiAgICAjdHJFbFxuICAgICpuZ0lmPVwiKCFtby4kUGFyZW50IHx8IHBhcmVudEV4cGFuZGVkKSAmJiB2aXNpYmlsaXR5ICE9PSBmYWxzZVwiXG4gICAgZmQtdGFibGUtcm93XG4gICAgW2FjdGl2YWJsZV09XCJmYWxzZVwiXG4gICAgW2hvdmVyYWJsZV09XCJmYWxzZVwiXG4gICAgW2FwcGx5Q29uZGl0aW9uYWxGb3JtYXRzXT1cImNvbmRpdGlvbmFsRm9ybWF0c1wiXG4gICAgW3N0eWxlSW5kZXhdPVwic3R5bGVJbmRleFwiXG4gICAgW2hvc3RFbF09XCJ0ckVsXCJcbiAgICBbbWFpbl09XCJ0cnVlXCJcbiAgICBbZm9jdXNhYmxlXT1cInRydWVcIlxuICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwiaXNDaGVja2VkXCJcbiAgICBbZm9jdXNhYmxlXT1cIiFpbmxpbmVFZGl0TW9kZSB8fCAhYWxsb3dJbmxpbmVFZGl0XCJcbiAgICBbY2xhc3MuYnJ1bGUtbWVzc2FnZV09XCJicnVsZUFjdGlvbk1lc3NhZ2UgfHwgd29ya2Zsb3dTdGF0ZT8uZXJyb3JUZXh0XCJcbiAgICBbY2xhc3Mud29ya2Zsb3ctcGVuZGluZ109XCJ3b3JrZmxvd1N0YXRlPy5zdGF0ZSA9PT0gJ1BlbmRpbmcnXCJcbj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibW8uJEdyb3VwIHx8IG1vLiRHcm91cCA9PT0gJyc7IGVsc2UgcmVuZGVyUm93XCI+XG4gICAgICAgIDx0ZFxuICAgICAgICAgICAgW3N0eWxlLnBhZGRpbmctcmlnaHRdPVwicnRsID8gJ2NhbGMoIDFyZW0gKyAnICsgbGV2ZWwgKiAxMiArICdweCcgKyAnICknIDogJ2luaGVyaXQnXCJcbiAgICAgICAgICAgIFtzdHlsZS5wYWRkaW5nLWxlZnRdPVwiIXJ0bCA/ICdjYWxjKCAxcmVtICsgJyArIGxldmVsICogMTIgKyAncHgnICsgJyApJyA6ICdpbmhlcml0J1wiXG4gICAgICAgICAgICBmZC10YWJsZS1jZWxsXG4gICAgICAgICAgICBbYXR0ci5jb2xzcGFuXT1cImNhblZpZXcgPyBjb2x1bW5zQ291bnQgKyAxIDogY29sdW1uc0NvdW50XCJcbiAgICAgICAgICAgIGNsYXNzPVwicm93LWdyb3VwXCJcbiAgICAgICAgICAgIFtjbGFzcy5tb2JpbGUtbW9kZV09XCJzZWNvbmRhcnlDb2x1bW5zPy5sZW5ndGhcIlxuICAgICAgICAgICAgW2F0dHIubGV2ZWxdPVwibGV2ZWxcIlxuICAgICAgICAgICAgW2NsYXNzLnJvb3QtZ3JvdXBdPVwibGV2ZWwgPT09IDBcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgW2ZkVHlwZV09XCIndHJhbnNwYXJlbnQnXCJcbiAgICAgICAgICAgICAgICBbZ2x5cGhdPVwiZXhwYW5kZWQgIT09IGZhbHNlID8gJ25hdmlnYXRpb24tZG93bi1hcnJvdycgOiAnbmF2aWdhdGlvbi1sZWZ0LWFycm93J1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjZWxsLWV4cGFuZFwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlubGluZUVkaXRNb2RlXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25FeHBhbmRDbGljaygpXCJcbiAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgIHt7IG1vLiRHcm91cCB9fVxuICAgICAgICA8L3RkPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjcmVuZGVyUm93PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic3RhdHVzSW5kaWNhdG9yXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDx0ZCBmZC10YWJsZS1jZWxsICpuZ0lmPVwiaXNDaGVja0xpc3RcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAqbmdJZj1cIndvcmtmbG93U3RhdGU/LnN0YXRlID09PSAnUGVuZGluZydcIlxuICAgICAgICAgICAgICAgIHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAwOyByaWdodDogMDsgYm90dG9tOiAwOyB0b3A6IDBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxic3UtbWFzayBbdG9wXT1cIicyMHB4J1wiIFtzaXplXT1cIidzJ1wiPjwvYnN1LW1hc2s+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGZkLWNoZWNrYm94IFtuYW1lXT1cIm1vLiRDYXB0aW9uXCIgW25nTW9kZWxdPVwiaXNDaGVja2VkXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25Sb3dDaGVjaygpXCI+PC9mZC1jaGVja2JveD5cbiAgICAgICAgPC90ZD5cbiAgICAgICAgPHRkXG4gICAgICAgICAgICBmZC10YWJsZS1jZWxsXG4gICAgICAgICAgICBjbGFzcz1cInNpbmdsZS1zZWxlY3RcIlxuICAgICAgICAgICAgKm5nSWY9XCIhaXNDaGVja0xpc3RcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uUm93Q2hlY2soKVwiXG4gICAgICAgICAgICBzdHlsZT1cInBhZGRpbmc6IDA7IHRleHQtYWxpZ246IGNlbnRlclwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImlubGluZUVkaXRNb2RlICYmIGFsbG93SW5saW5lRWRpdCAmJiAoaGFzRXJyb3IgfHwgc2F2aW5nIHx8IHNhdmVkKTsgZWxzZSBpY29uU3RhdGVUZW1wbGF0ZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGZkLWljb24gKm5nSWY9XCJoYXNFcnJvclwiIGNsYXNzPVwic2F2ZS1lcnJvclwiIGdseXBoPVwiZXJyb3JcIj48L2ZkLWljb24+XG4gICAgICAgICAgICAgICAgPGZkLWJ1c3ktaW5kaWNhdG9yXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2F2aW5nXCJcbiAgICAgICAgICAgICAgICAgICAgW2xvYWRpbmddPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtzaXplXT1cIidzJ1wiXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlPVwicmVjb3JkIHNhdmluZ1wiXG4gICAgICAgICAgICAgICAgPjwvZmQtYnVzeS1pbmRpY2F0b3I+XG4gICAgICAgICAgICAgICAgPGZkLWljb24gKm5nSWY9XCJzYXZlZFwiIGNsYXNzPVwic2F2ZS1zdWNjZXNzXCIgZ2x5cGg9XCJhY2NlcHRcIj48L2ZkLWljb24+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaWNvblN0YXRlVGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPGZkLWljb24gKm5nSWY9XCJtby4kU3RhdGUgPT09ICdOZXcnICYmICFpc0NoZWNrZWRcIiBnbHlwaD1cImZhdm9yaXRlXCI+PC9mZC1pY29uPlxuICAgICAgICAgICAgICAgIDxmZC1pY29uICpuZ0lmPVwiaW5saW5lRWRpdE1vZGUgJiYgYWxsb3dJbmxpbmVFZGl0ICYmIGlzQ2hlY2tlZFwiIGdseXBoPVwiZWRpdFwiPjwvZmQtaWNvbj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvdGQ+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBjb2x1bW5zOyBsZXQgY29sdW1uSW5kZXggPSBpbmRleFwiPlxuICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIocm93SW5kaWNhdG9yICYmIGNvbHVtbkluZGV4ID4gMCkgfHwgIXJvd0luZGljYXRvclwiXG4gICAgICAgICAgICAgICAgW2F0dHIuZGJOYW1lXT1cImNvbHVtbi5OYW1lXCJcbiAgICAgICAgICAgICAgICAjdGRFbFxuICAgICAgICAgICAgICAgIGZkLXRhYmxlLWNlbGxcbiAgICAgICAgICAgICAgICBbYXBwbHlDb25kaXRpb25hbEZvcm1hdHNdPVwiY29uZGl0aW9uYWxGb3JtYXRzXCJcbiAgICAgICAgICAgICAgICBbaG9zdEVsXT1cInRkRWxcIlxuICAgICAgICAgICAgICAgIFtzdHlsZUluZGV4XT1cInN0eWxlSW5kZXhcIlxuICAgICAgICAgICAgICAgIFtkYk5hbWVdPVwiY29sdW1uLk5hbWVcIlxuICAgICAgICAgICAgICAgIFtmb2N1c2FibGVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvblJvd0NoZWNrKClcIlxuICAgICAgICAgICAgICAgIChkYmxjbGljayk9XCJvblJvd0NsaWNrKClcIlxuICAgICAgICAgICAgICAgIFtob3ZlcmFibGVdPVwiaW5saW5lRWRpdE1vZGUgJiYgYWxsb3dJbmxpbmVFZGl0XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5UZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGNvbHVtbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtbzogbW8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGNvbHVtbkluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZUVkaXRNb2RlOiBpbmxpbmVFZGl0TW9kZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXlvdXQ5NDogbGF5b3V0JCB8IGFzeW5jXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDx0ZFxuICAgICAgICAgICAgY2xhc3M9XCJjb2wtY29udGV4dC1tZW51XCJcbiAgICAgICAgICAgICpuZ0lmPVwiY29udGV4dE1lbnVJdGVtcz8ubGVuZ3RoICYmICghaW5saW5lRWRpdE1vZGUgfHwgIWFsbG93SW5saW5lRWRpdClcIlxuICAgICAgICAgICAgZmQtdGFibGUtY2VsbFxuICAgICAgICA+XG4gICAgICAgICAgICA8YnN1LXVsdi1jb250ZXh0LW1lbnVcbiAgICAgICAgICAgICAgICBbZGlzYWJsZU92ZXJmbG93Q29udGV4dE1lbnVdPVwiZGlzYWJsZU92ZXJmbG93Q29udGV4dE1lbnVcIlxuICAgICAgICAgICAgICAgIFtjb25kaXRpb25hbEZvcm1hdHNdPVwiY29uZGl0aW9uYWxGb3JtYXRzXCJcbiAgICAgICAgICAgICAgICBbc3R5bGVJbmRleF09XCJzdHlsZUluZGV4XCJcbiAgICAgICAgICAgICAgICBbbW9dPVwibW9cIlxuICAgICAgICAgICAgICAgIFtpbmRleF09XCJpbmRleFwiXG4gICAgICAgICAgICAgICAgKGNvbW1hbmRDbGljayk9XCJvblVsdkNvbW1hbmQoKVwiXG4gICAgICAgICAgICAgICAgW2RldmljZU5hbWVdPVwiZGV2aWNlTmFtZVwiXG4gICAgICAgICAgICAgICAgW21lbnVJdGVtc109XCJjb250ZXh0TWVudUl0ZW1zXCJcbiAgICAgICAgICAgICAgICBbYWxsQ29sdW1uc109XCJhbGxDb2x1bW5zXCJcbiAgICAgICAgICAgID48L2JzdS11bHYtY29udGV4dC1tZW51PlxuICAgICAgICA8L3RkPlxuICAgICAgICA8dGRcbiAgICAgICAgICAgIGNsYXNzPVwiY29sLWRldGFpbHNcIlxuICAgICAgICAgICAgZmQtdGFibGUtY2VsbFxuICAgICAgICAgICAgW2ZpdENvbnRlbnRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAqbmdJZj1cInNob3dEZXRhaWxzSW5Sb3cgJiYgKCFpbmxpbmVFZGl0TW9kZSB8fCAhYWxsb3dJbmxpbmVFZGl0KVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAqbmdJZj1cImRldGFpbHNDb21wb25lbnQ/LlNlbGVjdG9yIHx8IGNhcnRhYmxlUGFyYW1zPy5tb0lkXCJcbiAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwiKGRldGFpbHNDb2xsYXBzZWQgPyBkZXRhaWxzVGV4dCA6ICdIaWRlJykgfCBiYmJUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIFtmZFR5cGVdPVwiJ3RyYW5zcGFyZW50J1wiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uUm93RGV0YWlscygpXCJcbiAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgPC90ZD5cbiAgICAgICAgPHRkXG4gICAgICAgICAgICBjbGFzcz1cImNvbC12aWV3XCJcbiAgICAgICAgICAgIGZkLXRhYmxlLWNlbGxcbiAgICAgICAgICAgIFtmaXRDb250ZW50XT1cInRydWVcIlxuICAgICAgICAgICAgKm5nSWY9XCIhaGlkZU9wZW5JY29uICYmIGNhblZpZXcgJiYgKCFpbmxpbmVFZGl0TW9kZSB8fCAhYWxsb3dJbmxpbmVFZGl0KVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICBbZ2x5cGhdPVwibmF2aWdhdGlvbkFycm93XCJcbiAgICAgICAgICAgICAgICBbbmF2aWdhdGlvbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbZmRUeXBlXT1cIid0cmFuc3BhcmVudCdcIlxuICAgICAgICAgICAgICAgIHJvbGU9XCJwcmVzZW50YXRpb25cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvblJvd0NsaWNrKClcIlxuICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICA8L3RkPlxuICAgIDwvbmctdGVtcGxhdGU+XG48L3RyPlxuXG48dHJcbiAgICAjdHJFbFxuICAgICpuZ0lmPVwic2Vjb25kYXJ5Q29sdW1ucz8ubGVuZ3RoICYmICFtby4kR3JvdXAgJiYgKCFtby4kUGFyZW50IHx8IHBhcmVudEV4cGFuZGVkKSAmJiB2aXNpYmlsaXR5ICE9PSBmYWxzZVwiXG4gICAgZmQtdGFibGUtcm93XG4gICAgW3NlY29uZGFyeV09XCJ0cnVlXCJcbiAgICBjbGFzcz1cInNlY29uZGFyeS1yb3dcIlxuICAgIFtjbGFzcy5uby1lZGl0LW1vZGVdPVwiIWlubGluZUVkaXRNb2RlXCJcbiAgICBbYXBwbHlDb25kaXRpb25hbEZvcm1hdHNdPVwiY29uZGl0aW9uYWxGb3JtYXRzXCJcbiAgICBbc3R5bGVJbmRleF09XCJzdHlsZUluZGV4XCJcbiAgICBbaG9zdEVsXT1cInRyRWxcIlxuICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwiaXNDaGVja2VkICYmICFpbmxpbmVFZGl0TW9kZSA/IHRydWUgOiBmYWxzZVwiXG4+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInN0YXR1c0luZGljYXRvclwiPjwvbmctY29udGFpbmVyPlxuXG4gICAgPHRkIGZkLXRhYmxlLWNlbGwgY2xhc3M9XCJzaW5nbGUtc2VsZWN0XCIgKm5nSWY9XCIhaXNDaGVja0xpc3RcIiAoY2xpY2spPVwib25Sb3dDaGVjaygpXCI+PC90ZD5cbiAgICA8dGQgZmQtdGFibGUtY2VsbCBjb2xzcGFuPVwiMTAwJVwiIChjbGljayk9XCJvblJvd0NoZWNrKClcIj5cbiAgICAgICAgPHBcbiAgICAgICAgICAgICNwRWxcbiAgICAgICAgICAgIGZkLXRhYmxlLXRleHRcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2x1bW4gb2Ygc2Vjb25kYXJ5Q29sdW1uczsgbGV0IGNvbHVtbkluZGV4ID0gaW5kZXg7IHRyYWNrQnk6IF90cmFja0J5Q29sdW1uXCJcbiAgICAgICAgICAgIFthcHBseUNvbmRpdGlvbmFsRm9ybWF0c109XCJjb25kaXRpb25hbEZvcm1hdHNcIlxuICAgICAgICAgICAgW2hvc3RFbF09XCJwRWxcIlxuICAgICAgICAgICAgW3N0eWxlSW5kZXhdPVwic3R5bGVJbmRleFwiXG4gICAgICAgICAgICBbZGJOYW1lXT1cImNvbHVtbi5OYW1lXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGxhYmVsIGZkLWZvcm0tbGFiZWw+e3sgY29sdW1uLkNhcHRpb24gfX0gOjwvbGFiZWw+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uVGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY29sdW1uLFxuICAgICAgICAgICAgICAgICAgICAgICAgbW86IG1vLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGNvbHVtbkluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lRWRpdE1vZGU6IGlubGluZUVkaXRNb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGF5b3V0OTQ6IGxheW91dCQgfCBhc3luY1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9wPlxuICAgIDwvdGQ+XG48L3RyPlxuPHRyICpuZ0lmPVwiIWRldGFpbHNDb2xsYXBzZWQgJiYgY2FydGFibGVQYXJhbXM/Lm1vSWRcIiBmZC10YWJsZS1yb3cgY2xhc3M9XCJzaG93ZGV0YWlsc1wiIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwiaXNDaGVja2VkXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInN0YXR1c0luZGljYXRvclwiPjwvbmctY29udGFpbmVyPlxuXG4gICAgPHRkIGZkLXRhYmxlLWNlbGwgKGNsaWNrKT1cIm9uUm93Q2hlY2soKVwiPjwvdGQ+XG4gICAgPHRkXG4gICAgICAgIChjbGljayk9XCJvblJvd0NoZWNrKClcIlxuICAgICAgICBmZC10YWJsZS1jZWxsXG4gICAgICAgIFthdHRyLmNvbHNwYW5dPVwiXG4gICAgICAgICAgICBjb2x1bW5zLmxlbmd0aCArIDEgKyAoY29udGV4dE1lbnVJdGVtcy5sZW5ndGggPyAxIDogMCkgKyAoY2FuVmlldyA/IDEgOiAwKSArIChzaG93RGV0YWlsc0luUm93ID8gMSA6IDApXG4gICAgICAgIFwiXG4gICAgPlxuICAgICAgICA8bmctY29udGFpbmVyPlxuICAgICAgICAgICAgPGJucmMtZm9ybVxuICAgICAgICAgICAgICAgIChjbGljayk9XCJPbkNhcnRhYmxlRm9ybUNsaWNrKCRldmVudClcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2FydGFibGUtdGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgIFtwYXJhbXNdPVwiY2FydGFibGVQYXJhbXNcIlxuICAgICAgICAgICAgICAgIChmb3JtQ2xvc2UpPVwib25DYXJ0YWJsZUZvcm1DbG9zZWQoKVwiXG4gICAgICAgICAgICA+PC9ibnJjLWZvcm0+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvdGQ+XG48L3RyPlxuPHRyXG4gICAgKm5nSWY9XCIhZGV0YWlsc0NvbGxhcHNlZCAmJiBkZXRhaWxzQ29tcG9uZW50Py5TZWxlY3RvclwiXG4gICAgZmQtdGFibGUtcm93XG4gICAgY2xhc3M9XCJzaG93ZGV0YWlsc1wiXG4gICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJpc0NoZWNrZWRcIlxuPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzdGF0dXNJbmRpY2F0b3JcIj48L25nLWNvbnRhaW5lcj5cblxuICAgIDx0ZCBmZC10YWJsZS1jZWxsIChjbGljayk9XCJvblJvd0NoZWNrKClcIj48L3RkPlxuICAgIDx0ZFxuICAgICAgICAoY2xpY2spPVwib25Sb3dDaGVjaygpXCJcbiAgICAgICAgZmQtdGFibGUtY2VsbFxuICAgICAgICBbYXR0ci5jb2xzcGFuXT1cIlxuICAgICAgICAgICAgY29sdW1ucy5sZW5ndGggKyAxICsgKGNvbnRleHRNZW51SXRlbXMubGVuZ3RoID8gMSA6IDApICsgKGNhblZpZXcgPyAxIDogMCkgKyAoc2hvd0RldGFpbHNJblJvdyA/IDEgOiAwKVxuICAgICAgICBcIlxuICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRldGFpbHNDb2x1bW5zVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRldGFpbHNDb21wb25lbnQgJiYgZGV0YWlsc0NvbXBvbmVudC5TZWxlY3RvclwiPlxuICAgICAgICAgICAgPGJucmMtZHluYW1pYy1pdGVtLWNvbXBvbmVudFxuICAgICAgICAgICAgICAgIFtjb21wb25lbnRdPVwiZGV0YWlsc0NvbXBvbmVudFwiXG4gICAgICAgICAgICAgICAgW21vXT1cIm1vXCJcbiAgICAgICAgICAgICAgICBbaXNDaGVja2VkXT1cImlzQ2hlY2tlZFwiXG4gICAgICAgICAgICAgICAgW3NldHRpbmddPVwiZGV0YWlsc0NvbXBvbmVudFNldHRpbmdcIlxuICAgICAgICAgICAgICAgIFtwYXJhbWV0ZXJzXT1cImRldGFpbHNDb21wb25lbnQuU2V0dGluZ3NcIlxuICAgICAgICAgICAgICAgIFtlZGl0TW9kZV09XCJpbmxpbmVFZGl0TW9kZVwiXG4gICAgICAgICAgICAgICAgW2Zvcm1TZXR0aW5nXT1cImZvcm1TZXR0aW5nXCJcbiAgICAgICAgICAgICAgICBbcnRsXT1cInJ0bFwiXG4gICAgICAgICAgICAgICAgW2RldmljZU5hbWVdPVwiZGV2aWNlTmFtZVwiXG4gICAgICAgICAgICAgICAgW2RldmljZVNpemVdPVwiZGV2aWNlU2l6ZVwiXG4gICAgICAgICAgICAgICAgW2luZGV4XT1cImluZGV4XCJcbiAgICAgICAgICAgICAgICBbYWxsQ29sdW1uc109XCJhbGxDb2x1bW5zXCJcbiAgICAgICAgICAgICAgICBbdHlwZURlZklkXT1cInR5cGVEZWZJZFwiXG4gICAgICAgICAgICA+PC9ibnJjLWR5bmFtaWMtaXRlbS1jb21wb25lbnQ+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvdGQ+XG48L3RyPlxuPG5nLXRlbXBsYXRlICNkZXRhaWxzQ29sdW1uc1RlbXBsYXRlPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgIGRldGFpbHNGb3JtSXRlbXM7XG4gICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgJGltcGxpY2l0OiBkZXRhaWxzQ29sdW1ucyxcbiAgICAgICAgICAgICAgICBtbzogbW8sXG4gICAgICAgICAgICAgICAgaW5saW5lRWRpdE1vZGU6IGlubGluZUVkaXRNb2RlLFxuICAgICAgICAgICAgICAgIGxheW91dDk0OiBsYXlvdXQkXG4gICAgICAgICAgICB9XG4gICAgICAgIFwiXG4gICAgPjwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjZGV0YWlsc0Zvcm1JdGVtcyBsZXQtZGV0YWlsc0NvbHVtbnMgbGV0LW1vPVwibW9cIiBsZXQtaW5saW5lRWRpdE1vZGU9XCJpbmxpbmVFZGl0TW9kZVwiIGxldC1sYXlvdXQkPVwibGF5b3V0JFwiPlxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWl0ZW1zXCI+XG4gICAgICAgIDxkaXYgZmQtZm9ybS1pdGVtICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgZGV0YWlsc0NvbHVtbnM7IGxldCBjb2x1bW5JbmRleCA9IGluZGV4XCI+XG4gICAgICAgICAgICA8bGFiZWwgZmQtZm9ybS1sYWJlbCBmb3I9XCJpbnB1dC0yXCI+e3sgY29sdW1uLkNhcHRpb24gfX08L2xhYmVsPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgIGNvbHVtblRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGNvbHVtbixcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vOiBtbyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBjb2x1bW5JbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZUVkaXRNb2RlOiBpbmxpbmVFZGl0TW9kZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxheW91dDk0OiBsYXlvdXQkIHwgYXN5bmNcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbjx0ciAqbmdJZj1cImJydWxlQWN0aW9uTWVzc2FnZSAmJiBpbmxpbmVFZGl0TW9kZVwiIGZkLXRhYmxlLXJvdz5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic3RhdHVzSW5kaWNhdG9yXCI+PC9uZy1jb250YWluZXI+XG4gICAgPHRkIGZkLXRhYmxlLWNlbGwgW2F0dHIuY29sc3Bhbl09XCJjb2x1bW5zLmxlbmd0aCArIDFcIj5cbiAgICAgICAgPGZkLW1lc3NhZ2Utc3RyaXBcbiAgICAgICAgICAgICpuZ0lmPVwiYnJ1bGVBY3Rpb25NZXNzYWdlLk1lc3NhZ2VUeXBlID09PSAyXCJcbiAgICAgICAgICAgIFt0eXBlXT1cImJydWxlQWN0aW9uTWVzc2FnZS5NZXNzYWdlVHlwZSA9PT0gMiA/ICdlcnJvcicgOiAnaW5mb3JtYXRpb24nXCJcbiAgICAgICAgICAgIFtkaXNtaXNzaWJsZV09XCJmYWxzZVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIHt7IGJydWxlQWN0aW9uTWVzc2FnZS5NZXNzYWdlRXhwcmVzc2lvbiB9fVxuICAgICAgICA8L2ZkLW1lc3NhZ2Utc3RyaXA+XG4gICAgPC90ZD5cbjwvdHI+XG48dHIgKm5nSWY9XCJ3b3JrZmxvd1N0YXRlPy5lcnJvclRleHRcIiBmZC10YWJsZS1yb3c+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInN0YXR1c0luZGljYXRvclwiPjwvbmctY29udGFpbmVyPlxuICAgIDx0ZCBmZC10YWJsZS1jZWxsIFthdHRyLmNvbHNwYW5dPVwiY29sdW1ucy5sZW5ndGggKyA0XCI+XG4gICAgICAgIDxmZC1tZXNzYWdlLXN0cmlwIHR5cGU9XCJlcnJvclwiIFtkaXNtaXNzaWJsZV09XCJ0cnVlXCIgKG9uRGlzbWlzcyk9XCJyZXNldFdvcmtmbG93U3RhdGUuZW1pdCgpXCI+XG4gICAgICAgICAgICB7eyB3b3JrZmxvd1N0YXRlLmVycm9yVGV4dCB9fVxuICAgICAgICA8L2ZkLW1lc3NhZ2Utc3RyaXA+XG4gICAgPC90ZD5cbjwvdHI+XG48bmctdGVtcGxhdGVcbiAgICAjY29sdW1uVGVtcGxhdGVcbiAgICBsZXQtY29sdW1uXG4gICAgbGV0LW1vPVwibW9cIlxuICAgIGxldC1pbmRleD1cImluZGV4XCJcbiAgICBsZXQtaW5saW5lRWRpdE1vZGU9XCJpbmxpbmVFZGl0TW9kZVwiXG4gICAgbGV0LWxheW91dDk0PVwibGF5b3V0OTRcIlxuPlxuICAgIDxic3UtYmFyc2EtdGFibGUtY29sdW1uXG4gICAgICAgIFttb109XCJtb1wiXG4gICAgICAgIFtjb2x1bW5dPVwiY29sdW1uXCJcbiAgICAgICAgW3ZhbHVlXT1cImNvbHVtbiB8IGNvbHVtblZhbHVlOiBtb1wiXG4gICAgICAgIFtpY29uXT1cImNvbHVtbiB8IGNvbHVtbkljb246IG1vXCJcbiAgICAgICAgW2N1c3RvbUNvbXBvbmVudF09XCJjb2x1bW4uJEN1c3RvbUNvbXBvbmVudFwiXG4gICAgICAgIFtjb2x1bW5dPVwiY29sdW1uXCJcbiAgICAgICAgW2VkaXRNb2RlXT1cImlzQ2hlY2tlZCAmJiBpbmxpbmVFZGl0TW9kZSAmJiBhbGxvd0lubGluZUVkaXRcIlxuICAgICAgICBbaW5saW5lRWRpdE1vZGVdPVwiaW5saW5lRWRpdE1vZGVcIlxuICAgICAgICBbaXNDaGVja2VkXT1cImlzQ2hlY2tlZFwiXG4gICAgICAgIFtpbmRleF09XCJpbmRleFwiXG4gICAgICAgIFtmb3JtU2V0dGluZ109XCJmb3JtU2V0dGluZ1wiXG4gICAgICAgIFtydGxdPVwicnRsXCJcbiAgICAgICAgW2RldmljZU5hbWVdPVwiZGV2aWNlTmFtZVwiXG4gICAgICAgIFtkZXZpY2VTaXplXT1cImRldmljZVNpemVcIlxuICAgICAgICBbbGF5b3V0OTRdPVwibGF5b3V0OTRcIlxuICAgICAgICAoc2F2ZSk9XCJvbkVkaXRGb3JtUGFuZWxTYXZlKG51bGwpXCJcbiAgICAgICAgKGNhbmNlbCk9XCJvbkVkaXRGb3JtUGFuZWxDYW5jZWwobnVsbClcIlxuICAgICAgICAodGFiKT1cIm9uVGFiS2V5RG93bigkZXZlbnQsIGluZGV4KVwiXG4gICAgICAgIChjaGFuZ2VUb0VkaXRNb2RlKT1cIm9uQ29sdW1uQ2hhbmdlVG9FZGl0TW9kZSgkZXZlbnQsIGluZGV4KVwiXG4gICAgPlxuICAgIDwvYnN1LWJhcnNhLXRhYmxlLWNvbHVtbj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI3N0YXR1c0luZGljYXRvcj5cbiAgICA8YnN1LWJhcnNhLWNvbHVtbi1pbmRpY2F0b3JcbiAgICAgICAgW2hpZGVCb3JkZXJCb3R0b21dPVwiIWRldGFpbHNDb2xsYXBzZWRcIlxuICAgICAgICAqbmdJZj1cInJvd0luZGljYXRvclwiXG4gICAgICAgIFtiYWNrQ29sb3JdPVwicm93SW5kaWNhdG9yQ29sb3JcIlxuICAgID5cbiAgICA8L2JzdS1iYXJzYS1jb2x1bW4taW5kaWNhdG9yPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyc2EtdGFibGUtcm93LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXNhcC11aS9zcmMvbGliL2JhcnNhLXRhYmxlLXJvdy9iYXJzYS10YWJsZS1yb3cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvYmFyc2EtdGFibGUtcm93L2JhcnNhLXRhYmxlLXJvdy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLHVCQUF1QixFQUFFLEtBQUssRUFBdUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFHLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxnQkFBZ0IsRUFBK0IsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFTakgsTUFBTSxPQUFPLHNCQUF1QixTQUFRLDBCQUEwQjtJQVB0RTs7UUFRYSxxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFPbEMscUJBQWdCLEdBQUcsSUFBSSxDQUFDO0tBZTNCO0lBYkcsUUFBUTtRQUNKLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsdUJBQXVCLEdBQUc7WUFDM0IsR0FBRyxJQUFJLENBQUMsT0FBTztZQUNmLGVBQWUsRUFBRSxJQUFJLENBQUMsY0FBYztZQUNwQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsZ0JBQWdCO1NBQzNDLENBQUM7UUFDRixJQUFJLENBQUMsV0FBVyxLQUFoQixJQUFJLENBQUMsV0FBVyxHQUFLLFNBQVMsRUFBQztJQUNuQyxDQUFDO0lBQ0QsWUFBWTtRQUNSLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztRQUMvQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzlCLENBQUM7O21IQXRCUSxzQkFBc0I7dUdBQXRCLHNCQUFzQiwwT0FIcEIsQ0FBQyxnQkFBZ0IsQ0FBQyxxTENSakMsc3JhQXdWQTsyRkQ3VWEsc0JBQXNCO2tCQVBsQyxTQUFTOytCQUNJLHFCQUFxQixhQUdwQixDQUFDLGdCQUFnQixDQUFDLG1CQUNaLHVCQUF1QixDQUFDLE1BQU07OEJBR3RDLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDMkMsZ0JBQWdCO3NCQUFoRSxTQUFTO3VCQUFDLGtCQUFrQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIElucHV0LCBPbkluaXQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1vRm9yUmVwb3J0TW9kZWwgfSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XG5pbXBvcnQgeyBCYXNlVmlld0l0ZW1Qcm9wc0NvbXBvbmVudCwgRm9ybVBhbmVsU2VydmljZSwgRWpyYXlPbGdvLCBSZXBvcnRWaWV3Q29sdW1uIH0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2JzdS1iYXJzYS10YWJsZS1yb3cnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9iYXJzYS10YWJsZS1yb3cuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2JhcnNhLXRhYmxlLXJvdy5jb21wb25lbnQuc2NzcyddLFxuICAgIHByb3ZpZGVyczogW0Zvcm1QYW5lbFNlcnZpY2VdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEJhcnNhVGFibGVSb3dDb21wb25lbnQgZXh0ZW5kcyBCYXNlVmlld0l0ZW1Qcm9wc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQElucHV0KCkgc2hvd0RldGFpbHNJblJvdyA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIGRldGFpbHNDb21wb25lbnQ/OiBFanJheU9sZ287XG4gICAgQElucHV0KCkgZGV0YWlsc0NvbHVtbnM6IFJlcG9ydFZpZXdDb2x1bW5bXTtcbiAgICBASW5wdXQoKSBkZXRhaWxzVGV4dDogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGNvbHVtbkNvbXBvbmVudHM6IE1vRm9yUmVwb3J0TW9kZWwgfCBudWxsO1xuICAgIEBWaWV3Q2hpbGQoJ2RldGFpbHNGb3JtSXRlbXMnLCB7IHN0YXRpYzogdHJ1ZSB9KSBkZXRhaWxzRm9ybUl0ZW1zOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgZGV0YWlsc0NvbGxhcHNlZCA9IHRydWU7XG4gICAgZGV0YWlsc0NvbXBvbmVudFNldHRpbmc6IGFueTtcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgdGhpcy5kZXRhaWxzQ29tcG9uZW50U2V0dGluZyA9IHtcbiAgICAgICAgICAgIC4uLnRoaXMuc2V0dGluZyxcbiAgICAgICAgICAgICRkZXRhaWxzQ29sdW1uczogdGhpcy5kZXRhaWxzQ29sdW1ucyxcbiAgICAgICAgICAgICRkZXRhaWxzRm9ybUl0ZW1zOiB0aGlzLmRldGFpbHNGb3JtSXRlbXNcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5kZXRhaWxzVGV4dCB8fD0gJ0RldGFpbHMnO1xuICAgIH1cbiAgICBvblJvd0RldGFpbHMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGV0YWlsc0NvbGxhcHNlZCA9ICF0aGlzLmRldGFpbHNDb2xsYXBzZWQ7XG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxufVxuIiwiPHRyXG4gICAgW2NsYXNzLnJvdy1lcnJvcl09XCJoYXNFcnJvclwiXG4gICAgW2NsYXNzLnNob3dkZXRhaWxzLW9uXT1cIiFkZXRhaWxzQ29sbGFwc2VkXCJcbiAgICAjdHJFbFxuICAgICpuZ0lmPVwiKCFtby4kUGFyZW50IHx8IHBhcmVudEV4cGFuZGVkKSAmJiB2aXNpYmlsaXR5ICE9PSBmYWxzZVwiXG4gICAgZmQtdGFibGUtcm93XG4gICAgW2FjdGl2YWJsZV09XCJmYWxzZVwiXG4gICAgW2hvdmVyYWJsZV09XCJmYWxzZVwiXG4gICAgW2FwcGx5Q29uZGl0aW9uYWxGb3JtYXRzXT1cImNvbmRpdGlvbmFsRm9ybWF0c1wiXG4gICAgW3N0eWxlSW5kZXhdPVwic3R5bGVJbmRleFwiXG4gICAgW2hvc3RFbF09XCJ0ckVsXCJcbiAgICBbbWFpbl09XCJ0cnVlXCJcbiAgICBbZm9jdXNhYmxlXT1cInRydWVcIlxuICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwiaXNDaGVja2VkXCJcbiAgICBbZm9jdXNhYmxlXT1cIiFpbmxpbmVFZGl0TW9kZSB8fCAhYWxsb3dJbmxpbmVFZGl0XCJcbiAgICBbY2xhc3MuYnJ1bGUtbWVzc2FnZV09XCJicnVsZUFjdGlvbk1lc3NhZ2UgfHwgd29ya2Zsb3dTdGF0ZT8uZXJyb3JUZXh0XCJcbiAgICBbY2xhc3Mud29ya2Zsb3ctcGVuZGluZ109XCJ3b3JrZmxvd1N0YXRlPy5zdGF0ZSA9PT0gJ1BlbmRpbmcnXCJcbj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibW8uJEdyb3VwIHx8IG1vLiRHcm91cCA9PT0gJyc7IGVsc2UgcmVuZGVyUm93XCI+XG4gICAgICAgIDx0ZFxuICAgICAgICAgICAgW3N0eWxlLnBhZGRpbmctcmlnaHRdPVwicnRsID8gJ2NhbGMoIDFyZW0gKyAnICsgbGV2ZWwgKiAxMiArICdweCcgKyAnICknIDogJ2luaGVyaXQnXCJcbiAgICAgICAgICAgIFtzdHlsZS5wYWRkaW5nLWxlZnRdPVwiIXJ0bCA/ICdjYWxjKCAxcmVtICsgJyArIGxldmVsICogMTIgKyAncHgnICsgJyApJyA6ICdpbmhlcml0J1wiXG4gICAgICAgICAgICBmZC10YWJsZS1jZWxsXG4gICAgICAgICAgICBzdHlsZT1cImZvbnQtd2VpZ2h0OiBib2xkOyBmb250LXNpemU6IDEuMnJlbVwiXG4gICAgICAgICAgICBbYXR0ci5jb2xzcGFuXT1cImNhblZpZXcgPyBjb2x1bW5zQ291bnQgKyAxIDogY29sdW1uc0NvdW50XCJcbiAgICAgICAgICAgIGNsYXNzPVwicm93LWdyb3VwXCJcbiAgICAgICAgICAgIFtjbGFzcy5tb2JpbGUtbW9kZV09XCJzZWNvbmRhcnlDb2x1bW5zPy5sZW5ndGhcIlxuICAgICAgICAgICAgW2F0dHIubGV2ZWxdPVwibGV2ZWxcIlxuICAgICAgICAgICAgW2NsYXNzLnJvb3QtZ3JvdXBdPVwibGV2ZWwgPT09IDBcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgW2ZkVHlwZV09XCIndHJhbnNwYXJlbnQnXCJcbiAgICAgICAgICAgICAgICBbZ2x5cGhdPVwiZXhwYW5kZWQgIT09IGZhbHNlID8gJ25hdmlnYXRpb24tZG93bi1hcnJvdycgOiAnbmF2aWdhdGlvbi1sZWZ0LWFycm93J1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjZWxsLWV4cGFuZFwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlubGluZUVkaXRNb2RlXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25FeHBhbmRDbGljaygpXCJcbiAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgIHt7IG1vLiRHcm91cCB9fVxuICAgICAgICA8L3RkPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjcmVuZGVyUm93PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic3RhdHVzSW5kaWNhdG9yXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDx0ZCBmZC10YWJsZS1jZWxsICpuZ0lmPVwiaXNDaGVja0xpc3RcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAqbmdJZj1cIndvcmtmbG93U3RhdGU/LnN0YXRlID09PSAnUGVuZGluZydcIlxuICAgICAgICAgICAgICAgIHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAwOyByaWdodDogMDsgYm90dG9tOiAwOyB0b3A6IDBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxic3UtbWFzayBbdG9wXT1cIicyMHB4J1wiIFtzaXplXT1cIidzJ1wiPjwvYnN1LW1hc2s+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGZkLWNoZWNrYm94IFtuYW1lXT1cIm1vLiRDYXB0aW9uXCIgW25nTW9kZWxdPVwiaXNDaGVja2VkXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25Sb3dDaGVjaygpXCI+PC9mZC1jaGVja2JveD5cbiAgICAgICAgPC90ZD5cbiAgICAgICAgPHRkXG4gICAgICAgICAgICBmZC10YWJsZS1jZWxsXG4gICAgICAgICAgICBjbGFzcz1cInNpbmdsZS1zZWxlY3RcIlxuICAgICAgICAgICAgKm5nSWY9XCIhaXNDaGVja0xpc3RcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uUm93Q2hlY2soKVwiXG4gICAgICAgICAgICBzdHlsZT1cInBhZGRpbmc6IDA7IHRleHQtYWxpZ246IGNlbnRlclwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImlubGluZUVkaXRNb2RlICYmIGFsbG93SW5saW5lRWRpdCAmJiAoaGFzRXJyb3IgfHwgc2F2aW5nIHx8IHNhdmVkKTsgZWxzZSBpY29uU3RhdGVUZW1wbGF0ZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGZkLWljb24gKm5nSWY9XCJoYXNFcnJvclwiIGNsYXNzPVwic2F2ZS1lcnJvclwiIGdseXBoPVwiZXJyb3JcIj48L2ZkLWljb24+XG4gICAgICAgICAgICAgICAgPGZkLWJ1c3ktaW5kaWNhdG9yXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2F2aW5nXCJcbiAgICAgICAgICAgICAgICAgICAgW2xvYWRpbmddPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtzaXplXT1cIidzJ1wiXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlPVwicmVjb3JkIHNhdmluZ1wiXG4gICAgICAgICAgICAgICAgPjwvZmQtYnVzeS1pbmRpY2F0b3I+XG4gICAgICAgICAgICAgICAgPGZkLWljb24gKm5nSWY9XCJzYXZlZFwiIGNsYXNzPVwic2F2ZS1zdWNjZXNzXCIgZ2x5cGg9XCJhY2NlcHRcIj48L2ZkLWljb24+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaWNvblN0YXRlVGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPGZkLWljb24gKm5nSWY9XCJtby4kU3RhdGUgPT09ICdOZXcnICYmICFpc0NoZWNrZWRcIiBnbHlwaD1cImZhdm9yaXRlXCI+PC9mZC1pY29uPlxuICAgICAgICAgICAgICAgIDxmZC1pY29uICpuZ0lmPVwiaW5saW5lRWRpdE1vZGUgJiYgYWxsb3dJbmxpbmVFZGl0ICYmIGlzQ2hlY2tlZFwiIGdseXBoPVwiZWRpdFwiPjwvZmQtaWNvbj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvdGQ+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBjb2x1bW5zOyBsZXQgY29sdW1uSW5kZXggPSBpbmRleFwiPlxuICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIocm93SW5kaWNhdG9yICYmIGNvbHVtbkluZGV4ID4gMCkgfHwgIXJvd0luZGljYXRvclwiXG4gICAgICAgICAgICAgICAgW2F0dHIuZGJOYW1lXT1cImNvbHVtbi5OYW1lXCJcbiAgICAgICAgICAgICAgICAjdGRFbFxuICAgICAgICAgICAgICAgIGZkLXRhYmxlLWNlbGxcbiAgICAgICAgICAgICAgICBbYXBwbHlDb25kaXRpb25hbEZvcm1hdHNdPVwiY29uZGl0aW9uYWxGb3JtYXRzXCJcbiAgICAgICAgICAgICAgICBbaG9zdEVsXT1cInRkRWxcIlxuICAgICAgICAgICAgICAgIFtzdHlsZUluZGV4XT1cInN0eWxlSW5kZXhcIlxuICAgICAgICAgICAgICAgIFtkYk5hbWVdPVwiY29sdW1uLk5hbWVcIlxuICAgICAgICAgICAgICAgIFtmb2N1c2FibGVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvblJvd0NoZWNrKClcIlxuICAgICAgICAgICAgICAgIChkYmxjbGljayk9XCJvblJvd0NsaWNrKClcIlxuICAgICAgICAgICAgICAgIFtob3ZlcmFibGVdPVwiaW5saW5lRWRpdE1vZGUgJiYgYWxsb3dJbmxpbmVFZGl0XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5UZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGNvbHVtbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtbzogbW8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGNvbHVtbkluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZUVkaXRNb2RlOiBpbmxpbmVFZGl0TW9kZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXlvdXQ5NDogbGF5b3V0JCB8IGFzeW5jXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDx0ZFxuICAgICAgICAgICAgY2xhc3M9XCJjb2wtY29udGV4dC1tZW51XCJcbiAgICAgICAgICAgICpuZ0lmPVwiY29udGV4dE1lbnVJdGVtcz8ubGVuZ3RoICYmICghaW5saW5lRWRpdE1vZGUgfHwgIWFsbG93SW5saW5lRWRpdClcIlxuICAgICAgICAgICAgZmQtdGFibGUtY2VsbFxuICAgICAgICA+XG4gICAgICAgICAgICA8YnN1LXVsdi1jb250ZXh0LW1lbnVcbiAgICAgICAgICAgICAgICBbZGlzYWJsZU92ZXJmbG93Q29udGV4dE1lbnVdPVwiZGlzYWJsZU92ZXJmbG93Q29udGV4dE1lbnVcIlxuICAgICAgICAgICAgICAgIFtjb25kaXRpb25hbEZvcm1hdHNdPVwiY29uZGl0aW9uYWxGb3JtYXRzXCJcbiAgICAgICAgICAgICAgICBbc3R5bGVJbmRleF09XCJzdHlsZUluZGV4XCJcbiAgICAgICAgICAgICAgICBbbW9dPVwibW9cIlxuICAgICAgICAgICAgICAgIFtpbmRleF09XCJpbmRleFwiXG4gICAgICAgICAgICAgICAgKGNvbW1hbmRDbGljayk9XCJvblVsdkNvbW1hbmQoKVwiXG4gICAgICAgICAgICAgICAgW2RldmljZU5hbWVdPVwiZGV2aWNlTmFtZVwiXG4gICAgICAgICAgICAgICAgW21lbnVJdGVtc109XCJjb250ZXh0TWVudUl0ZW1zXCJcbiAgICAgICAgICAgICAgICBbYWxsQ29sdW1uc109XCJhbGxDb2x1bW5zXCJcbiAgICAgICAgICAgID48L2JzdS11bHYtY29udGV4dC1tZW51PlxuICAgICAgICA8L3RkPlxuICAgICAgICA8dGRcbiAgICAgICAgICAgIGNsYXNzPVwiY29sLWRldGFpbHNcIlxuICAgICAgICAgICAgZmQtdGFibGUtY2VsbFxuICAgICAgICAgICAgW2ZpdENvbnRlbnRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAqbmdJZj1cInNob3dEZXRhaWxzSW5Sb3cgJiYgKCFpbmxpbmVFZGl0TW9kZSB8fCAhYWxsb3dJbmxpbmVFZGl0KVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAqbmdJZj1cImRldGFpbHNDb21wb25lbnQ/LlNlbGVjdG9yIHx8IGNhcnRhYmxlUGFyYW1zPy5tb0lkXCJcbiAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwiKGRldGFpbHNDb2xsYXBzZWQgPyBkZXRhaWxzVGV4dCA6ICdIaWRlJykgfCBiYmJUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIFtmZFR5cGVdPVwiJ3RyYW5zcGFyZW50J1wiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uUm93RGV0YWlscygpXCJcbiAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgPC90ZD5cbiAgICAgICAgPHRkXG4gICAgICAgICAgICBjbGFzcz1cImNvbC12aWV3XCJcbiAgICAgICAgICAgIGZkLXRhYmxlLWNlbGxcbiAgICAgICAgICAgIFtmaXRDb250ZW50XT1cInRydWVcIlxuICAgICAgICAgICAgKm5nSWY9XCIhaGlkZU9wZW5JY29uICYmIGNhblZpZXcgJiYgKCFpbmxpbmVFZGl0TW9kZSB8fCAhYWxsb3dJbmxpbmVFZGl0KVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICBbZ2x5cGhdPVwibmF2aWdhdGlvbkFycm93XCJcbiAgICAgICAgICAgICAgICBbbmF2aWdhdGlvbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbZmRUeXBlXT1cIid0cmFuc3BhcmVudCdcIlxuICAgICAgICAgICAgICAgIHJvbGU9XCJwcmVzZW50YXRpb25cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvblJvd0NsaWNrKClcIlxuICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICA8L3RkPlxuICAgIDwvbmctdGVtcGxhdGU+XG48L3RyPlxuXG48dHJcbiAgICAjdHJFbFxuICAgICpuZ0lmPVwic2Vjb25kYXJ5Q29sdW1ucz8ubGVuZ3RoICYmICFtby4kR3JvdXAgJiYgKCFtby4kUGFyZW50IHx8IHBhcmVudEV4cGFuZGVkKSAmJiB2aXNpYmlsaXR5ICE9PSBmYWxzZVwiXG4gICAgZmQtdGFibGUtcm93XG4gICAgW3NlY29uZGFyeV09XCJ0cnVlXCJcbiAgICBjbGFzcz1cInNlY29uZGFyeS1yb3dcIlxuICAgIFtjbGFzcy5uby1lZGl0LW1vZGVdPVwiIWlubGluZUVkaXRNb2RlXCJcbiAgICBbYXBwbHlDb25kaXRpb25hbEZvcm1hdHNdPVwiY29uZGl0aW9uYWxGb3JtYXRzXCJcbiAgICBbc3R5bGVJbmRleF09XCJzdHlsZUluZGV4XCJcbiAgICBbaG9zdEVsXT1cInRyRWxcIlxuICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwiaXNDaGVja2VkICYmICFpbmxpbmVFZGl0TW9kZSA/IHRydWUgOiBmYWxzZVwiXG4+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInN0YXR1c0luZGljYXRvclwiPjwvbmctY29udGFpbmVyPlxuXG4gICAgPHRkIGZkLXRhYmxlLWNlbGwgY2xhc3M9XCJzaW5nbGUtc2VsZWN0XCIgKm5nSWY9XCIhaXNDaGVja0xpc3RcIiAoY2xpY2spPVwib25Sb3dDaGVjaygpXCI+PC90ZD5cbiAgICA8dGQgZmQtdGFibGUtY2VsbCBjb2xzcGFuPVwiMTAwJVwiIChjbGljayk9XCJvblJvd0NoZWNrKClcIj5cbiAgICAgICAgPHBcbiAgICAgICAgICAgICNwRWxcbiAgICAgICAgICAgIGZkLXRhYmxlLXRleHRcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2x1bW4gb2Ygc2Vjb25kYXJ5Q29sdW1uczsgbGV0IGNvbHVtbkluZGV4ID0gaW5kZXg7IHRyYWNrQnk6IF90cmFja0J5Q29sdW1uXCJcbiAgICAgICAgICAgIFthcHBseUNvbmRpdGlvbmFsRm9ybWF0c109XCJjb25kaXRpb25hbEZvcm1hdHNcIlxuICAgICAgICAgICAgW2hvc3RFbF09XCJwRWxcIlxuICAgICAgICAgICAgW3N0eWxlSW5kZXhdPVwic3R5bGVJbmRleFwiXG4gICAgICAgICAgICBbZGJOYW1lXT1cImNvbHVtbi5OYW1lXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGxhYmVsIGZkLWZvcm0tbGFiZWw+e3sgY29sdW1uLkNhcHRpb24gfX0gOjwvbGFiZWw+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uVGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY29sdW1uLFxuICAgICAgICAgICAgICAgICAgICAgICAgbW86IG1vLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGNvbHVtbkluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lRWRpdE1vZGU6IGlubGluZUVkaXRNb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGF5b3V0OTQ6IGxheW91dCQgfCBhc3luY1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9wPlxuICAgIDwvdGQ+XG48L3RyPlxuPHRyICpuZ0lmPVwiIWRldGFpbHNDb2xsYXBzZWQgJiYgY2FydGFibGVQYXJhbXM/Lm1vSWRcIiBmZC10YWJsZS1yb3cgY2xhc3M9XCJzaG93ZGV0YWlsc1wiIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwiaXNDaGVja2VkXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInN0YXR1c0luZGljYXRvclwiPjwvbmctY29udGFpbmVyPlxuXG4gICAgPHRkIGZkLXRhYmxlLWNlbGwgKGNsaWNrKT1cIm9uUm93Q2hlY2soKVwiPjwvdGQ+XG4gICAgPHRkXG4gICAgICAgIChjbGljayk9XCJvblJvd0NoZWNrKClcIlxuICAgICAgICBmZC10YWJsZS1jZWxsXG4gICAgICAgIFthdHRyLmNvbHNwYW5dPVwiXG4gICAgICAgICAgICBjb2x1bW5zLmxlbmd0aCArIDEgKyAoY29udGV4dE1lbnVJdGVtcy5sZW5ndGggPyAxIDogMCkgKyAoY2FuVmlldyA/IDEgOiAwKSArIChzaG93RGV0YWlsc0luUm93ID8gMSA6IDApXG4gICAgICAgIFwiXG4gICAgPlxuICAgICAgICA8bmctY29udGFpbmVyPlxuICAgICAgICAgICAgPGJucmMtZm9ybVxuICAgICAgICAgICAgICAgIChjbGljayk9XCJPbkNhcnRhYmxlRm9ybUNsaWNrKCRldmVudClcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2FydGFibGUtdGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgIFtwYXJhbXNdPVwiY2FydGFibGVQYXJhbXNcIlxuICAgICAgICAgICAgICAgIChmb3JtQ2xvc2UpPVwib25DYXJ0YWJsZUZvcm1DbG9zZWQoKVwiXG4gICAgICAgICAgICA+PC9ibnJjLWZvcm0+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvdGQ+XG48L3RyPlxuPHRyXG4gICAgKm5nSWY9XCIhZGV0YWlsc0NvbGxhcHNlZCAmJiBkZXRhaWxzQ29tcG9uZW50Py5TZWxlY3RvclwiXG4gICAgZmQtdGFibGUtcm93XG4gICAgY2xhc3M9XCJzaG93ZGV0YWlsc1wiXG4gICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJpc0NoZWNrZWRcIlxuPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzdGF0dXNJbmRpY2F0b3JcIj48L25nLWNvbnRhaW5lcj5cblxuICAgIDx0ZCBmZC10YWJsZS1jZWxsIChjbGljayk9XCJvblJvd0NoZWNrKClcIj48L3RkPlxuICAgIDx0ZFxuICAgICAgICAoY2xpY2spPVwib25Sb3dDaGVjaygpXCJcbiAgICAgICAgZmQtdGFibGUtY2VsbFxuICAgICAgICBbYXR0ci5jb2xzcGFuXT1cIlxuICAgICAgICAgICAgY29sdW1ucy5sZW5ndGggKyAxICsgKGNvbnRleHRNZW51SXRlbXMubGVuZ3RoID8gMSA6IDApICsgKGNhblZpZXcgPyAxIDogMCkgKyAoc2hvd0RldGFpbHNJblJvdyA/IDEgOiAwKVxuICAgICAgICBcIlxuICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRldGFpbHNDb2x1bW5zVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRldGFpbHNDb21wb25lbnQgJiYgZGV0YWlsc0NvbXBvbmVudC5TZWxlY3RvclwiPlxuICAgICAgICAgICAgPGJucmMtZHluYW1pYy1pdGVtLWNvbXBvbmVudFxuICAgICAgICAgICAgICAgIFtjb21wb25lbnRdPVwiZGV0YWlsc0NvbXBvbmVudFwiXG4gICAgICAgICAgICAgICAgW21vXT1cIm1vXCJcbiAgICAgICAgICAgICAgICBbaXNDaGVja2VkXT1cImlzQ2hlY2tlZFwiXG4gICAgICAgICAgICAgICAgW3NldHRpbmddPVwiZGV0YWlsc0NvbXBvbmVudFNldHRpbmdcIlxuICAgICAgICAgICAgICAgIFtwYXJhbWV0ZXJzXT1cImRldGFpbHNDb21wb25lbnQuU2V0dGluZ3NcIlxuICAgICAgICAgICAgICAgIFtlZGl0TW9kZV09XCJpbmxpbmVFZGl0TW9kZVwiXG4gICAgICAgICAgICAgICAgW2Zvcm1TZXR0aW5nXT1cImZvcm1TZXR0aW5nXCJcbiAgICAgICAgICAgICAgICBbcnRsXT1cInJ0bFwiXG4gICAgICAgICAgICAgICAgW2RldmljZU5hbWVdPVwiZGV2aWNlTmFtZVwiXG4gICAgICAgICAgICAgICAgW2RldmljZVNpemVdPVwiZGV2aWNlU2l6ZVwiXG4gICAgICAgICAgICAgICAgW2luZGV4XT1cImluZGV4XCJcbiAgICAgICAgICAgICAgICBbYWxsQ29sdW1uc109XCJhbGxDb2x1bW5zXCJcbiAgICAgICAgICAgICAgICBbdHlwZURlZklkXT1cInR5cGVEZWZJZFwiXG4gICAgICAgICAgICA+PC9ibnJjLWR5bmFtaWMtaXRlbS1jb21wb25lbnQ+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvdGQ+XG48L3RyPlxuPG5nLXRlbXBsYXRlICNkZXRhaWxzQ29sdW1uc1RlbXBsYXRlPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgIGRldGFpbHNGb3JtSXRlbXM7XG4gICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgJGltcGxpY2l0OiBkZXRhaWxzQ29sdW1ucyxcbiAgICAgICAgICAgICAgICBtbzogbW8sXG4gICAgICAgICAgICAgICAgaW5saW5lRWRpdE1vZGU6IGlubGluZUVkaXRNb2RlLFxuICAgICAgICAgICAgICAgIGxheW91dDk0OiBsYXlvdXQkXG4gICAgICAgICAgICB9XG4gICAgICAgIFwiXG4gICAgPjwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjZGV0YWlsc0Zvcm1JdGVtcyBsZXQtZGV0YWlsc0NvbHVtbnMgbGV0LW1vPVwibW9cIiBsZXQtaW5saW5lRWRpdE1vZGU9XCJpbmxpbmVFZGl0TW9kZVwiIGxldC1sYXlvdXQkPVwibGF5b3V0JFwiPlxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWl0ZW1zXCI+XG4gICAgICAgIDxkaXYgZmQtZm9ybS1pdGVtICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgZGV0YWlsc0NvbHVtbnM7IGxldCBjb2x1bW5JbmRleCA9IGluZGV4XCI+XG4gICAgICAgICAgICA8bGFiZWwgZmQtZm9ybS1sYWJlbCBmb3I9XCJpbnB1dC0yXCI+e3sgY29sdW1uLkNhcHRpb24gfX08L2xhYmVsPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgIGNvbHVtblRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGNvbHVtbixcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vOiBtbyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBjb2x1bW5JbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZUVkaXRNb2RlOiBpbmxpbmVFZGl0TW9kZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxheW91dDk0OiBsYXlvdXQkIHwgYXN5bmNcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbjx0ciAqbmdJZj1cImJydWxlQWN0aW9uTWVzc2FnZSAmJiBpbmxpbmVFZGl0TW9kZVwiIGZkLXRhYmxlLXJvdz5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic3RhdHVzSW5kaWNhdG9yXCI+PC9uZy1jb250YWluZXI+XG4gICAgPHRkIGZkLXRhYmxlLWNlbGwgW2F0dHIuY29sc3Bhbl09XCJjb2x1bW5zLmxlbmd0aCArIDFcIj5cbiAgICAgICAgPGZkLW1lc3NhZ2Utc3RyaXBcbiAgICAgICAgICAgICpuZ0lmPVwiYnJ1bGVBY3Rpb25NZXNzYWdlLk1lc3NhZ2VUeXBlID09PSAyXCJcbiAgICAgICAgICAgIFt0eXBlXT1cImJydWxlQWN0aW9uTWVzc2FnZS5NZXNzYWdlVHlwZSA9PT0gMiA/ICdlcnJvcicgOiAnaW5mb3JtYXRpb24nXCJcbiAgICAgICAgICAgIFtkaXNtaXNzaWJsZV09XCJmYWxzZVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIHt7IGJydWxlQWN0aW9uTWVzc2FnZS5NZXNzYWdlRXhwcmVzc2lvbiB9fVxuICAgICAgICA8L2ZkLW1lc3NhZ2Utc3RyaXA+XG4gICAgPC90ZD5cbjwvdHI+XG48dHIgKm5nSWY9XCJ3b3JrZmxvd1N0YXRlPy5lcnJvclRleHRcIiBmZC10YWJsZS1yb3c+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInN0YXR1c0luZGljYXRvclwiPjwvbmctY29udGFpbmVyPlxuICAgIDx0ZCBmZC10YWJsZS1jZWxsIFthdHRyLmNvbHNwYW5dPVwiY29sdW1ucy5sZW5ndGggKyA0XCI+XG4gICAgICAgIDxmZC1tZXNzYWdlLXN0cmlwIHR5cGU9XCJlcnJvclwiIFtkaXNtaXNzaWJsZV09XCJ0cnVlXCIgKG9uRGlzbWlzcyk9XCJyZXNldFdvcmtmbG93U3RhdGUuZW1pdCgpXCI+XG4gICAgICAgICAgICB7eyB3b3JrZmxvd1N0YXRlLmVycm9yVGV4dCB9fVxuICAgICAgICA8L2ZkLW1lc3NhZ2Utc3RyaXA+XG4gICAgPC90ZD5cbjwvdHI+XG48bmctdGVtcGxhdGVcbiAgICAjY29sdW1uVGVtcGxhdGVcbiAgICBsZXQtY29sdW1uXG4gICAgbGV0LW1vPVwibW9cIlxuICAgIGxldC1pbmRleD1cImluZGV4XCJcbiAgICBsZXQtaW5saW5lRWRpdE1vZGU9XCJpbmxpbmVFZGl0TW9kZVwiXG4gICAgbGV0LWxheW91dDk0PVwibGF5b3V0OTRcIlxuPlxuICAgIDxic3UtYmFyc2EtdGFibGUtY29sdW1uXG4gICAgICAgIFttb109XCJtb1wiXG4gICAgICAgIFtjb2x1bW5dPVwiY29sdW1uXCJcbiAgICAgICAgW3ZhbHVlXT1cImNvbHVtbiB8IGNvbHVtblZhbHVlOiBtb1wiXG4gICAgICAgIFtpY29uXT1cImNvbHVtbiB8IGNvbHVtbkljb246IG1vXCJcbiAgICAgICAgW2N1c3RvbUNvbXBvbmVudF09XCJjb2x1bW4uJEN1c3RvbUNvbXBvbmVudFwiXG4gICAgICAgIFtjb2x1bW5dPVwiY29sdW1uXCJcbiAgICAgICAgW2VkaXRNb2RlXT1cImlzQ2hlY2tlZCAmJiBpbmxpbmVFZGl0TW9kZSAmJiBhbGxvd0lubGluZUVkaXRcIlxuICAgICAgICBbaW5saW5lRWRpdE1vZGVdPVwiaW5saW5lRWRpdE1vZGVcIlxuICAgICAgICBbaXNDaGVja2VkXT1cImlzQ2hlY2tlZFwiXG4gICAgICAgIFtpbmRleF09XCJpbmRleFwiXG4gICAgICAgIFtmb3JtU2V0dGluZ109XCJmb3JtU2V0dGluZ1wiXG4gICAgICAgIFtydGxdPVwicnRsXCJcbiAgICAgICAgW2RldmljZU5hbWVdPVwiZGV2aWNlTmFtZVwiXG4gICAgICAgIFtkZXZpY2VTaXplXT1cImRldmljZVNpemVcIlxuICAgICAgICBbbGF5b3V0OTRdPVwibGF5b3V0OTRcIlxuICAgICAgICAoc2F2ZSk9XCJvbkVkaXRGb3JtUGFuZWxTYXZlKG51bGwpXCJcbiAgICAgICAgKGNhbmNlbCk9XCJvbkVkaXRGb3JtUGFuZWxDYW5jZWwobnVsbClcIlxuICAgICAgICAodGFiKT1cIm9uVGFiS2V5RG93bigkZXZlbnQsIGluZGV4KVwiXG4gICAgICAgIChjaGFuZ2VUb0VkaXRNb2RlKT1cIm9uQ29sdW1uQ2hhbmdlVG9FZGl0TW9kZSgkZXZlbnQsIGluZGV4KVwiXG4gICAgPlxuICAgIDwvYnN1LWJhcnNhLXRhYmxlLWNvbHVtbj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI3N0YXR1c0luZGljYXRvcj5cbiAgICA8YnN1LWJhcnNhLWNvbHVtbi1pbmRpY2F0b3JcbiAgICAgICAgW2hpZGVCb3JkZXJCb3R0b21dPVwiIWRldGFpbHNDb2xsYXBzZWRcIlxuICAgICAgICAqbmdJZj1cInJvd0luZGljYXRvclwiXG4gICAgICAgIFtiYWNrQ29sb3JdPVwicm93SW5kaWNhdG9yQ29sb3JcIlxuICAgID5cbiAgICA8L2JzdS1iYXJzYS1jb2x1bW4taW5kaWNhdG9yPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -85,10 +85,10 @@ export class BarsaTreeItemComponent extends BaseViewItemPropsComponent {
85
85
  }
86
86
  }
87
87
  BarsaTreeItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BarsaTreeItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
88
- BarsaTreeItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: BarsaTreeItemComponent, selector: "bsu-barsa-tree-item", inputs: { node: "node", selectedNode: "selectedNode", relationList: "relationList", hasDragDrop: "hasDragDrop", hasArrowIcon: "hasArrowIcon", collapseIcon: "collapseIcon", loading: "loading", hasChildren: "hasChildren", isExpand: "isExpand", children: "children", parentNode: "parentNode", text: "text", isHetro: "isHetro" }, outputs: { createNew: "createNew", select: "select", checkChange: "checkChange", viewClick: "viewClick", loadChildren: "loadChildren", dragMoved: "dragMoved" }, usesInheritance: true, ngImport: i0, template: "<li\n fd-list-item\n #liEl\n [applyConditionalFormats]=\"conditionalFormats\"\n [styleIndex]=\"styleIndex\"\n [hostEl]=\"liEl\"\n [focusable]=\"true\"\n [attr.level]=\"level\"\n [class.root-group]=\"level === 1\"\n [selected]=\"isChecked\"\n (dblclick)=\"onNodeViewClick()\"\n cdkDrag\n [cdkDragData]=\"node.Data.Id\"\n (cdkDragMoved)=\"onDragMoved($event)\"\n (click)=\"onListItemClick(liEl, $event)\"\n>\n <div (click)=\"onRowCheck()\" class=\"spacer\" [style.width]=\"(level - 1) * 4 + 'rem'\"></div>\n <fd-icon *ngIf=\"hasDragDrop && !isHetro\" glyph=\"grip\" font=\"BusinessSuiteInAppSymbols\" cdkDragHandle></fd-icon>\n <fd-checkbox\n *ngIf=\"inDialog && isMultiSelect\"\n [name]=\"node.Data.$Caption\"\n [ngModel]=\"isChecked\"\n (ngModelChange)=\"onCheckbox($event)\"\n ></fd-checkbox>\n\n <div (click)=\"onRowCheck()\" style=\"display: flex; width: 100%; justify-content: space-between\">\n <div style=\"display: flex\">\n <ng-container *ngIf=\"hasArrowIcon\">\n <div class=\"arrow-container\" *ngIf=\"hasChildren; else emptyBtn\">\n <button\n [attr.rtl]=\"rtl\"\n fd-button\n fdType=\"transparent\"\n [glyph]=\"hasChildren ? (isExpand ? 'less' : collapseIcon) : ''\"\n (click)=\"onLoadChildren($event)\"\n (dblclick)=\"onExpandDblClick($event)\"\n ></button>\n </div>\n <fd-busy-indicator\n style=\"display: flex; align-items: center; width: 2rem\"\n *ngIf=\"loading\"\n size=\"s\"\n [loading]=\"true\"\n ></fd-busy-indicator>\n </ng-container>\n <div style=\"display: flex; flex: unset; align-items: center\" fd-list-title [focusable]=\"true\">\n <img\n *ngIf=\"!hideIcon\"\n [src]=\"node.icon\"\n [style.padding-right.px]=\"!rtl ? 5 : null\"\n [style.padding-left.px]=\"rtl ? 5 : null\"\n />\n <span>{{ text }}</span>\n <span *ngIf=\"children\">{{ ' ( ' + children.length + ' )' }}</span>\n </div>\n </div>\n <i\n *ngIf=\"contextMenuItems && contextMenuItems.length > 0\"\n ulvContextMenu\n [allColumns]=\"allColumns\"\n [menuItems]=\"contextMenuItems\"\n [conditionalFormats]=\"conditionalFormats\"\n [styleIndex]=\"styleIndex\"\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\n [mo]=\"node.Data\"\n [index]=\"index\"\n (commandClick)=\"onUlvCommand()\"\n [deviceName]=\"deviceName\"\n ></i>\n <bsu-htree-create-new\n *ngIf=\"access?.Add !== false && !inDialog\"\n [node]=\"node\"\n [relationList]=\"relationList\"\n (createNew)=\"onCreateNew($event)\"\n ></bsu-htree-create-new>\n </div>\n <fdp-button\n *ngIf=\"access?.View && !showOkCancelButtons && deviceName !== 'desktop'\"\n [glyph]=\"navigationArrow\"\n buttonType=\"transparent\"\n (click)=\"onNodeViewClick()\"\n ></fdp-button>\n\n <bsu-barsa-tree-item\n *cdkDragPreview\n [node]=\"node\"\n [rtl]=\"rtl\"\n [selectedNode]=\"selectedNode\"\n [hasArrowIcon]=\"false\"\n ></bsu-barsa-tree-item>\n</li>\n<ng-template #emptyBtn>\n <div class=\"empty-container\" *ngIf=\"!parentNode?.hasOneDepthLevel\" (click)=\"onRowCheck()\">\n <button fd-button></button>\n </div>\n</ng-template>\n", styles: [":host{display:block}li{column-gap:8px}li .cdk-drag-handle{opacity:.5;cursor:move}li .spacer{height:100%}li .arrow-container,li .empty-container{display:flex;width:28px;align-items:center;justify-content:center}li .arrow-container fd-icon,li .empty-container fd-icon{cursor:pointer;width:100%;height:100%;text-align:center}li .arrow-container button[rtl=true],li .empty-container button[rtl=true]{margin-left:5px}li .arrow-container button[rtl=false],li .empty-container button[rtl=false]{margin-right:5px}li .empty-container{visibility:hidden!important}.cdk-drag{cursor:auto}.tree-icon-children{cursor:pointer}\n"], dependencies: [{ 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.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i3.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "directive", type: i3.CdkDragPreview, selector: "ng-template[cdkDragPreview]", inputs: ["data", "matchSize"] }, { kind: "component", type: i4.BusyIndicatorComponent, selector: "fd-busy-indicator", inputs: ["loading", "size", "block", "ariaLabel", "title", "label", "ariaLive"] }, { kind: "component", type: i5.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i6.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: i7.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "class", "ariaLabel"] }, { kind: "component", type: i8.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "ariaDescribedBy", "noData", "action", "interactive", "growing", "counter", "unread", "selectedListItemScreenReaderText", "navigatedListItemScreenReaderText", "navigatableListItemScreenReaderText"], outputs: ["keyDown"] }, { kind: "directive", type: i8.ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "component", type: i9.ButtonComponent, selector: "fdp-button", inputs: ["glyphPosition", "label", "glyph", "buttonType", "title", "ariaSelected", "ariaDisabled", "ariaExpanded", "ariaControlsId", "ariaPressed", "name", "type", "value"], outputs: ["buttonClicked"] }, { kind: "component", type: i10.UlvContextMenuComponent, selector: "bsu-ulv-context-menu,[ulvContextMenu]", inputs: ["onlyOverflow", "deviceName", "menuItems", "allColumns", "index", "mo", "styleIndex", "conditionalFormats", "disableOverflowContextMenu", "footerMode"], outputs: ["commandClick"] }, { kind: "component", type: BarsaTreeItemComponent, selector: "bsu-barsa-tree-item", inputs: ["node", "selectedNode", "relationList", "hasDragDrop", "hasArrowIcon", "collapseIcon", "loading", "hasChildren", "isExpand", "children", "parentNode", "text", "isHetro"], outputs: ["createNew", "select", "checkChange", "viewClick", "loadChildren", "dragMoved"] }, { kind: "component", type: i11.HtreeCreateNewComponent, selector: "bsu-htree-create-new", inputs: ["relationList", "node"], outputs: ["createNew"] }, { kind: "directive", type: i12.ApplyConditionalFormatsDirective, selector: "[applyConditionalFormats]", inputs: ["applyConditionalFormats", "styleIndex", "hostEl", "dbName"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
88
+ BarsaTreeItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: BarsaTreeItemComponent, selector: "bsu-barsa-tree-item", inputs: { node: "node", selectedNode: "selectedNode", relationList: "relationList", hasDragDrop: "hasDragDrop", hasArrowIcon: "hasArrowIcon", collapseIcon: "collapseIcon", loading: "loading", hasChildren: "hasChildren", isExpand: "isExpand", children: "children", parentNode: "parentNode", text: "text", isHetro: "isHetro" }, outputs: { createNew: "createNew", select: "select", checkChange: "checkChange", viewClick: "viewClick", loadChildren: "loadChildren", dragMoved: "dragMoved" }, usesInheritance: true, ngImport: i0, template: "<li\n fd-list-item\n #liEl\n [applyConditionalFormats]=\"conditionalFormats\"\n [styleIndex]=\"styleIndex\"\n [hostEl]=\"liEl\"\n [focusable]=\"true\"\n [attr.level]=\"level\"\n [class.root-group]=\"level === 1\"\n [selected]=\"isChecked\"\n (dblclick)=\"onNodeViewClick()\"\n cdkDrag\n [cdkDragData]=\"node.Data.Id\"\n (cdkDragMoved)=\"onDragMoved($event)\"\n (click)=\"onListItemClick(liEl, $event)\"\n>\n <div (click)=\"onRowCheck()\" class=\"spacer\" [style.width]=\"(level - 1) * 4 + 'rem'\"></div>\n <fd-icon *ngIf=\"hasDragDrop && !isHetro\" glyph=\"grip\" font=\"BusinessSuiteInAppSymbols\" cdkDragHandle></fd-icon>\n <fd-checkbox\n *ngIf=\"inDialog && isMultiSelect\"\n [name]=\"node.Data.$Caption\"\n [ngModel]=\"isChecked\"\n (ngModelChange)=\"onCheckbox($event)\"\n ></fd-checkbox>\n\n <div (click)=\"onRowCheck()\" style=\"display: flex; width: 100%; justify-content: space-between\">\n <div style=\"display: flex; flex: 1\">\n <ng-container *ngIf=\"hasArrowIcon\">\n <div class=\"arrow-container\" *ngIf=\"hasChildren; else emptyBtn\">\n <button\n [attr.rtl]=\"rtl\"\n fd-button\n fdType=\"transparent\"\n [glyph]=\"hasChildren ? (isExpand ? 'less' : collapseIcon) : ''\"\n (click)=\"onLoadChildren($event)\"\n (dblclick)=\"onExpandDblClick($event)\"\n ></button>\n </div>\n <fd-busy-indicator\n style=\"display: flex; align-items: center; width: 2rem\"\n *ngIf=\"loading\"\n size=\"s\"\n [loading]=\"true\"\n ></fd-busy-indicator>\n </ng-container>\n <div style=\"display: flex; flex: unset; align-items: center\" fd-list-title [focusable]=\"true\">\n <img\n *ngIf=\"!hideIcon\"\n [src]=\"node.icon\"\n [style.padding-right.px]=\"!rtl ? 5 : null\"\n [style.padding-left.px]=\"rtl ? 5 : null\"\n />\n <span>{{ text }}</span>\n <span *ngIf=\"children\">{{ ' ( ' + children.length + ' )' }}</span>\n </div>\n </div>\n <i\n *ngIf=\"contextMenuItems && contextMenuItems.length > 0\"\n ulvContextMenu\n [allColumns]=\"allColumns\"\n [menuItems]=\"contextMenuItems\"\n [conditionalFormats]=\"conditionalFormats\"\n [styleIndex]=\"styleIndex\"\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\n [mo]=\"node.Data\"\n [index]=\"index\"\n (commandClick)=\"onUlvCommand()\"\n [deviceName]=\"deviceName\"\n ></i>\n <bsu-htree-create-new\n *ngIf=\"access?.Add !== false && !inDialog\"\n [node]=\"node\"\n [relationList]=\"relationList\"\n (createNew)=\"onCreateNew($event)\"\n ></bsu-htree-create-new>\n </div>\n <fdp-button\n *ngIf=\"access?.View && !showOkCancelButtons && deviceName !== 'desktop'\"\n [glyph]=\"navigationArrow\"\n buttonType=\"transparent\"\n (click)=\"onNodeViewClick()\"\n ></fdp-button>\n\n <bsu-barsa-tree-item\n *cdkDragPreview\n [node]=\"node\"\n [rtl]=\"rtl\"\n [selectedNode]=\"selectedNode\"\n [hasArrowIcon]=\"false\"\n ></bsu-barsa-tree-item>\n</li>\n<ng-template #emptyBtn>\n <div class=\"empty-container\" *ngIf=\"!parentNode?.hasOneDepthLevel\" (click)=\"onRowCheck()\">\n <button fd-button></button>\n </div>\n</ng-template>\n", styles: [":host{display:block}li{column-gap:8px}li .cdk-drag-handle{opacity:.5;cursor:move}li .spacer{height:100%}li .arrow-container,li .empty-container{display:flex;width:28px;align-items:center;justify-content:center}li .arrow-container fd-icon,li .empty-container fd-icon{cursor:pointer;width:100%;height:100%;text-align:center}li .arrow-container button[rtl=true],li .empty-container button[rtl=true]{margin-left:5px}li .arrow-container button[rtl=false],li .empty-container button[rtl=false]{margin-right:5px}li .empty-container{visibility:hidden!important}.cdk-drag{cursor:auto}.tree-icon-children{cursor:pointer}\n"], dependencies: [{ 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.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i3.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "directive", type: i3.CdkDragPreview, selector: "ng-template[cdkDragPreview]", inputs: ["data", "matchSize"] }, { kind: "component", type: i4.BusyIndicatorComponent, selector: "fd-busy-indicator", inputs: ["loading", "size", "block", "ariaLabel", "title", "label", "ariaLive"] }, { kind: "component", type: i5.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i6.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: i7.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "class", "ariaLabel"] }, { kind: "component", type: i8.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "ariaDescribedBy", "noData", "action", "interactive", "growing", "counter", "unread", "selectedListItemScreenReaderText", "navigatedListItemScreenReaderText", "navigatableListItemScreenReaderText"], outputs: ["keyDown"] }, { kind: "directive", type: i8.ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "component", type: i9.ButtonComponent, selector: "fdp-button", inputs: ["glyphPosition", "label", "glyph", "buttonType", "title", "ariaSelected", "ariaDisabled", "ariaExpanded", "ariaControlsId", "ariaPressed", "name", "type", "value"], outputs: ["buttonClicked"] }, { kind: "component", type: i10.UlvContextMenuComponent, selector: "bsu-ulv-context-menu,[ulvContextMenu]", inputs: ["onlyOverflow", "deviceName", "menuItems", "allColumns", "index", "mo", "styleIndex", "conditionalFormats", "disableOverflowContextMenu", "footerMode"], outputs: ["commandClick"] }, { kind: "component", type: BarsaTreeItemComponent, selector: "bsu-barsa-tree-item", inputs: ["node", "selectedNode", "relationList", "hasDragDrop", "hasArrowIcon", "collapseIcon", "loading", "hasChildren", "isExpand", "children", "parentNode", "text", "isHetro"], outputs: ["createNew", "select", "checkChange", "viewClick", "loadChildren", "dragMoved"] }, { kind: "component", type: i11.HtreeCreateNewComponent, selector: "bsu-htree-create-new", inputs: ["relationList", "node"], outputs: ["createNew"] }, { kind: "directive", type: i12.ApplyConditionalFormatsDirective, selector: "[applyConditionalFormats]", inputs: ["applyConditionalFormats", "styleIndex", "hostEl", "dbName"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
89
89
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BarsaTreeItemComponent, decorators: [{
90
90
  type: Component,
91
- args: [{ selector: 'bsu-barsa-tree-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<li\n fd-list-item\n #liEl\n [applyConditionalFormats]=\"conditionalFormats\"\n [styleIndex]=\"styleIndex\"\n [hostEl]=\"liEl\"\n [focusable]=\"true\"\n [attr.level]=\"level\"\n [class.root-group]=\"level === 1\"\n [selected]=\"isChecked\"\n (dblclick)=\"onNodeViewClick()\"\n cdkDrag\n [cdkDragData]=\"node.Data.Id\"\n (cdkDragMoved)=\"onDragMoved($event)\"\n (click)=\"onListItemClick(liEl, $event)\"\n>\n <div (click)=\"onRowCheck()\" class=\"spacer\" [style.width]=\"(level - 1) * 4 + 'rem'\"></div>\n <fd-icon *ngIf=\"hasDragDrop && !isHetro\" glyph=\"grip\" font=\"BusinessSuiteInAppSymbols\" cdkDragHandle></fd-icon>\n <fd-checkbox\n *ngIf=\"inDialog && isMultiSelect\"\n [name]=\"node.Data.$Caption\"\n [ngModel]=\"isChecked\"\n (ngModelChange)=\"onCheckbox($event)\"\n ></fd-checkbox>\n\n <div (click)=\"onRowCheck()\" style=\"display: flex; width: 100%; justify-content: space-between\">\n <div style=\"display: flex\">\n <ng-container *ngIf=\"hasArrowIcon\">\n <div class=\"arrow-container\" *ngIf=\"hasChildren; else emptyBtn\">\n <button\n [attr.rtl]=\"rtl\"\n fd-button\n fdType=\"transparent\"\n [glyph]=\"hasChildren ? (isExpand ? 'less' : collapseIcon) : ''\"\n (click)=\"onLoadChildren($event)\"\n (dblclick)=\"onExpandDblClick($event)\"\n ></button>\n </div>\n <fd-busy-indicator\n style=\"display: flex; align-items: center; width: 2rem\"\n *ngIf=\"loading\"\n size=\"s\"\n [loading]=\"true\"\n ></fd-busy-indicator>\n </ng-container>\n <div style=\"display: flex; flex: unset; align-items: center\" fd-list-title [focusable]=\"true\">\n <img\n *ngIf=\"!hideIcon\"\n [src]=\"node.icon\"\n [style.padding-right.px]=\"!rtl ? 5 : null\"\n [style.padding-left.px]=\"rtl ? 5 : null\"\n />\n <span>{{ text }}</span>\n <span *ngIf=\"children\">{{ ' ( ' + children.length + ' )' }}</span>\n </div>\n </div>\n <i\n *ngIf=\"contextMenuItems && contextMenuItems.length > 0\"\n ulvContextMenu\n [allColumns]=\"allColumns\"\n [menuItems]=\"contextMenuItems\"\n [conditionalFormats]=\"conditionalFormats\"\n [styleIndex]=\"styleIndex\"\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\n [mo]=\"node.Data\"\n [index]=\"index\"\n (commandClick)=\"onUlvCommand()\"\n [deviceName]=\"deviceName\"\n ></i>\n <bsu-htree-create-new\n *ngIf=\"access?.Add !== false && !inDialog\"\n [node]=\"node\"\n [relationList]=\"relationList\"\n (createNew)=\"onCreateNew($event)\"\n ></bsu-htree-create-new>\n </div>\n <fdp-button\n *ngIf=\"access?.View && !showOkCancelButtons && deviceName !== 'desktop'\"\n [glyph]=\"navigationArrow\"\n buttonType=\"transparent\"\n (click)=\"onNodeViewClick()\"\n ></fdp-button>\n\n <bsu-barsa-tree-item\n *cdkDragPreview\n [node]=\"node\"\n [rtl]=\"rtl\"\n [selectedNode]=\"selectedNode\"\n [hasArrowIcon]=\"false\"\n ></bsu-barsa-tree-item>\n</li>\n<ng-template #emptyBtn>\n <div class=\"empty-container\" *ngIf=\"!parentNode?.hasOneDepthLevel\" (click)=\"onRowCheck()\">\n <button fd-button></button>\n </div>\n</ng-template>\n", styles: [":host{display:block}li{column-gap:8px}li .cdk-drag-handle{opacity:.5;cursor:move}li .spacer{height:100%}li .arrow-container,li .empty-container{display:flex;width:28px;align-items:center;justify-content:center}li .arrow-container fd-icon,li .empty-container fd-icon{cursor:pointer;width:100%;height:100%;text-align:center}li .arrow-container button[rtl=true],li .empty-container button[rtl=true]{margin-left:5px}li .arrow-container button[rtl=false],li .empty-container button[rtl=false]{margin-right:5px}li .empty-container{visibility:hidden!important}.cdk-drag{cursor:auto}.tree-icon-children{cursor:pointer}\n"] }]
91
+ args: [{ selector: 'bsu-barsa-tree-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<li\n fd-list-item\n #liEl\n [applyConditionalFormats]=\"conditionalFormats\"\n [styleIndex]=\"styleIndex\"\n [hostEl]=\"liEl\"\n [focusable]=\"true\"\n [attr.level]=\"level\"\n [class.root-group]=\"level === 1\"\n [selected]=\"isChecked\"\n (dblclick)=\"onNodeViewClick()\"\n cdkDrag\n [cdkDragData]=\"node.Data.Id\"\n (cdkDragMoved)=\"onDragMoved($event)\"\n (click)=\"onListItemClick(liEl, $event)\"\n>\n <div (click)=\"onRowCheck()\" class=\"spacer\" [style.width]=\"(level - 1) * 4 + 'rem'\"></div>\n <fd-icon *ngIf=\"hasDragDrop && !isHetro\" glyph=\"grip\" font=\"BusinessSuiteInAppSymbols\" cdkDragHandle></fd-icon>\n <fd-checkbox\n *ngIf=\"inDialog && isMultiSelect\"\n [name]=\"node.Data.$Caption\"\n [ngModel]=\"isChecked\"\n (ngModelChange)=\"onCheckbox($event)\"\n ></fd-checkbox>\n\n <div (click)=\"onRowCheck()\" style=\"display: flex; width: 100%; justify-content: space-between\">\n <div style=\"display: flex; flex: 1\">\n <ng-container *ngIf=\"hasArrowIcon\">\n <div class=\"arrow-container\" *ngIf=\"hasChildren; else emptyBtn\">\n <button\n [attr.rtl]=\"rtl\"\n fd-button\n fdType=\"transparent\"\n [glyph]=\"hasChildren ? (isExpand ? 'less' : collapseIcon) : ''\"\n (click)=\"onLoadChildren($event)\"\n (dblclick)=\"onExpandDblClick($event)\"\n ></button>\n </div>\n <fd-busy-indicator\n style=\"display: flex; align-items: center; width: 2rem\"\n *ngIf=\"loading\"\n size=\"s\"\n [loading]=\"true\"\n ></fd-busy-indicator>\n </ng-container>\n <div style=\"display: flex; flex: unset; align-items: center\" fd-list-title [focusable]=\"true\">\n <img\n *ngIf=\"!hideIcon\"\n [src]=\"node.icon\"\n [style.padding-right.px]=\"!rtl ? 5 : null\"\n [style.padding-left.px]=\"rtl ? 5 : null\"\n />\n <span>{{ text }}</span>\n <span *ngIf=\"children\">{{ ' ( ' + children.length + ' )' }}</span>\n </div>\n </div>\n <i\n *ngIf=\"contextMenuItems && contextMenuItems.length > 0\"\n ulvContextMenu\n [allColumns]=\"allColumns\"\n [menuItems]=\"contextMenuItems\"\n [conditionalFormats]=\"conditionalFormats\"\n [styleIndex]=\"styleIndex\"\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\n [mo]=\"node.Data\"\n [index]=\"index\"\n (commandClick)=\"onUlvCommand()\"\n [deviceName]=\"deviceName\"\n ></i>\n <bsu-htree-create-new\n *ngIf=\"access?.Add !== false && !inDialog\"\n [node]=\"node\"\n [relationList]=\"relationList\"\n (createNew)=\"onCreateNew($event)\"\n ></bsu-htree-create-new>\n </div>\n <fdp-button\n *ngIf=\"access?.View && !showOkCancelButtons && deviceName !== 'desktop'\"\n [glyph]=\"navigationArrow\"\n buttonType=\"transparent\"\n (click)=\"onNodeViewClick()\"\n ></fdp-button>\n\n <bsu-barsa-tree-item\n *cdkDragPreview\n [node]=\"node\"\n [rtl]=\"rtl\"\n [selectedNode]=\"selectedNode\"\n [hasArrowIcon]=\"false\"\n ></bsu-barsa-tree-item>\n</li>\n<ng-template #emptyBtn>\n <div class=\"empty-container\" *ngIf=\"!parentNode?.hasOneDepthLevel\" (click)=\"onRowCheck()\">\n <button fd-button></button>\n </div>\n</ng-template>\n", styles: [":host{display:block}li{column-gap:8px}li .cdk-drag-handle{opacity:.5;cursor:move}li .spacer{height:100%}li .arrow-container,li .empty-container{display:flex;width:28px;align-items:center;justify-content:center}li .arrow-container fd-icon,li .empty-container fd-icon{cursor:pointer;width:100%;height:100%;text-align:center}li .arrow-container button[rtl=true],li .empty-container button[rtl=true]{margin-left:5px}li .arrow-container button[rtl=false],li .empty-container button[rtl=false]{margin-right:5px}li .empty-container{visibility:hidden!important}.cdk-drag{cursor:auto}.tree-icon-children{cursor:pointer}\n"] }]
92
92
  }], propDecorators: { node: [{
93
93
  type: Input
94
94
  }], selectedNode: [{
@@ -128,4 +128,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImpor
128
128
  }], dragMoved: [{
129
129
  type: Output
130
130
  }] } });
131
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyc2EtdHJlZS1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXNhcC11aS9zcmMvbGliL2JhcnNhLXRyZWUtaXRlbS9iYXJzYS10cmVlLWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvYmFyc2EtdHJlZS1pdGVtL2JhcnNhLXRyZWUtaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3hHLE9BQU8sRUFBc0QsMEJBQTBCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7QUFRdEgsTUFBTSxPQUFPLHNCQUF1QixTQUFRLDBCQUEwQjtJQU50RTs7UUFXYSxpQkFBWSxHQUFHLElBQUksQ0FBQztRQVU3QixvQkFBb0I7UUFDVixjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQW9CLENBQUM7UUFDakQsV0FBTSxHQUFHLElBQUksWUFBWSxFQUcvQixDQUFDO1FBQ0ssZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFJcEMsQ0FBQztRQUNLLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFHbEMsQ0FBQztRQUNLLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQXVCLENBQUM7UUFDdkQsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFHakQsWUFBTyxHQUFHO1lBQ04sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxnQ0FBZ0MsRUFBRTtZQUN6RDtnQkFDSSxJQUFJLEVBQUUsUUFBUTtnQkFDZCxNQUFNLEVBQUUsbUNBQW1DO2FBQzlDO1NBQ0osQ0FBQztLQXlETDtJQXZERyxRQUFRO1FBQ0osS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDcEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7U0FDeEI7SUFDTCxDQUFDO0lBQ0QsZUFBZSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxDQUFDLE1BQU0sS0FBSyxJQUFJLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRTtZQUM5QyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7U0FDckI7SUFDTCxDQUFDO0lBQ0QsVUFBVSxDQUFDLE9BQWdCO1FBQ3ZCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBQ0QsVUFBVTtRQUNOLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3JDLE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxZQUFZO1FBQ1IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFRCxlQUFlO1FBQ1gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFRCxjQUFjLENBQUMsQ0FBQztRQUNaLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkMsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3BCLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsQ0FBQztRQUNkLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUNwQixDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUNELFdBQVcsQ0FBQyxDQUFDO1FBQ1QsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDakIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1NBQ3JCO1FBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUNELFdBQVcsQ0FBQyxXQUFtQjtRQUMzQixNQUFNLE9BQU8sR0FBRyxJQUFJLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMxQyxPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFDRCxXQUFXLENBQUMsTUFBTTtRQUNkLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNkLE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7O21IQWhHUSxzQkFBc0I7dUdBQXRCLHNCQUFzQix5akJDWG5DLG13SEFnR0EsMjdHRHJGYSxzQkFBc0I7MkZBQXRCLHNCQUFzQjtrQkFObEMsU0FBUzsrQkFDSSxxQkFBcUIsbUJBR2QsdUJBQXVCLENBQUMsTUFBTTs4QkFHdEMsSUFBSTtzQkFBWixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUdJLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNO2dCQUlHLFdBQVc7c0JBQXBCLE1BQU07Z0JBS0csU0FBUztzQkFBbEIsTUFBTTtnQkFJRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBNZXRhb2JqZWN0RGF0YU1vZGVsLCBUcmVlTm9kZU9iaiwgUmVsYXRpb25JdGVtVHlwZSwgQmFzZVZpZXdJdGVtUHJvcHNDb21wb25lbnQgfSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYnN1LWJhcnNhLXRyZWUtaXRlbScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2JhcnNhLXRyZWUtaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vYmFyc2EtdHJlZS1pdGVtLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQmFyc2FUcmVlSXRlbUNvbXBvbmVudCBleHRlbmRzIEJhc2VWaWV3SXRlbVByb3BzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBASW5wdXQoKSBub2RlOiBUcmVlTm9kZU9iajtcbiAgICBASW5wdXQoKSBzZWxlY3RlZE5vZGU6IE1ldGFvYmplY3REYXRhTW9kZWwgfCBudWxsO1xuICAgIEBJbnB1dCgpIHJlbGF0aW9uTGlzdDogUmVsYXRpb25JdGVtVHlwZVtdO1xuICAgIEBJbnB1dCgpIGhhc0RyYWdEcm9wOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGhhc0Fycm93SWNvbiA9IHRydWU7XG4gICAgQElucHV0KCkgY29sbGFwc2VJY29uOiBzdHJpbmc7XG4gICAgQElucHV0KCkgbG9hZGluZzogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBoYXNDaGlsZHJlbjogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBpc0V4cGFuZDogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBjaGlsZHJlbjogVHJlZU5vZGVPYmpbXTtcbiAgICBASW5wdXQoKSBwYXJlbnROb2RlOiBUcmVlTm9kZU9iajtcbiAgICBASW5wdXQoKSB0ZXh0OiBzdHJpbmc7XG4gICAgQElucHV0KCkgaXNIZXRybzogYm9vbGVhbjtcblxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgQE91dHB1dCgpIGNyZWF0ZU5ldyA9IG5ldyBFdmVudEVtaXR0ZXI8UmVsYXRpb25JdGVtVHlwZT4oKTtcbiAgICBAT3V0cHV0KCkgc2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjx7XG4gICAgICAgIG5vZGU6IFRyZWVOb2RlT2JqO1xuICAgICAgICBpbmRleDogbnVtYmVyO1xuICAgIH0+KCk7XG4gICAgQE91dHB1dCgpIGNoZWNrQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx7XG4gICAgICAgIG5vZGU6IFRyZWVOb2RlT2JqO1xuICAgICAgICBpbmRleDogbnVtYmVyO1xuICAgICAgICBjaGVja2VkOiBib29sZWFuO1xuICAgIH0+KCk7XG4gICAgQE91dHB1dCgpIHZpZXdDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8e1xuICAgICAgICBub2RlOiBNZXRhb2JqZWN0RGF0YU1vZGVsO1xuICAgICAgICBpbmRleDogbnVtYmVyO1xuICAgIH0+KCk7XG4gICAgQE91dHB1dCgpIGxvYWRDaGlsZHJlbiA9IG5ldyBFdmVudEVtaXR0ZXI8TWV0YW9iamVjdERhdGFNb2RlbD4oKTtcbiAgICBAT3V0cHV0KCkgZHJhZ01vdmVkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gICAgaWNvbiQ6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgICBoaWRlSWNvbjogYm9vbGVhbjtcbiAgICByb3dCdG5zID0gW1xuICAgICAgICB7IEljb246ICdhZGQnLCBBY3Rpb246ICdjb25zb2xlLmxvZyhcImFkZCBidG4gY2xpY2tlZFwiKScgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgSWNvbjogJ2RlbGV0ZScsXG4gICAgICAgICAgICBBY3Rpb246ICdjb25zb2xlLmxvZyhcImRlbGV0ZSBidG4gY2xpY2tlZFwiKSdcbiAgICAgICAgfVxuICAgIF07XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgaWYgKCF0aGlzLm5vZGUuaWNvbi5zdGFydHNXaXRoKCdodHRwJykpIHtcbiAgICAgICAgICAgIHRoaXMuaGlkZUljb24gPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIG9uTGlzdEl0ZW1DbGljayhsaUVsLCBlKSB7XG4gICAgICAgIGlmIChlLnRhcmdldCA9PT0gbGlFbD8uZWxlbWVudFJlZj8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5vblJvd0NoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgb25DaGVja2JveChjaGVja2VkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2hlY2tDaGFuZ2UuZW1pdCh7IG5vZGU6IHRoaXMubm9kZSwgaW5kZXg6IHRoaXMuaW5kZXgsIGNoZWNrZWQgfSk7XG4gICAgfVxuICAgIG9uUm93Q2hlY2soKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmluRGlhbG9nICYmIHRoaXMuaXNNdWx0aVNlbGVjdCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VsZWN0LmVtaXQoeyBub2RlOiB0aGlzLm5vZGUsIGluZGV4OiB0aGlzLmluZGV4IH0pO1xuICAgIH1cblxuICAgIG9uVWx2Q29tbWFuZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51bHZDb21tYW5kLmVtaXQoeyBtbzogdGhpcy5ub2RlLkRhdGEsIGluZGV4OiB0aGlzLmluZGV4IH0pO1xuICAgIH1cblxuICAgIG9uTm9kZVZpZXdDbGljaygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52aWV3Q2xpY2suZW1pdCh7IG5vZGU6IHRoaXMubm9kZS5EYXRhLCBpbmRleDogdGhpcy5pbmRleCB9KTtcbiAgICB9XG5cbiAgICBvbkxvYWRDaGlsZHJlbihlKTogdm9pZCB7XG4gICAgICAgIHRoaXMubG9hZENoaWxkcmVuLmVtaXQodGhpcy5ub2RlLkRhdGEpO1xuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgb25FeHBhbmREYmxDbGljayhlKTogdm9pZCB7XG4gICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gICAgb25DcmVhdGVOZXcoZSkge1xuICAgICAgICBpZiAoIXRoaXMuaXNDaGVja2VkKSB7XG4gICAgICAgICAgICB0aGlzLm9uUm93Q2hlY2soKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNyZWF0ZU5ldy5lbWl0KGUpO1xuICAgIH1cbiAgICBvblJvd0FjdGlvbihjb21tYW5kQm9keTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNvbW1hbmQgPSBuZXcgRnVuY3Rpb24oY29tbWFuZEJvZHkpO1xuICAgICAgICBjb21tYW5kKCk7XG4gICAgfVxuICAgIG9uRHJhZ01vdmVkKCRldmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc0hldHJvKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kcmFnTW92ZWQuZW1pdCgkZXZlbnQpO1xuICAgIH1cbn1cbiIsIjxsaVxuICAgIGZkLWxpc3QtaXRlbVxuICAgICNsaUVsXG4gICAgW2FwcGx5Q29uZGl0aW9uYWxGb3JtYXRzXT1cImNvbmRpdGlvbmFsRm9ybWF0c1wiXG4gICAgW3N0eWxlSW5kZXhdPVwic3R5bGVJbmRleFwiXG4gICAgW2hvc3RFbF09XCJsaUVsXCJcbiAgICBbZm9jdXNhYmxlXT1cInRydWVcIlxuICAgIFthdHRyLmxldmVsXT1cImxldmVsXCJcbiAgICBbY2xhc3Mucm9vdC1ncm91cF09XCJsZXZlbCA9PT0gMVwiXG4gICAgW3NlbGVjdGVkXT1cImlzQ2hlY2tlZFwiXG4gICAgKGRibGNsaWNrKT1cIm9uTm9kZVZpZXdDbGljaygpXCJcbiAgICBjZGtEcmFnXG4gICAgW2Nka0RyYWdEYXRhXT1cIm5vZGUuRGF0YS5JZFwiXG4gICAgKGNka0RyYWdNb3ZlZCk9XCJvbkRyYWdNb3ZlZCgkZXZlbnQpXCJcbiAgICAoY2xpY2spPVwib25MaXN0SXRlbUNsaWNrKGxpRWwsICRldmVudClcIlxuPlxuICAgIDxkaXYgKGNsaWNrKT1cIm9uUm93Q2hlY2soKVwiIGNsYXNzPVwic3BhY2VyXCIgW3N0eWxlLndpZHRoXT1cIihsZXZlbCAtIDEpICogNCArICdyZW0nXCI+PC9kaXY+XG4gICAgPGZkLWljb24gKm5nSWY9XCJoYXNEcmFnRHJvcCAmJiAhaXNIZXRyb1wiIGdseXBoPVwiZ3JpcFwiIGZvbnQ9XCJCdXNpbmVzc1N1aXRlSW5BcHBTeW1ib2xzXCIgY2RrRHJhZ0hhbmRsZT48L2ZkLWljb24+XG4gICAgPGZkLWNoZWNrYm94XG4gICAgICAgICpuZ0lmPVwiaW5EaWFsb2cgJiYgaXNNdWx0aVNlbGVjdFwiXG4gICAgICAgIFtuYW1lXT1cIm5vZGUuRGF0YS4kQ2FwdGlvblwiXG4gICAgICAgIFtuZ01vZGVsXT1cImlzQ2hlY2tlZFwiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hlY2tib3goJGV2ZW50KVwiXG4gICAgPjwvZmQtY2hlY2tib3g+XG5cbiAgICA8ZGl2IChjbGljayk9XCJvblJvd0NoZWNrKClcIiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IHdpZHRoOiAxMDAlOyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW5cIj5cbiAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXhcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNBcnJvd0ljb25cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXJyb3ctY29udGFpbmVyXCIgKm5nSWY9XCJoYXNDaGlsZHJlbjsgZWxzZSBlbXB0eUJ0blwiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5ydGxdPVwicnRsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2dseXBoXT1cImhhc0NoaWxkcmVuID8gKGlzRXhwYW5kID8gJ2xlc3MnIDogY29sbGFwc2VJY29uKSA6ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkxvYWRDaGlsZHJlbigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChkYmxjbGljayk9XCJvbkV4cGFuZERibENsaWNrKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGZkLWJ1c3ktaW5kaWNhdG9yXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgd2lkdGg6IDJyZW1cIlxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImxvYWRpbmdcIlxuICAgICAgICAgICAgICAgICAgICBzaXplPVwic1wiXG4gICAgICAgICAgICAgICAgICAgIFtsb2FkaW5nXT1cInRydWVcIlxuICAgICAgICAgICAgICAgID48L2ZkLWJ1c3ktaW5kaWNhdG9yPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDsgZmxleDogdW5zZXQ7IGFsaWduLWl0ZW1zOiBjZW50ZXJcIiBmZC1saXN0LXRpdGxlIFtmb2N1c2FibGVdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhaGlkZUljb25cIlxuICAgICAgICAgICAgICAgICAgICBbc3JjXT1cIm5vZGUuaWNvblwiXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5wYWRkaW5nLXJpZ2h0LnB4XT1cIiFydGwgPyA1IDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5wYWRkaW5nLWxlZnQucHhdPVwicnRsID8gNSA6IG51bGxcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgdGV4dCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNoaWxkcmVuXCI+e3sgJyAoICcgKyBjaGlsZHJlbi5sZW5ndGggKyAnICknIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8aVxuICAgICAgICAgICAgKm5nSWY9XCJjb250ZXh0TWVudUl0ZW1zICYmIGNvbnRleHRNZW51SXRlbXMubGVuZ3RoID4gMFwiXG4gICAgICAgICAgICB1bHZDb250ZXh0TWVudVxuICAgICAgICAgICAgW2FsbENvbHVtbnNdPVwiYWxsQ29sdW1uc1wiXG4gICAgICAgICAgICBbbWVudUl0ZW1zXT1cImNvbnRleHRNZW51SXRlbXNcIlxuICAgICAgICAgICAgW2NvbmRpdGlvbmFsRm9ybWF0c109XCJjb25kaXRpb25hbEZvcm1hdHNcIlxuICAgICAgICAgICAgW3N0eWxlSW5kZXhdPVwic3R5bGVJbmRleFwiXG4gICAgICAgICAgICBbZGlzYWJsZU92ZXJmbG93Q29udGV4dE1lbnVdPVwiZGlzYWJsZU92ZXJmbG93Q29udGV4dE1lbnVcIlxuICAgICAgICAgICAgW21vXT1cIm5vZGUuRGF0YVwiXG4gICAgICAgICAgICBbaW5kZXhdPVwiaW5kZXhcIlxuICAgICAgICAgICAgKGNvbW1hbmRDbGljayk9XCJvblVsdkNvbW1hbmQoKVwiXG4gICAgICAgICAgICBbZGV2aWNlTmFtZV09XCJkZXZpY2VOYW1lXCJcbiAgICAgICAgPjwvaT5cbiAgICAgICAgPGJzdS1odHJlZS1jcmVhdGUtbmV3XG4gICAgICAgICAgICAqbmdJZj1cImFjY2Vzcz8uQWRkICE9PSBmYWxzZSAmJiAhaW5EaWFsb2dcIlxuICAgICAgICAgICAgW25vZGVdPVwibm9kZVwiXG4gICAgICAgICAgICBbcmVsYXRpb25MaXN0XT1cInJlbGF0aW9uTGlzdFwiXG4gICAgICAgICAgICAoY3JlYXRlTmV3KT1cIm9uQ3JlYXRlTmV3KCRldmVudClcIlxuICAgICAgICA+PC9ic3UtaHRyZWUtY3JlYXRlLW5ldz5cbiAgICA8L2Rpdj5cbiAgICA8ZmRwLWJ1dHRvblxuICAgICAgICAqbmdJZj1cImFjY2Vzcz8uVmlldyAmJiAhc2hvd09rQ2FuY2VsQnV0dG9ucyAmJiBkZXZpY2VOYW1lICE9PSAnZGVza3RvcCdcIlxuICAgICAgICBbZ2x5cGhdPVwibmF2aWdhdGlvbkFycm93XCJcbiAgICAgICAgYnV0dG9uVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgKGNsaWNrKT1cIm9uTm9kZVZpZXdDbGljaygpXCJcbiAgICA+PC9mZHAtYnV0dG9uPlxuXG4gICAgPGJzdS1iYXJzYS10cmVlLWl0ZW1cbiAgICAgICAgKmNka0RyYWdQcmV2aWV3XG4gICAgICAgIFtub2RlXT1cIm5vZGVcIlxuICAgICAgICBbcnRsXT1cInJ0bFwiXG4gICAgICAgIFtzZWxlY3RlZE5vZGVdPVwic2VsZWN0ZWROb2RlXCJcbiAgICAgICAgW2hhc0Fycm93SWNvbl09XCJmYWxzZVwiXG4gICAgPjwvYnN1LWJhcnNhLXRyZWUtaXRlbT5cbjwvbGk+XG48bmctdGVtcGxhdGUgI2VtcHR5QnRuPlxuICAgIDxkaXYgY2xhc3M9XCJlbXB0eS1jb250YWluZXJcIiAqbmdJZj1cIiFwYXJlbnROb2RlPy5oYXNPbmVEZXB0aExldmVsXCIgKGNsaWNrKT1cIm9uUm93Q2hlY2soKVwiPlxuICAgICAgICA8YnV0dG9uIGZkLWJ1dHRvbj48L2J1dHRvbj5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
131
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyc2EtdHJlZS1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXNhcC11aS9zcmMvbGliL2JhcnNhLXRyZWUtaXRlbS9iYXJzYS10cmVlLWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvYmFyc2EtdHJlZS1pdGVtL2JhcnNhLXRyZWUtaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3hHLE9BQU8sRUFBc0QsMEJBQTBCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7QUFRdEgsTUFBTSxPQUFPLHNCQUF1QixTQUFRLDBCQUEwQjtJQU50RTs7UUFXYSxpQkFBWSxHQUFHLElBQUksQ0FBQztRQVU3QixvQkFBb0I7UUFDVixjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQW9CLENBQUM7UUFDakQsV0FBTSxHQUFHLElBQUksWUFBWSxFQUcvQixDQUFDO1FBQ0ssZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFJcEMsQ0FBQztRQUNLLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFHbEMsQ0FBQztRQUNLLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQXVCLENBQUM7UUFDdkQsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFHakQsWUFBTyxHQUFHO1lBQ04sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxnQ0FBZ0MsRUFBRTtZQUN6RDtnQkFDSSxJQUFJLEVBQUUsUUFBUTtnQkFDZCxNQUFNLEVBQUUsbUNBQW1DO2FBQzlDO1NBQ0osQ0FBQztLQXlETDtJQXZERyxRQUFRO1FBQ0osS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDcEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7U0FDeEI7SUFDTCxDQUFDO0lBQ0QsZUFBZSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxDQUFDLE1BQU0sS0FBSyxJQUFJLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRTtZQUM5QyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7U0FDckI7SUFDTCxDQUFDO0lBQ0QsVUFBVSxDQUFDLE9BQWdCO1FBQ3ZCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBQ0QsVUFBVTtRQUNOLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3JDLE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxZQUFZO1FBQ1IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFRCxlQUFlO1FBQ1gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFRCxjQUFjLENBQUMsQ0FBQztRQUNaLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkMsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3BCLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsQ0FBQztRQUNkLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUNwQixDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUNELFdBQVcsQ0FBQyxDQUFDO1FBQ1QsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDakIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1NBQ3JCO1FBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUNELFdBQVcsQ0FBQyxXQUFtQjtRQUMzQixNQUFNLE9BQU8sR0FBRyxJQUFJLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMxQyxPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFDRCxXQUFXLENBQUMsTUFBTTtRQUNkLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNkLE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7O21IQWhHUSxzQkFBc0I7dUdBQXRCLHNCQUFzQix5akJDWG5DLDR3SEFnR0EsMjdHRHJGYSxzQkFBc0I7MkZBQXRCLHNCQUFzQjtrQkFObEMsU0FBUzsrQkFDSSxxQkFBcUIsbUJBR2QsdUJBQXVCLENBQUMsTUFBTTs4QkFHdEMsSUFBSTtzQkFBWixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUdJLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNO2dCQUlHLFdBQVc7c0JBQXBCLE1BQU07Z0JBS0csU0FBUztzQkFBbEIsTUFBTTtnQkFJRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBNZXRhb2JqZWN0RGF0YU1vZGVsLCBUcmVlTm9kZU9iaiwgUmVsYXRpb25JdGVtVHlwZSwgQmFzZVZpZXdJdGVtUHJvcHNDb21wb25lbnQgfSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYnN1LWJhcnNhLXRyZWUtaXRlbScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2JhcnNhLXRyZWUtaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vYmFyc2EtdHJlZS1pdGVtLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQmFyc2FUcmVlSXRlbUNvbXBvbmVudCBleHRlbmRzIEJhc2VWaWV3SXRlbVByb3BzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBASW5wdXQoKSBub2RlOiBUcmVlTm9kZU9iajtcbiAgICBASW5wdXQoKSBzZWxlY3RlZE5vZGU6IE1ldGFvYmplY3REYXRhTW9kZWwgfCBudWxsO1xuICAgIEBJbnB1dCgpIHJlbGF0aW9uTGlzdDogUmVsYXRpb25JdGVtVHlwZVtdO1xuICAgIEBJbnB1dCgpIGhhc0RyYWdEcm9wOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGhhc0Fycm93SWNvbiA9IHRydWU7XG4gICAgQElucHV0KCkgY29sbGFwc2VJY29uOiBzdHJpbmc7XG4gICAgQElucHV0KCkgbG9hZGluZzogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBoYXNDaGlsZHJlbjogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBpc0V4cGFuZDogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBjaGlsZHJlbjogVHJlZU5vZGVPYmpbXTtcbiAgICBASW5wdXQoKSBwYXJlbnROb2RlOiBUcmVlTm9kZU9iajtcbiAgICBASW5wdXQoKSB0ZXh0OiBzdHJpbmc7XG4gICAgQElucHV0KCkgaXNIZXRybzogYm9vbGVhbjtcblxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgQE91dHB1dCgpIGNyZWF0ZU5ldyA9IG5ldyBFdmVudEVtaXR0ZXI8UmVsYXRpb25JdGVtVHlwZT4oKTtcbiAgICBAT3V0cHV0KCkgc2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjx7XG4gICAgICAgIG5vZGU6IFRyZWVOb2RlT2JqO1xuICAgICAgICBpbmRleDogbnVtYmVyO1xuICAgIH0+KCk7XG4gICAgQE91dHB1dCgpIGNoZWNrQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx7XG4gICAgICAgIG5vZGU6IFRyZWVOb2RlT2JqO1xuICAgICAgICBpbmRleDogbnVtYmVyO1xuICAgICAgICBjaGVja2VkOiBib29sZWFuO1xuICAgIH0+KCk7XG4gICAgQE91dHB1dCgpIHZpZXdDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8e1xuICAgICAgICBub2RlOiBNZXRhb2JqZWN0RGF0YU1vZGVsO1xuICAgICAgICBpbmRleDogbnVtYmVyO1xuICAgIH0+KCk7XG4gICAgQE91dHB1dCgpIGxvYWRDaGlsZHJlbiA9IG5ldyBFdmVudEVtaXR0ZXI8TWV0YW9iamVjdERhdGFNb2RlbD4oKTtcbiAgICBAT3V0cHV0KCkgZHJhZ01vdmVkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gICAgaWNvbiQ6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgICBoaWRlSWNvbjogYm9vbGVhbjtcbiAgICByb3dCdG5zID0gW1xuICAgICAgICB7IEljb246ICdhZGQnLCBBY3Rpb246ICdjb25zb2xlLmxvZyhcImFkZCBidG4gY2xpY2tlZFwiKScgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgSWNvbjogJ2RlbGV0ZScsXG4gICAgICAgICAgICBBY3Rpb246ICdjb25zb2xlLmxvZyhcImRlbGV0ZSBidG4gY2xpY2tlZFwiKSdcbiAgICAgICAgfVxuICAgIF07XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgaWYgKCF0aGlzLm5vZGUuaWNvbi5zdGFydHNXaXRoKCdodHRwJykpIHtcbiAgICAgICAgICAgIHRoaXMuaGlkZUljb24gPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIG9uTGlzdEl0ZW1DbGljayhsaUVsLCBlKSB7XG4gICAgICAgIGlmIChlLnRhcmdldCA9PT0gbGlFbD8uZWxlbWVudFJlZj8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5vblJvd0NoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgb25DaGVja2JveChjaGVja2VkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2hlY2tDaGFuZ2UuZW1pdCh7IG5vZGU6IHRoaXMubm9kZSwgaW5kZXg6IHRoaXMuaW5kZXgsIGNoZWNrZWQgfSk7XG4gICAgfVxuICAgIG9uUm93Q2hlY2soKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmluRGlhbG9nICYmIHRoaXMuaXNNdWx0aVNlbGVjdCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VsZWN0LmVtaXQoeyBub2RlOiB0aGlzLm5vZGUsIGluZGV4OiB0aGlzLmluZGV4IH0pO1xuICAgIH1cblxuICAgIG9uVWx2Q29tbWFuZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51bHZDb21tYW5kLmVtaXQoeyBtbzogdGhpcy5ub2RlLkRhdGEsIGluZGV4OiB0aGlzLmluZGV4IH0pO1xuICAgIH1cblxuICAgIG9uTm9kZVZpZXdDbGljaygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52aWV3Q2xpY2suZW1pdCh7IG5vZGU6IHRoaXMubm9kZS5EYXRhLCBpbmRleDogdGhpcy5pbmRleCB9KTtcbiAgICB9XG5cbiAgICBvbkxvYWRDaGlsZHJlbihlKTogdm9pZCB7XG4gICAgICAgIHRoaXMubG9hZENoaWxkcmVuLmVtaXQodGhpcy5ub2RlLkRhdGEpO1xuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgb25FeHBhbmREYmxDbGljayhlKTogdm9pZCB7XG4gICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gICAgb25DcmVhdGVOZXcoZSkge1xuICAgICAgICBpZiAoIXRoaXMuaXNDaGVja2VkKSB7XG4gICAgICAgICAgICB0aGlzLm9uUm93Q2hlY2soKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNyZWF0ZU5ldy5lbWl0KGUpO1xuICAgIH1cbiAgICBvblJvd0FjdGlvbihjb21tYW5kQm9keTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNvbW1hbmQgPSBuZXcgRnVuY3Rpb24oY29tbWFuZEJvZHkpO1xuICAgICAgICBjb21tYW5kKCk7XG4gICAgfVxuICAgIG9uRHJhZ01vdmVkKCRldmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc0hldHJvKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kcmFnTW92ZWQuZW1pdCgkZXZlbnQpO1xuICAgIH1cbn1cbiIsIjxsaVxuICAgIGZkLWxpc3QtaXRlbVxuICAgICNsaUVsXG4gICAgW2FwcGx5Q29uZGl0aW9uYWxGb3JtYXRzXT1cImNvbmRpdGlvbmFsRm9ybWF0c1wiXG4gICAgW3N0eWxlSW5kZXhdPVwic3R5bGVJbmRleFwiXG4gICAgW2hvc3RFbF09XCJsaUVsXCJcbiAgICBbZm9jdXNhYmxlXT1cInRydWVcIlxuICAgIFthdHRyLmxldmVsXT1cImxldmVsXCJcbiAgICBbY2xhc3Mucm9vdC1ncm91cF09XCJsZXZlbCA9PT0gMVwiXG4gICAgW3NlbGVjdGVkXT1cImlzQ2hlY2tlZFwiXG4gICAgKGRibGNsaWNrKT1cIm9uTm9kZVZpZXdDbGljaygpXCJcbiAgICBjZGtEcmFnXG4gICAgW2Nka0RyYWdEYXRhXT1cIm5vZGUuRGF0YS5JZFwiXG4gICAgKGNka0RyYWdNb3ZlZCk9XCJvbkRyYWdNb3ZlZCgkZXZlbnQpXCJcbiAgICAoY2xpY2spPVwib25MaXN0SXRlbUNsaWNrKGxpRWwsICRldmVudClcIlxuPlxuICAgIDxkaXYgKGNsaWNrKT1cIm9uUm93Q2hlY2soKVwiIGNsYXNzPVwic3BhY2VyXCIgW3N0eWxlLndpZHRoXT1cIihsZXZlbCAtIDEpICogNCArICdyZW0nXCI+PC9kaXY+XG4gICAgPGZkLWljb24gKm5nSWY9XCJoYXNEcmFnRHJvcCAmJiAhaXNIZXRyb1wiIGdseXBoPVwiZ3JpcFwiIGZvbnQ9XCJCdXNpbmVzc1N1aXRlSW5BcHBTeW1ib2xzXCIgY2RrRHJhZ0hhbmRsZT48L2ZkLWljb24+XG4gICAgPGZkLWNoZWNrYm94XG4gICAgICAgICpuZ0lmPVwiaW5EaWFsb2cgJiYgaXNNdWx0aVNlbGVjdFwiXG4gICAgICAgIFtuYW1lXT1cIm5vZGUuRGF0YS4kQ2FwdGlvblwiXG4gICAgICAgIFtuZ01vZGVsXT1cImlzQ2hlY2tlZFwiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hlY2tib3goJGV2ZW50KVwiXG4gICAgPjwvZmQtY2hlY2tib3g+XG5cbiAgICA8ZGl2IChjbGljayk9XCJvblJvd0NoZWNrKClcIiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IHdpZHRoOiAxMDAlOyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW5cIj5cbiAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGZsZXg6IDFcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNBcnJvd0ljb25cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXJyb3ctY29udGFpbmVyXCIgKm5nSWY9XCJoYXNDaGlsZHJlbjsgZWxzZSBlbXB0eUJ0blwiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5ydGxdPVwicnRsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2dseXBoXT1cImhhc0NoaWxkcmVuID8gKGlzRXhwYW5kID8gJ2xlc3MnIDogY29sbGFwc2VJY29uKSA6ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkxvYWRDaGlsZHJlbigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChkYmxjbGljayk9XCJvbkV4cGFuZERibENsaWNrKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGZkLWJ1c3ktaW5kaWNhdG9yXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgd2lkdGg6IDJyZW1cIlxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImxvYWRpbmdcIlxuICAgICAgICAgICAgICAgICAgICBzaXplPVwic1wiXG4gICAgICAgICAgICAgICAgICAgIFtsb2FkaW5nXT1cInRydWVcIlxuICAgICAgICAgICAgICAgID48L2ZkLWJ1c3ktaW5kaWNhdG9yPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDsgZmxleDogdW5zZXQ7IGFsaWduLWl0ZW1zOiBjZW50ZXJcIiBmZC1saXN0LXRpdGxlIFtmb2N1c2FibGVdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhaGlkZUljb25cIlxuICAgICAgICAgICAgICAgICAgICBbc3JjXT1cIm5vZGUuaWNvblwiXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5wYWRkaW5nLXJpZ2h0LnB4XT1cIiFydGwgPyA1IDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5wYWRkaW5nLWxlZnQucHhdPVwicnRsID8gNSA6IG51bGxcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgdGV4dCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNoaWxkcmVuXCI+e3sgJyAoICcgKyBjaGlsZHJlbi5sZW5ndGggKyAnICknIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8aVxuICAgICAgICAgICAgKm5nSWY9XCJjb250ZXh0TWVudUl0ZW1zICYmIGNvbnRleHRNZW51SXRlbXMubGVuZ3RoID4gMFwiXG4gICAgICAgICAgICB1bHZDb250ZXh0TWVudVxuICAgICAgICAgICAgW2FsbENvbHVtbnNdPVwiYWxsQ29sdW1uc1wiXG4gICAgICAgICAgICBbbWVudUl0ZW1zXT1cImNvbnRleHRNZW51SXRlbXNcIlxuICAgICAgICAgICAgW2NvbmRpdGlvbmFsRm9ybWF0c109XCJjb25kaXRpb25hbEZvcm1hdHNcIlxuICAgICAgICAgICAgW3N0eWxlSW5kZXhdPVwic3R5bGVJbmRleFwiXG4gICAgICAgICAgICBbZGlzYWJsZU92ZXJmbG93Q29udGV4dE1lbnVdPVwiZGlzYWJsZU92ZXJmbG93Q29udGV4dE1lbnVcIlxuICAgICAgICAgICAgW21vXT1cIm5vZGUuRGF0YVwiXG4gICAgICAgICAgICBbaW5kZXhdPVwiaW5kZXhcIlxuICAgICAgICAgICAgKGNvbW1hbmRDbGljayk9XCJvblVsdkNvbW1hbmQoKVwiXG4gICAgICAgICAgICBbZGV2aWNlTmFtZV09XCJkZXZpY2VOYW1lXCJcbiAgICAgICAgPjwvaT5cbiAgICAgICAgPGJzdS1odHJlZS1jcmVhdGUtbmV3XG4gICAgICAgICAgICAqbmdJZj1cImFjY2Vzcz8uQWRkICE9PSBmYWxzZSAmJiAhaW5EaWFsb2dcIlxuICAgICAgICAgICAgW25vZGVdPVwibm9kZVwiXG4gICAgICAgICAgICBbcmVsYXRpb25MaXN0XT1cInJlbGF0aW9uTGlzdFwiXG4gICAgICAgICAgICAoY3JlYXRlTmV3KT1cIm9uQ3JlYXRlTmV3KCRldmVudClcIlxuICAgICAgICA+PC9ic3UtaHRyZWUtY3JlYXRlLW5ldz5cbiAgICA8L2Rpdj5cbiAgICA8ZmRwLWJ1dHRvblxuICAgICAgICAqbmdJZj1cImFjY2Vzcz8uVmlldyAmJiAhc2hvd09rQ2FuY2VsQnV0dG9ucyAmJiBkZXZpY2VOYW1lICE9PSAnZGVza3RvcCdcIlxuICAgICAgICBbZ2x5cGhdPVwibmF2aWdhdGlvbkFycm93XCJcbiAgICAgICAgYnV0dG9uVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgKGNsaWNrKT1cIm9uTm9kZVZpZXdDbGljaygpXCJcbiAgICA+PC9mZHAtYnV0dG9uPlxuXG4gICAgPGJzdS1iYXJzYS10cmVlLWl0ZW1cbiAgICAgICAgKmNka0RyYWdQcmV2aWV3XG4gICAgICAgIFtub2RlXT1cIm5vZGVcIlxuICAgICAgICBbcnRsXT1cInJ0bFwiXG4gICAgICAgIFtzZWxlY3RlZE5vZGVdPVwic2VsZWN0ZWROb2RlXCJcbiAgICAgICAgW2hhc0Fycm93SWNvbl09XCJmYWxzZVwiXG4gICAgPjwvYnN1LWJhcnNhLXRyZWUtaXRlbT5cbjwvbGk+XG48bmctdGVtcGxhdGUgI2VtcHR5QnRuPlxuICAgIDxkaXYgY2xhc3M9XCJlbXB0eS1jb250YWluZXJcIiAqbmdJZj1cIiFwYXJlbnROb2RlPy5oYXNPbmVEZXB0aExldmVsXCIgKGNsaWNrKT1cIm9uUm93Q2hlY2soKVwiPlxuICAgICAgICA8YnV0dG9uIGZkLWJ1dHRvbj48L2J1dHRvbj5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=