@libs-ui/components-list 0.2.357-11 → 0.2.357-13
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.
- package/esm2022/templates/checkbox/checkbox.component.mjs +3 -3
- package/esm2022/templates/group/group.component.mjs +13 -6
- package/esm2022/templates/group/item/item.component.mjs +4 -3
- package/esm2022/templates/radio/radio.component.mjs +3 -3
- package/esm2022/templates/rows/rows.component.mjs +5 -3
- package/esm2022/templates/text/text.component.mjs +5 -3
- package/fesm2022/libs-ui-components-list.mjs +26 -15
- package/fesm2022/libs-ui-components-list.mjs.map +1 -1
- package/package.json +26 -26
- package/templates/group/group.component.d.ts +1 -0
- package/templates/group/item/item.component.d.ts +2 -1
|
@@ -7,6 +7,7 @@ import { LibsUiComponentsButtonsButtonComponent } from '@libs-ui/components-butt
|
|
|
7
7
|
import { LibsUiComponentsLabelComponent } from '@libs-ui/components-label';
|
|
8
8
|
import { LibsUiComponentsPopoverComponent } from '@libs-ui/components-popover';
|
|
9
9
|
import { LibsUiPipesCallFunctionInTemplatePipe } from '@libs-ui/pipes-call-function-in-template';
|
|
10
|
+
import { LibsUiPipesCloneObjectPipe } from '@libs-ui/pipes-clone-object';
|
|
10
11
|
import { isEmpty } from '@libs-ui/utils';
|
|
11
12
|
import { TranslateModule } from '@ngx-translate/core';
|
|
12
13
|
import { lastValueFrom } from 'rxjs';
|
|
@@ -53,7 +54,7 @@ export class LibsUiComponentsListRowsComponent {
|
|
|
53
54
|
this.outChangStageFlagMousePopover.emit(flag);
|
|
54
55
|
}
|
|
55
56
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiComponentsListRowsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
56
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: LibsUiComponentsListRowsComponent, isStandalone: true, selector: "libs_ui-components-list-templates_rows", inputs: { configTemplate: { classPropertyName: "configTemplate", publicName: "configTemplate", isSignal: true, isRequired: true, transformFunction: null }, item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: false, transformFunction: null }, keySelected: { classPropertyName: "keySelected", publicName: "keySelected", isSignal: true, isRequired: false, transformFunction: null }, fieldKey: { classPropertyName: "fieldKey", publicName: "fieldKey", isSignal: true, isRequired: false, transformFunction: null }, zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { outChangStageFlagMousePopover: "outChangStageFlagMousePopover", outEvent: "outEvent" }, ngImport: i0, template: "@if (configTemplate() && configItemTextRows(); as configItemTextRows) {\n <div class=\"flex flex-col w-full {{ configTemplate().classRows ?? '' }}\">\n @for (row of configItemTextRows; track $index; let indexRow = $index) {\n <div [class]=\"row().classRow\">\n @if (row().getImage && (item() | LibsUiPipesCallFunctionInTemplatePipe: row().getImage : item() | async); as imgUrl) {\n <img\n [class]=\"item() | LibsUiPipesCallFunctionInTemplatePipe: row().getClassImage : item() | async\"\n src=\"{{ imgUrl }}\"\n alt=\"\"\n (error)=\"handlerErrorImage($event, row().getImageError)\" />\n }\n @if (item()['fieldRowAvatarConfig' + indexRow]; as avatarConfig) {\n <libs_ui-components-avatar\n [typeShape]=\"avatarConfig.typeShape || 'circle'\"\n [classInclude]=\"avatarConfig.classInclude\"\n [size]=\"avatarConfig.size || 32\"\n [linkAvatar]=\"avatarConfig.linkAvatar\"\n [linkAvatarError]=\"avatarConfig.linkAvatarError\"\n [idGenColor]=\"avatarConfig.idGenColor\"\n [textAvatar]=\"avatarConfig.textAvatar\" />\n }\n @if (fieldKey() && item()['fieldLabelRow' + indexRow] | async; as labelRow) {\n <libs_ui-components-popover\n type=\"text\"\n [config]=\"row().getPopoverConfig ? ('popover' | LibsUiPipesCallFunctionInTemplatePipe: row().getPopoverConfig : item() | async) : { zIndex: zIndex() }\"\n [classInclude]=\"keySelected() === item()[fieldKey()] ? row().classItemSelected || row().classGetValue || '' : row().classGetValue || ''\"\n [innerHtml]=\"labelRow\"\n (outChangStageFlagMouse)=\"handlerChangStageFlagMouse($event)\"\n (outEvent)=\"handlerSelectItem($event, item(), row().action)\" />\n }\n\n @if (fieldKey() && row().getComponentOutlet) {\n <ng-container\n *ngComponentOutlet=\"\n 'row:' + indexRow | LibsUiPipesCallFunctionInTemplatePipe: row().getComponentOutlet : item() | async;\n inputs: undefined | LibsUiPipesCallFunctionInTemplatePipe: row().getDataComponentOutlet : item() : 'row:' + indexRow : { valueIsEmpty: { item: item() } } | async\n \" />\n }\n @if (row().cols?.()?.length) {\n <div\n [class]=\"row().classCols || 'flex'\"\n [style]=\"item()[item()['fieldRowStylesDynamicCols' + indexRow]]\">\n @for (col of row().cols?.(); track $index; let colIndex = $index) {\n @if (col().getImage && (item() | LibsUiPipesCallFunctionInTemplatePipe: col().getImage : item() | async); as imgUrl) {\n <img\n [class]=\"item() | LibsUiPipesCallFunctionInTemplatePipe: col().getClassImage : item() | async\"\n src=\"{{ imgUrl }}\"\n alt=\"\"\n (error)=\"handlerErrorImage($event, col().getImageError)\" />\n }\n @if (item()['fieldColAvatarConfig' + indexRow + colIndex]; as avatarConfig) {\n <libs_ui-components-avatar\n [typeShape]=\"avatarConfig.typeShape || 'circle'\"\n [classInclude]=\"avatarConfig.classInclude\"\n [size]=\"avatarConfig.size || 32\"\n [linkAvatar]=\"avatarConfig.linkAvatar\"\n [linkAvatarError]=\"avatarConfig.linkAvatarError\"\n [idGenColor]=\"avatarConfig.idGenColor\"\n [textAvatar]=\"avatarConfig.textAvatar\" />\n }\n @if (item()['fieldLabelCol' + indexRow + colIndex]; as labelColFunc) {\n <libs_ui-components-popover\n type=\"text\"\n [style]=\"' ' | LibsUiPipesCallFunctionInTemplatePipe: item()['fieldColStylesDynamic' + indexRow + colIndex] : item() | async\"\n [classInclude]=\"keySelected() === item()[fieldKey()] ? row().classItemSelected || item()['fieldColClass' + indexRow + colIndex] || '' : item()['fieldColClass' + indexRow + colIndex] || ''\"\n [innerHtml]=\"'fieldLabelCol' | LibsUiPipesCallFunctionInTemplatePipe: labelColFunc : item() | async\"\n [config]=\"{ zIndex: zIndex() }\"\n (outChangStageFlagMouse)=\"handlerChangStageFlagMouse($event)\"\n (outEvent)=\"handlerSelectItem($event, item(), col().action)\" />\n }\n @if (item()['fieldColPopover' + indexRow + colIndex]; as popover) {\n <libs_ui-components-popover\n [type]=\"popover.type ?? 'other'\"\n [config]=\"popover?.config\"\n [classInclude]=\"item()['fieldColClass' + indexRow + colIndex]\"\n [style]=\"' ' | LibsUiPipesCallFunctionInTemplatePipe: item()['fieldColStylesDynamic' + indexRow + colIndex] : item() | async\"\n (outChangStageFlagMouse)=\"handlerChangStageFlagMouse($event)\"\n (outEvent)=\"handlerSelectItem($event, item(), col().action)\">\n @let constHtmlDataView = popover.dataView || popoverIcon;\n <span\n [class]=\"popover.classInclude || ''\"\n [innerHtml]=\"constHtmlDataView | translate\"></span>\n </libs_ui-components-popover>\n }\n @if (fieldKey() && col().getComponentOutlet) {\n <ng-container\n *ngComponentOutlet=\"\n 'row:' + indexRow + '-col:' + colIndex | LibsUiPipesCallFunctionInTemplatePipe: col().getComponentOutlet : item() | async;\n inputs: undefined | LibsUiPipesCallFunctionInTemplatePipe: col().getDataComponentOutlet : item() : 'row:' + indexRow + '-col:' + colIndex : { valueIsEmpty: { item: item() } } | async\n \" />\n }\n @if (item()['fieldColToggle' + indexRow + colIndex]; as toggle) {\n <libs_ui-components-label\n [style]=\"' ' | LibsUiPipesCallFunctionInTemplatePipe: item()['fieldColStylesDynamic' + indexRow + colIndex] : item() | async\"\n [hasToggle]=\"toggle.hasToggle\"\n [toggleActive]=\"toggle.toggleActive\"\n [toggleDisable]=\"toggle.toggleDisable\"\n [popover]=\"toggle.popover\"\n [classInclude]=\"toggle.classInclude\"\n [labelLeft]=\"toggle.labelLeft\"\n [labelRight]=\"toggle.labelRight\"\n (outSwitchEvent)=\"handlerSelectItem('click', item(), col().action)\" />\n }\n @if (item()['fieldColButton' + indexRow + colIndex]; as button) {\n <libs_ui-components-buttons-button\n [type]=\"button.type\"\n [classIconLeft]=\"button.classIconLeft\"\n [classIconRight]=\"button.classIconRight\"\n [classLabel]=\"button.classLabel\"\n [iconOnlyType]=\"button.iconOnlyType\"\n [popover]=\"button.popover\"\n [disable]=\"button.disable\"\n [ignorePointerEvent]=\"button.ignorePointerEvent\"\n [classInclude]=\"item()['fieldColClass' + indexRow + colIndex] ?? ' '\"\n [ignoreStopPropagationEvent]=\"false\"\n (outClick)=\"handlerSelectItem('click', item(), col().action)\" />\n }\n @if (item()['fieldBadge' + indexRow + colIndex]; as badge) {\n <libs_ui-components-badge\n [mode]=\"badge.mode || 'x+'\"\n [style]=\"' ' | LibsUiPipesCallFunctionInTemplatePipe: item()['fieldColStylesDynamic' + indexRow + colIndex] : item() | async\"\n [count]=\"badge.count\"\n [maxCount]=\"badge.maxCount || 99\"\n [classCircle]=\"badge.classCircle || 'libs-ui-font-h4r'\" />\n }\n }\n </div>\n }\n </div>\n }\n </div>\n}\n", dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "component", type: LibsUiComponentsAvatarComponent, selector: "libs_ui-components-avatar", inputs: ["typeShape", "classInclude", "size", "linkAvatar", "linkAvatarError", "classImageInclude", "zIndexPreviewImage", "clickPreviewImage", "idGenColor", "getLastTextAfterSpace", "textAvatar", "textAvatarClassInclude", "containerTextAvatarClassInclude"], outputs: ["outAvatarError", "outEventPreviewImage"] }, { kind: "component", type: LibsUiComponentsPopoverComponent, selector: "libs_ui-components-popover,[LibsUiComponentsPopoverDirective]", inputs: ["debugId", "flagMouse", "type", "mode", "config", "ignoreShowPopover", "elementRefCustom", "initEventInElementRefCustom", "classInclude", "ignoreHiddenPopoverContentWhenMouseLeave", "ignoreStopPropagationEvent", "ignoreCursorPointerModeLikeClick", "isAddContentToParentDocument", "ignoreClickOutside"], outputs: ["outEvent", "outChangStageFlagMouse", "outEventPopoverContent", "outFunctionsControl"] }, { kind: "component", type: LibsUiComponentsButtonsButtonComponent, selector: "libs_ui-components-buttons-button", inputs: ["flagMouse", "type", "buttonCustom", "sizeButton", "label", "disable", "isPending", "imageLeft", "classInclude", "classIconLeft", "classIconRight", "classLabel", "iconOnlyType", "popover", "ignoreStopPropagationEvent", "zIndex", "widthLabelPopover", "styleIconLeft", "styleButton", "ignoreFocusWhenInputTab", "ignoreSetClickWhenShowPopover", "ignorePointerEvent", "isActive", "isHandlerEnterDocumentClickButton"], outputs: ["outClick", "outPopoverEvent", "outFunctionsControl"] }, { kind: "component", type: LibsUiComponentsLabelComponent, selector: "libs_ui-components-label", inputs: ["iconPopoverClass", "classInclude", "labelLeft", "labelLeftClass", "labelLeftBehindToggleButton", "popover", "required", "buttonsLeft", "disableButtonsLeft", "buttonsRight", "disableButtonsRight", "labelRight", "labelRightClass", "labelRightRequired", "hasToggle", "toggleSize", "toggleActive", "toggleDisable", "description", "descriptionClass", "buttonsDescription", "disableButtonsDescription", "buttonsDescriptionContainerClass", "onlyShowCount", "zIndexPopover", "timerDestroyPopover", "count", "limitLength"], outputs: ["outClickButton", "outSwitchEvent", "outLabelRightClick", "outLabelLeftClick"] }, { kind: "component", type: LibsUiComponentsBadgeComponent, selector: "libs_ui-components-badge", inputs: ["popoverConfig", "active", "count", "mode", "maxCount", "ignoreMarginDefault", "classCircle", "ignoreStopPropagationEvent"] }, { kind: "pipe", type: LibsUiPipesCallFunctionInTemplatePipe, name: "LibsUiPipesCallFunctionInTemplatePipe" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
57
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: LibsUiComponentsListRowsComponent, isStandalone: true, selector: "libs_ui-components-list-templates_rows", inputs: { configTemplate: { classPropertyName: "configTemplate", publicName: "configTemplate", isSignal: true, isRequired: true, transformFunction: null }, item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: false, transformFunction: null }, keySelected: { classPropertyName: "keySelected", publicName: "keySelected", isSignal: true, isRequired: false, transformFunction: null }, fieldKey: { classPropertyName: "fieldKey", publicName: "fieldKey", isSignal: true, isRequired: false, transformFunction: null }, zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { outChangStageFlagMousePopover: "outChangStageFlagMousePopover", outEvent: "outEvent" }, ngImport: i0, template: "@if (configTemplate() && configItemTextRows(); as configItemTextRows) {\n <div class=\"flex flex-col w-full {{ configTemplate().classRows ?? '' }}\">\n @for (row of configItemTextRows; track $index; let indexRow = $index) {\n <div [class]=\"row().classRow\">\n @if (row().getImage && (item() | LibsUiPipesCallFunctionInTemplatePipe: row().getImage : item() | async); as imgUrl) {\n <img\n [class]=\"item() | LibsUiPipesCallFunctionInTemplatePipe: row().getClassImage : item() | async\"\n src=\"{{ imgUrl }}\"\n alt=\"\"\n (error)=\"handlerErrorImage($event, row().getImageError)\" />\n }\n @if (item()['fieldRowAvatarConfig' + indexRow]; as avatarConfig) {\n <libs_ui-components-avatar\n [typeShape]=\"avatarConfig.typeShape || 'circle'\"\n [classInclude]=\"avatarConfig.classInclude\"\n [size]=\"avatarConfig.size || 32\"\n [linkAvatar]=\"avatarConfig.linkAvatar\"\n [linkAvatarError]=\"avatarConfig.linkAvatarError\"\n [idGenColor]=\"avatarConfig.idGenColor\"\n [textAvatar]=\"avatarConfig.textAvatar\" />\n }\n @if (fieldKey() && item()['fieldLabelRow' + indexRow] | async; as labelRow) {\n <libs_ui-components-popover\n type=\"text\"\n [config]=\"row().getPopoverConfig ? ('popover' | LibsUiPipesCallFunctionInTemplatePipe: row().getPopoverConfig : item() | async) : { zIndex: zIndex() + 1 }\"\n [classInclude]=\"keySelected() === item()[fieldKey()] ? row().classItemSelected || row().classGetValue || '' : row().classGetValue || ''\"\n [innerHtml]=\"labelRow\"\n (outChangStageFlagMouse)=\"handlerChangStageFlagMouse($event)\"\n (outEvent)=\"handlerSelectItem($event, item(), row().action)\" />\n }\n\n @if (fieldKey() && row().getComponentOutlet) {\n <ng-container\n *ngComponentOutlet=\"\n 'row:' + indexRow | LibsUiPipesCallFunctionInTemplatePipe: row().getComponentOutlet : item() | async;\n inputs: undefined | LibsUiPipesCallFunctionInTemplatePipe: row().getDataComponentOutlet : item() : 'row:' + indexRow : { valueIsEmpty: { item: item() } } | async\n \" />\n }\n @if (row().cols?.()?.length) {\n <div\n [class]=\"row().classCols || 'flex'\"\n [style]=\"item()[item()['fieldRowStylesDynamicCols' + indexRow]]\">\n @for (col of row().cols?.(); track $index; let colIndex = $index) {\n @if (col().getImage && (item() | LibsUiPipesCallFunctionInTemplatePipe: col().getImage : item() | async); as imgUrl) {\n <img\n [class]=\"item() | LibsUiPipesCallFunctionInTemplatePipe: col().getClassImage : item() | async\"\n src=\"{{ imgUrl }}\"\n alt=\"\"\n (error)=\"handlerErrorImage($event, col().getImageError)\" />\n }\n @if (item()['fieldColAvatarConfig' + indexRow + colIndex]; as avatarConfig) {\n <libs_ui-components-avatar\n [typeShape]=\"avatarConfig.typeShape || 'circle'\"\n [classInclude]=\"avatarConfig.classInclude\"\n [size]=\"avatarConfig.size || 32\"\n [linkAvatar]=\"avatarConfig.linkAvatar\"\n [linkAvatarError]=\"avatarConfig.linkAvatarError\"\n [idGenColor]=\"avatarConfig.idGenColor\"\n [textAvatar]=\"avatarConfig.textAvatar\" />\n }\n @if (item()['fieldLabelCol' + indexRow + colIndex]; as labelColFunc) {\n <libs_ui-components-popover\n type=\"text\"\n [style]=\"' ' | LibsUiPipesCallFunctionInTemplatePipe: item()['fieldColStylesDynamic' + indexRow + colIndex] : item() | async\"\n [classInclude]=\"keySelected() === item()[fieldKey()] ? row().classItemSelected || item()['fieldColClass' + indexRow + colIndex] || '' : item()['fieldColClass' + indexRow + colIndex] || ''\"\n [innerHtml]=\"'fieldLabelCol' | LibsUiPipesCallFunctionInTemplatePipe: labelColFunc : item() | async\"\n [config]=\"{ zIndex: zIndex() + 1 }\"\n (outChangStageFlagMouse)=\"handlerChangStageFlagMouse($event)\"\n (outEvent)=\"handlerSelectItem($event, item(), col().action)\" />\n }\n @if (item()['fieldColPopover' + indexRow + colIndex]; as popover) {\n <libs_ui-components-popover\n [type]=\"popover.type ?? 'other'\"\n [config]=\"popover?.config | LibsUiPipesCloneObjectPipe: true : { zIndex: zIndex() + 1 }\"\n [classInclude]=\"item()['fieldColClass' + indexRow + colIndex]\"\n [style]=\"' ' | LibsUiPipesCallFunctionInTemplatePipe: item()['fieldColStylesDynamic' + indexRow + colIndex] : item() | async\"\n (outChangStageFlagMouse)=\"handlerChangStageFlagMouse($event)\"\n (outEvent)=\"handlerSelectItem($event, item(), col().action)\">\n @let constHtmlDataView = popover.dataView || popoverIcon;\n <span\n [class]=\"popover.classInclude || ''\"\n [innerHtml]=\"constHtmlDataView | translate\"></span>\n </libs_ui-components-popover>\n }\n @if (fieldKey() && col().getComponentOutlet) {\n <ng-container\n *ngComponentOutlet=\"\n 'row:' + indexRow + '-col:' + colIndex | LibsUiPipesCallFunctionInTemplatePipe: col().getComponentOutlet : item() | async;\n inputs: undefined | LibsUiPipesCallFunctionInTemplatePipe: col().getDataComponentOutlet : item() : 'row:' + indexRow + '-col:' + colIndex : { valueIsEmpty: { item: item() } } | async\n \" />\n }\n @if (item()['fieldColToggle' + indexRow + colIndex]; as toggle) {\n <libs_ui-components-label\n [style]=\"' ' | LibsUiPipesCallFunctionInTemplatePipe: item()['fieldColStylesDynamic' + indexRow + colIndex] : item() | async\"\n [hasToggle]=\"toggle.hasToggle\"\n [toggleActive]=\"toggle.toggleActive\"\n [toggleDisable]=\"toggle.toggleDisable\"\n [popover]=\"toggle.popover\"\n [classInclude]=\"toggle.classInclude\"\n [labelLeft]=\"toggle.labelLeft\"\n [labelRight]=\"toggle.labelRight\"\n (outSwitchEvent)=\"handlerSelectItem('click', item(), col().action)\" />\n }\n @if (item()['fieldColButton' + indexRow + colIndex]; as button) {\n <libs_ui-components-buttons-button\n [type]=\"button.type\"\n [classIconLeft]=\"button.classIconLeft\"\n [classIconRight]=\"button.classIconRight\"\n [classLabel]=\"button.classLabel\"\n [iconOnlyType]=\"button.iconOnlyType\"\n [popover]=\"button.popover\"\n [disable]=\"button.disable\"\n [ignorePointerEvent]=\"button.ignorePointerEvent\"\n [classInclude]=\"item()['fieldColClass' + indexRow + colIndex] ?? ' '\"\n [ignoreStopPropagationEvent]=\"false\"\n (outClick)=\"handlerSelectItem('click', item(), col().action)\" />\n }\n @if (item()['fieldBadge' + indexRow + colIndex]; as badge) {\n <libs_ui-components-badge\n [mode]=\"badge.mode || 'x+'\"\n [style]=\"' ' | LibsUiPipesCallFunctionInTemplatePipe: item()['fieldColStylesDynamic' + indexRow + colIndex] : item() | async\"\n [count]=\"badge.count\"\n [maxCount]=\"badge.maxCount || 99\"\n [classCircle]=\"badge.classCircle || 'libs-ui-font-h4r'\" />\n }\n }\n </div>\n }\n </div>\n }\n </div>\n}\n", dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "component", type: LibsUiComponentsAvatarComponent, selector: "libs_ui-components-avatar", inputs: ["typeShape", "classInclude", "size", "linkAvatar", "linkAvatarError", "classImageInclude", "zIndexPreviewImage", "clickPreviewImage", "idGenColor", "getLastTextAfterSpace", "textAvatar", "textAvatarClassInclude", "containerTextAvatarClassInclude"], outputs: ["outAvatarError", "outEventPreviewImage"] }, { kind: "component", type: LibsUiComponentsPopoverComponent, selector: "libs_ui-components-popover,[LibsUiComponentsPopoverDirective]", inputs: ["debugId", "flagMouse", "type", "mode", "config", "ignoreShowPopover", "elementRefCustom", "initEventInElementRefCustom", "classInclude", "ignoreHiddenPopoverContentWhenMouseLeave", "ignoreStopPropagationEvent", "ignoreCursorPointerModeLikeClick", "isAddContentToParentDocument", "ignoreClickOutside"], outputs: ["outEvent", "outChangStageFlagMouse", "outEventPopoverContent", "outFunctionsControl"] }, { kind: "component", type: LibsUiComponentsButtonsButtonComponent, selector: "libs_ui-components-buttons-button", inputs: ["flagMouse", "type", "buttonCustom", "sizeButton", "label", "disable", "isPending", "imageLeft", "classInclude", "classIconLeft", "classIconRight", "classLabel", "iconOnlyType", "popover", "ignoreStopPropagationEvent", "zIndex", "widthLabelPopover", "styleIconLeft", "styleButton", "ignoreFocusWhenInputTab", "ignoreSetClickWhenShowPopover", "ignorePointerEvent", "isActive", "isHandlerEnterDocumentClickButton"], outputs: ["outClick", "outPopoverEvent", "outFunctionsControl"] }, { kind: "component", type: LibsUiComponentsLabelComponent, selector: "libs_ui-components-label", inputs: ["iconPopoverClass", "classInclude", "labelLeft", "labelLeftClass", "labelLeftBehindToggleButton", "popover", "required", "buttonsLeft", "disableButtonsLeft", "buttonsRight", "disableButtonsRight", "labelRight", "labelRightClass", "labelRightRequired", "hasToggle", "toggleSize", "toggleActive", "toggleDisable", "description", "descriptionClass", "buttonsDescription", "disableButtonsDescription", "buttonsDescriptionContainerClass", "onlyShowCount", "zIndexPopover", "timerDestroyPopover", "count", "limitLength"], outputs: ["outClickButton", "outSwitchEvent", "outLabelRightClick", "outLabelLeftClick"] }, { kind: "component", type: LibsUiComponentsBadgeComponent, selector: "libs_ui-components-badge", inputs: ["popoverConfig", "active", "count", "mode", "maxCount", "ignoreMarginDefault", "classCircle", "ignoreStopPropagationEvent"] }, { kind: "pipe", type: LibsUiPipesCallFunctionInTemplatePipe, name: "LibsUiPipesCallFunctionInTemplatePipe" }, { kind: "pipe", type: LibsUiPipesCloneObjectPipe, name: "LibsUiPipesCloneObjectPipe" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
57
58
|
}
|
|
58
59
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiComponentsListRowsComponent, decorators: [{
|
|
59
60
|
type: Component,
|
|
@@ -67,6 +68,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
67
68
|
LibsUiComponentsLabelComponent,
|
|
68
69
|
LibsUiComponentsBadgeComponent,
|
|
69
70
|
LibsUiPipesCallFunctionInTemplatePipe,
|
|
70
|
-
|
|
71
|
+
LibsUiPipesCloneObjectPipe
|
|
72
|
+
], template: "@if (configTemplate() && configItemTextRows(); as configItemTextRows) {\n <div class=\"flex flex-col w-full {{ configTemplate().classRows ?? '' }}\">\n @for (row of configItemTextRows; track $index; let indexRow = $index) {\n <div [class]=\"row().classRow\">\n @if (row().getImage && (item() | LibsUiPipesCallFunctionInTemplatePipe: row().getImage : item() | async); as imgUrl) {\n <img\n [class]=\"item() | LibsUiPipesCallFunctionInTemplatePipe: row().getClassImage : item() | async\"\n src=\"{{ imgUrl }}\"\n alt=\"\"\n (error)=\"handlerErrorImage($event, row().getImageError)\" />\n }\n @if (item()['fieldRowAvatarConfig' + indexRow]; as avatarConfig) {\n <libs_ui-components-avatar\n [typeShape]=\"avatarConfig.typeShape || 'circle'\"\n [classInclude]=\"avatarConfig.classInclude\"\n [size]=\"avatarConfig.size || 32\"\n [linkAvatar]=\"avatarConfig.linkAvatar\"\n [linkAvatarError]=\"avatarConfig.linkAvatarError\"\n [idGenColor]=\"avatarConfig.idGenColor\"\n [textAvatar]=\"avatarConfig.textAvatar\" />\n }\n @if (fieldKey() && item()['fieldLabelRow' + indexRow] | async; as labelRow) {\n <libs_ui-components-popover\n type=\"text\"\n [config]=\"row().getPopoverConfig ? ('popover' | LibsUiPipesCallFunctionInTemplatePipe: row().getPopoverConfig : item() | async) : { zIndex: zIndex() + 1 }\"\n [classInclude]=\"keySelected() === item()[fieldKey()] ? row().classItemSelected || row().classGetValue || '' : row().classGetValue || ''\"\n [innerHtml]=\"labelRow\"\n (outChangStageFlagMouse)=\"handlerChangStageFlagMouse($event)\"\n (outEvent)=\"handlerSelectItem($event, item(), row().action)\" />\n }\n\n @if (fieldKey() && row().getComponentOutlet) {\n <ng-container\n *ngComponentOutlet=\"\n 'row:' + indexRow | LibsUiPipesCallFunctionInTemplatePipe: row().getComponentOutlet : item() | async;\n inputs: undefined | LibsUiPipesCallFunctionInTemplatePipe: row().getDataComponentOutlet : item() : 'row:' + indexRow : { valueIsEmpty: { item: item() } } | async\n \" />\n }\n @if (row().cols?.()?.length) {\n <div\n [class]=\"row().classCols || 'flex'\"\n [style]=\"item()[item()['fieldRowStylesDynamicCols' + indexRow]]\">\n @for (col of row().cols?.(); track $index; let colIndex = $index) {\n @if (col().getImage && (item() | LibsUiPipesCallFunctionInTemplatePipe: col().getImage : item() | async); as imgUrl) {\n <img\n [class]=\"item() | LibsUiPipesCallFunctionInTemplatePipe: col().getClassImage : item() | async\"\n src=\"{{ imgUrl }}\"\n alt=\"\"\n (error)=\"handlerErrorImage($event, col().getImageError)\" />\n }\n @if (item()['fieldColAvatarConfig' + indexRow + colIndex]; as avatarConfig) {\n <libs_ui-components-avatar\n [typeShape]=\"avatarConfig.typeShape || 'circle'\"\n [classInclude]=\"avatarConfig.classInclude\"\n [size]=\"avatarConfig.size || 32\"\n [linkAvatar]=\"avatarConfig.linkAvatar\"\n [linkAvatarError]=\"avatarConfig.linkAvatarError\"\n [idGenColor]=\"avatarConfig.idGenColor\"\n [textAvatar]=\"avatarConfig.textAvatar\" />\n }\n @if (item()['fieldLabelCol' + indexRow + colIndex]; as labelColFunc) {\n <libs_ui-components-popover\n type=\"text\"\n [style]=\"' ' | LibsUiPipesCallFunctionInTemplatePipe: item()['fieldColStylesDynamic' + indexRow + colIndex] : item() | async\"\n [classInclude]=\"keySelected() === item()[fieldKey()] ? row().classItemSelected || item()['fieldColClass' + indexRow + colIndex] || '' : item()['fieldColClass' + indexRow + colIndex] || ''\"\n [innerHtml]=\"'fieldLabelCol' | LibsUiPipesCallFunctionInTemplatePipe: labelColFunc : item() | async\"\n [config]=\"{ zIndex: zIndex() + 1 }\"\n (outChangStageFlagMouse)=\"handlerChangStageFlagMouse($event)\"\n (outEvent)=\"handlerSelectItem($event, item(), col().action)\" />\n }\n @if (item()['fieldColPopover' + indexRow + colIndex]; as popover) {\n <libs_ui-components-popover\n [type]=\"popover.type ?? 'other'\"\n [config]=\"popover?.config | LibsUiPipesCloneObjectPipe: true : { zIndex: zIndex() + 1 }\"\n [classInclude]=\"item()['fieldColClass' + indexRow + colIndex]\"\n [style]=\"' ' | LibsUiPipesCallFunctionInTemplatePipe: item()['fieldColStylesDynamic' + indexRow + colIndex] : item() | async\"\n (outChangStageFlagMouse)=\"handlerChangStageFlagMouse($event)\"\n (outEvent)=\"handlerSelectItem($event, item(), col().action)\">\n @let constHtmlDataView = popover.dataView || popoverIcon;\n <span\n [class]=\"popover.classInclude || ''\"\n [innerHtml]=\"constHtmlDataView | translate\"></span>\n </libs_ui-components-popover>\n }\n @if (fieldKey() && col().getComponentOutlet) {\n <ng-container\n *ngComponentOutlet=\"\n 'row:' + indexRow + '-col:' + colIndex | LibsUiPipesCallFunctionInTemplatePipe: col().getComponentOutlet : item() | async;\n inputs: undefined | LibsUiPipesCallFunctionInTemplatePipe: col().getDataComponentOutlet : item() : 'row:' + indexRow + '-col:' + colIndex : { valueIsEmpty: { item: item() } } | async\n \" />\n }\n @if (item()['fieldColToggle' + indexRow + colIndex]; as toggle) {\n <libs_ui-components-label\n [style]=\"' ' | LibsUiPipesCallFunctionInTemplatePipe: item()['fieldColStylesDynamic' + indexRow + colIndex] : item() | async\"\n [hasToggle]=\"toggle.hasToggle\"\n [toggleActive]=\"toggle.toggleActive\"\n [toggleDisable]=\"toggle.toggleDisable\"\n [popover]=\"toggle.popover\"\n [classInclude]=\"toggle.classInclude\"\n [labelLeft]=\"toggle.labelLeft\"\n [labelRight]=\"toggle.labelRight\"\n (outSwitchEvent)=\"handlerSelectItem('click', item(), col().action)\" />\n }\n @if (item()['fieldColButton' + indexRow + colIndex]; as button) {\n <libs_ui-components-buttons-button\n [type]=\"button.type\"\n [classIconLeft]=\"button.classIconLeft\"\n [classIconRight]=\"button.classIconRight\"\n [classLabel]=\"button.classLabel\"\n [iconOnlyType]=\"button.iconOnlyType\"\n [popover]=\"button.popover\"\n [disable]=\"button.disable\"\n [ignorePointerEvent]=\"button.ignorePointerEvent\"\n [classInclude]=\"item()['fieldColClass' + indexRow + colIndex] ?? ' '\"\n [ignoreStopPropagationEvent]=\"false\"\n (outClick)=\"handlerSelectItem('click', item(), col().action)\" />\n }\n @if (item()['fieldBadge' + indexRow + colIndex]; as badge) {\n <libs_ui-components-badge\n [mode]=\"badge.mode || 'x+'\"\n [style]=\"' ' | LibsUiPipesCallFunctionInTemplatePipe: item()['fieldColStylesDynamic' + indexRow + colIndex] : item() | async\"\n [count]=\"badge.count\"\n [maxCount]=\"badge.maxCount || 99\"\n [classCircle]=\"badge.classCircle || 'libs-ui-font-h4r'\" />\n }\n }\n </div>\n }\n </div>\n }\n </div>\n}\n" }]
|
|
71
73
|
}], ctorParameters: () => [] });
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvbGlzdC9zcmMvdGVtcGxhdGVzL3Jvd3Mvcm93cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvbGlzdC9zcmMvdGVtcGxhdGVzL3Jvd3Mvcm93cy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9ELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBa0IsTUFBTSxlQUFlLENBQUM7QUFDN0gsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0UsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0UsT0FBTyxFQUFFLHNDQUFzQyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDNUYsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0UsT0FBTyxFQUFjLGdDQUFnQyxFQUFzQixNQUFNLDZCQUE2QixDQUFDO0FBQy9HLE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBYyxNQUFNLE1BQU0sQ0FBQzs7O0FBcUJqRCxNQUFNLE9BQU8saUNBQWlDO0lBQzVDLG1CQUFtQjtJQUNULFdBQVcsR0FBRyxNQUFNLENBQVMsbUVBQW1FLENBQUMsQ0FBQztJQUNsRyxrQkFBa0IsR0FBRyxNQUFNLENBQWdELEVBQUUsQ0FBQyxDQUFDO0lBRXpGLGdCQUFnQjtJQUNQLGNBQWMsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFpRCxDQUFDO0lBQ2pGLElBQUksR0FBRyxLQUFLLEVBQU8sQ0FBQztJQUNwQixXQUFXLEdBQUcsS0FBSyxFQUFXLENBQUM7SUFDL0IsUUFBUSxHQUFHLEtBQUssQ0FBUyxJQUFJLENBQUMsQ0FBQztJQUMvQixNQUFNLEdBQUcsS0FBSyxDQUFpQixJQUFJLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUVyRyw2QkFBNkIsR0FBRyxNQUFNLEVBQWMsQ0FBQztJQUNyRCxRQUFRLEdBQUcsTUFBTSxFQUFrQixDQUFDO0lBRTdDO1FBQ0UsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNWLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztRQUN4QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQzVDLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsZUFBZTtJQUNMLGlCQUFpQixDQUFDLEtBQXlCLEVBQUUsSUFBUyxFQUFFLE1BQVc7UUFDM0UsSUFBSSxLQUFLLEtBQUssT0FBTyxFQUFFLENBQUM7WUFDdEIsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRVMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLEtBQVksRUFBRSxxQkFBeUQ7UUFDdkcsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRXhCLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztZQUM1QyxPQUFPO1FBQ1QsQ0FBQztRQUVBLEtBQUssQ0FBQyxNQUFjLENBQUMsR0FBRyxHQUFHLE1BQU0sYUFBYSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEYsQ0FBQztJQUVTLDBCQUEwQixDQUFDLElBQWdCO1FBQ25ELElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEQsQ0FBQzt3R0FsRFUsaUNBQWlDOzRGQUFqQyxpQ0FBaUMsODFCQ2hDOUMsMDdQQW9JQSx1Q0QvR0ksU0FBUyw2Q0FDVCxlQUFlLDRGQUNmLGlCQUFpQixvUEFDakIsK0JBQStCLDZYQUMvQixnQ0FBZ0Msb2dCQUNoQyxzQ0FBc0Msc2pCQUN0Qyw4QkFBOEIsNHFCQUM5Qiw4QkFBOEIsc01BQzlCLHFDQUFxQzs7NEZBRzVCLGlDQUFpQztrQkFsQjdDLFNBQVM7K0JBRUUsd0NBQXdDLGNBRXRDLElBQUksbUJBQ0MsdUJBQXVCLENBQUMsTUFBTSxXQUN0Qzt3QkFDUCxTQUFTO3dCQUNULGVBQWU7d0JBQ2YsaUJBQWlCO3dCQUNqQiwrQkFBK0I7d0JBQy9CLGdDQUFnQzt3QkFDaEMsc0NBQXNDO3dCQUN0Qyw4QkFBOEI7d0JBQzlCLDhCQUE4Qjt3QkFDOUIscUNBQXFDO3FCQUN0QyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IEFzeW5jUGlwZSwgTmdDb21wb25lbnRPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgZWZmZWN0LCBpbnB1dCwgb3V0cHV0LCBzaWduYWwsIHVudHJhY2tlZCwgV3JpdGFibGVTaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExpYnNVaUNvbXBvbmVudHNBdmF0YXJDb21wb25lbnQgfSBmcm9tICdAbGlicy11aS9jb21wb25lbnRzLWF2YXRhcic7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzQmFkZ2VDb21wb25lbnQgfSBmcm9tICdAbGlicy11aS9jb21wb25lbnRzLWJhZGdlJztcbmltcG9ydCB7IExpYnNVaUNvbXBvbmVudHNCdXR0b25zQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1idXR0b25zLWJ1dHRvbic7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzTGFiZWxDb21wb25lbnQgfSBmcm9tICdAbGlicy11aS9jb21wb25lbnRzLWxhYmVsJztcbmltcG9ydCB7IElGbGFnTW91c2UsIExpYnNVaUNvbXBvbmVudHNQb3BvdmVyQ29tcG9uZW50LCBUWVBFX1BPUE9WRVJfRVZFTlQgfSBmcm9tICdAbGlicy11aS9jb21wb25lbnRzLXBvcG92ZXInO1xuaW1wb3J0IHsgTGlic1VpUGlwZXNDYWxsRnVuY3Rpb25JblRlbXBsYXRlUGlwZSB9IGZyb20gJ0BsaWJzLXVpL3BpcGVzLWNhbGwtZnVuY3Rpb24taW4tdGVtcGxhdGUnO1xuaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gJ0BsaWJzLXVpL3V0aWxzJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgbGFzdFZhbHVlRnJvbSwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSUVtaXRSb3dzRXZlbnQsIElMaXN0Q29uZmlnSXRlbUNoZWNrYm94LCBJTGlzdENvbmZpZ0l0ZW1UZXh0LCBJTGlzdENvbmZpZ0l0ZW1UZXh0Um93IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5cbkBDb21wb25lbnQoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ2xpYnNfdWktY29tcG9uZW50cy1saXN0LXRlbXBsYXRlc19yb3dzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Jvd3MuY29tcG9uZW50Lmh0bWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1xuICAgIEFzeW5jUGlwZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgTmdDb21wb25lbnRPdXRsZXQsXG4gICAgTGlic1VpQ29tcG9uZW50c0F2YXRhckNvbXBvbmVudCxcbiAgICBMaWJzVWlDb21wb25lbnRzUG9wb3ZlckNvbXBvbmVudCxcbiAgICBMaWJzVWlDb21wb25lbnRzQnV0dG9uc0J1dHRvbkNvbXBvbmVudCxcbiAgICBMaWJzVWlDb21wb25lbnRzTGFiZWxDb21wb25lbnQsXG4gICAgTGlic1VpQ29tcG9uZW50c0JhZGdlQ29tcG9uZW50LFxuICAgIExpYnNVaVBpcGVzQ2FsbEZ1bmN0aW9uSW5UZW1wbGF0ZVBpcGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIExpYnNVaUNvbXBvbmVudHNMaXN0Um93c0NvbXBvbmVudCB7XG4gIC8vICNyZWdpb24gUFJPUEVSVFlcbiAgcHJvdGVjdGVkIHBvcG92ZXJJY29uID0gc2lnbmFsPHN0cmluZz4oYDxpIGNsYXNzPSdsaWJzLXVpLWljb24tdG9vbHRpcC1vdXRsaW5lIHRleHQtWzE2cHhdIG1sLVs4cHhdJz48L2k+YCk7XG4gIHByb3RlY3RlZCBjb25maWdJdGVtVGV4dFJvd3MgPSBzaWduYWw8QXJyYXk8V3JpdGFibGVTaWduYWw8SUxpc3RDb25maWdJdGVtVGV4dFJvdz4+PihbXSk7XG5cbiAgLy8gI3JlZ2lvbiBJTlBVVFxuICByZWFkb25seSBjb25maWdUZW1wbGF0ZSA9IGlucHV0LnJlcXVpcmVkPElMaXN0Q29uZmlnSXRlbVRleHQgfCBJTGlzdENvbmZpZ0l0ZW1DaGVja2JveD4oKTtcbiAgcmVhZG9ubHkgaXRlbSA9IGlucHV0PGFueT4oKTtcbiAgcmVhZG9ubHkga2V5U2VsZWN0ZWQgPSBpbnB1dDx1bmtub3duPigpO1xuICByZWFkb25seSBmaWVsZEtleSA9IGlucHV0PHN0cmluZz4oJ2lkJyk7XG4gIHJlYWRvbmx5IHpJbmRleCA9IGlucHV0PG51bWJlciwgbnVtYmVyPigxMjAwLCB7IHRyYW5zZm9ybTogKHZhbHVlKSA9PiAoIWlzRW1wdHkodmFsdWUpID8gdmFsdWUgKyAxIDogMTIwMCkgfSk7XG5cbiAgcmVhZG9ubHkgb3V0Q2hhbmdTdGFnZUZsYWdNb3VzZVBvcG92ZXIgPSBvdXRwdXQ8SUZsYWdNb3VzZT4oKTtcbiAgcmVhZG9ubHkgb3V0RXZlbnQgPSBvdXRwdXQ8SUVtaXRSb3dzRXZlbnQ+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIHVudHJhY2tlZCgoKSA9PiB0aGlzLmFmdGVyVmlld0luaXQoKSk7XG4gICAgfSk7XG4gIH1cblxuICBhZnRlclZpZXdJbml0KCkge1xuICAgIGlmICghdGhpcy5jb25maWdUZW1wbGF0ZSgpLnJvd3M/LigpPy5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmNvbmZpZ0l0ZW1UZXh0Um93cy5zZXQodGhpcy5jb25maWdUZW1wbGF0ZSgpLnJvd3M/LigpIHx8IFtdKTtcbiAgfVxuXG4gIC8qIEZVTkNUSU9OUyAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlclNlbGVjdEl0ZW0oZXZlbnQ6IFRZUEVfUE9QT1ZFUl9FVkVOVCwgaXRlbTogYW55LCBhY3Rpb246IGFueSkge1xuICAgIGlmIChldmVudCAhPT0gJ2NsaWNrJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMub3V0RXZlbnQuZW1pdCh7IGV2ZW50LCBpdGVtLCBhY3Rpb24gfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlckVycm9ySW1hZ2UoZXZlbnQ6IEV2ZW50LCBmdW5jdGlvbkdldEltYWdlRXJyb3I/OiAoaXRlbTogYW55KSA9PiBPYnNlcnZhYmxlPHN0cmluZz4pIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIGlmICghZXZlbnQudGFyZ2V0IHx8ICFmdW5jdGlvbkdldEltYWdlRXJyb3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAoZXZlbnQudGFyZ2V0IGFzIGFueSkuc3JjID0gYXdhaXQgbGFzdFZhbHVlRnJvbShmdW5jdGlvbkdldEltYWdlRXJyb3IodGhpcy5pdGVtKCkpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVyQ2hhbmdTdGFnZUZsYWdNb3VzZShmbGFnOiBJRmxhZ01vdXNlKSB7XG4gICAgdGhpcy5vdXRDaGFuZ1N0YWdlRmxhZ01vdXNlUG9wb3Zlci5lbWl0KGZsYWcpO1xuICB9XG59XG4iLCJAaWYgKGNvbmZpZ1RlbXBsYXRlKCkgJiYgY29uZmlnSXRlbVRleHRSb3dzKCk7IGFzIGNvbmZpZ0l0ZW1UZXh0Um93cykge1xuICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCB3LWZ1bGwge3sgY29uZmlnVGVtcGxhdGUoKS5jbGFzc1Jvd3MgPz8gJycgfX1cIj5cbiAgICBAZm9yIChyb3cgb2YgY29uZmlnSXRlbVRleHRSb3dzOyB0cmFjayAkaW5kZXg7IGxldCBpbmRleFJvdyA9ICRpbmRleCkge1xuICAgICAgPGRpdiBbY2xhc3NdPVwicm93KCkuY2xhc3NSb3dcIj5cbiAgICAgICAgQGlmIChyb3coKS5nZXRJbWFnZSAmJiAoaXRlbSgpIHwgTGlic1VpUGlwZXNDYWxsRnVuY3Rpb25JblRlbXBsYXRlUGlwZTogcm93KCkuZ2V0SW1hZ2UgOiBpdGVtKCkgfCBhc3luYyk7IGFzIGltZ1VybCkge1xuICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgIFtjbGFzc109XCJpdGVtKCkgfCBMaWJzVWlQaXBlc0NhbGxGdW5jdGlvbkluVGVtcGxhdGVQaXBlOiByb3coKS5nZXRDbGFzc0ltYWdlIDogaXRlbSgpIHwgYXN5bmNcIlxuICAgICAgICAgICAgc3JjPVwie3sgaW1nVXJsIH19XCJcbiAgICAgICAgICAgIGFsdD1cIlwiXG4gICAgICAgICAgICAoZXJyb3IpPVwiaGFuZGxlckVycm9ySW1hZ2UoJGV2ZW50LCByb3coKS5nZXRJbWFnZUVycm9yKVwiIC8+XG4gICAgICAgIH1cbiAgICAgICAgQGlmIChpdGVtKClbJ2ZpZWxkUm93QXZhdGFyQ29uZmlnJyArIGluZGV4Um93XTsgYXMgYXZhdGFyQ29uZmlnKSB7XG4gICAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1hdmF0YXJcbiAgICAgICAgICAgIFt0eXBlU2hhcGVdPVwiYXZhdGFyQ29uZmlnLnR5cGVTaGFwZSB8fCAnY2lyY2xlJ1wiXG4gICAgICAgICAgICBbY2xhc3NJbmNsdWRlXT1cImF2YXRhckNvbmZpZy5jbGFzc0luY2x1ZGVcIlxuICAgICAgICAgICAgW3NpemVdPVwiYXZhdGFyQ29uZmlnLnNpemUgfHwgMzJcIlxuICAgICAgICAgICAgW2xpbmtBdmF0YXJdPVwiYXZhdGFyQ29uZmlnLmxpbmtBdmF0YXJcIlxuICAgICAgICAgICAgW2xpbmtBdmF0YXJFcnJvcl09XCJhdmF0YXJDb25maWcubGlua0F2YXRhckVycm9yXCJcbiAgICAgICAgICAgIFtpZEdlbkNvbG9yXT1cImF2YXRhckNvbmZpZy5pZEdlbkNvbG9yXCJcbiAgICAgICAgICAgIFt0ZXh0QXZhdGFyXT1cImF2YXRhckNvbmZpZy50ZXh0QXZhdGFyXCIgLz5cbiAgICAgICAgfVxuICAgICAgICBAaWYgKGZpZWxkS2V5KCkgJiYgaXRlbSgpWydmaWVsZExhYmVsUm93JyArIGluZGV4Um93XSB8IGFzeW5jOyBhcyBsYWJlbFJvdykge1xuICAgICAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtcG9wb3ZlclxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgW2NvbmZpZ109XCJyb3coKS5nZXRQb3BvdmVyQ29uZmlnID8gKCdwb3BvdmVyJyB8IExpYnNVaVBpcGVzQ2FsbEZ1bmN0aW9uSW5UZW1wbGF0ZVBpcGU6IHJvdygpLmdldFBvcG92ZXJDb25maWcgOiBpdGVtKCkgfCBhc3luYykgOiB7IHpJbmRleDogekluZGV4KCkgfVwiXG4gICAgICAgICAgICBbY2xhc3NJbmNsdWRlXT1cImtleVNlbGVjdGVkKCkgPT09IGl0ZW0oKVtmaWVsZEtleSgpXSA/IHJvdygpLmNsYXNzSXRlbVNlbGVjdGVkIHx8IHJvdygpLmNsYXNzR2V0VmFsdWUgfHwgJycgOiByb3coKS5jbGFzc0dldFZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgIFtpbm5lckh0bWxdPVwibGFiZWxSb3dcIlxuICAgICAgICAgICAgKG91dENoYW5nU3RhZ2VGbGFnTW91c2UpPVwiaGFuZGxlckNoYW5nU3RhZ2VGbGFnTW91c2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAob3V0RXZlbnQpPVwiaGFuZGxlclNlbGVjdEl0ZW0oJGV2ZW50LCBpdGVtKCksIHJvdygpLmFjdGlvbilcIiAvPlxuICAgICAgICB9XG5cbiAgICAgICAgQGlmIChmaWVsZEtleSgpICYmIHJvdygpLmdldENvbXBvbmVudE91dGxldCkge1xuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ0NvbXBvbmVudE91dGxldD1cIlxuICAgICAgICAgICAgICAncm93OicgKyBpbmRleFJvdyB8IExpYnNVaVBpcGVzQ2FsbEZ1bmN0aW9uSW5UZW1wbGF0ZVBpcGU6IHJvdygpLmdldENvbXBvbmVudE91dGxldCA6IGl0ZW0oKSB8IGFzeW5jO1xuICAgICAgICAgICAgICBpbnB1dHM6IHVuZGVmaW5lZCB8IExpYnNVaVBpcGVzQ2FsbEZ1bmN0aW9uSW5UZW1wbGF0ZVBpcGU6IHJvdygpLmdldERhdGFDb21wb25lbnRPdXRsZXQgOiBpdGVtKCkgOiAncm93OicgKyBpbmRleFJvdyA6IHsgdmFsdWVJc0VtcHR5OiB7IGl0ZW06IGl0ZW0oKSB9IH0gfCBhc3luY1xuICAgICAgICAgICAgXCIgLz5cbiAgICAgICAgfVxuICAgICAgICBAaWYgKHJvdygpLmNvbHM/LigpPy5sZW5ndGgpIHtcbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBbY2xhc3NdPVwicm93KCkuY2xhc3NDb2xzIHx8ICdmbGV4J1wiXG4gICAgICAgICAgICBbc3R5bGVdPVwiaXRlbSgpW2l0ZW0oKVsnZmllbGRSb3dTdHlsZXNEeW5hbWljQ29scycgKyBpbmRleFJvd11dXCI+XG4gICAgICAgICAgICBAZm9yIChjb2wgb2Ygcm93KCkuY29scz8uKCk7IHRyYWNrICRpbmRleDsgbGV0IGNvbEluZGV4ID0gJGluZGV4KSB7XG4gICAgICAgICAgICAgIEBpZiAoY29sKCkuZ2V0SW1hZ2UgJiYgKGl0ZW0oKSB8IExpYnNVaVBpcGVzQ2FsbEZ1bmN0aW9uSW5UZW1wbGF0ZVBpcGU6IGNvbCgpLmdldEltYWdlIDogaXRlbSgpIHwgYXN5bmMpOyBhcyBpbWdVcmwpIHtcbiAgICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiaXRlbSgpIHwgTGlic1VpUGlwZXNDYWxsRnVuY3Rpb25JblRlbXBsYXRlUGlwZTogY29sKCkuZ2V0Q2xhc3NJbWFnZSA6IGl0ZW0oKSB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgIHNyYz1cInt7IGltZ1VybCB9fVwiXG4gICAgICAgICAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAgICAgICAgICAgKGVycm9yKT1cImhhbmRsZXJFcnJvckltYWdlKCRldmVudCwgY29sKCkuZ2V0SW1hZ2VFcnJvcilcIiAvPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBpZiAoaXRlbSgpWydmaWVsZENvbEF2YXRhckNvbmZpZycgKyBpbmRleFJvdyArIGNvbEluZGV4XTsgYXMgYXZhdGFyQ29uZmlnKSB7XG4gICAgICAgICAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1hdmF0YXJcbiAgICAgICAgICAgICAgICAgIFt0eXBlU2hhcGVdPVwiYXZhdGFyQ29uZmlnLnR5cGVTaGFwZSB8fCAnY2lyY2xlJ1wiXG4gICAgICAgICAgICAgICAgICBbY2xhc3NJbmNsdWRlXT1cImF2YXRhckNvbmZpZy5jbGFzc0luY2x1ZGVcIlxuICAgICAgICAgICAgICAgICAgW3NpemVdPVwiYXZhdGFyQ29uZmlnLnNpemUgfHwgMzJcIlxuICAgICAgICAgICAgICAgICAgW2xpbmtBdmF0YXJdPVwiYXZhdGFyQ29uZmlnLmxpbmtBdmF0YXJcIlxuICAgICAgICAgICAgICAgICAgW2xpbmtBdmF0YXJFcnJvcl09XCJhdmF0YXJDb25maWcubGlua0F2YXRhckVycm9yXCJcbiAgICAgICAgICAgICAgICAgIFtpZEdlbkNvbG9yXT1cImF2YXRhckNvbmZpZy5pZEdlbkNvbG9yXCJcbiAgICAgICAgICAgICAgICAgIFt0ZXh0QXZhdGFyXT1cImF2YXRhckNvbmZpZy50ZXh0QXZhdGFyXCIgLz5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBAaWYgKGl0ZW0oKVsnZmllbGRMYWJlbENvbCcgKyBpbmRleFJvdyArIGNvbEluZGV4XTsgYXMgbGFiZWxDb2xGdW5jKSB7XG4gICAgICAgICAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1wb3BvdmVyXG4gICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICBbc3R5bGVdPVwiJyAnIHwgTGlic1VpUGlwZXNDYWxsRnVuY3Rpb25JblRlbXBsYXRlUGlwZTogaXRlbSgpWydmaWVsZENvbFN0eWxlc0R5bmFtaWMnICsgaW5kZXhSb3cgKyBjb2xJbmRleF0gOiBpdGVtKCkgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICBbY2xhc3NJbmNsdWRlXT1cImtleVNlbGVjdGVkKCkgPT09IGl0ZW0oKVtmaWVsZEtleSgpXSA/IHJvdygpLmNsYXNzSXRlbVNlbGVjdGVkIHx8IGl0ZW0oKVsnZmllbGRDb2xDbGFzcycgKyBpbmRleFJvdyArIGNvbEluZGV4XSB8fCAnJyA6IGl0ZW0oKVsnZmllbGRDb2xDbGFzcycgKyBpbmRleFJvdyArIGNvbEluZGV4XSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICBbaW5uZXJIdG1sXT1cIidmaWVsZExhYmVsQ29sJyB8IExpYnNVaVBpcGVzQ2FsbEZ1bmN0aW9uSW5UZW1wbGF0ZVBpcGU6IGxhYmVsQ29sRnVuYyA6IGl0ZW0oKSB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgIFtjb25maWddPVwieyB6SW5kZXg6IHpJbmRleCgpIH1cIlxuICAgICAgICAgICAgICAgICAgKG91dENoYW5nU3RhZ2VGbGFnTW91c2UpPVwiaGFuZGxlckNoYW5nU3RhZ2VGbGFnTW91c2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAob3V0RXZlbnQpPVwiaGFuZGxlclNlbGVjdEl0ZW0oJGV2ZW50LCBpdGVtKCksIGNvbCgpLmFjdGlvbilcIiAvPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBpZiAoaXRlbSgpWydmaWVsZENvbFBvcG92ZXInICsgaW5kZXhSb3cgKyBjb2xJbmRleF07IGFzIHBvcG92ZXIpIHtcbiAgICAgICAgICAgICAgICA8bGlic191aS1jb21wb25lbnRzLXBvcG92ZXJcbiAgICAgICAgICAgICAgICAgIFt0eXBlXT1cInBvcG92ZXIudHlwZSA/PyAnb3RoZXInXCJcbiAgICAgICAgICAgICAgICAgIFtjb25maWddPVwicG9wb3Zlcj8uY29uZmlnXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzc0luY2x1ZGVdPVwiaXRlbSgpWydmaWVsZENvbENsYXNzJyArIGluZGV4Um93ICsgY29sSW5kZXhdXCJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCInICcgfCBMaWJzVWlQaXBlc0NhbGxGdW5jdGlvbkluVGVtcGxhdGVQaXBlOiBpdGVtKClbJ2ZpZWxkQ29sU3R5bGVzRHluYW1pYycgKyBpbmRleFJvdyArIGNvbEluZGV4XSA6IGl0ZW0oKSB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgIChvdXRDaGFuZ1N0YWdlRmxhZ01vdXNlKT1cImhhbmRsZXJDaGFuZ1N0YWdlRmxhZ01vdXNlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgKG91dEV2ZW50KT1cImhhbmRsZXJTZWxlY3RJdGVtKCRldmVudCwgaXRlbSgpLCBjb2woKS5hY3Rpb24pXCI+XG4gICAgICAgICAgICAgICAgICBAbGV0IGNvbnN0SHRtbERhdGFWaWV3ID0gcG9wb3Zlci5kYXRhVmlldyB8fCBwb3BvdmVySWNvbjtcbiAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJwb3BvdmVyLmNsYXNzSW5jbHVkZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtpbm5lckh0bWxdPVwiY29uc3RIdG1sRGF0YVZpZXcgfCB0cmFuc2xhdGVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9saWJzX3VpLWNvbXBvbmVudHMtcG9wb3Zlcj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBAaWYgKGZpZWxkS2V5KCkgJiYgY29sKCkuZ2V0Q29tcG9uZW50T3V0bGV0KSB7XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgKm5nQ29tcG9uZW50T3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICdyb3c6JyArIGluZGV4Um93ICsgJy1jb2w6JyArIGNvbEluZGV4IHwgTGlic1VpUGlwZXNDYWxsRnVuY3Rpb25JblRlbXBsYXRlUGlwZTogY29sKCkuZ2V0Q29tcG9uZW50T3V0bGV0IDogaXRlbSgpIHwgYXN5bmM7XG4gICAgICAgICAgICAgICAgICAgIGlucHV0czogdW5kZWZpbmVkIHwgTGlic1VpUGlwZXNDYWxsRnVuY3Rpb25JblRlbXBsYXRlUGlwZTogY29sKCkuZ2V0RGF0YUNvbXBvbmVudE91dGxldCA6IGl0ZW0oKSA6ICdyb3c6JyArIGluZGV4Um93ICsgJy1jb2w6JyArIGNvbEluZGV4IDogeyB2YWx1ZUlzRW1wdHk6IHsgaXRlbTogaXRlbSgpIH0gfSB8IGFzeW5jXG4gICAgICAgICAgICAgICAgICBcIiAvPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBpZiAoaXRlbSgpWydmaWVsZENvbFRvZ2dsZScgKyBpbmRleFJvdyArIGNvbEluZGV4XTsgYXMgdG9nZ2xlKSB7XG4gICAgICAgICAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1sYWJlbFxuICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cIicgJyB8IExpYnNVaVBpcGVzQ2FsbEZ1bmN0aW9uSW5UZW1wbGF0ZVBpcGU6IGl0ZW0oKVsnZmllbGRDb2xTdHlsZXNEeW5hbWljJyArIGluZGV4Um93ICsgY29sSW5kZXhdIDogaXRlbSgpIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgICAgW2hhc1RvZ2dsZV09XCJ0b2dnbGUuaGFzVG9nZ2xlXCJcbiAgICAgICAgICAgICAgICAgIFt0b2dnbGVBY3RpdmVdPVwidG9nZ2xlLnRvZ2dsZUFjdGl2ZVwiXG4gICAgICAgICAgICAgICAgICBbdG9nZ2xlRGlzYWJsZV09XCJ0b2dnbGUudG9nZ2xlRGlzYWJsZVwiXG4gICAgICAgICAgICAgICAgICBbcG9wb3Zlcl09XCJ0b2dnbGUucG9wb3ZlclwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3NJbmNsdWRlXT1cInRvZ2dsZS5jbGFzc0luY2x1ZGVcIlxuICAgICAgICAgICAgICAgICAgW2xhYmVsTGVmdF09XCJ0b2dnbGUubGFiZWxMZWZ0XCJcbiAgICAgICAgICAgICAgICAgIFtsYWJlbFJpZ2h0XT1cInRvZ2dsZS5sYWJlbFJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgIChvdXRTd2l0Y2hFdmVudCk9XCJoYW5kbGVyU2VsZWN0SXRlbSgnY2xpY2snLCBpdGVtKCksIGNvbCgpLmFjdGlvbilcIiAvPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBpZiAoaXRlbSgpWydmaWVsZENvbEJ1dHRvbicgKyBpbmRleFJvdyArIGNvbEluZGV4XTsgYXMgYnV0dG9uKSB7XG4gICAgICAgICAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1idXR0b25zLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgW3R5cGVdPVwiYnV0dG9uLnR5cGVcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzSWNvbkxlZnRdPVwiYnV0dG9uLmNsYXNzSWNvbkxlZnRcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzSWNvblJpZ2h0XT1cImJ1dHRvbi5jbGFzc0ljb25SaWdodFwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3NMYWJlbF09XCJidXR0b24uY2xhc3NMYWJlbFwiXG4gICAgICAgICAgICAgICAgICBbaWNvbk9ubHlUeXBlXT1cImJ1dHRvbi5pY29uT25seVR5cGVcIlxuICAgICAgICAgICAgICAgICAgW3BvcG92ZXJdPVwiYnV0dG9uLnBvcG92ZXJcIlxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVdPVwiYnV0dG9uLmRpc2FibGVcIlxuICAgICAgICAgICAgICAgICAgW2lnbm9yZVBvaW50ZXJFdmVudF09XCJidXR0b24uaWdub3JlUG9pbnRlckV2ZW50XCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzc0luY2x1ZGVdPVwiaXRlbSgpWydmaWVsZENvbENsYXNzJyArIGluZGV4Um93ICsgY29sSW5kZXhdID8/ICcgJ1wiXG4gICAgICAgICAgICAgICAgICBbaWdub3JlU3RvcFByb3BhZ2F0aW9uRXZlbnRdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgKG91dENsaWNrKT1cImhhbmRsZXJTZWxlY3RJdGVtKCdjbGljaycsIGl0ZW0oKSwgY29sKCkuYWN0aW9uKVwiIC8+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgQGlmIChpdGVtKClbJ2ZpZWxkQmFkZ2UnICsgaW5kZXhSb3cgKyBjb2xJbmRleF07IGFzIGJhZGdlKSB7XG4gICAgICAgICAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1iYWRnZVxuICAgICAgICAgICAgICAgICAgW21vZGVdPVwiYmFkZ2UubW9kZSB8fCAneCsnXCJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCInICcgfCBMaWJzVWlQaXBlc0NhbGxGdW5jdGlvbkluVGVtcGxhdGVQaXBlOiBpdGVtKClbJ2ZpZWxkQ29sU3R5bGVzRHluYW1pYycgKyBpbmRleFJvdyArIGNvbEluZGV4XSA6IGl0ZW0oKSB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgIFtjb3VudF09XCJiYWRnZS5jb3VudFwiXG4gICAgICAgICAgICAgICAgICBbbWF4Q291bnRdPVwiYmFkZ2UubWF4Q291bnQgfHwgOTlcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzQ2lyY2xlXT1cImJhZGdlLmNsYXNzQ2lyY2xlIHx8ICdsaWJzLXVpLWZvbnQtaDRyJ1wiIC8+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgfVxuICA8L2Rpdj5cbn1cbiJdfQ==
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvbGlzdC9zcmMvdGVtcGxhdGVzL3Jvd3Mvcm93cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvbGlzdC9zcmMvdGVtcGxhdGVzL3Jvd3Mvcm93cy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9ELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBa0IsTUFBTSxlQUFlLENBQUM7QUFDN0gsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0UsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0UsT0FBTyxFQUFFLHNDQUFzQyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDNUYsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0UsT0FBTyxFQUFjLGdDQUFnQyxFQUFzQixNQUFNLDZCQUE2QixDQUFDO0FBQy9HLE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2pHLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBYyxNQUFNLE1BQU0sQ0FBQzs7O0FBc0JqRCxNQUFNLE9BQU8saUNBQWlDO0lBQzVDLG1CQUFtQjtJQUNULFdBQVcsR0FBRyxNQUFNLENBQVMsbUVBQW1FLENBQUMsQ0FBQztJQUNsRyxrQkFBa0IsR0FBRyxNQUFNLENBQWdELEVBQUUsQ0FBQyxDQUFDO0lBRXpGLGdCQUFnQjtJQUNQLGNBQWMsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFpRCxDQUFDO0lBQ2pGLElBQUksR0FBRyxLQUFLLEVBQU8sQ0FBQztJQUNwQixXQUFXLEdBQUcsS0FBSyxFQUFXLENBQUM7SUFDL0IsUUFBUSxHQUFHLEtBQUssQ0FBUyxJQUFJLENBQUMsQ0FBQztJQUMvQixNQUFNLEdBQUcsS0FBSyxDQUFpQixJQUFJLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUVyRyw2QkFBNkIsR0FBRyxNQUFNLEVBQWMsQ0FBQztJQUNyRCxRQUFRLEdBQUcsTUFBTSxFQUFrQixDQUFDO0lBRTdDO1FBQ0UsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNWLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztRQUN4QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQzVDLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsZUFBZTtJQUNMLGlCQUFpQixDQUFDLEtBQXlCLEVBQUUsSUFBUyxFQUFFLE1BQVc7UUFDM0UsSUFBSSxLQUFLLEtBQUssT0FBTyxFQUFFLENBQUM7WUFDdEIsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRVMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLEtBQVksRUFBRSxxQkFBeUQ7UUFDdkcsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRXhCLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztZQUM1QyxPQUFPO1FBQ1QsQ0FBQztRQUVBLEtBQUssQ0FBQyxNQUFjLENBQUMsR0FBRyxHQUFHLE1BQU0sYUFBYSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEYsQ0FBQztJQUVTLDBCQUEwQixDQUFDLElBQWdCO1FBQ25ELElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEQsQ0FBQzt3R0FsRFUsaUNBQWlDOzRGQUFqQyxpQ0FBaUMsODFCQ2xDOUMsZ2dRQW9JQSx1Q0Q5R0ksU0FBUyw2Q0FDVCxlQUFlLDRGQUNmLGlCQUFpQixvUEFDakIsK0JBQStCLDZYQUMvQixnQ0FBZ0Msb2dCQUNoQyxzQ0FBc0Msc2pCQUN0Qyw4QkFBOEIsNHFCQUM5Qiw4QkFBOEIsc01BQzlCLHFDQUFxQyx5RUFDckMsMEJBQTBCOzs0RkFHakIsaUNBQWlDO2tCQW5CN0MsU0FBUzsrQkFFRSx3Q0FBd0MsY0FFdEMsSUFBSSxtQkFDQyx1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDO3dCQUNQLFNBQVM7d0JBQ1QsZUFBZTt3QkFDZixpQkFBaUI7d0JBQ2pCLCtCQUErQjt3QkFDL0IsZ0NBQWdDO3dCQUNoQyxzQ0FBc0M7d0JBQ3RDLDhCQUE4Qjt3QkFDOUIsOEJBQThCO3dCQUM5QixxQ0FBcUM7d0JBQ3JDLDBCQUEwQjtxQkFDM0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyBBc3luY1BpcGUsIE5nQ29tcG9uZW50T3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGVmZmVjdCwgaW5wdXQsIG91dHB1dCwgc2lnbmFsLCB1bnRyYWNrZWQsIFdyaXRhYmxlU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzQXZhdGFyQ29tcG9uZW50IH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1hdmF0YXInO1xuaW1wb3J0IHsgTGlic1VpQ29tcG9uZW50c0JhZGdlQ29tcG9uZW50IH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1iYWRnZSc7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzQnV0dG9uc0J1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtYnV0dG9ucy1idXR0b24nO1xuaW1wb3J0IHsgTGlic1VpQ29tcG9uZW50c0xhYmVsQ29tcG9uZW50IH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1sYWJlbCc7XG5pbXBvcnQgeyBJRmxhZ01vdXNlLCBMaWJzVWlDb21wb25lbnRzUG9wb3ZlckNvbXBvbmVudCwgVFlQRV9QT1BPVkVSX0VWRU5UIH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1wb3BvdmVyJztcbmltcG9ydCB7IExpYnNVaVBpcGVzQ2FsbEZ1bmN0aW9uSW5UZW1wbGF0ZVBpcGUgfSBmcm9tICdAbGlicy11aS9waXBlcy1jYWxsLWZ1bmN0aW9uLWluLXRlbXBsYXRlJztcbmltcG9ydCB7IExpYnNVaVBpcGVzQ2xvbmVPYmplY3RQaXBlIH0gZnJvbSAnQGxpYnMtdWkvcGlwZXMtY2xvbmUtb2JqZWN0JztcbmltcG9ydCB7IGlzRW1wdHkgfSBmcm9tICdAbGlicy11aS91dGlscyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IGxhc3RWYWx1ZUZyb20sIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IElFbWl0Um93c0V2ZW50LCBJTGlzdENvbmZpZ0l0ZW1DaGVja2JveCwgSUxpc3RDb25maWdJdGVtVGV4dCwgSUxpc3RDb25maWdJdGVtVGV4dFJvdyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdsaWJzX3VpLWNvbXBvbmVudHMtbGlzdC10ZW1wbGF0ZXNfcm93cycsXG4gIHRlbXBsYXRlVXJsOiAnLi9yb3dzLmNvbXBvbmVudC5odG1sJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtcbiAgICBBc3luY1BpcGUsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgIE5nQ29tcG9uZW50T3V0bGV0LFxuICAgIExpYnNVaUNvbXBvbmVudHNBdmF0YXJDb21wb25lbnQsXG4gICAgTGlic1VpQ29tcG9uZW50c1BvcG92ZXJDb21wb25lbnQsXG4gICAgTGlic1VpQ29tcG9uZW50c0J1dHRvbnNCdXR0b25Db21wb25lbnQsXG4gICAgTGlic1VpQ29tcG9uZW50c0xhYmVsQ29tcG9uZW50LFxuICAgIExpYnNVaUNvbXBvbmVudHNCYWRnZUNvbXBvbmVudCxcbiAgICBMaWJzVWlQaXBlc0NhbGxGdW5jdGlvbkluVGVtcGxhdGVQaXBlLFxuICAgIExpYnNVaVBpcGVzQ2xvbmVPYmplY3RQaXBlXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIExpYnNVaUNvbXBvbmVudHNMaXN0Um93c0NvbXBvbmVudCB7XG4gIC8vICNyZWdpb24gUFJPUEVSVFlcbiAgcHJvdGVjdGVkIHBvcG92ZXJJY29uID0gc2lnbmFsPHN0cmluZz4oYDxpIGNsYXNzPSdsaWJzLXVpLWljb24tdG9vbHRpcC1vdXRsaW5lIHRleHQtWzE2cHhdIG1sLVs4cHhdJz48L2k+YCk7XG4gIHByb3RlY3RlZCBjb25maWdJdGVtVGV4dFJvd3MgPSBzaWduYWw8QXJyYXk8V3JpdGFibGVTaWduYWw8SUxpc3RDb25maWdJdGVtVGV4dFJvdz4+PihbXSk7XG5cbiAgLy8gI3JlZ2lvbiBJTlBVVFxuICByZWFkb25seSBjb25maWdUZW1wbGF0ZSA9IGlucHV0LnJlcXVpcmVkPElMaXN0Q29uZmlnSXRlbVRleHQgfCBJTGlzdENvbmZpZ0l0ZW1DaGVja2JveD4oKTtcbiAgcmVhZG9ubHkgaXRlbSA9IGlucHV0PGFueT4oKTtcbiAgcmVhZG9ubHkga2V5U2VsZWN0ZWQgPSBpbnB1dDx1bmtub3duPigpO1xuICByZWFkb25seSBmaWVsZEtleSA9IGlucHV0PHN0cmluZz4oJ2lkJyk7XG4gIHJlYWRvbmx5IHpJbmRleCA9IGlucHV0PG51bWJlciwgbnVtYmVyPigxMjAwLCB7IHRyYW5zZm9ybTogKHZhbHVlKSA9PiAoIWlzRW1wdHkodmFsdWUpID8gdmFsdWUgKyAxIDogMTIwMCkgfSk7XG5cbiAgcmVhZG9ubHkgb3V0Q2hhbmdTdGFnZUZsYWdNb3VzZVBvcG92ZXIgPSBvdXRwdXQ8SUZsYWdNb3VzZT4oKTtcbiAgcmVhZG9ubHkgb3V0RXZlbnQgPSBvdXRwdXQ8SUVtaXRSb3dzRXZlbnQ+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIHVudHJhY2tlZCgoKSA9PiB0aGlzLmFmdGVyVmlld0luaXQoKSk7XG4gICAgfSk7XG4gIH1cblxuICBhZnRlclZpZXdJbml0KCkge1xuICAgIGlmICghdGhpcy5jb25maWdUZW1wbGF0ZSgpLnJvd3M/LigpPy5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmNvbmZpZ0l0ZW1UZXh0Um93cy5zZXQodGhpcy5jb25maWdUZW1wbGF0ZSgpLnJvd3M/LigpIHx8IFtdKTtcbiAgfVxuXG4gIC8qIEZVTkNUSU9OUyAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlclNlbGVjdEl0ZW0oZXZlbnQ6IFRZUEVfUE9QT1ZFUl9FVkVOVCwgaXRlbTogYW55LCBhY3Rpb246IGFueSkge1xuICAgIGlmIChldmVudCAhPT0gJ2NsaWNrJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMub3V0RXZlbnQuZW1pdCh7IGV2ZW50LCBpdGVtLCBhY3Rpb24gfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlckVycm9ySW1hZ2UoZXZlbnQ6IEV2ZW50LCBmdW5jdGlvbkdldEltYWdlRXJyb3I/OiAoaXRlbTogYW55KSA9PiBPYnNlcnZhYmxlPHN0cmluZz4pIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIGlmICghZXZlbnQudGFyZ2V0IHx8ICFmdW5jdGlvbkdldEltYWdlRXJyb3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAoZXZlbnQudGFyZ2V0IGFzIGFueSkuc3JjID0gYXdhaXQgbGFzdFZhbHVlRnJvbShmdW5jdGlvbkdldEltYWdlRXJyb3IodGhpcy5pdGVtKCkpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVyQ2hhbmdTdGFnZUZsYWdNb3VzZShmbGFnOiBJRmxhZ01vdXNlKSB7XG4gICAgdGhpcy5vdXRDaGFuZ1N0YWdlRmxhZ01vdXNlUG9wb3Zlci5lbWl0KGZsYWcpO1xuICB9XG59XG4iLCJAaWYgKGNvbmZpZ1RlbXBsYXRlKCkgJiYgY29uZmlnSXRlbVRleHRSb3dzKCk7IGFzIGNvbmZpZ0l0ZW1UZXh0Um93cykge1xuICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCB3LWZ1bGwge3sgY29uZmlnVGVtcGxhdGUoKS5jbGFzc1Jvd3MgPz8gJycgfX1cIj5cbiAgICBAZm9yIChyb3cgb2YgY29uZmlnSXRlbVRleHRSb3dzOyB0cmFjayAkaW5kZXg7IGxldCBpbmRleFJvdyA9ICRpbmRleCkge1xuICAgICAgPGRpdiBbY2xhc3NdPVwicm93KCkuY2xhc3NSb3dcIj5cbiAgICAgICAgQGlmIChyb3coKS5nZXRJbWFnZSAmJiAoaXRlbSgpIHwgTGlic1VpUGlwZXNDYWxsRnVuY3Rpb25JblRlbXBsYXRlUGlwZTogcm93KCkuZ2V0SW1hZ2UgOiBpdGVtKCkgfCBhc3luYyk7IGFzIGltZ1VybCkge1xuICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgIFtjbGFzc109XCJpdGVtKCkgfCBMaWJzVWlQaXBlc0NhbGxGdW5jdGlvbkluVGVtcGxhdGVQaXBlOiByb3coKS5nZXRDbGFzc0ltYWdlIDogaXRlbSgpIHwgYXN5bmNcIlxuICAgICAgICAgICAgc3JjPVwie3sgaW1nVXJsIH19XCJcbiAgICAgICAgICAgIGFsdD1cIlwiXG4gICAgICAgICAgICAoZXJyb3IpPVwiaGFuZGxlckVycm9ySW1hZ2UoJGV2ZW50LCByb3coKS5nZXRJbWFnZUVycm9yKVwiIC8+XG4gICAgICAgIH1cbiAgICAgICAgQGlmIChpdGVtKClbJ2ZpZWxkUm93QXZhdGFyQ29uZmlnJyArIGluZGV4Um93XTsgYXMgYXZhdGFyQ29uZmlnKSB7XG4gICAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1hdmF0YXJcbiAgICAgICAgICAgIFt0eXBlU2hhcGVdPVwiYXZhdGFyQ29uZmlnLnR5cGVTaGFwZSB8fCAnY2lyY2xlJ1wiXG4gICAgICAgICAgICBbY2xhc3NJbmNsdWRlXT1cImF2YXRhckNvbmZpZy5jbGFzc0luY2x1ZGVcIlxuICAgICAgICAgICAgW3NpemVdPVwiYXZhdGFyQ29uZmlnLnNpemUgfHwgMzJcIlxuICAgICAgICAgICAgW2xpbmtBdmF0YXJdPVwiYXZhdGFyQ29uZmlnLmxpbmtBdmF0YXJcIlxuICAgICAgICAgICAgW2xpbmtBdmF0YXJFcnJvcl09XCJhdmF0YXJDb25maWcubGlua0F2YXRhckVycm9yXCJcbiAgICAgICAgICAgIFtpZEdlbkNvbG9yXT1cImF2YXRhckNvbmZpZy5pZEdlbkNvbG9yXCJcbiAgICAgICAgICAgIFt0ZXh0QXZhdGFyXT1cImF2YXRhckNvbmZpZy50ZXh0QXZhdGFyXCIgLz5cbiAgICAgICAgfVxuICAgICAgICBAaWYgKGZpZWxkS2V5KCkgJiYgaXRlbSgpWydmaWVsZExhYmVsUm93JyArIGluZGV4Um93XSB8IGFzeW5jOyBhcyBsYWJlbFJvdykge1xuICAgICAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtcG9wb3ZlclxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgW2NvbmZpZ109XCJyb3coKS5nZXRQb3BvdmVyQ29uZmlnID8gKCdwb3BvdmVyJyB8IExpYnNVaVBpcGVzQ2FsbEZ1bmN0aW9uSW5UZW1wbGF0ZVBpcGU6IHJvdygpLmdldFBvcG92ZXJDb25maWcgOiBpdGVtKCkgfCBhc3luYykgOiB7IHpJbmRleDogekluZGV4KCkgKyAxIH1cIlxuICAgICAgICAgICAgW2NsYXNzSW5jbHVkZV09XCJrZXlTZWxlY3RlZCgpID09PSBpdGVtKClbZmllbGRLZXkoKV0gPyByb3coKS5jbGFzc0l0ZW1TZWxlY3RlZCB8fCByb3coKS5jbGFzc0dldFZhbHVlIHx8ICcnIDogcm93KCkuY2xhc3NHZXRWYWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICBbaW5uZXJIdG1sXT1cImxhYmVsUm93XCJcbiAgICAgICAgICAgIChvdXRDaGFuZ1N0YWdlRmxhZ01vdXNlKT1cImhhbmRsZXJDaGFuZ1N0YWdlRmxhZ01vdXNlKCRldmVudClcIlxuICAgICAgICAgICAgKG91dEV2ZW50KT1cImhhbmRsZXJTZWxlY3RJdGVtKCRldmVudCwgaXRlbSgpLCByb3coKS5hY3Rpb24pXCIgLz5cbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAoZmllbGRLZXkoKSAmJiByb3coKS5nZXRDb21wb25lbnRPdXRsZXQpIHtcbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdDb21wb25lbnRPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgJ3JvdzonICsgaW5kZXhSb3cgfCBMaWJzVWlQaXBlc0NhbGxGdW5jdGlvbkluVGVtcGxhdGVQaXBlOiByb3coKS5nZXRDb21wb25lbnRPdXRsZXQgOiBpdGVtKCkgfCBhc3luYztcbiAgICAgICAgICAgICAgaW5wdXRzOiB1bmRlZmluZWQgfCBMaWJzVWlQaXBlc0NhbGxGdW5jdGlvbkluVGVtcGxhdGVQaXBlOiByb3coKS5nZXREYXRhQ29tcG9uZW50T3V0bGV0IDogaXRlbSgpIDogJ3JvdzonICsgaW5kZXhSb3cgOiB7IHZhbHVlSXNFbXB0eTogeyBpdGVtOiBpdGVtKCkgfSB9IHwgYXN5bmNcbiAgICAgICAgICAgIFwiIC8+XG4gICAgICAgIH1cbiAgICAgICAgQGlmIChyb3coKS5jb2xzPy4oKT8ubGVuZ3RoKSB7XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgW2NsYXNzXT1cInJvdygpLmNsYXNzQ29scyB8fCAnZmxleCdcIlxuICAgICAgICAgICAgW3N0eWxlXT1cIml0ZW0oKVtpdGVtKClbJ2ZpZWxkUm93U3R5bGVzRHluYW1pY0NvbHMnICsgaW5kZXhSb3ddXVwiPlxuICAgICAgICAgICAgQGZvciAoY29sIG9mIHJvdygpLmNvbHM/LigpOyB0cmFjayAkaW5kZXg7IGxldCBjb2xJbmRleCA9ICRpbmRleCkge1xuICAgICAgICAgICAgICBAaWYgKGNvbCgpLmdldEltYWdlICYmIChpdGVtKCkgfCBMaWJzVWlQaXBlc0NhbGxGdW5jdGlvbkluVGVtcGxhdGVQaXBlOiBjb2woKS5nZXRJbWFnZSA6IGl0ZW0oKSB8IGFzeW5jKTsgYXMgaW1nVXJsKSB7XG4gICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIml0ZW0oKSB8IExpYnNVaVBpcGVzQ2FsbEZ1bmN0aW9uSW5UZW1wbGF0ZVBpcGU6IGNvbCgpLmdldENsYXNzSW1hZ2UgOiBpdGVtKCkgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICBzcmM9XCJ7eyBpbWdVcmwgfX1cIlxuICAgICAgICAgICAgICAgICAgYWx0PVwiXCJcbiAgICAgICAgICAgICAgICAgIChlcnJvcik9XCJoYW5kbGVyRXJyb3JJbWFnZSgkZXZlbnQsIGNvbCgpLmdldEltYWdlRXJyb3IpXCIgLz5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBAaWYgKGl0ZW0oKVsnZmllbGRDb2xBdmF0YXJDb25maWcnICsgaW5kZXhSb3cgKyBjb2xJbmRleF07IGFzIGF2YXRhckNvbmZpZykge1xuICAgICAgICAgICAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtYXZhdGFyXG4gICAgICAgICAgICAgICAgICBbdHlwZVNoYXBlXT1cImF2YXRhckNvbmZpZy50eXBlU2hhcGUgfHwgJ2NpcmNsZSdcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzSW5jbHVkZV09XCJhdmF0YXJDb25maWcuY2xhc3NJbmNsdWRlXCJcbiAgICAgICAgICAgICAgICAgIFtzaXplXT1cImF2YXRhckNvbmZpZy5zaXplIHx8IDMyXCJcbiAgICAgICAgICAgICAgICAgIFtsaW5rQXZhdGFyXT1cImF2YXRhckNvbmZpZy5saW5rQXZhdGFyXCJcbiAgICAgICAgICAgICAgICAgIFtsaW5rQXZhdGFyRXJyb3JdPVwiYXZhdGFyQ29uZmlnLmxpbmtBdmF0YXJFcnJvclwiXG4gICAgICAgICAgICAgICAgICBbaWRHZW5Db2xvcl09XCJhdmF0YXJDb25maWcuaWRHZW5Db2xvclwiXG4gICAgICAgICAgICAgICAgICBbdGV4dEF2YXRhcl09XCJhdmF0YXJDb25maWcudGV4dEF2YXRhclwiIC8+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgQGlmIChpdGVtKClbJ2ZpZWxkTGFiZWxDb2wnICsgaW5kZXhSb3cgKyBjb2xJbmRleF07IGFzIGxhYmVsQ29sRnVuYykge1xuICAgICAgICAgICAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtcG9wb3ZlclxuICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cIicgJyB8IExpYnNVaVBpcGVzQ2FsbEZ1bmN0aW9uSW5UZW1wbGF0ZVBpcGU6IGl0ZW0oKVsnZmllbGRDb2xTdHlsZXNEeW5hbWljJyArIGluZGV4Um93ICsgY29sSW5kZXhdIDogaXRlbSgpIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzSW5jbHVkZV09XCJrZXlTZWxlY3RlZCgpID09PSBpdGVtKClbZmllbGRLZXkoKV0gPyByb3coKS5jbGFzc0l0ZW1TZWxlY3RlZCB8fCBpdGVtKClbJ2ZpZWxkQ29sQ2xhc3MnICsgaW5kZXhSb3cgKyBjb2xJbmRleF0gfHwgJycgOiBpdGVtKClbJ2ZpZWxkQ29sQ2xhc3MnICsgaW5kZXhSb3cgKyBjb2xJbmRleF0gfHwgJydcIlxuICAgICAgICAgICAgICAgICAgW2lubmVySHRtbF09XCInZmllbGRMYWJlbENvbCcgfCBMaWJzVWlQaXBlc0NhbGxGdW5jdGlvbkluVGVtcGxhdGVQaXBlOiBsYWJlbENvbEZ1bmMgOiBpdGVtKCkgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICBbY29uZmlnXT1cInsgekluZGV4OiB6SW5kZXgoKSArIDEgfVwiXG4gICAgICAgICAgICAgICAgICAob3V0Q2hhbmdTdGFnZUZsYWdNb3VzZSk9XCJoYW5kbGVyQ2hhbmdTdGFnZUZsYWdNb3VzZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgIChvdXRFdmVudCk9XCJoYW5kbGVyU2VsZWN0SXRlbSgkZXZlbnQsIGl0ZW0oKSwgY29sKCkuYWN0aW9uKVwiIC8+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgQGlmIChpdGVtKClbJ2ZpZWxkQ29sUG9wb3ZlcicgKyBpbmRleFJvdyArIGNvbEluZGV4XTsgYXMgcG9wb3Zlcikge1xuICAgICAgICAgICAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtcG9wb3ZlclxuICAgICAgICAgICAgICAgICAgW3R5cGVdPVwicG9wb3Zlci50eXBlID8/ICdvdGhlcidcIlxuICAgICAgICAgICAgICAgICAgW2NvbmZpZ109XCJwb3BvdmVyPy5jb25maWcgfCBMaWJzVWlQaXBlc0Nsb25lT2JqZWN0UGlwZTogdHJ1ZSA6IHsgekluZGV4OiB6SW5kZXgoKSArIDEgfVwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3NJbmNsdWRlXT1cIml0ZW0oKVsnZmllbGRDb2xDbGFzcycgKyBpbmRleFJvdyArIGNvbEluZGV4XVwiXG4gICAgICAgICAgICAgICAgICBbc3R5bGVdPVwiJyAnIHwgTGlic1VpUGlwZXNDYWxsRnVuY3Rpb25JblRlbXBsYXRlUGlwZTogaXRlbSgpWydmaWVsZENvbFN0eWxlc0R5bmFtaWMnICsgaW5kZXhSb3cgKyBjb2xJbmRleF0gOiBpdGVtKCkgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICAob3V0Q2hhbmdTdGFnZUZsYWdNb3VzZSk9XCJoYW5kbGVyQ2hhbmdTdGFnZUZsYWdNb3VzZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgIChvdXRFdmVudCk9XCJoYW5kbGVyU2VsZWN0SXRlbSgkZXZlbnQsIGl0ZW0oKSwgY29sKCkuYWN0aW9uKVwiPlxuICAgICAgICAgICAgICAgICAgQGxldCBjb25zdEh0bWxEYXRhVmlldyA9IHBvcG92ZXIuZGF0YVZpZXcgfHwgcG9wb3Zlckljb247XG4gICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwicG9wb3Zlci5jbGFzc0luY2x1ZGUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICBbaW5uZXJIdG1sXT1cImNvbnN0SHRtbERhdGFWaWV3IHwgdHJhbnNsYXRlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvbGlic191aS1jb21wb25lbnRzLXBvcG92ZXI+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgQGlmIChmaWVsZEtleSgpICYmIGNvbCgpLmdldENvbXBvbmVudE91dGxldCkge1xuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICpuZ0NvbXBvbmVudE91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICAncm93OicgKyBpbmRleFJvdyArICctY29sOicgKyBjb2xJbmRleCB8IExpYnNVaVBpcGVzQ2FsbEZ1bmN0aW9uSW5UZW1wbGF0ZVBpcGU6IGNvbCgpLmdldENvbXBvbmVudE91dGxldCA6IGl0ZW0oKSB8IGFzeW5jO1xuICAgICAgICAgICAgICAgICAgICBpbnB1dHM6IHVuZGVmaW5lZCB8IExpYnNVaVBpcGVzQ2FsbEZ1bmN0aW9uSW5UZW1wbGF0ZVBpcGU6IGNvbCgpLmdldERhdGFDb21wb25lbnRPdXRsZXQgOiBpdGVtKCkgOiAncm93OicgKyBpbmRleFJvdyArICctY29sOicgKyBjb2xJbmRleCA6IHsgdmFsdWVJc0VtcHR5OiB7IGl0ZW06IGl0ZW0oKSB9IH0gfCBhc3luY1xuICAgICAgICAgICAgICAgICAgXCIgLz5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBAaWYgKGl0ZW0oKVsnZmllbGRDb2xUb2dnbGUnICsgaW5kZXhSb3cgKyBjb2xJbmRleF07IGFzIHRvZ2dsZSkge1xuICAgICAgICAgICAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtbGFiZWxcbiAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCInICcgfCBMaWJzVWlQaXBlc0NhbGxGdW5jdGlvbkluVGVtcGxhdGVQaXBlOiBpdGVtKClbJ2ZpZWxkQ29sU3R5bGVzRHluYW1pYycgKyBpbmRleFJvdyArIGNvbEluZGV4XSA6IGl0ZW0oKSB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgIFtoYXNUb2dnbGVdPVwidG9nZ2xlLmhhc1RvZ2dsZVwiXG4gICAgICAgICAgICAgICAgICBbdG9nZ2xlQWN0aXZlXT1cInRvZ2dsZS50b2dnbGVBY3RpdmVcIlxuICAgICAgICAgICAgICAgICAgW3RvZ2dsZURpc2FibGVdPVwidG9nZ2xlLnRvZ2dsZURpc2FibGVcIlxuICAgICAgICAgICAgICAgICAgW3BvcG92ZXJdPVwidG9nZ2xlLnBvcG92ZXJcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzSW5jbHVkZV09XCJ0b2dnbGUuY2xhc3NJbmNsdWRlXCJcbiAgICAgICAgICAgICAgICAgIFtsYWJlbExlZnRdPVwidG9nZ2xlLmxhYmVsTGVmdFwiXG4gICAgICAgICAgICAgICAgICBbbGFiZWxSaWdodF09XCJ0b2dnbGUubGFiZWxSaWdodFwiXG4gICAgICAgICAgICAgICAgICAob3V0U3dpdGNoRXZlbnQpPVwiaGFuZGxlclNlbGVjdEl0ZW0oJ2NsaWNrJywgaXRlbSgpLCBjb2woKS5hY3Rpb24pXCIgLz5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBAaWYgKGl0ZW0oKVsnZmllbGRDb2xCdXR0b24nICsgaW5kZXhSb3cgKyBjb2xJbmRleF07IGFzIGJ1dHRvbikge1xuICAgICAgICAgICAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtYnV0dG9ucy1idXR0b25cbiAgICAgICAgICAgICAgICAgIFt0eXBlXT1cImJ1dHRvbi50eXBlXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzc0ljb25MZWZ0XT1cImJ1dHRvbi5jbGFzc0ljb25MZWZ0XCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzc0ljb25SaWdodF09XCJidXR0b24uY2xhc3NJY29uUmlnaHRcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzTGFiZWxdPVwiYnV0dG9uLmNsYXNzTGFiZWxcIlxuICAgICAgICAgICAgICAgICAgW2ljb25Pbmx5VHlwZV09XCJidXR0b24uaWNvbk9ubHlUeXBlXCJcbiAgICAgICAgICAgICAgICAgIFtwb3BvdmVyXT1cImJ1dHRvbi5wb3BvdmVyXCJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlXT1cImJ1dHRvbi5kaXNhYmxlXCJcbiAgICAgICAgICAgICAgICAgIFtpZ25vcmVQb2ludGVyRXZlbnRdPVwiYnV0dG9uLmlnbm9yZVBvaW50ZXJFdmVudFwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3NJbmNsdWRlXT1cIml0ZW0oKVsnZmllbGRDb2xDbGFzcycgKyBpbmRleFJvdyArIGNvbEluZGV4XSA/PyAnICdcIlxuICAgICAgICAgICAgICAgICAgW2lnbm9yZVN0b3BQcm9wYWdhdGlvbkV2ZW50XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgIChvdXRDbGljayk9XCJoYW5kbGVyU2VsZWN0SXRlbSgnY2xpY2snLCBpdGVtKCksIGNvbCgpLmFjdGlvbilcIiAvPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBpZiAoaXRlbSgpWydmaWVsZEJhZGdlJyArIGluZGV4Um93ICsgY29sSW5kZXhdOyBhcyBiYWRnZSkge1xuICAgICAgICAgICAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtYmFkZ2VcbiAgICAgICAgICAgICAgICAgIFttb2RlXT1cImJhZGdlLm1vZGUgfHwgJ3grJ1wiXG4gICAgICAgICAgICAgICAgICBbc3R5bGVdPVwiJyAnIHwgTGlic1VpUGlwZXNDYWxsRnVuY3Rpb25JblRlbXBsYXRlUGlwZTogaXRlbSgpWydmaWVsZENvbFN0eWxlc0R5bmFtaWMnICsgaW5kZXhSb3cgKyBjb2xJbmRleF0gOiBpdGVtKCkgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICBbY291bnRdPVwiYmFkZ2UuY291bnRcIlxuICAgICAgICAgICAgICAgICAgW21heENvdW50XT1cImJhZGdlLm1heENvdW50IHx8IDk5XCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzc0NpcmNsZV09XCJiYWRnZS5jbGFzc0NpcmNsZSB8fCAnbGlicy11aS1mb250LWg0cidcIiAvPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgPC9kaXY+XG59XG4iXX0=
|