@myclub_se/data-access 3.7.9 → 3.7.11
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.
- package/esm2022/lib/api-models/api-invoice/api-payment-attempt-create.mjs +1 -8
- package/esm2022/lib/authentication/authentication.interceptor.mjs +6 -8
- package/esm2022/lib/authentication/authentication.service.mjs +8 -11
- package/esm2022/lib/authentication/guards/authenticated.guard.mjs +4 -6
- package/esm2022/lib/authentication/guards/handle-grant-token.guard.mjs +4 -7
- package/esm2022/lib/data-access.module.mjs +6 -6
- package/esm2022/lib/maintenance/maintenance.interceptor.mjs +4 -5
- package/esm2022/lib/models/activity-extra-member.mjs +1 -8
- package/esm2022/lib/models/activity-invite.mjs +1 -23
- package/esm2022/lib/models/activity-location-group.mjs +1 -7
- package/esm2022/lib/models/activity-location-part.mjs +1 -3
- package/esm2022/lib/models/activity-location-tag.mjs +1 -6
- package/esm2022/lib/models/activity-location.mjs +1 -11
- package/esm2022/lib/models/activity-participant.mjs +1 -8
- package/esm2022/lib/models/activity-question-connection.mjs +1 -8
- package/esm2022/lib/models/activity-question-response.mjs +1 -3
- package/esm2022/lib/models/activity-question.mjs +1 -8
- package/esm2022/lib/models/activity-rule-relation.mjs +1 -9
- package/esm2022/lib/models/activity-rule.mjs +1 -8
- package/esm2022/lib/models/activity-settings.mjs +1 -18
- package/esm2022/lib/models/activity-type.mjs +1 -9
- package/esm2022/lib/models/activity-waiting-list-entry.mjs +1 -16
- package/esm2022/lib/models/activity.mjs +1 -82
- package/esm2022/lib/models/app-settings.mjs +1 -5
- package/esm2022/lib/models/auth/auth-member.mjs +3 -7
- package/esm2022/lib/models/auth/auth-section.mjs +1 -6
- package/esm2022/lib/models/auth/auth-team-section.mjs +1 -3
- package/esm2022/lib/models/auth/auth-team.mjs +1 -6
- package/esm2022/lib/models/auth/auth.mjs +1 -17
- package/esm2022/lib/models/authentication.mjs +1 -3
- package/esm2022/lib/models/bookable-item.mjs +1 -11
- package/esm2022/lib/models/bookable-part.mjs +1 -3
- package/esm2022/lib/models/bookable-tag.mjs +1 -6
- package/esm2022/lib/models/booking-calendar-application-time.mjs +1 -33
- package/esm2022/lib/models/booking-calendar-slot-session.mjs +1 -35
- package/esm2022/lib/models/booking-calendar-slot-validate-copy-result.mjs +1 -5
- package/esm2022/lib/models/booking-calendar-slot.mjs +1 -26
- package/esm2022/lib/models/booking-calendar.mjs +1 -33
- package/esm2022/lib/models/booking-settings.mjs +1 -8
- package/esm2022/lib/models/booking-slot-filter.mjs +1 -12
- package/esm2022/lib/models/calendar-event.mjs +1 -16
- package/esm2022/lib/models/calendar.mjs +1 -6
- package/esm2022/lib/models/card/card-deal.mjs +1 -6
- package/esm2022/lib/models/card/card-logo-urls.mjs +1 -9
- package/esm2022/lib/models/card/card-logo.mjs +1 -4
- package/esm2022/lib/models/card/card-member-ticket.mjs +1 -7
- package/esm2022/lib/models/card/card-theme.mjs +1 -6
- package/esm2022/lib/models/card/card-ticket-location.mjs +1 -5
- package/esm2022/lib/models/card/card-ticket.mjs +1 -17
- package/esm2022/lib/models/card/card.mjs +1 -9
- package/esm2022/lib/models/card/home-team.mjs +1 -4
- package/esm2022/lib/models/card/member-card.mjs +1 -11
- package/esm2022/lib/models/card/search-member-card.mjs +1 -5
- package/esm2022/lib/models/card/selected-field.mjs +1 -3
- package/esm2022/lib/models/club-image.mjs +1 -14
- package/esm2022/lib/models/club-section.mjs +1 -3
- package/esm2022/lib/models/club.mjs +1 -3
- package/esm2022/lib/models/collection.mjs +1 -5
- package/esm2022/lib/models/contact.mjs +1 -19
- package/esm2022/lib/models/databank-category.mjs +1 -7
- package/esm2022/lib/models/databank-item.mjs +1 -7
- package/esm2022/lib/models/directory.mjs +1 -10
- package/esm2022/lib/models/email.mjs +1 -4
- package/esm2022/lib/models/event.mjs +1 -28
- package/esm2022/lib/models/external-link.mjs +1 -3
- package/esm2022/lib/models/feature-flags.mjs +1 -14
- package/esm2022/lib/models/file-object.mjs +1 -10
- package/esm2022/lib/models/general-image.mjs +1 -4
- package/esm2022/lib/models/group-role.mjs +1 -7
- package/esm2022/lib/models/guest.mjs +1 -5
- package/esm2022/lib/models/image-urls.mjs +1 -6
- package/esm2022/lib/models/invoice/member-fee.mjs +1 -6
- package/esm2022/lib/models/invoice/member-invoice-row.mjs +1 -14
- package/esm2022/lib/models/invoice/member-invoice.mjs +1 -24
- package/esm2022/lib/models/invoice/payment-attempt.mjs +1 -10
- package/esm2022/lib/models/invoice/payment-order-row.mjs +1 -3
- package/esm2022/lib/models/invoice/payment-order.mjs +1 -18
- package/esm2022/lib/models/invoice/payment-types/credit-card.mjs +1 -12
- package/esm2022/lib/models/invoice/payment-types/giro.mjs +1 -7
- package/esm2022/lib/models/invoice/payment-types/swish.mjs +1 -14
- package/esm2022/lib/models/invoice/payment-types/zimpler.mjs +1 -8
- package/esm2022/lib/models/invoice/search-member-invoice.mjs +1 -10
- package/esm2022/lib/models/invoice/swish-qr-code.mjs +1 -2
- package/esm2022/lib/models/invoice/unpaid-member-invoice.mjs +1 -5
- package/esm2022/lib/models/leader-activity.mjs +1 -12
- package/esm2022/lib/models/member/member-attribute.mjs +1 -12
- package/esm2022/lib/models/member/member-contact.mjs +1 -6
- package/esm2022/lib/models/member/member-function.mjs +1 -6
- package/esm2022/lib/models/member/member-validation-settings.mjs +1 -9
- package/esm2022/lib/models/member/member.mjs +1 -27
- package/esm2022/lib/models/member/other-member-field.mjs +1 -4
- package/esm2022/lib/models/member/other-member.mjs +1 -9
- package/esm2022/lib/models/member/search-member.mjs +1 -17
- package/esm2022/lib/models/member-activity-invite.mjs +1 -12
- package/esm2022/lib/models/member-public-form-field-option.mjs +1 -5
- package/esm2022/lib/models/member-public-form-field.mjs +1 -12
- package/esm2022/lib/models/member-public-form.mjs +1 -26
- package/esm2022/lib/models/member-team-through.mjs +1 -10
- package/esm2022/lib/models/member-team.mjs +1 -10
- package/esm2022/lib/models/member-type.mjs +1 -4
- package/esm2022/lib/models/mypages-menu-item.mjs +1 -4
- package/esm2022/lib/models/news.mjs +1 -20
- package/esm2022/lib/models/open-activity.mjs +3 -79
- package/esm2022/lib/models/optional-fee.mjs +2 -7
- package/esm2022/lib/models/overbooked-bookable-item.mjs +1 -6
- package/esm2022/lib/models/overbooked-location.mjs +1 -6
- package/esm2022/lib/models/partner.mjs +1 -5
- package/esm2022/lib/models/public-authentication.mjs +1 -3
- package/esm2022/lib/models/registration-qr-code.mjs +1 -8
- package/esm2022/lib/models/retrieve-2fa.mjs +1 -3
- package/esm2022/lib/models/saved-search.mjs +1 -3
- package/esm2022/lib/models/search-attribute.mjs +1 -5
- package/esm2022/lib/models/search-club.mjs +1 -10
- package/esm2022/lib/models/search-team.mjs +1 -9
- package/esm2022/lib/models/section.mjs +1 -3
- package/esm2022/lib/models/swish-incident.mjs +1 -11
- package/esm2022/lib/models/token.mjs +1 -4
- package/esm2022/lib/models/user-notification.mjs +1 -9
- package/esm2022/lib/models/user.mjs +1 -13
- package/esm2022/lib/services/activity.service.mjs +4 -7
- package/esm2022/lib/services/api.service.mjs +4 -6
- package/esm2022/lib/services/auth.service.mjs +4 -5
- package/esm2022/lib/services/bookable.service.mjs +4 -5
- package/esm2022/lib/services/booking-calendar.service.mjs +22 -6
- package/esm2022/lib/services/club.service.mjs +4 -5
- package/esm2022/lib/services/constant.service.mjs +4 -5
- package/esm2022/lib/services/databank.service.mjs +4 -5
- package/esm2022/lib/services/email.service.mjs +4 -5
- package/esm2022/lib/services/external-link.service.mjs +4 -5
- package/esm2022/lib/services/feature-flags.service.mjs +4 -5
- package/esm2022/lib/services/file.service.mjs +4 -5
- package/esm2022/lib/services/invoice/invoice.service.mjs +4 -5
- package/esm2022/lib/services/invoice/payment-attempt.service.mjs +4 -5
- package/esm2022/lib/services/invoice/payment-order.service.mjs +4 -5
- package/esm2022/lib/services/leader-notification.service.mjs +4 -5
- package/esm2022/lib/services/maintenance-mode.service.mjs +8 -7
- package/esm2022/lib/services/member-card.service.mjs +4 -5
- package/esm2022/lib/services/member-fee.service.mjs +4 -5
- package/esm2022/lib/services/member-public-form.service.mjs +4 -5
- package/esm2022/lib/services/member.service.mjs +4 -5
- package/esm2022/lib/services/news.service.mjs +4 -5
- package/esm2022/lib/services/registration-qr-code.service.mjs +4 -5
- package/esm2022/lib/services/saved-search.service.mjs +4 -5
- package/esm2022/lib/services/section.service.mjs +4 -5
- package/esm2022/lib/services/storage.service.mjs +5 -6
- package/esm2022/lib/services/swish-incident.service.mjs +4 -5
- package/esm2022/lib/services/team.service.mjs +4 -5
- package/esm2022/lib/services/token.service.mjs +4 -5
- package/esm2022/lib/services/user-notification.service.mjs +4 -5
- package/esm2022/lib/services/user.service.mjs +4 -5
- package/esm2022/lib/store/actions/booking.actions.mjs +7 -1
- package/esm2022/lib/store/effects/activity.effects.mjs +358 -355
- package/esm2022/lib/store/effects/auth.effects.mjs +121 -111
- package/esm2022/lib/store/effects/booking.effects.mjs +139 -134
- package/esm2022/lib/store/effects/calendar.effects.mjs +61 -59
- package/esm2022/lib/store/effects/club-info.effects.mjs +17 -15
- package/esm2022/lib/store/effects/constant.effects.mjs +78 -76
- package/esm2022/lib/store/effects/databank.effects.mjs +23 -21
- package/esm2022/lib/store/effects/email.effects.mjs +16 -14
- package/esm2022/lib/store/effects/external-link.effects.mjs +11 -9
- package/esm2022/lib/store/effects/file.effects.mjs +92 -90
- package/esm2022/lib/store/effects/invoice.effects.mjs +176 -174
- package/esm2022/lib/store/effects/member-card.effects.mjs +73 -71
- package/esm2022/lib/store/effects/member-fee.effects.mjs +9 -7
- package/esm2022/lib/store/effects/member.effects.mjs +41 -39
- package/esm2022/lib/store/effects/mixins/extra-members-mixin.mjs +4 -2
- package/esm2022/lib/store/effects/news.effects.mjs +47 -45
- package/esm2022/lib/store/effects/public-form.effects.mjs +24 -22
- package/esm2022/lib/store/effects/registration-qr-code.effects.mjs +14 -12
- package/esm2022/lib/store/effects/saved-search.effects.mjs +9 -7
- package/esm2022/lib/store/effects/swish-incidents.effects.mjs +11 -9
- package/esm2022/lib/store/effects/team.effects.mjs +83 -76
- package/esm2022/lib/store/effects/token.effects.mjs +93 -91
- package/esm2022/lib/store/effects/user.effects.mjs +35 -35
- package/fesm2022/myclub_se-data-access.mjs +1771 -2845
- package/fesm2022/myclub_se-data-access.mjs.map +1 -1
- package/lib/services/booking-calendar.service.d.ts +3 -0
- package/lib/store/actions/booking.actions.d.ts +24 -0
- package/lib/store/effects/booking.effects.d.ts +5 -0
- package/package.json +1 -1
|
@@ -7,40 +7,40 @@ import { catchError, map, switchMap } from 'rxjs/operators';
|
|
|
7
7
|
import { HttpErrorResponse } from '@angular/common/http';
|
|
8
8
|
import * as i0 from "@angular/core";
|
|
9
9
|
export class UserEffects {
|
|
10
|
-
actions$ = inject(Actions);
|
|
11
|
-
userService = inject(UserService);
|
|
12
|
-
userNotificationService = inject(UserNotificationService);
|
|
13
10
|
constructor() {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
11
|
+
this.actions$ = inject(Actions);
|
|
12
|
+
this.userService = inject(UserService);
|
|
13
|
+
this.userNotificationService = inject(UserNotificationService);
|
|
14
|
+
this.activate$ = createEffect(() => this.actions$.pipe(ofType(activateUserAction), exhaustMap(({ payload }) => this.userService.activateUser(payload.uidb64, payload.token).pipe(map((value) => value ? activateUserSuccessAction() : activateUserFailureAction()), catchError(() => of(activateUserFailureAction()))))));
|
|
15
|
+
this.activate2fa$ = createEffect(() => this.actions$.pipe(ofType(activate2FAUserAction), exhaustMap(({ payload }) => this.userService.activate2fa(payload).pipe(map(() => activate2FAUserSuccessAction()), catchError((err) => of(activate2FAUserFailureAction({ payload: err })))))));
|
|
16
|
+
this.create$ = createEffect(() => this.actions$.pipe(ofType(createUserAction), exhaustMap(({ payload }) => this.userService.createUser(payload).pipe(map((value) => {
|
|
17
|
+
if (value) {
|
|
18
|
+
return createUserSuccessAction();
|
|
19
|
+
}
|
|
20
|
+
return createUserFailureAction({ payload: new HttpErrorResponse({ status: 400 }) });
|
|
21
|
+
}), catchError(error => of(createUserFailureAction({ payload: error })))))));
|
|
22
|
+
this.deactivate2fa$ = createEffect(() => this.actions$.pipe(ofType(deactivate2FAUserAction), exhaustMap(() => this.userService.deactivate2fa().pipe(map(() => deactivate2FAUserSuccessAction()), catchError((err) => of(deactivate2FAUserFailureAction({ payload: err })))))));
|
|
23
|
+
this.deleteCurrent$ = createEffect(() => this.actions$.pipe(ofType(deleteCurrentUserAction), exhaustMap(() => this.userService.removeCurrentUser().pipe(mergeMap((success) => {
|
|
24
|
+
if (success) {
|
|
25
|
+
return [
|
|
26
|
+
deleteCurrentUserSuccessAction(),
|
|
27
|
+
clearAuthenticationAction()
|
|
28
|
+
];
|
|
29
|
+
}
|
|
26
30
|
return [
|
|
27
|
-
|
|
28
|
-
clearAuthenticationAction()
|
|
31
|
+
deleteCurrentUserFailureAction({ payload: new HttpErrorResponse({ status: 400 }) }),
|
|
29
32
|
];
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
verify2FAUserSuccessAction(),
|
|
42
|
-
getCurrentUserAction()
|
|
43
|
-
]), catchError((err) => of(verify2FAUserFailureAction({ payload: err })))))));
|
|
33
|
+
}), catchError((error) => of(deleteCurrentUserFailureAction({ payload: error })))))));
|
|
34
|
+
this.getCurrent$ = createEffect(() => this.actions$.pipe(ofType(getCurrentUserAction), exhaustMap(() => this.userService.getCurrentUser().pipe(map((user) => getCurrentUserSuccessAction({ payload: user })), catchError((error) => of(getCurrentUserFailureAction({ payload: error })))))));
|
|
35
|
+
this.listNotifications$ = createEffect(() => this.actions$.pipe(ofType(listUserNotificationsAction), concatMap(({ payload }) => this.fetchAllNotifications(payload).pipe(map((allNotifications) => listUserNotificationsSuccessAction({ payload: allNotifications })), catchError((error) => of(listUserNotificationsFailureAction({ payload: error })))))));
|
|
36
|
+
this.resetPassword$ = createEffect(() => this.actions$.pipe(ofType(resetPasswordAction), exhaustMap(({ payload }) => this.userService.resetPassword(payload).pipe(map((value) => value ? resetPasswordSuccessAction() : resetPasswordFailureAction())))));
|
|
37
|
+
this.retrieve2faCode$ = createEffect(() => this.actions$.pipe(ofType(retrieve2FACodeUserAction), exhaustMap(() => this.userService.retrieve2faCode().pipe(map((value) => retrieve2FACodeUserSuccessAction({ payload: value })), catchError((err) => of(retrieve2FACodeUserFailureAction({ payload: err })))))));
|
|
38
|
+
this.updateCurrent$ = createEffect(() => this.actions$.pipe(ofType(updateCurrentUserAction), exhaustMap(({ payload }) => this.userService.updateCurrentUser(payload).pipe(map((user) => updateCurrentUserSuccessAction({ payload: user })), catchError((error) => of(updateCurrentUserFailureAction({ payload: error })))))));
|
|
39
|
+
this.verify2fa$ = createEffect(() => this.actions$.pipe(ofType(verify2FAUserAction), exhaustMap(({ payload }) => this.userService.verify2faCode(payload).pipe(mergeMap(() => [
|
|
40
|
+
verify2FAUserSuccessAction(),
|
|
41
|
+
getCurrentUserAction()
|
|
42
|
+
]), catchError((err) => of(verify2FAUserFailureAction({ payload: err })))))));
|
|
43
|
+
}
|
|
44
44
|
fetchAllNotifications(clubId, offset = 0, collectedNotifications = []) {
|
|
45
45
|
return this.userNotificationService.getUserNotifications(clubId, offset).pipe(switchMap((response) => {
|
|
46
46
|
const notifications = response.toArray();
|
|
@@ -57,10 +57,10 @@ export class UserEffects {
|
|
|
57
57
|
return throwError(() => error);
|
|
58
58
|
}));
|
|
59
59
|
}
|
|
60
|
-
static
|
|
61
|
-
static
|
|
60
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: UserEffects, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
61
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: UserEffects }); }
|
|
62
62
|
}
|
|
63
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
63
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: UserEffects, decorators: [{
|
|
64
64
|
type: Injectable
|
|
65
65
|
}], ctorParameters: () => [] });
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5lZmZlY3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi9zdG9yZS9lZmZlY3RzL3VzZXIuZWZmZWN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHOUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RFLE9BQU8sRUFDTCxxQkFBcUIsRUFDckIsNEJBQTRCLEVBQzVCLDRCQUE0QixFQUM1QixrQkFBa0IsRUFDbEIseUJBQXlCLEVBQ3pCLHlCQUF5QixFQUN6Qix5QkFBeUIsRUFDekIsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN2Qix1QkFBdUIsRUFDdkIsdUJBQXVCLEVBQ3ZCLDhCQUE4QixFQUM5Qiw4QkFBOEIsRUFDOUIsdUJBQXVCLEVBQ3ZCLDhCQUE4QixFQUM5Qiw4QkFBOEIsRUFDOUIsb0JBQW9CLEVBQ3BCLDJCQUEyQixFQUMzQiwyQkFBMkIsRUFDM0IsMkJBQTJCLEVBQzNCLGtDQUFrQyxFQUNsQyxrQ0FBa0MsRUFDbEMsbUJBQW1CLEVBQ25CLDBCQUEwQixFQUMxQiwwQkFBMEIsRUFDMUIseUJBQXlCLEVBQ3pCLGdDQUFnQyxFQUNoQyxnQ0FBZ0MsRUFDaEMsdUJBQXVCLEVBQ3ZCLDhCQUE4QixFQUM5Qiw4QkFBOEIsRUFDOUIsbUJBQW1CLEVBQ25CLDBCQUEwQixFQUMxQiwwQkFBMEIsR0FDM0IsTUFBTSxZQUFZLENBQUM7QUFDcEIsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFjLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbkYsT0FBTyxF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UUFDakMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7dUdBeElVLFdBQVc7MkdBQVgsV0FBVzs7MkZBQVgsV0FBVztrQkFEdkIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aW9ucywgY3JlYXRlRWZmZWN0LCBvZlR5cGUgfSBmcm9tICdAbmdyeC9lZmZlY3RzJztcbmltcG9ydCB7IE5ld0FjY291bnRJbnRlcmZhY2UgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IENvbGxlY3Rpb24sIFJldHJpZXZlMmZhLCBVc2VyLCBVc2VyTm90aWZpY2F0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IFVzZXJOb3RpZmljYXRpb25TZXJ2aWNlLCBVc2VyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7XG4gIGFjdGl2YXRlMkZBVXNlckFjdGlvbixcbiAgYWN0aXZhdGUyRkFVc2VyRmFpbHVyZUFjdGlvbixcbiAgYWN0aXZhdGUyRkFVc2VyU3VjY2Vzc0FjdGlvbixcbiAgYWN0aXZhdGVVc2VyQWN0aW9uLFxuICBhY3RpdmF0ZVVzZXJGYWlsdXJlQWN0aW9uLFxuICBhY3RpdmF0ZVVzZXJTdWNjZXNzQWN0aW9uLFxuICBjbGVhckF1dGhlbnRpY2F0aW9uQWN0aW9uLFxuICBjcmVhdGVVc2VyQWN0aW9uLFxuICBjcmVhdGVVc2VyRmFpbHVyZUFjdGlvbixcbiAgY3JlYXRlVXNlclN1Y2Nlc3NBY3Rpb24sXG4gIGRlYWN0aXZhdGUyRkFVc2VyQWN0aW9uLFxuICBkZWFjdGl2YXRlMkZBVXNlckZhaWx1cmVBY3Rpb24sXG4gIGRlYWN0aXZhdGUyRkFVc2VyU3VjY2Vzc0FjdGlvbixcbiAgZGVsZXRlQ3VycmVudFVzZXJBY3Rpb24sXG4gIGRlbGV0ZUN1cnJlbnRVc2VyRmFpbHVyZUFjdGlvbixcbiAgZGVsZXRlQ3VycmVudFVzZXJTdWNjZXNzQWN0aW9uLFxuICBnZXRDdXJyZW50VXNlckFjdGlvbixcbiAgZ2V0Q3VycmVudFVzZXJGYWlsdXJlQWN0aW9uLFxuICBnZXRDdXJyZW50VXNlclN1Y2Nlc3NBY3Rpb24sXG4gIGxpc3RVc2VyTm90aWZpY2F0aW9uc0FjdGlvbixcbiAgbGlzdFVzZXJOb3RpZmljYXRpb25zRmFpbHVyZUFjdGlvbixcbiAgbGlzdFVzZXJOb3RpZmljYXRpb25zU3VjY2Vzc0FjdGlvbixcbiAgcmVzZXRQYXNzd29yZEFjdGlvbixcbiAgcmVzZXRQYXNzd29yZEZhaWx1cmVBY3Rpb24sXG4gIHJlc2V0UGFzc3dvcmRTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZTJGQUNvZGVVc2VyQWN0aW9uLFxuICByZXRyaWV2ZTJGQUNvZGVVc2VyRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmUyRkFDb2RlVXNlclN1Y2Nlc3NBY3Rpb24sXG4gIHVwZGF0ZUN1cnJlbnRVc2VyQWN0aW9uLFxuICB1cGRhdGVDdXJyZW50VXNlckZhaWx1cmVBY3Rpb24sXG4gIHVwZGF0ZUN1cnJlbnRVc2VyU3VjY2Vzc0FjdGlvbixcbiAgdmVyaWZ5MkZBVXNlckFjdGlvbixcbiAgdmVyaWZ5MkZBVXNlckZhaWx1cmVBY3Rpb24sXG4gIHZlcmlmeTJGQVVzZXJTdWNjZXNzQWN0aW9uLFxufSBmcm9tICcuLi9hY3Rpb25zJztcbmltcG9ydCB7IGNvbmNhdE1hcCwgZXhoYXVzdE1hcCwgbWVyZ2VNYXAsIE9ic2VydmFibGUsIG9mLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgQWN0aXZhdGVVc2VySW50ZXJmYWNlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBVc2VyRWZmZWN0cyB7XG4gIHByaXZhdGUgYWN0aW9ucyQgPSBpbmplY3QoQWN0aW9ucyk7XG4gIHByaXZhdGUgdXNlclNlcnZpY2UgPSBpbmplY3QoVXNlclNlcnZpY2UpO1xuICBwcml2YXRlIHVzZXJOb3RpZmljYXRpb25TZXJ2aWNlID0gaW5qZWN0KFVzZXJOb3RpZmljYXRpb25TZXJ2aWNlKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgfVxuXG4gIGFjdGl2YXRlJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKGFjdGl2YXRlVXNlckFjdGlvbiksXG4gICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICBwYXlsb2FkOiBBY3RpdmF0ZVVzZXJJbnRlcmZhY2VcbiAgICB9KSA9PiB0aGlzLnVzZXJTZXJ2aWNlLmFjdGl2YXRlVXNlcihwYXlsb2FkLnVpZGI2NCwgcGF5bG9hZC50b2tlbikucGlwZShcbiAgICAgIG1hcCgodmFsdWU6IGJvb2xlYW4pID0+IHZhbHVlID8gYWN0aXZhdGVVc2VyU3VjY2Vzc0FjdGlvbigpIDogYWN0aXZhdGVVc2VyRmFpbHVyZUFjdGlvbigpKSxcbiAgICAgIGNhdGNoRXJyb3IoKCkgPT4gb2YoYWN0aXZhdGVVc2VyRmFpbHVyZUFjdGlvbigpKSksXG4gICAgKSlcbiAgKSk7XG5cbiAgYWN0aXZhdGUyZmEkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUoYWN0aXZhdGUyRkFVc2VyQWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHsgcGF5bG9hZDogc3RyaW5nIH0pID0+IHRoaXMudXNlclNlcnZpY2UuYWN0aXZhdGUyZmEocGF5bG9hZCkucGlwZShcbiAgICAgIG1hcCgoKSA9PiBhY3RpdmF0ZTJGQVVzZXJTdWNjZXNzQWN0aW9uKCkpLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YoYWN0aXZhdGUyRkFVc2VyRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyfSkpKSxcbiAgICApKVxuICApKTtcblxuICBjcmVhdGUkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUoY3JlYXRlVXNlckFjdGlvbiksXG4gICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7IHBheWxvYWQ6IE5ld0FjY291bnRJbnRlcmZhY2UgfSkgPT4gdGhpcy51c2VyU2VydmljZS5jcmVhdGVVc2VyKHBheWxvYWQpLnBpcGUoXG4gICAgICBtYXAoKHZhbHVlOiBib29sZWFuKSA9PiB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgIHJldHVybiBjcmVhdGVVc2VyU3VjY2Vzc0FjdGlvbigpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjcmVhdGVVc2VyRmFpbHVyZUFjdGlvbihcbiAgICAgICAgICB7cGF5bG9hZDogbmV3IEh0dHBFcnJvclJlc3BvbnNlKHtzdGF0dXM6IDQwMH0pfVxuICAgICAgICApO1xuICAgICAgfSksXG4gICAgICBjYXRjaEVycm9yKGVycm9yID0+IG9mKGNyZWF0ZVVzZXJGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICApKVxuICApKTtcblxuICBkZWFjdGl2YXRlMmZhJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKGRlYWN0aXZhdGUyRkFVc2VyQWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKCgpID0+IHRoaXMudXNlclNlcnZpY2UuZGVhY3RpdmF0ZTJmYSgpLnBpcGUoXG4gICAgICBtYXAoKCkgPT4gZGVhY3RpdmF0ZTJGQVVzZXJTdWNjZXNzQWN0aW9uKCkpLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YoZGVhY3RpdmF0ZTJGQVVzZXJGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJ9KSkpLFxuICAgICkpXG4gICkpO1xuXG4gIGRlbGV0ZUN1cnJlbnQkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUoZGVsZXRlQ3VycmVudFVzZXJBY3Rpb24pLFxuICAgIGV4aGF1c3RNYXAoKCkgPT4gdGhpcy51c2VyU2VydmljZS5yZW1vdmVDdXJyZW50VXNlcigpLnBpcGUoXG4gICAgICAgIG1lcmdlTWFwKChzdWNjZXNzOiBib29sZWFuKSA9PiB7XG4gICAgICAgICAgaWYgKHN1Y2Nlc3MpIHtcbiAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgIGRlbGV0ZUN1cnJlbnRVc2VyU3VjY2Vzc0FjdGlvbigpLFxuICAgICAgICAgICAgICBjbGVhckF1dGhlbnRpY2F0aW9uQWN0aW9uKClcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIGRlbGV0ZUN1cnJlbnRVc2VyRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogbmV3IEh0dHBFcnJvclJlc3BvbnNlKHtzdGF0dXM6IDQwMH0pfSksXG4gICAgICAgICAgXTtcbiAgICAgICAgfSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YoZGVsZXRlQ3VycmVudFVzZXJGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgIClcbiAgICApXG4gICkpO1xuXG4gIGdldEN1cnJlbnQkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUoZ2V0Q3VycmVudFVzZXJBY3Rpb24pLFxuICAgIGV4aGF1c3RNYXAoKCkgPT4gdGhpcy51c2VyU2VydmljZS5nZXRDdXJyZW50VXNlcigpLnBpcGUoXG4gICAgICBtYXAoKHVzZXI6IFVzZXIpID0+IGdldEN1cnJlbnRVc2VyU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogdXNlcn0pKSxcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YoZ2V0Q3VycmVudFVzZXJGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICApKVxuICApKTtcblxuICBsaXN0Tm90aWZpY2F0aW9ucyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgIG9mVHlwZShsaXN0VXNlck5vdGlmaWNhdGlvbnNBY3Rpb24pLFxuICAgIGNvbmNhdE1hcCgoe3BheWxvYWR9OiB7IHBheWxvYWQ6IHN0cmluZyB9KSA9PiB0aGlzLmZldGNoQWxsTm90aWZpY2F0aW9ucyhwYXlsb2FkKS5waXBlKFxuICAgICAgbWFwKChhbGxOb3RpZmljYXRpb25zOiBVc2VyTm90aWZpY2F0aW9uW10pID0+IGxpc3RVc2VyTm90aWZpY2F0aW9uc1N1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IGFsbE5vdGlmaWNhdGlvbnN9KSksXG4gICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGxpc3RVc2VyTm90aWZpY2F0aW9uc0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICkpXG4gICkpO1xuXG4gIHJlc2V0UGFzc3dvcmQkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUocmVzZXRQYXNzd29yZEFjdGlvbiksXG4gICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7IHBheWxvYWQ6IHN0cmluZyB9KSA9PiB0aGlzLnVzZXJTZXJ2aWNlLnJlc2V0UGFzc3dvcmQocGF5bG9hZCkucGlwZShcbiAgICAgIG1hcCgodmFsdWU6IGJvb2xlYW4pID0+IHZhbHVlID8gcmVzZXRQYXNzd29yZFN1Y2Nlc3NBY3Rpb24oKSA6IHJlc2V0UGFzc3dvcmRGYWlsdXJlQWN0aW9uKCkpXG4gICAgKSlcbiAgKSk7XG5cbiAgcmV0cmlldmUyZmFDb2RlJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKHJldHJpZXZlMkZBQ29kZVVzZXJBY3Rpb24pLFxuICAgIGV4aGF1c3RNYXAoKCkgPT4gdGhpcy51c2VyU2VydmljZS5yZXRyaWV2ZTJmYUNvZGUoKS5waXBlKFxuICAgICAgbWFwKCh2YWx1ZTogUmV0cmlldmUyZmEpID0+IHJldHJpZXZlMkZBQ29kZVVzZXJTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiB2YWx1ZX0pKSxcbiAgICAgIGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJldHJpZXZlMkZBQ29kZVVzZXJGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJ9KSkpLFxuICAgICkpXG4gICkpO1xuXG4gIHVwZGF0ZUN1cnJlbnQkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUodXBkYXRlQ3VycmVudFVzZXJBY3Rpb24pLFxuICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfTogeyBwYXlsb2FkOiBVc2VyIH0pID0+IHRoaXMudXNlclNlcnZpY2UudXBkYXRlQ3VycmVudFVzZXIocGF5bG9hZCkucGlwZShcbiAgICAgIG1hcCgodXNlcjogVXNlcikgPT4gdXBkYXRlQ3VycmVudFVzZXJTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiB1c2VyfSkpLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZih1cGRhdGVDdXJyZW50VXNlckZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICkpXG4gICkpO1xuXG4gIHZlcmlmeTJmYSQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgIG9mVHlwZSh2ZXJpZnkyRkFVc2VyQWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHsgcGF5bG9hZDogc3RyaW5nIH0pID0+IHRoaXMudXNlclNlcnZpY2UudmVyaWZ5MmZhQ29kZShwYXlsb2FkKS5waXBlKFxuICAgICAgbWVyZ2VNYXAoKCkgPT4gW1xuICAgICAgICB2ZXJpZnkyRkFVc2VyU3VjY2Vzc0FjdGlvbigpLFxuICAgICAgICBnZXRDdXJyZW50VXNlckFjdGlvbigpXG4gICAgICBdKSxcbiAgICAgIGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHZlcmlmeTJGQVVzZXJGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJ9KSkpLFxuICAgICkpXG4gICkpO1xuXG4gIHByaXZhdGUgZmV0Y2hBbGxOb3RpZmljYXRpb25zKGNsdWJJZDogc3RyaW5nLCBvZmZzZXQ6IG51bWJlciA9IDAsIGNvbGxlY3RlZE5vdGlmaWNhdGlvbnM6IFVzZXJOb3RpZmljYXRpb25bXSA9IFtdKTogT2JzZXJ2YWJsZTxVc2VyTm90aWZpY2F0aW9uW10+IHtcbiAgICByZXR1cm4gdGhpcy51c2VyTm90aWZpY2F0aW9uU2VydmljZS5nZXRVc2VyTm90aWZpY2F0aW9ucyhjbHViSWQsIG9mZnNldCkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgocmVzcG9uc2U6IENvbGxlY3Rpb248VXNlck5vdGlmaWNhdGlvbj4pID0+IHtcbiAgICAgICAgY29uc3Qgbm90aWZpY2F0aW9ucyA9IHJlc3BvbnNlLnRvQXJyYXkoKTtcbiAgICAgICAgY29uc3QgYWxsTm90aWZpY2F0aW9ucyA9IGNvbGxlY3RlZE5vdGlmaWNhdGlvbnMuY29uY2F0KG5vdGlmaWNhdGlvbnMpO1xuICAgICAgICBpZiAocmVzcG9uc2UubmV4dCkge1xuICAgICAgICAgIC8vIENvbnRpbnVlIGZldGNoaW5nIHRoZSBuZXh0IHBhZ2VcbiAgICAgICAgICByZXR1cm4gdGhpcy5mZXRjaEFsbE5vdGlmaWNhdGlvbnMoY2x1YklkLCBvZmZzZXQgKyBub3RpZmljYXRpb25zLmxlbmd0aCwgYWxsTm90aWZpY2F0aW9ucyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gTm8gbW9yZSBwYWdlcyB0byBmZXRjaFxuICAgICAgICAgIHJldHVybiBvZihhbGxOb3RpZmljYXRpb25zKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG59XG4iXX0=
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5lZmZlY3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi9zdG9yZS9lZmZlY3RzL3VzZXIuZWZmZWN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHOUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RFLE9BQU8sRUFDTCxxQkFBcUIsRUFDckIsNEJBQTRCLEVBQzVCLDRCQUE0QixFQUM1QixrQkFBa0IsRUFDbEIseUJBQXlCLEVBQ3pCLHlCQUF5QixFQUN6Qix5QkFBeUIsRUFDekIsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN2Qix1QkFBdUIsRUFDdkIsdUJBQXVCLEVBQ3ZCLDhCQUE4QixFQUM5Qiw4QkFBOEIsRUFDOUIsdUJBQXVCLEVBQ3ZCLDhCQUE4QixFQUM5Qiw4QkFBOEIsRUFDOUIsb0JBQW9CLEVBQ3BCLDJCQUEyQixFQUMzQiwyQkFBMkIsRUFDM0IsMkJBQTJCLEVBQzNCLGtDQUFrQyxFQUNsQyxrQ0FBa0MsRUFDbEMsbUJBQW1CLEVBQ25CLDBCQUEwQixFQUMxQiwwQkFBMEIsRUFDMUIseUJBQXlCLEVBQ3pCLGdDQUFnQyxFQUNoQyxnQ0FBZ0MsRUFDaEMsdUJBQXVCLEVBQ3ZCLDhCQUE4QixFQUM5Qiw4QkFBOEIsRUFDOUIsbUJBQW1CLEVBQ25CLDBCQUEwQixFQUMxQiwwQkFBMEIsR0FDM0IsTUFBTSxZQUFZLENBQUM7QUFDcEIsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFjLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbkYsT0FBTyxF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QUFLLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzsrR0F4SVUsV0FBVzttSEFBWCxXQUFXOzs0RkFBWCxXQUFXO2tCQUR2QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3Rpb25zLCBjcmVhdGVFZmZlY3QsIG9mVHlwZSB9IGZyb20gJ0BuZ3J4L2VmZmVjdHMnO1xuaW1wb3J0IHsgTmV3QWNjb3VudEludGVyZmFjZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQ29sbGVjdGlvbiwgUmV0cmlldmUyZmEsIFVzZXIsIFVzZXJOb3RpZmljYXRpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgVXNlck5vdGlmaWNhdGlvblNlcnZpY2UsIFVzZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHtcbiAgYWN0aXZhdGUyRkFVc2VyQWN0aW9uLFxuICBhY3RpdmF0ZTJGQVVzZXJGYWlsdXJlQWN0aW9uLFxuICBhY3RpdmF0ZTJGQVVzZXJTdWNjZXNzQWN0aW9uLFxuICBhY3RpdmF0ZVVzZXJBY3Rpb24sXG4gIGFjdGl2YXRlVXNlckZhaWx1cmVBY3Rpb24sXG4gIGFjdGl2YXRlVXNlclN1Y2Nlc3NBY3Rpb24sXG4gIGNsZWFyQXV0aGVudGljYXRpb25BY3Rpb24sXG4gIGNyZWF0ZVVzZXJBY3Rpb24sXG4gIGNyZWF0ZVVzZXJGYWlsdXJlQWN0aW9uLFxuICBjcmVhdGVVc2VyU3VjY2Vzc0FjdGlvbixcbiAgZGVhY3RpdmF0ZTJGQVVzZXJBY3Rpb24sXG4gIGRlYWN0aXZhdGUyRkFVc2VyRmFpbHVyZUFjdGlvbixcbiAgZGVhY3RpdmF0ZTJGQVVzZXJTdWNjZXNzQWN0aW9uLFxuICBkZWxldGVDdXJyZW50VXNlckFjdGlvbixcbiAgZGVsZXRlQ3VycmVudFVzZXJGYWlsdXJlQWN0aW9uLFxuICBkZWxldGVDdXJyZW50VXNlclN1Y2Nlc3NBY3Rpb24sXG4gIGdldEN1cnJlbnRVc2VyQWN0aW9uLFxuICBnZXRDdXJyZW50VXNlckZhaWx1cmVBY3Rpb24sXG4gIGdldEN1cnJlbnRVc2VyU3VjY2Vzc0FjdGlvbixcbiAgbGlzdFVzZXJOb3RpZmljYXRpb25zQWN0aW9uLFxuICBsaXN0VXNlck5vdGlmaWNhdGlvbnNGYWlsdXJlQWN0aW9uLFxuICBsaXN0VXNlck5vdGlmaWNhdGlvbnNTdWNjZXNzQWN0aW9uLFxuICByZXNldFBhc3N3b3JkQWN0aW9uLFxuICByZXNldFBhc3N3b3JkRmFpbHVyZUFjdGlvbixcbiAgcmVzZXRQYXNzd29yZFN1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlMkZBQ29kZVVzZXJBY3Rpb24sXG4gIHJldHJpZXZlMkZBQ29kZVVzZXJGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZTJGQUNvZGVVc2VyU3VjY2Vzc0FjdGlvbixcbiAgdXBkYXRlQ3VycmVudFVzZXJBY3Rpb24sXG4gIHVwZGF0ZUN1cnJlbnRVc2VyRmFpbHVyZUFjdGlvbixcbiAgdXBkYXRlQ3VycmVudFVzZXJTdWNjZXNzQWN0aW9uLFxuICB2ZXJpZnkyRkFVc2VyQWN0aW9uLFxuICB2ZXJpZnkyRkFVc2VyRmFpbHVyZUFjdGlvbixcbiAgdmVyaWZ5MkZBVXNlclN1Y2Nlc3NBY3Rpb24sXG59IGZyb20gJy4uL2FjdGlvbnMnO1xuaW1wb3J0IHsgY29uY2F0TWFwLCBleGhhdXN0TWFwLCBtZXJnZU1hcCwgT2JzZXJ2YWJsZSwgb2YsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBBY3RpdmF0ZVVzZXJJbnRlcmZhY2UgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFVzZXJFZmZlY3RzIHtcbiAgcHJpdmF0ZSBhY3Rpb25zJCA9IGluamVjdChBY3Rpb25zKTtcbiAgcHJpdmF0ZSB1c2VyU2VydmljZSA9IGluamVjdChVc2VyU2VydmljZSk7XG4gIHByaXZhdGUgdXNlck5vdGlmaWNhdGlvblNlcnZpY2UgPSBpbmplY3QoVXNlck5vdGlmaWNhdGlvblNlcnZpY2UpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICB9XG5cbiAgYWN0aXZhdGUkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUoYWN0aXZhdGVVc2VyQWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtcbiAgICAgIHBheWxvYWQ6IEFjdGl2YXRlVXNlckludGVyZmFjZVxuICAgIH0pID0+IHRoaXMudXNlclNlcnZpY2UuYWN0aXZhdGVVc2VyKHBheWxvYWQudWlkYjY0LCBwYXlsb2FkLnRva2VuKS5waXBlKFxuICAgICAgbWFwKCh2YWx1ZTogYm9vbGVhbikgPT4gdmFsdWUgPyBhY3RpdmF0ZVVzZXJTdWNjZXNzQWN0aW9uKCkgOiBhY3RpdmF0ZVVzZXJGYWlsdXJlQWN0aW9uKCkpLFxuICAgICAgY2F0Y2hFcnJvcigoKSA9PiBvZihhY3RpdmF0ZVVzZXJGYWlsdXJlQWN0aW9uKCkpKSxcbiAgICApKVxuICApKTtcblxuICBhY3RpdmF0ZTJmYSQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgIG9mVHlwZShhY3RpdmF0ZTJGQVVzZXJBY3Rpb24pLFxuICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfTogeyBwYXlsb2FkOiBzdHJpbmcgfSkgPT4gdGhpcy51c2VyU2VydmljZS5hY3RpdmF0ZTJmYShwYXlsb2FkKS5waXBlKFxuICAgICAgbWFwKCgpID0+IGFjdGl2YXRlMkZBVXNlclN1Y2Nlc3NBY3Rpb24oKSksXG4gICAgICBjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihhY3RpdmF0ZTJGQVVzZXJGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJ9KSkpLFxuICAgICkpXG4gICkpO1xuXG4gIGNyZWF0ZSQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgIG9mVHlwZShjcmVhdGVVc2VyQWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHsgcGF5bG9hZDogTmV3QWNjb3VudEludGVyZmFjZSB9KSA9PiB0aGlzLnVzZXJTZXJ2aWNlLmNyZWF0ZVVzZXIocGF5bG9hZCkucGlwZShcbiAgICAgIG1hcCgodmFsdWU6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuIGNyZWF0ZVVzZXJTdWNjZXNzQWN0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNyZWF0ZVVzZXJGYWlsdXJlQWN0aW9uKFxuICAgICAgICAgIHtwYXlsb2FkOiBuZXcgSHR0cEVycm9yUmVzcG9uc2Uoe3N0YXR1czogNDAwfSl9XG4gICAgICAgICk7XG4gICAgICB9KSxcbiAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4gb2YoY3JlYXRlVXNlckZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICkpXG4gICkpO1xuXG4gIGRlYWN0aXZhdGUyZmEkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUoZGVhY3RpdmF0ZTJGQVVzZXJBY3Rpb24pLFxuICAgIGV4aGF1c3RNYXAoKCkgPT4gdGhpcy51c2VyU2VydmljZS5kZWFjdGl2YXRlMmZhKCkucGlwZShcbiAgICAgIG1hcCgoKSA9PiBkZWFjdGl2YXRlMkZBVXNlclN1Y2Nlc3NBY3Rpb24oKSksXG4gICAgICBjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihkZWFjdGl2YXRlMkZBVXNlckZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycn0pKSksXG4gICAgKSlcbiAgKSk7XG5cbiAgZGVsZXRlQ3VycmVudCQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgIG9mVHlwZShkZWxldGVDdXJyZW50VXNlckFjdGlvbiksXG4gICAgZXhoYXVzdE1hcCgoKSA9PiB0aGlzLnVzZXJTZXJ2aWNlLnJlbW92ZUN1cnJlbnRVc2VyKCkucGlwZShcbiAgICAgICAgbWVyZ2VNYXAoKHN1Y2Nlc3M6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgICBpZiAoc3VjY2Vzcykge1xuICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgZGVsZXRlQ3VycmVudFVzZXJTdWNjZXNzQWN0aW9uKCksXG4gICAgICAgICAgICAgIGNsZWFyQXV0aGVudGljYXRpb25BY3Rpb24oKVxuICAgICAgICAgICAgXTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgZGVsZXRlQ3VycmVudFVzZXJGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBuZXcgSHR0cEVycm9yUmVzcG9uc2Uoe3N0YXR1czogNDAwfSl9KSxcbiAgICAgICAgICBdO1xuICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihkZWxldGVDdXJyZW50VXNlckZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgKVxuICAgIClcbiAgKSk7XG5cbiAgZ2V0Q3VycmVudCQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgIG9mVHlwZShnZXRDdXJyZW50VXNlckFjdGlvbiksXG4gICAgZXhoYXVzdE1hcCgoKSA9PiB0aGlzLnVzZXJTZXJ2aWNlLmdldEN1cnJlbnRVc2VyKCkucGlwZShcbiAgICAgIG1hcCgodXNlcjogVXNlcikgPT4gZ2V0Q3VycmVudFVzZXJTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiB1c2VyfSkpLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihnZXRDdXJyZW50VXNlckZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICkpXG4gICkpO1xuXG4gIGxpc3ROb3RpZmljYXRpb25zJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKGxpc3RVc2VyTm90aWZpY2F0aW9uc0FjdGlvbiksXG4gICAgY29uY2F0TWFwKCh7cGF5bG9hZH06IHsgcGF5bG9hZDogc3RyaW5nIH0pID0+IHRoaXMuZmV0Y2hBbGxOb3RpZmljYXRpb25zKHBheWxvYWQpLnBpcGUoXG4gICAgICBtYXAoKGFsbE5vdGlmaWNhdGlvbnM6IFVzZXJOb3RpZmljYXRpb25bXSkgPT4gbGlzdFVzZXJOb3RpZmljYXRpb25zU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogYWxsTm90aWZpY2F0aW9uc30pKSxcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YobGlzdFVzZXJOb3RpZmljYXRpb25zRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgKSlcbiAgKSk7XG5cbiAgcmVzZXRQYXNzd29yZCQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgIG9mVHlwZShyZXNldFBhc3N3b3JkQWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHsgcGF5bG9hZDogc3RyaW5nIH0pID0+IHRoaXMudXNlclNlcnZpY2UucmVzZXRQYXNzd29yZChwYXlsb2FkKS5waXBlKFxuICAgICAgbWFwKCh2YWx1ZTogYm9vbGVhbikgPT4gdmFsdWUgPyByZXNldFBhc3N3b3JkU3VjY2Vzc0FjdGlvbigpIDogcmVzZXRQYXNzd29yZEZhaWx1cmVBY3Rpb24oKSlcbiAgICApKVxuICApKTtcblxuICByZXRyaWV2ZTJmYUNvZGUkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUocmV0cmlldmUyRkFDb2RlVXNlckFjdGlvbiksXG4gICAgZXhoYXVzdE1hcCgoKSA9PiB0aGlzLnVzZXJTZXJ2aWNlLnJldHJpZXZlMmZhQ29kZSgpLnBpcGUoXG4gICAgICBtYXAoKHZhbHVlOiBSZXRyaWV2ZTJmYSkgPT4gcmV0cmlldmUyRkFDb2RlVXNlclN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IHZhbHVlfSkpLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmUyRkFDb2RlVXNlckZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycn0pKSksXG4gICAgKSlcbiAgKSk7XG5cbiAgdXBkYXRlQ3VycmVudCQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgIG9mVHlwZSh1cGRhdGVDdXJyZW50VXNlckFjdGlvbiksXG4gICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7IHBheWxvYWQ6IFVzZXIgfSkgPT4gdGhpcy51c2VyU2VydmljZS51cGRhdGVDdXJyZW50VXNlcihwYXlsb2FkKS5waXBlKFxuICAgICAgbWFwKCh1c2VyOiBVc2VyKSA9PiB1cGRhdGVDdXJyZW50VXNlclN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IHVzZXJ9KSksXG4gICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHVwZGF0ZUN1cnJlbnRVc2VyRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgKSlcbiAgKSk7XG5cbiAgdmVyaWZ5MmZhJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKHZlcmlmeTJGQVVzZXJBY3Rpb24pLFxuICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfTogeyBwYXlsb2FkOiBzdHJpbmcgfSkgPT4gdGhpcy51c2VyU2VydmljZS52ZXJpZnkyZmFDb2RlKHBheWxvYWQpLnBpcGUoXG4gICAgICBtZXJnZU1hcCgoKSA9PiBbXG4gICAgICAgIHZlcmlmeTJGQVVzZXJTdWNjZXNzQWN0aW9uKCksXG4gICAgICAgIGdldEN1cnJlbnRVc2VyQWN0aW9uKClcbiAgICAgIF0pLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YodmVyaWZ5MkZBVXNlckZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycn0pKSksXG4gICAgKSlcbiAgKSk7XG5cbiAgcHJpdmF0ZSBmZXRjaEFsbE5vdGlmaWNhdGlvbnMoY2x1YklkOiBzdHJpbmcsIG9mZnNldDogbnVtYmVyID0gMCwgY29sbGVjdGVkTm90aWZpY2F0aW9uczogVXNlck5vdGlmaWNhdGlvbltdID0gW10pOiBPYnNlcnZhYmxlPFVzZXJOb3RpZmljYXRpb25bXT4ge1xuICAgIHJldHVybiB0aGlzLnVzZXJOb3RpZmljYXRpb25TZXJ2aWNlLmdldFVzZXJOb3RpZmljYXRpb25zKGNsdWJJZCwgb2Zmc2V0KS5waXBlKFxuICAgICAgc3dpdGNoTWFwKChyZXNwb25zZTogQ29sbGVjdGlvbjxVc2VyTm90aWZpY2F0aW9uPikgPT4ge1xuICAgICAgICBjb25zdCBub3RpZmljYXRpb25zID0gcmVzcG9uc2UudG9BcnJheSgpO1xuICAgICAgICBjb25zdCBhbGxOb3RpZmljYXRpb25zID0gY29sbGVjdGVkTm90aWZpY2F0aW9ucy5jb25jYXQobm90aWZpY2F0aW9ucyk7XG4gICAgICAgIGlmIChyZXNwb25zZS5uZXh0KSB7XG4gICAgICAgICAgLy8gQ29udGludWUgZmV0Y2hpbmcgdGhlIG5leHQgcGFnZVxuICAgICAgICAgIHJldHVybiB0aGlzLmZldGNoQWxsTm90aWZpY2F0aW9ucyhjbHViSWQsIG9mZnNldCArIG5vdGlmaWNhdGlvbnMubGVuZ3RoLCBhbGxOb3RpZmljYXRpb25zKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBObyBtb3JlIHBhZ2VzIHRvIGZldGNoXG4gICAgICAgICAgcmV0dXJuIG9mKGFsbE5vdGlmaWNhdGlvbnMpO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcik7XG4gICAgICB9KVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|