@ieeesa-npm/groups 0.4.7 → 0.4.9

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.
@@ -1,4 +1,42 @@
1
1
  {
2
+ "addUserRoster": {
3
+ "heading": "New System User",
4
+ "label": {
5
+ "email": "Email Address",
6
+ "rightButtonLabel": "Search & Continue",
7
+ "leftButtonLabel": "Cancel",
8
+ "saveButtonLabel": "Save",
9
+ "fullName": "Name",
10
+ "role": "Role",
11
+ "ariaLabel": {
12
+ "email": "Email Address",
13
+ "fullName": "Full name",
14
+ "role": "Role"
15
+ },
16
+ "ariaDescribedById": {
17
+ "email": "ariaEmailAddress",
18
+ "fullName": "ariaFullName",
19
+ "role": "ariaRole"
20
+ }
21
+ },
22
+ "message": {
23
+ "error": {
24
+ "required": "This field is required.",
25
+ "roleRequired": "Selection of role is required.",
26
+ "pattern": {
27
+ "email": "Please enter valid email."
28
+ }
29
+ },
30
+ "success": {
31
+ "submission": "New user added successfully."
32
+ }
33
+ },
34
+ "supportText": {
35
+ "emailAddress": "Please enter valid email address which includes @ symbol, dot (.) and domain. For example, user@ieee.org",
36
+ "fullName": "Enter user full name.",
37
+ "role": "<strong>Note:</strong> Removal of all roles shall result in removal of user from group."
38
+ }
39
+ },
2
40
  "createGroup": {
3
41
  "heading": "New Group",
4
42
  "label": {
@@ -169,7 +207,13 @@
169
207
  "1016": "Group Name must not be greater than 500 characters long.",
170
208
  "1017": "Group Short Name must not be greater than 15 characters long.",
171
209
  "1018": "Group Short Name contains invalid characters. Please enter '.',',', '/'', '-', '_' only.",
210
+ "1019": "Email address is required.",
172
211
  "1020": "Role id is required.",
212
+ "1021": "User id is required.",
213
+ "1022": "User has already been added to this group.",
214
+ "1023": "Role doesn't exists for the systems user group.",
215
+ "1024": "No user(s) found!",
216
+ "1025": "User has already been added to this group.",
173
217
  "1026": "User does not belong to the selected group.",
174
218
  "1027": "No users found for the selected role.",
175
219
  "1028": "Search by Name or Email address.",
@@ -177,7 +221,10 @@
177
221
  "1030": "No record found!",
178
222
  "1031": "No record found!",
179
223
  "1032": "No record found!",
180
- "2002": "Role does not belong to the group type."
224
+ "2001": "Email does not exists.",
225
+ "2002": "Role does not belong to the group type.",
226
+ "2010": "User details does not exist.",
227
+ "2011": "User app details does not exist."
181
228
  },
182
229
  "ariaLabel": {
183
230
  "alert": "Alert"
@@ -5,6 +5,7 @@ export const GroupsValidationPatterns = {
5
5
  // Group Short Name field regular expression which accept letters, numbers and ".","," , "/", "-" , "_" characters.
6
6
  shortName: /^(?=[a-zA-Z0-9])[a-zA-Z0-9.,\/\-_]+$/,
7
7
  // Group Scope field regular expression which accept Alpha Numeric, Special Characters and whitespace.
8
- groupScope: /^(?=.*[a-zA-Z])[\w\s!"#$%&'()*+,-.\/\:;<=>?@[\]^_`{|}~\\]+$/i
8
+ groupScope: /^(?=.*[a-zA-Z])[\w\s!"#$%&'()*+,-.\/\:;<=>?@[\]^_`{|}~\\]+$/i,
9
+ email: /^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/,
9
10
  };
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS12YWxpZGF0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dyb3Vwcy9zcmMvbGliL2Fzc2V0cy9mb3JtLXZhbGlkYXRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHNDQUFzQztBQUN0QyxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRztJQUN0Qyw4R0FBOEc7SUFDOUcsU0FBUyxFQUFFLDhEQUE4RDtJQUN6RSxtSEFBbUg7SUFDbkgsU0FBUyxFQUFFLHNDQUFzQztJQUNqRCxzR0FBc0c7SUFDdEcsVUFBVSxFQUFFLDhEQUE4RDtDQUMzRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tdXNlbGVzcy1lc2NhcGUgKi9cclxuZXhwb3J0IGNvbnN0IEdyb3Vwc1ZhbGlkYXRpb25QYXR0ZXJucyA9IHtcclxuICAvLyBHcm91cCBOYW1lIGZpZWxkIHJlZ3VsYXIgZXhwcmVzc2lvbiwgd2hpY2ggYWNjZXB0IEFscGhhIE51bWVyaWMsIFNwZWNpYWwgQ2hhcmFjdGVycyAoQVNDSUkpIGFuZCB3aGl0ZXNwYWNlLlxyXG4gIGdyb3VwTmFtZTogL14oPz0uKlthLXpBLVpdKVtcXHdcXHMhXCIjJCUmJygpKissLS5cXC9cXDo7PD0+P0BbXFxdXl9ge3x9flxcXFxdKyQvaSxcclxuICAvLyBHcm91cCBTaG9ydCBOYW1lIGZpZWxkIHJlZ3VsYXIgZXhwcmVzc2lvbiB3aGljaCBhY2NlcHQgbGV0dGVycywgbnVtYmVycyBhbmQgXCIuXCIsXCIsXCIgLCBcIi9cIiwgXCItXCIgLCBcIl9cIiBjaGFyYWN0ZXJzLlxyXG4gIHNob3J0TmFtZTogL14oPz1bYS16QS1aMC05XSlbYS16QS1aMC05LixcXC9cXC1fXSskLyxcclxuICAvLyBHcm91cCBTY29wZSBmaWVsZCByZWd1bGFyIGV4cHJlc3Npb24gd2hpY2ggYWNjZXB0IEFscGhhIE51bWVyaWMsIFNwZWNpYWwgQ2hhcmFjdGVycyBhbmQgd2hpdGVzcGFjZS5cclxuICBncm91cFNjb3BlOiAvXig/PS4qW2EtekEtWl0pW1xcd1xccyFcIiMkJSYnKCkqKywtLlxcL1xcOjs8PT4/QFtcXF1eX2B7fH1+XFxcXF0rJC9pXHJcbn07Il19
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS12YWxpZGF0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dyb3Vwcy9zcmMvbGliL2Fzc2V0cy9mb3JtLXZhbGlkYXRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHNDQUFzQztBQUN0QyxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRztJQUN0Qyw4R0FBOEc7SUFDOUcsU0FBUyxFQUFFLDhEQUE4RDtJQUN6RSxtSEFBbUg7SUFDbkgsU0FBUyxFQUFFLHNDQUFzQztJQUNqRCxzR0FBc0c7SUFDdEcsVUFBVSxFQUFFLDhEQUE4RDtJQUMxRSxLQUFLLEVBQUUsa0NBQWtDO0NBQzFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby11c2VsZXNzLWVzY2FwZSAqL1xyXG5leHBvcnQgY29uc3QgR3JvdXBzVmFsaWRhdGlvblBhdHRlcm5zID0ge1xyXG4gIC8vIEdyb3VwIE5hbWUgZmllbGQgcmVndWxhciBleHByZXNzaW9uLCB3aGljaCBhY2NlcHQgQWxwaGEgTnVtZXJpYywgU3BlY2lhbCBDaGFyYWN0ZXJzIChBU0NJSSkgYW5kIHdoaXRlc3BhY2UuXHJcbiAgZ3JvdXBOYW1lOiAvXig/PS4qW2EtekEtWl0pW1xcd1xccyFcIiMkJSYnKCkqKywtLlxcL1xcOjs8PT4/QFtcXF1eX2B7fH1+XFxcXF0rJC9pLFxyXG4gIC8vIEdyb3VwIFNob3J0IE5hbWUgZmllbGQgcmVndWxhciBleHByZXNzaW9uIHdoaWNoIGFjY2VwdCBsZXR0ZXJzLCBudW1iZXJzIGFuZCBcIi5cIixcIixcIiAsIFwiL1wiLCBcIi1cIiAsIFwiX1wiIGNoYXJhY3RlcnMuXHJcbiAgc2hvcnROYW1lOiAvXig/PVthLXpBLVowLTldKVthLXpBLVowLTkuLFxcL1xcLV9dKyQvLFxyXG4gIC8vIEdyb3VwIFNjb3BlIGZpZWxkIHJlZ3VsYXIgZXhwcmVzc2lvbiB3aGljaCBhY2NlcHQgQWxwaGEgTnVtZXJpYywgU3BlY2lhbCBDaGFyYWN0ZXJzIGFuZCB3aGl0ZXNwYWNlLlxyXG4gIGdyb3VwU2NvcGU6IC9eKD89LipbYS16QS1aXSlbXFx3XFxzIVwiIyQlJicoKSorLC0uXFwvXFw6Ozw9Pj9AW1xcXV5fYHt8fX5cXFxcXSskL2ksXHJcbiAgZW1haWw6IC9eW1xcdy1cXC5dK0AoW1xcdy1dK1xcLikrW1xcdy1dezIsNH0kLyxcclxufTsiXX0=
@@ -0,0 +1,344 @@
1
+ import { Component, EventEmitter, Output, ViewEncapsulation, } from '@angular/core';
2
+ import { Validators } from '@angular/forms';
3
+ import { CommonModule } from '@angular/common';
4
+ import { MatDialogModule } from '@angular/material/dialog';
5
+ import { Subject } from 'rxjs';
6
+ import { takeUntil } from 'rxjs/operators';
7
+ import { AlertsService, AlertType, } from '@ieeesa-npm/utility';
8
+ import { DynamicFormComponent, FormControlType, AlignType, SearchType, } from '@ieeesa-npm/presentation';
9
+ import * as screenTexts from '../../assets/constants.json';
10
+ import { GroupsValidationPatterns } from '../../assets/form-validations';
11
+ import { HttpErrorResponse } from '@angular/common/http';
12
+ import { FormStatus } from '../../models/form-status.model';
13
+ import * as i0 from "@angular/core";
14
+ import * as i1 from "../../services/groups.service";
15
+ import * as i2 from "@ieeesa-npm/utility";
16
+ import * as i3 from "@angular/common";
17
+ /**
18
+ * Component implements the view and functionalities to add group users to roster.
19
+ * @export
20
+ * @class AddUserRosterComponent
21
+ * @implements {OnInit}
22
+ * @implements {OnDestroy}
23
+ */
24
+ export class AddUserRosterComponent {
25
+ constructor(
26
+ // eslint-disable-next-line no-unused-vars
27
+ groupService,
28
+ // eslint-disable-next-line no-unused-vars
29
+ globalErrorHandlerService,
30
+ // eslint-disable-next-line no-unused-vars
31
+ alertService // eslint-disable-next-line no-empty-function
32
+ ) {
33
+ this.groupService = groupService;
34
+ this.globalErrorHandlerService = globalErrorHandlerService;
35
+ this.alertService = alertService;
36
+ this.destroy$ = new Subject();
37
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
38
+ this.constants = screenTexts;
39
+ this.addUserRosterTexts = this.constants?.addUserRoster;
40
+ this.leftButtonLabel = this.addUserRosterTexts?.label?.leftButtonLabel;
41
+ this.rightButtonLabel = this.addUserRosterTexts?.label?.rightButtonLabel;
42
+ this.isSubmitButtonDisabled = false;
43
+ this.colWidth = { xs: 12, xl: 12, sm: 12, md: 12, lg: 12 };
44
+ this.actionButtonAlign = AlignType.LEFT;
45
+ this.isSearchUserForm = true;
46
+ this.userRoles = [];
47
+ this.selectedUserRoles = [];
48
+ this.isAddUserFormEmailSearch = false;
49
+ this.submitFormResponse = new EventEmitter();
50
+ this.formCancel = new EventEmitter();
51
+ }
52
+ /**
53
+ * Initializes user roles and searchUserFormGroup.
54
+ * @memberof AddUserRosterComponent
55
+ */
56
+ ngOnInit() {
57
+ this.userRoles = this.groupService.getGroupTypeUserRoles();
58
+ this.createSearchUserFormGroup();
59
+ }
60
+ /**
61
+ * Creates search user form group
62
+ * @memberof AddUserRosterComponent
63
+ */
64
+ createSearchUserFormGroup() {
65
+ this.searchUserFormGroup = {
66
+ formGroup: [
67
+ {
68
+ legend: '',
69
+ controls: [
70
+ {
71
+ type: FormControlType.INPUT,
72
+ label: this.addUserRosterTexts?.label?.email + '*',
73
+ controlName: 'emailAddress',
74
+ requiredErrorMessage: this.addUserRosterTexts?.message?.error?.required,
75
+ isEmail: true,
76
+ supportMessage: this.addUserRosterTexts?.supportText?.emailAddress,
77
+ patternErrorMessage: this.addUserRosterTexts?.message?.error?.pattern?.email,
78
+ validation: [
79
+ Validators.required,
80
+ Validators.pattern(GroupsValidationPatterns.email),
81
+ ],
82
+ ariaLabel: this.addUserRosterTexts?.label?.ariaLabel?.email,
83
+ ariaDescribedById: this.addUserRosterTexts?.label?.ariaDescribedById?.email,
84
+ },
85
+ ],
86
+ },
87
+ ],
88
+ };
89
+ }
90
+ /**
91
+ * Checks form validity and searches the user by entered email.
92
+ * @param {FormGroup[]} form
93
+ * @memberof AddUserRosterComponent
94
+ */
95
+ onSearchUserFormSubmit(form) {
96
+ this.isAddUserFormEmailSearch = false;
97
+ if (form[0]?.status === FormStatus.VALID) {
98
+ this.searchUserByEmail(form[0].getRawValue()?.emailAddress);
99
+ }
100
+ }
101
+ /**
102
+ * Searches the user by entered email and gets the user details when the email id is found.
103
+ * @param {string} email
104
+ * @memberof AddUserRosterComponent
105
+ */
106
+ searchUserByEmail(email) {
107
+ this.groupService
108
+ .getUserByEmail(email)
109
+ .pipe(takeUntil(this.destroy$))
110
+ .subscribe({
111
+ next: (res) => {
112
+ if (res?.status) {
113
+ this.userInfo = res?.body;
114
+ this.validateUserExistence();
115
+ }
116
+ },
117
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
118
+ error: (error) => {
119
+ this.handleErrors(error);
120
+ },
121
+ });
122
+ }
123
+ /**
124
+ * Validates whether the user is exists in the selected group and then creates add user form when the user does not exist in the selected group.
125
+ * @memberof AddUserRosterComponent
126
+ */
127
+ validateUserExistence() {
128
+ const payload = {
129
+ payload: {
130
+ groupId: this.groupService.getSelectedGroupInfo()?.groupId,
131
+ userId: this.userInfo?.userId,
132
+ },
133
+ };
134
+ this.groupService
135
+ .getGroupUserDetails(payload)
136
+ .pipe(takeUntil(this.destroy$))
137
+ ?.subscribe({
138
+ next: () => {
139
+ this.alertService.showMessage({
140
+ status: 'custom',
141
+ message: this.constants?.errors?.['1022'],
142
+ alertType: AlertType.ERROR,
143
+ isCloseNeeded: true,
144
+ });
145
+ },
146
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
147
+ error: (error) => {
148
+ const errorCodes = error?.error?.body?.errorCodes;
149
+ if (errorCodes?.includes('1026')) {
150
+ this.isSearchUserForm = false;
151
+ this.rightButtonLabel =
152
+ this.addUserRosterTexts?.label?.saveButtonLabel;
153
+ if (!this.isAddUserFormEmailSearch) {
154
+ this.selectedUserRoles = [];
155
+ this.isSubmitButtonDisabled = true;
156
+ this.addUserFormGroup = {
157
+ formGroup: [
158
+ {
159
+ legend: '',
160
+ controls: [
161
+ {
162
+ type: FormControlType.SEARCH,
163
+ label: this.addUserRosterTexts?.label?.email + '*',
164
+ controlName: 'emailSearch',
165
+ value: this.userInfo?.email,
166
+ searchType: SearchType.ON_CLICK,
167
+ validation: [
168
+ Validators.required,
169
+ Validators.pattern(GroupsValidationPatterns.email),
170
+ ],
171
+ supportMessage: this.addUserRosterTexts?.supportText?.emailAddress,
172
+ requiredErrorMessage: this.addUserRosterTexts?.message?.error?.required,
173
+ patternErrorMessage: this.addUserRosterTexts?.message?.error?.pattern
174
+ ?.email,
175
+ ariaLabel: this.addUserRosterTexts?.label?.ariaLabel?.email,
176
+ ariaDescribedById: this.addUserRosterTexts?.label?.ariaDescribedById
177
+ ?.email,
178
+ },
179
+ {
180
+ type: FormControlType.TEXT_AREA,
181
+ label: this.addUserRosterTexts?.label?.fullName + '*',
182
+ controlName: 'fullName',
183
+ value: this.userInfo?.name,
184
+ validation: [Validators.required],
185
+ requiredErrorMessage: this.addUserRosterTexts?.message?.error?.required,
186
+ isReadonly: true,
187
+ ariaMultiline: false,
188
+ ariaLabel: this.addUserRosterTexts?.label?.ariaLabel?.fullName,
189
+ ariaDescribedById: this.addUserRosterTexts?.label?.ariaDescribedById
190
+ ?.fullName,
191
+ },
192
+ {
193
+ type: FormControlType.CHECKBOX,
194
+ label: this.addUserRosterTexts?.label?.role + '*',
195
+ controlName: 'roles',
196
+ checkboxOptions: this.userRoles,
197
+ minSelectionRequired: 1,
198
+ ariaLabel: this.addUserRosterTexts?.label?.ariaLabel?.role,
199
+ ariaDescribedById: this.addUserRosterTexts?.label?.ariaDescribedById
200
+ ?.role,
201
+ supportMessage: this.addUserRosterTexts?.supportText?.role,
202
+ requiredErrorMessage: this.addUserRosterTexts?.message?.error?.roleRequired,
203
+ validation: [Validators.required],
204
+ },
205
+ ],
206
+ },
207
+ ],
208
+ };
209
+ }
210
+ else {
211
+ this.addUserFormGroupRef
212
+ ?.get('emailSearch')
213
+ ?.setValue(this.userInfo?.email);
214
+ this.addUserFormGroupRef
215
+ ?.get('fullName')
216
+ ?.setValue(this.userInfo?.name);
217
+ this.isSubmitButtonDisabled =
218
+ this.selectedUserRoles?.length === 0;
219
+ }
220
+ }
221
+ else
222
+ this.handleErrors(error);
223
+ },
224
+ });
225
+ }
226
+ /**
227
+ * Handles add user form email search
228
+ * @param {string} email
229
+ * @memberof AddUserRosterComponent
230
+ */
231
+ formSearchApply(email) {
232
+ this.isAddUserFormEmailSearch = true;
233
+ if (email.trim())
234
+ this.searchUserByEmail(email.trim());
235
+ else {
236
+ this.userInfo.name = '';
237
+ this.addUserFormGroupRef?.get('fullName')?.setValue('');
238
+ this.isSubmitButtonDisabled = true;
239
+ }
240
+ }
241
+ /**
242
+ * Assigns role to user on form submission.
243
+ * @param {FormGroup[]} form
244
+ * @memberof AddUserRosterComponent
245
+ */
246
+ onAddUserFormSubmit(form) {
247
+ form[0]?.markAllAsTouched();
248
+ if (form[0].status === FormStatus.VALID) {
249
+ const payload = {
250
+ payload: {
251
+ email: this.userInfo?.email,
252
+ roles: this.selectedUserRoles,
253
+ userId: this.userInfo?.userId,
254
+ groupId: this.groupService.selectedGroupInfo?.groupId,
255
+ },
256
+ };
257
+ this.groupService
258
+ .addNewGroupUser(payload)
259
+ .pipe(takeUntil(this.destroy$))
260
+ .subscribe({
261
+ next: (res) => {
262
+ if (res?.status) {
263
+ this.submitFormResponse.emit(res);
264
+ }
265
+ },
266
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
267
+ error: (error) => {
268
+ this.handleErrors(error);
269
+ },
270
+ });
271
+ }
272
+ }
273
+ /**
274
+ * Get add user form group reference.
275
+ * @param {FormGroup[]} form
276
+ * @memberof AddUserRosterComponent
277
+ */
278
+ getAddUserFormGroupRef(form) {
279
+ this.addUserFormGroupRef = form[0];
280
+ }
281
+ /**
282
+ * Handles user role selection in add user form.
283
+ * @param {CheckboxOption} event
284
+ * @memberof AddUserRosterComponent
285
+ */
286
+ onUserRoleSelection(event) {
287
+ if (event?.checked) {
288
+ this.selectedUserRoles?.push(event.id);
289
+ }
290
+ else {
291
+ this.selectedUserRoles = this.selectedUserRoles.filter((value) => value !== event.id);
292
+ }
293
+ this.isSubmitButtonDisabled = this.selectedUserRoles?.length === 0;
294
+ }
295
+ /**
296
+ * Emits form cancel event.
297
+ * @memberof AddUserRosterComponent
298
+ */
299
+ onFormCancel() {
300
+ this.formCancel.emit();
301
+ }
302
+ /**
303
+ * Handles the custom errors while searching user by email, validating user existence and adding new user to roster.
304
+ * @param {*} error
305
+ * @memberof AddUserRosterComponent
306
+ */
307
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
308
+ handleErrors(error) {
309
+ const errorCodes = error?.error?.body?.errorCodes;
310
+ if (Array.isArray(errorCodes) && !error?.error?.status) {
311
+ const errorMessage = this.groupService.parseErrorMessage(errorCodes);
312
+ this.alertService.showMessage({
313
+ status: 'custom',
314
+ message: errorMessage,
315
+ alertType: AlertType.ERROR,
316
+ isCloseNeeded: true,
317
+ });
318
+ }
319
+ else if (error && error instanceof HttpErrorResponse) {
320
+ this.globalErrorHandlerService.handleError(error);
321
+ }
322
+ }
323
+ /**
324
+ * NgOnDestroy performs necessary cleanup tasks, such as unsubscribing from subscription when the component is being destroyed.
325
+ * @memberof AddUserRosterComponent
326
+ */
327
+ ngOnDestroy() {
328
+ if (this.destroy$) {
329
+ this.destroy$.next(true);
330
+ this.destroy$.unsubscribe();
331
+ }
332
+ }
333
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: AddUserRosterComponent, deps: [{ token: i1.GroupsService }, { token: i2.GlobalErrorHandlerService }, { token: i2.AlertsService }], target: i0.ɵɵFactoryTarget.Component }); }
334
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.3", type: AddUserRosterComponent, isStandalone: true, selector: "ieeesa-add-user-roster", outputs: { submitFormResponse: "submitFormResponse", formCancel: "formCancel" }, providers: [AlertsService], ngImport: i0, template: "<ieeesa-dynamic-form\r\n *ngIf=\"searchUserFormGroup && isSearchUserForm\"\r\n class=\"ieeesa-search-user-form\"\r\n [leftButtonLabel]=\"leftButtonLabel\"\r\n [rightButtonLabel]=\"rightButtonLabel\"\r\n [isLegendVisible]=\"false\"\r\n [colWidth]=\"colWidth\"\r\n [actionButtonAlign]=\"actionButtonAlign\"\r\n [formGroups]=\"searchUserFormGroup\"\r\n [isLeftButtonNeeded]=\"true\"\r\n (formSubmit)=\"onSearchUserFormSubmit($event)\"\r\n (formLeftButtonClicked)=\"onFormCancel()\"\r\n></ieeesa-dynamic-form>\r\n\r\n<ieeesa-dynamic-form\r\n *ngIf=\"addUserFormGroup && !isSearchUserForm\"\r\n class=\"ieeesa-add-user-form\"\r\n [leftButtonLabel]=\"leftButtonLabel\"\r\n [rightButtonLabel]=\"rightButtonLabel\"\r\n [isLegendVisible]=\"false\"\r\n [isSubmitButtonDisabled]=\"isSubmitButtonDisabled\"\r\n [colWidth]=\"colWidth\"\r\n [actionButtonAlign]=\"actionButtonAlign\"\r\n [formGroups]=\"addUserFormGroup\"\r\n [isLeftButtonNeeded]=\"true\"\r\n (formSubmit)=\"onAddUserFormSubmit($event)\"\r\n (formSearchApply)=\"formSearchApply($event)\"\r\n (formLeftButtonClicked)=\"onFormCancel()\"\r\n (formGroupsReference)=\"getAddUserFormGroupRef($event)\"\r\n (formCheckboxSelection)=\"onUserRoleSelection($event)\"\r\n></ieeesa-dynamic-form>\r\n", styles: [".ieeesa-subtitle{text-align:left;font-family:Calibri Regular;font-size:1.56em;letter-spacing:0;color:#000;opacity:1}.ieeesa-body{text-align:left;font-family:Calibri Regular;font-size:1.25em;letter-spacing:0;color:#000;opacity:1}.ieeesa-display-lg-57{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:3.5625em;line-height:64px;color:#000;letter-spacing:0}.ieeesa-display-md-45{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.813em;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-md-47{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.9375em;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-sm-38{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.375em;line-height:44px;color:#000;letter-spacing:0}.ieeesa-headline-lg-34{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.125em;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-md-30{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.875em;line-height:36px;color:#000;letter-spacing:0}.ieeesa-headline-sm-26{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.625em;line-height:32px;color:#000;letter-spacing:0}.ieeesa-title-lg-bold-24{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.5em;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-lg-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5em;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-md-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125em;line-height:24px;color:#000;letter-spacing:.009375em}.ieeesa-title-sm-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1em;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1em;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1em;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875em;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-label-sm-13{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.8125em;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-18{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.125em;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125em;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-md-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1em;line-height:20px;color:#000;letter-spacing:.015625em}.ieeesa-body-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875em;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-sm-bold-14{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:.875em;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-title-inter-lg-bold-24{font-family:Inter Bold;font-style:normal;font-weight:700;font-size:1.5em;line-height:29px;color:#000;letter-spacing:0}.mat-mdc-button.mat-mdc-button-base.mat-primary-button,.mat-mdc-button.mat-mdc-button-base.mat-secondary-button,.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button,.mat-mdc-button.mat-mdc-button-base.mat-text-button{min-width:103px;width:auto;min-height:40px;height:auto;border-radius:3px;text-align:center;padding:.625em 1.5em;border:none;font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1em;line-height:20px;color:#000;letter-spacing:.00625em}.mat-mdc-button.mat-mdc-button-base>.mat-icon{margin-right:11px}.mat-mdc-button.mat-mdc-button-base.mat-primary-button{background-color:#00629b;color:#fff}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:hover{background-color:#003e65}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:active{background-color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:disabled{background-color:#1c1b1f1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button{color:#fff;background:#a7a8aa;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:hover{background:#a7a8aa}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:active{background:rgba(29,25,43,.12)}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:disabled{background:rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button{background-color:#fff;border:1px solid #00629b;color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:hover{background-color:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:active{background:rgba(103,80,164,.12)}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:disabled{border:1px solid rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-text-button{color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-text-button:hover,.mat-mdc-button.mat-mdc-button-base.mat-text-button:active{background:rgba(103,80,164,.08)}.mat-mdc-button.mat-mdc-button-base.mat-text-button:disabled{color:#1c1b1f;opacity:.38}.ieeesa-text-button{color:#cac4d0;background:none;border:none}.ieeesa-view-more-or-less-button{border:none;background:none;text-decoration:underline;color:#00629b}.flex-align-center{display:flex;align-items:center;justify-content:center}.mat-button-toggle-checked{background-color:#a7a8aa}.mat-button-toggle-checked .mat-button-toggle-label-content:before{font-family:\"Font Awesome 5 Free\";font-weight:900;content:\"\\f00c\";padding-right:.5625em}.mat-button-toggle-group .mat-button-toggle-label-content{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1em;line-height:20px;color:#1c1b1f;letter-spacing:.00625em}.no-bg-color-btn{color:#00629b;border-radius:3px;border:1px solid #00629b;min-height:40px;height:auto}@media (max-width: 768px){.mat-button-toggle-group .mat-button-toggle-label-content{max-width:8ch;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;position:relative}}.cdk-overlay-pane .mat-mdc-tooltip .mdc-tooltip__surface{color:#525252;padding:6px 12px;font-family:Calibri Regular;font-size:1em;border:1px solid #cac4d0;background:#ffffff;box-shadow:0 4px 8px #00000040;max-width:unset!important}.cdk-overlay-pane .mat-mdc-option .mdc-list-item__primary-text{font-family:Calibri Regular!important}.cdk-overlay-pane.ieeesa-modal-confirm-dialog,.cdk-overlay-pane.ieeesa-modal-dialog,.cdk-overlay-pane.ieeesa-alert-dialog{width:100%;min-width:312px}.mat-mdc-form-field{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125em;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-modal-dialog.ieeesa-add-user-roster{max-width:97vw!important}.ieeesa-modal-dialog.ieeesa-add-user-roster .mat-mdc-dialog-container{box-shadow:none}.ieeesa-modal-dialog.ieeesa-add-user-roster .mat-mdc-dialog-surface{border-radius:0;margin:1em 0}.ieeesa-modal-dialog.ieeesa-add-user-roster .ieeesa-modal{box-shadow:0 3px #11b7e5 inset,0 4px 24px #00000080;padding-bottom:.5em}.ieeesa-modal-dialog.ieeesa-add-user-roster .ieeesa-modal .mat-mdc-dialog-content{padding:1.5em 1em .75em!important}.ieeesa-search-user-form .ieeesa-dynamic-form__actions,.ieeesa-add-user-form .ieeesa-dynamic-form__actions{flex-direction:row-reverse;gap:1.5em;padding:3em 1em .75em 0}.ieeesa-search-user-form .ieeesa-dynamic-form__form-field,.ieeesa-add-user-form .ieeesa-dynamic-form__form-field{margin-bottom:1em;padding:0}.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-input-field .mat-mdc-form-field,.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-search-field .mat-mdc-form-field,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-input-field .mat-mdc-form-field,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-search-field .mat-mdc-form-field{display:flex;min-height:40px}.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-input-field .mat-mdc-text-field-wrapper,.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-search-field .mat-mdc-text-field-wrapper,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-input-field .mat-mdc-text-field-wrapper,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-search-field .mat-mdc-text-field-wrapper{padding:.5em 1em}.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-input-field__label,.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-input-field__support-text,.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-search-field__label,.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-search-field__support-text,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-input-field__label,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-input-field__support-text,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-search-field__label,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-search-field__support-text{color:#49454f}.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-input-field__content,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-input-field__content,.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-input-field__icon--warning,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-input-field__icon--warning{position:relative;bottom:10px}.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-search-field__search-icon,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-search-field__search-icon{color:#49454f}.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-search-field__button,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-search-field__button{position:relative;top:2px}.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-search-field__content,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-search-field__content{position:relative;bottom:15px}.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-search-field .mat-mdc-form-field,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-search-field .mat-mdc-form-field{width:100%;font-size:1em;border-bottom:2px solid #918f90;border-radius:4px 4px 0 0;height:40px;align-items:center;background:linear-gradient(0deg,rgba(0,98,155,.05) 0%,rgba(0,98,155,.05) 100%),#fffbfe}.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-search-field .mat-mdc-form-field .mdc-notched-outline__leading,.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-search-field .mat-mdc-form-field .mdc-notched-outline__notch,.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-search-field .mat-mdc-form-field .mdc-notched-outline__trailing,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-search-field .mat-mdc-form-field .mdc-notched-outline__leading,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-search-field .mat-mdc-form-field .mdc-notched-outline__notch,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-search-field .mat-mdc-form-field .mdc-notched-outline__trailing{border:none}.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-search-field .mat-form-field-invalid,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-search-field .mat-form-field-invalid{border-bottom:2px solid #ba0c2f}.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-search-field .mat-mdc-form-field.mat-focused:not(.mat-form-field-invalid),.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-search-field .mat-mdc-form-field.mat-focused:not(.mat-form-field-invalid){border-bottom:2px solid #00629b}.ieeesa-search-user-form .ieeesa-dynamic-form .full-name.ieeesa-dynamic-form__form-field,.ieeesa-add-user-form .ieeesa-dynamic-form .full-name.ieeesa-dynamic-form__form-field{margin-bottom:.4em}.ieeesa-search-user-form .ieeesa-dynamic-form .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-text-field-wrapper,.ieeesa-search-user-form .ieeesa-dynamic-form .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-form-field-focus-overlay,.ieeesa-add-user-form .ieeesa-dynamic-form .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-text-field-wrapper,.ieeesa-add-user-form .ieeesa-dynamic-form .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-form-field-focus-overlay{background:#ffffff;padding:0}.ieeesa-search-user-form .ieeesa-dynamic-form .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-infix,.ieeesa-search-user-form .ieeesa-dynamic-form .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-form-field-focus-overlay .mat-mdc-form-field-infix,.ieeesa-add-user-form .ieeesa-dynamic-form .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-infix,.ieeesa-add-user-form .ieeesa-dynamic-form .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-form-field-focus-overlay .mat-mdc-form-field-infix{min-height:2.375em;padding-top:.0625em;padding-bottom:.375em}.ieeesa-search-user-form .ieeesa-dynamic-form .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mdc-line-ripple:before,.ieeesa-search-user-form .ieeesa-dynamic-form .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mdc-line-ripple:after,.ieeesa-add-user-form .ieeesa-dynamic-form .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mdc-line-ripple:before,.ieeesa-add-user-form .ieeesa-dynamic-form .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mdc-line-ripple:after{border:0}.ieeesa-search-user-form .ieeesa-dynamic-form__actions--right-btn{min-width:175px!important}.mdc-checkbox__background{border-color:unset;background-color:unset}.ieeesa-form-error--text{padding:.25em 1em 0}.mat-mdc-form-field-subscript-wrapper{display:none}@media (min-width: 767px){.ieeesa-search-user-form .email-search .ieeesa-input-field .mat-mdc-form-field,.ieeesa-search-user-form .email-search .ieeesa-search-field .mat-mdc-form-field,.ieeesa-search-user-form .email-address .ieeesa-input-field .mat-mdc-form-field,.ieeesa-search-user-form .email-address .ieeesa-search-field .mat-mdc-form-field,.ieeesa-add-user-form .email-search .ieeesa-input-field .mat-mdc-form-field,.ieeesa-add-user-form .email-search .ieeesa-search-field .mat-mdc-form-field,.ieeesa-add-user-form .email-address .ieeesa-input-field .mat-mdc-form-field,.ieeesa-add-user-form .email-address .ieeesa-search-field .mat-mdc-form-field{width:32%}.ieeesa-modal-dialog.ieeesa-add-user-roster{max-width:80vw!important}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: DynamicFormComponent, selector: "ieeesa-dynamic-form", inputs: ["formGroups", "submitResponse", "searchResponse", "colWidth", "isLegendVisible", "rightButtonLabel", "leftButtonLabel", "isSubmitButtonDisabled", "isLeftButtonDisabled", "isLeftButtonNeeded", "actionButtonAlign"], outputs: ["formSubmit", "formChange", "formInput", "formLeftButtonClicked", "formSearchApply", "formGroupsReference", "dropdownChange", "formCheckboxSelection", "formDateSelected", "formSelectSearch", "formControlChange", "formAutoCompleteSearch", "autoCompleteOptionSelected", "formAfterContentInit", "formSelectedDateRange"], exportAs: ["dynamicForm"] }, { kind: "ngmodule", type: MatDialogModule }], encapsulation: i0.ViewEncapsulation.None }); }
335
+ }
336
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: AddUserRosterComponent, decorators: [{
337
+ type: Component,
338
+ args: [{ selector: 'ieeesa-add-user-roster', standalone: true, imports: [CommonModule, DynamicFormComponent, MatDialogModule], encapsulation: ViewEncapsulation.None, providers: [AlertsService], template: "<ieeesa-dynamic-form\r\n *ngIf=\"searchUserFormGroup && isSearchUserForm\"\r\n class=\"ieeesa-search-user-form\"\r\n [leftButtonLabel]=\"leftButtonLabel\"\r\n [rightButtonLabel]=\"rightButtonLabel\"\r\n [isLegendVisible]=\"false\"\r\n [colWidth]=\"colWidth\"\r\n [actionButtonAlign]=\"actionButtonAlign\"\r\n [formGroups]=\"searchUserFormGroup\"\r\n [isLeftButtonNeeded]=\"true\"\r\n (formSubmit)=\"onSearchUserFormSubmit($event)\"\r\n (formLeftButtonClicked)=\"onFormCancel()\"\r\n></ieeesa-dynamic-form>\r\n\r\n<ieeesa-dynamic-form\r\n *ngIf=\"addUserFormGroup && !isSearchUserForm\"\r\n class=\"ieeesa-add-user-form\"\r\n [leftButtonLabel]=\"leftButtonLabel\"\r\n [rightButtonLabel]=\"rightButtonLabel\"\r\n [isLegendVisible]=\"false\"\r\n [isSubmitButtonDisabled]=\"isSubmitButtonDisabled\"\r\n [colWidth]=\"colWidth\"\r\n [actionButtonAlign]=\"actionButtonAlign\"\r\n [formGroups]=\"addUserFormGroup\"\r\n [isLeftButtonNeeded]=\"true\"\r\n (formSubmit)=\"onAddUserFormSubmit($event)\"\r\n (formSearchApply)=\"formSearchApply($event)\"\r\n (formLeftButtonClicked)=\"onFormCancel()\"\r\n (formGroupsReference)=\"getAddUserFormGroupRef($event)\"\r\n (formCheckboxSelection)=\"onUserRoleSelection($event)\"\r\n></ieeesa-dynamic-form>\r\n", styles: [".ieeesa-subtitle{text-align:left;font-family:Calibri Regular;font-size:1.56em;letter-spacing:0;color:#000;opacity:1}.ieeesa-body{text-align:left;font-family:Calibri Regular;font-size:1.25em;letter-spacing:0;color:#000;opacity:1}.ieeesa-display-lg-57{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:3.5625em;line-height:64px;color:#000;letter-spacing:0}.ieeesa-display-md-45{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.813em;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-md-47{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.9375em;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-sm-38{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.375em;line-height:44px;color:#000;letter-spacing:0}.ieeesa-headline-lg-34{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.125em;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-md-30{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.875em;line-height:36px;color:#000;letter-spacing:0}.ieeesa-headline-sm-26{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.625em;line-height:32px;color:#000;letter-spacing:0}.ieeesa-title-lg-bold-24{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.5em;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-lg-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5em;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-md-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125em;line-height:24px;color:#000;letter-spacing:.009375em}.ieeesa-title-sm-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1em;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1em;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1em;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875em;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-label-sm-13{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.8125em;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-18{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.125em;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125em;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-md-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1em;line-height:20px;color:#000;letter-spacing:.015625em}.ieeesa-body-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875em;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-sm-bold-14{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:.875em;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-title-inter-lg-bold-24{font-family:Inter Bold;font-style:normal;font-weight:700;font-size:1.5em;line-height:29px;color:#000;letter-spacing:0}.mat-mdc-button.mat-mdc-button-base.mat-primary-button,.mat-mdc-button.mat-mdc-button-base.mat-secondary-button,.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button,.mat-mdc-button.mat-mdc-button-base.mat-text-button{min-width:103px;width:auto;min-height:40px;height:auto;border-radius:3px;text-align:center;padding:.625em 1.5em;border:none;font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1em;line-height:20px;color:#000;letter-spacing:.00625em}.mat-mdc-button.mat-mdc-button-base>.mat-icon{margin-right:11px}.mat-mdc-button.mat-mdc-button-base.mat-primary-button{background-color:#00629b;color:#fff}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:hover{background-color:#003e65}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:active{background-color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:disabled{background-color:#1c1b1f1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button{color:#fff;background:#a7a8aa;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:hover{background:#a7a8aa}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:active{background:rgba(29,25,43,.12)}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:disabled{background:rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button{background-color:#fff;border:1px solid #00629b;color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:hover{background-color:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:active{background:rgba(103,80,164,.12)}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:disabled{border:1px solid rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-text-button{color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-text-button:hover,.mat-mdc-button.mat-mdc-button-base.mat-text-button:active{background:rgba(103,80,164,.08)}.mat-mdc-button.mat-mdc-button-base.mat-text-button:disabled{color:#1c1b1f;opacity:.38}.ieeesa-text-button{color:#cac4d0;background:none;border:none}.ieeesa-view-more-or-less-button{border:none;background:none;text-decoration:underline;color:#00629b}.flex-align-center{display:flex;align-items:center;justify-content:center}.mat-button-toggle-checked{background-color:#a7a8aa}.mat-button-toggle-checked .mat-button-toggle-label-content:before{font-family:\"Font Awesome 5 Free\";font-weight:900;content:\"\\f00c\";padding-right:.5625em}.mat-button-toggle-group .mat-button-toggle-label-content{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1em;line-height:20px;color:#1c1b1f;letter-spacing:.00625em}.no-bg-color-btn{color:#00629b;border-radius:3px;border:1px solid #00629b;min-height:40px;height:auto}@media (max-width: 768px){.mat-button-toggle-group .mat-button-toggle-label-content{max-width:8ch;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;position:relative}}.cdk-overlay-pane .mat-mdc-tooltip .mdc-tooltip__surface{color:#525252;padding:6px 12px;font-family:Calibri Regular;font-size:1em;border:1px solid #cac4d0;background:#ffffff;box-shadow:0 4px 8px #00000040;max-width:unset!important}.cdk-overlay-pane .mat-mdc-option .mdc-list-item__primary-text{font-family:Calibri Regular!important}.cdk-overlay-pane.ieeesa-modal-confirm-dialog,.cdk-overlay-pane.ieeesa-modal-dialog,.cdk-overlay-pane.ieeesa-alert-dialog{width:100%;min-width:312px}.mat-mdc-form-field{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125em;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-modal-dialog.ieeesa-add-user-roster{max-width:97vw!important}.ieeesa-modal-dialog.ieeesa-add-user-roster .mat-mdc-dialog-container{box-shadow:none}.ieeesa-modal-dialog.ieeesa-add-user-roster .mat-mdc-dialog-surface{border-radius:0;margin:1em 0}.ieeesa-modal-dialog.ieeesa-add-user-roster .ieeesa-modal{box-shadow:0 3px #11b7e5 inset,0 4px 24px #00000080;padding-bottom:.5em}.ieeesa-modal-dialog.ieeesa-add-user-roster .ieeesa-modal .mat-mdc-dialog-content{padding:1.5em 1em .75em!important}.ieeesa-search-user-form .ieeesa-dynamic-form__actions,.ieeesa-add-user-form .ieeesa-dynamic-form__actions{flex-direction:row-reverse;gap:1.5em;padding:3em 1em .75em 0}.ieeesa-search-user-form .ieeesa-dynamic-form__form-field,.ieeesa-add-user-form .ieeesa-dynamic-form__form-field{margin-bottom:1em;padding:0}.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-input-field .mat-mdc-form-field,.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-search-field .mat-mdc-form-field,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-input-field .mat-mdc-form-field,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-search-field .mat-mdc-form-field{display:flex;min-height:40px}.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-input-field .mat-mdc-text-field-wrapper,.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-search-field .mat-mdc-text-field-wrapper,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-input-field .mat-mdc-text-field-wrapper,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-search-field .mat-mdc-text-field-wrapper{padding:.5em 1em}.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-input-field__label,.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-input-field__support-text,.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-search-field__label,.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-search-field__support-text,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-input-field__label,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-input-field__support-text,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-search-field__label,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-search-field__support-text{color:#49454f}.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-input-field__content,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-input-field__content,.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-input-field__icon--warning,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-input-field__icon--warning{position:relative;bottom:10px}.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-search-field__search-icon,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-search-field__search-icon{color:#49454f}.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-search-field__button,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-search-field__button{position:relative;top:2px}.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-search-field__content,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-search-field__content{position:relative;bottom:15px}.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-search-field .mat-mdc-form-field,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-search-field .mat-mdc-form-field{width:100%;font-size:1em;border-bottom:2px solid #918f90;border-radius:4px 4px 0 0;height:40px;align-items:center;background:linear-gradient(0deg,rgba(0,98,155,.05) 0%,rgba(0,98,155,.05) 100%),#fffbfe}.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-search-field .mat-mdc-form-field .mdc-notched-outline__leading,.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-search-field .mat-mdc-form-field .mdc-notched-outline__notch,.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-search-field .mat-mdc-form-field .mdc-notched-outline__trailing,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-search-field .mat-mdc-form-field .mdc-notched-outline__leading,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-search-field .mat-mdc-form-field .mdc-notched-outline__notch,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-search-field .mat-mdc-form-field .mdc-notched-outline__trailing{border:none}.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-search-field .mat-form-field-invalid,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-search-field .mat-form-field-invalid{border-bottom:2px solid #ba0c2f}.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-search-field .mat-mdc-form-field.mat-focused:not(.mat-form-field-invalid),.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-search-field .mat-mdc-form-field.mat-focused:not(.mat-form-field-invalid){border-bottom:2px solid #00629b}.ieeesa-search-user-form .ieeesa-dynamic-form .full-name.ieeesa-dynamic-form__form-field,.ieeesa-add-user-form .ieeesa-dynamic-form .full-name.ieeesa-dynamic-form__form-field{margin-bottom:.4em}.ieeesa-search-user-form .ieeesa-dynamic-form .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-text-field-wrapper,.ieeesa-search-user-form .ieeesa-dynamic-form .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-form-field-focus-overlay,.ieeesa-add-user-form .ieeesa-dynamic-form .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-text-field-wrapper,.ieeesa-add-user-form .ieeesa-dynamic-form .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-form-field-focus-overlay{background:#ffffff;padding:0}.ieeesa-search-user-form .ieeesa-dynamic-form .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-infix,.ieeesa-search-user-form .ieeesa-dynamic-form .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-form-field-focus-overlay .mat-mdc-form-field-infix,.ieeesa-add-user-form .ieeesa-dynamic-form .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-infix,.ieeesa-add-user-form .ieeesa-dynamic-form .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-form-field-focus-overlay .mat-mdc-form-field-infix{min-height:2.375em;padding-top:.0625em;padding-bottom:.375em}.ieeesa-search-user-form .ieeesa-dynamic-form .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mdc-line-ripple:before,.ieeesa-search-user-form .ieeesa-dynamic-form .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mdc-line-ripple:after,.ieeesa-add-user-form .ieeesa-dynamic-form .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mdc-line-ripple:before,.ieeesa-add-user-form .ieeesa-dynamic-form .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mdc-line-ripple:after{border:0}.ieeesa-search-user-form .ieeesa-dynamic-form__actions--right-btn{min-width:175px!important}.mdc-checkbox__background{border-color:unset;background-color:unset}.ieeesa-form-error--text{padding:.25em 1em 0}.mat-mdc-form-field-subscript-wrapper{display:none}@media (min-width: 767px){.ieeesa-search-user-form .email-search .ieeesa-input-field .mat-mdc-form-field,.ieeesa-search-user-form .email-search .ieeesa-search-field .mat-mdc-form-field,.ieeesa-search-user-form .email-address .ieeesa-input-field .mat-mdc-form-field,.ieeesa-search-user-form .email-address .ieeesa-search-field .mat-mdc-form-field,.ieeesa-add-user-form .email-search .ieeesa-input-field .mat-mdc-form-field,.ieeesa-add-user-form .email-search .ieeesa-search-field .mat-mdc-form-field,.ieeesa-add-user-form .email-address .ieeesa-input-field .mat-mdc-form-field,.ieeesa-add-user-form .email-address .ieeesa-search-field .mat-mdc-form-field{width:32%}.ieeesa-modal-dialog.ieeesa-add-user-roster{max-width:80vw!important}}\n"] }]
339
+ }], ctorParameters: function () { return [{ type: i1.GroupsService }, { type: i2.GlobalErrorHandlerService }, { type: i2.AlertsService }]; }, propDecorators: { submitFormResponse: [{
340
+ type: Output
341
+ }], formCancel: [{
342
+ type: Output
343
+ }] } });
344
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLXVzZXItcm9zdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dyb3Vwcy9zcmMvbGliL2NvbXBvbmVudHMvYWRkLXVzZXItcm9zdGVyL2FkZC11c2VyLXJvc3Rlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncm91cHMvc3JjL2xpYi9jb21wb25lbnRzL2FkZC11c2VyLXJvc3Rlci9hZGQtdXNlci1yb3N0ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBR1osTUFBTSxFQUNOLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWEsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQ0wsYUFBYSxFQUNiLFNBQVMsR0FFVixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFDTCxvQkFBb0IsRUFHcEIsZUFBZSxFQUNmLFNBQVMsRUFDVCxVQUFVLEdBRVgsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEtBQUssV0FBVyxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7Ozs7QUFLNUQ7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QUU7WUFDdEQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNyRSxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQztnQkFDNUIsTUFBTSxFQUFFLFFBQVE7Z0JBQ2hCLE9BQU8sRUFBRSxZQUFZO2dCQUNyQixTQUFTLEVBQUUsU0FBUyxDQUFDLEtBQUs7Z0JBQzFCLGFBQWEsRUFBRSxJQUFJO2FBQ3BCLENBQUMsQ0FBQztTQUNKO2FBQU0sSUFBSSxLQUFLLElBQUksS0FBSyxZQUFZLGlCQUFpQixFQUFFO1lBQ3RELElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDbkQ7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQzdCO0lBQ0gsQ0FBQzs4R0E3VVUsc0JBQXNCO2tHQUF0QixzQkFBc0Isc0pBRnRCLENBQUMsYUFBYSxDQUFDLDBCQ2pENUIsa3ZDQStCQSx3bGREY1ksWUFBWSxtSUFBRSxvQkFBb0IsaW9CQUFFLGVBQWU7OzJGQU1sRCxzQkFBc0I7a0JBVGxDLFNBQVM7K0JBQ0Usd0JBQXdCLGNBQ3RCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxlQUFlLENBQUMsaUJBRy9DLGlCQUFpQixDQUFDLElBQUksYUFDMUIsQ0FBQyxhQUFhLENBQUM7d0tBb0JoQixrQkFBa0I7c0JBQTNCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBNYXREaWFsb2dNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHtcclxuICBBbGVydHNTZXJ2aWNlLFxyXG4gIEFsZXJ0VHlwZSxcclxuICBHbG9iYWxFcnJvckhhbmRsZXJTZXJ2aWNlLFxyXG59IGZyb20gJ0BpZWVlc2EtbnBtL3V0aWxpdHknO1xyXG5pbXBvcnQge1xyXG4gIER5bmFtaWNGb3JtQ29tcG9uZW50LFxyXG4gIEZvcm1HcmlkLFxyXG4gIEZvcm1Nb2RlbCxcclxuICBGb3JtQ29udHJvbFR5cGUsXHJcbiAgQWxpZ25UeXBlLFxyXG4gIFNlYXJjaFR5cGUsXHJcbiAgQ2hlY2tib3hPcHRpb24sXHJcbn0gZnJvbSAnQGllZWVzYS1ucG0vcHJlc2VudGF0aW9uJztcclxuaW1wb3J0ICogYXMgc2NyZWVuVGV4dHMgZnJvbSAnLi4vLi4vYXNzZXRzL2NvbnN0YW50cy5qc29uJztcclxuaW1wb3J0IHsgR3JvdXBzVmFsaWRhdGlvblBhdHRlcm5zIH0gZnJvbSAnLi4vLi4vYXNzZXRzL2Zvcm0tdmFsaWRhdGlvbnMnO1xyXG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgRm9ybVN0YXR1cyB9IGZyb20gJy4uLy4uL21vZGVscy9mb3JtLXN0YXR1cy5tb2RlbCc7XHJcbmltcG9ydCB7IEdyb3Vwc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ncm91cHMuc2VydmljZSc7XHJcbmltcG9ydCB7IEFkZE5ld1VzZXJQYXlsb2FkIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FkZC1uZXctdXNlci5tb2RlbCc7XHJcbmltcG9ydCB7IFVzZXJJbmZvIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3VzZXItaW5mby5tb2RlbCc7XHJcblxyXG4vKipcclxuICogQ29tcG9uZW50IGltcGxlbWVudHMgdGhlIHZpZXcgYW5kIGZ1bmN0aW9uYWxpdGllcyB0byBhZGQgZ3JvdXAgdXNlcnMgdG8gcm9zdGVyLlxyXG4gKiBAZXhwb3J0XHJcbiAqIEBjbGFzcyBBZGRVc2VyUm9zdGVyQ29tcG9uZW50XHJcbiAqIEBpbXBsZW1lbnRzIHtPbkluaXR9XHJcbiAqIEBpbXBsZW1lbnRzIHtPbkRlc3Ryb3l9XHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2llZWVzYS1hZGQtdXNlci1yb3N0ZXInLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRHluYW1pY0Zvcm1Db21wb25lbnQsIE1hdERpYWxvZ01vZHVsZV0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2FkZC11c2VyLXJvc3Rlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYWRkLXVzZXItcm9zdGVyLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBwcm92aWRlcnM6IFtBbGVydHNTZXJ2aWNlXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFkZFVzZXJSb3N0ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgZGVzdHJveSQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgY29uc3RhbnRzOiBhbnkgPSBzY3JlZW5UZXh0cztcclxuICBhZGRVc2VyUm9zdGVyVGV4dHMgPSB0aGlzLmNvbnN0YW50cz8uYWRkVXNlclJvc3RlcjtcclxuICBsZWZ0QnV0dG9uTGFiZWwgPSB0aGlzLmFkZFVzZXJSb3N0ZXJUZXh0cz8ubGFiZWw/LmxlZnRCdXR0b25MYWJlbDtcclxuICByaWdodEJ1dHRvbkxhYmVsID0gdGhpcy5hZGRVc2VyUm9zdGVyVGV4dHM/LmxhYmVsPy5yaWdodEJ1dHRvbkxhYmVsO1xyXG4gIGlzU3VibWl0QnV0dG9uRGlzYWJsZWQgPSBmYWxzZTtcclxuICBjb2xXaWR0aDogRm9ybUdyaWQgPSB7IHhzOiAxMiwgeGw6IDEyLCBzbTogMTIsIG1kOiAxMiwgbGc6IDEyIH07XHJcbiAgc2VhcmNoVXNlckZvcm1Hcm91cCE6IEZvcm1Nb2RlbDtcclxuICBhZGRVc2VyRm9ybUdyb3VwITogRm9ybU1vZGVsO1xyXG4gIGFjdGlvbkJ1dHRvbkFsaWduID0gQWxpZ25UeXBlLkxFRlQ7XHJcbiAgYWRkVXNlckZvcm1Hcm91cFJlZiE6IEZvcm1Hcm91cDtcclxuICBpc1NlYXJjaFVzZXJGb3JtID0gdHJ1ZTtcclxuICB1c2VyUm9sZXM6IENoZWNrYm94T3B0aW9uW10gPSBbXTtcclxuICBzZWxlY3RlZFVzZXJSb2xlczogc3RyaW5nW10gPSBbXTtcclxuICB1c2VySW5mbyE6IFVzZXJJbmZvO1xyXG4gIGlzQWRkVXNlckZvcm1FbWFpbFNlYXJjaCA9IGZhbHNlO1xyXG4gIEBPdXRwdXQoKSBzdWJtaXRGb3JtUmVzcG9uc2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGZvcm1DYW5jZWwgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwcml2YXRlIGdyb3VwU2VydmljZTogR3JvdXBzU2VydmljZSxcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHJpdmF0ZSBnbG9iYWxFcnJvckhhbmRsZXJTZXJ2aWNlOiBHbG9iYWxFcnJvckhhbmRsZXJTZXJ2aWNlLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwdWJsaWMgYWxlcnRTZXJ2aWNlOiBBbGVydHNTZXJ2aWNlIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1lbXB0eS1mdW5jdGlvblxyXG4gICkge31cclxuXHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbGl6ZXMgdXNlciByb2xlcyBhbmQgc2VhcmNoVXNlckZvcm1Hcm91cC5cclxuICAgKiBAbWVtYmVyb2YgQWRkVXNlclJvc3RlckNvbXBvbmVudFxyXG4gICAqL1xyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy51c2VyUm9sZXMgPSB0aGlzLmdyb3VwU2VydmljZS5nZXRHcm91cFR5cGVVc2VyUm9sZXMoKTtcclxuICAgIHRoaXMuY3JlYXRlU2VhcmNoVXNlckZvcm1Hcm91cCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyBzZWFyY2ggdXNlciBmb3JtIGdyb3VwXHJcbiAgICogQG1lbWJlcm9mIEFkZFVzZXJSb3N0ZXJDb21wb25lbnRcclxuICAgKi9cclxuICBjcmVhdGVTZWFyY2hVc2VyRm9ybUdyb3VwKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWFyY2hVc2VyRm9ybUdyb3VwID0ge1xyXG4gICAgICBmb3JtR3JvdXA6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBsZWdlbmQ6ICcnLFxyXG4gICAgICAgICAgY29udHJvbHM6IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHR5cGU6IEZvcm1Db250cm9sVHlwZS5JTlBVVCxcclxuICAgICAgICAgICAgICBsYWJlbDogdGhpcy5hZGRVc2VyUm9zdGVyVGV4dHM/LmxhYmVsPy5lbWFpbCArICcqJyxcclxuICAgICAgICAgICAgICBjb250cm9sTmFtZTogJ2VtYWlsQWRkcmVzcycsXHJcbiAgICAgICAgICAgICAgcmVxdWlyZWRFcnJvck1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFkZFVzZXJSb3N0ZXJUZXh0cz8ubWVzc2FnZT8uZXJyb3I/LnJlcXVpcmVkLFxyXG4gICAgICAgICAgICAgIGlzRW1haWw6IHRydWUsXHJcbiAgICAgICAgICAgICAgc3VwcG9ydE1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFkZFVzZXJSb3N0ZXJUZXh0cz8uc3VwcG9ydFRleHQ/LmVtYWlsQWRkcmVzcyxcclxuICAgICAgICAgICAgICBwYXR0ZXJuRXJyb3JNZXNzYWdlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5hZGRVc2VyUm9zdGVyVGV4dHM/Lm1lc3NhZ2U/LmVycm9yPy5wYXR0ZXJuPy5lbWFpbCxcclxuICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBbXHJcbiAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxyXG4gICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5wYXR0ZXJuKEdyb3Vwc1ZhbGlkYXRpb25QYXR0ZXJucy5lbWFpbCksXHJcbiAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICBhcmlhTGFiZWw6IHRoaXMuYWRkVXNlclJvc3RlclRleHRzPy5sYWJlbD8uYXJpYUxhYmVsPy5lbWFpbCxcclxuICAgICAgICAgICAgICBhcmlhRGVzY3JpYmVkQnlJZDpcclxuICAgICAgICAgICAgICAgIHRoaXMuYWRkVXNlclJvc3RlclRleHRzPy5sYWJlbD8uYXJpYURlc2NyaWJlZEJ5SWQ/LmVtYWlsLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgXSxcclxuICAgICAgICB9LFxyXG4gICAgICBdLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrcyBmb3JtIHZhbGlkaXR5IGFuZCBzZWFyY2hlcyB0aGUgdXNlciBieSBlbnRlcmVkIGVtYWlsLlxyXG4gICAqIEBwYXJhbSB7Rm9ybUdyb3VwW119IGZvcm1cclxuICAgKiBAbWVtYmVyb2YgQWRkVXNlclJvc3RlckNvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uU2VhcmNoVXNlckZvcm1TdWJtaXQoZm9ybTogRm9ybUdyb3VwW10pOiB2b2lkIHtcclxuICAgIHRoaXMuaXNBZGRVc2VyRm9ybUVtYWlsU2VhcmNoID0gZmFsc2U7XHJcbiAgICBpZiAoZm9ybVswXT8uc3RhdHVzID09PSBGb3JtU3RhdHVzLlZBTElEKSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoVXNlckJ5RW1haWwoZm9ybVswXS5nZXRSYXdWYWx1ZSgpPy5lbWFpbEFkZHJlc3MpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2VhcmNoZXMgdGhlIHVzZXIgYnkgZW50ZXJlZCBlbWFpbCBhbmQgZ2V0cyB0aGUgdXNlciBkZXRhaWxzIHdoZW4gdGhlIGVtYWlsIGlkIGlzIGZvdW5kLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBlbWFpbFxyXG4gICAqIEBtZW1iZXJvZiBBZGRVc2VyUm9zdGVyQ29tcG9uZW50XHJcbiAgICovXHJcbiAgc2VhcmNoVXNlckJ5RW1haWwoZW1haWw6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5ncm91cFNlcnZpY2VcclxuICAgICAgLmdldFVzZXJCeUVtYWlsKGVtYWlsKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXMpID0+IHtcclxuICAgICAgICAgIGlmIChyZXM/LnN0YXR1cykge1xyXG4gICAgICAgICAgICB0aGlzLnVzZXJJbmZvID0gcmVzPy5ib2R5O1xyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRlVXNlckV4aXN0ZW5jZSgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBlcnJvcjogKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3JzKGVycm9yKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogVmFsaWRhdGVzIHdoZXRoZXIgdGhlIHVzZXIgaXMgZXhpc3RzIGluIHRoZSBzZWxlY3RlZCBncm91cCBhbmQgdGhlbiBjcmVhdGVzIGFkZCB1c2VyIGZvcm0gd2hlbiB0aGUgdXNlciBkb2VzIG5vdCBleGlzdCBpbiB0aGUgc2VsZWN0ZWQgZ3JvdXAuXHJcbiAgICogQG1lbWJlcm9mIEFkZFVzZXJSb3N0ZXJDb21wb25lbnRcclxuICAgKi9cclxuICB2YWxpZGF0ZVVzZXJFeGlzdGVuY2UoKTogdm9pZCB7XHJcbiAgICBjb25zdCBwYXlsb2FkID0ge1xyXG4gICAgICBwYXlsb2FkOiB7XHJcbiAgICAgICAgZ3JvdXBJZDogdGhpcy5ncm91cFNlcnZpY2UuZ2V0U2VsZWN0ZWRHcm91cEluZm8oKT8uZ3JvdXBJZCBhcyBzdHJpbmcsXHJcbiAgICAgICAgdXNlcklkOiB0aGlzLnVzZXJJbmZvPy51c2VySWQsXHJcbiAgICAgIH0sXHJcbiAgICB9O1xyXG4gICAgdGhpcy5ncm91cFNlcnZpY2VcclxuICAgICAgLmdldEdyb3VwVXNlckRldGFpbHMocGF5bG9hZClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICA/LnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc2hvd01lc3NhZ2Uoe1xyXG4gICAgICAgICAgICBzdGF0dXM6ICdjdXN0b20nLFxyXG4gICAgICAgICAgICBtZXNzYWdlOiB0aGlzLmNvbnN0YW50cz8uZXJyb3JzPy5bJzEwMjInXSxcclxuICAgICAgICAgICAgYWxlcnRUeXBlOiBBbGVydFR5cGUuRVJST1IsXHJcbiAgICAgICAgICAgIGlzQ2xvc2VOZWVkZWQ6IHRydWUsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgZXJyb3I6IChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBlcnJvckNvZGVzID0gZXJyb3I/LmVycm9yPy5ib2R5Py5lcnJvckNvZGVzO1xyXG4gICAgICAgICAgaWYgKGVycm9yQ29kZXM/LmluY2x1ZGVzKCcxMDI2JykpIHtcclxuICAgICAgICAgICAgdGhpcy5pc1NlYXJjaFVzZXJGb3JtID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMucmlnaHRCdXR0b25MYWJlbCA9XHJcbiAgICAgICAgICAgICAgdGhpcy5hZGRVc2VyUm9zdGVyVGV4dHM/LmxhYmVsPy5zYXZlQnV0dG9uTGFiZWw7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5pc0FkZFVzZXJGb3JtRW1haWxTZWFyY2gpIHtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVXNlclJvbGVzID0gW107XHJcbiAgICAgICAgICAgICAgdGhpcy5pc1N1Ym1pdEJ1dHRvbkRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLmFkZFVzZXJGb3JtR3JvdXAgPSB7XHJcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXA6IFtcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGxlZ2VuZDogJycsXHJcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbHM6IFtcclxuICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRm9ybUNvbnRyb2xUeXBlLlNFQVJDSCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuYWRkVXNlclJvc3RlclRleHRzPy5sYWJlbD8uZW1haWwgKyAnKicsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xOYW1lOiAnZW1haWxTZWFyY2gnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdGhpcy51c2VySW5mbz8uZW1haWwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaFR5cGU6IFNlYXJjaFR5cGUuT05fQ0xJQ0ssXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb246IFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMucGF0dGVybihHcm91cHNWYWxpZGF0aW9uUGF0dGVybnMuZW1haWwpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0TWVzc2FnZTpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZFVzZXJSb3N0ZXJUZXh0cz8uc3VwcG9ydFRleHQ/LmVtYWlsQWRkcmVzcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWRFcnJvck1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRVc2VyUm9zdGVyVGV4dHM/Lm1lc3NhZ2U/LmVycm9yPy5yZXF1aXJlZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGF0dGVybkVycm9yTWVzc2FnZTpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZFVzZXJSb3N0ZXJUZXh0cz8ubWVzc2FnZT8uZXJyb3I/LnBhdHRlcm5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8uZW1haWwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWFMYWJlbDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZFVzZXJSb3N0ZXJUZXh0cz8ubGFiZWw/LmFyaWFMYWJlbD8uZW1haWwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWFEZXNjcmliZWRCeUlkOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkVXNlclJvc3RlclRleHRzPy5sYWJlbD8uYXJpYURlc2NyaWJlZEJ5SWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8uZW1haWwsXHJcbiAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGb3JtQ29udHJvbFR5cGUuVEVYVF9BUkVBLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5hZGRVc2VyUm9zdGVyVGV4dHM/LmxhYmVsPy5mdWxsTmFtZSArICcqJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbE5hbWU6ICdmdWxsTmFtZScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB0aGlzLnVzZXJJbmZvPy5uYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkRXJyb3JNZXNzYWdlOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkVXNlclJvc3RlclRleHRzPy5tZXNzYWdlPy5lcnJvcj8ucmVxdWlyZWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzUmVhZG9ubHk6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWFNdWx0aWxpbmU6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhTGFiZWw6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRVc2VyUm9zdGVyVGV4dHM/LmxhYmVsPy5hcmlhTGFiZWw/LmZ1bGxOYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhRGVzY3JpYmVkQnlJZDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZFVzZXJSb3N0ZXJUZXh0cz8ubGFiZWw/LmFyaWFEZXNjcmliZWRCeUlkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/LmZ1bGxOYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRm9ybUNvbnRyb2xUeXBlLkNIRUNLQk9YLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5hZGRVc2VyUm9zdGVyVGV4dHM/LmxhYmVsPy5yb2xlICsgJyonLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sTmFtZTogJ3JvbGVzJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tib3hPcHRpb25zOiB0aGlzLnVzZXJSb2xlcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWluU2VsZWN0aW9uUmVxdWlyZWQ6IDEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWFMYWJlbDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZFVzZXJSb3N0ZXJUZXh0cz8ubGFiZWw/LmFyaWFMYWJlbD8ucm9sZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYURlc2NyaWJlZEJ5SWQ6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRVc2VyUm9zdGVyVGV4dHM/LmxhYmVsPy5hcmlhRGVzY3JpYmVkQnlJZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5yb2xlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0TWVzc2FnZTpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZFVzZXJSb3N0ZXJUZXh0cz8uc3VwcG9ydFRleHQ/LnJvbGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkRXJyb3JNZXNzYWdlOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkVXNlclJvc3RlclRleHRzPy5tZXNzYWdlPy5lcnJvcj8ucm9sZVJlcXVpcmVkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5hZGRVc2VyRm9ybUdyb3VwUmVmXHJcbiAgICAgICAgICAgICAgICA/LmdldCgnZW1haWxTZWFyY2gnKVxyXG4gICAgICAgICAgICAgICAgPy5zZXRWYWx1ZSh0aGlzLnVzZXJJbmZvPy5lbWFpbCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5hZGRVc2VyRm9ybUdyb3VwUmVmXHJcbiAgICAgICAgICAgICAgICA/LmdldCgnZnVsbE5hbWUnKVxyXG4gICAgICAgICAgICAgICAgPy5zZXRWYWx1ZSh0aGlzLnVzZXJJbmZvPy5uYW1lKTtcclxuICAgICAgICAgICAgICB0aGlzLmlzU3VibWl0QnV0dG9uRGlzYWJsZWQgPVxyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFVzZXJSb2xlcz8ubGVuZ3RoID09PSAwO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2UgdGhpcy5oYW5kbGVFcnJvcnMoZXJyb3IpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlcyBhZGQgdXNlciBmb3JtIGVtYWlsIHNlYXJjaFxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBlbWFpbFxyXG4gICAqIEBtZW1iZXJvZiBBZGRVc2VyUm9zdGVyQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZm9ybVNlYXJjaEFwcGx5KGVtYWlsOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuaXNBZGRVc2VyRm9ybUVtYWlsU2VhcmNoID0gdHJ1ZTtcclxuICAgIGlmIChlbWFpbC50cmltKCkpIHRoaXMuc2VhcmNoVXNlckJ5RW1haWwoZW1haWwudHJpbSgpKTtcclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnVzZXJJbmZvLm5hbWUgPSAnJztcclxuICAgICAgdGhpcy5hZGRVc2VyRm9ybUdyb3VwUmVmPy5nZXQoJ2Z1bGxOYW1lJyk/LnNldFZhbHVlKCcnKTtcclxuICAgICAgdGhpcy5pc1N1Ym1pdEJ1dHRvbkRpc2FibGVkID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFzc2lnbnMgcm9sZSB0byB1c2VyIG9uIGZvcm0gc3VibWlzc2lvbi5cclxuICAgKiBAcGFyYW0ge0Zvcm1Hcm91cFtdfSBmb3JtXHJcbiAgICogQG1lbWJlcm9mIEFkZFVzZXJSb3N0ZXJDb21wb25lbnRcclxuICAgKi9cclxuICBvbkFkZFVzZXJGb3JtU3VibWl0KGZvcm06IEZvcm1Hcm91cFtdKTogdm9pZCB7XHJcbiAgICBmb3JtWzBdPy5tYXJrQWxsQXNUb3VjaGVkKCk7XHJcbiAgICBpZiAoZm9ybVswXS5zdGF0dXMgPT09IEZvcm1TdGF0dXMuVkFMSUQpIHtcclxuICAgICAgY29uc3QgcGF5bG9hZDogQWRkTmV3VXNlclBheWxvYWQgPSB7XHJcbiAgICAgICAgcGF5bG9hZDoge1xyXG4gICAgICAgICAgZW1haWw6IHRoaXMudXNlckluZm8/LmVtYWlsLFxyXG4gICAgICAgICAgcm9sZXM6IHRoaXMuc2VsZWN0ZWRVc2VyUm9sZXMsXHJcbiAgICAgICAgICB1c2VySWQ6IHRoaXMudXNlckluZm8/LnVzZXJJZCxcclxuICAgICAgICAgIGdyb3VwSWQ6IHRoaXMuZ3JvdXBTZXJ2aWNlLnNlbGVjdGVkR3JvdXBJbmZvPy5ncm91cElkIGFzIHN0cmluZyxcclxuICAgICAgICB9LFxyXG4gICAgICB9O1xyXG5cclxuICAgICAgdGhpcy5ncm91cFNlcnZpY2VcclxuICAgICAgICAuYWRkTmV3R3JvdXBVc2VyKHBheWxvYWQpXHJcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgbmV4dDogKHJlcykgPT4ge1xyXG4gICAgICAgICAgICBpZiAocmVzPy5zdGF0dXMpIHtcclxuICAgICAgICAgICAgICB0aGlzLnN1Ym1pdEZvcm1SZXNwb25zZS5lbWl0KHJlcyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgICAgZXJyb3I6IChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3JzKGVycm9yKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgYWRkIHVzZXIgZm9ybSBncm91cCByZWZlcmVuY2UuXHJcbiAgICogQHBhcmFtIHtGb3JtR3JvdXBbXX0gZm9ybVxyXG4gICAqIEBtZW1iZXJvZiBBZGRVc2VyUm9zdGVyQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0QWRkVXNlckZvcm1Hcm91cFJlZihmb3JtOiBGb3JtR3JvdXBbXSkge1xyXG4gICAgdGhpcy5hZGRVc2VyRm9ybUdyb3VwUmVmID0gZm9ybVswXTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZXMgdXNlciByb2xlIHNlbGVjdGlvbiBpbiBhZGQgdXNlciBmb3JtLlxyXG4gICAqIEBwYXJhbSB7Q2hlY2tib3hPcHRpb259IGV2ZW50XHJcbiAgICogQG1lbWJlcm9mIEFkZFVzZXJSb3N0ZXJDb21wb25lbnRcclxuICAgKi9cclxuICBvblVzZXJSb2xlU2VsZWN0aW9uKGV2ZW50OiBDaGVja2JveE9wdGlvbik6IHZvaWQge1xyXG4gICAgaWYgKGV2ZW50Py5jaGVja2VkKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRVc2VyUm9sZXM/LnB1c2goZXZlbnQuaWQgYXMgc3RyaW5nKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRVc2VyUm9sZXMgPSB0aGlzLnNlbGVjdGVkVXNlclJvbGVzLmZpbHRlcihcclxuICAgICAgICAodmFsdWUpID0+IHZhbHVlICE9PSBldmVudC5pZFxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pc1N1Ym1pdEJ1dHRvbkRpc2FibGVkID0gdGhpcy5zZWxlY3RlZFVzZXJSb2xlcz8ubGVuZ3RoID09PSAwO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRW1pdHMgZm9ybSBjYW5jZWwgZXZlbnQuXHJcbiAgICogQG1lbWJlcm9mIEFkZFVzZXJSb3N0ZXJDb21wb25lbnRcclxuICAgKi9cclxuICBvbkZvcm1DYW5jZWwoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZvcm1DYW5jZWwuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlcyB0aGUgY3VzdG9tIGVycm9ycyB3aGlsZSBzZWFyY2hpbmcgdXNlciBieSBlbWFpbCwgdmFsaWRhdGluZyB1c2VyIGV4aXN0ZW5jZSBhbmQgYWRkaW5nIG5ldyB1c2VyIHRvIHJvc3Rlci5cclxuICAgKiBAcGFyYW0geyp9IGVycm9yXHJcbiAgICogQG1lbWJlcm9mIEFkZFVzZXJSb3N0ZXJDb21wb25lbnRcclxuICAgKi9cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGhhbmRsZUVycm9ycyhlcnJvcjogYW55KTogdm9pZCB7XHJcbiAgICBjb25zdCBlcnJvckNvZGVzID0gZXJyb3I/LmVycm9yPy5ib2R5Py5lcnJvckNvZGVzO1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZXJyb3JDb2RlcykgJiYgIWVycm9yPy5lcnJvcj8uc3RhdHVzKSB7XHJcbiAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IHRoaXMuZ3JvdXBTZXJ2aWNlLnBhcnNlRXJyb3JNZXNzYWdlKGVycm9yQ29kZXMpO1xyXG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5zaG93TWVzc2FnZSh7XHJcbiAgICAgICAgc3RhdHVzOiAnY3VzdG9tJyxcclxuICAgICAgICBtZXNzYWdlOiBlcnJvck1lc3NhZ2UsXHJcbiAgICAgICAgYWxlcnRUeXBlOiBBbGVydFR5cGUuRVJST1IsXHJcbiAgICAgICAgaXNDbG9zZU5lZWRlZDogdHJ1ZSxcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2UgaWYgKGVycm9yICYmIGVycm9yIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UpIHtcclxuICAgICAgdGhpcy5nbG9iYWxFcnJvckhhbmRsZXJTZXJ2aWNlLmhhbmRsZUVycm9yKGVycm9yKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE5nT25EZXN0cm95IHBlcmZvcm1zIG5lY2Vzc2FyeSBjbGVhbnVwIHRhc2tzLCBzdWNoIGFzIHVuc3Vic2NyaWJpbmcgZnJvbSBzdWJzY3JpcHRpb24gd2hlbiB0aGUgY29tcG9uZW50IGlzIGJlaW5nIGRlc3Ryb3llZC5cclxuICAgKiBAbWVtYmVyb2YgQWRkVXNlclJvc3RlckNvbXBvbmVudFxyXG4gICAqL1xyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZGVzdHJveSQpIHtcclxuICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xyXG4gICAgICB0aGlzLmRlc3Ryb3kkLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxpZWVlc2EtZHluYW1pYy1mb3JtXHJcbiAgKm5nSWY9XCJzZWFyY2hVc2VyRm9ybUdyb3VwICYmIGlzU2VhcmNoVXNlckZvcm1cIlxyXG4gIGNsYXNzPVwiaWVlZXNhLXNlYXJjaC11c2VyLWZvcm1cIlxyXG4gIFtsZWZ0QnV0dG9uTGFiZWxdPVwibGVmdEJ1dHRvbkxhYmVsXCJcclxuICBbcmlnaHRCdXR0b25MYWJlbF09XCJyaWdodEJ1dHRvbkxhYmVsXCJcclxuICBbaXNMZWdlbmRWaXNpYmxlXT1cImZhbHNlXCJcclxuICBbY29sV2lkdGhdPVwiY29sV2lkdGhcIlxyXG4gIFthY3Rpb25CdXR0b25BbGlnbl09XCJhY3Rpb25CdXR0b25BbGlnblwiXHJcbiAgW2Zvcm1Hcm91cHNdPVwic2VhcmNoVXNlckZvcm1Hcm91cFwiXHJcbiAgW2lzTGVmdEJ1dHRvbk5lZWRlZF09XCJ0cnVlXCJcclxuICAoZm9ybVN1Ym1pdCk9XCJvblNlYXJjaFVzZXJGb3JtU3VibWl0KCRldmVudClcIlxyXG4gIChmb3JtTGVmdEJ1dHRvbkNsaWNrZWQpPVwib25Gb3JtQ2FuY2VsKClcIlxyXG4+PC9pZWVlc2EtZHluYW1pYy1mb3JtPlxyXG5cclxuPGllZWVzYS1keW5hbWljLWZvcm1cclxuICAqbmdJZj1cImFkZFVzZXJGb3JtR3JvdXAgJiYgIWlzU2VhcmNoVXNlckZvcm1cIlxyXG4gIGNsYXNzPVwiaWVlZXNhLWFkZC11c2VyLWZvcm1cIlxyXG4gIFtsZWZ0QnV0dG9uTGFiZWxdPVwibGVmdEJ1dHRvbkxhYmVsXCJcclxuICBbcmlnaHRCdXR0b25MYWJlbF09XCJyaWdodEJ1dHRvbkxhYmVsXCJcclxuICBbaXNMZWdlbmRWaXNpYmxlXT1cImZhbHNlXCJcclxuICBbaXNTdWJtaXRCdXR0b25EaXNhYmxlZF09XCJpc1N1Ym1pdEJ1dHRvbkRpc2FibGVkXCJcclxuICBbY29sV2lkdGhdPVwiY29sV2lkdGhcIlxyXG4gIFthY3Rpb25CdXR0b25BbGlnbl09XCJhY3Rpb25CdXR0b25BbGlnblwiXHJcbiAgW2Zvcm1Hcm91cHNdPVwiYWRkVXNlckZvcm1Hcm91cFwiXHJcbiAgW2lzTGVmdEJ1dHRvbk5lZWRlZF09XCJ0cnVlXCJcclxuICAoZm9ybVN1Ym1pdCk9XCJvbkFkZFVzZXJGb3JtU3VibWl0KCRldmVudClcIlxyXG4gIChmb3JtU2VhcmNoQXBwbHkpPVwiZm9ybVNlYXJjaEFwcGx5KCRldmVudClcIlxyXG4gIChmb3JtTGVmdEJ1dHRvbkNsaWNrZWQpPVwib25Gb3JtQ2FuY2VsKClcIlxyXG4gIChmb3JtR3JvdXBzUmVmZXJlbmNlKT1cImdldEFkZFVzZXJGb3JtR3JvdXBSZWYoJGV2ZW50KVwiXHJcbiAgKGZvcm1DaGVja2JveFNlbGVjdGlvbik9XCJvblVzZXJSb2xlU2VsZWN0aW9uKCRldmVudClcIlxyXG4+PC9pZWVlc2EtZHluYW1pYy1mb3JtPlxyXG4iXX0=