barsa-sap-ui 2.2.5 → 2.2.7

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.
@@ -96,11 +96,11 @@ export class BarsaTreeItemComponent extends BaseViewItemPropsComponent {
96
96
  this.dragMoved.emit($event);
97
97
  }
98
98
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BarsaTreeItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
99
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: BarsaTreeItemComponent, selector: "bsu-barsa-tree-item", inputs: { node: "node", selectedNode: "selectedNode", relationList: "relationList", hideOpenIcon: "hideOpenIcon", hasArrowIcon: "hasArrowIcon", collapseIcon: "collapseIcon", loading: "loading", hasChildren: "hasChildren", leafCursorPointer: "leafCursorPointer", isExpand: "isExpand", children: "children", parentNode: "parentNode", text: "text", icon: "icon", color: "color", isHetro: "isHetro", enableNodeReordering: "enableNodeReordering", hideIcon: "hideIcon" }, outputs: { createNew: "createNew", select: "select", checkChange: "checkChange", viewClick: "viewClick", loadChildren: "loadChildren", dragMoved: "dragMoved" }, usesInheritance: true, ngImport: i0, template: "<li\r\n fd-list-item\r\n #liEl\r\n [class.!tw-cursor-pointer]=\"leafCursorPointer\"\r\n [applyConditionalFormats]=\"conditionalFormats\"\r\n [styleIndex]=\"styleIndex\"\r\n [hostEl]=\"liEl\"\r\n [focusable]=\"true\"\r\n [attr.level]=\"level\"\r\n [class.root-group]=\"level === 1\"\r\n [interactive]=\"true\"\r\n [selected]=\"isChecked\"\r\n (dblclick)=\"onNodeViewClick()\"\r\n cdkDrag\r\n [cdkDragDisabled]=\"!enableNodeReordering\"\r\n [cdkDragData]=\"node.Data.Id\"\r\n [class.isdirty]=\"isdirty\"\r\n (cdkDragMoved)=\"onDragMoved($event)\"\r\n (click)=\"openOnClick ? onNodeViewClick() : onListItemClick(liEl, $event)\"\r\n>\r\n <div (click)=\"onRowCheck()\" class=\"spacer\" [style.width]=\"(level - 1) * 4 + 'rem'\"></div>\r\n @if (enableNodeReordering && !isHetro) {\r\n <fd-icon glyph=\"grip\" font=\"BusinessSuiteInAppSymbols\" cdkDragHandle></fd-icon>\r\n } @if (inDialog && isMultiSelect) {\r\n <fd-checkbox [name]=\"node.Data.$Caption\" [ngModel]=\"isChecked\" (ngModelChange)=\"onCheckbox($event)\"></fd-checkbox>\r\n }\r\n\r\n <div (click)=\"onRowCheck()\" style=\"display: flex; width: 100%; justify-content: space-between\">\r\n <div style=\"display: flex; flex: 1; gap: 3px\">\r\n @if (hasArrowIcon) { @if (hasChildren) {\r\n <div class=\"arrow-container\">\r\n <button\r\n [attr.rtl]=\"rtl\"\r\n fd-button\r\n fdType=\"transparent\"\r\n class=\"arrow-children\"\r\n [fdCompact]\r\n [glyph]=\"hasChildren ? (isExpand ? 'slim-arrow-down' : collapseIcon) : ''\"\r\n (click)=\"onLoadChildren($event)\"\r\n (dblclick)=\"onExpandDblClick($event)\"\r\n ></button>\r\n </div>\r\n } @else { @if (!parentNode?.hasOneDepthLevel) {\r\n <div class=\"empty-container\" (click)=\"onRowCheck()\">\r\n <button fd-button></button>\r\n </div>\r\n } } @if (loading) {\r\n <fd-busy-indicator\r\n style=\"display: flex; align-items: center; width: 2rem\"\r\n size=\"s\"\r\n [loading]=\"true\"\r\n ></fd-busy-indicator>\r\n } @if(!hideIcon || appComponentIcon){ @if(icon || appComponentIcon){\r\n <i\r\n [style.color]=\"appComponentIconColor || color\"\r\n class=\"icon-item\"\r\n fd-list-icon\r\n [glyph]=\"appComponentIcon || icon\"\r\n ></i>\r\n }@else {\r\n <i fd-list-icon class=\"icon-item\" style=\"display: flex; align-items: center; justify-content: center\">\r\n <img [src]=\"node.icon\" width=\"16px\" />\r\n </i>\r\n } } }\r\n <div\r\n style=\"display: flex; flex: unset; align-items: center\"\r\n fd-list-title\r\n [focusable]=\"true\"\r\n #divEl\r\n intersectionObserver\r\n [intersectionThreshold]=\"0.1\"\r\n (visibilityChange)=\"onVisibilityChange(divEl, spanEl, $event)\"\r\n >\r\n <span class=\"ellapsis\" #spanEl [style.color]=\"color\" [class.haschildren]=\"hasChildren\">{{ text }}</span>\r\n @if (children) {\r\n <span>{{ ' ( ' + children.length + ' )' }}</span>\r\n }\r\n </div>\r\n </div>\r\n @if (contextMenuItems && contextMenuItems.length > 0) {\r\n <i\r\n ulvContextMenu\r\n [allColumns]=\"allColumns\"\r\n [menuItems]=\"contextMenuItems\"\r\n [conditionalFormats]=\"conditionalFormats\"\r\n [styleIndex]=\"styleIndex\"\r\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\r\n [mo]=\"node.Data\"\r\n [index]=\"index\"\r\n (commandClick)=\"onUlvCommand()\"\r\n [deviceName]=\"deviceName\"\r\n ></i>\r\n } @if (access?.Add !== false && !inDialog) {\r\n <bsu-htree-create-new\r\n [node]=\"node\"\r\n [relationList]=\"relationList\"\r\n (createNew)=\"onCreateNew($event)\"\r\n ></bsu-htree-create-new>\r\n }\r\n </div>\r\n @if (access?.View && !showOkCancelButtons && deviceName !== 'desktop' && !hideOpenIcon) {\r\n <button fd-button [glyph]=\"navigationArrow\" fdType=\"transparent\" (click)=\"onNodeViewClick()\"></button>\r\n } @if (actionList?.length && !inlineEditMode) {\r\n <bsu-barsa-row-inline-actionlist\r\n [actionList]=\"actionList\"\r\n (btnClick)=\"actionListClick.emit($event)\"\r\n ></bsu-barsa-row-inline-actionlist>\r\n }\r\n\r\n <bsu-barsa-tree-item\r\n *cdkDragPreview\r\n [node]=\"node\"\r\n [rtl]=\"rtl\"\r\n [selectedNode]=\"selectedNode\"\r\n [hasArrowIcon]=\"false\"\r\n ></bsu-barsa-tree-item>\r\n</li>\r\n", styles: [":host{display:block}li.isdirty{background:url(/Lib/ui/resources/images/default/grid/dirty.gif);background-repeat:no-repeat}li .cdk-drag-handle{opacity:.5;cursor:move}li .spacer{height:100%}li .arrow-children{border:none!important;background:transparent!important;color:var(--sapButton_Lite_TextColor)!important}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 .empty-container{visibility:hidden!important}.cdk-drag{cursor:default}.tree-icon-children{cursor:pointer}.icon-item{width:1rem}\n"], dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.IntersectionObserverDirective, selector: "[intersectionObserver]", inputs: ["intersectionDebounce", "intersectionRootMargin", "intersectionRoot", "intersectionThreshold"], outputs: ["visibilityChange"] }, { kind: "directive", type: i3.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i3.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "directive", type: i3.CdkDragPreview, selector: "ng-template[cdkDragPreview]", inputs: ["data", "matchSize"] }, { kind: "directive", type: i4.ContentDensityDirective, selector: "[fdContentDensity]:not([fdCompact]):not([fdCondensed]):not([fdCozy]), [fdCompact]:not([fdContentDensity]):not([fdCondensed]):not([fdCozy]), [fdCondensed]:not([fdContentDensity]):not([fdCompact]):not([fdCozy]), [fdCozy]:not([fdContentDensity]):not([fdCompact]):not([fdCondensed])", inputs: ["fdContentDensity", "fdCompact", "fdCondensed", "fdCozy"], exportAs: ["fdContentDensity"] }, { kind: "component", type: i5.BusyIndicatorComponent, selector: "fd-busy-indicator", inputs: ["loading", "size", "block", "ariaLabel", "title", "label", "ariaLive"] }, { kind: "component", type: i6.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i7.CheckboxComponent, selector: "fd-checkbox", inputs: ["wrapLabel", "valignLabel", "ariaLabel", "role", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "readonly", "tristate", "tristateSelectable", "labelClass", "required", "displayOnly", "values", "standalone"], outputs: ["focusChange"] }, { kind: "component", type: i8.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "class", "ariaLabel", "ariaHidden"] }, { kind: "component", type: i9.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "noData", "action", "interactive", "growing", "counter", "unread", "byline", "ariaRole", "id"], outputs: ["keyDown"] }, { kind: "directive", type: i9.ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "directive", type: i9.ListIconDirective, selector: "[fdListIcon], [fd-list-icon]", inputs: ["glyph", "glyphFont", "class", "role", "ariaHidden"] }, { kind: "component", type: i10.UlvContextMenuComponent, selector: "bsu-ulv-context-menu,[ulvContextMenu]", inputs: ["onlyOverflow", "rightClickEnable", "deviceName", "menuItems", "allColumns", "index", "mo", "styleIndex", "conditionalFormats", "disableOverflowContextMenu", "footerMode", "contextMenuOverflowText", "appendTo"], outputs: ["commandClick"] }, { kind: "component", type: BarsaTreeItemComponent, selector: "bsu-barsa-tree-item", inputs: ["node", "selectedNode", "relationList", "hideOpenIcon", "hasArrowIcon", "collapseIcon", "loading", "hasChildren", "leafCursorPointer", "isExpand", "children", "parentNode", "text", "icon", "color", "isHetro", "enableNodeReordering", "hideIcon"], outputs: ["createNew", "select", "checkChange", "viewClick", "loadChildren", "dragMoved"] }, { kind: "component", type: i11.HtreeCreateNewComponent, selector: "bsu-htree-create-new", inputs: ["relationList", "node"], outputs: ["createNew"] }, { kind: "component", type: i12.BarsaRowInlineActionlistComponent, selector: "bsu-barsa-row-inline-actionlist", inputs: ["actionList", "mo", "index"], outputs: ["btnClick"] }, { kind: "directive", type: i13.ApplyConditionalFormatsDirective, selector: "[applyConditionalFormats]", inputs: ["applyConditionalFormats", "styleIndex", "hostEl", "dbName"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
99
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: BarsaTreeItemComponent, selector: "bsu-barsa-tree-item", inputs: { node: "node", selectedNode: "selectedNode", relationList: "relationList", hideOpenIcon: "hideOpenIcon", hasArrowIcon: "hasArrowIcon", collapseIcon: "collapseIcon", loading: "loading", hasChildren: "hasChildren", leafCursorPointer: "leafCursorPointer", isExpand: "isExpand", children: "children", parentNode: "parentNode", text: "text", icon: "icon", color: "color", isHetro: "isHetro", enableNodeReordering: "enableNodeReordering", hideIcon: "hideIcon" }, outputs: { createNew: "createNew", select: "select", checkChange: "checkChange", viewClick: "viewClick", loadChildren: "loadChildren", dragMoved: "dragMoved" }, usesInheritance: true, ngImport: i0, template: "<li\r\n fd-list-item\r\n #liEl\r\n [class.!tw-cursor-pointer]=\"leafCursorPointer\"\r\n [applyConditionalFormats]=\"conditionalFormats\"\r\n [styleIndex]=\"styleIndex\"\r\n [hostEl]=\"liEl\"\r\n [focusable]=\"true\"\r\n [attr.level]=\"level\"\r\n [class.root-group]=\"level === 1\"\r\n [interactive]=\"true\"\r\n [selected]=\"isChecked\"\r\n (dblclick)=\"onNodeViewClick()\"\r\n cdkDrag\r\n [cdkDragDisabled]=\"!enableNodeReordering\"\r\n [cdkDragData]=\"node.Data.Id\"\r\n [class.isdirty]=\"isdirty\"\r\n (cdkDragMoved)=\"onDragMoved($event)\"\r\n (click)=\"openOnClick ? onNodeViewClick() : onListItemClick(liEl, $event)\"\r\n>\r\n <div (click)=\"onRowCheck()\" class=\"spacer\" [style.width]=\"(level - 1) * 4 + 'rem'\"></div>\r\n @if (enableNodeReordering && !isHetro) {\r\n <fd-icon glyph=\"grip\" font=\"BusinessSuiteInAppSymbols\" cdkDragHandle></fd-icon>\r\n } @if (inDialog && isMultiSelect) {\r\n <fd-checkbox [name]=\"node.Data.$Caption\" [ngModel]=\"isChecked\" (ngModelChange)=\"onCheckbox($event)\"></fd-checkbox>\r\n }\r\n\r\n <div (click)=\"onRowCheck()\" style=\"display: flex; width: 100%; justify-content: space-between\">\r\n <div style=\"display: flex; flex: 1; gap: 3px\">\r\n @if (hasArrowIcon) { @if (hasChildren) {\r\n <div class=\"arrow-container\">\r\n <button\r\n [attr.rtl]=\"rtl\"\r\n fd-button\r\n fdType=\"transparent\"\r\n class=\"arrow-children\"\r\n [fdCompact]\r\n [glyph]=\"hasChildren ? (isExpand ? 'slim-arrow-down' : collapseIcon) : ''\"\r\n (click)=\"onLoadChildren($event)\"\r\n (dblclick)=\"onExpandDblClick($event)\"\r\n ></button>\r\n </div>\r\n } @else { @if (!parentNode?.hasOneDepthLevel) {\r\n <div class=\"empty-container\" (click)=\"onRowCheck()\">\r\n <button fd-button></button>\r\n </div>\r\n } } @if (loading) {\r\n <fd-busy-indicator\r\n style=\"display: flex; align-items: center; width: 2rem\"\r\n size=\"s\"\r\n [loading]=\"true\"\r\n ></fd-busy-indicator>\r\n } @if(!hideIcon || appComponentIcon){ @if(icon || appComponentIcon){\r\n <i\r\n [style.color]=\"appComponentIconColor || color\"\r\n class=\"icon-item\"\r\n fd-list-icon\r\n [glyph]=\"appComponentIcon || icon\"\r\n ></i>\r\n }@else {\r\n <i fd-list-icon class=\"icon-item\" style=\"display: flex; align-items: center; justify-content: center\">\r\n <img [src]=\"node.icon\" width=\"16px\" />\r\n </i>\r\n } } }\r\n <div\r\n style=\"display: flex; flex: unset; align-items: center\"\r\n fd-list-title\r\n [focusable]=\"true\"\r\n #divEl\r\n [style.color]=\"styleIndex ? 'inherit' : color\"\r\n intersectionObserver\r\n [intersectionThreshold]=\"0.1\"\r\n (visibilityChange)=\"onVisibilityChange(divEl, spanEl, $event)\"\r\n >\r\n <span\r\n class=\"ellapsis\"\r\n #spanEl\r\n [style.color]=\"styleIndex ? 'inherit' : color\"\r\n [class.haschildren]=\"hasChildren\"\r\n >{{ text }}</span\r\n >\r\n @if (children) {\r\n <span>{{ ' ( ' + children.length + ' )' }}</span>\r\n }\r\n </div>\r\n </div>\r\n @if (contextMenuItems && contextMenuItems.length > 0) {\r\n <i\r\n ulvContextMenu\r\n [allColumns]=\"allColumns\"\r\n [menuItems]=\"contextMenuItems\"\r\n [conditionalFormats]=\"conditionalFormats\"\r\n [styleIndex]=\"styleIndex\"\r\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\r\n [mo]=\"node.Data\"\r\n [index]=\"index\"\r\n (commandClick)=\"onUlvCommand()\"\r\n [deviceName]=\"deviceName\"\r\n ></i>\r\n } @if (access?.Add !== false && !inDialog) {\r\n <bsu-htree-create-new\r\n [node]=\"node\"\r\n [relationList]=\"relationList\"\r\n (createNew)=\"onCreateNew($event)\"\r\n ></bsu-htree-create-new>\r\n }\r\n </div>\r\n @if (access?.View && !showOkCancelButtons && deviceName !== 'desktop' && !hideOpenIcon) {\r\n <button fd-button [glyph]=\"navigationArrow\" fdType=\"transparent\" (click)=\"onNodeViewClick()\"></button>\r\n } @if (actionList?.length && !inlineEditMode) {\r\n <bsu-barsa-row-inline-actionlist\r\n [actionList]=\"actionList\"\r\n (btnClick)=\"actionListClick.emit($event)\"\r\n ></bsu-barsa-row-inline-actionlist>\r\n }\r\n\r\n <bsu-barsa-tree-item\r\n *cdkDragPreview\r\n [node]=\"node\"\r\n [rtl]=\"rtl\"\r\n [selectedNode]=\"selectedNode\"\r\n [hasArrowIcon]=\"false\"\r\n ></bsu-barsa-tree-item>\r\n</li>\r\n", styles: [":host{display:block}li.isdirty{background:url(/Lib/ui/resources/images/default/grid/dirty.gif);background-repeat:no-repeat}li .cdk-drag-handle{opacity:.5;cursor:move}li .spacer{height:100%}li .arrow-children{border:none!important;background:transparent!important;color:var(--sapButton_Lite_TextColor)!important}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 .empty-container{visibility:hidden!important}.cdk-drag{cursor:default}.tree-icon-children{cursor:pointer}.icon-item{width:1rem}\n"], dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.IntersectionObserverDirective, selector: "[intersectionObserver]", inputs: ["intersectionDebounce", "intersectionRootMargin", "intersectionRoot", "intersectionThreshold"], outputs: ["visibilityChange"] }, { kind: "directive", type: i3.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i3.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "directive", type: i3.CdkDragPreview, selector: "ng-template[cdkDragPreview]", inputs: ["data", "matchSize"] }, { kind: "directive", type: i4.ContentDensityDirective, selector: "[fdContentDensity]:not([fdCompact]):not([fdCondensed]):not([fdCozy]), [fdCompact]:not([fdContentDensity]):not([fdCondensed]):not([fdCozy]), [fdCondensed]:not([fdContentDensity]):not([fdCompact]):not([fdCozy]), [fdCozy]:not([fdContentDensity]):not([fdCompact]):not([fdCondensed])", inputs: ["fdContentDensity", "fdCompact", "fdCondensed", "fdCozy"], exportAs: ["fdContentDensity"] }, { kind: "component", type: i5.BusyIndicatorComponent, selector: "fd-busy-indicator", inputs: ["loading", "size", "block", "ariaLabel", "title", "label", "ariaLive"] }, { kind: "component", type: i6.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i7.CheckboxComponent, selector: "fd-checkbox", inputs: ["wrapLabel", "valignLabel", "ariaLabel", "role", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "readonly", "tristate", "tristateSelectable", "labelClass", "required", "displayOnly", "values", "standalone"], outputs: ["focusChange"] }, { kind: "component", type: i8.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "class", "ariaLabel", "ariaHidden"] }, { kind: "component", type: i9.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "noData", "action", "interactive", "growing", "counter", "unread", "byline", "ariaRole", "id"], outputs: ["keyDown"] }, { kind: "directive", type: i9.ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "directive", type: i9.ListIconDirective, selector: "[fdListIcon], [fd-list-icon]", inputs: ["glyph", "glyphFont", "class", "role", "ariaHidden"] }, { kind: "component", type: i10.UlvContextMenuComponent, selector: "bsu-ulv-context-menu,[ulvContextMenu]", inputs: ["onlyOverflow", "rightClickEnable", "deviceName", "menuItems", "allColumns", "index", "mo", "styleIndex", "conditionalFormats", "disableOverflowContextMenu", "footerMode", "contextMenuOverflowText", "appendTo"], outputs: ["commandClick"] }, { kind: "component", type: BarsaTreeItemComponent, selector: "bsu-barsa-tree-item", inputs: ["node", "selectedNode", "relationList", "hideOpenIcon", "hasArrowIcon", "collapseIcon", "loading", "hasChildren", "leafCursorPointer", "isExpand", "children", "parentNode", "text", "icon", "color", "isHetro", "enableNodeReordering", "hideIcon"], outputs: ["createNew", "select", "checkChange", "viewClick", "loadChildren", "dragMoved"] }, { kind: "component", type: i11.HtreeCreateNewComponent, selector: "bsu-htree-create-new", inputs: ["relationList", "node"], outputs: ["createNew"] }, { kind: "component", type: i12.BarsaRowInlineActionlistComponent, selector: "bsu-barsa-row-inline-actionlist", inputs: ["actionList", "mo", "index"], outputs: ["btnClick"] }, { kind: "directive", type: i13.ApplyConditionalFormatsDirective, selector: "[applyConditionalFormats]", inputs: ["applyConditionalFormats", "styleIndex", "hostEl", "dbName"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
100
100
  }
101
101
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BarsaTreeItemComponent, decorators: [{
102
102
  type: Component,
103
- args: [{ selector: 'bsu-barsa-tree-item', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<li\r\n fd-list-item\r\n #liEl\r\n [class.!tw-cursor-pointer]=\"leafCursorPointer\"\r\n [applyConditionalFormats]=\"conditionalFormats\"\r\n [styleIndex]=\"styleIndex\"\r\n [hostEl]=\"liEl\"\r\n [focusable]=\"true\"\r\n [attr.level]=\"level\"\r\n [class.root-group]=\"level === 1\"\r\n [interactive]=\"true\"\r\n [selected]=\"isChecked\"\r\n (dblclick)=\"onNodeViewClick()\"\r\n cdkDrag\r\n [cdkDragDisabled]=\"!enableNodeReordering\"\r\n [cdkDragData]=\"node.Data.Id\"\r\n [class.isdirty]=\"isdirty\"\r\n (cdkDragMoved)=\"onDragMoved($event)\"\r\n (click)=\"openOnClick ? onNodeViewClick() : onListItemClick(liEl, $event)\"\r\n>\r\n <div (click)=\"onRowCheck()\" class=\"spacer\" [style.width]=\"(level - 1) * 4 + 'rem'\"></div>\r\n @if (enableNodeReordering && !isHetro) {\r\n <fd-icon glyph=\"grip\" font=\"BusinessSuiteInAppSymbols\" cdkDragHandle></fd-icon>\r\n } @if (inDialog && isMultiSelect) {\r\n <fd-checkbox [name]=\"node.Data.$Caption\" [ngModel]=\"isChecked\" (ngModelChange)=\"onCheckbox($event)\"></fd-checkbox>\r\n }\r\n\r\n <div (click)=\"onRowCheck()\" style=\"display: flex; width: 100%; justify-content: space-between\">\r\n <div style=\"display: flex; flex: 1; gap: 3px\">\r\n @if (hasArrowIcon) { @if (hasChildren) {\r\n <div class=\"arrow-container\">\r\n <button\r\n [attr.rtl]=\"rtl\"\r\n fd-button\r\n fdType=\"transparent\"\r\n class=\"arrow-children\"\r\n [fdCompact]\r\n [glyph]=\"hasChildren ? (isExpand ? 'slim-arrow-down' : collapseIcon) : ''\"\r\n (click)=\"onLoadChildren($event)\"\r\n (dblclick)=\"onExpandDblClick($event)\"\r\n ></button>\r\n </div>\r\n } @else { @if (!parentNode?.hasOneDepthLevel) {\r\n <div class=\"empty-container\" (click)=\"onRowCheck()\">\r\n <button fd-button></button>\r\n </div>\r\n } } @if (loading) {\r\n <fd-busy-indicator\r\n style=\"display: flex; align-items: center; width: 2rem\"\r\n size=\"s\"\r\n [loading]=\"true\"\r\n ></fd-busy-indicator>\r\n } @if(!hideIcon || appComponentIcon){ @if(icon || appComponentIcon){\r\n <i\r\n [style.color]=\"appComponentIconColor || color\"\r\n class=\"icon-item\"\r\n fd-list-icon\r\n [glyph]=\"appComponentIcon || icon\"\r\n ></i>\r\n }@else {\r\n <i fd-list-icon class=\"icon-item\" style=\"display: flex; align-items: center; justify-content: center\">\r\n <img [src]=\"node.icon\" width=\"16px\" />\r\n </i>\r\n } } }\r\n <div\r\n style=\"display: flex; flex: unset; align-items: center\"\r\n fd-list-title\r\n [focusable]=\"true\"\r\n #divEl\r\n intersectionObserver\r\n [intersectionThreshold]=\"0.1\"\r\n (visibilityChange)=\"onVisibilityChange(divEl, spanEl, $event)\"\r\n >\r\n <span class=\"ellapsis\" #spanEl [style.color]=\"color\" [class.haschildren]=\"hasChildren\">{{ text }}</span>\r\n @if (children) {\r\n <span>{{ ' ( ' + children.length + ' )' }}</span>\r\n }\r\n </div>\r\n </div>\r\n @if (contextMenuItems && contextMenuItems.length > 0) {\r\n <i\r\n ulvContextMenu\r\n [allColumns]=\"allColumns\"\r\n [menuItems]=\"contextMenuItems\"\r\n [conditionalFormats]=\"conditionalFormats\"\r\n [styleIndex]=\"styleIndex\"\r\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\r\n [mo]=\"node.Data\"\r\n [index]=\"index\"\r\n (commandClick)=\"onUlvCommand()\"\r\n [deviceName]=\"deviceName\"\r\n ></i>\r\n } @if (access?.Add !== false && !inDialog) {\r\n <bsu-htree-create-new\r\n [node]=\"node\"\r\n [relationList]=\"relationList\"\r\n (createNew)=\"onCreateNew($event)\"\r\n ></bsu-htree-create-new>\r\n }\r\n </div>\r\n @if (access?.View && !showOkCancelButtons && deviceName !== 'desktop' && !hideOpenIcon) {\r\n <button fd-button [glyph]=\"navigationArrow\" fdType=\"transparent\" (click)=\"onNodeViewClick()\"></button>\r\n } @if (actionList?.length && !inlineEditMode) {\r\n <bsu-barsa-row-inline-actionlist\r\n [actionList]=\"actionList\"\r\n (btnClick)=\"actionListClick.emit($event)\"\r\n ></bsu-barsa-row-inline-actionlist>\r\n }\r\n\r\n <bsu-barsa-tree-item\r\n *cdkDragPreview\r\n [node]=\"node\"\r\n [rtl]=\"rtl\"\r\n [selectedNode]=\"selectedNode\"\r\n [hasArrowIcon]=\"false\"\r\n ></bsu-barsa-tree-item>\r\n</li>\r\n", styles: [":host{display:block}li.isdirty{background:url(/Lib/ui/resources/images/default/grid/dirty.gif);background-repeat:no-repeat}li .cdk-drag-handle{opacity:.5;cursor:move}li .spacer{height:100%}li .arrow-children{border:none!important;background:transparent!important;color:var(--sapButton_Lite_TextColor)!important}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 .empty-container{visibility:hidden!important}.cdk-drag{cursor:default}.tree-icon-children{cursor:pointer}.icon-item{width:1rem}\n"] }]
103
+ args: [{ selector: 'bsu-barsa-tree-item', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<li\r\n fd-list-item\r\n #liEl\r\n [class.!tw-cursor-pointer]=\"leafCursorPointer\"\r\n [applyConditionalFormats]=\"conditionalFormats\"\r\n [styleIndex]=\"styleIndex\"\r\n [hostEl]=\"liEl\"\r\n [focusable]=\"true\"\r\n [attr.level]=\"level\"\r\n [class.root-group]=\"level === 1\"\r\n [interactive]=\"true\"\r\n [selected]=\"isChecked\"\r\n (dblclick)=\"onNodeViewClick()\"\r\n cdkDrag\r\n [cdkDragDisabled]=\"!enableNodeReordering\"\r\n [cdkDragData]=\"node.Data.Id\"\r\n [class.isdirty]=\"isdirty\"\r\n (cdkDragMoved)=\"onDragMoved($event)\"\r\n (click)=\"openOnClick ? onNodeViewClick() : onListItemClick(liEl, $event)\"\r\n>\r\n <div (click)=\"onRowCheck()\" class=\"spacer\" [style.width]=\"(level - 1) * 4 + 'rem'\"></div>\r\n @if (enableNodeReordering && !isHetro) {\r\n <fd-icon glyph=\"grip\" font=\"BusinessSuiteInAppSymbols\" cdkDragHandle></fd-icon>\r\n } @if (inDialog && isMultiSelect) {\r\n <fd-checkbox [name]=\"node.Data.$Caption\" [ngModel]=\"isChecked\" (ngModelChange)=\"onCheckbox($event)\"></fd-checkbox>\r\n }\r\n\r\n <div (click)=\"onRowCheck()\" style=\"display: flex; width: 100%; justify-content: space-between\">\r\n <div style=\"display: flex; flex: 1; gap: 3px\">\r\n @if (hasArrowIcon) { @if (hasChildren) {\r\n <div class=\"arrow-container\">\r\n <button\r\n [attr.rtl]=\"rtl\"\r\n fd-button\r\n fdType=\"transparent\"\r\n class=\"arrow-children\"\r\n [fdCompact]\r\n [glyph]=\"hasChildren ? (isExpand ? 'slim-arrow-down' : collapseIcon) : ''\"\r\n (click)=\"onLoadChildren($event)\"\r\n (dblclick)=\"onExpandDblClick($event)\"\r\n ></button>\r\n </div>\r\n } @else { @if (!parentNode?.hasOneDepthLevel) {\r\n <div class=\"empty-container\" (click)=\"onRowCheck()\">\r\n <button fd-button></button>\r\n </div>\r\n } } @if (loading) {\r\n <fd-busy-indicator\r\n style=\"display: flex; align-items: center; width: 2rem\"\r\n size=\"s\"\r\n [loading]=\"true\"\r\n ></fd-busy-indicator>\r\n } @if(!hideIcon || appComponentIcon){ @if(icon || appComponentIcon){\r\n <i\r\n [style.color]=\"appComponentIconColor || color\"\r\n class=\"icon-item\"\r\n fd-list-icon\r\n [glyph]=\"appComponentIcon || icon\"\r\n ></i>\r\n }@else {\r\n <i fd-list-icon class=\"icon-item\" style=\"display: flex; align-items: center; justify-content: center\">\r\n <img [src]=\"node.icon\" width=\"16px\" />\r\n </i>\r\n } } }\r\n <div\r\n style=\"display: flex; flex: unset; align-items: center\"\r\n fd-list-title\r\n [focusable]=\"true\"\r\n #divEl\r\n [style.color]=\"styleIndex ? 'inherit' : color\"\r\n intersectionObserver\r\n [intersectionThreshold]=\"0.1\"\r\n (visibilityChange)=\"onVisibilityChange(divEl, spanEl, $event)\"\r\n >\r\n <span\r\n class=\"ellapsis\"\r\n #spanEl\r\n [style.color]=\"styleIndex ? 'inherit' : color\"\r\n [class.haschildren]=\"hasChildren\"\r\n >{{ text }}</span\r\n >\r\n @if (children) {\r\n <span>{{ ' ( ' + children.length + ' )' }}</span>\r\n }\r\n </div>\r\n </div>\r\n @if (contextMenuItems && contextMenuItems.length > 0) {\r\n <i\r\n ulvContextMenu\r\n [allColumns]=\"allColumns\"\r\n [menuItems]=\"contextMenuItems\"\r\n [conditionalFormats]=\"conditionalFormats\"\r\n [styleIndex]=\"styleIndex\"\r\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\r\n [mo]=\"node.Data\"\r\n [index]=\"index\"\r\n (commandClick)=\"onUlvCommand()\"\r\n [deviceName]=\"deviceName\"\r\n ></i>\r\n } @if (access?.Add !== false && !inDialog) {\r\n <bsu-htree-create-new\r\n [node]=\"node\"\r\n [relationList]=\"relationList\"\r\n (createNew)=\"onCreateNew($event)\"\r\n ></bsu-htree-create-new>\r\n }\r\n </div>\r\n @if (access?.View && !showOkCancelButtons && deviceName !== 'desktop' && !hideOpenIcon) {\r\n <button fd-button [glyph]=\"navigationArrow\" fdType=\"transparent\" (click)=\"onNodeViewClick()\"></button>\r\n } @if (actionList?.length && !inlineEditMode) {\r\n <bsu-barsa-row-inline-actionlist\r\n [actionList]=\"actionList\"\r\n (btnClick)=\"actionListClick.emit($event)\"\r\n ></bsu-barsa-row-inline-actionlist>\r\n }\r\n\r\n <bsu-barsa-tree-item\r\n *cdkDragPreview\r\n [node]=\"node\"\r\n [rtl]=\"rtl\"\r\n [selectedNode]=\"selectedNode\"\r\n [hasArrowIcon]=\"false\"\r\n ></bsu-barsa-tree-item>\r\n</li>\r\n", styles: [":host{display:block}li.isdirty{background:url(/Lib/ui/resources/images/default/grid/dirty.gif);background-repeat:no-repeat}li .cdk-drag-handle{opacity:.5;cursor:move}li .spacer{height:100%}li .arrow-children{border:none!important;background:transparent!important;color:var(--sapButton_Lite_TextColor)!important}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 .empty-container{visibility:hidden!important}.cdk-drag{cursor:default}.tree-icon-children{cursor:pointer}.icon-item{width:1rem}\n"] }]
104
104
  }], propDecorators: { node: [{
105
105
  type: Input
106
106
  }], selectedNode: [{
@@ -150,4 +150,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
150
150
  }], dragMoved: [{
151
151
  type: Output
152
152
  }] } });
153
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyc2EtdHJlZS1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXNhcC11aS9zcmMvbGliL2JhcnNhLXRyZWUtaXRlbS9iYXJzYS10cmVlLWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvYmFyc2EtdHJlZS1pdGVtL2JhcnNhLXRyZWUtaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1QsTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFJSCwwQkFBMEIsRUFDMUIsUUFBUSxFQUNYLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQVM5QixNQUFNLE9BQU8sc0JBQXVCLFNBQVEsMEJBQTBCO0lBUHRFOztRQVlhLGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBZTdCLG9CQUFvQjtRQUNWLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBb0IsQ0FBQztRQUNqRCxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBRy9CLENBQUM7UUFDSyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUlwQyxDQUFDO1FBQ0ssY0FBUyxHQUFHLElBQUksWUFBWSxFQUdsQyxDQUFDO1FBQ0ssaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBdUIsQ0FBQztRQUN2RCxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUVqRCxxQkFBZ0IsR0FBa0IsSUFBSSxDQUFDO1FBQ3ZDLDBCQUFxQixHQUFrQixJQUFJLENBQUM7UUFDNUMsWUFBTyxHQUFHO1lBQ04sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxnQ0FBZ0MsRUFBRTtZQUN6RDtnQkFDSSxJQUFJLEVBQUUsUUFBUTtnQkFDZCxNQUFNLEVBQUUsbUNBQW1DO2FBQzlDO1NBQ0osQ0FBQztRQUNGLGVBQVUsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7S0FvRWxDO0lBbkVHLFFBQVE7UUFDSixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsbUNBQW1DLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDMUcsSUFBSSxDQUFDLHFCQUFxQixHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FDekQsSUFBSSxFQUNKLHdDQUF3QyxFQUN4QyxJQUFJLENBQ1AsQ0FBQztRQUNGLDRDQUE0QztRQUM1Qyw0QkFBNEI7UUFDNUIsSUFBSTtJQUNSLENBQUM7SUFDRCxrQkFBa0IsQ0FBQyxLQUFrQixFQUFFLE1BQW1CLEVBQUUsQ0FBQztRQUN6RCxJQUFJLENBQUMsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNsQixNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDekQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxZQUFZLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDdkUsQ0FBQztJQUNMLENBQUM7SUFDRCxlQUFlLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLENBQUMsTUFBTSxLQUFLLElBQUksRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLENBQUM7WUFDL0MsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3RCLENBQUM7SUFDTCxDQUFDO0lBQ0QsVUFBVSxDQUFDLE9BQWdCO1FBQ3ZCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBQ0QsVUFBVTtRQUNOLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdEMsT0FBTztRQUNYLENBQUM7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsWUFBWTtRQUNSLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsZUFBZTtRQUNYLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQsY0FBYyxDQUFDLENBQUM7UUFDWixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUNwQixDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELGdCQUFnQixDQUFDLENBQUM7UUFDZCxDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDcEIsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxXQUFXLENBQUMsQ0FBQztRQUNULElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3RCLENBQUM7UUFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBQ0QsV0FBVyxDQUFDLFdBQW1CO1FBQzNCLE1BQU0sT0FBTyxHQUFHLElBQUksUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzFDLE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUNELFdBQVcsQ0FBQyxNQUFNO1FBQ2QsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDZixPQUFPO1FBQ1gsQ0FBQztRQUNELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7K0dBbEhRLHNCQUFzQjttR0FBdEIsc0JBQXNCLHFzQkMzQm5DLDIvSkFxSEEsaWxJRDFGYSxzQkFBc0I7OzRGQUF0QixzQkFBc0I7a0JBUGxDLFNBQVM7K0JBQ0kscUJBQXFCLG1CQUdkLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsS0FBSzs4QkFHUixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBR0ksU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBSUcsV0FBVztzQkFBcEIsTUFBTTtnQkFLRyxTQUFTO3NCQUFsQixNQUFNO2dCQUlHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICAgIENvbXBvbmVudCxcclxuICAgIEV2ZW50RW1pdHRlcixcclxuICAgIElucHV0LFxyXG4gICAgT25Jbml0LFxyXG4gICAgT3V0cHV0LFxyXG4gICAgUmVuZGVyZXIyLFxyXG4gICAgaW5qZWN0XHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7XHJcbiAgICBNZXRhb2JqZWN0RGF0YU1vZGVsLFxyXG4gICAgVHJlZU5vZGVPYmosXHJcbiAgICBSZWxhdGlvbkl0ZW1UeXBlLFxyXG4gICAgQmFzZVZpZXdJdGVtUHJvcHNDb21wb25lbnQsXHJcbiAgICBCYXJzYUFwaVxyXG59IGZyb20gJ2JhcnNhLW5vdmluLXJheS1jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdic3UtYmFyc2EtdHJlZS1pdGVtJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9iYXJzYS10cmVlLWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vYmFyc2EtdHJlZS1pdGVtLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICAgIHN0YW5kYWxvbmU6IGZhbHNlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCYXJzYVRyZWVJdGVtQ29tcG9uZW50IGV4dGVuZHMgQmFzZVZpZXdJdGVtUHJvcHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICAgQElucHV0KCkgbm9kZTogVHJlZU5vZGVPYmo7XHJcbiAgICBASW5wdXQoKSBzZWxlY3RlZE5vZGU6IE1ldGFvYmplY3REYXRhTW9kZWwgfCBudWxsO1xyXG4gICAgQElucHV0KCkgcmVsYXRpb25MaXN0OiBSZWxhdGlvbkl0ZW1UeXBlW107XHJcbiAgICBASW5wdXQoKSBoaWRlT3Blbkljb246IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBoYXNBcnJvd0ljb24gPSB0cnVlO1xyXG4gICAgQElucHV0KCkgY29sbGFwc2VJY29uOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBsb2FkaW5nOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgaGFzQ2hpbGRyZW46IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBsZWFmQ3Vyc29yUG9pbnRlcjogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGlzRXhwYW5kOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgY2hpbGRyZW46IFRyZWVOb2RlT2JqW107XHJcbiAgICBASW5wdXQoKSBwYXJlbnROb2RlOiBUcmVlTm9kZU9iajtcclxuICAgIEBJbnB1dCgpIHRleHQ6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIGljb246IHN0cmluZztcclxuICAgIEBJbnB1dCgpIGNvbG9yOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBpc0hldHJvOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgZW5hYmxlTm9kZVJlb3JkZXJpbmc6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBoaWRlSWNvbjogYm9vbGVhbjtcclxuXHJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xyXG4gICAgQE91dHB1dCgpIGNyZWF0ZU5ldyA9IG5ldyBFdmVudEVtaXR0ZXI8UmVsYXRpb25JdGVtVHlwZT4oKTtcclxuICAgIEBPdXRwdXQoKSBzZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPHtcclxuICAgICAgICBub2RlOiBUcmVlTm9kZU9iajtcclxuICAgICAgICBpbmRleDogbnVtYmVyO1xyXG4gICAgfT4oKTtcclxuICAgIEBPdXRwdXQoKSBjaGVja0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8e1xyXG4gICAgICAgIG5vZGU6IFRyZWVOb2RlT2JqO1xyXG4gICAgICAgIGluZGV4OiBudW1iZXI7XHJcbiAgICAgICAgY2hlY2tlZDogYm9vbGVhbjtcclxuICAgIH0+KCk7XHJcbiAgICBAT3V0cHV0KCkgdmlld0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjx7XHJcbiAgICAgICAgbm9kZTogTWV0YW9iamVjdERhdGFNb2RlbDtcclxuICAgICAgICBpbmRleDogbnVtYmVyO1xyXG4gICAgfT4oKTtcclxuICAgIEBPdXRwdXQoKSBsb2FkQ2hpbGRyZW4gPSBuZXcgRXZlbnRFbWl0dGVyPE1ldGFvYmplY3REYXRhTW9kZWw+KCk7XHJcbiAgICBAT3V0cHV0KCkgZHJhZ01vdmVkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgICBpY29uJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xyXG4gICAgYXBwQ29tcG9uZW50SWNvbjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgICBhcHBDb21wb25lbnRJY29uQ29sb3I6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gICAgcm93QnRucyA9IFtcclxuICAgICAgICB7IEljb246ICdhZGQnLCBBY3Rpb246ICdjb25zb2xlLmxvZyhcImFkZCBidG4gY2xpY2tlZFwiKScgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIEljb246ICdkZWxldGUnLFxyXG4gICAgICAgICAgICBBY3Rpb246ICdjb25zb2xlLmxvZyhcImRlbGV0ZSBidG4gY2xpY2tlZFwiKSdcclxuICAgICAgICB9XHJcbiAgICBdO1xyXG4gICAgX3JlbmRlcmVyMiA9IGluamVjdChSZW5kZXJlcjIpO1xyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcclxuICAgICAgICB0aGlzLmFwcENvbXBvbmVudEljb24gPSBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZSh0aGlzLCAnbm9kZS5EYXRhLkNvbXBvbmVudC5TZXR0aW5ncy5JY29uJywgbnVsbCk7XHJcbiAgICAgICAgdGhpcy5hcHBDb21wb25lbnRJY29uQ29sb3IgPSBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZShcclxuICAgICAgICAgICAgdGhpcyxcclxuICAgICAgICAgICAgJ25vZGUuRGF0YS5Db21wb25lbnQuU2V0dGluZ3MuSWNvbkNvbG9yJyxcclxuICAgICAgICAgICAgbnVsbFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgLy8gaWYgKCF0aGlzLm5vZGUuaWNvbi5zdGFydHNXaXRoKCdodHRwJykpIHtcclxuICAgICAgICAvLyAgICAgdGhpcy5oaWRlSWNvbiA9IHRydWU7XHJcbiAgICAgICAgLy8gfVxyXG4gICAgfVxyXG4gICAgb25WaXNpYmlsaXR5Q2hhbmdlKGRpdkVsOiBIVE1MRWxlbWVudCwgc3BhbkVsOiBIVE1MRWxlbWVudCwgZSk6IHZvaWQge1xyXG4gICAgICAgIGlmIChlID09PSAnVmlzaWJsZScpIHtcclxuICAgICAgICAgICAgY29uc3QgbWF4V2lkdGhUZXh0ID0gZGl2RWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XHJcbiAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyMi5zZXRTdHlsZShzcGFuRWwsICdtYXgtd2lkdGgnLCBtYXhXaWR0aFRleHQgKyAncHgnKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBvbkxpc3RJdGVtQ2xpY2sobGlFbCwgZSkge1xyXG4gICAgICAgIGlmIChlLnRhcmdldCA9PT0gbGlFbD8uZWxlbWVudFJlZj8ubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgICB0aGlzLm9uUm93Q2hlY2soKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBvbkNoZWNrYm94KGNoZWNrZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmNoZWNrQ2hhbmdlLmVtaXQoeyBub2RlOiB0aGlzLm5vZGUsIGluZGV4OiB0aGlzLmluZGV4LCBjaGVja2VkIH0pO1xyXG4gICAgfVxyXG4gICAgb25Sb3dDaGVjaygpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5pbkRpYWxvZyAmJiB0aGlzLmlzTXVsdGlTZWxlY3QpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNlbGVjdC5lbWl0KHsgbm9kZTogdGhpcy5ub2RlLCBpbmRleDogdGhpcy5pbmRleCB9KTtcclxuICAgIH1cclxuXHJcbiAgICBvblVsdkNvbW1hbmQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy51bHZDb21tYW5kLmVtaXQoeyBtbzogdGhpcy5ub2RlLkRhdGEsIGluZGV4OiB0aGlzLmluZGV4IH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG9uTm9kZVZpZXdDbGljaygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnZpZXdDbGljay5lbWl0KHsgbm9kZTogdGhpcy5ub2RlLkRhdGEsIGluZGV4OiB0aGlzLmluZGV4IH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG9uTG9hZENoaWxkcmVuKGUpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmxvYWRDaGlsZHJlbi5lbWl0KHRoaXMubm9kZS5EYXRhKTtcclxuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkV4cGFuZERibENsaWNrKGUpOiB2b2lkIHtcclxuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgIH1cclxuICAgIG9uQ3JlYXRlTmV3KGUpIHtcclxuICAgICAgICBpZiAoIXRoaXMuaXNDaGVja2VkKSB7XHJcbiAgICAgICAgICAgIHRoaXMub25Sb3dDaGVjaygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNyZWF0ZU5ldy5lbWl0KGUpO1xyXG4gICAgfVxyXG4gICAgb25Sb3dBY3Rpb24oY29tbWFuZEJvZHk6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGNvbW1hbmQgPSBuZXcgRnVuY3Rpb24oY29tbWFuZEJvZHkpO1xyXG4gICAgICAgIGNvbW1hbmQoKTtcclxuICAgIH1cclxuICAgIG9uRHJhZ01vdmVkKCRldmVudCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmlzSGV0cm8pIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRyYWdNb3ZlZC5lbWl0KCRldmVudCk7XHJcbiAgICB9XHJcbn1cclxuIiwiPGxpXHJcbiAgICBmZC1saXN0LWl0ZW1cclxuICAgICNsaUVsXHJcbiAgICBbY2xhc3MuIXR3LWN1cnNvci1wb2ludGVyXT1cImxlYWZDdXJzb3JQb2ludGVyXCJcclxuICAgIFthcHBseUNvbmRpdGlvbmFsRm9ybWF0c109XCJjb25kaXRpb25hbEZvcm1hdHNcIlxyXG4gICAgW3N0eWxlSW5kZXhdPVwic3R5bGVJbmRleFwiXHJcbiAgICBbaG9zdEVsXT1cImxpRWxcIlxyXG4gICAgW2ZvY3VzYWJsZV09XCJ0cnVlXCJcclxuICAgIFthdHRyLmxldmVsXT1cImxldmVsXCJcclxuICAgIFtjbGFzcy5yb290LWdyb3VwXT1cImxldmVsID09PSAxXCJcclxuICAgIFtpbnRlcmFjdGl2ZV09XCJ0cnVlXCJcclxuICAgIFtzZWxlY3RlZF09XCJpc0NoZWNrZWRcIlxyXG4gICAgKGRibGNsaWNrKT1cIm9uTm9kZVZpZXdDbGljaygpXCJcclxuICAgIGNka0RyYWdcclxuICAgIFtjZGtEcmFnRGlzYWJsZWRdPVwiIWVuYWJsZU5vZGVSZW9yZGVyaW5nXCJcclxuICAgIFtjZGtEcmFnRGF0YV09XCJub2RlLkRhdGEuSWRcIlxyXG4gICAgW2NsYXNzLmlzZGlydHldPVwiaXNkaXJ0eVwiXHJcbiAgICAoY2RrRHJhZ01vdmVkKT1cIm9uRHJhZ01vdmVkKCRldmVudClcIlxyXG4gICAgKGNsaWNrKT1cIm9wZW5PbkNsaWNrID8gb25Ob2RlVmlld0NsaWNrKCkgOiBvbkxpc3RJdGVtQ2xpY2sobGlFbCwgJGV2ZW50KVwiXHJcbj5cclxuICAgIDxkaXYgKGNsaWNrKT1cIm9uUm93Q2hlY2soKVwiIGNsYXNzPVwic3BhY2VyXCIgW3N0eWxlLndpZHRoXT1cIihsZXZlbCAtIDEpICogNCArICdyZW0nXCI+PC9kaXY+XHJcbiAgICBAaWYgKGVuYWJsZU5vZGVSZW9yZGVyaW5nICYmICFpc0hldHJvKSB7XHJcbiAgICA8ZmQtaWNvbiBnbHlwaD1cImdyaXBcIiBmb250PVwiQnVzaW5lc3NTdWl0ZUluQXBwU3ltYm9sc1wiIGNka0RyYWdIYW5kbGU+PC9mZC1pY29uPlxyXG4gICAgfSBAaWYgKGluRGlhbG9nICYmIGlzTXVsdGlTZWxlY3QpIHtcclxuICAgIDxmZC1jaGVja2JveCBbbmFtZV09XCJub2RlLkRhdGEuJENhcHRpb25cIiBbbmdNb2RlbF09XCJpc0NoZWNrZWRcIiAobmdNb2RlbENoYW5nZSk9XCJvbkNoZWNrYm94KCRldmVudClcIj48L2ZkLWNoZWNrYm94PlxyXG4gICAgfVxyXG5cclxuICAgIDxkaXYgKGNsaWNrKT1cIm9uUm93Q2hlY2soKVwiIHN0eWxlPVwiZGlzcGxheTogZmxleDsgd2lkdGg6IDEwMCU7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlblwiPlxyXG4gICAgICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBmbGV4OiAxOyBnYXA6IDNweFwiPlxyXG4gICAgICAgICAgICBAaWYgKGhhc0Fycm93SWNvbikgeyBAaWYgKGhhc0NoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcnJvdy1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5ydGxdPVwicnRsXCJcclxuICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cclxuICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhcnJvdy1jaGlsZHJlblwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2ZkQ29tcGFjdF1cclxuICAgICAgICAgICAgICAgICAgICBbZ2x5cGhdPVwiaGFzQ2hpbGRyZW4gPyAoaXNFeHBhbmQgPyAnc2xpbS1hcnJvdy1kb3duJyA6IGNvbGxhcHNlSWNvbikgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uTG9hZENoaWxkcmVuKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgIChkYmxjbGljayk9XCJvbkV4cGFuZERibENsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgfSBAZWxzZSB7IEBpZiAoIXBhcmVudE5vZGU/Lmhhc09uZURlcHRoTGV2ZWwpIHtcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVtcHR5LWNvbnRhaW5lclwiIChjbGljayk9XCJvblJvd0NoZWNrKClcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gZmQtYnV0dG9uPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgfSB9IEBpZiAobG9hZGluZykge1xyXG4gICAgICAgICAgICA8ZmQtYnVzeS1pbmRpY2F0b3JcclxuICAgICAgICAgICAgICAgIHN0eWxlPVwiZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgd2lkdGg6IDJyZW1cIlxyXG4gICAgICAgICAgICAgICAgc2l6ZT1cInNcIlxyXG4gICAgICAgICAgICAgICAgW2xvYWRpbmddPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgID48L2ZkLWJ1c3ktaW5kaWNhdG9yPlxyXG4gICAgICAgICAgICB9IEBpZighaGlkZUljb24gfHwgYXBwQ29tcG9uZW50SWNvbil7IEBpZihpY29uIHx8IGFwcENvbXBvbmVudEljb24pe1xyXG4gICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImFwcENvbXBvbmVudEljb25Db2xvciB8fCBjb2xvclwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImljb24taXRlbVwiXHJcbiAgICAgICAgICAgICAgICBmZC1saXN0LWljb25cclxuICAgICAgICAgICAgICAgIFtnbHlwaF09XCJhcHBDb21wb25lbnRJY29uIHx8IGljb25cIlxyXG4gICAgICAgICAgICA+PC9pPlxyXG4gICAgICAgICAgICB9QGVsc2Uge1xyXG4gICAgICAgICAgICA8aSBmZC1saXN0LWljb24gY2xhc3M9XCJpY29uLWl0ZW1cIiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwibm9kZS5pY29uXCIgd2lkdGg9XCIxNnB4XCIgLz5cclxuICAgICAgICAgICAgPC9pPlxyXG4gICAgICAgICAgICB9IH0gfVxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGZsZXg6IHVuc2V0OyBhbGlnbi1pdGVtczogY2VudGVyXCJcclxuICAgICAgICAgICAgICAgIGZkLWxpc3QtdGl0bGVcclxuICAgICAgICAgICAgICAgIFtmb2N1c2FibGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAjZGl2RWxcclxuICAgICAgICAgICAgICAgIGludGVyc2VjdGlvbk9ic2VydmVyXHJcbiAgICAgICAgICAgICAgICBbaW50ZXJzZWN0aW9uVGhyZXNob2xkXT1cIjAuMVwiXHJcbiAgICAgICAgICAgICAgICAodmlzaWJpbGl0eUNoYW5nZSk9XCJvblZpc2liaWxpdHlDaGFuZ2UoZGl2RWwsIHNwYW5FbCwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZWxsYXBzaXNcIiAjc3BhbkVsIFtzdHlsZS5jb2xvcl09XCJjb2xvclwiIFtjbGFzcy5oYXNjaGlsZHJlbl09XCJoYXNDaGlsZHJlblwiPnt7IHRleHQgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICBAaWYgKGNoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj57eyAnICggJyArIGNoaWxkcmVuLmxlbmd0aCArICcgKScgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIEBpZiAoY29udGV4dE1lbnVJdGVtcyAmJiBjb250ZXh0TWVudUl0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICA8aVxyXG4gICAgICAgICAgICB1bHZDb250ZXh0TWVudVxyXG4gICAgICAgICAgICBbYWxsQ29sdW1uc109XCJhbGxDb2x1bW5zXCJcclxuICAgICAgICAgICAgW21lbnVJdGVtc109XCJjb250ZXh0TWVudUl0ZW1zXCJcclxuICAgICAgICAgICAgW2NvbmRpdGlvbmFsRm9ybWF0c109XCJjb25kaXRpb25hbEZvcm1hdHNcIlxyXG4gICAgICAgICAgICBbc3R5bGVJbmRleF09XCJzdHlsZUluZGV4XCJcclxuICAgICAgICAgICAgW2Rpc2FibGVPdmVyZmxvd0NvbnRleHRNZW51XT1cImRpc2FibGVPdmVyZmxvd0NvbnRleHRNZW51XCJcclxuICAgICAgICAgICAgW21vXT1cIm5vZGUuRGF0YVwiXHJcbiAgICAgICAgICAgIFtpbmRleF09XCJpbmRleFwiXHJcbiAgICAgICAgICAgIChjb21tYW5kQ2xpY2spPVwib25VbHZDb21tYW5kKClcIlxyXG4gICAgICAgICAgICBbZGV2aWNlTmFtZV09XCJkZXZpY2VOYW1lXCJcclxuICAgICAgICA+PC9pPlxyXG4gICAgICAgIH0gQGlmIChhY2Nlc3M/LkFkZCAhPT0gZmFsc2UgJiYgIWluRGlhbG9nKSB7XHJcbiAgICAgICAgPGJzdS1odHJlZS1jcmVhdGUtbmV3XHJcbiAgICAgICAgICAgIFtub2RlXT1cIm5vZGVcIlxyXG4gICAgICAgICAgICBbcmVsYXRpb25MaXN0XT1cInJlbGF0aW9uTGlzdFwiXHJcbiAgICAgICAgICAgIChjcmVhdGVOZXcpPVwib25DcmVhdGVOZXcoJGV2ZW50KVwiXHJcbiAgICAgICAgPjwvYnN1LWh0cmVlLWNyZWF0ZS1uZXc+XHJcbiAgICAgICAgfVxyXG4gICAgPC9kaXY+XHJcbiAgICBAaWYgKGFjY2Vzcz8uVmlldyAmJiAhc2hvd09rQ2FuY2VsQnV0dG9ucyAmJiBkZXZpY2VOYW1lICE9PSAnZGVza3RvcCcgJiYgIWhpZGVPcGVuSWNvbikge1xyXG4gICAgPGJ1dHRvbiBmZC1idXR0b24gW2dseXBoXT1cIm5hdmlnYXRpb25BcnJvd1wiIGZkVHlwZT1cInRyYW5zcGFyZW50XCIgKGNsaWNrKT1cIm9uTm9kZVZpZXdDbGljaygpXCI+PC9idXR0b24+XHJcbiAgICB9IEBpZiAoYWN0aW9uTGlzdD8ubGVuZ3RoICYmICFpbmxpbmVFZGl0TW9kZSkge1xyXG4gICAgPGJzdS1iYXJzYS1yb3ctaW5saW5lLWFjdGlvbmxpc3RcclxuICAgICAgICBbYWN0aW9uTGlzdF09XCJhY3Rpb25MaXN0XCJcclxuICAgICAgICAoYnRuQ2xpY2spPVwiYWN0aW9uTGlzdENsaWNrLmVtaXQoJGV2ZW50KVwiXHJcbiAgICA+PC9ic3UtYmFyc2Etcm93LWlubGluZS1hY3Rpb25saXN0PlxyXG4gICAgfVxyXG5cclxuICAgIDxic3UtYmFyc2EtdHJlZS1pdGVtXHJcbiAgICAgICAgKmNka0RyYWdQcmV2aWV3XHJcbiAgICAgICAgW25vZGVdPVwibm9kZVwiXHJcbiAgICAgICAgW3J0bF09XCJydGxcIlxyXG4gICAgICAgIFtzZWxlY3RlZE5vZGVdPVwic2VsZWN0ZWROb2RlXCJcclxuICAgICAgICBbaGFzQXJyb3dJY29uXT1cImZhbHNlXCJcclxuICAgID48L2JzdS1iYXJzYS10cmVlLWl0ZW0+XHJcbjwvbGk+XHJcbiJdfQ==
153
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyc2EtdHJlZS1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXNhcC11aS9zcmMvbGliL2JhcnNhLXRyZWUtaXRlbS9iYXJzYS10cmVlLWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvYmFyc2EtdHJlZS1pdGVtL2JhcnNhLXRyZWUtaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1QsTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFJSCwwQkFBMEIsRUFDMUIsUUFBUSxFQUNYLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQVM5QixNQUFNLE9BQU8sc0JBQXVCLFNBQVEsMEJBQTBCO0lBUHRFOztRQVlhLGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBZTdCLG9CQUFvQjtRQUNWLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBb0IsQ0FBQztRQUNqRCxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBRy9CLENBQUM7UUFDSyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUlwQyxDQUFDO1FBQ0ssY0FBUyxHQUFHLElBQUksWUFBWSxFQUdsQyxDQUFDO1FBQ0ssaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBdUIsQ0FBQztRQUN2RCxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUVqRCxxQkFBZ0IsR0FBa0IsSUFBSSxDQUFDO1FBQ3ZDLDBCQUFxQixHQUFrQixJQUFJLENBQUM7UUFDNUMsWUFBTyxHQUFHO1lBQ04sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxnQ0FBZ0MsRUFBRTtZQUN6RDtnQkFDSSxJQUFJLEVBQUUsUUFBUTtnQkFDZCxNQUFNLEVBQUUsbUNBQW1DO2FBQzlDO1NBQ0osQ0FBQztRQUNGLGVBQVUsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7S0FvRWxDO0lBbkVHLFFBQVE7UUFDSixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsbUNBQW1DLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDMUcsSUFBSSxDQUFDLHFCQUFxQixHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FDekQsSUFBSSxFQUNKLHdDQUF3QyxFQUN4QyxJQUFJLENBQ1AsQ0FBQztRQUNGLDRDQUE0QztRQUM1Qyw0QkFBNEI7UUFDNUIsSUFBSTtJQUNSLENBQUM7SUFDRCxrQkFBa0IsQ0FBQyxLQUFrQixFQUFFLE1BQW1CLEVBQUUsQ0FBQztRQUN6RCxJQUFJLENBQUMsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNsQixNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDekQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxZQUFZLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDdkUsQ0FBQztJQUNMLENBQUM7SUFDRCxlQUFlLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLENBQUMsTUFBTSxLQUFLLElBQUksRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLENBQUM7WUFDL0MsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3RCLENBQUM7SUFDTCxDQUFDO0lBQ0QsVUFBVSxDQUFDLE9BQWdCO1FBQ3ZCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBQ0QsVUFBVTtRQUNOLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdEMsT0FBTztRQUNYLENBQUM7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsWUFBWTtRQUNSLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsZUFBZTtRQUNYLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQsY0FBYyxDQUFDLENBQUM7UUFDWixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUNwQixDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELGdCQUFnQixDQUFDLENBQUM7UUFDZCxDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDcEIsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxXQUFXLENBQUMsQ0FBQztRQUNULElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3RCLENBQUM7UUFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBQ0QsV0FBVyxDQUFDLFdBQW1CO1FBQzNCLE1BQU0sT0FBTyxHQUFHLElBQUksUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzFDLE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUNELFdBQVcsQ0FBQyxNQUFNO1FBQ2QsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDZixPQUFPO1FBQ1gsQ0FBQztRQUNELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7K0dBbEhRLHNCQUFzQjttR0FBdEIsc0JBQXNCLHFzQkMzQm5DLGd1S0E0SEEsaWxJRGpHYSxzQkFBc0I7OzRGQUF0QixzQkFBc0I7a0JBUGxDLFNBQVM7K0JBQ0kscUJBQXFCLG1CQUdkLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsS0FBSzs4QkFHUixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBR0ksU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBSUcsV0FBVztzQkFBcEIsTUFBTTtnQkFLRyxTQUFTO3NCQUFsQixNQUFNO2dCQUlHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICAgIENvbXBvbmVudCxcclxuICAgIEV2ZW50RW1pdHRlcixcclxuICAgIElucHV0LFxyXG4gICAgT25Jbml0LFxyXG4gICAgT3V0cHV0LFxyXG4gICAgUmVuZGVyZXIyLFxyXG4gICAgaW5qZWN0XHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7XHJcbiAgICBNZXRhb2JqZWN0RGF0YU1vZGVsLFxyXG4gICAgVHJlZU5vZGVPYmosXHJcbiAgICBSZWxhdGlvbkl0ZW1UeXBlLFxyXG4gICAgQmFzZVZpZXdJdGVtUHJvcHNDb21wb25lbnQsXHJcbiAgICBCYXJzYUFwaVxyXG59IGZyb20gJ2JhcnNhLW5vdmluLXJheS1jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdic3UtYmFyc2EtdHJlZS1pdGVtJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9iYXJzYS10cmVlLWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vYmFyc2EtdHJlZS1pdGVtLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICAgIHN0YW5kYWxvbmU6IGZhbHNlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCYXJzYVRyZWVJdGVtQ29tcG9uZW50IGV4dGVuZHMgQmFzZVZpZXdJdGVtUHJvcHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICAgQElucHV0KCkgbm9kZTogVHJlZU5vZGVPYmo7XHJcbiAgICBASW5wdXQoKSBzZWxlY3RlZE5vZGU6IE1ldGFvYmplY3REYXRhTW9kZWwgfCBudWxsO1xyXG4gICAgQElucHV0KCkgcmVsYXRpb25MaXN0OiBSZWxhdGlvbkl0ZW1UeXBlW107XHJcbiAgICBASW5wdXQoKSBoaWRlT3Blbkljb246IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBoYXNBcnJvd0ljb24gPSB0cnVlO1xyXG4gICAgQElucHV0KCkgY29sbGFwc2VJY29uOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBsb2FkaW5nOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgaGFzQ2hpbGRyZW46IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBsZWFmQ3Vyc29yUG9pbnRlcjogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGlzRXhwYW5kOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgY2hpbGRyZW46IFRyZWVOb2RlT2JqW107XHJcbiAgICBASW5wdXQoKSBwYXJlbnROb2RlOiBUcmVlTm9kZU9iajtcclxuICAgIEBJbnB1dCgpIHRleHQ6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIGljb246IHN0cmluZztcclxuICAgIEBJbnB1dCgpIGNvbG9yOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBpc0hldHJvOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgZW5hYmxlTm9kZVJlb3JkZXJpbmc6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBoaWRlSWNvbjogYm9vbGVhbjtcclxuXHJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xyXG4gICAgQE91dHB1dCgpIGNyZWF0ZU5ldyA9IG5ldyBFdmVudEVtaXR0ZXI8UmVsYXRpb25JdGVtVHlwZT4oKTtcclxuICAgIEBPdXRwdXQoKSBzZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPHtcclxuICAgICAgICBub2RlOiBUcmVlTm9kZU9iajtcclxuICAgICAgICBpbmRleDogbnVtYmVyO1xyXG4gICAgfT4oKTtcclxuICAgIEBPdXRwdXQoKSBjaGVja0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8e1xyXG4gICAgICAgIG5vZGU6IFRyZWVOb2RlT2JqO1xyXG4gICAgICAgIGluZGV4OiBudW1iZXI7XHJcbiAgICAgICAgY2hlY2tlZDogYm9vbGVhbjtcclxuICAgIH0+KCk7XHJcbiAgICBAT3V0cHV0KCkgdmlld0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjx7XHJcbiAgICAgICAgbm9kZTogTWV0YW9iamVjdERhdGFNb2RlbDtcclxuICAgICAgICBpbmRleDogbnVtYmVyO1xyXG4gICAgfT4oKTtcclxuICAgIEBPdXRwdXQoKSBsb2FkQ2hpbGRyZW4gPSBuZXcgRXZlbnRFbWl0dGVyPE1ldGFvYmplY3REYXRhTW9kZWw+KCk7XHJcbiAgICBAT3V0cHV0KCkgZHJhZ01vdmVkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgICBpY29uJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xyXG4gICAgYXBwQ29tcG9uZW50SWNvbjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgICBhcHBDb21wb25lbnRJY29uQ29sb3I6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gICAgcm93QnRucyA9IFtcclxuICAgICAgICB7IEljb246ICdhZGQnLCBBY3Rpb246ICdjb25zb2xlLmxvZyhcImFkZCBidG4gY2xpY2tlZFwiKScgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIEljb246ICdkZWxldGUnLFxyXG4gICAgICAgICAgICBBY3Rpb246ICdjb25zb2xlLmxvZyhcImRlbGV0ZSBidG4gY2xpY2tlZFwiKSdcclxuICAgICAgICB9XHJcbiAgICBdO1xyXG4gICAgX3JlbmRlcmVyMiA9IGluamVjdChSZW5kZXJlcjIpO1xyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcclxuICAgICAgICB0aGlzLmFwcENvbXBvbmVudEljb24gPSBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZSh0aGlzLCAnbm9kZS5EYXRhLkNvbXBvbmVudC5TZXR0aW5ncy5JY29uJywgbnVsbCk7XHJcbiAgICAgICAgdGhpcy5hcHBDb21wb25lbnRJY29uQ29sb3IgPSBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZShcclxuICAgICAgICAgICAgdGhpcyxcclxuICAgICAgICAgICAgJ25vZGUuRGF0YS5Db21wb25lbnQuU2V0dGluZ3MuSWNvbkNvbG9yJyxcclxuICAgICAgICAgICAgbnVsbFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgLy8gaWYgKCF0aGlzLm5vZGUuaWNvbi5zdGFydHNXaXRoKCdodHRwJykpIHtcclxuICAgICAgICAvLyAgICAgdGhpcy5oaWRlSWNvbiA9IHRydWU7XHJcbiAgICAgICAgLy8gfVxyXG4gICAgfVxyXG4gICAgb25WaXNpYmlsaXR5Q2hhbmdlKGRpdkVsOiBIVE1MRWxlbWVudCwgc3BhbkVsOiBIVE1MRWxlbWVudCwgZSk6IHZvaWQge1xyXG4gICAgICAgIGlmIChlID09PSAnVmlzaWJsZScpIHtcclxuICAgICAgICAgICAgY29uc3QgbWF4V2lkdGhUZXh0ID0gZGl2RWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XHJcbiAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyMi5zZXRTdHlsZShzcGFuRWwsICdtYXgtd2lkdGgnLCBtYXhXaWR0aFRleHQgKyAncHgnKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBvbkxpc3RJdGVtQ2xpY2sobGlFbCwgZSkge1xyXG4gICAgICAgIGlmIChlLnRhcmdldCA9PT0gbGlFbD8uZWxlbWVudFJlZj8ubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgICB0aGlzLm9uUm93Q2hlY2soKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBvbkNoZWNrYm94KGNoZWNrZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmNoZWNrQ2hhbmdlLmVtaXQoeyBub2RlOiB0aGlzLm5vZGUsIGluZGV4OiB0aGlzLmluZGV4LCBjaGVja2VkIH0pO1xyXG4gICAgfVxyXG4gICAgb25Sb3dDaGVjaygpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5pbkRpYWxvZyAmJiB0aGlzLmlzTXVsdGlTZWxlY3QpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNlbGVjdC5lbWl0KHsgbm9kZTogdGhpcy5ub2RlLCBpbmRleDogdGhpcy5pbmRleCB9KTtcclxuICAgIH1cclxuXHJcbiAgICBvblVsdkNvbW1hbmQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy51bHZDb21tYW5kLmVtaXQoeyBtbzogdGhpcy5ub2RlLkRhdGEsIGluZGV4OiB0aGlzLmluZGV4IH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG9uTm9kZVZpZXdDbGljaygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnZpZXdDbGljay5lbWl0KHsgbm9kZTogdGhpcy5ub2RlLkRhdGEsIGluZGV4OiB0aGlzLmluZGV4IH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG9uTG9hZENoaWxkcmVuKGUpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmxvYWRDaGlsZHJlbi5lbWl0KHRoaXMubm9kZS5EYXRhKTtcclxuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkV4cGFuZERibENsaWNrKGUpOiB2b2lkIHtcclxuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgIH1cclxuICAgIG9uQ3JlYXRlTmV3KGUpIHtcclxuICAgICAgICBpZiAoIXRoaXMuaXNDaGVja2VkKSB7XHJcbiAgICAgICAgICAgIHRoaXMub25Sb3dDaGVjaygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNyZWF0ZU5ldy5lbWl0KGUpO1xyXG4gICAgfVxyXG4gICAgb25Sb3dBY3Rpb24oY29tbWFuZEJvZHk6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGNvbW1hbmQgPSBuZXcgRnVuY3Rpb24oY29tbWFuZEJvZHkpO1xyXG4gICAgICAgIGNvbW1hbmQoKTtcclxuICAgIH1cclxuICAgIG9uRHJhZ01vdmVkKCRldmVudCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmlzSGV0cm8pIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRyYWdNb3ZlZC5lbWl0KCRldmVudCk7XHJcbiAgICB9XHJcbn1cclxuIiwiPGxpXHJcbiAgICBmZC1saXN0LWl0ZW1cclxuICAgICNsaUVsXHJcbiAgICBbY2xhc3MuIXR3LWN1cnNvci1wb2ludGVyXT1cImxlYWZDdXJzb3JQb2ludGVyXCJcclxuICAgIFthcHBseUNvbmRpdGlvbmFsRm9ybWF0c109XCJjb25kaXRpb25hbEZvcm1hdHNcIlxyXG4gICAgW3N0eWxlSW5kZXhdPVwic3R5bGVJbmRleFwiXHJcbiAgICBbaG9zdEVsXT1cImxpRWxcIlxyXG4gICAgW2ZvY3VzYWJsZV09XCJ0cnVlXCJcclxuICAgIFthdHRyLmxldmVsXT1cImxldmVsXCJcclxuICAgIFtjbGFzcy5yb290LWdyb3VwXT1cImxldmVsID09PSAxXCJcclxuICAgIFtpbnRlcmFjdGl2ZV09XCJ0cnVlXCJcclxuICAgIFtzZWxlY3RlZF09XCJpc0NoZWNrZWRcIlxyXG4gICAgKGRibGNsaWNrKT1cIm9uTm9kZVZpZXdDbGljaygpXCJcclxuICAgIGNka0RyYWdcclxuICAgIFtjZGtEcmFnRGlzYWJsZWRdPVwiIWVuYWJsZU5vZGVSZW9yZGVyaW5nXCJcclxuICAgIFtjZGtEcmFnRGF0YV09XCJub2RlLkRhdGEuSWRcIlxyXG4gICAgW2NsYXNzLmlzZGlydHldPVwiaXNkaXJ0eVwiXHJcbiAgICAoY2RrRHJhZ01vdmVkKT1cIm9uRHJhZ01vdmVkKCRldmVudClcIlxyXG4gICAgKGNsaWNrKT1cIm9wZW5PbkNsaWNrID8gb25Ob2RlVmlld0NsaWNrKCkgOiBvbkxpc3RJdGVtQ2xpY2sobGlFbCwgJGV2ZW50KVwiXHJcbj5cclxuICAgIDxkaXYgKGNsaWNrKT1cIm9uUm93Q2hlY2soKVwiIGNsYXNzPVwic3BhY2VyXCIgW3N0eWxlLndpZHRoXT1cIihsZXZlbCAtIDEpICogNCArICdyZW0nXCI+PC9kaXY+XHJcbiAgICBAaWYgKGVuYWJsZU5vZGVSZW9yZGVyaW5nICYmICFpc0hldHJvKSB7XHJcbiAgICA8ZmQtaWNvbiBnbHlwaD1cImdyaXBcIiBmb250PVwiQnVzaW5lc3NTdWl0ZUluQXBwU3ltYm9sc1wiIGNka0RyYWdIYW5kbGU+PC9mZC1pY29uPlxyXG4gICAgfSBAaWYgKGluRGlhbG9nICYmIGlzTXVsdGlTZWxlY3QpIHtcclxuICAgIDxmZC1jaGVja2JveCBbbmFtZV09XCJub2RlLkRhdGEuJENhcHRpb25cIiBbbmdNb2RlbF09XCJpc0NoZWNrZWRcIiAobmdNb2RlbENoYW5nZSk9XCJvbkNoZWNrYm94KCRldmVudClcIj48L2ZkLWNoZWNrYm94PlxyXG4gICAgfVxyXG5cclxuICAgIDxkaXYgKGNsaWNrKT1cIm9uUm93Q2hlY2soKVwiIHN0eWxlPVwiZGlzcGxheTogZmxleDsgd2lkdGg6IDEwMCU7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlblwiPlxyXG4gICAgICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBmbGV4OiAxOyBnYXA6IDNweFwiPlxyXG4gICAgICAgICAgICBAaWYgKGhhc0Fycm93SWNvbikgeyBAaWYgKGhhc0NoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcnJvdy1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5ydGxdPVwicnRsXCJcclxuICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cclxuICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhcnJvdy1jaGlsZHJlblwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2ZkQ29tcGFjdF1cclxuICAgICAgICAgICAgICAgICAgICBbZ2x5cGhdPVwiaGFzQ2hpbGRyZW4gPyAoaXNFeHBhbmQgPyAnc2xpbS1hcnJvdy1kb3duJyA6IGNvbGxhcHNlSWNvbikgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uTG9hZENoaWxkcmVuKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgIChkYmxjbGljayk9XCJvbkV4cGFuZERibENsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgfSBAZWxzZSB7IEBpZiAoIXBhcmVudE5vZGU/Lmhhc09uZURlcHRoTGV2ZWwpIHtcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVtcHR5LWNvbnRhaW5lclwiIChjbGljayk9XCJvblJvd0NoZWNrKClcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gZmQtYnV0dG9uPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgfSB9IEBpZiAobG9hZGluZykge1xyXG4gICAgICAgICAgICA8ZmQtYnVzeS1pbmRpY2F0b3JcclxuICAgICAgICAgICAgICAgIHN0eWxlPVwiZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgd2lkdGg6IDJyZW1cIlxyXG4gICAgICAgICAgICAgICAgc2l6ZT1cInNcIlxyXG4gICAgICAgICAgICAgICAgW2xvYWRpbmddPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgID48L2ZkLWJ1c3ktaW5kaWNhdG9yPlxyXG4gICAgICAgICAgICB9IEBpZighaGlkZUljb24gfHwgYXBwQ29tcG9uZW50SWNvbil7IEBpZihpY29uIHx8IGFwcENvbXBvbmVudEljb24pe1xyXG4gICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImFwcENvbXBvbmVudEljb25Db2xvciB8fCBjb2xvclwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImljb24taXRlbVwiXHJcbiAgICAgICAgICAgICAgICBmZC1saXN0LWljb25cclxuICAgICAgICAgICAgICAgIFtnbHlwaF09XCJhcHBDb21wb25lbnRJY29uIHx8IGljb25cIlxyXG4gICAgICAgICAgICA+PC9pPlxyXG4gICAgICAgICAgICB9QGVsc2Uge1xyXG4gICAgICAgICAgICA8aSBmZC1saXN0LWljb24gY2xhc3M9XCJpY29uLWl0ZW1cIiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwibm9kZS5pY29uXCIgd2lkdGg9XCIxNnB4XCIgLz5cclxuICAgICAgICAgICAgPC9pPlxyXG4gICAgICAgICAgICB9IH0gfVxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGZsZXg6IHVuc2V0OyBhbGlnbi1pdGVtczogY2VudGVyXCJcclxuICAgICAgICAgICAgICAgIGZkLWxpc3QtdGl0bGVcclxuICAgICAgICAgICAgICAgIFtmb2N1c2FibGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAjZGl2RWxcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJzdHlsZUluZGV4ID8gJ2luaGVyaXQnIDogY29sb3JcIlxyXG4gICAgICAgICAgICAgICAgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJcclxuICAgICAgICAgICAgICAgIFtpbnRlcnNlY3Rpb25UaHJlc2hvbGRdPVwiMC4xXCJcclxuICAgICAgICAgICAgICAgICh2aXNpYmlsaXR5Q2hhbmdlKT1cIm9uVmlzaWJpbGl0eUNoYW5nZShkaXZFbCwgc3BhbkVsLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImVsbGFwc2lzXCJcclxuICAgICAgICAgICAgICAgICAgICAjc3BhbkVsXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInN0eWxlSW5kZXggPyAnaW5oZXJpdCcgOiBjb2xvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmhhc2NoaWxkcmVuXT1cImhhc0NoaWxkcmVuXCJcclxuICAgICAgICAgICAgICAgICAgICA+e3sgdGV4dCB9fTwvc3BhblxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgQGlmIChjaGlsZHJlbikge1xyXG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgJyAoICcgKyBjaGlsZHJlbi5sZW5ndGggKyAnICknIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICBAaWYgKGNvbnRleHRNZW51SXRlbXMgJiYgY29udGV4dE1lbnVJdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgPGlcclxuICAgICAgICAgICAgdWx2Q29udGV4dE1lbnVcclxuICAgICAgICAgICAgW2FsbENvbHVtbnNdPVwiYWxsQ29sdW1uc1wiXHJcbiAgICAgICAgICAgIFttZW51SXRlbXNdPVwiY29udGV4dE1lbnVJdGVtc1wiXHJcbiAgICAgICAgICAgIFtjb25kaXRpb25hbEZvcm1hdHNdPVwiY29uZGl0aW9uYWxGb3JtYXRzXCJcclxuICAgICAgICAgICAgW3N0eWxlSW5kZXhdPVwic3R5bGVJbmRleFwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlT3ZlcmZsb3dDb250ZXh0TWVudV09XCJkaXNhYmxlT3ZlcmZsb3dDb250ZXh0TWVudVwiXHJcbiAgICAgICAgICAgIFttb109XCJub2RlLkRhdGFcIlxyXG4gICAgICAgICAgICBbaW5kZXhdPVwiaW5kZXhcIlxyXG4gICAgICAgICAgICAoY29tbWFuZENsaWNrKT1cIm9uVWx2Q29tbWFuZCgpXCJcclxuICAgICAgICAgICAgW2RldmljZU5hbWVdPVwiZGV2aWNlTmFtZVwiXHJcbiAgICAgICAgPjwvaT5cclxuICAgICAgICB9IEBpZiAoYWNjZXNzPy5BZGQgIT09IGZhbHNlICYmICFpbkRpYWxvZykge1xyXG4gICAgICAgIDxic3UtaHRyZWUtY3JlYXRlLW5ld1xyXG4gICAgICAgICAgICBbbm9kZV09XCJub2RlXCJcclxuICAgICAgICAgICAgW3JlbGF0aW9uTGlzdF09XCJyZWxhdGlvbkxpc3RcIlxyXG4gICAgICAgICAgICAoY3JlYXRlTmV3KT1cIm9uQ3JlYXRlTmV3KCRldmVudClcIlxyXG4gICAgICAgID48L2JzdS1odHJlZS1jcmVhdGUtbmV3PlxyXG4gICAgICAgIH1cclxuICAgIDwvZGl2PlxyXG4gICAgQGlmIChhY2Nlc3M/LlZpZXcgJiYgIXNob3dPa0NhbmNlbEJ1dHRvbnMgJiYgZGV2aWNlTmFtZSAhPT0gJ2Rlc2t0b3AnICYmICFoaWRlT3Blbkljb24pIHtcclxuICAgIDxidXR0b24gZmQtYnV0dG9uIFtnbHlwaF09XCJuYXZpZ2F0aW9uQXJyb3dcIiBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiIChjbGljayk9XCJvbk5vZGVWaWV3Q2xpY2soKVwiPjwvYnV0dG9uPlxyXG4gICAgfSBAaWYgKGFjdGlvbkxpc3Q/Lmxlbmd0aCAmJiAhaW5saW5lRWRpdE1vZGUpIHtcclxuICAgIDxic3UtYmFyc2Etcm93LWlubGluZS1hY3Rpb25saXN0XHJcbiAgICAgICAgW2FjdGlvbkxpc3RdPVwiYWN0aW9uTGlzdFwiXHJcbiAgICAgICAgKGJ0bkNsaWNrKT1cImFjdGlvbkxpc3RDbGljay5lbWl0KCRldmVudClcIlxyXG4gICAgPjwvYnN1LWJhcnNhLXJvdy1pbmxpbmUtYWN0aW9ubGlzdD5cclxuICAgIH1cclxuXHJcbiAgICA8YnN1LWJhcnNhLXRyZWUtaXRlbVxyXG4gICAgICAgICpjZGtEcmFnUHJldmlld1xyXG4gICAgICAgIFtub2RlXT1cIm5vZGVcIlxyXG4gICAgICAgIFtydGxdPVwicnRsXCJcclxuICAgICAgICBbc2VsZWN0ZWROb2RlXT1cInNlbGVjdGVkTm9kZVwiXHJcbiAgICAgICAgW2hhc0Fycm93SWNvbl09XCJmYWxzZVwiXHJcbiAgICA+PC9ic3UtYmFyc2EtdHJlZS1pdGVtPlxyXG48L2xpPlxyXG4iXX0=