bpm-core 0.0.31 → 0.0.33

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 (56) hide show
  1. package/esm2022/lib/app/app.component.mjs +2 -2
  2. package/esm2022/lib/components/app-component-sections/faq-sidenav/faq-sidenav.component.mjs +1 -5
  3. package/esm2022/lib/components/app-component-sections/faqs/faqs.component.mjs +4 -9
  4. package/esm2022/lib/components/app-component-sections/form-section/form-section.component.mjs +140 -72
  5. package/esm2022/lib/components/app-component-sections/index.mjs +1 -2
  6. package/esm2022/lib/components/app-component-sections/main-request-details/main-request-details.component.mjs +5 -7
  7. package/esm2022/lib/components/app-component-sections/service-header/service-header.component.mjs +155 -61
  8. package/esm2022/lib/components/shared-components/form-field/control-value-accessor.directive.mjs +5 -6
  9. package/esm2022/lib/components/shared-components/form-field/custom-searchable-autocomplete/custom-searchable.component.mjs +3 -3
  10. package/esm2022/lib/components/shared-components/form-field/date-picker/date-picker.component.mjs +8 -46
  11. package/esm2022/lib/components/shared-components/form-field/date-range-picker/date-range-picker.component.mjs +161 -14
  12. package/esm2022/lib/components/shared-components/form-field/input/input.component.mjs +10 -12
  13. package/esm2022/lib/components/shared-components/form-field/input-currency/input-currency.component.mjs +11 -4
  14. package/esm2022/lib/components/shared-components/form-field/input-email/input-email.component.mjs +12 -4
  15. package/esm2022/lib/components/shared-components/form-field/input-mask/input-mask.component.mjs +3 -3
  16. package/esm2022/lib/components/shared-components/form-field/input-number/input-number.component.mjs +9 -5
  17. package/esm2022/lib/components/shared-components/form-field/validation-errors/validation-errors.component.mjs +5 -1
  18. package/esm2022/lib/{validators → directives}/ar.directive.mjs +4 -3
  19. package/esm2022/lib/{validators → directives}/currency.directive.mjs +4 -3
  20. package/esm2022/lib/{validators → directives}/en.directive.mjs +4 -3
  21. package/esm2022/lib/directives/number.directive.mjs +68 -0
  22. package/esm2022/lib/i18n/ar.mjs +3 -2
  23. package/esm2022/lib/i18n/en.mjs +2 -1
  24. package/esm2022/lib/regex/regex-patterns.mjs +4 -0
  25. package/esm2022/lib/services/core.service.ts.mjs +18 -3
  26. package/esm2022/lib/testComponent/general-approver-section/general-approver-section.component.mjs +2 -2
  27. package/esm2022/lib/testComponent/request-details-section/request-details-section.component.mjs +13 -6
  28. package/esm2022/lib/validators/index.mjs +4 -4
  29. package/fesm2022/bpm-core.mjs +807 -511
  30. package/fesm2022/bpm-core.mjs.map +1 -1
  31. package/lib/components/app-component-sections/approvals-workflow/approvals-workflow.component.d.ts +1 -1
  32. package/lib/components/app-component-sections/faq-sidenav/faq-sidenav.component.d.ts +2 -4
  33. package/lib/components/app-component-sections/faqs/faqs.component.d.ts +1 -3
  34. package/lib/components/app-component-sections/form-section/form-section.component.d.ts +92 -7
  35. package/lib/components/app-component-sections/index.d.ts +0 -1
  36. package/lib/components/app-component-sections/service-header/service-header.component.d.ts +97 -7
  37. package/lib/components/shared-components/dialogs/submit-dialog/submit-dialog.component.d.ts +1 -1
  38. package/lib/components/shared-components/form-field/control-value-accessor.directive.d.ts +2 -1
  39. package/lib/components/shared-components/form-field/date-picker/date-picker.component.d.ts +0 -4
  40. package/lib/components/shared-components/form-field/date-range-picker/date-range-picker.component.d.ts +22 -6
  41. package/lib/components/shared-components/form-field/input/input.component.d.ts +1 -3
  42. package/lib/components/shared-components/form-field/input-email/input-email.component.d.ts +1 -0
  43. package/lib/{validators → directives}/ar.directive.d.ts +1 -1
  44. package/lib/{validators → directives}/currency.directive.d.ts +1 -1
  45. package/lib/{validators → directives}/en.directive.d.ts +1 -1
  46. package/lib/directives/number.directive.d.ts +14 -0
  47. package/lib/i18n/ar.d.ts +1 -0
  48. package/lib/i18n/en.d.ts +1 -0
  49. package/lib/regex/regex-patterns.d.ts +3 -0
  50. package/lib/services/core.service.ts.d.ts +1 -0
  51. package/lib/validators/index.d.ts +0 -3
  52. package/package.json +2 -2
  53. package/src/lib/assets/scss/_custom-popover.scss +3 -0
  54. package/src/lib/assets/scss/_settings.scss +5 -2
  55. package/esm2022/lib/components/app-component-sections/comment-section/comment-section.component.mjs +0 -66
  56. package/lib/components/app-component-sections/comment-section/comment-section.component.d.ts +0 -19
@@ -5,18 +5,26 @@ import { MatExpansionModule, MatExpansionPanel } from '@angular/material/expansi
5
5
  import { SatPopoverModule } from '@ncstate/sat-popover';
6
6
  import { ProfileInfoDrop } from '../../../interfaces';
7
7
  import * as Constants from '../../../constants';
8
- import * as moment from 'moment';
9
8
  import { ProfileSectionComponent } from "../profile-section/profile-section.component";
9
+ import { format } from 'date-fns';
10
10
  import * as i0 from "@angular/core";
11
11
  import * as i1 from "../../../services";
12
12
  import * as i2 from "@angular/material/expansion";
13
13
  import * as i3 from "ng-dynamic-component";
14
+ const StatusMap = {
15
+ [Constants.FORM_STATUS_REJECTED]: { class: 'danger', icon: 'close' },
16
+ [Constants.FORM_STATUS_CANCELLED]: { class: 'danger', icon: 'close' },
17
+ [Constants.FORM_STATUS_REJECT]: { class: 'danger', icon: 'close' },
18
+ [Constants.SECTION_STATUS_UNSATISFIED]: { class: 'danger', icon: 'close' },
19
+ [Constants.FORM_STATUS_CANCEL]: { class: 'danger', icon: 'close' },
20
+ [Constants.FORM_STATUS_PENDING]: { class: 'warning', icon: 'clock' },
21
+ 'default': { class: 'success', icon: 'check' }
22
+ };
14
23
  export class FormSectionComponent {
15
24
  i18n;
16
25
  coreService;
17
26
  sidenavService;
18
27
  userType = 'recipient';
19
- // @ViewChild('popover') popover?: any;
20
28
  popoverType = 'recipient';
21
29
  requestDetails;
22
30
  userPopoverInfo = {};
@@ -24,14 +32,10 @@ export class FormSectionComponent {
24
32
  form;
25
33
  lov;
26
34
  isReadOnly;
27
- // @Input() isOpen: boolean;
28
- // @Input() isFinalApproval: boolean;
29
35
  controllers;
30
36
  segmentDynamicLoaderService;
31
37
  sectionFormComponent = null;
32
38
  sectionName = 'SECTION_NAME.requestDetails';
33
- sectionNumber;
34
- sectionStatusValue;
35
39
  sectionStatusKey;
36
40
  recipient = {
37
41
  isShowing: false,
@@ -42,114 +46,178 @@ export class FormSectionComponent {
42
46
  profile: null
43
47
  };
44
48
  input;
45
- // highlightFlag: boolean;
46
49
  processingDate;
47
- randomID = Math.floor(Math.random() * (999999 - 100000)) + 100000;
48
50
  constructor(i18n, coreService, sidenavService) {
49
51
  this.i18n = i18n;
50
52
  this.coreService = coreService;
51
53
  this.sidenavService = sidenavService;
52
- // this.highlightFlag = false;
53
54
  }
55
+ /**
56
+ * Method to initialize various components when the component is initialized.
57
+ *
58
+ * @return {void}
59
+ */
54
60
  ngOnInit() {
61
+ this.initSectionFormComponent();
62
+ this.initSectionName();
63
+ this.initInput();
64
+ this.initProcessingDate();
65
+ }
66
+ /**
67
+ * Initializes the section form component by fetching it from the segment dynamic loader service.
68
+ *
69
+ * @return {void}
70
+ */
71
+ initSectionFormComponent() {
55
72
  this.sectionFormComponent = this.segmentDynamicLoaderService.getComponent(this.section.id);
56
- if (this.section.body.details.stageName) {
57
- this.sectionName = this.section.body.details.stageName;
73
+ }
74
+ /**
75
+ * Initializes the section name based on the provided section data.
76
+ * If the section's body contains a 'stageName' property, the section name is set to the value of that property.
77
+ * Otherwise, the section name is retrieved using the segmentDynamicLoaderService based on the section ID.
78
+ *
79
+ * @return {void}
80
+ */
81
+ initSectionName() {
82
+ if (this.section.body.details?.['stageName']) {
83
+ this.sectionName = this.section.body.details['stageName'];
58
84
  }
59
85
  else {
60
86
  this.sectionName = this.segmentDynamicLoaderService.getSectionName(this.section.id);
61
87
  }
88
+ }
89
+ /**
90
+ * Initializes the input object with the provided values for read-only status, list of values, section, and form.
91
+ *
92
+ * @return {void}
93
+ */
94
+ initInput() {
62
95
  this.input = {
63
96
  isReadOnly: this.isReadOnly,
64
97
  lov: this.lov,
65
98
  section: this.section,
66
- // controllers: this.controllers,
67
- // requestDetails: this.requestDetails,
68
99
  form: this.form
69
100
  };
70
- if (this.section.header && this.section.header.processingDate) {
71
- this.processingDate = moment(this.section.header.processingDate)
72
- .locale('en-US')
73
- .format('DD/MM/YYYY HH:mm:ss');
74
- }
75
- // this.highlightFlag = this.isOpen;
76
- const x = document.querySelectorAll('#collapse' + this.sectionId());
77
- if (x.length > 0) {
78
- this.sectionNumber = x.length;
101
+ }
102
+ /**
103
+ * Initializes the processing date based on the section's header processing date.
104
+ * If the processing date is available in the section header, it formats the processing date
105
+ * and assigns it to the processingDate property of the instance.
106
+ *
107
+ * @return {void}
108
+ */
109
+ initProcessingDate() {
110
+ if (this.section?.header?.processingDate) {
111
+ this.processingDate = format(new Date(this.section.header.processingDate), "dd/MM/yyyy hh:mm:ss");
79
112
  }
80
113
  }
114
+ /**
115
+ * Check if the section is expanded.
116
+ *
117
+ * @return {boolean} Returns true if the section is expanded, false otherwise.
118
+ */
81
119
  get isExpanded() {
82
- const isExpandableFromBackend = this.form?.sections?.length && this.form.sections.some(section => 'expandStage' in section?.body?.details);
83
- if (!isExpandableFromBackend)
84
- return true;
85
- return this.section?.body?.details?.expandStage === 'true';
86
- }
87
- sectionId() {
88
- return this.section.id.split(' ').join('') + this.randomID;
120
+ const hasSections = Boolean(this.form?.sections?.length);
121
+ const isAnySectionExpandable = hasSections && this.form.sections.some(section => 'expandStage' in (section?.body?.details || {}));
122
+ return isAnySectionExpandable ? (this.section?.body?.details?.['expandStage'] === 'true') : true;
89
123
  }
124
+ /**
125
+ * Create a ProfileInfoDrop object from the response object.
126
+ *
127
+ * @param {any} response - The response object containing user profile information.
128
+ *
129
+ * @return {ProfileInfoDrop} A ProfileInfoDrop object created from the response data.
130
+ */
90
131
  createUserProfileFromResponse(response) {
91
- return new ProfileInfoDrop(false, response?.["Users"][0]?.employeeNumber, response?.["Users"][0]?.email, response?.["Users"][0]?.name, response?.["Users"][0]?.generalDepartment?.name, response?.["Users"][0]?.position?.name, response?.["Users"][0]?.sector?.name, response?.["Users"][0]?.department?.name, response?.["Users"][0]?.generalDepartment?.code, response?.["Users"][0]?.location, response?.["Users"][0]?.nationality?.desc, response?.["Users"][0]?.contact?.mobile, response?.["Users"][0]?.manager?.name, response?.["Users"][0]?.seniorSectorName?.name);
132
+ const user = response?.["Users"][0];
133
+ return new ProfileInfoDrop(false, user?.employeeNumber, user?.email, user?.name, user?.generalDepartment?.name, user?.position?.name, user?.sector?.name, user?.department?.name, user?.generalDepartment?.code, user?.location, user?.nationality?.desc, user?.contact?.mobile, user?.manager?.name, user?.seniorSectorName?.name);
92
134
  }
135
+ /**
136
+ * Method to open or create a user profile.
137
+ *
138
+ * @param {ProfileInfoDrop} userData - The user profile data to open or create.
139
+ * @param {string} personType - The type of person this profile belongs to.
140
+ *
141
+ * @return {void}
142
+ */
93
143
  openOrCreateUserProfile(userData, personType) {
94
144
  this.sidenavService.data = userData;
95
145
  this.userPopoverInfo = userData;
96
146
  this[personType].profile = userData;
97
147
  this.sidenavService.publish('open', ProfileSectionComponent);
98
148
  }
149
+ /**
150
+ * Toggles the display of small profile information for a given person type
151
+ *
152
+ * @param {any} event - The event that triggered the toggle
153
+ * @param {string} personType - The type of person for which to display the profile information
154
+ *
155
+ * @return {void}
156
+ */
99
157
  toggleSmallProfileInfo(event, personType) {
100
158
  this.userType = personType;
101
159
  event.stopPropagation();
102
160
  let userInfo = this[personType];
103
- if (userInfo.profile === null) {
161
+ if (!userInfo.profile) {
104
162
  this.popoverType = personType;
105
- let userEmail = (personType === 'recipient' ? this.section.header.personToThumbnail.split('=')[1] : this?.section?.header?.delegatedToThumbnail.split('=')[1]);
106
- this.coreService.employeeProfile(userEmail).subscribe((response) => {
107
- if (response) {
108
- let userData = this.createUserProfileFromResponse(response);
109
- this.openOrCreateUserProfile(userData, personType);
110
- }
111
- });
163
+ let userEmail = this.getUserEmail(personType);
164
+ this.fetchAndSetUserProfile(userEmail, personType);
112
165
  }
113
166
  else {
114
- this.openOrCreateUserProfile(this[personType].profile, personType);
167
+ this.openOrCreateUserProfile(userInfo.profile, personType);
115
168
  }
116
169
  }
117
- statusClass(status) {
118
- if (status) {
119
- if (status === Constants.FORM_STATUS_REJECTED || status === Constants.FORM_STATUS_CANCELLED
120
- || status.toLowerCase() === 'reject' || status.toLowerCase() === 'unsatisfied' || status.toLowerCase() === 'cancel') {
121
- return 'danger';
122
- }
123
- else if (status === Constants.FORM_STATUS_PENDING || status.toLowerCase() === 'pending') {
124
- return 'warning';
125
- }
126
- else {
127
- return 'success';
170
+ /**
171
+ * Retrieves the email of the user based on the personType parameter.
172
+ *
173
+ * @param {string} personType - Type of the person ('recipient' or others).
174
+ * @return {string} - The email address of the user.
175
+ */
176
+ getUserEmail(personType) {
177
+ return (personType === 'recipient'
178
+ ? this.section.header.personToThumbnail.split('=')[1]
179
+ : this?.section?.header?.delegatedToThumbnail.split('=')[1]);
180
+ }
181
+ /**
182
+ * Fetches the user profile using the provided user email and person type, then sets the profile.
183
+ *
184
+ * @param {string} userEmail - The email of the user whose profile is to be fetched and set.
185
+ * @param {string} personType - The type of person (e.g., employee, customer) for whom the profile is being fetched.
186
+ *
187
+ * @return {void}
188
+ */
189
+ fetchAndSetUserProfile(userEmail, personType) {
190
+ this.coreService.employeeProfile(userEmail).subscribe((response) => {
191
+ if (response) {
192
+ let userData = this.createUserProfileFromResponse(response);
193
+ this.openOrCreateUserProfile(userData, personType);
128
194
  }
129
- }
130
- else {
131
- return 'success';
132
- }
195
+ });
133
196
  }
197
+ /**
198
+ * Returns the CSS class associated with the input status.
199
+ *
200
+ * @param {string} status - The status for which the CSS class is needed.
201
+ * @return {string} - The CSS class corresponding to the given status.
202
+ */
203
+ statusClass(status) {
204
+ status = status ? status.toLowerCase() : '';
205
+ let statusStrategy = StatusMap[status] || StatusMap['default'];
206
+ return statusStrategy.class;
207
+ }
208
+ /**
209
+ * Returns the icon associated with the provided status.
210
+ *
211
+ * @param {string} status - The status for which to retrieve the icon.
212
+ * @return {string} The icon corresponding to the provided status.
213
+ */
134
214
  statusIcon(status) {
135
- if (status) {
136
- if (status === Constants.FORM_STATUS_REJECTED || status === Constants.FORM_STATUS_CANCELLED
137
- || status.toLowerCase() === 'reject' || status.toLowerCase() === 'unsatisfied' || status.toLowerCase() === 'cancel') {
138
- return 'close';
139
- }
140
- else if (status === Constants.FORM_STATUS_PENDING || status.toLowerCase() === 'pending') {
141
- return 'clock';
142
- }
143
- else {
144
- return 'check';
145
- }
146
- }
147
- else {
148
- return 'check';
149
- }
215
+ status = status ? status.toLowerCase() : '';
216
+ let statusStrategy = StatusMap[status] || StatusMap['default'];
217
+ return statusStrategy.icon;
150
218
  }
151
219
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: FormSectionComponent, deps: [{ token: i1.CoreI18nService }, { token: i1.CoreService }, { token: i1.SidenavService }], target: i0.ɵɵFactoryTarget.Component });
152
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: FormSectionComponent, isStandalone: true, selector: "app-form-section", inputs: { requestDetails: "requestDetails", section: "section", form: "form", lov: "lov", isReadOnly: "isReadOnly", controllers: "controllers", segmentDynamicLoaderService: "segmentDynamicLoaderService", sectionFormComponent: "sectionFormComponent", sectionName: "sectionName" }, ngImport: i0, template: "<mat-expansion-panel\r\n class=\"mb-4\" [expanded]=\"isExpanded\" *ngIf=\"form?.header?.status?.['key'] !== 'NEW' \" hideToggle\r\n #approvalPanel=\"matExpansionPanel\">\r\n <mat-expansion-panel-header>\r\n\r\n <div class=\"approval-panel-container\">\r\n <div class=\"d-flex gap-2 flex-grow-1 approval-panel-title\">\r\n <ds-status\r\n status=\"{{statusClass(sectionStatusKey)}}\" no-opacity icon\r\n class=\"circle-status d-none d-sm-inline-block\">\r\n <ds-icon icon=\"{{statusIcon(sectionStatusKey)}}\"></ds-icon>\r\n </ds-status>\r\n <div class=\"d-flex flex-column flex-grow-1\">\r\n <span class=\"fs-16 fw-medium m-0\"> {{ sectionName }}</span>\r\n <bdi class=\"fs-12 fc-dark-gray fw-normal line-height-1 d-block mt-1\" *ngIf=\"section.header?.processedBy\">\r\n {{ processingDate }}\r\n </bdi>\r\n </div>\r\n </div>\r\n <div class=\"approval-panel-details gap-1\">\r\n\r\n <ng-container *ngIf=\"(!section?.body?.details?.['stage0']?.['isStage0'] || section?.body?.details?.['stage0']?.['isStage0'] === 'false')\">\r\n <div\r\n class=\"d-flex align-items-center gap-3\" *ngIf=\"section?.header?.personTo;\"\r\n (click)=\"$event.stopImmediatePropagation();\">\r\n <div\r\n (click)=\"toggleSmallProfileInfo($event, 'recipient')\"\r\n class=\"d-flex align-items-center gap-2 radius-3 h-40\"\r\n [ngClass]=\"{'user-avatar-name px-0 px-md-2': !section?.header?.delegatedTo, 'p-0': section?.header?.delegatedTo}\">\r\n <ds-avatar image=\"{{section?.header?.personToThumbnail}}\" size=\"small\" class=\"user-avatar\"></ds-avatar>\r\n <span\r\n class=\"fs-14 fw-medium d-inline-block panel-user-name text-truncate\" [ngClass]=\"{'panel-user-only': !section?.header?.delegatedTo}\"\r\n *ngIf=\"!section?.header?.delegatedTo\">{{ section?.header?.personTo }}</span>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"section?.header?.delegatedTo\" class=\"d-flex align-items-center gap-3\"\r\n (click)=\"toggleSmallProfileInfo($event, 'delegate')\">\r\n <img\r\n class=\"rotate-arrow\"\r\n alt=\"\"\r\n src=\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMSIgaGVpZ2h0PSIxMyIgdmlld0JveD0iMCAwIDIxIDEzIj48cGF0aCBkPSJNMjEsNy43NjNhMS42MjEsMS42MjEsMCwwLDEtLjQ0Ny41OTMsMS4zMDYsMS4zMDYsMCwwLDEtLjc1LjE5NGMtNy4yODQsMC04LjU2OCwwLTE1Ljg1MywwSDMuNjY5TDMuNjMsOC42Yy4wNzcuMDY0LjE1OC4xMjQuMjI5LjE5NHExLjcxLDEuNjksMy40MiwzLjM4MWExLjAyMywxLjAyMywwLDAsMSwuMjkxLDEuMDc5Ljk5Mi45OTIsMCwwLDEtLjguNzE5LDEuMDUzLDEuMDUzLDAsMCwxLTEtLjMzMVEzLjgzMSwxMS43MTksMS44ODYsOS44Yy0uNDQyLS40MzctLjg3OS0uODgxLTEuMzMtMS4zMDlBNC41NzIsNC41NzIsMCwwLDEsMCw3LjgxNFY3LjE4NUEzMC43ODMsMzAuNzgzLDAsMCwxLDIuNzMsNC4zNzFjMS0xLjAyNywyLjAzOC0yLjAyNSwzLjA2My0zLjAzMkExLjA0OSwxLjA0OSwwLDEsMSw3LjI3NywyLjgyQzYuNCwzLjcsNS41MDksNC41Nyw0LjYyNSw1LjQ0NmMtLjMyMy4zMjEtLjY0NC42NDUtLjk3My45NzYuMDg0LjA1OS4xODEuMDI3LjI3LjAyNyw3LjI1OCwwLDguNTE2LDAsMTUuNzc1LDBBMS4xMjksMS4xMjksMCwwLDEsMjEsNy4yOXYuNDcyWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAtMC45OTkpIiBmaWxsPSIjYTU0ZWUxIi8+PC9zdmc+\"/>\r\n <div class=\"d-flex align-items-center gap-2 px-0 px-md-2 radius-3 user-avatar-name h-40\">\r\n <ds-avatar image=\"{{section?.header?.delegatedToThumbnail}}\" size=\"small\" class=\"user-avatar\"></ds-avatar>\r\n <span\r\n class=\"fs-14 fw-medium d-inline-block panel-user-name text-truncate\">{{ section?.header?.delegatedTo }}</span>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ds-status\r\n class=\"main-status\" *ngIf=\"section?.body?.details?.['decision']?.key;\"\r\n status=\"{{statusClass(section?.body?.details?.['decision']?.key)}}\">{{ section?.body?.details?.['decision']?.value }}\r\n </ds-status>\r\n </div>\r\n\r\n <div class=\"approval-panel-toggle\">\r\n <ds-icon icon=\"plus-1\" class=\"fs-20 fc-coral\" *ngIf=\"!approvalPanel.expanded\"></ds-icon>\r\n <ds-icon icon=\"minus\" class=\"fs-20 fc-dark-gray\" *ngIf=\"approvalPanel.expanded\"></ds-icon>\r\n </div>\r\n\r\n </div>\r\n </mat-expansion-panel-header>\r\n <section class=\"border-top pt-4\">\r\n <ng-container *ngComponentOutlet=\"sectionFormComponent; ndcDynamicInputs: input\"></ng-container>\r\n </section>\r\n\r\n</mat-expansion-panel>\r\n<ng-container *ngIf=\"form?.header?.status?.['key'] == 'NEW' \">\r\n <ng-container *ngComponentOutlet=\"sectionFormComponent; ndcDynamicInputs: input\"></ng-container>\r\n</ng-container>\r\n", styles: [":host ::ng-deep .mat-expansion-panel-content{background:#fff!important}:host .mat-expansion-panel-content{background:#fff!important}:host .approval-panel-container{display:grid;grid-template-columns:40% calc(60% - 45px) 20px;grid-template-areas:\"title details toggle\";gap:.75rem;place-content:space-between;align-items:center;flex-grow:1;width:100%}@media (max-width: 991px){:host .approval-panel-container{grid-template-columns:calc(100% - 45px) 20px;grid-template-areas:\"title toggle\" \"details details\"}}:host .approval-panel-container .approval-panel-title{grid-area:title}:host .approval-panel-container .panel-user-name{max-width:120px}@media (max-width: 768px){:host .approval-panel-container .panel-user-name.panel-ueser-only{max-width:140px}:host .approval-panel-container .panel-user-name:not(.panel-ueser-only){max-width:90px}}:host .approval-panel-container .approval-panel-details{display:flex;align-items:center;justify-content:space-between;grid-area:details}:host .approval-panel-container .approval-panel-toggle{grid-area:toggle;display:flex;align-items:center;justify-content:center;width:20px}:host ::ng-deep ds-avatar.user-avatar .avatar{--default-size: 25px}@media (min-width: 768px){:host ::ng-deep ds-avatar.user-avatar .avatar{--default-size: 31px;--avatar-border: 3px solid var(--light-gray)}}@media (min-width: 768px){:host ::ng-deep .user-avatar-name{padding-inline-end:1rem!important}}:host .circle-status::part(base){--status-radius: 50%;--status-size: 18px;--status-fs: 80% }:host .panel-title{min-width:40%;width:40%}@media (max-width: 576px){:host .panel-title{min-width:100%!important;width:100%!important}}:host .panel-user-status{min-width:60%;width:60%;display:flex;align-items:center;justify-content:space-between}@media (max-width: 576px){:host .panel-user-status{min-width:100%!important;width:100%!important}:host .panel-user-status .user-delegate{min-width:auto}:host .panel-user-status .main-status::part(base){--status-width: 50px}}\n"], dependencies: [{ kind: "ngmodule", type: MatExpansionModule }, { kind: "component", type: i2.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i2.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "directive", type: ComponentOutletIoDirective, selector: "[ngComponentOutletNdcDynamicInputs],[ngComponentOutletNdcDynamicOutputs]", inputs: ["ngComponentOutletNdcDynamicInputs", "ngComponentOutletNdcDynamicOutputs"], exportAs: ["ndcDynamicIo"] }, { kind: "ngmodule", type: SatPopoverModule }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: DynamicModule }, { kind: "directive", type: i3.ComponentOutletInjectorDirective, selector: "[ngComponentOutlet]", exportAs: ["ndcComponentOutletInjector"] }] });
220
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.8", type: FormSectionComponent, isStandalone: true, selector: "app-form-section", inputs: { requestDetails: "requestDetails", section: "section", form: "form", lov: "lov", isReadOnly: "isReadOnly", controllers: "controllers", segmentDynamicLoaderService: "segmentDynamicLoaderService", sectionFormComponent: "sectionFormComponent", sectionName: "sectionName" }, ngImport: i0, template: "<mat-expansion-panel class=\"mb-4\" [expanded]=\"isExpanded\" hideToggle #approvalPanel=\"matExpansionPanel\">\r\n <mat-expansion-panel-header>\r\n\r\n <div class=\"approval-panel-container\">\r\n <div class=\"d-flex gap-2 flex-grow-1 approval-panel-title\">\r\n <ds-status\r\n status=\"{{statusClass(sectionStatusKey)}}\" no-opacity icon\r\n class=\"circle-status d-none d-sm-inline-block\">\r\n <ds-icon icon=\"{{statusIcon(sectionStatusKey)}}\"></ds-icon>\r\n </ds-status>\r\n <div class=\"d-flex flex-column flex-grow-1\">\r\n <span class=\"fs-16 fw-medium m-0\"> {{ sectionName }}</span>\r\n @if (section.header?.processedBy) {\r\n <bdi class=\"fs-12 fc-dark-gray fw-normal line-height-1 d-block mt-1\">\r\n {{ processingDate }}\r\n </bdi>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"approval-panel-details gap-1\">\r\n @if (!section?.body?.details?.['stage0']?.['isStage0'] || section?.body?.details?.['stage0']?.['isStage0'] === 'false') {\r\n <ng-container>\r\n @if (section?.header?.personTo) {\r\n <div\r\n class=\"d-flex align-items-center gap-3\"\r\n (click)=\"$event.stopImmediatePropagation();\">\r\n <div\r\n (click)=\"toggleSmallProfileInfo($event, 'recipient')\"\r\n class=\"d-flex align-items-center gap-2 radius-3 h-40\"\r\n [ngClass]=\"{'user-avatar-name px-0 px-md-2': !section?.header?.delegatedTo, 'p-0': section?.header?.delegatedTo}\">\r\n <ds-avatar image=\"{{section?.header?.personToThumbnail}}\" size=\"small\" class=\"user-avatar\"></ds-avatar>\r\n @if (!section?.header?.delegatedTo) {\r\n <span\r\n class=\"fs-14 fw-medium d-inline-block panel-user-name text-truncate\"\r\n [ngClass]=\"{'panel-user-only': !section?.header?.delegatedTo}\"\r\n >{{ section?.header?.personTo }}</span>\r\n }\r\n </div>\r\n @if (section?.header?.delegatedTo) {\r\n <div\r\n class=\"d-flex align-items-center gap-3\"\r\n (click)=\"toggleSmallProfileInfo($event, 'delegate')\">\r\n <img\r\n class=\"rotate-arrow\"\r\n alt=\"\"\r\n src=\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMSIgaGVpZ2h0PSIxMyIgdmlld0JveD0iMCAwIDIxIDEzIj48cGF0aCBkPSJNMjEsNy43NjNhMS42MjEsMS42MjEsMCwwLDEtLjQ0Ny41OTMsMS4zMDYsMS4zMDYsMCwwLDEtLjc1LjE5NGMtNy4yODQsMC04LjU2OCwwLTE1Ljg1MywwSDMuNjY5TDMuNjMsOC42Yy4wNzcuMDY0LjE1OC4xMjQuMjI5LjE5NHExLjcxLDEuNjksMy40MiwzLjM4MWExLjAyMywxLjAyMywwLDAsMSwuMjkxLDEuMDc5Ljk5Mi45OTIsMCwwLDEtLjguNzE5LDEuMDUzLDEuMDUzLDAsMCwxLTEtLjMzMVEzLjgzMSwxMS43MTksMS44ODYsOS44Yy0uNDQyLS40MzctLjg3OS0uODgxLTEuMzMtMS4zMDlBNC41NzIsNC41NzIsMCwwLDEsMCw3LjgxNFY3LjE4NUEzMC43ODMsMzAuNzgzLDAsMCwxLDIuNzMsNC4zNzFjMS0xLjAyNywyLjAzOC0yLjAyNSwzLjA2My0zLjAzMkExLjA0OSwxLjA0OSwwLDEsMSw3LjI3NywyLjgyQzYuNCwzLjcsNS41MDksNC41Nyw0LjYyNSw1LjQ0NmMtLjMyMy4zMjEtLjY0NC42NDUtLjk3My45NzYuMDg0LjA1OS4xODEuMDI3LjI3LjAyNyw3LjI1OCwwLDguNTE2LDAsMTUuNzc1LDBBMS4xMjksMS4xMjksMCwwLDEsMjEsNy4yOXYuNDcyWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAtMC45OTkpIiBmaWxsPSIjYTU0ZWUxIi8+PC9zdmc+\"/>\r\n <div class=\"d-flex align-items-center gap-2 px-0 px-md-2 radius-3 user-avatar-name h-40\">\r\n <ds-avatar image=\"{{section?.header?.delegatedToThumbnail}}\" size=\"small\" class=\"user-avatar\"></ds-avatar>\r\n <span\r\n class=\"fs-14 fw-medium d-inline-block panel-user-name text-truncate\">{{ section?.header?.delegatedTo }}</span>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </ng-container>\r\n }\r\n\r\n @if (section?.body?.details?.['decision']?.key) {\r\n <ds-status\r\n class=\"main-status\"\r\n status=\"{{statusClass(section?.body?.details?.['decision']?.key)}}\">{{ section?.body?.details?.['decision']?.value }}\r\n </ds-status>\r\n }\r\n </div>\r\n\r\n <div class=\"approval-panel-toggle\">\r\n @if (approvalPanel.expanded) {\r\n <ds-icon icon=\"minus\" class=\"fs-20 fc-dark-gray\"></ds-icon>\r\n } @else {\r\n <ds-icon icon=\"plus-1\" class=\"fs-20 fc-coral\"></ds-icon>\r\n }\r\n </div>\r\n\r\n </div>\r\n </mat-expansion-panel-header>\r\n <section class=\"border-top pt-4\">\r\n <ng-container *ngComponentOutlet=\"sectionFormComponent; ndcDynamicInputs: input\"></ng-container>\r\n </section>\r\n\r\n</mat-expansion-panel>\r\n", styles: [":host ::ng-deep .mat-expansion-panel-content{background:#fff!important}:host .mat-expansion-panel-content{background:#fff!important}:host .approval-panel-container{display:grid;grid-template-columns:40% calc(60% - 45px) 20px;grid-template-areas:\"title details toggle\";gap:.75rem;place-content:space-between;align-items:center;flex-grow:1;width:100%}@media (max-width: 991px){:host .approval-panel-container{grid-template-columns:calc(100% - 45px) 20px;grid-template-areas:\"title toggle\" \"details details\"}}:host .approval-panel-container .approval-panel-title{grid-area:title}:host .approval-panel-container .panel-user-name{max-width:120px}@media (max-width: 768px){:host .approval-panel-container .panel-user-name.panel-ueser-only{max-width:140px}:host .approval-panel-container .panel-user-name:not(.panel-ueser-only){max-width:90px}}:host .approval-panel-container .approval-panel-details{display:flex;align-items:center;justify-content:space-between;grid-area:details}:host .approval-panel-container .approval-panel-toggle{grid-area:toggle;display:flex;align-items:center;justify-content:center;width:20px}:host ::ng-deep ds-avatar.user-avatar .avatar{--default-size: 25px}@media (min-width: 768px){:host ::ng-deep ds-avatar.user-avatar .avatar{--default-size: 31px;--avatar-border: 3px solid var(--light-gray)}}@media (min-width: 768px){:host ::ng-deep .user-avatar-name{padding-inline-end:1rem!important}}:host .circle-status::part(base){--status-radius: 50%;--status-size: 18px;--status-fs: 80% }:host .panel-title{min-width:40%;width:40%}@media (max-width: 576px){:host .panel-title{min-width:100%!important;width:100%!important}}:host .panel-user-status{min-width:60%;width:60%;display:flex;align-items:center;justify-content:space-between}@media (max-width: 576px){:host .panel-user-status{min-width:100%!important;width:100%!important}:host .panel-user-status .user-delegate{min-width:auto}:host .panel-user-status .main-status::part(base){--status-width: 50px}}\n"], dependencies: [{ kind: "ngmodule", type: MatExpansionModule }, { kind: "component", type: i2.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i2.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "directive", type: ComponentOutletIoDirective, selector: "[ngComponentOutletNdcDynamicInputs],[ngComponentOutletNdcDynamicOutputs]", inputs: ["ngComponentOutletNdcDynamicInputs", "ngComponentOutletNdcDynamicOutputs"], exportAs: ["ndcDynamicIo"] }, { kind: "ngmodule", type: SatPopoverModule }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: DynamicModule }, { kind: "directive", type: i3.ComponentOutletInjectorDirective, selector: "[ngComponentOutlet]", exportAs: ["ndcComponentOutletInjector"] }] });
153
221
  }
154
222
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: FormSectionComponent, decorators: [{
155
223
  type: Component,
@@ -162,7 +230,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
162
230
  SatPopoverModule,
163
231
  NgClass,
164
232
  DynamicModule
165
- ], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "<mat-expansion-panel\r\n class=\"mb-4\" [expanded]=\"isExpanded\" *ngIf=\"form?.header?.status?.['key'] !== 'NEW' \" hideToggle\r\n #approvalPanel=\"matExpansionPanel\">\r\n <mat-expansion-panel-header>\r\n\r\n <div class=\"approval-panel-container\">\r\n <div class=\"d-flex gap-2 flex-grow-1 approval-panel-title\">\r\n <ds-status\r\n status=\"{{statusClass(sectionStatusKey)}}\" no-opacity icon\r\n class=\"circle-status d-none d-sm-inline-block\">\r\n <ds-icon icon=\"{{statusIcon(sectionStatusKey)}}\"></ds-icon>\r\n </ds-status>\r\n <div class=\"d-flex flex-column flex-grow-1\">\r\n <span class=\"fs-16 fw-medium m-0\"> {{ sectionName }}</span>\r\n <bdi class=\"fs-12 fc-dark-gray fw-normal line-height-1 d-block mt-1\" *ngIf=\"section.header?.processedBy\">\r\n {{ processingDate }}\r\n </bdi>\r\n </div>\r\n </div>\r\n <div class=\"approval-panel-details gap-1\">\r\n\r\n <ng-container *ngIf=\"(!section?.body?.details?.['stage0']?.['isStage0'] || section?.body?.details?.['stage0']?.['isStage0'] === 'false')\">\r\n <div\r\n class=\"d-flex align-items-center gap-3\" *ngIf=\"section?.header?.personTo;\"\r\n (click)=\"$event.stopImmediatePropagation();\">\r\n <div\r\n (click)=\"toggleSmallProfileInfo($event, 'recipient')\"\r\n class=\"d-flex align-items-center gap-2 radius-3 h-40\"\r\n [ngClass]=\"{'user-avatar-name px-0 px-md-2': !section?.header?.delegatedTo, 'p-0': section?.header?.delegatedTo}\">\r\n <ds-avatar image=\"{{section?.header?.personToThumbnail}}\" size=\"small\" class=\"user-avatar\"></ds-avatar>\r\n <span\r\n class=\"fs-14 fw-medium d-inline-block panel-user-name text-truncate\" [ngClass]=\"{'panel-user-only': !section?.header?.delegatedTo}\"\r\n *ngIf=\"!section?.header?.delegatedTo\">{{ section?.header?.personTo }}</span>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"section?.header?.delegatedTo\" class=\"d-flex align-items-center gap-3\"\r\n (click)=\"toggleSmallProfileInfo($event, 'delegate')\">\r\n <img\r\n class=\"rotate-arrow\"\r\n alt=\"\"\r\n src=\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMSIgaGVpZ2h0PSIxMyIgdmlld0JveD0iMCAwIDIxIDEzIj48cGF0aCBkPSJNMjEsNy43NjNhMS42MjEsMS42MjEsMCwwLDEtLjQ0Ny41OTMsMS4zMDYsMS4zMDYsMCwwLDEtLjc1LjE5NGMtNy4yODQsMC04LjU2OCwwLTE1Ljg1MywwSDMuNjY5TDMuNjMsOC42Yy4wNzcuMDY0LjE1OC4xMjQuMjI5LjE5NHExLjcxLDEuNjksMy40MiwzLjM4MWExLjAyMywxLjAyMywwLDAsMSwuMjkxLDEuMDc5Ljk5Mi45OTIsMCwwLDEtLjguNzE5LDEuMDUzLDEuMDUzLDAsMCwxLTEtLjMzMVEzLjgzMSwxMS43MTksMS44ODYsOS44Yy0uNDQyLS40MzctLjg3OS0uODgxLTEuMzMtMS4zMDlBNC41NzIsNC41NzIsMCwwLDEsMCw3LjgxNFY3LjE4NUEzMC43ODMsMzAuNzgzLDAsMCwxLDIuNzMsNC4zNzFjMS0xLjAyNywyLjAzOC0yLjAyNSwzLjA2My0zLjAzMkExLjA0OSwxLjA0OSwwLDEsMSw3LjI3NywyLjgyQzYuNCwzLjcsNS41MDksNC41Nyw0LjYyNSw1LjQ0NmMtLjMyMy4zMjEtLjY0NC42NDUtLjk3My45NzYuMDg0LjA1OS4xODEuMDI3LjI3LjAyNyw3LjI1OCwwLDguNTE2LDAsMTUuNzc1LDBBMS4xMjksMS4xMjksMCwwLDEsMjEsNy4yOXYuNDcyWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAtMC45OTkpIiBmaWxsPSIjYTU0ZWUxIi8+PC9zdmc+\"/>\r\n <div class=\"d-flex align-items-center gap-2 px-0 px-md-2 radius-3 user-avatar-name h-40\">\r\n <ds-avatar image=\"{{section?.header?.delegatedToThumbnail}}\" size=\"small\" class=\"user-avatar\"></ds-avatar>\r\n <span\r\n class=\"fs-14 fw-medium d-inline-block panel-user-name text-truncate\">{{ section?.header?.delegatedTo }}</span>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ds-status\r\n class=\"main-status\" *ngIf=\"section?.body?.details?.['decision']?.key;\"\r\n status=\"{{statusClass(section?.body?.details?.['decision']?.key)}}\">{{ section?.body?.details?.['decision']?.value }}\r\n </ds-status>\r\n </div>\r\n\r\n <div class=\"approval-panel-toggle\">\r\n <ds-icon icon=\"plus-1\" class=\"fs-20 fc-coral\" *ngIf=\"!approvalPanel.expanded\"></ds-icon>\r\n <ds-icon icon=\"minus\" class=\"fs-20 fc-dark-gray\" *ngIf=\"approvalPanel.expanded\"></ds-icon>\r\n </div>\r\n\r\n </div>\r\n </mat-expansion-panel-header>\r\n <section class=\"border-top pt-4\">\r\n <ng-container *ngComponentOutlet=\"sectionFormComponent; ndcDynamicInputs: input\"></ng-container>\r\n </section>\r\n\r\n</mat-expansion-panel>\r\n<ng-container *ngIf=\"form?.header?.status?.['key'] == 'NEW' \">\r\n <ng-container *ngComponentOutlet=\"sectionFormComponent; ndcDynamicInputs: input\"></ng-container>\r\n</ng-container>\r\n", styles: [":host ::ng-deep .mat-expansion-panel-content{background:#fff!important}:host .mat-expansion-panel-content{background:#fff!important}:host .approval-panel-container{display:grid;grid-template-columns:40% calc(60% - 45px) 20px;grid-template-areas:\"title details toggle\";gap:.75rem;place-content:space-between;align-items:center;flex-grow:1;width:100%}@media (max-width: 991px){:host .approval-panel-container{grid-template-columns:calc(100% - 45px) 20px;grid-template-areas:\"title toggle\" \"details details\"}}:host .approval-panel-container .approval-panel-title{grid-area:title}:host .approval-panel-container .panel-user-name{max-width:120px}@media (max-width: 768px){:host .approval-panel-container .panel-user-name.panel-ueser-only{max-width:140px}:host .approval-panel-container .panel-user-name:not(.panel-ueser-only){max-width:90px}}:host .approval-panel-container .approval-panel-details{display:flex;align-items:center;justify-content:space-between;grid-area:details}:host .approval-panel-container .approval-panel-toggle{grid-area:toggle;display:flex;align-items:center;justify-content:center;width:20px}:host ::ng-deep ds-avatar.user-avatar .avatar{--default-size: 25px}@media (min-width: 768px){:host ::ng-deep ds-avatar.user-avatar .avatar{--default-size: 31px;--avatar-border: 3px solid var(--light-gray)}}@media (min-width: 768px){:host ::ng-deep .user-avatar-name{padding-inline-end:1rem!important}}:host .circle-status::part(base){--status-radius: 50%;--status-size: 18px;--status-fs: 80% }:host .panel-title{min-width:40%;width:40%}@media (max-width: 576px){:host .panel-title{min-width:100%!important;width:100%!important}}:host .panel-user-status{min-width:60%;width:60%;display:flex;align-items:center;justify-content:space-between}@media (max-width: 576px){:host .panel-user-status{min-width:100%!important;width:100%!important}:host .panel-user-status .user-delegate{min-width:auto}:host .panel-user-status .main-status::part(base){--status-width: 50px}}\n"] }]
233
+ ], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "<mat-expansion-panel class=\"mb-4\" [expanded]=\"isExpanded\" hideToggle #approvalPanel=\"matExpansionPanel\">\r\n <mat-expansion-panel-header>\r\n\r\n <div class=\"approval-panel-container\">\r\n <div class=\"d-flex gap-2 flex-grow-1 approval-panel-title\">\r\n <ds-status\r\n status=\"{{statusClass(sectionStatusKey)}}\" no-opacity icon\r\n class=\"circle-status d-none d-sm-inline-block\">\r\n <ds-icon icon=\"{{statusIcon(sectionStatusKey)}}\"></ds-icon>\r\n </ds-status>\r\n <div class=\"d-flex flex-column flex-grow-1\">\r\n <span class=\"fs-16 fw-medium m-0\"> {{ sectionName }}</span>\r\n @if (section.header?.processedBy) {\r\n <bdi class=\"fs-12 fc-dark-gray fw-normal line-height-1 d-block mt-1\">\r\n {{ processingDate }}\r\n </bdi>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"approval-panel-details gap-1\">\r\n @if (!section?.body?.details?.['stage0']?.['isStage0'] || section?.body?.details?.['stage0']?.['isStage0'] === 'false') {\r\n <ng-container>\r\n @if (section?.header?.personTo) {\r\n <div\r\n class=\"d-flex align-items-center gap-3\"\r\n (click)=\"$event.stopImmediatePropagation();\">\r\n <div\r\n (click)=\"toggleSmallProfileInfo($event, 'recipient')\"\r\n class=\"d-flex align-items-center gap-2 radius-3 h-40\"\r\n [ngClass]=\"{'user-avatar-name px-0 px-md-2': !section?.header?.delegatedTo, 'p-0': section?.header?.delegatedTo}\">\r\n <ds-avatar image=\"{{section?.header?.personToThumbnail}}\" size=\"small\" class=\"user-avatar\"></ds-avatar>\r\n @if (!section?.header?.delegatedTo) {\r\n <span\r\n class=\"fs-14 fw-medium d-inline-block panel-user-name text-truncate\"\r\n [ngClass]=\"{'panel-user-only': !section?.header?.delegatedTo}\"\r\n >{{ section?.header?.personTo }}</span>\r\n }\r\n </div>\r\n @if (section?.header?.delegatedTo) {\r\n <div\r\n class=\"d-flex align-items-center gap-3\"\r\n (click)=\"toggleSmallProfileInfo($event, 'delegate')\">\r\n <img\r\n class=\"rotate-arrow\"\r\n alt=\"\"\r\n src=\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMSIgaGVpZ2h0PSIxMyIgdmlld0JveD0iMCAwIDIxIDEzIj48cGF0aCBkPSJNMjEsNy43NjNhMS42MjEsMS42MjEsMCwwLDEtLjQ0Ny41OTMsMS4zMDYsMS4zMDYsMCwwLDEtLjc1LjE5NGMtNy4yODQsMC04LjU2OCwwLTE1Ljg1MywwSDMuNjY5TDMuNjMsOC42Yy4wNzcuMDY0LjE1OC4xMjQuMjI5LjE5NHExLjcxLDEuNjksMy40MiwzLjM4MWExLjAyMywxLjAyMywwLDAsMSwuMjkxLDEuMDc5Ljk5Mi45OTIsMCwwLDEtLjguNzE5LDEuMDUzLDEuMDUzLDAsMCwxLTEtLjMzMVEzLjgzMSwxMS43MTksMS44ODYsOS44Yy0uNDQyLS40MzctLjg3OS0uODgxLTEuMzMtMS4zMDlBNC41NzIsNC41NzIsMCwwLDEsMCw3LjgxNFY3LjE4NUEzMC43ODMsMzAuNzgzLDAsMCwxLDIuNzMsNC4zNzFjMS0xLjAyNywyLjAzOC0yLjAyNSwzLjA2My0zLjAzMkExLjA0OSwxLjA0OSwwLDEsMSw3LjI3NywyLjgyQzYuNCwzLjcsNS41MDksNC41Nyw0LjYyNSw1LjQ0NmMtLjMyMy4zMjEtLjY0NC42NDUtLjk3My45NzYuMDg0LjA1OS4xODEuMDI3LjI3LjAyNyw3LjI1OCwwLDguNTE2LDAsMTUuNzc1LDBBMS4xMjksMS4xMjksMCwwLDEsMjEsNy4yOXYuNDcyWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAtMC45OTkpIiBmaWxsPSIjYTU0ZWUxIi8+PC9zdmc+\"/>\r\n <div class=\"d-flex align-items-center gap-2 px-0 px-md-2 radius-3 user-avatar-name h-40\">\r\n <ds-avatar image=\"{{section?.header?.delegatedToThumbnail}}\" size=\"small\" class=\"user-avatar\"></ds-avatar>\r\n <span\r\n class=\"fs-14 fw-medium d-inline-block panel-user-name text-truncate\">{{ section?.header?.delegatedTo }}</span>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </ng-container>\r\n }\r\n\r\n @if (section?.body?.details?.['decision']?.key) {\r\n <ds-status\r\n class=\"main-status\"\r\n status=\"{{statusClass(section?.body?.details?.['decision']?.key)}}\">{{ section?.body?.details?.['decision']?.value }}\r\n </ds-status>\r\n }\r\n </div>\r\n\r\n <div class=\"approval-panel-toggle\">\r\n @if (approvalPanel.expanded) {\r\n <ds-icon icon=\"minus\" class=\"fs-20 fc-dark-gray\"></ds-icon>\r\n } @else {\r\n <ds-icon icon=\"plus-1\" class=\"fs-20 fc-coral\"></ds-icon>\r\n }\r\n </div>\r\n\r\n </div>\r\n </mat-expansion-panel-header>\r\n <section class=\"border-top pt-4\">\r\n <ng-container *ngComponentOutlet=\"sectionFormComponent; ndcDynamicInputs: input\"></ng-container>\r\n </section>\r\n\r\n</mat-expansion-panel>\r\n", styles: [":host ::ng-deep .mat-expansion-panel-content{background:#fff!important}:host .mat-expansion-panel-content{background:#fff!important}:host .approval-panel-container{display:grid;grid-template-columns:40% calc(60% - 45px) 20px;grid-template-areas:\"title details toggle\";gap:.75rem;place-content:space-between;align-items:center;flex-grow:1;width:100%}@media (max-width: 991px){:host .approval-panel-container{grid-template-columns:calc(100% - 45px) 20px;grid-template-areas:\"title toggle\" \"details details\"}}:host .approval-panel-container .approval-panel-title{grid-area:title}:host .approval-panel-container .panel-user-name{max-width:120px}@media (max-width: 768px){:host .approval-panel-container .panel-user-name.panel-ueser-only{max-width:140px}:host .approval-panel-container .panel-user-name:not(.panel-ueser-only){max-width:90px}}:host .approval-panel-container .approval-panel-details{display:flex;align-items:center;justify-content:space-between;grid-area:details}:host .approval-panel-container .approval-panel-toggle{grid-area:toggle;display:flex;align-items:center;justify-content:center;width:20px}:host ::ng-deep ds-avatar.user-avatar .avatar{--default-size: 25px}@media (min-width: 768px){:host ::ng-deep ds-avatar.user-avatar .avatar{--default-size: 31px;--avatar-border: 3px solid var(--light-gray)}}@media (min-width: 768px){:host ::ng-deep .user-avatar-name{padding-inline-end:1rem!important}}:host .circle-status::part(base){--status-radius: 50%;--status-size: 18px;--status-fs: 80% }:host .panel-title{min-width:40%;width:40%}@media (max-width: 576px){:host .panel-title{min-width:100%!important;width:100%!important}}:host .panel-user-status{min-width:60%;width:60%;display:flex;align-items:center;justify-content:space-between}@media (max-width: 576px){:host .panel-user-status{min-width:100%!important;width:100%!important}:host .panel-user-status .user-delegate{min-width:auto}:host .panel-user-status .main-status::part(base){--status-width: 50px}}\n"] }]
166
234
  }], ctorParameters: () => [{ type: i1.CoreI18nService }, { type: i1.CoreService }, { type: i1.SidenavService }], propDecorators: { requestDetails: [{
167
235
  type: Input
168
236
  }], section: [{
@@ -182,4 +250,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
182
250
  }], sectionName: [{
183
251
  type: Input
184
252
  }] } });
185
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1zZWN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JwbS1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9hcHAtY29tcG9uZW50LXNlY3Rpb25zL2Zvcm0tc2VjdGlvbi9mb3JtLXNlY3Rpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL2FwcC1jb21wb25lbnQtc2VjdGlvbnMvZm9ybS1zZWN0aW9uL2Zvcm0tc2VjdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWtDLFNBQVMsRUFBRSxzQkFBc0IsRUFBRSxLQUFLLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBRTNILE9BQU8sRUFBQywwQkFBMEIsRUFBRSxhQUFhLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRSxPQUFPLEVBQUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ2pFLE9BQU8sRUFBQyxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ2xGLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sRUFBTyxlQUFlLEVBQVUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRSxPQUFPLEtBQUssU0FBUyxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sS0FBSyxNQUFNLE1BQU0sUUFBUSxDQUFBO0FBQ2hDLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLDhDQUE4QyxDQUFDOzs7OztBQW1CckYsTUFBTSxPQUFPLG9CQUFvQjtJQW9DdEI7SUFDVTtJQUNBO0lBcENuQixRQUFRLEdBQUcsV0FBVyxDQUFDO0lBQ3ZCLHVDQUF1QztJQUN2QyxXQUFXLEdBQUcsV0FBVyxD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QU94QixjQUFjO3NCQUF0QixLQUFLO2dCQUVHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBR0csV0FBVztzQkFBbkIsS0FBSztnQkFDRywyQkFBMkI7c0JBQW5DLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FmdGVyVmlld0NoZWNrZWQsIEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgSW5wdXQsIE9uSW5pdCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtDb3JlSTE4blNlcnZpY2UsIENvcmVTZXJ2aWNlLCBTaWRlbmF2U2VydmljZX0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xyXG5pbXBvcnQge0NvbXBvbmVudE91dGxldElvRGlyZWN0aXZlLCBEeW5hbWljTW9kdWxlfSBmcm9tICduZy1keW5hbWljLWNvbXBvbmVudCc7XHJcbmltcG9ydCB7TmdDbGFzcywgTmdDb21wb25lbnRPdXRsZXQsIE5nSWZ9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7TWF0RXhwYW5zaW9uTW9kdWxlLCBNYXRFeHBhbnNpb25QYW5lbH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZXhwYW5zaW9uJztcclxuaW1wb3J0IHtTYXRQb3BvdmVyTW9kdWxlfSBmcm9tICdAbmNzdGF0ZS9zYXQtcG9wb3Zlcic7XHJcbmltcG9ydCB7Rm9ybSwgUHJvZmlsZUluZm9Ecm9wLCBTZWN0aW9ufSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0ICogYXMgQ29uc3RhbnRzIGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cyc7XHJcbmltcG9ydCAqIGFzIG1vbWVudCBmcm9tICdtb21lbnQnXHJcbmltcG9ydCB7UHJvZmlsZVNlY3Rpb25Db21wb25lbnR9IGZyb20gXCIuLi9wcm9maWxlLXNlY3Rpb24vcHJvZmlsZS1zZWN0aW9uLmNvbXBvbmVudFwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtZm9ybS1zZWN0aW9uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZm9ybS1zZWN0aW9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9mb3JtLXNlY3Rpb24uY29tcG9uZW50LnNjc3MnXSxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIE1hdEV4cGFuc2lvbk1vZHVsZSxcclxuICAgIE1hdEV4cGFuc2lvblBhbmVsLFxyXG4gICAgTmdJZixcclxuICAgIE5nQ29tcG9uZW50T3V0bGV0LFxyXG4gICAgQ29tcG9uZW50T3V0bGV0SW9EaXJlY3RpdmUsXHJcbiAgICBTYXRQb3BvdmVyTW9kdWxlLFxyXG4gICAgTmdDbGFzcyxcclxuICAgIER5bmFtaWNNb2R1bGVcclxuICBdLFxyXG4gIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRm9ybVNlY3Rpb25Db21wb25lbnRcclxuICBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgdXNlclR5cGUgPSAncmVjaXBpZW50JztcclxuICAvLyBAVmlld0NoaWxkKCdwb3BvdmVyJykgcG9wb3Zlcj86IGFueTtcclxuICBwb3BvdmVyVHlwZSA9ICdyZWNpcGllbnQnO1xyXG4gIEBJbnB1dCgpIHJlcXVlc3REZXRhaWxzOiBTZWN0aW9uO1xyXG4gIHVzZXJQb3BvdmVySW5mbzogYW55ID0ge307XHJcbiAgQElucHV0KCkgc2VjdGlvbjogU2VjdGlvbjtcclxuICBASW5wdXQoKSBmb3JtOiBGb3JtO1xyXG4gIEBJbnB1dCgpIGxvdjogYW55O1xyXG4gIEBJbnB1dCgpIGlzUmVhZE9ubHk6IGJvb2xlYW47XHJcbiAgLy8gQElucHV0KCkgaXNPcGVuOiBib29sZWFuO1xyXG4gIC8vIEBJbnB1dCgpIGlzRmluYWxBcHByb3ZhbDogYm9vbGVhbjtcclxuICBASW5wdXQoKSBjb250cm9sbGVyczogYW55O1xyXG4gIEBJbnB1dCgpIHNlZ21lbnREeW5hbWljTG9hZGVyU2VydmljZTogYW55O1xyXG4gIEBJbnB1dCgpIHNlY3Rpb25Gb3JtQ29tcG9uZW50OiBhbnkgPSBudWxsO1xyXG4gIEBJbnB1dCgpIHNlY3Rpb25OYW1lID0gJ1NFQ1RJT05fTkFNRS5yZXF1ZXN0RGV0YWlscyc7XHJcbiAgc2VjdGlvbk51bWJlcjogbnVtYmVyO1xyXG4gIHNlY3Rpb25TdGF0dXNWYWx1ZTogc3RyaW5nO1xyXG4gIHNlY3Rpb25TdGF0dXNLZXk6IHN0cmluZztcclxuICByZWNpcGllbnQgPSB7XHJcbiAgICBpc1Nob3dpbmc6IGZhbHNlLFxyXG4gICAgcHJvZmlsZTogbnVsbFxyXG4gIH07XHJcbiAgZGVsZWdhdGUgPSB7XHJcbiAgICBpc1Nob3dpbmc6IGZhbHNlLFxyXG4gICAgcHJvZmlsZTogbnVsbFxyXG4gIH07XHJcbiAgcHVibGljIGlucHV0O1xyXG4gIC8vIGhpZ2hsaWdodEZsYWc6IGJvb2xlYW47XHJcblxyXG4gIHByb2Nlc3NpbmdEYXRlOiBzdHJpbmc7XHJcbiAgcHVibGljIHJhbmRvbUlEOiBudW1iZXIgPVxyXG4gICAgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKDk5OTk5OSAtIDEwMDAwMCkpICsgMTAwMDAwO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBpMThuOiBDb3JlSTE4blNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvcmVTZXJ2aWNlOiBDb3JlU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2lkZW5hdlNlcnZpY2U6IFNpZGVuYXZTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICAvLyB0aGlzLmhpZ2hsaWdodEZsYWcgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5zZWN0aW9uRm9ybUNvbXBvbmVudCA9IHRoaXMuc2VnbWVudER5bmFtaWNMb2FkZXJTZXJ2aWNlLmdldENvbXBvbmVudChcclxuICAgICAgdGhpcy5zZWN0aW9uLmlkXHJcbiAgICApO1xyXG4gICAgaWYgKHRoaXMuc2VjdGlvbi5ib2R5LmRldGFpbHMuc3RhZ2VOYW1lKSB7XHJcbiAgICAgIHRoaXMuc2VjdGlvbk5hbWUgPSB0aGlzLnNlY3Rpb24uYm9keS5kZXRhaWxzLnN0YWdlTmFtZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VjdGlvbk5hbWUgPSB0aGlzLnNlZ21lbnREeW5hbWljTG9hZGVyU2VydmljZS5nZXRTZWN0aW9uTmFtZSh0aGlzLnNlY3Rpb24uaWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuaW5wdXQgPSB7XHJcbiAgICAgIGlzUmVhZE9ubHk6IHRoaXMuaXNSZWFkT25seSxcclxuICAgICAgbG92OiB0aGlzLmxvdixcclxuICAgICAgc2VjdGlvbjogdGhpcy5zZWN0aW9uLFxyXG4gICAgICAvLyBjb250cm9sbGVyczogdGhpcy5jb250cm9sbGVycyxcclxuICAgICAgLy8gcmVxdWVzdERldGFpbHM6IHRoaXMucmVxdWVzdERldGFpbHMsXHJcbiAgICAgIGZvcm06dGhpcy5mb3JtXHJcbiAgICB9O1xyXG4gICAgaWYgKHRoaXMuc2VjdGlvbi5oZWFkZXIgJiYgdGhpcy5zZWN0aW9uLmhlYWRlci5wcm9jZXNzaW5nRGF0ZSkge1xyXG4gICAgICB0aGlzLnByb2Nlc3NpbmdEYXRlID0gbW9tZW50KHRoaXMuc2VjdGlvbi5oZWFkZXIucHJvY2Vzc2luZ0RhdGUpXHJcbiAgICAgICAgLmxvY2FsZSgnZW4tVVMnKVxyXG4gICAgICAgIC5mb3JtYXQoJ0REL01NL1lZWVkgSEg6bW06c3MnKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyB0aGlzLmhpZ2hsaWdodEZsYWcgPSB0aGlzLmlzT3BlbjtcclxuICAgIGNvbnN0IHggPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcjY29sbGFwc2UnICsgdGhpcy5zZWN0aW9uSWQoKSk7XHJcbiAgICBpZiAoeC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VjdGlvbk51bWJlciA9IHgubGVuZ3RoO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIGdldCBpc0V4cGFuZGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgaXNFeHBhbmRhYmxlRnJvbUJhY2tlbmQgPSB0aGlzLmZvcm0/LnNlY3Rpb25zPy5sZW5ndGggJiYgdGhpcy5mb3JtLnNlY3Rpb25zLnNvbWUoc2VjdGlvbiA9PiAnZXhwYW5kU3RhZ2UnIGluIHNlY3Rpb24/LmJvZHk/LmRldGFpbHMpO1xyXG4gICAgaWYgKCFpc0V4cGFuZGFibGVGcm9tQmFja2VuZCkgcmV0dXJuIHRydWU7XHJcbiAgICByZXR1cm4gdGhpcy5zZWN0aW9uPy5ib2R5Py5kZXRhaWxzPy5leHBhbmRTdGFnZSA9PT0gJ3RydWUnO1xyXG4gIH1cclxuXHJcbiAgc2VjdGlvbklkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VjdGlvbi5pZC5zcGxpdCgnICcpLmpvaW4oJycpICsgdGhpcy5yYW5kb21JRDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlVXNlclByb2ZpbGVGcm9tUmVzcG9uc2UocmVzcG9uc2U6IGFueSk6IFByb2ZpbGVJbmZvRHJvcCB7XHJcbiAgICByZXR1cm4gbmV3IFByb2ZpbGVJbmZvRHJvcChcclxuICAgICAgZmFsc2UsXHJcbiAgICAgIHJlc3BvbnNlPy5bXCJVc2Vyc1wiXVswXT8uZW1wbG95ZWVOdW1iZXIsXHJcbiAgICAgIHJlc3BvbnNlPy5bXCJVc2Vyc1wiXVswXT8uZW1haWwsXHJcbiAgICAgIHJlc3BvbnNlPy5bXCJVc2Vyc1wiXVswXT8ubmFtZSxcclxuICAgICAgcmVzcG9uc2U/LltcIlVzZXJzXCJdWzBdPy5nZW5lcmFsRGVwYXJ0bWVudD8ubmFtZSxcclxuICAgICAgcmVzcG9uc2U/LltcIlVzZXJzXCJdWzBdPy5wb3NpdGlvbj8ubmFtZSxcclxuICAgICAgcmVzcG9uc2U/LltcIlVzZXJzXCJdWzBdPy5zZWN0b3I/Lm5hbWUsXHJcbiAgICAgIHJlc3BvbnNlPy5bXCJVc2Vyc1wiXVswXT8uZGVwYXJ0bWVudD8ubmFtZSxcclxuICAgICAgcmVzcG9uc2U/LltcIlVzZXJzXCJdWzBdPy5nZW5lcmFsRGVwYXJ0bWVudD8uY29kZSxcclxuICAgICAgcmVzcG9uc2U/LltcIlVzZXJzXCJdWzBdPy5sb2NhdGlvbixcclxuICAgICAgcmVzcG9uc2U/LltcIlVzZXJzXCJdWzBdPy5uYXRpb25hbGl0eT8uZGVzYyxcclxuICAgICAgcmVzcG9uc2U/LltcIlVzZXJzXCJdWzBdPy5jb250YWN0Py5tb2JpbGUsXHJcbiAgICAgIHJlc3BvbnNlPy5bXCJVc2Vyc1wiXVswXT8ubWFuYWdlcj8ubmFtZSxcclxuICAgICAgcmVzcG9uc2U/LltcIlVzZXJzXCJdWzBdPy5zZW5pb3JTZWN0b3JOYW1lPy5uYW1lXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvcGVuT3JDcmVhdGVVc2VyUHJvZmlsZSh1c2VyRGF0YTogUHJvZmlsZUluZm9Ecm9wLCBwZXJzb25UeXBlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc2lkZW5hdlNlcnZpY2UuZGF0YSA9IHVzZXJEYXRhO1xyXG4gICAgdGhpcy51c2VyUG9wb3ZlckluZm8gPSB1c2VyRGF0YTtcclxuICAgIHRoaXNbcGVyc29uVHlwZV0ucHJvZmlsZSA9IHVzZXJEYXRhO1xyXG4gICAgdGhpcy5zaWRlbmF2U2VydmljZS5wdWJsaXNoKCdvcGVuJywgUHJvZmlsZVNlY3Rpb25Db21wb25lbnQpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlU21hbGxQcm9maWxlSW5mbyhldmVudCwgcGVyc29uVHlwZSkge1xyXG4gICAgdGhpcy51c2VyVHlwZSA9IHBlcnNvblR5cGU7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIGxldCB1c2VySW5mbyA9IHRoaXNbcGVyc29uVHlwZV07XHJcbiAgICBpZiAodXNlckluZm8ucHJvZmlsZSA9PT0gbnVsbCkge1xyXG4gICAgICB0aGlzLnBvcG92ZXJUeXBlID0gcGVyc29uVHlwZTtcclxuICAgICAgbGV0IHVzZXJFbWFpbCA9IChwZXJzb25UeXBlID09PSAncmVjaXBpZW50JyA/IHRoaXMuc2VjdGlvbi5oZWFkZXIucGVyc29uVG9UaHVtYm5haWwuc3BsaXQoJz0nKVsxXSA6IHRoaXM/LnNlY3Rpb24/LmhlYWRlcj8uZGVsZWdhdGVkVG9UaHVtYm5haWwuc3BsaXQoJz0nKVsxXSk7XHJcbiAgICAgIHRoaXMuY29yZVNlcnZpY2UuZW1wbG95ZWVQcm9maWxlKHVzZXJFbWFpbCkuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlKSB7XHJcbiAgICAgICAgICBsZXQgdXNlckRhdGEgPSB0aGlzLmNyZWF0ZVVzZXJQcm9maWxlRnJvbVJlc3BvbnNlKHJlc3BvbnNlKTtcclxuICAgICAgICAgIHRoaXMub3Blbk9yQ3JlYXRlVXNlclByb2ZpbGUodXNlckRhdGEsIHBlcnNvblR5cGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm9wZW5PckNyZWF0ZVVzZXJQcm9maWxlKHRoaXNbcGVyc29uVHlwZV0ucHJvZmlsZSwgcGVyc29uVHlwZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGF0dXNDbGFzcyhzdGF0dXM6IHN0cmluZykge1xyXG4gICAgaWYgKHN0YXR1cykge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgc3RhdHVzID09PSBDb25zdGFudHMuRk9STV9TVEFUVVNfUkVKRUNURUQgfHwgc3RhdHVzID09PSBDb25zdGFudHMuRk9STV9TVEFUVVNfQ0FOQ0VMTEVEXHJcbiAgICAgICAgfHwgc3RhdHVzLnRvTG93ZXJDYXNlKCkgPT09ICdyZWplY3QnIHx8IHN0YXR1cy50b0xvd2VyQ2FzZSgpID09PSAndW5zYXRpc2ZpZWQnIHx8IHN0YXR1cy50b0xvd2VyQ2FzZSgpID09PSAnY2FuY2VsJ1xyXG4gICAgICApIHtcclxuICAgICAgICByZXR1cm4gJ2Rhbmdlcic7XHJcbiAgICAgIH0gZWxzZSBpZiAoc3RhdHVzID09PSBDb25zdGFudHMuRk9STV9TVEFUVVNfUEVORElORyB8fCBzdGF0dXMudG9Mb3dlckNhc2UoKSA9PT0gJ3BlbmRpbmcnKSB7XHJcbiAgICAgICAgcmV0dXJuICd3YXJuaW5nJztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gJ3N1Y2Nlc3MnO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gJ3N1Y2Nlc3MnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdHVzSWNvbihzdGF0dXM6IHN0cmluZykge1xyXG4gICAgaWYgKHN0YXR1cykge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgc3RhdHVzID09PSBDb25zdGFudHMuRk9STV9TVEFUVVNfUkVKRUNURUQgfHwgc3RhdHVzID09PSBDb25zdGFudHMuRk9STV9TVEFUVVNfQ0FOQ0VMTEVEXHJcbiAgICAgICAgfHwgc3RhdHVzLnRvTG93ZXJDYXNlKCkgPT09ICdyZWplY3QnIHx8IHN0YXR1cy50b0xvd2VyQ2FzZSgpID09PSAndW5zYXRpc2ZpZWQnIHx8IHN0YXR1cy50b0xvd2VyQ2FzZSgpID09PSAnY2FuY2VsJ1xyXG4gICAgICApIHtcclxuICAgICAgICByZXR1cm4gJ2Nsb3NlJztcclxuICAgICAgfSBlbHNlIGlmIChzdGF0dXMgPT09IENvbnN0YW50cy5GT1JNX1NUQVRVU19QRU5ESU5HIHx8IHN0YXR1cy50b0xvd2VyQ2FzZSgpID09PSAncGVuZGluZycpIHtcclxuICAgICAgICByZXR1cm4gJ2Nsb2NrJztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gJ2NoZWNrJztcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuICdjaGVjayc7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxtYXQtZXhwYW5zaW9uLXBhbmVsXHJcbiAgY2xhc3M9XCJtYi00XCIgW2V4cGFuZGVkXT1cImlzRXhwYW5kZWRcIiAqbmdJZj1cImZvcm0/LmhlYWRlcj8uc3RhdHVzPy5bJ2tleSddICE9PSAnTkVXJyBcIiBoaWRlVG9nZ2xlXHJcbiAgI2FwcHJvdmFsUGFuZWw9XCJtYXRFeHBhbnNpb25QYW5lbFwiPlxyXG4gIDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiYXBwcm92YWwtcGFuZWwtY29udGFpbmVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTIgZmxleC1ncm93LTEgYXBwcm92YWwtcGFuZWwtdGl0bGVcIj5cclxuICAgICAgICA8ZHMtc3RhdHVzXHJcbiAgICAgICAgICBzdGF0dXM9XCJ7e3N0YXR1c0NsYXNzKHNlY3Rpb25TdGF0dXNLZXkpfX1cIiBuby1vcGFjaXR5IGljb25cclxuICAgICAgICAgIGNsYXNzPVwiY2lyY2xlLXN0YXR1cyBkLW5vbmUgZC1zbS1pbmxpbmUtYmxvY2tcIj5cclxuICAgICAgICAgIDxkcy1pY29uIGljb249XCJ7e3N0YXR1c0ljb24oc2VjdGlvblN0YXR1c0tleSl9fVwiPjwvZHMtaWNvbj5cclxuICAgICAgICA8L2RzLXN0YXR1cz5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGZsZXgtZ3Jvdy0xXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImZzLTE2IGZ3LW1lZGl1bSBtLTBcIj4ge3sgc2VjdGlvbk5hbWUgfX08L3NwYW4+XHJcbiAgICAgICAgICA8YmRpIGNsYXNzPVwiZnMtMTIgZmMtZGFyay1ncmF5IGZ3LW5vcm1hbCBsaW5lLWhlaWdodC0xIGQtYmxvY2sgbXQtMVwiICpuZ0lmPVwic2VjdGlvbi5oZWFkZXI/LnByb2Nlc3NlZEJ5XCI+XHJcbiAgICAgICAgICAgIHt7IHByb2Nlc3NpbmdEYXRlIH19XHJcbiAgICAgICAgICA8L2JkaT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJhcHByb3ZhbC1wYW5lbC1kZXRhaWxzIGdhcC0xXCI+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoIXNlY3Rpb24/LmJvZHk/LmRldGFpbHM/Llsnc3RhZ2UwJ10/LlsnaXNTdGFnZTAnXSB8fCBzZWN0aW9uPy5ib2R5Py5kZXRhaWxzPy5bJ3N0YWdlMCddPy5bJ2lzU3RhZ2UwJ10gPT09ICdmYWxzZScpXCI+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtM1wiICpuZ0lmPVwic2VjdGlvbj8uaGVhZGVyPy5wZXJzb25UbztcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1wiPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVNtYWxsUHJvZmlsZUluZm8oJGV2ZW50LCAncmVjaXBpZW50JylcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiByYWRpdXMtMyBoLTQwXCJcclxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J3VzZXItYXZhdGFyLW5hbWUgcHgtMCBweC1tZC0yJzogIXNlY3Rpb24/LmhlYWRlcj8uZGVsZWdhdGVkVG8sICdwLTAnOiBzZWN0aW9uPy5oZWFkZXI/LmRlbGVnYXRlZFRvfVwiPlxyXG4gICAgICAgICAgICAgIDxkcy1hdmF0YXIgaW1hZ2U9XCJ7e3NlY3Rpb24/LmhlYWRlcj8ucGVyc29uVG9UaHVtYm5haWx9fVwiIHNpemU9XCJzbWFsbFwiIGNsYXNzPVwidXNlci1hdmF0YXJcIj48L2RzLWF2YXRhcj5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmcy0xNCBmdy1tZWRpdW0gZC1pbmxpbmUtYmxvY2sgcGFuZWwtdXNlci1uYW1lIHRleHQtdHJ1bmNhdGVcIiBbbmdDbGFzc109XCJ7J3BhbmVsLXVzZXItb25seSc6ICFzZWN0aW9uPy5oZWFkZXI/LmRlbGVnYXRlZFRvfVwiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIiFzZWN0aW9uPy5oZWFkZXI/LmRlbGVnYXRlZFRvXCI+e3sgc2VjdGlvbj8uaGVhZGVyPy5wZXJzb25UbyB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJzZWN0aW9uPy5oZWFkZXI/LmRlbGVnYXRlZFRvXCIgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0zXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlU21hbGxQcm9maWxlSW5mbygkZXZlbnQsICdkZWxlZ2F0ZScpXCI+XHJcbiAgICAgICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJyb3RhdGUtYXJyb3dcIlxyXG4gICAgICAgICAgICAgICAgYWx0PVwiXCJcclxuICAgICAgICAgICAgICAgIHNyYz1cImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QjRiV3h1Y3owaWFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdk1qQXdNQzl6ZG1jaUlIZHBaSFJvUFNJeU1TSWdhR1ZwWjJoMFBTSXhNeUlnZG1sbGQwSnZlRDBpTUNBd0lESXhJREV6SWo0OGNHRjBhQ0JrUFNKTk1qRXNOeTQzTmpOaE1TNDJNakVzTVM0Mk1qRXNNQ3d3TERFdExqUTBOeTQxT1RNc01TNHpNRFlzTVM0ek1EWXNNQ3d3TERFdExqYzFMakU1TkdNdE55NHlPRFFzTUMwNExqVTJPQ3d3TFRFMUxqZzFNeXd3U0RNdU5qWTVURE11TmpNc09DNDJZeTR3TnpjdU1EWTBMakUxT0M0eE1qUXVNakk1TGpFNU5IRXhMamN4TERFdU5qa3NNeTQwTWl3ekxqTTRNV0V4TGpBeU15d3hMakF5TXl3d0xEQXNNU3d1TWpreExERXVNRGM1TGprNU1pNDVPVElzTUN3d0xERXRMamd1TnpFNUxERXVNRFV6TERFdU1EVXpMREFzTUN3eExURXRMak16TVZFekxqZ3pNU3d4TVM0M01Ua3NNUzQ0T0RZc09TNDRZeTB1TkRReUxTNDBNemN0TGpnM09TMHVPRGd4TFRFdU16TXRNUzR6TURsQk5DNDFOeklzTkM0MU56SXNNQ3d3TERFc01DdzNMamd4TkZZM0xqRTROVUV6TUM0M09ETXNNekF1TnpnekxEQXNNQ3d4TERJdU56TXNOQzR6TnpGak1TMHhMakF5Tnl3eUxqQXpPQzB5TGpBeU5Td3pMakEyTXkwekxqQXpNa0V4TGpBME9Td3hMakEwT1N3d0xERXNNU3czTGpJM055d3lMamd5UXpZdU5Dd3pMamNzTlM0MU1Ea3NOQzQxTnl3MExqWXlOU3cxTGpRME5tTXRMak15TXk0ek1qRXRMalkwTkM0Mk5EVXRMamszTXk0NU56WXVNRGcwTGpBMU9TNHhPREV1TURJM0xqSTNMakF5Tnl3M0xqSTFPQ3d3TERndU5URTJMREFzTVRVdU56YzFMREJCTVM0eE1qa3NNUzR4TWprc01Dd3dMREVzTWpFc055NHlPWFl1TkRjeVdpSWdkSEpoYm5ObWIzSnRQU0owY21GdWMyeGhkR1VvTUNBdE1DNDVPVGtwSWlCbWFXeHNQU0lqWVRVMFpXVXhJaTgrUEM5emRtYytcIi8+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgcHgtMCBweC1tZC0yIHJhZGl1cy0zIHVzZXItYXZhdGFyLW5hbWUgaC00MFwiPlxyXG4gICAgICAgICAgICAgICAgPGRzLWF2YXRhciBpbWFnZT1cInt7c2VjdGlvbj8uaGVhZGVyPy5kZWxlZ2F0ZWRUb1RodW1ibmFpbH19XCIgc2l6ZT1cInNtYWxsXCIgY2xhc3M9XCJ1c2VyLWF2YXRhclwiPjwvZHMtYXZhdGFyPlxyXG4gICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmcy0xNCBmdy1tZWRpdW0gZC1pbmxpbmUtYmxvY2sgcGFuZWwtdXNlci1uYW1lIHRleHQtdHJ1bmNhdGVcIj57eyBzZWN0aW9uPy5oZWFkZXI/LmRlbGVnYXRlZFRvIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8ZHMtc3RhdHVzXHJcbiAgICAgICAgICBjbGFzcz1cIm1haW4tc3RhdHVzXCIgKm5nSWY9XCJzZWN0aW9uPy5ib2R5Py5kZXRhaWxzPy5bJ2RlY2lzaW9uJ10/LmtleTtcIlxyXG4gICAgICAgICAgc3RhdHVzPVwie3tzdGF0dXNDbGFzcyhzZWN0aW9uPy5ib2R5Py5kZXRhaWxzPy5bJ2RlY2lzaW9uJ10/LmtleSl9fVwiPnt7IHNlY3Rpb24/LmJvZHk/LmRldGFpbHM/LlsnZGVjaXNpb24nXT8udmFsdWUgfX1cclxuICAgICAgICA8L2RzLXN0YXR1cz5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYXBwcm92YWwtcGFuZWwtdG9nZ2xlXCI+XHJcbiAgICAgICAgPGRzLWljb24gaWNvbj1cInBsdXMtMVwiIGNsYXNzPVwiZnMtMjAgZmMtY29yYWxcIiAqbmdJZj1cIiFhcHByb3ZhbFBhbmVsLmV4cGFuZGVkXCI+PC9kcy1pY29uPlxyXG4gICAgICAgIDxkcy1pY29uIGljb249XCJtaW51c1wiIGNsYXNzPVwiZnMtMjAgZmMtZGFyay1ncmF5XCIgKm5nSWY9XCJhcHByb3ZhbFBhbmVsLmV4cGFuZGVkXCI+PC9kcy1pY29uPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICA8L2Rpdj5cclxuICA8L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG4gIDxzZWN0aW9uIGNsYXNzPVwiYm9yZGVyLXRvcCBwdC00XCI+XHJcbiAgICA8bmctY29udGFpbmVyICAqbmdDb21wb25lbnRPdXRsZXQ9XCJzZWN0aW9uRm9ybUNvbXBvbmVudDsgbmRjRHluYW1pY0lucHV0czogaW5wdXRcIj48L25nLWNvbnRhaW5lcj5cclxuICA8L3NlY3Rpb24+XHJcblxyXG48L21hdC1leHBhbnNpb24tcGFuZWw+XHJcbjxuZy1jb250YWluZXIgKm5nSWY9XCJmb3JtPy5oZWFkZXI/LnN0YXR1cz8uWydrZXknXSA9PSAnTkVXJyBcIj5cclxuICA8bmctY29udGFpbmVyICpuZ0NvbXBvbmVudE91dGxldD1cInNlY3Rpb25Gb3JtQ29tcG9uZW50OyBuZGNEeW5hbWljSW5wdXRzOiBpbnB1dFwiPjwvbmctY29udGFpbmVyPlxyXG48L25nLWNvbnRhaW5lcj5cclxuIl19
253
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1zZWN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JwbS1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9hcHAtY29tcG9uZW50LXNlY3Rpb25zL2Zvcm0tc2VjdGlvbi9mb3JtLXNlY3Rpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL2FwcC1jb21wb25lbnQtc2VjdGlvbnMvZm9ybS1zZWN0aW9uL2Zvcm0tc2VjdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLHNCQUFzQixFQUFFLEtBQUssRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUUvRSxPQUFPLEVBQUMsMEJBQTBCLEVBQUUsYUFBYSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDL0UsT0FBTyxFQUFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRSxPQUFPLEVBQUMsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUNsRixPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQU8sZUFBZSxFQUFVLE1BQU0scUJBQXFCLENBQUM7QUFDbkUsT0FBTyxLQUFLLFNBQVMsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSw4Q0FBOEMsQ0FBQztBQUNyRixPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sVUFBVSxDQUFDOzs7OztBQUVoQyxNQUFNLFNBQVMsR0FBRztJQUNoQixDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLEVBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsT0FBTyxF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UyxDQUFDLENBQUM7UUFDL0QsT0FBTyxjQUFjLENBQUMsS0FBSyxDQUFDO0lBQzlCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFVBQVUsQ0FBQyxNQUFjO1FBQ3ZCLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzVDLElBQUksY0FBYyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDL0QsT0FBTyxjQUFjLENBQUMsSUFBSSxDQUFDO0lBQzdCLENBQUM7dUdBak9VLG9CQUFvQjsyRkFBcEIsb0JBQW9CLG9XQ3RDakMsb3pKQWlGQSx1L0REdERJLGtCQUFrQixxWUFHbEIsaUJBQWlCLG9QQUNqQiwwQkFBMEIscU9BQzFCLGdCQUFnQiwrQkFDaEIsT0FBTyxtRkFDUCxhQUFhOzsyRkFJSixvQkFBb0I7a0JBakJoQyxTQUFTOytCQUNFLGtCQUFrQixjQUdoQixJQUFJLFdBQ1A7d0JBQ1Asa0JBQWtCO3dCQUNsQixpQkFBaUI7d0JBQ2pCLElBQUk7d0JBQ0osaUJBQWlCO3dCQUNqQiwwQkFBMEI7d0JBQzFCLGdCQUFnQjt3QkFDaEIsT0FBTzt3QkFDUCxhQUFhO3FCQUNkLFdBQ1EsQ0FBQyxzQkFBc0IsQ0FBQzsySUFNeEIsY0FBYztzQkFBdEIsS0FBSztnQkFFRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csMkJBQTJCO3NCQUFuQyxLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsIElucHV0LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0NvcmVJMThuU2VydmljZSwgQ29yZVNlcnZpY2UsIFNpZGVuYXZTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7Q29tcG9uZW50T3V0bGV0SW9EaXJlY3RpdmUsIER5bmFtaWNNb2R1bGV9IGZyb20gJ25nLWR5bmFtaWMtY29tcG9uZW50JztcclxuaW1wb3J0IHtOZ0NsYXNzLCBOZ0NvbXBvbmVudE91dGxldCwgTmdJZn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtNYXRFeHBhbnNpb25Nb2R1bGUsIE1hdEV4cGFuc2lvblBhbmVsfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9leHBhbnNpb24nO1xyXG5pbXBvcnQge1NhdFBvcG92ZXJNb2R1bGV9IGZyb20gJ0BuY3N0YXRlL3NhdC1wb3BvdmVyJztcclxuaW1wb3J0IHtGb3JtLCBQcm9maWxlSW5mb0Ryb3AsIFNlY3Rpb259IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgKiBhcyBDb25zdGFudHMgZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzJztcclxuaW1wb3J0IHtQcm9maWxlU2VjdGlvbkNvbXBvbmVudH0gZnJvbSBcIi4uL3Byb2ZpbGUtc2VjdGlvbi9wcm9maWxlLXNlY3Rpb24uY29tcG9uZW50XCI7XHJcbmltcG9ydCB7Zm9ybWF0fSBmcm9tICdkYXRlLWZucyc7XHJcblxyXG5jb25zdCBTdGF0dXNNYXAgPSB7XHJcbiAgW0NvbnN0YW50cy5GT1JNX1NUQVRVU19SRUpFQ1RFRF06IHtjbGFzczogJ2RhbmdlcicsIGljb246ICdjbG9zZSd9LFxyXG4gIFtDb25zdGFudHMuRk9STV9TVEFUVVNfQ0FOQ0VMTEVEXToge2NsYXNzOiAnZGFuZ2VyJywgaWNvbjogJ2Nsb3NlJ30sXHJcbiAgW0NvbnN0YW50cy5GT1JNX1NUQVRVU19SRUpFQ1RdOiB7Y2xhc3M6ICdkYW5nZXInLCBpY29uOiAnY2xvc2UnfSxcclxuICBbQ29uc3RhbnRzLlNFQ1RJT05fU1RBVFVTX1VOU0FUSVNGSUVEXToge2NsYXNzOiAnZGFuZ2VyJywgaWNvbjogJ2Nsb3NlJ30sXHJcbiAgW0NvbnN0YW50cy5GT1JNX1NUQVRVU19DQU5DRUxdOiB7Y2xhc3M6ICdkYW5nZXInLCBpY29uOiAnY2xvc2UnfSxcclxuICBbQ29uc3RhbnRzLkZPUk1fU1RBVFVTX1BFTkRJTkddOiB7Y2xhc3M6ICd3YXJuaW5nJywgaWNvbjogJ2Nsb2NrJ30sXHJcbiAgJ2RlZmF1bHQnOiB7Y2xhc3M6ICdzdWNjZXNzJywgaWNvbjogJ2NoZWNrJ31cclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtZm9ybS1zZWN0aW9uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZm9ybS1zZWN0aW9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9mb3JtLXNlY3Rpb24uY29tcG9uZW50LnNjc3MnXSxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIE1hdEV4cGFuc2lvbk1vZHVsZSxcclxuICAgIE1hdEV4cGFuc2lvblBhbmVsLFxyXG4gICAgTmdJZixcclxuICAgIE5nQ29tcG9uZW50T3V0bGV0LFxyXG4gICAgQ29tcG9uZW50T3V0bGV0SW9EaXJlY3RpdmUsXHJcbiAgICBTYXRQb3BvdmVyTW9kdWxlLFxyXG4gICAgTmdDbGFzcyxcclxuICAgIER5bmFtaWNNb2R1bGVcclxuICBdLFxyXG4gIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRm9ybVNlY3Rpb25Db21wb25lbnRcclxuICBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgdXNlclR5cGUgPSAncmVjaXBpZW50JztcclxuICBwb3BvdmVyVHlwZSA9ICdyZWNpcGllbnQnO1xyXG4gIEBJbnB1dCgpIHJlcXVlc3REZXRhaWxzOiBTZWN0aW9uO1xyXG4gIHVzZXJQb3BvdmVySW5mbzogYW55ID0ge307XHJcbiAgQElucHV0KCkgc2VjdGlvbjogU2VjdGlvbjtcclxuICBASW5wdXQoKSBmb3JtOiBGb3JtO1xyXG4gIEBJbnB1dCgpIGxvdjogYW55O1xyXG4gIEBJbnB1dCgpIGlzUmVhZE9ubHk6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgY29udHJvbGxlcnM6IGFueTtcclxuICBASW5wdXQoKSBzZWdtZW50RHluYW1pY0xvYWRlclNlcnZpY2U6IGFueTtcclxuICBASW5wdXQoKSBzZWN0aW9uRm9ybUNvbXBvbmVudDogYW55ID0gbnVsbDtcclxuICBASW5wdXQoKSBzZWN0aW9uTmFtZSA9ICdTRUNUSU9OX05BTUUucmVxdWVzdERldGFpbHMnO1xyXG4gIHNlY3Rpb25TdGF0dXNLZXk6IHN0cmluZztcclxuICByZWNpcGllbnQgPSB7XHJcbiAgICBpc1Nob3dpbmc6IGZhbHNlLFxyXG4gICAgcHJvZmlsZTogbnVsbFxyXG4gIH07XHJcbiAgZGVsZWdhdGUgPSB7XHJcbiAgICBpc1Nob3dpbmc6IGZhbHNlLFxyXG4gICAgcHJvZmlsZTogbnVsbFxyXG4gIH07XHJcbiAgcHVibGljIGlucHV0O1xyXG4gIHByb2Nlc3NpbmdEYXRlOiBzdHJpbmc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGkxOG46IENvcmVJMThuU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29yZVNlcnZpY2U6IENvcmVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBzaWRlbmF2U2VydmljZTogU2lkZW5hdlNlcnZpY2VcclxuICApIHtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldGhvZCB0byBpbml0aWFsaXplIHZhcmlvdXMgY29tcG9uZW50cyB3aGVuIHRoZSBjb21wb25lbnQgaXMgaW5pdGlhbGl6ZWQuXHJcbiAgICpcclxuICAgKiBAcmV0dXJuIHt2b2lkfVxyXG4gICAqL1xyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5pbml0U2VjdGlvbkZvcm1Db21wb25lbnQoKTtcclxuICAgIHRoaXMuaW5pdFNlY3Rpb25OYW1lKCk7XHJcbiAgICB0aGlzLmluaXRJbnB1dCgpO1xyXG4gICAgdGhpcy5pbml0UHJvY2Vzc2luZ0RhdGUoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemVzIHRoZSBzZWN0aW9uIGZvcm0gY29tcG9uZW50IGJ5IGZldGNoaW5nIGl0IGZyb20gdGhlIHNlZ21lbnQgZHluYW1pYyBsb2FkZXIgc2VydmljZS5cclxuICAgKlxyXG4gICAqIEByZXR1cm4ge3ZvaWR9XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBpbml0U2VjdGlvbkZvcm1Db21wb25lbnQoKSB7XHJcbiAgICB0aGlzLnNlY3Rpb25Gb3JtQ29tcG9uZW50ID0gdGhpcy5zZWdtZW50RHluYW1pY0xvYWRlclNlcnZpY2UuZ2V0Q29tcG9uZW50KFxyXG4gICAgICB0aGlzLnNlY3Rpb24uaWRcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJbml0aWFsaXplcyB0aGUgc2VjdGlvbiBuYW1lIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBzZWN0aW9uIGRhdGEuXHJcbiAgICogSWYgdGhlIHNlY3Rpb24ncyBib2R5IGNvbnRhaW5zIGEgJ3N0YWdlTmFtZScgcHJvcGVydHksIHRoZSBzZWN0aW9uIG5hbWUgaXMgc2V0IHRvIHRoZSB2YWx1ZSBvZiB0aGF0IHByb3BlcnR5LlxyXG4gICAqIE90aGVyd2lzZSwgdGhlIHNlY3Rpb24gbmFtZSBpcyByZXRyaWV2ZWQgdXNpbmcgdGhlIHNlZ21lbnREeW5hbWljTG9hZGVyU2VydmljZSBiYXNlZCBvbiB0aGUgc2VjdGlvbiBJRC5cclxuICAgKlxyXG4gICAqIEByZXR1cm4ge3ZvaWR9XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBpbml0U2VjdGlvbk5hbWUoKSB7XHJcbiAgICBpZiAodGhpcy5zZWN0aW9uLmJvZHkuZGV0YWlscz8uWydzdGFnZU5hbWUnXSkge1xyXG4gICAgICB0aGlzLnNlY3Rpb25OYW1lID0gdGhpcy5zZWN0aW9uLmJvZHkuZGV0YWlsc1snc3RhZ2VOYW1lJ107XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlY3Rpb25OYW1lID0gdGhpcy5zZWdtZW50RHluYW1pY0xvYWRlclNlcnZpY2UuZ2V0U2VjdGlvbk5hbWUodGhpcy5zZWN0aW9uLmlkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemVzIHRoZSBpbnB1dCBvYmplY3Qgd2l0aCB0aGUgcHJvdmlkZWQgdmFsdWVzIGZvciByZWFkLW9ubHkgc3RhdHVzLCBsaXN0IG9mIHZhbHVlcywgc2VjdGlvbiwgYW5kIGZvcm0uXHJcbiAgICpcclxuICAgKiBAcmV0dXJuIHt2b2lkfVxyXG4gICAqL1xyXG4gIHByaXZhdGUgaW5pdElucHV0KCkge1xyXG4gICAgdGhpcy5pbnB1dCA9IHtcclxuICAgICAgaXNSZWFkT25seTogdGhpcy5pc1JlYWRPbmx5LFxyXG4gICAgICBsb3Y6IHRoaXMubG92LFxyXG4gICAgICBzZWN0aW9uOiB0aGlzLnNlY3Rpb24sXHJcbiAgICAgIGZvcm06IHRoaXMuZm9ybVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemVzIHRoZSBwcm9jZXNzaW5nIGRhdGUgYmFzZWQgb24gdGhlIHNlY3Rpb24ncyBoZWFkZXIgcHJvY2Vzc2luZyBkYXRlLlxyXG4gICAqIElmIHRoZSBwcm9jZXNzaW5nIGRhdGUgaXMgYXZhaWxhYmxlIGluIHRoZSBzZWN0aW9uIGhlYWRlciwgaXQgZm9ybWF0cyB0aGUgcHJvY2Vzc2luZyBkYXRlXHJcbiAgICogYW5kIGFzc2lnbnMgaXQgdG8gdGhlIHByb2Nlc3NpbmdEYXRlIHByb3BlcnR5IG9mIHRoZSBpbnN0YW5jZS5cclxuICAgKlxyXG4gICAqIEByZXR1cm4ge3ZvaWR9XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBpbml0UHJvY2Vzc2luZ0RhdGUoKSB7XHJcbiAgICBpZiAodGhpcy5zZWN0aW9uPy5oZWFkZXI/LnByb2Nlc3NpbmdEYXRlKSB7XHJcbiAgICAgIHRoaXMucHJvY2Vzc2luZ0RhdGUgPSBmb3JtYXQobmV3IERhdGUodGhpcy5zZWN0aW9uLmhlYWRlci5wcm9jZXNzaW5nRGF0ZSksIFwiZGQvTU0veXl5eSBoaDptbTpzc1wiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBDaGVjayBpZiB0aGUgc2VjdGlvbiBpcyBleHBhbmRlZC5cclxuICAgKlxyXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59IFJldHVybnMgdHJ1ZSBpZiB0aGUgc2VjdGlvbiBpcyBleHBhbmRlZCwgZmFsc2Ugb3RoZXJ3aXNlLlxyXG4gICAqL1xyXG4gIGdldCBpc0V4cGFuZGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgaGFzU2VjdGlvbnMgPSBCb29sZWFuKHRoaXMuZm9ybT8uc2VjdGlvbnM/Lmxlbmd0aCk7XHJcbiAgICBjb25zdCBpc0FueVNlY3Rpb25FeHBhbmRhYmxlID0gaGFzU2VjdGlvbnMgJiYgdGhpcy5mb3JtLnNlY3Rpb25zLnNvbWUoc2VjdGlvbiA9PiAnZXhwYW5kU3RhZ2UnIGluIChzZWN0aW9uPy5ib2R5Py5kZXRhaWxzIHx8IHt9KSk7XHJcbiAgICByZXR1cm4gaXNBbnlTZWN0aW9uRXhwYW5kYWJsZSA/ICh0aGlzLnNlY3Rpb24/LmJvZHk/LmRldGFpbHM/LlsnZXhwYW5kU3RhZ2UnXSA9PT0gJ3RydWUnKSA6IHRydWU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGUgYSBQcm9maWxlSW5mb0Ryb3Agb2JqZWN0IGZyb20gdGhlIHJlc3BvbnNlIG9iamVjdC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7YW55fSByZXNwb25zZSAtIFRoZSByZXNwb25zZSBvYmplY3QgY29udGFpbmluZyB1c2VyIHByb2ZpbGUgaW5mb3JtYXRpb24uXHJcbiAgICpcclxuICAgKiBAcmV0dXJuIHtQcm9maWxlSW5mb0Ryb3B9IEEgUHJvZmlsZUluZm9Ecm9wIG9iamVjdCBjcmVhdGVkIGZyb20gdGhlIHJlc3BvbnNlIGRhdGEuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBjcmVhdGVVc2VyUHJvZmlsZUZyb21SZXNwb25zZShyZXNwb25zZTogYW55KTogUHJvZmlsZUluZm9Ecm9wIHtcclxuICAgIGNvbnN0IHVzZXIgPSByZXNwb25zZT8uW1wiVXNlcnNcIl1bMF07XHJcbiAgICByZXR1cm4gbmV3IFByb2ZpbGVJbmZvRHJvcChcclxuICAgICAgZmFsc2UsXHJcbiAgICAgIHVzZXI/LmVtcGxveWVlTnVtYmVyLFxyXG4gICAgICB1c2VyPy5lbWFpbCxcclxuICAgICAgdXNlcj8ubmFtZSxcclxuICAgICAgdXNlcj8uZ2VuZXJhbERlcGFydG1lbnQ/Lm5hbWUsXHJcbiAgICAgIHVzZXI/LnBvc2l0aW9uPy5uYW1lLFxyXG4gICAgICB1c2VyPy5zZWN0b3I/Lm5hbWUsXHJcbiAgICAgIHVzZXI/LmRlcGFydG1lbnQ/Lm5hbWUsXHJcbiAgICAgIHVzZXI/LmdlbmVyYWxEZXBhcnRtZW50Py5jb2RlLFxyXG4gICAgICB1c2VyPy5sb2NhdGlvbixcclxuICAgICAgdXNlcj8ubmF0aW9uYWxpdHk/LmRlc2MsXHJcbiAgICAgIHVzZXI/LmNvbnRhY3Q/Lm1vYmlsZSxcclxuICAgICAgdXNlcj8ubWFuYWdlcj8ubmFtZSxcclxuICAgICAgdXNlcj8uc2VuaW9yU2VjdG9yTmFtZT8ubmFtZVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldGhvZCB0byBvcGVuIG9yIGNyZWF0ZSBhIHVzZXIgcHJvZmlsZS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7UHJvZmlsZUluZm9Ecm9wfSB1c2VyRGF0YSAtIFRoZSB1c2VyIHByb2ZpbGUgZGF0YSB0byBvcGVuIG9yIGNyZWF0ZS5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gcGVyc29uVHlwZSAtIFRoZSB0eXBlIG9mIHBlcnNvbiB0aGlzIHByb2ZpbGUgYmVsb25ncyB0by5cclxuICAgKlxyXG4gICAqIEByZXR1cm4ge3ZvaWR9XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBvcGVuT3JDcmVhdGVVc2VyUHJvZmlsZSh1c2VyRGF0YTogUHJvZmlsZUluZm9Ecm9wLCBwZXJzb25UeXBlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc2lkZW5hdlNlcnZpY2UuZGF0YSA9IHVzZXJEYXRhO1xyXG4gICAgdGhpcy51c2VyUG9wb3ZlckluZm8gPSB1c2VyRGF0YTtcclxuICAgIHRoaXNbcGVyc29uVHlwZV0ucHJvZmlsZSA9IHVzZXJEYXRhO1xyXG4gICAgdGhpcy5zaWRlbmF2U2VydmljZS5wdWJsaXNoKCdvcGVuJywgUHJvZmlsZVNlY3Rpb25Db21wb25lbnQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVG9nZ2xlcyB0aGUgZGlzcGxheSBvZiBzbWFsbCBwcm9maWxlIGluZm9ybWF0aW9uIGZvciBhIGdpdmVuIHBlcnNvbiB0eXBlXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge2FueX0gZXZlbnQgLSBUaGUgZXZlbnQgdGhhdCB0cmlnZ2VyZWQgdGhlIHRvZ2dsZVxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwZXJzb25UeXBlIC0gVGhlIHR5cGUgb2YgcGVyc29uIGZvciB3aGljaCB0byBkaXNwbGF5IHRoZSBwcm9maWxlIGluZm9ybWF0aW9uXHJcbiAgICpcclxuICAgKiBAcmV0dXJuIHt2b2lkfVxyXG4gICAqL1xyXG4gIHRvZ2dsZVNtYWxsUHJvZmlsZUluZm8oZXZlbnQ6IGFueSwgcGVyc29uVHlwZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnVzZXJUeXBlID0gcGVyc29uVHlwZTtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgbGV0IHVzZXJJbmZvID0gdGhpc1twZXJzb25UeXBlXTtcclxuICAgIGlmICghdXNlckluZm8ucHJvZmlsZSkge1xyXG4gICAgICB0aGlzLnBvcG92ZXJUeXBlID0gcGVyc29uVHlwZTtcclxuICAgICAgbGV0IHVzZXJFbWFpbCA9IHRoaXMuZ2V0VXNlckVtYWlsKHBlcnNvblR5cGUpO1xyXG4gICAgICB0aGlzLmZldGNoQW5kU2V0VXNlclByb2ZpbGUodXNlckVtYWlsLCBwZXJzb25UeXBlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMub3Blbk9yQ3JlYXRlVXNlclByb2ZpbGUodXNlckluZm8ucHJvZmlsZSwgcGVyc29uVHlwZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgdGhlIGVtYWlsIG9mIHRoZSB1c2VyIGJhc2VkIG9uIHRoZSBwZXJzb25UeXBlIHBhcmFtZXRlci5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwZXJzb25UeXBlIC0gVHlwZSBvZiB0aGUgcGVyc29uICgncmVjaXBpZW50JyBvciBvdGhlcnMpLlxyXG4gICAqIEByZXR1cm4ge3N0cmluZ30gLSBUaGUgZW1haWwgYWRkcmVzcyBvZiB0aGUgdXNlci5cclxuICAgKi9cclxuICBwcml2YXRlIGdldFVzZXJFbWFpbChwZXJzb25UeXBlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIChwZXJzb25UeXBlID09PSAncmVjaXBpZW50J1xyXG4gICAgICAgID8gdGhpcy5zZWN0aW9uLmhlYWRlci5wZXJzb25Ub1RodW1ibmFpbC5zcGxpdCgnPScpWzFdXHJcbiAgICAgICAgOiB0aGlzPy5zZWN0aW9uPy5oZWFkZXI/LmRlbGVnYXRlZFRvVGh1bWJuYWlsLnNwbGl0KCc9JylbMV1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGZXRjaGVzIHRoZSB1c2VyIHByb2ZpbGUgdXNpbmcgdGhlIHByb3ZpZGVkIHVzZXIgZW1haWwgYW5kIHBlcnNvbiB0eXBlLCB0aGVuIHNldHMgdGhlIHByb2ZpbGUuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gdXNlckVtYWlsIC0gVGhlIGVtYWlsIG9mIHRoZSB1c2VyIHdob3NlIHByb2ZpbGUgaXMgdG8gYmUgZmV0Y2hlZCBhbmQgc2V0LlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwZXJzb25UeXBlIC0gVGhlIHR5cGUgb2YgcGVyc29uIChlLmcuLCBlbXBsb3llZSwgY3VzdG9tZXIpIGZvciB3aG9tIHRoZSBwcm9maWxlIGlzIGJlaW5nIGZldGNoZWQuXHJcbiAgICpcclxuICAgKiBAcmV0dXJuIHt2b2lkfVxyXG4gICAqL1xyXG4gIHByaXZhdGUgZmV0Y2hBbmRTZXRVc2VyUHJvZmlsZSh1c2VyRW1haWw6IHN0cmluZywgcGVyc29uVHlwZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvcmVTZXJ2aWNlLmVtcGxveWVlUHJvZmlsZSh1c2VyRW1haWwpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzcG9uc2UpIHtcclxuICAgICAgICBsZXQgdXNlckRhdGEgPSB0aGlzLmNyZWF0ZVVzZXJQcm9maWxlRnJvbVJlc3BvbnNlKHJlc3BvbnNlKTtcclxuICAgICAgICB0aGlzLm9wZW5PckNyZWF0ZVVzZXJQcm9maWxlKHVzZXJEYXRhLCBwZXJzb25UeXBlKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBDU1MgY2xhc3MgYXNzb2NpYXRlZCB3aXRoIHRoZSBpbnB1dCBzdGF0dXMuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RhdHVzIC0gVGhlIHN0YXR1cyBmb3Igd2hpY2ggdGhlIENTUyBjbGFzcyBpcyBuZWVkZWQuXHJcbiAgICogQHJldHVybiB7c3RyaW5nfSAtIFRoZSBDU1MgY2xhc3MgY29ycmVzcG9uZGluZyB0byB0aGUgZ2l2ZW4gc3RhdHVzLlxyXG4gICAqL1xyXG4gIHN0YXR1c0NsYXNzKHN0YXR1czogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHN0YXR1cyA9IHN0YXR1cyA/IHN0YXR1cy50b0xvd2VyQ2FzZSgpIDogJyc7XHJcbiAgICBsZXQgc3RhdHVzU3RyYXRlZ3kgPSBTdGF0dXNNYXBbc3RhdHVzXSB8fCBTdGF0dXNNYXBbJ2RlZmF1bHQnXTtcclxuICAgIHJldHVybiBzdGF0dXNTdHJhdGVneS5jbGFzcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIGljb24gYXNzb2NpYXRlZCB3aXRoIHRoZSBwcm92aWRlZCBzdGF0dXMuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RhdHVzIC0gVGhlIHN0YXR1cyBmb3Igd2hpY2ggdG8gcmV0cmlldmUgdGhlIGljb24uXHJcbiAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgaWNvbiBjb3JyZXNwb25kaW5nIHRvIHRoZSBwcm92aWRlZCBzdGF0dXMuXHJcbiAgICovXHJcbiAgc3RhdHVzSWNvbihzdGF0dXM6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBzdGF0dXMgPSBzdGF0dXMgPyBzdGF0dXMudG9Mb3dlckNhc2UoKSA6ICcnO1xyXG4gICAgbGV0IHN0YXR1c1N0cmF0ZWd5ID0gU3RhdHVzTWFwW3N0YXR1c10gfHwgU3RhdHVzTWFwWydkZWZhdWx0J107XHJcbiAgICByZXR1cm4gc3RhdHVzU3RyYXRlZ3kuaWNvbjtcclxuICB9XHJcbn1cclxuIiwiPG1hdC1leHBhbnNpb24tcGFuZWwgY2xhc3M9XCJtYi00XCIgW2V4cGFuZGVkXT1cImlzRXhwYW5kZWRcIiBoaWRlVG9nZ2xlICNhcHByb3ZhbFBhbmVsPVwibWF0RXhwYW5zaW9uUGFuZWxcIj5cclxuICA8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImFwcHJvdmFsLXBhbmVsLWNvbnRhaW5lclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0yIGZsZXgtZ3Jvdy0xIGFwcHJvdmFsLXBhbmVsLXRpdGxlXCI+XHJcbiAgICAgICAgPGRzLXN0YXR1c1xyXG4gICAgICAgICAgc3RhdHVzPVwie3tzdGF0dXNDbGFzcyhzZWN0aW9uU3RhdHVzS2V5KX19XCIgbm8tb3BhY2l0eSBpY29uXHJcbiAgICAgICAgICBjbGFzcz1cImNpcmNsZS1zdGF0dXMgZC1ub25lIGQtc20taW5saW5lLWJsb2NrXCI+XHJcbiAgICAgICAgICA8ZHMtaWNvbiBpY29uPVwie3tzdGF0dXNJY29uKHNlY3Rpb25TdGF0dXNLZXkpfX1cIj48L2RzLWljb24+XHJcbiAgICAgICAgPC9kcy1zdGF0dXM+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBmbGV4LWdyb3ctMVwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJmcy0xNiBmdy1tZWRpdW0gbS0wXCI+IHt7IHNlY3Rpb25OYW1lIH19PC9zcGFuPlxyXG4gICAgICAgICAgQGlmIChzZWN0aW9uLmhlYWRlcj8ucHJvY2Vzc2VkQnkpIHtcclxuICAgICAgICAgICAgPGJkaSBjbGFzcz1cImZzLTEyIGZjLWRhcmstZ3JheSBmdy1ub3JtYWwgbGluZS1oZWlnaHQtMSBkLWJsb2NrIG10LTFcIj5cclxuICAgICAgICAgICAgICB7eyBwcm9jZXNzaW5nRGF0ZSB9fVxyXG4gICAgICAgICAgICA8L2JkaT5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJhcHByb3ZhbC1wYW5lbC1kZXRhaWxzIGdhcC0xXCI+XHJcbiAgICAgICAgQGlmICghc2VjdGlvbj8uYm9keT8uZGV0YWlscz8uWydzdGFnZTAnXT8uWydpc1N0YWdlMCddIHx8IHNlY3Rpb24/LmJvZHk/LmRldGFpbHM/Llsnc3RhZ2UwJ10/LlsnaXNTdGFnZTAnXSA9PT0gJ2ZhbHNlJykge1xyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgQGlmIChzZWN0aW9uPy5oZWFkZXI/LnBlcnNvblRvKSB7XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0zXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVTbWFsbFByb2ZpbGVJbmZvKCRldmVudCwgJ3JlY2lwaWVudCcpXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yIHJhZGl1cy0zIGgtNDBcIlxyXG4gICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J3VzZXItYXZhdGFyLW5hbWUgcHgtMCBweC1tZC0yJzogIXNlY3Rpb24/LmhlYWRlcj8uZGVsZWdhdGVkVG8sICdwLTAnOiBzZWN0aW9uPy5oZWFkZXI/LmRlbGVnYXRlZFRvfVwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZHMtYXZhdGFyIGltYWdlPVwie3tzZWN0aW9uPy5oZWFkZXI/LnBlcnNvblRvVGh1bWJuYWlsfX1cIiBzaXplPVwic21hbGxcIiBjbGFzcz1cInVzZXItYXZhdGFyXCI+PC9kcy1hdmF0YXI+XHJcbiAgICAgICAgICAgICAgICAgIEBpZiAoIXNlY3Rpb24/LmhlYWRlcj8uZGVsZWdhdGVkVG8pIHtcclxuICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmcy0xNCBmdy1tZWRpdW0gZC1pbmxpbmUtYmxvY2sgcGFuZWwtdXNlci1uYW1lIHRleHQtdHJ1bmNhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydwYW5lbC11c2VyLW9ubHknOiAhc2VjdGlvbj8uaGVhZGVyPy5kZWxlZ2F0ZWRUb31cIlxyXG4gICAgICAgICAgICAgICAgICAgID57eyBzZWN0aW9uPy5oZWFkZXI/LnBlcnNvblRvIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIEBpZiAoc2VjdGlvbj8uaGVhZGVyPy5kZWxlZ2F0ZWRUbykge1xyXG4gICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0zXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlU21hbGxQcm9maWxlSW5mbygkZXZlbnQsICdkZWxlZ2F0ZScpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyb3RhdGUtYXJyb3dcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgYWx0PVwiXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHNyYz1cImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QjRiV3h1Y3owaWFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdk1qQXdNQzl6ZG1jaUlIZHBaSFJvUFNJeU1TSWdhR1ZwWjJoMFBTSXhNeUlnZG1sbGQwSnZlRDBpTUNBd0lESXhJREV6SWo0OGNHRjBhQ0JrUFNKTk1qRXNOeTQzTmpOaE1TNDJNakVzTVM0Mk1qRXNNQ3d3TERFdExqUTBOeTQxT1RNc01TNHpNRFlzTVM0ek1EWXNNQ3d3TERFdExqYzFMakU1TkdNdE55NHlPRFFzTUMwNExqVTJPQ3d3TFRFMUxqZzFNeXd3U0RNdU5qWTVURE11TmpNc09DNDJZeTR3TnpjdU1EWTBMakUxT0M0eE1qUXVNakk1TGpFNU5IRXhMamN4TERFdU5qa3NNeTQwTWl3ekxqTTRNV0V4TGpBeU15d3hMakF5TXl3d0xEQXNNU3d1TWpreExERXVNRGM1TGprNU1pNDVPVElzTUN3d0xERXRMamd1TnpFNUxERXVNRFV6TERFdU1EVXpMREFzTUN3eExURXRMak16TVZFekxqZ3pNU3d4TVM0M01Ua3NNUzQ0T0RZc09TNDRZeTB1TkRReUxTNDBNemN0TGpnM09TMHVPRGd4TFRFdU16TXRNUzR6TURsQk5DNDFOeklzTkM0MU56SXNNQ3d3TERFc01DdzNMamd4TkZZM0xqRTROVUV6TUM0M09ETXNNekF1TnpnekxEQXNNQ3d4TERJdU56TXNOQzR6TnpGak1TMHhMakF5Tnl3eUxqQXpPQzB5TGpBeU5Td3pMakEyTXkwekxqQXpNa0V4TGpBME9Td3hMakEwT1N3d0xERXNNU3czTGpJM055d3lMamd5UXpZdU5Dd3pMamNzTlM0MU1Ea3NOQzQxTnl3MExqWXlOU3cxTGpRME5tTXRMak15TXk0ek1qRXRMalkwTkM0Mk5EVXRMamszTXk0NU56WXVNRGcwTGpBMU9TNHhPREV1TURJM0xqSTNMakF5Tnl3M0xqSTFPQ3d3TERndU5URTJMREFzTVRVdU56YzFMREJCTVM0eE1qa3NNUzR4TWprc01Dd3dMREVzTWpFc055NHlPWFl1TkRjeVdpSWdkSEpoYm5ObWIzSnRQU0owY21GdWMyeGhkR1VvTUNBdE1DNDVPVGtwSWlCbWFXeHNQU0lqWVRVMFpXVXhJaTgrUEM5emRtYytcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgcHgtMCBweC1tZC0yIHJhZGl1cy0zIHVzZXItYXZhdGFyLW5hbWUgaC00MFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRzLWF2YXRhciBpbWFnZT1cInt7c2VjdGlvbj8uaGVhZGVyPy5kZWxlZ2F0ZWRUb1RodW1ibmFpbH19XCIgc2l6ZT1cInNtYWxsXCIgY2xhc3M9XCJ1c2VyLWF2YXRhclwiPjwvZHMtYXZhdGFyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmcy0xNCBmdy1tZWRpdW0gZC1pbmxpbmUtYmxvY2sgcGFuZWwtdXNlci1uYW1lIHRleHQtdHJ1bmNhdGVcIj57eyBzZWN0aW9uPy5oZWFkZXI/LmRlbGVnYXRlZFRvIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBAaWYgKHNlY3Rpb24/LmJvZHk/LmRldGFpbHM/LlsnZGVjaXNpb24nXT8ua2V5KSB7XHJcbiAgICAgICAgICA8ZHMtc3RhdHVzXHJcbiAgICAgICAgICAgIGNsYXNzPVwibWFpbi1zdGF0dXNcIlxyXG4gICAgICAgICAgICBzdGF0dXM9XCJ7e3N0YXR1c0NsYXNzKHNlY3Rpb24/LmJvZHk/LmRldGFpbHM/LlsnZGVjaXNpb24nXT8ua2V5KX19XCI+e3sgc2VjdGlvbj8uYm9keT8uZGV0YWlscz8uWydkZWNpc2lvbiddPy52YWx1ZSB9fVxyXG4gICAgICAgICAgPC9kcy1zdGF0dXM+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJhcHByb3ZhbC1wYW5lbC10b2dnbGVcIj5cclxuICAgICAgICBAaWYgKGFwcHJvdmFsUGFuZWwuZXhwYW5kZWQpIHtcclxuICAgICAgICAgIDxkcy1pY29uIGljb249XCJtaW51c1wiIGNsYXNzPVwiZnMtMjAgZmMtZGFyay1ncmF5XCI+PC9kcy1pY29uPlxyXG4gICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgPGRzLWljb24gaWNvbj1cInBsdXMtMVwiIGNsYXNzPVwiZnMtMjAgZmMtY29yYWxcIj48L2RzLWljb24+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICA8L2Rpdj5cclxuICA8L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG4gIDxzZWN0aW9uIGNsYXNzPVwiYm9yZGVyLXRvcCBwdC00XCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0NvbXBvbmVudE91dGxldD1cInNlY3Rpb25Gb3JtQ29tcG9uZW50OyBuZGNEeW5hbWljSW5wdXRzOiBpbnB1dFwiPjwvbmctY29udGFpbmVyPlxyXG4gIDwvc2VjdGlvbj5cclxuXHJcbjwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cclxuIl19
@@ -5,6 +5,5 @@ export * from './form-section/form-section.component';
5
5
  export * from './main-request-details/main-request-details.component';
6
6
  export * from './feedback-section/feedback-section.component';
7
7
  export * from './profile-section/profile-section.component';
8
- export * from './comment-section/comment-section.component';
9
8
  export * from './layout/layout.component';
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9icG0tY29yZS9zcmMvbGliL2NvbXBvbmVudHMvYXBwLWNvbXBvbmVudC1zZWN0aW9ucy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDJDQUEyQyxDQUFBO0FBQ3pELGNBQWMsMkJBQTJCLENBQUE7QUFDekMsY0FBYywrQ0FBK0MsQ0FBQTtBQUM3RCxjQUFjLHVDQUF1QyxDQUFBO0FBQ3JELGNBQWMsdURBQXVELENBQUM7QUFDdEUsY0FBYywrQ0FBK0MsQ0FBQTtBQUM3RCxjQUFjLDZDQUE2QyxDQUFBO0FBQzNELGNBQWMsNkNBQTZDLENBQUE7QUFDM0QsY0FBYywyQkFBMkIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc2VydmljZS1oZWFkZXIvc2VydmljZS1oZWFkZXIuY29tcG9uZW50J1xyXG5leHBvcnQgKiBmcm9tICcuL3N0YXR1cy9zdGF0dXMuY29tcG9uZW50J1xyXG5leHBvcnQgKiBmcm9tICcuL3dvcmtmbG93LXNlY3Rpb24vd29ya2Zsb3ctc2VjdGlvbi5jb21wb25lbnQnXHJcbmV4cG9ydCAqIGZyb20gJy4vZm9ybS1zZWN0aW9uL2Zvcm0tc2VjdGlvbi5jb21wb25lbnQnXHJcbmV4cG9ydCAqIGZyb20gJy4vbWFpbi1yZXF1ZXN0LWRldGFpbHMvbWFpbi1yZXF1ZXN0LWRldGFpbHMuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9mZWVkYmFjay1zZWN0aW9uL2ZlZWRiYWNrLXNlY3Rpb24uY29tcG9uZW50J1xyXG5leHBvcnQgKiBmcm9tICcuL3Byb2ZpbGUtc2VjdGlvbi9wcm9maWxlLXNlY3Rpb24uY29tcG9uZW50J1xyXG5leHBvcnQgKiBmcm9tICcuL2NvbW1lbnQtc2VjdGlvbi9jb21tZW50LXNlY3Rpb24uY29tcG9uZW50J1xyXG5leHBvcnQgKiBmcm9tICcuL2xheW91dC9sYXlvdXQuY29tcG9uZW50J1xyXG4iXX0=
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9icG0tY29yZS9zcmMvbGliL2NvbXBvbmVudHMvYXBwLWNvbXBvbmVudC1zZWN0aW9ucy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDJDQUEyQyxDQUFBO0FBQ3pELGNBQWMsMkJBQTJCLENBQUE7QUFDekMsY0FBYywrQ0FBK0MsQ0FBQTtBQUM3RCxjQUFjLHVDQUF1QyxDQUFBO0FBQ3JELGNBQWMsdURBQXVELENBQUM7QUFDdEUsY0FBYywrQ0FBK0MsQ0FBQTtBQUM3RCxjQUFjLDZDQUE2QyxDQUFBO0FBQzNELGNBQWMsMkJBQTJCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NlcnZpY2UtaGVhZGVyL3NlcnZpY2UtaGVhZGVyLmNvbXBvbmVudCdcclxuZXhwb3J0ICogZnJvbSAnLi9zdGF0dXMvc3RhdHVzLmNvbXBvbmVudCdcclxuZXhwb3J0ICogZnJvbSAnLi93b3JrZmxvdy1zZWN0aW9uL3dvcmtmbG93LXNlY3Rpb24uY29tcG9uZW50J1xyXG5leHBvcnQgKiBmcm9tICcuL2Zvcm0tc2VjdGlvbi9mb3JtLXNlY3Rpb24uY29tcG9uZW50J1xyXG5leHBvcnQgKiBmcm9tICcuL21haW4tcmVxdWVzdC1kZXRhaWxzL21haW4tcmVxdWVzdC1kZXRhaWxzLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZmVlZGJhY2stc2VjdGlvbi9mZWVkYmFjay1zZWN0aW9uLmNvbXBvbmVudCdcclxuZXhwb3J0ICogZnJvbSAnLi9wcm9maWxlLXNlY3Rpb24vcHJvZmlsZS1zZWN0aW9uLmNvbXBvbmVudCdcclxuZXhwb3J0ICogZnJvbSAnLi9sYXlvdXQvbGF5b3V0LmNvbXBvbmVudCdcclxuIl19
@@ -1,6 +1,5 @@
1
1
  import { Component, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core';
2
2
  import { MatAccordion, MatExpansionModule, MatExpansionPanel } from '@angular/material/expansion';
3
- import { NgIf } from '@angular/common';
4
3
  import * as i0 from "@angular/core";
5
4
  import * as i1 from "../../../services";
6
5
  import * as i2 from "@angular/material/expansion";
@@ -13,19 +12,18 @@ export class MainRequestDetailsComponent {
13
12
  this.i18n = i18n;
14
13
  }
15
14
  get isExpanded() {
16
- return this.section?.body?.details?.expandStage === 'true';
15
+ return this.section?.body?.details?.['expandStage'] === 'true';
17
16
  }
18
17
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: MainRequestDetailsComponent, deps: [{ token: i1.CoreI18nService }], target: i0.ɵɵFactoryTarget.Component });
19
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: MainRequestDetailsComponent, isStandalone: true, selector: "app-main-request-details", inputs: { section: "section", lov: "lov", form: "form" }, ngImport: i0, template: "<mat-accordion class=\"primary-accordion main-request-accordion border-top\">\r\n <mat-expansion-panel [expanded]=\"isExpanded || (form?.sections?.length === 1 )\" class=\"mb-3\" hideToggle #requestPanel=\"matExpansionPanel\">\r\n <mat-expansion-panel-header>\r\n <h2 class=\"fs-16 fw-medium fc-coral m-0 flex-grow-1\">{{i18n.translate('requestDetailsTitle')}}</h2>\r\n <div class=\"d-inline-flex align-items-center gap-2\" *ngIf=\"!requestPanel.expanded\">\r\n <ds-icon icon=\"plus-1\" class=\"fs-20 fc-coral\"></ds-icon>\r\n </div>\r\n <div class=\"d-inline-flex align-items-center gap-2\" *ngIf=\"requestPanel.expanded\">\r\n <ds-icon icon=\"minus\" class=\"fs-20 fc-dark-gray\"></ds-icon>\r\n </div>\r\n </mat-expansion-panel-header>\r\n <section class=\"default-box box-shadow p-4\">\r\n <ng-content ></ng-content>\r\n </section>\r\n </mat-expansion-panel>\r\n</mat-accordion>\r\n", styles: [".main-request-accordion{--accordion-height: 65px;--accordion-radius: 0 0 4px 4px;--accordion-shadow: 0 7px 10px rgba(var(--rgb-black), 3%);--accordion-border: 1px solid var(--light-gray);--accordion-border-active: 1px solid var(--gray);--panel-padding: 0 1.5rem;--panel-body-padding: 0 0 1.5rem;position:relative;z-index:1}@media (max-width: 576px){.main-request-accordion{--accordion-height: 55px;--panel-padding: 0 1rem;--panel-body-padding: 0 1rem 1rem}}.main-request-accordion .inner-accordion{--accordion-height: 44px;--accordion-bc: var(--light-gray);--accordion-bc-active: var(--white);--accordion-border: 1px solid var(--light-gray);--accordion-border-active: 1px solid var(--light-gray);--panel-body-padding: 0;--accordion-shadow: none;--panel-padding: 0 1.5rem}\n"], dependencies: [{ kind: "ngmodule", type: MatExpansionModule }, { kind: "directive", type: i2.MatAccordion, selector: "mat-accordion", inputs: ["hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i2.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i2.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
18
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.8", type: MainRequestDetailsComponent, isStandalone: true, selector: "app-main-request-details", inputs: { section: "section", lov: "lov", form: "form" }, ngImport: i0, template: "<mat-accordion class=\"primary-accordion main-request-accordion border-top\">\r\n <mat-expansion-panel [expanded]=\"isExpanded || (form?.sections?.length === 1 )\" class=\"mb-3\" hideToggle #requestPanel=\"matExpansionPanel\">\r\n <mat-expansion-panel-header>\r\n <h2 class=\"fs-16 fw-medium fc-coral m-0 flex-grow-1\">{{ i18n.translate('requestDetailsTitle') }}</h2>\r\n @if (requestPanel.expanded) {\r\n <div class=\"d-inline-flex align-items-center gap-2\">\r\n <ds-icon icon=\"minus\" class=\"fs-20 fc-dark-gray\"></ds-icon>\r\n </div>\r\n } @else {\r\n <div class=\"d-inline-flex align-items-center gap-2\">\r\n <ds-icon icon=\"plus-1\" class=\"fs-20 fc-coral\"></ds-icon>\r\n </div>\r\n }\r\n </mat-expansion-panel-header>\r\n <section class=\"default-box box-shadow p-4\">\r\n <ng-content></ng-content>\r\n </section>\r\n </mat-expansion-panel>\r\n</mat-accordion>\r\n", styles: [".main-request-accordion{--accordion-height: 65px;--accordion-radius: 0 0 4px 4px;--accordion-shadow: 0 7px 10px rgba(var(--rgb-black), 3%);--accordion-border: 1px solid var(--light-gray);--accordion-border-active: 1px solid var(--gray);--panel-padding: 0 1.5rem;--panel-body-padding: 0 0 1.5rem;position:relative;z-index:1}@media (max-width: 576px){.main-request-accordion{--accordion-height: 55px;--panel-padding: 0 1rem;--panel-body-padding: 0 1rem 1rem}}.main-request-accordion .inner-accordion{--accordion-height: 44px;--accordion-bc: var(--light-gray);--accordion-bc-active: var(--white);--accordion-border: 1px solid var(--light-gray);--accordion-border-active: 1px solid var(--light-gray);--panel-body-padding: 0;--accordion-shadow: none;--panel-padding: 0 1.5rem}\n"], dependencies: [{ kind: "ngmodule", type: MatExpansionModule }, { kind: "directive", type: i2.MatAccordion, selector: "mat-accordion", inputs: ["hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i2.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i2.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }] });
20
19
  }
21
20
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: MainRequestDetailsComponent, decorators: [{
22
21
  type: Component,
23
22
  args: [{ selector: 'app-main-request-details', standalone: true, schemas: [CUSTOM_ELEMENTS_SCHEMA], imports: [
24
23
  MatExpansionModule,
25
24
  MatAccordion,
26
- MatExpansionPanel,
27
- NgIf
28
- ], template: "<mat-accordion class=\"primary-accordion main-request-accordion border-top\">\r\n <mat-expansion-panel [expanded]=\"isExpanded || (form?.sections?.length === 1 )\" class=\"mb-3\" hideToggle #requestPanel=\"matExpansionPanel\">\r\n <mat-expansion-panel-header>\r\n <h2 class=\"fs-16 fw-medium fc-coral m-0 flex-grow-1\">{{i18n.translate('requestDetailsTitle')}}</h2>\r\n <div class=\"d-inline-flex align-items-center gap-2\" *ngIf=\"!requestPanel.expanded\">\r\n <ds-icon icon=\"plus-1\" class=\"fs-20 fc-coral\"></ds-icon>\r\n </div>\r\n <div class=\"d-inline-flex align-items-center gap-2\" *ngIf=\"requestPanel.expanded\">\r\n <ds-icon icon=\"minus\" class=\"fs-20 fc-dark-gray\"></ds-icon>\r\n </div>\r\n </mat-expansion-panel-header>\r\n <section class=\"default-box box-shadow p-4\">\r\n <ng-content ></ng-content>\r\n </section>\r\n </mat-expansion-panel>\r\n</mat-accordion>\r\n", styles: [".main-request-accordion{--accordion-height: 65px;--accordion-radius: 0 0 4px 4px;--accordion-shadow: 0 7px 10px rgba(var(--rgb-black), 3%);--accordion-border: 1px solid var(--light-gray);--accordion-border-active: 1px solid var(--gray);--panel-padding: 0 1.5rem;--panel-body-padding: 0 0 1.5rem;position:relative;z-index:1}@media (max-width: 576px){.main-request-accordion{--accordion-height: 55px;--panel-padding: 0 1rem;--panel-body-padding: 0 1rem 1rem}}.main-request-accordion .inner-accordion{--accordion-height: 44px;--accordion-bc: var(--light-gray);--accordion-bc-active: var(--white);--accordion-border: 1px solid var(--light-gray);--accordion-border-active: 1px solid var(--light-gray);--panel-body-padding: 0;--accordion-shadow: none;--panel-padding: 0 1.5rem}\n"] }]
25
+ MatExpansionPanel
26
+ ], template: "<mat-accordion class=\"primary-accordion main-request-accordion border-top\">\r\n <mat-expansion-panel [expanded]=\"isExpanded || (form?.sections?.length === 1 )\" class=\"mb-3\" hideToggle #requestPanel=\"matExpansionPanel\">\r\n <mat-expansion-panel-header>\r\n <h2 class=\"fs-16 fw-medium fc-coral m-0 flex-grow-1\">{{ i18n.translate('requestDetailsTitle') }}</h2>\r\n @if (requestPanel.expanded) {\r\n <div class=\"d-inline-flex align-items-center gap-2\">\r\n <ds-icon icon=\"minus\" class=\"fs-20 fc-dark-gray\"></ds-icon>\r\n </div>\r\n } @else {\r\n <div class=\"d-inline-flex align-items-center gap-2\">\r\n <ds-icon icon=\"plus-1\" class=\"fs-20 fc-coral\"></ds-icon>\r\n </div>\r\n }\r\n </mat-expansion-panel-header>\r\n <section class=\"default-box box-shadow p-4\">\r\n <ng-content></ng-content>\r\n </section>\r\n </mat-expansion-panel>\r\n</mat-accordion>\r\n", styles: [".main-request-accordion{--accordion-height: 65px;--accordion-radius: 0 0 4px 4px;--accordion-shadow: 0 7px 10px rgba(var(--rgb-black), 3%);--accordion-border: 1px solid var(--light-gray);--accordion-border-active: 1px solid var(--gray);--panel-padding: 0 1.5rem;--panel-body-padding: 0 0 1.5rem;position:relative;z-index:1}@media (max-width: 576px){.main-request-accordion{--accordion-height: 55px;--panel-padding: 0 1rem;--panel-body-padding: 0 1rem 1rem}}.main-request-accordion .inner-accordion{--accordion-height: 44px;--accordion-bc: var(--light-gray);--accordion-bc-active: var(--white);--accordion-border: 1px solid var(--light-gray);--accordion-border-active: 1px solid var(--light-gray);--panel-body-padding: 0;--accordion-shadow: none;--panel-padding: 0 1.5rem}\n"] }]
29
27
  }], ctorParameters: () => [{ type: i1.CoreI18nService }], propDecorators: { section: [{
30
28
  type: Input
31
29
  }], lov: [{
@@ -33,4 +31,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
33
31
  }], form: [{
34
32
  type: Input
35
33
  }] } });
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi1yZXF1ZXN0LWRldGFpbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL2FwcC1jb21wb25lbnQtc2VjdGlvbnMvbWFpbi1yZXF1ZXN0LWRldGFpbHMvbWFpbi1yZXF1ZXN0LWRldGFpbHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL2FwcC1jb21wb25lbnQtc2VjdGlvbnMvbWFpbi1yZXF1ZXN0LWRldGFpbHMvbWFpbi1yZXF1ZXN0LWRldGFpbHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxzQkFBc0IsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHekUsT0FBTyxFQUFDLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ2hHLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7OztBQWV2QyxNQUFNLE9BQU8sMkJBQTJCO0lBSW5CO0lBSFYsT0FBTyxDQUFVO0lBQ2pCLEdBQUcsQ0FBTTtJQUNULElBQUksQ0FBTztJQUNwQixZQUFtQixJQUFxQjtRQUFyQixTQUFJLEdBQUosSUFBSSxDQUFpQjtJQUFHLENBQUM7SUFFNUMsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsV0FBVyxLQUFLLE1BQU0sQ0FBQztJQUM3RCxDQUFDO3VHQVJVLDJCQUEyQjsyRkFBM0IsMkJBQTJCLDhJQ25CeEMsaTdCQWdCQSw4ekJESEksa0JBQWtCLG1pQkFHbEIsSUFBSTs7MkZBR0ssMkJBQTJCO2tCQWJ2QyxTQUFTOytCQUNFLDBCQUEwQixjQUd4QixJQUFJLFdBQ1AsQ0FBQyxzQkFBc0IsQ0FBQyxXQUN4Qjt3QkFDUCxrQkFBa0I7d0JBQ2xCLFlBQVk7d0JBQ1osaUJBQWlCO3dCQUNqQixJQUFJO3FCQUNMO29GQUdRLE9BQU87c0JBQWYsS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb3JlSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IEZvcm0sIFNlY3Rpb24gfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHtNYXRBY2NvcmRpb24sIE1hdEV4cGFuc2lvbk1vZHVsZSwgTWF0RXhwYW5zaW9uUGFuZWx9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2V4cGFuc2lvbic7XHJcbmltcG9ydCB7IE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtbWFpbi1yZXF1ZXN0LWRldGFpbHMnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9tYWluLXJlcXVlc3QtZGV0YWlscy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbWFpbi1yZXF1ZXN0LWRldGFpbHMuY29tcG9uZW50LnNjc3MnXSxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBNYXRFeHBhbnNpb25Nb2R1bGUsXHJcbiAgICBNYXRBY2NvcmRpb24sXHJcbiAgICBNYXRFeHBhbnNpb25QYW5lbCxcclxuICAgIE5nSWZcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNYWluUmVxdWVzdERldGFpbHNDb21wb25lbnQge1xyXG4gIEBJbnB1dCgpIHNlY3Rpb246IFNlY3Rpb247XHJcbiAgQElucHV0KCkgbG92OiBhbnk7XHJcbiAgQElucHV0KCkgZm9ybTogRm9ybTtcclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgaTE4bjogQ29yZUkxOG5TZXJ2aWNlKSB7fVxyXG5cclxuICBnZXQgaXNFeHBhbmRlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnNlY3Rpb24/LmJvZHk/LmRldGFpbHM/LmV4cGFuZFN0YWdlID09PSAndHJ1ZSc7XHJcbiAgfVxyXG59XHJcbiIsIjxtYXQtYWNjb3JkaW9uIGNsYXNzPVwicHJpbWFyeS1hY2NvcmRpb24gbWFpbi1yZXF1ZXN0LWFjY29yZGlvbiBib3JkZXItdG9wXCI+XHJcbiAgPG1hdC1leHBhbnNpb24tcGFuZWwgW2V4cGFuZGVkXT1cImlzRXhwYW5kZWQgfHwgKGZvcm0/LnNlY3Rpb25zPy5sZW5ndGggPT09IDEgKVwiIGNsYXNzPVwibWItM1wiIGhpZGVUb2dnbGUgI3JlcXVlc3RQYW5lbD1cIm1hdEV4cGFuc2lvblBhbmVsXCI+XHJcbiAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcbiAgICAgIDxoMiBjbGFzcz1cImZzLTE2IGZ3LW1lZGl1bSBmYy1jb3JhbCBtLTAgZmxleC1ncm93LTFcIj57e2kxOG4udHJhbnNsYXRlKCdyZXF1ZXN0RGV0YWlsc1RpdGxlJyl9fTwvaDI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWlubGluZS1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiICpuZ0lmPVwiIXJlcXVlc3RQYW5lbC5leHBhbmRlZFwiPlxyXG4gICAgICAgIDxkcy1pY29uIGljb249XCJwbHVzLTFcIiBjbGFzcz1cImZzLTIwIGZjLWNvcmFsXCI+PC9kcy1pY29uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImQtaW5saW5lLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCIgKm5nSWY9XCJyZXF1ZXN0UGFuZWwuZXhwYW5kZWRcIj5cclxuICAgICAgICA8ZHMtaWNvbiBpY29uPVwibWludXNcIiBjbGFzcz1cImZzLTIwIGZjLWRhcmstZ3JheVwiPjwvZHMtaWNvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG4gICAgPHNlY3Rpb24gY2xhc3M9XCJkZWZhdWx0LWJveCBib3gtc2hhZG93IHAtNFwiPlxyXG4gICAgICA8bmctY29udGVudCA+PC9uZy1jb250ZW50PlxyXG4gICAgPC9zZWN0aW9uPlxyXG4gIDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cclxuPC9tYXQtYWNjb3JkaW9uPlxyXG4iXX0=
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi1yZXF1ZXN0LWRldGFpbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL2FwcC1jb21wb25lbnQtc2VjdGlvbnMvbWFpbi1yZXF1ZXN0LWRldGFpbHMvbWFpbi1yZXF1ZXN0LWRldGFpbHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL2FwcC1jb21wb25lbnQtc2VjdGlvbnMvbWFpbi1yZXF1ZXN0LWRldGFpbHMvbWFpbi1yZXF1ZXN0LWRldGFpbHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxzQkFBc0IsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHekUsT0FBTyxFQUFDLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLDZCQUE2QixDQUFDOzs7O0FBY2hHLE1BQU0sT0FBTywyQkFBMkI7SUFJbkI7SUFIVixPQUFPLENBQVU7SUFDakIsR0FBRyxDQUFNO0lBQ1QsSUFBSSxDQUFPO0lBQ3BCLFlBQW1CLElBQXFCO1FBQXJCLFNBQUksR0FBSixJQUFJLENBQWlCO0lBQUcsQ0FBQztJQUU1QyxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLE1BQU0sQ0FBQztJQUNqRSxDQUFDO3VHQVJVLDJCQUEyQjsyRkFBM0IsMkJBQTJCLDhJQ2pCeEMsazhCQW1CQSw4ekJEUEksa0JBQWtCOzsyRkFLVCwyQkFBMkI7a0JBWnZDLFNBQVM7K0JBQ0UsMEJBQTBCLGNBR3hCLElBQUksV0FDUCxDQUFDLHNCQUFzQixDQUFDLFdBQ3hCO3dCQUNQLGtCQUFrQjt3QkFDbEIsWUFBWTt3QkFDWixpQkFBaUI7cUJBQ2xCO29GQUdRLE9BQU87c0JBQWYsS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb3JlSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IEZvcm0sIFNlY3Rpb24gfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHtNYXRBY2NvcmRpb24sIE1hdEV4cGFuc2lvbk1vZHVsZSwgTWF0RXhwYW5zaW9uUGFuZWx9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2V4cGFuc2lvbic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1tYWluLXJlcXVlc3QtZGV0YWlscycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL21haW4tcmVxdWVzdC1kZXRhaWxzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9tYWluLXJlcXVlc3QtZGV0YWlscy5jb21wb25lbnQuc2NzcyddLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgc2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIE1hdEV4cGFuc2lvbk1vZHVsZSxcclxuICAgIE1hdEFjY29yZGlvbixcclxuICAgIE1hdEV4cGFuc2lvblBhbmVsXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWFpblJlcXVlc3REZXRhaWxzQ29tcG9uZW50IHtcclxuICBASW5wdXQoKSBzZWN0aW9uOiBTZWN0aW9uO1xyXG4gIEBJbnB1dCgpIGxvdjogYW55O1xyXG4gIEBJbnB1dCgpIGZvcm06IEZvcm07XHJcbiAgY29uc3RydWN0b3IocHVibGljIGkxOG46IENvcmVJMThuU2VydmljZSkge31cclxuXHJcbiAgZ2V0IGlzRXhwYW5kZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWN0aW9uPy5ib2R5Py5kZXRhaWxzPy5bJ2V4cGFuZFN0YWdlJ10gPT09ICd0cnVlJztcclxuICB9XHJcbn1cclxuIiwiPG1hdC1hY2NvcmRpb24gY2xhc3M9XCJwcmltYXJ5LWFjY29yZGlvbiBtYWluLXJlcXVlc3QtYWNjb3JkaW9uIGJvcmRlci10b3BcIj5cclxuICA8bWF0LWV4cGFuc2lvbi1wYW5lbCBbZXhwYW5kZWRdPVwiaXNFeHBhbmRlZCB8fCAoZm9ybT8uc2VjdGlvbnM/Lmxlbmd0aCA9PT0gMSApXCIgY2xhc3M9XCJtYi0zXCIgaGlkZVRvZ2dsZSAjcmVxdWVzdFBhbmVsPVwibWF0RXhwYW5zaW9uUGFuZWxcIj5cclxuICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuICAgICAgPGgyIGNsYXNzPVwiZnMtMTYgZnctbWVkaXVtIGZjLWNvcmFsIG0tMCBmbGV4LWdyb3ctMVwiPnt7IGkxOG4udHJhbnNsYXRlKCdyZXF1ZXN0RGV0YWlsc1RpdGxlJykgfX08L2gyPlxyXG4gICAgICBAaWYgKHJlcXVlc3RQYW5lbC5leHBhbmRlZCkge1xyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWlubGluZS1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxyXG4gICAgICAgICAgPGRzLWljb24gaWNvbj1cIm1pbnVzXCIgY2xhc3M9XCJmcy0yMCBmYy1kYXJrLWdyYXlcIj48L2RzLWljb24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWlubGluZS1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxyXG4gICAgICAgICAgPGRzLWljb24gaWNvbj1cInBsdXMtMVwiIGNsYXNzPVwiZnMtMjAgZmMtY29yYWxcIj48L2RzLWljb24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIH1cclxuICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcbiAgICA8c2VjdGlvbiBjbGFzcz1cImRlZmF1bHQtYm94IGJveC1zaGFkb3cgcC00XCI+XHJcbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cclxuICAgIDwvc2VjdGlvbj5cclxuICA8L21hdC1leHBhbnNpb24tcGFuZWw+XHJcbjwvbWF0LWFjY29yZGlvbj5cclxuIl19