bpm-core 0.0.52 → 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 (51) 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/index.d.ts +0 -2
  38. package/lib/i18n/ar.d.ts +2 -0
  39. package/lib/i18n/en.d.ts +2 -0
  40. package/lib/services/core.service.ts.d.ts +1 -0
  41. package/lib/testComponent/request-details-section/request-details-section.component.d.ts +0 -2
  42. package/package.json +2 -2
  43. package/src/lib/assets/images/user.svg +6 -0
  44. package/src/lib/assets/scss/_general.scss +4 -1
  45. package/src/lib/assets/scss/_upgrade.scss +2 -2
  46. package/esm2022/lib/components/shared-components/confirmation-popup/confirmation-popup.component.mjs +0 -39
  47. package/esm2022/lib/components/shared-components/delete-popup/delete-popup.component.mjs +0 -19
  48. package/esm2022/lib/components/shared-components/doc-uploader/docs-uploader.component.mjs +0 -686
  49. package/lib/components/shared-components/confirmation-popup/confirmation-popup.component.d.ts +0 -25
  50. package/lib/components/shared-components/delete-popup/delete-popup.component.d.ts +0 -6
  51. package/lib/components/shared-components/doc-uploader/docs-uploader.component.d.ts +0 -144
@@ -1,6 +1,6 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
2
  /* eslint-disable @angular-eslint/component-selector */
3
- import { MatDialogClose, MatDialogContent } from '@angular/material/dialog';
3
+ import { MatDialogClose, MatDialogContent, MatDialogTitle } from '@angular/material/dialog';
4
4
  import { Component, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
5
5
  import * as i0 from "@angular/core";
6
6
  import * as i1 from "@angular/material/dialog";
@@ -16,13 +16,14 @@ export class DeleteDialogComponent {
16
16
  this.dialogRef.close('yes');
17
17
  }
18
18
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: DeleteDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: i2.CoreI18nService }], target: i0.ɵɵFactoryTarget.Component });
19
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: DeleteDialogComponent, isStandalone: true, selector: "app-delete-dialog", ngImport: i0, template: "<div class=\"popup-container\">\r\n <div class=\"d-flex align-items-center justify-content-between\" mat-dialog-title>\r\n <h3> {{i18n.translate('delete')}}</h3>\r\n <ds-button matDialogClose icon>\r\n <ds-icon icon=\"close\" class=\"fs-20 fc-black\"></ds-icon>\r\n </ds-button>\r\n </div>\r\n <mat-dialog-content>\r\n <div class=\"d-flex flex-column align-items-center justify-content-center py-4\">\r\n <h2 class=\"fs-16 fw-medium fc-black mb-4\">\r\n {{i18n.translate('Areyousureyouwantdelete')}}\r\n </h2>\r\n\r\n <div class=\"d-flex align-items-center gap-3\">\r\n <ds-button shape=\"outline\" color=\"dark-gray\" matDialogClose>{{i18n.translate('Cancel')}}</ds-button>\r\n <ds-button color=\"red\" (click)=\"delete()\">{{i18n.translate('yes')}}</ds-button>\r\n </div>\r\n </div>\r\n </mat-dialog-content>\r\n</div>", styles: ["::ng-deep .confirm-dialog{--popup-max-width: 350px}\n"], dependencies: [{ kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }] });
19
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: DeleteDialogComponent, isStandalone: true, selector: "app-delete-dialog", ngImport: i0, template: "<div class=\"popup-container\">\r\n <div class=\"d-flex align-items-center justify-content-between\" mat-dialog-title>\r\n <h3> {{i18n.translate('delete')}}</h3>\r\n <ds-button matDialogClose icon>\r\n <ds-icon icon=\"close\" class=\"fs-20 fc-black\"></ds-icon>\r\n </ds-button>\r\n </div>\r\n <mat-dialog-content>\r\n <div class=\"d-flex flex-column align-items-center justify-content-center py-4\">\r\n <h2 class=\"fs-16 fw-medium fc-black mb-4\">\r\n {{i18n.translate('Areyousureyouwantdelete')}}\r\n </h2>\r\n\r\n <div class=\"d-flex align-items-center gap-3\">\r\n <ds-button shape=\"outline\" color=\"dark-gray\" matDialogClose>{{i18n.translate('Cancel')}}</ds-button>\r\n <ds-button color=\"red\" (click)=\"delete()\">{{i18n.translate('yes')}}</ds-button>\r\n </div>\r\n </div>\r\n </mat-dialog-content>\r\n</div>", styles: ["::ng-deep .confirm-dialog{--popup-max-width: 350px}\n"], dependencies: [{ kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }] });
20
20
  }
21
21
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: DeleteDialogComponent, decorators: [{
22
22
  type: Component,
23
23
  args: [{ selector: 'app-delete-dialog', schemas: [CUSTOM_ELEMENTS_SCHEMA], standalone: true, imports: [
24
24
  MatDialogContent,
25
- MatDialogClose
25
+ MatDialogClose,
26
+ MatDialogTitle
26
27
  ], template: "<div class=\"popup-container\">\r\n <div class=\"d-flex align-items-center justify-content-between\" mat-dialog-title>\r\n <h3> {{i18n.translate('delete')}}</h3>\r\n <ds-button matDialogClose icon>\r\n <ds-icon icon=\"close\" class=\"fs-20 fc-black\"></ds-icon>\r\n </ds-button>\r\n </div>\r\n <mat-dialog-content>\r\n <div class=\"d-flex flex-column align-items-center justify-content-center py-4\">\r\n <h2 class=\"fs-16 fw-medium fc-black mb-4\">\r\n {{i18n.translate('Areyousureyouwantdelete')}}\r\n </h2>\r\n\r\n <div class=\"d-flex align-items-center gap-3\">\r\n <ds-button shape=\"outline\" color=\"dark-gray\" matDialogClose>{{i18n.translate('Cancel')}}</ds-button>\r\n <ds-button color=\"red\" (click)=\"delete()\">{{i18n.translate('yes')}}</ds-button>\r\n </div>\r\n </div>\r\n </mat-dialog-content>\r\n</div>", styles: ["::ng-deep .confirm-dialog{--popup-max-width: 350px}\n"] }]
27
28
  }], ctorParameters: () => [{ type: i1.MatDialogRef }, { type: i2.CoreI18nService }] });
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZXRlLWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9icG0tY29yZS9zcmMvbGliL2NvbXBvbmVudHMvc2hhcmVkLWNvbXBvbmVudHMvZGlhbG9ncy9kZWxldGUtZGlhbG9nL2RlbGV0ZS1kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL3NoYXJlZC1jb21wb25lbnRzL2RpYWxvZ3MvZGVsZXRlLWRpYWxvZy9kZWxldGUtZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCx1REFBdUQ7QUFDdkQsT0FBTyxFQUFDLGNBQWMsRUFBRSxnQkFBZ0IsRUFBZSxNQUFNLDBCQUEwQixDQUFDO0FBQ3hGLE9BQU8sRUFBQyxTQUFTLEVBQUUsc0JBQXNCLEVBQUMsTUFBTSxlQUFlLENBQUM7Ozs7QUFjaEUsTUFBTSxPQUFPLHFCQUFxQjtJQUd2QjtJQUNBO0lBRlQsWUFDUyxTQUE0QixFQUM1QixJQUFxQjtRQURyQixjQUFTLEdBQVQsU0FBUyxDQUFtQjtRQUM1QixTQUFJLEdBQUosSUFBSSxDQUFpQjtJQUMxQixDQUFDO0lBR0wsTUFBTTtRQUNKLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlCLENBQUM7dUdBVlUscUJBQXFCOzJGQUFyQixxQkFBcUIsNkVDakJsQywwOEJBbUJNLCtHRE5GLGdCQUFnQix5R0FDaEIsY0FBYzs7MkZBR0wscUJBQXFCO2tCQVhqQyxTQUFTOytCQUNFLG1CQUFtQixXQUdwQixDQUFDLHNCQUFzQixDQUFDLGNBQ3JCLElBQUksV0FDUDt3QkFDUCxnQkFBZ0I7d0JBQ2hCLGNBQWM7cUJBQ2YiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXHJcbi8qIGVzbGludC1kaXNhYmxlIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3IgKi9cclxuaW1wb3J0IHtNYXREaWFsb2dDbG9zZSwgTWF0RGlhbG9nQ29udGVudCwgTWF0RGlhbG9nUmVmfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQge0NvbXBvbmVudCwgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7Q29yZUkxOG5TZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1kZWxldGUtZGlhbG9nJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZGVsZXRlLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZGVsZXRlLWRpYWxvZy5jb21wb25lbnQuc2NzcyddLFxyXG4gIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIE1hdERpYWxvZ0NvbnRlbnQsXHJcbiAgICBNYXREaWFsb2dDbG9zZVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIERlbGV0ZURpYWxvZ0NvbXBvbmVudCB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPGFueT4sXHJcbiAgICBwdWJsaWMgaTE4bjogQ29yZUkxOG5TZXJ2aWNlXHJcbiAgKSB7IH1cclxuXHJcblxyXG4gIGRlbGV0ZSgpIHtcclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCd5ZXMnKTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJwb3B1cC1jb250YWluZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCIgbWF0LWRpYWxvZy10aXRsZT5cclxuICAgICAgICA8aDM+ICB7e2kxOG4udHJhbnNsYXRlKCdkZWxldGUnKX19PC9oMz5cclxuICAgICAgICA8ZHMtYnV0dG9uIG1hdERpYWxvZ0Nsb3NlIGljb24+XHJcbiAgICAgICAgICAgIDxkcy1pY29uIGljb249XCJjbG9zZVwiIGNsYXNzPVwiZnMtMjAgZmMtYmxhY2tcIj48L2RzLWljb24+XHJcbiAgICAgICAgPC9kcy1idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxtYXQtZGlhbG9nLWNvbnRlbnQ+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBweS00XCI+XHJcbiAgICAgICAgICAgIDxoMiBjbGFzcz1cImZzLTE2IGZ3LW1lZGl1bSBmYy1ibGFjayBtYi00XCI+XHJcbiAgICAgICAgICAgICAgICB7e2kxOG4udHJhbnNsYXRlKCdBcmV5b3VzdXJleW91d2FudGRlbGV0ZScpfX1cclxuICAgICAgICAgICAgPC9oMj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0zXCI+XHJcbiAgICAgICAgICAgICAgICA8ZHMtYnV0dG9uIHNoYXBlPVwib3V0bGluZVwiIGNvbG9yPVwiZGFyay1ncmF5XCIgbWF0RGlhbG9nQ2xvc2U+e3tpMThuLnRyYW5zbGF0ZSgnQ2FuY2VsJyl9fTwvZHMtYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGRzLWJ1dHRvbiBjb2xvcj1cInJlZFwiIChjbGljayk9XCJkZWxldGUoKVwiPnt7aTE4bi50cmFuc2xhdGUoJ3llcycpfX08L2RzLWJ1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L21hdC1kaWFsb2ctY29udGVudD5cclxuPC9kaXY+Il19
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZXRlLWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9icG0tY29yZS9zcmMvbGliL2NvbXBvbmVudHMvc2hhcmVkLWNvbXBvbmVudHMvZGlhbG9ncy9kZWxldGUtZGlhbG9nL2RlbGV0ZS1kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL3NoYXJlZC1jb21wb25lbnRzL2RpYWxvZ3MvZGVsZXRlLWRpYWxvZy9kZWxldGUtZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCx1REFBdUQ7QUFDdkQsT0FBTyxFQUFDLGNBQWMsRUFBRSxnQkFBZ0IsRUFBZ0IsY0FBYyxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDeEcsT0FBTyxFQUFDLFNBQVMsRUFBRSxzQkFBc0IsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7OztBQWVoRSxNQUFNLE9BQU8scUJBQXFCO0lBR3ZCO0lBQ0E7SUFGVCxZQUNTLFNBQTRCLEVBQzVCLElBQXFCO1FBRHJCLGNBQVMsR0FBVCxTQUFTLENBQW1CO1FBQzVCLFNBQUksR0FBSixJQUFJLENBQWlCO0lBQzFCLENBQUM7SUFHTCxNQUFNO1FBQ0osSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQzt1R0FWVSxxQkFBcUI7MkZBQXJCLHFCQUFxQiw2RUNsQmxDLDA4QkFtQk0sK0dETkYsZ0JBQWdCLHlHQUNoQixjQUFjLHFMQUNkLGNBQWM7OzJGQUdMLHFCQUFxQjtrQkFaakMsU0FBUzsrQkFDRSxtQkFBbUIsV0FHcEIsQ0FBQyxzQkFBc0IsQ0FBQyxjQUNyQixJQUFJLFdBQ1A7d0JBQ1AsZ0JBQWdCO3dCQUNoQixjQUFjO3dCQUNkLGNBQWM7cUJBQ2YiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXHJcbi8qIGVzbGludC1kaXNhYmxlIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3IgKi9cclxuaW1wb3J0IHtNYXREaWFsb2dDbG9zZSwgTWF0RGlhbG9nQ29udGVudCwgTWF0RGlhbG9nUmVmLCBNYXREaWFsb2dUaXRsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHtDb21wb25lbnQsIENVU1RPTV9FTEVNRU5UU19TQ0hFTUF9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0NvcmVJMThuU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtZGVsZXRlLWRpYWxvZycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2RlbGV0ZS1kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2RlbGV0ZS1kaWFsb2cuY29tcG9uZW50LnNjc3MnXSxcclxuICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBNYXREaWFsb2dDb250ZW50LFxyXG4gICAgTWF0RGlhbG9nQ2xvc2UsXHJcbiAgICBNYXREaWFsb2dUaXRsZVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIERlbGV0ZURpYWxvZ0NvbXBvbmVudCB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPGFueT4sXHJcbiAgICBwdWJsaWMgaTE4bjogQ29yZUkxOG5TZXJ2aWNlXHJcbiAgKSB7IH1cclxuXHJcblxyXG4gIGRlbGV0ZSgpIHtcclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCd5ZXMnKTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJwb3B1cC1jb250YWluZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCIgbWF0LWRpYWxvZy10aXRsZT5cclxuICAgICAgICA8aDM+ICB7e2kxOG4udHJhbnNsYXRlKCdkZWxldGUnKX19PC9oMz5cclxuICAgICAgICA8ZHMtYnV0dG9uIG1hdERpYWxvZ0Nsb3NlIGljb24+XHJcbiAgICAgICAgICAgIDxkcy1pY29uIGljb249XCJjbG9zZVwiIGNsYXNzPVwiZnMtMjAgZmMtYmxhY2tcIj48L2RzLWljb24+XHJcbiAgICAgICAgPC9kcy1idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxtYXQtZGlhbG9nLWNvbnRlbnQ+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBweS00XCI+XHJcbiAgICAgICAgICAgIDxoMiBjbGFzcz1cImZzLTE2IGZ3LW1lZGl1bSBmYy1ibGFjayBtYi00XCI+XHJcbiAgICAgICAgICAgICAgICB7e2kxOG4udHJhbnNsYXRlKCdBcmV5b3VzdXJleW91d2FudGRlbGV0ZScpfX1cclxuICAgICAgICAgICAgPC9oMj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0zXCI+XHJcbiAgICAgICAgICAgICAgICA8ZHMtYnV0dG9uIHNoYXBlPVwib3V0bGluZVwiIGNvbG9yPVwiZGFyay1ncmF5XCIgbWF0RGlhbG9nQ2xvc2U+e3tpMThuLnRyYW5zbGF0ZSgnQ2FuY2VsJyl9fTwvZHMtYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGRzLWJ1dHRvbiBjb2xvcj1cInJlZFwiIChjbGljayk9XCJkZWxldGUoKVwiPnt7aTE4bi50cmFuc2xhdGUoJ3llcycpfX08L2RzLWJ1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L21hdC1kaWFsb2ctY29udGVudD5cclxuPC9kaXY+Il19
@@ -1,32 +1,50 @@
1
- import { Component, CUSTOM_ELEMENTS_SCHEMA, forwardRef, Inject, Input } from '@angular/core';
1
+ import { Component, CUSTOM_ELEMENTS_SCHEMA, forwardRef, Inject, Input, } from '@angular/core';
2
2
  import { TextareaComponent } from '../textarea/textarea.component';
3
- import { MAT_DIALOG_DATA, MatDialogActions, MatDialogContent, MatDialogModule } from "@angular/material/dialog";
4
- import { NgIf } from "@angular/common";
3
+ import { MAT_DIALOG_DATA, MatDialogActions, MatDialogClose, MatDialogContent, MatDialogModule, } from '@angular/material/dialog';
4
+ import { NgIf } from '@angular/common';
5
5
  import { ControlValueAccessorDirective } from '../control-value-accessor.directive';
6
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
6
+ import { FormControl, NG_VALUE_ACCESSOR, ReactiveFormsModule, Validators, } from '@angular/forms';
7
7
  import { DocsUploaderComponent } from '../doc-uploader/docs-uploader.component';
8
8
  import * as i0 from "@angular/core";
9
- import * as i1 from "@angular/material/dialog";
9
+ import * as i1 from "../../../../services";
10
+ import * as i2 from "ngx-toastr";
11
+ import * as i3 from "@angular/platform-browser";
12
+ import * as i4 from "@angular/forms";
13
+ import * as i5 from "@angular/material/dialog";
10
14
  export class AttachmentSectionDataComponent extends ControlValueAccessorDirective {
15
+ dialogRef;
16
+ dialogData;
11
17
  popupData = {};
12
18
  popupDataOrg = {};
13
19
  uploading;
14
20
  editMode;
15
21
  hasColumnBreak;
16
22
  section;
17
- dialogData;
18
- dialogRef;
19
- // ngOnInit() {
20
- /*if (this.coreStateMachineService?.attachmentListData) {
21
- this.popupData = this.coreStateMachineService.attachmentListData
22
- this.popupDataOrg = Object.assign({} , this.popupData) ///// ibrahim solve isse related to discard data whenn click close
23
- this.editMode = true;
23
+ formGroup;
24
+ constructor(injector, i18n, toasterService, coreService, sanitizer, fb, dialogRef, dialogData) {
25
+ super(injector, i18n, toasterService, coreService, sanitizer, fb);
26
+ this.dialogRef = dialogRef;
27
+ this.dialogData = dialogData;
28
+ }
29
+ ngOnInit() {
30
+ // super.ngOnInit()
31
+ this.createForm();
32
+ if (this.dialogData?.attachmentListData) {
33
+ this.popupData = this.dialogData.attachmentListData;
34
+ this.popupDataOrg = Object.assign({}, this.popupData);
35
+ this.formGroup.controls['file'].setValue(this.dialogData.attachmentListData);
36
+ this.formGroup.controls['description'].setValue(this.dialogData.attachmentListData.fileDescription);
37
+ this.formGroup.controls['comments'].setValue(this.dialogData.attachmentListData.fileComments);
38
+ this.editMode = true;
39
+ }
40
+ }
41
+ createForm() {
42
+ this.formGroup = this.fb.group({
43
+ file: new FormControl(null, Validators.required),
44
+ description: new FormControl(null, this.dialogData.descriptionRequired ? Validators.required : null),
45
+ comments: new FormControl(null, this.dialogData.commentsRequired ? Validators.required : null),
46
+ });
24
47
  }
25
- if(this.dialogData){
26
- console.log(this.dialogData);
27
-
28
- }*/
29
- // }
30
48
  close() {
31
49
  this.dialogRef.close(this.popupDataOrg);
32
50
  }
@@ -35,65 +53,72 @@ export class AttachmentSectionDataComponent extends ControlValueAccessorDirectiv
35
53
  }
36
54
  handleAttachmentEmitValue(data) {
37
55
  this.popupData = {
38
- "fileContents": data?.fileContents,
39
- "fileName": data?.fileName,
40
- "mimeType": data?.mimeType,
41
- "fileDescription": this.popupData?.fileDescription,
42
- "attachmentcomment": this.popupData?.attachmentcomment,
43
- "fileComments": this.popupData?.attachmentcomment,
56
+ fileContents: data?.fileContents,
57
+ fileName: data?.fileName,
58
+ mimeType: data?.mimeType,
59
+ fileDescription: this.popupData?.fileDescription,
60
+ attachmentcomment: this.popupData?.attachmentcomment,
61
+ fileComments: this.popupData?.attachmentcomment,
44
62
  };
45
63
  }
46
64
  addAttachments() {
47
65
  const data = {
48
- "fileDescription": this.popupData?.fileDescription,
49
- "attachmentcomment": this.popupData?.attachmentcomment,
50
- "fileComments": this.popupData?.attachmentcomment,
51
- "fileName": this.popupData?.fileName,
52
- "mimeType": this.popupData?.mimeType,
53
- "fileContents": this.popupData?.fileContents,
66
+ fileDescription: this.formGroup.controls['description'].value,
67
+ attachmentcomment: this.formGroup.controls['comments'].value,
68
+ fileComments: this.formGroup.controls['comments'].value,
69
+ fileName: this.formGroup.controls['file'].value.fileName,
70
+ mimeType: this.formGroup.controls['file'].value.mimeType,
71
+ fileContents: this.formGroup.controls['file'].value.fileContents,
54
72
  };
55
73
  this.uploading = true;
56
- /*this.coreStateMachineService.dispatch('getAttachments', data)
57
- .then((Response: any) => {
74
+ this.coreService.getAttachments(data).subscribe((Response) => {
58
75
  this.uploading = false;
59
76
  if (Response) {
60
- this.coreStateMachineService.attachmentListData = null
61
- const newObj = {
62
- "fileDescription": this.popupData?.fileDescription,
63
- "attachmentcomment": this.popupData?.attachmentcomment,
64
- "fileComments": this.popupData?.attachmentcomment,
65
- "fileName": this.popupData?.fileName,
66
- "attachmentId": Response.attachment.attachmentId,
67
- "mimeType": this.popupData?.mimeType
68
- }
69
- this.dialogRef.close(newObj);
77
+ const newObj = {
78
+ fileDescription: this.formGroup.controls['description'].value,
79
+ attachmentcomment: this.formGroup.controls['comments'].value,
80
+ fileComments: this.formGroup.controls['comments'].value,
81
+ fileName: this.formGroup.controls['file'].value.fileName,
82
+ attachmentId: Response.attachment.attachmentId,
83
+ mimeType: this.formGroup.controls['file'].value.mimeType,
84
+ };
85
+ this.dialogRef.close(newObj);
70
86
  }
71
- });*/
87
+ });
72
88
  }
73
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: AttachmentSectionDataComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
89
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: AttachmentSectionDataComponent, deps: [{ token: i0.Injector }, { token: i1.CoreI18nService }, { token: i2.ToastrService }, { token: i1.CoreService }, { token: i3.DomSanitizer }, { token: i4.FormBuilder }, { token: i5.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
74
90
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.8", type: AttachmentSectionDataComponent, isStandalone: true, selector: "app-add-attachment-section", inputs: { hasColumnBreak: "hasColumnBreak", section: "section" }, providers: [
75
91
  {
76
92
  provide: NG_VALUE_ACCESSOR,
77
93
  useExisting: forwardRef(() => AttachmentSectionDataComponent),
78
94
  multi: true,
79
95
  },
80
- ], usesInheritance: true, ngImport: i0, template: "<div class=\"popup-container\">\r\n <div class=\"d-flex align-items-center justify-content-end\" mat-dialog-title>\r\n <h3 class=\"mb-0 font-16 fw-medium\">{{i18n.translate('addAttachments')}}</h3>\r\n <ds-button (click)=\"close()\" icon>\r\n <ds-icon icon=\"close\" class=\"fs-20 fc-black\"></ds-icon>\r\n </ds-button>\r\n </div>\r\n <mat-dialog-content>\r\n <div class=\"px-md-4 mt-3\">\r\n <!-- add [callApi]=\"true\" input mobile issue not able to download it by base 64 -->\r\n\r\n <app-file-uploader class=\"section-item full\" [field]=\"popupData\" name=\"file\" [attachments]=\"dialogData?.attachments\"\r\n [labelTextReadMode]=\"i18n.translate('Attachment')\" [labelTextWriteMode]=\"i18n.translate('Attachment')\"\r\n [hasColumnBreak]=\"false\" [label]=\"i18n.translate('Attachment')\" [required]=\"true\" [multiple]=\"dialogData?.multiple\" [allowedExtensions]=\"dialogData?.data\"\r\n [isReadOnly]=\"section?.header?.readOnly\" [showActions]=\"false\" (emitedValue)=\"handleAttachmentEmitValue($event)\"\r\n >\r\n </app-file-uploader>\r\n\r\n <app-textarea class=\"section-item d-block mt-4\" [section]=\"section\" [field]=\"popupData?.fileDescription\" name=\"fileDescription\"\r\n [labelTextReadMode]=\"i18n.translate('description')\" [labelTextWriteMode]=\"i18n.translate('description')\"\r\n [hasColumnBreak]=\"false\" (emitedValue)=\"handleEmitValue($event,'fileDescription')\"\r\n [label]=\"i18n.translate('description')\" [required]=\"dialogData.isRequired\" [minLength]='1' [maxLength]='500'\r\n [isReadOnly]=\"section?.header?.readOnly\" [errorMessage]=\"i18n.translate('lenghtMin1Max500')\">\r\n </app-textarea>\r\n\r\n <app-textarea class=\"section-item\" [section]=\"section\" [field]=\"popupData?.attachmentcomment\" name=\"attachmentcomment\"\r\n [labelTextReadMode]=\"i18n.translate('comments')\" [labelTextWriteMode]=\"i18n.translate('comments')\"\r\n [hasColumnBreak]=\"false\" (emitedValue)=\"handleEmitValue($event,'attachmentcomment')\" [label]=\"i18n.translate('comments')\"\r\n [required]=\"false\" [minLength]='1' [maxLength]='500' [isReadOnly]=\"section?.header?.readOnly\"\r\n [errorMessage]=\"i18n.translate('lenghtMin1Max500')\">\r\n </app-textarea>\r\n\r\n </div>\r\n </mat-dialog-content>\r\n <mat-dialog-actions class=\"default-footer justify-content-end gap-3\">\r\n <ds-button shape=\"outline\" (click)=\"close()\" [disabled]=\"(uploading)\" color=\"red\">{{i18n.translate('cancel')}}\r\n </ds-button>\r\n <ds-button (click)=\"addAttachments()\" [loading]=\"uploading\"\r\n [disabled]=\"(!(popupData?.fileContents || popupData?.attachmentId ) ||( dialogData.isRequired && !popupData?.fileDescription )|| uploading)\">\r\n @if(!editMode){\r\n <span>{{i18n.translate('add')}}</span>\r\n }\r\n @if(editMode){\r\n <span>{{i18n.translate('edit')}}</span>\r\n }\r\n\r\n </ds-button>\r\n </mat-dialog-actions>\r\n\r\n</div>\r\n", styles: ["::ng-deep .add-attachment-dialog{--popup-max-width: 500px !important;--popup-width: 100% !important}::ng-deep .default-footer ds-button::part(base){--btn-min-width: 90px }\n"], dependencies: [{ kind: "component", type: TextareaComponent, selector: "app-textarea", inputs: ["className", "preventSpecailChar"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: DocsUploaderComponent, selector: "app-file-uploader", inputs: ["useCrop", "formKey", "showLabel", "downloadLink", "showActions", "styleHeight", "fileInputHeight", "styleWidth", "hints", "allowedExtensions", "callApi", "tooltip", "attachments", "optional", "display", "attachType", "error", "displayedFiles", "getDataFromTemplate", "allowFileContentsWithMultiAttachments", "accept", "signType", "showSignButton", "printType", "showPrintButton", "downloadType", "showDownloadButton", "preventFileContents", "maxSize"], outputs: ["selectedTemplateAttachment", "addSignatureClicked", "printActionClicked", "downloadActionClicked"] }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }] });
96
+ ], usesInheritance: true, ngImport: i0, template: "<div class=\"popup-container\">\r\n <div class=\"d-flex align-items-center justify-content-end\" mat-dialog-title>\r\n <h3 class=\"mb-0 font-16 fw-medium\">{{i18n.translate('addAttachments')}}</h3>\r\n <ds-button icon matDialogClose>\r\n <ds-icon icon=\"close\" class=\"fs-20 fc-black\"></ds-icon>\r\n </ds-button>\r\n </div>\r\n <mat-dialog-content>\r\n <div class=\"px-md-4 mt-3\">\r\n <!-- add [callApi]=\"true\" input mobile issue not able to download it by base 64 -->\r\n<form [formGroup]=\"formGroup\">\r\n <app-file-uploader class=\"section-item full\" [field]=\"popupData\" name=\"file\" [attachments]=\"dialogData?.attachments\"\r\n [labelTextReadMode]=\"i18n.translate('Attachment')\" [labelTextWriteMode]=\"i18n.translate('Attachment')\"\r\n [hasColumnBreak]=\"false\" [label]=\"i18n.translate('Attachment')\" [required]=\"true\" [multiple]=\"false\" [allowedExtensions]=\"dialogData?.data\"\r\n [isReadOnly]=\"section?.header?.readOnly\" [showActions]=\"false\"\r\n formControlName=\"file\"\r\n >\r\n</app-file-uploader>\r\n\r\n<app-textarea class=\"section-item d-block mt-4 mb-4\" [section]=\"section\" [field]=\"popupData?.fileDescription\" name=\"fileDescription\"\r\n [labelTextReadMode]=\"i18n.translate('description')\" [labelTextWriteMode]=\"i18n.translate('description')\"\r\n [hasColumnBreak]=\"false\" (emitedValue)=\"handleEmitValue($event,'fileDescription')\"\r\n [label]=\"i18n.translate('description')\" [required]=\"dialogData?.isRequired\" [minLength]='1' [maxLength]='500'\r\n [isReadOnly]=\"section?.header?.readOnly\" [errorMessage]=\"i18n.translate('lenghtMin1Max500')\"\r\n formControlName=\"description\" >\r\n \r\n</app-textarea>\r\n\r\n<app-textarea class=\"section-item\" [section]=\"section\" [field]=\"popupData?.attachmentcomment\" name=\"attachmentcomment\"\r\n [labelTextReadMode]=\"i18n.translate('comments')\" [labelTextWriteMode]=\"i18n.translate('comments')\"\r\n [hasColumnBreak]=\"false\" (emitedValue)=\"handleEmitValue($event,'attachmentcomment')\" [label]=\"i18n.translate('comments')\"\r\n [required]=\"false\" [minLength]='1' [maxLength]='500' [isReadOnly]=\"section?.header?.readOnly\"\r\n [errorMessage]=\"i18n.translate('lenghtMin1Max500')\"\r\n formControlName=\"comments\">\r\n</app-textarea>\r\n</form>\r\n \r\n\r\n </div>\r\n </mat-dialog-content>\r\n <mat-dialog-actions class=\"default-footer justify-content-end gap-3\">\r\n <ds-button shape=\"outline\" matDialogClose [disabled]=\"(uploading)\" color=\"red\">{{i18n.translate('cancel')}}\r\n </ds-button>\r\n <ds-button (click)=\"addAttachments()\" [loading]=\"uploading\"\r\n [disabled]=\"(!(formGroup?.value?.file?.fileContents || formGroup?.value?.file?.attachmentId ) ||( dialogData?.isRequired && !formGroup?.value?.description )|| uploading || !formGroup.valid)\">\r\n @if(!editMode){\r\n <span>{{i18n.translate('add')}}</span>\r\n }\r\n @if(editMode){\r\n <span>{{i18n.translate('edit')}}</span>\r\n }\r\n\r\n </ds-button>\r\n </mat-dialog-actions>\r\n\r\n</div>\r\n", styles: ["::ng-deep .add-attachment-dialog{--popup-max-width: 500px !important;--popup-width: 100% !important}::ng-deep .default-footer ds-button::part(base){--btn-min-width: 90px }\n"], dependencies: [{ kind: "component", type: TextareaComponent, selector: "app-textarea", inputs: ["className", "preventSpecailChar"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: DocsUploaderComponent, selector: "app-file-uploader", inputs: ["useCrop", "formKey", "showLabel", "downloadLink", "showActions", "styleHeight", "fileInputHeight", "styleWidth", "hints", "allowedExtensions", "callApi", "tooltip", "optional", "display", "attachType", "error", "displayedFiles", "getDataFromTemplate", "allowFileContentsWithMultiAttachments", "accept", "signType", "showSignButton", "printType", "showPrintButton", "downloadType", "showDownloadButton", "preventFileContents", "maxSize"], outputs: ["selectedTemplateAttachment", "addSignatureClicked", "printActionClicked", "emitedValue", "downloadActionClicked"] }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i5.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i5.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { 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.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { 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"] }] });
81
97
  }
82
98
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: AttachmentSectionDataComponent, decorators: [{
83
99
  type: Component,
84
- args: [{ selector: 'app-add-attachment-section', standalone: true, schemas: [CUSTOM_ELEMENTS_SCHEMA], imports: [TextareaComponent, MatDialogContent, DocsUploaderComponent, MatDialogActions, NgIf, MatDialogModule], providers: [
100
+ args: [{ selector: 'app-add-attachment-section', standalone: true, schemas: [CUSTOM_ELEMENTS_SCHEMA], imports: [
101
+ TextareaComponent,
102
+ MatDialogContent,
103
+ DocsUploaderComponent,
104
+ MatDialogActions,
105
+ NgIf,
106
+ MatDialogModule,
107
+ ReactiveFormsModule,
108
+ MatDialogClose,
109
+ ], providers: [
85
110
  {
86
111
  provide: NG_VALUE_ACCESSOR,
87
112
  useExisting: forwardRef(() => AttachmentSectionDataComponent),
88
113
  multi: true,
89
114
  },
90
- ], template: "<div class=\"popup-container\">\r\n <div class=\"d-flex align-items-center justify-content-end\" mat-dialog-title>\r\n <h3 class=\"mb-0 font-16 fw-medium\">{{i18n.translate('addAttachments')}}</h3>\r\n <ds-button (click)=\"close()\" icon>\r\n <ds-icon icon=\"close\" class=\"fs-20 fc-black\"></ds-icon>\r\n </ds-button>\r\n </div>\r\n <mat-dialog-content>\r\n <div class=\"px-md-4 mt-3\">\r\n <!-- add [callApi]=\"true\" input mobile issue not able to download it by base 64 -->\r\n\r\n <app-file-uploader class=\"section-item full\" [field]=\"popupData\" name=\"file\" [attachments]=\"dialogData?.attachments\"\r\n [labelTextReadMode]=\"i18n.translate('Attachment')\" [labelTextWriteMode]=\"i18n.translate('Attachment')\"\r\n [hasColumnBreak]=\"false\" [label]=\"i18n.translate('Attachment')\" [required]=\"true\" [multiple]=\"dialogData?.multiple\" [allowedExtensions]=\"dialogData?.data\"\r\n [isReadOnly]=\"section?.header?.readOnly\" [showActions]=\"false\" (emitedValue)=\"handleAttachmentEmitValue($event)\"\r\n >\r\n </app-file-uploader>\r\n\r\n <app-textarea class=\"section-item d-block mt-4\" [section]=\"section\" [field]=\"popupData?.fileDescription\" name=\"fileDescription\"\r\n [labelTextReadMode]=\"i18n.translate('description')\" [labelTextWriteMode]=\"i18n.translate('description')\"\r\n [hasColumnBreak]=\"false\" (emitedValue)=\"handleEmitValue($event,'fileDescription')\"\r\n [label]=\"i18n.translate('description')\" [required]=\"dialogData.isRequired\" [minLength]='1' [maxLength]='500'\r\n [isReadOnly]=\"section?.header?.readOnly\" [errorMessage]=\"i18n.translate('lenghtMin1Max500')\">\r\n </app-textarea>\r\n\r\n <app-textarea class=\"section-item\" [section]=\"section\" [field]=\"popupData?.attachmentcomment\" name=\"attachmentcomment\"\r\n [labelTextReadMode]=\"i18n.translate('comments')\" [labelTextWriteMode]=\"i18n.translate('comments')\"\r\n [hasColumnBreak]=\"false\" (emitedValue)=\"handleEmitValue($event,'attachmentcomment')\" [label]=\"i18n.translate('comments')\"\r\n [required]=\"false\" [minLength]='1' [maxLength]='500' [isReadOnly]=\"section?.header?.readOnly\"\r\n [errorMessage]=\"i18n.translate('lenghtMin1Max500')\">\r\n </app-textarea>\r\n\r\n </div>\r\n </mat-dialog-content>\r\n <mat-dialog-actions class=\"default-footer justify-content-end gap-3\">\r\n <ds-button shape=\"outline\" (click)=\"close()\" [disabled]=\"(uploading)\" color=\"red\">{{i18n.translate('cancel')}}\r\n </ds-button>\r\n <ds-button (click)=\"addAttachments()\" [loading]=\"uploading\"\r\n [disabled]=\"(!(popupData?.fileContents || popupData?.attachmentId ) ||( dialogData.isRequired && !popupData?.fileDescription )|| uploading)\">\r\n @if(!editMode){\r\n <span>{{i18n.translate('add')}}</span>\r\n }\r\n @if(editMode){\r\n <span>{{i18n.translate('edit')}}</span>\r\n }\r\n\r\n </ds-button>\r\n </mat-dialog-actions>\r\n\r\n</div>\r\n", styles: ["::ng-deep .add-attachment-dialog{--popup-max-width: 500px !important;--popup-width: 100% !important}::ng-deep .default-footer ds-button::part(base){--btn-min-width: 90px }\n"] }]
91
- }], propDecorators: { hasColumnBreak: [{
115
+ ], template: "<div class=\"popup-container\">\r\n <div class=\"d-flex align-items-center justify-content-end\" mat-dialog-title>\r\n <h3 class=\"mb-0 font-16 fw-medium\">{{i18n.translate('addAttachments')}}</h3>\r\n <ds-button icon matDialogClose>\r\n <ds-icon icon=\"close\" class=\"fs-20 fc-black\"></ds-icon>\r\n </ds-button>\r\n </div>\r\n <mat-dialog-content>\r\n <div class=\"px-md-4 mt-3\">\r\n <!-- add [callApi]=\"true\" input mobile issue not able to download it by base 64 -->\r\n<form [formGroup]=\"formGroup\">\r\n <app-file-uploader class=\"section-item full\" [field]=\"popupData\" name=\"file\" [attachments]=\"dialogData?.attachments\"\r\n [labelTextReadMode]=\"i18n.translate('Attachment')\" [labelTextWriteMode]=\"i18n.translate('Attachment')\"\r\n [hasColumnBreak]=\"false\" [label]=\"i18n.translate('Attachment')\" [required]=\"true\" [multiple]=\"false\" [allowedExtensions]=\"dialogData?.data\"\r\n [isReadOnly]=\"section?.header?.readOnly\" [showActions]=\"false\"\r\n formControlName=\"file\"\r\n >\r\n</app-file-uploader>\r\n\r\n<app-textarea class=\"section-item d-block mt-4 mb-4\" [section]=\"section\" [field]=\"popupData?.fileDescription\" name=\"fileDescription\"\r\n [labelTextReadMode]=\"i18n.translate('description')\" [labelTextWriteMode]=\"i18n.translate('description')\"\r\n [hasColumnBreak]=\"false\" (emitedValue)=\"handleEmitValue($event,'fileDescription')\"\r\n [label]=\"i18n.translate('description')\" [required]=\"dialogData?.isRequired\" [minLength]='1' [maxLength]='500'\r\n [isReadOnly]=\"section?.header?.readOnly\" [errorMessage]=\"i18n.translate('lenghtMin1Max500')\"\r\n formControlName=\"description\" >\r\n \r\n</app-textarea>\r\n\r\n<app-textarea class=\"section-item\" [section]=\"section\" [field]=\"popupData?.attachmentcomment\" name=\"attachmentcomment\"\r\n [labelTextReadMode]=\"i18n.translate('comments')\" [labelTextWriteMode]=\"i18n.translate('comments')\"\r\n [hasColumnBreak]=\"false\" (emitedValue)=\"handleEmitValue($event,'attachmentcomment')\" [label]=\"i18n.translate('comments')\"\r\n [required]=\"false\" [minLength]='1' [maxLength]='500' [isReadOnly]=\"section?.header?.readOnly\"\r\n [errorMessage]=\"i18n.translate('lenghtMin1Max500')\"\r\n formControlName=\"comments\">\r\n</app-textarea>\r\n</form>\r\n \r\n\r\n </div>\r\n </mat-dialog-content>\r\n <mat-dialog-actions class=\"default-footer justify-content-end gap-3\">\r\n <ds-button shape=\"outline\" matDialogClose [disabled]=\"(uploading)\" color=\"red\">{{i18n.translate('cancel')}}\r\n </ds-button>\r\n <ds-button (click)=\"addAttachments()\" [loading]=\"uploading\"\r\n [disabled]=\"(!(formGroup?.value?.file?.fileContents || formGroup?.value?.file?.attachmentId ) ||( dialogData?.isRequired && !formGroup?.value?.description )|| uploading || !formGroup.valid)\">\r\n @if(!editMode){\r\n <span>{{i18n.translate('add')}}</span>\r\n }\r\n @if(editMode){\r\n <span>{{i18n.translate('edit')}}</span>\r\n }\r\n\r\n </ds-button>\r\n </mat-dialog-actions>\r\n\r\n</div>\r\n", styles: ["::ng-deep .add-attachment-dialog{--popup-max-width: 500px !important;--popup-width: 100% !important}::ng-deep .default-footer ds-button::part(base){--btn-min-width: 90px }\n"] }]
116
+ }], ctorParameters: () => [{ type: i0.Injector }, { type: i1.CoreI18nService }, { type: i2.ToastrService }, { type: i1.CoreService }, { type: i3.DomSanitizer }, { type: i4.FormBuilder }, { type: i5.MatDialogRef }, { type: undefined, decorators: [{
117
+ type: Inject,
118
+ args: [MAT_DIALOG_DATA]
119
+ }] }], propDecorators: { hasColumnBreak: [{
92
120
  type: Input
93
121
  }], section: [{
94
122
  type: Input
95
- }], dialogData: [{
96
- type: Inject,
97
- args: [MAT_DIALOG_DATA]
98
123
  }] } });
99
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWF0dGFjaG1lbnQtc2VjdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9icG0tY29yZS9zcmMvbGliL2NvbXBvbmVudHMvc2hhcmVkLWNvbXBvbmVudHMvZm9ybS1maWVsZC9hZGQtYXR0YWNobWVudC1zZWN0aW9uL2FkZC1hdHRhY2htZW50LXNlY3Rpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL3NoYXJlZC1jb21wb25lbnRzL2Zvcm0tZmllbGQvYWRkLWF0dGFjaG1lbnQtc2VjdGlvbi9hZGQtYXR0YWNobWVudC1zZWN0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsc0JBQXNCLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBWSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFbkUsT0FBTyxFQUFDLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQWUsTUFBTSwwQkFBMEIsQ0FBQztBQUM1SCxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDckMsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFcEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUNBQXlDLENBQUM7OztBQWlCaEYsTUFBTSxPQUFPLDhCQUFxQyxTQUFRLDZCQUFtQztJQUMzRixTQUFTLEdBQVEsRUFBRSxDQUFDO0lBQ3BCLFlBQVksR0FBUSxFQUFFLENBQUM7SUFDdkIsU0FBUyxDQUFVO0lBQ25CLFFBQVEsQ0FBVTtJQUNULGNBQWMsQ0FBVTtJQUN4QixPQUFPLENBQVU7SUFDTSxVQUFVLENBQU07SUFDekMsU0FBUyxDQUFvQjtJQUtwQyxlQUFlO0lBQ2I7Ozs7Ozs7O09BUUc7SUFDTCxJQUFJO0lBRUosS0FBSztRQUNILElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsZUFBZSxDQUFDLElBQVMsRUFBRSxTQUFpQjtRQUMxQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQztJQUNuQyxDQUFDO0lBRUQseUJBQXlCLENBQUMsSUFBUztRQUNqQyxJQUFJLENBQUMsU0FBUyxHQUFHO1lBQ2YsY0FBYyxFQUFFLElBQUksRUFBRSxZQUFZO1lBQ2xDLFVBQVUsRUFBRSxJQUFJLEVBQUUsUUFBUTtZQUMxQixVQUFVLEVBQUUsSUFBSSxFQUFFLFFBQVE7WUFDMUIsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxlQUFlO1lBQ2xELG1CQUFtQixFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsaUJBQWlCO1lBQ3RELGNBQWMsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLGlCQUFpQjtTQUNsRCxDQUFBO0lBQ0gsQ0FBQztJQUVELGNBQWM7UUFDWixNQUFNLElBQUksR0FBRztZQUNYLGlCQUFpQixFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsZUFBZTtZQUNsRCxtQkFBbUIsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLGlCQUFpQjtZQUN0RCxjQUFjLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxpQkFBaUI7WUFDakQsVUFBVSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUTtZQUNwQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRO1lBQ3BDLGNBQWMsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLFlBQVk7U0FDN0MsQ0FBQTtRQUNELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3RCOzs7Ozs7Ozs7Ozs7Ozs7ZUFlTztJQUNULENBQUM7dUdBdEVVLDhCQUE4QjsyRkFBOUIsOEJBQThCLDJJQVI5QjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsOEJBQThCLENBQUM7Z0JBQzdELEtBQUssRUFBRSxJQUFJO2FBQ1o7U0FDRixpREN2QkgsbS9GQWtEQSx1T0RsQ1ksaUJBQWlCLHNHQUFFLGdCQUFnQix5R0FBRSxxQkFBcUIsNG5CQUFFLGdCQUFnQiwySEFBUSxlQUFlOzsyRkFTbEcsOEJBQThCO2tCQWYxQyxTQUFTOytCQUNFLDRCQUE0QixjQUcxQixJQUFJLFdBQ1AsQ0FBQyxzQkFBc0IsQ0FBQyxXQUN4QixDQUFDLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLHFCQUFxQixFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxlQUFlLENBQUMsYUFDbkc7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsK0JBQStCLENBQUM7NEJBQzdELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGOzhCQU9RLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUMwQixVQUFVO3NCQUF6QyxNQUFNO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsIGZvcndhcmRSZWYsIEluamVjdCwgSW5qZWN0b3IsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRleHRhcmVhQ29tcG9uZW50IH0gZnJvbSAnLi4vdGV4dGFyZWEvdGV4dGFyZWEuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2UtY29tcG9uZW50L2Jhc2UtY29tcG9uZW50LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7TUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dBY3Rpb25zLCBNYXREaWFsb2dDb250ZW50LCBNYXREaWFsb2dNb2R1bGUsIE1hdERpYWxvZ1JlZn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xyXG5pbXBvcnQge05nSWZ9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3JEaXJlY3RpdmUgfSBmcm9tICcuLi9jb250cm9sLXZhbHVlLWFjY2Vzc29yLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFNlY3Rpb24gfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IERvY3NVcGxvYWRlckNvbXBvbmVudCB9IGZyb20gJy4uL2RvYy11cGxvYWRlci9kb2NzLXVwbG9hZGVyLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1hZGQtYXR0YWNobWVudC1zZWN0aW9uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYWRkLWF0dGFjaG1lbnQtc2VjdGlvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYWRkLWF0dGFjaG1lbnQtc2VjdGlvbi5jb21wb25lbnQuc2NzcyddLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgc2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxyXG4gIGltcG9ydHM6IFtUZXh0YXJlYUNvbXBvbmVudCwgTWF0RGlhbG9nQ29udGVudCwgRG9jc1VwbG9hZGVyQ29tcG9uZW50LCBNYXREaWFsb2dBY3Rpb25zLCBOZ0lmLCBNYXREaWFsb2dNb2R1bGVdLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQXR0YWNobWVudFNlY3Rpb25EYXRhQ29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICB9LFxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEF0dGFjaG1lbnRTZWN0aW9uRGF0YUNvbXBvbmVudDxUeXBlPiBleHRlbmRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yRGlyZWN0aXZlPFR5cGU+IHtcclxuICBwb3B1cERhdGE6IGFueSA9IHt9O1xyXG4gIHBvcHVwRGF0YU9yZzogYW55ID0ge307XHJcbiAgdXBsb2FkaW5nOiBib29sZWFuO1xyXG4gIGVkaXRNb2RlOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGhhc0NvbHVtbkJyZWFrOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHNlY3Rpb246IFNlY3Rpb247XHJcbiAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkaWFsb2dEYXRhOiBhbnk7XHJcbiAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPGFueT47XHJcbiAgXHJcblxyXG5cclxuXHJcbiAgLy8gbmdPbkluaXQoKSB7XHJcbiAgICAvKmlmICh0aGlzLmNvcmVTdGF0ZU1hY2hpbmVTZXJ2aWNlPy5hdHRhY2htZW50TGlzdERhdGEpIHtcclxuICAgICAgdGhpcy5wb3B1cERhdGEgPSB0aGlzLmNvcmVTdGF0ZU1hY2hpbmVTZXJ2aWNlLmF0dGFjaG1lbnRMaXN0RGF0YVxyXG4gICAgICB0aGlzLnBvcHVwRGF0YU9yZyA9IE9iamVjdC5hc3NpZ24oe30gLCB0aGlzLnBvcHVwRGF0YSkgICAvLy8vLyBpYnJhaGltIHNvbHZlIGlzc2UgcmVsYXRlZCB0byBkaXNjYXJkIGRhdGEgd2hlbm4gY2xpY2sgY2xvc2VcclxuICAgICAgdGhpcy5lZGl0TW9kZSA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBpZih0aGlzLmRpYWxvZ0RhdGEpe1xyXG4gICAgICBjb25zb2xlLmxvZyh0aGlzLmRpYWxvZ0RhdGEpO1xyXG5cclxuICAgIH0qL1xyXG4gIC8vIH1cclxuXHJcbiAgY2xvc2UoKXtcclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHRoaXMucG9wdXBEYXRhT3JnKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUVtaXRWYWx1ZShkYXRhOiBhbnksIGZpZWxkTmFtZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnBvcHVwRGF0YVtmaWVsZE5hbWVdID0gZGF0YTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUF0dGFjaG1lbnRFbWl0VmFsdWUoZGF0YTogYW55KSB7XHJcbiAgICB0aGlzLnBvcHVwRGF0YSA9IHtcclxuICAgICAgXCJmaWxlQ29udGVudHNcIjogZGF0YT8uZmlsZUNvbnRlbnRzLFxyXG4gICAgICBcImZpbGVOYW1lXCI6IGRhdGE/LmZpbGVOYW1lLFxyXG4gICAgICBcIm1pbWVUeXBlXCI6IGRhdGE/Lm1pbWVUeXBlLFxyXG4gICAgICBcImZpbGVEZXNjcmlwdGlvblwiOiB0aGlzLnBvcHVwRGF0YT8uZmlsZURlc2NyaXB0aW9uLFxyXG4gICAgICBcImF0dGFjaG1lbnRjb21tZW50XCI6IHRoaXMucG9wdXBEYXRhPy5hdHRhY2htZW50Y29tbWVudCxcclxuICAgICAgXCJmaWxlQ29tbWVudHNcIjogdGhpcy5wb3B1cERhdGE/LmF0dGFjaG1lbnRjb21tZW50LFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWRkQXR0YWNobWVudHMoKSB7XHJcbiAgICBjb25zdCBkYXRhID0ge1xyXG4gICAgICBcImZpbGVEZXNjcmlwdGlvblwiOiB0aGlzLnBvcHVwRGF0YT8uZmlsZURlc2NyaXB0aW9uLFxyXG4gICAgICBcImF0dGFjaG1lbnRjb21tZW50XCI6IHRoaXMucG9wdXBEYXRhPy5hdHRhY2htZW50Y29tbWVudCxcclxuICAgICAgXCJmaWxlQ29tbWVudHNcIjogdGhpcy5wb3B1cERhdGE/LmF0dGFjaG1lbnRjb21tZW50LFxyXG4gICAgICBcImZpbGVOYW1lXCI6IHRoaXMucG9wdXBEYXRhPy5maWxlTmFtZSxcclxuICAgICAgXCJtaW1lVHlwZVwiOiB0aGlzLnBvcHVwRGF0YT8ubWltZVR5cGUsXHJcbiAgICAgIFwiZmlsZUNvbnRlbnRzXCI6IHRoaXMucG9wdXBEYXRhPy5maWxlQ29udGVudHMsXHJcbiAgICB9XHJcbiAgICB0aGlzLnVwbG9hZGluZyA9IHRydWU7XHJcbiAgICAvKnRoaXMuY29yZVN0YXRlTWFjaGluZVNlcnZpY2UuZGlzcGF0Y2goJ2dldEF0dGFjaG1lbnRzJywgZGF0YSlcclxuICAgICAgLnRoZW4oKFJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnVwbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIGlmIChSZXNwb25zZSkge1xyXG4gICAgICAgICAgdGhpcy5jb3JlU3RhdGVNYWNoaW5lU2VydmljZS5hdHRhY2htZW50TGlzdERhdGEgPSBudWxsXHJcbiAgICAgICAgICBjb25zdCBuZXdPYmogPSB7XHJcbiAgICAgICAgICAgIFwiZmlsZURlc2NyaXB0aW9uXCI6IHRoaXMucG9wdXBEYXRhPy5maWxlRGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgIFwiYXR0YWNobWVudGNvbW1lbnRcIjogdGhpcy5wb3B1cERhdGE/LmF0dGFjaG1lbnRjb21tZW50LFxyXG4gICAgICAgICAgICBcImZpbGVDb21tZW50c1wiOiB0aGlzLnBvcHVwRGF0YT8uYXR0YWNobWVudGNvbW1lbnQsXHJcbiAgICAgICAgICAgIFwiZmlsZU5hbWVcIjogdGhpcy5wb3B1cERhdGE/LmZpbGVOYW1lLFxyXG4gICAgICAgICAgICBcImF0dGFjaG1lbnRJZFwiOiBSZXNwb25zZS5hdHRhY2htZW50LmF0dGFjaG1lbnRJZCxcclxuICAgICAgICAgICAgXCJtaW1lVHlwZVwiOiB0aGlzLnBvcHVwRGF0YT8ubWltZVR5cGVcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKG5ld09iaik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTsqL1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInBvcHVwLWNvbnRhaW5lclwiPlxyXG4gIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1lbmRcIiBtYXQtZGlhbG9nLXRpdGxlPlxyXG4gICAgPGgzIGNsYXNzPVwibWItMCBmb250LTE2IGZ3LW1lZGl1bVwiPnt7aTE4bi50cmFuc2xhdGUoJ2FkZEF0dGFjaG1lbnRzJyl9fTwvaDM+XHJcbiAgICA8ZHMtYnV0dG9uIChjbGljayk9XCJjbG9zZSgpXCIgaWNvbj5cclxuICAgICAgPGRzLWljb24gaWNvbj1cImNsb3NlXCIgY2xhc3M9XCJmcy0yMCBmYy1ibGFja1wiPjwvZHMtaWNvbj5cclxuICAgIDwvZHMtYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG4gIDxtYXQtZGlhbG9nLWNvbnRlbnQ+XHJcbiAgICA8ZGl2IGNsYXNzPVwicHgtbWQtNCBtdC0zXCI+XHJcbiAgICAgIDwhLS0gYWRkIFtjYWxsQXBpXT1cInRydWVcIiAgaW5wdXQgbW9iaWxlIGlzc3VlIG5vdCBhYmxlIHRvIGRvd25sb2FkIGl0IGJ5IGJhc2UgNjQgLS0+XHJcblxyXG4gICAgICA8YXBwLWZpbGUtdXBsb2FkZXIgY2xhc3M9XCJzZWN0aW9uLWl0ZW0gZnVsbFwiIFtmaWVsZF09XCJwb3B1cERhdGFcIiBuYW1lPVwiZmlsZVwiIFthdHRhY2htZW50c109XCJkaWFsb2dEYXRhPy5hdHRhY2htZW50c1wiXHJcbiAgICAgICAgW2xhYmVsVGV4dFJlYWRNb2RlXT1cImkxOG4udHJhbnNsYXRlKCdBdHRhY2htZW50JylcIiBbbGFiZWxUZXh0V3JpdGVNb2RlXT1cImkxOG4udHJhbnNsYXRlKCdBdHRhY2htZW50JylcIlxyXG4gICAgICAgIFtoYXNDb2x1bW5CcmVha109XCJmYWxzZVwiIFtsYWJlbF09XCJpMThuLnRyYW5zbGF0ZSgnQXR0YWNobWVudCcpXCIgW3JlcXVpcmVkXT1cInRydWVcIiBbbXVsdGlwbGVdPVwiZGlhbG9nRGF0YT8ubXVsdGlwbGVcIiBbYWxsb3dlZEV4dGVuc2lvbnNdPVwiZGlhbG9nRGF0YT8uZGF0YVwiXHJcbiAgICAgICAgW2lzUmVhZE9ubHldPVwic2VjdGlvbj8uaGVhZGVyPy5yZWFkT25seVwiIFtzaG93QWN0aW9uc109XCJmYWxzZVwiIChlbWl0ZWRWYWx1ZSk9XCJoYW5kbGVBdHRhY2htZW50RW1pdFZhbHVlKCRldmVudClcIlxyXG4gICAgICAgID5cclxuICAgICAgPC9hcHAtZmlsZS11cGxvYWRlcj5cclxuXHJcbiAgICAgIDxhcHAtdGV4dGFyZWEgY2xhc3M9XCJzZWN0aW9uLWl0ZW0gZC1ibG9jayBtdC00XCIgW3NlY3Rpb25dPVwic2VjdGlvblwiIFtmaWVsZF09XCJwb3B1cERhdGE/LmZpbGVEZXNjcmlwdGlvblwiIG5hbWU9XCJmaWxlRGVzY3JpcHRpb25cIlxyXG4gICAgICAgIFtsYWJlbFRleHRSZWFkTW9kZV09XCJpMThuLnRyYW5zbGF0ZSgnZGVzY3JpcHRpb24nKVwiIFtsYWJlbFRleHRXcml0ZU1vZGVdPVwiaTE4bi50cmFuc2xhdGUoJ2Rlc2NyaXB0aW9uJylcIlxyXG4gICAgICAgIFtoYXNDb2x1bW5CcmVha109XCJmYWxzZVwiIChlbWl0ZWRWYWx1ZSk9XCJoYW5kbGVFbWl0VmFsdWUoJGV2ZW50LCdmaWxlRGVzY3JpcHRpb24nKVwiXHJcbiAgICAgICAgW2xhYmVsXT1cImkxOG4udHJhbnNsYXRlKCdkZXNjcmlwdGlvbicpXCIgW3JlcXVpcmVkXT1cImRpYWxvZ0RhdGEuaXNSZXF1aXJlZFwiIFttaW5MZW5ndGhdPScxJyBbbWF4TGVuZ3RoXT0nNTAwJ1xyXG4gICAgICAgIFtpc1JlYWRPbmx5XT1cInNlY3Rpb24/LmhlYWRlcj8ucmVhZE9ubHlcIiBbZXJyb3JNZXNzYWdlXT1cImkxOG4udHJhbnNsYXRlKCdsZW5naHRNaW4xTWF4NTAwJylcIj5cclxuICAgICAgPC9hcHAtdGV4dGFyZWE+XHJcblxyXG4gICAgICA8YXBwLXRleHRhcmVhIGNsYXNzPVwic2VjdGlvbi1pdGVtXCIgW3NlY3Rpb25dPVwic2VjdGlvblwiIFtmaWVsZF09XCJwb3B1cERhdGE/LmF0dGFjaG1lbnRjb21tZW50XCIgbmFtZT1cImF0dGFjaG1lbnRjb21tZW50XCJcclxuICAgICAgICBbbGFiZWxUZXh0UmVhZE1vZGVdPVwiaTE4bi50cmFuc2xhdGUoJ2NvbW1lbnRzJylcIiBbbGFiZWxUZXh0V3JpdGVNb2RlXT1cImkxOG4udHJhbnNsYXRlKCdjb21tZW50cycpXCJcclxuICAgICAgICBbaGFzQ29sdW1uQnJlYWtdPVwiZmFsc2VcIiAoZW1pdGVkVmFsdWUpPVwiaGFuZGxlRW1pdFZhbHVlKCRldmVudCwnYXR0YWNobWVudGNvbW1lbnQnKVwiIFtsYWJlbF09XCJpMThuLnRyYW5zbGF0ZSgnY29tbWVudHMnKVwiXHJcbiAgICAgICAgW3JlcXVpcmVkXT1cImZhbHNlXCIgW21pbkxlbmd0aF09JzEnIFttYXhMZW5ndGhdPSc1MDAnIFtpc1JlYWRPbmx5XT1cInNlY3Rpb24/LmhlYWRlcj8ucmVhZE9ubHlcIlxyXG4gICAgICAgIFtlcnJvck1lc3NhZ2VdPVwiaTE4bi50cmFuc2xhdGUoJ2xlbmdodE1pbjFNYXg1MDAnKVwiPlxyXG4gICAgICA8L2FwcC10ZXh0YXJlYT5cclxuXHJcbiAgICA8L2Rpdj5cclxuICA8L21hdC1kaWFsb2ctY29udGVudD5cclxuICA8bWF0LWRpYWxvZy1hY3Rpb25zIGNsYXNzPVwiZGVmYXVsdC1mb290ZXIganVzdGlmeS1jb250ZW50LWVuZCBnYXAtM1wiPlxyXG4gICAgPGRzLWJ1dHRvbiAgc2hhcGU9XCJvdXRsaW5lXCIgKGNsaWNrKT1cImNsb3NlKClcIiBbZGlzYWJsZWRdPVwiKHVwbG9hZGluZylcIiBjb2xvcj1cInJlZFwiPnt7aTE4bi50cmFuc2xhdGUoJ2NhbmNlbCcpfX1cclxuICAgIDwvZHMtYnV0dG9uPlxyXG4gICAgPGRzLWJ1dHRvbiAoY2xpY2spPVwiYWRkQXR0YWNobWVudHMoKVwiIFtsb2FkaW5nXT1cInVwbG9hZGluZ1wiXHJcbiAgICAgIFtkaXNhYmxlZF09XCIoIShwb3B1cERhdGE/LmZpbGVDb250ZW50cyB8fCBwb3B1cERhdGE/LmF0dGFjaG1lbnRJZCApIHx8KCBkaWFsb2dEYXRhLmlzUmVxdWlyZWQgJiYgIXBvcHVwRGF0YT8uZmlsZURlc2NyaXB0aW9uICl8fCB1cGxvYWRpbmcpXCI+XHJcbiAgICAgIEBpZighZWRpdE1vZGUpe1xyXG4gICAgICA8c3Bhbj57e2kxOG4udHJhbnNsYXRlKCdhZGQnKX19PC9zcGFuPlxyXG4gICAgICB9XHJcbiAgICAgIEBpZihlZGl0TW9kZSl7XHJcbiAgICAgIDxzcGFuPnt7aTE4bi50cmFuc2xhdGUoJ2VkaXQnKX19PC9zcGFuPlxyXG4gICAgICB9XHJcblxyXG4gICAgPC9kcy1idXR0b24+XHJcbiAgPC9tYXQtZGlhbG9nLWFjdGlvbnM+XHJcblxyXG48L2Rpdj5cclxuIl19
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWF0dGFjaG1lbnQtc2VjdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9icG0tY29yZS9zcmMvbGliL2NvbXBvbmVudHMvc2hhcmVkLWNvbXBvbmVudHMvZm9ybS1maWVsZC9hZGQtYXR0YWNobWVudC1zZWN0aW9uL2FkZC1hdHRhY2htZW50LXNlY3Rpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL3NoYXJlZC1jb21wb25lbnRzL2Zvcm0tZmllbGQvYWRkLWF0dGFjaG1lbnQtc2VjdGlvbi9hZGQtYXR0YWNobWVudC1zZWN0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1Qsc0JBQXNCLEVBQ3RCLFVBQVUsRUFDVixNQUFNLEVBRU4sS0FBSyxHQUNOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ25FLE9BQU8sRUFDTCxlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLGNBQWMsRUFDZCxnQkFBZ0IsRUFDaEIsZUFBZSxHQUVoQixNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2QyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUVwRixPQUFPLEVBRUwsV0FBVyxFQUVYLGlCQUFpQixFQUNqQixtQkFBbUIsRUFDbkIsVUFBVSxHQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUNBQXlDLENBQUM7Ozs7Ozs7QUE2QmhGLE1BQU0sT0FBTyw4QkFFWCxTQUFRLDZCQUFtQztJQWdCbEM7SUFDeUI7SUFo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QWU7eUNBWmhCLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSxcclxuICBmb3J3YXJkUmVmLFxyXG4gIEluamVjdCxcclxuICBJbmplY3RvcixcclxuICBJbnB1dCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVGV4dGFyZWFDb21wb25lbnQgfSBmcm9tICcuLi90ZXh0YXJlYS90ZXh0YXJlYS5jb21wb25lbnQnO1xyXG5pbXBvcnQge1xyXG4gIE1BVF9ESUFMT0dfREFUQSxcclxuICBNYXREaWFsb2dBY3Rpb25zLFxyXG4gIE1hdERpYWxvZ0Nsb3NlLFxyXG4gIE1hdERpYWxvZ0NvbnRlbnQsXHJcbiAgTWF0RGlhbG9nTW9kdWxlLFxyXG4gIE1hdERpYWxvZ1JlZixcclxufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3JEaXJlY3RpdmUgfSBmcm9tICcuLi9jb250cm9sLXZhbHVlLWFjY2Vzc29yLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFNlY3Rpb24gfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHtcclxuICBGb3JtQnVpbGRlcixcclxuICBGb3JtQ29udHJvbCxcclxuICBGb3JtR3JvdXAsXHJcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICBWYWxpZGF0b3JzLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgRG9jc1VwbG9hZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vZG9jLXVwbG9hZGVyL2RvY3MtdXBsb2FkZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVG9hc3RyU2VydmljZSB9IGZyb20gJ25neC10b2FzdHInO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHtDb3JlSTE4blNlcnZpY2UsIENvcmVTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vLi4vc2VydmljZXNcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWFkZC1hdHRhY2htZW50LXNlY3Rpb24nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hZGQtYXR0YWNobWVudC1zZWN0aW9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9hZGQtYXR0YWNobWVudC1zZWN0aW9uLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXHJcbiAgaW1wb3J0czogW1xyXG4gICAgVGV4dGFyZWFDb21wb25lbnQsXHJcbiAgICBNYXREaWFsb2dDb250ZW50LFxyXG4gICAgRG9jc1VwbG9hZGVyQ29tcG9uZW50LFxyXG4gICAgTWF0RGlhbG9nQWN0aW9ucyxcclxuICAgIE5nSWYsXHJcbiAgICBNYXREaWFsb2dNb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgTWF0RGlhbG9nQ2xvc2UsXHJcbiAgXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEF0dGFjaG1lbnRTZWN0aW9uRGF0YUNvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXR0YWNobWVudFNlY3Rpb25EYXRhQ29tcG9uZW50PFxyXG4gIFR5cGVcclxuPiBleHRlbmRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yRGlyZWN0aXZlPFR5cGU+IHtcclxuICBwb3B1cERhdGE6IGFueSA9IHt9O1xyXG4gIHBvcHVwRGF0YU9yZzogYW55ID0ge307XHJcbiAgdXBsb2FkaW5nOiBib29sZWFuO1xyXG4gIGVkaXRNb2RlOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGhhc0NvbHVtbkJyZWFrOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHNlY3Rpb246IFNlY3Rpb247XHJcbiAgZm9ybUdyb3VwOiBGb3JtR3JvdXA7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgaTE4bjogQ29yZUkxOG5TZXJ2aWNlLFxyXG4gICAgdG9hc3RlclNlcnZpY2U6IFRvYXN0clNlcnZpY2UsXHJcbiAgICBjb3JlU2VydmljZTogQ29yZVNlcnZpY2UsXHJcbiAgICBzYW5pdGl6ZXI6IERvbVNhbml0aXplcixcclxuICAgIGZiOiBGb3JtQnVpbGRlcixcclxuICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxhbnk+LFxyXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkaWFsb2dEYXRhOiBhbnlcclxuICApIHtcclxuICAgIHN1cGVyKGluamVjdG9yLCBpMThuLCB0b2FzdGVyU2VydmljZSwgY29yZVNlcnZpY2UsIHNhbml0aXplciwgZmIpO1xyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgbmdPbkluaXQoKSB7XHJcbiAgICAvLyBzdXBlci5uZ09uSW5pdCgpXHJcbiAgICB0aGlzLmNyZWF0ZUZvcm0oKTtcclxuICAgIGlmICh0aGlzLmRpYWxvZ0RhdGE/LmF0dGFjaG1lbnRMaXN0RGF0YSkge1xyXG4gICAgICB0aGlzLnBvcHVwRGF0YSA9IHRoaXMuZGlhbG9nRGF0YS5hdHRhY2htZW50TGlzdERhdGE7XHJcbiAgICAgIHRoaXMucG9wdXBEYXRhT3JnID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5wb3B1cERhdGEpO1xyXG4gICAgICB0aGlzLmZvcm1Hcm91cC5jb250cm9sc1snZmlsZSddLnNldFZhbHVlKFxyXG4gICAgICAgIHRoaXMuZGlhbG9nRGF0YS5hdHRhY2htZW50TGlzdERhdGFcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5mb3JtR3JvdXAuY29udHJvbHNbJ2Rlc2NyaXB0aW9uJ10uc2V0VmFsdWUoXHJcbiAgICAgICAgdGhpcy5kaWFsb2dEYXRhLmF0dGFjaG1lbnRMaXN0RGF0YS5maWxlRGVzY3JpcHRpb25cclxuICAgICAgKTtcclxuICAgICAgdGhpcy5mb3JtR3JvdXAuY29udHJvbHNbJ2NvbW1lbnRzJ10uc2V0VmFsdWUoXHJcbiAgICAgICAgdGhpcy5kaWFsb2dEYXRhLmF0dGFjaG1lbnRMaXN0RGF0YS5maWxlQ29tbWVudHNcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5lZGl0TW9kZSA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGNyZWF0ZUZvcm0oKSB7XHJcbiAgICB0aGlzLmZvcm1Hcm91cCA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICBmaWxlOiBuZXcgRm9ybUNvbnRyb2wobnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXHJcbiAgICAgIGRlc2NyaXB0aW9uOiBuZXcgRm9ybUNvbnRyb2wobnVsbCx0aGlzLmRpYWxvZ0RhdGEuZGVzY3JpcHRpb25SZXF1aXJlZCA/IFZhbGlkYXRvcnMucmVxdWlyZWQ6IG51bGwpLFxyXG4gICAgICBjb21tZW50czogbmV3IEZvcm1Db250cm9sKG51bGwsIHRoaXMuZGlhbG9nRGF0YS5jb21tZW50c1JlcXVpcmVkID8gVmFsaWRhdG9ycy5yZXF1aXJlZDogbnVsbCksXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGNsb3NlKCkge1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UodGhpcy5wb3B1cERhdGFPcmcpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlRW1pdFZhbHVlKGRhdGE6IGFueSwgZmllbGROYW1lOiBzdHJpbmcpIHtcclxuICAgIHRoaXMucG9wdXBEYXRhW2ZpZWxkTmFtZV0gPSBkYXRhO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlQXR0YWNobWVudEVtaXRWYWx1ZShkYXRhOiBhbnkpIHtcclxuICAgIHRoaXMucG9wdXBEYXRhID0ge1xyXG4gICAgICBmaWxlQ29udGVudHM6IGRhdGE/LmZpbGVDb250ZW50cyxcclxuICAgICAgZmlsZU5hbWU6IGRhdGE/LmZpbGVOYW1lLFxyXG4gICAgICBtaW1lVHlwZTogZGF0YT8ubWltZVR5cGUsXHJcbiAgICAgIGZpbGVEZXNjcmlwdGlvbjogdGhpcy5wb3B1cERhdGE/LmZpbGVEZXNjcmlwdGlvbixcclxuICAgICAgYXR0YWNobWVudGNvbW1lbnQ6IHRoaXMucG9wdXBEYXRhPy5hdHRhY2htZW50Y29tbWVudCxcclxuICAgICAgZmlsZUNvbW1lbnRzOiB0aGlzLnBvcHVwRGF0YT8uYXR0YWNobWVudGNvbW1lbnQsXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgYWRkQXR0YWNobWVudHMoKSB7XHJcbiAgICBjb25zdCBkYXRhID0ge1xyXG4gICAgICBmaWxlRGVzY3JpcHRpb246IHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzWydkZXNjcmlwdGlvbiddLnZhbHVlLFxyXG4gICAgICBhdHRhY2htZW50Y29tbWVudDogdGhpcy5mb3JtR3JvdXAuY29udHJvbHNbJ2NvbW1lbnRzJ10udmFsdWUsXHJcbiAgICAgIGZpbGVDb21tZW50czogdGhpcy5mb3JtR3JvdXAuY29udHJvbHNbJ2NvbW1lbnRzJ10udmFsdWUsXHJcbiAgICAgIGZpbGVOYW1lOiB0aGlzLmZvcm1Hcm91cC5jb250cm9sc1snZmlsZSddLnZhbHVlLmZpbGVOYW1lLFxyXG4gICAgICBtaW1lVHlwZTogdGhpcy5mb3JtR3JvdXAuY29udHJvbHNbJ2ZpbGUnXS52YWx1ZS5taW1lVHlwZSxcclxuICAgICAgZmlsZUNvbnRlbnRzOiB0aGlzLmZvcm1Hcm91cC5jb250cm9sc1snZmlsZSddLnZhbHVlLmZpbGVDb250ZW50cyxcclxuICAgIH07XHJcbiAgICB0aGlzLnVwbG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLmNvcmVTZXJ2aWNlLmdldEF0dGFjaG1lbnRzKGRhdGEpLnN1YnNjcmliZSgoUmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLnVwbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICBpZiAoUmVzcG9uc2UpIHtcclxuICAgICAgICBjb25zdCBuZXdPYmogPSB7XHJcbiAgICAgICAgICBmaWxlRGVzY3JpcHRpb246IHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzWydkZXNjcmlwdGlvbiddLnZhbHVlLFxyXG4gICAgICAgICAgYXR0YWNobWVudGNvbW1lbnQ6IHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzWydjb21tZW50cyddLnZhbHVlLFxyXG4gICAgICAgICAgZmlsZUNvbW1lbnRzOiB0aGlzLmZvcm1Hcm91cC5jb250cm9sc1snY29tbWVudHMnXS52YWx1ZSxcclxuICAgICAgICAgIGZpbGVOYW1lOiB0aGlzLmZvcm1Hcm91cC5jb250cm9sc1snZmlsZSddLnZhbHVlLmZpbGVOYW1lLFxyXG4gICAgICAgICAgYXR0YWNobWVudElkOiBSZXNwb25zZS5hdHRhY2htZW50LmF0dGFjaG1lbnRJZCxcclxuICAgICAgICAgIG1pbWVUeXBlOiB0aGlzLmZvcm1Hcm91cC5jb250cm9sc1snZmlsZSddLnZhbHVlLm1pbWVUeXBlLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UobmV3T2JqKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJwb3B1cC1jb250YWluZXJcIj5cclxuICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtZW5kXCIgbWF0LWRpYWxvZy10aXRsZT5cclxuICAgIDxoMyBjbGFzcz1cIm1iLTAgZm9udC0xNiBmdy1tZWRpdW1cIj57e2kxOG4udHJhbnNsYXRlKCdhZGRBdHRhY2htZW50cycpfX08L2gzPlxyXG4gICAgPGRzLWJ1dHRvbiAgaWNvbiBtYXREaWFsb2dDbG9zZT5cclxuICAgICAgPGRzLWljb24gaWNvbj1cImNsb3NlXCIgY2xhc3M9XCJmcy0yMCBmYy1ibGFja1wiPjwvZHMtaWNvbj5cclxuICAgIDwvZHMtYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG4gIDxtYXQtZGlhbG9nLWNvbnRlbnQ+XHJcbiAgICA8ZGl2IGNsYXNzPVwicHgtbWQtNCBtdC0zXCI+XHJcbiAgICAgIDwhLS0gYWRkIFtjYWxsQXBpXT1cInRydWVcIiAgaW5wdXQgbW9iaWxlIGlzc3VlIG5vdCBhYmxlIHRvIGRvd25sb2FkIGl0IGJ5IGJhc2UgNjQgLS0+XHJcbjxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCI+XHJcbiAgPGFwcC1maWxlLXVwbG9hZGVyIGNsYXNzPVwic2VjdGlvbi1pdGVtIGZ1bGxcIiBbZmllbGRdPVwicG9wdXBEYXRhXCIgbmFtZT1cImZpbGVcIiBbYXR0YWNobWVudHNdPVwiZGlhbG9nRGF0YT8uYXR0YWNobWVudHNcIlxyXG4gIFtsYWJlbFRleHRSZWFkTW9kZV09XCJpMThuLnRyYW5zbGF0ZSgnQXR0YWNobWVudCcpXCIgW2xhYmVsVGV4dFdyaXRlTW9kZV09XCJpMThuLnRyYW5zbGF0ZSgnQXR0YWNobWVudCcpXCJcclxuICBbaGFzQ29sdW1uQnJlYWtdPVwiZmFsc2VcIiBbbGFiZWxdPVwiaTE4bi50cmFuc2xhdGUoJ0F0dGFjaG1lbnQnKVwiIFtyZXF1aXJlZF09XCJ0cnVlXCIgW211bHRpcGxlXT1cImZhbHNlXCIgW2FsbG93ZWRFeHRlbnNpb25zXT1cImRpYWxvZ0RhdGE/LmRhdGFcIlxyXG4gIFtpc1JlYWRPbmx5XT1cInNlY3Rpb24/LmhlYWRlcj8ucmVhZE9ubHlcIiBbc2hvd0FjdGlvbnNdPVwiZmFsc2VcIlxyXG4gIGZvcm1Db250cm9sTmFtZT1cImZpbGVcIlxyXG4gID5cclxuPC9hcHAtZmlsZS11cGxvYWRlcj5cclxuXHJcbjxhcHAtdGV4dGFyZWEgY2xhc3M9XCJzZWN0aW9uLWl0ZW0gZC1ibG9jayBtdC00IG1iLTRcIiBbc2VjdGlvbl09XCJzZWN0aW9uXCIgW2ZpZWxkXT1cInBvcHVwRGF0YT8uZmlsZURlc2NyaXB0aW9uXCIgbmFtZT1cImZpbGVEZXNjcmlwdGlvblwiXHJcbiAgW2xhYmVsVGV4dFJlYWRNb2RlXT1cImkxOG4udHJhbnNsYXRlKCdkZXNjcmlwdGlvbicpXCIgW2xhYmVsVGV4dFdyaXRlTW9kZV09XCJpMThuLnRyYW5zbGF0ZSgnZGVzY3JpcHRpb24nKVwiXHJcbiAgW2hhc0NvbHVtbkJyZWFrXT1cImZhbHNlXCIgKGVtaXRlZFZhbHVlKT1cImhhbmRsZUVtaXRWYWx1ZSgkZXZlbnQsJ2ZpbGVEZXNjcmlwdGlvbicpXCJcclxuICBbbGFiZWxdPVwiaTE4bi50cmFuc2xhdGUoJ2Rlc2NyaXB0aW9uJylcIiBbcmVxdWlyZWRdPVwiZGlhbG9nRGF0YT8uaXNSZXF1aXJlZFwiIFttaW5MZW5ndGhdPScxJyBbbWF4TGVuZ3RoXT0nNTAwJ1xyXG4gIFtpc1JlYWRPbmx5XT1cInNlY3Rpb24/LmhlYWRlcj8ucmVhZE9ubHlcIiBbZXJyb3JNZXNzYWdlXT1cImkxOG4udHJhbnNsYXRlKCdsZW5naHRNaW4xTWF4NTAwJylcIlxyXG4gIGZvcm1Db250cm9sTmFtZT1cImRlc2NyaXB0aW9uXCIgPlxyXG4gIFxyXG48L2FwcC10ZXh0YXJlYT5cclxuXHJcbjxhcHAtdGV4dGFyZWEgY2xhc3M9XCJzZWN0aW9uLWl0ZW1cIiBbc2VjdGlvbl09XCJzZWN0aW9uXCIgW2ZpZWxkXT1cInBvcHVwRGF0YT8uYXR0YWNobWVudGNvbW1lbnRcIiBuYW1lPVwiYXR0YWNobWVudGNvbW1lbnRcIlxyXG4gIFtsYWJlbFRleHRSZWFkTW9kZV09XCJpMThuLnRyYW5zbGF0ZSgnY29tbWVudHMnKVwiIFtsYWJlbFRleHRXcml0ZU1vZGVdPVwiaTE4bi50cmFuc2xhdGUoJ2NvbW1lbnRzJylcIlxyXG4gIFtoYXNDb2x1bW5CcmVha109XCJmYWxzZVwiIChlbWl0ZWRWYWx1ZSk9XCJoYW5kbGVFbWl0VmFsdWUoJGV2ZW50LCdhdHRhY2htZW50Y29tbWVudCcpXCIgW2xhYmVsXT1cImkxOG4udHJhbnNsYXRlKCdjb21tZW50cycpXCJcclxuICBbcmVxdWlyZWRdPVwiZmFsc2VcIiBbbWluTGVuZ3RoXT0nMScgW21heExlbmd0aF09JzUwMCcgW2lzUmVhZE9ubHldPVwic2VjdGlvbj8uaGVhZGVyPy5yZWFkT25seVwiXHJcbiAgW2Vycm9yTWVzc2FnZV09XCJpMThuLnRyYW5zbGF0ZSgnbGVuZ2h0TWluMU1heDUwMCcpXCJcclxuICBmb3JtQ29udHJvbE5hbWU9XCJjb21tZW50c1wiPlxyXG48L2FwcC10ZXh0YXJlYT5cclxuPC9mb3JtPlxyXG4gICBcclxuXHJcbiAgICA8L2Rpdj5cclxuICA8L21hdC1kaWFsb2ctY29udGVudD5cclxuICA8bWF0LWRpYWxvZy1hY3Rpb25zIGNsYXNzPVwiZGVmYXVsdC1mb290ZXIganVzdGlmeS1jb250ZW50LWVuZCBnYXAtM1wiPlxyXG4gICAgPGRzLWJ1dHRvbiAgc2hhcGU9XCJvdXRsaW5lXCIgIG1hdERpYWxvZ0Nsb3NlIFtkaXNhYmxlZF09XCIodXBsb2FkaW5nKVwiIGNvbG9yPVwicmVkXCI+e3tpMThuLnRyYW5zbGF0ZSgnY2FuY2VsJyl9fVxyXG4gICAgPC9kcy1idXR0b24+XHJcbiAgICA8ZHMtYnV0dG9uIChjbGljayk9XCJhZGRBdHRhY2htZW50cygpXCIgW2xvYWRpbmddPVwidXBsb2FkaW5nXCJcclxuICAgICAgW2Rpc2FibGVkXT1cIighKGZvcm1Hcm91cD8udmFsdWU/LmZpbGU/LmZpbGVDb250ZW50cyB8fCBmb3JtR3JvdXA/LnZhbHVlPy5maWxlPy5hdHRhY2htZW50SWQgKSB8fCggZGlhbG9nRGF0YT8uaXNSZXF1aXJlZCAmJiAhZm9ybUdyb3VwPy52YWx1ZT8uZGVzY3JpcHRpb24gKXx8IHVwbG9hZGluZyB8fCAhZm9ybUdyb3VwLnZhbGlkKVwiPlxyXG4gICAgICBAaWYoIWVkaXRNb2RlKXtcclxuICAgICAgPHNwYW4+e3tpMThuLnRyYW5zbGF0ZSgnYWRkJyl9fTwvc3Bhbj5cclxuICAgICAgfVxyXG4gICAgICBAaWYoZWRpdE1vZGUpe1xyXG4gICAgICA8c3Bhbj57e2kxOG4udHJhbnNsYXRlKCdlZGl0Jyl9fTwvc3Bhbj5cclxuICAgICAgfVxyXG5cclxuICAgIDwvZHMtYnV0dG9uPlxyXG4gIDwvbWF0LWRpYWxvZy1hY3Rpb25zPlxyXG5cclxuPC9kaXY+XHJcbiJdfQ==