@libs-ui/components-pages-template-full-screen 0.2.352-4 → 0.2.353-0
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.
|
@@ -8,8 +8,8 @@ import { LibsUiComponentsPopoverComponent } from '@libs-ui/components-popover';
|
|
|
8
8
|
import { LibsUiComponentsSwitchComponent } from '@libs-ui/components-switch';
|
|
9
9
|
import { LibsUiPipesEscapeHtmlPipe } from '@libs-ui/pipes-escape-html';
|
|
10
10
|
import { getDayjs, UtilsCommunicateMicro, UtilsCommunicateMicroKeyGlobal, uuid } from '@libs-ui/utils';
|
|
11
|
-
import { interval, Subject, takeUntil } from 'rxjs';
|
|
12
11
|
import { TranslateModule } from '@ngx-translate/core';
|
|
12
|
+
import { interval, Subject, takeUntil } from 'rxjs';
|
|
13
13
|
import * as i0 from "@angular/core";
|
|
14
14
|
export class LibsUiComponentsPagesTemplateFullScreenComponent {
|
|
15
15
|
idOverlay = signal(uuid());
|
|
@@ -47,6 +47,9 @@ export class LibsUiComponentsPagesTemplateFullScreenComponent {
|
|
|
47
47
|
},
|
|
48
48
|
};
|
|
49
49
|
UtilsCommunicateMicro.PostMessageToParent(data);
|
|
50
|
+
if (UtilsCommunicateMicroKeyGlobal.IGNORE_INTERVAL_UPDATE_TIME_LIVE_EVENT_MODAL) {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
50
53
|
interval(2000)
|
|
51
54
|
.pipe(takeUntil(this.onDestroy))
|
|
52
55
|
.subscribe(() => {
|
|
@@ -111,4 +114,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
111
114
|
LibsUiComponentsLabelComponent,
|
|
112
115
|
], providers: [], template: "<div\n class=\"libs-ui-components-page_full overflow-hidden\"\n [style.zIndex]=\"zIndex()\"\n [style.background-color]=\"ignoreBackgroundColor() ? 'transparent' : '#f2f5f7'\">\n <div [class]=\"'libs-ui-components-page_full-header ' + classHeaderInclude()\">\n <div class=\"{{ divideClassHeader()?.classButtonCancel || 'w-[25%]' }}\">\n @if (leftTemplate(); as leftTemplate) {\n <ng-container *ngTemplateOutlet=\"leftTemplate\" />\n }\n @if (labelLeft(); as labelLeft) {\n <libs_ui-components-buttons-button\n [label]=\"labelLeft\"\n [type]=\"'button-link-primary'\"\n [classIconLeft]=\"'libs-ui-icon-chevron-right rotate-[180deg] before:text-[16px]'\"\n [classLabel]=\"'libs-ui-font-h4r'\"\n (outClick)=\"cancel()\" />\n }\n </div>\n\n @if (centerTemplate(); as centerTemplate) {\n <div class=\"{{ divideClassHeader()?.classButtonCenter || 'w-[40%]' }} flex items-center justify-center\">\n <ng-container *ngTemplateOutlet=\"centerTemplate\" />\n </div>\n } @else {\n <div class=\"{{ divideClassHeader()?.classButtonCenter || 'w-[40%]' }} flex items-center justify-center\">\n <libs_ui-components-popover\n type=\"text\"\n [config]=\"{\n maxWidth: 250,\n zIndex: zIndex() + 1,\n }\"\n [classInclude]=\"'libs-ui-font-h2s'\"\n [innerHtml]=\"title() ? (title() | LibsUiPipesEscapeHtmlPipe) : '—'\" />\n\n @if (hasEdit(); as hasEdit) {\n <libs_ui-components-buttons-button\n [type]=\"'button-link-primary'\"\n (outClick)=\"handlerEdit()\"\n [iconOnlyType]=\"true\"\n [classIconLeft]=\"'libs-ui-icon-edit-line'\"\n [classInclude]=\"'ml-[4px]'\" />\n }\n @for (button of buttonCenter(); track button.key) {\n <div class=\"ml-[12px] flex items-center\">\n @if (button.key === 'button') {\n <libs_ui-components-buttons-button\n [label]=\"button.label || ''\"\n [classLabel]=\"(button.classLabel || '') + ' libs-ui-font-head-4s'\"\n [type]=\"button.type || 'button-primary'\"\n [classInclude]=\"button.classInclude || ''\"\n [classIconLeft]=\"button.classIconLeft || ''\"\n [classIconRight]=\"button.classIconRight || ''\"\n [popover]=\"button.popover || {}\"\n [disable]=\"button.disable || disable()\"\n [isPending]=\"button.isPending || false\"\n (outClick)=\"handlerClickButton(button)\" />\n }\n @if (button.key === 'button-status' && button.configButtonStatus) {\n <libs_ui-components-buttons-status\n [class]=\"button.classInclude\"\n [config]=\"button.configButtonStatus\" />\n }\n @if (button.key === 'switch') {\n <libs_ui-components-switch\n [active]=\"button.active || false\"\n [disable]=\"button.disable || disable()\"\n class=\"{{ button.classInclude }}\"\n (outSwitch)=\"handlerSwitch($event, button)\" />\n }\n @if (button.key === 'label' && button.labelConfig) {\n <libs_ui-components-label\n [classInclude]=\"button.labelConfig.classInclude + ' pb-0 text-white'\"\n [labelLeft]=\"button.labelConfig.labelLeft\"\n [labelLeftClass]=\"button.labelConfig.labelLeftClass\"\n [required]=\"button.labelConfig.required\"\n [description]=\"button.labelConfig.description\"\n [labelRight]=\"button.labelConfig.labelRight\"\n [labelRightClass]=\"button.labelConfig.labelRightClass\"\n [onlyShowCount]=\"button.labelConfig.onlyShowCount\"\n [buttonsLeft]=\"button.labelConfig.buttonsLeft\"\n [disableButtonsLeft]=\"button.labelConfig.disableButtonsLeft\"\n [buttonsRight]=\"button.labelConfig.buttonsRight\"\n [disableButtonsRight]=\"button.labelConfig.disableButtonsRight\"\n [hasToggle]=\"button.labelConfig.hasToggle\"\n [toggleActive]=\"button.labelConfig.toggleActive\"\n [toggleDisable]=\"button.labelConfig.toggleDisable\"\n [popover]=\"button.labelConfig.popover\"\n [iconPopoverClass]=\"button.labelConfig.iconPopoverClass\"\n [onlyShowCount]=\"button.labelConfig.onlyShowCount\"\n [limitLength]=\"button.labelConfig.limitLength\"\n [buttonsDescription]=\"button.labelConfig.buttonsDescription\"\n [disableButtonsDescription]=\"button.labelConfig.disableButtonsDescription\"\n [buttonsDescriptionContainerClass]=\"button.labelConfig.buttonsDescriptionContainerClass\"\n [count]=\"button.labelConfig.count\" />\n }\n </div>\n }\n </div>\n }\n\n <div class=\"{{ divideClassHeader()?.classButtonRight || 'w-[35%]' }} flex justify-end items-center\">\n @for (button of buttonRight(); track button.key) {\n <div [class.ml-[12px]]=\"!$first\">\n @if (button.key === 'label' && button.labelConfig) {\n <libs_ui-components-label\n [classInclude]=\"button.labelConfig.classInclude + ' pb-0'\"\n [labelLeft]=\"button.labelConfig.labelLeft\"\n [labelLeftClass]=\"button.labelConfig.labelLeftClass\"\n [required]=\"button.labelConfig.required\"\n [description]=\"button.labelConfig.description\"\n [labelRight]=\"button.labelConfig.labelRight\"\n [labelRightClass]=\"button.labelConfig.labelRightClass\"\n [onlyShowCount]=\"button.labelConfig.onlyShowCount\"\n [buttonsLeft]=\"button.labelConfig.buttonsLeft\"\n [disableButtonsLeft]=\"button.labelConfig.disableButtonsLeft\"\n [buttonsRight]=\"button.labelConfig.buttonsRight\"\n [disableButtonsRight]=\"button.labelConfig.disableButtonsRight\"\n [hasToggle]=\"button.labelConfig.hasToggle\"\n [toggleActive]=\"button.labelConfig.toggleActive\"\n [toggleDisable]=\"button.labelConfig.toggleDisable\"\n [popover]=\"button.labelConfig.popover\"\n [iconPopoverClass]=\"button.labelConfig.iconPopoverClass\"\n [onlyShowCount]=\"button.labelConfig.onlyShowCount\"\n [limitLength]=\"button.labelConfig.limitLength\"\n [buttonsDescription]=\"button.labelConfig.buttonsDescription\"\n [disableButtonsDescription]=\"button.labelConfig.disableButtonsDescription\"\n [buttonsDescriptionContainerClass]=\"button.labelConfig.buttonsDescriptionContainerClass\"\n [count]=\"button.labelConfig.count\" />\n }\n @if (button.key === 'switch') {\n <libs_ui-components-switch\n [active]=\"button.active || false\"\n [disable]=\"button.disable || disable()\"\n class=\"{{ button.classInclude }}\"\n (outSwitch)=\"handlerSwitch($event, button)\" />\n }\n\n @if (button.key === 'button') {\n <libs_ui-components-buttons-button\n [label]=\"button?.label || ''\"\n [classLabel]=\"(button.classLabel || '') + ' libs-ui-font-h4s'\"\n [type]=\"button.type || 'button-primary'\"\n [classInclude]=\"button.classInclude || ''\"\n [classIconLeft]=\"button.classIconLeft || ''\"\n [classIconRight]=\"button.classIconRight || ''\"\n [popover]=\"button.popover || {}\"\n [disable]=\"button.disable || disable()\"\n [isPending]=\"button.isPending || false\"\n [iconOnlyType]=\"button.iconOnlyType || false\"\n (outClick)=\"handlerClickButton(button)\" />\n }\n <!-- th\u00EAm \u0111\u01B0\u1EDDng ph\u00E2n c\u00E1ch -->\n @if (button.key === 'line-space') {\n <div\n class=\"bg-[#666b79] w-[1px] h-[28px]\"\n [class]=\"button.classInclude\">\n \n </div>\n }\n </div>\n }\n @if (menuDropDownConfigs(); as menuDropDownConfigs) {\n <div class=\"ml-[12px]\">\n <libs_ui-components-dropdown\n [isNgContent]=\"true\"\n [zIndex]=\"zIndex() + 1\"\n [listConfig]=\"menuDropDownConfigs.listConfig\"\n [listHiddenInputSearch]=\"true\"\n [popoverCustomConfig]=\"menuDropDownConfigs.popoverCustomConfig\"\n (outFunctionsControl)=\"handlerControlDropdownMenu($event)\"\n (outSelectKey)=\"handlerSelectedKey($event)\">\n <libs_ui-components-buttons-button\n [classInclude]=\"'p-[8px]'\"\n [type]=\"'button-third'\"\n [iconOnlyType]=\"true\"\n [classIconLeft]=\"'libs-ui-icon-more-vertical text-[#333333] text-[12px]'\"\n [popover]=\"{\n config: {\n content: 'i18n_4x_other_operations',\n },\n }\"\n [ignoreStopPropagationEvent]=\"true\" />\n </libs_ui-components-dropdown>\n </div>\n }\n @if (templateRight(); as templateRight) {\n <ng-container *ngTemplateOutlet=\"templateRight\" />\n }\n </div>\n </div>\n <div [class]=\"'libs-ui-components-page_full-body ' + classBodyInclude()\">\n <ng-content />\n </div>\n</div>\n", styles: ["@-webkit-keyframes animation-slide-to-left{0%{right:-200px;opacity:0}to{right:12px;opacity:1}}@keyframes animation-slide-to-left{0%{right:-200px;opacity:0}to{right:0;opacity:1}}.libs-ui-components-page_full{position:absolute;width:100vw;height:100vh;left:0;top:0;display:flex;flex-direction:column;animation:animation-slide-to-left ease-out .3s}.libs-ui-components-page_full .libs-ui-components-page_full-header{height:50px;padding:14px 16px;border-bottom:solid 1px #e6e7ea;background-color:#fff;width:100%;display:flex;align-items:center}.libs-ui-components-page_full .libs-ui-components-page_full-body{height:100%}\n"] }]
|
|
113
116
|
}] });
|
|
114
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVsbC1zY3JlZW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL3BhZ2VzLXRlbXBsYXRlL2Z1bGwtc2NyZWVuL3NyYy9mdWxsLXNjcmVlbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvcGFnZXMtdGVtcGxhdGUvZnVsbC1zY3JlZW4vc3JjL2Z1bGwtc2NyZWVuLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsTUFBTSxFQUFlLE1BQU0sZUFBZSxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxzQ0FBc0MsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzVGLE9BQU8sRUFBRSxzQ0FBc0MsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzVGLE9BQU8sRUFBNEQsaUNBQWlDLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzSSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRSxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRSxPQUFPLEVBQWdCLCtCQUErQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFM0YsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdkUsT0FBTyxFQUFFLFFBQVEsRUFBRSxxQkFBcUIsRUFBRSw4QkFBOEIsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2RyxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFcEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixD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R0FoR1UsZ0RBQWdEOzRGQUFoRCxnREFBZ0QsOC9FQUZoRCxFQUFFLDBCQ2pDZiwwaFRBa01BLG1xQkQzS0ksZUFBZSwrQkFDZixnQkFBZ0Isb0pBQ2hCLGlDQUFpQyxpMURBQ2pDLCtCQUErQixxSkFDL0Isc0NBQXNDLHNqQkFDdEMsc0NBQXNDLGtHQUN0QyxnQ0FBZ0MsK2ZBQ2hDLHlCQUF5QixrRUFDekIsOEJBQThCOzs0RkFJckIsZ0RBQWdEO2tCQW5CNUQsU0FBUzsrQkFFRSwrQ0FBK0MsY0FHN0MsSUFBSSxXQUNQO3dCQUNQLGVBQWU7d0JBQ2YsZ0JBQWdCO3dCQUNoQixpQ0FBaUM7d0JBQ2pDLCtCQUErQjt3QkFDL0Isc0NBQXNDO3dCQUN0QyxzQ0FBc0M7d0JBQ3RDLGdDQUFnQzt3QkFDaEMseUJBQXlCO3dCQUN6Qiw4QkFBOEI7cUJBQy9CLGFBQ1UsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBpbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIG91dHB1dCwgc2lnbmFsLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTGlic1VpQ29tcG9uZW50c0J1dHRvbnNCdXR0b25Db21wb25lbnQgfSBmcm9tICdAbGlicy11aS9jb21wb25lbnRzLWJ1dHRvbnMtYnV0dG9uJztcbmltcG9ydCB7IExpYnNVaUNvbXBvbmVudHNCdXR0b25zU3RhdHVzQ29tcG9uZW50IH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1idXR0b25zLXN0YXR1cyc7XG5pbXBvcnQgeyBJRHJvcGRvd24sIElEcm9wZG93bkZ1bmN0aW9uQ29udHJvbEV2ZW50LCBJRW1pdFNlbGVjdEtleSwgTGlic1VpQ29tcG9uZW50c0Ryb3Bkb3duQ29tcG9uZW50IH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1kcm9wZG93bic7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzTGFiZWxDb21wb25lbnQgfSBmcm9tICdAbGlicy11aS9jb21wb25lbnRzLWxhYmVsJztcbmltcG9ydCB7IExpYnNVaUNvbXBvbmVudHNQb3BvdmVyQ29tcG9uZW50IH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1wb3BvdmVyJztcbmltcG9ydCB7IElTd2l0Y2hFdmVudCwgTGlic1VpQ29tcG9uZW50c1N3aXRjaENvbXBvbmVudCB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtc3dpdGNoJztcbmltcG9ydCB7IFRZUEVfVEVNUExBVEVfUkVGIH0gZnJvbSAnQGxpYnMtdWkvaW50ZXJmYWNlcy10eXBlcyc7XG5pbXBvcnQgeyBMaWJzVWlQaXBlc0VzY2FwZUh0bWxQaXBlIH0gZnJvbSAnQGxpYnMtdWkvcGlwZXMtZXNjYXBlLWh0bWwnO1xuaW1wb3J0IHsgZ2V0RGF5anMsIFV0aWxzQ29tbXVuaWNhdGVNaWNybywgVXRpbHNDb21tdW5pY2F0ZU1pY3JvS2V5R2xvYmFsLCB1dWlkIH0gZnJvbSAnQGxpYnMtdWkvdXRpbHMnO1xuaW1wb3J0IHsgRGF5anMgfSBmcm9tICdkYXlqcyc7XG5pbXBvcnQgeyBpbnRlcnZhbCwgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJUGFnZXNUZW1wbGF0ZUZ1bGxTY3JlZW5CdXR0b24gfSBmcm9tICcuL2ludGVyZmFjZXMvY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnbGlic191aS1jb21wb25lbnRzLXBhZ2VzX3RlbXBsYXRlX2Z1bGxfc2NyZWVuJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Z1bGwtc2NyZWVuLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZnVsbC1zY3JlZW4uY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgIExpYnNVaUNvbXBvbmVudHNEcm9wZG93bkNvbXBvbmVudCxcbiAgICBMaWJzVWlDb21wb25lbnRzU3dpdGNoQ29tcG9uZW50LFxuICAgIExpYnNVaUNvbXBvbmVudHNCdXR0b25zQnV0dG9uQ29tcG9uZW50LFxuICAgIExpYnNVaUNvbXBvbmVudHNCdXR0b25zU3RhdHVzQ29tcG9uZW50LFxuICAgIExpYnNVaUNvbXBvbmVudHNQb3BvdmVyQ29tcG9uZW50LFxuICAgIExpYnNVaVBpcGVzRXNjYXBlSHRtbFBpcGUsXG4gICAgTGlic1VpQ29tcG9uZW50c0xhYmVsQ29tcG9uZW50LFxuICBdLFxuICBwcm92aWRlcnM6IFtdLFxufSlcbmV4cG9ydCBjbGFzcyBMaWJzVWlDb21wb25lbnRzUGFnZXNUZW1wbGF0ZUZ1bGxTY3JlZW5Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgaWRPdmVybGF5ID0gc2lnbmFsPHN0cmluZz4odXVpZCgpKTtcbiAgcHJpdmF0ZSBmdW5jdGlvbkNvbnRyb2xNZW51OiBJRHJvcGRvd25GdW5jdGlvbkNvbnRyb2xFdmVudCB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBvbkRlc3Ryb3kgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHJlYWRvbmx5IGNsYXNzSGVhZGVySW5jbHVkZSA9IGlucHV0PHN0cmluZz4oKTtcbiAgcmVhZG9ubHkgbGFiZWxMZWZ0ID0gaW5wdXQ8c3RyaW5nLCBzdHJpbmcgfCB1bmRlZmluZWQ+KCdpMThuX2JhY2tfdG9fbGlzdCcsIHsgdHJhbnNmb3JtOiAodmFsKSA9PiB2YWwgPz8gJ2kxOG5fYmFja190b19saXN0JyB9KTtcbiAgcmVhZG9ubHkgY2xhc3NCb2R5SW5jbHVkZSA9IGlucHV0PHN0cmluZz4oKTtcbiAgcmVhZG9ubHkgdGl0bGUgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIHJlYWRvbmx5IGJ1dHRvbkNlbnRlciA9IGlucHV0PEFycmF5PElQYWdlc1RlbXBsYXRlRnVsbFNjcmVlbkJ1dHRvbj4gfCB1bmRlZmluZWQ+KCk7XG4gIHJlYWRvbmx5IGJ1dHRvblJpZ2h0ID0gaW5wdXQ8QXJyYXk8SVBhZ2VzVGVtcGxhdGVGdWxsU2NyZWVuQnV0dG9uPj4oKTtcbiAgcmVhZG9ubHkgaGFzRWRpdCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgbWVudURyb3BEb3duQ29uZmlncyA9IGlucHV0PElEcm9wZG93bj4oKTtcbiAgcmVhZG9ubHkgekluZGV4ID0gaW5wdXQ8bnVtYmVyLCBudW1iZXIgfCB1bmRlZmluZWQ+KDEwMDAsIHsgdHJhbnNmb3JtOiAodmFsKSA9PiB2YWwgPz8gMTAwMCB9KTtcbiAgcmVhZG9ubHkgaWdub3JlQ2xvc2VQYWdlRnVsbEV2ZW50ID0gaW5wdXQ8Ym9vbGVhbiwgYm9vbGVhbiB8IHVuZGVmaW5lZD4oZmFsc2UsIHsgdHJhbnNmb3JtOiAodmFsKSA9PiB2YWwgPz8gZmFsc2UgfSk7XG4gIHJlYWRvbmx5IGlnbm9yZUJhY2tncm91bmRDb2xvciA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IGRpdmlkZUNsYXNzSGVhZGVyID0gaW5wdXQ8eyBjbGFzc0J1dHRvbkNhbmNlbDogc3RyaW5nOyBjbGFzc0J1dHRvbkNlbnRlcjogc3RyaW5nOyBjbGFzc0J1dHRvblJpZ2h0OiBzdHJpbmcgfSB8IHVuZGVmaW5lZD4oKTtcbiAgcmVhZG9ubHkgY2VudGVyVGVtcGxhdGUgPSBpbnB1dDxUZW1wbGF0ZVJlZjxUWVBFX1RFTVBMQVRFX1JFRj4gfCB1bmRlZmluZWQ+KCk7XG4gIHJlYWRvbmx5IHRlbXBsYXRlUmlnaHQgPSBpbnB1dDxUZW1wbGF0ZVJlZjxUWVBFX1RFTVBMQVRFX1JFRj4gfCB1bmRlZmluZWQ+KCk7XG4gIHJlYWRvbmx5IGxlZnRUZW1wbGF0ZSA9IGlucHV0PFRlbXBsYXRlUmVmPFRZUEVfVEVNUExBVEVfUkVGPiB8IHVuZGVmaW5lZD4oKTtcbiAgcmVhZG9ubHkgZGlzYWJsZSA9IGlucHV0PGJvb2xlYW4sIGJvb2xlYW4gfCB1bmRlZmluZWQ+KGZhbHNlLCB7IHRyYW5zZm9ybTogKHZhbCkgPT4gdmFsID8/IGZhbHNlIH0pO1xuXG4gIHJlYWRvbmx5IG91dENsb3NlID0gb3V0cHV0PHZvaWQ+KCk7XG4gIHJlYWRvbmx5IG91dEVkaXQgPSBvdXRwdXQ8dm9pZD4oKTtcbiAgcmVhZG9ubHkgb3V0U2VsZWN0ZWRNZW51RHJvcGRvd24gPSBvdXRwdXQ8SUVtaXRTZWxlY3RLZXkgfCB1bmRlZmluZWQ+KCk7XG4gIHJlYWRvbmx5IG91dENsaWNrQnV0dG9uID0gb3V0cHV0PElQYWdlc1RlbXBsYXRlRnVsbFNjcmVlbkJ1dHRvbj4oKTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaWdub3JlQ2xvc2VQYWdlRnVsbEV2ZW50KCkpIHtcbiAgICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICAgIHR5cGU6IFV0aWxzQ29tbXVuaWNhdGVNaWNyb0tleUdsb2JhbC5LRVlfTUVTU0FHRV9NT0RBTCxcbiAgICAgICAgcmVzcG9uc2U6IHtcbiAgICAgICAgICBtZXNzYWdlOiAnb3BlbicsXG4gICAgICAgICAgc3RhdGU6IHRydWUsXG4gICAgICAgICAgaWRPdmVybGF5OiB0aGlzLmlkT3ZlcmxheSgpLFxuICAgICAgICAgIHRpbWVMaXZlVXBkYXRlOiBnZXREYXlqcygpLnVuaXgoKSxcbiAgICAgICAgfSxcbiAgICAgIH07XG5cbiAgICAgIFV0aWxzQ29tbXVuaWNhdGVNaWNyby5Qb3N0TWVzc2FnZVRvUGFyZW50KGRhdGEpO1xuXG4gICAgICBpbnRlcnZhbCgyMDAwKVxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kpKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICBkYXRhLnJlc3BvbnNlLnRpbWVMaXZlVXBkYXRlID0gZ2V0RGF5anMoKS51bml4KCk7XG5cbiAgICAgICAgICBVdGlsc0NvbW11bmljYXRlTWljcm8uUG9zdE1lc3NhZ2VUb1BhcmVudChkYXRhKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZXJFZGl0KCkge1xuICAgIHRoaXMub3V0RWRpdC5lbWl0KCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY2FuY2VsKCkge1xuICAgIHRoaXMub3V0Q2xvc2UuZW1pdCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZXJDbGlja0J1dHRvbihidXR0b246IElQYWdlc1RlbXBsYXRlRnVsbFNjcmVlbkJ1dHRvbikge1xuICAgIGlmIChidXR0b24gJiYgYnV0dG9uLmFjdGlvbikge1xuICAgICAgYXdhaXQgYnV0dG9uLmFjdGlvbigpO1xuICAgIH1cbiAgICB0aGlzLm91dENsaWNrQnV0dG9uLmVtaXQoYnV0dG9uKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVyU3dpdGNoKGV2ZW50OiBJU3dpdGNoRXZlbnQsIGJ1dHRvbjogSVBhZ2VzVGVtcGxhdGVGdWxsU2NyZWVuQnV0dG9uKSB7XG4gICAgaWYgKGJ1dHRvbiAmJiBidXR0b24uYWN0aW9uKSB7XG4gICAgICBhd2FpdCBidXR0b24uYWN0aW9uKGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlclNlbGVjdGVkS2V5KGV2ZW50OiBJRW1pdFNlbGVjdEtleSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMub3V0U2VsZWN0ZWRNZW51RHJvcGRvd24uZW1pdChldmVudCk7XG4gICAgdGhpcy5mdW5jdGlvbkNvbnRyb2xNZW51Py5yZXNldCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZXJDb250cm9sRHJvcGRvd25NZW51KGV2ZW50OiBJRHJvcGRvd25GdW5jdGlvbkNvbnRyb2xFdmVudCkge1xuICAgIHRoaXMuZnVuY3Rpb25Db250cm9sTWVudSA9IGV2ZW50O1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5vbkRlc3Ryb3kubmV4dCgpO1xuICAgIHRoaXMub25EZXN0cm95LmNvbXBsZXRlKCk7XG4gICAgaWYgKCF0aGlzLmlnbm9yZUNsb3NlUGFnZUZ1bGxFdmVudCgpKSB7XG4gICAgICBjb25zdCBkYXRhID0ge1xuICAgICAgICB0eXBlOiBVdGlsc0NvbW11bmljYXRlTWljcm9LZXlHbG9iYWwuS0VZX01FU1NBR0VfTU9EQUwsXG4gICAgICAgIHJlc3BvbnNlOiB7XG4gICAgICAgICAgbWVzc2FnZTogJ2Nsb3NlJyxcbiAgICAgICAgICBzdGF0ZTogZmFsc2UsXG4gICAgICAgICAgaWRPdmVybGF5OiB0aGlzLmlkT3ZlcmxheSgpLFxuICAgICAgICB9LFxuICAgICAgfTtcblxuICAgICAgVXRpbHNDb21tdW5pY2F0ZU1pY3JvLlBvc3RNZXNzYWdlVG9QYXJlbnQoZGF0YSk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwibGlicy11aS1jb21wb25lbnRzLXBhZ2VfZnVsbCBvdmVyZmxvdy1oaWRkZW5cIlxuICBbc3R5bGUuekluZGV4XT1cInpJbmRleCgpXCJcbiAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiaWdub3JlQmFja2dyb3VuZENvbG9yKCkgPyAndHJhbnNwYXJlbnQnIDogJyNmMmY1ZjcnXCI+XG4gIDxkaXYgW2NsYXNzXT1cIidsaWJzLXVpLWNvbXBvbmVudHMtcGFnZV9mdWxsLWhlYWRlciAnICsgY2xhc3NIZWFkZXJJbmNsdWRlKClcIj5cbiAgICA8ZGl2IGNsYXNzPVwie3sgZGl2aWRlQ2xhc3NIZWFkZXIoKT8uY2xhc3NCdXR0b25DYW5jZWwgfHwgJ3ctWzI1JV0nIH19XCI+XG4gICAgICBAaWYgKGxlZnRUZW1wbGF0ZSgpOyBhcyBsZWZ0VGVtcGxhdGUpIHtcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxlZnRUZW1wbGF0ZVwiIC8+XG4gICAgICB9XG4gICAgICBAaWYgKGxhYmVsTGVmdCgpOyBhcyBsYWJlbExlZnQpIHtcbiAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1idXR0b25zLWJ1dHRvblxuICAgICAgICAgIFtsYWJlbF09XCJsYWJlbExlZnRcIlxuICAgICAgICAgIFt0eXBlXT1cIididXR0b24tbGluay1wcmltYXJ5J1wiXG4gICAgICAgICAgW2NsYXNzSWNvbkxlZnRdPVwiJ2xpYnMtdWktaWNvbi1jaGV2cm9uLXJpZ2h0IHJvdGF0ZS1bMTgwZGVnXSBiZWZvcmU6dGV4dC1bMTZweF0nXCJcbiAgICAgICAgICBbY2xhc3NMYWJlbF09XCInbGlicy11aS1mb250LWg0cidcIlxuICAgICAgICAgIChvdXRDbGljayk9XCJjYW5jZWwoKVwiIC8+XG4gICAgICB9XG4gICAgPC9kaXY+XG5cbiAgICBAaWYgKGNlbnRlclRlbXBsYXRlKCk7IGFzIGNlbnRlclRlbXBsYXRlKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwie3sgZGl2aWRlQ2xhc3NIZWFkZXIoKT8uY2xhc3NCdXR0b25DZW50ZXIgfHwgJ3ctWzQwJV0nIH19IGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjZW50ZXJUZW1wbGF0ZVwiIC8+XG4gICAgICA8L2Rpdj5cbiAgICB9IEBlbHNlIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJ7eyBkaXZpZGVDbGFzc0hlYWRlcigpPy5jbGFzc0J1dHRvbkNlbnRlciB8fCAndy1bNDAlXScgfX0gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1wb3BvdmVyXG4gICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgIFtjb25maWddPVwie1xuICAgICAgICAgICAgbWF4V2lkdGg6IDI1MCxcbiAgICAgICAgICAgIHpJbmRleDogekluZGV4KCkgKyAxLFxuICAgICAgICAgIH1cIlxuICAgICAgICAgIFtjbGFzc0luY2x1ZGVdPVwiJ2xpYnMtdWktZm9udC1oMnMnXCJcbiAgICAgICAgICBbaW5uZXJIdG1sXT1cInRpdGxlKCkgPyAodGl0bGUoKSB8IExpYnNVaVBpcGVzRXNjYXBlSHRtbFBpcGUpIDogJyZtZGFzaDsnXCIgLz5cblxuICAgICAgICBAaWYgKGhhc0VkaXQoKTsgYXMgaGFzRWRpdCkge1xuICAgICAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtYnV0dG9ucy1idXR0b25cbiAgICAgICAgICAgIFt0eXBlXT1cIididXR0b24tbGluay1wcmltYXJ5J1wiXG4gICAgICAgICAgICAob3V0Q2xpY2spPVwiaGFuZGxlckVkaXQoKVwiXG4gICAgICAgICAgICBbaWNvbk9ubHlUeXBlXT1cInRydWVcIlxuICAgICAgICAgICAgW2NsYXNzSWNvbkxlZnRdPVwiJ2xpYnMtdWktaWNvbi1lZGl0LWxpbmUnXCJcbiAgICAgICAgICAgIFtjbGFzc0luY2x1ZGVdPVwiJ21sLVs0cHhdJ1wiIC8+XG4gICAgICAgIH1cbiAgICAgICAgQGZvciAoYnV0dG9uIG9mIGJ1dHRvbkNlbnRlcigpOyB0cmFjayBidXR0b24ua2V5KSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1sLVsxMnB4XSBmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgQGlmIChidXR0b24ua2V5ID09PSAnYnV0dG9uJykge1xuICAgICAgICAgICAgICA8bGlic191aS1jb21wb25lbnRzLWJ1dHRvbnMtYnV0dG9uXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cImJ1dHRvbi5sYWJlbCB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgW2NsYXNzTGFiZWxdPVwiKGJ1dHRvbi5jbGFzc0xhYmVsIHx8ICcnKSArICcgbGlicy11aS1mb250LWhlYWQtNHMnXCJcbiAgICAgICAgICAgICAgICBbdHlwZV09XCJidXR0b24udHlwZSB8fCAnYnV0dG9uLXByaW1hcnknXCJcbiAgICAgICAgICAgICAgICBbY2xhc3NJbmNsdWRlXT1cImJ1dHRvbi5jbGFzc0luY2x1ZGUgfHwgJydcIlxuICAgICAgICAgICAgICAgIFtjbGFzc0ljb25MZWZ0XT1cImJ1dHRvbi5jbGFzc0ljb25MZWZ0IHx8ICcnXCJcbiAgICAgICAgICAgICAgICBbY2xhc3NJY29uUmlnaHRdPVwiYnV0dG9uLmNsYXNzSWNvblJpZ2h0IHx8ICcnXCJcbiAgICAgICAgICAgICAgICBbcG9wb3Zlcl09XCJidXR0b24ucG9wb3ZlciB8fCB7fVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVdPVwiYnV0dG9uLmRpc2FibGUgfHwgZGlzYWJsZSgpXCJcbiAgICAgICAgICAgICAgICBbaXNQZW5kaW5nXT1cImJ1dHRvbi5pc1BlbmRpbmcgfHwgZmFsc2VcIlxuICAgICAgICAgICAgICAgIChvdXRDbGljayk9XCJoYW5kbGVyQ2xpY2tCdXR0b24oYnV0dG9uKVwiIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKGJ1dHRvbi5rZXkgPT09ICdidXR0b24tc3RhdHVzJyAmJiBidXR0b24uY29uZmlnQnV0dG9uU3RhdHVzKSB7XG4gICAgICAgICAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtYnV0dG9ucy1zdGF0dXNcbiAgICAgICAgICAgICAgICBbY2xhc3NdPVwiYnV0dG9uLmNsYXNzSW5jbHVkZVwiXG4gICAgICAgICAgICAgICAgW2NvbmZpZ109XCJidXR0b24uY29uZmlnQnV0dG9uU3RhdHVzXCIgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoYnV0dG9uLmtleSA9PT0gJ3N3aXRjaCcpIHtcbiAgICAgICAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1zd2l0Y2hcbiAgICAgICAgICAgICAgICBbYWN0aXZlXT1cImJ1dHRvbi5hY3RpdmUgfHwgZmFsc2VcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlXT1cImJ1dHRvbi5kaXNhYmxlIHx8IGRpc2FibGUoKVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ7eyBidXR0b24uY2xhc3NJbmNsdWRlIH19XCJcbiAgICAgICAgICAgICAgICAob3V0U3dpdGNoKT1cImhhbmRsZXJTd2l0Y2goJGV2ZW50LCBidXR0b24pXCIgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoYnV0dG9uLmtleSA9PT0gJ2xhYmVsJyAmJiBidXR0b24ubGFiZWxDb25maWcpIHtcbiAgICAgICAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1sYWJlbFxuICAgICAgICAgICAgICAgIFtjbGFzc0luY2x1ZGVdPVwiYnV0dG9uLmxhYmVsQ29uZmlnLmNsYXNzSW5jbHVkZSArICcgcGItMCB0ZXh0LXdoaXRlJ1wiXG4gICAgICAgICAgICAgICAgW2xhYmVsTGVmdF09XCJidXR0b24ubGFiZWxDb25maWcubGFiZWxMZWZ0XCJcbiAgICAgICAgICAgICAgICBbbGFiZWxMZWZ0Q2xhc3NdPVwiYnV0dG9uLmxhYmVsQ29uZmlnLmxhYmVsTGVmdENsYXNzXCJcbiAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwiYnV0dG9uLmxhYmVsQ29uZmlnLnJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgICBbZGVzY3JpcHRpb25dPVwiYnV0dG9uLmxhYmVsQ29uZmlnLmRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICBbbGFiZWxSaWdodF09XCJidXR0b24ubGFiZWxDb25maWcubGFiZWxSaWdodFwiXG4gICAgICAgICAgICAgICAgW2xhYmVsUmlnaHRDbGFzc109XCJidXR0b24ubGFiZWxDb25maWcubGFiZWxSaWdodENsYXNzXCJcbiAgICAgICAgICAgICAgICBbb25seVNob3dDb3VudF09XCJidXR0b24ubGFiZWxDb25maWcub25seVNob3dDb3VudFwiXG4gICAgICAgICAgICAgICAgW2J1dHRvbnNMZWZ0XT1cImJ1dHRvbi5sYWJlbENvbmZpZy5idXR0b25zTGVmdFwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVCdXR0b25zTGVmdF09XCJidXR0b24ubGFiZWxDb25maWcuZGlzYWJsZUJ1dHRvbnNMZWZ0XCJcbiAgICAgICAgICAgICAgICBbYnV0dG9uc1JpZ2h0XT1cImJ1dHRvbi5sYWJlbENvbmZpZy5idXR0b25zUmlnaHRcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlQnV0dG9uc1JpZ2h0XT1cImJ1dHRvbi5sYWJlbENvbmZpZy5kaXNhYmxlQnV0dG9uc1JpZ2h0XCJcbiAgICAgICAgICAgICAgICBbaGFzVG9nZ2xlXT1cImJ1dHRvbi5sYWJlbENvbmZpZy5oYXNUb2dnbGVcIlxuICAgICAgICAgICAgICAgIFt0b2dnbGVBY3RpdmVdPVwiYnV0dG9uLmxhYmVsQ29uZmlnLnRvZ2dsZUFjdGl2ZVwiXG4gICAgICAgICAgICAgICAgW3RvZ2dsZURpc2FibGVdPVwiYnV0dG9uLmxhYmVsQ29uZmlnLnRvZ2dsZURpc2FibGVcIlxuICAgICAgICAgICAgICAgIFtwb3BvdmVyXT1cImJ1dHRvbi5sYWJlbENvbmZpZy5wb3BvdmVyXCJcbiAgICAgICAgICAgICAgICBbaWNvblBvcG92ZXJDbGFzc109XCJidXR0b24ubGFiZWxDb25maWcuaWNvblBvcG92ZXJDbGFzc1wiXG4gICAgICAgICAgICAgICAgW29ubHlTaG93Q291bnRdPVwiYnV0dG9uLmxhYmVsQ29uZmlnLm9ubHlTaG93Q291bnRcIlxuICAgICAgICAgICAgICAgIFtsaW1pdExlbmd0aF09XCJidXR0b24ubGFiZWxDb25maWcubGltaXRMZW5ndGhcIlxuICAgICAgICAgICAgICAgIFtidXR0b25zRGVzY3JpcHRpb25dPVwiYnV0dG9uLmxhYmVsQ29uZmlnLmJ1dHRvbnNEZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVCdXR0b25zRGVzY3JpcHRpb25dPVwiYnV0dG9uLmxhYmVsQ29uZmlnLmRpc2FibGVCdXR0b25zRGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgIFtidXR0b25zRGVzY3JpcHRpb25Db250YWluZXJDbGFzc109XCJidXR0b24ubGFiZWxDb25maWcuYnV0dG9uc0Rlc2NyaXB0aW9uQ29udGFpbmVyQ2xhc3NcIlxuICAgICAgICAgICAgICAgIFtjb3VudF09XCJidXR0b24ubGFiZWxDb25maWcuY291bnRcIiAvPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICB9XG5cbiAgICA8ZGl2IGNsYXNzPVwie3sgZGl2aWRlQ2xhc3NIZWFkZXIoKT8uY2xhc3NCdXR0b25SaWdodCB8fCAndy1bMzUlXScgfX0gZmxleCBqdXN0aWZ5LWVuZCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgIEBmb3IgKGJ1dHRvbiBvZiBidXR0b25SaWdodCgpOyB0cmFjayBidXR0b24ua2V5KSB7XG4gICAgICAgIDxkaXYgW2NsYXNzLm1sLVsxMnB4XV09XCIhJGZpcnN0XCI+XG4gICAgICAgICAgQGlmIChidXR0b24ua2V5ID09PSAnbGFiZWwnICYmIGJ1dHRvbi5sYWJlbENvbmZpZykge1xuICAgICAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1sYWJlbFxuICAgICAgICAgICAgICBbY2xhc3NJbmNsdWRlXT1cImJ1dHRvbi5sYWJlbENvbmZpZy5jbGFzc0luY2x1ZGUgKyAnIHBiLTAnXCJcbiAgICAgICAgICAgICAgW2xhYmVsTGVmdF09XCJidXR0b24ubGFiZWxDb25maWcubGFiZWxMZWZ0XCJcbiAgICAgICAgICAgICAgW2xhYmVsTGVmdENsYXNzXT1cImJ1dHRvbi5sYWJlbENvbmZpZy5sYWJlbExlZnRDbGFzc1wiXG4gICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJidXR0b24ubGFiZWxDb25maWcucmVxdWlyZWRcIlxuICAgICAgICAgICAgICBbZGVzY3JpcHRpb25dPVwiYnV0dG9uLmxhYmVsQ29uZmlnLmRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgW2xhYmVsUmlnaHRdPVwiYnV0dG9uLmxhYmVsQ29uZmlnLmxhYmVsUmlnaHRcIlxuICAgICAgICAgICAgICBbbGFiZWxSaWdodENsYXNzXT1cImJ1dHRvbi5sYWJlbENvbmZpZy5sYWJlbFJpZ2h0Q2xhc3NcIlxuICAgICAgICAgICAgICBbb25seVNob3dDb3VudF09XCJidXR0b24ubGFiZWxDb25maWcub25seVNob3dDb3VudFwiXG4gICAgICAgICAgICAgIFtidXR0b25zTGVmdF09XCJidXR0b24ubGFiZWxDb25maWcuYnV0dG9uc0xlZnRcIlxuICAgICAgICAgICAgICBbZGlzYWJsZUJ1dHRvbnNMZWZ0XT1cImJ1dHRvbi5sYWJlbENvbmZpZy5kaXNhYmxlQnV0dG9uc0xlZnRcIlxuICAgICAgICAgICAgICBbYnV0dG9uc1JpZ2h0XT1cImJ1dHRvbi5sYWJlbENvbmZpZy5idXR0b25zUmlnaHRcIlxuICAgICAgICAgICAgICBbZGlzYWJsZUJ1dHRvbnNSaWdodF09XCJidXR0b24ubGFiZWxDb25maWcuZGlzYWJsZUJ1dHRvbnNSaWdodFwiXG4gICAgICAgICAgICAgIFtoYXNUb2dnbGVdPVwiYnV0dG9uLmxhYmVsQ29uZmlnLmhhc1RvZ2dsZVwiXG4gICAgICAgICAgICAgIFt0b2dnbGVBY3RpdmVdPVwiYnV0dG9uLmxhYmVsQ29uZmlnLnRvZ2dsZUFjdGl2ZVwiXG4gICAgICAgICAgICAgIFt0b2dnbGVEaXNhYmxlXT1cImJ1dHRvbi5sYWJlbENvbmZpZy50b2dnbGVEaXNhYmxlXCJcbiAgICAgICAgICAgICAgW3BvcG92ZXJdPVwiYnV0dG9uLmxhYmVsQ29uZmlnLnBvcG92ZXJcIlxuICAgICAgICAgICAgICBbaWNvblBvcG92ZXJDbGFzc109XCJidXR0b24ubGFiZWxDb25maWcuaWNvblBvcG92ZXJDbGFzc1wiXG4gICAgICAgICAgICAgIFtvbmx5U2hvd0NvdW50XT1cImJ1dHRvbi5sYWJlbENvbmZpZy5vbmx5U2hvd0NvdW50XCJcbiAgICAgICAgICAgICAgW2xpbWl0TGVuZ3RoXT1cImJ1dHRvbi5sYWJlbENvbmZpZy5saW1pdExlbmd0aFwiXG4gICAgICAgICAgICAgIFtidXR0b25zRGVzY3JpcHRpb25dPVwiYnV0dG9uLmxhYmVsQ29uZmlnLmJ1dHRvbnNEZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlQnV0dG9uc0Rlc2NyaXB0aW9uXT1cImJ1dHRvbi5sYWJlbENvbmZpZy5kaXNhYmxlQnV0dG9uc0Rlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgW2J1dHRvbnNEZXNjcmlwdGlvbkNvbnRhaW5lckNsYXNzXT1cImJ1dHRvbi5sYWJlbENvbmZpZy5idXR0b25zRGVzY3JpcHRpb25Db250YWluZXJDbGFzc1wiXG4gICAgICAgICAgICAgIFtjb3VudF09XCJidXR0b24ubGFiZWxDb25maWcuY291bnRcIiAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKGJ1dHRvbi5rZXkgPT09ICdzd2l0Y2gnKSB7XG4gICAgICAgICAgICA8bGlic191aS1jb21wb25lbnRzLXN3aXRjaFxuICAgICAgICAgICAgICBbYWN0aXZlXT1cImJ1dHRvbi5hY3RpdmUgfHwgZmFsc2VcIlxuICAgICAgICAgICAgICBbZGlzYWJsZV09XCJidXR0b24uZGlzYWJsZSB8fCBkaXNhYmxlKClcIlxuICAgICAgICAgICAgICBjbGFzcz1cInt7IGJ1dHRvbi5jbGFzc0luY2x1ZGUgfX1cIlxuICAgICAgICAgICAgICAob3V0U3dpdGNoKT1cImhhbmRsZXJTd2l0Y2goJGV2ZW50LCBidXR0b24pXCIgLz5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAaWYgKGJ1dHRvbi5rZXkgPT09ICdidXR0b24nKSB7XG4gICAgICAgICAgICA8bGlic191aS1jb21wb25lbnRzLWJ1dHRvbnMtYnV0dG9uXG4gICAgICAgICAgICAgIFtsYWJlbF09XCJidXR0b24/LmxhYmVsIHx8ICcnXCJcbiAgICAgICAgICAgICAgW2NsYXNzTGFiZWxdPVwiKGJ1dHRvbi5jbGFzc0xhYmVsIHx8ICcnKSArICcgbGlicy11aS1mb250LWg0cydcIlxuICAgICAgICAgICAgICBbdHlwZV09XCJidXR0b24udHlwZSB8fCAnYnV0dG9uLXByaW1hcnknXCJcbiAgICAgICAgICAgICAgW2NsYXNzSW5jbHVkZV09XCJidXR0b24uY2xhc3NJbmNsdWRlIHx8ICcnXCJcbiAgICAgICAgICAgICAgW2NsYXNzSWNvbkxlZnRdPVwiYnV0dG9uLmNsYXNzSWNvbkxlZnQgfHwgJydcIlxuICAgICAgICAgICAgICBbY2xhc3NJY29uUmlnaHRdPVwiYnV0dG9uLmNsYXNzSWNvblJpZ2h0IHx8ICcnXCJcbiAgICAgICAgICAgICAgW3BvcG92ZXJdPVwiYnV0dG9uLnBvcG92ZXIgfHwge31cIlxuICAgICAgICAgICAgICBbZGlzYWJsZV09XCJidXR0b24uZGlzYWJsZSB8fCBkaXNhYmxlKClcIlxuICAgICAgICAgICAgICBbaXNQZW5kaW5nXT1cImJ1dHRvbi5pc1BlbmRpbmcgfHwgZmFsc2VcIlxuICAgICAgICAgICAgICBbaWNvbk9ubHlUeXBlXT1cImJ1dHRvbi5pY29uT25seVR5cGUgfHwgZmFsc2VcIlxuICAgICAgICAgICAgICAob3V0Q2xpY2spPVwiaGFuZGxlckNsaWNrQnV0dG9uKGJ1dHRvbilcIiAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICA8IS0tICB0aMOqbSDEkcaw4budbmcgcGjDom4gY8OhY2ggLS0+XG4gICAgICAgICAgQGlmIChidXR0b24ua2V5ID09PSAnbGluZS1zcGFjZScpIHtcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJiZy1bIzY2NmI3OV0gdy1bMXB4XSBoLVsyOHB4XVwiXG4gICAgICAgICAgICAgIFtjbGFzc109XCJidXR0b24uY2xhc3NJbmNsdWRlXCI+XG4gICAgICAgICAgICAgICZuYnNwO1xuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICAgIEBpZiAobWVudURyb3BEb3duQ29uZmlncygpOyBhcyBtZW51RHJvcERvd25Db25maWdzKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtbC1bMTJweF1cIj5cbiAgICAgICAgICA8bGlic191aS1jb21wb25lbnRzLWRyb3Bkb3duXG4gICAgICAgICAgICBbaXNOZ0NvbnRlbnRdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbekluZGV4XT1cInpJbmRleCgpICsgMVwiXG4gICAgICAgICAgICBbbGlzdENvbmZpZ109XCJtZW51RHJvcERvd25Db25maWdzLmxpc3RDb25maWdcIlxuICAgICAgICAgICAgW2xpc3RIaWRkZW5JbnB1dFNlYXJjaF09XCJ0cnVlXCJcbiAgICAgICAgICAgIFtwb3BvdmVyQ3VzdG9tQ29uZmlnXT1cIm1lbnVEcm9wRG93bkNvbmZpZ3MucG9wb3ZlckN1c3RvbUNvbmZpZ1wiXG4gICAgICAgICAgICAob3V0RnVuY3Rpb25zQ29udHJvbCk9XCJoYW5kbGVyQ29udHJvbERyb3Bkb3duTWVudSgkZXZlbnQpXCJcbiAgICAgICAgICAgIChvdXRTZWxlY3RLZXkpPVwiaGFuZGxlclNlbGVjdGVkS2V5KCRldmVudClcIj5cbiAgICAgICAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtYnV0dG9ucy1idXR0b25cbiAgICAgICAgICAgICAgW2NsYXNzSW5jbHVkZV09XCIncC1bOHB4XSdcIlxuICAgICAgICAgICAgICBbdHlwZV09XCInYnV0dG9uLXRoaXJkJ1wiXG4gICAgICAgICAgICAgIFtpY29uT25seVR5cGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIFtjbGFzc0ljb25MZWZ0XT1cIidsaWJzLXVpLWljb24tbW9yZS12ZXJ0aWNhbCB0ZXh0LVsjMzMzMzMzXSB0ZXh0LVsxMnB4XSdcIlxuICAgICAgICAgICAgICBbcG9wb3Zlcl09XCJ7XG4gICAgICAgICAgICAgICAgY29uZmlnOiB7XG4gICAgICAgICAgICAgICAgICBjb250ZW50OiAnaTE4bl80eF9vdGhlcl9vcGVyYXRpb25zJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgW2lnbm9yZVN0b3BQcm9wYWdhdGlvbkV2ZW50XT1cInRydWVcIiAvPlxuICAgICAgICAgIDwvbGlic191aS1jb21wb25lbnRzLWRyb3Bkb3duPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICAgIEBpZiAodGVtcGxhdGVSaWdodCgpOyBhcyB0ZW1wbGF0ZVJpZ2h0KSB7XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZVJpZ2h0XCIgLz5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgW2NsYXNzXT1cIidsaWJzLXVpLWNvbXBvbmVudHMtcGFnZV9mdWxsLWJvZHkgJyArIGNsYXNzQm9keUluY2x1ZGUoKVwiPlxuICAgIDxuZy1jb250ZW50IC8+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
117
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVsbC1zY3JlZW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL3BhZ2VzLXRlbXBsYXRlL2Z1bGwtc2NyZWVuL3NyYy9mdWxsLXNjcmVlbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvcGFnZXMtdGVtcGxhdGUvZnVsbC1zY3JlZW4vc3JjL2Z1bGwtc2NyZWVuLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsTUFBTSxFQUFlLE1BQU0sZUFBZSxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxzQ0FBc0MsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzVGLE9BQU8sRUFBRSxzQ0FBc0MsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzVGLE9BQU8sRUFBNEQsaUNBQWlDLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzSSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRSxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRSxPQUFPLEVBQWdCLCtCQUErQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFM0YsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdkUsT0FBTyxFQUFFLFFBQVEsRUFBRSxxQkFBcUIsRUFBRSw4QkFBOEIsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxD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cUJBQXFCLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEQsQ0FBQztJQUNILENBQUM7d0dBcEdVLGdEQUFnRDs0RkFBaEQsZ0RBQWdELDgvRUFGaEQsRUFBRSwwQkNoQ2YsMGhUQWtNQSxtcUJENUtJLGVBQWUsK0JBQ2YsZ0JBQWdCLG9KQUNoQixpQ0FBaUMsaTFEQUNqQywrQkFBK0IscUpBQy9CLHNDQUFzQyxzakJBQ3RDLHNDQUFzQyxrR0FDdEMsZ0NBQWdDLCtmQUNoQyx5QkFBeUIsa0VBQ3pCLDhCQUE4Qjs7NEZBSXJCLGdEQUFnRDtrQkFuQjVELFNBQVM7K0JBRUUsK0NBQStDLGNBRzdDLElBQUksV0FDUDt3QkFDUCxlQUFlO3dCQUNmLGdCQUFnQjt3QkFDaEIsaUNBQWlDO3dCQUNqQywrQkFBK0I7d0JBQy9CLHNDQUFzQzt3QkFDdEMsc0NBQXNDO3dCQUN0QyxnQ0FBZ0M7d0JBQ2hDLHlCQUF5Qjt3QkFDekIsOEJBQThCO3FCQUMvQixhQUNVLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgaW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBvdXRwdXQsIHNpZ25hbCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExpYnNVaUNvbXBvbmVudHNCdXR0b25zQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1idXR0b25zLWJ1dHRvbic7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzQnV0dG9uc1N0YXR1c0NvbXBvbmVudCB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtYnV0dG9ucy1zdGF0dXMnO1xuaW1wb3J0IHsgSURyb3Bkb3duLCBJRHJvcGRvd25GdW5jdGlvbkNvbnRyb2xFdmVudCwgSUVtaXRTZWxlY3RLZXksIExpYnNVaUNvbXBvbmVudHNEcm9wZG93bkNvbXBvbmVudCB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtZHJvcGRvd24nO1xuaW1wb3J0IHsgTGlic1VpQ29tcG9uZW50c0xhYmVsQ29tcG9uZW50IH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1sYWJlbCc7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzUG9wb3ZlckNvbXBvbmVudCB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtcG9wb3Zlcic7XG5pbXBvcnQgeyBJU3dpdGNoRXZlbnQsIExpYnNVaUNvbXBvbmVudHNTd2l0Y2hDb21wb25lbnQgfSBmcm9tICdAbGlicy11aS9jb21wb25lbnRzLXN3aXRjaCc7XG5pbXBvcnQgeyBUWVBFX1RFTVBMQVRFX1JFRiB9IGZyb20gJ0BsaWJzLXVpL2ludGVyZmFjZXMtdHlwZXMnO1xuaW1wb3J0IHsgTGlic1VpUGlwZXNFc2NhcGVIdG1sUGlwZSB9IGZyb20gJ0BsaWJzLXVpL3BpcGVzLWVzY2FwZS1odG1sJztcbmltcG9ydCB7IGdldERheWpzLCBVdGlsc0NvbW11bmljYXRlTWljcm8sIFV0aWxzQ29tbXVuaWNhdGVNaWNyb0tleUdsb2JhbCwgdXVpZCB9IGZyb20gJ0BsaWJzLXVpL3V0aWxzJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgaW50ZXJ2YWwsIFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSVBhZ2VzVGVtcGxhdGVGdWxsU2NyZWVuQnV0dG9uIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2NvbmZpZy5pbnRlcmZhY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdsaWJzX3VpLWNvbXBvbmVudHMtcGFnZXNfdGVtcGxhdGVfZnVsbF9zY3JlZW4nLFxuICB0ZW1wbGF0ZVVybDogJy4vZnVsbC1zY3JlZW4uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mdWxsLXNjcmVlbi5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgTGlic1VpQ29tcG9uZW50c0Ryb3Bkb3duQ29tcG9uZW50LFxuICAgIExpYnNVaUNvbXBvbmVudHNTd2l0Y2hDb21wb25lbnQsXG4gICAgTGlic1VpQ29tcG9uZW50c0J1dHRvbnNCdXR0b25Db21wb25lbnQsXG4gICAgTGlic1VpQ29tcG9uZW50c0J1dHRvbnNTdGF0dXNDb21wb25lbnQsXG4gICAgTGlic1VpQ29tcG9uZW50c1BvcG92ZXJDb21wb25lbnQsXG4gICAgTGlic1VpUGlwZXNFc2NhcGVIdG1sUGlwZSxcbiAgICBMaWJzVWlDb21wb25lbnRzTGFiZWxDb21wb25lbnQsXG4gIF0sXG4gIHByb3ZpZGVyczogW10sXG59KVxuZXhwb3J0IGNsYXNzIExpYnNVaUNvbXBvbmVudHNQYWdlc1RlbXBsYXRlRnVsbFNjcmVlbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBpZE92ZXJsYXkgPSBzaWduYWw8c3RyaW5nPih1dWlkKCkpO1xuICBwcml2YXRlIGZ1bmN0aW9uQ29udHJvbE1lbnU6IElEcm9wZG93bkZ1bmN0aW9uQ29udHJvbEV2ZW50IHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIG9uRGVzdHJveSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcmVhZG9ubHkgY2xhc3NIZWFkZXJJbmNsdWRlID0gaW5wdXQ8c3RyaW5nPigpO1xuICByZWFkb25seSBsYWJlbExlZnQgPSBpbnB1dDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD4oJ2kxOG5fYmFja190b19saXN0JywgeyB0cmFuc2Zvcm06ICh2YWwpID0+IHZhbCA/PyAnaTE4bl9iYWNrX3RvX2xpc3QnIH0pO1xuICByZWFkb25seSBjbGFzc0JvZHlJbmNsdWRlID0gaW5wdXQ8c3RyaW5nPigpO1xuICByZWFkb25seSB0aXRsZSA9IGlucHV0PHN0cmluZz4oKTtcbiAgcmVhZG9ubHkgYnV0dG9uQ2VudGVyID0gaW5wdXQ8QXJyYXk8SVBhZ2VzVGVtcGxhdGVGdWxsU2NyZWVuQnV0dG9uPiB8IHVuZGVmaW5lZD4oKTtcbiAgcmVhZG9ubHkgYnV0dG9uUmlnaHQgPSBpbnB1dDxBcnJheTxJUGFnZXNUZW1wbGF0ZUZ1bGxTY3JlZW5CdXR0b24+PigpO1xuICByZWFkb25seSBoYXNFZGl0ID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBtZW51RHJvcERvd25Db25maWdzID0gaW5wdXQ8SURyb3Bkb3duPigpO1xuICByZWFkb25seSB6SW5kZXggPSBpbnB1dDxudW1iZXIsIG51bWJlciB8IHVuZGVmaW5lZD4oMTAwMCwgeyB0cmFuc2Zvcm06ICh2YWwpID0+IHZhbCA/PyAxMDAwIH0pO1xuICByZWFkb25seSBpZ25vcmVDbG9zZVBhZ2VGdWxsRXZlbnQgPSBpbnB1dDxib29sZWFuLCBib29sZWFuIHwgdW5kZWZpbmVkPihmYWxzZSwgeyB0cmFuc2Zvcm06ICh2YWwpID0+IHZhbCA/PyBmYWxzZSB9KTtcbiAgcmVhZG9ubHkgaWdub3JlQmFja2dyb3VuZENvbG9yID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgZGl2aWRlQ2xhc3NIZWFkZXIgPSBpbnB1dDx7IGNsYXNzQnV0dG9uQ2FuY2VsOiBzdHJpbmc7IGNsYXNzQnV0dG9uQ2VudGVyOiBzdHJpbmc7IGNsYXNzQnV0dG9uUmlnaHQ6IHN0cmluZyB9IHwgdW5kZWZpbmVkPigpO1xuICByZWFkb25seSBjZW50ZXJUZW1wbGF0ZSA9IGlucHV0PFRlbXBsYXRlUmVmPFRZUEVfVEVNUExBVEVfUkVGPiB8IHVuZGVmaW5lZD4oKTtcbiAgcmVhZG9ubHkgdGVtcGxhdGVSaWdodCA9IGlucHV0PFRlbXBsYXRlUmVmPFRZUEVfVEVNUExBVEVfUkVGPiB8IHVuZGVmaW5lZD4oKTtcbiAgcmVhZG9ubHkgbGVmdFRlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8VFlQRV9URU1QTEFURV9SRUY+IHwgdW5kZWZpbmVkPigpO1xuICByZWFkb25seSBkaXNhYmxlID0gaW5wdXQ8Ym9vbGVhbiwgYm9vbGVhbiB8IHVuZGVmaW5lZD4oZmFsc2UsIHsgdHJhbnNmb3JtOiAodmFsKSA9PiB2YWwgPz8gZmFsc2UgfSk7XG5cbiAgcmVhZG9ubHkgb3V0Q2xvc2UgPSBvdXRwdXQ8dm9pZD4oKTtcbiAgcmVhZG9ubHkgb3V0RWRpdCA9IG91dHB1dDx2b2lkPigpO1xuICByZWFkb25seSBvdXRTZWxlY3RlZE1lbnVEcm9wZG93biA9IG91dHB1dDxJRW1pdFNlbGVjdEtleSB8IHVuZGVmaW5lZD4oKTtcbiAgcmVhZG9ubHkgb3V0Q2xpY2tCdXR0b24gPSBvdXRwdXQ8SVBhZ2VzVGVtcGxhdGVGdWxsU2NyZWVuQnV0dG9uPigpO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pZ25vcmVDbG9zZVBhZ2VGdWxsRXZlbnQoKSkge1xuICAgICAgY29uc3QgZGF0YSA9IHtcbiAgICAgICAgdHlwZTogVXRpbHNDb21tdW5pY2F0ZU1pY3JvS2V5R2xvYmFsLktFWV9NRVNTQUdFX01PREFMLFxuICAgICAgICByZXNwb25zZToge1xuICAgICAgICAgIG1lc3NhZ2U6ICdvcGVuJyxcbiAgICAgICAgICBzdGF0ZTogdHJ1ZSxcbiAgICAgICAgICBpZE92ZXJsYXk6IHRoaXMuaWRPdmVybGF5KCksXG4gICAgICAgICAgdGltZUxpdmVVcGRhdGU6IGdldERheWpzKCkudW5peCgpLFxuICAgICAgICB9LFxuICAgICAgfTtcblxuICAgICAgVXRpbHNDb21tdW5pY2F0ZU1pY3JvLlBvc3RNZXNzYWdlVG9QYXJlbnQoZGF0YSk7XG5cbiAgICAgIGlmIChVdGlsc0NvbW11bmljYXRlTWljcm9LZXlHbG9iYWwuSUdOT1JFX0lOVEVSVkFMX1VQREFURV9USU1FX0xJVkVfRVZFTlRfTU9EQUwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpbnRlcnZhbCgyMDAwKVxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kpKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICBkYXRhLnJlc3BvbnNlLnRpbWVMaXZlVXBkYXRlID0gZ2V0RGF5anMoKS51bml4KCk7XG5cbiAgICAgICAgICBVdGlsc0NvbW11bmljYXRlTWljcm8uUG9zdE1lc3NhZ2VUb1BhcmVudChkYXRhKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZXJFZGl0KCkge1xuICAgIHRoaXMub3V0RWRpdC5lbWl0KCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY2FuY2VsKCkge1xuICAgIHRoaXMub3V0Q2xvc2UuZW1pdCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZXJDbGlja0J1dHRvbihidXR0b246IElQYWdlc1RlbXBsYXRlRnVsbFNjcmVlbkJ1dHRvbikge1xuICAgIGlmIChidXR0b24gJiYgYnV0dG9uLmFjdGlvbikge1xuICAgICAgYXdhaXQgYnV0dG9uLmFjdGlvbigpO1xuICAgIH1cbiAgICB0aGlzLm91dENsaWNrQnV0dG9uLmVtaXQoYnV0dG9uKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVyU3dpdGNoKGV2ZW50OiBJU3dpdGNoRXZlbnQsIGJ1dHRvbjogSVBhZ2VzVGVtcGxhdGVGdWxsU2NyZWVuQnV0dG9uKSB7XG4gICAgaWYgKGJ1dHRvbiAmJiBidXR0b24uYWN0aW9uKSB7XG4gICAgICBhd2FpdCBidXR0b24uYWN0aW9uKGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlclNlbGVjdGVkS2V5KGV2ZW50OiBJRW1pdFNlbGVjdEtleSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMub3V0U2VsZWN0ZWRNZW51RHJvcGRvd24uZW1pdChldmVudCk7XG4gICAgdGhpcy5mdW5jdGlvbkNvbnRyb2xNZW51Py5yZXNldCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZXJDb250cm9sRHJvcGRvd25NZW51KGV2ZW50OiBJRHJvcGRvd25GdW5jdGlvbkNvbnRyb2xFdmVudCkge1xuICAgIHRoaXMuZnVuY3Rpb25Db250cm9sTWVudSA9IGV2ZW50O1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5vbkRlc3Ryb3kubmV4dCgpO1xuICAgIHRoaXMub25EZXN0cm95LmNvbXBsZXRlKCk7XG4gICAgaWYgKCF0aGlzLmlnbm9yZUNsb3NlUGFnZUZ1bGxFdmVudCgpKSB7XG4gICAgICBjb25zdCBkYXRhID0ge1xuICAgICAgICB0eXBlOiBVdGlsc0NvbW11bmljYXRlTWljcm9LZXlHbG9iYWwuS0VZX01FU1NBR0VfTU9EQUwsXG4gICAgICAgIHJlc3BvbnNlOiB7XG4gICAgICAgICAgbWVzc2FnZTogJ2Nsb3NlJyxcbiAgICAgICAgICBzdGF0ZTogZmFsc2UsXG4gICAgICAgICAgaWRPdmVybGF5OiB0aGlzLmlkT3ZlcmxheSgpLFxuICAgICAgICB9LFxuICAgICAgfTtcblxuICAgICAgVXRpbHNDb21tdW5pY2F0ZU1pY3JvLlBvc3RNZXNzYWdlVG9QYXJlbnQoZGF0YSk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwibGlicy11aS1jb21wb25lbnRzLXBhZ2VfZnVsbCBvdmVyZmxvdy1oaWRkZW5cIlxuICBbc3R5bGUuekluZGV4XT1cInpJbmRleCgpXCJcbiAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiaWdub3JlQmFja2dyb3VuZENvbG9yKCkgPyAndHJhbnNwYXJlbnQnIDogJyNmMmY1ZjcnXCI+XG4gIDxkaXYgW2NsYXNzXT1cIidsaWJzLXVpLWNvbXBvbmVudHMtcGFnZV9mdWxsLWhlYWRlciAnICsgY2xhc3NIZWFkZXJJbmNsdWRlKClcIj5cbiAgICA8ZGl2IGNsYXNzPVwie3sgZGl2aWRlQ2xhc3NIZWFkZXIoKT8uY2xhc3NCdXR0b25DYW5jZWwgfHwgJ3ctWzI1JV0nIH19XCI+XG4gICAgICBAaWYgKGxlZnRUZW1wbGF0ZSgpOyBhcyBsZWZ0VGVtcGxhdGUpIHtcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxlZnRUZW1wbGF0ZVwiIC8+XG4gICAgICB9XG4gICAgICBAaWYgKGxhYmVsTGVmdCgpOyBhcyBsYWJlbExlZnQpIHtcbiAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1idXR0b25zLWJ1dHRvblxuICAgICAgICAgIFtsYWJlbF09XCJsYWJlbExlZnRcIlxuICAgICAgICAgIFt0eXBlXT1cIididXR0b24tbGluay1wcmltYXJ5J1wiXG4gICAgICAgICAgW2NsYXNzSWNvbkxlZnRdPVwiJ2xpYnMtdWktaWNvbi1jaGV2cm9uLXJpZ2h0IHJvdGF0ZS1bMTgwZGVnXSBiZWZvcmU6dGV4dC1bMTZweF0nXCJcbiAgICAgICAgICBbY2xhc3NMYWJlbF09XCInbGlicy11aS1mb250LWg0cidcIlxuICAgICAgICAgIChvdXRDbGljayk9XCJjYW5jZWwoKVwiIC8+XG4gICAgICB9XG4gICAgPC9kaXY+XG5cbiAgICBAaWYgKGNlbnRlclRlbXBsYXRlKCk7IGFzIGNlbnRlclRlbXBsYXRlKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwie3sgZGl2aWRlQ2xhc3NIZWFkZXIoKT8uY2xhc3NCdXR0b25DZW50ZXIgfHwgJ3ctWzQwJV0nIH19IGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjZW50ZXJUZW1wbGF0ZVwiIC8+XG4gICAgICA8L2Rpdj5cbiAgICB9IEBlbHNlIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJ7eyBkaXZpZGVDbGFzc0hlYWRlcigpPy5jbGFzc0J1dHRvbkNlbnRlciB8fCAndy1bNDAlXScgfX0gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1wb3BvdmVyXG4gICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgIFtjb25maWddPVwie1xuICAgICAgICAgICAgbWF4V2lkdGg6IDI1MCxcbiAgICAgICAgICAgIHpJbmRleDogekluZGV4KCkgKyAxLFxuICAgICAgICAgIH1cIlxuICAgICAgICAgIFtjbGFzc0luY2x1ZGVdPVwiJ2xpYnMtdWktZm9udC1oMnMnXCJcbiAgICAgICAgICBbaW5uZXJIdG1sXT1cInRpdGxlKCkgPyAodGl0bGUoKSB8IExpYnNVaVBpcGVzRXNjYXBlSHRtbFBpcGUpIDogJyZtZGFzaDsnXCIgLz5cblxuICAgICAgICBAaWYgKGhhc0VkaXQoKTsgYXMgaGFzRWRpdCkge1xuICAgICAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtYnV0dG9ucy1idXR0b25cbiAgICAgICAgICAgIFt0eXBlXT1cIididXR0b24tbGluay1wcmltYXJ5J1wiXG4gICAgICAgICAgICAob3V0Q2xpY2spPVwiaGFuZGxlckVkaXQoKVwiXG4gICAgICAgICAgICBbaWNvbk9ubHlUeXBlXT1cInRydWVcIlxuICAgICAgICAgICAgW2NsYXNzSWNvbkxlZnRdPVwiJ2xpYnMtdWktaWNvbi1lZGl0LWxpbmUnXCJcbiAgICAgICAgICAgIFtjbGFzc0luY2x1ZGVdPVwiJ21sLVs0cHhdJ1wiIC8+XG4gICAgICAgIH1cbiAgICAgICAgQGZvciAoYnV0dG9uIG9mIGJ1dHRvbkNlbnRlcigpOyB0cmFjayBidXR0b24ua2V5KSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1sLVsxMnB4XSBmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgQGlmIChidXR0b24ua2V5ID09PSAnYnV0dG9uJykge1xuICAgICAgICAgICAgICA8bGlic191aS1jb21wb25lbnRzLWJ1dHRvbnMtYnV0dG9uXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cImJ1dHRvbi5sYWJlbCB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgW2NsYXNzTGFiZWxdPVwiKGJ1dHRvbi5jbGFzc0xhYmVsIHx8ICcnKSArICcgbGlicy11aS1mb250LWhlYWQtNHMnXCJcbiAgICAgICAgICAgICAgICBbdHlwZV09XCJidXR0b24udHlwZSB8fCAnYnV0dG9uLXByaW1hcnknXCJcbiAgICAgICAgICAgICAgICBbY2xhc3NJbmNsdWRlXT1cImJ1dHRvbi5jbGFzc0luY2x1ZGUgfHwgJydcIlxuICAgICAgICAgICAgICAgIFtjbGFzc0ljb25MZWZ0XT1cImJ1dHRvbi5jbGFzc0ljb25MZWZ0IHx8ICcnXCJcbiAgICAgICAgICAgICAgICBbY2xhc3NJY29uUmlnaHRdPVwiYnV0dG9uLmNsYXNzSWNvblJpZ2h0IHx8ICcnXCJcbiAgICAgICAgICAgICAgICBbcG9wb3Zlcl09XCJidXR0b24ucG9wb3ZlciB8fCB7fVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVdPVwiYnV0dG9uLmRpc2FibGUgfHwgZGlzYWJsZSgpXCJcbiAgICAgICAgICAgICAgICBbaXNQZW5kaW5nXT1cImJ1dHRvbi5pc1BlbmRpbmcgfHwgZmFsc2VcIlxuICAgICAgICAgICAgICAgIChvdXRDbGljayk9XCJoYW5kbGVyQ2xpY2tCdXR0b24oYnV0dG9uKVwiIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKGJ1dHRvbi5rZXkgPT09ICdidXR0b24tc3RhdHVzJyAmJiBidXR0b24uY29uZmlnQnV0dG9uU3RhdHVzKSB7XG4gICAgICAgICAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtYnV0dG9ucy1zdGF0dXNcbiAgICAgICAgICAgICAgICBbY2xhc3NdPVwiYnV0dG9uLmNsYXNzSW5jbHVkZVwiXG4gICAgICAgICAgICAgICAgW2NvbmZpZ109XCJidXR0b24uY29uZmlnQnV0dG9uU3RhdHVzXCIgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoYnV0dG9uLmtleSA9PT0gJ3N3aXRjaCcpIHtcbiAgICAgICAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1zd2l0Y2hcbiAgICAgICAgICAgICAgICBbYWN0aXZlXT1cImJ1dHRvbi5hY3RpdmUgfHwgZmFsc2VcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlXT1cImJ1dHRvbi5kaXNhYmxlIHx8IGRpc2FibGUoKVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ7eyBidXR0b24uY2xhc3NJbmNsdWRlIH19XCJcbiAgICAgICAgICAgICAgICAob3V0U3dpdGNoKT1cImhhbmRsZXJTd2l0Y2goJGV2ZW50LCBidXR0b24pXCIgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoYnV0dG9uLmtleSA9PT0gJ2xhYmVsJyAmJiBidXR0b24ubGFiZWxDb25maWcpIHtcbiAgICAgICAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1sYWJlbFxuICAgICAgICAgICAgICAgIFtjbGFzc0luY2x1ZGVdPVwiYnV0dG9uLmxhYmVsQ29uZmlnLmNsYXNzSW5jbHVkZSArICcgcGItMCB0ZXh0LXdoaXRlJ1wiXG4gICAgICAgICAgICAgICAgW2xhYmVsTGVmdF09XCJidXR0b24ubGFiZWxDb25maWcubGFiZWxMZWZ0XCJcbiAgICAgICAgICAgICAgICBbbGFiZWxMZWZ0Q2xhc3NdPVwiYnV0dG9uLmxhYmVsQ29uZmlnLmxhYmVsTGVmdENsYXNzXCJcbiAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwiYnV0dG9uLmxhYmVsQ29uZmlnLnJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgICBbZGVzY3JpcHRpb25dPVwiYnV0dG9uLmxhYmVsQ29uZmlnLmRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICBbbGFiZWxSaWdodF09XCJidXR0b24ubGFiZWxDb25maWcubGFiZWxSaWdodFwiXG4gICAgICAgICAgICAgICAgW2xhYmVsUmlnaHRDbGFzc109XCJidXR0b24ubGFiZWxDb25maWcubGFiZWxSaWdodENsYXNzXCJcbiAgICAgICAgICAgICAgICBbb25seVNob3dDb3VudF09XCJidXR0b24ubGFiZWxDb25maWcub25seVNob3dDb3VudFwiXG4gICAgICAgICAgICAgICAgW2J1dHRvbnNMZWZ0XT1cImJ1dHRvbi5sYWJlbENvbmZpZy5idXR0b25zTGVmdFwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVCdXR0b25zTGVmdF09XCJidXR0b24ubGFiZWxDb25maWcuZGlzYWJsZUJ1dHRvbnNMZWZ0XCJcbiAgICAgICAgICAgICAgICBbYnV0dG9uc1JpZ2h0XT1cImJ1dHRvbi5sYWJlbENvbmZpZy5idXR0b25zUmlnaHRcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlQnV0dG9uc1JpZ2h0XT1cImJ1dHRvbi5sYWJlbENvbmZpZy5kaXNhYmxlQnV0dG9uc1JpZ2h0XCJcbiAgICAgICAgICAgICAgICBbaGFzVG9nZ2xlXT1cImJ1dHRvbi5sYWJlbENvbmZpZy5oYXNUb2dnbGVcIlxuICAgICAgICAgICAgICAgIFt0b2dnbGVBY3RpdmVdPVwiYnV0dG9uLmxhYmVsQ29uZmlnLnRvZ2dsZUFjdGl2ZVwiXG4gICAgICAgICAgICAgICAgW3RvZ2dsZURpc2FibGVdPVwiYnV0dG9uLmxhYmVsQ29uZmlnLnRvZ2dsZURpc2FibGVcIlxuICAgICAgICAgICAgICAgIFtwb3BvdmVyXT1cImJ1dHRvbi5sYWJlbENvbmZpZy5wb3BvdmVyXCJcbiAgICAgICAgICAgICAgICBbaWNvblBvcG92ZXJDbGFzc109XCJidXR0b24ubGFiZWxDb25maWcuaWNvblBvcG92ZXJDbGFzc1wiXG4gICAgICAgICAgICAgICAgW29ubHlTaG93Q291bnRdPVwiYnV0dG9uLmxhYmVsQ29uZmlnLm9ubHlTaG93Q291bnRcIlxuICAgICAgICAgICAgICAgIFtsaW1pdExlbmd0aF09XCJidXR0b24ubGFiZWxDb25maWcubGltaXRMZW5ndGhcIlxuICAgICAgICAgICAgICAgIFtidXR0b25zRGVzY3JpcHRpb25dPVwiYnV0dG9uLmxhYmVsQ29uZmlnLmJ1dHRvbnNEZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVCdXR0b25zRGVzY3JpcHRpb25dPVwiYnV0dG9uLmxhYmVsQ29uZmlnLmRpc2FibGVCdXR0b25zRGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgIFtidXR0b25zRGVzY3JpcHRpb25Db250YWluZXJDbGFzc109XCJidXR0b24ubGFiZWxDb25maWcuYnV0dG9uc0Rlc2NyaXB0aW9uQ29udGFpbmVyQ2xhc3NcIlxuICAgICAgICAgICAgICAgIFtjb3VudF09XCJidXR0b24ubGFiZWxDb25maWcuY291bnRcIiAvPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICB9XG5cbiAgICA8ZGl2IGNsYXNzPVwie3sgZGl2aWRlQ2xhc3NIZWFkZXIoKT8uY2xhc3NCdXR0b25SaWdodCB8fCAndy1bMzUlXScgfX0gZmxleCBqdXN0aWZ5LWVuZCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgIEBmb3IgKGJ1dHRvbiBvZiBidXR0b25SaWdodCgpOyB0cmFjayBidXR0b24ua2V5KSB7XG4gICAgICAgIDxkaXYgW2NsYXNzLm1sLVsxMnB4XV09XCIhJGZpcnN0XCI+XG4gICAgICAgICAgQGlmIChidXR0b24ua2V5ID09PSAnbGFiZWwnICYmIGJ1dHRvbi5sYWJlbENvbmZpZykge1xuICAgICAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1sYWJlbFxuICAgICAgICAgICAgICBbY2xhc3NJbmNsdWRlXT1cImJ1dHRvbi5sYWJlbENvbmZpZy5jbGFzc0luY2x1ZGUgKyAnIHBiLTAnXCJcbiAgICAgICAgICAgICAgW2xhYmVsTGVmdF09XCJidXR0b24ubGFiZWxDb25maWcubGFiZWxMZWZ0XCJcbiAgICAgICAgICAgICAgW2xhYmVsTGVmdENsYXNzXT1cImJ1dHRvbi5sYWJlbENvbmZpZy5sYWJlbExlZnRDbGFzc1wiXG4gICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJidXR0b24ubGFiZWxDb25maWcucmVxdWlyZWRcIlxuICAgICAgICAgICAgICBbZGVzY3JpcHRpb25dPVwiYnV0dG9uLmxhYmVsQ29uZmlnLmRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgW2xhYmVsUmlnaHRdPVwiYnV0dG9uLmxhYmVsQ29uZmlnLmxhYmVsUmlnaHRcIlxuICAgICAgICAgICAgICBbbGFiZWxSaWdodENsYXNzXT1cImJ1dHRvbi5sYWJlbENvbmZpZy5sYWJlbFJpZ2h0Q2xhc3NcIlxuICAgICAgICAgICAgICBbb25seVNob3dDb3VudF09XCJidXR0b24ubGFiZWxDb25maWcub25seVNob3dDb3VudFwiXG4gICAgICAgICAgICAgIFtidXR0b25zTGVmdF09XCJidXR0b24ubGFiZWxDb25maWcuYnV0dG9uc0xlZnRcIlxuICAgICAgICAgICAgICBbZGlzYWJsZUJ1dHRvbnNMZWZ0XT1cImJ1dHRvbi5sYWJlbENvbmZpZy5kaXNhYmxlQnV0dG9uc0xlZnRcIlxuICAgICAgICAgICAgICBbYnV0dG9uc1JpZ2h0XT1cImJ1dHRvbi5sYWJlbENvbmZpZy5idXR0b25zUmlnaHRcIlxuICAgICAgICAgICAgICBbZGlzYWJsZUJ1dHRvbnNSaWdodF09XCJidXR0b24ubGFiZWxDb25maWcuZGlzYWJsZUJ1dHRvbnNSaWdodFwiXG4gICAgICAgICAgICAgIFtoYXNUb2dnbGVdPVwiYnV0dG9uLmxhYmVsQ29uZmlnLmhhc1RvZ2dsZVwiXG4gICAgICAgICAgICAgIFt0b2dnbGVBY3RpdmVdPVwiYnV0dG9uLmxhYmVsQ29uZmlnLnRvZ2dsZUFjdGl2ZVwiXG4gICAgICAgICAgICAgIFt0b2dnbGVEaXNhYmxlXT1cImJ1dHRvbi5sYWJlbENvbmZpZy50b2dnbGVEaXNhYmxlXCJcbiAgICAgICAgICAgICAgW3BvcG92ZXJdPVwiYnV0dG9uLmxhYmVsQ29uZmlnLnBvcG92ZXJcIlxuICAgICAgICAgICAgICBbaWNvblBvcG92ZXJDbGFzc109XCJidXR0b24ubGFiZWxDb25maWcuaWNvblBvcG92ZXJDbGFzc1wiXG4gICAgICAgICAgICAgIFtvbmx5U2hvd0NvdW50XT1cImJ1dHRvbi5sYWJlbENvbmZpZy5vbmx5U2hvd0NvdW50XCJcbiAgICAgICAgICAgICAgW2xpbWl0TGVuZ3RoXT1cImJ1dHRvbi5sYWJlbENvbmZpZy5saW1pdExlbmd0aFwiXG4gICAgICAgICAgICAgIFtidXR0b25zRGVzY3JpcHRpb25dPVwiYnV0dG9uLmxhYmVsQ29uZmlnLmJ1dHRvbnNEZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlQnV0dG9uc0Rlc2NyaXB0aW9uXT1cImJ1dHRvbi5sYWJlbENvbmZpZy5kaXNhYmxlQnV0dG9uc0Rlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgW2J1dHRvbnNEZXNjcmlwdGlvbkNvbnRhaW5lckNsYXNzXT1cImJ1dHRvbi5sYWJlbENvbmZpZy5idXR0b25zRGVzY3JpcHRpb25Db250YWluZXJDbGFzc1wiXG4gICAgICAgICAgICAgIFtjb3VudF09XCJidXR0b24ubGFiZWxDb25maWcuY291bnRcIiAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKGJ1dHRvbi5rZXkgPT09ICdzd2l0Y2gnKSB7XG4gICAgICAgICAgICA8bGlic191aS1jb21wb25lbnRzLXN3aXRjaFxuICAgICAgICAgICAgICBbYWN0aXZlXT1cImJ1dHRvbi5hY3RpdmUgfHwgZmFsc2VcIlxuICAgICAgICAgICAgICBbZGlzYWJsZV09XCJidXR0b24uZGlzYWJsZSB8fCBkaXNhYmxlKClcIlxuICAgICAgICAgICAgICBjbGFzcz1cInt7IGJ1dHRvbi5jbGFzc0luY2x1ZGUgfX1cIlxuICAgICAgICAgICAgICAob3V0U3dpdGNoKT1cImhhbmRsZXJTd2l0Y2goJGV2ZW50LCBidXR0b24pXCIgLz5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAaWYgKGJ1dHRvbi5rZXkgPT09ICdidXR0b24nKSB7XG4gICAgICAgICAgICA8bGlic191aS1jb21wb25lbnRzLWJ1dHRvbnMtYnV0dG9uXG4gICAgICAgICAgICAgIFtsYWJlbF09XCJidXR0b24/LmxhYmVsIHx8ICcnXCJcbiAgICAgICAgICAgICAgW2NsYXNzTGFiZWxdPVwiKGJ1dHRvbi5jbGFzc0xhYmVsIHx8ICcnKSArICcgbGlicy11aS1mb250LWg0cydcIlxuICAgICAgICAgICAgICBbdHlwZV09XCJidXR0b24udHlwZSB8fCAnYnV0dG9uLXByaW1hcnknXCJcbiAgICAgICAgICAgICAgW2NsYXNzSW5jbHVkZV09XCJidXR0b24uY2xhc3NJbmNsdWRlIHx8ICcnXCJcbiAgICAgICAgICAgICAgW2NsYXNzSWNvbkxlZnRdPVwiYnV0dG9uLmNsYXNzSWNvbkxlZnQgfHwgJydcIlxuICAgICAgICAgICAgICBbY2xhc3NJY29uUmlnaHRdPVwiYnV0dG9uLmNsYXNzSWNvblJpZ2h0IHx8ICcnXCJcbiAgICAgICAgICAgICAgW3BvcG92ZXJdPVwiYnV0dG9uLnBvcG92ZXIgfHwge31cIlxuICAgICAgICAgICAgICBbZGlzYWJsZV09XCJidXR0b24uZGlzYWJsZSB8fCBkaXNhYmxlKClcIlxuICAgICAgICAgICAgICBbaXNQZW5kaW5nXT1cImJ1dHRvbi5pc1BlbmRpbmcgfHwgZmFsc2VcIlxuICAgICAgICAgICAgICBbaWNvbk9ubHlUeXBlXT1cImJ1dHRvbi5pY29uT25seVR5cGUgfHwgZmFsc2VcIlxuICAgICAgICAgICAgICAob3V0Q2xpY2spPVwiaGFuZGxlckNsaWNrQnV0dG9uKGJ1dHRvbilcIiAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICA8IS0tICB0aMOqbSDEkcaw4budbmcgcGjDom4gY8OhY2ggLS0+XG4gICAgICAgICAgQGlmIChidXR0b24ua2V5ID09PSAnbGluZS1zcGFjZScpIHtcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJiZy1bIzY2NmI3OV0gdy1bMXB4XSBoLVsyOHB4XVwiXG4gICAgICAgICAgICAgIFtjbGFzc109XCJidXR0b24uY2xhc3NJbmNsdWRlXCI+XG4gICAgICAgICAgICAgICZuYnNwO1xuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICAgIEBpZiAobWVudURyb3BEb3duQ29uZmlncygpOyBhcyBtZW51RHJvcERvd25Db25maWdzKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtbC1bMTJweF1cIj5cbiAgICAgICAgICA8bGlic191aS1jb21wb25lbnRzLWRyb3Bkb3duXG4gICAgICAgICAgICBbaXNOZ0NvbnRlbnRdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbekluZGV4XT1cInpJbmRleCgpICsgMVwiXG4gICAgICAgICAgICBbbGlzdENvbmZpZ109XCJtZW51RHJvcERvd25Db25maWdzLmxpc3RDb25maWdcIlxuICAgICAgICAgICAgW2xpc3RIaWRkZW5JbnB1dFNlYXJjaF09XCJ0cnVlXCJcbiAgICAgICAgICAgIFtwb3BvdmVyQ3VzdG9tQ29uZmlnXT1cIm1lbnVEcm9wRG93bkNvbmZpZ3MucG9wb3ZlckN1c3RvbUNvbmZpZ1wiXG4gICAgICAgICAgICAob3V0RnVuY3Rpb25zQ29udHJvbCk9XCJoYW5kbGVyQ29udHJvbERyb3Bkb3duTWVudSgkZXZlbnQpXCJcbiAgICAgICAgICAgIChvdXRTZWxlY3RLZXkpPVwiaGFuZGxlclNlbGVjdGVkS2V5KCRldmVudClcIj5cbiAgICAgICAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtYnV0dG9ucy1idXR0b25cbiAgICAgICAgICAgICAgW2NsYXNzSW5jbHVkZV09XCIncC1bOHB4XSdcIlxuICAgICAgICAgICAgICBbdHlwZV09XCInYnV0dG9uLXRoaXJkJ1wiXG4gICAgICAgICAgICAgIFtpY29uT25seVR5cGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIFtjbGFzc0ljb25MZWZ0XT1cIidsaWJzLXVpLWljb24tbW9yZS12ZXJ0aWNhbCB0ZXh0LVsjMzMzMzMzXSB0ZXh0LVsxMnB4XSdcIlxuICAgICAgICAgICAgICBbcG9wb3Zlcl09XCJ7XG4gICAgICAgICAgICAgICAgY29uZmlnOiB7XG4gICAgICAgICAgICAgICAgICBjb250ZW50OiAnaTE4bl80eF9vdGhlcl9vcGVyYXRpb25zJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgW2lnbm9yZVN0b3BQcm9wYWdhdGlvbkV2ZW50XT1cInRydWVcIiAvPlxuICAgICAgICAgIDwvbGlic191aS1jb21wb25lbnRzLWRyb3Bkb3duPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICAgIEBpZiAodGVtcGxhdGVSaWdodCgpOyBhcyB0ZW1wbGF0ZVJpZ2h0KSB7XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZVJpZ2h0XCIgLz5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgW2NsYXNzXT1cIidsaWJzLXVpLWNvbXBvbmVudHMtcGFnZV9mdWxsLWJvZHkgJyArIGNsYXNzQm9keUluY2x1ZGUoKVwiPlxuICAgIDxuZy1jb250ZW50IC8+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -9,8 +9,8 @@ import { LibsUiComponentsPopoverComponent } from '@libs-ui/components-popover';
|
|
|
9
9
|
import { LibsUiComponentsSwitchComponent } from '@libs-ui/components-switch';
|
|
10
10
|
import { LibsUiPipesEscapeHtmlPipe } from '@libs-ui/pipes-escape-html';
|
|
11
11
|
import { uuid, getDayjs, UtilsCommunicateMicroKeyGlobal, UtilsCommunicateMicro } from '@libs-ui/utils';
|
|
12
|
-
import { Subject, interval, takeUntil } from 'rxjs';
|
|
13
12
|
import { TranslateModule } from '@ngx-translate/core';
|
|
13
|
+
import { Subject, interval, takeUntil } from 'rxjs';
|
|
14
14
|
|
|
15
15
|
class LibsUiComponentsPagesTemplateFullScreenComponent {
|
|
16
16
|
idOverlay = signal(uuid());
|
|
@@ -48,6 +48,9 @@ class LibsUiComponentsPagesTemplateFullScreenComponent {
|
|
|
48
48
|
},
|
|
49
49
|
};
|
|
50
50
|
UtilsCommunicateMicro.PostMessageToParent(data);
|
|
51
|
+
if (UtilsCommunicateMicroKeyGlobal.IGNORE_INTERVAL_UPDATE_TIME_LIVE_EVENT_MODAL) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
51
54
|
interval(2000)
|
|
52
55
|
.pipe(takeUntil(this.onDestroy))
|
|
53
56
|
.subscribe(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"libs-ui-components-pages-template-full-screen.mjs","sources":["../../../../../../libs-ui/components/pages-template/full-screen/src/full-screen.component.ts","../../../../../../libs-ui/components/pages-template/full-screen/src/full-screen.component.html","../../../../../../libs-ui/components/pages-template/full-screen/src/libs-ui-components-pages-template-full-screen.ts"],"sourcesContent":["import { NgTemplateOutlet } from '@angular/common';\nimport { Component, input, OnDestroy, OnInit, output, signal, TemplateRef } from '@angular/core';\nimport { LibsUiComponentsButtonsButtonComponent } from '@libs-ui/components-buttons-button';\nimport { LibsUiComponentsButtonsStatusComponent } from '@libs-ui/components-buttons-status';\nimport { IDropdown, IDropdownFunctionControlEvent, IEmitSelectKey, LibsUiComponentsDropdownComponent } from '@libs-ui/components-dropdown';\nimport { LibsUiComponentsLabelComponent } from '@libs-ui/components-label';\nimport { LibsUiComponentsPopoverComponent } from '@libs-ui/components-popover';\nimport { ISwitchEvent, LibsUiComponentsSwitchComponent } from '@libs-ui/components-switch';\nimport { TYPE_TEMPLATE_REF } from '@libs-ui/interfaces-types';\nimport { LibsUiPipesEscapeHtmlPipe } from '@libs-ui/pipes-escape-html';\nimport { getDayjs, UtilsCommunicateMicro, UtilsCommunicateMicroKeyGlobal, uuid } from '@libs-ui/utils';\nimport { Dayjs } from 'dayjs';\nimport { interval, Subject, takeUntil } from 'rxjs';\nimport { IPagesTemplateFullScreenButton } from './interfaces/config.interface';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-pages_template_full_screen',\n templateUrl: './full-screen.component.html',\n styleUrls: ['./full-screen.component.scss'],\n standalone: true,\n imports: [\n TranslateModule,\n NgTemplateOutlet,\n LibsUiComponentsDropdownComponent,\n LibsUiComponentsSwitchComponent,\n LibsUiComponentsButtonsButtonComponent,\n LibsUiComponentsButtonsStatusComponent,\n LibsUiComponentsPopoverComponent,\n LibsUiPipesEscapeHtmlPipe,\n LibsUiComponentsLabelComponent,\n ],\n providers: [],\n})\nexport class LibsUiComponentsPagesTemplateFullScreenComponent implements OnInit, OnDestroy {\n private idOverlay = signal<string>(uuid());\n private functionControlMenu: IDropdownFunctionControlEvent | undefined;\n private onDestroy = new Subject<void>();\n\n readonly classHeaderInclude = input<string>();\n readonly labelLeft = input<string, string | undefined>('i18n_back_to_list', { transform: (val) => val ?? 'i18n_back_to_list' });\n readonly classBodyInclude = input<string>();\n readonly title = input<string>();\n readonly buttonCenter = input<Array<IPagesTemplateFullScreenButton> | undefined>();\n readonly buttonRight = input<Array<IPagesTemplateFullScreenButton>>();\n readonly hasEdit = input<boolean>(false);\n readonly menuDropDownConfigs = input<IDropdown>();\n readonly zIndex = input<number, number | undefined>(1000, { transform: (val) => val ?? 1000 });\n readonly ignoreClosePageFullEvent = input<boolean, boolean | undefined>(false, { transform: (val) => val ?? false });\n readonly ignoreBackgroundColor = input<boolean>();\n readonly divideClassHeader = input<{ classButtonCancel: string; classButtonCenter: string; classButtonRight: string } | undefined>();\n readonly centerTemplate = input<TemplateRef<TYPE_TEMPLATE_REF> | undefined>();\n readonly templateRight = input<TemplateRef<TYPE_TEMPLATE_REF> | undefined>();\n readonly leftTemplate = input<TemplateRef<TYPE_TEMPLATE_REF> | undefined>();\n readonly disable = input<boolean, boolean | undefined>(false, { transform: (val) => val ?? false });\n\n readonly outClose = output<void>();\n readonly outEdit = output<void>();\n readonly outSelectedMenuDropdown = output<IEmitSelectKey | undefined>();\n readonly outClickButton = output<IPagesTemplateFullScreenButton>();\n\n ngOnInit(): void {\n if (!this.ignoreClosePageFullEvent()) {\n const data = {\n type: UtilsCommunicateMicroKeyGlobal.KEY_MESSAGE_MODAL,\n response: {\n message: 'open',\n state: true,\n idOverlay: this.idOverlay(),\n timeLiveUpdate: getDayjs().unix(),\n },\n };\n\n UtilsCommunicateMicro.PostMessageToParent(data);\n\n interval(2000)\n .pipe(takeUntil(this.onDestroy))\n .subscribe(() => {\n data.response.timeLiveUpdate = getDayjs().unix();\n\n UtilsCommunicateMicro.PostMessageToParent(data);\n });\n }\n }\n\n protected handlerEdit() {\n this.outEdit.emit();\n }\n\n protected cancel() {\n this.outClose.emit();\n }\n\n protected async handlerClickButton(button: IPagesTemplateFullScreenButton) {\n if (button && button.action) {\n await button.action();\n }\n this.outClickButton.emit(button);\n }\n\n protected async handlerSwitch(event: ISwitchEvent, button: IPagesTemplateFullScreenButton) {\n if (button && button.action) {\n await button.action(event);\n }\n }\n\n protected handlerSelectedKey(event: IEmitSelectKey | undefined) {\n this.outSelectedMenuDropdown.emit(event);\n this.functionControlMenu?.reset();\n }\n\n protected handlerControlDropdownMenu(event: IDropdownFunctionControlEvent) {\n this.functionControlMenu = event;\n }\n\n ngOnDestroy(): void {\n this.onDestroy.next();\n this.onDestroy.complete();\n if (!this.ignoreClosePageFullEvent()) {\n const data = {\n type: UtilsCommunicateMicroKeyGlobal.KEY_MESSAGE_MODAL,\n response: {\n message: 'close',\n state: false,\n idOverlay: this.idOverlay(),\n },\n };\n\n UtilsCommunicateMicro.PostMessageToParent(data);\n }\n }\n}\n","<div\n class=\"libs-ui-components-page_full overflow-hidden\"\n [style.zIndex]=\"zIndex()\"\n [style.background-color]=\"ignoreBackgroundColor() ? 'transparent' : '#f2f5f7'\">\n <div [class]=\"'libs-ui-components-page_full-header ' + classHeaderInclude()\">\n <div class=\"{{ divideClassHeader()?.classButtonCancel || 'w-[25%]' }}\">\n @if (leftTemplate(); as leftTemplate) {\n <ng-container *ngTemplateOutlet=\"leftTemplate\" />\n }\n @if (labelLeft(); as labelLeft) {\n <libs_ui-components-buttons-button\n [label]=\"labelLeft\"\n [type]=\"'button-link-primary'\"\n [classIconLeft]=\"'libs-ui-icon-chevron-right rotate-[180deg] before:text-[16px]'\"\n [classLabel]=\"'libs-ui-font-h4r'\"\n (outClick)=\"cancel()\" />\n }\n </div>\n\n @if (centerTemplate(); as centerTemplate) {\n <div class=\"{{ divideClassHeader()?.classButtonCenter || 'w-[40%]' }} flex items-center justify-center\">\n <ng-container *ngTemplateOutlet=\"centerTemplate\" />\n </div>\n } @else {\n <div class=\"{{ divideClassHeader()?.classButtonCenter || 'w-[40%]' }} flex items-center justify-center\">\n <libs_ui-components-popover\n type=\"text\"\n [config]=\"{\n maxWidth: 250,\n zIndex: zIndex() + 1,\n }\"\n [classInclude]=\"'libs-ui-font-h2s'\"\n [innerHtml]=\"title() ? (title() | LibsUiPipesEscapeHtmlPipe) : '—'\" />\n\n @if (hasEdit(); as hasEdit) {\n <libs_ui-components-buttons-button\n [type]=\"'button-link-primary'\"\n (outClick)=\"handlerEdit()\"\n [iconOnlyType]=\"true\"\n [classIconLeft]=\"'libs-ui-icon-edit-line'\"\n [classInclude]=\"'ml-[4px]'\" />\n }\n @for (button of buttonCenter(); track button.key) {\n <div class=\"ml-[12px] flex items-center\">\n @if (button.key === 'button') {\n <libs_ui-components-buttons-button\n [label]=\"button.label || ''\"\n [classLabel]=\"(button.classLabel || '') + ' libs-ui-font-head-4s'\"\n [type]=\"button.type || 'button-primary'\"\n [classInclude]=\"button.classInclude || ''\"\n [classIconLeft]=\"button.classIconLeft || ''\"\n [classIconRight]=\"button.classIconRight || ''\"\n [popover]=\"button.popover || {}\"\n [disable]=\"button.disable || disable()\"\n [isPending]=\"button.isPending || false\"\n (outClick)=\"handlerClickButton(button)\" />\n }\n @if (button.key === 'button-status' && button.configButtonStatus) {\n <libs_ui-components-buttons-status\n [class]=\"button.classInclude\"\n [config]=\"button.configButtonStatus\" />\n }\n @if (button.key === 'switch') {\n <libs_ui-components-switch\n [active]=\"button.active || false\"\n [disable]=\"button.disable || disable()\"\n class=\"{{ button.classInclude }}\"\n (outSwitch)=\"handlerSwitch($event, button)\" />\n }\n @if (button.key === 'label' && button.labelConfig) {\n <libs_ui-components-label\n [classInclude]=\"button.labelConfig.classInclude + ' pb-0 text-white'\"\n [labelLeft]=\"button.labelConfig.labelLeft\"\n [labelLeftClass]=\"button.labelConfig.labelLeftClass\"\n [required]=\"button.labelConfig.required\"\n [description]=\"button.labelConfig.description\"\n [labelRight]=\"button.labelConfig.labelRight\"\n [labelRightClass]=\"button.labelConfig.labelRightClass\"\n [onlyShowCount]=\"button.labelConfig.onlyShowCount\"\n [buttonsLeft]=\"button.labelConfig.buttonsLeft\"\n [disableButtonsLeft]=\"button.labelConfig.disableButtonsLeft\"\n [buttonsRight]=\"button.labelConfig.buttonsRight\"\n [disableButtonsRight]=\"button.labelConfig.disableButtonsRight\"\n [hasToggle]=\"button.labelConfig.hasToggle\"\n [toggleActive]=\"button.labelConfig.toggleActive\"\n [toggleDisable]=\"button.labelConfig.toggleDisable\"\n [popover]=\"button.labelConfig.popover\"\n [iconPopoverClass]=\"button.labelConfig.iconPopoverClass\"\n [onlyShowCount]=\"button.labelConfig.onlyShowCount\"\n [limitLength]=\"button.labelConfig.limitLength\"\n [buttonsDescription]=\"button.labelConfig.buttonsDescription\"\n [disableButtonsDescription]=\"button.labelConfig.disableButtonsDescription\"\n [buttonsDescriptionContainerClass]=\"button.labelConfig.buttonsDescriptionContainerClass\"\n [count]=\"button.labelConfig.count\" />\n }\n </div>\n }\n </div>\n }\n\n <div class=\"{{ divideClassHeader()?.classButtonRight || 'w-[35%]' }} flex justify-end items-center\">\n @for (button of buttonRight(); track button.key) {\n <div [class.ml-[12px]]=\"!$first\">\n @if (button.key === 'label' && button.labelConfig) {\n <libs_ui-components-label\n [classInclude]=\"button.labelConfig.classInclude + ' pb-0'\"\n [labelLeft]=\"button.labelConfig.labelLeft\"\n [labelLeftClass]=\"button.labelConfig.labelLeftClass\"\n [required]=\"button.labelConfig.required\"\n [description]=\"button.labelConfig.description\"\n [labelRight]=\"button.labelConfig.labelRight\"\n [labelRightClass]=\"button.labelConfig.labelRightClass\"\n [onlyShowCount]=\"button.labelConfig.onlyShowCount\"\n [buttonsLeft]=\"button.labelConfig.buttonsLeft\"\n [disableButtonsLeft]=\"button.labelConfig.disableButtonsLeft\"\n [buttonsRight]=\"button.labelConfig.buttonsRight\"\n [disableButtonsRight]=\"button.labelConfig.disableButtonsRight\"\n [hasToggle]=\"button.labelConfig.hasToggle\"\n [toggleActive]=\"button.labelConfig.toggleActive\"\n [toggleDisable]=\"button.labelConfig.toggleDisable\"\n [popover]=\"button.labelConfig.popover\"\n [iconPopoverClass]=\"button.labelConfig.iconPopoverClass\"\n [onlyShowCount]=\"button.labelConfig.onlyShowCount\"\n [limitLength]=\"button.labelConfig.limitLength\"\n [buttonsDescription]=\"button.labelConfig.buttonsDescription\"\n [disableButtonsDescription]=\"button.labelConfig.disableButtonsDescription\"\n [buttonsDescriptionContainerClass]=\"button.labelConfig.buttonsDescriptionContainerClass\"\n [count]=\"button.labelConfig.count\" />\n }\n @if (button.key === 'switch') {\n <libs_ui-components-switch\n [active]=\"button.active || false\"\n [disable]=\"button.disable || disable()\"\n class=\"{{ button.classInclude }}\"\n (outSwitch)=\"handlerSwitch($event, button)\" />\n }\n\n @if (button.key === 'button') {\n <libs_ui-components-buttons-button\n [label]=\"button?.label || ''\"\n [classLabel]=\"(button.classLabel || '') + ' libs-ui-font-h4s'\"\n [type]=\"button.type || 'button-primary'\"\n [classInclude]=\"button.classInclude || ''\"\n [classIconLeft]=\"button.classIconLeft || ''\"\n [classIconRight]=\"button.classIconRight || ''\"\n [popover]=\"button.popover || {}\"\n [disable]=\"button.disable || disable()\"\n [isPending]=\"button.isPending || false\"\n [iconOnlyType]=\"button.iconOnlyType || false\"\n (outClick)=\"handlerClickButton(button)\" />\n }\n <!-- thêm đường phân cách -->\n @if (button.key === 'line-space') {\n <div\n class=\"bg-[#666b79] w-[1px] h-[28px]\"\n [class]=\"button.classInclude\">\n \n </div>\n }\n </div>\n }\n @if (menuDropDownConfigs(); as menuDropDownConfigs) {\n <div class=\"ml-[12px]\">\n <libs_ui-components-dropdown\n [isNgContent]=\"true\"\n [zIndex]=\"zIndex() + 1\"\n [listConfig]=\"menuDropDownConfigs.listConfig\"\n [listHiddenInputSearch]=\"true\"\n [popoverCustomConfig]=\"menuDropDownConfigs.popoverCustomConfig\"\n (outFunctionsControl)=\"handlerControlDropdownMenu($event)\"\n (outSelectKey)=\"handlerSelectedKey($event)\">\n <libs_ui-components-buttons-button\n [classInclude]=\"'p-[8px]'\"\n [type]=\"'button-third'\"\n [iconOnlyType]=\"true\"\n [classIconLeft]=\"'libs-ui-icon-more-vertical text-[#333333] text-[12px]'\"\n [popover]=\"{\n config: {\n content: 'i18n_4x_other_operations',\n },\n }\"\n [ignoreStopPropagationEvent]=\"true\" />\n </libs_ui-components-dropdown>\n </div>\n }\n @if (templateRight(); as templateRight) {\n <ng-container *ngTemplateOutlet=\"templateRight\" />\n }\n </div>\n </div>\n <div [class]=\"'libs-ui-components-page_full-body ' + classBodyInclude()\">\n <ng-content />\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"libs-ui-components-pages-template-full-screen.mjs","sources":["../../../../../../libs-ui/components/pages-template/full-screen/src/full-screen.component.ts","../../../../../../libs-ui/components/pages-template/full-screen/src/full-screen.component.html","../../../../../../libs-ui/components/pages-template/full-screen/src/libs-ui-components-pages-template-full-screen.ts"],"sourcesContent":["import { NgTemplateOutlet } from '@angular/common';\nimport { Component, input, OnDestroy, OnInit, output, signal, TemplateRef } from '@angular/core';\nimport { LibsUiComponentsButtonsButtonComponent } from '@libs-ui/components-buttons-button';\nimport { LibsUiComponentsButtonsStatusComponent } from '@libs-ui/components-buttons-status';\nimport { IDropdown, IDropdownFunctionControlEvent, IEmitSelectKey, LibsUiComponentsDropdownComponent } from '@libs-ui/components-dropdown';\nimport { LibsUiComponentsLabelComponent } from '@libs-ui/components-label';\nimport { LibsUiComponentsPopoverComponent } from '@libs-ui/components-popover';\nimport { ISwitchEvent, LibsUiComponentsSwitchComponent } from '@libs-ui/components-switch';\nimport { TYPE_TEMPLATE_REF } from '@libs-ui/interfaces-types';\nimport { LibsUiPipesEscapeHtmlPipe } from '@libs-ui/pipes-escape-html';\nimport { getDayjs, UtilsCommunicateMicro, UtilsCommunicateMicroKeyGlobal, uuid } from '@libs-ui/utils';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { interval, Subject, takeUntil } from 'rxjs';\nimport { IPagesTemplateFullScreenButton } from './interfaces/config.interface';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-pages_template_full_screen',\n templateUrl: './full-screen.component.html',\n styleUrls: ['./full-screen.component.scss'],\n standalone: true,\n imports: [\n TranslateModule,\n NgTemplateOutlet,\n LibsUiComponentsDropdownComponent,\n LibsUiComponentsSwitchComponent,\n LibsUiComponentsButtonsButtonComponent,\n LibsUiComponentsButtonsStatusComponent,\n LibsUiComponentsPopoverComponent,\n LibsUiPipesEscapeHtmlPipe,\n LibsUiComponentsLabelComponent,\n ],\n providers: [],\n})\nexport class LibsUiComponentsPagesTemplateFullScreenComponent implements OnInit, OnDestroy {\n private idOverlay = signal<string>(uuid());\n private functionControlMenu: IDropdownFunctionControlEvent | undefined;\n private onDestroy = new Subject<void>();\n\n readonly classHeaderInclude = input<string>();\n readonly labelLeft = input<string, string | undefined>('i18n_back_to_list', { transform: (val) => val ?? 'i18n_back_to_list' });\n readonly classBodyInclude = input<string>();\n readonly title = input<string>();\n readonly buttonCenter = input<Array<IPagesTemplateFullScreenButton> | undefined>();\n readonly buttonRight = input<Array<IPagesTemplateFullScreenButton>>();\n readonly hasEdit = input<boolean>(false);\n readonly menuDropDownConfigs = input<IDropdown>();\n readonly zIndex = input<number, number | undefined>(1000, { transform: (val) => val ?? 1000 });\n readonly ignoreClosePageFullEvent = input<boolean, boolean | undefined>(false, { transform: (val) => val ?? false });\n readonly ignoreBackgroundColor = input<boolean>();\n readonly divideClassHeader = input<{ classButtonCancel: string; classButtonCenter: string; classButtonRight: string } | undefined>();\n readonly centerTemplate = input<TemplateRef<TYPE_TEMPLATE_REF> | undefined>();\n readonly templateRight = input<TemplateRef<TYPE_TEMPLATE_REF> | undefined>();\n readonly leftTemplate = input<TemplateRef<TYPE_TEMPLATE_REF> | undefined>();\n readonly disable = input<boolean, boolean | undefined>(false, { transform: (val) => val ?? false });\n\n readonly outClose = output<void>();\n readonly outEdit = output<void>();\n readonly outSelectedMenuDropdown = output<IEmitSelectKey | undefined>();\n readonly outClickButton = output<IPagesTemplateFullScreenButton>();\n\n ngOnInit(): void {\n if (!this.ignoreClosePageFullEvent()) {\n const data = {\n type: UtilsCommunicateMicroKeyGlobal.KEY_MESSAGE_MODAL,\n response: {\n message: 'open',\n state: true,\n idOverlay: this.idOverlay(),\n timeLiveUpdate: getDayjs().unix(),\n },\n };\n\n UtilsCommunicateMicro.PostMessageToParent(data);\n\n if (UtilsCommunicateMicroKeyGlobal.IGNORE_INTERVAL_UPDATE_TIME_LIVE_EVENT_MODAL) {\n return;\n }\n\n interval(2000)\n .pipe(takeUntil(this.onDestroy))\n .subscribe(() => {\n data.response.timeLiveUpdate = getDayjs().unix();\n\n UtilsCommunicateMicro.PostMessageToParent(data);\n });\n }\n }\n\n protected handlerEdit() {\n this.outEdit.emit();\n }\n\n protected cancel() {\n this.outClose.emit();\n }\n\n protected async handlerClickButton(button: IPagesTemplateFullScreenButton) {\n if (button && button.action) {\n await button.action();\n }\n this.outClickButton.emit(button);\n }\n\n protected async handlerSwitch(event: ISwitchEvent, button: IPagesTemplateFullScreenButton) {\n if (button && button.action) {\n await button.action(event);\n }\n }\n\n protected handlerSelectedKey(event: IEmitSelectKey | undefined) {\n this.outSelectedMenuDropdown.emit(event);\n this.functionControlMenu?.reset();\n }\n\n protected handlerControlDropdownMenu(event: IDropdownFunctionControlEvent) {\n this.functionControlMenu = event;\n }\n\n ngOnDestroy(): void {\n this.onDestroy.next();\n this.onDestroy.complete();\n if (!this.ignoreClosePageFullEvent()) {\n const data = {\n type: UtilsCommunicateMicroKeyGlobal.KEY_MESSAGE_MODAL,\n response: {\n message: 'close',\n state: false,\n idOverlay: this.idOverlay(),\n },\n };\n\n UtilsCommunicateMicro.PostMessageToParent(data);\n }\n }\n}\n","<div\n class=\"libs-ui-components-page_full overflow-hidden\"\n [style.zIndex]=\"zIndex()\"\n [style.background-color]=\"ignoreBackgroundColor() ? 'transparent' : '#f2f5f7'\">\n <div [class]=\"'libs-ui-components-page_full-header ' + classHeaderInclude()\">\n <div class=\"{{ divideClassHeader()?.classButtonCancel || 'w-[25%]' }}\">\n @if (leftTemplate(); as leftTemplate) {\n <ng-container *ngTemplateOutlet=\"leftTemplate\" />\n }\n @if (labelLeft(); as labelLeft) {\n <libs_ui-components-buttons-button\n [label]=\"labelLeft\"\n [type]=\"'button-link-primary'\"\n [classIconLeft]=\"'libs-ui-icon-chevron-right rotate-[180deg] before:text-[16px]'\"\n [classLabel]=\"'libs-ui-font-h4r'\"\n (outClick)=\"cancel()\" />\n }\n </div>\n\n @if (centerTemplate(); as centerTemplate) {\n <div class=\"{{ divideClassHeader()?.classButtonCenter || 'w-[40%]' }} flex items-center justify-center\">\n <ng-container *ngTemplateOutlet=\"centerTemplate\" />\n </div>\n } @else {\n <div class=\"{{ divideClassHeader()?.classButtonCenter || 'w-[40%]' }} flex items-center justify-center\">\n <libs_ui-components-popover\n type=\"text\"\n [config]=\"{\n maxWidth: 250,\n zIndex: zIndex() + 1,\n }\"\n [classInclude]=\"'libs-ui-font-h2s'\"\n [innerHtml]=\"title() ? (title() | LibsUiPipesEscapeHtmlPipe) : '—'\" />\n\n @if (hasEdit(); as hasEdit) {\n <libs_ui-components-buttons-button\n [type]=\"'button-link-primary'\"\n (outClick)=\"handlerEdit()\"\n [iconOnlyType]=\"true\"\n [classIconLeft]=\"'libs-ui-icon-edit-line'\"\n [classInclude]=\"'ml-[4px]'\" />\n }\n @for (button of buttonCenter(); track button.key) {\n <div class=\"ml-[12px] flex items-center\">\n @if (button.key === 'button') {\n <libs_ui-components-buttons-button\n [label]=\"button.label || ''\"\n [classLabel]=\"(button.classLabel || '') + ' libs-ui-font-head-4s'\"\n [type]=\"button.type || 'button-primary'\"\n [classInclude]=\"button.classInclude || ''\"\n [classIconLeft]=\"button.classIconLeft || ''\"\n [classIconRight]=\"button.classIconRight || ''\"\n [popover]=\"button.popover || {}\"\n [disable]=\"button.disable || disable()\"\n [isPending]=\"button.isPending || false\"\n (outClick)=\"handlerClickButton(button)\" />\n }\n @if (button.key === 'button-status' && button.configButtonStatus) {\n <libs_ui-components-buttons-status\n [class]=\"button.classInclude\"\n [config]=\"button.configButtonStatus\" />\n }\n @if (button.key === 'switch') {\n <libs_ui-components-switch\n [active]=\"button.active || false\"\n [disable]=\"button.disable || disable()\"\n class=\"{{ button.classInclude }}\"\n (outSwitch)=\"handlerSwitch($event, button)\" />\n }\n @if (button.key === 'label' && button.labelConfig) {\n <libs_ui-components-label\n [classInclude]=\"button.labelConfig.classInclude + ' pb-0 text-white'\"\n [labelLeft]=\"button.labelConfig.labelLeft\"\n [labelLeftClass]=\"button.labelConfig.labelLeftClass\"\n [required]=\"button.labelConfig.required\"\n [description]=\"button.labelConfig.description\"\n [labelRight]=\"button.labelConfig.labelRight\"\n [labelRightClass]=\"button.labelConfig.labelRightClass\"\n [onlyShowCount]=\"button.labelConfig.onlyShowCount\"\n [buttonsLeft]=\"button.labelConfig.buttonsLeft\"\n [disableButtonsLeft]=\"button.labelConfig.disableButtonsLeft\"\n [buttonsRight]=\"button.labelConfig.buttonsRight\"\n [disableButtonsRight]=\"button.labelConfig.disableButtonsRight\"\n [hasToggle]=\"button.labelConfig.hasToggle\"\n [toggleActive]=\"button.labelConfig.toggleActive\"\n [toggleDisable]=\"button.labelConfig.toggleDisable\"\n [popover]=\"button.labelConfig.popover\"\n [iconPopoverClass]=\"button.labelConfig.iconPopoverClass\"\n [onlyShowCount]=\"button.labelConfig.onlyShowCount\"\n [limitLength]=\"button.labelConfig.limitLength\"\n [buttonsDescription]=\"button.labelConfig.buttonsDescription\"\n [disableButtonsDescription]=\"button.labelConfig.disableButtonsDescription\"\n [buttonsDescriptionContainerClass]=\"button.labelConfig.buttonsDescriptionContainerClass\"\n [count]=\"button.labelConfig.count\" />\n }\n </div>\n }\n </div>\n }\n\n <div class=\"{{ divideClassHeader()?.classButtonRight || 'w-[35%]' }} flex justify-end items-center\">\n @for (button of buttonRight(); track button.key) {\n <div [class.ml-[12px]]=\"!$first\">\n @if (button.key === 'label' && button.labelConfig) {\n <libs_ui-components-label\n [classInclude]=\"button.labelConfig.classInclude + ' pb-0'\"\n [labelLeft]=\"button.labelConfig.labelLeft\"\n [labelLeftClass]=\"button.labelConfig.labelLeftClass\"\n [required]=\"button.labelConfig.required\"\n [description]=\"button.labelConfig.description\"\n [labelRight]=\"button.labelConfig.labelRight\"\n [labelRightClass]=\"button.labelConfig.labelRightClass\"\n [onlyShowCount]=\"button.labelConfig.onlyShowCount\"\n [buttonsLeft]=\"button.labelConfig.buttonsLeft\"\n [disableButtonsLeft]=\"button.labelConfig.disableButtonsLeft\"\n [buttonsRight]=\"button.labelConfig.buttonsRight\"\n [disableButtonsRight]=\"button.labelConfig.disableButtonsRight\"\n [hasToggle]=\"button.labelConfig.hasToggle\"\n [toggleActive]=\"button.labelConfig.toggleActive\"\n [toggleDisable]=\"button.labelConfig.toggleDisable\"\n [popover]=\"button.labelConfig.popover\"\n [iconPopoverClass]=\"button.labelConfig.iconPopoverClass\"\n [onlyShowCount]=\"button.labelConfig.onlyShowCount\"\n [limitLength]=\"button.labelConfig.limitLength\"\n [buttonsDescription]=\"button.labelConfig.buttonsDescription\"\n [disableButtonsDescription]=\"button.labelConfig.disableButtonsDescription\"\n [buttonsDescriptionContainerClass]=\"button.labelConfig.buttonsDescriptionContainerClass\"\n [count]=\"button.labelConfig.count\" />\n }\n @if (button.key === 'switch') {\n <libs_ui-components-switch\n [active]=\"button.active || false\"\n [disable]=\"button.disable || disable()\"\n class=\"{{ button.classInclude }}\"\n (outSwitch)=\"handlerSwitch($event, button)\" />\n }\n\n @if (button.key === 'button') {\n <libs_ui-components-buttons-button\n [label]=\"button?.label || ''\"\n [classLabel]=\"(button.classLabel || '') + ' libs-ui-font-h4s'\"\n [type]=\"button.type || 'button-primary'\"\n [classInclude]=\"button.classInclude || ''\"\n [classIconLeft]=\"button.classIconLeft || ''\"\n [classIconRight]=\"button.classIconRight || ''\"\n [popover]=\"button.popover || {}\"\n [disable]=\"button.disable || disable()\"\n [isPending]=\"button.isPending || false\"\n [iconOnlyType]=\"button.iconOnlyType || false\"\n (outClick)=\"handlerClickButton(button)\" />\n }\n <!-- thêm đường phân cách -->\n @if (button.key === 'line-space') {\n <div\n class=\"bg-[#666b79] w-[1px] h-[28px]\"\n [class]=\"button.classInclude\">\n \n </div>\n }\n </div>\n }\n @if (menuDropDownConfigs(); as menuDropDownConfigs) {\n <div class=\"ml-[12px]\">\n <libs_ui-components-dropdown\n [isNgContent]=\"true\"\n [zIndex]=\"zIndex() + 1\"\n [listConfig]=\"menuDropDownConfigs.listConfig\"\n [listHiddenInputSearch]=\"true\"\n [popoverCustomConfig]=\"menuDropDownConfigs.popoverCustomConfig\"\n (outFunctionsControl)=\"handlerControlDropdownMenu($event)\"\n (outSelectKey)=\"handlerSelectedKey($event)\">\n <libs_ui-components-buttons-button\n [classInclude]=\"'p-[8px]'\"\n [type]=\"'button-third'\"\n [iconOnlyType]=\"true\"\n [classIconLeft]=\"'libs-ui-icon-more-vertical text-[#333333] text-[12px]'\"\n [popover]=\"{\n config: {\n content: 'i18n_4x_other_operations',\n },\n }\"\n [ignoreStopPropagationEvent]=\"true\" />\n </libs_ui-components-dropdown>\n </div>\n }\n @if (templateRight(); as templateRight) {\n <ng-container *ngTemplateOutlet=\"templateRight\" />\n }\n </div>\n </div>\n <div [class]=\"'libs-ui-components-page_full-body ' + classBodyInclude()\">\n <ng-content />\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@libs-ui/components-pages-template-full-screen",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.353-0",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/common": ">=18.0.0",
|
|
6
6
|
"@angular/core": ">=18.0.0",
|
|
7
|
-
"@libs-ui/components-buttons-button": "0.2.
|
|
8
|
-
"@libs-ui/components-buttons-status": "0.2.
|
|
9
|
-
"@libs-ui/components-dropdown": "0.2.
|
|
10
|
-
"@libs-ui/components-label": "0.2.
|
|
11
|
-
"@libs-ui/components-popover": "0.2.
|
|
12
|
-
"@libs-ui/components-switch": "0.2.
|
|
13
|
-
"@libs-ui/interfaces-types": "0.2.
|
|
14
|
-
"@libs-ui/pipes-escape-html": "0.2.
|
|
15
|
-
"@libs-ui/utils": "0.2.
|
|
7
|
+
"@libs-ui/components-buttons-button": "0.2.353-0",
|
|
8
|
+
"@libs-ui/components-buttons-status": "0.2.353-0",
|
|
9
|
+
"@libs-ui/components-dropdown": "0.2.353-0",
|
|
10
|
+
"@libs-ui/components-label": "0.2.353-0",
|
|
11
|
+
"@libs-ui/components-popover": "0.2.353-0",
|
|
12
|
+
"@libs-ui/components-switch": "0.2.353-0",
|
|
13
|
+
"@libs-ui/interfaces-types": "0.2.353-0",
|
|
14
|
+
"@libs-ui/pipes-escape-html": "0.2.353-0",
|
|
15
|
+
"@libs-ui/utils": "0.2.353-0",
|
|
16
16
|
"dayjs": "1.11.5",
|
|
17
17
|
"rxjs": "~7.8.0",
|
|
18
18
|
"@ngx-translate/core": "^15.0.0"
|