bpm-core 0.0.51 → 0.0.53

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.
Files changed (52) hide show
  1. package/esm2022/lib/app/app.component.mjs +20 -9
  2. package/esm2022/lib/components/app-component-sections/previous-requests/previous-requests.component.mjs +3 -5
  3. package/esm2022/lib/components/app-component-sections/service-header/service-header.component.mjs +7 -5
  4. package/esm2022/lib/components/shared-components/action-buttons/action-buttons.component.mjs +4 -6
  5. package/esm2022/lib/components/shared-components/dialogs/delete-dialog/delete-dialog.component.mjs +5 -4
  6. package/esm2022/lib/components/shared-components/form-field/add-attachment-section/add-attachment-section.component.mjs +76 -51
  7. package/esm2022/lib/components/shared-components/form-field/attachment-section/attachment-section.component.mjs +151 -110
  8. package/esm2022/lib/components/shared-components/form-field/checkbox/checkbox.component.mjs +6 -7
  9. package/esm2022/lib/components/shared-components/form-field/control-value-accessor.directive.mjs +12 -5
  10. package/esm2022/lib/components/shared-components/form-field/custom-searchable-autocomplete/custom-searchable.component.mjs +2 -1
  11. package/esm2022/lib/components/shared-components/form-field/date-range-picker/date-range-picker.component.mjs +3 -4
  12. package/esm2022/lib/components/shared-components/form-field/doc-uploader/docs-uploader.component.mjs +139 -206
  13. package/esm2022/lib/components/shared-components/form-field/index.mjs +2 -1
  14. package/esm2022/lib/components/shared-components/form-field/info-item/info-item.component.mjs +3 -3
  15. package/esm2022/lib/components/shared-components/form-field/input-mask/input-mask.component.mjs +14 -7
  16. package/esm2022/lib/components/shared-components/form-field/radio/radio.component.mjs +6 -4
  17. package/esm2022/lib/components/shared-components/form-field/search-employee/search-employee.component.mjs +43 -101
  18. package/esm2022/lib/components/shared-components/index.mjs +1 -3
  19. package/esm2022/lib/i18n/ar.mjs +4 -2
  20. package/esm2022/lib/i18n/en.mjs +4 -2
  21. package/esm2022/lib/services/core.service.ts.mjs +11 -1
  22. package/esm2022/lib/services/i18n.service.mjs +3 -3
  23. package/esm2022/lib/testComponent/request-details-section/request-details-section.component.mjs +24 -23
  24. package/esm2022/lib/testComponent/services/i18n.service.mjs +3 -3
  25. package/fesm2022/bpm-core.mjs +582 -663
  26. package/fesm2022/bpm-core.mjs.map +1 -1
  27. package/lib/app/app.component.d.ts +5 -2
  28. package/lib/components/app-component-sections/service-header/service-header.component.d.ts +2 -2
  29. package/lib/components/shared-components/action-buttons/action-buttons.component.d.ts +3 -4
  30. package/lib/components/shared-components/form-field/add-attachment-section/add-attachment-section.component.d.ts +12 -3
  31. package/lib/components/shared-components/form-field/attachment-section/attachment-section.component.d.ts +23 -12
  32. package/lib/components/shared-components/form-field/control-value-accessor.directive.d.ts +5 -2
  33. package/lib/components/shared-components/form-field/doc-uploader/docs-uploader.component.d.ts +14 -12
  34. package/lib/components/shared-components/form-field/index.d.ts +1 -0
  35. package/lib/components/shared-components/form-field/info-item/info-item.component.d.ts +1 -1
  36. package/lib/components/shared-components/form-field/search-employee/search-employee.component.d.ts +1 -7
  37. package/lib/components/shared-components/form-field/shared-imports.d.ts +2 -2
  38. package/lib/components/shared-components/index.d.ts +0 -2
  39. package/lib/i18n/ar.d.ts +2 -0
  40. package/lib/i18n/en.d.ts +2 -0
  41. package/lib/services/core.service.ts.d.ts +1 -0
  42. package/lib/testComponent/request-details-section/request-details-section.component.d.ts +0 -2
  43. package/package.json +4 -3
  44. package/src/lib/assets/images/user.svg +6 -0
  45. package/src/lib/assets/scss/_general.scss +4 -1
  46. package/src/lib/assets/scss/_upgrade.scss +2 -2
  47. package/esm2022/lib/components/shared-components/confirmation-popup/confirmation-popup.component.mjs +0 -39
  48. package/esm2022/lib/components/shared-components/delete-popup/delete-popup.component.mjs +0 -19
  49. package/esm2022/lib/components/shared-components/doc-uploader/docs-uploader.component.mjs +0 -686
  50. package/lib/components/shared-components/confirmation-popup/confirmation-popup.component.d.ts +0 -25
  51. package/lib/components/shared-components/delete-popup/delete-popup.component.d.ts +0 -6
  52. package/lib/components/shared-components/doc-uploader/docs-uploader.component.d.ts +0 -144
@@ -1,6 +1,6 @@
1
- import { Component, CUSTOM_ELEMENTS_SCHEMA, Inject, NO_ERRORS_SCHEMA } from '@angular/core';
1
+ import { Component, CUSTOM_ELEMENTS_SCHEMA, Inject, NO_ERRORS_SCHEMA, PLATFORM_ID } from '@angular/core';
2
2
  import { LayoutComponent, ServiceHeaderComponent, WorkflowSectionComponent } from "../components/app-component-sections";
3
- import { DOCUMENT } from "@angular/common";
3
+ import { DOCUMENT, isPlatformBrowser } from "@angular/common";
4
4
  import { RequestDetailsSectionComponent } from "../testComponent/request-details-section/request-details-section.component";
5
5
  import { DynamicComponentInjectorToken } from "ng-dynamic-component";
6
6
  import * as i0 from "@angular/core";
@@ -14,6 +14,7 @@ export class CoreAppComponent {
14
14
  sidenavService;
15
15
  i18n;
16
16
  coreService;
17
+ platformId;
17
18
  loading = {
18
19
  form: false
19
20
  };
@@ -21,13 +22,14 @@ export class CoreAppComponent {
21
22
  formTitle = 'Test';
22
23
  noError = true;
23
24
  errorMessage;
24
- constructor(segmentDynamicLoader, document, router, sidenavService, i18n, coreService) {
25
+ constructor(segmentDynamicLoader, document, router, sidenavService, i18n, coreService, platformId) {
25
26
  this.segmentDynamicLoader = segmentDynamicLoader;
26
27
  this.document = document;
27
28
  this.router = router;
28
29
  this.sidenavService = sidenavService;
29
30
  this.i18n = i18n;
30
31
  this.coreService = coreService;
32
+ this.platformId = platformId;
31
33
  this.loading['form'] = true;
32
34
  this.coreService.loadForm().subscribe({
33
35
  next: (form) => {
@@ -41,12 +43,18 @@ export class CoreAppComponent {
41
43
  }
42
44
  });
43
45
  }
44
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: CoreAppComponent, deps: [{ token: i1.SegmentDynamicLoaderService }, { token: DOCUMENT }, { token: i2.Router }, { token: i3.SidenavService }, { token: i3.CoreI18nService }, { token: i3.CoreService }], target: i0.ɵɵFactoryTarget.Component });
46
+ ngAfterViewInit() {
47
+ if (isPlatformBrowser(this.platformId)) {
48
+ const direction = this.i18n.language == 'en' ? 'ltr' : 'rtl';
49
+ document.documentElement.setAttribute('dir', direction);
50
+ }
51
+ }
52
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: CoreAppComponent, deps: [{ token: i1.SegmentDynamicLoaderService }, { token: DOCUMENT }, { token: i2.Router }, { token: i3.SidenavService }, { token: i3.CoreI18nService }, { token: i3.CoreService }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component });
45
53
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.8", type: CoreAppComponent, isStandalone: true, selector: "lib-app", providers: [
46
54
  { provide: DynamicComponentInjectorToken, useValue: { /* your value here */} }
47
- ], ngImport: i0, template: "<core-layout>\r\n @if (!loading['form']) {\r\n\r\n @if (noError) {\r\n <core-service-header\r\n [isLoading]=\"false\"\r\n [formTitle]=\"formTitle\"\r\n [form]=\"form\">\r\n </core-service-header>\r\n <app-workflow-section\r\n workflow\r\n [segmentDynamicLoaderService]=\"segmentDynamicLoader\"\r\n [form]=\"form\" [sections]=\"form?.['sections']\">\r\n <app-request-details-section\r\n [section]=\"form.sections[0]\" [form]=\"form\" [lov]=\"form?.lovs\" className=\"form-section\"\r\n [isReadOnly]=\"form.sections[0].header.readOnly\"></app-request-details-section>\r\n </app-workflow-section>\r\n } @else {\r\n @if (errorMessage?.length) {\r\n <ds-message></ds-message>\r\n @for (item of errorMessage; track $index) {\r\n <div class=\"d-flex justify-content-center\">\r\n <span class=\"fc-coral fs-18\" >{{ item?.['message'] }}</span>\r\n </div>\r\n }\r\n } @else {\r\n <ds-message label=\"{{i18n.translate('pageErrorLoading')}}\"></ds-message>\r\n }\r\n }\r\n } @else {\r\n <core-service-header header [formTitle]=\"formTitle\" [isLoading]=\"true\">\r\n </core-service-header>\r\n }\r\n</core-layout>\r\n", styles: [""], dependencies: [{ kind: "component", type:
55
+ ], ngImport: i0, template: "<core-layout>\r\n @if (!loading['form']) {\r\n\r\n @if (noError) {\r\n <core-service-header\r\n [isLoading]=\"false\"\r\n [formTitle]=\"formTitle\"\r\n [isReadOnly]=\"form.sections[0].header.readOnly\"\r\n [form]=\"form\">\r\n </core-service-header>\r\n <app-workflow-section\r\n workflow\r\n [segmentDynamicLoaderService]=\"segmentDynamicLoader\"\r\n [form]=\"form\" [sections]=\"form?.['sections']\">\r\n <app-request-details-section\r\n [section]=\"form.sections[0]\" [form]=\"form\" [lov]=\"form?.lovs\" className=\"form-section\"\r\n [isReadOnly]=\"form.sections[0].header.readOnly\"></app-request-details-section>\r\n </app-workflow-section>\r\n } @else {\r\n @if (errorMessage?.length) {\r\n <ds-message></ds-message>\r\n @for (item of errorMessage; track $index) {\r\n <div class=\"d-flex justify-content-center\">\r\n <span class=\"fc-coral fs-18\" >{{ item?.['message'] }}</span>\r\n </div>\r\n }\r\n } @else {\r\n <ds-message label=\"{{i18n.translate('pageErrorLoading')}}\"></ds-message>\r\n }\r\n }\r\n } @else {\r\n <core-service-header header [formTitle]=\"formTitle\" [isLoading]=\"true\">\r\n </core-service-header>\r\n }\r\n</core-layout>\r\n", styles: [""], dependencies: [{ kind: "component", type:
48
56
  // DynamicModule,
49
- LayoutComponent, selector: "core-layout", inputs: ["form", "formTitle", "isLoading", "serviceBrief"] }, { kind: "component", type: ServiceHeaderComponent, selector: "core-service-header", inputs: ["form", "showHistory", "isLoading", "showApprovalHistory", "approvalHistory", "creationDate", "formTitle", "section", "serviceFaq"] }, { kind: "component", type: WorkflowSectionComponent, selector: "app-workflow-section", inputs: ["sections", "isReadOnly", "isLoading", "form", "contentClass", "sectionsController", "segmentDynamicLoaderService", "sectionFormComponent", "sectionName"], outputs: ["sectionSubmitted"] }, { kind: "component", type: RequestDetailsSectionComponent, selector: "app-request-details-section", inputs: ["isReadOnly", "section", "form", "lov", "className"] }] });
57
+ LayoutComponent, selector: "core-layout", inputs: ["form", "formTitle", "isLoading", "serviceBrief"] }, { kind: "component", type: ServiceHeaderComponent, selector: "core-service-header", inputs: ["form", "showHistory", "isLoading", "isReadOnly", "showApprovalHistory", "approvalHistory", "creationDate", "formTitle", "section", "serviceFaq"] }, { kind: "component", type: WorkflowSectionComponent, selector: "app-workflow-section", inputs: ["sections", "isReadOnly", "isLoading", "form", "contentClass", "sectionsController", "segmentDynamicLoaderService", "sectionFormComponent", "sectionName"], outputs: ["sectionSubmitted"] }, { kind: "component", type: RequestDetailsSectionComponent, selector: "app-request-details-section", inputs: ["isReadOnly", "section", "form", "lov", "className"] }] });
50
58
  }
51
59
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: CoreAppComponent, decorators: [{
52
60
  type: Component,
@@ -58,9 +66,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
58
66
  RequestDetailsSectionComponent
59
67
  ], schemas: [CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA], providers: [
60
68
  { provide: DynamicComponentInjectorToken, useValue: { /* your value here */} }
61
- ], template: "<core-layout>\r\n @if (!loading['form']) {\r\n\r\n @if (noError) {\r\n <core-service-header\r\n [isLoading]=\"false\"\r\n [formTitle]=\"formTitle\"\r\n [form]=\"form\">\r\n </core-service-header>\r\n <app-workflow-section\r\n workflow\r\n [segmentDynamicLoaderService]=\"segmentDynamicLoader\"\r\n [form]=\"form\" [sections]=\"form?.['sections']\">\r\n <app-request-details-section\r\n [section]=\"form.sections[0]\" [form]=\"form\" [lov]=\"form?.lovs\" className=\"form-section\"\r\n [isReadOnly]=\"form.sections[0].header.readOnly\"></app-request-details-section>\r\n </app-workflow-section>\r\n } @else {\r\n @if (errorMessage?.length) {\r\n <ds-message></ds-message>\r\n @for (item of errorMessage; track $index) {\r\n <div class=\"d-flex justify-content-center\">\r\n <span class=\"fc-coral fs-18\" >{{ item?.['message'] }}</span>\r\n </div>\r\n }\r\n } @else {\r\n <ds-message label=\"{{i18n.translate('pageErrorLoading')}}\"></ds-message>\r\n }\r\n }\r\n } @else {\r\n <core-service-header header [formTitle]=\"formTitle\" [isLoading]=\"true\">\r\n </core-service-header>\r\n }\r\n</core-layout>\r\n" }]
69
+ ], template: "<core-layout>\r\n @if (!loading['form']) {\r\n\r\n @if (noError) {\r\n <core-service-header\r\n [isLoading]=\"false\"\r\n [formTitle]=\"formTitle\"\r\n [isReadOnly]=\"form.sections[0].header.readOnly\"\r\n [form]=\"form\">\r\n </core-service-header>\r\n <app-workflow-section\r\n workflow\r\n [segmentDynamicLoaderService]=\"segmentDynamicLoader\"\r\n [form]=\"form\" [sections]=\"form?.['sections']\">\r\n <app-request-details-section\r\n [section]=\"form.sections[0]\" [form]=\"form\" [lov]=\"form?.lovs\" className=\"form-section\"\r\n [isReadOnly]=\"form.sections[0].header.readOnly\"></app-request-details-section>\r\n </app-workflow-section>\r\n } @else {\r\n @if (errorMessage?.length) {\r\n <ds-message></ds-message>\r\n @for (item of errorMessage; track $index) {\r\n <div class=\"d-flex justify-content-center\">\r\n <span class=\"fc-coral fs-18\" >{{ item?.['message'] }}</span>\r\n </div>\r\n }\r\n } @else {\r\n <ds-message label=\"{{i18n.translate('pageErrorLoading')}}\"></ds-message>\r\n }\r\n }\r\n } @else {\r\n <core-service-header header [formTitle]=\"formTitle\" [isLoading]=\"true\">\r\n </core-service-header>\r\n }\r\n</core-layout>\r\n" }]
62
70
  }], ctorParameters: () => [{ type: i1.SegmentDynamicLoaderService }, { type: Document, decorators: [{
63
71
  type: Inject,
64
72
  args: [DOCUMENT]
65
- }] }, { type: i2.Router }, { type: i3.SidenavService }, { type: i3.CoreI18nService }, { type: i3.CoreService }] });
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JwbS1jb3JlL3NyYy9saWIvYXBwL2FwcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9icG0tY29yZS9zcmMvbGliL2FwcC9hcHAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxFQUFDLGVBQWUsRUFBRSxzQkFBc0IsRUFBRSx3QkFBd0IsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQ3ZILE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUl6QyxPQUFPLEVBQUMsOEJBQThCLEVBQUMsTUFBTSw0RUFBNEUsQ0FBQztBQUUxSCxPQUFPLEVBQUMsNkJBQTZCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7QUFvQm5FLE1BQU0sT0FBTyxnQkFBZ0I7SUFTbEI7SUFDNEI7SUFDbEI7SUFDQTtJQUNWO0lBQ1U7SUFibkIsT0FBTyxHQUFHO1FBQ1IsSUFBSSxFQUFFLEtBQUs7S0FDWixDQUFBO0lBQ0QsSUFBSSxDQUFNO0lBQ1YsU0FBUyxHQUFXLE1BQU0sQ0FBQztJQUMzQixPQUFPLEdBQUcsSUFBSSxDQUFDO0lBQ2YsWUFBWSxDQUFLO0lBQ2pCLFlBQ1Msb0JBQWlELEVBQ3JCLFFBQWtCLEVBQ3BDLE1BQWMsRUFDZCxjQUE4QixFQUN4QyxJQUFxQixFQUNYLFdBQXdCO1FBTGxDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBNkI7UUFDckIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNwQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQ3hDLFNBQUksR0FBSixJQUFJLENBQWlCO1FBQ1gsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFFekMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUE7UUFDM0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxTQUFTLENBQUM7WUFDcEMsSUFBSSxFQUFFLENBQUMsSUFBUyxFQUFFLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO2dCQUNqQixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQTtZQUM5QixDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ2IsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFBO2dCQUM1QixJQUFJLENBQUMsWUFBWSxHQUFHLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQTtZQUNoRCxDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzt1R0E1QlUsZ0JBQWdCLDZEQVVqQixRQUFROzJGQVZQLGdCQUFnQixzREFMaEI7WUFDVCxFQUFDLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxRQUFRLEVBQUUsRUFBRSxxQkFBcUIsQ0FBQyxFQUFDO1NBQzdFLDBCQ3pCSCxxd0NBa0NBO2dCRGxCSSxpQkFBaUI7Z0JBQ2pCLGVBQWUsb0hBQ2Ysc0JBQXNCLDhNQUN0Qix3QkFBd0IscVFBQ3hCLDhCQUE4Qjs7MkZBUXJCLGdCQUFnQjtrQkFsQjVCLFNBQVM7K0JBQ0UsU0FBUyxjQUNQLElBQUksV0FHUDt3QkFDUCxpQkFBaUI7d0JBQ2pCLGVBQWU7d0JBQ2Ysc0JBQXNCO3dCQUN0Qix3QkFBd0I7d0JBQ3hCLDhCQUE4QjtxQkFDL0IsV0FDUSxDQUFDLHNCQUFzQixFQUFFLGdCQUFnQixDQUFDLGFBQ3hDO3dCQUNULEVBQUMsT0FBTyxFQUFFLDZCQUE2QixFQUFFLFFBQVEsRUFBRSxFQUFFLHFCQUFxQixDQUFDLEVBQUM7cUJBQzdFOzswQkFhRSxNQUFNOzJCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgSW5qZWN0LCBOT19FUlJPUlNfU0NIRU1BfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtMYXlvdXRDb21wb25lbnQsIFNlcnZpY2VIZWFkZXJDb21wb25lbnQsIFdvcmtmbG93U2VjdGlvbkNvbXBvbmVudH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvYXBwLWNvbXBvbmVudC1zZWN0aW9uc1wiO1xyXG5pbXBvcnQge0RPQ1VNRU5UfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7Um91dGVyfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7Q29yZUkxOG5TZXJ2aWNlLCBDb3JlU2VydmljZSwgU2lkZW5hdlNlcnZpY2V9IGZyb20gXCIuLi9zZXJ2aWNlc1wiO1xyXG5pbXBvcnQge0Zvcm19IGZyb20gXCIuLi9pbnRlcmZhY2VzXCI7XHJcbmltcG9ydCB7UmVxdWVzdERldGFpbHNTZWN0aW9uQ29tcG9uZW50fSBmcm9tIFwiLi4vdGVzdENvbXBvbmVudC9yZXF1ZXN0LWRldGFpbHMtc2VjdGlvbi9yZXF1ZXN0LWRldGFpbHMtc2VjdGlvbi5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtTZWdtZW50RHluYW1pY0xvYWRlclNlcnZpY2V9IGZyb20gXCIuLi90ZXN0Q29tcG9uZW50L3NlcnZpY2VzL3NlZ21lbnQtZHluYW1pYy1sb2FkZXIuc2VydmljZVwiO1xyXG5pbXBvcnQge0R5bmFtaWNDb21wb25lbnRJbmplY3RvclRva2VufSBmcm9tIFwibmctZHluYW1pYy1jb21wb25lbnRcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWFwcCcsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICB0ZW1wbGF0ZVVybDogJy4vYXBwLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vYXBwLmNvbXBvbmVudC5jc3MnLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIC8vIER5bmFtaWNNb2R1bGUsXHJcbiAgICBMYXlvdXRDb21wb25lbnQsXHJcbiAgICBTZXJ2aWNlSGVhZGVyQ29tcG9uZW50LFxyXG4gICAgV29ya2Zsb3dTZWN0aW9uQ29tcG9uZW50LFxyXG4gICAgUmVxdWVzdERldGFpbHNTZWN0aW9uQ29tcG9uZW50XHJcbiAgXSxcclxuICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgTk9fRVJST1JTX1NDSEVNQV0sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7cHJvdmlkZTogRHluYW1pY0NvbXBvbmVudEluamVjdG9yVG9rZW4sIHVzZVZhbHVlOiB7IC8qIHlvdXIgdmFsdWUgaGVyZSAqL319XHJcbiAgXVxyXG5cclxufSlcclxuZXhwb3J0IGNsYXNzIENvcmVBcHBDb21wb25lbnQge1xyXG4gIGxvYWRpbmcgPSB7XHJcbiAgICBmb3JtOiBmYWxzZVxyXG4gIH1cclxuICBmb3JtOiBGb3JtXHJcbiAgZm9ybVRpdGxlOiBzdHJpbmcgPSAnVGVzdCc7XHJcbiAgbm9FcnJvciA9IHRydWU7XHJcbiAgZXJyb3JNZXNzYWdlOiBbXTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBzZWdtZW50RHluYW1pY0xvYWRlcjogU2VnbWVudER5bmFtaWNMb2FkZXJTZXJ2aWNlLFxyXG4gICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudDogRG9jdW1lbnQsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBzaWRlbmF2U2VydmljZTogU2lkZW5hdlNlcnZpY2UsXHJcbiAgICBwdWJsaWMgaTE4bjogQ29yZUkxOG5TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb3JlU2VydmljZTogQ29yZVNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMubG9hZGluZ1snZm9ybSddID0gdHJ1ZVxyXG4gICAgdGhpcy5jb3JlU2VydmljZS5sb2FkRm9ybSgpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChmb3JtOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmZvcm0gPSBmb3JtO1xyXG4gICAgICAgIHRoaXMubG9hZGluZ1snZm9ybSddID0gZmFsc2VcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICB0aGlzLm5vRXJyb3IgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmxvYWRpbmdbJ2Zvcm0nXSA9IGZhbHNlXHJcbiAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBlcnI/LmVycm9yPy5tZXRhPy5tZXNzYWdlc1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxjb3JlLWxheW91dD5cclxuICBAaWYgKCFsb2FkaW5nWydmb3JtJ10pIHtcclxuXHJcbiAgICBAaWYgKG5vRXJyb3IpIHtcclxuICAgICAgPGNvcmUtc2VydmljZS1oZWFkZXJcclxuICAgICAgICBbaXNMb2FkaW5nXT1cImZhbHNlXCJcclxuICAgICAgICBbZm9ybVRpdGxlXT1cImZvcm1UaXRsZVwiXHJcbiAgICAgICAgW2Zvcm1dPVwiZm9ybVwiPlxyXG4gICAgICA8L2NvcmUtc2VydmljZS1oZWFkZXI+XHJcbiAgICAgIDxhcHAtd29ya2Zsb3ctc2VjdGlvblxyXG4gICAgICAgIHdvcmtmbG93XHJcbiAgICAgICAgW3NlZ21lbnREeW5hbWljTG9hZGVyU2VydmljZV09XCJzZWdtZW50RHluYW1pY0xvYWRlclwiXHJcbiAgICAgICAgW2Zvcm1dPVwiZm9ybVwiIFtzZWN0aW9uc109XCJmb3JtPy5bJ3NlY3Rpb25zJ11cIj5cclxuICAgICAgICA8YXBwLXJlcXVlc3QtZGV0YWlscy1zZWN0aW9uXHJcbiAgICAgICAgICBbc2VjdGlvbl09XCJmb3JtLnNlY3Rpb25zWzBdXCIgW2Zvcm1dPVwiZm9ybVwiIFtsb3ZdPVwiZm9ybT8ubG92c1wiIGNsYXNzTmFtZT1cImZvcm0tc2VjdGlvblwiXHJcbiAgICAgICAgICBbaXNSZWFkT25seV09XCJmb3JtLnNlY3Rpb25zWzBdLmhlYWRlci5yZWFkT25seVwiPjwvYXBwLXJlcXVlc3QtZGV0YWlscy1zZWN0aW9uPlxyXG4gICAgICA8L2FwcC13b3JrZmxvdy1zZWN0aW9uPlxyXG4gICAgfSBAZWxzZSB7XHJcbiAgICAgIEBpZiAoZXJyb3JNZXNzYWdlPy5sZW5ndGgpIHtcclxuICAgICAgICA8ZHMtbWVzc2FnZT48L2RzLW1lc3NhZ2U+XHJcbiAgICAgICAgQGZvciAoaXRlbSBvZiBlcnJvck1lc3NhZ2U7IHRyYWNrICRpbmRleCkge1xyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmMtY29yYWwgZnMtMThcIiA+e3sgaXRlbT8uWydtZXNzYWdlJ10gfX08L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9XHJcbiAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgIDxkcy1tZXNzYWdlIGxhYmVsPVwie3tpMThuLnRyYW5zbGF0ZSgncGFnZUVycm9yTG9hZGluZycpfX1cIj48L2RzLW1lc3NhZ2U+XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9IEBlbHNlIHtcclxuICAgIDxjb3JlLXNlcnZpY2UtaGVhZGVyIGhlYWRlciBbZm9ybVRpdGxlXT1cImZvcm1UaXRsZVwiIFtpc0xvYWRpbmddPVwidHJ1ZVwiPlxyXG4gICAgPC9jb3JlLXNlcnZpY2UtaGVhZGVyPlxyXG4gIH1cclxuPC9jb3JlLWxheW91dD5cclxuIl19
73
+ }] }, { type: i2.Router }, { type: i3.SidenavService }, { type: i3.CoreI18nService }, { type: i3.CoreService }, { type: undefined, decorators: [{
74
+ type: Inject,
75
+ args: [PLATFORM_ID]
76
+ }] }] });
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JwbS1jb3JlL3NyYy9saWIvYXBwL2FwcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9icG0tY29yZS9zcmMvbGliL2FwcC9hcHAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixTQUFTLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN0SCxPQUFPLEVBQUMsZUFBZSxFQUFFLHNCQUFzQixFQUFFLHdCQUF3QixFQUFDLE1BQU0sc0NBQXNDLENBQUM7QUFDdkgsT0FBTyxFQUFDLFFBQVEsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBSTVELE9BQU8sRUFBQyw4QkFBOEIsRUFBQyxNQUFNLDRFQUE0RSxDQUFDO0FBRTFILE9BQU8sRUFBQyw2QkFBNkIsRUFBQyxNQUFNLHNCQUFzQixDQUFDOzs7OztBQW9CbkUsTUFBTSxPQUFPLGdCQUFnQjtJQVNsQjtJQUM0QjtJQUNsQjtJQUNBO0lBQ1Y7SUFDVTtJQUNZO0lBZC9CLE9BQU8sR0FBRztRQUNSLElBQUksRUFBRSxLQUFLO0tBQ1osQ0FBQTtJQUNELElBQUksQ0FBTTtJQUNWLFNBQVMsR0FBVyxNQUFNLENBQUM7SUFDM0IsT0FBTyxHQUFHLElBQUksQ0FBQztJQUNmLFlBQVksQ0FBSztJQUNqQixZQUNTLG9CQUFpRCxFQUNyQixRQUFrQixFQUNwQyxNQUFjLEVBQ2QsY0FBOEIsRUFDeEMsSUFBcUIsRUFDWCxXQUF3QixFQUNaLFVBQWU7UUFOckMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUE2QjtRQUNyQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ3BDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDeEMsU0FBSSxHQUFKLElBQUksQ0FBaUI7UUFDWCxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUNaLGVBQVUsR0FBVixVQUFVLENBQUs7UUFFNUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUE7UUFDM0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxTQUFTLENBQUM7WUFDcEMsSUFBSSxFQUFFLENBQUMsSUFBUyxFQUFFLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO2dCQUNqQixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQTtZQUM5QixDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ2IsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFBO2dCQUM1QixJQUFJLENBQUMsWUFBWSxHQUFHLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQTtZQUNoRCxDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ3ZDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7WUFDN0QsUUFBUSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQzFELENBQUM7SUFDSCxDQUFDO3VHQXBDVSxnQkFBZ0IsNkRBVWpCLFFBQVEsMkhBS1IsV0FBVzsyRkFmVixnQkFBZ0Isc0RBTGhCO1lBQ1QsRUFBQyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsUUFBUSxFQUFFLEVBQUUscUJBQXFCLENBQUMsRUFBQztTQUM3RSwwQkN6QkgsazBDQW1DQTtnQkRuQkksaUJBQWlCO2dCQUNqQixlQUFlLG9IQUNmLHNCQUFzQiw0TkFDdEIsd0JBQXdCLHFRQUN4Qiw4QkFBOEI7OzJGQVFyQixnQkFBZ0I7a0JBbEI1QixTQUFTOytCQUNFLFNBQVMsY0FDUCxJQUFJLFdBR1A7d0JBQ1AsaUJBQWlCO3dCQUNqQixlQUFlO3dCQUNmLHNCQUFzQjt3QkFDdEIsd0JBQXdCO3dCQUN4Qiw4QkFBOEI7cUJBQy9CLFdBQ1EsQ0FBQyxzQkFBc0IsRUFBRSxnQkFBZ0IsQ0FBQyxhQUN4Qzt3QkFDVCxFQUFDLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxRQUFRLEVBQUUsRUFBRSxxQkFBcUIsQ0FBQyxFQUFDO3FCQUM3RTs7MEJBYUUsTUFBTTsyQkFBQyxRQUFROzswQkFLZixNQUFNOzJCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FmdGVyVmlld0luaXQsIENvbXBvbmVudCwgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgSW5qZWN0LCBOT19FUlJPUlNfU0NIRU1BLCBQTEFURk9STV9JRH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7TGF5b3V0Q29tcG9uZW50LCBTZXJ2aWNlSGVhZGVyQ29tcG9uZW50LCBXb3JrZmxvd1NlY3Rpb25Db21wb25lbnR9IGZyb20gXCIuLi9jb21wb25lbnRzL2FwcC1jb21wb25lbnQtc2VjdGlvbnNcIjtcclxuaW1wb3J0IHtET0NVTUVOVCwgaXNQbGF0Zm9ybUJyb3dzZXJ9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHtSb3V0ZXJ9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHtDb3JlSTE4blNlcnZpY2UsIENvcmVTZXJ2aWNlLCBTaWRlbmF2U2VydmljZX0gZnJvbSBcIi4uL3NlcnZpY2VzXCI7XHJcbmltcG9ydCB7Rm9ybX0gZnJvbSBcIi4uL2ludGVyZmFjZXNcIjtcclxuaW1wb3J0IHtSZXF1ZXN0RGV0YWlsc1NlY3Rpb25Db21wb25lbnR9IGZyb20gXCIuLi90ZXN0Q29tcG9uZW50L3JlcXVlc3QtZGV0YWlscy1zZWN0aW9uL3JlcXVlc3QtZGV0YWlscy1zZWN0aW9uLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge1NlZ21lbnREeW5hbWljTG9hZGVyU2VydmljZX0gZnJvbSBcIi4uL3Rlc3RDb21wb25lbnQvc2VydmljZXMvc2VnbWVudC1keW5hbWljLWxvYWRlci5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7RHluYW1pY0NvbXBvbmVudEluamVjdG9yVG9rZW59IGZyb20gXCJuZy1keW5hbWljLWNvbXBvbmVudFwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItYXBwJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hcHAuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9hcHAuY29tcG9uZW50LmNzcycsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgLy8gRHluYW1pY01vZHVsZSxcclxuICAgIExheW91dENvbXBvbmVudCxcclxuICAgIFNlcnZpY2VIZWFkZXJDb21wb25lbnQsXHJcbiAgICBXb3JrZmxvd1NlY3Rpb25Db21wb25lbnQsXHJcbiAgICBSZXF1ZXN0RGV0YWlsc1NlY3Rpb25Db21wb25lbnRcclxuICBdLFxyXG4gIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBOT19FUlJPUlNfU0NIRU1BXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtwcm92aWRlOiBEeW5hbWljQ29tcG9uZW50SW5qZWN0b3JUb2tlbiwgdXNlVmFsdWU6IHsgLyogeW91ciB2YWx1ZSBoZXJlICovfX1cclxuICBdXHJcblxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29yZUFwcENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xyXG4gIGxvYWRpbmcgPSB7XHJcbiAgICBmb3JtOiBmYWxzZVxyXG4gIH1cclxuICBmb3JtOiBGb3JtXHJcbiAgZm9ybVRpdGxlOiBzdHJpbmcgPSAnVGVzdCc7XHJcbiAgbm9FcnJvciA9IHRydWU7XHJcbiAgZXJyb3JNZXNzYWdlOiBbXTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBzZWdtZW50RHluYW1pY0xvYWRlcjogU2VnbWVudER5bmFtaWNMb2FkZXJTZXJ2aWNlLFxyXG4gICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudDogRG9jdW1lbnQsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBzaWRlbmF2U2VydmljZTogU2lkZW5hdlNlcnZpY2UsXHJcbiAgICBwdWJsaWMgaTE4bjogQ29yZUkxOG5TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb3JlU2VydmljZTogQ29yZVNlcnZpY2UsXHJcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IGFueVxyXG4gICkge1xyXG4gICAgdGhpcy5sb2FkaW5nWydmb3JtJ10gPSB0cnVlXHJcbiAgICB0aGlzLmNvcmVTZXJ2aWNlLmxvYWRGb3JtKCkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKGZvcm06IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZm9ybSA9IGZvcm07XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nWydmb3JtJ10gPSBmYWxzZVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgIHRoaXMubm9FcnJvciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMubG9hZGluZ1snZm9ybSddID0gZmFsc2VcclxuICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IGVycj8uZXJyb3I/Lm1ldGE/Lm1lc3NhZ2VzXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcclxuICAgICAgY29uc3QgZGlyZWN0aW9uID0gdGhpcy5pMThuLmxhbmd1YWdlID09ICdlbicgPyAnbHRyJyA6ICdydGwnO1xyXG4gICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2V0QXR0cmlidXRlKCdkaXInLCBkaXJlY3Rpb24pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuIiwiPGNvcmUtbGF5b3V0PlxyXG4gIEBpZiAoIWxvYWRpbmdbJ2Zvcm0nXSkge1xyXG5cclxuICAgIEBpZiAobm9FcnJvcikge1xyXG4gICAgICA8Y29yZS1zZXJ2aWNlLWhlYWRlclxyXG4gICAgICAgIFtpc0xvYWRpbmddPVwiZmFsc2VcIlxyXG4gICAgICAgIFtmb3JtVGl0bGVdPVwiZm9ybVRpdGxlXCJcclxuICAgICAgICBbaXNSZWFkT25seV09XCJmb3JtLnNlY3Rpb25zWzBdLmhlYWRlci5yZWFkT25seVwiXHJcbiAgICAgICAgW2Zvcm1dPVwiZm9ybVwiPlxyXG4gICAgICA8L2NvcmUtc2VydmljZS1oZWFkZXI+XHJcbiAgICAgIDxhcHAtd29ya2Zsb3ctc2VjdGlvblxyXG4gICAgICAgIHdvcmtmbG93XHJcbiAgICAgICAgW3NlZ21lbnREeW5hbWljTG9hZGVyU2VydmljZV09XCJzZWdtZW50RHluYW1pY0xvYWRlclwiXHJcbiAgICAgICAgW2Zvcm1dPVwiZm9ybVwiIFtzZWN0aW9uc109XCJmb3JtPy5bJ3NlY3Rpb25zJ11cIj5cclxuICAgICAgICA8YXBwLXJlcXVlc3QtZGV0YWlscy1zZWN0aW9uXHJcbiAgICAgICAgICBbc2VjdGlvbl09XCJmb3JtLnNlY3Rpb25zWzBdXCIgW2Zvcm1dPVwiZm9ybVwiIFtsb3ZdPVwiZm9ybT8ubG92c1wiIGNsYXNzTmFtZT1cImZvcm0tc2VjdGlvblwiXHJcbiAgICAgICAgICBbaXNSZWFkT25seV09XCJmb3JtLnNlY3Rpb25zWzBdLmhlYWRlci5yZWFkT25seVwiPjwvYXBwLXJlcXVlc3QtZGV0YWlscy1zZWN0aW9uPlxyXG4gICAgICA8L2FwcC13b3JrZmxvdy1zZWN0aW9uPlxyXG4gICAgfSBAZWxzZSB7XHJcbiAgICAgIEBpZiAoZXJyb3JNZXNzYWdlPy5sZW5ndGgpIHtcclxuICAgICAgICA8ZHMtbWVzc2FnZT48L2RzLW1lc3NhZ2U+XHJcbiAgICAgICAgQGZvciAoaXRlbSBvZiBlcnJvck1lc3NhZ2U7IHRyYWNrICRpbmRleCkge1xyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmMtY29yYWwgZnMtMThcIiA+e3sgaXRlbT8uWydtZXNzYWdlJ10gfX08L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9XHJcbiAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgIDxkcy1tZXNzYWdlIGxhYmVsPVwie3tpMThuLnRyYW5zbGF0ZSgncGFnZUVycm9yTG9hZGluZycpfX1cIj48L2RzLW1lc3NhZ2U+XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9IEBlbHNlIHtcclxuICAgIDxjb3JlLXNlcnZpY2UtaGVhZGVyIGhlYWRlciBbZm9ybVRpdGxlXT1cImZvcm1UaXRsZVwiIFtpc0xvYWRpbmddPVwidHJ1ZVwiPlxyXG4gICAgPC9jb3JlLXNlcnZpY2UtaGVhZGVyPlxyXG4gIH1cclxuPC9jb3JlLWxheW91dD5cclxuIl19
@@ -113,12 +113,10 @@ export class PreviousRequestsComponent {
113
113
  this.previousRequests = [];
114
114
  this.coreService.myRequests(this.searchData).subscribe({
115
115
  next: (response) => {
116
- // setTimeout(() => {
117
116
  this.coreService.historyData = response.history;
118
117
  this.previousRequests = this.coreService.historyData;
119
118
  this.coreService.historyDataLoaded = true;
120
119
  this.filterStatus();
121
- // }, 500)
122
120
  },
123
121
  error: (err) => {
124
122
  this.loading = false;
@@ -150,7 +148,7 @@ export class PreviousRequestsComponent {
150
148
  }
151
149
  }
152
150
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: PreviousRequestsComponent, deps: [{ token: i1.MatDialog }, { token: i2.SidenavService }, { token: i2.CoreService }, { token: i3.ToastrService }, { token: i2.CoreI18nService }, { token: i4.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
153
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.8", type: PreviousRequestsComponent, isStandalone: true, selector: "app-history", ngImport: i0, template: "<section class=\"main-sidenav history-sidenav\">\r\n <div class=\"sidenav-title\">\r\n <h3>{{ i18n.translate('PreviousRequests') }}</h3>\r\n <ds-button class=\"close-sidenav\" (click)=\"sidenavService.closeSidenav()\" icon>\r\n <ds-icon icon=\"close\" class=\"fs-20 fc-black\"></ds-icon>\r\n </ds-button>\r\n </div>\r\n\r\n <div\r\n class=\"sidenav-body bc-light-gray\"\r\n >\r\n <section class=\"p-3\">\r\n <header class=\"d-flex align-items-center justify-content-between gap-2 mb-3\">\r\n <h2 class=\"fs-20 fw-medium fc-black mb-0 d-flex align-items-center flex-grow-1 gap-3\">\r\n {{ i18n.translate('AllRequests') }}\r\n <span class=\"title-count fs-14 fw-normal\">{{ previousRequests?.length ? previousRequests?.length : '0' }}</span>\r\n </h2>\r\n <ds-button icon size=\"small\" (click)=\"isOpen = !isOpen\" cdkOverlayOrigin #trigger=\"cdkOverlayOrigin\">\r\n <ds-icon icon=\"filter\" class=\"fc-coral fs-20\" slot=\"prefix\"></ds-icon>\r\n </ds-button>\r\n <mat-button-toggle-group\r\n class=\"icon-toggle flex-nowrap\"\r\n #pageView=\"matButtonToggleGroup\"\r\n (click)=\"$event.stopImmediatePropagation()\"\r\n value=\"list\"\r\n >\r\n <mat-button-toggle value=\"card\">\r\n <span class=\"sfi sfi-card fs-20\"></span>\r\n </mat-button-toggle>\r\n <mat-button-toggle value=\"list\">\r\n <span class=\"sfi sfi-list-dots fs-20\"></span>\r\n </mat-button-toggle>\r\n </mat-button-toggle-group>\r\n </header>\r\n\r\n @if (previousRequests?.length) {\r\n <div class=\"history-cards-container\" *ngIf=\"pageView.value === 'card'\">\r\n <div class=\"p-4 line-height-1 bc-white radius-6 box-shadow\" *ngFor=\"let row of previousRequests\">\r\n <div class=\"d-flex align-items-center gap-2 mb-3\">\r\n <h3\r\n class=\"fs-16 fw-medium flex-grow-1 mb-0 cursor-pointer underline fw-bold\"\r\n (click)=\"viewForm(row?.form?.['formId'])\">{{ row?.form?.['formId'] }}</h3>\r\n </div>\r\n <div class=\"row g-3\">\r\n <div class=\"d-flex flex-column col-6\">\r\n <span class=\"fs-11 fc-dark-gray mb-2\">{{ i18n.translate('formTableCreationDate') }}</span>\r\n <span class=\"fs-12 fw-medium fc-black\">{{ row?.form?.['creationDate'] | date: 'dd/MM/yyyy hh:mm a' }}</span>\r\n </div>\r\n <div class=\"d-flex flex-column col-6 justify-content-end align-items-end\">\r\n\r\n <ds-status [attr.status]=\"row?.form?.formStatus?.key | statusClass\">\r\n {{ row?.form?.formStatus?.value }}\r\n </ds-status>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"table-responsive\" *ngIf=\"pageView.value === 'list'\">\r\n <table *ngIf=\"previousRequests?.length\">\r\n <thead>\r\n <tr>\r\n <th>{{ i18n.translate('formTableFormId') }}</th>\r\n <th>{{ i18n.translate('formTableCreationDate') }}</th>\r\n <th>{{ i18n.translate('Status') }}</th>\r\n </tr>\r\n </thead>\r\n\r\n <tbody *ngFor=\"let row of previousRequests\">\r\n <tr>\r\n <td>\r\n <span class=\"fw-medium cursor-pointer underline fw-bold \" (click)=\"viewForm(row?.form?.['formId'])\">\r\n {{ row?.form?.['formId'] }}\r\n </span>\r\n </td>\r\n <td>{{ row?.form?.['creationDate'] | date: 'dd/MM/yyyy hh:mm a' }}</td>\r\n <td>\r\n <ds-status [attr.status]=\"row?.form?.formStatus?.key | statusClass\">\r\n {{ row?.form?.formStatus?.value }}\r\n </ds-status>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <ds-loading-table *ngIf=\"loading\" [cols]=\"4\" [rows]=\"4\"></ds-loading-table>\r\n </div>\r\n } @else {\r\n <ng-container *ngTemplateOutlet=\"emptyMessage\"></ng-container>\r\n }\r\n </section>\r\n </div>\r\n</section>\r\n\r\n<ng-template\r\n cdkConnectedOverlay\r\n [cdkConnectedOverlayHasBackdrop]=\"true\"\r\n (backdropClick)=\"isOpen = false\"\r\n [cdkConnectedOverlayGrowAfterOpen]=\"true\"\r\n [cdkConnectedOverlayOrigin]=\"trigger\"\r\n [cdkConnectedOverlayOpen]=\"isOpen\"\r\n>\r\n <form [formGroup]=\"filterFormGroup\">\r\n <div class=\"filter-container\">\r\n <div class=\"popup-header border-bottom pb-2\">\r\n <h3 class=\"fs-16 fc-black fw-medium\">{{ i18n.translate('filters') }}</h3>\r\n </div>\r\n <div class=\"d-flex flex-column gap-4 gap-md-3 filter-section bc-white mt-0 pt-3\">\r\n\r\n <app-custom-searchable\r\n class=\"section-item\"\r\n formControlName=\"status\"\r\n label=\"{{ i18n.translate('status') }}\"\r\n [options]=\"statuses\"\r\n [displayedLabel]=\"'value'\"\r\n [key]=\"'key'\">\r\n </app-custom-searchable>\r\n\r\n <app-custom-searchable\r\n class=\"section-item\"\r\n formControlName=\"year\"\r\n label=\"{{ i18n.translate('year') }}\"\r\n [options]=\"yearsOptions\"\r\n [displayedLabel]=\"'value'\"\r\n [key]=\"'key'\">\r\n </app-custom-searchable>\r\n\r\n <app-custom-searchable\r\n class=\"section-item\"\r\n formControlName=\"month\"\r\n label=\"{{ i18n.translate('month') }}\"\r\n [options]=\"monthsOptions\"\r\n [displayedLabel]=\"'value'\"\r\n [key]=\"'key'\">\r\n </app-custom-searchable>\r\n\r\n <div class=\"d-flex align-items-center gap-3 mt-4\">\r\n <ds-button shape=\"outline\" size=\"small\" (click)=\"clearFilters()\">\r\n <span class=\"fs-12\"> {{ i18n.translate('clear') }} </span>\r\n </ds-button>\r\n <ds-button class=\"w-100\" size=\"small\" (click)=\"applyFilters()\">\r\n <span class=\"fs-12\">{{ i18n.translate('applyFilters') }} </span>\r\n </ds-button>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n</ng-template>\r\n\r\n\r\n<ng-template #emptyMessage>\r\n <ds-message label=\"{{i18n.translate('NoData')}}\"></ds-message>\r\n</ng-template>\r\n", styles: [".history-cards-container{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1rem;padding:1rem 0}.filter-section ::ng-deep .mat-form-field.mat-primary{margin-bottom:0}.filter-section ::ng-deep .select-form-field{--placeholder-fc: var(--dark-gray)}.filter-section ::ng-deep .select-datepicker{--input-width: 200px}table thead{display:none}:host .mat-button-toggle-group{--toggle-bg: var(--white);box-shadow:var(--box-shadow)}:host table{--th-bg: var(--gray);--td-bg: var(--white);--tr-even-bc: var(--white);--tr-odd-bc: var(--white)}ds-button[square]::part(base){--btn-padding: 0}@media (min-width: 768px){.history-sidenav{--sidenav-width: 800px}}:host ::ng-deep .select-filter{--input-height: 35px;--input-width: 120px;--input-border: 1px solid var(--white) !important;--input-border-focuse: 1px solid var(--white);--input-border-active: 1px solid var(--white);box-shadow:var(--box-shadow);--input-bg: var(--white) !important}:host ::ng-deep .decisions-container{max-height:340px;overflow:auto;scroll-behavior:smooth;transition:scroll-behavior .5s ease-in-out;height:340px}@media (max-width: 768px){:host ::ng-deep .decisions-container{max-height:320px;height:320px}}[dir=rtl] :host ::ng-deep .decisions-container--btn.reRequest{transform:scaleX(-1)}@media (min-width: 1200px){:host ::ng-deep .decisions-container--name,:host ::ng-deep .decisions-container--date{max-width:120px}}@media (min-width: 1200px){[dir=rtl] :host ::ng-deep .decisions-container--name{max-width:initial}}:host ::ng-deep .decisions-container--item{display:flex;align-items:center;gap:1rem;min-height:105px;overflow:hidden;position:relative;cursor:pointer}@media (min-width: 991px){:host ::ng-deep .decisions-container--item h4{max-width:calc(100% - 200px);display:inline-block}}:host ::ng-deep .decisions-container--item:not(:last-child){margin-bottom:.75rem}:host ::ng-deep .decisions-container--item ds-status::part(base){--status-width: 60px}:host ::ng-deep .decisions-container--info span{position:relative;display:flex;align-items:center;gap:.5rem}:host ::ng-deep .decisions-container--info span:not(:first-of-type):before{content:\"\";min-width:3px;width:3px;height:3px;border-radius:50%;background-color:var(--black)}@media (min-width: 991px){:host ::ng-deep .decisions-container--status{position:absolute;top:1rem;right:0}}:host ::ng-deep .decisions-title{display:block;display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;-webkit-line-clamp:1}::ng-deep .main-portal mat-form-field.no-padding .mat-form-field-wrapper{padding-bottom:0!important}::ng-deep ds-button[hidden]{display:none!important}ds-button[circle]::part(base){--btn-color: inherit;--btn-border-color: inherit;--btn-bg-color: inherit;--btn-height: 25px;--btn-min-width: 25px}ds-button[circle][color=red]{--btn-bg-color: var(--red)}ds-button[circle][color=red]:hover{--btn-bg-color: var(--white)}ds-button[circle][color=green]{--btn-bg-color: var(--green)}ds-button[circle][color=green]:hover{--btn-bg-color: var(--white)}ds-button[circle][color=yellow]{--btn-bg-color: var(--yellow)}ds-button[circle][color=yellow]:hover{--btn-bg-color: var(--white)}ds-button[circle][color=coral]{--btn-bg-color: var(--coral)}ds-button[circle][color=coral]:hover{--btn-bg-color: var(--white)}ds-button[circle][color=coral]:hover svg path,ds-button[circle][color=coral]:hover svg line{fill:var(--coral)}ds-button[circle][color=orange]{--btn-bg-color: var(--orange)}ds-button[circle][color=orange]:hover{--btn-bg-color: var(--white)}@media (min-width: 991px){.decisions-container--item .decisions-container--status{width:0;transition:var(--default-transition)}}@media (min-width: 991px){.decisions-container--item:hover .decisions-container--status{transition:var(--default-transition);width:auto;height:auto;right:1.5rem}}::ng-deep .mat-tooltip{max-width:187px;background:#1d252d}::ng-deep ds-button.dots::part(base){text-decoration:none;padding:0;min-width:auto}@media (max-width: 300px){::ng-deep ds-button[shape=text]::part(base){padding:0 5px}::ng-deep ds-button.mat-menu-trigger::part(base){padding:0 5px}}.search-form-input{color:var(--black);font-weight:var(--font-medium);padding:0 .75rem;border:none;height:100%}.search-form-input::placeholder{color:var(--dark-gray);font-weight:var(--font-regular)}::ng-deep .select-user-dropdown{min-width:300px}::ng-deep .filter-container{background-color:var(--white);padding:1.5rem;border-radius:4px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i5.DatePipe, name: "date" }, { kind: "ngmodule", type: MatMenuModule }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: MatDialogModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatButtonToggleModule }, { kind: "directive", type: i6.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "disabledInteractive", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i6.MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled", "disabledInteractive"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "pipe", type: StatusStylePipe, name: "statusClass" }, { kind: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: CustomSearchableComponent, selector: "app-custom-searchable", inputs: ["options", "disabled", "displayedLabel", "key", "floatLabel", "className"], outputs: ["selectedValue", "isLengthGreaterThan4"] }, { kind: "directive", type: CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }] });
151
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.8", type: PreviousRequestsComponent, isStandalone: true, selector: "app-history", ngImport: i0, template: "<section class=\"main-sidenav history-sidenav\">\r\n <div class=\"sidenav-title\">\r\n <h3>{{ i18n.translate('PreviousRequests') }}</h3>\r\n <ds-button class=\"close-sidenav\" (click)=\"sidenavService.closeSidenav()\" icon>\r\n <ds-icon icon=\"close\" class=\"fs-20 fc-black\"></ds-icon>\r\n </ds-button>\r\n </div>\r\n\r\n <div class=\"sidenav-body bc-light-gray\">\r\n <section class=\"p-3\">\r\n <header class=\"d-flex align-items-center justify-content-between gap-2 mb-3\">\r\n <h2 class=\"fs-20 fw-medium fc-black mb-0 d-flex align-items-center flex-grow-1 gap-3\">\r\n {{ i18n.translate('AllRequests') }}\r\n <span class=\"title-count fs-14 fw-normal\">{{ previousRequests?.length ? previousRequests?.length : '0' }}</span>\r\n </h2>\r\n <ds-button icon size=\"small\" (click)=\"isOpen = !isOpen\" cdkOverlayOrigin #trigger=\"cdkOverlayOrigin\">\r\n <ds-icon icon=\"filter\" class=\"fc-coral fs-20\" slot=\"prefix\"></ds-icon>\r\n </ds-button>\r\n <mat-button-toggle-group\r\n class=\"icon-toggle flex-nowrap\"\r\n #pageView=\"matButtonToggleGroup\"\r\n (click)=\"$event.stopImmediatePropagation()\"\r\n value=\"list\"\r\n >\r\n <mat-button-toggle value=\"card\">\r\n <span class=\"sfi sfi-card fs-20\"></span>\r\n </mat-button-toggle>\r\n <mat-button-toggle value=\"list\">\r\n <span class=\"sfi sfi-list-dots fs-20\"></span>\r\n </mat-button-toggle>\r\n </mat-button-toggle-group>\r\n </header>\r\n\r\n @if (previousRequests?.length) {\r\n <div class=\"history-cards-container\" *ngIf=\"pageView.value === 'card'\">\r\n @if (loading) {\r\n <ng-container>\r\n <div class=\"p-4 line-height-1 bc-white radius-6 box-shadow\" *ngFor=\"let row of [0,1,2,3]\">\r\n <div class=\"d-flex align-items-center gap-2 mb-3\">\r\n <h3 class=\"loading-bg fs-16 fw-medium flex-grow-1 mb-0 cursor-pointer underline fw-bold\"></h3>\r\n </div>\r\n <div class=\"row g-3\">\r\n <div class=\"d-flex flex-column col-6\">\r\n <span class=\"fs-11 fc-dark-gray mb-2 loading-bg\"></span>\r\n <span class=\"fs-12 fw-medium fc-black loading-bg\"></span>\r\n </div>\r\n <div class=\"d-flex flex-column col-6 justify-content-end align-items-end\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n } @else {\r\n <div class=\"p-4 line-height-1 bc-white radius-6 box-shadow\" *ngFor=\"let row of previousRequests\">\r\n <div class=\"d-flex align-items-center gap-2 mb-3\">\r\n <h3\r\n class=\"fs-16 fw-medium flex-grow-1 mb-0 cursor-pointer underline fw-bold\"\r\n (click)=\"viewForm(row?.form?.['formId'])\">{{ row?.form?.['formId'] }}</h3>\r\n </div>\r\n <div class=\"row g-3\">\r\n <div class=\"d-flex flex-column col-6\">\r\n <span class=\"fs-11 fc-dark-gray mb-2\">{{ i18n.translate('formTableCreationDate') }}</span>\r\n <span class=\"fs-12 fw-medium fc-black\">{{ row?.form?.['creationDate'] | date: 'dd/MM/yyyy hh:mm a' }}</span>\r\n </div>\r\n <div class=\"d-flex flex-column col-6 justify-content-end align-items-end\">\r\n\r\n <ds-status [attr.status]=\"row?.form?.formStatus?.key | statusClass\">\r\n {{ row?.form?.formStatus?.value }}\r\n </ds-status>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n </div>\r\n <div class=\"table-responsive\" *ngIf=\"pageView.value === 'list'\">\r\n <table *ngIf=\"previousRequests?.length && !loading\">\r\n <thead>\r\n <tr>\r\n <th>{{ i18n.translate('formTableFormId') }}</th>\r\n <th>{{ i18n.translate('formTableCreationDate') }}</th>\r\n <th>{{ i18n.translate('Status') }}</th>\r\n </tr>\r\n </thead>\r\n\r\n <tbody *ngFor=\"let row of previousRequests\">\r\n <tr>\r\n <td>\r\n <span class=\"fw-medium cursor-pointer underline fw-bold \" (click)=\"viewForm(row?.form?.['formId'])\">\r\n {{ row?.form?.['formId'] }}\r\n </span>\r\n </td>\r\n <td>{{ row?.form?.['creationDate'] | date: 'dd/MM/yyyy hh:mm a' }}</td>\r\n <td>\r\n <ds-status [attr.status]=\"row?.form?.formStatus?.key | statusClass\">\r\n {{ row?.form?.formStatus?.value }}\r\n </ds-status>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <ds-loading-table *ngIf=\"loading\" [cols]=\"4\" [rows]=\"4\"></ds-loading-table>\r\n </div>\r\n } @else {\r\n <ng-container *ngTemplateOutlet=\"emptyMessage\"></ng-container>\r\n }\r\n </section>\r\n </div>\r\n</section>\r\n\r\n<ng-template\r\n cdkConnectedOverlay\r\n [cdkConnectedOverlayHasBackdrop]=\"true\"\r\n (backdropClick)=\"isOpen = false\"\r\n [cdkConnectedOverlayGrowAfterOpen]=\"true\"\r\n [cdkConnectedOverlayOrigin]=\"trigger\"\r\n [cdkConnectedOverlayOpen]=\"isOpen\"\r\n>\r\n <form [formGroup]=\"filterFormGroup\">\r\n <div class=\"filter-container\">\r\n <div class=\"popup-header border-bottom pb-2\">\r\n <h3 class=\"fs-16 fc-black fw-medium\">{{ i18n.translate('filters') }}</h3>\r\n </div>\r\n <div class=\"d-flex flex-column gap-4 gap-md-3 filter-section bc-white mt-0 pt-3\">\r\n\r\n <app-custom-searchable\r\n class=\"section-item\"\r\n formControlName=\"status\"\r\n label=\"{{ i18n.translate('status') }}\"\r\n [options]=\"statuses\"\r\n [displayedLabel]=\"'value'\"\r\n [key]=\"'key'\">\r\n </app-custom-searchable>\r\n\r\n <app-custom-searchable\r\n class=\"section-item\"\r\n formControlName=\"year\"\r\n label=\"{{ i18n.translate('year') }}\"\r\n [options]=\"yearsOptions\"\r\n [displayedLabel]=\"'value'\"\r\n [key]=\"'key'\">\r\n </app-custom-searchable>\r\n\r\n <app-custom-searchable\r\n class=\"section-item\"\r\n formControlName=\"month\"\r\n label=\"{{ i18n.translate('month') }}\"\r\n [options]=\"monthsOptions\"\r\n [displayedLabel]=\"'value'\"\r\n [key]=\"'key'\">\r\n </app-custom-searchable>\r\n\r\n <div class=\"d-flex align-items-center gap-3 mt-4\">\r\n <ds-button shape=\"outline\" size=\"small\" (click)=\"clearFilters()\">\r\n <span class=\"fs-12\"> {{ i18n.translate('clear') }} </span>\r\n </ds-button>\r\n <ds-button class=\"w-100\" size=\"small\" (click)=\"applyFilters()\">\r\n <span class=\"fs-12\">{{ i18n.translate('applyFilters') }} </span>\r\n </ds-button>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n</ng-template>\r\n\r\n\r\n<ng-template #emptyMessage>\r\n <ds-message label=\"{{i18n.translate('NoData')}}\"></ds-message>\r\n</ng-template>\r\n", styles: [".history-cards-container{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1rem;padding:1rem 0}.filter-section ::ng-deep .mat-form-field.mat-primary{margin-bottom:0}.filter-section ::ng-deep .select-form-field{--placeholder-fc: var(--dark-gray)}.filter-section ::ng-deep .select-datepicker{--input-width: 200px}table thead{display:none}:host .mat-button-toggle-group{--toggle-bg: var(--white);box-shadow:var(--box-shadow)}:host table{--th-bg: var(--gray);--td-bg: var(--white);--tr-even-bc: var(--white);--tr-odd-bc: var(--white)}ds-button[square]::part(base){--btn-padding: 0}@media (min-width: 768px){.history-sidenav{--sidenav-width: 800px}}:host ::ng-deep .select-filter{--input-height: 35px;--input-width: 120px;--input-border: 1px solid var(--white) !important;--input-border-focuse: 1px solid var(--white);--input-border-active: 1px solid var(--white);box-shadow:var(--box-shadow);--input-bg: var(--white) !important}:host ::ng-deep .decisions-container{max-height:340px;overflow:auto;scroll-behavior:smooth;transition:scroll-behavior .5s ease-in-out;height:340px}@media (max-width: 768px){:host ::ng-deep .decisions-container{max-height:320px;height:320px}}[dir=rtl] :host ::ng-deep .decisions-container--btn.reRequest{transform:scaleX(-1)}@media (min-width: 1200px){:host ::ng-deep .decisions-container--name,:host ::ng-deep .decisions-container--date{max-width:120px}}@media (min-width: 1200px){[dir=rtl] :host ::ng-deep .decisions-container--name{max-width:initial}}:host ::ng-deep .decisions-container--item{display:flex;align-items:center;gap:1rem;min-height:105px;overflow:hidden;position:relative;cursor:pointer}@media (min-width: 991px){:host ::ng-deep .decisions-container--item h4{max-width:calc(100% - 200px);display:inline-block}}:host ::ng-deep .decisions-container--item:not(:last-child){margin-bottom:.75rem}:host ::ng-deep .decisions-container--item ds-status::part(base){--status-width: 60px}:host ::ng-deep .decisions-container--info span{position:relative;display:flex;align-items:center;gap:.5rem}:host ::ng-deep .decisions-container--info span:not(:first-of-type):before{content:\"\";min-width:3px;width:3px;height:3px;border-radius:50%;background-color:var(--black)}@media (min-width: 991px){:host ::ng-deep .decisions-container--status{position:absolute;top:1rem;right:0}}:host ::ng-deep .decisions-title{display:block;display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;-webkit-line-clamp:1}::ng-deep .main-portal mat-form-field.no-padding .mat-form-field-wrapper{padding-bottom:0!important}::ng-deep ds-button[hidden]{display:none!important}ds-button[circle]::part(base){--btn-color: inherit;--btn-border-color: inherit;--btn-bg-color: inherit;--btn-height: 25px;--btn-min-width: 25px}ds-button[circle][color=red]{--btn-bg-color: var(--red)}ds-button[circle][color=red]:hover{--btn-bg-color: var(--white)}ds-button[circle][color=green]{--btn-bg-color: var(--green)}ds-button[circle][color=green]:hover{--btn-bg-color: var(--white)}ds-button[circle][color=yellow]{--btn-bg-color: var(--yellow)}ds-button[circle][color=yellow]:hover{--btn-bg-color: var(--white)}ds-button[circle][color=coral]{--btn-bg-color: var(--coral)}ds-button[circle][color=coral]:hover{--btn-bg-color: var(--white)}ds-button[circle][color=coral]:hover svg path,ds-button[circle][color=coral]:hover svg line{fill:var(--coral)}ds-button[circle][color=orange]{--btn-bg-color: var(--orange)}ds-button[circle][color=orange]:hover{--btn-bg-color: var(--white)}@media (min-width: 991px){.decisions-container--item .decisions-container--status{width:0;transition:var(--default-transition)}}@media (min-width: 991px){.decisions-container--item:hover .decisions-container--status{transition:var(--default-transition);width:auto;height:auto;right:1.5rem}}::ng-deep .mat-tooltip{max-width:187px;background:#1d252d}::ng-deep ds-button.dots::part(base){text-decoration:none;padding:0;min-width:auto}@media (max-width: 300px){::ng-deep ds-button[shape=text]::part(base){padding:0 5px}::ng-deep ds-button.mat-menu-trigger::part(base){padding:0 5px}}.search-form-input{color:var(--black);font-weight:var(--font-medium);padding:0 .75rem;border:none;height:100%}.search-form-input::placeholder{color:var(--dark-gray);font-weight:var(--font-regular)}::ng-deep .select-user-dropdown{min-width:300px}::ng-deep .filter-container{background-color:var(--white);padding:1.5rem;border-radius:4px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i5.DatePipe, name: "date" }, { kind: "ngmodule", type: MatMenuModule }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: MatDialogModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatButtonToggleModule }, { kind: "directive", type: i6.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "disabledInteractive", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i6.MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled", "disabledInteractive"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "pipe", type: StatusStylePipe, name: "statusClass" }, { kind: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: CustomSearchableComponent, selector: "app-custom-searchable", inputs: ["options", "disabled", "displayedLabel", "key", "floatLabel", "className"], outputs: ["selectedValue", "isLengthGreaterThan4"] }, { kind: "directive", type: CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }] });
154
152
  }
155
153
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: PreviousRequestsComponent, decorators: [{
156
154
  type: Component,
@@ -166,6 +164,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
166
164
  CdkOverlayOrigin,
167
165
  CustomSearchableComponent,
168
166
  CdkConnectedOverlay
169
- ], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "<section class=\"main-sidenav history-sidenav\">\r\n <div class=\"sidenav-title\">\r\n <h3>{{ i18n.translate('PreviousRequests') }}</h3>\r\n <ds-button class=\"close-sidenav\" (click)=\"sidenavService.closeSidenav()\" icon>\r\n <ds-icon icon=\"close\" class=\"fs-20 fc-black\"></ds-icon>\r\n </ds-button>\r\n </div>\r\n\r\n <div\r\n class=\"sidenav-body bc-light-gray\"\r\n >\r\n <section class=\"p-3\">\r\n <header class=\"d-flex align-items-center justify-content-between gap-2 mb-3\">\r\n <h2 class=\"fs-20 fw-medium fc-black mb-0 d-flex align-items-center flex-grow-1 gap-3\">\r\n {{ i18n.translate('AllRequests') }}\r\n <span class=\"title-count fs-14 fw-normal\">{{ previousRequests?.length ? previousRequests?.length : '0' }}</span>\r\n </h2>\r\n <ds-button icon size=\"small\" (click)=\"isOpen = !isOpen\" cdkOverlayOrigin #trigger=\"cdkOverlayOrigin\">\r\n <ds-icon icon=\"filter\" class=\"fc-coral fs-20\" slot=\"prefix\"></ds-icon>\r\n </ds-button>\r\n <mat-button-toggle-group\r\n class=\"icon-toggle flex-nowrap\"\r\n #pageView=\"matButtonToggleGroup\"\r\n (click)=\"$event.stopImmediatePropagation()\"\r\n value=\"list\"\r\n >\r\n <mat-button-toggle value=\"card\">\r\n <span class=\"sfi sfi-card fs-20\"></span>\r\n </mat-button-toggle>\r\n <mat-button-toggle value=\"list\">\r\n <span class=\"sfi sfi-list-dots fs-20\"></span>\r\n </mat-button-toggle>\r\n </mat-button-toggle-group>\r\n </header>\r\n\r\n @if (previousRequests?.length) {\r\n <div class=\"history-cards-container\" *ngIf=\"pageView.value === 'card'\">\r\n <div class=\"p-4 line-height-1 bc-white radius-6 box-shadow\" *ngFor=\"let row of previousRequests\">\r\n <div class=\"d-flex align-items-center gap-2 mb-3\">\r\n <h3\r\n class=\"fs-16 fw-medium flex-grow-1 mb-0 cursor-pointer underline fw-bold\"\r\n (click)=\"viewForm(row?.form?.['formId'])\">{{ row?.form?.['formId'] }}</h3>\r\n </div>\r\n <div class=\"row g-3\">\r\n <div class=\"d-flex flex-column col-6\">\r\n <span class=\"fs-11 fc-dark-gray mb-2\">{{ i18n.translate('formTableCreationDate') }}</span>\r\n <span class=\"fs-12 fw-medium fc-black\">{{ row?.form?.['creationDate'] | date: 'dd/MM/yyyy hh:mm a' }}</span>\r\n </div>\r\n <div class=\"d-flex flex-column col-6 justify-content-end align-items-end\">\r\n\r\n <ds-status [attr.status]=\"row?.form?.formStatus?.key | statusClass\">\r\n {{ row?.form?.formStatus?.value }}\r\n </ds-status>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"table-responsive\" *ngIf=\"pageView.value === 'list'\">\r\n <table *ngIf=\"previousRequests?.length\">\r\n <thead>\r\n <tr>\r\n <th>{{ i18n.translate('formTableFormId') }}</th>\r\n <th>{{ i18n.translate('formTableCreationDate') }}</th>\r\n <th>{{ i18n.translate('Status') }}</th>\r\n </tr>\r\n </thead>\r\n\r\n <tbody *ngFor=\"let row of previousRequests\">\r\n <tr>\r\n <td>\r\n <span class=\"fw-medium cursor-pointer underline fw-bold \" (click)=\"viewForm(row?.form?.['formId'])\">\r\n {{ row?.form?.['formId'] }}\r\n </span>\r\n </td>\r\n <td>{{ row?.form?.['creationDate'] | date: 'dd/MM/yyyy hh:mm a' }}</td>\r\n <td>\r\n <ds-status [attr.status]=\"row?.form?.formStatus?.key | statusClass\">\r\n {{ row?.form?.formStatus?.value }}\r\n </ds-status>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <ds-loading-table *ngIf=\"loading\" [cols]=\"4\" [rows]=\"4\"></ds-loading-table>\r\n </div>\r\n } @else {\r\n <ng-container *ngTemplateOutlet=\"emptyMessage\"></ng-container>\r\n }\r\n </section>\r\n </div>\r\n</section>\r\n\r\n<ng-template\r\n cdkConnectedOverlay\r\n [cdkConnectedOverlayHasBackdrop]=\"true\"\r\n (backdropClick)=\"isOpen = false\"\r\n [cdkConnectedOverlayGrowAfterOpen]=\"true\"\r\n [cdkConnectedOverlayOrigin]=\"trigger\"\r\n [cdkConnectedOverlayOpen]=\"isOpen\"\r\n>\r\n <form [formGroup]=\"filterFormGroup\">\r\n <div class=\"filter-container\">\r\n <div class=\"popup-header border-bottom pb-2\">\r\n <h3 class=\"fs-16 fc-black fw-medium\">{{ i18n.translate('filters') }}</h3>\r\n </div>\r\n <div class=\"d-flex flex-column gap-4 gap-md-3 filter-section bc-white mt-0 pt-3\">\r\n\r\n <app-custom-searchable\r\n class=\"section-item\"\r\n formControlName=\"status\"\r\n label=\"{{ i18n.translate('status') }}\"\r\n [options]=\"statuses\"\r\n [displayedLabel]=\"'value'\"\r\n [key]=\"'key'\">\r\n </app-custom-searchable>\r\n\r\n <app-custom-searchable\r\n class=\"section-item\"\r\n formControlName=\"year\"\r\n label=\"{{ i18n.translate('year') }}\"\r\n [options]=\"yearsOptions\"\r\n [displayedLabel]=\"'value'\"\r\n [key]=\"'key'\">\r\n </app-custom-searchable>\r\n\r\n <app-custom-searchable\r\n class=\"section-item\"\r\n formControlName=\"month\"\r\n label=\"{{ i18n.translate('month') }}\"\r\n [options]=\"monthsOptions\"\r\n [displayedLabel]=\"'value'\"\r\n [key]=\"'key'\">\r\n </app-custom-searchable>\r\n\r\n <div class=\"d-flex align-items-center gap-3 mt-4\">\r\n <ds-button shape=\"outline\" size=\"small\" (click)=\"clearFilters()\">\r\n <span class=\"fs-12\"> {{ i18n.translate('clear') }} </span>\r\n </ds-button>\r\n <ds-button class=\"w-100\" size=\"small\" (click)=\"applyFilters()\">\r\n <span class=\"fs-12\">{{ i18n.translate('applyFilters') }} </span>\r\n </ds-button>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n</ng-template>\r\n\r\n\r\n<ng-template #emptyMessage>\r\n <ds-message label=\"{{i18n.translate('NoData')}}\"></ds-message>\r\n</ng-template>\r\n", styles: [".history-cards-container{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1rem;padding:1rem 0}.filter-section ::ng-deep .mat-form-field.mat-primary{margin-bottom:0}.filter-section ::ng-deep .select-form-field{--placeholder-fc: var(--dark-gray)}.filter-section ::ng-deep .select-datepicker{--input-width: 200px}table thead{display:none}:host .mat-button-toggle-group{--toggle-bg: var(--white);box-shadow:var(--box-shadow)}:host table{--th-bg: var(--gray);--td-bg: var(--white);--tr-even-bc: var(--white);--tr-odd-bc: var(--white)}ds-button[square]::part(base){--btn-padding: 0}@media (min-width: 768px){.history-sidenav{--sidenav-width: 800px}}:host ::ng-deep .select-filter{--input-height: 35px;--input-width: 120px;--input-border: 1px solid var(--white) !important;--input-border-focuse: 1px solid var(--white);--input-border-active: 1px solid var(--white);box-shadow:var(--box-shadow);--input-bg: var(--white) !important}:host ::ng-deep .decisions-container{max-height:340px;overflow:auto;scroll-behavior:smooth;transition:scroll-behavior .5s ease-in-out;height:340px}@media (max-width: 768px){:host ::ng-deep .decisions-container{max-height:320px;height:320px}}[dir=rtl] :host ::ng-deep .decisions-container--btn.reRequest{transform:scaleX(-1)}@media (min-width: 1200px){:host ::ng-deep .decisions-container--name,:host ::ng-deep .decisions-container--date{max-width:120px}}@media (min-width: 1200px){[dir=rtl] :host ::ng-deep .decisions-container--name{max-width:initial}}:host ::ng-deep .decisions-container--item{display:flex;align-items:center;gap:1rem;min-height:105px;overflow:hidden;position:relative;cursor:pointer}@media (min-width: 991px){:host ::ng-deep .decisions-container--item h4{max-width:calc(100% - 200px);display:inline-block}}:host ::ng-deep .decisions-container--item:not(:last-child){margin-bottom:.75rem}:host ::ng-deep .decisions-container--item ds-status::part(base){--status-width: 60px}:host ::ng-deep .decisions-container--info span{position:relative;display:flex;align-items:center;gap:.5rem}:host ::ng-deep .decisions-container--info span:not(:first-of-type):before{content:\"\";min-width:3px;width:3px;height:3px;border-radius:50%;background-color:var(--black)}@media (min-width: 991px){:host ::ng-deep .decisions-container--status{position:absolute;top:1rem;right:0}}:host ::ng-deep .decisions-title{display:block;display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;-webkit-line-clamp:1}::ng-deep .main-portal mat-form-field.no-padding .mat-form-field-wrapper{padding-bottom:0!important}::ng-deep ds-button[hidden]{display:none!important}ds-button[circle]::part(base){--btn-color: inherit;--btn-border-color: inherit;--btn-bg-color: inherit;--btn-height: 25px;--btn-min-width: 25px}ds-button[circle][color=red]{--btn-bg-color: var(--red)}ds-button[circle][color=red]:hover{--btn-bg-color: var(--white)}ds-button[circle][color=green]{--btn-bg-color: var(--green)}ds-button[circle][color=green]:hover{--btn-bg-color: var(--white)}ds-button[circle][color=yellow]{--btn-bg-color: var(--yellow)}ds-button[circle][color=yellow]:hover{--btn-bg-color: var(--white)}ds-button[circle][color=coral]{--btn-bg-color: var(--coral)}ds-button[circle][color=coral]:hover{--btn-bg-color: var(--white)}ds-button[circle][color=coral]:hover svg path,ds-button[circle][color=coral]:hover svg line{fill:var(--coral)}ds-button[circle][color=orange]{--btn-bg-color: var(--orange)}ds-button[circle][color=orange]:hover{--btn-bg-color: var(--white)}@media (min-width: 991px){.decisions-container--item .decisions-container--status{width:0;transition:var(--default-transition)}}@media (min-width: 991px){.decisions-container--item:hover .decisions-container--status{transition:var(--default-transition);width:auto;height:auto;right:1.5rem}}::ng-deep .mat-tooltip{max-width:187px;background:#1d252d}::ng-deep ds-button.dots::part(base){text-decoration:none;padding:0;min-width:auto}@media (max-width: 300px){::ng-deep ds-button[shape=text]::part(base){padding:0 5px}::ng-deep ds-button.mat-menu-trigger::part(base){padding:0 5px}}.search-form-input{color:var(--black);font-weight:var(--font-medium);padding:0 .75rem;border:none;height:100%}.search-form-input::placeholder{color:var(--dark-gray);font-weight:var(--font-regular)}::ng-deep .select-user-dropdown{min-width:300px}::ng-deep .filter-container{background-color:var(--white);padding:1.5rem;border-radius:4px}\n"] }]
167
+ ], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "<section class=\"main-sidenav history-sidenav\">\r\n <div class=\"sidenav-title\">\r\n <h3>{{ i18n.translate('PreviousRequests') }}</h3>\r\n <ds-button class=\"close-sidenav\" (click)=\"sidenavService.closeSidenav()\" icon>\r\n <ds-icon icon=\"close\" class=\"fs-20 fc-black\"></ds-icon>\r\n </ds-button>\r\n </div>\r\n\r\n <div class=\"sidenav-body bc-light-gray\">\r\n <section class=\"p-3\">\r\n <header class=\"d-flex align-items-center justify-content-between gap-2 mb-3\">\r\n <h2 class=\"fs-20 fw-medium fc-black mb-0 d-flex align-items-center flex-grow-1 gap-3\">\r\n {{ i18n.translate('AllRequests') }}\r\n <span class=\"title-count fs-14 fw-normal\">{{ previousRequests?.length ? previousRequests?.length : '0' }}</span>\r\n </h2>\r\n <ds-button icon size=\"small\" (click)=\"isOpen = !isOpen\" cdkOverlayOrigin #trigger=\"cdkOverlayOrigin\">\r\n <ds-icon icon=\"filter\" class=\"fc-coral fs-20\" slot=\"prefix\"></ds-icon>\r\n </ds-button>\r\n <mat-button-toggle-group\r\n class=\"icon-toggle flex-nowrap\"\r\n #pageView=\"matButtonToggleGroup\"\r\n (click)=\"$event.stopImmediatePropagation()\"\r\n value=\"list\"\r\n >\r\n <mat-button-toggle value=\"card\">\r\n <span class=\"sfi sfi-card fs-20\"></span>\r\n </mat-button-toggle>\r\n <mat-button-toggle value=\"list\">\r\n <span class=\"sfi sfi-list-dots fs-20\"></span>\r\n </mat-button-toggle>\r\n </mat-button-toggle-group>\r\n </header>\r\n\r\n @if (previousRequests?.length) {\r\n <div class=\"history-cards-container\" *ngIf=\"pageView.value === 'card'\">\r\n @if (loading) {\r\n <ng-container>\r\n <div class=\"p-4 line-height-1 bc-white radius-6 box-shadow\" *ngFor=\"let row of [0,1,2,3]\">\r\n <div class=\"d-flex align-items-center gap-2 mb-3\">\r\n <h3 class=\"loading-bg fs-16 fw-medium flex-grow-1 mb-0 cursor-pointer underline fw-bold\"></h3>\r\n </div>\r\n <div class=\"row g-3\">\r\n <div class=\"d-flex flex-column col-6\">\r\n <span class=\"fs-11 fc-dark-gray mb-2 loading-bg\"></span>\r\n <span class=\"fs-12 fw-medium fc-black loading-bg\"></span>\r\n </div>\r\n <div class=\"d-flex flex-column col-6 justify-content-end align-items-end\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n } @else {\r\n <div class=\"p-4 line-height-1 bc-white radius-6 box-shadow\" *ngFor=\"let row of previousRequests\">\r\n <div class=\"d-flex align-items-center gap-2 mb-3\">\r\n <h3\r\n class=\"fs-16 fw-medium flex-grow-1 mb-0 cursor-pointer underline fw-bold\"\r\n (click)=\"viewForm(row?.form?.['formId'])\">{{ row?.form?.['formId'] }}</h3>\r\n </div>\r\n <div class=\"row g-3\">\r\n <div class=\"d-flex flex-column col-6\">\r\n <span class=\"fs-11 fc-dark-gray mb-2\">{{ i18n.translate('formTableCreationDate') }}</span>\r\n <span class=\"fs-12 fw-medium fc-black\">{{ row?.form?.['creationDate'] | date: 'dd/MM/yyyy hh:mm a' }}</span>\r\n </div>\r\n <div class=\"d-flex flex-column col-6 justify-content-end align-items-end\">\r\n\r\n <ds-status [attr.status]=\"row?.form?.formStatus?.key | statusClass\">\r\n {{ row?.form?.formStatus?.value }}\r\n </ds-status>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n </div>\r\n <div class=\"table-responsive\" *ngIf=\"pageView.value === 'list'\">\r\n <table *ngIf=\"previousRequests?.length && !loading\">\r\n <thead>\r\n <tr>\r\n <th>{{ i18n.translate('formTableFormId') }}</th>\r\n <th>{{ i18n.translate('formTableCreationDate') }}</th>\r\n <th>{{ i18n.translate('Status') }}</th>\r\n </tr>\r\n </thead>\r\n\r\n <tbody *ngFor=\"let row of previousRequests\">\r\n <tr>\r\n <td>\r\n <span class=\"fw-medium cursor-pointer underline fw-bold \" (click)=\"viewForm(row?.form?.['formId'])\">\r\n {{ row?.form?.['formId'] }}\r\n </span>\r\n </td>\r\n <td>{{ row?.form?.['creationDate'] | date: 'dd/MM/yyyy hh:mm a' }}</td>\r\n <td>\r\n <ds-status [attr.status]=\"row?.form?.formStatus?.key | statusClass\">\r\n {{ row?.form?.formStatus?.value }}\r\n </ds-status>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <ds-loading-table *ngIf=\"loading\" [cols]=\"4\" [rows]=\"4\"></ds-loading-table>\r\n </div>\r\n } @else {\r\n <ng-container *ngTemplateOutlet=\"emptyMessage\"></ng-container>\r\n }\r\n </section>\r\n </div>\r\n</section>\r\n\r\n<ng-template\r\n cdkConnectedOverlay\r\n [cdkConnectedOverlayHasBackdrop]=\"true\"\r\n (backdropClick)=\"isOpen = false\"\r\n [cdkConnectedOverlayGrowAfterOpen]=\"true\"\r\n [cdkConnectedOverlayOrigin]=\"trigger\"\r\n [cdkConnectedOverlayOpen]=\"isOpen\"\r\n>\r\n <form [formGroup]=\"filterFormGroup\">\r\n <div class=\"filter-container\">\r\n <div class=\"popup-header border-bottom pb-2\">\r\n <h3 class=\"fs-16 fc-black fw-medium\">{{ i18n.translate('filters') }}</h3>\r\n </div>\r\n <div class=\"d-flex flex-column gap-4 gap-md-3 filter-section bc-white mt-0 pt-3\">\r\n\r\n <app-custom-searchable\r\n class=\"section-item\"\r\n formControlName=\"status\"\r\n label=\"{{ i18n.translate('status') }}\"\r\n [options]=\"statuses\"\r\n [displayedLabel]=\"'value'\"\r\n [key]=\"'key'\">\r\n </app-custom-searchable>\r\n\r\n <app-custom-searchable\r\n class=\"section-item\"\r\n formControlName=\"year\"\r\n label=\"{{ i18n.translate('year') }}\"\r\n [options]=\"yearsOptions\"\r\n [displayedLabel]=\"'value'\"\r\n [key]=\"'key'\">\r\n </app-custom-searchable>\r\n\r\n <app-custom-searchable\r\n class=\"section-item\"\r\n formControlName=\"month\"\r\n label=\"{{ i18n.translate('month') }}\"\r\n [options]=\"monthsOptions\"\r\n [displayedLabel]=\"'value'\"\r\n [key]=\"'key'\">\r\n </app-custom-searchable>\r\n\r\n <div class=\"d-flex align-items-center gap-3 mt-4\">\r\n <ds-button shape=\"outline\" size=\"small\" (click)=\"clearFilters()\">\r\n <span class=\"fs-12\"> {{ i18n.translate('clear') }} </span>\r\n </ds-button>\r\n <ds-button class=\"w-100\" size=\"small\" (click)=\"applyFilters()\">\r\n <span class=\"fs-12\">{{ i18n.translate('applyFilters') }} </span>\r\n </ds-button>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n</ng-template>\r\n\r\n\r\n<ng-template #emptyMessage>\r\n <ds-message label=\"{{i18n.translate('NoData')}}\"></ds-message>\r\n</ng-template>\r\n", styles: [".history-cards-container{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1rem;padding:1rem 0}.filter-section ::ng-deep .mat-form-field.mat-primary{margin-bottom:0}.filter-section ::ng-deep .select-form-field{--placeholder-fc: var(--dark-gray)}.filter-section ::ng-deep .select-datepicker{--input-width: 200px}table thead{display:none}:host .mat-button-toggle-group{--toggle-bg: var(--white);box-shadow:var(--box-shadow)}:host table{--th-bg: var(--gray);--td-bg: var(--white);--tr-even-bc: var(--white);--tr-odd-bc: var(--white)}ds-button[square]::part(base){--btn-padding: 0}@media (min-width: 768px){.history-sidenav{--sidenav-width: 800px}}:host ::ng-deep .select-filter{--input-height: 35px;--input-width: 120px;--input-border: 1px solid var(--white) !important;--input-border-focuse: 1px solid var(--white);--input-border-active: 1px solid var(--white);box-shadow:var(--box-shadow);--input-bg: var(--white) !important}:host ::ng-deep .decisions-container{max-height:340px;overflow:auto;scroll-behavior:smooth;transition:scroll-behavior .5s ease-in-out;height:340px}@media (max-width: 768px){:host ::ng-deep .decisions-container{max-height:320px;height:320px}}[dir=rtl] :host ::ng-deep .decisions-container--btn.reRequest{transform:scaleX(-1)}@media (min-width: 1200px){:host ::ng-deep .decisions-container--name,:host ::ng-deep .decisions-container--date{max-width:120px}}@media (min-width: 1200px){[dir=rtl] :host ::ng-deep .decisions-container--name{max-width:initial}}:host ::ng-deep .decisions-container--item{display:flex;align-items:center;gap:1rem;min-height:105px;overflow:hidden;position:relative;cursor:pointer}@media (min-width: 991px){:host ::ng-deep .decisions-container--item h4{max-width:calc(100% - 200px);display:inline-block}}:host ::ng-deep .decisions-container--item:not(:last-child){margin-bottom:.75rem}:host ::ng-deep .decisions-container--item ds-status::part(base){--status-width: 60px}:host ::ng-deep .decisions-container--info span{position:relative;display:flex;align-items:center;gap:.5rem}:host ::ng-deep .decisions-container--info span:not(:first-of-type):before{content:\"\";min-width:3px;width:3px;height:3px;border-radius:50%;background-color:var(--black)}@media (min-width: 991px){:host ::ng-deep .decisions-container--status{position:absolute;top:1rem;right:0}}:host ::ng-deep .decisions-title{display:block;display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;-webkit-line-clamp:1}::ng-deep .main-portal mat-form-field.no-padding .mat-form-field-wrapper{padding-bottom:0!important}::ng-deep ds-button[hidden]{display:none!important}ds-button[circle]::part(base){--btn-color: inherit;--btn-border-color: inherit;--btn-bg-color: inherit;--btn-height: 25px;--btn-min-width: 25px}ds-button[circle][color=red]{--btn-bg-color: var(--red)}ds-button[circle][color=red]:hover{--btn-bg-color: var(--white)}ds-button[circle][color=green]{--btn-bg-color: var(--green)}ds-button[circle][color=green]:hover{--btn-bg-color: var(--white)}ds-button[circle][color=yellow]{--btn-bg-color: var(--yellow)}ds-button[circle][color=yellow]:hover{--btn-bg-color: var(--white)}ds-button[circle][color=coral]{--btn-bg-color: var(--coral)}ds-button[circle][color=coral]:hover{--btn-bg-color: var(--white)}ds-button[circle][color=coral]:hover svg path,ds-button[circle][color=coral]:hover svg line{fill:var(--coral)}ds-button[circle][color=orange]{--btn-bg-color: var(--orange)}ds-button[circle][color=orange]:hover{--btn-bg-color: var(--white)}@media (min-width: 991px){.decisions-container--item .decisions-container--status{width:0;transition:var(--default-transition)}}@media (min-width: 991px){.decisions-container--item:hover .decisions-container--status{transition:var(--default-transition);width:auto;height:auto;right:1.5rem}}::ng-deep .mat-tooltip{max-width:187px;background:#1d252d}::ng-deep ds-button.dots::part(base){text-decoration:none;padding:0;min-width:auto}@media (max-width: 300px){::ng-deep ds-button[shape=text]::part(base){padding:0 5px}::ng-deep ds-button.mat-menu-trigger::part(base){padding:0 5px}}.search-form-input{color:var(--black);font-weight:var(--font-medium);padding:0 .75rem;border:none;height:100%}.search-form-input::placeholder{color:var(--dark-gray);font-weight:var(--font-regular)}::ng-deep .select-user-dropdown{min-width:300px}::ng-deep .filter-container{background-color:var(--white);padding:1.5rem;border-radius:4px}\n"] }]
170
168
  }], ctorParameters: () => [{ type: i1.MatDialog }, { type: i2.SidenavService }, { type: i2.CoreService }, { type: i3.ToastrService }, { type: i2.CoreI18nService }, { type: i4.FormBuilder }] });
171
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldmlvdXMtcmVxdWVzdHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL2FwcC1jb21wb25lbnQtc2VjdGlvbnMvcHJldmlvdXMtcmVxdWVzdHMvcHJldmlvdXMtcmVxdWVzdHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL2FwcC1jb21wb25lbnQtc2VjdGlvbnMvcHJldmlvdXMtcmVxdWVzdHMvcHJldmlvdXMtcmVxdWVzdHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixTQUFTLEVBQUUsc0JBQXNCLEVBQVMsTUFBTSxlQUFlLENBQUM7QUFDdkYsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQVksZUFBZSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDcEUsT0FBTyxFQUFjLFdBQVcsRUFBYSxtQkFBbUIsRUFBRSxVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRyxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0RSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBRXBELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUVqRSxPQUFPLEVBQUMsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRSxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7Ozs7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RyxNQUFNLENBQUMsQ0FBQztRQUM3RCxDQUFDO0lBQ0gsQ0FBQzt1R0FySVUseUJBQXlCOzJGQUF6Qix5QkFBeUIsdUVDcEN0QywwMU1BdUpBLDQ0SURwSUksWUFBWSx5ZEFDWixhQUFhLDhCQUNiLFlBQVksOEJBQ1osZUFBZSw4QkFDZixlQUFlLDhCQUNmLG1CQUFtQiw0ckJBQ25CLHFCQUFxQixrb0JBQ3JCLGVBQWUsb0RBQ2YsZ0JBQWdCLHVJQUNoQix5QkFBeUIsMk1BQ3pCLG1CQUFtQjs7MkZBT1YseUJBQXlCO2tCQXRCckMsU0FBUzsrQkFDRSxhQUFhLGNBQ1gsSUFBSSxXQUVQO3dCQUNQLFlBQVk7d0JBQ1osYUFBYTt3QkFDYixZQUFZO3dCQUNaLGVBQWU7d0JBQ2YsZUFBZTt3QkFDZixtQkFBbUI7d0JBQ25CLHFCQUFxQjt3QkFDckIsZUFBZTt3QkFDZixnQkFBZ0I7d0JBQ2hCLHlCQUF5Qjt3QkFDekIsbUJBQW1CO3FCQUVwQixXQUdRLENBQUMsc0JBQXNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FmdGVyVmlld0luaXQsIENvbXBvbmVudCwgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgT25Jbml0fSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQge01hdE1lbnVNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9tZW51XCI7XHJcbmltcG9ydCB7TWF0RGlhbG9nLCBNYXREaWFsb2dNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2dcIjtcclxuaW1wb3J0IHtGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVmFsaWRhdG9yc30gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7TWF0QnV0dG9uVG9nZ2xlTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uLXRvZ2dsZVwiO1xyXG5pbXBvcnQge1JvdXRlck1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQge1RyYW5zbGF0ZU1vZHVsZX0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcclxuaW1wb3J0IHtDb3JlSTE4blNlcnZpY2UsIENvcmVTZXJ2aWNlLCBTaWRlbmF2U2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzXCI7XHJcbmltcG9ydCB7U3RhdHVzU3R5bGVQaXBlfSBmcm9tIFwiLi4vLi4vLi4vcGlwZXMvc3RhdHVzLXN0eWxlLnBpcGVcIjtcclxuaW1wb3J0IHtUb2FzdHJTZXJ2aWNlfSBmcm9tIFwibmd4LXRvYXN0clwiO1xyXG5pbXBvcnQge0Nka0Nvbm5lY3RlZE92ZXJsYXksIENka092ZXJsYXlPcmlnaW59IGZyb20gXCJAYW5ndWxhci9jZGsvb3ZlcmxheVwiO1xyXG5pbXBvcnQge0N1c3RvbVNlYXJjaGFibGVDb21wb25lbnR9IGZyb20gXCIuLi8uLi9zaGFyZWQtY29tcG9uZW50c1wiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtaGlzdG9yeScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgTWF0TWVudU1vZHVsZSxcclxuICAgIFJvdXRlck1vZHVsZSxcclxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcclxuICAgIE1hdERpYWxvZ01vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBNYXRCdXR0b25Ub2dnbGVNb2R1bGUsXHJcbiAgICBTdGF0dXNTdHlsZVBpcGUsXHJcbiAgICBDZGtPdmVybGF5T3JpZ2luLFxyXG4gICAgQ3VzdG9tU2VhcmNoYWJsZUNvbXBvbmVudCxcclxuICAgIENka0Nvbm5lY3RlZE92ZXJsYXlcclxuXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vcHJldmlvdXMtcmVxdWVzdHMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3ByZXZpb3VzLXJlcXVlc3RzLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgc2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJldmlvdXNSZXF1ZXN0c0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgcHJldmlvdXNSZXF1ZXN0czogYW55W10gPSBbXVxyXG4gIGxvYWRpbmc6IGJvb2xlYW5cclxuICBmaWx0ZXJGb3JtR3JvdXA6IEZvcm1Hcm91cDtcclxuICBlcnJvck1lc3NhZ2U6IHN0cmluZ1xyXG4gIGlzT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIG1vbnRoc09wdGlvbnMgPSBbXHJcbiAgICB7a2V5OiAnMScsIHZhbHVlOiAnMSd9LFxyXG4gICAge2tleTogJzInLCB2YWx1ZTogJzInfSxcclxuICAgIHtrZXk6ICczJywgdmFsdWU6ICczJ30sXHJcbiAgICB7a2V5OiAnNCcsIHZhbHVlOiAnNCd9LFxyXG4gICAge2tleTogJzUnLCB2YWx1ZTogJzUnfSxcclxuICAgIHtrZXk6ICc2JywgdmFsdWU6ICc2J30sXHJcbiAgICB7a2V5OiAnNycsIHZhbHVlOiAnNyd9LFxyXG4gICAge2tleTogJzgnLCB2YWx1ZTogJzgnfSxcclxuICAgIHtrZXk6ICc5JywgdmFsdWU6ICc5J30sXHJcbiAgICB7a2V5OiAnMTAnLCB2YWx1ZTogJzEwJ30sXHJcbiAgICB7a2V5OiAnMTEnLCB2YWx1ZTogJzExJ30sXHJcbiAgICB7a2V5OiAnMTInLCB2YWx1ZTogJzEyJ31cclxuICBdO1xyXG4gIHllYXJzT3B0aW9ucyA9IFtcclxuICAgIHtrZXk6IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSwgdmFsdWU6IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKX0sXHJcbiAgICB7a2V5OiBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCkgLSAxLCB2YWx1ZTogbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpIC0gMX0sXHJcbiAgICB7a2V5OiBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCkgLSAyLCB2YWx1ZTogbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpIC0gMn0sXHJcbiAgICB7a2V5OiBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCkgLSAzLCB2YWx1ZTogbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpIC0gM31dO1xyXG5cclxuICBzdGF0dXNlcyA9IFtdXHJcbiAgc2VhcmNoRGF0YSA9IHtcclxuICAgIHllYXI6IG51bGwsXHJcbiAgICBtb250aDogbnVsbFxyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIGRpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgICAgICAgICAgIHB1YmxpYyByZWFkb25seSBzaWRlbmF2U2VydmljZTogU2lkZW5hdlNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHVibGljIGNvcmVTZXJ2aWNlOiBDb3JlU2VydmljZSxcclxuICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHRvYXN0ZXJTZXJ2aWNlOiBUb2FzdHJTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHB1YmxpYyBpMThuOiBDb3JlSTE4blNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBmYjogRm9ybUJ1aWxkZXJcclxuICApIHt9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5jcmVhdGVGb3JtKCk7XHJcbiAgICB0aGlzLnN0YXR1c2VzID0gW1xyXG4gICAgICB7a2V5OiBcIkFQUFJPVkVEXCIsIHZhbHVlOiB0aGlzLmkxOG4ubGFuZ3VhZ2UgPT0gJ2VuJyA/IFwiQXBwcm92ZVwiIDogXCLZhdmI2KfZgdmC2KlcIn0sXHJcbiAgICAgIHtrZXk6IFwiUkVKRUNURURcIiwgdmFsdWU6IHRoaXMuaTE4bi5sYW5ndWFnZSA9PSAnZW4nID8gXCJSZWplY3RcIiA6IFwi2YXYsdmB2YjYtlwifSxcclxuICAgICAge2tleTogXCJQRU5ESU5HXCIsIHZhbHVlOiB0aGlzLmkxOG4ubGFuZ3VhZ2UgPT0gJ2VuJyA/IFwiUGVuZGluZ1wiIDogXCLZhdi52YTZglwifVxyXG4gICAgXVxyXG4gIH1cclxuXHJcbiAgY3JlYXRlRm9ybSgpIHtcclxuICAgIHRoaXMuZmlsdGVyRm9ybUdyb3VwID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgIG1vbnRoOiBuZXcgRm9ybUNvbnRyb2woe2tleTogbmV3IERhdGUoKS5nZXRVVENNb250aCgpICsgMSwgdmFsdWU6IG5ldyBEYXRlKCkuZ2V0VVRDTW9udGgoKSArIDF9LCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcclxuICAgICAgeWVhcjogbmV3IEZvcm1Db250cm9sKHtrZXk6IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSwgdmFsdWU6IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKX0sIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxyXG4gICAgICBzdGF0dXM6IG5ldyBGb3JtQ29udHJvbCgnJywgVmFsaWRhdG9ycy5yZXF1aXJlZClcclxuICAgIH0pO1xyXG4gICAgdGhpcy5maWx0ZXJGb3JtR3JvdXAuZ2V0KCdzdGF0dXMnKS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHZhbHVlID0+IHtcclxuICAgICAgdGhpcy5maWx0ZXJTdGF0dXMoKVxyXG4gICAgfSlcclxuICB9XHJcblxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICBpZiAodGhpcy5jb3JlU2VydmljZS5oaXN0b3J5RGF0YUxvYWRlZCkge1xyXG4gICAgICB0aGlzLnByZXZpb3VzUmVxdWVzdHMgPSB0aGlzLmNvcmVTZXJ2aWNlLmhpc3RvcnlEYXRhXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmdldFJlcXVlc3RzKClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsZWFyRmlsdGVycygpIHtcclxuICAgIHRoaXMuZmlsdGVyRm9ybUdyb3VwLnJlc2V0KClcclxuICAgIHRoaXMuZmlsdGVyRm9ybUdyb3VwLmdldCgnbW9udGgnKS5zZXRWYWx1ZSh7a2V5OiBuZXcgRGF0ZSgpLmdldFVUQ01vbnRoKCkgKyAxLCB2YWx1ZTogbmV3IERhdGUoKS5nZXRVVENNb250aCgpICsgMX0pXHJcbiAgICB0aGlzLmZpbHRlckZvcm1Hcm91cC5nZXQoJ3llYXInKS5zZXRWYWx1ZSh7a2V5OiBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCksIHZhbHVlOiBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCkgKyAxfSlcclxuICAgIHRoaXMuZmlsdGVyRm9ybUdyb3VwLmdldCgnc3RhdHVzJykuc2V0VmFsdWUoJycpXHJcbiAgICB0aGlzLmlzT3BlbiA9ICF0aGlzLmlzT3BlblxyXG4gICAgdGhpcy5maWx0ZXJTdGF0dXMoKVxyXG4gIH1cclxuXHJcbiAgYXBwbHlGaWx0ZXJzKCkge1xyXG4gICAgdGhpcy5pc09wZW4gPSAhdGhpcy5pc09wZW5cclxuICAgIHRoaXMuZ2V0UmVxdWVzdHMoKVxyXG4gIH1cclxuXHJcbiAgZ2V0UmVxdWVzdHMoKSB7XHJcbiAgICBpZiAodGhpcy5zZWFyY2hEYXRhLnllYXIgPT0gdGhpcy5maWx0ZXJGb3JtR3JvdXAuZ2V0KCd5ZWFyJykudmFsdWU/LmtleSAmJiB0aGlzLnNlYXJjaERhdGEubW9udGggPT0gdGhpcy5maWx0ZXJGb3JtR3JvdXAuZ2V0KCdtb250aCcpLnZhbHVlPy5rZXkpIHtcclxuICAgICAgdGhpcy5maWx0ZXJTdGF0dXMoKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZWFyY2hEYXRhID0ge1xyXG4gICAgICAgIHllYXI6IHRoaXMuZmlsdGVyRm9ybUdyb3VwLmdldCgneWVhcicpLnZhbHVlPy5rZXksXHJcbiAgICAgICAgbW9udGg6IHRoaXMuZmlsdGVyRm9ybUdyb3VwLmdldCgnbW9udGgnKS52YWx1ZT8ua2V5LFxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWVcclxuICAgICAgdGhpcy5jb3JlU2VydmljZS5oaXN0b3J5RGF0YSA9IFtdXHJcbiAgICAgIHRoaXMucHJldmlvdXNSZXF1ZXN0cyA9IFtdXHJcbiAgICAgIHRoaXMuY29yZVNlcnZpY2UubXlSZXF1ZXN0cyh0aGlzLnNlYXJjaERhdGEpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAgIC8vIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jb3JlU2VydmljZS5oaXN0b3J5RGF0YSA9IHJlc3BvbnNlLmhpc3Rvcnk7XHJcbiAgICAgICAgICB0aGlzLnByZXZpb3VzUmVxdWVzdHMgPSB0aGlzLmNvcmVTZXJ2aWNlLmhpc3RvcnlEYXRhXHJcbiAgICAgICAgICB0aGlzLmNvcmVTZXJ2aWNlLmhpc3RvcnlEYXRhTG9hZGVkID0gdHJ1ZVxyXG4gICAgICAgICAgdGhpcy5maWx0ZXJTdGF0dXMoKVxyXG4gICAgICAgICAgLy8gfSwgNTAwKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBlcnI/LmVycm9yPy5tZXRhPy5tZXNzYWdlcz8uWycwJ10/Lm1lc3NhZ2U7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmVycm9yKHRoaXMuZXJyb3JNZXNzYWdlKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY29tcGxldGU6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlXHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGZpbHRlclN0YXR1cygpIHtcclxuICAgIHRoaXMucHJldmlvdXNSZXF1ZXN0cyA9IHRoaXMuY29yZVNlcnZpY2UuaGlzdG9yeURhdGFcclxuICAgIGxldCBmaWx0ZXJEYXRhID0gW11cclxuICAgIGlmICh0aGlzLmZpbHRlckZvcm1Hcm91cC5nZXQoJ3N0YXR1cycpLnZhbHVlPy5rZXkpIHtcclxuICAgICAgZmlsdGVyRGF0YSA9IHRoaXMucHJldmlvdXNSZXF1ZXN0cy5maWx0ZXIoKHJlcXVlc3QpID0+IHtcclxuICAgICAgICByZXR1cm4gcmVxdWVzdC5mb3JtLmZvcm1TdGF0dXMua2V5ID09PSB0aGlzLmZpbHRlckZvcm1Hcm91cC5nZXQoJ3N0YXR1cycpLnZhbHVlLmtleVxyXG4gICAgICB9KVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZmlsdGVyRGF0YSA9IHRoaXMucHJldmlvdXNSZXF1ZXN0c1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucHJldmlvdXNSZXF1ZXN0cyA9IGZpbHRlckRhdGFcclxuICB9XHJcblxyXG4gIHZpZXdGb3JtKGZvcm1JZDogc3RyaW5nKSB7XHJcbiAgICBpZiAoZm9ybUlkKSB7XHJcbiAgICAgIHdpbmRvdy5vcGVuKCcvZ3JvdXAvaS1nYXRlL3dtLWJwbS9mb3Jtcz9mb3JtSWQ9JyArIGZvcm1JZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8c2VjdGlvbiBjbGFzcz1cIm1haW4tc2lkZW5hdiBoaXN0b3J5LXNpZGVuYXZcIj5cclxuICA8ZGl2IGNsYXNzPVwic2lkZW5hdi10aXRsZVwiPlxyXG4gICAgPGgzPnt7IGkxOG4udHJhbnNsYXRlKCdQcmV2aW91c1JlcXVlc3RzJykgfX08L2gzPlxyXG4gICAgPGRzLWJ1dHRvbiBjbGFzcz1cImNsb3NlLXNpZGVuYXZcIiAoY2xpY2spPVwic2lkZW5hdlNlcnZpY2UuY2xvc2VTaWRlbmF2KClcIiBpY29uPlxyXG4gICAgICA8ZHMtaWNvbiBpY29uPVwiY2xvc2VcIiBjbGFzcz1cImZzLTIwIGZjLWJsYWNrXCI+PC9kcy1pY29uPlxyXG4gICAgPC9kcy1idXR0b24+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwic2lkZW5hdi1ib2R5IGJjLWxpZ2h0LWdyYXlcIlxyXG4gID5cclxuICAgIDxzZWN0aW9uIGNsYXNzPVwicC0zXCI+XHJcbiAgICAgIDxoZWFkZXIgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGdhcC0yIG1iLTNcIj5cclxuICAgICAgICA8aDIgY2xhc3M9XCJmcy0yMCBmdy1tZWRpdW0gZmMtYmxhY2sgbWItMCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtZ3Jvdy0xIGdhcC0zXCI+XHJcbiAgICAgICAgICB7eyBpMThuLnRyYW5zbGF0ZSgnQWxsUmVxdWVzdHMnKSB9fVxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRsZS1jb3VudCBmcy0xNCBmdy1ub3JtYWxcIj57eyBwcmV2aW91c1JlcXVlc3RzPy5sZW5ndGggPyBwcmV2aW91c1JlcXVlc3RzPy5sZW5ndGggOiAnMCcgfX08L3NwYW4+XHJcbiAgICAgICAgPC9oMj5cclxuICAgICAgICA8ZHMtYnV0dG9uIGljb24gc2l6ZT1cInNtYWxsXCIgKGNsaWNrKT1cImlzT3BlbiA9ICFpc09wZW5cIiBjZGtPdmVybGF5T3JpZ2luICN0cmlnZ2VyPVwiY2RrT3ZlcmxheU9yaWdpblwiPlxyXG4gICAgICAgICAgPGRzLWljb24gaWNvbj1cImZpbHRlclwiIGNsYXNzPVwiZmMtY29yYWwgZnMtMjBcIiBzbG90PVwicHJlZml4XCI+PC9kcy1pY29uPlxyXG4gICAgICAgIDwvZHMtYnV0dG9uPlxyXG4gICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZS1ncm91cFxyXG4gICAgICAgICAgY2xhc3M9XCJpY29uLXRvZ2dsZSBmbGV4LW5vd3JhcFwiXHJcbiAgICAgICAgICAjcGFnZVZpZXc9XCJtYXRCdXR0b25Ub2dnbGVHcm91cFwiXHJcbiAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAgIHZhbHVlPVwibGlzdFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlIHZhbHVlPVwiY2FyZFwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNmaSBzZmktY2FyZCBmcy0yMFwiPjwvc3Bhbj5cclxuICAgICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGU+XHJcbiAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgdmFsdWU9XCJsaXN0XCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2ZpIHNmaS1saXN0LWRvdHMgZnMtMjBcIj48L3NwYW4+XHJcbiAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlPlxyXG4gICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXA+XHJcbiAgICAgIDwvaGVhZGVyPlxyXG5cclxuICAgICAgQGlmIChwcmV2aW91c1JlcXVlc3RzPy5sZW5ndGgpIHtcclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaGlzdG9yeS1jYXJkcy1jb250YWluZXJcIiAqbmdJZj1cInBhZ2VWaWV3LnZhbHVlID09PSAnY2FyZCdcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTQgbGluZS1oZWlnaHQtMSBiYy13aGl0ZSByYWRpdXMtNiBib3gtc2hhZG93XCIgKm5nRm9yPVwibGV0IHJvdyBvZiBwcmV2aW91c1JlcXVlc3RzXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yIG1iLTNcIj5cclxuICAgICAgICAgICAgICA8aDNcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZnMtMTYgZnctbWVkaXVtIGZsZXgtZ3Jvdy0xIG1iLTAgY3Vyc29yLXBvaW50ZXIgdW5kZXJsaW5lIGZ3LWJvbGRcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInZpZXdGb3JtKHJvdz8uZm9ybT8uWydmb3JtSWQnXSlcIj57eyByb3c/LmZvcm0/LlsnZm9ybUlkJ10gfX08L2gzPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBnLTNcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGNvbC02XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZzLTExIGZjLWRhcmstZ3JheSBtYi0yXCI+e3sgaTE4bi50cmFuc2xhdGUoJ2Zvcm1UYWJsZUNyZWF0aW9uRGF0ZScpIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmcy0xMiBmdy1tZWRpdW0gZmMtYmxhY2tcIj57eyByb3c/LmZvcm0/LlsnY3JlYXRpb25EYXRlJ10gfCBkYXRlOiAnZGQvTU0veXl5eSBoaDptbSBhJyB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGNvbC02IGp1c3RpZnktY29udGVudC1lbmQgYWxpZ24taXRlbXMtZW5kXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRzLXN0YXR1cyBbYXR0ci5zdGF0dXNdPVwicm93Py5mb3JtPy5mb3JtU3RhdHVzPy5rZXkgfCBzdGF0dXNDbGFzc1wiPlxyXG4gICAgICAgICAgICAgICAgICB7eyByb3c/LmZvcm0/LmZvcm1TdGF0dXM/LnZhbHVlIH19XHJcbiAgICAgICAgICAgICAgICA8L2RzLXN0YXR1cz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiICpuZ0lmPVwicGFnZVZpZXcudmFsdWUgPT09ICdsaXN0J1wiPlxyXG4gICAgICAgICAgPHRhYmxlICpuZ0lmPVwicHJldmlvdXNSZXF1ZXN0cz8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgIDx0aD57eyBpMThuLnRyYW5zbGF0ZSgnZm9ybVRhYmxlRm9ybUlkJykgfX08L3RoPlxyXG4gICAgICAgICAgICAgIDx0aD57eyBpMThuLnRyYW5zbGF0ZSgnZm9ybVRhYmxlQ3JlYXRpb25EYXRlJykgfX08L3RoPlxyXG4gICAgICAgICAgICAgIDx0aD57eyBpMThuLnRyYW5zbGF0ZSgnU3RhdHVzJykgfX08L3RoPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICA8L3RoZWFkPlxyXG5cclxuICAgICAgICAgICAgPHRib2R5ICpuZ0Zvcj1cImxldCByb3cgb2YgcHJldmlvdXNSZXF1ZXN0c1wiPlxyXG4gICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmdy1tZWRpdW0gY3Vyc29yLXBvaW50ZXIgdW5kZXJsaW5lIGZ3LWJvbGQgXCIgKGNsaWNrKT1cInZpZXdGb3JtKHJvdz8uZm9ybT8uWydmb3JtSWQnXSlcIj5cclxuICAgICAgICAgICAgICAgICAge3sgcm93Py5mb3JtPy5bJ2Zvcm1JZCddIH19XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8dGQ+e3sgcm93Py5mb3JtPy5bJ2NyZWF0aW9uRGF0ZSddICB8IGRhdGU6ICdkZC9NTS95eXl5IGhoOm1tIGEnIH19PC90ZD5cclxuICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICA8ZHMtc3RhdHVzIFthdHRyLnN0YXR1c109XCJyb3c/LmZvcm0/LmZvcm1TdGF0dXM/LmtleSB8IHN0YXR1c0NsYXNzXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7IHJvdz8uZm9ybT8uZm9ybVN0YXR1cz8udmFsdWUgfX1cclxuICAgICAgICAgICAgICAgIDwvZHMtc3RhdHVzPlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgPGRzLWxvYWRpbmctdGFibGUgKm5nSWY9XCJsb2FkaW5nXCIgW2NvbHNdPVwiNFwiIFtyb3dzXT1cIjRcIj48L2RzLWxvYWRpbmctdGFibGU+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlbXB0eU1lc3NhZ2VcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgfVxyXG4gICAgPC9zZWN0aW9uPlxyXG4gIDwvZGl2PlxyXG48L3NlY3Rpb24+XHJcblxyXG48bmctdGVtcGxhdGVcclxuICBjZGtDb25uZWN0ZWRPdmVybGF5XHJcbiAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlIYXNCYWNrZHJvcF09XCJ0cnVlXCJcclxuICAoYmFja2Ryb3BDbGljayk9XCJpc09wZW4gPSBmYWxzZVwiXHJcbiAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlHcm93QWZ0ZXJPcGVuXT1cInRydWVcIlxyXG4gIFtjZGtDb25uZWN0ZWRPdmVybGF5T3JpZ2luXT1cInRyaWdnZXJcIlxyXG4gIFtjZGtDb25uZWN0ZWRPdmVybGF5T3Blbl09XCJpc09wZW5cIlxyXG4+XHJcbiAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmaWx0ZXJGb3JtR3JvdXBcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItY29udGFpbmVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJwb3B1cC1oZWFkZXIgYm9yZGVyLWJvdHRvbSBwYi0yXCI+XHJcbiAgICAgICAgPGgzIGNsYXNzPVwiZnMtMTYgZmMtYmxhY2sgZnctbWVkaXVtXCI+e3sgaTE4bi50cmFuc2xhdGUoJ2ZpbHRlcnMnKSB9fTwvaDM+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGdhcC00IGdhcC1tZC0zIGZpbHRlci1zZWN0aW9uIGJjLXdoaXRlIG10LTAgcHQtM1wiPlxyXG5cclxuICAgICAgICA8YXBwLWN1c3RvbS1zZWFyY2hhYmxlXHJcbiAgICAgICAgICBjbGFzcz1cInNlY3Rpb24taXRlbVwiXHJcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJzdGF0dXNcIlxyXG4gICAgICAgICAgbGFiZWw9XCJ7eyBpMThuLnRyYW5zbGF0ZSgnc3RhdHVzJykgfX1cIlxyXG4gICAgICAgICAgW29wdGlvbnNdPVwic3RhdHVzZXNcIlxyXG4gICAgICAgICAgW2Rpc3BsYXllZExhYmVsXT1cIid2YWx1ZSdcIlxyXG4gICAgICAgICAgW2tleV09XCIna2V5J1wiPlxyXG4gICAgICAgIDwvYXBwLWN1c3RvbS1zZWFyY2hhYmxlPlxyXG5cclxuICAgICAgICA8YXBwLWN1c3RvbS1zZWFyY2hhYmxlXHJcbiAgICAgICAgICBjbGFzcz1cInNlY3Rpb24taXRlbVwiXHJcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ5ZWFyXCJcclxuICAgICAgICAgIGxhYmVsPVwie3sgaTE4bi50cmFuc2xhdGUoJ3llYXInKSB9fVwiXHJcbiAgICAgICAgICBbb3B0aW9uc109XCJ5ZWFyc09wdGlvbnNcIlxyXG4gICAgICAgICAgW2Rpc3BsYXllZExhYmVsXT1cIid2YWx1ZSdcIlxyXG4gICAgICAgICAgW2tleV09XCIna2V5J1wiPlxyXG4gICAgICAgIDwvYXBwLWN1c3RvbS1zZWFyY2hhYmxlPlxyXG5cclxuICAgICAgICA8YXBwLWN1c3RvbS1zZWFyY2hhYmxlXHJcbiAgICAgICAgICBjbGFzcz1cInNlY3Rpb24taXRlbVwiXHJcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJtb250aFwiXHJcbiAgICAgICAgICBsYWJlbD1cInt7IGkxOG4udHJhbnNsYXRlKCdtb250aCcpIH19XCJcclxuICAgICAgICAgIFtvcHRpb25zXT1cIm1vbnRoc09wdGlvbnNcIlxyXG4gICAgICAgICAgW2Rpc3BsYXllZExhYmVsXT1cIid2YWx1ZSdcIlxyXG4gICAgICAgICAgW2tleV09XCIna2V5J1wiPlxyXG4gICAgICAgIDwvYXBwLWN1c3RvbS1zZWFyY2hhYmxlPlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMyBtdC00XCI+XHJcbiAgICAgICAgICA8ZHMtYnV0dG9uIHNoYXBlPVwib3V0bGluZVwiIHNpemU9XCJzbWFsbFwiIChjbGljayk9XCJjbGVhckZpbHRlcnMoKVwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZzLTEyXCI+IHt7IGkxOG4udHJhbnNsYXRlKCdjbGVhcicpIH19IDwvc3Bhbj5cclxuICAgICAgICAgIDwvZHMtYnV0dG9uPlxyXG4gICAgICAgICAgPGRzLWJ1dHRvbiBjbGFzcz1cInctMTAwXCIgc2l6ZT1cInNtYWxsXCIgKGNsaWNrKT1cImFwcGx5RmlsdGVycygpXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnMtMTJcIj57eyBpMThuLnRyYW5zbGF0ZSgnYXBwbHlGaWx0ZXJzJykgfX0gIDwvc3Bhbj5cclxuICAgICAgICAgIDwvZHMtYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZm9ybT5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcblxyXG48bmctdGVtcGxhdGUgI2VtcHR5TWVzc2FnZT5cclxuICA8ZHMtbWVzc2FnZSBsYWJlbD1cInt7aTE4bi50cmFuc2xhdGUoJ05vRGF0YScpfX1cIj48L2RzLW1lc3NhZ2U+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
169
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldmlvdXMtcmVxdWVzdHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL2FwcC1jb21wb25lbnQtc2VjdGlvbnMvcHJldmlvdXMtcmVxdWVzdHMvcHJldmlvdXMtcmVxdWVzdHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL2FwcC1jb21wb25lbnQtc2VjdGlvbnMvcHJldmlvdXMtcmVxdWVzdHMvcHJldmlvdXMtcmVxdWVzdHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixTQUFTLEVBQUUsc0JBQXNCLEVBQVMsTUFBTSxlQUFlLENBQUM7QUFDdkYsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQVksZUFBZSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDcEUsT0FBTyxFQUFjLFdBQVcsRUFBYSxtQkFBbUIsRUFBRSxVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRyxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0RSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBRXBELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUVqRSxPQUFPLEVBQUMsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRSxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7Ozs7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QUM7SUFDSCxDQUFDO3VHQW5JVSx5QkFBeUI7MkZBQXpCLHlCQUF5Qix1RUNwQ3RDLG15T0F3S0EsNDRJRHJKSSxZQUFZLHlkQUNaLGFBQWEsOEJBQ2IsWUFBWSw4QkFDWixlQUFlLDhCQUNmLGVBQWUsOEJBQ2YsbUJBQW1CLDRyQkFDbkIscUJBQXFCLGtvQkFDckIsZUFBZSxvREFDZixnQkFBZ0IsdUlBQ2hCLHlCQUF5QiwyTUFDekIsbUJBQW1COzsyRkFPVix5QkFBeUI7a0JBdEJyQyxTQUFTOytCQUNFLGFBQWEsY0FDWCxJQUFJLFdBRVA7d0JBQ1AsWUFBWTt3QkFDWixhQUFhO3dCQUNiLFlBQVk7d0JBQ1osZUFBZTt3QkFDZixlQUFlO3dCQUNmLG1CQUFtQjt3QkFDbkIscUJBQXFCO3dCQUNyQixlQUFlO3dCQUNmLGdCQUFnQjt3QkFDaEIseUJBQXlCO3dCQUN6QixtQkFBbUI7cUJBRXBCLFdBR1EsQ0FBQyxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBPbkluaXR9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7TWF0TWVudU1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL21lbnVcIjtcclxuaW1wb3J0IHtNYXREaWFsb2csIE1hdERpYWxvZ01vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xyXG5pbXBvcnQge0Zvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBWYWxpZGF0b3JzfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHtNYXRCdXR0b25Ub2dnbGVNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9idXR0b24tdG9nZ2xlXCI7XHJcbmltcG9ydCB7Um91dGVyTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7VHJhbnNsYXRlTW9kdWxlfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xyXG5pbXBvcnQge0NvcmVJMThuU2VydmljZSwgQ29yZVNlcnZpY2UsIFNpZGVuYXZTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXNcIjtcclxuaW1wb3J0IHtTdGF0dXNTdHlsZVBpcGV9IGZyb20gXCIuLi8uLi8uLi9waXBlcy9zdGF0dXMtc3R5bGUucGlwZVwiO1xyXG5pbXBvcnQge1RvYXN0clNlcnZpY2V9IGZyb20gXCJuZ3gtdG9hc3RyXCI7XHJcbmltcG9ydCB7Q2RrQ29ubmVjdGVkT3ZlcmxheSwgQ2RrT3ZlcmxheU9yaWdpbn0gZnJvbSBcIkBhbmd1bGFyL2Nkay9vdmVybGF5XCI7XHJcbmltcG9ydCB7Q3VzdG9tU2VhcmNoYWJsZUNvbXBvbmVudH0gZnJvbSBcIi4uLy4uL3NoYXJlZC1jb21wb25lbnRzXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1oaXN0b3J5JyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG5cclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBNYXRNZW51TW9kdWxlLFxyXG4gICAgUm91dGVyTW9kdWxlLFxyXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxyXG4gICAgTWF0RGlhbG9nTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIE1hdEJ1dHRvblRvZ2dsZU1vZHVsZSxcclxuICAgIFN0YXR1c1N0eWxlUGlwZSxcclxuICAgIENka092ZXJsYXlPcmlnaW4sXHJcbiAgICBDdXN0b21TZWFyY2hhYmxlQ29tcG9uZW50LFxyXG4gICAgQ2RrQ29ubmVjdGVkT3ZlcmxheVxyXG5cclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9wcmV2aW91cy1yZXF1ZXN0cy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vcHJldmlvdXMtcmVxdWVzdHMuY29tcG9uZW50LnNjc3MnXSxcclxuICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQcmV2aW91c1JlcXVlc3RzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcclxuICBwcmV2aW91c1JlcXVlc3RzOiBhbnlbXSA9IFtdXHJcbiAgbG9hZGluZzogYm9vbGVhblxyXG4gIGZpbHRlckZvcm1Hcm91cDogRm9ybUdyb3VwO1xyXG4gIGVycm9yTWVzc2FnZTogc3RyaW5nXHJcbiAgaXNPcGVuOiBib29sZWFuID0gZmFsc2U7XHJcbiAgbW9udGhzT3B0aW9ucyA9IFtcclxuICAgIHtrZXk6ICcxJywgdmFsdWU6ICcxJ30sXHJcbiAgICB7a2V5OiAnMicsIHZhbHVlOiAnMid9LFxyXG4gICAge2tleTogJzMnLCB2YWx1ZTogJzMnfSxcclxuICAgIHtrZXk6ICc0JywgdmFsdWU6ICc0J30sXHJcbiAgICB7a2V5OiAnNScsIHZhbHVlOiAnNSd9LFxyXG4gICAge2tleTogJzYnLCB2YWx1ZTogJzYnfSxcclxuICAgIHtrZXk6ICc3JywgdmFsdWU6ICc3J30sXHJcbiAgICB7a2V5OiAnOCcsIHZhbHVlOiAnOCd9LFxyXG4gICAge2tleTogJzknLCB2YWx1ZTogJzknfSxcclxuICAgIHtrZXk6ICcxMCcsIHZhbHVlOiAnMTAnfSxcclxuICAgIHtrZXk6ICcxMScsIHZhbHVlOiAnMTEnfSxcclxuICAgIHtrZXk6ICcxMicsIHZhbHVlOiAnMTInfVxyXG4gIF07XHJcbiAgeWVhcnNPcHRpb25zID0gW1xyXG4gICAge2tleTogbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpLCB2YWx1ZTogbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpfSxcclxuICAgIHtrZXk6IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSAtIDEsIHZhbHVlOiBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCkgLSAxfSxcclxuICAgIHtrZXk6IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSAtIDIsIHZhbHVlOiBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCkgLSAyfSxcclxuICAgIHtrZXk6IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSAtIDMsIHZhbHVlOiBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCkgLSAzfV07XHJcblxyXG4gIHN0YXR1c2VzID0gW11cclxuICBzZWFyY2hEYXRhID0ge1xyXG4gICAgeWVhcjogbnVsbCxcclxuICAgIG1vbnRoOiBudWxsXHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICAgICAgICAgICAgcHVibGljIHJlYWRvbmx5IHNpZGVuYXZTZXJ2aWNlOiBTaWRlbmF2U2VydmljZSxcclxuICAgICAgICAgICAgICBwdWJsaWMgY29yZVNlcnZpY2U6IENvcmVTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdG9hc3RlclNlcnZpY2U6IFRvYXN0clNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHVibGljIGkxOG46IENvcmVJMThuU2VydmljZSxcclxuICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGZiOiBGb3JtQnVpbGRlclxyXG4gICkge31cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmNyZWF0ZUZvcm0oKTtcclxuICAgIHRoaXMuc3RhdHVzZXMgPSBbXHJcbiAgICAgIHtrZXk6IFwiQVBQUk9WRURcIiwgdmFsdWU6IHRoaXMuaTE4bi5sYW5ndWFnZSA9PSAnZW4nID8gXCJBcHByb3ZlXCIgOiBcItmF2YjYp9mB2YLYqVwifSxcclxuICAgICAge2tleTogXCJSRUpFQ1RFRFwiLCB2YWx1ZTogdGhpcy5pMThuLmxhbmd1YWdlID09ICdlbicgPyBcIlJlamVjdFwiIDogXCLZhdix2YHZiNi2XCJ9LFxyXG4gICAgICB7a2V5OiBcIlBFTkRJTkdcIiwgdmFsdWU6IHRoaXMuaTE4bi5sYW5ndWFnZSA9PSAnZW4nID8gXCJQZW5kaW5nXCIgOiBcItmF2LnZhNmCXCJ9XHJcbiAgICBdXHJcbiAgfVxyXG5cclxuICBjcmVhdGVGb3JtKCkge1xyXG4gICAgdGhpcy5maWx0ZXJGb3JtR3JvdXAgPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgbW9udGg6IG5ldyBGb3JtQ29udHJvbCh7a2V5OiBuZXcgRGF0ZSgpLmdldFVUQ01vbnRoKCkgKyAxLCB2YWx1ZTogbmV3IERhdGUoKS5nZXRVVENNb250aCgpICsgMX0sIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxyXG4gICAgICB5ZWFyOiBuZXcgRm9ybUNvbnRyb2woe2tleTogbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpLCB2YWx1ZTogbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpfSwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXHJcbiAgICAgIHN0YXR1czogbmV3IEZvcm1Db250cm9sKCcnLCBWYWxpZGF0b3JzLnJlcXVpcmVkKVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmZpbHRlckZvcm1Hcm91cC5nZXQoJ3N0YXR1cycpLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodmFsdWUgPT4ge1xyXG4gICAgICB0aGlzLmZpbHRlclN0YXR1cygpXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIGlmICh0aGlzLmNvcmVTZXJ2aWNlLmhpc3RvcnlEYXRhTG9hZGVkKSB7XHJcbiAgICAgIHRoaXMucHJldmlvdXNSZXF1ZXN0cyA9IHRoaXMuY29yZVNlcnZpY2UuaGlzdG9yeURhdGFcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZ2V0UmVxdWVzdHMoKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xlYXJGaWx0ZXJzKCkge1xyXG4gICAgdGhpcy5maWx0ZXJGb3JtR3JvdXAucmVzZXQoKVxyXG4gICAgdGhpcy5maWx0ZXJGb3JtR3JvdXAuZ2V0KCdtb250aCcpLnNldFZhbHVlKHtrZXk6IG5ldyBEYXRlKCkuZ2V0VVRDTW9udGgoKSArIDEsIHZhbHVlOiBuZXcgRGF0ZSgpLmdldFVUQ01vbnRoKCkgKyAxfSlcclxuICAgIHRoaXMuZmlsdGVyRm9ybUdyb3VwLmdldCgneWVhcicpLnNldFZhbHVlKHtrZXk6IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSwgdmFsdWU6IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSArIDF9KVxyXG4gICAgdGhpcy5maWx0ZXJGb3JtR3JvdXAuZ2V0KCdzdGF0dXMnKS5zZXRWYWx1ZSgnJylcclxuICAgIHRoaXMuaXNPcGVuID0gIXRoaXMuaXNPcGVuXHJcbiAgICB0aGlzLmZpbHRlclN0YXR1cygpXHJcbiAgfVxyXG5cclxuICBhcHBseUZpbHRlcnMoKSB7XHJcbiAgICB0aGlzLmlzT3BlbiA9ICF0aGlzLmlzT3BlblxyXG4gICAgdGhpcy5nZXRSZXF1ZXN0cygpXHJcbiAgfVxyXG5cclxuICBnZXRSZXF1ZXN0cygpIHtcclxuICAgIGlmICh0aGlzLnNlYXJjaERhdGEueWVhciA9PSB0aGlzLmZpbHRlckZvcm1Hcm91cC5nZXQoJ3llYXInKS52YWx1ZT8ua2V5ICYmIHRoaXMuc2VhcmNoRGF0YS5tb250aCA9PSB0aGlzLmZpbHRlckZvcm1Hcm91cC5nZXQoJ21vbnRoJykudmFsdWU/LmtleSkge1xyXG4gICAgICB0aGlzLmZpbHRlclN0YXR1cygpXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlYXJjaERhdGEgPSB7XHJcbiAgICAgICAgeWVhcjogdGhpcy5maWx0ZXJGb3JtR3JvdXAuZ2V0KCd5ZWFyJykudmFsdWU/LmtleSxcclxuICAgICAgICBtb250aDogdGhpcy5maWx0ZXJGb3JtR3JvdXAuZ2V0KCdtb250aCcpLnZhbHVlPy5rZXksXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZVxyXG4gICAgICB0aGlzLmNvcmVTZXJ2aWNlLmhpc3RvcnlEYXRhID0gW11cclxuICAgICAgdGhpcy5wcmV2aW91c1JlcXVlc3RzID0gW11cclxuICAgICAgdGhpcy5jb3JlU2VydmljZS5teVJlcXVlc3RzKHRoaXMuc2VhcmNoRGF0YSkuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jb3JlU2VydmljZS5oaXN0b3J5RGF0YSA9IHJlc3BvbnNlLmhpc3Rvcnk7XHJcbiAgICAgICAgICB0aGlzLnByZXZpb3VzUmVxdWVzdHMgPSB0aGlzLmNvcmVTZXJ2aWNlLmhpc3RvcnlEYXRhXHJcbiAgICAgICAgICB0aGlzLmNvcmVTZXJ2aWNlLmhpc3RvcnlEYXRhTG9hZGVkID0gdHJ1ZVxyXG4gICAgICAgICAgdGhpcy5maWx0ZXJTdGF0dXMoKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBlcnI/LmVycm9yPy5tZXRhPy5tZXNzYWdlcz8uWycwJ10/Lm1lc3NhZ2U7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmVycm9yKHRoaXMuZXJyb3JNZXNzYWdlKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY29tcGxldGU6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmaWx0ZXJTdGF0dXMoKSB7XHJcbiAgICB0aGlzLnByZXZpb3VzUmVxdWVzdHMgPSB0aGlzLmNvcmVTZXJ2aWNlLmhpc3RvcnlEYXRhXHJcbiAgICBsZXQgZmlsdGVyRGF0YSA9IFtdXHJcbiAgICBpZiAodGhpcy5maWx0ZXJGb3JtR3JvdXAuZ2V0KCdzdGF0dXMnKS52YWx1ZT8ua2V5KSB7XHJcbiAgICAgIGZpbHRlckRhdGEgPSB0aGlzLnByZXZpb3VzUmVxdWVzdHMuZmlsdGVyKChyZXF1ZXN0KSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHJlcXVlc3QuZm9ybS5mb3JtU3RhdHVzLmtleSA9PT0gdGhpcy5maWx0ZXJGb3JtR3JvdXAuZ2V0KCdzdGF0dXMnKS52YWx1ZS5rZXlcclxuICAgICAgfSlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGZpbHRlckRhdGEgPSB0aGlzLnByZXZpb3VzUmVxdWVzdHNcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnByZXZpb3VzUmVxdWVzdHMgPSBmaWx0ZXJEYXRhXHJcbiAgfVxyXG5cclxuICB2aWV3Rm9ybShmb3JtSWQ6IHN0cmluZykge1xyXG4gICAgaWYgKGZvcm1JZCkge1xyXG4gICAgICB3aW5kb3cub3BlbignL2dyb3VwL2ktZ2F0ZS93bS1icG0vZm9ybXM/Zm9ybUlkPScgKyBmb3JtSWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuIiwiPHNlY3Rpb24gY2xhc3M9XCJtYWluLXNpZGVuYXYgaGlzdG9yeS1zaWRlbmF2XCI+XHJcbiAgPGRpdiBjbGFzcz1cInNpZGVuYXYtdGl0bGVcIj5cclxuICAgIDxoMz57eyBpMThuLnRyYW5zbGF0ZSgnUHJldmlvdXNSZXF1ZXN0cycpIH19PC9oMz5cclxuICAgIDxkcy1idXR0b24gY2xhc3M9XCJjbG9zZS1zaWRlbmF2XCIgKGNsaWNrKT1cInNpZGVuYXZTZXJ2aWNlLmNsb3NlU2lkZW5hdigpXCIgaWNvbj5cclxuICAgICAgPGRzLWljb24gaWNvbj1cImNsb3NlXCIgY2xhc3M9XCJmcy0yMCBmYy1ibGFja1wiPjwvZHMtaWNvbj5cclxuICAgIDwvZHMtYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IGNsYXNzPVwic2lkZW5hdi1ib2R5IGJjLWxpZ2h0LWdyYXlcIj5cclxuICAgIDxzZWN0aW9uIGNsYXNzPVwicC0zXCI+XHJcbiAgICAgIDxoZWFkZXIgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGdhcC0yIG1iLTNcIj5cclxuICAgICAgICA8aDIgY2xhc3M9XCJmcy0yMCBmdy1tZWRpdW0gZmMtYmxhY2sgbWItMCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtZ3Jvdy0xIGdhcC0zXCI+XHJcbiAgICAgICAgICB7eyBpMThuLnRyYW5zbGF0ZSgnQWxsUmVxdWVzdHMnKSB9fVxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRsZS1jb3VudCBmcy0xNCBmdy1ub3JtYWxcIj57eyBwcmV2aW91c1JlcXVlc3RzPy5sZW5ndGggPyBwcmV2aW91c1JlcXVlc3RzPy5sZW5ndGggOiAnMCcgfX08L3NwYW4+XHJcbiAgICAgICAgPC9oMj5cclxuICAgICAgICA8ZHMtYnV0dG9uIGljb24gc2l6ZT1cInNtYWxsXCIgKGNsaWNrKT1cImlzT3BlbiA9ICFpc09wZW5cIiBjZGtPdmVybGF5T3JpZ2luICN0cmlnZ2VyPVwiY2RrT3ZlcmxheU9yaWdpblwiPlxyXG4gICAgICAgICAgPGRzLWljb24gaWNvbj1cImZpbHRlclwiIGNsYXNzPVwiZmMtY29yYWwgZnMtMjBcIiBzbG90PVwicHJlZml4XCI+PC9kcy1pY29uPlxyXG4gICAgICAgIDwvZHMtYnV0dG9uPlxyXG4gICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZS1ncm91cFxyXG4gICAgICAgICAgY2xhc3M9XCJpY29uLXRvZ2dsZSBmbGV4LW5vd3JhcFwiXHJcbiAgICAgICAgICAjcGFnZVZpZXc9XCJtYXRCdXR0b25Ub2dnbGVHcm91cFwiXHJcbiAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAgIHZhbHVlPVwibGlzdFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlIHZhbHVlPVwiY2FyZFwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNmaSBzZmktY2FyZCBmcy0yMFwiPjwvc3Bhbj5cclxuICAgICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGU+XHJcbiAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgdmFsdWU9XCJsaXN0XCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2ZpIHNmaS1saXN0LWRvdHMgZnMtMjBcIj48L3NwYW4+XHJcbiAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlPlxyXG4gICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXA+XHJcbiAgICAgIDwvaGVhZGVyPlxyXG5cclxuICAgICAgQGlmIChwcmV2aW91c1JlcXVlc3RzPy5sZW5ndGgpIHtcclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaGlzdG9yeS1jYXJkcy1jb250YWluZXJcIiAqbmdJZj1cInBhZ2VWaWV3LnZhbHVlID09PSAnY2FyZCdcIj5cclxuICAgICAgICAgIEBpZiAobG9hZGluZykge1xyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTQgbGluZS1oZWlnaHQtMSBiYy13aGl0ZSByYWRpdXMtNiBib3gtc2hhZG93XCIgKm5nRm9yPVwibGV0IHJvdyBvZiBbMCwxLDIsM11cIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwibG9hZGluZy1iZyBmcy0xNiBmdy1tZWRpdW0gZmxleC1ncm93LTEgbWItMCBjdXJzb3ItcG9pbnRlciB1bmRlcmxpbmUgZnctYm9sZFwiPjwvaDM+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgZy0zXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gY29sLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZzLTExIGZjLWRhcmstZ3JheSBtYi0yIGxvYWRpbmctYmdcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmcy0xMiBmdy1tZWRpdW0gZmMtYmxhY2sgbG9hZGluZy1iZ1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gY29sLTYganVzdGlmeS1jb250ZW50LWVuZCBhbGlnbi1pdGVtcy1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtNCBsaW5lLWhlaWdodC0xIGJjLXdoaXRlIHJhZGl1cy02IGJveC1zaGFkb3dcIiAqbmdGb3I9XCJsZXQgcm93IG9mIHByZXZpb3VzUmVxdWVzdHNcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICA8aDNcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmcy0xNiBmdy1tZWRpdW0gZmxleC1ncm93LTEgbWItMCBjdXJzb3ItcG9pbnRlciB1bmRlcmxpbmUgZnctYm9sZFwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ2aWV3Rm9ybShyb3c/LmZvcm0/LlsnZm9ybUlkJ10pXCI+e3sgcm93Py5mb3JtPy5bJ2Zvcm1JZCddIH19PC9oMz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGctM1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBjb2wtNlwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZzLTExIGZjLWRhcmstZ3JheSBtYi0yXCI+e3sgaTE4bi50cmFuc2xhdGUoJ2Zvcm1UYWJsZUNyZWF0aW9uRGF0ZScpIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZzLTEyIGZ3LW1lZGl1bSBmYy1ibGFja1wiPnt7IHJvdz8uZm9ybT8uWydjcmVhdGlvbkRhdGUnXSB8IGRhdGU6ICdkZC9NTS95eXl5IGhoOm1tIGEnIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGNvbC02IGp1c3RpZnktY29udGVudC1lbmQgYWxpZ24taXRlbXMtZW5kXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8ZHMtc3RhdHVzIFthdHRyLnN0YXR1c109XCJyb3c/LmZvcm0/LmZvcm1TdGF0dXM/LmtleSB8IHN0YXR1c0NsYXNzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgcm93Py5mb3JtPy5mb3JtU3RhdHVzPy52YWx1ZSB9fVxyXG4gICAgICAgICAgICAgICAgICA8L2RzLXN0YXR1cz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIiAqbmdJZj1cInBhZ2VWaWV3LnZhbHVlID09PSAnbGlzdCdcIj5cclxuICAgICAgICAgIDx0YWJsZSAqbmdJZj1cInByZXZpb3VzUmVxdWVzdHM/Lmxlbmd0aCAmJiAhbG9hZGluZ1wiPlxyXG4gICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICA8dGg+e3sgaTE4bi50cmFuc2xhdGUoJ2Zvcm1UYWJsZUZvcm1JZCcpIH19PC90aD5cclxuICAgICAgICAgICAgICA8dGg+e3sgaTE4bi50cmFuc2xhdGUoJ2Zvcm1UYWJsZUNyZWF0aW9uRGF0ZScpIH19PC90aD5cclxuICAgICAgICAgICAgICA8dGg+e3sgaTE4bi50cmFuc2xhdGUoJ1N0YXR1cycpIH19PC90aD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgPC90aGVhZD5cclxuXHJcbiAgICAgICAgICAgIDx0Ym9keSAqbmdGb3I9XCJsZXQgcm93IG9mIHByZXZpb3VzUmVxdWVzdHNcIj5cclxuICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnctbWVkaXVtIGN1cnNvci1wb2ludGVyIHVuZGVybGluZSBmdy1ib2xkIFwiIChjbGljayk9XCJ2aWV3Rm9ybShyb3c/LmZvcm0/LlsnZm9ybUlkJ10pXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7IHJvdz8uZm9ybT8uWydmb3JtSWQnXSB9fVxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkPnt7IHJvdz8uZm9ybT8uWydjcmVhdGlvbkRhdGUnXSAgfCBkYXRlOiAnZGQvTU0veXl5eSBoaDptbSBhJyB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgPGRzLXN0YXR1cyBbYXR0ci5zdGF0dXNdPVwicm93Py5mb3JtPy5mb3JtU3RhdHVzPy5rZXkgfCBzdGF0dXNDbGFzc1wiPlxyXG4gICAgICAgICAgICAgICAgICB7eyByb3c/LmZvcm0/LmZvcm1TdGF0dXM/LnZhbHVlIH19XHJcbiAgICAgICAgICAgICAgICA8L2RzLXN0YXR1cz5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgIDxkcy1sb2FkaW5nLXRhYmxlICpuZ0lmPVwibG9hZGluZ1wiIFtjb2xzXT1cIjRcIiBbcm93c109XCI0XCI+PC9kcy1sb2FkaW5nLXRhYmxlPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICB9IEBlbHNlIHtcclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZW1wdHlNZXNzYWdlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIH1cclxuICAgIDwvc2VjdGlvbj5cclxuICA8L2Rpdj5cclxuPC9zZWN0aW9uPlxyXG5cclxuPG5nLXRlbXBsYXRlXHJcbiAgY2RrQ29ubmVjdGVkT3ZlcmxheVxyXG4gIFtjZGtDb25uZWN0ZWRPdmVybGF5SGFzQmFja2Ryb3BdPVwidHJ1ZVwiXHJcbiAgKGJhY2tkcm9wQ2xpY2spPVwiaXNPcGVuID0gZmFsc2VcIlxyXG4gIFtjZGtDb25uZWN0ZWRPdmVybGF5R3Jvd0FmdGVyT3Blbl09XCJ0cnVlXCJcclxuICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9yaWdpbl09XCJ0cmlnZ2VyXCJcclxuICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9wZW5dPVwiaXNPcGVuXCJcclxuPlxyXG4gIDxmb3JtIFtmb3JtR3JvdXBdPVwiZmlsdGVyRm9ybUdyb3VwXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWNvbnRhaW5lclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicG9wdXAtaGVhZGVyIGJvcmRlci1ib3R0b20gcGItMlwiPlxyXG4gICAgICAgIDxoMyBjbGFzcz1cImZzLTE2IGZjLWJsYWNrIGZ3LW1lZGl1bVwiPnt7IGkxOG4udHJhbnNsYXRlKCdmaWx0ZXJzJykgfX08L2gzPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBnYXAtNCBnYXAtbWQtMyBmaWx0ZXItc2VjdGlvbiBiYy13aGl0ZSBtdC0wIHB0LTNcIj5cclxuXHJcbiAgICAgICAgPGFwcC1jdXN0b20tc2VhcmNoYWJsZVxyXG4gICAgICAgICAgY2xhc3M9XCJzZWN0aW9uLWl0ZW1cIlxyXG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic3RhdHVzXCJcclxuICAgICAgICAgIGxhYmVsPVwie3sgaTE4bi50cmFuc2xhdGUoJ3N0YXR1cycpIH19XCJcclxuICAgICAgICAgIFtvcHRpb25zXT1cInN0YXR1c2VzXCJcclxuICAgICAgICAgIFtkaXNwbGF5ZWRMYWJlbF09XCIndmFsdWUnXCJcclxuICAgICAgICAgIFtrZXldPVwiJ2tleSdcIj5cclxuICAgICAgICA8L2FwcC1jdXN0b20tc2VhcmNoYWJsZT5cclxuXHJcbiAgICAgICAgPGFwcC1jdXN0b20tc2VhcmNoYWJsZVxyXG4gICAgICAgICAgY2xhc3M9XCJzZWN0aW9uLWl0ZW1cIlxyXG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwieWVhclwiXHJcbiAgICAgICAgICBsYWJlbD1cInt7IGkxOG4udHJhbnNsYXRlKCd5ZWFyJykgfX1cIlxyXG4gICAgICAgICAgW29wdGlvbnNdPVwieWVhcnNPcHRpb25zXCJcclxuICAgICAgICAgIFtkaXNwbGF5ZWRMYWJlbF09XCIndmFsdWUnXCJcclxuICAgICAgICAgIFtrZXldPVwiJ2tleSdcIj5cclxuICAgICAgICA8L2FwcC1jdXN0b20tc2VhcmNoYWJsZT5cclxuXHJcbiAgICAgICAgPGFwcC1jdXN0b20tc2VhcmNoYWJsZVxyXG4gICAgICAgICAgY2xhc3M9XCJzZWN0aW9uLWl0ZW1cIlxyXG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibW9udGhcIlxyXG4gICAgICAgICAgbGFiZWw9XCJ7eyBpMThuLnRyYW5zbGF0ZSgnbW9udGgnKSB9fVwiXHJcbiAgICAgICAgICBbb3B0aW9uc109XCJtb250aHNPcHRpb25zXCJcclxuICAgICAgICAgIFtkaXNwbGF5ZWRMYWJlbF09XCIndmFsdWUnXCJcclxuICAgICAgICAgIFtrZXldPVwiJ2tleSdcIj5cclxuICAgICAgICA8L2FwcC1jdXN0b20tc2VhcmNoYWJsZT5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTMgbXQtNFwiPlxyXG4gICAgICAgICAgPGRzLWJ1dHRvbiBzaGFwZT1cIm91dGxpbmVcIiBzaXplPVwic21hbGxcIiAoY2xpY2spPVwiY2xlYXJGaWx0ZXJzKClcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmcy0xMlwiPiB7eyBpMThuLnRyYW5zbGF0ZSgnY2xlYXInKSB9fSA8L3NwYW4+XHJcbiAgICAgICAgICA8L2RzLWJ1dHRvbj5cclxuICAgICAgICAgIDxkcy1idXR0b24gY2xhc3M9XCJ3LTEwMFwiIHNpemU9XCJzbWFsbFwiIChjbGljayk9XCJhcHBseUZpbHRlcnMoKVwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZzLTEyXCI+e3sgaTE4bi50cmFuc2xhdGUoJ2FwcGx5RmlsdGVycycpIH19ICA8L3NwYW4+XHJcbiAgICAgICAgICA8L2RzLWJ1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Zvcm0+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG5cclxuPG5nLXRlbXBsYXRlICNlbXB0eU1lc3NhZ2U+XHJcbiAgPGRzLW1lc3NhZ2UgbGFiZWw9XCJ7e2kxOG4udHJhbnNsYXRlKCdOb0RhdGEnKX19XCI+PC9kcy1tZXNzYWdlPlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=