@libs-ui/components-list 0.2.356-41 → 0.2.356-42
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 +3 -3
- package/esm2022/templates/group/item/item.component.mjs +3 -3
- package/esm2022/templates/radio/radio.component.mjs +3 -3
- package/esm2022/templates/tag/tag.component.mjs +3 -3
- package/esm2022/templates/text/text.component.mjs +3 -3
- package/fesm2022/libs-ui-components-list.mjs +12 -12
- package/fesm2022/libs-ui-components-list.mjs.map +1 -1
- package/package.json +26 -26
|
@@ -172,7 +172,7 @@ export class LibsUiComponentsListRadioComponent extends LibsUiComponentsListTemp
|
|
|
172
172
|
return this.items().length;
|
|
173
173
|
}
|
|
174
174
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiComponentsListRadioComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
175
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: LibsUiComponentsListRadioComponent, isStandalone: true, selector: "libs_ui-components-list-templates_radio", viewQueries: [{ propertyName: "virtualScrollerComponent", first: true, predicate: VirtualScrollerComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@if (configTemplateRadio(); as configTemplateRadio) {\n <div class=\"relative h-full w-full\">\n @if (items().length) {\n <div\n #elementScroll\n LibsUiComponentsScrollOverlayDirective\n class=\"w-full\"\n [class.h-full]=\"!heightViewPort()\"\n [style.height]=\"heightViewPort() ? heightViewPort() + 'px' : '100%'\"\n (outScrollBottom)=\"handlerScrollBottom()\">\n <virtual-scroller\n #scroll\n [parentScroll]=\"elementScroll\"\n [items]=\"items()\"\n class=\"h-full\">\n @for (item of scroll.viewPortItems; track item()) {\n @let constHtmlKeyItem = item() | LibsUiPipesGetValueOfObjectPipe: fieldKey();\n <div\n #itemRef\n [class]=\"'libs-ui-list-template-radio-item libs-ui-font-h5r flex ' + (configTemplateRadio.classItemInclude || '')\"\n [class.libs-ui-bg-list-hover]=\"!clickExactly()\"\n [class.libs-ui-bg-list-hover-active]=\"!clickExactly()\"\n [class.!pl-[12px]]=\"paddingLeftItem()\"\n [class.bg-[#ffffff]]=\"clickExactly()\"\n [class.!py-[2px]]=\"clickExactly()\"\n (click)=\"handlerChange($event, item())\"\n (
|
|
175
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: LibsUiComponentsListRadioComponent, isStandalone: true, selector: "libs_ui-components-list-templates_radio", viewQueries: [{ propertyName: "virtualScrollerComponent", first: true, predicate: VirtualScrollerComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@if (configTemplateRadio(); as configTemplateRadio) {\n <div class=\"relative h-full w-full\">\n @if (items().length) {\n <div\n #elementScroll\n LibsUiComponentsScrollOverlayDirective\n class=\"w-full\"\n [class.h-full]=\"!heightViewPort()\"\n [style.height]=\"heightViewPort() ? heightViewPort() + 'px' : '100%'\"\n (outScrollBottom)=\"handlerScrollBottom()\">\n <virtual-scroller\n #scroll\n [parentScroll]=\"elementScroll\"\n [items]=\"items()\"\n class=\"h-full\">\n @for (item of scroll.viewPortItems; track item()) {\n @let constHtmlKeyItem = item() | LibsUiPipesGetValueOfObjectPipe: fieldKey();\n <div\n #itemRef\n [class]=\"'libs-ui-list-template-radio-item libs-ui-font-h5r flex ' + (configTemplateRadio.classItemInclude || '')\"\n [class.libs-ui-bg-list-hover]=\"!clickExactly()\"\n [class.libs-ui-bg-list-hover-active]=\"!clickExactly()\"\n [class.!pl-[12px]]=\"paddingLeftItem()\"\n [class.bg-[#ffffff]]=\"clickExactly()\"\n [class.!py-[2px]]=\"clickExactly()\"\n (click)=\"handlerChange($event, item())\"\n (keydown.enter)=\"handlerChange($event, item())\">\n <div\n class=\"flex flex-col w-full\"\n [class.!flex-row]=\"configTemplateRadio.rowSameLineRadio\">\n @if (item().fieldLabel) {\n <libs_ui-components-radio-single\n [label]=\"item().fieldLabel\"\n [avatarConfig]=\"item().avatarConfig\"\n [active]=\"keySelected() === constHtmlKeyItem\"\n [key]=\"constHtmlKeyItem\"\n [imgTypeIcon]=\"configTemplateRadio.hasAvatarGroupSocial\"\n [linkImage]=\"\n configTemplateRadio.getImage\n ? ('avatar' | LibsUiPipesCallFunctionInTemplatePipe: (item().specific_loadImgError && configTemplateRadio.getImageError ? configTemplateRadio.getImageError : configTemplateRadio.getImage) : item() | async)\n : item()[configTemplateRadio.fieldGetImage || '']\n \"\n [classImageInclude]=\"configTemplateRadio.classIncludeImage || ''\"\n [bullet]=\"item().bullet?.()\"\n [disable]=\"loading() || disable() || (constHtmlKeyItem | LibsUiCheckSelectedByKeyPipe: keysDisableItem() : keysDisableItem()?.length)\"\n [classLabelInclude]=\"item().classLabelInclude || ''\"\n [popover]=\"(item().popoverLabel | LibsUiPipesConvertObjectToSignalPipe)?.() | LibsUiPipesConvertSignalToObjectPipe\"\n [clickExactly]=\"clickExactly()\"\n [disableLabel]=\"disableLabel()\"\n [dataComponentOutlet]=\"undefined | LibsUiPipesCallFunctionInTemplatePipe: configTemplateRadio.getDataComponentOutlet : item() : fieldKey() : { valueIsEmpty: { item: item() } } | async\"\n [componentOutlet]=\"0 | LibsUiPipesCallFunctionInTemplatePipe: configTemplateRadio.getComponentOutlet : item() : fieldKey() : { valueIs0: 0 } | async\"\n [zIndexLabel]=\"configTemplateRadio.zIndexPopover ?? 1200\"\n (outChangStageFlagMousePopover)=\"handlerChangStageFlagMouse($event)\"\n (outChange)=\"handlerChange('radio', item())\"\n (outClickLabel)=\"handlerChange('radio', item())\" />\n }\n @if (configTemplateRadio?.rows?.()) {\n <libs_ui-components-list-templates_rows\n class=\"w-full {{ (configTemplateRadio.classRowsWrapper || configTemplateRadio.classRows) ?? '' }}\"\n [item]=\"item()\"\n [fieldKey]=\"fieldKey()\"\n [keySelected]=\"keySelected()\"\n [configTemplate]=\"configTemplateRadio\"\n (outEvent)=\"handlerChange('radio', $event.item)\" />\n }\n </div>\n </div>\n }\n </virtual-scroller>\n </div>\n }\n @if (!items() || !items().length) {\n <libs_ui-components-list-templates-no_data\n [config]=\"config()!\"\n [keySearch]=\"keySearch()\"\n [loading]=\"loading()\"\n [enableNoData]=\"true\"\n [templateRefNotSearchNoData]=\"templateRefNotSearchNoData()\"\n [templateRefSearchNoData]=\"templateRefSearchNoData()\" />\n }\n\n @if (loading()) {\n <libs_ui-components-spinner [size]=\"'medium'\" />\n }\n </div>\n}\n", styles: [".libs-ui-list-template-radio-item{padding:6px 16px;position:relative}\n"], dependencies: [{ kind: "ngmodule", type: VirtualScrollerModule }, { kind: "component", type: i1.VirtualScrollerComponent, selector: "virtual-scroller,[virtualScroller]", inputs: ["executeRefreshOutsideAngularZone", "enableUnequalChildrenSizes", "RTL", "useMarginInsteadOfTranslate", "modifyOverflowStyleOfParentScroll", "stripedTable", "scrollbarWidth", "scrollbarHeight", "childWidth", "childHeight", "ssrChildWidth", "ssrChildHeight", "ssrViewportWidth", "ssrViewportHeight", "bufferAmount", "scrollAnimationTime", "resizeBypassRefreshThreshold", "scrollThrottlingTime", "scrollDebounceTime", "checkResizeInterval", "items", "compareItems", "horizontal", "parentScroll"], outputs: ["vsUpdate", "vsChange", "vsStart", "vsEnd"], exportAs: ["virtualScroller"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "component", type: LibsUiComponentsSpinnerComponent, selector: "libs_ui-components-spinner", inputs: ["type", "size"] }, { kind: "directive", type: LibsUiComponentsScrollOverlayDirective, selector: "[LibsUiComponentsScrollOverlayDirective]", inputs: ["debugMode", "ignoreInit", "classContainer", "options", "elementCheckScrollX", "elementCheckScrollY", "elementScroll"], outputs: ["outScroll", "outScrollX", "outScrollY", "outScrollTop", "outScrollBottom"] }, { kind: "component", type: LibsUiComponentsRadioSingleComponent, selector: "libs_ui-components-radio-single", inputs: ["key", "active", "classInclude", "label", "labelInterpolateParams", "ignorePopoverLabel", "classLabelInclude", "linkImage", "linkImageError", "avatarConfig", "classImageInclude", "imgTypeIcon", "bullet", "popover", "disable", "disableLabel", "clickExactly", "typeRadio", "ignoreRadio", "zIndexLabel", "classIncludeIcon", "dataComponentOutlet", "componentOutlet"], outputs: ["activeChange", "outClickLabel", "outChange", "outChangStageFlagMousePopover"] }, { kind: "pipe", type: LibsUiPipesCallFunctionInTemplatePipe, name: "LibsUiPipesCallFunctionInTemplatePipe" }, { kind: "pipe", type: LibsUiCheckSelectedByKeyPipe, name: "LibsUiCheckSelectedByKeyPipe" }, { kind: "component", type: LibsUiComponentsListRowsComponent, selector: "libs_ui-components-list-templates_rows", inputs: ["configTemplate", "item", "keySelected", "fieldKey", "zIndex"], outputs: ["outChangStageFlagMousePopover", "outEvent"] }, { kind: "pipe", type: LibsUiPipesConvertObjectToSignalPipe, name: "LibsUiPipesConvertObjectToSignalPipe" }, { kind: "pipe", type: LibsUiPipesConvertSignalToObjectPipe, name: "LibsUiPipesConvertSignalToObjectPipe" }, { kind: "pipe", type: LibsUiPipesGetValueOfObjectPipe, name: "LibsUiPipesGetValueOfObjectPipe" }, { kind: "component", type: LibsUiComponentsListTemplatesNoDataComponent, selector: "libs_ui-components-list-templates-no_data", inputs: ["config", "keySearch", "loading", "enableNoData", "templateRefNotSearchNoData", "templateRefSearchNoData"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
176
176
|
}
|
|
177
177
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiComponentsListRadioComponent, decorators: [{
|
|
178
178
|
type: Component,
|
|
@@ -190,6 +190,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
190
190
|
LibsUiPipesConvertSignalToObjectPipe,
|
|
191
191
|
LibsUiPipesGetValueOfObjectPipe,
|
|
192
192
|
LibsUiComponentsListTemplatesNoDataComponent,
|
|
193
|
-
], template: "@if (configTemplateRadio(); as configTemplateRadio) {\n <div class=\"relative h-full w-full\">\n @if (items().length) {\n <div\n #elementScroll\n LibsUiComponentsScrollOverlayDirective\n class=\"w-full\"\n [class.h-full]=\"!heightViewPort()\"\n [style.height]=\"heightViewPort() ? heightViewPort() + 'px' : '100%'\"\n (outScrollBottom)=\"handlerScrollBottom()\">\n <virtual-scroller\n #scroll\n [parentScroll]=\"elementScroll\"\n [items]=\"items()\"\n class=\"h-full\">\n @for (item of scroll.viewPortItems; track item()) {\n @let constHtmlKeyItem = item() | LibsUiPipesGetValueOfObjectPipe: fieldKey();\n <div\n #itemRef\n [class]=\"'libs-ui-list-template-radio-item libs-ui-font-h5r flex ' + (configTemplateRadio.classItemInclude || '')\"\n [class.libs-ui-bg-list-hover]=\"!clickExactly()\"\n [class.libs-ui-bg-list-hover-active]=\"!clickExactly()\"\n [class.!pl-[12px]]=\"paddingLeftItem()\"\n [class.bg-[#ffffff]]=\"clickExactly()\"\n [class.!py-[2px]]=\"clickExactly()\"\n (click)=\"handlerChange($event, item())\"\n (
|
|
193
|
+
], template: "@if (configTemplateRadio(); as configTemplateRadio) {\n <div class=\"relative h-full w-full\">\n @if (items().length) {\n <div\n #elementScroll\n LibsUiComponentsScrollOverlayDirective\n class=\"w-full\"\n [class.h-full]=\"!heightViewPort()\"\n [style.height]=\"heightViewPort() ? heightViewPort() + 'px' : '100%'\"\n (outScrollBottom)=\"handlerScrollBottom()\">\n <virtual-scroller\n #scroll\n [parentScroll]=\"elementScroll\"\n [items]=\"items()\"\n class=\"h-full\">\n @for (item of scroll.viewPortItems; track item()) {\n @let constHtmlKeyItem = item() | LibsUiPipesGetValueOfObjectPipe: fieldKey();\n <div\n #itemRef\n [class]=\"'libs-ui-list-template-radio-item libs-ui-font-h5r flex ' + (configTemplateRadio.classItemInclude || '')\"\n [class.libs-ui-bg-list-hover]=\"!clickExactly()\"\n [class.libs-ui-bg-list-hover-active]=\"!clickExactly()\"\n [class.!pl-[12px]]=\"paddingLeftItem()\"\n [class.bg-[#ffffff]]=\"clickExactly()\"\n [class.!py-[2px]]=\"clickExactly()\"\n (click)=\"handlerChange($event, item())\"\n (keydown.enter)=\"handlerChange($event, item())\">\n <div\n class=\"flex flex-col w-full\"\n [class.!flex-row]=\"configTemplateRadio.rowSameLineRadio\">\n @if (item().fieldLabel) {\n <libs_ui-components-radio-single\n [label]=\"item().fieldLabel\"\n [avatarConfig]=\"item().avatarConfig\"\n [active]=\"keySelected() === constHtmlKeyItem\"\n [key]=\"constHtmlKeyItem\"\n [imgTypeIcon]=\"configTemplateRadio.hasAvatarGroupSocial\"\n [linkImage]=\"\n configTemplateRadio.getImage\n ? ('avatar' | LibsUiPipesCallFunctionInTemplatePipe: (item().specific_loadImgError && configTemplateRadio.getImageError ? configTemplateRadio.getImageError : configTemplateRadio.getImage) : item() | async)\n : item()[configTemplateRadio.fieldGetImage || '']\n \"\n [classImageInclude]=\"configTemplateRadio.classIncludeImage || ''\"\n [bullet]=\"item().bullet?.()\"\n [disable]=\"loading() || disable() || (constHtmlKeyItem | LibsUiCheckSelectedByKeyPipe: keysDisableItem() : keysDisableItem()?.length)\"\n [classLabelInclude]=\"item().classLabelInclude || ''\"\n [popover]=\"(item().popoverLabel | LibsUiPipesConvertObjectToSignalPipe)?.() | LibsUiPipesConvertSignalToObjectPipe\"\n [clickExactly]=\"clickExactly()\"\n [disableLabel]=\"disableLabel()\"\n [dataComponentOutlet]=\"undefined | LibsUiPipesCallFunctionInTemplatePipe: configTemplateRadio.getDataComponentOutlet : item() : fieldKey() : { valueIsEmpty: { item: item() } } | async\"\n [componentOutlet]=\"0 | LibsUiPipesCallFunctionInTemplatePipe: configTemplateRadio.getComponentOutlet : item() : fieldKey() : { valueIs0: 0 } | async\"\n [zIndexLabel]=\"configTemplateRadio.zIndexPopover ?? 1200\"\n (outChangStageFlagMousePopover)=\"handlerChangStageFlagMouse($event)\"\n (outChange)=\"handlerChange('radio', item())\"\n (outClickLabel)=\"handlerChange('radio', item())\" />\n }\n @if (configTemplateRadio?.rows?.()) {\n <libs_ui-components-list-templates_rows\n class=\"w-full {{ (configTemplateRadio.classRowsWrapper || configTemplateRadio.classRows) ?? '' }}\"\n [item]=\"item()\"\n [fieldKey]=\"fieldKey()\"\n [keySelected]=\"keySelected()\"\n [configTemplate]=\"configTemplateRadio\"\n (outEvent)=\"handlerChange('radio', $event.item)\" />\n }\n </div>\n </div>\n }\n </virtual-scroller>\n </div>\n }\n @if (!items() || !items().length) {\n <libs_ui-components-list-templates-no_data\n [config]=\"config()!\"\n [keySearch]=\"keySearch()\"\n [loading]=\"loading()\"\n [enableNoData]=\"true\"\n [templateRefNotSearchNoData]=\"templateRefNotSearchNoData()\"\n [templateRefSearchNoData]=\"templateRefSearchNoData()\" />\n }\n\n @if (loading()) {\n <libs_ui-components-spinner [size]=\"'medium'\" />\n }\n </div>\n}\n", styles: [".libs-ui-list-template-radio-item{padding:6px 16px;position:relative}\n"] }]
|
|
194
194
|
}] });
|
|
195
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL2xpc3Qvc3JjL3RlbXBsYXRlcy9yYWRpby9yYWRpby5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvbGlzdC9zcmMvdGVtcGxhdGVzL3JhZGlvL3JhZGlvLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFrQixNQUFNLGVBQWUsQ0FBQztBQUM5RyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqRyxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN4RixPQUFPLEVBQUUsc0NBQXNDLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RixPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRSxPQUFPLEVBQUUscUNBQXFDLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNqRyxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUMvRixPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUMvRixPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNyRixPQUFPLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxP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LEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFOUYsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNULElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNuRCxDQUFDO0lBQ0gsQ0FBQztJQUVTLGFBQWE7UUFDckIsT0FBTyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDO0lBQzdCLENBQUM7d0dBdkxVLGtDQUFrQzs0RkFBbEMsa0NBQWtDLDZKQUtXLHdCQUF3Qix1RkM5Q2xGLDZuSkFzRkEsZ0lENURJLHFCQUFxQixrdEJBQ3JCLFNBQVMsNkNBQ1QsZUFBZSwrQkFDZixnQ0FBZ0MsaUdBQ2hDLHNDQUFzQyw2U0FDdEMsb0NBQW9DLHNoQkFDcEMscUNBQXFDLHlFQUNyQyw0QkFBNEIscUVBQzVCLGlDQUFpQywrTUFDakMsb0NBQW9DLHdFQUNwQyxvQ0FBb0Msd0VBQ3BDLCtCQUErQix3RUFDL0IsNENBQTRDOzs0RkFHbkMsa0NBQWtDO2tCQXZCOUMsU0FBUzsrQkFFRSx5Q0FBeUMsY0FHdkMsSUFBSSxtQkFDQyx1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDO3dCQUNQLHFCQUFxQjt3QkFDckIsU0FBUzt3QkFDVCxlQUFlO3dCQUNmLGdDQUFnQzt3QkFDaEMsc0NBQXNDO3dCQUN0QyxvQ0FBb0M7d0JBQ3BDLHFDQUFxQzt3QkFDckMsNEJBQTRCO3dCQUM1QixpQ0FBaUM7d0JBQ2pDLG9DQUFvQzt3QkFDcEMsb0NBQW9DO3dCQUNwQywrQkFBK0I7d0JBQy9CLDRDQUE0QztxQkFDN0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyBBc3luY1BpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgT25Jbml0LCBzaWduYWwsIHZpZXdDaGlsZCwgV3JpdGFibGVTaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFZpcnR1YWxTY3JvbGxlckNvbXBvbmVudCwgVmlydHVhbFNjcm9sbGVyTW9kdWxlIH0gZnJvbSAnQGloYXJiZWNrL25neC12aXJ0dWFsLXNjcm9sbGVyJztcbmltcG9ydCB7IExpYnNVaUNvbXBvbmVudHNSYWRpb1NpbmdsZUNvbXBvbmVudCB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtcmFkaW8tc2luZ2xlJztcbmltcG9ydCB7IExpYnNVaUNvbXBvbmVudHNTY3JvbGxPdmVybGF5RGlyZWN0aXZlIH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1zY3JvbGwtb3ZlcmxheSc7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzU3Bpbm5lckNvbXBvbmVudCB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtc3Bpbm5lcic7XG5pbXBvcnQgeyBMaWJzVWlQaXBlc0NhbGxGdW5jdGlvbkluVGVtcGxhdGVQaXBlIH0gZnJvbSAnQGxpYnMtdWkvcGlwZXMtY2FsbC1mdW5jdGlvbi1pbi10ZW1wbGF0ZSc7XG5pbXBvcnQgeyBMaWJzVWlQaXBlc0NvbnZlcnRPYmplY3RUb1NpZ25hbFBpcGUgfSBmcm9tICdAbGlicy11aS9waXBlcy1jb252ZXJ0LW9iamVjdC10by1zaWduYWwnO1xuaW1wb3J0IHsgTGlic1VpUGlwZXNDb252ZXJ0U2lnbmFsVG9PYmplY3RQaXBlIH0gZnJvbSAnQGxpYnMtdWkvcGlwZXMtY29udmVydC1zaWduYWwtdG8tb2JqZWN0JztcbmltcG9ydCB7IExpYnNVaVBpcGVzR2V0VmFsdWVPZk9iamVjdFBpcGUgfSBmcm9tICdAbGlicy11aS9waXBlcy1nZXQtdmFsdWUtb2Ytb2JqZWN0JztcbmltcG9ydCB7IGNsb25lRGVlcCwgZGVsZXRlVW5pY29kZSwgZXNjYXBlSHRtbCwgZ2V0LCBpc05pbCB9IGZyb20gJ0BsaWJzLXVpL3V0aWxzJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgTGlic1VpQ2hlY2tTZWxlY3RlZEJ5S2V5UGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL2NoZWNrLXNlbGVjdGVkLWJ5LWtleS5waXBlJztcbmltcG9ydCB7IExpYnNVaUNvbXBvbmVudHNMaXN0VGVtcGxhdGVzTm9EYXRhQ29tcG9uZW50IH0gZnJvbSAnLi4vbm8tZGF0YS9uby1kYXRhLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzTGlzdFJvd3NDb21wb25lbnQgfSBmcm9tICcuLi9yb3dzL3Jvd3MuY29tcG9uZW50JztcbmltcG9ydCB7IExpYnNVaUNvbXBvbmVudHNMaXN0VGVtcGxhdGVzQ29tcG9uZW50QWJzdHJhY3QgfSBmcm9tICcuLi90ZW1wbGF0ZXMuY29tcG9uZW50LmFic3RyYWN0JztcbmltcG9ydCB7IElMaXN0Q29uZmlnSXRlbVJhZGlvIH0gZnJvbSAnLi8uLi8uLi9pbnRlcmZhY2VzL2NvbmZpZy1pdGVtLmludGVyZmFjZSc7XG5AQ29tcG9uZW50KHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdsaWJzX3VpLWNvbXBvbmVudHMtbGlzdC10ZW1wbGF0ZXNfcmFkaW8nLFxuICB0ZW1wbGF0ZVVybDogJy4vcmFkaW8uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9yYWRpby5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1xuICAgIFZpcnR1YWxTY3JvbGxlck1vZHVsZSxcbiAgICBBc3luY1BpcGUsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgIExpYnNVaUNvbXBvbmVudHNTcGlubmVyQ29tcG9uZW50LFxuICAgIExpYnNVaUNvbXBvbmVudHNTY3JvbGxPdmVybGF5RGlyZWN0aXZlLFxuICAgIExpYnNVaUNvbXBvbmVudHNSYWRpb1NpbmdsZUNvbXBvbmVudCxcbiAgICBMaWJzVWlQaXBlc0NhbGxGdW5jdGlvbkluVGVtcGxhdGVQaXBlLFxuICAgIExpYnNVaUNoZWNrU2VsZWN0ZWRCeUtleVBpcGUsXG4gICAgTGlic1VpQ29tcG9uZW50c0xpc3RSb3dzQ29tcG9uZW50LFxuICAgIExpYnNVaVBpcGVzQ29udmVydE9iamVjdFRvU2lnbmFsUGlwZSxcbiAgICBMaWJzVWlQaXBlc0NvbnZlcnRTaWduYWxUb09iamVjdFBpcGUsXG4gICAgTGlic1VpUGlwZXNHZXRWYWx1ZU9mT2JqZWN0UGlwZSxcbiAgICBMaWJzVWlDb21wb25lbnRzTGlzdFRlbXBsYXRlc05vRGF0YUNvbXBvbmVudCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTGlic1VpQ29tcG9uZW50c0xpc3RSYWRpb0NvbXBvbmVudCBleHRlbmRzIExpYnNVaUNvbXBvbmVudHNMaXN0VGVtcGxhdGVzQ29tcG9uZW50QWJzdHJhY3QgaW1wbGVtZW50cyBPbkluaXQge1xuICAvLyAjcmVnaW9uIFBST1BFUlRZXG4gIHByb3RlY3RlZCBjb25maWdUZW1wbGF0ZVJhZGlvID0gc2lnbmFsPElMaXN0Q29uZmlnSXRlbVJhZGlvIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gIC8qIFZJRVcgQ0hJTEQgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHZpcnR1YWxTY3JvbGxlckNvbXBvbmVudCA9IHZpZXdDaGlsZChWaXJ0dWFsU2Nyb2xsZXJDb21wb25lbnQpO1xuXG4gIG92ZXJyaWRlIG5nT25Jbml0KCkge1xuICAgIGlmIChpc05pbCh0aGlzLmNvbmZpZygpPy5jb25maWdUZW1wbGF0ZVJhZGlvKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIHRoaXMuY29uZmlnVGVtcGxhdGVSYWRpby5zZXQodGhpcy5jb25maWcoKT8uY29uZmlnVGVtcGxhdGVSYWRpbz8uKCkpO1xuICAgIHRoaXMuZmllbGRLZXkuc2V0KHRoaXMuY29uZmlnVGVtcGxhdGVSYWRpbygpPy5maWVsZEtleSA/PyB0aGlzLmZpZWxkS2V5RGVmYXVsdCgpKTtcbiAgICB0aGlzLmNhbGxBcGlCeVNlcnZpY2UoKTtcbiAgfVxuXG4gIC8qIEZVTkNUSU9OUyAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlclNjcm9sbEJvdHRvbSgpIHtcbiAgICBpZiAodGhpcy5sb2FkZWRMYXN0SXRlbSgpKSB7XG4gICAgICB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgIHRoaXMub3V0TG9hZGluZy5lbWl0KHRoaXMubG9hZGluZygpKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5sb2FkaW5nKCkgfHwgdGhpcy5sb2FkZWRMYXN0SXRlbSgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMubG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgdGhpcy5vdXRMb2FkaW5nLmVtaXQodGhpcy5sb2FkaW5nKCkpO1xuICAgIHRoaXMuY2FsbEFwaUJ5U2VydmljZShmYWxzZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcHJvY2Vzc1NlYXJjaCgpIHtcbiAgICBpZiAoIXRoaXMuaXNTZWFyY2hPbmxpbmUoKSkge1xuICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc0RhdGEodHJ1ZSk7XG4gICAgfVxuICAgIHRoaXMuY2FsbEFwaUJ5U2VydmljZSh0cnVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVyQ2hhbmdlKGV2ZW50OiBhbnksIGl0ZW06IGFueSwgaWdub3JlRGlzYWJsZT86IGJvb2xlYW4sIGlzQ2xpY2tNYW51YWwgPSB0cnVlKSB7XG4gICAgaWYgKCFpdGVtKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLmRpc2FibGUoKSAmJiAhaWdub3JlRGlzYWJsZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBFdmVudCkge1xuICAgICAgaWYgKHRoaXMuY2xpY2tFeGFjdGx5KCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICB0aGlzLmtleVNlbGVjdGVkLnNldChpdGVtW3RoaXMuZmllbGRLZXkoKV0pO1xuICAgICAgdGhpcy5vdXRTZWxlY3RLZXkuZW1pdCh7IGtleTogdGhpcy5rZXlTZWxlY3RlZCgpLCBpdGVtLCBpc0NsaWNrTWFudWFsIH0pO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMua2V5U2VsZWN0ZWQuc2V0KGl0ZW1bdGhpcy5maWVsZEtleSgpXSk7XG4gICAgdGhpcy5vdXRTZWxlY3RLZXkuZW1pdCh7IGtleTogdGhpcy5rZXlTZWxlY3RlZCgpLCBpdGVtLCBpc0NsaWNrTWFudWFsIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHByb2Nlc3NEYXRhKHJlcGxhY2U/OiBib29sZWFuKTogdm9pZCB7XG4gICAgY29uc3QgaXRlbUJ5S2V5U2VhcmNoOiBBcnJheTxXcml0YWJsZVNpZ25hbDxhbnk+PiA9IFtdO1xuICAgIGNvbnN0IGtleXNIaWRkZW4gPSB0aGlzLmtleXNIaWRkZW5JdGVtKCkgfHwgW107XG5cbiAgICBpZiAocmVwbGFjZSkge1xuICAgICAgdGhpcy5pdGVtcy5zZXQoW10pO1xuICAgIH1cblxuICAgIHRoaXMuc3RvcmUoKS5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICBjb25zdCBkYXRhU3RvcmUgPSBjbG9uZURlZXAoaXRlbSk7XG5cbiAgICAgIGRhdGFTdG9yZS51cGRhdGUoKHN0b3JlKSA9PiB7XG4gICAgICAgIHJldHVybiB7IC4uLnN0b3JlLCByZWY6IGl0ZW0oKSB9O1xuICAgICAgfSk7XG4gICAgICBjb25zdCBrZXkgPSBrZXlzSGlkZGVuLmZpbmQoKGtleSkgPT4gZ2V0KGRhdGFTdG9yZSwgdGhpcy5maWVsZEtleSgpKSA9PT0gZ2V0KGtleSwgJycpKTtcblxuICAgICAgaWYgKGtleSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IHRleHQgPSBkZWxldGVVbmljb2RlKHRoaXMuYnVpbGRWYWx1ZUJ5Q29uZmlnKGRhdGFTdG9yZSwgdGhpcy5jb25maWdUZW1wbGF0ZVJhZGlvKCkpKS50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuICAgICAgICBjb25zdCB0ZXh0RXNjYXBlID0gZXNjYXBlSHRtbCh0ZXh0KTtcbiAgICAgICAgY29uc3Qga2V5U2VhcmNoID0gZGVsZXRlVW5pY29kZShlc2NhcGVIdG1sKHRoaXMua2V5U2VhcmNoKCkudG9Mb2NhbGVMb3dlckNhc2UoKSkpO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAoKHRoaXMuaXNTZWFyY2hPbmxpbmUoKSAmJiB0aGlzLmNvbmZpZygpPy5odHRwUmVxdWVzdERhdGE/LigpPy5zZXJ2aWNlQ2xhc3MgJiYgIXRoaXMuY29uZmlnKCk/Lmh0dHBSZXF1ZXN0RGF0YT8uKCk/Lm9iamVjdEluc3RhbmNlKSB8fCAodGV4dCAmJiAodGV4dC5pbmNsdWRlcyhrZXlTZWFyY2gpIHx8IHRleHRFc2NhcGUuaW5jbHVkZXMoa2V5U2VhcmNoKSkpKSAmJlxuICAgICAgICAgIChyZXBsYWNlIHx8ICghcmVwbGFjZSAmJiAhdGhpcy5pdGVtcygpLmZpbmQoKGRhdGFJdGVtKSA9PiBnZXQoZGF0YUl0ZW0sIHRoaXMuZmllbGRLZXkoKSkgPT09IGdldChkYXRhU3RvcmUsIHRoaXMuZmllbGRLZXkoKSkpKSkgJiZcbiAgICAgICAgICAhaXRlbUJ5S2V5U2VhcmNoLmZpbmQoKGRhdGFJdGVtKSA9PiBnZXQoZGF0YUl0ZW0sIHRoaXMuZmllbGRLZXkoKSkgPT09IGdldChkYXRhU3RvcmUsIHRoaXMuZmllbGRLZXkoKSkpXG4gICAgICAgICkge1xuICAgICAgICAgIGlmICh0aGlzLmNvbmZpZ1RlbXBsYXRlUmFkaW8oKT8uZ2V0UG9wb3Zlcikge1xuICAgICAgICAgICAgZGF0YVN0b3JlLnVwZGF0ZSgoY3VycmVudFN0b3JlKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiB7IC4uLmN1cnJlbnRTdG9yZSwgZGF0YVRvb2x0aXA6IHRoaXMuY29uZmlnVGVtcGxhdGVSYWRpbygpPy5nZXRQb3BvdmVyPy4oZGF0YVN0b3JlKSB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGRhdGFTdG9yZS51cGRhdGUoKGN1cnJlbnRTdG9yZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgLi4uY3VycmVudFN0b3JlLFxuICAgICAgICAgICAgICBjbGFzc0xhYmVsSW5jbHVkZTogdGhpcy5jb25maWdUZW1wbGF0ZVJhZGlvKCk/LmdldENsYXNzSXRlbT8uKGRhdGFTdG9yZSgpKSxcbiAgICAgICAgICAgICAgYXZhdGFyQ29uZmlnOiB0aGlzLmNvbmZpZ1RlbXBsYXRlUmFkaW8oKT8uZ2V0QXZhdGFyQ29uZmlnPy4oZGF0YVN0b3JlKCkpLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBpdGVtQnlLZXlTZWFyY2gucHVzaChkYXRhU3RvcmUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgaW5kZXhJdGVtUmVtb3ZlID0gdGhpcy5pdGVtcygpLmZpbmRJbmRleCgoaXRlbSkgPT4gZ2V0KGl0ZW0sIHRoaXMuZmllbGRLZXkoKSkgPT09IGdldChrZXksICcnKSk7XG5cbiAgICAgIGlmIChpbmRleEl0ZW1SZW1vdmUgPiAtMSkge1xuICAgICAgICB0aGlzLml0ZW1zLnVwZGF0ZSgoaXRlbXMpID0+IHtcbiAgICAgICAgICBpdGVtcy5zcGxpY2UoaW5kZXhJdGVtUmVtb3ZlLCAxKTtcblxuICAgICAgICAgIHJldHVybiBpdGVtcztcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb25zdCBjYWxsYmFja0NoZWNrU2Nyb2xsID0gKHByZVN0YXRlSGFzU2Nyb2xsOiBib29sZWFuLCBjdXJyZW50SGFzU2Nyb2xsOiBib29sZWFuKSA9PiB7XG4gICAgICB0aGlzLnNjcm9sbFRvSXRlbVNlbGVjdGVkKCk7XG4gICAgICBpZiAodGhpcy5rZXlzSGlkZGVuSXRlbSgpPy5sZW5ndGggJiYgcHJlU3RhdGVIYXNTY3JvbGwgJiYgIWN1cnJlbnRIYXNTY3JvbGwgJiYgdGhpcy5pc1NlYXJjaE9ubGluZSgpKSB7XG4gICAgICAgIHRoaXMuY2FsbEFwaUJ5U2VydmljZShmYWxzZSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGlmIChyZXBsYWNlKSB7XG4gICAgICB0aGlzLml0ZW1zLnNldChpdGVtQnlLZXlTZWFyY2gpO1xuICAgICAgdGhpcy5jb25maWcoKT8uc29ydD8uKHRoaXMuaXRlbXMoKSk7XG4gICAgICB0aGlzLmVtaXRLZXlTZWxlY3RlZERlZmF1bHRJZkV4aXN0SXRlbSh0aGlzLml0ZW1zKCkpO1xuICAgICAgdGhpcy5hdXRvU2VsZWN0Rmlyc3RJdGVtKHRoaXMuaXRlbXMoKSk7XG4gICAgICB0aGlzLnNldEhlaWdodFZpZXdQb3J0KCk7XG4gICAgICB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgIHRoaXMub3V0TG9hZGluZy5lbWl0KHRoaXMubG9hZGluZygpKTtcbiAgICAgIHRoaXMub3V0TG9hZEl0ZW1zQ29tcGxldGUuZW1pdCh7IGl0ZW1zOiB0aGlzLml0ZW1zKCksIHBhZ2luZzogdGhpcy5wYWdpbmdTdG9yZSgpIH0pO1xuICAgICAgdGhpcy5jaGVja1ZpZXdQb3J0U2Nyb2xsKGNhbGxiYWNrQ2hlY2tTY3JvbGwpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaXRlbXMudXBkYXRlKChpdGVtcykgPT4gWy4uLihpdGVtcyB8fCBbXSksIC4uLml0ZW1CeUtleVNlYXJjaF0pO1xuICAgIHRoaXMuY29uZmlnKCk/LnNvcnQ/Lih0aGlzLml0ZW1zKCkpO1xuICAgIHRoaXMuc2V0SGVpZ2h0Vmlld1BvcnQoKTtcbiAgICB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICB0aGlzLm91dExvYWRpbmcuZW1pdCh0aGlzLmxvYWRpbmcoKSk7XG4gICAgdGhpcy5vdXRMb2FkSXRlbXNDb21wbGV0ZS5lbWl0KHsgaXRlbXM6IHRoaXMuaXRlbXMoKSwgcGFnaW5nOiB0aGlzLnBhZ2luZ1N0b3JlKCkgfSk7XG4gICAgdGhpcy5jaGVja1ZpZXdQb3J0U2Nyb2xsKGNhbGxiYWNrQ2hlY2tTY3JvbGwpO1xuICB9XG5cbiAgcHJpdmF0ZSBzY3JvbGxUb0l0ZW1TZWxlY3RlZCgpIHtcbiAgICBpZiAoIXRoaXMuY29uZmlnVGVtcGxhdGVSYWRpbygpPy5hdXRvU2Nyb2xsVG9JdGVtU2VsZWN0ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZUF1dG9TY3JvbGxJdGVtU2VsZWN0ZWQoKSk7XG4gICAgdGhpcy50aW1lQXV0b1Njcm9sbEl0ZW1TZWxlY3RlZC5zZXQoXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLmtleVNlbGVjdGVkKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5pdGVtcygpLmZpbmRJbmRleCgoaXRlbSkgPT4gZ2V0KGl0ZW0sIHRoaXMuZmllbGRLZXkoKSkgPT09IGdldCh0aGlzLmtleVNlbGVjdGVkLCAnJykpO1xuXG4gICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICBjb25zdCBvZmZzZXRDb250YWluZXIgPSAodGhpcy5lbGVtZW50U2Nyb2xsKCk/Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpPy5vZmZzZXRIZWlnaHQ7XG4gICAgICAgICAgY29uc3QgYWRkaXRpb25hbE9mZnNldCA9ICgob2Zmc2V0Q29udGFpbmVyID8gb2Zmc2V0Q29udGFpbmVyIC0gdGhpcy5oZWlnaHRJdGVtKCkgOiAwKSAvIDIpICogLTE7XG5cbiAgICAgICAgICB0aGlzLnZpcnR1YWxTY3JvbGxlckNvbXBvbmVudCgpPy5zY3JvbGxUb0luZGV4KGluZGV4LCB0cnVlLCBhZGRpdGlvbmFsT2Zmc2V0LCB0aGlzLnRpbWVBbmltYXRpb25TY3JvbGxUb0luZGV4SXRlbSgpKTtcbiAgICAgICAgfVxuICAgICAgfSkgYXMgdW5rbm93biBhcyBudW1iZXJcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIGF1dG9TZWxlY3RGaXJzdEl0ZW0oaXRlbXM6IEFycmF5PFdyaXRhYmxlU2lnbmFsPGFueT4+KSB7XG4gICAgaWYgKHRoaXMuYXV0b1NlbGVjdGVkRmlyc3RJdGVtQ2FsbE91dHNpZGVCZWZvcmUoKSB8fCB0aGlzLmtleVNlbGVjdGVkKCkgfHwgIXRoaXMuY29uZmlnKCk/LmF1dG9TZWxlY3RGaXJzdEl0ZW0gfHwgIWl0ZW1zPy5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5oYW5kbGVyQ2hhbmdlKCdyYWRpbycsIGl0ZW1zWzBdPy4oKSwgdHJ1ZSwgZmFsc2UpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGVtaXRLZXlTZWxlY3RlZERlZmF1bHRJZkV4aXN0SXRlbShpdGVtczogQXJyYXk8V3JpdGFibGVTaWduYWw8YW55Pj4pIHtcbiAgICBjb25zdCBpdGVtID0gaXRlbXMuZmluZCgoc3RvcmUpID0+IGdldChzdG9yZSwgdGhpcy5maWVsZEtleSgpKSA9PT0gZ2V0KHRoaXMua2V5U2VsZWN0ZWQsICcnKSk7XG5cbiAgICBpZiAoaXRlbSkge1xuICAgICAgdGhpcy5oYW5kbGVyQ2hhbmdlKCdyYWRpbycsIGl0ZW0oKSwgdHJ1ZSwgZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRMZW5ndGhJdGVtKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuaXRlbXMoKS5sZW5ndGg7XG4gIH1cbn1cbiIsIkBpZiAoY29uZmlnVGVtcGxhdGVSYWRpbygpOyBhcyBjb25maWdUZW1wbGF0ZVJhZGlvKSB7XG4gIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZSBoLWZ1bGwgdy1mdWxsXCI+XG4gICAgQGlmIChpdGVtcygpLmxlbmd0aCkge1xuICAgICAgPGRpdlxuICAgICAgICAjZWxlbWVudFNjcm9sbFxuICAgICAgICBMaWJzVWlDb21wb25lbnRzU2Nyb2xsT3ZlcmxheURpcmVjdGl2ZVxuICAgICAgICBjbGFzcz1cInctZnVsbFwiXG4gICAgICAgIFtjbGFzcy5oLWZ1bGxdPVwiIWhlaWdodFZpZXdQb3J0KClcIlxuICAgICAgICBbc3R5bGUuaGVpZ2h0XT1cImhlaWdodFZpZXdQb3J0KCkgPyBoZWlnaHRWaWV3UG9ydCgpICsgJ3B4JyA6ICcxMDAlJ1wiXG4gICAgICAgIChvdXRTY3JvbGxCb3R0b20pPVwiaGFuZGxlclNjcm9sbEJvdHRvbSgpXCI+XG4gICAgICAgIDx2aXJ0dWFsLXNjcm9sbGVyXG4gICAgICAgICAgI3Njcm9sbFxuICAgICAgICAgIFtwYXJlbnRTY3JvbGxdPVwiZWxlbWVudFNjcm9sbFwiXG4gICAgICAgICAgW2l0ZW1zXT1cIml0ZW1zKClcIlxuICAgICAgICAgIGNsYXNzPVwiaC1mdWxsXCI+XG4gICAgICAgICAgQGZvciAoaXRlbSBvZiBzY3JvbGwudmlld1BvcnRJdGVtczsgdHJhY2sgaXRlbSgpKSB7XG4gICAgICAgICAgICBAbGV0IGNvbnN0SHRtbEtleUl0ZW0gPSBpdGVtKCkgfCBMaWJzVWlQaXBlc0dldFZhbHVlT2ZPYmplY3RQaXBlOiBmaWVsZEtleSgpO1xuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAjaXRlbVJlZlxuICAgICAgICAgICAgICBbY2xhc3NdPVwiJ2xpYnMtdWktbGlzdC10ZW1wbGF0ZS1yYWRpby1pdGVtIGxpYnMtdWktZm9udC1oNXIgZmxleCAnICsgKGNvbmZpZ1RlbXBsYXRlUmFkaW8uY2xhc3NJdGVtSW5jbHVkZSB8fCAnJylcIlxuICAgICAgICAgICAgICBbY2xhc3MubGlicy11aS1iZy1saXN0LWhvdmVyXT1cIiFjbGlja0V4YWN0bHkoKVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5saWJzLXVpLWJnLWxpc3QtaG92ZXItYWN0aXZlXT1cIiFjbGlja0V4YWN0bHkoKVwiXG4gICAgICAgICAgICAgIFtjbGFzcy4hcGwtWzEycHhdXT1cInBhZGRpbmdMZWZ0SXRlbSgpXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmJnLVsjZmZmZmZmXV09XCJjbGlja0V4YWN0bHkoKVwiXG4gICAgICAgICAgICAgIFtjbGFzcy4hcHktWzJweF1dPVwiY2xpY2tFeGFjdGx5KClcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlckNoYW5nZSgkZXZlbnQsIGl0ZW0oKSlcIlxuICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwiaGFuZGxlckNoYW5nZSgkZXZlbnQsIGl0ZW0oKSlcIj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxleCBmbGV4LWNvbCB3LWZ1bGxcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy4hZmxleC1yb3ddPVwiY29uZmlnVGVtcGxhdGVSYWRpby5yb3dTYW1lTGluZVJhZGlvXCI+XG4gICAgICAgICAgICAgICAgQGlmIChpdGVtKCkuZmllbGRMYWJlbCkge1xuICAgICAgICAgICAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1yYWRpby1zaW5nbGVcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIml0ZW0oKS5maWVsZExhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgW2F2YXRhckNvbmZpZ109XCJpdGVtKCkuYXZhdGFyQ29uZmlnXCJcbiAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZV09XCJrZXlTZWxlY3RlZCgpID09PSBjb25zdEh0bWxLZXlJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgW2tleV09XCJjb25zdEh0bWxLZXlJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgW2ltZ1R5cGVJY29uXT1cImNvbmZpZ1RlbXBsYXRlUmFkaW8uaGFzQXZhdGFyR3JvdXBTb2NpYWxcIlxuICAgICAgICAgICAgICAgICAgICBbbGlua0ltYWdlXT1cIlxuICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ1RlbXBsYXRlUmFkaW8uZ2V0SW1hZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgID8gKCdhdmF0YXInIHwgTGlic1VpUGlwZXNDYWxsRnVuY3Rpb25JblRlbXBsYXRlUGlwZTogKGl0ZW0oKS5zcGVjaWZpY19sb2FkSW1nRXJyb3IgJiYgY29uZmlnVGVtcGxhdGVSYWRpby5nZXRJbWFnZUVycm9yID8gY29uZmlnVGVtcGxhdGVSYWRpby5nZXRJbWFnZUVycm9yIDogY29uZmlnVGVtcGxhdGVSYWRpby5nZXRJbWFnZSkgOiBpdGVtKCkgfCBhc3luYylcbiAgICAgICAgICAgICAgICAgICAgICAgIDogaXRlbSgpW2NvbmZpZ1RlbXBsYXRlUmFkaW8uZmllbGRHZXRJbWFnZSB8fCAnJ11cbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzSW1hZ2VJbmNsdWRlXT1cImNvbmZpZ1RlbXBsYXRlUmFkaW8uY2xhc3NJbmNsdWRlSW1hZ2UgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICBbYnVsbGV0XT1cIml0ZW0oKS5idWxsZXQ/LigpXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVdPVwibG9hZGluZygpIHx8IGRpc2FibGUoKSB8fCAoY29uc3RIdG1sS2V5SXRlbSB8IExpYnNVaUNoZWNrU2VsZWN0ZWRCeUtleVBpcGU6IGtleXNEaXNhYmxlSXRlbSgpIDoga2V5c0Rpc2FibGVJdGVtKCk/Lmxlbmd0aClcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NMYWJlbEluY2x1ZGVdPVwiaXRlbSgpLmNsYXNzTGFiZWxJbmNsdWRlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgW3BvcG92ZXJdPVwiKGl0ZW0oKS5wb3BvdmVyTGFiZWwgfCBMaWJzVWlQaXBlc0NvbnZlcnRPYmplY3RUb1NpZ25hbFBpcGUpPy4oKSB8IExpYnNVaVBpcGVzQ29udmVydFNpZ25hbFRvT2JqZWN0UGlwZVwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGlja0V4YWN0bHldPVwiY2xpY2tFeGFjdGx5KClcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZUxhYmVsXT1cImRpc2FibGVMYWJlbCgpXCJcbiAgICAgICAgICAgICAgICAgICAgW2RhdGFDb21wb25lbnRPdXRsZXRdPVwidW5kZWZpbmVkIHwgTGlic1VpUGlwZXNDYWxsRnVuY3Rpb25JblRlbXBsYXRlUGlwZTogY29uZmlnVGVtcGxhdGVSYWRpby5nZXREYXRhQ29tcG9uZW50T3V0bGV0IDogaXRlbSgpIDogZmllbGRLZXkoKSA6IHsgdmFsdWVJc0VtcHR5OiB7IGl0ZW06IGl0ZW0oKSB9IH0gfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICAgIFtjb21wb25lbnRPdXRsZXRdPVwiMCB8IExpYnNVaVBpcGVzQ2FsbEZ1bmN0aW9uSW5UZW1wbGF0ZVBpcGU6IGNvbmZpZ1RlbXBsYXRlUmFkaW8uZ2V0Q29tcG9uZW50T3V0bGV0IDogaXRlbSgpIDogZmllbGRLZXkoKSA6IHsgdmFsdWVJczA6IDAgfSB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgICAgW3pJbmRleExhYmVsXT1cImNvbmZpZ1RlbXBsYXRlUmFkaW8uekluZGV4UG9wb3ZlciA/PyAxMjAwXCJcbiAgICAgICAgICAgICAgICAgICAgKG91dENoYW5nU3RhZ2VGbGFnTW91c2VQb3BvdmVyKT1cImhhbmRsZXJDaGFuZ1N0YWdlRmxhZ01vdXNlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAob3V0Q2hhbmdlKT1cImhhbmRsZXJDaGFuZ2UoJ3JhZGlvJywgaXRlbSgpKVwiXG4gICAgICAgICAgICAgICAgICAgIChvdXRDbGlja0xhYmVsKT1cImhhbmRsZXJDaGFuZ2UoJ3JhZGlvJywgaXRlbSgpKVwiIC8+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBpZiAoY29uZmlnVGVtcGxhdGVSYWRpbz8ucm93cz8uKCkpIHtcbiAgICAgICAgICAgICAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtbGlzdC10ZW1wbGF0ZXNfcm93c1xuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInctZnVsbCB7eyAoY29uZmlnVGVtcGxhdGVSYWRpby5jbGFzc1Jvd3NXcmFwcGVyIHx8IGNvbmZpZ1RlbXBsYXRlUmFkaW8uY2xhc3NSb3dzKSA/PyAnJyB9fVwiXG4gICAgICAgICAgICAgICAgICAgIFtpdGVtXT1cIml0ZW0oKVwiXG4gICAgICAgICAgICAgICAgICAgIFtmaWVsZEtleV09XCJmaWVsZEtleSgpXCJcbiAgICAgICAgICAgICAgICAgICAgW2tleVNlbGVjdGVkXT1cImtleVNlbGVjdGVkKClcIlxuICAgICAgICAgICAgICAgICAgICBbY29uZmlnVGVtcGxhdGVdPVwiY29uZmlnVGVtcGxhdGVSYWRpb1wiXG4gICAgICAgICAgICAgICAgICAgIChvdXRFdmVudCk9XCJoYW5kbGVyQ2hhbmdlKCdyYWRpbycsICRldmVudC5pdGVtKVwiIC8+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgPC92aXJ0dWFsLXNjcm9sbGVyPlxuICAgICAgPC9kaXY+XG4gICAgfVxuICAgIEBpZiAoIWl0ZW1zKCkgfHwgIWl0ZW1zKCkubGVuZ3RoKSB7XG4gICAgICA8bGlic191aS1jb21wb25lbnRzLWxpc3QtdGVtcGxhdGVzLW5vX2RhdGFcbiAgICAgICAgW2NvbmZpZ109XCJjb25maWcoKSFcIlxuICAgICAgICBba2V5U2VhcmNoXT1cImtleVNlYXJjaCgpXCJcbiAgICAgICAgW2xvYWRpbmddPVwibG9hZGluZygpXCJcbiAgICAgICAgW2VuYWJsZU5vRGF0YV09XCJ0cnVlXCJcbiAgICAgICAgW3RlbXBsYXRlUmVmTm90U2VhcmNoTm9EYXRhXT1cInRlbXBsYXRlUmVmTm90U2VhcmNoTm9EYXRhKClcIlxuICAgICAgICBbdGVtcGxhdGVSZWZTZWFyY2hOb0RhdGFdPVwidGVtcGxhdGVSZWZTZWFyY2hOb0RhdGEoKVwiIC8+XG4gICAgfVxuXG4gICAgQGlmIChsb2FkaW5nKCkpIHtcbiAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtc3Bpbm5lciBbc2l6ZV09XCInbWVkaXVtJ1wiIC8+XG4gICAgfVxuICA8L2Rpdj5cbn1cbiJdfQ==
|
|
195
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL2xpc3Qvc3JjL3RlbXBsYXRlcy9yYWRpby9yYWRpby5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvbGlzdC9zcmMvdGVtcGxhdGVzL3JhZGlvL3JhZGlvLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFrQixNQUFNLGVBQWUsQ0FBQztBQUM5RyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqRyxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN4RixPQUFPLEVBQUUsc0NBQXNDLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RixPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRSxPQUFPLEVBQUUscUNBQXFDLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNqRyxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUMvRixPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUMvRixPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNyRixPQUFPLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxP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LEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFOUYsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNULElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNuRCxDQUFDO0lBQ0gsQ0FBQztJQUVTLGFBQWE7UUFDckIsT0FBTyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDO0lBQzdCLENBQUM7d0dBdkxVLGtDQUFrQzs0RkFBbEMsa0NBQWtDLDZKQUtXLHdCQUF3Qix1RkM5Q2xGLCtuSkFzRkEsZ0lENURJLHFCQUFxQixrdEJBQ3JCLFNBQVMsNkNBQ1QsZUFBZSwrQkFDZixnQ0FBZ0MsaUdBQ2hDLHNDQUFzQyw2U0FDdEMsb0NBQW9DLHNoQkFDcEMscUNBQXFDLHlFQUNyQyw0QkFBNEIscUVBQzVCLGlDQUFpQywrTUFDakMsb0NBQW9DLHdFQUNwQyxvQ0FBb0Msd0VBQ3BDLCtCQUErQix3RUFDL0IsNENBQTRDOzs0RkFHbkMsa0NBQWtDO2tCQXZCOUMsU0FBUzsrQkFFRSx5Q0FBeUMsY0FHdkMsSUFBSSxtQkFDQyx1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDO3dCQUNQLHFCQUFxQjt3QkFDckIsU0FBUzt3QkFDVCxlQUFlO3dCQUNmLGdDQUFnQzt3QkFDaEMsc0NBQXNDO3dCQUN0QyxvQ0FBb0M7d0JBQ3BDLHFDQUFxQzt3QkFDckMsNEJBQTRCO3dCQUM1QixpQ0FBaUM7d0JBQ2pDLG9DQUFvQzt3QkFDcEMsb0NBQW9DO3dCQUNwQywrQkFBK0I7d0JBQy9CLDRDQUE0QztxQkFDN0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyBBc3luY1BpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgT25Jbml0LCBzaWduYWwsIHZpZXdDaGlsZCwgV3JpdGFibGVTaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFZpcnR1YWxTY3JvbGxlckNvbXBvbmVudCwgVmlydHVhbFNjcm9sbGVyTW9kdWxlIH0gZnJvbSAnQGloYXJiZWNrL25neC12aXJ0dWFsLXNjcm9sbGVyJztcbmltcG9ydCB7IExpYnNVaUNvbXBvbmVudHNSYWRpb1NpbmdsZUNvbXBvbmVudCB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtcmFkaW8tc2luZ2xlJztcbmltcG9ydCB7IExpYnNVaUNvbXBvbmVudHNTY3JvbGxPdmVybGF5RGlyZWN0aXZlIH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1zY3JvbGwtb3ZlcmxheSc7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzU3Bpbm5lckNvbXBvbmVudCB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtc3Bpbm5lcic7XG5pbXBvcnQgeyBMaWJzVWlQaXBlc0NhbGxGdW5jdGlvbkluVGVtcGxhdGVQaXBlIH0gZnJvbSAnQGxpYnMtdWkvcGlwZXMtY2FsbC1mdW5jdGlvbi1pbi10ZW1wbGF0ZSc7XG5pbXBvcnQgeyBMaWJzVWlQaXBlc0NvbnZlcnRPYmplY3RUb1NpZ25hbFBpcGUgfSBmcm9tICdAbGlicy11aS9waXBlcy1jb252ZXJ0LW9iamVjdC10by1zaWduYWwnO1xuaW1wb3J0IHsgTGlic1VpUGlwZXNDb252ZXJ0U2lnbmFsVG9PYmplY3RQaXBlIH0gZnJvbSAnQGxpYnMtdWkvcGlwZXMtY29udmVydC1zaWduYWwtdG8tb2JqZWN0JztcbmltcG9ydCB7IExpYnNVaVBpcGVzR2V0VmFsdWVPZk9iamVjdFBpcGUgfSBmcm9tICdAbGlicy11aS9waXBlcy1nZXQtdmFsdWUtb2Ytb2JqZWN0JztcbmltcG9ydCB7IGNsb25lRGVlcCwgZGVsZXRlVW5pY29kZSwgZXNjYXBlSHRtbCwgZ2V0LCBpc05pbCB9IGZyb20gJ0BsaWJzLXVpL3V0aWxzJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgTGlic1VpQ2hlY2tTZWxlY3RlZEJ5S2V5UGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL2NoZWNrLXNlbGVjdGVkLWJ5LWtleS5waXBlJztcbmltcG9ydCB7IExpYnNVaUNvbXBvbmVudHNMaXN0VGVtcGxhdGVzTm9EYXRhQ29tcG9uZW50IH0gZnJvbSAnLi4vbm8tZGF0YS9uby1kYXRhLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzTGlzdFJvd3NDb21wb25lbnQgfSBmcm9tICcuLi9yb3dzL3Jvd3MuY29tcG9uZW50JztcbmltcG9ydCB7IExpYnNVaUNvbXBvbmVudHNMaXN0VGVtcGxhdGVzQ29tcG9uZW50QWJzdHJhY3QgfSBmcm9tICcuLi90ZW1wbGF0ZXMuY29tcG9uZW50LmFic3RyYWN0JztcbmltcG9ydCB7IElMaXN0Q29uZmlnSXRlbVJhZGlvIH0gZnJvbSAnLi8uLi8uLi9pbnRlcmZhY2VzL2NvbmZpZy1pdGVtLmludGVyZmFjZSc7XG5AQ29tcG9uZW50KHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdsaWJzX3VpLWNvbXBvbmVudHMtbGlzdC10ZW1wbGF0ZXNfcmFkaW8nLFxuICB0ZW1wbGF0ZVVybDogJy4vcmFkaW8uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9yYWRpby5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1xuICAgIFZpcnR1YWxTY3JvbGxlck1vZHVsZSxcbiAgICBBc3luY1BpcGUsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgIExpYnNVaUNvbXBvbmVudHNTcGlubmVyQ29tcG9uZW50LFxuICAgIExpYnNVaUNvbXBvbmVudHNTY3JvbGxPdmVybGF5RGlyZWN0aXZlLFxuICAgIExpYnNVaUNvbXBvbmVudHNSYWRpb1NpbmdsZUNvbXBvbmVudCxcbiAgICBMaWJzVWlQaXBlc0NhbGxGdW5jdGlvbkluVGVtcGxhdGVQaXBlLFxuICAgIExpYnNVaUNoZWNrU2VsZWN0ZWRCeUtleVBpcGUsXG4gICAgTGlic1VpQ29tcG9uZW50c0xpc3RSb3dzQ29tcG9uZW50LFxuICAgIExpYnNVaVBpcGVzQ29udmVydE9iamVjdFRvU2lnbmFsUGlwZSxcbiAgICBMaWJzVWlQaXBlc0NvbnZlcnRTaWduYWxUb09iamVjdFBpcGUsXG4gICAgTGlic1VpUGlwZXNHZXRWYWx1ZU9mT2JqZWN0UGlwZSxcbiAgICBMaWJzVWlDb21wb25lbnRzTGlzdFRlbXBsYXRlc05vRGF0YUNvbXBvbmVudCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTGlic1VpQ29tcG9uZW50c0xpc3RSYWRpb0NvbXBvbmVudCBleHRlbmRzIExpYnNVaUNvbXBvbmVudHNMaXN0VGVtcGxhdGVzQ29tcG9uZW50QWJzdHJhY3QgaW1wbGVtZW50cyBPbkluaXQge1xuICAvLyAjcmVnaW9uIFBST1BFUlRZXG4gIHByb3RlY3RlZCBjb25maWdUZW1wbGF0ZVJhZGlvID0gc2lnbmFsPElMaXN0Q29uZmlnSXRlbVJhZGlvIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gIC8qIFZJRVcgQ0hJTEQgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHZpcnR1YWxTY3JvbGxlckNvbXBvbmVudCA9IHZpZXdDaGlsZChWaXJ0dWFsU2Nyb2xsZXJDb21wb25lbnQpO1xuXG4gIG92ZXJyaWRlIG5nT25Jbml0KCkge1xuICAgIGlmIChpc05pbCh0aGlzLmNvbmZpZygpPy5jb25maWdUZW1wbGF0ZVJhZGlvKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIHRoaXMuY29uZmlnVGVtcGxhdGVSYWRpby5zZXQodGhpcy5jb25maWcoKT8uY29uZmlnVGVtcGxhdGVSYWRpbz8uKCkpO1xuICAgIHRoaXMuZmllbGRLZXkuc2V0KHRoaXMuY29uZmlnVGVtcGxhdGVSYWRpbygpPy5maWVsZEtleSA/PyB0aGlzLmZpZWxkS2V5RGVmYXVsdCgpKTtcbiAgICB0aGlzLmNhbGxBcGlCeVNlcnZpY2UoKTtcbiAgfVxuXG4gIC8qIEZVTkNUSU9OUyAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlclNjcm9sbEJvdHRvbSgpIHtcbiAgICBpZiAodGhpcy5sb2FkZWRMYXN0SXRlbSgpKSB7XG4gICAgICB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgIHRoaXMub3V0TG9hZGluZy5lbWl0KHRoaXMubG9hZGluZygpKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5sb2FkaW5nKCkgfHwgdGhpcy5sb2FkZWRMYXN0SXRlbSgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMubG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgdGhpcy5vdXRMb2FkaW5nLmVtaXQodGhpcy5sb2FkaW5nKCkpO1xuICAgIHRoaXMuY2FsbEFwaUJ5U2VydmljZShmYWxzZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcHJvY2Vzc1NlYXJjaCgpIHtcbiAgICBpZiAoIXRoaXMuaXNTZWFyY2hPbmxpbmUoKSkge1xuICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc0RhdGEodHJ1ZSk7XG4gICAgfVxuICAgIHRoaXMuY2FsbEFwaUJ5U2VydmljZSh0cnVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVyQ2hhbmdlKGV2ZW50OiBhbnksIGl0ZW06IGFueSwgaWdub3JlRGlzYWJsZT86IGJvb2xlYW4sIGlzQ2xpY2tNYW51YWwgPSB0cnVlKSB7XG4gICAgaWYgKCFpdGVtKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLmRpc2FibGUoKSAmJiAhaWdub3JlRGlzYWJsZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBFdmVudCkge1xuICAgICAgaWYgKHRoaXMuY2xpY2tFeGFjdGx5KCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICB0aGlzLmtleVNlbGVjdGVkLnNldChpdGVtW3RoaXMuZmllbGRLZXkoKV0pO1xuICAgICAgdGhpcy5vdXRTZWxlY3RLZXkuZW1pdCh7IGtleTogdGhpcy5rZXlTZWxlY3RlZCgpLCBpdGVtLCBpc0NsaWNrTWFudWFsIH0pO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMua2V5U2VsZWN0ZWQuc2V0KGl0ZW1bdGhpcy5maWVsZEtleSgpXSk7XG4gICAgdGhpcy5vdXRTZWxlY3RLZXkuZW1pdCh7IGtleTogdGhpcy5rZXlTZWxlY3RlZCgpLCBpdGVtLCBpc0NsaWNrTWFudWFsIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHByb2Nlc3NEYXRhKHJlcGxhY2U/OiBib29sZWFuKTogdm9pZCB7XG4gICAgY29uc3QgaXRlbUJ5S2V5U2VhcmNoOiBBcnJheTxXcml0YWJsZVNpZ25hbDxhbnk+PiA9IFtdO1xuICAgIGNvbnN0IGtleXNIaWRkZW4gPSB0aGlzLmtleXNIaWRkZW5JdGVtKCkgfHwgW107XG5cbiAgICBpZiAocmVwbGFjZSkge1xuICAgICAgdGhpcy5pdGVtcy5zZXQoW10pO1xuICAgIH1cblxuICAgIHRoaXMuc3RvcmUoKS5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICBjb25zdCBkYXRhU3RvcmUgPSBjbG9uZURlZXAoaXRlbSk7XG5cbiAgICAgIGRhdGFTdG9yZS51cGRhdGUoKHN0b3JlKSA9PiB7XG4gICAgICAgIHJldHVybiB7IC4uLnN0b3JlLCByZWY6IGl0ZW0oKSB9O1xuICAgICAgfSk7XG4gICAgICBjb25zdCBrZXkgPSBrZXlzSGlkZGVuLmZpbmQoKGtleSkgPT4gZ2V0KGRhdGFTdG9yZSwgdGhpcy5maWVsZEtleSgpKSA9PT0gZ2V0KGtleSwgJycpKTtcblxuICAgICAgaWYgKGtleSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IHRleHQgPSBkZWxldGVVbmljb2RlKHRoaXMuYnVpbGRWYWx1ZUJ5Q29uZmlnKGRhdGFTdG9yZSwgdGhpcy5jb25maWdUZW1wbGF0ZVJhZGlvKCkpKS50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuICAgICAgICBjb25zdCB0ZXh0RXNjYXBlID0gZXNjYXBlSHRtbCh0ZXh0KTtcbiAgICAgICAgY29uc3Qga2V5U2VhcmNoID0gZGVsZXRlVW5pY29kZShlc2NhcGVIdG1sKHRoaXMua2V5U2VhcmNoKCkudG9Mb2NhbGVMb3dlckNhc2UoKSkpO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAoKHRoaXMuaXNTZWFyY2hPbmxpbmUoKSAmJiB0aGlzLmNvbmZpZygpPy5odHRwUmVxdWVzdERhdGE/LigpPy5zZXJ2aWNlQ2xhc3MgJiYgIXRoaXMuY29uZmlnKCk/Lmh0dHBSZXF1ZXN0RGF0YT8uKCk/Lm9iamVjdEluc3RhbmNlKSB8fCAodGV4dCAmJiAodGV4dC5pbmNsdWRlcyhrZXlTZWFyY2gpIHx8IHRleHRFc2NhcGUuaW5jbHVkZXMoa2V5U2VhcmNoKSkpKSAmJlxuICAgICAgICAgIChyZXBsYWNlIHx8ICghcmVwbGFjZSAmJiAhdGhpcy5pdGVtcygpLmZpbmQoKGRhdGFJdGVtKSA9PiBnZXQoZGF0YUl0ZW0sIHRoaXMuZmllbGRLZXkoKSkgPT09IGdldChkYXRhU3RvcmUsIHRoaXMuZmllbGRLZXkoKSkpKSkgJiZcbiAgICAgICAgICAhaXRlbUJ5S2V5U2VhcmNoLmZpbmQoKGRhdGFJdGVtKSA9PiBnZXQoZGF0YUl0ZW0sIHRoaXMuZmllbGRLZXkoKSkgPT09IGdldChkYXRhU3RvcmUsIHRoaXMuZmllbGRLZXkoKSkpXG4gICAgICAgICkge1xuICAgICAgICAgIGlmICh0aGlzLmNvbmZpZ1RlbXBsYXRlUmFkaW8oKT8uZ2V0UG9wb3Zlcikge1xuICAgICAgICAgICAgZGF0YVN0b3JlLnVwZGF0ZSgoY3VycmVudFN0b3JlKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiB7IC4uLmN1cnJlbnRTdG9yZSwgZGF0YVRvb2x0aXA6IHRoaXMuY29uZmlnVGVtcGxhdGVSYWRpbygpPy5nZXRQb3BvdmVyPy4oZGF0YVN0b3JlKSB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGRhdGFTdG9yZS51cGRhdGUoKGN1cnJlbnRTdG9yZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgLi4uY3VycmVudFN0b3JlLFxuICAgICAgICAgICAgICBjbGFzc0xhYmVsSW5jbHVkZTogdGhpcy5jb25maWdUZW1wbGF0ZVJhZGlvKCk/LmdldENsYXNzSXRlbT8uKGRhdGFTdG9yZSgpKSxcbiAgICAgICAgICAgICAgYXZhdGFyQ29uZmlnOiB0aGlzLmNvbmZpZ1RlbXBsYXRlUmFkaW8oKT8uZ2V0QXZhdGFyQ29uZmlnPy4oZGF0YVN0b3JlKCkpLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBpdGVtQnlLZXlTZWFyY2gucHVzaChkYXRhU3RvcmUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgaW5kZXhJdGVtUmVtb3ZlID0gdGhpcy5pdGVtcygpLmZpbmRJbmRleCgoaXRlbSkgPT4gZ2V0KGl0ZW0sIHRoaXMuZmllbGRLZXkoKSkgPT09IGdldChrZXksICcnKSk7XG5cbiAgICAgIGlmIChpbmRleEl0ZW1SZW1vdmUgPiAtMSkge1xuICAgICAgICB0aGlzLml0ZW1zLnVwZGF0ZSgoaXRlbXMpID0+IHtcbiAgICAgICAgICBpdGVtcy5zcGxpY2UoaW5kZXhJdGVtUmVtb3ZlLCAxKTtcblxuICAgICAgICAgIHJldHVybiBpdGVtcztcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb25zdCBjYWxsYmFja0NoZWNrU2Nyb2xsID0gKHByZVN0YXRlSGFzU2Nyb2xsOiBib29sZWFuLCBjdXJyZW50SGFzU2Nyb2xsOiBib29sZWFuKSA9PiB7XG4gICAgICB0aGlzLnNjcm9sbFRvSXRlbVNlbGVjdGVkKCk7XG4gICAgICBpZiAodGhpcy5rZXlzSGlkZGVuSXRlbSgpPy5sZW5ndGggJiYgcHJlU3RhdGVIYXNTY3JvbGwgJiYgIWN1cnJlbnRIYXNTY3JvbGwgJiYgdGhpcy5pc1NlYXJjaE9ubGluZSgpKSB7XG4gICAgICAgIHRoaXMuY2FsbEFwaUJ5U2VydmljZShmYWxzZSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGlmIChyZXBsYWNlKSB7XG4gICAgICB0aGlzLml0ZW1zLnNldChpdGVtQnlLZXlTZWFyY2gpO1xuICAgICAgdGhpcy5jb25maWcoKT8uc29ydD8uKHRoaXMuaXRlbXMoKSk7XG4gICAgICB0aGlzLmVtaXRLZXlTZWxlY3RlZERlZmF1bHRJZkV4aXN0SXRlbSh0aGlzLml0ZW1zKCkpO1xuICAgICAgdGhpcy5hdXRvU2VsZWN0Rmlyc3RJdGVtKHRoaXMuaXRlbXMoKSk7XG4gICAgICB0aGlzLnNldEhlaWdodFZpZXdQb3J0KCk7XG4gICAgICB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgIHRoaXMub3V0TG9hZGluZy5lbWl0KHRoaXMubG9hZGluZygpKTtcbiAgICAgIHRoaXMub3V0TG9hZEl0ZW1zQ29tcGxldGUuZW1pdCh7IGl0ZW1zOiB0aGlzLml0ZW1zKCksIHBhZ2luZzogdGhpcy5wYWdpbmdTdG9yZSgpIH0pO1xuICAgICAgdGhpcy5jaGVja1ZpZXdQb3J0U2Nyb2xsKGNhbGxiYWNrQ2hlY2tTY3JvbGwpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaXRlbXMudXBkYXRlKChpdGVtcykgPT4gWy4uLihpdGVtcyB8fCBbXSksIC4uLml0ZW1CeUtleVNlYXJjaF0pO1xuICAgIHRoaXMuY29uZmlnKCk/LnNvcnQ/Lih0aGlzLml0ZW1zKCkpO1xuICAgIHRoaXMuc2V0SGVpZ2h0Vmlld1BvcnQoKTtcbiAgICB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICB0aGlzLm91dExvYWRpbmcuZW1pdCh0aGlzLmxvYWRpbmcoKSk7XG4gICAgdGhpcy5vdXRMb2FkSXRlbXNDb21wbGV0ZS5lbWl0KHsgaXRlbXM6IHRoaXMuaXRlbXMoKSwgcGFnaW5nOiB0aGlzLnBhZ2luZ1N0b3JlKCkgfSk7XG4gICAgdGhpcy5jaGVja1ZpZXdQb3J0U2Nyb2xsKGNhbGxiYWNrQ2hlY2tTY3JvbGwpO1xuICB9XG5cbiAgcHJpdmF0ZSBzY3JvbGxUb0l0ZW1TZWxlY3RlZCgpIHtcbiAgICBpZiAoIXRoaXMuY29uZmlnVGVtcGxhdGVSYWRpbygpPy5hdXRvU2Nyb2xsVG9JdGVtU2VsZWN0ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZUF1dG9TY3JvbGxJdGVtU2VsZWN0ZWQoKSk7XG4gICAgdGhpcy50aW1lQXV0b1Njcm9sbEl0ZW1TZWxlY3RlZC5zZXQoXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLmtleVNlbGVjdGVkKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5pdGVtcygpLmZpbmRJbmRleCgoaXRlbSkgPT4gZ2V0KGl0ZW0sIHRoaXMuZmllbGRLZXkoKSkgPT09IGdldCh0aGlzLmtleVNlbGVjdGVkLCAnJykpO1xuXG4gICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICBjb25zdCBvZmZzZXRDb250YWluZXIgPSAodGhpcy5lbGVtZW50U2Nyb2xsKCk/Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpPy5vZmZzZXRIZWlnaHQ7XG4gICAgICAgICAgY29uc3QgYWRkaXRpb25hbE9mZnNldCA9ICgob2Zmc2V0Q29udGFpbmVyID8gb2Zmc2V0Q29udGFpbmVyIC0gdGhpcy5oZWlnaHRJdGVtKCkgOiAwKSAvIDIpICogLTE7XG5cbiAgICAgICAgICB0aGlzLnZpcnR1YWxTY3JvbGxlckNvbXBvbmVudCgpPy5zY3JvbGxUb0luZGV4KGluZGV4LCB0cnVlLCBhZGRpdGlvbmFsT2Zmc2V0LCB0aGlzLnRpbWVBbmltYXRpb25TY3JvbGxUb0luZGV4SXRlbSgpKTtcbiAgICAgICAgfVxuICAgICAgfSkgYXMgdW5rbm93biBhcyBudW1iZXJcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIGF1dG9TZWxlY3RGaXJzdEl0ZW0oaXRlbXM6IEFycmF5PFdyaXRhYmxlU2lnbmFsPGFueT4+KSB7XG4gICAgaWYgKHRoaXMuYXV0b1NlbGVjdGVkRmlyc3RJdGVtQ2FsbE91dHNpZGVCZWZvcmUoKSB8fCB0aGlzLmtleVNlbGVjdGVkKCkgfHwgIXRoaXMuY29uZmlnKCk/LmF1dG9TZWxlY3RGaXJzdEl0ZW0gfHwgIWl0ZW1zPy5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5oYW5kbGVyQ2hhbmdlKCdyYWRpbycsIGl0ZW1zWzBdPy4oKSwgdHJ1ZSwgZmFsc2UpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGVtaXRLZXlTZWxlY3RlZERlZmF1bHRJZkV4aXN0SXRlbShpdGVtczogQXJyYXk8V3JpdGFibGVTaWduYWw8YW55Pj4pIHtcbiAgICBjb25zdCBpdGVtID0gaXRlbXMuZmluZCgoc3RvcmUpID0+IGdldChzdG9yZSwgdGhpcy5maWVsZEtleSgpKSA9PT0gZ2V0KHRoaXMua2V5U2VsZWN0ZWQsICcnKSk7XG5cbiAgICBpZiAoaXRlbSkge1xuICAgICAgdGhpcy5oYW5kbGVyQ2hhbmdlKCdyYWRpbycsIGl0ZW0oKSwgdHJ1ZSwgZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRMZW5ndGhJdGVtKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuaXRlbXMoKS5sZW5ndGg7XG4gIH1cbn1cbiIsIkBpZiAoY29uZmlnVGVtcGxhdGVSYWRpbygpOyBhcyBjb25maWdUZW1wbGF0ZVJhZGlvKSB7XG4gIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZSBoLWZ1bGwgdy1mdWxsXCI+XG4gICAgQGlmIChpdGVtcygpLmxlbmd0aCkge1xuICAgICAgPGRpdlxuICAgICAgICAjZWxlbWVudFNjcm9sbFxuICAgICAgICBMaWJzVWlDb21wb25lbnRzU2Nyb2xsT3ZlcmxheURpcmVjdGl2ZVxuICAgICAgICBjbGFzcz1cInctZnVsbFwiXG4gICAgICAgIFtjbGFzcy5oLWZ1bGxdPVwiIWhlaWdodFZpZXdQb3J0KClcIlxuICAgICAgICBbc3R5bGUuaGVpZ2h0XT1cImhlaWdodFZpZXdQb3J0KCkgPyBoZWlnaHRWaWV3UG9ydCgpICsgJ3B4JyA6ICcxMDAlJ1wiXG4gICAgICAgIChvdXRTY3JvbGxCb3R0b20pPVwiaGFuZGxlclNjcm9sbEJvdHRvbSgpXCI+XG4gICAgICAgIDx2aXJ0dWFsLXNjcm9sbGVyXG4gICAgICAgICAgI3Njcm9sbFxuICAgICAgICAgIFtwYXJlbnRTY3JvbGxdPVwiZWxlbWVudFNjcm9sbFwiXG4gICAgICAgICAgW2l0ZW1zXT1cIml0ZW1zKClcIlxuICAgICAgICAgIGNsYXNzPVwiaC1mdWxsXCI+XG4gICAgICAgICAgQGZvciAoaXRlbSBvZiBzY3JvbGwudmlld1BvcnRJdGVtczsgdHJhY2sgaXRlbSgpKSB7XG4gICAgICAgICAgICBAbGV0IGNvbnN0SHRtbEtleUl0ZW0gPSBpdGVtKCkgfCBMaWJzVWlQaXBlc0dldFZhbHVlT2ZPYmplY3RQaXBlOiBmaWVsZEtleSgpO1xuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAjaXRlbVJlZlxuICAgICAgICAgICAgICBbY2xhc3NdPVwiJ2xpYnMtdWktbGlzdC10ZW1wbGF0ZS1yYWRpby1pdGVtIGxpYnMtdWktZm9udC1oNXIgZmxleCAnICsgKGNvbmZpZ1RlbXBsYXRlUmFkaW8uY2xhc3NJdGVtSW5jbHVkZSB8fCAnJylcIlxuICAgICAgICAgICAgICBbY2xhc3MubGlicy11aS1iZy1saXN0LWhvdmVyXT1cIiFjbGlja0V4YWN0bHkoKVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5saWJzLXVpLWJnLWxpc3QtaG92ZXItYWN0aXZlXT1cIiFjbGlja0V4YWN0bHkoKVwiXG4gICAgICAgICAgICAgIFtjbGFzcy4hcGwtWzEycHhdXT1cInBhZGRpbmdMZWZ0SXRlbSgpXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmJnLVsjZmZmZmZmXV09XCJjbGlja0V4YWN0bHkoKVwiXG4gICAgICAgICAgICAgIFtjbGFzcy4hcHktWzJweF1dPVwiY2xpY2tFeGFjdGx5KClcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlckNoYW5nZSgkZXZlbnQsIGl0ZW0oKSlcIlxuICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJoYW5kbGVyQ2hhbmdlKCRldmVudCwgaXRlbSgpKVwiPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGZsZXgtY29sIHctZnVsbFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLiFmbGV4LXJvd109XCJjb25maWdUZW1wbGF0ZVJhZGlvLnJvd1NhbWVMaW5lUmFkaW9cIj5cbiAgICAgICAgICAgICAgICBAaWYgKGl0ZW0oKS5maWVsZExhYmVsKSB7XG4gICAgICAgICAgICAgICAgICA8bGlic191aS1jb21wb25lbnRzLXJhZGlvLXNpbmdsZVxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiaXRlbSgpLmZpZWxkTGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICBbYXZhdGFyQ29uZmlnXT1cIml0ZW0oKS5hdmF0YXJDb25maWdcIlxuICAgICAgICAgICAgICAgICAgICBbYWN0aXZlXT1cImtleVNlbGVjdGVkKCkgPT09IGNvbnN0SHRtbEtleUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICBba2V5XT1cImNvbnN0SHRtbEtleUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICBbaW1nVHlwZUljb25dPVwiY29uZmlnVGVtcGxhdGVSYWRpby5oYXNBdmF0YXJHcm91cFNvY2lhbFwiXG4gICAgICAgICAgICAgICAgICAgIFtsaW5rSW1hZ2VdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgY29uZmlnVGVtcGxhdGVSYWRpby5nZXRJbWFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAoJ2F2YXRhcicgfCBMaWJzVWlQaXBlc0NhbGxGdW5jdGlvbkluVGVtcGxhdGVQaXBlOiAoaXRlbSgpLnNwZWNpZmljX2xvYWRJbWdFcnJvciAmJiBjb25maWdUZW1wbGF0ZVJhZGlvLmdldEltYWdlRXJyb3IgPyBjb25maWdUZW1wbGF0ZVJhZGlvLmdldEltYWdlRXJyb3IgOiBjb25maWdUZW1wbGF0ZVJhZGlvLmdldEltYWdlKSA6IGl0ZW0oKSB8IGFzeW5jKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBpdGVtKClbY29uZmlnVGVtcGxhdGVSYWRpby5maWVsZEdldEltYWdlIHx8ICcnXVxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NJbWFnZUluY2x1ZGVdPVwiY29uZmlnVGVtcGxhdGVSYWRpby5jbGFzc0luY2x1ZGVJbWFnZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtidWxsZXRdPVwiaXRlbSgpLmJ1bGxldD8uKClcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZV09XCJsb2FkaW5nKCkgfHwgZGlzYWJsZSgpIHx8IChjb25zdEh0bWxLZXlJdGVtIHwgTGlic1VpQ2hlY2tTZWxlY3RlZEJ5S2V5UGlwZToga2V5c0Rpc2FibGVJdGVtKCkgOiBrZXlzRGlzYWJsZUl0ZW0oKT8ubGVuZ3RoKVwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc0xhYmVsSW5jbHVkZV09XCJpdGVtKCkuY2xhc3NMYWJlbEluY2x1ZGUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICBbcG9wb3Zlcl09XCIoaXRlbSgpLnBvcG92ZXJMYWJlbCB8IExpYnNVaVBpcGVzQ29udmVydE9iamVjdFRvU2lnbmFsUGlwZSk/LigpIHwgTGlic1VpUGlwZXNDb252ZXJ0U2lnbmFsVG9PYmplY3RQaXBlXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsaWNrRXhhY3RseV09XCJjbGlja0V4YWN0bHkoKVwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlTGFiZWxdPVwiZGlzYWJsZUxhYmVsKClcIlxuICAgICAgICAgICAgICAgICAgICBbZGF0YUNvbXBvbmVudE91dGxldF09XCJ1bmRlZmluZWQgfCBMaWJzVWlQaXBlc0NhbGxGdW5jdGlvbkluVGVtcGxhdGVQaXBlOiBjb25maWdUZW1wbGF0ZVJhZGlvLmdldERhdGFDb21wb25lbnRPdXRsZXQgOiBpdGVtKCkgOiBmaWVsZEtleSgpIDogeyB2YWx1ZUlzRW1wdHk6IHsgaXRlbTogaXRlbSgpIH0gfSB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgICAgW2NvbXBvbmVudE91dGxldF09XCIwIHwgTGlic1VpUGlwZXNDYWxsRnVuY3Rpb25JblRlbXBsYXRlUGlwZTogY29uZmlnVGVtcGxhdGVSYWRpby5nZXRDb21wb25lbnRPdXRsZXQgOiBpdGVtKCkgOiBmaWVsZEtleSgpIDogeyB2YWx1ZUlzMDogMCB9IHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgICAgICBbekluZGV4TGFiZWxdPVwiY29uZmlnVGVtcGxhdGVSYWRpby56SW5kZXhQb3BvdmVyID8/IDEyMDBcIlxuICAgICAgICAgICAgICAgICAgICAob3V0Q2hhbmdTdGFnZUZsYWdNb3VzZVBvcG92ZXIpPVwiaGFuZGxlckNoYW5nU3RhZ2VGbGFnTW91c2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIChvdXRDaGFuZ2UpPVwiaGFuZGxlckNoYW5nZSgncmFkaW8nLCBpdGVtKCkpXCJcbiAgICAgICAgICAgICAgICAgICAgKG91dENsaWNrTGFiZWwpPVwiaGFuZGxlckNoYW5nZSgncmFkaW8nLCBpdGVtKCkpXCIgLz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgQGlmIChjb25maWdUZW1wbGF0ZVJhZGlvPy5yb3dzPy4oKSkge1xuICAgICAgICAgICAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1saXN0LXRlbXBsYXRlc19yb3dzXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidy1mdWxsIHt7IChjb25maWdUZW1wbGF0ZVJhZGlvLmNsYXNzUm93c1dyYXBwZXIgfHwgY29uZmlnVGVtcGxhdGVSYWRpby5jbGFzc1Jvd3MpID8/ICcnIH19XCJcbiAgICAgICAgICAgICAgICAgICAgW2l0ZW1dPVwiaXRlbSgpXCJcbiAgICAgICAgICAgICAgICAgICAgW2ZpZWxkS2V5XT1cImZpZWxkS2V5KClcIlxuICAgICAgICAgICAgICAgICAgICBba2V5U2VsZWN0ZWRdPVwia2V5U2VsZWN0ZWQoKVwiXG4gICAgICAgICAgICAgICAgICAgIFtjb25maWdUZW1wbGF0ZV09XCJjb25maWdUZW1wbGF0ZVJhZGlvXCJcbiAgICAgICAgICAgICAgICAgICAgKG91dEV2ZW50KT1cImhhbmRsZXJDaGFuZ2UoJ3JhZGlvJywgJGV2ZW50Lml0ZW0pXCIgLz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICA8L3ZpcnR1YWwtc2Nyb2xsZXI+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gICAgQGlmICghaXRlbXMoKSB8fCAhaXRlbXMoKS5sZW5ndGgpIHtcbiAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtbGlzdC10ZW1wbGF0ZXMtbm9fZGF0YVxuICAgICAgICBbY29uZmlnXT1cImNvbmZpZygpIVwiXG4gICAgICAgIFtrZXlTZWFyY2hdPVwia2V5U2VhcmNoKClcIlxuICAgICAgICBbbG9hZGluZ109XCJsb2FkaW5nKClcIlxuICAgICAgICBbZW5hYmxlTm9EYXRhXT1cInRydWVcIlxuICAgICAgICBbdGVtcGxhdGVSZWZOb3RTZWFyY2hOb0RhdGFdPVwidGVtcGxhdGVSZWZOb3RTZWFyY2hOb0RhdGEoKVwiXG4gICAgICAgIFt0ZW1wbGF0ZVJlZlNlYXJjaE5vRGF0YV09XCJ0ZW1wbGF0ZVJlZlNlYXJjaE5vRGF0YSgpXCIgLz5cbiAgICB9XG5cbiAgICBAaWYgKGxvYWRpbmcoKSkge1xuICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1zcGlubmVyIFtzaXplXT1cIidtZWRpdW0nXCIgLz5cbiAgICB9XG4gIDwvZGl2PlxufVxuIl19
|
|
@@ -130,10 +130,10 @@ export class LibsUiComponentsListTagComponent extends LibsUiComponentsListTempla
|
|
|
130
130
|
return this.items().length;
|
|
131
131
|
}
|
|
132
132
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiComponentsListTagComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
133
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: LibsUiComponentsListTagComponent, isStandalone: true, selector: "libs_ui-components-list-templates_tag", usesInheritance: true, ngImport: i0, template: "@if (configTemplateTag(); as configTemplateTag) {\n <div\n class=\"w-full h-full relative\"\n LibsUiComponentsScrollOverlayDirective\n (outScrollBottom)=\"handlerScrollBottom()\">\n <div\n class=\"relative max-h-[150px] h-full {{ configTemplateTag.classIncludeContainer }}\"\n [ngClass]=\"{ 'flex flex-wrap': !configTemplateTag.ignoreItemFlexWrap }\"\n [class.min-h-[45px]]=\"!loading() && (!items() || !items().length)\"\n [class.min-h-[94px]]=\"loading() && items()\">\n @for (item of items(); track item()[fieldKey()]) {\n <div\n [class.libs-ui-disable]=\"loading() || disable()\"\n [class.pointer-events-none]=\"loading() || disable()\"\n [class]=\"item().classContainerItem\">\n @if (item().bullet; as bullet) {\n <div\n [class]=\"item().classItem || 'rounded-[10px] px-[8px] py-[1px] mb-[8px] mr-[8px]'\"\n [class.w-max]=\"configTemplateTag?.ignoreItemFlexWrap\"\n [style.background-color]=\"bullet().backgroundColor\"\n [style.color]=\"bullet().color\"\n (click)=\"handlerSelectItem($event, item())\"\n (
|
|
133
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: LibsUiComponentsListTagComponent, isStandalone: true, selector: "libs_ui-components-list-templates_tag", usesInheritance: true, ngImport: i0, template: "@if (configTemplateTag(); as configTemplateTag) {\n <div\n class=\"w-full h-full relative\"\n LibsUiComponentsScrollOverlayDirective\n (outScrollBottom)=\"handlerScrollBottom()\">\n <div\n class=\"relative max-h-[150px] h-full {{ configTemplateTag.classIncludeContainer }}\"\n [ngClass]=\"{ 'flex flex-wrap': !configTemplateTag.ignoreItemFlexWrap }\"\n [class.min-h-[45px]]=\"!loading() && (!items() || !items().length)\"\n [class.min-h-[94px]]=\"loading() && items()\">\n @for (item of items(); track item()[fieldKey()]) {\n <div\n [class.libs-ui-disable]=\"loading() || disable()\"\n [class.pointer-events-none]=\"loading() || disable()\"\n [class]=\"item().classContainerItem\">\n @if (item().bullet; as bullet) {\n <div\n [class]=\"item().classItem || 'rounded-[10px] px-[8px] py-[1px] mb-[8px] mr-[8px]'\"\n [class.w-max]=\"configTemplateTag?.ignoreItemFlexWrap\"\n [style.background-color]=\"bullet().backgroundColor\"\n [style.color]=\"bullet().color\"\n (click)=\"handlerSelectItem($event, item())\"\n (keydown.enter)=\"handlerSelectItem($event, item())\">\n <span [innerHTML]=\"item().fieldLabel\"></span>\n </div>\n } @else {\n @let constHtmlIsSelected = item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe: multiKeySelected() : multiKeySelected().length;\n <div\n (click)=\"handlerSelectItem($event, item())\"\n (keydown.enter)=\"handlerSelectItem($event, item())\"\n [class]=\"item().classItem || 'rounded-[20px] mb-[8px] mr-[8px] py-[4px] px-[8px] flex items-center cursor-pointer'\"\n [class.bg-[var(--libs-ui-color-light-2)]]=\"constHtmlIsSelected\"\n [class.text-[var(--libs-ui-color-default)]]=\"constHtmlIsSelected\"\n [class.bg-white]=\"!constHtmlIsSelected\"\n [class.text-[#6a7383]]=\"!constHtmlIsSelected\"\n [class.libs-ui-border-general]=\"!constHtmlIsSelected\">\n @if (constHtmlIsSelected) {\n <div class=\"mr-[8px] text-[12px] libs-ui-icon-check before:text-[var(--libs-ui-color-default)]\"></div>\n }\n <span\n class=\"libs-ui-font-h6r break-word\"\n [innerHTML]=\"item().fieldLabel\"></span>\n </div>\n }\n </div>\n }\n @if (!items() || !items().length) {\n <div [class]=\"'libs-ui-font-h5r text-[#9ca2ad] ' + (config()?.textNoDataClassInclude ?? 'py-[4px] flex items-center justify-center w-full')\">\n @if (!keySearch() && !loading()) {\n @let constHtmlTextNoData = config()?.textNoData || 'i18n_have_no_selection';\n {{ constHtmlTextNoData | translate }}\n }\n @if (templateRefSearchNoData() && keySearch() && !loading()) {\n <ng-container *ngTemplateOutlet=\"templateRefSearchNoData() || null; context: { keySearch: keySearch() }\" />\n }\n @if (!templateRefSearchNoData() && keySearch() && !loading()) {\n @let constHtmlTextSearchNoData = config()?.textSearchNoData || 'i18n_no_result';\n {{ constHtmlTextSearchNoData | translate }}\n }\n @if (loading()) {\n \n }\n </div>\n }\n </div>\n @if (loading()) {\n <div class=\"w-full h-full absolute top-0\">\n <libs_ui-components-spinner [size]=\"'medium'\" />\n </div>\n }\n </div>\n}\n", dependencies: [{ kind: "ngmodule", type: VirtualScrollerModule }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: LibsUiComponentsSpinnerComponent, selector: "libs_ui-components-spinner", inputs: ["type", "size"] }, { kind: "directive", type: LibsUiComponentsScrollOverlayDirective, selector: "[LibsUiComponentsScrollOverlayDirective]", inputs: ["debugMode", "ignoreInit", "classContainer", "options", "elementCheckScrollX", "elementCheckScrollY", "elementScroll"], outputs: ["outScroll", "outScrollX", "outScrollY", "outScrollTop", "outScrollBottom"] }, { kind: "pipe", type: LibsUiCheckSelectedByKeyPipe, name: "LibsUiCheckSelectedByKeyPipe" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
134
134
|
}
|
|
135
135
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiComponentsListTagComponent, decorators: [{
|
|
136
136
|
type: Component,
|
|
137
|
-
args: [{ selector: 'libs_ui-components-list-templates_tag', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [VirtualScrollerModule, NgTemplateOutlet, TranslateModule, NgClass, LibsUiComponentsSpinnerComponent, LibsUiComponentsScrollOverlayDirective, LibsUiCheckSelectedByKeyPipe], template: "@if (configTemplateTag(); as configTemplateTag) {\n <div\n class=\"w-full h-full relative\"\n LibsUiComponentsScrollOverlayDirective\n (outScrollBottom)=\"handlerScrollBottom()\">\n <div\n class=\"relative max-h-[150px] h-full {{ configTemplateTag.classIncludeContainer }}\"\n [ngClass]=\"{ 'flex flex-wrap': !configTemplateTag.ignoreItemFlexWrap }\"\n [class.min-h-[45px]]=\"!loading() && (!items() || !items().length)\"\n [class.min-h-[94px]]=\"loading() && items()\">\n @for (item of items(); track item()[fieldKey()]) {\n <div\n [class.libs-ui-disable]=\"loading() || disable()\"\n [class.pointer-events-none]=\"loading() || disable()\"\n [class]=\"item().classContainerItem\">\n @if (item().bullet; as bullet) {\n <div\n [class]=\"item().classItem || 'rounded-[10px] px-[8px] py-[1px] mb-[8px] mr-[8px]'\"\n [class.w-max]=\"configTemplateTag?.ignoreItemFlexWrap\"\n [style.background-color]=\"bullet().backgroundColor\"\n [style.color]=\"bullet().color\"\n (click)=\"handlerSelectItem($event, item())\"\n (
|
|
137
|
+
args: [{ selector: 'libs_ui-components-list-templates_tag', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [VirtualScrollerModule, NgTemplateOutlet, TranslateModule, NgClass, LibsUiComponentsSpinnerComponent, LibsUiComponentsScrollOverlayDirective, LibsUiCheckSelectedByKeyPipe], template: "@if (configTemplateTag(); as configTemplateTag) {\n <div\n class=\"w-full h-full relative\"\n LibsUiComponentsScrollOverlayDirective\n (outScrollBottom)=\"handlerScrollBottom()\">\n <div\n class=\"relative max-h-[150px] h-full {{ configTemplateTag.classIncludeContainer }}\"\n [ngClass]=\"{ 'flex flex-wrap': !configTemplateTag.ignoreItemFlexWrap }\"\n [class.min-h-[45px]]=\"!loading() && (!items() || !items().length)\"\n [class.min-h-[94px]]=\"loading() && items()\">\n @for (item of items(); track item()[fieldKey()]) {\n <div\n [class.libs-ui-disable]=\"loading() || disable()\"\n [class.pointer-events-none]=\"loading() || disable()\"\n [class]=\"item().classContainerItem\">\n @if (item().bullet; as bullet) {\n <div\n [class]=\"item().classItem || 'rounded-[10px] px-[8px] py-[1px] mb-[8px] mr-[8px]'\"\n [class.w-max]=\"configTemplateTag?.ignoreItemFlexWrap\"\n [style.background-color]=\"bullet().backgroundColor\"\n [style.color]=\"bullet().color\"\n (click)=\"handlerSelectItem($event, item())\"\n (keydown.enter)=\"handlerSelectItem($event, item())\">\n <span [innerHTML]=\"item().fieldLabel\"></span>\n </div>\n } @else {\n @let constHtmlIsSelected = item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe: multiKeySelected() : multiKeySelected().length;\n <div\n (click)=\"handlerSelectItem($event, item())\"\n (keydown.enter)=\"handlerSelectItem($event, item())\"\n [class]=\"item().classItem || 'rounded-[20px] mb-[8px] mr-[8px] py-[4px] px-[8px] flex items-center cursor-pointer'\"\n [class.bg-[var(--libs-ui-color-light-2)]]=\"constHtmlIsSelected\"\n [class.text-[var(--libs-ui-color-default)]]=\"constHtmlIsSelected\"\n [class.bg-white]=\"!constHtmlIsSelected\"\n [class.text-[#6a7383]]=\"!constHtmlIsSelected\"\n [class.libs-ui-border-general]=\"!constHtmlIsSelected\">\n @if (constHtmlIsSelected) {\n <div class=\"mr-[8px] text-[12px] libs-ui-icon-check before:text-[var(--libs-ui-color-default)]\"></div>\n }\n <span\n class=\"libs-ui-font-h6r break-word\"\n [innerHTML]=\"item().fieldLabel\"></span>\n </div>\n }\n </div>\n }\n @if (!items() || !items().length) {\n <div [class]=\"'libs-ui-font-h5r text-[#9ca2ad] ' + (config()?.textNoDataClassInclude ?? 'py-[4px] flex items-center justify-center w-full')\">\n @if (!keySearch() && !loading()) {\n @let constHtmlTextNoData = config()?.textNoData || 'i18n_have_no_selection';\n {{ constHtmlTextNoData | translate }}\n }\n @if (templateRefSearchNoData() && keySearch() && !loading()) {\n <ng-container *ngTemplateOutlet=\"templateRefSearchNoData() || null; context: { keySearch: keySearch() }\" />\n }\n @if (!templateRefSearchNoData() && keySearch() && !loading()) {\n @let constHtmlTextSearchNoData = config()?.textSearchNoData || 'i18n_no_result';\n {{ constHtmlTextSearchNoData | translate }}\n }\n @if (loading()) {\n \n }\n </div>\n }\n </div>\n @if (loading()) {\n <div class=\"w-full h-full absolute top-0\">\n <libs_ui-components-spinner [size]=\"'medium'\" />\n </div>\n }\n </div>\n}\n" }]
|
|
138
138
|
}] });
|
|
139
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFnLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9saXN0L3NyYy90ZW1wbGF0ZXMvdGFnL3RhZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvbGlzdC9zcmMvdGVtcGxhdGVzL3RhZy90YWcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFVLE1BQU0sRUFBa0IsTUFBTSxlQUFlLENBQUM7QUFDbkcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLHNDQUFzQyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDNUYsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHdEQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDdEYsT0FBTyxFQUFFLDhDQUE4QyxFQUFFLE1BQU0saUNBQWlDLENBQUM7OztBQVVqRyxNQUFNLE9BQU8sZ0NBQWlDLFNBQVEsOENBQThDO0lBQ2xHLG1CQUFtQjtJQUNULGlCQUFpQixHQUFHLE1BQU0sQ0FBaUMsU0FBUyxDQUFDLENBQUM7SUFFdkUsUUFBUTtRQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsRUFBRSxFQUFFLENBQUM7WUFDMUMsT0FBTztRQUNULENBQUM7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RUFBRSxzQ0FBc0MsRUFBRSw0QkFBNEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IE5nQ2xhc3MsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgT25Jbml0LCBzaWduYWwsIFdyaXRhYmxlU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBWaXJ0dWFsU2Nyb2xsZXJNb2R1bGUgfSBmcm9tICdAaWhhcmJlY2svbmd4LXZpcnR1YWwtc2Nyb2xsZXInO1xuaW1wb3J0IHsgTGlic1VpQ29tcG9uZW50c1Njcm9sbE92ZXJsYXlEaXJlY3RpdmUgfSBmcm9tICdAbGlicy11aS9jb21wb25lbnRzLXNjcm9sbC1vdmVybGF5JztcbmltcG9ydCB7IExpYnNVaUNvbXBvbmVudHNTcGlubmVyQ29tcG9uZW50IH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1zcGlubmVyJztcbmltcG9ydCB7IGNsb25lRGVlcCwgZGVsZXRlVW5pY29kZSB9IGZyb20gJ0BsaWJzLXVpL3V0aWxzJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgSUxpc3RDb25maWdJdGVtVGFnIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9jb25maWctaXRlbS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSUxpc3REYXRhRW1pdEtleSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZGF0YS1lbWl0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBMaWJzVWlDaGVja1NlbGVjdGVkQnlLZXlQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvY2hlY2stc2VsZWN0ZWQtYnkta2V5LnBpcGUnO1xuaW1wb3J0IHsgTGlic1VpQ29tcG9uZW50c0xpc3RUZW1wbGF0ZXNDb21wb25lbnRBYnN0cmFjdCB9IGZyb20gJy4uL3RlbXBsYXRlcy5jb21wb25lbnQuYWJzdHJhY3QnO1xuXG5AQ29tcG9uZW50KHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdsaWJzX3VpLWNvbXBvbmVudHMtbGlzdC10ZW1wbGF0ZXNfdGFnJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RhZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbVmlydHVhbFNjcm9sbGVyTW9kdWxlLCBOZ1RlbXBsYXRlT3V0bGV0LCBUcmFuc2xhdGVNb2R1bGUsIE5nQ2xhc3MsIExpYnNVaUNvbXBvbmVudHNTcGlubmVyQ29tcG9uZW50LCBMaWJzVWlDb21wb25lbnRzU2Nyb2xsT3ZlcmxheURpcmVjdGl2ZSwgTGlic1VpQ2hlY2tTZWxlY3RlZEJ5S2V5UGlwZV0sXG59KVxuZXhwb3J0IGNsYXNzIExpYnNVaUNvbXBvbmVudHNMaXN0VGFnQ29tcG9uZW50IGV4dGVuZHMgTGlic1VpQ29tcG9uZW50c0xpc3RUZW1wbGF0ZXNDb21wb25lbnRBYnN0cmFjdCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8vICNyZWdpb24gUFJPUEVSVFlcbiAgcHJvdGVjdGVkIGNvbmZpZ1RlbXBsYXRlVGFnID0gc2lnbmFsPElMaXN0Q29uZmlnSXRlbVRhZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICBvdmVycmlkZSBuZ09uSW5pdCgpIHtcbiAgICBpZiAoIXRoaXMuY29uZmlnKCk/LmNvbmZpZ1RlbXBsYXRlVGFnPy4oKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIHRoaXMuY29uZmlnVGVtcGxhdGVUYWcuc2V0KHRoaXMuY29uZmlnKCk/LmNvbmZpZ1RlbXBsYXRlVGFnPy4oKSk7XG4gICAgdGhpcy5maWVsZEtleS5zZXQodGhpcy5jb25maWdUZW1wbGF0ZVRhZygpPy5maWVsZEtleSA/PyB0aGlzLmZpZWxkS2V5RGVmYXVsdCgpKTtcbiAgICB0aGlzLmNhbGxBcGlCeVNlcnZpY2UoKTtcbiAgfVxuXG4gIC8qIEZVTkNUSU9OUyAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlclNlbGVjdEl0ZW0oZTogRXZlbnQsIGl0ZW06IGFueSkge1xuICAgIGlmIChlIGluc3RhbmNlb2YgRXZlbnQpIHtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICAgIGlmICghaXRlbSB8fCB0aGlzLmtleXNEaXNhYmxlSXRlbSgpPy5zb21lKChrZXkpID0+IGtleSA9PT0gaXRlbVt0aGlzLmZpZWxkS2V5KCldKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBrZXkgPSBpdGVtW3RoaXMuZmllbGRLZXkoKV07XG4gICAgY29uc3QgaW5kZXhPZktleSA9IHRoaXMubXVsdGlLZXlTZWxlY3RlZCgpPy5pbmRleE9mKGtleSkgPz8gLTE7XG5cbiAgICBpZiAoaW5kZXhPZktleSA8IDApIHtcbiAgICAgIHRoaXMubXVsdGlLZXlTZWxlY3RlZC51cGRhdGUoKGl0ZW1zKSA9PiBbLi4uKGl0ZW1zIHx8IFtdKSwga2V5XSk7XG4gICAgICB0aGlzLmVtaXRNb1NlbGVjdE11bHRpS2V5KHRoaXMubXVsdGlLZXlTZWxlY3RlZCgpIHx8IFtdKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm11bHRpS2V5U2VsZWN0ZWQudXBkYXRlKChpdGVtcykgPT4ge1xuICAgICAgaXRlbXM/LnNwbGljZShpbmRleE9mS2V5LCAxKTtcblxuICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgIH0pO1xuICAgIHRoaXMub3V0VW5TZWxlY3RNdWx0aUtleS5lbWl0KFtrZXldKTtcbiAgICB0aGlzLmVtaXRNb1NlbGVjdE11bHRpS2V5KHRoaXMubXVsdGlLZXlTZWxlY3RlZCgpIHx8IFtdKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZW1pdE1vU2VsZWN0TXVsdGlLZXkobXVsdGlLZXlTZWxlY3RlZDogQXJyYXk8dW5rbm93bj4sIGlzQ2xpY2tNYW51YWwgPSB0cnVlKSB7XG4gICAgY29uc3QgbWFwS2V5cyA9IG5ldyBBcnJheTxJTGlzdERhdGFFbWl0S2V5PigpO1xuICAgIGlmICghbXVsdGlLZXlTZWxlY3RlZD8ubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gdGhpcy5vdXRTZWxlY3RNdWx0aUtleS5lbWl0KHsga2V5czogW10sIG1hcEtleXMsIGlzQ2xpY2tNYW51YWwgfSk7XG4gICAgfVxuXG4gICAgbXVsdGlLZXlTZWxlY3RlZC5mb3JFYWNoKChrZXk6IHVua25vd24pID0+IHtcbiAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLnN0b3JlKCkuZmluZCgoaXRlbSkgPT4gaXRlbSgpW3RoaXMuZmllbGRLZXkoKV0gPT09IGtleSk7XG5cbiAgICAgIG1hcEtleXMucHVzaCh7IGtleSwgaXRlbSwgaXNDbGlja01hbnVhbCB9KTtcbiAgICB9KTtcbiAgICB0aGlzLm91dFNlbGVjdE11bHRpS2V5LmVtaXQoeyBrZXlzOiB0aGlzLm11bHRpS2V5U2VsZWN0ZWQoKSB8fCBbXSwgbWFwS2V5cywgaXNDbGlja01hbnVhbCB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVyU2Nyb2xsQm90dG9tKCkge1xuICAgIGlmICh0aGlzLmxvYWRlZExhc3RJdGVtKCkpIHtcbiAgICAgIHRoaXMubG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgdGhpcy5vdXRMb2FkaW5nLmVtaXQodGhpcy5sb2FkaW5nKCkpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLmxvYWRpbmcoKSB8fCB0aGlzLmxvYWRlZExhc3RJdGVtKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5sb2FkaW5nLnNldCh0cnVlKTtcbiAgICB0aGlzLm91dExvYWRpbmcuZW1pdCh0aGlzLmxvYWRpbmcoKSk7XG4gICAgdGhpcy5jYWxsQXBpQnlTZXJ2aWNlKGZhbHNlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwcm9jZXNzU2VhcmNoKCkge1xuICAgIHRoaXMuY2FsbEFwaUJ5U2VydmljZSh0cnVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwcm9jZXNzRGF0YShyZXBsYWNlPzogYm9vbGVhbik6IHZvaWQge1xuICAgIGNvbnN0IGl0ZW1CeUtleVNlYXJjaDogQXJyYXk8V3JpdGFibGVTaWduYWw8YW55Pj4gPSBbXTtcbiAgICBjb25zdCBrZXlzSGlkZGVuID0gdGhpcy5rZXlzSGlkZGVuSXRlbSgpIHx8IFtdO1xuXG4gICAgaWYgKHJlcGxhY2UpIHtcbiAgICAgIHRoaXMuaXRlbXMuc2V0KFtdKTtcbiAgICB9XG4gICAgdGhpcy5zdG9yZSgpLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgIGNvbnN0IGRhdGFTdG9yZTogV3JpdGFibGVTaWduYWw8YW55PiA9IGNsb25lRGVlcChpdGVtKTtcblxuICAgICAgZGF0YVN0b3JlLnVwZGF0ZSgoY3VycmVudFN0b3JlKSA9PiB7XG4gICAgICAgIHJldHVybiB7IC4uLmN1cnJlbnRTdG9yZSwgcmVmOiBpdGVtKCkgfTtcbiAgICAgIH0pO1xuICAgICAgY29uc3Qga2V5ID0ga2V5c0hpZGRlbi5maW5kKChrZXkpID0+IGRhdGFTdG9yZSgpW3RoaXMuZmllbGRLZXkoKV0gPT09IGtleSk7XG5cbiAgICAgIGlmIChrZXkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCB0ZXh0ID0gdGhpcy5idWlsZFZhbHVlQnlDb25maWcoZGF0YVN0b3JlLCB0aGlzLmNvbmZpZ1RlbXBsYXRlVGFnKCkpO1xuXG4gICAgICAgIGlmICh0ZXh0ICYmIGRlbGV0ZVVuaWNvZGUodGV4dC50b0xvY2FsZUxvd2VyQ2FzZSgpKS5pbmNsdWRlcyhkZWxldGVVbmljb2RlKHRoaXMua2V5U2VhcmNoKCkudG9Mb2NhbGVMb3dlckNhc2UoKSkpICYmICF0aGlzLml0ZW1zKCkuZmluZCgoZGF0YUl0ZW0pID0+IGRhdGFJdGVtKClbdGhpcy5maWVsZEtleSgpXSA9PT0gZGF0YVN0b3JlKClbdGhpcy5maWVsZEtleSgpXSkpIHtcbiAgICAgICAgICBpdGVtQnlLZXlTZWFyY2gucHVzaChkYXRhU3RvcmUpO1xuICAgICAgICAgIGRhdGFTdG9yZS51cGRhdGUoKGN1cnJlbnRTdG9yZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgLi4uY3VycmVudFN0b3JlLFxuICAgICAgICAgICAgICBjbGFzc0l0ZW06IGl0ZW0oKS5jbGFzc0l0ZW0gfHwgdGhpcy5jb25maWdUZW1wbGF0ZVRhZygpPy5nZXRDbGFzc0l0ZW0/LihkYXRhU3RvcmUoKSksXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgaW5kZXhJdGVtUmVtb3ZlID0gdGhpcy5pdGVtcygpLmZpbmRJbmRleCgoaXRlbSkgPT4gaXRlbSgpW3RoaXMuZmllbGRLZXkoKV0gPT09IGtleSk7XG5cbiAgICAgIGlmIChpbmRleEl0ZW1SZW1vdmUgPiAtMSkge1xuICAgICAgICB0aGlzLml0ZW1zLnVwZGF0ZSgoaXRlbXMpID0+IHtcbiAgICAgICAgICBpdGVtcy5zcGxpY2UoaW5kZXhJdGVtUmVtb3ZlLCAxKTtcblxuICAgICAgICAgIHJldHVybiBpdGVtcztcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgY2hlY2tMb2FkSXRlbSA9IChwcmVTdGF0ZUhhc1Njcm9sbDogYm9vbGVhbiwgY3VycmVudEhhc1Njcm9sbDogYm9vbGVhbikgPT4ge1xuICAgICAgaWYgKHRoaXMua2V5c0hpZGRlbkl0ZW0oKT8ubGVuZ3RoICYmIHByZVN0YXRlSGFzU2Nyb2xsICYmICFjdXJyZW50SGFzU2Nyb2xsICYmIHRoaXMuaXNTZWFyY2hPbmxpbmUoKSkge1xuICAgICAgICB0aGlzLmNhbGxBcGlCeVNlcnZpY2UoZmFsc2UpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBpZiAocmVwbGFjZSkge1xuICAgICAgdGhpcy5pdGVtcy5zZXQoaXRlbUJ5S2V5U2VhcmNoKTtcbiAgICAgIHRoaXMuY29uZmlnKCk/LnNvcnQ/Lih0aGlzLml0ZW1zKCkpO1xuICAgICAgdGhpcy5zZXRIZWlnaHRWaWV3UG9ydCgpO1xuICAgICAgdGhpcy5jaGVja1ZpZXdQb3J0U2Nyb2xsKGNoZWNrTG9hZEl0ZW0pO1xuICAgICAgdGhpcy5sb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICB0aGlzLm91dExvYWRpbmcuZW1pdCh0aGlzLmxvYWRpbmcoKSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5pdGVtcy51cGRhdGUoKGl0ZW1zKSA9PiBbLi4uKGl0ZW1zIHx8IFtdKSwgLi4uaXRlbUJ5S2V5U2VhcmNoXSk7XG4gICAgdGhpcy5jb25maWcoKT8uc29ydD8uKHRoaXMuaXRlbXMoKSk7XG4gICAgdGhpcy5zZXRIZWlnaHRWaWV3UG9ydCgpO1xuICAgIHRoaXMuY2hlY2tWaWV3UG9ydFNjcm9sbChjaGVja0xvYWRJdGVtKTtcbiAgICB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICB0aGlzLm91dExvYWRpbmcuZW1pdCh0aGlzLmxvYWRpbmcoKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0TGVuZ3RoSXRlbSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLml0ZW1zKCkubGVuZ3RoO1xuICB9XG59XG4iLCJAaWYgKGNvbmZpZ1RlbXBsYXRlVGFnKCk7IGFzIGNvbmZpZ1RlbXBsYXRlVGFnKSB7XG4gIDxkaXZcbiAgICBjbGFzcz1cInctZnVsbCBoLWZ1bGwgcmVsYXRpdmVcIlxuICAgIExpYnNVaUNvbXBvbmVudHNTY3JvbGxPdmVybGF5RGlyZWN0aXZlXG4gICAgKG91dFNjcm9sbEJvdHRvbSk9XCJoYW5kbGVyU2Nyb2xsQm90dG9tKClcIj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInJlbGF0aXZlIG1heC1oLVsxNTBweF0gaC1mdWxsIHt7IGNvbmZpZ1RlbXBsYXRlVGFnLmNsYXNzSW5jbHVkZUNvbnRhaW5lciB9fVwiXG4gICAgICBbbmdDbGFzc109XCJ7ICdmbGV4IGZsZXgtd3JhcCc6ICFjb25maWdUZW1wbGF0ZVRhZy5pZ25vcmVJdGVtRmxleFdyYXAgfVwiXG4gICAgICBbY2xhc3MubWluLWgtWzQ1cHhdXT1cIiFsb2FkaW5nKCkgJiYgKCFpdGVtcygpIHx8ICFpdGVtcygpLmxlbmd0aClcIlxuICAgICAgW2NsYXNzLm1pbi1oLVs5NHB4XV09XCJsb2FkaW5nKCkgJiYgaXRlbXMoKVwiPlxuICAgICAgQGZvciAoaXRlbSBvZiBpdGVtcygpOyB0cmFjayBpdGVtKClbZmllbGRLZXkoKV0pIHtcbiAgICAgICAgPGRpdlxuICAgICAgICAgIFtjbGFzcy5saWJzLXVpLWRpc2FibGVdPVwibG9hZGluZygpIHx8IGRpc2FibGUoKVwiXG4gICAgICAgICAgW2NsYXNzLnBvaW50ZXItZXZlbnRzLW5vbmVdPVwibG9hZGluZygpIHx8IGRpc2FibGUoKVwiXG4gICAgICAgICAgW2NsYXNzXT1cIml0ZW0oKS5jbGFzc0NvbnRhaW5lckl0ZW1cIj5cbiAgICAgICAgICBAaWYgKGl0ZW0oKS5idWxsZXQ7IGFzIGJ1bGxldCkge1xuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBbY2xhc3NdPVwiaXRlbSgpLmNsYXNzSXRlbSB8fCAncm91bmRlZC1bMTBweF0gcHgtWzhweF0gcHktWzFweF0gbWItWzhweF0gbXItWzhweF0nXCJcbiAgICAgICAgICAgICAgW2NsYXNzLnctbWF4XT1cImNvbmZpZ1RlbXBsYXRlVGFnPy5pZ25vcmVJdGVtRmxleFdyYXBcIlxuICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJidWxsZXQoKS5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiYnVsbGV0KCkuY29sb3JcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlclNlbGVjdEl0ZW0oJGV2ZW50LCBpdGVtKCkpXCJcbiAgICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cImhhbmRsZXJTZWxlY3RJdGVtKCRldmVudCwgaXRlbSgpKVwiPlxuICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cIml0ZW0oKS5maWVsZExhYmVsXCI+PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICBAbGV0IGNvbnN0SHRtbElzU2VsZWN0ZWQgPSBpdGVtKClbZmllbGRLZXkoKV0gfCBMaWJzVWlDaGVja1NlbGVjdGVkQnlLZXlQaXBlOiBtdWx0aUtleVNlbGVjdGVkKCkgOiBtdWx0aUtleVNlbGVjdGVkKCkubGVuZ3RoO1xuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlclNlbGVjdEl0ZW0oJGV2ZW50LCBpdGVtKCkpXCJcbiAgICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cImhhbmRsZXJTZWxlY3RJdGVtKCRldmVudCwgaXRlbSgpKVwiXG4gICAgICAgICAgICAgIFtjbGFzc109XCJpdGVtKCkuY2xhc3NJdGVtIHx8ICdyb3VuZGVkLVsyMHB4XSBtYi1bOHB4XSBtci1bOHB4XSBweS1bNHB4XSBweC1bOHB4XSBmbGV4IGl0ZW1zLWNlbnRlciBjdXJzb3ItcG9pbnRlcidcIlxuICAgICAgICAgICAgICBbY2xhc3MuYmctW3ZhcigtLWxpYnMtdWktY29sb3ItbGlnaHQtMildXT1cImNvbnN0SHRtbElzU2VsZWN0ZWRcIlxuICAgICAgICAgICAgICBbY2xhc3MudGV4dC1bdmFyKC0tbGlicy11aS1jb2xvci1kZWZhdWx0KV1dPVwiY29uc3RIdG1sSXNTZWxlY3RlZFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5iZy13aGl0ZV09XCIhY29uc3RIdG1sSXNTZWxlY3RlZFwiXG4gICAgICAgICAgICAgIFtjbGFzcy50ZXh0LVsjNmE3MzgzXV09XCIhY29uc3RIdG1sSXNTZWxlY3RlZFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5saWJzLXVpLWJvcmRlci1nZW5lcmFsXT1cIiFjb25zdEh0bWxJc1NlbGVjdGVkXCI+XG4gICAgICAgICAgICAgIEBpZiAoY29uc3RIdG1sSXNTZWxlY3RlZCkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtci1bOHB4XSB0ZXh0LVsxMnB4XSBsaWJzLXVpLWljb24tY2hlY2sgYmVmb3JlOnRleHQtW3ZhcigtLWxpYnMtdWktY29sb3ItZGVmYXVsdCldXCI+PC9kaXY+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cImxpYnMtdWktZm9udC1oNnIgYnJlYWstd29yZFwiXG4gICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJpdGVtKCkuZmllbGRMYWJlbFwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgICBAaWYgKCFpdGVtcygpIHx8ICFpdGVtcygpLmxlbmd0aCkge1xuICAgICAgICA8ZGl2IFtjbGFzc109XCInbGlicy11aS1mb250LWg1ciB0ZXh0LVsjOWNhMmFkXSAnICsgKGNvbmZpZygpPy50ZXh0Tm9EYXRhQ2xhc3NJbmNsdWRlID8/ICdweS1bNHB4XSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB3LWZ1bGwnKVwiPlxuICAgICAgICAgIEBpZiAoIWtleVNlYXJjaCgpICYmICFsb2FkaW5nKCkpIHtcbiAgICAgICAgICAgIEBsZXQgY29uc3RIdG1sVGV4dE5vRGF0YSA9IGNvbmZpZygpPy50ZXh0Tm9EYXRhIHx8ICdpMThuX2hhdmVfbm9fc2VsZWN0aW9uJztcbiAgICAgICAgICAgIHt7IGNvbnN0SHRtbFRleHROb0RhdGEgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmICh0ZW1wbGF0ZVJlZlNlYXJjaE5vRGF0YSgpICYmIGtleVNlYXJjaCgpICYmICFsb2FkaW5nKCkpIHtcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZVJlZlNlYXJjaE5vRGF0YSgpIHx8IG51bGw7IGNvbnRleHQ6IHsga2V5U2VhcmNoOiBrZXlTZWFyY2goKSB9XCIgLz5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmICghdGVtcGxhdGVSZWZTZWFyY2hOb0RhdGEoKSAmJiBrZXlTZWFyY2goKSAmJiAhbG9hZGluZygpKSB7XG4gICAgICAgICAgICBAbGV0IGNvbnN0SHRtbFRleHRTZWFyY2hOb0RhdGEgPSBjb25maWcoKT8udGV4dFNlYXJjaE5vRGF0YSB8fCAnaTE4bl9ub19yZXN1bHQnO1xuICAgICAgICAgICAge3sgY29uc3RIdG1sVGV4dFNlYXJjaE5vRGF0YSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKGxvYWRpbmcoKSkge1xuICAgICAgICAgICAgJm5ic3A7XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgICBAaWYgKGxvYWRpbmcoKSkge1xuICAgICAgPGRpdiBjbGFzcz1cInctZnVsbCBoLWZ1bGwgYWJzb2x1dGUgdG9wLTBcIj5cbiAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1zcGlubmVyIFtzaXplXT1cIidtZWRpdW0nXCIgLz5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgPC9kaXY+XG59XG4iXX0=
|
|
139
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFnLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9saXN0L3NyYy90ZW1wbGF0ZXMvdGFnL3RhZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvbGlzdC9zcmMvdGVtcGxhdGVzL3RhZy90YWcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFVLE1BQU0sRUFBa0IsTUFBTSxlQUFlLENBQUM7QUFDbkcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLHNDQUFzQyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDNUYsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHdEQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDdEYsT0FBTyxFQUFFLDhDQUE4QyxFQUFFLE1BQU0saUNBQWlDLENBQUM7OztBQVVqRyxNQUFNLE9BQU8sZ0NBQWlDLFNBQVEsOENBQThDO0lBQ2xHLG1CQUFtQjtJQUNULGlCQUFpQixHQUFHLE1BQU0sQ0FBaUMsU0FBUyxDQUFDLENBQUM7SUFFdkUsUUFBUTtRQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsRUFBRSxFQUFFLENBQUM7WUFDMUMsT0FBTztRQUNULENBQUM7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RUFBRSxzQ0FBc0MsRUFBRSw0QkFBNEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IE5nQ2xhc3MsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgT25Jbml0LCBzaWduYWwsIFdyaXRhYmxlU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBWaXJ0dWFsU2Nyb2xsZXJNb2R1bGUgfSBmcm9tICdAaWhhcmJlY2svbmd4LXZpcnR1YWwtc2Nyb2xsZXInO1xuaW1wb3J0IHsgTGlic1VpQ29tcG9uZW50c1Njcm9sbE92ZXJsYXlEaXJlY3RpdmUgfSBmcm9tICdAbGlicy11aS9jb21wb25lbnRzLXNjcm9sbC1vdmVybGF5JztcbmltcG9ydCB7IExpYnNVaUNvbXBvbmVudHNTcGlubmVyQ29tcG9uZW50IH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1zcGlubmVyJztcbmltcG9ydCB7IGNsb25lRGVlcCwgZGVsZXRlVW5pY29kZSB9IGZyb20gJ0BsaWJzLXVpL3V0aWxzJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgSUxpc3RDb25maWdJdGVtVGFnIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9jb25maWctaXRlbS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSUxpc3REYXRhRW1pdEtleSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZGF0YS1lbWl0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBMaWJzVWlDaGVja1NlbGVjdGVkQnlLZXlQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvY2hlY2stc2VsZWN0ZWQtYnkta2V5LnBpcGUnO1xuaW1wb3J0IHsgTGlic1VpQ29tcG9uZW50c0xpc3RUZW1wbGF0ZXNDb21wb25lbnRBYnN0cmFjdCB9IGZyb20gJy4uL3RlbXBsYXRlcy5jb21wb25lbnQuYWJzdHJhY3QnO1xuXG5AQ29tcG9uZW50KHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdsaWJzX3VpLWNvbXBvbmVudHMtbGlzdC10ZW1wbGF0ZXNfdGFnJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RhZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbVmlydHVhbFNjcm9sbGVyTW9kdWxlLCBOZ1RlbXBsYXRlT3V0bGV0LCBUcmFuc2xhdGVNb2R1bGUsIE5nQ2xhc3MsIExpYnNVaUNvbXBvbmVudHNTcGlubmVyQ29tcG9uZW50LCBMaWJzVWlDb21wb25lbnRzU2Nyb2xsT3ZlcmxheURpcmVjdGl2ZSwgTGlic1VpQ2hlY2tTZWxlY3RlZEJ5S2V5UGlwZV0sXG59KVxuZXhwb3J0IGNsYXNzIExpYnNVaUNvbXBvbmVudHNMaXN0VGFnQ29tcG9uZW50IGV4dGVuZHMgTGlic1VpQ29tcG9uZW50c0xpc3RUZW1wbGF0ZXNDb21wb25lbnRBYnN0cmFjdCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8vICNyZWdpb24gUFJPUEVSVFlcbiAgcHJvdGVjdGVkIGNvbmZpZ1RlbXBsYXRlVGFnID0gc2lnbmFsPElMaXN0Q29uZmlnSXRlbVRhZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICBvdmVycmlkZSBuZ09uSW5pdCgpIHtcbiAgICBpZiAoIXRoaXMuY29uZmlnKCk/LmNvbmZpZ1RlbXBsYXRlVGFnPy4oKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIHRoaXMuY29uZmlnVGVtcGxhdGVUYWcuc2V0KHRoaXMuY29uZmlnKCk/LmNvbmZpZ1RlbXBsYXRlVGFnPy4oKSk7XG4gICAgdGhpcy5maWVsZEtleS5zZXQodGhpcy5jb25maWdUZW1wbGF0ZVRhZygpPy5maWVsZEtleSA/PyB0aGlzLmZpZWxkS2V5RGVmYXVsdCgpKTtcbiAgICB0aGlzLmNhbGxBcGlCeVNlcnZpY2UoKTtcbiAgfVxuXG4gIC8qIEZVTkNUSU9OUyAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlclNlbGVjdEl0ZW0oZTogRXZlbnQsIGl0ZW06IGFueSkge1xuICAgIGlmIChlIGluc3RhbmNlb2YgRXZlbnQpIHtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICAgIGlmICghaXRlbSB8fCB0aGlzLmtleXNEaXNhYmxlSXRlbSgpPy5zb21lKChrZXkpID0+IGtleSA9PT0gaXRlbVt0aGlzLmZpZWxkS2V5KCldKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBrZXkgPSBpdGVtW3RoaXMuZmllbGRLZXkoKV07XG4gICAgY29uc3QgaW5kZXhPZktleSA9IHRoaXMubXVsdGlLZXlTZWxlY3RlZCgpPy5pbmRleE9mKGtleSkgPz8gLTE7XG5cbiAgICBpZiAoaW5kZXhPZktleSA8IDApIHtcbiAgICAgIHRoaXMubXVsdGlLZXlTZWxlY3RlZC51cGRhdGUoKGl0ZW1zKSA9PiBbLi4uKGl0ZW1zIHx8IFtdKSwga2V5XSk7XG4gICAgICB0aGlzLmVtaXRNb1NlbGVjdE11bHRpS2V5KHRoaXMubXVsdGlLZXlTZWxlY3RlZCgpIHx8IFtdKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm11bHRpS2V5U2VsZWN0ZWQudXBkYXRlKChpdGVtcykgPT4ge1xuICAgICAgaXRlbXM/LnNwbGljZShpbmRleE9mS2V5LCAxKTtcblxuICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgIH0pO1xuICAgIHRoaXMub3V0VW5TZWxlY3RNdWx0aUtleS5lbWl0KFtrZXldKTtcbiAgICB0aGlzLmVtaXRNb1NlbGVjdE11bHRpS2V5KHRoaXMubXVsdGlLZXlTZWxlY3RlZCgpIHx8IFtdKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZW1pdE1vU2VsZWN0TXVsdGlLZXkobXVsdGlLZXlTZWxlY3RlZDogQXJyYXk8dW5rbm93bj4sIGlzQ2xpY2tNYW51YWwgPSB0cnVlKSB7XG4gICAgY29uc3QgbWFwS2V5cyA9IG5ldyBBcnJheTxJTGlzdERhdGFFbWl0S2V5PigpO1xuICAgIGlmICghbXVsdGlLZXlTZWxlY3RlZD8ubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gdGhpcy5vdXRTZWxlY3RNdWx0aUtleS5lbWl0KHsga2V5czogW10sIG1hcEtleXMsIGlzQ2xpY2tNYW51YWwgfSk7XG4gICAgfVxuXG4gICAgbXVsdGlLZXlTZWxlY3RlZC5mb3JFYWNoKChrZXk6IHVua25vd24pID0+IHtcbiAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLnN0b3JlKCkuZmluZCgoaXRlbSkgPT4gaXRlbSgpW3RoaXMuZmllbGRLZXkoKV0gPT09IGtleSk7XG5cbiAgICAgIG1hcEtleXMucHVzaCh7IGtleSwgaXRlbSwgaXNDbGlja01hbnVhbCB9KTtcbiAgICB9KTtcbiAgICB0aGlzLm91dFNlbGVjdE11bHRpS2V5LmVtaXQoeyBrZXlzOiB0aGlzLm11bHRpS2V5U2VsZWN0ZWQoKSB8fCBbXSwgbWFwS2V5cywgaXNDbGlja01hbnVhbCB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVyU2Nyb2xsQm90dG9tKCkge1xuICAgIGlmICh0aGlzLmxvYWRlZExhc3RJdGVtKCkpIHtcbiAgICAgIHRoaXMubG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgdGhpcy5vdXRMb2FkaW5nLmVtaXQodGhpcy5sb2FkaW5nKCkpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLmxvYWRpbmcoKSB8fCB0aGlzLmxvYWRlZExhc3RJdGVtKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5sb2FkaW5nLnNldCh0cnVlKTtcbiAgICB0aGlzLm91dExvYWRpbmcuZW1pdCh0aGlzLmxvYWRpbmcoKSk7XG4gICAgdGhpcy5jYWxsQXBpQnlTZXJ2aWNlKGZhbHNlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwcm9jZXNzU2VhcmNoKCkge1xuICAgIHRoaXMuY2FsbEFwaUJ5U2VydmljZSh0cnVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwcm9jZXNzRGF0YShyZXBsYWNlPzogYm9vbGVhbik6IHZvaWQge1xuICAgIGNvbnN0IGl0ZW1CeUtleVNlYXJjaDogQXJyYXk8V3JpdGFibGVTaWduYWw8YW55Pj4gPSBbXTtcbiAgICBjb25zdCBrZXlzSGlkZGVuID0gdGhpcy5rZXlzSGlkZGVuSXRlbSgpIHx8IFtdO1xuXG4gICAgaWYgKHJlcGxhY2UpIHtcbiAgICAgIHRoaXMuaXRlbXMuc2V0KFtdKTtcbiAgICB9XG4gICAgdGhpcy5zdG9yZSgpLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgIGNvbnN0IGRhdGFTdG9yZTogV3JpdGFibGVTaWduYWw8YW55PiA9IGNsb25lRGVlcChpdGVtKTtcblxuICAgICAgZGF0YVN0b3JlLnVwZGF0ZSgoY3VycmVudFN0b3JlKSA9PiB7XG4gICAgICAgIHJldHVybiB7IC4uLmN1cnJlbnRTdG9yZSwgcmVmOiBpdGVtKCkgfTtcbiAgICAgIH0pO1xuICAgICAgY29uc3Qga2V5ID0ga2V5c0hpZGRlbi5maW5kKChrZXkpID0+IGRhdGFTdG9yZSgpW3RoaXMuZmllbGRLZXkoKV0gPT09IGtleSk7XG5cbiAgICAgIGlmIChrZXkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCB0ZXh0ID0gdGhpcy5idWlsZFZhbHVlQnlDb25maWcoZGF0YVN0b3JlLCB0aGlzLmNvbmZpZ1RlbXBsYXRlVGFnKCkpO1xuXG4gICAgICAgIGlmICh0ZXh0ICYmIGRlbGV0ZVVuaWNvZGUodGV4dC50b0xvY2FsZUxvd2VyQ2FzZSgpKS5pbmNsdWRlcyhkZWxldGVVbmljb2RlKHRoaXMua2V5U2VhcmNoKCkudG9Mb2NhbGVMb3dlckNhc2UoKSkpICYmICF0aGlzLml0ZW1zKCkuZmluZCgoZGF0YUl0ZW0pID0+IGRhdGFJdGVtKClbdGhpcy5maWVsZEtleSgpXSA9PT0gZGF0YVN0b3JlKClbdGhpcy5maWVsZEtleSgpXSkpIHtcbiAgICAgICAgICBpdGVtQnlLZXlTZWFyY2gucHVzaChkYXRhU3RvcmUpO1xuICAgICAgICAgIGRhdGFTdG9yZS51cGRhdGUoKGN1cnJlbnRTdG9yZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgLi4uY3VycmVudFN0b3JlLFxuICAgICAgICAgICAgICBjbGFzc0l0ZW06IGl0ZW0oKS5jbGFzc0l0ZW0gfHwgdGhpcy5jb25maWdUZW1wbGF0ZVRhZygpPy5nZXRDbGFzc0l0ZW0/LihkYXRhU3RvcmUoKSksXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgaW5kZXhJdGVtUmVtb3ZlID0gdGhpcy5pdGVtcygpLmZpbmRJbmRleCgoaXRlbSkgPT4gaXRlbSgpW3RoaXMuZmllbGRLZXkoKV0gPT09IGtleSk7XG5cbiAgICAgIGlmIChpbmRleEl0ZW1SZW1vdmUgPiAtMSkge1xuICAgICAgICB0aGlzLml0ZW1zLnVwZGF0ZSgoaXRlbXMpID0+IHtcbiAgICAgICAgICBpdGVtcy5zcGxpY2UoaW5kZXhJdGVtUmVtb3ZlLCAxKTtcblxuICAgICAgICAgIHJldHVybiBpdGVtcztcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgY2hlY2tMb2FkSXRlbSA9IChwcmVTdGF0ZUhhc1Njcm9sbDogYm9vbGVhbiwgY3VycmVudEhhc1Njcm9sbDogYm9vbGVhbikgPT4ge1xuICAgICAgaWYgKHRoaXMua2V5c0hpZGRlbkl0ZW0oKT8ubGVuZ3RoICYmIHByZVN0YXRlSGFzU2Nyb2xsICYmICFjdXJyZW50SGFzU2Nyb2xsICYmIHRoaXMuaXNTZWFyY2hPbmxpbmUoKSkge1xuICAgICAgICB0aGlzLmNhbGxBcGlCeVNlcnZpY2UoZmFsc2UpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBpZiAocmVwbGFjZSkge1xuICAgICAgdGhpcy5pdGVtcy5zZXQoaXRlbUJ5S2V5U2VhcmNoKTtcbiAgICAgIHRoaXMuY29uZmlnKCk/LnNvcnQ/Lih0aGlzLml0ZW1zKCkpO1xuICAgICAgdGhpcy5zZXRIZWlnaHRWaWV3UG9ydCgpO1xuICAgICAgdGhpcy5jaGVja1ZpZXdQb3J0U2Nyb2xsKGNoZWNrTG9hZEl0ZW0pO1xuICAgICAgdGhpcy5sb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICB0aGlzLm91dExvYWRpbmcuZW1pdCh0aGlzLmxvYWRpbmcoKSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5pdGVtcy51cGRhdGUoKGl0ZW1zKSA9PiBbLi4uKGl0ZW1zIHx8IFtdKSwgLi4uaXRlbUJ5S2V5U2VhcmNoXSk7XG4gICAgdGhpcy5jb25maWcoKT8uc29ydD8uKHRoaXMuaXRlbXMoKSk7XG4gICAgdGhpcy5zZXRIZWlnaHRWaWV3UG9ydCgpO1xuICAgIHRoaXMuY2hlY2tWaWV3UG9ydFNjcm9sbChjaGVja0xvYWRJdGVtKTtcbiAgICB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICB0aGlzLm91dExvYWRpbmcuZW1pdCh0aGlzLmxvYWRpbmcoKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0TGVuZ3RoSXRlbSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLml0ZW1zKCkubGVuZ3RoO1xuICB9XG59XG4iLCJAaWYgKGNvbmZpZ1RlbXBsYXRlVGFnKCk7IGFzIGNvbmZpZ1RlbXBsYXRlVGFnKSB7XG4gIDxkaXZcbiAgICBjbGFzcz1cInctZnVsbCBoLWZ1bGwgcmVsYXRpdmVcIlxuICAgIExpYnNVaUNvbXBvbmVudHNTY3JvbGxPdmVybGF5RGlyZWN0aXZlXG4gICAgKG91dFNjcm9sbEJvdHRvbSk9XCJoYW5kbGVyU2Nyb2xsQm90dG9tKClcIj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInJlbGF0aXZlIG1heC1oLVsxNTBweF0gaC1mdWxsIHt7IGNvbmZpZ1RlbXBsYXRlVGFnLmNsYXNzSW5jbHVkZUNvbnRhaW5lciB9fVwiXG4gICAgICBbbmdDbGFzc109XCJ7ICdmbGV4IGZsZXgtd3JhcCc6ICFjb25maWdUZW1wbGF0ZVRhZy5pZ25vcmVJdGVtRmxleFdyYXAgfVwiXG4gICAgICBbY2xhc3MubWluLWgtWzQ1cHhdXT1cIiFsb2FkaW5nKCkgJiYgKCFpdGVtcygpIHx8ICFpdGVtcygpLmxlbmd0aClcIlxuICAgICAgW2NsYXNzLm1pbi1oLVs5NHB4XV09XCJsb2FkaW5nKCkgJiYgaXRlbXMoKVwiPlxuICAgICAgQGZvciAoaXRlbSBvZiBpdGVtcygpOyB0cmFjayBpdGVtKClbZmllbGRLZXkoKV0pIHtcbiAgICAgICAgPGRpdlxuICAgICAgICAgIFtjbGFzcy5saWJzLXVpLWRpc2FibGVdPVwibG9hZGluZygpIHx8IGRpc2FibGUoKVwiXG4gICAgICAgICAgW2NsYXNzLnBvaW50ZXItZXZlbnRzLW5vbmVdPVwibG9hZGluZygpIHx8IGRpc2FibGUoKVwiXG4gICAgICAgICAgW2NsYXNzXT1cIml0ZW0oKS5jbGFzc0NvbnRhaW5lckl0ZW1cIj5cbiAgICAgICAgICBAaWYgKGl0ZW0oKS5idWxsZXQ7IGFzIGJ1bGxldCkge1xuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBbY2xhc3NdPVwiaXRlbSgpLmNsYXNzSXRlbSB8fCAncm91bmRlZC1bMTBweF0gcHgtWzhweF0gcHktWzFweF0gbWItWzhweF0gbXItWzhweF0nXCJcbiAgICAgICAgICAgICAgW2NsYXNzLnctbWF4XT1cImNvbmZpZ1RlbXBsYXRlVGFnPy5pZ25vcmVJdGVtRmxleFdyYXBcIlxuICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJidWxsZXQoKS5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiYnVsbGV0KCkuY29sb3JcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlclNlbGVjdEl0ZW0oJGV2ZW50LCBpdGVtKCkpXCJcbiAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiaGFuZGxlclNlbGVjdEl0ZW0oJGV2ZW50LCBpdGVtKCkpXCI+XG4gICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiaXRlbSgpLmZpZWxkTGFiZWxcIj48L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIEBsZXQgY29uc3RIdG1sSXNTZWxlY3RlZCA9IGl0ZW0oKVtmaWVsZEtleSgpXSB8IExpYnNVaUNoZWNrU2VsZWN0ZWRCeUtleVBpcGU6IG11bHRpS2V5U2VsZWN0ZWQoKSA6IG11bHRpS2V5U2VsZWN0ZWQoKS5sZW5ndGg7XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVyU2VsZWN0SXRlbSgkZXZlbnQsIGl0ZW0oKSlcIlxuICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJoYW5kbGVyU2VsZWN0SXRlbSgkZXZlbnQsIGl0ZW0oKSlcIlxuICAgICAgICAgICAgICBbY2xhc3NdPVwiaXRlbSgpLmNsYXNzSXRlbSB8fCAncm91bmRlZC1bMjBweF0gbWItWzhweF0gbXItWzhweF0gcHktWzRweF0gcHgtWzhweF0gZmxleCBpdGVtcy1jZW50ZXIgY3Vyc29yLXBvaW50ZXInXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmJnLVt2YXIoLS1saWJzLXVpLWNvbG9yLWxpZ2h0LTIpXV09XCJjb25zdEh0bWxJc1NlbGVjdGVkXCJcbiAgICAgICAgICAgICAgW2NsYXNzLnRleHQtW3ZhcigtLWxpYnMtdWktY29sb3ItZGVmYXVsdCldXT1cImNvbnN0SHRtbElzU2VsZWN0ZWRcIlxuICAgICAgICAgICAgICBbY2xhc3MuYmctd2hpdGVdPVwiIWNvbnN0SHRtbElzU2VsZWN0ZWRcIlxuICAgICAgICAgICAgICBbY2xhc3MudGV4dC1bIzZhNzM4M11dPVwiIWNvbnN0SHRtbElzU2VsZWN0ZWRcIlxuICAgICAgICAgICAgICBbY2xhc3MubGlicy11aS1ib3JkZXItZ2VuZXJhbF09XCIhY29uc3RIdG1sSXNTZWxlY3RlZFwiPlxuICAgICAgICAgICAgICBAaWYgKGNvbnN0SHRtbElzU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXItWzhweF0gdGV4dC1bMTJweF0gbGlicy11aS1pY29uLWNoZWNrIGJlZm9yZTp0ZXh0LVt2YXIoLS1saWJzLXVpLWNvbG9yLWRlZmF1bHQpXVwiPjwvZGl2PlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJsaWJzLXVpLWZvbnQtaDZyIGJyZWFrLXdvcmRcIlxuICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiaXRlbSgpLmZpZWxkTGFiZWxcIj48L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgICAgQGlmICghaXRlbXMoKSB8fCAhaXRlbXMoKS5sZW5ndGgpIHtcbiAgICAgICAgPGRpdiBbY2xhc3NdPVwiJ2xpYnMtdWktZm9udC1oNXIgdGV4dC1bIzljYTJhZF0gJyArIChjb25maWcoKT8udGV4dE5vRGF0YUNsYXNzSW5jbHVkZSA/PyAncHktWzRweF0gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdy1mdWxsJylcIj5cbiAgICAgICAgICBAaWYgKCFrZXlTZWFyY2goKSAmJiAhbG9hZGluZygpKSB7XG4gICAgICAgICAgICBAbGV0IGNvbnN0SHRtbFRleHROb0RhdGEgPSBjb25maWcoKT8udGV4dE5vRGF0YSB8fCAnaTE4bl9oYXZlX25vX3NlbGVjdGlvbic7XG4gICAgICAgICAgICB7eyBjb25zdEh0bWxUZXh0Tm9EYXRhIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiAodGVtcGxhdGVSZWZTZWFyY2hOb0RhdGEoKSAmJiBrZXlTZWFyY2goKSAmJiAhbG9hZGluZygpKSB7XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGVtcGxhdGVSZWZTZWFyY2hOb0RhdGEoKSB8fCBudWxsOyBjb250ZXh0OiB7IGtleVNlYXJjaDoga2V5U2VhcmNoKCkgfVwiIC8+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiAoIXRlbXBsYXRlUmVmU2VhcmNoTm9EYXRhKCkgJiYga2V5U2VhcmNoKCkgJiYgIWxvYWRpbmcoKSkge1xuICAgICAgICAgICAgQGxldCBjb25zdEh0bWxUZXh0U2VhcmNoTm9EYXRhID0gY29uZmlnKCk/LnRleHRTZWFyY2hOb0RhdGEgfHwgJ2kxOG5fbm9fcmVzdWx0JztcbiAgICAgICAgICAgIHt7IGNvbnN0SHRtbFRleHRTZWFyY2hOb0RhdGEgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmIChsb2FkaW5nKCkpIHtcbiAgICAgICAgICAgICZuYnNwO1xuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gICAgQGlmIChsb2FkaW5nKCkpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGwgaC1mdWxsIGFic29sdXRlIHRvcC0wXCI+XG4gICAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtc3Bpbm5lciBbc2l6ZV09XCInbWVkaXVtJ1wiIC8+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIDwvZGl2PlxufVxuIl19
|