@piserve-tech/form-submission 0.0.0-watch

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 (130) hide show
  1. package/README.md +24 -0
  2. package/element-type/element-type.module.d.ts +12 -0
  3. package/element-type/form-elements/form-elements.component.d.ts +7 -0
  4. package/element-type/question/question.component.d.ts +14 -0
  5. package/element-type/sub-form/sub-form.component.d.ts +6 -0
  6. package/esm2022/element-type/element-type.module.mjs +36 -0
  7. package/esm2022/element-type/form-elements/form-elements.component.mjs +23 -0
  8. package/esm2022/element-type/question/question.component.mjs +52 -0
  9. package/esm2022/element-type/sub-form/sub-form.component.mjs +17 -0
  10. package/esm2022/form-fields/check-box-fields/check-box-fields.component.mjs +198 -0
  11. package/esm2022/form-fields/date-time-fields/date-time-fields.component.mjs +155 -0
  12. package/esm2022/form-fields/drop-down-fields/drop-down-fields.component.mjs +147 -0
  13. package/esm2022/form-fields/file-picker-fields/file-picker-fields.component.mjs +77 -0
  14. package/esm2022/form-fields/form-fields.module.mjs +154 -0
  15. package/esm2022/form-fields/location-fields/location-fields.component.mjs +79 -0
  16. package/esm2022/form-fields/mail-fields/mail-fields.component.mjs +75 -0
  17. package/esm2022/form-fields/mobile-fields/mobile-fields.component.mjs +81 -0
  18. package/esm2022/form-fields/number-fields/number-fields.component.mjs +59 -0
  19. package/esm2022/form-fields/password-fields/password-fields.component.mjs +172 -0
  20. package/esm2022/form-fields/radio-button-fields/radio-button-fields.component.mjs +129 -0
  21. package/esm2022/form-fields/rich-text-editor-fields/rich-text-editor-fields.component.mjs +89 -0
  22. package/esm2022/form-fields/section-fields/section-fields.component.mjs +16 -0
  23. package/esm2022/form-fields/selection-matrix-fields/selection-matrix-fields.component.mjs +27 -0
  24. package/esm2022/form-fields/signature-fields/signature-fields.component.mjs +29 -0
  25. package/esm2022/form-fields/slider-fields/slider-fields.component.mjs +60 -0
  26. package/esm2022/form-fields/terms-and-condition-fields/terms-and-condition-fields.component.mjs +27 -0
  27. package/esm2022/form-fields/text-area-fields/text-area-fields.component.mjs +61 -0
  28. package/esm2022/form-fields/text-fields/text-fields.component.mjs +86 -0
  29. package/esm2022/form-fields/toggle-switch-fields/toggle-switch-fields.component.mjs +42 -0
  30. package/esm2022/form-fields/url-fields/url-fields.component.mjs +59 -0
  31. package/esm2022/form-submission/form-submission.module.mjs +42 -0
  32. package/esm2022/form-submission/header/header.component.mjs +16 -0
  33. package/esm2022/form-submission/logic/logic.component.mjs +17 -0
  34. package/esm2022/form-submission/navigation-tabs/navigation-tabs.component.mjs +27 -0
  35. package/esm2022/form-submission/next-prev-navigation/next-prev-navigation.component.mjs +42 -0
  36. package/esm2022/form-submission/submit-form/submit-form.component.mjs +157 -0
  37. package/esm2022/lib/form-submission.component.mjs +23 -0
  38. package/esm2022/lib/form-submission.module.mjs +45 -0
  39. package/esm2022/lib/form-submission.service.mjs +14 -0
  40. package/esm2022/logic/logic/logic.component.mjs +17 -0
  41. package/esm2022/logic/logic.module.mjs +20 -0
  42. package/esm2022/models/appearance.model.mjs +2 -0
  43. package/esm2022/models/elementOptionAPI.model.mjs +2 -0
  44. package/esm2022/models/elementOptionAPIData.model.mjs +2 -0
  45. package/esm2022/models/elementOptionDB.model.mjs +2 -0
  46. package/esm2022/models/elementOptionDBCriteria.model.mjs +2 -0
  47. package/esm2022/models/enum/condition.enum.mjs +18 -0
  48. package/esm2022/models/enum/elementType .enum.mjs +24 -0
  49. package/esm2022/models/enum/entityType.enum.mjs +12 -0
  50. package/esm2022/models/formConfiguration.model.mjs +2 -0
  51. package/esm2022/models/formElement.model.mjs +2 -0
  52. package/esm2022/models/formElementType.model.mjs +2 -0
  53. package/esm2022/models/grid.model.mjs +2 -0
  54. package/esm2022/models/logic.model.mjs +2 -0
  55. package/esm2022/models/option.model.mjs +2 -0
  56. package/esm2022/models/page.model.mjs +2 -0
  57. package/esm2022/models/publicForm.model.mjs +2 -0
  58. package/esm2022/models/question.model.mjs +2 -0
  59. package/esm2022/models/row.model.mjs +2 -0
  60. package/esm2022/models/section.model.mjs +2 -0
  61. package/esm2022/models/subForm.model.mjs +2 -0
  62. package/esm2022/models/validation.model.mjs +2 -0
  63. package/esm2022/piserve-tech-form-submission.mjs +5 -0
  64. package/esm2022/public-api.mjs +7 -0
  65. package/esm2022/services/countryService.mjs +65 -0
  66. package/esm2022/services/data.service.mjs +26 -0
  67. package/esm2022/services/form.service.mjs +43 -0
  68. package/esm2022/services/mapper.service.mjs +256 -0
  69. package/fesm2022/piserve-tech-form-submission.mjs +2558 -0
  70. package/fesm2022/piserve-tech-form-submission.mjs.map +1 -0
  71. package/form-fields/check-box-fields/check-box-fields.component.d.ts +42 -0
  72. package/form-fields/date-time-fields/date-time-fields.component.d.ts +41 -0
  73. package/form-fields/drop-down-fields/drop-down-fields.component.d.ts +45 -0
  74. package/form-fields/file-picker-fields/file-picker-fields.component.d.ts +24 -0
  75. package/form-fields/form-fields.module.d.ts +36 -0
  76. package/form-fields/location-fields/location-fields.component.d.ts +24 -0
  77. package/form-fields/mail-fields/mail-fields.component.d.ts +21 -0
  78. package/form-fields/mobile-fields/mobile-fields.component.d.ts +45 -0
  79. package/form-fields/number-fields/number-fields.component.d.ts +22 -0
  80. package/form-fields/password-fields/password-fields.component.d.ts +35 -0
  81. package/form-fields/radio-button-fields/radio-button-fields.component.d.ts +39 -0
  82. package/form-fields/rich-text-editor-fields/rich-text-editor-fields.component.d.ts +24 -0
  83. package/form-fields/section-fields/section-fields.component.d.ts +6 -0
  84. package/form-fields/selection-matrix-fields/selection-matrix-fields.component.d.ts +10 -0
  85. package/form-fields/signature-fields/signature-fields.component.d.ts +12 -0
  86. package/form-fields/slider-fields/slider-fields.component.d.ts +25 -0
  87. package/form-fields/terms-and-condition-fields/terms-and-condition-fields.component.d.ts +10 -0
  88. package/form-fields/text-area-fields/text-area-fields.component.d.ts +22 -0
  89. package/form-fields/text-fields/text-fields.component.d.ts +30 -0
  90. package/form-fields/toggle-switch-fields/toggle-switch-fields.component.d.ts +16 -0
  91. package/form-fields/url-fields/url-fields.component.d.ts +22 -0
  92. package/form-submission/form-submission.module.d.ts +14 -0
  93. package/form-submission/header/header.component.d.ts +6 -0
  94. package/form-submission/logic/logic.component.d.ts +6 -0
  95. package/form-submission/navigation-tabs/navigation-tabs.component.d.ts +10 -0
  96. package/form-submission/next-prev-navigation/next-prev-navigation.component.d.ts +15 -0
  97. package/form-submission/submit-form/submit-form.component.d.ts +43 -0
  98. package/index.d.ts +5 -0
  99. package/lib/form-submission.component.d.ts +10 -0
  100. package/lib/form-submission.module.d.ts +14 -0
  101. package/lib/form-submission.service.d.ts +6 -0
  102. package/logic/logic/logic.component.d.ts +6 -0
  103. package/logic/logic.module.d.ts +8 -0
  104. package/models/appearance.model.d.ts +48 -0
  105. package/models/elementOptionAPI.model.d.ts +11 -0
  106. package/models/elementOptionAPIData.model.d.ts +5 -0
  107. package/models/elementOptionDB.model.d.ts +7 -0
  108. package/models/elementOptionDBCriteria.model.d.ts +7 -0
  109. package/models/enum/condition.enum.d.ts +16 -0
  110. package/models/enum/elementType .enum.d.ts +22 -0
  111. package/models/enum/entityType.enum.d.ts +10 -0
  112. package/models/formConfiguration.model.d.ts +16 -0
  113. package/models/formElement.model.d.ts +12 -0
  114. package/models/formElementType.model.d.ts +5 -0
  115. package/models/grid.model.d.ts +8 -0
  116. package/models/logic.model.d.ts +8 -0
  117. package/models/option.model.d.ts +11 -0
  118. package/models/page.model.d.ts +5 -0
  119. package/models/publicForm.model.d.ts +7 -0
  120. package/models/question.model.d.ts +14 -0
  121. package/models/row.model.d.ts +4 -0
  122. package/models/section.model.d.ts +5 -0
  123. package/models/subForm.model.d.ts +8 -0
  124. package/models/validation.model.d.ts +44 -0
  125. package/package.json +43 -0
  126. package/public-api.d.ts +3 -0
  127. package/services/countryService.d.ts +21 -0
  128. package/services/data.service.d.ts +13 -0
  129. package/services/form.service.d.ts +17 -0
  130. package/services/mapper.service.d.ts +10 -0
package/README.md ADDED
@@ -0,0 +1,24 @@
1
+ # FormSubmission
2
+
3
+ This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 16.1.0.
4
+
5
+ ## Code scaffolding
6
+
7
+ Run `ng generate component component-name --project formSubmission` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project formSubmission`.
8
+ > Note: Don't forget to add `--project formSubmission` or else it will be added to the default project in your `angular.json` file.
9
+
10
+ ## Build
11
+
12
+ Run `ng build formSubmission` to build the project. The build artifacts will be stored in the `dist/` directory.
13
+
14
+ ## Publishing
15
+
16
+ After building your library with `ng build formSubmission`, go to the dist folder `cd dist/form-submission` and run `npm publish`.
17
+
18
+ ## Running unit tests
19
+
20
+ Run `ng test formSubmission` to execute the unit tests via [Karma](https://karma-runner.github.io).
21
+
22
+ ## Further help
23
+
24
+ To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
@@ -0,0 +1,12 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "./form-elements/form-elements.component";
3
+ import * as i2 from "./question/question.component";
4
+ import * as i3 from "./sub-form/sub-form.component";
5
+ import * as i4 from "@angular/common";
6
+ import * as i5 from "../form-fields/form-fields.module";
7
+ import * as i6 from "../logic/logic.module";
8
+ export declare class ElementTypeModule {
9
+ static ɵfac: i0.ɵɵFactoryDeclaration<ElementTypeModule, never>;
10
+ static ɵmod: i0.ɵɵNgModuleDeclaration<ElementTypeModule, [typeof i1.FormElementsComponent, typeof i2.QuestionComponent, typeof i3.SubFormComponent], [typeof i4.CommonModule, typeof i5.FormFieldsModule, typeof i6.LogicModule], [typeof i1.FormElementsComponent, typeof i2.QuestionComponent, typeof i3.SubFormComponent]>;
11
+ static ɵinj: i0.ɵɵInjectorDeclaration<ElementTypeModule>;
12
+ }
@@ -0,0 +1,7 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class FormElementsComponent {
3
+ grid: any;
4
+ currentPageIndex: number;
5
+ static ɵfac: i0.ɵɵFactoryDeclaration<FormElementsComponent, never>;
6
+ static ɵcmp: i0.ɵɵComponentDeclaration<FormElementsComponent, "lib-form-elements", never, { "grid": { "alias": "grid"; "required": false; }; "currentPageIndex": { "alias": "currentPageIndex"; "required": false; }; }, {}, never, never, false, never>;
7
+ }
@@ -0,0 +1,14 @@
1
+ import { ChangeDetectorRef, EventEmitter, OnInit } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export declare class QuestionComponent implements OnInit {
4
+ private cdr;
5
+ question: any;
6
+ ngOnInit(): void;
7
+ constructor(cdr: ChangeDetectorRef);
8
+ validations: any;
9
+ currentPageIndex: number;
10
+ emitValidations: EventEmitter<any>;
11
+ handleValidation(validation: any): void;
12
+ static ɵfac: i0.ɵɵFactoryDeclaration<QuestionComponent, never>;
13
+ static ɵcmp: i0.ɵɵComponentDeclaration<QuestionComponent, "lib-question", never, { "question": { "alias": "question"; "required": false; }; "currentPageIndex": { "alias": "currentPageIndex"; "required": false; }; }, { "emitValidations": "emitValidations"; }, never, never, false, never>;
14
+ }
@@ -0,0 +1,6 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class SubFormComponent {
3
+ subForm: any;
4
+ static ɵfac: i0.ɵɵFactoryDeclaration<SubFormComponent, never>;
5
+ static ɵcmp: i0.ɵɵComponentDeclaration<SubFormComponent, "lib-sub-form", never, { "subForm": { "alias": "subForm"; "required": false; }; }, {}, never, never, false, never>;
6
+ }
@@ -0,0 +1,36 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { FormElementsComponent } from './form-elements/form-elements.component';
4
+ import { QuestionComponent } from './question/question.component';
5
+ import { SubFormComponent } from './sub-form/sub-form.component';
6
+ import { FormFieldsModule } from '../form-fields/form-fields.module';
7
+ import { LogicModule } from '../logic/logic.module';
8
+ import * as i0 from "@angular/core";
9
+ export class ElementTypeModule {
10
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ElementTypeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
11
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: ElementTypeModule, declarations: [FormElementsComponent, QuestionComponent, SubFormComponent], imports: [CommonModule,
12
+ FormFieldsModule,
13
+ LogicModule], exports: [FormElementsComponent,
14
+ QuestionComponent,
15
+ SubFormComponent] }); }
16
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ElementTypeModule, imports: [CommonModule,
17
+ FormFieldsModule,
18
+ LogicModule] }); }
19
+ }
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ElementTypeModule, decorators: [{
21
+ type: NgModule,
22
+ args: [{
23
+ declarations: [FormElementsComponent, QuestionComponent, SubFormComponent],
24
+ imports: [
25
+ CommonModule,
26
+ FormFieldsModule,
27
+ LogicModule
28
+ ],
29
+ exports: [
30
+ FormElementsComponent,
31
+ QuestionComponent,
32
+ SubFormComponent
33
+ ]
34
+ }]
35
+ }] });
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC10eXBlLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Zvcm0tc3VibWlzc2lvbi9zcmMvZWxlbWVudC10eXBlL2VsZW1lbnQtdHlwZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDaEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDakUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDckUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQWlCcEQsTUFBTSxPQUFPLGlCQUFpQjsrR0FBakIsaUJBQWlCO2dIQUFqQixpQkFBaUIsaUJBWmIscUJBQXFCLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLGFBRXZFLFlBQVk7WUFDWixnQkFBZ0I7WUFDaEIsV0FBVyxhQUdYLHFCQUFxQjtZQUNyQixpQkFBaUI7WUFDakIsZ0JBQWdCO2dIQUdQLGlCQUFpQixZQVYxQixZQUFZO1lBQ1osZ0JBQWdCO1lBQ2hCLFdBQVc7OzRGQVFGLGlCQUFpQjtrQkFiN0IsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxxQkFBcUIsRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsQ0FBQztvQkFDMUUsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osZ0JBQWdCO3dCQUNoQixXQUFXO3FCQUNaO29CQUNELE9BQU8sRUFBRTt3QkFDUCxxQkFBcUI7d0JBQ3JCLGlCQUFpQjt3QkFDakIsZ0JBQWdCO3FCQUNqQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybUVsZW1lbnRzQ29tcG9uZW50IH0gZnJvbSAnLi9mb3JtLWVsZW1lbnRzL2Zvcm0tZWxlbWVudHMuY29tcG9uZW50JztcbmltcG9ydCB7IFF1ZXN0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9xdWVzdGlvbi9xdWVzdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgU3ViRm9ybUNvbXBvbmVudCB9IGZyb20gJy4vc3ViLWZvcm0vc3ViLWZvcm0uY29tcG9uZW50JztcbmltcG9ydCB7IEZvcm1GaWVsZHNNb2R1bGUgfSBmcm9tICcuLi9mb3JtLWZpZWxkcy9mb3JtLWZpZWxkcy5tb2R1bGUnO1xuaW1wb3J0IHsgTG9naWNNb2R1bGUgfSBmcm9tICcuLi9sb2dpYy9sb2dpYy5tb2R1bGUnO1xuXG5cblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbRm9ybUVsZW1lbnRzQ29tcG9uZW50LCBRdWVzdGlvbkNvbXBvbmVudCwgU3ViRm9ybUNvbXBvbmVudF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybUZpZWxkc01vZHVsZSxcbiAgICBMb2dpY01vZHVsZVxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgRm9ybUVsZW1lbnRzQ29tcG9uZW50LFxuICAgIFF1ZXN0aW9uQ29tcG9uZW50LFxuICAgIFN1YkZvcm1Db21wb25lbnRcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBFbGVtZW50VHlwZU1vZHVsZSB7IH1cbiJdfQ==
@@ -0,0 +1,23 @@
1
+ import { Component, Input, } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ import * as i2 from "../../form-fields/section-fields/section-fields.component";
5
+ import * as i3 from "../question/question.component";
6
+ import * as i4 from "../sub-form/sub-form.component";
7
+ export class FormElementsComponent {
8
+ constructor() {
9
+ this.grid = {};
10
+ this.currentPageIndex = 0;
11
+ }
12
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormElementsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
13
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormElementsComponent, selector: "lib-form-elements", inputs: { grid: "grid", currentPageIndex: "currentPageIndex" }, ngImport: i0, template: "<div *ngIf=\"grid.entityType === 'QUESTION'\">\r\n <lib-question [question]=\"grid?.formElementType\"\r\n [currentPageIndex]=\"currentPageIndex\"\r\n ></lib-question>\r\n</div>\r\n<div *ngIf=\"grid.entityType === 'SECTION'\">\r\n <lib-section-fields [section]=\"grid.formElementType\"></lib-section-fields>\r\n</div>\r\n<div *ngIf=\"grid.entityType === 'SUBFORM'\">\r\n <lib-sub-form [subForm]=\"grid.formElementType\"></lib-sub-form>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.SectionFieldsComponent, selector: "lib-section-fields", inputs: ["section"] }, { kind: "component", type: i3.QuestionComponent, selector: "lib-question", inputs: ["question", "currentPageIndex"], outputs: ["emitValidations"] }, { kind: "component", type: i4.SubFormComponent, selector: "lib-sub-form", inputs: ["subForm"] }] }); }
14
+ }
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormElementsComponent, decorators: [{
16
+ type: Component,
17
+ args: [{ selector: 'lib-form-elements', template: "<div *ngIf=\"grid.entityType === 'QUESTION'\">\r\n <lib-question [question]=\"grid?.formElementType\"\r\n [currentPageIndex]=\"currentPageIndex\"\r\n ></lib-question>\r\n</div>\r\n<div *ngIf=\"grid.entityType === 'SECTION'\">\r\n <lib-section-fields [section]=\"grid.formElementType\"></lib-section-fields>\r\n</div>\r\n<div *ngIf=\"grid.entityType === 'SUBFORM'\">\r\n <lib-sub-form [subForm]=\"grid.formElementType\"></lib-sub-form>\r\n</div>\r\n" }]
18
+ }], propDecorators: { grid: [{
19
+ type: Input
20
+ }], currentPageIndex: [{
21
+ type: Input
22
+ }] } });
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lbGVtZW50cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3JtLXN1Ym1pc3Npb24vc3JjL2VsZW1lbnQtdHlwZS9mb3JtLWVsZW1lbnRzL2Zvcm0tZWxlbWVudHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybS1zdWJtaXNzaW9uL3NyYy9lbGVtZW50LXR5cGUvZm9ybS1lbGVtZW50cy9mb3JtLWVsZW1lbnRzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsS0FBSyxHQUdOLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFPdkIsTUFBTSxPQUFPLHFCQUFxQjtJQUxsQztRQU1XLFNBQUksR0FBUSxFQUFFLENBQUM7UUFDZixxQkFBZ0IsR0FBVyxDQUFDLENBQUM7S0FDdkM7K0dBSFkscUJBQXFCO21HQUFyQixxQkFBcUIseUhDYmxDLHVjQVdBOzs0RkRFYSxxQkFBcUI7a0JBTGpDLFNBQVM7K0JBQ0UsbUJBQW1COzhCQUtwQixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE91dHB1dCxcclxuICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1mb3JtLWVsZW1lbnRzJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZm9ybS1lbGVtZW50cy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZm9ybS1lbGVtZW50cy5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRm9ybUVsZW1lbnRzQ29tcG9uZW50IHtcclxuICBASW5wdXQoKSBncmlkOiBhbnkgPSB7fTtcclxuICBASW5wdXQoKSBjdXJyZW50UGFnZUluZGV4OiBudW1iZXIgPSAwO1xyXG59XHJcbiIsIjxkaXYgKm5nSWY9XCJncmlkLmVudGl0eVR5cGUgPT09ICdRVUVTVElPTidcIj5cclxuICA8bGliLXF1ZXN0aW9uIFtxdWVzdGlvbl09XCJncmlkPy5mb3JtRWxlbWVudFR5cGVcIlxyXG4gIFtjdXJyZW50UGFnZUluZGV4XT1cImN1cnJlbnRQYWdlSW5kZXhcIlxyXG4gID48L2xpYi1xdWVzdGlvbj5cclxuPC9kaXY+XHJcbjxkaXYgKm5nSWY9XCJncmlkLmVudGl0eVR5cGUgPT09ICdTRUNUSU9OJ1wiPlxyXG4gIDxsaWItc2VjdGlvbi1maWVsZHMgW3NlY3Rpb25dPVwiZ3JpZC5mb3JtRWxlbWVudFR5cGVcIj48L2xpYi1zZWN0aW9uLWZpZWxkcz5cclxuPC9kaXY+XHJcbjxkaXYgKm5nSWY9XCJncmlkLmVudGl0eVR5cGUgPT09ICdTVUJGT1JNJ1wiPlxyXG4gIDxsaWItc3ViLWZvcm0gW3N1YkZvcm1dPVwiZ3JpZC5mb3JtRWxlbWVudFR5cGVcIj48L2xpYi1zdWItZm9ybT5cclxuPC9kaXY+XHJcbiJdfQ==
@@ -0,0 +1,52 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ import * as i2 from "../../form-fields/check-box-fields/check-box-fields.component";
5
+ import * as i3 from "../../form-fields/date-time-fields/date-time-fields.component";
6
+ import * as i4 from "../../form-fields/drop-down-fields/drop-down-fields.component";
7
+ import * as i5 from "../../form-fields/file-picker-fields/file-picker-fields.component";
8
+ import * as i6 from "../../form-fields/location-fields/location-fields.component";
9
+ import * as i7 from "../../form-fields/mail-fields/mail-fields.component";
10
+ import * as i8 from "../../form-fields/mobile-fields/mobile-fields.component";
11
+ import * as i9 from "../../form-fields/number-fields/number-fields.component";
12
+ import * as i10 from "../../form-fields/password-fields/password-fields.component";
13
+ import * as i11 from "../../form-fields/radio-button-fields/radio-button-fields.component";
14
+ import * as i12 from "../../form-fields/rich-text-editor-fields/rich-text-editor-fields.component";
15
+ import * as i13 from "../../form-fields/selection-matrix-fields/selection-matrix-fields.component";
16
+ import * as i14 from "../../form-fields/signature-fields/signature-fields.component";
17
+ import * as i15 from "../../form-fields/slider-fields/slider-fields.component";
18
+ import * as i16 from "../../form-fields/terms-and-condition-fields/terms-and-condition-fields.component";
19
+ import * as i17 from "../../form-fields/text-area-fields/text-area-fields.component";
20
+ import * as i18 from "../../form-fields/text-fields/text-fields.component";
21
+ import * as i19 from "../../form-fields/toggle-switch-fields/toggle-switch-fields.component";
22
+ import * as i20 from "../../form-fields/url-fields/url-fields.component";
23
+ import * as i21 from "../../logic/logic/logic.component";
24
+ export class QuestionComponent {
25
+ ngOnInit() { }
26
+ constructor(cdr) {
27
+ this.cdr = cdr;
28
+ this.question = {};
29
+ this.validations = [];
30
+ this.currentPageIndex = 0;
31
+ this.emitValidations = new EventEmitter();
32
+ }
33
+ handleValidation(validation) {
34
+ this.validations.push(validation);
35
+ // Update validationStatus array
36
+ this.emitValidations.emit(this.validations);
37
+ this.cdr.detectChanges();
38
+ }
39
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: QuestionComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
40
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: QuestionComponent, selector: "lib-question", inputs: { question: "question", currentPageIndex: "currentPageIndex" }, outputs: { emitValidations: "emitValidations" }, ngImport: i0, template: "<div>\r\n <lib-check-box-fields\r\n *ngIf=\"question.formElement.elementType === 'CHECK_BOX'\"\r\n [question]=\"question\"\r\n (validate)=\"handleValidation($event)\"></lib-check-box-fields>\r\n <lib-date-time-fields\r\n *ngIf=\"question.formElement.elementType === 'DATE_TIME'\"\r\n [question]=\"question\"\r\n (validate)=\"handleValidation($event)\"></lib-date-time-fields>\r\n <lib-drop-down-fields\r\n *ngIf=\"question.formElement.elementType === 'DROP_DOWN'\"\r\n [question]=\"question\"\r\n (validate)=\"handleValidation($event)\"></lib-drop-down-fields>\r\n <lib-file-picker-fields\r\n *ngIf=\"question.formElement.elementType === 'FILE_PICKER'\"\r\n [question]=\"question\"\r\n (validate)=\"handleValidation($event)\"></lib-file-picker-fields>\r\n <lib-location-fields\r\n *ngIf=\"question.formElement.elementType === 'LOCATION'\"\r\n [question]=\"question\"\r\n (validate)=\"handleValidation($event)\"></lib-location-fields>\r\n\r\n <lib-mail-fields\r\n *ngIf=\"question.formElement.elementType === 'EMAIL'\"\r\n [question]=\"question\"\r\n (validate)=\"handleValidation($event)\">\r\n </lib-mail-fields>\r\n <lib-mobile-fields\r\n *ngIf=\"question.formElement.elementType === 'MOBILE'\"\r\n [question]=\"question\"\r\n (validate)=\"handleValidation($event)\">\r\n </lib-mobile-fields>\r\n <lib-number-fields\r\n *ngIf=\"question.formElement.elementType === 'NUMBER'\"\r\n [question]=\"question\"\r\n (validate)=\"handleValidation($event)\">\r\n </lib-number-fields>\r\n <lib-password-fields\r\n *ngIf=\"question.formElement.elementType === 'PASSWORD'\"\r\n [question]=\"question\"\r\n (validate)=\"handleValidation($event)\">\r\n </lib-password-fields>\r\n <lib-radio-button-fields\r\n *ngIf=\"question.formElement.elementType === 'RADIO_BUTTON'\"\r\n [question]=\"question\"\r\n (validate)=\"handleValidation($event)\"></lib-radio-button-fields>\r\n <lib-rich-text-editor-fields\r\n *ngIf=\"question.formElement.elementType === 'RICH_TEXT_EDITOR'\"\r\n [question]=\"question\"\r\n (validate)=\"handleValidation($event)\"></lib-rich-text-editor-fields>\r\n <lib-selection-matrix-fields\r\n *ngIf=\"question.formElement.elementType === 'SELECTION_MATRIX'\"\r\n [question]=\"question\"\r\n (validate)=\"handleValidation($event)\"></lib-selection-matrix-fields>\r\n <lib-signature-fields\r\n *ngIf=\"question.formElement.elementType === 'SIGNATURE'\"\r\n [question]=\"question\"\r\n (validate)=\"handleValidation($event)\"></lib-signature-fields>\r\n <lib-slider-fields\r\n *ngIf=\"question.formElement.elementType === 'SLIDER'\"\r\n [question]=\"question\"\r\n (validate)=\"handleValidation($event)\"></lib-slider-fields>\r\n <lib-terms-and-condition-fields\r\n *ngIf=\"question.formElement.elementType === 'TERMS_AND_CONDITION'\"\r\n [question]=\"question\"\r\n (validate)=\"handleValidation($event)\"></lib-terms-and-condition-fields>\r\n <lib-text-area-fields\r\n *ngIf=\"question.formElement.elementType === 'TEXT_AREA'\"\r\n [question]=\"question\"\r\n (validate)=\"handleValidation($event)\"></lib-text-area-fields>\r\n <lib-text-fields\r\n *ngIf=\"question.formElement.elementType === 'TEXT_BOX'\"\r\n [question]=\"question\"\r\n (validate)=\"handleValidation($event)\"></lib-text-fields>\r\n <lib-toggle-switch-fields\r\n *ngIf=\"question.formElement.elementType === 'TOGGLE_SWITCH'\"\r\n [question]=\"question\"\r\n (validate)=\"handleValidation($event)\"></lib-toggle-switch-fields>\r\n <lib-url-fields\r\n *ngIf=\"question.formElement.elementType === 'URL'\"\r\n [question]=\"question\"\r\n (validate)=\"handleValidation($event)\"></lib-url-fields>\r\n <lib-logic *ngIf=\"question.childLogics\"\r\n [childLogics]=\"question.childLogics\"></lib-logic>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.CheckBoxFieldsComponent, selector: "lib-check-box-fields", inputs: ["question"], outputs: ["validate"] }, { kind: "component", type: i3.DateTimeFieldsComponent, selector: "lib-date-time-fields", inputs: ["question"], outputs: ["validate"] }, { kind: "component", type: i4.DropDownFieldsComponent, selector: "lib-drop-down-fields", inputs: ["question"], outputs: ["validate"] }, { kind: "component", type: i5.FilePickerFieldsComponent, selector: "lib-file-picker-fields", inputs: ["question"] }, { kind: "component", type: i6.LocationFieldsComponent, selector: "lib-location-fields", inputs: ["question"] }, { kind: "component", type: i7.MailFieldsComponent, selector: "lib-mail-fields", inputs: ["question"], outputs: ["validate"] }, { kind: "component", type: i8.MobileFieldsComponent, selector: "lib-mobile-fields", inputs: ["question"], outputs: ["validate"] }, { kind: "component", type: i9.NumberFieldsComponent, selector: "lib-number-fields", inputs: ["question"], outputs: ["validate"] }, { kind: "component", type: i10.PasswordFieldsComponent, selector: "lib-password-fields", inputs: ["question"], outputs: ["validate"] }, { kind: "component", type: i11.RadioButtonFieldsComponent, selector: "lib-radio-button-fields", inputs: ["question"], outputs: ["validate"] }, { kind: "component", type: i12.RichTextEditorFieldsComponent, selector: "lib-rich-text-editor-fields", inputs: ["question"], outputs: ["validate"] }, { kind: "component", type: i13.SelectionMatrixFieldsComponent, selector: "lib-selection-matrix-fields", inputs: ["question"] }, { kind: "component", type: i14.SignatureFieldsComponent, selector: "lib-signature-fields", inputs: ["question"] }, { kind: "component", type: i15.SliderFieldsComponent, selector: "lib-slider-fields", inputs: ["question"], outputs: ["validate"] }, { kind: "component", type: i16.TermsAndConditionFieldsComponent, selector: "lib-terms-and-condition-fields", inputs: ["question"] }, { kind: "component", type: i17.TextAreaFieldsComponent, selector: "lib-text-area-fields", inputs: ["question"], outputs: ["validate"] }, { kind: "component", type: i18.TextFieldsComponent, selector: "lib-text-fields", inputs: ["question"], outputs: ["validate"] }, { kind: "component", type: i19.ToggleSwitchFieldsComponent, selector: "lib-toggle-switch-fields", inputs: ["question"] }, { kind: "component", type: i20.UrlFieldsComponent, selector: "lib-url-fields", inputs: ["question"], outputs: ["validate"] }, { kind: "component", type: i21.LogicComponent, selector: "lib-logic", inputs: ["childLogics"] }] }); }
41
+ }
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: QuestionComponent, decorators: [{
43
+ type: Component,
44
+ args: [{ selector: 'lib-question', template: "<div>\r\n <lib-check-box-fields\r\n *ngIf=\"question.formElement.elementType === 'CHECK_BOX'\"\r\n [question]=\"question\"\r\n (validate)=\"handleValidation($event)\"></lib-check-box-fields>\r\n <lib-date-time-fields\r\n *ngIf=\"question.formElement.elementType === 'DATE_TIME'\"\r\n [question]=\"question\"\r\n (validate)=\"handleValidation($event)\"></lib-date-time-fields>\r\n <lib-drop-down-fields\r\n *ngIf=\"question.formElement.elementType === 'DROP_DOWN'\"\r\n [question]=\"question\"\r\n (validate)=\"handleValidation($event)\"></lib-drop-down-fields>\r\n <lib-file-picker-fields\r\n *ngIf=\"question.formElement.elementType === 'FILE_PICKER'\"\r\n [question]=\"question\"\r\n (validate)=\"handleValidation($event)\"></lib-file-picker-fields>\r\n <lib-location-fields\r\n *ngIf=\"question.formElement.elementType === 'LOCATION'\"\r\n [question]=\"question\"\r\n (validate)=\"handleValidation($event)\"></lib-location-fields>\r\n\r\n <lib-mail-fields\r\n *ngIf=\"question.formElement.elementType === 'EMAIL'\"\r\n [question]=\"question\"\r\n (validate)=\"handleValidation($event)\">\r\n </lib-mail-fields>\r\n <lib-mobile-fields\r\n *ngIf=\"question.formElement.elementType === 'MOBILE'\"\r\n [question]=\"question\"\r\n (validate)=\"handleValidation($event)\">\r\n </lib-mobile-fields>\r\n <lib-number-fields\r\n *ngIf=\"question.formElement.elementType === 'NUMBER'\"\r\n [question]=\"question\"\r\n (validate)=\"handleValidation($event)\">\r\n </lib-number-fields>\r\n <lib-password-fields\r\n *ngIf=\"question.formElement.elementType === 'PASSWORD'\"\r\n [question]=\"question\"\r\n (validate)=\"handleValidation($event)\">\r\n </lib-password-fields>\r\n <lib-radio-button-fields\r\n *ngIf=\"question.formElement.elementType === 'RADIO_BUTTON'\"\r\n [question]=\"question\"\r\n (validate)=\"handleValidation($event)\"></lib-radio-button-fields>\r\n <lib-rich-text-editor-fields\r\n *ngIf=\"question.formElement.elementType === 'RICH_TEXT_EDITOR'\"\r\n [question]=\"question\"\r\n (validate)=\"handleValidation($event)\"></lib-rich-text-editor-fields>\r\n <lib-selection-matrix-fields\r\n *ngIf=\"question.formElement.elementType === 'SELECTION_MATRIX'\"\r\n [question]=\"question\"\r\n (validate)=\"handleValidation($event)\"></lib-selection-matrix-fields>\r\n <lib-signature-fields\r\n *ngIf=\"question.formElement.elementType === 'SIGNATURE'\"\r\n [question]=\"question\"\r\n (validate)=\"handleValidation($event)\"></lib-signature-fields>\r\n <lib-slider-fields\r\n *ngIf=\"question.formElement.elementType === 'SLIDER'\"\r\n [question]=\"question\"\r\n (validate)=\"handleValidation($event)\"></lib-slider-fields>\r\n <lib-terms-and-condition-fields\r\n *ngIf=\"question.formElement.elementType === 'TERMS_AND_CONDITION'\"\r\n [question]=\"question\"\r\n (validate)=\"handleValidation($event)\"></lib-terms-and-condition-fields>\r\n <lib-text-area-fields\r\n *ngIf=\"question.formElement.elementType === 'TEXT_AREA'\"\r\n [question]=\"question\"\r\n (validate)=\"handleValidation($event)\"></lib-text-area-fields>\r\n <lib-text-fields\r\n *ngIf=\"question.formElement.elementType === 'TEXT_BOX'\"\r\n [question]=\"question\"\r\n (validate)=\"handleValidation($event)\"></lib-text-fields>\r\n <lib-toggle-switch-fields\r\n *ngIf=\"question.formElement.elementType === 'TOGGLE_SWITCH'\"\r\n [question]=\"question\"\r\n (validate)=\"handleValidation($event)\"></lib-toggle-switch-fields>\r\n <lib-url-fields\r\n *ngIf=\"question.formElement.elementType === 'URL'\"\r\n [question]=\"question\"\r\n (validate)=\"handleValidation($event)\"></lib-url-fields>\r\n <lib-logic *ngIf=\"question.childLogics\"\r\n [childLogics]=\"question.childLogics\"></lib-logic>\r\n</div>\r\n" }]
45
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { question: [{
46
+ type: Input
47
+ }], currentPageIndex: [{
48
+ type: Input
49
+ }], emitValidations: [{
50
+ type: Output
51
+ }] } });
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybS1zdWJtaXNzaW9uL3NyYy9lbGVtZW50LXR5cGUvcXVlc3Rpb24vcXVlc3Rpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybS1zdWJtaXNzaW9uL3NyYy9lbGVtZW50LXR5cGUvcXVlc3Rpb24vcXVlc3Rpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUWxHLE1BQU0sT0FBTyxpQkFBaUI7SUFHNUIsUUFBUSxLQUFJLENBQUM7SUFFYixZQUFvQixHQUFzQjtRQUF0QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUpqQyxhQUFRLEdBQVEsRUFBRSxDQUFDO1FBTTVCLGdCQUFXLEdBQVEsRUFBRSxDQUFDO1FBQ2IscUJBQWdCLEdBQVcsQ0FBQyxDQUFDO1FBQzVCLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQUpQLENBQUM7SUFXOUMsZ0JBQWdCLENBQUMsVUFBZTtRQUM5QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUVsQyxnQ0FBZ0M7UUFJaEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRTVDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDN0IsQ0FBQzsrR0ExQlksaUJBQWlCO21HQUFqQixpQkFBaUIsNktDUjlCLDJ5SEFxRkE7OzRGRDdFYSxpQkFBaUI7a0JBTDdCLFNBQVM7K0JBQ0UsY0FBYzt3R0FLZixRQUFRO3NCQUFoQixLQUFLO2dCQU9HLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDSSxlQUFlO3NCQUF4QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1xdWVzdGlvbicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3F1ZXN0aW9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9xdWVzdGlvbi5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBRdWVzdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQElucHV0KCkgcXVlc3Rpb246IGFueSA9IHt9O1xyXG5cclxuICBuZ09uSW5pdCgpIHt9XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge31cclxuXHJcbiAgdmFsaWRhdGlvbnM6IGFueSA9IFtdO1xyXG4gIEBJbnB1dCgpIGN1cnJlbnRQYWdlSW5kZXg6IG51bWJlciA9IDA7XHJcbiAgQE91dHB1dCgpIGVtaXRWYWxpZGF0aW9ucyA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuXHJcbiAgXHJcblxyXG4gIFxyXG5cclxuICBoYW5kbGVWYWxpZGF0aW9uKHZhbGlkYXRpb246IGFueSkge1xyXG4gICAgdGhpcy52YWxpZGF0aW9ucy5wdXNoKHZhbGlkYXRpb24pO1xyXG5cclxuICAgIC8vIFVwZGF0ZSB2YWxpZGF0aW9uU3RhdHVzIGFycmF5XHJcblxyXG4gICAgXHJcblxyXG4gICAgdGhpcy5lbWl0VmFsaWRhdGlvbnMuZW1pdCh0aGlzLnZhbGlkYXRpb25zKTtcclxuXHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7IFxyXG59XHJcblxyXG5cclxuXHJcbn1cclxuIiwiPGRpdj5cclxuICA8bGliLWNoZWNrLWJveC1maWVsZHNcclxuICAgICpuZ0lmPVwicXVlc3Rpb24uZm9ybUVsZW1lbnQuZWxlbWVudFR5cGUgPT09ICdDSEVDS19CT1gnXCJcclxuICAgIFtxdWVzdGlvbl09XCJxdWVzdGlvblwiXHJcbiAgICAodmFsaWRhdGUpPVwiaGFuZGxlVmFsaWRhdGlvbigkZXZlbnQpXCI+PC9saWItY2hlY2stYm94LWZpZWxkcz5cclxuICA8bGliLWRhdGUtdGltZS1maWVsZHNcclxuICAgICpuZ0lmPVwicXVlc3Rpb24uZm9ybUVsZW1lbnQuZWxlbWVudFR5cGUgPT09ICdEQVRFX1RJTUUnXCJcclxuICAgIFtxdWVzdGlvbl09XCJxdWVzdGlvblwiXHJcbiAgICAodmFsaWRhdGUpPVwiaGFuZGxlVmFsaWRhdGlvbigkZXZlbnQpXCI+PC9saWItZGF0ZS10aW1lLWZpZWxkcz5cclxuICA8bGliLWRyb3AtZG93bi1maWVsZHNcclxuICAgICpuZ0lmPVwicXVlc3Rpb24uZm9ybUVsZW1lbnQuZWxlbWVudFR5cGUgPT09ICdEUk9QX0RPV04nXCJcclxuICAgIFtxdWVzdGlvbl09XCJxdWVzdGlvblwiXHJcbiAgICAodmFsaWRhdGUpPVwiaGFuZGxlVmFsaWRhdGlvbigkZXZlbnQpXCI+PC9saWItZHJvcC1kb3duLWZpZWxkcz5cclxuICA8bGliLWZpbGUtcGlja2VyLWZpZWxkc1xyXG4gICAgKm5nSWY9XCJxdWVzdGlvbi5mb3JtRWxlbWVudC5lbGVtZW50VHlwZSA9PT0gJ0ZJTEVfUElDS0VSJ1wiXHJcbiAgICBbcXVlc3Rpb25dPVwicXVlc3Rpb25cIlxyXG4gICAgKHZhbGlkYXRlKT1cImhhbmRsZVZhbGlkYXRpb24oJGV2ZW50KVwiPjwvbGliLWZpbGUtcGlja2VyLWZpZWxkcz5cclxuICA8bGliLWxvY2F0aW9uLWZpZWxkc1xyXG4gICAgKm5nSWY9XCJxdWVzdGlvbi5mb3JtRWxlbWVudC5lbGVtZW50VHlwZSA9PT0gJ0xPQ0FUSU9OJ1wiXHJcbiAgICBbcXVlc3Rpb25dPVwicXVlc3Rpb25cIlxyXG4gICAgKHZhbGlkYXRlKT1cImhhbmRsZVZhbGlkYXRpb24oJGV2ZW50KVwiPjwvbGliLWxvY2F0aW9uLWZpZWxkcz5cclxuXHJcbiAgPGxpYi1tYWlsLWZpZWxkc1xyXG4gICAgKm5nSWY9XCJxdWVzdGlvbi5mb3JtRWxlbWVudC5lbGVtZW50VHlwZSA9PT0gJ0VNQUlMJ1wiXHJcbiAgICBbcXVlc3Rpb25dPVwicXVlc3Rpb25cIlxyXG4gICAgKHZhbGlkYXRlKT1cImhhbmRsZVZhbGlkYXRpb24oJGV2ZW50KVwiPlxyXG4gIDwvbGliLW1haWwtZmllbGRzPlxyXG4gIDxsaWItbW9iaWxlLWZpZWxkc1xyXG4gICAgKm5nSWY9XCJxdWVzdGlvbi5mb3JtRWxlbWVudC5lbGVtZW50VHlwZSA9PT0gJ01PQklMRSdcIlxyXG4gICAgW3F1ZXN0aW9uXT1cInF1ZXN0aW9uXCJcclxuICAgICh2YWxpZGF0ZSk9XCJoYW5kbGVWYWxpZGF0aW9uKCRldmVudClcIj5cclxuICA8L2xpYi1tb2JpbGUtZmllbGRzPlxyXG4gIDxsaWItbnVtYmVyLWZpZWxkc1xyXG4gICAgKm5nSWY9XCJxdWVzdGlvbi5mb3JtRWxlbWVudC5lbGVtZW50VHlwZSA9PT0gJ05VTUJFUidcIlxyXG4gICAgW3F1ZXN0aW9uXT1cInF1ZXN0aW9uXCJcclxuICAgICh2YWxpZGF0ZSk9XCJoYW5kbGVWYWxpZGF0aW9uKCRldmVudClcIj5cclxuICA8L2xpYi1udW1iZXItZmllbGRzPlxyXG4gIDxsaWItcGFzc3dvcmQtZmllbGRzXHJcbiAgICAqbmdJZj1cInF1ZXN0aW9uLmZvcm1FbGVtZW50LmVsZW1lbnRUeXBlID09PSAnUEFTU1dPUkQnXCJcclxuICAgIFtxdWVzdGlvbl09XCJxdWVzdGlvblwiXHJcbiAgICAodmFsaWRhdGUpPVwiaGFuZGxlVmFsaWRhdGlvbigkZXZlbnQpXCI+XHJcbiAgPC9saWItcGFzc3dvcmQtZmllbGRzPlxyXG4gIDxsaWItcmFkaW8tYnV0dG9uLWZpZWxkc1xyXG4gICAgKm5nSWY9XCJxdWVzdGlvbi5mb3JtRWxlbWVudC5lbGVtZW50VHlwZSA9PT0gJ1JBRElPX0JVVFRPTidcIlxyXG4gICAgW3F1ZXN0aW9uXT1cInF1ZXN0aW9uXCJcclxuICAgICh2YWxpZGF0ZSk9XCJoYW5kbGVWYWxpZGF0aW9uKCRldmVudClcIj48L2xpYi1yYWRpby1idXR0b24tZmllbGRzPlxyXG4gIDxsaWItcmljaC10ZXh0LWVkaXRvci1maWVsZHNcclxuICAgICpuZ0lmPVwicXVlc3Rpb24uZm9ybUVsZW1lbnQuZWxlbWVudFR5cGUgPT09ICdSSUNIX1RFWFRfRURJVE9SJ1wiXHJcbiAgICBbcXVlc3Rpb25dPVwicXVlc3Rpb25cIlxyXG4gICAgKHZhbGlkYXRlKT1cImhhbmRsZVZhbGlkYXRpb24oJGV2ZW50KVwiPjwvbGliLXJpY2gtdGV4dC1lZGl0b3ItZmllbGRzPlxyXG4gIDxsaWItc2VsZWN0aW9uLW1hdHJpeC1maWVsZHNcclxuICAgICpuZ0lmPVwicXVlc3Rpb24uZm9ybUVsZW1lbnQuZWxlbWVudFR5cGUgPT09ICdTRUxFQ1RJT05fTUFUUklYJ1wiXHJcbiAgICBbcXVlc3Rpb25dPVwicXVlc3Rpb25cIlxyXG4gICAgKHZhbGlkYXRlKT1cImhhbmRsZVZhbGlkYXRpb24oJGV2ZW50KVwiPjwvbGliLXNlbGVjdGlvbi1tYXRyaXgtZmllbGRzPlxyXG4gIDxsaWItc2lnbmF0dXJlLWZpZWxkc1xyXG4gICAgKm5nSWY9XCJxdWVzdGlvbi5mb3JtRWxlbWVudC5lbGVtZW50VHlwZSA9PT0gJ1NJR05BVFVSRSdcIlxyXG4gICAgW3F1ZXN0aW9uXT1cInF1ZXN0aW9uXCJcclxuICAgICh2YWxpZGF0ZSk9XCJoYW5kbGVWYWxpZGF0aW9uKCRldmVudClcIj48L2xpYi1zaWduYXR1cmUtZmllbGRzPlxyXG4gIDxsaWItc2xpZGVyLWZpZWxkc1xyXG4gICAgKm5nSWY9XCJxdWVzdGlvbi5mb3JtRWxlbWVudC5lbGVtZW50VHlwZSA9PT0gJ1NMSURFUidcIlxyXG4gICAgW3F1ZXN0aW9uXT1cInF1ZXN0aW9uXCJcclxuICAgICh2YWxpZGF0ZSk9XCJoYW5kbGVWYWxpZGF0aW9uKCRldmVudClcIj48L2xpYi1zbGlkZXItZmllbGRzPlxyXG4gIDxsaWItdGVybXMtYW5kLWNvbmRpdGlvbi1maWVsZHNcclxuICAgICpuZ0lmPVwicXVlc3Rpb24uZm9ybUVsZW1lbnQuZWxlbWVudFR5cGUgPT09ICdURVJNU19BTkRfQ09ORElUSU9OJ1wiXHJcbiAgICBbcXVlc3Rpb25dPVwicXVlc3Rpb25cIlxyXG4gICAgKHZhbGlkYXRlKT1cImhhbmRsZVZhbGlkYXRpb24oJGV2ZW50KVwiPjwvbGliLXRlcm1zLWFuZC1jb25kaXRpb24tZmllbGRzPlxyXG4gIDxsaWItdGV4dC1hcmVhLWZpZWxkc1xyXG4gICAgKm5nSWY9XCJxdWVzdGlvbi5mb3JtRWxlbWVudC5lbGVtZW50VHlwZSA9PT0gJ1RFWFRfQVJFQSdcIlxyXG4gICAgW3F1ZXN0aW9uXT1cInF1ZXN0aW9uXCJcclxuICAgICh2YWxpZGF0ZSk9XCJoYW5kbGVWYWxpZGF0aW9uKCRldmVudClcIj48L2xpYi10ZXh0LWFyZWEtZmllbGRzPlxyXG4gIDxsaWItdGV4dC1maWVsZHNcclxuICAgICpuZ0lmPVwicXVlc3Rpb24uZm9ybUVsZW1lbnQuZWxlbWVudFR5cGUgPT09ICdURVhUX0JPWCdcIlxyXG4gICAgW3F1ZXN0aW9uXT1cInF1ZXN0aW9uXCJcclxuICAgICh2YWxpZGF0ZSk9XCJoYW5kbGVWYWxpZGF0aW9uKCRldmVudClcIj48L2xpYi10ZXh0LWZpZWxkcz5cclxuICA8bGliLXRvZ2dsZS1zd2l0Y2gtZmllbGRzXHJcbiAgICAqbmdJZj1cInF1ZXN0aW9uLmZvcm1FbGVtZW50LmVsZW1lbnRUeXBlID09PSAnVE9HR0xFX1NXSVRDSCdcIlxyXG4gICAgW3F1ZXN0aW9uXT1cInF1ZXN0aW9uXCJcclxuICAgICh2YWxpZGF0ZSk9XCJoYW5kbGVWYWxpZGF0aW9uKCRldmVudClcIj48L2xpYi10b2dnbGUtc3dpdGNoLWZpZWxkcz5cclxuICA8bGliLXVybC1maWVsZHNcclxuICAgICpuZ0lmPVwicXVlc3Rpb24uZm9ybUVsZW1lbnQuZWxlbWVudFR5cGUgPT09ICdVUkwnXCJcclxuICAgIFtxdWVzdGlvbl09XCJxdWVzdGlvblwiXHJcbiAgICAodmFsaWRhdGUpPVwiaGFuZGxlVmFsaWRhdGlvbigkZXZlbnQpXCI+PC9saWItdXJsLWZpZWxkcz5cclxuICA8bGliLWxvZ2ljICpuZ0lmPVwicXVlc3Rpb24uY2hpbGRMb2dpY3NcIlxyXG4gICAgW2NoaWxkTG9naWNzXT1cInF1ZXN0aW9uLmNoaWxkTG9naWNzXCI+PC9saWItbG9naWM+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -0,0 +1,17 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ export class SubFormComponent {
5
+ constructor() {
6
+ this.subForm = {};
7
+ }
8
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SubFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
9
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SubFormComponent, selector: "lib-sub-form", inputs: { subForm: "subForm" }, ngImport: i0, template: "<div class=\"outer-container mb-4 px-3\">\r\n <div class=\"body container pt-3 pb-3 px-3\">\r\n <div class=\"tab-content pt-4 pb-3 px-3\">\r\n <p class=\"sectionTitle\">{{subForm.title}}</p>\r\n <p class=\"description mb-5\">{{subForm.description}}</p>\r\n <div *ngFor=\"let formElement of subForm.formElements\">\r\n <!-- <lib-form-elements [grid]=\"formElement\"></lib-form-elements> -->\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".outer-container{background-color:#fff;padding:20px;position:relative;margin-top:25px}@media (max-width: 576px){.outer-container{padding:8px}}.body{position:relative;z-index:1;background:#efefef;border-radius:6px}.tab-content{background-color:#fff}.sectionTitle{font-size:15px;font-weight:500}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] }); }
10
+ }
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SubFormComponent, decorators: [{
12
+ type: Component,
13
+ args: [{ selector: 'lib-sub-form', template: "<div class=\"outer-container mb-4 px-3\">\r\n <div class=\"body container pt-3 pb-3 px-3\">\r\n <div class=\"tab-content pt-4 pb-3 px-3\">\r\n <p class=\"sectionTitle\">{{subForm.title}}</p>\r\n <p class=\"description mb-5\">{{subForm.description}}</p>\r\n <div *ngFor=\"let formElement of subForm.formElements\">\r\n <!-- <lib-form-elements [grid]=\"formElement\"></lib-form-elements> -->\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".outer-container{background-color:#fff;padding:20px;position:relative;margin-top:25px}@media (max-width: 576px){.outer-container{padding:8px}}.body{position:relative;z-index:1;background:#efefef;border-radius:6px}.tab-content{background-color:#fff}.sectionTitle{font-size:15px;font-weight:500}\n"] }]
14
+ }], propDecorators: { subForm: [{
15
+ type: Input
16
+ }] } });
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ViLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybS1zdWJtaXNzaW9uL3NyYy9lbGVtZW50LXR5cGUvc3ViLWZvcm0vc3ViLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybS1zdWJtaXNzaW9uL3NyYy9lbGVtZW50LXR5cGUvc3ViLWZvcm0vc3ViLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQU9qRCxNQUFNLE9BQU8sZ0JBQWdCO0lBTDdCO1FBTVcsWUFBTyxHQUFLLEVBQUUsQ0FBQztLQUN6QjsrR0FGWSxnQkFBZ0I7bUdBQWhCLGdCQUFnQixvRkNQN0IsbWVBV0E7OzRGREphLGdCQUFnQjtrQkFMNUIsU0FBUzsrQkFDRSxjQUFjOzhCQUtmLE9BQU87c0JBQWYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXN1Yi1mb3JtJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc3ViLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3N1Yi1mb3JtLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFN1YkZvcm1Db21wb25lbnQge1xyXG4gIEBJbnB1dCgpIHN1YkZvcm06YW55PXt9O1xyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJvdXRlci1jb250YWluZXIgbWItNCBweC0zXCI+XHJcbiAgPGRpdiBjbGFzcz1cImJvZHkgY29udGFpbmVyIHB0LTMgcGItMyBweC0zXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwidGFiLWNvbnRlbnQgcHQtNCBwYi0zIHB4LTNcIj5cclxuICAgICAgPHAgY2xhc3M9XCJzZWN0aW9uVGl0bGVcIj57e3N1YkZvcm0udGl0bGV9fTwvcD5cclxuICAgICAgPHAgY2xhc3M9XCJkZXNjcmlwdGlvbiBtYi01XCI+e3tzdWJGb3JtLmRlc2NyaXB0aW9ufX08L3A+XHJcbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZm9ybUVsZW1lbnQgb2Ygc3ViRm9ybS5mb3JtRWxlbWVudHNcIj5cclxuICAgICAgICAgICAgPCEtLSA8bGliLWZvcm0tZWxlbWVudHMgW2dyaWRdPVwiZm9ybUVsZW1lbnRcIj48L2xpYi1mb3JtLWVsZW1lbnRzPiAtLT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -0,0 +1,198 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../../services/form.service";
4
+ import * as i2 from "@angular/common";
5
+ export class CheckBoxFieldsComponent {
6
+ constructor(formService) {
7
+ this.formService = formService;
8
+ this.question = {};
9
+ this.count = 0;
10
+ this.required = false;
11
+ this.hint = '';
12
+ this.selectionType = '';
13
+ this.optionType = '';
14
+ this.lookupTable = {};
15
+ this.customOptions = [];
16
+ this.database = {};
17
+ this.api = {};
18
+ this.apiOptions = []; // Assuming you have a property to store API options
19
+ this.selectedOptions = [];
20
+ this.validationFailed = false;
21
+ this.validationMessage = '';
22
+ this.validate = new EventEmitter();
23
+ }
24
+ ngOnInit() {
25
+ this.valueAssigned();
26
+ }
27
+ valueAssigned() {
28
+ this.count = this.question.count;
29
+ this.required = this.question.required;
30
+ this.hint = this.question.hint;
31
+ this.selectionType = this.question.formElement.appearance.selectionType;
32
+ this.minimumSelection =
33
+ this.question.formElement.validation.minimumSelection;
34
+ this.maximumSelection =
35
+ this.question.formElement.validation.maximumSelection;
36
+ this.optionType = this.question.formElement.option.optionType;
37
+ switch (this.optionType) {
38
+ case 'OPTION':
39
+ this.customOptions = this.question.formElement.option.customOptions;
40
+ break;
41
+ case 'LOOKUP':
42
+ this.lookupTable = this.question.formElement.option.lookupTable;
43
+ this.fetchDataFromLookup();
44
+ break;
45
+ case 'DATABASE':
46
+ this.database = this.question.formElement.option.database;
47
+ this.fetchDataFromDatabase();
48
+ break;
49
+ case 'API':
50
+ this.api = this.question.formElement.option.api;
51
+ this.fetchDataFromAPI();
52
+ break;
53
+ default:
54
+ console.warn('Unknown option type:', this.optionType);
55
+ }
56
+ // If selectionType is 'SINGLE', set minimumSelection and maximumSelection to 1
57
+ if (this.selectionType === 'SINGLE') {
58
+ this.minimumSelection = 1;
59
+ this.maximumSelection = 1;
60
+ }
61
+ // If selectionType is 'MULTIPLE' and minSelection and maxSelection are not specified, set them to undefined
62
+ if (this.selectionType === 'MULTIPLE' &&
63
+ !this.minimumSelection &&
64
+ !this.maximumSelection) {
65
+ this.minimumSelection = undefined;
66
+ this.maximumSelection = undefined;
67
+ }
68
+ }
69
+ onCheckboxChange(option, event) {
70
+ if (this.selectionType === 'SINGLE') {
71
+ // Clear previously selected options for single selection type
72
+ this.selectedOptions = [];
73
+ }
74
+ if (event.target.checked) {
75
+ // Add the selected option if it's not already in the list
76
+ if (!this.selectedOptions.includes(option)) {
77
+ this.selectedOptions.push(option);
78
+ this.isMinimumSelectionValid();
79
+ }
80
+ }
81
+ else {
82
+ // Remove the selected option
83
+ this.selectedOptions = this.selectedOptions.filter((item) => item !== option);
84
+ this.isMinimumSelectionValid();
85
+ }
86
+ // Check if the number of selected options exceeds the maximum allowed
87
+ if (this.maximumSelection !== undefined &&
88
+ this.selectedOptions.length > this.maximumSelection) {
89
+ // If exceeded, uncheck the last selected option
90
+ event.target.checked = false;
91
+ // Remove the unchecked option from the selectedOptions array
92
+ this.selectedOptions = this.selectedOptions.filter((item) => item !== option);
93
+ // You can add a message to inform the user about the maximum selection limit if needed
94
+ }
95
+ }
96
+ fetchDataFromLookup() {
97
+ this.formService.fetchDataFromLookup(this.lookupTable).subscribe((response) => {
98
+ this.customOptions = response.result.values.map((item) => ({
99
+ value: item.value,
100
+ label: item.label,
101
+ }));
102
+ }, (error) => {
103
+ console.error('HTTP Error:', error);
104
+ });
105
+ }
106
+ fetchDataFromDatabase() {
107
+ const transformedDatabase = this.transformDatabaseObject(this.database);
108
+ this.formService.fetchDataFromDatabase(transformedDatabase).subscribe((response) => {
109
+ if (response.success) {
110
+ this.customOptions = response.result.map((item) => ({
111
+ value: item.value,
112
+ label: item.label,
113
+ }));
114
+ }
115
+ else {
116
+ console.error('Error fetching data from database:', response.message);
117
+ }
118
+ }, (error) => {
119
+ console.error('HTTP Error:', error);
120
+ });
121
+ }
122
+ transformDatabaseObject(database) {
123
+ return {
124
+ tableName: database.tableName,
125
+ valueField: database.valueField,
126
+ labelField: database.labelField,
127
+ criteria: database.criteria.map((criteria) => ({
128
+ field: criteria.field,
129
+ condition: criteria.condition,
130
+ value: criteria.inputValue,
131
+ logicalOperator: criteria.logicalOperator,
132
+ })),
133
+ };
134
+ }
135
+ fetchDataFromAPI() {
136
+ const apiConfig = this.api;
137
+ this.formService.fetchDataFromExternalAPI(apiConfig.url).subscribe((response) => {
138
+ const data = this.extractDataByPath(response, apiConfig.pathToValue);
139
+ this.customOptions = data.map((item) => ({
140
+ value: item[apiConfig.valueField],
141
+ label: item[apiConfig.labelField],
142
+ }));
143
+ }, (error) => {
144
+ console.error('HTTP Error:', error);
145
+ });
146
+ }
147
+ extractDataByPath(data, path) {
148
+ return path.split('.').reduce((acc, part) => acc && acc[part], data);
149
+ }
150
+ isMinimumSelectionValid() {
151
+ this.validationFailed = false;
152
+ if (this.selectedOptions.length == 0 && this.required) {
153
+ this.validationFailed = true;
154
+ this.validationMessage = 'This is a required question';
155
+ this.validate.emit(this.validationFailed);
156
+ }
157
+ else if (this.minimumSelection !== undefined) {
158
+ if (this.selectedOptions.length < this.minimumSelection) {
159
+ this.validationFailed = true;
160
+ this.validationMessage = `Minimum ${this.minimumSelection} selection(s) required.`;
161
+ this.validate.emit(this.validationFailed);
162
+ }
163
+ }
164
+ else {
165
+ this.validate.emit(this.validationFailed);
166
+ }
167
+ }
168
+ getOptions() {
169
+ if (this.optionType === 'OPTION') {
170
+ return this.customOptions;
171
+ }
172
+ else if (this.optionType === 'LOOKUP') {
173
+ return Object.values(this.lookupTable);
174
+ }
175
+ else if (this.optionType === 'API') {
176
+ return this.apiOptions.map((option) => option.valueField);
177
+ }
178
+ else {
179
+ return [];
180
+ }
181
+ }
182
+ isOptionDisabled(option) {
183
+ return (this.maximumSelection !== undefined &&
184
+ this.selectedOptions.length >= this.maximumSelection &&
185
+ !this.selectedOptions.includes(option));
186
+ }
187
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CheckBoxFieldsComponent, deps: [{ token: i1.FormService }], target: i0.ɵɵFactoryTarget.Component }); }
188
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CheckBoxFieldsComponent, selector: "lib-check-box-fields", inputs: { question: "question" }, outputs: { validate: "validate" }, ngImport: i0, template: "<div [ngClass]=\"'col-' + count\" class=\"mb-5 px-3\">\r\n <div class=\"input-wrapper mb-2\">\r\n <label>{{ question.question }}</label\r\n >&nbsp;\r\n <span class=\"text-danger\" *ngIf=\"required\">*</span>\r\n <div\r\n class=\"svg-wrapper mb-2 hintIcon\"\r\n [attr.data-title]=\"hint\"\r\n *ngIf=\"hint\"\r\n >\r\n <svg\r\n class=\"hintSvg\"\r\n viewBox=\"0 0 30 30\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\r\n stroke=\"#323232\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\r\n stroke=\"#323232\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\r\n stroke=\"#323232\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"form-check\" *ngFor=\"let option of customOptions\">\r\n <input\r\n class=\"form-check-input\"\r\n type=\"checkbox\"\r\n [id]=\"option.value + 'Checkbox'\"\r\n [name]=\"option.value + 'Checkbox'\"\r\n [value]=\"option.value\"\r\n (change)=\"onCheckboxChange(option, $event)\"\r\n [disabled]=\"isOptionDisabled(option)\"\r\n [checked]=\"selectedOptions.includes(option.value)\"\r\n />\r\n <label\r\n class=\"formCheckLabel ms-2 mb-2\"\r\n [for]=\"option.value + 'Checkbox'\"\r\n *ngIf=\"optionType == 'OPTION'\"\r\n >{{ option.value }}</label\r\n >\r\n <label\r\n class=\"formCheckLabel ms-2 mb-2\"\r\n [for]=\"option.value + 'Checkbox'\"\r\n *ngIf=\"optionType == 'LOOKUP' || 'DATABASE' || 'API'\"\r\n >{{ option.label }}</label\r\n >\r\n </div>\r\n <div *ngIf=\"validationFailed\" class=\"text-danger\">\r\n <svg\r\n class=\"validationSvg\"\r\n viewBox=\"0 0 24 24\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\r\n stroke=\"white\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\r\n fill=\"#FF0000\"\r\n stroke=\"#FF0000\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M12 12.75L12 7.75\"\r\n stroke=\"white\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\r\n </svg>\r\n {{ validationMessage }}\r\n </div>\r\n</div>\r\n", styles: [".input-wrapper{display:flex;align-items:flex-start}.svg-wrapper{margin-left:auto;z-index:999}.hintIcon{position:relative;cursor:pointer}.hintIcon:hover:before{content:attr(data-title);position:absolute;top:calc(100% + 2px);left:50%;transform:translate(-50%);padding:4px 8px;border-radius:4px;background-color:#1d252d;color:#8e9aa0;font-size:14px;white-space:nowrap}.hintIcon:hover:after{content:\"\";position:absolute;top:calc(100% - 26px);left:50%;border:solid transparent;border-width:18px;border-bottom-color:#1d252d;transform:translate(-50%)}.height{height:42px}.invalid{border-color:red}.hintSvg{width:30px;height:30px;fill:none}.validationSvg{width:24px;height:24px;fill:none}.form-check-input,.form-check-label{cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
189
+ }
190
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CheckBoxFieldsComponent, decorators: [{
191
+ type: Component,
192
+ args: [{ selector: 'lib-check-box-fields', template: "<div [ngClass]=\"'col-' + count\" class=\"mb-5 px-3\">\r\n <div class=\"input-wrapper mb-2\">\r\n <label>{{ question.question }}</label\r\n >&nbsp;\r\n <span class=\"text-danger\" *ngIf=\"required\">*</span>\r\n <div\r\n class=\"svg-wrapper mb-2 hintIcon\"\r\n [attr.data-title]=\"hint\"\r\n *ngIf=\"hint\"\r\n >\r\n <svg\r\n class=\"hintSvg\"\r\n viewBox=\"0 0 30 30\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\r\n stroke=\"#323232\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\r\n stroke=\"#323232\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\r\n stroke=\"#323232\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"form-check\" *ngFor=\"let option of customOptions\">\r\n <input\r\n class=\"form-check-input\"\r\n type=\"checkbox\"\r\n [id]=\"option.value + 'Checkbox'\"\r\n [name]=\"option.value + 'Checkbox'\"\r\n [value]=\"option.value\"\r\n (change)=\"onCheckboxChange(option, $event)\"\r\n [disabled]=\"isOptionDisabled(option)\"\r\n [checked]=\"selectedOptions.includes(option.value)\"\r\n />\r\n <label\r\n class=\"formCheckLabel ms-2 mb-2\"\r\n [for]=\"option.value + 'Checkbox'\"\r\n *ngIf=\"optionType == 'OPTION'\"\r\n >{{ option.value }}</label\r\n >\r\n <label\r\n class=\"formCheckLabel ms-2 mb-2\"\r\n [for]=\"option.value + 'Checkbox'\"\r\n *ngIf=\"optionType == 'LOOKUP' || 'DATABASE' || 'API'\"\r\n >{{ option.label }}</label\r\n >\r\n </div>\r\n <div *ngIf=\"validationFailed\" class=\"text-danger\">\r\n <svg\r\n class=\"validationSvg\"\r\n viewBox=\"0 0 24 24\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\r\n stroke=\"white\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\r\n fill=\"#FF0000\"\r\n stroke=\"#FF0000\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M12 12.75L12 7.75\"\r\n stroke=\"white\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\r\n </svg>\r\n {{ validationMessage }}\r\n </div>\r\n</div>\r\n", styles: [".input-wrapper{display:flex;align-items:flex-start}.svg-wrapper{margin-left:auto;z-index:999}.hintIcon{position:relative;cursor:pointer}.hintIcon:hover:before{content:attr(data-title);position:absolute;top:calc(100% + 2px);left:50%;transform:translate(-50%);padding:4px 8px;border-radius:4px;background-color:#1d252d;color:#8e9aa0;font-size:14px;white-space:nowrap}.hintIcon:hover:after{content:\"\";position:absolute;top:calc(100% - 26px);left:50%;border:solid transparent;border-width:18px;border-bottom-color:#1d252d;transform:translate(-50%)}.height{height:42px}.invalid{border-color:red}.hintSvg{width:30px;height:30px;fill:none}.validationSvg{width:24px;height:24px;fill:none}.form-check-input,.form-check-label{cursor:pointer}\n"] }]
193
+ }], ctorParameters: function () { return [{ type: i1.FormService }]; }, propDecorators: { question: [{
194
+ type: Input
195
+ }], validate: [{
196
+ type: Output
197
+ }] } });
198
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2stYm94LWZpZWxkcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3JtLXN1Ym1pc3Npb24vc3JjL2Zvcm0tZmllbGRzL2NoZWNrLWJveC1maWVsZHMvY2hlY2stYm94LWZpZWxkcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3JtLXN1Ym1pc3Npb24vc3JjL2Zvcm0tZmllbGRzL2NoZWNrLWJveC1maWVsZHMvY2hlY2stYm94LWZpZWxkcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBUXZFLE1BQU0sT0FBTyx1QkFBdUI7SUFvQmxDLFlBQW9CLFdBQXdCO1FBQXhCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBbkJuQyxhQUFRLEdBQVEsRUFBRSxDQUFDO1FBQzVCLFVBQUssR0FBVyxDQUFDLENBQUM7UUFDbEIsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUMxQixTQUFJLEdBQVcsRUFBRSxDQUFDO1FBQ2xCLGtCQUFhLEdBQVcsRUFBRSxDQUFDO1FBRzNCLGVBQVUsR0FBVyxFQUFFLENBQUM7UUFDeEIsZ0JBQVcsR0FBUSxFQUFFLENBQUM7UUFDdEIsa0JBQWEsR0FBVSxFQUFFLENBQUM7UUFDMUIsYUFBUSxHQUFRLEVBQUUsQ0FBQztRQUNuQixRQUFHLEdBQVEsRUFBRSxDQUFDO1FBQ2QsZUFBVSxHQUFVLEVBQUUsQ0FBQyxDQUFDLG9EQUFvRDtRQUM1RSxvQkFBZSxHQUFVLEVBQUUsQ0FBQztRQUM1QixxQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUFDbEMsc0JBQWlCLEdBQVcsRUFBRSxDQUFDO1FBRXJCLGFBQVEsR0FBMEIsSUFBSSxZQUFZLEVBQVcsQ0FBQztJQUV6QixDQUFDO0lBRWhELFFBQVE7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Q0FBQyxnQkFBZ0IsS0FBSyxTQUFTO1lBQ25DLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxnQkFBZ0I7WUFDcEQsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FDdkMsQ0FBQztJQUNKLENBQUM7K0dBdk5VLHVCQUF1QjttR0FBdkIsdUJBQXVCLGlJQ1JwQyxzdEhBb0dBOzs0RkQ1RmEsdUJBQXVCO2tCQUxuQyxTQUFTOytCQUNFLHNCQUFzQjtrR0FLdkIsUUFBUTtzQkFBaEIsS0FBSztnQkFpQkksUUFBUTtzQkFBakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZm9ybS5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWNoZWNrLWJveC1maWVsZHMnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGVjay1ib3gtZmllbGRzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jaGVjay1ib3gtZmllbGRzLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDaGVja0JveEZpZWxkc0NvbXBvbmVudCB7XHJcbiAgQElucHV0KCkgcXVlc3Rpb246IGFueSA9IHt9O1xyXG4gIGNvdW50OiBudW1iZXIgPSAwO1xyXG4gIHJlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaGludDogc3RyaW5nID0gJyc7XHJcbiAgc2VsZWN0aW9uVHlwZTogc3RyaW5nID0gJyc7XHJcbiAgbWluaW11bVNlbGVjdGlvbj86IG51bWJlcjtcclxuICBtYXhpbXVtU2VsZWN0aW9uPzogbnVtYmVyO1xyXG4gIG9wdGlvblR5cGU6IHN0cmluZyA9ICcnO1xyXG4gIGxvb2t1cFRhYmxlOiBhbnkgPSB7fTtcclxuICBjdXN0b21PcHRpb25zOiBhbnlbXSA9IFtdO1xyXG4gIGRhdGFiYXNlOiBhbnkgPSB7fTtcclxuICBhcGk6IGFueSA9IHt9O1xyXG4gIGFwaU9wdGlvbnM6IGFueVtdID0gW107IC8vIEFzc3VtaW5nIHlvdSBoYXZlIGEgcHJvcGVydHkgdG8gc3RvcmUgQVBJIG9wdGlvbnNcclxuICBzZWxlY3RlZE9wdGlvbnM6IGFueVtdID0gW107XHJcbiAgdmFsaWRhdGlvbkZhaWxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHZhbGlkYXRpb25NZXNzYWdlOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgQE91dHB1dCgpIHZhbGlkYXRlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZm9ybVNlcnZpY2U6IEZvcm1TZXJ2aWNlKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMudmFsdWVBc3NpZ25lZCgpO1xyXG4gIH1cclxuXHJcbiAgdmFsdWVBc3NpZ25lZCgpIHtcclxuICAgIHRoaXMuY291bnQgPSB0aGlzLnF1ZXN0aW9uLmNvdW50O1xyXG4gICAgdGhpcy5yZXF1aXJlZCA9IHRoaXMucXVlc3Rpb24ucmVxdWlyZWQ7XHJcbiAgICB0aGlzLmhpbnQgPSB0aGlzLnF1ZXN0aW9uLmhpbnQ7XHJcbiAgICB0aGlzLnNlbGVjdGlvblR5cGUgPSB0aGlzLnF1ZXN0aW9uLmZvcm1FbGVtZW50LmFwcGVhcmFuY2Uuc2VsZWN0aW9uVHlwZTtcclxuICAgIHRoaXMubWluaW11bVNlbGVjdGlvbiA9XHJcbiAgICAgIHRoaXMucXVlc3Rpb24uZm9ybUVsZW1lbnQudmFsaWRhdGlvbi5taW5pbXVtU2VsZWN0aW9uO1xyXG4gICAgdGhpcy5tYXhpbXVtU2VsZWN0aW9uID1cclxuICAgICAgdGhpcy5xdWVzdGlvbi5mb3JtRWxlbWVudC52YWxpZGF0aW9uLm1heGltdW1TZWxlY3Rpb247XHJcbiAgICB0aGlzLm9wdGlvblR5cGUgPSB0aGlzLnF1ZXN0aW9uLmZvcm1FbGVtZW50Lm9wdGlvbi5vcHRpb25UeXBlO1xyXG5cclxuICAgIHN3aXRjaCAodGhpcy5vcHRpb25UeXBlKSB7XHJcbiAgICAgIGNhc2UgJ09QVElPTic6XHJcbiAgICAgICAgdGhpcy5jdXN0b21PcHRpb25zID0gdGhpcy5xdWVzdGlvbi5mb3JtRWxlbWVudC5vcHRpb24uY3VzdG9tT3B0aW9ucztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnTE9PS1VQJzpcclxuICAgICAgICB0aGlzLmxvb2t1cFRhYmxlID0gdGhpcy5xdWVzdGlvbi5mb3JtRWxlbWVudC5vcHRpb24ubG9va3VwVGFibGU7XHJcbiAgICAgICAgdGhpcy5mZXRjaERhdGFGcm9tTG9va3VwKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ0RBVEFCQVNFJzpcclxuICAgICAgICB0aGlzLmRhdGFiYXNlID0gdGhpcy5xdWVzdGlvbi5mb3JtRWxlbWVudC5vcHRpb24uZGF0YWJhc2U7XHJcbiAgICAgICAgdGhpcy5mZXRjaERhdGFGcm9tRGF0YWJhc2UoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnQVBJJzpcclxuICAgICAgICB0aGlzLmFwaSA9IHRoaXMucXVlc3Rpb24uZm9ybUVsZW1lbnQub3B0aW9uLmFwaTtcclxuICAgICAgICB0aGlzLmZldGNoRGF0YUZyb21BUEkoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBjb25zb2xlLndhcm4oJ1Vua25vd24gb3B0aW9uIHR5cGU6JywgdGhpcy5vcHRpb25UeXBlKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBJZiBzZWxlY3Rpb25UeXBlIGlzICdTSU5HTEUnLCBzZXQgbWluaW11bVNlbGVjdGlvbiBhbmQgbWF4aW11bVNlbGVjdGlvbiB0byAxXHJcbiAgICBpZiAodGhpcy5zZWxlY3Rpb25UeXBlID09PSAnU0lOR0xFJykge1xyXG4gICAgICB0aGlzLm1pbmltdW1TZWxlY3Rpb24gPSAxO1xyXG4gICAgICB0aGlzLm1heGltdW1TZWxlY3Rpb24gPSAxO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIElmIHNlbGVjdGlvblR5cGUgaXMgJ01VTFRJUExFJyBhbmQgbWluU2VsZWN0aW9uIGFuZCBtYXhTZWxlY3Rpb24gYXJlIG5vdCBzcGVjaWZpZWQsIHNldCB0aGVtIHRvIHVuZGVmaW5lZFxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnNlbGVjdGlvblR5cGUgPT09ICdNVUxUSVBMRScgJiZcclxuICAgICAgIXRoaXMubWluaW11bVNlbGVjdGlvbiAmJlxyXG4gICAgICAhdGhpcy5tYXhpbXVtU2VsZWN0aW9uXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5taW5pbXVtU2VsZWN0aW9uID0gdW5kZWZpbmVkO1xyXG4gICAgICB0aGlzLm1heGltdW1TZWxlY3Rpb24gPSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkNoZWNrYm94Q2hhbmdlKG9wdGlvbjogYW55LCBldmVudDogYW55KSB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3Rpb25UeXBlID09PSAnU0lOR0xFJykge1xyXG4gICAgICAvLyBDbGVhciBwcmV2aW91c2x5IHNlbGVjdGVkIG9wdGlvbnMgZm9yIHNpbmdsZSBzZWxlY3Rpb24gdHlwZVxyXG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9ucyA9IFtdO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChldmVudC50YXJnZXQuY2hlY2tlZCkge1xyXG4gICAgICAvLyBBZGQgdGhlIHNlbGVjdGVkIG9wdGlvbiBpZiBpdCdzIG5vdCBhbHJlYWR5IGluIHRoZSBsaXN0XHJcbiAgICAgIGlmICghdGhpcy5zZWxlY3RlZE9wdGlvbnMuaW5jbHVkZXMob3B0aW9uKSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zLnB1c2gob3B0aW9uKTtcclxuICAgICAgICB0aGlzLmlzTWluaW11bVNlbGVjdGlvblZhbGlkKCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIFJlbW92ZSB0aGUgc2VsZWN0ZWQgb3B0aW9uXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zID0gdGhpcy5zZWxlY3RlZE9wdGlvbnMuZmlsdGVyKFxyXG4gICAgICAgIChpdGVtKSA9PiBpdGVtICE9PSBvcHRpb25cclxuICAgICAgKTtcclxuICAgICAgdGhpcy5pc01pbmltdW1TZWxlY3Rpb25WYWxpZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIENoZWNrIGlmIHRoZSBudW1iZXIgb2Ygc2VsZWN0ZWQgb3B0aW9ucyBleGNlZWRzIHRoZSBtYXhpbXVtIGFsbG93ZWRcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5tYXhpbXVtU2VsZWN0aW9uICE9PSB1bmRlZmluZWQgJiZcclxuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbnMubGVuZ3RoID4gdGhpcy5tYXhpbXVtU2VsZWN0aW9uXHJcbiAgICApIHtcclxuICAgICAgLy8gSWYgZXhjZWVkZWQsIHVuY2hlY2sgdGhlIGxhc3Qgc2VsZWN0ZWQgb3B0aW9uXHJcbiAgICAgIGV2ZW50LnRhcmdldC5jaGVja2VkID0gZmFsc2U7XHJcbiAgICAgIC8vIFJlbW92ZSB0aGUgdW5jaGVja2VkIG9wdGlvbiBmcm9tIHRoZSBzZWxlY3RlZE9wdGlvbnMgYXJyYXlcclxuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbnMgPSB0aGlzLnNlbGVjdGVkT3B0aW9ucy5maWx0ZXIoXHJcbiAgICAgICAgKGl0ZW0pID0+IGl0ZW0gIT09IG9wdGlvblxyXG4gICAgICApO1xyXG4gICAgICAvLyBZb3UgY2FuIGFkZCBhIG1lc3NhZ2UgdG8gaW5mb3JtIHRoZSB1c2VyIGFib3V0IHRoZSBtYXhpbXVtIHNlbGVjdGlvbiBsaW1pdCBpZiBuZWVkZWRcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGZldGNoRGF0YUZyb21Mb29rdXAoKSB7XHJcbiAgICB0aGlzLmZvcm1TZXJ2aWNlLmZldGNoRGF0YUZyb21Mb29rdXAodGhpcy5sb29rdXBUYWJsZSkuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzcG9uc2UpID0+IHtcclxuICAgICAgICB0aGlzLmN1c3RvbU9wdGlvbnMgPSByZXNwb25zZS5yZXN1bHQudmFsdWVzLm1hcChcclxuICAgICAgICAgIChpdGVtOiB7IHZhbHVlOiBzdHJpbmc7IGxhYmVsOiBzdHJpbmcgfSkgPT4gKHtcclxuICAgICAgICAgICAgdmFsdWU6IGl0ZW0udmFsdWUsXHJcbiAgICAgICAgICAgIGxhYmVsOiBpdGVtLmxhYmVsLFxyXG4gICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgICB9LFxyXG4gICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdIVFRQIEVycm9yOicsIGVycm9yKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGZldGNoRGF0YUZyb21EYXRhYmFzZSgpIHtcclxuICAgIGNvbnN0IHRyYW5zZm9ybWVkRGF0YWJhc2UgPSB0aGlzLnRyYW5zZm9ybURhdGFiYXNlT2JqZWN0KHRoaXMuZGF0YWJhc2UpO1xyXG4gICAgdGhpcy5mb3JtU2VydmljZS5mZXRjaERhdGFGcm9tRGF0YWJhc2UodHJhbnNmb3JtZWREYXRhYmFzZSkuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzcG9uc2UpID0+IHtcclxuICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xyXG4gICAgICAgICAgdGhpcy5jdXN0b21PcHRpb25zID0gcmVzcG9uc2UucmVzdWx0Lm1hcChcclxuICAgICAgICAgICAgKGl0ZW06IHsgdmFsdWU6IHN0cmluZzsgbGFiZWw6IHN0cmluZyB9KSA9PiAoe1xyXG4gICAgICAgICAgICAgIHZhbHVlOiBpdGVtLnZhbHVlLFxyXG4gICAgICAgICAgICAgIGxhYmVsOiBpdGVtLmxhYmVsLFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgZGF0YSBmcm9tIGRhdGFiYXNlOicsIHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcignSFRUUCBFcnJvcjonLCBlcnJvcik7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB0cmFuc2Zvcm1EYXRhYmFzZU9iamVjdChkYXRhYmFzZTogYW55KSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICB0YWJsZU5hbWU6IGRhdGFiYXNlLnRhYmxlTmFtZSxcclxuICAgICAgdmFsdWVGaWVsZDogZGF0YWJhc2UudmFsdWVGaWVsZCxcclxuICAgICAgbGFiZWxGaWVsZDogZGF0YWJhc2UubGFiZWxGaWVsZCxcclxuICAgICAgY3JpdGVyaWE6IGRhdGFiYXNlLmNyaXRlcmlhLm1hcCgoY3JpdGVyaWE6IGFueSkgPT4gKHtcclxuICAgICAgICBmaWVsZDogY3JpdGVyaWEuZmllbGQsXHJcbiAgICAgICAgY29uZGl0aW9uOiBjcml0ZXJpYS5jb25kaXRpb24sXHJcbiAgICAgICAgdmFsdWU6IGNyaXRlcmlhLmlucHV0VmFsdWUsXHJcbiAgICAgICAgbG9naWNhbE9wZXJhdG9yOiBjcml0ZXJpYS5sb2dpY2FsT3BlcmF0b3IsXHJcbiAgICAgIH0pKSxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBmZXRjaERhdGFGcm9tQVBJKCkge1xyXG4gICAgY29uc3QgYXBpQ29uZmlnID0gdGhpcy5hcGk7XHJcbiAgICB0aGlzLmZvcm1TZXJ2aWNlLmZldGNoRGF0YUZyb21FeHRlcm5hbEFQSShhcGlDb25maWcudXJsKS5zdWJzY3JpYmUoXHJcbiAgICAgIChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmV4dHJhY3REYXRhQnlQYXRoKHJlc3BvbnNlLCBhcGlDb25maWcucGF0aFRvVmFsdWUpO1xyXG4gICAgICAgIHRoaXMuY3VzdG9tT3B0aW9ucyA9IGRhdGEubWFwKChpdGVtOiBhbnkpID0+ICh7XHJcbiAgICAgICAgICB2YWx1ZTogaXRlbVthcGlDb25maWcudmFsdWVGaWVsZF0sXHJcbiAgICAgICAgICBsYWJlbDogaXRlbVthcGlDb25maWcubGFiZWxGaWVsZF0sXHJcbiAgICAgICAgfSkpO1xyXG4gICAgICB9LFxyXG4gICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdIVFRQIEVycm9yOicsIGVycm9yKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGV4dHJhY3REYXRhQnlQYXRoKGRhdGE6IGFueSwgcGF0aDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gcGF0aC5zcGxpdCgnLicpLnJlZHVjZSgoYWNjLCBwYXJ0KSA9PiBhY2MgJiYgYWNjW3BhcnRdLCBkYXRhKTtcclxuICB9XHJcblxyXG4gIGlzTWluaW11bVNlbGVjdGlvblZhbGlkKCkge1xyXG4gICAgdGhpcy52YWxpZGF0aW9uRmFpbGVkID0gZmFsc2U7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZE9wdGlvbnMubGVuZ3RoID09IDAgJiYgdGhpcy5yZXF1aXJlZCkge1xyXG4gICAgICB0aGlzLnZhbGlkYXRpb25GYWlsZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLnZhbGlkYXRpb25NZXNzYWdlID0gJ1RoaXMgaXMgYSByZXF1aXJlZCBxdWVzdGlvbic7XHJcbiAgICAgIHRoaXMudmFsaWRhdGUuZW1pdCh0aGlzLnZhbGlkYXRpb25GYWlsZWQpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLm1pbmltdW1TZWxlY3Rpb24gIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZE9wdGlvbnMubGVuZ3RoIDwgdGhpcy5taW5pbXVtU2VsZWN0aW9uKSB7XHJcbiAgICAgICAgdGhpcy52YWxpZGF0aW9uRmFpbGVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnZhbGlkYXRpb25NZXNzYWdlID0gYE1pbmltdW0gJHt0aGlzLm1pbmltdW1TZWxlY3Rpb259ICBzZWxlY3Rpb24ocykgcmVxdWlyZWQuYDtcclxuICAgICAgICB0aGlzLnZhbGlkYXRlLmVtaXQodGhpcy52YWxpZGF0aW9uRmFpbGVkKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy52YWxpZGF0ZS5lbWl0KHRoaXMudmFsaWRhdGlvbkZhaWxlZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRPcHRpb25zKCkge1xyXG4gICAgaWYgKHRoaXMub3B0aW9uVHlwZSA9PT0gJ09QVElPTicpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuY3VzdG9tT3B0aW9ucztcclxuICAgIH0gZWxzZSBpZiAodGhpcy5vcHRpb25UeXBlID09PSAnTE9PS1VQJykge1xyXG4gICAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyh0aGlzLmxvb2t1cFRhYmxlKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5vcHRpb25UeXBlID09PSAnQVBJJykge1xyXG4gICAgICByZXR1cm4gdGhpcy5hcGlPcHRpb25zLm1hcCgob3B0aW9uKSA9PiBvcHRpb24udmFsdWVGaWVsZCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gW107XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc09wdGlvbkRpc2FibGVkKG9wdGlvbjogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICB0aGlzLm1heGltdW1TZWxlY3Rpb24gIT09IHVuZGVmaW5lZCAmJlxyXG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9ucy5sZW5ndGggPj0gdGhpcy5tYXhpbXVtU2VsZWN0aW9uICYmXHJcbiAgICAgICF0aGlzLnNlbGVjdGVkT3B0aW9ucy5pbmNsdWRlcyhvcHRpb24pXHJcbiAgICApO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IFtuZ0NsYXNzXT1cIidjb2wtJyArIGNvdW50XCIgY2xhc3M9XCJtYi01IHB4LTNcIj5cclxuICA8ZGl2IGNsYXNzPVwiaW5wdXQtd3JhcHBlciBtYi0yXCI+XHJcbiAgICA8bGFiZWw+e3sgcXVlc3Rpb24ucXVlc3Rpb24gfX08L2xhYmVsXHJcbiAgICA+Jm5ic3A7XHJcbiAgICA8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyXCIgKm5nSWY9XCJyZXF1aXJlZFwiPio8L3NwYW4+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwic3ZnLXdyYXBwZXIgbWItMiBoaW50SWNvblwiXHJcbiAgICAgIFthdHRyLmRhdGEtdGl0bGVdPVwiaGludFwiXHJcbiAgICAgICpuZ0lmPVwiaGludFwiXHJcbiAgICA+XHJcbiAgICAgIDxzdmdcclxuICAgICAgICBjbGFzcz1cImhpbnRTdmdcIlxyXG4gICAgICAgIHZpZXdCb3g9XCIwIDAgMzAgMzBcIlxyXG4gICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHBhdGhcclxuICAgICAgICAgIGZpbGwtcnVsZT1cImV2ZW5vZGRcIlxyXG4gICAgICAgICAgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXHJcbiAgICAgICAgICBkPVwiTTE1IDI2LjI1VjI2LjI1QzguNzg2MjUgMjYuMjUgMy43NSAyMS4yMTM4IDMuNzUgMTVWMTVDMy43NSA4Ljc4NjI1IDguNzg2MjUgMy43NSAxNSAzLjc1VjMuNzVDMjEuMjEzOCAzLjc1IDI2LjI1IDguNzg2MjUgMjYuMjUgMTVWMTVDMjYuMjUgMjEuMjEzOCAyMS4yMTM4IDI2LjI1IDE1IDI2LjI1WlwiXHJcbiAgICAgICAgICBzdHJva2U9XCIjMzIzMjMyXCJcclxuICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNVwiXHJcbiAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcclxuICAgICAgICAvPlxyXG4gICAgICAgIDxwYXRoXHJcbiAgICAgICAgICBkPVwiTTE1IDE2LjU2MjNWMTYuMjQ5OEMxNSAxNS4yMjg1IDE1LjYzMTIgMTQuNjc0OCAxNi4yNjM3IDE0LjI0OThDMTYuODgxMiAxMy44MzM1IDE3LjUgMTMuMjkxIDE3LjUgMTIuMjkxQzE3LjUgMTAuOTA5OCAxNi4zODEzIDkuNzkxMDIgMTUgOS43OTEwMkMxMy42MTg3IDkuNzkxMDIgMTIuNSAxMC45MDk4IDEyLjUgMTIuMjkxXCJcclxuICAgICAgICAgIHN0cm9rZT1cIiMzMjMyMzJcIlxyXG4gICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS41XCJcclxuICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgICAgPHBhdGhcclxuICAgICAgICAgIGQ9XCJNMTQuOTk4OCAyMEMxNC44MjYzIDIwIDE0LjY4NjMgMjAuMTQgMTQuNjg3NSAyMC4zMTI1QzE0LjY4NzUgMjAuNDg1IDE0LjgyNzUgMjAuNjI1IDE1IDIwLjYyNUMxNS4xNzI1IDIwLjYyNSAxNS4zMTI1IDIwLjQ4NSAxNS4zMTI1IDIwLjMxMjVDMTUuMzEyNSAyMC4xNCAxNS4xNzI1IDIwIDE0Ljk5ODggMjBcIlxyXG4gICAgICAgICAgc3Ryb2tlPVwiIzMyMzIzMlwiXHJcbiAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjVcIlxyXG4gICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9zdmc+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVja1wiICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgY3VzdG9tT3B0aW9uc1wiPlxyXG4gICAgPGlucHV0XHJcbiAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXHJcbiAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgIFtpZF09XCJvcHRpb24udmFsdWUgKyAnQ2hlY2tib3gnXCJcclxuICAgICAgW25hbWVdPVwib3B0aW9uLnZhbHVlICsgJ0NoZWNrYm94J1wiXHJcbiAgICAgIFt2YWx1ZV09XCJvcHRpb24udmFsdWVcIlxyXG4gICAgICAoY2hhbmdlKT1cIm9uQ2hlY2tib3hDaGFuZ2Uob3B0aW9uLCAkZXZlbnQpXCJcclxuICAgICAgW2Rpc2FibGVkXT1cImlzT3B0aW9uRGlzYWJsZWQob3B0aW9uKVwiXHJcbiAgICAgIFtjaGVja2VkXT1cInNlbGVjdGVkT3B0aW9ucy5pbmNsdWRlcyhvcHRpb24udmFsdWUpXCJcclxuICAgIC8+XHJcbiAgICA8bGFiZWxcclxuICAgICAgY2xhc3M9XCJmb3JtQ2hlY2tMYWJlbCBtcy0yIG1iLTJcIlxyXG4gICAgICBbZm9yXT1cIm9wdGlvbi52YWx1ZSArICdDaGVja2JveCdcIlxyXG4gICAgICAqbmdJZj1cIm9wdGlvblR5cGUgPT0gJ09QVElPTidcIlxyXG4gICAgICA+e3sgb3B0aW9uLnZhbHVlIH19PC9sYWJlbFxyXG4gICAgPlxyXG4gICAgPGxhYmVsXHJcbiAgICAgIGNsYXNzPVwiZm9ybUNoZWNrTGFiZWwgbXMtMiBtYi0yXCJcclxuICAgICAgW2Zvcl09XCJvcHRpb24udmFsdWUgKyAnQ2hlY2tib3gnXCJcclxuICAgICAgKm5nSWY9XCJvcHRpb25UeXBlID09ICdMT09LVVAnIHx8ICdEQVRBQkFTRScgfHwgJ0FQSSdcIlxyXG4gICAgICA+e3sgb3B0aW9uLmxhYmVsIH19PC9sYWJlbFxyXG4gICAgPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgKm5nSWY9XCJ2YWxpZGF0aW9uRmFpbGVkXCIgY2xhc3M9XCJ0ZXh0LWRhbmdlclwiPlxyXG4gICAgPHN2Z1xyXG4gICAgICBjbGFzcz1cInZhbGlkYXRpb25TdmdcIlxyXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcclxuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICA+XHJcbiAgICAgIDxwYXRoXHJcbiAgICAgICAgZD1cIk0xMi4wMDEgMTYuNzVDMTIuMTM5IDE2Ljc1IDEyLjI1MSAxNi42MzggMTIuMjUgMTYuNUMxMi4yNSAxNi4zNjIgMTIuMTM4IDE2LjI1IDEyIDE2LjI1QzExLjg2MiAxNi4yNSAxMS43NSAxNi4zNjIgMTEuNzUgMTYuNUMxMS43NSAxNi42MzggMTEuODYyIDE2Ljc1IDEyLjAwMSAxNi43NVwiXHJcbiAgICAgICAgc3Ryb2tlPVwid2hpdGVcIlxyXG4gICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNVwiXHJcbiAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxyXG4gICAgICAvPlxyXG4gICAgICA8cGF0aFxyXG4gICAgICAgIGZpbGwtcnVsZT1cImV2ZW5vZGRcIlxyXG4gICAgICAgIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxyXG4gICAgICAgIGQ9XCJNMTIgMjFDNy4wMjkgMjEgMyAxNi45NzEgMyAxMkMzIDcuMDI5IDcuMDI5IDMgMTIgM0MxNi45NzEgMyAyMSA3LjAyOSAyMSAxMkMyMSAxNi45NzEgMTYuOTcxIDIxIDEyIDIxWlwiXHJcbiAgICAgICAgZmlsbD1cIiNGRjAwMDBcIlxyXG4gICAgICAgIHN0cm9rZT1cIiNGRjAwMDBcIlxyXG4gICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNVwiXHJcbiAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxyXG4gICAgICAvPlxyXG4gICAgICA8cGF0aFxyXG4gICAgICAgIGQ9XCJNMTIgMTIuNzVMMTIgNy43NVwiXHJcbiAgICAgICAgc3Ryb2tlPVwid2hpdGVcIlxyXG4gICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNVwiXHJcbiAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxyXG4gICAgICAvPlxyXG4gICAgICA8Y2lyY2xlIGN4PVwiMTJcIiBjeT1cIjE2XCIgcj1cIjFcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgPC9zdmc+XHJcbiAgICB7eyB2YWxpZGF0aW9uTWVzc2FnZSB9fVxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19